<?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>216404</bug_id>
          
          <creation_ts>2020-09-11 04:36:00 -0700</creation_ts>
          <short_desc>[webkitscmpy] Generate Commit object from local repository</short_desc>
          <delta_ts>2020-10-22 07:44:59 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=215862</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=216403</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=216402</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=217409</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=218079</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>dewei_zhu</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1687699</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-09-11 04:36:00 -0700</bug_when>
    <thetext>Add code to generate a commit object from a local Svn or Git repository.

Note that this is the first introduction of a functional commit identifier, which is defined as a per-branch monotonically increasing integer. This identifier is distinct from Svn&apos;s revision, since identifiers only increase when a change is made to the specific branch an identifier is tracking, rather than to any branch in the repository.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687700</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-11 04:36:56 -0700</bug_when>
    <thetext>&lt;rdar://problem/68702897&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693555</commentid>
    <comment_count>2</comment_count>
      <attachid>410161</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-09-30 15:56:30 -0700</bug_when>
    <thetext>Created attachment 410161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693943</commentid>
    <comment_count>3</comment_count>
      <attachid>410289</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-01 17:33:49 -0700</bug_when>
    <thetext>Created attachment 410289
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693944</commentid>
    <comment_count>4</comment_count>
      <attachid>410289</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-01 17:38:29 -0700</bug_when>
    <thetext>Comment on attachment 410289
Patch

This change works, but it doesn&apos;t have testing yet. Wanted to put it up for now so it could be discussed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694116</commentid>
    <comment_count>5</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-02 09:44:24 -0700</bug_when>
    <thetext>This change implements the scheme outlined in https://trac.webkit.org/wiki/commit-identifiers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694925</commentid>
    <comment_count>6</comment_count>
      <attachid>410289</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2020-10-05 16:14:41 -0700</bug_when>
    <thetext>Comment on attachment 410289
Patch

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

&gt; Tools/Scripts/libraries/webkitcorepy/webkitcorepy/decorators.py:47
&gt; +            keyargs = args + tuple(sorted([(key, value) for key, value in kwargs.items()]))
&gt; +            last_called = self._last_called[function].get(keyargs, 0)
&gt; +            is_cached = keyargs in self._cache[function]

This might work if kwargs has list as value.
For example:
kwargs = {&apos;foo&apos;: []}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694928</commentid>
    <comment_count>7</comment_count>
      <attachid>410579</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-05 16:18:11 -0700</bug_when>
    <thetext>Created attachment 410579
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694936</commentid>
    <comment_count>8</comment_count>
      <attachid>410584</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-05 16:28:37 -0700</bug_when>
    <thetext>Created attachment 410584
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695212</commentid>
    <comment_count>9</comment_count>
      <attachid>410657</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-06 10:40:15 -0700</bug_when>
    <thetext>Created attachment 410657
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695244</commentid>
    <comment_count>10</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-06 11:42:58 -0700</bug_when>
    <thetext>(In reply to dewei_zhu from comment #6)
&gt; Comment on attachment 410289 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=410289&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/libraries/webkitcorepy/webkitcorepy/decorators.py:47
&gt; &gt; +            keyargs = args + tuple(sorted([(key, value) for key, value in kwargs.items()]))
&gt; &gt; +            last_called = self._last_called[function].get(keyargs, 0)
&gt; &gt; +            is_cached = keyargs in self._cache[function]
&gt; 
&gt; This might work if kwargs has list as value.
&gt; For example:
&gt; kwargs = {&apos;foo&apos;: []}

The list case does break things, but I think that&apos;s fine because the tuple case works. fine. On a more theoretical level, lists shouldn&apos;t really work as arguments to memoized functions anyways because they are mutable, we would basically be relying on Python primitives to enforce that rule.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695321</commentid>
    <comment_count>11</comment_count>
    <who name="">dewei_zhu</who>
    <bug_when>2020-10-06 14:51:59 -0700</bug_when>
    <thetext>r=me. For the issue that arguments pass to Memoize can not be a list, there will be a separate change to address that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695350</commentid>
    <comment_count>12</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-06 15:28:36 -0700</bug_when>
    <thetext>(In reply to dewei_zhu from comment #11)
&gt; r=me. For the issue that arguments pass to Memoize can not be a list, there
&gt; will be a separate change to address that.

https://bugs.webkit.org/show_bug.cgi?id=216404</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695362</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-06 15:47:25 -0700</bug_when>
    <thetext>Committed r268080: &lt;https://trac.webkit.org/changeset/268080&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 410657.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410161</attachid>
            <date>2020-09-30 15:56:30 -0700</date>
            <delta_ts>2020-10-01 17:33:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216404-20200930155630.patch</filename>
            <type>text/plain</type>
            <size>46484</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2NzgwOCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDc5IEBACisyMDIwLTA5LTMwICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0c2NtcHldIEdlbmVyYXRlIENvbW1pdCBvYmplY3QgZnJvbSBs
b2NhbCByZXBvc2l0b3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTY0MDQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY4NzAyODk3PgorCisgICAg
ICAgIFdJUCwgZm9yIHJlZmVyZW5jZSBvbmx5LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvX19pbml0X18ucHk6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvd2Via2l0c2NtcHkvY29tbWl0LnB5OiBBZGRlZC4KKyAgICAgICAgKENvbW1pdCk6Cisg
ICAgICAgIChDb21taXQuX3BhcnNlX2hhc2gpOgorICAgICAgICAoQ29tbWl0Ll9wYXJzZV9yZXZp
c2lvbik6CisgICAgICAgIChDb21taXQuX3BhcnNlX2lkZW50aWZpZXIpOgorICAgICAgICAoQ29t
bWl0LnBhcnNlKToKKyAgICAgICAgKENvbW1pdC5fX2luaXRfXyk6CisgICAgICAgIChDb21taXQu
cHJldHR5X3ByaW50KToKKyAgICAgICAgKENvbW1pdC5fX3JlcHJfXyk6CisgICAgICAgIChDb21t
aXQuX19oYXNoX18pOgorICAgICAgICAoQ29tbWl0Ll9fY21wX18pOgorICAgICAgICAoQ29tbWl0
Ll9fZXFfXyk6CisgICAgICAgIChDb21taXQuX19uZV9fKToKKyAgICAgICAgKENvbW1pdC5fX2x0
X18pOgorICAgICAgICAoQ29tbWl0Ll9fbGVfXyk6CisgICAgICAgIChDb21taXQuX19ndF9fKToK
KyAgICAgICAgKENvbW1pdC5fX2dlX18pOgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdHNjbXB5L3dlYmtpdHNjbXB5L2NvbnRyaWJ1dG9yLnB5OgorICAgICAgICAoQ29udHJpYnV0
b3IpOgorICAgICAgICAoQ29udHJpYnV0b3IuZnJvbV9zY21fbG9nKToKKyAgICAgICAgKiBTY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9naXQucHk6CisgICAg
ICAgIChHaXQpOgorICAgICAgICAoR2l0Ll9faW5pdF9fKToKKyAgICAgICAgKEdpdC5pc19zdm4p
OgorICAgICAgICAoR2l0LmlzX2dpdCk6CisgICAgICAgIChHaXQuYnJhbmNoZXMpOgorICAgICAg
ICAoR2l0LnJlbW90ZSk6CisgICAgICAgIChHaXQuX2NvbW1pdF9jb3VudCk6CisgICAgICAgIChH
aXQuX2JyYW5jaGVzX2Zvcik6CisgICAgICAgIChHaXQuY29tbWl0KToKKyAgICAgICAgKiBTY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9zY20ucHk6CisgICAg
ICAgIChTY20pOgorICAgICAgICAoU2NtLl9faW5pdF9fKToKKyAgICAgICAgKFNjbS5pc19zdm4p
OgorICAgICAgICAoU2NtLmlzX2dpdCk6CisgICAgICAgIChTY20ucmVtb3RlKToKKyAgICAgICAg
KFNjbS5jb21taXQpOgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dl
YmtpdHNjbXB5L2xvY2FsL3N2bi5weToKKyAgICAgICAgKFN2bik6CisgICAgICAgIChTdm4uX19p
bml0X18pOgorICAgICAgICAoU3ZuLmlzX3N2bik6CisgICAgICAgIChTdm4uX2NhY2hlX3BhdGgp
OgorICAgICAgICAoU3ZuLl9pZGVudGlmaWVyX2NhY2hlKToKKyAgICAgICAgKFN2bi5yZW1vdGUp
OgorICAgICAgICAoU3ZuLmNvbW1pdCk6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9jb21taXRfdW5pdHRlc3QucHk6IEFkZGVkLgorICAg
ICAgICAoVGVzdENvbW1pdCk6CisgICAgICAgIChUZXN0Q29tbWl0LnRlc3RfcGFyc2VfaGFzaCk6
CisgICAgICAgIChUZXN0Q29tbWl0LnRlc3RfcGFyc2VfcmV2aXNpb24pOgorICAgICAgICAoVGVz
dENvbW1pdC50ZXN0X3BhcnNlX2lkZW50aWZpZXIpOgorICAgICAgICAoVGVzdENvbW1pdC50ZXN0
X3BhcnNlKToKKyAgICAgICAgKFRlc3RDb21taXQudGVzdF9wcmV0dHlfcHJpbnQpOgorICAgICAg
ICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvY29udHJp
YnV0b3JfdW5pdHRlc3QucHk6CisgICAgICAgIChUZXN0Q29udHJpYnV0b3IudGVzdF9naXRfc3Zu
X2xvZyk6CisgICAgICAgIChUZXN0Q29udHJpYnV0b3IpOgorICAgICAgICAoVGVzdENvbnRyaWJ1
dG9yLnRlc3RfZ2l0X25vX2F1dGhvcik6CisgICAgICAgIChUZXN0Q29udHJpYnV0b3IudGVzdF9n
aXRfc3ZuX25vX2F1dGhvcik6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2Nt
cHkvd2Via2l0c2NtcHkvdGVzdC9naXRfdW5pdHRlc3QucHk6CisgICAgICAgIChUZXN0R2l0LnRl
c3RfYnJhbmNoZXMpOgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dl
YmtpdHNjbXB5L3Rlc3Qvc2NtX3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGVzdFNjbS50ZXN0X3Jl
bW90ZSk6CisgICAgICAgIChUZXN0U2NtKToKKyAgICAgICAgKFRlc3RTY20udGVzdF9kZXZfYnJh
bmNoZXMpOgorICAgICAgICAoVGVzdFNjbS50ZXN0X3Byb2RfYnJhbmNoZXMpOgorCiAyMDIwLTA5
LTMwICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbd2Vi
a2l0cHldIFVzZSB3ZWJraXRjb3JlcHkncyBhdXRvIGluc3RhbGxlciBmb3IgaHRtbDVsaWIKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L19faW5p
dF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L19faW5pdF9fLnB5CShyZXZpc2lvbiAyNjc3MTQpCisrKyBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9fX2luaXRfXy5weQkod29ya2lu
ZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBleGNlcHQgSW1wb3J0RXJyb3I6CiB2ZXJzaW9uID0g
VmVyc2lvbigwLCAwLCA0KQogCiBmcm9tIHdlYmtpdHNjbXB5LmNvbnRyaWJ1dG9yIGltcG9ydCBD
b250cmlidXRvcgorZnJvbSB3ZWJraXRzY21weS5jb21taXQgaW1wb3J0IENvbW1pdAogCiBmcm9t
IHdlYmtpdHNjbXB5IGltcG9ydCBsb2NhbAogZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgbW9ja3MK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2Nv
bW1pdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21w
eS93ZWJraXRzY21weS9jb21taXQucHkJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvY29tbWl0LnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMjY1IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K2ltcG9ydCBzaXgKK2ltcG9ydCByZQorCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQor
ZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgQ29udHJpYnV0b3IKKworCitjbGFzcyBDb21taXQob2Jq
ZWN0KToKKyAgICBIQVNIX1JFID0gcmUuY29tcGlsZShyJ15bYS1mMC05QS1GXSskJykKKyAgICBS
RVZJU0lPTl9SRSA9IHJlLmNvbXBpbGUocideW1JyXT8oP1A8cmV2aXNpb24+XGQrKSQnKQorICAg
IElERU5USUZJRVJfUkUgPSByZS5jb21waWxlKHInXltJaV0/KCg/UDxicmFuY2hfcG9pbnQ+XGQr
KVwuKT8oP1A8aWRlbnRpZmllcj4tP1xkKykoQCg/UDxicmFuY2g+XFMrKSk/JCcpCisgICAgTlVN
QkVSX1JFID0gcmUuY29tcGlsZShyJ14tP1xkKiQnKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAg
ZGVmIF9wYXJzZV9oYXNoKGNscywgaGFzaCwgZG9fYXNzZXJ0PUZhbHNlKToKKyAgICAgICAgaWYg
aGFzaCBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBpZiBub3Qg
aXNpbnN0YW5jZShoYXNoLCBzaXguc3RyaW5nX3R5cGVzKToKKyAgICAgICAgICAgIGlmIGRvX2Fz
c2VydDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJFeHBlY3RlZCBzdHJpbmcg
dHlwZSBmb3IgaGFzaCwgZ290ICd7fSciLmZvcm1hdCh0eXBlKGhhc2gpKSkKKyAgICAgICAgICAg
IHJldHVybiBOb25lCisKKyAgICAgICAgaWYgbm90IGNscy5IQVNIX1JFLm1hdGNoKGhhc2gpIG9y
IGxlbihoYXNoKSA+IDQwOgorICAgICAgICAgICAgaWYgZG9fYXNzZXJ0OgorICAgICAgICAgICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoIlByb3ZpZGVkIHN0cmluZyAne30nIGlzIG5vdCBhIGdpdCBo
YXNoIi5mb3JtYXQoaGFzaCkpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIHJl
dHVybiBoYXNoLmxvd2VyKCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfcGFyc2VfcmV2
aXNpb24oY2xzLCByZXZpc2lvbiwgZG9fYXNzZXJ0PUZhbHNlKToKKyAgICAgICAgaWYgcmV2aXNp
b24gaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgaWYgaXNpbnN0
YW5jZShyZXZpc2lvbiwgc2l4LnN0cmluZ190eXBlcyk6CisgICAgICAgICAgICBtYXRjaCA9IGNs
cy5SRVZJU0lPTl9SRS5tYXRjaChyZXZpc2lvbikKKyAgICAgICAgICAgIGlmIG1hdGNoOgorICAg
ICAgICAgICAgICAgIHJldmlzaW9uID0gaW50KG1hdGNoLmdyb3VwKCdyZXZpc2lvbicpKQorICAg
ICAgICAgICAgZWxpZiByZXZpc2lvbi5pc2RpZ2l0KCk6CisgICAgICAgICAgICAgICAgcmV2aXNp
b24gPSBpbnQocmV2aXNpb24pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlm
IGRvX2Fzc2VydDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUHJvdmlk
ZWQgc3RyaW5nICd7fScgaXMgbm90IGFuIFNWTiIuZm9ybWF0KHJldmlzaW9uKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHJldmlzaW9u
LCBpbnQpOgorICAgICAgICAgICAgaWYgZG9fYXNzZXJ0OgorICAgICAgICAgICAgICAgIHJhaXNl
IFZhbHVlRXJyb3IoIkV4cGVjdGVkIGludCB0eXBlIGZvciByZXZpc2lvbiwgZ290ICd7fSciLmZv
cm1hdCh0eXBlKHJldmlzaW9uKSkpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAg
IGlmIHJldmlzaW9uIDw9IDA6CisgICAgICAgICAgICBpZiBkb19hc3NlcnQ6CisgICAgICAgICAg
ICAgICAgcmFpc2UgVmFsdWVFcnJvcignU1ZOIHJldmlzaW9ucyBtdXN0IGJlIHBvc2l0aXZlIGlu
dGVnZXInKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICByZXR1cm4gcmV2aXNp
b24KKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfcGFyc2VfaWRlbnRpZmllcihjbHMsIGlk
ZW50aWZpZXIsIGRvX2Fzc2VydD1GYWxzZSk6CisgICAgICAgIGlmIGlkZW50aWZpZXIgaXMgTm9u
ZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgYnJhbmNoID0gTm9uZQorICAg
ICAgICBpZiBpc2luc3RhbmNlKGlkZW50aWZpZXIsIHNpeC5zdHJpbmdfdHlwZXMpOgorICAgICAg
ICAgICAgbWF0Y2ggPSBjbHMuSURFTlRJRklFUl9SRS5tYXRjaChpZGVudGlmaWVyKQorICAgICAg
ICAgICAgaWYgbWF0Y2g6CisgICAgICAgICAgICAgICAgaWRlbnRpZmllciA9IG1hdGNoLmdyb3Vw
KCdicmFuY2hfcG9pbnQnKSwgaW50KG1hdGNoLmdyb3VwKCdpZGVudGlmaWVyJykpCisgICAgICAg
ICAgICAgICAgaWYgaWRlbnRpZmllclswXToKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmll
ciA9IGludChpZGVudGlmaWVyWzBdKSwgaWRlbnRpZmllclsxXQorICAgICAgICAgICAgICAgIGJy
YW5jaCA9IG1hdGNoLmdyb3VwKCdicmFuY2gnKQorICAgICAgICAgICAgZWxpZiBjbHMuTlVNQkVS
X1JFLm1hdGNoKGlkZW50aWZpZXIpOgorICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgPSBOb25l
LCBpbnQoaWRlbnRpZmllcikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYg
ZG9fYXNzZXJ0OgorICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJQcm92aWRl
ZCBzdHJpbmcgJ3t9JyBpcyBub3QgYW4gaWRlbnRpZmllciIuZm9ybWF0KGlkZW50aWZpZXIpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgaWYgaXNpbnN0YW5jZShpZGVu
dGlmaWVyLCBpbnQpOgorICAgICAgICAgICAgaWRlbnRpZmllciA9IChOb25lLCBpZGVudGlmaWVy
KQorCisgICAgICAgIGlmIG5vdCAoaXNpbnN0YW5jZShpZGVudGlmaWVyLCB0dXBsZSkgYW5kIGxl
bihpZGVudGlmaWVyKSA9PSAyIGFuZCBhbGwoW2lzaW5zdGFuY2UoeCwgaW50KSBvciB4IGlzIE5v
bmUgZm9yIHggaW4gaWRlbnRpZmllcl0pKToKKyAgICAgICAgICAgIGlmIGRvX2Fzc2VydDoKKyAg
ICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdFeHBlY3RlZCBpbnQgdHlwZSAob3IgcGFp
ciBvZiBpbnRzKSBmb3IgaWRlbnRpZmllciwgZ290IHt9Jy5mb3JtYXQodHlwZShpZGVudGlmaWVy
KSkpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIHJldHVybiAoaWRlbnRpZmll
clswXSwgaWRlbnRpZmllclsxXSwgYnJhbmNoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVm
IHBhcnNlKGNscywgYXJnKToKKyAgICAgICAgaWYgY2xzLl9wYXJzZV9pZGVudGlmaWVyKGFyZyk6
CisgICAgICAgICAgICByZXR1cm4gQ29tbWl0KGlkZW50aWZpZXI9YXJnKQorCisgICAgICAgIGlm
IGNscy5fcGFyc2VfcmV2aXNpb24oYXJnKToKKyAgICAgICAgICAgIHJldHVybiBDb21taXQocmV2
aXNpb249YXJnKQorCisgICAgICAgIGlmIGNscy5fcGFyc2VfaGFzaChhcmcpOgorICAgICAgICAg
ICAgcmV0dXJuIENvbW1pdChoYXNoPWFyZykKKworICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIn
e30nIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBjb21taXQgb2JqZWN0Ii5mb3JtYXQoYXJnKSkK
KworICAgIGRlZiBfX2luaXRfXygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgaGFzaD1Ob25lLAor
ICAgICAgICByZXZpc2lvbj1Ob25lLAorICAgICAgICBpZGVudGlmaWVyPU5vbmUsIGJyYW5jaD1O
b25lLCBicmFuY2hfcG9pbnQ9Tm9uZSwKKyAgICAgICAgdGltZXN0YW1wPU5vbmUsIGF1dGhvcj1O
b25lLCBtZXNzYWdlPU5vbmUsCisgICAgKToKKyAgICAgICAgc2VsZi5oYXNoID0gc2VsZi5fcGFy
c2VfaGFzaChoYXNoLCBkb19hc3NlcnQ9VHJ1ZSkKKyAgICAgICAgc2VsZi5yZXZpc2lvbiA9IHNl
bGYuX3BhcnNlX3JldmlzaW9uKHJldmlzaW9uLCBkb19hc3NlcnQ9VHJ1ZSkKKworICAgICAgICBw
YXJzZWRfaWRlbnRpZmllciA9IHNlbGYuX3BhcnNlX2lkZW50aWZpZXIoaWRlbnRpZmllciwgZG9f
YXNzZXJ0PVRydWUpCisgICAgICAgIGlmIHBhcnNlZF9pZGVudGlmaWVyOgorICAgICAgICAgICAg
cGFyc2VkX2JyYW5jaF9wb2ludCwgc2VsZi5pZGVudGlmaWVyLCBwYXJzZWRfYnJhbmNoID0gcGFy
c2VkX2lkZW50aWZpZXIKKyAgICAgICAgICAgIHNlbGYuYnJhbmNoX3BvaW50ID0gcGFyc2VkX2Jy
YW5jaF9wb2ludCBvciBicmFuY2hfcG9pbnQKKyAgICAgICAgICAgIHNlbGYuYnJhbmNoID0gcGFy
c2VkX2JyYW5jaCBvciBicmFuY2gKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuaWRl
bnRpZmllciA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuYnJhbmNoX3BvaW50ID0gYnJhbmNoX3Bv
aW50CisgICAgICAgICAgICBzZWxmLmJyYW5jaCA9IGJyYW5jaAorCisgICAgICAgIGlmIGJyYW5j
aCBhbmQgbm90IGlzaW5zdGFuY2UoYnJhbmNoLCBzaXguc3RyaW5nX3R5cGVzKToKKyAgICAgICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoIkV4cGVjdGVkICdicmFuY2gnIHRvIGJlIGEgc3RyaW5nIikK
KyAgICAgICAgaWYgYnJhbmNoIGFuZCBicmFuY2ggIT0gc2VsZi5icmFuY2g6CisgICAgICAgICAg
ICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICJDYWxsZXIgcGFzc2VkIGJvdGgg
J2JyYW5jaCcgYW5kICdpZGVudGlmaWVyJywgYnV0IHNwZWNpZmllZCBkaWZmZXJlbnQgYnJhbmNo
ZXMgKHt9IGFuZCB7fSkiLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoLCBzZWxm
LmJyYW5jaCwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgKQorCisgICAgICAgIGlm
IGJyYW5jaF9wb2ludCBhbmQgbm90IGlzaW5zdGFuY2UoYnJhbmNoX3BvaW50LCBpbnQpOgorICAg
ICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRXhwZWN0ZWQgJ2JyYW5jaF9wb2ludCcgdG8gYmUg
YW4gaW50IikKKyAgICAgICAgaWYgYnJhbmNoX3BvaW50IGFuZCBicmFuY2hfcG9pbnQgIT0gc2Vs
Zi5icmFuY2hfcG9pbnQ6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAg
ICAgICAgICJDYWxsZXIgcGFzc2VkIGJvdGggJ2JyYW5jaF9wb2ludCcgYW5kICdpZGVudGlmaWVy
JywgYnV0IHNwZWNpZmllZCBkaWZmZXJlbnQgdmFsdWVzICh7fSBhbmQge30pIi5mb3JtYXQoCisg
ICAgICAgICAgICAgICAgICAgIGJyYW5jaF9wb2ludCwgc2VsZi5icmFuY2hfcG9pbnQsCisgICAg
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICkKKworICAgICAgICBpZiB0aW1lc3RhbXAgYW5k
IG5vdCBpc2luc3RhbmNlKHRpbWVzdGFtcCwgaW50KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVF
cnJvcigiRXhwZWN0ZWQgJ3RpbWVzdGFtcCcgdG8gYmUgb2YgdHlwZSBpbnQsIGdvdCAne30nIi5m
b3JtYXQodGltZXN0YW1wKSkKKyAgICAgICAgc2VsZi50aW1lc3RhbXAgPSB0aW1lc3RhbXAKKwor
ICAgICAgICBpZiBhdXRob3IgYW5kIGlzaW5zdGFuY2UoYXV0aG9yLCBzaXguc3RyaW5nX3R5cGVz
KToKKyAgICAgICAgICAgIHNlbGYuYXV0aG9yID0gQ29udHJpYnV0b3IuYnlfZW1haWwuZ2V0KAor
ICAgICAgICAgICAgICAgIGF1dGhvciwKKyAgICAgICAgICAgICAgICBDb250cmlidXRvci5ieV9u
YW1lLmdldChhdXRob3IpLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgaWYgbm90IHNlbGYu
YXV0aG9yOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIid7fScgZG9lcyBub3Qg
bWF0Y2ggYSBrbm93biBjb250cmlidXRvciIpCisgICAgICAgIGVsaWYgYXV0aG9yIGFuZCBub3Qg
aXNpbnN0YW5jZShhdXRob3IsIENvbnRyaWJ1dG9yKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVF
cnJvcigiRXhwZWN0ZWQgJ2F1dGhvcicgdG8gYmUgb2YgdHlwZSB7fSwgZ290ICd7fSciLmZvcm1h
dChDb250cmlidXRvciwgYXV0aG9yKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYu
YXV0aG9yID0gYXV0aG9yCisKKyAgICAgICAgaWYgbWVzc2FnZSBhbmQgbm90IGlzaW5zdGFuY2Uo
bWVzc2FnZSwgc2l4LnN0cmluZ190eXBlcyk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KCJFeHBlY3RlZCAnbWVzc2FnZScgdG8gYmUgYSBzdHJpbmcsIGdvdCAne30nIi5mb3JtYXQobWVz
c2FnZSkpCisgICAgICAgIHNlbGYubWVzc2FnZSA9IG1lc3NhZ2UKKworICAgICAgICAjIEZvcmNl
IGEgY29tbWl0IGZvcm1hdCBjaGVjaworICAgICAgICBzZWxmLl9fcmVwcl9fKCkKKworICAgIGRl
ZiBwcmV0dHlfcHJpbnQoc2VsZiwgbWVzc2FnZT1GYWxzZSk6CisgICAgICAgIHJlc3VsdCA9ICd7
fVxuJy5mb3JtYXQoc2VsZikKKyAgICAgICAgaWYgc2VsZi5yZXZpc2lvbjoKKyAgICAgICAgICAg
IHJlc3VsdCArPSAnICAgIFNWTiByZXZpc2lvbjogcnt9Jy5mb3JtYXQoc2VsZi5yZXZpc2lvbikK
KyAgICAgICAgICAgIGlmIHNlbGYuYnJhbmNoOgorICAgICAgICAgICAgICAgIHJlc3VsdCArPSAn
IG9uIHt9Jy5mb3JtYXQoc2VsZi5icmFuY2gpCisgICAgICAgICAgICByZXN1bHQgKz0gJ1xuJwor
ICAgICAgICBpZiBzZWxmLmhhc2g6CisgICAgICAgICAgICByZXN1bHQgKz0gJyAgICBnaXQgaGFz
aDoge30nLmZvcm1hdChzZWxmLmhhc2hbOjEyXSkKKyAgICAgICAgICAgIGlmIHNlbGYuYnJhbmNo
OgorICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnIG9uIHt9Jy5mb3JtYXQoc2VsZi5icmFuY2gp
CisgICAgICAgICAgICByZXN1bHQgKz0gJ1xuJworICAgICAgICBpZiBzZWxmLmlkZW50aWZpZXI6
CisgICAgICAgICAgICByZXN1bHQgKz0gJyAgICBpZGVudGlmaWVyOiBpe30nLmZvcm1hdChzZWxm
LmlkZW50aWZpZXIpCisgICAgICAgICAgICBpZiBzZWxmLmlkZW50aWZpZXI6CisgICAgICAgICAg
ICAgICAgcmVzdWx0ICs9ICcgb24ge30nLmZvcm1hdChzZWxmLmJyYW5jaCkKKyAgICAgICAgICAg
IHJlc3VsdCArPSAnXG4nCisgICAgICAgIGlmIHNlbGYuYXV0aG9yOgorICAgICAgICAgICAgcmVz
dWx0ICs9ICcgICAgYnkge30nLmZvcm1hdChzZWxmLmF1dGhvcikKKyAgICAgICAgICAgIGlmIHNl
bGYudGltZXN0YW1wOgorICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnIEAge30nLmZvcm1hdChk
YXRldGltZS51dGNmcm9tdGltZXN0YW1wKHNlbGYudGltZXN0YW1wKSkKKyAgICAgICAgICAgIHJl
c3VsdCArPSAnXG4nCisKKyAgICAgICAgaWYgc2VsZi5tZXNzYWdlIGFuZCBtZXNzYWdlOgorICAg
ICAgICAgICAgcmVzdWx0ICs9ICdcbicKKyAgICAgICAgICAgIHJlc3VsdCArPSBzZWxmLm1lc3Nh
Z2UKKworICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgX19yZXByX18oc2VsZik6Cisg
ICAgICAgIGlmIHNlbGYuYnJhbmNoX3BvaW50IGFuZCBzZWxmLmlkZW50aWZpZXIgYW5kIHNlbGYu
YnJhbmNoOgorICAgICAgICAgICAgcmV0dXJuICdpe30ue31Ae30nLmZvcm1hdChzZWxmLmJyYW5j
aF9wb2ludCwgc2VsZi5pZGVudGlmaWVyLCBzZWxmLmJyYW5jaCkKKyAgICAgICAgaWYgc2VsZi5p
ZGVudGlmaWVyIGFuZCBzZWxmLmJyYW5jaDoKKyAgICAgICAgICAgIHJldHVybiAnaXt9QHt9Jy5m
b3JtYXQoc2VsZi5pZGVudGlmaWVyLCBzZWxmLmJyYW5jaCkKKyAgICAgICAgaWYgc2VsZi5yZXZp
c2lvbjoKKyAgICAgICAgICAgIHJldHVybiAncnt9Jy5mb3JtYXQoc2VsZi5yZXZpc2lvbikKKyAg
ICAgICAgaWYgc2VsZi5oYXNoOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuaGFzaFs6MTJdCisg
ICAgICAgIGlmIHNlbGYuaWRlbnRpZmllcjoKKyAgICAgICAgICAgIHJldHVybiAnaXt9Jy5mb3Jt
YXQoc2VsZi5pZGVudGlmaWVyKQorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbmNvbXBsZXRl
IGNvbW1pdCBmb3JtYXQnKQorCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICBpZiBz
ZWxmLmlkZW50aWZpZXIgYW5kIHNlbGYuYnJhbmNoOgorICAgICAgICAgICAgcmV0dXJuIGhhc2go
c2VsZi5pZGVudGlmaWVyKSBeIGhhc2goc2VsZi5icmFuY2gpCisgICAgICAgIGlmIHNlbGYucmV2
aXNpb246CisgICAgICAgICAgICByZXR1cm4gaGFzaChzZWxmLnJldmlzaW9uKQorICAgICAgICBp
ZiBzZWxmLmhhc2g6CisgICAgICAgICAgICByZXR1cm4gaGFzaChzZWxmLmhhc2gpCisgICAgICAg
IGlmIHNlbGYuaWRlbnRpZmllcjoKKyAgICAgICAgICAgIHJldHVybiBoYXNoKHNlbGYuaWRlbnRp
ZmllcikKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW5jb21wbGV0ZSBjb21taXQgZm9ybWF0
JykKKworICAgIGRlZiBfX2NtcF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5z
dGFuY2Uob3RoZXIsIENvbW1pdCk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdDYW5u
b3QgY29tcGFyZSBjb21taXQgYW5kIHt9Jy5mb3JtYXQodHlwZShvdGhlcikpKQorICAgICAgICBp
ZiBzZWxmLnRpbWVzdGFtcCBhbmQgb3RoZXIudGltZXN0YW1wIGFuZCBzZWxmLnRpbWVzdGFtcCAh
PSBvdGhlci50aW1lc3RhbXA6CisgICAgICAgICAgICByZXR1cm4gc2VsZi50aW1lc3RhbXAgLSBv
dGhlci50aW1lc3RhbXAKKyAgICAgICAgaWYgc2VsZi5yZXZpc2lvbiBhbmQgb3RoZXIucmV2aXNp
b246CisgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXZpc2lvbiAtIG90aGVyLnJldmlzaW9uCisg
ICAgICAgIGlmIHNlbGYuaWRlbnRpZmllciBhbmQgb3RoZXIuaWRlbnRpZmllciBhbmQgc2VsZi5i
cmFuY2ggPT0gb3RoZXIuYnJhbmNoOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuaWRlbnRpZmll
ciAtIG90aGVyLmlkZW50aWZpZXIKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ2Fubm90IGNv
bXBhcmUge30gYW5kIHt9Jy5mb3JtYXQoc2VsZiwgb3RoZXIpKQorCisgICAgZGVmIF9fZXFfXyhz
ZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBoYXNoKHNlbGYpID09IGhhc2gob3RoZXIpCisK
KyAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIGhhc2goc2VsZikg
IT0gaGFzaChvdGhlcikKKworICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICBy
ZXR1cm4gc2VsZi5fX2NtcF9fKG90aGVyKSA8IDAKKworICAgIGRlZiBfX2xlX18oc2VsZiwgb3Ro
ZXIpOgorICAgICAgICByZXR1cm4gc2VsZi5fX2NtcF9fKG90aGVyKSA8PSAwCisKKyAgICBkZWYg
X19ndF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbXBfXyhvdGhlcikg
PiAwCisKKyAgICBkZWYgX19nZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
X19jbXBfXyhvdGhlcikgPj0gMApJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvd2Via2l0c2NtcHkvY29udHJpYnV0b3IucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvY29udHJpYnV0b3IucHkJKHJl
dmlzaW9uIDI2NzcxNCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dl
YmtpdHNjbXB5L2NvbnRyaWJ1dG9yLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw4IEBA
IGltcG9ydCByZQogCiAKIGNsYXNzIENvbnRyaWJ1dG9yKG9iamVjdCk6Ci0gICAgR0lUX0FVVEhP
Ul9SRSA9IHJlLmNvbXBpbGUocidBdXRob3I6ICg/UDxhdXRob3I+LiopIDwoP1A8ZW1haWw+Liop
PicpCisgICAgR0lUX0FVVEhPUl9SRSA9IHJlLmNvbXBpbGUocidBdXRob3I6ICg/UDxhdXRob3I+
LiopIDwoP1A8ZW1haWw+W15AXStAW15AXSspKEAuKik/PicpCisgICAgQVVUT01BVEVEX0NIRUNL
SU5fUkUgPSByZS5jb21waWxlKHInQXV0aG9yOiAoP1A8YXV0aG9yPi4qKSA8ZGV2bnVsbD4nKQog
ICAgIFNWTl9BVVRIT1JfUkUgPSByZS5jb21waWxlKHInclxkKyBcfCAoP1A8ZW1haWw+LiopIFx8
ICg/UDxkYXRlPi4qKSBcfCBcZCsgbGluZXMnKQogICAgIFNWTl9QQVRDSF9GUk9NX1JFID0gcmUu
Y29tcGlsZShyJ1BhdGNoIGJ5ICg/UDxhdXRob3I+LiopIDwoP1A8ZW1haWw+LiopPiBvbiBcZCst
XGQrLVxkKycpCiAKQEAgLTM4LDE3ICszOSwyNiBAQCBjbGFzcyBDb250cmlidXRvcihvYmplY3Qp
OgogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGZyb21fc2NtX2xvZyhjbHMsIGxpbmUpOgor
ICAgICAgICBlbWFpbCA9IE5vbmUKICAgICAgICAgYXV0aG9yID0gTm9uZQogCi0gICAgICAgIGZv
ciBleHByZXNzaW9uIGluIFtjbHMuR0lUX0FVVEhPUl9SRSwgY2xzLlNWTl9BVVRIT1JfUkUsIGNs
cy5TVk5fUEFUQ0hfRlJPTV9SRV06CisgICAgICAgIGZvciBleHByZXNzaW9uIGluIFtjbHMuR0lU
X0FVVEhPUl9SRSwgY2xzLlNWTl9BVVRIT1JfUkUsIGNscy5TVk5fUEFUQ0hfRlJPTV9SRSwgY2xz
LkFVVE9NQVRFRF9DSEVDS0lOX1JFXToKICAgICAgICAgICAgIG1hdGNoID0gZXhwcmVzc2lvbi5t
YXRjaChsaW5lKQogICAgICAgICAgICAgaWYgbWF0Y2g6CiAgICAgICAgICAgICAgICAgaWYgJ2F1
dGhvcicgaW4gZXhwcmVzc2lvbi5ncm91cGluZGV4OgogICAgICAgICAgICAgICAgICAgICBhdXRo
b3IgPSBtYXRjaC5ncm91cCgnYXV0aG9yJykKLSAgICAgICAgICAgICAgICBlbWFpbCA9IG1hdGNo
Lmdyb3VwKCdlbWFpbCcpCisgICAgICAgICAgICAgICAgICAgIGlmICcobm8gYXV0aG9yKScgaW4g
YXV0aG9yIG9yICdBdXRvbWF0ZWQgQ2hlY2tpbicgaW4gYXV0aG9yOgorICAgICAgICAgICAgICAg
ICAgICAgICAgYXV0aG9yID0gTm9uZQorICAgICAgICAgICAgICAgIGlmICdlbWFpbCcgaW4gIGV4
cHJlc3Npb24uZ3JvdXBpbmRleDoKKyAgICAgICAgICAgICAgICAgICAgZW1haWwgPSBtYXRjaC5n
cm91cCgnZW1haWwnKQorICAgICAgICAgICAgICAgICAgICBpZiAnKG5vIGF1dGhvciknIGluIGVt
YWlsOgorICAgICAgICAgICAgICAgICAgICAgICAgZW1haWwgPSBOb25lCiAgICAgICAgICAgICAg
ICAgYnJlYWsKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIid7
fScgZG9lcyBub3QgbWF0Y2ggYSBrbm93biBTQ00gbG9nIikKKyAgICAgICAgICAgIHJhaXNlIFZh
bHVlRXJyb3IoIid7fScgZG9lcyBub3QgbWF0Y2ggYSBrbm93biBTQ00gbG9nIi5mb3JtYXQobGlu
ZSkpCisKKyAgICAgICAgaWYgbm90IGVtYWlsOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAog
ICAgICAgICBjb250cmlidXRvciA9IGNscy5ieV9uYW1lLmdldChhdXRob3Igb3IgZW1haWwpCiAg
ICAgICAgIGlmIG5vdCBjb250cmlidXRvcjoKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL2dpdC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9naXQucHkJ
KHJldmlzaW9uIDI2NzcxNCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L2xvY2FsL2dpdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjEsMjQgKzIxLDQ3
IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAKIAotZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHJ1biwgZGVj
b3JhdG9ycworaW1wb3J0IHJlCisKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBydW4sIGRlY29y
YXRvcnMsIFRpbWVvdXRFeHBpcmVkCiBmcm9tIHdlYmtpdHNjbXB5LmxvY2FsIGltcG9ydCBTY20K
K2Zyb20gd2Via2l0c2NtcHkgaW1wb3J0IENvbW1pdCwgQ29udHJpYnV0b3IKIAogCiBjbGFzcyBH
aXQoU2NtKToKICAgICBleGVjdXRhYmxlID0gJy91c3IvYmluL2dpdCcKKyAgICBHSVRfQ09NTUlU
ID0gcmUuY29tcGlsZShyJ2NvbW1pdCAoP1A8aGFzaD5bMC05YS1mXSspJykKKyAgICBHSVRfU1ZO
X1JFVklTSU9OID0gcmUuY29tcGlsZShyJ2dpdC1zdm4taWQ6IFxTKzpcL1wvLitAKD9QPHJldmlz
aW9uPlxkKykgListListListLisnKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGlzX2No
ZWNrb3V0KGNscywgcGF0aCk6CiAgICAgICAgIHJldHVybiBydW4oW2Nscy5leGVjdXRhYmxlLCAn
cmV2LXBhcnNlJywgJy0tc2hvdy10b3BsZXZlbCddLCBjd2Q9cGF0aCwgY2FwdHVyZV9vdXRwdXQ9
VHJ1ZSkucmV0dXJuY29kZSA9PSAwCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCk6Ci0g
ICAgICAgIHN1cGVyKEdpdCwgc2VsZikuX19pbml0X18ocGF0aCkKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgcGF0aCwgZGV2X2JyYW5jaGVzPU5vbmUsIHByb2RfYnJhbmNoZXM9Tm9uZSk6CisgICAg
ICAgIHN1cGVyKEdpdCwgc2VsZikuX19pbml0X18ocGF0aCwgZGV2X2JyYW5jaGVzPWRldl9icmFu
Y2hlcywgcHJvZF9icmFuY2hlcz1wcm9kX2JyYW5jaGVzKQogICAgICAgICBpZiBub3Qgc2VsZi5y
b290X3BhdGg6CiAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdQcm92aWRlZCBwYXRoIHt9IGlz
IG5vdCBhIGdpdCByZXBvc2l0b3J5Jy5mb3JtYXQocGF0aCkpCiAKICAgICBAcHJvcGVydHkKICAg
ICBAZGVjb3JhdG9ycy5NZW1vaXplKCkKKyAgICBkZWYgaXNfc3ZuKHNlbGYpOgorICAgICAgICB0
cnk6CisgICAgICAgICAgICByZXR1cm4gcnVuKAorICAgICAgICAgICAgICAgIFtzZWxmLmV4ZWN1
dGFibGUsICdzdm4nLCAnZmluZC1yZXYnLCAncjEnXSwKKyAgICAgICAgICAgICAgICBjd2Q9c2Vs
Zi5yb290X3BhdGgsCisgICAgICAgICAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwKKyAgICAg
ICAgICAgICAgICBlbmNvZGluZz0ndXRmLTgnLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ9MSwK
KyAgICAgICAgICAgICkucmV0dXJuY29kZSA9PSAwCisgICAgICAgIGV4Y2VwdCBUaW1lb3V0RXhw
aXJlZDoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgQHByb3BlcnR5CisgICAgZGVm
IGlzX2dpdChzZWxmKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIEBwcm9wZXJ0eQorICAg
IEBkZWNvcmF0b3JzLk1lbW9pemUoKQogICAgIGRlZiByb290X3BhdGgoc2VsZik6CiAgICAgICAg
IHJlc3VsdCA9IHJ1bihbc2VsZi5leGVjdXRhYmxlLCAncmV2LXBhcnNlJywgJy0tc2hvdy10b3Bs
ZXZlbCddLCBjd2Q9c2VsZi5wYXRoLCBjYXB0dXJlX291dHB1dD1UcnVlLCBlbmNvZGluZz0ndXRm
LTgnKQogICAgICAgICBpZiByZXN1bHQucmV0dXJuY29kZToKQEAgLTY3LDExICs5MCw3IEBAIGNs
YXNzIEdpdChTY20pOgogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGJyYW5jaGVzKHNlbGYpOgot
ICAgICAgICBicmFuY2ggPSBydW4oW3NlbGYuZXhlY3V0YWJsZSwgJ2JyYW5jaCcsICctYSddLCBj
d2Q9c2VsZi5yb290X3BhdGgsIGNhcHR1cmVfb3V0cHV0PVRydWUsIGVuY29kaW5nPSd1dGYtOCcp
Ci0gICAgICAgIGlmIGJyYW5jaC5yZXR1cm5jb2RlOgotICAgICAgICAgICAgcmFpc2Ugc2VsZi5F
eGNlcHRpb24oJ0ZhaWxlZCB0byByZXRyaWV2ZSBicmFuY2ggbGlzdCBmb3Ige30nLmZvcm1hdChz
ZWxmLnJvb3RfcGF0aCkpCi0gICAgICAgIHJlc3VsdCA9IFticmFuY2gubHN0cmlwKCcgKicpIGZv
ciBicmFuY2ggaW4gZmlsdGVyKGxhbWJkYSBicmFuY2g6ICctPicgbm90IGluIGJyYW5jaCwgYnJh
bmNoLnN0ZG91dC5zcGxpdGxpbmVzKCkpXQotICAgICAgICByZXR1cm4gWycvJy5qb2luKGJyYW5j
aC5zcGxpdCgnLycpWzI6XSkgaWYgYnJhbmNoLnN0YXJ0c3dpdGgoJ3JlbW90ZXMvb3JpZ2luLycp
IGVsc2UgYnJhbmNoIGZvciBicmFuY2ggaW4gcmVzdWx0XQorICAgICAgICByZXR1cm4gc2VsZi5f
YnJhbmNoZXNfZm9yKCkKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiB0YWdzKHNlbGYpOgpAQCAt
ODUsMyArMTA0LDEzNSBAQCBjbGFzcyBHaXQoU2NtKToKICAgICAgICAgaWYgcmVzdWx0LnJldHVy
bmNvZGU6CiAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignRmFpbGVkIHRvIHJldHJp
ZXZlIHJlbW90ZSBmb3Ige30nLmZvcm1hdChzZWxmLnJvb3RfcGF0aCkpCiAgICAgICAgIHJldHVy
biByZXN1bHQuc3Rkb3V0LnJzdHJpcCgpCisKKyAgICBkZWYgX2NvbW1pdF9jb3VudChzZWxmLCBu
YXRpdmVfcGFyYW1ldGVyKToKKyAgICAgICAgcmV2aXNpb25fY291bnQgPSBydW4oCisgICAgICAg
ICAgICBbc2VsZi5leGVjdXRhYmxlLCAncmV2LWxpc3QnLCAnLS1jb3VudCcsICctLW5vLW1lcmdl
cycsIG5hdGl2ZV9wYXJhbWV0ZXJdLAorICAgICAgICAgICAgY3dkPXNlbGYucm9vdF9wYXRoLCBj
YXB0dXJlX291dHB1dD1UcnVlLCBlbmNvZGluZz0ndXRmLTgnLAorICAgICAgICApCisgICAgICAg
IGlmIHJldmlzaW9uX2NvdW50LnJldHVybmNvZGU6CisgICAgICAgICAgICByYWlzZSBzZWxmLkV4
Y2VwdGlvbignRmFpbGVkIHRvIHJldHJpZXZlIHJldmlzaW9uIGNvdW50IGZvciB7fScuZm9ybWF0
KG5hdGl2ZV9wYXJhbWV0ZXIpKQorICAgICAgICByZXR1cm4gaW50KHJldmlzaW9uX2NvdW50LnN0
ZG91dCkKKworICAgIGRlZiBfYnJhbmNoZXNfZm9yKHNlbGYsIGhhc2g9Tm9uZSk6CisgICAgICAg
IGJyYW5jaCA9IHJ1bigKKyAgICAgICAgICAgIFtzZWxmLmV4ZWN1dGFibGUsICdicmFuY2gnLCAn
LWEnXSArIChbJy0tY29udGFpbnMnLCBoYXNoXSBpZiBoYXNoIGVsc2UgW10pLAorICAgICAgICAg
ICAgY3dkPXNlbGYucm9vdF9wYXRoLAorICAgICAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwK
KyAgICAgICAgICAgIGVuY29kaW5nPSd1dGYtOCcsCisgICAgICAgICkKKyAgICAgICAgaWYgYnJh
bmNoLnJldHVybmNvZGU6CisgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignRmFpbGVk
IHRvIHJldHJpZXZlIGJyYW5jaCBsaXN0IGZvciB7fScuZm9ybWF0KHNlbGYucm9vdF9wYXRoKSkK
KyAgICAgICAgcmVzdWx0ID0gW2JyYW5jaC5sc3RyaXAoJyAqJykgZm9yIGJyYW5jaCBpbiBmaWx0
ZXIobGFtYmRhIGJyYW5jaDogJy0+JyBub3QgaW4gYnJhbmNoLCBicmFuY2guc3Rkb3V0LnNwbGl0
bGluZXMoKSldCisgICAgICAgIHJldHVybiBzb3J0ZWQoc2V0KFsnLycuam9pbihicmFuY2guc3Bs
aXQoJy8nKVsyOl0pIGlmIGJyYW5jaC5zdGFydHN3aXRoKCdyZW1vdGVzL29yaWdpbi8nKSBlbHNl
IGJyYW5jaCBmb3IgYnJhbmNoIGluIHJlc3VsdF0pKQorCisgICAgZGVmIGNvbW1pdChzZWxmLCBo
YXNoPU5vbmUsIHJldmlzaW9uPU5vbmUsIGlkZW50aWZpZXI9Tm9uZSwgYnJhbmNoPU5vbmUpOgor
ICAgICAgICBpZiByZXZpc2lvbiBhbmQgbm90IHNlbGYuaXNfc3ZuOgorICAgICAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcignVGhpcyBnaXQgY2hlY2tvdXQgZG9lcyBub3Qgc3VwcG9ydCBTVk4gcmV2
aXNpb25zJykKKyAgICAgICAgZWxpZiByZXZpc2lvbjoKKyAgICAgICAgICAgIHJldmlzaW9uID0g
Q29tbWl0Ll9wYXJzZV9yZXZpc2lvbihyZXZpc2lvbiwgZG9fYXNzZXJ0PVRydWUpCisgICAgICAg
ICAgICByZXZpc2lvbl9sb2cgPSBydW4oCisgICAgICAgICAgICAgICAgW3NlbGYuZXhlY3V0YWJs
ZSwgJ3N2bicsICdmaW5kLXJldicsICdye30nLmZvcm1hdChyZXZpc2lvbildLAorICAgICAgICAg
ICAgICAgIGN3ZD1zZWxmLnJvb3RfcGF0aCwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgZW5jb2Rpbmc9
J3V0Zi04JywKKyAgICAgICAgICAgICAgICB0aW1lb3V0PTMsCisgICAgICAgICAgICApCisgICAg
ICAgICAgICBpZiByZXZpc2lvbl9sb2cucmV0dXJuY29kZToKKyAgICAgICAgICAgICAgICByYWlz
ZSBzZWxmLkV4Y2VwdGlvbigiRmFpbGVkIHRvIHJldHJpZXZlIGNvbW1pdCBpbmZvcm1hdGlvbiBm
b3IgJ3J7fSciLmZvcm1hdChyZXZpc2lvbikpCisgICAgICAgICAgICBoYXNoID0gcmV2aXNpb25f
bG9nLnN0ZG91dC5yc3RyaXAoKQorICAgICAgICAgICAgaWYgbm90IGhhc2g6CisgICAgICAgICAg
ICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oIkZhaWxlZCB0byBmaW5kICdye30nIi5mb3JtYXQo
cmV2aXNpb24pKQorCisgICAgICAgIGRlZmF1bHRfYnJhbmNoID0gc2VsZi5kZWZhdWx0X2JyYW5j
aAorICAgICAgICBwYXJzZWRfYnJhbmNoX3BvaW50ID0gTm9uZQorCisgICAgICAgIGlmIGlkZW50
aWZpZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiByZXZpc2lvbjoKKyAgICAgICAgICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKCdDYW5ub3QgZGVmaW5lIGJvdGggcmV2aXNpb24gYW5kIGlk
ZW50aWZpZXInKQorICAgICAgICAgICAgaWYgaGFzaDoKKyAgICAgICAgICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKCdDYW5ub3QgZGVmaW5lIGJvdGggaGFzaCBhbmQgaWRlbnRpZmllcicpCisKKyAg
ICAgICAgICAgIHBhcnNlZF9icmFuY2hfcG9pbnQsIGlkZW50aWZpZXIsIHBhcnNlZF9icmFuY2gg
PSBDb21taXQuX3BhcnNlX2lkZW50aWZpZXIoaWRlbnRpZmllciwgZG9fYXNzZXJ0PVRydWUpCisg
ICAgICAgICAgICBpZiBwYXJzZWRfYnJhbmNoOgorICAgICAgICAgICAgICAgIGJyYW5jaCA9IHBh
cnNlZF9icmFuY2gKKworICAgICAgICAgICAgYmFzZWxpbmUgPSBicmFuY2ggb3IgJ0hFQUQnCisg
ICAgICAgICAgICBpc19kZWZhdWx0ID0gYmFzZWxpbmUgPT0gZGVmYXVsdF9icmFuY2gKKyAgICAg
ICAgICAgIGlmIGJhc2VsaW5lID09ICdIRUFEJzoKKyAgICAgICAgICAgICAgICBpc19kZWZhdWx0
ID0gZGVmYXVsdF9icmFuY2ggaW4gc2VsZi5fYnJhbmNoZXNfZm9yKGJhc2VsaW5lKQorICAgICAg
ICAgICAgYmFzZV9jb3VudCA9IHNlbGYuX2NvbW1pdF9jb3VudChiYXNlbGluZSBpZiBpc19kZWZh
dWx0IGVsc2UgJ3t9Li57fScuZm9ybWF0KGRlZmF1bHRfYnJhbmNoLCBiYXNlbGluZSkpCisKKyAg
ICAgICAgICAgIGlmIGlkZW50aWZpZXIgPiBiYXNlX2NvdW50OgorICAgICAgICAgICAgICAgIHJh
aXNlIHNlbGYuRXhjZXB0aW9uKCdJZGVudGlmaWVyIHt9IGNhbm5vdCBiZSBmb3VuZCBvbiB0aGUg
c3BlY2lmaWVkIGJyYW5jaCBpbiB0aGUgY3VycmVudCBjaGVja291dCcuZm9ybWF0KGlkZW50aWZp
ZXIpKQorICAgICAgICAgICAgbG9nID0gcnVuKAorICAgICAgICAgICAgICAgIFtzZWxmLmV4ZWN1
dGFibGUsICdsb2cnLCAne31+e30nLmZvcm1hdChicmFuY2ggb3IgJ0hFQUQnLCBiYXNlX2NvdW50
IC0gaWRlbnRpZmllciksICctMSddLAorICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnJvb3RfcGF0
aCwKKyAgICAgICAgICAgICAgICBjYXB0dXJlX291dHB1dD1UcnVlLAorICAgICAgICAgICAgICAg
IGVuY29kaW5nPSd1dGYtOCcsCisgICAgICAgICAgICApCisgICAgICAgICAgICBpZiBsb2cucmV0
dXJuY29kZToKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbigiRmFpbGVkIHRv
IHJldHJpZXZlIGNvbW1pdCBpbmZvcm1hdGlvbiBmb3IgJ2l7fUB7fSciLmZvcm1hdChpZGVudGlm
aWVyLCBicmFuY2ggb3IgJ0hFQUQnKSkKKworICAgICAgICBlbGlmIGJyYW5jaDoKKyAgICAgICAg
ICAgIGlmIHJldmlzaW9uOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0Nhbm5v
dCBkZWZpbmUgYm90aCByZXZpc2lvbiBhbmQgaWRlbnRpZmllcicpCisgICAgICAgICAgICBpZiBo
YXNoOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0Nhbm5vdCBkZWZpbmUgYm90
aCBicmFuY2ggYW5kIGhhc2gnKQorICAgICAgICAgICAgbG9nID0gcnVuKFtzZWxmLmV4ZWN1dGFi
bGUsICdsb2cnLCBicmFuY2gsICctMSddLCBjd2Q9c2VsZi5yb290X3BhdGgsIGNhcHR1cmVfb3V0
cHV0PVRydWUsIGVuY29kaW5nPSd1dGYtOCcpCisgICAgICAgICAgICBpZiBsb2cucmV0dXJuY29k
ZToKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbigiRmFpbGVkIHRvIHJldHJp
ZXZlIGNvbW1pdCBpbmZvcm1hdGlvbiBmb3IgJ3t9JyIuZm9ybWF0KGJyYW5jaCkpCisKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIGhhc2ggPSBDb21taXQuX3BhcnNlX2hhc2goaGFzaCwgZG9f
YXNzZXJ0PVRydWUpCisgICAgICAgICAgICBsb2cgPSBydW4oW3NlbGYuZXhlY3V0YWJsZSwgJ2xv
ZycsIGhhc2ggb3IgJ0hFQUQnLCAnLTEnXSwgY3dkPXNlbGYucm9vdF9wYXRoLCBjYXB0dXJlX291
dHB1dD1UcnVlLCBlbmNvZGluZz0ndXRmLTgnKQorICAgICAgICAgICAgaWYgbG9nLnJldHVybmNv
ZGU6CisgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oIkZhaWxlZCB0byByZXRy
aWV2ZSBjb21taXQgaW5mb3JtYXRpb24gZm9yICd7fSciLmZvcm1hdChoYXNoIG9yICdIRUFEJykp
CisKKyAgICAgICAgbWF0Y2ggPSBzZWxmLkdJVF9DT01NSVQubWF0Y2gobG9nLnN0ZG91dC5zcGxp
dGxpbmVzKClbMF0pCisgICAgICAgIGlmIG5vdCBtYXRjaDoKKyAgICAgICAgICAgIHJhaXNlIHNl
bGYuRXhjZXB0aW9uKCdJbnZhbGlkIGNvbW1pdCBoYXNoIGluIGdpdCBsb2cnKQorICAgICAgICBo
YXNoID0gbWF0Y2guZ3JvdXAoJ2hhc2gnKQorCisgICAgICAgIGJyYW5jaF9jYW5kaWRhdGVzID0g
c2VsZi5fYnJhbmNoZXNfZm9yKGhhc2gpCisgICAgICAgIGlmIGxlbihicmFuY2hfY2FuZGlkYXRl
cykgPT0gMToKKyAgICAgICAgICAgIGJyYW5jaCA9IGJyYW5jaF9jYW5kaWRhdGVzWzBdCisgICAg
ICAgIGVsaWYgZGVmYXVsdF9icmFuY2ggaW4gYnJhbmNoX2NhbmRpZGF0ZXM6CisgICAgICAgICAg
ICBicmFuY2ggPSBkZWZhdWx0X2JyYW5jaAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBX
ZSBkb24ndCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiB0byBkZXRlcm1pbmUgYSBicmFuY2guIFdl
IHdpbGwgYXR0ZW1wdCB0byBmaXJzdCB1c2UgdGhlIGJyYW5jaCBzcGVjaWZpZWQKKyAgICAgICAg
ICAgICMgYnkgdGhlIGNhbGxlciwgdGhlbiB0aGUgb25lIHRoZW4gY2hlY2tvdXQgaXMgY3VycmVu
dGx5IG9uLiBJZiBib3RoIHRob3NlIGZhaWwsIHdlIHdpbGwgcGljayBvbmUgb2YgdGhlCisgICAg
ICAgICAgICAjIG90aGVyIGJyYW5jaGVzLiBXZSBwcmVmZXIgcHJvZHVjdGlvbiBicmFuY2hlcyBm
aXJzdCwgdGhlbiBhbnkgYnJhbmNoIHdoaWNoIGlzbid0IGV4cGxpY2l0bHkgbGFiZWxlZCBhCisg
ICAgICAgICAgICAjIGRldiBicmFuY2guIFdlIHRoZW4gc29ydCB0aGUgbGlzdCBvZiBjYW5kaWRh
dGUgYnJhbmNoZXMgYW5kIHBpY2sgdGhlIHNtYWxsZXN0CisgICAgICAgICAgICBmaWx0ZXJlZF9j
YW5kaWRhdGVzID0gW2NhbmRpZGF0ZSBmb3IgY2FuZGlkYXRlIGluIGJyYW5jaF9jYW5kaWRhdGVz
IGlmIHNlbGYucHJvZF9icmFuY2hlcy5tYXRjaChjYW5kaWRhdGUpXQorICAgICAgICAgICAgaWYg
bm90IGZpbHRlcmVkX2NhbmRpZGF0ZXM6CisgICAgICAgICAgICAgICAgZmlsdGVyZWRfY2FuZGlk
YXRlcyA9IFtjYW5kaWRhdGUgZm9yIGNhbmRpZGF0ZSBpbiBicmFuY2hfY2FuZGlkYXRlcyBpZiBu
b3Qgc2VsZi5kZXZfYnJhbmNoZXMubWF0Y2goY2FuZGlkYXRlKV0KKyAgICAgICAgICAgIGlmIG5v
dCBmaWx0ZXJlZF9jYW5kaWRhdGVzOgorICAgICAgICAgICAgICAgIGZpbHRlcmVkX2NhbmRpZGF0
ZXMgPSBicmFuY2hfY2FuZGlkYXRlcworICAgICAgICAgICAgYnJhbmNoID0gc29ydGVkKGZpbHRl
cmVkX2NhbmRpZGF0ZXMpWzBdCisKKyAgICAgICAgaWYgbm90IGlkZW50aWZpZXI6CisgICAgICAg
ICAgICBpZGVudGlmaWVyID0gc2VsZi5fY29tbWl0X2NvdW50KGhhc2ggaWYgYnJhbmNoID09IGRl
ZmF1bHRfYnJhbmNoIGVsc2UgJ3t9Li57fScuZm9ybWF0KGRlZmF1bHRfYnJhbmNoLCBoYXNoKSkK
KyAgICAgICAgYnJhbmNoX3BvaW50ID0gTm9uZSBpZiBicmFuY2ggPT0gZGVmYXVsdF9icmFuY2gg
ZWxzZSBzZWxmLl9jb21taXRfY291bnQoaGFzaCkKKyAgICAgICAgaWYgYnJhbmNoX3BvaW50IGFu
ZCBwYXJzZWRfYnJhbmNoX3BvaW50IGFuZCBicmFuY2hfcG9pbnQgIT0gcGFyc2VkX2JyYW5jaF9w
b2ludDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlByb3ZpZGVkICdicmFuY2hfcG9p
bnQnIGRvZXMgbm90IG1hdGNoIGJyYW5jaCBwb2ludCBvZiBzcGVjaWZpZWQgYnJhbmNoIikKKwor
ICAgICAgICBpZiBzZWxmLmlzX3N2bjoKKyAgICAgICAgICAgIG1hdGNoID0gc2VsZi5HSVRfU1ZO
X1JFVklTSU9OLm1hdGNoKGxvZy5zdGRvdXQuc3BsaXRsaW5lcygpWy0xXS5sc3RyaXAoKSkKKyAg
ICAgICAgICAgIHJldmlzaW9uID0gaW50KG1hdGNoLmdyb3VwKCdyZXZpc2lvbicpKSBpZiBtYXRj
aCBlbHNlIE5vbmUKKworICAgICAgICBjb21taXRfdGltZSA9IHJ1bigKKyAgICAgICAgICAgIFtz
ZWxmLmV4ZWN1dGFibGUsICdzaG93JywgJy1zJywgJy0tZm9ybWF0PSVjdCcsIGhhc2hdLAorICAg
ICAgICAgICAgY3dkPXNlbGYucm9vdF9wYXRoLCBjYXB0dXJlX291dHB1dD1UcnVlLCBlbmNvZGlu
Zz0ndXRmLTgnLAorICAgICAgICApCisgICAgICAgIGlmIGNvbW1pdF90aW1lLnJldHVybmNvZGU6
CisgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignRmFpbGVkIHRvIHJldHJpZXZlIGNv
bW1pdCB0aW1lIGZvciB7fScuZm9ybWF0KGhhc2gpKQorCisgICAgICAgIHJldHVybiBDb21taXQo
CisgICAgICAgICAgICBoYXNoPWhhc2gsCisgICAgICAgICAgICByZXZpc2lvbj1yZXZpc2lvbiwK
KyAgICAgICAgICAgIGlkZW50aWZpZXI9aWRlbnRpZmllciwKKyAgICAgICAgICAgIGJyYW5jaF9w
b2ludD1icmFuY2hfcG9pbnQsCisgICAgICAgICAgICBicmFuY2g9YnJhbmNoLAorICAgICAgICAg
ICAgdGltZXN0YW1wPWludChjb21taXRfdGltZS5zdGRvdXQubHN0cmlwKCkpLAorICAgICAgICAg
ICAgYXV0aG9yPUNvbnRyaWJ1dG9yLmZyb21fc2NtX2xvZyhsb2cuc3Rkb3V0LnNwbGl0bGluZXMo
KVsxXSksCisgICAgICAgICAgICBtZXNzYWdlPSdcbicuam9pbihsaW5lWzQ6XSBmb3IgbGluZSBp
biBsb2cuc3Rkb3V0LnNwbGl0bGluZXMoKVs0Ol0pLAorICAgICAgICApCkluZGV4OiBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9zY20ucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvbG9jYWwvc2NtLnB5CShyZXZpc2lvbiAyNjc3MTQpCisrKyBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9zY20ucHkJKHdvcmtpbmcgY29weSkK
QEAgLTIwLDExICsyMCwxNyBAQAogIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogCitpbXBvcnQgcmUKIAogY2xhc3MgU2NtKG9iamVjdCk6CiAgICAgY2xhc3MgRXhjZXB0aW9u
KFJ1bnRpbWVFcnJvcik6CiAgICAgICAgIHBhc3MKIAorICAgICMgUHJvamVjdHMgY2FuIGRlZmlu
ZSBmb3IgdGhlbXNlbHZlcyB3aGF0IGNvbnN0aXR1dGVzIGEgZGV2ZWxvcG1lbnQgdnMgYSBwcm9k
dWN0aW9uIGJyYW5jaCwKKyAgICAjIHRoZSBmb2xsb3dpbmcgaWRpb21zIHNlZW0gY29tbW9uIGVu
b3VnaCB0byBiZSBzaGFyZWQuCisgICAgREVWX0JSQU5DSEVTID0gcmUuY29tcGlsZShyJy4qWyhl
bmcpKGRldikoYnVnKV0vLisnKQorICAgIFBST0RfQlJBTkNIRVMgPSByZS5jb21waWxlKHInXFMr
LVtcZCtcLl0rLWJyYW5jaCcpCisKICAgICBleGVjdXRhYmxlID0gTm9uZQogCiAgICAgQGNsYXNz
bWV0aG9kCkBAIC0zNywxMSArNDMsMjIgQEAgY2xhc3MgU2NtKG9iamVjdCk6CiAgICAgICAgICAg
ICByZXR1cm4gbG9jYWwuU3ZuKHBhdGgpCiAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ3t9IGlzIG5v
dCBhIGtub3duIFNDTSB0eXBlJykKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgZGV2X2JyYW5jaGVzPU5vbmUsIHByb2RfYnJhbmNo
ZXM9Tm9uZSk6CiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHBhdGgsIHN0cik6CiAgICAgICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKCcnKQogICAgICAgICBzZWxmLnBhdGggPSBwYXRoCiAKKyAg
ICAgICAgc2VsZi5kZXZfYnJhbmNoZXMgPSBkZXZfYnJhbmNoZXMgb3Igc2VsZi5ERVZfQlJBTkNI
RVMKKyAgICAgICAgc2VsZi5wcm9kX2JyYW5jaGVzID0gcHJvZF9icmFuY2hlcyBvciBzZWxmLlBS
T0RfQlJBTkNIRVMKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19zdm4oc2VsZik6CisgICAg
ICAgIHJldHVybiBGYWxzZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX2dpdChzZWxmKToK
KyAgICAgICAgcmV0dXJuIEZhbHNlCisKICAgICBAcHJvcGVydHkKICAgICBkZWYgcm9vdF9wYXRo
KHNlbGYpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKQEAgLTY0LDMgKzgx
LDYgQEAgY2xhc3MgU2NtKG9iamVjdCk6CiAKICAgICBkZWYgcmVtb3RlKHNlbGYsIG5hbWU9Tm9u
ZSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQorCisgICAgZGVmIGNvbW1p
dChzZWxmLCBoYXNoPU5vbmUsIHJldmlzaW9uPU5vbmUsIGlkZW50aWZpZXI9Tm9uZSwgYnJhbmNo
PU5vbmUpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL3N2bi5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRz
Y21weS9sb2NhbC9zdm4ucHkJKHJldmlzaW9uIDI2NzcxNCkKKysrIFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL3N2bi5weQkod29ya2luZyBjb3B5
KQpAQCAtMjAsMjIgKzIwLDMxIEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAKK2ltcG9ydCBjYWxlbmRhcgoraW1wb3J0IGpzb24KK2ltcG9ydCBvcworaW1wb3J0IHJl
CitpbXBvcnQgc3VicHJvY2VzcwogCi1mcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgcnVuLCBkZWNv
cmF0b3JzCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQorZnJvbSB3ZWJraXRjb3JlcHkg
aW1wb3J0IHJ1biwgZGVjb3JhdG9ycywgc3RyaW5nX3V0aWxzCiBmcm9tIHdlYmtpdHNjbXB5Lmxv
Y2FsLnNjbSBpbXBvcnQgU2NtCitmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBDb21taXQsIENvbnRy
aWJ1dG9yCiAKIAogY2xhc3MgU3ZuKFNjbSk6CiAgICAgZXhlY3V0YWJsZSA9ICcvdXNyL2xvY2Fs
L2Jpbi9zdm4nCisgICAgTE9HX1JFID0gcmUuY29tcGlsZShyJ3IoP1A8cmV2aXNpb24+XGQrKSBc
fCAoP1A8ZW1haWw+LiopIFx8ICg/UDxkYXRlPi4qKScpCiAKICAgICBAY2xhc3NtZXRob2QKICAg
ICBkZWYgaXNfY2hlY2tvdXQoY2xzLCBwYXRoKToKICAgICAgICAgcmV0dXJuIHJ1bihbY2xzLmV4
ZWN1dGFibGUsICdpbmZvJ10sIGN3ZD1wYXRoLCBjYXB0dXJlX291dHB1dD1UcnVlKS5yZXR1cm5j
b2RlID09IDAKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKLSAgICAgICAgc3VwZXIo
U3ZuLCBzZWxmKS5fX2luaXRfXyhwYXRoKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoLCBk
ZXZfYnJhbmNoZXM9Tm9uZSwgcHJvZF9icmFuY2hlcz1Ob25lKToKKyAgICAgICAgc3VwZXIoU3Zu
LCBzZWxmKS5fX2luaXRfXyhwYXRoLCBkZXZfYnJhbmNoZXM9ZGV2X2JyYW5jaGVzLCBwcm9kX2Jy
YW5jaGVzPXByb2RfYnJhbmNoZXMpCiAgICAgICAgIGlmIG5vdCBzZWxmLnJvb3RfcGF0aDoKICAg
ICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ1Byb3ZpZGVkIHBhdGgge30gaXMgbm90IGEgc3ZuIHJl
cG9zaXRvcnknLmZvcm1hdChwYXRoKSkKKyAgICAgICAgc2VsZi5fbWV0YWRhdGFfY2FjaGUgPSBk
aWN0KCkKIAogICAgIEBkZWNvcmF0b3JzLk1lbW9pemUoY2FjaGVkPUZhbHNlKQogICAgIGRlZiBp
bmZvKHNlbGYpOgpAQCAtNTAsNiArNTksMTAgQEAgY2xhc3MgU3ZuKFNjbSk6CiAgICAgICAgIHJl
dHVybiByZXN1bHQKIAogICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19zdm4oc2VsZik6CisgICAg
ICAgIHJldHVybiBUcnVlCisKKyAgICBAcHJvcGVydHkKICAgICBkZWYgcm9vdF9wYXRoKHNlbGYp
OgogICAgICAgICByZXR1cm4gc2VsZi5pbmZvKGNhY2hlZD1UcnVlKS5nZXQoJ1dvcmtpbmcgQ29w
eSBSb290IFBhdGgnKQogCkBAIC03OCw1ICs5MSw4MyBAQCBjbGFzcyBTdm4oU2NtKToKICAgICBk
ZWYgdGFncyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYubGlzdCgndGFncycpCiAKKyAgICBA
cHJvcGVydHkKKyAgICBkZWYgX2NhY2hlX3BhdGgoc2VsZik6CisgICAgICAgIHJldHVybiBvcy5w
YXRoLmpvaW4oc2VsZi5yb290X3BhdGgsICcuc3ZuJywgJ3dlYmtpdHNjbXB5LWNhY2hlLmpzb24n
KQorCisgICAgZGVmIF9pZGVudGlmaWVyX2NhY2hlKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2Vs
Zi5fbWV0YWRhdGFfY2FjaGUgYW5kIG9zLnBhdGguZXhpc3RzKHNlbGYuX2NhY2hlX3BhdGgpOgor
ICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLl9jYWNoZV9w
YXRoKSBhcyBmaWxlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9tZXRhZGF0YV9jYWNoZSA9
IGpzb24ubG9hZChmaWxlKQorICAgICAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb246CisgICAg
ICAgICAgICAgICAgc2VsZi5fbWV0YWRhdGFfY2FjaGUgPSB7fQorCisgICAgICAgIGJyYW5jaCA9
IHNlbGYuYnJhbmNoCisgICAgICAgIGlmIGJyYW5jaCBub3QgaW4gc2VsZi5fbWV0YWRhdGFfY2Fj
aGU6CisgICAgICAgICAgICBzZWxmLl9tZXRhZGF0YV9jYWNoZVticmFuY2hdID0gW10KKyAgICAg
ICAgcG9zID0gbGVuKHNlbGYuX21ldGFkYXRhX2NhY2hlW2JyYW5jaF0pCisKKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgbG9nID0gc3VicHJvY2Vzcy5Qb3BlbigKKyAgICAgICAgICAgICAgICBb
c2VsZi5leGVjdXRhYmxlLCAnbG9nJywgJy1xJ10sCisgICAgICAgICAgICAgICAgc3Rkb3V0PXN1
YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAor
ICAgICAgICAgICAgKQorICAgICAgICAgICAgbGluZSA9IGxvZy5zdGRvdXQucmVhZGxpbmUoKQor
ICAgICAgICAgICAgd2hpbGUgbGluZToKKyAgICAgICAgICAgICAgICBtYXRjaCA9IHNlbGYuTE9H
X1JFLm1hdGNoKGxpbmUpCisgICAgICAgICAgICAgICAgaWYgbWF0Y2g6CisgICAgICAgICAgICAg
ICAgICAgIGNvbW1pdCA9IGRpY3QocmV2aXNpb249aW50KG1hdGNoLmdyb3VwKCdyZXZpc2lvbicp
KSkKKyAgICAgICAgICAgICAgICAgICAgaWYgcG9zID4gMCBhbmQgc2VsZi5fbWV0YWRhdGFfY2Fj
aGVbYnJhbmNoXVtwb3MgLSAxXVsncmV2aXNpb24nXSA9PSBjb21taXRbJ3JldmlzaW9uJ106Cisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICBzZWxmLl9t
ZXRhZGF0YV9jYWNoZVticmFuY2hdLmluc2VydChwb3MsIGNvbW1pdCkKKyAgICAgICAgICAgICAg
ICBsaW5lID0gbG9nLnN0ZG91dC5yZWFkbGluZSgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAg
ICAgICBsb2cua2lsbCgpCisKKyAgICAgICAgd2hpbGUgcG9zIDwgbGVuKHNlbGYuX21ldGFkYXRh
X2NhY2hlW2JyYW5jaF0pOgorICAgICAgICAgICAgc2VsZi5fbWV0YWRhdGFfY2FjaGVbJ2lkZW50
aWZpZXInXSA9IHBvcyArIDEKKyAgICAgICAgICAgIHBvcyArPSAxCisKKyAgICAgICAgd2l0aCBv
cGVuKHNlbGYuX2NhY2hlX3BhdGgsICd3JykgYXMgZmlsZToKKyAgICAgICAgICAgIGpzb24uZHVt
cChzZWxmLl9tZXRhZGF0YV9jYWNoZSwgZmlsZSwgaW5kZW50PTQpCisKKyAgICAgICAgcmV0dXJu
IHNlbGYuX21ldGFkYXRhX2NhY2hlW2JyYW5jaF0KKworCiAgICAgZGVmIHJlbW90ZShzZWxmLCBu
YW1lPU5vbmUpOgogICAgICAgICByZXR1cm4gc2VsZi5pbmZvKClbJ1JlcG9zaXRvcnkgUm9vdCdd
CisKKyAgICBkZWYgY29tbWl0KHNlbGYsIGhhc2g9Tm9uZSwgcmV2aXNpb249Tm9uZSwgaWRlbnRp
Zmllcj1Ob25lLCBicmFuY2g9Tm9uZSk6CisgICAgICAgIGlmIGhhc2g6CisgICAgICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yKCdTVk4gZG9lcyBub3Qgc3VwcG9ydCBHaXQgaGFzaGVzJykKKworICAg
ICAgICByZXZpc2lvbiA9IHNlbGYuaW5mbygpLmdldCgnTGFzdCBDaGFuZ2VkIFJldicpCisgICAg
ICAgIGxvZyA9IHJ1bihbc2VsZi5leGVjdXRhYmxlLCAnbG9nJywgJy1sJywgJzEnLCAnLXInLCBy
ZXZpc2lvbl0sIGN3ZD1zZWxmLnBhdGgsIGNhcHR1cmVfb3V0cHV0PVRydWUsIGVuY29kaW5nPSd1
dGYtOCcpCisgICAgICAgIGlmIGxvZy5yZXR1cm5jb2RlOgorICAgICAgICAgICAgcmFpc2Ugc2Vs
Zi5FeGNlcHRpb24oJ0ZhaWxlZCB0byByZXRyaWV2ZSBjb21taXQgaW5mb3JtYXRpb24gZm9yIHt9
Jy5mb3JtYXQocmV2aXNpb24pKQorCisgICAgICAgIGRhdGUgPSBkYXRldGltZS5zdHJwdGltZSgK
KyAgICAgICAgICAgIHNlbGYuaW5mbyhjYWNoZWQ9VHJ1ZSkuZ2V0KCdMYXN0IENoYW5nZWQgRGF0
ZScpLnNwbGl0KCcoJylbMF0sCisgICAgICAgICAgICAnJVktJW0tJWQgJUg6JU06JVMgJXogJywK
KyAgICAgICAgKQorCisgICAgICAgIGJyYW5jaCA9IHNlbGYuYnJhbmNoCisgICAgICAgIGlkZW50
aWZpZXIgPSBsZW4oc2VsZi5faWRlbnRpZmllcl9jYWNoZSgpKQorCisgICAgICAgIHNwbGl0X2xv
ZyA9IGxvZy5zdGRvdXQuc3BsaXRsaW5lcygpCisgICAgICAgIGF1dGhvcl9saW5lID0gc3BsaXRf
bG9nWzFdCisgICAgICAgIGZvciBsaW5lIGluIHNwbGl0X2xvZ1syOjhdOgorICAgICAgICAgICAg
aWYgQ29udHJpYnV0b3IuU1ZOX1BBVENIX0ZST01fUkUubWF0Y2gobGluZSk6CisgICAgICAgICAg
ICAgICAgYXV0aG9yX2xpbmUgPSBsaW5lCisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAg
ICByZXR1cm4gQ29tbWl0KAorICAgICAgICAgICAgcmV2aXNpb249aW50KHJldmlzaW9uKSwKKyAg
ICAgICAgICAgIGJyYW5jaD1icmFuY2gsCisgICAgICAgICAgICBpZGVudGlmaWVyPWlkZW50aWZp
ZXIsCisgICAgICAgICAgICB0aW1lc3RhbXA9aW50KGNhbGVuZGFyLnRpbWVnbShkYXRlLnRpbWV0
dXBsZSgpKSksCisgICAgICAgICAgICBhdXRob3I9Q29udHJpYnV0b3IuZnJvbV9zY21fbG9nKGF1
dGhvcl9saW5lKSwKKyAgICAgICAgICAgIG1lc3NhZ2U9J1xuJy5qb2luKHNwbGl0X2xvZ1szOl0p
LAorICAgICAgICApCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93
ZWJraXRzY21weS90ZXN0L2NvbW1pdF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2NvbW1pdF91bml0
dGVzdC5weQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS90ZXN0L2NvbW1pdF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDIxMyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitp
bXBvcnQgdW5pdHRlc3QKKworZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKK2Zyb20gd2Vi
a2l0c2NtcHkgaW1wb3J0IENvbW1pdCwgQ29udHJpYnV0b3IKKworCitjbGFzcyBUZXN0Q29tbWl0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9wYXJzZV9oYXNoKHNlbGYpOgorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgJzFhMmU0MWUzZjdjZGY1MWIxZTFk
MDI4ODBjZmI2NWVhYjkzMjdlZjInLAorICAgICAgICAgICAgQ29tbWl0Ll9wYXJzZV9oYXNoKCcx
YTJlNDFlM2Y3Y2RmNTFiMWUxZDAyODgwY2ZiNjVlYWI5MzI3ZWYyJykKKyAgICAgICAgKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgJ2MzYmQ3ODRmOGI4OGJkMDNmNjQ0
NjdkZGQzMzA0ZWQ4YmUyOGFjYmUnLAorICAgICAgICAgICAgQ29tbWl0Ll9wYXJzZV9oYXNoKCdD
M0JENzg0RjhCODhCRDAzRjY0NDY3REREMzMwNEVEOEJFMjhBQ0JFJykKKyAgICAgICAgKQorCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgQ29tbWl0Ll9wYXJzZV9oYXNoKCdpbnZhbGlk
IGhhc2gnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBDb21taXQuX3BhcnNlX2hh
c2goJ2MzYmQ3ODRmOGI4OGJkMDNmNjQ0NjdkZGQzMzA0ZWQ4YmUyOGFjYmUxJykpCisKKyAgICBk
ZWYgdGVzdF9wYXJzZV9yZXZpc2lvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgy
NjY4OTYsIENvbW1pdC5fcGFyc2VfcmV2aXNpb24oJ3IyNjY4OTYnKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgyNjY4OTYsIENvbW1pdC5fcGFyc2VfcmV2aXNpb24oJ1IyNjY4OTYnKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyNjY4OTYsIENvbW1pdC5fcGFyc2VfcmV2aXNpb24oJzI2
Njg5NicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDI2Njg5NiwgQ29tbWl0Ll9wYXJzZV9y
ZXZpc2lvbigyNjY4OTYpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgQ29tbWl0
Ll9wYXJzZV9yZXZpc2lvbignaTEyMzQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25l
LCBDb21taXQuX3BhcnNlX3JldmlzaW9uKCdjM2JkNzg0ZjhiODhiZDAzJykpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoTm9uZSwgQ29tbWl0Ll9wYXJzZV9yZXZpc2lvbignMCcpKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIENvbW1pdC5fcGFyc2VfcmV2aXNpb24oJy0xJykpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgQ29tbWl0Ll9wYXJzZV9yZXZpc2lvbignMy4x
NDE1OTInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBDb21taXQuX3BhcnNlX3Jl
dmlzaW9uKDMuMTQxNTkyKSkKKworICAgIGRlZiB0ZXN0X3BhcnNlX2lkZW50aWZpZXIoc2VsZik6
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKE5vbmUsIDEyMzQsIE5vbmUpLCBDb21taXQuX3Bh
cnNlX2lkZW50aWZpZXIoJ2kxMjM0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKE5vbmUs
IDEyMzQsIE5vbmUpLCBDb21taXQuX3BhcnNlX2lkZW50aWZpZXIoJ0kxMjM0JykpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoKE5vbmUsIDEyMzQsIE5vbmUpLCBDb21taXQuX3BhcnNlX2lkZW50
aWZpZXIoJzEyMzQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoTm9uZSwgMTIzNCwgTm9u
ZSksIENvbW1pdC5fcGFyc2VfaWRlbnRpZmllcigxMjM0KSkKKworICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKChOb25lLCAxMjM0LCAnbWFpbicpLCBDb21taXQuX3BhcnNlX2lkZW50aWZpZXIoJ2kx
MjM0QG1haW4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoTm9uZSwgMTIzNCwgJ21haW4n
KSwgQ29tbWl0Ll9wYXJzZV9pZGVudGlmaWVyKCdJMTIzNEBtYWluJykpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoKE5vbmUsIDEyMzQsICdtYWluJyksIENvbW1pdC5fcGFyc2VfaWRlbnRpZmll
cignMTIzNEBtYWluJykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoTm9uZSwgMTIzNCwg
J2VuZy9idWcnKSwgQ29tbWl0Ll9wYXJzZV9pZGVudGlmaWVyKCdpMTIzNEBlbmcvYnVnJykpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKE5vbmUsIDEyMzQsICdlbmcvYnVnJyksIENvbW1pdC5f
cGFyc2VfaWRlbnRpZmllcignSTEyMzRAZW5nL2J1ZycpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKChOb25lLCAxMjM0LCAnZW5nL2J1ZycpLCBDb21taXQuX3BhcnNlX2lkZW50aWZpZXIoJzEy
MzRAZW5nL2J1ZycpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKDEyMzQsIDEsICdlbmcv
YnVnJyksIENvbW1pdC5fcGFyc2VfaWRlbnRpZmllcignaTEyMzQuMUBlbmcvYnVnJykpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoKDEyMzQsIDEsICdlbmcvYnVnJyksIENvbW1pdC5fcGFyc2Vf
aWRlbnRpZmllcignSTEyMzQuMUBlbmcvYnVnJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
KDEyMzQsIDEsICdlbmcvYnVnJyksIENvbW1pdC5fcGFyc2VfaWRlbnRpZmllcignMTIzNC4xQGVu
Zy9idWcnKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChOb25lLCAwLCBOb25lKSwgQ29t
bWl0Ll9wYXJzZV9pZGVudGlmaWVyKCcwJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKE5v
bmUsIC0xLCBOb25lKSwgQ29tbWl0Ll9wYXJzZV9pZGVudGlmaWVyKCctMScpKQorCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoKE5vbmUsIDAsICdlbmcvYnVnJyksIENvbW1pdC5fcGFyc2VfaWRl
bnRpZmllcignaTBAZW5nL2J1ZycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChOb25lLCAw
LCAnZW5nL2J1ZycpLCBDb21taXQuX3BhcnNlX2lkZW50aWZpZXIoJ0kwQGVuZy9idWcnKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoTm9uZSwgMCwgJ2VuZy9idWcnKSwgQ29tbWl0Ll9wYXJz
ZV9pZGVudGlmaWVyKCcwQGVuZy9idWcnKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChO
b25lLCAtMSwgJ2VuZy9idWcnKSwgQ29tbWl0Ll9wYXJzZV9pZGVudGlmaWVyKCdpLTFAZW5nL2J1
ZycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChOb25lLCAtMSwgJ2VuZy9idWcnKSwgQ29t
bWl0Ll9wYXJzZV9pZGVudGlmaWVyKCdJLTFAZW5nL2J1ZycpKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKChOb25lLCAtMSwgJ2VuZy9idWcnKSwgQ29tbWl0Ll9wYXJzZV9pZGVudGlmaWVyKCct
MUBlbmcvYnVnJykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBDb21taXQuX3Bh
cnNlX2lkZW50aWZpZXIoJ2kxMjM0LWludmFsaWQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChOb25lLCBDb21taXQuX3BhcnNlX2lkZW50aWZpZXIoJ3IyNjY4OTYnKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChOb25lLCBDb21taXQuX3BhcnNlX2lkZW50aWZpZXIoJ2MzYmQ3ODRmOGI4
OGJkMDMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBDb21taXQuX3BhcnNlX2lk
ZW50aWZpZXIoMy4xNDE1OTIpKQorCisgICAgZGVmIHRlc3RfcGFyc2Uoc2VsZik6CisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoQ29tbWl0LnBhcnNlKCdpMTIzQG1haW4nKSwgQ29tbWl0KGlkZW50
aWZpZXI9MTIzLCBicmFuY2g9J21haW4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb21t
aXQucGFyc2UoJ2kxMjMnKSwgQ29tbWl0KGlkZW50aWZpZXI9MTIzKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChDb21taXQucGFyc2UoJzEyMycpLCBDb21taXQoaWRlbnRpZmllcj0xMjMpKQor
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29tbWl0LnBhcnNlKCdyMTIzJyksIENvbW1pdChy
ZXZpc2lvbj0xMjMpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBD
b21taXQucGFyc2UoJ2MzYmQ3ODRmOGI4OGJkMDNmNjQ0NjdkZGQzMzA0ZWQ4YmUyOGFjYmUnKSwK
KyAgICAgICAgICAgIENvbW1pdChoYXNoPSdjM2JkNzg0ZjhiODhiZDAzZjY0NDY3ZGRkMzMwNGVk
OGJlMjhhY2JlJyksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3ByZXR0eV9wcmludChzZWxm
KToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIENvbW1pdCgKKyAgICAg
ICAgICAgICAgICBpZGVudGlmaWVyPSdpMTIzQG1hc3RlcicsCisgICAgICAgICAgICAgICAgaGFz
aD0nYzNiZDc4NGY4Yjg4YmQwM2Y2NDQ2N2RkZDMzMDRlZDhiZTI4YWNiZScsCisgICAgICAgICAg
ICAgICAgYXV0aG9yPUNvbnRyaWJ1dG9yKCdKb25hdGhhbiBCZWRhcmQnLCBbJ2piZWRhcmRAYXBw
bGUuY29tJ10pLAorICAgICAgICAgICAgICAgIG1lc3NhZ2U9J05PVCBQUklOVEVEJywKKyAgICAg
ICAgICAgICkucHJldHR5X3ByaW50KCksCisgICAgICAgICAgICAnJydpMTIzQG1hc3RlcgorICAg
IGdpdCBoYXNoOiBjM2JkNzg0ZjhiODggb24gbWFzdGVyCisgICAgaWRlbnRpZmllcjogaTEyMyBv
biBtYXN0ZXIKKyAgICBieSBKb25hdGhhbiBCZWRhcmQgPGpiZWRhcmRAYXBwbGUuY29tPgorJycn
LAorICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIENv
bW1pdCgKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVyPSdpMTIzQHRydW5rJywKKyAgICAgICAg
ICAgICAgICByZXZpc2lvbj0ncjEyMycsCisgICAgICAgICAgICAgICAgYXV0aG9yPUNvbnRyaWJ1
dG9yKCdKb25hdGhhbiBCZWRhcmQnLCBbJ2piZWRhcmRAYXBwbGUuY29tJ10pLAorICAgICAgICAg
ICAgICAgIHRpbWVzdGFtcD0xMDAwLAorICAgICAgICAgICAgICAgIG1lc3NhZ2U9J05PVCBQUklO
VEVEJywKKyAgICAgICAgICAgICkucHJldHR5X3ByaW50KCksCisgICAgICAgICAgICAnJydpMTIz
QHRydW5rCisgICAgU1ZOIHJldmlzaW9uOiByMTIzIG9uIHRydW5rCisgICAgaWRlbnRpZmllcjog
aTEyMyBvbiB0cnVuaworICAgIGJ5IEpvbmF0aGFuIEJlZGFyZCA8amJlZGFyZEBhcHBsZS5jb20+
IEAge30KKycnJy5mb3JtYXQoZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCgxMDAwKSksCisgICAg
ICAgICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgQ29tbWl0KAor
ICAgICAgICAgICAgICAgIGlkZW50aWZpZXI9J2kxMjNAdHJ1bmsnLAorICAgICAgICAgICAgICAg
IHJldmlzaW9uPSdyMTIzJywKKyAgICAgICAgICAgICAgICBhdXRob3I9Q29udHJpYnV0b3IoJ0pv
bmF0aGFuIEJlZGFyZCcsIFsnamJlZGFyZEBhcHBsZS5jb20nXSksCisgICAgICAgICAgICAgICAg
dGltZXN0YW1wPTEwMDAsCisgICAgICAgICAgICAgICAgbWVzc2FnZT0nUFJJTlRFRFxuJywKKyAg
ICAgICAgICAgICkucHJldHR5X3ByaW50KG1lc3NhZ2U9VHJ1ZSksCisgICAgICAgICAgICAnJydp
MTIzQHRydW5rCisgICAgU1ZOIHJldmlzaW9uOiByMTIzIG9uIHRydW5rCisgICAgaWRlbnRpZmll
cjogaTEyMyBvbiB0cnVuaworICAgIGJ5IEpvbmF0aGFuIEJlZGFyZCA8amJlZGFyZEBhcHBsZS5j
b20+IEAge30KKworUFJJTlRFRAorJycnLmZvcm1hdChkYXRldGltZS51dGNmcm9tdGltZXN0YW1w
KDEwMDApKSwKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzdHIoQ29tbWl0KGlkZW50aWZpZXI9MTIzLCBicmFuY2g9J21haW4n
KSksICdpMTIzQG1haW4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihDb21taXQoYnJh
bmNoX3BvaW50PTEyMzQsIGlkZW50aWZpZXI9MSwgYnJhbmNoPSdlbmcvMTIzNCcpKSwgJ2kxMjM0
LjFAZW5nLzEyMzQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihDb21taXQoaWRlbnRp
Zmllcj0xMjMpKSwgJ2kxMjMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKENvbW1p
dChyZXZpc2lvbj0xMjMpKSwgJ3IxMjMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry
KENvbW1pdChoYXNoPSdjM2JkNzg0ZjhiODhiZDAzZjY0NDY3ZGRkMzMwNGVkOGJlMjhhY2JlJykp
LCAnYzNiZDc4NGY4Yjg4JykKKworICAgIGRlZiB0ZXN0X3RpbWVzdGFtcF9jb21wYXJlKHNlbGYp
OgorICAgICAgICBzZWxmLmFzc2VydExlc3MoCisgICAgICAgICAgICBDb21taXQocmV2aXNpb249
MSwgaWRlbnRpZmllcj0xLCB0aW1lc3RhbXA9MTAwKSwKKyAgICAgICAgICAgIENvbW1pdChyZXZp
c2lvbj0yLCBpZGVudGlmaWVyPTIsIHRpbWVzdGFtcD0yMDApLAorICAgICAgICApCisgICAgICAg
IHNlbGYuYXNzZXJ0R3JlYXRlcigKKyAgICAgICAgICAgIENvbW1pdChyZXZpc2lvbj0yLCBpZGVu
dGlmaWVyPTIsIHRpbWVzdGFtcD0yMDApLAorICAgICAgICAgICAgQ29tbWl0KHJldmlzaW9uPTEs
IGlkZW50aWZpZXI9MSwgdGltZXN0YW1wPTEwMCksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5h
c3NlcnRMZXNzKAorICAgICAgICAgICAgQ29tbWl0KHJldmlzaW9uPTEsIGlkZW50aWZpZXI9MSwg
dGltZXN0YW1wPTEwMCksCisgICAgICAgICAgICBDb21taXQocmV2aXNpb249MiwgaWRlbnRpZmll
cj0yLCB0aW1lc3RhbXA9MTAwKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0
ZXIoCisgICAgICAgICAgICBDb21taXQocmV2aXNpb249MiwgaWRlbnRpZmllcj0yLCB0aW1lc3Rh
bXA9MTAwKSwKKyAgICAgICAgICAgIENvbW1pdChyZXZpc2lvbj0xLCBpZGVudGlmaWVyPTEsIHRp
bWVzdGFtcD0xMDApLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICBDb21taXQocmV2aXNpb249MSwgaWRlbnRpZmllcj0xLCB0aW1lc3RhbXA9MTAwKSwK
KyAgICAgICAgICAgIENvbW1pdChyZXZpc2lvbj0xLCBpZGVudGlmaWVyPTEsIHRpbWVzdGFtcD0x
MDApLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9pZGVudGlmaWVyX2NvbXBhcmUoc2VsZik6
CisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhDb21taXQoaWRlbnRpZmllcj0xKSwgQ29tbWl0KGlk
ZW50aWZpZXI9MikpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihDb21taXQoaWRlbnRpZmll
cj0yKSwgQ29tbWl0KGlkZW50aWZpZXI9MSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29t
bWl0KGlkZW50aWZpZXI9MSksIENvbW1pdChpZGVudGlmaWVyPTEpKQorCisgICAgZGVmIHRlc3Rf
cmV2aXNpb25fY29tcGFyZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKENvbW1pdChy
ZXZpc2lvbj0xKSwgQ29tbWl0KHJldmlzaW9uPTIpKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0
ZXIoQ29tbWl0KHJldmlzaW9uPTIpLCBDb21taXQocmV2aXNpb249MSkpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoQ29tbWl0KHJldmlzaW9uPTEpLCBDb21taXQocmV2aXNpb249MSkpCisKKyAg
ICBkZWYgdGVzdF9pbnZhbGlkX2NvbXBhcmUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBDb21taXQocmV2aXNpb249MSkuX19j
bXBfXyhDb21taXQoaWRlbnRpZmllcj0yKSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp
c2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgQ29tbWl0KHJldmlzaW9uPTEsIHRpbWVzdGFt
cD0xMDApLl9fY21wX18oQ29tbWl0KGlkZW50aWZpZXI9MiwgdGltZXN0YW1wPTEwMCkpCisKKyAg
ICBkZWYgdGVzdF9jb250cmlidXRvcihzZWxmKToKKyAgICAgICAgQ29udHJpYnV0b3IuY2xlYXIo
KQorICAgICAgICBjb250cmlidXRvciA9IENvbnRyaWJ1dG9yLmZyb21fc2NtX2xvZygnQXV0aG9y
OiBKb25hdGhhbiBCZWRhcmQgPGpiZWRhcmRAYXBwbGUuY29tPicpCisKKyAgICAgICAgY29tbWl0
ID0gQ29tbWl0KHJldmlzaW9uPTEsIGlkZW50aWZpZXI9MSwgYXV0aG9yPWNvbnRyaWJ1dG9yKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC5hdXRob3IsIGNvbnRyaWJ1dG9yKQorCisg
ICAgICAgIGNvbW1pdCA9IENvbW1pdChyZXZpc2lvbj0xLCBpZGVudGlmaWVyPTEsIGF1dGhvcj0n
Sm9uYXRoYW4gQmVkYXJkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQuYXV0aG9y
LCBjb250cmlidXRvcikKKworICAgICAgICBjb21taXQgPSBDb21taXQocmV2aXNpb249MSwgaWRl
bnRpZmllcj0xLCBhdXRob3I9J2piZWRhcmRAYXBwbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjb21taXQuYXV0aG9yLCBjb250cmlidXRvcikKKworICAgIGRlZiB0ZXN0X2ludmFs
aWRfY29udHJpYnV0b3Ioc2VsZik6CisgICAgICAgIENvbnRyaWJ1dG9yLmNsZWFyKCkKKyAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIENvbW1p
dChyZXZpc2lvbj0xLCBpZGVudGlmaWVyPTEsIGF1dGhvcj0nSm9uYXRoYW4gQmVkYXJkJykKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3Qv
Y29udHJpYnV0b3JfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9jb250cmlidXRvcl91bml0dGVzdC5w
eQkocmV2aXNpb24gMjY3NzE0KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2Nt
cHkvd2Via2l0c2NtcHkvdGVzdC9jb250cmlidXRvcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5
KQpAQCAtMzMsNiArMzMsMjMgQEAgY2xhc3MgVGVzdENvbnRyaWJ1dG9yKHVuaXR0ZXN0LlRlc3RD
YXNlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRyaWJ1dG9yLm5hbWUsICdKb25hdGhh
biBCZWRhcmQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRyaWJ1dG9yLmVtYWlscywg
WydqYmVkYXJkQGFwcGxlLmNvbSddKQogCisgICAgZGVmIHRlc3RfZ2l0X3N2bl9sb2coc2VsZik6
CisgICAgICAgIENvbnRyaWJ1dG9yLmNsZWFyKCkKKyAgICAgICAgY29udHJpYnV0b3IgPSBDb250
cmlidXRvci5mcm9tX3NjbV9sb2coJ0F1dGhvcjogSm9uYXRoYW4gQmVkYXJkIDxqYmVkYXJkQGFw
cGxlLmNvbUAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmM+JykKKworICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNvbnRyaWJ1dG9yLm5hbWUsICdKb25hdGhhbiBCZWRhcmQnKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRyaWJ1dG9yLmVtYWlscywgWydqYmVkYXJkQGFw
cGxlLmNvbSddKQorCisgICAgZGVmIHRlc3RfZ2l0X25vX2F1dGhvcihzZWxmKToKKyAgICAgICAg
Q29udHJpYnV0b3IuY2xlYXIoKQorICAgICAgICBjb250cmlidXRvciA9IENvbnRyaWJ1dG9yLmZy
b21fc2NtX2xvZygnQXV0aG9yOiBBdXRvbWF0ZWQgQ2hlY2tpbiA8ZGV2bnVsbD4nKQorICAgICAg
ICBzZWxmLmFzc2VydElzTm9uZShjb250cmlidXRvcikKKworICAgIGRlZiB0ZXN0X2dpdF9zdm5f
bm9fYXV0aG9yKHNlbGYpOgorICAgICAgICBDb250cmlidXRvci5jbGVhcigpCisgICAgICAgIGNv
bnRyaWJ1dG9yID0gQ29udHJpYnV0b3IuZnJvbV9zY21fbG9nKCdBdXRob3I6IChubyBhdXRob3Ip
IDwobm8gYXV0aG9yKUAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmM+JykKKyAg
ICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY29udHJpYnV0b3IpCisKICAgICBkZWYgdGVzdF9zdm5f
bG9nKHNlbGYpOgogICAgICAgICBDb250cmlidXRvci5jbGVhcigpCiAgICAgICAgIGNvbnRyaWJ1
dG9yID0gQ29udHJpYnV0b3IuZnJvbV9zY21fbG9nKCdyMjY2NzUxIHwgamJlZGFyZEBhcHBsZS5j
b20gfCAyMDIwLTA5LTA4IDE0OjMzOjQyIC0wNzAwIChUdWUsIDA4IFNlcCAyMDIwKSB8IDEwIGxp
bmVzJykKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNj
bXB5L3Rlc3QvZ2l0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZ2l0X3VuaXR0ZXN0LnB5CShyZXZp
c2lvbiAyNjc3MTQpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJr
aXRzY21weS90ZXN0L2dpdF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYs
NyBAQCBjbGFzcyBUZXN0R2l0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgd2l0aCBtb2Nr
cy5sb2NhbC5HaXQoc2VsZi5wYXRoLCBicmFuY2hlcz0oJ2JyYW5jaC0xJywgJ2JyYW5jaC0yJywg
J3JlbW90ZXMvb3JpZ2luL2JyYW5jaC0zJykpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKICAgICAgICAgICAgICAgICBsb2NhbC5HaXQoc2VsZi5wYXRoKS5icmFuY2hlcywKLSAgICAg
ICAgICAgICAgICBbJ21haW4nLCAnYnJhbmNoLTEnLCAnYnJhbmNoLTInLCAnYnJhbmNoLTMnXSwK
KyAgICAgICAgICAgICAgICBbJ2JyYW5jaC0xJywgJ2JyYW5jaC0yJywgJ2JyYW5jaC0zJywgJ21h
aW4nXSwKICAgICAgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X3RhZ3Moc2VsZik6CkluZGV4OiBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L3NjbV91
bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS90ZXN0L3NjbV91bml0dGVzdC5weQkocmV2aXNpb24gMjY3NzE0KQor
KysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9z
Y21fdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDMgKzQ0LDIzIEBAIGNsYXNzIFRl
c3RTY20odW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3JlbW90ZShzZWxmKToKICAg
ICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yKToKICAgICAg
ICAgICAgIGxvY2FsLlNjbShzZWxmLnBhdGgpLnJlbW90ZSgpCisKKyAgICBkZWYgdGVzdF9kZXZf
YnJhbmNoZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2NhbC5TY20uREVWX0JS
QU5DSEVTLm1hdGNoKCdlbmcvMTIzNCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobG9jYWwu
U2NtLkRFVl9CUkFOQ0hFUy5tYXRjaCgnamJlZGFyZC9lbmcvMTIzNCcpKQorICAgICAgICBzZWxm
LmFzc2VydFRydWUobG9jYWwuU2NtLkRFVl9CUkFOQ0hFUy5tYXRjaCgnZGV2LzEyMzQnKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvY2FsLlNjbS5ERVZfQlJBTkNIRVMubWF0Y2goJ2piZWRh
cmQvZGV2LzEyMzQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvY2FsLlNjbS5ERVZfQlJB
TkNIRVMubWF0Y2goJ2J1Zy8xMjM0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2NhbC5T
Y20uREVWX0JSQU5DSEVTLm1hdGNoKCdqYmVkYXJkL2J1Zy8xMjM0JykpCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShsb2NhbC5TY20uREVWX0JSQU5DSEVTLm1hdGNoKCdtYWluJykpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9jYWwuU2NtLkRFVl9CUkFOQ0hFUy5tYXRjaCgncmFuZG9t
LzEyMzQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsb2NhbC5TY20uREVWX0JSQU5DSEVT
Lm1hdGNoKCdvdGhlci8xMjM0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9jYWwuU2Nt
LkRFVl9CUkFOQ0hFUy5tYXRjaCgnc2FmYXJpLTYwNi1icmFuY2gnKSkKKworICAgIGRlZiB0ZXN0
X3Byb2RfYnJhbmNoZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2NhbC5TY20u
UFJPRF9CUkFOQ0hFUy5tYXRjaCgnc2FmYXJpLTYxMC1icmFuY2gnKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGxvY2FsLlNjbS5QUk9EX0JSQU5DSEVTLm1hdGNoKCdzYWZhcmktNjEwLjEtYnJh
bmNoJykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsb2NhbC5TY20uUFJPRF9CUkFOQ0hF
Uy5tYXRjaCgnbWFpbicpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxvY2FsLlNjbS5QUk9E
X0JSQU5DSEVTLm1hdGNoKCdlbmcvMTIzNCcpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410289</attachid>
            <date>2020-10-01 17:33:49 -0700</date>
            <delta_ts>2020-10-05 16:18:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216404-20201001173348.patch</filename>
            <type>text/plain</type>
            <size>32215</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2Nzg2MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDUzIEBACisyMDIwLTEwLTAxICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0c2NtcHldIEdlbmVyYXRlIENvbW1pdCBvYmplY3QgZnJvbSBs
b2NhbCByZXBvc2l0b3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTY0MDQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY4NzAyODk3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdJUAorCisgICAgICAg
ICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5w
eTogQnVtcCB2ZXJzaW9uLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVw
eS93ZWJraXRjb3JlcHkvZGVjb3JhdG9ycy5weToKKyAgICAgICAgKE1lbW9pemUuX19jYWxsX18u
ZGVjb3JhdG9yKTogSGFuZGxlIGNhc2Ugd2hlcmUgZnVuY3Rpb24gYXJndW1lbnRzIGFyZSBkaWZm
ZXJlbnQuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNv
cmVweS90ZXN0cy9kZWNvcmF0b3JzX3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGVzdE1lbW9pemUu
dGVzdF9jb25mbGljdGluZ19hcmdzKToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS93ZWJraXRzY21weS9fX2luaXRfXy5weToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9jb250cmlidXRvci5weToKKyAgICAgICAgKENv
bnRyaWJ1dG9yKTogSGFuZGxlIHNpbmdsZSBsaW5lIGNoYW5nZWxvZ3MuCisgICAgICAgICogU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5OgorICAg
ICAgICAoR2l0KToKKyAgICAgICAgKEdpdC5fX2luaXRfXyk6CisgICAgICAgIChHaXQuYnJhbmNo
ZXMpOgorICAgICAgICAoR2l0LnJlbW90ZSk6CisgICAgICAgIChHaXQuX2NvbW1pdF9jb3VudCk6
CisgICAgICAgIChHaXQuX2JyYW5jaGVzX2Zvcik6CisgICAgICAgIChHaXQuY29tbWl0KToKKyAg
ICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9z
Y20ucHk6CisgICAgICAgIChTY20pOgorICAgICAgICAoU2NtLl9faW5pdF9fKToKKyAgICAgICAg
KFNjbS5jb21taXQpOiBDb25zdHJ1Y3QgYSBjb21taXQgZnJvbSB0aGUgcHJvdmlkZWQgYXJndW1l
bnRzLgorICAgICAgICAoU2NtLmxvZyk6IExvZyBhIG1lc3NhZ2UgdG8gc3RkZXJyIGlmIG5vIGxv
Z2dlciBoYXMgYmVlbiBjb25maWd1cmVkLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL3N2bi5weToKKyAgICAgICAgKFN2bik6CisgICAg
ICAgIChTdm4uX19pbml0X18pOgorICAgICAgICAoU3ZuLmluZm8pOgorICAgICAgICAoU3ZuLl9j
YWNoZV9wYXRoKToKKyAgICAgICAgKFN2bi5fY2FjaGVfcmV2aXNpb25zKToKKyAgICAgICAgKFN2
bi5fY29tbWl0X2NvdW50KToKKyAgICAgICAgKFN2bi5yZW1vdGUpOgorICAgICAgICAoU3ZuLmNv
bW1pdCk6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvdGVzdC9jb250cmlidXRvcl91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RDb250cmlidXRv
ci50ZXN0X3Nob3J0X3N2bl9sb2cpOiBUZXN0IHNpbmdsZSBsaW5lZSBjaGFuZ2Vsb2cuCisgICAg
ICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9naXRf
dW5pdHRlc3QucHk6CisgICAgICAgIChUZXN0R2l0LnRlc3RfYnJhbmNoZXMpOgorICAgICAgICAq
IFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3Qvc2NtX3VuaXR0
ZXN0LnB5OgorICAgICAgICAoVGVzdFNjbS50ZXN0X3JlbW90ZSk6CisgICAgICAgIChUZXN0U2Nt
KToKKyAgICAgICAgKFRlc3RTY20udGVzdF9kZXZfYnJhbmNoZXMpOgorICAgICAgICAoVGVzdFNj
bS50ZXN0X3Byb2RfYnJhbmNoZXMpOgorCiAyMDIwLTEwLTAxICBBYWthc2ggSmFpbiAgPGFha2Fz
aF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBMaW1pdCBudW1iZXIgb2YgdGVzdHMgdG8gbG9n
IGluIGNhc2Ugb2YgbGFyZ2UgbnVtYmVyIG9mIEFQSSB0ZXN0IGZhaWx1cmVzCkluZGV4OiBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L19faW5pdF9fLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJr
aXRjb3JlcHkvX19pbml0X18ucHkJKHJldmlzaW9uIDI2Nzg2MSkKKysrIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDcgKzM1LDcgQEAgZnJvbSB3ZWJraXRjb3JlcHkudGltZW91dCBpbXBvcnQg
VGltZW91dAogZnJvbSB3ZWJraXRjb3JlcHkuc3VicHJvY2Vzc191dGlscyBpbXBvcnQgVGltZW91
dEV4cGlyZWQsIENvbXBsZXRlZFByb2Nlc3MsIHJ1bgogZnJvbSB3ZWJraXRjb3JlcHkub3V0cHV0
X2NhcHR1cmUgaW1wb3J0IExvZ2dlckNhcHR1cmUsIE91dHB1dENhcHR1cmUsIE91dHB1dER1cGxp
Y2F0ZQogCi12ZXJzaW9uID0gVmVyc2lvbigwLCA0LCAxMSkKK3ZlcnNpb24gPSBWZXJzaW9uKDAs
IDQsIDEyKQogCiBmcm9tIHdlYmtpdGNvcmVweS5hdXRvaW5zdGFsbCBpbXBvcnQgUGFja2FnZSwg
QXV0b0luc3RhbGwKIGlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCk6CkluZGV4OiBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L2RlY29yYXRvcnMucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtp
dGNvcmVweS9kZWNvcmF0b3JzLnB5CShyZXZpc2lvbiAyNjc4NjEpCisrKyBUb29scy9TY3JpcHRz
L2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L2RlY29yYXRvcnMucHkJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDggKzQyLDkgQEAgY2xhc3MgTWVtb2l6ZShvYmplY3QpOgogICAgICAg
ICAgICAgaWYgJ2NhY2hlZCcgbm90IGluIGluc3BlY3QuZ2V0YXJnc3BlYyhmdW5jdGlvbikuYXJn
czoKICAgICAgICAgICAgICAgICBjYWNoZWQgPSBrd2FyZ3MucG9wKCdjYWNoZWQnLCBjYWNoZWQp
CiAKLSAgICAgICAgICAgIGxhc3RfY2FsbGVkID0gc2VsZi5fbGFzdF9jYWxsZWRbZnVuY3Rpb25d
LmdldChhcmdzLCAwKQotICAgICAgICAgICAgaXNfY2FjaGVkID0gYXJncyBpbiBzZWxmLl9jYWNo
ZVtmdW5jdGlvbl0KKyAgICAgICAgICAgIGtleWFyZ3MgPSBhcmdzICsgdHVwbGUoc29ydGVkKFso
a2V5LCB2YWx1ZSkgZm9yIGtleSwgdmFsdWUgaW4ga3dhcmdzLml0ZW1zKCldKSkKKyAgICAgICAg
ICAgIGxhc3RfY2FsbGVkID0gc2VsZi5fbGFzdF9jYWxsZWRbZnVuY3Rpb25dLmdldChrZXlhcmdz
LCAwKQorICAgICAgICAgICAgaXNfY2FjaGVkID0ga2V5YXJncyBpbiBzZWxmLl9jYWNoZVtmdW5j
dGlvbl0KICAgICAgICAgICAgIGlmIG5vdCBjYWNoZWQ6CiAgICAgICAgICAgICAgICAgaXNfY2Fj
aGVkID0gRmFsc2UKICAgICAgICAgICAgIGlmIHRpbWVvdXQgYW5kIHRpbWVvdXQgPCB0aW1lLnRp
bWUoKSAtIGxhc3RfY2FsbGVkOgpAQCAtNTIsOCArNTMsOCBAQCBjbGFzcyBNZW1vaXplKG9iamVj
dCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NhY2hlW2Z1bmN0aW9uXS5nZXQoYXJn
cywgTm9uZSkKIAogICAgICAgICAgICAgdmFsdWUgPSBmdW5jdGlvbigqYXJncywgKiprd2FyZ3Mp
Ci0gICAgICAgICAgICBzZWxmLl9sYXN0X2NhbGxlZFtmdW5jdGlvbl1bYXJnc10gPSB0aW1lLnRp
bWUoKQotICAgICAgICAgICAgc2VsZi5fY2FjaGVbZnVuY3Rpb25dW2FyZ3NdID0gdmFsdWUKKyAg
ICAgICAgICAgIHNlbGYuX2xhc3RfY2FsbGVkW2Z1bmN0aW9uXVtrZXlhcmdzXSA9IHRpbWUudGlt
ZSgpCisgICAgICAgICAgICBzZWxmLl9jYWNoZVtmdW5jdGlvbl1ba2V5YXJnc10gPSB2YWx1ZQog
ICAgICAgICAgICAgcmV0dXJuIHZhbHVlCiAKICAgICAgICAgZGVjb3JhdG9yLmNsZWFyID0gc2Vs
Zi5jbGVhcgpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtp
dGNvcmVweS90ZXN0cy9kZWNvcmF0b3JzX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvZGVjb3Jh
dG9yc191bml0dGVzdC5weQkocmV2aXNpb24gMjY3ODYxKQorKysgVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXN0cy9kZWNvcmF0b3JzX3VuaXR0ZXN0
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNCArMTA2LDQgQEAgY2xhc3MgVGVzdE1lbW9pemUo
dW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRlc3RNZW1vaXpl
LmluY3JlbWVudF93aXRoX2FyZ3MoCiAgICAgICAgICAgICB0aW1lb3V0PSd0aW1lb3V0LW5ldycs
CiAgICAgICAgICAgICBjYWNoZWQ9J2NhY2hlZC1uZXcnLAotICAgICAgICApLCAoJ3RpbWVvdXQn
LCAnY2FjaGVkJykpCisgICAgICAgICksICgndGltZW91dC1uZXcnLCAnY2FjaGVkLW5ldycpKQpJ
bmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvX19p
bml0X18ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2Nt
cHkvd2Via2l0c2NtcHkvX19pbml0X18ucHkJKHJldmlzaW9uIDI2Nzg2MSkKKysrIFRvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L19faW5pdF9fLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAg
IlBsZWFzZSBpbnN0YWxsIHdlYmtpdGNvcmVweSB3aXRoIGBwaXAgaW5zdGFsbCB3ZWJraXRjb3Jl
cHkgLS1leHRyYS1pbmRleC11cmwgPHBhY2thZ2UgaW5kZXggVVJMPmAiCiAgICAgKQogCi12ZXJz
aW9uID0gVmVyc2lvbigwLCAwLCA3KQordmVyc2lvbiA9IFZlcnNpb24oMCwgMSwgMCkKIAogZnJv
bSB3ZWJraXRzY21weS5jb250cmlidXRvciBpbXBvcnQgQ29udHJpYnV0b3IKIGZyb20gd2Via2l0
c2NtcHkuY29tbWl0IGltcG9ydCBDb21taXQKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2NvbnRyaWJ1dG9yLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2NvbnRyaWJ1dG9y
LnB5CShyZXZpc2lvbiAyNjc4NjEpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9jb250cmlidXRvci5weQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyAr
MjYsNyBAQCBpbXBvcnQgcmUKIGNsYXNzIENvbnRyaWJ1dG9yKG9iamVjdCk6CiAgICAgR0lUX0FV
VEhPUl9SRSA9IHJlLmNvbXBpbGUocidBdXRob3I6ICg/UDxhdXRob3I+LiopIDwoP1A8ZW1haWw+
W15AXStAW15AXSspKEAuKik/PicpCiAgICAgQVVUT01BVEVEX0NIRUNLSU5fUkUgPSByZS5jb21w
aWxlKHInQXV0aG9yOiAoP1A8YXV0aG9yPi4qKSA8ZGV2bnVsbD4nKQotICAgIFNWTl9BVVRIT1Jf
UkUgPSByZS5jb21waWxlKHInclxkKyBcfCAoP1A8ZW1haWw+LiopIFx8ICg/UDxkYXRlPi4qKSBc
fCBcZCsgbGluZXMnKQorICAgIFNWTl9BVVRIT1JfUkUgPSByZS5jb21waWxlKHInclxkKyBcfCAo
P1A8ZW1haWw+LiopIFx8ICg/UDxkYXRlPi4qKSBcfCBcZCsgbGluZXM/JykKICAgICBTVk5fUEFU
Q0hfRlJPTV9SRSA9IHJlLmNvbXBpbGUocidQYXRjaCBieSAoP1A8YXV0aG9yPi4qKSA8KD9QPGVt
YWlsPi4qKT4gb24gXGQrLVxkKy1cZCsnKQogCiAgICAgYnlfZW1haWwgPSBkaWN0KCkKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL2dp
dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93
ZWJraXRzY21weS9sb2NhbC9naXQucHkJKHJldmlzaW9uIDI2Nzg2MSkKKysrIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL2dpdC5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMjEsMTkgKzIxLDI0IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIAoraW1wb3J0IHJl
CisKIGZyb20gd2Via2l0Y29yZXB5IGltcG9ydCBydW4sIGRlY29yYXRvcnMsIFRpbWVvdXRFeHBp
cmVkCiBmcm9tIHdlYmtpdHNjbXB5LmxvY2FsIGltcG9ydCBTY20KK2Zyb20gd2Via2l0c2NtcHkg
aW1wb3J0IENvbW1pdCwgQ29udHJpYnV0b3IKIAogCiBjbGFzcyBHaXQoU2NtKToKICAgICBleGVj
dXRhYmxlID0gJy91c3IvYmluL2dpdCcKKyAgICBHSVRfQ09NTUlUID0gcmUuY29tcGlsZShyJ2Nv
bW1pdCAoP1A8aGFzaD5bMC05YS1mXSspJykKKyAgICBHSVRfU1ZOX1JFVklTSU9OID0gcmUuY29t
cGlsZShyJ2dpdC1zdm4taWQ6IFxTKzpcL1wvLitAKD9QPHJldmlzaW9uPlxkKykgListListList
LisnKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGlzX2NoZWNrb3V0KGNscywgcGF0aCk6
CiAgICAgICAgIHJldHVybiBydW4oW2Nscy5leGVjdXRhYmxlLCAncmV2LXBhcnNlJywgJy0tc2hv
dy10b3BsZXZlbCddLCBjd2Q9cGF0aCwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSkucmV0dXJuY29kZSA9
PSAwCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCk6Ci0gICAgICAgIHN1cGVyKEdpdCwg
c2VsZikuX19pbml0X18ocGF0aCkKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgZGV2X2Jy
YW5jaGVzPU5vbmUsIHByb2RfYnJhbmNoZXM9Tm9uZSk6CisgICAgICAgIHN1cGVyKEdpdCwgc2Vs
ZikuX19pbml0X18ocGF0aCwgZGV2X2JyYW5jaGVzPWRldl9icmFuY2hlcywgcHJvZF9icmFuY2hl
cz1wcm9kX2JyYW5jaGVzKQogICAgICAgICBpZiBub3Qgc2VsZi5yb290X3BhdGg6CiAgICAgICAg
ICAgICByYWlzZSBPU0Vycm9yKCdQcm92aWRlZCBwYXRoIHt9IGlzIG5vdCBhIGdpdCByZXBvc2l0
b3J5Jy5mb3JtYXQocGF0aCkpCiAKQEAgLTEwMCwxMSArMTA1LDcgQEAgY2xhc3MgR2l0KFNjbSk6
CiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgYnJhbmNoZXMoc2VsZik6Ci0gICAgICAgIGJyYW5j
aCA9IHJ1bihbc2VsZi5leGVjdXRhYmxlLCAnYnJhbmNoJywgJy1hJ10sIGN3ZD1zZWxmLnJvb3Rf
cGF0aCwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgZW5jb2Rpbmc9J3V0Zi04JykKLSAgICAgICAgaWYg
YnJhbmNoLnJldHVybmNvZGU6Ci0gICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignRmFp
bGVkIHRvIHJldHJpZXZlIGJyYW5jaCBsaXN0IGZvciB7fScuZm9ybWF0KHNlbGYucm9vdF9wYXRo
KSkKLSAgICAgICAgcmVzdWx0ID0gW2JyYW5jaC5sc3RyaXAoJyAqJykgZm9yIGJyYW5jaCBpbiBm
aWx0ZXIobGFtYmRhIGJyYW5jaDogJy0+JyBub3QgaW4gYnJhbmNoLCBicmFuY2guc3Rkb3V0LnNw
bGl0bGluZXMoKSldCi0gICAgICAgIHJldHVybiBbJy8nLmpvaW4oYnJhbmNoLnNwbGl0KCcvJylb
MjpdKSBpZiBicmFuY2guc3RhcnRzd2l0aCgncmVtb3Rlcy9vcmlnaW4vJykgZWxzZSBicmFuY2gg
Zm9yIGJyYW5jaCBpbiByZXN1bHRdCisgICAgICAgIHJldHVybiBzZWxmLl9icmFuY2hlc19mb3Io
KQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIHRhZ3Moc2VsZik6CkBAIC0xMTgsMyArMTE5LDE0
OSBAQCBjbGFzcyBHaXQoU2NtKToKICAgICAgICAgaWYgcmVzdWx0LnJldHVybmNvZGU6CiAgICAg
ICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignRmFpbGVkIHRvIHJldHJpZXZlIHJlbW90ZSBm
b3Ige30nLmZvcm1hdChzZWxmLnJvb3RfcGF0aCkpCiAgICAgICAgIHJldHVybiByZXN1bHQuc3Rk
b3V0LnJzdHJpcCgpCisKKyAgICBkZWYgX2NvbW1pdF9jb3VudChzZWxmLCBuYXRpdmVfcGFyYW1l
dGVyKToKKyAgICAgICAgcmV2aXNpb25fY291bnQgPSBydW4oCisgICAgICAgICAgICBbc2VsZi5l
eGVjdXRhYmxlLCAncmV2LWxpc3QnLCAnLS1jb3VudCcsICctLW5vLW1lcmdlcycsIG5hdGl2ZV9w
YXJhbWV0ZXJdLAorICAgICAgICAgICAgY3dkPXNlbGYucm9vdF9wYXRoLCBjYXB0dXJlX291dHB1
dD1UcnVlLCBlbmNvZGluZz0ndXRmLTgnLAorICAgICAgICApCisgICAgICAgIGlmIHJldmlzaW9u
X2NvdW50LnJldHVybmNvZGU6CisgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignRmFp
bGVkIHRvIHJldHJpZXZlIHJldmlzaW9uIGNvdW50IGZvciB7fScuZm9ybWF0KG5hdGl2ZV9wYXJh
bWV0ZXIpKQorICAgICAgICByZXR1cm4gaW50KHJldmlzaW9uX2NvdW50LnN0ZG91dCkKKworICAg
IGRlZiBfYnJhbmNoZXNfZm9yKHNlbGYsIGhhc2g9Tm9uZSk6CisgICAgICAgIGJyYW5jaCA9IHJ1
bigKKyAgICAgICAgICAgIFtzZWxmLmV4ZWN1dGFibGUsICdicmFuY2gnLCAnLWEnXSArIChbJy0t
Y29udGFpbnMnLCBoYXNoXSBpZiBoYXNoIGVsc2UgW10pLAorICAgICAgICAgICAgY3dkPXNlbGYu
cm9vdF9wYXRoLAorICAgICAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwKKyAgICAgICAgICAg
IGVuY29kaW5nPSd1dGYtOCcsCisgICAgICAgICkKKyAgICAgICAgaWYgYnJhbmNoLnJldHVybmNv
ZGU6CisgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignRmFpbGVkIHRvIHJldHJpZXZl
IGJyYW5jaCBsaXN0IGZvciB7fScuZm9ybWF0KHNlbGYucm9vdF9wYXRoKSkKKyAgICAgICAgcmVz
dWx0ID0gW2JyYW5jaC5sc3RyaXAoJyAqJykgZm9yIGJyYW5jaCBpbiBmaWx0ZXIobGFtYmRhIGJy
YW5jaDogJy0+JyBub3QgaW4gYnJhbmNoLCBicmFuY2guc3Rkb3V0LnNwbGl0bGluZXMoKSldCisg
ICAgICAgIHJldHVybiBzb3J0ZWQoc2V0KFsnLycuam9pbihicmFuY2guc3BsaXQoJy8nKVsyOl0p
IGlmIGJyYW5jaC5zdGFydHN3aXRoKCdyZW1vdGVzL29yaWdpbi8nKSBlbHNlIGJyYW5jaCBmb3Ig
YnJhbmNoIGluIHJlc3VsdF0pKQorCisgICAgZGVmIGNvbW1pdChzZWxmLCBoYXNoPU5vbmUsIHJl
dmlzaW9uPU5vbmUsIGlkZW50aWZpZXI9Tm9uZSwgYnJhbmNoPU5vbmUpOgorICAgICAgICBpZiBy
ZXZpc2lvbiBhbmQgbm90IHNlbGYuaXNfc3ZuOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJv
cignVGhpcyBnaXQgY2hlY2tvdXQgZG9lcyBub3Qgc3VwcG9ydCBTVk4gcmV2aXNpb25zJykKKyAg
ICAgICAgZWxpZiByZXZpc2lvbjoKKyAgICAgICAgICAgIHJldmlzaW9uID0gQ29tbWl0Ll9wYXJz
ZV9yZXZpc2lvbihyZXZpc2lvbiwgZG9fYXNzZXJ0PVRydWUpCisgICAgICAgICAgICByZXZpc2lv
bl9sb2cgPSBydW4oCisgICAgICAgICAgICAgICAgW3NlbGYuZXhlY3V0YWJsZSwgJ3N2bicsICdm
aW5kLXJldicsICdye30nLmZvcm1hdChyZXZpc2lvbildLAorICAgICAgICAgICAgICAgIGN3ZD1z
ZWxmLnJvb3RfcGF0aCwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgZW5jb2Rpbmc9J3V0Zi04JywKKyAg
ICAgICAgICAgICAgICB0aW1lb3V0PTMsCisgICAgICAgICAgICApCisgICAgICAgICAgICBpZiBy
ZXZpc2lvbl9sb2cucmV0dXJuY29kZToKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2Vw
dGlvbigiRmFpbGVkIHRvIHJldHJpZXZlIGNvbW1pdCBpbmZvcm1hdGlvbiBmb3IgJ3J7fSciLmZv
cm1hdChyZXZpc2lvbikpCisgICAgICAgICAgICBoYXNoID0gcmV2aXNpb25fbG9nLnN0ZG91dC5y
c3RyaXAoKQorICAgICAgICAgICAgaWYgbm90IGhhc2g6CisgICAgICAgICAgICAgICAgcmFpc2Ug
c2VsZi5FeGNlcHRpb24oIkZhaWxlZCB0byBmaW5kICdye30nIi5mb3JtYXQocmV2aXNpb24pKQor
CisgICAgICAgIGRlZmF1bHRfYnJhbmNoID0gc2VsZi5kZWZhdWx0X2JyYW5jaAorICAgICAgICBw
YXJzZWRfYnJhbmNoX3BvaW50ID0gTm9uZQorCisgICAgICAgIGlmIGlkZW50aWZpZXIgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICBpZiByZXZpc2lvbjoKKyAgICAgICAgICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKCdDYW5ub3QgZGVmaW5lIGJvdGggcmV2aXNpb24gYW5kIGlkZW50aWZpZXInKQor
ICAgICAgICAgICAgaWYgaGFzaDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdD
YW5ub3QgZGVmaW5lIGJvdGggaGFzaCBhbmQgaWRlbnRpZmllcicpCisKKyAgICAgICAgICAgIHBh
cnNlZF9icmFuY2hfcG9pbnQsIGlkZW50aWZpZXIsIHBhcnNlZF9icmFuY2ggPSBDb21taXQuX3Bh
cnNlX2lkZW50aWZpZXIoaWRlbnRpZmllciwgZG9fYXNzZXJ0PVRydWUpCisgICAgICAgICAgICBp
ZiBwYXJzZWRfYnJhbmNoOgorICAgICAgICAgICAgICAgIGlmIGJyYW5jaCBhbmQgYnJhbmNoICE9
IHBhcnNlZF9icmFuY2g6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisg
ICAgICAgICAgICAgICAgICAgICAgICAiQ2FsbGVyIHBhc3NlZCBib3RoICdicmFuY2gnIGFuZCAn
aWRlbnRpZmllcicsIGJ1dCBzcGVjaWZpZWQgZGlmZmVyZW50IGJyYW5jaGVzICh7fSBhbmQge30p
Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoLCBwYXJzZWRfYnJh
bmNoLAorICAgICAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgICAgIGJyYW5jaCA9IHBhcnNlZF9icmFuY2gKKworICAgICAgICAgICAgYmFz
ZWxpbmUgPSBicmFuY2ggb3IgJ0hFQUQnCisgICAgICAgICAgICBpc19kZWZhdWx0ID0gYmFzZWxp
bmUgPT0gZGVmYXVsdF9icmFuY2gKKyAgICAgICAgICAgIGlmIGJhc2VsaW5lID09ICdIRUFEJzoK
KyAgICAgICAgICAgICAgICBpc19kZWZhdWx0ID0gZGVmYXVsdF9icmFuY2ggaW4gc2VsZi5fYnJh
bmNoZXNfZm9yKGJhc2VsaW5lKQorCisgICAgICAgICAgICBpZiBpc19kZWZhdWx0IGFuZCBwYXJz
ZWRfYnJhbmNoX3BvaW50OgorICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0aW9uKCdD
YW5ub3QgcHJvdmlkZSBhIGJyYW5jaCBwb2ludCBmb3IgYSBjb21taXQgb24gdGhlIGRlZmF1bHQg
YnJhbmNoJykKKworICAgICAgICAgICAgYmFzZV9jb3VudCA9IHNlbGYuX2NvbW1pdF9jb3VudChi
YXNlbGluZSBpZiBpc19kZWZhdWx0IGVsc2UgJ3t9Li57fScuZm9ybWF0KGRlZmF1bHRfYnJhbmNo
LCBiYXNlbGluZSkpCisKKyAgICAgICAgICAgIGlmIGlkZW50aWZpZXIgPiBiYXNlX2NvdW50Ogor
ICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0aW9uKCdJZGVudGlmaWVyIHt9IGNhbm5v
dCBiZSBmb3VuZCBvbiB0aGUgc3BlY2lmaWVkIGJyYW5jaCBpbiB0aGUgY3VycmVudCBjaGVja291
dCcuZm9ybWF0KGlkZW50aWZpZXIpKQorICAgICAgICAgICAgbG9nID0gcnVuKAorICAgICAgICAg
ICAgICAgIFtzZWxmLmV4ZWN1dGFibGUsICdsb2cnLCAne31+e30nLmZvcm1hdChicmFuY2ggb3Ig
J0hFQUQnLCBiYXNlX2NvdW50IC0gaWRlbnRpZmllciksICctMSddLAorICAgICAgICAgICAgICAg
IGN3ZD1zZWxmLnJvb3RfcGF0aCwKKyAgICAgICAgICAgICAgICBjYXB0dXJlX291dHB1dD1UcnVl
LAorICAgICAgICAgICAgICAgIGVuY29kaW5nPSd1dGYtOCcsCisgICAgICAgICAgICApCisgICAg
ICAgICAgICBpZiBsb2cucmV0dXJuY29kZToKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4
Y2VwdGlvbigiRmFpbGVkIHRvIHJldHJpZXZlIGNvbW1pdCBpbmZvcm1hdGlvbiBmb3IgJ2l7fUB7
fSciLmZvcm1hdChpZGVudGlmaWVyLCBicmFuY2ggb3IgJ0hFQUQnKSkKKworICAgICAgICAgICAg
IyBOZWdhdGl2ZSBpZGVudGlmaWVycyBhcmUgYWN0dWFsbHkgY29tbWl0cyBvbiB0aGUgZGVmYXVs
dCBicmFuY2gsIHdlIHdpbGwgbmVlZCB0byByZS1jb21wdXRlIHRoZSBpZGVudGlmaWVyCisgICAg
ICAgICAgICBpZiBpZGVudGlmaWVyIDwgMCBhbmQgaXNfZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICByYWlzZSBzZWxmLkV4Y2VwdGlvbignSWxsZWdhbCBuZWdhdGl2ZSBpZGVudGlmaWVyIG9uIHRo
ZSBkZWZhdWx0IGJyYW5jaCcpCisgICAgICAgICAgICBpZiBpZGVudGlmaWVyIDwgMDoKKyAgICAg
ICAgICAgICAgICBpZGVudGlmaWVyID0gTm9uZQorCisgICAgICAgIGVsaWYgYnJhbmNoOgorICAg
ICAgICAgICAgaWYgaGFzaDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdDYW5u
b3QgZGVmaW5lIGJvdGggYnJhbmNoIGFuZCBoYXNoJykKKyAgICAgICAgICAgIGxvZyA9IHJ1bihb
c2VsZi5leGVjdXRhYmxlLCAnbG9nJywgYnJhbmNoLCAnLTEnXSwgY3dkPXNlbGYucm9vdF9wYXRo
LCBjYXB0dXJlX291dHB1dD1UcnVlLCBlbmNvZGluZz0ndXRmLTgnKQorICAgICAgICAgICAgaWYg
bG9nLnJldHVybmNvZGU6CisgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oIkZh
aWxlZCB0byByZXRyaWV2ZSBjb21taXQgaW5mb3JtYXRpb24gZm9yICd7fSciLmZvcm1hdChicmFu
Y2gpKQorCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBoYXNoID0gQ29tbWl0Ll9wYXJzZV9o
YXNoKGhhc2gsIGRvX2Fzc2VydD1UcnVlKQorICAgICAgICAgICAgbG9nID0gcnVuKFtzZWxmLmV4
ZWN1dGFibGUsICdsb2cnLCBoYXNoIG9yICdIRUFEJywgJy0xJ10sIGN3ZD1zZWxmLnJvb3RfcGF0
aCwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgZW5jb2Rpbmc9J3V0Zi04JykKKyAgICAgICAgICAgIGlm
IGxvZy5yZXR1cm5jb2RlOgorICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0aW9uKCJG
YWlsZWQgdG8gcmV0cmlldmUgY29tbWl0IGluZm9ybWF0aW9uIGZvciAne30nIi5mb3JtYXQoaGFz
aCBvciAnSEVBRCcpKQorCisgICAgICAgIG1hdGNoID0gc2VsZi5HSVRfQ09NTUlULm1hdGNoKGxv
Zy5zdGRvdXQuc3BsaXRsaW5lcygpWzBdKQorICAgICAgICBpZiBub3QgbWF0Y2g6CisgICAgICAg
ICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignSW52YWxpZCBjb21taXQgaGFzaCBpbiBnaXQgbG9n
JykKKyAgICAgICAgaGFzaCA9IG1hdGNoLmdyb3VwKCdoYXNoJykKKworICAgICAgICBicmFuY2hf
Y2FuZGlkYXRlcyA9IHNlbGYuX2JyYW5jaGVzX2ZvcihoYXNoKQorICAgICAgICBpZiBsZW4oYnJh
bmNoX2NhbmRpZGF0ZXMpID09IDE6CisgICAgICAgICAgICBicmFuY2ggPSBicmFuY2hfY2FuZGlk
YXRlc1swXQorICAgICAgICBlbGlmIGRlZmF1bHRfYnJhbmNoIGluIGJyYW5jaF9jYW5kaWRhdGVz
OgorICAgICAgICAgICAgYnJhbmNoID0gZGVmYXVsdF9icmFuY2gKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICMgV2UgZG9uJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gZGV0ZXJtaW5l
IGEgYnJhbmNoLiBXZSB3aWxsIGF0dGVtcHQgdG8gZmlyc3QgdXNlIHRoZSBicmFuY2ggc3BlY2lm
aWVkCisgICAgICAgICAgICAjIGJ5IHRoZSBjYWxsZXIsIHRoZW4gdGhlIG9uZSB0aGVuIGNoZWNr
b3V0IGlzIGN1cnJlbnRseSBvbi4gSWYgYm90aCB0aG9zZSBmYWlsLCB3ZSB3aWxsIHBpY2sgb25l
IG9mIHRoZQorICAgICAgICAgICAgIyBvdGhlciBicmFuY2hlcy4gV2UgcHJlZmVyIHByb2R1Y3Rp
b24gYnJhbmNoZXMgZmlyc3QsIHRoZW4gYW55IGJyYW5jaCB3aGljaCBpc24ndCBleHBsaWNpdGx5
IGxhYmVsZWQgYQorICAgICAgICAgICAgIyBkZXYgYnJhbmNoLiBXZSB0aGVuIHNvcnQgdGhlIGxp
c3Qgb2YgY2FuZGlkYXRlIGJyYW5jaGVzIGFuZCBwaWNrIHRoZSBzbWFsbGVzdAorICAgICAgICAg
ICAgZmlsdGVyZWRfY2FuZGlkYXRlcyA9IFtjYW5kaWRhdGUgZm9yIGNhbmRpZGF0ZSBpbiBicmFu
Y2hfY2FuZGlkYXRlcyBpZiBzZWxmLnByb2RfYnJhbmNoZXMubWF0Y2goY2FuZGlkYXRlKV0KKyAg
ICAgICAgICAgIGlmIG5vdCBmaWx0ZXJlZF9jYW5kaWRhdGVzOgorICAgICAgICAgICAgICAgIGZp
bHRlcmVkX2NhbmRpZGF0ZXMgPSBbY2FuZGlkYXRlIGZvciBjYW5kaWRhdGUgaW4gYnJhbmNoX2Nh
bmRpZGF0ZXMgaWYgbm90IHNlbGYuZGV2X2JyYW5jaGVzLm1hdGNoKGNhbmRpZGF0ZSldCisgICAg
ICAgICAgICBpZiBub3QgZmlsdGVyZWRfY2FuZGlkYXRlczoKKyAgICAgICAgICAgICAgICBmaWx0
ZXJlZF9jYW5kaWRhdGVzID0gYnJhbmNoX2NhbmRpZGF0ZXMKKyAgICAgICAgICAgIGJyYW5jaCA9
IHNvcnRlZChmaWx0ZXJlZF9jYW5kaWRhdGVzKVswXQorCisgICAgICAgIGlmIG5vdCBpZGVudGlm
aWVyOgorICAgICAgICAgICAgaWRlbnRpZmllciA9IHNlbGYuX2NvbW1pdF9jb3VudChoYXNoIGlm
IGJyYW5jaCA9PSBkZWZhdWx0X2JyYW5jaCBlbHNlICd7fS4ue30nLmZvcm1hdChkZWZhdWx0X2Jy
YW5jaCwgaGFzaCkpCisgICAgICAgIGJyYW5jaF9wb2ludCA9IE5vbmUgaWYgYnJhbmNoID09IGRl
ZmF1bHRfYnJhbmNoIGVsc2Ugc2VsZi5fY29tbWl0X2NvdW50KGhhc2gpCisgICAgICAgIGlmIGJy
YW5jaF9wb2ludCBhbmQgcGFyc2VkX2JyYW5jaF9wb2ludCBhbmQgYnJhbmNoX3BvaW50ICE9IHBh
cnNlZF9icmFuY2hfcG9pbnQ6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJQcm92aWRl
ZCAnYnJhbmNoX3BvaW50JyBkb2VzIG5vdCBtYXRjaCBicmFuY2ggcG9pbnQgb2Ygc3BlY2lmaWVk
IGJyYW5jaCIpCisKKyAgICAgICAgaWYgc2VsZi5pc19zdm46CisgICAgICAgICAgICBtYXRjaCA9
IHNlbGYuR0lUX1NWTl9SRVZJU0lPTi5tYXRjaChsb2cuc3Rkb3V0LnNwbGl0bGluZXMoKVstMV0u
bHN0cmlwKCkpCisgICAgICAgICAgICByZXZpc2lvbiA9IGludChtYXRjaC5ncm91cCgncmV2aXNp
b24nKSkgaWYgbWF0Y2ggZWxzZSBOb25lCisKKyAgICAgICAgY29tbWl0X3RpbWUgPSBydW4oCisg
ICAgICAgICAgICBbc2VsZi5leGVjdXRhYmxlLCAnc2hvdycsICctcycsICctLWZvcm1hdD0lY3Qn
LCBoYXNoXSwKKyAgICAgICAgICAgIGN3ZD1zZWxmLnJvb3RfcGF0aCwgY2FwdHVyZV9vdXRwdXQ9
VHJ1ZSwgZW5jb2Rpbmc9J3V0Zi04JywKKyAgICAgICAgKQorICAgICAgICBpZiBjb21taXRfdGlt
ZS5yZXR1cm5jb2RlOgorICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oJ0ZhaWxlZCB0
byByZXRyaWV2ZSBjb21taXQgdGltZSBmb3Ige30nLmZvcm1hdChoYXNoKSkKKworICAgICAgICBy
ZXR1cm4gQ29tbWl0KAorICAgICAgICAgICAgaGFzaD1oYXNoLAorICAgICAgICAgICAgcmV2aXNp
b249cmV2aXNpb24sCisgICAgICAgICAgICBpZGVudGlmaWVyPWlkZW50aWZpZXIsCisgICAgICAg
ICAgICBicmFuY2hfcG9pbnQ9YnJhbmNoX3BvaW50LAorICAgICAgICAgICAgYnJhbmNoPWJyYW5j
aCwKKyAgICAgICAgICAgIHRpbWVzdGFtcD1pbnQoY29tbWl0X3RpbWUuc3Rkb3V0LmxzdHJpcCgp
KSwKKyAgICAgICAgICAgIGF1dGhvcj1Db250cmlidXRvci5mcm9tX3NjbV9sb2cobG9nLnN0ZG91
dC5zcGxpdGxpbmVzKClbMV0pLAorICAgICAgICAgICAgbWVzc2FnZT0nXG4nLmpvaW4obGluZVs0
Ol0gZm9yIGxpbmUgaW4gbG9nLnN0ZG91dC5zcGxpdGxpbmVzKClbNDpdKSwKKyAgICAgICAgKQpJ
bmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9j
YWwvc2NtLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNj
bXB5L3dlYmtpdHNjbXB5L2xvY2FsL3NjbS5weQkocmV2aXNpb24gMjY3ODYxKQorKysgVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvc2NtLnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0yMSwxMCArMjEsMjMgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogCitpbXBv
cnQgbG9nZ2luZworaW1wb3J0IHJlCitpbXBvcnQgc3lzCisKK2Zyb20gbG9nZ2luZyBpbXBvcnQg
TnVsbEhhbmRsZXIKK2Zyb20gd2Via2l0c2NtcHkgaW1wb3J0IGxvZworCisKIGNsYXNzIFNjbShv
YmplY3QpOgogICAgIGNsYXNzIEV4Y2VwdGlvbihSdW50aW1lRXJyb3IpOgogICAgICAgICBwYXNz
CiAKKyAgICAjIFByb2plY3RzIGNhbiBkZWZpbmUgZm9yIHRoZW1zZWx2ZXMgd2hhdCBjb25zdGl0
dXRlcyBhIGRldmVsb3BtZW50IHZzIGEgcHJvZHVjdGlvbiBicmFuY2gsCisgICAgIyB0aGUgZm9s
bG93aW5nIGlkaW9tcyBzZWVtIGNvbW1vbiBlbm91Z2ggdG8gYmUgc2hhcmVkLgorICAgIERFVl9C
UkFOQ0hFUyA9IHJlLmNvbXBpbGUocicuKlsoZW5nKShkZXYpKGJ1ZyldLy4rJykKKyAgICBQUk9E
X0JSQU5DSEVTID0gcmUuY29tcGlsZShyJ1xTKy1bXGQrXC5dKy1icmFuY2gnKQorCiAgICAgZXhl
Y3V0YWJsZSA9IE5vbmUKIAogICAgIEBjbGFzc21ldGhvZApAQCAtMzcsMTEgKzUwLDE0IEBAIGNs
YXNzIFNjbShvYmplY3QpOgogICAgICAgICAgICAgcmV0dXJuIGxvY2FsLlN2bihwYXRoKQogICAg
ICAgICByYWlzZSBPU0Vycm9yKCd7fSBpcyBub3QgYSBrbm93biBTQ00gdHlwZScpCiAKLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgcGF0aCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsIGRl
dl9icmFuY2hlcz1Ob25lLCBwcm9kX2JyYW5jaGVzPU5vbmUpOgogICAgICAgICBpZiBub3QgaXNp
bnN0YW5jZShwYXRoLCBzdHIpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignJykKICAg
ICAgICAgc2VsZi5wYXRoID0gcGF0aAogCisgICAgICAgIHNlbGYuZGV2X2JyYW5jaGVzID0gZGV2
X2JyYW5jaGVzIG9yIHNlbGYuREVWX0JSQU5DSEVTCisgICAgICAgIHNlbGYucHJvZF9icmFuY2hl
cyA9IHByb2RfYnJhbmNoZXMgb3Igc2VsZi5QUk9EX0JSQU5DSEVTCisKICAgICBAcHJvcGVydHkK
ICAgICBkZWYgaXNfc3ZuKHNlbGYpOgogICAgICAgICByZXR1cm4gRmFsc2UKQEAgLTcyLDMgKzg4
LDEzIEBAIGNsYXNzIFNjbShvYmplY3QpOgogCiAgICAgZGVmIHJlbW90ZShzZWxmLCBuYW1lPU5v
bmUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKKworICAgIGRlZiBjb21t
aXQoc2VsZiwgaGFzaD1Ob25lLCByZXZpc2lvbj1Ob25lLCBpZGVudGlmaWVyPU5vbmUsIGJyYW5j
aD1Ob25lKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCisKKyAgICBAY2xh
c3NtZXRob2QKKyAgICBkZWYgbG9nKGNscywgbWVzc2FnZSwgbGV2ZWw9bG9nZ2luZy5XQVJOSU5H
KToKKyAgICAgICAgaWYgbm90IGxvZy5oYW5kbGVycyBvciBhbGwoW2lzaW5zdGFuY2UoaGFuZGxl
LCBOdWxsSGFuZGxlcikgZm9yIGhhbmRsZSBpbiBsb2cuaGFuZGxlcnNdKToKKyAgICAgICAgICAg
IHN5cy5zdGRlcnIud3JpdGUobWVzc2FnZSArICdcbicpCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBsb2cubG9nKGxldmVsLCBtZXNzYWdlKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvc3ZuLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL3N2bi5w
eQkocmV2aXNpb24gMjY3ODYxKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2Nt
cHkvd2Via2l0c2NtcHkvbG9jYWwvc3ZuLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMCwyNiArMjAs
NDEgQEAKICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAoraW1wb3J0IGJp
c2VjdAoraW1wb3J0IGNhbGVuZGFyCitpbXBvcnQganNvbgoraW1wb3J0IG9zCitpbXBvcnQgcmUK
K2ltcG9ydCBzdWJwcm9jZXNzCiAKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCiBmcm9t
IHdlYmtpdGNvcmVweSBpbXBvcnQgcnVuLCBkZWNvcmF0b3JzCiBmcm9tIHdlYmtpdHNjbXB5Lmxv
Y2FsLnNjbSBpbXBvcnQgU2NtCitmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBDb21taXQsIENvbnRy
aWJ1dG9yLCBWZXJzaW9uCiAKIAogY2xhc3MgU3ZuKFNjbSk6CiAgICAgZXhlY3V0YWJsZSA9ICcv
dXNyL2xvY2FsL2Jpbi9zdm4nCisgICAgTE9HX1JFID0gcmUuY29tcGlsZShyJ3IoP1A8cmV2aXNp
b24+XGQrKSBcfCAoP1A8ZW1haWw+LiopIFx8ICg/UDxkYXRlPi4qKScpCisgICAgQ0FDSEVfVkVS
U0lPTiA9IFZlcnNpb24oMSkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBpc19jaGVja291
dChjbHMsIHBhdGgpOgogICAgICAgICByZXR1cm4gcnVuKFtjbHMuZXhlY3V0YWJsZSwgJ2luZm8n
XSwgY3dkPXBhdGgsIGNhcHR1cmVfb3V0cHV0PVRydWUpLnJldHVybmNvZGUgPT0gMAogCi0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgotICAgICAgICBzdXBlcihTdm4sIHNlbGYpLl9faW5p
dF9fKHBhdGgpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsIGRldl9icmFuY2hlcz1Ob25l
LCBwcm9kX2JyYW5jaGVzPU5vbmUpOgorICAgICAgICBzdXBlcihTdm4sIHNlbGYpLl9faW5pdF9f
KHBhdGgsIGRldl9icmFuY2hlcz1kZXZfYnJhbmNoZXMsIHByb2RfYnJhbmNoZXM9cHJvZF9icmFu
Y2hlcykKICAgICAgICAgaWYgbm90IHNlbGYucm9vdF9wYXRoOgogICAgICAgICAgICAgcmFpc2Ug
T1NFcnJvcignUHJvdmlkZWQgcGF0aCB7fSBpcyBub3QgYSBzdm4gcmVwb3NpdG9yeScuZm9ybWF0
KHBhdGgpKQorICAgICAgICBzZWxmLl9tZXRhZGF0YV9jYWNoZSA9IGRpY3QoKQogCiAgICAgQGRl
Y29yYXRvcnMuTWVtb2l6ZShjYWNoZWQ9RmFsc2UpCi0gICAgZGVmIGluZm8oc2VsZik6Ci0gICAg
ICAgIGluZm9fcmVzdWx0ID0gcnVuKFtzZWxmLmV4ZWN1dGFibGUsICdpbmZvJ10sIGN3ZD1zZWxm
LnBhdGgsIGNhcHR1cmVfb3V0cHV0PVRydWUsIGVuY29kaW5nPSd1dGYtOCcpCisgICAgZGVmIGlu
Zm8oc2VsZiwgYnJhbmNoPU5vbmUsIHJldmlzaW9uPU5vbmUpOgorICAgICAgICByZXZpc2lvbiA9
IENvbW1pdC5fcGFyc2VfcmV2aXNpb24ocmV2aXNpb24pCisgICAgICAgIGFkZGl0aW9uYWxfYXJn
cyA9IFsnXi9icmFuY2hlcy97fScuZm9ybWF0KGJyYW5jaCldIGlmIGJyYW5jaCBhbmQgYnJhbmNo
ICE9IHNlbGYuZGVmYXVsdF9icmFuY2ggZWxzZSBbXQorICAgICAgICBhZGRpdGlvbmFsX2FyZ3Mg
Kz0gWyctcicsIHN0cihyZXZpc2lvbildIGlmIHJldmlzaW9uIGVsc2UgW10KKworICAgICAgICBp
bmZvX3Jlc3VsdCA9IHJ1bihbc2VsZi5leGVjdXRhYmxlLCAnaW5mbyddICsgYWRkaXRpb25hbF9h
cmdzLCBjd2Q9c2VsZi5wYXRoLCBjYXB0dXJlX291dHB1dD1UcnVlLCBlbmNvZGluZz0ndXRmLTgn
KQogICAgICAgICBpZiBpbmZvX3Jlc3VsdC5yZXR1cm5jb2RlOgogICAgICAgICAgICAgcmV0dXJu
IHt9CiAKQEAgLTgyLDUgKzk3LDE4NyBAQCBjbGFzcyBTdm4oU2NtKToKICAgICBkZWYgdGFncyhz
ZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYubGlzdCgndGFncycpCiAKKyAgICBAcHJvcGVydHkK
KyAgICBkZWYgX2NhY2hlX3BhdGgoc2VsZik6CisgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4o
c2VsZi5yb290X3BhdGgsICcuc3ZuJywgJ3dlYmtpdHNjbXB5LWNhY2hlLmpzb24nKQorCisgICAg
ZGVmIF9jYWNoZV9yZXZpc2lvbnMoc2VsZiwgYnJhbmNoPU5vbmUpOgorICAgICAgICBpZiBub3Qg
c2VsZi5fbWV0YWRhdGFfY2FjaGUgYW5kIG9zLnBhdGguZXhpc3RzKHNlbGYuX2NhY2hlX3BhdGgp
OgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLl9jYWNo
ZV9wYXRoKSBhcyBmaWxlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9tZXRhZGF0YV9jYWNo
ZSA9IGpzb24ubG9hZChmaWxlKQorICAgICAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb246Cisg
ICAgICAgICAgICAgICAgc2VsZi5fbWV0YWRhdGFfY2FjaGUgPSB7fQorICAgICAgICAgICAgICAg
IHNlbGYuX21ldGFkYXRhX2NhY2hlWyd2ZXJzaW9uJ10gPSBzdHIoc2VsZi5DQUNIRV9WRVJTSU9O
KQorCisgICAgICAgIGJyYW5jaCA9IGJyYW5jaCBvciBzZWxmLmRlZmF1bHRfYnJhbmNoCisgICAg
ICAgIGlzX2RlZmF1bHRfYnJhbmNoID0gYnJhbmNoID09IHNlbGYuZGVmYXVsdF9icmFuY2gKKyAg
ICAgICAgaWYgYnJhbmNoIG5vdCBpbiBzZWxmLl9tZXRhZGF0YV9jYWNoZToKKyAgICAgICAgICAg
IHNlbGYuX21ldGFkYXRhX2NhY2hlW2JyYW5jaF0gPSBbMF0gaWYgaXNfZGVmYXVsdF9icmFuY2gg
ZWxzZSBbXQorICAgICAgICBwb3MgPSBsZW4oc2VsZi5fbWV0YWRhdGFfY2FjaGVbYnJhbmNoXSkK
KworICAgICAgICAjIElmIHdlIGFyZW4ndCBvbiB0aGUgZGVmYXVsdCBicmFuY2gsIHdlIHdpbGwg
bmVlZCB0aGUgZGVmYXVsdCBicmFuY2ggdG8gZGV0ZXJtaW5lIHdoZW4KKyAgICAgICAgIyBvdXIg
IGJyYW5jaCAgaW50ZXJzZWN0cyB3aXRoIHRoZSBkZWZhdWx0IGJyYW5jaC4KKyAgICAgICAgaWYg
bm90IGlzX2RlZmF1bHRfYnJhbmNoOgorICAgICAgICAgICAgc2VsZi5fY2FjaGVfcmV2aXNpb25z
KGJyYW5jaD1zZWxmLmRlZmF1bHRfYnJhbmNoKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IGRpZF93YXJuID0gRmFsc2UKKyAgICAgICAgICAgIGNvdW50ID0gMAorICAgICAgICAgICAgY2Fu
ZGlkYXRlX2luZGV4ID0gLTEgaWYgaXNfZGVmYXVsdF9icmFuY2ggZWxzZSBsZW4oc2VsZi5fbWV0
YWRhdGFfY2FjaGVbc2VsZi5kZWZhdWx0X2JyYW5jaF0pCisKKyAgICAgICAgICAgIGJyYW5jaF9h
cmcgPSAnXi97fXt9Jy5mb3JtYXQoJycgaWYgaXNfZGVmYXVsdF9icmFuY2ggZWxzZSAnYnJhbmNo
ZXMvJywgYnJhbmNoKQorICAgICAgICAgICAgbG9nID0gc3VicHJvY2Vzcy5Qb3BlbigKKyAgICAg
ICAgICAgICAgICBbc2VsZi5leGVjdXRhYmxlLCAnbG9nJywgJy1xJywgYnJhbmNoX2FyZ10sCisg
ICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICBz
dGRlcnI9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgIGVuY29kaW5nPSd1dGYtOCcs
CisgICAgICAgICAgICApCisgICAgICAgICAgICBsaW5lID0gbG9nLnN0ZG91dC5yZWFkbGluZSgp
CisgICAgICAgICAgICB3aGlsZSBsaW5lOgorICAgICAgICAgICAgICAgIG1hdGNoID0gc2VsZi5M
T0dfUkUubWF0Y2gobGluZSkKKyAgICAgICAgICAgICAgICBpZiBtYXRjaDoKKyAgICAgICAgICAg
ICAgICAgICAgaWYgbm90IGRpZF93YXJuOgorICAgICAgICAgICAgICAgICAgICAgICAgY291bnQg
Kz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgY291bnQgPiAxMDAwOgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYubG9nKCdDYWNoaW5nIGNvbW1pdCBkYXRhIGZvciB7fSwg
dGhpcyB3aWxsIHRha2UgYSBmZXcgbWludXRlcy4uLicuZm9ybWF0KGJyYW5jaCkpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlkX3dhcm4gPSBUcnVlCisKKyAgICAgICAgICAgICAgICAg
ICAgcmV2aXNpb24gPSBpbnQobWF0Y2guZ3JvdXAoJ3JldmlzaW9uJykpCisgICAgICAgICAgICAg
ICAgICAgIGlmIHBvcyA+IDAgYW5kIHNlbGYuX21ldGFkYXRhX2NhY2hlW2JyYW5jaF1bcG9zIC0g
MV0gPT0gcmV2aXNpb246CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAg
ICAgICAgICAgICBpZiBub3QgaXNfZGVmYXVsdF9icmFuY2g6CisgICAgICAgICAgICAgICAgICAg
ICAgICBjYW5kaWRhdGVfaW5kZXggPSBiaXNlY3QuYmlzZWN0X3JpZ2h0KHNlbGYuX21ldGFkYXRh
X2NhY2hlW3NlbGYuZGVmYXVsdF9icmFuY2hdWzpjYW5kaWRhdGVfaW5kZXhdLCByZXZpc2lvbikg
LSAxCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9tZXRhZGF0YV9jYWNoZVtzZWxm
LmRlZmF1bHRfYnJhbmNoXVtjYW5kaWRhdGVfaW5kZXhdID09IHJldmlzaW9uOgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX21ldGFkYXRhX2NhY2hlW2JyYW5jaF0uaW5zZXJ0KHBv
cywgcmV2aXNpb24pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fbWV0YWRhdGFfY2FjaGVbYnJhbmNoXS5pbnNlcnQocG9zLCByZXZp
c2lvbikKKyAgICAgICAgICAgICAgICBsaW5lID0gbG9nLnN0ZG91dC5yZWFkbGluZSgpCisgICAg
ICAgIGZpbmFsbHk6CisgICAgICAgICAgICBsb2cua2lsbCgpCisKKyAgICAgICAgaWYgc2VsZi5f
bWV0YWRhdGFfY2FjaGVbc2VsZi5kZWZhdWx0X2JyYW5jaF1bMF0gPT0gWzBdOgorICAgICAgICAg
ICAgc2VsZi5fbWV0YWRhdGFfY2FjaGVbJ2lkZW50aWZpZXInXSA9IGxlbihzZWxmLl9tZXRhZGF0
YV9jYWNoZVticmFuY2hdKQorCisgICAgICAgIHdpdGggb3BlbihzZWxmLl9jYWNoZV9wYXRoLCAn
dycpIGFzIGZpbGU6CisgICAgICAgICAgICBqc29uLmR1bXAoc2VsZi5fbWV0YWRhdGFfY2FjaGUs
IGZpbGUsIGluZGVudD00KQorCisgICAgICAgIHJldHVybiBzZWxmLl9tZXRhZGF0YV9jYWNoZVti
cmFuY2hdCisKKyAgICBkZWYgX2NvbW1pdF9jb3VudChzZWxmLCByZXZpc2lvbj1Ob25lLCBicmFu
Y2g9Tm9uZSk6CisgICAgICAgIGJyYW5jaCA9IGJyYW5jaCBvciBzZWxmLmRlZmF1bHRfYnJhbmNo
CisKKyAgICAgICAgaWYgcmV2aXNpb246CisgICAgICAgICAgICByZXR1cm4gYmlzZWN0LmJpc2Vj
dF9sZWZ0KHNlbGYuX21ldGFkYXRhX2NhY2hlW2JyYW5jaF0sIGludChyZXZpc2lvbikpCisgICAg
ICAgIGlmIGJyYW5jaCA9PSBzZWxmLmRlZmF1bHRfYnJhbmNoOgorICAgICAgICAgICAgcmV0dXJu
IGxlbihzZWxmLl9tZXRhZGF0YV9jYWNoZVticmFuY2hdKQorICAgICAgICByZXR1cm4gc2VsZi5f
Y29tbWl0X2NvdW50KHJldmlzaW9uPXNlbGYuX21ldGFkYXRhX2NhY2hlW2JyYW5jaF1bMF0sIGJy
YW5jaD1zZWxmLmRlZmF1bHRfYnJhbmNoKQorCiAgICAgZGVmIHJlbW90ZShzZWxmLCBuYW1lPU5v
bmUpOgogICAgICAgICByZXR1cm4gc2VsZi5pbmZvKClbJ1JlcG9zaXRvcnkgUm9vdCddCisKKyAg
ICBkZWYgY29tbWl0KHNlbGYsIGhhc2g9Tm9uZSwgcmV2aXNpb249Tm9uZSwgaWRlbnRpZmllcj1O
b25lLCBicmFuY2g9Tm9uZSk6CisgICAgICAgIGlmIGhhc2g6CisgICAgICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKCdTVk4gZG9lcyBub3Qgc3VwcG9ydCBHaXQgaGFzaGVzJykKKworICAgICAgICBw
YXJzZWRfYnJhbmNoX3BvaW50ID0gTm9uZQorICAgICAgICBpZiBpZGVudGlmaWVyIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgaWYgcmV2aXNpb246CisgICAgICAgICAgICAgICAgcmFpc2UgVmFs
dWVFcnJvcignQ2Fubm90IGRlZmluZSBib3RoIHJldmlzaW9uIGFuZCBpZGVudGlmaWVyJykKKwor
ICAgICAgICAgICAgcGFyc2VkX2JyYW5jaF9wb2ludCwgaWRlbnRpZmllciwgcGFyc2VkX2JyYW5j
aCA9IENvbW1pdC5fcGFyc2VfaWRlbnRpZmllcihpZGVudGlmaWVyLCBkb19hc3NlcnQ9VHJ1ZSkK
KyAgICAgICAgICAgIGlmIHBhcnNlZF9icmFuY2g6CisgICAgICAgICAgICAgICAgaWYgYnJhbmNo
IGFuZCBicmFuY2ggIT0gcGFyc2VkX2JyYW5jaDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICJDYWxsZXIgcGFzc2VkIGJvdGgg
J2JyYW5jaCcgYW5kICdpZGVudGlmaWVyJywgYnV0IHNwZWNpZmllZCBkaWZmZXJlbnQgYnJhbmNo
ZXMgKHt9IGFuZCB7fSkiLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFu
Y2gsIHBhcnNlZF9icmFuY2gsCisgICAgICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAg
ICAgICAgICAgICApCisgICAgICAgICAgICAgICAgYnJhbmNoID0gcGFyc2VkX2JyYW5jaAorICAg
ICAgICAgICAgYnJhbmNoID0gYnJhbmNoIG9yIHNlbGYuYnJhbmNoCisKKyAgICAgICAgICAgIGlm
IGJyYW5jaCA9PSBzZWxmLmRlZmF1bHRfYnJhbmNoIGFuZCBwYXJzZWRfYnJhbmNoX3BvaW50Ogor
ICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0aW9uKCdDYW5ub3QgcHJvdmlkZSBhIGJy
YW5jaCBwb2ludCBmb3IgYSBjb21taXQgb24gdGhlIGRlZmF1bHQgYnJhbmNoJykKKworICAgICAg
ICAgICAgc2VsZi5fY2FjaGVfcmV2aXNpb25zKGJyYW5jaD1icmFuY2gpCisKKyAgICAgICAgICAg
IGlmIGlkZW50aWZpZXIgPiBsZW4oc2VsZi5fbWV0YWRhdGFfY2FjaGVbYnJhbmNoXSk6CisgICAg
ICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oJ0lkZW50aWZpZXIge30gY2Fubm90IGJl
IGZvdW5kIG9uIHRoZSBzcGVjaWZpZWQgYnJhbmNoIGluIHRoZSBjdXJyZW50IGNoZWNrb3V0Jy5m
b3JtYXQoaWRlbnRpZmllcikpCisKKyAgICAgICAgICAgIGlmIGlkZW50aWZpZXIgPD0gMDoKKyAg
ICAgICAgICAgICAgICBpZiBicmFuY2ggPT0gc2VsZi5kZWZhdWx0X2JyYW5jaDoKKyAgICAgICAg
ICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oJ0lsbGVnYWwgbmVnYXRpdmUgaWRlbnRp
ZmllciBvbiB0aGUgZGVmYXVsdCBicmFuY2gnKQorICAgICAgICAgICAgICAgIGlkZW50aWZpZXIg
PSBzZWxmLl9jb21taXRfY291bnQoYnJhbmNoPWJyYW5jaCkgKyBpZGVudGlmaWVyCisgICAgICAg
ICAgICAgICAgaWYgaWRlbnRpZmllciA8IDA6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNl
bGYuRXhjZXB0aW9uKCdJZGVudGlmaWVyIGRvZXMgbm90IGV4aXN0IG9uIHRoZSBzcGVjaWZpZWQg
YnJhbmNoJykKKworICAgICAgICAgICAgICAgIGJyYW5jaCA9IHNlbGYuZGVmYXVsdF9icmFuY2gK
KworICAgICAgICAgICAgcmV2aXNpb24gPSBzZWxmLl9tZXRhZGF0YV9jYWNoZVticmFuY2hdW2lk
ZW50aWZpZXJdCisgICAgICAgICAgICBpbmZvID0gc2VsZi5pbmZvKGJyYW5jaD1icmFuY2gsIHJl
dmlzaW9uPXJldmlzaW9uKQorCisgICAgICAgIGVsaWYgcmV2aXNpb246CisgICAgICAgICAgICBp
ZiBicmFuY2g6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ2Fubm90IGRlZmlu
ZSBib3RoIGJyYW5jaCBhbmQgcmV2aXNpb24nKQorICAgICAgICAgICAgcmV2aXNpb24gPSBDb21t
aXQuX3BhcnNlX3JldmlzaW9uKHJldmlzaW9uLCBkb19hc3NlcnQ9VHJ1ZSkKKyAgICAgICAgICAg
IGZpbmRfYnJhbmNoID0gcnVuKFsKKyAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICds
b2cnLCAnLXYnLCAnLXEnLCBzZWxmLnJlbW90ZSgpLCAnLXInLCBzdHIocmV2aXNpb24pLCAnLWwn
LCAnMSddLAorICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsIGNhcHR1cmVfb3V0cHV0PVRy
dWUsIGVuY29kaW5nPSd1dGYtOCcsCisgICAgICAgICAgICApCisgICAgICAgICAgICBpZiBmaW5k
X2JyYW5jaC5yZXR1cm5jb2RlIG9yIG5vdCBmaW5kX2JyYW5jaC5zdGRvdXQ6CisgICAgICAgICAg
ICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oIkZhaWxlZCB0byByZXRyaWV2ZSBicmFuY2ggZm9y
ICd7fSciLmZvcm1hdChyZXZpc2lvbikpCisKKyAgICAgICAgICAgIHBhcnRpYWwgPSBOb25lCisg
ICAgICAgICAgICBmb3IgbGluZSBpbiBmaW5kX2JyYW5jaC5zdGRvdXQuc3BsaXRsaW5lcygpOgor
ICAgICAgICAgICAgICAgIGlmIHBhcnRpYWwgaXMgTm9uZSBhbmQgbGluZSA9PSAnQ2hhbmdlZCBw
YXRoczonOgorICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsID0gJycKKyAgICAgICAgICAgICAg
ICBlbGlmIHBhcnRpYWwgPT0gJyc6CisgICAgICAgICAgICAgICAgICAgIHBhcnRpYWwgPSBsaW5l
LmxzdHJpcCgpCisgICAgICAgICAgICAgICAgZWxpZiBwYXJ0aWFsOgorICAgICAgICAgICAgICAg
ICAgICBsaW5lID0gbGluZS5sc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICB3aGlsZSBsaW5l
LnN0YXJ0c3dpdGgoJ00gJykgYW5kIG5vdCBsaW5lLnN0YXJ0c3dpdGgocGFydGlhbCk6CisgICAg
ICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsID0gcGFydGlhbFs6LTFdCisgICAgICAgICAgICBp
ZiBsZW4ocGFydGlhbCkgPiAzOgorICAgICAgICAgICAgICAgIHBhcnRpYWwgPSBwYXJ0aWFsWzI6
XQorICAgICAgICAgICAgICAgIGJyYW5jaCA9IHBhcnRpYWwuc3BsaXQoJy8nKVsyIGlmIHBhcnRp
YWwuc3RhcnRzd2l0aCgnL2JyYW5jaGVzJykgZWxzZSAxXQorICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignTWFsZm9ybWVkIHNldCAgb2YgZWRp
dGVkIGZpbGVzJykKKworICAgICAgICAgICAgc2VsZi5fY2FjaGVfcmV2aXNpb25zKGJyYW5jaD1i
cmFuY2gpCisgICAgICAgICAgICBpbmZvID0gc2VsZi5pbmZvKGJyYW5jaD1icmFuY2gsIHJldmlz
aW9uPXJldmlzaW9uKQorCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBicmFuY2ggPSBicmFu
Y2ggb3Igc2VsZi5icmFuY2gKKyAgICAgICAgICAgIHNlbGYuX2NhY2hlX3JldmlzaW9ucyhicmFu
Y2g9YnJhbmNoKQorICAgICAgICAgICAgaW5mbyA9IHNlbGYuaW5mbyhicmFuY2g9YnJhbmNoKQor
ICAgICAgICAgICAgcmV2aXNpb24gPSBpbmZvWydMYXN0IENoYW5nZWQgUmV2J10KKworICAgICAg
ICBicmFuY2hfYXJnID0gJ14ve317fScuZm9ybWF0KCcnIGlmIGJyYW5jaCA9PSBzZWxmLmRlZmF1
bHRfYnJhbmNoIGVsc2UgJ2JyYW5jaGVzLycsIGJyYW5jaCkKKyAgICAgICAgbG9nID0gcnVuKFtz
ZWxmLmV4ZWN1dGFibGUsICdsb2cnLCAnLWwnLCAnMScsICctcicsIHN0cihyZXZpc2lvbiksIGJy
YW5jaF9hcmddLCBjd2Q9c2VsZi5wYXRoLCBjYXB0dXJlX291dHB1dD1UcnVlLCBlbmNvZGluZz0n
dXRmLTgnKQorICAgICAgICBzcGxpdF9sb2cgPSBsb2cuc3Rkb3V0LnNwbGl0bGluZXMoKQorICAg
ICAgICBpZiBsb2cucmV0dXJuY29kZSBvciBsZW4oc3BsaXRfbG9nKSA8IDM6CisgICAgICAgICAg
ICByYWlzZSBzZWxmLkV4Y2VwdGlvbigiRmFpbGVkIHRvIHJldHJpZXZlIGNvbW1pdCBpbmZvcm1h
dGlvbiBmb3IgJ3t9JyBvbiAne30nIi5mb3JtYXQocmV2aXNpb24sIGJyYW5jaCkpCisKKyAgICAg
ICAgZGF0ZSA9IGRhdGV0aW1lLnN0cnB0aW1lKGluZm9bJ0xhc3QgQ2hhbmdlZCBEYXRlJ10uc3Bs
aXQoJygnKVswXSwgJyVZLSVtLSVkICVIOiVNOiVTICV6ICcpCisKKyAgICAgICAgaWYgbm90IGlk
ZW50aWZpZXI6CisgICAgICAgICAgICBpZGVudGlmaWVyID0gc2VsZi5fY29tbWl0X2NvdW50KHJl
dmlzaW9uPXJldmlzaW9uLCBicmFuY2g9YnJhbmNoKQorICAgICAgICBicmFuY2hfcG9pbnQgPSBO
b25lIGlmIGJyYW5jaCA9PSBzZWxmLmRlZmF1bHRfYnJhbmNoIGVsc2Ugc2VsZi5fY29tbWl0X2Nv
dW50KGJyYW5jaD1icmFuY2gpCisgICAgICAgIGlmIGJyYW5jaF9wb2ludCBhbmQgcGFyc2VkX2Jy
YW5jaF9wb2ludCBhbmQgYnJhbmNoX3BvaW50ICE9IHBhcnNlZF9icmFuY2hfcG9pbnQ6CisgICAg
ICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJQcm92aWRlZCAnYnJhbmNoX3BvaW50JyBkb2VzIG5v
dCBtYXRjaCBicmFuY2ggcG9pbnQgb2Ygc3BlY2lmaWVkIGJyYW5jaCIpCisKKyAgICAgICAgYXV0
aG9yX2xpbmUgPSBzcGxpdF9sb2dbMV0KKyAgICAgICAgZm9yIGxpbmUgaW4gc3BsaXRfbG9nWzI6
OF06CisgICAgICAgICAgICBpZiBDb250cmlidXRvci5TVk5fUEFUQ0hfRlJPTV9SRS5tYXRjaChs
aW5lKToKKyAgICAgICAgICAgICAgICBhdXRob3JfbGluZSA9IGxpbmUKKyAgICAgICAgICAgICAg
ICBicmVhaworCisgICAgICAgIHJldHVybiBDb21taXQoCisgICAgICAgICAgICByZXZpc2lvbj1p
bnQocmV2aXNpb24pLAorICAgICAgICAgICAgYnJhbmNoPWJyYW5jaCwKKyAgICAgICAgICAgIGlk
ZW50aWZpZXI9aWRlbnRpZmllciwKKyAgICAgICAgICAgIGJyYW5jaF9wb2ludD1icmFuY2hfcG9p
bnQsCisgICAgICAgICAgICB0aW1lc3RhbXA9aW50KGNhbGVuZGFyLnRpbWVnbShkYXRlLnRpbWV0
dXBsZSgpKSksCisgICAgICAgICAgICBhdXRob3I9Q29udHJpYnV0b3IuZnJvbV9zY21fbG9nKGF1
dGhvcl9saW5lKSwKKyAgICAgICAgICAgIG1lc3NhZ2U9J1xuJy5qb2luKHNwbGl0X2xvZ1szOl0p
LAorICAgICAgICApCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93
ZWJraXRzY21weS90ZXN0L2NvbnRyaWJ1dG9yX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvY29udHJp
YnV0b3JfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2Nzg2MSkKKysrIFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvY29udHJpYnV0b3JfdW5pdHRlc3Qu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDEzIEBAIGNsYXNzIFRlc3RDb250cmlidXRv
cih1bml0dGVzdC5UZXN0Q2FzZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250cmlidXRv
ci5uYW1lLCAnamJlZGFyZEBhcHBsZS5jb20nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNv
bnRyaWJ1dG9yLmVtYWlscywgWydqYmVkYXJkQGFwcGxlLmNvbSddKQogCisgICAgZGVmIHRlc3Rf
c2hvcnRfc3ZuX2xvZyhzZWxmKToKKyAgICAgICAgQ29udHJpYnV0b3IuY2xlYXIoKQorICAgICAg
ICBjb250cmlidXRvciA9IENvbnRyaWJ1dG9yLmZyb21fc2NtX2xvZygncjI2Njc1MSB8IGpiZWRh
cmRAYXBwbGUuY29tIHwgMjAyMC0wOS0wOCAxNDozMzo0MiAtMDcwMCAoVHVlLCAwOCBTZXAgMjAy
MCkgfCAxIGxpbmUnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udHJpYnV0b3IubmFt
ZSwgJ2piZWRhcmRAYXBwbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250cmli
dXRvci5lbWFpbHMsIFsnamJlZGFyZEBhcHBsZS5jb20nXSkKKwogICAgIGRlZiB0ZXN0X3N2bl9w
YXRjaF9ieV9sb2coc2VsZik6CiAgICAgICAgIENvbnRyaWJ1dG9yLmNsZWFyKCkKICAgICAgICAg
Y29udHJpYnV0b3IgPSBDb250cmlidXRvci5mcm9tX3NjbV9sb2coJ1BhdGNoIGJ5IEpvbmF0aGFu
IEJlZGFyZCA8amJlZGFyZEBhcHBsZS5jb20+IG9uIDIwMjAtMDktMTAnKQpJbmRleDogVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9naXRfdW5pdHRl
c3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkv
d2Via2l0c2NtcHkvdGVzdC9naXRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2Nzg2MSkKKysrIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZ2l0X3Vu
aXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIFRlc3RHaXQo
dW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICB3aXRoIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBh
dGgsIGJyYW5jaGVzPSgnYnJhbmNoLTEnLCAnYnJhbmNoLTInLCAncmVtb3Rlcy9vcmlnaW4vYnJh
bmNoLTMnKSk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgICAg
IGxvY2FsLkdpdChzZWxmLnBhdGgpLmJyYW5jaGVzLAotICAgICAgICAgICAgICAgIFsnbWFpbics
ICdicmFuY2gtMScsICdicmFuY2gtMicsICdicmFuY2gtMyddLAorICAgICAgICAgICAgICAgIFsn
YnJhbmNoLTEnLCAnYnJhbmNoLTInLCAnYnJhbmNoLTMnLCAnbWFpbiddLAogICAgICAgICAgICAg
KQogCiAgICAgZGVmIHRlc3RfdGFncyhzZWxmKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3Qvc2NtX3VuaXR0ZXN0LnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rl
c3Qvc2NtX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjc4NjEpCisrKyBUb29scy9TY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L3NjbV91bml0dGVzdC5weQkod29y
a2luZyBjb3B5KQpAQCAtNDQsMyArNDQsMjMgQEAgY2xhc3MgVGVzdFNjbSh1bml0dGVzdC5UZXN0
Q2FzZSk6CiAgICAgZGVmIHRlc3RfcmVtb3RlKHNlbGYpOgogICAgICAgICB3aXRoIHNlbGYuYXNz
ZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IpOgogICAgICAgICAgICAgbG9jYWwuU2NtKHNl
bGYucGF0aCkucmVtb3RlKCkKKworICAgIGRlZiB0ZXN0X2Rldl9icmFuY2hlcyhzZWxmKToKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvY2FsLlNjbS5ERVZfQlJBTkNIRVMubWF0Y2goJ2VuZy8x
MjM0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2NhbC5TY20uREVWX0JSQU5DSEVTLm1h
dGNoKCdqYmVkYXJkL2VuZy8xMjM0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2NhbC5T
Y20uREVWX0JSQU5DSEVTLm1hdGNoKCdkZXYvMTIzNCcpKQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUobG9jYWwuU2NtLkRFVl9CUkFOQ0hFUy5tYXRjaCgnamJlZGFyZC9kZXYvMTIzNCcpKQorICAg
ICAgICBzZWxmLmFzc2VydFRydWUobG9jYWwuU2NtLkRFVl9CUkFOQ0hFUy5tYXRjaCgnYnVnLzEy
MzQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvY2FsLlNjbS5ERVZfQlJBTkNIRVMubWF0
Y2goJ2piZWRhcmQvYnVnLzEyMzQnKSkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxvY2Fs
LlNjbS5ERVZfQlJBTkNIRVMubWF0Y2goJ21haW4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShsb2NhbC5TY20uREVWX0JSQU5DSEVTLm1hdGNoKCdyYW5kb20vMTIzNCcpKQorICAgICAgICBz
ZWxmLmFzc2VydEZhbHNlKGxvY2FsLlNjbS5ERVZfQlJBTkNIRVMubWF0Y2goJ290aGVyLzEyMzQn
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsb2NhbC5TY20uREVWX0JSQU5DSEVTLm1hdGNo
KCdzYWZhcmktNjA2LWJyYW5jaCcpKQorCisgICAgZGVmIHRlc3RfcHJvZF9icmFuY2hlcyhzZWxm
KToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvY2FsLlNjbS5QUk9EX0JSQU5DSEVTLm1hdGNo
KCdzYWZhcmktNjEwLWJyYW5jaCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobG9jYWwuU2Nt
LlBST0RfQlJBTkNIRVMubWF0Y2goJ3NhZmFyaS02MTAuMS1icmFuY2gnKSkKKworICAgICAgICBz
ZWxmLmFzc2VydEZhbHNlKGxvY2FsLlNjbS5QUk9EX0JSQU5DSEVTLm1hdGNoKCdtYWluJykpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9jYWwuU2NtLlBST0RfQlJBTkNIRVMubWF0Y2goJ2Vu
Zy8xMjM0JykpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410579</attachid>
            <date>2020-10-05 16:18:11 -0700</date>
            <delta_ts>2020-10-05 16:28:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216404-20201005161810.patch</filename>
            <type>text/plain</type>
            <size>70267</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2ODAxMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU2IEBACisyMDIwLTEwLTA1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0c2NtcHldIEdlbmVyYXRlIENvbW1pdCBvYmplY3QgZnJvbSBs
b2NhbCByZXBvc2l0b3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTY0MDQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY4NzAyODk3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weTogQnVtcCB2ZXJzaW9u
LgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkv
ZGVjb3JhdG9ycy5weToKKyAgICAgICAgKE1lbW9pemUuX19jYWxsX18uZGVjb3JhdG9yKTogSGFu
ZGxlIGNhc2Ugd2hlcmUgZnVuY3Rpb24gYXJndW1lbnRzIGFyZSBkaWZmZXJlbnQuCisgICAgICAg
ICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9wb3Bl
bi5weToKKyAgICAgICAgKFBvcGVuQmFzZS5wb2xsKTogUmVzZXQgc3Rkb3V0IGFuZCBzdGRlcnIg
YWZ0ZXIgY2FsbGluZyB0aGUgY29tcGxldGlvbiBoYW5kbGVyLgorICAgICAgICAqIFNjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvZGVjb3JhdG9yc191bml0
dGVzdC5weToKKyAgICAgICAgKFRlc3RNZW1vaXplLnRlc3RfY29uZmxpY3RpbmdfYXJncyk6Cisg
ICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvX19pbml0
X18ucHk6IEJ1bXAgdmVyc2lvbi4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9jb250cmlidXRvci5weToKKyAgICAgICAgKENvbnRyaWJ1dG9yKTog
TnVtYmVyIG9mIGxpbmVzIG1heSBiZSBzaW5ndWxhci4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9naXQucHk6CisgICAgICAgIChHaXQp
OgorICAgICAgICAoR2l0Ll9faW5pdF9fKTogQ2FsbGVyIG1heSB3aXNoIHRvIHNwZWNpZnkgdGhl
IHBhdHRlcm5zIGZvciBwcm9kdWN0aW9uIGFuZCBkZXZlbG9wbWVudCBicmFuY2hlcy4KKyAgICAg
ICAgKEdpdC5icmFuY2hlcyk6IENhbGwgdGhlIG1vcmUgZ2VuZXJhbCBfYnJhbmNoZXNfZm9yIHRv
IHVuaWZ5IHJlbW90ZSBzdHJpcHBpbmcgbG9naWMuCisgICAgICAgIChHaXQuX2NvbW1pdF9jb3Vu
dCk6IEdpdmVuIGEgcGFyYW1ldGVyIChoYXNoLCBicmFuY2gsIGRpZmZlcmVuY2UgYmV0d2VlbiBk
ZWZhdWx0IGJyYW5jaCBhbmQgY29tbWl0KSwgY29tcHV0ZQorICAgICAgICB0aGUgbnVtYmVyIG9m
IGNvbW1pdHMuCisgICAgICAgIChHaXQuX2JyYW5jaGVzX2Zvcik6IEdpdmVuIGEgaGFzaCwgcmV0
dXJuIGFsbCBicmFuY2hlcyB0aGUgY29tbWl0IGlzIHBhcnQgb2YuCisgICAgICAgIChHaXQuY29t
bWl0KTogQ29uc3RydWN0IGEgY29tbWl0IGdpdmVuIGEgY29tbWl0IGhhc2gsIHJldmlzaW9uLCBp
ZGVudGlmaWVyIG9yIGJyYW5jaC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9sb2NhbC9zY20ucHk6CisgICAgICAgIChTY20pOgorICAgICAgICAo
U2NtLl9faW5pdF9fKTogQ2FsbGVyIG1heSB3aXNoIHRvIHNwZWNpZnkgdGhlIHBhdHRlcm5zIGZv
ciBwcm9kdWN0aW9uIGFuZCBkZXZlbG9wbWVudCBicmFuY2hlcy4KKyAgICAgICAgKFNjbS5jb21t
aXQpOiBDb25zdHJ1Y3QgYSBjb21taXQgZ2l2ZW4gYSBjb21taXQgaGFzaCwgcmV2aXNpb24sIGlk
ZW50aWZpZXIgb3IgYnJhbmNoLgorICAgICAgICAoU2NtLmxvZyk6IExvZyBlcnJvciB0byBhIGNv
bmZpZ3VyZWQgbG9nZ2VyIG9yIHN0ZGVyci4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9zdm4ucHk6CisgICAgICAgIChTdm4pOgorICAg
ICAgICAoU3ZuLl9faW5pdF9fKTogQ2FsbGVyIG1heSB3aXNoIHRvIHNwZWNpZnkgdGhlIHBhdHRl
cm5zIGZvciBwcm9kdWN0aW9uIGFuZCBkZXZlbG9wbWVudCBicmFuY2hlcy4KKyAgICAgICAgKFN2
bi5pbmZvKTogQWxsb3cgaW5mbyBmb3IgYSBzcGVjaWZpYyBjb21taXQgdG8gYmUgcXVlcmllZC4K
KyAgICAgICAgKFN2bi5fY2FjaGVfcGF0aCk6IFBhdGggdG8ganNvbiBjYWNoZSBvZiBicmFuY2gt
Y29tbWl0IG1hcHBpbmcuCisgICAgICAgIChTdm4uX2NhY2hlX3JldmlzaW9ucyk6IFF1ZXJ5IHRo
ZSByZW1vdGUgZm9yIGEgc3BlY2lmaWMgYnJhbmNoIHRvIGdldCB0aGUgbGlzdCBvZiBhbGwgY29t
bWl0cyBvbiB0aGF0IGJyYW5jaC4KKyAgICAgICAgKFN2bi5fY29tbWl0X2NvdW50KTogR2l2ZW4g
YSByZXZpc2lvbiBvciBicmFuY2gsIGNvbXB1dGUgdGhlIG51bWJlciBvZiBjb21taXRzLgorICAg
ICAgICAoU3ZuLmNvbW1pdCk6IENvbnN0cnVjdCBhIGNvbW1pdCBnaXZlbiBhIGNvbW1pdCBoYXNo
LCByZXZpc2lvbiwgaWRlbnRpZmllciBvciBicmFuY2guCisgICAgICAgICogU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwvZ2l0LnB5OgorICAgICAg
ICAoR2l0KTogQWRkIGNvbW1hbmRzIG5lZWRlZCB0byBjb25zdHJ1Y3QgYW4gaWRlbnRpZmllciwg
YWRkIG1vY2sgY29tbWl0cy4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21w
eS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9zdm4ucHk6CisgICAgICAgIChTdm4pOiBBZGQgY29t
bWFuZHMgbmVlZGVkIHRvIGNvbnN0cnVjdCBhbiBpZGVudGlmaWVyLCBhZGQgbW9jayBjb21taXRz
LgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rl
c3QvY29udHJpYnV0b3JfdW5pdHRlc3QucHk6CisgICAgICAgIChUZXN0Q29udHJpYnV0b3IudGVz
dF9zaG9ydF9zdm5fbG9nKToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21w
eS93ZWJraXRzY21weS90ZXN0L2dpdF91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RHaXQpOgor
ICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3Qv
c2NtX3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGVzdFNjbS50ZXN0X3JlbW90ZSk6CisgICAgICAg
IChUZXN0U2NtKToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJr
aXRzY21weS90ZXN0L3N2bl91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RTdm4pOgorCiAyMDIw
LTEwLTA1ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBb
Q29udGFjdCBQaWNrZXIgQVBJXSBJbnRyb2R1Y2UgYmluZGluZ3MgZm9yIHRoZSBDb250YWN0IFBp
Y2tlciBBUEkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJr
aXRjb3JlcHkvX19pbml0X18ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weQkocmV2aXNpb24gMjY3ODky
KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9f
X2luaXRfXy5weQkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBmcm9tIHdlYmtpdGNv
cmVweS50aW1lb3V0IGltcG9ydCBUaW1lb3V0CiBmcm9tIHdlYmtpdGNvcmVweS5zdWJwcm9jZXNz
X3V0aWxzIGltcG9ydCBUaW1lb3V0RXhwaXJlZCwgQ29tcGxldGVkUHJvY2VzcywgcnVuCiBmcm9t
IHdlYmtpdGNvcmVweS5vdXRwdXRfY2FwdHVyZSBpbXBvcnQgTG9nZ2VyQ2FwdHVyZSwgT3V0cHV0
Q2FwdHVyZSwgT3V0cHV0RHVwbGljYXRlCiAKLXZlcnNpb24gPSBWZXJzaW9uKDAsIDQsIDExKQor
dmVyc2lvbiA9IFZlcnNpb24oMCwgNCwgMTIpCiAKIGZyb20gd2Via2l0Y29yZXB5LmF1dG9pbnN0
YWxsIGltcG9ydCBQYWNrYWdlLCBBdXRvSW5zdGFsbAogaWYgc3lzLnZlcnNpb25faW5mbyA+ICgz
LCAwKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRj
b3JlcHkvZGVjb3JhdG9ycy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L2RlY29yYXRvcnMucHkJKHJldmlzaW9uIDI2Nzg5
MikKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkv
ZGVjb3JhdG9ycy5weQkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsOSBAQCBjbGFzcyBNZW1v
aXplKG9iamVjdCk6CiAgICAgICAgICAgICBpZiAnY2FjaGVkJyBub3QgaW4gaW5zcGVjdC5nZXRh
cmdzcGVjKGZ1bmN0aW9uKS5hcmdzOgogICAgICAgICAgICAgICAgIGNhY2hlZCA9IGt3YXJncy5w
b3AoJ2NhY2hlZCcsIGNhY2hlZCkKIAotICAgICAgICAgICAgbGFzdF9jYWxsZWQgPSBzZWxmLl9s
YXN0X2NhbGxlZFtmdW5jdGlvbl0uZ2V0KGFyZ3MsIDApCi0gICAgICAgICAgICBpc19jYWNoZWQg
PSBhcmdzIGluIHNlbGYuX2NhY2hlW2Z1bmN0aW9uXQorICAgICAgICAgICAga2V5YXJncyA9IGFy
Z3MgKyB0dXBsZShzb3J0ZWQoWyhrZXksIHZhbHVlKSBmb3Iga2V5LCB2YWx1ZSBpbiBrd2FyZ3Mu
aXRlbXMoKV0pKQorICAgICAgICAgICAgbGFzdF9jYWxsZWQgPSBzZWxmLl9sYXN0X2NhbGxlZFtm
dW5jdGlvbl0uZ2V0KGtleWFyZ3MsIDApCisgICAgICAgICAgICBpc19jYWNoZWQgPSBrZXlhcmdz
IGluIHNlbGYuX2NhY2hlW2Z1bmN0aW9uXQogICAgICAgICAgICAgaWYgbm90IGNhY2hlZDoKICAg
ICAgICAgICAgICAgICBpc19jYWNoZWQgPSBGYWxzZQogICAgICAgICAgICAgaWYgdGltZW91dCBh
bmQgdGltZW91dCA8IHRpbWUudGltZSgpIC0gbGFzdF9jYWxsZWQ6CkBAIC01Miw4ICs1Myw4IEBA
IGNsYXNzIE1lbW9pemUob2JqZWN0KToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fY2Fj
aGVbZnVuY3Rpb25dLmdldChhcmdzLCBOb25lKQogCiAgICAgICAgICAgICB2YWx1ZSA9IGZ1bmN0
aW9uKCphcmdzLCAqKmt3YXJncykKLSAgICAgICAgICAgIHNlbGYuX2xhc3RfY2FsbGVkW2Z1bmN0
aW9uXVthcmdzXSA9IHRpbWUudGltZSgpCi0gICAgICAgICAgICBzZWxmLl9jYWNoZVtmdW5jdGlv
bl1bYXJnc10gPSB2YWx1ZQorICAgICAgICAgICAgc2VsZi5fbGFzdF9jYWxsZWRbZnVuY3Rpb25d
W2tleWFyZ3NdID0gdGltZS50aW1lKCkKKyAgICAgICAgICAgIHNlbGYuX2NhY2hlW2Z1bmN0aW9u
XVtrZXlhcmdzXSA9IHZhbHVlCiAgICAgICAgICAgICByZXR1cm4gdmFsdWUKIAogICAgICAgICBk
ZWNvcmF0b3IuY2xlYXIgPSBzZWxmLmNsZWFyCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L21vY2tzL3BvcGVuLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3Mv
cG9wZW4ucHkJKHJldmlzaW9uIDI2Nzg5MikKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3MvcG9wZW4ucHkJKHdvcmtpbmcgY29weSkKQEAg
LTg4LDEzICs4OCwxNCBAQCBjbGFzcyBQb3BlbkJhc2Uob2JqZWN0KToKICAgICAgICAgICAgICAg
ICBzdHJpbmdfdXRpbHMuZGVjb2RlKHNlbGYuX2NvbXBsZXRpb24uc3RkZXJyLCB0YXJnZXRfdHlw
ZT1zZWxmLl9zdGRlcnJfdHlwZSkpCiAgICAgICAgICAgICAoc2VsZi5zdGRlcnIgb3Igc3lzLnN0
ZGVycikuZmx1c2goKQogCi0gICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBpcyBub3QgTm9uZSBh
bmQgdGltZS50aW1lKCkgPj0gc2VsZi5fc3RhcnRfdGltZSArIHNlbGYuX2NvbXBsZXRpb24uZWxh
cHNlZDoKLSAgICAgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IHNlbGYuX2NvbXBsZXRpb24ucmV0
dXJuY29kZQogICAgICAgICAgICAgaWYgc2VsZi5zdGRvdXQ6CiAgICAgICAgICAgICAgICAgc2Vs
Zi5zdGRvdXQuc2VlaygwKQogICAgICAgICAgICAgaWYgc2VsZi5zdGRlcnI6CiAgICAgICAgICAg
ICAgICAgc2VsZi5zdGRlcnIuc2VlaygwKQogCisgICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBp
cyBub3QgTm9uZSBhbmQgdGltZS50aW1lKCkgPj0gc2VsZi5fc3RhcnRfdGltZSArIHNlbGYuX2Nv
bXBsZXRpb24uZWxhcHNlZDoKKyAgICAgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IHNlbGYuX2Nv
bXBsZXRpb24ucmV0dXJuY29kZQorCiAgICAgICAgIHJldHVybiBzZWxmLnJldHVybmNvZGUKIAog
ICAgIGRlZiBzZW5kX3NpZ25hbChzZWxmLCBzaWcpOgpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXN0cy9kZWNvcmF0b3JzX3VuaXR0ZXN0
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93
ZWJraXRjb3JlcHkvdGVzdHMvZGVjb3JhdG9yc191bml0dGVzdC5weQkocmV2aXNpb24gMjY3ODky
KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90
ZXN0cy9kZWNvcmF0b3JzX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNCArMTA2
LDQgQEAgY2xhc3MgVGVzdE1lbW9pemUodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKFRlc3RNZW1vaXplLmluY3JlbWVudF93aXRoX2FyZ3MoCiAgICAgICAgICAg
ICB0aW1lb3V0PSd0aW1lb3V0LW5ldycsCiAgICAgICAgICAgICBjYWNoZWQ9J2NhY2hlZC1uZXcn
LAotICAgICAgICApLCAoJ3RpbWVvdXQnLCAnY2FjaGVkJykpCisgICAgICAgICksICgndGltZW91
dC1uZXcnLCAnY2FjaGVkLW5ldycpKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvX19pbml0X18ucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvX19pbml0X18ucHkJKHJldmlz
aW9uIDI2Nzg5MikKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L19faW5pdF9fLnB5CSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIGV4Y2Vw
dCBJbXBvcnRFcnJvcjoKICAgICAgICAgIlBsZWFzZSBpbnN0YWxsIHdlYmtpdGNvcmVweSB3aXRo
IGBwaXAgaW5zdGFsbCB3ZWJraXRjb3JlcHkgLS1leHRyYS1pbmRleC11cmwgPHBhY2thZ2UgaW5k
ZXggVVJMPmAiCiAgICAgKQogCi12ZXJzaW9uID0gVmVyc2lvbigwLCAwLCA3KQordmVyc2lvbiA9
IFZlcnNpb24oMCwgMSwgMCkKIAogZnJvbSB3ZWJraXRzY21weS5jb250cmlidXRvciBpbXBvcnQg
Q29udHJpYnV0b3IKIGZyb20gd2Via2l0c2NtcHkuY29tbWl0IGltcG9ydCBDb21taXQKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2NvbnRyaWJ1
dG9yLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L2NvbnRyaWJ1dG9yLnB5CShyZXZpc2lvbiAyNjc4OTIpCisrKyBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9jb250cmlidXRvci5weQko
d29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQCBpbXBvcnQgcmUKIGNsYXNzIENvbnRyaWJ1
dG9yKG9iamVjdCk6CiAgICAgR0lUX0FVVEhPUl9SRSA9IHJlLmNvbXBpbGUocidBdXRob3I6ICg/
UDxhdXRob3I+LiopIDwoP1A8ZW1haWw+W15AXStAW15AXSspKEAuKik/PicpCiAgICAgQVVUT01B
VEVEX0NIRUNLSU5fUkUgPSByZS5jb21waWxlKHInQXV0aG9yOiAoP1A8YXV0aG9yPi4qKSA8ZGV2
bnVsbD4nKQotICAgIFNWTl9BVVRIT1JfUkUgPSByZS5jb21waWxlKHInclxkKyBcfCAoP1A8ZW1h
aWw+LiopIFx8ICg/UDxkYXRlPi4qKSBcfCBcZCsgbGluZXMnKQorICAgIFNWTl9BVVRIT1JfUkUg
PSByZS5jb21waWxlKHInclxkKyBcfCAoP1A8ZW1haWw+LiopIFx8ICg/UDxkYXRlPi4qKSBcfCBc
ZCsgbGluZXM/JykKICAgICBTVk5fUEFUQ0hfRlJPTV9SRSA9IHJlLmNvbXBpbGUocidQYXRjaCBi
eSAoP1A8YXV0aG9yPi4qKSA8KD9QPGVtYWlsPi4qKT4gb24gXGQrLVxkKy1cZCsnKQogCiAgICAg
YnlfZW1haWwgPSBkaWN0KCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNj
bXB5L3dlYmtpdHNjbXB5L2xvY2FsL2dpdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9naXQucHkJKHJldmlzaW9u
IDI2Nzg5MikKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNj
bXB5L2xvY2FsL2dpdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjEsMTkgKzIxLDI0IEBACiAjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAKIAoraW1wb3J0IHJlCisKIGZyb20gd2Via2l0Y29yZXB5IGltcG9ydCBydW4s
IGRlY29yYXRvcnMsIFRpbWVvdXRFeHBpcmVkCiBmcm9tIHdlYmtpdHNjbXB5LmxvY2FsIGltcG9y
dCBTY20KK2Zyb20gd2Via2l0c2NtcHkgaW1wb3J0IENvbW1pdCwgQ29udHJpYnV0b3IKIAogCiBj
bGFzcyBHaXQoU2NtKToKICAgICBleGVjdXRhYmxlID0gJy91c3IvYmluL2dpdCcKKyAgICBHSVRf
Q09NTUlUID0gcmUuY29tcGlsZShyJ2NvbW1pdCAoP1A8aGFzaD5bMC05YS1mXSspJykKKyAgICBH
SVRfU1ZOX1JFVklTSU9OID0gcmUuY29tcGlsZShyJ2dpdC1zdm4taWQ6IFxTKzpcL1wvLitAKD9Q
PHJldmlzaW9uPlxkKykgListListListLisnKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVm
IGlzX2NoZWNrb3V0KGNscywgcGF0aCk6CiAgICAgICAgIHJldHVybiBydW4oW2Nscy5leGVjdXRh
YmxlLCAncmV2LXBhcnNlJywgJy0tc2hvdy10b3BsZXZlbCddLCBjd2Q9cGF0aCwgY2FwdHVyZV9v
dXRwdXQ9VHJ1ZSkucmV0dXJuY29kZSA9PSAwCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0
aCk6Ci0gICAgICAgIHN1cGVyKEdpdCwgc2VsZikuX19pbml0X18ocGF0aCkKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgcGF0aCwgZGV2X2JyYW5jaGVzPU5vbmUsIHByb2RfYnJhbmNoZXM9Tm9uZSk6
CisgICAgICAgIHN1cGVyKEdpdCwgc2VsZikuX19pbml0X18ocGF0aCwgZGV2X2JyYW5jaGVzPWRl
dl9icmFuY2hlcywgcHJvZF9icmFuY2hlcz1wcm9kX2JyYW5jaGVzKQogICAgICAgICBpZiBub3Qg
c2VsZi5yb290X3BhdGg6CiAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdQcm92aWRlZCBwYXRo
IHt9IGlzIG5vdCBhIGdpdCByZXBvc2l0b3J5Jy5mb3JtYXQocGF0aCkpCiAKQEAgLTEwMCwxMSAr
MTA1LDcgQEAgY2xhc3MgR2l0KFNjbSk6CiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgYnJhbmNo
ZXMoc2VsZik6Ci0gICAgICAgIGJyYW5jaCA9IHJ1bihbc2VsZi5leGVjdXRhYmxlLCAnYnJhbmNo
JywgJy1hJ10sIGN3ZD1zZWxmLnJvb3RfcGF0aCwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgZW5jb2Rp
bmc9J3V0Zi04JykKLSAgICAgICAgaWYgYnJhbmNoLnJldHVybmNvZGU6Ci0gICAgICAgICAgICBy
YWlzZSBzZWxmLkV4Y2VwdGlvbignRmFpbGVkIHRvIHJldHJpZXZlIGJyYW5jaCBsaXN0IGZvciB7
fScuZm9ybWF0KHNlbGYucm9vdF9wYXRoKSkKLSAgICAgICAgcmVzdWx0ID0gW2JyYW5jaC5sc3Ry
aXAoJyAqJykgZm9yIGJyYW5jaCBpbiBmaWx0ZXIobGFtYmRhIGJyYW5jaDogJy0+JyBub3QgaW4g
YnJhbmNoLCBicmFuY2guc3Rkb3V0LnNwbGl0bGluZXMoKSldCi0gICAgICAgIHJldHVybiBbJy8n
LmpvaW4oYnJhbmNoLnNwbGl0KCcvJylbMjpdKSBpZiBicmFuY2guc3RhcnRzd2l0aCgncmVtb3Rl
cy9vcmlnaW4vJykgZWxzZSBicmFuY2ggZm9yIGJyYW5jaCBpbiByZXN1bHRdCisgICAgICAgIHJl
dHVybiBzZWxmLl9icmFuY2hlc19mb3IoKQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIHRhZ3Mo
c2VsZik6CkBAIC0xMTgsMyArMTE5LDE0OSBAQCBjbGFzcyBHaXQoU2NtKToKICAgICAgICAgaWYg
cmVzdWx0LnJldHVybmNvZGU6CiAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignRmFp
bGVkIHRvIHJldHJpZXZlIHJlbW90ZSBmb3Ige30nLmZvcm1hdChzZWxmLnJvb3RfcGF0aCkpCiAg
ICAgICAgIHJldHVybiByZXN1bHQuc3Rkb3V0LnJzdHJpcCgpCisKKyAgICBkZWYgX2NvbW1pdF9j
b3VudChzZWxmLCBuYXRpdmVfcGFyYW1ldGVyKToKKyAgICAgICAgcmV2aXNpb25fY291bnQgPSBy
dW4oCisgICAgICAgICAgICBbc2VsZi5leGVjdXRhYmxlLCAncmV2LWxpc3QnLCAnLS1jb3VudCcs
ICctLW5vLW1lcmdlcycsIG5hdGl2ZV9wYXJhbWV0ZXJdLAorICAgICAgICAgICAgY3dkPXNlbGYu
cm9vdF9wYXRoLCBjYXB0dXJlX291dHB1dD1UcnVlLCBlbmNvZGluZz0ndXRmLTgnLAorICAgICAg
ICApCisgICAgICAgIGlmIHJldmlzaW9uX2NvdW50LnJldHVybmNvZGU6CisgICAgICAgICAgICBy
YWlzZSBzZWxmLkV4Y2VwdGlvbignRmFpbGVkIHRvIHJldHJpZXZlIHJldmlzaW9uIGNvdW50IGZv
ciB7fScuZm9ybWF0KG5hdGl2ZV9wYXJhbWV0ZXIpKQorICAgICAgICByZXR1cm4gaW50KHJldmlz
aW9uX2NvdW50LnN0ZG91dCkKKworICAgIGRlZiBfYnJhbmNoZXNfZm9yKHNlbGYsIGhhc2g9Tm9u
ZSk6CisgICAgICAgIGJyYW5jaCA9IHJ1bigKKyAgICAgICAgICAgIFtzZWxmLmV4ZWN1dGFibGUs
ICdicmFuY2gnLCAnLWEnXSArIChbJy0tY29udGFpbnMnLCBoYXNoXSBpZiBoYXNoIGVsc2UgW10p
LAorICAgICAgICAgICAgY3dkPXNlbGYucm9vdF9wYXRoLAorICAgICAgICAgICAgY2FwdHVyZV9v
dXRwdXQ9VHJ1ZSwKKyAgICAgICAgICAgIGVuY29kaW5nPSd1dGYtOCcsCisgICAgICAgICkKKyAg
ICAgICAgaWYgYnJhbmNoLnJldHVybmNvZGU6CisgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2Vw
dGlvbignRmFpbGVkIHRvIHJldHJpZXZlIGJyYW5jaCBsaXN0IGZvciB7fScuZm9ybWF0KHNlbGYu
cm9vdF9wYXRoKSkKKyAgICAgICAgcmVzdWx0ID0gW2JyYW5jaC5sc3RyaXAoJyAqJykgZm9yIGJy
YW5jaCBpbiBmaWx0ZXIobGFtYmRhIGJyYW5jaDogJy0+JyBub3QgaW4gYnJhbmNoLCBicmFuY2gu
c3Rkb3V0LnNwbGl0bGluZXMoKSldCisgICAgICAgIHJldHVybiBzb3J0ZWQoc2V0KFsnLycuam9p
bihicmFuY2guc3BsaXQoJy8nKVsyOl0pIGlmIGJyYW5jaC5zdGFydHN3aXRoKCdyZW1vdGVzL29y
aWdpbi8nKSBlbHNlIGJyYW5jaCBmb3IgYnJhbmNoIGluIHJlc3VsdF0pKQorCisgICAgZGVmIGNv
bW1pdChzZWxmLCBoYXNoPU5vbmUsIHJldmlzaW9uPU5vbmUsIGlkZW50aWZpZXI9Tm9uZSwgYnJh
bmNoPU5vbmUpOgorICAgICAgICBpZiByZXZpc2lvbiBhbmQgbm90IHNlbGYuaXNfc3ZuOgorICAg
ICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oJ1RoaXMgZ2l0IGNoZWNrb3V0IGRvZXMgbm90
IHN1cHBvcnQgU1ZOIHJldmlzaW9ucycpCisgICAgICAgIGVsaWYgcmV2aXNpb246CisgICAgICAg
ICAgICByZXZpc2lvbiA9IENvbW1pdC5fcGFyc2VfcmV2aXNpb24ocmV2aXNpb24sIGRvX2Fzc2Vy
dD1UcnVlKQorICAgICAgICAgICAgcmV2aXNpb25fbG9nID0gcnVuKAorICAgICAgICAgICAgICAg
IFtzZWxmLmV4ZWN1dGFibGUsICdzdm4nLCAnZmluZC1yZXYnLCAncnt9Jy5mb3JtYXQocmV2aXNp
b24pXSwKKyAgICAgICAgICAgICAgICBjd2Q9c2VsZi5yb290X3BhdGgsIGNhcHR1cmVfb3V0cHV0
PVRydWUsIGVuY29kaW5nPSd1dGYtOCcsCisgICAgICAgICAgICAgICAgdGltZW91dD0zLAorICAg
ICAgICAgICAgKQorICAgICAgICAgICAgaWYgcmV2aXNpb25fbG9nLnJldHVybmNvZGU6CisgICAg
ICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oIkZhaWxlZCB0byByZXRyaWV2ZSBjb21t
aXQgaW5mb3JtYXRpb24gZm9yICdye30nIi5mb3JtYXQocmV2aXNpb24pKQorICAgICAgICAgICAg
aGFzaCA9IHJldmlzaW9uX2xvZy5zdGRvdXQucnN0cmlwKCkKKyAgICAgICAgICAgIGlmIG5vdCBo
YXNoOgorICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0aW9uKCJGYWlsZWQgdG8gZmlu
ZCAncnt9JyIuZm9ybWF0KHJldmlzaW9uKSkKKworICAgICAgICBkZWZhdWx0X2JyYW5jaCA9IHNl
bGYuZGVmYXVsdF9icmFuY2gKKyAgICAgICAgcGFyc2VkX2JyYW5jaF9wb2ludCA9IE5vbmUKKwor
ICAgICAgICBpZiBpZGVudGlmaWVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgcmV2aXNp
b246CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ2Fubm90IGRlZmluZSBib3Ro
IHJldmlzaW9uIGFuZCBpZGVudGlmaWVyJykKKyAgICAgICAgICAgIGlmIGhhc2g6CisgICAgICAg
ICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ2Fubm90IGRlZmluZSBib3RoIGhhc2ggYW5kIGlk
ZW50aWZpZXInKQorCisgICAgICAgICAgICBwYXJzZWRfYnJhbmNoX3BvaW50LCBpZGVudGlmaWVy
LCBwYXJzZWRfYnJhbmNoID0gQ29tbWl0Ll9wYXJzZV9pZGVudGlmaWVyKGlkZW50aWZpZXIsIGRv
X2Fzc2VydD1UcnVlKQorICAgICAgICAgICAgaWYgcGFyc2VkX2JyYW5jaDoKKyAgICAgICAgICAg
ICAgICBpZiBicmFuY2ggYW5kIGJyYW5jaCAhPSBwYXJzZWRfYnJhbmNoOgorICAgICAgICAgICAg
ICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgIkNhbGxl
ciBwYXNzZWQgYm90aCAnYnJhbmNoJyBhbmQgJ2lkZW50aWZpZXInLCBidXQgc3BlY2lmaWVkIGRp
ZmZlcmVudCBicmFuY2hlcyAoe30gYW5kIHt9KSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyYW5jaCwgcGFyc2VkX2JyYW5jaCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICksCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBicmFuY2ggPSBwYXJz
ZWRfYnJhbmNoCisKKyAgICAgICAgICAgIGJhc2VsaW5lID0gYnJhbmNoIG9yICdIRUFEJworICAg
ICAgICAgICAgaXNfZGVmYXVsdCA9IGJhc2VsaW5lID09IGRlZmF1bHRfYnJhbmNoCisgICAgICAg
ICAgICBpZiBiYXNlbGluZSA9PSAnSEVBRCc6CisgICAgICAgICAgICAgICAgaXNfZGVmYXVsdCA9
IGRlZmF1bHRfYnJhbmNoIGluIHNlbGYuX2JyYW5jaGVzX2ZvcihiYXNlbGluZSkKKworICAgICAg
ICAgICAgaWYgaXNfZGVmYXVsdCBhbmQgcGFyc2VkX2JyYW5jaF9wb2ludDoKKyAgICAgICAgICAg
ICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignQ2Fubm90IHByb3ZpZGUgYSBicmFuY2ggcG9pbnQg
Zm9yIGEgY29tbWl0IG9uIHRoZSBkZWZhdWx0IGJyYW5jaCcpCisKKyAgICAgICAgICAgIGJhc2Vf
Y291bnQgPSBzZWxmLl9jb21taXRfY291bnQoYmFzZWxpbmUgaWYgaXNfZGVmYXVsdCBlbHNlICd7
fS4ue30nLmZvcm1hdChkZWZhdWx0X2JyYW5jaCwgYmFzZWxpbmUpKQorCisgICAgICAgICAgICBp
ZiBpZGVudGlmaWVyID4gYmFzZV9jb3VudDoKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4
Y2VwdGlvbignSWRlbnRpZmllciB7fSBjYW5ub3QgYmUgZm91bmQgb24gdGhlIHNwZWNpZmllZCBi
cmFuY2ggaW4gdGhlIGN1cnJlbnQgY2hlY2tvdXQnLmZvcm1hdChpZGVudGlmaWVyKSkKKyAgICAg
ICAgICAgIGxvZyA9IHJ1bigKKyAgICAgICAgICAgICAgICBbc2VsZi5leGVjdXRhYmxlLCAnbG9n
JywgJ3t9fnt9Jy5mb3JtYXQoYnJhbmNoIG9yICdIRUFEJywgYmFzZV9jb3VudCAtIGlkZW50aWZp
ZXIpLCAnLTEnXSwKKyAgICAgICAgICAgICAgICBjd2Q9c2VsZi5yb290X3BhdGgsCisgICAgICAg
ICAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICBlbmNvZGluZz0n
dXRmLTgnLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgaWYgbG9nLnJldHVybmNvZGU6Cisg
ICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oIkZhaWxlZCB0byByZXRyaWV2ZSBj
b21taXQgaW5mb3JtYXRpb24gZm9yICdpe31Ae30nIi5mb3JtYXQoaWRlbnRpZmllciwgYnJhbmNo
IG9yICdIRUFEJykpCisKKyAgICAgICAgICAgICMgTmVnYXRpdmUgaWRlbnRpZmllcnMgYXJlIGFj
dHVhbGx5IGNvbW1pdHMgb24gdGhlIGRlZmF1bHQgYnJhbmNoLCB3ZSB3aWxsIG5lZWQgdG8gcmUt
Y29tcHV0ZSB0aGUgaWRlbnRpZmllcgorICAgICAgICAgICAgaWYgaWRlbnRpZmllciA8IDAgYW5k
IGlzX2RlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oJ0lsbGVn
YWwgbmVnYXRpdmUgaWRlbnRpZmllciBvbiB0aGUgZGVmYXVsdCBicmFuY2gnKQorICAgICAgICAg
ICAgaWYgaWRlbnRpZmllciA8IDA6CisgICAgICAgICAgICAgICAgaWRlbnRpZmllciA9IE5vbmUK
KworICAgICAgICBlbGlmIGJyYW5jaDoKKyAgICAgICAgICAgIGlmIGhhc2g6CisgICAgICAgICAg
ICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ2Fubm90IGRlZmluZSBib3RoIGJyYW5jaCBhbmQgaGFz
aCcpCisgICAgICAgICAgICBsb2cgPSBydW4oW3NlbGYuZXhlY3V0YWJsZSwgJ2xvZycsIGJyYW5j
aCwgJy0xJ10sIGN3ZD1zZWxmLnJvb3RfcGF0aCwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgZW5jb2Rp
bmc9J3V0Zi04JykKKyAgICAgICAgICAgIGlmIGxvZy5yZXR1cm5jb2RlOgorICAgICAgICAgICAg
ICAgIHJhaXNlIHNlbGYuRXhjZXB0aW9uKCJGYWlsZWQgdG8gcmV0cmlldmUgY29tbWl0IGluZm9y
bWF0aW9uIGZvciAne30nIi5mb3JtYXQoYnJhbmNoKSkKKworICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgaGFzaCA9IENvbW1pdC5fcGFyc2VfaGFzaChoYXNoLCBkb19hc3NlcnQ9VHJ1ZSkKKyAg
ICAgICAgICAgIGxvZyA9IHJ1bihbc2VsZi5leGVjdXRhYmxlLCAnbG9nJywgaGFzaCBvciAnSEVB
RCcsICctMSddLCBjd2Q9c2VsZi5yb290X3BhdGgsIGNhcHR1cmVfb3V0cHV0PVRydWUsIGVuY29k
aW5nPSd1dGYtOCcpCisgICAgICAgICAgICBpZiBsb2cucmV0dXJuY29kZToKKyAgICAgICAgICAg
ICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbigiRmFpbGVkIHRvIHJldHJpZXZlIGNvbW1pdCBpbmZv
cm1hdGlvbiBmb3IgJ3t9JyIuZm9ybWF0KGhhc2ggb3IgJ0hFQUQnKSkKKworICAgICAgICBtYXRj
aCA9IHNlbGYuR0lUX0NPTU1JVC5tYXRjaChsb2cuc3Rkb3V0LnNwbGl0bGluZXMoKVswXSkKKyAg
ICAgICAgaWYgbm90IG1hdGNoOgorICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oJ0lu
dmFsaWQgY29tbWl0IGhhc2ggaW4gZ2l0IGxvZycpCisgICAgICAgIGhhc2ggPSBtYXRjaC5ncm91
cCgnaGFzaCcpCisKKyAgICAgICAgYnJhbmNoX2NhbmRpZGF0ZXMgPSBzZWxmLl9icmFuY2hlc19m
b3IoaGFzaCkKKyAgICAgICAgaWYgbGVuKGJyYW5jaF9jYW5kaWRhdGVzKSA9PSAxOgorICAgICAg
ICAgICAgYnJhbmNoID0gYnJhbmNoX2NhbmRpZGF0ZXNbMF0KKyAgICAgICAgZWxpZiBkZWZhdWx0
X2JyYW5jaCBpbiBicmFuY2hfY2FuZGlkYXRlczoKKyAgICAgICAgICAgIGJyYW5jaCA9IGRlZmF1
bHRfYnJhbmNoCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFdlIGRvbid0IGhhdmUgZW5v
dWdoIGluZm9ybWF0aW9uIHRvIGRldGVybWluZSBhIGJyYW5jaC4gV2Ugd2lsbCBhdHRlbXB0IHRv
IGZpcnN0IHVzZSB0aGUgYnJhbmNoIHNwZWNpZmllZAorICAgICAgICAgICAgIyBieSB0aGUgY2Fs
bGVyLCB0aGVuIHRoZSBvbmUgdGhlbiBjaGVja291dCBpcyBjdXJyZW50bHkgb24uIElmIGJvdGgg
dGhvc2UgZmFpbCwgd2Ugd2lsbCBwaWNrIG9uZSBvZiB0aGUKKyAgICAgICAgICAgICMgb3RoZXIg
YnJhbmNoZXMuIFdlIHByZWZlciBwcm9kdWN0aW9uIGJyYW5jaGVzIGZpcnN0LCB0aGVuIGFueSBi
cmFuY2ggd2hpY2ggaXNuJ3QgZXhwbGljaXRseSBsYWJlbGVkIGEKKyAgICAgICAgICAgICMgZGV2
IGJyYW5jaC4gV2UgdGhlbiBzb3J0IHRoZSBsaXN0IG9mIGNhbmRpZGF0ZSBicmFuY2hlcyBhbmQg
cGljayB0aGUgc21hbGxlc3QKKyAgICAgICAgICAgIGZpbHRlcmVkX2NhbmRpZGF0ZXMgPSBbY2Fu
ZGlkYXRlIGZvciBjYW5kaWRhdGUgaW4gYnJhbmNoX2NhbmRpZGF0ZXMgaWYgc2VsZi5wcm9kX2Jy
YW5jaGVzLm1hdGNoKGNhbmRpZGF0ZSldCisgICAgICAgICAgICBpZiBub3QgZmlsdGVyZWRfY2Fu
ZGlkYXRlczoKKyAgICAgICAgICAgICAgICBmaWx0ZXJlZF9jYW5kaWRhdGVzID0gW2NhbmRpZGF0
ZSBmb3IgY2FuZGlkYXRlIGluIGJyYW5jaF9jYW5kaWRhdGVzIGlmIG5vdCBzZWxmLmRldl9icmFu
Y2hlcy5tYXRjaChjYW5kaWRhdGUpXQorICAgICAgICAgICAgaWYgbm90IGZpbHRlcmVkX2NhbmRp
ZGF0ZXM6CisgICAgICAgICAgICAgICAgZmlsdGVyZWRfY2FuZGlkYXRlcyA9IGJyYW5jaF9jYW5k
aWRhdGVzCisgICAgICAgICAgICBicmFuY2ggPSBzb3J0ZWQoZmlsdGVyZWRfY2FuZGlkYXRlcylb
MF0KKworICAgICAgICBpZiBub3QgaWRlbnRpZmllcjoKKyAgICAgICAgICAgIGlkZW50aWZpZXIg
PSBzZWxmLl9jb21taXRfY291bnQoaGFzaCBpZiBicmFuY2ggPT0gZGVmYXVsdF9icmFuY2ggZWxz
ZSAne30uLnt9Jy5mb3JtYXQoZGVmYXVsdF9icmFuY2gsIGhhc2gpKQorICAgICAgICBicmFuY2hf
cG9pbnQgPSBOb25lIGlmIGJyYW5jaCA9PSBkZWZhdWx0X2JyYW5jaCBlbHNlIHNlbGYuX2NvbW1p
dF9jb3VudChoYXNoKQorICAgICAgICBpZiBicmFuY2hfcG9pbnQgYW5kIHBhcnNlZF9icmFuY2hf
cG9pbnQgYW5kIGJyYW5jaF9wb2ludCAhPSBwYXJzZWRfYnJhbmNoX3BvaW50OgorICAgICAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcigiUHJvdmlkZWQgJ2JyYW5jaF9wb2ludCcgZG9lcyBub3QgbWF0
Y2ggYnJhbmNoIHBvaW50IG9mIHNwZWNpZmllZCBicmFuY2giKQorCisgICAgICAgIGlmIHNlbGYu
aXNfc3ZuOgorICAgICAgICAgICAgbWF0Y2ggPSBzZWxmLkdJVF9TVk5fUkVWSVNJT04ubWF0Y2go
bG9nLnN0ZG91dC5zcGxpdGxpbmVzKClbLTFdLmxzdHJpcCgpKQorICAgICAgICAgICAgcmV2aXNp
b24gPSBpbnQobWF0Y2guZ3JvdXAoJ3JldmlzaW9uJykpIGlmIG1hdGNoIGVsc2UgTm9uZQorCisg
ICAgICAgIGNvbW1pdF90aW1lID0gcnVuKAorICAgICAgICAgICAgW3NlbGYuZXhlY3V0YWJsZSwg
J3Nob3cnLCAnLXMnLCAnLS1mb3JtYXQ9JWN0JywgaGFzaF0sCisgICAgICAgICAgICBjd2Q9c2Vs
Zi5yb290X3BhdGgsIGNhcHR1cmVfb3V0cHV0PVRydWUsIGVuY29kaW5nPSd1dGYtOCcsCisgICAg
ICAgICkKKyAgICAgICAgaWYgY29tbWl0X3RpbWUucmV0dXJuY29kZToKKyAgICAgICAgICAgIHJh
aXNlIHNlbGYuRXhjZXB0aW9uKCdGYWlsZWQgdG8gcmV0cmlldmUgY29tbWl0IHRpbWUgZm9yIHt9
Jy5mb3JtYXQoaGFzaCkpCisKKyAgICAgICAgcmV0dXJuIENvbW1pdCgKKyAgICAgICAgICAgIGhh
c2g9aGFzaCwKKyAgICAgICAgICAgIHJldmlzaW9uPXJldmlzaW9uLAorICAgICAgICAgICAgaWRl
bnRpZmllcj1pZGVudGlmaWVyLAorICAgICAgICAgICAgYnJhbmNoX3BvaW50PWJyYW5jaF9wb2lu
dCwKKyAgICAgICAgICAgIGJyYW5jaD1icmFuY2gsCisgICAgICAgICAgICB0aW1lc3RhbXA9aW50
KGNvbW1pdF90aW1lLnN0ZG91dC5sc3RyaXAoKSksCisgICAgICAgICAgICBhdXRob3I9Q29udHJp
YnV0b3IuZnJvbV9zY21fbG9nKGxvZy5zdGRvdXQuc3BsaXRsaW5lcygpWzFdKSwKKyAgICAgICAg
ICAgIG1lc3NhZ2U9J1xuJy5qb2luKGxpbmVbNDpdIGZvciBsaW5lIGluIGxvZy5zdGRvdXQuc3Bs
aXRsaW5lcygpWzQ6XSksCisgICAgICAgICkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL3NjbS5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9zY20ucHkJ
KHJldmlzaW9uIDI2Nzg5MikKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L2xvY2FsL3NjbS5weQkod29ya2luZyBjb3B5KQpAQCAtMjEsMTAgKzIxLDIz
IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAKIAoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCByZQoraW1wb3J0
IHN5cworCitmcm9tIGxvZ2dpbmcgaW1wb3J0IE51bGxIYW5kbGVyCitmcm9tIHdlYmtpdHNjbXB5
IGltcG9ydCBsb2cKKworCiBjbGFzcyBTY20ob2JqZWN0KToKICAgICBjbGFzcyBFeGNlcHRpb24o
UnVudGltZUVycm9yKToKICAgICAgICAgcGFzcwogCisgICAgIyBQcm9qZWN0cyBjYW4gZGVmaW5l
IGZvciB0aGVtc2VsdmVzIHdoYXQgY29uc3RpdHV0ZXMgYSBkZXZlbG9wbWVudCB2cyBhIHByb2R1
Y3Rpb24gYnJhbmNoLAorICAgICMgdGhlIGZvbGxvd2luZyBpZGlvbXMgc2VlbSBjb21tb24gZW5v
dWdoIHRvIGJlIHNoYXJlZC4KKyAgICBERVZfQlJBTkNIRVMgPSByZS5jb21waWxlKHInLipbKGVu
ZykoZGV2KShidWcpXS8uKycpCisgICAgUFJPRF9CUkFOQ0hFUyA9IHJlLmNvbXBpbGUocidcUyst
W1xkK1wuXSstYnJhbmNoJykKKwogICAgIGV4ZWN1dGFibGUgPSBOb25lCiAKICAgICBAY2xhc3Nt
ZXRob2QKQEAgLTM3LDExICs1MCwxNCBAQCBjbGFzcyBTY20ob2JqZWN0KToKICAgICAgICAgICAg
IHJldHVybiBsb2NhbC5Tdm4ocGF0aCkKICAgICAgICAgcmFpc2UgT1NFcnJvcigne30gaXMgbm90
IGEga25vd24gU0NNIHR5cGUnKQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoLCBkZXZfYnJhbmNoZXM9Tm9uZSwgcHJvZF9icmFuY2hl
cz1Ob25lKToKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocGF0aCwgc3RyKToKICAgICAgICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoJycpCiAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKIAorICAg
ICAgICBzZWxmLmRldl9icmFuY2hlcyA9IGRldl9icmFuY2hlcyBvciBzZWxmLkRFVl9CUkFOQ0hF
UworICAgICAgICBzZWxmLnByb2RfYnJhbmNoZXMgPSBwcm9kX2JyYW5jaGVzIG9yIHNlbGYuUFJP
RF9CUkFOQ0hFUworCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGlzX3N2bihzZWxmKToKICAgICAg
ICAgcmV0dXJuIEZhbHNlCkBAIC03MiwzICs4OCwxMyBAQCBjbGFzcyBTY20ob2JqZWN0KToKIAog
ICAgIGRlZiByZW1vdGUoc2VsZiwgbmFtZT1Ob25lKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVt
ZW50ZWRFcnJvcigpCisKKyAgICBkZWYgY29tbWl0KHNlbGYsIGhhc2g9Tm9uZSwgcmV2aXNpb249
Tm9uZSwgaWRlbnRpZmllcj1Ob25lLCBicmFuY2g9Tm9uZSk6CisgICAgICAgIHJhaXNlIE5vdElt
cGxlbWVudGVkRXJyb3IoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGxvZyhjbHMsIG1l
c3NhZ2UsIGxldmVsPWxvZ2dpbmcuV0FSTklORyk6CisgICAgICAgIGlmIG5vdCBsb2cuaGFuZGxl
cnMgb3IgYWxsKFtpc2luc3RhbmNlKGhhbmRsZSwgTnVsbEhhbmRsZXIpIGZvciBoYW5kbGUgaW4g
bG9nLmhhbmRsZXJzXSk6CisgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKG1lc3NhZ2UgKyAn
XG4nKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9nLmxvZyhsZXZlbCwgbWVzc2FnZSkK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xv
Y2FsL3N2bi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9sb2NhbC9zdm4ucHkJKHJldmlzaW9uIDI2Nzg5MikKKysrIFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL3N2bi5weQko
d29ya2luZyBjb3B5KQpAQCAtMjAsMjYgKzIwLDQ0IEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAKK2ltcG9ydCBiaXNlY3QKK2ltcG9ydCBjYWxlbmRhcgoraW1wb3J0
IGpzb24KK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5
cworCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZWRlbHRhCitmcm9tIGRhdGV1
dGlsIGltcG9ydCB0egogCiBmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgcnVuLCBkZWNvcmF0b3Jz
CiBmcm9tIHdlYmtpdHNjbXB5LmxvY2FsLnNjbSBpbXBvcnQgU2NtCitmcm9tIHdlYmtpdHNjbXB5
IGltcG9ydCBDb21taXQsIENvbnRyaWJ1dG9yLCBWZXJzaW9uCiAKIAogY2xhc3MgU3ZuKFNjbSk6
CiAgICAgZXhlY3V0YWJsZSA9ICcvdXNyL2xvY2FsL2Jpbi9zdm4nCisgICAgTE9HX1JFID0gcmUu
Y29tcGlsZShyJ3IoP1A8cmV2aXNpb24+XGQrKSBcfCAoP1A8ZW1haWw+LiopIFx8ICg/UDxkYXRl
Pi4qKScpCisgICAgQ0FDSEVfVkVSU0lPTiA9IFZlcnNpb24oMSkKIAogICAgIEBjbGFzc21ldGhv
ZAogICAgIGRlZiBpc19jaGVja291dChjbHMsIHBhdGgpOgogICAgICAgICByZXR1cm4gcnVuKFtj
bHMuZXhlY3V0YWJsZSwgJ2luZm8nXSwgY3dkPXBhdGgsIGNhcHR1cmVfb3V0cHV0PVRydWUpLnJl
dHVybmNvZGUgPT0gMAogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgotICAgICAgICBz
dXBlcihTdm4sIHNlbGYpLl9faW5pdF9fKHBhdGgpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh
dGgsIGRldl9icmFuY2hlcz1Ob25lLCBwcm9kX2JyYW5jaGVzPU5vbmUpOgorICAgICAgICBzdXBl
cihTdm4sIHNlbGYpLl9faW5pdF9fKHBhdGgsIGRldl9icmFuY2hlcz1kZXZfYnJhbmNoZXMsIHBy
b2RfYnJhbmNoZXM9cHJvZF9icmFuY2hlcykKICAgICAgICAgaWYgbm90IHNlbGYucm9vdF9wYXRo
OgogICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignUHJvdmlkZWQgcGF0aCB7fSBpcyBub3QgYSBz
dm4gcmVwb3NpdG9yeScuZm9ybWF0KHBhdGgpKQorICAgICAgICBzZWxmLl9tZXRhZGF0YV9jYWNo
ZSA9IGRpY3QoKQogCiAgICAgQGRlY29yYXRvcnMuTWVtb2l6ZShjYWNoZWQ9RmFsc2UpCi0gICAg
ZGVmIGluZm8oc2VsZik6Ci0gICAgICAgIGluZm9fcmVzdWx0ID0gcnVuKFtzZWxmLmV4ZWN1dGFi
bGUsICdpbmZvJ10sIGN3ZD1zZWxmLnBhdGgsIGNhcHR1cmVfb3V0cHV0PVRydWUsIGVuY29kaW5n
PSd1dGYtOCcpCisgICAgZGVmIGluZm8oc2VsZiwgYnJhbmNoPU5vbmUsIHJldmlzaW9uPU5vbmUp
OgorICAgICAgICByZXZpc2lvbiA9IENvbW1pdC5fcGFyc2VfcmV2aXNpb24ocmV2aXNpb24pCisg
ICAgICAgIGFkZGl0aW9uYWxfYXJncyA9IFsnXi9icmFuY2hlcy97fScuZm9ybWF0KGJyYW5jaCld
IGlmIGJyYW5jaCBhbmQgYnJhbmNoICE9IHNlbGYuZGVmYXVsdF9icmFuY2ggZWxzZSBbXQorICAg
ICAgICBhZGRpdGlvbmFsX2FyZ3MgKz0gWyctcicsIHN0cihyZXZpc2lvbildIGlmIHJldmlzaW9u
IGVsc2UgW10KKworICAgICAgICBpbmZvX3Jlc3VsdCA9IHJ1bihbc2VsZi5leGVjdXRhYmxlLCAn
aW5mbyddICsgYWRkaXRpb25hbF9hcmdzLCBjd2Q9c2VsZi5wYXRoLCBjYXB0dXJlX291dHB1dD1U
cnVlLCBlbmNvZGluZz0ndXRmLTgnKQogICAgICAgICBpZiBpbmZvX3Jlc3VsdC5yZXR1cm5jb2Rl
OgogICAgICAgICAgICAgcmV0dXJuIHt9CiAKQEAgLTgyLDUgKzEwMCwyMTIgQEAgY2xhc3MgU3Zu
KFNjbSk6CiAgICAgZGVmIHRhZ3Moc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLmxpc3QoJ3Rh
Z3MnKQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIF9jYWNoZV9wYXRoKHNlbGYpOgorICAgICAg
ICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYucm9vdF9wYXRoLCAnLnN2bicsICd3ZWJraXRzY21w
eS1jYWNoZS5qc29uJykKKworICAgIGRlZiBfY2FjaGVfcmV2aXNpb25zKHNlbGYsIGJyYW5jaD1O
b25lKToKKyAgICAgICAgaWYgbm90IHNlbGYuX21ldGFkYXRhX2NhY2hlIGFuZCBvcy5wYXRoLmV4
aXN0cyhzZWxmLl9jYWNoZV9wYXRoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAg
ICB3aXRoIG9wZW4oc2VsZi5fY2FjaGVfcGF0aCkgYXMgZmlsZToKKyAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fbWV0YWRhdGFfY2FjaGUgPSBqc29uLmxvYWQoZmlsZSkKKyAgICAgICAgICAgIGV4
Y2VwdCBCYXNlRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgIHNlbGYuX21ldGFkYXRhX2NhY2hl
ID0ge30KKyAgICAgICAgICAgICAgICBzZWxmLl9tZXRhZGF0YV9jYWNoZVsndmVyc2lvbiddID0g
c3RyKHNlbGYuQ0FDSEVfVkVSU0lPTikKKworICAgICAgICBicmFuY2ggPSBicmFuY2ggb3Igc2Vs
Zi5kZWZhdWx0X2JyYW5jaAorICAgICAgICBpc19kZWZhdWx0X2JyYW5jaCA9IGJyYW5jaCA9PSBz
ZWxmLmRlZmF1bHRfYnJhbmNoCisgICAgICAgIGlmIGJyYW5jaCBub3QgaW4gc2VsZi5fbWV0YWRh
dGFfY2FjaGU6CisgICAgICAgICAgICBzZWxmLl9tZXRhZGF0YV9jYWNoZVticmFuY2hdID0gWzBd
IGlmIGlzX2RlZmF1bHRfYnJhbmNoIGVsc2UgW10KKyAgICAgICAgcG9zID0gbGVuKHNlbGYuX21l
dGFkYXRhX2NhY2hlW2JyYW5jaF0pCisKKyAgICAgICAgIyBJZiB3ZSBhcmVuJ3Qgb24gdGhlIGRl
ZmF1bHQgYnJhbmNoLCB3ZSB3aWxsIG5lZWQgdGhlIGRlZmF1bHQgYnJhbmNoIHRvIGRldGVybWlu
ZSB3aGVuCisgICAgICAgICMgb3VyICBicmFuY2ggIGludGVyc2VjdHMgd2l0aCB0aGUgZGVmYXVs
dCBicmFuY2guCisgICAgICAgIGlmIG5vdCBpc19kZWZhdWx0X2JyYW5jaDoKKyAgICAgICAgICAg
IHNlbGYuX2NhY2hlX3JldmlzaW9ucyhicmFuY2g9c2VsZi5kZWZhdWx0X2JyYW5jaCkKKworICAg
ICAgICB0cnk6CisgICAgICAgICAgICBkaWRfd2FybiA9IEZhbHNlCisgICAgICAgICAgICBjb3Vu
dCA9IDAKKyAgICAgICAgICAgIGxvZyA9IE5vbmUKKyAgICAgICAgICAgIGNhbmRpZGF0ZV9pbmRl
eCA9IC0xIGlmIGlzX2RlZmF1bHRfYnJhbmNoIGVsc2UgbGVuKHNlbGYuX21ldGFkYXRhX2NhY2hl
W3NlbGYuZGVmYXVsdF9icmFuY2hdKQorCisgICAgICAgICAgICBicmFuY2hfYXJnID0gJ14ve317
fScuZm9ybWF0KCcnIGlmIGlzX2RlZmF1bHRfYnJhbmNoIGVsc2UgJ2JyYW5jaGVzLycsIGJyYW5j
aCkKKyAgICAgICAgICAgIGt3YXJncyA9IGRpY3QoKQorICAgICAgICAgICAgaWYgc3lzLnZlcnNp
b25faW5mbyA+PSAoMywgMCk6CisgICAgICAgICAgICAgICAga3dhcmdzID0gZGljdChlbmNvZGlu
Zz0ndXRmLTgnKQorCisgICAgICAgICAgICBsb2cgPSBzdWJwcm9jZXNzLlBvcGVuKAorICAgICAg
ICAgICAgICAgIFtzZWxmLmV4ZWN1dGFibGUsICdsb2cnLCAnLXEnLCBicmFuY2hfYXJnXSwKKyAg
ICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJw
cm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKKyAg
ICAgICAgICAgICAgICAqKmt3YXJncworICAgICAgICAgICAgKQorICAgICAgICAgICAgaWYgbG9n
LnBvbGwoKToKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbigiRmFpbGVkIHRv
IGNvbnN0cnVjdCBicmFuY2ggaGlzdG9yeSBmb3IgJ3t9JyIuZm9ybWF0KGJyYW5jaCkpCisKKyAg
ICAgICAgICAgIGxpbmUgPSBsb2cuc3Rkb3V0LnJlYWRsaW5lKCkKKyAgICAgICAgICAgIHdoaWxl
IGxpbmU6CisgICAgICAgICAgICAgICAgbWF0Y2ggPSBzZWxmLkxPR19SRS5tYXRjaChsaW5lKQor
ICAgICAgICAgICAgICAgIGlmIG1hdGNoOgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgZGlk
X3dhcm46CisgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCArPSAxCisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiBjb3VudCA+IDEwMDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5sb2coJ0NhY2hpbmcgY29tbWl0IGRhdGEgZm9yIHt9LCB0aGlzIHdpbGwgdGFrZSBhIGZl
dyBtaW51dGVzLi4uJy5mb3JtYXQoYnJhbmNoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkaWRfd2FybiA9IFRydWUKKworICAgICAgICAgICAgICAgICAgICByZXZpc2lvbiA9IGludCht
YXRjaC5ncm91cCgncmV2aXNpb24nKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgcG9zID4gMCBh
bmQgc2VsZi5fbWV0YWRhdGFfY2FjaGVbYnJhbmNoXVtwb3MgLSAxXSA9PSByZXZpc2lvbjoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBp
c19kZWZhdWx0X2JyYW5jaDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJldmlzaW9uIGlu
IHNlbGYuX21ldGFkYXRhX2NhY2hlW3NlbGYuZGVmYXVsdF9icmFuY2hdOgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX21ldGFkYXRhX2NhY2hlW2JyYW5jaF0uaW5zZXJ0KHBvcywg
cmV2aXNpb24pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fbWV0YWRhdGFfY2FjaGVbYnJhbmNoXS5pbnNlcnQocG9zLCByZXZpc2lv
bikKKyAgICAgICAgICAgICAgICBsaW5lID0gbG9nLnN0ZG91dC5yZWFkbGluZSgpCisgICAgICAg
IGZpbmFsbHk6CisgICAgICAgICAgICBpZiBsb2c6CisgICAgICAgICAgICAgICAgbG9nLmtpbGwo
KQorCisgICAgICAgIGlmIHNlbGYuX21ldGFkYXRhX2NhY2hlW3NlbGYuZGVmYXVsdF9icmFuY2hd
WzBdID09IFswXToKKyAgICAgICAgICAgIHNlbGYuX21ldGFkYXRhX2NhY2hlWydpZGVudGlmaWVy
J10gPSBsZW4oc2VsZi5fbWV0YWRhdGFfY2FjaGVbYnJhbmNoXSkKKworICAgICAgICB0cnk6Cisg
ICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5fY2FjaGVfcGF0aCwgJ3cnKSBhcyBmaWxlOgorICAg
ICAgICAgICAgICAgIGpzb24uZHVtcChzZWxmLl9tZXRhZGF0YV9jYWNoZSwgZmlsZSwgaW5kZW50
PTQpCisgICAgICAgIGV4Y2VwdCAoSU9FcnJvciwgT1NFcnJvcik6CisgICAgICAgICAgICBzZWxm
LmxvZygiRmFpbGVkIHRvIHdyaXRlIFNWTiBjYWNoZSB0byAne30nIi5mb3JtYXQoc2VsZi5fY2Fj
aGVfcGF0aCkpCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX21ldGFkYXRhX2NhY2hlW2JyYW5jaF0K
KworICAgIGRlZiBfY29tbWl0X2NvdW50KHNlbGYsIHJldmlzaW9uPU5vbmUsIGJyYW5jaD1Ob25l
KToKKyAgICAgICAgYnJhbmNoID0gYnJhbmNoIG9yIHNlbGYuZGVmYXVsdF9icmFuY2gKKworICAg
ICAgICBpZiByZXZpc2lvbjoKKyAgICAgICAgICAgIHJldHVybiBiaXNlY3QuYmlzZWN0X2xlZnQo
c2VsZi5fbWV0YWRhdGFfY2FjaGVbYnJhbmNoXSwgaW50KHJldmlzaW9uKSkKKyAgICAgICAgaWYg
YnJhbmNoID09IHNlbGYuZGVmYXVsdF9icmFuY2g6CisgICAgICAgICAgICByZXR1cm4gbGVuKHNl
bGYuX21ldGFkYXRhX2NhY2hlW2JyYW5jaF0pCisgICAgICAgIHJldHVybiBzZWxmLl9jb21taXRf
Y291bnQocmV2aXNpb249c2VsZi5fbWV0YWRhdGFfY2FjaGVbYnJhbmNoXVswXSwgYnJhbmNoPXNl
bGYuZGVmYXVsdF9icmFuY2gpCisKICAgICBkZWYgcmVtb3RlKHNlbGYsIG5hbWU9Tm9uZSk6CiAg
ICAgICAgIHJldHVybiBzZWxmLmluZm8oKVsnUmVwb3NpdG9yeSBSb290J10KKworICAgIGRlZiBj
b21taXQoc2VsZiwgaGFzaD1Ob25lLCByZXZpc2lvbj1Ob25lLCBpZGVudGlmaWVyPU5vbmUsIGJy
YW5jaD1Ob25lKToKKyAgICAgICAgaWYgaGFzaDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoJ1NWTiBkb2VzIG5vdCBzdXBwb3J0IEdpdCBoYXNoZXMnKQorCisgICAgICAgIHBhcnNlZF9i
cmFuY2hfcG9pbnQgPSBOb25lCisgICAgICAgIGlmIGlkZW50aWZpZXIgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICBpZiByZXZpc2lvbjoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KCdDYW5ub3QgZGVmaW5lIGJvdGggcmV2aXNpb24gYW5kIGlkZW50aWZpZXInKQorCisgICAgICAg
ICAgICBwYXJzZWRfYnJhbmNoX3BvaW50LCBpZGVudGlmaWVyLCBwYXJzZWRfYnJhbmNoID0gQ29t
bWl0Ll9wYXJzZV9pZGVudGlmaWVyKGlkZW50aWZpZXIsIGRvX2Fzc2VydD1UcnVlKQorICAgICAg
ICAgICAgaWYgcGFyc2VkX2JyYW5jaDoKKyAgICAgICAgICAgICAgICBpZiBicmFuY2ggYW5kIGJy
YW5jaCAhPSBwYXJzZWRfYnJhbmNoOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgIkNhbGxlciBwYXNzZWQgYm90aCAnYnJhbmNo
JyBhbmQgJ2lkZW50aWZpZXInLCBidXQgc3BlY2lmaWVkIGRpZmZlcmVudCBicmFuY2hlcyAoe30g
YW5kIHt9KSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaCwgcGFy
c2VkX2JyYW5jaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAg
ICAgICkKKyAgICAgICAgICAgICAgICBicmFuY2ggPSBwYXJzZWRfYnJhbmNoCisgICAgICAgICAg
ICBicmFuY2ggPSBicmFuY2ggb3Igc2VsZi5icmFuY2gKKworICAgICAgICAgICAgaWYgYnJhbmNo
ID09IHNlbGYuZGVmYXVsdF9icmFuY2ggYW5kIHBhcnNlZF9icmFuY2hfcG9pbnQ6CisgICAgICAg
ICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oJ0Nhbm5vdCBwcm92aWRlIGEgYnJhbmNoIHBv
aW50IGZvciBhIGNvbW1pdCBvbiB0aGUgZGVmYXVsdCBicmFuY2gnKQorCisgICAgICAgICAgICBz
ZWxmLl9jYWNoZV9yZXZpc2lvbnMoYnJhbmNoPWJyYW5jaCkKKyAgICAgICAgICAgIGlmIGlkZW50
aWZpZXIgPiBsZW4oc2VsZi5fbWV0YWRhdGFfY2FjaGVbYnJhbmNoXSk6CisgICAgICAgICAgICAg
ICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oJ0lkZW50aWZpZXIge30gY2Fubm90IGJlIGZvdW5kIG9u
IHRoZSBzcGVjaWZpZWQgYnJhbmNoIGluIHRoZSBjdXJyZW50IGNoZWNrb3V0Jy5mb3JtYXQoaWRl
bnRpZmllcikpCisKKyAgICAgICAgICAgIGlmIGlkZW50aWZpZXIgPD0gMDoKKyAgICAgICAgICAg
ICAgICBpZiBicmFuY2ggPT0gc2VsZi5kZWZhdWx0X2JyYW5jaDoKKyAgICAgICAgICAgICAgICAg
ICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oJ0lsbGVnYWwgbmVnYXRpdmUgaWRlbnRpZmllciBvbiB0
aGUgZGVmYXVsdCBicmFuY2gnKQorICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgPSBzZWxmLl9j
b21taXRfY291bnQoYnJhbmNoPWJyYW5jaCkgKyBpZGVudGlmaWVyCisgICAgICAgICAgICAgICAg
aWYgaWRlbnRpZmllciA8IDA6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0
aW9uKCdJZGVudGlmaWVyIGRvZXMgbm90IGV4aXN0IG9uIHRoZSBzcGVjaWZpZWQgYnJhbmNoJykK
KworICAgICAgICAgICAgICAgIGJyYW5jaCA9IHNlbGYuZGVmYXVsdF9icmFuY2gKKworICAgICAg
ICAgICAgcmV2aXNpb24gPSBzZWxmLl9tZXRhZGF0YV9jYWNoZVticmFuY2hdW2lkZW50aWZpZXJd
CisgICAgICAgICAgICBpbmZvID0gc2VsZi5pbmZvKGJyYW5jaD1icmFuY2gsIHJldmlzaW9uPXJl
dmlzaW9uKQorCisgICAgICAgIGVsaWYgcmV2aXNpb246CisgICAgICAgICAgICBpZiBicmFuY2g6
CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ2Fubm90IGRlZmluZSBib3RoIGJy
YW5jaCBhbmQgcmV2aXNpb24nKQorICAgICAgICAgICAgcmV2aXNpb24gPSBDb21taXQuX3BhcnNl
X3JldmlzaW9uKHJldmlzaW9uLCBkb19hc3NlcnQ9VHJ1ZSkKKyAgICAgICAgICAgIGZpbmRfYnJh
bmNoID0gcnVuKAorICAgICAgICAgICAgICAgIFtzZWxmLmV4ZWN1dGFibGUsICdsb2cnLCAnLXYn
LCAnLXEnLCBzZWxmLnJlbW90ZSgpLCAnLXInLCBzdHIocmV2aXNpb24pLCAnLWwnLCAnMSddLAor
ICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsIGNhcHR1cmVfb3V0cHV0PVRydWUsIGVuY29k
aW5nPSd1dGYtOCcsCisgICAgICAgICAgICApCisgICAgICAgICAgICBpZiBmaW5kX2JyYW5jaC5y
ZXR1cm5jb2RlIG9yIG5vdCBmaW5kX2JyYW5jaC5zdGRvdXQ6CisgICAgICAgICAgICAgICAgcmFp
c2Ugc2VsZi5FeGNlcHRpb24oIkZhaWxlZCB0byByZXRyaWV2ZSBicmFuY2ggZm9yICd7fSciLmZv
cm1hdChyZXZpc2lvbikpCisKKyAgICAgICAgICAgIHBhcnRpYWwgPSBOb25lCisgICAgICAgICAg
ICBmb3IgbGluZSBpbiBmaW5kX2JyYW5jaC5zdGRvdXQuc3BsaXRsaW5lcygpOgorICAgICAgICAg
ICAgICAgIGlmIHBhcnRpYWwgaXMgTm9uZSBhbmQgbGluZSA9PSAnQ2hhbmdlZCBwYXRoczonOgor
ICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsID0gJycKKyAgICAgICAgICAgICAgICBlbGlmIHBh
cnRpYWwgPT0gJyc6CisgICAgICAgICAgICAgICAgICAgIHBhcnRpYWwgPSBsaW5lLmxzdHJpcCgp
CisgICAgICAgICAgICAgICAgZWxpZiBwYXJ0aWFsOgorICAgICAgICAgICAgICAgICAgICBsaW5l
ID0gbGluZS5sc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICB3aGlsZSBsaW5lLnN0YXJ0c3dp
dGgoJ00gJykgYW5kIG5vdCBsaW5lLnN0YXJ0c3dpdGgocGFydGlhbCk6CisgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJ0aWFsID0gcGFydGlhbFs6LTFdCisgICAgICAgICAgICBpZiBsZW4ocGFy
dGlhbCkgPiAzOgorICAgICAgICAgICAgICAgIHBhcnRpYWwgPSBwYXJ0aWFsWzI6XQorICAgICAg
ICAgICAgICAgIGJyYW5jaCA9IHBhcnRpYWwuc3BsaXQoJy8nKVsyIGlmIHBhcnRpYWwuc3RhcnRz
d2l0aCgnL2JyYW5jaGVzJykgZWxzZSAxXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignTWFsZm9ybWVkIHNldCAgb2YgZWRpdGVkIGZpbGVz
JykKKworICAgICAgICAgICAgc2VsZi5fY2FjaGVfcmV2aXNpb25zKGJyYW5jaD1icmFuY2gpCisg
ICAgICAgICAgICBpbmZvID0gc2VsZi5pbmZvKGJyYW5jaD1icmFuY2gsIHJldmlzaW9uPXJldmlz
aW9uKQorCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBicmFuY2ggPSBicmFuY2ggb3Igc2Vs
Zi5icmFuY2gKKyAgICAgICAgICAgIGluZm8gPSBzZWxmLmluZm8oYnJhbmNoPWJyYW5jaCkKKyAg
ICAgICAgICAgIGlmIG5vdCBpbmZvOgorICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0
aW9uKCIne30nIGlzIG5vdCBhIHJlY29nbml6ZWQgYnJhbmNoIi5mb3JtYXQoYnJhbmNoKSkKKyAg
ICAgICAgICAgIHNlbGYuX2NhY2hlX3JldmlzaW9ucyhicmFuY2g9YnJhbmNoKQorICAgICAgICAg
ICAgcmV2aXNpb24gPSBpbmZvWydMYXN0IENoYW5nZWQgUmV2J10KKworICAgICAgICBicmFuY2hf
YXJnID0gJ14ve317fScuZm9ybWF0KCcnIGlmIGJyYW5jaCA9PSBzZWxmLmRlZmF1bHRfYnJhbmNo
IGVsc2UgJ2JyYW5jaGVzLycsIGJyYW5jaCkKKyAgICAgICAgbG9nID0gcnVuKFtzZWxmLmV4ZWN1
dGFibGUsICdsb2cnLCAnLWwnLCAnMScsICctcicsIHN0cihyZXZpc2lvbiksIGJyYW5jaF9hcmdd
LCBjd2Q9c2VsZi5wYXRoLCBjYXB0dXJlX291dHB1dD1UcnVlLCBlbmNvZGluZz0ndXRmLTgnKQor
ICAgICAgICBzcGxpdF9sb2cgPSBsb2cuc3Rkb3V0LnNwbGl0bGluZXMoKQorICAgICAgICBpZiBs
b2cucmV0dXJuY29kZSBvciBsZW4oc3BsaXRfbG9nKSA8IDM6CisgICAgICAgICAgICByYWlzZSBz
ZWxmLkV4Y2VwdGlvbigiRmFpbGVkIHRvIHJldHJpZXZlIGNvbW1pdCBpbmZvcm1hdGlvbiBmb3Ig
J3t9JyBvbiAne30nIi5mb3JtYXQocmV2aXNpb24sIGJyYW5jaCkpCisKKyAgICAgICAgZGF0ZSA9
IGluZm9bJ0xhc3QgQ2hhbmdlZCBEYXRlJ10uc3BsaXQoJyAoJylbMF0KKyAgICAgICAgdHpfZGlm
ZiA9IGRhdGUuc3BsaXQoJyAnKVstMV0KKyAgICAgICAgZGF0ZSA9IGRhdGV0aW1lLnN0cnB0aW1l
KGRhdGVbOi1sZW4odHpfZGlmZildLCAnJVktJW0tJWQgJUg6JU06JVMgJykKKyAgICAgICAgZGVs
dGEgPSB0aW1lZGVsdGEoCisgICAgICAgICAgICBob3Vycz1pbnQodHpfZGlmZlsxOjNdKSwKKyAg
ICAgICAgICAgIG1pbnV0ZXM9aW50KHR6X2RpZmZbMzo1XSksCisgICAgICAgICkKKyAgICAgICAg
ZGF0ZSA9IGRhdGUucmVwbGFjZSgKKyAgICAgICAgICAgIHR6aW5mbz10ei50em9mZnNldCgKKyAg
ICAgICAgICAgICAgICBuYW1lPSdVVEN7fScuZm9ybWF0KHR6X2RpZmYpLAorICAgICAgICAgICAg
ICAgIG9mZnNldD1kZWx0YS5zZWNvbmRzICogKC0xIGlmIHR6X2RpZmZbMF0gPT0gJy0nIGVsc2Ug
MSkKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgICAgICBpZiBub3QgaWRlbnRpZmll
cjoKKyAgICAgICAgICAgIGlkZW50aWZpZXIgPSBzZWxmLl9jb21taXRfY291bnQocmV2aXNpb249
cmV2aXNpb24sIGJyYW5jaD1icmFuY2gpCisgICAgICAgIGJyYW5jaF9wb2ludCA9IE5vbmUgaWYg
YnJhbmNoID09IHNlbGYuZGVmYXVsdF9icmFuY2ggZWxzZSBzZWxmLl9jb21taXRfY291bnQoYnJh
bmNoPWJyYW5jaCkKKyAgICAgICAgaWYgYnJhbmNoX3BvaW50IGFuZCBwYXJzZWRfYnJhbmNoX3Bv
aW50IGFuZCBicmFuY2hfcG9pbnQgIT0gcGFyc2VkX2JyYW5jaF9wb2ludDoKKyAgICAgICAgICAg
IHJhaXNlIFZhbHVlRXJyb3IoIlByb3ZpZGVkICdicmFuY2hfcG9pbnQnIGRvZXMgbm90IG1hdGNo
IGJyYW5jaCBwb2ludCBvZiBzcGVjaWZpZWQgYnJhbmNoIikKKworICAgICAgICBhdXRob3JfbGlu
ZSA9IHNwbGl0X2xvZ1sxXQorICAgICAgICBmb3IgbGluZSBpbiBzcGxpdF9sb2dbMjo4XToKKyAg
ICAgICAgICAgIGlmIENvbnRyaWJ1dG9yLlNWTl9QQVRDSF9GUk9NX1JFLm1hdGNoKGxpbmUpOgor
ICAgICAgICAgICAgICAgIGF1dGhvcl9saW5lID0gbGluZQorICAgICAgICAgICAgICAgIGJyZWFr
CisKKyAgICAgICAgcmV0dXJuIENvbW1pdCgKKyAgICAgICAgICAgIHJldmlzaW9uPWludChyZXZp
c2lvbiksCisgICAgICAgICAgICBicmFuY2g9YnJhbmNoLAorICAgICAgICAgICAgaWRlbnRpZmll
cj1pZGVudGlmaWVyLAorICAgICAgICAgICAgYnJhbmNoX3BvaW50PWJyYW5jaF9wb2ludCwKKyAg
ICAgICAgICAgIHRpbWVzdGFtcD1pbnQoY2FsZW5kYXIudGltZWdtKGRhdGUudGltZXR1cGxlKCkp
KSwKKyAgICAgICAgICAgIGF1dGhvcj1Db250cmlidXRvci5mcm9tX3NjbV9sb2coYXV0aG9yX2xp
bmUpLAorICAgICAgICAgICAgbWVzc2FnZT0nXG4nLmpvaW4oc3BsaXRfbG9nWzM6XSksCisgICAg
ICAgICkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNj
bXB5L21vY2tzL2xvY2FsL2dpdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9naXQucHkJKHJldmlzaW9u
IDI2Nzg5MikKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNj
bXB5L21vY2tzL2xvY2FsL2dpdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjEsOSArMjEsMTEgQEAK
ICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KIAogaW1wb3J0IG9zCitpbXBvcnQgcmUKIAorZnJvbSBkYXRldGltZSBp
bXBvcnQgZGF0ZXRpbWUKIGZyb20gd2Via2l0Y29yZXB5IGltcG9ydCBtb2NrcwotZnJvbSB3ZWJr
aXRzY21weSBpbXBvcnQgbG9jYWwKK2Zyb20gd2Via2l0c2NtcHkgaW1wb3J0IGxvY2FsLCBDb21t
aXQsIENvbnRyaWJ1dG9yCiAKIAogY2xhc3MgR2l0KG1vY2tzLlN1YnByb2Nlc3MpOgpAQCAtMzYs
MzUgKzM4LDExNiBAQCBjbGFzcyBHaXQobW9ja3MuU3VicHJvY2Vzcyk6CiAgICAgKToKICAgICAg
ICAgc2VsZi5wYXRoID0gcGF0aAogICAgICAgICBzZWxmLmJyYW5jaCA9IGJyYW5jaCBvciBkZWZh
dWx0X2JyYW5jaAorICAgICAgICBzZWxmLmRlZmF1bHRfYnJhbmNoID0gZGVmYXVsdF9icmFuY2gK
ICAgICAgICAgc2VsZi5yZW1vdGUgPSByZW1vdGUgb3IgJ2dpdEB3ZWJraXQub3JnOi9tb2NrL3t9
Jy5mb3JtYXQob3MucGF0aC5iYXNlbmFtZShwYXRoKSkKICAgICAgICAgc2VsZi5kZXRhY2hlZCA9
IGRldGFjaGVkIG9yIEZhbHNlCiAKICAgICAgICAgc2VsZi5icmFuY2hlcyA9IGJyYW5jaGVzIG9y
IFtdCiAgICAgICAgIHNlbGYudGFncyA9IHRhZ3Mgb3IgW10KIAorICAgICAgICAjIFByb3ZpZGUg
YSByZWFzb25hYmxlIHNldCBvZiBjb21taXRzIHRvIHRlc3QgYWdhaW5zdAorICAgICAgICBjb250
cmlidXRvciA9IENvbnRyaWJ1dG9yKG5hbWU9J0pvbmF0aGFuIEJlZGFyZCcsIGVtYWlscz1bJ2pi
ZWRhcmRAYXBwbGUuY29tJ10pCisgICAgICAgIHNlbGYuY29tbWl0cyA9IHsKKyAgICAgICAgICAg
IGRlZmF1bHRfYnJhbmNoOiBbCisgICAgICAgICAgICAgICAgQ29tbWl0KAorICAgICAgICAgICAg
ICAgICAgICBpZGVudGlmaWVyPScxQHt9Jy5mb3JtYXQoZGVmYXVsdF9icmFuY2gpLAorICAgICAg
ICAgICAgICAgICAgICBoYXNoPSc5YjgzMTFmMjVhNzdiYTE0OTIzZDlkNWE2NTMyMTAzZjU0YWJl
ZmNiJywKKyAgICAgICAgICAgICAgICAgICAgcmV2aXNpb249MSBpZiBnaXRfc3ZuIGVsc2UgTm9u
ZSwKKyAgICAgICAgICAgICAgICAgICAgYXV0aG9yPWNvbnRyaWJ1dG9yLAorICAgICAgICAgICAg
ICAgICAgICB0aW1lc3RhbXA9MTYwMTY2MDAwMCwKKyAgICAgICAgICAgICAgICAgICAgbWVzc2Fn
ZT0nMXN0IGNvbW1pdFxuJywKKyAgICAgICAgICAgICAgICApLCBDb21taXQoCisgICAgICAgICAg
ICAgICAgICAgIGlkZW50aWZpZXI9JzJAe30nLmZvcm1hdChkZWZhdWx0X2JyYW5jaCksCisgICAg
ICAgICAgICAgICAgICAgIGhhc2g9J2ZmZjgzYmIyZDkxNzFiNGQ5MTk2ZTk3N2ViMDUwOGZkNTdl
N2EwOGQnLAorICAgICAgICAgICAgICAgICAgICByZXZpc2lvbj0yIGlmIGdpdF9zdm4gZWxzZSBO
b25lLAorICAgICAgICAgICAgICAgICAgICBhdXRob3I9Y29udHJpYnV0b3IsCisgICAgICAgICAg
ICAgICAgICAgIHRpbWVzdGFtcD0xNjAxNjYxMDAwLAorICAgICAgICAgICAgICAgICAgICBtZXNz
YWdlPScybmQgY29tbWl0XG4nLAorICAgICAgICAgICAgICAgICksIENvbW1pdCgKKyAgICAgICAg
ICAgICAgICAgICAgaWRlbnRpZmllcj0nM0B7fScuZm9ybWF0KGRlZmF1bHRfYnJhbmNoKSwKKyAg
ICAgICAgICAgICAgICAgICAgaGFzaD0nMWFiZTI1YjQ0M2U5ODVmOTNiOTBkODMwZTRhN2UzNzMx
MzM2YWY0ZCcsCisgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uPTQgaWYgZ2l0X3N2biBlbHNl
IE5vbmUsCisgICAgICAgICAgICAgICAgICAgIGF1dGhvcj1jb250cmlidXRvciwKKyAgICAgICAg
ICAgICAgICAgICAgdGltZXN0YW1wPTE2MDE2NjMwMDAsCisgICAgICAgICAgICAgICAgICAgIG1l
c3NhZ2U9JzR0aCBjb21taXRcbicsCisgICAgICAgICAgICAgICAgKSwgQ29tbWl0KAorICAgICAg
ICAgICAgICAgICAgICBpZGVudGlmaWVyPSc0QHt9Jy5mb3JtYXQoZGVmYXVsdF9icmFuY2gpLAor
ICAgICAgICAgICAgICAgICAgICBoYXNoPSdiYWU1ZDFlOTA5OTlkNGY5MTZhOGExNTgxMGNjZmE0
M2YzN2EyZmQ2JywKKyAgICAgICAgICAgICAgICAgICAgcmV2aXNpb249NiBpZiBnaXRfc3ZuIGVs
c2UgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgYXV0aG9yPWNvbnRyaWJ1dG9yLAorICAgICAg
ICAgICAgICAgICAgICB0aW1lc3RhbXA9MTYwMTY2NTAwMCwKKyAgICAgICAgICAgICAgICAgICAg
bWVzc2FnZT0nNnRoIGNvbW1pdFxuJywKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAg
XSwgJ2JyYW5jaC1hJzogWworICAgICAgICAgICAgICAgIENvbW1pdCgKKyAgICAgICAgICAgICAg
ICAgICAgaWRlbnRpZmllcj0nMi4xQGJyYW5jaC1hJywKKyAgICAgICAgICAgICAgICAgICAgaGFz
aD0nYTMwY2U4NDk0YmYxYWMyODA3YTY5ODQ0ZjcyNmJlNGE5ODQzY2E1NScsCisgICAgICAgICAg
ICAgICAgICAgIHJldmlzaW9uPTMgaWYgZ2l0X3N2biBlbHNlIE5vbmUsCisgICAgICAgICAgICAg
ICAgICAgIGF1dGhvcj1jb250cmlidXRvciwKKyAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1w
PTE2MDE2NjIwMDAsCisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9JzNyZCBjb21taXRcbics
CisgICAgICAgICAgICAgICAgKSwgQ29tbWl0KAorICAgICAgICAgICAgICAgICAgICBpZGVudGlm
aWVyPScyLjJAYnJhbmNoLWEnLAorICAgICAgICAgICAgICAgICAgICBoYXNoPSc2MjE2NTJhZGQ3
ZmM0MTYwOTliZDIwNjMzNjZjYzM4ZmY2MWFmZTM2JywKKyAgICAgICAgICAgICAgICAgICAgcmV2
aXNpb249NyBpZiBnaXRfc3ZuIGVsc2UgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgYXV0aG9y
PWNvbnRyaWJ1dG9yLAorICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA9MTYwMTY2NjAwMCwK
KyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nN3RoIGNvbW1pdFxuJywKKyAgICAgICAgICAg
ICAgICApLAorICAgICAgICAgICAgXSwKKyAgICAgICAgfQorICAgICAgICBzZWxmLmNvbW1pdHNb
J2JyYW5jaC1iJ10gPSBbCisgICAgICAgICAgICBzZWxmLmNvbW1pdHNbJ2JyYW5jaC1hJ11bMF0s
IENvbW1pdCgKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVyPScyLjJAYnJhbmNoLWInLAorICAg
ICAgICAgICAgICAgIGhhc2g9JzNjZDMyZTM1MjQxMDU2NWJiNTQzODIxZmJmODU2YTZkM2NhYWQx
YzQnLAorICAgICAgICAgICAgICAgIHJldmlzaW9uPTUgaWYgZ2l0X3N2biBlbHNlIE5vbmUsCisg
ICAgICAgICAgICAgICAgYXV0aG9yPWNvbnRyaWJ1dG9yLAorICAgICAgICAgICAgICAgIHRpbWVz
dGFtcD0xNjAxNjY0MDAwLAorICAgICAgICAgICAgICAgIG1lc3NhZ2U9JzV0aCBjb21taXRcbics
CisgICAgICAgICAgICApLCBDb21taXQoCisgICAgICAgICAgICAgICAgaWRlbnRpZmllcj0nMi4z
QGJyYW5jaC1iJywKKyAgICAgICAgICAgICAgICBoYXNoPSc3OTA3MjVhNmQ3OWUyOGRiMmVjZGRl
Mjk1NDhkMjI2MmMwYmQwNTlkJywKKyAgICAgICAgICAgICAgICByZXZpc2lvbj04IGlmIGdpdF9z
dm4gZWxzZSBOb25lLAorICAgICAgICAgICAgICAgIGF1dGhvcj1jb250cmlidXRvciwKKyAgICAg
ICAgICAgICAgICB0aW1lc3RhbXA9MTYwMTY2NzAwMCwKKyAgICAgICAgICAgICAgICBtZXNzYWdl
PSc4dGggY29tbWl0XG4nLAorICAgICAgICAgICAgKSwKKyAgICAgICAgXQorCiAgICAgICAgIGlm
IGdpdF9zdm46CiAgICAgICAgICAgICBnaXRfc3ZuX3JvdXRlcyA9IFsKICAgICAgICAgICAgICAg
ICBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAotICAgICAgICAgICAgICAgICAgICBsb2NhbC5HaXQu
ZXhlY3V0YWJsZSwgJ3N2bicsICdmaW5kLXJldicsICdyMScsCisgICAgICAgICAgICAgICAgICAg
IGxvY2FsLkdpdC5leGVjdXRhYmxlLCAnc3ZuJywgJ2ZpbmQtcmV2JywgcmUuY29tcGlsZShyJ3Jc
ZCsnKSwKICAgICAgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKLSAgICAgICAgICAgICAg
ICAgICAgY29tcGxldGlvbj1tb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbigKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybmNvZGU9MCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD0n
ZDQyM2VhODJlZmFhZWQwZGNiYWZiMDlhYWE0YTcwZmFmZGVhMDcyOVxuJywKLSAgICAgICAgICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yPWxhbWJkYSAqYXJncywg
Kiprd2FyZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlv
bigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5jb2RlPTAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3Rkb3V0PWdldGF0dHIoc2VsZi5maW5kKGFyZ3NbM11bMTpdKSwg
J2hhc2gnLCAnXG4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAg
ICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAogICAgICAgICAgICAgICAgICAgICBsb2NhbC5H
aXQuZXhlY3V0YWJsZSwgJ3N2bicsICdpbmZvJywKICAgICAgICAgICAgICAgICAgICAgY3dkPXNl
bGYucGF0aCwKLSAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbj1tb2Nrcy5Qcm9jZXNzQ29t
cGxldGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybmNvZGU9MCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZG91dD0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUGF0
aDogLlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdVUkw6IHtyZW1vdGV9L3ticmFu
Y2h9XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1JlcG9zaXRvcnkgUm9vdDoge3Jl
bW90ZX1cbicuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPXNl
bGYucGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlPXNlbGYucmVt
b3RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2g9c2VsZi5icmFuY2gs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yPWxhbWJkYSAqYXJncywgKiprd2FyZ3M6Cisg
ICAgICAgICAgICAgICAgICAgICAgICBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbigKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm5jb2RlPTAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3Rkb3V0PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUGF0aDogLlxu
JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVVJMOiB7cmVtb3RlfS97YnJhbmNo
fVxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUmVwb3NpdG9yeSBSb290OiB7
cmVtb3RlfVxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUmV2aXNpb246IHty
ZXZpc2lvbn1cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ05vZGUgS2luZDog
ZGlyZWN0b3J5XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTY2hlZHVsZTog
bm9ybWFsXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdMYXN0IENoYW5nZWQg
QXV0aG9yOiB7YXV0aG9yfVxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTGFz
dCBDaGFuZ2VkIFJldjoge3JldmlzaW9ufVxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnTGFzdCBDaGFuZ2VkIERhdGU6IHtkYXRlfScuZm9ybWF0KAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGF0aD1zZWxmLnBhdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZW1vdGU9c2VsZi5yZW1vdGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmFuY2g9c2VsZi5icmFuY2gsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXZpc2lvbj1zZWxmLmNvbW1pdHNbc2VsZi5icmFuY2hdWy0xXS5y
ZXZpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhvcj1zZWxm
LmNvbW1pdHNbc2VsZi5icmFuY2hdWy0xXS5hdXRob3IuZW1haWwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRlPWRhdGV0aW1lLmZyb210aW1lc3RhbXAoc2VsZi5jb21t
aXRzW3NlbGYuYnJhbmNoXVstMV0udGltZXN0YW1wKS5zdHJmdGltZSgnJVktJW0tJWQgJUg6JU06
JVMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICkgaWYgbGVuKHNlbGYuY29tbWl0cy5nZXQoc2VsZi5icmFuY2gpKSBlbHNlIG1v
Y2tzLlByb2Nlc3NDb21wbGV0aW9uKHJldHVybmNvZGU9MSksCiAgICAgICAgICAgICAgICAgKSwK
ICAgICAgICAgICAgIF0KIApAQCAtMTIwLDcgKzIwMyw3IEBAIG5vdGhpbmcgdG8gY29tbWl0LCB3
b3JraW5nIHRyZWUgY2xlYW4KICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAogICAgICAg
ICAgICAgICAgIGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBtb2Nrcy5Qcm9jZXNz
Q29tcGxldGlvbigKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuY29kZT0wLAotICAgICAgICAg
ICAgICAgICAgICBzdGRvdXQ9J1xuJy5qb2luKHNvcnRlZChbJyogJyArIHNlbGYuYnJhbmNoXSAr
IGxpc3QoKHtkZWZhdWx0X2JyYW5jaH0gfCBzZXQoc2VsZi5icmFuY2hlcykpIC0ge3NlbGYuYnJh
bmNofSkpKSArCisgICAgICAgICAgICAgICAgICAgIHN0ZG91dD0nXG4nLmpvaW4oc29ydGVkKFsn
KiAnICsgc2VsZi5icmFuY2hdICsgbGlzdCgoe2RlZmF1bHRfYnJhbmNofSB8IHNldChzZWxmLmNv
bW1pdHMua2V5cygpKSB8IHNldChzZWxmLmJyYW5jaGVzKSkgLSB7c2VsZi5icmFuY2h9KSkpICsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbnJlbW90ZXMvb3JpZ2luL0hFQUQgLT4gb3Jp
Z2luL3t9XG4nLmZvcm1hdChkZWZhdWx0X2JyYW5jaCksCiAgICAgICAgICAgICAgICAgKSwKICAg
ICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCkBAIC0xMzgsNiArMjIxLDU0IEBA
IG5vdGhpbmcgdG8gY29tbWl0LCB3b3JraW5nIHRyZWUgY2xlYW4KICAgICAgICAgICAgICAgICAg
ICAgc3Rkb3V0PSdvcmlnaW4ve31cbicuZm9ybWF0KGRlZmF1bHRfYnJhbmNoKSwKICAgICAgICAg
ICAgICAgICApLAogICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKKyAgICAg
ICAgICAgICAgICBsb2NhbC5HaXQuZXhlY3V0YWJsZSwgJ2xvZycsIHJlLmNvbXBpbGUocicuKycp
LCAnLTEnLAorICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCisgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yPWxhbWJkYSAqYXJncywgKiprd2FyZ3M6IG1vY2tzLlByb2Nlc3NDb21wbGV0aW9u
KAorICAgICAgICAgICAgICAgICAgICByZXR1cm5jb2RlPTAsCisgICAgICAgICAgICAgICAgICAg
IHN0ZG91dD0KKyAgICAgICAgICAgICAgICAgICAgICAgICdjb21taXQge2hhc2h9IChIRUFEIC0+
IHticmFuY2h9LCBvcmlnaW4ve2JyYW5jaH0sIG9yaWdpbi9IRUFEKVxuJworICAgICAgICAgICAg
ICAgICAgICAgICAgJ0F1dGhvcjoge2F1dGhvcn0gPHtlbWFpbH0+XG4nCisgICAgICAgICAgICAg
ICAgICAgICAgICAnRGF0ZTogICB7ZGF0ZX1cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICdc
bntsb2d9Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaD1zZWxmLmZp
bmQoYXJnc1syXSkuaGFzaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2g9c2Vs
Zi5icmFuY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yPXNlbGYuZmluZChh
cmdzWzJdKS5hdXRob3IubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWFpbD1z
ZWxmLmZpbmQoYXJnc1syXSkuYXV0aG9yLmVtYWlsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGU9ZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChzZWxmLmZpbmQoYXJnc1syXSkudGltZXN0
YW1wKS5zdHJmdGltZSgnJWEgJWIgJWQgJUg6JU06JVMgJVknKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsb2c9J1xuJy5qb2luKFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICgnICAgICcgKyBsaW5lKSBpZiBsaW5lIGVsc2UgJycgZm9yIGxpbmUgaW4gc2VsZi5m
aW5kKGFyZ3NbMl0pLm1lc3NhZ2Uuc3BsaXRsaW5lcygpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0gKyBbJ2dpdC1zdm4taWQ6IGh0dHBzOi8vc3ZuLnt9cmVwb3NpdG9yeS97fS90
cnVua0B7fSAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmMnLmZvcm1hdCgKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVtb3RlLnNwbGl0KCdAJylb
LTFdLnNwbGl0KCc6JylbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
cy5wYXRoLmJhc2VuYW1lKHBhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5maW5kKGFyZ3NbMl0pLnJldmlzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICApXSBpZiBnaXRfc3ZuIGVsc2UgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICApIGlmIHNl
bGYuZmluZChhcmdzWzJdKSBlbHNlIG1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKHJldHVybmNvZGU9
MTI4KSwKKyAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCisgICAgICAgICAg
ICAgICAgbG9jYWwuR2l0LmV4ZWN1dGFibGUsICdyZXYtbGlzdCcsICctLWNvdW50JywgJy0tbm8t
bWVyZ2VzJywgcmUuY29tcGlsZShyJy4rJyksCisgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0
aCwKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogbW9j
a3MuUHJvY2Vzc0NvbXBsZXRpb24oCisgICAgICAgICAgICAgICAgICAgIHJldHVybmNvZGU9MCwK
KyAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PSd7fVxuJy5mb3JtYXQoc2VsZi5jb3VudChhcmdz
WzRdKSkKKyAgICAgICAgICAgICAgICApIGlmIHNlbGYuZmluZChhcmdzWzRdKSBlbHNlIG1vY2tz
LlByb2Nlc3NDb21wbGV0aW9uKHJldHVybmNvZGU9MTI4KSwKKyAgICAgICAgICAgICksIG1vY2tz
LlN1YnByb2Nlc3MuUm91dGUoCisgICAgICAgICAgICAgICAgbG9jYWwuR2l0LmV4ZWN1dGFibGUs
ICdzaG93JywgJy1zJywgJy0tZm9ybWF0PSVjdCcsIHJlLmNvbXBpbGUocicuKycpLAorICAgICAg
ICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yPWxhbWJk
YSAqYXJncywgKiprd2FyZ3M6IG1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKAorICAgICAgICAgICAg
ICAgICAgICByZXR1cm5jb2RlPTAsCisgICAgICAgICAgICAgICAgICAgIHN0ZG91dD0ne31cbicu
Zm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5maW5kKGFyZ3NbNF0pLnRpbWVz
dGFtcCwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkgaWYgc2VsZi5m
aW5kKGFyZ3NbNF0pIGVsc2UgbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0xMjgp
LAorICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKKyAgICAgICAgICAgICAg
ICBsb2NhbC5HaXQuZXhlY3V0YWJsZSwgJ2JyYW5jaCcsICctYScsICctLWNvbnRhaW5zJywgcmUu
Y29tcGlsZShyJy4rJyksCisgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKKyAgICAgICAg
ICAgICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogbW9ja3MuUHJvY2Vzc0Nv
bXBsZXRpb24oCisgICAgICAgICAgICAgICAgICAgIHJldHVybmNvZGU9MCwKKyAgICAgICAgICAg
ICAgICAgICAgc3Rkb3V0PSdcbicuam9pbihzb3J0ZWQoc2VsZi5icmFuY2hlc19vbihhcmdzWzRd
KSkpICsgJ1xuJywKKyAgICAgICAgICAgICAgICApIGlmIHNlbGYuZmluZChhcmdzWzRdKSBlbHNl
IG1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKHJldHVybmNvZGU9MTI4KSwKKyAgICAgICAgICAgICks
IG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCiAgICAgICAgICAgICAgICAgbG9jYWwuR2l0LmV4ZWN1
dGFibGUsCiAgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKICAgICAgICAgICAgICAgICBj
b21wbGV0aW9uPW1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKApAQCAtMTUyLDMgKzI4Myw1NiBAQCBu
b3RoaW5nIHRvIGNvbW1pdCwgd29ya2luZyB0cmVlIGNsZWFuCiAgICAgICAgICAgICAgICAgKSwK
ICAgICAgICAgICAgICksICpnaXRfc3ZuX3JvdXRlcwogICAgICAgICApCisKKyAgICBkZWYgZmlu
ZChzZWxmLCBzb21ldGhpbmcpOgorICAgICAgICBpZiAnficgaW4gc29tZXRoaW5nOgorICAgICAg
ICAgICAgc3BsaXQgPSBzb21ldGhpbmcuc3BsaXQoJ34nKQorICAgICAgICAgICAgaWYgbGVuKHNw
bGl0KSA9PSAyIGFuZCBDb21taXQuTlVNQkVSX1JFLm1hdGNoKHNwbGl0WzFdKToKKyAgICAgICAg
ICAgICAgICBmb3VuZCA9IHNlbGYuZmluZChzcGxpdFswXSkKKyAgICAgICAgICAgICAgICBkaWZm
ZXJlbmNlID0gaW50KHNwbGl0WzFdKQorICAgICAgICAgICAgICAgIGlmIGRpZmZlcmVuY2UgPCBm
b3VuZC5pZGVudGlmaWVyOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5jb21taXRz
W2ZvdW5kLmJyYW5jaF1bZm91bmQuaWRlbnRpZmllciAtIGRpZmZlcmVuY2UgLSAxXQorICAgICAg
ICAgICAgICAgIGRpZmZlcmVuY2UgLT0gZm91bmQuaWRlbnRpZmllcgorICAgICAgICAgICAgICAg
IGlmIGRpZmZlcmVuY2UgPCBmb3VuZC5icmFuY2hfcG9pbnQ6CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBzZWxmLmNvbW1pdHNbc2VsZi5kZWZhdWx0X2JyYW5jaF1bZm91bmQuYnJhbmNoX3Bv
aW50IC0gZGlmZmVyZW5jZSAtIDFdCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAg
ICAgICBpZiBzb21ldGhpbmcgPT0gJ0hFQUQnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29t
bWl0c1tzZWxmLmJyYW5jaF1bLTFdCisgICAgICAgIGlmIHNvbWV0aGluZyBpbiBzZWxmLmNvbW1p
dHMua2V5cygpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29tbWl0c1tzb21ldGhpbmddWy0x
XQorCisgICAgICAgIHNvbWV0aGluZyA9IHN0cihzb21ldGhpbmcpCisgICAgICAgIGlmICcuLicg
aW4gc29tZXRoaW5nOgorICAgICAgICAgICAgc29tZXRoaW5nID0gc29tZXRoaW5nLnNwbGl0KCcu
LicpWzFdCisgICAgICAgIGZvciBicmFuY2gsIGNvbW1pdHMgaW4gc2VsZi5jb21taXRzLml0ZW1z
KCk6CisgICAgICAgICAgICBpZiBicmFuY2ggPT0gc29tZXRoaW5nOgorICAgICAgICAgICAgICAg
IHJldHVybiBjb21taXRzWy0xXQorICAgICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRzOgor
ICAgICAgICAgICAgICAgIGlmIHNvbWV0aGluZyA9PSBzdHIoY29tbWl0LnJldmlzaW9uKToKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbW1pdAorICAgICAgICAgICAgICAgIGlmIGxlbihz
b21ldGhpbmcpID4gNCBhbmQgY29tbWl0Lmhhc2guc3RhcnRzd2l0aChzdHIoc29tZXRoaW5nKSk6
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21taXQKKyAgICAgICAgcmV0dXJuIE5vbmUK
KworICAgIGRlZiBjb3VudChzZWxmLCBzb21ldGhpbmcpOgorICAgICAgICBtYXRjaCA9IHNlbGYu
ZmluZChzb21ldGhpbmcpCisgICAgICAgIGlmICcuLicgaW4gc29tZXRoaW5nIG9yIG5vdCBtYXRj
aC5icmFuY2hfcG9pbnQ6CisgICAgICAgICAgICByZXR1cm4gbWF0Y2guaWRlbnRpZmllcgorICAg
ICAgICByZXR1cm4gbWF0Y2guYnJhbmNoX3BvaW50CisKKyAgICBkZWYgYnJhbmNoZXNfb24oc2Vs
ZiwgaGFzaCk6CisgICAgICAgIHJlc3VsdCA9IHNldCgpCisgICAgICAgIGZvdW5kX2lkZW50aWZp
ZXIgPSAwCisgICAgICAgIGZvciBicmFuY2gsIGNvbW1pdHMgaW4gc2VsZi5jb21taXRzLml0ZW1z
KCk6CisKKyAgICAgICAgICAgIGZvciBjb21taXQgaW4gY29tbWl0czoKKyAgICAgICAgICAgICAg
ICBpZiBjb21taXQuaGFzaC5zdGFydHN3aXRoKGhhc2gpOgorICAgICAgICAgICAgICAgICAgICBm
b3VuZF9pZGVudGlmaWVyID0gbWF4KGNvbW1pdC5pZGVudGlmaWVyLCBmb3VuZF9pZGVudGlmaWVy
KQorICAgICAgICAgICAgICAgICAgICByZXN1bHQuYWRkKGJyYW5jaCkKKworICAgICAgICBpZiBz
ZWxmLmRlZmF1bHRfYnJhbmNoIGluIHJlc3VsdDoKKyAgICAgICAgICAgIGZvciBicmFuY2gsIGNv
bW1pdHMgaW4gc2VsZi5jb21taXRzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgaWYgY29tbWl0
c1swXS5icmFuY2hfcG9pbnQgYW5kIGNvbW1pdHNbMF0uYnJhbmNoX3BvaW50ID49IGZvdW5kX2lk
ZW50aWZpZXI6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoYnJhbmNoKQorICAgICAg
ICByZXR1cm4gcmVzdWx0CkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21w
eS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9zdm4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwvc3ZuLnB5
CShyZXZpc2lvbiAyNjc4OTIpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21w
eS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9zdm4ucHkJKHdvcmtpbmcgY29weSkKQEAgLTIxLDEy
ICsyMSwzMCBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBpbXBvcnQgb3MKK2ltcG9ydCByZQorCitmcm9t
IGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQogCiBmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgbW9j
a3MKIGZyb20gd2Via2l0c2NtcHkgaW1wb3J0IGxvY2FsCitmcm9tIHdlYmtpdHNjbXB5IGltcG9y
dCBDb21taXQsIENvbnRyaWJ1dG9yCiAKIAogY2xhc3MgU3ZuKG1vY2tzLlN1YnByb2Nlc3MpOgor
ICAgIEJSQU5DSF9SRSA9IHJlLmNvbXBpbGUocidcXi8oYnJhbmNoZXMvKT8oP1A8YnJhbmNoPi4r
KScpCisgICAgVVRDX09GRlNFVCA9ICctMDEwMCcKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRl
ZiBsb2dfbGluZShjbHMsIGNvbW1pdCk6CisgICAgICAgIGVtYWlsID0gJyhubyBhdXRob3IpJwor
ICAgICAgICBpZiBjb21taXQuYXV0aG9yOgorICAgICAgICAgICAgZW1haWwgPSBjb21taXQuYXV0
aG9yLmVtYWlsIG9yIGNvbW1pdC5hdXRob3IubmFtZQorICAgICAgICByZXR1cm4gJ3J7cmV2aXNp
b259IHwge2VtYWlsfSB8IHtkYXRlfScuZm9ybWF0KAorICAgICAgICAgICAgcmV2aXNpb249Y29t
bWl0LnJldmlzaW9uLAorICAgICAgICAgICAgZW1haWw9ZW1haWwsCisgICAgICAgICAgICBkYXRl
PWRhdGV0aW1lLmZyb210aW1lc3RhbXAoY29tbWl0LnRpbWVzdGFtcCkuc3RyZnRpbWUoJyVZLSVt
LSVkICVIOiVNOiVTIHt9ICglYSwgJWQgJWIgJVkpJy5mb3JtYXQoY2xzLlVUQ19PRkZTRVQpKSwK
KyAgICAgICAgKQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGg9Jy8uaW52YWxpZC1zdm4n
LCBicmFuY2g9Tm9uZSwgcmVtb3RlPU5vbmUsIGJyYW5jaGVzPU5vbmUsIHRhZ3M9Tm9uZSk6CiAg
ICAgICAgIHNlbGYucGF0aCA9IHBhdGgKICAgICAgICAgc2VsZi5icmFuY2ggPSBicmFuY2ggb3Ig
J3RydW5rJwpAQCAtMzQsMzkgKzUyLDEyMiBAQCBjbGFzcyBTdm4obW9ja3MuU3VicHJvY2Vzcyk6
CiAKICAgICAgICAgc2VsZi5icmFuY2hlcyA9IGJyYW5jaGVzIG9yIFtdCiAgICAgICAgIHNlbGYu
dGFncyA9IHRhZ3Mgb3IgW10KKyAgICAgICAgc2VsZi5jb25uZWN0ZWQgPSBUcnVlCisKKyAgICAg
ICAgIyBQcm92aWRlIGEgcmVhc29uYWJsZSBzZXQgb2YgY29tbWl0cyB0byB0ZXN0IGFnYWluc3QK
KyAgICAgICAgY29udHJpYnV0b3IgPSBDb250cmlidXRvcihuYW1lPSdKb25hdGhhbiBCZWRhcmQn
LCBlbWFpbHM9WydqYmVkYXJkQGFwcGxlLmNvbSddKQorICAgICAgICBzZWxmLmNvbW1pdHMgPSB7
CisgICAgICAgICAgICAndHJ1bmsnOiBbCisgICAgICAgICAgICAgICAgQ29tbWl0KAorICAgICAg
ICAgICAgICAgICAgICBpZGVudGlmaWVyPScxQHRydW5rJywKKyAgICAgICAgICAgICAgICAgICAg
cmV2aXNpb249MSwKKyAgICAgICAgICAgICAgICAgICAgYXV0aG9yPWNvbnRyaWJ1dG9yLAorICAg
ICAgICAgICAgICAgICAgICB0aW1lc3RhbXA9MTYwMTY2MDEwMCwKKyAgICAgICAgICAgICAgICAg
ICAgbWVzc2FnZT0nMXN0IGNvbW1pdFxuJywKKyAgICAgICAgICAgICAgICApLCBDb21taXQoCisg
ICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI9JzJAdHJ1bmsnLAorICAgICAgICAgICAgICAg
ICAgICByZXZpc2lvbj0yLAorICAgICAgICAgICAgICAgICAgICBhdXRob3I9Y29udHJpYnV0b3Is
CisgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcD0xNjAxNjYxMTAwLAorICAgICAgICAgICAg
ICAgICAgICBtZXNzYWdlPScybmQgY29tbWl0XG4nLAorICAgICAgICAgICAgICAgICksIENvbW1p
dCgKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcj0nM0B0cnVuaycsCisgICAgICAgICAg
ICAgICAgICAgIHJldmlzaW9uPTQsCisgICAgICAgICAgICAgICAgICAgIGF1dGhvcj1jb250cmli
dXRvciwKKyAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wPTE2MDE2NjMxMDAsCisgICAgICAg
ICAgICAgICAgICAgIG1lc3NhZ2U9JzR0aCBjb21taXRcbicsCisgICAgICAgICAgICAgICAgKSwg
Q29tbWl0KAorICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyPSc0QHRydW5rJywKKyAgICAg
ICAgICAgICAgICAgICAgcmV2aXNpb249NiwKKyAgICAgICAgICAgICAgICAgICAgYXV0aG9yPWNv
bnRyaWJ1dG9yLAorICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA9MTYwMTY2NTEwMCwKKyAg
ICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nNnRoIGNvbW1pdFxuJywKKyAgICAgICAgICAgICAg
ICApLAorICAgICAgICAgICAgXSwgJ2JyYW5jaC1hJzogWworICAgICAgICAgICAgICAgIENvbW1p
dCgKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcj0nMi4xQGJyYW5jaC1hJywKKyAgICAg
ICAgICAgICAgICAgICAgcmV2aXNpb249MywKKyAgICAgICAgICAgICAgICAgICAgYXV0aG9yPWNv
bnRyaWJ1dG9yLAorICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA9MTYwMTY2MjEwMCwKKyAg
ICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nM3JkIGNvbW1pdFxuJywKKyAgICAgICAgICAgICAg
ICApLCBDb21taXQoCisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI9JzIuMkBicmFuY2gt
YScsCisgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uPTcsCisgICAgICAgICAgICAgICAgICAg
IGF1dGhvcj1jb250cmlidXRvciwKKyAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wPTE2MDE2
NjYxMDAsCisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9Jzd0aCBjb21taXRcbicsCisgICAg
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIF0sCisgICAgICAgIH0KKyAgICAgICAgc2VsZi5j
b21taXRzWydicmFuY2gtYiddID0gWworICAgICAgICAgICAgc2VsZi5jb21taXRzWydicmFuY2gt
YSddWzBdLCBDb21taXQoCisgICAgICAgICAgICAgICAgaWRlbnRpZmllcj0nMi4yQGJyYW5jaC1i
JywKKyAgICAgICAgICAgICAgICByZXZpc2lvbj01LAorICAgICAgICAgICAgICAgIGF1dGhvcj1j
b250cmlidXRvciwKKyAgICAgICAgICAgICAgICB0aW1lc3RhbXA9MTYwMTY2NDEwMCwKKyAgICAg
ICAgICAgICAgICBtZXNzYWdlPSc1dGggY29tbWl0XG4nLAorICAgICAgICAgICAgKSwgQ29tbWl0
KAorICAgICAgICAgICAgICAgIGlkZW50aWZpZXI9JzIuM0BicmFuY2gtYicsCisgICAgICAgICAg
ICAgICAgcmV2aXNpb249OCwKKyAgICAgICAgICAgICAgICBhdXRob3I9Y29udHJpYnV0b3IsCisg
ICAgICAgICAgICAgICAgdGltZXN0YW1wPTE2MDE2NjcxMDAsCisgICAgICAgICAgICAgICAgbWVz
c2FnZT0nOHRoIGNvbW1pdFxuJywKKyAgICAgICAgICAgICksCisgICAgICAgIF0KIAogICAgICAg
ICBzdXBlcihTdm4sIHNlbGYpLl9faW5pdF9fKAogICAgICAgICAgICAgbW9ja3MuU3VicHJvY2Vz
cy5Sb3V0ZSgKICAgICAgICAgICAgICAgICBsb2NhbC5Tdm4uZXhlY3V0YWJsZSwgJ2luZm8nLAog
ICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCi0gICAgICAgICAgICAgICAgZ2VuZXJhdG9y
PWxhbWJkYSAqYXJncywgKiprd2FyZ3M6IG1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKAotICAgICAg
ICAgICAgICAgICAgICByZXR1cm5jb2RlPTAsCi0gICAgICAgICAgICAgICAgICAgIHN0ZG91dD0K
LSAgICAgICAgICAgICAgICAgICAgICAgICdQYXRoOiAuXG4nCi0gICAgICAgICAgICAgICAgICAg
ICAgICAnV29ya2luZyBDb3B5IFJvb3QgUGF0aDoge3BhdGh9XG4nCi0gICAgICAgICAgICAgICAg
ICAgICAgICAnVVJMOiB7cmVtb3RlfS97YnJhbmNofXtkaXJlY3Rvcnl9XG4nCi0gICAgICAgICAg
ICAgICAgICAgICAgICAnUmVsYXRpdmUgVVJMOiBeL3ticmFuY2h9e2RpcmVjdG9yeX1cbicKLSAg
ICAgICAgICAgICAgICAgICAgICAgICdSZXBvc2l0b3J5IFJvb3Q6IHtyZW1vdGV9XG4nLmZvcm1h
dCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcnk9a3dhcmdzLmdldCgnY3dk
JywgJycpW2xlbihzZWxmLnBhdGgpOl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0
aD1zZWxmLnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlPXNlbGYucmVt
b3RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaD1zZWxmLmJyYW5jaCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg
ICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogc2VsZi5faW5mbyhjd2Q9a3dh
cmdzLmdldCgnY3dkJywnJykpCisgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRl
KAorICAgICAgICAgICAgICAgIGxvY2FsLlN2bi5leGVjdXRhYmxlLCAnaW5mbycsIHNlbGYuQlJB
TkNIX1JFLAorICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCisgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yPWxhbWJkYSAqYXJncywgKiprd2FyZ3M6IHNlbGYuX2luZm8oYnJhbmNoPXNlbGYu
QlJBTkNIX1JFLm1hdGNoKGFyZ3NbMl0pLmdyb3VwKCdicmFuY2gnKSwgY3dkPWt3YXJncy5nZXQo
J2N3ZCcsICcnKSkKICAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCiAgICAg
ICAgICAgICAgICAgbG9jYWwuU3ZuLmV4ZWN1dGFibGUsICdsaXN0JywgJ14vYnJhbmNoZXMnLAog
ICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
PWxhbWJkYSAqYXJncywgKiprd2FyZ3M6IG1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKAogICAgICAg
ICAgICAgICAgICAgICByZXR1cm5jb2RlPTAsCi0gICAgICAgICAgICAgICAgICAgIHN0ZG91dD0n
L1xuJy5qb2luKHNlbGYuYnJhbmNoZXMpICsgJy9cbicsCi0gICAgICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgICAgICAgICAgc3Rkb3V0PScvXG4nLmpvaW4oc29ydGVkKHNldChzZWxmLmJyYW5j
aGVzKSB8IHNldChzZWxmLmNvbW1pdHMua2V5cygpKSAtIHsndHJ1bmsnfSkpICsgJy9cbicsCisg
ICAgICAgICAgICAgICAgKSBpZiBzZWxmLmNvbm5lY3RlZCBlbHNlIG1vY2tzLlByb2Nlc3NDb21w
bGV0aW9uKHJldHVybmNvZGU9MSksCiAgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJv
dXRlKAogICAgICAgICAgICAgICAgIGxvY2FsLlN2bi5leGVjdXRhYmxlLCAnbGlzdCcsICdeL3Rh
Z3MnLAogICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCiAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yPWxhbWJkYSAqYXJncywgKiprd2FyZ3M6IG1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKAog
ICAgICAgICAgICAgICAgICAgICByZXR1cm5jb2RlPTAsCiAgICAgICAgICAgICAgICAgICAgIHN0
ZG91dD0nL1xuJy5qb2luKHNlbGYudGFncykgKyAnL1xuJywKLSAgICAgICAgICAgICAgICApLAor
ICAgICAgICAgICAgICAgICkgaWYgc2VsZi5jb25uZWN0ZWQgZWxzZSBtb2Nrcy5Qcm9jZXNzQ29t
cGxldGlvbihyZXR1cm5jb2RlPTEpLAorICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5S
b3V0ZSgKKyAgICAgICAgICAgICAgICBsb2NhbC5Tdm4uZXhlY3V0YWJsZSwgJ2xvZycsICctdics
ICctcScsIHNlbGYucmVtb3RlLCAnLXInLCByZS5jb21waWxlKHInXGQrJyksCisgICAgICAgICAg
ICAgICAgY3dkPXNlbGYucGF0aCwKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRhICph
cmdzLCAqKmt3YXJnczogbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24oCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybmNvZGU9MCwKKyAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PQorICAgICAgICAg
ICAgICAgICAgICAgICAgJ3tsaW5lfVxuJworICAgICAgICAgICAgICAgICAgICAgICAgJ0NoYW5n
ZWQgcGF0aHM6XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAnICAgIE0gL3ticmFuY2h9L0No
YW5nZUxvZ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBNIC97YnJhbmNofS9maWxl
LmNwcFxuJy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZT1zZWxmLmxv
Z19saW5lKHNlbGYuZmluZChyZXZpc2lvbj1hcmdzWzZdKSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJhbmNoPSd0cnVuaycgaWYgc2VsZi5maW5kKHJldmlzaW9uPWFyZ3NbNl0pLmJy
YW5jaCA9PSAndHJ1bmsnIGVsc2UgJ2JyYW5jaGVzL3t9Jy5mb3JtYXQoc2VsZi5maW5kKHJldmlz
aW9uPWFyZ3NbNl0pLmJyYW5jaCkKKyAgICAgICAgICAgICAgICAgICAgICAgICksCisgICAgICAg
ICAgICAgICAgKSBpZiBzZWxmLmNvbm5lY3RlZCBhbmQgc2VsZi5maW5kKHJldmlzaW9uPWFyZ3Nb
Nl0pIGVsc2UgbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0xKSwKKyAgICAgICAg
ICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCisgICAgICAgICAgICAgICAgbG9jYWwuU3Zu
LmV4ZWN1dGFibGUsICdsb2cnLCAnLXEnLCBzZWxmLkJSQU5DSF9SRSwKKyAgICAgICAgICAgICAg
ICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAgICAgICAgIGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3Ms
ICoqa3dhcmdzOiBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbigKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuY29kZT0wLAorICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9J1xue31cbicuZm9ybWF0
KCctJyAqIDcyKS5qb2luKFsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nX2xpbmUo
Y29tbWl0KSBmb3IgY29tbWl0IGluIHNlbGYuX2NvbW1pdHNfZm9yKGJyYW5jaD1zZWxmLkJSQU5D
SF9SRS5tYXRjaChhcmdzWzNdKS5ncm91cCgnYnJhbmNoJykpCisgICAgICAgICAgICAgICAgICAg
IF0pLAorICAgICAgICAgICAgICAgICkgaWYgc2VsZi5jb25uZWN0ZWQgYW5kIHNlbGYuQlJBTkNI
X1JFLm1hdGNoKGFyZ3NbM10pLmdyb3VwKCdicmFuY2gnKSBpbiBzZWxmLmNvbW1pdHMgZWxzZSBt
b2Nrcy5Qcm9jZXNzQ29tcGxldGlvbihyZXR1cm5jb2RlPTEpCisgICAgICAgICAgICApLCBtb2Nr
cy5TdWJwcm9jZXNzLlJvdXRlKAorICAgICAgICAgICAgICAgIGxvY2FsLlN2bi5leGVjdXRhYmxl
LCAnbG9nJywgJy1sJywgJzEnLCAnLXInLCByZS5jb21waWxlKHInXGQrJyksIHNlbGYuQlJBTkNI
X1JFLAorICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCisgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yPWxhbWJkYSAqYXJncywgKiprd2FyZ3M6IHNlbGYuX2xvZ19mb3IoCisgICAgICAgICAg
ICAgICAgICAgIGJyYW5jaD1zZWxmLkJSQU5DSF9SRS5tYXRjaChhcmdzWzZdKS5ncm91cCgnYnJh
bmNoJyksCisgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uPWFyZ3NbNV0sCisgICAgICAgICAg
ICAgICAgKSBpZiBzZWxmLmNvbm5lY3RlZCBlbHNlIG1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKHJl
dHVybmNvZGU9MSkKICAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCiAgICAg
ICAgICAgICAgICAgbG9jYWwuU3ZuLmV4ZWN1dGFibGUsCiAgICAgICAgICAgICAgICAgY3dkPXNl
bGYucGF0aCwKQEAgLTgyLDMgKzE4Myw2NyBAQCBjbGFzcyBTdm4obW9ja3MuU3VicHJvY2Vzcyk6
CiAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKSwKICAgICAgICAgKQorCisgICAgZGVm
IF9pbmZvKHNlbGYsIGJyYW5jaD1Ob25lLCByZXZpc2lvbj1Ob25lLCBjd2Q9JycpOgorICAgICAg
ICBjb21taXQgPSBzZWxmLmZpbmQoYnJhbmNoPWJyYW5jaCwgcmV2aXNpb249cmV2aXNpb24pCisg
ICAgICAgIGlmIG5vdCBjb21taXQ6CisgICAgICAgICAgICByZXR1cm4gbW9ja3MuUHJvY2Vzc0Nv
bXBsZXRpb24ocmV0dXJuY29kZT0xLCBzdGRlcnI9J3N2bjogRTE2MDAwNjogTm8gc3VjaCByZXZp
c2lvbiB7fVxuJy5mb3JtYXQocmV2aXNpb24pKQorCisgICAgICAgIHJldHVybiBtb2Nrcy5Qcm9j
ZXNzQ29tcGxldGlvbigKKyAgICAgICAgICAgIHJldHVybmNvZGU9MCwKKyAgICAgICAgICAgIHN0
ZG91dD0KKyAgICAgICAgICAgICdQYXRoOiAuXG4nCisgICAgICAgICAgICAnV29ya2luZyBDb3B5
IFJvb3QgUGF0aDoge3BhdGh9XG4nCisgICAgICAgICAgICAnVVJMOiB7cmVtb3RlfS97YnJhbmNo
fXtkaXJlY3Rvcnl9XG4nCisgICAgICAgICAgICAnUmVsYXRpdmUgVVJMOiBeL3ticmFuY2h9e2Rp
cmVjdG9yeX1cbicKKyAgICAgICAgICAgICdSZXBvc2l0b3J5IFJvb3Q6IHtyZW1vdGV9XG4nCisg
ICAgICAgICAgICAnUmV2aXNpb246IHtyZXZpc2lvbn1cbicKKyAgICAgICAgICAgICdOb2RlS2lu
ZDogZGlyZWN0b3J5XG4nCisgICAgICAgICAgICAnU2NoZWR1bGU6IG5vcm1hbFxuJworICAgICAg
ICAgICAgJ0xhc3QgQ2hhbmdlZCBBdXRob3I6IHthdXRob3J9XG4nCisgICAgICAgICAgICAnTGFz
dCBDaGFuZ2VkIFJldjoge3JldmlzaW9ufVxuJworICAgICAgICAgICAgJ0xhc3QgQ2hhbmdlZCBE
YXRlOiB7ZGF0ZX0nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICBkaXJlY3Rvcnk9Y3dkW2xlbihz
ZWxmLnBhdGgpOl0sCisgICAgICAgICAgICAgICAgcGF0aD1zZWxmLnBhdGgsCisgICAgICAgICAg
ICAgICAgcmVtb3RlPXNlbGYucmVtb3RlLAorICAgICAgICAgICAgICAgIGJyYW5jaD1zZWxmLmJy
YW5jaCwKKyAgICAgICAgICAgICAgICByZXZpc2lvbj1jb21taXQucmV2aXNpb24sCisgICAgICAg
ICAgICAgICAgYXV0aG9yPWNvbW1pdC5hdXRob3IuZW1haWwsCisgICAgICAgICAgICAgICAgZGF0
ZT1kYXRldGltZS5mcm9tdGltZXN0YW1wKGNvbW1pdC50aW1lc3RhbXApLnN0cmZ0aW1lKCclWS0l
bS0lZCAlSDolTTolUyB7fSAoJWEsICVkICViICVZKScuZm9ybWF0KHNlbGYuVVRDX09GRlNFVCkp
LAorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorCisgICAgZGVmIF9jb21taXRzX2ZvcihzZWxm
LCBicmFuY2g9J3RydW5rJyk6CisgICAgICAgIGlmIGJyYW5jaCBub3QgaW4gc2VsZi5jb21taXRz
OgorICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgIHJlc3VsdCA9IFtjb21taXQgZm9yIGNv
bW1pdCBpbiByZXZlcnNlZChzZWxmLmNvbW1pdHNbYnJhbmNoXSldCisgICAgICAgIGlmIHNlbGYu
Y29tbWl0c1ticmFuY2hdWzBdLmJyYW5jaF9wb2ludDoKKyAgICAgICAgICAgIHJlc3VsdCArPSBb
Y29tbWl0IGZvciBjb21taXQgaW4gcmV2ZXJzZWQoc2VsZi5jb21taXRzWyd0cnVuayddWzpzZWxm
LmNvbW1pdHNbYnJhbmNoXVswXS5icmFuY2hfcG9pbnRdKV0KKyAgICAgICAgcmV0dXJuIHJlc3Vs
dAorCisgICAgZGVmIF9sb2dfZm9yKHNlbGYsIGJyYW5jaD1Ob25lLCByZXZpc2lvbj1Ob25lKToK
KyAgICAgICAgY29tbWl0ID0gc2VsZi5maW5kKGJyYW5jaD1icmFuY2gsIHJldmlzaW9uPXJldmlz
aW9uKQorICAgICAgICBpZiBub3QgY29tbWl0OgorICAgICAgICAgICAgcmV0dXJuIG1vY2tzLlBy
b2Nlc3NDb21wbGV0aW9uKHJldHVybmNvZGU9MSkKKyAgICAgICAgcmV0dXJuIG1vY2tzLlByb2Nl
c3NDb21wbGV0aW9uKAorICAgICAgICAgICAgcmV0dXJuY29kZT0wLAorICAgICAgICAgICAgc3Rk
b3V0PQorICAgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAg
ICAne2xpbmV9IHwge2xpbmVzfSBsaW5lc1xuXG4nCisgICAgICAgICAgICAgICAgJ3tsb2d9XG4n
LmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgbGluZT1zZWxmLmxvZ19saW5lKGNvbW1pdCks
CisgICAgICAgICAgICAgICAgICAgIGxpbmVzPWxlbihjb21taXQubWVzc2FnZS5zcGxpdGxpbmVz
KCkpLAorICAgICAgICAgICAgICAgICAgICBsb2c9Y29tbWl0Lm1lc3NhZ2UKKyAgICAgICAgICAg
ICAgICApLAorICAgICAgICApCisKKyAgICBkZWYgZmluZChzZWxmLCBicmFuY2g9Tm9uZSwgcmV2
aXNpb249Tm9uZSk6CisgICAgICAgIGlmIG5vdCBicmFuY2ggYW5kIG5vdCByZXZpc2lvbjoKKyAg
ICAgICAgICAgIHJldHVybiBzZWxmLmNvbW1pdHNbJ3RydW5rJ11bLTFdCisgICAgICAgIGZvciBj
YW5kaWRhdGUgaW4gW2JyYW5jaF0gaWYgYnJhbmNoIGVsc2UgbGlzdChzZWxmLmNvbW1pdHMua2V5
cygpKToKKyAgICAgICAgICAgIGlmIG5vdCByZXZpc2lvbjoKKyAgICAgICAgICAgICAgICByZXR1
cm4gc2VsZi5jb21taXRzW2NhbmRpZGF0ZV1bLTFdCisgICAgICAgICAgICBmb3IgY29tbWl0IGlu
IHNlbGYuY29tbWl0c1tjYW5kaWRhdGVdOgorICAgICAgICAgICAgICAgIGlmIHN0cihjb21taXQu
cmV2aXNpb24pID09IHN0cihyZXZpc2lvbik6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBj
b21taXQKKyAgICAgICAgcmV0dXJuIE5vbmUKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvY29udHJpYnV0b3JfdW5pdHRlc3QucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvdGVzdC9jb250cmlidXRvcl91bml0dGVzdC5weQkocmV2aXNpb24gMjY3ODkyKQorKysgVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9jb250cmli
dXRvcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsMTMgQEAgY2xhc3Mg
VGVzdENvbnRyaWJ1dG9yKHVuaXR0ZXN0LlRlc3RDYXNlKQogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNvbnRyaWJ1dG9yLm5hbWUsICdqYmVkYXJkQGFwcGxlLmNvbScpCiAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY29udHJpYnV0b3IuZW1haWxzLCBbJ2piZWRhcmRAYXBwbGUuY29tJ10pCiAK
KyAgICBkZWYgdGVzdF9zaG9ydF9zdm5fbG9nKHNlbGYpOgorICAgICAgICBDb250cmlidXRvci5j
bGVhcigpCisgICAgICAgIGNvbnRyaWJ1dG9yID0gQ29udHJpYnV0b3IuZnJvbV9zY21fbG9nKCdy
MjY2NzUxIHwgamJlZGFyZEBhcHBsZS5jb20gfCAyMDIwLTA5LTA4IDE0OjMzOjQyIC0wNzAwIChU
dWUsIDA4IFNlcCAyMDIwKSB8IDEgbGluZScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
b250cmlidXRvci5uYW1lLCAnamJlZGFyZEBhcHBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNvbnRyaWJ1dG9yLmVtYWlscywgWydqYmVkYXJkQGFwcGxlLmNvbSddKQorCiAgICAg
ZGVmIHRlc3Rfc3ZuX3BhdGNoX2J5X2xvZyhzZWxmKToKICAgICAgICAgQ29udHJpYnV0b3IuY2xl
YXIoKQogICAgICAgICBjb250cmlidXRvciA9IENvbnRyaWJ1dG9yLmZyb21fc2NtX2xvZygnUGF0
Y2ggYnkgSm9uYXRoYW4gQmVkYXJkIDxqYmVkYXJkQGFwcGxlLmNvbT4gb24gMjAyMC0wOS0xMCcp
CkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90
ZXN0L2dpdF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2dpdF91bml0dGVzdC5weQkocmV2aXNpb24g
MjY3ODkyKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvdGVzdC9naXRfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTU1LDEwICs1NSwxMCBA
QCBjbGFzcyBUZXN0R2l0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobG9jYWwuR2l0KHNlbGYucGF0aCkucmVtb3RlKCksIHJlcG8ucmVtb3RlKQogCiAg
ICAgZGVmIHRlc3RfYnJhbmNoZXMoc2VsZik6Ci0gICAgICAgIHdpdGggbW9ja3MubG9jYWwuR2l0
KHNlbGYucGF0aCwgYnJhbmNoZXM9KCdicmFuY2gtMScsICdicmFuY2gtMicsICdyZW1vdGVzL29y
aWdpbi9icmFuY2gtMycpKToKKyAgICAgICAgd2l0aCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRo
LCBicmFuY2hlcz0oJ3JlbW90ZXMvb3JpZ2luL2JyYW5jaC0zJywpKToKICAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICAgICAgbG9jYWwuR2l0KHNlbGYucGF0aCkuYnJh
bmNoZXMsCi0gICAgICAgICAgICAgICAgWydtYWluJywgJ2JyYW5jaC0xJywgJ2JyYW5jaC0yJywg
J2JyYW5jaC0zJ10sCisgICAgICAgICAgICAgICAgWydicmFuY2gtMycsICdicmFuY2gtYScsICdi
cmFuY2gtYicsICdtYWluJ10sCiAgICAgICAgICAgICApCiAKICAgICBkZWYgdGVzdF90YWdzKHNl
bGYpOgpAQCAtODYsMTEgKzg2LDEwOSBAQCBjbGFzcyBUZXN0R2l0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMobG9jYWwuR2l0LkV4Y2VwdGlv
bik6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWN0KCksIGxvY2FsLkdpdChz
ZWxmLnBhdGgpLmluZm8oKSkKIAotICAgICAgICB3aXRoIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBh
dGgsIGdpdF9zdm49VHJ1ZSksIE1vY2tUaW1lLCBMb2dnZXJDYXB0dXJlKCk6Ci0gICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICB3aXRoIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBh
dGgsIGdpdF9zdm49VHJ1ZSksIE1vY2tUaW1lOgorICAgICAgICAgICAgc2VsZi5hc3NlcnREaWN0
RXF1YWwoCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAnUGF0aCc6ICcu
JywKICAgICAgICAgICAgICAgICAgICAgJ1JlcG9zaXRvcnkgUm9vdCc6ICdnaXRAd2Via2l0Lm9y
ZzovbW9jay9yZXBvc2l0b3J5JywKICAgICAgICAgICAgICAgICAgICAgJ1VSTCc6ICdnaXRAd2Vi
a2l0Lm9yZzovbW9jay9yZXBvc2l0b3J5L21haW4nLAorICAgICAgICAgICAgICAgICAgICAnUmV2
aXNpb24nOiAnNicsCisgICAgICAgICAgICAgICAgICAgICdOb2RlIEtpbmQnOiAnZGlyZWN0b3J5
JywKKyAgICAgICAgICAgICAgICAgICAgJ1NjaGVkdWxlJzogJ25vcm1hbCcsCisgICAgICAgICAg
ICAgICAgICAgICdMYXN0IENoYW5nZWQgQXV0aG9yJzogJ2piZWRhcmRAYXBwbGUuY29tJywKKyAg
ICAgICAgICAgICAgICAgICAgJ0xhc3QgQ2hhbmdlZCBSZXYnOiAnNicsCisgICAgICAgICAgICAg
ICAgICAgICdMYXN0IENoYW5nZWQgRGF0ZSc6ICcyMDIwLTEwLTAyIDExOjU2OjQwJywKICAgICAg
ICAgICAgICAgICB9LCBsb2NhbC5HaXQoc2VsZi5wYXRoKS5pbmZvKCksCiAgICAgICAgICAgICAp
CisKKyAgICBkZWYgdGVzdF9jb21taXRfcmV2aXNpb24oc2VsZik6CisgICAgICAgIHdpdGggbW9j
a3MubG9jYWwuR2l0KHNlbGYucGF0aCksIE1vY2tUaW1lLCBMb2dnZXJDYXB0dXJlKCk6CisgICAg
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGxvY2FsLkdpdC5FeGNlcHRpb24pOgorICAg
ICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgbG9jYWwuR2l0KHNlbGYucGF0aCku
Y29tbWl0KHJldmlzaW9uPTEpKQorCisgICAgICAgIHdpdGggbW9ja3MubG9jYWwuR2l0KHNlbGYu
cGF0aCwgZ2l0X3N2bj1UcnVlKSwgTW9ja1RpbWUsIExvZ2dlckNhcHR1cmUoKToKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2kxQG1haW4nLCBzdHIobG9jYWwuR2l0KHNlbGYucGF0aCku
Y29tbWl0KHJldmlzaW9uPTEpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2kyQG1h
aW4nLCBzdHIobG9jYWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KHJldmlzaW9uPTIpKSkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2kyLjFAYnJhbmNoLWEnLCBzdHIobG9jYWwuR2l0KHNl
bGYucGF0aCkuY29tbWl0KHJldmlzaW9uPTMpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ2kzQG1haW4nLCBzdHIobG9jYWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KHJldmlzaW9uPTQp
KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2kyLjJAYnJhbmNoLWInLCBzdHIobG9j
YWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KHJldmlzaW9uPTUpKSkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ2k0QG1haW4nLCBzdHIobG9jYWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KHJl
dmlzaW9uPTYpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2kyLjJAYnJhbmNoLWEn
LCBzdHIobG9jYWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KHJldmlzaW9uPTcpKSkKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2kyLjNAYnJhbmNoLWInLCBzdHIobG9jYWwuR2l0KHNlbGYu
cGF0aCkuY29tbWl0KHJldmlzaW9uPTgpKSkKKworICAgICAgICAgICAgIyBPdXQtb2YtYm91bmRz
IGNvbW1pdAorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhsb2NhbC5HaXQuRXhj
ZXB0aW9uKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIGxvY2FsLkdp
dChzZWxmLnBhdGgpLmNvbW1pdChyZXZpc2lvbj0xMCkpCisKKyAgICBkZWYgdGVzdF9jb21taXRf
aGFzaChzZWxmKToKKyAgICAgICAgZm9yIG1vY2sgaW4gW21vY2tzLmxvY2FsLkdpdChzZWxmLnBh
dGgpLCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoLCBnaXRfc3ZuPVRydWUpXToKKyAgICAgICAg
ICAgIHdpdGggbW9jaywgTW9ja1RpbWUsIExvZ2dlckNhcHR1cmUoKToKKyAgICAgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdpMUBtYWluJywgc3RyKGxvY2FsLkdpdChzZWxmLnBhdGgpLmNv
bW1pdChoYXNoPSc5YjgzMTFmMicpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdpMkBtYWluJywgc3RyKGxvY2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdChoYXNoPSdmZmY4M2Ji
MicpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdpM0BtYWluJywgc3RyKGxv
Y2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdChoYXNoPScxYWJlMjViNCcpKSkKKyAgICAgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdpNEBtYWluJywgc3RyKGxvY2FsLkdpdChzZWxmLnBhdGgp
LmNvbW1pdChoYXNoPSdiYWU1ZDFlOScpKSkKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ2kyLjFAYnJhbmNoLWEnLCBzdHIobG9jYWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KGhh
c2g9J2EzMGNlODQ5JykpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2kyLjJA
YnJhbmNoLWEnLCBzdHIobG9jYWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KGhhc2g9JzYyMTY1MmFk
JykpKQorCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaTIuMkBicmFuY2gtYics
IHN0cihsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQoaGFzaD0nM2NkMzJlMzUnKSkpCisgICAg
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaTIuM0BicmFuY2gtYicsIHN0cihsb2NhbC5H
aXQoc2VsZi5wYXRoKS5jb21taXQoaGFzaD0nNzkwNzI1YTYnKSkpCisKKyAgICBkZWYgdGVzdF9j
b21taXRfZnJvbV9icmFuY2goc2VsZik6CisgICAgICAgIGZvciBtb2NrIGluIFttb2Nrcy5sb2Nh
bC5HaXQoc2VsZi5wYXRoKSwgbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCwgZ2l0X3N2bj1UcnVl
KV06CisgICAgICAgICAgICB3aXRoIG1vY2ssIE1vY2tUaW1lLCBMb2dnZXJDYXB0dXJlKCk6Cisg
ICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaTRAbWFpbicsIHN0cihsb2NhbC5HaXQo
c2VsZi5wYXRoKS5jb21taXQoYnJhbmNoPSdtYWluJykpKQorICAgICAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ2kyLjJAYnJhbmNoLWEnLCBzdHIobG9jYWwuR2l0KHNlbGYucGF0aCkuY29t
bWl0KGJyYW5jaD0nYnJhbmNoLWEnKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnaTIuM0BicmFuY2gtYicsIHN0cihsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQoYnJhbmNo
PSdicmFuY2gtYicpKSkKKworICAgIGRlZiB0ZXN0X2lkZW50aWZpZXIoc2VsZik6CisgICAgICAg
IGZvciBtb2NrIGluIFttb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoKSwgbW9ja3MubG9jYWwuR2l0
KHNlbGYucGF0aCwgZ2l0X3N2bj1UcnVlKV06CisgICAgICAgICAgICB3aXRoIG1vY2ssIE1vY2tU
aW1lLCBMb2dnZXJDYXB0dXJlKCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgK
KyAgICAgICAgICAgICAgICAgICAgJzliODMxMWYyNWE3N2JhMTQ5MjNkOWQ1YTY1MzIxMDNmNTRh
YmVmY2InLAorICAgICAgICAgICAgICAgICAgICBsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQo
aWRlbnRpZmllcj0naTFAbWFpbicpLmhhc2gsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgICAgICdmZmY4M2JiMmQ5
MTcxYjRkOTE5NmU5NzdlYjA1MDhmZDU3ZTdhMDhkJywKKyAgICAgICAgICAgICAgICAgICAgbG9j
YWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KGlkZW50aWZpZXI9J2kyQG1haW4nKS5oYXNoLAorICAg
ICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgICAgICAgICAnMWFiZTI1YjQ0M2U5ODVmOTNiOTBkODMwZTRhN2UzNzMxMzM2YWY0ZCcs
CisgICAgICAgICAgICAgICAgICAgIGxvY2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdChpZGVudGlm
aWVyPSdpM0BtYWluJykuaGFzaCwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgJ2JhZTVkMWU5MDk5OWQ0Zjkx
NmE4YTE1ODEwY2NmYTQzZjM3YTJmZDYnLAorICAgICAgICAgICAgICAgICAgICBsb2NhbC5HaXQo
c2VsZi5wYXRoKS5jb21taXQoaWRlbnRpZmllcj0naTRAbWFpbicpLmhhc2gsCisgICAgICAgICAg
ICAgICAgKQorCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
ICAgICAgICAgJ2EzMGNlODQ5NGJmMWFjMjgwN2E2OTg0NGY3MjZiZTRhOTg0M2NhNTUnLAorICAg
ICAgICAgICAgICAgICAgICBsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQoaWRlbnRpZmllcj0n
aTIuMUBicmFuY2gtYScpLmhhc2gsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgICAgICc2MjE2NTJhZGQ3ZmM0MTYw
OTliZDIwNjMzNjZjYzM4ZmY2MWFmZTM2JywKKyAgICAgICAgICAgICAgICAgICAgbG9jYWwuR2l0
KHNlbGYucGF0aCkuY29tbWl0KGlkZW50aWZpZXI9J2kyLjJAYnJhbmNoLWEnKS5oYXNoLAorICAg
ICAgICAgICAgICAgICkKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICAgICAgICAgICczY2QzMmUzNTI0MTA1NjViYjU0MzgyMWZiZjg1NmE2ZDNjYWFkMWM0
JywKKyAgICAgICAgICAgICAgICAgICAgbG9jYWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KGlkZW50
aWZpZXI9J2kyLjJAYnJhbmNoLWInKS5oYXNoLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICAgICAnNzkwNzI1YTZk
NzllMjhkYjJlY2RkZTI5NTQ4ZDIyNjJjMGJkMDU5ZCcsCisgICAgICAgICAgICAgICAgICAgIGxv
Y2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdChpZGVudGlmaWVyPSdpMi4zQGJyYW5jaC1iJykuaGFz
aCwKKyAgICAgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9ub25fY2Fubm9uaWNhbF9pZGVu
dGlmaWVycyhzZWxmKToKKyAgICAgICAgZm9yIG1vY2sgaW4gW21vY2tzLmxvY2FsLkdpdChzZWxm
LnBhdGgpLCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoLCBnaXRfc3ZuPVRydWUpXToKKyAgICAg
ICAgICAgIHdpdGggbW9jaywgTW9ja1RpbWUsIExvZ2dlckNhcHR1cmUoKToKKyAgICAgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdpMkBtYWluJywgc3RyKGxvY2FsLkdpdChzZWxmLnBhdGgp
LmNvbW1pdChpZGVudGlmaWVyPSdpMEBicmFuY2gtYScpKSkKKyAgICAgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdpMUBtYWluJywgc3RyKGxvY2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdChp
ZGVudGlmaWVyPSdpLTFAYnJhbmNoLWEnKSkpCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdpMi4xQGJyYW5jaC1hJywgc3RyKGxvY2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdChp
ZGVudGlmaWVyPSdpMi4xQGJyYW5jaC1iJykpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ2kyQG1haW4nLCBzdHIobG9jYWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KGlkZW50aWZp
ZXI9J2kwQGJyYW5jaC1iJykpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2kx
QG1haW4nLCBzdHIobG9jYWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KGlkZW50aWZpZXI9J2ktMUBi
cmFuY2gtYicpKSkKKworICAgIGRlZiB0ZXN0X2dpdF9zdm5fcmV2aXNpb25fZXh0cmFjdChzZWxm
KToKKyAgICAgICAgd2l0aCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoLCBnaXRfc3ZuPVRydWUp
LCBNb2NrVGltZSwgTG9nZ2VyQ2FwdHVyZSgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgxLCBsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQoaGFzaD0nOWI4MzExZjInKS5yZXZpc2lv
bikKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5
L3Rlc3Qvc2NtX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3Qvc2NtX3VuaXR0ZXN0LnB5CShyZXZpc2lv
biAyNjc4OTIpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRz
Y21weS90ZXN0L3NjbV91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNDQsMyArNDQsMjMg
QEAgY2xhc3MgVGVzdFNjbSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfcmVtb3Rl
KHNlbGYpOgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJy
b3IpOgogICAgICAgICAgICAgbG9jYWwuU2NtKHNlbGYucGF0aCkucmVtb3RlKCkKKworICAgIGRl
ZiB0ZXN0X2Rldl9icmFuY2hlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvY2Fs
LlNjbS5ERVZfQlJBTkNIRVMubWF0Y2goJ2VuZy8xMjM0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShsb2NhbC5TY20uREVWX0JSQU5DSEVTLm1hdGNoKCdqYmVkYXJkL2VuZy8xMjM0JykpCisg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2NhbC5TY20uREVWX0JSQU5DSEVTLm1hdGNoKCdkZXYv
MTIzNCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobG9jYWwuU2NtLkRFVl9CUkFOQ0hFUy5t
YXRjaCgnamJlZGFyZC9kZXYvMTIzNCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobG9jYWwu
U2NtLkRFVl9CUkFOQ0hFUy5tYXRjaCgnYnVnLzEyMzQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGxvY2FsLlNjbS5ERVZfQlJBTkNIRVMubWF0Y2goJ2piZWRhcmQvYnVnLzEyMzQnKSkKKwor
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxvY2FsLlNjbS5ERVZfQlJBTkNIRVMubWF0Y2goJ21h
aW4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsb2NhbC5TY20uREVWX0JSQU5DSEVTLm1h
dGNoKCdyYW5kb20vMTIzNCcpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxvY2FsLlNjbS5E
RVZfQlJBTkNIRVMubWF0Y2goJ290aGVyLzEyMzQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShsb2NhbC5TY20uREVWX0JSQU5DSEVTLm1hdGNoKCdzYWZhcmktNjA2LWJyYW5jaCcpKQorCisg
ICAgZGVmIHRlc3RfcHJvZF9icmFuY2hlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KGxvY2FsLlNjbS5QUk9EX0JSQU5DSEVTLm1hdGNoKCdzYWZhcmktNjEwLWJyYW5jaCcpKQorICAg
ICAgICBzZWxmLmFzc2VydFRydWUobG9jYWwuU2NtLlBST0RfQlJBTkNIRVMubWF0Y2goJ3NhZmFy
aS02MTAuMS1icmFuY2gnKSkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxvY2FsLlNjbS5Q
Uk9EX0JSQU5DSEVTLm1hdGNoKCdtYWluJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9j
YWwuU2NtLlBST0RfQlJBTkNIRVMubWF0Y2goJ2VuZy8xMjM0JykpCkluZGV4OiBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L3N2bl91bml0dGVzdC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJr
aXRzY21weS90ZXN0L3N2bl91bml0dGVzdC5weQkocmV2aXNpb24gMjY3ODkyKQorKysgVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9zdm5fdW5pdHRl
c3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKIGltcG9ydCBvcwogaW1wb3J0
IHVuaXR0ZXN0CiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBPdXRwdXRDYXB0dXJlCiBmcm9t
IHdlYmtpdHNjbXB5IGltcG9ydCBsb2NhbCwgbW9ja3MKIAogCkBAIC01Myw3ICs1NCw3IEBAIGNs
YXNzIFRlc3RTdm4odW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICB3aXRoIG1vY2tzLmxvY2Fs
LlN2bihzZWxmLnBhdGgsIGJyYW5jaGVzPSgnYnJhbmNoLTEnLCAnYnJhbmNoLTInKSk6CiAgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgICAgIGxvY2FsLlN2bihzZWxm
LnBhdGgpLmJyYW5jaGVzLAotICAgICAgICAgICAgICAgIFsndHJ1bmsnLCAnYnJhbmNoLTEnLCAn
YnJhbmNoLTInXSwKKyAgICAgICAgICAgICAgICBbJ3RydW5rJywgJ2JyYW5jaC0xJywgJ2JyYW5j
aC0yJywgJ2JyYW5jaC1hJywgJ2JyYW5jaC1iJ10sCiAgICAgICAgICAgICApCiAKICAgICBkZWYg
dGVzdF90YWdzKHNlbGYpOgpAQCAtNzEsMyArNzIsNjEgQEAgY2xhc3MgVGVzdFN2bih1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgICAgIHdpdGggbW9ja3MubG9jYWwuU3ZuKHNlbGYucGF0aCk6CiAg
ICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobG9jYWwuU3ZuKHNlbGYucGF0aCkuaXNfc3ZuKQog
ICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsb2NhbC5Tdm4oc2VsZi5wYXRoKS5pc19naXQp
CisKKyAgICBkZWYgdGVzdF9pbmZvKHNlbGYpOgorICAgICAgICB3aXRoIG1vY2tzLmxvY2FsLlN2
bihzZWxmLnBhdGgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnREaWN0RXF1YWwoCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1J1BhdGgnOiB1Jy4nLAorICAgICAgICAg
ICAgICAgICAgICB1J1dvcmtpbmcgQ29weSBSb290IFBhdGgnOiB1Jy9tb2NrL3JlcG9zaXRvcnkn
LAorICAgICAgICAgICAgICAgICAgICB1J1JlcG9zaXRvcnkgUm9vdCc6IHUnaHR0cHM6Ly9zdm4u
bW9jay5vcmcvcmVwb3NpdG9yeS9yZXBvc2l0b3J5JywKKyAgICAgICAgICAgICAgICAgICAgdSdV
UkwnOiB1J2h0dHBzOi8vc3ZuLm1vY2sub3JnL3JlcG9zaXRvcnkvcmVwb3NpdG9yeS90cnVuaycs
CisgICAgICAgICAgICAgICAgICAgIHUnUmVsYXRpdmUgVVJMJzogIHUnXi90cnVuaycsCisgICAg
ICAgICAgICAgICAgICAgIHUnUmV2aXNpb24nOiB1JzYnLAorICAgICAgICAgICAgICAgICAgICB1
J05vZGVLaW5kJzogdSdkaXJlY3RvcnknLAorICAgICAgICAgICAgICAgICAgICB1J1NjaGVkdWxl
JzogdSdub3JtYWwnLAorICAgICAgICAgICAgICAgICAgICB1J0xhc3QgQ2hhbmdlZCBBdXRob3In
OiB1J2piZWRhcmRAYXBwbGUuY29tJywKKyAgICAgICAgICAgICAgICAgICAgdSdMYXN0IENoYW5n
ZWQgUmV2JzogdSc2JywKKyAgICAgICAgICAgICAgICAgICAgdSdMYXN0IENoYW5nZWQgRGF0ZSc6
IHUnMjAyMC0xMC0wMiAxMTo1ODoyMCAtMDEwMCAoRnJpLCAwMiBPY3QgMjAyMCknLAorICAgICAg
ICAgICAgICAgIH0sIGxvY2FsLlN2bihzZWxmLnBhdGgpLmluZm8oKSwKKyAgICAgICAgICAgICkK
KworICAgIGRlZiB0ZXN0X2NvbW1pdF9yZXZpc2lvbihzZWxmKToKKyAgICAgICAgd2l0aCBtb2Nr
cy5sb2NhbC5Tdm4oc2VsZi5wYXRoKSwgT3V0cHV0Q2FwdHVyZSgpOgorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnaTFAdHJ1bmsnLCBzdHIobG9jYWwuU3ZuKHNlbGYucGF0aCkuY29tbWl0
KHJldmlzaW9uPTEpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2kyQHRydW5rJywg
c3RyKGxvY2FsLlN2bihzZWxmLnBhdGgpLmNvbW1pdChyZXZpc2lvbj0yKSkpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdpMi4xQGJyYW5jaC1hJywgc3RyKGxvY2FsLlN2bihzZWxmLnBh
dGgpLmNvbW1pdChyZXZpc2lvbj0zKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdp
M0B0cnVuaycsIHN0cihsb2NhbC5Tdm4oc2VsZi5wYXRoKS5jb21taXQocmV2aXNpb249NCkpKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaTIuMkBicmFuY2gtYicsIHN0cihsb2NhbC5T
dm4oc2VsZi5wYXRoKS5jb21taXQocmV2aXNpb249NSkpKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnaTRAdHJ1bmsnLCBzdHIobG9jYWwuU3ZuKHNlbGYucGF0aCkuY29tbWl0KHJldmlz
aW9uPTYpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2kyLjJAYnJhbmNoLWEnLCBz
dHIobG9jYWwuU3ZuKHNlbGYucGF0aCkuY29tbWl0KHJldmlzaW9uPTcpKSkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ2kyLjNAYnJhbmNoLWInLCBzdHIobG9jYWwuU3ZuKHNlbGYucGF0
aCkuY29tbWl0KHJldmlzaW9uPTgpKSkKKworICAgICAgICAgICAgIyBPdXQtb2YtYm91bmRzIGNv
bW1pdAorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhsb2NhbC5Tdm4uRXhjZXB0
aW9uKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIGxvY2FsLlN2bihz
ZWxmLnBhdGgpLmNvbW1pdChyZXZpc2lvbj0xMCkpCisKKyAgICBkZWYgdGVzdF9jb21taXRfZnJv
bV9icmFuY2goc2VsZik6CisgICAgICAgIHdpdGggbW9ja3MubG9jYWwuU3ZuKHNlbGYucGF0aCks
IE91dHB1dENhcHR1cmUoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2k0QHRydW5r
Jywgc3RyKGxvY2FsLlN2bihzZWxmLnBhdGgpLmNvbW1pdChicmFuY2g9J3RydW5rJykpKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaTIuMkBicmFuY2gtYScsIHN0cihsb2NhbC5Tdm4o
c2VsZi5wYXRoKS5jb21taXQoYnJhbmNoPSdicmFuY2gtYScpKSkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ2kyLjNAYnJhbmNoLWInLCBzdHIobG9jYWwuU3ZuKHNlbGYucGF0aCkuY29t
bWl0KGJyYW5jaD0nYnJhbmNoLWInKSkpCisKKyAgICBkZWYgdGVzdF9pZGVudGlmaWVyKHNlbGYp
OgorICAgICAgICB3aXRoIG1vY2tzLmxvY2FsLlN2bihzZWxmLnBhdGgpLCBPdXRwdXRDYXB0dXJl
KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxvY2FsLlN2bihzZWxmLnBhdGgp
LmNvbW1pdChpZGVudGlmaWVyPSdpMUB0cnVuaycpLnJldmlzaW9uKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgyLCBsb2NhbC5Tdm4oc2VsZi5wYXRoKS5jb21taXQoaWRlbnRpZmllcj0n
aTJAdHJ1bmsnKS5yZXZpc2lvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMywgbG9j
YWwuU3ZuKHNlbGYucGF0aCkuY29tbWl0KGlkZW50aWZpZXI9J2kyLjFAYnJhbmNoLWEnKS5yZXZp
c2lvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNCwgbG9jYWwuU3ZuKHNlbGYucGF0
aCkuY29tbWl0KGlkZW50aWZpZXI9J2kzQHRydW5rJykucmV2aXNpb24pCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDUsIGxvY2FsLlN2bihzZWxmLnBhdGgpLmNvbW1pdChpZGVudGlmaWVy
PSdpMi4yQGJyYW5jaC1iJykucmV2aXNpb24pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDYsIGxvY2FsLlN2bihzZWxmLnBhdGgpLmNvbW1pdChpZGVudGlmaWVyPSdpNEB0cnVuaycpLnJl
dmlzaW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg3LCBsb2NhbC5Tdm4oc2VsZi5w
YXRoKS5jb21taXQoaWRlbnRpZmllcj0naTIuMkBicmFuY2gtYScpLnJldmlzaW9uKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCg4LCBsb2NhbC5Tdm4oc2VsZi5wYXRoKS5jb21taXQoaWRl
bnRpZmllcj0naTIuM0BicmFuY2gtYicpLnJldmlzaW9uKQorCisgICAgZGVmIHRlc3Rfbm9uX2Nh
bm5vbmljYWxfaWRlbnRpZmllcnMoc2VsZik6CisgICAgICAgIHdpdGggbW9ja3MubG9jYWwuU3Zu
KHNlbGYucGF0aCksIE91dHB1dENhcHR1cmUoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ2kyQHRydW5rJywgc3RyKGxvY2FsLlN2bihzZWxmLnBhdGgpLmNvbW1pdChpZGVudGlmaWVy
PSdpMEBicmFuY2gtYScpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2kxQHRydW5r
Jywgc3RyKGxvY2FsLlN2bihzZWxmLnBhdGgpLmNvbW1pdChpZGVudGlmaWVyPSdpLTFAYnJhbmNo
LWEnKSkpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2kyQHRydW5rJywgc3RyKGxv
Y2FsLlN2bihzZWxmLnBhdGgpLmNvbW1pdChpZGVudGlmaWVyPSdpMEBicmFuY2gtYicpKSkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2kxQHRydW5rJywgc3RyKGxvY2FsLlN2bihzZWxm
LnBhdGgpLmNvbW1pdChpZGVudGlmaWVyPSdpLTFAYnJhbmNoLWInKSkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410584</attachid>
            <date>2020-10-05 16:28:37 -0700</date>
            <delta_ts>2020-10-06 10:40:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216404-20201005162836.patch</filename>
            <type>text/plain</type>
            <size>70287</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2ODAxMikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU2IEBACisyMDIwLTEwLTA1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0c2NtcHldIEdlbmVyYXRlIENvbW1pdCBvYmplY3QgZnJvbSBs
b2NhbCByZXBvc2l0b3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTY0MDQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY4NzAyODk3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weTogQnVtcCB2ZXJzaW9u
LgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkv
ZGVjb3JhdG9ycy5weToKKyAgICAgICAgKE1lbW9pemUuX19jYWxsX18uZGVjb3JhdG9yKTogSGFu
ZGxlIGNhc2Ugd2hlcmUgZnVuY3Rpb24gYXJndW1lbnRzIGFyZSBkaWZmZXJlbnQuCisgICAgICAg
ICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9wb3Bl
bi5weToKKyAgICAgICAgKFBvcGVuQmFzZS5wb2xsKTogUmVzZXQgc3Rkb3V0IGFuZCBzdGRlcnIg
YWZ0ZXIgY2FsbGluZyB0aGUgY29tcGxldGlvbiBoYW5kbGVyLgorICAgICAgICAqIFNjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvZGVjb3JhdG9yc191bml0
dGVzdC5weToKKyAgICAgICAgKFRlc3RNZW1vaXplLnRlc3RfY29uZmxpY3RpbmdfYXJncyk6Cisg
ICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvX19pbml0
X18ucHk6IEJ1bXAgdmVyc2lvbi4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9jb250cmlidXRvci5weToKKyAgICAgICAgKENvbnRyaWJ1dG9yKTog
TnVtYmVyIG9mIGxpbmVzIG1heSBiZSBzaW5ndWxhci4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9naXQucHk6CisgICAgICAgIChHaXQp
OgorICAgICAgICAoR2l0Ll9faW5pdF9fKTogQ2FsbGVyIG1heSB3aXNoIHRvIHNwZWNpZnkgdGhl
IHBhdHRlcm5zIGZvciBwcm9kdWN0aW9uIGFuZCBkZXZlbG9wbWVudCBicmFuY2hlcy4KKyAgICAg
ICAgKEdpdC5icmFuY2hlcyk6IENhbGwgdGhlIG1vcmUgZ2VuZXJhbCBfYnJhbmNoZXNfZm9yIHRv
IHVuaWZ5IHJlbW90ZSBzdHJpcHBpbmcgbG9naWMuCisgICAgICAgIChHaXQuX2NvbW1pdF9jb3Vu
dCk6IEdpdmVuIGEgcGFyYW1ldGVyIChoYXNoLCBicmFuY2gsIGRpZmZlcmVuY2UgYmV0d2VlbiBk
ZWZhdWx0IGJyYW5jaCBhbmQgY29tbWl0KSwgY29tcHV0ZQorICAgICAgICB0aGUgbnVtYmVyIG9m
IGNvbW1pdHMuCisgICAgICAgIChHaXQuX2JyYW5jaGVzX2Zvcik6IEdpdmVuIGEgaGFzaCwgcmV0
dXJuIGFsbCBicmFuY2hlcyB0aGUgY29tbWl0IGlzIHBhcnQgb2YuCisgICAgICAgIChHaXQuY29t
bWl0KTogQ29uc3RydWN0IGEgY29tbWl0IGdpdmVuIGEgY29tbWl0IGhhc2gsIHJldmlzaW9uLCBp
ZGVudGlmaWVyIG9yIGJyYW5jaC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9sb2NhbC9zY20ucHk6CisgICAgICAgIChTY20pOgorICAgICAgICAo
U2NtLl9faW5pdF9fKTogQ2FsbGVyIG1heSB3aXNoIHRvIHNwZWNpZnkgdGhlIHBhdHRlcm5zIGZv
ciBwcm9kdWN0aW9uIGFuZCBkZXZlbG9wbWVudCBicmFuY2hlcy4KKyAgICAgICAgKFNjbS5jb21t
aXQpOiBDb25zdHJ1Y3QgYSBjb21taXQgZ2l2ZW4gYSBjb21taXQgaGFzaCwgcmV2aXNpb24sIGlk
ZW50aWZpZXIgb3IgYnJhbmNoLgorICAgICAgICAoU2NtLmxvZyk6IExvZyBlcnJvciB0byBhIGNv
bmZpZ3VyZWQgbG9nZ2VyIG9yIHN0ZGVyci4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9zdm4ucHk6CisgICAgICAgIChTdm4pOgorICAg
ICAgICAoU3ZuLl9faW5pdF9fKTogQ2FsbGVyIG1heSB3aXNoIHRvIHNwZWNpZnkgdGhlIHBhdHRl
cm5zIGZvciBwcm9kdWN0aW9uIGFuZCBkZXZlbG9wbWVudCBicmFuY2hlcy4KKyAgICAgICAgKFN2
bi5pbmZvKTogQWxsb3cgaW5mbyBmb3IgYSBzcGVjaWZpYyBjb21taXQgdG8gYmUgcXVlcmllZC4K
KyAgICAgICAgKFN2bi5fY2FjaGVfcGF0aCk6IFBhdGggdG8ganNvbiBjYWNoZSBvZiBicmFuY2gt
Y29tbWl0IG1hcHBpbmcuCisgICAgICAgIChTdm4uX2NhY2hlX3JldmlzaW9ucyk6IFF1ZXJ5IHRo
ZSByZW1vdGUgZm9yIGEgc3BlY2lmaWMgYnJhbmNoIHRvIGdldCB0aGUgbGlzdCBvZiBhbGwgY29t
bWl0cyBvbiB0aGF0IGJyYW5jaC4KKyAgICAgICAgKFN2bi5fY29tbWl0X2NvdW50KTogR2l2ZW4g
YSByZXZpc2lvbiBvciBicmFuY2gsIGNvbXB1dGUgdGhlIG51bWJlciBvZiBjb21taXRzLgorICAg
ICAgICAoU3ZuLmNvbW1pdCk6IENvbnN0cnVjdCBhIGNvbW1pdCBnaXZlbiBhIGNvbW1pdCBoYXNo
LCByZXZpc2lvbiwgaWRlbnRpZmllciBvciBicmFuY2guCisgICAgICAgICogU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwvZ2l0LnB5OgorICAgICAg
ICAoR2l0KTogQWRkIGNvbW1hbmRzIG5lZWRlZCB0byBjb25zdHJ1Y3QgYW4gaWRlbnRpZmllciwg
YWRkIG1vY2sgY29tbWl0cy4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21w
eS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9zdm4ucHk6CisgICAgICAgIChTdm4pOiBBZGQgY29t
bWFuZHMgbmVlZGVkIHRvIGNvbnN0cnVjdCBhbiBpZGVudGlmaWVyLCBhZGQgbW9jayBjb21taXRz
LgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rl
c3QvY29udHJpYnV0b3JfdW5pdHRlc3QucHk6CisgICAgICAgIChUZXN0Q29udHJpYnV0b3IudGVz
dF9zaG9ydF9zdm5fbG9nKToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21w
eS93ZWJraXRzY21weS90ZXN0L2dpdF91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RHaXQpOgor
ICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3Qv
c2NtX3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGVzdFNjbS50ZXN0X3JlbW90ZSk6CisgICAgICAg
IChUZXN0U2NtKToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJr
aXRzY21weS90ZXN0L3N2bl91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RTdm4pOgorCiAyMDIw
LTEwLTA1ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAg
IERpc2FibGUgbWVkaWEgY2FwdHVyZSBpZiBhbiBhcHAncyBlbnRpdGxlbWVudHMgd29uJ3QgYWxs
b3cgYWNjZXNzIHRvIGNhcHR1cmUgZGV2aWNlcwpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L19faW5pdF9f
LnB5CShyZXZpc2lvbiAyNjgwMTIpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRj
b3JlcHkvd2Via2l0Y29yZXB5L19faW5pdF9fLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICsz
NSw3IEBAIGZyb20gd2Via2l0Y29yZXB5LnRpbWVvdXQgaW1wb3J0IFRpbWVvdXQKIGZyb20gd2Vi
a2l0Y29yZXB5LnN1YnByb2Nlc3NfdXRpbHMgaW1wb3J0IFRpbWVvdXRFeHBpcmVkLCBDb21wbGV0
ZWRQcm9jZXNzLCBydW4KIGZyb20gd2Via2l0Y29yZXB5Lm91dHB1dF9jYXB0dXJlIGltcG9ydCBM
b2dnZXJDYXB0dXJlLCBPdXRwdXRDYXB0dXJlLCBPdXRwdXREdXBsaWNhdGUKIAotdmVyc2lvbiA9
IFZlcnNpb24oMCwgNCwgMTEpCit2ZXJzaW9uID0gVmVyc2lvbigwLCA0LCAxMikKIAogZnJvbSB3
ZWJraXRjb3JlcHkuYXV0b2luc3RhbGwgaW1wb3J0IFBhY2thZ2UsIEF1dG9JbnN0YWxsCiBpZiBz
eXMudmVyc2lvbl9pbmZvID4gKDMsIDApOgpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9kZWNvcmF0b3JzLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvZGVjb3JhdG9y
cy5weQkocmV2aXNpb24gMjY4MDEyKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
Y29yZXB5L3dlYmtpdGNvcmVweS9kZWNvcmF0b3JzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC00Miw4
ICs0Miw5IEBAIGNsYXNzIE1lbW9pemUob2JqZWN0KToKICAgICAgICAgICAgIGlmICdjYWNoZWQn
IG5vdCBpbiBpbnNwZWN0LmdldGFyZ3NwZWMoZnVuY3Rpb24pLmFyZ3M6CiAgICAgICAgICAgICAg
ICAgY2FjaGVkID0ga3dhcmdzLnBvcCgnY2FjaGVkJywgY2FjaGVkKQogCi0gICAgICAgICAgICBs
YXN0X2NhbGxlZCA9IHNlbGYuX2xhc3RfY2FsbGVkW2Z1bmN0aW9uXS5nZXQoYXJncywgMCkKLSAg
ICAgICAgICAgIGlzX2NhY2hlZCA9IGFyZ3MgaW4gc2VsZi5fY2FjaGVbZnVuY3Rpb25dCisgICAg
ICAgICAgICBrZXlhcmdzID0gYXJncyArIHR1cGxlKHNvcnRlZChbKGtleSwgdmFsdWUpIGZvciBr
ZXksIHZhbHVlIGluIGt3YXJncy5pdGVtcygpXSkpCisgICAgICAgICAgICBsYXN0X2NhbGxlZCA9
IHNlbGYuX2xhc3RfY2FsbGVkW2Z1bmN0aW9uXS5nZXQoa2V5YXJncywgMCkKKyAgICAgICAgICAg
IGlzX2NhY2hlZCA9IGtleWFyZ3MgaW4gc2VsZi5fY2FjaGVbZnVuY3Rpb25dCiAgICAgICAgICAg
ICBpZiBub3QgY2FjaGVkOgogICAgICAgICAgICAgICAgIGlzX2NhY2hlZCA9IEZhbHNlCiAgICAg
ICAgICAgICBpZiB0aW1lb3V0IGFuZCB0aW1lb3V0IDwgdGltZS50aW1lKCkgLSBsYXN0X2NhbGxl
ZDoKQEAgLTUyLDggKzUzLDggQEAgY2xhc3MgTWVtb2l6ZShvYmplY3QpOgogICAgICAgICAgICAg
ICAgIHJldHVybiBzZWxmLl9jYWNoZVtmdW5jdGlvbl0uZ2V0KGFyZ3MsIE5vbmUpCiAKICAgICAg
ICAgICAgIHZhbHVlID0gZnVuY3Rpb24oKmFyZ3MsICoqa3dhcmdzKQotICAgICAgICAgICAgc2Vs
Zi5fbGFzdF9jYWxsZWRbZnVuY3Rpb25dW2FyZ3NdID0gdGltZS50aW1lKCkKLSAgICAgICAgICAg
IHNlbGYuX2NhY2hlW2Z1bmN0aW9uXVthcmdzXSA9IHZhbHVlCisgICAgICAgICAgICBzZWxmLl9s
YXN0X2NhbGxlZFtmdW5jdGlvbl1ba2V5YXJnc10gPSB0aW1lLnRpbWUoKQorICAgICAgICAgICAg
c2VsZi5fY2FjaGVbZnVuY3Rpb25dW2tleWFyZ3NdID0gdmFsdWUKICAgICAgICAgICAgIHJldHVy
biB2YWx1ZQogCiAgICAgICAgIGRlY29yYXRvci5jbGVhciA9IHNlbGYuY2xlYXIKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3MvcG9w
ZW4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5
L3dlYmtpdGNvcmVweS9tb2Nrcy9wb3Blbi5weQkocmV2aXNpb24gMjY4MDEyKQorKysgVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9wb3Blbi5w
eQkod29ya2luZyBjb3B5KQpAQCAtODgsMTMgKzg4LDE0IEBAIGNsYXNzIFBvcGVuQmFzZShvYmpl
Y3QpOgogICAgICAgICAgICAgICAgIHN0cmluZ191dGlscy5kZWNvZGUoc2VsZi5fY29tcGxldGlv
bi5zdGRlcnIsIHRhcmdldF90eXBlPXNlbGYuX3N0ZGVycl90eXBlKSkKICAgICAgICAgICAgIChz
ZWxmLnN0ZGVyciBvciBzeXMuc3RkZXJyKS5mbHVzaCgpCiAKLSAgICAgICAgaWYgc2VsZi5yZXR1
cm5jb2RlIGlzIG5vdCBOb25lIGFuZCB0aW1lLnRpbWUoKSA+PSBzZWxmLl9zdGFydF90aW1lICsg
c2VsZi5fY29tcGxldGlvbi5lbGFwc2VkOgotICAgICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0g
c2VsZi5fY29tcGxldGlvbi5yZXR1cm5jb2RlCiAgICAgICAgICAgICBpZiBzZWxmLnN0ZG91dDoK
ICAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dC5zZWVrKDApCiAgICAgICAgICAgICBpZiBzZWxm
LnN0ZGVycjoKICAgICAgICAgICAgICAgICBzZWxmLnN0ZGVyci5zZWVrKDApCiAKKyAgICAgICAg
aWYgc2VsZi5yZXR1cm5jb2RlIGlzIG5vdCBOb25lIGFuZCB0aW1lLnRpbWUoKSA+PSBzZWxmLl9z
dGFydF90aW1lICsgc2VsZi5fY29tcGxldGlvbi5lbGFwc2VkOgorICAgICAgICAgICAgc2VsZi5y
ZXR1cm5jb2RlID0gc2VsZi5fY29tcGxldGlvbi5yZXR1cm5jb2RlCisKICAgICAgICAgcmV0dXJu
IHNlbGYucmV0dXJuY29kZQogCiAgICAgZGVmIHNlbmRfc2lnbmFsKHNlbGYsIHNpZyk6CkluZGV4
OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlc3Rz
L2RlY29yYXRvcnNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXN0cy9kZWNvcmF0b3JzX3VuaXR0ZXN0
LnB5CShyZXZpc2lvbiAyNjgwMTIpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRj
b3JlcHkvd2Via2l0Y29yZXB5L3Rlc3RzL2RlY29yYXRvcnNfdW5pdHRlc3QucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNiw0ICsxMDYsNCBAQCBjbGFzcyBUZXN0TWVtb2l6ZSh1bml0dGVzdC5UZXN0
Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVGVzdE1lbW9pemUuaW5jcmVtZW50X3dp
dGhfYXJncygKICAgICAgICAgICAgIHRpbWVvdXQ9J3RpbWVvdXQtbmV3JywKICAgICAgICAgICAg
IGNhY2hlZD0nY2FjaGVkLW5ldycsCi0gICAgICAgICksICgndGltZW91dCcsICdjYWNoZWQnKSkK
KyAgICAgICAgKSwgKCd0aW1lb3V0LW5ldycsICdjYWNoZWQtbmV3JykpCkluZGV4OiBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9fX2luaXRfXy5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21w
eS9fX2luaXRfXy5weQkocmV2aXNpb24gMjY4MDEyKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvX19pbml0X18ucHkJKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDcgKzQ2LDcgQEAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAiUGxlYXNlIGluc3Rh
bGwgd2Via2l0Y29yZXB5IHdpdGggYHBpcCBpbnN0YWxsIHdlYmtpdGNvcmVweSAtLWV4dHJhLWlu
ZGV4LXVybCA8cGFja2FnZSBpbmRleCBVUkw+YCIKICAgICApCiAKLXZlcnNpb24gPSBWZXJzaW9u
KDAsIDAsIDgpCit2ZXJzaW9uID0gVmVyc2lvbigwLCAxLCAwKQogCiBmcm9tIHdlYmtpdHNjbXB5
LmNvbnRyaWJ1dG9yIGltcG9ydCBDb250cmlidXRvcgogZnJvbSB3ZWJraXRzY21weS5jb21taXQg
aW1wb3J0IENvbW1pdApJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkv
d2Via2l0c2NtcHkvY29udHJpYnV0b3IucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvY29udHJpYnV0b3IucHkJKHJldmlzaW9u
IDI2ODAxMikKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNj
bXB5L2NvbnRyaWJ1dG9yLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBAIGltcG9y
dCByZQogY2xhc3MgQ29udHJpYnV0b3Iob2JqZWN0KToKICAgICBHSVRfQVVUSE9SX1JFID0gcmUu
Y29tcGlsZShyJ0F1dGhvcjogKD9QPGF1dGhvcj4uKikgPCg/UDxlbWFpbD5bXkBdK0BbXkBdKyko
QC4qKT8+JykKICAgICBBVVRPTUFURURfQ0hFQ0tJTl9SRSA9IHJlLmNvbXBpbGUocidBdXRob3I6
ICg/UDxhdXRob3I+LiopIDxkZXZudWxsPicpCi0gICAgU1ZOX0FVVEhPUl9SRSA9IHJlLmNvbXBp
bGUocidyXGQrIFx8ICg/UDxlbWFpbD4uKikgXHwgKD9QPGRhdGU+LiopIFx8IFxkKyBsaW5lcycp
CisgICAgU1ZOX0FVVEhPUl9SRSA9IHJlLmNvbXBpbGUocidyXGQrIFx8ICg/UDxlbWFpbD4uKikg
XHwgKD9QPGRhdGU+LiopIFx8IFxkKyBsaW5lcz8nKQogICAgIFNWTl9QQVRDSF9GUk9NX1JFID0g
cmUuY29tcGlsZShyJ1BhdGNoIGJ5ICg/UDxhdXRob3I+LiopIDwoP1A8ZW1haWw+LiopPiBvbiBc
ZCstXGQrLVxkKycpCiAKICAgICBieV9lbWFpbCA9IGRpY3QoKQpJbmRleDogVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xv
Y2FsL2dpdC5weQkocmV2aXNpb24gMjY4MDEyKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0y
MSwxOSArMjEsMjQgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogCitpbXBvcnQgcmUKKwogZnJvbSB3ZWJr
aXRjb3JlcHkgaW1wb3J0IHJ1biwgZGVjb3JhdG9ycywgVGltZW91dEV4cGlyZWQKIGZyb20gd2Vi
a2l0c2NtcHkubG9jYWwgaW1wb3J0IFNjbQorZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgQ29tbWl0
LCBDb250cmlidXRvcgogCiAKIGNsYXNzIEdpdChTY20pOgogICAgIGV4ZWN1dGFibGUgPSAnL3Vz
ci9iaW4vZ2l0JworICAgIEdJVF9DT01NSVQgPSByZS5jb21waWxlKHInY29tbWl0ICg/UDxoYXNo
PlswLTlhLWZdKyknKQorICAgIEdJVF9TVk5fUkVWSVNJT04gPSByZS5jb21waWxlKHInZ2l0LXN2
bi1pZDogXFMrOlwvXC8uK0AoP1A8cmV2aXNpb24+XGQrKSAuKy0uKy0uKy0uKycpCiAKICAgICBA
Y2xhc3NtZXRob2QKICAgICBkZWYgaXNfY2hlY2tvdXQoY2xzLCBwYXRoKToKICAgICAgICAgcmV0
dXJuIHJ1bihbY2xzLmV4ZWN1dGFibGUsICdyZXYtcGFyc2UnLCAnLS1zaG93LXRvcGxldmVsJ10s
IGN3ZD1wYXRoLCBjYXB0dXJlX291dHB1dD1UcnVlKS5yZXR1cm5jb2RlID09IDAKIAotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKLSAgICAgICAgc3VwZXIoR2l0LCBzZWxmKS5fX2luaXRf
XyhwYXRoKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoLCBkZXZfYnJhbmNoZXM9Tm9uZSwg
cHJvZF9icmFuY2hlcz1Ob25lKToKKyAgICAgICAgc3VwZXIoR2l0LCBzZWxmKS5fX2luaXRfXyhw
YXRoLCBkZXZfYnJhbmNoZXM9ZGV2X2JyYW5jaGVzLCBwcm9kX2JyYW5jaGVzPXByb2RfYnJhbmNo
ZXMpCiAgICAgICAgIGlmIG5vdCBzZWxmLnJvb3RfcGF0aDoKICAgICAgICAgICAgIHJhaXNlIE9T
RXJyb3IoJ1Byb3ZpZGVkIHBhdGgge30gaXMgbm90IGEgZ2l0IHJlcG9zaXRvcnknLmZvcm1hdChw
YXRoKSkKIApAQCAtMTAwLDExICsxMDUsNyBAQCBjbGFzcyBHaXQoU2NtKToKIAogICAgIEBwcm9w
ZXJ0eQogICAgIGRlZiBicmFuY2hlcyhzZWxmKToKLSAgICAgICAgYnJhbmNoID0gcnVuKFtzZWxm
LmV4ZWN1dGFibGUsICdicmFuY2gnLCAnLWEnXSwgY3dkPXNlbGYucm9vdF9wYXRoLCBjYXB0dXJl
X291dHB1dD1UcnVlLCBlbmNvZGluZz0ndXRmLTgnKQotICAgICAgICBpZiBicmFuY2gucmV0dXJu
Y29kZToKLSAgICAgICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0aW9uKCdGYWlsZWQgdG8gcmV0cmll
dmUgYnJhbmNoIGxpc3QgZm9yIHt9Jy5mb3JtYXQoc2VsZi5yb290X3BhdGgpKQotICAgICAgICBy
ZXN1bHQgPSBbYnJhbmNoLmxzdHJpcCgnIConKSBmb3IgYnJhbmNoIGluIGZpbHRlcihsYW1iZGEg
YnJhbmNoOiAnLT4nIG5vdCBpbiBicmFuY2gsIGJyYW5jaC5zdGRvdXQuc3BsaXRsaW5lcygpKV0K
LSAgICAgICAgcmV0dXJuIFsnLycuam9pbihicmFuY2guc3BsaXQoJy8nKVsyOl0pIGlmIGJyYW5j
aC5zdGFydHN3aXRoKCdyZW1vdGVzL29yaWdpbi8nKSBlbHNlIGJyYW5jaCBmb3IgYnJhbmNoIGlu
IHJlc3VsdF0KKyAgICAgICAgcmV0dXJuIHNlbGYuX2JyYW5jaGVzX2ZvcigpCiAKICAgICBAcHJv
cGVydHkKICAgICBkZWYgdGFncyhzZWxmKToKQEAgLTExOCwzICsxMTksMTQ5IEBAIGNsYXNzIEdp
dChTY20pOgogICAgICAgICBpZiByZXN1bHQucmV0dXJuY29kZToKICAgICAgICAgICAgIHJhaXNl
IHNlbGYuRXhjZXB0aW9uKCdGYWlsZWQgdG8gcmV0cmlldmUgcmVtb3RlIGZvciB7fScuZm9ybWF0
KHNlbGYucm9vdF9wYXRoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC5zdGRvdXQucnN0cmlwKCkK
KworICAgIGRlZiBfY29tbWl0X2NvdW50KHNlbGYsIG5hdGl2ZV9wYXJhbWV0ZXIpOgorICAgICAg
ICByZXZpc2lvbl9jb3VudCA9IHJ1bigKKyAgICAgICAgICAgIFtzZWxmLmV4ZWN1dGFibGUsICdy
ZXYtbGlzdCcsICctLWNvdW50JywgJy0tbm8tbWVyZ2VzJywgbmF0aXZlX3BhcmFtZXRlcl0sCisg
ICAgICAgICAgICBjd2Q9c2VsZi5yb290X3BhdGgsIGNhcHR1cmVfb3V0cHV0PVRydWUsIGVuY29k
aW5nPSd1dGYtOCcsCisgICAgICAgICkKKyAgICAgICAgaWYgcmV2aXNpb25fY291bnQucmV0dXJu
Y29kZToKKyAgICAgICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0aW9uKCdGYWlsZWQgdG8gcmV0cmll
dmUgcmV2aXNpb24gY291bnQgZm9yIHt9Jy5mb3JtYXQobmF0aXZlX3BhcmFtZXRlcikpCisgICAg
ICAgIHJldHVybiBpbnQocmV2aXNpb25fY291bnQuc3Rkb3V0KQorCisgICAgZGVmIF9icmFuY2hl
c19mb3Ioc2VsZiwgaGFzaD1Ob25lKToKKyAgICAgICAgYnJhbmNoID0gcnVuKAorICAgICAgICAg
ICAgW3NlbGYuZXhlY3V0YWJsZSwgJ2JyYW5jaCcsICctYSddICsgKFsnLS1jb250YWlucycsIGhh
c2hdIGlmIGhhc2ggZWxzZSBbXSksCisgICAgICAgICAgICBjd2Q9c2VsZi5yb290X3BhdGgsCisg
ICAgICAgICAgICBjYXB0dXJlX291dHB1dD1UcnVlLAorICAgICAgICAgICAgZW5jb2Rpbmc9J3V0
Zi04JywKKyAgICAgICAgKQorICAgICAgICBpZiBicmFuY2gucmV0dXJuY29kZToKKyAgICAgICAg
ICAgIHJhaXNlIHNlbGYuRXhjZXB0aW9uKCdGYWlsZWQgdG8gcmV0cmlldmUgYnJhbmNoIGxpc3Qg
Zm9yIHt9Jy5mb3JtYXQoc2VsZi5yb290X3BhdGgpKQorICAgICAgICByZXN1bHQgPSBbYnJhbmNo
LmxzdHJpcCgnIConKSBmb3IgYnJhbmNoIGluIGZpbHRlcihsYW1iZGEgYnJhbmNoOiAnLT4nIG5v
dCBpbiBicmFuY2gsIGJyYW5jaC5zdGRvdXQuc3BsaXRsaW5lcygpKV0KKyAgICAgICAgcmV0dXJu
IHNvcnRlZChzZXQoWycvJy5qb2luKGJyYW5jaC5zcGxpdCgnLycpWzI6XSkgaWYgYnJhbmNoLnN0
YXJ0c3dpdGgoJ3JlbW90ZXMvb3JpZ2luLycpIGVsc2UgYnJhbmNoIGZvciBicmFuY2ggaW4gcmVz
dWx0XSkpCisKKyAgICBkZWYgY29tbWl0KHNlbGYsIGhhc2g9Tm9uZSwgcmV2aXNpb249Tm9uZSwg
aWRlbnRpZmllcj1Ob25lLCBicmFuY2g9Tm9uZSk6CisgICAgICAgIGlmIHJldmlzaW9uIGFuZCBu
b3Qgc2VsZi5pc19zdm46CisgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignVGhpcyBn
aXQgY2hlY2tvdXQgZG9lcyBub3Qgc3VwcG9ydCBTVk4gcmV2aXNpb25zJykKKyAgICAgICAgZWxp
ZiByZXZpc2lvbjoKKyAgICAgICAgICAgIHJldmlzaW9uID0gQ29tbWl0Ll9wYXJzZV9yZXZpc2lv
bihyZXZpc2lvbiwgZG9fYXNzZXJ0PVRydWUpCisgICAgICAgICAgICByZXZpc2lvbl9sb2cgPSBy
dW4oCisgICAgICAgICAgICAgICAgW3NlbGYuZXhlY3V0YWJsZSwgJ3N2bicsICdmaW5kLXJldics
ICdye30nLmZvcm1hdChyZXZpc2lvbildLAorICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnJvb3Rf
cGF0aCwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgZW5jb2Rpbmc9J3V0Zi04JywKKyAgICAgICAgICAg
ICAgICB0aW1lb3V0PTMsCisgICAgICAgICAgICApCisgICAgICAgICAgICBpZiByZXZpc2lvbl9s
b2cucmV0dXJuY29kZToKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbigiRmFp
bGVkIHRvIHJldHJpZXZlIGNvbW1pdCBpbmZvcm1hdGlvbiBmb3IgJ3J7fSciLmZvcm1hdChyZXZp
c2lvbikpCisgICAgICAgICAgICBoYXNoID0gcmV2aXNpb25fbG9nLnN0ZG91dC5yc3RyaXAoKQor
ICAgICAgICAgICAgaWYgbm90IGhhc2g6CisgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNl
cHRpb24oIkZhaWxlZCB0byBmaW5kICdye30nIi5mb3JtYXQocmV2aXNpb24pKQorCisgICAgICAg
IGRlZmF1bHRfYnJhbmNoID0gc2VsZi5kZWZhdWx0X2JyYW5jaAorICAgICAgICBwYXJzZWRfYnJh
bmNoX3BvaW50ID0gTm9uZQorCisgICAgICAgIGlmIGlkZW50aWZpZXIgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICBpZiByZXZpc2lvbjoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KCdDYW5ub3QgZGVmaW5lIGJvdGggcmV2aXNpb24gYW5kIGlkZW50aWZpZXInKQorICAgICAgICAg
ICAgaWYgaGFzaDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdDYW5ub3QgZGVm
aW5lIGJvdGggaGFzaCBhbmQgaWRlbnRpZmllcicpCisKKyAgICAgICAgICAgIHBhcnNlZF9icmFu
Y2hfcG9pbnQsIGlkZW50aWZpZXIsIHBhcnNlZF9icmFuY2ggPSBDb21taXQuX3BhcnNlX2lkZW50
aWZpZXIoaWRlbnRpZmllciwgZG9fYXNzZXJ0PVRydWUpCisgICAgICAgICAgICBpZiBwYXJzZWRf
YnJhbmNoOgorICAgICAgICAgICAgICAgIGlmIGJyYW5jaCBhbmQgYnJhbmNoICE9IHBhcnNlZF9i
cmFuY2g6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAg
ICAgICAgICAgICAgICAiQ2FsbGVyIHBhc3NlZCBib3RoICdicmFuY2gnIGFuZCAnaWRlbnRpZmll
cicsIGJ1dCBzcGVjaWZpZWQgZGlmZmVyZW50IGJyYW5jaGVzICh7fSBhbmQge30pIi5mb3JtYXQo
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoLCBwYXJzZWRfYnJhbmNoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAg
ICAgICAgIGJyYW5jaCA9IHBhcnNlZF9icmFuY2gKKworICAgICAgICAgICAgYmFzZWxpbmUgPSBi
cmFuY2ggb3IgJ0hFQUQnCisgICAgICAgICAgICBpc19kZWZhdWx0ID0gYmFzZWxpbmUgPT0gZGVm
YXVsdF9icmFuY2gKKyAgICAgICAgICAgIGlmIGJhc2VsaW5lID09ICdIRUFEJzoKKyAgICAgICAg
ICAgICAgICBpc19kZWZhdWx0ID0gZGVmYXVsdF9icmFuY2ggaW4gc2VsZi5fYnJhbmNoZXNfZm9y
KGJhc2VsaW5lKQorCisgICAgICAgICAgICBpZiBpc19kZWZhdWx0IGFuZCBwYXJzZWRfYnJhbmNo
X3BvaW50OgorICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0aW9uKCdDYW5ub3QgcHJv
dmlkZSBhIGJyYW5jaCBwb2ludCBmb3IgYSBjb21taXQgb24gdGhlIGRlZmF1bHQgYnJhbmNoJykK
KworICAgICAgICAgICAgYmFzZV9jb3VudCA9IHNlbGYuX2NvbW1pdF9jb3VudChiYXNlbGluZSBp
ZiBpc19kZWZhdWx0IGVsc2UgJ3t9Li57fScuZm9ybWF0KGRlZmF1bHRfYnJhbmNoLCBiYXNlbGlu
ZSkpCisKKyAgICAgICAgICAgIGlmIGlkZW50aWZpZXIgPiBiYXNlX2NvdW50OgorICAgICAgICAg
ICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0aW9uKCdJZGVudGlmaWVyIHt9IGNhbm5vdCBiZSBmb3Vu
ZCBvbiB0aGUgc3BlY2lmaWVkIGJyYW5jaCBpbiB0aGUgY3VycmVudCBjaGVja291dCcuZm9ybWF0
KGlkZW50aWZpZXIpKQorICAgICAgICAgICAgbG9nID0gcnVuKAorICAgICAgICAgICAgICAgIFtz
ZWxmLmV4ZWN1dGFibGUsICdsb2cnLCAne31+e30nLmZvcm1hdChicmFuY2ggb3IgJ0hFQUQnLCBi
YXNlX2NvdW50IC0gaWRlbnRpZmllciksICctMSddLAorICAgICAgICAgICAgICAgIGN3ZD1zZWxm
LnJvb3RfcGF0aCwKKyAgICAgICAgICAgICAgICBjYXB0dXJlX291dHB1dD1UcnVlLAorICAgICAg
ICAgICAgICAgIGVuY29kaW5nPSd1dGYtOCcsCisgICAgICAgICAgICApCisgICAgICAgICAgICBp
ZiBsb2cucmV0dXJuY29kZToKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbigi
RmFpbGVkIHRvIHJldHJpZXZlIGNvbW1pdCBpbmZvcm1hdGlvbiBmb3IgJ2l7fUB7fSciLmZvcm1h
dChpZGVudGlmaWVyLCBicmFuY2ggb3IgJ0hFQUQnKSkKKworICAgICAgICAgICAgIyBOZWdhdGl2
ZSBpZGVudGlmaWVycyBhcmUgYWN0dWFsbHkgY29tbWl0cyBvbiB0aGUgZGVmYXVsdCBicmFuY2gs
IHdlIHdpbGwgbmVlZCB0byByZS1jb21wdXRlIHRoZSBpZGVudGlmaWVyCisgICAgICAgICAgICBp
ZiBpZGVudGlmaWVyIDwgMCBhbmQgaXNfZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByYWlzZSBz
ZWxmLkV4Y2VwdGlvbignSWxsZWdhbCBuZWdhdGl2ZSBpZGVudGlmaWVyIG9uIHRoZSBkZWZhdWx0
IGJyYW5jaCcpCisgICAgICAgICAgICBpZiBpZGVudGlmaWVyIDwgMDoKKyAgICAgICAgICAgICAg
ICBpZGVudGlmaWVyID0gTm9uZQorCisgICAgICAgIGVsaWYgYnJhbmNoOgorICAgICAgICAgICAg
aWYgaGFzaDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdDYW5ub3QgZGVmaW5l
IGJvdGggYnJhbmNoIGFuZCBoYXNoJykKKyAgICAgICAgICAgIGxvZyA9IHJ1bihbc2VsZi5leGVj
dXRhYmxlLCAnbG9nJywgYnJhbmNoLCAnLTEnXSwgY3dkPXNlbGYucm9vdF9wYXRoLCBjYXB0dXJl
X291dHB1dD1UcnVlLCBlbmNvZGluZz0ndXRmLTgnKQorICAgICAgICAgICAgaWYgbG9nLnJldHVy
bmNvZGU6CisgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oIkZhaWxlZCB0byBy
ZXRyaWV2ZSBjb21taXQgaW5mb3JtYXRpb24gZm9yICd7fSciLmZvcm1hdChicmFuY2gpKQorCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICBoYXNoID0gQ29tbWl0Ll9wYXJzZV9oYXNoKGhhc2gs
IGRvX2Fzc2VydD1UcnVlKQorICAgICAgICAgICAgbG9nID0gcnVuKFtzZWxmLmV4ZWN1dGFibGUs
ICdsb2cnLCBoYXNoIG9yICdIRUFEJywgJy0xJ10sIGN3ZD1zZWxmLnJvb3RfcGF0aCwgY2FwdHVy
ZV9vdXRwdXQ9VHJ1ZSwgZW5jb2Rpbmc9J3V0Zi04JykKKyAgICAgICAgICAgIGlmIGxvZy5yZXR1
cm5jb2RlOgorICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0aW9uKCJGYWlsZWQgdG8g
cmV0cmlldmUgY29tbWl0IGluZm9ybWF0aW9uIGZvciAne30nIi5mb3JtYXQoaGFzaCBvciAnSEVB
RCcpKQorCisgICAgICAgIG1hdGNoID0gc2VsZi5HSVRfQ09NTUlULm1hdGNoKGxvZy5zdGRvdXQu
c3BsaXRsaW5lcygpWzBdKQorICAgICAgICBpZiBub3QgbWF0Y2g6CisgICAgICAgICAgICByYWlz
ZSBzZWxmLkV4Y2VwdGlvbignSW52YWxpZCBjb21taXQgaGFzaCBpbiBnaXQgbG9nJykKKyAgICAg
ICAgaGFzaCA9IG1hdGNoLmdyb3VwKCdoYXNoJykKKworICAgICAgICBicmFuY2hfY2FuZGlkYXRl
cyA9IHNlbGYuX2JyYW5jaGVzX2ZvcihoYXNoKQorICAgICAgICBpZiBsZW4oYnJhbmNoX2NhbmRp
ZGF0ZXMpID09IDE6CisgICAgICAgICAgICBicmFuY2ggPSBicmFuY2hfY2FuZGlkYXRlc1swXQor
ICAgICAgICBlbGlmIGRlZmF1bHRfYnJhbmNoIGluIGJyYW5jaF9jYW5kaWRhdGVzOgorICAgICAg
ICAgICAgYnJhbmNoID0gZGVmYXVsdF9icmFuY2gKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICMgV2UgZG9uJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gZGV0ZXJtaW5lIGEgYnJhbmNo
LiBXZSB3aWxsIGF0dGVtcHQgdG8gZmlyc3QgdXNlIHRoZSBicmFuY2ggc3BlY2lmaWVkCisgICAg
ICAgICAgICAjIGJ5IHRoZSBjYWxsZXIsIHRoZW4gdGhlIG9uZSB0aGVuIGNoZWNrb3V0IGlzIGN1
cnJlbnRseSBvbi4gSWYgYm90aCB0aG9zZSBmYWlsLCB3ZSB3aWxsIHBpY2sgb25lIG9mIHRoZQor
ICAgICAgICAgICAgIyBvdGhlciBicmFuY2hlcy4gV2UgcHJlZmVyIHByb2R1Y3Rpb24gYnJhbmNo
ZXMgZmlyc3QsIHRoZW4gYW55IGJyYW5jaCB3aGljaCBpc24ndCBleHBsaWNpdGx5IGxhYmVsZWQg
YQorICAgICAgICAgICAgIyBkZXYgYnJhbmNoLiBXZSB0aGVuIHNvcnQgdGhlIGxpc3Qgb2YgY2Fu
ZGlkYXRlIGJyYW5jaGVzIGFuZCBwaWNrIHRoZSBzbWFsbGVzdAorICAgICAgICAgICAgZmlsdGVy
ZWRfY2FuZGlkYXRlcyA9IFtjYW5kaWRhdGUgZm9yIGNhbmRpZGF0ZSBpbiBicmFuY2hfY2FuZGlk
YXRlcyBpZiBzZWxmLnByb2RfYnJhbmNoZXMubWF0Y2goY2FuZGlkYXRlKV0KKyAgICAgICAgICAg
IGlmIG5vdCBmaWx0ZXJlZF9jYW5kaWRhdGVzOgorICAgICAgICAgICAgICAgIGZpbHRlcmVkX2Nh
bmRpZGF0ZXMgPSBbY2FuZGlkYXRlIGZvciBjYW5kaWRhdGUgaW4gYnJhbmNoX2NhbmRpZGF0ZXMg
aWYgbm90IHNlbGYuZGV2X2JyYW5jaGVzLm1hdGNoKGNhbmRpZGF0ZSldCisgICAgICAgICAgICBp
ZiBub3QgZmlsdGVyZWRfY2FuZGlkYXRlczoKKyAgICAgICAgICAgICAgICBmaWx0ZXJlZF9jYW5k
aWRhdGVzID0gYnJhbmNoX2NhbmRpZGF0ZXMKKyAgICAgICAgICAgIGJyYW5jaCA9IHNvcnRlZChm
aWx0ZXJlZF9jYW5kaWRhdGVzKVswXQorCisgICAgICAgIGlmIG5vdCBpZGVudGlmaWVyOgorICAg
ICAgICAgICAgaWRlbnRpZmllciA9IHNlbGYuX2NvbW1pdF9jb3VudChoYXNoIGlmIGJyYW5jaCA9
PSBkZWZhdWx0X2JyYW5jaCBlbHNlICd7fS4ue30nLmZvcm1hdChkZWZhdWx0X2JyYW5jaCwgaGFz
aCkpCisgICAgICAgIGJyYW5jaF9wb2ludCA9IE5vbmUgaWYgYnJhbmNoID09IGRlZmF1bHRfYnJh
bmNoIGVsc2Ugc2VsZi5fY29tbWl0X2NvdW50KGhhc2gpCisgICAgICAgIGlmIGJyYW5jaF9wb2lu
dCBhbmQgcGFyc2VkX2JyYW5jaF9wb2ludCBhbmQgYnJhbmNoX3BvaW50ICE9IHBhcnNlZF9icmFu
Y2hfcG9pbnQ6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJQcm92aWRlZCAnYnJhbmNo
X3BvaW50JyBkb2VzIG5vdCBtYXRjaCBicmFuY2ggcG9pbnQgb2Ygc3BlY2lmaWVkIGJyYW5jaCIp
CisKKyAgICAgICAgaWYgc2VsZi5pc19zdm46CisgICAgICAgICAgICBtYXRjaCA9IHNlbGYuR0lU
X1NWTl9SRVZJU0lPTi5tYXRjaChsb2cuc3Rkb3V0LnNwbGl0bGluZXMoKVstMV0ubHN0cmlwKCkp
CisgICAgICAgICAgICByZXZpc2lvbiA9IGludChtYXRjaC5ncm91cCgncmV2aXNpb24nKSkgaWYg
bWF0Y2ggZWxzZSBOb25lCisKKyAgICAgICAgY29tbWl0X3RpbWUgPSBydW4oCisgICAgICAgICAg
ICBbc2VsZi5leGVjdXRhYmxlLCAnc2hvdycsICctcycsICctLWZvcm1hdD0lY3QnLCBoYXNoXSwK
KyAgICAgICAgICAgIGN3ZD1zZWxmLnJvb3RfcGF0aCwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgZW5j
b2Rpbmc9J3V0Zi04JywKKyAgICAgICAgKQorICAgICAgICBpZiBjb21taXRfdGltZS5yZXR1cm5j
b2RlOgorICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oJ0ZhaWxlZCB0byByZXRyaWV2
ZSBjb21taXQgdGltZSBmb3Ige30nLmZvcm1hdChoYXNoKSkKKworICAgICAgICByZXR1cm4gQ29t
bWl0KAorICAgICAgICAgICAgaGFzaD1oYXNoLAorICAgICAgICAgICAgcmV2aXNpb249cmV2aXNp
b24sCisgICAgICAgICAgICBpZGVudGlmaWVyPWlkZW50aWZpZXIsCisgICAgICAgICAgICBicmFu
Y2hfcG9pbnQ9YnJhbmNoX3BvaW50LAorICAgICAgICAgICAgYnJhbmNoPWJyYW5jaCwKKyAgICAg
ICAgICAgIHRpbWVzdGFtcD1pbnQoY29tbWl0X3RpbWUuc3Rkb3V0LmxzdHJpcCgpKSwKKyAgICAg
ICAgICAgIGF1dGhvcj1Db250cmlidXRvci5mcm9tX3NjbV9sb2cobG9nLnN0ZG91dC5zcGxpdGxp
bmVzKClbMV0pLAorICAgICAgICAgICAgbWVzc2FnZT0nXG4nLmpvaW4obGluZVs0Ol0gZm9yIGxp
bmUgaW4gbG9nLnN0ZG91dC5zcGxpdGxpbmVzKClbNDpdKSwKKyAgICAgICAgKQpJbmRleDogVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvc2NtLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L2xvY2FsL3NjbS5weQkocmV2aXNpb24gMjY4MDEyKQorKysgVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvc2NtLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0yMSwxMCArMjEsMjMgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogCitpbXBvcnQgbG9nZ2lu
ZworaW1wb3J0IHJlCitpbXBvcnQgc3lzCisKK2Zyb20gbG9nZ2luZyBpbXBvcnQgTnVsbEhhbmRs
ZXIKK2Zyb20gd2Via2l0c2NtcHkgaW1wb3J0IGxvZworCisKIGNsYXNzIFNjbShvYmplY3QpOgog
ICAgIGNsYXNzIEV4Y2VwdGlvbihSdW50aW1lRXJyb3IpOgogICAgICAgICBwYXNzCiAKKyAgICAj
IFByb2plY3RzIGNhbiBkZWZpbmUgZm9yIHRoZW1zZWx2ZXMgd2hhdCBjb25zdGl0dXRlcyBhIGRl
dmVsb3BtZW50IHZzIGEgcHJvZHVjdGlvbiBicmFuY2gsCisgICAgIyB0aGUgZm9sbG93aW5nIGlk
aW9tcyBzZWVtIGNvbW1vbiBlbm91Z2ggdG8gYmUgc2hhcmVkLgorICAgIERFVl9CUkFOQ0hFUyA9
IHJlLmNvbXBpbGUocicuKlsoZW5nKShkZXYpKGJ1ZyldLy4rJykKKyAgICBQUk9EX0JSQU5DSEVT
ID0gcmUuY29tcGlsZShyJ1xTKy1bXGQrXC5dKy1icmFuY2gnKQorCiAgICAgZXhlY3V0YWJsZSA9
IE5vbmUKIAogICAgIEBjbGFzc21ldGhvZApAQCAtMzcsMTEgKzUwLDE0IEBAIGNsYXNzIFNjbShv
YmplY3QpOgogICAgICAgICAgICAgcmV0dXJuIGxvY2FsLlN2bihwYXRoKQogICAgICAgICByYWlz
ZSBPU0Vycm9yKCd7fSBpcyBub3QgYSBrbm93biBTQ00gdHlwZScpCiAKLSAgICBkZWYgX19pbml0
X18oc2VsZiwgcGF0aCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsIGRldl9icmFuY2hl
cz1Ob25lLCBwcm9kX2JyYW5jaGVzPU5vbmUpOgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShw
YXRoLCBzdHIpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignJykKICAgICAgICAgc2Vs
Zi5wYXRoID0gcGF0aAogCisgICAgICAgIHNlbGYuZGV2X2JyYW5jaGVzID0gZGV2X2JyYW5jaGVz
IG9yIHNlbGYuREVWX0JSQU5DSEVTCisgICAgICAgIHNlbGYucHJvZF9icmFuY2hlcyA9IHByb2Rf
YnJhbmNoZXMgb3Igc2VsZi5QUk9EX0JSQU5DSEVTCisKICAgICBAcHJvcGVydHkKICAgICBkZWYg
aXNfc3ZuKHNlbGYpOgogICAgICAgICByZXR1cm4gRmFsc2UKQEAgLTcyLDMgKzg4LDEzIEBAIGNs
YXNzIFNjbShvYmplY3QpOgogCiAgICAgZGVmIHJlbW90ZShzZWxmLCBuYW1lPU5vbmUpOgogICAg
ICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKKworICAgIGRlZiBjb21taXQoc2VsZiwg
aGFzaD1Ob25lLCByZXZpc2lvbj1Ob25lLCBpZGVudGlmaWVyPU5vbmUsIGJyYW5jaD1Ob25lKToK
KyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCisKKyAgICBAY2xhc3NtZXRob2QK
KyAgICBkZWYgbG9nKGNscywgbWVzc2FnZSwgbGV2ZWw9bG9nZ2luZy5XQVJOSU5HKToKKyAgICAg
ICAgaWYgbm90IGxvZy5oYW5kbGVycyBvciBhbGwoW2lzaW5zdGFuY2UoaGFuZGxlLCBOdWxsSGFu
ZGxlcikgZm9yIGhhbmRsZSBpbiBsb2cuaGFuZGxlcnNdKToKKyAgICAgICAgICAgIHN5cy5zdGRl
cnIud3JpdGUobWVzc2FnZSArICdcbicpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2cu
bG9nKGxldmVsLCBtZXNzYWdlKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvc3ZuLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL3N2bi5weQkocmV2aXNp
b24gMjY4MDEyKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0
c2NtcHkvbG9jYWwvc3ZuLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMCwyNiArMjAsNDQgQEAKICMg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAoraW1wb3J0IGJpc2VjdAoraW1w
b3J0IGNhbGVuZGFyCitpbXBvcnQganNvbgoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBz
dWJwcm9jZXNzCitpbXBvcnQgc3lzCisKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0
aW1lZGVsdGEKK2Zyb20gZGF0ZXV0aWwgaW1wb3J0IHR6CiAKIGZyb20gd2Via2l0Y29yZXB5IGlt
cG9ydCBydW4sIGRlY29yYXRvcnMKIGZyb20gd2Via2l0c2NtcHkubG9jYWwuc2NtIGltcG9ydCBT
Y20KK2Zyb20gd2Via2l0c2NtcHkgaW1wb3J0IENvbW1pdCwgQ29udHJpYnV0b3IsIFZlcnNpb24K
IAogCiBjbGFzcyBTdm4oU2NtKToKICAgICBleGVjdXRhYmxlID0gJy91c3IvbG9jYWwvYmluL3N2
bicKKyAgICBMT0dfUkUgPSByZS5jb21waWxlKHIncig/UDxyZXZpc2lvbj5cZCspIFx8ICg/UDxl
bWFpbD4uKikgXHwgKD9QPGRhdGU+LiopJykKKyAgICBDQUNIRV9WRVJTSU9OID0gVmVyc2lvbigx
KQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGlzX2NoZWNrb3V0KGNscywgcGF0aCk6CiAg
ICAgICAgIHJldHVybiBydW4oW2Nscy5leGVjdXRhYmxlLCAnaW5mbyddLCBjd2Q9cGF0aCwgY2Fw
dHVyZV9vdXRwdXQ9VHJ1ZSkucmV0dXJuY29kZSA9PSAwCiAKLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgcGF0aCk6Ci0gICAgICAgIHN1cGVyKFN2biwgc2VsZikuX19pbml0X18ocGF0aCkKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgcGF0aCwgZGV2X2JyYW5jaGVzPU5vbmUsIHByb2RfYnJhbmNoZXM9
Tm9uZSk6CisgICAgICAgIHN1cGVyKFN2biwgc2VsZikuX19pbml0X18ocGF0aCwgZGV2X2JyYW5j
aGVzPWRldl9icmFuY2hlcywgcHJvZF9icmFuY2hlcz1wcm9kX2JyYW5jaGVzKQogICAgICAgICBp
ZiBub3Qgc2VsZi5yb290X3BhdGg6CiAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdQcm92aWRl
ZCBwYXRoIHt9IGlzIG5vdCBhIHN2biByZXBvc2l0b3J5Jy5mb3JtYXQocGF0aCkpCisgICAgICAg
IHNlbGYuX21ldGFkYXRhX2NhY2hlID0gZGljdCgpCiAKICAgICBAZGVjb3JhdG9ycy5NZW1vaXpl
KGNhY2hlZD1GYWxzZSkKLSAgICBkZWYgaW5mbyhzZWxmKToKLSAgICAgICAgaW5mb19yZXN1bHQg
PSBydW4oW3NlbGYuZXhlY3V0YWJsZSwgJ2luZm8nXSwgY3dkPXNlbGYucGF0aCwgY2FwdHVyZV9v
dXRwdXQ9VHJ1ZSwgZW5jb2Rpbmc9J3V0Zi04JykKKyAgICBkZWYgaW5mbyhzZWxmLCBicmFuY2g9
Tm9uZSwgcmV2aXNpb249Tm9uZSk6CisgICAgICAgIHJldmlzaW9uID0gQ29tbWl0Ll9wYXJzZV9y
ZXZpc2lvbihyZXZpc2lvbikKKyAgICAgICAgYWRkaXRpb25hbF9hcmdzID0gWydeL2JyYW5jaGVz
L3t9Jy5mb3JtYXQoYnJhbmNoKV0gaWYgYnJhbmNoIGFuZCBicmFuY2ggIT0gc2VsZi5kZWZhdWx0
X2JyYW5jaCBlbHNlIFtdCisgICAgICAgIGFkZGl0aW9uYWxfYXJncyArPSBbJy1yJywgc3RyKHJl
dmlzaW9uKV0gaWYgcmV2aXNpb24gZWxzZSBbXQorCisgICAgICAgIGluZm9fcmVzdWx0ID0gcnVu
KFtzZWxmLmV4ZWN1dGFibGUsICdpbmZvJ10gKyBhZGRpdGlvbmFsX2FyZ3MsIGN3ZD1zZWxmLnBh
dGgsIGNhcHR1cmVfb3V0cHV0PVRydWUsIGVuY29kaW5nPSd1dGYtOCcpCiAgICAgICAgIGlmIGlu
Zm9fcmVzdWx0LnJldHVybmNvZGU6CiAgICAgICAgICAgICByZXR1cm4ge30KIApAQCAtODIsNSAr
MTAwLDIxMiBAQCBjbGFzcyBTdm4oU2NtKToKICAgICBkZWYgdGFncyhzZWxmKToKICAgICAgICAg
cmV0dXJuIHNlbGYubGlzdCgndGFncycpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgX2NhY2hl
X3BhdGgoc2VsZik6CisgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2VsZi5yb290X3BhdGgs
ICcuc3ZuJywgJ3dlYmtpdHNjbXB5LWNhY2hlLmpzb24nKQorCisgICAgZGVmIF9jYWNoZV9yZXZp
c2lvbnMoc2VsZiwgYnJhbmNoPU5vbmUpOgorICAgICAgICBpZiBub3Qgc2VsZi5fbWV0YWRhdGFf
Y2FjaGUgYW5kIG9zLnBhdGguZXhpc3RzKHNlbGYuX2NhY2hlX3BhdGgpOgorICAgICAgICAgICAg
dHJ5OgorICAgICAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLl9jYWNoZV9wYXRoKSBhcyBmaWxl
OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9tZXRhZGF0YV9jYWNoZSA9IGpzb24ubG9hZChm
aWxlKQorICAgICAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb246CisgICAgICAgICAgICAgICAg
c2VsZi5fbWV0YWRhdGFfY2FjaGUgPSB7fQorICAgICAgICAgICAgICAgIHNlbGYuX21ldGFkYXRh
X2NhY2hlWyd2ZXJzaW9uJ10gPSBzdHIoc2VsZi5DQUNIRV9WRVJTSU9OKQorCisgICAgICAgIGJy
YW5jaCA9IGJyYW5jaCBvciBzZWxmLmRlZmF1bHRfYnJhbmNoCisgICAgICAgIGlzX2RlZmF1bHRf
YnJhbmNoID0gYnJhbmNoID09IHNlbGYuZGVmYXVsdF9icmFuY2gKKyAgICAgICAgaWYgYnJhbmNo
IG5vdCBpbiBzZWxmLl9tZXRhZGF0YV9jYWNoZToKKyAgICAgICAgICAgIHNlbGYuX21ldGFkYXRh
X2NhY2hlW2JyYW5jaF0gPSBbMF0gaWYgaXNfZGVmYXVsdF9icmFuY2ggZWxzZSBbXQorICAgICAg
ICBwb3MgPSBsZW4oc2VsZi5fbWV0YWRhdGFfY2FjaGVbYnJhbmNoXSkKKworICAgICAgICAjIElm
IHdlIGFyZW4ndCBvbiB0aGUgZGVmYXVsdCBicmFuY2gsIHdlIHdpbGwgbmVlZCB0aGUgZGVmYXVs
dCBicmFuY2ggdG8gZGV0ZXJtaW5lIHdoZW4KKyAgICAgICAgIyBvdXIgIGJyYW5jaCAgaW50ZXJz
ZWN0cyB3aXRoIHRoZSBkZWZhdWx0IGJyYW5jaC4KKyAgICAgICAgaWYgbm90IGlzX2RlZmF1bHRf
YnJhbmNoOgorICAgICAgICAgICAgc2VsZi5fY2FjaGVfcmV2aXNpb25zKGJyYW5jaD1zZWxmLmRl
ZmF1bHRfYnJhbmNoKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGRpZF93YXJuID0gRmFs
c2UKKyAgICAgICAgICAgIGNvdW50ID0gMAorICAgICAgICAgICAgbG9nID0gTm9uZQorICAgICAg
ICAgICAgY2FuZGlkYXRlX2luZGV4ID0gLTEgaWYgaXNfZGVmYXVsdF9icmFuY2ggZWxzZSBsZW4o
c2VsZi5fbWV0YWRhdGFfY2FjaGVbc2VsZi5kZWZhdWx0X2JyYW5jaF0pCisKKyAgICAgICAgICAg
IGJyYW5jaF9hcmcgPSAnXi97fXt9Jy5mb3JtYXQoJycgaWYgaXNfZGVmYXVsdF9icmFuY2ggZWxz
ZSAnYnJhbmNoZXMvJywgYnJhbmNoKQorICAgICAgICAgICAga3dhcmdzID0gZGljdCgpCisgICAg
ICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCAwKToKKyAgICAgICAgICAgICAgICBr
d2FyZ3MgPSBkaWN0KGVuY29kaW5nPSd1dGYtOCcpCisKKyAgICAgICAgICAgIGxvZyA9IHN1YnBy
b2Nlc3MuUG9wZW4oCisgICAgICAgICAgICAgICAgW3NlbGYuZXhlY3V0YWJsZSwgJ2xvZycsICct
cScsIGJyYW5jaF9hcmddLAorICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCisgICAgICAg
ICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICBzdGRlcnI9
c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICoqa3dhcmdzCisgICAgICAgICAgICAp
CisgICAgICAgICAgICBpZiBsb2cucG9sbCgpOgorICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYu
RXhjZXB0aW9uKCJGYWlsZWQgdG8gY29uc3RydWN0IGJyYW5jaCBoaXN0b3J5IGZvciAne30nIi5m
b3JtYXQoYnJhbmNoKSkKKworICAgICAgICAgICAgbGluZSA9IGxvZy5zdGRvdXQucmVhZGxpbmUo
KQorICAgICAgICAgICAgd2hpbGUgbGluZToKKyAgICAgICAgICAgICAgICBtYXRjaCA9IHNlbGYu
TE9HX1JFLm1hdGNoKGxpbmUpCisgICAgICAgICAgICAgICAgaWYgbWF0Y2g6CisgICAgICAgICAg
ICAgICAgICAgIGlmIG5vdCBkaWRfd2FybjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50
ICs9IDEKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvdW50ID4gMTAwMDoKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZygnQ2FjaGluZyBjb21taXQgZGF0YSBmb3Ige30s
IHRoaXMgd2lsbCB0YWtlIGEgZmV3IG1pbnV0ZXMuLi4nLmZvcm1hdChicmFuY2gpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRpZF93YXJuID0gVHJ1ZQorCisgICAgICAgICAgICAgICAg
ICAgIHJldmlzaW9uID0gaW50KG1hdGNoLmdyb3VwKCdyZXZpc2lvbicpKQorICAgICAgICAgICAg
ICAgICAgICBpZiBwb3MgPiAwIGFuZCBzZWxmLl9tZXRhZGF0YV9jYWNoZVticmFuY2hdW3BvcyAt
IDFdID09IHJldmlzaW9uOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgbm90IGlzX2RlZmF1bHRfYnJhbmNoOgorICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgcmV2aXNpb24gaW4gc2VsZi5fbWV0YWRhdGFfY2FjaGVbc2VsZi5kZWZhdWx0X2Jy
YW5jaF06CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWV0YWRhdGFfY2FjaGVb
YnJhbmNoXS5pbnNlcnQocG9zLCByZXZpc2lvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhaworICAgICAgICAgICAgICAgICAgICBzZWxmLl9tZXRhZGF0YV9jYWNoZVticmFuY2hd
Lmluc2VydChwb3MsIHJldmlzaW9uKQorICAgICAgICAgICAgICAgIGxpbmUgPSBsb2cuc3Rkb3V0
LnJlYWRsaW5lKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGlmIGxvZzoKKyAgICAg
ICAgICAgICAgICBsb2cua2lsbCgpCisKKyAgICAgICAgaWYgc2VsZi5fbWV0YWRhdGFfY2FjaGVb
c2VsZi5kZWZhdWx0X2JyYW5jaF1bMF0gPT0gWzBdOgorICAgICAgICAgICAgc2VsZi5fbWV0YWRh
dGFfY2FjaGVbJ2lkZW50aWZpZXInXSA9IGxlbihzZWxmLl9tZXRhZGF0YV9jYWNoZVticmFuY2hd
KQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLl9jYWNoZV9wYXRo
LCAndycpIGFzIGZpbGU6CisgICAgICAgICAgICAgICAganNvbi5kdW1wKHNlbGYuX21ldGFkYXRh
X2NhY2hlLCBmaWxlLCBpbmRlbnQ9NCkKKyAgICAgICAgZXhjZXB0IChJT0Vycm9yLCBPU0Vycm9y
KToKKyAgICAgICAgICAgIHNlbGYubG9nKCJGYWlsZWQgdG8gd3JpdGUgU1ZOIGNhY2hlIHRvICd7
fSciLmZvcm1hdChzZWxmLl9jYWNoZV9wYXRoKSkKKworICAgICAgICByZXR1cm4gc2VsZi5fbWV0
YWRhdGFfY2FjaGVbYnJhbmNoXQorCisgICAgZGVmIF9jb21taXRfY291bnQoc2VsZiwgcmV2aXNp
b249Tm9uZSwgYnJhbmNoPU5vbmUpOgorICAgICAgICBicmFuY2ggPSBicmFuY2ggb3Igc2VsZi5k
ZWZhdWx0X2JyYW5jaAorCisgICAgICAgIGlmIHJldmlzaW9uOgorICAgICAgICAgICAgcmV0dXJu
IGJpc2VjdC5iaXNlY3RfbGVmdChzZWxmLl9tZXRhZGF0YV9jYWNoZVticmFuY2hdLCBpbnQocmV2
aXNpb24pKQorICAgICAgICBpZiBicmFuY2ggPT0gc2VsZi5kZWZhdWx0X2JyYW5jaDoKKyAgICAg
ICAgICAgIHJldHVybiBsZW4oc2VsZi5fbWV0YWRhdGFfY2FjaGVbYnJhbmNoXSkKKyAgICAgICAg
cmV0dXJuIHNlbGYuX2NvbW1pdF9jb3VudChyZXZpc2lvbj1zZWxmLl9tZXRhZGF0YV9jYWNoZVti
cmFuY2hdWzBdLCBicmFuY2g9c2VsZi5kZWZhdWx0X2JyYW5jaCkKKwogICAgIGRlZiByZW1vdGUo
c2VsZiwgbmFtZT1Ob25lKToKICAgICAgICAgcmV0dXJuIHNlbGYuaW5mbygpWydSZXBvc2l0b3J5
IFJvb3QnXQorCisgICAgZGVmIGNvbW1pdChzZWxmLCBoYXNoPU5vbmUsIHJldmlzaW9uPU5vbmUs
IGlkZW50aWZpZXI9Tm9uZSwgYnJhbmNoPU5vbmUpOgorICAgICAgICBpZiBoYXNoOgorICAgICAg
ICAgICAgcmFpc2UgVmFsdWVFcnJvcignU1ZOIGRvZXMgbm90IHN1cHBvcnQgR2l0IGhhc2hlcycp
CisKKyAgICAgICAgcGFyc2VkX2JyYW5jaF9wb2ludCA9IE5vbmUKKyAgICAgICAgaWYgaWRlbnRp
ZmllciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIHJldmlzaW9uOgorICAgICAgICAgICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0Nhbm5vdCBkZWZpbmUgYm90aCByZXZpc2lvbiBhbmQgaWRl
bnRpZmllcicpCisKKyAgICAgICAgICAgIHBhcnNlZF9icmFuY2hfcG9pbnQsIGlkZW50aWZpZXIs
IHBhcnNlZF9icmFuY2ggPSBDb21taXQuX3BhcnNlX2lkZW50aWZpZXIoaWRlbnRpZmllciwgZG9f
YXNzZXJ0PVRydWUpCisgICAgICAgICAgICBpZiBwYXJzZWRfYnJhbmNoOgorICAgICAgICAgICAg
ICAgIGlmIGJyYW5jaCBhbmQgYnJhbmNoICE9IHBhcnNlZF9icmFuY2g6CisgICAgICAgICAgICAg
ICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAiQ2FsbGVy
IHBhc3NlZCBib3RoICdicmFuY2gnIGFuZCAnaWRlbnRpZmllcicsIGJ1dCBzcGVjaWZpZWQgZGlm
ZmVyZW50IGJyYW5jaGVzICh7fSBhbmQge30pIi5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJhbmNoLCBwYXJzZWRfYnJhbmNoLAorICAgICAgICAgICAgICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGJyYW5jaCA9IHBhcnNl
ZF9icmFuY2gKKyAgICAgICAgICAgIGJyYW5jaCA9IGJyYW5jaCBvciBzZWxmLmJyYW5jaAorCisg
ICAgICAgICAgICBpZiBicmFuY2ggPT0gc2VsZi5kZWZhdWx0X2JyYW5jaCBhbmQgcGFyc2VkX2Jy
YW5jaF9wb2ludDoKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignQ2Fubm90
IHByb3ZpZGUgYSBicmFuY2ggcG9pbnQgZm9yIGEgY29tbWl0IG9uIHRoZSBkZWZhdWx0IGJyYW5j
aCcpCisKKyAgICAgICAgICAgIHNlbGYuX2NhY2hlX3JldmlzaW9ucyhicmFuY2g9YnJhbmNoKQor
ICAgICAgICAgICAgaWYgaWRlbnRpZmllciA+IGxlbihzZWxmLl9tZXRhZGF0YV9jYWNoZVticmFu
Y2hdKToKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignSWRlbnRpZmllciB7
fSBjYW5ub3QgYmUgZm91bmQgb24gdGhlIHNwZWNpZmllZCBicmFuY2ggaW4gdGhlIGN1cnJlbnQg
Y2hlY2tvdXQnLmZvcm1hdChpZGVudGlmaWVyKSkKKworICAgICAgICAgICAgaWYgaWRlbnRpZmll
ciA8PSAwOgorICAgICAgICAgICAgICAgIGlmIGJyYW5jaCA9PSBzZWxmLmRlZmF1bHRfYnJhbmNo
OgorICAgICAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignSWxsZWdhbCBuZWdh
dGl2ZSBpZGVudGlmaWVyIG9uIHRoZSBkZWZhdWx0IGJyYW5jaCcpCisgICAgICAgICAgICAgICAg
aWRlbnRpZmllciA9IHNlbGYuX2NvbW1pdF9jb3VudChicmFuY2g9YnJhbmNoKSArIGlkZW50aWZp
ZXIKKyAgICAgICAgICAgICAgICBpZiBpZGVudGlmaWVyIDwgMDoKKyAgICAgICAgICAgICAgICAg
ICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oJ0lkZW50aWZpZXIgZG9lcyBub3QgZXhpc3Qgb24gdGhl
IHNwZWNpZmllZCBicmFuY2gnKQorCisgICAgICAgICAgICAgICAgYnJhbmNoID0gc2VsZi5kZWZh
dWx0X2JyYW5jaAorCisgICAgICAgICAgICByZXZpc2lvbiA9IHNlbGYuX21ldGFkYXRhX2NhY2hl
W2JyYW5jaF1baWRlbnRpZmllcl0KKyAgICAgICAgICAgIGluZm8gPSBzZWxmLmluZm8oYnJhbmNo
PWJyYW5jaCwgcmV2aXNpb249cmV2aXNpb24pCisKKyAgICAgICAgZWxpZiByZXZpc2lvbjoKKyAg
ICAgICAgICAgIGlmIGJyYW5jaDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdD
YW5ub3QgZGVmaW5lIGJvdGggYnJhbmNoIGFuZCByZXZpc2lvbicpCisgICAgICAgICAgICByZXZp
c2lvbiA9IENvbW1pdC5fcGFyc2VfcmV2aXNpb24ocmV2aXNpb24sIGRvX2Fzc2VydD1UcnVlKQor
ICAgICAgICAgICAgZmluZF9icmFuY2ggPSBydW4oCisgICAgICAgICAgICAgICAgW3NlbGYuZXhl
Y3V0YWJsZSwgJ2xvZycsICctdicsICctcScsIHNlbGYucmVtb3RlKCksICctcicsIHN0cihyZXZp
c2lvbiksICctbCcsICcxJ10sCisgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwgY2FwdHVy
ZV9vdXRwdXQ9VHJ1ZSwgZW5jb2Rpbmc9J3V0Zi04JywKKyAgICAgICAgICAgICkKKyAgICAgICAg
ICAgIGlmIGZpbmRfYnJhbmNoLnJldHVybmNvZGUgb3Igbm90IGZpbmRfYnJhbmNoLnN0ZG91dDoK
KyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbigiRmFpbGVkIHRvIHJldHJpZXZl
IGJyYW5jaCBmb3IgJ3t9JyIuZm9ybWF0KHJldmlzaW9uKSkKKworICAgICAgICAgICAgcGFydGlh
bCA9IE5vbmUKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGZpbmRfYnJhbmNoLnN0ZG91dC5zcGxp
dGxpbmVzKCk6CisgICAgICAgICAgICAgICAgaWYgcGFydGlhbCBpcyBOb25lIGFuZCBsaW5lID09
ICdDaGFuZ2VkIHBhdGhzOic6CisgICAgICAgICAgICAgICAgICAgIHBhcnRpYWwgPSAnJworICAg
ICAgICAgICAgICAgIGVsaWYgcGFydGlhbCA9PSAnJzoKKyAgICAgICAgICAgICAgICAgICAgcGFy
dGlhbCA9IGxpbmUubHN0cmlwKCkKKyAgICAgICAgICAgICAgICBlbGlmIHBhcnRpYWw6CisgICAg
ICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLmxzdHJpcCgpCisgICAgICAgICAgICAgICAgICAg
IHdoaWxlIGxpbmUuc3RhcnRzd2l0aCgnTSAnKSBhbmQgbm90IGxpbmUuc3RhcnRzd2l0aChwYXJ0
aWFsKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWwgPSBwYXJ0aWFsWzotMV0KKyAg
ICAgICAgICAgIGlmIGxlbihwYXJ0aWFsKSA+IDM6CisgICAgICAgICAgICAgICAgcGFydGlhbCA9
IHBhcnRpYWxbMjpdCisgICAgICAgICAgICAgICAgYnJhbmNoID0gcGFydGlhbC5zcGxpdCgnLycp
WzIgaWYgcGFydGlhbC5zdGFydHN3aXRoKCcvYnJhbmNoZXMnKSBlbHNlIDFdCisgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0aW9uKCdNYWxmb3JtZWQg
c2V0ICBvZiBlZGl0ZWQgZmlsZXMnKQorCisgICAgICAgICAgICBzZWxmLl9jYWNoZV9yZXZpc2lv
bnMoYnJhbmNoPWJyYW5jaCkKKyAgICAgICAgICAgIGluZm8gPSBzZWxmLmluZm8oYnJhbmNoPWJy
YW5jaCwgcmV2aXNpb249cmV2aXNpb24pCisKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJy
YW5jaCA9IGJyYW5jaCBvciBzZWxmLmJyYW5jaAorICAgICAgICAgICAgaW5mbyA9IHNlbGYuaW5m
byhicmFuY2g9YnJhbmNoKQorICAgICAgICAgICAgaWYgbm90IGluZm86CisgICAgICAgICAgICAg
ICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oIid7fScgaXMgbm90IGEgcmVjb2duaXplZCBicmFuY2gi
LmZvcm1hdChicmFuY2gpKQorICAgICAgICAgICAgc2VsZi5fY2FjaGVfcmV2aXNpb25zKGJyYW5j
aD1icmFuY2gpCisgICAgICAgICAgICByZXZpc2lvbiA9IGluZm9bJ0xhc3QgQ2hhbmdlZCBSZXYn
XQorCisgICAgICAgIGJyYW5jaF9hcmcgPSAnXi97fXt9Jy5mb3JtYXQoJycgaWYgYnJhbmNoID09
IHNlbGYuZGVmYXVsdF9icmFuY2ggZWxzZSAnYnJhbmNoZXMvJywgYnJhbmNoKQorICAgICAgICBs
b2cgPSBydW4oW3NlbGYuZXhlY3V0YWJsZSwgJ2xvZycsICctbCcsICcxJywgJy1yJywgc3RyKHJl
dmlzaW9uKSwgYnJhbmNoX2FyZ10sIGN3ZD1zZWxmLnBhdGgsIGNhcHR1cmVfb3V0cHV0PVRydWUs
IGVuY29kaW5nPSd1dGYtOCcpCisgICAgICAgIHNwbGl0X2xvZyA9IGxvZy5zdGRvdXQuc3BsaXRs
aW5lcygpCisgICAgICAgIGlmIGxvZy5yZXR1cm5jb2RlIG9yIGxlbihzcGxpdF9sb2cpIDwgMzoK
KyAgICAgICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0aW9uKCJGYWlsZWQgdG8gcmV0cmlldmUgY29t
bWl0IGluZm9ybWF0aW9uIGZvciAne30nIG9uICd7fSciLmZvcm1hdChyZXZpc2lvbiwgYnJhbmNo
KSkKKworICAgICAgICBkYXRlID0gaW5mb1snTGFzdCBDaGFuZ2VkIERhdGUnXS5zcGxpdCgnICgn
KVswXQorICAgICAgICB0el9kaWZmID0gZGF0ZS5zcGxpdCgnICcpWy0xXQorICAgICAgICBkYXRl
ID0gZGF0ZXRpbWUuc3RycHRpbWUoZGF0ZVs6LWxlbih0el9kaWZmKV0sICclWS0lbS0lZCAlSDol
TTolUyAnKQorICAgICAgICBkZWx0YSA9IHRpbWVkZWx0YSgKKyAgICAgICAgICAgIGhvdXJzPWlu
dCh0el9kaWZmWzE6M10pLAorICAgICAgICAgICAgbWludXRlcz1pbnQodHpfZGlmZlszOjVdKSwK
KyAgICAgICAgKQorICAgICAgICBkYXRlID0gZGF0ZS5yZXBsYWNlKAorICAgICAgICAgICAgdHpp
bmZvPXR6LnR6b2Zmc2V0KAorICAgICAgICAgICAgICAgIG5hbWU9J1VUQ3t9Jy5mb3JtYXQodHpf
ZGlmZiksCisgICAgICAgICAgICAgICAgb2Zmc2V0PWRlbHRhLnNlY29uZHMgKiAoLTEgaWYgdHpf
ZGlmZlswXSA9PSAnLScgZWxzZSAxKQorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorCisgICAg
ICAgIGlmIG5vdCBpZGVudGlmaWVyOgorICAgICAgICAgICAgaWRlbnRpZmllciA9IHNlbGYuX2Nv
bW1pdF9jb3VudChyZXZpc2lvbj1yZXZpc2lvbiwgYnJhbmNoPWJyYW5jaCkKKyAgICAgICAgYnJh
bmNoX3BvaW50ID0gTm9uZSBpZiBicmFuY2ggPT0gc2VsZi5kZWZhdWx0X2JyYW5jaCBlbHNlIHNl
bGYuX2NvbW1pdF9jb3VudChicmFuY2g9YnJhbmNoKQorICAgICAgICBpZiBicmFuY2hfcG9pbnQg
YW5kIHBhcnNlZF9icmFuY2hfcG9pbnQgYW5kIGJyYW5jaF9wb2ludCAhPSBwYXJzZWRfYnJhbmNo
X3BvaW50OgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUHJvdmlkZWQgJ2JyYW5jaF9w
b2ludCcgZG9lcyBub3QgbWF0Y2ggYnJhbmNoIHBvaW50IG9mIHNwZWNpZmllZCBicmFuY2giKQor
CisgICAgICAgIGF1dGhvcl9saW5lID0gc3BsaXRfbG9nWzFdCisgICAgICAgIGZvciBsaW5lIGlu
IHNwbGl0X2xvZ1syOjhdOgorICAgICAgICAgICAgaWYgQ29udHJpYnV0b3IuU1ZOX1BBVENIX0ZS
T01fUkUubWF0Y2gobGluZSk6CisgICAgICAgICAgICAgICAgYXV0aG9yX2xpbmUgPSBsaW5lCisg
ICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICByZXR1cm4gQ29tbWl0KAorICAgICAgICAg
ICAgcmV2aXNpb249aW50KHJldmlzaW9uKSwKKyAgICAgICAgICAgIGJyYW5jaD1icmFuY2gsCisg
ICAgICAgICAgICBpZGVudGlmaWVyPWlkZW50aWZpZXIsCisgICAgICAgICAgICBicmFuY2hfcG9p
bnQ9YnJhbmNoX3BvaW50LAorICAgICAgICAgICAgdGltZXN0YW1wPWludChjYWxlbmRhci50aW1l
Z20oZGF0ZS50aW1ldHVwbGUoKSkpLAorICAgICAgICAgICAgYXV0aG9yPUNvbnRyaWJ1dG9yLmZy
b21fc2NtX2xvZyhhdXRob3JfbGluZSksCisgICAgICAgICAgICBtZXNzYWdlPSdcbicuam9pbihz
cGxpdF9sb2dbMzpdKSwKKyAgICAgICAgKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwvZ2l0LnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL2xv
Y2FsL2dpdC5weQkocmV2aXNpb24gMjY4MDEyKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwvZ2l0LnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0yMSw5ICsyMSwxMSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBpbXBvcnQgb3MKK2ltcG9ydCBy
ZQogCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQogZnJvbSB3ZWJraXRjb3JlcHkgaW1w
b3J0IG1vY2tzCi1mcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBsb2NhbAorZnJvbSB3ZWJraXRzY21w
eSBpbXBvcnQgbG9jYWwsIENvbW1pdCwgQ29udHJpYnV0b3IKIAogCiBjbGFzcyBHaXQobW9ja3Mu
U3VicHJvY2Vzcyk6CkBAIC0zNiwzNSArMzgsMTE2IEBAIGNsYXNzIEdpdChtb2Nrcy5TdWJwcm9j
ZXNzKToKICAgICApOgogICAgICAgICBzZWxmLnBhdGggPSBwYXRoCiAgICAgICAgIHNlbGYuYnJh
bmNoID0gYnJhbmNoIG9yIGRlZmF1bHRfYnJhbmNoCisgICAgICAgIHNlbGYuZGVmYXVsdF9icmFu
Y2ggPSBkZWZhdWx0X2JyYW5jaAogICAgICAgICBzZWxmLnJlbW90ZSA9IHJlbW90ZSBvciAnZ2l0
QHdlYmtpdC5vcmc6L21vY2sve30nLmZvcm1hdChvcy5wYXRoLmJhc2VuYW1lKHBhdGgpKQogICAg
ICAgICBzZWxmLmRldGFjaGVkID0gZGV0YWNoZWQgb3IgRmFsc2UKIAogICAgICAgICBzZWxmLmJy
YW5jaGVzID0gYnJhbmNoZXMgb3IgW10KICAgICAgICAgc2VsZi50YWdzID0gdGFncyBvciBbXQog
CisgICAgICAgICMgUHJvdmlkZSBhIHJlYXNvbmFibGUgc2V0IG9mIGNvbW1pdHMgdG8gdGVzdCBh
Z2FpbnN0CisgICAgICAgIGNvbnRyaWJ1dG9yID0gQ29udHJpYnV0b3IobmFtZT0nSm9uYXRoYW4g
QmVkYXJkJywgZW1haWxzPVsnamJlZGFyZEBhcHBsZS5jb20nXSkKKyAgICAgICAgc2VsZi5jb21t
aXRzID0geworICAgICAgICAgICAgZGVmYXVsdF9icmFuY2g6IFsKKyAgICAgICAgICAgICAgICBD
b21taXQoCisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI9JzFAe30nLmZvcm1hdChkZWZh
dWx0X2JyYW5jaCksCisgICAgICAgICAgICAgICAgICAgIGhhc2g9JzliODMxMWYyNWE3N2JhMTQ5
MjNkOWQ1YTY1MzIxMDNmNTRhYmVmY2InLAorICAgICAgICAgICAgICAgICAgICByZXZpc2lvbj0x
IGlmIGdpdF9zdm4gZWxzZSBOb25lLAorICAgICAgICAgICAgICAgICAgICBhdXRob3I9Y29udHJp
YnV0b3IsCisgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcD0xNjAxNjYwMDAwLAorICAgICAg
ICAgICAgICAgICAgICBtZXNzYWdlPScxc3QgY29tbWl0XG4nLAorICAgICAgICAgICAgICAgICks
IENvbW1pdCgKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcj0nMkB7fScuZm9ybWF0KGRl
ZmF1bHRfYnJhbmNoKSwKKyAgICAgICAgICAgICAgICAgICAgaGFzaD0nZmZmODNiYjJkOTE3MWI0
ZDkxOTZlOTc3ZWIwNTA4ZmQ1N2U3YTA4ZCcsCisgICAgICAgICAgICAgICAgICAgIHJldmlzaW9u
PTIgaWYgZ2l0X3N2biBlbHNlIE5vbmUsCisgICAgICAgICAgICAgICAgICAgIGF1dGhvcj1jb250
cmlidXRvciwKKyAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wPTE2MDE2NjEwMDAsCisgICAg
ICAgICAgICAgICAgICAgIG1lc3NhZ2U9JzJuZCBjb21taXRcbicsCisgICAgICAgICAgICAgICAg
KSwgQ29tbWl0KAorICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyPSczQHt9Jy5mb3JtYXQo
ZGVmYXVsdF9icmFuY2gpLAorICAgICAgICAgICAgICAgICAgICBoYXNoPScxYWJlMjViNDQzZTk4
NWY5M2I5MGQ4MzBlNGE3ZTM3MzEzMzZhZjRkJywKKyAgICAgICAgICAgICAgICAgICAgcmV2aXNp
b249NCBpZiBnaXRfc3ZuIGVsc2UgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgYXV0aG9yPWNv
bnRyaWJ1dG9yLAorICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA9MTYwMTY2MzAwMCwKKyAg
ICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nNHRoIGNvbW1pdFxuJywKKyAgICAgICAgICAgICAg
ICApLCBDb21taXQoCisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI9JzRAe30nLmZvcm1h
dChkZWZhdWx0X2JyYW5jaCksCisgICAgICAgICAgICAgICAgICAgIGhhc2g9J2JhZTVkMWU5MDk5
OWQ0ZjkxNmE4YTE1ODEwY2NmYTQzZjM3YTJmZDYnLAorICAgICAgICAgICAgICAgICAgICByZXZp
c2lvbj02IGlmIGdpdF9zdm4gZWxzZSBOb25lLAorICAgICAgICAgICAgICAgICAgICBhdXRob3I9
Y29udHJpYnV0b3IsCisgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcD0xNjAxNjY1MDAwLAor
ICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSc2dGggY29tbWl0XG4nLAorICAgICAgICAgICAg
ICAgICksCisgICAgICAgICAgICBdLCAnYnJhbmNoLWEnOiBbCisgICAgICAgICAgICAgICAgQ29t
bWl0KAorICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyPScyLjFAYnJhbmNoLWEnLAorICAg
ICAgICAgICAgICAgICAgICBoYXNoPSdhMzBjZTg0OTRiZjFhYzI4MDdhNjk4NDRmNzI2YmU0YTk4
NDNjYTU1JywKKyAgICAgICAgICAgICAgICAgICAgcmV2aXNpb249MyBpZiBnaXRfc3ZuIGVsc2Ug
Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgYXV0aG9yPWNvbnRyaWJ1dG9yLAorICAgICAgICAg
ICAgICAgICAgICB0aW1lc3RhbXA9MTYwMTY2MjAwMCwKKyAgICAgICAgICAgICAgICAgICAgbWVz
c2FnZT0nM3JkIGNvbW1pdFxuJywKKyAgICAgICAgICAgICAgICApLCBDb21taXQoCisgICAgICAg
ICAgICAgICAgICAgIGlkZW50aWZpZXI9JzIuMkBicmFuY2gtYScsCisgICAgICAgICAgICAgICAg
ICAgIGhhc2g9JzYyMTY1MmFkZDdmYzQxNjA5OWJkMjA2MzM2NmNjMzhmZjYxYWZlMzYnLAorICAg
ICAgICAgICAgICAgICAgICByZXZpc2lvbj03IGlmIGdpdF9zdm4gZWxzZSBOb25lLAorICAgICAg
ICAgICAgICAgICAgICBhdXRob3I9Y29udHJpYnV0b3IsCisgICAgICAgICAgICAgICAgICAgIHRp
bWVzdGFtcD0xNjAxNjY2MDAwLAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSc3dGggY29t
bWl0XG4nLAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICBdLAorICAgICAgICB9Cisg
ICAgICAgIHNlbGYuY29tbWl0c1snYnJhbmNoLWInXSA9IFsKKyAgICAgICAgICAgIHNlbGYuY29t
bWl0c1snYnJhbmNoLWEnXVswXSwgQ29tbWl0KAorICAgICAgICAgICAgICAgIGlkZW50aWZpZXI9
JzIuMkBicmFuY2gtYicsCisgICAgICAgICAgICAgICAgaGFzaD0nM2NkMzJlMzUyNDEwNTY1YmI1
NDM4MjFmYmY4NTZhNmQzY2FhZDFjNCcsCisgICAgICAgICAgICAgICAgcmV2aXNpb249NSBpZiBn
aXRfc3ZuIGVsc2UgTm9uZSwKKyAgICAgICAgICAgICAgICBhdXRob3I9Y29udHJpYnV0b3IsCisg
ICAgICAgICAgICAgICAgdGltZXN0YW1wPTE2MDE2NjQwMDAsCisgICAgICAgICAgICAgICAgbWVz
c2FnZT0nNXRoIGNvbW1pdFxuJywKKyAgICAgICAgICAgICksIENvbW1pdCgKKyAgICAgICAgICAg
ICAgICBpZGVudGlmaWVyPScyLjNAYnJhbmNoLWInLAorICAgICAgICAgICAgICAgIGhhc2g9Jzc5
MDcyNWE2ZDc5ZTI4ZGIyZWNkZGUyOTU0OGQyMjYyYzBiZDA1OWQnLAorICAgICAgICAgICAgICAg
IHJldmlzaW9uPTggaWYgZ2l0X3N2biBlbHNlIE5vbmUsCisgICAgICAgICAgICAgICAgYXV0aG9y
PWNvbnRyaWJ1dG9yLAorICAgICAgICAgICAgICAgIHRpbWVzdGFtcD0xNjAxNjY3MDAwLAorICAg
ICAgICAgICAgICAgIG1lc3NhZ2U9Jzh0aCBjb21taXRcbicsCisgICAgICAgICAgICApLAorICAg
ICAgICBdCisKICAgICAgICAgaWYgZ2l0X3N2bjoKICAgICAgICAgICAgIGdpdF9zdm5fcm91dGVz
ID0gWwogICAgICAgICAgICAgICAgIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCi0gICAgICAgICAg
ICAgICAgICAgIGxvY2FsLkdpdC5leGVjdXRhYmxlLCAnc3ZuJywgJ2ZpbmQtcmV2JywgJ3IxJywK
KyAgICAgICAgICAgICAgICAgICAgbG9jYWwuR2l0LmV4ZWN1dGFibGUsICdzdm4nLCAnZmluZC1y
ZXYnLCByZS5jb21waWxlKHInclxkKycpLAogICAgICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5w
YXRoLAotICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uPW1vY2tzLlByb2Nlc3NDb21wbGV0
aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuY29kZT0wLAotICAgICAgICAgICAg
ICAgICAgICAgICAgc3Rkb3V0PSdkNDIzZWE4MmVmYWFlZDBkY2JhZmIwOWFhYTRhNzBmYWZkZWEw
NzI5XG4nLAotICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICBnZW5l
cmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczoKKyAgICAgICAgICAgICAgICAgICAgICAgIG1v
Y2tzLlByb2Nlc3NDb21wbGV0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
bmNvZGU9MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9Z2V0YXR0cihzZWxm
LmZpbmQoYXJnc1szXVsxOl0pLCAnaGFzaCcsICdcbicpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgKQogICAgICAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCiAgICAgICAg
ICAgICAgICAgICAgIGxvY2FsLkdpdC5leGVjdXRhYmxlLCAnc3ZuJywgJ2luZm8nLAogICAgICAg
ICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAotICAgICAgICAgICAgICAgICAgICBjb21wbGV0
aW9uPW1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuY29kZT0wLAotICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdQYXRoOiAuXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
J1VSTDoge3JlbW90ZX0ve2JyYW5jaH1cbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
UmVwb3NpdG9yeSBSb290OiB7cmVtb3RlfVxuJy5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhdGg9c2VsZi5wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZW1vdGU9c2VsZi5yZW1vdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyYW5jaD1zZWxmLmJyYW5jaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAotICAg
ICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRh
ICphcmdzLCAqKmt3YXJnczoKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vY2tzLlByb2Nlc3ND
b21wbGV0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybmNvZGU9MCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdQYXRoOiAuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdV
Ukw6IHtyZW1vdGV9L3ticmFuY2h9XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdSZXBvc2l0b3J5IFJvb3Q6IHtyZW1vdGV9XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdSZXZpc2lvbjoge3JldmlzaW9ufVxuJworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnTm9kZSBLaW5kOiBkaXJlY3RvcnlcbicKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ1NjaGVkdWxlOiBub3JtYWxcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ0xhc3QgQ2hhbmdlZCBBdXRob3I6IHthdXRob3J9XG4nCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdMYXN0IENoYW5nZWQgUmV2OiB7cmV2aXNpb259XG4nCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdMYXN0IENoYW5nZWQgRGF0ZToge2RhdGV9Jy5mb3Jt
YXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPXNlbGYucGF0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZT1zZWxmLnJlbW90ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaD1zZWxmLmJyYW5jaCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uPXNlbGYuY29tbWl0
c1tzZWxmLmJyYW5jaF1bLTFdLnJldmlzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXV0aG9yPXNlbGYuY29tbWl0c1tzZWxmLmJyYW5jaF1bLTFdLmF1dGhvci5lbWFp
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGU9ZGF0ZXRpbWUuZnJv
bXRpbWVzdGFtcChzZWxmLmNvbW1pdHNbc2VsZi5icmFuY2hdWy0xXS50aW1lc3RhbXApLnN0cmZ0
aW1lKCclWS0lbS0lZCAlSDolTTolUycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICApLAorICAgICAgICAgICAgICAgICAgICAgICAgKSBpZiBsZW4oc2VsZi5jb21taXRzLmdldChz
ZWxmLmJyYW5jaCkpIGVsc2UgbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0xKSwK
ICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgXQogCkBAIC0xMjAsNyArMjAzLDcgQEAg
bm90aGluZyB0byBjb21taXQsIHdvcmtpbmcgdHJlZSBjbGVhbgogICAgICAgICAgICAgICAgIGN3
ZD1zZWxmLnBhdGgsCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yPWxhbWJkYSAqYXJncywgKipr
d2FyZ3M6IG1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKAogICAgICAgICAgICAgICAgICAgICByZXR1
cm5jb2RlPTAsCi0gICAgICAgICAgICAgICAgICAgIHN0ZG91dD0nXG4nLmpvaW4oc29ydGVkKFsn
KiAnICsgc2VsZi5icmFuY2hdICsgbGlzdCgoe2RlZmF1bHRfYnJhbmNofSB8IHNldChzZWxmLmJy
YW5jaGVzKSkgLSB7c2VsZi5icmFuY2h9KSkpICsKKyAgICAgICAgICAgICAgICAgICAgc3Rkb3V0
PSdcbicuam9pbihzb3J0ZWQoWycqICcgKyBzZWxmLmJyYW5jaF0gKyBsaXN0KCh7ZGVmYXVsdF9i
cmFuY2h9IHwgc2V0KHNlbGYuY29tbWl0cy5rZXlzKCkpIHwgc2V0KHNlbGYuYnJhbmNoZXMpKSAt
IHtzZWxmLmJyYW5jaH0pKSkgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xucmVtb3Rl
cy9vcmlnaW4vSEVBRCAtPiBvcmlnaW4ve31cbicuZm9ybWF0KGRlZmF1bHRfYnJhbmNoKSwKICAg
ICAgICAgICAgICAgICApLAogICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgK
QEAgLTEzOCw2ICsyMjEsNTQgQEAgbm90aGluZyB0byBjb21taXQsIHdvcmtpbmcgdHJlZSBjbGVh
bgogICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9J29yaWdpbi97fVxuJy5mb3JtYXQoZGVmYXVs
dF9icmFuY2gpLAogICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICApLCBtb2Nrcy5TdWJw
cm9jZXNzLlJvdXRlKAorICAgICAgICAgICAgICAgIGxvY2FsLkdpdC5leGVjdXRhYmxlLCAnbG9n
JywgcmUuY29tcGlsZShyJy4rJyksICctMScsCisgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0
aCwKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogbW9j
a3MuUHJvY2Vzc0NvbXBsZXRpb24oCisgICAgICAgICAgICAgICAgICAgIHJldHVybmNvZGU9MCwK
KyAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PQorICAgICAgICAgICAgICAgICAgICAgICAgJ2Nv
bW1pdCB7aGFzaH0gKEhFQUQgLT4ge2JyYW5jaH0sIG9yaWdpbi97YnJhbmNofSwgb3JpZ2luL0hF
QUQpXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAnQXV0aG9yOiB7YXV0aG9yfSA8e2VtYWls
fT5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICdEYXRlOiAgIHtkYXRlfVxuJworICAgICAg
ICAgICAgICAgICAgICAgICAgJ1xue2xvZ30nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBoYXNoPXNlbGYuZmluZChhcmdzWzJdKS5oYXNoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyYW5jaD1zZWxmLmJyYW5jaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhdXRob3I9c2VsZi5maW5kKGFyZ3NbMl0pLmF1dGhvci5uYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVtYWlsPXNlbGYuZmluZChhcmdzWzJdKS5hdXRob3IuZW1haWwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZT1kYXRldGltZS5mcm9tdGltZXN0YW1wKHNlbGYu
ZmluZChhcmdzWzJdKS50aW1lc3RhbXApLnN0cmZ0aW1lKCclYSAlYiAlZCAlSDolTTolUyAlWScp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZz0nXG4nLmpvaW4oWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKCcgICAgJyArIGxpbmUpIGlmIGxpbmUgZWxzZSAn
JyBmb3IgbGluZSBpbiBzZWxmLmZpbmQoYXJnc1syXSkubWVzc2FnZS5zcGxpdGxpbmVzKCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSArIFsnZ2l0LXN2bi1pZDogaHR0cHM6Ly9z
dm4ue31yZXBvc2l0b3J5L3t9L3RydW5rQHt9IDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5
MWI0ZGJmYycuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5yZW1vdGUuc3BsaXQoJ0AnKVstMV0uc3BsaXQoJzonKVswXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5hbWUocGF0aCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZpbmQoYXJnc1syXSkucmV2aXNpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICldIGlmIGdpdF9zdm4gZWxzZSBbXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICApLAorICAg
ICAgICAgICAgICAgICkgaWYgc2VsZi5maW5kKGFyZ3NbMl0pIGVsc2UgbW9ja3MuUHJvY2Vzc0Nv
bXBsZXRpb24ocmV0dXJuY29kZT0xMjgpLAorICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vz
cy5Sb3V0ZSgKKyAgICAgICAgICAgICAgICBsb2NhbC5HaXQuZXhlY3V0YWJsZSwgJ3Jldi1saXN0
JywgJy0tY291bnQnLCAnLS1uby1tZXJnZXMnLCByZS5jb21waWxlKHInLisnKSwKKyAgICAgICAg
ICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAgICAgICAgIGdlbmVyYXRvcj1sYW1iZGEg
KmFyZ3MsICoqa3dhcmdzOiBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbigKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuY29kZT0wLAorICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9J3t9XG4nLmZv
cm1hdChzZWxmLmNvdW50KGFyZ3NbNF0pKQorICAgICAgICAgICAgICAgICkgaWYgc2VsZi5maW5k
KGFyZ3NbNF0pIGVsc2UgbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0xMjgpLAor
ICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKKyAgICAgICAgICAgICAgICBs
b2NhbC5HaXQuZXhlY3V0YWJsZSwgJ3Nob3cnLCAnLXMnLCAnLS1mb3JtYXQ9JWN0JywgcmUuY29t
cGlsZShyJy4rJyksCisgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKKyAgICAgICAgICAg
ICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogbW9ja3MuUHJvY2Vzc0NvbXBs
ZXRpb24oCisgICAgICAgICAgICAgICAgICAgIHJldHVybmNvZGU9MCwKKyAgICAgICAgICAgICAg
ICAgICAgc3Rkb3V0PSd7fVxuJy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
LmZpbmQoYXJnc1s0XSkudGltZXN0YW1wLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAg
ICAgICAgICAgKSBpZiBzZWxmLmZpbmQoYXJnc1s0XSkgZWxzZSBtb2Nrcy5Qcm9jZXNzQ29tcGxl
dGlvbihyZXR1cm5jb2RlPTEyOCksCisgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJv
dXRlKAorICAgICAgICAgICAgICAgIGxvY2FsLkdpdC5leGVjdXRhYmxlLCAnYnJhbmNoJywgJy1h
JywgJy0tY29udGFpbnMnLCByZS5jb21waWxlKHInLisnKSwKKyAgICAgICAgICAgICAgICBjd2Q9
c2VsZi5wYXRoLAorICAgICAgICAgICAgICAgIGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dh
cmdzOiBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbigKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
Y29kZT0wLAorICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9J1xuJy5qb2luKHNvcnRlZChzZWxm
LmJyYW5jaGVzX29uKGFyZ3NbNF0pKSkgKyAnXG4nLAorICAgICAgICAgICAgICAgICkgaWYgc2Vs
Zi5maW5kKGFyZ3NbNF0pIGVsc2UgbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0x
MjgpLAorICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKICAgICAgICAgICAg
ICAgICBsb2NhbC5HaXQuZXhlY3V0YWJsZSwKICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRo
LAogICAgICAgICAgICAgICAgIGNvbXBsZXRpb249bW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24oCkBA
IC0xNTIsMyArMjgzLDU2IEBAIG5vdGhpbmcgdG8gY29tbWl0LCB3b3JraW5nIHRyZWUgY2xlYW4K
ICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgKSwgKmdpdF9zdm5fcm91dGVzCiAgICAg
ICAgICkKKworICAgIGRlZiBmaW5kKHNlbGYsIHNvbWV0aGluZyk6CisgICAgICAgIGlmICd+JyBp
biBzb21ldGhpbmc6CisgICAgICAgICAgICBzcGxpdCA9IHNvbWV0aGluZy5zcGxpdCgnficpCisg
ICAgICAgICAgICBpZiBsZW4oc3BsaXQpID09IDIgYW5kIENvbW1pdC5OVU1CRVJfUkUubWF0Y2go
c3BsaXRbMV0pOgorICAgICAgICAgICAgICAgIGZvdW5kID0gc2VsZi5maW5kKHNwbGl0WzBdKQor
ICAgICAgICAgICAgICAgIGRpZmZlcmVuY2UgPSBpbnQoc3BsaXRbMV0pCisgICAgICAgICAgICAg
ICAgaWYgZGlmZmVyZW5jZSA8IGZvdW5kLmlkZW50aWZpZXI6CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBzZWxmLmNvbW1pdHNbZm91bmQuYnJhbmNoXVtmb3VuZC5pZGVudGlmaWVyIC0gZGlm
ZmVyZW5jZSAtIDFdCisgICAgICAgICAgICAgICAgZGlmZmVyZW5jZSAtPSBmb3VuZC5pZGVudGlm
aWVyCisgICAgICAgICAgICAgICAgaWYgZGlmZmVyZW5jZSA8IGZvdW5kLmJyYW5jaF9wb2ludDoK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29tbWl0c1tzZWxmLmRlZmF1bHRfYnJh
bmNoXVtmb3VuZC5icmFuY2hfcG9pbnQgLSBkaWZmZXJlbmNlIC0gMV0KKyAgICAgICAgICAgICAg
ICByZXR1cm4gTm9uZQorCisgICAgICAgIGlmIHNvbWV0aGluZyA9PSAnSEVBRCc6CisgICAgICAg
ICAgICByZXR1cm4gc2VsZi5jb21taXRzW3NlbGYuYnJhbmNoXVstMV0KKyAgICAgICAgaWYgc29t
ZXRoaW5nIGluIHNlbGYuY29tbWl0cy5rZXlzKCk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5j
b21taXRzW3NvbWV0aGluZ11bLTFdCisKKyAgICAgICAgc29tZXRoaW5nID0gc3RyKHNvbWV0aGlu
ZykKKyAgICAgICAgaWYgJy4uJyBpbiBzb21ldGhpbmc6CisgICAgICAgICAgICBzb21ldGhpbmcg
PSBzb21ldGhpbmcuc3BsaXQoJy4uJylbMV0KKyAgICAgICAgZm9yIGJyYW5jaCwgY29tbWl0cyBp
biBzZWxmLmNvbW1pdHMuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIGJyYW5jaCA9PSBzb21ldGhp
bmc6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbW1pdHNbLTFdCisgICAgICAgICAgICBmb3Ig
Y29tbWl0IGluIGNvbW1pdHM6CisgICAgICAgICAgICAgICAgaWYgc29tZXRoaW5nID09IHN0cihj
b21taXQucmV2aXNpb24pOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tbWl0CisgICAg
ICAgICAgICAgICAgaWYgbGVuKHNvbWV0aGluZykgPiA0IGFuZCBjb21taXQuaGFzaC5zdGFydHN3
aXRoKHN0cihzb21ldGhpbmcpKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbW1pdAor
ICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIGNvdW50KHNlbGYsIHNvbWV0aGluZyk6Cisg
ICAgICAgIG1hdGNoID0gc2VsZi5maW5kKHNvbWV0aGluZykKKyAgICAgICAgaWYgJy4uJyBpbiBz
b21ldGhpbmcgb3Igbm90IG1hdGNoLmJyYW5jaF9wb2ludDoKKyAgICAgICAgICAgIHJldHVybiBt
YXRjaC5pZGVudGlmaWVyCisgICAgICAgIHJldHVybiBtYXRjaC5icmFuY2hfcG9pbnQKKworICAg
IGRlZiBicmFuY2hlc19vbihzZWxmLCBoYXNoKToKKyAgICAgICAgcmVzdWx0ID0gc2V0KCkKKyAg
ICAgICAgZm91bmRfaWRlbnRpZmllciA9IDAKKyAgICAgICAgZm9yIGJyYW5jaCwgY29tbWl0cyBp
biBzZWxmLmNvbW1pdHMuaXRlbXMoKToKKworICAgICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21t
aXRzOgorICAgICAgICAgICAgICAgIGlmIGNvbW1pdC5oYXNoLnN0YXJ0c3dpdGgoaGFzaCk6Cisg
ICAgICAgICAgICAgICAgICAgIGZvdW5kX2lkZW50aWZpZXIgPSBtYXgoY29tbWl0LmlkZW50aWZp
ZXIsIGZvdW5kX2lkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoYnJh
bmNoKQorCisgICAgICAgIGlmIHNlbGYuZGVmYXVsdF9icmFuY2ggaW4gcmVzdWx0OgorICAgICAg
ICAgICAgZm9yIGJyYW5jaCwgY29tbWl0cyBpbiBzZWxmLmNvbW1pdHMuaXRlbXMoKToKKyAgICAg
ICAgICAgICAgICBpZiBjb21taXRzWzBdLmJyYW5jaF9wb2ludCBhbmQgY29tbWl0c1swXS5icmFu
Y2hfcG9pbnQgPj0gZm91bmRfaWRlbnRpZmllcjoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0
LmFkZChicmFuY2gpCisgICAgICAgIHJldHVybiByZXN1bHQKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL2xvY2FsL3N2bi5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21w
eS9tb2Nrcy9sb2NhbC9zdm4ucHkJKHJldmlzaW9uIDI2ODAxMikKKysrIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL2xvY2FsL3N2bi5weQkod29y
a2luZyBjb3B5KQpAQCAtMjEsMTIgKzIxLDMwIEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCBv
cworaW1wb3J0IHJlCisKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCiAKIGZyb20gd2Vi
a2l0Y29yZXB5IGltcG9ydCBtb2NrcwogZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgbG9jYWwKK2Zy
b20gd2Via2l0c2NtcHkgaW1wb3J0IENvbW1pdCwgQ29udHJpYnV0b3IKIAogCiBjbGFzcyBTdm4o
bW9ja3MuU3VicHJvY2Vzcyk6CisgICAgQlJBTkNIX1JFID0gcmUuY29tcGlsZShyJ1xeLyhicmFu
Y2hlcy8pPyg/UDxicmFuY2g+LispJykKKyAgICBVVENfT0ZGU0VUID0gJy0wMTAwJworCisgICAg
QGNsYXNzbWV0aG9kCisgICAgZGVmIGxvZ19saW5lKGNscywgY29tbWl0KToKKyAgICAgICAgZW1h
aWwgPSAnKG5vIGF1dGhvciknCisgICAgICAgIGlmIGNvbW1pdC5hdXRob3I6CisgICAgICAgICAg
ICBlbWFpbCA9IGNvbW1pdC5hdXRob3IuZW1haWwgb3IgY29tbWl0LmF1dGhvci5uYW1lCisgICAg
ICAgIHJldHVybiAncntyZXZpc2lvbn0gfCB7ZW1haWx9IHwge2RhdGV9Jy5mb3JtYXQoCisgICAg
ICAgICAgICByZXZpc2lvbj1jb21taXQucmV2aXNpb24sCisgICAgICAgICAgICBlbWFpbD1lbWFp
bCwKKyAgICAgICAgICAgIGRhdGU9ZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChjb21taXQudGltZXN0
YW1wKS5zdHJmdGltZSgnJVktJW0tJWQgJUg6JU06JVMge30gKCVhLCAlZCAlYiAlWSknLmZvcm1h
dChjbHMuVVRDX09GRlNFVCkpLAorICAgICAgICApCisKICAgICBkZWYgX19pbml0X18oc2VsZiwg
cGF0aD0nLy5pbnZhbGlkLXN2bicsIGJyYW5jaD1Ob25lLCByZW1vdGU9Tm9uZSwgYnJhbmNoZXM9
Tm9uZSwgdGFncz1Ob25lKToKICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAogICAgICAgICBzZWxm
LmJyYW5jaCA9IGJyYW5jaCBvciAndHJ1bmsnCkBAIC0zNCwzOSArNTIsMTIyIEBAIGNsYXNzIFN2
bihtb2Nrcy5TdWJwcm9jZXNzKToKIAogICAgICAgICBzZWxmLmJyYW5jaGVzID0gYnJhbmNoZXMg
b3IgW10KICAgICAgICAgc2VsZi50YWdzID0gdGFncyBvciBbXQorICAgICAgICBzZWxmLmNvbm5l
Y3RlZCA9IFRydWUKKworICAgICAgICAjIFByb3ZpZGUgYSByZWFzb25hYmxlIHNldCBvZiBjb21t
aXRzIHRvIHRlc3QgYWdhaW5zdAorICAgICAgICBjb250cmlidXRvciA9IENvbnRyaWJ1dG9yKG5h
bWU9J0pvbmF0aGFuIEJlZGFyZCcsIGVtYWlscz1bJ2piZWRhcmRAYXBwbGUuY29tJ10pCisgICAg
ICAgIHNlbGYuY29tbWl0cyA9IHsKKyAgICAgICAgICAgICd0cnVuayc6IFsKKyAgICAgICAgICAg
ICAgICBDb21taXQoCisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI9JzFAdHJ1bmsnLAor
ICAgICAgICAgICAgICAgICAgICByZXZpc2lvbj0xLAorICAgICAgICAgICAgICAgICAgICBhdXRo
b3I9Y29udHJpYnV0b3IsCisgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcD0xNjAxNjYwMTAw
LAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPScxc3QgY29tbWl0XG4nLAorICAgICAgICAg
ICAgICAgICksIENvbW1pdCgKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcj0nMkB0cnVu
aycsCisgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uPTIsCisgICAgICAgICAgICAgICAgICAg
IGF1dGhvcj1jb250cmlidXRvciwKKyAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wPTE2MDE2
NjExMDAsCisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9JzJuZCBjb21taXRcbicsCisgICAg
ICAgICAgICAgICAgKSwgQ29tbWl0KAorICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyPScz
QHRydW5rJywKKyAgICAgICAgICAgICAgICAgICAgcmV2aXNpb249NCwKKyAgICAgICAgICAgICAg
ICAgICAgYXV0aG9yPWNvbnRyaWJ1dG9yLAorICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA9
MTYwMTY2MzEwMCwKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nNHRoIGNvbW1pdFxuJywK
KyAgICAgICAgICAgICAgICApLCBDb21taXQoCisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZp
ZXI9JzRAdHJ1bmsnLAorICAgICAgICAgICAgICAgICAgICByZXZpc2lvbj02LAorICAgICAgICAg
ICAgICAgICAgICBhdXRob3I9Y29udHJpYnV0b3IsCisgICAgICAgICAgICAgICAgICAgIHRpbWVz
dGFtcD0xNjAxNjY1MTAwLAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSc2dGggY29tbWl0
XG4nLAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICBdLCAnYnJhbmNoLWEnOiBbCisg
ICAgICAgICAgICAgICAgQ29tbWl0KAorICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyPScy
LjFAYnJhbmNoLWEnLAorICAgICAgICAgICAgICAgICAgICByZXZpc2lvbj0zLAorICAgICAgICAg
ICAgICAgICAgICBhdXRob3I9Y29udHJpYnV0b3IsCisgICAgICAgICAgICAgICAgICAgIHRpbWVz
dGFtcD0xNjAxNjYyMTAwLAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSczcmQgY29tbWl0
XG4nLAorICAgICAgICAgICAgICAgICksIENvbW1pdCgKKyAgICAgICAgICAgICAgICAgICAgaWRl
bnRpZmllcj0nMi4yQGJyYW5jaC1hJywKKyAgICAgICAgICAgICAgICAgICAgcmV2aXNpb249NywK
KyAgICAgICAgICAgICAgICAgICAgYXV0aG9yPWNvbnRyaWJ1dG9yLAorICAgICAgICAgICAgICAg
ICAgICB0aW1lc3RhbXA9MTYwMTY2NjEwMCwKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0n
N3RoIGNvbW1pdFxuJywKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgXSwKKyAgICAg
ICAgfQorICAgICAgICBzZWxmLmNvbW1pdHNbJ2JyYW5jaC1iJ10gPSBbCisgICAgICAgICAgICBz
ZWxmLmNvbW1pdHNbJ2JyYW5jaC1hJ11bMF0sIENvbW1pdCgKKyAgICAgICAgICAgICAgICBpZGVu
dGlmaWVyPScyLjJAYnJhbmNoLWInLAorICAgICAgICAgICAgICAgIHJldmlzaW9uPTUsCisgICAg
ICAgICAgICAgICAgYXV0aG9yPWNvbnRyaWJ1dG9yLAorICAgICAgICAgICAgICAgIHRpbWVzdGFt
cD0xNjAxNjY0MTAwLAorICAgICAgICAgICAgICAgIG1lc3NhZ2U9JzV0aCBjb21taXRcbicsCisg
ICAgICAgICAgICApLCBDb21taXQoCisgICAgICAgICAgICAgICAgaWRlbnRpZmllcj0nMi4zQGJy
YW5jaC1iJywKKyAgICAgICAgICAgICAgICByZXZpc2lvbj04LAorICAgICAgICAgICAgICAgIGF1
dGhvcj1jb250cmlidXRvciwKKyAgICAgICAgICAgICAgICB0aW1lc3RhbXA9MTYwMTY2NzEwMCwK
KyAgICAgICAgICAgICAgICBtZXNzYWdlPSc4dGggY29tbWl0XG4nLAorICAgICAgICAgICAgKSwK
KyAgICAgICAgXQogCiAgICAgICAgIHN1cGVyKFN2biwgc2VsZikuX19pbml0X18oCiAgICAgICAg
ICAgICBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAogICAgICAgICAgICAgICAgIGxvY2FsLlN2bi5l
eGVjdXRhYmxlLCAnaW5mbycsCiAgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKLSAgICAg
ICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogbW9ja3MuUHJvY2Vz
c0NvbXBsZXRpb24oCi0gICAgICAgICAgICAgICAgICAgIHJldHVybmNvZGU9MCwKLSAgICAgICAg
ICAgICAgICAgICAgc3Rkb3V0PQotICAgICAgICAgICAgICAgICAgICAgICAgJ1BhdGg6IC5cbicK
LSAgICAgICAgICAgICAgICAgICAgICAgICdXb3JraW5nIENvcHkgUm9vdCBQYXRoOiB7cGF0aH1c
bicKLSAgICAgICAgICAgICAgICAgICAgICAgICdVUkw6IHtyZW1vdGV9L3ticmFuY2h9e2RpcmVj
dG9yeX1cbicKLSAgICAgICAgICAgICAgICAgICAgICAgICdSZWxhdGl2ZSBVUkw6IF4ve2JyYW5j
aH17ZGlyZWN0b3J5fVxuJwotICAgICAgICAgICAgICAgICAgICAgICAgJ1JlcG9zaXRvcnkgUm9v
dDoge3JlbW90ZX1cbicuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVj
dG9yeT1rd2FyZ3MuZ2V0KCdjd2QnLCAnJylbbGVuKHNlbGYucGF0aCk6XSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXRoPXNlbGYucGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZW1vdGU9c2VsZi5yZW1vdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJh
bmNoPXNlbGYuYnJhbmNoLAotICAgICAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAg
ICAgICApLAorICAgICAgICAgICAgICAgIGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdz
OiBzZWxmLl9pbmZvKGN3ZD1rd2FyZ3MuZ2V0KCdjd2QnLCcnKSkKKyAgICAgICAgICAgICksIG1v
Y2tzLlN1YnByb2Nlc3MuUm91dGUoCisgICAgICAgICAgICAgICAgbG9jYWwuU3ZuLmV4ZWN1dGFi
bGUsICdpbmZvJywgc2VsZi5CUkFOQ0hfUkUsCisgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0
aCwKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogc2Vs
Zi5faW5mbyhicmFuY2g9c2VsZi5CUkFOQ0hfUkUubWF0Y2goYXJnc1syXSkuZ3JvdXAoJ2JyYW5j
aCcpLCBjd2Q9a3dhcmdzLmdldCgnY3dkJywgJycpKQogICAgICAgICAgICAgKSwgbW9ja3MuU3Vi
cHJvY2Vzcy5Sb3V0ZSgKICAgICAgICAgICAgICAgICBsb2NhbC5Tdm4uZXhlY3V0YWJsZSwgJ2xp
c3QnLCAnXi9icmFuY2hlcycsCiAgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogbW9ja3MuUHJvY2Vz
c0NvbXBsZXRpb24oCiAgICAgICAgICAgICAgICAgICAgIHJldHVybmNvZGU9MCwKLSAgICAgICAg
ICAgICAgICAgICAgc3Rkb3V0PScvXG4nLmpvaW4oc2VsZi5icmFuY2hlcykgKyAnL1xuJywKLSAg
ICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9Jy9cbicuam9pbihz
b3J0ZWQoc2V0KHNlbGYuYnJhbmNoZXMpIHwgc2V0KHNlbGYuY29tbWl0cy5rZXlzKCkpIC0geyd0
cnVuayd9KSkgKyAnL1xuJywKKyAgICAgICAgICAgICAgICApIGlmIHNlbGYuY29ubmVjdGVkIGVs
c2UgbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0xKSwKICAgICAgICAgICAgICks
IG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCiAgICAgICAgICAgICAgICAgbG9jYWwuU3ZuLmV4ZWN1
dGFibGUsICdsaXN0JywgJ14vdGFncycsCiAgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwK
ICAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogbW9ja3Mu
UHJvY2Vzc0NvbXBsZXRpb24oCiAgICAgICAgICAgICAgICAgICAgIHJldHVybmNvZGU9MCwKICAg
ICAgICAgICAgICAgICAgICAgc3Rkb3V0PScvXG4nLmpvaW4oc2VsZi50YWdzKSArICcvXG4nLAot
ICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgKSBpZiBzZWxmLmNvbm5lY3RlZCBl
bHNlIG1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKHJldHVybmNvZGU9MSksCisgICAgICAgICAgICAp
LCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAorICAgICAgICAgICAgICAgIGxvY2FsLlN2bi5leGVj
dXRhYmxlLCAnbG9nJywgJy12JywgJy1xJywgc2VsZi5yZW1vdGUsICctcicsIHJlLmNvbXBpbGUo
cidcZCsnKSwKKyAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAgICAgICAg
IGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlv
bigKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuY29kZT0wLAorICAgICAgICAgICAgICAgICAg
ICBzdGRvdXQ9CisgICAgICAgICAgICAgICAgICAgICAgICAne2xpbmV9XG4nCisgICAgICAgICAg
ICAgICAgICAgICAgICAnQ2hhbmdlZCBwYXRoczpcbicKKyAgICAgICAgICAgICAgICAgICAgICAg
ICcgICAgTSAve2JyYW5jaH0vQ2hhbmdlTG9nXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAn
ICAgIE0gL3ticmFuY2h9L2ZpbGUuY3BwXG4nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsaW5lPXNlbGYubG9nX2xpbmUoc2VsZi5maW5kKHJldmlzaW9uPWFyZ3NbNl0pKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2g9J3RydW5rJyBpZiBzZWxmLmZpbmQo
cmV2aXNpb249YXJnc1s2XSkuYnJhbmNoID09ICd0cnVuaycgZWxzZSAnYnJhbmNoZXMve30nLmZv
cm1hdChzZWxmLmZpbmQocmV2aXNpb249YXJnc1s2XSkuYnJhbmNoKQorICAgICAgICAgICAgICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICApIGlmIHNlbGYuY29ubmVjdGVkIGFuZCBzZWxm
LmZpbmQocmV2aXNpb249YXJnc1s2XSkgZWxzZSBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbihyZXR1
cm5jb2RlPTEpLAorICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKKyAgICAg
ICAgICAgICAgICBsb2NhbC5Tdm4uZXhlY3V0YWJsZSwgJ2xvZycsICctcScsIHNlbGYuQlJBTkNI
X1JFLAorICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCisgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yPWxhbWJkYSAqYXJncywgKiprd2FyZ3M6IG1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKAor
ICAgICAgICAgICAgICAgICAgICByZXR1cm5jb2RlPTAsCisgICAgICAgICAgICAgICAgICAgIHN0
ZG91dD0nXG57fVxuJy5mb3JtYXQoJy0nICogNzIpLmpvaW4oWworICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5sb2dfbGluZShjb21taXQpIGZvciBjb21taXQgaW4gc2VsZi5fY29tbWl0c19m
b3IoYnJhbmNoPXNlbGYuQlJBTkNIX1JFLm1hdGNoKGFyZ3NbM10pLmdyb3VwKCdicmFuY2gnKSkK
KyAgICAgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAgKSBpZiBzZWxmLmNvbm5l
Y3RlZCBhbmQgc2VsZi5CUkFOQ0hfUkUubWF0Y2goYXJnc1szXSkuZ3JvdXAoJ2JyYW5jaCcpIGlu
IHNlbGYuY29tbWl0cyBlbHNlIG1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKHJldHVybmNvZGU9MSkK
KyAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCisgICAgICAgICAgICAgICAg
bG9jYWwuU3ZuLmV4ZWN1dGFibGUsICdsb2cnLCAnLWwnLCAnMScsICctcicsIHJlLmNvbXBpbGUo
cidcZCsnKSwgc2VsZi5CUkFOQ0hfUkUsCisgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwK
KyAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogc2VsZi5f
bG9nX2ZvcigKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoPXNlbGYuQlJBTkNIX1JFLm1hdGNo
KGFyZ3NbNl0pLmdyb3VwKCdicmFuY2gnKSwKKyAgICAgICAgICAgICAgICAgICAgcmV2aXNpb249
YXJnc1s1XSwKKyAgICAgICAgICAgICAgICApIGlmIHNlbGYuY29ubmVjdGVkIGVsc2UgbW9ja3Mu
UHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0xKQogICAgICAgICAgICAgKSwgbW9ja3MuU3Vi
cHJvY2Vzcy5Sb3V0ZSgKICAgICAgICAgICAgICAgICBsb2NhbC5Tdm4uZXhlY3V0YWJsZSwKICAg
ICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLApAQCAtODIsMyArMTgzLDY3IEBAIGNsYXNzIFN2
bihtb2Nrcy5TdWJwcm9jZXNzKToKICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICApLAog
ICAgICAgICApCisKKyAgICBkZWYgX2luZm8oc2VsZiwgYnJhbmNoPU5vbmUsIHJldmlzaW9uPU5v
bmUsIGN3ZD0nJyk6CisgICAgICAgIGNvbW1pdCA9IHNlbGYuZmluZChicmFuY2g9YnJhbmNoLCBy
ZXZpc2lvbj1yZXZpc2lvbikKKyAgICAgICAgaWYgbm90IGNvbW1pdDoKKyAgICAgICAgICAgIHJl
dHVybiBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbihyZXR1cm5jb2RlPTEsIHN0ZGVycj0nc3ZuOiBF
MTYwMDA2OiBObyBzdWNoIHJldmlzaW9uIHt9XG4nLmZvcm1hdChyZXZpc2lvbikpCisKKyAgICAg
ICAgcmV0dXJuIG1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKAorICAgICAgICAgICAgcmV0dXJuY29k
ZT0wLAorICAgICAgICAgICAgc3Rkb3V0PQorICAgICAgICAgICAgJ1BhdGg6IC5cbicKKyAgICAg
ICAgICAgICdXb3JraW5nIENvcHkgUm9vdCBQYXRoOiB7cGF0aH1cbicKKyAgICAgICAgICAgICdV
Ukw6IHtyZW1vdGV9L3ticmFuY2h9e2RpcmVjdG9yeX1cbicKKyAgICAgICAgICAgICdSZWxhdGl2
ZSBVUkw6IF4ve2JyYW5jaH17ZGlyZWN0b3J5fVxuJworICAgICAgICAgICAgJ1JlcG9zaXRvcnkg
Um9vdDoge3JlbW90ZX1cbicKKyAgICAgICAgICAgICdSZXZpc2lvbjoge3JldmlzaW9ufVxuJwor
ICAgICAgICAgICAgJ05vZGVLaW5kOiBkaXJlY3RvcnlcbicKKyAgICAgICAgICAgICdTY2hlZHVs
ZTogbm9ybWFsXG4nCisgICAgICAgICAgICAnTGFzdCBDaGFuZ2VkIEF1dGhvcjoge2F1dGhvcn1c
bicKKyAgICAgICAgICAgICdMYXN0IENoYW5nZWQgUmV2OiB7cmV2aXNpb259XG4nCisgICAgICAg
ICAgICAnTGFzdCBDaGFuZ2VkIERhdGU6IHtkYXRlfScuZm9ybWF0KAorICAgICAgICAgICAgICAg
IGRpcmVjdG9yeT1jd2RbbGVuKHNlbGYucGF0aCk6XSwKKyAgICAgICAgICAgICAgICBwYXRoPXNl
bGYucGF0aCwKKyAgICAgICAgICAgICAgICByZW1vdGU9c2VsZi5yZW1vdGUsCisgICAgICAgICAg
ICAgICAgYnJhbmNoPXNlbGYuYnJhbmNoLAorICAgICAgICAgICAgICAgIHJldmlzaW9uPWNvbW1p
dC5yZXZpc2lvbiwKKyAgICAgICAgICAgICAgICBhdXRob3I9Y29tbWl0LmF1dGhvci5lbWFpbCwK
KyAgICAgICAgICAgICAgICBkYXRlPWRhdGV0aW1lLmZyb210aW1lc3RhbXAoY29tbWl0LnRpbWVz
dGFtcCkuc3RyZnRpbWUoJyVZLSVtLSVkICVIOiVNOiVTIHt9ICglYSwgJWQgJWIgJVkpJy5mb3Jt
YXQoc2VsZi5VVENfT0ZGU0VUKSksCisgICAgICAgICAgICApLAorICAgICAgICApCisKKyAgICBk
ZWYgX2NvbW1pdHNfZm9yKHNlbGYsIGJyYW5jaD0ndHJ1bmsnKToKKyAgICAgICAgaWYgYnJhbmNo
IG5vdCBpbiBzZWxmLmNvbW1pdHM6CisgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgcmVz
dWx0ID0gW2NvbW1pdCBmb3IgY29tbWl0IGluIHJldmVyc2VkKHNlbGYuY29tbWl0c1ticmFuY2hd
KV0KKyAgICAgICAgaWYgc2VsZi5jb21taXRzW2JyYW5jaF1bMF0uYnJhbmNoX3BvaW50OgorICAg
ICAgICAgICAgcmVzdWx0ICs9IFtjb21taXQgZm9yIGNvbW1pdCBpbiByZXZlcnNlZChzZWxmLmNv
bW1pdHNbJ3RydW5rJ11bOnNlbGYuY29tbWl0c1ticmFuY2hdWzBdLmJyYW5jaF9wb2ludF0pXQor
ICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgX2xvZ19mb3Ioc2VsZiwgYnJhbmNoPU5v
bmUsIHJldmlzaW9uPU5vbmUpOgorICAgICAgICBjb21taXQgPSBzZWxmLmZpbmQoYnJhbmNoPWJy
YW5jaCwgcmV2aXNpb249cmV2aXNpb24pCisgICAgICAgIGlmIG5vdCBjb21taXQ6CisgICAgICAg
ICAgICByZXR1cm4gbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0xKQorICAgICAg
ICByZXR1cm4gbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24oCisgICAgICAgICAgICByZXR1cm5jb2Rl
PTAsCisgICAgICAgICAgICBzdGRvdXQ9CisgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LVxuJworICAgICAgICAgICAgICAgICd7bGluZX0gfCB7bGluZXN9IGxpbmVzXG5cbicKKyAgICAg
ICAgICAgICAgICAne2xvZ31cbicuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBsaW5lPXNl
bGYubG9nX2xpbmUoY29tbWl0KSwKKyAgICAgICAgICAgICAgICAgICAgbGluZXM9bGVuKGNvbW1p
dC5tZXNzYWdlLnNwbGl0bGluZXMoKSksCisgICAgICAgICAgICAgICAgICAgIGxvZz1jb21taXQu
bWVzc2FnZQorICAgICAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgIGRlZiBmaW5kKHNl
bGYsIGJyYW5jaD1Ob25lLCByZXZpc2lvbj1Ob25lKToKKyAgICAgICAgaWYgbm90IGJyYW5jaCBh
bmQgbm90IHJldmlzaW9uOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29tbWl0c1sndHJ1bmsn
XVstMV0KKyAgICAgICAgZm9yIGNhbmRpZGF0ZSBpbiBbYnJhbmNoXSBpZiBicmFuY2ggZWxzZSBs
aXN0KHNlbGYuY29tbWl0cy5rZXlzKCkpOgorICAgICAgICAgICAgaWYgbm90IHJldmlzaW9uOgor
ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNvbW1pdHNbY2FuZGlkYXRlXVstMV0KKyAgICAg
ICAgICAgIGZvciBjb21taXQgaW4gc2VsZi5jb21taXRzW2NhbmRpZGF0ZV06CisgICAgICAgICAg
ICAgICAgaWYgc3RyKGNvbW1pdC5yZXZpc2lvbikgPT0gc3RyKHJldmlzaW9uKToKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNvbW1pdAorICAgICAgICByZXR1cm4gTm9uZQpJbmRleDogVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9jb250cmli
dXRvcl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2NvbnRyaWJ1dG9yX3VuaXR0ZXN0LnB5CShyZXZp
c2lvbiAyNjgwMTIpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJr
aXRzY21weS90ZXN0L2NvbnRyaWJ1dG9yX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC01
Nyw2ICs1NywxMyBAQCBjbGFzcyBUZXN0Q29udHJpYnV0b3IodW5pdHRlc3QuVGVzdENhc2UpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udHJpYnV0b3IubmFtZSwgJ2piZWRhcmRAYXBwbGUu
Y29tJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250cmlidXRvci5lbWFpbHMsIFsnamJl
ZGFyZEBhcHBsZS5jb20nXSkKIAorICAgIGRlZiB0ZXN0X3Nob3J0X3N2bl9sb2coc2VsZik6Cisg
ICAgICAgIENvbnRyaWJ1dG9yLmNsZWFyKCkKKyAgICAgICAgY29udHJpYnV0b3IgPSBDb250cmli
dXRvci5mcm9tX3NjbV9sb2coJ3IyNjY3NTEgfCBqYmVkYXJkQGFwcGxlLmNvbSB8IDIwMjAtMDkt
MDggMTQ6MzM6NDIgLTA3MDAgKFR1ZSwgMDggU2VwIDIwMjApIHwgMSBsaW5lJykKKworICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNvbnRyaWJ1dG9yLm5hbWUsICdqYmVkYXJkQGFwcGxlLmNvbScp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udHJpYnV0b3IuZW1haWxzLCBbJ2piZWRhcmRA
YXBwbGUuY29tJ10pCisKICAgICBkZWYgdGVzdF9zdm5fcGF0Y2hfYnlfbG9nKHNlbGYpOgogICAg
ICAgICBDb250cmlidXRvci5jbGVhcigpCiAgICAgICAgIGNvbnRyaWJ1dG9yID0gQ29udHJpYnV0
b3IuZnJvbV9zY21fbG9nKCdQYXRjaCBieSBKb25hdGhhbiBCZWRhcmQgPGpiZWRhcmRAYXBwbGUu
Y29tPiBvbiAyMDIwLTA5LTEwJykKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZ2l0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZ2l0X3Vu
aXR0ZXN0LnB5CShyZXZpc2lvbiAyNjgwMTIpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2dpdF91bml0dGVzdC5weQkod29ya2luZyBjb3B5
KQpAQCAtNTUsMTAgKzU1LDEwIEBAIGNsYXNzIFRlc3RHaXQodW5pdHRlc3QuVGVzdENhc2UpOgog
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbC5HaXQoc2VsZi5wYXRoKS5yZW1vdGUo
KSwgcmVwby5yZW1vdGUpCiAKICAgICBkZWYgdGVzdF9icmFuY2hlcyhzZWxmKToKLSAgICAgICAg
d2l0aCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoLCBicmFuY2hlcz0oJ2JyYW5jaC0xJywgJ2Jy
YW5jaC0yJywgJ3JlbW90ZXMvb3JpZ2luL2JyYW5jaC0zJykpOgorICAgICAgICB3aXRoIG1vY2tz
LmxvY2FsLkdpdChzZWxmLnBhdGgsIGJyYW5jaGVzPSgncmVtb3Rlcy9vcmlnaW4vYnJhbmNoLTMn
LCkpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgICAgICBsb2Nh
bC5HaXQoc2VsZi5wYXRoKS5icmFuY2hlcywKLSAgICAgICAgICAgICAgICBbJ21haW4nLCAnYnJh
bmNoLTEnLCAnYnJhbmNoLTInLCAnYnJhbmNoLTMnXSwKKyAgICAgICAgICAgICAgICBbJ2JyYW5j
aC0zJywgJ2JyYW5jaC1hJywgJ2JyYW5jaC1iJywgJ21haW4nXSwKICAgICAgICAgICAgICkKIAog
ICAgIGRlZiB0ZXN0X3RhZ3Moc2VsZik6CkBAIC04NiwxMSArODYsMTA5IEBAIGNsYXNzIFRlc3RH
aXQodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyhsb2NhbC5HaXQuRXhjZXB0aW9uKToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGRpY3QoKSwgbG9jYWwuR2l0KHNlbGYucGF0aCkuaW5mbygpKQogCi0gICAgICAgIHdpdGggbW9j
a3MubG9jYWwuR2l0KHNlbGYucGF0aCwgZ2l0X3N2bj1UcnVlKSwgTW9ja1RpbWUsIExvZ2dlckNh
cHR1cmUoKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgIHdpdGggbW9j
a3MubG9jYWwuR2l0KHNlbGYucGF0aCwgZ2l0X3N2bj1UcnVlKSwgTW9ja1RpbWU6CisgICAgICAg
ICAgICBzZWxmLmFzc2VydERpY3RFcXVhbCgKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgICAgICdQYXRoJzogJy4nLAogICAgICAgICAgICAgICAgICAgICAnUmVwb3NpdG9yeSBS
b290JzogJ2dpdEB3ZWJraXQub3JnOi9tb2NrL3JlcG9zaXRvcnknLAogICAgICAgICAgICAgICAg
ICAgICAnVVJMJzogJ2dpdEB3ZWJraXQub3JnOi9tb2NrL3JlcG9zaXRvcnkvbWFpbicsCisgICAg
ICAgICAgICAgICAgICAgICdSZXZpc2lvbic6ICc2JywKKyAgICAgICAgICAgICAgICAgICAgJ05v
ZGUgS2luZCc6ICdkaXJlY3RvcnknLAorICAgICAgICAgICAgICAgICAgICAnU2NoZWR1bGUnOiAn
bm9ybWFsJywKKyAgICAgICAgICAgICAgICAgICAgJ0xhc3QgQ2hhbmdlZCBBdXRob3InOiAnamJl
ZGFyZEBhcHBsZS5jb20nLAorICAgICAgICAgICAgICAgICAgICAnTGFzdCBDaGFuZ2VkIFJldic6
ICc2JywKKyAgICAgICAgICAgICAgICAgICAgJ0xhc3QgQ2hhbmdlZCBEYXRlJzogJzIwMjAtMTAt
MDIgMTE6NTY6NDAnLAogICAgICAgICAgICAgICAgIH0sIGxvY2FsLkdpdChzZWxmLnBhdGgpLmlu
Zm8oKSwKICAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2NvbW1pdF9yZXZpc2lvbihzZWxm
KToKKyAgICAgICAgd2l0aCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoKSwgTW9ja1RpbWUsIExv
Z2dlckNhcHR1cmUoKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMobG9jYWwu
R2l0LkV4Y2VwdGlvbik6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBs
b2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQocmV2aXNpb249MSkpCisKKyAgICAgICAgd2l0aCBt
b2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoLCBnaXRfc3ZuPVRydWUpLCBNb2NrVGltZSwgTG9nZ2Vy
Q2FwdHVyZSgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaTFAbWFpbicsIHN0cihs
b2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQocmV2aXNpb249MSkpKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnaTJAbWFpbicsIHN0cihsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQo
cmV2aXNpb249MikpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaTIuMUBicmFuY2gt
YScsIHN0cihsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQocmV2aXNpb249MykpKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaTNAbWFpbicsIHN0cihsb2NhbC5HaXQoc2VsZi5wYXRo
KS5jb21taXQocmV2aXNpb249NCkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaTIu
MkBicmFuY2gtYicsIHN0cihsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQocmV2aXNpb249NSkp
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaTRAbWFpbicsIHN0cihsb2NhbC5HaXQo
c2VsZi5wYXRoKS5jb21taXQocmV2aXNpb249NikpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnaTIuMkBicmFuY2gtYScsIHN0cihsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQocmV2
aXNpb249NykpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaTIuM0BicmFuY2gtYics
IHN0cihsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQocmV2aXNpb249OCkpKQorCisgICAgICAg
ICAgICAjIE91dC1vZi1ib3VuZHMgY29tbWl0CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0
UmFpc2VzKGxvY2FsLkdpdC5FeGNlcHRpb24pOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoTm9uZSwgbG9jYWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KHJldmlzaW9uPTEwKSkKKwor
ICAgIGRlZiB0ZXN0X2NvbW1pdF9oYXNoKHNlbGYpOgorICAgICAgICBmb3IgbW9jayBpbiBbbW9j
a3MubG9jYWwuR2l0KHNlbGYucGF0aCksIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgsIGdpdF9z
dm49VHJ1ZSldOgorICAgICAgICAgICAgd2l0aCBtb2NrLCBNb2NrVGltZSwgTG9nZ2VyQ2FwdHVy
ZSgpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2kxQG1haW4nLCBzdHIobG9j
YWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KGhhc2g9JzliODMxMWYyJykpKQorICAgICAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2kyQG1haW4nLCBzdHIobG9jYWwuR2l0KHNlbGYucGF0aCku
Y29tbWl0KGhhc2g9J2ZmZjgzYmIyJykpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ2kzQG1haW4nLCBzdHIobG9jYWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KGhhc2g9JzFhYmUy
NWI0JykpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2k0QG1haW4nLCBzdHIo
bG9jYWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KGhhc2g9J2JhZTVkMWU5JykpKQorCisgICAgICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaTIuMUBicmFuY2gtYScsIHN0cihsb2NhbC5HaXQo
c2VsZi5wYXRoKS5jb21taXQoaGFzaD0nYTMwY2U4NDknKSkpCisgICAgICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnaTIuMkBicmFuY2gtYScsIHN0cihsb2NhbC5HaXQoc2VsZi5wYXRoKS5j
b21taXQoaGFzaD0nNjIxNjUyYWQnKSkpCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdpMi4yQGJyYW5jaC1iJywgc3RyKGxvY2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdChoYXNo
PSczY2QzMmUzNScpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdpMi4zQGJy
YW5jaC1iJywgc3RyKGxvY2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdChoYXNoPSc3OTA3MjVhNicp
KSkKKworICAgIGRlZiB0ZXN0X2NvbW1pdF9mcm9tX2JyYW5jaChzZWxmKToKKyAgICAgICAgZm9y
IG1vY2sgaW4gW21vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgpLCBtb2Nrcy5sb2NhbC5HaXQoc2Vs
Zi5wYXRoLCBnaXRfc3ZuPVRydWUpXToKKyAgICAgICAgICAgIHdpdGggbW9jaywgTW9ja1RpbWUs
IExvZ2dlckNhcHR1cmUoKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdpNEBt
YWluJywgc3RyKGxvY2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdChicmFuY2g9J21haW4nKSkpCisg
ICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaTIuMkBicmFuY2gtYScsIHN0cihsb2Nh
bC5HaXQoc2VsZi5wYXRoKS5jb21taXQoYnJhbmNoPSdicmFuY2gtYScpKSkKKyAgICAgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdpMi4zQGJyYW5jaC1iJywgc3RyKGxvY2FsLkdpdChzZWxm
LnBhdGgpLmNvbW1pdChicmFuY2g9J2JyYW5jaC1iJykpKQorCisgICAgZGVmIHRlc3RfaWRlbnRp
ZmllcihzZWxmKToKKyAgICAgICAgZm9yIG1vY2sgaW4gW21vY2tzLmxvY2FsLkdpdChzZWxmLnBh
dGgpLCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoLCBnaXRfc3ZuPVRydWUpXToKKyAgICAgICAg
ICAgIHdpdGggbW9jaywgTW9ja1RpbWUsIExvZ2dlckNhcHR1cmUoKToKKyAgICAgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICAgICAnOWI4MzExZjI1YTc3YmEx
NDkyM2Q5ZDVhNjUzMjEwM2Y1NGFiZWZjYicsCisgICAgICAgICAgICAgICAgICAgIGxvY2FsLkdp
dChzZWxmLnBhdGgpLmNvbW1pdChpZGVudGlmaWVyPSdpMUBtYWluJykuaGFzaCwKKyAgICAgICAg
ICAgICAgICApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
ICAgICAgICAgJ2ZmZjgzYmIyZDkxNzFiNGQ5MTk2ZTk3N2ViMDUwOGZkNTdlN2EwOGQnLAorICAg
ICAgICAgICAgICAgICAgICBsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQoaWRlbnRpZmllcj0n
aTJAbWFpbicpLmhhc2gsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgICAgICcxYWJlMjViNDQzZTk4NWY5M2I5MGQ4
MzBlNGE3ZTM3MzEzMzZhZjRkJywKKyAgICAgICAgICAgICAgICAgICAgbG9jYWwuR2l0KHNlbGYu
cGF0aCkuY29tbWl0KGlkZW50aWZpZXI9J2kzQG1haW4nKS5oYXNoLAorICAgICAgICAgICAgICAg
ICkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICAg
ICAnYmFlNWQxZTkwOTk5ZDRmOTE2YThhMTU4MTBjY2ZhNDNmMzdhMmZkNicsCisgICAgICAgICAg
ICAgICAgICAgIGxvY2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdChpZGVudGlmaWVyPSdpNEBtYWlu
JykuaGFzaCwKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKAorICAgICAgICAgICAgICAgICAgICAnYTMwY2U4NDk0YmYxYWMyODA3YTY5ODQ0Zjcy
NmJlNGE5ODQzY2E1NScsCisgICAgICAgICAgICAgICAgICAgIGxvY2FsLkdpdChzZWxmLnBhdGgp
LmNvbW1pdChpZGVudGlmaWVyPSdpMi4xQGJyYW5jaC1hJykuaGFzaCwKKyAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAg
ICAgJzYyMTY1MmFkZDdmYzQxNjA5OWJkMjA2MzM2NmNjMzhmZjYxYWZlMzYnLAorICAgICAgICAg
ICAgICAgICAgICBsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQoaWRlbnRpZmllcj0naTIuMkBi
cmFuY2gtYScpLmhhc2gsCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgJzNjZDMyZTM1MjQxMDU2NWJiNTQz
ODIxZmJmODU2YTZkM2NhYWQxYzQnLAorICAgICAgICAgICAgICAgICAgICBsb2NhbC5HaXQoc2Vs
Zi5wYXRoKS5jb21taXQoaWRlbnRpZmllcj0naTIuMkBicmFuY2gtYicpLmhhc2gsCisgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICAgICAgICAgICc3OTA3MjVhNmQ3OWUyOGRiMmVjZGRlMjk1NDhkMjI2MmMwYmQwNTlkJywKKyAg
ICAgICAgICAgICAgICAgICAgbG9jYWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KGlkZW50aWZpZXI9
J2kyLjNAYnJhbmNoLWInKS5oYXNoLAorICAgICAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0
X25vbl9jYW5ub25pY2FsX2lkZW50aWZpZXJzKHNlbGYpOgorICAgICAgICBmb3IgbW9jayBpbiBb
bW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCksIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgsIGdp
dF9zdm49VHJ1ZSldOgorICAgICAgICAgICAgd2l0aCBtb2NrLCBNb2NrVGltZSwgTG9nZ2VyQ2Fw
dHVyZSgpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2kyQG1haW4nLCBzdHIo
bG9jYWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KGlkZW50aWZpZXI9J2kwQGJyYW5jaC1hJykpKQor
ICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2kxQG1haW4nLCBzdHIobG9jYWwuR2l0
KHNlbGYucGF0aCkuY29tbWl0KGlkZW50aWZpZXI9J2ktMUBicmFuY2gtYScpKSkKKworICAgICAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2kyLjFAYnJhbmNoLWEnLCBzdHIobG9jYWwuR2l0
KHNlbGYucGF0aCkuY29tbWl0KGlkZW50aWZpZXI9J2kyLjFAYnJhbmNoLWInKSkpCisgICAgICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaTJAbWFpbicsIHN0cihsb2NhbC5HaXQoc2VsZi5w
YXRoKS5jb21taXQoaWRlbnRpZmllcj0naTBAYnJhbmNoLWInKSkpCisgICAgICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnaTFAbWFpbicsIHN0cihsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21t
aXQoaWRlbnRpZmllcj0naS0xQGJyYW5jaC1iJykpKQorCisgICAgZGVmIHRlc3RfZ2l0X3N2bl9y
ZXZpc2lvbl9leHRyYWN0KHNlbGYpOgorICAgICAgICB3aXRoIG1vY2tzLmxvY2FsLkdpdChzZWxm
LnBhdGgsIGdpdF9zdm49VHJ1ZSksIE1vY2tUaW1lLCBMb2dnZXJDYXB0dXJlKCk6CisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxvY2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdChoYXNo
PSc5YjgzMTFmMicpLnJldmlzaW9uKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9zY21fdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9zY21f
dW5pdHRlc3QucHkJKHJldmlzaW9uIDI2ODAxMikKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3Qvc2NtX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNv
cHkpCkBAIC00NCwzICs0NCwyMyBAQCBjbGFzcyBUZXN0U2NtKHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICBkZWYgdGVzdF9yZW1vdGUoc2VsZik6CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlz
ZXMoTm90SW1wbGVtZW50ZWRFcnJvcik6CiAgICAgICAgICAgICBsb2NhbC5TY20oc2VsZi5wYXRo
KS5yZW1vdGUoKQorCisgICAgZGVmIHRlc3RfZGV2X2JyYW5jaGVzKHNlbGYpOgorICAgICAgICBz
ZWxmLmFzc2VydFRydWUobG9jYWwuU2NtLkRFVl9CUkFOQ0hFUy5tYXRjaCgnZW5nLzEyMzQnKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvY2FsLlNjbS5ERVZfQlJBTkNIRVMubWF0Y2goJ2pi
ZWRhcmQvZW5nLzEyMzQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvY2FsLlNjbS5ERVZf
QlJBTkNIRVMubWF0Y2goJ2Rldi8xMjM0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2Nh
bC5TY20uREVWX0JSQU5DSEVTLm1hdGNoKCdqYmVkYXJkL2Rldi8xMjM0JykpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShsb2NhbC5TY20uREVWX0JSQU5DSEVTLm1hdGNoKCdidWcvMTIzNCcpKQor
ICAgICAgICBzZWxmLmFzc2VydFRydWUobG9jYWwuU2NtLkRFVl9CUkFOQ0hFUy5tYXRjaCgnamJl
ZGFyZC9idWcvMTIzNCcpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9jYWwuU2NtLkRF
Vl9CUkFOQ0hFUy5tYXRjaCgnbWFpbicpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxvY2Fs
LlNjbS5ERVZfQlJBTkNIRVMubWF0Y2goJ3JhbmRvbS8xMjM0JykpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UobG9jYWwuU2NtLkRFVl9CUkFOQ0hFUy5tYXRjaCgnb3RoZXIvMTIzNCcpKQorICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKGxvY2FsLlNjbS5ERVZfQlJBTkNIRVMubWF0Y2goJ3NhZmFy
aS02MDYtYnJhbmNoJykpCisKKyAgICBkZWYgdGVzdF9wcm9kX2JyYW5jaGVzKHNlbGYpOgorICAg
ICAgICBzZWxmLmFzc2VydFRydWUobG9jYWwuU2NtLlBST0RfQlJBTkNIRVMubWF0Y2goJ3NhZmFy
aS02MTAtYnJhbmNoJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2NhbC5TY20uUFJPRF9C
UkFOQ0hFUy5tYXRjaCgnc2FmYXJpLTYxMC4xLWJyYW5jaCcpKQorCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UobG9jYWwuU2NtLlBST0RfQlJBTkNIRVMubWF0Y2goJ21haW4nKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRGYWxzZShsb2NhbC5TY20uUFJPRF9CUkFOQ0hFUy5tYXRjaCgnZW5nLzEyMzQn
KSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5
L3Rlc3Qvc3ZuX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3Qvc3ZuX3VuaXR0ZXN0LnB5CShyZXZpc2lv
biAyNjgwMTIpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRz
Y21weS90ZXN0L3N2bl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBA
QAogaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0
IE91dHB1dENhcHR1cmUKIGZyb20gd2Via2l0c2NtcHkgaW1wb3J0IGxvY2FsLCBtb2NrcwogCiAK
QEAgLTUzLDcgKzU0LDcgQEAgY2xhc3MgVGVzdFN2bih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAg
ICAgIHdpdGggbW9ja3MubG9jYWwuU3ZuKHNlbGYucGF0aCwgYnJhbmNoZXM9KCdicmFuY2gtMScs
ICdicmFuY2gtMicpKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAg
ICAgICAgbG9jYWwuU3ZuKHNlbGYucGF0aCkuYnJhbmNoZXMsCi0gICAgICAgICAgICAgICAgWyd0
cnVuaycsICdicmFuY2gtMScsICdicmFuY2gtMiddLAorICAgICAgICAgICAgICAgIFsndHJ1bmsn
LCAnYnJhbmNoLTEnLCAnYnJhbmNoLTInLCAnYnJhbmNoLWEnLCAnYnJhbmNoLWInXSwKICAgICAg
ICAgICAgICkKIAogICAgIGRlZiB0ZXN0X3RhZ3Moc2VsZik6CkBAIC03MSwzICs3Miw2MSBAQCBj
bGFzcyBUZXN0U3ZuKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgd2l0aCBtb2Nrcy5sb2Nh
bC5Tdm4oc2VsZi5wYXRoKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2NhbC5Tdm4o
c2VsZi5wYXRoKS5pc19zdm4pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxvY2FsLlN2
bihzZWxmLnBhdGgpLmlzX2dpdCkKKworICAgIGRlZiB0ZXN0X2luZm8oc2VsZik6CisgICAgICAg
IHdpdGggbW9ja3MubG9jYWwuU3ZuKHNlbGYucGF0aCk6CisgICAgICAgICAgICBzZWxmLmFzc2Vy
dERpY3RFcXVhbCgKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHUnUGF0
aCc6IHUnLicsCisgICAgICAgICAgICAgICAgICAgIHUnV29ya2luZyBDb3B5IFJvb3QgUGF0aCc6
IHUnL21vY2svcmVwb3NpdG9yeScsCisgICAgICAgICAgICAgICAgICAgIHUnUmVwb3NpdG9yeSBS
b290JzogdSdodHRwczovL3N2bi5tb2NrLm9yZy9yZXBvc2l0b3J5L3JlcG9zaXRvcnknLAorICAg
ICAgICAgICAgICAgICAgICB1J1VSTCc6IHUnaHR0cHM6Ly9zdm4ubW9jay5vcmcvcmVwb3NpdG9y
eS9yZXBvc2l0b3J5L3RydW5rJywKKyAgICAgICAgICAgICAgICAgICAgdSdSZWxhdGl2ZSBVUkwn
OiAgdSdeL3RydW5rJywKKyAgICAgICAgICAgICAgICAgICAgdSdSZXZpc2lvbic6IHUnNicsCisg
ICAgICAgICAgICAgICAgICAgIHUnTm9kZUtpbmQnOiB1J2RpcmVjdG9yeScsCisgICAgICAgICAg
ICAgICAgICAgIHUnU2NoZWR1bGUnOiB1J25vcm1hbCcsCisgICAgICAgICAgICAgICAgICAgIHUn
TGFzdCBDaGFuZ2VkIEF1dGhvcic6IHUnamJlZGFyZEBhcHBsZS5jb20nLAorICAgICAgICAgICAg
ICAgICAgICB1J0xhc3QgQ2hhbmdlZCBSZXYnOiB1JzYnLAorICAgICAgICAgICAgICAgICAgICB1
J0xhc3QgQ2hhbmdlZCBEYXRlJzogdScyMDIwLTEwLTAyIDExOjU4OjIwIC0wMTAwIChGcmksIDAy
IE9jdCAyMDIwKScsCisgICAgICAgICAgICAgICAgfSwgbG9jYWwuU3ZuKHNlbGYucGF0aCkuaW5m
bygpLAorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfY29tbWl0X3JldmlzaW9uKHNlbGYp
OgorICAgICAgICB3aXRoIG1vY2tzLmxvY2FsLlN2bihzZWxmLnBhdGgpLCBPdXRwdXRDYXB0dXJl
KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdpMUB0cnVuaycsIHN0cihsb2NhbC5T
dm4oc2VsZi5wYXRoKS5jb21taXQocmV2aXNpb249MSkpKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnaTJAdHJ1bmsnLCBzdHIobG9jYWwuU3ZuKHNlbGYucGF0aCkuY29tbWl0KHJldmlz
aW9uPTIpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2kyLjFAYnJhbmNoLWEnLCBz
dHIobG9jYWwuU3ZuKHNlbGYucGF0aCkuY29tbWl0KHJldmlzaW9uPTMpKSkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ2kzQHRydW5rJywgc3RyKGxvY2FsLlN2bihzZWxmLnBhdGgpLmNv
bW1pdChyZXZpc2lvbj00KSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdpMi4yQGJy
YW5jaC1iJywgc3RyKGxvY2FsLlN2bihzZWxmLnBhdGgpLmNvbW1pdChyZXZpc2lvbj01KSkpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdpNEB0cnVuaycsIHN0cihsb2NhbC5Tdm4oc2Vs
Zi5wYXRoKS5jb21taXQocmV2aXNpb249NikpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnaTIuMkBicmFuY2gtYScsIHN0cihsb2NhbC5Tdm4oc2VsZi5wYXRoKS5jb21taXQocmV2aXNp
b249NykpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaTIuM0BicmFuY2gtYicsIHN0
cihsb2NhbC5Tdm4oc2VsZi5wYXRoKS5jb21taXQocmV2aXNpb249OCkpKQorCisgICAgICAgICAg
ICAjIE91dC1vZi1ib3VuZHMgY29tbWl0CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp
c2VzKGxvY2FsLlN2bi5FeGNlcHRpb24pOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoTm9uZSwgbG9jYWwuU3ZuKHNlbGYucGF0aCkuY29tbWl0KHJldmlzaW9uPTEwKSkKKworICAg
IGRlZiB0ZXN0X2NvbW1pdF9mcm9tX2JyYW5jaChzZWxmKToKKyAgICAgICAgd2l0aCBtb2Nrcy5s
b2NhbC5Tdm4oc2VsZi5wYXRoKSwgT3V0cHV0Q2FwdHVyZSgpOgorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnaTRAdHJ1bmsnLCBzdHIobG9jYWwuU3ZuKHNlbGYucGF0aCkuY29tbWl0KGJy
YW5jaD0ndHJ1bmsnKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdpMi4yQGJyYW5j
aC1hJywgc3RyKGxvY2FsLlN2bihzZWxmLnBhdGgpLmNvbW1pdChicmFuY2g9J2JyYW5jaC1hJykp
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaTIuM0BicmFuY2gtYicsIHN0cihsb2Nh
bC5Tdm4oc2VsZi5wYXRoKS5jb21taXQoYnJhbmNoPSdicmFuY2gtYicpKSkKKworICAgIGRlZiB0
ZXN0X2lkZW50aWZpZXIoc2VsZik6CisgICAgICAgIHdpdGggbW9ja3MubG9jYWwuU3ZuKHNlbGYu
cGF0aCksIE91dHB1dENhcHR1cmUoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwg
bG9jYWwuU3ZuKHNlbGYucGF0aCkuY29tbWl0KGlkZW50aWZpZXI9J2kxQHRydW5rJykucmV2aXNp
b24pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxvY2FsLlN2bihzZWxmLnBhdGgp
LmNvbW1pdChpZGVudGlmaWVyPSdpMkB0cnVuaycpLnJldmlzaW9uKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgzLCBsb2NhbC5Tdm4oc2VsZi5wYXRoKS5jb21taXQoaWRlbnRpZmllcj0n
aTIuMUBicmFuY2gtYScpLnJldmlzaW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0
LCBsb2NhbC5Tdm4oc2VsZi5wYXRoKS5jb21taXQoaWRlbnRpZmllcj0naTNAdHJ1bmsnKS5yZXZp
c2lvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNSwgbG9jYWwuU3ZuKHNlbGYucGF0
aCkuY29tbWl0KGlkZW50aWZpZXI9J2kyLjJAYnJhbmNoLWInKS5yZXZpc2lvbikKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoNiwgbG9jYWwuU3ZuKHNlbGYucGF0aCkuY29tbWl0KGlkZW50
aWZpZXI9J2k0QHRydW5rJykucmV2aXNpb24pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDcsIGxvY2FsLlN2bihzZWxmLnBhdGgpLmNvbW1pdChpZGVudGlmaWVyPSdpMi4yQGJyYW5jaC1h
JykucmV2aXNpb24pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDgsIGxvY2FsLlN2bihz
ZWxmLnBhdGgpLmNvbW1pdChpZGVudGlmaWVyPSdpMi4zQGJyYW5jaC1iJykucmV2aXNpb24pCisK
KyAgICBkZWYgdGVzdF9ub25fY2Fubm9uaWNhbF9pZGVudGlmaWVycyhzZWxmKToKKyAgICAgICAg
d2l0aCBtb2Nrcy5sb2NhbC5Tdm4oc2VsZi5wYXRoKSwgT3V0cHV0Q2FwdHVyZSgpOgorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaTJAdHJ1bmsnLCBzdHIobG9jYWwuU3ZuKHNlbGYucGF0
aCkuY29tbWl0KGlkZW50aWZpZXI9J2kwQGJyYW5jaC1hJykpKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnaTFAdHJ1bmsnLCBzdHIobG9jYWwuU3ZuKHNlbGYucGF0aCkuY29tbWl0KGlk
ZW50aWZpZXI9J2ktMUBicmFuY2gtYScpKSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnaTJAdHJ1bmsnLCBzdHIobG9jYWwuU3ZuKHNlbGYucGF0aCkuY29tbWl0KGlkZW50aWZpZXI9
J2kwQGJyYW5jaC1iJykpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaTFAdHJ1bmsn
LCBzdHIobG9jYWwuU3ZuKHNlbGYucGF0aCkuY29tbWl0KGlkZW50aWZpZXI9J2ktMUBicmFuY2gt
YicpKSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410657</attachid>
            <date>2020-10-06 10:40:15 -0700</date>
            <delta_ts>2020-10-06 15:47:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216404-20201006104014.patch</filename>
            <type>text/plain</type>
            <size>76952</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2ODA1NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU5IEBACisyMDIwLTEwLTA1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0c2NtcHldIEdlbmVyYXRlIENvbW1pdCBvYmplY3QgZnJvbSBs
b2NhbCByZXBvc2l0b3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTY0MDQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY4NzAyODk3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weTogQnVtcCB2ZXJzaW9u
LgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkv
ZGVjb3JhdG9ycy5weToKKyAgICAgICAgKE1lbW9pemUuX19jYWxsX18uZGVjb3JhdG9yKTogSGFu
ZGxlIGNhc2Ugd2hlcmUgZnVuY3Rpb24gYXJndW1lbnRzIGFyZSBkaWZmZXJlbnQuCisgICAgICAg
ICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9wb3Bl
bi5weToKKyAgICAgICAgKFBvcGVuQmFzZS5wb2xsKTogUmVzZXQgc3Rkb3V0IGFuZCBzdGRlcnIg
YWZ0ZXIgY2FsbGluZyB0aGUgY29tcGxldGlvbiBoYW5kbGVyLgorICAgICAgICAqIFNjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvZGVjb3JhdG9yc191bml0
dGVzdC5weToKKyAgICAgICAgKFRlc3RNZW1vaXplLnRlc3RfY29uZmxpY3RpbmdfYXJncyk6Cisg
ICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvX19pbml0
X18ucHk6IEJ1bXAgdmVyc2lvbi4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9jb250cmlidXRvci5weToKKyAgICAgICAgKENvbnRyaWJ1dG9yKTog
TnVtYmVyIG9mIGxpbmVzIG1heSBiZSBzaW5ndWxhci4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9naXQucHk6CisgICAgICAgIChHaXQp
OgorICAgICAgICAoR2l0Ll9faW5pdF9fKTogQ2FsbGVyIG1heSB3aXNoIHRvIHNwZWNpZnkgdGhl
IHBhdHRlcm5zIGZvciBwcm9kdWN0aW9uIGFuZCBkZXZlbG9wbWVudCBicmFuY2hlcy4KKyAgICAg
ICAgKEdpdC5icmFuY2hlcyk6IENhbGwgdGhlIG1vcmUgZ2VuZXJhbCBfYnJhbmNoZXNfZm9yIHRv
IHVuaWZ5IHJlbW90ZSBzdHJpcHBpbmcgbG9naWMuCisgICAgICAgIChHaXQuX2NvbW1pdF9jb3Vu
dCk6IEdpdmVuIGEgcGFyYW1ldGVyIChoYXNoLCBicmFuY2gsIGRpZmZlcmVuY2UgYmV0d2VlbiBk
ZWZhdWx0IGJyYW5jaCBhbmQgY29tbWl0KSwgY29tcHV0ZQorICAgICAgICB0aGUgbnVtYmVyIG9m
IGNvbW1pdHMuCisgICAgICAgIChHaXQuX2JyYW5jaGVzX2Zvcik6IEdpdmVuIGEgaGFzaCwgcmV0
dXJuIGFsbCBicmFuY2hlcyB0aGUgY29tbWl0IGlzIHBhcnQgb2YuCisgICAgICAgIChHaXQuY29t
bWl0KTogQ29uc3RydWN0IGEgY29tbWl0IGdpdmVuIGEgY29tbWl0IGhhc2gsIHJldmlzaW9uLCBp
ZGVudGlmaWVyIG9yIGJyYW5jaC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9sb2NhbC9zY20ucHk6CisgICAgICAgIChTY20pOgorICAgICAgICAo
U2NtLl9faW5pdF9fKTogQ2FsbGVyIG1heSB3aXNoIHRvIHNwZWNpZnkgdGhlIHBhdHRlcm5zIGZv
ciBwcm9kdWN0aW9uIGFuZCBkZXZlbG9wbWVudCBicmFuY2hlcy4KKyAgICAgICAgKFNjbS5jb21t
aXQpOiBDb25zdHJ1Y3QgYSBjb21taXQgZ2l2ZW4gYSBjb21taXQgaGFzaCwgcmV2aXNpb24sIGlk
ZW50aWZpZXIgb3IgYnJhbmNoLgorICAgICAgICAoU2NtLnByaW9yaXRpemVfYnJhbmNoZXMpOiBH
aXZlbiBhIHNldCBvZiBicmFuY2hlcywgcGljayB0aGUgaGlnaGVzdCBwcmlvcml0eSBvbmUuCisg
ICAgICAgIChTY20ubG9nKTogTG9nIGVycm9yIHRvIGEgY29uZmlndXJlZCBsb2dnZXIgb3Igc3Rk
ZXJyLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5
L2xvY2FsL3N2bi5weToKKyAgICAgICAgKFN2bik6CisgICAgICAgIChTdm4uX19pbml0X18pOiBD
YWxsZXIgbWF5IHdpc2ggdG8gc3BlY2lmeSB0aGUgcGF0dGVybnMgZm9yIHByb2R1Y3Rpb24gYW5k
IGRldmVsb3BtZW50IGJyYW5jaGVzLgorICAgICAgICAoU3ZuLmluZm8pOiBBbGxvdyBpbmZvIGZv
ciBhIHNwZWNpZmljIGNvbW1pdCB0byBiZSBxdWVyaWVkLgorICAgICAgICAoU3ZuLl9jYWNoZV9w
YXRoKTogUGF0aCB0byBqc29uIGNhY2hlIG9mIGJyYW5jaC1jb21taXQgbWFwcGluZy4KKyAgICAg
ICAgKFN2bi5fY2FjaGVfcmV2aXNpb25zKTogUXVlcnkgdGhlIHJlbW90ZSBmb3IgYSBzcGVjaWZp
YyBicmFuY2ggdG8gZ2V0IHRoZSBsaXN0IG9mIGFsbCBjb21taXRzIG9uIHRoYXQgYnJhbmNoLgor
ICAgICAgICAoU3ZuLl9jb21taXRfY291bnQpOiBHaXZlbiBhIHJldmlzaW9uIG9yIGJyYW5jaCwg
Y29tcHV0ZSB0aGUgbnVtYmVyIG9mIGNvbW1pdHMuCisgICAgICAgIChTdm4uX2JyYW5jaF9mb3Ip
OiBHaXZlbiBhIHJldmlzaW9uLCB1c2UgbG9jYWwgZGF0YSB0byBkZXRlcm1pbmUgdGhlIG1vc3Qg
bGlrZWx5IGJyYW5jaCBiZWZvcmUgYXNraW5nIHRoZSByZW1vdGUgd2hpY2ggYnJhbmNoCisgICAg
ICAgIGEgY29tbWl0IGlzIG9uLgorICAgICAgICAoU3ZuLmNvbW1pdCk6IENvbnN0cnVjdCBhIGNv
bW1pdCBnaXZlbiBhIGNvbW1pdCBoYXNoLCByZXZpc2lvbiwgaWRlbnRpZmllciBvciBicmFuY2gu
CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9j
a3MvbG9jYWwvZ2l0LnB5OgorICAgICAgICAoR2l0KTogQWRkIGNvbW1hbmRzIG5lZWRlZCB0byBj
b25zdHJ1Y3QgYW4gaWRlbnRpZmllciwgYWRkIG1vY2sgY29tbWl0cy4KKyAgICAgICAgKiBTY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9zdm4ucHk6
CisgICAgICAgIChTdm4pOiBBZGQgY29tbWFuZHMgbmVlZGVkIHRvIGNvbnN0cnVjdCBhbiBpZGVu
dGlmaWVyLCBhZGQgbW9jayBjb21taXRzLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvY29udHJpYnV0b3JfdW5pdHRlc3QucHk6CisgICAg
ICAgIChUZXN0Q29udHJpYnV0b3IudGVzdF9zaG9ydF9zdm5fbG9nKToKKyAgICAgICAgKiBTY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2dpdF91bml0dGVzdC5w
eToKKyAgICAgICAgKFRlc3RHaXQpOgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3Qvc2NtX3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGVzdFNj
bS50ZXN0X3JlbW90ZSk6CisgICAgICAgIChUZXN0U2NtKToKKyAgICAgICAgKiBTY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L3N2bl91bml0dGVzdC5weToKKyAg
ICAgICAgKFRlc3RTdm4pOgorCiAyMDIwLTEwLTA2ICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8
YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjY3Mzk5KTogW1dQRV0g
QnVpbGQgYnJva2VuIHdpdGggRU5BQkxFX0FDQ0VTU0lCSUxJVFk9T0ZGCkluZGV4OiBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L19faW5pdF9fLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRj
b3JlcHkvX19pbml0X18ucHkJKHJldmlzaW9uIDI2ODAxNCkKKysrIFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDcgKzM1LDcgQEAgZnJvbSB3ZWJraXRjb3JlcHkudGltZW91dCBpbXBvcnQgVGlt
ZW91dAogZnJvbSB3ZWJraXRjb3JlcHkuc3VicHJvY2Vzc191dGlscyBpbXBvcnQgVGltZW91dEV4
cGlyZWQsIENvbXBsZXRlZFByb2Nlc3MsIHJ1bgogZnJvbSB3ZWJraXRjb3JlcHkub3V0cHV0X2Nh
cHR1cmUgaW1wb3J0IExvZ2dlckNhcHR1cmUsIE91dHB1dENhcHR1cmUsIE91dHB1dER1cGxpY2F0
ZQogCi12ZXJzaW9uID0gVmVyc2lvbigwLCA0LCAxMSkKK3ZlcnNpb24gPSBWZXJzaW9uKDAsIDQs
IDEyKQogCiBmcm9tIHdlYmtpdGNvcmVweS5hdXRvaW5zdGFsbCBpbXBvcnQgUGFja2FnZSwgQXV0
b0luc3RhbGwKIGlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCk6CkluZGV4OiBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L2RlY29yYXRvcnMucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNv
cmVweS9kZWNvcmF0b3JzLnB5CShyZXZpc2lvbiAyNjgwMTQpCisrKyBUb29scy9TY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L2RlY29yYXRvcnMucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDggKzQyLDkgQEAgY2xhc3MgTWVtb2l6ZShvYmplY3QpOgogICAgICAgICAg
ICAgaWYgJ2NhY2hlZCcgbm90IGluIGluc3BlY3QuZ2V0YXJnc3BlYyhmdW5jdGlvbikuYXJnczoK
ICAgICAgICAgICAgICAgICBjYWNoZWQgPSBrd2FyZ3MucG9wKCdjYWNoZWQnLCBjYWNoZWQpCiAK
LSAgICAgICAgICAgIGxhc3RfY2FsbGVkID0gc2VsZi5fbGFzdF9jYWxsZWRbZnVuY3Rpb25dLmdl
dChhcmdzLCAwKQotICAgICAgICAgICAgaXNfY2FjaGVkID0gYXJncyBpbiBzZWxmLl9jYWNoZVtm
dW5jdGlvbl0KKyAgICAgICAgICAgIGtleWFyZ3MgPSBhcmdzICsgdHVwbGUoc29ydGVkKFsoa2V5
LCB2YWx1ZSkgZm9yIGtleSwgdmFsdWUgaW4ga3dhcmdzLml0ZW1zKCldKSkKKyAgICAgICAgICAg
IGxhc3RfY2FsbGVkID0gc2VsZi5fbGFzdF9jYWxsZWRbZnVuY3Rpb25dLmdldChrZXlhcmdzLCAw
KQorICAgICAgICAgICAgaXNfY2FjaGVkID0ga2V5YXJncyBpbiBzZWxmLl9jYWNoZVtmdW5jdGlv
bl0KICAgICAgICAgICAgIGlmIG5vdCBjYWNoZWQ6CiAgICAgICAgICAgICAgICAgaXNfY2FjaGVk
ID0gRmFsc2UKICAgICAgICAgICAgIGlmIHRpbWVvdXQgYW5kIHRpbWVvdXQgPCB0aW1lLnRpbWUo
KSAtIGxhc3RfY2FsbGVkOgpAQCAtNTIsOCArNTMsOCBAQCBjbGFzcyBNZW1vaXplKG9iamVjdCk6
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NhY2hlW2Z1bmN0aW9uXS5nZXQoYXJncywg
Tm9uZSkKIAogICAgICAgICAgICAgdmFsdWUgPSBmdW5jdGlvbigqYXJncywgKiprd2FyZ3MpCi0g
ICAgICAgICAgICBzZWxmLl9sYXN0X2NhbGxlZFtmdW5jdGlvbl1bYXJnc10gPSB0aW1lLnRpbWUo
KQotICAgICAgICAgICAgc2VsZi5fY2FjaGVbZnVuY3Rpb25dW2FyZ3NdID0gdmFsdWUKKyAgICAg
ICAgICAgIHNlbGYuX2xhc3RfY2FsbGVkW2Z1bmN0aW9uXVtrZXlhcmdzXSA9IHRpbWUudGltZSgp
CisgICAgICAgICAgICBzZWxmLl9jYWNoZVtmdW5jdGlvbl1ba2V5YXJnc10gPSB2YWx1ZQogICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlCiAKICAgICAgICAgZGVjb3JhdG9yLmNsZWFyID0gc2VsZi5j
bGVhcgpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNv
cmVweS9tb2Nrcy9wb3Blbi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L21vY2tzL3BvcGVuLnB5CShyZXZpc2lvbiAyNjgw
MTQpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5
L21vY2tzL3BvcGVuLnB5CSh3b3JraW5nIGNvcHkpCkBAIC04OCwxMyArODgsMTQgQEAgY2xhc3Mg
UG9wZW5CYXNlKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgc3RyaW5nX3V0aWxzLmRlY29kZShz
ZWxmLl9jb21wbGV0aW9uLnN0ZGVyciwgdGFyZ2V0X3R5cGU9c2VsZi5fc3RkZXJyX3R5cGUpKQog
ICAgICAgICAgICAgKHNlbGYuc3RkZXJyIG9yIHN5cy5zdGRlcnIpLmZsdXNoKCkKIAotICAgICAg
ICBpZiBzZWxmLnJldHVybmNvZGUgaXMgbm90IE5vbmUgYW5kIHRpbWUudGltZSgpID49IHNlbGYu
X3N0YXJ0X3RpbWUgKyBzZWxmLl9jb21wbGV0aW9uLmVsYXBzZWQ6Ci0gICAgICAgICAgICBzZWxm
LnJldHVybmNvZGUgPSBzZWxmLl9jb21wbGV0aW9uLnJldHVybmNvZGUKICAgICAgICAgICAgIGlm
IHNlbGYuc3Rkb3V0OgogICAgICAgICAgICAgICAgIHNlbGYuc3Rkb3V0LnNlZWsoMCkKICAgICAg
ICAgICAgIGlmIHNlbGYuc3RkZXJyOgogICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyLnNlZWso
MCkKIAorICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgbm90IE5vbmUgYW5kIHRpbWUudGlt
ZSgpID49IHNlbGYuX3N0YXJ0X3RpbWUgKyBzZWxmLl9jb21wbGV0aW9uLmVsYXBzZWQ6CisgICAg
ICAgICAgICBzZWxmLnJldHVybmNvZGUgPSBzZWxmLl9jb21wbGV0aW9uLnJldHVybmNvZGUKKwog
ICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5jb2RlCiAKICAgICBkZWYgc2VuZF9zaWduYWwoc2Vs
Ziwgc2lnKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJr
aXRjb3JlcHkvdGVzdHMvZGVjb3JhdG9yc191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlc3RzL2RlY29y
YXRvcnNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2ODAxNCkKKysrIFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvZGVjb3JhdG9yc191bml0dGVz
dC5weQkod29ya2luZyBjb3B5KQpAQCAtMTA2LDQgKzEwNiw0IEBAIGNsYXNzIFRlc3RNZW1vaXpl
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUZXN0TWVtb2l6
ZS5pbmNyZW1lbnRfd2l0aF9hcmdzKAogICAgICAgICAgICAgdGltZW91dD0ndGltZW91dC1uZXcn
LAogICAgICAgICAgICAgY2FjaGVkPSdjYWNoZWQtbmV3JywKLSAgICAgICAgKSwgKCd0aW1lb3V0
JywgJ2NhY2hlZCcpKQorICAgICAgICApLCAoJ3RpbWVvdXQtbmV3JywgJ2NhY2hlZC1uZXcnKSkK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3NldHVwLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3NldHVwLnB5CShy
ZXZpc2lvbiAyNjgwMTQpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS9z
ZXR1cC5weQkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBzZXR1cCgKICAgICAgICAg
J3dlYmtpdHNjbXB5Lm1vY2tzLmxvY2FsJywKICAgICAgICAgJ3dlYmtpdHNjbXB5LnRlc3QnLAog
ICAgIF0sCi0gICAgaW5zdGFsbF9yZXF1aXJlcz1bJ3dlYmtpdGNvcmVweSddLAorICAgIGluc3Rh
bGxfcmVxdWlyZXM9WydweXRob24tZGF0ZXV0aWwnLCAnd2Via2l0Y29yZXB5J10sCiAgICAgaW5j
bHVkZV9wYWNrYWdlX2RhdGE9VHJ1ZSwKICAgICB6aXBfc2FmZT1GYWxzZSwKICkKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L19faW5pdF9fLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L19faW5pdF9fLnB5CShyZXZpc2lvbiAyNjgwMTQpCisrKyBUb29scy9TY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9fX2luaXRfXy5weQkod29ya2luZyBjb3B5
KQpAQCAtMzgsNyArMzgsNyBAQCBkZWYgX21heWJlX2FkZF93ZWJraXRjb3JlcHlfcGF0aCgpOgog
X21heWJlX2FkZF93ZWJraXRjb3JlcHlfcGF0aCgpCiAKIHRyeToKLSAgICBmcm9tIHdlYmtpdGNv
cmVweS52ZXJzaW9uIGltcG9ydCBWZXJzaW9uCisgICAgZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0
IEF1dG9JbnN0YWxsLCBQYWNrYWdlLCBWZXJzaW9uCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAg
cmFpc2UgSW1wb3J0RXJyb3IoCiAgICAgICAgICInd2Via2l0Y29yZXB5JyBjb3VsZCBub3QgYmUg
Zm91bmQgb24geW91ciBQeXRob24gcGF0aC5cbiIgKwpAQCAtNDYsNyArNDYsOSBAQCBleGNlcHQg
SW1wb3J0RXJyb3I6CiAgICAgICAgICJQbGVhc2UgaW5zdGFsbCB3ZWJraXRjb3JlcHkgd2l0aCBg
cGlwIGluc3RhbGwgd2Via2l0Y29yZXB5IC0tZXh0cmEtaW5kZXgtdXJsIDxwYWNrYWdlIGluZGV4
IFVSTD5gIgogICAgICkKIAotdmVyc2lvbiA9IFZlcnNpb24oMCwgMCwgOCkKK3ZlcnNpb24gPSBW
ZXJzaW9uKDAsIDEsIDApCisKK0F1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ2RhdGV1dGls
JywgVmVyc2lvbigyLCA4LCAxKSwgcHlwaV9uYW1lPSdweXRob24tZGF0ZXV0aWwnKSkKIAogZnJv
bSB3ZWJraXRzY21weS5jb250cmlidXRvciBpbXBvcnQgQ29udHJpYnV0b3IKIGZyb20gd2Via2l0
c2NtcHkuY29tbWl0IGltcG9ydCBDb21taXQKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2NvbnRyaWJ1dG9yLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2NvbnRyaWJ1dG9y
LnB5CShyZXZpc2lvbiAyNjgwMTQpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9jb250cmlidXRvci5weQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyAr
MjYsNyBAQCBpbXBvcnQgcmUKIGNsYXNzIENvbnRyaWJ1dG9yKG9iamVjdCk6CiAgICAgR0lUX0FV
VEhPUl9SRSA9IHJlLmNvbXBpbGUocidBdXRob3I6ICg/UDxhdXRob3I+LiopIDwoP1A8ZW1haWw+
W15AXStAW15AXSspKEAuKik/PicpCiAgICAgQVVUT01BVEVEX0NIRUNLSU5fUkUgPSByZS5jb21w
aWxlKHInQXV0aG9yOiAoP1A8YXV0aG9yPi4qKSA8ZGV2bnVsbD4nKQotICAgIFNWTl9BVVRIT1Jf
UkUgPSByZS5jb21waWxlKHInclxkKyBcfCAoP1A8ZW1haWw+LiopIFx8ICg/UDxkYXRlPi4qKSBc
fCBcZCsgbGluZXMnKQorICAgIFNWTl9BVVRIT1JfUkUgPSByZS5jb21waWxlKHInclxkKyBcfCAo
P1A8ZW1haWw+LiopIFx8ICg/UDxkYXRlPi4qKSBcfCBcZCsgbGluZXM/JykKICAgICBTVk5fUEFU
Q0hfRlJPTV9SRSA9IHJlLmNvbXBpbGUocidQYXRjaCBieSAoP1A8YXV0aG9yPi4qKSA8KD9QPGVt
YWlsPi4qKT4gb24gXGQrLVxkKy1cZCsnKQogCiAgICAgYnlfZW1haWwgPSBkaWN0KCkKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL2dp
dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93
ZWJraXRzY21weS9sb2NhbC9naXQucHkJKHJldmlzaW9uIDI2ODAxNCkKKysrIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL2dpdC5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMjEsMTkgKzIxLDI0IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIAoraW1wb3J0IHJl
CisKIGZyb20gd2Via2l0Y29yZXB5IGltcG9ydCBydW4sIGRlY29yYXRvcnMsIFRpbWVvdXRFeHBp
cmVkCiBmcm9tIHdlYmtpdHNjbXB5LmxvY2FsIGltcG9ydCBTY20KK2Zyb20gd2Via2l0c2NtcHkg
aW1wb3J0IENvbW1pdCwgQ29udHJpYnV0b3IKIAogCiBjbGFzcyBHaXQoU2NtKToKICAgICBleGVj
dXRhYmxlID0gJy91c3IvYmluL2dpdCcKKyAgICBHSVRfQ09NTUlUID0gcmUuY29tcGlsZShyJ2Nv
bW1pdCAoP1A8aGFzaD5bMC05YS1mXSspJykKKyAgICBHSVRfU1ZOX1JFVklTSU9OID0gcmUuY29t
cGlsZShyJ2dpdC1zdm4taWQ6IFxTKzpcL1wvLitAKD9QPHJldmlzaW9uPlxkKykgListListList
LisnKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGlzX2NoZWNrb3V0KGNscywgcGF0aCk6
CiAgICAgICAgIHJldHVybiBydW4oW2Nscy5leGVjdXRhYmxlLCAncmV2LXBhcnNlJywgJy0tc2hv
dy10b3BsZXZlbCddLCBjd2Q9cGF0aCwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSkucmV0dXJuY29kZSA9
PSAwCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCk6Ci0gICAgICAgIHN1cGVyKEdpdCwg
c2VsZikuX19pbml0X18ocGF0aCkKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgZGV2X2Jy
YW5jaGVzPU5vbmUsIHByb2RfYnJhbmNoZXM9Tm9uZSk6CisgICAgICAgIHN1cGVyKEdpdCwgc2Vs
ZikuX19pbml0X18ocGF0aCwgZGV2X2JyYW5jaGVzPWRldl9icmFuY2hlcywgcHJvZF9icmFuY2hl
cz1wcm9kX2JyYW5jaGVzKQogICAgICAgICBpZiBub3Qgc2VsZi5yb290X3BhdGg6CiAgICAgICAg
ICAgICByYWlzZSBPU0Vycm9yKCdQcm92aWRlZCBwYXRoIHt9IGlzIG5vdCBhIGdpdCByZXBvc2l0
b3J5Jy5mb3JtYXQocGF0aCkpCiAKQEAgLTEwMCwxMSArMTA1LDcgQEAgY2xhc3MgR2l0KFNjbSk6
CiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgYnJhbmNoZXMoc2VsZik6Ci0gICAgICAgIGJyYW5j
aCA9IHJ1bihbc2VsZi5leGVjdXRhYmxlLCAnYnJhbmNoJywgJy1hJ10sIGN3ZD1zZWxmLnJvb3Rf
cGF0aCwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgZW5jb2Rpbmc9J3V0Zi04JykKLSAgICAgICAgaWYg
YnJhbmNoLnJldHVybmNvZGU6Ci0gICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignRmFp
bGVkIHRvIHJldHJpZXZlIGJyYW5jaCBsaXN0IGZvciB7fScuZm9ybWF0KHNlbGYucm9vdF9wYXRo
KSkKLSAgICAgICAgcmVzdWx0ID0gW2JyYW5jaC5sc3RyaXAoJyAqJykgZm9yIGJyYW5jaCBpbiBm
aWx0ZXIobGFtYmRhIGJyYW5jaDogJy0+JyBub3QgaW4gYnJhbmNoLCBicmFuY2guc3Rkb3V0LnNw
bGl0bGluZXMoKSldCi0gICAgICAgIHJldHVybiBbJy8nLmpvaW4oYnJhbmNoLnNwbGl0KCcvJylb
MjpdKSBpZiBicmFuY2guc3RhcnRzd2l0aCgncmVtb3Rlcy9vcmlnaW4vJykgZWxzZSBicmFuY2gg
Zm9yIGJyYW5jaCBpbiByZXN1bHRdCisgICAgICAgIHJldHVybiBzZWxmLl9icmFuY2hlc19mb3Io
KQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIHRhZ3Moc2VsZik6CkBAIC0xMTgsMyArMTE5LDEz
NCBAQCBjbGFzcyBHaXQoU2NtKToKICAgICAgICAgaWYgcmVzdWx0LnJldHVybmNvZGU6CiAgICAg
ICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignRmFpbGVkIHRvIHJldHJpZXZlIHJlbW90ZSBm
b3Ige30nLmZvcm1hdChzZWxmLnJvb3RfcGF0aCkpCiAgICAgICAgIHJldHVybiByZXN1bHQuc3Rk
b3V0LnJzdHJpcCgpCisKKyAgICBkZWYgX2NvbW1pdF9jb3VudChzZWxmLCBuYXRpdmVfcGFyYW1l
dGVyKToKKyAgICAgICAgcmV2aXNpb25fY291bnQgPSBydW4oCisgICAgICAgICAgICBbc2VsZi5l
eGVjdXRhYmxlLCAncmV2LWxpc3QnLCAnLS1jb3VudCcsICctLW5vLW1lcmdlcycsIG5hdGl2ZV9w
YXJhbWV0ZXJdLAorICAgICAgICAgICAgY3dkPXNlbGYucm9vdF9wYXRoLCBjYXB0dXJlX291dHB1
dD1UcnVlLCBlbmNvZGluZz0ndXRmLTgnLAorICAgICAgICApCisgICAgICAgIGlmIHJldmlzaW9u
X2NvdW50LnJldHVybmNvZGU6CisgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignRmFp
bGVkIHRvIHJldHJpZXZlIHJldmlzaW9uIGNvdW50IGZvciB7fScuZm9ybWF0KG5hdGl2ZV9wYXJh
bWV0ZXIpKQorICAgICAgICByZXR1cm4gaW50KHJldmlzaW9uX2NvdW50LnN0ZG91dCkKKworICAg
IGRlZiBfYnJhbmNoZXNfZm9yKHNlbGYsIGhhc2g9Tm9uZSk6CisgICAgICAgIGJyYW5jaCA9IHJ1
bigKKyAgICAgICAgICAgIFtzZWxmLmV4ZWN1dGFibGUsICdicmFuY2gnLCAnLWEnXSArIChbJy0t
Y29udGFpbnMnLCBoYXNoXSBpZiBoYXNoIGVsc2UgW10pLAorICAgICAgICAgICAgY3dkPXNlbGYu
cm9vdF9wYXRoLAorICAgICAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwKKyAgICAgICAgICAg
IGVuY29kaW5nPSd1dGYtOCcsCisgICAgICAgICkKKyAgICAgICAgaWYgYnJhbmNoLnJldHVybmNv
ZGU6CisgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignRmFpbGVkIHRvIHJldHJpZXZl
IGJyYW5jaCBsaXN0IGZvciB7fScuZm9ybWF0KHNlbGYucm9vdF9wYXRoKSkKKyAgICAgICAgcmVz
dWx0ID0gW2JyYW5jaC5sc3RyaXAoJyAqJykgZm9yIGJyYW5jaCBpbiBmaWx0ZXIobGFtYmRhIGJy
YW5jaDogJy0+JyBub3QgaW4gYnJhbmNoLCBicmFuY2guc3Rkb3V0LnNwbGl0bGluZXMoKSldCisg
ICAgICAgIHJldHVybiBzb3J0ZWQoc2V0KFsnLycuam9pbihicmFuY2guc3BsaXQoJy8nKVsyOl0p
IGlmIGJyYW5jaC5zdGFydHN3aXRoKCdyZW1vdGVzL29yaWdpbi8nKSBlbHNlIGJyYW5jaCBmb3Ig
YnJhbmNoIGluIHJlc3VsdF0pKQorCisgICAgZGVmIGNvbW1pdChzZWxmLCBoYXNoPU5vbmUsIHJl
dmlzaW9uPU5vbmUsIGlkZW50aWZpZXI9Tm9uZSwgYnJhbmNoPU5vbmUpOgorICAgICAgICBpZiBy
ZXZpc2lvbiBhbmQgbm90IHNlbGYuaXNfc3ZuOgorICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNl
cHRpb24oJ1RoaXMgZ2l0IGNoZWNrb3V0IGRvZXMgbm90IHN1cHBvcnQgU1ZOIHJldmlzaW9ucycp
CisgICAgICAgIGVsaWYgcmV2aXNpb246CisgICAgICAgICAgICByZXZpc2lvbiA9IENvbW1pdC5f
cGFyc2VfcmV2aXNpb24ocmV2aXNpb24sIGRvX2Fzc2VydD1UcnVlKQorICAgICAgICAgICAgcmV2
aXNpb25fbG9nID0gcnVuKAorICAgICAgICAgICAgICAgIFtzZWxmLmV4ZWN1dGFibGUsICdzdm4n
LCAnZmluZC1yZXYnLCAncnt9Jy5mb3JtYXQocmV2aXNpb24pXSwKKyAgICAgICAgICAgICAgICBj
d2Q9c2VsZi5yb290X3BhdGgsIGNhcHR1cmVfb3V0cHV0PVRydWUsIGVuY29kaW5nPSd1dGYtOCcs
CisgICAgICAgICAgICAgICAgdGltZW91dD0zLAorICAgICAgICAgICAgKQorICAgICAgICAgICAg
aWYgcmV2aXNpb25fbG9nLnJldHVybmNvZGU6CisgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5F
eGNlcHRpb24oIkZhaWxlZCB0byByZXRyaWV2ZSBjb21taXQgaW5mb3JtYXRpb24gZm9yICdye30n
Ii5mb3JtYXQocmV2aXNpb24pKQorICAgICAgICAgICAgaGFzaCA9IHJldmlzaW9uX2xvZy5zdGRv
dXQucnN0cmlwKCkKKyAgICAgICAgICAgIGlmIG5vdCBoYXNoOgorICAgICAgICAgICAgICAgIHJh
aXNlIHNlbGYuRXhjZXB0aW9uKCJGYWlsZWQgdG8gZmluZCAncnt9JyIuZm9ybWF0KHJldmlzaW9u
KSkKKworICAgICAgICBkZWZhdWx0X2JyYW5jaCA9IHNlbGYuZGVmYXVsdF9icmFuY2gKKyAgICAg
ICAgcGFyc2VkX2JyYW5jaF9wb2ludCA9IE5vbmUKKworICAgICAgICBpZiBpZGVudGlmaWVyIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgaWYgcmV2aXNpb246CisgICAgICAgICAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcignQ2Fubm90IGRlZmluZSBib3RoIHJldmlzaW9uIGFuZCBpZGVudGlmaWVy
JykKKyAgICAgICAgICAgIGlmIGhhc2g6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJv
cignQ2Fubm90IGRlZmluZSBib3RoIGhhc2ggYW5kIGlkZW50aWZpZXInKQorCisgICAgICAgICAg
ICBwYXJzZWRfYnJhbmNoX3BvaW50LCBpZGVudGlmaWVyLCBwYXJzZWRfYnJhbmNoID0gQ29tbWl0
Ll9wYXJzZV9pZGVudGlmaWVyKGlkZW50aWZpZXIsIGRvX2Fzc2VydD1UcnVlKQorICAgICAgICAg
ICAgaWYgcGFyc2VkX2JyYW5jaDoKKyAgICAgICAgICAgICAgICBpZiBicmFuY2ggYW5kIGJyYW5j
aCAhPSBwYXJzZWRfYnJhbmNoOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KAorICAgICAgICAgICAgICAgICAgICAgICAgIkNhbGxlciBwYXNzZWQgYm90aCAnYnJhbmNoJyBh
bmQgJ2lkZW50aWZpZXInLCBidXQgc3BlY2lmaWVkIGRpZmZlcmVudCBicmFuY2hlcyAoe30gYW5k
IHt9KSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaCwgcGFyc2Vk
X2JyYW5jaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAg
ICkKKyAgICAgICAgICAgICAgICBicmFuY2ggPSBwYXJzZWRfYnJhbmNoCisKKyAgICAgICAgICAg
IGJhc2VsaW5lID0gYnJhbmNoIG9yICdIRUFEJworICAgICAgICAgICAgaXNfZGVmYXVsdCA9IGJh
c2VsaW5lID09IGRlZmF1bHRfYnJhbmNoCisgICAgICAgICAgICBpZiBiYXNlbGluZSA9PSAnSEVB
RCc6CisgICAgICAgICAgICAgICAgaXNfZGVmYXVsdCA9IGRlZmF1bHRfYnJhbmNoIGluIHNlbGYu
X2JyYW5jaGVzX2ZvcihiYXNlbGluZSkKKworICAgICAgICAgICAgaWYgaXNfZGVmYXVsdCBhbmQg
cGFyc2VkX2JyYW5jaF9wb2ludDoKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlv
bignQ2Fubm90IHByb3ZpZGUgYSBicmFuY2ggcG9pbnQgZm9yIGEgY29tbWl0IG9uIHRoZSBkZWZh
dWx0IGJyYW5jaCcpCisKKyAgICAgICAgICAgIGJhc2VfY291bnQgPSBzZWxmLl9jb21taXRfY291
bnQoYmFzZWxpbmUgaWYgaXNfZGVmYXVsdCBlbHNlICd7fS4ue30nLmZvcm1hdChkZWZhdWx0X2Jy
YW5jaCwgYmFzZWxpbmUpKQorCisgICAgICAgICAgICBpZiBpZGVudGlmaWVyID4gYmFzZV9jb3Vu
dDoKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignSWRlbnRpZmllciB7fSBj
YW5ub3QgYmUgZm91bmQgb24gdGhlIHNwZWNpZmllZCBicmFuY2ggaW4gdGhlIGN1cnJlbnQgY2hl
Y2tvdXQnLmZvcm1hdChpZGVudGlmaWVyKSkKKyAgICAgICAgICAgIGxvZyA9IHJ1bigKKyAgICAg
ICAgICAgICAgICBbc2VsZi5leGVjdXRhYmxlLCAnbG9nJywgJ3t9fnt9Jy5mb3JtYXQoYnJhbmNo
IG9yICdIRUFEJywgYmFzZV9jb3VudCAtIGlkZW50aWZpZXIpLCAnLTEnXSwKKyAgICAgICAgICAg
ICAgICBjd2Q9c2VsZi5yb290X3BhdGgsCisgICAgICAgICAgICAgICAgY2FwdHVyZV9vdXRwdXQ9
VHJ1ZSwKKyAgICAgICAgICAgICAgICBlbmNvZGluZz0ndXRmLTgnLAorICAgICAgICAgICAgKQor
ICAgICAgICAgICAgaWYgbG9nLnJldHVybmNvZGU6CisgICAgICAgICAgICAgICAgcmFpc2Ugc2Vs
Zi5FeGNlcHRpb24oIkZhaWxlZCB0byByZXRyaWV2ZSBjb21taXQgaW5mb3JtYXRpb24gZm9yICdp
e31Ae30nIi5mb3JtYXQoaWRlbnRpZmllciwgYnJhbmNoIG9yICdIRUFEJykpCisKKyAgICAgICAg
ICAgICMgTmVnYXRpdmUgaWRlbnRpZmllcnMgYXJlIGFjdHVhbGx5IGNvbW1pdHMgb24gdGhlIGRl
ZmF1bHQgYnJhbmNoLCB3ZSB3aWxsIG5lZWQgdG8gcmUtY29tcHV0ZSB0aGUgaWRlbnRpZmllcgor
ICAgICAgICAgICAgaWYgaWRlbnRpZmllciA8IDAgYW5kIGlzX2RlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oJ0lsbGVnYWwgbmVnYXRpdmUgaWRlbnRpZmllciBv
biB0aGUgZGVmYXVsdCBicmFuY2gnKQorICAgICAgICAgICAgaWYgaWRlbnRpZmllciA8IDA6Cisg
ICAgICAgICAgICAgICAgaWRlbnRpZmllciA9IE5vbmUKKworICAgICAgICBlbGlmIGJyYW5jaDoK
KyAgICAgICAgICAgIGlmIGhhc2g6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcign
Q2Fubm90IGRlZmluZSBib3RoIGJyYW5jaCBhbmQgaGFzaCcpCisgICAgICAgICAgICBsb2cgPSBy
dW4oW3NlbGYuZXhlY3V0YWJsZSwgJ2xvZycsIGJyYW5jaCwgJy0xJ10sIGN3ZD1zZWxmLnJvb3Rf
cGF0aCwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgZW5jb2Rpbmc9J3V0Zi04JykKKyAgICAgICAgICAg
IGlmIGxvZy5yZXR1cm5jb2RlOgorICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0aW9u
KCJGYWlsZWQgdG8gcmV0cmlldmUgY29tbWl0IGluZm9ybWF0aW9uIGZvciAne30nIi5mb3JtYXQo
YnJhbmNoKSkKKworICAgICAgICBlbHNlOgorICAgICAgICAgICAgaGFzaCA9IENvbW1pdC5fcGFy
c2VfaGFzaChoYXNoLCBkb19hc3NlcnQ9VHJ1ZSkKKyAgICAgICAgICAgIGxvZyA9IHJ1bihbc2Vs
Zi5leGVjdXRhYmxlLCAnbG9nJywgaGFzaCBvciAnSEVBRCcsICctMSddLCBjd2Q9c2VsZi5yb290
X3BhdGgsIGNhcHR1cmVfb3V0cHV0PVRydWUsIGVuY29kaW5nPSd1dGYtOCcpCisgICAgICAgICAg
ICBpZiBsb2cucmV0dXJuY29kZToKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlv
bigiRmFpbGVkIHRvIHJldHJpZXZlIGNvbW1pdCBpbmZvcm1hdGlvbiBmb3IgJ3t9JyIuZm9ybWF0
KGhhc2ggb3IgJ0hFQUQnKSkKKworICAgICAgICBtYXRjaCA9IHNlbGYuR0lUX0NPTU1JVC5tYXRj
aChsb2cuc3Rkb3V0LnNwbGl0bGluZXMoKVswXSkKKyAgICAgICAgaWYgbm90IG1hdGNoOgorICAg
ICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oJ0ludmFsaWQgY29tbWl0IGhhc2ggaW4gZ2l0
IGxvZycpCisgICAgICAgIGhhc2ggPSBtYXRjaC5ncm91cCgnaGFzaCcpCisKKyAgICAgICAgYnJh
bmNoID0gc2VsZi5wcmlvcml0aXplX2JyYW5jaGVzKHNlbGYuX2JyYW5jaGVzX2ZvcihoYXNoKSkK
KworICAgICAgICBpZiBub3QgaWRlbnRpZmllcjoKKyAgICAgICAgICAgIGlkZW50aWZpZXIgPSBz
ZWxmLl9jb21taXRfY291bnQoaGFzaCBpZiBicmFuY2ggPT0gZGVmYXVsdF9icmFuY2ggZWxzZSAn
e30uLnt9Jy5mb3JtYXQoZGVmYXVsdF9icmFuY2gsIGhhc2gpKQorICAgICAgICBicmFuY2hfcG9p
bnQgPSBOb25lIGlmIGJyYW5jaCA9PSBkZWZhdWx0X2JyYW5jaCBlbHNlIHNlbGYuX2NvbW1pdF9j
b3VudChoYXNoKQorICAgICAgICBpZiBicmFuY2hfcG9pbnQgYW5kIHBhcnNlZF9icmFuY2hfcG9p
bnQgYW5kIGJyYW5jaF9wb2ludCAhPSBwYXJzZWRfYnJhbmNoX3BvaW50OgorICAgICAgICAgICAg
cmFpc2UgVmFsdWVFcnJvcigiUHJvdmlkZWQgJ2JyYW5jaF9wb2ludCcgZG9lcyBub3QgbWF0Y2gg
YnJhbmNoIHBvaW50IG9mIHNwZWNpZmllZCBicmFuY2giKQorCisgICAgICAgIGlmIHNlbGYuaXNf
c3ZuOgorICAgICAgICAgICAgbWF0Y2ggPSBzZWxmLkdJVF9TVk5fUkVWSVNJT04ubWF0Y2gobG9n
LnN0ZG91dC5zcGxpdGxpbmVzKClbLTFdLmxzdHJpcCgpKQorICAgICAgICAgICAgcmV2aXNpb24g
PSBpbnQobWF0Y2guZ3JvdXAoJ3JldmlzaW9uJykpIGlmIG1hdGNoIGVsc2UgTm9uZQorCisgICAg
ICAgIGNvbW1pdF90aW1lID0gcnVuKAorICAgICAgICAgICAgW3NlbGYuZXhlY3V0YWJsZSwgJ3No
b3cnLCAnLXMnLCAnLS1mb3JtYXQ9JWN0JywgaGFzaF0sCisgICAgICAgICAgICBjd2Q9c2VsZi5y
b290X3BhdGgsIGNhcHR1cmVfb3V0cHV0PVRydWUsIGVuY29kaW5nPSd1dGYtOCcsCisgICAgICAg
ICkKKyAgICAgICAgaWYgY29tbWl0X3RpbWUucmV0dXJuY29kZToKKyAgICAgICAgICAgIHJhaXNl
IHNlbGYuRXhjZXB0aW9uKCdGYWlsZWQgdG8gcmV0cmlldmUgY29tbWl0IHRpbWUgZm9yIHt9Jy5m
b3JtYXQoaGFzaCkpCisKKyAgICAgICAgcmV0dXJuIENvbW1pdCgKKyAgICAgICAgICAgIGhhc2g9
aGFzaCwKKyAgICAgICAgICAgIHJldmlzaW9uPXJldmlzaW9uLAorICAgICAgICAgICAgaWRlbnRp
Zmllcj1pZGVudGlmaWVyLAorICAgICAgICAgICAgYnJhbmNoX3BvaW50PWJyYW5jaF9wb2ludCwK
KyAgICAgICAgICAgIGJyYW5jaD1icmFuY2gsCisgICAgICAgICAgICB0aW1lc3RhbXA9aW50KGNv
bW1pdF90aW1lLnN0ZG91dC5sc3RyaXAoKSksCisgICAgICAgICAgICBhdXRob3I9Q29udHJpYnV0
b3IuZnJvbV9zY21fbG9nKGxvZy5zdGRvdXQuc3BsaXRsaW5lcygpWzFdKSwKKyAgICAgICAgICAg
IG1lc3NhZ2U9J1xuJy5qb2luKGxpbmVbNDpdIGZvciBsaW5lIGluIGxvZy5zdGRvdXQuc3BsaXRs
aW5lcygpWzQ6XSksCisgICAgICAgICkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL3NjbS5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9zY20ucHkJKHJl
dmlzaW9uIDI2ODAxNCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dl
YmtpdHNjbXB5L2xvY2FsL3NjbS5weQkod29ya2luZyBjb3B5KQpAQCAtMjEsMTAgKzIxLDIzIEBA
CiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAKIAoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCByZQoraW1wb3J0IHN5
cworCitmcm9tIGxvZ2dpbmcgaW1wb3J0IE51bGxIYW5kbGVyCitmcm9tIHdlYmtpdHNjbXB5IGlt
cG9ydCBsb2cKKworCiBjbGFzcyBTY20ob2JqZWN0KToKICAgICBjbGFzcyBFeGNlcHRpb24oUnVu
dGltZUVycm9yKToKICAgICAgICAgcGFzcwogCisgICAgIyBQcm9qZWN0cyBjYW4gZGVmaW5lIGZv
ciB0aGVtc2VsdmVzIHdoYXQgY29uc3RpdHV0ZXMgYSBkZXZlbG9wbWVudCB2cyBhIHByb2R1Y3Rp
b24gYnJhbmNoLAorICAgICMgdGhlIGZvbGxvd2luZyBpZGlvbXMgc2VlbSBjb21tb24gZW5vdWdo
IHRvIGJlIHNoYXJlZC4KKyAgICBERVZfQlJBTkNIRVMgPSByZS5jb21waWxlKHInLipbKGVuZyko
ZGV2KShidWcpXS8uKycpCisgICAgUFJPRF9CUkFOQ0hFUyA9IHJlLmNvbXBpbGUocidcUystW1xk
K1wuXSstYnJhbmNoJykKKwogICAgIGV4ZWN1dGFibGUgPSBOb25lCiAKICAgICBAY2xhc3NtZXRo
b2QKQEAgLTM3LDExICs1MCwxNCBAQCBjbGFzcyBTY20ob2JqZWN0KToKICAgICAgICAgICAgIHJl
dHVybiBsb2NhbC5Tdm4ocGF0aCkKICAgICAgICAgcmFpc2UgT1NFcnJvcigne30gaXMgbm90IGEg
a25vd24gU0NNIHR5cGUnKQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgorICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBwYXRoLCBkZXZfYnJhbmNoZXM9Tm9uZSwgcHJvZF9icmFuY2hlcz1O
b25lKToKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocGF0aCwgc3RyKToKICAgICAgICAgICAg
IHJhaXNlIFZhbHVlRXJyb3IoJycpCiAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKIAorICAgICAg
ICBzZWxmLmRldl9icmFuY2hlcyA9IGRldl9icmFuY2hlcyBvciBzZWxmLkRFVl9CUkFOQ0hFUwor
ICAgICAgICBzZWxmLnByb2RfYnJhbmNoZXMgPSBwcm9kX2JyYW5jaGVzIG9yIHNlbGYuUFJPRF9C
UkFOQ0hFUworCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGlzX3N2bihzZWxmKToKICAgICAgICAg
cmV0dXJuIEZhbHNlCkBAIC03MiwzICs4OCwzMiBAQCBjbGFzcyBTY20ob2JqZWN0KToKIAogICAg
IGRlZiByZW1vdGUoc2VsZiwgbmFtZT1Ob25lKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50
ZWRFcnJvcigpCisKKyAgICBkZWYgY29tbWl0KHNlbGYsIGhhc2g9Tm9uZSwgcmV2aXNpb249Tm9u
ZSwgaWRlbnRpZmllcj1Ob25lLCBicmFuY2g9Tm9uZSk6CisgICAgICAgIHJhaXNlIE5vdEltcGxl
bWVudGVkRXJyb3IoKQorCisgICAgZGVmIHByaW9yaXRpemVfYnJhbmNoZXMoc2VsZiwgYnJhbmNo
ZXMpOgorICAgICAgICBpZiBsZW4oYnJhbmNoZXMpID09IDE6CisgICAgICAgICAgICByZXR1cm4g
YnJhbmNoZXNbMF0KKworICAgICAgICBkZWZhdWx0X2JyYW5jaCA9IHNlbGYuZGVmYXVsdF9icmFu
Y2gKKyAgICAgICAgaWYgZGVmYXVsdF9icmFuY2ggaW4gYnJhbmNoZXM6CisgICAgICAgICAgICBy
ZXR1cm4gZGVmYXVsdF9icmFuY2gKKworICAgICAgICAjIFdlIGRvbid0IGhhdmUgZW5vdWdoIGlu
Zm9ybWF0aW9uIHRvIGRldGVybWluZSBhIGJyYW5jaC4gV2Ugd2lsbCBhdHRlbXB0IHRvIGZpcnN0
IHVzZSB0aGUgYnJhbmNoIHNwZWNpZmllZAorICAgICAgICAjIGJ5IHRoZSBjYWxsZXIsIHRoZW4g
dGhlIG9uZSB0aGVuIGNoZWNrb3V0IGlzIGN1cnJlbnRseSBvbi4gSWYgYm90aCB0aG9zZSBmYWls
LCB3ZSB3aWxsIHBpY2sgb25lIG9mIHRoZQorICAgICAgICAjIG90aGVyIGJyYW5jaGVzLiBXZSBw
cmVmZXIgcHJvZHVjdGlvbiBicmFuY2hlcyBmaXJzdCwgdGhlbiBhbnkgYnJhbmNoIHdoaWNoIGlz
bid0IGV4cGxpY2l0bHkgbGFiZWxlZCBhCisgICAgICAgICMgZGV2IGJyYW5jaC4gV2UgdGhlbiBz
b3J0IHRoZSBsaXN0IG9mIGNhbmRpZGF0ZSBicmFuY2hlcyBhbmQgcGljayB0aGUgc21hbGxlc3QK
KyAgICAgICAgZmlsdGVyZWRfY2FuZGlkYXRlcyA9IFtjYW5kaWRhdGUgZm9yIGNhbmRpZGF0ZSBp
biBicmFuY2hlcyBpZiBzZWxmLnByb2RfYnJhbmNoZXMubWF0Y2goY2FuZGlkYXRlKV0KKyAgICAg
ICAgaWYgbm90IGZpbHRlcmVkX2NhbmRpZGF0ZXM6CisgICAgICAgICAgICBmaWx0ZXJlZF9jYW5k
aWRhdGVzID0gW2NhbmRpZGF0ZSBmb3IgY2FuZGlkYXRlIGluIGJyYW5jaGVzIGlmIG5vdCBzZWxm
LmRldl9icmFuY2hlcy5tYXRjaChjYW5kaWRhdGUpXQorICAgICAgICBpZiBub3QgZmlsdGVyZWRf
Y2FuZGlkYXRlczoKKyAgICAgICAgICAgIGZpbHRlcmVkX2NhbmRpZGF0ZXMgPSBicmFuY2hlcwor
ICAgICAgICByZXR1cm4gc29ydGVkKGZpbHRlcmVkX2NhbmRpZGF0ZXMpWzBdCisKKyAgICBAY2xh
c3NtZXRob2QKKyAgICBkZWYgbG9nKGNscywgbWVzc2FnZSwgbGV2ZWw9bG9nZ2luZy5XQVJOSU5H
KToKKyAgICAgICAgaWYgbm90IGxvZy5oYW5kbGVycyBvciBhbGwoW2lzaW5zdGFuY2UoaGFuZGxl
LCBOdWxsSGFuZGxlcikgZm9yIGhhbmRsZSBpbiBsb2cuaGFuZGxlcnNdKToKKyAgICAgICAgICAg
IHN5cy5zdGRlcnIud3JpdGUobWVzc2FnZSArICdcbicpCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBsb2cubG9nKGxldmVsLCBtZXNzYWdlKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvc3ZuLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL3N2bi5w
eQkocmV2aXNpb24gMjY4MDE0KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2Nt
cHkvd2Via2l0c2NtcHkvbG9jYWwvc3ZuLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMCwyNiArMjAs
NTMgQEAKICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAoraW1wb3J0IGJp
c2VjdAoraW1wb3J0IGNhbGVuZGFyCitpbXBvcnQganNvbgoraW1wb3J0IG9zCitpbXBvcnQgcmUK
K2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCisKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRh
dGV0aW1lLCB0aW1lZGVsdGEKK2Zyb20gZGF0ZXV0aWwgaW1wb3J0IHR6CiAKIGZyb20gd2Via2l0
Y29yZXB5IGltcG9ydCBydW4sIGRlY29yYXRvcnMKIGZyb20gd2Via2l0c2NtcHkubG9jYWwuc2Nt
IGltcG9ydCBTY20KK2Zyb20gd2Via2l0c2NtcHkgaW1wb3J0IENvbW1pdCwgQ29udHJpYnV0b3Is
IFZlcnNpb24KIAogCiBjbGFzcyBTdm4oU2NtKToKICAgICBleGVjdXRhYmxlID0gJy91c3IvbG9j
YWwvYmluL3N2bicKKyAgICBMT0dfUkUgPSByZS5jb21waWxlKHIncig/UDxyZXZpc2lvbj5cZCsp
IFx8ICg/UDxlbWFpbD4uKikgXHwgKD9QPGRhdGU+LiopJykKKyAgICBDQUNIRV9WRVJTSU9OID0g
VmVyc2lvbigxKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGlzX2NoZWNrb3V0KGNscywg
cGF0aCk6CiAgICAgICAgIHJldHVybiBydW4oW2Nscy5leGVjdXRhYmxlLCAnaW5mbyddLCBjd2Q9
cGF0aCwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSkucmV0dXJuY29kZSA9PSAwCiAKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgcGF0aCk6Ci0gICAgICAgIHN1cGVyKFN2biwgc2VsZikuX19pbml0X18ocGF0
aCkKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgZGV2X2JyYW5jaGVzPU5vbmUsIHByb2Rf
YnJhbmNoZXM9Tm9uZSk6CisgICAgICAgIHN1cGVyKFN2biwgc2VsZikuX19pbml0X18ocGF0aCwg
ZGV2X2JyYW5jaGVzPWRldl9icmFuY2hlcywgcHJvZF9icmFuY2hlcz1wcm9kX2JyYW5jaGVzKQog
ICAgICAgICBpZiBub3Qgc2VsZi5yb290X3BhdGg6CiAgICAgICAgICAgICByYWlzZSBPU0Vycm9y
KCdQcm92aWRlZCBwYXRoIHt9IGlzIG5vdCBhIHN2biByZXBvc2l0b3J5Jy5mb3JtYXQocGF0aCkp
CiAKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc2VsZi5fY2FjaGVfcGF0aCk6CisgICAgICAg
ICAgICB0cnk6CisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHNlbGYuX2NhY2hlX3BhdGgpIGFz
IGZpbGU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX21ldGFkYXRhX2NhY2hlID0ganNvbi5s
b2FkKGZpbGUpCisgICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbjoKKyAgICAgICAgICAg
ICAgICBzZWxmLl9tZXRhZGF0YV9jYWNoZSA9IGRpY3QodmVyc2lvbj1zdHIoc2VsZi5DQUNIRV9W
RVJTSU9OKSkKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgc2VsZi5fbWV0YWRhdGFfY2FjaGUgPSBkaWN0KHZlcnNpb249c3RyKHNlbGYuQ0FDSEVfVkVS
U0lPTikpCisKICAgICBAZGVjb3JhdG9ycy5NZW1vaXplKGNhY2hlZD1GYWxzZSkKLSAgICBkZWYg
aW5mbyhzZWxmKToKLSAgICAgICAgaW5mb19yZXN1bHQgPSBydW4oW3NlbGYuZXhlY3V0YWJsZSwg
J2luZm8nXSwgY3dkPXNlbGYucGF0aCwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgZW5jb2Rpbmc9J3V0
Zi04JykKKyAgICBkZWYgaW5mbyhzZWxmLCBicmFuY2g9Tm9uZSwgcmV2aXNpb249Tm9uZSk6Cisg
ICAgICAgIHJldmlzaW9uID0gQ29tbWl0Ll9wYXJzZV9yZXZpc2lvbihyZXZpc2lvbikKKyAgICAg
ICAgYWRkaXRpb25hbF9hcmdzID0gWydeL2JyYW5jaGVzL3t9Jy5mb3JtYXQoYnJhbmNoKV0gaWYg
YnJhbmNoIGFuZCBicmFuY2ggIT0gc2VsZi5kZWZhdWx0X2JyYW5jaCBlbHNlIFtdCisgICAgICAg
IGFkZGl0aW9uYWxfYXJncyArPSBbJy1yJywgc3RyKHJldmlzaW9uKV0gaWYgcmV2aXNpb24gZWxz
ZSBbXQorCisgICAgICAgIGluZm9fcmVzdWx0ID0gcnVuKFtzZWxmLmV4ZWN1dGFibGUsICdpbmZv
J10gKyBhZGRpdGlvbmFsX2FyZ3MsIGN3ZD1zZWxmLnBhdGgsIGNhcHR1cmVfb3V0cHV0PVRydWUs
IGVuY29kaW5nPSd1dGYtOCcpCiAgICAgICAgIGlmIGluZm9fcmVzdWx0LnJldHVybmNvZGU6CiAg
ICAgICAgICAgICByZXR1cm4ge30KIApAQCAtODIsNSArMTA5LDI0NiBAQCBjbGFzcyBTdm4oU2Nt
KToKICAgICBkZWYgdGFncyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYubGlzdCgndGFncycp
CiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgX2NhY2hlX3BhdGgoc2VsZik6CisgICAgICAgIHJl
dHVybiBvcy5wYXRoLmpvaW4oc2VsZi5yb290X3BhdGgsICcuc3ZuJywgJ3dlYmtpdHNjbXB5LWNh
Y2hlLmpzb24nKQorCisgICAgZGVmIF9jYWNoZV9yZXZpc2lvbnMoc2VsZiwgYnJhbmNoPU5vbmUp
OgorICAgICAgICBicmFuY2ggPSBicmFuY2ggb3Igc2VsZi5kZWZhdWx0X2JyYW5jaAorICAgICAg
ICBpc19kZWZhdWx0X2JyYW5jaCA9IGJyYW5jaCA9PSBzZWxmLmRlZmF1bHRfYnJhbmNoCisgICAg
ICAgIGlmIGJyYW5jaCBub3QgaW4gc2VsZi5fbWV0YWRhdGFfY2FjaGU6CisgICAgICAgICAgICBz
ZWxmLl9tZXRhZGF0YV9jYWNoZVticmFuY2hdID0gWzBdIGlmIGlzX2RlZmF1bHRfYnJhbmNoIGVs
c2UgW10KKyAgICAgICAgcG9zID0gbGVuKHNlbGYuX21ldGFkYXRhX2NhY2hlW2JyYW5jaF0pCisK
KyAgICAgICAgIyBJZiB3ZSBhcmVuJ3Qgb24gdGhlIGRlZmF1bHQgYnJhbmNoLCB3ZSB3aWxsIG5l
ZWQgdGhlIGRlZmF1bHQgYnJhbmNoIHRvIGRldGVybWluZSB3aGVuCisgICAgICAgICMgb3VyICBi
cmFuY2ggIGludGVyc2VjdHMgd2l0aCB0aGUgZGVmYXVsdCBicmFuY2guCisgICAgICAgIGlmIG5v
dCBpc19kZWZhdWx0X2JyYW5jaDoKKyAgICAgICAgICAgIHNlbGYuX2NhY2hlX3JldmlzaW9ucyhi
cmFuY2g9c2VsZi5kZWZhdWx0X2JyYW5jaCkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBk
aWRfd2FybiA9IEZhbHNlCisgICAgICAgICAgICBjb3VudCA9IDAKKyAgICAgICAgICAgIGxvZyA9
IE5vbmUKKyAgICAgICAgICAgIGNhbmRpZGF0ZV9pbmRleCA9IC0xIGlmIGlzX2RlZmF1bHRfYnJh
bmNoIGVsc2UgbGVuKHNlbGYuX21ldGFkYXRhX2NhY2hlW3NlbGYuZGVmYXVsdF9icmFuY2hdKQor
CisgICAgICAgICAgICBicmFuY2hfYXJnID0gJ14ve317fScuZm9ybWF0KCcnIGlmIGlzX2RlZmF1
bHRfYnJhbmNoIGVsc2UgJ2JyYW5jaGVzLycsIGJyYW5jaCkKKyAgICAgICAgICAgIGt3YXJncyA9
IGRpY3QoKQorICAgICAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywgMCk6CisgICAg
ICAgICAgICAgICAga3dhcmdzID0gZGljdChlbmNvZGluZz0ndXRmLTgnKQorCisgICAgICAgICAg
ICBsb2cgPSBzdWJwcm9jZXNzLlBvcGVuKAorICAgICAgICAgICAgICAgIFtzZWxmLmV4ZWN1dGFi
bGUsICdsb2cnLCAnLXEnLCBicmFuY2hfYXJnXSwKKyAgICAgICAgICAgICAgICBjd2Q9c2VsZi5w
YXRoLAorICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAg
ICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAqKmt3YXJncwor
ICAgICAgICAgICAgKQorICAgICAgICAgICAgaWYgbG9nLnBvbGwoKToKKyAgICAgICAgICAgICAg
ICByYWlzZSBzZWxmLkV4Y2VwdGlvbigiRmFpbGVkIHRvIGNvbnN0cnVjdCBicmFuY2ggaGlzdG9y
eSBmb3IgJ3t9JyIuZm9ybWF0KGJyYW5jaCkpCisKKyAgICAgICAgICAgIGxpbmUgPSBsb2cuc3Rk
b3V0LnJlYWRsaW5lKCkKKyAgICAgICAgICAgIHdoaWxlIGxpbmU6CisgICAgICAgICAgICAgICAg
bWF0Y2ggPSBzZWxmLkxPR19SRS5tYXRjaChsaW5lKQorICAgICAgICAgICAgICAgIGlmIG1hdGNo
OgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgZGlkX3dhcm46CisgICAgICAgICAgICAgICAg
ICAgICAgICBjb3VudCArPSAxCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBjb3VudCA+IDEw
MDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2coJ0NhY2hpbmcgY29tbWl0
IGRhdGEgZm9yIHt9LCB0aGlzIHdpbGwgdGFrZSBhIGZldyBtaW51dGVzLi4uJy5mb3JtYXQoYnJh
bmNoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRfd2FybiA9IFRydWUKKworICAg
ICAgICAgICAgICAgICAgICByZXZpc2lvbiA9IGludChtYXRjaC5ncm91cCgncmV2aXNpb24nKSkK
KyAgICAgICAgICAgICAgICAgICAgaWYgcG9zID4gMCBhbmQgc2VsZi5fbWV0YWRhdGFfY2FjaGVb
YnJhbmNoXVtwb3MgLSAxXSA9PSByZXZpc2lvbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc19kZWZhdWx0X2JyYW5jaDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIHJldmlzaW9uIGluIHNlbGYuX21ldGFkYXRhX2NhY2hlW3Nl
bGYuZGVmYXVsdF9icmFuY2hdOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21l
dGFkYXRhX2NhY2hlW2JyYW5jaF0uaW5zZXJ0KHBvcywgcmV2aXNpb24pCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWV0YWRhdGFf
Y2FjaGVbYnJhbmNoXS5pbnNlcnQocG9zLCByZXZpc2lvbikKKyAgICAgICAgICAgICAgICBsaW5l
ID0gbG9nLnN0ZG91dC5yZWFkbGluZSgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBp
ZiBsb2c6CisgICAgICAgICAgICAgICAgbG9nLmtpbGwoKQorCisgICAgICAgIGlmIHNlbGYuX21l
dGFkYXRhX2NhY2hlW3NlbGYuZGVmYXVsdF9icmFuY2hdWzBdID09IFswXToKKyAgICAgICAgICAg
IHNlbGYuX21ldGFkYXRhX2NhY2hlWydpZGVudGlmaWVyJ10gPSBsZW4oc2VsZi5fbWV0YWRhdGFf
Y2FjaGVbYnJhbmNoXSkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIG9wZW4oc2Vs
Zi5fY2FjaGVfcGF0aCwgJ3cnKSBhcyBmaWxlOgorICAgICAgICAgICAgICAgIGpzb24uZHVtcChz
ZWxmLl9tZXRhZGF0YV9jYWNoZSwgZmlsZSwgaW5kZW50PTQpCisgICAgICAgIGV4Y2VwdCAoSU9F
cnJvciwgT1NFcnJvcik6CisgICAgICAgICAgICBzZWxmLmxvZygiRmFpbGVkIHRvIHdyaXRlIFNW
TiBjYWNoZSB0byAne30nIi5mb3JtYXQoc2VsZi5fY2FjaGVfcGF0aCkpCisKKyAgICAgICAgcmV0
dXJuIHNlbGYuX21ldGFkYXRhX2NhY2hlW2JyYW5jaF0KKworICAgIGRlZiBfY29tbWl0X2NvdW50
KHNlbGYsIHJldmlzaW9uPU5vbmUsIGJyYW5jaD1Ob25lKToKKyAgICAgICAgYnJhbmNoID0gYnJh
bmNoIG9yIHNlbGYuZGVmYXVsdF9icmFuY2gKKworICAgICAgICBpZiByZXZpc2lvbjoKKyAgICAg
ICAgICAgIGlmIHJldmlzaW9uIG5vdCBpbiBzZWxmLl9tZXRhZGF0YV9jYWNoZVticmFuY2hdOgor
ICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0aW9uKCJGYWlsZWQgdG8gZmluZCAne30n
IG9uICd7fSciLmZvcm1hdChyZXZpc2lvbiwgYnJhbmNoKSkKKyAgICAgICAgICAgIHJldHVybiBi
aXNlY3QuYmlzZWN0X2xlZnQoc2VsZi5fbWV0YWRhdGFfY2FjaGVbYnJhbmNoXSwgaW50KHJldmlz
aW9uKSkKKyAgICAgICAgaWYgYnJhbmNoID09IHNlbGYuZGVmYXVsdF9icmFuY2g6CisgICAgICAg
ICAgICByZXR1cm4gbGVuKHNlbGYuX21ldGFkYXRhX2NhY2hlW2JyYW5jaF0pCisgICAgICAgIHJl
dHVybiBzZWxmLl9jb21taXRfY291bnQocmV2aXNpb249c2VsZi5fbWV0YWRhdGFfY2FjaGVbYnJh
bmNoXVswXSwgYnJhbmNoPXNlbGYuZGVmYXVsdF9icmFuY2gpCisKICAgICBkZWYgcmVtb3RlKHNl
bGYsIG5hbWU9Tm9uZSk6CiAgICAgICAgIHJldHVybiBzZWxmLmluZm8oKVsnUmVwb3NpdG9yeSBS
b290J10KKworICAgIGRlZiBfYnJhbmNoX2ZvcihzZWxmLCByZXZpc2lvbik6CisgICAgICAgIGNh
bmRpZGF0ZXMgPSBbYnJhbmNoIGZvciBicmFuY2gsIHJldmlzaW9ucyBpbiBzZWxmLl9tZXRhZGF0
YV9jYWNoZS5pdGVtcygpIGlmIGJyYW5jaCAhPSAndmVyc2lvbicgYW5kIHJldmlzaW9uIGluIHJl
dmlzaW9uc10KKyAgICAgICAgY2FuZGlkYXRlID0gc2VsZi5wcmlvcml0aXplX2JyYW5jaGVzKGNh
bmRpZGF0ZXMpIGlmIGNhbmRpZGF0ZXMgZWxzZSBOb25lCisKKyAgICAgICAgIyBJbiB0aGUgZGVm
YXVsdCBicmFuY2ggY2FzZSwgd2UgZG9uJ3QgZXZlbiBuZWVkIHRvIGFzayB0aGUgcmVtb3RlCisg
ICAgICAgIGlmIGNhbmRpZGF0ZSA9PSBzZWxmLmRlZmF1bHRfYnJhbmNoOgorICAgICAgICAgICAg
cmV0dXJuIGNhbmRpZGF0ZQorCisgICAgICAgIHByb2Nlc3MgPSBydW4oCisgICAgICAgICAgICBb
c2VsZi5leGVjdXRhYmxlLCAnbG9nJywgJy12JywgJy1xJywgc2VsZi5yZW1vdGUoKSwgJy1yJywg
c3RyKHJldmlzaW9uKSwgJy1sJywgJzEnXSwKKyAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsIGNh
cHR1cmVfb3V0cHV0PVRydWUsIGVuY29kaW5nPSd1dGYtOCcsCisgICAgICAgICkKKworICAgICAg
ICAjIElmIHdlIGRpZG4ndCBnZXQgYSB2YWxpZCBhbnN3ZXIgZnJvbSB0aGUgcmVtb3RlLCBidXQg
d2UgZm91bmQgYSBtYXRjaGluZyBjYW5kaWRhdGUsIHdlIHJldHVybiB0aGF0LgorICAgICAgICAj
IFRoaXMgaXMgYSBiaXQgcmlza3kgYmVjYXVzZSB0aGVyZSBpcyBhIGNoYW5jZSB0aGUgYnJhbmNo
IHdlIGhhdmUgY2FjaGVkIGlzIG5vdCB0aGUgY2Fub25pY2FsIGJyYW5jaAorICAgICAgICAjIGZv
ciBhIHJldmlzaW9uLCBidXQgdGhpcyBpcyBwcmV0dHkgdW5saWtlbHkgYmVjYXVzZSBpdCB3b3Vs
ZCByZXF1aXJlIHRoZSBuICsgMSBsZXZlbCBicmFuY2ggdG8gYmUgY2FjaGVkCisgICAgICAgICMg
YnV0IG5vdCB0aGUgbiBsZXZlbCBicmFuY2guCisgICAgICAgIGlmIHByb2Nlc3MucmV0dXJuY29k
ZSBvciBub3QgcHJvY2Vzcy5zdGRvdXQ6CisgICAgICAgICAgICBpZiBjYW5kaWRhdGU6CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZQorICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNl
cHRpb24oIkZhaWxlZCB0byByZXRyaWV2ZSBicmFuY2ggZm9yICd7fSciLmZvcm1hdChyZXZpc2lv
bikpCisKKyAgICAgICAgcGFydGlhbCA9IE5vbmUKKyAgICAgICAgZm9yIGxpbmUgaW4gcHJvY2Vz
cy5zdGRvdXQuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgaWYgcGFydGlhbCBpcyBOb25lIGFu
ZCBsaW5lID09ICdDaGFuZ2VkIHBhdGhzOic6CisgICAgICAgICAgICAgICAgcGFydGlhbCA9ICcn
CisgICAgICAgICAgICBlbGlmIHBhcnRpYWwgPT0gJyc6CisgICAgICAgICAgICAgICAgcGFydGlh
bCA9IGxpbmUubHN0cmlwKCkKKyAgICAgICAgICAgIGVsaWYgcGFydGlhbDoKKyAgICAgICAgICAg
ICAgICBsaW5lID0gbGluZS5sc3RyaXAoKQorICAgICAgICAgICAgICAgIHdoaWxlIGxpbmUuc3Rh
cnRzd2l0aCgnTSAnKSBhbmQgbm90IGxpbmUuc3RhcnRzd2l0aChwYXJ0aWFsKToKKyAgICAgICAg
ICAgICAgICAgICAgcGFydGlhbCA9IHBhcnRpYWxbOi0xXQorCisgICAgICAgIGlmIGxlbihwYXJ0
aWFsKSA8PSAzOgorICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oJ01hbGZvcm1lZCBz
ZXQgIG9mIGVkaXRlZCBmaWxlcycpCisgICAgICAgIHBhcnRpYWwgPSBwYXJ0aWFsWzI6XQorICAg
ICAgICByZXR1cm4gcGFydGlhbC5zcGxpdCgnLycpWzIgaWYgcGFydGlhbC5zdGFydHN3aXRoKCcv
YnJhbmNoZXMnKSBlbHNlIDFdCisKKyAgICBkZWYgY29tbWl0KHNlbGYsIGhhc2g9Tm9uZSwgcmV2
aXNpb249Tm9uZSwgaWRlbnRpZmllcj1Ob25lLCBicmFuY2g9Tm9uZSk6CisgICAgICAgIGlmIGhh
c2g6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdTVk4gZG9lcyBub3Qgc3VwcG9ydCBH
aXQgaGFzaGVzJykKKworICAgICAgICBwYXJzZWRfYnJhbmNoX3BvaW50ID0gTm9uZQorICAgICAg
ICBpZiBpZGVudGlmaWVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgcmV2aXNpb246Cisg
ICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ2Fubm90IGRlZmluZSBib3RoIHJldmlz
aW9uIGFuZCBpZGVudGlmaWVyJykKKworICAgICAgICAgICAgcGFyc2VkX2JyYW5jaF9wb2ludCwg
aWRlbnRpZmllciwgcGFyc2VkX2JyYW5jaCA9IENvbW1pdC5fcGFyc2VfaWRlbnRpZmllcihpZGVu
dGlmaWVyLCBkb19hc3NlcnQ9VHJ1ZSkKKyAgICAgICAgICAgIGlmIHBhcnNlZF9icmFuY2g6Cisg
ICAgICAgICAgICAgICAgaWYgYnJhbmNoIGFuZCBicmFuY2ggIT0gcGFyc2VkX2JyYW5jaDoKKyAg
ICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAg
ICAgICJDYWxsZXIgcGFzc2VkIGJvdGggJ2JyYW5jaCcgYW5kICdpZGVudGlmaWVyJywgYnV0IHNw
ZWNpZmllZCBkaWZmZXJlbnQgYnJhbmNoZXMgKHt9IGFuZCB7fSkiLmZvcm1hdCgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmFuY2gsIHBhcnNlZF9icmFuY2gsCisgICAgICAgICAgICAg
ICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgYnJh
bmNoID0gcGFyc2VkX2JyYW5jaAorICAgICAgICAgICAgYnJhbmNoID0gYnJhbmNoIG9yIHNlbGYu
YnJhbmNoCisKKyAgICAgICAgICAgIGlmIGJyYW5jaCA9PSBzZWxmLmRlZmF1bHRfYnJhbmNoIGFu
ZCBwYXJzZWRfYnJhbmNoX3BvaW50OgorICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0
aW9uKCdDYW5ub3QgcHJvdmlkZSBhIGJyYW5jaCBwb2ludCBmb3IgYSBjb21taXQgb24gdGhlIGRl
ZmF1bHQgYnJhbmNoJykKKworICAgICAgICAgICAgaWYgbm90IHNlbGYuX21ldGFkYXRhX2NhY2hl
LmdldChicmFuY2gsIFtdKSBvciBpZGVudGlmaWVyID49IGxlbihzZWxmLl9tZXRhZGF0YV9jYWNo
ZS5nZXQoYnJhbmNoLCBbXSkpOgorICAgICAgICAgICAgICAgIGlmIGJyYW5jaCAhPSBzZWxmLmRl
ZmF1bHRfYnJhbmNoOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jYWNoZV9yZXZpc2lvbnMo
YnJhbmNoPXNlbGYuZGVmYXVsdF9icmFuY2gpCisgICAgICAgICAgICAgICAgc2VsZi5fY2FjaGVf
cmV2aXNpb25zKGJyYW5jaD1icmFuY2gpCisgICAgICAgICAgICBpZiBpZGVudGlmaWVyID4gbGVu
KHNlbGYuX21ldGFkYXRhX2NhY2hlLmdldChicmFuY2gsIFtdKSk6CisgICAgICAgICAgICAgICAg
cmFpc2Ugc2VsZi5FeGNlcHRpb24oJ0lkZW50aWZpZXIge30gY2Fubm90IGJlIGZvdW5kIG9uIHRo
ZSBzcGVjaWZpZWQgYnJhbmNoIGluIHRoZSBjdXJyZW50IGNoZWNrb3V0Jy5mb3JtYXQoaWRlbnRp
ZmllcikpCisKKyAgICAgICAgICAgIGlmIGlkZW50aWZpZXIgPD0gMDoKKyAgICAgICAgICAgICAg
ICBpZiBicmFuY2ggPT0gc2VsZi5kZWZhdWx0X2JyYW5jaDoKKyAgICAgICAgICAgICAgICAgICAg
cmFpc2Ugc2VsZi5FeGNlcHRpb24oJ0lsbGVnYWwgbmVnYXRpdmUgaWRlbnRpZmllciBvbiB0aGUg
ZGVmYXVsdCBicmFuY2gnKQorICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgPSBzZWxmLl9jb21t
aXRfY291bnQoYnJhbmNoPWJyYW5jaCkgKyBpZGVudGlmaWVyCisgICAgICAgICAgICAgICAgaWYg
aWRlbnRpZmllciA8IDA6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0aW9u
KCdJZGVudGlmaWVyIGRvZXMgbm90IGV4aXN0IG9uIHRoZSBzcGVjaWZpZWQgYnJhbmNoJykKKwor
ICAgICAgICAgICAgICAgIGJyYW5jaCA9IHNlbGYuZGVmYXVsdF9icmFuY2gKKworICAgICAgICAg
ICAgcmV2aXNpb24gPSBzZWxmLl9tZXRhZGF0YV9jYWNoZVticmFuY2hdW2lkZW50aWZpZXJdCisg
ICAgICAgICAgICBpbmZvID0gc2VsZi5pbmZvKGJyYW5jaD1icmFuY2gsIHJldmlzaW9uPXJldmlz
aW9uKQorICAgICAgICAgICAgYnJhbmNoID0gc2VsZi5fYnJhbmNoX2ZvcihyZXZpc2lvbikKKwor
ICAgICAgICBlbGlmIHJldmlzaW9uOgorICAgICAgICAgICAgaWYgYnJhbmNoOgorICAgICAgICAg
ICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0Nhbm5vdCBkZWZpbmUgYm90aCBicmFuY2ggYW5kIHJl
dmlzaW9uJykKKyAgICAgICAgICAgIHJldmlzaW9uID0gQ29tbWl0Ll9wYXJzZV9yZXZpc2lvbihy
ZXZpc2lvbiwgZG9fYXNzZXJ0PVRydWUpCisgICAgICAgICAgICBicmFuY2ggPSBzZWxmLl9icmFu
Y2hfZm9yKHJldmlzaW9uKQorICAgICAgICAgICAgaW5mbyA9IHNlbGYuaW5mbyhicmFuY2g9YnJh
bmNoLCByZXZpc2lvbj1yZXZpc2lvbikKKworICAgICAgICBlbHNlOgorICAgICAgICAgICAgYnJh
bmNoID0gYnJhbmNoIG9yIHNlbGYuYnJhbmNoCisgICAgICAgICAgICBpbmZvID0gc2VsZi5pbmZv
KGJyYW5jaD1icmFuY2gpCisgICAgICAgICAgICBpZiBub3QgaW5mbzoKKyAgICAgICAgICAgICAg
ICByYWlzZSBzZWxmLkV4Y2VwdGlvbigiJ3t9JyBpcyBub3QgYSByZWNvZ25pemVkIGJyYW5jaCIu
Zm9ybWF0KGJyYW5jaCkpCisgICAgICAgICAgICByZXZpc2lvbiA9IGludChpbmZvWydMYXN0IENo
YW5nZWQgUmV2J10pCisgICAgICAgICAgICBpZiBicmFuY2ggIT0gc2VsZi5kZWZhdWx0X2JyYW5j
aDoKKyAgICAgICAgICAgICAgICBicmFuY2ggPSBzZWxmLl9icmFuY2hfZm9yKHJldmlzaW9uKQor
CisgICAgICAgIGRhdGUgPSBpbmZvWydMYXN0IENoYW5nZWQgRGF0ZSddLnNwbGl0KCcgKCcpWzBd
CisgICAgICAgIHR6X2RpZmYgPSBkYXRlLnNwbGl0KCcgJylbLTFdCisgICAgICAgIGRhdGUgPSBk
YXRldGltZS5zdHJwdGltZShkYXRlWzotbGVuKHR6X2RpZmYpXSwgJyVZLSVtLSVkICVIOiVNOiVT
ICcpCisgICAgICAgIGRlbHRhID0gdGltZWRlbHRhKAorICAgICAgICAgICAgaG91cnM9aW50KHR6
X2RpZmZbMTozXSksCisgICAgICAgICAgICBtaW51dGVzPWludCh0el9kaWZmWzM6NV0pLAorICAg
ICAgICApCisgICAgICAgIGRhdGUgPSBkYXRlLnJlcGxhY2UoCisgICAgICAgICAgICB0emluZm89
dHoudHpvZmZzZXQoCisgICAgICAgICAgICAgICAgbmFtZT0nVVRDe30nLmZvcm1hdCh0el9kaWZm
KSwKKyAgICAgICAgICAgICAgICBvZmZzZXQ9ZGVsdGEuc2Vjb25kcyAqICgtMSBpZiB0el9kaWZm
WzBdID09ICctJyBlbHNlIDEpCisgICAgICAgICAgICApLAorICAgICAgICApCisKKyAgICAgICAg
aWYgbm90IGlkZW50aWZpZXI6CisgICAgICAgICAgICBpZiBicmFuY2ggIT0gc2VsZi5kZWZhdWx0
X2JyYW5jaCBhbmQgcmV2aXNpb24gPiBzZWxmLl9tZXRhZGF0YV9jYWNoZS5nZXQoc2VsZi5kZWZh
dWx0X2JyYW5jaCwgWzBdKVstMV06CisgICAgICAgICAgICAgICAgc2VsZi5fY2FjaGVfcmV2aXNp
b25zKGJyYW5jaD1zZWxmLmRlZmF1bHRfYnJhbmNoKQorICAgICAgICAgICAgaWYgcmV2aXNpb24g
bm90IGluIHNlbGYuX21ldGFkYXRhX2NhY2hlLmdldChicmFuY2gsIFtdKToKKyAgICAgICAgICAg
ICAgICBzZWxmLl9jYWNoZV9yZXZpc2lvbnMoYnJhbmNoPWJyYW5jaCkKKyAgICAgICAgICAgIGlk
ZW50aWZpZXIgPSBzZWxmLl9jb21taXRfY291bnQocmV2aXNpb249cmV2aXNpb24sIGJyYW5jaD1i
cmFuY2gpCisKKyAgICAgICAgYnJhbmNoX3BvaW50ID0gTm9uZSBpZiBicmFuY2ggPT0gc2VsZi5k
ZWZhdWx0X2JyYW5jaCBlbHNlIHNlbGYuX2NvbW1pdF9jb3VudChicmFuY2g9YnJhbmNoKQorICAg
ICAgICBpZiBicmFuY2hfcG9pbnQgYW5kIHBhcnNlZF9icmFuY2hfcG9pbnQgYW5kIGJyYW5jaF9w
b2ludCAhPSBwYXJzZWRfYnJhbmNoX3BvaW50OgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJv
cigiUHJvdmlkZWQgJ2JyYW5jaF9wb2ludCcgZG9lcyBub3QgbWF0Y2ggYnJhbmNoIHBvaW50IG9m
IHNwZWNpZmllZCBicmFuY2giKQorCisgICAgICAgIGJyYW5jaF9hcmcgPSAnXi97fXt9Jy5mb3Jt
YXQoJycgaWYgYnJhbmNoID09IHNlbGYuZGVmYXVsdF9icmFuY2ggZWxzZSAnYnJhbmNoZXMvJywg
YnJhbmNoKQorICAgICAgICBsb2cgPSBydW4oCisgICAgICAgICAgICBbc2VsZi5leGVjdXRhYmxl
LCAnbG9nJywgJy1sJywgJzEnLCAnLXInLCBzdHIocmV2aXNpb24pLCBicmFuY2hfYXJnXSwgY3dk
PXNlbGYucGF0aCwKKyAgICAgICAgICAgIGNhcHR1cmVfb3V0cHV0PVRydWUsIGVuY29kaW5nPSd1
dGYtOCcsCisgICAgICAgICkKKyAgICAgICAgc3BsaXRfbG9nID0gbG9nLnN0ZG91dC5zcGxpdGxp
bmVzKCkKKyAgICAgICAgaWYgbm90IGxvZy5yZXR1cm5jb2RlIG9yIGxlbihzcGxpdF9sb2cpID49
IDM6CisgICAgICAgICAgICBhdXRob3JfbGluZSA9IHNwbGl0X2xvZ1sxXQorICAgICAgICAgICAg
Zm9yIGxpbmUgaW4gc3BsaXRfbG9nWzI6OF06CisgICAgICAgICAgICAgICAgaWYgQ29udHJpYnV0
b3IuU1ZOX1BBVENIX0ZST01fUkUubWF0Y2gobGluZSk6CisgICAgICAgICAgICAgICAgICAgIGF1
dGhvcl9saW5lID0gbGluZQorICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAg
ICBhdXRob3IgPSBDb250cmlidXRvci5mcm9tX3NjbV9sb2coYXV0aG9yX2xpbmUpCisgICAgICAg
ICAgICBtZXNzYWdlID0gJ1xuJy5qb2luKHNwbGl0X2xvZ1szOl0pCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBzZWxmLmxvZygnRmFpbGVkIHRvIGNvbm5lY3QgdG8gcmVtb3RlLCBjYW5ub3Qg
Y29tcHV0ZSBjb21taXQgbWVzc2FnZScpCisgICAgICAgICAgICBlbWFpbCA9IGluZm9bJ0xhc3Qg
Q2hhbmdlZCBBdXRob3InXQorICAgICAgICAgICAgYXV0aG9yID0gQ29udHJpYnV0b3IuYnlfZW1h
aWwuZ2V0KAorICAgICAgICAgICAgICAgIGVtYWlsLAorICAgICAgICAgICAgICAgIENvbnRyaWJ1
dG9yLmJ5X25hbWUuZ2V0KAorICAgICAgICAgICAgICAgICAgICBlbWFpbCwKKyAgICAgICAgICAg
ICAgICAgICAgQ29udHJpYnV0b3IobmFtZT1lbWFpbCwgZW1haWxzPVtlbWFpbF0pLAorICAgICAg
ICAgICAgICAgICksCisgICAgICAgICAgICApCisgICAgICAgICAgICBtZXNzYWdlID0gTm9uZQor
CisgICAgICAgIHJldHVybiBDb21taXQoCisgICAgICAgICAgICByZXZpc2lvbj1pbnQocmV2aXNp
b24pLAorICAgICAgICAgICAgYnJhbmNoPWJyYW5jaCwKKyAgICAgICAgICAgIGlkZW50aWZpZXI9
aWRlbnRpZmllciwKKyAgICAgICAgICAgIGJyYW5jaF9wb2ludD1icmFuY2hfcG9pbnQsCisgICAg
ICAgICAgICB0aW1lc3RhbXA9aW50KGNhbGVuZGFyLnRpbWVnbShkYXRlLnRpbWV0dXBsZSgpKSks
CisgICAgICAgICAgICBhdXRob3I9YXV0aG9yLAorICAgICAgICAgICAgbWVzc2FnZT1tZXNzYWdl
LAorICAgICAgICApCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93
ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9naXQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwvZ2l0LnB5CShy
ZXZpc2lvbiAyNjgwMTQpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93
ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9naXQucHkJKHdvcmtpbmcgY29weSkKQEAgLTIxLDkgKzIx
LDExIEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCBvcworaW1wb3J0IHJlCiAKK2Zyb20gZGF0
ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCiBmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgbW9ja3MKLWZy
b20gd2Via2l0c2NtcHkgaW1wb3J0IGxvY2FsCitmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBsb2Nh
bCwgQ29tbWl0LCBDb250cmlidXRvcgogCiAKIGNsYXNzIEdpdChtb2Nrcy5TdWJwcm9jZXNzKToK
QEAgLTM2LDM1ICszOCwxMTYgQEAgY2xhc3MgR2l0KG1vY2tzLlN1YnByb2Nlc3MpOgogICAgICk6
CiAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKICAgICAgICAgc2VsZi5icmFuY2ggPSBicmFuY2gg
b3IgZGVmYXVsdF9icmFuY2gKKyAgICAgICAgc2VsZi5kZWZhdWx0X2JyYW5jaCA9IGRlZmF1bHRf
YnJhbmNoCiAgICAgICAgIHNlbGYucmVtb3RlID0gcmVtb3RlIG9yICdnaXRAd2Via2l0Lm9yZzov
bW9jay97fScuZm9ybWF0KG9zLnBhdGguYmFzZW5hbWUocGF0aCkpCiAgICAgICAgIHNlbGYuZGV0
YWNoZWQgPSBkZXRhY2hlZCBvciBGYWxzZQogCiAgICAgICAgIHNlbGYuYnJhbmNoZXMgPSBicmFu
Y2hlcyBvciBbXQogICAgICAgICBzZWxmLnRhZ3MgPSB0YWdzIG9yIFtdCiAKKyAgICAgICAgIyBQ
cm92aWRlIGEgcmVhc29uYWJsZSBzZXQgb2YgY29tbWl0cyB0byB0ZXN0IGFnYWluc3QKKyAgICAg
ICAgY29udHJpYnV0b3IgPSBDb250cmlidXRvcihuYW1lPSdKb25hdGhhbiBCZWRhcmQnLCBlbWFp
bHM9WydqYmVkYXJkQGFwcGxlLmNvbSddKQorICAgICAgICBzZWxmLmNvbW1pdHMgPSB7CisgICAg
ICAgICAgICBkZWZhdWx0X2JyYW5jaDogWworICAgICAgICAgICAgICAgIENvbW1pdCgKKyAgICAg
ICAgICAgICAgICAgICAgaWRlbnRpZmllcj0nMUB7fScuZm9ybWF0KGRlZmF1bHRfYnJhbmNoKSwK
KyAgICAgICAgICAgICAgICAgICAgaGFzaD0nOWI4MzExZjI1YTc3YmExNDkyM2Q5ZDVhNjUzMjEw
M2Y1NGFiZWZjYicsCisgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uPTEgaWYgZ2l0X3N2biBl
bHNlIE5vbmUsCisgICAgICAgICAgICAgICAgICAgIGF1dGhvcj1jb250cmlidXRvciwKKyAgICAg
ICAgICAgICAgICAgICAgdGltZXN0YW1wPTE2MDE2NjAwMDAsCisgICAgICAgICAgICAgICAgICAg
IG1lc3NhZ2U9JzFzdCBjb21taXRcbicsCisgICAgICAgICAgICAgICAgKSwgQ29tbWl0KAorICAg
ICAgICAgICAgICAgICAgICBpZGVudGlmaWVyPScyQHt9Jy5mb3JtYXQoZGVmYXVsdF9icmFuY2gp
LAorICAgICAgICAgICAgICAgICAgICBoYXNoPSdmZmY4M2JiMmQ5MTcxYjRkOTE5NmU5NzdlYjA1
MDhmZDU3ZTdhMDhkJywKKyAgICAgICAgICAgICAgICAgICAgcmV2aXNpb249MiBpZiBnaXRfc3Zu
IGVsc2UgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgYXV0aG9yPWNvbnRyaWJ1dG9yLAorICAg
ICAgICAgICAgICAgICAgICB0aW1lc3RhbXA9MTYwMTY2MTAwMCwKKyAgICAgICAgICAgICAgICAg
ICAgbWVzc2FnZT0nMm5kIGNvbW1pdFxuJywKKyAgICAgICAgICAgICAgICApLCBDb21taXQoCisg
ICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI9JzNAe30nLmZvcm1hdChkZWZhdWx0X2JyYW5j
aCksCisgICAgICAgICAgICAgICAgICAgIGhhc2g9JzFhYmUyNWI0NDNlOTg1ZjkzYjkwZDgzMGU0
YTdlMzczMTMzNmFmNGQnLAorICAgICAgICAgICAgICAgICAgICByZXZpc2lvbj00IGlmIGdpdF9z
dm4gZWxzZSBOb25lLAorICAgICAgICAgICAgICAgICAgICBhdXRob3I9Y29udHJpYnV0b3IsCisg
ICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcD0xNjAxNjYzMDAwLAorICAgICAgICAgICAgICAg
ICAgICBtZXNzYWdlPSc0dGggY29tbWl0XG4nLAorICAgICAgICAgICAgICAgICksIENvbW1pdCgK
KyAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcj0nNEB7fScuZm9ybWF0KGRlZmF1bHRfYnJh
bmNoKSwKKyAgICAgICAgICAgICAgICAgICAgaGFzaD0nYmFlNWQxZTkwOTk5ZDRmOTE2YThhMTU4
MTBjY2ZhNDNmMzdhMmZkNicsCisgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uPTYgaWYgZ2l0
X3N2biBlbHNlIE5vbmUsCisgICAgICAgICAgICAgICAgICAgIGF1dGhvcj1jb250cmlidXRvciwK
KyAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wPTE2MDE2NjUwMDAsCisgICAgICAgICAgICAg
ICAgICAgIG1lc3NhZ2U9JzZ0aCBjb21taXRcbicsCisgICAgICAgICAgICAgICAgKSwKKyAgICAg
ICAgICAgIF0sICdicmFuY2gtYSc6IFsKKyAgICAgICAgICAgICAgICBDb21taXQoCisgICAgICAg
ICAgICAgICAgICAgIGlkZW50aWZpZXI9JzIuMUBicmFuY2gtYScsCisgICAgICAgICAgICAgICAg
ICAgIGhhc2g9J2EzMGNlODQ5NGJmMWFjMjgwN2E2OTg0NGY3MjZiZTRhOTg0M2NhNTUnLAorICAg
ICAgICAgICAgICAgICAgICByZXZpc2lvbj0zIGlmIGdpdF9zdm4gZWxzZSBOb25lLAorICAgICAg
ICAgICAgICAgICAgICBhdXRob3I9Y29udHJpYnV0b3IsCisgICAgICAgICAgICAgICAgICAgIHRp
bWVzdGFtcD0xNjAxNjYyMDAwLAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSczcmQgY29t
bWl0XG4nLAorICAgICAgICAgICAgICAgICksIENvbW1pdCgKKyAgICAgICAgICAgICAgICAgICAg
aWRlbnRpZmllcj0nMi4yQGJyYW5jaC1hJywKKyAgICAgICAgICAgICAgICAgICAgaGFzaD0nNjIx
NjUyYWRkN2ZjNDE2MDk5YmQyMDYzMzY2Y2MzOGZmNjFhZmUzNicsCisgICAgICAgICAgICAgICAg
ICAgIHJldmlzaW9uPTcgaWYgZ2l0X3N2biBlbHNlIE5vbmUsCisgICAgICAgICAgICAgICAgICAg
IGF1dGhvcj1jb250cmlidXRvciwKKyAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wPTE2MDE2
NjYwMDAsCisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9Jzd0aCBjb21taXRcbicsCisgICAg
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIF0sCisgICAgICAgIH0KKyAgICAgICAgc2VsZi5j
b21taXRzWydicmFuY2gtYiddID0gWworICAgICAgICAgICAgc2VsZi5jb21taXRzWydicmFuY2gt
YSddWzBdLCBDb21taXQoCisgICAgICAgICAgICAgICAgaWRlbnRpZmllcj0nMi4yQGJyYW5jaC1i
JywKKyAgICAgICAgICAgICAgICBoYXNoPSczY2QzMmUzNTI0MTA1NjViYjU0MzgyMWZiZjg1NmE2
ZDNjYWFkMWM0JywKKyAgICAgICAgICAgICAgICByZXZpc2lvbj01IGlmIGdpdF9zdm4gZWxzZSBO
b25lLAorICAgICAgICAgICAgICAgIGF1dGhvcj1jb250cmlidXRvciwKKyAgICAgICAgICAgICAg
ICB0aW1lc3RhbXA9MTYwMTY2NDAwMCwKKyAgICAgICAgICAgICAgICBtZXNzYWdlPSc1dGggY29t
bWl0XG4nLAorICAgICAgICAgICAgKSwgQ29tbWl0KAorICAgICAgICAgICAgICAgIGlkZW50aWZp
ZXI9JzIuM0BicmFuY2gtYicsCisgICAgICAgICAgICAgICAgaGFzaD0nNzkwNzI1YTZkNzllMjhk
YjJlY2RkZTI5NTQ4ZDIyNjJjMGJkMDU5ZCcsCisgICAgICAgICAgICAgICAgcmV2aXNpb249OCBp
ZiBnaXRfc3ZuIGVsc2UgTm9uZSwKKyAgICAgICAgICAgICAgICBhdXRob3I9Y29udHJpYnV0b3Is
CisgICAgICAgICAgICAgICAgdGltZXN0YW1wPTE2MDE2NjcwMDAsCisgICAgICAgICAgICAgICAg
bWVzc2FnZT0nOHRoIGNvbW1pdFxuJywKKyAgICAgICAgICAgICksCisgICAgICAgIF0KKwogICAg
ICAgICBpZiBnaXRfc3ZuOgogICAgICAgICAgICAgZ2l0X3N2bl9yb3V0ZXMgPSBbCiAgICAgICAg
ICAgICAgICAgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKLSAgICAgICAgICAgICAgICAgICAgbG9j
YWwuR2l0LmV4ZWN1dGFibGUsICdzdm4nLCAnZmluZC1yZXYnLCAncjEnLAorICAgICAgICAgICAg
ICAgICAgICBsb2NhbC5HaXQuZXhlY3V0YWJsZSwgJ3N2bicsICdmaW5kLXJldicsIHJlLmNvbXBp
bGUocidyXGQrJyksCiAgICAgICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCi0gICAgICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb249bW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24oCi0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm5jb2RlPTAsCi0gICAgICAgICAgICAgICAgICAgICAgICBz
dGRvdXQ9J2Q0MjNlYTgyZWZhYWVkMGRjYmFmYjA5YWFhNGE3MGZhZmRlYTA3MjlcbicsCi0gICAg
ICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvcj1sYW1iZGEg
KmFyZ3MsICoqa3dhcmdzOgorICAgICAgICAgICAgICAgICAgICAgICAgbW9ja3MuUHJvY2Vzc0Nv
bXBsZXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuY29kZT0wLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1nZXRhdHRyKHNlbGYuZmluZChhcmdzWzNd
WzE6XSksICdoYXNoJywgJ1xuJyksCisgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAg
ICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKICAgICAgICAgICAgICAgICAgICAg
bG9jYWwuR2l0LmV4ZWN1dGFibGUsICdzdm4nLCAnaW5mbycsCiAgICAgICAgICAgICAgICAgICAg
IGN3ZD1zZWxmLnBhdGgsCi0gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb249bW9ja3MuUHJv
Y2Vzc0NvbXBsZXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5jb2RlPTAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ1BhdGg6IC5cbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVVJMOiB7cmVtb3Rl
fS97YnJhbmNofVxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdSZXBvc2l0b3J5IFJv
b3Q6IHtyZW1vdGV9XG4nLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGF0aD1zZWxmLnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZT1z
ZWxmLnJlbW90ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoPXNlbGYu
YnJhbmNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAg
ICAgICksCisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dh
cmdzOgorICAgICAgICAgICAgICAgICAgICAgICAgbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24oCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuY29kZT0wLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZG91dD0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Bh
dGg6IC5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1VSTDoge3JlbW90ZX0v
e2JyYW5jaH1cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1JlcG9zaXRvcnkg
Um9vdDoge3JlbW90ZX1cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Jldmlz
aW9uOiB7cmV2aXNpb259XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdOb2Rl
IEtpbmQ6IGRpcmVjdG9yeVxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU2No
ZWR1bGU6IG5vcm1hbFxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTGFzdCBD
aGFuZ2VkIEF1dGhvcjoge2F1dGhvcn1cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ0xhc3QgQ2hhbmdlZCBSZXY6IHtyZXZpc2lvbn1cbicKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0xhc3QgQ2hhbmdlZCBEYXRlOiB7ZGF0ZX0nLmZvcm1hdCgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9c2VsZi5wYXRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlPXNlbGYucmVtb3RlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoPXNlbGYuYnJhbmNoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV2aXNpb249c2VsZi5jb21taXRzW3NlbGYuYnJhbmNo
XVstMV0ucmV2aXNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRo
b3I9c2VsZi5jb21taXRzW3NlbGYuYnJhbmNoXVstMV0uYXV0aG9yLmVtYWlsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZT1kYXRldGltZS5mcm9tdGltZXN0YW1wKHNl
bGYuY29tbWl0c1tzZWxmLmJyYW5jaF1bLTFdLnRpbWVzdGFtcCkuc3RyZnRpbWUoJyVZLSVtLSVk
ICVIOiVNOiVTJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCisgICAgICAg
ICAgICAgICAgICAgICAgICApIGlmIGxlbihzZWxmLmNvbW1pdHMuZ2V0KHNlbGYuYnJhbmNoKSkg
ZWxzZSBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbihyZXR1cm5jb2RlPTEpLAogICAgICAgICAgICAg
ICAgICksCiAgICAgICAgICAgICBdCiAKQEAgLTEyMCw3ICsyMDMsNyBAQCBub3RoaW5nIHRvIGNv
bW1pdCwgd29ya2luZyB0cmVlIGNsZWFuCiAgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwK
ICAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogbW9ja3Mu
UHJvY2Vzc0NvbXBsZXRpb24oCiAgICAgICAgICAgICAgICAgICAgIHJldHVybmNvZGU9MCwKLSAg
ICAgICAgICAgICAgICAgICAgc3Rkb3V0PSdcbicuam9pbihzb3J0ZWQoWycqICcgKyBzZWxmLmJy
YW5jaF0gKyBsaXN0KCh7ZGVmYXVsdF9icmFuY2h9IHwgc2V0KHNlbGYuYnJhbmNoZXMpKSAtIHtz
ZWxmLmJyYW5jaH0pKSkgKworICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9J1xuJy5qb2luKHNv
cnRlZChbJyogJyArIHNlbGYuYnJhbmNoXSArIGxpc3QoKHtkZWZhdWx0X2JyYW5jaH0gfCBzZXQo
c2VsZi5jb21taXRzLmtleXMoKSkgfCBzZXQoc2VsZi5icmFuY2hlcykpIC0ge3NlbGYuYnJhbmNo
fSkpKSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG5yZW1vdGVzL29yaWdpbi9IRUFE
IC0+IG9yaWdpbi97fVxuJy5mb3JtYXQoZGVmYXVsdF9icmFuY2gpLAogICAgICAgICAgICAgICAg
ICksCiAgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKApAQCAtMTM4LDYgKzIy
MSw1NCBAQCBub3RoaW5nIHRvIGNvbW1pdCwgd29ya2luZyB0cmVlIGNsZWFuCiAgICAgICAgICAg
ICAgICAgICAgIHN0ZG91dD0nb3JpZ2luL3t9XG4nLmZvcm1hdChkZWZhdWx0X2JyYW5jaCksCiAg
ICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUo
CisgICAgICAgICAgICAgICAgbG9jYWwuR2l0LmV4ZWN1dGFibGUsICdsb2cnLCByZS5jb21waWxl
KHInLisnKSwgJy0xJywKKyAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAg
ICAgICAgIGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBtb2Nrcy5Qcm9jZXNzQ29t
cGxldGlvbigKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuY29kZT0wLAorICAgICAgICAgICAg
ICAgICAgICBzdGRvdXQ9CisgICAgICAgICAgICAgICAgICAgICAgICAnY29tbWl0IHtoYXNofSAo
SEVBRCAtPiB7YnJhbmNofSwgb3JpZ2luL3ticmFuY2h9LCBvcmlnaW4vSEVBRClcbicKKyAgICAg
ICAgICAgICAgICAgICAgICAgICdBdXRob3I6IHthdXRob3J9IDx7ZW1haWx9PlxuJworICAgICAg
ICAgICAgICAgICAgICAgICAgJ0RhdGU6ICAge2RhdGV9XG4nCisgICAgICAgICAgICAgICAgICAg
ICAgICAnXG57bG9nfScuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2g9
c2VsZi5maW5kKGFyZ3NbMl0pLmhhc2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJh
bmNoPXNlbGYuYnJhbmNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhvcj1zZWxm
LmZpbmQoYXJnc1syXSkuYXV0aG9yLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZW1haWw9c2VsZi5maW5kKGFyZ3NbMl0pLmF1dGhvci5lbWFpbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkYXRlPWRhdGV0aW1lLmZyb210aW1lc3RhbXAoc2VsZi5maW5kKGFyZ3NbMl0p
LnRpbWVzdGFtcCkuc3RyZnRpbWUoJyVhICViICVkICVIOiVNOiVTICVZJyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbG9nPSdcbicuam9pbihbCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoJyAgICAnICsgbGluZSkgaWYgbGluZSBlbHNlICcnIGZvciBsaW5lIGlu
IHNlbGYuZmluZChhcmdzWzJdKS5tZXNzYWdlLnNwbGl0bGluZXMoKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBdICsgWydnaXQtc3ZuLWlkOiBodHRwczovL3N2bi57fXJlcG9zaXRv
cnkve30vdHJ1bmtAe30gMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjJy5mb3Jt
YXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlbW90ZS5zcGxp
dCgnQCcpWy0xXS5zcGxpdCgnOicpWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3MucGF0aC5iYXNlbmFtZShwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuZmluZChhcmdzWzJdKS5yZXZpc2lvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKV0gaWYgZ2l0X3N2biBlbHNlIFtdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAg
KSBpZiBzZWxmLmZpbmQoYXJnc1syXSkgZWxzZSBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbihyZXR1
cm5jb2RlPTEyOCksCisgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAorICAg
ICAgICAgICAgICAgIGxvY2FsLkdpdC5leGVjdXRhYmxlLCAncmV2LWxpc3QnLCAnLS1jb3VudCcs
ICctLW5vLW1lcmdlcycsIHJlLmNvbXBpbGUocicuKycpLAorICAgICAgICAgICAgICAgIGN3ZD1z
ZWxmLnBhdGgsCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yPWxhbWJkYSAqYXJncywgKiprd2Fy
Z3M6IG1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKAorICAgICAgICAgICAgICAgICAgICByZXR1cm5j
b2RlPTAsCisgICAgICAgICAgICAgICAgICAgIHN0ZG91dD0ne31cbicuZm9ybWF0KHNlbGYuY291
bnQoYXJnc1s0XSkpCisgICAgICAgICAgICAgICAgKSBpZiBzZWxmLmZpbmQoYXJnc1s0XSkgZWxz
ZSBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbihyZXR1cm5jb2RlPTEyOCksCisgICAgICAgICAgICAp
LCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAorICAgICAgICAgICAgICAgIGxvY2FsLkdpdC5leGVj
dXRhYmxlLCAnc2hvdycsICctcycsICctLWZvcm1hdD0lY3QnLCByZS5jb21waWxlKHInLisnKSwK
KyAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAgICAgICAgIGdlbmVyYXRv
cj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbigKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuY29kZT0wLAorICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9
J3t9XG4nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmluZChhcmdzWzRd
KS50aW1lc3RhbXAsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApIGlm
IHNlbGYuZmluZChhcmdzWzRdKSBlbHNlIG1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKHJldHVybmNv
ZGU9MTI4KSwKKyAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCisgICAgICAg
ICAgICAgICAgbG9jYWwuR2l0LmV4ZWN1dGFibGUsICdicmFuY2gnLCAnLWEnLCAnLS1jb250YWlu
cycsIHJlLmNvbXBpbGUocicuKycpLAorICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCisg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yPWxhbWJkYSAqYXJncywgKiprd2FyZ3M6IG1vY2tzLlBy
b2Nlc3NDb21wbGV0aW9uKAorICAgICAgICAgICAgICAgICAgICByZXR1cm5jb2RlPTAsCisgICAg
ICAgICAgICAgICAgICAgIHN0ZG91dD0nXG4nLmpvaW4oc29ydGVkKHNlbGYuYnJhbmNoZXNfb24o
YXJnc1s0XSkpKSArICdcbicsCisgICAgICAgICAgICAgICAgKSBpZiBzZWxmLmZpbmQoYXJnc1s0
XSkgZWxzZSBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbihyZXR1cm5jb2RlPTEyOCksCisgICAgICAg
ICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAogICAgICAgICAgICAgICAgIGxvY2FsLkdp
dC5leGVjdXRhYmxlLAogICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCiAgICAgICAgICAg
ICAgICAgY29tcGxldGlvbj1tb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbigKQEAgLTE1MiwzICsyODMs
NTYgQEAgbm90aGluZyB0byBjb21taXQsIHdvcmtpbmcgdHJlZSBjbGVhbgogICAgICAgICAgICAg
ICAgICksCiAgICAgICAgICAgICApLCAqZ2l0X3N2bl9yb3V0ZXMKICAgICAgICAgKQorCisgICAg
ZGVmIGZpbmQoc2VsZiwgc29tZXRoaW5nKToKKyAgICAgICAgaWYgJ34nIGluIHNvbWV0aGluZzoK
KyAgICAgICAgICAgIHNwbGl0ID0gc29tZXRoaW5nLnNwbGl0KCd+JykKKyAgICAgICAgICAgIGlm
IGxlbihzcGxpdCkgPT0gMiBhbmQgQ29tbWl0Lk5VTUJFUl9SRS5tYXRjaChzcGxpdFsxXSk6Cisg
ICAgICAgICAgICAgICAgZm91bmQgPSBzZWxmLmZpbmQoc3BsaXRbMF0pCisgICAgICAgICAgICAg
ICAgZGlmZmVyZW5jZSA9IGludChzcGxpdFsxXSkKKyAgICAgICAgICAgICAgICBpZiBkaWZmZXJl
bmNlIDwgZm91bmQuaWRlbnRpZmllcjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu
Y29tbWl0c1tmb3VuZC5icmFuY2hdW2ZvdW5kLmlkZW50aWZpZXIgLSBkaWZmZXJlbmNlIC0gMV0K
KyAgICAgICAgICAgICAgICBkaWZmZXJlbmNlIC09IGZvdW5kLmlkZW50aWZpZXIKKyAgICAgICAg
ICAgICAgICBpZiBkaWZmZXJlbmNlIDwgZm91bmQuYnJhbmNoX3BvaW50OgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gc2VsZi5jb21taXRzW3NlbGYuZGVmYXVsdF9icmFuY2hdW2ZvdW5kLmJy
YW5jaF9wb2ludCAtIGRpZmZlcmVuY2UgLSAxXQorICAgICAgICAgICAgICAgIHJldHVybiBOb25l
CisKKyAgICAgICAgaWYgc29tZXRoaW5nID09ICdIRUFEJzoKKyAgICAgICAgICAgIHJldHVybiBz
ZWxmLmNvbW1pdHNbc2VsZi5icmFuY2hdWy0xXQorICAgICAgICBpZiBzb21ldGhpbmcgaW4gc2Vs
Zi5jb21taXRzLmtleXMoKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmNvbW1pdHNbc29tZXRo
aW5nXVstMV0KKworICAgICAgICBzb21ldGhpbmcgPSBzdHIoc29tZXRoaW5nKQorICAgICAgICBp
ZiAnLi4nIGluIHNvbWV0aGluZzoKKyAgICAgICAgICAgIHNvbWV0aGluZyA9IHNvbWV0aGluZy5z
cGxpdCgnLi4nKVsxXQorICAgICAgICBmb3IgYnJhbmNoLCBjb21taXRzIGluIHNlbGYuY29tbWl0
cy5pdGVtcygpOgorICAgICAgICAgICAgaWYgYnJhbmNoID09IHNvbWV0aGluZzoKKyAgICAgICAg
ICAgICAgICByZXR1cm4gY29tbWl0c1stMV0KKyAgICAgICAgICAgIGZvciBjb21taXQgaW4gY29t
bWl0czoKKyAgICAgICAgICAgICAgICBpZiBzb21ldGhpbmcgPT0gc3RyKGNvbW1pdC5yZXZpc2lv
bik6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21taXQKKyAgICAgICAgICAgICAgICBp
ZiBsZW4oc29tZXRoaW5nKSA+IDQgYW5kIGNvbW1pdC5oYXNoLnN0YXJ0c3dpdGgoc3RyKHNvbWV0
aGluZykpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tbWl0CisgICAgICAgIHJldHVy
biBOb25lCisKKyAgICBkZWYgY291bnQoc2VsZiwgc29tZXRoaW5nKToKKyAgICAgICAgbWF0Y2gg
PSBzZWxmLmZpbmQoc29tZXRoaW5nKQorICAgICAgICBpZiAnLi4nIGluIHNvbWV0aGluZyBvciBu
b3QgbWF0Y2guYnJhbmNoX3BvaW50OgorICAgICAgICAgICAgcmV0dXJuIG1hdGNoLmlkZW50aWZp
ZXIKKyAgICAgICAgcmV0dXJuIG1hdGNoLmJyYW5jaF9wb2ludAorCisgICAgZGVmIGJyYW5jaGVz
X29uKHNlbGYsIGhhc2gpOgorICAgICAgICByZXN1bHQgPSBzZXQoKQorICAgICAgICBmb3VuZF9p
ZGVudGlmaWVyID0gMAorICAgICAgICBmb3IgYnJhbmNoLCBjb21taXRzIGluIHNlbGYuY29tbWl0
cy5pdGVtcygpOgorCisgICAgICAgICAgICBmb3IgY29tbWl0IGluIGNvbW1pdHM6CisgICAgICAg
ICAgICAgICAgaWYgY29tbWl0Lmhhc2guc3RhcnRzd2l0aChoYXNoKToKKyAgICAgICAgICAgICAg
ICAgICAgZm91bmRfaWRlbnRpZmllciA9IG1heChjb21taXQuaWRlbnRpZmllciwgZm91bmRfaWRl
bnRpZmllcikKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChicmFuY2gpCisKKyAgICAg
ICAgaWYgc2VsZi5kZWZhdWx0X2JyYW5jaCBpbiByZXN1bHQ6CisgICAgICAgICAgICBmb3IgYnJh
bmNoLCBjb21taXRzIGluIHNlbGYuY29tbWl0cy5pdGVtcygpOgorICAgICAgICAgICAgICAgIGlm
IGNvbW1pdHNbMF0uYnJhbmNoX3BvaW50IGFuZCBjb21taXRzWzBdLmJyYW5jaF9wb2ludCA+PSBm
b3VuZF9pZGVudGlmaWVyOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQuYWRkKGJyYW5jaCkK
KyAgICAgICAgcmV0dXJuIHJlc3VsdApJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwvc3ZuLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL2xvY2Fs
L3N2bi5weQkocmV2aXNpb24gMjY4MDE0KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwvc3ZuLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0yMSwxMiArMjEsMzAgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogaW1wb3J0IG9zCitpbXBvcnQgcmUK
KworZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKIAogZnJvbSB3ZWJraXRjb3JlcHkgaW1w
b3J0IG1vY2tzCiBmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBsb2NhbAorZnJvbSB3ZWJraXRzY21w
eSBpbXBvcnQgQ29tbWl0LCBDb250cmlidXRvcgogCiAKIGNsYXNzIFN2bihtb2Nrcy5TdWJwcm9j
ZXNzKToKKyAgICBCUkFOQ0hfUkUgPSByZS5jb21waWxlKHInXF4vKGJyYW5jaGVzLyk/KD9QPGJy
YW5jaD4uKyknKQorICAgIFVUQ19PRkZTRVQgPSAnLTAxMDAnCisKKyAgICBAY2xhc3NtZXRob2QK
KyAgICBkZWYgbG9nX2xpbmUoY2xzLCBjb21taXQpOgorICAgICAgICBlbWFpbCA9ICcobm8gYXV0
aG9yKScKKyAgICAgICAgaWYgY29tbWl0LmF1dGhvcjoKKyAgICAgICAgICAgIGVtYWlsID0gY29t
bWl0LmF1dGhvci5lbWFpbCBvciBjb21taXQuYXV0aG9yLm5hbWUKKyAgICAgICAgcmV0dXJuICdy
e3JldmlzaW9ufSB8IHtlbWFpbH0gfCB7ZGF0ZX0nLmZvcm1hdCgKKyAgICAgICAgICAgIHJldmlz
aW9uPWNvbW1pdC5yZXZpc2lvbiwKKyAgICAgICAgICAgIGVtYWlsPWVtYWlsLAorICAgICAgICAg
ICAgZGF0ZT1kYXRldGltZS5mcm9tdGltZXN0YW1wKGNvbW1pdC50aW1lc3RhbXApLnN0cmZ0aW1l
KCclWS0lbS0lZCAlSDolTTolUyB7fSAoJWEsICVkICViICVZKScuZm9ybWF0KGNscy5VVENfT0ZG
U0VUKSksCisgICAgICAgICkKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoPScvLmludmFs
aWQtc3ZuJywgYnJhbmNoPU5vbmUsIHJlbW90ZT1Ob25lLCBicmFuY2hlcz1Ob25lLCB0YWdzPU5v
bmUpOgogICAgICAgICBzZWxmLnBhdGggPSBwYXRoCiAgICAgICAgIHNlbGYuYnJhbmNoID0gYnJh
bmNoIG9yICd0cnVuaycKQEAgLTM0LDM5ICs1MiwxMjIgQEAgY2xhc3MgU3ZuKG1vY2tzLlN1YnBy
b2Nlc3MpOgogCiAgICAgICAgIHNlbGYuYnJhbmNoZXMgPSBicmFuY2hlcyBvciBbXQogICAgICAg
ICBzZWxmLnRhZ3MgPSB0YWdzIG9yIFtdCisgICAgICAgIHNlbGYuY29ubmVjdGVkID0gVHJ1ZQor
CisgICAgICAgICMgUHJvdmlkZSBhIHJlYXNvbmFibGUgc2V0IG9mIGNvbW1pdHMgdG8gdGVzdCBh
Z2FpbnN0CisgICAgICAgIGNvbnRyaWJ1dG9yID0gQ29udHJpYnV0b3IobmFtZT0nSm9uYXRoYW4g
QmVkYXJkJywgZW1haWxzPVsnamJlZGFyZEBhcHBsZS5jb20nXSkKKyAgICAgICAgc2VsZi5jb21t
aXRzID0geworICAgICAgICAgICAgJ3RydW5rJzogWworICAgICAgICAgICAgICAgIENvbW1pdCgK
KyAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcj0nMUB0cnVuaycsCisgICAgICAgICAgICAg
ICAgICAgIHJldmlzaW9uPTEsCisgICAgICAgICAgICAgICAgICAgIGF1dGhvcj1jb250cmlidXRv
ciwKKyAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wPTE2MDE2NjAxMDAsCisgICAgICAgICAg
ICAgICAgICAgIG1lc3NhZ2U9JzFzdCBjb21taXRcbicsCisgICAgICAgICAgICAgICAgKSwgQ29t
bWl0KAorICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyPScyQHRydW5rJywKKyAgICAgICAg
ICAgICAgICAgICAgcmV2aXNpb249MiwKKyAgICAgICAgICAgICAgICAgICAgYXV0aG9yPWNvbnRy
aWJ1dG9yLAorICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA9MTYwMTY2MTEwMCwKKyAgICAg
ICAgICAgICAgICAgICAgbWVzc2FnZT0nMm5kIGNvbW1pdFxuJywKKyAgICAgICAgICAgICAgICAp
LCBDb21taXQoCisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI9JzNAdHJ1bmsnLAorICAg
ICAgICAgICAgICAgICAgICByZXZpc2lvbj00LAorICAgICAgICAgICAgICAgICAgICBhdXRob3I9
Y29udHJpYnV0b3IsCisgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcD0xNjAxNjYzMTAwLAor
ICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSc0dGggY29tbWl0XG4nLAorICAgICAgICAgICAg
ICAgICksIENvbW1pdCgKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcj0nNEB0cnVuaycs
CisgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uPTYsCisgICAgICAgICAgICAgICAgICAgIGF1
dGhvcj1jb250cmlidXRvciwKKyAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wPTE2MDE2NjUx
MDAsCisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9JzZ0aCBjb21taXRcbicsCisgICAgICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgIF0sICdicmFuY2gtYSc6IFsKKyAgICAgICAgICAgICAg
ICBDb21taXQoCisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI9JzIuMUBicmFuY2gtYScs
CisgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uPTMsCisgICAgICAgICAgICAgICAgICAgIGF1
dGhvcj1jb250cmlidXRvciwKKyAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wPTE2MDE2NjIx
MDAsCisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9JzNyZCBjb21taXRcbicsCisgICAgICAg
ICAgICAgICAgKSwgQ29tbWl0KAorICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyPScyLjJA
YnJhbmNoLWEnLAorICAgICAgICAgICAgICAgICAgICByZXZpc2lvbj03LAorICAgICAgICAgICAg
ICAgICAgICBhdXRob3I9Y29udHJpYnV0b3IsCisgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFt
cD0xNjAxNjY2MTAwLAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSc3dGggY29tbWl0XG4n
LAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICBdLAorICAgICAgICB9CisgICAgICAg
IHNlbGYuY29tbWl0c1snYnJhbmNoLWInXSA9IFsKKyAgICAgICAgICAgIHNlbGYuY29tbWl0c1sn
YnJhbmNoLWEnXVswXSwgQ29tbWl0KAorICAgICAgICAgICAgICAgIGlkZW50aWZpZXI9JzIuMkBi
cmFuY2gtYicsCisgICAgICAgICAgICAgICAgcmV2aXNpb249NSwKKyAgICAgICAgICAgICAgICBh
dXRob3I9Y29udHJpYnV0b3IsCisgICAgICAgICAgICAgICAgdGltZXN0YW1wPTE2MDE2NjQxMDAs
CisgICAgICAgICAgICAgICAgbWVzc2FnZT0nNXRoIGNvbW1pdFxuJywKKyAgICAgICAgICAgICks
IENvbW1pdCgKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVyPScyLjNAYnJhbmNoLWInLAorICAg
ICAgICAgICAgICAgIHJldmlzaW9uPTgsCisgICAgICAgICAgICAgICAgYXV0aG9yPWNvbnRyaWJ1
dG9yLAorICAgICAgICAgICAgICAgIHRpbWVzdGFtcD0xNjAxNjY3MTAwLAorICAgICAgICAgICAg
ICAgIG1lc3NhZ2U9Jzh0aCBjb21taXRcbicsCisgICAgICAgICAgICApLAorICAgICAgICBdCiAK
ICAgICAgICAgc3VwZXIoU3ZuLCBzZWxmKS5fX2luaXRfXygKICAgICAgICAgICAgIG1vY2tzLlN1
YnByb2Nlc3MuUm91dGUoCiAgICAgICAgICAgICAgICAgbG9jYWwuU3ZuLmV4ZWN1dGFibGUsICdp
bmZvJywKICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAotICAgICAgICAgICAgICAgIGdl
bmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbigK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuY29kZT0wLAotICAgICAgICAgICAgICAgICAgICBz
dGRvdXQ9Ci0gICAgICAgICAgICAgICAgICAgICAgICAnUGF0aDogLlxuJwotICAgICAgICAgICAg
ICAgICAgICAgICAgJ1dvcmtpbmcgQ29weSBSb290IFBhdGg6IHtwYXRofVxuJwotICAgICAgICAg
ICAgICAgICAgICAgICAgJ1VSTDoge3JlbW90ZX0ve2JyYW5jaH17ZGlyZWN0b3J5fVxuJwotICAg
ICAgICAgICAgICAgICAgICAgICAgJ1JlbGF0aXZlIFVSTDogXi97YnJhbmNofXtkaXJlY3Rvcnl9
XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAnUmVwb3NpdG9yeSBSb290OiB7cmVtb3RlfVxu
Jy5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5PWt3YXJncy5n
ZXQoJ2N3ZCcsICcnKVtsZW4oc2VsZi5wYXRoKTpdLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhdGg9c2VsZi5wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZT1z
ZWxmLnJlbW90ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2g9c2VsZi5icmFu
Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICksCisgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yPWxhbWJkYSAqYXJncywgKiprd2FyZ3M6IHNlbGYuX2luZm8o
Y3dkPWt3YXJncy5nZXQoJ2N3ZCcsJycpKQorICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vz
cy5Sb3V0ZSgKKyAgICAgICAgICAgICAgICBsb2NhbC5Tdm4uZXhlY3V0YWJsZSwgJ2luZm8nLCBz
ZWxmLkJSQU5DSF9SRSwKKyAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAg
ICAgICAgIGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBzZWxmLl9pbmZvKGJyYW5j
aD1zZWxmLkJSQU5DSF9SRS5tYXRjaChhcmdzWzJdKS5ncm91cCgnYnJhbmNoJyksIGN3ZD1rd2Fy
Z3MuZ2V0KCdjd2QnLCAnJykpCiAgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRl
KAogICAgICAgICAgICAgICAgIGxvY2FsLlN2bi5leGVjdXRhYmxlLCAnbGlzdCcsICdeL2JyYW5j
aGVzJywKICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAogICAgICAgICAgICAgICAgIGdl
bmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbigK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuY29kZT0wLAotICAgICAgICAgICAgICAgICAgICBz
dGRvdXQ9Jy9cbicuam9pbihzZWxmLmJyYW5jaGVzKSArICcvXG4nLAotICAgICAgICAgICAgICAg
ICksCisgICAgICAgICAgICAgICAgICAgIHN0ZG91dD0nL1xuJy5qb2luKHNvcnRlZChzZXQoc2Vs
Zi5icmFuY2hlcykgfCBzZXQoc2VsZi5jb21taXRzLmtleXMoKSkgLSB7J3RydW5rJ30pKSArICcv
XG4nLAorICAgICAgICAgICAgICAgICkgaWYgc2VsZi5jb25uZWN0ZWQgZWxzZSBtb2Nrcy5Qcm9j
ZXNzQ29tcGxldGlvbihyZXR1cm5jb2RlPTEpLAogICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJv
Y2Vzcy5Sb3V0ZSgKICAgICAgICAgICAgICAgICBsb2NhbC5Tdm4uZXhlY3V0YWJsZSwgJ2xpc3Qn
LCAnXi90YWdzJywKICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAogICAgICAgICAgICAg
ICAgIGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBtb2Nrcy5Qcm9jZXNzQ29tcGxl
dGlvbigKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuY29kZT0wLAogICAgICAgICAgICAgICAg
ICAgICBzdGRvdXQ9Jy9cbicuam9pbihzZWxmLnRhZ3MpICsgJy9cbicsCi0gICAgICAgICAgICAg
ICAgKSwKKyAgICAgICAgICAgICAgICApIGlmIHNlbGYuY29ubmVjdGVkIGVsc2UgbW9ja3MuUHJv
Y2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0xKSwKKyAgICAgICAgICAgICksIG1vY2tzLlN1YnBy
b2Nlc3MuUm91dGUoCisgICAgICAgICAgICAgICAgbG9jYWwuU3ZuLmV4ZWN1dGFibGUsICdsb2cn
LCAnLXYnLCAnLXEnLCBzZWxmLnJlbW90ZSwgJy1yJywgcmUuY29tcGlsZShyJ1xkKycpLAorICAg
ICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yPWxh
bWJkYSAqYXJncywgKiprd2FyZ3M6IG1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKAorICAgICAgICAg
ICAgICAgICAgICByZXR1cm5jb2RlPTAsCisgICAgICAgICAgICAgICAgICAgIHN0ZG91dD0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICd7bGluZX1cbicKKyAgICAgICAgICAgICAgICAgICAgICAg
ICdDaGFuZ2VkIHBhdGhzOlxuJworICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBNIC97YnJh
bmNofS9DaGFuZ2VMb2dcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICcgICAgTSAve2JyYW5j
aH0vZmlsZS5jcHBcbicuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmU9
c2VsZi5sb2dfbGluZShzZWxmLmZpbmQocmV2aXNpb249YXJnc1s2XSkpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyYW5jaD0ndHJ1bmsnIGlmIHNlbGYuZmluZChyZXZpc2lvbj1hcmdz
WzZdKS5icmFuY2ggPT0gJ3RydW5rJyBlbHNlICdicmFuY2hlcy97fScuZm9ybWF0KHNlbGYuZmlu
ZChyZXZpc2lvbj1hcmdzWzZdKS5icmFuY2gpCisgICAgICAgICAgICAgICAgICAgICAgICApLAor
ICAgICAgICAgICAgICAgICkgaWYgc2VsZi5jb25uZWN0ZWQgYW5kIHNlbGYuZmluZChyZXZpc2lv
bj1hcmdzWzZdKSBlbHNlIG1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKHJldHVybmNvZGU9MSksCisg
ICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAorICAgICAgICAgICAgICAgIGxv
Y2FsLlN2bi5leGVjdXRhYmxlLCAnbG9nJywgJy1xJywgc2VsZi5CUkFOQ0hfUkUsCisgICAgICAg
ICAgICAgICAgY3dkPXNlbGYucGF0aCwKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRh
ICphcmdzLCAqKmt3YXJnczogbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24oCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybmNvZGU9MCwKKyAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PSdcbnt9XG4n
LmZvcm1hdCgnLScgKiA3Mikuam9pbihbCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxv
Z19saW5lKGNvbW1pdCkgZm9yIGNvbW1pdCBpbiBzZWxmLl9jb21taXRzX2ZvcihicmFuY2g9c2Vs
Zi5CUkFOQ0hfUkUubWF0Y2goYXJnc1szXSkuZ3JvdXAoJ2JyYW5jaCcpKQorICAgICAgICAgICAg
ICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICApIGlmIHNlbGYuY29ubmVjdGVkIGFuZCBzZWxm
LkJSQU5DSF9SRS5tYXRjaChhcmdzWzNdKS5ncm91cCgnYnJhbmNoJykgaW4gc2VsZi5jb21taXRz
IGVsc2UgbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0xKQorICAgICAgICAgICAg
KSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKKyAgICAgICAgICAgICAgICBsb2NhbC5Tdm4uZXhl
Y3V0YWJsZSwgJ2xvZycsICctbCcsICcxJywgJy1yJywgcmUuY29tcGlsZShyJ1xkKycpLCBzZWxm
LkJSQU5DSF9SRSwKKyAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAgICAg
ICAgIGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBzZWxmLl9sb2dfZm9yKAorICAg
ICAgICAgICAgICAgICAgICBicmFuY2g9c2VsZi5CUkFOQ0hfUkUubWF0Y2goYXJnc1s2XSkuZ3Jv
dXAoJ2JyYW5jaCcpLAorICAgICAgICAgICAgICAgICAgICByZXZpc2lvbj1hcmdzWzVdLAorICAg
ICAgICAgICAgICAgICkgaWYgc2VsZi5jb25uZWN0ZWQgZWxzZSBtb2Nrcy5Qcm9jZXNzQ29tcGxl
dGlvbihyZXR1cm5jb2RlPTEpCiAgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRl
KAogICAgICAgICAgICAgICAgIGxvY2FsLlN2bi5leGVjdXRhYmxlLAogICAgICAgICAgICAgICAg
IGN3ZD1zZWxmLnBhdGgsCkBAIC04MiwzICsxODMsNjcgQEAgY2xhc3MgU3ZuKG1vY2tzLlN1YnBy
b2Nlc3MpOgogICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICksCiAgICAgICAgICkKKwor
ICAgIGRlZiBfaW5mbyhzZWxmLCBicmFuY2g9Tm9uZSwgcmV2aXNpb249Tm9uZSwgY3dkPScnKToK
KyAgICAgICAgY29tbWl0ID0gc2VsZi5maW5kKGJyYW5jaD1icmFuY2gsIHJldmlzaW9uPXJldmlz
aW9uKQorICAgICAgICBpZiBub3QgY29tbWl0OgorICAgICAgICAgICAgcmV0dXJuIG1vY2tzLlBy
b2Nlc3NDb21wbGV0aW9uKHJldHVybmNvZGU9MSwgc3RkZXJyPSdzdm46IEUxNjAwMDY6IE5vIHN1
Y2ggcmV2aXNpb24ge31cbicuZm9ybWF0KHJldmlzaW9uKSkKKworICAgICAgICByZXR1cm4gbW9j
a3MuUHJvY2Vzc0NvbXBsZXRpb24oCisgICAgICAgICAgICByZXR1cm5jb2RlPTAsCisgICAgICAg
ICAgICBzdGRvdXQ9CisgICAgICAgICAgICAnUGF0aDogLlxuJworICAgICAgICAgICAgJ1dvcmtp
bmcgQ29weSBSb290IFBhdGg6IHtwYXRofVxuJworICAgICAgICAgICAgJ1VSTDoge3JlbW90ZX0v
e2JyYW5jaH17ZGlyZWN0b3J5fVxuJworICAgICAgICAgICAgJ1JlbGF0aXZlIFVSTDogXi97YnJh
bmNofXtkaXJlY3Rvcnl9XG4nCisgICAgICAgICAgICAnUmVwb3NpdG9yeSBSb290OiB7cmVtb3Rl
fVxuJworICAgICAgICAgICAgJ1JldmlzaW9uOiB7cmV2aXNpb259XG4nCisgICAgICAgICAgICAn
Tm9kZUtpbmQ6IGRpcmVjdG9yeVxuJworICAgICAgICAgICAgJ1NjaGVkdWxlOiBub3JtYWxcbicK
KyAgICAgICAgICAgICdMYXN0IENoYW5nZWQgQXV0aG9yOiB7YXV0aG9yfVxuJworICAgICAgICAg
ICAgJ0xhc3QgQ2hhbmdlZCBSZXY6IHtyZXZpc2lvbn1cbicKKyAgICAgICAgICAgICdMYXN0IENo
YW5nZWQgRGF0ZToge2RhdGV9Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAgZGlyZWN0b3J5PWN3
ZFtsZW4oc2VsZi5wYXRoKTpdLAorICAgICAgICAgICAgICAgIHBhdGg9c2VsZi5wYXRoLAorICAg
ICAgICAgICAgICAgIHJlbW90ZT1zZWxmLnJlbW90ZSwKKyAgICAgICAgICAgICAgICBicmFuY2g9
c2VsZi5icmFuY2gsCisgICAgICAgICAgICAgICAgcmV2aXNpb249Y29tbWl0LnJldmlzaW9uLAor
ICAgICAgICAgICAgICAgIGF1dGhvcj1jb21taXQuYXV0aG9yLmVtYWlsLAorICAgICAgICAgICAg
ICAgIGRhdGU9ZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChjb21taXQudGltZXN0YW1wKS5zdHJmdGlt
ZSgnJVktJW0tJWQgJUg6JU06JVMge30gKCVhLCAlZCAlYiAlWSknLmZvcm1hdChzZWxmLlVUQ19P
RkZTRVQpKSwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgIGRlZiBfY29tbWl0c19m
b3Ioc2VsZiwgYnJhbmNoPSd0cnVuaycpOgorICAgICAgICBpZiBicmFuY2ggbm90IGluIHNlbGYu
Y29tbWl0czoKKyAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICByZXN1bHQgPSBbY29tbWl0
IGZvciBjb21taXQgaW4gcmV2ZXJzZWQoc2VsZi5jb21taXRzW2JyYW5jaF0pXQorICAgICAgICBp
ZiBzZWxmLmNvbW1pdHNbYnJhbmNoXVswXS5icmFuY2hfcG9pbnQ6CisgICAgICAgICAgICByZXN1
bHQgKz0gW2NvbW1pdCBmb3IgY29tbWl0IGluIHJldmVyc2VkKHNlbGYuY29tbWl0c1sndHJ1bmsn
XVs6c2VsZi5jb21taXRzW2JyYW5jaF1bMF0uYnJhbmNoX3BvaW50XSldCisgICAgICAgIHJldHVy
biByZXN1bHQKKworICAgIGRlZiBfbG9nX2ZvcihzZWxmLCBicmFuY2g9Tm9uZSwgcmV2aXNpb249
Tm9uZSk6CisgICAgICAgIGNvbW1pdCA9IHNlbGYuZmluZChicmFuY2g9YnJhbmNoLCByZXZpc2lv
bj1yZXZpc2lvbikKKyAgICAgICAgaWYgbm90IGNvbW1pdDoKKyAgICAgICAgICAgIHJldHVybiBt
b2Nrcy5Qcm9jZXNzQ29tcGxldGlvbihyZXR1cm5jb2RlPTEpCisgICAgICAgIHJldHVybiBtb2Nr
cy5Qcm9jZXNzQ29tcGxldGlvbigKKyAgICAgICAgICAgIHJldHVybmNvZGU9MCwKKyAgICAgICAg
ICAgIHN0ZG91dD0KKyAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAg
ICAgICAgICAgJ3tsaW5lfSB8IHtsaW5lc30gbGluZXNcblxuJworICAgICAgICAgICAgICAgICd7
bG9nfVxuJy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIGxpbmU9c2VsZi5sb2dfbGluZShj
b21taXQpLAorICAgICAgICAgICAgICAgICAgICBsaW5lcz1sZW4oY29tbWl0Lm1lc3NhZ2Uuc3Bs
aXRsaW5lcygpKSwKKyAgICAgICAgICAgICAgICAgICAgbG9nPWNvbW1pdC5tZXNzYWdlCisgICAg
ICAgICAgICAgICAgKSwKKyAgICAgICAgKQorCisgICAgZGVmIGZpbmQoc2VsZiwgYnJhbmNoPU5v
bmUsIHJldmlzaW9uPU5vbmUpOgorICAgICAgICBpZiBub3QgYnJhbmNoIGFuZCBub3QgcmV2aXNp
b246CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jb21taXRzWyd0cnVuayddWy0xXQorICAgICAg
ICBmb3IgY2FuZGlkYXRlIGluIFticmFuY2hdIGlmIGJyYW5jaCBlbHNlIHNvcnRlZChzZWxmLmNv
bW1pdHMua2V5cygpKToKKyAgICAgICAgICAgIGlmIG5vdCByZXZpc2lvbjoKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc2VsZi5jb21taXRzW2NhbmRpZGF0ZV1bLTFdCisgICAgICAgICAgICBmb3Ig
Y29tbWl0IGluIHNlbGYuY29tbWl0c1tjYW5kaWRhdGVdOgorICAgICAgICAgICAgICAgIGlmIHN0
cihjb21taXQucmV2aXNpb24pID09IHN0cihyZXZpc2lvbik6CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBjb21taXQKKyAgICAgICAgcmV0dXJuIE5vbmUKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvY29udHJpYnV0b3JfdW5pdHRl
c3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkv
d2Via2l0c2NtcHkvdGVzdC9jb250cmlidXRvcl91bml0dGVzdC5weQkocmV2aXNpb24gMjY4MDE0
KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVz
dC9jb250cmlidXRvcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsMTMg
QEAgY2xhc3MgVGVzdENvbnRyaWJ1dG9yKHVuaXR0ZXN0LlRlc3RDYXNlKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNvbnRyaWJ1dG9yLm5hbWUsICdqYmVkYXJkQGFwcGxlLmNvbScpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udHJpYnV0b3IuZW1haWxzLCBbJ2piZWRhcmRAYXBwbGUu
Y29tJ10pCiAKKyAgICBkZWYgdGVzdF9zaG9ydF9zdm5fbG9nKHNlbGYpOgorICAgICAgICBDb250
cmlidXRvci5jbGVhcigpCisgICAgICAgIGNvbnRyaWJ1dG9yID0gQ29udHJpYnV0b3IuZnJvbV9z
Y21fbG9nKCdyMjY2NzUxIHwgamJlZGFyZEBhcHBsZS5jb20gfCAyMDIwLTA5LTA4IDE0OjMzOjQy
IC0wNzAwIChUdWUsIDA4IFNlcCAyMDIwKSB8IDEgbGluZScpCisKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjb250cmlidXRvci5uYW1lLCAnamJlZGFyZEBhcHBsZS5jb20nKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGNvbnRyaWJ1dG9yLmVtYWlscywgWydqYmVkYXJkQGFwcGxlLmNvbSdd
KQorCiAgICAgZGVmIHRlc3Rfc3ZuX3BhdGNoX2J5X2xvZyhzZWxmKToKICAgICAgICAgQ29udHJp
YnV0b3IuY2xlYXIoKQogICAgICAgICBjb250cmlidXRvciA9IENvbnRyaWJ1dG9yLmZyb21fc2Nt
X2xvZygnUGF0Y2ggYnkgSm9uYXRoYW4gQmVkYXJkIDxqYmVkYXJkQGFwcGxlLmNvbT4gb24gMjAy
MC0wOS0xMCcpCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJr
aXRzY21weS90ZXN0L2dpdF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2dpdF91bml0dGVzdC5weQko
cmV2aXNpb24gMjY4MDE0KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkv
d2Via2l0c2NtcHkvdGVzdC9naXRfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTU1LDEw
ICs1NSwxMCBAQCBjbGFzcyBUZXN0R2l0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobG9jYWwuR2l0KHNlbGYucGF0aCkucmVtb3RlKCksIHJlcG8ucmVt
b3RlKQogCiAgICAgZGVmIHRlc3RfYnJhbmNoZXMoc2VsZik6Ci0gICAgICAgIHdpdGggbW9ja3Mu
bG9jYWwuR2l0KHNlbGYucGF0aCwgYnJhbmNoZXM9KCdicmFuY2gtMScsICdicmFuY2gtMicsICdy
ZW1vdGVzL29yaWdpbi9icmFuY2gtMycpKToKKyAgICAgICAgd2l0aCBtb2Nrcy5sb2NhbC5HaXQo
c2VsZi5wYXRoLCBicmFuY2hlcz0oJ3JlbW90ZXMvb3JpZ2luL2JyYW5jaC0zJywpKToKICAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICAgICAgbG9jYWwuR2l0KHNlbGYu
cGF0aCkuYnJhbmNoZXMsCi0gICAgICAgICAgICAgICAgWydtYWluJywgJ2JyYW5jaC0xJywgJ2Jy
YW5jaC0yJywgJ2JyYW5jaC0zJ10sCisgICAgICAgICAgICAgICAgWydicmFuY2gtMycsICdicmFu
Y2gtYScsICdicmFuY2gtYicsICdtYWluJ10sCiAgICAgICAgICAgICApCiAKICAgICBkZWYgdGVz
dF90YWdzKHNlbGYpOgpAQCAtODYsMTEgKzg2LDEzMiBAQCBjbGFzcyBUZXN0R2l0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMobG9jYWwuR2l0
LkV4Y2VwdGlvbik6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWN0KCksIGxv
Y2FsLkdpdChzZWxmLnBhdGgpLmluZm8oKSkKIAotICAgICAgICB3aXRoIG1vY2tzLmxvY2FsLkdp
dChzZWxmLnBhdGgsIGdpdF9zdm49VHJ1ZSksIE1vY2tUaW1lLCBMb2dnZXJDYXB0dXJlKCk6Ci0g
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICB3aXRoIG1vY2tzLmxvY2FsLkdp
dChzZWxmLnBhdGgsIGdpdF9zdm49VHJ1ZSksIE1vY2tUaW1lOgorICAgICAgICAgICAgc2VsZi5h
c3NlcnREaWN0RXF1YWwoCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAn
UGF0aCc6ICcuJywKICAgICAgICAgICAgICAgICAgICAgJ1JlcG9zaXRvcnkgUm9vdCc6ICdnaXRA
d2Via2l0Lm9yZzovbW9jay9yZXBvc2l0b3J5JywKICAgICAgICAgICAgICAgICAgICAgJ1VSTCc6
ICdnaXRAd2Via2l0Lm9yZzovbW9jay9yZXBvc2l0b3J5L21haW4nLAorICAgICAgICAgICAgICAg
ICAgICAnUmV2aXNpb24nOiAnNicsCisgICAgICAgICAgICAgICAgICAgICdOb2RlIEtpbmQnOiAn
ZGlyZWN0b3J5JywKKyAgICAgICAgICAgICAgICAgICAgJ1NjaGVkdWxlJzogJ25vcm1hbCcsCisg
ICAgICAgICAgICAgICAgICAgICdMYXN0IENoYW5nZWQgQXV0aG9yJzogJ2piZWRhcmRAYXBwbGUu
Y29tJywKKyAgICAgICAgICAgICAgICAgICAgJ0xhc3QgQ2hhbmdlZCBSZXYnOiAnNicsCisgICAg
ICAgICAgICAgICAgICAgICdMYXN0IENoYW5nZWQgRGF0ZSc6ICcyMDIwLTEwLTAyIDExOjU2OjQw
JywKICAgICAgICAgICAgICAgICB9LCBsb2NhbC5HaXQoc2VsZi5wYXRoKS5pbmZvKCksCiAgICAg
ICAgICAgICApCisKKyAgICBkZWYgdGVzdF9jb21taXRfcmV2aXNpb24oc2VsZik6CisgICAgICAg
IHdpdGggbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCksIE1vY2tUaW1lLCBMb2dnZXJDYXB0dXJl
KCk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGxvY2FsLkdpdC5FeGNlcHRp
b24pOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgbG9jYWwuR2l0KHNl
bGYucGF0aCkuY29tbWl0KHJldmlzaW9uPTEpKQorCisgICAgICAgIHdpdGggbW9ja3MubG9jYWwu
R2l0KHNlbGYucGF0aCwgZ2l0X3N2bj1UcnVlKSwgTW9ja1RpbWUsIExvZ2dlckNhcHR1cmUoKToK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzFAbWFpbicsIHN0cihsb2NhbC5HaXQoc2Vs
Zi5wYXRoKS5jb21taXQocmV2aXNpb249MSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnMkBtYWluJywgc3RyKGxvY2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdChyZXZpc2lvbj0yKSkp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcyLjFAYnJhbmNoLWEnLCBzdHIobG9jYWwu
R2l0KHNlbGYucGF0aCkuY29tbWl0KHJldmlzaW9uPTMpKSkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJzNAbWFpbicsIHN0cihsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQocmV2aXNp
b249NCkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMi4yQGJyYW5jaC1iJywgc3Ry
KGxvY2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdChyZXZpc2lvbj01KSkpCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCc0QG1haW4nLCBzdHIobG9jYWwuR2l0KHNlbGYucGF0aCkuY29tbWl0
KHJldmlzaW9uPTYpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzIuMkBicmFuY2gt
YScsIHN0cihsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQocmV2aXNpb249NykpKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMi4zQGJyYW5jaC1iJywgc3RyKGxvY2FsLkdpdChzZWxm
LnBhdGgpLmNvbW1pdChyZXZpc2lvbj04KSkpCisKKyAgICAgICAgICAgICMgT3V0LW9mLWJvdW5k
cyBjb21taXQKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMobG9jYWwuR2l0LkV4
Y2VwdGlvbik6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBsb2NhbC5H
aXQoc2VsZi5wYXRoKS5jb21taXQocmV2aXNpb249MTApKQorCisgICAgZGVmIHRlc3RfY29tbWl0
X2hhc2goc2VsZik6CisgICAgICAgIGZvciBtb2NrIGluIFttb2Nrcy5sb2NhbC5HaXQoc2VsZi5w
YXRoKSwgbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCwgZ2l0X3N2bj1UcnVlKV06CisgICAgICAg
ICAgICB3aXRoIG1vY2ssIE1vY2tUaW1lLCBMb2dnZXJDYXB0dXJlKCk6CisgICAgICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnMUBtYWluJywgc3RyKGxvY2FsLkdpdChzZWxmLnBhdGgpLmNv
bW1pdChoYXNoPSc5YjgzMTFmMicpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCcyQG1haW4nLCBzdHIobG9jYWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KGhhc2g9J2ZmZjgzYmIy
JykpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzNAbWFpbicsIHN0cihsb2Nh
bC5HaXQoc2VsZi5wYXRoKS5jb21taXQoaGFzaD0nMWFiZTI1YjQnKSkpCisgICAgICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnNEBtYWluJywgc3RyKGxvY2FsLkdpdChzZWxmLnBhdGgpLmNv
bW1pdChoYXNoPSdiYWU1ZDFlOScpKSkKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJzIuMUBicmFuY2gtYScsIHN0cihsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQoaGFzaD0n
YTMwY2U4NDknKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMi4yQGJyYW5j
aC1hJywgc3RyKGxvY2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdChoYXNoPSc2MjE2NTJhZCcpKSkK
KworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzIuMkBicmFuY2gtYicsIHN0cihs
b2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQoaGFzaD0nM2NkMzJlMzUnKSkpCisgICAgICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMi4zQGJyYW5jaC1iJywgc3RyKGxvY2FsLkdpdChzZWxm
LnBhdGgpLmNvbW1pdChoYXNoPSc3OTA3MjVhNicpKSkKKworICAgIGRlZiB0ZXN0X2NvbW1pdF9m
cm9tX2JyYW5jaChzZWxmKToKKyAgICAgICAgZm9yIG1vY2sgaW4gW21vY2tzLmxvY2FsLkdpdChz
ZWxmLnBhdGgpLCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoLCBnaXRfc3ZuPVRydWUpXToKKyAg
ICAgICAgICAgIHdpdGggbW9jaywgTW9ja1RpbWUsIExvZ2dlckNhcHR1cmUoKToKKyAgICAgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCc0QG1haW4nLCBzdHIobG9jYWwuR2l0KHNlbGYucGF0
aCkuY29tbWl0KGJyYW5jaD0nbWFpbicpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCcyLjJAYnJhbmNoLWEnLCBzdHIobG9jYWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KGJyYW5j
aD0nYnJhbmNoLWEnKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMi4zQGJy
YW5jaC1iJywgc3RyKGxvY2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdChicmFuY2g9J2JyYW5jaC1i
JykpKQorCisgICAgZGVmIHRlc3RfaWRlbnRpZmllcihzZWxmKToKKyAgICAgICAgZm9yIG1vY2sg
aW4gW21vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgpLCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRo
LCBnaXRfc3ZuPVRydWUpXToKKyAgICAgICAgICAgIHdpdGggbW9jaywgTW9ja1RpbWUsIExvZ2dl
ckNhcHR1cmUoKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgICAgICAgICAnOWI4MzExZjI1YTc3YmExNDkyM2Q5ZDVhNjUzMjEwM2Y1NGFiZWZjYicsCisg
ICAgICAgICAgICAgICAgICAgIGxvY2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdChpZGVudGlmaWVy
PScxQG1haW4nKS5oYXNoLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICAgICAnZmZmODNiYjJkOTE3MWI0ZDkxOTZl
OTc3ZWIwNTA4ZmQ1N2U3YTA4ZCcsCisgICAgICAgICAgICAgICAgICAgIGxvY2FsLkdpdChzZWxm
LnBhdGgpLmNvbW1pdChpZGVudGlmaWVyPScyQG1haW4nKS5oYXNoLAorICAgICAgICAgICAgICAg
ICkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICAg
ICAnMWFiZTI1YjQ0M2U5ODVmOTNiOTBkODMwZTRhN2UzNzMxMzM2YWY0ZCcsCisgICAgICAgICAg
ICAgICAgICAgIGxvY2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdChpZGVudGlmaWVyPSczQG1haW4n
KS5oYXNoLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAorICAgICAgICAgICAgICAgICAgICAnYmFlNWQxZTkwOTk5ZDRmOTE2YThhMTU4MTBjY2Zh
NDNmMzdhMmZkNicsCisgICAgICAgICAgICAgICAgICAgIGxvY2FsLkdpdChzZWxmLnBhdGgpLmNv
bW1pdChpZGVudGlmaWVyPSc0QG1haW4nKS5oYXNoLAorICAgICAgICAgICAgICAgICkKKworICAg
ICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgICAgICdhMzBj
ZTg0OTRiZjFhYzI4MDdhNjk4NDRmNzI2YmU0YTk4NDNjYTU1JywKKyAgICAgICAgICAgICAgICAg
ICAgbG9jYWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KGlkZW50aWZpZXI9JzIuMUBicmFuY2gtYScp
Lmhhc2gsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICAgICAgICAgICc2MjE2NTJhZGQ3ZmM0MTYwOTliZDIwNjMzNjZjYzM4
ZmY2MWFmZTM2JywKKyAgICAgICAgICAgICAgICAgICAgbG9jYWwuR2l0KHNlbGYucGF0aCkuY29t
bWl0KGlkZW50aWZpZXI9JzIuMkBicmFuY2gtYScpLmhhc2gsCisgICAgICAgICAgICAgICAgKQor
CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAg
JzNjZDMyZTM1MjQxMDU2NWJiNTQzODIxZmJmODU2YTZkM2NhYWQxYzQnLAorICAgICAgICAgICAg
ICAgICAgICBsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQoaWRlbnRpZmllcj0nMi4yQGJyYW5j
aC1iJykuaGFzaCwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgJzc5MDcyNWE2ZDc5ZTI4ZGIyZWNkZGUyOTU0
OGQyMjYyYzBiZDA1OWQnLAorICAgICAgICAgICAgICAgICAgICBsb2NhbC5HaXQoc2VsZi5wYXRo
KS5jb21taXQoaWRlbnRpZmllcj0nMi4zQGJyYW5jaC1iJykuaGFzaCwKKyAgICAgICAgICAgICAg
ICApCisKKyAgICBkZWYgdGVzdF9ub25fY2Fubm9uaWNhbF9pZGVudGlmaWVycyhzZWxmKToKKyAg
ICAgICAgZm9yIG1vY2sgaW4gW21vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgpLCBtb2Nrcy5sb2Nh
bC5HaXQoc2VsZi5wYXRoLCBnaXRfc3ZuPVRydWUpXToKKyAgICAgICAgICAgIHdpdGggbW9jaywg
TW9ja1RpbWUsIExvZ2dlckNhcHR1cmUoKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCcyQG1haW4nLCBzdHIobG9jYWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KGlkZW50aWZpZXI9
JzBAYnJhbmNoLWEnKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMUBtYWlu
Jywgc3RyKGxvY2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdChpZGVudGlmaWVyPSctMUBicmFuY2gt
YScpKSkKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzIuMUBicmFuY2gtYScs
IHN0cihsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQoaWRlbnRpZmllcj0nMi4xQGJyYW5jaC1i
JykpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzJAbWFpbicsIHN0cihsb2Nh
bC5HaXQoc2VsZi5wYXRoKS5jb21taXQoaWRlbnRpZmllcj0nMEBicmFuY2gtYicpKSkKKyAgICAg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxQG1haW4nLCBzdHIobG9jYWwuR2l0KHNlbGYu
cGF0aCkuY29tbWl0KGlkZW50aWZpZXI9Jy0xQGJyYW5jaC1iJykpKQorCisgICAgZGVmIHRlc3Rf
Z2l0X3N2bl9yZXZpc2lvbl9leHRyYWN0KHNlbGYpOgorICAgICAgICB3aXRoIG1vY2tzLmxvY2Fs
LkdpdChzZWxmLnBhdGgsIGdpdF9zdm49VHJ1ZSksIE1vY2tUaW1lLCBMb2dnZXJDYXB0dXJlKCk6
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxvY2FsLkdpdChzZWxmLnBhdGgpLmNv
bW1pdChoYXNoPSc5YjgzMTFmMicpLnJldmlzaW9uKQorCisgICAgZGVmIHRlc3RfYnJhbmNoZXNf
cHJpb3JpdHkoc2VsZik6CisgICAgICAgIGZvciBtb2NrIGluIFttb2Nrcy5sb2NhbC5HaXQoc2Vs
Zi5wYXRoKSwgbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCwgZ2l0X3N2bj1UcnVlKV06CisgICAg
ICAgICAgICB3aXRoIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgpOgorICAgICAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgICAgICdtYWluJywKKyAgICAgICAg
ICAgICAgICAgICAgbG9jYWwuR2l0KHNlbGYucGF0aCkucHJpb3JpdGl6ZV9icmFuY2hlcyhbJ21h
aW4nLCAnYnJhbmNoLWEnLCAnZGV2LzEyMzQ1JywgJ3NhZmFyaS02MTAtYnJhbmNoJywgJ3NhZmFy
aS02MTAuMS1icmFuY2gnXSkKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICAgICAnc2FmYXJpLTYxMC1icmFuY2gn
LAorICAgICAgICAgICAgICAgICAgICBsb2NhbC5HaXQoc2VsZi5wYXRoKS5wcmlvcml0aXplX2Jy
YW5jaGVzKFsnYnJhbmNoLWEnLCAnZGV2LzEyMzQ1JywgJ3NhZmFyaS02MTAtYnJhbmNoJywgJ3Nh
ZmFyaS02MTAuMS1icmFuY2gnXSkKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICAgICAnc2FmYXJpLTYxMC4xLWJy
YW5jaCcsCisgICAgICAgICAgICAgICAgICAgIGxvY2FsLkdpdChzZWxmLnBhdGgpLnByaW9yaXRp
emVfYnJhbmNoZXMoWydicmFuY2gtYScsICdkZXYvMTIzNDUnLCAnc2FmYXJpLTYxMC4xLWJyYW5j
aCddKQorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICAgICAgICAgICdicmFuY2gtYScsCisgICAgICAgICAgICAgICAgICAg
IGxvY2FsLkdpdChzZWxmLnBhdGgpLnByaW9yaXRpemVfYnJhbmNoZXMoWydicmFuY2gtYScsICdk
ZXYvMTIzNDUnXSkKKyAgICAgICAgICAgICAgICApCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L3NjbV91bml0dGVzdC5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90
ZXN0L3NjbV91bml0dGVzdC5weQkocmV2aXNpb24gMjY4MDE0KQorKysgVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9zY21fdW5pdHRlc3QucHkJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDMgKzQ0LDIzIEBAIGNsYXNzIFRlc3RTY20odW5pdHRlc3QuVGVz
dENhc2UpOgogICAgIGRlZiB0ZXN0X3JlbW90ZShzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmFz
c2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yKToKICAgICAgICAgICAgIGxvY2FsLlNjbShz
ZWxmLnBhdGgpLnJlbW90ZSgpCisKKyAgICBkZWYgdGVzdF9kZXZfYnJhbmNoZXMoc2VsZik6Cisg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2NhbC5TY20uREVWX0JSQU5DSEVTLm1hdGNoKCdlbmcv
MTIzNCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobG9jYWwuU2NtLkRFVl9CUkFOQ0hFUy5t
YXRjaCgnamJlZGFyZC9lbmcvMTIzNCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobG9jYWwu
U2NtLkRFVl9CUkFOQ0hFUy5tYXRjaCgnZGV2LzEyMzQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGxvY2FsLlNjbS5ERVZfQlJBTkNIRVMubWF0Y2goJ2piZWRhcmQvZGV2LzEyMzQnKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvY2FsLlNjbS5ERVZfQlJBTkNIRVMubWF0Y2goJ2J1Zy8x
MjM0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2NhbC5TY20uREVWX0JSQU5DSEVTLm1h
dGNoKCdqYmVkYXJkL2J1Zy8xMjM0JykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsb2Nh
bC5TY20uREVWX0JSQU5DSEVTLm1hdGNoKCdtYWluJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UobG9jYWwuU2NtLkRFVl9CUkFOQ0hFUy5tYXRjaCgncmFuZG9tLzEyMzQnKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRGYWxzZShsb2NhbC5TY20uREVWX0JSQU5DSEVTLm1hdGNoKCdvdGhlci8xMjM0
JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9jYWwuU2NtLkRFVl9CUkFOQ0hFUy5tYXRj
aCgnc2FmYXJpLTYwNi1icmFuY2gnKSkKKworICAgIGRlZiB0ZXN0X3Byb2RfYnJhbmNoZXMoc2Vs
Zik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2NhbC5TY20uUFJPRF9CUkFOQ0hFUy5tYXRj
aCgnc2FmYXJpLTYxMC1icmFuY2gnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvY2FsLlNj
bS5QUk9EX0JSQU5DSEVTLm1hdGNoKCdzYWZhcmktNjEwLjEtYnJhbmNoJykpCisKKyAgICAgICAg
c2VsZi5hc3NlcnRGYWxzZShsb2NhbC5TY20uUFJPRF9CUkFOQ0hFUy5tYXRjaCgnbWFpbicpKQor
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxvY2FsLlNjbS5QUk9EX0JSQU5DSEVTLm1hdGNoKCdl
bmcvMTIzNCcpKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvdGVzdC9zdm5fdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9zdm5fdW5pdHRlc3QucHkJ
KHJldmlzaW9uIDI2ODAxNCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L3Rlc3Qvc3ZuX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMSw4
ICsyMSwxMSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBpbXBvcnQgb3MKK2ltcG9ydCBzaHV0aWwKK2lt
cG9ydCB0ZW1wZmlsZQogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9y
dCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBsb2NhbCwgbW9ja3MKIAog
CkBAIC01Myw3ICs1Niw3IEBAIGNsYXNzIFRlc3RTdm4odW5pdHRlc3QuVGVzdENhc2UpOgogICAg
ICAgICB3aXRoIG1vY2tzLmxvY2FsLlN2bihzZWxmLnBhdGgsIGJyYW5jaGVzPSgnYnJhbmNoLTEn
LCAnYnJhbmNoLTInKSk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAg
ICAgICAgIGxvY2FsLlN2bihzZWxmLnBhdGgpLmJyYW5jaGVzLAotICAgICAgICAgICAgICAgIFsn
dHJ1bmsnLCAnYnJhbmNoLTEnLCAnYnJhbmNoLTInXSwKKyAgICAgICAgICAgICAgICBbJ3RydW5r
JywgJ2JyYW5jaC0xJywgJ2JyYW5jaC0yJywgJ2JyYW5jaC1hJywgJ2JyYW5jaC1iJ10sCiAgICAg
ICAgICAgICApCiAKICAgICBkZWYgdGVzdF90YWdzKHNlbGYpOgpAQCAtNzEsMyArNzQsMTI0IEBA
IGNsYXNzIFRlc3RTdm4odW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICB3aXRoIG1vY2tzLmxv
Y2FsLlN2bihzZWxmLnBhdGgpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvY2FsLlN2
bihzZWxmLnBhdGgpLmlzX3N2bikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9jYWwu
U3ZuKHNlbGYucGF0aCkuaXNfZ2l0KQorCisgICAgZGVmIHRlc3RfaW5mbyhzZWxmKToKKyAgICAg
ICAgd2l0aCBtb2Nrcy5sb2NhbC5Tdm4oc2VsZi5wYXRoKToKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RGljdEVxdWFsKAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdSdQ
YXRoJzogdScuJywKKyAgICAgICAgICAgICAgICAgICAgdSdXb3JraW5nIENvcHkgUm9vdCBQYXRo
JzogdScvbW9jay9yZXBvc2l0b3J5JywKKyAgICAgICAgICAgICAgICAgICAgdSdSZXBvc2l0b3J5
IFJvb3QnOiB1J2h0dHBzOi8vc3ZuLm1vY2sub3JnL3JlcG9zaXRvcnkvcmVwb3NpdG9yeScsCisg
ICAgICAgICAgICAgICAgICAgIHUnVVJMJzogdSdodHRwczovL3N2bi5tb2NrLm9yZy9yZXBvc2l0
b3J5L3JlcG9zaXRvcnkvdHJ1bmsnLAorICAgICAgICAgICAgICAgICAgICB1J1JlbGF0aXZlIFVS
TCc6ICB1J14vdHJ1bmsnLAorICAgICAgICAgICAgICAgICAgICB1J1JldmlzaW9uJzogdSc2JywK
KyAgICAgICAgICAgICAgICAgICAgdSdOb2RlS2luZCc6IHUnZGlyZWN0b3J5JywKKyAgICAgICAg
ICAgICAgICAgICAgdSdTY2hlZHVsZSc6IHUnbm9ybWFsJywKKyAgICAgICAgICAgICAgICAgICAg
dSdMYXN0IENoYW5nZWQgQXV0aG9yJzogdSdqYmVkYXJkQGFwcGxlLmNvbScsCisgICAgICAgICAg
ICAgICAgICAgIHUnTGFzdCBDaGFuZ2VkIFJldic6IHUnNicsCisgICAgICAgICAgICAgICAgICAg
IHUnTGFzdCBDaGFuZ2VkIERhdGUnOiB1JzIwMjAtMTAtMDIgMTE6NTg6MjAgLTAxMDAgKEZyaSwg
MDIgT2N0IDIwMjApJywKKyAgICAgICAgICAgICAgICB9LCBsb2NhbC5Tdm4oc2VsZi5wYXRoKS5p
bmZvKCksCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9jb21taXRfcmV2aXNpb24oc2Vs
Zik6CisgICAgICAgIHdpdGggbW9ja3MubG9jYWwuU3ZuKHNlbGYucGF0aCksIE91dHB1dENhcHR1
cmUoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzFAdHJ1bmsnLCBzdHIobG9jYWwu
U3ZuKHNlbGYucGF0aCkuY29tbWl0KHJldmlzaW9uPTEpKSkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJzJAdHJ1bmsnLCBzdHIobG9jYWwuU3ZuKHNlbGYucGF0aCkuY29tbWl0KHJldmlz
aW9uPTIpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzIuMUBicmFuY2gtYScsIHN0
cihsb2NhbC5Tdm4oc2VsZi5wYXRoKS5jb21taXQocmV2aXNpb249MykpKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnM0B0cnVuaycsIHN0cihsb2NhbC5Tdm4oc2VsZi5wYXRoKS5jb21t
aXQocmV2aXNpb249NCkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMi4yQGJyYW5j
aC1iJywgc3RyKGxvY2FsLlN2bihzZWxmLnBhdGgpLmNvbW1pdChyZXZpc2lvbj01KSkpCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCc0QHRydW5rJywgc3RyKGxvY2FsLlN2bihzZWxmLnBh
dGgpLmNvbW1pdChyZXZpc2lvbj02KSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcy
LjJAYnJhbmNoLWEnLCBzdHIobG9jYWwuU3ZuKHNlbGYucGF0aCkuY29tbWl0KHJldmlzaW9uPTcp
KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzIuM0BicmFuY2gtYicsIHN0cihsb2Nh
bC5Tdm4oc2VsZi5wYXRoKS5jb21taXQocmV2aXNpb249OCkpKQorCisgICAgICAgICAgICAjIE91
dC1vZi1ib3VuZHMgY29tbWl0CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGxv
Y2FsLlN2bi5FeGNlcHRpb24pOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9u
ZSwgbG9jYWwuU3ZuKHNlbGYucGF0aCkuY29tbWl0KHJldmlzaW9uPTEwKSkKKworICAgIGRlZiB0
ZXN0X2NvbW1pdF9mcm9tX2JyYW5jaChzZWxmKToKKyAgICAgICAgd2l0aCBtb2Nrcy5sb2NhbC5T
dm4oc2VsZi5wYXRoKSwgT3V0cHV0Q2FwdHVyZSgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnNEB0cnVuaycsIHN0cihsb2NhbC5Tdm4oc2VsZi5wYXRoKS5jb21taXQoYnJhbmNoPSd0
cnVuaycpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzIuMkBicmFuY2gtYScsIHN0
cihsb2NhbC5Tdm4oc2VsZi5wYXRoKS5jb21taXQoYnJhbmNoPSdicmFuY2gtYScpKSkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzIuM0BicmFuY2gtYicsIHN0cihsb2NhbC5Tdm4oc2Vs
Zi5wYXRoKS5jb21taXQoYnJhbmNoPSdicmFuY2gtYicpKSkKKworICAgIGRlZiB0ZXN0X2lkZW50
aWZpZXIoc2VsZik6CisgICAgICAgIHdpdGggbW9ja3MubG9jYWwuU3ZuKHNlbGYucGF0aCksIE91
dHB1dENhcHR1cmUoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbG9jYWwuU3Zu
KHNlbGYucGF0aCkuY29tbWl0KGlkZW50aWZpZXI9JzFAdHJ1bmsnKS5yZXZpc2lvbikKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbG9jYWwuU3ZuKHNlbGYucGF0aCkuY29tbWl0KGlk
ZW50aWZpZXI9JzJAdHJ1bmsnKS5yZXZpc2lvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoMywgbG9jYWwuU3ZuKHNlbGYucGF0aCkuY29tbWl0KGlkZW50aWZpZXI9JzIuMUBicmFuY2gt
YScpLnJldmlzaW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0LCBsb2NhbC5Tdm4o
c2VsZi5wYXRoKS5jb21taXQoaWRlbnRpZmllcj0nM0B0cnVuaycpLnJldmlzaW9uKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCg1LCBsb2NhbC5Tdm4oc2VsZi5wYXRoKS5jb21taXQoaWRl
bnRpZmllcj0nMi4yQGJyYW5jaC1iJykucmV2aXNpb24pCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDYsIGxvY2FsLlN2bihzZWxmLnBhdGgpLmNvbW1pdChpZGVudGlmaWVyPSc0QHRydW5r
JykucmV2aXNpb24pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDcsIGxvY2FsLlN2bihz
ZWxmLnBhdGgpLmNvbW1pdChpZGVudGlmaWVyPScyLjJAYnJhbmNoLWEnKS5yZXZpc2lvbikKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoOCwgbG9jYWwuU3ZuKHNlbGYucGF0aCkuY29tbWl0
KGlkZW50aWZpZXI9JzIuM0BicmFuY2gtYicpLnJldmlzaW9uKQorCisgICAgZGVmIHRlc3Rfbm9u
X2Nhbm5vbmljYWxfaWRlbnRpZmllcnMoc2VsZik6CisgICAgICAgIHdpdGggbW9ja3MubG9jYWwu
U3ZuKHNlbGYucGF0aCksIE91dHB1dENhcHR1cmUoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJzJAdHJ1bmsnLCBzdHIobG9jYWwuU3ZuKHNlbGYucGF0aCkuY29tbWl0KGlkZW50aWZp
ZXI9JzBAYnJhbmNoLWEnKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxQHRydW5r
Jywgc3RyKGxvY2FsLlN2bihzZWxmLnBhdGgpLmNvbW1pdChpZGVudGlmaWVyPSctMUBicmFuY2gt
YScpKSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMkB0cnVuaycsIHN0cihsb2Nh
bC5Tdm4oc2VsZi5wYXRoKS5jb21taXQoaWRlbnRpZmllcj0nMEBicmFuY2gtYicpKSkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzFAdHJ1bmsnLCBzdHIobG9jYWwuU3ZuKHNlbGYucGF0
aCkuY29tbWl0KGlkZW50aWZpZXI9Jy0xQGJyYW5jaC1iJykpKQorCisgICAgZGVmIHRlc3RfYnJh
bmNoZXNfcHJpb3JpdHkoc2VsZik6CisgICAgICAgIHdpdGggbW9ja3MubG9jYWwuU3ZuKHNlbGYu
cGF0aCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICd0
cnVuaycsCisgICAgICAgICAgICAgICAgbG9jYWwuU3ZuKHNlbGYucGF0aCkucHJpb3JpdGl6ZV9i
cmFuY2hlcyhbJ3RydW5rJywgJ2JyYW5jaC1hJywgJ2Rldi8xMjM0NScsICdzYWZhcmktNjEwLWJy
YW5jaCcsICdzYWZhcmktNjEwLjEtYnJhbmNoJ10pCisgICAgICAgICAgICApCisKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgJ3NhZmFyaS02MTAtYnJhbmNo
JywKKyAgICAgICAgICAgICAgICBsb2NhbC5Tdm4oc2VsZi5wYXRoKS5wcmlvcml0aXplX2JyYW5j
aGVzKFsnYnJhbmNoLWEnLCAnZGV2LzEyMzQ1JywgJ3NhZmFyaS02MTAtYnJhbmNoJywgJ3NhZmFy
aS02MTAuMS1icmFuY2gnXSkKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgICAgICAnc2FmYXJpLTYxMC4xLWJyYW5jaCcsCisgICAgICAg
ICAgICAgICAgbG9jYWwuU3ZuKHNlbGYucGF0aCkucHJpb3JpdGl6ZV9icmFuY2hlcyhbJ2JyYW5j
aC1hJywgJ2Rldi8xMjM0NScsICdzYWZhcmktNjEwLjEtYnJhbmNoJ10pCisgICAgICAgICAgICAp
CisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgJ2JyYW5j
aC1hJywKKyAgICAgICAgICAgICAgICBsb2NhbC5Tdm4oc2VsZi5wYXRoKS5wcmlvcml0aXplX2Jy
YW5jaGVzKFsnYnJhbmNoLWEnLCAnZGV2LzEyMzQ1J10pCisgICAgICAgICAgICApCisKKyAgICBk
ZWYgdGVzdF9ub19uZXR3b3JrKHNlbGYpOgorICAgICAgICB3aXRoIG1vY2tzLmxvY2FsLlN2bihz
ZWxmLnBhdGgpIGFzIG1vY2tfcmVwbywgT3V0cHV0Q2FwdHVyZSgpOgorICAgICAgICAgICAgcmVw
byA9IGxvY2FsLlN2bihzZWxmLnBhdGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCc0
QHRydW5rJywgc3RyKHJlcG8uY29tbWl0KCkpKQorCisgICAgICAgICAgICBtb2NrX3JlcG8uY29u
bmVjdGVkID0gRmFsc2UKKyAgICAgICAgICAgIGNvbW1pdCA9IHJlcG8uY29tbWl0KCkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzRAdHJ1bmsnLCBzdHIoY29tbWl0KSkKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoNiwgY29tbWl0LnJldmlzaW9uKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChOb25lLCBjb21taXQubWVzc2FnZSkKKworICAgICAgICAgICAgY29tbWl0
ID0gcmVwby5jb21taXQocmV2aXNpb249NCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
JzNAdHJ1bmsnLCBzdHIoY29tbWl0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9u
ZSwgY29tbWl0Lm1lc3NhZ2UpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
bG9jYWwuU3ZuLkV4Y2VwdGlvbik6CisgICAgICAgICAgICAgICAgcmVwby5jb21taXQocmV2aXNp
b249MykKKworICAgICAgICAgICAgbW9ja19yZXBvLmNvbm5lY3RlZCA9IFRydWUKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzIuMUBicmFuY2gtYScsIHN0cihyZXBvLmNvbW1pdChyZXZp
c2lvbj0zKSkpCisKKyAgICAgICAgICAgIG1vY2tfcmVwby5jb25uZWN0ZWQgPSBGYWxzZQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMi4xQGJyYW5jaC1hJywgc3RyKHJlcG8uY29tbWl0
KHJldmlzaW9uPTMpKSkKKworICAgIGRlZiB0ZXN0X2NhY2hlKHNlbGYpOgorICAgICAgICB0cnk6
CisgICAgICAgICAgICBkaXJuYW1lID0gdGVtcGZpbGUubWtkdGVtcCgpCisgICAgICAgICAgICB3
aXRoIG1vY2tzLmxvY2FsLlN2bihkaXJuYW1lKSBhcyBtb2NrX3JlcG8sIE91dHB1dENhcHR1cmUo
KToKKyAgICAgICAgICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oZGlybmFtZSwgJy5zdm4n
KSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCc0QHRydW5rJywgc3RyKGxvY2Fs
LlN2bihkaXJuYW1lKS5jb21taXQoKSkpCisKKyAgICAgICAgICAgICAgICBtb2NrX3JlcG8uY29u
bmVjdGVkID0gRmFsc2UKKyAgICAgICAgICAgICAgICBjb21taXQgPSBsb2NhbC5Tdm4oZGlybmFt
ZSkuY29tbWl0KCkKKyAgICAgICAgICAgICAgICBwcmludChjb21taXQucmV2aXNpb24pCisgICAg
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnNEB0cnVuaycsIHN0cihjb21taXQpKQorCisg
ICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhsb2NhbC5Tdm4uRXhjZXB0aW9u
KToKKyAgICAgICAgICAgICAgICAgICAgbG9jYWwuU3ZuKGRpcm5hbWUpLmNvbW1pdChyZXZpc2lv
bj0zKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShkaXJuYW1l
KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>