Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hfS49-0002GG-OZ for pgadmin-hackers@arkaria.postgresql.org; Mon, 24 Jun 2019 16:43:38 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1hfS48-0007em-9H for pgadmin-hackers@arkaria.postgresql.org; Mon, 24 Jun 2019 16:43:36 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hfS47-0007ee-QC for pgadmin-hackers@lists.postgresql.org; Mon, 24 Jun 2019 16:43:36 +0000 Received: from mail-qt1-x835.google.com ([2607:f8b0:4864:20::835]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hfS42-0003ZO-Eg for pgadmin-hackers@postgresql.org; Mon, 24 Jun 2019 16:43:35 +0000 Received: by mail-qt1-x835.google.com with SMTP id p15so15191440qtl.3 for ; Mon, 24 Jun 2019 09:43:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=fDYgy/GTQABTAM15f2TWzaLr99jYvxqTaYTPGXZWlys=; b=cqKxrqSEcyeOqRdC2Yj9ghbAt5qiUo5XTutOgSc7TWYw8JtjnplIvSPHLZ/9R2QfVB URml5p763KxN6o/lF3wKmOGwYJnRF4UePHIMLo1oW7xoalJt/JGZIpcqwXlAmZzADN3w gmPwbMR9jyRCFgY38txqrCgbzOrgAuAr3ZAMS/x+1/uAx21PLcom5TvZHx614CGBkscs abBa0tg2F1g0YAY7ZvosA0pzCHOWidEJr5i0rPiX0QBXP6UANcUnWx4moHPP49rHDesR PXgYNHsWTLrm5gQUpTMdDEN7fxl6C7WZtf2Lre4F7Y66XARuV7Px1T4LVAnp+2yZgVOG osjA== 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; bh=fDYgy/GTQABTAM15f2TWzaLr99jYvxqTaYTPGXZWlys=; b=tfbll053/GDNZWzrTYg1sEhi9zYsR8yf3IxeHZ80mzjWmshmJ3NiMh1+nWE+/WF2JU FKqiZ8mEKdgb+ZZR/chnleQOW3iPg9AYTChxK17svTAZ2LdCZQJ2pUe+rASf+jAoYy/C JbM3fOgyFNtOhLWTxB/RHfMPMRe/+J3qA/ZDbbtG5Ae8c6vCtuHGb353sKZgafWh2Ig2 KC0Z/5QOTxf+YKGX4E+kJXFJd61R+zicYF/fnXZBFiFtShse5rvvtJGc7MHQGGhkMktV QmJLMqrEbQjm8Wz4Q+iwghx1Ne5EU33To1vm6tJcPa3ca9WiMV3rRWMCXnsPa1Qz9k+l drLA== X-Gm-Message-State: APjAAAUDBoJjWY+r/tbNLAQWpimthLCuddT1qaMmSzWXvABob42SIhBD eNo+ubL0WDA3Fq/+sVwf/Zwpku8zu1O65qqoeiM1PrqDOtE= X-Google-Smtp-Source: APXvYqywm3TIdqej3z4ZLFWZX9xXRuV5IMDpkkFEbvcQlKj5Se9v1IWjR2VmJYOThpBKfFtRnU7VokMe8NdTzWTLk6I= X-Received: by 2002:ac8:3006:: with SMTP id f6mr9038114qte.122.1561394607655; Mon, 24 Jun 2019 09:43:27 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Yosry Muhammad Date: Mon, 24 Jun 2019 18:43:16 +0200 Message-ID: Subject: Re: [GSoC][Patch] Automatic Mode Detection V1 To: Aditya Toshniwal , Dave Page , pgadmin-hackers@postgresql.org Content-Type: multipart/mixed; boundary="000000000000f25ad0058c148269" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000f25ad0058c148269 Content-Type: multipart/related; boundary="000000000000f25acf058c148268" --000000000000f25acf058c148268 Content-Type: multipart/alternative; boundary="000000000000f25ace058c148267" --000000000000f25ace058c148267 Content-Type: text/plain; charset="UTF-8" Hi, Please find attached a patch file with the following updates (last patch + updates) attached: - Changed the color to $color-gray-lighter and added the shortcut for the new button. - Added a preferences option to enable/disable prompting on uncommited transactions on exiting. - Changed call_render_after_poll_specs test to be in sync with code changes, also fixed a mix up in the test descriptions in the same file. - Fixed a bug with a recent patch 'Allow editing of data where a primary key column includes a % sign in the value.' that occurred when the primary key was a number. - After running python and feature tests, changes were made to nearly all >> the files (git status shows modifications in a ton of files), is there >> something I have done wrong? >> > What command did you use, can you share the screenshot of the files > changed? > I tried it again after a proper test_config.json as you mentioned and everything worked fine. All tests pass for this patch except for 3 feature tests that all fail because of a TimeoutException related to selenium. Please find a log file of the feature tests attached. > > - What else is missing from this patch to make it applicable ? I would >> like to produce a release-ready patch if possible. If so, I can continue >> working on the project on following patches, I just want to know what is >> the minimum amount of work needed to make this patch release-ready >> (especially that changes are being made in the master branch that require >> me to re-edit parts of the code that I have written before to keep things >> in-sync). >> > @Dave Page is the right person to answer this. > Waiting for his reply :D - For the bug that I reported before (generated queries in Query History >> appear in a distorted way for the user), to get the actual query that is >> being executed I can use the mogirfy() function of psycopg2 but I need >> access to a cursor. I can get one directly in save_changed_data() function >> by using conn.conn.cursor() but then I would be bypassing the wrapper >> Connection class. Should I modify the wrapper Connection class and add a >> function that can provide a cursor (or a wrapper around cursor.mogrify() )? >> Thoughts? >> > Could you please share the query/screenshot ? The query history just > stores the SQL text and fetches back to show in CodeMirror. No > modifications/generation of queries is done by Query History. > >> >> By 'generated queries' I meant the querie that are generated by pgAdmin to save changes to the data grid to the database. Here is a screenshot from the released version (not the version I am working on). [image: pg-query-history-bug.png] Scenario: - Opened View Data on a table (public.kweek) - Modified a cell in a column named media_url with a primary key (id = 50) to 'new link' - Instead of showing 'new link' in the query %(media_url) is shown. This can be fixed in save_changed_data() function in my patch but I need access to a cursor as previously mentioned. Thoughts? Thanks a lot for your help! -- *Yosry Muhammad Yosry* Computer Engineering student, The Faculty of Engineering, Cairo University (2021). Class representative of CMP 2021. https://www.linkedin.com/in/yosrym93/ --000000000000f25ace058c148267 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

= Please find attached a patch file with the following updates (last patch + = updates) attached:
- Changed the color to $color-gray-lighter and= added the shortcut for the new button.
- Added a preference= s option to enable/disable prompting on uncommited transactions on exiting.=
- Changed call_render_after_poll_specs test to be in sync with c= ode changes, also fixed a mix up in the test descriptions in the same file.=
- Fixed a bug with a recent patch 'Allow editing of data whe= re a primary key column includes a % sign in the value.' that occurred = when the primary key was a number.

<= blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l= eft:1px solid rgb(204,204,204);padding-left:1ex">
- Af= ter running python and feature tests, changes were made to nearly all the f= iles (git status shows modifications in a ton of files), is there something= I have done wrong?
What command did you use, can = you share the screenshot of the files changed?=C2=A0

I tried it again after a proper test_con= fig.json as you mentioned and everything worked fine. All tests pass for th= is patch except for 3 feature tests that all fail because of a TimeoutExcep= tion related to selenium. Please find a log file of the feature tests attac= hed.
=C2=A0

- What else is missing f= rom this patch to make it applicable ? I would like to produce a release-re= ady patch if possible. If so, I can continue working on the project on foll= owing patches, I just want to know what is the minimum amount of work neede= d to make this patch release-ready (especially that changes are being made = in the master branch that require me to re-edit parts of the code that I ha= ve written before to keep things in-sync).
@Dave P= age is the right person to answer this.=C2=A0

Waiting for his reply :D

<= blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l= eft:1px solid rgb(204,204,204);padding-left:1ex">
- For the bug that I reported before (generated queries in Q= uery History appear in a distorted way for the user), to get the actual que= ry that is being executed I can use the mogirfy() function of psycopg2 but = I need access to a cursor. I can get one directly in save_changed_data() fu= nction by using conn.conn.cursor() but then I would be bypassing the wrappe= r Connection class. Should I modify the wrapper Connection class and add a = function that can provide a cursor (or a wrapper around cursor.mogrify() )?= Thoughts?
Could you please share the query/sc= reenshot ? The query history just stores the SQL text and fetches back to s= how in CodeMirror. No modifications/generation of queries is done by Query = History.


By 'generated queries' I meant the querie that are= generated by pgAdmin to save changes to the data grid to the database. Her= e is a screenshot from the released version (not the version I am working o= n).
3D"pg-query-history-bu=
Scenario:
- Op= ened View Data on a table (public.kweek)
- Modified a cell in a c= olumn named media_url with a primary key (id =3D 50) to 'new link'<= /div>
- Instead of showing 'new link' in the query %(media_url)= is shown.

This can be fixed in save_changed_= data() function in my patch but I need access to a cursor as previously men= tioned. Thoughts?

Thanks a lot for your help!
<= /div>



--
Yosry Muhammad Yosry

Computer Engineering student,
The Fac= ulty of Engineering,
Cairo University (= 2021).
Class representative of CMP 2021= .
--000000000000f25ace058c148267-- --000000000000f25acf058c148268 Content-Type: image/png; name="pg-query-history-bug.png" Content-Disposition: inline; filename="pg-query-history-bug.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: ii_jxalpiwv0 iVBORw0KGgoAAAANSUhEUgAAA7QAAAEdCAYAAAA8SyuhAAAABHNCSVQICAgIfAhkiAAAABl0RVh0 U29mdHdhcmUAZ25vbWUtc2NyZWVuc2hvdO8Dvz4AACAASURBVHic7N17WFTnufj9rzLDcHCGgzPK YSLIoMlgVAimYhohaYLRbszbSKvdxN2GtNvQJjsmzU+6d9Vfs1+0B7J7IEkbkuYNabahW1tMd+RK jCQmalKxighGJiqDgsNBBwFnFBhm0PePAeTMcPDU3J/r8mqZtdbz3M9aC7LueQ5r0pUrV65UVdcT FRHKzWj10xtvdAhCCCGEEEIIIW5Ck290AEIIIYQQQgghxFhIQiuEEEIIIYQQ4pYkCa0QQgghhBBC iFuSJLRCCCGEEEIIIW5JktAKIYQQQgghhLglXZOE1tbm5FBVE4eqmno++6LOxl8PWa5FdUIIIYQQ QgghvoQUE13gR8ca2LitDHu7C4DbQzX8y+KZ/PLdY9w/J4RvLNBPdJVCCCGEEEIIIb6EJiyh/esh C++WWDhYdZ5HvxrJvz88B1ubk1/uqGDDtjLuj5nO5pXzJ6q6sfGNY92m+6l/8ddsqR5sh0jW/OI7 +L39//Lbo5Gk/3QlATte5LeH2z2vQzGXdb9cRuOL2eQNWsc15nH9etJ/uoLW119k69mJirnXOSuf NXSZ1+wc9WpT7USWO0EUWhKW3c/Su2YSqvGBtovUnzzKzvc/pvicq9eOIaxa/yTLp1/9pKO1mZqj +/jv7Qcxt133yMfGN4Svrfg6y+fq0flBi6WSnTvepdB0sWcXv4hFrE5dRHz4FJRtLZgOf8yWd49S 33M6Qli1fg3zPn2R9XtaPK43/iuLWHov7Nj8DuWj3S6EEEIIIW4ZE9pDe7DqPHdHTeXfH54DgMZX 2ZPEHqo6j63NicZXOZFVXkONFH+4D7/To0hmbyHK6DjmtZWSXcsE3gU39pz1adPNJnguT/4gGb/y Iv771+9gtrtAMYUZ8xax6l/XYNz6BnmVvc+bk7pP8vnNp+4kTqmZydJVy8j8Pqx/6SCN4wzHuDKT dZp3eeL1L3COs6zBTWHxdx9nleYoW15/j0qbgrB5XyP9+48T+OLv2VLtQhmRzPqn74YDRfyuoB7n 1Jk8tPwR1k9T8Hxu6RjaOIV5K9JY89XbUDrb8FeeZOeotgshhBBCiFvNuOfQrt9Wxl8PWfjGAj2Z y2M4WHWeDdvK+uyzeeV8rlyB3cfOjre66+gips/2U9I08p63HgXGhUYuHDhK/YSWeyPP2bVq0wRQ hLDq+8nw7mu8sOOoO5kFcF2k5nARL7xyEO2qZczz7XuY83wj9efc/2oqD/LaloO0Ri4iYdr1b8Ko qY0kznJRvH0H+yobqD9noeTDbWw5Gcji+6JRMoXFDy8ioHw7m7cdpLzagunwPn77ShGNs5JZET2W b1kUKG0mtrz4S576o4lLo94uhBBCCCFuNePumztoPs+7JRbaOlz87yELU3wU/G+Je/GnTb2GGIcH +VLX3Dq+ynzjWLdpMa2f1aO7y0i0r4u6k/vI++M+TG3u7es3Laby11eHnM5Y/jTPR+7n2ZcOcqGr mIB5y1j3WBxGDTSePEje20WY7P0r6z38GPCNJOXRr7PUGIqf04rp77vI2/7FiL1IftHLeP4HRqrf fI2dxjVkat7jqa5esYCvPs5vHqxn83++jxkgPJnsH4WyY8Nb7GsDFCEsXvUwq+4Kwc/Zgumz93ht R6W7HcNtG6L+3x3tGuqpiGaxsZG97w4+hHPsMfc6Z6Zh4hhu29GLQ7eta8g4hxvQzY2Gz14jc0fD IG3yIf77P+JJdvDU60dpha57ZxkXXs/mNZOrazjswyy/K4QA50Vqjn7MG1tLqenKNZXhd7Nm1f3E R6rBdobi998l77MGnANieJOt01cPW1fAXUtIOPse649eBHwwJK3gieRI/NosFG/fzhbTQbaW382q uVMo//tFhlRroZo4wqYC5xhjG3xI/8X3SPQDeJS8F0/y6o+77rfgO1j96Nf5WuQUnE2V7CiH5Qvt ZG/YgXmocz/UtXK56ECBVjMF6G5TOyXbXsOquIjTdxaLItspeeUL+vxVOHeUvaeTWXFXCFSOdhG5 Fko+3Of+v8axbBdCCCGEELeacfXQrt9Whr3dyf0x0/nZ/x7jlPUieU8sIutb8/nfEktPT+0XdTaO 19u4O2rq+CNW6jAGn+aNzT8jffM2yjX388yjc/Hz+Pgg4o0Kit9+jfUv7qBy6iKeeXQuAcMeFMjX fvAdlvoe5bVf/or1r+ynde5Knn0wZPiqpt3Ns9+Po/XdfF47epGao2cgchbRAPhgnKvHe+osFoS7 9w+InIm29qQ7OWcKCY99h1XBJl775YtkvrIf511pPJukHWHb0PV385t3F8azpZQMSOLHG7Nn52H4 bSO0TRlE9PRmtr/ye7I/ufp1Qt82tWM6cBpn9FyMXb2efkYj0U4TxSdd9AyHnX6GLb9+kcyXiqgO X876x7ruA0Ukq7+/jLDT21n//K94fruV6BVprO7uNewTQ90IdQWScK+W8k/ciVvA3BU8tbCZLb/M Zv0nChZ/xX0P1ZSfItCoZ9gB+ZopBNJOayvjaIOF1zZsJvuAnY7ybaz5Ub47mUXLQ4+tZLHSxO9+ /Xs2bz1JxF1G/PtcrP7nfphr1WbigwPtzH90DeuWx2Gc5gOAs6kB87mLEByClhaqBwzauEh9Uzt+ wUGe/04LIYQQQogvrTEntN2LQOU9sYgXv7uApfPD6HBd5os6G99YoGfBzGD+t8TC2rcO8fir+7l/ Tgh3GyYgoXU2U1x0kJo2F86mSrZuP4rTGDdguObQx9vZt30H+yobqa8+St7WozhnjXB8+N0sDW9g +9v7KD/XQn31QfK2l+IMDx06EdbcQfoPlhFwdBvZexpwAs7TX1CpuA3DNEARSbzewqEKH+YZtYCC aKOWxpOn3L2+wXNZbmxk+5vuOhurD7LlkwZmxM9CO9y2Yep382HeV/RUf2Ya0Js77pg9PA/Dbhup bU47xe++T3F1I43dQ3cHaVOr6TDlRJIQrXDHOTcSTEcxuYBpcSyd1cKOLe9TUttCY+1R8t7ezwXj YhZPA5RBaDXtVJefpr6phZrD7/Py2/sot3UV3i+GYevyvY15wWcoqQXQsniZHtOOIsrtLpQKBRfs XfNmzzXQMlVH368kevENYfGKxUTbTOyvHWcbXO04nQBOnK6uczjNyAPhjV3luYc4571/ko7eMfQ/ 98Neq3bKt/2en24/hf9dy1m/YT0vZ36Lh6KndLVHgRIXzt5rYXXpaHOB0mf45F4IIYQQQgjGMeS4 rrmVBTODuSNMA8ALaXF4Kyaz8c9l/OXvNZjP2vnBg7N45cOThAX5XrMVjp1nLdSziIhgKPZo7qar 62G++/jT1LOYsGBgiMWElNN1aNvqqe9VfuvRHTx/dKg6fIhftZJAXwtvvFt5dUhl2ylKzj3Cosgp fKAxYjx7lM2fRbI+eSbaT+qZF+7C9Il7CK0yXE+ociarn/+/rL4aCd62M0wNnzLktgAuDl0/gNrI A3oLH/2x/8JN44/Z4/MwzLbh2h1AA/2v35BtclVSbII18yJRmlzEz4Lyt0/jBJTTbyO07Qzmc73K qD1JpXMR0dMVcM7EB58t4skf/IjnTSYOlR+l+PBBSlyALwNjGKYu1CEE2lqwugD1TOYHW9h50p3F +Wl8aD3f1WPtdOFU9E7ilESkPseW1KvVXDpbzhuvF2F2jbMNg5kegtZZT02v8gYmm33bPfy1gkba MX/2Ds9/tgNthJEHku9n1dNrCHvl9+S1unCiQDnIXyBvX4X7fAwRqhBCCCGEEN3GnNCqfZXUtbT1 Wbl488r5dLgus7Osjh8+OJsfJM8iLMiPg1XnJyzgwdx8PTlK/GwmDrVFs2LVHZS8/kVXz+FFTOWN rDLqibbP5IJpH/WV7VQ+Gse8SB+ifU+x/fTVMmg1kffr99w9fd2c7VyKXDHktgvMGqZ+0M6LI/Tk 3ygZMER4ImL2tMzhtg3d7gtDTHwcvE0uyg+fhFVzMUa2M09xkryTQ2Vz/bVTvv33PPtpJPOMRuLv XcmKhy3k/bp7eG5/w9Tlq8DP1dLV+6xFa292J7eAv8aHS2e7knClAqWrvVcSd3WVY6fLBc6LvXqk x9mGCVu0a5hrpdZi0LioqW3BiYvG6qNsff0k1Rk/Yk3SLLa+3UAjc4mYDvQZ+j6F0GAfWs82M84Z 90IIIYQQ4ktgzEOO/594PbY2J9k7Kvp8/kJaHKGBvvz+wxM9qx9fy/fPKvWRhNJCdROAeyGaPr0+ A7qAFCh7ZcDK6e7j64Z5yHeetdLoG0qoutdxEXezOilyiCHHdvZtz+d3b37MBePDpN81pWdL/ckz tM5KZIXRRbmp0d0DelpP4jIj2tOVPYmBs8lKo1JLmLKFxqbufxe50NZO2zDbnMPWH0j8Qi3lf68c pPdr/DGP5jwMtW24dg/eYzd0m5ymUsoVs1jxsBG/7iHAgPPsGep9u4ZRd5t2GxHKRirPumDaXFY9 eAcB505TvOd9fvfrN9hui2bpXUMOCB6yLlwunApF15cuCqC759EHrVqBs617yK+ewPPWPkO3u1c5 bmxqGZDMTngbzjZQrwxlRq/yBus97RPDMNdKOWsJ6//t68T3Gcrv4oLd5S7Yfor9tT7Ef/WOvnNl g+eSGNlO+dHRLgglhBBCCCG+jMac0Gp8ldwdNbVnnqytzf2Y3nuhqGtCGcTihxczb1og2og41qww gqmU8jagrZ6apiASku/GME2L4a5lPP6VILz7HK9m8YpHWBytJTRiLqtXzEXZffxQag+ys1bLikcX YeyqN331MuZp2rnAFIxJySwO7/f07wRn7T5efreFeStXsLg7Ga41Uam4DaPiFIdqAS5SfrSR6Fm3 UW86dbVXqvYgO09P4aHHHmFxRCDaaXq+9t0fkr0iEuVw24arf9pcEtUm9g3VUznemEdT5lDbPGlb b8O1yXWafUcVREf6UH64V8J7rpSdJwNZvnoZ8eGBaMPvYPXqxWhP7mPfOaDNh+gHH+bxB6MJVU8h NNrI/GAX1qZhViAeqq6mBqyaEMIU7v/fqL4NYzAowxfzQKQC3fQpQCCLk2+jetAvGoYwzjZcamuH 6TMxTgt0J5TnjrK3VsvyVcnEh2uZEX036ctm9f3d6W+Ya+Us/xu77dGs/n4yCdEhhE4LwfiVZay+ S4HpwClaaWFfwX4uzFtB5so4jOEhGIyLePIHyYSe/pjt/b4lUU4NRBvc+98UWTRKCCGEEEKMfcjx +m1lHKw6T9a35vP7ohN89fldAEzxUZD3xKKeubUTzmmn8qyWFU8/3fXano/57dtdr0uhkR1bdjHj sWT+c4OCltMmik1WZvQOxWml+EA7iY+u4QkNWLuOH7BAUh8t7P5DPn6rvs6TP07Gr60F04F8snc0 AHri77ubCNdB9tUOfA1O/Z5tbJn3Q1Y/Gocpt5RGl4WS006MdhM1XftcMB2l2umDqbKlb52vv4Vy 5ddZ9fRzBGKn2rSPl7e552YOvW3ukPXbauPwO7p9mB7V8cbsYZmvu4bells6TNuCBpQ7Y+FwbXJh OnySS3OhuM8OF9n3R3cd6T+6h0DsVB4uYvP2rvvAfpCXX/chfcUKNj+sBls95R/mk3e4vWsO7Sjq ajtDSdMyEmYpKDEd5X8+i+PZzEweqNzHG6+8z4rH1vDyVy9S/cm7/G6kC9PHONoA1Hy2j/K7lpP5 Yx2vPv8W++wtfPDmNnSPfp0nf7wI59lKdleeoWPY19sMc4+6YMuLb1D38BJWfH8RYX5w6XwDJdvf Ysvf3feMs7qIzS9eJD31fp75URBKpxNvv3YOvX+y3yJjSsLu+x6/va/3Z1Z2/PLq67mEEEIIIcSX 06QrV65cqaquJyoidFQH/vWQhTvCND2J60Gze57s7WGanjm1E2H10xuv/tD1Lsz6F3/NluoJq+JL wgfDV+IIrNxPyYTNobzRRm5T6IM/5PnI3T3v0b2WhqrLb+63yF7Wwm9+7V7Q6VahffCHZN91lPXZ +6i/LjX6YHgwjWcf1lK99Q1e+GyktzwLIYQQQogvuzH30H5jgb7PzxPySh5xDbVj/vv+Gx3EBBum Tb6BzIicy6r7plDy9iiG8o7FCHW1Ht3B74yP8+zTPmwt+Jji6ovu1ZbVIczwbcR87mbIcgP52r99 h3nl77H1cANMn8vq+7TUf2K6TsksQDvmD9/g+do4Is561vMvhBBCCCG+3Mac0ApxMwuY+zDPrwqh 5pNtoxzKey3qase07TU233U/K1IfZ9W0KShx0drUQMmO7ZjPDTM397ppoXj7PiJWPMzzqUEobVZM B/L5zYfXv5e00VQ69HuNhRBCCCGE6GXMQ46vlz5DjoUQQgghhBBCiC5jXuVYCCGEEEIIIYS4kW76 HlohhBBCCCGEEGIw0kMrhBBCCCGEEOKWJAmtEEIIIYQQQohbkiS0QgghhBBCCCFuSZLQCiGEEEII IYS4JUlCK4QQQgghhBDiliQJrRBCCCGEEEKIW5IktEIIIYQQQgghbkmS0AohhBBCCCGEuCVJQiuE EEIIIYQQ4pY05oTWVprHutREYo1GjAuTSc8qxOyYyNDGqoLsZAMGw8B/aQXWQY+wFaZjTMyiFIBi NiQuJKPQdj2DHhN7VSk//cUbJD35MovWvcVTW49zynmjowKw8tL/fZl//mjgOTy+/S0WZR3kFAAW fvaTP/DcwZvixhFCCCGEEELcYhRjOchRmk1aWj6kZpKzwYiq9gBvZq8jrcpBQV4q+omOctS8iXos l9y03pGo0Oh1HhxrICUjA1usBoDiDQtJb8ziSO4SVNck1rFxVH3Gml+Vwz1f5ecrdXift/Cnd4p4 4mwnbz4dQ9iNDtAjQSx5aAH2mSOf2UNv/4F/u/A1Pvmh4aa6DkIIIYQQQogbZwwJrZWCF/KwJudQ tGkJGoC4OBKMKlJTsskpTuGFhBufcqj0BgyGsaTWOhLS0ic8nol1iR3vlHI+dhkFjxpQA0SFsuA2 Bd/N+oxXj8/mP28f03cV15k/C5LibnQQQgghhBBCiFvU6Icc2/ZSWKohOa0rme1mSCE1zsbewoqu /QpIMyaTXXF1l4rsZIxp+fQM/HVUULAulYVGI8bYZNKz97i32QpINyaSvi6D5Fgjydl/Z1dGLMaM QnoGsdoKSDfGsm7PGIarWnaRlZaI0WgkNjmD3D29h8YWsy7WSMauYtbFGnj0T410FP2AGEM6Bd27 2SrIX5dKotGIMTaR1HUFVHSHMSD2CiZcazW7qlTcl9iVzHYLmc3yKAf7D3Wd4dYK1jz5Fi+dubrL 8e1vsehX5TR2f+C0suPNrSx58mUWPfMWT20/7d7WWsFTT77BU2/uIPWZl0ndXsvHv3+FRb8/jr0n jgqeevIVfvq5a4wNsfDTZ17muSPunxxnyvmPX/yBRU/ksGjdVn66x4oDCz99Jocn9rbSUVbIPU/8 lR2t3fVb+cubW0l58mUWPfMG332zguPdQ66vS/xCCCGEEEKIG2n0Ca2lAgt6Ygz9N+iICtdgq63F s9mnVgrXppNdm0x2YRFFeemoCjPIyDO7N3fUUloVztq8QvLS55OwIgFVcSHFXYXb9hZRqkomZdS9 wWby1q6lwJFMTn4h+RsWUnXgCB0D9kvghQOlvLFCi3dyDqUVuaRq3HEXrE0juyqWDQVFFOVnYjRt IG1t4dVEvU/sA07U+J23UoeG2SH9N/gTOVWF/bztatI2rEt88Ie/8tL5KJ7f+B0Kno5FdaiQ5z5q cm922TnaoGHN02m89MB0Ftyjx/vECQ51JZT2Y2aOKg08NBG9wU4Lv3plL6dnJpO/OZ03Vwbx+bYd /Op4CP/5QgYvLfLDe/5SPnk5heV+7th3vP4XXmoI4bl//w4Fz32V28/sZs0fjl9N1q9n/EIIIYQQ QojrbvRP8jYHDlSoBskjVRoV1NrwqM/UUkjuHgNr92aQpANIY0N6AcmFe7GkasBbS8q6jaR0j0hN WkEimRQWO1iyBEp3FUNiDoPnsx2YNiVh2HT1E++FWRTlp6E3F5FfYSCjcCNLDAAGstcWsTBnkGJU Gnc77d6ouhtsLiCvWN/reD2bsis4kJpLgTmFDB0DY59orZ104IVKOUjIvl5w3oED+vbeDqbxBG8e C2LNz+7mngCAeTz3gInUg9XULVKBwo+HHknioaiu/efEcA+72HXCxf2xcPSIBeYsI36QOKCTE9vy iN82yKbBRoI7bdRdUDE7Vs9MrQK0SfyM49QFAEoV3koABd7Krlu2oYL84xoe25jE/SEAGn7yWCMl vzjEjobbSdcwzviFEEIIIYQQN7vRJ7QqFSocOAbJWh02R9f2kTkqSjF3HCAr0UhWz6cddOhisRID /ZNmVRIpiZBZVIwjSUXRAUjMThiiroGLQqk0OnceZa7AojJi7N1xOlh2PlTc5iOYNbHE9j4+JpFY VR5HzA7QMTD2iab0wptOHIOsaOxo6wSlwrNrYGngtKuWX/3kZX7V82knHQEhnEcHeHUlkt31RrBk Djx/xIJjjoJPTsA939UPUZcXkV9L4b+S+gxM5/RHf+UnVYPs7mcgLbGU/3gxj+/OMXBf7Gweunse 9w+RbDoaGjjtF8rc3r3Ut0Vwp7KUzxtcuMfDjyd+IYQQQgghxM1u9AmtPgY9hVSY6UreulmpqrWh iQrvO7d2SB2gTmZTwQYW9klcNegoGmR/FUkpibCxkOJSDXsdiWQNM9x4pEWhbukkZqqOME5wogEI 6L3hEqfPO1CHaEbunQXABb5R/OTfk4jvfScoVUzFPMj+Cu65OxLePkFJlYq/OSP5yTDDdb21wcwM 6Xs3dPgOtb+Ke1Y9SmGShb8dM/PJ3vd57Z0QfvLj5SzXetQYD4wufiGEEEIIIcTNbfRzaHULSYmx UZS/q+9cWUshBaUaEpO7x9kO0pPb6weVPgq9w4zZoUev7/6nQ6fRDJlsqpJSSXTs5cUXirAlpgwx 3HgEhhgMjipMlt5xeX64yhCLwXaEI73zPfMRTA4DsYbrlCYH6Flym4NP9pr7zpVtPMGOKhWL5nd3 W3rhjatvT67z6gJIqqnBhDmbOe3UEKbt/ufHVL+he9lVc4zc46zm1XfM2OfMnrjhug3HeWmnmcYQ PQ89kMTP/z2VNZpq8g81DR5HSAiRrfUcbehdRj0nnEHcGTJ0knrN4hdCCCGEEEJcd6NPaNGTuiEd XVEm6RsKKK6ooHRPHk+nZ2OOW8vapK5USGPEqK+l8NV8Ss1mSguz2FhQe3XxpZg00uOs5K1dR0Gp BYu5lPynU0jOKh46v1QlkJrs4MgRG4kpScP2sjosFiz9/lltuFdjjqkgd1MBZpsDh2UPOXnFgywK 1dUMjQbMByg2W9wJvCGV9AQLuZlZ7KqwYKnYRVZmLpaEDFKvwfpPQ0TF8pVxTD2yi6feruDQGStH Py/lP178jNNRC3nizq6Ezk/H7VPt7NpZztGGJo4e3MPP9tuvtvW2ufxz1CXy/7CLHVU26hrq+csf 8kndZhn6Gij1LI918fkpB/fcHTFxPd2+Do7u3M3Pd57m1IVLnDpuZv95L8Km+gOg9lVBg4WShq4F r0JiSLvdxptv7uHjMzbqzpj5rzcPUXf7ApYPWCzrOsQvhBBCCCGEuO7GNN5SFZdJfr6ODZtyyEit xaHypsOuIXltYq/1fgxkZK/DtDabby5xoI1NJiUxioqeJWj1pOXm4diwiey0JBrRYkzKICczARUF Q9VMQkoi6iJISRouFemg6s1HSXqz76fGdbsozDCQnpODJXMTKXGZqMIXkrIwDu8Dg5cUk5ZBUuEG Hk+pIntvHqk6Hak57rg3prrjjk3JJH9jSt8R2NeYKuqrvPacHz/bVsxzv7DTofSio03FfcsjCevZ K5jHHruH469/xmM/7WTqTANL5gRxoqdrXcM3f/ANOt7ey0u/yuM8fsyes4CfP6JHxVCvG1IQvyCS KUdgyZwJHK4bMI+f/cDBz7cVkfZOK2i03LN0Of9xt/s63564gHsO7ebfspp5/mffYHmAP8u//w0c b+/l579wx37n3V/ltZW3M/wI5WsUvxBCCCGEEOK6m3TlypUrVdX1REWEjqMYG6W5GWS8YCYmK5+8 tGvXVWnOTSH1yNMcyF0ivWt9ODi6cwfPvdPM7LRUXk4KvmY1ndr5No9VJbDrh4Zb8hrc6vELIYQQ Qggh3Caoi0pDXEY+BcYCKoZZiGlcbBYqSgt5Ic9Kcvbww42/nFTMXfpN3tRXcDzEs2W5Rq3VxvGq 47z0USv3ffcWHK57q8cvhBBCCCGE6GNCx1zqk1IHfcXoRLAWbSR1QwUx6TnkDDvc+Mst7M6YXkOO J1bjkd089raV2Q8s4+d33nrDdW/1+IUQQgghhBB9TdCQYyGEEEIIIYQQ4voawyrHQgghhBBCCCHE jScJrRBCCCGEEEKIW5IktEIIIYQQQgghbkmyMs5NJP6JnBsdghhByatrb3QIQgghhBBCiC7SQyuE EEIIIYQQ4pYkCa0QQgghhBBCiFtSz2t7hBBCCHFt+PqqaGtz3OgwhBBCiH84PXNop+mm3sg4hBBC iH9Y56zn5X3vQgghxDUgQ46FEEIIIYQQQtySJKEVQgghhBBCCHFLkoRWCCGEEEIIIcQt6cYktA47 DefstN+QyieQ4xIN5y5NbDuuRZlCCCGEEEII8Q9IMfIuV7kuttB4ycWVPp9OxstPzTS10vOCWps4 fQaitWp8btY+YpeDC7ZWHChQa9T4DnKm7GctnG6fxl3T/Ls+6aTtgh27E1RqDQGqQRp3uY2mxjYm BQQTpBp/ma5WO02tLhR+Uwj263cNLjtobrrEFf9Agn17H3eZdvtFbI7LQ8cphBBCCCGEEDe5USW0 zkst1J91cIVOOjouM1mhRDF5Eiqd7+gS2ptdWzOm47W0dE5GOfkyzkkB3H7nbQT3OVutWFtcBIRp 8AZwtVJrPk3NxcmolJdxOM8yPTqaMgJihAAAIABJREFUqACvXsdc5sKZGo5bXQQZAgkakEiOrsyO pmrKqy6CtxeujrMEREZh1HoD4Gqq5nCVnU5AE6nuldB20nyqkuNNV/BWXqbDeY5p0YZ+cQohhBBC CCHEzW9UCa3v9EjipgNtVsoqmtDMvp2Zfn336Wi1Y2vtxMvPnwA/Za8xzZfpuHiRlnZQXR5Ytvs4 F5eVPgQH+KIAXK0tNLYqCdb6uxM8OrnUdIE27wC0U65VAtZJ45l67L7TmTdLh/9kJ3b7Zfz7nyl7 M01OfyIDu+KYDJN9dMQYdAQoOmmsPE7lWRszAoJ6TrLLXo+50QlMGrzqUZXZSq3Fjte0KObP8MFR f4oyixW7Nhw1oFBP4/ZZ/tRVnaXP6W5roqYJps2eTZQa7DWVHDtzjukBofgPEpIQQgghhBBC3KxG ldAO7zJ2SxXHGhxMVkzisusKvtMimTPDHwWXsddUcexcO5O9JnO58zJXJqm7jnPSZK7iRLOLyQov cLmwTI1g3kw1Ctqprz5Lm8/tzJwCOC9w+pQVv9uD0U5c4P2acYlGOwRGBeLVeokLk71Rq1X9Jhtf 5kKTncsBIQR2n8HJfoRGdGf3XiiVk6H9ytVk0nWJmlMtTNJpCTp/frCKR1emo5WLTm+Cg72wN13C OyAA37oWbG2g9gWUvgQEXMYKOHpX09mBE2+mdPXYqrVqvK2t2BzgP8gQaCGEEEIIIYS4WU1cQuto 4vRZB+oZs5gzzZv2xtOUn67nrC6a8MlNnLY68L9tFnOmq+g4e4pSS/eBSvy007ldryFINZn2s2aO WM7Tcpsard9UwtXnqTlrJ2KKmo6mJuyqACKnjBSME/uFNpy9uyYnK/BT+408Z9fZgfPKFdpOn6CJ SUzuvMxkTTh3zg7Cp3ufy21Ymy+jmaEe/AS6bJxt7sQ/bEpPz/KFWgvnJk9lbpg/9efP4+p/zGjL 7HTiRIl3awOmmosE3DYdb1w4Okdon48/Uya3UHumicnqTprONuG4oqRjpOOEEEIIIYQQ4iYzcQlt axuXrvgRFexO4XyCA1FX12JvuwyTure5ezp9vCf3GXTrrYT6M6c4ZW/H0XkF8MXZCSiUaEMDqDlx nkangjarA3/djJGHxrouUV/dgK1PQuvLDGOER4tQXWYS/iEzuT3Ul8mtDZRVnKO+NahnePVlezMt V/yJ0gw27LmDc1V1NCmnMbd7PuuFeszWTtQhPjhsl3BcvsJlu40LflcXZBptmTCJSVxm0pTpRIb4 46uejIVJQw1mvkoRSFRUO1V1jZxpVaKe4o+y3YW3TKEVQgghhBBC3GImLqFVTEJBJ05nV6mdl3Fd mYTKazIwicnAIFNn4bKdqhO12NShGO5Q4+86x5ETV19aM1mtI9Snkvrqc3Q6/NAHew9WSr9YApk9 L3Bs7VB6o5p0BXy83SfHxwefSU10OnsC5kLTRS5rwq4ODe7hpOnUKapafYky6vDvSp7b7O1cVkym rbGBKi7jugKcP0u9n39XQjv6MvH2wYcWLnb6EK33g4u1mPFG59P/+IG8A0K4IyAEgI5zp2j08sFP hhsLIYQQQgghbjETl9D6BxHsfYr6mgZUIX44zp7jokKD3h9gChqvWurrbKh1k7BZ27iCr/u4yy6c nZPwVfuioh3r2Yu4rvQOS4Uu1J8zVXYmB+oJvtaLKU/2Z3qgF8dr62iYHIyipZELk/2I7p7KevkS 1pbLBEZO6Tev1klz9SlONE1CGxGMquMSF5yTUfn5otZHs0DfvZ+dytIaXJGzuCNo8pjL9FGo0QXU UVlThybMn4t1LbjU3QlxJ+0XHTiutOHkCq7WNi5cdKLy8cNnchv1VefoCAxCwyUsta2odFEEXMNT KoQQQgghhBDXwsQltJP9iYwOw1Vtpaqyick+ambODiVIARBIVFQbJ6vPcLRJgVqtoqdDUKFBH3aB k7VVlE9SoQn2w3dSR5+ivdUa/Ce146vTTOQqVkPwIihiBhGn66ipPA0qf0KjwtF2JdKXL7TQgppZ Af3GLree57S1gyuA9XQ1VnfkhM2ZTYTv8DWOrUwvtBG3Ya+qo6rqAgq/QKJnBnXN2W2nrvIUZ7sn 6p6roeKcgum330GU2guV92Xqz5yhfpIS9dTbMOpHCFAIIYQQQgghbkKTrly5cqWqup5puqk3OpaB Lndgt7dz0VpHdXsgc+8MucGvlrlMk/kLqibfxl0z1XgwHfcGlSmEEOJmcs56nqiI0BsdhhBCCPEP 5+bOnxwXOF11hjPtvkRGTbsJ3pPqYtIUHZEh/hN44q5FmUIIIb40HGZ2ZWeQmhiLMTUPy6A7lbIh MZnsiq4fLbvISk9modGAMTaRtA2FmB2DHog5NwWjIZls8wSUayslLyOlZ3vqhsKB8doq2JW3jrTk dezpv826h+z0ZGKNRowLU1lXYGaIsN08Ojce1OtJ3N0seaQaDBh6/zNmUOgYbVkVZCf3LccYm0jq unxKbf32MWZQaBusDDO5KQYMhjQKBt0+QruFGMl47/eRjhfCA9d+BO94+OqYG6e70VH04k3Q9ImO 51qUKYQQ4kvBUUFeWhrZ1gTWZuaSFRuDfrDdigvYq0klLwZwlJKVvpYiw0ZyChPRWYvYtHYt6apw ijbG0WeNQEs+G3NMdBA1ePWjKtfBnqwMsi0p5BTkYnDs5YW168jINVKYYQCs7MnKIDP/CA6VGrsj kcf61GYmLyODAs1acgqSUZly2bghnazwIjYlDLKyoYfnZuR6R4q7f3EWrOpENuQ+gbH7M5WOGNUY ysKbqMdyyU1zR+6wHiBvYxbpGVCYn3a1PR17KCiykpLa73miooAC06CN9qDdQnhgvPf7sMcL4Zmb O6EVQgghxJAsBZvItiSSU/giS4b8btRBcUERutQCDAClBRRaEthYkEaCBjCkk5VRQHJ+EWbiiOk5 zkrhxhysSckY9wzWPTvKch17KCiClJxMlsSogDSyMgpIzCvCnGHAgAOHLpmN+bkk27JZmNGvi8Zc QH5FDGv3ZpCkA2I2kVWcSMabRWQmpKAZ07lxt2PYekeMux+bFZsmioUJCb3O5RjLAlR6AwZDV+pq MPBCtpnEtDwKzWl05wTacA3FBUVYU9Po3dTSgkIs4eForWNotxCeGO/9PtzxQnhIRrkKIYQQtyQL RQWl6NPXDp+wOfZQsNdAakp3UpRKVu46EntlgCqVClSaPr2ztl1ZZJkT2fD0QgbtLBltuZYqqhx6 4np1veiijGgsR7qGJetZkpFBSpxu8PosFqyaKKJ62qoiLikGR0UpA9PtEc6NYw/rFi4ko9DmQb0j xN2nLLA1NuLQ6Qck2B6V5YmYOGKwYu4Zt+mNITkFQ2kBhX3GcpZSUGQjITlx8FhGarcQHhjv/T7s 8X0qKiDdmMy63CzSE2MxGmNJTM+m2FJB/tPdQ5qTyciv6JmG4KjI5+nUhRgNBvcUhV7bcFRQsC6V hUYjxthk0rP30PO9j62Y3IyrZaZn7Rp+uoK44SShFUIIIW5FDjOlZhV6Sz7pyQuJjV1Icnouxf16 42xF2zlgSCW5O7HTxbEkKabXA6SZwoIKDCnJV3sIHcVkbzrAwg0bSRriSXPU5dqs2NCg6p09aVSo cGD3JJnT6NDYGqntMxdUBTYbA6aHjnRuVAaS01NJMXqQyo0Ud7+yrFYbHZZ8MhJjMRhiSUzbQKHF 4VlZnrBasaJB0/u6GFJIjamgoPBqau8ozqfIlkhq8oipghBjNt77fdjj++uoomivin/OLaAgL5OY ildJT86gUP80eYU7yM3QUZy1kXwL4CgmKyOLqthsCvfsoWBjFEeyMsgqdgBWCtemk12bTHZhEUV5 6agKM8jIMwMW8tPTybOlkF24h8K8dNRFa8nIrRg8JnFTkIRWCCGEuBU5GrHb7ezdW0vihlzy8zay 0JpDRmbB1Z4GbOwtKCUmLZnBO3EdmPMyybGmsiHd0PNZRc5GCg2ZZC4ZKhkaS7lDNmSE7V1ikknU FZPb1ZPiMBeyLruIDpVqYA/jiOdGz5KMTFIM4+mb7I67b1kqXRQLYxJJz87jL29vJNFWyLr0HIZ/ HPbwHNgqKNiUyxFdMim9xmc60JGcGoe5oKCrHgfF+XshOZVElcPT0oUYtfHe76M63ltLyrpMlsQY iElI4+mUcDr0KWRlLiHGEENS+hMkqsyUmgFHLbVWDcbkBAx6PTEpG8l5IYNEHWApJHePgbU5GSQZ 9Ojj0tiQHkNF4V4sFfnkVcSwNtu9zRCXxqYNqagqTAw6cl/cFHrm0J6znr+RcQghhBBiNBwOHN5a /jk7h/QEFRDHpqxi9qYVUGRNJU0HWIvIr4gjLWfwxNS2J4v0bBup+RvpWVfJnM/GfA1rC1KHWERp jOUOmTt6mFSqEsjMWUtGxuMk/Am8tQtJXWjE26QZOFzRk3PjqVHGrU99kfzU7p/iiMuxciSlgMKK zGEWuhlqQwemTUkYNl39RB31T2TlZhLX+xAH6FNSScjKoaA0kxjDHv60F5JzE9A4iiShFdfMeO/3 YY8fMKm275dXKp0Kb02v4cqqXr2/mmQeS8tjbXoiqUnJJCenkJKSxhIVOHaVYu44QFaikaye0jro 0MVSW1WLRWMkqtcfP82STRQsGc1ZEddbT0IbFRFK/BM5NzIWIYQQ4h/Sn3+ycuILVWlQoUKl6fWI p49BzwEsNkAHlqICzAsfY9BRp+Z8MtYWYdhUwMZe2VFxbg5H7HYqUoxkA9BBRwccSTFSlF5AUWbM mMpFpUPDERx9XuPjwIEKtYc5rSYug/wD6disDlQ6DeasRAo7YgYupuTBufHYeOM2GIlSWbFYAf1o y7q6yrF7PrIOvW7gjg4AXTKpSVlkFxSTkbCdYk0KeQkqKB5FW4UYr3Hd7/2OHxcNSRsL2ZtWzN69 RezKX0tOdhybCnJJoQPUyWwq2MDCPhmyBs2BzPFWLG6AAascb/nlUzciDiGEEOIf0uofv3xtCtYY MeqtHDhigZiu7gSLGQs6UjXgXhjJTOLTSQP7/2zFbMjIxpaaR35q337YuI2F7Fnb6wNLPhnphcTm 5rM2TjfmctFHEaUyU1zhIC2pa75plQmbIZnRjfxVodGpwLaHvEIbCRsTB8Yx4rkZhVHFXUFuagbm J4p4YUnXRmsttQ4NsbrRltXV2t6rHA9LQ/KKRDZsfJWNpmJ0KQXEjbKpQozOeO/3EY4fD3Mh2UXe pGYsIcWQQEp6GrkpKeQVmklNjELvKMLs0JN6deEAHA4Vqqgo9LYDVFkhoSsGR2k+2UeiyEhPGNV3 YeL6kTm0QgghxC3JQFpGAubsTLL3VGAx7yF7UwG2pDT3PDFzIQXWZFIHvKPVQsHaDAp1a8nK0OOw WrFarVit7sWVVBo9en3vfzpUqNDo9eg0qjGXiyqJ1GQVRS9ksctswVJawMbcCgypyYO+rmZwDmwW M6V78liXtpYiQybrUgbLUEc4N1jYlZtN4WBvI+pvxLh7lxVD4kIVhS9soKDUgsVSSv7GHCr0KaTG TNQ5GC7UVJLZS9ERA6mp8hIUca2N934f4fjx0Ng4kruRjbl7MFutmIuL2GtRodfrICaN9DgreWvX ues1l5L/dArJWcU4YtJIjzGTk5lHcVfMGzKz2GvVSDJ7E5P30AohhBC3KH1qDnnWTDLXpvKqQ4Mx aS152SnogIqCAmzJ2QzIO8355O61Y2cT30zoNTkTb5JfOULukuG7S8dTbtLGXDI3bGRjShKNqnBi U14gd8RFo3orJTs1nUJVDAkp2RSsXTJkIjjcucFRQWFePh36dFIMIz2mjhB3v7Ji1ubxgiOTnIxk NthU6BNSycnL7HrH5kScg+FCTSA1WUuhKZWUCSpSiOGM934f/vhx0KWRk2tj46ZMUl5oBK2RpIxc slI0gIa03DwcGzaRnZZEI1qMSRnkZCagAtJyc7Ft3MTalGxsGj0JqbnkZcoXRDezSVeuXLlSVV3f M4dWhhwLIYQQE2f1j1/mzz9ZSVRE6HWs1UZpQQHWheks8WS06g0vVwghhBgb6aG9blxUH9rPR3Va HnjYSMSg+1yi7OPDlDS73D8qgoi/P5b56qHLtB77nI+ag3hgYQQ65cRH3XL8CDuOw7xh47h+brZ4 bmpOK3vf/4LqGXfyL7FB/TZe+3tnYoz2d+Lmc6mmhNc+huUr44n2vcaVfZmueVst/5N/hMBlD7I0 bDyvXvlHpSEuNf0WKlcIIYQYGw8TWhuHPi7DpJzB8nsjCATgEmWfHqbcOYPl97s/sx4rYedxG04U KBWgVAcRMWMG8QYN3gA4MH36d/afc6FUKFCq1UTMiGCeIQj/QWq9ZD7C9jI7YQu+wgMzrj6wdNR8 ztZDVpxDNCk6YRGJYQo66kxsLW4YsJ9yWlSvdlwvndSVfc7uqhkYlxmJGPRhspWaMhP7rJ3g6sRJ IH4Jwzy8O2vYkv8pJS4vGoP+lafmTPz3ExeqPueDzxQEDhfHdTRh8ThtlJVVYaqzQ7CW+TGzMAZf PX8j3Tt+Ht6DN5SrkeLPyjBdDB+Y3FyHe2dijPJ34hprMZvYd6IZZegsFsfqev5udbQ5wFfV9Xfu qo66ErL/v/3UBM1n6fUI8Mt0zV0uWptrKHz1PXjyEZZOuyHBCiGEEOIG8/CJphXTgTI+UHiR2JMI tmIqLuMDvEjsSmgbj5fxwYFWlAovAJyuTgC08cvZvDICf1qpPFTG7npQKsDpAvgUv9vu4tnv3YOx T+/FJUo+3M8HVZ0om7UkfM/Y8/DYeu4kuw/UDpFMeNEY9RUSwxQ4607ywYGagbvoVDxw3RNaT+hY /swalgOV7/6R5z8bYXfldL62cAatVi2LZ1zLh1MvlDfVs+8442k6wcuv7aK4+epHhTv2Y1y+nHX3 6vCGEe8dPLwHb1rX7d4Zr1H+TlxDl459wPq3qlDeFgSfHuajmm+y+eEQnOZ9bH7DhP/yb7M+odfi NM4Gtubvx+x7B+ueWNzv79sN8I92zdURPP7EQ7T+9j225v8N45P3DPFFoRBCCCH+kV2DpxotK9Z+ m+XTgDYrO9/6C1tK/k7xsgge6P6GfcocMjfej7GtmUNFH/LaZ4d5+Z0QstOirvbU2k+xr6YTbZCa xqqTlNiNJHYdH7jgEfIWuP//pUPv8sSfa4n/zr/y7KA9Dl7DbPOEe6jwXtcsls5opfx4A3Xtfhjn G1nQM8zNxqH3yzCpo1hxb7i7Dc4GPnr/JNYZd/LtPj0lnbRaq9l7vJa6dj+i+5TjWTyVxfvZW9c1 HA81oTo/vAdtnouWmhrKa5qps4MuKoqE2wfvDR+eAmXPg6KDyuIS9p+DiAVG/I5/jomuXnqngxa7 C6XaH3+luzf+EH179auP1WCqaaZFrWV+TFSfXlE83meoeDxLIqs/3U9xszfzHnmEJ+ODwH6WfTtL qNP59ethG+beGdU9OAx7LTs/rsbPoKW1phGnLor4aTZKjjXiN3s+Dxh6Xy0Pzo29gf1lVVTb/QiL 6uyXcI/i3mlrxnS8msp6O5d8tMyfP2uQ6zAcT38nmtn//uc0Rt3F8hkd7l7zc62gnk7ivbMJm5AE 5erIkP6UYUZWJIR49DtRc7yWC7r5bH7qHlq3vcbmqlrMx0y8kf8FyviHWJPQd6XVlpL97Lb6sfjx xczvnczKNZ+4a66OIn3FLMrfKmNr2XwyFwy8kh1NtZRUVFPZBIHBWqIH/ZsCHeeq2F1iQxt/Jwum 3cwJvxBCCCF6u7b/1fYNIjRIBXTS2gb0HzLmG8SChx+kvuptth77nPK2KBZ1Pfi1HDtJpUvLiqXh fPSnz9l3/BKJgzysXHvuocIf1JjY194BQWqUbXY++OQwCd9ZxVNz/AE75YfK2K1Ws7T7Qa7dPfSv un1G34TWVUNeTq+evz7leBaP9biJfSc6u8rrxIkWXUJsvx6gZvb+8V3yKuxXH3A/2c/22Q/w/PeM o1x6vLtH1EX1x++SvbORgIVfZ3mYH+Xvf84HVTai741g3rEPefZPNRj/+XEy5zTwUVEZJVHTWXUv 0FbNf7/6Hh/Ud4LCC6Wrk8L3taQ88Qjf7h5O7sk+w8bj2e3c54FfqcA/OJylaeGjOiMTpq2BvZ8d puYz8PPxorX9MFvxwk/RSeunZ+G5R3ggGI/OTUfdEV549VNM7V1lf+L+n6v5gWf3jvXIB2z+80ka e+V/hR9+zuonv8XSME8b5unvhI3y4jIqmx2U53+ByeVNgA+0Kl0suH/2aM7kMBzUHa+ipK5zwBal PYTlCSEelaINU6MsqWLHx+Cs6sBP18qhj88S8ci3WbMgqN+XITaKD9XiDJrP0tv7fWEl13xCr7n/ nPkkBJ1kX0kNLQuMfUbedNT8jedfPUyNyws/Hy+c7R04d/gR/61VPNvnvydWtr/1HoVW4Hgn2c/E 43GzhRBCCHFDXYOE1sahT/bR4gOtzbWUVLSiDJ1P/JDzm4IwzvCD+mYqm+lKaG2UHKrFGbqI+Dkz aAkqY/cgDyue6aS6eB9vHO/6URHEouT+yZ8H2lXEf+fbPDFHA/YT/Oa/dlH8fhnL59wzxAJPQ/Fj 3vKHSF8YToC1hM2/2z/KclQs+u4aFnX9ZNr+BpsPDNyr7tMPyauwEzD/AZ59xEiE4hLVZYfZS/jo 36OlAKXCRV3xDjbvbCQg/iHWr3D3ukaHqeFEI5X1LgKrzuKkk+oTjXSE1VLdDqEzQvDGRdmOj/ig XsW8R5bzZIIOf3sVr/7uPQq3f07iM/GEebTPyPF4IvreRSRUfETxO1t56pNwEu6dz/L4KMIG3BMT dO94wG/+18m+r4HNOYdRLv0264P28dSfajHVu3ggGA/OjY3d2/djag9k8XceJn2OisYj+8j+0xdc 6KnFs3tHFxaOcf50Eu6dhTHMn9bjH7P5jWNs/7Sar62MGDBPdCLUl32BM+Y+Nq+8kwhf6HC6JrAe DQ9877s8MM5SdAkP8WTzPnaU1eA9416eXX4nofZaTOeaqbGriVb3+nPqbKSyHvzmzGCodW3lmk/U NdcyL9SL3VW11NP3vxE1R05S4/Jj8ePf4YnbFdDWzKGSBgIHfIGoINDHC+hE6avCb6yNEkIIIcR1 dw0S2g7MJWXUKLxQ+qiJiL+XVctih/22u3vOLd29A01V7D0DytBGPnq/lUaFF86aLyixG68OWx6F xhPH2N3z02C9mR5QaJk3u2tIoTqKxVFelFScpdIOEaOJSTGdxQvD3SuMht3J0qi/87sTYyhnWDbK j5zF6TOT1Y8YifAF8CdiwWL+ZYwlNpZ8wJZ3amkNXcTzK6N6Hhq1USH4ffIFNXVnCaxpBeBCTTXm mkYa8WPxDA1QTfGxVvAJR9tWw+6Pu3qop3hBfS3VbfGE+dZ6sM/I8XgkeDZPPadj8YESCj89yb4d tewr0vK1tOU8fnvfB90JuXc8EBCkxk/RjBIvdNPUKOmahw6AB+fGVUPJmU6Us+NZPce9CFvY7eGE 0Tu58dC0O0lf1kB5WRl5RY3UNTfSCDib7bTCNUluCJrDU2l39syB9J7QSdsOKg99ziGrY8AWf90s Hlqg87BNGhYs+ycWLDzB/1T443f8A9b/uQanD7QSwpq1j5AY3LVru4MLLvAL6j+M/Sq55hN1zRUE BvmBq5UWJ727p5kxJ4rQA2Xse+tt6uZEsSgmivh4I7oBv8NBLP3eNwmtakUXdTOuryCEEEKIoXj4 BOE1+Mcudwl9pzxpWfVc1xxajzioa24FtOimuD+xVpzEDFB/kg/qu/droPjYJR5IGO2w4/HOob2W rtViSw5a2gGFH4ETkXy5atj6DgRM8Yb6MrYfu6NniLT3jHAiFF9QfewIWL2Jnx9C+bFadh6z41Ro iQ4DnJ20ugBXA8WfWHsV7EWAj8p9/3iyjwfxeEwZxPx7H2T+vYupO1ZC3rbD7N62n0X//iDGnspu knvHo/Pn4hKgVPuNYY50Xy3HPmRz/hfUo8YQFUJEVDhO60lqBl8Ba2IE6dBeswV9HFSWlPBBzSBD jqOCWOxxQgvYq3n1tY8o0c2n1X4KZ8wSfpOmYssvdrCzrJnE+7uG1Xb/XXQOrNMjcs1Hxb0AoRf9 i/M2LGbzczPY9+kXFJ8wsaWsjC2KQBK+9TBPxfad84yvjvlzJiYeIYQQQlw/Hj6p+xEWBNTUUtkE EcFA01nMdvcDYcA4Auio+5ydJzohNIp5weAebnwWdHex+f90D8Ot5Y2sd9h96BTWhDtHP2R2QnS6 E3gl0FZLSU0nTAkkTA3g5V6kqL2V1q69O+zNtAxVTrcB5VylVLqHvzkHrmPjgSCidd5QUcNes4No Q/ccvktU10FEWO/HXxfVn77Hyx/bCEv+J55M6D8X0N0+bfxDPL9cxfbfvcPubR8x7/887F6ky1eL IQhMJ05hIpz0e6NoKfuEkgpAp+1672YQ0Toosc8g/Zl/YpH6at0dTgXeSk/38SAeD1gPfcxORTyr YjV4oyJsznwSwg5jqmmlpfsa30yUHpwbhQadAmrONWMlwv074uq/QJAnbBQXfUG9zyz+f/buPC7K 6178+Id1RpZhkR1klEEIUFk0CiaIJgZjWsj9GbVJiG1C401s9Gp/TUPuTTS3VZtfQ66511xtrTWl aQ23qdq0gfaq1MQtUTSKQgRBQYegrAoM2wzr749hGZBlcEe/79eLROZ5znnOs8zDfOd7znl+9JPH eXAc0KZl04lzDDLn8zBG854wz/W/J1TMf/mlG39sTksFf/zg7xxiMq99dzIFvz6JjaMKexsrnMZB c4NJBnicCjcHKKjW0YR5k071I+ccMPecG6iubgZHFc4D3rutVRWUj1Mz90k1c4Gmy1+z+YP9HN19 mvmRswjsXXOY+2DDJTKyCmgKnkGiSyl/PlyLOnYGgVUnyCixI+6JW9NrQwgBtNZTcEbL5UZbAqc9 gNp6wO+3Y3xA8yWO5HUQEu1j18m0AAAgAElEQVQvvTeEuEuZGdDaMy3an49LStm+eQe5GhV1xSUU t9sRExMw+g9r+kr2fXqII4015J65RA3OPJ74LWO35KpzHCwHp+gAkzGlnoRrbPnsdAEnrn6L+a5D 1jyIAeMgARtrX+Y+GTS6ST/aS9m6+VNyA+yoLzlHbqMVmsRIQgDjOGBb9pw+y/ZP7YhxrGHf/nPU MEhs1F5K2sah6unj5u2CHRc49Od/gE8H5Q2+LHn+W2a22ZoH46ehKTrCZ7/9I+URAfgrDZTmn6Og LaDvQysANez7vJTyRig/XEB5zGBjeR2JiQ3AeRws+e5Uzv/6JNvTvybw5W/h073vmdWt4O5JoLcn 1S5QXAt2Pr64dR+fR594gH2/PcvW/9rBiQhf3GimtKiEy/7fIfW7vtiatY457RlBWwW7959lT/VZ ju73JcTHjrbaS+SWgF3QAwM+mN6ka+eGmXFsbPyZP82RE9nH+M8/wVx/42O1ChhtfG6FnaMVVNdy 4nQRzdSQe/hrjupHLjmwzWa/J8x0Y++JG3f56H72VLuQsHwOEY4dtPnYkll0mn1HrThRbYXPY6az mXffswrPUdASZPJ+M5ecczDznLdoOVoKThH++PcrXc2ff7+TzFpnwiPU+LvbQW0p2kawCXLrvjf1 GPo+qD38OR9n18EZA+UuFzjxDdjU6gi5fIFcPWhd1Lz9yIBn/t4unVc59cVFqrsALLAd54iX2o9A D+VQ/apMtFNXcZVWZw88lLe8peJu1O/6AayscXL1ImiyB863tWNSG9+c/poSu0BiJzv2u3Ybvimj ytaXhx4ezzhLaCju//voyDV/093QPWg0Bpy71iucPFGHz3QNXndjB0xx25l9O3COfJyUxMn42zSQ e7qEchs3Zi1IJDlsNI+c6dZunPnyUGEtdgFhvLR8Md/rziJePnOOUmwJDzP9uGFNSKgXNlRyJF83 6s3VFJ3hs+y+nz3ZF7g86loc8XdppuD0OQpaXIhJXEBKbM+HGAUPJj7G4wFWnP/iMNsP1+ATP4dH B5sNZkIYiT7N5J44O0g9fewjZ5Ec7YlN+Vn2nLhEXbuB5tGkXnymkbJ8Lo8GKLh8+jR7skuodpjM kqTYAR+u3Zj5oCd21naETJs85AQ2PWz9H2LFY560lRxi0+fVtGKNOsCYM7fz8cXbxvihFkAd4NYb hNoHP8ZPX4plmkszudknycwupdolhKdiR7fOyO0ZgY0X31u+iJce9sVJX8GJE2fJrbIiJHoubyYF XfPt6825dm7cyMfGmpDEJ1ke7U7zmSOkZZyl2uNbxIy6O4M9cQse51F/Aycy9pKWVUJz0EMkBI32 T9Mo3hPmtuxG3xM3yOeRRN58+ds842MNKHhw/mM8qtSyPaMEm2lzSY40vRdaEx47GTf9Bf6834zr chByzs055+2czzpGbrszs2IHTl7lzlM/WEDyNBV1JQXs2X2EPad1uEXEkpI0cILBoe+D3kFq/JW2 eAeHMD/SFydrO0IiIpkV7IiN0pNwzU2b/OA62RE0YyrxcRHMCHai5UIReVXmvDE6qC8vp6J55DXF vazn+pnKo9M1eLZXcPpCA9c5WOL66Gspb7Sks+YKtZ39Fxla2xnn5NAbvA78fXTkmr81rvceNBoD zp2tiskhvoyXYFZ0s+jq6uoq0ZYToPZm2ssb2f7OijvdpruMgSMf/JbNJf4s/+l3mHm3dUcV4nZr uMTuz4u4PFg30Fs4E/TYY+D0n/7Iuydg1g8W8XLwnXjs2E1yl57zujN7+Onvz0H0An7+lO8NjyW+ VZa8vokdb3yXAPUNRPeD6bzKqS+qcJn+AOrujFPH1YscLrZh6nRfHIGWmm84U3yV+nYLlCoPQkK8 cLVuoPB4CWUtHWBljcukYKb6KGjTVXHmXAW1zV3YunoTFny7M3Xithrs+qkqZv8lRx6K8sBaV8WZ wgqu6LuwVbkwOdgPLyXUFH5NiX0wM/wU0FrNV8dr8ZkehI8ttJSd5ViTL7HB9jRfvkDuBR36Tisc PXwJmzwe+0EC0abSAr5qccO/uZyGCd8i3M240tVzX3O6opV2rLB19iFYWUmBye8zprgb2zjINWu4 eokz52qobQVbZzfCglVUnzb/mm+pKSXv3BUaOm1xcVXQpLNlinQ5vtZI96DGb/iiAMKmTzAeu6sX +FxrT0yUB+OaL3HkdAPj7Nq50urEtOkTUJh7v3LT8VW2Dv9ZGjzAeB6vuVYtjd3Fz7Ti5mzgckUL 7baOBIYFoHa4rm9ExF1M/lQJIUanpYKDX5wZYnylJz6xEtAaKYhY8G2W1H7C9t//HfWri0c5XOIu cjee86oTpKafozloDj9NvHuD2dvNylmFU2sNda3gyBXOFDbhNCWMB1UdfJN3loJvVDw8yZHg6Q+g zDlLvTrcOH9Fex0FZ6qwnhxMnKslVwoLydPaM0sjR/a+0d5EWXkTtiovxrXXkXumGuvJwcxxs6K5 rISTZ8qxn+aLk4s9LdVNtPkpoE5HQ2cLVXXt+HhAfX0rTp72WOlrKLjQhf+0CCZYt3Au7zwFFSoe 9BmYFdBzubKN8ZrxeDVf4WJlHW1urtgArpO/xZT205Q4PcAMHwXgjrXp7+115A52zU4wcKZQh31I GFNVXdQUF5FXbM9D5l7zE/QUFDZgFxzKNFeovVDC6c5bMtf7Pan/PWh4ne0dWPtOJs5VgU3rFb4y 935l2u2pvY6CIa5VR6CzpYGmCYE8pLGhobiI09o6fMJc77rpUsSNkYBWCDE6HtN4+51pd7oVY4ON O/N/sBjvEggZq8Es3J3n3COCl7/vhl2A2vgYNGFkaYU1HbS3A0oVIVEqlHbWgDVuLgrON7TCIE/a 7ai7whWlBzFuCqwAD18nCgvraNDYj/ihVIxlzRQdO0kRABbYeaqZOsmetppirth58FD39eDo54vH pYtcbvQl2FmF/YVGGnCm/Uor7j4q6q800eFhSW2jkvGTLaHTAmhH39xGm6s9kyPCaBvsI2djNVXt KoKdLRln54q99ipX2l3NGhc51DVb69hCvYMHU7q7F7ipJzJ5kNnphipf76in3qFv3928VdjV3NZO 2GOb6T1opFVtHfFz656539r8+5WptqtXhr5WLcFS4cxELzvjlyTj7eBCK3fj/J/ixkhAOyIFM1/8 ITPvdDOEEGOTjQsRwXe6Efcia9TB105hd9/r7KC90wpra8DSik5dGacLG2hpB9pb6Ryiz2Srvo32 hkt8eehS34u242/vWEpxB9gRNOMB1Mp2agryKbRVYm8JLa1tYGtL38wA1tjZtlPfCjg4Mt66hvrG BvTN4/DSONN+up7aRlvqbFUYp9FwJyKkg8JvznO4ABw9vAjWjL8miKirrKfdeQIuloDSCU+7cspq 2vDyGjncGOqabW1tB2vrvm3Z2uPjAWAwr3x7B9jacB0zxAjofw8azQQSo7hfmWof7lq9ZvIvCyyB zoEvizFPAlohhBDiHtFRp6NeaY/GFtBd4pS2k+CoMDxsoeXyWY7WD17O2tYaaxd/YqdcG3SI+4E1 bhPGU5hXTtUEDS621tDaigG6A4V2mlutUdgCKHFx7uT8pau0KV0ItHWgVXmJy5ds6FR1d/9vN9Bq 50Z4hBe0N6MtOMfXZfbM9DeJMDobKK9qpbWtmM9MHrdtSR0tXu6MNIphqGu2reo8tLfTRncWrtNA QyPYqcwr31FVDK0dfeXFqPS7B7VaQqeZ4eMo7lemrIe9VsX9QkZFCyGEEGNeJy11VeSd0+Gk9sAR 6Ghvpx2gs5M2fQMV1QY6O3uehm6JJZ3G7AZg4+yKU2MF56+20QEYdFUUljVJhvZ+4uDBJIdGLlbo sXF1xaW5ipKrbUAnTZfLqbJ0xsfBuKqjix0NlXUoxjtggzXjx9tQXanHycUYhnboyjl5uoyqVsDS CoWlBQMvpo66K1ThxrRY4yzL8XFTiZ8xAafGK1SZ8diwoa5ZS2cXnBqruKhrB9q5qi3h5DctdJp5 zePsglNzNWWNncZ9v9qEXlJ6Zrj2HoStEkV7I9WN7XS067lc3jBkfDua+5Wpka5VcX+QDK0QQggx ZvWMgex+BuSkIAI9jHklK1dvgp0vUHD8NJ22jvi42qNs7aAdsMIGN18VFwu/5kh7CDP9XJkS0sqZ c/nsP9OJtZ0zAcFuN/lZkuLuZoPnBBeKCyu46jORsLBWzhTms+8MWDu4EBzm3Tue2krlhJOVgfHd 41QVrs44WjXgpjLmSaxc/ZjifZGC4znkdVqidPUmbIJp/89OrlTqsPYKxNU0taJ0wc/1Mheq9Kj9 R3hYrO0Q16ytPWHBes4UnGFf92y5U0KcsQHzrnlbe8ImN3I672tKLa2wV9lgLemfYQx9D8LWhcAJ teSdzqMUJeNdlUMey1HdrzxMClq7DnutivuDPLZHCCGEuIVu2WN7hBBCCCFdjoUQQgghhBBCjE0S 0AohhBBCCCGEGJNGN4a2rYnzZ85RoPfi0Rivax5k31ql5WhRDc3WjgSGBRDoOMohumbVX0uz0oXw MDU+I02BZ6KptIDPztTS1PuKAvW0CGZ69LXxRuoXQgghhBBCCHF7mR9xFn/O8q1nqAfwnsm0AQFn U+HnvPn7s7S5uOHUXsP2/z1D8vIFzPUYor7R1l98iJ/+9jQ1Skfs9A18vD+MHy1/hAgzg876Myf4 eH8DTi523dOwW1HvH9E7sPxG6xdCCCGEEEIIcXuZH9D6RPJ/Xwrgq3/8ncyWgQvbKTh6lhrvmfzn ikjc2y7x2198wr4ztcz1cDFZr4nzX53jsstk4jQD8q/D1q/j0P+epsY7ltQVkbhfLSB14z4+PhpJ xCPm1d/c0gHuEaT85CHU1+ycufULIYQQQgghhLhbmD+GdpwLgRo1gYPOg22Nu4cjVF9gX3ETrXod Ne22OLvY9Vur9cxhUnccZutv93NkYNA6XP0tFeSWQ2CMmuZTX3Ok0ZdZAVaUFl2izsz6m/QGwID2 TBFfFVZQ3Tb6+oUQQgghhBBC3D1u2nNo1bEPEXP672RuTSMTsAuYw08jFf3WsXX3xFt5jnJ3r9GN T21ppqndFvd2Ldt3HKbAeybJPgqoNdAMOI9YfzvNbR1QfZbtf74Ajc00K31Z8nIi832sza5fCCGE EEIIIcTd4yYFtLXs/nAPuS4zeS3JjZqvTvLn7ENs+tyTtx9x71vNI5Kf/Sxy9NXbWAMd4BjAU4nN aN0n43b6BMZHLZsYsn5rZn73GXxaHFG7WkNDEZv+ay9/3l/Ko0kB2JpbvxBCCCGEEEKIu8bNeWxP VQkHv1Ew7bFpRPirmftUIi9FWFF64hzafis2UXD0BPsKdaOr39EFH4cOtKUGQmIfYn5wB6WXW7Hz cMHJzPqb6A5mARy9CHSB5gYDbaOqXwghhBBCCCHE3cLMDG071cWX0Oo7KLjaAfoaCs6UUK10IUTj gq2LGz4OzeT+40uOEICz/hJ7ilux83fDzaSW1jOHSf3kHG3WFdit/g4zx5lZP57MjXDk0OF9/Npl KoGXT5JR7khMoi+25tR/+QQ///XXuMdMI8bflubC0/z5GytCFvh2z6RsXv1CCCGEEEIIIe4eZga0 DRzNyODj8p7fz5H2+3PgPpWf/+Qh1DZqkp+fw/ZPT5D225M0Y4d/2Ez+b2JQv0fv2Lr7EuJQgtbD F/W4UdSPNYFPPMlL+j18nLGXo0o3pi34Nks0/Zs/ZP0+3+IHT9Ty8eEv2bq/AxsXF8LnP8mSGFXv YTCnfiGEEEIIIYQQdw+Lrq6urhJtOQFqb6a9vJHt76y4020SQggh7hlLXt/Ejje+S4Da2+wyXb3/ 6fcP0cui938Wd7YhQggh7jBJQQohhBB3ka7uaLarO47tMvmvALDAovt4WABdWGAhUa0QQty3JKAV Qggh7hJdXV1cqWu6080YMxqbmqATunrC/i4J/IUQ4l5iTu8mCWiFEEKIu0BXF71ZWTcXhzvbmDGg prYRV2cnLHr7HUumVggh7iVV1VfMWu/mPLZHCCGEENetp1txl3QtHpWurr7srIUcPSGEuC9dk6Fd 8vqmO9EOIYQQ4v7V1T9DK8zVRZfptFBdyCxRQghxn+kNaEu05ex447t3si1CCCHEfU3GgI5OF2DR MyW09DcWQoj7Um9AO5rHCQghhBDCfCXa8hHWkO6y16OrCywsjGnZrt7ZjyWwFUKI+4mMoRVCCCHu ChLSjpaFyTGz6N/5WAghxH1CAlohhBDibiEx7ajI4RJCCCGP7RFCCCHEGGZh/JH0rBBC3JckoBVC CCHuJ21X2fOnz9h6vIKLbVZMDA5lRdJsHnG70w0TQgghRk+6HAshhBD3DQNffrSLDVc0/NvPlnHi v57jVc8Kfvqr4xTe6aYJIYQQ10ECWmEGHZnJISxMKxtieT5bEiIJCQkhRKMh8rWjw9SVw7r4SOJe O4DuJrYwPzWeyNcO3MQax9b2hRDCLPXF/O6UCy89H8WDTtZgo+Khp6KZ01LElxXGVRpKcnj1rd8w c/mvSNjwGXtq2o0LKr7g2Td28m/vf0TCa79i3lv/y85v2gEDGe//imf39dzVm9j5i1+x4kvDndhD IYQQ95lRBLTVHEhdRkJ0CBpNCNHxyazeld8blOh2JaPRaAb8RNIb25SlsTAkmcwh/r6NWB4w5Gey Ljme6JAQQkLiWLgyjRwdVO9KIuSassafkIQtFF/PkRmtsjQWDrL9hC3GrR9dHY1GE2IM+kJCiIxb yMq0HJOgru/4hoREEp+cyt7e+DGf1HgN0auP0nv48lOJ10QzbOx424SyLPMUBQUFpL/gi2LYdVWE hoQSGuo+wnpCCCFuuooKLqrcmeJk8prNRH729nMkewHNxbz9qzwcnnqa/Zt/wIbIq2z4VXZv9ra1 3oDPgqfJfPef+fXsJv77dzlcQMHMB725fPwilwGateyvcOfxMLnLCyGEuPXMHkNblr6KVVm+rE87 SLxGQXX+QdJ3ZVOcEEpU998s28jVZO1Kxu86GzNceUN+GklJW1AtSyV9Ywx+lHEgPZ2CMgNRC9Mp WGhcT7crmej0uOtvR/EWlqVHs2VN1HXsQByp2WksVA2+2PeFdA5216vLT2dV8jLWBRzk3dmQsy6J VQcjWZ+WTZx7GUe3pJCSpEOVuZ4YFYAvilOZ5BhiiFFAfmY2Brex+GFBw8L301l4p5shhBD3ozYD Bhs3bIdY3HAmny+9ItkVqUIBBM99mDn7ssj45mGCbcDWyZs5E4wfHSbFRfFgRg4n6qezKCyI4D/l 82V9OI8XFZM3IYifOg2xESGEEOImMjtDW5ZfDCEJxIe6o1Co8ItKIGV9cm8we2vpyHp3I9UJG9my bDYalQKFSsO8ZWtICr3JDdBVU2249d2kVKEJJGh0lJRUgy6LX+8ykLBuPQmhKlTuocxbk0qSYhfv Z1Z3l/AjMqCAzBwDkE9mti+RoeZuTUdmciTJqemsTl7IwoXxxMUt5LVdxd0Z36Osjo5jdY5Jkep0 kkKS2GXaL7jsIKnLEowZ8mjT8mZsf1lkb3Y6RGPMNg9UfTSN15LiiY4MISQyjqTXdpF/nf2SDflb SIpbSGrOWdIWhpDcsyP5u1iXdrQ7M57D6rh4UvONbczftZqk+Diio6OJTljGlqPVJjWOtHyo7d/M jtVCCHGDbBQo2pppHWJxg64ZVCr65oeyZ6KqiSv1g9c13s5AQwvgpGbehGr2n9GRd6qCiZETkTmm hBBC3A5mB7RRScloDqaQtDqdA8W3+UO64Sh7c1TELYy5Rd1UDRxNTSIhaSXr0k9RVrCL1NeSWLhw NXtvya4aKDuwhfR8dyIj/SD/KDlEEt/v24FQ4uPcyT+a0xs0Rs2LpCAzB0N+JtkB84gxM5zs2WZO dhkJqbvYtSuLrC3xlKxbRVq++TXkHzyK38tbOFhwiqzUEE6tNre8ioQtxi7JBQUFpD177cccw9HV JC3bhSJpI5nZBRQcTOMFjY7q6/huwZCfRvKyTEJS00iJeoDISHfyc4wNzc/cRWb6LnIMQFkBBYYQ ojVQlr6M5C06krZkkZ2dTVZqNAdTVpHe3e17pOVDb3+IdL0QQtwJXl5M1FWTZxqgtl3k39/4mLQK cFQpQKejpndhExd19owfLNva3MTlZgWO4wDsmfOgO3lfHWXXBRWPR8i9TwghxO1hdkCrCF3GrqyN LFRksX5hNHFJr5Ge0z9D1XpqPbNNxo8OloUbzpDlDQ00GFT43bK/jwpiUtLZlboQw6lT1JzKpjo+ lfRd65k3mm22HiQlymT87sK0fuN3L/1uUfeyUOLXnCJyfRopUYBBh0HljmpAtK5yV2FoaOgOWw0Q mUB0yS7Sdp0iZGEkilEGe5qEJGLcu/c4NImkqGIyD5o/wjg0KYWkKD8UKPCbvYrkUZYfmo7MX++C pFTWJ4TirgBUGuYtS2a2+yhryk8jOTmdgHXprDH21SY0KhRDQQFlVFNQ4kZC9CWyi8FQfJRiTQyh ihzSthQTvfpdEjTGk6AKTeLl6GIyD1YDIy0ffvtCCHHXcNLwQlgtWz/MIa++Hdp0fJWRzf5xAczx AsewEB6sOMXWr5uAdi4cyGa/tYbECcbirfXl7ClsAgzk7f6KPC8N07qDXbcwDRMLC9g/LoCZkp4V Qghxm4zuObTuMSStiSEppZqju9axJimJ4vRM1nRnFm/ZGFqFG46KaspudWK4OptTqpfZ+Nopthws wzDPb3QZ4RHH0O7k4Joo8lPjSTqVQHKCxli/SoVCV43OAKYb1JXpUDi6mbwURULkGpKyoklLUVEy +j00ocLNUYGu+noPqju+bjdS3lQZxWWgeVZzQ7UYCn5N8rJqDCodBQVlGGaHogAUkdFoirPJ1wVw 1BBFclQ260+VUVxWgHvIMtwNZVyq1pGzJoF40xNuAPdQHRiqh1+O+7DbF0KIu4eCh15YyL98lMW/ /ftBytvsmBgcyv/74XQmAdgF89Mf6vjp737PzF+B44RgXn0lmuCe4nbWlO/Zxbz3dRjGq/mXf55i LAfgpuHxCV/QGDSx7zUhhBDiFhtdQNtD4U5M0nqWZUWTll0GUTcWiIy8vSjmRRlI3XUUQ9St6nZc TNq7BSRtTCPBrxqWLWNjTnpvsH4zhS5bTVx8Cql7E3h/ngo0cUSxhswcA7NjeraXT1Z2NVHLQlHQ lwUMTXqNVZF+RCm4wYC2mIISA34xfkAZKAyMqgdzv/J9jK0fbT9hdzTukHWqGOYNPzDYUHaUo2Xu xMRorrkOWot1RKbtYo1fFskLU0iN3mU8f36RhKjSyc7MpiYgHk2kATZmc6qhmpBnNaAw4OuuwnFd Ju/OHux860ZYPsL2hRDibmLjSuILT5M4xGLHgOlsWDt90GW2Nu68sPJRpgy61ApbGxUzp4+ya40Q QghxA8zsclzMloVxJKVmklOmw2DQUXxgC+k53WNAbzkV8a8twz1zFcu2HKC42oChupi965JJTrtZ D+XRkLxlC0l+AO4kbEwj5VYFI6rZpKzScPDdjcaxnKrZrExyJ2vNajLzq9FV57N3dQrpLOTlhAEf DPxmkzzv+r5AKM5MY2+xAQzVHN2yhi3Vs3khwR3wI9RPR/bBfGMoaihm17o0coYpn5O2nrTe8n3c NX7oCg6SowMM1WaOgXUn/uUEDOkprM4sNk7YZKjmaHoqaTmmFeSzMfk5fvBcEusGNg5wjH/N2M3X byGp6wLIXLWaAzoADTGh1WTvOoVjVCgKTSQBl9LZVawhKlQBRJG8TMPB9a+xq2cWKkM1+XuPYhwi O9LykbYvhBD3uDYDl7/O5n/q+7onCyGEELeDZcuu/zRjNQ3JG1cTV5bGqoRoQkOjSVpfQMj6NNbE 9AV9A8fAajQaktJNxhi2HmRVaP/lpuNshyuvCF1GWnoKvtnrSYoLJTQ+mV9Xx7Fy4c3LDitMB7Eq VLe0u6jfwtUsJJ316cWAgtCUNLYsbGBLchxRcUm8eymO1LT1xNzERvgFuHNwTTyR0fGkZLmRkpba PUbYnYWrU9BkJRMXl8DC5C0Ykl9jobvpxlXExGt6y6/KdGRVb/k+7gtfY5V7FsnRIUTGJbPlqHkR nWr2etI3xlGzJZm47lmU38/xI1Jj2gZ3IkN8sXULJWqwBIDJqu7z1pManU3K6r1UoyIy2o+CUwai IhVAKDHu+ZwyhNDzfYxf0hbSlqnYtSqeyJBIIuOSePfgJWM3cDOWD799IYS4t13Yt5OFH1Yz57kH +7onCyGEELeBRcP7y7uqnnyTALX3nW6LuGV0ZCZHkxaXxa7k25FRF0IIYapEWz7s39muri46u7ro 7OiivrEFNxeH29i6sammthErK0ssLSyxsLDAwhIsgJ7/CiGEGNuqqq+YFaOaPcuxEEIIIcTdp8v4 0/0/IYQQ9xcJaIUQQoi7hSQXR0UOlxBCiOub5ViMMSoS0gpIuNPNEEIIMQwLJMU4Ol1Y9Aa1Xd3H T4JcIYS4v0hAK4QQQtxxFliYBLM1tY13sC1jh4UF9I2c7UJytkIIcf+RgFYIIYS4S1hYWNDc3IyT ypGurp58bRd0dRn/fT8ncC26w1ULC+jOzPbGsxYSyAohxP1KAlohhBDiTusO1iyAri7jCxYW3eFs l0VfvHafx209nYotLPrysj3HzQLous+PjxBC3I8koBVCCCHusN5ADaCrCwuL7t+76A5sLXoDuPuX McDvPQ69XwJYdC+1uK+PjhBC3K8koBVCCCHuAj1Z2K4uY9fj7t/oH8RKyNbLoi+ANRlKK4QQ4j4j Aa0QQghxl7CwsKDLdKZeC4vuzGP34Nn7OWjrMs3E9mVru3oH1wohhLgfSUArhBBC3FW66DL2OQaM s/dKvGaqL2vdJbGsEELc98wPaJsucexIIbnFl3Ca+z0WB/ZftnfPKSo7rGhvt8J3ZizzJo67wTor +GzPEYp0gLUrM+bFMnJxg5sAACAASURBVNXDasQqa45/yrbjrTgoul9QhbJocSheN1CnEEIIcbt0 dQ3sQishG9B7GORoCCGEMGV+QGvlgG9wMI21FVzpt6CD4sPHqA/7Dt8LtgV9KZ/88RTaF2aivu46 Wyncf4QrYfNZFjyO9qoT/GHvKXyWTDMGpsMwNHWgnvskzwbbDlhy/XUKIYQQQgghhLj7WJq9ptIJ 3wm++Npdu8gaaG/v6F5vHIqBYXJVHtt++TE7ClvMq7O9gvwKd2ZojFlea49QpipKya8auU69oQMH xcBg1sw6hRBCCCGEEEKMGTdhDK0V6tgZnPnkb6SVTUJNPcQMyM52tNLe3oG+J+gdSVMjdXau2BtK +eTDE9h/+0mCVR2U6ACP4ersoN3QyqXjWfzheCvtOBA8fQYPTRxnXp1CCCGEuE+0U7v9MOdy3Zmc GobLoOs0cXnDccq07cZfla74vToVH8+h62zMyOW81pXApRNxUN6ShgshhDBxEwLaDi7lF2IInsk8 rxYKcy5xufASNYGBuPWs4j2NZSunjbJhHaBwIjQ8GKVqkBUGrdMKzez5jFe44qaE9qp8/ueTw9gv iSfCnDqFEEKIMaOebzbkUKWYSOiKiRj7HzVxedNxyg0TCX3V+FpjxnEKs+rpwBorJVh5uuIyXY1f nBPGWST0VG46iraoHSulNVaeKlymT8Q7zpVB+jvRevAkeTt1qJbEMHlGX8TWcSyXU9urGPyra2vc lsYSEG5NR+4ZTm0rv2Y9q6BAk/24HdrR7cjl/KGJeK4Nw2XQ4LOJ2h35lBS1g6GDTlywfXGYgFZ/ kZPPH6DMYEWj+hViE2/u3Ju5O/bx7fpvUbZ0yIj6lrop29fXc3lnMVW5OvB3xzsxGE9133Ea6fqw NfM6E0LcP278HV9fyGcXvUhc7Isz4DvBH89PP+HQxUksmHidEy7ZO+DQXEoTTgRPdwJaON1ki5MZ Qai1k2tvIG3tMYkw13wu6SDC/frrFEIIIe4+zVRty6FQaUWASUBb9UEOhVgR0B3QNmWdpPCDZiwV xr/JnQZjKGD/3AKe2DoRW5qp2Z7D+TywVECnAeAANtMfJO4vs/B0Nt1mE2VvH6bwUAeWWnfUfw3r DXpbiwo590EZnYO21YqmWTHdAW0hhR9or10lSEHgbQ1ozeFB2NFXCANqUj5g7+YRVld6E7hUTWuh OwEzJKi6hraQw/P/Tmlp30v5rx/G450FPLLCAysY8frAzOtMCHH/uPF3vLUt1k0VVOrBWQnQisFg hcLKJJgtP8GWHYU4zX2SZ8MczKjTi1CvE3yZ34g63AF9eR7Hm31JMO0aPFid+gpOF9sSHOaKEmiv usAZnStTXcysUwghhLgnuTPlyBLCgoG6Ks4+80dOfnQE7bqJTO5JtnlM4ZELj+FZd5Vv3t7D0c1f 8cUqbxI+DOzL1FYWU3KsA3t/FU2HCimrDCOgu/y4JYt5Zonx363b/8zOl8vw++MrxA2apbQaZtlI jF2FS/TBBM9oojyrHF2dPR6LQ5kQ3pNmreebNTlUeWqYsmKCsf36cs69VUjT9HAiF7v2q6+16CIl Wd+gq7NnfL96zGtPzbbDlOR2d0tGhSrYHivF4Ou2HLtI+bFadJVgH6dBHT94JvxeVLv5MKWlCrw3 LuLhJa5QWU7JW8fRBdvTPwUyzPUxqutMCHE/MPPd38jpTz/jyNUO2pvb0Fd8wpbDVgTM/Q7zJgTy ROxV/veTv/GltRXW7aAMjCVxgklxK7C2tjL+w6w6bQmeM5NLe7LYdLIDrN15aF5s/9mIB6vTehzK 6hP8z+/qMQBYOxE+L5YwJYAZdQohhBD3OmdXVP4KoIPWOmBg71FnVyakPo7u4IeczsilvC4QdXeW tiWjkBqDO1PW+nH+hVxKspoIWGJ/m3fA2FW48Hg+JfUG8FdhVa+j8L3j+P9xCbGJ9oCO8u05nPdU EdwT0NZXo92cQ+1zE/sHtAYtx2eaZAT71WNee5qy8inJ6g5oDR104o79i1MHZLevUvL0JxzL1PVl F987TN5j85j31zDM+Lr/GvrSIha8X8H0H0bgmX6Qfzwyn09ibaC0lNfP2vFv89xw5iqrfpKD08q5 rPVvI/dwPq//rZKi5k5wcmF5UgQ/fqAngB9p+VDbn8lajc2I7e3XTVhpja16Ag98OGGo1YUQwixm BrQORDz5JBFDLHUOnMGzgUMsBPCYxtJXBo53Hb5O7L149KkFPDqaOq2dCJ7zKMHXW6cQQghxT9JR tmE/emdo1ZZRltmM5ZSp+A35B9MVzxl2kFdLTSndAW09ZdvL6JwSi1+iGr1/Due2X6RlSdh1dBPu oHbbfo5ldf+qdEX9xsAAcAT1Cvz++BwzE52gspCDUX+n9K2T1CbOGmKCp6HY4f3Ot5m+dALjio7z jzmHR1mPEvXHr/ROhlm58tfs+2CQ5m7aw7FMHeMWzSNuYxguyiZqdx6nBL/rDGaLWfD+JcKXxrJW Y8MxjYL3iush1o3c7FJ2nrTjsUfciK+vJ6/NiX/zBu3n2SzYq+SdlXNZ5G1FXWkxz77/FU7/GsuL biMvH2775nBbHot/xh5KV33Enzf4oV4eReiSQJyuOe834foQQtw3zH9sjxBCCCHGKANXPsrh3LZc yo614/LcbB7763Schilhpez+zlvf/YK2mJLjYEkV59/Kp0lpReexfMoqr69FTf/I4/wH3T+b86kZ bT0Kd3ziu/fAU8OkWVZQVHEd9XgTsHQCDkqwCp/CA9dbz7DqKd9ZQaeThqkbw3BxBpT2uCyZw7Ql w52FwdWVFrNgw0WCno/lnQeMwWS4xglDaT1a9OSWK1n0QDOHykFffoUi7/GE21zll39rZFZSFIu8 jb3bnP0n8uMHGtmZpwdGWj789s2iDiY2Zwlz3gnFjXIuvJ7B30K3cyyr6ZpVb/j6EELcN2TAgRBC CDEmDTHxoh5QDvzG2p2Ik91jaM2iR6dtAtyx7+6S3JhRyBWAvCIK83rWK0eb0cTkpaPtdnwjY2hv JWssb8mjdgzo6wGFHeNuMMuoLz3HU+8b0Nu1kVfajH6KE0pAqXEjqLyGvGYHDre58IqmhteLmymq qcfDfzKebc1o69s4/uF+pprGoG3g6d8GbYbhl6McdvtmU7ris+JxfFbMpj7jOMdf/orzLx1GXfA4 nr0V3a3XhxDibiR3CiGEEGJMskelBo6VUaMFFzWgNWYWLWe53tBswR25eZzN6oApgXirwdjduAKC HuSJnJ6uuN9wbNJOzm8vpnFp+HV1m70x7b3BO3VllB3rAA8XVJ5A9yOKqG+irWefKq+iH6qeHtfU 08dKYQV00GG4nra6Mj5IAZlaSg7qcYvridyaqM0Fl/D+Xwjoa2o4VKNg1gOO1wSLhvI2pr8axztu 5SxYd5J/fyCOdzRW4ObCFLuLHMq+QqW3F0GaDvhLDceb9YQ/4gA2HaidbHB+fg5bpgz2ZUjbCMtH 2L4ZGrf/g0LFdCIXO2GFEqfEqag3f0XVsSb0PedSCCFGSQJaIYQQYkyyx+9FNacOaTkx538oj1PR crCYKwY7/JdqRj9zbn0F51L2o62spjyjjCZcCE6dYuyWXFhESR4oXww0GVfqjXecgvM7z1CmDecB 9ZA1D2LAGEnASjmBwNTgYbtB92PQcuSRP3N5lj36Q4WUV1kx/p2p3XNcueAxQ0HhznxOpNij9qzm 3IZCGhkkr23QcmzmUPX0sQ93xYZiSlbugfB2dJUTmPpxuJnttWbCm9MZn3WY8//nI3SLNLg4G6jN KKRKr2FWzneY0Ju5reftDV/wn+UKfrBmPhs1/Wtymhra3c3Xny3PV/HQr07z2NqpxNs5Mstfz3uH rxI0LxildydBNfl8VO/IQn8rwJVXvuPAo+k5bP9hBEv8baBNT25eI05T3VCPuHyk7Y9wCPTlFG7I p7AoH+0GPzzC7eksLePyIbB5LAyPfpnrm3B9CCHuGxLQCiGEEGPUuMXf5pHKfZzYXMblndVY+bsz aeNcpiVeR6rLUE3p5mosnexQzZpCzLpYArofX1OfWUgdCiYlupsUsMYzwQvLnVq0GfU8sGJ0oUbT P/I4b/qCwoDHqAIWFS7+zVTtLKNF4Yr/O3OZsaJn9mIlE1LnEVx5gHObD1Dj4Y7fG3Px3L6XkoHV TJ9CqLqCwu1aWp3cB9TTx3bxbGYcauLE9nwKc+1wnuVB22iyiuHTeWS/HafW5FC2M4cqFNiHBzN1 baxJMAugYIb/OBTNjkwf7GCYdAf2nBrBlpOfs+zDcr78oTfTH7AjL72T5zRWgBOznOr5bY0/v+ie 0En9SDSf2OTz+q/28a81HWCnZPrUyfxsirHekZaPtP2BXwL0o/Rm2ufP4PL2Yc5mVFD2kQE8XPB8 cR6Ra4Ov6VFw49eHEOJ+YdHw/vKuqiffvNPtEEIIIe5pAWpvs9Yr0Zbj4T7+FrdmLNOj/aetfHFo Ig9ffhK1dFMVQoh7UlX1FbP+dvZmaFUqx1vaICGEEOJ+pdM13OkmCCGEEPckeWyPEEIIIYQQQogx ScbQCiGEEGIMUaL+60pGNQeVEEKIe5ZkaIUQQgghhBBCjEkS0AohhBBCCCGEGJMkoBVCCCGEEEII MSZJQCuEEEIIIYQQYkySgFYIIYQQQgghxJgkAa0QQgghhBBCiDFJAlohhBBCiNuho4XWjjvdiLGk jdbWtjvdCCHEXU6eQyuEEEIIo7rfsyDgDyQUZPGip+mCbF6PSiRz+h/4YuvjON+p9vVzmvdi4nm7 SA8GA8rn9lK2dfadbtTQOso5+9kOygO+xyMal1uzjXvt/LWc51jWIcZFf49pnuPuTDOH1MZn/7Sb nfFz+eUKuzvdGDGsq2yKOsLh6Q+ybasnDrd8e01c3nCcciYS+upExg1ctuk45WgIXaGiZkMOVYqJ hK7oWe/ash25Zzi1rZyB34VZBQX2lmvMOERhloEOrLFSgpWnK+PjNUwIt+9d35x6xioJaIUQQggx AmemhEegDfdCeaeb0iuCHx+t4sfAsZQgnq27zZvX/olVK39DKaD3/Ge2bP0uaoC60+zM1PPYkmiT wLGFb77cQYnbAh6/VcHssMbo+RsXwszZdXz+2SeUzE8iYCx/4r5jKlk7qYTYgpk8evec/NvMhsBw JyrCldjepi3qs3IozG3Ce/lExvU77tVo385BO92dKSusqdqWQ6HSioDegFJHec9rvQFtIYUfaK/d SJCCwO5yTVn5FH7QjKXCCoBOQwe8dZjxaxfx2KseWJlZz1glAa0QQgghRhDMkg+zWHKnm3EXObb5 XSqXZvFJopLM52fxy2Pf5Z2gbN56fj2GFb9hkcm6HZVZnNZF8fCsCVjdkdaO3fNn5TSTmLAC9n1V gN+skNsWkNwz6tporL/TjbjTHJn/YSzzb9v27LEPsoNDOnSV4KO8yNkN1dgvn84EZRNN9TAu2HWU 17IVfn98hbjE4UI3LyJznuUBNVB5kSNzPuHChhxqXn2cvg4b5tQz9sgYWiGEEGIsKnyXh2KWsOrp WYRNCmLBpj/x3tPTCZs0hWUZFd0r1ZG7fQVPRAWhmeSPJmYR7x2s6KtDX8jOlfFMnaTCbdJ0Xvjg GH2ffevY+bQHbq4q44+9As3KA/3bUJnNBysTeSjEuJ5fVCLvHTQ3VXqAVZOCWHXMtL6tPOEaz/be KvawbNIidlYWsjMlkYeiggib5M8zO25GOvYiH/xT93Ex/QmJ573CkUsrFWCo1AN11NUpUSgvkvn2 nwhP3cE78V4ma7ZQVnAW+wcepF9uVs6f2Rw0MxlfeYSylgEL6rL54PlZhE3yRxMSxNQ5iazafpr+ tVeQ+XwQfpMWsX2Q5NRIy68eLOYX8/fxlE8G83z28qOXSjlvsgFb9Bxbc4Tvdy9P2XCVxt7jcZVP Vx5hacjfmOeaQULUEdIPmo4JruQXk7L5rLKBz1KOsDRqL89M2s3qHW1mlh+mffpy1k76GwmhORwz 1PCLgL+R4PM3Enx2szajp9NpG+e3n+ZHUXt5atJunorJJv2g3vz2DafyAj/yOczuStMXOzj20m6W bmi48eOjvcCPfI4MqB/yV+7l+2vqgTY+e9pY7zzXDObZ/5WnVtaYrGnsMr52Rz27Vx7hlZh9PDVp X//z131ul4bs5SmfvzLHvvsnJI/8EXZfFe4K6NBpoTXrJKc2HyY/ox4qr6IH7INUIx/DG+Hpgosn oDfQqh9x7THv3grPhRBCiPtJ0Wmc3j/OCf1PCHvmTzyXc5zPMuIJ27aXXyR+n/pti1mw2ZN3/pjL omAldbn/zbNPfw+n3Vm8qNZzKCWRHx1LJG1/BrM8Kzi+7V94obdyZxZ9XNWbaTy00t9kmVFd4TGK wlfwu7UZBDnrKdq2mCee/wlTCrYRf7O6Nxpyee/ppQQt3cTfUyNu4vjPibz41yJevM7S4a9u4rGU FSzIMOAZ/x/8InwizqkbBlmzgss1zng/OEiHPjl/5rGayASXT9DWtBEwwab35dwNS/n3yn/hiwsv oQb02gNk5ioHdKuu5FiulvoqPce1sEQ9sPKhl7cePM2PnrlK5MYH2ZbohKu+gcMfVHHV0LfO+c35 HF47hV+WONB66Gt+9PRpPk14hKRgaCyspTQ8gLfWzsTfuYPSbcf40fN5BBZMZUZPIw31pD+dg//S CP4r1anf+M6Ryg/bPmdv3rrwHdAW80pUFYtKru1yXLEtm5TNSlb8cS6PBlvRmFvM6qe/wmF3LE+q R27fsDz9WDSrkPQdzczvGWNcV86nWQ48uc7RrP0bfvv+JMUXsnV7A/NfNdaHvpJPs5Q8udsJgEc/ /g6Pdq99auVu1l7TyDYOv3WWyI8f5Jfv20BhMa/M7Dt/V3fksDbLgdQjMwlVNrP76cN8ljiT9Usc R8yujgtSYUM5TaX1VGZU0AnUZpXRqNbRiB0eQfaArvu4VHBuw3GMo13rqamHa8cGdFC7bT/Hsrp/ VbqifmMqnv3eUDq0P99Pk3M7Lblayo6DTUIwbsrR1jP2SEArhBBCjFXKaGbNUKIsVOMZFMx0T/D0 dIL6eurJ5pcbCpn1fgaLgo2faJzD/5kfz3qX97IqeHHRQTbvhOf+soF4NcBEZi1ZTPhbfzB7885x /8I7cQB66rSF1KnDUdd/yqEiiA+/WTtZgXJRBr9bEnyzKrw5nKNZvnUny3t+137K6ym/oQhPEt78 D14M7/6E2FpHU4czfoNFAnL+zDQOpYOSlsZGMMlze4YHo9iZwa6MaJ6Lj8BTPZtF1wSsEbzxl73M KPIiNm6wuoda3sZnG0rhxTh+vNgYIKF0JLYneOrmtTSCHy/ufi1+IrHqMs6XAsHgEKdhRRxAB43a RhrVTnjVl3OqCGb0Hl8Dtotm8taS/vXCSOXNa9/QrrJzQyOR78/k0WBjR3iH8IkkzTpHepaeJ5f2 RpRDtm94NsxY7s2mVRc5vyKUQODqzovkz5jIv3qas38jHR8rZrzqz6anSzi1PIJIJTRmfcOxoIm8 dM01MLTA5VN4Mrz7S5JgNyLVZ3vPX8WhBlzjQwl1BrAjdrEjmzIaYakZx0Ltjop8mnKLKDtmwFJh ReehYrThTXSiwsW0jVVlnH+rrH95T67R9I88zvf+5o79iwMD0WaufJTDFQCscH5uHg+/H3zN2NiR 6xl7JKAVQggh7kX6SrSVdRxfOZ2ppt/Q68EzvB7qKynVB5MQdAPbqMxm85rVfHBcjzo8ginhelAa MIxcchTUxMbdimD2Ih/80zzezh3QH08ZzPK/ZPFjszZZR9bKpeQt3YT/z9fBq4f4RP0nFjz9LtP3 /5xwoGdK0VGPnZXz189gx89z8U6+VP+ezdtWsyClEILm8dyrP+HFuIn9ElxK9WwShglyBl/eTGkp +C8dPidpqzBtmSUOis6+Lp6VV9m5Jp9Pj3fiFe5EYHgHKDto7VeDHZFxQwRIw5Y3r31D0huoqGwj f+V+vj/g+nINb6MvRThM+0ZgGzeRR8nm04PB/DjOwGfbm5nxpndflvVGj094AElB+9mZEUrkYji8 7SqRSyNwva7WwsDz5z/LicYNpeS/OoVQZTOHd9TjH+9g3thXtSsqJ9BmnKG1SsXkd9RoXy/iQqYV OE3E3vR6C4pi7u7pGDshV5M35xOTgLOHeWNop+Y/i1/WDjJXldHp6Y7DNZnee3MM7b21N0IIIYQw Unqi9nTG+f3jbBms/2hdNp5UUF8P19cPtILtLyXyUXAGn+X0zOh7gGWbss1tICj1cBPGdxn3brQV 3ViXY+P4usX8P6f1/D28kre1amaFK0EZwRT9Xkr1EK4EbB1Q0khTC4xqGlE5fybaaGnRM87z2uPg OeP7rJ3xfdaiR5v1JsnPzKP0L0W8M6NvHb32AIe0XsyKCx50lufBlyvw94TDxxoh0ek69krP7peO sDt4Jr/Mce0O4mr4xabam1TezPYpLbGlwxik9YvyFXh52uDw/hz+Nf5WTVXmxJMvKnnlgypecq7l 03pvk23d6PEBUPLoCg9+t6GMihmwu8iNF+JtRi5mJocZ3oRyka3PHKRVb4nrrCjeWmFucO+Ciz9c yKtF7xSK95KJtLydR2kRMMWd/iNorbD1tO+d5fhGz4bD0tk8sPkj8jcfoGTpYiaPImM9VsmkUEII IcQ9KZpXXg0mK2Up23O7Z7HRV5CbcQAtgPM8Fs7S8sGGA92T6OjJ3bmDXLPr11NfD57h6u5gqI7c bf/NoXpz83tqwtV1HMo6bQxl9IVsT/lvjpu9/T6eQWrqc/dyrA7QV1B5GyZBqcxYyrLji9myLhol ngR5VlKkBeoKKcITj57gwcoLH9caKmvMmEinHzl/vTrKKK91w8PN9BuBCjLXrOC9rMLu/VfiGRSN h2JgaHyat//PPJ56Ip7XjzGIoZYriX3Vl9YPTvLejgbjREF6Pae25bPz2MAneQ6mk8Z6cA236w7W 2ji/rZhT9eaUNae8me3zdMLfs57PdjYYM5/6Nq7WAbiy6FUHjqXksDu3+9rU6zmfUYPJtGM3zGtJ AIEHL7J1Uzm2SyYSavb+mcc2fjJP1pWw9a1vuJqoIfImPpro/LZzVMRHkLo7jl/uj2X9Ok+8Ri7W zR5VsAIAy+kTcXP2w2e6MVS1DFZdxyNyuse+rvxH78+JlEIGn8Dag9C1QSgNZeS9dX5Axns09Ywd kqEVQggh7lHqpTv4RLma158P51+1enDyZHria/wsHlB6sWTrDqpeWsHDIUo8PZ0JSpzHdM+9ZtY+ kedSX+PQynimbnPG08mToMTvkhBuxhTBAHjxXOrPyXo+kbCdnqjVETy39uc8d+w3o95PzyXreSPj ezwV8BtwCua5rVm8E39rB4V5xv8H/zvLq3uomxeL1n2XF1bF84ReSdC639CXIHTEb7IfeWdP0TJh +qg+yMr5M2q9fIRyhyim9Otd68X0xBkc2rCUh1/SGoNYpZr4N//Az2b0q50Z4WoUdcYxyoNsfcjl DvER/NeHhWxac4RnXjbQqlQQmjCZlxZZAZ0j7JUd81Mnc2rlF3x/mw2uTgr8E32JDW8coZz55Ydv Xw9XXvr1JNa+fJCEFHDwtCPyzWjeWmKH19JoUpX5bHp+H5u0HeCkJDRxMi/FM8ikRNfJ2ZtF8V+T stOBHxeYZjdv9Pj0cGT+CjueeVnPCyevJ5M+tMDFE2DOQRI297xiiYPaiRlvRPCvi0fK1FpjH66C ndW4xHthixKPeHf4RwUO4a7XlYXtP/YVUBjwSA1msL22TYxlyqxiju88TN7yiUyb0RfyjaaescKi 4f3lXVVPvolKdX3944UQQggxPJ2ugQC1t1nrlmjL8XAff4tbJG6vas5l/YGygGQe0biMvLro01LA 4azPcYj9ZyJdb153UnHvaMzI5vubvdm22/8Gxs8O1Myn87+idO3DrJjRE352ULH9K5b+3I7Ugikm 2WZxq1RVXzHrb6d0ORZCCCHEzVf4Lg/ZK3Ac5CcsxdxxmvcKdybHPoHNmf/h2OWGO90Y89wN56/1 AicOZNEZ9qwEs2JQrdoy3kupJ/YN35sYzALoOa9to1VvkonXGzh/rBGHWR7439RtiRslGVohhBDi FpMMrQCgpZyaDjfcHCQ4M08DtdXtuLhLVlsMVMN7IUfYrXfg0XUP8mMzng07Wo0Hi3jvrW/IrwcH hSVgQ+Diybyw3BOvmzhWVwzN3AytjKEVQgghhLgdxnnjdqfbMKY44uJ+p9sg7k7/v717ja3yvg84 /vXt+IDx8QWwMTiYmIJnmIGAAmVkphKkmiKSqCPptC1SmjBlUZlYF6lRtKx9MaatSqVujRop6xp1 U6Wua5iUaEiVYHTYpIUFYW4BxyE4OJiLj6/4fjk+7AVmJC4MDMOHv/l+3iD+z+Pn+R2/Of76+et4 Fi/VP85Ld/EOM6oX8+29d/J3sTRZ3HIsSZIkSQqSQStJkiRJCpJBK0mSJEkKkkErSZIkSQqSQStJ kiRJCpJBK0mSJEkKkkErSVLwEvT+Rx1HfnCG3sGbnDoYp/HlvRx6u2NSJpMk6W7y79BKkhS6wTPU PVtD81AGvWVf55HH/4+398FWmt44TMtTpax6unBy5us+xIk9++lLfHYxQsHDX2PRgsi1pZEWWg7X cuFcL9F5qyh9aBkzsiZnRElSmAxaSZJCFy3hC39SxnDDbMpX34Nv7fH9NNT+gvEPj4vmPn0taAeO cegfvk1DfGTs6A6O1DzFxm88xyyjVpJ0A/fgu54kSbq5BG0/eo/GY1cfe8aIVeSQkX2dU1su0PT2 x3S25BCrHmV0MscERgf6GCaH+S/8nEcqr39O5543aIjnUPqH32Pd6gJ6f7WdXTt28H7NRh7b+MDk DixJCoZBK0lSkBL07T5J4+6xoB0aJclscraspDj/2lmjx+r4r9+rIX5pbOF7V/659Q/ROMNbT36Z vz027vlqtIKta7NstwAACiFJREFU7+zmpYqbX2F0oJMkWYycfocPz42QUVhBUeUy8qZdPeMs5+ub oegpqn6rj/N1jcRW/jHle+poOHyI3o0PMON/r3aRnc9W82LtMr6zdwfPlN3yC5EkTUEGrSRJQYpS 9m9f52rPtWz7R/a8Nf6cS5za9h7xSwU8+LOvsPrxbHrfrmHv104ycMv3WcCWdz9iyx1MOjzQC3Rx Yc8/0ZIJyQSQu5KHt25nUTFAnM4OSP9COb07X2HfwT5yfuevqSoGzjXSB58J2hbeP9bEpfggB5sw aCXpPmfQSpI0VbU00XxwlPSND7Pq8TwygLxHS4kxkaC9czNWv8TvTmshVrWWvGnD9Nb9PXt+UsuR nTWUbVlPhGFIAFkRYmUVRA83UrCwiIzuLBhh3Bbp5fzlO7tY/dEcHqmexBchSbonGbSSJE1VgwmG gYziHCI3PflG7nzLMdPKeWB1+dh/IsxY+SSlO2tpiDfSx3oiFDAtF5LdnUTWbef31wG08GHtCMQK mDbuctGy9WzyyawkCYNWkqSpqzjGjGzo+qiDXhZc2bY7NNEPhbrTLcfDdNbth8r1FFwt045GOnsg vayYKAClFM3LoeHDWpo7HmNRIdCxn6ZzkFW1jNhvXHOQrsEo+dHbHkqSNEUYtJIkTVXRBVQ8E6P5 rQPUvgCLVvfR8qPDxJnIh0LdoY7/5NC/vkF82tuUVi0jh07ajtfSnijiwQ3VY09fZzB3w0ZiH7zL oR+8QltlEX3H99DOgyzZsIqMz13wIjv+YBnP7czn+V8c4/vVVq0k3c8m7f1MkiRNtkyKX/sK67bM ZmTnexx8+SR9FcuYv3gSRyh8jOpv/AUVZdBW9y4N7x9isPCLLHnhO6ytvPZRTxkLXuBLzz9JcVYj Tb+upXPaSpY8v50V88ZfMEpeXj7ZNLFvd8MkvhBJ0r0oref1rZfjT7xKLJab6lkkSZqSurt7KC8r uaVzG5suUDR75l2eKHzvb1vMK4t38cs/W5DqUSRJd0G8tf2W3jt9QitJkoIy2PBD/m53Bc8/vSDV o0iSUsyglSRJ4Wj5OS8+u4uN//ITnilO9TCSpFTzQ6EkSVI4ir/KPx/4aqqnkCTdI3xCK0mSJEkK kkErSZIkSQqSQStJkiRJCpJBK0mSJEkKkkErSZIkSQqSQStJkiRJCpJBK0mSJEkKkkErSZIkSQqS QStJkiRJCpJBK0mSJEkKkkErSZIkSQqSQStJkiRJCpJBK0mSJEkKkkErSZIkSQqSQStJkiRJClJm qgeQJEmfF29tT/UIkiQFwaCVJOkeUl5WkuoRJEkKhluOJUmSJElBMmglSZIkSUEyaCVJkiRJQTJo JUmSJElBMmglSZIkSUEyaCVJkiRJQTJoJUmSJElBMmglSZIkSUEyaCVJkiRJQTJoJUmSJElBykz1 AJIk3Q/Onz+f6hEkSZpyDFpJkibB3LlzUz2CJElTjluOJUmSJElBMmglSZIkSUEyaCVJkiRJQTJo JUmSJElBMmglSZIkSUEyaCVJkiRJQTJoJUmSJElBMmglSZIkSUEyaCVJkiRJQTJoJUmSJElBMmgl SZIkSUEyaCVJClGygyP76qhpuMTo+GP95/hVbR37Px1MxWSSJE0ag1aSpIANt7XRnvj8WteFTvpJ S81AkiRNosxUDyBJkm7XdApm9NHcNkLRnKwrS8kemtvSKMjLYmTsrJHuOCdOXaSz/zKRwhKWVhSR n5mk5/wnHPukm8FkBrlF81i6aCY56Tdah4G2s5w43cGlRBrRWBGVlXMoHPtJYqDtU46faqcnGaGg aDpDbRlUrJ1P4YTvn4rvoyQpVL5tSJIUrExmF+fSc6GLgbGV0Y422iMzmRsdW0h0UX8iTmZZBdXr lrAoPc7xpj4YbKP+k8vMX7WcDWsXUtDfTP3FkRuvD7dzoqGPvMqlbFhXwXxaqD/bf+Uew+3UN/SQ W/HbfGntYuanD9LPbd5fkqQJMGglSQpWkvT8QmYOt3GxHyBBa0sPuSUFREgCMNrVTnu0iIWzsslI z6JoXh50dNFDGpBgsH+EkcwcFi1fyvI5WXCj9cwYlQ8tpDyWCWQzqyCb4cHhsXt0cWl6EeWFWWSk ZzGrJMbVnp74/SVJunVuOZYkKVhJIJfSWUlOtPTz4LwBmrtzmF+RBZ2XARgeHCHRc45f7zt37csi MxmNzmZ55SgNZz/mvXrILZpDxcKZZN1oPT2DZHczRxt6GEgAiWGS+Vcul0iMkoxkXfeHignf/259 qyRJU5JBK0lSwJKkk18yk/TjbZzP6KevsISZmel0jh3PjGSSWTCfR6rGxWJiiJ7ps1i2fA4k+mmq P8UHzTmsnZvG8PXW81s50pSk4qGlFEVg4PyHHLg0do/MDNITIySAjHHzTfj+86NIknSr3HIsSVLo phcwN9JJfVOCopLcz0VlVn4heb0X+bhjhFFgqDtOQ3Mfw90XqDvaTHwYSM8gOz0NRmH0RuuJBAmA ZJKRwR4utg6RTMIokJFfQF5vnMaOEUaTI7Rd6GbwNu8vSdJE+IRWkqTgZTOnZBofn82hNDbud9WR Qqoqhzlx6iR7TyTJnJ5PecUsIjNKqSo5Q/3BwxxPphMtLGHpA1EyMm+0XkJF/ifUHzxKMpLL3MIc osOjV57KRgqprOjleMMH/DKZxczCCJHbvL8kSROR1vP61svxJ14lFstN9SySJE1J3d09lJeVpHqM ydP9Kfvq06ha8wD5qZ5FkjSlueVYkiTdmWQPDUfPcHEwCckhzp/tIpkfw1+VS5LuNrccS5KkO5Oe w9ziduoPH+VEIp1ofjFVC/N+4wOiJEn6/2bQSpKkO5RO7pwFrJ6zINWDSJLuM245liRJkiQFyaCV JEmSJAXJoJUkSZIkBcmglSRJkiQFyaCVJEmSJAXJoJUk6b50gL+qXkFlZSWVC1fwzZqJHpckKfUM WkmS7ktf5G9qj1Bfv5uXV2TfxnFJklLPoJUkSZIkBcmglSQpSM38ePNm3jxQw2svbubR6jWs2bSN nc1Xj+/ixco/4qet177i9JubqN5+OBXDSpJ0Vxi0kiQF6yRvfreWNdv/nd21tby5pp7t369hKNVj SZI0SQxaSZKCFePRbd9i/WyAbB6qXgGNjbTe7MskSZoiDFpJkqYKP7tJknSfMWglSZqiItlDDH12 /3F3ykaRJOmuMGglSZqSFrKk9DT/feTKBuShkz/luztPX+e82cybPcSR2sMMAd2t46v3ZsclSUod g1aSpClpIZu/uZnW1zZR/egmnvtxNn/65+uvsys5m/XbXqZ093OsqFzBpm/t5vSEjkuSlDppPa9v vRx/4lVisdxUzyJJ0pTU3d1DeVlJqseQJGnK8QmtJEmSJClIBq0kSZIkKUgGrSRJkiQpSAatJEmS JClIBq0kSZIkKUgGrSRJkiQpSAatJEmSJClIBq0kSZIkKUgGrSRJkiQpSP8DdbRTOMSWKHYAAAAA SUVORK5CYII= --000000000000f25acf058c148268-- --000000000000f25ad0058c148269 Content-Type: text/x-patch; charset="US-ASCII"; name="query_tool_automatic_mode_switch_v3.patch" Content-Disposition: attachment; filename="query_tool_automatic_mode_switch_v3.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jxalyahp1 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9rZXlib2FyZF9zaG9ydGN1dHMuanMg Yi93ZWIvcGdhZG1pbi9zdGF0aWMvanMva2V5Ym9hcmRfc2hvcnRjdXRzLmpzCmluZGV4IGM1NjVi ODYyLi41ZGQyMzg0YiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2tleWJvYXJk X3Nob3J0Y3V0cy5qcworKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMva2V5Ym9hcmRfc2hvcnRj dXRzLmpzCkBAIC0yMDUsNiArMjA1LDcgQEAgZnVuY3Rpb24ga2V5Ym9hcmRTaG9ydGN1dHNRdWVy eVRvb2woCiAgIGxldCB0b2dnbGVDYXNlS2V5cyA9IHNxbEVkaXRvckNvbnRyb2xsZXIucHJlZmVy ZW5jZXMudG9nZ2xlX2Nhc2U7CiAgIGxldCBjb21taXRLZXlzID0gc3FsRWRpdG9yQ29udHJvbGxl ci5wcmVmZXJlbmNlcy5jb21taXRfdHJhbnNhY3Rpb247CiAgIGxldCByb2xsYmFja0tleXMgPSBz cWxFZGl0b3JDb250cm9sbGVyLnByZWZlcmVuY2VzLnJvbGxiYWNrX3RyYW5zYWN0aW9uOworICBs ZXQgc2F2ZURhdGFLZXlzID0gc3FsRWRpdG9yQ29udHJvbGxlci5wcmVmZXJlbmNlcy5zYXZlX2Rh dGE7CiAKICAgaWYgKHRoaXMudmFsaWRhdGVTaG9ydGN1dEtleXMoZXhlY3V0ZUtleXMsIGV2ZW50 KSkgewogICAgIHRoaXMuX3N0b3BFdmVudFByb3BhZ2F0aW9uKGV2ZW50KTsKQEAgLTIzMyw2ICsy MzQsOSBAQCBmdW5jdGlvbiBrZXlib2FyZFNob3J0Y3V0c1F1ZXJ5VG9vbCgKICAgICAgIHRoaXMu X3N0b3BFdmVudFByb3BhZ2F0aW9uKGV2ZW50KTsKICAgICAgIHF1ZXJ5VG9vbEFjdGlvbnMuZXhl Y3V0ZVJvbGxiYWNrKHNxbEVkaXRvckNvbnRyb2xsZXIpOwogICAgIH0KKyAgfSBlbHNlIGlmICh0 aGlzLnZhbGlkYXRlU2hvcnRjdXRLZXlzKHNhdmVEYXRhS2V5cywgZXZlbnQpKSB7CisgICAgdGhp cy5fc3RvcEV2ZW50UHJvcGFnYXRpb24oZXZlbnQpOworICAgIHF1ZXJ5VG9vbEFjdGlvbnMuc2F2 ZURhdGFDaGFuZ2VzKHNxbEVkaXRvckNvbnRyb2xsZXIpOwogICB9IGVsc2UgaWYgKCgKICAgICAo dGhpcy5pc01hYygpICYmIGV2ZW50Lm1ldGFLZXkpIHx8CiAgICAgICghdGhpcy5pc01hYygpICYm IGV2ZW50LmN0cmxLZXkpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRp dG9yL2NhbGxfcmVuZGVyX2FmdGVyX3BvbGwuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3Fs ZWRpdG9yL2NhbGxfcmVuZGVyX2FmdGVyX3BvbGwuanMKaW5kZXggM2YzMmQ1NzEuLjUxYzIzMDJi IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL2NhbGxfcmVuZGVy X2FmdGVyX3BvbGwuanMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9jYWxs X3JlbmRlcl9hZnRlcl9wb2xsLmpzCkBAIC0zNyw3ICszNyw3IEBAIGV4cG9ydCBmdW5jdGlvbiBj YWxsUmVuZGVyQWZ0ZXJQb2xsKHNxbEVkaXRvciwgYWxlcnRpZnksIHJlcykgewogICAgIGNvbnN0 IG1zZyA9IHNwcmludGYoCiAgICAgICBnZXR0ZXh0KCdRdWVyeSByZXR1cm5lZCBzdWNjZXNzZnVs bHkgaW4gJXMuJyksIHNxbEVkaXRvci50b3RhbF90aW1lKTsKICAgICByZXMucmVzdWx0ICs9ICdc blxuJyArIG1zZzsKLSAgICBzcWxFZGl0b3IudXBkYXRlX21zZ19oaXN0b3J5KHRydWUsIHJlcy5y ZXN1bHQsIGZhbHNlKTsKKyAgICBzcWxFZGl0b3IudXBkYXRlX21zZ19oaXN0b3J5KHRydWUsIHJl cy5yZXN1bHQsIHRydWUpOwogICAgIGlmIChpc05vdGlmaWNhdGlvbkVuYWJsZWQoc3FsRWRpdG9y KSkgewogICAgICAgYWxlcnRpZnkuc3VjY2Vzcyhtc2csIHNxbEVkaXRvci5pbmZvX25vdGlmaWVy X3RpbWVvdXQpOwogICAgIH0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxl ZGl0b3IvcXVlcnlfdG9vbF9hY3Rpb25zLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVk aXRvci9xdWVyeV90b29sX2FjdGlvbnMuanMKaW5kZXggNzczOWU5YjUuLmU1Y2Y4YTM2IDEwMDY0 NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2xfYWN0aW9u cy5qcworKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2xfYWN0 aW9ucy5qcwpAQCAtMTUzLDYgKzE1MywxMSBAQCBsZXQgcXVlcnlUb29sQWN0aW9ucyA9IHsKICAg ICBzcWxFZGl0b3JDb250cm9sbGVyLnNwZWNpYWxfc3FsID0gJ1JPTExCQUNLOyc7CiAgICAgc2Vs Zi5leGVjdXRlUXVlcnkoc3FsRWRpdG9yQ29udHJvbGxlcik7CiAgIH0sCisKKyAgc2F2ZURhdGFD aGFuZ2VzOiBmdW5jdGlvbiAoc3FsRWRpdG9yQ29udHJvbGxlcikgeworICAgIHNxbEVkaXRvckNv bnRyb2xsZXIuY2xvc2Vfb25fc2F2ZSA9IGZhbHNlOworICAgIHNxbEVkaXRvckNvbnRyb2xsZXIu c2F2ZV9kYXRhKCk7CisgIH0sCiB9OwogCiBtb2R1bGUuZXhwb3J0cyA9IHF1ZXJ5VG9vbEFjdGlv bnM7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL3F1ZXJ5X3Rv b2xfcHJlZmVyZW5jZXMuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL3F1ZXJ5 X3Rvb2xfcHJlZmVyZW5jZXMuanMKaW5kZXggYzM5MDZhYWEuLmFiY2ViMDk5IDEwMDY0NAotLS0g YS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2xfcHJlZmVyZW5jZXMu anMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9xdWVyeV90b29sX3ByZWZl cmVuY2VzLmpzCkBAIC0yOSw3ICsyOSw3IEBAIGZ1bmN0aW9uIHVwZGF0ZVVJUHJlZmVyZW5jZXMo c3FsRWRpdG9yKSB7CiAgICAgLmF0dHIoJ3RpdGxlJywgc2hvcnRjdXRfYWNjZXNza2V5X3RpdGxl KCdPcGVuIEZpbGUnLHByZWZlcmVuY2VzLmJ0bl9vcGVuX2ZpbGUpKQogICAgIC5hdHRyKCdhY2Nl c3NrZXknLCBzaG9ydGN1dF9rZXkocHJlZmVyZW5jZXMuYnRuX29wZW5fZmlsZSkpOwogCi0gICRl bC5maW5kKCcjYnRuLXNhdmUnKQorICAkZWwuZmluZCgnI2J0bi1zYXZlLWZpbGUnKQogICAgIC5h dHRyKCd0aXRsZScsIHNob3J0Y3V0X2FjY2Vzc2tleV90aXRsZSgnU2F2ZSBGaWxlJyxwcmVmZXJl bmNlcy5idG5fc2F2ZV9maWxlKSkKICAgICAuYXR0cignYWNjZXNza2V5Jywgc2hvcnRjdXRfa2V5 KHByZWZlcmVuY2VzLmJ0bl9zYXZlX2ZpbGUpKTsKIApAQCAtOTcsNiArOTcsMTAgQEAgZnVuY3Rp b24gdXBkYXRlVUlQcmVmZXJlbmNlcyhzcWxFZGl0b3IpIHsKICAgICAuYXR0cigndGl0bGUnLAog ICAgICAgc2hvcnRjdXRfdGl0bGUoJ0Rvd25sb2FkIGFzIENTVicscHJlZmVyZW5jZXMuZG93bmxv YWRfY3N2KSk7CiAKKyAgJGVsLmZpbmQoJyNidG4tc2F2ZS1kYXRhJykKKyAgICAuYXR0cigndGl0 bGUnLAorICAgICAgc2hvcnRjdXRfdGl0bGUoJ1NhdmUgRGF0YSBDaGFuZ2VzJyxwcmVmZXJlbmNl cy5zYXZlX2RhdGEpKTsKKwogICAkZWwuZmluZCgnI2J0bi1jb21taXQnKQogICAgIC5hdHRyKCd0 aXRsZScsCiAgICAgICBzaG9ydGN1dF90aXRsZSgnQ29tbWl0JyxwcmVmZXJlbmNlcy5jb21taXRf dHJhbnNhY3Rpb24pKTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9zY3NzL19hbGVy dGlmeS5vdmVycmlkZXMuc2NzcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9zY3NzL19hbGVydGlmeS5v dmVycmlkZXMuc2NzcwppbmRleCA0MTNlMDllNy4uZDQzYmVjZDUgMTAwNjQ0Ci0tLSBhL3dlYi9w Z2FkbWluL3N0YXRpYy9zY3NzL19hbGVydGlmeS5vdmVycmlkZXMuc2NzcworKysgYi93ZWIvcGdh ZG1pbi9zdGF0aWMvc2Nzcy9fYWxlcnRpZnkub3ZlcnJpZGVzLnNjc3MKQEAgLTU2LDcgKzU2LDcg QEAKICAgICBib3R0b206ICRmb290ZXItaGVpZ2h0LWNhbGMgIWltcG9ydGFudDsKICAgfQogICAu YWpzLXdyYXAtdGV4dCB7Ci0gICAgd29yZC1icmVhazogYnJlYWstYWxsOworICAgIHdvcmQtYnJl YWs6IG5vcm1hbDsKICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgIH0KICAgLyogUmVtb3Zl cyBwYWRkaW5nIGZyb20gYWxlcnRpZnkgZm9vdGVyICovCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi90b29scy9kYXRhZ3JpZC90ZW1wbGF0ZXMvZGF0YWdyaWQvaW5kZXguaHRtbCBiL3dlYi9wZ2Fk bWluL3Rvb2xzL2RhdGFncmlkL3RlbXBsYXRlcy9kYXRhZ3JpZC9pbmRleC5odG1sCmluZGV4IGYx MzhiOWE0Li41NjNmODExMCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQv dGVtcGxhdGVzL2RhdGFncmlkL2luZGV4Lmh0bWwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0 YWdyaWQvdGVtcGxhdGVzL2RhdGFncmlkL2luZGV4Lmh0bWwKQEAgLTIxLDcgKzIxLDcgQEAKICAg ICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PSIwIj4KICAgICAgICAgICAgICAgICAgICAg PGkgY2xhc3M9ImZhIGZhLWZvbGRlci1vcGVuLW8gc3FsLWljb24tbGciIGFyaWEtaGlkZGVuPSJ0 cnVlIj48L2k+CiAgICAgICAgICAgICAgICAgPC9idXR0b24+Ci0gICAgICAgICAgICAgICAgPGJ1 dHRvbiBpZD0iYnRuLXNhdmUiIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc20gYnRuLXNl Y29uZGFyeSIKKyAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJidG4tc2F2ZS1maWxlIiB0eXBl PSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi1zZWNvbmRhcnkiCiAgICAgICAgICAgICAg ICAgICAgICAgICB0aXRsZT0iIgogICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNza2V5PSIi CiAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD4KQEAgLTEyOCw2ICsxMjgsMTQgQEAK ICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXRyYXNoIHNxbC1pY29uLWxnIiBh cmlhLWhpZGRlbj0idHJ1ZSI+PC9pPgogICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAg ICAgICAgPC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidG4tZ3JvdXAgbXItMSIgcm9s ZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiI+CisgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRu LXNhdmUtZGF0YSIgdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zbSBidG4tc2Vjb25kYXJ5 IgorICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9IiIKKyAgICAgICAgICAgICAgICAgICAg ICAgIGFjY2Vzc2tleT0iIgorICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9IjAiIGRp c2FibGVkPgorICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1zYXZlLWRhdGEtY2hh bmdlcyBzcWwtaWNvbi1sZyIgYXJpYS1oaWRkZW49InRydWUiPjwvaT4KKyAgICAgICAgICAgICAg ICA8L2J1dHRvbj4KKyAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgPGRpdiBjbGFzcz0i YnRuLWdyb3VwIG1yLTEiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIiPgogICAgICAgICAgICAg ICAgIDxidXR0b24gaWQ9ImJ0bi1lZGl0LWRyb3Bkb3duIiB0eXBlPSJidXR0b24iIGNsYXNzPSJi dG4gYnRuLXNtIGJ0bi1zZWNvbmRhcnkgZHJvcGRvd24tdG9nZ2xlIgogICAgICAgICAgICAgICAg ICAgICAgICAgZGF0YS10b2dnbGU9ImRyb3Bkb3duIiBhcmlhLWhhc3BvcHVwPSJ0cnVlIiBhcmlh LWV4cGFuZGVkPSJmYWxzZSIKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRv ci9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9fX2luaXRfXy5weQpp bmRleCBhYzkyM2E1NS4uMDY3YmZmN2IgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Nx bGVkaXRvci9fX2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvX19p bml0X18ucHkKQEAgLTM4NSw2ICszODUsOCBAQCBkZWYgcG9sbCh0cmFuc19pZCk6CiAgICAgcnNl dCA9IE5vbmUKICAgICBoYXNfb2lkcyA9IEZhbHNlCiAgICAgb2lkcyA9IE5vbmUKKyAgICBhZGRp dGlvbmFsX21lc3NhZ2VzID0gTm9uZQorICAgIG5vdGlmaWVzID0gTm9uZQogCiAgICAgIyBDaGVj ayB0aGUgdHJhbnNhY3Rpb24gYW5kIGNvbm5lY3Rpb24gc3RhdHVzCiAgICAgc3RhdHVzLCBlcnJv cl9tc2csIGNvbm4sIHRyYW5zX29iaiwgc2Vzc2lvbl9vYmogPSBcCkBAIC00MjMsNiArNDI1LDIy IEBAIGRlZiBwb2xsKHRyYW5zX2lkKToKIAogICAgICAgICAgICAgc3QsIHJlc3VsdCA9IGNvbm4u YXN5bmNfZmV0Y2htYW55XzJkYXJyYXkoT05fREVNQU5EX1JFQ09SRF9DT1VOVCkKIAorICAgICAg ICAgICAgIyBUaGVyZSBtYXkgYmUgYWRkaXRpb25hbCBtZXNzYWdlcyBldmVuIGlmIHJlc3VsdCBp cyBwcmVzZW50CisgICAgICAgICAgICAjIGVnOiBGdW5jdGlvbiBjYW4gcHJvdmlkZSByZXN1bHQg YXMgd2VsbCBhcyBSQUlTRSBtZXNzYWdlcworICAgICAgICAgICAgbWVzc2FnZXMgPSBjb25uLm1l c3NhZ2VzKCkKKyAgICAgICAgICAgIGlmIG1lc3NhZ2VzOgorICAgICAgICAgICAgICAgIGFkZGl0 aW9uYWxfbWVzc2FnZXMgPSAnJy5qb2luKG1lc3NhZ2VzKQorICAgICAgICAgICAgbm90aWZpZXMg PSBjb25uLmdldF9ub3RpZmllcygpCisKKyAgICAgICAgICAgICMgUHJvY2VkdXJlL0Z1bmN0aW9u IG91dHB1dCBtYXkgY29tZXMgaW4gdGhlIGZvcm0gb2YgTm90aWNlcworICAgICAgICAgICAgIyBm cm9tIHRoZSBkYXRhYmFzZSBzZXJ2ZXIsIHNvIHdlIG5lZWQgdG8gYXBwZW5kIHRob3NlIG91dHB1 dHMKKyAgICAgICAgICAgICMgd2l0aCB0aGUgb3JpZ2luYWwgcmVzdWx0LgorICAgICAgICAgICAg aWYgcmVzdWx0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29ubi5zdGF0dXNf bWVzc2FnZSgpCisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSAnU0VMRUNUIDEnIG9yIHJl c3VsdCAhPSAnU0VMRUNUIDAnKSBhbmQgXAorICAgICAgICAgICAgICAgICAgIHJlc3VsdCBpcyBu b3QgTm9uZSBhbmQgYWRkaXRpb25hbF9tZXNzYWdlczoKKyAgICAgICAgICAgICAgICAgICAgcmVz dWx0ID0gYWRkaXRpb25hbF9tZXNzYWdlcyArIHJlc3VsdAorCiAgICAgICAgICAgICBpZiBzdDoK ICAgICAgICAgICAgICAgICBpZiAncHJpbWFyeV9rZXlzJyBpbiBzZXNzaW9uX29iajoKICAgICAg ICAgICAgICAgICAgICAgcHJpbWFyeV9rZXlzID0gc2Vzc2lvbl9vYmpbJ3ByaW1hcnlfa2V5cydd CkBAIC00MzksMTAgKzQ1NywyMiBAQCBkZWYgcG9sbCh0cmFuc19pZCk6CiAgICAgICAgICAgICAg ICAgKQogICAgICAgICAgICAgICAgIHNlc3Npb25fb2JqWydjbGllbnRfcHJpbWFyeV9rZXknXSA9 IGNsaWVudF9wcmltYXJ5X2tleQogCi0gICAgICAgICAgICAgICAgaWYgY29sdW1uc19pbmZvIGlz IG5vdCBOb25lOgorICAgICAgICAgICAgICAgICMgSWYgdHJhbnNfb2JqIGlzIGEgUXVlcnlUb29s Q29tbWFuZCB0aGVuIGNoZWNrIGZvciB1cGRhdGFibGUKKyAgICAgICAgICAgICAgICAjIHJlc3Vs dHNldHMgYW5kIHByaW1hcnkga2V5cworICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodHJh bnNfb2JqLCBRdWVyeVRvb2xDb21tYW5kKToKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNfb2Jq LmNoZWNrX3VwZGF0YWJsZV9yZXN1bHRzX3BrZXlzKCkKKyAgICAgICAgICAgICAgICAgICAgcGtf bmFtZXMsIHByaW1hcnlfa2V5cyA9IHRyYW5zX29iai5nZXRfcHJpbWFyeV9rZXlzKCkKKyAgICAg ICAgICAgICAgICAgICAgIyBJZiBwcmltYXJ5X2tleXMgZXhpc3QsIGFkZCB0aGVtIHRvIHRoZSBz ZXNzaW9uX29iaiB0bworICAgICAgICAgICAgICAgICAgICAjIGFsbG93IGZvciBzYXZpbmcgYW55 IGNoYW5nZXMgdG8gdGhlIGRhdGEKKyAgICAgICAgICAgICAgICAgICAgaWYgcHJpbWFyeV9rZXlz IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbl9vYmpbJ3ByaW1h cnlfa2V5cyddID0gcHJpbWFyeV9rZXlzCiAKLSAgICAgICAgICAgICAgICAgICAgY29tbWFuZF9v YmogPSBwaWNrbGUubG9hZHMoc2Vzc2lvbl9vYmpbJ2NvbW1hbmRfb2JqJ10pCi0gICAgICAgICAg ICAgICAgICAgIGlmIGhhc2F0dHIoY29tbWFuZF9vYmosICdvYmpfaWQnKToKKyAgICAgICAgICAg ICAgICBpZiBjb2x1bW5zX2luZm8gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICMg SWYgaXQgaXMgYSBRdWVyeVRvb2xDb21tYW5kIHRoYXQgaGFzIG9ial9pZCBhdHRyaWJ1dGUKKyAg ICAgICAgICAgICAgICAgICAgIyB0aGVuIGl0IHNob3VsZCBhbHNvIGJlIGVkaXRhYmxlCisgICAg ICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIodHJhbnNfb2JqLCAnb2JqX2lkJykgYW5kIFwKKyAg ICAgICAgICAgICAgICAgICAgICAgIChub3QgaXNpbnN0YW5jZSh0cmFuc19vYmosIFF1ZXJ5VG9v bENvbW1hbmQpIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNfb2JqLmNhbl9lZGl0 KCkpOgogICAgICAgICAgICAgICAgICAgICAgICAgIyBHZXQgdGhlIHRlbXBsYXRlIHBhdGggZm9y IHRoZSBjb2x1bW4KICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlX3BhdGggPSAnY29s dW1ucy9zcWwvI3swfSMnLmZvcm1hdCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25u Lm1hbmFnZXIudmVyc2lvbgpAQCAtNDUwLDcgKzQ4MCw3IEBAIGRlZiBwb2xsKHRyYW5zX2lkKToK IAogICAgICAgICAgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLCAnbm9kZXMuc3Fs J10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD1jb21tYW5kX29iai5vYmpfaWQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRyYW5zX29iai5vYmpfaWQsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaGFzX29pZHM9VHJ1ZQogICAgICAgICAgICAgICAgICAg ICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgIyByb3dzIHdpdGggYXR0cmlidXRlIG5v dF9udWxsCkBAIC01MjUsMjYgKzU1NSw4IEBAIGRlZiBwb2xsKHRyYW5zX2lkKToKICAgICAgICAg c3RhdHVzID0gJ05vdENvbm5lY3RlZCcKICAgICAgICAgcmVzdWx0ID0gZXJyb3JfbXNnCiAKLSAg ICAjIFRoZXJlIG1heSBiZSBhZGRpdGlvbmFsIG1lc3NhZ2VzIGV2ZW4gaWYgcmVzdWx0IGlzIHBy ZXNlbnQKLSAgICAjIGVnOiBGdW5jdGlvbiBjYW4gcHJvdmlkZSByZXN1bHQgYXMgd2VsbCBhcyBS QUlTRSBtZXNzYWdlcwotICAgIGFkZGl0aW9uYWxfbWVzc2FnZXMgPSBOb25lCi0gICAgbm90aWZp ZXMgPSBOb25lCi0gICAgaWYgc3RhdHVzID09ICdTdWNjZXNzJzoKLSAgICAgICAgbWVzc2FnZXMg PSBjb25uLm1lc3NhZ2VzKCkKLSAgICAgICAgaWYgbWVzc2FnZXM6Ci0gICAgICAgICAgICBhZGRp dGlvbmFsX21lc3NhZ2VzID0gJycuam9pbihtZXNzYWdlcykKLSAgICAgICAgbm90aWZpZXMgPSBj b25uLmdldF9ub3RpZmllcygpCi0KLSAgICAjIFByb2NlZHVyZS9GdW5jdGlvbiBvdXRwdXQgbWF5 IGNvbWVzIGluIHRoZSBmb3JtIG9mIE5vdGljZXMgZnJvbSB0aGUKLSAgICAjIGRhdGFiYXNlIHNl cnZlciwgc28gd2UgbmVlZCB0byBhcHBlbmQgdGhvc2Ugb3V0cHV0cyB3aXRoIHRoZQotICAgICMg b3JpZ2luYWwgcmVzdWx0LgotICAgIGlmIHN0YXR1cyA9PSAnU3VjY2VzcycgYW5kIHJlc3VsdCBp cyBOb25lOgotICAgICAgICByZXN1bHQgPSBjb25uLnN0YXR1c19tZXNzYWdlKCkKLSAgICAgICAg aWYgKHJlc3VsdCAhPSAnU0VMRUNUIDEnIG9yIHJlc3VsdCAhPSAnU0VMRUNUIDAnKSBhbmQgXAot ICAgICAgICAgICByZXN1bHQgaXMgbm90IE5vbmUgYW5kIGFkZGl0aW9uYWxfbWVzc2FnZXM6Ci0g ICAgICAgICAgICByZXN1bHQgPSBhZGRpdGlvbmFsX21lc3NhZ2VzICsgcmVzdWx0Ci0KICAgICB0 cmFuc2FjdGlvbl9zdGF0dXMgPSBjb25uLnRyYW5zYWN0aW9uX3N0YXR1cygpCisKICAgICByZXR1 cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAogICAgICAgICBkYXRhPXsKICAgICAgICAgICAgICdzdGF0 dXMnOiBzdGF0dXMsICdyZXN1bHQnOiByZXN1bHQsCkBAIC03MzMsNyArNzQ1LDggQEAgZGVmIHNh dmUodHJhbnNfaWQpOgogICAgICAgIHRyYW5zX29iaiBpcyBub3QgTm9uZSBhbmQgc2Vzc2lvbl9v YmogaXMgbm90IE5vbmU6CiAKICAgICAgICAgIyBJZiB0aGVyZSBpcyBubyBwcmltYXJ5IGtleSBm b3VuZCB0aGVuIHJldHVybiBmcm9tIHRoZSBmdW5jdGlvbi4KLSAgICAgICAgaWYgKGxlbihzZXNz aW9uX29ialsncHJpbWFyeV9rZXlzJ10pIDw9IDAgb3IKKyAgICAgICAgaWYgKCdwcmltYXJ5X2tl eXMnIG5vdCBpbiBzZXNzaW9uX29iaiBvcgorICAgICAgICAgICBsZW4oc2Vzc2lvbl9vYmpbJ3By aW1hcnlfa2V5cyddKSA8PSAwIG9yCiAgICAgICAgICAgIGxlbihjaGFuZ2VkX2RhdGEpIDw9IDAp IGFuZCBcCiAgICAgICAgICAgICdoYXNfb2lkcycgbm90IGluIHNlc3Npb25fb2JqOgogICAgICAg ICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKQEAgLTc0NiwzMiArNzU5LDM4IEBAIGRl ZiBzYXZlKHRyYW5zX2lkKToKIAogICAgICAgICBtYW5hZ2VyID0gZ2V0X2RyaXZlcigKICAgICAg ICAgICAgIFBHX0RFRkFVTFRfRFJJVkVSKS5jb25uZWN0aW9uX21hbmFnZXIodHJhbnNfb2JqLnNp ZCkKLSAgICAgICAgZGVmYXVsdF9jb25uID0gbWFuYWdlci5jb25uZWN0aW9uKGRpZD10cmFuc19v YmouZGlkKQorICAgICAgICBpZiBoYXNhdHRyKHRyYW5zX29iaiwgJ2Nvbm5faWQnKToKKyAgICAg ICAgICAgIGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rpb24oZGlkPXRyYW5zX29iai5kaWQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5faWQ9dHJhbnNfb2JqLmNvbm5f aWQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb25uID0gbWFuYWdlci5jb25uZWN0aW9u KGRpZD10cmFuc19vYmouZGlkKSAgIyBkZWZhdWx0IGNvbm5lY3Rpb24KIAogICAgICAgICAjIENv bm5lY3QgdG8gdGhlIFNlcnZlciBpZiBub3QgY29ubmVjdGVkLgotICAgICAgICBpZiBub3QgZGVm YXVsdF9jb25uLmNvbm5lY3RlZCgpOgotICAgICAgICAgICAgc3RhdHVzLCBtc2cgPSBkZWZhdWx0 X2Nvbm4uY29ubmVjdCgpCisgICAgICAgIGlmIG5vdCBjb25uLmNvbm5lY3RlZCgpOgorICAgICAg ICAgICAgc3RhdHVzLCBtc2cgPSBjb25uLmNvbm5lY3QoKQogICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAogICAgICAg ICAgICAgICAgICAgICBkYXRhPXsnc3RhdHVzJzogc3RhdHVzLCAncmVzdWx0JzogdSJ7fSIuZm9y bWF0KG1zZyl9CiAgICAgICAgICAgICAgICAgKQotCi0gICAgICAgIHN0YXR1cywgcmVzLCBxdWVy eV9yZXMsIF9yb3dpZCA9IHRyYW5zX29iai5zYXZlKAorICAgICAgICBzdGF0dXMsIHJlcywgcXVl cnlfcmVzLCBfcm93aWQsIGlzX2NvbW1pdF9yZXF1aXJlZCA9IHRyYW5zX29iai5zYXZlKAogICAg ICAgICAgICAgY2hhbmdlZF9kYXRhLAogICAgICAgICAgICAgc2Vzc2lvbl9vYmpbJ2NvbHVtbnNf aW5mbyddLAogICAgICAgICAgICAgc2Vzc2lvbl9vYmpbJ2NsaWVudF9wcmltYXJ5X2tleSddLAot ICAgICAgICAgICAgZGVmYXVsdF9jb25uKQorICAgICAgICAgICAgY29ubikKICAgICBlbHNlOgog ICAgICAgICBzdGF0dXMgPSBGYWxzZQogICAgICAgICByZXMgPSBlcnJvcl9tc2cKICAgICAgICAg cXVlcnlfcmVzID0gTm9uZQorICAgICAgICBfcm93aWQgPSBOb25lCisgICAgICAgIGlzX2NvbW1p dF9yZXF1aXJlZCA9IE5vbmUKIAogICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCiAgICAg ICAgIGRhdGE9ewogICAgICAgICAgICAgJ3N0YXR1cyc6IHN0YXR1cywKICAgICAgICAgICAgICdy ZXN1bHQnOiByZXMsCiAgICAgICAgICAgICAncXVlcnlfcmVzdWx0JzogcXVlcnlfcmVzLAotICAg ICAgICAgICAgJ19yb3dpZCc6IF9yb3dpZAorICAgICAgICAgICAgJ19yb3dpZCc6IF9yb3dpZCwK KyAgICAgICAgICAgICdpc19jb21taXRfcmVxdWlyZWQnOiBpc19jb21taXRfcmVxdWlyZWQKICAg ICAgICAgfQogICAgICkKIApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9y L2NvbW1hbmQucHkgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvY29tbWFuZC5weQppbmRl eCAyOGI3Y2M0NC4uMDhmMDIzMTAgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVk aXRvci9jb21tYW5kLnB5CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9jb21tYW5k LnB5CkBAIC0xOSw2ICsxOSwxMCBAQCBmcm9tIGZsYXNrIGltcG9ydCByZW5kZXJfdGVtcGxhdGUK IGZyb20gZmxhc2tfYmFiZWxleCBpbXBvcnQgZ2V0dGV4dAogZnJvbSBwZ2FkbWluLnV0aWxzLmFq YXggaW1wb3J0IGZvcmJpZGRlbgogZnJvbSBwZ2FkbWluLnV0aWxzLmRyaXZlciBpbXBvcnQgZ2V0 X2RyaXZlcgorZnJvbSBwZ2FkbWluLnRvb2xzLnNxbGVkaXRvci51dGlscy5jb25zdGFudF9kZWZp bml0aW9uIGltcG9ydCBBU1lOQ19PSworZnJvbSBwZ2FkbWluLnRvb2xzLnNxbGVkaXRvci51dGls cy5pc19xdWVyeV9yZXN1bHRzZXRfdXBkYXRhYmxlIFwKKyAgICBpbXBvcnQgaXNfcXVlcnlfcmVz dWx0c2V0X3VwZGF0YWJsZQorZnJvbSBwZ2FkbWluLnRvb2xzLnNxbGVkaXRvci51dGlscy5zYXZl X2NoYW5nZWRfZGF0YSBpbXBvcnQgc2F2ZV9jaGFuZ2VkX2RhdGEKIAogZnJvbSBjb25maWcgaW1w b3J0IFBHX0RFRkFVTFRfRFJJVkVSCiAKQEAgLTY2OCwyNjggKzY3MiwxMSBAQCBjbGFzcyBUYWJs ZUNvbW1hbmQoR3JpZENvbW1hbmQpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY29ubiA9 IGRlZmF1bHRfY29ubgogCi0gICAgICAgIHN0YXR1cyA9IEZhbHNlCi0gICAgICAgIHJlcyA9IE5v bmUKLSAgICAgICAgcXVlcnlfcmVzID0gZGljdCgpCi0gICAgICAgIGNvdW50ID0gMAotICAgICAg ICBsaXN0X29mX3Jvd2lkID0gW10KLSAgICAgICAgb3BlcmF0aW9ucyA9ICgnYWRkZWQnLCAndXBk YXRlZCcsICdkZWxldGVkJykKLSAgICAgICAgbGlzdF9vZl9zcWwgPSB7fQotICAgICAgICBfcm93 aWQgPSBOb25lCi0KLSAgICAgICAgcGdhZG1pbl9hbGlhcyA9IHsKLSAgICAgICAgICAgIGNvbF9u YW1lOiBjb2xfaW5mb1sncGdhZG1pbl9hbGlhcyddCi0gICAgICAgICAgICBmb3IgY29sX25hbWUs IGNvbF9pbmZvIGluIGNvbHVtbnNfaW5mbwotICAgICAgICAgICAgLml0ZW1zKCkKLSAgICAgICAg fQotICAgICAgICBpZiBjb25uLmNvbm5lY3RlZCgpOgotCi0gICAgICAgICAgICAjIFN0YXJ0IHRo ZSB0cmFuc2FjdGlvbgotICAgICAgICAgICAgY29ubi5leGVjdXRlX3ZvaWQoJ0JFR0lOOycpCi0K LSAgICAgICAgICAgICMgSXRlcmF0ZSB0b3RhbCBudW1iZXIgb2YgcmVjb3JkcyB0byBiZSB1cGRh dGVkL2luc2VydGVkCi0gICAgICAgICAgICBmb3Igb2ZfdHlwZSBpbiBjaGFuZ2VkX2RhdGE6Ci0g ICAgICAgICAgICAgICAgIyBObyBuZWVkIHRvIGdvIGZ1cnRoZXIgaWYgaXRzIG5vdCBhZGQvdXBk YXRlL2RlbGV0ZSBvcGVyYXRpb24KLSAgICAgICAgICAgICAgICBpZiBvZl90eXBlIG5vdCBpbiBv cGVyYXRpb25zOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAg ICMgaWYgbm8gZGF0YSB0byBiZSBzYXZlIHRoZW4gY29udGludWUKLSAgICAgICAgICAgICAgICBp ZiBsZW4oY2hhbmdlZF9kYXRhW29mX3R5cGVdKSA8IDE6Ci0gICAgICAgICAgICAgICAgICAgIGNv bnRpbnVlCi0KLSAgICAgICAgICAgICAgICBjb2x1bW5fdHlwZSA9IHt9Ci0gICAgICAgICAgICAg ICAgY29sdW1uX2RhdGEgPSB7fQotICAgICAgICAgICAgICAgIGZvciBlYWNoX2NvbCBpbiBjb2x1 bW5zX2luZm86Ci0gICAgICAgICAgICAgICAgICAgIGlmICgKLSAgICAgICAgICAgICAgICAgICAg ICAgIGNvbHVtbnNfaW5mb1tlYWNoX2NvbF1bJ25vdF9udWxsJ10gYW5kCi0gICAgICAgICAgICAg ICAgICAgICAgICBub3QgY29sdW1uc19pbmZvW2VhY2hfY29sXVsnaGFzX2RlZmF1bHRfdmFsJ10K LSAgICAgICAgICAgICAgICAgICAgKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbl9k YXRhW2VhY2hfY29sXSA9IE5vbmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbl90eXBl W2VhY2hfY29sXSA9XAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnNfaW5mb1tl YWNoX2NvbF1bJ3R5cGVfbmFtZSddCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAg ICAgICAgICAgICAgICAgICBjb2x1bW5fdHlwZVtlYWNoX2NvbF0gPSBcCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29sdW1uc19pbmZvW2VhY2hfY29sXVsndHlwZV9uYW1lJ10KLQotICAg ICAgICAgICAgICAgICMgRm9yIG5ld2x5IGFkZGVkIHJvd3MKLSAgICAgICAgICAgICAgICBpZiBv Zl90eXBlID09ICdhZGRlZCc6Ci0gICAgICAgICAgICAgICAgICAgICMgUHl0aG9uIGRpY3QgZG9l cyBub3QgaG9ub3VyIHRoZSBpbnNlcnRlZCBpdGVtIG9yZGVyCi0gICAgICAgICAgICAgICAgICAg ICMgU28gdG8gaW5zZXJ0IGRhdGEgaW4gdGhlIG9yZGVyLCB3ZSBuZWVkIHRvIG1ha2Ugb3JkZXJl ZAotICAgICAgICAgICAgICAgICAgICAjIGxpc3Qgb2YgYWRkZWQgaW5kZXggV2UgZG9uJ3QgbmVl ZCB0aGlzIG1lY2hhbmlzbSBpbgotICAgICAgICAgICAgICAgICAgICAjIHVwZGF0ZWQvZGVsZXRl ZCByb3dzIGFzIGl0IGRvZXMgbm90IG1hdHRlciBpbgotICAgICAgICAgICAgICAgICAgICAjIHRo b3NlIG9wZXJhdGlvbnMKLSAgICAgICAgICAgICAgICAgICAgYWRkZWRfaW5kZXggPSBPcmRlcmVk RGljdCgKLSAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRlZCgKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjaGFuZ2VkX2RhdGFbJ2FkZGVkX2luZGV4J10uaXRlbXMoKSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICBrZXk9bGFtYmRhIHg6IGludCh4WzBdKQotICAgICAgICAgICAg ICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAg IGxpc3Rfb2Zfc3FsW29mX3R5cGVdID0gW10KLQotICAgICAgICAgICAgICAgICAgICAjIFdoZW4g bmV3IHJvd3MgYXJlIGFkZGVkLCBvbmx5IGNoYW5nZWQgY29sdW1ucyBkYXRhIGlzCi0gICAgICAg ICAgICAgICAgICAgICMgc2VudCBmcm9tIGNsaWVudCBzaWRlLiBCdXQgaWYgY29sdW1uIGlzIG5v dF9udWxsIGFuZCBoYXMKLSAgICAgICAgICAgICAgICAgICAgIyBub19kZWZhdWx0X3ZhbHVlLCBz ZXQgY29sdW1uIHRvIGJsYW5rLCBpbnN0ZWFkCi0gICAgICAgICAgICAgICAgICAgICMgb2Ygbm90 IG51bGwgd2hpY2ggaXMgc2V0IGJ5IGRlZmF1bHQuCi0gICAgICAgICAgICAgICAgICAgIGNvbHVt bl9kYXRhID0ge30KLSAgICAgICAgICAgICAgICAgICAgcGtfbmFtZXMsIHByaW1hcnlfa2V5cyA9 IHNlbGYuZ2V0X3ByaW1hcnlfa2V5cygpCi0gICAgICAgICAgICAgICAgICAgIGhhc19vaWRzID0g J29pZCcgaW4gY29sdW1uX3R5cGUKLQotICAgICAgICAgICAgICAgICAgICBmb3IgZWFjaF9yb3cg aW4gYWRkZWRfaW5kZXg6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIEdldCB0aGUgcm93IGlu ZGV4IHRvIG1hdGNoIHdpdGggdGhlIGFkZGVkIHJvd3MKLSAgICAgICAgICAgICAgICAgICAgICAg ICMgZGljdCBrZXkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcF9yb3dfaW5kZXggPSBhZGRl ZF9pbmRleFtlYWNoX3Jvd10KLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBjaGFuZ2Vk X2RhdGFbb2ZfdHlwZV1bdG1wX3Jvd19pbmRleF1bJ2RhdGEnXQotICAgICAgICAgICAgICAgICAg ICAgICAgIyBSZW1vdmUgb3VyIHVuaXF1ZSB0cmFja2luZyBrZXkKLSAgICAgICAgICAgICAgICAg ICAgICAgIGRhdGEucG9wKGNsaWVudF9wcmltYXJ5X2tleSwgTm9uZSkKLSAgICAgICAgICAgICAg ICAgICAgICAgIGRhdGEucG9wKCdpc19yb3dfY29waWVkJywgTm9uZSkKLSAgICAgICAgICAgICAg ICAgICAgICAgIGxpc3Rfb2Zfcm93aWQuYXBwZW5kKGRhdGEuZ2V0KGNsaWVudF9wcmltYXJ5X2tl eSkpCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICMgVXBkYXRlIGNvbHVtbnMgdmFsdWUgd2l0 aCBjb2x1bW5zIGhhdmluZwotICAgICAgICAgICAgICAgICAgICAgICAgIyBub3RfbnVsbD1GYWxz ZSBhbmQgaGFzIG5vIGRlZmF1bHQgdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVt bl9kYXRhLnVwZGF0ZShkYXRhKQotCi0gICAgICAgICAgICAgICAgICAgICAgICBzcWwgPSByZW5k ZXJfdGVtcGxhdGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYu c3FsX3BhdGgsICdpbnNlcnQuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh dGFfdG9fYmVfc2F2ZWQ9Y29sdW1uX2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg cGdhZG1pbl9hbGlhcz1wZ2FkbWluX2FsaWFzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg IHByaW1hcnlfa2V5cz1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdF9u YW1lPXNlbGYub2JqZWN0X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNwX25h bWU9c2VsZi5uc3BfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3R5cGU9 Y29sdW1uX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtfbmFtZXM9cGtfbmFt ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzX29pZHM9aGFzX29pZHMKLSAgICAg ICAgICAgICAgICAgICAgICAgICkKLQotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0X3Nx bCA9IHJlbmRlcl90ZW1wbGF0ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLyIuam9p bihbc2VsZi5zcWxfcGF0aCwgJ3NlbGVjdC5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgb2JqZWN0X25hbWU9c2VsZi5vYmplY3RfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBuc3BfbmFtZT1zZWxmLm5zcF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHByaW1hcnlfa2V5cz1wcmltYXJ5X2tleXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgaGFzX29pZHM9aGFzX29pZHMKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLQotICAgICAg ICAgICAgICAgICAgICAgICAgbGlzdF9vZl9zcWxbb2ZfdHlwZV0uYXBwZW5kKHsKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnc3FsJzogc3FsLCAnZGF0YSc6IGRhdGEsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ2NsaWVudF9yb3cnOiB0bXBfcm93X2luZGV4LAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdzZWxlY3Rfc3FsJzogc2VsZWN0X3NxbAotICAgICAgICAgICAg ICAgICAgICAgICAgfSkKLSAgICAgICAgICAgICAgICAgICAgICAgICMgUmVzZXQgY29sdW1uIGRh dGEKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbl9kYXRhID0ge30KLQotICAgICAgICAg ICAgICAgICMgRm9yIHVwZGF0ZWQgcm93cwotICAgICAgICAgICAgICAgIGVsaWYgb2ZfdHlwZSA9 PSAndXBkYXRlZCc6Ci0gICAgICAgICAgICAgICAgICAgIGxpc3Rfb2Zfc3FsW29mX3R5cGVdID0g W10KLSAgICAgICAgICAgICAgICAgICAgZm9yIGVhY2hfcm93IGluIGNoYW5nZWRfZGF0YVtvZl90 eXBlXToKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBjaGFuZ2VkX2RhdGFbb2ZfdHlw ZV1bZWFjaF9yb3ddWydkYXRhJ10KLSAgICAgICAgICAgICAgICAgICAgICAgIHBrX2VzY2FwZWQg PSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGs6IHBrX3ZhbC5yZXBsYWNlKCclJywg JyUlJykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcGssIHBrX3ZhbCBpbgotICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWRfZGF0YVtvZl90eXBlXVtlYWNoX3Jvd11b J3ByaW1hcnlfa2V5cyddCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLml0ZW1zKCkKLSAg ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHNxbCA9IHJl bmRlcl90ZW1wbGF0ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2Vs Zi5zcWxfcGF0aCwgJ3VwZGF0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGF0YV90b19iZV9zYXZlZD1kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnYWRt aW5fYWxpYXM9cGdhZG1pbl9hbGlhcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlt YXJ5X2tleXM9cGtfZXNjYXBlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Rf bmFtZT1zZWxmLm9iamVjdF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zcF9u YW1lPXNlbGYubnNwX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV90eXBl PWNvbHVtbl90eXBlCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAg ICAgICAgICBsaXN0X29mX3NxbFtvZl90eXBlXS5hcHBlbmQoeydzcWwnOiBzcWwsICdkYXRhJzog ZGF0YX0pCi0gICAgICAgICAgICAgICAgICAgICAgICBsaXN0X29mX3Jvd2lkLmFwcGVuZChkYXRh LmdldChjbGllbnRfcHJpbWFyeV9rZXkpKQotCi0gICAgICAgICAgICAgICAgIyBGb3IgZGVsZXRl ZCByb3dzCi0gICAgICAgICAgICAgICAgZWxpZiBvZl90eXBlID09ICdkZWxldGVkJzoKLSAgICAg ICAgICAgICAgICAgICAgbGlzdF9vZl9zcWxbb2ZfdHlwZV0gPSBbXQotICAgICAgICAgICAgICAg ICAgICBpc19maXJzdCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgcm93c190b19kZWxldGUg PSBbXQotICAgICAgICAgICAgICAgICAgICBrZXlzID0gTm9uZQotICAgICAgICAgICAgICAgICAg ICBub19vZl9rZXlzID0gTm9uZQotICAgICAgICAgICAgICAgICAgICBmb3IgZWFjaF9yb3cgaW4g Y2hhbmdlZF9kYXRhW29mX3R5cGVdOgotICAgICAgICAgICAgICAgICAgICAgICAgcm93c190b19k ZWxldGUuYXBwZW5kKGNoYW5nZWRfZGF0YVtvZl90eXBlXVtlYWNoX3Jvd10pCi0gICAgICAgICAg ICAgICAgICAgICAgICAjIEZldGNoIHRoZSBrZXlzIGZvciBTUUwgZ2VuZXJhdGlvbgotICAgICAg ICAgICAgICAgICAgICAgICAgaWYgaXNfZmlyc3Q6Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgIyBXZSBuZWVkIHRvIGNvdmVydCBkaWN0X2tleXMgdG8gbm9ybWFsIGxpc3QgaW4KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIFB5dGhvbjMKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjIEluIFB5dGhvbjIsIGl0J3MgYWxyZWFkeSBhIGxpc3QgJiBXZSB3aWxsIGFsc28KLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZldGNoIGNvbHVtbiBuYW1lcyB1c2luZyBpbmRl eAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXMgPSBsaXN0KAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkX2RhdGFbb2ZfdHlwZV1bZWFjaF9yb3ddLmtleXMo KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICBub19vZl9rZXlzID0gbGVuKGtleXMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg aXNfZmlyc3QgPSBGYWxzZQotICAgICAgICAgICAgICAgICAgICAjIE1hcCBpbmRleCB3aXRoIGNv bHVtbiBuYW1lIGZvciBlYWNoIHJvdwotICAgICAgICAgICAgICAgICAgICBmb3Igcm93IGluIHJv d3NfdG9fZGVsZXRlOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGssIHYgaW4gcm93Lml0 ZW1zKCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBTZXQgcHJpbWFyeSBrZXkgd2l0 aCBsYWJlbCAmIGRlbGV0ZSBpbmRleCBiYXNlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgbWFwcGVkIGtleQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcm93W2NoYW5nZWRfZGF0YVsnY29sdW1ucyddCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW50KGspXVsnbmFtZSddXSA9IHYKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkZWwgcm93W2tdCi0KLSAgICAgICAgICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRl KAotICAgICAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYuc3FsX3BhdGgsICdkZWxl dGUuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1yb3dzX3RvX2RlbGV0ZSwK LSAgICAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlfa2V5X2xhYmVscz1rZXlzLAotICAgICAg ICAgICAgICAgICAgICAgICAgbm9fb2Zfa2V5cz1ub19vZl9rZXlzLAotICAgICAgICAgICAgICAg ICAgICAgICAgb2JqZWN0X25hbWU9c2VsZi5vYmplY3RfbmFtZSwKLSAgICAgICAgICAgICAgICAg ICAgICAgIG5zcF9uYW1lPXNlbGYubnNwX25hbWUKLSAgICAgICAgICAgICAgICAgICAgKQotICAg ICAgICAgICAgICAgICAgICBsaXN0X29mX3NxbFtvZl90eXBlXS5hcHBlbmQoeydzcWwnOiBzcWws ICdkYXRhJzoge319KQotCi0gICAgICAgICAgICBmb3Igb3ByLCBzcWxzIGluIGxpc3Rfb2Zfc3Fs Lml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gc3FsczoKLSAgICAgICAgICAg ICAgICAgICAgaWYgaXRlbVsnc3FsJ106Ci0gICAgICAgICAgICAgICAgICAgICAgICBpdGVtWydk YXRhJ10gPSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdhZG1pbl9hbGlhc1trXSBp ZiBrIGluIHBnYWRtaW5fYWxpYXMgZWxzZSBrOiB2Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgZm9yIGssIHYgaW4gaXRlbVsnZGF0YSddLml0ZW1zKCkKLSAgICAgICAgICAgICAgICAgICAg ICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgcm93X2FkZGVkID0gTm9uZQotCi0gICAg ICAgICAgICAgICAgICAgICAgICBkZWYgZmFpbHVyZV9oYW5kbGUoKToKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25uLmV4ZWN1dGVfdm9pZCgnUk9MTEJBQ0s7JykKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIElmIHdlIHJvbGwgYmFja2VkIGV2ZXJ5IHRoaW5nIHRoZW4gdXBk YXRlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbWVzc2FnZSBmb3IgZWFjaCBz cWwgcXVlcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHZhbCBpbiBxdWVyeV9y ZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHF1ZXJ5X3Jlc1t2YWxdWydz dGF0dXMnXToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5X3Jlc1t2 YWxdWydyZXN1bHQnXSA9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnVHJhbnNhY3Rpb24gUk9MTEJBQ0snCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IElmIGxpc3QgaXMgZW1wdHkgc2V0IHJvd2lkIHRvIDEKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxpc3Rfb2Zfcm93 aWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcm93aWQgPSBsaXN0X29m X3Jvd2lkW2NvdW50XQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3Jvd2lkID0gMQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF9yb3dpZCA9IDAKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biBzdGF0dXMsIHJlcywgcXVlcnlfcmVzLCBfcm93aWQKLQotICAgICAgICAgICAgICAgICAgICAg ICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRmV0Y2ggb2lkcy9wcmltYXJ5 IGtleXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAnc2VsZWN0X3NxbCcgaW4gaXRl bSBhbmQgaXRlbVsnc2VsZWN0X3NxbCddOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdGF0dXMsIHJlcyA9IGNvbm4uZXhlY3V0ZV9kaWN0KAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaXRlbVsnc3FsJ10sIGl0ZW1bJ2RhdGEnXSkKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0 dXMsIHJlcyA9IGNvbm4uZXhlY3V0ZV92b2lkKAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaXRlbVsnc3FsJ10sIGl0ZW1bJ2RhdGEnXSkKLSAgICAgICAgICAgICAgICAgICAg ICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgXzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBm YWlsdXJlX2hhbmRsZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKLQotICAg ICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gZmFpbHVyZV9oYW5kbGUoKQotCi0gICAgICAgICAgICAgICAgICAgICAg ICAjIFNlbGVjdCBhZGRlZCByb3cgZnJvbSB0aGUgdGFibGUKLSAgICAgICAgICAgICAgICAgICAg ICAgIGlmICdzZWxlY3Rfc3FsJyBpbiBpdGVtOgotICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0YXR1cywgc2VsX3JlcyA9IGNvbm4uZXhlY3V0ZV9kaWN0KAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpdGVtWydzZWxlY3Rfc3FsJ10sIHJlc1sncm93cyddWzBdKQotCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29ubi5leGVjdXRlX3ZvaWQoJ1JPTExCQUNLOycpCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICMgSWYgd2Ugcm9sbCBiYWNrZWQgZXZlcnkgdGhpbmcgdGhl biB1cGRhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgbWVzc2FnZSBm b3IgZWFjaCBzcWwgcXVlcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB2 YWwgaW4gcXVlcnlfcmVzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg cXVlcnlfcmVzW3ZhbF1bJ3N0YXR1cyddOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHF1ZXJ5X3Jlc1t2YWxdWydyZXN1bHQnXSA9IFwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RyYW5zYWN0aW9uIFJPTExCQUNLJwotCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgbGlzdCBpcyBlbXB0eSBzZXQgcm93aWQg dG8gMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpZiBsaXN0X29mX3Jvd2lkOgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF9yb3dpZCA9IGxpc3Rfb2Zfcm93aWRbY291bnRdCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF9yb3dpZCA9IDEKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF9yb3dpZCA9IDAKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gc3RhdHVzLCBzZWxfcmVzLCBxdWVyeV9yZXMsIF9yb3dpZAotCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgaWYgJ3Jvd3MnIGluIHNlbF9yZXMgYW5kIGxlbihzZWxfcmVzWydyb3dz J10pID4gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93X2FkZGVkID0gewot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVsnY2xpZW50X3JvdyddOiBz ZWxfcmVzWydyb3dzJ11bMF19Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJvd3NfYWZmZWN0 ZWQgPSBjb25uLnJvd3NfYWZmZWN0ZWQoKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHN0 b3JlIHRoZSByZXN1bHQgb2YgZWFjaCBxdWVyeSBpbiBkaWN0aW9uYXJ5Ci0gICAgICAgICAgICAg ICAgICAgICAgICBxdWVyeV9yZXNbY291bnRdID0gewotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdzdGF0dXMnOiBzdGF0dXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jlc3Vs dCc6IE5vbmUgaWYgcm93X2FkZGVkIGVsc2UgcmVzLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdzcWwnOiBzcWwsICdyb3dzX2FmZmVjdGVkJzogcm93c19hZmZlY3RlZCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAncm93X2FkZGVkJzogcm93X2FkZGVkCi0gICAgICAgICAgICAg ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IDEKLQotICAg ICAgICAgICAgIyBDb21taXQgdGhlIHRyYW5zYWN0aW9uIGlmIHRoZXJlIGlzIG5vIGVycm9yIGZv dW5kCi0gICAgICAgICAgICBjb25uLmV4ZWN1dGVfdm9pZCgnQ09NTUlUOycpCi0KLSAgICAgICAg cmV0dXJuIHN0YXR1cywgcmVzLCBxdWVyeV9yZXMsIF9yb3dpZAorICAgICAgICByZXR1cm4gc2F2 ZV9jaGFuZ2VkX2RhdGEoY2hhbmdlZF9kYXRhPWNoYW5nZWRfZGF0YSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbHVtbnNfaW5mbz1jb2x1bW5zX2luZm8sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kX29iaj1zZWxmLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY2xpZW50X3ByaW1hcnlfa2V5PWNsaWVudF9wcmltYXJ5X2tleSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm49Y29ubikKIAogCiBjbGFzcyBW aWV3Q29tbWFuZChHcmlkQ29tbWFuZCk6CkBAIC0xMTEzLDE4ICs4NjAsODggQEAgY2xhc3MgUXVl cnlUb29sQ29tbWFuZChCYXNlQ29tbWFuZCwgRmV0Y2hlZFJvd1RyYWNrZXIpOgogICAgICAgICBz ZWxmLmF1dG9fcm9sbGJhY2sgPSBGYWxzZQogICAgICAgICBzZWxmLmF1dG9fY29tbWl0ID0gVHJ1 ZQogCisgICAgICAgICMgQXR0cmlidXRlcyBuZWVkZWQgdG8gYmUgYWJsZSB0byBlZGl0IHVwZGF0 YWJsZSByZXN1bHRzZWx0cworICAgICAgICBzZWxmLmlzX3VwZGF0YWJsZV9yZXN1bHRzZXQgPSBG YWxzZQorICAgICAgICBzZWxmLnByaW1hcnlfa2V5cyA9IE5vbmUKKyAgICAgICAgc2VsZi5wa19u YW1lcyA9IE5vbmUKKwogICAgIGRlZiBnZXRfc3FsKHNlbGYsIGRlZmF1bHRfY29ubj1Ob25lKToK ICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRlZiBnZXRfYWxsX2NvbHVtbnNfd2l0aF9vcmRl cihzZWxmLCBkZWZhdWx0X2Nvbm49Tm9uZSk6CiAgICAgICAgIHJldHVybiBOb25lCiAKKyAgICBk ZWYgZ2V0X3ByaW1hcnlfa2V5cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYucGtfbmFtZXMs IHNlbGYucHJpbWFyeV9rZXlzCisKICAgICBkZWYgY2FuX2VkaXQoc2VsZik6Ci0gICAgICAgIHJl dHVybiBGYWxzZQorICAgICAgICByZXR1cm4gc2VsZi5pc191cGRhdGFibGVfcmVzdWx0c2V0CiAK ICAgICBkZWYgY2FuX2ZpbHRlcihzZWxmKToKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKKyAgICBk ZWYgY2hlY2tfdXBkYXRhYmxlX3Jlc3VsdHNfcGtleXMoc2VsZik6CisgICAgICAgICIiIgorICAg ICAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGxhc3Qg c3VjY2Vzc2Z1bCBxdWVyeQorICAgICAgICAgICAgcHJvZHVjZWQgdXBkYXRhYmxlIHJlc3VsdHMg YW5kIHNldHMgdGhlIG5lY2Vzc2FyeSBmbGFncyBhbmQKKyAgICAgICAgICAgIGF0dHJpYnV0ZXMg YWNjb3JkaW5nbHkKKyAgICAgICAgIiIiCisgICAgICAgICMgRmV0Y2ggdGhlIGNvbm5lY3Rpb24g b2JqZWN0CisgICAgICAgIGRyaXZlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklWRVIpCisg ICAgICAgIG1hbmFnZXIgPSBkcml2ZXIuY29ubmVjdGlvbl9tYW5hZ2VyKHNlbGYuc2lkKQorICAg ICAgICBjb25uID0gbWFuYWdlci5jb25uZWN0aW9uKGRpZD1zZWxmLmRpZCwgY29ubl9pZD1zZWxm LmNvbm5faWQpCisKKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBxdWVyeSByZXN1bHRzIGFyZSBy ZWFkeSBmaXJzdAorICAgICAgICBzdGF0dXMsIHJlc3VsdCA9IGNvbm4ucG9sbCgKKyAgICAgICAg ICAgIGZvcm1hdHRlZF9leGNlcHRpb25fbXNnPVRydWUsIG5vX3Jlc3VsdD1UcnVlKQorICAgICAg ICBpZiBzdGF0dXMgIT0gQVNZTkNfT0s6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAj IEdldCB0aGUgcGF0aCB0byB0aGUgc3FsIHRlbXBsYXRlcworICAgICAgICBzcWxfcGF0aCA9ICdz cWxlZGl0b3Ivc3FsLyN7MH0jJy5mb3JtYXQobWFuYWdlci52ZXJzaW9uKQorCisgICAgICAgIHNl bGYuaXNfdXBkYXRhYmxlX3Jlc3VsdHNldCwgc2VsZi5wcmltYXJ5X2tleXMsIHBrX25hbWVzLCB0 YWJsZV9vaWQgPSBcCisgICAgICAgICAgICBpc19xdWVyeV9yZXN1bHRzZXRfdXBkYXRhYmxlKGNv bm4sIHNxbF9wYXRoKQorCisgICAgICAgICMgQ3JlYXRlIHBrX25hbWVzIGF0dHJpYnV0ZSBpbiB0 aGUgcmVxdWlyZWQgZm9ybWF0CisgICAgICAgIGlmIHBrX25hbWVzIGlzIG5vdCBOb25lOgorICAg ICAgICAgICAgc2VsZi5wa19uYW1lcyA9ICcnCisKKyAgICAgICAgICAgIGZvciBwa19uYW1lIGlu IHBrX25hbWVzOgorICAgICAgICAgICAgICAgIHNlbGYucGtfbmFtZXMgKz0gZHJpdmVyLnF0SWRl bnQoY29ubiwgcGtfbmFtZSkgKyAnLCcKKworICAgICAgICAgICAgaWYgc2VsZi5wa19uYW1lcyAh PSAnJzoKKyAgICAgICAgICAgICAgICAjIFJlbW92ZSBsYXN0IGNoYXJhY3RlciBmcm9tIHRoZSBz dHJpbmcKKyAgICAgICAgICAgICAgICBzZWxmLnBrX25hbWVzID0gc2VsZi5wa19uYW1lc1s6LTFd CisKKyAgICAgICAgIyBBZGQgYXR0cmlidXRlcyByZXF1aXJlZCB0byBiZSBhYmxlIHRvIHVwZGF0 ZSB0YWJsZSBkYXRhCisgICAgICAgIGlmIHNlbGYuaXNfdXBkYXRhYmxlX3Jlc3VsdHNldDoKKyAg ICAgICAgICAgIHNlbGYuX19zZXRfdXBkYXRhYmxlX3Jlc3VsdHNfYXR0cnMoc3FsX3BhdGg9c3Fs X3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRh YmxlX29pZD10YWJsZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbm49Y29ubikKKworICAgIGRlZiBzYXZlKHNlbGYsCisgICAgICAgICAgICAg Y2hhbmdlZF9kYXRhLAorICAgICAgICAgICAgIGNvbHVtbnNfaW5mbywKKyAgICAgICAgICAgICBj bGllbnRfcHJpbWFyeV9rZXk9J19fdGVtcF9QSycsCisgICAgICAgICAgICAgZGVmYXVsdF9jb25u PU5vbmUpOgorICAgICAgICBpZiBub3Qgc2VsZi5pc191cGRhdGFibGVfcmVzdWx0c2V0OgorICAg ICAgICAgICAgcmV0dXJuIEZhbHNlLCBnZXR0ZXh0KCdSZXN1bHRzZXQgaXMgbm90IHVwZGF0YWJs ZS4nKSwgTm9uZSwgTm9uZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZHJpdmVyID0gZ2V0 X2RyaXZlcihQR19ERUZBVUxUX0RSSVZFUikKKyAgICAgICAgICAgIGlmIGRlZmF1bHRfY29ubiBp cyBOb25lOgorICAgICAgICAgICAgICAgIG1hbmFnZXIgPSBkcml2ZXIuY29ubmVjdGlvbl9tYW5h Z2VyKHNlbGYuc2lkKQorICAgICAgICAgICAgICAgIGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rpb24o ZGlkPXNlbGYuZGlkLCBjb25uX2lkPXNlbGYuY29ubl9pZCkKKyAgICAgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICAgICAgY29ubiA9IGRlZmF1bHRfY29ubgorCisgICAgICAgICAgICByZXR1cm4g c2F2ZV9jaGFuZ2VkX2RhdGEoY2hhbmdlZF9kYXRhPWNoYW5nZWRfZGF0YSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zX2luZm89Y29sdW1uc19pbmZvLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm49Y29ubiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kX29iaj1zZWxmLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9wcmltYXJ5X2tleT1jbGllbnRfcHJpbWFy eV9rZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b19jb21taXQ9 c2VsZi5hdXRvX2NvbW1pdCkKKwogICAgIGRlZiBzZXRfY29ubmVjdGlvbl9pZChzZWxmLCBjb25u X2lkKToKICAgICAgICAgc2VsZi5jb25uX2lkID0gY29ubl9pZAogCkBAIC0xMTMzLDMgKzk1MCwy OCBAQCBjbGFzcyBRdWVyeVRvb2xDb21tYW5kKEJhc2VDb21tYW5kLCBGZXRjaGVkUm93VHJhY2tl cik6CiAKICAgICBkZWYgc2V0X2F1dG9fY29tbWl0KHNlbGYsIGF1dG9fY29tbWl0KToKICAgICAg ICAgc2VsZi5hdXRvX2NvbW1pdCA9IGF1dG9fY29tbWl0CisKKyAgICBkZWYgX19zZXRfdXBkYXRh YmxlX3Jlc3VsdHNfYXR0cnMoc2VsZiwgc3FsX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRhYmxlX29pZCwgY29ubik6CisgICAgICAgICMgU2V0IHRlbXBsYXRl IHBhdGggZm9yIHNxbCBzY3JpcHRzIGFuZCB0aGUgdGFibGUgb2JqZWN0IGlkCisgICAgICAgIHNl bGYuc3FsX3BhdGggPSBzcWxfcGF0aAorICAgICAgICBzZWxmLm9ial9pZCA9IHRhYmxlX29pZAor CisgICAgICAgIGlmIGNvbm4uY29ubmVjdGVkKCk6CisgICAgICAgICAgICAjIEZldGNoIHRoZSBO YW1lc3BhY2UgTmFtZSBhbmQgb2JqZWN0IE5hbWUKKyAgICAgICAgICAgIHF1ZXJ5ID0gcmVuZGVy X3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnNxbF9wYXRoLCAnb2Jq ZWN0bmFtZS5zcWwnXSksCisgICAgICAgICAgICAgICAgb2JqX2lkPXNlbGYub2JqX2lkCisgICAg ICAgICAgICApCisKKyAgICAgICAgICAgIHN0YXR1cywgcmVzdWx0ID0gY29ubi5leGVjdXRlX2Rp Y3QocXVlcnkpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJh aXNlIEV4Y2VwdGlvbihyZXN1bHQpCisKKyAgICAgICAgICAgIHNlbGYubnNwX25hbWUgPSByZXN1 bHRbJ3Jvd3MnXVswXVsnbnNwbmFtZSddCisgICAgICAgICAgICBzZWxmLm9iamVjdF9uYW1lID0g cmVzdWx0Wydyb3dzJ11bMF1bJ3JlbG5hbWUnXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg cmFpc2UgRXhjZXB0aW9uKGdldHRleHQoCisgICAgICAgICAgICAgICAgJ05vdCBjb25uZWN0ZWQg dG8gc2VydmVyIG9yIGNvbm5lY3Rpb24gd2l0aCB0aGUgc2VydmVyICcKKyAgICAgICAgICAgICAg ICAnaGFzIGJlZW4gY2xvc2VkLicpCisgICAgICAgICAgICApCmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2Nzcy9zcWxlZGl0b3IuY3NzIGIvd2ViL3BnYWRt aW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9jc3Mvc3FsZWRpdG9yLmNzcwppbmRleCA4NmQzZGVm Yy4uMjE0NDgzMjcgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0 aWMvY3NzL3NxbGVkaXRvci5jc3MKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0 YXRpYy9jc3Mvc3FsZWRpdG9yLmNzcwpAQCAtMjkxLDcgKzI5MSw3IEBAIGlucHV0LmVkaXRvci1j aGVja2JveDpmb2N1cyB7CiAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnLi4vaW1nL2Rpc2Nvbm5l Y3Quc3ZnJyk7CiB9CiAKLS5pY29uLWNvbW1pdCwgLmljb24tcm9sbGJhY2sgeworLmljb24tY29t bWl0LCAuaWNvbi1yb2xsYmFjaywgLmljb24tc2F2ZS1kYXRhLWNoYW5nZXMgewogICBkaXNwbGF5 OiBpbmxpbmUtYmxvY2s7CiAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjsKICAgdmVydGljYWwtYWxp Z246IG1pZGRsZTsKQEAgLTMxMSw2ICszMTEsMTAgQEAgaW5wdXQuZWRpdG9yLWNoZWNrYm94OmZv Y3VzIHsKICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcuLi9pbWcvcm9sbGJhY2suc3ZnJykgIWlt cG9ydGFudDsKIH0KIAorLmljb24tc2F2ZS1kYXRhLWNoYW5nZXMgeworICBiYWNrZ3JvdW5kLWlt YWdlOiB1cmwoJy4uL2ltZy9zYXZlX2RhdGFfY2hhbmdlcy5zdmcnKSAhaW1wb3J0YW50OworfQor CiAuYWpzLWJvZHkgLndhcm4taGVhZGVyIHsKICAgZm9udC1zaXplOiAxM3B4OwogICBmb250LXdl aWdodDogYm9sZDsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0 aWMvaW1nL3NhdmVfZGF0YV9jaGFuZ2VzLnN2ZyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRv ci9zdGF0aWMvaW1nL3NhdmVfZGF0YV9jaGFuZ2VzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMC4uYmQyYzUxOGUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90 b29scy9zcWxlZGl0b3Ivc3RhdGljL2ltZy9zYXZlX2RhdGFfY2hhbmdlcy5zdmcKQEAgLTAsMCAr MSwxMSBAQAorPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHN0eWxlPSJl bmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDE3OTIgMTc5MjsiIHhtbDpzcGFjZT0icHJlc2VydmUi IHdpZHRoPSIxNzkyIiBoZWlnaHQ9IjE3OTIiPjxyZWN0IGlkPSJiYWNrZ3JvdW5kcmVjdCIgd2lk dGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgeD0iMCIgeT0iMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJu b25lIi8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCS5zdDB7ZmlsbDojRkZGRkZGO30KKzwv c3R5bGU+Cis8dGl0bGU+c2F2ZV9kYXRhX2NoYW5nZXM8L3RpdGxlPgorCisKKzxnIGNsYXNzPSJj dXJyZW50TGF5ZXIiIHN0eWxlPSIiPjx0aXRsZT5MYXllciAxPC90aXRsZT48cGF0aCBkPSJNNjIz LjAzMTk4MjQyMTg3NSwxMzg1LjEzMDg5NDE4NDExMjUgdi0xNzIuMTI5ODgyODEyNSBjMCwtOC4z Mzc1NDA2MjY1MjU4NzkgLTIuNTcyNDU4NzQ0MDQ5MDcyMywtMTUuMjQwNjY2Mzg5NDY1MzMyIC03 LjcxNzM3NjIzMjE0NzIxNywtMjAuNjE5NzI0MjczNjgxNjQgcy0xMS43NDc1NjE0NTQ3NzI5NSwt OC4wNjg1ODgyNTY4MzU5MzggLTE5LjcyMjE4MzIyNzUzOTA2MiwtOC4wNjg1ODgyNTY4MzU5Mzgg SDMyMS4xOTc5Njc1MjkyOTY5IGMtNy45NzQ2MjIyNDk2MDMyNzE1LDAgLTE0LjU3NzI2NjY5MzEx NTIzNCwyLjY4OTUyOTQxODk0NTMxMjUgLTE5LjcyMjE4MzIyNzUzOTA2Miw4LjA2ODU4ODI1Njgz NTkzOCBzLTcuNzE3Mzc2MjMyMTQ3MjE3LDEyLjI4MjE4MzY0NzE1NTc2MiAtNy43MTczNzYyMzIx NDcyMTcsMjAuNjE5NzI0MjczNjgxNjQgdjE3Mi4xMjk4ODI4MTI1IGMwLDguMzM3NTQwNjI2NTI1 ODc5IDIuNTcyNDU4NzQ0MDQ5MDcyMywxNS4yNDA2NjYzODk0NjUzMzIgNy43MTczNzYyMzIxNDcy MTcsMjAuNjE5NzI0MjczNjgxNjQgczExLjc0NzU2MTQ1NDc3Mjk1LDguMDY4NTg4MjU2ODM1OTM4 IDE5LjcyMjE4MzIyNzUzOTA2Miw4LjA2ODU4ODI1NjgzNTkzOCBoMjc0LjM5NTU5OTM2NTIzNDQg YzcuOTc0NjIyMjQ5NjAzMjcxNSwwIDE0LjU3NzI2NjY5MzExNTIzNCwtMi42ODk1Mjk0MTg5NDUz MTI1IDE5LjcyMjE4MzIyNzUzOTA2MiwtOC4wNjg1ODgyNTY4MzU5MzggUzYyMy4wMzE5ODI0MjE4 NzUsMTM5My40Njg0MTg1OTgxNzUgNjIzLjAzMTk4MjQyMTg3NSwxMzg1LjEzMDg5NDE4NDExMjUg ek02MjMuMDMxOTgyNDIxODc1LDEwNDAuODY5Nzg1Nzg1Njc1IFY4NjguNzM5NTk3Nzk3MzkzOCBj MCwtOC4zMzc1NDA2MjY1MjU4NzkgLTIuNTcyNDU4NzQ0MDQ5MDcyMywtMTUuMjQwNjY2Mzg5NDY1 MzMyIC03LjcxNzM3NjIzMjE0NzIxNywtMjAuNjE5NzI0MjczNjgxNjQgcy0xMS43NDc1NjE0NTQ3 NzI5NSwtOC4wNjg1ODgyNTY4MzU5MzggLTE5LjcyMjE4MzIyNzUzOTA2MiwtOC4wNjg1ODgyNTY4 MzU5MzggSDMyMS4xOTc5Njc1MjkyOTY5IGMtNy45NzQ2MjIyNDk2MDMyNzE1LDAgLTE0LjU3NzI2 NjY5MzExNTIzNCwyLjY4OTUyOTQxODk0NTMxMjUgLTE5LjcyMjE4MzIyNzUzOTA2Miw4LjA2ODU4 ODI1NjgzNTkzOCBzLTcuNzE3Mzc2MjMyMTQ3MjE3LDEyLjI4MjE4MzY0NzE1NTc2MiAtNy43MTcz NzYyMzIxNDcyMTcsMjAuNjE5NzI0MjczNjgxNjQgdjE3Mi4xMjk4ODI4MTI1IGMwLDguMzM3NTQw NjI2NTI1ODc5IDIuNTcyNDU4NzQ0MDQ5MDcyMywxNS4yNDA2NjYzODk0NjUzMzIgNy43MTczNzYy MzIxNDcyMTcsMjAuNjE5NzI0MjczNjgxNjQgczExLjc0NzU2MTQ1NDc3Mjk1LDguMDY4NTg4MjU2 ODM1OTM4IDE5LjcyMjE4MzIyNzUzOTA2Miw4LjA2ODU4ODI1NjgzNTkzOCBoMjc0LjM5NTU5OTM2 NTIzNDQgYzcuOTc0NjIyMjQ5NjAzMjcxNSwwIDE0LjU3NzI2NjY5MzExNTIzNCwtMi42ODk1Mjk0 MTg5NDUzMTI1IDE5LjcyMjE4MzIyNzUzOTA2MiwtOC4wNjg1ODgyNTY4MzU5MzggUzYyMy4wMzE5 ODI0MjE4NzUsMTA0OS4yMDc1NTQzNDAzNjI1IDYyMy4wMzE5ODI0MjE4NzUsMTA0MC44Njk3ODU3 ODU2NzUgek0xMDYyLjA2NTY3MzgyODEyNSwxMzg1LjEzMDg5NDE4NDExMjUgdi0xNzIuMTI5ODgy ODEyNSBjMCwtOC4zMzc1NDA2MjY1MjU4NzkgLTIuNTcyNDU4NzQ0MDQ5MDcyMywtMTUuMjQwNjY2 Mzg5NDY1MzMyIC03LjcxNzM3NjIzMjE0NzIxNywtMjAuNjE5NzI0MjczNjgxNjQgcy0xMS43NDc1 NjE0NTQ3NzI5NSwtOC4wNjg1ODgyNTY4MzU5MzggLTE5LjcyMjE4MzIyNzUzOTA2MiwtOC4wNjg1 ODgyNTY4MzU5MzggSDc2MC4yMjk2NzUyOTI5Njg4IGMtNy45NzQ2MjIyNDk2MDMyNzE1LDAgLTE0 LjU3NzI2NjY5MzExNTIzNCwyLjY4OTUyOTQxODk0NTMxMjUgLTE5LjcyMjE4MzIyNzUzOTA2Miw4 LjA2ODU4ODI1NjgzNTkzOCBzLTcuNzE3Mzc2MjMyMTQ3MjE3LDEyLjI4MjE4MzY0NzE1NTc2MiAt Ny43MTczNzYyMzIxNDcyMTcsMjAuNjE5NzI0MjczNjgxNjQgdjE3Mi4xMjk4ODI4MTI1IGMwLDgu MzM3NTQwNjI2NTI1ODc5IDIuNTcyNDU4NzQ0MDQ5MDcyMywxNS4yNDA2NjYzODk0NjUzMzIgNy43 MTczNzYyMzIxNDcyMTcsMjAuNjE5NzI0MjczNjgxNjQgczExLjc0NzU2MTQ1NDc3Mjk1LDguMDY4 NTg4MjU2ODM1OTM4IDE5LjcyMjE4MzIyNzUzOTA2Miw4LjA2ODU4ODI1NjgzNTkzOCBoMjc0LjM5 NTU5OTM2NTIzNDQgYzcuOTc0NjIyMjQ5NjAzMjcxNSwwIDE0LjU3NzI2NjY5MzExNTIzNCwtMi42 ODk1Mjk0MTg5NDUzMTI1IDE5LjcyMjE4MzIyNzUzOTA2MiwtOC4wNjg1ODgyNTY4MzU5MzggUzEw NjIuMDY1NjczODI4MTI1LDEzOTMuNDY4NDE4NTk4MTc1IDEwNjIuMDY1NjczODI4MTI1LDEzODUu MTMwODk0MTg0MTEyNSB6TTYyMy4wMzE5ODI0MjE4NzUsNjk2LjYwOTcxNDk4NDg5MzggVjUyNC40 ODA1MDM1NTkxMTI1IGMwLC04LjMzNzU0MDYyNjUyNTg3OSAtMi41NzI0NTg3NDQwNDkwNzIzLC0x NS4yNDA2NjYzODk0NjUzMzIgLTcuNzE3Mzc2MjMyMTQ3MjE3LC0yMC42MTk3MjQyNzM2ODE2NCBz LTExLjc0NzU2MTQ1NDc3Mjk1LC04LjA2ODU4ODI1NjgzNTkzOCAtMTkuNzIyMTgzMjI3NTM5MDYy LC04LjA2ODU4ODI1NjgzNTkzOCBIMzIxLjE5Nzk2NzUyOTI5NjkgYy03Ljk3NDYyMjI0OTYwMzI3 MTUsMCAtMTQuNTc3MjY2NjkzMTE1MjM0LDIuNjg5NTI5NDE4OTQ1MzEyNSAtMTkuNzIyMTgzMjI3 NTM5MDYyLDguMDY4NTg4MjU2ODM1OTM4IHMtNy43MTczNzYyMzIxNDcyMTcsMTIuMjgyMTgzNjQ3 MTU1NzYyIC03LjcxNzM3NjIzMjE0NzIxNywyMC42MTk3MjQyNzM2ODE2NCB2MTcyLjEyOTg4Mjgx MjUgYzAsOC4zMzc1NDA2MjY1MjU4NzkgMi41NzI0NTg3NDQwNDkwNzIzLDE1LjI0MDY2NjM4OTQ2 NTMzMiA3LjcxNzM3NjIzMjE0NzIxNywyMC42MTk3MjQyNzM2ODE2NCBzMTEuNzQ3NTYxNDU0Nzcy OTUsOC4wNjg1ODgyNTY4MzU5MzggMTkuNzIyMTgzMjI3NTM5MDYyLDguMDY4NTg4MjU2ODM1OTM4 IGgyNzQuMzk1NTk5MzY1MjM0NCBjNy45NzQ2MjIyNDk2MDMyNzE1LDAgMTQuNTc3MjY2NjkzMTE1 MjM0LC0yLjY4OTUyOTQxODk0NTMxMjUgMTkuNzIyMTgzMjI3NTM5MDYyLC04LjA2ODU4ODI1Njgz NTkzOCBTNjIzLjAzMTk4MjQyMTg3NSw3MDQuOTQ3MjM5Mzk4OTU2MyA2MjMuMDMxOTgyNDIxODc1 LDY5Ni42MDk3MTQ5ODQ4OTM4IHpNMTA2Mi4wNjU2NzM4MjgxMjUsMTA0MC44Njk3ODU3ODU2NzUg Vjg2OC43Mzk1OTc3OTczOTM4IGMwLC04LjMzNzU0MDYyNjUyNTg3OSAtMi41NzI0NTg3NDQwNDkw NzIzLC0xNS4yNDA2NjYzODk0NjUzMzIgLTcuNzE3Mzc2MjMyMTQ3MjE3LC0yMC42MTk3MjQyNzM2 ODE2NCBzLTExLjc0NzU2MTQ1NDc3Mjk1LC04LjA2ODU4ODI1NjgzNTkzOCAtMTkuNzIyMTgzMjI3 NTM5MDYyLC04LjA2ODU4ODI1NjgzNTkzOCBINzYwLjIyOTY3NTI5Mjk2ODggYy03Ljk3NDYyMjI0 OTYwMzI3MTUsMCAtMTQuNTc3MjY2NjkzMTE1MjM0LDIuNjg5NTI5NDE4OTQ1MzEyNSAtMTkuNzIy MTgzMjI3NTM5MDYyLDguMDY4NTg4MjU2ODM1OTM4IHMtNy43MTczNzYyMzIxNDcyMTcsMTIuMjgy MTgzNjQ3MTU1NzYyIC03LjcxNzM3NjIzMjE0NzIxNywyMC42MTk3MjQyNzM2ODE2NCB2MTcyLjEy OTg4MjgxMjUgYzAsOC4zMzc1NDA2MjY1MjU4NzkgMi41NzI0NTg3NDQwNDkwNzIzLDE1LjI0MDY2 NjM4OTQ2NTMzMiA3LjcxNzM3NjIzMjE0NzIxNywyMC42MTk3MjQyNzM2ODE2NCBzMTEuNzQ3NTYx NDU0NzcyOTUsOC4wNjg1ODgyNTY4MzU5MzggMTkuNzIyMTgzMjI3NTM5MDYyLDguMDY4NTg4MjU2 ODM1OTM4IGgyNzQuMzk1NTk5MzY1MjM0NCBjNy45NzQ2MjIyNDk2MDMyNzE1LDAgMTQuNTc3MjY2 NjkzMTE1MjM0LC0yLjY4OTUyOTQxODk0NTMxMjUgMTkuNzIyMTgzMjI3NTM5MDYyLC04LjA2ODU4 ODI1NjgzNTkzOCBTMTA2Mi4wNjU2NzM4MjgxMjUsMTA0OS4yMDc1NTQzNDAzNjI1IDEwNjIuMDY1 NjczODI4MTI1LDEwNDAuODY5Nzg1Nzg1Njc1IHpNMTUwMS4xMDAzNDE3OTY4NzUsMTM4NS4xMzA4 OTQxODQxMTI1IHYtMTcyLjEyOTg4MjgxMjUgYzAsLTguMzM3NTQwNjI2NTI1ODc5IC0yLjU3MjQ1 ODc0NDA0OTA3MjMsLTE1LjI0MDY2NjM4OTQ2NTMzMiAtNy43MTczNzYyMzIxNDcyMTcsLTIwLjYx OTcyNDI3MzY4MTY0IHMtMTEuNzQ3NTYxNDU0NzcyOTUsLTguMDY4NTg4MjU2ODM1OTM4IC0xOS43 MjIxODMyMjc1MzkwNjIsLTguMDY4NTg4MjU2ODM1OTM4IGgtMjc0LjM5NTU5OTM2NTIzNDQgYy03 Ljk3NDYyMjI0OTYwMzI3MTUsMCAtMTQuNTc3MjY2NjkzMTE1MjM0LDIuNjg5NTI5NDE4OTQ1MzEy NSAtMTkuNzIyMTgzMjI3NTM5MDYyLDguMDY4NTg4MjU2ODM1OTM4IHMtNy43MTczNzYyMzIxNDcy MTcsMTIuMjgyMTgzNjQ3MTU1NzYyIC03LjcxNzM3NjIzMjE0NzIxNywyMC42MTk3MjQyNzM2ODE2 NCB2MTcyLjEyOTg4MjgxMjUgYzAsOC4zMzc1NDA2MjY1MjU4NzkgMi41NzI0NTg3NDQwNDkwNzIz LDE1LjI0MDY2NjM4OTQ2NTMzMiA3LjcxNzM3NjIzMjE0NzIxNywyMC42MTk3MjQyNzM2ODE2NCBz MTEuNzQ3NTYxNDU0NzcyOTUsOC4wNjg1ODgyNTY4MzU5MzggMTkuNzIyMTgzMjI3NTM5MDYyLDgu MDY4NTg4MjU2ODM1OTM4IGgyNzQuMzk1NTk5MzY1MjM0NCBjNy45NzQ2MjIyNDk2MDMyNzE1LDAg MTQuNTc3MjY2NjkzMTE1MjM0LC0yLjY4OTUyOTQxODk0NTMxMjUgMTkuNzIyMTgzMjI3NTM5MDYy LC04LjA2ODU4ODI1NjgzNTkzOCBTMTUwMS4xMDAzNDE3OTY4NzUsMTM5My40Njg0MTg1OTgxNzUg MTUwMS4xMDAzNDE3OTY4NzUsMTM4NS4xMzA4OTQxODQxMTI1IHpNMTA2Mi4wNjU2NzM4MjgxMjUs Njk2LjYwOTcxNDk4NDg5MzggVjUyNC40ODA1MDM1NTkxMTI1IGMwLC04LjMzNzU0MDYyNjUyNTg3 OSAtMi41NzI0NTg3NDQwNDkwNzIzLC0xNS4yNDA2NjYzODk0NjUzMzIgLTcuNzE3Mzc2MjMyMTQ3 MjE3LC0yMC42MTk3MjQyNzM2ODE2NCBzLTExLjc0NzU2MTQ1NDc3Mjk1LC04LjA2ODU4ODI1Njgz NTkzOCAtMTkuNzIyMTgzMjI3NTM5MDYyLC04LjA2ODU4ODI1NjgzNTkzOCBINzYwLjIyOTY3NTI5 Mjk2ODggYy03Ljk3NDYyMjI0OTYwMzI3MTUsMCAtMTQuNTc3MjY2NjkzMTE1MjM0LDIuNjg5NTI5 NDE4OTQ1MzEyNSAtMTkuNzIyMTgzMjI3NTM5MDYyLDguMDY4NTg4MjU2ODM1OTM4IHMtNy43MTcz NzYyMzIxNDcyMTcsMTIuMjgyMTgzNjQ3MTU1NzYyIC03LjcxNzM3NjIzMjE0NzIxNywyMC42MTk3 MjQyNzM2ODE2NCB2MTcyLjEyOTg4MjgxMjUgYzAsOC4zMzc1NDA2MjY1MjU4NzkgMi41NzI0NTg3 NDQwNDkwNzIzLDE1LjI0MDY2NjM4OTQ2NTMzMiA3LjcxNzM3NjIzMjE0NzIxNywyMC42MTk3MjQy NzM2ODE2NCBzMTEuNzQ3NTYxNDU0NzcyOTUsOC4wNjg1ODgyNTY4MzU5MzggMTkuNzIyMTgzMjI3 NTM5MDYyLDguMDY4NTg4MjU2ODM1OTM4IGgyNzQuMzk1NTk5MzY1MjM0NCBjNy45NzQ2MjIyNDk2 MDMyNzE1LDAgMTQuNTc3MjY2NjkzMTE1MjM0LC0yLjY4OTUyOTQxODk0NTMxMjUgMTkuNzIyMTgz MjI3NTM5MDYyLC04LjA2ODU4ODI1NjgzNTkzOCBTMTA2Mi4wNjU2NzM4MjgxMjUsNzA0Ljk0NzIz OTM5ODk1NjMgMTA2Mi4wNjU2NzM4MjgxMjUsNjk2LjYwOTcxNDk4NDg5Mzggek0xNTAxLjEwMDM0 MTc5Njg3NSwxMDQwLjg2OTc4NTc4NTY3NSBWODY4LjczOTU5Nzc5NzM5MzggYzAsLTguMzM3NTQw NjI2NTI1ODc5IC0yLjU3MjQ1ODc0NDA0OTA3MjMsLTE1LjI0MDY2NjM4OTQ2NTMzMiAtNy43MTcz NzYyMzIxNDcyMTcsLTIwLjYxOTcyNDI3MzY4MTY0IHMtMTEuNzQ3NTYxNDU0NzcyOTUsLTguMDY4 NTg4MjU2ODM1OTM4IC0xOS43MjIxODMyMjc1MzkwNjIsLTguMDY4NTg4MjU2ODM1OTM4IGgtMjc0 LjM5NTU5OTM2NTIzNDQgYy03Ljk3NDYyMjI0OTYwMzI3MTUsMCAtMTQuNTc3MjY2NjkzMTE1MjM0 LDIuNjg5NTI5NDE4OTQ1MzEyNSAtMTkuNzIyMTgzMjI3NTM5MDYyLDguMDY4NTg4MjU2ODM1OTM4 IHMtNy43MTczNzYyMzIxNDcyMTcsMTIuMjgyMTgzNjQ3MTU1NzYyIC03LjcxNzM3NjIzMjE0NzIx NywyMC42MTk3MjQyNzM2ODE2NCB2MTcyLjEyOTg4MjgxMjUgYzAsOC4zMzc1NDA2MjY1MjU4Nzkg Mi41NzI0NTg3NDQwNDkwNzIzLDE1LjI0MDY2NjM4OTQ2NTMzMiA3LjcxNzM3NjIzMjE0NzIxNywy MC42MTk3MjQyNzM2ODE2NCBzMTEuNzQ3NTYxNDU0NzcyOTUsOC4wNjg1ODgyNTY4MzU5MzggMTku NzIyMTgzMjI3NTM5MDYyLDguMDY4NTg4MjU2ODM1OTM4IGgyNzQuMzk1NTk5MzY1MjM0NCBjNy45 NzQ2MjIyNDk2MDMyNzE1LDAgMTQuNTc3MjY2NjkzMTE1MjM0LC0yLjY4OTUyOTQxODk0NTMxMjUg MTkuNzIyMTgzMjI3NTM5MDYyLC04LjA2ODU4ODI1NjgzNTkzOCBTMTUwMS4xMDAzNDE3OTY4NzUs MTA0OS4yMDc1NTQzNDAzNjI1IDE1MDEuMTAwMzQxNzk2ODc1LDEwNDAuODY5Nzg1Nzg1Njc1IHpN MTUwMS4xMDAzNDE3OTY4NzUsNjk2LjYwOTcxNDk4NDg5MzggVjUyNC40ODA1MDM1NTkxMTI1IGMw LC04LjMzNzU0MDYyNjUyNTg3OSAtMi41NzI0NTg3NDQwNDkwNzIzLC0xNS4yNDA2NjYzODk0NjUz MzIgLTcuNzE3Mzc2MjMyMTQ3MjE3LC0yMC42MTk3MjQyNzM2ODE2NCBzLTExLjc0NzU2MTQ1NDc3 Mjk1LC04LjA2ODU4ODI1NjgzNTkzOCAtMTkuNzIyMTgzMjI3NTM5MDYyLC04LjA2ODU4ODI1Njgz NTkzOCBoLTI3NC4zOTU1OTkzNjUyMzQ0IGMtNy45NzQ2MjIyNDk2MDMyNzE1LDAgLTE0LjU3NzI2 NjY5MzExNTIzNCwyLjY4OTUyOTQxODk0NTMxMjUgLTE5LjcyMjE4MzIyNzUzOTA2Miw4LjA2ODU4 ODI1NjgzNTkzOCBzLTcuNzE3Mzc2MjMyMTQ3MjE3LDEyLjI4MjE4MzY0NzE1NTc2MiAtNy43MTcz NzYyMzIxNDcyMTcsMjAuNjE5NzI0MjczNjgxNjQgdjE3Mi4xMjk4ODI4MTI1IGMwLDguMzM3NTQw NjI2NTI1ODc5IDIuNTcyNDU4NzQ0MDQ5MDcyMywxNS4yNDA2NjYzODk0NjUzMzIgNy43MTczNzYy MzIxNDcyMTcsMjAuNjE5NzI0MjczNjgxNjQgczExLjc0NzU2MTQ1NDc3Mjk1LDguMDY4NTg4MjU2 ODM1OTM4IDE5LjcyMjE4MzIyNzUzOTA2Miw4LjA2ODU4ODI1NjgzNTkzOCBoMjc0LjM5NTU5OTM2 NTIzNDQgYzcuOTc0NjIyMjQ5NjAzMjcxNSwwIDE0LjU3NzI2NjY5MzExNTIzNCwtMi42ODk1Mjk0 MTg5NDUzMTI1IDE5LjcyMjE4MzIyNzUzOTA2MiwtOC4wNjg1ODgyNTY4MzU5MzggUzE1MDEuMTAw MzQxNzk2ODc1LDcwNC45NDcyMzkzOTg5NTYzIDE1MDEuMTAwMzQxNzk2ODc1LDY5Ni42MDk3MTQ5 ODQ4OTM4IHpNMTYxMC44NTg2NDI1NzgxMjUsNDA5LjcyNzM5MDc2NjE0Mzggdjk3NS40MDI2NDg5 MjU3ODEyIGMwLDM5LjQ0NjQzMDIwNjI5ODgzIC0xMy40NjI1MzM5NTA4MDU2NjQsNzMuMjQ0ODQy NTI5Mjk2ODggLTQwLjMwMTg1MzE3OTkzMTY0LDEwMS4zMDU2MDMwMjczNDM3NSBzLTU5LjE2NjU0 OTY4MjYxNzE5LDQyLjEzNTk1OTYyNTI0NDE0IC05Ni44OTU5NDI2ODc5ODgyOCw0Mi4xMzU5NTk2 MjUyNDQxNCBIMzIxLjE5Nzk2NzUyOTI5NjkgYy0zNy43MjkzOTMwMDUzNzEwOTQsMCAtNzAuMDU2 NjI1MzY2MjEwOTQsLTE0LjA3NTIwMjk0MTg5NDUzMSAtOTYuODk1OTQyNjg3OTg4MjgsLTQyLjEz NTk1OTYyNTI0NDE0IHMtNDAuMzAxODUzMTc5OTMxNjQsLTYxLjg1OTE3MjgyMTA0NDkyIC00MC4z MDE4NTMxNzk5MzE2NCwtMTAxLjMwNTYwMzAyNzM0Mzc1IFY0MDkuNzI3MzkwNzY2MTQzOCBjMCwt MzkuNDQ2NDMwMjA2Mjk4ODMgMTMuNDYyNTMzOTUwODA1NjY0LC03My4yNDQ4NDI1MjkyOTY4OCA0 MC4zMDE4NTMxNzk5MzE2NCwtMTAxLjMwNTYwMzAyNzM0Mzc1IHM1OS4xNjY1NDk2ODI2MTcxOSwt NDIuMTM1OTU5NjI1MjQ0MTQgOTYuODk1OTQyNjg3OTg4MjgsLTQyLjEzNTk1OTYyNTI0NDE0IGgx MTUyLjQ2MTU0Nzg1MTU2MjUgYzM3LjcyOTM5MzAwNTM3MTA5NCwwIDcwLjA1NjYyNTM2NjIxMDk0 LDE0LjA3NTIwMjk0MTg5NDUzMSA5Ni44OTU5NDI2ODc5ODgyOCw0Mi4xMzU5NTk2MjUyNDQxNCBT MTYxMC44NTg2NDI1NzgxMjUsMzcwLjI4MDk3OTYzMzMzMTMgMTYxMC44NTg2NDI1NzgxMjUsNDA5 LjcyNzM5MDc2NjE0MzggeiIgaWQ9InN2Z18xIiBjbGFzcz0iIi8+PGcgaWQ9InN2Z18yIiBjbGFz cz0ic2VsZWN0ZWQiPgorCTxwYXRoIGQ9Ik05MDEuMTg1OTM5MzExOTgxMiwxMzAzLjcxMDkzNzUg Yy0yMi45MzY1NDQ0MTgzMzQ5NiwwIC00My41MzQ0NjE5NzUwOTc2NTYsLTguMTIxNjgzMTIwNzI3 NTM5IC01OS41NDUwNzA2NDgxOTMzNiwtMjMuNTg3NDQwNDkwNzIyNjU2IGwtMjkyLjUwODQ1MzM2 OTE0MDYsLTI4MS40MDc2ODQzMjYxNzE5IGMtMTYuNTUwMjkyOTY4NzUsLTE1LjEyMDE1NDM4MDc5 ODM0IC0yNS4yNzUxNzMxODcyNTU4NiwtMzQuOTkyMzU1MzQ2Njc5NjkgLTI1LjI3NTE3MzE4NzI1 NTg2LC01Ny40NTY1OTI1NTk4MTQ0NSBjMCwtMjIuMjkxNDI3NjEyMzA0Njg4IDguMzY1MDk0MTg0 ODc1NDg4LC00MS42NDUyMjU1MjQ5MDIzNDQgMjQuOTE1Mzg4MTA3Mjk5ODA1LC01Ny41NDI5OTE2 MzgxODM1OTQgbDMzLjE5MDUzMjY4NDMyNjE3LC0zMi4zMTM5MzQzMjYxNzE4NzUgYzAuMTc5ODk0 NDc3MTI4OTgyNTQsLTAuMTcyODAxNzYyODE5MjkwMTYgMC40NDk3MzYxNzc5MjEyOTUxNywtMC40 MzIwMDQ0NTE3NTE3MDkgMC42Mjk2MzA2MjUyNDc5NTUzLC0wLjYwNDgwNjI0NDM3MzMyMTUgYzE2 LjY0MDIzOTcxNTU3NjE3MiwtMTUuMTIwMTU0MzgwNzk4MzQgMzcuMTQ4MjA4NjE4MTY0MDYsLTIz LjA2OTAzNjQ4Mzc2NDY1IDU5LjQ1NTEyMzkwMTM2NzE5LC0yMy4wNjkwMzY0ODM3NjQ2NSBjMjIu OTM2NTQ0NDE4MzM0OTYsMCA0My41MzQ0NjE5NzUwOTc2NTYsOC4xMjE2ODMxMjA3Mjc1MzkgNTku NTQ1MDcwNjQ4MTkzMzYsMjMuNTg3NDQwNDkwNzIyNjU2IGw4Ni4xNjk0NDg4NTI1MzkwNiw4Mi43 NzIwNTY1Nzk1ODk4NCBWNjkyLjMzNjM2NDc0NjA5MzggYzAsLTIxLjY4NjYyNDUyNjk3NzU0IDgu NjM0OTM2MzMyNzAyNjM3LC00MS40NzI0MjM1NTM0NjY4IDI1LjAwNTMzMjk0Njc3NzM0NCwtNTcu MTk3MzkxNTEwMDA5NzY2IGMxNi4zNzAzOTk0NzUwOTc2NTYsLTE1LjcyNDk2MTI4MDgyMjc1NCAz Ni45NjgzMTg5MzkyMDg5ODQsLTI0LjAxOTQ0NTQxOTMxMTUyMyA1OS41NDUwNzA2NDgxOTMzNiwt MjQuMDE5NDQ1NDE5MzExNTIzIGg1Ny41NjYyMzA3NzM5MjU3OCBjMjIuNTc2NzU3NDMxMDMwMjcz LDAgNDMuMTc0Njc0OTg3NzkyOTcsOC4yOTQ0ODYwNDU4Mzc0MDIgNTkuNTQ1MDcwNjQ4MTkzMzYs MjQuMDE5NDQ1NDE5MzExNTIzIGMxNi4zNzAzOTk0NzUwOTc2NTYsMTUuNzI0OTYxMjgwODIyNzU0 IDI1LjAwNTMzMjk0Njc3NzM0NCwzNS41MTA3NTc0NDYyODkwNiAyNS4wMDUzMzI5NDY3NzczNDQs NTcuMTk3MzkxNTEwMDA5NzY2IHYyNDEuNTc2ODU4NTIwNTA3OCBsODYuMTY5NDQ4ODUyNTM5MDYs LTgyLjc3MjA1NjU3OTU4OTg0IGMxNi4xMDA1NTczMjcyNzA1MDgsLTE1LjQ2NTc1NzM2OTk5NTEx NyAzNi42MDg1MjgxMzcyMDcwMywtMjMuNTg3NDQwNDkwNzIyNjU2IDU5LjU0NTA3MDY0ODE5MzM2 LC0yMy41ODc0NDA0OTA3MjI2NTYgYzIyLjMwNjkxMzM3NTg1NDQ5MiwwIDQyLjkwNDgzNDc0NzMx NDQ1LDcuOTQ4ODgxNjI2MTI5MTUgNTkuNDU1MTIzOTAxMzY3MTksMjMuMDY5MDM2NDgzNzY0NjUg YzAuMTc5ODk0NDc3MTI4OTgyNTQsMC4xNzI4MDE3NjI4MTkyOTAxNiAwLjM1OTc4ODk1NDI1Nzk2 NTEsMC4zNDU2MDM1MjU2Mzg1ODAzIDAuNTM5NjgzNTIwNzkzOTE0OCwwLjUxODQwNTM3Nzg2NDgz NzYgbDMzLjczMDIxNjk3OTk4MDQ3LDMyLjQwMDMzMzQwNDU0MTAxNiBjMC4xNzk4OTQ0NzcxMjg5 ODI1NCwwLjE3MjgwMTc2MjgxOTI5MDE2IDAuMzU5Nzg4OTU0MjU3OTY1MSwwLjM0NTYwMzUyNTYz ODU4MDMgMC41Mzk2ODM1MjA3OTM5MTQ4LDAuNTE4NDA1Mzc3ODY0ODM3NiBjMTUuNzQwNzY3NDc4 OTQyODcxLDE1Ljk4NDE2MzI4NDMwMTc1OCAyNC4wMTU5MTExMDIyOTQ5MjIsMzUuNjgzNTY3MDQ3 MTE5MTQgMjQuMDE1OTExMTAyMjk0OTIyLDU3LjExMDk4MDk4NzU0ODgzIGMwLDIyLjAzMjIyODQ2 OTg0ODYzMyAtOC40NTUwMzk5NzgwMjczNDQsNDEuODE4MDMxMzExMDM1MTU2IC0yNC41NTU1OTUz OTc5NDkyMiw1Ny4xOTczOTE1MTAwMDk3NjYgbC0yOTIuNzc4MjI4NzU5NzY1NiwyODEuNjY2OTMx MTUyMzQzNzUgYy0wLjE3OTg5NDQ3NzEyODk4MjU0LDAuMTcyODAxNzYyODE5MjkwMTYgLTAuMzU5 Nzg4OTU0MjU3OTY1MSwwLjM0NTYwMzUyNTYzODU4MDMgLTAuNTM5NjgzNTIwNzkzOTE0OCwwLjUx ODQwNTM3Nzg2NDgzNzYgQzk0NC4wOTA4NDY1Mzg1NDM3LDEyOTUuNjc1NzgxMjUgOTIzLjQ5MzA2 ODIxODIzMTIsMTMwMy43MTA5Mzc1IDkwMS4xODU5MzkzMTE5ODEyLDEzMDMuNzEwOTM3NSB6IiBp ZD0ic3ZnXzMiLz4KKwk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNOTI5Ljk2OTIwMzQ3MjEzNzUsNjM3 LjAzOTg1NTk1NzAzMTIgYzE1LjU2MDg3MjA3Nzk0MTg5NSwwIDI5LjA1Mjk1OTQ0MjEzODY3Miw1 LjQ0MzI1NTkwMTMzNjY3IDQwLjQ3NjI1NzMyNDIxODc1LDE2LjQxNjE2ODIxMjg5MDYyNSBzMTcu MDg5OTc1MzU3MDU1NjY0LDIzLjkzMzA0ODI0ODI5MTAxNiAxNy4wODk5NzUzNTcwNTU2NjQsMzgu ODgwNDAxNjExMzI4MTI1IHYzMDQuMTMxMTM0MDMzMjAzMSBsMTMyLjIyMjQyNzM2ODE2NDA2LC0x MjcuMDA5MzAwMjMxOTMzNiBjMTEuMDYzNTExODQ4NDQ5NzA3LC0xMC42MjczMTA3NTI4Njg2NTIg MjQuNTU1NTk1Mzk3OTQ5MjIsLTE1Ljk4NDE2MzI4NDMwMTc1OCA0MC40NzYyNTczMjQyMTg3NSwt MTUuOTg0MTYzMjg0MzAxNzU4IGMxNS41NjA4NzIwNzc5NDE4OTUsMCAyOS4yMzI4NTQ4NDMxMzk2 NSw1LjM1Njg1NTM5MjQ1NjA1NSA0MC45MjU5OTg2ODc3NDQxNCwxNS45ODQxNjMyODQzMDE3NTgg bDMzLjczMDIxNjk3OTk4MDQ3LDMyLjQwMDMzMzQwNDU0MTAxNiBjMTEuMDYzNTExODQ4NDQ5NzA3 LDExLjIzMjExMzgzODE5NTggMTYuNjQwMjM5NzE1NTc2MTcyLDI0LjM2NTA1MTI2OTUzMTI1IDE2 LjY0MDIzOTcxNTU3NjE3MiwzOS4zMTI0MDQ2MzI1NjgzNiBjMCwxNS4yOTI5NTkyMTMyNTY4MzYg LTUuNTc2NzI4MzQzOTYzNjIzLDI4LjI1MzA4OTkwNDc4NTE1NiAtMTYuNjQwMjM5NzE1NTc2MTcy LDM4Ljg4MDQwMTYxMTMyODEyNSBsLTI5Mi43NzgyMjg3NTk3NjU2LDI4MS42NjY5MzExNTIzNDM3 NSBjLTExLjY5MzEzOTA3NjIzMjkxLDEwLjYyNzMxMDc1Mjg2ODY1MiAtMjUuMzY1MTIxODQxNDMw NjY0LDE1Ljk4NDE2MzI4NDMwMTc1OCAtNDAuOTI1OTk4Njg3NzQ0MTQsMTUuOTg0MTYzMjg0MzAx NzU4IGMtMTUuOTIwNjYxOTI2MjY5NTMxLDAgLTI5LjQxMjc1MDI0NDE0MDYyNSwtNS4zNTY4NTUz OTI0NTYwNTUgLTQwLjQ3NjI1NzMyNDIxODc1LC0xNS45ODQxNjMyODQzMDE3NTggbC0yOTIuNzc4 MjI4NzU5NzY1NiwtMjgxLjY2NjkzMTE1MjM0Mzc1IGMtMTEuNDIzMzAwNzQzMTAzMDI3LC0xMC4z NjgxMDU4ODgzNjY3IC0xNy4wODk5NzUzNTcwNTU2NjQsLTIzLjMyODIzOTQ0MDkxNzk3IC0xNy4w ODk5NzUzNTcwNTU2NjQsLTM4Ljg4MDQwMTYxMTMyODEyNSBjMCwtMTUuMjkyOTU5MjEzMjU2ODM2 IDUuNjY2Njc2MDQ0NDY0MTExLC0yOC4zMzk0ODg5ODMxNTQyOTcgMTcuMDg5OTc1MzU3MDU1NjY0 LC0zOS4zMTI0MDQ2MzI1NjgzNiBsMzMuMjgwNDc5NDMxMTUyMzQ0LC0zMi40MDAzMzM0MDQ1NDEw MTYgYzExLjY5MzEzOTA3NjIzMjkxLC0xMC42MjczMTA3NTI4Njg2NTIgMjUuMzY1MTIxODQxNDMw NjY0LC0xNS45ODQxNjMyODQzMDE3NTggNDAuOTI1OTk4Njg3NzQ0MTQsLTE1Ljk4NDE2MzI4NDMw MTc1OCBjMTUuOTIwNjYxOTI2MjY5NTMxLDAgMjkuNDEyNzUwMjQ0MTQwNjI1LDUuMzU2ODU1Mzky NDU2MDU1IDQwLjQ3NjI1NzMyNDIxODc1LDE1Ljk4NDE2MzI4NDMwMTc1OCBsMTMyLjIyMjQyNzM2 ODE2NDA2LDEyNy4wMDkzMDAyMzE5MzM2IHYtMzA0LjEzMTEzNDAzMzIwMzEgYzAsLTE0Ljk0NzM1 MzM2MzAzNzExIDUuNjY2Njc2MDQ0NDY0MTExLC0yNy45MDc0ODU5NjE5MTQwNjIgMTcuMDg5OTc1 MzU3MDU1NjY0LC0zOC44ODA0MDE2MTEzMjgxMjUgczI0LjkxNTM4ODEwNzI5OTgwNSwtMTYuNDE2 MTY4MjEyODkwNjI1IDQwLjQ3NjI1NzMyNDIxODc1LC0xNi40MTYxNjgyMTI4OTA2MjUgSDkyOS45 NjkyMDM0NzIxMzc1IE05MjkuOTY5MjAzNDcyMTM3NSw1ODUuMTk5Mjc5Nzg1MTU2MiBoLTU3LjU2 NjIzMDc3MzkyNTc4IGMtMjkuOTUyNDMyNjMyNDQ2MjksMCAtNTcuMTE2NTAwODU0NDkyMTksMTAu ODg2NTExODAyNjczMzQgLTc4LjYxMzg5MTYwMTU2MjUsMzEuNjIyNzIyNjI1NzMyNDIyIEM3NzIu MjAxNjg2MzgyMjkzNyw2MzcuNTU4MTY2NTAzOTA2MiA3NjAuODY4MzczMzk0MDEyNSw2NjMuNjUx MjQ1MTE3MTg3NSA3NjAuODY4MzczMzk0MDEyNSw2OTIuMzM2MzY0NzQ2MDkzOCB2MTc4LjkzNjIz MzUyMDUwNzggbC00MC4xMTY0NzAzMzY5MTQwNiwtMzguNTM0NzkzODUzNzU5NzY2IGMtMjEuMjI3 NTUwNTA2NTkxNzk3LC0yMC4zOTA2MDk3NDEyMTA5MzggLTQ4LjM5MTYxNjgyMTI4OTA2LC0zMS4x OTA3MTk2MDQ0OTIxODggLTc4LjYxMzg5MTYwMTU2MjUsLTMxLjE5MDcxOTYwNDQ5MjE4OCBjLTI5 LjMyMjgwMTU4OTk2NTgyLDAgLTU2LjMwNjk2ODY4ODk2NDg0NCwxMC40NTQ1MDc4Mjc3NTg3ODkg LTc3Ljk4NDI2MDU1OTA4MjAzLDMwLjE1MzkxMzQ5NzkyNDgwNSBjLTAuNDQ5NzM2MTc3OTIxMjk1 MTcsMC40MzIwMDQ0NTE3NTE3MDkgLTAuODk5NDcyMzU1ODQyNTkwMywwLjg2NDAwODkwMzUwMzQx OCAtMS4zNDkyMDg1OTMzNjg1MzAzLDEuMjA5NjEyNDg4NzQ2NjQzIGwtMzMuMTkwNTMyNjg0MzI2 MTcsMzIuMzEzOTM0MzI2MTcxODc1IGMtMjEuNDA3NDQ1OTA3NTkyNzczLDIwLjY0OTgxMjY5ODM2 NDI1OCAtMzIuNzQwNzk4OTUwMTk1MzEsNDYuODI5Mjc3MDM4NTc0MjIgLTMyLjc0MDc5ODk1MDE5 NTMxLDc1Ljg1OTk3NzcyMjE2Nzk3IGMwLDI5LjYzNTUwNTY3NjI2OTUzIDExLjUxMzI0NjUzNjI1 NDg4Myw1NS44MTQ5NzE5MjM4MjgxMjUgMzMuMzcwNDI2MTc3OTc4NTE2LDc1Ljk0NjM4MDYxNTIz NDM4IGwyOTIuMzI4NTIxNzI4NTE1NiwyODEuMjM0ODYzMjgxMjUgYzIxLjIyNzU1MDUwNjU5MTc5 NywyMC4zOTA2MDk3NDEyMTA5MzggNDguNDgxNTY3MzgyODEyNSwzMS4xOTA3MTk2MDQ0OTIxODgg NzguNzAzODM0NTMzNjkxNCwzMS4xOTA3MTk2MDQ0OTIxODggYzI5LjMyMjgwMTU4OTk2NTgyLDAg NTYuMzA2OTY4Njg4OTY0ODQ0LC0xMC40NTQ1MDc4Mjc3NTg3ODkgNzcuOTg0MjYwNTU5MDgyMDMs LTMwLjE1MzkxMzQ5NzkyNDgwNSBjMC4zNTk3ODg5NTQyNTc5NjUxLC0wLjM0NTYwMzUyNTYzODU4 MDMgMC43MTk1Nzc5MDg1MTU5MzAyLC0wLjY5MTIwNzA1MTI3NzE2MDYgMS4wNzkzNjcwNDE1ODc4 Mjk2LC0xLjAzNjgxMDc1NTcyOTY3NTMgbDI5Mi43NzgyMjg3NTk3NjU2LC0yODEuNjY2OTMxMTUy MzQzNzUgYzIxLjIyNzU1MDUwNjU5MTc5NywtMjAuMzkwNjA5NzQxMjEwOTM4IDMyLjM4MTAwMDUx ODc5ODgzLC00Ni40ODM2NzMwOTU3MDMxMjUgMzIuMzgxMDAwNTE4Nzk4ODMsLTc1LjUxNDM4MTQw ODY5MTQgYzAsLTI4LjE2NjY4ODkxOTA2NzM4MyAtMTAuODgzNjE1NDkzNzc0NDE0LC01NC4wODY5 NTYwMjQxNjk5MiAtMzEuMzkxNTg4MjExMDU5NTcsLTc0LjkwOTU2ODc4NjYyMTEgYy0wLjM1OTc4 ODk1NDI1Nzk2NTEsLTAuMzQ1NjAzNTI1NjM4NTgwMyAtMC43MTk1Nzc5MDg1MTU5MzAyLC0wLjY5 MTIwNzA1MTI3NzE2MDYgLTEuMDc5MzY3MDQxNTg3ODI5NiwtMS4wMzY4MTA3NTU3Mjk2NzUzIGwt MzMuNzMwMjE2OTc5OTgwNDcsLTMyLjQwMDMzMzQwNDU0MTAxNiBjLTAuMzU5Nzg4OTU0MjU3OTY1 MSwtMC4zNDU2MDM1MjU2Mzg1ODAzIC0wLjcxOTU3NzkwODUxNTkzMDIsLTAuNjkxMjA3MDUxMjc3 MTYwNiAtMS4wNzkzNjcwNDE1ODc4Mjk2LC0xLjAzNjgxMDc1NTcyOTY3NTMgYy0yMS42NzcyODYx NDgwNzEyOSwtMTkuNjk5NDAxODU1NDY4NzUgLTQ4LjY2MTQ1NzA2MTc2NzU4LC0zMC4xNTM5MTM0 OTc5MjQ4MDUgLTc3Ljk4NDI2MDU1OTA4MjAzLC0zMC4xNTM5MTM0OTc5MjQ4MDUgYy0zMC4yMjIy NzI4NzI5MjQ4MDUsMCAtNTcuMzg2MzQ0OTA5NjY3OTcsMTAuODAwMTExNzcwNjI5ODgzIC03OC42 MTM4OTE2MDE1NjI1LDMxLjE5MDcxOTYwNDQ5MjE4OCBsLTQwLjExNjQ3MDMzNjkxNDA2LDM4LjUz NDc5Mzg1Mzc1OTc2NiBWNjkyLjMzNjM2NDc0NjA5MzggYzAsLTI4Ljc3MTQ5NTgxOTA5MTc5NyAt MTEuMzMzMzUyMDg4OTI4MjIzLC01NC44NjQ1NjI5ODgyODEyNSAtMzIuOTIwNjg4NjI5MTUwMzks LTc1LjUxNDM4MTQwODY5MTQgQzk4Ny4wODU2NTg1NTAyNjI1LDU5Ni4xNzIxODAxNzU3ODEyIDk1 OS45MjE2NTcwODU0MTg3LDU4NS4xOTkyNzk3ODUxNTYyIDkyOS45NjkyMDM0NzIxMzc1LDU4NS4x OTkyNzk3ODUxNTYyIEw5MjkuOTY5MjAzNDcyMTM3NSw1ODUuMTk5Mjc5Nzg1MTU2MiB6IiBpZD0i c3ZnXzQiLz4KKzwvZz48L2c+PC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9zcWxlZGl0b3Iu anMgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL3NxbGVkaXRvci5qcwpp bmRleCBlMmQ2OWY3OC4uZjJkMjhkODYgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Nx bGVkaXRvci9zdGF0aWMvanMvc3FsZWRpdG9yLmpzCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Nx bGVkaXRvci9zdGF0aWMvanMvc3FsZWRpdG9yLmpzCkBAIC04NSw4ICs4NSw4IEBAIGRlZmluZSgn dG9vbHMucXVlcnl0b29sJywgWwogICAgIC8vIEJpbmQgYWxsIHRoZSBldmVudHMKICAgICBldmVu dHM6IHsKICAgICAgICdjbGljayAuYnRuLWxvYWQtZmlsZSc6ICdvbl9maWxlX2xvYWQnLAotICAg ICAgJ2NsaWNrICNidG4tc2F2ZSc6ICdvbl9zYXZlJywKLSAgICAgICdjbGljayAjYnRuLWZpbGUt bWVudS1zYXZlJzogJ29uX3NhdmUnLAorICAgICAgJ2NsaWNrICNidG4tc2F2ZS1maWxlJzogJ29u X3NhdmVfZmlsZScsCisgICAgICAnY2xpY2sgI2J0bi1maWxlLW1lbnUtc2F2ZSc6ICdvbl9zYXZl X2ZpbGUnLAogICAgICAgJ2NsaWNrICNidG4tZmlsZS1tZW51LXNhdmUtYXMnOiAnb25fc2F2ZV9h cycsCiAgICAgICAnY2xpY2sgI2J0bi1maW5kJzogJ29uX2ZpbmQnLAogICAgICAgJ2NsaWNrICNi dG4tZmluZC1tZW51LWZpbmQnOiAnb25fZmluZCcsCkBAIC05Nyw2ICs5Nyw3IEBAIGRlZmluZSgn dG9vbHMucXVlcnl0b29sJywgWwogICAgICAgJ2NsaWNrICNidG4tZmluZC1tZW51LWZpbmQtcGVy c2lzdGVudCc6ICdvbl9maW5kX3BlcnNpc3RlbnQnLAogICAgICAgJ2NsaWNrICNidG4tZmluZC1t ZW51LWp1bXAnOiAnb25fanVtcCcsCiAgICAgICAnY2xpY2sgI2J0bi1kZWxldGUtcm93JzogJ29u X2RlbGV0ZScsCisgICAgICAnY2xpY2sgI2J0bi1zYXZlLWRhdGEnOiAnb25fc2F2ZV9kYXRhJywK ICAgICAgICdjbGljayAjYnRuLWZpbHRlcic6ICdvbl9zaG93X2ZpbHRlcicsCiAgICAgICAnY2xp Y2sgI2J0bi1maWx0ZXItbWVudSc6ICdvbl9zaG93X2ZpbHRlcicsCiAgICAgICAnY2xpY2sgI2J0 bi1pbmNsdWRlLWZpbHRlcic6ICdvbl9pbmNsdWRlX2ZpbHRlcicsCkBAIC0zNTEsMjYgKzM1Miw3 IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICBfLmVhY2god2luZG93LnRv cC5wZ0FkbWluLkJyb3dzZXIuZG9ja2VyLmZpbmRQYW5lbHMoJ2ZybV9kYXRhZ3JpZCcpLCBmdW5j dGlvbihwKSB7CiAgICAgICAgICAgaWYgKHAuaXNWaXNpYmxlKCkpIHsKICAgICAgICAgICAgIHAu b24od2NEb2NrZXIuRVZFTlQuQ0xPU0lORywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgIC8v IE9ubHkgaWYgd2UgY2FuIGVkaXQgZGF0YSB0aGVuIHBlcmZvcm0gdGhpcyBjaGVjawotICAgICAg ICAgICAgICB2YXIgbm90aWZ5ID0gZmFsc2UsCi0gICAgICAgICAgICAgICAgbXNnOwotICAgICAg ICAgICAgICBpZiAoc2VsZi5oYW5kbGVyLmNhbl9lZGl0Ci0gICAgICAgICAgICAgICAgICAmJiBz ZWxmLnByZWZlcmVuY2VzLnByb21wdF9zYXZlX2RhdGFfY2hhbmdlcykgewotICAgICAgICAgICAg ICAgIHZhciBkYXRhX3N0b3JlID0gc2VsZi5oYW5kbGVyLmRhdGFfc3RvcmU7Ci0gICAgICAgICAg ICAgICAgaWYgKGRhdGFfc3RvcmUgJiYgKF8uc2l6ZShkYXRhX3N0b3JlLmFkZGVkKSB8fAotICAg ICAgICAgICAgICAgICAgICBfLnNpemUoZGF0YV9zdG9yZS51cGRhdGVkKSkpIHsKLSAgICAgICAg ICAgICAgICAgIG1zZyA9IGdldHRleHQoJ1RoZSBkYXRhIGhhcyBjaGFuZ2VkLiBEbyB5b3Ugd2Fu dCB0byBzYXZlIGNoYW5nZXM/Jyk7Ci0gICAgICAgICAgICAgICAgICBub3RpZnkgPSB0cnVlOwot ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfSBlbHNlIGlmIChzZWxmLmhhbmRsZXIu aXNfcXVlcnlfdG9vbCAmJiBzZWxmLmhhbmRsZXIuaXNfcXVlcnlfY2hhbmdlZAotICAgICAgICAg ICAgICAgICAgICAgICAgICYmIHNlbGYucHJlZmVyZW5jZXMucHJvbXB0X3NhdmVfcXVlcnlfY2hh bmdlcykgewotICAgICAgICAgICAgICAgIG1zZyA9IGdldHRleHQoJ1RoZSB0ZXh0IGhhcyBjaGFu Z2VkLiBEbyB5b3Ugd2FudCB0byBzYXZlIGNoYW5nZXM/Jyk7Ci0gICAgICAgICAgICAgICAgbm90 aWZ5ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBpZiAobm90aWZ5KSB7 Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudXNlcl9jb25maXJtYXRpb24ocCwgbXNnKTsK LSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuaGFuZGxlci5jaGVja19uZWVkZWRfY29uZmlybWF0aW9uc19iZWZvcmVf Y2xvc2luZ19wYW5lbCh0cnVlKTsKICAgICAgICAgICAgIH0pOwogCiAgICAgICAgICAgICAvLyBT ZXQgZm9jdXMgb24gcXVlcnkgdG9vbCBvZiBhY3RpdmUgcGFuZWwKQEAgLTYxNSw2MiArNTk3LDYg QEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICB9CiAgICAgfSwKIAotICAgIC8q IFRvIHByb21wdCB1c2VyIGZvciB1bnNhdmVkIGNoYW5nZXMgKi8KLSAgICB1c2VyX2NvbmZpcm1h dGlvbjogZnVuY3Rpb24ocGFuZWwsIG1zZykgewotICAgICAgLy8gSWYgdGhlcmUgaXMgYW55dGhp bmcgdG8gc2F2ZSB0aGVuIHByb21wdCB1c2VyCi0gICAgICB2YXIgdGhhdCA9IHRoaXM7Ci0KLSAg ICAgIGFsZXJ0aWZ5LmNvbmZpcm1TYXZlIHx8IGFsZXJ0aWZ5LmRpYWxvZygnY29uZmlybVNhdmUn LCBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICBtYWluOiBmdW5jdGlv bih0aXRsZSwgbWVzc2FnZSkgewotICAgICAgICAgICAgdGhpcy5zZXRIZWFkZXIodGl0bGUpOwot ICAgICAgICAgICAgdGhpcy5zZXRDb250ZW50KG1lc3NhZ2UpOwotICAgICAgICAgIH0sCi0gICAg ICAgICAgc2V0dXA6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAg ICAgICAgYnV0dG9uczogW3sKLSAgICAgICAgICAgICAgICB0ZXh0OiBnZXR0ZXh0KCdDYW5jZWwn KSwKLSAgICAgICAgICAgICAgICBrZXk6IDI3LCAvLyBFU0MKLSAgICAgICAgICAgICAgICBpbnZv a2VPbkNsb3NlOiB0cnVlLAotICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tc2Vj b25kYXJ5IGZhIGZhLWxnIGZhLXRpbWVzIHBnLWFsZXJ0aWZ5LWJ1dHRvbicsCi0gICAgICAgICAg ICAgIH0sIHsKLSAgICAgICAgICAgICAgICB0ZXh0OiBnZXR0ZXh0KCdEb25cJ3Qgc2F2ZScpLAot ICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tc2Vjb25kYXJ5IGZhIGZhLWxnIGZh LXRyYXNoLW8gcGctYWxlcnRpZnktYnV0dG9uJywKLSAgICAgICAgICAgICAgfSwgewotICAgICAg ICAgICAgICAgIHRleHQ6IGdldHRleHQoJ1NhdmUnKSwKLSAgICAgICAgICAgICAgICBjbGFzc05h bWU6ICdidG4gYnRuLXByaW1hcnkgZmEgZmEtbGcgZmEtc2F2ZSBwZy1hbGVydGlmeS1idXR0b24n LAotICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgZm9jdXM6IHsKLSAgICAgICAgICAg ICAgICBlbGVtZW50OiAwLAotICAgICAgICAgICAgICAgIHNlbGVjdDogZmFsc2UsCi0gICAgICAg ICAgICAgIH0sCi0gICAgICAgICAgICAgIG9wdGlvbnM6IHsKLSAgICAgICAgICAgICAgICBtYXhp bWl6YWJsZTogZmFsc2UsCi0gICAgICAgICAgICAgICAgcmVzaXphYmxlOiBmYWxzZSwKLSAgICAg ICAgICAgICAgfSwKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgfSwKLSAgICAgICAgICBjYWxs YmFjazogZnVuY3Rpb24oY2xvc2VFdmVudCkgewotICAgICAgICAgICAgc3dpdGNoIChjbG9zZUV2 ZW50LmluZGV4KSB7Ci0gICAgICAgICAgICBjYXNlIDA6IC8vIENhbmNlbAotICAgICAgICAgICAg ICAvL0RvIG5vdGhpbmcuCi0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAx OiAvLyBEb24ndCBTYXZlCi0gICAgICAgICAgICAgIHRoYXQuaGFuZGxlci5jbG9zZV9vbl9zYXZl ID0gZmFsc2U7Ci0gICAgICAgICAgICAgIHRoYXQuaGFuZGxlci5jbG9zZSgpOwotICAgICAgICAg ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgMjogLy9TYXZlCi0gICAgICAgICAgICAgIHRo YXQuaGFuZGxlci5jbG9zZV9vbl9zYXZlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgdGhhdC5oYW5k bGVyLl9zYXZlKHRoYXQsIHRoYXQuaGFuZGxlcik7Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAg ICAgICAgICAgfQotICAgICAgICAgIH0sCi0gICAgICAgIH07Ci0gICAgICB9KTsKLSAgICAgIGFs ZXJ0aWZ5LmNvbmZpcm1TYXZlKGdldHRleHQoJ1NhdmUgY2hhbmdlcz8nKSwgbXNnKTsKLSAgICAg IHJldHVybiBmYWxzZTsKLSAgICB9LAotCiAgICAgLyogUmVnYXJkaW5nIFNsaWNrR3JpZCB1c2Fn ZSBpbiByZW5kZXJfZ3JpZCBmdW5jdGlvbi4KIAogICAgICBTbGlja0dyaWQgUGx1Z2luczoKQEAg LTczNCw2ICs2NjAsOCBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICByZW5kZXJf Z3JpZDogZnVuY3Rpb24oY29sbGVjdGlvbiwgY29sdW1ucywgaXNfZWRpdGFibGUsIGNsaWVudF9w cmltYXJ5X2tleSwgcm93c19hZmZlY3RlZCkgewogICAgICAgdmFyIHNlbGYgPSB0aGlzOwogCisg ICAgICBzZWxmLmhhbmRsZXIubnVtYmVyT2ZNb2RpZmllZENlbGxzID0gMDsKKwogICAgICAgLy8g VGhpcyB3aWxsIHdvcmsgYXMgZGF0YSBzdG9yZSBhbmQgaG9sZHMgYWxsIHRoZQogICAgICAgLy8g aW5zZXJ0ZWQvdXBkYXRlZC9kZWxldGVkIGRhdGEgZnJvbSBncmlkCiAgICAgICBzZWxmLmhhbmRs ZXIuZGF0YV9zdG9yZSA9IHsKQEAgLTEwNjcsNiArOTk1LDE0IEBAIGRlZmluZSgndG9vbHMucXVl cnl0b29sJywgWwogICAgICAgICAgIF9wayA9IGFyZ3MuaXRlbVtzZWxmLmNsaWVudF9wcmltYXJ5 X2tleV0gfHwgbnVsbCwgLy8gVW5pcXVlIGtleSB0byBpZGVudGlmeSByb3cKICAgICAgICAgICBj b2x1bW5fZGF0YSA9IHt9OwogCisgICAgICAgIC8vIEhpZ2hsaWdodCB0aGUgY2hhbmdlZCBjZWxs CisgICAgICAgIHNlbGYuaGFuZGxlci5udW1iZXJPZk1vZGlmaWVkQ2VsbHMrKzsKKyAgICAgICAg YXJncy5ncmlkLmFkZENlbGxDc3NTdHlsZXMoc2VsZi5oYW5kbGVyLm51bWJlck9mTW9kaWZpZWRD ZWxscywgeworICAgICAgICAgIFthcmdzLnJvd10gOiB7CisgICAgICAgICAgICBbY2hhbmdlZF9j b2x1bW5dOiAnaGlnaGxpZ2h0ZWRfZ3JpZF9jZWxscycsCisgICAgICAgICAgfSwKKyAgICAgICAg fSk7CisKICAgICAgICAgLy8gQWNjZXNzIHRvIHJvdy9jZWxsIHZhbHVlIGFmdGVyIGEgY2VsbCBp cyBjaGFuZ2VkLgogICAgICAgICAvLyBUaGUgcHVycG9zZSBpcyB0byByZW1vdmUgcm93X2lkIGZy b20gdGVtcF9uZXdfcm93CiAgICAgICAgIC8vIGlmIG5ldyByb3cgaGFzIHByaW1hcnkga2V5IGlu c3RlYWQgb2YgW2RlZmF1bHRfdmFsdWVdCkBAIC0xMTIyLDcgKzEwNTgsNyBAQCBkZWZpbmUoJ3Rv b2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgLy8gRW5h YmxlIHNhdmUgYnV0dG9uCi0gICAgICAgICQoJyNidG4tc2F2ZScpLnByb3AoJ2Rpc2FibGVkJywg ZmFsc2UpOworICAgICAgICAkKCcjYnRuLXNhdmUtZGF0YScpLnByb3AoJ2Rpc2FibGVkJywgZmFs c2UpOwogICAgICAgfS5iaW5kKGVkaXRvcl9kYXRhKSk7CiAKICAgICAgIC8vIExpc3RlbmVyIGZ1 bmN0aW9uIHdoaWNoIHdpbGwgYmUgY2FsbGVkIHdoZW4gdXNlciBhZGRzIG5ldyByb3dzCkBAIC0x MTUwLDYgKzEwODYsNyBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgICAn ZGF0YSc6IGl0ZW0sCiAgICAgICAgIH07CiAgICAgICAgIHNlbGYuaGFuZGxlci5kYXRhX3N0b3Jl LmFkZGVkX2luZGV4W2RhdGFfbGVuZ3RoXSA9IF9rZXk7CisKICAgICAgICAgLy8gRmV0Y2ggZGF0 YSB0eXBlICYgYWRkIGl0IGZvciB0aGUgY29sdW1uCiAgICAgICAgIHZhciB0ZW1wID0ge307CiAg ICAgICAgIHRlbXBbY29sdW1uLm5hbWVdID0gXy53aGVyZSh0aGlzLmNvbHVtbnMsIHsKQEAgLTEx NTgsOCArMTA5NSwxNyBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgZ3Jp ZC51cGRhdGVSb3dDb3VudCgpOwogICAgICAgICBncmlkLnJlbmRlcigpOwogCisgICAgICAgIC8v IEhpZ2hsaWdodCB0aGUgZmlyc3QgYWRkZWQgY2VsbCBvZiB0aGUgbmV3IHJvdworICAgICAgICB2 YXIgcm93ID0gZGF0YVZpZXcuZ2V0Um93QnlJdGVtKGl0ZW0pOworICAgICAgICBzZWxmLmhhbmRs ZXIubnVtYmVyT2ZNb2RpZmllZENlbGxzKys7CisgICAgICAgIGFyZ3MuZ3JpZC5hZGRDZWxsQ3Nz U3R5bGVzKHNlbGYuaGFuZGxlci5udW1iZXJPZk1vZGlmaWVkQ2VsbHMsIHsKKyAgICAgICAgICBb cm93XSA6IHsKKyAgICAgICAgICAgIFtjb2x1bW4uZmllbGRdOiAnaGlnaGxpZ2h0ZWRfZ3JpZF9j ZWxscycsCisgICAgICAgICAgfSwKKyAgICAgICAgfSk7CisKICAgICAgICAgLy8gRW5hYmxlIHNh dmUgYnV0dG9uCi0gICAgICAgICQoJyNidG4tc2F2ZScpLnByb3AoJ2Rpc2FibGVkJywgZmFsc2Up OworICAgICAgICAkKCcjYnRuLXNhdmUtZGF0YScpLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpOwog ICAgICAgfS5iaW5kKGVkaXRvcl9kYXRhKSk7CiAKICAgICAgIC8vIExpc3RlbiBncmlkIHZpZXdw b3J0Q2hhbmdlZCBldmVudCB0byBsb2FkIG5leHQgY2h1bmsgb2YgZGF0YS4KQEAgLTEyMDgsOSAr MTE1NCwxMSBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgIH0KICAgICAgIGRh dGFWaWV3LnNldEl0ZW1zKGNvbGxlY3Rpb24sIHNlbGYuY2xpZW50X3ByaW1hcnlfa2V5KTsKICAg ICB9LAorCiAgICAgZmV0Y2hfbmV4dF9hbGw6IGZ1bmN0aW9uKGNiKSB7CiAgICAgICB0aGlzLmZl dGNoX25leHQodHJ1ZSwgY2IpOwogICAgIH0sCisKICAgICBmZXRjaF9uZXh0OiBmdW5jdGlvbihm ZXRjaF9hbGwsIGNiKSB7CiAgICAgICB2YXIgc2VsZiA9IHRoaXMsCiAgICAgICAgIHVybCA9ICcn OwpAQCAtMTQxMCw3ICsxMzU4LDcgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAg fSwKIAogICAgIC8vIENhbGxiYWNrIGZ1bmN0aW9uIGZvciBTYXZlIGJ1dHRvbiBjbGljay4KLSAg ICBvbl9zYXZlOiBmdW5jdGlvbihldikgeworICAgIG9uX3NhdmVfZmlsZTogZnVuY3Rpb24oZXYp IHsKICAgICAgIHZhciBzZWxmID0gdGhpczsKIAogICAgICAgdGhpcy5fc3RvcEV2ZW50UHJvcG9n YXRpb24oZXYpOwpAQCAtMTQxOSw5ICsxMzY3LDcgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wn LCBbCiAgICAgICBzZWxmLmhhbmRsZXIuY2xvc2Vfb25fc2F2ZSA9IGZhbHNlOwogICAgICAgLy8g VHJpZ2dlciB0aGUgc2F2ZSBzaWduYWwgdG8gdGhlIFNxbEVkaXRvckNvbnRyb2xsZXIgY2xhc3MK ICAgICAgIHNlbGYuaGFuZGxlci50cmlnZ2VyKAotICAgICAgICAncGdhZG1pbi1zcWxlZGl0b3I6 YnV0dG9uOnNhdmUnLAotICAgICAgICBzZWxmLAotICAgICAgICBzZWxmLmhhbmRsZXIKKyAgICAg ICAgJ3BnYWRtaW4tc3FsZWRpdG9yOmJ1dHRvbjpzYXZlX2ZpbGUnCiAgICAgICApOwogICAgIH0s CiAKQEAgLTE0MzUsNyArMTM4MSw3IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAg ICAgc2VsZi5oYW5kbGVyLmNsb3NlX29uX3NhdmUgPSBmYWxzZTsKICAgICAgIC8vIFRyaWdnZXIg dGhlIHNhdmUgc2lnbmFsIHRvIHRoZSBTcWxFZGl0b3JDb250cm9sbGVyIGNsYXNzCiAgICAgICBz ZWxmLmhhbmRsZXIudHJpZ2dlcigKLSAgICAgICAgJ3BnYWRtaW4tc3FsZWRpdG9yOmJ1dHRvbjpz YXZlJywKKyAgICAgICAgJ3BnYWRtaW4tc3FsZWRpdG9yOmJ1dHRvbjpzYXZlX2ZpbGUnLAogICAg ICAgICBzZWxmLAogICAgICAgICBzZWxmLmhhbmRsZXIsCiAgICAgICAgIHRydWUKQEAgLTE2MDgs NiArMTU1NCwxMSBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICk7CiAgICAg fSwKIAorICAgIC8vIENhbGxiYWNrIGZ1bmN0aW9uIGZvciBTYXZlIERhdGEgQ2hhbmdlcyBidXR0 b24gY2xpY2suCisgICAgb25fc2F2ZV9kYXRhOiBmdW5jdGlvbigpIHsKKyAgICAgIHF1ZXJ5VG9v bEFjdGlvbnMuc2F2ZURhdGFDaGFuZ2VzKHRoaXMuaGFuZGxlcik7CisgICAgfSwKKwogICAgIC8v IENhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgZmxhc2ggYnV0dG9uIGNsaWNrLgogICAgIG9uX2Zs YXNoOiBmdW5jdGlvbigpIHsKICAgICAgIHF1ZXJ5VG9vbEFjdGlvbnMuZXhlY3V0ZVF1ZXJ5KHRo aXMuaGFuZGxlcik7CkBAIC0yMTk0LDcgKzIxNDUsNyBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9v bCcsIFsKIAogICAgICAgICAvLyBMaXN0ZW4gb24gZXZlbnRzIGNvbWUgZnJvbSBTUUxFZGl0b3JW aWV3IGZvciB0aGUgYnV0dG9uIGNsaWNrZWQuCiAgICAgICAgIHNlbGYub24oJ3BnYWRtaW4tc3Fs ZWRpdG9yOmJ1dHRvbjpsb2FkX2ZpbGUnLCBzZWxmLl9sb2FkX2ZpbGUsIHNlbGYpOwotICAgICAg ICBzZWxmLm9uKCdwZ2FkbWluLXNxbGVkaXRvcjpidXR0b246c2F2ZScsIHNlbGYuX3NhdmUsIHNl bGYpOworICAgICAgICBzZWxmLm9uKCdwZ2FkbWluLXNxbGVkaXRvcjpidXR0b246c2F2ZV9maWxl Jywgc2VsZi5fc2F2ZV9maWxlLCBzZWxmKTsKICAgICAgICAgc2VsZi5vbigncGdhZG1pbi1zcWxl ZGl0b3I6YnV0dG9uOmRlbGV0ZXJvdycsIHNlbGYuX2RlbGV0ZSwgc2VsZik7CiAgICAgICAgIHNl bGYub24oJ3BnYWRtaW4tc3FsZWRpdG9yOmJ1dHRvbjpzaG93X2ZpbHRlcicsIHNlbGYuX3Nob3df ZmlsdGVyLCBzZWxmKTsKICAgICAgICAgc2VsZi5vbigncGdhZG1pbi1zcWxlZGl0b3I6YnV0dG9u OmluY2x1ZGVfZmlsdGVyJywgc2VsZi5faW5jbHVkZV9maWx0ZXIsIHNlbGYpOwpAQCAtMjMwOSw4 ICsyMjYwLDcgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAgICAgICAgICAg JCgnI2J0bi1maWx0ZXInKS5hZGRDbGFzcygnYnRuLXNlY29uZGFyeScpOwogICAgICAgICAgICAg ICAgICQoJyNidG4tZmlsdGVyLWRyb3Bkb3duJykuYWRkQ2xhc3MoJ2J0bi1zZWNvbmRhcnknKTsK ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAkKCcjYnRuLXNhdmUnKS5wcm9wKCdkaXNh YmxlZCcsIHRydWUpOwotICAgICAgICAgICAgICAkKCcjYnRuLWZpbGUtbWVudS1kcm9wZG93bicp LnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7CisKICAgICAgICAgICAgICAgJCgnI2J0bi1jb3B5LXJv dycpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7CiAgICAgICAgICAgICAgICQoJyNidG4tcGFzdGUt cm93JykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKIApAQCAtMjM3Niw2ICsyMzI2LDE4IEBAIGRl ZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICBlbHNlCiAgICAgICAgICAgc2VsZi5j YW5fZWRpdCA9IHRydWU7CiAKKyAgICAgICAgLyogSWYgdGhlIHF1ZXJ5IHJlc3VsdHMgYXJlIHVw ZGF0YWJsZSB0aGVuIGtlZXAgdHJhY2sgb2YgbmV3bHkgYWRkZWQKKyAgICAgICAgICogcm93cwor ICAgICAgICAgKi8KKyAgICAgICAgaWYgKHNlbGYuaXNfcXVlcnlfdG9vbCAmJiBzZWxmLmNhbl9l ZGl0KSB7CisgICAgICAgICAgLy8ga2VlcCB0cmFjayBvZiBuZXdseSBhZGRlZCByb3dzCisgICAg ICAgICAgc2VsZi5yb3dzX3RvX2Rpc2FibGUgPSBuZXcgQXJyYXkoKTsKKyAgICAgICAgICAvLyBU ZW1wb3JhcmlseSBob2xkIG5ldyByb3dzIGFkZGVkCisgICAgICAgICAgc2VsZi50ZW1wX25ld19y b3dzID0gbmV3IEFycmF5KCk7CisgICAgICAgICAgc2VsZi5oYXNfbW9yZV9yb3dzID0gZmFsc2U7 CisgICAgICAgICAgc2VsZi5mZXRjaGluZ19yb3dzID0gZmFsc2U7CisgICAgICAgIH0KKwogICAg ICAgICAvKiBJZiB1c2VyIGNhbiBmaWx0ZXIgdGhlIGRhdGEgdGhlbiB3ZSBzaG91bGQgZW5hYmxl ZAogICAgICAgICAgKiBGaWx0ZXIgYW5kIExpbWl0IGJ1dHRvbnMuCiAgICAgICAgICAqLwpAQCAt MjM4NiwxMyArMjM0OCwxMiBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAg ICAkKCcjYnRuLWZpbHRlci1kcm9wZG93bicpLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpOwogICAg ICAgICB9CiAKKyAgICAgICAgLy8gTm8gZGF0YSB0byBzYXZlIGluaXRpYWxseQorICAgICAgICAk KCcjYnRuLXNhdmUtZGF0YScpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7CisKICAgICAgICAgLy8g SW5pdGlhbCBzZXR0aW5ncyBmb3IgZGVsZXRlIHJvdywgY29weSByb3cgYW5kIHBhc3RlIHJvdyBi dXR0b25zLgogICAgICAgICAkKCcjYnRuLWRlbGV0ZS1yb3cnKS5wcm9wKCdkaXNhYmxlZCcsIHRy dWUpOwotICAgICAgICAvLyBEbyBub3QgZGlzYWJsZSBzYXZlIGJ1dHRvbiBpbiBxdWVyeSB0b29s Ci0gICAgICAgIGlmICghc2VsZi5pc19xdWVyeV90b29sICYmICFzZWxmLmNhbl9lZGl0KSB7Ci0g ICAgICAgICAgJCgnI2J0bi1zYXZlJykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKLSAgICAgICAg ICAkKCcjYnRuLWZpbGUtbWVudS1kcm9wZG93bicpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7Ci0g ICAgICAgIH0KKwogICAgICAgICBpZiAoIXNlbGYuY2FuX2VkaXQpIHsKICAgICAgICAgICAkKCcj YnRuLWRlbGV0ZS1yb3cnKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpOwogICAgICAgICAgICQoJyNi dG4tY29weS1yb3cnKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpOwpAQCAtMjc3Niw5ICsyNzM3LDkg QEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAgICAgaWYgKF8uc2l6ZShzZWxm LmRhdGFfc3RvcmUuYWRkZWQpIHx8IGlzX3VwZGF0ZWQpIHsKICAgICAgICAgICAgIC8vIERvIG5v dCBkaXNhYmxlIHNhdmUgYnV0dG9uIGlmIHRoZXJlIGFyZQogICAgICAgICAgICAgLy8gYW55IG90 aGVyIGNoYW5nZXMgcHJlc2VudCBpbiBncmlkIGRhdGEKLSAgICAgICAgICAgICQoJyNidG4tc2F2 ZScpLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpOworICAgICAgICAgICAgJCgnI2J0bi1zYXZlLWRh dGEnKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKICAgICAgICAgICB9IGVsc2UgewotICAgICAg ICAgICAgJCgnI2J0bi1zYXZlJykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKKyAgICAgICAgICAg ICQoJyNidG4tc2F2ZS1kYXRhJykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKICAgICAgICAgICB9 CiAgICAgICAgICAgYWxlcnRpZnkuc3VjY2VzcyhnZXR0ZXh0KCdSb3cocykgZGVsZXRlZC4nKSk7 CiAgICAgICAgIH0gZWxzZSB7CkBAIC0yODA3LDQxICsyNzY4LDQyIEBAIGRlZmluZSgndG9vbHMu cXVlcnl0b29sJywgWwogICAgICAgICAgIGlmIChfLnNpemUoc2VsZi5kYXRhX3N0b3JlLmFkZGVk KSB8fCBpc191cGRhdGVkIHx8IF8uc2l6ZShzZWxmLmRhdGFfc3RvcmUuZGVsZXRlZCkpIHsKICAg ICAgICAgICAgIC8vIERvIG5vdCBkaXNhYmxlIHNhdmUgYnV0dG9uIGlmIHRoZXJlIGFyZQogICAg ICAgICAgICAgLy8gYW55IG90aGVyIGNoYW5nZXMgcHJlc2VudCBpbiBncmlkIGRhdGEKLSAgICAg ICAgICAgICQoJyNidG4tc2F2ZScpLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpOworICAgICAgICAg ICAgJCgnI2J0bi1zYXZlLWRhdGEnKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKICAgICAgICAg ICB9IGVsc2UgewotICAgICAgICAgICAgJCgnI2J0bi1zYXZlJykucHJvcCgnZGlzYWJsZWQnLCB0 cnVlKTsKKyAgICAgICAgICAgICQoJyNidG4tc2F2ZS1kYXRhJykucHJvcCgnZGlzYWJsZWQnLCB0 cnVlKTsKICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgIH0sCiAKKyAgICAgIC8vLyBUaGlz IGZ1bmN0aW9uIHdpbGwgb3BlbiBzYXZlIGZpbGUgZGlhbG9nIGNvbmRpdGlvbmFsbHkuCisKKyAg ICAgIF9zYXZlX2ZpbGU6IGZ1bmN0aW9uKHNhdmVfYXM9ZmFsc2UpIHsKKyAgICAgICAgdmFyIHNl bGYgPSB0aGlzOworCisgICAgICAgIHZhciBjdXJyZW50X2ZpbGUgPSBzZWxmLmdyaWRWaWV3LmN1 cnJlbnRfZmlsZTsKKyAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKGN1cnJlbnRfZmlsZSkgJiYg IXNhdmVfYXMpIHsKKyAgICAgICAgICBzZWxmLl9zYXZlX2ZpbGVfaGFuZGxlcihjdXJyZW50X2Zp bGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIC8vIHByb3ZpZGUgY3VzdG9tIG9wdGlv biB0byBzYXZlIGZpbGUgZGlhbG9nCisgICAgICAgICAgdmFyIHBhcmFtcyA9IHsKKyAgICAgICAg ICAgICdzdXBwb3J0ZWRfdHlwZXMnOiBbJyonLCAnc3FsJ10sCisgICAgICAgICAgICAnZGlhbG9n X3R5cGUnOiAnY3JlYXRlX2ZpbGUnLAorICAgICAgICAgICAgJ2RpYWxvZ190aXRsZSc6ICdTYXZl IEZpbGUnLAorICAgICAgICAgICAgJ2J0bl9wcmltYXJ5JzogJ1NhdmUnLAorICAgICAgICAgIH07 CisgICAgICAgICAgcGdBZG1pbi5GaWxlTWFuYWdlci5pbml0KCk7CisgICAgICAgICAgcGdBZG1p bi5GaWxlTWFuYWdlci5zaG93X2RpYWxvZyhwYXJhbXMpOworICAgICAgICB9CisgICAgICB9LAor CiAgICAgICAvKiBUaGlzIGZ1bmN0aW9uIHdpbGwgZmV0Y2ggdGhlIGxpc3Qgb2YgY2hhbmdlZCBt b2RlbHMgYW5kIG1ha2UKICAgICAgICAqIHRoZSBhamF4IGNhbGwgdG8gc2F2ZSB0aGUgZGF0YSBp bnRvIHRoZSBkYXRhYmFzZSBzZXJ2ZXIuCi0gICAgICAgKiBhbmQgd2lsbCBvcGVuIHNhdmUgZmls ZSBkaWFsb2cgY29uZGl0aW9uYWxseS4KICAgICAgICAqLwotICAgICAgX3NhdmU6IGZ1bmN0aW9u KHZpZXcsIGNvbnRyb2xsZXIsIHNhdmVfYXMpIHsKLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAot ICAgICAgICAgIHNhdmVfZGF0YSA9IHRydWU7CisgICAgICBzYXZlX2RhdGE6IGZ1bmN0aW9uKCkg eworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAKLSAgICAgICAgLy8gT3BlbiBzYXZlIGZpbGUg ZGlhbG9nIGlmIHF1ZXJ5IHRvb2wKLSAgICAgICAgaWYgKHNlbGYuaXNfcXVlcnlfdG9vbCkgewot ICAgICAgICAgIHZhciBjdXJyZW50X2ZpbGUgPSBzZWxmLmdyaWRWaWV3LmN1cnJlbnRfZmlsZTsK LSAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQoY3VycmVudF9maWxlKSAmJiAhc2F2ZV9hcykg ewotICAgICAgICAgICAgc2VsZi5fc2F2ZV9maWxlX2hhbmRsZXIoY3VycmVudF9maWxlKTsKLSAg ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gcHJvdmlkZSBjdXN0b20gb3B0aW9uIHRv IHNhdmUgZmlsZSBkaWFsb2cKLSAgICAgICAgICAgIHZhciBwYXJhbXMgPSB7Ci0gICAgICAgICAg ICAgICdzdXBwb3J0ZWRfdHlwZXMnOiBbJyonLCAnc3FsJ10sCi0gICAgICAgICAgICAgICdkaWFs b2dfdHlwZSc6ICdjcmVhdGVfZmlsZScsCi0gICAgICAgICAgICAgICdkaWFsb2dfdGl0bGUnOiAn U2F2ZSBGaWxlJywKLSAgICAgICAgICAgICAgJ2J0bl9wcmltYXJ5JzogJ1NhdmUnLAotICAgICAg ICAgICAgfTsKLSAgICAgICAgICAgIHBnQWRtaW4uRmlsZU1hbmFnZXIuaW5pdCgpOwotICAgICAg ICAgICAgcGdBZG1pbi5GaWxlTWFuYWdlci5zaG93X2RpYWxvZyhwYXJhbXMpOwotICAgICAgICAg IH0KKyAgICAgICAgaWYoIXNlbGYuY2FuX2VkaXQpCiAgICAgICAgICAgcmV0dXJuOwotICAgICAg ICB9Ci0gICAgICAgICQoJyNidG4tc2F2ZScpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7Ci0gICAg ICAgICQoJyNidG4tZmlsZS1tZW51LWRyb3Bkb3duJykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsK IAogICAgICAgICB2YXIgaXNfYWRkZWQgPSBfLnNpemUoc2VsZi5kYXRhX3N0b3JlLmFkZGVkKSwK ICAgICAgICAgICBpc191cGRhdGVkID0gXy5zaXplKHNlbGYuZGF0YV9zdG9yZS51cGRhdGVkKSwK QEAgLTI4NTEsMTU0ICsyODEzLDE3OSBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAg ICAgICAgICByZXR1cm47IC8vIE5vdGhpbmcgdG8gc2F2ZSBoZXJlCiAgICAgICAgIH0KIAotICAg ICAgICBpZiAoc2F2ZV9kYXRhKSB7CisgICAgICAgIHNlbGYudHJpZ2dlcigKKyAgICAgICAgICAn cGdhZG1pbi1zcWxlZGl0b3I6bG9hZGluZy1pY29uOnNob3cnLAorICAgICAgICAgIGdldHRleHQo J1NhdmluZyB0aGUgdXBkYXRlZCBkYXRhLi4uJykKKyAgICAgICAgKTsKIAotICAgICAgICAgIHNl bGYudHJpZ2dlcigKLSAgICAgICAgICAgICdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246 c2hvdycsCi0gICAgICAgICAgICBnZXR0ZXh0KCdTYXZpbmcgdGhlIHVwZGF0ZWQgZGF0YS4uLicp Ci0gICAgICAgICAgKTsKKyAgICAgICAgLy8gQWRkIHRoZSBjb2x1bW5zIHRvIHRoZSBkYXRhIHNv IHRoZSBzZXJ2ZXIgY2FuIHJlbWFwIHRoZSBkYXRhCisgICAgICAgIHZhciByZXFfZGF0YSA9IHNl bGYuZGF0YV9zdG9yZSwgdmlldyA9IHNlbGYuZ3JpZFZpZXc7CisgICAgICAgIHJlcV9kYXRhLmNv bHVtbnMgPSB2aWV3ID8gdmlldy5oYW5kbGVyLmNvbHVtbnMgOiBzZWxmLmNvbHVtbnM7CiAKLSAg ICAgICAgICAvLyBBZGQgdGhlIGNvbHVtbnMgdG8gdGhlIGRhdGEgc28gdGhlIHNlcnZlciBjYW4g cmVtYXAgdGhlIGRhdGEKLSAgICAgICAgICB2YXIgcmVxX2RhdGEgPSBzZWxmLmRhdGFfc3RvcmU7 Ci0gICAgICAgICAgcmVxX2RhdGEuY29sdW1ucyA9IHZpZXcgPyB2aWV3LmhhbmRsZXIuY29sdW1u cyA6IHNlbGYuY29sdW1uczsKKyAgICAgICAgdmFyIHNhdmVfc3VjY2Vzc2Z1bCA9IGZhbHNlOwog Ci0gICAgICAgICAgLy8gTWFrZSBhamF4IGNhbGwgdG8gc2F2ZSB0aGUgZGF0YQotICAgICAgICAg ICQuYWpheCh7Ci0gICAgICAgICAgICB1cmw6IHVybF9mb3IoJ3NxbGVkaXRvci5zYXZlJywgewot ICAgICAgICAgICAgICAndHJhbnNfaWQnOiBzZWxmLnRyYW5zSWQsCi0gICAgICAgICAgICB9KSwK LSAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLAotICAgICAgICAgICAgY29udGVudFR5cGU6ICdh cHBsaWNhdGlvbi9qc29uJywKLSAgICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHJlcV9k YXRhKSwKLSAgICAgICAgICB9KQotICAgICAgICAgICAgLmRvbmUoZnVuY3Rpb24ocmVzKSB7Ci0g ICAgICAgICAgICAgIHZhciBncmlkID0gc2VsZi5zbGlja2dyaWQsCi0gICAgICAgICAgICAgICAg ZGF0YVZpZXcgPSBncmlkLmdldERhdGEoKSwKLSAgICAgICAgICAgICAgICBkYXRhX2xlbmd0aCA9 IGRhdGFWaWV3LmdldExlbmd0aCgpLAotICAgICAgICAgICAgICAgIGRhdGEgPSBbXTsKLQotICAg ICAgICAgICAgICBpZiAocmVzLmRhdGEuc3RhdHVzKSB7Ci0gICAgICAgICAgICAgICAgaWYoaXNf YWRkZWQpIHsKLSAgICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHJvd3MgaW4gYSBncmlkIGFm dGVyIGFkZGl0aW9uCi0gICAgICAgICAgICAgICAgICBkYXRhVmlldy5iZWdpblVwZGF0ZSgpOwot ICAgICAgICAgICAgICAgICAgXy5lYWNoKHJlcy5kYXRhLnF1ZXJ5X3Jlc3VsdCwgZnVuY3Rpb24o cikgewotICAgICAgICAgICAgICAgICAgICBpZiAoIV8uaXNOdWxsKHIucm93X2FkZGVkKSkgewot ICAgICAgICAgICAgICAgICAgICAvLyBGZXRjaCB0ZW1wX2lkIHJldHVybmVkIGJ5IHNlcnZlciBh ZnRlciBhZGRpdGlvbgotICAgICAgICAgICAgICAgICAgICAgIHZhciByb3dfaWQgPSBPYmplY3Qu a2V5cyhyLnJvd19hZGRlZClbMF07Ci0gICAgICAgICAgICAgICAgICAgICAgXy5lYWNoKHJlcV9k YXRhLmFkZGVkX2luZGV4LCBmdW5jdGlvbih2LCBrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg ICBpZiAodiA9PSByb3dfaWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZldGNoIGl0 ZW0gZGF0YSB0aHJvdWdoIHJvdyBpbmRleAotICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIg aXRlbSA9IGdyaWQuZ2V0RGF0YUl0ZW0oayk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIF8u ZXh0ZW5kKGl0ZW0sIHIucm93X2FkZGVkW3Jvd19pZF0pOwotICAgICAgICAgICAgICAgICAgICAg ICAgfQotICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICB9Ci0g ICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAgIGRhdGFWaWV3LmVuZFVwZGF0 ZSgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvLyBSZW1vdmUgZmxhZyBp c19yb3dfY29waWVkIGZyb20gY29waWVkIHJvd3MKLSAgICAgICAgICAgICAgICBfLmVhY2goZGF0 YSwgZnVuY3Rpb24ocm93KSB7Ci0gICAgICAgICAgICAgICAgICBpZiAocm93LmlzX3Jvd19jb3Bp ZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJvdy5pc19yb3dfY29waWVkOworICAg ICAgICAvLyBNYWtlIGFqYXggY2FsbCB0byBzYXZlIHRoZSBkYXRhCisgICAgICAgICQuYWpheCh7 CisgICAgICAgICAgdXJsOiB1cmxfZm9yKCdzcWxlZGl0b3Iuc2F2ZScsIHsKKyAgICAgICAgICAg ICd0cmFuc19pZCc6IHNlbGYudHJhbnNJZCwKKyAgICAgICAgICB9KSwKKyAgICAgICAgICBtZXRo b2Q6ICdQT1NUJywKKyAgICAgICAgICBjb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLAor ICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHJlcV9kYXRhKSwKKyAgICAgICAgfSkKKyAg ICAgICAgICAuZG9uZShmdW5jdGlvbihyZXMpIHsKKyAgICAgICAgICAgIHZhciBncmlkID0gc2Vs Zi5zbGlja2dyaWQsCisgICAgICAgICAgICAgIGRhdGFWaWV3ID0gZ3JpZC5nZXREYXRhKCksCisg ICAgICAgICAgICAgIGRhdGFfbGVuZ3RoID0gZGF0YVZpZXcuZ2V0TGVuZ3RoKCksCisgICAgICAg ICAgICAgIGRhdGEgPSBbXTsKKworICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN0YXR1cykgewor ICAgICAgICAgICAgICAvLyBEaXNhYmxlIFNhdmUgRGF0YSBDaGFuZ2VzIGJ1dHRvbgorICAgICAg ICAgICAgICAkKCcjYnRuLXNhdmUtZGF0YScpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7CisKKyAg ICAgICAgICAgICAgc2F2ZV9zdWNjZXNzZnVsID0gdHJ1ZTsKKworICAgICAgICAgICAgICAvLyBS ZW1vdmUgaGlnaGxpZ2h0ZWQgY2VsbHMgc3R5bGluZworICAgICAgICAgICAgICBmb3IgKGxldCBp ID0gMTsgaSA8PSBzZWxmLm51bWJlck9mTW9kaWZpZWRDZWxsczsgaSsrKQorICAgICAgICAgICAg ICAgIGdyaWQucmVtb3ZlQ2VsbENzc1N0eWxlcyhpKTsKKworICAgICAgICAgICAgICBzZWxmLm51 bWJlck9mTW9kaWZpZWRDZWxscyA9IDA7CisKKyAgICAgICAgICAgICAgaWYoaXNfYWRkZWQpIHsK KyAgICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSByb3dzIGluIGEgZ3JpZCBhZnRlciBhZGRpdGlv bgorICAgICAgICAgICAgICAgIGRhdGFWaWV3LmJlZ2luVXBkYXRlKCk7CisgICAgICAgICAgICAg ICAgXy5lYWNoKHJlcy5kYXRhLnF1ZXJ5X3Jlc3VsdCwgZnVuY3Rpb24ocikgeworICAgICAgICAg ICAgICAgICAgaWYgKCFfLmlzTnVsbChyLnJvd19hZGRlZCkpIHsKKyAgICAgICAgICAgICAgICAg IC8vIEZldGNoIHRlbXBfaWQgcmV0dXJuZWQgYnkgc2VydmVyIGFmdGVyIGFkZGl0aW9uCisgICAg ICAgICAgICAgICAgICAgIHZhciByb3dfaWQgPSBPYmplY3Qua2V5cyhyLnJvd19hZGRlZClbMF07 CisgICAgICAgICAgICAgICAgICAgIF8uZWFjaChyZXFfZGF0YS5hZGRlZF9pbmRleCwgZnVuY3Rp b24odiwgaykgeworICAgICAgICAgICAgICAgICAgICAgIGlmICh2ID09IHJvd19pZCkgeworICAg ICAgICAgICAgICAgICAgICAgIC8vIEZldGNoIGl0ZW0gZGF0YSB0aHJvdWdoIHJvdyBpbmRleAor ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBncmlkLmdldERhdGFJdGVtKGspOwor ICAgICAgICAgICAgICAgICAgICAgICAgXy5leHRlbmQoaXRlbSwgci5yb3dfYWRkZWRbcm93X2lk XSk7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9KTsKICAg ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgICAg IC8vIFJlbW92ZSAyZCBjb3BpZWRfcm93cyBhcnJheQotICAgICAgICAgICAgICAgIGlmIChncmlk LmNvcGllZF9yb3dzKSB7Ci0gICAgICAgICAgICAgICAgICBkZWxldGUgZ3JpZC5jb3BpZWRfcm93 czsKKyAgICAgICAgICAgICAgICBkYXRhVmlldy5lbmRVcGRhdGUoKTsKKyAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAvLyBSZW1vdmUgZmxhZyBpc19yb3dfY29waWVkIGZyb20gY29waWVk IHJvd3MKKyAgICAgICAgICAgICAgXy5lYWNoKGRhdGEsIGZ1bmN0aW9uKHJvdykgeworICAgICAg ICAgICAgICAgIGlmIChyb3cuaXNfcm93X2NvcGllZCkgeworICAgICAgICAgICAgICAgICAgZGVs ZXRlIHJvdy5pc19yb3dfY29waWVkOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg fSk7CiAKLSAgICAgICAgICAgICAgICAvLyBSZW1vdmUgZGVsZXRlZCByb3dzIGZyb20gY2xpZW50 IGFzIHdlbGwKLSAgICAgICAgICAgICAgICBpZiAoaXNfZGVsZXRlZCkgewotICAgICAgICAgICAg ICAgICAgdmFyIHJvd3MgPSBfLmtleXMoc2VsZi5kYXRhX3N0b3JlLmRlbGV0ZWQpOwotICAgICAg ICAgICAgICAgICAgaWYgKGRhdGFfbGVuZ3RoID09IHJvd3MubGVuZ3RoKSB7Ci0gICAgICAgICAg ICAgICAgICAvLyBUaGlzIG1lYW5zIGFsbCB0aGUgcm93cyBhcmUgc2VsZWN0ZWQsIGNsZWFyIGFs bCBkYXRhCi0gICAgICAgICAgICAgICAgICAgIGRhdGEgPSBbXTsKLSAgICAgICAgICAgICAgICAg ICAgZGF0YVZpZXcuc2V0SXRlbXMoZGF0YSwgc2VsZi5jbGllbnRfcHJpbWFyeV9rZXkpOwotICAg ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgZGF0YVZpZXcuYmVn aW5VcGRhdGUoKTsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByb3dz Lmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBncmlkLmdl dERhdGFJdGVtKHJvd3NbaV0pOwotICAgICAgICAgICAgICAgICAgICAgIGRhdGEucHVzaChpdGVt KTsKLSAgICAgICAgICAgICAgICAgICAgICBkYXRhVmlldy5kZWxldGVJdGVtKGl0ZW1bc2VsZi5j bGllbnRfcHJpbWFyeV9rZXldKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg ICAgICAgICBkYXRhVmlldy5lbmRVcGRhdGUoKTsKKyAgICAgICAgICAgICAgLy8gUmVtb3ZlIDJk IGNvcGllZF9yb3dzIGFycmF5CisgICAgICAgICAgICAgIGlmIChncmlkLmNvcGllZF9yb3dzKSB7 CisgICAgICAgICAgICAgICAgZGVsZXRlIGdyaWQuY29waWVkX3Jvd3M7CisgICAgICAgICAgICAg IH0KKworICAgICAgICAgICAgICAvLyBSZW1vdmUgZGVsZXRlZCByb3dzIGZyb20gY2xpZW50IGFz IHdlbGwKKyAgICAgICAgICAgICAgaWYgKGlzX2RlbGV0ZWQpIHsKKyAgICAgICAgICAgICAgICB2 YXIgcm93cyA9IF8ua2V5cyhzZWxmLmRhdGFfc3RvcmUuZGVsZXRlZCk7CisgICAgICAgICAgICAg ICAgaWYgKGRhdGFfbGVuZ3RoID09IHJvd3MubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgLy8g VGhpcyBtZWFucyBhbGwgdGhlIHJvd3MgYXJlIHNlbGVjdGVkLCBjbGVhciBhbGwgZGF0YQorICAg ICAgICAgICAgICAgICAgZGF0YSA9IFtdOworICAgICAgICAgICAgICAgICAgZGF0YVZpZXcuc2V0 SXRlbXMoZGF0YSwgc2VsZi5jbGllbnRfcHJpbWFyeV9rZXkpOworICAgICAgICAgICAgICAgIH0g ZWxzZSB7CisgICAgICAgICAgICAgICAgICBkYXRhVmlldy5iZWdpblVwZGF0ZSgpOworICAgICAg ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByb3dzLmxlbmd0aDsgaSsrKSB7CisgICAg ICAgICAgICAgICAgICAgIHZhciBpdGVtID0gZ3JpZC5nZXREYXRhSXRlbShyb3dzW2ldKTsKKyAg ICAgICAgICAgICAgICAgICAgZGF0YS5wdXNoKGl0ZW0pOworICAgICAgICAgICAgICAgICAgICBk YXRhVmlldy5kZWxldGVJdGVtKGl0ZW1bc2VsZi5jbGllbnRfcHJpbWFyeV9rZXldKTsKICAgICAg ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIHNlbGYucm93c190b19kZWxldGUuYXBw bHkoc2VsZiwgW2RhdGFdKTsKLSAgICAgICAgICAgICAgICAgIGdyaWQuc2V0U2VsZWN0ZWRSb3dz KFtdKTsKKyAgICAgICAgICAgICAgICAgIGRhdGFWaWV3LmVuZFVwZGF0ZSgpOwogICAgICAgICAg ICAgICAgIH0KLQorICAgICAgICAgICAgICAgIHNlbGYucm93c190b19kZWxldGUuYXBwbHkoc2Vs ZiwgW2RhdGFdKTsKICAgICAgICAgICAgICAgICBncmlkLnNldFNlbGVjdGVkUm93cyhbXSk7Cisg ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIC8vIFJlc2V0IGRhdGEgc3RvcmUKLSAg ICAgICAgICAgICAgICBzZWxmLmRhdGFfc3RvcmUgPSB7Ci0gICAgICAgICAgICAgICAgICAnYWRk ZWQnOiB7fSwKLSAgICAgICAgICAgICAgICAgICd1cGRhdGVkJzoge30sCi0gICAgICAgICAgICAg ICAgICAnZGVsZXRlZCc6IHt9LAotICAgICAgICAgICAgICAgICAgJ2FkZGVkX2luZGV4Jzoge30s Ci0gICAgICAgICAgICAgICAgICAndXBkYXRlZF9pbmRleCc6IHt9LAotICAgICAgICAgICAgICAg IH07CisgICAgICAgICAgICAgIGdyaWQuc2V0U2VsZWN0ZWRSb3dzKFtdKTsKIAotICAgICAgICAg ICAgICAgIC8vIFJlc2V0IG9sZCBwcmltYXJ5IGtleSBkYXRhIG5vdwotICAgICAgICAgICAgICAg IHNlbGYucHJpbWFyeV9rZXlzX2RhdGEgPSB7fTsKKyAgICAgICAgICAgICAgLy8gUmVzZXQgZGF0 YSBzdG9yZQorICAgICAgICAgICAgICBzZWxmLmRhdGFfc3RvcmUgPSB7CisgICAgICAgICAgICAg ICAgJ2FkZGVkJzoge30sCisgICAgICAgICAgICAgICAgJ3VwZGF0ZWQnOiB7fSwKKyAgICAgICAg ICAgICAgICAnZGVsZXRlZCc6IHt9LAorICAgICAgICAgICAgICAgICdhZGRlZF9pbmRleCc6IHt9 LAorICAgICAgICAgICAgICAgICd1cGRhdGVkX2luZGV4Jzoge30sCisgICAgICAgICAgICAgIH07 CiAKLSAgICAgICAgICAgICAgICAvLyBDbGVhciBtc2dzIGFmdGVyIHN1Y2Nlc3NmdWwgc2F2ZQot ICAgICAgICAgICAgICAgIHNlbGYuc2V0X3NxbF9tZXNzYWdlKCcnKTsKKyAgICAgICAgICAgICAg Ly8gUmVzZXQgb2xkIHByaW1hcnkga2V5IGRhdGEgbm93CisgICAgICAgICAgICAgIHNlbGYucHJp bWFyeV9rZXlzX2RhdGEgPSB7fTsKIAotICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LnN1Y2Nlc3Mo Z2V0dGV4dCgnRGF0YSBzYXZlZCBzdWNjZXNzZnVsbHkuJykpOwotICAgICAgICAgICAgICB9IGVs c2UgewotICAgICAgICAgICAgICAvLyBTb21ldGhpbmcgd2VudCB3cm9uZyB3aGlsZSBzYXZpbmcg ZGF0YSBvbiB0aGUgZGIgc2VydmVyCi0gICAgICAgICAgICAgICAgJCgnI2J0bi1mbGFzaCcpLnBy b3AoJ2Rpc2FibGVkJywgZmFsc2UpOwotICAgICAgICAgICAgICAgICQoJyNidG4tZG93bmxvYWQn KS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKLSAgICAgICAgICAgICAgICBzZWxmLnNldF9zcWxf bWVzc2FnZShyZXMuZGF0YS5yZXN1bHQpOwotICAgICAgICAgICAgICAgIHZhciBlcnJfbXNnID0g UyhnZXR0ZXh0KCclcy4nKSkuc3ByaW50ZihyZXMuZGF0YS5yZXN1bHQpLnZhbHVlKCk7Ci0gICAg ICAgICAgICAgICAgYWxlcnRpZnkuZXJyb3IoZXJyX21zZywgMjApOwotICAgICAgICAgICAgICAg IGdyaWQuc2V0U2VsZWN0ZWRSb3dzKFtdKTsKLSAgICAgICAgICAgICAgICAvLyBUbyBoaWdobGln aHQgdGhlIHJvdyBhdCBmYXVsdAotICAgICAgICAgICAgICAgIGlmIChfLmhhcyhyZXMuZGF0YSwg J19yb3dpZCcpICYmCi0gICAgICAgICAgICAgICAgKCFfLmlzVW5kZWZpbmVkKHJlcy5kYXRhLl9y b3dpZCkgfHwgIV8uaXNOdWxsKHJlcy5kYXRhLl9yb3dpZCkpKSB7Ci0gICAgICAgICAgICAgICAg ICB2YXIgX3Jvd19pbmRleCA9IHNlbGYuX2ZpbmRfcm93aW5kZXgocmVzLmRhdGEuX3Jvd2lkKTsK LSAgICAgICAgICAgICAgICAgIGlmIChfcm93X2luZGV4IGluIHNlbGYuZGF0YV9zdG9yZS5hZGRl ZF9pbmRleCkgewotICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIG5ldyByb3cgaW5kZXggZnJv bSB0ZW1wX2xpc3QgaWYgc2F2ZSBvcGVyYXRpb24KLSAgICAgICAgICAgICAgICAgIC8vIGZhaWxz Ci0gICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHNlbGYuaGFuZGxlci50ZW1wX25ld19y b3dzLmluZGV4T2YocmVzLmRhdGEuX3Jvd2lkKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlu ZGV4ID4gLTEpIHsKLSAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZXIudGVtcF9uZXdf cm93cy5zcGxpY2UoaW5kZXgsIDEpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg ICAgICAgICAgIHNlbGYuZGF0YV9zdG9yZS5hZGRlZFtzZWxmLmRhdGFfc3RvcmUuYWRkZWRfaW5k ZXhbX3Jvd19pbmRleF1dLmVyciA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICB9IGVsc2UgaWYg KF9yb3dfaW5kZXggaW4gc2VsZi5kYXRhX3N0b3JlLnVwZGF0ZWRfaW5kZXgpIHsKLSAgICAgICAg ICAgICAgICAgICAgc2VsZi5kYXRhX3N0b3JlLnVwZGF0ZWRbc2VsZi5kYXRhX3N0b3JlLnVwZGF0 ZWRfaW5kZXhbX3Jvd19pbmRleF1dLmVyciA9IHRydWU7CisgICAgICAgICAgICAgIC8vIENsZWFy IG1zZ3MgYWZ0ZXIgc3VjY2Vzc2Z1bCBzYXZlCisgICAgICAgICAgICAgIHNlbGYuc2V0X3NxbF9t ZXNzYWdlKCcnKTsKKworICAgICAgICAgICAgICB2YXIgbXNnLCBpc19jb21taXRfcmVxdWlyZWQg PSBfLmhhcyhyZXMuZGF0YSwgJ2lzX2NvbW1pdF9yZXF1aXJlZCcpICYmCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFfLmlzTnVsbChyZXMuZGF0YS5pc19jb21t aXRfcmVxdWlyZWQpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlcy5kYXRhLmlzX2NvbW1pdF9yZXF1aXJlZDsKKworICAgICAgICAgICAgICBpZihpc19j b21taXRfcmVxdWlyZWQpIHsKKyAgICAgICAgICAgICAgICBtc2cgPSBnZXR0ZXh0KCdEYXRhIHNh dmVkIHN1Y2Nlc3NmdWxseSwgeW91IHN0aWxsIG5lZWQgdG8gY29tbWl0IGNoYW5nZXMgdG8gdGhl IGRhdGFiYXNlLicpOworICAgICAgICAgICAgICAgIHNlbGYuZGlzYWJsZV90cmFuc2FjdGlvbl9i dXR0b25zKGZhbHNlKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlCisgICAg ICAgICAgICAgICAgbXNnID0gZ2V0dGV4dCgnRGF0YSBzYXZlZCBzdWNjZXNzZnVsbHkuJyk7CisK KyAgICAgICAgICAgICAgYWxlcnRpZnkuc3VjY2Vzcyhtc2cpOworICAgICAgICAgICAgfSBlbHNl IHsKKyAgICAgICAgICAgIC8vIFNvbWV0aGluZyB3ZW50IHdyb25nIHdoaWxlIHNhdmluZyBkYXRh IG9uIHRoZSBkYiBzZXJ2ZXIKKyAgICAgICAgICAgICAgc2VsZi5zZXRfc3FsX21lc3NhZ2UocmVz LmRhdGEucmVzdWx0KTsKKyAgICAgICAgICAgICAgdmFyIGVycl9tc2cgPSBTKGdldHRleHQoJyVz LicpKS5zcHJpbnRmKHJlcy5kYXRhLnJlc3VsdCkudmFsdWUoKTsKKyAgICAgICAgICAgICAgYWxl cnRpZnkuZXJyb3IoZXJyX21zZywgMjApOworICAgICAgICAgICAgICBncmlkLnNldFNlbGVjdGVk Um93cyhbXSk7CisgICAgICAgICAgICAgIC8vIFRvIGhpZ2hsaWdodCB0aGUgcm93IGF0IGZhdWx0 CisgICAgICAgICAgICAgIGlmIChfLmhhcyhyZXMuZGF0YSwgJ19yb3dpZCcpICYmCisgICAgICAg ICAgICAgICghXy5pc1VuZGVmaW5lZChyZXMuZGF0YS5fcm93aWQpIHx8ICFfLmlzTnVsbChyZXMu ZGF0YS5fcm93aWQpKSkgeworICAgICAgICAgICAgICAgIHZhciBfcm93X2luZGV4ID0gc2VsZi5f ZmluZF9yb3dpbmRleChyZXMuZGF0YS5fcm93aWQpOworICAgICAgICAgICAgICAgIGlmIChfcm93 X2luZGV4IGluIHNlbGYuZGF0YV9zdG9yZS5hZGRlZF9pbmRleCkgeworICAgICAgICAgICAgICAg IC8vIFJlbW92ZSBuZXcgcm93IGluZGV4IGZyb20gdGVtcF9saXN0IGlmIHNhdmUgb3BlcmF0aW9u CisgICAgICAgICAgICAgICAgLy8gZmFpbHMKKyAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9 IHNlbGYuaGFuZGxlci50ZW1wX25ld19yb3dzLmluZGV4T2YocmVzLmRhdGEuX3Jvd2lkKTsKKyAg ICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIHNl bGYuaGFuZGxlci50ZW1wX25ld19yb3dzLnNwbGljZShpbmRleCwgMSk7CiAgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgICBzZWxmLmRhdGFfc3RvcmUuYWRkZWRbc2VsZi5kYXRh X3N0b3JlLmFkZGVkX2luZGV4W19yb3dfaW5kZXhdXS5lcnIgPSB0cnVlOworICAgICAgICAgICAg ICAgIH0gZWxzZSBpZiAoX3Jvd19pbmRleCBpbiBzZWxmLmRhdGFfc3RvcmUudXBkYXRlZF9pbmRl eCkgeworICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhX3N0b3JlLnVwZGF0ZWRbc2VsZi5kYXRh X3N0b3JlLnVwZGF0ZWRfaW5kZXhbX3Jvd19pbmRleF1dLmVyciA9IHRydWU7CiAgICAgICAgICAg ICAgICAgfQotICAgICAgICAgICAgICAgIGdyaWQuZ290b0NlbGwoX3Jvd19pbmRleCwgMSk7CiAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZ3JpZC5nb3RvQ2VsbChfcm93X2luZGV4LCAx KTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHNxbCByZXN1 bHRzIGluIGhpc3RvcnkgdGFiCi0gICAgICAgICAgICAgIF8uZWFjaChyZXMuZGF0YS5xdWVyeV9y ZXN1bHQsIGZ1bmN0aW9uKHIpIHsKLSAgICAgICAgICAgICAgICBzZWxmLmdyaWRWaWV3Lmhpc3Rv cnlfY29sbGVjdGlvbi5hZGQoewotICAgICAgICAgICAgICAgICAgJ3N0YXR1cyc6IHIuc3RhdHVz LAotICAgICAgICAgICAgICAgICAgJ3N0YXJ0X3RpbWUnOiBzZWxmLnF1ZXJ5X3N0YXJ0X3RpbWUs Ci0gICAgICAgICAgICAgICAgICAncXVlcnknOiByLnNxbCwKLSAgICAgICAgICAgICAgICAgICdy b3dfYWZmZWN0ZWQnOiByLnJvd3NfYWZmZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAndG90YWxf dGltZSc6IHNlbGYudG90YWxfdGltZSwKLSAgICAgICAgICAgICAgICAgICdtZXNzYWdlJzogci5y ZXN1bHQsCi0gICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHNx bCByZXN1bHRzIGluIGhpc3RvcnkgdGFiCisgICAgICAgICAgICBfLmVhY2gocmVzLmRhdGEucXVl cnlfcmVzdWx0LCBmdW5jdGlvbihyKSB7CisgICAgICAgICAgICAgIHNlbGYuZ3JpZFZpZXcuaGlz dG9yeV9jb2xsZWN0aW9uLmFkZCh7CisgICAgICAgICAgICAgICAgJ3N0YXR1cyc6IHIuc3RhdHVz LAorICAgICAgICAgICAgICAgICdzdGFydF90aW1lJzogc2VsZi5xdWVyeV9zdGFydF90aW1lLAor ICAgICAgICAgICAgICAgICdxdWVyeSc6IHIuc3FsLAorICAgICAgICAgICAgICAgICdyb3dfYWZm ZWN0ZWQnOiByLnJvd3NfYWZmZWN0ZWQsCisgICAgICAgICAgICAgICAgJ3RvdGFsX3RpbWUnOiBz ZWxmLnRvdGFsX3RpbWUsCisgICAgICAgICAgICAgICAgJ21lc3NhZ2UnOiByLnJlc3VsdCwKICAg ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgIHNlbGYudHJpZ2dlcigncGdhZG1pbi1zcWxl ZGl0b3I6bG9hZGluZy1pY29uOmhpZGUnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAg c2VsZi50cmlnZ2VyKCdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246aGlkZScpOwogCi0g ICAgICAgICAgICAgIGdyaWQuaW52YWxpZGF0ZSgpOwotICAgICAgICAgICAgICBpZiAoc2VsZi5j bG9zZV9vbl9zYXZlKSB7Ci0gICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpOworICAgICAgICAg ICAgZ3JpZC5pbnZhbGlkYXRlKCk7CisgICAgICAgICAgICBpZiAoc2VsZi5jbG9zZV9vbl9zYXZl KSB7CisgICAgICAgICAgICAgIGlmKHNhdmVfc3VjY2Vzc2Z1bCkgeworICAgICAgICAgICAgICAg IC8vIENoZWNrIGZvciBhbnkgb3RoZXIgbmVlZGVkIGNvbmZpcm1hdGlvbnMgYmVmb3JlIGNsb3Np bmcKKyAgICAgICAgICAgICAgICBzZWxmLmNoZWNrX25lZWRlZF9jb25maXJtYXRpb25zX2JlZm9y ZV9jbG9zaW5nX3BhbmVsKCk7CiAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pCi0gICAg ICAgICAgICAuZmFpbChmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgIGxldCBzdGF0ZVBhcmFt cyA9IFt2aWV3LCBjb250cm9sbGVyLCBzYXZlX2FzXTsKLSAgICAgICAgICAgICAgbGV0IG1zZyA9 IGh0dHBFcnJvckhhbmRsZXIuaGFuZGxlUXVlcnlUb29sQWpheEVycm9yKAotICAgICAgICAgICAg ICAgIHBnQWRtaW4sIHNlbGYsIGUsICdfc2F2ZScsIHN0YXRlUGFyYW1zLCB0cnVlCi0gICAgICAg ICAgICAgICk7Ci0gICAgICAgICAgICAgIHNlbGYudXBkYXRlX21zZ19oaXN0b3J5KGZhbHNlLCBt c2cpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZSB7Cisg ICAgICAgICAgICAgICAgc2VsZi5jbG9zZV9vbl9zYXZlID0gZmFsc2U7CisgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9KQorICAgICAgICAgIC5mYWlsKGZ1bmN0aW9u KGUpIHsKKyAgICAgICAgICAgIGxldCBzdGF0ZVBhcmFtcyA9IFt2aWV3XTsKKyAgICAgICAgICAg IGxldCBtc2cgPSBodHRwRXJyb3JIYW5kbGVyLmhhbmRsZVF1ZXJ5VG9vbEFqYXhFcnJvcigKKyAg ICAgICAgICAgICAgcGdBZG1pbiwgc2VsZiwgZSwgJ19zYXZkYXRhJywgc3RhdGVQYXJhbXMsIHRy dWUKKyAgICAgICAgICAgICk7CisgICAgICAgICAgICBzZWxmLnVwZGF0ZV9tc2dfaGlzdG9yeShm YWxzZSwgbXNnKTsKKyAgICAgICAgICB9KTsKICAgICAgIH0sCiAKICAgICAgIC8vIEZpbmQgaW5k ZXggb2Ygcm93IGF0IGZhdWx0IGZyb20gZ3JpZCBkYXRhCkBAIC0zMDQyLDcgKzMwMjksNyBAQCBk ZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKIAogICAgICAgLy8gU2F2ZSBhcwogICAgICAgX3Nh dmVfYXM6IGZ1bmN0aW9uKCkgewotICAgICAgICByZXR1cm4gdGhpcy5fc2F2ZSh0cnVlKTsKKyAg ICAgICAgcmV0dXJuIHRoaXMuX3NhdmVfZmlsZSh0cnVlKTsKICAgICAgIH0sCiAKICAgICAgIC8v IFNldCBwYW5lbCB0aXRsZS4KQEAgLTMxMzIsNyArMzExOSw3IEBAIGRlZmluZSgndG9vbHMucXVl cnl0b29sJywgWwogICAgICAgICAgICAgJGJ1c3lfaWNvbl9kaXYucmVtb3ZlQ2xhc3MoJ3Nob3df cHJvZ3Jlc3MnKTsKIAogICAgICAgICAgICAgLy8gZGlzYWJsZSBzYXZlIGJ1dHRvbiBvbiBmaWxl IHNhdmUKLSAgICAgICAgICAgICQoJyNidG4tc2F2ZScpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7 CisgICAgICAgICAgICAkKCcjYnRuLXNhdmUtZmlsZScpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7 CiAgICAgICAgICAgICAkKCcjYnRuLWZpbGUtbWVudS1zYXZlJykuY3NzKCdkaXNwbGF5JywgJ25v bmUnKTsKIAogICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBmbGFnIGFzIG5ldyBjb250ZW50IGlz IGp1c3QgbG9hZGVkLgpAQCAtMzE3Nyw3ICszMTY0LDcgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRv b2wnLCBbCiAgICAgICAgICAgICAgIHNlbGYuZ3JpZFZpZXcuY3VycmVudF9maWxlID0gZTsKICAg ICAgICAgICAgICAgc2VsZi5zZXRUaXRsZShzZWxmLmdyaWRWaWV3LmN1cnJlbnRfZmlsZS5yZXBs YWNlKC9eLipbXFxcL10vZywgJycpLCB0cnVlKTsKICAgICAgICAgICAgICAgLy8gZGlzYWJsZSBz YXZlIGJ1dHRvbiBvbiBmaWxlIHNhdmUKLSAgICAgICAgICAgICAgJCgnI2J0bi1zYXZlJykucHJv cCgnZGlzYWJsZWQnLCB0cnVlKTsKKyAgICAgICAgICAgICAgJCgnI2J0bi1zYXZlLWZpbGUnKS5w cm9wKCdkaXNhYmxlZCcsIHRydWUpOwogICAgICAgICAgICAgICAkKCcjYnRuLWZpbGUtbWVudS1z YXZlJykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKIAogICAgICAgICAgICAgICAvLyBVcGRhdGUg dGhlIGZsYWcgYXMgcXVlcnkgaXMgYWxyZWFkeSBzYXZlZC4KQEAgLTMxODYsNyArMzE3Myw4IEBA IGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICAgICAgfQogICAgICAgICAgICAg c2VsZi50cmlnZ2VyKCdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246aGlkZScpOwogICAg ICAgICAgICAgaWYgKHNlbGYuY2xvc2Vfb25fc2F2ZSkgewotICAgICAgICAgICAgICBzZWxmLmNs b3NlKCk7CisgICAgICAgICAgICAgIC8vIENoZWNrIGZvciBhbnkgb3RoZXIgbmVlZGVkIGNvbmZp cm1hdGlvbnMgYmVmb3JlIGNsb3NpbmcKKyAgICAgICAgICAgICAgc2VsZi5jaGVja19uZWVkZWRf Y29uZmlybWF0aW9uc19iZWZvcmVfY2xvc2luZ19wYW5lbCgpOwogICAgICAgICAgICAgfQogICAg ICAgICAgIH0pCiAgICAgICAgICAgLmZhaWwoZnVuY3Rpb24oZSkgewpAQCAtMzIyNiw3ICszMjE0 LDcgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAgICAgICBzZWxmLnNldFRp dGxlKHRpdGxlKTsKICAgICAgICAgICB9CiAKLSAgICAgICAgICAkKCcjYnRuLXNhdmUnKS5wcm9w KCdkaXNhYmxlZCcsIGZhbHNlKTsKKyAgICAgICAgICAkKCcjYnRuLXNhdmUtZmlsZScpLnByb3Ao J2Rpc2FibGVkJywgZmFsc2UpOwogICAgICAgICAgICQoJyNidG4tZmlsZS1tZW51LXNhdmUnKS5j c3MoJ2Rpc3BsYXknLCAnYmxvY2snKTsKICAgICAgICAgICAkKCcjYnRuLWZpbGUtbWVudS1kcm9w ZG93bicpLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpOwogICAgICAgICB9CkBAIC0zNDYwLDcgKzM0 NDgsNyBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgaWYgKGNvcGllZF9y b3dzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAvLyBFbmFibGUgc2F2ZSBidXR0b24gc28gdGhh dCB1c2VyIGNhbgogICAgICAgICAgIC8vIHNhdmUgbmV3bHkgcGFzdGVkIHJvd3Mgb24gc2VydmVy Ci0gICAgICAgICAgJCgnI2J0bi1zYXZlJykucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7CisgICAg ICAgICAgJCgnI2J0bi1zYXZlLWRhdGEnKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKIAogICAg ICAgICAgIHZhciBhcnJfdG9fb2JqZWN0ID0gZnVuY3Rpb24oYXJyKSB7CiAgICAgICAgICAgICB2 YXIgb2JqID0ge307CkBAIC0zNTYzLDcgKzM1NTEsNyBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9v bCcsIFsKICAgICAgICAgJCgnI2J0bi1leHBsYWluLW9wdGlvbnMtZHJvcGRvd24nKS5wcm9wKCdk aXNhYmxlZCcsIG1vZGVfZGlzYWJsZWQpOwogICAgICAgICAkKCcjYnRuLWVkaXQtZHJvcGRvd24n KS5wcm9wKCdkaXNhYmxlZCcsIG1vZGVfZGlzYWJsZWQpOwogICAgICAgICAkKCcjYnRuLWxvYWQt ZmlsZScpLnByb3AoJ2Rpc2FibGVkJywgbW9kZV9kaXNhYmxlZCk7Ci0gICAgICAgICQoJyNidG4t c2F2ZScpLnByb3AoJ2Rpc2FibGVkJywgbW9kZV9kaXNhYmxlZCk7CisgICAgICAgICQoJyNidG4t c2F2ZS1maWxlJykucHJvcCgnZGlzYWJsZWQnLCBtb2RlX2Rpc2FibGVkKTsKICAgICAgICAgJCgn I2J0bi1maWxlLW1lbnUtZHJvcGRvd24nKS5wcm9wKCdkaXNhYmxlZCcsIG1vZGVfZGlzYWJsZWQp OwogICAgICAgICAkKCcjYnRuLWZpbmQnKS5wcm9wKCdkaXNhYmxlZCcsIG1vZGVfZGlzYWJsZWQp OwogICAgICAgICAkKCcjYnRuLWZpbmQtbWVudS1kcm9wZG93bicpLnByb3AoJ2Rpc2FibGVkJywg bW9kZV9kaXNhYmxlZCk7CkBAIC0zNTkyLDggKzM1ODAsMzYgQEAgZGVmaW5lKCd0b29scy5xdWVy eXRvb2wnLCBbCiAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIHdpbGwgZmV0Y2ggdGhlIHNxbCBxdWVy eSBmcm9tIHRoZSB0ZXh0IGJveAogICAgICAgLy8gYW5kIGV4ZWN1dGUgdGhlIHF1ZXJ5LgogICAg ICAgZXhlY3V0ZTogZnVuY3Rpb24oZXhwbGFpbl9wcmVmaXgsIHNob3VsZFJlY29ubmVjdD1mYWxz ZSkgewotICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCi0gICAgICAgICAgc3FsID0gJyc7CisgICAg ICAgIHZhciBzZWxmID0gdGhpczsKKworICAgICAgICAvLyBDaGVjayBpZiB0aGUgZGF0YSBncmlk IGhhcyBhbnkgY2hhbmdlcyBiZWZvcmUgcnVubmluZyBxdWVyeQorICAgICAgICAvLyBDaGVjayBp ZiB0aGUgZGF0YSBncmlkIGhhcyBhbnkgY2hhbmdlcyBiZWZvcmUgcnVubmluZyBxdWVyeQorICAg ICAgICBpZiAoc2VsZi5jYW5fZWRpdCAmJiBfLmhhcyhzZWxmLCAnZGF0YV9zdG9yZScpICYmCisg ICAgICAgICAgKF8uc2l6ZShzZWxmLmRhdGFfc3RvcmUuYWRkZWQpIHx8CisgICAgICAgICAgICBf LnNpemUoc2VsZi5kYXRhX3N0b3JlLnVwZGF0ZWQpIHx8CisgICAgICAgICAgICBfLnNpemUoc2Vs Zi5kYXRhX3N0b3JlLmRlbGV0ZWQpKQorICAgICAgICApIHsKKyAgICAgICAgICBhbGVydGlmeS5j b25maXJtKGdldHRleHQoJ1Vuc2F2ZWQgY2hhbmdlcycpLAorICAgICAgICAgICAgZ2V0dGV4dCgn VGhlIGRhdGEgaGFzIGJlZW4gbW9kaWZpZWQsIGJ1dCBub3Qgc2F2ZWQuIEFyZSB5b3Ugc3VyZSB5 b3Ugd2lzaCB0byBkaXNjYXJkIHRoZSBjaGFuZ2VzPycpLAorICAgICAgICAgICAgZnVuY3Rpb24o KSB7CisgICAgICAgICAgICAgIC8vIERvIG5vdGhpbmcgYXMgdXNlciBkbyBub3Qgd2FudCB0byBz YXZlLCBqdXN0IGNvbnRpbnVlCisgICAgICAgICAgICAgIHNlbGYuX2V4ZWN1dGVfc3FsX3F1ZXJ5 KGV4cGxhaW5fcHJlZml4LCBzaG91bGRSZWNvbm5lY3QpOworICAgICAgICAgICAgfSwKKyAgICAg ICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAvLyBTdG9wLCBVc2VyIHdhbnRzIHRv IHNhdmUKKyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAg ICAgKS5zZXQoJ2xhYmVscycsIHsKKyAgICAgICAgICAgIG9rOiBnZXR0ZXh0KCdZZXMnKSwKKyAg ICAgICAgICAgIGNhbmNlbDogZ2V0dGV4dCgnTm8nKSwKKyAgICAgICAgICB9KTsKKyAgICAgICAg fSBlbHNlIHsKKyAgICAgICAgICBzZWxmLl9leGVjdXRlX3NxbF9xdWVyeShleHBsYWluX3ByZWZp eCwgc2hvdWxkUmVjb25uZWN0KTsKKyAgICAgICAgfQorICAgICAgfSwKKworICAgICAgX2V4ZWN1 dGVfc3FsX3F1ZXJ5OiBmdW5jdGlvbihleHBsYWluX3ByZWZpeCwgc2hvdWxkUmVjb25uZWN0KSB7 CisgICAgICAgIHZhciBzZWxmID0gdGhpcywgc3FsID0gJyc7CiAKICAgICAgICAgc2VsZi5oYXNf bW9yZV9yb3dzID0gZmFsc2U7CiAgICAgICAgIHNlbGYuZmV0Y2hpbmdfcm93cyA9IGZhbHNlOwpA QCAtMzYwMiw4ICszNjE4LDggQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAg ICAgc3FsID0gc2VsZi5zcGVjaWFsX3NxbDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAv KiBJZiBjb2RlIGlzIHNlbGVjdGVkIGluIHRoZSBjb2RlIG1pcnJvciB0aGVuIGV4ZWN1dGUKLSAg ICAgICAgICAgKiB0aGUgc2VsZWN0ZWQgcGFydCBlbHNlIGV4ZWN1dGUgdGhlIGNvbXBsZXRlIGNv ZGUuCi0gICAgICAgICAgICovCisgICAgICAgICAgKiB0aGUgc2VsZWN0ZWQgcGFydCBlbHNlIGV4 ZWN1dGUgdGhlIGNvbXBsZXRlIGNvZGUuCisgICAgICAgICAgKi8KICAgICAgICAgICB2YXIgc2Vs ZWN0ZWRfY29kZSA9IHNlbGYuZ3JpZFZpZXcucXVlcnlfdG9vbF9vYmouZ2V0U2VsZWN0aW9uKCk7 CiAgICAgICAgICAgaWYgKHNlbGVjdGVkX2NvZGUubGVuZ3RoID4gMCkKICAgICAgICAgICAgIHNx bCA9IHNlbGVjdGVkX2NvZGU7CkBAIC0zOTk4LDYgKzQwMTQsMTQ2IEBAIGRlZmluZSgndG9vbHMu cXVlcnl0b29sJywgWwogICAgICAgICBpc19xdWVyeV9ydW5uaW5nID0gdmFsdWU7CiAgICAgICB9 LAogCisgICAgICAvKiBDaGVja3MgaWYgdGhlcmUgaXMgYW55IHVuc2F2ZWQgZGF0YSBjaGFuZ2Vz LCB1bnNhdmVkIGNoYW5nZXMgaW4gdGhlIHF1ZXJ5CisgICAgICBvciB1bmNvbW1pdGVkIHRyYW5z YWN0aW9ucyBiZWZvcmUgY2xvc2luZyBhIHBhbmVsICovCisgICAgICBjaGVja19uZWVkZWRfY29u ZmlybWF0aW9uc19iZWZvcmVfY2xvc2luZ19wYW5lbDogZnVuY3Rpb24oaXNfY2xvc2VfZXZlbnRf Y2FsbCA9IGZhbHNlKSB7CisgICAgICAgIHZhciBzZWxmID0gdGhpcywgbXNnOworCisgICAgICAg IC8qCisgICAgICAgICBpc19jbG9zZV9ldmVudF9jYWxsID0gdHJ1ZSBvbmx5IHdoZW4gdGhlIGZ1 bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZQorICAgICAgICAgY2xvc2UgcGFuZWwgZXZlbnQgaXMg dHJpZ2dlcmVkLCBvdGhlcndpc2UgaXQgaXMgZmFsc2UKKyAgICAgICAgKi8KKyAgICAgICAgaWYo IXNlbGYuaWdub3JlX29uX2Nsb3NlIHx8IGlzX2Nsb3NlX2V2ZW50X2NhbGwpCisgICAgICAgICAg c2VsZi5pZ25vcmVfb25fY2xvc2UgPSB7CisgICAgICAgICAgICB1bnNhdmVkX2RhdGE6IGZhbHNl LAorICAgICAgICAgICAgdW5zYXZlZF9xdWVyeTogZmFsc2UsCisgICAgICAgICAgICB1bmNvbW1p dGVkX3RyYW5zYWN0aW9uOiBmYWxzZSwKKyAgICAgICAgICB9OworCisgICAgICAgIHZhciBpZ25v cmVfdW5zYXZlZF9kYXRhID0gc2VsZi5pZ25vcmVfb25fY2xvc2UudW5zYXZlZF9kYXRhLAorICAg ICAgICAgIGlnbm9yZV91bnNhdmVkX3F1ZXJ5ID0gc2VsZi5pZ25vcmVfb25fY2xvc2UudW5zYXZl ZF9xdWVyeSwKKyAgICAgICAgICBpZ25vcmVfdW5jb21taXRlZF90cmFuc2FjdGlvbiA9IHNlbGYu aWdub3JlX29uX2Nsb3NlLnVuY29tbWl0ZWRfdHJhbnNhY3Rpb247CisKKyAgICAgICAgLy8gSWYg dGhlcmUgaXMgdW5zYXZlZCBkYXRhIGNoYW5nZXMgaW4gdGhlIGdyaWQKKyAgICAgICAgaWYgKCFp Z25vcmVfdW5zYXZlZF9kYXRhICYmIHNlbGYuY2FuX2VkaXQKKyAgICAgICAgICAgICYmIHNlbGYu cHJlZmVyZW5jZXMucHJvbXB0X3NhdmVfZGF0YV9jaGFuZ2VzICYmCisgICAgICAgICAgICBzZWxm LmRhdGFfc3RvcmUgJiYKKyAgICAgICAgICAgICAoXy5zaXplKHNlbGYuZGF0YV9zdG9yZS5hZGRl ZCkgfHwKKyAgICAgICAgICAgICAgXy5zaXplKHNlbGYuZGF0YV9zdG9yZS51cGRhdGVkKSB8fAor ICAgICAgICAgICAgICBfLnNpemUoc2VsZi5kYXRhX3N0b3JlLmRlbGV0ZWQpKSkgeworICAgICAg ICAgIG1zZyA9IGdldHRleHQoJ1RoZSBkYXRhIGhhcyBjaGFuZ2VkLiBEbyB5b3Ugd2FudCB0byBz YXZlIGNoYW5nZXM/Jyk7CisgICAgICAgICAgc2VsZi51bnNhdmVkX2NoYW5nZXNfdXNlcl9jb25m aXJtYXRpb24obXNnLCB0cnVlKTsKKyAgICAgICAgfSAvLyBJZiB0aGVyZSBpcyB1bnNhdmVkIHF1 ZXJ5IGNoYW5nZXMgaW4gdGhlIHF1ZXJ5IGVkaXRvcgorICAgICAgICBlbHNlIGlmICghaWdub3Jl X3Vuc2F2ZWRfcXVlcnkgJiYgc2VsZi5pc19xdWVyeV90b29sCisgICAgICAgICAgICAgICAgICAg JiYgc2VsZi5pc19xdWVyeV9jaGFuZ2VkCisgICAgICAgICAgICAgICAgICAgJiYgc2VsZi5wcmVm ZXJlbmNlcy5wcm9tcHRfc2F2ZV9xdWVyeV9jaGFuZ2VzKSB7CisgICAgICAgICAgbXNnID0gZ2V0 dGV4dCgnVGhlIHRleHQgaGFzIGNoYW5nZWQuIERvIHlvdSB3YW50IHRvIHNhdmUgY2hhbmdlcz8n KTsKKyAgICAgICAgICBzZWxmLnVuc2F2ZWRfY2hhbmdlc191c2VyX2NvbmZpcm1hdGlvbihtc2cs IGZhbHNlKTsKKyAgICAgICAgfSAvLyBJZiBhIHRyYW5zYWN0aW9uIGlzIGN1cnJlbnRseSBvbmdv aW5nCisgICAgICAgIGVsc2UgaWYgKCFpZ25vcmVfdW5jb21taXRlZF90cmFuc2FjdGlvbgorICAg ICAgICAgICAgICAgICAmJiBzZWxmLnByZWZlcmVuY2VzLnByb21wdF91bmNvbW1pdGVkX3RyYW5z YWN0aW9uCisgICAgICAgICAgICAgICAgICYmIFNxbEVkaXRvclV0aWxzLnByZXZpb3VzU3RhdHVz ICE9IDApIHsKKyAgICAgICAgICBzZWxmLnVuY29tbWl0ZWRfdHJhbnNhY3Rpb25fdXNlcl9jb25m aXJtYXRpb24oKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAvLyBObyBv dGhlciBmdW5jdGlvbiBzaG91bGQgY2FsbCBjbG9zZSgpIGV4Y2VwdCB0aHJvdWdoIHRoaXMgZnVu Y3Rpb24KKyAgICAgICAgICAvLyBpbiBvcmRlciB0byBwZXJmb3JtIG5lY2Vzc2FyeSBjaGVja3MK KyAgICAgICAgICBzZWxmLmlnbm9yZV9vbl9jbG9zZSA9IHVuZGVmaW5lZDsKKyAgICAgICAgICBz ZWxmLmNsb3NlKCk7CisgICAgICAgIH0KKyAgICAgICAgLy8gUmV0dXJuIGZhbHNlIHNvIHRoYXQg dGhlIHBhbmVsIGRvZXMgbm90IGNsb3NlIHVubGVzcyBjbG9zZSgpCisgICAgICAgIC8vIGlzIGNh bGxlZCBleHBsaWNpdGx5ICh3aGVuIGFsbCBuZWVkZWQgcHJvbXB0cyBhcmUgaXNzdWVkKS4KKyAg ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfSwKKworICAgICAgLyogVG8gcHJvbXB0IHRoZSB1 c2VyIGZvciB1bmNvbW1pdGVkIHRyYW5zYWN0aW9uICovCisgICAgICB1bmNvbW1pdGVkX3RyYW5z YWN0aW9uX3VzZXJfY29uZmlybWF0aW9uOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHNlbGYg PSB0aGlzOworCisgICAgICAgIGFsZXJ0aWZ5LmNvbmZpcm0oCisgICAgICAgICAgZ2V0dGV4dCgn VW5jb21taXRlZCB0cmFuc2FjdGlvbicpLAorICAgICAgICAgIGdldHRleHQoYFRoZSBjdXJyZW50 IHRyYW5zYWN0aW9uIHdhcyBub3QgY29tbWl0ZWQgdG8gdGhlIGRhdGFiYXNlLgorICAgICAgICAg ICBBcmUgeW91IHN1cmUgeW91IHdpc2ggdG8gZGlzY2FyZCB0aGUgY3VycmVudCB0cmFuc2FjdGlv bj9gKSwKKyAgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8vIEdvIGJhY2sgdG8g Y2hlY2sgZm9yIGFueSBvdGhlciBuZWVkZWQgY29uZmlybWF0aW9ucyBiZWZvcmUgY2xvc2luZwor ICAgICAgICAgICAgc2VsZi5pZ25vcmVfb25fY2xvc2UudW5jb21taXRlZF90cmFuc2FjdGlvbiA9 IHRydWU7CisgICAgICAgICAgICBzZWxmLmNoZWNrX25lZWRlZF9jb25maXJtYXRpb25zX2JlZm9y ZV9jbG9zaW5nX3BhbmVsKCk7CisgICAgICAgICAgfSwKKyAgICAgICAgICBmdW5jdGlvbigpIHsK KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICB9CisgICAgICAgICkuc2V0KCdsYWJlbHMn LCB7CisgICAgICAgICAgb2s6IGdldHRleHQoJ1llcycpLAorICAgICAgICAgIGNhbmNlbDogZ2V0 dGV4dCgnTm8nKSwKKyAgICAgICAgfSk7CisgICAgICB9LAorCisgICAgICAvKiBUbyBwcm9tcHQg dXNlciBmb3IgdW5zYXZlZCBjaGFuZ2VzICovCisgICAgICB1bnNhdmVkX2NoYW5nZXNfdXNlcl9j b25maXJtYXRpb246IGZ1bmN0aW9uKG1zZywgaXNfdW5zYXZlZF9kYXRhKSB7CisgICAgICAgIC8v IElmIHRoZXJlIGlzIGFueXRoaW5nIHRvIHNhdmUgdGhlbiBwcm9tcHQgdXNlcgorICAgICAgICB2 YXIgc2VsZiA9IHRoaXM7CisKKyAgICAgICAgYWxlcnRpZnkuY29uZmlybVNhdmUgfHwgYWxlcnRp ZnkuZGlhbG9nKCdjb25maXJtU2F2ZScsIGZ1bmN0aW9uKCkgeworICAgICAgICAgIHJldHVybiB7 CisgICAgICAgICAgICBtYWluOiBmdW5jdGlvbih0aXRsZSwgbWVzc2FnZSwgaXNfdW5zYXZlZF9k YXRhKSB7CisgICAgICAgICAgICAgIHRoaXMuaXNfdW5zYXZlZF9kYXRhID0gaXNfdW5zYXZlZF9k YXRhOworICAgICAgICAgICAgICB0aGlzLnNldEhlYWRlcih0aXRsZSk7CisgICAgICAgICAgICAg IHRoaXMuc2V0Q29udGVudChtZXNzYWdlKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBz ZXR1cDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAg ICAgYnV0dG9uczogW3sKKyAgICAgICAgICAgICAgICAgIHRleHQ6IGdldHRleHQoJ0NhbmNlbCcp LAorICAgICAgICAgICAgICAgICAga2V5OiAyNywgLy8gRVNDCisgICAgICAgICAgICAgICAgICBp bnZva2VPbkNsb3NlOiB0cnVlLAorICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0 bi1zZWNvbmRhcnkgZmEgZmEtbGcgZmEtdGltZXMgcGctYWxlcnRpZnktYnV0dG9uJywKKyAgICAg ICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgICB0ZXh0OiBnZXR0ZXh0KCdEb25cJ3Qg c2F2ZScpLAorICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1zZWNvbmRhcnkg ZmEgZmEtbGcgZmEtdHJhc2gtbyBwZy1hbGVydGlmeS1idXR0b24nLAorICAgICAgICAgICAgICAg IH0sIHsKKyAgICAgICAgICAgICAgICAgIHRleHQ6IGdldHRleHQoJ1NhdmUnKSwKKyAgICAgICAg ICAgICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tcHJpbWFyeSBmYSBmYS1sZyBmYS1zYXZlIHBn LWFsZXJ0aWZ5LWJ1dHRvbicsCisgICAgICAgICAgICAgICAgfV0sCisgICAgICAgICAgICAgICAg Zm9jdXM6IHsKKyAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IDAsCisgICAgICAgICAgICAgICAg ICBzZWxlY3Q6IGZhbHNlLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgb3B0 aW9uczogeworICAgICAgICAgICAgICAgICAgbWF4aW1pemFibGU6IGZhbHNlLAorICAgICAgICAg ICAgICAgICAgcmVzaXphYmxlOiBmYWxzZSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg ICAgICB9OworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbihj bG9zZUV2ZW50KSB7CisgICAgICAgICAgICAgIHN3aXRjaCAoY2xvc2VFdmVudC5pbmRleCkgewor ICAgICAgICAgICAgICBjYXNlIDA6IC8vIENhbmNlbAorICAgICAgICAgICAgICAgIC8vRG8gbm90 aGluZy4KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxOiAvLyBE b24ndCBTYXZlCisgICAgICAgICAgICAgICAgc2VsZi5jbG9zZV9vbl9zYXZlID0gZmFsc2U7Cisg ICAgICAgICAgICAgICAgaWYodGhpcy5pc191bnNhdmVkX2RhdGEpCisgICAgICAgICAgICAgICAg ICBzZWxmLmlnbm9yZV9vbl9jbG9zZS51bnNhdmVkX2RhdGEgPSB0cnVlOworICAgICAgICAgICAg ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgIHNlbGYuaWdub3JlX29uX2Nsb3NlLnVuc2F2ZWRf cXVlcnkgPSB0cnVlOworICAgICAgICAgICAgICAgIC8vIEdvIGJhY2sgdG8gY2hlY2sgZm9yIGFu eSBvdGhlciBuZWVkZWQgY29uZmlybWF0aW9ucyBiZWZvcmUgY2xvc2luZworICAgICAgICAgICAg ICAgIHNlbGYuY2hlY2tfbmVlZGVkX2NvbmZpcm1hdGlvbnNfYmVmb3JlX2Nsb3NpbmdfcGFuZWwo KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAyOiAvL1NhdmUK KyAgICAgICAgICAgICAgICBzZWxmLmNsb3NlX29uX3NhdmUgPSB0cnVlOworICAgICAgICAgICAg ICAgIGlmKHRoaXMuaXNfdW5zYXZlZF9kYXRhKSB7CisgICAgICAgICAgICAgICAgICBzZWxmLnNh dmVfZGF0YSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAg ICAgICAgICAgICAgICAgIHNlbGYuX3NhdmVfZmlsZSgpOworICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAg ICAgICAgICB9OworICAgICAgICB9KTsKKyAgICAgICAgYWxlcnRpZnkuY29uZmlybVNhdmUoZ2V0 dGV4dCgnU2F2ZSBjaGFuZ2VzPycpLCBtc2csIGlzX3Vuc2F2ZWRfZGF0YSk7CisgICAgICB9LAor CiAgICAgICBjbG9zZTogZnVuY3Rpb24oKSB7CiAgICAgICAgIHZhciBzZWxmID0gdGhpczsKIApk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9zY3NzL19zcWxl ZGl0b3Iuc2NzcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvc2Nzcy9fc3Fs ZWRpdG9yLnNjc3MKaW5kZXggZWJmNWIxODAuLjI3NDJmMzIwIDEwMDY0NAotLS0gYS93ZWIvcGdh ZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL3Njc3MvX3NxbGVkaXRvci5zY3NzCisrKyBiL3dl Yi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvc2Nzcy9fc3FsZWRpdG9yLnNjc3MKQEAg LTIwOSw2ICsyMDksMTMgQEAgbGkuQ29kZU1pcnJvci1oaW50LWFjdGl2ZSB7CiAgIGNvbG9yOiAk dGV4dC1tdXRlZDsKIH0KIAorLyogSGlnaGxpZ2h0ZWQgKG1vZGlmaWVkIG9yIG5ldykgY2VsbCAq LworLmdyaWQtY2FudmFzIC5oaWdobGlnaHRlZF9ncmlkX2NlbGxzIHsKKyAgYmFja2dyb3VuZDog JGNvbG9yLWdyYXktbGlnaHRlcjsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKKwogLyogT3Zl cnJpZGUgc2VsZWN0ZWQgcm93IGNvbG9yICovCiAjZGF0YWdyaWQgLnNsaWNrLXJvdyAuc2xpY2st Y2VsbC5zZWxlY3RlZCB7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWJnLXNlbGVjdGVk OwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3RlbXBsYXRlcy9zcWxl ZGl0b3Ivc3FsLzExX3BsdXMvcHJpbWFyeV9rZXlzLnNxbCBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Nx bGVkaXRvci90ZW1wbGF0ZXMvc3FsZWRpdG9yL3NxbC8xMV9wbHVzL3ByaW1hcnlfa2V5cy5zcWwK aW5kZXggMWRmYjA5NGYuLjQ1OTk3N2U5IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9z cWxlZGl0b3IvdGVtcGxhdGVzL3NxbGVkaXRvci9zcWwvMTFfcGx1cy9wcmltYXJ5X2tleXMuc3Fs CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZW1wbGF0ZXMvc3FsZWRpdG9yL3Nx bC8xMV9wbHVzL3ByaW1hcnlfa2V5cy5zcWwKQEAgLTEsNiArMSw2IEBACiB7IyA9PT09PT09PT09 PT09IEZldGNoIHRoZSBwcmltYXJ5IGtleXMgZm9yIGdpdmVuIG9iamVjdCBpZCA9PT09PT09PT09 PT09ICN9CiB7JSBpZiBvYmpfaWQgJX0KLVNFTEVDVCBhdC5hdHRuYW1lLCB0eS50eXBuYW1lCitT RUxFQ1QgYXQuYXR0bmFtZSwgYXQuYXR0bnVtLCB0eS50eXBuYW1lCiBGUk9NIHBnX2F0dHJpYnV0 ZSBhdCBMRUZUIEpPSU4gcGdfdHlwZSB0eSBPTiAodHkub2lkID0gYXQuYXR0dHlwaWQpCiBXSEVS RSBhdHRyZWxpZD17e29ial9pZH19OjpvaWQgQU5EIGF0dG51bSA9IEFOWSAoCiAgICAgKFNFTEVD VCBjb24uY29ua2V5IEZST00gcGdfY2xhc3MgcmVsIExFRlQgT1VURVIgSk9JTiBwZ19jb25zdHJh aW50IGNvbiBPTiBjb24uY29ucmVsaWQ9cmVsLm9pZApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v dG9vbHMvc3FsZWRpdG9yL3RlbXBsYXRlcy9zcWxlZGl0b3Ivc3FsL2RlZmF1bHQvcHJpbWFyeV9r ZXlzLnNxbCBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZW1wbGF0ZXMvc3FsZWRpdG9y L3NxbC9kZWZhdWx0L3ByaW1hcnlfa2V5cy5zcWwKaW5kZXggNjBkMGU1NmYuLmE5NmM5MjhmIDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVtcGxhdGVzL3NxbGVkaXRv ci9zcWwvZGVmYXVsdC9wcmltYXJ5X2tleXMuc3FsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Nx bGVkaXRvci90ZW1wbGF0ZXMvc3FsZWRpdG9yL3NxbC9kZWZhdWx0L3ByaW1hcnlfa2V5cy5zcWwK QEAgLTEsOCArMSw4IEBACiB7IyA9PT09PT09PT09PT09IEZldGNoIHRoZSBwcmltYXJ5IGtleXMg Zm9yIGdpdmVuIG9iamVjdCBpZCA9PT09PT09PT09PT09ICN9CiB7JSBpZiBvYmpfaWQgJX0KLVNF TEVDVCBhdC5hdHRuYW1lLCB0eS50eXBuYW1lCitTRUxFQ1QgYXQuYXR0bmFtZSwgYXQuYXR0bnVt LCB0eS50eXBuYW1lCiBGUk9NIHBnX2F0dHJpYnV0ZSBhdCBMRUZUIEpPSU4gcGdfdHlwZSB0eSBP TiAodHkub2lkID0gYXQuYXR0dHlwaWQpCiBXSEVSRSBhdHRyZWxpZD17e29ial9pZH19OjpvaWQg QU5EIGF0dG51bSA9IEFOWSAoCiAgICAgKFNFTEVDVCBjb24uY29ua2V5IEZST00gcGdfY2xhc3Mg cmVsIExFRlQgT1VURVIgSk9JTiBwZ19jb25zdHJhaW50IGNvbiBPTiBjb24uY29ucmVsaWQ9cmVs Lm9pZAogICAgIEFORCBjb24uY29udHlwZT0ncCcgV0hFUkUgcmVsLnJlbGtpbmQgSU4gKCdyJywn cycsJ3QnKSBBTkQgcmVsLm9pZCA9IHt7b2JqX2lkfX06Om9pZCk6Om9pZFtdKQoteyUgZW5kaWYg JX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3V0aWxzL2lzX3F1ZXJ5X3Jlc3VsdHNldF91cGRh dGFibGUucHkgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdXRpbHMvaXNfcXVlcnlfcmVz dWx0c2V0X3VwZGF0YWJsZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4u YTg5ZWNjNmEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Iv dXRpbHMvaXNfcXVlcnlfcmVzdWx0c2V0X3VwZGF0YWJsZS5weQpAQCAtMCwwICsxLDk3IEBACisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisj IENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTksIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0K KyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNl CisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisiIiIKKyAgICBDaGVjayBpZiB0aGUgcmVzdWx0LXNl dCBvZiBhIHF1ZXJ5IGlzIHVwZGF0YWJsZSwgQSByZXN1bHRzZXQgaXMKKyAgICB1cGRhdGFibGUg KGFzIG9mIHRoaXMgdmVyc2lvbikgaWY6CisgICAgICAgIC0gQWxsIGNvbHVtbnMgYmVsb25nIHRv IHRoZSBzYW1lIHRhYmxlLgorICAgICAgICAtIEFsbCB0aGUgcHJpbWFyeSBrZXkgY29sdW1ucyBv ZiB0aGUgdGFibGUgYXJlIHByZXNlbnQgaW4gdGhlIHJlc3VsdHNldAorICAgICAgICAtIE5vIGR1 cGxpY2F0ZSBjb2x1bW5zCisiIiIKK2Zyb20gZmxhc2sgaW1wb3J0IHJlbmRlcl90ZW1wbGF0ZQor dHJ5OgorICAgIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0CitleGNlcHQgSW1w b3J0RXJyb3I6CisgICAgZnJvbSBvcmRlcmVkZGljdCBpbXBvcnQgT3JkZXJlZERpY3QKKworCitk ZWYgaXNfcXVlcnlfcmVzdWx0c2V0X3VwZGF0YWJsZShjb25uLCBzcWxfcGF0aCk6CisgICAgIiIi CisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBjaGVjayB3aGV0aGVyIHRoZSBsYXN0 IHN1Y2Nlc3NmdWwgcXVlcnkKKyAgICAgICAgcHJvZHVjZWQgdXBkYXRhYmxlIHJlc3VsdHMuCisK KyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGNvbm46IENvbm5lY3Rpb24gb2JqZWN0LgorICAg ICAgICAgICAgc3FsX3BhdGg6IHRoZSBwYXRoIHRvIHRoZSBzcWwgdGVtcGxhdGVzLgorICAgICIi IgorICAgIGNvbHVtbnNfaW5mbyA9IGNvbm4uZ2V0X2NvbHVtbl9pbmZvKCkKKworICAgICMgRmV0 Y2ggdGhlIGNvbHVtbiBpbmZvCisgICAgaWYgY29sdW1uc19pbmZvIGlzIE5vbmUgb3IgbGVuKGNv bHVtbnNfaW5mbykgPCAxOgorICAgICAgICByZXR1cm4gRmFsc2UsIE5vbmUsIE5vbmUsIE5vbmUK KworICAgICMgRmlyc3QgY2hlY2sgdGhhdCBhbGwgdGhlIGNvbHVtbnMgYmVsb25nIHRvIGEgc2lu Z2xlIHRhYmxlCisgICAgdGFibGVfb2lkID0gY29sdW1uc19pbmZvWzBdWyd0YWJsZV9vaWQnXQor ICAgIGZvciBjb2x1bW4gaW4gY29sdW1uc19pbmZvOgorICAgICAgICBpZiBjb2x1bW5bJ3RhYmxl X29pZCddICE9IHRhYmxlX29pZDoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZSwgTm9uZSwgTm9u ZSwgTm9uZQorCisgICAgIyBDaGVjayBmb3IgZHVwbGljYXRlIGNvbHVtbnMKKyAgICBjb2x1bW5f bnVtYmVycyA9IFwKKyAgICAgICAgW2NvbFsndGFibGVfY29sdW1uJ10gZm9yIGNvbCBpbiBjb2x1 bW5zX2luZm9dCisgICAgaXNfZHVwbGljYXRlX2NvbHVtbnMgPSBsZW4oY29sdW1uX251bWJlcnMp ICE9IGxlbihzZXQoY29sdW1uX251bWJlcnMpKQorICAgIGlmIGlzX2R1cGxpY2F0ZV9jb2x1bW5z OgorICAgICAgICByZXR1cm4gRmFsc2UsIE5vbmUsIE5vbmUsIE5vbmUKKworICAgIGlmIGNvbm4u Y29ubmVjdGVkKCk6CisgICAgICAgICMgVGhlbiBjaGVjayB0aGF0IGFsbCB0aGUgcHJpbWFyeSBr ZXlzIG9mIHRoZSB0YWJsZSBhcmUgcHJlc2VudAorICAgICAgICAjIGFuZCBubyBwcmltYXJ5IGtl eXMgYXJlIHJlbmFtZWQKKyAgICAgICAgIyAob3Igb3RoZXIgY29sdW1ucyByZW5hbWVkIHRvIGJl IGxpa2UgcHJpbWFyeSBrZXlzKQorICAgICAgICBxdWVyeSA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAg ICAgICAgICAgICIvIi5qb2luKFtzcWxfcGF0aCwgJ3ByaW1hcnlfa2V5cy5zcWwnXSksCisgICAg ICAgICAgICBvYmpfaWQ9dGFibGVfb2lkCisgICAgICAgICkKKyAgICAgICAgc3RhdHVzLCByZXN1 bHQgPSBjb25uLmV4ZWN1dGVfZGljdChxdWVyeSkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgICAgIHJldHVybiBGYWxzZSwgTm9uZSwgTm9uZSwgTm9uZQorCisgICAgICAgIHByaW1h cnlfa2V5c19jb2x1bW5zID0gW10KKyAgICAgICAgcHJpbWFyeV9rZXlzID0gT3JkZXJlZERpY3Qo KQorICAgICAgICBwa19uYW1lcyA9IFtdCisKKyAgICAgICAgZm9yIHJvdyBpbiByZXN1bHRbJ3Jv d3MnXToKKyAgICAgICAgICAgIHByaW1hcnlfa2V5c1tyb3dbJ2F0dG5hbWUnXV0gPSByb3dbJ3R5 cG5hbWUnXQorICAgICAgICAgICAgcHJpbWFyeV9rZXlzX2NvbHVtbnMuYXBwZW5kKHsKKyAgICAg ICAgICAgICAgICAnbmFtZSc6IHJvd1snYXR0bmFtZSddLAorICAgICAgICAgICAgICAgICdjb2x1 bW5fbnVtYmVyJzogcm93WydhdHRudW0nXQorICAgICAgICAgICAgfSkKKyAgICAgICAgICAgIHBr X25hbWVzLmFwcGVuZChyb3dbJ2F0dG5hbWUnXSkKKworICAgICAgICAjIENoZWNrIHRoYXQgYWxs IHByaW1hcnkga2V5cyBleGlzdCBhbmQgdGhhdCBhbGwgb2YgdGhlbSBhcmUgbm90CisgICAgICAg ICMgcmVuYW1lZCBhbmQgb3RoZXIgY29sdW1ucyBhcmUgbm90IHJlbmFtZWQgdG8gcHJpbWFyeSBr ZXkgbmFtZXMKKyAgICAgICAgZm9yIHBrIGluIHByaW1hcnlfa2V5c19jb2x1bW5zOgorICAgICAg ICAgICAgcGtfZXhpc3RzID0gRmFsc2UKKyAgICAgICAgICAgIGZvciBjb2wgaW4gY29sdW1uc19p bmZvOgorICAgICAgICAgICAgICAgIGlmIGNvbFsndGFibGVfY29sdW1uJ10gPT0gcGtbJ2NvbHVt bl9udW1iZXInXToKKyAgICAgICAgICAgICAgICAgICAgcGtfZXhpc3RzID0gVHJ1ZQorICAgICAg ICAgICAgICAgICAgICAjIElmIHRoZSBwcmltYXJ5IGtleSBjb2x1bW4gaXMgcmVuYW1lZAorICAg ICAgICAgICAgICAgICAgICBpZiBjb2xbJ2Rpc3BsYXlfbmFtZSddICE9IHBrWyduYW1lJ106Cisg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UsIE5vbmUsIE5vbmUsIE5vbmUKKyAg ICAgICAgICAgICAgICAjIElmIGEgbm9ybWFsIGNvbHVtbiBpcyByZW5hbWVkIHRvIGEgcHJpbWFy eSBrZXkgY29sdW1uIG5hbWUKKyAgICAgICAgICAgICAgICBlbGlmIGNvbFsnZGlzcGxheV9uYW1l J10gPT0gcGtbJ25hbWUnXToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBOb25l LCBOb25lLCBOb25lCisKKyAgICAgICAgICAgIGlmIG5vdCBwa19leGlzdHM6CisgICAgICAgICAg ICAgICAgcmV0dXJuIEZhbHNlLCBOb25lLCBOb25lLCBOb25lCisKKyAgICAgICAgIyBJZiB0aGUg Zm9yIGxvb3AgZXhpdGVkIHdpdGhvdXQgcmV0dXJuaW5nIGZyb20gdGhlIGZ1bmN0aW9uIHRoZW4K KyAgICAgICAgIyBhbGwgcHJpbWFyeSBrZXlzIGV4aXN0IHdpdGhvdXQgYmVpbmcgcmVuYW1lZAor ICAgICAgICByZXR1cm4gVHJ1ZSwgcHJpbWFyeV9rZXlzLCBwa19uYW1lcywgdGFibGVfb2lkCisg ICAgZWxzZToKKyAgICAgICAgcmV0dXJuIEZhbHNlLCBOb25lLCBOb25lLCBOb25lCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdXRpbHMvcXVlcnlfdG9vbF9wcmVmZXJl bmNlcy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci91dGlscy9xdWVyeV90b29sX3By ZWZlcmVuY2VzLnB5CmluZGV4IGNhMDllYWVjLi42NWUyYjIzYyAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vdG9vbHMvc3FsZWRpdG9yL3V0aWxzL3F1ZXJ5X3Rvb2xfcHJlZmVyZW5jZXMucHkKKysr IGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3V0aWxzL3F1ZXJ5X3Rvb2xfcHJlZmVyZW5j ZXMucHkKQEAgLTE2Myw2ICsxNjMsMTYgQEAgZGVmIFJlZ2lzdGVyUXVlcnlUb29sUHJlZmVyZW5j ZXMoc2VsZik6CiAgICAgICAgICkKICAgICApCiAKKyAgICBzZWxmLnNob3dfcHJvbXB0X3VuY29t bWl0ZWRfdHJhbnNhY3Rpb24gPSBzZWxmLnByZWZlcmVuY2UucmVnaXN0ZXIoCisgICAgICAgICdP cHRpb25zJywgJ3Byb21wdF91bmNvbW1pdGVkX3RyYW5zYWN0aW9uJywKKyAgICAgICAgZ2V0dGV4 dCgiUHJvbXB0IG9uIHVuY29tbWl0ZWQgdHJhbnNhY3Rpb25zPyIpLCAnYm9vbGVhbicsIFRydWUs CisgICAgICAgIGNhdGVnb3J5X2xhYmVsPWdldHRleHQoJ09wdGlvbnMnKSwKKyAgICAgICAgaGVs cF9zdHI9Z2V0dGV4dCgKKyAgICAgICAgICAgICdTcGVjaWZpZXMgd2hldGhlciBvciBub3QgdG8g cHJvbXB0IHVzZXIgd2hlbiBhIGN1cnJlbnQgJworICAgICAgICAgICAgJ3RyYW5zYWN0aW9uIGlz IHVuY29tbWl0ZWQgb24gUXVlcnkgVG9vbCBleGl0LicKKyAgICAgICAgKQorICAgICkKKwogICAg IHNlbGYuY3N2X3F1b3RpbmcgPSBzZWxmLnByZWZlcmVuY2UucmVnaXN0ZXIoCiAgICAgICAgICdD U1Zfb3V0cHV0JywgJ2Nzdl9xdW90aW5nJywKICAgICAgICAgZ2V0dGV4dCgiQ1NWIHF1b3Rpbmci KSwgJ29wdGlvbnMnLCAnc3RyaW5ncycsCkBAIC0yOTAsNiArMzAwLDI0IEBAIGRlZiBSZWdpc3Rl clF1ZXJ5VG9vbFByZWZlcmVuY2VzKHNlbGYpOgogICAgICAgICBmaWVsZHM9c2hvcnRjdXRfZmll bGRzCiAgICAgKQogCisgICAgc2VsZi5wcmVmZXJlbmNlLnJlZ2lzdGVyKAorICAgICAgICAna2V5 Ym9hcmRfc2hvcnRjdXRzJywKKyAgICAgICAgJ3NhdmVfZGF0YScsCisgICAgICAgIGdldHRleHQo J1NhdmUgRGF0YSBDaGFuZ2VzJyksCisgICAgICAgICdrZXlib2FyZHNob3J0Y3V0JywKKyAgICAg ICAgeworICAgICAgICAgICAgJ2FsdCc6IEZhbHNlLAorICAgICAgICAgICAgJ3NoaWZ0JzogRmFs c2UsCisgICAgICAgICAgICAnY29udHJvbCc6IEZhbHNlLAorICAgICAgICAgICAgJ2tleSc6IHsK KyAgICAgICAgICAgICAgICAna2V5X2NvZGUnOiAxMTcsCisgICAgICAgICAgICAgICAgJ2NoYXIn OiAnRjYnCisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIGNhdGVnb3J5X2xhYmVs PWdldHRleHQoJ0tleWJvYXJkIHNob3J0Y3V0cycpLAorICAgICAgICBmaWVsZHM9c2hvcnRjdXRf ZmllbGRzCisgICAgKQorCiAgICAgc2VsZi5wcmVmZXJlbmNlLnJlZ2lzdGVyKAogICAgICAgICAn a2V5Ym9hcmRfc2hvcnRjdXRzJywKICAgICAgICAgJ2V4cGxhaW5fcXVlcnknLApkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3V0aWxzL3NhdmVfY2hhbmdlZF9kYXRhLnB5 IGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3V0aWxzL3NhdmVfY2hhbmdlZF9kYXRhLnB5 Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4zMDFiODgwMwotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci91dGlscy9zYXZlX2NoYW5nZWRf ZGF0YS5weQpAQCAtMCwwICsxLDMxNiBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1p biA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE5LCBU aGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQg dW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZnJv bSBmbGFzayBpbXBvcnQgcmVuZGVyX3RlbXBsYXRlCitmcm9tIHBnYWRtaW4udG9vbHMuc3FsZWRp dG9yLnV0aWxzLmNvbnN0YW50X2RlZmluaXRpb24gaW1wb3J0IFRYX1NUQVRVU19JRExFCit0cnk6 CisgICAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKK2V4Y2VwdCBJbXBvcnRF cnJvcjoKKyAgICBmcm9tIG9yZGVyZWRkaWN0IGltcG9ydCBPcmRlcmVkRGljdAorCisKK2RlZiBz YXZlX2NoYW5nZWRfZGF0YShjaGFuZ2VkX2RhdGEsIGNvbHVtbnNfaW5mbywgY29ubiwgY29tbWFu ZF9vYmosCisgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X3ByaW1hcnlfa2V5LCBhdXRvX2Nv bW1pdD1UcnVlKToKKyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gc2F2ZSB0 aGUgZGF0YSBpbnRvIHRoZSBkYXRhYmFzZS4KKyAgICBEZXBlbmRpbmcgb24gY29uZGl0aW9uIGl0 IHdpbGwgZWl0aGVyIHVwZGF0ZSBvciBpbnNlcnQgdGhlCisgICAgbmV3IHJvdyBpbnRvIHRoZSBk YXRhYmFzZS4KKworICAgIEFyZ3M6CisgICAgICAgIGNoYW5nZWRfZGF0YTogQ29udGFpbnMgZGF0 YSB0byBiZSBzYXZlZAorICAgICAgICBjb21tYW5kX29iajogVGhlIHRyYW5zYWN0aW9uIG9iamVj dCAoY29tbWFuZF9vYmogb3IgdHJhbnNfb2JqKQorICAgICAgICBjb25uOiBUaGUgY29ubmVjdGlv biBvYmplY3QKKyAgICAgICAgY29sdW1uc19pbmZvOiBzZXNzaW9uX29ialsnY29sdW1uc19pbmZv J10KKyAgICAgICAgY2xpZW50X3ByaW1hcnlfa2V5OiBzZXNzaW9uX29ialsnY2xpZW50X3ByaW1h cnlfa2V5J10KKyAgICAgICAgYXV0b19jb21taXQ6IElmIHRoZSBjaGFuZ2VzIHNob3VsZCBiZSBj b21taXRlZCBhdXRvbWF0aWNhbGx5LgorICAgICIiIgorICAgIHN0YXR1cyA9IEZhbHNlCisgICAg cmVzID0gTm9uZQorICAgIHF1ZXJ5X3JlcyA9IGRpY3QoKQorICAgIGNvdW50ID0gMAorICAgIGxp c3Rfb2Zfcm93aWQgPSBbXQorICAgIG9wZXJhdGlvbnMgPSAoJ2FkZGVkJywgJ3VwZGF0ZWQnLCAn ZGVsZXRlZCcpCisgICAgbGlzdF9vZl9zcWwgPSB7fQorICAgIF9yb3dpZCA9IE5vbmUKKyAgICBp c19jb21taXRfcmVxdWlyZWQgPSBGYWxzZQorCisgICAgcGdhZG1pbl9hbGlhcyA9IHsKKyAgICAg ICAgY29sX25hbWU6IGNvbF9pbmZvWydwZ2FkbWluX2FsaWFzJ10KKyAgICAgICAgZm9yIGNvbF9u YW1lLCBjb2xfaW5mbyBpbiBjb2x1bW5zX2luZm8uaXRlbXMoKQorICAgIH0KKworICAgIGlmIGNv bm4uY29ubmVjdGVkKCk6CisgICAgICAgIGlzX3NhdmVwb2ludCA9IEZhbHNlCisgICAgICAgICMg U3RhcnQgdGhlIHRyYW5zYWN0aW9uIGlmIHRoZSBzZXNzaW9uIGlzIGlkbGUKKyAgICAgICAgaWYg Y29ubi50cmFuc2FjdGlvbl9zdGF0dXMoKSA9PSBUWF9TVEFUVVNfSURMRToKKyAgICAgICAgICAg IGNvbm4uZXhlY3V0ZV92b2lkKCdCRUdJTjsnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg Y29ubi5leGVjdXRlX3ZvaWQoJ1NBVkVQT0lOVCBzYXZlX2RhdGE7JykKKyAgICAgICAgICAgIGlz X3NhdmVwb2ludCA9IFRydWUKKworICAgICAgICAjIEl0ZXJhdGUgdG90YWwgbnVtYmVyIG9mIHJl Y29yZHMgdG8gYmUgdXBkYXRlZC9pbnNlcnRlZAorICAgICAgICBmb3Igb2ZfdHlwZSBpbiBjaGFu Z2VkX2RhdGE6CisgICAgICAgICAgICAjIE5vIG5lZWQgdG8gZ28gZnVydGhlciBpZiBpdHMgbm90 IGFkZC91cGRhdGUvZGVsZXRlIG9wZXJhdGlvbgorICAgICAgICAgICAgaWYgb2ZfdHlwZSBub3Qg aW4gb3BlcmF0aW9uczoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgIyBp ZiBubyBkYXRhIHRvIGJlIHNhdmUgdGhlbiBjb250aW51ZQorICAgICAgICAgICAgaWYgbGVuKGNo YW5nZWRfZGF0YVtvZl90eXBlXSkgPCAxOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAg ICAgICAgICAgIGNvbHVtbl90eXBlID0ge30KKyAgICAgICAgICAgIGNvbHVtbl9kYXRhID0ge30K KyAgICAgICAgICAgIGZvciBlYWNoX2NvbCBpbiBjb2x1bW5zX2luZm86CisgICAgICAgICAgICAg ICAgaWYgKAorICAgICAgICAgICAgICAgICAgICBjb2x1bW5zX2luZm9bZWFjaF9jb2xdWydub3Rf bnVsbCddIGFuZAorICAgICAgICAgICAgICAgICAgICBub3QgY29sdW1uc19pbmZvW2VhY2hfY29s XVsnaGFzX2RlZmF1bHRfdmFsJ10KKyAgICAgICAgICAgICAgICApOgorICAgICAgICAgICAgICAg ICAgICBjb2x1bW5fZGF0YVtlYWNoX2NvbF0gPSBOb25lCisgICAgICAgICAgICAgICAgICAgIGNv bHVtbl90eXBlW2VhY2hfY29sXSA9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnNf aW5mb1tlYWNoX2NvbF1bJ3R5cGVfbmFtZSddCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAg ICAgICAgICAgICAgICAgY29sdW1uX3R5cGVbZWFjaF9jb2xdID0gXAorICAgICAgICAgICAgICAg ICAgICAgICAgY29sdW1uc19pbmZvW2VhY2hfY29sXVsndHlwZV9uYW1lJ10KKworICAgICAgICAg ICAgIyBGb3IgbmV3bHkgYWRkZWQgcm93cworICAgICAgICAgICAgaWYgb2ZfdHlwZSA9PSAnYWRk ZWQnOgorICAgICAgICAgICAgICAgICMgUHl0aG9uIGRpY3QgZG9lcyBub3QgaG9ub3VyIHRoZSBp bnNlcnRlZCBpdGVtIG9yZGVyCisgICAgICAgICAgICAgICAgIyBTbyB0byBpbnNlcnQgZGF0YSBp biB0aGUgb3JkZXIsIHdlIG5lZWQgdG8gbWFrZSBvcmRlcmVkCisgICAgICAgICAgICAgICAgIyBs aXN0IG9mIGFkZGVkIGluZGV4IFdlIGRvbid0IG5lZWQgdGhpcyBtZWNoYW5pc20gaW4KKyAgICAg ICAgICAgICAgICAjIHVwZGF0ZWQvZGVsZXRlZCByb3dzIGFzIGl0IGRvZXMgbm90IG1hdHRlciBp bgorICAgICAgICAgICAgICAgICMgdGhvc2Ugb3BlcmF0aW9ucworICAgICAgICAgICAgICAgIGFk ZGVkX2luZGV4ID0gT3JkZXJlZERpY3QoCisgICAgICAgICAgICAgICAgICAgIHNvcnRlZCgKKyAg ICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWRfZGF0YVsnYWRkZWRfaW5kZXgnXS5pdGVtcygp LAorICAgICAgICAgICAgICAgICAgICAgICAga2V5PWxhbWJkYSB4OiBpbnQoeFswXSkKKyAgICAg ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBsaXN0 X29mX3NxbFtvZl90eXBlXSA9IFtdCisKKyAgICAgICAgICAgICAgICAjIFdoZW4gbmV3IHJvd3Mg YXJlIGFkZGVkLCBvbmx5IGNoYW5nZWQgY29sdW1ucyBkYXRhIGlzCisgICAgICAgICAgICAgICAg IyBzZW50IGZyb20gY2xpZW50IHNpZGUuIEJ1dCBpZiBjb2x1bW4gaXMgbm90X251bGwgYW5kIGhh cworICAgICAgICAgICAgICAgICMgbm9fZGVmYXVsdF92YWx1ZSwgc2V0IGNvbHVtbiB0byBibGFu aywgaW5zdGVhZAorICAgICAgICAgICAgICAgICMgb2Ygbm90IG51bGwgd2hpY2ggaXMgc2V0IGJ5 IGRlZmF1bHQuCisgICAgICAgICAgICAgICAgY29sdW1uX2RhdGEgPSB7fQorICAgICAgICAgICAg ICAgIHBrX25hbWVzLCBwcmltYXJ5X2tleXMgPSBjb21tYW5kX29iai5nZXRfcHJpbWFyeV9rZXlz KCkKKyAgICAgICAgICAgICAgICBoYXNfb2lkcyA9ICdvaWQnIGluIGNvbHVtbl90eXBlCisKKyAg ICAgICAgICAgICAgICBmb3IgZWFjaF9yb3cgaW4gYWRkZWRfaW5kZXg6CisgICAgICAgICAgICAg ICAgICAgICMgR2V0IHRoZSByb3cgaW5kZXggdG8gbWF0Y2ggd2l0aCB0aGUgYWRkZWQgcm93cwor ICAgICAgICAgICAgICAgICAgICAjIGRpY3Qga2V5CisgICAgICAgICAgICAgICAgICAgIHRtcF9y b3dfaW5kZXggPSBhZGRlZF9pbmRleFtlYWNoX3Jvd10KKyAgICAgICAgICAgICAgICAgICAgZGF0 YSA9IGNoYW5nZWRfZGF0YVtvZl90eXBlXVt0bXBfcm93X2luZGV4XVsnZGF0YSddCisgICAgICAg ICAgICAgICAgICAgICMgUmVtb3ZlIG91ciB1bmlxdWUgdHJhY2tpbmcga2V5CisgICAgICAgICAg ICAgICAgICAgIGRhdGEucG9wKGNsaWVudF9wcmltYXJ5X2tleSwgTm9uZSkKKyAgICAgICAgICAg ICAgICAgICAgZGF0YS5wb3AoJ2lzX3Jvd19jb3BpZWQnLCBOb25lKQorICAgICAgICAgICAgICAg ICAgICBsaXN0X29mX3Jvd2lkLmFwcGVuZChkYXRhLmdldChjbGllbnRfcHJpbWFyeV9rZXkpKQor CisgICAgICAgICAgICAgICAgICAgICMgVXBkYXRlIGNvbHVtbnMgdmFsdWUgd2l0aCBjb2x1bW5z IGhhdmluZworICAgICAgICAgICAgICAgICAgICAjIG5vdF9udWxsPUZhbHNlIGFuZCBoYXMgbm8g ZGVmYXVsdCB2YWx1ZQorICAgICAgICAgICAgICAgICAgICBjb2x1bW5fZGF0YS51cGRhdGUoZGF0 YSkKKworICAgICAgICAgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAg ICAgICAgICAgICAgICAgICAiLyIuam9pbihbY29tbWFuZF9vYmouc3FsX3BhdGgsICdpbnNlcnQu c3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV90b19iZV9zYXZlZD1jb2x1bW5f ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBnYWRtaW5fYWxpYXM9cGdhZG1pbl9hbGlh cywKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlfa2V5cz1Ob25lLAorICAgICAgICAg ICAgICAgICAgICAgICAgb2JqZWN0X25hbWU9Y29tbWFuZF9vYmoub2JqZWN0X25hbWUsCisgICAg ICAgICAgICAgICAgICAgICAgICBuc3BfbmFtZT1jb21tYW5kX29iai5uc3BfbmFtZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgIGRhdGFfdHlwZT1jb2x1bW5fdHlwZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgIHBrX25hbWVzPXBrX25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgaGFz X29pZHM9aGFzX29pZHMKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAg ICAgIHNlbGVjdF9zcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgICAgICAg ICAiLyIuam9pbihbY29tbWFuZF9vYmouc3FsX3BhdGgsICdzZWxlY3Quc3FsJ10pLAorICAgICAg ICAgICAgICAgICAgICAgICAgb2JqZWN0X25hbWU9Y29tbWFuZF9vYmoub2JqZWN0X25hbWUsCisg ICAgICAgICAgICAgICAgICAgICAgICBuc3BfbmFtZT1jb21tYW5kX29iai5uc3BfbmFtZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlfa2V5cz1wcmltYXJ5X2tleXMsCisgICAgICAg ICAgICAgICAgICAgICAgICBoYXNfb2lkcz1oYXNfb2lkcworICAgICAgICAgICAgICAgICAgICAp CisKKyAgICAgICAgICAgICAgICAgICAgbGlzdF9vZl9zcWxbb2ZfdHlwZV0uYXBwZW5kKHsKKyAg ICAgICAgICAgICAgICAgICAgICAgICdzcWwnOiBzcWwsICdkYXRhJzogZGF0YSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICdjbGllbnRfcm93JzogdG1wX3Jvd19pbmRleCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICdzZWxlY3Rfc3FsJzogc2VsZWN0X3NxbAorICAgICAgICAgICAgICAgICAg ICB9KQorICAgICAgICAgICAgICAgICAgICAjIFJlc2V0IGNvbHVtbiBkYXRhCisgICAgICAgICAg ICAgICAgICAgIGNvbHVtbl9kYXRhID0ge30KKworICAgICAgICAgICAgIyBGb3IgdXBkYXRlZCBy b3dzCisgICAgICAgICAgICBlbGlmIG9mX3R5cGUgPT0gJ3VwZGF0ZWQnOgorICAgICAgICAgICAg ICAgIGxpc3Rfb2Zfc3FsW29mX3R5cGVdID0gW10KKyAgICAgICAgICAgICAgICBmb3IgZWFjaF9y b3cgaW4gY2hhbmdlZF9kYXRhW29mX3R5cGVdOgorICAgICAgICAgICAgICAgICAgICBkYXRhID0g Y2hhbmdlZF9kYXRhW29mX3R5cGVdW2VhY2hfcm93XVsnZGF0YSddCisgICAgICAgICAgICAgICAg ICAgIHBrX2VzY2FwZWQgPSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwazogc3RyKHBrX3Zh bCkucmVwbGFjZSgnJScsICclJScpCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcGssIHBr X3ZhbCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZF9kYXRhW29mX3R5cGVdW2Vh Y2hfcm93XVsncHJpbWFyeV9rZXlzJ10uaXRlbXMoKQorICAgICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAg ICAgICAgICAgICIvIi5qb2luKFtjb21tYW5kX29iai5zcWxfcGF0aCwgJ3VwZGF0ZS5zcWwnXSks CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3RvX2JlX3NhdmVkPWRhdGEsCisgICAgICAg ICAgICAgICAgICAgICAgICBwZ2FkbWluX2FsaWFzPXBnYWRtaW5fYWxpYXMsCisgICAgICAgICAg ICAgICAgICAgICAgICBwcmltYXJ5X2tleXM9cGtfZXNjYXBlZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgIG9iamVjdF9uYW1lPWNvbW1hbmRfb2JqLm9iamVjdF9uYW1lLAorICAgICAgICAgICAg ICAgICAgICAgICAgbnNwX25hbWU9Y29tbWFuZF9vYmoubnNwX25hbWUsCisgICAgICAgICAgICAg ICAgICAgICAgICBkYXRhX3R5cGU9Y29sdW1uX3R5cGUKKyAgICAgICAgICAgICAgICAgICAgKQor ICAgICAgICAgICAgICAgICAgICBsaXN0X29mX3NxbFtvZl90eXBlXS5hcHBlbmQoeydzcWwnOiBz cWwsICdkYXRhJzogZGF0YX0pCisgICAgICAgICAgICAgICAgICAgIGxpc3Rfb2Zfcm93aWQuYXBw ZW5kKGRhdGEuZ2V0KGNsaWVudF9wcmltYXJ5X2tleSkpCisKKyAgICAgICAgICAgICMgRm9yIGRl bGV0ZWQgcm93cworICAgICAgICAgICAgZWxpZiBvZl90eXBlID09ICdkZWxldGVkJzoKKyAgICAg ICAgICAgICAgICBsaXN0X29mX3NxbFtvZl90eXBlXSA9IFtdCisgICAgICAgICAgICAgICAgaXNf Zmlyc3QgPSBUcnVlCisgICAgICAgICAgICAgICAgcm93c190b19kZWxldGUgPSBbXQorICAgICAg ICAgICAgICAgIGtleXMgPSBOb25lCisgICAgICAgICAgICAgICAgbm9fb2Zfa2V5cyA9IE5vbmUK KyAgICAgICAgICAgICAgICBmb3IgZWFjaF9yb3cgaW4gY2hhbmdlZF9kYXRhW29mX3R5cGVdOgor ICAgICAgICAgICAgICAgICAgICByb3dzX3RvX2RlbGV0ZS5hcHBlbmQoY2hhbmdlZF9kYXRhW29m X3R5cGVdW2VhY2hfcm93XSkKKyAgICAgICAgICAgICAgICAgICAgIyBGZXRjaCB0aGUga2V5cyBm b3IgU1FMIGdlbmVyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgaWYgaXNfZmlyc3Q6CisgICAg ICAgICAgICAgICAgICAgICAgICAjIFdlIG5lZWQgdG8gY292ZXJ0IGRpY3Rfa2V5cyB0byBub3Jt YWwgbGlzdCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgIyBQeXRob24zCisgICAgICAgICAg ICAgICAgICAgICAgICAjIEluIFB5dGhvbjIsIGl0J3MgYWxyZWFkeSBhIGxpc3QgJiBXZSB3aWxs IGFsc28KKyAgICAgICAgICAgICAgICAgICAgICAgICMgZmV0Y2ggY29sdW1uIG5hbWVzIHVzaW5n IGluZGV4CisgICAgICAgICAgICAgICAgICAgICAgICBrZXlzID0gbGlzdCgKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjaGFuZ2VkX2RhdGFbb2ZfdHlwZV1bZWFjaF9yb3ddLmtleXMoKQor ICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgbm9fb2Zf a2V5cyA9IGxlbihrZXlzKQorICAgICAgICAgICAgICAgICAgICAgICAgaXNfZmlyc3QgPSBGYWxz ZQorICAgICAgICAgICAgICAgICMgTWFwIGluZGV4IHdpdGggY29sdW1uIG5hbWUgZm9yIGVhY2gg cm93CisgICAgICAgICAgICAgICAgZm9yIHJvdyBpbiByb3dzX3RvX2RlbGV0ZToKKyAgICAgICAg ICAgICAgICAgICAgZm9yIGssIHYgaW4gcm93Lml0ZW1zKCk6CisgICAgICAgICAgICAgICAgICAg ICAgICAjIFNldCBwcmltYXJ5IGtleSB3aXRoIGxhYmVsICYgZGVsZXRlIGluZGV4IGJhc2VkCisg ICAgICAgICAgICAgICAgICAgICAgICAjIG1hcHBlZCBrZXkKKyAgICAgICAgICAgICAgICAgICAg ICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dbY2hhbmdlZF9kYXRhWydj b2x1bW5zJ10KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lu dChrKV1bJ25hbWUnXV0gPSB2CisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVF cnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAg ICAgICAgICAgICAgZGVsIHJvd1trXQorCisgICAgICAgICAgICAgICAgc3FsID0gcmVuZGVyX3Rl bXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbY29tbWFuZF9vYmouc3FsX3Bh dGgsICdkZWxldGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICBkYXRhPXJvd3NfdG9fZGVs ZXRlLAorICAgICAgICAgICAgICAgICAgICBwcmltYXJ5X2tleV9sYWJlbHM9a2V5cywKKyAgICAg ICAgICAgICAgICAgICAgbm9fb2Zfa2V5cz1ub19vZl9rZXlzLAorICAgICAgICAgICAgICAgICAg ICBvYmplY3RfbmFtZT1jb21tYW5kX29iai5vYmplY3RfbmFtZSwKKyAgICAgICAgICAgICAgICAg ICAgbnNwX25hbWU9Y29tbWFuZF9vYmoubnNwX25hbWUKKyAgICAgICAgICAgICAgICApCisgICAg ICAgICAgICAgICAgbGlzdF9vZl9zcWxbb2ZfdHlwZV0uYXBwZW5kKHsnc3FsJzogc3FsLCAnZGF0 YSc6IHt9fSkKKworICAgICAgICBmb3Igb3ByLCBzcWxzIGluIGxpc3Rfb2Zfc3FsLml0ZW1zKCk6 CisgICAgICAgICAgICBmb3IgaXRlbSBpbiBzcWxzOgorICAgICAgICAgICAgICAgIGlmIGl0ZW1b J3NxbCddOgorICAgICAgICAgICAgICAgICAgICBpdGVtWydkYXRhJ10gPSB7CisgICAgICAgICAg ICAgICAgICAgICAgICBwZ2FkbWluX2FsaWFzW2tdIGlmIGsgaW4gcGdhZG1pbl9hbGlhcyBlbHNl IGs6IHYKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIGl0ZW1bJ2RhdGEnXS5p dGVtcygpCisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICByb3df YWRkZWQgPSBOb25lCisKKyAgICAgICAgICAgICAgICAgICAgZGVmIGZhaWx1cmVfaGFuZGxlKHJl cyk6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBpc19zYXZlcG9pbnQ6CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29ubi5leGVjdXRlX3ZvaWQoJ1JPTExCQUNLIFRPIFNBVkVQT0lO VCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NhdmVf ZGF0YTsnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICdRdWVyeSBST0xMQkFD SywgYnV0IHRoZSBjdXJyZW50ICcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICd0cmFuc2FjdGlvbiBpcyBzdGlsbCBvbmdvaW5nLicKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZXMgKz0gJyBTYXZpbmcgUk9MTEJBQ0ssIGJ1dCB0aGUgY3VycmVudCAnIFwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zYWN0aW9uIGlzIHN0aWxsIG9uZ29p bmcnCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbm4uZXhlY3V0ZV92b2lkKCdST0xMQkFDSzsnKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG1zZyA9ICdUcmFuc2FjdGlvbiBST0xMQkFDSycKKyAgICAgICAgICAgICAgICAg ICAgICAgICMgSWYgd2Ugcm9sbCBiYWNrZWQgZXZlcnkgdGhpbmcgdGhlbiB1cGRhdGUgdGhlCisg ICAgICAgICAgICAgICAgICAgICAgICAjIG1lc3NhZ2UgZm9yIGVhY2ggc3FsIHF1ZXJ5LgorICAg ICAgICAgICAgICAgICAgICAgICAgZm9yIHZhbCBpbiBxdWVyeV9yZXM6CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaWYgcXVlcnlfcmVzW3ZhbF1bJ3N0YXR1cyddOgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBxdWVyeV9yZXNbdmFsXVsncmVzdWx0J10gPSBtc2cKKworICAg ICAgICAgICAgICAgICAgICAgICAgIyBJZiBsaXN0IGlzIGVtcHR5IHNldCByb3dpZCB0byAxCisg ICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg aWYgbGlzdF9vZl9yb3dpZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3Jvd2lk ID0gbGlzdF9vZl9yb3dpZFtjb3VudF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcm93aWQgPSAxCisgICAgICAgICAg ICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF9yb3dpZCA9IDAKKworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXR1cywg cmVzLCBxdWVyeV9yZXMsIF9yb3dpZCxcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNf Y29tbWl0X3JlcXVpcmVkCisKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAg ICAgICAgICAgICAgIyBGZXRjaCBvaWRzL3ByaW1hcnkga2V5cworICAgICAgICAgICAgICAgICAg ICAgICAgaWYgJ3NlbGVjdF9zcWwnIGluIGl0ZW0gYW5kIGl0ZW1bJ3NlbGVjdF9zcWwnXToKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IGNvbm4uZXhlY3V0ZV9kaWN0 KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtWydzcWwnXSwgaXRlbVsnZGF0 YSddKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdGF0dXMsIHJlcyA9IGNvbm4uZXhlY3V0ZV92b2lkKAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpdGVtWydzcWwnXSwgaXRlbVsnZGF0YSddKQorICAgICAgICAgICAg ICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIF86CisgICAgICAgICAgICAgICAgICAgICAgICBm YWlsdXJlX2hhbmRsZShyZXMpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQorCisgICAg ICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gZmFpbHVyZV9oYW5kbGUocmVzKQorCisgICAgICAgICAgICAgICAgICAgICMgU2VsZWN0 IGFkZGVkIHJvdyBmcm9tIHRoZSB0YWJsZQorICAgICAgICAgICAgICAgICAgICBpZiAnc2VsZWN0 X3NxbCcgaW4gaXRlbToKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cywgc2VsX3JlcyA9 IGNvbm4uZXhlY3V0ZV9kaWN0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1bJ3Nl bGVjdF9zcWwnXSwgcmVzWydyb3dzJ11bMF0pCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm IG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNfc2F2ZXBvaW50 OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLmV4ZWN1dGVfdm9pZCgnUk9M TEJBQ0sgVE8gU0FWRVBPSU5UJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnIHNhdmVfZGF0YTsnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtc2cgPSAnUXVlcnkgUk9MTEJBQ0ssIHRoZSBjdXJyZW50JyBcCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICcgdHJhbnNhY3Rpb24gaXMgc3RpbGwgb25nb2luZy4n CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29ubi5leGVjdXRlX3ZvaWQoJ1JPTExCQUNLOycpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG1zZyA9ICdUcmFuc2FjdGlvbiBST0xMQkFDSycKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjIElmIHdlIHJvbGwgYmFja2VkIGV2ZXJ5IHRoaW5nIHRoZW4g dXBkYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgbWVzc2FnZSBmb3IgZWFj aCBzcWwgcXVlcnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHZhbCBpbiBxdWVy eV9yZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHF1ZXJ5X3Jlc1t2YWxd WydzdGF0dXMnXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5X3Jl c1t2YWxdWydyZXN1bHQnXSA9IG1zZworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJ ZiBsaXN0IGlzIGVtcHR5IHNldCByb3dpZCB0byAxCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBsaXN0X29mX3Jvd2lk OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3Jvd2lkID0gbGlzdF9vZl9y b3dpZFtjb3VudF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9yb3dpZCA9IDEKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBfcm93aWQgPSAwCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g c3RhdHVzLCBzZWxfcmVzLCBxdWVyeV9yZXMsIF9yb3dpZCxcCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlzX2NvbW1pdF9yZXF1aXJlZAorCisgICAgICAgICAgICAgICAgICAgICAg ICBpZiAncm93cycgaW4gc2VsX3JlcyBhbmQgbGVuKHNlbF9yZXNbJ3Jvd3MnXSkgPiAwOgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJvd19hZGRlZCA9IHsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaXRlbVsnY2xpZW50X3JvdyddOiBzZWxfcmVzWydyb3dzJ11bMF19CisK KyAgICAgICAgICAgICAgICAgICAgcm93c19hZmZlY3RlZCA9IGNvbm4ucm93c19hZmZlY3RlZCgp CisgICAgICAgICAgICAgICAgICAgICMgc3RvcmUgdGhlIHJlc3VsdCBvZiBlYWNoIHF1ZXJ5IGlu IGRpY3Rpb25hcnkKKyAgICAgICAgICAgICAgICAgICAgcXVlcnlfcmVzW2NvdW50XSA9IHsKKyAg ICAgICAgICAgICAgICAgICAgICAgICdzdGF0dXMnOiBzdGF0dXMsCisgICAgICAgICAgICAgICAg ICAgICAgICAncmVzdWx0JzogTm9uZSBpZiByb3dfYWRkZWQgZWxzZSByZXMsCisgICAgICAgICAg ICAgICAgICAgICAgICAnc3FsJzogaXRlbVsnc3FsJ10sICdyb3dzX2FmZmVjdGVkJzogcm93c19h ZmZlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdyb3dfYWRkZWQnOiByb3dfYWRkZWQK KyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IDEK KworICAgICAgICAjIENvbW1pdCB0aGUgdHJhbnNhY3Rpb24gaWYgbm8gZXJyb3IgaXMgZm91bmQg JiBhdXRvY29tbWl0IGlzIGFjdGl2YXRlZAorICAgICAgICBpZiBhdXRvX2NvbW1pdDoKKyAgICAg ICAgICAgIGNvbm4uZXhlY3V0ZV92b2lkKCdDT01NSVQ7JykKKyAgICAgICAgZWxzZToKKyAgICAg ICAgICAgIGlzX2NvbW1pdF9yZXF1aXJlZCA9IFRydWUKKworICAgIHJldHVybiBzdGF0dXMsIHJl cywgcXVlcnlfcmVzLCBfcm93aWQsIGlzX2NvbW1pdF9yZXF1aXJlZApkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3V0aWxzL3N0YXJ0X3J1bm5pbmdfcXVlcnkucHkgYi93 ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdXRpbHMvc3RhcnRfcnVubmluZ19xdWVyeS5weQpp bmRleCBhNTM5OTc3NC4uZWNlMTFmOWMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Nx bGVkaXRvci91dGlscy9zdGFydF9ydW5uaW5nX3F1ZXJ5LnB5CisrKyBiL3dlYi9wZ2FkbWluL3Rv b2xzL3NxbGVkaXRvci91dGlscy9zdGFydF9ydW5uaW5nX3F1ZXJ5LnB5CkBAIC00NSw2ICs0NSw5 IEBAIGNsYXNzIFN0YXJ0UnVubmluZ1F1ZXJ5OgogICAgICAgICBpZiB0eXBlKHNlc3Npb25fb2Jq KSBpcyBSZXNwb25zZToKICAgICAgICAgICAgIHJldHVybiBzZXNzaW9uX29iagogCisgICAgICAg ICMgUmVtb3ZlIGFueSBleGlzdGluZyBwcmltYXJ5IGtleXMgaW4gc2Vzc2lvbl9vYmoKKyAgICAg ICAgc2Vzc2lvbl9vYmoucG9wKCdwcmltYXJ5X2tleXMnLCBOb25lKQorCiAgICAgICAgIHRyYW5z YWN0aW9uX29iamVjdCA9IHBpY2tsZS5sb2FkcyhzZXNzaW9uX29ialsnY29tbWFuZF9vYmonXSkK ICAgICAgICAgY2FuX2VkaXQgPSBGYWxzZQogICAgICAgICBjYW5fZmlsdGVyID0gRmFsc2UKZGlm ZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3FsZWRpdG9yL2NhbGxfcmVuZGVy X2FmdGVyX3BvbGxfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3FsZWRpdG9y L2NhbGxfcmVuZGVyX2FmdGVyX3BvbGxfc3BlYy5qcwppbmRleCBkNjhmNWVlMS4uNWRhZDg0NzAg MTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3FsZWRpdG9yL2NhbGxfcmVu ZGVyX2FmdGVyX3BvbGxfc3BlYy5qcworKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3Nx bGVkaXRvci9jYWxsX3JlbmRlcl9hZnRlcl9wb2xsX3NwZWMuanMKQEAgLTM3LDcgKzM3LDcgQEAg ZGVzY3JpYmUoJyNjYWxsUmVuZGVyQWZ0ZXJQb2xsJywgKCkgPT4gewogICAgICAgc3FsRWRpdG9y U3B5LmlzX3F1ZXJ5X3Rvb2wgPSBmYWxzZTsKICAgICB9KTsKIAotICAgIGRlc2NyaWJlKCdxdWVy eSB3YXMgc3VjY2Vzc2Z1bCBidXQgaGFkIG5vIHJlc3VsdCB0byBkaXNwbGF5JywgKCkgPT4gewor ICAgIGRlc2NyaWJlKCdxdWVyeSB3YXMgc3VjY2Vzc2Z1bCBhbmQgaGF2ZSByZXN1bHRzJywgKCkg PT4gewogICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CiAgICAgICAgIHF1ZXJ5UmVzdWx0ID0gewog ICAgICAgICAgIHJvd3NfYWZmZWN0ZWQ6IDEwLApAQCAtNjUsNyArNjUsNyBAQCBkZXNjcmliZSgn I2NhbGxSZW5kZXJBZnRlclBvbGwnLCAoKSA9PiB7CiAgICAgICB9KTsKICAgICB9KTsKIAotICAg IGRlc2NyaWJlKCdxdWVyeSB3YXMgc3VjY2Vzc2Z1bCBhbmQgaGF2ZSByZXN1bHRzJywgKCkgPT4g eworICAgIGRlc2NyaWJlKCdxdWVyeSB3YXMgc3VjY2Vzc2Z1bCBidXQgaGFkIG5vIHJlc3VsdCB0 byBkaXNwbGF5JywgKCkgPT4gewogICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CiAgICAgICAgIHF1 ZXJ5UmVzdWx0ID0gewogICAgICAgICAgIHJvd3NfYWZmZWN0ZWQ6IDEwLApAQCAtODEsNyArODEs NyBAQCBkZXNjcmliZSgnI2NhbGxSZW5kZXJBZnRlclBvbGwnLCAoKSA9PiB7CiAgICAgICAgIGV4 cGVjdChzcWxFZGl0b3JTcHkudXBkYXRlX21zZ19oaXN0b3J5KS50b0hhdmVCZWVuQ2FsbGVkV2l0 aCgKICAgICAgICAgICB0cnVlLAogICAgICAgICAgICdTb21lIHJlc3VsdFxuXG5RdWVyeSByZXR1 cm5lZCBzdWNjZXNzZnVsbHkgaW4gMCBtc2VjLicsCi0gICAgICAgICAgZmFsc2UKKyAgICAgICAg ICB0cnVlCiAgICAgICAgICk7CiAgICAgICB9KTsKIApAQCAtMTE2LDcgKzExNiw3IEBAIGRlc2Ny aWJlKCcjY2FsbFJlbmRlckFmdGVyUG9sbCcsICgpID0+IHsKICAgICAgIHNxbEVkaXRvclNweS5p c19xdWVyeV90b29sID0gdHJ1ZTsKICAgICB9KTsKIAotICAgIGRlc2NyaWJlKCdxdWVyeSB3YXMg c3VjY2Vzc2Z1bCBidXQgaGFkIG5vIHJlc3VsdCB0byBkaXNwbGF5JywgKCkgPT4geworICAgIGRl c2NyaWJlKCdxdWVyeSB3YXMgc3VjY2Vzc2Z1bCBhbmQgaGF2ZSByZXN1bHRzJywgKCkgPT4gewog ICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CiAgICAgICAgIHF1ZXJ5UmVzdWx0ID0gewogICAgICAg ICAgIHJvd3NfYWZmZWN0ZWQ6IDEwLApAQCAtMTUwLDcgKzE1MCw3IEBAIGRlc2NyaWJlKCcjY2Fs bFJlbmRlckFmdGVyUG9sbCcsICgpID0+IHsKICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgZGVz Y3JpYmUoJ3F1ZXJ5IHdhcyBzdWNjZXNzZnVsIGFuZCBoYXZlIHJlc3VsdHMnLCAoKSA9PiB7Cisg ICAgZGVzY3JpYmUoJ3F1ZXJ5IHdhcyBzdWNjZXNzZnVsIGJ1dCBoYWQgbm8gcmVzdWx0IHRvIGRp c3BsYXknLCAoKSA9PiB7CiAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKICAgICAgICAgcXVlcnlS ZXN1bHQgPSB7CiAgICAgICAgICAgcm93c19hZmZlY3RlZDogMTAsCkBAIC0xNjYsNyArMTY2LDcg QEAgZGVzY3JpYmUoJyNjYWxsUmVuZGVyQWZ0ZXJQb2xsJywgKCkgPT4gewogICAgICAgICBleHBl Y3Qoc3FsRWRpdG9yU3B5LnVwZGF0ZV9tc2dfaGlzdG9yeSkudG9IYXZlQmVlbkNhbGxlZFdpdGgo CiAgICAgICAgICAgdHJ1ZSwKICAgICAgICAgICAnU29tZSByZXN1bHRcblxuUXVlcnkgcmV0dXJu ZWQgc3VjY2Vzc2Z1bGx5IGluIDAgbXNlYy4nLAotICAgICAgICAgIGZhbHNlCisgICAgICAgICAg dHJ1ZQogICAgICAgICApOwogICAgICAgfSk7CiAK --000000000000f25ad0058c148269 Content-Type: text/x-log; charset="US-ASCII"; name="regression.log" Content-Disposition: attachment; filename="regression.log" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jxalyi602 MjAxOS0wNi0yNCAxODoxMTo0NSw3OTk6IEVSUk9SCVNUREVSUjoJCjIwMTktMDYtMjQgMTg6MTE6 NDUsNzk5OiBFUlJPUglTVERFUlI6CT09PT09PT09PT09PT1SdW5uaW5nIHRoZSB0ZXN0IGNhc2Vz IGZvciAnUG9zdGdyZVNRTCAxMSc9PT09PT09PT09PT09CjIwMTktMDYtMjQgMTg6MTE6NDgsOTAy OiBFUlJPUglTVERFUlI6CXJ1blRlc3QgKHBnYWRtaW4uZmVhdHVyZV90ZXN0cy5icm93c2VyX3Rv b2xfYmFyX3Rlc3QuQnJvd3NlclRvb2xCYXJGZWF0dXJlVGVzdCkKMjAxOS0wNi0yNCAxODoxMTo0 OCw5MDI6IEVSUk9SCVNUREVSUjoJQnJvd3NlciB0b29sIGJhciBmZWF0dXJlIHRlc3QKMjAxOS0w Ni0yNCAxODoxMTo0OCw5MDI6IEVSUk9SCVNUREVSUjoJIC4uLgoyMDE5LTA2LTI0IDE4OjExOjUz LDYzNzogRVJST1IJU1RERVJSOgkKMjAxOS0wNi0yNCAxODoxMTo1Myw2Mzg6IEVSUk9SCVNUREVS UjoJUXVlcnkgVG9vbCBUb29sQmFyIEJ1dHRvbgoyMDE5LTA2LTI0IDE4OjExOjU4LDE5NzogRVJS T1IJU1RERVJSOglPSy4KMjAxOS0wNi0yNCAxODoxMTo1OCwxOTc6IEVSUk9SCVNUREVSUjoJCjIw MTktMDYtMjQgMTg6MTE6NTgsMTk3OiBFUlJPUglTVERFUlI6CVZpZXcgRGF0YSBUb29sQmFyIEJ1 dHRvbgoyMDE5LTA2LTI0IDE4OjEyOjAxLDE5NzogRVJST1IJU1RERVJSOglPSy4KMjAxOS0wNi0y NCAxODoxMjowMSwxOTc6IEVSUk9SCVNUREVSUjoJCjIwMTktMDYtMjQgMTg6MTI6MDEsMTk3OiBF UlJPUglTVERFUlI6CUZpbHRlcmVkIFJvd3MgVG9vbEJhciBCdXR0b24KMjAxOS0wNi0yNCAxODox MjowMywyMTg6IEVSUk9SCVNUREVSUjoJT0suCjIwMTktMDYtMjQgMTg6MTI6MDQsMzUwOiBFUlJP UglTVERFUlI6CW9rCjIwMTktMDYtMjQgMTg6MTI6MDQsMzUxOiBFUlJPUglTVERFUlI6CXJ1blRl c3QgKHBnYWRtaW4uZmVhdHVyZV90ZXN0cy5jb3B5X3NlbGVjdGVkX3F1ZXJ5X3Jlc3VsdHNfZmVh dHVyZV90ZXN0LkNvcHlTZWxlY3RlZFF1ZXJ5UmVzdWx0c0ZlYXR1cmVUZXN0KQoyMDE5LTA2LTI0 IDE4OjEyOjA0LDM1MTogRVJST1IJU1RERVJSOglDb3B5IHJvd3MsIGNvbHVtbiB1c2luZyBidXR0 b24gYW5kIGtleWJvYXJkIHNob3J0Y3V0CjIwMTktMDYtMjQgMTg6MTI6MDQsMzUxOiBFUlJPUglT VERFUlI6CSAuLi4KMjAxOS0wNi0yNCAxODoxMjoyMCwxMzE6IEVSUk9SCVNUREVSUjoJb2sKMjAx OS0wNi0yNCAxODoxMjoyMCwxMzE6IEVSUk9SCVNUREVSUjoJcnVuVGVzdCAocGdhZG1pbi5mZWF0 dXJlX3Rlc3RzLmZpbGVfbWFuYWdlcl90ZXN0LkNoZWNrRmlsZU1hbmFnZXJGZWF0dXJlVGVzdCkK MjAxOS0wNi0yNCAxODoxMjoyMCwxMzE6IEVSUk9SCVNUREVSUjoJRmlsZSBtYW5hZ2VyIGZlYXR1 cmUgdGVzdAoyMDE5LTA2LTI0IDE4OjEyOjIwLDEzMTogRVJST1IJU1RERVJSOgkgLi4uCjIwMTkt MDYtMjQgMTg6MTI6MjQsNDgzOiBFUlJPUglTVERFUlI6CVRlc3RzIHRvIGNoZWNrIGlmIEZpbGUg bWFuYWdlciBpcyB2dWxuZXJhYmxlIHRvIFhTUy4uLgoyMDE5LTA2LTI0IDE4OjEyOjM0LDQwMDog RVJST1IJU1RERVJSOglFUlJPUgoyMDE5LTA2LTI0IDE4OjEyOjM0LDQwMDogRVJST1IJU1RERVJS OglydW5UZXN0IChwZ2FkbWluLmZlYXR1cmVfdGVzdHMua2V5Ym9hcmRfc2hvcnRjdXRfdGVzdC5L ZXlib2FyZFNob3J0Y3V0RmVhdHVyZVRlc3QpCjIwMTktMDYtMjQgMTg6MTI6MzQsNDAwOiBFUlJP UglTVERFUlI6CVRlc3QgZm9yIGtleWJvYXJkIHNob3J0Y3V0CjIwMTktMDYtMjQgMTg6MTI6MzQs NDAwOiBFUlJPUglTVERFUlI6CSAuLi4KMjAxOS0wNi0yNCAxODoxMjo0MCwxNjU6IEVSUk9SCVNU REVSUjoJRXhlY3V0aW5nIHNob3J0Y3V0OiBGaWxlIG1haW4gbWVudS4uLgoyMDE5LTA2LTI0IDE4 OjEyOjQwLDIyNDogRVJST1IJU1RERVJSOglPSwoyMDE5LTA2LTI0IDE4OjEyOjQwLDI3NjogRVJS T1IJU1RERVJSOglFeGVjdXRpbmcgc2hvcnRjdXQ6IE9iamVjdCBtYWluIG1lbnUuLi4KMjAxOS0w Ni0yNCAxODoxMjo0MCwzNDk6IEVSUk9SCVNUREVSUjoJT0sKMjAxOS0wNi0yNCAxODoxMjo0MCwz NDk6IEVSUk9SCVNUREVSUjoJb2sKMjAxOS0wNi0yNCAxODoxMjo0MCwzNDk6IEVSUk9SCVNUREVS UjoJcnVuVGVzdCAocGdhZG1pbi5mZWF0dXJlX3Rlc3RzLnBnX2RhdGF0eXBlX3ZhbGlkYXRpb25f dGVzdC5QR0RhdGF5cGVGZWF0dXJlVGVzdCkKMjAxOS0wNi0yNCAxODoxMjo0MCwzNTA6IEVSUk9S CVNUREVSUjoJVGVzdCBjaGVja3MgZm9yIFBHIGRhdGEtdHlwZXMgb3V0cHV0CjIwMTktMDYtMjQg MTg6MTI6NDAsMzUwOiBFUlJPUglTVERFUlI6CSAuLi4KMjAxOS0wNi0yNCAxODoxMzowNiw0OTI6 IEVSUk9SCVNUREVSUjoJb2sKMjAxOS0wNi0yNCAxODoxMzowNiw0OTI6IEVSUk9SCVNUREVSUjoJ cnVuVGVzdCAocGdhZG1pbi5mZWF0dXJlX3Rlc3RzLnBnX3V0aWxpdGllc19iYWNrdXBfcmVzdG9y ZV90ZXN0LlBHVXRpbGl0aWVzQmFja3VwRmVhdHVyZVRlc3QpCjIwMTktMDYtMjQgMTg6MTM6MDYs NDkyOiBFUlJPUglTVERFUlI6CVRlc3QgZm9yIFBHIHV0aWxpdGllcyAtIEJhY2t1cCBhbmQgUmVz dG9yZQoyMDE5LTA2LTI0IDE4OjEzOjA2LDQ5MjogRVJST1IJU1RERVJSOgkgLi4uCjIwMTktMDYt MjQgMTg6MTM6MjQsNTIzOiBFUlJPUglTVERFUlI6CW9rCjIwMTktMDYtMjQgMTg6MTM6MjQsNTIz OiBFUlJPUglTVERFUlI6CXJ1blRlc3QgKHBnYWRtaW4uZmVhdHVyZV90ZXN0cy5wZ191dGlsaXRp ZXNfYmFja3VwX3Jlc3RvcmVfdGVzdC5QR1V0aWxpdGllc0JhY2t1cEZlYXR1cmVUZXN0KQoyMDE5 LTA2LTI0IDE4OjEzOjI0LDUyNDogRVJST1IJU1RERVJSOglUZXN0IGZvciBYU1MgaW4gQmFja3Vw IGFuZCBSZXN0b3JlCjIwMTktMDYtMjQgMTg6MTM6MjQsNTI0OiBFUlJPUglTVERFUlI6CSAuLi4K MjAxOS0wNi0yNCAxODoxMzo0MiwxMjU6IEVSUk9SCVNUREVSUjoJb2sKMjAxOS0wNi0yNCAxODox Mzo0MiwxMjU6IEVSUk9SCVNUREVSUjoJcnVuVGVzdCAocGdhZG1pbi5mZWF0dXJlX3Rlc3RzLnBn X3V0aWxpdGllc19tYWludGVuYW5jZV90ZXN0LlBHVXRpbGl0aWVzTWFpbnRlbmFuY2VGZWF0dXJl VGVzdCkKMjAxOS0wNi0yNCAxODoxMzo0MiwxMjY6IEVSUk9SCVNUREVSUjoJVGVzdCBmb3IgUEcg bWFpbnRlbmFuY2U6IGRhdGFiYXNlCjIwMTktMDYtMjQgMTg6MTM6NDIsMTI2OiBFUlJPUglTVERF UlI6CSAuLi4KMjAxOS0wNi0yNCAxODoxMzo1Niw1MDk6IEVSUk9SCVNUREVSUjoJb2sKMjAxOS0w Ni0yNCAxODoxMzo1Niw1MTA6IEVSUk9SCVNUREVSUjoJcnVuVGVzdCAocGdhZG1pbi5mZWF0dXJl X3Rlc3RzLnBnX3V0aWxpdGllc19tYWludGVuYW5jZV90ZXN0LlBHVXRpbGl0aWVzTWFpbnRlbmFu Y2VGZWF0dXJlVGVzdCkKMjAxOS0wNi0yNCAxODoxMzo1Niw1MTA6IEVSUk9SCVNUREVSUjoJVGVz dCBmb3IgUEcgbWFpbnRlbmFuY2U6IHRhYmxlCjIwMTktMDYtMjQgMTg6MTM6NTYsNTEwOiBFUlJP UglTVERFUlI6CSAuLi4KMjAxOS0wNi0yNCAxODoxNDoxMiw4OTU6IEVSUk9SCVNUREVSUjoJb2sK MjAxOS0wNi0yNCAxODoxNDoxMiw4OTY6IEVSUk9SCVNUREVSUjoJcnVuVGVzdCAocGdhZG1pbi5m ZWF0dXJlX3Rlc3RzLnBnX3V0aWxpdGllc19tYWludGVuYW5jZV90ZXN0LlBHVXRpbGl0aWVzTWFp bnRlbmFuY2VGZWF0dXJlVGVzdCkKMjAxOS0wNi0yNCAxODoxNDoxMiw4OTY6IEVSUk9SCVNUREVS UjoJVGVzdCBmb3IgWFNTIGluIG1haW50ZW5hbmNlIGRpYWxvZwoyMDE5LTA2LTI0IDE4OjE0OjEy LDg5NjogRVJST1IJU1RERVJSOgkgLi4uCjIwMTktMDYtMjQgMTg6MTQ6MjksMTA1OiBFUlJPUglT VERFUlI6CW9rCjIwMTktMDYtMjQgMTg6MTQ6MjksMTA2OiBFUlJPUglTVERFUlI6CXJ1blRlc3Qg KHBnYWRtaW4uZmVhdHVyZV90ZXN0cy5xdWVyeV90b29sX2F1dG9fY29tcGxldGVfdGVzdHMuUXVl cnlUb29sQXV0b0NvbXBsZXRlRmVhdHVyZVRlc3QpCjIwMTktMDYtMjQgMTg6MTQ6MjksMTA2OiBF UlJPUglTVERFUlI6CVF1ZXJ5IHRvb2wgYXV0byBjb21wbGV0ZSBmZWF0dXJlIHRlc3QKMjAxOS0w Ni0yNCAxODoxNDoyOSwxMDY6IEVSUk9SCVNUREVSUjoJIC4uLgoyMDE5LTA2LTI0IDE4OjE0OjM2 LDUxODogRVJST1IJU1RERVJSOgkKMjAxOS0wNi0yNCAxODoxNDozNiw1MTk6IEVSUk9SCVNUREVS UjoJQXV0byBjb21wbGV0ZSBBTFRFUiBrZXl3b3JkLi4uCjIwMTktMDYtMjQgMTg6MTQ6MzgsNzk4 OiBFUlJPUglTVERFUlI6CU9LLgoyMDE5LTA2LTI0IDE4OjE0OjM5LDk3MDogRVJST1IJU1RERVJS OglBdXRvIGNvbXBsZXRlIEJFR0lOIGtleXdvcmQuLi4KMjAxOS0wNi0yNCAxODoxNDo0MSwyODg6 IEVSUk9SCVNUREVSUjoJT0suCjIwMTktMDYtMjQgMTg6MTQ6NDIsMzEyOiBFUlJPUglTVERFUlI6 CUF1dG8gY29tcGxldGUgQ0FTQ0FERUQga2V5d29yZC4uLgoyMDE5LTA2LTI0IDE4OjE0OjQzLDYy MzogRVJST1IJU1RERVJSOglPSy4KMjAxOS0wNi0yNCAxODoxNDo0NCw2NTQ6IEVSUk9SCVNUREVS UjoJQXV0byBjb21wbGV0ZSBTRUxFQ1Qga2V5d29yZC4uLgoyMDE5LTA2LTI0IDE4OjE0OjQ1LDk3 NjogRVJST1IJU1RERVJSOglPSy4KMjAxOS0wNi0yNCAxODoxNDo0NywwMTE6IEVSUk9SCVNUREVS UjoJQXV0byBjb21wbGV0ZSBwZ19iYWNrZW5kX3BpZCgpIGZ1bmN0aW9uIC4uLgoyMDE5LTA2LTI0 IDE4OjE0OjQ4LDcyMDogRVJST1IJU1RERVJSOglPSy4KMjAxOS0wNi0yNCAxODoxNDo0OSw3NDA6 IEVSUk9SCVNUREVSUjoJQXV0byBjb21wbGV0ZSBjdXJyZW50X3F1ZXJ5KCkgZnVuY3Rpb24gLi4u CjIwMTktMDYtMjQgMTg6MTQ6NTEsMzQ2OiBFUlJPUglTVERFUlI6CU9LLgoyMDE5LTA2LTI0IDE4 OjE0OjUyLDM1MjogRVJST1IJU1RERVJSOglBdXRvIGNvbXBsZXRlIGZ1bmN0aW9uIHdpdGggYXJn dW1lbnQgLi4uCjIwMTktMDYtMjQgMTg6MTQ6NTMsODczOiBFUlJPUglTVERFUlI6CU9LLgoyMDE5 LTA2LTI0IDE4OjE0OjU0LDkwNzogRVJST1IJU1RERVJSOglBdXRvIGNvbXBsZXRlIHNjaGVtYSBv dGhlciB0aGFuIGRlZmF1bHQgc3RhcnQgd2l0aCB0ZXN0XyAuLi4KMjAxOS0wNi0yNCAxODoxNDo1 Niw0NTE6IEVSUk9SCVNUREVSUjoJT0suCjIwMTktMDYtMjQgMTg6MTQ6NTcsNDY2OiBFUlJPUglT VERFUlI6CUF1dG8gY29tcGxldGUgc2NoZW1hIG90aGVyIHRoYW4gZGVmYXVsdCBzdGFydHMgd2l0 aCBjb21wXyAuLi4KMjAxOS0wNi0yNCAxODoxNDo1OSwwNzI6IEVSUk9SCVNUREVSUjoJT0suCjIw MTktMDYtMjQgMTg6MTU6MDAsMTAyOiBFUlJPUglTVERFUlI6CUF1dG8gY29tcGxldGUgZmlyc3Qg dGFibGUgaW4gcHVibGljIHNjaGVtYSAuLi4KMjAxOS0wNi0yNCAxODoxNTowMSw0MjI6IEVSUk9S CVNUREVSUjoJT0suCjIwMTktMDYtMjQgMTg6MTU6MDIsNDI5OiBFUlJPUglTVERFUlI6CUF1dG8g Y29tcGxldGUgc2Vjb25kIHRhYmxlIGluIHB1YmxpYyBzY2hlbWEgLi4uCjIwMTktMDYtMjQgMTg6 MTU6MDMsNzYxOiBFUlJPUglTVERFUlI6CU9LLgoyMDE5LTA2LTI0IDE4OjE1OjA0LDc4NjogRVJS T1IJU1RERVJSOglBdXRvIGNvbXBsZXRlIEpPSU4gc2Vjb25kIHRhYmxlIHdpdGggYWZ0ZXIgc2No ZW1hIG5hbWUgLi4uCjIwMTktMDYtMjQgMTg6MTU6MDYsMTExOiBFUlJPUglTVERFUlI6CU9LLgoy MDE5LTA2LTI0IDE4OjE1OjA3LDEyNzogRVJST1IJU1RERVJSOglBdXRvIGNvbXBsZXRlIEpPSU4g T04gc29tZSBjb2x1bW5zIC4uLgoyMDE5LTA2LTI0IDE4OjE1OjA4LDQ0NzogRVJST1IJU1RERVJS OglPSy4KMjAxOS0wNi0yNCAxODoxNTowOSw0NTc6IEVSUk9SCVNUREVSUjoJQXV0byBjb21wbGV0 ZSBKT0lOIE9OIHNvbWUgY29sdW1ucyB1c2luZyB0YWJlbCBhbGlhcyAuLi4KMjAxOS0wNi0yNCAx ODoxNToxMCw4MjE6IEVSUk9SCVNUREVSUjoJT0suCjIwMTktMDYtMjQgMTg6MTU6MTIsOTcwOiBF UlJPUglTVERFUlI6CW9rCjIwMTktMDYtMjQgMTg6MTU6MTIsOTcxOiBFUlJPUglTVERFUlI6CXJ1 blRlc3QgKHBnYWRtaW4uZmVhdHVyZV90ZXN0cy5xdWVyeV90b29sX2pvdXJuZXlfdGVzdC5RdWVy eVRvb2xKb3VybmV5VGVzdCkKMjAxOS0wNi0yNCAxODoxNToxMiw5NzE6IEVSUk9SCVNUREVSUjoJ VGVzdHMgdGhlIHBhdGggdGhyb3VnaCB0aGUgcXVlcnkgdG9vbAoyMDE5LTA2LTI0IDE4OjE1OjEy LDk3MTogRVJST1IJU1RERVJSOgkgLi4uCjIwMTktMDYtMjQgMTg6MTU6NDIsOTY5OiBFUlJPUglT VERFUlI6CW9rCjIwMTktMDYtMjQgMTg6MTU6NDIsOTY5OiBFUlJPUglTVERFUlI6CXJ1blRlc3Qg KHBnYWRtaW4uZmVhdHVyZV90ZXN0cy5xdWVyeV90b29sX3Rlc3RzLlF1ZXJ5VG9vbEZlYXR1cmVU ZXN0KQoyMDE5LTA2LTI0IDE4OjE1OjQyLDk2OTogRVJST1IJU1RERVJSOglRdWVyeSB0b29sIGZl YXR1cmUgdGVzdAoyMDE5LTA2LTI0IDE4OjE1OjQyLDk2OTogRVJST1IJU1RERVJSOgkgLi4uCjIw MTktMDYtMjQgMTg6MTU6NTMsNDY5OiBFUlJPUglTVERFUlI6CQoyMDE5LTA2LTI0IDE4OjE1OjUz LDQ2OTogRVJST1IJU1RERVJSOglPbiBkZW1hbmQgcXVlcnkgcmVzdWx0Li4uCjIwMTktMDYtMjQg MTg6MTU6NTMsNDY5OiBFUlJPUglTVERFUlI6CQoyMDE5LTA2LTI0IDE4OjE1OjUzLDQ2OTogRVJS T1IJU1RERVJSOglPbiBkZW1hbmQgcmVzdWx0IHNldCBvbiBzY3JvbGxpbmcuLi4KMjAxOS0wNi0y NCAxODoxNTo1NSw2Njg6IEVSUk9SCVNUREVSUjoJT0suCjIwMTktMDYtMjQgMTg6MTU6NTUsNjY4 OiBFUlJPUglTVERFUlI6CU9uIGRlbWFuZCByZXN1bHQgc2V0IG9uIGdyaWQgc2VsZWN0IGFsbC4u LgoyMDE5LTA2LTI0IDE4OjE1OjU2LDc2NDogRVJST1IJU1RERVJSOglPSy4KMjAxOS0wNi0yNCAx ODoxNTo1Niw3NjU6IEVSUk9SCVNUREVSUjoJT24gZGVtYW5kIHJlc3VsdCBzZXQgb24gY29sdW1u IHNlbGVjdCBhbGwuLi4KMjAxOS0wNi0yNCAxODoxNTo1Nyw1MjI6IEVSUk9SCVNUREVSUjoJT0su CjIwMTktMDYtMjQgMTg6MTU6NTgsNjY3OiBFUlJPUglTVERFUlI6CUV4cGxhaW4gcXVlcnkgd2l0 aCB2ZXJib3NlIGFuZCBjb3N0Li4uCjIwMTktMDYtMjQgMTg6MTY6MDEsNDUwOiBFUlJPUglTVERF UlI6CU9LLgoyMDE5LTA2LTI0IDE4OjE2OjAyLDYxNDogRVJST1IJU1RERVJSOglFeHBsYWluIGFu YWx5emUgcXVlcnkgd2l0aCBidWZmZXJzIGFuZCB0aW1pbmcuLi4KMjAxOS0wNi0yNCAxODoxNjow NSwyOTM6IEVSUk9SCVNUREVSUjoJT0suCjIwMTktMDYtMjQgMTg6MTY6MDYsMzkwOiBFUlJPUglT VERFUlI6CUF1dG8gY29tbWl0IGRpc2FibGVkLi4uCjIwMTktMDYtMjQgMTg6MTY6MTUsOTMyOiBF UlJPUglTVERFUlI6CU9LLgoyMDE5LTA2LTI0IDE4OjE2OjE3LDE1MjogRVJST1IJU1RERVJSOglB dXRvIGNvbW1pdCBlbmFibGVkLi4uCjIwMTktMDYtMjQgMTg6MTY6MjcsNTg3OiBFUlJPUglTVERF UlI6CU9LLgoyMDE5LTA2LTI0IDE4OjE2OjI4LDY1NTogRVJST1IJU1RERVJSOglBdXRvIHJvbGxi YWNrIGVuYWJsZWQuLi4KMjAxOS0wNi0yNCAxODoxNjo0MiwwMjY6IEVSUk9SCVNUREVSUjoJIE9L LgoyMDE5LTA2LTI0IDE4OjE2OjQzLDEwMDogRVJST1IJU1RERVJSOglDYW5jZWwgcXVlcnkuLi4K MjAxOS0wNi0yNCAxODoxNjo0NiwwNDc6IEVSUk9SCVNUREVSUjoJT0suCjIwMTktMDYtMjQgMTg6 MTY6NTEsMDA4OiBFUlJPUglTVERFUlI6CUNhcHR1cmUgTm90aWZ5IFN0YXRlbWVudHMuLi4KMjAx OS0wNi0yNCAxODoxNjo1MSwwMDg6IEVSUk9SCVNUREVSUjoJCjIwMTktMDYtMjQgMTg6MTY6NTEs MDA5OiBFUlJPUglTVERFUlI6CQlMaXN0ZW4gb24gYW4gZXZlbnQuLi4KMjAxOS0wNi0yNCAxODox Njo1MywxNzI6IEVSUk9SCVNUREVSUjoJT0suCjIwMTktMDYtMjQgMTg6MTY6NTQsMzAyOiBFUlJP UglTVERFUlI6CQlOb3RpZnkgZXZlbnQgd2l0aG91dCBkYXRhLi4uCjIwMTktMDYtMjQgMTg6MTY6 NTYsNDI2OiBFUlJPUglTVERFUlI6CU9LLgoyMDE5LTA2LTI0IDE4OjE2OjU3LDY0OTogRVJST1IJ U1RERVJSOgkJTm90aWZ5IGV2ZW50IHdpdGggZGF0YS4uLgoyMDE5LTA2LTI0IDE4OjE2OjU5LDk2 NjogRVJST1IJU1RERVJSOglPSy4KMjAxOS0wNi0yNCAxODoxNzowMiw1MzA6IEVSUk9SCVNUREVS UjoJRXhwbGFpbiBxdWVyeSB3aXRoIEpJVCBzdGF0cy4uLgoyMDE5LTA2LTI0IDE4OjE3OjAyLDU0 NjogRVJST1IJU1RERVJSOglTa2lwcGVkLgoyMDE5LTA2LTI0IDE4OjE3OjAzLDc0NzogRVJST1IJ U1RERVJSOglvawoyMDE5LTA2LTI0IDE4OjE3OjAzLDc1MzogRVJST1IJU1RERVJSOglydW5UZXN0 IChwZ2FkbWluLmZlYXR1cmVfdGVzdHMudGFibGVfZGRsX2ZlYXR1cmVfdGVzdC5UYWJsZURkbEZl YXR1cmVUZXN0KQoyMDE5LTA2LTI0IDE4OjE3OjAzLDc1MzogRVJST1IJU1RERVJSOglUZXN0IHRh YmxlIERETCBnZW5lcmF0aW9uCjIwMTktMDYtMjQgMTg6MTc6MDMsNzUzOiBFUlJPUglTVERFUlI6 CSAuLi4KMjAxOS0wNi0yNCAxODoxNzoxNyw0MjE6IEVSUk9SCVNUREVSUjoJb2sKMjAxOS0wNi0y NCAxODoxNzoxNyw0MjI6IEVSUk9SCVNUREVSUjoJcnVuVGVzdCAocGdhZG1pbi5mZWF0dXJlX3Rl c3RzLnZpZXdfZGF0YV9kbWxfcXVlcmllcy5DaGVja0ZvclZpZXdEYXRhVGVzdCkKMjAxOS0wNi0y NCAxODoxNzoxNyw0MjI6IEVSUk9SCVNUREVSUjoJVmFsaWRhdGUgSW5zZXJ0LCBVcGRhdGUgb3Bl cmF0aW9ucyBpbiBWaWV3L0VkaXQgZGF0YSB3aXRoIGdpdmVuIHRlc3QgZGF0YQoyMDE5LTA2LTI0 IDE4OjE3OjE3LDQyMjogRVJST1IJU1RERVJSOgkgLi4uCjIwMTktMDYtMjQgMTg6MTc6NTAsODkw OiBFUlJPUglTVERFUlI6CUVSUk9SCjIwMTktMDYtMjQgMTg6MTc6NTAsODkxOiBFUlJPUglTVERF UlI6CXJ1blRlc3QgKHBnYWRtaW4uZmVhdHVyZV90ZXN0cy54c3NfY2hlY2tzX3BhbmVsc19hbmRf cXVlcnlfdG9vbF90ZXN0LkNoZWNrRm9yWHNzRmVhdHVyZVRlc3QpCjIwMTktMDYtMjQgMTg6MTc6 NTAsODkxOiBFUlJPUglTVERFUlI6CVRlc3QgWFNTIGNoZWNrIGZvciBwYW5lbHMgYW5kIHF1ZXJ5 IHRvb2wKMjAxOS0wNi0yNCAxODoxNzo1MCw4OTE6IEVSUk9SCVNUREVSUjoJIC4uLgoyMDE5LTA2 LTI0IDE4OjE4OjAxLDUxOTogRVJST1IJU1RERVJSOgkKMjAxOS0wNi0yNCAxODoxODowMSw1MTk6 IEVSUk9SCVNUREVSUjoJCUNoZWNraW5nIHRoZSBCcm93c2VyIHRyZWUgZm9yIHRoZSBYU1MKMjAx OS0wNi0yNCAxODoxODowMSw2MTU6IEVSUk9SCVNUREVSUjoJCjIwMTktMDYtMjQgMTg6MTg6MDEs NjE1OiBFUlJPUglTVERFUlI6CQlDaGVja2luZyB0aGUgUHJvcGVydGllcyB0YWIgZm9yIHRoZSBY U1MKMjAxOS0wNi0yNCAxODoxODowMiwzOTY6IEVSUk9SCVNUREVSUjoJCjIwMTktMDYtMjQgMTg6 MTg6MDIsMzk2OiBFUlJPUglTVERFUlI6CQlDaGVja2luZyB0aGUgU1FMIHRhYiBmb3IgdGhlIFhT UwoyMDE5LTA2LTI0IDE4OjE4OjEwLDYyMTogRVJST1IJU1RERVJSOgkKMjAxOS0wNi0yNCAxODox ODoxMCw2MjE6IEVSUk9SCVNUREVSUjoJCUNoZWNraW5nIHRoZSBEZXBlbmRlbnRzIHRhYiBmb3Ig dGhlIFhTUwoyMDE5LTA2LTI0IDE4OjE4OjExLDM1NzogRVJST1IJU1RERVJSOgkKMjAxOS0wNi0y NCAxODoxODoxMSwzNTc6IEVSUk9SCVNUREVSUjoJCUNoZWNraW5nIHRoZSBTbGlja0dyaWQgY2Vs bCBmb3IgdGhlIFhTUwoyMDE5LTA2LTI0IDE4OjE4OjE0LDAzNTogRVJST1IJU1RERVJSOgkKMjAx OS0wNi0yNCAxODoxODoxNCwwMzU6IEVSUk9SCVNUREVSUjoJCUNoZWNraW5nIHRoZSBxdWVyeSB0 b29sIGhpc3RvcnkgZm9yIHRoZSBYU1MKMjAxOS0wNi0yNCAxODoxODoyMCw3MTQ6IEVSUk9SCVNU REVSUjoJRVJST1IKMjAxOS0wNi0yNCAxODoxODoyMCw3MTQ6IEVSUk9SCVNUREVSUjoJcnVuVGVz dCAocGdhZG1pbi5mZWF0dXJlX3Rlc3RzLnhzc19jaGVja3NfcGdhZG1pbl9kZWJ1Z2dlcl90ZXN0 LkNoZWNrRGVidWdnZXJGb3JYc3NGZWF0dXJlVGVzdCkKMjAxOS0wNi0yNCAxODoxODoyMCw3MTU6 IEVSUk9SCVNUREVSUjoJVGVzdHMgdG8gY2hlY2sgaWYgRGVidWdnZXIgaXMgdnVsbmVyYWJsZSB0 byBYU1MKMjAxOS0wNi0yNCAxODoxODoyMCw3MTU6IEVSUk9SCVNUREVSUjoJIC4uLgoyMDE5LTA2 LTI0IDE4OjE4OjM2LDAxODogRVJST1IJU1RERVJSOglza2lwcGVkICdQbGVhc2UgbWFrZSBzdXJl IHRoYXQgZGVidWdnZXIgcGx1Z2luIGlzIHByb3Blcmx5IGNvbmZpZ3VyZWQnCjIwMTktMDYtMjQg MTg6MTg6MzYsMDE5OiBFUlJPUglTVERFUlI6CXJ1blRlc3QgKHBnYWRtaW4uZmVhdHVyZV90ZXN0 cy54c3NfY2hlY2tzX3JvbGVzX2NvbnRyb2xfdGVzdC5DaGVja1JvbGVNZW1iZXJzaGlwQ29udHJv bEZlYXR1cmVUZXN0KQoyMDE5LTA2LTI0IDE4OjE4OjM2LDAxOTogRVJST1IJU1RERVJSOglUZXN0 cyB0byBjaGVjayBpZiBSb2xlIG1lbWJlcnNoaXAgY29udHJvbCBpcyB2dWxuZXJhYmxlIHRvIFhT UwoyMDE5LTA2LTI0IDE4OjE4OjM2LDAxOTogRVJST1IJU1RERVJSOgkgLi4uCjIwMTktMDYtMjQg MTg6MTg6NDYsNjc5OiBFUlJPUglTVERFUlI6CW9rCjIwMTktMDYtMjQgMTg6MTg6NDYsNjgwOiBF UlJPUglTVERFUlI6CXJ1blRlc3QgKHJlZ3Jlc3Npb24ucmVfc3FsLnRlc3RzLnRlc3RfcmVzcWwu UmV2ZXJzZUVuZ2luZWVyZWRTUUxUZXN0Q2FzZXMpCjIwMTktMDYtMjQgMTg6MTg6NDYsNjgwOiBF UlJPUglTVERFUlI6CVJldmVyc2UgRW5naW5lZXJlZCBTUUwgVGVzdCBDYXNlcwoyMDE5LTA2LTI0 IDE4OjE4OjQ2LDY4MDogRVJST1IJU1RERVJSOgkgLi4uCjIwMTktMDYtMjQgMTg6MTg6NDYsNzc3 OiBJTkZPCWZsYXNrLmFwcDoJQ29ubmVjdGlvbiBSZXF1ZXN0IGZvciBzZXJ2ZXIjMQoyMDE5LTA2 LTI0IDE4OjE4OjQ2LDgzNDogSU5GTwlmbGFzay5hcHA6CUNvbm5lY3Rpb24gRXN0YWJsaXNoZWQg Zm9yIHNlcnZlcjogICAgICAgICAgICAgICAgIDEgLSBQb3N0Z3JlU1FMIDExCjIwMTktMDYtMjQg MTg6MTg6NDYsODQ2OiBTUUwJZmxhc2suYXBwOglFeGVjdXRlIChkaWN0KSBmb3Igc2VydmVyICMx IC0gREI6cG9zdGdyZXMgKFF1ZXJ5LWlkOiA3MjYxNTQyKToKU0VMRUNUIENBU0UgV0hFTiB1c2Vz dXBlcgogICAgICAgVEhFTiBwZ19pc19pbl9yZWNvdmVyeSgpCiAgICAgICBFTFNFIEZBTFNFCiAg ICAgICBFTkQgYXMgaW5yZWNvdmVyeSwKICAgICAgIENBU0UgV0hFTiB1c2VzdXBlciBBTkQgcGdf aXNfaW5fcmVjb3ZlcnkoKQogICAgICAgVEhFTiBwZ19pc193YWxfcmVwbGF5X3BhdXNlZCgpCiAg ICAgICBFTFNFIEZBTFNFCiAgICAgICBFTkQgYXMgaXNyZXBsYXlwYXVzZWQKRlJPTSBwZ191c2Vy IFdIRVJFIHVzZW5hbWU9Y3VycmVudF91c2VyCjIwMTktMDYtMjQgMTg6MTg6NDYsODc1OiBTUUwJ Zmxhc2suYXBwOglFeGVjdXRlIChkaWN0KSBmb3Igc2VydmVyICMxIC0gREI6cG9zdGdyZXMgKFF1 ZXJ5LWlkOiAzMjg0MjU0KToKClNFTEVDVAogICAgZGIub2lkIGFzIGRpZCwgZGIuZGF0bmFtZSwg ZGIuZGF0YWxsb3djb25uLAogICAgcGdfZW5jb2RpbmdfdG9fY2hhcihkYi5lbmNvZGluZykgQVMg c2VydmVyZW5jb2RpbmcsCiAgICBoYXNfZGF0YWJhc2VfcHJpdmlsZWdlKGRiLm9pZCwgJ0NSRUFU RScpIGFzIGNhbmNyZWF0ZSwgZGF0bGFzdHN5c29pZApGUk9NCiAgICBwZ19kYXRhYmFzZSBkYgpX SEVSRSBkYi5vaWQgPSAzMjQ2OQoyMDE5LTA2LTI0IDE4OjE4OjQ2LDg5NDogSU5GTwlmbGFzay5h cHA6CUNvbm5lY3Rpb24gRXN0YWJsaXNoZWQgZm9yIERhdGFiYXNlIElkOiAgICAgICAgICAgICAg ICAgMzI0NjkKMjAxOS0wNi0yNCAxODoxODo0Niw5Mjk6IEVSUk9SCVNUREVSUjoJb2sKMjAxOS0w Ni0yNCAxODoxODo0Niw5Mjk6IEVSUk9SCVNUREVSUjoJPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyMDE5LTA2LTI0 IDE4OjE4OjQ2LDkyOTogRVJST1IJU1RERVJSOglFUlJPUjogcnVuVGVzdCAocGdhZG1pbi5mZWF0 dXJlX3Rlc3RzLmZpbGVfbWFuYWdlcl90ZXN0LkNoZWNrRmlsZU1hbmFnZXJGZWF0dXJlVGVzdCkK MjAxOS0wNi0yNCAxODoxODo0Niw5Mjk6IEVSUk9SCVNUREVSUjoJRmlsZSBtYW5hZ2VyIGZlYXR1 cmUgdGVzdAoyMDE5LTA2LTI0IDE4OjE4OjQ2LDkyOTogRVJST1IJU1RERVJSOgktLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCjIwMTktMDYtMjQgMTg6MTg6NDYsOTI5OiBFUlJPUglTVERFUlI6CVRyYWNlYmFjayAobW9z dCByZWNlbnQgY2FsbCBsYXN0KToKMjAxOS0wNi0yNCAxODoxODo0Niw5Mjk6IEVSUk9SCVNUREVS UjoJICBGaWxlICIvaG9tZS95b3NyeW05My9EZXYvR1NvQy9wZ2FkbWluNC93ZWIvcGdhZG1pbi9m ZWF0dXJlX3Rlc3RzL2ZpbGVfbWFuYWdlcl90ZXN0LnB5IiwgbGluZSA1MywgaW4gcnVuVGVzdAoy MDE5LTA2LTI0IDE4OjE4OjQ2LDkzMDogRVJST1IJU1RERVJSOgkgICAgc2VsZi5fY3JlYXRlX25l d19maWxlKCkKMjAxOS0wNi0yNCAxODoxODo0Niw5MzA6IEVSUk9SCVNUREVSUjoJICBGaWxlICIv aG9tZS95b3NyeW05My9EZXYvR1NvQy9wZ2FkbWluNC93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3Rz L2ZpbGVfbWFuYWdlcl90ZXN0LnB5IiwgbGluZSA2OCwgaW4gX2NyZWF0ZV9uZXdfZmlsZQoyMDE5 LTA2LTI0IDE4OjE4OjQ2LDkzMDogRVJST1IJU1RERVJSOgkgICAgc2VsZi5wYWdlLmZpbmRfYnlf Y3NzX3NlbGVjdG9yKFF1ZXJ5VG9vbExvY2F0b3JzQ3NzLmJ0bl9zYXZlKS5jbGljaygpCjIwMTkt MDYtMjQgMTg6MTg6NDYsOTMwOiBFUlJPUglTVERFUlI6CSAgRmlsZSAiL2hvbWUveW9zcnltOTMv RGV2L0dTb0MvcGdhZG1pbjQvd2ViL3JlZ3Jlc3Npb24vZmVhdHVyZV91dGlscy9wZ2FkbWluX3Bh Z2UucHkiLCBsaW5lIDMyNywgaW4gZmluZF9ieV9jc3Nfc2VsZWN0b3IKMjAxOS0wNi0yNCAxODox ODo0Niw5MzA6IEVSUk9SCVNUREVSUjoJICAgIGxhbWJkYSBkcml2ZXI6IGRyaXZlci5maW5kX2Vs ZW1lbnRfYnlfY3NzX3NlbGVjdG9yKGNzc19zZWxlY3RvcikKMjAxOS0wNi0yNCAxODoxODo0Niw5 MzA6IEVSUk9SCVNUREVSUjoJICBGaWxlICIvaG9tZS95b3NyeW05My9EZXYvR1NvQy9wZ2FkbWlu NC93ZWIvcmVncmVzc2lvbi9mZWF0dXJlX3V0aWxzL3BnYWRtaW5fcGFnZS5weSIsIGxpbmUgNTA3 LCBpbiB3YWl0X2Zvcl9lbGVtZW50CjIwMTktMDYtMjQgMTg6MTg6NDYsOTMwOiBFUlJPUglTVERF UlI6CSAgICBzZWxmLl93YWl0X2ZvcigiZWxlbWVudCB0byBleGlzdCIsIGVsZW1lbnRfaWZfaXRf ZXhpc3RzKQoyMDE5LTA2LTI0IDE4OjE4OjQ2LDkzMDogRVJST1IJU1RERVJSOgkgIEZpbGUgIi9o b21lL3lvc3J5bTkzL0Rldi9HU29DL3BnYWRtaW40L3dlYi9yZWdyZXNzaW9uL2ZlYXR1cmVfdXRp bHMvcGdhZG1pbl9wYWdlLnB5IiwgbGluZSA1ODIsIGluIF93YWl0X2ZvcgoyMDE5LTA2LTI0IDE4 OjE4OjQ2LDkzMDogRVJST1IJU1RERVJSOgkgICAgIlRpbWVkIG91dCB3YWl0aW5nIGZvciAiICsg d2FpdGluZ19mb3JfbWVzc2FnZQoyMDE5LTA2LTI0IDE4OjE4OjQ2LDkzMDogRVJST1IJU1RERVJS OgkgIEZpbGUgIi9ob21lL3lvc3J5bTkzL0Rldi9HU29DL3BnYWRtaW40L3ZlbnYvbGliL3B5dGhv bjMuNi9zaXRlLXBhY2thZ2VzL3NlbGVuaXVtL3dlYmRyaXZlci9zdXBwb3J0L3dhaXQucHkiLCBs aW5lIDgwLCBpbiB1bnRpbAoyMDE5LTA2LTI0IDE4OjE4OjQ2LDkzMDogRVJST1IJU1RERVJSOgkg ICAgcmFpc2UgVGltZW91dEV4Y2VwdGlvbihtZXNzYWdlLCBzY3JlZW4sIHN0YWNrdHJhY2UpCjIw MTktMDYtMjQgMTg6MTg6NDYsOTMwOiBFUlJPUglTVERFUlI6CXNlbGVuaXVtLmNvbW1vbi5leGNl cHRpb25zLlRpbWVvdXRFeGNlcHRpb246IE1lc3NhZ2U6IFRpbWVkIG91dCB3YWl0aW5nIGZvciBl bGVtZW50IHRvIGV4aXN0CjIwMTktMDYtMjQgMTg6MTg6NDYsOTMwOiBFUlJPUglTVERFUlI6CT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KMjAxOS0wNi0yNCAxODoxODo0Niw5MzA6IEVSUk9SCVNUREVSUjoJRVJST1I6 IHJ1blRlc3QgKHBnYWRtaW4uZmVhdHVyZV90ZXN0cy52aWV3X2RhdGFfZG1sX3F1ZXJpZXMuQ2hl Y2tGb3JWaWV3RGF0YVRlc3QpCjIwMTktMDYtMjQgMTg6MTg6NDYsOTMwOiBFUlJPUglTVERFUlI6 CVZhbGlkYXRlIEluc2VydCwgVXBkYXRlIG9wZXJhdGlvbnMgaW4gVmlldy9FZGl0IGRhdGEgd2l0 aCBnaXZlbiB0ZXN0IGRhdGEKMjAxOS0wNi0yNCAxODoxODo0Niw5MzA6IEVSUk9SCVNUREVSUjoJ LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQoyMDE5LTA2LTI0IDE4OjE4OjQ2LDkzMTogRVJST1IJU1RERVJSOglUcmFj ZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CjIwMTktMDYtMjQgMTg6MTg6NDYsOTMxOiBF UlJPUglTVERFUlI6CSAgRmlsZSAiL2hvbWUveW9zcnltOTMvRGV2L0dTb0MvcGdhZG1pbjQvd2Vi L3BnYWRtaW4vZmVhdHVyZV90ZXN0cy92aWV3X2RhdGFfZG1sX3F1ZXJpZXMucHkiLCBsaW5lIDEx NiwgaW4gcnVuVGVzdAoyMDE5LTA2LTI0IDE4OjE4OjQ2LDkzMTogRVJST1IJU1RERVJSOgkgICAg c2VsZi5fYWRkX3JvdygpCjIwMTktMDYtMjQgMTg6MTg6NDYsOTMxOiBFUlJPUglTVERFUlI6CSAg RmlsZSAiL2hvbWUveW9zcnltOTMvRGV2L0dTb0MvcGdhZG1pbjQvd2ViL3BnYWRtaW4vZmVhdHVy ZV90ZXN0cy92aWV3X2RhdGFfZG1sX3F1ZXJpZXMucHkiLCBsaW5lIDI4MiwgaW4gX2FkZF9yb3cK MjAxOS0wNi0yNCAxODoxODo0Niw5MzE6IEVSUk9SCVNUREVSUjoJICAgIHNlbGYucGFnZS5maW5k X2J5X2lkKCJidG4tc2F2ZSIpLmNsaWNrKCkgICMgU2F2ZSBkYXRhCjIwMTktMDYtMjQgMTg6MTg6 NDYsOTMxOiBFUlJPUglTVERFUlI6CSAgRmlsZSAiL2hvbWUveW9zcnltOTMvRGV2L0dTb0MvcGdh ZG1pbjQvd2ViL3JlZ3Jlc3Npb24vZmVhdHVyZV91dGlscy9wZ2FkbWluX3BhZ2UucHkiLCBsaW5l IDMyMiwgaW4gZmluZF9ieV9pZAoyMDE5LTA2LTI0IDE4OjE4OjQ2LDkzMTogRVJST1IJU1RERVJS OgkgICAgbGFtYmRhIGRyaXZlcjogZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZChlbGVtZW50X2lk KQoyMDE5LTA2LTI0IDE4OjE4OjQ2LDkzMTogRVJST1IJU1RERVJSOgkgIEZpbGUgIi9ob21lL3lv c3J5bTkzL0Rldi9HU29DL3BnYWRtaW40L3dlYi9yZWdyZXNzaW9uL2ZlYXR1cmVfdXRpbHMvcGdh ZG1pbl9wYWdlLnB5IiwgbGluZSA1MDcsIGluIHdhaXRfZm9yX2VsZW1lbnQKMjAxOS0wNi0yNCAx ODoxODo0Niw5MzE6IEVSUk9SCVNUREVSUjoJICAgIHNlbGYuX3dhaXRfZm9yKCJlbGVtZW50IHRv IGV4aXN0IiwgZWxlbWVudF9pZl9pdF9leGlzdHMpCjIwMTktMDYtMjQgMTg6MTg6NDYsOTMxOiBF UlJPUglTVERFUlI6CSAgRmlsZSAiL2hvbWUveW9zcnltOTMvRGV2L0dTb0MvcGdhZG1pbjQvd2Vi L3JlZ3Jlc3Npb24vZmVhdHVyZV91dGlscy9wZ2FkbWluX3BhZ2UucHkiLCBsaW5lIDU4MiwgaW4g X3dhaXRfZm9yCjIwMTktMDYtMjQgMTg6MTg6NDYsOTMxOiBFUlJPUglTVERFUlI6CSAgICAiVGlt ZWQgb3V0IHdhaXRpbmcgZm9yICIgKyB3YWl0aW5nX2Zvcl9tZXNzYWdlCjIwMTktMDYtMjQgMTg6 MTg6NDYsOTMxOiBFUlJPUglTVERFUlI6CSAgRmlsZSAiL2hvbWUveW9zcnltOTMvRGV2L0dTb0Mv cGdhZG1pbjQvdmVudi9saWIvcHl0aG9uMy42L3NpdGUtcGFja2FnZXMvc2VsZW5pdW0vd2ViZHJp dmVyL3N1cHBvcnQvd2FpdC5weSIsIGxpbmUgODAsIGluIHVudGlsCjIwMTktMDYtMjQgMTg6MTg6 NDYsOTMxOiBFUlJPUglTVERFUlI6CSAgICByYWlzZSBUaW1lb3V0RXhjZXB0aW9uKG1lc3NhZ2Us IHNjcmVlbiwgc3RhY2t0cmFjZSkKMjAxOS0wNi0yNCAxODoxODo0Niw5MzE6IEVSUk9SCVNUREVS UjoJc2VsZW5pdW0uY29tbW9uLmV4Y2VwdGlvbnMuVGltZW91dEV4Y2VwdGlvbjogTWVzc2FnZTog VGltZWQgb3V0IHdhaXRpbmcgZm9yIGVsZW1lbnQgdG8gZXhpc3QKMjAxOS0wNi0yNCAxODoxODo0 Niw5MzE6IEVSUk9SCVNUREVSUjoJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyMDE5LTA2LTI0IDE4OjE4OjQ2LDkz MTogRVJST1IJU1RERVJSOglFUlJPUjogcnVuVGVzdCAocGdhZG1pbi5mZWF0dXJlX3Rlc3RzLnhz c19jaGVja3NfcGFuZWxzX2FuZF9xdWVyeV90b29sX3Rlc3QuQ2hlY2tGb3JYc3NGZWF0dXJlVGVz dCkKMjAxOS0wNi0yNCAxODoxODo0Niw5MzE6IEVSUk9SCVNUREVSUjoJVGVzdCBYU1MgY2hlY2sg Zm9yIHBhbmVscyBhbmQgcXVlcnkgdG9vbAoyMDE5LTA2LTI0IDE4OjE4OjQ2LDkzMjogRVJST1IJ U1RERVJSOgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMTktMDYtMjQgMTg6MTg6NDYsOTMyOiBFUlJPUglTVERF UlI6CVRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKMjAxOS0wNi0yNCAxODoxODo0 Niw5MzI6IEVSUk9SCVNUREVSUjoJICBGaWxlICIvaG9tZS95b3NyeW05My9EZXYvR1NvQy9wZ2Fk bWluNC93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3hzc19jaGVja3NfcGFuZWxzX2FuZF9xdWVy eV90b29sX3Rlc3QucHkiLCBsaW5lIDY3LCBpbiBydW5UZXN0CjIwMTktMDYtMjQgMTg6MTg6NDYs OTMyOiBFUlJPUglTVERFUlI6CSAgICBzZWxmLl9jaGVja194c3NfaW5fcXVlcnlfdG9vbF9oaXN0 b3J5KCkKMjAxOS0wNi0yNCAxODoxODo0Niw5MzI6IEVSUk9SCVNUREVSUjoJICBGaWxlICIvaG9t ZS95b3NyeW05My9EZXYvR1NvQy9wZ2FkbWluNC93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3hz c19jaGVja3NfcGFuZWxzX2FuZF9xdWVyeV90b29sX3Rlc3QucHkiLCBsaW5lIDIxNiwgaW4gX2No ZWNrX3hzc19pbl9xdWVyeV90b29sX2hpc3RvcnkKMjAxOS0wNi0yNCAxODoxODo0Niw5MzI6IEVS Uk9SCVNUREVSUjoJICAgICIucXVlcnktZGV0YWlsIC5jb250ZW50LXZhbHVlIgoyMDE5LTA2LTI0 IDE4OjE4OjQ2LDkzMjogRVJST1IJU1RERVJSOgkgIEZpbGUgIi9ob21lL3lvc3J5bTkzL0Rldi9H U29DL3BnYWRtaW40L3dlYi9yZWdyZXNzaW9uL2ZlYXR1cmVfdXRpbHMvcGdhZG1pbl9wYWdlLnB5 IiwgbGluZSAzMjcsIGluIGZpbmRfYnlfY3NzX3NlbGVjdG9yCjIwMTktMDYtMjQgMTg6MTg6NDYs OTMyOiBFUlJPUglTVERFUlI6CSAgICBsYW1iZGEgZHJpdmVyOiBkcml2ZXIuZmluZF9lbGVtZW50 X2J5X2Nzc19zZWxlY3Rvcihjc3Nfc2VsZWN0b3IpCjIwMTktMDYtMjQgMTg6MTg6NDYsOTMyOiBF UlJPUglTVERFUlI6CSAgRmlsZSAiL2hvbWUveW9zcnltOTMvRGV2L0dTb0MvcGdhZG1pbjQvd2Vi L3JlZ3Jlc3Npb24vZmVhdHVyZV91dGlscy9wZ2FkbWluX3BhZ2UucHkiLCBsaW5lIDUwNywgaW4g d2FpdF9mb3JfZWxlbWVudAoyMDE5LTA2LTI0IDE4OjE4OjQ2LDkzMjogRVJST1IJU1RERVJSOgkg ICAgc2VsZi5fd2FpdF9mb3IoImVsZW1lbnQgdG8gZXhpc3QiLCBlbGVtZW50X2lmX2l0X2V4aXN0 cykKMjAxOS0wNi0yNCAxODoxODo0Niw5MzI6IEVSUk9SCVNUREVSUjoJICBGaWxlICIvaG9tZS95 b3NyeW05My9EZXYvR1NvQy9wZ2FkbWluNC93ZWIvcmVncmVzc2lvbi9mZWF0dXJlX3V0aWxzL3Bn YWRtaW5fcGFnZS5weSIsIGxpbmUgNTgyLCBpbiBfd2FpdF9mb3IKMjAxOS0wNi0yNCAxODoxODo0 Niw5MzI6IEVSUk9SCVNUREVSUjoJICAgICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgIiArIHdhaXRp bmdfZm9yX21lc3NhZ2UKMjAxOS0wNi0yNCAxODoxODo0Niw5MzI6IEVSUk9SCVNUREVSUjoJICBG aWxlICIvaG9tZS95b3NyeW05My9EZXYvR1NvQy9wZ2FkbWluNC92ZW52L2xpYi9weXRob24zLjYv c2l0ZS1wYWNrYWdlcy9zZWxlbml1bS93ZWJkcml2ZXIvc3VwcG9ydC93YWl0LnB5IiwgbGluZSA4 MCwgaW4gdW50aWwKMjAxOS0wNi0yNCAxODoxODo0Niw5MzI6IEVSUk9SCVNUREVSUjoJICAgIHJh aXNlIFRpbWVvdXRFeGNlcHRpb24obWVzc2FnZSwgc2NyZWVuLCBzdGFja3RyYWNlKQoyMDE5LTA2 LTI0IDE4OjE4OjQ2LDkzMjogRVJST1IJU1RERVJSOglzZWxlbml1bS5jb21tb24uZXhjZXB0aW9u cy5UaW1lb3V0RXhjZXB0aW9uOiBNZXNzYWdlOiBUaW1lZCBvdXQgd2FpdGluZyBmb3IgZWxlbWVu dCB0byBleGlzdAoyMDE5LTA2LTI0IDE4OjE4OjQ2LDkzMjogRVJST1IJU1RERVJSOgktLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCjIwMTktMDYtMjQgMTg6MTg6NDYsOTMyOiBFUlJPUglTVERFUlI6CVJhbiAxOSB0ZXN0 cyBpbiA0MTguMDI3cwoyMDE5LTA2LTI0IDE4OjE4OjQ2LDkzMzogRVJST1IJU1RERVJSOglGQUlM RUQKMjAxOS0wNi0yNCAxODoxODo0Niw5MzM6IEVSUk9SCVNUREVSUjoJIChlcnJvcnM9Mywgc2tp cHBlZD0xKQoyMDE5LTA2LTI0IDE4OjE4OjQ3LDYzODogRVJST1IJU1RERVJSOgkKMjAxOS0wNi0y NCAxODoxODo0Nyw2Mzg6IEVSUk9SCVNUREVSUjoJPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyMDE5LTA2LTI0IDE4 OjE4OjQ3LDYzODogRVJST1IJU1RERVJSOglUZXN0IFJlc3VsdCBTdW1tYXJ5CjIwMTktMDYtMjQg MTg6MTg6NDcsNjM4OiBFUlJPUglTVERFUlI6CT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMjAxOS0wNi0yNCAxODox ODo0Nyw2Mzk6IEVSUk9SCVNUREVSUjoJUG9zdGdyZVNRTCAxMToKMjAxOS0wNi0yNCAxODoxODo0 Nyw2Mzk6IEVSUk9SCVNUREVSUjoJCjIwMTktMDYtMjQgMTg6MTg6NDcsNjM5OiBFUlJPUglTVERF UlI6CQkxNSB0ZXN0cyBwYXNzZWQKMjAxOS0wNi0yNCAxODoxODo0Nyw2Mzk6IEVSUk9SCVNUREVS UjoJCTMgdGVzdHMgZmFpbGVkOgoyMDE5LTA2LTI0IDE4OjE4OjQ3LDYzOTogRVJST1IJU1RERVJS OgkJCUNoZWNrRmlsZU1hbmFnZXJGZWF0dXJlVGVzdCAoRmlsZSBtYW5hZ2VyIGZlYXR1cmUgdGVz dCkKMjAxOS0wNi0yNCAxODoxODo0Nyw2Mzk6IEVSUk9SCVNUREVSUjoJCQlDaGVja0ZvclZpZXdE YXRhVGVzdCAoVmFsaWRhdGUgSW5zZXJ0LCBVcGRhdGUgb3BlcmF0aW9ucyBpbiBWaWV3L0VkaXQg ZGF0YSB3aXRoIGdpdmVuIHRlc3QgZGF0YSkKMjAxOS0wNi0yNCAxODoxODo0Nyw2Mzk6IEVSUk9S CVNUREVSUjoJCQlDaGVja0Zvclhzc0ZlYXR1cmVUZXN0IChUZXN0IFhTUyBjaGVjayBmb3IgcGFu ZWxzIGFuZCBxdWVyeSB0b29sKQoyMDE5LTA2LTI0IDE4OjE4OjQ3LDYzOTogRVJST1IJU1RERVJS OgkJMSB0ZXN0IHNraXBwZWQ6CjIwMTktMDYtMjQgMTg6MTg6NDcsNjM5OiBFUlJPUglTVERFUlI6 CQkJQ2hlY2tEZWJ1Z2dlckZvclhzc0ZlYXR1cmVUZXN0IChUZXN0cyB0byBjaGVjayBpZiBEZWJ1 Z2dlciBpcyB2dWxuZXJhYmxlIHRvIFhTUykKMjAxOS0wNi0yNCAxODoxODo0Nyw2NDA6IEVSUk9S CVNUREVSUjoJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQo= --000000000000f25ad0058c148269--