<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>191196</bug_id>
          
          <creation_ts>2018-11-02 09:26:35 -0700</creation_ts>
          <short_desc>[WPE][GTK] Remove either the jhbuild or the flatpak environment</short_desc>
          <delta_ts>2020-03-18 03:17:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>188654</dependson>
    
    <dependson>190241</dependson>
    
    <dependson>192702</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>aperez</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>fujii</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>pnormand</cc>
    
    <cc>tsaunier</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1474514</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-11-02 09:26:35 -0700</bug_when>
    <thetext>Having two separate build environments has gone on for far too long. We need to either switch the bots to using webkit-flatpak and remove the jhbuild environment, or else remove webkit-flatpak. At this point I no longer have a strong preference either way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474541</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-11-02 10:17:39 -0700</bug_when>
    <thetext>Adrian has reminded me that we prefer to switch to flatpak so that we all have exactly the same build environment, and also reminded me that it should be possible to build the sysroot using flatpak but execute our tests outside it, so we can test WebKit&apos;s sandbox rather than the flatpak sandbox. So flatpak would be used for building, but not running.

Still, the project seems stalled, the build rules have become desynced from jhbuild due to patches being added in jhbuild but not to flatpak, and we have unresolved bugs like bug #190241 and bug #188654, so the current state is not good and the transition period has been quite long already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488298</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-15 09:56:34 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #1)
&gt; Still, the project seems stalled, the build rules have become desynced from
&gt; jhbuild due to patches being added in jhbuild but not to flatpak, and we
&gt; have unresolved bugs like bug #190241 and bug #188654, so the current state
&gt; is not good and the transition period has been quite long already.

Adrian, can you remind us what other issues block the switch to flatpak? I think you had something else you wanted fixed before we remove the jhbuild, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488315</commentid>
    <comment_count>3</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2018-12-15 15:37:57 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #2)
&gt; (In reply to Michael Catanzaro from comment #1)
&gt; &gt; Still, the project seems stalled, the build rules have become desynced from
&gt; &gt; jhbuild due to patches being added in jhbuild but not to flatpak, and we
&gt; &gt; have unresolved bugs like bug #190241 and bug #188654, so the current state
&gt; &gt; is not good and the transition period has been quite long already.
&gt; 
&gt; Adrian, can you remind us what other issues block the switch to flatpak? I
&gt; think you had something else you wanted fixed before we remove the jhbuild,
&gt; right?

On top of the two issues, you mentioned:

 - Bug #192702: If you run update-webkit{gtk,wpe}-flatpak more than once,
   all runs after the first one fail.

 - Figuring out a way to use the Flatpak “root” file system as a sysroot
   for building and running tests, but *without* using the Flatpak sandbox.
   The motivation is twofold: in one hand, this would allow actualy testing
   the Bubblewrap-based sandbox; and on the other hand this would allow
   running bots on containers (as we are already doing now).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488316</commentid>
    <comment_count>4</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2018-12-15 15:39:21 -0800</bug_when>
    <thetext>JFTR, for the desync between build rules between JHBuild and Flatpak,
reviewers should r- any patch that touches one but not the others.
Whether we enforce keeping them in sync or not, is completely up to
us ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491101</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-01 10:22:59 -0800</bug_when>
    <thetext>(In reply to Adrian Perez from comment #4)
&gt; JFTR, for the desync between build rules between JHBuild and Flatpak,
&gt; reviewers should r- any patch that touches one but not the others.
&gt; Whether we enforce keeping them in sync or not, is completely up to
&gt; us ;-)

I had considered doing this several times as people have proposed several patches updating only one and not the other. GStreamer, in particular, has become desynced between the two environments. But ultimately I decided the flatpak environment is secondary and allowed to become stale until it is ready to replace the jhbuild.

(In reply to Adrian Perez from comment #3)
&gt; On top of the two issues, you mentioned:
&gt; 
&gt;  - Bug #192702: If you run update-webkit{gtk,wpe}-flatpak more than once,
&gt;    all runs after the first one fail.
&gt; 
&gt;  - Figuring out a way to use the Flatpak “root” file system as a sysroot
&gt;    for building and running tests, but *without* using the Flatpak sandbox.
&gt;    The motivation is twofold: in one hand, this would allow actualy testing
&gt;    the Bubblewrap-based sandbox; and on the other hand this would allow
&gt;    running bots on containers (as we are already doing now).

OK, I agree these are both important. We currently do not have a concrete plan to work on them. It&apos;s very important to create such a plan ASAP.

Hopefully such a plan is created very soon. Otherwise, I think it&apos;s really time to remove the flatpak environment until such time it&apos;s ready to be relanded, because:

 * There has been no progress on this bug in the two months since I reported it; and
 * The flatpak environment has been unusable for several weeks now without anyone seeming to care, bug #190241</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1543325</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-06-10 07:56:18 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #0)
&gt; Having two separate build environments has gone on for far too long.

This was half a year ago, and it&apos;s not OK. Let&apos;s give up for now and try again later when we&apos;re ready to finish it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1543326</commentid>
    <comment_count>7</comment_count>
      <attachid>371743</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-06-10 07:56:23 -0700</bug_when>
    <thetext>Created attachment 371743
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1543335</commentid>
    <comment_count>8</comment_count>
      <attachid>371743</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2019-06-10 08:36:00 -0700</bug_when>
    <thetext>Comment on attachment 371743
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=371743&amp;action=review

&gt; Tools/ChangeLog:12
&gt; +        linger in WebKit for excessive periods of time. The point of the transition to flatpak was
&gt; +        to remove the jhbuild environment, but, at least for the time being, this has clearly

I disagree. The point (for me anyway) was to provide a modern alternative to jhbuild, and eventually replace it in the long run. It doesn&apos;t mean we can&apos;t have both systems side-by-side meanwhile. The maintenance cost of the flatpak build is low anyway. Removing it and resurrecting it later would be more work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1543642</commentid>
    <comment_count>9</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-06-11 01:13:27 -0700</bug_when>
    <thetext>(In reply to Philippe Normand from comment #8)
&gt; Comment on attachment 371743 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=371743&amp;action=review
&gt; 
&gt; &gt; Tools/ChangeLog:12
&gt; &gt; +        linger in WebKit for excessive periods of time. The point of the transition to flatpak was
&gt; &gt; +        to remove the jhbuild environment, but, at least for the time being, this has clearly
&gt; 
&gt; I disagree. The point (for me anyway) was to provide a modern alternative to
&gt; jhbuild, and eventually replace it in the long run. It doesn&apos;t mean we can&apos;t
&gt; have both systems side-by-side meanwhile. The maintenance cost of the
&gt; flatpak build is low anyway. Removing it and resurrecting it later would be
&gt; more work.

I basically agree with Philippe. The cost of maintaining the Flatpak
environment infrastructure has been negligible, and it brings in more
convenience than pain — I would rather keep it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631076</commentid>
    <comment_count>10</comment_count>
      <attachid>371743</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-03-18 03:17:28 -0700</bug_when>
    <thetext>Comment on attachment 371743
Patch

The flatpak infra will be ditched if the experiment with the new SDK fails.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>371743</attachid>
            <date>2019-06-10 07:56:23 -0700</date>
            <delta_ts>2020-03-18 03:17:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191196-20190610095622.patch</filename>
            <type>text/plain</type>
            <size>97850</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2MjE4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTc3OTZlMTk3ZTBiMzUxYzI5NmY0Y2FjZDkwODZjNDMx
MGNmMDk3YS4uNGE1ODBiY2ZiM2MzOTRhN2U4MTc2YjU3ZDUxNDEzMmNhMzA4YjMzZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYy
IEBACisyMDE5LTA2LTEwICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNv
bT4KKworICAgICAgICBbV1BFXVtHVEtdIFJlbW92ZSB0aGUgZmxhdHBhayBlbnZpcm9ubWVudCBk
ZXZlbG9wbWVudCBlbnZpcm9ubWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkxMTk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhlIHRyYW5zaXRpb24gZnJvbSBqaGJ1aWxkIHRvIGZsYXRwYWsgaGFz
IGJlZW4gc3RhbGxlZCBmb3IgYSB2ZXJ5IGxvbmcgdGltZS4gSXQgZG9lc24ndAorICAgICAgICBt
YWtlIHNlbnNlIHRvIHN1cHBvcnQgdHdvIGRpZmZlcmVudCBkZXZlbG9wZW1lbnQgZW52aXJvbm1l
bnRzLiBIYXZpbmcgdHdvIGVudmlyb25tZW50cworICAgICAgICBpbmNyZWFzZXMgbWFpbnRlbmFu
Y2UgYnVyZGVuLCBhbmQgaXQncyBmcnVzdHJhdGluZyB0byBzZWUgdW5maW5pc2hlZCB0cmFuc2l0
aW9uYWwgY29kZQorICAgICAgICBsaW5nZXIgaW4gV2ViS2l0IGZvciBleGNlc3NpdmUgcGVyaW9k
cyBvZiB0aW1lLiBUaGUgcG9pbnQgb2YgdGhlIHRyYW5zaXRpb24gdG8gZmxhdHBhayB3YXMKKyAg
ICAgICAgdG8gcmVtb3ZlIHRoZSBqaGJ1aWxkIGVudmlyb25tZW50LCBidXQsIGF0IGxlYXN0IGZv
ciB0aGUgdGltZSBiZWluZywgdGhpcyBoYXMgY2xlYXJseQorICAgICAgICBmYWlsZWQuIFNvIHJl
bW92ZSBpdCBmb3Igbm93LiBXaGVuIHdlIGFyZSByZWFkeSB0byByZXRha2UgdGhpcyBwcm9qZWN0
IGFuZCByZWFsbHkgY29tcGxldGUKKyAgICAgICAgdGhlIHRyYW5zaXRpb24sIHRoZW4gd2UgY2Fu
IHJlbGFuZCB0aGlzIGNvZGUuCisKKyAgICAgICAgKiBTY3JpcHRzL2J1aWxkLXdlYmtpdDoKKyAg
ICAgICAgKiBTY3JpcHRzL2dlbmVyYXRlLWpzYy1idW5kbGU6CisgICAgICAgIChtYWluKToKKyAg
ICAgICAgKiBTY3JpcHRzL3J1bi1ndGstdGVzdHM6CisgICAgICAgICogU2NyaXB0cy9ydW4tbWlu
aWJyb3dzZXI6CisgICAgICAgICogU2NyaXB0cy9ydW4tcXQtd3BlLW1pbmlicm93c2VyOgorICAg
ICAgICAqIFNjcmlwdHMvcnVuLXdlYmRyaXZlci10ZXN0czoKKyAgICAgICAgKiBTY3JpcHRzL3J1
bi13ZWJraXQtdGVzdHM6CisgICAgICAgICogU2NyaXB0cy9ydW4td3BlLXRlc3RzOgorICAgICAg
ICAqIFNjcmlwdHMvdXBkYXRlLXdlYmtpdGd0ay1mbGF0cGFrOiBSZW1vdmVkLgorICAgICAgICAq
IFNjcmlwdHMvdXBkYXRlLXdlYmtpdHdwZS1mbGF0cGFrOiBSZW1vdmVkLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0LWZsYXRwYWs6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRk
aXJzLnBtOgorICAgICAgICAobGF1bmNoZXJQYXRoKToKKyAgICAgICAgKGdldEZsYXRwYWtQYXRo
KTogRGVsZXRlZC4KKyAgICAgICAgKGluRmxhdHBha1NhbmRib3gpOiBEZWxldGVkLgorICAgICAg
ICAocnVuSW5GbGF0cGFrKTogRGVsZXRlZC4KKyAgICAgICAgKHJ1bkluRmxhdHBha0lmQXZhaWxh
YmxlKTogRGVsZXRlZC4KKyAgICAgICAgKHNob3VsZFVzZUZsYXRwYWspOiBEZWxldGVkLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5OgorICAgICAgICAoUG9ydC5faXNf
YXJjaF9iYXNlZCk6CisgICAgICAgIChQb3J0Ll9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3Jf
cGxhdGZvcm0pOgorICAgICAgICAoUG9ydC5fc2hvdWxkX3J1bl9hc19waXhlbF90ZXN0KToKKyAg
ICAgICAgKFBvcnQuX3Nob3VsZF91c2VfamhidWlsZCk6CisgICAgICAgIChQb3J0Ll9pc19mbGF0
cGFrKTogRGVsZXRlZC4KKyAgICAgICAgKFBvcnQuX3Nob3VsZF91c2VfZmxhdHBhayk6IERlbGV0
ZWQuCisgICAgICAgIChQb3J0Ll9pbl9mbGF0cGFrX3NhbmRib3gpOiBEZWxldGVkLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9ndGsucHk6CisgICAgICAgIChHdGtQb3J0LnNldHVw
X2Vudmlyb25fZm9yX3NlcnZlcik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2Mvd3B0
X3J1bm5lci5weToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIGZsYXRwYWsvZmlsZXMvZGVm
YXVsdC54a206IFJlbW92ZWQuCisgICAgICAgICogZmxhdHBhay9maWxlcy9odHRwZC1hdXRvZ2Vu
LnNoOiBSZW1vdmVkLgorICAgICAgICAqIGZsYXRwYWsvZmxhdHBha3V0aWxzLnB5OiBSZW1vdmVk
LgorICAgICAgICAqIGZsYXRwYWsvb3JnLndlYmtpdC5Db21tb25Nb2R1bGVzLnlhbWw6IFJlbW92
ZWQuCisgICAgICAgICogZmxhdHBhay9vcmcud2Via2l0LkdUSy55YW1sOiBSZW1vdmVkLgorICAg
ICAgICAqIGZsYXRwYWsvb3JnLndlYmtpdC5XUEUueWFtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBm
bGF0cGFrL29yZy53ZWJraXQuV1BFTW9kdWxlcy55YW1sOiBSZW1vdmVkLgorICAgICAgICAqIGZs
YXRwYWsvb3JnLndlYmtpdC5XUEVRVC55YW1sOiBSZW1vdmVkLgorICAgICAgICAqIGZsYXRwYWsv
b3JnLndlYmtpdC5XZWJLaXQueWFtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmbGF0cGFrL3BhdGNo
ZXMvaHR0cGQtMDAwMS1jb25maWd1cmUtdXNlLXBrZy1jb25maWctZm9yLVBDUkUtZGV0ZWN0aW9u
LnBhdGNoOiBSZW1vdmVkLgorICAgICAgICAqIGZsYXRwYWsvcGF0Y2hlcy9saWJnY3J5cHQtMDAw
MS1Vc2UtcGtnLWNvbmZpZy10by1kZXRlY3QtZ3BnLWVycm9yLnBhdGNoOiBSZW1vdmVkLgorICAg
ICAgICAqIGZsYXRwYWsvcGF0Y2hlcy94dmZiLTAwMDEtSEFDSy1Bdm9pZC1jb21waWxpbmctYS1r
Ym0tZmlsZS5wYXRjaDogUmVtb3ZlZC4KKwogMjAxOS0wNi0wNyAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBBdCBsZWFzdCA2IEFQSSB0ZXN0
cyBhcmUgZmFpbGluZyBkdWUgdG8gYW4gZXhjZXB0aW9uIHdoZW4gd3JpdGluZyBOU0F0dHJpYnV0
ZWRTdHJpbmcgdG8gdGhlIHBhc3RlYm9hcmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvYnVp
bGQtd2Via2l0IGIvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKaW5kZXggZTNlMDBhZGE4NGY5
MzQxMDM3NjZkNmViY2FjMjRhNjYwOGNmYTQzNS4uYjlhYmUyMjliN2ZiNjQ5NTVkMjUwNDI3ODY5
M2I3NDAyZTJiZTBjYyAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKKysr
IGIvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKQEAgLTUwLDEyICs1MCw2IEBAIHN1YiB3cml0
ZUNvbmdyYXRzKCk7CiBjaGVja1JlcXVpcmVkU3lzdGVtQ29uZmlnKCk7CiBzZXRDb25maWd1cmF0
aW9uKCk7CiAKLWlmIChzaG91bGRVc2VGbGF0cGFrKCkpIHsKLSAgICBwcmludCAiQnVpbGRpbmcg
ZmxhdHBhayBiYXNlZCBlbnZpcm9ubWVudFxuIjsKLQotICAgIHJ1bkluRmxhdHBhaygiL2FwcC93
ZWJraXQvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQiKTsKLX0KLQogbXkgJG9yaWdpbmFsV29y
a2luZ0RpcmVjdG9yeSA9IGdldGN3ZCgpOwogY2hkaXJXZWJLaXQoKTsKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1qc2MtYnVuZGxlIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0
ZS1qc2MtYnVuZGxlCmluZGV4IDljMGU4NDI4YWIzN2RiM2RjYTI2NzRiOTA4MzkwOTQ2OTY3MTI2
OTguLjk1NGM0NDZlNWM5MzM3NjE0NjJhYmNiMmRkZjMwYjg3M2FiOGJmNzAgMTAwNzU1Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtanNjLWJ1bmRsZQorKysgYi9Ub29scy9TY3JpcHRzL2dl
bmVyYXRlLWpzYy1idW5kbGUKQEAgLTM1LDEwICszNSw4IEBAIGltcG9ydCB0ZW1wZmlsZQogaW1w
b3J0IHppcGZpbGUKIAogdG9wX2xldmVsX2RpcmVjdG9yeSA9IG9zLnBhdGgubm9ybXBhdGgob3Mu
cGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcuLicsICcuLicpKQotc3lzLnBh
dGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbih0b3BfbGV2ZWxfZGlyZWN0b3J5LCAnVG9vbHMnLCAn
ZmxhdHBhaycpKQogc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbih0b3BfbGV2ZWxfZGly
ZWN0b3J5LCAnVG9vbHMnLCAnamhidWlsZCcpKQogaW1wb3J0IGpoYnVpbGR1dGlscwotaW1wb3J0
IGZsYXRwYWt1dGlscwogCiAKICMgSWRlYWxseSB3ZSBzaG91bGQgdXNlIHNvbWV0aGluZyBsaWtl
IGxkZHRyZWUgb3IgY3JlYXRlIG91ciBvd24gdmVyc2lvbiBvZiB0aGF0CkBAIC0yMzEsOSArMjI5
LDcgQEAgZGVmIG1haW4oKToKICAgICBwbGF0Zm9ybSA9IG9wdGlvbnMucGxhdGZvcm0ubG93ZXIo
KQogICAgIGNvbmZpZ3VyYXRpb24gPSBvcHRpb25zLmNvbmZpZ3VyYXRpb24ubG93ZXIoKQogICAg
IGlmIHBsYXRmb3JtID09ICdndGsnOgotICAgICAgICBmbGF0cGFrdXRpbHMucnVuX2luX3NhbmRi
b3hfaWZfYXZhaWxhYmxlKHN5cy5hcmd2KQotICAgICAgICBpZiBub3QgZmxhdHBha3V0aWxzLmlz
X3NhbmRib3hlZCgpOgotICAgICAgICAgICAgamhidWlsZHV0aWxzLmVudGVyX2poYnVpbGRfZW52
aXJvbm1lbnRfaWZfYXZhaWxhYmxlKCJndGsiKQorICAgICAgICBqaGJ1aWxkdXRpbHMuZW50ZXJf
amhidWlsZF9lbnZpcm9ubWVudF9pZl9hdmFpbGFibGUoImd0ayIpCiAgICAgZWxzZToKICAgICAg
ICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignVW5zdXBwb3J0ZWQgcGxhdGZvcm0nKQogCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1
bi1ndGstdGVzdHMKaW5kZXggNDFiMDVlMmRmNGIxZTZkOGZlMzhlYTNjNTQ5YjUzMzU4NGE0Mjk3
ZS4uYTczOTI1NDQ3ZTI0MzVkZDNiMDVhMDAxMGQxZTVkZmYzNzY0YzBkNCAxMDA3NTUKLS0tIGEv
VG9vbHMvU2NyaXB0cy9ydW4tZ3RrLXRlc3RzCisrKyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWd0ay10
ZXN0cwpAQCAtMjUsMTIgKzI1LDEwIEBAIGltcG9ydCBvcHRwYXJzZQogZnJvbSBnaS5yZXBvc2l0
b3J5IGltcG9ydCBHaW8sIEdMaWIKIAogdG9wX2xldmVsX2RpcmVjdG9yeSA9IG9zLnBhdGgubm9y
bXBhdGgob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLiIsICIuLiIp
KQotc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbih0b3BfbGV2ZWxfZGlyZWN0b3J5LCAi
VG9vbHMiLCAiZmxhdHBhayIpKQogc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbih0b3Bf
bGV2ZWxfZGlyZWN0b3J5LCAiVG9vbHMiLCAiamhidWlsZCIpKQogc3lzLnBhdGguaW5zZXJ0KDAs
IG9zLnBhdGguam9pbih0b3BfbGV2ZWxfZGlyZWN0b3J5LCAiVG9vbHMiLCAiZ2xpYiIpKQogaW1w
b3J0IGNvbW1vbgogaW1wb3J0IGpoYnVpbGR1dGlscwotaW1wb3J0IGZsYXRwYWt1dGlscwogZnJv
bSBhcGlfdGVzdF9ydW5uZXIgaW1wb3J0IFRlc3RSdW5uZXIsIGFkZF9vcHRpb25zCiAKIGNsYXNz
IEd0a1Rlc3RSdW5uZXIoVGVzdFJ1bm5lcik6CkBAIC0xMjksMTEgKzEyNywxMCBAQCBjbGFzcyBH
dGtUZXN0UnVubmVyKFRlc3RSdW5uZXIpOgogICAgICAgICByZXR1cm4gRmFsc2UKIAogaWYgX19u
YW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBmbGF0cGFrdXRpbHMucnVuX2luX3NhbmRib3hfaWZf
YXZhaWxhYmxlKHN5cy5hcmd2KQotICAgIGlmIG5vdCBmbGF0cGFrdXRpbHMuaXNfc2FuZGJveGVk
KCkgYW5kIG5vdCBqaGJ1aWxkdXRpbHMuZW50ZXJfamhidWlsZF9lbnZpcm9ubWVudF9pZl9hdmFp
bGFibGUoImd0ayIpOgorICAgIGlmIG5vdCBqaGJ1aWxkdXRpbHMuZW50ZXJfamhidWlsZF9lbnZp
cm9ubWVudF9pZl9hdmFpbGFibGUoImd0ayIpOgogICAgICAgICBwcmludCAnKioqJwotICAgICAg
ICBwcmludCAnKioqIFdhcm5pbmc6IGpoYnVpbGQgZW52aXJvbm1lbnQgbm90IHByZXNlbnQgYW5k
IG5vdCBydW5uaW5nIGluIGZsYXRwYWsuJwotICAgICAgICBwcmludCAnKioqIFJ1biB1cGRhdGUt
d2Via2l0Z3RrLWxpYnMgb3IgdXBkYXRlLXdlYmtpdGd0ay1mbGF0cGFrIGJlZm9yZSBidWlsZC13
ZWJraXQgdG8gZW5zdXJlIHByb3BlciB0ZXN0aW5nLi4nCisgICAgICAgIHByaW50ICcqKiogV2Fy
bmluZzogamhidWlsZCBlbnZpcm9ubWVudCBub3QgcHJlc2VudCcKKyAgICAgICAgcHJpbnQgJyoq
KiBSdW4gdXBkYXRlLXdlYmtpdGd0ay1saWJzIGJlZm9yZSBidWlsZC13ZWJraXQgdG8gZW5zdXJl
IHByb3BlciB0ZXN0aW5nJwogICAgICAgICBwcmludCAnKioqJwogCiAgICAgb3B0aW9uX3BhcnNl
ciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZT0ndXNhZ2U6ICVwcm9nIFtvcHRpb25zXSBb
dGVzdC4uLl0nKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4tbWluaWJyb3dzZXIgYi9U
b29scy9TY3JpcHRzL3J1bi1taW5pYnJvd3NlcgppbmRleCA0Y2Y2YmU0MDQ3YmZkNzZkNjgxMDlh
YjI5YWE2OGE5MGRjMDg2NmUxLi40OTU0NDA1MzFhZWNjYzA4NGVjZGMzODU1ZTIzOTllM2YzNTIw
ODQxIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1taW5pYnJvd3NlcgorKysgYi9Ub29s
cy9TY3JpcHRzL3J1bi1taW5pYnJvd3NlcgpAQCAtNDUsOCArNDUsNiBAQCBwcm9oaWJpdFVua25v
d25Qb3J0KCk7CiBzZXRDb25maWd1cmF0aW9uKCk7CiAKIGlmIChpc0d0aygpIHx8IGlzV1BFKCkp
IHsKLSAgICBydW5JbkZsYXRwYWtJZkF2YWlsYWJsZSgiL2FwcC93ZWJraXQvVG9vbHMvU2NyaXB0
cy9ydW4tbWluaWJyb3dzZXIiKTsKLQogICAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgYWxsIHRoZSBm
cmFtZXdvcmtzIGFyZSBidWlsdC4KICAgICBjaGVja0ZyYW1ld29ya3MoKTsKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy9ydW4tcXQtd3BlLW1pbmlicm93c2VyIGIvVG9vbHMvU2NyaXB0cy9y
dW4tcXQtd3BlLW1pbmlicm93c2VyCmluZGV4IGFlYWNiNDgzYzJmZDEwYWFhNWZkZDAwZGM2ZDRj
MGM5ZjYxNzMyNDUuLmEyM2I2YTVmM2VhYzY5MDg1MTIxNjY2NTNiNmRjMThlMjVkZGUyYjYgMTAw
NzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLXF0LXdwZS1taW5pYnJvd3NlcgorKysgYi9Ub29s
cy9TY3JpcHRzL3J1bi1xdC13cGUtbWluaWJyb3dzZXIKQEAgLTI3LDEwICsyNyw2IEBAIHVzZSB3
ZWJraXRkaXJzOwogCiBzZXRDb25maWd1cmF0aW9uKCk7CiAKLWlmICghaW5GbGF0cGFrU2FuZGJv
eCgpKSB7Ci0gICAgcHVzaCBAQVJHViwgIi0td3BlIjsKLX0KLQogbXkgJGxhdW5jaGVyTmFtZTsK
IG15ICRsaWJQYXRoOwogbXkgJGxhdW5jaGVyUGF0aDsKQEAgLTQwLDE1ICszNiwxMiBAQCBteSAk
cHJvZHVjdERpciA9IHByb2R1Y3REaXIoKTsKIAogJGxpYlBhdGggPSAiL2FwcC93ZWJraXQvV2Vi
S2l0QnVpbGQvJGNvbmZpZ3VyYXRpb24vbGliL3FtbCIgaWYgJGNvbmZpZ3VyYXRpb247CiAkRU5W
eyJRTUwyX0lNUE9SVF9QQVRIIn0gPSAiJGxpYlBhdGgiIGlmICRsaWJQYXRoOwotcnVuSW5GbGF0
cGFrSWZBdmFpbGFibGUoIi9hcHAvd2Via2l0L1Rvb2xzL1NjcmlwdHMvcnVuLXF0LXdwZS1taW5p
YnJvd3NlciIpOwogCiAjIENoZWNrIHRvIHNlZSB0aGF0IGFsbCB0aGUgZnJhbWV3b3JrcyBhcmUg
YnVpbHQuCiBjaGVja0ZyYW1ld29ya3MoKTsKIAotaWYgKCFpbkZsYXRwYWtTYW5kYm94KCkpIHsK
LSAgICAkbGliUGF0aCA9ICIkcHJvZHVjdERpci9saWIvcW1sIiBpZiAkcHJvZHVjdERpcjsKLSAg
ICAkRU5WeyJRTUwyX0lNUE9SVF9QQVRIIn0gPSAiJGxpYlBhdGgiIGlmICRsaWJQYXRoOwotfQor
JGxpYlBhdGggPSAiJHByb2R1Y3REaXIvbGliL3FtbCIgaWYgJHByb2R1Y3REaXI7CiskRU5WeyJR
TUwyX0lNUE9SVF9QQVRIIn0gPSAiJGxpYlBhdGgiIGlmICRsaWJQYXRoOwogCiAkbGF1bmNoZXJQ
YXRoID0gY2F0ZGlyKCRwcm9kdWN0RGlyLCAiYmluIiwgInF0LXdwZS1taW5pLWJyb3dzZXIiKTsK
IGRpZSAiQ2FuJ3QgZmluZCAkbGF1bmNoZXJQYXRoIiB1bmxlc3MgLXggJGxhdW5jaGVyUGF0aDsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLXdlYmRyaXZlci10ZXN0cyBiL1Rvb2xzL1Nj
cmlwdHMvcnVuLXdlYmRyaXZlci10ZXN0cwppbmRleCBhY2MzNWY3MjQ4M2YyODMyZjA5YzhlZmIx
ODk1ZDE4MWQ0ZDY3OTI5Li5hZjg3NTA5YjgzNjIzMWMwOGM5ODczMzNhNDMyMjU0YTAxYzY2M2E1
IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi13ZWJkcml2ZXItdGVzdHMKKysrIGIvVG9v
bHMvU2NyaXB0cy9ydW4td2ViZHJpdmVyLXRlc3RzCkBAIC02OCwxOCArNjgsMTQgQEAgaWYgcG9y
dC5uYW1lKCkgaW4gWydndGsnLCAnd3BlJ106CiAgICAgaW1wb3J0IG9zCiAKICAgICB0b3BfbGV2
ZWxfZGlyZWN0b3J5ID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJu
YW1lKF9fZmlsZV9fKSwgJy4uJywgJy4uJykpCi0gICAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBh
dGguam9pbih0b3BfbGV2ZWxfZGlyZWN0b3J5LCAnVG9vbHMnLCAnZmxhdHBhaycpKQotICAgIGlt
cG9ydCBmbGF0cGFrdXRpbHMKLSAgICBmbGF0cGFrdXRpbHMucnVuX2luX3NhbmRib3hfaWZfYXZh
aWxhYmxlKHN5cy5hcmd2KQotICAgIGlmIG5vdCBmbGF0cGFrdXRpbHMuaXNfc2FuZGJveGVkKCk6
Ci0gICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4odG9wX2xldmVsX2RpcmVj
dG9yeSwgJ1Rvb2xzJywgJ2poYnVpbGQnKSkKLSAgICAgICAgaW1wb3J0IGpoYnVpbGR1dGlscwor
ICAgIHN5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4odG9wX2xldmVsX2RpcmVjdG9yeSwg
J1Rvb2xzJywgJ2poYnVpbGQnKSkKKyAgICBpbXBvcnQgamhidWlsZHV0aWxzCiAKLSAgICAgICAg
aWYgbm90IGpoYnVpbGR1dGlscy5lbnRlcl9qaGJ1aWxkX2Vudmlyb25tZW50X2lmX2F2YWlsYWJs
ZShwb3J0Lm5hbWUoKSk6Ci0gICAgICAgICAgICBwcmludCAnKioqJwotICAgICAgICAgICAgcHJp
bnQgJyoqKiBXYXJuaW5nOiBqaGJ1aWxkIGVudmlyb25tZW50IG5vdCBwcmVzZW50IGFuZCBub3Qg
cnVubmluZyBpbiBmbGF0cGFrLicKLSAgICAgICAgICAgIHByaW50ICcqKiogUnVuIHVwZGF0ZS13
ZWJraXRndGstbGlicyBvciB1cGRhdGUtd2Via2l0Z3RrLWZsYXRwYWsgYmVmb3JlIGJ1aWxkLXdl
YmtpdCB0byBlbnN1cmUgcHJvcGVyIHRlc3RpbmcuLicKLSAgICAgICAgICAgIHByaW50ICcqKion
CisgICAgaWYgbm90IGpoYnVpbGR1dGlscy5lbnRlcl9qaGJ1aWxkX2Vudmlyb25tZW50X2lmX2F2
YWlsYWJsZShwb3J0Lm5hbWUoKSk6CisgICAgICAgIHByaW50ICcqKionCisgICAgICAgIHByaW50
ICcqKiogV2FybmluZzogamhidWlsZCBlbnZpcm9ubWVudCBub3QgcHJlc2VudCcKKyAgICAgICAg
cHJpbnQgJyoqKiBSdW4gdXBkYXRlLXdlYmtpdGd0ay1saWJzIGJlZm9yZSBidWlsZC13ZWJraXQg
dG8gZW5zdXJlIHByb3BlciB0ZXN0aW5nJworICAgICAgICBwcmludCAnKioqJwogCiBwb3J0Ll9k
aXNwbGF5X3NlcnZlciA9IG9wdGlvbnMuZGlzcGxheV9zZXJ2ZXIKIHJ1bm5lciA9IFdlYkRyaXZl
clRlc3RSdW5uZXIocG9ydCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10
ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cwppbmRleCBmZDg3ZTg3MGRmNmVk
ZmZiN2I3MzEwZWQxNWQxOTM1MjM4OWUwNDFhLi5kOGM1N2Y0ZTg4NDAxYWRiM2RlZDcwNTg4OGE2
YzVkMWNiYjM1Nzg3IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMK
KysrIGIvVG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzCkBAIC0zNCw4ICszNCw1IEBAIGlt
cG9ydCBzeXMKIGZyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCBtdWx0aXByb2Nlc3NpbmdfYm9v
dHN0cmFwCiAKIHRvcF9sZXZlbF9kaXJlY3RvcnkgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGgu
am9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAnLi4nLCAnLi4nKSkKLXN5cy5wYXRoLmlu
c2VydCgwLCBvcy5wYXRoLmpvaW4odG9wX2xldmVsX2RpcmVjdG9yeSwgJ1Rvb2xzJywgJ2ZsYXRw
YWsnKSkKLWltcG9ydCBmbGF0cGFrdXRpbHMKLWZsYXRwYWt1dGlscy5ydW5faW5fc2FuZGJveF9p
Zl9hdmFpbGFibGUoc3lzLmFyZ3YpCiAKLW11bHRpcHJvY2Vzc2luZ19ib290c3RyYXAucnVuKCd3
ZWJraXRweScsICdsYXlvdXRfdGVzdHMnLCAncnVuX3dlYmtpdF90ZXN0cy5weScpClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQorbXVsdGlwcm9jZXNzaW5nX2Jvb3RzdHJhcC5ydW4oJ3dlYmtp
dHB5JywgJ2xheW91dF90ZXN0cycsICdydW5fd2Via2l0X3Rlc3RzLnB5JykKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvcnVuLXdwZS10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLXdwZS10ZXN0
cwppbmRleCA4Zjc3NDllYjZhZDZkMWYxOTkxM2ExNzY5OWRjYjc2NzdmNDg2MmQxLi5mMzc2OTJl
MDAwZjQ4ZjQ2NTQ4MjM3ODI4ZGViMjU2OTQ4YWRmYTYwIDEwMDc1NQotLS0gYS9Ub29scy9TY3Jp
cHRzL3J1bi13cGUtdGVzdHMKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4td3BlLXRlc3RzCkBAIC0y
NCwxMSArMjQsOSBAQCBpbXBvcnQgb3B0cGFyc2UKIAogdG9wX2xldmVsX2RpcmVjdG9yeSA9IG9z
LnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIu
LiIsICIuLiIpKQogc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbih0b3BfbGV2ZWxfZGly
ZWN0b3J5LCAiVG9vbHMiLCAiamhidWlsZCIpKQotc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGgu
am9pbih0b3BfbGV2ZWxfZGlyZWN0b3J5LCAiVG9vbHMiLCAiZmxhdHBhayIpKQogc3lzLnBhdGgu
aW5zZXJ0KDAsIG9zLnBhdGguam9pbih0b3BfbGV2ZWxfZGlyZWN0b3J5LCAiVG9vbHMiLCAiZ2xp
YiIpKQogaW1wb3J0IGNvbW1vbgogaW1wb3J0IGpoYnVpbGR1dGlscwotaW1wb3J0IGZsYXRwYWt1
dGlscwogZnJvbSBhcGlfdGVzdF9ydW5uZXIgaW1wb3J0IFRlc3RSdW5uZXIsIGFkZF9vcHRpb25z
CiAKIGNsYXNzIFdQRVRlc3RSdW5uZXIoVGVzdFJ1bm5lcik6CkBAIC00NywxMSArNDUsMTAgQEAg
Y2xhc3MgV1BFVGVzdFJ1bm5lcihUZXN0UnVubmVyKToKICAgICAgICAgcmV0dXJuIG9zLnBhdGgu
YmFzZW5hbWUob3MucGF0aC5kaXJuYW1lKHRlc3RfcHJvZ3JhbSkpID09ICJXUEVRdCIKIAogaWYg
X19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBmbGF0cGFrdXRpbHMucnVuX2luX3NhbmRib3hf
aWZfYXZhaWxhYmxlKFtzeXMuYXJndlswXSwgIi0td3BlIl0gKyBzeXMuYXJndlsxOl0pCi0gICAg
aWYgbm90IGZsYXRwYWt1dGlscy5pc19zYW5kYm94ZWQoKSBhbmQgbm90IGpoYnVpbGR1dGlscy5l
bnRlcl9qaGJ1aWxkX2Vudmlyb25tZW50X2lmX2F2YWlsYWJsZSgid3BlIik6CisgICAgaWYgbm90
IGpoYnVpbGR1dGlscy5lbnRlcl9qaGJ1aWxkX2Vudmlyb25tZW50X2lmX2F2YWlsYWJsZSgid3Bl
Iik6CiAgICAgICAgIHByaW50ICcqKionCi0gICAgICAgIHByaW50ICcqKiogV2FybmluZzogamhi
dWlsZCBlbnZpcm9ubWVudCBub3QgcHJlc2VudCBhbmQgbm90IHJ1bm5pbmcgaW4gZmxhdHBhay4n
Ci0gICAgICAgIHByaW50ICcqKiogUnVuIHVwZGF0ZS13ZWJraXRndGstbGlicyBvciB1cGRhdGUt
d2Via2l0Z3RrLWZsYXRwYWsgYmVmb3JlIGJ1aWxkLXdlYmtpdCB0byBlbnN1cmUgcHJvcGVyIHRl
c3RpbmcuLicKKyAgICAgICAgcHJpbnQgJyoqKiBXYXJuaW5nOiBqaGJ1aWxkIGVudmlyb25tZW50
IG5vdCBwcmVzZW50JworICAgICAgICBwcmludCAnKioqIFJ1biB1cGRhdGUtd2Via2l0d3BlLWxp
YnMgYmVmb3JlIGJ1aWxkLXdlYmtpdCB0byBlbnN1cmUgcHJvcGVyIHRlc3RpbmcnCiAgICAgICAg
IHByaW50ICcqKionCiAKICAgICBvcHRpb25fcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2Vy
KHVzYWdlPSd1c2FnZTogJXByb2cgW29wdGlvbnNdIFt0ZXN0Li4uXScpCkBAIC02MCw4ICs1Nyw2
IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9JyJoZWFkbGVzcyI6IFVzZSBoZWFkbGVzcyB2aWV3IGJhY2tlbmQuICJ3YXlsYW5k
IjogVXNlIHRoZSBjdXJyZW50IHdheWxhbmQgc2Vzc2lvbi4nKSwKIAogICAgIGFyZ3MgPSBzeXMu
YXJndlsxOl0KLSAgICBpZiBmbGF0cGFrdXRpbHMuaXNfc2FuZGJveGVkKCk6Ci0gICAgICAgIGFy
Z3MgPSBbIGFyZyBmb3IgYXJnIGluIGFyZ3MgaWYgYXJnICE9ICItLXdwZSIgXQogICAgIG9wdGlv
bnMsIGFyZ3MgPSBvcHRpb25fcGFyc2VyLnBhcnNlX2FyZ3MoYXJncykKIAogICAgIGxvZ2dpbmcu
YmFzaWNDb25maWcobGV2ZWw9bG9nZ2luZy5JTkZPLCBmb3JtYXQ9IiUobWVzc2FnZSlzIikKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdGd0ay1mbGF0cGFrIGIvVG9vbHMv
U2NyaXB0cy91cGRhdGUtd2Via2l0Z3RrLWZsYXRwYWsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1
CmluZGV4IDA5NTZmMWYyZTE0ODVkMjQ4NjJlZjdmNmQ3NGEyZjNmOThjZjkyZjguLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvU2NyaXB0cy91cGRh
dGUtd2Via2l0Z3RrLWZsYXRwYWsKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0jIS91
c3IvYmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCi0jIENv
cHlyaWdodCAoYykgMjAxOCwgVGhpYmF1bHQgU2F1bmllciA8dHNhdW5pZXJAaWdhbGlhLmNvbT4K
LSMKLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgotIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCi0jIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIyB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMKLSMgVGhpcyBwcm9ncmFtIGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0jIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsg
aWYgbm90LCB3cml0ZSB0byB0aGUKLSMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0jIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotIyBweWxpbnQ6IGRpc2FibGU9bWlzc2luZy1kb2NzdHJpbmcsaW52YWxpZC1uYW1lCi1pbXBv
cnQgb3MKLWltcG9ydCBzeXMKLQotdG9wX2xldmVsX2RpcmVjdG9yeSA9IG9zLnBhdGgubm9ybXBh
dGgob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLiIsICIuLiIpKQot
c3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbih0b3BfbGV2ZWxfZGlyZWN0b3J5LCAiVG9v
bHMiLCAiZmxhdHBhayIpKQotZnJvbSBmbGF0cGFrdXRpbHMgaW1wb3J0IFdlYmtpdEZsYXRwYWsK
LQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBXZWJraXRGbGF0cGFrLmxvYWRfZnJv
bV9hcmdzKFsiLS1ndGsiLCAiLS11cGRhdGUiXSArIHN5cy5hcmd2WzE6XSkucnVuKCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdHdwZS1mbGF0cGFrIGIvVG9vbHMvU2Ny
aXB0cy91cGRhdGUtd2Via2l0d3BlLWZsYXRwYWsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDU2NGU4NzY1MjExMThlMmZjMGZkNjhiOGM4NjZhYTkwMDFjYjgxMjIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvU2NyaXB0cy91cGRhdGUt
d2Via2l0d3BlLWZsYXRwYWsKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0jIS91c3Iv
YmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCi0jIENvcHly
aWdodCAoYykgMjAxOCwgVGhpYmF1bHQgU2F1bmllciA8dHNhdW5pZXJAaWdhbGlhLmNvbT4KLSMK
LSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgotIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCi0jIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotIyB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0j
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0jIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKLSMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYg
bm90LCB3cml0ZSB0byB0aGUKLSMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0jIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgot
IyBweWxpbnQ6IGRpc2FibGU9bWlzc2luZy1kb2NzdHJpbmcsaW52YWxpZC1uYW1lCi1pbXBvcnQg
b3MKLWltcG9ydCBzeXMKLQotdG9wX2xldmVsX2RpcmVjdG9yeSA9IG9zLnBhdGgubm9ybXBhdGgo
b3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLiIsICIuLiIpKQotc3lz
LnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbih0b3BfbGV2ZWxfZGlyZWN0b3J5LCAiVG9vbHMi
LCAiZmxhdHBhayIpKQotZnJvbSBmbGF0cGFrdXRpbHMgaW1wb3J0IFdlYmtpdEZsYXRwYWsKLQot
aWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBXZWJraXRGbGF0cGFrLmxvYWRfZnJvbV9h
cmdzKFsiLS13cGUiLCAiLS11cGRhdGUiXSArIHN5cy5hcmd2WzE6XSkucnVuKCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0LWZsYXRwYWsgYi9Ub29scy9TY3JpcHRzL3dlYmtpdC1m
bGF0cGFrCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAxMmFlNTM5NjhmZDc2MjFlMmJm
MWU0Y2U3ZmM5OGVhYTcxNzNhODIyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0LWZsYXRwYWsKKysrIC9kZXYvbnVsbApA
QCAtMSwyOCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChDKSAy
MDE4IElnYWxpYSBTLkwuCi0jIENvcHlyaWdodCAoYykgMjAxOCwgVGhpYmF1bHQgU2F1bmllciA8
dHNhdW5pZXJAaWdhbGlhLmNvbT4KLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0jIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIyB2ZXJzaW9uIDIu
MSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSMKLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0jIExlc3NlciBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSMgTGljZW5zZSBhbG9u
ZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSMgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0jIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotIyBweWxpbnQ6IGRpc2FibGU9bWlzc2luZy1kb2NzdHJp
bmcsaW52YWxpZC1uYW1lCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQotdG9wX2xldmVsX2RpcmVj
dG9yeSA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2Zp
bGVfXyksICIuLiIsICIuLiIpKQotc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbih0b3Bf
bGV2ZWxfZGlyZWN0b3J5LCAiVG9vbHMiLCAiZmxhdHBhayIpKQotZnJvbSBmbGF0cGFrdXRpbHMg
aW1wb3J0IFdlYmtpdEZsYXRwYWsKLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBz
eXMuZXhpdChXZWJraXRGbGF0cGFrLmxvYWRfZnJvbV9hcmdzKCkucnVuKCkpClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBt
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCmluZGV4IDY3Y2MxN2E2YjExNmM2MDAxZDMw
OTkzMDJiODUwMDlhMGM0OWVmM2MuLjgxMTQ5NmZlNzE1YmQ1OTRjYjY2ZGRlNGEzNmRhOGQwZjg5
NzU5NzAgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdGRpcnMucG0KQEAgLTE2NTUsOSArMTY1NSw2IEBAIHN1YiBsYXVuY2hl
clBhdGgoKQogewogICAgIG15ICRyZWxhdGl2ZVNjcmlwdHNQYXRoID0gcmVsYXRpdmVTY3JpcHRz
RGlyKCk7CiAgICAgaWYgKGlzR3RrKCkgfHwgaXNXUEUoKSkgewotICAgICAgICBpZiAoaW5GbGF0
cGFrU2FuZGJveCgpKSB7Ci0gICAgICAgICAgICByZXR1cm4gIlRvb2xzL1NjcmlwdHMvcnVuLW1p
bmlicm93c2VyIjsKLSAgICAgICAgfQogICAgICAgICByZXR1cm4gIiRyZWxhdGl2ZVNjcmlwdHNQ
YXRoL3J1bi1taW5pYnJvd3NlciI7CiAgICAgfSBlbHNpZiAoaXNBcHBsZVdlYktpdCgpKSB7CiAg
ICAgICAgIHJldHVybiAiJHJlbGF0aXZlU2NyaXB0c1BhdGgvcnVuLXNhZmFyaSI7CkBAIC0xOTUx
LDIyICsxOTQ4LDYgQEAgc3ViIGdldEpoYnVpbGRQYXRoKCkKICAgICByZXR1cm4gRmlsZTo6U3Bl
Yy0+Y2F0ZGlyKEBqaGJ1aWxkUGF0aCk7CiB9CiAKLXN1YiBnZXRGbGF0cGFrUGF0aCgpCi17Ci0g
ICAgbXkgQGZsYXRwYWtCdWlsZFBhdGggPSBGaWxlOjpTcGVjLT5zcGxpdGRpcihiYXNlUHJvZHVj
dERpcigpKTsKLSAgICBpZiAoaXNHdGsoKSkgewotICAgICAgICBwdXNoKEBmbGF0cGFrQnVpbGRQ
YXRoLCAiR1RLIik7Ci0gICAgfSBlbHNpZiAoaXNXUEUoKSkgewotICAgICAgICBwdXNoKEBmbGF0
cGFrQnVpbGRQYXRoLCAiV1BFIik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZGllICJDYW5ub3Qg
Z2V0IEZsYXRwYWsgcGF0aCBmb3IgcGxhdGZvcm0gdGhhdCBpc24ndCBHVEsrIG9yIFdQRS5cbiI7
Ci0gICAgfQotICAgIG15IEBjb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbigpOwotICAgIHB1
c2goQGZsYXRwYWtCdWlsZFBhdGgsICJGbGF0cGFrVHJlZSRjb25maWd1cmF0aW9uIik7Ci0KLSAg
ICByZXR1cm4gRmlsZTo6U3BlYy0+Y2F0ZGlyKEBmbGF0cGFrQnVpbGRQYXRoKTsKLX0KLQogc3Vi
IGlzQ2FjaGVkQXJndW1lbnRmaWxlT3V0T2ZEYXRlKCRAKQogewogICAgIG15ICgkZmlsZW5hbWUs
ICRjdXJyZW50Q29udGVudHMpID0gQF87CkBAIC0xOTg5LDQwICsxOTcwLDYgQEAgc3ViIGlzQ2Fj
aGVkQXJndW1lbnRmaWxlT3V0T2ZEYXRlKCRAKQogICAgIHJldHVybiAwOwogfQogCi1zdWIgaW5G
bGF0cGFrU2FuZGJveCgpCi17Ci0gICAgaWYgKC1mICIvLmZsYXRwYWstaW5mbyIpIHsKLSAgICAg
ICAgcmV0dXJuIDE7Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLXN1YiBydW5JbkZsYXRw
YWsoQCkKLXsKLSAgICBteSBAYXJnID0gQF87Ci0gICAgbXkgQGNvbW1hbmQgPSAoRmlsZTo6U3Bl
Yy0+Y2F0ZmlsZShzb3VyY2VEaXIoKSwgIlRvb2xzIiwgIlNjcmlwdHMiLCAid2Via2l0LWZsYXRw
YWsiKSk7Ci0gICAgZXhlYyBAY29tbWFuZCwgYXJndW1lbnRzRm9yQ29uZmlndXJhdGlvbigpLCAi
LS1jb21tYW5kIiwgQF8sIGFyZ3VtZW50c0ZvckNvbmZpZ3VyYXRpb24oKSwgQEFSR1Ygb3IgZGll
OwotfQotCi1zdWIgcnVuSW5GbGF0cGFrSWZBdmFpbGFibGUoQCkKLXsKLSAgICBpZiAoaW5GbGF0
cGFrU2FuZGJveCgpKSB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIG15IEBjb21t
YW5kID0gKEZpbGU6OlNwZWMtPmNhdGZpbGUoc291cmNlRGlyKCksICJUb29scyIsICJTY3JpcHRz
IiwgIndlYmtpdC1mbGF0cGFrIikpOwotICAgIGlmIChzeXN0ZW0oQGNvbW1hbmQsICItLWF2YWls
YWJsZSIpICE9IDApIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgaWYgKCEgLWUg
Z2V0RmxhdHBha1BhdGgoKSkgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBydW5J
bkZsYXRwYWsoQF8pCi19Ci0KIHN1YiB3cmFwcGVyUHJlZml4SWZOZWVkZWQoKQogewogCkBAIC0y
MDUyLDExICsxOTk5LDYgQEAgc3ViIHNob3VsZFVzZUpoYnVpbGQoKQogICAgIHJldHVybiAoKGlz
R3RrKCkgb3IgaXNXUEUoKSkgYW5kIC1lIGdldEpoYnVpbGRQYXRoKCkpOwogfQogCi1zdWIgc2hv
dWxkVXNlRmxhdHBhaygpCi17Ci0gICAgcmV0dXJuICgoaXNHdGsoKSBvciBpc1dQRSgpKSBhbmQg
ISBpbkZsYXRwYWtTYW5kYm94KCkgYW5kIC1lIGdldEZsYXRwYWtQYXRoKCkpOwotfQotCiBzdWIg
Y21ha2VDYWNoZVBhdGgoKQogewogICAgIHJldHVybiBGaWxlOjpTcGVjLT5jYXRkaXIoYmFzZVBy
b2R1Y3REaXIoKSwgY29uZmlndXJhdGlvbigpLCAiQ01ha2VDYWNoZS50eHQiKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L2Jhc2UucHkKaW5kZXggYzRkMzI4NWVhN2UyNzkyMGJkZDFiYTAzMWY0ZmQ3
NWU4ZmE2ZDNiMC4uMzk0ZmNmOGE5MDdmNTk2MmQ4OTdhOTE0OWQ2MThhZWU1OGM4OWEwYSAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKQEAgLTEyNzAsOSArMTI3MCw2IEBAIGNsYXNz
IFBvcnQob2JqZWN0KToKICAgICBkZWYgX2lzX2FyY2hfYmFzZWQoc2VsZik6CiAgICAgICAgIHJl
dHVybiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cygnL2V0Yy9hcmNoLXJlbGVhc2UnKQogCi0gICAg
ZGVmIF9pc19mbGF0cGFrKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5l
eGlzdHMoJy91c3IvbWFuaWZlc3QuanNvbicpCi0KICAgICBkZWYgX2FwYWNoZV92ZXJzaW9uKHNl
bGYpOgogICAgICAgICBjb25maWcgPSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoW3NlbGYu
X3BhdGhfdG9fYXBhY2hlKCksICctdiddKQogICAgICAgICByZXR1cm4gcmUuc3ViKHInKD86Lnxc
bikqU2VydmVyIHZlcnNpb246IEFwYWNoZS8oXGQrXC5cZCspKD86LnxcbikqJywgcidcMScsIGNv
bmZpZykKQEAgLTEzMTAsOCArMTMwNyw2IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAg
ICAgICAgICByZXR1cm4gJ2RlYmlhbi1odHRwZC0nICsgc2VsZi5fYXBhY2hlX3ZlcnNpb24oKSAr
IHNlbGYuX2RlYmlhbl9waHBfdmVyc2lvbigpICsgJy5jb25mJwogICAgICAgICAgICAgaWYgc2Vs
Zi5faXNfYXJjaF9iYXNlZCgpOgogICAgICAgICAgICAgICAgIHJldHVybiAnYXJjaGxpbnV4LWh0
dHBkLmNvbmYnCi0gICAgICAgICAgICBpZiBzZWxmLl9pc19mbGF0cGFrKCk6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuICdmbGF0cGFrLWh0dHBkLmNvbmYnCiAgICAgICAgICMgQWxsIHBsYXRmb3Jt
cyB1c2UgYXBhY2hlMiBleGNlcHQgZm9yIENZR1dJTiAoYW5kIE1hYyBPUyBYIFRpZ2VyIGFuZCBw
cmlvciwgd2hpY2ggd2Ugbm8gbG9uZ2VyIHN1cHBvcnQpLgogICAgICAgICByZXR1cm4gJ2FwYWNo
ZScgKyBzZWxmLl9hcGFjaGVfdmVyc2lvbigpICsgJy1odHRwZC5jb25mJwogCkBAIC0xNDU4LDE5
ICsxNDUzLDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICAjIC0tcGl4ZWwtdGVzdC1k
aXJlY3RvcnkgaXMgbm90IHNwZWNpZmllZC4KICAgICAgICAgcmV0dXJuIFRydWUKIAotICAgIGRl
ZiBfc2hvdWxkX3VzZV9mbGF0cGFrKHNlbGYpOgotICAgICAgICBzdWZmaXggPSAiIgotICAgICAg
ICBpZiBzZWxmLnBvcnRfbmFtZToKLSAgICAgICAgICAgIHN1ZmZpeCA9IHNlbGYucG9ydF9uYW1l
LnVwcGVyKCkKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKHNlbGYucGF0
aF9mcm9tX3dlYmtpdF9iYXNlKCdXZWJLaXRCdWlsZCcsIHN1ZmZpeCwgIkZsYXRwYWtUcmVlIikp
Ci0KLSAgICBkZWYgX2luX2ZsYXRwYWtfc2FuZGJveChzZWxmKToKLSAgICAgICAgcmV0dXJuIG9z
LnBhdGguZXhpc3RzKCIvdXNyL21hbmlmZXN0Lmpzb24iKQotCiAgICAgZGVmIF9zaG91bGRfdXNl
X2poYnVpbGQoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX2luX2ZsYXRwYWtfc2FuZGJveCgpOgot
ICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KICAgICAgICAgc3VmZml4ID0gIiIKICAgICAgICAg
aWYgc2VsZi5wb3J0X25hbWU6CiAgICAgICAgICAgICBzdWZmaXggPSBzZWxmLnBvcnRfbmFtZS51
cHBlcigpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZ3RrLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2d0ay5weQppbmRleCBhOWRjNTI1OTVjODhhYzBk
ZTRjY2QxMGYxNDA5NzYxNjExMDM1YzM0Li41NGI2MTZiOGI3ZjNhY2E2MjQ2YjAwNzI3NDg2NTNh
ODZiZDY2OWE0IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZ3RrLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9ndGsucHkKQEAgLTEzMCwxMiArMTMw
LDkgQEAgY2xhc3MgR3RrUG9ydChQb3J0KToKICAgICAgICAgc2VsZi5fY29weV92YWx1ZV9mcm9t
X2Vudmlyb25faWZfc2V0KGVudmlyb25tZW50LCAnR1NUX0RFQlVHX05PX0NPTE9SJykKIAogICAg
ICAgICAjIENvbmZpZ3VyZSB0aGUgc29mdHdhcmUgbGliZ2wgcmVuZGVyZXIgaWYgamhidWlsZCBy
ZWFkeSBhbmQgd2UgdGVzdCBpbnNpZGUgYSB2aXJ0dWFsaXplZCB3aW5kb3cgc3lzdGVtCi0gICAg
ICAgIGlmIHNlbGYuX2RyaXZlcl9jbGFzcygpIGluIFtYdmZiRHJpdmVyLCBXZXN0b25Ecml2ZXJd
IGFuZCAoc2VsZi5fc2hvdWxkX3VzZV9qaGJ1aWxkKCkgb3Igc2VsZi5faXNfZmxhdHBhaygpKToK
LSAgICAgICAgICAgIGlmIHNlbGYuX3Nob3VsZF91c2VfamhidWlsZCgpOgotICAgICAgICAgICAg
ICAgIGxsdm1waXBlX2xpYmdsX3BhdGggPSBzZWxmLmhvc3QuZXhlY3V0aXZlLnJ1bl9jb21tYW5k
KHNlbGYuX2poYnVpbGRfd3JhcHBlciArIFsncHJpbnRlbnYnLCAnTExWTVBJUEVfTElCR0xfUEFU
SCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZ25vcmVfZXJyb3JzPVRydWUpLnN0cmlwKCkKLSAgICAgICAgICAg
IGVsc2U6ICAjIGluIGZsYXRwYWsKLSAgICAgICAgICAgICAgICBsbHZtcGlwZV9saWJnbF9wYXRo
ID0gIi9hcHAvc29mdEdML2xpYiIKKyAgICAgICAgaWYgc2VsZi5fZHJpdmVyX2NsYXNzKCkgaW4g
W1h2ZmJEcml2ZXIsIFdlc3RvbkRyaXZlcl0gYW5kIHNlbGYuX3Nob3VsZF91c2VfamhidWlsZCgp
OgorICAgICAgICAgICAgbGx2bXBpcGVfbGliZ2xfcGF0aCA9IHNlbGYuaG9zdC5leGVjdXRpdmUu
cnVuX2NvbW1hbmQoc2VsZi5famhidWlsZF93cmFwcGVyICsgWydwcmludGVudicsICdMTFZNUElQ
RV9MSUJHTF9QQVRIJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVfZXJyb3JzPVRydWUpLnN0cmlwKCkKIAog
ICAgICAgICAgICAgZHJpX2xpYmdsX3BhdGggPSBvcy5wYXRoLmpvaW4obGx2bXBpcGVfbGliZ2xf
cGF0aCwgImRyaSIpCiAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4o
bGx2bXBpcGVfbGliZ2xfcGF0aCwgImxpYkdMLnNvIikpIGFuZCBvcy5wYXRoLmV4aXN0cyhvcy5w
YXRoLmpvaW4oZHJpX2xpYmdsX3BhdGgsICJzd3Jhc3RfZHJpLnNvIikpOgpAQCAtMTQ4LDcgKzE0
NSw3IEBAIGNsYXNzIEd0a1BvcnQoUG9ydCk6CiAgICAgICAgICAgICAgICAgaWYgb3MuZW52aXJv
bi5nZXQoJ0xEX0xJQlJBUllfUEFUSCcpOgogICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVu
dFsnTERfTElCUkFSWV9QQVRIJ10gKz0gJzolcycgJSBvcy5lbnZpcm9uLmdldCgnTERfTElCUkFS
WV9QQVRIJykKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgX2xvZy53YXJuaW5n
KCJDYW4ndCBmaW5kIEdhbGxpdW0gbGx2bXBpcGUgZHJpdmVyLiBUcnkgdG8gcnVuIHVwZGF0ZS13
ZWJraXRndGstbGlicyBvciB1cGRhdGUtd2Via2l0Z3RrLWZsYXRwYWsiKQorICAgICAgICAgICAg
ICAgIF9sb2cud2FybmluZygiQ2FuJ3QgZmluZCBHYWxsaXVtIGxsdm1waXBlIGRyaXZlci4gVHJ5
IHRvIHJ1biB1cGRhdGUtd2Via2l0Z3RrLWxpYnMiKQogICAgICAgICBpZiBzZWxmLmdldF9vcHRp
b24oImxlYWtzIik6CiAgICAgICAgICAgICAjIFR1cm4gb2ZmIEdMaWIgbWVtb3J5IG9wdGltaXNh
dGlvbnMgaHR0cHM6Ly93aWtpLmdub21lLm9yZy9WYWxncmluZC4KICAgICAgICAgICAgIGVudmly
b25tZW50WydHX1NMSUNFJ10gPSAnYWx3YXlzLW1hbGxvYycKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdzNjL3dwdF9ydW5uZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3czYy93cHRfcnVubmVyLnB5CmluZGV4IDQ5MDk5NTllMGVlY2FmOThjZGI1YWIzMDVjZjgyMTUw
OTBkZmY5ODIuLmI3ZTU2MjU3MzhhYjhhMDFmODkxNGMyMDg2ZjVhNGEwOTZjMGIzYzYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3dwdF9ydW5uZXIucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS93M2Mvd3B0X3J1bm5lci5weQpAQCAtNTEsMzAgKzUxLDE1IEBA
IGRlZiBtYWluKHNjcmlwdF9uYW1lLCBhcmd2KToKICAgICAgICAgc3lzLmV4aXQoLTEpCiAKICAg
ICBydW5uZXIgPSBXUFRSdW5uZXIocG9ydCwgcG9ydC5ob3N0LCBzY3JpcHRfbmFtZSwgb3B0aW9u
cykKLSAgICAjIElmIG5lY2Vzc2FyeSwgaW5qZWN0IHRoZSBqaGJ1aWxkIHdyYXBwZXIgb3IgcmUt
cnVuIGluIGZsYXRwYWsgc2FuZGJveC4KKyAgICAjIElmIG5lY2Vzc2FyeSwgaW5qZWN0IHRoZSBq
aGJ1aWxkIHdyYXBwZXIuCiAgICAgaWYgcG9ydC5uYW1lKCkgaW4gWydndGsnLCAnd3BlJ106CiAg
ICAgICAgIGZpbGVzeXN0ZW0gPSBob3N0LmZpbGVzeXN0ZW0KIAogICAgICAgICB0b3BfbGV2ZWxf
ZGlyZWN0b3J5ID0gZmlsZXN5c3RlbS5ub3JtcGF0aChmaWxlc3lzdGVtLmpvaW4oZmlsZXN5c3Rl
bS5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJy4uJywgJy4uJywgJy4uJykpCi0gICAgICAgIHN5
cy5wYXRoLmluc2VydCgwLCBmaWxlc3lzdGVtLmpvaW4odG9wX2xldmVsX2RpcmVjdG9yeSwgJ1Rv
b2xzJywgJ2ZsYXRwYWsnKSkKLSAgICAgICAgaW1wb3J0IGZsYXRwYWt1dGlscwotICAgICAgICBp
ZiBub3QgZmxhdHBha3V0aWxzLmlzX3NhbmRib3hlZCgpIGFuZCBmbGF0cGFrdXRpbHMuY2hlY2tf
ZmxhdHBhayh2ZXJib3NlPUZhbHNlKToKLSAgICAgICAgICAgIGZsYXRwYWtfcnVubmVyID0gZmxh
dHBha3V0aWxzLldlYmtpdEZsYXRwYWsubG9hZF9mcm9tX2FyZ3Moc3lzLmFyZ3YpCi0gICAgICAg
ICAgICBpZiBmbGF0cGFrX3J1bm5lci5jbGVhbl9hcmdzKCkgYW5kIGZsYXRwYWtfcnVubmVyLmhh
c19lbnZpcm9ubWVudCgpOgotICAgICAgICAgICAgICAgIGlmIG5vdCBydW5uZXIucHJlcGFyZV93
cHRfY2hlY2tvdXQoKToKLSAgICAgICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgICAg
ICAgICAgICAgIGhvc3RmaWxlbmFtZSA9IG9zLnBhdGguam9pbihmbGF0cGFrX3J1bm5lci5idWls
ZF9wYXRoLCAid3B0X2V0Y19ob3N0cyIpCi0gICAgICAgICAgICAgICAgd2l0aCBvcGVuKGhvc3Rm
aWxlbmFtZSwgInciKSBhcyBzdGRvdXQ6Ci0gICAgICAgICAgICAgICAgICAgIGZsYXRwYWtfcnVu
bmVyLnJ1bl9pbl9zYW5kYm94KG9zLnBhdGguam9pbihvcHRpb25zLndwdF9jaGVja291dCwgIndw
dCIpLCAibWFrZS1ob3N0cy1maWxlIiwgc3Rkb3V0PXN0ZG91dCkKLQotICAgICAgICAgICAgICAg
IHN5cy5leGl0KGZsYXRwYWtfcnVubmVyLnJ1bl9pbl9zYW5kYm94KCpzeXMuYXJndiwKLSAgICAg
ICAgICAgICAgICAgICAgZXh0cmFfZmxhdHBha19hcmdzPVsnLS1iaW5kLW1vdW50PS9ldGMvaG9z
dHM9JXMnICUgaG9zdGZpbGVuYW1lXSkpCi0KICAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIGZp
bGVzeXN0ZW0uam9pbih0b3BfbGV2ZWxfZGlyZWN0b3J5LCAnVG9vbHMnLCAnamhidWlsZCcpKQog
ICAgICAgICBpbXBvcnQgamhidWlsZHV0aWxzCiAKLSAgICAgICAgaWYgbm90IGZsYXRwYWt1dGls
cy5pc19zYW5kYm94ZWQoKSBhbmQgbm90IGpoYnVpbGR1dGlscy5lbnRlcl9qaGJ1aWxkX2Vudmly
b25tZW50X2lmX2F2YWlsYWJsZShwb3J0Lm5hbWUoKSk6CisgICAgICAgIGlmIG5vdCBqaGJ1aWxk
dXRpbHMuZW50ZXJfamhidWlsZF9lbnZpcm9ubWVudF9pZl9hdmFpbGFibGUocG9ydC5uYW1lKCkp
OgogICAgICAgICAgICAgX2xvZy53YXJuaW5nKCdqaGJ1aWxkIGVudmlyb25tZW50IG5vdCBwcmVz
ZW50LiBSdW4gdXBkYXRlLXdlYmtpdGd0ay1saWJzIGJlZm9yZSBidWlsZC13ZWJraXQgdG8gZW5z
dXJlIHByb3BlciB0ZXN0aW5nLicpCiAKICAgICAjIENyZWF0ZSB0aGUgUG9ydC1zcGVjaWZpYyBk
cml2ZXIuCmRpZmYgLS1naXQgYS9Ub29scy9mbGF0cGFrL2ZpbGVzL2RlZmF1bHQueGttIGIvVG9v
bHMvZmxhdHBhay9maWxlcy9kZWZhdWx0LnhrbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDE2ZjZiMDhmNmQ4MDg1ODA5NjhiYTAyMjU2ZDkwNzVkNDhhNDdkMC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMApI
Y21WP2QwMDAwMQoKbGl0ZXJhbCAxMjAzMgp6Y21jZ3lZajdMYWItdWU7NUZraVZsMyVmRmNTXnJ4
KiROWTJMNHNpR3JVQyh3cHp0JlJsOUgyJXJBU3okTVVnWn0Kek4+LWY0Tn5WKF5vd1VnYE56LUB5
dERVfj5SQ1V3TlJER3FYYD4pZ0tZZFc0emBmP202YW9kQCtvdk5MJS0qQGo+Cno+fmFtSXMlTyZX
OURlKHFkKE9TKktLOTxiaStsTHVnPWc9SUA1aTIzTikwR1dlTX1YVTEwMFYyREt5fGl1U1BCNAp6
cFUyalkrUThSYDk9fDY3WSotSUg5QSRjWl9uN0NXKWMkd0hSQmk4S1dvelhFeWR4Xk51P3RNN082
TzglcXJLTWMKemJSMVJETj1HI3sjI0otRndZbDVmK0U2TzREIXUhSllPTyVJIUs/PDJ8SUdUT2oq
MnFSKilDJE5jNk9IKWN4IUxGCnooKj41VTVXVSMlUkdtdyFvbDdUe0hgYlNUSXk9WG94IW1kUVVV
XmktX3dQcVVOKT1tcWxgQUd3NUVxaCRqNilfTQp6OE9TNmczel5DbFElTU55UXRvdVEpb0FDWVJq
dlRQMHtqWl9FNU5TK3pYSlJVQEdIUXQwS1dxSzNoKm5XKy1BRjMKenRLezMyVHBvVVRffnFmM2ho
SDlrZEhDaHdteG9eLWV0RyFpUT5re1BQXmA/Zk4rYDNFbn0qKnN7SEViSTRabXNsCnpPflk+KmUk
KClxaFRuODUqPSlCOzx3a1lCbEI9e15qZUllbVlxVnl7JHJRd2VxI0AmdzJ9bE1xM0NUakhYM0Q4
Iwp6dHkoRiFAfEFNQUZ7I1JwRU15QU9ubENyVGZmSkFuQnYmWG1RYX40eWg5bl97TkBieXZXfTgt
OHZ1KSZzQD19TzMKemxgN31qeHpiIVNTMVEpWnJFK189SSR0V0RZVUhjc016UGpKZCUkPDAoUU1f
TGhfX09rRFV8QmY7KFNBPyNfVzhmCnpRay1jd1hHYHMzdClMM14jYWQmd1BAQWlANms0Uz9tdldR
VWBGMyVrVUt4WCZYdyg7KiRueSM0R21ZR1EzeiZzVwp6bTE/dDwoeTlDY2BZdjVyb1UxaDxgRmdk
e1lTJGFOKzF5O0NTI1FrTzNpWCswdCh+dG8mZVJjQ0JpQ3hyJSsoNnsKemBMLSQqRH4tOS1fI18x
UmpaZSpgQ1gkZDgjRCUwRzxCJG5SMV9IWVkqaUZETDFHXjBER08pfFFFKDV5Xj5AdSorCnp6JUIj
MzREMlJoSHduOCoqaUZLMjVfWGZZbn1wcFk+P1VEMTNBLSVwdmFyai1FKF5PWD82Uj1TIVkmS0RF
Yk93ZAp6bkBYYlgoYSRPTGF8LT5PTE8tWF8mbmZoQzNqT1JOLTlgVm43IU5NJi0wXkNtd1RSfGQp
bllyPm5yfTJxWEJ5MnAKekg8XlZAJkFGKjBCbjVGSFh+O05hMCtOQURMU1VESW9lTWhgYn1zQigq
dHhLQ1ZkdWltZyZxM0NienpyPVReZT8yCnoqcmoyWWhGdXpWWTFwTTxteGYmJGNIXiljaHV0e3Ij
JGgpT3lLJmYhIXcmdTdxQ1pecGhsfkRqKEh9MVEhJHA2JQp6PW5yPmRMTyhQNGwqXylaN0hqaS1t
UCR7eVhFX0VjKXBtfktwaC1sPGJDdWE5JDRhP0BNO3AmfFdxSjFycGJLMEMKenJoIUdeSUlzenYw
TWFmNEpPaThyJkk3WitJcDdxcSZTeExrITFLKWZhek4oUzB5NGg+a29uQzNuY3Btc2BJVWdvCno/
LVk+dm00VkRwS21XaWRAdGlaQyg/STV2MlFyQHBBb0gwOUdNXmZkYEJjNjZKRlpyP0VeY3BoYn57
U2wjfFBDaQp6R058Z2M7IT5yIVBeQHNTLW4+RyFFZHJaQyluMlNpeH0mQnNrTHZrJFpUK2NUNkBp
XmlUaURTanA+bVoqREt9a2cKeiYqZVFeTjlDOGRjYklQWndrVWkrbTVYT0VtdzB2cVRyPHZmeCl3
Nmo8PlRMPVlMKF9AKzl4PFJKdi09Rl82YVQ9CnpDJXJnTkRzQDtqQD1GLUojaWp8P01MaiRwWism
bilkcT02R3c5blVUP1BrNT1kM2czUSltd3M0IUlMSClieUQzJQp6cFVPY2UmbkxLVURTSzNXTXZZ
Sk5XPExKOSRIdmsxUjw9NkNhIX4xVFQ7NXUkPzZ9eSopcmdNQ0h9Pk4zKT52ZzkKejUhKWxpbUlH
Y2dfSEU1TjlFfWJyaGJ1ayQoPzt0PkVKcnpMdzdBTipuLSQjK2RmMT84ZCs2blhIcjhWeiZiNHtl
CnpqMSVkclFUNyRgKnpJb1VaZDAraXFZbFRCTmQpPUcqa081ZyNGUURhU3VYbDdoT3JpZjN9OWFa
I1ghdGF1XyREfgp6TEh8fGlgQ01oR0lFTXdvKUY7XkFJK2cqbVhHam01KmhjaloxZ2pMckJ4MiFz
KWlJQmY0VC1ITDI8XytyQUVVSngKenBUdy09TWYoaD9jQnh0UG99ZEZgP20hR3krXzdTKV5NU1Nu
V3Brc3x0KGZJbExuPklDeDhgLVR3emJyMDY7cjIyCnpPJUplTXJgaEpaN2x1NSY/Z2NiQzt5NUk2
YUorZl8lcjxCSHF1RiYjUTRCe2Z1OSlwdTB9O28lRDtPVUpYIXUkRwp6LV5SZklFellRUVVwekR4
TCshPFZVSzk7RmZTcTU9IWNHKkk0TlV8IXUrVUY3Pkoodn1QP3NuK3RPS1k9NEUxbUAKejdleW9S
dio4emtVaiUrT3szMjI3LVVEXmleV3hJWCt5WGtkby1jRlloYnwxPzE2UDxJTkRQcCRVNl5+T3hC
N2hqCnp6cVQjTSY4QGJyampsbDMrR3lLajJpbiNqS2ohaGhjezdMR0NkfEZJZGJ7fVRYPUJHNGs/
fFhSJlUpPEBjK1R8TAp6bHNVaX5xdSs2JHR5O3pFb1pudklkWkloPDlRKVZKX193Mjs3VXBGPFZo
ODU2Z3FvPyglUX0za1dreHVeT0ZxSCYKel41JiZHMTk9OWZwMH57VEg9ODMoeyRAVDI9SWB+I0o7
RDZIYiN2PnNXKmdzWC03RSs1NEM9OzQodGpBaGRpfXQ+CnojV2ZjNW0zbHw4e09hODRWcXdXX2tP
SmorZCEoRHlHM3BHTXpDZEkpXlRvdEI5TClFJEFNPyVmMihIdD9IcSgxTwp6PGpaKjNXP1U7Q1Bf
MUdFSkxxPENpTGFTVXhtc2FLQDdSSkpnIXNjXzZSTmtnOXJsaVZyPFhPJHRqayZoK1gmWnUKej47
biQwb3lhc2UkS01nR1hRTUxUa19yMShgdzA2YntsUzhMKWY8UUN0PXteR3pPdkN6TX15QF40fCEk
dT5tT2FPCnpRUTZ4ZktZbHxBPyF9K091RlU9Pj5oZ3A4WGo5ZnVzbl87VlhMfSNwQmczQnUtJCNB
MXFgP3BmYH44biNRS0wxKwp6bF9UN3kwZURvbndnPi07X1ElTFc4fWZRMSNKe1kwcUw9PTloPHti
e3A8ZXBlTGozRVI1QkpqRjREbVpPa0xqXz0KekB7ajhIdSFsd2J0aW8tPTg5KHskIVdscExodkAm
fEt+Iy1RPlRtNUl0VXZnSGBoJEQqQTdGbSlrMj1PYkV9WS0yCnpjcU11cTE+cVZkaGQ7Knd1YU89
JV9BZkNXWXV9MmdlRlVNQFBseCNEZEt9SjN8QWBSKWIpUiFPUChLeW8qTG9jSgp6PE5DMT5mNFJw
XjElNW9sZjN3SDthVmhvYjVkVkNTcWFMe2JPbzshTSZuPjNeV1FoTlVhQmtzd3tZOzRlc1BLZWkK
eiNfejklXyRQZz9yLW9rKUBsV3wmY2oyI3VfJTkyTyVncGppQV54SzlMNzh9ZEhwRzlgPEVBXitY
RzhvaWc/c1Y7CnptQ3RwS2U9VkgtJi1WRzc5I15gKFVLUUBPJilAZGFWVTA0cylaPHtfdWdtIUk/
NyFsMzlwTXszKlg0aUo9ZW04fgp6Pn5UfSFmQStjZHt9LVFZZ01hbjhfV3k/UExEUVk7LStacTl8
Sn49PnwzN0BMe3JeKz1WZnI2WT5QQz17RCluRSYKekZ+aktte0BkcWgzOGw3IV85dkJrQ2N4Pj80
UkUmQ1BMTHlfLTV8I155QkZrVylKczgqXyR+K2VzOFlgY0kzTXtkCnowblJAOEshQ0ZXe3pDWEw/
c0A2Pyl0aXJDcHkkXkIqWW00ej1DOX0xME4zLVlhRihhJSo4dGJedDhqI2BeIXlzJgp6ZWBtJU1U
R3pDJV8wOU1aJlFGSyVhPj5pP2FvdjRiS2ZIOV5lT055e1pZSTJGa0RDUSFwdlVuZGp3e3lWY3RP
ViUKej97UEROMlljTCVzNj53XndFYSt6NHsxSyE8RUJMKTdYSHlqY2VaPE9NP0t7OCNyNGV7Xj89
N3VFTDY4dkpMKkE/CnpqflRBbDdpa34xZkw+cH41M0RjWHRVYzVKTiFsO01rMSVyQzQlMjxVa00t
REZLVmQ+VUVtKCMxPzslSWtfUjVMOQp6b2ZHU3VvISNVNVg5eGJ5Zlp0RzVhcjZBZmBwKCt1QCVo
JUhDVWZARXkoa2x9cCgrS3t7bWN5YXtBUDdoPylmcU8KekxBZjZYSnx5PU96PSEyTjEzV0FEbGZZ
d2dwOU1aOV9meD4qYS1SZTsxZVBAaFQkMjBtMSloLW1JTzN3dlcpTGB2Cnp2NXRFeV8tKmVRKmdq
JEc1OWx2THg3YkpEZnYoc2AtLVdLKE42KzdqK0l7cj1IaEhGeGVoPDMmS0tnYSY9S0FRagp6cHNW
LU1aJHNCR2RpN3I1YjhgUUY7MTU5OVotPncoN1dUbVpWQXwrRntnK3tyR2Q+Nk9gMjQ5X2VlfG8p
NzVlQygKemZeTWRke3ljUUVlZWBTNG1IT3pQaFZFMSFKJTUrdXd+VFBWOyoqJUY3YF4lKTtDSVhZ
QmZ0bWJ7YC1MK2ZeZSRnCnp5dSkkd0tKWDdoIXVmcHd4K25ZU3BNPyZ1QjUkIUBmaUItaWUranlV
S0tnVWVQNTA0bkxSYWdmelglO1ppMGhjJgp6MzRDMWMtdnhZKytgays2ZUd0fn4/QD5RfnA5X0Jm
PFgkQnhfaGFze1ZaaytrXkV9N01zUD96QHlifGBtNHg2QkcKenRgNkokRV5MQ3JgOCNhJGQkMCkj
PWsmMTZANTNmMm9hZShmZSpsfUhhUEFNPXsyXj9EIXUyMypeOTklaGc9PDlFCno9OHM/IzZze1gj
bj1pczlDfHBhekhoJkQ4cG0yUyR0UncxcT0tS3shLXs4Mzl6TCRHcC1nQSUzZUp9NjFwWERBbQp6
b0c8czhMRSpZV2QreHV2Qys5dSl5ND9UcnA4SWFAI2whaDxLTj1MU1NHNERRMF5jMlkmdnlkOEMt
OSM4ZjQmcCYKem9fa2c5VXdRdm9Bb3JANGJ5ZElmVk9aZlM1JDl0NmB3R1Z9JDFiMTBwTSEqQmM/
SkdLO28yTHZgNGlYI2gzaGYwCnoocnRONm15YjBeQElrPngxUm5yO3dtKzxPamB+TW54RDM3bjFa
Qzg7aTUzMj5WO09kTExod3ZrIVFZO15yK09YMgp6eyFJdXIxZT0yTWY9PnZ4MVEhTHtmKHdFeGc4
TStQNCE3LWRFYTRxaEBPSHQrMWI7Xy1VVjtQcSRtO2h5KChTT2gKekFhPHdWJEcmN2duIWQhRUZL
T2RJUXw/S3tKKW1XcylPJGFjZV9tfFgxKW1iIS1qQ3x8ST5NaDN6OXtpczVXRmIzCnpDVSZRVktQ
fGk/ezV5ZHIyQnFGRHgpWHgkN2tuO1leRnlNYDJ+Rz5YT1lsai1Gfk1FST1MUFEoT2JWdDJqfG5+
awp6Xnh9Q1o/JTglazNmdHUhcVBxaV82NVU7KnlBJFp5LTZ2YDk1IT9pTmBGPmIqY01JK2FFe0to
MV9wSW96MnkhM0EKejdgVFRidThIMzM4IXo5WT13fTNIMXh0YytLKENDP2lTOEUhVWxlPylYTEQ3
NXw2bmB0O3lUMGloUyEoJXtZaWIjCnpAbmQ4QkBjTyMrRzI0aTdkaExgS1VKeHRgez02WFRQa1li
ckd2TGdSSXpFQCl7bGBWYGFqI0UqTUV2ZytUb1FhLQp6QFRfMTQ9PXBsJUowZlllcGV1TXImPURM
RWowJHBXR1FPX2hDaj43R3pFfCoqZn1heG5HKkRPUUNqWGN4RkF1JSoKelA5eENtPEYjaXtAcHRW
fXtuNjA2JTNxZXY3M2M1Uk15PjN0LVdNeHstd0RsR0NQfjcoZ2A9KkQ0fVdqSXhWXj1uCnoqN15D
YWNSOHhPeXQkMEl3NVE+SFlvcFdJIyYySCE2fnA8Ym8kYnloX21jPiVjajB7MDkpSXNRcXM2RzlU
aT9NKAp6WXBgZDxHT05xJCohLUVkR24wVGwmKVJiTHtRQm0zI19uSTxaPkZzSEBLeVBzaFVBITw/
UVpSRGtNYlNuJntmKj0KekQ7eDh5WnRkLUtNJDRUbUowcWppPXVaVHdoZERQa2kxKClCK2JnTiQj
R35xY3g1WjxhUWM8X1ZoJCpJRHVxTT5sCnpWYEZRYmpaMi1+Xl9BdFppPUVaPXleQ1lydkNYYVMj
cFI3TEI7cF90eytxd2Bvdm16a1ZybmRmbXsmVkhFOFg/Jgp6LVNzVyoyWnoqYlhTMzU/VWx+UEY7
OEFzTVZ8bkVRQGJjT144ZmllQz97PT1aTnJTMG1sKVNUdkNeViolQE5yYkYKei1veXNkIyk1JUdT
WTUtUDRaSClqZDt4Iz40dmY9YmUpPFAzS1loKCZJIT15WjxMJncxOVl9WHtJIX4+OXQ4fF9zCnoh
fW17bzM/N2lxeCpPeTRabVZtI2lnRkU2VWVqcmUkdzgyZ2I9STB1bG90QF4zcCFyKjVxPERHSTZt
OV48KCYkfAp6bGhOXztecUhUMkJUKFBoYmJXYysldW9NRCEyZTZ5emdqTkA+Tl5yaHpvR3FHRiEy
M2YzKmBUMkNMSmYoe1BkP0MKenpkYVk2N3dgPTZecUhVRDRkajFUbShTQmBlKT1gRWs+Nml1UVU2
TUBmY28+SjlVdTJNP05eV3xiaCE2KUY0ezQhCnpYNylCJCVzX2ZvVH57dzN4KCo4clJhXj1EYVUk
VmFMVWY2WnZ2akZmOzB8PWJpRHwpYyEzbTU8Pk5DUDgxKyMpdgp6Q093cmpKZTNtRWBTR2tBaE0y
ezNkZXJsKjg8QSVzeDdVYHtJczNaRzQ4MHR8XkI0OHY4XkkwRktoWH43OEZoWEAKem9nWXhnMmh7
TmFDJlcoMjJkPzctPmlCP0RDZiZyeGJDSlN6ZXRaSihvZXdSVXolTHNwN2lUM0NfPk97ZVFOfEFF
CnpzPGJgTVJTQkFNYWpyX1pESHJGZWdxdzE0dUY3eUo3dzBPND4tX2orVjZAdkcjaDU+WWF5aGFT
RHIpMldsKEVENAp6RHtZVlNTQXdRb29XQnhvJUVrRkI7aWc9aXpjTzZQI2tvdiFLQj5lNDF7Qk5W
bGFqIVIwLWtAPV9CZ0w4WHYpUVQKekUjYW5Jb1l4WD0lRWZzdDtpZz1pPVFQfXUlT0A/TlZ6d1JP
Y3RtK1BKQmQ0Kz1oK2YhKEJecWhCRn10Y09qPG5WCnpMKFgkPE00b311VD5BfiRGOyFlJC1fX0dR
IyFQYSFVfnxrMkk+O0xSbUI0ZD1aem5pd2k1UDYyJHQzYmpDWHMjMQp6YmVfV2A9bE0qTlVPLXZP
RjJJNWgyaFZZbUdpS1dKSmZ9e19TeHpGKWJgbyhHdGFEfDFkRyh6QTspb3EjOUVzbDgKeldrNVdh
Tjt7cXZIQ1JQbSRYZ20yNUFBcXY2PyUoalJ9REBIPF9aWmx0ajdsOTtDV1YpSnxVUlYkaTZpQnEo
c2xCCnpwWlRRKWktPnp6Kk18IX1YUDwtYExWN2B1MSlLcnZ0VHZXNko2S0M/XntWPTlKT0J8NjRx
VS1+ZnJHakNZYT04MAp6ck97bCR5QFg/VHQ9QTZ3WTJrZj82WHt4UzlQIWhLeXxkUHA8I1F9STtA
blZRSylHTDN0MiVSQ1pvPlN3YEY3WFIKekx3Y3tuSldMXng9blp4S0Z6UkhQR0VEcllraGZkTDts
TnBNc2Z2bVcrKSRzIzxvWW93JDc+NnpqKFdSZ2FjO284Ck1ra3NkfmJJSWlZMDgzSzAyPjx7OQoK
ZGlmZiAtLWdpdCBhL1Rvb2xzL2ZsYXRwYWsvZmlsZXMvaHR0cGQtYXV0b2dlbi5zaCBiL1Rvb2xz
L2ZsYXRwYWsvZmlsZXMvaHR0cGQtYXV0b2dlbi5zaApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUK
aW5kZXggMWMwYzQ4MzA1MWZiZGY4NjA0Yjk0NGE2MzUxMWM0ZTEyMWVhZWY0ZC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9mbGF0cGFrL2ZpbGVz
L2h0dHBkLWF1dG9nZW4uc2gKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWF1dG9tYWtl
IC0tYWRkLW1pc3NpbmcKLWF1dG9yZWNvbmYgLS1pbnN0YWxsCmRpZmYgLS1naXQgYS9Ub29scy9m
bGF0cGFrL2ZsYXRwYWt1dGlscy5weSBiL1Rvb2xzL2ZsYXRwYWsvZmxhdHBha3V0aWxzLnB5CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTIxMzE4MDM1NDRiOWRlM2M5ZTgwNGYzZmQ4
OGEzYWUxZjIxYTZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1Rvb2xzL2ZsYXRwYWsvZmxhdHBha3V0aWxzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsOTc3
ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCi0jCi0jIFRoaXMgcHJv
Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSMg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YwotIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSMgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIyBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIyBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
IyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIwotIyBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCi0jIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUg
dG8gdGhlCi0jIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Qs
IEZpZnRoIEZsb29yLAotIyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLWltcG9ydCBhcmdw
YXJzZQotaW1wb3J0IGxvZ2dpbmcKLXRyeToKLSAgICBpbXBvcnQgY29uZmlncGFyc2VyCi1leGNl
cHQgSW1wb3J0RXJyb3I6Ci0gICAgaW1wb3J0IENvbmZpZ1BhcnNlciBhcyBjb25maWdwYXJzZXIK
LWZyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIKLWltcG9ydCBlcnJubwotaW1w
b3J0IGpzb24KLWltcG9ydCBtdWx0aXByb2Nlc3NpbmcKLWltcG9ydCBvcwotaW1wb3J0IHNobGV4
Ci1pbXBvcnQgc2h1dGlsCi1pbXBvcnQgc2lnbmFsCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0
IHN5cwotaW1wb3J0IHRlbXBmaWxlCi1pbXBvcnQgcmUKLQotZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLnN5c3RlbWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKLWZyb20gd2Via2l0cHkucG9ydC5m
YWN0b3J5IGltcG9ydCBQb3J0RmFjdG9yeQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmxv
Z3V0aWxzIGltcG9ydCBjb25maWd1cmVfbG9nZ2luZwotCi10cnk6Ci0gICAgZnJvbSB1cmxsaWIu
cGFyc2UgaW1wb3J0IHVybHBhcnNlICAjIHB5bGludDogZGlzYWJsZT1FMDYxMQotZXhjZXB0IElt
cG9ydEVycm9yOgotICAgIGZyb20gdXJscGFyc2UgaW1wb3J0IHVybHBhcnNlCi0KLXRyeToKLSAg
ICBmcm9tIHVybGxpYi5yZXF1ZXN0IGltcG9ydCB1cmxvcGVuICAjIHB5bGludDogZGlzYWJsZT1F
MDYxMQotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGZyb20gdXJsbGliMiBpbXBvcnQgdXJsb3Bl
bgotCi1GTEFUUEFLX1JFUSA9IFsKLSAgICAoImZsYXRwYWsiLCAiMC4xMC4wIiksCi0gICAgKCJm
bGF0cGFrLWJ1aWxkZXIiLCAiMC4xMC4wIiksCi1dCi0KLUZMQVRQQUtfVkVSU0lPTiA9IHt9Ci0K
LVdQRV9NQU5JRkVTVF9NQVAgPSB7Ci0gICAgInF0IjogIm9yZy53ZWJraXQuV1BFUVQueWFtbCIs
Ci19Ci0KLXNjcmlwdGRpciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxl
X18pKQotX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQotCi0KLWNsYXNzIENvbG9y
czoKLSAgICBIRUFERVIgPSAiXDAzM1s5NW0iCi0gICAgT0tCTFVFID0gIlwwMzNbOTRtIgotICAg
IE9LR1JFRU4gPSAiXDAzM1s5Mm0iCi0gICAgV0FSTklORyA9ICJcMDMzWzkzbSIKLSAgICBGQUlM
ID0gIlwwMzNbOTFtIgotICAgIEVOREMgPSAiXDAzM1swbSIKLQotCi1jbGFzcyBDb25zb2xlOgot
Ci0gICAgcXVpZXQgPSBGYWxzZQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIG1lc3NhZ2Uo
Y2xzLCBzdHJfZm9ybWF0LCAqYXJncyk6Ci0gICAgICAgIGlmIGNscy5xdWlldDoKLSAgICAgICAg
ICAgIHJldHVybgotCi0gICAgICAgIGlmIGFyZ3M6Ci0gICAgICAgICAgICBwcmludChzdHJfZm9y
bWF0ICUgYXJncykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50KHN0cl9mb3JtYXQp
Ci0KLSAgICAgICAgIyBGbHVzaCBzbyB0aGF0IG1lc3NhZ2VzIGFyZSBwcmludGVkIGF0IHRoZSBy
aWdodCB0aW1lCi0gICAgICAgICMgYXMgd2UgdXNlIG1hbnkgc3VicHJvY2Vzc2VzLgotICAgICAg
ICBzeXMuc3Rkb3V0LmZsdXNoKCkKLQotCi1kZWYgY2hlY2tfZmxhdHBhayh2ZXJib3NlPVRydWUp
OgotICAgICMgRmxhdHBhayBpcyBvbmx5IHN1cHBvcnRlZCBvbiBMaW51eC4KLSAgICBpZiBub3Qg
c3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoImxpbnV4Iik6Ci0gICAgICAgIHJldHVybiBGYWxzZQot
Ci0gICAgZm9yIGFwcCwgcmVxdWlyZWRfdmVyc2lvbiBpbiBGTEFUUEFLX1JFUToKLSAgICAgICAg
dHJ5OgotICAgICAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW2FwcCwg
Ii0tdmVyc2lvbiJdKQotICAgICAgICBleGNlcHQgKHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vy
cm9yLCBPU0Vycm9yKToKLSAgICAgICAgICAgIGlmIHZlcmJvc2U6Ci0gICAgICAgICAgICAgICAg
Q29uc29sZS5tZXNzYWdlKCJcbiVzWW91IG5lZWQgdG8gaW5zdGFsbCAlcyA+PSAlcyIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIiB0byBiZSBhYmxlIHRvIHVzZSB0aGUgJyVzJyBz
Y3JpcHQuXG5cbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIllvdSBjYW4gZmlu
ZCBzb21lIGluZm9ybWF0aW9ucyBhYm91dCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIiBob3cgdG8gaW5zdGFsbCBpdCBmb3IgeW91ciBkaXN0cmlidXRpb24gYXQ6XG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgKiBodHRwOi8vZmxhdHBhay5vcmcvJXNc
biIsIENvbG9ycy5GQUlMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHAsIHJl
cXVpcmVkX3ZlcnNpb24sIHN5cy5hcmd2WzBdLCBDb2xvcnMuRU5EQykKLSAgICAgICAgICAgIHJl
dHVybiBGYWxzZQotCi0gICAgICAgIGRlZiBjb21wYXJhYmxlX3ZlcnNpb24odmVyc2lvbik6Ci0g
ICAgICAgICAgICByZXR1cm4gdHVwbGUobWFwKGludCwgKHZlcnNpb24uc3BsaXQoIi4iKSkpKQot
Ci0gICAgICAgIHZlcnNpb24gPSBvdXRwdXQuZGVjb2RlKCJ1dGYtOCIpLnNwbGl0KCIgIilbMV0u
c3RyaXAoIlxuIikKLSAgICAgICAgY3VycmVudCA9IGNvbXBhcmFibGVfdmVyc2lvbih2ZXJzaW9u
KQotICAgICAgICBGTEFUUEFLX1ZFUlNJT05bYXBwXSA9IGN1cnJlbnQKLSAgICAgICAgaWYgY3Vy
cmVudCA8IGNvbXBhcmFibGVfdmVyc2lvbihyZXF1aXJlZF92ZXJzaW9uKToKLSAgICAgICAgICAg
IENvbnNvbGUubWVzc2FnZSgiXG4lcyVzICVzIHJlcXVpcmVkIGJ1dCAlcyBmb3VuZC4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIiBQbGVhc2UgdXBkYXRlIGFuZCB0cnkgYWdhaW4lc1xu
IiwgQ29sb3JzLkZBSUwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwLCByZXF1aXJl
ZF92ZXJzaW9uLCB2ZXJzaW9uLCBDb2xvcnMuRU5EQykKLSAgICAgICAgICAgIHJldHVybiBGYWxz
ZQotCi0gICAgcmV0dXJuIFRydWUKLQotCi1kZWYgcmVtb3ZlX2V4dGVuc2lvbl9wb2ludHMoYXJy
YXkpOgotICAgIHJlc3VsdF9hcmdzID0gW10KLSAgICBmb3IgYXJnIGluIGFycmF5OgotICAgICAg
ICBpZihub3QgYXJnLnN0YXJ0c3dpdGgoJy0tZXh0ZW5zaW9uJykpOgotICAgICAgICAgICAgcmVz
dWx0X2FyZ3MuYXBwZW5kKGFyZykKLSAgICByZXR1cm4gcmVzdWx0X2FyZ3MKLQotCi1kZWYgcmVt
b3ZlX2NvbW1lbnRzKHN0cmluZyk6Ci0gICAgcGF0dGVybiA9IHIiKFwiLio/XCJ8XCcuKj9cJyl8
KC9cKi4qP1wqL3wvL1teXHJcbl0qJCkiCi0gICAgIyBmaXJzdCBncm91cCBjYXB0dXJlcyBxdW90
ZWQgc3RyaW5ncyAoZG91YmxlIG9yIHNpbmdsZSkKLSAgICAjIHNlY29uZCBncm91cCBjYXB0dXJl
cyBjb21tZW50cyAoLy9zaW5nbGUtbGluZSBvciAvKiBtdWx0aS1saW5lICovKQotICAgIHJlZ2V4
ID0gcmUuY29tcGlsZShwYXR0ZXJuLCByZS5NVUxUSUxJTkUgfCByZS5ET1RBTEwpCi0KLSAgICBk
ZWYgX3JlcGxhY2VyKG1hdGNoKToKLSAgICAgICAgIyBpZiB0aGUgMm5kIGdyb3VwIChjYXB0dXJp
bmcgY29tbWVudHMpIGlzIG5vdCBOb25lLAotICAgICAgICAjIGl0IG1lYW5zIHdlIGhhdmUgY2Fw
dHVyZWQgYSBub24tcXVvdGVkIChyZWFsKSBjb21tZW50IHN0cmluZy4KLSAgICAgICAgaWYgbWF0
Y2guZ3JvdXAoMikgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gIiIgICMgc28gd2Ug
d2lsbCByZXR1cm4gZW1wdHkgdG8gcmVtb3ZlIHRoZSBjb21tZW50Ci0gICAgICAgIGVsc2U6ICAj
IG90aGVyd2lzZSwgd2Ugd2lsbCByZXR1cm4gdGhlIDFzdCBncm91cAotICAgICAgICAgICAgcmV0
dXJuIG1hdGNoLmdyb3VwKDEpICAjIGNhcHR1cmVkIHF1b3RlZC1zdHJpbmcKLSAgICByZXR1cm4g
cmVnZXguc3ViKF9yZXBsYWNlciwgc3RyaW5nKQotCi0KLWRlZiBsb2FkX21hbmlmZXN0KG1hbmlm
ZXN0X3BhdGgsIHBvcnRfbmFtZT1Ob25lLCBjb21tYW5kPU5vbmUpOgotICAgIGlzX3lhbWwgPSBt
YW5pZmVzdF9wYXRoLmVuZHN3aXRoKCcueWFtbCcpCi0gICAgd2l0aCBvcGVuKG1hbmlmZXN0X3Bh
dGgsICJyIikgYXMgbXI6Ci0gICAgICAgIGNvbnRlbnRzID0gbXIucmVhZCgpCi0KLSAgICAgICAg
Y29udGVudHMgPSBjb250ZW50cyAlIHsiQ09NTUFORCI6IGNvbW1hbmQsICJQT1JUTkFNRSI6IHBv
cnRfbmFtZX0KLSAgICAgICAgaWYgaXNfeWFtbDoKLSAgICAgICAgICAgIGltcG9ydCB5YW1sCi0g
ICAgICAgICAgICB5YW1sX2xvYWQgPSBnZXRhdHRyKHlhbWwsICJzYWZlX2xvYWQiLCB5YW1sLmxv
YWQpCi0gICAgICAgICAgICBtYW5pZmVzdCA9IHlhbWxfbG9hZChjb250ZW50cykKLSAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgIGNvbnRlbnRzID0gcmVtb3ZlX2NvbW1lbnRzKGNvbnRlbnRzKQot
ICAgICAgICAgICAgbWFuaWZlc3QgPSBqc29uLmxvYWRzKGNvbnRlbnRzKQotCi0gICAgcmV0dXJu
IG1hbmlmZXN0Ci0KLQotZGVmIGV4cGFuZF9zdWJtb2R1bGVzX3JlY3Vyc2UobW9kdWxlcywgbWFu
aWZlc3RfcGF0aCwgcG9ydF9uYW1lLCBjb21tYW5kKToKLSAgICBhbGxfbW9kdWxlcyA9IFtdCi0g
ICAgaWYgdHlwZShtb2R1bGVzKSBpcyBzdHI6Ci0gICAgICAgIHN1Ym1hbmlmZXN0X3BhdGggPSBv
cy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKG1hbmlmZXN0X3BhdGgpLCBtb2R1bGVzKQotICAg
ICAgICBzdWJtYW5pZmVzdCA9IGxvYWRfbWFuaWZlc3Qoc3VibWFuaWZlc3RfcGF0aCwgcG9ydF9u
YW1lPXBvcnRfbmFtZSwgY29tbWFuZD1jb21tYW5kKQotICAgICAgICBhbGxfbW9kdWxlcy5leHRl
bmQoZXhwYW5kX3N1Ym1vZHVsZXNfcmVjdXJzZShzdWJtYW5pZmVzdCwgc3VibWFuaWZlc3RfcGF0
aCwgcG9ydF9uYW1lLCBjb21tYW5kKSkKLSAgICAgICAgcmV0dXJuIGFsbF9tb2R1bGVzCi0KLSAg
ICAjIFRoZSBsYXN0IHJlY3Vyc2UgbWFuaWZlc3QgZXhwYW5kIGl0ZXJhdGlvbiBtaWdodCBsZWFk
IHRvIGEgc2luZ2xlIG1vZHVsZS4KLSAgICBpZiBub3QgaXNpbnN0YW5jZShtb2R1bGVzLCBsaXN0
KToKLSAgICAgICAgYWxsX21vZHVsZXMuYXBwZW5kKG1vZHVsZXMpCi0gICAgICAgIHJldHVybiBh
bGxfbW9kdWxlcwotCi0gICAgZm9yIG1vZHVsZSBpbiBtb2R1bGVzOgotICAgICAgICBpZiB0eXBl
KG1vZHVsZSkgaXMgc3RyOgotICAgICAgICAgICAgc3VibWFuaWZlc3RfcGF0aCA9IG9zLnBhdGgu
am9pbihvcy5wYXRoLmRpcm5hbWUobWFuaWZlc3RfcGF0aCksIG1vZHVsZSkKLSAgICAgICAgICAg
IHN1Ym1hbmlmZXN0ID0gbG9hZF9tYW5pZmVzdChzdWJtYW5pZmVzdF9wYXRoLCBwb3J0X25hbWU9
cG9ydF9uYW1lLCBjb21tYW5kPWNvbW1hbmQpCi0gICAgICAgICAgICBhbGxfbW9kdWxlcy5leHRl
bmQoZXhwYW5kX3N1Ym1vZHVsZXNfcmVjdXJzZShzdWJtYW5pZmVzdCwgc3VibWFuaWZlc3RfcGF0
aCwgcG9ydF9uYW1lLCBjb21tYW5kKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFsbF9t
b2R1bGVzLmFwcGVuZChtb2R1bGUpCi0KLSAgICByZXR1cm4gYWxsX21vZHVsZXMKLQotZGVmIGV4
cGFuZF9tYW5pZmVzdChtYW5pZmVzdF9wYXRoLCBvdXRmaWxlLCBwb3J0X25hbWUsIHNvdXJjZV9y
b290LCBjb21tYW5kKToKLSAgICAiIiJDcmVhdGVzIHRoZSBtYW5pZmVzdCBmaWxlLiIiIgotICAg
IHRyeToKLSAgICAgICAgb3MucmVtb3ZlKG91dGZpbGUpCi0gICAgZXhjZXB0IE9TRXJyb3I6Ci0g
ICAgICAgIHBhc3MKLQotICAgIG1hbmlmZXN0ID0gbG9hZF9tYW5pZmVzdChtYW5pZmVzdF9wYXRo
LCBwb3J0X25hbWU9cG9ydF9uYW1lLCBjb21tYW5kPWNvbW1hbmQpCi0gICAgaWYgbm90IG1hbmlm
ZXN0OgotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGlmICJzZGstaGFzaCIgaW4gbWFuaWZl
c3Q6Ci0gICAgICAgIGRlbCBtYW5pZmVzdFsic2RrLWhhc2giXQotICAgIGlmICJydW50aW1lLWhh
c2giIGluIG1hbmlmZXN0OgotICAgICAgICBkZWwgbWFuaWZlc3RbInJ1bnRpbWUtaGFzaCJdCi0K
LSAgICBhbGxfbW9kdWxlcyA9IFtdCi0KLSAgICBvdmVycmlkZW5fbW9kdWxlcyA9IFtdCi0gICAg
aWYgIldFQktJVF9FWFRSQV9NT0RVTEVTRVRTIiBpbiBvcy5lbnZpcm9uOgotICAgICAgICBvdmVy
cmlkZW5fbW9kdWxlcyA9IGxvYWRfbWFuaWZlc3Qob3MuZW52aXJvblsiV0VCS0lUX0VYVFJBX01P
RFVMRVNFVFMiXSkKLSAgICAgICAgaWYgbm90IG92ZXJyaWRlbl9tb2R1bGVzOgotICAgICAgICAg
ICAgb3ZlcnJpZGVuX21vZHVsZXMgPSBbXQotICAgIGZvciBtb2R1bGVzIGluIG1hbmlmZXN0WyJt
b2R1bGVzIl06Ci0gICAgICAgIG1vZHVsZXMgPSBleHBhbmRfc3VibW9kdWxlc19yZWN1cnNlKG1v
ZHVsZXMsIG1hbmlmZXN0X3BhdGgsIHBvcnRfbmFtZSwgY29tbWFuZCkKLQotICAgICAgICBpZiBu
b3QgaXNpbnN0YW5jZShtb2R1bGVzLCBsaXN0KToKLSAgICAgICAgICAgIG1vZHVsZXMgPSBbbW9k
dWxlc10KLQotICAgICAgICBmb3IgbW9kdWxlIGluIG1vZHVsZXM6Ci0gICAgICAgICAgICBmb3Ig
b3ZlcnJpZGVuX21vZHVsZSBpbiBvdmVycmlkZW5fbW9kdWxlczoKLSAgICAgICAgICAgICAgICBp
ZiBtb2R1bGVbJ25hbWUnXSA9PSBvdmVycmlkZW5fbW9kdWxlWyduYW1lJ106Ci0gICAgICAgICAg
ICAgICAgICAgIG1vZHVsZSA9IG92ZXJyaWRlbl9tb2R1bGUKLSAgICAgICAgICAgICAgICAgICAg
b3ZlcnJpZGVuX21vZHVsZXMucmVtb3ZlKG1vZHVsZSkKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWsKLQotICAgICAgICAgICAgYWxsX21vZHVsZXMuYXBwZW5kKG1vZHVsZSkKLQotICAgICMgQW5k
IGFkZCBvdmVycmlkZW4gbW9kdWxlcyByaWdodCBiZWZvcmUgdGhlIHdlYmtpdCBwb3J0IGJ1aWxk
IGRlZi4KLSAgICBmb3Igb3ZlcnJpZGVuX21vZHVsZSBpbiBvdmVycmlkZW5fbW9kdWxlczoKLSAg
ICAgICAgYWxsX21vZHVsZXMuaW5zZXJ0KC0xLCBvdmVycmlkZW5fbW9kdWxlKQotCi0gICAgbWFu
aWZlc3RbIm1vZHVsZXMiXSA9IGFsbF9tb2R1bGVzCi0gICAgZm9yIG1vZHVsZSBpbiBtYW5pZmVz
dFsibW9kdWxlcyJdOgotICAgICAgICBpZiBub3QgbW9kdWxlLmdldCgic291cmNlcyIpOgotICAg
ICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBtb2R1bGVbInNvdXJjZXMiXVswXVsidHlw
ZSJdID09ICJnaXQiOgotICAgICAgICAgICAgaWYgcG9ydF9uYW1lID09IG1vZHVsZVsibmFtZSJd
OgotICAgICAgICAgICAgICAgIHJlcG8gPSAiZmlsZTovLyIgKyBzb3VyY2Vfcm9vdAotICAgICAg
ICAgICAgICAgIG1vZHVsZVsic291cmNlcyJdWzBdWyJ1cmwiXSA9IHJlcG8KLQotICAgICAgICBm
b3Igc291cmNlIGluIG1vZHVsZVsic291cmNlcyJdOgotICAgICAgICAgICAgaWYgc291cmNlWyJ0
eXBlIl0gPT0gInBhdGNoIiBvciAoc291cmNlWyJ0eXBlIl0gPT0gImZpbGUiIGFuZCBzb3VyY2Uu
Z2V0KCdwYXRoJykpOgotICAgICAgICAgICAgICAgIHNvdXJjZVsicGF0aCJdID0gb3MucGF0aC5q
b2luKG9zLnBhdGguZGlybmFtZShtYW5pZmVzdF9wYXRoKSwgc291cmNlWyJwYXRoIl0pCi0KLSAg
ICB3aXRoIG9wZW4ob3V0ZmlsZSwgInciKSBhcyBvZjoKLSAgICAgICAgb2Yud3JpdGUoanNvbi5k
dW1wcyhtYW5pZmVzdCwgaW5kZW50PTQpKQotCi0gICAgcmV0dXJuIFRydWUKLQotCi1jbGFzcyBG
bGF0cGFrT2JqZWN0OgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHVzZXIpOgotICAgICAgICBz
ZWxmLnVzZXIgPSB1c2VyCi0KLSAgICBkZWYgZmxhdHBhayhzZWxmLCBjb21tYW5kLCAqYXJncywg
Kiprd2FyZ3MpOgotICAgICAgICBzaG93X291dHB1dCA9IGt3YXJncy5wb3AoInNob3dfb3V0cHV0
IiwgRmFsc2UpCi0gICAgICAgIGNvbW1lbnQgPSBrd2FyZ3MucG9wKCJjb21tZW50IiwgTm9uZSkK
LSAgICAgICAgaWYgY29tbWVudDoKLSAgICAgICAgICAgIENvbnNvbGUubWVzc2FnZShjb21tZW50
KQotCi0gICAgICAgIGNvbW1hbmQgPSBbImZsYXRwYWsiLCBjb21tYW5kXQotICAgICAgICBpZiBz
ZWxmLnVzZXI6Ci0gICAgICAgICAgICByZXMgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjb21t
YW5kICsgWyItLWhlbHAiXSkuZGVjb2RlKCJ1dGYtOCIpCi0gICAgICAgICAgICBpZiAiLS11c2Vy
IiBpbiByZXM6Ci0gICAgICAgICAgICAgICAgY29tbWFuZC5hcHBlbmQoIi0tdXNlciIpCi0gICAg
ICAgIGNvbW1hbmQuZXh0ZW5kKGFyZ3MpCi0KLSAgICAgICAgaWYgbm90IHNob3dfb3V0cHV0Ogot
ICAgICAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNvbW1hbmQpLmRlY29k
ZSgidXRmLTgiKQotCi0gICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoY29tbWFu
ZCkKLQotCi1jbGFzcyBGbGF0cGFrUGFja2FnZXMoRmxhdHBha09iamVjdCk6Ci0KLSAgICBkZWYg
X19pbml0X18oc2VsZiwgcmVwb3MsIHVzZXI9VHJ1ZSk6Ci0gICAgICAgIEZsYXRwYWtPYmplY3Qu
X19pbml0X18oc2VsZiwgdXNlcj11c2VyKQotCi0gICAgICAgIHNlbGYucmVwb3MgPSByZXBvcwot
Ci0gICAgICAgIHNlbGYucnVudGltZXMgPSBzZWxmLl9fZGV0ZWN0X3J1bnRpbWVzKCkKLSAgICAg
ICAgc2VsZi5hcHBzID0gc2VsZi5fX2RldGVjdF9hcHBzKCkKLSAgICAgICAgc2VsZi5wYWNrYWdl
cyA9IHNlbGYucnVudGltZXMgKyBzZWxmLmFwcHMKLQotCi0gICAgZGVmIF9fZGV0ZWN0X3BhY2th
Z2VzKHNlbGYsICphcmdzKToKLSAgICAgICAgcGFja3MgPSBbXQotICAgICAgICBpZiBGTEFUUEFL
X1ZFUlNJT05bImZsYXRwYWsiXSA8ICgxLCAxLCAyKToKLSAgICAgICAgICAgIG91dCA9IHNlbGYu
ZmxhdHBhaygibGlzdCIsICItZCIsICphcmdzKQotICAgICAgICAgICAgcGFja2FnZV9kZWZzID0g
W2xpbmUgZm9yIGxpbmUgaW4gb3V0LnNwbGl0KCJcbiIpIGlmIGxpbmVdCi0gICAgICAgICAgICBm
b3IgcGFja2FnZV9kZWYgaW4gcGFja2FnZV9kZWZzOgotICAgICAgICAgICAgICAgIHNwbGl0ZWRf
cGFja2FnZWRfZGVmID0gcGFja2FnZV9kZWYuc3BsaXQoKQotICAgICAgICAgICAgICAgIG5hbWUs
IGFyY2gsIGJyYW5jaCA9IHNwbGl0ZWRfcGFja2FnZWRfZGVmWzBdLnNwbGl0KCIvIikKLQotICAg
ICAgICAgICAgICAgICMgSWYgaW5zdGFsbGVkIGZyb20gYSBmaWxlLCB0aGUgcGFja2FnZSBpcyBp
biBubyByZXBvCi0gICAgICAgICAgICAgICAgcmVwb19uYW1lID0gc3BsaXRlZF9wYWNrYWdlZF9k
ZWZbMV0KLSAgICAgICAgICAgICAgICByZXBvID0gc2VsZi5yZXBvcy5yZXBvcy5nZXQocmVwb19u
YW1lKQotCi0gICAgICAgICAgICAgICAgcGFja3MuYXBwZW5kKEZsYXRwYWtQYWNrYWdlKG5hbWUs
IGJyYW5jaCwgcmVwbywgYXJjaCkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvdXQgPSBz
ZWxmLmZsYXRwYWsoImxpc3QiLCAiLS1jb2x1bW5zPWFwcGxpY2F0aW9uLGFyY2gsYnJhbmNoLG9y
aWdpbiIsICphcmdzKQotICAgICAgICAgICAgcGFja2FnZV9kZWZzID0gW2xpbmUgZm9yIGxpbmUg
aW4gb3V0LnNwbGl0KCJcbiIpIGlmIGxpbmVdCi0gICAgICAgICAgICBmb3IgcGFja2FnZV9kZWYg
aW4gcGFja2FnZV9kZWZzOgotICAgICAgICAgICAgICAgIG5hbWUsIGFyY2gsIGJyYW5jaCwgb3Jp
Z2luID0gcGFja2FnZV9kZWYuc3BsaXQoIlx0IikKLQotICAgICAgICAgICAgICAgICMgSWYgaW5z
dGFsbGVkIGZyb20gYSBmaWxlLCB0aGUgcGFja2FnZSBpcyBpbiBubyByZXBvCi0gICAgICAgICAg
ICAgICAgcmVwbyA9IHNlbGYucmVwb3MucmVwb3MuZ2V0KG9yaWdpbikKLQotICAgICAgICAgICAg
ICAgIHBhY2tzLmFwcGVuZChGbGF0cGFrUGFja2FnZShuYW1lLCBicmFuY2gsIHJlcG8sIGFyY2gp
KQotCi0gICAgICAgIHJldHVybiBwYWNrcwotCi0KLSAgICBkZWYgX19kZXRlY3RfcnVudGltZXMo
c2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9fZGV0ZWN0X3BhY2thZ2VzKCItLXJ1bnRpbWUi
KQotCi0gICAgZGVmIF9fZGV0ZWN0X2FwcHMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9f
ZGV0ZWN0X3BhY2thZ2VzKCkKLQotICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAgICAgZm9y
IHBhY2thZ2UgaW4gc2VsZi5wYWNrYWdlczoKLSAgICAgICAgICAgIHlpZWxkIHBhY2thZ2UKLQot
Ci1jbGFzcyBGbGF0cGFrUmVwb3MoRmxhdHBha09iamVjdCk6Ci0KLSAgICBkZWYgX19pbml0X18o
c2VsZiwgdXNlcj1UcnVlKToKLSAgICAgICAgRmxhdHBha09iamVjdC5fX2luaXRfXyhzZWxmLCB1
c2VyPXVzZXIpCi0gICAgICAgIHNlbGYucmVwb3MgPSB7fQotICAgICAgICBzZWxmLnVwZGF0ZSgp
Ci0KLSAgICBkZWYgdXBkYXRlKHNlbGYpOgotICAgICAgICBzZWxmLnJlcG9zID0ge30KLSAgICAg
ICAgaWYgRkxBVFBBS19WRVJTSU9OWyJmbGF0cGFrIl0gPCAoMSwgMSwgMik6Ci0gICAgICAgICAg
ICBvdXQgPSBzZWxmLmZsYXRwYWsoInJlbW90ZS1saXN0IiwgIi1kIikKLSAgICAgICAgICAgIHJl
bW90ZXMgPSBbbGluZSBmb3IgbGluZSBpbiBvdXQuc3BsaXQoIlxuIikgaWYgbGluZV0KLSAgICAg
ICAgICAgIGZvciByZXBvIGluIHJlbW90ZXM6Ci0gICAgICAgICAgICAgICAgZm9yIGNvbXBvbmVu
dHMgaW4gW3JlcG8uc3BsaXQoIiAiKSwgcmVwby5zcGxpdCgiXHQiKV06Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIGxlbihjb21wb25lbnRzKSA9PSAxOgotICAgICAgICAgICAgICAgICAgICAgICAg
Y29tcG9uZW50cyA9IHJlcG8uc3BsaXQoIlx0IikKLSAgICAgICAgICAgICAgICAgICAgbmFtZSA9
IGNvbXBvbmVudHNbMF0KLSAgICAgICAgICAgICAgICAgICAgZGVzYyA9ICIiCi0gICAgICAgICAg
ICAgICAgICAgIHVybCA9IE5vbmUKLSAgICAgICAgICAgICAgICAgICAgZm9yIGVsZW0gaW4gY29t
cG9uZW50c1sxOl06Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgZWxlbToKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICAgICAg
cGFyc2VkX3VybCA9IHVybHBhcnNlKGVsZW0pCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBw
YXJzZWRfdXJsLnNjaGVtZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSBlbGVt
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgZGVzYzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjICs9ICIgIgot
ICAgICAgICAgICAgICAgICAgICAgICAgZGVzYyArPSBlbGVtCi0KLSAgICAgICAgICAgICAgICAg
ICAgaWYgdXJsOgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICAgICAg
ICAgIGlmIG5vdCB1cmw6Ci0gICAgICAgICAgICAgICAgICAgIENvbnNvbGUubWVzc2FnZSgiTm8g
dmFsaWQgVVJJIGZvdW5kIGZvcjogJXMiLCByZXBvKQotICAgICAgICAgICAgICAgICAgICBjb250
aW51ZQotCi0gICAgICAgICAgICAgICAgc2VsZi5yZXBvc1tuYW1lXSA9IEZsYXRwYWtSZXBvKG5h
bWUsIHVybCwgZGVzYywgcmVwb3M9c2VsZikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG91
dCA9IHNlbGYuZmxhdHBhaygicmVtb3RlLWxpc3QiLCAiLS1jb2x1bW5zPW5hbWUsdGl0bGUsdXJs
IikKLSAgICAgICAgICAgIHJlbW90ZXMgPSBbbGluZSBmb3IgbGluZSBpbiBvdXQuc3BsaXQoIlxu
IikgaWYgbGluZV0KLSAgICAgICAgICAgIGZvciByZW1vdGUgaW4gcmVtb3RlczoKLSAgICAgICAg
ICAgICAgICBuYW1lLCB0aXRsZSwgdXJsID0gcmVtb3RlLnNwbGl0KCJcdCIpCi0gICAgICAgICAg
ICAgICAgcGFyc2VkX3VybCA9IHVybHBhcnNlKHVybCkKLSAgICAgICAgICAgICAgICBpZiBub3Qg
cGFyc2VkX3VybC5zY2hlbWU6Ci0gICAgICAgICAgICAgICAgICAgIENvbnNvbGUubWVzc2FnZSgi
Tm8gdmFsaWQgVVJJIGZvdW5kIGZvcjogJXMiLCByZW1vdGUpCi0gICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICBzZWxmLnJlcG9zW25hbWVdID0gRmxhdHBha1Jl
cG8obmFtZSwgdXJsLCB0aXRsZSwgcmVwb3M9c2VsZikKLQotICAgICAgICBzZWxmLnBhY2thZ2Vz
ID0gRmxhdHBha1BhY2thZ2VzKHNlbGYpCi0KLSAgICBkZWYgYWRkKHNlbGYsIHJlcG8sIG92ZXJy
aWRlPVRydWUpOgotICAgICAgICBzYW1lX25hbWUgPSBOb25lCi0gICAgICAgIGZvciBuYW1lLCB0
bXByZXBvIGluIHNlbGYucmVwb3MuaXRlbXMoKToKLSAgICAgICAgICAgIGlmIHJlcG8udXJsID09
IHRtcHJlcG8udXJsOgotICAgICAgICAgICAgICAgIHJldHVybiB0bXByZXBvCi0gICAgICAgICAg
ICBlbGlmIHJlcG8ubmFtZSA9PSBuYW1lOgotICAgICAgICAgICAgICAgIHNhbWVfbmFtZSA9IHRt
cHJlcG8KLQotICAgICAgICBpZiBzYW1lX25hbWU6Ci0gICAgICAgICAgICBpZiBvdmVycmlkZToK
LSAgICAgICAgICAgICAgICBzZWxmLmZsYXRwYWsoInJlbW90ZS1tb2RpZnkiLCByZXBvLm5hbWUs
ICItLXVybD0iICsgcmVwby51cmwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1l
bnQ9IlNldHRpbmcgcmVwbyAlcyBVUkwgZnJvbSAlcyB0byAlcyIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJSAocmVwby5uYW1lLCBzYW1lX25hbWUudXJsLCByZXBvLnVybCkpCi0gICAg
ICAgICAgICAgICAgc2FtZV9uYW1lLnVybCA9IHJlcG8udXJsCi0KLSAgICAgICAgICAgICAgICBy
ZXR1cm4gc2FtZV9uYW1lCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVy
biBOb25lCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZsYXRwYWsoInJlbW90ZS1h
ZGQiLCByZXBvLm5hbWUsICItLWZyb20iLCByZXBvLnJlcG9fZmlsZS5uYW1lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICItLWlmLW5vdC1leGlzdHMiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbW1lbnQ9IkFkZGluZyByZXBvICVzIiAlIHJlcG8ubmFtZSkKLQotICAgICAgICByZXBv
LnJlcG9zID0gc2VsZgotICAgICAgICByZXR1cm4gcmVwbwotCi0KLWNsYXNzIEZsYXRwYWtSZXBv
KEZsYXRwYWtPYmplY3QpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGRlc2M9Tm9u
ZSwgdXJsPU5vbmUsCi0gICAgICAgICAgICAgICAgIHJlcG9fZmlsZT1Ob25lLCB1c2VyPVRydWUs
IHJlcG9zPU5vbmUpOgotICAgICAgICBGbGF0cGFrT2JqZWN0Ll9faW5pdF9fKHNlbGYsIHVzZXI9
dXNlcikKLQotICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYudXJsID0gdXJs
Ci0gICAgICAgIHNlbGYuZGVzYyA9IGRlc2MKLSAgICAgICAgc2VsZi5yZXBvX2ZpbGVfbmFtZSA9
IHJlcG9fZmlsZQotICAgICAgICBzZWxmLl9yZXBvX2ZpbGUgPSBOb25lCi0gICAgICAgIHNlbGYu
cmVwb3MgPSByZXBvcwotICAgICAgICBhc3NlcnQgbmFtZQotICAgICAgICBpZiByZXBvX2ZpbGUg
YW5kIG5vdCB1cmw6Ci0gICAgICAgICAgICByZXBvID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNl
cigpCi0gICAgICAgICAgICByZXBvLnJlYWQoc2VsZi5yZXBvX2ZpbGUubmFtZSkKLSAgICAgICAg
ICAgIHNlbGYudXJsID0gcmVwb1siRmxhdHBhayBSZXBvIl1bIlVybCJdCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBhc3NlcnQgdXJsCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgcmVwb19m
aWxlKHNlbGYpOgotICAgICAgICBpZiBzZWxmLl9yZXBvX2ZpbGU6Ci0gICAgICAgICAgICByZXR1
cm4gc2VsZi5fcmVwb19maWxlCi0KLSAgICAgICAgYXNzZXJ0IHNlbGYucmVwb19maWxlX25hbWUK
LSAgICAgICAgc2VsZi5fcmVwb19maWxlID0gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKG1v
ZGU9IndiIikKLSAgICAgICAgc2VsZi5fcmVwb19maWxlLndyaXRlKHVybG9wZW4oc2VsZi5yZXBv
X2ZpbGVfbmFtZSkucmVhZCgpKQotICAgICAgICBzZWxmLl9yZXBvX2ZpbGUuZmx1c2goKQotCi0g
ICAgICAgIHJldHVybiBzZWxmLl9yZXBvX2ZpbGUKLQotCi1jbGFzcyBGbGF0cGFrUGFja2FnZShG
bGF0cGFrT2JqZWN0KToKLSAgICAiIiJBIGZsYXRwYWsgYXBwLiIiIgotCi0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIG5hbWUsIGJyYW5jaCwgcmVwbywgYXJjaCwgdXNlcj1UcnVlLCBoYXNoPU5vbmUp
OgotICAgICAgICBGbGF0cGFrT2JqZWN0Ll9faW5pdF9fKHNlbGYsIHVzZXI9dXNlcikKLQotICAg
ICAgICBzZWxmLm5hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYuYnJhbmNoID0gc3RyKGJyYW5jaCkK
LSAgICAgICAgc2VsZi5yZXBvID0gcmVwbwotICAgICAgICBzZWxmLmFyY2ggPSBhcmNoCi0gICAg
ICAgIHNlbGYuaGFzaCA9IGhhc2gKLQotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gIiVzLyVzLyVzICVzIiAlIChzZWxmLm5hbWUsIHNlbGYuYXJjaCwgc2VsZi5icmFuY2gs
IHNlbGYucmVwby5uYW1lKQotCi0gICAgZGVmIGlzX2luc3RhbGxlZChzZWxmLCBicmFuY2gpOgot
ICAgICAgICBpZiBub3Qgc2VsZi5yZXBvOgotICAgICAgICAgICAgIyBCdW5kbGUgaW5zdGFsbGVk
IGZyb20gZmlsZQotICAgICAgICAgICAgcmV0dXJuIFRydWUKLQotICAgICAgICBzZWxmLnJlcG8u
cmVwb3MudXBkYXRlKCkKLSAgICAgICAgZm9yIHBhY2thZ2UgaW4gc2VsZi5yZXBvLnJlcG9zLnBh
Y2thZ2VzOgotICAgICAgICAgICAgaWYgcGFja2FnZS5uYW1lID09IHNlbGYubmFtZSBhbmQgXAot
ICAgICAgICAgICAgICAgICAgICBwYWNrYWdlLmJyYW5jaCA9PSBicmFuY2ggYW5kIFwKLSAgICAg
ICAgICAgICAgICAgICAgcGFja2FnZS5hcmNoID09IHNlbGYuYXJjaDoKLSAgICAgICAgICAgICAg
ICByZXR1cm4gVHJ1ZQotCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIGluc3RhbGwo
c2VsZik6Ci0gICAgICAgIGlmIG5vdCBzZWxmLnJlcG86Ci0gICAgICAgICAgICByZXR1cm4gRmFs
c2UKLQotICAgICAgICBhcmdzID0gWyJpbnN0YWxsIiwgc2VsZi5yZXBvLm5hbWUsIHNlbGYubmFt
ZSwgIi0tcmVpbnN0YWxsIiwgc2VsZi5icmFuY2gsICItLWFzc3VtZXllcyJdCi0gICAgICAgIGNv
bW1lbnQgPSAiSW5zdGFsbGluZyBmcm9tICIgKyBzZWxmLnJlcG8ubmFtZSArICIgIiArIHNlbGYu
bmFtZSArICIgIiArIHNlbGYuYXJjaCArICIgIiArIHNlbGYuYnJhbmNoCi0gICAgICAgIHNlbGYu
ZmxhdHBhaygqYXJncywgc2hvd19vdXRwdXQ9VHJ1ZSwgY29tbWVudD1jb21tZW50KQotICAgICAg
ICBpZiBzZWxmLmhhc2g6Ci0gICAgICAgICAgICBhcmdzID0gWyJ1cGRhdGUiLCAiLS1jb21taXQi
LCBzZWxmLmhhc2gsIHNlbGYubmFtZV0KLSAgICAgICAgICAgIGNvbW1lbnQgPSAiVXBkYXRpbmcg
dG8gJXMiICUgc2VsZi5oYXNoCi0gICAgICAgICAgICBzZWxmLmZsYXRwYWsoKmFyZ3MsIHNob3df
b3V0cHV0PVRydWUsIGNvbW1lbnQ9Y29tbWVudCkKLQotICAgIGRlZiB1cGRhdGUoc2VsZik6Ci0g
ICAgICAgIGlmIG5vdCBzZWxmLmlzX2luc3RhbGxlZChzZWxmLmJyYW5jaCk6Ci0gICAgICAgICAg
ICByZXR1cm4gc2VsZi5pbnN0YWxsKCkKLQotICAgICAgICBleHRyYV9hcmdzID0gW10KLSAgICAg
ICAgY29tbWVudCA9ICJVcGRhdGluZyAlcyIgJSBzZWxmLm5hbWUKLSAgICAgICAgaWYgc2VsZi5o
YXNoOgotICAgICAgICAgICAgZXh0cmFfYXJncyA9IFsiLS1jb21taXQiLCBzZWxmLmhhc2hdCi0g
ICAgICAgICAgICBjb21tZW50ICs9ICIgdG8gJXMiICUgc2VsZi5oYXNoCi0KLSAgICAgICAgZXh0
cmFfYXJncy5hcHBlbmQoIi0tYXNzdW1leWVzIikKLQotICAgICAgICBzZWxmLmZsYXRwYWsoInVw
ZGF0ZSIsIHNlbGYubmFtZSwgc2VsZi5icmFuY2gsIHNob3dfb3V0cHV0PVRydWUsCi0gICAgICAg
ICAgICAgICAgICAgICpleHRyYV9hcmdzLCBjb21tZW50PWNvbW1lbnQpCi0KLQotQGNvbnRleHRt
YW5hZ2VyCi1kZWYgZGlzYWJsZV9zaWduYWxzKHNpZ25hbHM9W3NpZ25hbC5TSUdJTlRdKToKLSAg
ICBvbGRfc2lnbmFsX2hhbmRsZXJzID0gW10KLQotICAgIGZvciBkaXNhYmxlZF9zaWduYWwgaW4g
c2lnbmFsczoKLSAgICAgICAgb2xkX3NpZ25hbF9oYW5kbGVycy5hcHBlbmQoKGRpc2FibGVkX3Np
Z25hbCwgc2lnbmFsLmdldHNpZ25hbChkaXNhYmxlZF9zaWduYWwpKSkKLSAgICAgICAgc2lnbmFs
LnNpZ25hbChkaXNhYmxlZF9zaWduYWwsIHNpZ25hbC5TSUdfSUdOKQotCi0gICAgeWllbGQKLQot
ICAgIGZvciBkaXNhYmxlZF9zaWduYWwsIHByZXZpb3VzX2hhbmRsZXIgaW4gb2xkX3NpZ25hbF9o
YW5kbGVyczoKLSAgICAgICAgc2lnbmFsLnNpZ25hbChkaXNhYmxlZF9zaWduYWwsIHByZXZpb3Vz
X2hhbmRsZXIpCi0KLQotY2xhc3MgV2Via2l0RmxhdHBhazoKLQotICAgIEBzdGF0aWNtZXRob2QK
LSAgICBkZWYgbG9hZF9mcm9tX2FyZ3MoYXJncz1Ob25lLCBhZGRfaGVscD1UcnVlKToKLSAgICAg
ICAgc2VsZiA9IFdlYmtpdEZsYXRwYWsoKQotCi0gICAgICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFy
Z3VtZW50UGFyc2VyKHByb2c9IndlYmtpdC1mbGF0cGFrIiwgYWRkX2hlbHA9YWRkX2hlbHApCi0g
ICAgICAgIGdlbmVyYWwgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCJHZW5lcmFsIikKLSAg
ICAgICAgZ2VuZXJhbC5hZGRfYXJndW1lbnQoJy0tdmVyYm9zZScsIGFjdGlvbj0nc3RvcmVfdHJ1
ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1Nob3cgZGVidWcgbWVzc2Fn
ZScpCi0gICAgICAgIGdlbmVyYWwuYWRkX2FyZ3VtZW50KCItLWRlYnVnIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBoZWxwPSJDb21waWxlIHdpdGggRGVidWcgY29uZmlndXJhdGlvbiwg
YWxzbyBpbnN0YWxscyBTZGsgZGVidWcgc3ltYm9sZXMuIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiKQotICAgICAgICBnZW5lcmFsLmFkZF9hcmd1bWVu
dCgiLS1yZWxlYXNlIiwgaGVscD0iQ29tcGlsZSB3aXRoIFJlbGVhc2UgY29uZmlndXJhdGlvbi4i
LCBhY3Rpb249InN0b3JlX3RydWUiKQotICAgICAgICBnZW5lcmFsLmFkZF9hcmd1bWVudCgnLS1w
bGF0Zm9ybScsIGFjdGlvbj0nc3RvcmUnLCBoZWxwPSdQbGF0Zm9ybSB0byB1c2UgKGUuZy4sICJt
YWMtbGlvbiIpJyksCi0gICAgICAgIGdlbmVyYWwuYWRkX2FyZ3VtZW50KCctLWd0aycsIGFjdGlv
bj0nc3RvcmVfY29uc3QnLCBkZXN0PSdwbGF0Zm9ybScsIGNvbnN0PSdndGsnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSdBbGlhcyBmb3IgLS1wbGF0Zm9ybT1ndGsnKQotICAg
ICAgICBnZW5lcmFsLmFkZF9hcmd1bWVudCgnLS13cGUnLCBhY3Rpb249J3N0b3JlX2NvbnN0Jywg
ZGVzdD0ncGxhdGZvcm0nLCBjb25zdD0nd3BlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoZWxwPSgnQWxpYXMgZm9yIC0tcGxhdGZvcm09d3BlJykpCi0gICAgICAgIGdlbmVyYWwuYWRk
X2FyZ3VtZW50KCItbmYiLCAiLS1uby1mbGF0cGFrLXVwZGF0ZSIsIGRlc3Q9Im5vX2ZsYXRwYWtf
dXBkYXRlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUi
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkRvIG5vdCB1cGRhdGUgZmxhcHRh
ayBydW50aW1lL3NkayIpCi0gICAgICAgIGdlbmVyYWwuYWRkX2FyZ3VtZW50KCItdSIsICItLXVw
ZGF0ZSIsIGRlc3Q9InVwZGF0ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9u
PSJzdG9yZV90cnVlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJVcGRhdGUg
dGhlIHJ1bnRpbWUvc2RrL2FwcCBhbmQgcmVidWlsZCB0aGUgZGV2ZWxvcG1lbnQgZW52aXJvbm1l
bnQgaWYgbmVlZGVkIikKLSAgICAgICAgZ2VuZXJhbC5hZGRfYXJndW1lbnQoIi1iIiwgIi0tYnVp
bGQtd2Via2l0IiwgZGVzdD0iYnVpbGRfd2Via2l0IiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhl
bHA9IkZvcmNlIHJlYnVpbGRpbmcgdGhlIGFwcC4iKQotICAgICAgICBnZW5lcmFsLmFkZF9hcmd1
bWVudCgiLWJhIiwgIi0tYnVpbGQtYWxsIiwgZGVzdD0iYnVpbGRfYWxsIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGhlbHA9IkZvcmNlIHJlYnVpbGRpbmcgdGhlIGFwcCBhbmQgaXRzIGRlcGVuZGVu
Y2llcy4iKQotICAgICAgICBnZW5lcmFsLmFkZF9hcmd1bWVudCgiLXEiLCAiLS1xdWlldCIsIGRl
c3Q9InF1aWV0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3Ry
dWUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkRvIG5vdCBwcmludCBhbnl0
aGluZyIpCi0gICAgICAgIGdlbmVyYWwuYWRkX2FyZ3VtZW50KCItdCIsICItLXRlc3RzIiwgZGVz
dD0icnVuX3Rlc3RzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXJncz1hcmdwYXJz
ZS5SRU1BSU5ERVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUnVuIExheW91
dFRlc3RzIikKLSAgICAgICAgZ2VuZXJhbC5hZGRfYXJndW1lbnQoIi1jIiwgIi0tY29tbWFuZCIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFyZ3M9YXJncGFyc2UuUkVNQUlOREVSLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlRoZSBjb21tYW5kIHRvIHJ1biBpbiB0
aGUgc2FuZGJveCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0idXNlcl9jb21t
YW5kIikKLSAgICAgICAgZ2VuZXJhbC5hZGRfYXJndW1lbnQoJy0tYXZhaWxhYmxlJywgYWN0aW9u
PSdzdG9yZV90cnVlJywgZGVzdD0iY2hlY2tfYXZhaWxhYmxlIiwgaGVscD0nQ2hlY2sgaWYgcmVx
dWlyZWQgZGVwZW5kZW5jaWVzIGFyZSBhdmFpbGFibGUuJyksCi0gICAgICAgIGdlbmVyYWwuYWRk
X2FyZ3VtZW50KCItLXVzZS1pY2VjcmVhbSIsIGhlbHA9IlVzZSB0aGUgZGlzdHJpYnV0ZWQgaWNl
Y3JlYW0gKGljZWNjKSBjb21waWxlci4iLCBhY3Rpb249InN0b3JlX3RydWUiKQotICAgICAgICBn
ZW5lcmFsLmFkZF9hcmd1bWVudCgiLS13cGUtZXh0ZW5zaW9uIiwgYWN0aW9uPSJzdG9yZSIsIGRl
c3Q9IndwZV9leHRlbnNpb24iLCBoZWxwPSJXUEUgRXh0ZW5zaW9uIHRvIGVuYWJsZSIpCi0KLSAg
ICAgICAgZGVidWdvcHRpb25zID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgiRGVidWdnaW5n
IikKLSAgICAgICAgZGVidWdvcHRpb25zLmFkZF9hcmd1bWVudCgiLS1nZGIiLCBuYXJncz0iPyIs
IGhlbHA9IkFjdGl2YXRlIGdkYiwgcGFzc2luZyBleHRyYSBhcmdzIHRvIGl0IGlmIHdhbnRlZC4i
KQotICAgICAgICBkZWJ1Z29wdGlvbnMuYWRkX2FyZ3VtZW50KCItbSIsICItLWNvcmVkdW1wY3Rs
LW1hdGNoZXMiLCBkZWZhdWx0PSIiLCBoZWxwPSdBcmd1bWVudHMgdG8gcGFzcyB0byBnZGIuJykK
LQotICAgICAgICBidWlsZG9wdGlvbnMgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCJFeHRy
YSBidWlsZCBhcmd1bWVudHMiKQotICAgICAgICBidWlsZG9wdGlvbnMuYWRkX2FyZ3VtZW50KCIt
LW1ha2VhcmdzIiwgaGVscD0iT3B0aW9uYWwgTWFrZWZpbGUgZmxhZ3MiKQotICAgICAgICBidWls
ZG9wdGlvbnMuYWRkX2FyZ3VtZW50KCItLWNtYWtlYXJncyIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGhlbHA9Ik9uZSBvciBtb3JlIG9wdGlvbmFsIENNYWtlIGZsYWdzIChlLmcu
IC0tY21ha2VhcmdzPVwiLURGT089YmFyIC1EQ01BS0VfUFJFRklYX1BBVEg9L3Vzci9sb2NhbFwi
KSIpCi0KLSAgICAgICAgZ2VuZXJhbC5hZGRfYXJndW1lbnQoIi0tY2xlYW4iLCBkZXN0PSJjbGVh
biIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCi0gICAgICAgICAgICBoZWxwPSJDbGVhbiBwcmV2aW91
cyBidWlsZHMgYW5kIHJlc3RhcnQgZnJvbSBzY3JhdGNoIikKLQotICAgICAgICBfLCBzZWxmLmFy
Z3MgPSBwYXJzZXIucGFyc2Vfa25vd25fYXJncyhhcmdzPWFyZ3MsIG5hbWVzcGFjZT1zZWxmKQot
Ci0gICAgICAgIHJldHVybiBzZWxmCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAg
IHNlbGYuc2RrX3JlcG8gPSBOb25lCi0gICAgICAgIHNlbGYucnVudGltZSA9IE5vbmUKLSAgICAg
ICAgc2VsZi5sb2NhbGUgPSBOb25lCi0gICAgICAgIHNlbGYuc2RrID0gTm9uZQotICAgICAgICBz
ZWxmLnNka19kZWJ1ZyA9IE5vbmUKLSAgICAgICAgc2VsZi5hcHAgPSBOb25lCi0KLSAgICAgICAg
c2VsZi52ZXJib3NlID0gRmFsc2UKLSAgICAgICAgc2VsZi5xdWlldCA9IEZhbHNlCi0gICAgICAg
IHNlbGYucGFja3MgPSBbXQotICAgICAgICBzZWxmLnVwZGF0ZSA9IEZhbHNlCi0gICAgICAgIHNl
bGYuYXJncyA9IFtdCi0gICAgICAgIHNlbGYuZmluaXNoX2FyZ3MgPSBOb25lCi0KLSAgICAgICAg
c2VsZi5ub19mbGF0cGFrX3VwZGF0ZSA9IEZhbHNlCi0gICAgICAgIHNlbGYucmVsZWFzZSA9IEZh
bHNlCi0gICAgICAgIHNlbGYuZGVidWcgPSBGYWxzZQotICAgICAgICBzZWxmLmNsZWFuID0gRmFs
c2UKLSAgICAgICAgc2VsZi5ydW5fdGVzdHMgPSBOb25lCi0gICAgICAgIHNlbGYuc291cmNlX3Jv
b3QgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oc2NyaXB0
ZGlyLCAnLi4vLi4vJykpKQotICAgICAgICAjIFdoZXJlIHRoZSBzb3VyY2UgZm9sZGVyIGlzIG1v
dW50ZWQgaW5zaWRlIHRoZSBzYW5kYm94LgotICAgICAgICBzZWxmLnNhbmRib3hfc291cmNlX3Jv
b3QgPSAiL2FwcC93ZWJraXQiCi0KLSAgICAgICAgc2VsZi5idWlsZF93ZWJraXQgPSBGYWxzZQot
ICAgICAgICBzZWxmLmJ1aWxkX2FsbCA9IEZhbHNlCi0KLSAgICAgICAgc2VsZi5zZGtfYnJhbmNo
ID0gTm9uZQotICAgICAgICBzZWxmLnBsYXRmb3JtID0gImd0ayIKLSAgICAgICAgc2VsZi5idWls
ZF90eXBlID0gIlJlbGVhc2UiCi0gICAgICAgIHNlbGYubWFuaWZlc3RfcGF0aCA9IE5vbmUKLSAg
ICAgICAgc2VsZi5uYW1lID0gTm9uZQotICAgICAgICBzZWxmLmJ1aWxkX25hbWUgPSBOb25lCi0g
ICAgICAgIHNlbGYuZmxhdHBha19yb290X3BhdGggPSBOb25lCi0gICAgICAgIHNlbGYuY2FjaGVf
cGF0aCA9IE5vbmUKLSAgICAgICAgc2VsZi5hcHBfbW9kdWxlID0gTm9uZQotICAgICAgICBzZWxm
LmZsYXRwYWtfZGVmYXVsdF9hcmdzID0gW10KLSAgICAgICAgc2VsZi5jaGVja19hdmFpbGFibGUg
PSBGYWxzZQotICAgICAgICBzZWxmLndwZV9leHRlbnNpb24gPSBOb25lCi0KLSAgICAgICAgIyBE
ZWZhdWx0IGFwcGxpY2F0aW9uIHRvIHJ1biBpbiB0aGUgc2FuZGJveAotICAgICAgICBzZWxmLmNv
bW1hbmQgPSBOb25lCi0gICAgICAgIHNlbGYudXNlcl9jb21tYW5kID0gW10KLQotICAgICAgICAj
IGRlYnVnIG9wdGlvbnMKLSAgICAgICAgc2VsZi5nZGIgPSBOb25lCi0gICAgICAgIHNlbGYuY29y
ZWR1bXBjdGxfbWF0Y2hlcyA9ICIiCi0KLSAgICAgICAgIyBFeHRyYSBidWlsZCBvcHRpb25zCi0g
ICAgICAgIHNlbGYuY21ha2VhcmdzID0gIiIKLSAgICAgICAgc2VsZi5tYWtlYXJncyA9ICIiCi0K
LSAgICAgICAgc2VsZi51c2VfaWNlY3JlYW0gPSBGYWxzZQotICAgICAgICBzZWxmLmljY192ZXJz
aW9uID0gTm9uZQotCi0gICAgZGVmIGNsZWFuX2FyZ3Moc2VsZik6Ci0gICAgICAgIG9zLmVudmly
b25bIkZMQVRQQUtfVVNFUl9ESVIiXSA9IG9zLmVudmlyb24uZ2V0KCJXRUJLSVRfRkxBVFBBS19V
U0VSX0RJUiIsIG9zLnBhdGgucmVhbHBhdGgob3MucGF0aC5qb2luKHNjcmlwdGRpciwgIi4uLy4u
L1dlYktpdEJ1aWxkIiwgIlVzZXJGbGF0cGFrIikpKQotICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICBvcy5tYWtlZGlycyhvcy5lbnZpcm9uWyJGTEFUUEFLX1VTRVJfRElSIl0pCi0gICAgICAgIGV4
Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgY29uZmlndXJl
X2xvZ2dpbmcobG9nZ2luZy5ERUJVRyBpZiBzZWxmLnZlcmJvc2UgZWxzZSBsb2dnaW5nLklORk8p
Ci0gICAgICAgIF9sb2cuZGVidWcoIlVzaW5nIGZsYXRwYWsgdXNlciBkaXI6ICVzIiAlIG9zLmVu
dmlyb25bIkZMQVRQQUtfVVNFUl9ESVIiXSkKLQotICAgICAgICBpZiBub3Qgc2VsZi5kZWJ1ZyBh
bmQgbm90IHNlbGYucmVsZWFzZToKLSAgICAgICAgICAgIGZhY3RvcnkgPSBQb3J0RmFjdG9yeShT
eXN0ZW1Ib3N0KCkpCi0gICAgICAgICAgICBwb3J0ID0gZmFjdG9yeS5nZXQoc2VsZi5wbGF0Zm9y
bSkKLSAgICAgICAgICAgIHNlbGYuZGVidWcgPSBwb3J0LmRlZmF1bHRfY29uZmlndXJhdGlvbigp
ID09ICJEZWJ1ZyIKLSAgICAgICAgc2VsZi5idWlsZF90eXBlID0gIkRlYnVnIiBpZiBzZWxmLmRl
YnVnIGVsc2UgIlJlbGVhc2UiCi0KLSAgICAgICAgc2VsZi5wbGF0Zm9ybSA9IHNlbGYucGxhdGZv
cm0udXBwZXIoKQotCi0gICAgICAgIGlmIHNlbGYuZ2RiIGlzIE5vbmUgYW5kICctLWdkYicgaW4g
c3lzLmFyZ3Y6Ci0gICAgICAgICAgICBzZWxmLmdkYiA9ICIiCi0KLSAgICAgICAgc2VsZi5jb21t
YW5kID0gIiVzICVzICVzIiAlIChvcy5wYXRoLmpvaW4oc2VsZi5zYW5kYm94X3NvdXJjZV9yb290
LAotICAgICAgICAgICAgIlRvb2xzL1NjcmlwdHMvcnVuLW1pbmlicm93c2VyIiksCi0gICAgICAg
ICAgICAiLS0iICsgc2VsZi5wbGF0Zm9ybS5sb3dlcigpLAotICAgICAgICAgICAgIiAtLWRlYnVn
IiBpZiBzZWxmLmRlYnVnIGVsc2UgIiAtLXJlbGVhc2UiKQotCi0gICAgICAgIHNlbGYubmFtZSA9
ICJvcmcud2Via2l0LiVzIiAlIHNlbGYucGxhdGZvcm0KLQotICAgICAgICBpZiBzZWxmLndwZV9l
eHRlbnNpb246Ci0gICAgICAgICAgICBtYW5pZmVzdF9maWxlbmFtZSA9IFdQRV9NQU5JRkVTVF9N
QVBbc2VsZi53cGVfZXh0ZW5zaW9uXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbWFuaWZl
c3RfZmlsZW5hbWUgPSAib3JnLndlYmtpdC5XZWJLaXQueWFtbCIKLSAgICAgICAgc2VsZi5tYW5p
ZmVzdF9wYXRoID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihzY3JpcHRkaXIsICcuLi9m
bGF0cGFrLycpICsgbWFuaWZlc3RfZmlsZW5hbWUpCi0KLSAgICAgICAgc2VsZi5idWlsZF9uYW1l
ID0gc2VsZi5uYW1lICsgIi1nZW5lcmF0ZWQiCi0KLSAgICAgICAgYnVpbGRfcm9vdCA9IG9zLnBh
dGguam9pbihzZWxmLnNvdXJjZV9yb290LCAnV2ViS2l0QnVpbGQnKQotICAgICAgICBzZWxmLmZs
YXRwYWtfYnVpbGRfcGF0aCA9IG9zLnBhdGguam9pbihidWlsZF9yb290LCBzZWxmLnBsYXRmb3Jt
LCAiRmxhdHBha1RyZWUiICsgc2VsZi5idWlsZF90eXBlKQotICAgICAgICBzZWxmLmNhY2hlX3Bh
dGggPSBvcy5wYXRoLmpvaW4oYnVpbGRfcm9vdCwgIkZsYXRwYWtDYWNoZSIpCi0gICAgICAgIHNl
bGYuYnVpbGRfcGF0aCA9IG9zLnBhdGguam9pbihidWlsZF9yb290LCBzZWxmLnBsYXRmb3JtLCBz
ZWxmLmJ1aWxkX3R5cGUpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLm1ha2VkaXJzKHNl
bGYuYnVpbGRfcGF0aCkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAg
IGlmIGUuZXJybm8gIT0gZXJybm8uRUVYSVNUOgotICAgICAgICAgICAgICAgIHJhaXNlIGUKLSAg
ICAgICAgc2VsZi5jb25maWdfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkX3BhdGgsICd3
ZWJraXRfZmxhdHBha19jb25maWcuanNvbicpCi0KLSAgICAgICAgQ29uc29sZS5xdWlldCA9IHNl
bGYucXVpZXQKLSAgICAgICAgaWYgbm90IGNoZWNrX2ZsYXRwYWsoKToKLSAgICAgICAgICAgIHJl
dHVybiBGYWxzZQotCi0gICAgICAgIHJlcG9zID0gRmxhdHBha1JlcG9zKCkKLSAgICAgICAgc2Vs
Zi5zZGtfcmVwbyA9IHJlcG9zLmFkZCgKLSAgICAgICAgICAgIEZsYXRwYWtSZXBvKCJmbGF0aHVi
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVybD0iaHR0cHM6Ly9kbC5mbGF0aHViLm9yZy9y
ZXBvLyIsCi0gICAgICAgICAgICAgICAgICAgICAgICByZXBvX2ZpbGU9Imh0dHBzOi8vZGwuZmxh
dGh1Yi5vcmcvcmVwby9mbGF0aHViLmZsYXRwYWtyZXBvIikpCi0KLSAgICAgICAgbWFuaWZlc3Qg
PSBsb2FkX21hbmlmZXN0KHNlbGYubWFuaWZlc3RfcGF0aCwgcG9ydF9uYW1lPXNlbGYubmFtZSkK
LSAgICAgICAgaWYgbm90IG1hbmlmZXN0OgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAg
ICAgICAgc2VsZi5hcHAgPSBtYW5pZmVzdFsnYXBwLWlkJ10KLQotICAgICAgICBzZWxmLnNka19i
cmFuY2ggPSBtYW5pZmVzdFsicnVudGltZS12ZXJzaW9uIl0KLSAgICAgICAgc2VsZi5maW5pc2hf
YXJncyA9IG1hbmlmZXN0LmdldCgiZmluaXNoLWFyZ3MiLCBbXSkKLSAgICAgICAgc2VsZi5maW5p
c2hfYXJncyA9IHJlbW92ZV9leHRlbnNpb25fcG9pbnRzKHNlbGYuZmluaXNoX2FyZ3MpCi0gICAg
ICAgIHNlbGYucnVudGltZSA9IEZsYXRwYWtQYWNrYWdlKG1hbmlmZXN0WydydW50aW1lJ10sIHNl
bGYuc2RrX2JyYW5jaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5zZGtfcmVwbywgIng4Nl82NCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGhhc2g9bWFuaWZlc3QuZ2V0KCJydW50aW1lLWhhc2giKSkKLSAgICAgICAgc2VsZi5sb2Nh
bGUgPSBGbGF0cGFrUGFja2FnZShtYW5pZmVzdFsncnVudGltZSddICsgJy5Mb2NhbGUnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2RrX2JyYW5jaCwgc2VsZi5z
ZGtfcmVwbywgIng4Nl82NCIpCi0gICAgICAgIHNlbGYuc2RrID0gRmxhdHBha1BhY2thZ2UobWFu
aWZlc3RbJ3NkayddLCBzZWxmLnNka19icmFuY2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5zZGtfcmVwbywgIng4Nl82NCIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaGFzaD1tYW5pZmVzdC5nZXQoInNkay1oYXNoIikpCi0gICAgICAgIHNlbGYu
cGFja3MgPSBbc2VsZi5ydW50aW1lLCBzZWxmLmxvY2FsZSwgc2VsZi5zZGtdCi0KLSAgICAgICAg
aWYgc2VsZi5kZWJ1ZzoKLSAgICAgICAgICAgIHNlbGYuc2RrX2RlYnVnID0gRmxhdHBha1BhY2th
Z2UobWFuaWZlc3RbJ3NkayddICsgJy5EZWJ1ZycsIHNlbGYuc2RrX2JyYW5jaCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZGtfcmVwbywgIng4Nl82NCIpCi0g
ICAgICAgICAgICBzZWxmLnBhY2tzLmFwcGVuZChzZWxmLnNka19kZWJ1ZykKLSAgICAgICAgc2Vs
Zi5tYW5pZmVzdF9nZW5lcmF0ZWRfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLmNhY2hlX3BhdGgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5idWlsZF9uYW1lICsgIi5qc29uIikKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBv
cGVuKHNlbGYuY29uZmlnX2ZpbGUpIGFzIGNvbmZpZzoKLSAgICAgICAgICAgICAgICBqc29uX2Nv
bmZpZyA9IGpzb24ubG9hZChjb25maWcpCi0gICAgICAgICAgICAgICAgc2VsZi5pY2NfdmVyc2lv
biA9IGpzb25fY29uZmlnWydpY2VjY192ZXJzaW9uJ10KLSAgICAgICAgZXhjZXB0IElPRXJyb3Ig
YXMgZToKLSAgICAgICAgICAgIHBhc3MKLQotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVm
IHJ1bl9pbl9zYW5kYm94KHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIGN3ZCA9IGt3
YXJncy5wb3AoImN3ZCIsIE5vbmUpCi0gICAgICAgIGV4dHJhX2Vudl92YXJzID0ga3dhcmdzLnBv
cCgiZW52Iiwge30pCi0gICAgICAgIHN0ZG91dCA9IGt3YXJncy5wb3AoInN0ZG91dCIsIHN5cy5z
dGRvdXQpCi0gICAgICAgIGV4dHJhX2ZsYXRwYWtfYXJncyA9IGt3YXJncy5wb3AoImV4dHJhX2Zs
YXRwYWtfYXJncyIsIFtdKQotCi0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGFyZ3MsIGxpc3Qp
OgotICAgICAgICAgICAgYXJncyA9IGxpc3QoYXJncykKLSAgICAgICAgaWYgYXJnczoKLSAgICAg
ICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGFyZ3NbMF0pOgotICAgICAgICAgICAgICAgIGNvbW1h
bmQgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguYWJzcGF0aChhcmdzWzBdKSkKLSAgICAgICAg
ICAgICAgICAjIFRha2UgaW50byBhY2NvdW50IHRoZSBmYWN0IHRoYXQgdGhlIHdlYmtpdCBzb3Vy
Y2UgZGlyIGlzIHJlbW91bnRlZCBpbnNpZGUgdGhlIHNhbmRib3guCi0gICAgICAgICAgICAgICAg
YXJnc1swXSA9IGNvbW1hbmQucmVwbGFjZShzZWxmLnNvdXJjZV9yb290LCBzZWxmLnNhbmRib3hf
c291cmNlX3Jvb3QpCi0gICAgICAgICAgICBpZiBhcmdzWzBdLmVuZHN3aXRoKCJidWlsZC13ZWJr
aXQiKToKLSAgICAgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1wcmVmaXg9L2FwcCIpCi0KLSAg
ICAgICAgc2FuZGJveF9idWlsZF9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuc2FuZGJveF9zb3Vy
Y2Vfcm9vdCwgIldlYktpdEJ1aWxkIiwgc2VsZi5idWlsZF90eXBlKQotICAgICAgICB3aXRoIHRl
bXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShtb2RlPSJ3IikgYXMgdG1wc2NyaXB0OgotICAgICAg
ICAgICAgZmxhdHBha19jb21tYW5kID0gWyJmbGF0cGFrIiwgImJ1aWxkIiwgIi0tZGllLXdpdGgt
cGFyZW50IiwKLSAgICAgICAgICAgICAgICAiLS1iaW5kLW1vdW50PS9ydW4vc2htPS9kZXYvc2ht
IiwKLSAgICAgICAgICAgICAgICAjIFdvcmthcm91bmQgZm9yIGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzE4NzM4NCB0byBoYXZlIG91ciBvd24gcGVybCBtb2R1bGVzIHVzYWJsZSBpbnNpZGUgdGhlIHNh
bmRib3gKLSAgICAgICAgICAgICAgICAjIGFzIHNldHRpbmcgdGhlIFBFUkw1TElCIGVudnZhciB3
b24ndCB3b3JrIGluc2lkZSBhcGFjaGUgKGFuZCBmb3Igc2NyaXB0cyB1c2luZyBgcGVybCAtVGBg
KS4KLSAgICAgICAgICAgICAgICAiLS1iaW5kLW1vdW50PS9ldGMvcGVybD0lcyIgJSBvcy5wYXRo
LmpvaW4oc2VsZi5mbGF0cGFrX2J1aWxkX3BhdGgsICJmaWxlcy9saWIvcGVybCIpLAotICAgICAg
ICAgICAgICAgICItLWJpbmQtbW91bnQ9L3J1bi9ob3N0LyVzPSVzIiAlICh0ZW1wZmlsZS5nZXR0
ZW1wZGlyKCksIHRlbXBmaWxlLmdldHRlbXBkaXIoKSksCi0gICAgICAgICAgICAgICAgIi0tYmlu
ZC1tb3VudD0lcz0lcyIgJSAoc2VsZi5zYW5kYm94X3NvdXJjZV9yb290LCBzZWxmLnNvdXJjZV9y
b290KSwKLSAgICAgICAgICAgICAgICAiLS10YWxrLW5hbWU9b3JnLmExMXkuQnVzIiwKLSAgICAg
ICAgICAgICAgICAiLS10YWxrLW5hbWU9b3JnLmd0ay52ZnMiLAotICAgICAgICAgICAgICAgICIt
LXRhbGstbmFtZT1vcmcuZ3RrLnZmcy4qIiwKLSAgICAgICAgICAgICAgICAjIFdlIG1vdW50IFdl
YktpdEJ1aWxkL1BPUlROQU1FL0J1aWxkVHlwZSB0byAvYXBwL3dlYmtpdC9XZWJLaXRCdWlsZC9C
dWlsZFR5cGUKLSAgICAgICAgICAgICAgICAjIHNvIHdlIGNhbiBidWlsZCBXUEUgYW5kIEdUSyBp
biBhIHNhbWUgc291cmNlIHRyZWUuCi0gICAgICAgICAgICAgICAgIi0tYmluZC1tb3VudD0lcz0l
cyIgJSAoc2FuZGJveF9idWlsZF9wYXRoLCBzZWxmLmJ1aWxkX3BhdGgpXQotCi0gICAgICAgICAg
ICBmb3J3YXJkZWQgPSB7Ci0gICAgICAgICAgICAgICAgIldFQktJVF9UT1BfTEVWRUwiOiAiL2Fw
cC8iLAotICAgICAgICAgICAgICAgICJURVNUX1JVTk5FUl9JTkpFQ1RFRF9CVU5ETEVfRklMRU5B
TUUiOiAiL2FwcC93ZWJraXQvbGliL2xpYlRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZS5zbyIsCi0g
ICAgICAgICAgICAgICAgIklDRUNDX1ZFUlNJT04iOiBzZWxmLmljY192ZXJzaW9uLAotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBlbnZfdmFyX3ByZWZpeGVzX3RvX2tlZXAgPSBbCi0gICAg
ICAgICAgICAgICAgIkdTVCIsCi0gICAgICAgICAgICAgICAgIkdUSyIsCi0gICAgICAgICAgICAg
ICAgIkciLAotICAgICAgICAgICAgICAgICJKU0MiLAotICAgICAgICAgICAgICAgICJXRUJLSVQi
LAotICAgICAgICAgICAgICAgICJXRUJLSVQyIiwKLSAgICAgICAgICAgICAgICAiV1BFIiwKLSAg
ICAgICAgICAgICAgICAiR0lHQUNBR0UiLAotICAgICAgICAgICAgXQotCi0gICAgICAgICAgICBl
bnZfdmFyc190b19rZWVwID0gWwotICAgICAgICAgICAgICAgICJKYXZhU2NyaXB0Q29yZVVzZUpJ
VCIsCi0gICAgICAgICAgICAgICAgIk1hbGxvYyIsCi0gICAgICAgICAgICAgICAgIldBWUxBTkRf
RElTUExBWSIsCi0gICAgICAgICAgICAgICAgIldBWUxBTkRfU09DS0VUIiwKLSAgICAgICAgICAg
ICAgICAiRElTUExBWSIsCi0gICAgICAgICAgICAgICAgIkxBTkciLAotICAgICAgICAgICAgICAg
ICJOVU1CRVJfT0ZfUFJPQ0VTU09SUyIsCi0gICAgICAgICAgICAgICAgIkNDQUNIRV9QUkVGSVgi
LAotICAgICAgICAgICAgICAgICJRTUwyX0lNUE9SVF9QQVRIIiwKLSAgICAgICAgICAgIF0KLQot
ICAgICAgICAgICAgaWYgc2VsZi51c2VfaWNlY3JlYW06Ci0gICAgICAgICAgICAgICAgX2xvZy5k
ZWJ1ZygnRW5hYmxpbmcgdGhlIGljZWNyZWFtIGNvbXBpbGVyJykKLSAgICAgICAgICAgICAgICBm
b3J3YXJkZWRbIkNDQUNIRV9QUkVGSVgiXSA9ICJpY2VjYyIKLSAgICAgICAgICAgICAgICBpZiBu
b3Qgb3MuZW52aXJvbi5nZXQoJ05VTUJFUl9PRl9QUk9DRVNTT1JTJyk6Ci0gICAgICAgICAgICAg
ICAgICAgIG5fY29yZXMgPSBtdWx0aXByb2Nlc3NpbmcuY3B1X2NvdW50KCkgKiAzCi0gICAgICAg
ICAgICAgICAgICAgIF9sb2cuZGVidWcoJ0ZvbGxvdyBpY2VjcmVhbSByZWNvbW1lbmRhdGlvbiBm
b3IgdGhlIG51bWJlciBvZiBjb3JlcyB0byB1c2U6ICVkJyAlIG5fY29yZXMpCi0gICAgICAgICAg
ICAgICAgICAgIGZvcndhcmRlZFsiTlVNQkVSX09GX1BST0NFU1NPUlMiXSA9IG5fY29yZXMKLQot
ICAgICAgICAgICAgZW52X3ZhcnMgPSBvcy5lbnZpcm9uCi0gICAgICAgICAgICBlbnZfdmFycy51
cGRhdGUoZXh0cmFfZW52X3ZhcnMpCi0gICAgICAgICAgICBmb3IgZW52dmFyLCB2YWx1ZSBpbiBl
bnZfdmFycy5pdGVtcygpOgotICAgICAgICAgICAgICAgIGlmIGVudnZhci5zcGxpdCgiXyIpWzBd
IGluIGVudl92YXJfcHJlZml4ZXNfdG9fa2VlcCBvciBlbnZ2YXIgaW4gZW52X3ZhcnNfdG9fa2Vl
cDoKLSAgICAgICAgICAgICAgICAgICAgZm9yd2FyZGVkW2VudnZhcl0gPSB2YWx1ZQotCi0gICAg
ICAgICAgICBmb3IgZW52dmFyLCB2YWx1ZSBpbiBmb3J3YXJkZWQuaXRlbXMoKToKLSAgICAgICAg
ICAgICAgICBmbGF0cGFrX2NvbW1hbmQuYXBwZW5kKCItLWVudj0lcz0lcyIgJSAoZW52dmFyLCB2
YWx1ZSkpCi0KLSAgICAgICAgICAgIGZsYXRwYWtfY29tbWFuZCArPSBzZWxmLmZpbmlzaF9hcmdz
ICsgZXh0cmFfZmxhdHBha19hcmdzICsgW3NlbGYuZmxhdHBha19idWlsZF9wYXRoXQotCi0gICAg
ICAgICAgICBzaGVsbF9zdHJpbmcgPSAiIgotICAgICAgICAgICAgaWYgYXJnczoKLSAgICAgICAg
ICAgICAgICBpZiBjd2Q6Ci0gICAgICAgICAgICAgICAgICAgIHNoZWxsX3N0cmluZyA9ICdjZCAi
JXMiICYmICIlcyInICUgKGN3ZCwgJyIgIicuam9pbihhcmdzKSkKLSAgICAgICAgICAgICAgICBl
bHNlOgotICAgICAgICAgICAgICAgICAgICBzaGVsbF9zdHJpbmcgPSAnIiVzIicgJSAoJyIgIicu
am9pbihhcmdzKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2hlbGxfc3Ry
aW5nID0gc2VsZi5jb21tYW5kCi0gICAgICAgICAgICAgICAgaWYgc2VsZi5hcmdzOgotICAgICAg
ICAgICAgICAgICAgICBzaGVsbF9zdHJpbmcgKz0gJyAiJXMiJyAlICciICInLmpvaW4oc2VsZi5h
cmdzKQotCi0gICAgICAgICAgICB0bXBzY3JpcHQud3JpdGUoc2hlbGxfc3RyaW5nKQotICAgICAg
ICAgICAgdG1wc2NyaXB0LmZsdXNoKCkKLQotICAgICAgICAgICAgX2xvZy5kZWJ1ZygnUnVubmlu
ZyBpbiBzYW5kYm94OiAiJXMiICVzXG4nICUgKCciICInLmpvaW4oZmxhdHBha19jb21tYW5kKSwg
c2hlbGxfc3RyaW5nKSkKLSAgICAgICAgICAgIGZsYXRwYWtfY29tbWFuZC5leHRlbmQoWydzaCcs
ICIvcnVuL2hvc3QvIiArIHRtcHNjcmlwdC5uYW1lXSkKLQotICAgICAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChmbGF0cGFrX2NvbW1hbmQsIHN0ZG91
dD1zdGRvdXQpCi0gICAgICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJy
b3IgYXMgZToKLSAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKHN0cihlKSArICJcbiIp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGUucmV0dXJuY29kZQotICAgICAgICAgICAgZXhjZXB0
IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgICAgIHJldHVybiAwCi0KLSAgICAgICAg
cmV0dXJuIDAKLQotICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuY2hlY2tfYXZh
aWxhYmxlOgotICAgICAgICAgICAgcmV0dXJuIDAKLQotICAgICAgICBpZiBub3Qgc2VsZi5jbGVh
bl9hcmdzKCk6Ci0gICAgICAgICAgICByZXR1cm4gMQotCi0gICAgICAgIGlmIHNlbGYuY2xlYW46
Ci0gICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZWxmLmZsYXRwYWtfYnVpbGRfcGF0aCk6
Ci0gICAgICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmZsYXRwYWtfYnVpbGRfcGF0aCkK
LSAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNlbGYuYnVpbGRfcGF0aCk6Ci0gICAgICAg
ICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmJ1aWxkX3BhdGgpCi0KLSAgICAgICAgaWYgc2Vs
Zi51cGRhdGU6Ci0gICAgICAgICAgICBDb25zb2xlLm1lc3NhZ2UoIlVwZGF0aW5nIEZsYXRwYWsg
ZW52aXJvbm1lbnQgZm9yICVzICglcykiICUgKAotICAgICAgICAgICAgICAgIHNlbGYucGxhdGZv
cm0sIHNlbGYuYnVpbGRfdHlwZSkpCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5ub19mbGF0cGFr
X3VwZGF0ZToKLSAgICAgICAgICAgICAgICBzZWxmLnVwZGF0ZV9hbGwoKQotCi0gICAgICAgIHJl
dHVybiBzZWxmLnNldHVwX2Rldl9lbnYoKQotCi0gICAgZGVmIGhhc19lbnZpcm9ubWVudChzZWxm
KToKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmJ1aWxk
X3BhdGgsIHNlbGYuZmxhdHBha19idWlsZF9wYXRoKSkKLQotICAgIGRlZiBzYXZlX2NvbmZpZyhz
ZWxmKToKLSAgICAgICAgd2l0aCBvcGVuKHNlbGYuY29uZmlnX2ZpbGUsICd3JykgYXMgY29uZmln
OgotICAgICAgICAgICAganNvbl9jb25maWcgPSB7J2ljZWNjX3ZlcnNpb24nOiBzZWxmLmljY192
ZXJzaW9ufQotICAgICAgICAgICAganNvbi5kdW1wKGpzb25fY29uZmlnLCBjb25maWcpCi0KLSAg
ICBkZWYgc2V0dXBfY2NhY2hlKHNlbGYpOgotICAgICAgICBmb3IgY29tcGlsZXIgaW4gWyJjKysi
LCAiY2MiLCAiY2xhbmciLCAiY2xhbmcrKyIsICJnKysiLCAiZ2NjIl06Ci0gICAgICAgICAgICBz
ZWxmLnJ1bl9pbl9zYW5kYm94KCJsbiIsICItcyIsICIuLi8uLi91c3IvYmluL2NjYWNoZSIsIGNv
bXBpbGVyLCBjd2Q9Ii9hcHAvYmluIikKLQotICAgIGRlZiBzZXR1cF9pY2VjYyhzZWxmKToKLSAg
ICAgICAgd2l0aCB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoKSBhcyB0bXBmaWxlOgotICAg
ICAgICAgICAgc2VsZi5ydW5faW5fc2FuZGJveCgnaWNlY2MnLCAnLS1idWlsZC1uYXRpdmUnLCBz
dGRvdXQ9dG1wZmlsZSwgY3dkPXNlbGYuYnVpbGRfcGF0aCkKLSAgICAgICAgICAgIHRtcGZpbGUu
Zmx1c2goKQotICAgICAgICAgICAgdG1wZmlsZS5zZWVrKDApCi0gICAgICAgICAgICBpY2NfdmVy
c2lvbl9maWxlbmFtZSwgPSByZS5maW5kYWxsKHInLipjcmVhdGluZyAoLiopJywgdG1wZmlsZS5y
ZWFkKCkpCi0gICAgICAgICAgICBzZWxmLmljY192ZXJzaW9uID0gb3MucGF0aC5qb2luKHNlbGYu
YnVpbGRfcGF0aCwgaWNjX3ZlcnNpb25fZmlsZW5hbWUpCi0KLSAgICBkZWYgc2V0dXBfZGV2X2Vu
dihzZWxmKToKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxm
LmJ1aWxkX3BhdGgsIHNlbGYuZmxhdHBha19idWlsZF9wYXRoKSkgXAotICAgICAgICAgICAgICAg
IG9yIHNlbGYudXBkYXRlIG9yIHNlbGYuYnVpbGRfYWxsOgotICAgICAgICAgICAgc2VsZi5pbnN0
YWxsX2FsbCgpCi0gICAgICAgICAgICBDb25zb2xlLm1lc3NhZ2UoIkJ1aWxkaW5nICVzIGFuZCBk
ZXBlbmRlbmNpZXMgaW4gJXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubmFt
ZSwgc2VsZi5mbGF0cGFrX2J1aWxkX3BhdGgpCi0KLSAgICAgICAgICAgICMgQ3JlYXRlIGVudmly
b25tZW50IGRpcnMgaWYgbmVjZXNzYXJ5Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAg
ICAgb3MubWFrZWRpcnMob3MucGF0aC5kaXJuYW1lKHNlbGYubWFuaWZlc3RfZ2VuZXJhdGVkX3Bh
dGgpKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBp
ZiBlLmVycm5vICE9IGVycm5vLkVFWElTVDoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgZQot
ICAgICAgICAgICAgaWYgbm90IGV4cGFuZF9tYW5pZmVzdChzZWxmLm1hbmlmZXN0X3BhdGgsIHNl
bGYubWFuaWZlc3RfZ2VuZXJhdGVkX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYubmFtZSwgc2VsZi5zYW5kYm94X3NvdXJjZV9yb290LCBzZWxmLmNvbW1hbmQp
OgotICAgICAgICAgICAgICAgIHJldHVybiAxCi0KLSAgICAgICAgICAgIGJ1aWxkZXJfYXJncyA9
IFsiZmxhdHBhay1idWlsZGVyIiwgIi0tZGlzYWJsZS1yb2ZpbGVzLWZ1c2UiLCAiLS1zdGF0ZS1k
aXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FjaGVfcGF0aCwgIi0tY2Nh
Y2hlIiwgc2VsZi5mbGF0cGFrX2J1aWxkX3BhdGgsICItLWZvcmNlLWNsZWFuIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLm1hbmlmZXN0X2dlbmVyYXRlZF9wYXRoXQotICAgICAg
ICAgICAgYnVpbGRlcl9hcmdzLmFwcGVuZCgiLS1idWlsZC1vbmx5IikKLSAgICAgICAgICAgIGJ1
aWxkZXJfYXJncy5hcHBlbmQoIi0tc3RvcC1hdD0lcyIgJSBzZWxmLmFwcCkKLQotICAgICAgICAg
ICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKGJ1aWxkZXJfYXJncykKLSAgICAgICAgICAgIHNlbGYu
c2V0dXBfY2NhY2hlKCkKLSAgICAgICAgICAgIHNlbGYuc2V0dXBfaWNlY2MoKQotICAgICAgICAg
ICAgc2VsZi5zYXZlX2NvbmZpZygpCi0KLSAgICAgICAgYnVpbGRfdHlwZSA9ICItLWRlYnVnIiBp
ZiBzZWxmLmRlYnVnIGVsc2UgIi0tcmVsZWFzZSIKLSAgICAgICAgaWYgc2VsZi5idWlsZF93ZWJr
aXQ6Ci0gICAgICAgICAgICBidWlsZGVyID0gW29zLnBhdGguam9pbihzZWxmLnNhbmRib3hfc291
cmNlX3Jvb3QsICdUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdCcpLAotICAgICAgICAgICAgICAg
IGJ1aWxkX3R5cGUsICctLScgKyBzZWxmLnBsYXRmb3JtLmxvd2VyKCldCi0gICAgICAgICAgICBp
ZiBzZWxmLm1ha2VhcmdzOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCItLW1ha2Vh
cmdzPSVzIiAlIHNlbGYubWFrZWFyZ3MpCi0gICAgICAgICAgICBpZiBzZWxmLmNtYWtlYXJnczoK
LSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiLS1jbWFrZWFyZ3M9JXMiICUgc2VsZi5j
bWFrZWFyZ3MpCi0gICAgICAgICAgICBDb25zb2xlLm1lc3NhZ2UoIkJ1aWxkaW5nIHdlYmtpdCIp
Ci0gICAgICAgICAgICByZXMgPSBzZWxmLnJ1bl9pbl9zYW5kYm94KCpidWlsZGVyKQotCi0gICAg
ICAgICAgICBpZiByZXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlcwotICAgICAgICBlbHNl
OgotICAgICAgICAgICAgQ29uc29sZS5tZXNzYWdlKCJVc2luZyAlcyBwcmVmaXggaW4gJXMiLCBz
ZWxmLm5hbWUsIHNlbGYuZmxhdHBha19idWlsZF9wYXRoKQotCi0gICAgICAgIGlmIHNlbGYucnVu
X3Rlc3RzIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgdGVzdF9sYXVuY2hlciA9IFtvcy5wYXRo
LmpvaW4oc2VsZi5zYW5kYm94X3NvdXJjZV9yb290LCAnVG9vbHMvU2NyaXB0cy9ydW4td2Via2l0
LXRlc3RzJyksCi0gICAgICAgICAgICAgICAgYnVpbGRfdHlwZSwgJy0tJyArIHNlbGYucGxhdGZv
cm0ubG93ZXIoKV0gKyBzZWxmLnJ1bl90ZXN0cwotICAgICAgICAgICAgcmV0dXJuIHNlbGYucnVu
X2luX3NhbmRib3goKnRlc3RfbGF1bmNoZXIpCi0gICAgICAgIGVsaWYgc2VsZi5nZGIgaXMgbm90
IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5ydW5fZ2RiKCkKLSAgICAgICAgZWxpZiBz
ZWxmLnVzZXJfY29tbWFuZDoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnJ1bl9pbl9zYW5kYm94
KCpzZWxmLnVzZXJfY29tbWFuZCkKLSAgICAgICAgZWxpZiBub3Qgc2VsZi51cGRhdGUgYW5kIG5v
dCBzZWxmLmJ1aWxkX3dlYmtpdDoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnJ1bl9pbl9zYW5k
Ym94KCkKLQotICAgICAgICByZXR1cm4gMAotCi0gICAgZGVmIGluc3RhbGxfYWxsKHNlbGYpOgot
ICAgICAgICBmb3IgcGFja2FnZSBpbiBzZWxmLnBhY2tzOgotICAgICAgICAgICAgaWYgbm90IHBh
Y2thZ2UuaXNfaW5zdGFsbGVkKHNlbGYuc2RrX2JyYW5jaCk6Ci0gICAgICAgICAgICAgICAgcGFj
a2FnZS5pbnN0YWxsKCkKLQotICAgIGRlZiBydW5fZ2RiKHNlbGYpOgotICAgICAgICB3aXRoIGRp
c2FibGVfc2lnbmFscygpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHN1YnBy
b2Nlc3MuY2hlY2tfb3V0cHV0KFsnd2hpY2gnLCAnY29yZWR1bXBjdGwnXSkKLSAgICAgICAgICAg
IGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgotICAgICAgICAgICAg
ICAgIHN5cy5zdGRlcnIud3JpdGUoIidjb3JlZHVtcGN0bCcgbm90IHByZXNlbnQgb24gdGhlIHN5
c3RlbSwgY2FuJ3QgcnVuLiAoJXMpXG4iICUgZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZS5y
ZXR1cm5jb2RlCi0KLSAgICAgICAgIyBXZSBuZWVkIGFjY2VzcyB0byB0aGUgaG9zdCBmcm9tIHRo
ZSBzYW5kYm94IHRvIHJ1bi4KLSAgICAgICAgd2l0aCB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZp
bGUoKSBhcyBjb3JlZHVtcDoKLSAgICAgICAgICAgIHdpdGggdGVtcGZpbGUuTmFtZWRUZW1wb3Jh
cnlGaWxlKCkgYXMgc3RkZXJyOgotICAgICAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2Fs
bChbImNvcmVkdW1wY3RsIiwgImR1bXAiXSArIHNobGV4LnNwbGl0KHNlbGYuY29yZWR1bXBjdGxf
bWF0Y2hlcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1j
b3JlZHVtcCwgc3RkZXJyPXN0ZGVycikKLQotICAgICAgICAgICAgICAgIHdpdGggb3BlbihzdGRl
cnIubmFtZSwgJ3InKSBhcyBzdGRlcnJmOgotICAgICAgICAgICAgICAgICAgICBzdGRlcnIgPSBz
dGRlcnJmLnJlYWQoKQotICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUsID0gcmUuZmluZGFsbCgi
LipFeGVjdXRhYmxlOiAoLiopIiwgc3RkZXJyKQotICAgICAgICAgICAgICAgIGlmIG5vdCBleGVj
dXRhYmxlLnN0YXJ0c3dpdGgoIi9uZXdyb290Iik6Ci0gICAgICAgICAgICAgICAgICAgIHN5cy5z
dGRlcnIud3JpdGUoIkV4ZWN1dGFibGUgJXMgZG9lc24ndCBzZWVtIHRvIGJlIGEgZmxhdHBha2Vk
IGFwcGxpY2F0aW9uLlxuIiAlIGV4ZWN1dGFibGUpCi0KLSAgICAgICAgICAgICAgICBleGVjdXRh
YmxlID0gZXhlY3V0YWJsZS5yZXBsYWNlKCIvbmV3cm9vdCIsICIiKQotICAgICAgICAgICAgICAg
IGFyZ3MgPSBbImdkYiIsIGV4ZWN1dGFibGUsICIvcnVuL2hvc3QvJXMiICUgY29yZWR1bXAubmFt
ZV0gKyBzaGxleC5zcGxpdChzZWxmLmdkYikKLQotICAgICAgICAgICAgICAgIHJldHVybiBzZWxm
LnJ1bl9pbl9zYW5kYm94KCphcmdzKQotCi0gICAgZGVmIHVwZGF0ZV9hbGwoc2VsZik6Ci0gICAg
ICAgIGZvciBtIGluIFtzZWxmLnJ1bnRpbWUsIHNlbGYuc2RrLCBzZWxmLnNka19kZWJ1Z106Ci0g
ICAgICAgICAgICBpZiBtOgotICAgICAgICAgICAgICAgIG0udXBkYXRlKCkKLQotCi1kZWYgaXNf
c2FuZGJveGVkKCk6Ci0gICAgcmV0dXJuIG9zLnBhdGguZXhpc3RzKCIvdXNyL21hbmlmZXN0Lmpz
b24iKQotCi0KLWRlZiBydW5faW5fc2FuZGJveF9pZl9hdmFpbGFibGUoYXJncyk6Ci0gICAgaWYg
aXNfc2FuZGJveGVkKCk6Ci0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICBpZiBub3QgY2hlY2tf
ZmxhdHBhayh2ZXJib3NlPUZhbHNlKToKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGZsYXRw
YWtfcnVubmVyID0gV2Via2l0RmxhdHBhay5sb2FkX2Zyb21fYXJncyhhcmdzLCBhZGRfaGVscD1G
YWxzZSkKLSAgICBpZiBub3QgZmxhdHBha19ydW5uZXIuY2xlYW5fYXJncygpOgotICAgICAgICBy
ZXR1cm4gTm9uZQotCi0gICAgaWYgbm90IGZsYXRwYWtfcnVubmVyLmhhc19lbnZpcm9ubWVudCgp
OgotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgc3lzLmV4aXQoZmxhdHBha19ydW5uZXIucnVu
X2luX3NhbmRib3goKmFyZ3MpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvZmxhdHBhay9vcmcud2Via2l0
LkNvbW1vbk1vZHVsZXMueWFtbCBiL1Rvb2xzL2ZsYXRwYWsvb3JnLndlYmtpdC5Db21tb25Nb2R1
bGVzLnlhbWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxYzk5MWI5ZTZiMGY5MmNj
YTJlNmQ1ODQxYTc0NWIxODU2OTNiOTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvVG9vbHMvZmxhdHBhay9vcmcud2Via2l0LkNvbW1vbk1vZHVsZXMueWFt
bAorKysgL2Rldi9udWxsCkBAIC0xLDMyNCArMCwwIEBACi0jIGh0dHAgYW5kIGRlcGVuZGVuY2ll
cy4KLS0gbmFtZTogYXByCi0gIHNvdXJjZXM6Ci0gICAgLSB0eXBlOiBhcmNoaXZlCi0gICAgICB1
cmw6IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZGlzdC9hcHIvYXByLTEuNi41LnRhci5iejIKLSAg
ICAgIHNoYTI1NjogYTY3Y2E5ZmNmOWM0ZmY1OWJjZTdmNDI4YTMyM2M4YjVlMTg2NjdmZGVhN2Iw
ZWJhZDQ3ZDE5NDM3MWIwYTEwNQotLSBuYW1lOiBhcHItdXRpbAotICBzb3VyY2VzOgotICAgIC0g
dHlwZTogYXJjaGl2ZQotICAgICAgdXJsOiBodHRwczovL3d3dy5hcGFjaGUub3JnL2Rpc3QvYXBy
L2Fwci11dGlsLTEuNi4xLnRhci5iejIKLSAgICAgIHNoYTUxMjogIjQwZWZmOGEzN2MwNjM0Zjdm
ZGRkZDZjYTVlNTk2YjM4ZGUxNWZkMTA3NjdhMzRjMzBiYmU0OWM2MzI4MTZlOGYzZTFlMjMwNjc4
MDM0ZjU3OGRkNTgxNmE5NGYyNDZmYjVkZmRmNDhkNjQ0ODI5YWYxM2JmMjhkZTMyMjUyMDVkIgot
ICBjb25maWctb3B0czoKLSAgICAtIC0td2l0aC1hcHI9L2FwcC9iaW4vYXByLTEtY29uZmlnCi0t
IG5hbWU6IGh0dHBkCi0gIHNvdXJjZXM6Ci0gICAgLSB0eXBlOiBnaXQKLSAgICAgIHVybDogaHR0
cHM6Ly9naXRodWIuY29tL2FwYWNoZS9odHRwZC5naXQKLSAgICAgIGJyYW5jaDogMi40LjM3Ci0g
ICAgLSB0eXBlIDogZmlsZQotICAgICAgcGF0aCA6IGZpbGVzL2h0dHBkLWF1dG9nZW4uc2gKLSAg
ICAgIGRlc3QtZmlsZW5hbWUgOiBhdXRvZ2VuLnNoCi0gICAgIyBUaGUgdmVyc2lvbiBlbWJlZGRl
ZCBpbiB0aGUgc2FuZGJveCBkb2Vzbid0IGhhdmUgYSB3b3JraW5nIHBjcmUtY29uZmlnCi0gICAg
LSB0eXBlOiBwYXRjaAotICAgICAgcGF0aDogcGF0Y2hlcy9odHRwZC0wMDAxLWNvbmZpZ3VyZS11
c2UtcGtnLWNvbmZpZy1mb3ItUENSRS1kZXRlY3Rpb24ucGF0Y2gKLSAgY29uZmlnLW9wdHM6Ci0g
ICAgLSAtLWVuYWJsZS1tcG1zLXNoYXJlZD1hbGwKLSAgICAtIC0tZW5hYmxlLW1vZHVsZXM9YWxs
Ci0gICAgLSAtLXdpdGgtYXByPS9hcHAvYmluL2Fwci0xLWNvbmZpZwotICAgIC0gLS13aXRoLWFw
ci11dGlsPS9hcHAvYmluL2FwdS0xLWNvbmZpZwotICAgIC0gLS13aXRoLXBjcmU9L2FwcAotICAg
IC0gLS1lbmFibGUtYXV0aG56LWZjZ2kKLSAgICAtIC0tZW5hYmxlLWNnaQotICAgIC0gLS1lbmFi
bGUtY2dpZAotLSBuYW1lOiBwaHAKLSAgc291cmNlczoKLSAgICAtIHR5cGU6IGFyY2hpdmUKLSAg
ICAgIHVybDogaHR0cHM6Ly9waHAubmV0L2Rpc3RyaWJ1dGlvbnMvcGhwLTcuMi42LnRhci54egot
ICAgICAgc2hhNTEyOiBkYTg2YjFmZjJkZjNiOWUyZDQ2ZTU5YTgwMjk2Yjk0MGQ4MTEzMjk3NWI2
MjFiZGVjOTYwMmY4YjRjOGQ5MWEzZmRjZDRmZmQ3Y2I5ODJkNjNkM2VjOTc0YjNhMTJhNzg1NGU0
MmE3M2I3ZjJjYzhlZWZhZGUxNDMzNWFhN2M3MQotICBjb25maWctb3B0czoKLSAgICAtIC0tZGlz
YWJsZS14bWwKLSAgICAtIC0tZGlzYWJsZS1kb20KLSAgICAtIC0tZGlzYWJsZS1saWJ4bWwKLSAg
ICAtIC0tZGlzYWJsZS1zaW1wbGV4bWwKLSAgICAtIC0tZGlzYWJsZS14bWxyZWFkZXIKLSAgICAt
IC0tZGlzYWJsZS14bWx3cml0ZXIKLSAgICAtIC0td2l0aG91dC1wZWFyCi0gICAgLSAtLXdpdGgt
YXB4czIKLSAgICAtIC0td2l0aC16bGliCi0gICAgLSAtLXdpdGgtbGliemlwCi0gICAgLSAtLWVu
YWJsZS1zb2NrZXRzPXNoYXJlZAotLSBuYW1lOiBsaWJldmVudAotICBzb3VyY2VzOgotICAgIC0g
dHlwZTogZ2l0Ci0gICAgICB1cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9saWJldmVudC9saWJldmVu
dC5naXQKLSAgICAgIGJyYW5jaDogZTdmZjRlZiAjIDIuMS44Ci0gIGNvbmZpZy1vcHRzOgotICAg
IC0gLS1kaXNhYmxlLWxpYmV2ZW50LXJlZ3Jlc3MKLQotIyBSZXF1aXJlbWVudCBmb3IgZmxhdHBr
dXRpbHMKLS0gbmFtZTogcHl0aG9uMy1weWFtbAotICBidWlsZHN5c3RlbTogc2ltcGxlCi0gIGJ1
aWxkLWNvbW1hbmRzOgotICAtIHBpcDMgaW5zdGFsbCAtLW5vLWluZGV4IC0tZmluZC1saW5rcz0i
ZmlsZTovLyR7UFdEfSIgLS1wcmVmaXg9JHtGTEFUUEFLX0RFU1R9IHB5YW1sCi0gIHNvdXJjZXM6
Ci0gIC0gdHlwZTogZmlsZQotICAgIHVybDogaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3Jn
L3BhY2thZ2VzLzRhLzg1L2RiNWEyZGY0NzcwNzJiMjkwMmIwZWI4OTJmZWIzN2Q4OGFjNjM1ZDM2
MjQ1YTcyYTZhNjliMjNiMzgzYS9QeVlBTUwtMy4xMi50YXIuZ3oKLSAgICBzaGEyNTY6IDU5Mjc2
NmM2MzAzMjA3YTIwZWZjNDQ1NTg3Nzc4MzIyZDdmNzNiMTYxYmQ5OTRmMjI3YWRhYTM0MWJhMjEy
YWIKLSAgLSB0eXBlOiBmaWxlCi0gICAgdXJsOiBodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5v
cmcvcGFja2FnZXMvOWUvMTcvMWQ0ZWQ2ZTFhNGMwOTE4YTAzNTdkZmEyZmRiZTI2YmY2M2Y2ZTYx
NjAxM2MwNGExNGJjZTlmZDMzZTQwL3B5YW1sLTE3LjEyLjEudGFyLmd6Ci0gICAgc2hhMjU2OiA2
NjYyM2M1MmYzNGQ4M2EyYzBmYzk2M2UwOGU4YjlkMGMxM2Q4ODQwNGUzYjQzYjE4NTJlZjcxZWRh
MTlhZmEzCi0KLS0gbmFtZTogcHl0aG9uMi1weWFtbAotICBidWlsZHN5c3RlbTogc2ltcGxlCi0g
IGJ1aWxkLWNvbW1hbmRzOgotICAtIHBpcDIgaW5zdGFsbCAtLW5vLWluZGV4IC0tZmluZC1saW5r
cz0iZmlsZTovLyR7UFdEfSIgLS10YXJnZXQ9L2FwcC9saWIvcHl0aG9uMi43L3NpdGUtcGFja2Fn
ZXMvIHB5YW1sCi0gIHNvdXJjZXM6Ci0gIC0gdHlwZTogZmlsZQotICAgIHVybDogaHR0cHM6Ly9m
aWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzLzRhLzg1L2RiNWEyZGY0NzcwNzJiMjkwMmIw
ZWI4OTJmZWIzN2Q4OGFjNjM1ZDM2MjQ1YTcyYTZhNjliMjNiMzgzYS9QeVlBTUwtMy4xMi50YXIu
Z3oKLSAgICBzaGEyNTY6IDU5Mjc2NmM2MzAzMjA3YTIwZWZjNDQ1NTg3Nzc4MzIyZDdmNzNiMTYx
YmQ5OTRmMjI3YWRhYTM0MWJhMjEyYWIKLSAgLSB0eXBlOiBmaWxlCi0gICAgdXJsOiBodHRwczov
L2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvOWUvMTcvMWQ0ZWQ2ZTFhNGMwOTE4YTAz
NTdkZmEyZmRiZTI2YmY2M2Y2ZTYxNjAxM2MwNGExNGJjZTlmZDMzZTQwL3B5YW1sLTE3LjEyLjEu
dGFyLmd6Ci0gICAgc2hhMjU2OiA2NjYyM2M1MmYzNGQ4M2EyYzBmYzk2M2UwOGU4YjlkMGMxM2Q4
ODQwNGUzYjQzYjE4NTJlZjcxZWRhMTlhZmEzCi0KLS0gbmFtZTogcHl0aG9uMi1zdWJwcm9jZXNz
MzIKLSAgYnVpbGRzeXN0ZW06IHNpbXBsZQotICBidWlsZC1jb21tYW5kczoKLSAgLSBwaXAyIGlu
c3RhbGwgLS10YXJnZXQ9L2FwcC9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvIC4KLSAgc291
cmNlczoKLSAgLSB0eXBlOiBhcmNoaXZlCi0gICAgdXJsOiBodHRwczovL2ZpbGVzLnB5dGhvbmhv
c3RlZC5vcmcvcGFja2FnZXMvYmUvMmIvYmVlYmE1ODNlOTg3N2U2NGRiMTBiNTJhOTY5MTVhZmMw
ZmVhYmY3MTQ0ZGNiZjJhMGQwZWE2OGJmNzNkL3N1YnByb2Nlc3MzMi0zLjUuMy50YXIuZ3oKLSAg
ICBzaGEyNTY6IDZiYzgyOTkyMzE2ZWVmM2NjZmYzMTliNTAzMzgwOTgwMWMwYzMzNzI3MDljNWY2
OTg1Mjk5Yzg4YWM3MjI1YzMKLQotIyBHU3RyZWFtZXIgbW9kdWxlcwotLSBuYW1lOiBsaWJ2cHgK
LSAgbm8tYXV0b2dlbjogdHJ1ZQotICBzb3VyY2VzOgotICAgIC0gdHlwZTogZ2l0Ci0gICAgICB1
cmw6IGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS93ZWJtL2xpYnZweAotICAgICAg
YnJhbmNoOiB2MS43LjAKLSAgY29uZmlnLW9wdHM6Ci0gICAgLSAtLWVuYWJsZS1waWMKLSAgICAt
IC0tYXM9bmFzbQotICAgIC0gLS1kaXNhYmxlLXVuaXQtdGVzdHMKLSAgICAtIC0tc2l6ZS1saW1p
dD0xNjM4NHgxNjM4NAotICAgIC0gLS1lbmFibGUtcG9zdHByb2MKLSAgICAtIC0tZW5hYmxlLW11
bHRpLXJlcy1lbmNvZGluZwotICAgIC0gLS1lbmFibGUtdGVtcG9yYWwtZGVub2lzaW5nCi0gICAg
LSAtLWVuYWJsZS12cDktdGVtcG9yYWwtZGVub2lzaW5nCi0gICAgLSAtLWVuYWJsZS12cDktcG9z
dHByb2MKLSAgICAtIC0tZW5hYmxlLXNoYXJlZAotLSBuYW1lOiBhb20KLSAgc291cmNlczoKLSAg
ICAtIHR5cGU6IGdpdAotICAgICAgdXJsOiBodHRwczovL2FvbWVkaWEuZ29vZ2xlc291cmNlLmNv
bS9hb20KLSAgICAgIGJyYW5jaDogY2RiMDgzZTg0YTcxZDZkMzExNjNhNGY2NGYxOGRjMTMyOGZk
NzgyYwotICBidWlsZHN5c3RlbTogY21ha2UtbmluamEKLSAgYnVpbGRkaXI6IHRydWUKLSAgY29u
ZmlnLW9wdHM6Ci0gICAgLSAtREJVSUxEX1NIQVJFRF9MSUJTPTEKLS0gbmFtZTogbGlidW53aW5k
Ci0gIHNvdXJjZXM6Ci0gICAgLSB0eXBlOiBnaXQKLSAgICAgIHVybDogaHR0cHM6Ly9naXRodWIu
Y29tL2xpYnVud2luZC9saWJ1bndpbmQuZ2l0Ci0gICAgICBjb21taXQ6IHYxLjIuMQotLSBuYW1l
OiBsaWJvcGVuaDI2NAotICBidWlsZHN5c3RlbTogbWVzb24KLSAgc291cmNlczoKLSAgICAtIHR5
cGU6IGdpdAotICAgICAgdXJsOiBodHRwczovL2dpdGh1Yi5jb20vY2lzY28vb3BlbmgyNjQuZ2l0
Ci0gICAgICBicmFuY2g6IGExYjNmMDdjNTI3MWYzMTI5OTdmY2MzNDUxMjM3MDMxNDQ0YzQ0NzUg
IyAxLjguMCArIGZpeCBmb3IgZ2NjIDgKLS0gbmFtZTogZ3N0cmVhbWVyCi0gIGJ1aWxkc3lzdGVt
OiBtZXNvbgotICBzb3VyY2VzOgotICAgIC0gdHlwZTogZ2l0Ci0gICAgICB1cmw6IGh0dHBzOi8v
Z2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0cmVhbWVyLmdpdAotICAgICAgYnJh
bmNoOiAxLjE2LjAKLSAgY29uZmlnLW9wdHM6Ci0gICAgLSAtRGd0a19kb2M9ZGlzYWJsZWQKLSAg
ICAtIC1EaW50cm9zcGVjdGlvbj1kaXNhYmxlZAotICAgIC0gLURleGFtcGxlcz1kaXNhYmxlZAot
ICAgIC0gLUR0ZXN0cz1kaXNhYmxlZAotLSBuYW1lOiBnc3QtcGx1Z2lucy1iYXNlCi0gIGJ1aWxk
c3lzdGVtOiBtZXNvbgotICBzb3VyY2VzOgotICAgIC0gdHlwZTogZ2l0Ci0gICAgICB1cmw6IGh0
dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXBsdWdpbnMtYmFzZS5n
aXQKLSAgICAgIGJyYW5jaDogMS4xNi4wCi0gIGNvbmZpZy1vcHRzOgotICAgIC0gLURndGtfZG9j
PWRpc2FibGVkCi0gICAgLSAtRGludHJvc3BlY3Rpb249ZGlzYWJsZWQKLSAgICAtIC1EZXhhbXBs
ZXM9ZGlzYWJsZWQKLSAgICAtIC1EdGVzdHM9ZGlzYWJsZWQKLS0gbmFtZTogZ3N0LXBsdWdpbnMt
Z29vZAotICBidWlsZHN5c3RlbTogbWVzb24KLSAgc291cmNlczoKLSAgICAtIHR5cGU6IGdpdAot
ICAgICAgdXJsOiBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdC1w
bHVnaW5zLWdvb2QuZ2l0Ci0gICAgICBicmFuY2g6IDEuMTYuMAotICAgIC0gdHlwZTogcGF0Y2gK
LSAgICAgIHBhdGg6IC4uL2dzdHJlYW1lci9wYXRjaGVzL2dzdC1wbHVnaW5zLWdvb2Qtc2NhbGV0
ZW1wby1BZHZlcnRpc2UtaW50ZXJsZWF2ZWQtbGF5b3V0LWluLWNhcHMtdGVtcC5wYXRjaAotICBj
b25maWctb3B0czoKLSAgICAtIC1EZ3RrX2RvYz1kaXNhYmxlZAotICAgIC0gLURpbnRyb3NwZWN0
aW9uPWRpc2FibGVkCi0gICAgLSAtRGV4YW1wbGVzPWRpc2FibGVkCi0gICAgLSAtRGd0azM9ZGlz
YWJsZWQKLS0gbmFtZTogeDI2NAotICBjb25maWctb3B0czoKLSAgICAtICItLWVuYWJsZS1zaGFy
ZWQiCi0gICAgLSAiLS1lbmFibGUtc3RhdGljIgotICAgIC0gIi0tZW5hYmxlLXBpYyIKLSAgICAt
ICItLWRpc2FibGUtbGF2ZiIKLSAgICAtICItLWRpc2FibGUtYXNtIgotICBzb3VyY2VzOgotICAg
IC0gdHlwZTogYXJjaGl2ZQotICAgICAgdXJsOiBodHRwOi8vZG93bmxvYWQudmlkZW9sYW4ub3Jn
L3B1Yi94MjY0L3NuYXBzaG90cy94MjY0LXNuYXBzaG90LTIwMTQwMjEyLTIyNDUtc3RhYmxlLnRh
ci5iejIKLSAgICAgIHNoYTI1NjogNWQ5OGU5ZTRmYWY2ZGQ1NWU3MTkzZWQzNzlhZmY0NzdiOGFj
YmRhNjc3Nzc1ODk1NmVmN2U1ZjA1MDY3YmUxOAotLSBuYW1lOiBnc3QtcGx1Z2lucy11Z2x5Ci0g
IGJ1aWxkc3lzdGVtOiBtZXNvbgotICBzb3VyY2VzOgotICAgIC0gdHlwZTogZ2l0Ci0gICAgICB1
cmw6IGh0dHBzOi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvZ2l0L2dzdHJlYW1lci9nc3QtcGx1
Z2lucy11Z2x5Ci0gICAgICBicmFuY2g6IDEuMTYuMAotICBjb25maWctb3B0czoKLSAgICAtIC1E
Z3RrX2RvYz1kaXNhYmxlZAotLSBuYW1lOiBnc3QtcGx1Z2lucy1iYWQKLSAgYnVpbGRzeXN0ZW06
IG1lc29uCi0gIHNvdXJjZXM6Ci0gICAgLSB0eXBlOiBnaXQKLSAgICAgIHVybDogaHR0cHM6Ly9n
aXRsYWIuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9nc3QtcGx1Z2lucy1iYWQuZ2l0Ci0gICAg
ICBicmFuY2g6IDEuMTYuMAotICBjb25maWctb3B0czoKLSAgICAtIC1EZ3RrX2RvYz1kaXNhYmxl
ZAotICAgIC0gLURpbnRyb3NwZWN0aW9uPWRpc2FibGVkCi0gICAgLSAtRGV4YW1wbGVzPWRpc2Fi
bGVkCi0tIG5hbWU6IGZmbXBlZwotICBzb3VyY2VzOgotICAgIC0gdHlwZTogYXJjaGl2ZQotICAg
ICAgdXJsOiBodHRwczovL2ZmbXBlZy5vcmcvcmVsZWFzZXMvZmZtcGVnLTQuMC40LnRhci5negot
ICAgICAgc2hhMjU2OiA4MGJiNjg1YWJmY2RkYTdjOWI2YzljNWNhZjFkOGRiYjkyNzg1ODA1MGQ3
Mzc3YzJiOGYzNDg4YzdlOGE5YjdmCi0gIGNvbmZpZy1vcHRzOgotICAgIC0gLS1lbmFibGUtc3Rh
dGljCi0gICAgLSAtLWVuYWJsZS1waWMKLSAgICAtIC0tZGlzYWJsZS1hdmRldmljZQotICAgIC0g
LS1kaXNhYmxlLXBvc3Rwcm9jCi0gICAgLSAtLWRpc2FibGUtc3dzY2FsZQotICAgIC0gLS1kaXNh
YmxlLXByb2dyYW1zCi0gICAgLSAtLWRpc2FibGUtZmZwbGF5Ci0gICAgLSAtLWRpc2FibGUtZmZw
cm9iZQotICAgIC0gLS1kaXNhYmxlLWZmbXBlZwotICAgIC0gLS1kaXNhYmxlLWVuY29kZXI9Zmxh
YwotICAgIC0gLS1kaXNhYmxlLXByb3RvY29scwotICAgIC0gLS1kaXNhYmxlLWRldmljZXMKLSAg
ICAtIC0tZGlzYWJsZS1uZXR3b3JrCi0gICAgLSAtLWRpc2FibGUtaHdhY2NlbHMKLSAgICAtIC0t
ZGlzYWJsZS1keHZhMgotICAgIC0gLS1kaXNhYmxlLXZkcGF1Ci0gICAgLSAtLWRpc2FibGUtZmls
dGVycwotICAgIC0gLS1lbmFibGUtZmlsdGVyPXlhZGlmCi0gICAgLSAtLWRpc2FibGUtZG9jCi0g
ICAgLSAtLWRpc2FibGUtZDNkMTF2YQotICAgIC0gLS1kaXNhYmxlLWR4dmEyCi0gICAgLSAtLWRp
c2FibGUtYXVkaW90b29sYm94Ci0gICAgLSAtLWRpc2FibGUtdmlkZW90b29sYm94Ci0gICAgLSAt
LWRpc2FibGUtdmFhcGkKLSAgICAtIC0tZGlzYWJsZS1jcnlzdGFsaGQKLSAgICAtIC0tZGlzYWJs
ZS1tZWRpYWNvZGVjCi0gICAgLSAtLWRpc2FibGUtbnZlbmMKLSAgICAtIC0tZGlzYWJsZS1tbWFs
Ci0gICAgLSAtLWRpc2FibGUtb214Ci0gICAgLSAtLWRpc2FibGUtb214LXJwaQotICAgIC0gLS1k
aXNhYmxlLWN1ZGEKLSAgICAtIC0tZGlzYWJsZS1jdXZpZAotICAgIC0gLS1kaXNhYmxlLWxpYm1m
eAotICAgIC0gLS1kaXNhYmxlLWxpYm5wcAotICAgIC0gLS1kaXNhYmxlLWljb252Ci0gICAgLSAt
LWRpc2FibGUtam5pCi0gICAgLSAtLWRpc2FibGUtdjRsMl9tMm0KLSAgICAtIC0tZW5hYmxlLW9w
dGltaXphdGlvbnMKLS0gbmFtZTogZ3N0LWxpYmF2Ci0gIGJ1aWxkc3lzdGVtOiBtZXNvbgotICBi
dWlsZGRpcjogdHJ1ZQotICBzb3VyY2VzOgotICAgIC0gdHlwZTogYXJjaGl2ZQotICAgICAgdXJs
OiBodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1saWJhdi9nc3QtbGli
YXYtMS4xNi4wLnRhci54egotICAgICAgc2hhMjU2OiBkZmFjMTE5MDQzYTljZmRjYWNkN2FjZGU3
N2Y2NzRhYjE3MmNmMjUzN2I1ODEyYmU1MmY0OWU5Y2RkYzUzZDlhCi0gIGNvbmZpZy1vcHRzOgot
ICAgIC0gLURndGtfZG9jPWRpc2FibGVkCi0KLS0gbmFtZTogbGliZ2NyeXB0ICMgU3BlZWR1cCBs
aWJnY3J5cHQKLSAgc291cmNlczoKLSAgICAtIHR5cGU6IGdpdAotICAgICAgdXJsOiBodHRwczov
L2Rldi5nbnVwZy5vcmcvc291cmNlL2xpYmdjcnlwdC5naXQKLSAgICAgIGJyYW5jaDogbGliZ2Ny
eXB0LTEuOC40Ci0gICAgLSB0eXBlOiBwYXRjaAotICAgICAgcGF0aDogcGF0Y2hlcy9saWJnY3J5
cHQtMDAwMS1Vc2UtcGtnLWNvbmZpZy10by1kZXRlY3QtZ3BnLWVycm9yLnBhdGNoCi0gICAgLSB0
eXBlOiBwYXRjaAotICAgICAgcGF0aDogLi4vZ3RrL3BhdGNoZXMvbGliZ2NyeXB0LXVzZS1vbmx5
LWRldi11cmFuZG9tLWZvci10ZXN0aW5nLnBhdGNoCi0gIGNvbmZpZy1vcHRzOgotICAgIC0gLS1k
aXNhYmxlLWRvYwotCi0tIG5hbWU6IHBlcmwtY2dpLXBtCi0gIGJ1aWxkc3lzdGVtOiBzaW1wbGUK
LSAgYnVpbGQtY29tbWFuZHM6Ci0gICAgLSBwZXJsIE1ha2VmaWxlLlBMIFBSRUZJWD0vYXBwIExJ
Qj0vYXBwL2xpYi9wZXJsLwotICAgIC0gbWFrZSBpbnN0YWxsCi0gIHNvdXJjZXM6Ci0gICAgLSB0
eXBlOiBhcmNoaXZlCi0gICAgICB1cmw6IGh0dHBzOi8vY3Bhbi5tZXRhY3Bhbi5vcmcvYXV0aG9y
cy9pZC9ML0xFL0xFRUpPL0NHSS00LjM4LnRhci5negotICAgICAgc2hhMjU2OiA4YzU4ZjRhNTI5
YmI5MmE5MTRiMjJiN2U2NGM1ZTMxMTg1Yzk4NTRhNDA3MGE2ZGZhZDQ0ZmU1Y2MyNDhlN2Q0Ci0K
LS0gbmFtZTogcHl0aG9uMi12aXJ0dWFsZW52Ci0gIGJ1aWxkc3lzdGVtOiBzaW1wbGUKLSAgYnVp
bGQtY29tbWFuZHM6Ci0gIC0gcGlwMiBpbnN0YWxsIC0tbm8taW5kZXggLS1maW5kLWxpbmtzPSJm
aWxlOi8vJHtQV0R9IiAtLXRhcmdldD0vYXBwL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy8g
dmlydHVhbGVudgotICAtIGxuIC1zIC9hcHAvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3Zp
cnR1YWxlbnYucHkgL2FwcC9iaW4vdmlydHVhbGVudgotICAtIGNobW9kICt4IC9hcHAvYmluL3Zp
cnR1YWxlbnYKLSAgc291cmNlczoKLSAgLSB0eXBlOiBmaWxlCi0gICAgdXJsOiBodHRwczovL2Zp
bGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvMzMvYmMvZmEwYjUzNDcxMzljZDk1NjRmMGQ0
NGViZDJiMTQ3YWM5N2MzNmIyNDAzOTQzZGJlZThhMjVmZDc0MDEyL3ZpcnR1YWxlbnYtMTYuMC4w
LnRhci5negotICAgIHNoYTI1NjogY2EwN2I0YzBiNTRlMTRhOTFhZjlmMzRkMDkxOTc5MGIwMTY5
MjNkMTU3YWZkYTVlZmRkZTU1Yzk2NzE4Zjc1MgotCi0tIG5hbWU6IGxpYmNhcC1uZwotICBzb3Vy
Y2VzOgotICAgIC0gdHlwZTogZ2l0Ci0gICAgICB1cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9zdGV2
ZWdydWJiL2xpYmNhcC1uZwotICAgICAgYnJhbmNoOiB2MC43LjkKLSAgY29uZmlnLW9wdHM6Ci0g
ICAgLSAtLXdpdGgtcHl0aG9uPW5vCi0gICAgLSAtLXdpdGgtcHl0aG9uMz1ubwotCi0tIG5hbWU6
IGx6bzIKLSAgc291cmNlczoKLSAgICAtIHR5cGU6IGFyY2hpdmUKLSAgICAgIHVybDogaHR0cDov
L3d3dy5vYmVyaHVtZXIuY29tL29wZW5zb3VyY2UvbHpvL2Rvd25sb2FkL2x6by0yLjEwLnRhci5n
egotICAgICAgc2hhMTogNDkyNDY3NmE5YmFlNWRiNThlZjEyOWRjMWNlYmNlM2JhYTNjNGI1ZAot
Ci0tIG5hbWU6IGljZWNjCi0gIHNvdXJjZXM6Ci0gICAgLSB0eXBlOiBnaXQKLSAgICAgIHVybDog
aHR0cHM6Ly9naXRodWIuY29tL2ljZWNjL2ljZWNyZWFtCi0gICAgICBicmFuY2g6ICIxLjEiCi0g
IGNvbmZpZy1vcHRzOgotICAgIC0gLS13aXRob3V0LW1hbgotCi0tIG5hbWU6IGJyb3RsaQotICBz
b3VyY2VzOgotICAtIHR5cGU6IGFyY2hpdmUKLSAgICB1cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9n
b29nbGUvYnJvdGxpL2FyY2hpdmUvdjEuMC41LnRhci5negotICAgIHNoYTI1NjogM2Q1YmVkZDQ4
ZWRiOTA5ZmUzYjg3Y2I5OWY3ZDEzOWI5ODdlZjZmMTYxNmI3ZTIyZDc0ZTkyODI3MGEyZmQyMAot
ICBidWlsZHN5c3RlbTogY21ha2UtbmluamEKLQotLSBuYW1lOiB3b2ZmMgotICBzb3VyY2VzOgot
ICAtIHR5cGU6IGFyY2hpdmUKLSAgICB1cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvd29m
ZjIvYXJjaGl2ZS92MS4wLjIudGFyLmd6Ci0gICAgc2hhMjU2OiBhZGQyNzJiYjA5ZTYzODRhNDgz
M2ZmY2E0ODk2MzUwZmRiMTZlMGNhMjJkZjY4YzAzODQ3NzNjNjdhMTc1NTk0Ci0gIGJ1aWxkc3lz
dGVtOiBjbWFrZS1uaW5qYQotCi0tIG5hbWU6IG9wZW5qcGVnCi0gIHNvdXJjZXM6Ci0gIC0gdHlw
ZTogYXJjaGl2ZQotICAgIHVybDogaHR0cDovL2dpdGh1Yi5jb20vdWNsb3V2YWluL29wZW5qcGVn
L2FyY2hpdmUvdjIuMy4wLnRhci5negotICAgIHNoYTI1NjogM2RjNzg3YzFiYjYwMjNiYTg0NmMy
YTBkOWIxZjZlMTc5ZjFjZDI1NTE3MmJkZTllYjc1YjAxZjFlNmM3ZDcxYQotICBidWlsZHN5c3Rl
bTogY21ha2UtbmluamEKZGlmZiAtLWdpdCBhL1Rvb2xzL2ZsYXRwYWsvb3JnLndlYmtpdC5HVEsu
eWFtbCBiL1Rvb2xzL2ZsYXRwYWsvb3JnLndlYmtpdC5HVEsueWFtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNDllY2NmZDE2MzA4ZjRiNDExYWRiNzg1ZGY3YmZjOGUwZGY1NWQyMS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9mbGF0
cGFrL29yZy53ZWJraXQuR1RLLnlhbWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMzggKzAsMCBAQAot
LSBuYW1lOiBtZXNhCi0gIHNvdXJjZXM6Ci0gICAgLSB0eXBlOiBhcmNoaXZlCi0gICAgICB1cmw6
IGh0dHBzOi8vbWVzYS5mcmVlZGVza3RvcC5vcmcvYXJjaGl2ZS9tZXNhLTE4LjAuMy50YXIueHoK
LSAgICAgIHNoYTI1NjogMDk5ZDk2NjczMjdhNzZhNjE3NDFhNTMzZjk1MDY3ZDc2ZWE3MWE2NTZl
NjZiOTE1MDdiM2MwY2FmMWQ0OWUzMAotICBjb25maWctb3B0czoKLSAgICAtIC0tcHJlZml4PS9h
cHAvc29mdEdMCi0gICAgLSAtLWRpc2FibGUtZHJpMwotICAgIC0gLS1lbmFibGUtZHJpCi0gICAg
LSAtLWVuYWJsZS1nbHgKLSAgICAtIC0tZW5hYmxlLWVnbAotICAgIC0gLS13aXRoLWVnbC1wbGF0
Zm9ybXM9eDExLHdheWxhbmQKLSAgICAtIC0td2l0aC1kcmktZHJpdmVycz1zd3Jhc3QKLSAgICAt
IC0td2l0aC1nYWxsaXVtLWRyaXZlcnM9c3dyYXN0Ci0KLS0gbmFtZTogd2Via2l0Z3RrLXRlc3Qt
Zm9udHMKLSAgbm8tYXV0b2dlbjogdHJ1ZQotICBzb3VyY2VzOgotICAgIC0gdHlwZTogZ2l0Ci0g
ICAgICB1cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJLaXRHVEsvd2Via2l0Z3RrLXRlc3QtZm9u
dHMuZ2l0Ci0gIGJ1aWxkc3lzdGVtOiBzaW1wbGUKLSAgYnVpbGQtY29tbWFuZHM6Ci0gICAgIyBG
SVhNRTogTWFrZSBBY3RpdmF0ZUZvbnRXUEUgc21hcnRlci4KLSAgICAtIG1ha2UgaW5zdGFsbCBE
RVNURElSPS9hcHAvV2ViS2l0QnVpbGQvRGVwZW5kZW5jaWVzR1RLL1Jvb3QKLQotLSBuYW1lOiB4
b3JnLXV0aWwtbWFjcm9zCi0gIHNvdXJjZXM6Ci0gICAgLSB0eXBlOiBnaXQKLSAgICAgIHVybDog
aHR0cHM6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9naXQveG9yZy91dGlsL21hY3Jvcy5naXQK
LSAgICAgIGJyYW5jaDogdXRpbC1tYWNyb3MtMS4xOS4yCi0KLS0gbmFtZTogeG9yZy1mb250LXV0
aWwKLSAgc291cmNlczoKLSAgICAtIHR5cGU6IGdpdAotICAgICAgdXJsOiBodHRwczovL2Fub25n
aXQuZnJlZWRlc2t0b3Aub3JnL2dpdC94b3JnL2ZvbnQvdXRpbC5naXQKLSAgICAgIGJyYW5jaDog
Zm9udC11dGlsLTEuMy4xCi0KLS0gbmFtZTogeGtiZmlsZQotICBzb3VyY2VzOgotICAgIC0gdHlw
ZTogZ2l0Ci0gICAgICBicmFuY2g6IGxpYnhrYmZpbGUtMS4wLjkKLSAgICAgIHVybDogaHR0cHM6
Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9naXQveG9yZy9saWIvbGlieGtiZmlsZS5naXQKLQot
LSBuYW1lOiBmb250ZW5jCi0gIHNvdXJjZXM6Ci0gICAgLSB0eXBlOiBnaXQKLSAgICAgIGJyYW5j
aDogbGliZm9udGVuYy0xLjEuMwotICAgICAgdXJsOiBodHRwczovL2Fub25naXQuZnJlZWRlc2t0
b3Aub3JnL2dpdC94b3JnL2xpYi9saWJmb250ZW5jLmdpdAotCi0tIG5hbWU6IHhmb250Ci0gIHNv
dXJjZXM6Ci0gICAgLSB0eXBlOiBnaXQKLSAgICAgIGJyYW5jaDogbGliWGZvbnQyLTIuMC4zCi0g
ICAgICB1cmw6IGh0dHBzOi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvZ2l0L3hvcmcvbGliL2xp
Ylhmb250LmdpdAotCi0tIG5hbWU6IHh2ZmIKLSAgc291cmNlczoKLSAgICAtIHR5cGU6IGdpdAot
ICAgICAgdXJsOiBodHRwczovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL2dpdC94b3JnL3hzZXJ2
ZXIuZ2l0Ci0gICAgICBicmFuY2g6IHhvcmctc2VydmVyLTEuMTkuNgotICAgIC0gdHlwZTogcGF0
Y2gKLSAgICAgIHBhdGg6IHBhdGNoZXMveHZmYi0wMDAxLUhBQ0stQXZvaWQtY29tcGlsaW5nLWEt
a2JtLWZpbGUucGF0Y2gKLSAgICAtIHR5cGU6IHBhdGNoCi0gICAgICBwYXRoOiAuLi9ndGsvcGF0
Y2hlcy94c2VydmVyLXJlbW92ZS1ib2d1cy1kZXBlbmRlbmNpZXMucGF0Y2gKLSAgICAtIHR5cGU6
IHBhdGNoCi0gICAgICBwYXRoOiAuLi9ndGsvcGF0Y2hlcy94c2VydmVyLXNlYXJjaC1mb3ItRFJJ
LWRyaXZlcnMtYXQtTElCR0xfRFJJVkVSU19QQVRILWVudmlyb24ucGF0Y2gKLSAgY29uZmlnLW9w
dHM6Ci0gICAgLSAtLWVuYWJsZS14dmZiCi0gICAgLSAtLWRpc2FibGUteHdheWxhbmQKLSAgICAt
IC0tZW5hYmxlLXh2ZmIKLSAgICAtIC0tZGlzYWJsZS14d2F5bGFuZAotICAgIC0gLS1kaXNhYmxl
LXhpbmVyYW1hCi0gICAgLSAtLWVuYWJsZS1nbHgKLSAgICAtIC0tZW5hYmxlLWNvbXBvc2l0ZQot
ICAgIC0gLS1kaXNhYmxlLXhvcmcKLSAgICAtIC0tZGlzYWJsZS1kbXgKLSAgICAtIC0tZGlzYWJs
ZS14bmVzdAotICAgIC0gLS1kaXNhYmxlLXhxdWFydHoKLSAgICAtIC0tZGlzYWJsZS14d2luCi0g
ICAgLSAtLWRpc2FibGUteGVwaHlyCi0gICAgLSAtLWRpc2FibGUteGZha2UKLSAgICAtIC0tZGlz
YWJsZS14ZmJkZXYKLSAgICAtIC0tZGlzYWJsZS1pbnN0YWxsLXNldHVpZAotICAgIC0gLS1kaXNh
YmxlLXVuaXQtdGVzdHMKLSAgICAtIC0tZGlzYWJsZS1wcmVzZW50Ci0gICAgLSAtLWVuYWJsZS11
bml4LXRyYW5zcG9ydAotICAgIC0gLS1lbmFibGUtdGNwLXRyYW5zcG9ydAotICAgIC0gLS1kaXNh
YmxlLWxvY2FsLXRyYW5zcG9ydAotICAgIC0gLS13aXRob3V0LWR0cmFjZQotCi0jIFJlcXVpcmVk
IGZvciB0aGUgR1RLMiBwbHVnaW4gcHJvY2VzcwotLSBuYW1lOiBndGsyCi0gIHNvdXJjZXM6Ci0g
IC0gdHlwZTogYXJjaGl2ZQotICAgIHVybDogaHR0cHM6Ly9kb3dubG9hZC5nbm9tZS5vcmcvc291
cmNlcy9ndGsrLzIuMjQvZ3RrKy0yLjI0LjMyLnRhci54egotICAgIHNoYTI1NjogYjZjOGE5M2Rk
ZGE1ZWFiZTNiZmVlMWViMzk2MzZjOWEwM2QyYTU2YzdiNjI4MjhiMzU5YmYxOTc5NDNjNTgyZQot
ICAtIHR5cGU6IHNjcmlwdAotICAgIGNvbW1hbmRzOgotICAgICAgLSAic2VkIC1pICcxcy9weXRo
b24kLyYyLycgZ3RrL2d0ay1idWlsZGVyLWNvbnZlcnQiCi0gICAgICAtICJzZWQgLWkgLWUgJ3Mv
IC1zaGFyZWQgLyAtV2wsLU8xLC0tYXMtbmVlZGVkXDAvZycgbGlidG9vbCIKLSAgY29uZmlnLW9w
dHM6Ci0gICAgLSAtLWRpc2FibGUtZ3RrLWRvYwotICAgIC0gLS1kaXNhYmxlLWN1cHMKLSAgICAt
IC0tZGlzYWJsZS1wYXBpCi0gICAgLSAtLWVuYWJsZS1pbnRyb3NwZWN0aW9uPW5vCi0gICAgLSAt
LXdpdGgtZ2RrdGFyZ2V0PXgxMQotCi0jIFJlcXVpcmVkIGZvciBydW4tZ3RrLXRlc3RzCi0tIG5h
bWU6IHB5Y2Fpcm8KLSAgYnVpbGRzeXN0ZW06IHNpbXBsZQotICBidWlsZC1jb21tYW5kczoKLSAg
LSBweXRob24yIHNldHVwLnB5IGluc3RhbGwgLS1wcmVmaXg9L2FwcAotICBzb3VyY2VzOgotICAt
IHR5cGU6IGFyY2hpdmUKLSAgICB1cmw6IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3BhY2thZ2Vz
L2VmLzk3L2IzM2RjNTMzZWE2MDc2ZDRlYTljYmQyZmUwNDlhMmI0YTNkZjVjNWI2ZmJhOWExODI2
MTZmNmY4ZDMxMC9weWNhaXJvLTEuMTUuNC50YXIuZ3oKLSAgICBzaGEyNTY6IGVlNGMzMDY4YzA0
ODIzMGU1Y2U3NGJiODk5NGEwMjQ3MTExMjliZGUxYWYxZDc2ZTMyNzZjN2FjZDgxYzQzNTcKLSAg
Y2xlYW51cDoKLSAgLSAiL2luY2x1ZGUiCi0gIC0gIi9saWIvcGtnY29uZmlnIgotCi0tIG5hbWU6
IHB5Z29iamVjdC1weXRob24yCi0gIGJ1aWxkLW9wdGlvbnM6Ci0gICAgZW52OgotICAgICAgUFlU
SE9OOiAiL3Vzci9iaW4vcHl0aG9uMiIKLSAgc291cmNlczoKLSAgLSB0eXBlOiBhcmNoaXZlCi0g
ICAgdXJsOiBodHRwczovL2Rvd25sb2FkLmdub21lLm9yZy9zb3VyY2VzL3B5Z29iamVjdC8zLjI4
L3B5Z29iamVjdC0zLjI4LjEudGFyLnh6Ci0gICAgc2hhMjU2OiA0MjMxMmI0YTUwMTU1NzFmYTBh
NGYyZDIwMTAwNWRhNDZiNzFjMjUxZWEyNjI1YmM5NTcwMmQwNzFjNGZmODk1Ci0gIGNsZWFudXA6
Ci0gIC0gIi9pbmNsdWRlIgotICAtICIvbGliL3BrZ2NvbmZpZyIKLSAgLSAiL2xpYi9weXRob24y
Ljcvc2l0ZS1wYWNrYWdlcy9naS8qLmxhIgotCi0tIG5hbWU6IG9yZy53ZWJraXQuR1RLCi0gIGJ1
aWxkc3lzdGVtOiBzaW1wbGUKLSAgYnVpbGQtY29tbWFuZHM6Ci0gICAgLSAvYXBwL3dlYmtpdC9U
b29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdCAtLWd0ayAtLXByZWZpeD0vYXBwCi0KZGlmZiAtLWdp
dCBhL1Rvb2xzL2ZsYXRwYWsvb3JnLndlYmtpdC5XUEUueWFtbCBiL1Rvb2xzL2ZsYXRwYWsvb3Jn
LndlYmtpdC5XUEUueWFtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGNiYWJiYWEw
Y2I4ZTE1OGFkNDQ0MWY5OGI0ZDA1M2E4Y2IzYmE3Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9mbGF0cGFrL29yZy53ZWJraXQuV1BFLnlhbWwK
KysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi0tIG9yZy53ZWJraXQuV1BFTW9kdWxlcy55
YW1sCi0tIG5hbWU6IHdlYmtpdGd0ay10ZXN0LWZvbnRzCi0gIG5vLWF1dG9nZW46IHRydWUKLSAg
c291cmNlczoKLSAgICAtIHR5cGU6IGdpdAotICAgICAgdXJsOiBodHRwczovL2dpdGh1Yi5jb20v
V2ViS2l0R1RLL3dlYmtpdGd0ay10ZXN0LWZvbnRzLmdpdAotICBidWlsZHN5c3RlbTogc2ltcGxl
Ci0gIGJ1aWxkLWNvbW1hbmRzOgotICAgICMgRklYTUU6IE1ha2UgQWN0aXZhdGVGb250V1BFIHNt
YXJ0ZXIuCi0gICAgLSBtYWtlIGluc3RhbGwgREVTVERJUj0vYXBwL1dlYktpdEJ1aWxkL0RlcGVu
ZGVuY2llc1dQRS9Sb290Ci0tIG5hbWU6IG9yZy53ZWJraXQuV1BFCi0gIGJ1aWxkc3lzdGVtOiBz
aW1wbGUKLSAgYnVpbGQtY29tbWFuZHM6Ci0gICAgLSAvYXBwL3dlYmtpdC9Ub29scy9TY3JpcHRz
L2J1aWxkLXdlYmtpdCAtLXdwZSAtLXByZWZpeD0vYXBwCmRpZmYgLS1naXQgYS9Ub29scy9mbGF0
cGFrL29yZy53ZWJraXQuV1BFTW9kdWxlcy55YW1sIGIvVG9vbHMvZmxhdHBhay9vcmcud2Via2l0
LldQRU1vZHVsZXMueWFtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTcwMzQ4ZjJk
MTQ5NDVkMmRiMzRhNDcxZTIxYTYwM2RlNDM4YmQ0OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9mbGF0cGFrL29yZy53ZWJraXQuV1BFTW9kdWxl
cy55YW1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotLSBuYW1lOiBsaWJ3cGUKLSAg
YnVpbGRzeXN0ZW06IGNtYWtlLW5pbmphCi0gIHNvdXJjZXM6Ci0gICAgLSB0eXBlOiBhcmNoaXZl
Ci0gICAgICB1cmw6IGh0dHBzOi8vd3Bld2Via2l0Lm9yZy9yZWxlYXNlcy9saWJ3cGUtMS4zLjAu
dGFyLnh6Ci0gICAgICBzaGEyNTY6IDY4OTg2NjQ3YWYyNDMzZTc0ZjgzMGEwNmE0OTdlZDUzNmRi
Yzg3MjFiMDQwMjZlZDgyNjExYTU4NGJlNzExNDgKLS0gbmFtZTogd3BlYmFja2VuZC1mZG8KLSAg
YnVpbGRzeXN0ZW06IGNtYWtlLW5pbmphCi0gIHNvdXJjZXM6Ci0gICAgLSB0eXBlOiBhcmNoaXZl
Ci0gICAgICB1cmw6IGh0dHBzOi8vd3Bld2Via2l0Lm9yZy9yZWxlYXNlcy93cGViYWNrZW5kLWZk
by0xLjMuMC50YXIueHoKLSAgICAgIHNoYTI1NjogZmVkOWFiMjlmNWQ1M2NmNDY1MTg4ZGE4MGQw
MTRmM2FhMDY3Yzc3NzA0Zjg1MDhjNmJkMTc5NzFmZGVkMzU5ZApkaWZmIC0tZ2l0IGEvVG9vbHMv
ZmxhdHBhay9vcmcud2Via2l0LldQRVFULnlhbWwgYi9Ub29scy9mbGF0cGFrL29yZy53ZWJraXQu
V1BFUVQueWFtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGUzNjk1N2E0NjFiYzM0
NzlhMzhlZmZkZTZkOTU4YmQwMDcyNjc4ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Ub29scy9mbGF0cGFrL29yZy53ZWJraXQuV1BFUVQueWFtbAorKysg
L2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLWFwcC1pZDogb3JnLndlYmtpdC5XUEVRVAotcnVu
dGltZTogb3JnLmtkZS5QbGF0Zm9ybQotcnVudGltZS12ZXJzaW9uOiAiNS4xMiIKLSMgQ29udHJv
bCB0aGUgZXhhY3QgdmVyc2lvbiBvZiB0aGUgU2RrL1J1bnRpbWUgdGhhdCBpcyBiZWluZyB1c2Vk
Lgotc2RrLWhhc2g6IGQ2ZWZhMjRlMjdjMWM4NzhhZDRmZGU3NmI3M2M5NmExMWJlMzJiNTk4YWU4
N2FlZmJlMzM5ZWU0YmIxOWE4YmUKLXJ1bnRpbWUtaGFzaDogMTAxODcxZTA5MTAwMDYxNmFkMmI2
MzVlMDZjNDE0ZWIwZTFjNGUxYzM0MjkyYTIwNWM1MjM5OTM1ZWU1ZWE0NAotc2RrOiBvcmcua2Rl
LlNkawotY29tbWFuZDogJShDT01NQU5EKXMKLWZpbmlzaC1hcmdzOgotICAjIEJhc2ljYWxseSBu
byBzYW5kYm94aW5nLCB0aGUgZ29hbCBoZXJlIGlzIHRvIG1ha2UgaXQgZmxleGlibGUKLSAgIyBm
b3IgZGV2ZWxvcGVycywgbm90IHJlYWxseSB0byBpc29sYXRlIChvcGVubmluZyBhbGwgZGV2aWNl
cwotICAjIHRvIGFsbG93IGFjY2VzIHZpZGVvIGNhbWVyYXMgdW50aWwgd2UgaGF2ZSBhIHBvcnRh
bCBhdCBsZWFzdCkuCi0gIC0gLS1zaGFyZT1pcGMKLSAgLSAtLXNvY2tldD14MTEKLSAgLSAtLXNv
Y2tldD13YXlsYW5kCi0gIC0gLS1kZXZpY2U9YWxsCi0gIC0gLS1zaGFyZT1uZXR3b3JrCi0gIC0g
LS1zb2NrZXQ9cHVsc2VhdWRpbwotICAtIC0tc3lzdGVtLXRhbGstbmFtZT1vcmcuZnJlZWRlc2t0
b3AuR2VvQ2x1ZTIKLSAgLSAtLXN5c3RlbS10YWxrLW5hbWU9b3JnLmExMXkuQnVzCi0gIC0gLS1m
aWxlc3lzdGVtPWhvc3QKLSAgLSAtLXNvY2tldD1zeXN0ZW0tYnVzCi0gIC0gLS10YWxrLW5hbWU9
b3JnLmZyZWVkZXNrdG9wLkZsYXRwYWsKLSAgLSAtLWVudj1HU1RfUFJFU0VUX1BBVEg9L2FwcC9z
aGFyZS9nc3RyZWFtZXItMS4wL3ByZXNldHMvCi1idWlsZC1vcHRpb25zOgotICBjZmxhZ3M6IC1P
MiAtZwotICBjeHhmbGFnczogLU8yIC1nCi0gIHN0cmlwOiBmYWxzZQotICBuby1kZWJ1Z2luZm86
IHRydWUKLW1vZHVsZXM6Ci0gIC0gb3JnLndlYmtpdC5Db21tb25Nb2R1bGVzLnlhbWwKLSAgLSBv
cmcud2Via2l0LldQRU1vZHVsZXMueWFtbAotCi0gICMgVGhpcyBtb2R1bGUgaXMgbm90IGFjdHVh
bGx5IGJ1aWx0LgotICAtIG5hbWU6IG9yZy53ZWJraXQuV1BFUVQKLSAgICBidWlsZHN5c3RlbTog
Y21ha2UKLSAgICBzb3VyY2VzOgotICAgIC0gdHlwZTogZGlyCi0gICAgICBwYXRoOiAvYXBwL3dl
YmtpdC9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0CmRpZmYgLS1naXQgYS9Ub29s
cy9mbGF0cGFrL29yZy53ZWJraXQuV2ViS2l0LnlhbWwgYi9Ub29scy9mbGF0cGFrL29yZy53ZWJr
aXQuV2ViS2l0LnlhbWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2ZDYxMjY2MGQ4
YTIwNDVkYTMxMmZkYjA5MWI3OGU1OGE4MDdlNjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvZmxhdHBhay9vcmcud2Via2l0LldlYktpdC55YW1s
CisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotYXBwLWlkOiAlKFBPUlROQU1FKXMKLXJ1
bnRpbWU6IG9yZy5nbm9tZS5QbGF0Zm9ybQotcnVudGltZS12ZXJzaW9uOiAiMy4zMiIKLSMgQ29u
dHJvbCB0aGUgZXhhY3QgdmVyc2lvbiBvZiB0aGUgU2RrL1J1bnRpbWUgdGhhdCBpcyBiZWluZyB1
c2VkLgotc2RrLWhhc2g6IGIzYjliMWQxYjE5ZWEyYmI3MjAxOTQyOGNhNzVjN2E3ODQ1NWU5ODZh
MGY5MWRkZGY2YTI5YzkyOTkwY2M1YTcKLXJ1bnRpbWUtaGFzaDogN2M5ZDU1OTJkODA1ZDBiN2My
MTIxOTBmZDgxMThlNGM3OGNiOGVkOGY4MWU2ODc4NTg5NzI2NzBkYWNjZmY3Ngotc2RrOiBvcmcu
Z25vbWUuU2RrCi1jb21tYW5kOiAlKENPTU1BTkQpcwotZmluaXNoLWFyZ3M6Ci0gICMgQmFzaWNh
bGx5IG5vIHNhbmRib3hpbmcsIHRoZSBnb2FsIGhlcmUgaXMgdG8gbWFrZSBpdCBmbGV4aWJsZQot
ICAjIGZvciBkZXZlbG9wZXJzLCBub3QgcmVhbGx5IHRvIGlzb2xhdGUgKG9wZW5uaW5nIGFsbCBk
ZXZpY2VzCi0gICMgdG8gYWxsb3cgYWNjZXMgdmlkZW8gY2FtZXJhcyB1bnRpbCB3ZSBoYXZlIGEg
cG9ydGFsIGF0IGxlYXN0KS4KLSAgLSAtLXNoYXJlPWlwYwotICAtIC0tc29ja2V0PXgxMQotICAt
IC0tc29ja2V0PXdheWxhbmQKLSAgLSAtLWRldmljZT1hbGwKLSAgLSAtLXNoYXJlPW5ldHdvcmsK
LSAgLSAtLXNvY2tldD1wdWxzZWF1ZGlvCi0gIC0gLS1zeXN0ZW0tdGFsay1uYW1lPW9yZy5mcmVl
ZGVza3RvcC5HZW9DbHVlMgotICAtIC0tc3lzdGVtLXRhbGstbmFtZT1vcmcuYTExeS5CdXMKLSAg
LSAtLWZpbGVzeXN0ZW09aG9zdAotICAtIC0tc29ja2V0PXN5c3RlbS1idXMKLSAgLSAtLXRhbGst
bmFtZT1vcmcuZnJlZWRlc2t0b3AuRmxhdHBhawotICAtIC0tZW52PUdTVF9QUkVTRVRfUEFUSD0v
YXBwL3NoYXJlL2dzdHJlYW1lci0xLjAvcHJlc2V0cy8KLWJ1aWxkLW9wdGlvbnM6Ci0gIGNmbGFn
czogLU8yIC1nCi0gIGN4eGZsYWdzOiAtTzIgLWcKLSAgc3RyaXA6IGZhbHNlCi0gIG5vLWRlYnVn
aW5mbzogdHJ1ZQotbW9kdWxlczoKLSAgLSBvcmcud2Via2l0LkNvbW1vbk1vZHVsZXMueWFtbAot
ICAjIFBvcnQgc3BlY2lmaWMgY29tcG9uZW50cy4KLSAgLSAlKFBPUlROQU1FKXMueWFtbApkaWZm
IC0tZ2l0IGEvVG9vbHMvZmxhdHBhay9wYXRjaGVzL2h0dHBkLTAwMDEtY29uZmlndXJlLXVzZS1w
a2ctY29uZmlnLWZvci1QQ1JFLWRldGVjdGlvbi5wYXRjaCBiL1Rvb2xzL2ZsYXRwYWsvcGF0Y2hl
cy9odHRwZC0wMDAxLWNvbmZpZ3VyZS11c2UtcGtnLWNvbmZpZy1mb3ItUENSRS1kZXRlY3Rpb24u
cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzNmE2OTRmMjkyM2QzNTFkYjZm
M2YxMzMyNzYwMjgzZGE3OGY5ZGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvVG9vbHMvZmxhdHBhay9wYXRjaGVzL2h0dHBkLTAwMDEtY29uZmlndXJlLXVz
ZS1wa2ctY29uZmlnLWZvci1QQ1JFLWRldGVjdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x
LDUwICswLDAgQEAKLUZyb20gYjVlYmU0MDRmMTM4OGRkZGEzNjAzZTUzMjc3Zjg3ZTBiOTZiYTY5
NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRoaWJhdWx0IFNhdW5pZXIgPHRzYXVu
aWVyQGlnYWxpYS5jb20+Ci1EYXRlOiBNb24sIDExIEp1biAyMDE4IDE2OjE0OjM4IC0wNDAwCi1T
dWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogdXNlIHBrZy1jb25maWcgZm9yIFBDUkUgZGV0ZWN0
aW9uCi0KLS0tLQotIGNvbmZpZ3VyZS5pbiB8IDI3ICsrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQotCi1k
aWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCi1pbmRleCA3NjFlODM2Li5i
MTU1ZDRiIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmluCi0rKysgYi9jb25maWd1cmUuaW4KLUBA
IC0yMTUsMjggKzIxNSwxMSBAQCBmaQotIEFDX0FSR19XSVRIKHBjcmUsCi0gQVBBQ0hFX0hFTFBf
U1RSSU5HKC0td2l0aC1wY3JlPVBBVEgsVXNlIGV4dGVybmFsIFBDUkUgbGlicmFyeSkpCi0gCi0t
QUNfUEFUSF9QUk9HKFBDUkVfQ09ORklHLCBwY3JlLWNvbmZpZywgZmFsc2UpCi0taWYgdGVzdCAt
ZCAiJHdpdGhfcGNyZSIgJiYgdGVzdCAteCAiJHdpdGhfcGNyZS9iaW4vcGNyZS1jb25maWciOyB0
aGVuCi0tICAgUENSRV9DT05GSUc9JHdpdGhfcGNyZS9iaW4vcGNyZS1jb25maWcKLS1lbGlmIHRl
c3QgLXggIiR3aXRoX3BjcmUiOyB0aGVuCi0tICAgUENSRV9DT05GSUc9JHdpdGhfcGNyZQotLWZp
Ci0tCi0taWYgdGVzdCAiJFBDUkVfQ09ORklHIiAhPSAiZmFsc2UiOyB0aGVuCi0tICBpZiAkUENS
RV9DT05GSUcgLS12ZXJzaW9uID4vZGV2L251bGwgMj4mMTsgdGhlbiA6OyBlbHNlCi0tICAgIEFD
X01TR19FUlJPUihbRGlkIG5vdCBmaW5kIHBjcmUtY29uZmlnIHNjcmlwdCBhdCAkUENSRV9DT05G
SUddKQotLSAgZmkKLS0gIGNhc2UgYCRQQ1JFX0NPTkZJRyAtLXZlcnNpb25gIGluCi0tICBbWzEt
NV0uKl0pCi0tICAgIEFDX01TR19FUlJPUihbTmVlZCBhdCBsZWFzdCBwY3JlIHZlcnNpb24gNi4w
XSkKLS0gICAgOzsKLS0gIGVzYWMKLS0gIEFDX01TR19OT1RJQ0UoW1VzaW5nIGV4dGVybmFsIFBD
UkUgbGlicmFyeSBmcm9tICRQQ1JFX0NPTkZJR10pCi0tICBBUFJfQUREVE8oUENSRV9JTkNMVURF
UywgW2AkUENSRV9DT05GSUcgLS1jZmxhZ3NgXSkKLS0gIEFQUl9BRERUTyhQQ1JFX0xJQlMsIFtg
JFBDUkVfQ09ORklHIC0tbGlic2BdKQotLWVsc2UKLS0gIEFDX01TR19FUlJPUihbcGNyZS1jb25m
aWcgZm9yIGxpYnBjcmUgbm90IGZvdW5kLiBQQ1JFIGlzIHJlcXVpcmVkIGFuZCBhdmFpbGFibGUg
ZnJvbSBodHRwOi8vcGNyZS5vcmcvXSkKLS1maQotK1BLR19DSEVDS19NT0RVTEVTKFtQQ1JFXSwg
W2xpYnBjcmVdLCBbCi0rICBBQ19ERUZJTkUoW0hBVkVfUENSRV0sIFsxXSwgW0RlZmluZSBpZiB5
b3UgaGF2ZSBQQ1JFIGxpYnJhcnldKQotK10sIFsKLSsgIEFDX01TR19FUlJPUihbJFBDUkVfUEtH
X0VSUk9SU10pCi0rXSkKLSBBUEFDSEVfU1VCU1QoUENSRV9MSUJTKQotIAotIEFDX01TR19OT1RJ
Q0UoW10pCi0tLSAKLTIuMTcuMQotCmRpZmYgLS1naXQgYS9Ub29scy9mbGF0cGFrL3BhdGNoZXMv
bGliZ2NyeXB0LTAwMDEtVXNlLXBrZy1jb25maWctdG8tZGV0ZWN0LWdwZy1lcnJvci5wYXRjaCBi
L1Rvb2xzL2ZsYXRwYWsvcGF0Y2hlcy9saWJnY3J5cHQtMDAwMS1Vc2UtcGtnLWNvbmZpZy10by1k
ZXRlY3QtZ3BnLWVycm9yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTc3
MjdmYmI4YjA4YjkxOTVhNWMwOTdkNmM2MWI5MDhjNjkxNzlhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL2ZsYXRwYWsvcGF0Y2hlcy9saWJnY3J5
cHQtMDAwMS1Vc2UtcGtnLWNvbmZpZy10by1kZXRlY3QtZ3BnLWVycm9yLnBhdGNoCisrKyAvZGV2
L251bGwKQEAgLTEsMTEwICswLDAgQEAKLUZyb20gOWFmZjNmMWIzNDRmYzg2NjZiMTRjNTc2Mjkx
NjJjMmI5MDA3Y2FkOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRoaWJhdWx0IFNh
dW5pZXIgPHRzYXVuaWVyQGlnYWxpYS5jb20+Ci1EYXRlOiBGcmksIDI5IEp1biAyMDE4IDA5OjA1
OjUyIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVzZSBwa2ctY29uZmlnIHRvIGRldGVjdCBncGct
ZXJyb3IKLQotLS0tCi0gbTQvZ3BnLWVycm9yLm00IHwgODggKysrKysrKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRp
b25zKCspLCA3NiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL200L2dwZy1lcnJvci5tNCBi
L200L2dwZy1lcnJvci5tNAotaW5kZXggMTY2MTIwNGMuLjVmOWYzM2MyIDEwMDY0NAotLS0tIGEv
bTQvZ3BnLWVycm9yLm00Ci0rKysgYi9tNC9ncGctZXJyb3IubTQKLUBAIC00MSw4MSArNDEsMTcg
QEAgQUNfREVGVU4oW0FNX1BBVEhfR1BHX0VSUk9SXSwKLSAgIEFDX0FSR19XSVRIKGdwZy1lcnJv
ci1wcmVmaXgsLAotICAgICAgICAgICAgICAgW2dwZ19lcnJvcl9jb25maWdfcHJlZml4PSIkd2l0
aHZhbCJdKQotIAotLSAgaWYgdGVzdCB4IiR7R1BHX0VSUk9SX0NPTkZJR30iID0geCA7IHRoZW4K
LS0gICAgIGlmIHRlc3QgeCIke2dwZ19lcnJvcl9jb25maWdfcHJlZml4fSIgIT0geCA7IHRoZW4K
LS0gICAgICAgIEdQR19FUlJPUl9DT05GSUc9IiR7Z3BnX2Vycm9yX2NvbmZpZ19wcmVmaXh9L2Jp
bi9ncGctZXJyb3ItY29uZmlnIgotLSAgICAgZWxzZQotLSAgICAgICBjYXNlICIke1NZU1JPT1R9
IiBpbgotLSAgICAgICAgIC8qKQotLSAgICAgICAgICAgaWYgdGVzdCAteCAiJHtTWVNST09UfS9i
aW4vZ3BnLWVycm9yLWNvbmZpZyIgOyB0aGVuCi0tICAgICAgICAgICAgIEdQR19FUlJPUl9DT05G
SUc9IiR7U1lTUk9PVH0vYmluL2dwZy1lcnJvci1jb25maWciCi0tICAgICAgICAgICBmaQotLSAg
ICAgICAgICAgOzsKLS0gICAgICAgICAnJykKLS0gICAgICAgICAgIDs7Ci0tICAgICAgICAgICop
Ci0tICAgICAgICAgICBBQ19NU0dfV0FSTihbSWdub3JpbmcgXCRTWVNST09UIGFzIGl0IGlzIG5v
dCBhbiBhYnNvbHV0ZSBwYXRoLl0pCi0tICAgICAgICAgICA7OwotLSAgICAgICBlc2FjCi0tICAg
ICBmaQotLSAgZmkKLSsgIFBLR19DSEVDS19NT0RVTEVTKFtHUEdfRVJST1JdLCBbZ3BnLWVycm9y
XSwgWwotKyAgICBBQ19ERUZJTkUoW0hBVkVfR1BHX0VSUk9SXSwgWzFdLCBbRGVmaW5lIGlmIHlv
dSBoYXZlIGdwZy1lcnJvciBsaWJyYXJ5XSkKLSAKLS0gIEFDX1BBVEhfUFJPRyhHUEdfRVJST1Jf
Q09ORklHLCBncGctZXJyb3ItY29uZmlnLCBubykKLS0gIG1pbl9ncGdfZXJyb3JfdmVyc2lvbj1p
ZmVsc2UoWyQxXSwgLDAuMCwkMSkKLS0gIEFDX01TR19DSEVDS0lORyhmb3IgR1BHIEVycm9yIC0g
dmVyc2lvbiA+PSAkbWluX2dwZ19lcnJvcl92ZXJzaW9uKQotLSAgb2s9bm8KLS0gIGlmIHRlc3Qg
IiRHUEdfRVJST1JfQ09ORklHIiAhPSAibm8iIFwKLS0gICAgICYmIHRlc3QgLWYgIiRHUEdfRVJS
T1JfQ09ORklHIiA7IHRoZW4KLS0gICAgcmVxX21ham9yPWBlY2hvICRtaW5fZ3BnX2Vycm9yX3Zl
cnNpb24gfCBcCi0tICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1d
KlwpL1wxLydgCi0tICAgIHJlcV9taW5vcj1gZWNobyAkbWluX2dwZ19lcnJvcl92ZXJzaW9uIHwg
XAotLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMi8n
YAotLSAgICBncGdfZXJyb3JfY29uZmlnX3ZlcnNpb249YCRHUEdfRVJST1JfQ09ORklHICRncGdf
ZXJyb3JfY29uZmlnX2FyZ3MgLS12ZXJzaW9uYAotLSAgICBtYWpvcj1gZWNobyAkZ3BnX2Vycm9y
X2NvbmZpZ192ZXJzaW9uIHwgXAotLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClc
LlwoW1swLTldXSpcKS4qL1wxLydgCi0tICAgIG1pbm9yPWBlY2hvICRncGdfZXJyb3JfY29uZmln
X3ZlcnNpb24gfCBcCi0tICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAt
OV1dKlwpLiovXDIvJ2AKLS0gICAgaWYgdGVzdCAiJG1ham9yIiAtZ3QgIiRyZXFfbWFqb3IiOyB0
aGVuCi0tICAgICAgICBvaz15ZXMKLS0gICAgZWxzZQotLSAgICAgICAgaWYgdGVzdCAiJG1ham9y
IiAtZXEgIiRyZXFfbWFqb3IiOyB0aGVuCi0tICAgICAgICAgICAgaWYgdGVzdCAiJG1pbm9yIiAt
Z2UgIiRyZXFfbWlub3IiOyB0aGVuCi0tICAgICAgICAgICAgICAgb2s9eWVzCi0tICAgICAgICAg
ICAgZmkKLS0gICAgICAgIGZpCi0tICAgIGZpCi0tICBmaQotLSAgaWYgdGVzdCAkb2sgPSB5ZXM7
IHRoZW4KLS0gICAgR1BHX0VSUk9SX0NGTEFHUz1gJEdQR19FUlJPUl9DT05GSUcgJGdwZ19lcnJv
cl9jb25maWdfYXJncyAtLWNmbGFnc2AKLS0gICAgR1BHX0VSUk9SX0xJQlM9YCRHUEdfRVJST1Jf
Q09ORklHICRncGdfZXJyb3JfY29uZmlnX2FyZ3MgLS1saWJzYAotLSAgICBHUEdfRVJST1JfTVRf
Q0ZMQUdTPWAkR1BHX0VSUk9SX0NPTkZJRyAkZ3BnX2Vycm9yX2NvbmZpZ19hcmdzIC0tbXQgLS1j
ZmxhZ3MgMj4vZGV2L251bGxgCi0tICAgIEdQR19FUlJPUl9NVF9MSUJTPWAkR1BHX0VSUk9SX0NP
TkZJRyAkZ3BnX2Vycm9yX2NvbmZpZ19hcmdzIC0tbXQgLS1saWJzIDI+L2Rldi9udWxsYAotLSAg
ICBBQ19NU0dfUkVTVUxUKFt5ZXMgKCRncGdfZXJyb3JfY29uZmlnX3ZlcnNpb24pXSkKLS0gICAg
aWZlbHNlKFskMl0sICwgOiwgWyQyXSkKLS0gICAgZ3BnX2Vycm9yX2NvbmZpZ19ob3N0PWAkR1BH
X0VSUk9SX0NPTkZJRyAkZ3BnX2Vycm9yX2NvbmZpZ19hcmdzIC0taG9zdCAyPi9kZXYvbnVsbCB8
fCBlY2hvIG5vbmVgCi0tICAgIGlmIHRlc3QgeCIkZ3BnX2Vycm9yX2NvbmZpZ19ob3N0IiAhPSB4
bm9uZSA7IHRoZW4KLS0gICAgICBpZiB0ZXN0IHgiJGdwZ19lcnJvcl9jb25maWdfaG9zdCIgIT0g
eCIkaG9zdCIgOyB0aGVuCi0tICBBQ19NU0dfV0FSTihbWwotLSoqKgotLSoqKiBUaGUgY29uZmln
IHNjcmlwdCAkR1BHX0VSUk9SX0NPTkZJRyB3YXMKLS0qKiogYnVpbHQgZm9yICRncGdfZXJyb3Jf
Y29uZmlnX2hvc3QgYW5kIHRodXMgbWF5IG5vdCBtYXRjaCB0aGUKLS0qKiogdXNlZCBob3N0ICRo
b3N0LgotLSoqKiBZb3UgbWF5IHdhbnQgdG8gdXNlIHRoZSBjb25maWd1cmUgb3B0aW9uIC0td2l0
aC1ncGctZXJyb3ItcHJlZml4Ci0tKioqIHRvIHNwZWNpZnkgYSBtYXRjaGluZyBjb25maWcgc2Ny
aXB0IG9yIHVzZSBcJFNZU1JPT1QuCi0tKioqXV0pCi0tICAgICAgICBncGdfY29uZmlnX3Njcmlw
dF93YXJuPSIkZ3BnX2NvbmZpZ19zY3JpcHRfd2FybiBsaWJncGctZXJyb3IiCi0tICAgICAgZmkK
LS0gICAgZmkKLS0gIGVsc2UKLS0gICAgR1BHX0VSUk9SX0NGTEFHUz0iIgotLSAgICBHUEdfRVJS
T1JfTElCUz0iIgotLSAgICBHUEdfRVJST1JfTVRfQ0ZMQUdTPSIiCi0tICAgIEdQR19FUlJPUl9N
VF9MSUJTPSIiCi0tICAgIEFDX01TR19SRVNVTFQobm8pCi0tICAgIGlmZWxzZShbJDNdLCAsIDos
IFskM10pCi0tICBmaQotLSAgQUNfU1VCU1QoR1BHX0VSUk9SX0NGTEFHUykKLS0gIEFDX1NVQlNU
KEdQR19FUlJPUl9MSUJTKQotLSAgQUNfU1VCU1QoR1BHX0VSUk9SX01UX0NGTEFHUykKLS0gIEFD
X1NVQlNUKEdQR19FUlJPUl9NVF9MSUJTKQotKyAgICBHUEdfRVJST1JfTVRfQ0ZMQUdTPSIkR1BH
X0VSUk9SX0NGTEFHUyIKLSsgICAgR1BHX0VSUk9SX01UX0xJQlM9Ii1scHRocmVhZCAkR1BHX0VS
Uk9SX0xJQlMiCi0rCi0rICAgIEFDX1NVQlNUKEdQR19FUlJPUl9DRkxBR1MpCi0rICAgIEFDX1NV
QlNUKEdQR19FUlJPUl9MSUJTKQotKyAgICBBQ19TVUJTVChHUEdfRVJST1JfTVRfQ0ZMQUdTKQot
KyAgICBBQ19TVUJTVChHUEdfRVJST1JfTVRfTElCUykKLSsgIF0sIFsKLSsgICAgQUNfTVNHX0VS
Uk9SKFskR1BHX0VSUk9SX0VSUk9SU10pCi0rICBdKQotIF0pCi0tLSAKLTIuMTguMAotCmRpZmYg
LS1naXQgYS9Ub29scy9mbGF0cGFrL3BhdGNoZXMveHZmYi0wMDAxLUhBQ0stQXZvaWQtY29tcGls
aW5nLWEta2JtLWZpbGUucGF0Y2ggYi9Ub29scy9mbGF0cGFrL3BhdGNoZXMveHZmYi0wMDAxLUhB
Q0stQXZvaWQtY29tcGlsaW5nLWEta2JtLWZpbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDg5ODg0MmIzODFkMjUxNDBmYmMwOGY1NGE5NzIzMGE2ZGJlNGE0NTAuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvZmxhdHBhay9w
YXRjaGVzL3h2ZmItMDAwMS1IQUNLLUF2b2lkLWNvbXBpbGluZy1hLWtibS1maWxlLnBhdGNoCisr
KyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotRnJvbSBhZWQxYjZlOGRlNDEzNzVjMWI4YjFk
ZmM0OGEzNTBlMGE5YjljYmJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVGhpYmF1
bHQgU2F1bmllciA8dHNhdW5pZXJAaWdhbGlhLmNvbT4KLURhdGU6IE1vbiwgMTEgSnVuIDIwMTgg
MTA6NTU6NDMgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCB4c2VydmVyXSBIQUNLOiBBdm9pZCBjb21w
aWxpbmcgYSBrYm0gZmlsZQotCi1UaGlzIHdvdWxkIG5lZWQgdG8gYmUgaW4gL3Vzci9zaGFyZS9Y
MTEvIGFzIHRoaXMgaXMgd2hlcmUKLXJlc291cmNlIGZpbGVzIGFyZSBpbiB0aGUgc2FuZGJveCBi
dXQgaXQgaXMgcmVhZCBvbmx5IGluIHRoZXJlLgotCi1IYWNrIGFyb3VuZCB0aGF0LgotLS0tCi0g
eGtiL2RkeExvYWQuYyB8IDkgKy0tLS0tLS0tCi0geGtiL3hrYkluaXQuYyB8IDIgKy0KLSAyIGZp
bGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdp
dCBhL3hrYi9kZHhMb2FkLmMgYi94a2IvZGR4TG9hZC5jCi1pbmRleCBiYmUzOTUyLi5hNGEwM2Ex
IDEwMDY0NAotLS0tIGEveGtiL2RkeExvYWQuYwotKysrIGIveGtiL2RkeExvYWQuYwotQEAgLTE0
OCwxNCArMTQ4LDcgQEAgUnVuWGtiQ29tcCh4a2Jjb21wX2J1ZmZlcl9jYWxsYmFjayBjYWxsYmFj
aywgdm9pZCAqdXNlcmRhdGEpCi0gICAgICAgICB9Ci0gICAgIH0KLSAKLS0gICAgaWYgKGFzcHJp
bnRmKCZidWYsCi0tICAgICAgICAgICAgICAgICAiXCIlcyVzeGtiY29tcFwiIC13ICVkICVzIC14
a20gXCIlc1wiICIKLS0gICAgICAgICAgICAgICAgICItZW0xICVzIC1lbXAgJXMgLWVtbCAlcyBc
IiVzJXMueGttXCIiLAotLSAgICAgICAgICAgICAgICAgeGtiYmluZGlyLCB4a2JiaW5kaXJzZXAs
Ci0tICAgICAgICAgICAgICAgICAoKHhrYkRlYnVnRmxhZ3MgPCAyKSA/IDEgOgotLSAgICAgICAg
ICAgICAgICAgICgoeGtiRGVidWdGbGFncyA+IDEwKSA/IDEwIDogKGludCkgeGtiRGVidWdGbGFn
cykpLAotLSAgICAgICAgICAgICAgICAgeGtiYmFzZWRpcmZsYWcgPyB4a2JiYXNlZGlyZmxhZyA6
ICIiLCB4a21maWxlLAotLSAgICAgICAgICAgICAgICAgUFJFX0VSUk9SX01TRywgRVJST1JfUFJF
RklYLCBQT1NUX0VSUk9SX01TRzEsCi0rICAgIGlmIChhc3ByaW50ZigmYnVmLCAiY3AgL2FwcC93
ZWJraXQvVG9vbHMvZmxhdHBhay9maWxlcy9kZWZhdWx0LnhrbSBcIiVzJXMueGttXCIiLAotICAg
ICAgICAgICAgICAgICAgeGttX291dHB1dF9kaXIsIGtleW1hcCkgPT0gLTEpCi0gICAgICAgICBi
dWYgPSBOVUxMOwotIAotZGlmZiAtLWdpdCBhL3hrYi94a2JJbml0LmMgYi94a2IveGtiSW5pdC5j
Ci1pbmRleCA5Yzc3MmY1Li40ZTBiNzc0IDEwMDY0NAotLS0tIGEveGtiL3hrYkluaXQuYwotKysr
IGIveGtiL3hrYkluaXQuYwotQEAgLTg3LDcgKzg3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX1Nydlhr
bUluZm8gewotICNkZWZpbmUJWEtCX0RGTFRfUlVMRVNfUFJPUAlUUlVFCi0gI2VuZGlmCi0gCi0t
Y29uc3QgY2hhciAqWGtiQmFzZURpcmVjdG9yeSA9IFhLQl9CQVNFX0RJUkVDVE9SWTsKLStjb25z
dCBjaGFyICpYa2JCYXNlRGlyZWN0b3J5ID0gIi91c3Ivc2hhcmUvWDExL3hrYi8iOwotIGNvbnN0
IGNoYXIgKlhrYkJpbkRpcmVjdG9yeSA9IFhLQl9CSU5fRElSRUNUT1JZOwotIHN0YXRpYyBpbnQg
WGtiV2FudEFjY2Vzc1ggPSAwOwotIAotLS0gCi0yLjE3LjEKLQo=
</data>
<flag name="review"
          id="387557"
          type_id="1"
          status="-"
          setter="pnormand"
    />
          </attachment>
      

    </bug>

</bugzilla>