<?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>225616</bug_id>
          
          <creation_ts>2021-05-10 14:36:43 -0700</creation_ts>
          <short_desc>[webkitscmpy] Cache identifiers in Git checkouts</short_desc>
          <delta_ts>2021-07-16 10:19:57 -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=226891</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=225889</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=227082</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=227150</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=227313</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=227327</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=228000</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=228027</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>
          
          <blocked>225986</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Dean Johnson">dean_johnson</assigned_to>
          <cc>dean_johnson</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1758649</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-05-10 14:36:43 -0700</bug_when>
    <thetext>We need to create an identifier cache fast enough for use by `git log` and `git blame`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758650</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-10 14:37:00 -0700</bug_when>
    <thetext>&lt;rdar://problem/77789230&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758656</commentid>
    <comment_count>2</comment_count>
      <attachid>428204</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-05-10 14:47:24 -0700</bug_when>
    <thetext>Created attachment 428204
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758910</commentid>
    <comment_count>3</comment_count>
      <attachid>428279</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-05-11 08:28:17 -0700</bug_when>
    <thetext>Created attachment 428279
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759098</commentid>
    <comment_count>4</comment_count>
      <attachid>428327</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-05-11 16:31:34 -0700</bug_when>
    <thetext>Created attachment 428327
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762114</commentid>
    <comment_count>5</comment_count>
    <who name="Dean Johnson">dean_johnson</who>
    <bug_when>2021-05-20 13:31:16 -0700</bug_when>
    <thetext>Taking this from Jonathan since we&apos;ve been iterating on this together and I&apos;ve got a new patch to upload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762118</commentid>
    <comment_count>6</comment_count>
      <attachid>429213</attachid>
    <who name="Dean Johnson">dean_johnson</who>
    <bug_when>2021-05-20 13:53:40 -0700</bug_when>
    <thetext>Created attachment 429213
Add identifiers cache</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762120</commentid>
    <comment_count>7</comment_count>
      <attachid>429215</attachid>
    <who name="Dean Johnson">dean_johnson</who>
    <bug_when>2021-05-20 13:58:41 -0700</bug_when>
    <thetext>Created attachment 429215
Add identifiers cache v2

Fixed a couple test failures caused by refactoring. Still need to figure out how to correctly handle remotes for these tests:

[1806/1995] webkitscmpy.test.canonicalize_unittest.TestCanonicalize.test_branch_commits failed:
  Traceback (most recent call last):
    File &quot;/Volumes/Data/dean-home/Projects/Safari/OpenSource/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/canonicalize_unittest.py&quot;, line 199, in test_branch_commits
      self.assertEqual(commit_a.message, &apos;New commit 1\nIdentifier: 2.3@branch-a&apos;)
  AssertionError: &apos;New commit 1\nIdentifier: 2.4@branch-a&apos; != &apos;New commit 1\nIdentifier: 2.3@branch-a&apos;
    New commit 1
  - Identifier: 2.4@branch-a?               ^
  + Identifier: 2.3@branch-a?               ^


[1823/1995] webkitscmpy.test.checkout_unittest.TestCheckout.test_checkout_git_svn failed:
  Traceback (most recent call last):
    File &quot;/Volumes/Data/dean-home/Projects/Safari/OpenSource/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/checkout_unittest.py&quot;, line 62, in test_checkout_git_svn
      self.assertEqual(&apos;621652add7fc416099bd2063366cc38ff61afe36&apos;, local.Git(self.path).commit().hash)
  AssertionError: &apos;621652add7fc416099bd2063366cc38ff61afe36&apos; != &apos;fff83bb2d9171b4d9196e977eb0508fd57e7a08d&apos;
  - 621652add7fc416099bd2063366cc38ff61afe36
  + fff83bb2d9171b4d9196e977eb0508fd57e7a08d

And how to handle the broken SVN detection test:

[153/1995] webkitpy.common.checkout.scm.detection_unittest.SCMDetectorTest.test_detect_scm_system failed:
  Traceback (most recent call last):
    File &quot;/Volumes/Data/dean-home/Projects/Safari/OpenSource/Tools/Scripts/webkitpy/common/checkout/scm/detection_unittest.py&quot;, line 49, in test_detect_scm_system
      self.assertEqual(
  AssertionError: &quot;MOCK run_command: [&apos;git&apos;, &apos;rev-parse&apos;, &apos;--is-inside-work-tree&apos;], cwd=/\n&quot; != &quot;MOCK run_command: [&apos;svn&apos;, &apos;info&apos;], cwd=/\nMOCK run_command: [[49 chars]=/\n&quot;
  + MOCK run_command: [&apos;svn&apos;, &apos;info&apos;], cwd=/
    MOCK run_command: [&apos;git&apos;, &apos;rev-parse&apos;, &apos;--is-inside-work-tree&apos;], cwd=/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762122</commentid>
    <comment_count>8</comment_count>
      <attachid>429217</attachid>
    <who name="Dean Johnson">dean_johnson</who>
    <bug_when>2021-05-20 14:00:36 -0700</bug_when>
    <thetext>Created attachment 429217
Identifiers cache v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773197</commentid>
    <comment_count>9</comment_count>
      <attachid>432420</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-06-28 14:29:41 -0700</bug_when>
    <thetext>Created attachment 432420
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773233</commentid>
    <comment_count>10</comment_count>
      <attachid>432420</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-06-28 15:33:10 -0700</bug_when>
    <thetext>Comment on attachment 432420
Patch

A high-level comment: This ends up being a 3-4x improvement on `git-webkit` commands in most cases. Where it&apos;s really important, though, is in `git log` and `git blame`, which will come in a later patch. Without this cache, implementations of those two commands would be extremely slow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773542</commentid>
    <comment_count>11</comment_count>
      <attachid>432528</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-06-29 14:12:07 -0700</bug_when>
    <thetext>Created attachment 432528
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773898</commentid>
    <comment_count>12</comment_count>
      <attachid>432528</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-06-30 15:19:02 -0700</bug_when>
    <thetext>Comment on attachment 432528
Patch

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

r=me

&gt; Tools/Scripts/libraries/webkitscmpy/webkitscmpy/local/git.py:51
&gt; +            if os.path.exists(self.path):

Maybe we can do
``
if not os.path.exists(self.path):
    return
``
to avoid indentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773932</commentid>
    <comment_count>13</comment_count>
      <attachid>432642</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-06-30 16:26:15 -0700</bug_when>
    <thetext>Created attachment 432642
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773954</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-30 17:16:25 -0700</bug_when>
    <thetext>Committed r279445 (239301@main): &lt;https://commits.webkit.org/239301@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 432642.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774259</commentid>
    <comment_count>15</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-07-01 15:13:24 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774260</commentid>
    <comment_count>16</comment_count>
      <attachid>432729</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-07-01 15:13:25 -0700</bug_when>
    <thetext>Created attachment 432729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774262</commentid>
    <comment_count>17</comment_count>
      <attachid>432729</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-07-01 15:17:06 -0700</bug_when>
    <thetext>Comment on attachment 432729
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774265</commentid>
    <comment_count>18</comment_count>
      <attachid>432732</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-07-01 15:24:33 -0700</bug_when>
    <thetext>Created attachment 432732
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774310</commentid>
    <comment_count>19</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-07-01 17:20:57 -0700</bug_when>
    <thetext>Committed r279488 (239340@main): &lt;https://commits.webkit.org/239340@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428204</attachid>
            <date>2021-05-10 14:47:24 -0700</date>
            <delta_ts>2021-05-11 08:28:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225616-20210510144724.patch</filename>
            <type>text/plain</type>
            <size>15835</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3NzI5NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMwIEBACisyMDIxLTA1LTEwICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0c2NtcHldIENhY2hlIGlkZW50aWZpZXJzIGluIEdpdCBjaGVj
a291dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NTYxNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzc3ODkyMzA+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0lQLgorCisgICAgICAgICogU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5OgorICAgICAg
ICAoR2l0LkNhY2hlKTogQ2xhc3MgaG9sZGluZyBhIGNhY2hlIGFsbG93aW5nIHF1aWNrIG1hcHBp
bmcgYmV0d2VlbiBoYXNoZXMsIGlkZW50aWZpZXJzIGFuZCByZXZpc2lvbnMuCisgICAgICAgIChH
aXQuQ2FjaGUuX19pbml0X18pOiBMb2FkIGNhY2hlIGZyb20ganNvbiBmaWxlIG9uIGRpc2suCisg
ICAgICAgIChHaXQuQ2FjaGUuX2ZpbGwpOiBQb3B1bGF0ZSByZXZpc2lvbiBhbmQgaGFzaCB0byBp
ZGVudGlmaWVyIGRpY3Rpb25hcmllcy4KKyAgICAgICAgKEdpdC5DYWNoZS5faW5zZXJ0KTogSW5z
ZXJ0IGhhc2ggYW5kIHJldmlzaW9uIGludG8gY2FjaGUgZm9yIGJyYW5jaC4KKyAgICAgICAgKEdp
dC5DYWNoZS5wYXRoKTogUGF0aCB0byBsb2NhdGlvbiBvZiBjYWNoZSBvbiBkaXNrLgorICAgICAg
ICAoR2l0LkNhY2hlLnBvcHVsYXRlKTogUGFyc2UgZ2l0LWxvZyBhbmQgcG9wdWxhdGUgY2FjaGUu
CisgICAgICAgIChHaXQuQ2FjaGUucmV2aXNpb24pOiBHaXZlbiBhbiBpZGVudGlmaWVyIG9yIGhh
c2gsIGZpbmQgdGhlIHJldmlzaW9uLgorICAgICAgICAoR2l0LkNhY2hlLmhhc2gpOiBHaXZlbiBh
biBpZGVudGlmaWVyIG9yIHJldmlzaW9uLCBmaW5kIHRoZSBhc2guCisgICAgICAgIChHaXQuQ2Fj
aGUuaWRlbnRpZmllcik6IEdpdmVuIGEgaGFzaCBvciByZXZpc2lvbiwgZGV0ZXJtaW5lIHRoZSBp
ZGVudGlmaWVyLgorICAgICAgICAoR2l0Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9naXQucHk6CisgICAg
ICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9naXRf
dW5pdHRlc3QucHk6CisgICAgICAgIChUZXN0R2l0LnRlc3RfY2FjaGUpOgorICAgICAgICAoVGVz
dEdpdCk6CisgICAgICAgIChUZXN0R2l0LnRlc3RfcmV2aXNpb25fY2FjaGUpOgorCiAyMDIxLTA1
LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gUGFn
ZXMgd2l0aCBzZXJ2aWNlIHdvcmtlcnMgZG8gbm90IHN1c3BlbmQgcHJvbXB0bHkKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL2dpdC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJr
aXRzY21weS9sb2NhbC9naXQucHkJKHJldmlzaW9uIDI3NzI2MikKKysrIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL2dpdC5weQkod29ya2luZyBj
b3B5KQpAQCAtMjEsNiArMjEsNyBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBpbXBvcnQgY2FsZW5kYXIK
K2ltcG9ydCBqc29uCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiBpbXBvcnQgcmUKQEAgLTM5
LDYgKzQwLDE4OSBAQCBmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBDb21taXQsIENvbnRyaWJ1CiBj
bGFzcyBHaXQoU2NtKToKICAgICBHSVRfQ09NTUlUID0gcmUuY29tcGlsZShyJ2NvbW1pdCAoP1A8
aGFzaD5bMC05YS1mXSspJykKIAorICAgIGNsYXNzIENhY2hlKG9iamVjdCk6CisgICAgICAgIEhB
U0hfU0laRSA9IDEyCisKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcG8pOgorICAgICAg
ICAgICAgc2VsZi5yZXBvID0gcmVwbworCisgICAgICAgICAgICBzZWxmLl9vcmRlcmVkX2NvbW1p
dHMgPSB7fQorICAgICAgICAgICAgc2VsZi5faGFzaF90b19pZGVudGlmaWVycyA9IHt9CisgICAg
ICAgICAgICBzZWxmLl9vcmRlcmVkX3JldmlzaW9ucyA9IHt9CisgICAgICAgICAgICBzZWxmLl9y
ZXZpc2lvbnNfdG9faWRlbnRpZmllcnMgPSB7fQorCisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4
aXN0cyhzZWxmLnBhdGgpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAg
ICAgd2l0aCBvcGVuKHNlbGYucGF0aCkgYXMgZmlsZToKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRlbnQgPSBqc29uLmxvYWQoZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
X29yZGVyZWRfY29tbWl0cyA9IGNvbnRlbnRbJ2hhc2hlcyddCisgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9vcmRlcmVkX3JldmlzaW9ucyA9IGNvbnRlbnRbJ3JldmlzaW9ucyddCisKKyAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fZmlsbChzZWxmLnJlcG8uZGVmYXVsdF9icmFuY2gpCisg
ICAgICAgICAgICAgICAgICAgIGZvciBicmFuY2ggaW4gc2VsZi5fb3JkZXJlZF9jb21taXRzLmtl
eXMoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGJyYW5jaCA9PSBzZWxmLnJlcG8uZGVm
YXVsdF9icmFuY2g6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGwoYnJhbmNoKQorCisgICAgICAgICAgICAgICAg
ZXhjZXB0IEJhc2VFeGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAg
ICBkZWYgX2ZpbGwoc2VsZiwgYnJhbmNoKToKKyAgICAgICAgICAgIGlmIGJyYW5jaCA9PSBzZWxm
LnJlcG8uZGVmYXVsdF9icmFuY2g6CisgICAgICAgICAgICAgICAgYnJhbmNoX3BvaW50ID0gTm9u
ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBicmFuY2hfcG9pbnQgPSBpbnQo
c2VsZi5faGFzaF90b19pZGVudGlmaWVyc1tzZWxmLl9vcmRlcmVkX2NvbW1pdHNbYnJhbmNoXVsw
XVs6c2VsZi5IQVNIX1NJWkVdXS5zcGxpdCgnQCcpWzBdKQorCisgICAgICAgICAgICBpbmRleCA9
IGxlbihzZWxmLl9vcmRlcmVkX2NvbW1pdHNbYnJhbmNoXSkgLSAxCisgICAgICAgICAgICB3aGls
ZSBpbmRleDoKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9vcmRlcmVkX2NvbW1pdHNbYnJhbmNo
XVtpbmRleF0gaW4gc2VsZi5faGFzaF90b19pZGVudGlmaWVyczoKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWsKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gJ3t9QHt9Jy5mb3JtYXQoJ3t9
Lnt9Jy5mb3JtYXQoYnJhbmNoX3BvaW50LCBpbmRleCkgaWYgYnJhbmNoX3BvaW50IGVsc2UgaW5k
ZXgsIGJyYW5jaCkKKyAgICAgICAgICAgICAgICBzZWxmLl9oYXNoX3RvX2lkZW50aWZpZXJzW3Nl
bGYuX29yZGVyZWRfY29tbWl0c1ticmFuY2hdW2luZGV4XVs6c2VsZi5IQVNIX1NJWkVdXSA9IGlk
ZW50aWZpZXIKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9vcmRlcmVkX3JldmlzaW9uc1ticmFu
Y2hdW2luZGV4XToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmV2aXNpb25zX3RvX2lkZW50
aWZpZXJzW3NlbGYuX29yZGVyZWRfcmV2aXNpb25zW2JyYW5jaF1baW5kZXhdXSA9IGlkZW50aWZp
ZXIKKyAgICAgICAgICAgICAgICBpbmRleCAtPSAxCisKKyAgICAgICAgZGVmIF9pbnNlcnQoc2Vs
Ziwgb3JkZXIsIGJyYW5jaCwgaGFzaCwgcmV2aXNpb249Tm9uZSk6CisgICAgICAgICAgICBpZiBo
YXNoWzpzZWxmLkhBU0hfU0laRV0gaW4gc2VsZi5faGFzaF90b19pZGVudGlmaWVyczoKKyAgICAg
ICAgICAgICAgICBpbnRlcnNlY3QgPSBvcmRlcgorICAgICAgICAgICAgICAgIHdoaWxlIGhhc2gg
IT0gc2VsZi5fb3JkZXJlZF9jb21taXRzW2JyYW5jaF1baW50ZXJzZWN0XSBhbmQgaW50ZXJzZWN0
OgorICAgICAgICAgICAgICAgICAgICBpbnRlcnNlY3QgLT0gMQorICAgICAgICAgICAgICAgIGlm
IG5vdCBpbnRlcnNlY3Q6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX29yZGVyZWRfY29tbWl0
c1ticmFuY2hdLmluc2VydCgwLCBoYXNoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcmRl
cmVkX3JldmlzaW9uc1ticmFuY2hdLmluc2VydCgwLCByZXZpc2lvbikKKyAgICAgICAgICAgICAg
ICBzZWxmLl9vcmRlcmVkX2NvbW1pdHNbYnJhbmNoXSA9IHNlbGYuX29yZGVyZWRfY29tbWl0c1ti
cmFuY2hdWzppbnRlcnNlY3QgKyAxXSArIHNlbGYuX29yZGVyZWRfY29tbWl0c1ticmFuY2hdW29y
ZGVyICsgMTpdCisgICAgICAgICAgICAgICAgc2VsZi5fb3JkZXJlZF9yZXZpc2lvbnNbYnJhbmNo
XSA9IHNlbGYuX29yZGVyZWRfcmV2aXNpb25zW2JyYW5jaF1bOmludGVyc2VjdCArIDFdICsgc2Vs
Zi5fb3JkZXJlZF9yZXZpc2lvbnNbYnJhbmNoXVtvcmRlciArIDE6XQorICAgICAgICAgICAgICAg
IHJldHVybiBUcnVlCisKKyAgICAgICAgICAgIHNlbGYuX29yZGVyZWRfY29tbWl0c1ticmFuY2hd
Lmluc2VydChvcmRlciwgaGFzaCkKKyAgICAgICAgICAgIHNlbGYuX29yZGVyZWRfcmV2aXNpb25z
W2JyYW5jaF0uaW5zZXJ0KG9yZGVyLCByZXZpc2lvbikKKyAgICAgICAgICAgIHJldHVybiBGYWxz
ZQorCisgICAgICAgIEBwcm9wZXJ0eQorICAgICAgICBkZWYgcGF0aChzZWxmKToKKyAgICAgICAg
ICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2VsZi5yZXBvLnJvb3RfcGF0aCwgJy5naXQnLCAnaWRl
bnRpZmllcnMuanNvbicpCisKKyAgICAgICAgZGVmIHBvcHVsYXRlKHNlbGYsIGJyYW5jaD1Ob25l
KToKKyAgICAgICAgICAgIGJyYW5jaCA9IGJyYW5jaCBvciBzZWxmLnJlcG8uYnJhbmNoCisgICAg
ICAgICAgICBpc19kZWZhdWx0X2JyYW5jaCA9IGJyYW5jaCA9PSBzZWxmLnJlcG8uZGVmYXVsdF9i
cmFuY2gKKyAgICAgICAgICAgIGlmIGJyYW5jaCBub3QgaW4gc2VsZi5fb3JkZXJlZF9jb21taXRz
OgorICAgICAgICAgICAgICAgIHNlbGYuX29yZGVyZWRfY29tbWl0c1ticmFuY2hdID0gWycnXSBp
ZiBpc19kZWZhdWx0X2JyYW5jaCBlbHNlIFtdCisgICAgICAgICAgICAgICAgc2VsZi5fb3JkZXJl
ZF9yZXZpc2lvbnNbYnJhbmNoXSA9IFsnJ10gaWYgaXNfZGVmYXVsdF9icmFuY2ggZWxzZSBbXQor
CisgICAgICAgICAgICAjIElmIHdlIGFyZW4ndCBvbiB0aGUgZGVmYXVsdCBicmFuY2gsIHdlIHdp
bGwgbmVlZCB0aGUgZGVmYXVsdCBicmFuY2ggdG8gZGV0ZXJtaW5lIHdoZW4KKyAgICAgICAgICAg
ICMgb3VyICBicmFuY2ggIGludGVyc2VjdHMgd2l0aCB0aGUgZGVmYXVsdCBicmFuY2guCisgICAg
ICAgICAgICBpZiBub3QgaXNfZGVmYXVsdF9icmFuY2g6CisgICAgICAgICAgICAgICAgc2VsZi5w
b3B1bGF0ZShicmFuY2g9c2VsZi5yZXBvLmRlZmF1bHRfYnJhbmNoKQorCisgICAgICAgICAgICBs
b2cgPSBOb25lCisgICAgICAgICAgICBvcmRlciA9IGxlbihzZWxmLl9vcmRlcmVkX2NvbW1pdHNb
YnJhbmNoXSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBrd2FyZ3MgPSBkaWN0
KCkKKyAgICAgICAgICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCAwKToKKyAgICAg
ICAgICAgICAgICAgICAga3dhcmdzID0gZGljdChlbmNvZGluZz0ndXRmLTgnKQorCisgICAgICAg
ICAgICAgICAgbG9nID0gc3VicHJvY2Vzcy5Qb3BlbigKKyAgICAgICAgICAgICAgICAgICAgW3Nl
bGYucmVwby5leGVjdXRhYmxlKCksICdsb2cnLCBicmFuY2hdLAorICAgICAgICAgICAgICAgICAg
ICBjd2Q9c2VsZi5yZXBvLnJvb3RfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1
YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQ
RSwKKyAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MKKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICAgICAgaWYgbG9nLnBvbGwoKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc2Vs
Zi5yZXBvLkV4Y2VwdGlvbigiRmFpbGVkIHRvIGNvbnN0cnVjdCBicmFuY2ggaGlzdG9yeSBmb3Ig
J3t9JyIuZm9ybWF0KGJyYW5jaCkpCisKKyAgICAgICAgICAgICAgICBoYXNoID0gTm9uZQorICAg
ICAgICAgICAgICAgIHJldmlzaW9uID0gTm9uZQorCisgICAgICAgICAgICAgICAgbGluZSA9IGxv
Zy5zdGRvdXQucmVhZGxpbmUoKQorICAgICAgICAgICAgICAgIHdoaWxlIGxpbmU6CisgICAgICAg
ICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnICAgIGdpdC1zdm4taWQ6ICcpOgorICAg
ICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBzZWxmLnJlcG8uR0lUX1NWTl9SRVZJU0lPTi5t
YXRjaChsaW5lLmxzdHJpcCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbWF0Y2g6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2aXNpb24gPSBpbnQobWF0Y2guZ3JvdXAoJ3Jl
dmlzaW9uJykpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lLnN0YXJ0c3dpdGgoJ2Nv
bW1pdCAnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsb2cuc3Rkb3V0LnJlYWRs
aW5lKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAg
ICAgICAgaWYgaGFzaCBhbmQgc2VsZi5faW5zZXJ0KG9yZGVyLCBicmFuY2gsIGhhc2gsIHJldmlz
aW9uPXJldmlzaW9uKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhc2ggPSBOb25lCisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICAgICAgICAgIGhhc2ggPSBs
aW5lLnNwbGl0KCcgJylbMV0ucnN0cmlwKCkKKyAgICAgICAgICAgICAgICAgICAgcmV2aXNpb24g
PSBOb25lCisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsb2cuc3Rkb3V0LnJlYWRsaW5lKCkK
KworICAgICAgICAgICAgICAgIGlmIGhhc2g6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lu
c2VydChvcmRlciwgYnJhbmNoLCBoYXNoLCByZXZpc2lvbj1yZXZpc2lvbikKKworICAgICAgICAg
ICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBpZiBsb2c6CisgICAgICAgICAgICAgICAgICAg
IGxvZy5raWxsKCkKKworICAgICAgICAgICAgc2VsZi5fZmlsbChicmFuY2gpCisKKyAgICAgICAg
ICAgIGlmIG9yZGVyID09IGxlbihzZWxmLl9vcmRlcmVkX2NvbW1pdHNbYnJhbmNoXSk6CisgICAg
ICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB3
aXRoIG9wZW4oc2VsZi5wYXRoLCAndycpIGFzIGZpbGU6CisgICAgICAgICAgICAgICAgICAgIGpz
b24uZHVtcChkaWN0KAorICAgICAgICAgICAgICAgICAgICAgICAgaGFzaGVzPXNlbGYuX29yZGVy
ZWRfY29tbWl0cywKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldmlzaW9ucz1zZWxmLl9vcmRl
cmVkX3JldmlzaW9ucywKKyAgICAgICAgICAgICAgICAgICAgKSwgZmlsZSwgaW5kZW50PTQpCisg
ICAgICAgICAgICBleGNlcHQgKElPRXJyb3IsIE9TRXJyb3IsIEZpbGVOb3RGb3VuZEVycm9yKToK
KyAgICAgICAgICAgICAgICBzZWxmLnJlcG8ubG9nKCJGYWlsZWQgdG8gd3JpdGUgaWRlbnRpZmll
ciBjYWNoZSB0byAne30nIi5mb3JtYXQoc2VsZi5wYXRoKSkKKworICAgICAgICBkZWYgcmV2aXNp
b24oc2VsZiwgYXJndW1lbnQsIHBvcHVsYXRlPVRydWUpOgorICAgICAgICAgICAgaWYgQ29tbWl0
Ll9wYXJzZV9oYXNoKGFyZ3VtZW50LCBkb19hc3NlcnQ9RmFsc2UpOgorICAgICAgICAgICAgICAg
IGFyZ3VtZW50ID0gc2VsZi5pZGVudGlmaWVyKGFyZ3VtZW50LCBwb3B1bGF0ZT1wb3B1bGF0ZSkK
KyAgICAgICAgICAgIHBhcnRzID0gQ29tbWl0Ll9wYXJzZV9pZGVudGlmaWVyKGFyZ3VtZW50LCBk
b19hc3NlcnQ9RmFsc2UpCisgICAgICAgICAgICBpZiBub3QgcGFydHM6CisgICAgICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIF8sIGlkZW50aWZpZXIsIGJyYW5jaCA9IHBhcnRz
CisgICAgICAgICAgICBpZiBicmFuY2ggbm90IGluIHNlbGYuX29yZGVyZWRfcmV2aXNpb25zIG9y
IGxlbihzZWxmLl9vcmRlcmVkX3JldmlzaW9uc1ticmFuY2hdKSA8PSBpZGVudGlmaWVyOgorICAg
ICAgICAgICAgICAgIGlmIHBvcHVsYXRlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnBvcHVs
YXRlKGJyYW5jaD1icmFuY2gpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnJldmlz
aW9uKGFyZ3VtZW50LCBwb3B1bGF0ZT1GYWxzZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9u
ZQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX29yZGVyZWRfcmV2aXNpb25zW2JyYW5jaF1baWRl
bnRpZmllcl0KKworICAgICAgICBkZWYgaGFzaChzZWxmLCBhcmd1bWVudCwgcG9wdWxhdGU9VHJ1
ZSk6CisgICAgICAgICAgICBpZiBDb21taXQuX3BhcnNlX3JldmlzaW9uKGFyZ3VtZW50LCBkb19h
c3NlcnQ9RmFsc2UpOgorICAgICAgICAgICAgICAgIGFyZ3VtZW50ID0gc2VsZi5pZGVudGlmaWVy
KGFyZ3VtZW50LCBwb3B1bGF0ZT1wb3B1bGF0ZSkKKyAgICAgICAgICAgIHBhcnRzID0gQ29tbWl0
Ll9wYXJzZV9pZGVudGlmaWVyKGFyZ3VtZW50LCBkb19hc3NlcnQ9RmFsc2UpCisgICAgICAgICAg
ICBpZiBub3QgcGFydHM6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAg
IF8sIGlkZW50aWZpZXIsIGJyYW5jaCA9IHBhcnRzCisgICAgICAgICAgICBpZiBicmFuY2ggbm90
IGluIHNlbGYuX29yZGVyZWRfY29tbWl0cyBvciBsZW4oc2VsZi5fb3JkZXJlZF9jb21taXRzW2Jy
YW5jaF0pIDw9IGlkZW50aWZpZXI6CisgICAgICAgICAgICAgICAgaWYgcG9wdWxhdGU6CisgICAg
ICAgICAgICAgICAgICAgIHNlbGYucG9wdWxhdGUoYnJhbmNoPWJyYW5jaCkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHNlbGYuaGFzaChhcmd1bWVudCwgcG9wdWxhdGU9RmFsc2UpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9vcmRlcmVk
X2NvbW1pdHNbYnJhbmNoXVtpZGVudGlmaWVyXQorCisgICAgICAgIGRlZiBpZGVudGlmaWVyKHNl
bGYsIGFyZ3VtZW50LCBwb3B1bGF0ZT1UcnVlKToKKyAgICAgICAgICAgIHJldmlzaW9uID0gQ29t
bWl0Ll9wYXJzZV9yZXZpc2lvbihhcmd1bWVudCwgZG9fYXNzZXJ0PUZhbHNlKQorICAgICAgICAg
ICAgaWYgcmV2aXNpb246CisgICAgICAgICAgICAgICAgaWYgcmV2aXNpb24gaW4gc2VsZi5fcmV2
aXNpb25zX3RvX2lkZW50aWZpZXJzOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5f
cmV2aXNpb25zX3RvX2lkZW50aWZpZXJzW3JldmlzaW9uXQorICAgICAgICAgICAgICAgIGlmIHBv
cHVsYXRlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnBvcHVsYXRlKCkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHNlbGYuaWRlbnRpZmllcihhcmd1bWVudCwgcG9wdWxhdGU9RmFsc2Up
CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAgICAgaGFzaCA9IENvbW1p
dC5fcGFyc2VfaGFzaChhcmd1bWVudCwgZG9fYXNzZXJ0PUZhbHNlKQorICAgICAgICAgICAgaWYg
aGFzaDoKKyAgICAgICAgICAgICAgICBpZiBoYXNoWzpzZWxmLkhBU0hfU0laRV0gaW4gc2VsZi5f
aGFzaF90b19pZGVudGlmaWVyczoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2hh
c2hfdG9faWRlbnRpZmllcnNbaGFzaFs6c2VsZi5IQVNIX1NJWkVdXQorICAgICAgICAgICAgICAg
IGlmIHBvcHVsYXRlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnBvcHVsYXRlKCkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuaWRlbnRpZmllcihhcmd1bWVudCwgcG9wdWxhdGU9
RmFsc2UpCisKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKwogICAgIEBjbGFzc21ldGhvZAog
ICAgIEBkZWNvcmF0b3JzLk1lbW9pemUoKQogICAgIGRlZiBleGVjdXRhYmxlKGNscyk6CkBAIC01
Myw2ICsyMzcsOCBAQCBjbGFzcyBHaXQoU2NtKToKICAgICAgICAgaWYgbm90IHNlbGYucm9vdF9w
YXRoOgogICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignUHJvdmlkZWQgcGF0aCB7fSBpcyBub3Qg
YSBnaXQgcmVwb3NpdG9yeScuZm9ybWF0KHBhdGgpKQogCisgICAgICAgIHNlbGYuY2FjaGUgPSBH
aXQuQ2FjaGUoc2VsZikKKwogICAgIEBkZWNvcmF0b3JzLk1lbW9pemUoY2FjaGVkPUZhbHNlKQog
ICAgIGRlZiBpbmZvKHNlbGYpOgogICAgICAgICBpZiBub3Qgc2VsZi5pc19zdm46CkluZGV4OiBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2Nh
bC9naXQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2Nt
cHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwvZ2l0LnB5CShyZXZpc2lvbiAyNzcyNjIpCisrKyBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2Nh
bC9naXQucHkJKHdvcmtpbmcgY29weSkKQEAgLTI0MSw2ICsyNDEsMzEgQEAgbm90aGluZyB0byBj
b21taXQsIHdvcmtpbmcgdHJlZSBjbGVhbgogICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAg
ICAgICAgICAgICAgICApIGlmIHNlbGYuZmluZChhcmdzWzJdKSBlbHNlIG1vY2tzLlByb2Nlc3ND
b21wbGV0aW9uKHJldHVybmNvZGU9MTI4KSwKICAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nl
c3MuUm91dGUoCisgICAgICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLCAnbG9nJywgcmUuY29t
cGlsZShyJy4rJyksCisgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKKyAgICAgICAgICAg
ICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogbW9ja3MuUHJvY2Vzc0NvbXBs
ZXRpb24oCisgICAgICAgICAgICAgICAgICAgIHJldHVybmNvZGU9MCwKKyAgICAgICAgICAgICAg
ICAgICAgc3Rkb3V0PSdcbicuam9pbihbCisgICAgICAgICAgICAgICAgICAgICAgICAnY29tbWl0
IHtoYXNofVxuJworICAgICAgICAgICAgICAgICAgICAgICAgJ0F1dGhvcjogICAgIHthdXRob3J9
IDx7ZW1haWx9PlxuJworICAgICAgICAgICAgICAgICAgICAgICAgJ0RhdGU6ICAgICAgIHtkYXRl
fVxuJworICAgICAgICAgICAgICAgICAgICAgICAgJ1xue2xvZ30nLmZvcm1hdCgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBoYXNoPWNvbW1pdC5oYXNoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGF1dGhvcj1jb21taXQuYXV0aG9yLm5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZW1haWw9Y29tbWl0LmF1dGhvci5lbWFpbCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRlPWRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoY29tbWl0LnRpbWVzdGFtcCAr
IHRpbWUudGltZXpvbmUpLnN0cmZ0aW1lKCclYSAlYiAlZCAlSDolTTolUyAlWSArMDAwMCcpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZz0nXG4nLmpvaW4oWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoJyAgICAnICsgbGluZSkgaWYgbGluZSBlbHNlICcnIGZvciBs
aW5lIGluIGNvbW1pdC5tZXNzYWdlLnNwbGl0bGluZXMoKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0gKyAoWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGdpdC1z
dm4taWQ6IGh0dHBzOi8vc3ZuLnt9L3JlcG9zaXRvcnkve30vdHJ1bmtAe30gMjY4ZjQ1Y2MtY2Qw
OS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjJy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLnJlbW90ZS5zcGxpdCgnQCcpWy0xXS5zcGxpdCgnOicpWzBdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5iYXNlbmFtZShwYXRo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdC5yZXZpc2lvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICApXSBpZiBnaXRfc3ZuIGVsc2UgW10pLAorICAg
ICAgICAgICAgICAgICAgICAgICAgKSkgZm9yIGNvbW1pdCBpbiBzZWxmLmNvbW1pdHNfaW5fcmFu
Z2UoTm9uZSwgYXJnc1syXSkKKyAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAogICAgICAgICAgICAg
ICAgIHNlbGYuZXhlY3V0YWJsZSwgJ2xvZycsICctLWZvcm1hdD1mdWxsZXInLCByZS5jb21waWxl
KHInLitcLlwuXC4uKycpLAogICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCiAgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yPWxhbWJkYSAqYXJncywgKiprd2FyZ3M6IG1vY2tzLlByb2Nlc3ND
b21wbGV0aW9uKApAQCAtMjYyLDcgKzI4Nyw3IEBAIG5vdGhpbmcgdG8gY29tbWl0LCB3b3JraW5n
IHRyZWUgY2xlYW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBnaXQtc3Zu
LWlkOiBodHRwczovL3N2bi57fS9yZXBvc2l0b3J5L3t9L3RydW5rQHt9IDI2OGY0NWNjLWNkMDkt
MDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYycuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5yZW1vdGUuc3BsaXQoJ0AnKVstMV0uc3BsaXQoJzonKVswXSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5hbWUocGF0aCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdC5yZXZpc2lvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdC5yZXZpc2lvbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICApXSBpZiBnaXRfc3ZuIGVsc2UgW10pLAogICAgICAgICAg
ICAgICAgICAgICAgICAgKSkgZm9yIGNvbW1pdCBpbiBzZWxmLmNvbW1pdHNfaW5fcmFuZ2UoYXJn
c1szXS5zcGxpdCgnLi4uJylbLTFdLCBhcmdzWzNdLnNwbGl0KCcuLi4nKVswXSkKICAgICAgICAg
ICAgICAgICAgICAgXSkKQEAgLTQ5NSw2ICs1MjAsOSBAQCBub3RoaW5nIHRvIGNvbW1pdCwgd29y
a2luZyB0cmVlIGNsZWFuCiAgICAgZGVmIGNvbW1pdHNfaW5fcmFuZ2Uoc2VsZiwgYmVnaW4sIGVu
ZCk6CiAgICAgICAgIGJyYW5jaGVzID0gW3NlbGYuZGVmYXVsdF9icmFuY2hdCiAgICAgICAgIGZv
ciBicmFuY2gsIGNvbW1pdHMgaW4gc2VsZi5jb21taXRzLml0ZW1zKCk6CisgICAgICAgICAgICBp
ZiBicmFuY2ggPT0gZW5kIGFuZCBicmFuY2ggIT0gc2VsZi5kZWZhdWx0X2JyYW5jaDoKKyAgICAg
ICAgICAgICAgICBicmFuY2hlcy5pbnNlcnQoMCwgYnJhbmNoKQorICAgICAgICAgICAgICAgIGJy
ZWFrCiAgICAgICAgICAgICBpZiBicmFuY2ggPT0gc2VsZi5kZWZhdWx0X2JyYW5jaDoKICAgICAg
ICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRzOgpA
QCAtNTA4LDcgKzUzNiw3IEBAIG5vdGhpbmcgdG8gY29tbWl0LCB3b3JraW5nIHRyZWUgY2xlYW4K
ICAgICAgICAgcHJldmlvdXMgPSBOb25lCiAgICAgICAgIGZvciBicmFuY2ggaW4gYnJhbmNoZXM6
CiAgICAgICAgICAgICBmb3IgY29tbWl0IGluIHJldmVyc2VkKHNlbGYuY29tbWl0c1ticmFuY2hd
KToKLSAgICAgICAgICAgICAgICBpZiBjb21taXQuaGFzaCA9PSBlbmQ6CisgICAgICAgICAgICAg
ICAgaWYgY29tbWl0Lmhhc2ggPT0gZW5kIG9yIGNvbW1pdC5icmFuY2ggPT0gZW5kOgogICAgICAg
ICAgICAgICAgICAgICBpbl9yYW5nZSA9IFRydWUKICAgICAgICAgICAgICAgICBpZiBpbl9yYW5n
ZSBhbmQgKG5vdCBwcmV2aW91cyBvciBjb21taXQuaGFzaCAhPSBwcmV2aW91cy5oYXNoKToKICAg
ICAgICAgICAgICAgICAgICAgeWllbGQgY29tbWl0CkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2dpdF91bml0dGVzdC5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90
ZXN0L2dpdF91bml0dGVzdC5weQkocmV2aXNpb24gMjc3MjYyKQorKysgVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9naXRfdW5pdHRlc3QucHkJKHdv
cmtpbmcgY29weSkKQEAgLTMwNSw2ICszMDUsMTggQEAgY2xhc3MgVGVzdEdpdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgICAgIGdpdC5jb21taXQoaGFzaD0nOWI4MzExZjIn
KSwKICAgICAgICAgICAgICAgICBdKSwgQ29tbWl0LkVuY29kZXIoKS5kZWZhdWx0KGxpc3QoZ2l0
LmNvbW1pdHMoYmVnaW49ZGljdChhcmd1bWVudD0nOWI4MzExZjInKSwgZW5kPWRpY3QoYXJndW1l
bnQ9JzYyMTY1MmFkJykpKSkpCiAKKyAgICBkZWYgdGVzdF9jYWNoZShzZWxmKToKKyAgICAgICAg
Zm9yIG1vY2sgaW4gW21vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgpLCBtb2Nrcy5sb2NhbC5HaXQo
c2VsZi5wYXRoLCBnaXRfc3ZuPVRydWUpXToKKyAgICAgICAgICAgIHdpdGggbW9jaywgT3V0cHV0
Q2FwdHVyZSgpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWwuR2l0KHNl
bGYucGF0aCkuY2FjaGUuaGFzaCgnMUBtYWluJyksICc5YjgzMTFmMjVhNzdiYTE0OTIzZDlkNWE2
NTMyMTAzZjU0YWJlZmNiJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2Fs
LkdpdChzZWxmLnBhdGgpLmNhY2hlLmlkZW50aWZpZXIoJ2Q4YmNlMjZmYTY1YycpLCAnNUBtYWlu
JykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsLkdpdChzZWxmLnBhdGgp
LmNhY2hlLmhhc2goJzIuM0BicmFuY2gtYicpLCAnNzkwNzI1YTZkNzllMjhkYjJlY2RkZTI5NTQ4
ZDIyNjJjMGJkMDU5ZCcpCisKKyAgICBkZWYgdGVzdF9yZXZpc2lvbl9jYWNoZShzZWxmKToKKyAg
ICAgICAgd2l0aCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoLCBnaXRfc3ZuPVRydWUpLCBPdXRw
dXRDYXB0dXJlKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsLkdpdChzZWxm
LnBhdGgpLmNhY2hlLnJldmlzaW9uKCcxQG1haW4nKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobG9jYWwuR2l0KHNlbGYucGF0aCkuY2FjaGUuaWRlbnRpZmllcigncjknKSwgJzVA
bWFpbicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsLkdpdChzZWxmLnBhdGgp
LmNhY2hlLmhhc2goJ3I5JyksICdkOGJjZTI2ZmE2NWM2ZmM4ZjM5YzE3OTI3YWJiNzdmNjlmYWI4
MmZjJykKIAogY2xhc3MgVGVzdEdpdEh1Yih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgcmVtb3Rl
ID0gJ2h0dHBzOi8vZ2l0aHViLmV4YW1wbGUuY29tL1dlYktpdC9XZWJLaXQnCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428279</attachid>
            <date>2021-05-11 08:28:17 -0700</date>
            <delta_ts>2021-05-11 16:31:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225616-20210511082816.patch</filename>
            <type>text/plain</type>
            <size>15767</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3NzI5NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMwIEBACisyMDIxLTA1LTEwICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0c2NtcHldIENhY2hlIGlkZW50aWZpZXJzIGluIEdpdCBjaGVj
a291dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NTYxNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzc3ODkyMzA+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0lQLgorCisgICAgICAgICogU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5OgorICAgICAg
ICAoR2l0LkNhY2hlKTogQ2xhc3MgaG9sZGluZyBhIGNhY2hlIGFsbG93aW5nIHF1aWNrIG1hcHBp
bmcgYmV0d2VlbiBoYXNoZXMsIGlkZW50aWZpZXJzIGFuZCByZXZpc2lvbnMuCisgICAgICAgIChH
aXQuQ2FjaGUuX19pbml0X18pOiBMb2FkIGNhY2hlIGZyb20ganNvbiBmaWxlIG9uIGRpc2suCisg
ICAgICAgIChHaXQuQ2FjaGUuX2ZpbGwpOiBQb3B1bGF0ZSByZXZpc2lvbiBhbmQgaGFzaCB0byBp
ZGVudGlmaWVyIGRpY3Rpb25hcmllcy4KKyAgICAgICAgKEdpdC5DYWNoZS5faW5zZXJ0KTogSW5z
ZXJ0IGhhc2ggYW5kIHJldmlzaW9uIGludG8gY2FjaGUgZm9yIGJyYW5jaC4KKyAgICAgICAgKEdp
dC5DYWNoZS5wYXRoKTogUGF0aCB0byBsb2NhdGlvbiBvZiBjYWNoZSBvbiBkaXNrLgorICAgICAg
ICAoR2l0LkNhY2hlLnBvcHVsYXRlKTogUGFyc2UgZ2l0LWxvZyBhbmQgcG9wdWxhdGUgY2FjaGUu
CisgICAgICAgIChHaXQuQ2FjaGUucmV2aXNpb24pOiBHaXZlbiBhbiBpZGVudGlmaWVyIG9yIGhh
c2gsIGZpbmQgdGhlIHJldmlzaW9uLgorICAgICAgICAoR2l0LkNhY2hlLmhhc2gpOiBHaXZlbiBh
biBpZGVudGlmaWVyIG9yIHJldmlzaW9uLCBmaW5kIHRoZSBhc2guCisgICAgICAgIChHaXQuQ2Fj
aGUuaWRlbnRpZmllcik6IEdpdmVuIGEgaGFzaCBvciByZXZpc2lvbiwgZGV0ZXJtaW5lIHRoZSBp
ZGVudGlmaWVyLgorICAgICAgICAoR2l0Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9naXQucHk6CisgICAg
ICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9naXRf
dW5pdHRlc3QucHk6CisgICAgICAgIChUZXN0R2l0LnRlc3RfY2FjaGUpOgorICAgICAgICAoVGVz
dEdpdCk6CisgICAgICAgIChUZXN0R2l0LnRlc3RfcmV2aXNpb25fY2FjaGUpOgorCiAyMDIxLTA1
LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gUGFn
ZXMgd2l0aCBzZXJ2aWNlIHdvcmtlcnMgZG8gbm90IHN1c3BlbmQgcHJvbXB0bHkKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL2dpdC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJr
aXRzY21weS9sb2NhbC9naXQucHkJKHJldmlzaW9uIDI3NzI2MikKKysrIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL2dpdC5weQkod29ya2luZyBj
b3B5KQpAQCAtMjEsNiArMjEsNyBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBpbXBvcnQgY2FsZW5kYXIK
K2ltcG9ydCBqc29uCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiBpbXBvcnQgcmUKQEAgLTM5
LDYgKzQwLDE5NiBAQCBmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBDb21taXQsIENvbnRyaWJ1CiBj
bGFzcyBHaXQoU2NtKToKICAgICBHSVRfQ09NTUlUID0gcmUuY29tcGlsZShyJ2NvbW1pdCAoP1A8
aGFzaD5bMC05YS1mXSspJykKIAorICAgIGNsYXNzIENhY2hlKG9iamVjdCk6CisgICAgICAgIEhB
U0hfU0laRSA9IDEyCisKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcG8pOgorICAgICAg
ICAgICAgc2VsZi5yZXBvID0gcmVwbworCisgICAgICAgICAgICBzZWxmLl9vcmRlcmVkX2NvbW1p
dHMgPSB7fQorICAgICAgICAgICAgc2VsZi5faGFzaF90b19pZGVudGlmaWVycyA9IHt9CisgICAg
ICAgICAgICBzZWxmLl9vcmRlcmVkX3JldmlzaW9ucyA9IHt9CisgICAgICAgICAgICBzZWxmLl9y
ZXZpc2lvbnNfdG9faWRlbnRpZmllcnMgPSB7fQorCisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4
aXN0cyhzZWxmLnBhdGgpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAg
ICAgd2l0aCBvcGVuKHNlbGYucGF0aCkgYXMgZmlsZToKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRlbnQgPSBqc29uLmxvYWQoZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
X29yZGVyZWRfY29tbWl0cyA9IGNvbnRlbnRbJ2hhc2hlcyddCisgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9vcmRlcmVkX3JldmlzaW9ucyA9IGNvbnRlbnRbJ3JldmlzaW9ucyddCisKKyAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fZmlsbChzZWxmLnJlcG8uZGVmYXVsdF9icmFuY2gpCisg
ICAgICAgICAgICAgICAgICAgIGZvciBicmFuY2ggaW4gc2VsZi5fb3JkZXJlZF9jb21taXRzLmtl
eXMoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGJyYW5jaCA9PSBzZWxmLnJlcG8uZGVm
YXVsdF9icmFuY2g6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGwoYnJhbmNoKQorCisgICAgICAgICAgICAgICAg
ZXhjZXB0IEJhc2VFeGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAg
ICBkZWYgX2ZpbGwoc2VsZiwgYnJhbmNoKToKKyAgICAgICAgICAgIGlmIGJyYW5jaCA9PSBzZWxm
LnJlcG8uZGVmYXVsdF9icmFuY2g6CisgICAgICAgICAgICAgICAgYnJhbmNoX3BvaW50ID0gTm9u
ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBicmFuY2hfcG9pbnQgPSBpbnQo
c2VsZi5faGFzaF90b19pZGVudGlmaWVyc1tzZWxmLl9vcmRlcmVkX2NvbW1pdHNbYnJhbmNoXVsw
XVs6c2VsZi5IQVNIX1NJWkVdXS5zcGxpdCgnQCcpWzBdKQorCisgICAgICAgICAgICBpbmRleCA9
IGxlbihzZWxmLl9vcmRlcmVkX2NvbW1pdHNbYnJhbmNoXSkgLSAxCisgICAgICAgICAgICB3aGls
ZSBpbmRleDoKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9vcmRlcmVkX2NvbW1pdHNbYnJhbmNo
XVtpbmRleF0gaW4gc2VsZi5faGFzaF90b19pZGVudGlmaWVyczoKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWsKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gJ3t9QHt9Jy5mb3JtYXQoJ3t9
Lnt9Jy5mb3JtYXQoYnJhbmNoX3BvaW50LCBpbmRleCkgaWYgYnJhbmNoX3BvaW50IGVsc2UgaW5k
ZXgsIGJyYW5jaCkKKyAgICAgICAgICAgICAgICBzZWxmLl9oYXNoX3RvX2lkZW50aWZpZXJzW3Nl
bGYuX29yZGVyZWRfY29tbWl0c1ticmFuY2hdW2luZGV4XVs6c2VsZi5IQVNIX1NJWkVdXSA9IGlk
ZW50aWZpZXIKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9vcmRlcmVkX3JldmlzaW9uc1ticmFu
Y2hdW2luZGV4XToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmV2aXNpb25zX3RvX2lkZW50
aWZpZXJzW3NlbGYuX29yZGVyZWRfcmV2aXNpb25zW2JyYW5jaF1baW5kZXhdXSA9IGlkZW50aWZp
ZXIKKyAgICAgICAgICAgICAgICBpbmRleCAtPSAxCisKKyAgICAgICAgQHByb3BlcnR5CisgICAg
ICAgIGRlZiBwYXRoKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxm
LnJlcG8ucm9vdF9wYXRoLCAnLmdpdCcsICdpZGVudGlmaWVycy5qc29uJykKKworICAgICAgICBk
ZWYgcG9wdWxhdGUoc2VsZiwgYnJhbmNoPU5vbmUpOgorICAgICAgICAgICAgYnJhbmNoID0gYnJh
bmNoIG9yIHNlbGYucmVwby5icmFuY2gKKyAgICAgICAgICAgIGRlZmF1bHRfYnJhbmNoID0gc2Vs
Zi5yZXBvLmRlZmF1bHRfYnJhbmNoCisgICAgICAgICAgICBpc19kZWZhdWx0X2JyYW5jaCA9IGJy
YW5jaCA9PSBkZWZhdWx0X2JyYW5jaAorICAgICAgICAgICAgaWYgYnJhbmNoIG5vdCBpbiBzZWxm
Ll9vcmRlcmVkX2NvbW1pdHM6CisgICAgICAgICAgICAgICAgc2VsZi5fb3JkZXJlZF9jb21taXRz
W2JyYW5jaF0gPSBbJyddIGlmIGlzX2RlZmF1bHRfYnJhbmNoIGVsc2UgW10KKyAgICAgICAgICAg
ICAgICBzZWxmLl9vcmRlcmVkX3JldmlzaW9uc1ticmFuY2hdID0gWzBdIGlmIGlzX2RlZmF1bHRf
YnJhbmNoIGVsc2UgW10KKworICAgICAgICAgICAgIyBJZiB3ZSBhcmVuJ3Qgb24gdGhlIGRlZmF1
bHQgYnJhbmNoLCB3ZSB3aWxsIG5lZWQgdGhlIGRlZmF1bHQgYnJhbmNoIHRvIGRldGVybWluZSB3
aGVuCisgICAgICAgICAgICAjIG91ciAgYnJhbmNoICBpbnRlcnNlY3RzIHdpdGggdGhlIGRlZmF1
bHQgYnJhbmNoLgorICAgICAgICAgICAgaWYgbm90IGlzX2RlZmF1bHRfYnJhbmNoOgorICAgICAg
ICAgICAgICAgIHNlbGYucG9wdWxhdGUoYnJhbmNoPXNlbGYucmVwby5kZWZhdWx0X2JyYW5jaCkK
KworICAgICAgICAgICAgaGFzaGVzID0gW10KKyAgICAgICAgICAgIHJldmlzaW9ucyA9IFtdCisK
KyAgICAgICAgICAgIGRlZiBfYXBwZW5kKGJyYW5jaCwgaGFzaCwgcmV2aXNpb249Tm9uZSk6Cisg
ICAgICAgICAgICAgICAgaGFzaGVzLmFwcGVuZChoYXNoKQorICAgICAgICAgICAgICAgIHJldmlz
aW9ucy5hcHBlbmQocmV2aXNpb24pCisgICAgICAgICAgICAgICAgaWRlbnRpZmllciA9IHNlbGYu
X2hhc2hfdG9faWRlbnRpZmllcnMuZ2V0KGhhc2hbOnNlbGYuSEFTSF9TSVpFXSwgJycpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXIuZW5kc3dpdGgoZGVmYXVsdF9icmFuY2gpIG9y
IGlkZW50aWZpZXIuZW5kc3dpdGgoYnJhbmNoKQorCisgICAgICAgICAgICBpbnRlcnNlY3RlZCA9
IEZhbHNlCisgICAgICAgICAgICBsb2cgPSBOb25lCisgICAgICAgICAgICB0cnk6CisgICAgICAg
ICAgICAgICAga3dhcmdzID0gZGljdCgpCisgICAgICAgICAgICAgICAgaWYgc3lzLnZlcnNpb25f
aW5mbyA+PSAoMywgMCk6CisgICAgICAgICAgICAgICAgICAgIGt3YXJncyA9IGRpY3QoZW5jb2Rp
bmc9J3V0Zi04JykKKworICAgICAgICAgICAgICAgIGxvZyA9IHN1YnByb2Nlc3MuUG9wZW4oCisg
ICAgICAgICAgICAgICAgICAgIFtzZWxmLnJlcG8uZXhlY3V0YWJsZSgpLCAnbG9nJywgYnJhbmNo
XSwKKyAgICAgICAgICAgICAgICAgICAgY3dkPXNlbGYucmVwby5yb290X3BhdGgsCisgICAgICAg
ICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAg
IHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzCisg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGlmIGxvZy5wb2xsKCk6CisgICAgICAg
ICAgICAgICAgICAgIHJhaXNlIHNlbGYucmVwby5FeGNlcHRpb24oIkZhaWxlZCB0byBjb25zdHJ1
Y3QgYnJhbmNoIGhpc3RvcnkgZm9yICd7fSciLmZvcm1hdChicmFuY2gpKQorCisgICAgICAgICAg
ICAgICAgaGFzaCA9IE5vbmUKKyAgICAgICAgICAgICAgICByZXZpc2lvbiA9IE5vbmUKKworICAg
ICAgICAgICAgICAgIGxpbmUgPSBsb2cuc3Rkb3V0LnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAg
ICB3aGlsZSBsaW5lOgorICAgICAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJyAg
ICBnaXQtc3ZuLWlkOiAnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gc2VsZi5y
ZXBvLkdJVF9TVk5fUkVWSVNJT04ubWF0Y2gobGluZS5sc3RyaXAoKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIG1hdGNoOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldmlzaW9u
ID0gaW50KG1hdGNoLmdyb3VwKCdyZXZpc2lvbicpKQorICAgICAgICAgICAgICAgICAgICBpZiBu
b3QgbGluZS5zdGFydHN3aXRoKCdjb21taXQgJyk6CisgICAgICAgICAgICAgICAgICAgICAgICBs
aW5lID0gbG9nLnN0ZG91dC5yZWFkbGluZSgpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZQorCisgICAgICAgICAgICAgICAgICAgIGlmIGhhc2ggYW5kIF9hcHBlbmQoYnJhbmNoLCBo
YXNoLCByZXZpc2lvbj1yZXZpc2lvbik6CisgICAgICAgICAgICAgICAgICAgICAgICBoYXNoID0g
Tm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJzZWN0ZWQgPSBUcnVlCisgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICAgICAgICAgIGhhc2ggPSBsaW5l
LnNwbGl0KCcgJylbMV0ucnN0cmlwKCkKKyAgICAgICAgICAgICAgICAgICAgcmV2aXNpb24gPSBO
b25lCisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsb2cuc3Rkb3V0LnJlYWRsaW5lKCkKKwor
ICAgICAgICAgICAgICAgIGlmIGhhc2g6CisgICAgICAgICAgICAgICAgICAgIGludGVyc2VjdGVk
ID0gX2FwcGVuZChicmFuY2gsIGhhc2gsIHJldmlzaW9uPXJldmlzaW9uKQorCisgICAgICAgICAg
ICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGlmIGxvZzoKKyAgICAgICAgICAgICAgICAgICAg
bG9nLmtpbGwoKQorCisgICAgICAgICAgICBpZiBpbnRlcnNlY3RlZCBhbmQgbGVuKGhhc2hlcykg
PD0gMToKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgaGFzaGVzLnJldmVy
c2UoKQorICAgICAgICAgICAgcmV2aXNpb25zLnJldmVyc2UoKQorCisgICAgICAgICAgICBvcmRl
ciA9IGxlbihzZWxmLl9vcmRlcmVkX2NvbW1pdHMpIC0gMQorICAgICAgICAgICAgd2hpbGUgb3Jk
ZXI6CisgICAgICAgICAgICAgICAgaWYgaGFzaGVzWzBdID09IHNlbGYuX29yZGVyZWRfY29tbWl0
czoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBvcmRlciAtPSAx
CisKKyAgICAgICAgICAgIHNlbGYuX29yZGVyZWRfY29tbWl0c1ticmFuY2hdID0gc2VsZi5fb3Jk
ZXJlZF9jb21taXRzW2JyYW5jaF1bOm9yZGVyICsgMV0gKyBoYXNoZXMKKyAgICAgICAgICAgIHNl
bGYuX29yZGVyZWRfcmV2aXNpb25zW2JyYW5jaF0gPSBzZWxmLl9vcmRlcmVkX3JldmlzaW9uc1ti
cmFuY2hdWzpvcmRlciArIDFdICsgcmV2aXNpb25zCisKKyAgICAgICAgICAgIHNlbGYuX2ZpbGwo
YnJhbmNoKQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHNl
bGYucGF0aCwgJ3cnKSBhcyBmaWxlOgorICAgICAgICAgICAgICAgICAgICBqc29uLmR1bXAoZGlj
dCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhc2hlcz1zZWxmLl9vcmRlcmVkX2NvbW1pdHMs
CisgICAgICAgICAgICAgICAgICAgICAgICByZXZpc2lvbnM9c2VsZi5fb3JkZXJlZF9yZXZpc2lv
bnMsCisgICAgICAgICAgICAgICAgICAgICksIGZpbGUsIGluZGVudD00KQorICAgICAgICAgICAg
ZXhjZXB0IChJT0Vycm9yLCBPU0Vycm9yLCBGaWxlTm90Rm91bmRFcnJvcik6CisgICAgICAgICAg
ICAgICAgc2VsZi5yZXBvLmxvZygiRmFpbGVkIHRvIHdyaXRlIGlkZW50aWZpZXIgY2FjaGUgdG8g
J3t9JyIuZm9ybWF0KHNlbGYucGF0aCkpCisKKyAgICAgICAgZGVmIHJldmlzaW9uKHNlbGYsIGFy
Z3VtZW50LCBwb3B1bGF0ZT1UcnVlKToKKyAgICAgICAgICAgIGlmIENvbW1pdC5fcGFyc2VfaGFz
aChhcmd1bWVudCwgZG9fYXNzZXJ0PUZhbHNlKToKKyAgICAgICAgICAgICAgICBhcmd1bWVudCA9
IHNlbGYuaWRlbnRpZmllcihhcmd1bWVudCwgcG9wdWxhdGU9cG9wdWxhdGUpCisgICAgICAgICAg
ICBwYXJ0cyA9IENvbW1pdC5fcGFyc2VfaWRlbnRpZmllcihhcmd1bWVudCwgZG9fYXNzZXJ0PUZh
bHNlKQorICAgICAgICAgICAgaWYgbm90IHBhcnRzOgorICAgICAgICAgICAgICAgIHJldHVybiBO
b25lCisgICAgICAgICAgICBfLCBpZGVudGlmaWVyLCBicmFuY2ggPSBwYXJ0cworICAgICAgICAg
ICAgaWYgYnJhbmNoIG5vdCBpbiBzZWxmLl9vcmRlcmVkX3JldmlzaW9ucyBvciBsZW4oc2VsZi5f
b3JkZXJlZF9yZXZpc2lvbnNbYnJhbmNoXSkgPD0gaWRlbnRpZmllcjoKKyAgICAgICAgICAgICAg
ICBpZiBwb3B1bGF0ZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wb3B1bGF0ZShicmFuY2g9
YnJhbmNoKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXZpc2lvbihhcmd1bWVu
dCwgcG9wdWxhdGU9RmFsc2UpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAg
ICAgIHJldHVybiBzZWxmLl9vcmRlcmVkX3JldmlzaW9uc1ticmFuY2hdW2lkZW50aWZpZXJdCisK
KyAgICAgICAgZGVmIGhhc2goc2VsZiwgYXJndW1lbnQsIHBvcHVsYXRlPVRydWUpOgorICAgICAg
ICAgICAgaWYgQ29tbWl0Ll9wYXJzZV9yZXZpc2lvbihhcmd1bWVudCwgZG9fYXNzZXJ0PUZhbHNl
KToKKyAgICAgICAgICAgICAgICBhcmd1bWVudCA9IHNlbGYuaWRlbnRpZmllcihhcmd1bWVudCwg
cG9wdWxhdGU9cG9wdWxhdGUpCisgICAgICAgICAgICBwYXJ0cyA9IENvbW1pdC5fcGFyc2VfaWRl
bnRpZmllcihhcmd1bWVudCwgZG9fYXNzZXJ0PUZhbHNlKQorICAgICAgICAgICAgaWYgbm90IHBh
cnRzOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICBfLCBpZGVudGlm
aWVyLCBicmFuY2ggPSBwYXJ0cworICAgICAgICAgICAgaWYgYnJhbmNoIG5vdCBpbiBzZWxmLl9v
cmRlcmVkX2NvbW1pdHMgb3IgbGVuKHNlbGYuX29yZGVyZWRfY29tbWl0c1ticmFuY2hdKSA8PSBp
ZGVudGlmaWVyOgorICAgICAgICAgICAgICAgIGlmIHBvcHVsYXRlOgorICAgICAgICAgICAgICAg
ICAgICBzZWxmLnBvcHVsYXRlKGJyYW5jaD1icmFuY2gpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBzZWxmLmhhc2goYXJndW1lbnQsIHBvcHVsYXRlPUZhbHNlKQorICAgICAgICAgICAgICAg
IHJldHVybiBOb25lCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fb3JkZXJlZF9jb21taXRzW2Jy
YW5jaF1baWRlbnRpZmllcl0KKworICAgICAgICBkZWYgaWRlbnRpZmllcihzZWxmLCBhcmd1bWVu
dCwgcG9wdWxhdGU9VHJ1ZSk6CisgICAgICAgICAgICByZXZpc2lvbiA9IENvbW1pdC5fcGFyc2Vf
cmV2aXNpb24oYXJndW1lbnQsIGRvX2Fzc2VydD1GYWxzZSkKKyAgICAgICAgICAgIGlmIHJldmlz
aW9uOgorICAgICAgICAgICAgICAgIGlmIHJldmlzaW9uIGluIHNlbGYuX3JldmlzaW9uc190b19p
ZGVudGlmaWVyczoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JldmlzaW9uc190
b19pZGVudGlmaWVyc1tyZXZpc2lvbl0KKyAgICAgICAgICAgICAgICBpZiBwb3B1bGF0ZToKKyAg
ICAgICAgICAgICAgICAgICAgc2VsZi5wb3B1bGF0ZSgpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBzZWxmLmlkZW50aWZpZXIoYXJndW1lbnQsIHBvcHVsYXRlPUZhbHNlKQorICAgICAgICAg
ICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgICAgIGhhc2ggPSBDb21taXQuX3BhcnNlX2hh
c2goYXJndW1lbnQsIGRvX2Fzc2VydD1GYWxzZSkKKyAgICAgICAgICAgIGlmIGhhc2g6CisgICAg
ICAgICAgICAgICAgaWYgaGFzaFs6c2VsZi5IQVNIX1NJWkVdIGluIHNlbGYuX2hhc2hfdG9faWRl
bnRpZmllcnM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9oYXNoX3RvX2lkZW50
aWZpZXJzW2hhc2hbOnNlbGYuSEFTSF9TSVpFXV0KKyAgICAgICAgICAgICAgICBpZiBwb3B1bGF0
ZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wb3B1bGF0ZSgpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBzZWxmLmlkZW50aWZpZXIoYXJndW1lbnQsIHBvcHVsYXRlPUZhbHNlKQorCisg
ICAgICAgICAgICByZXR1cm4gTm9uZQorCisKICAgICBAY2xhc3NtZXRob2QKICAgICBAZGVjb3Jh
dG9ycy5NZW1vaXplKCkKICAgICBkZWYgZXhlY3V0YWJsZShjbHMpOgpAQCAtNTMsNiArMjQ0LDgg
QEAgY2xhc3MgR2l0KFNjbSk6CiAgICAgICAgIGlmIG5vdCBzZWxmLnJvb3RfcGF0aDoKICAgICAg
ICAgICAgIHJhaXNlIE9TRXJyb3IoJ1Byb3ZpZGVkIHBhdGgge30gaXMgbm90IGEgZ2l0IHJlcG9z
aXRvcnknLmZvcm1hdChwYXRoKSkKIAorICAgICAgICBzZWxmLmNhY2hlID0gR2l0LkNhY2hlKHNl
bGYpCisKICAgICBAZGVjb3JhdG9ycy5NZW1vaXplKGNhY2hlZD1GYWxzZSkKICAgICBkZWYgaW5m
byhzZWxmKToKICAgICAgICAgaWYgbm90IHNlbGYuaXNfc3ZuOgpJbmRleDogVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwvZ2l0LnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNj
bXB5L21vY2tzL2xvY2FsL2dpdC5weQkocmV2aXNpb24gMjc3MjYyKQorKysgVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwvZ2l0LnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0yNDEsNiArMjQxLDMxIEBAIG5vdGhpbmcgdG8gY29tbWl0LCB3b3Jr
aW5nIHRyZWUgY2xlYW4KICAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAg
ICAgKSBpZiBzZWxmLmZpbmQoYXJnc1syXSkgZWxzZSBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbihy
ZXR1cm5jb2RlPTEyOCksCiAgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAor
ICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSwgJ2xvZycsIHJlLmNvbXBpbGUocicuKycp
LAorICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCisgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yPWxhbWJkYSAqYXJncywgKiprd2FyZ3M6IG1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKAorICAg
ICAgICAgICAgICAgICAgICByZXR1cm5jb2RlPTAsCisgICAgICAgICAgICAgICAgICAgIHN0ZG91
dD0nXG4nLmpvaW4oWworICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbW1pdCB7aGFzaH1cbicK
KyAgICAgICAgICAgICAgICAgICAgICAgICdBdXRob3I6ICAgICB7YXV0aG9yfSA8e2VtYWlsfT5c
bicKKyAgICAgICAgICAgICAgICAgICAgICAgICdEYXRlOiAgICAgICB7ZGF0ZX1cbicKKyAgICAg
ICAgICAgICAgICAgICAgICAgICdcbntsb2d9Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaGFzaD1jb21taXQuaGFzaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
dXRob3I9Y29tbWl0LmF1dGhvci5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVt
YWlsPWNvbW1pdC5hdXRob3IuZW1haWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0
ZT1kYXRldGltZS51dGNmcm9tdGltZXN0YW1wKGNvbW1pdC50aW1lc3RhbXAgKyB0aW1lLnRpbWV6
b25lKS5zdHJmdGltZSgnJWEgJWIgJWQgJUg6JU06JVMgJVkgKzAwMDAnKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsb2c9J1xuJy5qb2luKFsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKCcgICAgJyArIGxpbmUpIGlmIGxpbmUgZWxzZSAnJyBmb3IgbGluZSBpbiBjb21t
aXQubWVzc2FnZS5zcGxpdGxpbmVzKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdICsg
KFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBnaXQtc3ZuLWlkOiBodHRw
czovL3N2bi57fS9yZXBvc2l0b3J5L3t9L3RydW5rQHt9IDI2OGY0NWNjLWNkMDktMDQxMC1hYjNj
LWQ1MjY5MWI0ZGJmYycuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5yZW1vdGUuc3BsaXQoJ0AnKVstMV0uc3BsaXQoJzonKVswXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5hbWUocGF0aCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXQucmV2aXNpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKV0gaWYgZ2l0X3N2biBlbHNlIFtdKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICkpIGZvciBjb21taXQgaW4gc2VsZi5jb21taXRzX2luX3JhbmdlKE5vbmUsIGFy
Z3NbMl0pCisgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgKQorICAgICAg
ICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKICAgICAgICAgICAgICAgICBzZWxmLmV4
ZWN1dGFibGUsICdsb2cnLCAnLS1mb3JtYXQ9ZnVsbGVyJywgcmUuY29tcGlsZShyJy4rXC5cLlwu
LisnKSwKICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAogICAgICAgICAgICAgICAgIGdl
bmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbigK
QEAgLTI2Miw3ICsyODcsNyBAQCBub3RoaW5nIHRvIGNvbW1pdCwgd29ya2luZyB0cmVlIGNsZWFu
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgZ2l0LXN2bi1pZDogaHR0cHM6
Ly9zdm4ue30vcmVwb3NpdG9yeS97fS90cnVua0B7fSAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1k
NTI2OTFiNGRiZmMnLmZvcm1hdCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYucmVtb3RlLnNwbGl0KCdAJylbLTFdLnNwbGl0KCc6JylbMF0sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXQucmV2aXNpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb21taXQucmV2aXNpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKV0gaWYgZ2l0X3N2biBlbHNlIFtdKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICkpIGZvciBjb21taXQgaW4gc2VsZi5jb21taXRzX2luX3JhbmdlKGFyZ3NbM10uc3BsaXQo
Jy4uLicpWy0xXSwgYXJnc1szXS5zcGxpdCgnLi4uJylbMF0pCiAgICAgICAgICAgICAgICAgICAg
IF0pCkBAIC00OTUsNiArNTIwLDkgQEAgbm90aGluZyB0byBjb21taXQsIHdvcmtpbmcgdHJlZSBj
bGVhbgogICAgIGRlZiBjb21taXRzX2luX3JhbmdlKHNlbGYsIGJlZ2luLCBlbmQpOgogICAgICAg
ICBicmFuY2hlcyA9IFtzZWxmLmRlZmF1bHRfYnJhbmNoXQogICAgICAgICBmb3IgYnJhbmNoLCBj
b21taXRzIGluIHNlbGYuY29tbWl0cy5pdGVtcygpOgorICAgICAgICAgICAgaWYgYnJhbmNoID09
IGVuZCBhbmQgYnJhbmNoICE9IHNlbGYuZGVmYXVsdF9icmFuY2g6CisgICAgICAgICAgICAgICAg
YnJhbmNoZXMuaW5zZXJ0KDAsIGJyYW5jaCkKKyAgICAgICAgICAgICAgICBicmVhawogICAgICAg
ICAgICAgaWYgYnJhbmNoID09IHNlbGYuZGVmYXVsdF9icmFuY2g6CiAgICAgICAgICAgICAgICAg
Y29udGludWUKICAgICAgICAgICAgIGZvciBjb21taXQgaW4gY29tbWl0czoKQEAgLTUwOCw3ICs1
MzYsNyBAQCBub3RoaW5nIHRvIGNvbW1pdCwgd29ya2luZyB0cmVlIGNsZWFuCiAgICAgICAgIHBy
ZXZpb3VzID0gTm9uZQogICAgICAgICBmb3IgYnJhbmNoIGluIGJyYW5jaGVzOgogICAgICAgICAg
ICAgZm9yIGNvbW1pdCBpbiByZXZlcnNlZChzZWxmLmNvbW1pdHNbYnJhbmNoXSk6Ci0gICAgICAg
ICAgICAgICAgaWYgY29tbWl0Lmhhc2ggPT0gZW5kOgorICAgICAgICAgICAgICAgIGlmIGNvbW1p
dC5oYXNoID09IGVuZCBvciBjb21taXQuYnJhbmNoID09IGVuZDoKICAgICAgICAgICAgICAgICAg
ICAgaW5fcmFuZ2UgPSBUcnVlCiAgICAgICAgICAgICAgICAgaWYgaW5fcmFuZ2UgYW5kIChub3Qg
cHJldmlvdXMgb3IgY29tbWl0Lmhhc2ggIT0gcHJldmlvdXMuaGFzaCk6CiAgICAgICAgICAgICAg
ICAgICAgIHlpZWxkIGNvbW1pdApJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9naXRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9naXRfdW5p
dHRlc3QucHkJKHJldmlzaW9uIDI3NzI2MikKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZ2l0X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0zMDUsNiArMzA1LDE4IEBAIGNsYXNzIFRlc3RHaXQodW5pdHRlc3QuVGVzdENhc2UpOgog
ICAgICAgICAgICAgICAgICAgICBnaXQuY29tbWl0KGhhc2g9JzliODMxMWYyJyksCiAgICAgICAg
ICAgICAgICAgXSksIENvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChsaXN0KGdpdC5jb21taXRzKGJl
Z2luPWRpY3QoYXJndW1lbnQ9JzliODMxMWYyJyksIGVuZD1kaWN0KGFyZ3VtZW50PSc2MjE2NTJh
ZCcpKSkpKQogCisgICAgZGVmIHRlc3RfY2FjaGUoc2VsZik6CisgICAgICAgIGZvciBtb2NrIGlu
IFttb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoKSwgbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCwg
Z2l0X3N2bj1UcnVlKV06CisgICAgICAgICAgICB3aXRoIG1vY2ssIE91dHB1dENhcHR1cmUoKToK
KyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsLkdpdChzZWxmLnBhdGgpLmNh
Y2hlLmhhc2goJzFAbWFpbicpLCAnOWI4MzExZjI1YTc3YmExNDkyM2Q5ZDVhNjUzMjEwM2Y1NGFi
ZWZjYicpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbC5HaXQoc2VsZi5w
YXRoKS5jYWNoZS5pZGVudGlmaWVyKCdkOGJjZTI2ZmE2NWMnKSwgJzVAbWFpbicpCisgICAgICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbC5HaXQoc2VsZi5wYXRoKS5jYWNoZS5oYXNo
KCcyLjNAYnJhbmNoLWInKSwgJzc5MDcyNWE2ZDc5ZTI4ZGIyZWNkZGUyOTU0OGQyMjYyYzBiZDA1
OWQnKQorCisgICAgZGVmIHRlc3RfcmV2aXNpb25fY2FjaGUoc2VsZik6CisgICAgICAgIHdpdGgg
bW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCwgZ2l0X3N2bj1UcnVlKSwgT3V0cHV0Q2FwdHVyZSgp
OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbC5HaXQoc2VsZi5wYXRoKS5jYWNo
ZS5yZXZpc2lvbignMUBtYWluJyksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxv
Y2FsLkdpdChzZWxmLnBhdGgpLmNhY2hlLmlkZW50aWZpZXIoJ3I5JyksICc1QG1haW4nKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbC5HaXQoc2VsZi5wYXRoKS5jYWNoZS5oYXNo
KCdyOScpLCAnZDhiY2UyNmZhNjVjNmZjOGYzOWMxNzkyN2FiYjc3ZjY5ZmFiODJmYycpCiAKIGNs
YXNzIFRlc3RHaXRIdWIodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHJlbW90ZSA9ICdodHRwczov
L2dpdGh1Yi5leGFtcGxlLmNvbS9XZWJLaXQvV2ViS2l0Jwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428327</attachid>
            <date>2021-05-11 16:31:34 -0700</date>
            <delta_ts>2021-05-20 13:53:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225616-20210511163132.patch</filename>
            <type>text/plain</type>
            <size>23487</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3NzM0MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMwIEBACisyMDIxLTA1LTExICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0c2NtcHldIENhY2hlIGlkZW50aWZpZXJzIGluIEdpdCBjaGVj
a291dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NTYxNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzc3ODkyMzA+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0lQLgorCisgICAgICAgICogU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5OgorICAgICAg
ICAoR2l0LkNhY2hlKTogQ2xhc3MgaG9sZGluZyBhIGNhY2hlIGFsbG93aW5nIHF1aWNrIG1hcHBp
bmcgYmV0d2VlbiBoYXNoZXMsIGlkZW50aWZpZXJzIGFuZCByZXZpc2lvbnMuCisgICAgICAgIChH
aXQuQ2FjaGUuX19pbml0X18pOiBMb2FkIGNhY2hlIGZyb20ganNvbiBmaWxlIG9uIGRpc2suCisg
ICAgICAgIChHaXQuQ2FjaGUuX2ZpbGwpOiBQb3B1bGF0ZSByZXZpc2lvbiBhbmQgaGFzaCB0byBp
ZGVudGlmaWVyIGRpY3Rpb25hcmllcy4KKyAgICAgICAgKEdpdC5DYWNoZS5faW5zZXJ0KTogSW5z
ZXJ0IGhhc2ggYW5kIHJldmlzaW9uIGludG8gY2FjaGUgZm9yIGJyYW5jaC4KKyAgICAgICAgKEdp
dC5DYWNoZS5wYXRoKTogUGF0aCB0byBsb2NhdGlvbiBvZiBjYWNoZSBvbiBkaXNrLgorICAgICAg
ICAoR2l0LkNhY2hlLnBvcHVsYXRlKTogUGFyc2UgZ2l0LWxvZyBhbmQgcG9wdWxhdGUgY2FjaGUu
CisgICAgICAgIChHaXQuQ2FjaGUucmV2aXNpb24pOiBHaXZlbiBhbiBpZGVudGlmaWVyIG9yIGhh
c2gsIGZpbmQgdGhlIHJldmlzaW9uLgorICAgICAgICAoR2l0LkNhY2hlLmhhc2gpOiBHaXZlbiBh
biBpZGVudGlmaWVyIG9yIHJldmlzaW9uLCBmaW5kIHRoZSBhc2guCisgICAgICAgIChHaXQuQ2Fj
aGUuaWRlbnRpZmllcik6IEdpdmVuIGEgaGFzaCBvciByZXZpc2lvbiwgZGV0ZXJtaW5lIHRoZSBp
ZGVudGlmaWVyLgorICAgICAgICAoR2l0Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9naXQucHk6CisgICAg
ICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9naXRf
dW5pdHRlc3QucHk6CisgICAgICAgIChUZXN0R2l0LnRlc3RfY2FjaGUpOgorICAgICAgICAoVGVz
dEdpdCk6CisgICAgICAgIChUZXN0R2l0LnRlc3RfcmV2aXNpb25fY2FjaGUpOgorCiAyMDIxLTA1
LTExICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgQWRkIFNQSSB0byByZXN0cmljdCBuZXR3b3JraW5nIHRvIGEgc2V0IG9mIGhvc3RzCkluZGV4
OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9n
aXQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkv
d2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5CShyZXZpc2lvbiAyNzczNDApCisrKyBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9naXQucHkJKHdvcmtp
bmcgY29weSkKQEAgLTIxLDYgKzIxLDcgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogaW1wb3J0IGNhbGVu
ZGFyCitpbXBvcnQganNvbgogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwogaW1wb3J0IHJlCkBA
IC0zOSw2ICs0MCwyMDcgQEAgZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgQ29tbWl0LCBDb250cmli
dQogY2xhc3MgR2l0KFNjbSk6CiAgICAgR0lUX0NPTU1JVCA9IHJlLmNvbXBpbGUocidjb21taXQg
KD9QPGhhc2g+WzAtOWEtZl0rKScpCiAKKyAgICBjbGFzcyBDYWNoZShvYmplY3QpOgorICAgICAg
ICBIQVNIX1NJWkUgPSAxMgorCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXBvKToKKyAg
ICAgICAgICAgIHNlbGYucmVwbyA9IHJlcG8KKworICAgICAgICAgICAgc2VsZi5fb3JkZXJlZF9j
b21taXRzID0ge30KKyAgICAgICAgICAgIHNlbGYuX2hhc2hfdG9faWRlbnRpZmllcnMgPSB7fQor
ICAgICAgICAgICAgc2VsZi5fb3JkZXJlZF9yZXZpc2lvbnMgPSB7fQorICAgICAgICAgICAgc2Vs
Zi5fcmV2aXNpb25zX3RvX2lkZW50aWZpZXJzID0ge30KKworICAgICAgICAgICAgaWYgb3MucGF0
aC5leGlzdHMoc2VsZi5wYXRoKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAg
ICAgICAgIHdpdGggb3BlbihzZWxmLnBhdGgpIGFzIGZpbGU6CisgICAgICAgICAgICAgICAgICAg
ICAgICBjb250ZW50ID0ganNvbi5sb2FkKGZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9vcmRlcmVkX2NvbW1pdHMgPSBjb250ZW50WydoYXNoZXMnXQorICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fb3JkZXJlZF9yZXZpc2lvbnMgPSBjb250ZW50WydyZXZpc2lvbnMnXQor
CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGwoc2VsZi5yZXBvLmRlZmF1bHRfYnJhbmNo
KQorICAgICAgICAgICAgICAgICAgICBmb3IgYnJhbmNoIGluIHNlbGYuX29yZGVyZWRfY29tbWl0
cy5rZXlzKCk6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBicmFuY2ggPT0gc2VsZi5yZXBv
LmRlZmF1bHRfYnJhbmNoOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9maWxsKGJyYW5jaCkKKworICAgICAgICAgICAg
ICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisKKyAg
ICAgICAgZGVmIF9maWxsKHNlbGYsIGJyYW5jaCk6CisgICAgICAgICAgICBkZWZhdWx0X2JyYW5j
aCA9IHNlbGYucmVwby5kZWZhdWx0X2JyYW5jaAorICAgICAgICAgICAgaWYgYnJhbmNoID09IGRl
ZmF1bHRfYnJhbmNoOgorICAgICAgICAgICAgICAgIGJyYW5jaF9wb2ludCA9IE5vbmUKKyAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYnJhbmNoX3BvaW50ID0gaW50KHNlbGYuX2hh
c2hfdG9faWRlbnRpZmllcnNbc2VsZi5fb3JkZXJlZF9jb21taXRzW2JyYW5jaF1bMF1bOnNlbGYu
SEFTSF9TSVpFXV0uc3BsaXQoJ0AnKVswXSkKKworICAgICAgICAgICAgaW5kZXggPSBsZW4oc2Vs
Zi5fb3JkZXJlZF9jb21taXRzW2JyYW5jaF0pIC0gMQorICAgICAgICAgICAgd2hpbGUgaW5kZXg6
CisgICAgICAgICAgICAgICAgaWRlbnRpZmllciA9IHNlbGYuX2hhc2hfdG9faWRlbnRpZmllcnMu
Z2V0KHNlbGYuX29yZGVyZWRfY29tbWl0c1ticmFuY2hdW2luZGV4XVs6c2VsZi5IQVNIX1NJWkVd
KQorICAgICAgICAgICAgICAgIGlmIGlkZW50aWZpZXI6CisgICAgICAgICAgICAgICAgICAgIGlk
X2JyYW5jaCA9IGlkZW50aWZpZXIuc3BsaXQoJ0AnKVstMV0KKyAgICAgICAgICAgICAgICAgICAg
aWYgYnJhbmNoIGluIChkZWZhdWx0X2JyYW5jaCwgaWRfYnJhbmNoKToKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgIGlmIGJyYW5jaCAhPSBzZWxmLnJl
cG8ucHJpb3JpdGl6ZV9icmFuY2hlcygoYnJhbmNoLCBpZF9icmFuY2gpKToKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gJ3t9QHt9
Jy5mb3JtYXQoJ3t9Lnt9Jy5mb3JtYXQoYnJhbmNoX3BvaW50LCBpbmRleCkgaWYgYnJhbmNoX3Bv
aW50IGVsc2UgaW5kZXgsIGJyYW5jaCkKKyAgICAgICAgICAgICAgICBzZWxmLl9oYXNoX3RvX2lk
ZW50aWZpZXJzW3NlbGYuX29yZGVyZWRfY29tbWl0c1ticmFuY2hdW2luZGV4XVs6c2VsZi5IQVNI
X1NJWkVdXSA9IGlkZW50aWZpZXIKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9vcmRlcmVkX3Jl
dmlzaW9uc1ticmFuY2hdW2luZGV4XToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmV2aXNp
b25zX3RvX2lkZW50aWZpZXJzW3NlbGYuX29yZGVyZWRfcmV2aXNpb25zW2JyYW5jaF1baW5kZXhd
XSA9IGlkZW50aWZpZXIKKyAgICAgICAgICAgICAgICBpbmRleCAtPSAxCisKKyAgICAgICAgQHBy
b3BlcnR5CisgICAgICAgIGRlZiBwYXRoKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIG9zLnBh
dGguam9pbihzZWxmLnJlcG8ucm9vdF9wYXRoLCAnLmdpdCcsICdpZGVudGlmaWVycy5qc29uJykK
KworICAgICAgICBkZWYgcG9wdWxhdGUoc2VsZiwgYnJhbmNoPU5vbmUpOgorICAgICAgICAgICAg
YnJhbmNoID0gYnJhbmNoIG9yIHNlbGYucmVwby5icmFuY2gKKyAgICAgICAgICAgIGlmIG5vdCBi
cmFuY2g6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBkZWZhdWx0X2JyYW5j
aCA9IHNlbGYucmVwby5kZWZhdWx0X2JyYW5jaAorICAgICAgICAgICAgaXNfZGVmYXVsdF9icmFu
Y2ggPSBicmFuY2ggPT0gZGVmYXVsdF9icmFuY2gKKyAgICAgICAgICAgIGlmIGJyYW5jaCBub3Qg
aW4gc2VsZi5fb3JkZXJlZF9jb21taXRzOgorICAgICAgICAgICAgICAgIHNlbGYuX29yZGVyZWRf
Y29tbWl0c1ticmFuY2hdID0gWycnXSBpZiBpc19kZWZhdWx0X2JyYW5jaCBlbHNlIFtdCisgICAg
ICAgICAgICAgICAgc2VsZi5fb3JkZXJlZF9yZXZpc2lvbnNbYnJhbmNoXSA9IFswXSBpZiBpc19k
ZWZhdWx0X2JyYW5jaCBlbHNlIFtdCisKKyAgICAgICAgICAgICMgSWYgd2UgYXJlbid0IG9uIHRo
ZSBkZWZhdWx0IGJyYW5jaCwgd2Ugd2lsbCBuZWVkIHRoZSBkZWZhdWx0IGJyYW5jaCB0byBkZXRl
cm1pbmUgd2hlbgorICAgICAgICAgICAgIyBvdXIgIGJyYW5jaCAgaW50ZXJzZWN0cyB3aXRoIHRo
ZSBkZWZhdWx0IGJyYW5jaC4KKyAgICAgICAgICAgIGlmIG5vdCBpc19kZWZhdWx0X2JyYW5jaDoK
KyAgICAgICAgICAgICAgICBzZWxmLnBvcHVsYXRlKGJyYW5jaD1zZWxmLnJlcG8uZGVmYXVsdF9i
cmFuY2gpCisKKyAgICAgICAgICAgIGhhc2hlcyA9IFtdCisgICAgICAgICAgICByZXZpc2lvbnMg
PSBbXQorCisgICAgICAgICAgICBkZWYgX2FwcGVuZChicmFuY2gsIGhhc2gsIHJldmlzaW9uPU5v
bmUpOgorICAgICAgICAgICAgICAgIGhhc2hlcy5hcHBlbmQoaGFzaCkKKyAgICAgICAgICAgICAg
ICByZXZpc2lvbnMuYXBwZW5kKHJldmlzaW9uKQorICAgICAgICAgICAgICAgIGlkZW50aWZpZXIg
PSBzZWxmLl9oYXNoX3RvX2lkZW50aWZpZXJzLmdldChoYXNoWzpzZWxmLkhBU0hfU0laRV0sICcn
KQorICAgICAgICAgICAgICAgIHJldHVybiBpZGVudGlmaWVyLmVuZHN3aXRoKGRlZmF1bHRfYnJh
bmNoKSBvciBpZGVudGlmaWVyLmVuZHN3aXRoKGJyYW5jaCkKKworICAgICAgICAgICAgaW50ZXJz
ZWN0ZWQgPSBGYWxzZQorICAgICAgICAgICAgbG9nID0gTm9uZQorICAgICAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgICAgIGt3YXJncyA9IGRpY3QoKQorICAgICAgICAgICAgICAgIGlmIHN5cy52
ZXJzaW9uX2luZm8gPj0gKDMsIDApOgorICAgICAgICAgICAgICAgICAgICBrd2FyZ3MgPSBkaWN0
KGVuY29kaW5nPSd1dGYtOCcpCisKKyAgICAgICAgICAgICAgICBsb2cgPSBzdWJwcm9jZXNzLlBv
cGVuKAorICAgICAgICAgICAgICAgICAgICBbc2VsZi5yZXBvLmV4ZWN1dGFibGUoKSwgJ2xvZycs
IGJyYW5jaF0sCisgICAgICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnJlcG8ucm9vdF9wYXRoLAor
ICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAg
ICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAqKmt3
YXJncworICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBpZiBsb2cucG9sbCgpOgor
ICAgICAgICAgICAgICAgICAgICByYWlzZSBzZWxmLnJlcG8uRXhjZXB0aW9uKCJGYWlsZWQgdG8g
Y29uc3RydWN0IGJyYW5jaCBoaXN0b3J5IGZvciAne30nIi5mb3JtYXQoYnJhbmNoKSkKKworICAg
ICAgICAgICAgICAgIGhhc2ggPSBOb25lCisgICAgICAgICAgICAgICAgcmV2aXNpb24gPSBOb25l
CisKKyAgICAgICAgICAgICAgICBsaW5lID0gbG9nLnN0ZG91dC5yZWFkbGluZSgpCisgICAgICAg
ICAgICAgICAgd2hpbGUgbGluZToKKyAgICAgICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3
aXRoKCcgICAgZ2l0LXN2bi1pZDogJyk6CisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCA9
IHNlbGYucmVwby5HSVRfU1ZOX1JFVklTSU9OLm1hdGNoKGxpbmUubHN0cmlwKCkpCisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiBtYXRjaDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXZpc2lvbiA9IGludChtYXRjaC5ncm91cCgncmV2aXNpb24nKSkKKyAgICAgICAgICAgICAgICAg
ICAgaWYgbm90IGxpbmUuc3RhcnRzd2l0aCgnY29tbWl0ICcpOgorICAgICAgICAgICAgICAgICAg
ICAgICAgbGluZSA9IGxvZy5zdGRvdXQucmVhZGxpbmUoKQorICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGludWUKKworICAgICAgICAgICAgICAgICAgICBpZiBoYXNoIGFuZCBfYXBwZW5kKGJy
YW5jaCwgaGFzaCwgcmV2aXNpb249cmV2aXNpb24pOgorICAgICAgICAgICAgICAgICAgICAgICAg
aGFzaCA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGludGVyc2VjdGVkID0gVHJ1ZQor
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgICAgICAgICBoYXNo
ID0gbGluZS5zcGxpdCgnICcpWzFdLnJzdHJpcCgpCisgICAgICAgICAgICAgICAgICAgIHJldmlz
aW9uID0gTm9uZQorICAgICAgICAgICAgICAgICAgICBsaW5lID0gbG9nLnN0ZG91dC5yZWFkbGlu
ZSgpCisKKyAgICAgICAgICAgICAgICBpZiBoYXNoOgorICAgICAgICAgICAgICAgICAgICBpbnRl
cnNlY3RlZCA9IF9hcHBlbmQoYnJhbmNoLCBoYXNoLCByZXZpc2lvbj1yZXZpc2lvbikKKworICAg
ICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBpZiBsb2c6CisgICAgICAgICAgICAg
ICAgICAgIGxvZy5raWxsKCkKKworICAgICAgICAgICAgaWYgaW50ZXJzZWN0ZWQgYW5kIGxlbiho
YXNoZXMpIDw9IDE6CisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgIGhhc2hl
cy5yZXZlcnNlKCkKKyAgICAgICAgICAgIHJldmlzaW9ucy5yZXZlcnNlKCkKKworICAgICAgICAg
ICAgb3JkZXIgPSBsZW4oc2VsZi5fb3JkZXJlZF9jb21taXRzKSAtIDEKKyAgICAgICAgICAgIHdo
aWxlIG9yZGVyOgorICAgICAgICAgICAgICAgIGlmIGhhc2hlc1swXSA9PSBzZWxmLl9vcmRlcmVk
X2NvbW1pdHM6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgb3Jk
ZXIgLT0gMQorCisgICAgICAgICAgICBzZWxmLl9vcmRlcmVkX2NvbW1pdHNbYnJhbmNoXSA9IHNl
bGYuX29yZGVyZWRfY29tbWl0c1ticmFuY2hdWzpvcmRlciArIDFdICsgaGFzaGVzCisgICAgICAg
ICAgICBzZWxmLl9vcmRlcmVkX3JldmlzaW9uc1ticmFuY2hdID0gc2VsZi5fb3JkZXJlZF9yZXZp
c2lvbnNbYnJhbmNoXVs6b3JkZXIgKyAxXSArIHJldmlzaW9ucworCisgICAgICAgICAgICBzZWxm
Ll9maWxsKGJyYW5jaCkKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdpdGgg
b3BlbihzZWxmLnBhdGgsICd3JykgYXMgZmlsZToKKyAgICAgICAgICAgICAgICAgICAganNvbi5k
dW1wKGRpY3QoCisgICAgICAgICAgICAgICAgICAgICAgICBoYXNoZXM9c2VsZi5fb3JkZXJlZF9j
b21taXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgcmV2aXNpb25zPXNlbGYuX29yZGVyZWRf
cmV2aXNpb25zLAorICAgICAgICAgICAgICAgICAgICApLCBmaWxlLCBpbmRlbnQ9NCkKKyAgICAg
ICAgICAgIGV4Y2VwdCAoSU9FcnJvciwgT1NFcnJvciwgRmlsZU5vdEZvdW5kRXJyb3IpOgorICAg
ICAgICAgICAgICAgIHNlbGYucmVwby5sb2coIkZhaWxlZCB0byB3cml0ZSBpZGVudGlmaWVyIGNh
Y2hlIHRvICd7fSciLmZvcm1hdChzZWxmLnBhdGgpKQorCisgICAgICAgIGRlZiB0b19yZXZpc2lv
bihzZWxmLCBpZGVudGlmaWVyPU5vbmUsIGhhc2g9Tm9uZSwgcG9wdWxhdGU9VHJ1ZSk6CisgICAg
ICAgICAgICBpZiBoYXNoOgorICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgPSBzZWxmLnRvX2lk
ZW50aWZpZXIoaGFzaD1oYXNoLCBwb3B1bGF0ZT1wb3B1bGF0ZSkKKyAgICAgICAgICAgIHBhcnRz
ID0gQ29tbWl0Ll9wYXJzZV9pZGVudGlmaWVyKGlkZW50aWZpZXIsIGRvX2Fzc2VydD1GYWxzZSkK
KyAgICAgICAgICAgIGlmIG5vdCBwYXJ0czoKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQor
CisgICAgICAgICAgICBfLCBwX2lkLCBicmFuY2ggPSBwYXJ0cworICAgICAgICAgICAgaWYgYnJh
bmNoIG5vdCBpbiBzZWxmLl9vcmRlcmVkX3JldmlzaW9ucyBvciBsZW4oc2VsZi5fb3JkZXJlZF9y
ZXZpc2lvbnNbYnJhbmNoXSkgPD0gcF9pZDoKKyAgICAgICAgICAgICAgICBpZiBwb3B1bGF0ZToK
KyAgICAgICAgICAgICAgICAgICAgc2VsZi5wb3B1bGF0ZShicmFuY2g9YnJhbmNoKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gc2VsZi50b19yZXZpc2lvbihpZGVudGlmaWVyPWlkZW50aWZp
ZXIsIHBvcHVsYXRlPUZhbHNlKQorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAg
ICAgICByZXR1cm4gc2VsZi5fb3JkZXJlZF9yZXZpc2lvbnNbYnJhbmNoXVtwX2lkXQorCisgICAg
ICAgIGRlZiB0b19oYXNoKHNlbGYsIGlkZW50aWZpZXI9Tm9uZSwgcmV2aXNpb249Tm9uZSwgcG9w
dWxhdGU9VHJ1ZSk6CisgICAgICAgICAgICBpZiByZXZpc2lvbjoKKyAgICAgICAgICAgICAgICBp
ZGVudGlmaWVyID0gc2VsZi50b19pZGVudGlmaWVyKHJldmlzaW9uPXJldmlzaW9uLCBwb3B1bGF0
ZT1wb3B1bGF0ZSkKKyAgICAgICAgICAgIHBhcnRzID0gQ29tbWl0Ll9wYXJzZV9pZGVudGlmaWVy
KGlkZW50aWZpZXIsIGRvX2Fzc2VydD1GYWxzZSkKKyAgICAgICAgICAgIGlmIG5vdCBwYXJ0czoK
KyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICBfLCBwX2lkLCBicmFu
Y2ggPSBwYXJ0cworICAgICAgICAgICAgaWYgYnJhbmNoIG5vdCBpbiBzZWxmLl9vcmRlcmVkX2Nv
bW1pdHMgb3IgbGVuKHNlbGYuX29yZGVyZWRfY29tbWl0c1ticmFuY2hdKSA8PSBwX2lkOgorICAg
ICAgICAgICAgICAgIGlmIHBvcHVsYXRlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnBvcHVs
YXRlKGJyYW5jaD1icmFuY2gpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnRvX2hh
c2goaWRlbnRpZmllcj1pZGVudGlmaWVyLCBwb3B1bGF0ZT1GYWxzZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gTm9uZQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX29yZGVyZWRfY29tbWl0c1ti
cmFuY2hdW3BfaWRdCisKKyAgICAgICAgZGVmIHRvX2lkZW50aWZpZXIoc2VsZiwgaGFzaD1Ob25l
LCByZXZpc2lvbj1Ob25lLCBwb3B1bGF0ZT1UcnVlKToKKyAgICAgICAgICAgIHJldmlzaW9uID0g
Q29tbWl0Ll9wYXJzZV9yZXZpc2lvbihyZXZpc2lvbiwgZG9fYXNzZXJ0PUZhbHNlKQorICAgICAg
ICAgICAgaWYgcmV2aXNpb246CisgICAgICAgICAgICAgICAgaWYgcmV2aXNpb24gaW4gc2VsZi5f
cmV2aXNpb25zX3RvX2lkZW50aWZpZXJzOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5fcmV2aXNpb25zX3RvX2lkZW50aWZpZXJzW3JldmlzaW9uXQorICAgICAgICAgICAgICAgIGlm
IHBvcHVsYXRlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnBvcHVsYXRlKCkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHNlbGYudG9faWRlbnRpZmllcihyZXZpc2lvbj1yZXZpc2lvbiwg
cG9wdWxhdGU9RmFsc2UpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAg
ICAgaGFzaCA9IENvbW1pdC5fcGFyc2VfaGFzaChoYXNoLCBkb19hc3NlcnQ9RmFsc2UpCisgICAg
ICAgICAgICBpZiBoYXNoOgorICAgICAgICAgICAgICAgIGlmIGhhc2hbOnNlbGYuSEFTSF9TSVpF
XSBpbiBzZWxmLl9oYXNoX3RvX2lkZW50aWZpZXJzOgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gc2VsZi5faGFzaF90b19pZGVudGlmaWVyc1toYXNoWzpzZWxmLkhBU0hfU0laRV1dCisgICAg
ICAgICAgICAgICAgaWYgcG9wdWxhdGU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYucG9wdWxh
dGUoKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi50b19pZGVudGlmaWVyKGhhc2g9
aGFzaCwgcG9wdWxhdGU9RmFsc2UpCisKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKwogICAg
IEBjbGFzc21ldGhvZAogICAgIEBkZWNvcmF0b3JzLk1lbW9pemUoKQogICAgIGRlZiBleGVjdXRh
YmxlKGNscyk6CkBAIC01Myw2ICsyNTUsOCBAQCBjbGFzcyBHaXQoU2NtKToKICAgICAgICAgaWYg
bm90IHNlbGYucm9vdF9wYXRoOgogICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignUHJvdmlkZWQg
cGF0aCB7fSBpcyBub3QgYSBnaXQgcmVwb3NpdG9yeScuZm9ybWF0KHBhdGgpKQogCisgICAgICAg
IHNlbGYuY2FjaGUgPSBHaXQuQ2FjaGUoc2VsZikKKwogICAgIEBkZWNvcmF0b3JzLk1lbW9pemUo
Y2FjaGVkPUZhbHNlKQogICAgIGRlZiBpbmZvKHNlbGYpOgogICAgICAgICBpZiBub3Qgc2VsZi5p
c19zdm46CkBAIC0xNTcsMTUgKzM2MSwxNiBAQCBjbGFzcyBHaXQoU2NtKToKICAgICAgICAgcmV0
dXJuIHNvcnRlZChzZXQoWycvJy5qb2luKGJyYW5jaC5zcGxpdCgnLycpWzI6XSkgaWYgYnJhbmNo
LnN0YXJ0c3dpdGgoJ3JlbW90ZXMvb3JpZ2luLycpIGVsc2UgYnJhbmNoIGZvciBicmFuY2ggaW4g
cmVzdWx0XSkpCiAKICAgICBkZWYgY29tbWl0KHNlbGYsIGhhc2g9Tm9uZSwgcmV2aXNpb249Tm9u
ZSwgaWRlbnRpZmllcj1Ob25lLCBicmFuY2g9Tm9uZSwgdGFnPU5vbmUsIGluY2x1ZGVfbG9nPVRy
dWUsIGluY2x1ZGVfaWRlbnRpZmllcj1UcnVlKToKLSAgICAgICAgIyBPbmx5IGdpdC1zdm4gY2hl
Y2tvdXRzIGNhbiBjb252ZXJ0IHJldmlzaW9ucyB0byBmdWxseSBxdWFsaWZpZWQgY29tbWl0cwot
ICAgICAgICBpZiByZXZpc2lvbiBhbmQgbm90IHNlbGYuaXNfc3ZuOgotICAgICAgICAgICAgcmFp
c2Ugc2VsZi5FeGNlcHRpb24oJ1RoaXMgZ2l0IGNoZWNrb3V0IGRvZXMgbm90IHN1cHBvcnQgU1ZO
IHJldmlzaW9ucycpCi0KLSAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGhhc2ggZm9yIGEgcHJvdmlk
ZWQgU3VidmVyc2lvbiByZXZpc2lvbgotICAgICAgICBlbGlmIHJldmlzaW9uOgorICAgICAgICAj
IE9ubHkgZ2l0LXN2biBjaGVja291dHMgY2FuIGNvbnZlcnQgcmV2aXNpb25zIHRvIGZ1bGx5IHF1
YWxpZmllZCBjb21taXRzLCB1bmxlc3Mgd2UgaGFwcGVuIHRvIGhhdmUgYSBTVk4gY2FjaGUgYnVp
bHQKKyAgICAgICAgaWYgcmV2aXNpb246CiAgICAgICAgICAgICBpZiBoYXNoOgogICAgICAgICAg
ICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0Nhbm5vdCBkZWZpbmUgYm90aCBoYXNoIGFuZCByZXZp
c2lvbicpCisgICAgICAgICAgICBoYXNoID0gc2VsZi5jYWNoZS50b19oYXNoKHJldmlzaW9uPXJl
dmlzaW9uKQorICAgICAgICBpZiByZXZpc2lvbiBhbmQgbm90IGhhc2ggYW5kIG5vdCBzZWxmLmlz
X3N2bjoKKyAgICAgICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0aW9uKCdUaGlzIGdpdCBjaGVja291
dCBkb2VzIG5vdCBzdXBwb3J0IFNWTiByZXZpc2lvbnMnKQogCisgICAgICAgICMgRGV0ZXJtaW5l
IHRoZSBoYXNoIGZvciBhIHByb3ZpZGVkIFN1YnZlcnNpb24gcmV2aXNpb24KKyAgICAgICAgZWxp
ZiByZXZpc2lvbiBhbmQgbm90IGhhc2g6CiAgICAgICAgICAgICByZXZpc2lvbiA9IENvbW1pdC5f
cGFyc2VfcmV2aXNpb24ocmV2aXNpb24sIGRvX2Fzc2VydD1UcnVlKQogICAgICAgICAgICAgcmV2
aXNpb25fbG9nID0gcnVuKAogICAgICAgICAgICAgICAgIFtzZWxmLmV4ZWN1dGFibGUoKSwgJ3N2
bicsICdmaW5kLXJldicsICdye30nLmZvcm1hdChyZXZpc2lvbildLApAQCAtMjAxLDMyICs0MDYs
NDUgQEAgY2xhc3MgR2l0KFNjbSk6CiAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAg
ICAgICBicmFuY2ggPSBwYXJzZWRfYnJhbmNoCiAKLSAgICAgICAgICAgIGJhc2VsaW5lID0gYnJh
bmNoIG9yICdIRUFEJwotICAgICAgICAgICAgaXNfZGVmYXVsdCA9IGJhc2VsaW5lID09IGRlZmF1
bHRfYnJhbmNoCi0gICAgICAgICAgICBpZiBiYXNlbGluZSA9PSAnSEVBRCc6Ci0gICAgICAgICAg
ICAgICAgaXNfZGVmYXVsdCA9IGRlZmF1bHRfYnJhbmNoIGluIHNlbGYuX2JyYW5jaGVzX2Zvcihi
YXNlbGluZSkKLQotICAgICAgICAgICAgaWYgaXNfZGVmYXVsdCBhbmQgcGFyc2VkX2JyYW5jaF9w
b2ludDoKLSAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignQ2Fubm90IHByb3Zp
ZGUgYSBicmFuY2ggcG9pbnQgZm9yIGEgY29tbWl0IG9uIHRoZSBkZWZhdWx0IGJyYW5jaCcpCi0K
LSAgICAgICAgICAgIGJhc2VfY291bnQgPSBzZWxmLl9jb21taXRfY291bnQoYmFzZWxpbmUgaWYg
aXNfZGVmYXVsdCBlbHNlICd7fS4ue30nLmZvcm1hdChkZWZhdWx0X2JyYW5jaCwgYmFzZWxpbmUp
KQotCi0gICAgICAgICAgICBpZiBpZGVudGlmaWVyID4gYmFzZV9jb3VudDoKLSAgICAgICAgICAg
ICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignSWRlbnRpZmllciB7fSBjYW5ub3QgYmUgZm91bmQg
b24gdGhlIHNwZWNpZmllZCBicmFuY2ggaW4gdGhlIGN1cnJlbnQgY2hlY2tvdXQnLmZvcm1hdChp
ZGVudGlmaWVyKSkKLSAgICAgICAgICAgIGxvZyA9IHJ1bigKLSAgICAgICAgICAgICAgICBbc2Vs
Zi5leGVjdXRhYmxlKCksICdsb2cnLCAne31+e30nLmZvcm1hdChicmFuY2ggb3IgJ0hFQUQnLCBi
YXNlX2NvdW50IC0gaWRlbnRpZmllcildICsgbG9nX2Zvcm1hdCwKLSAgICAgICAgICAgICAgICBj
d2Q9c2VsZi5yb290X3BhdGgsCi0gICAgICAgICAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwK
LSAgICAgICAgICAgICAgICBlbmNvZGluZz0ndXRmLTgnLAotICAgICAgICAgICAgKQotICAgICAg
ICAgICAgaWYgbG9nLnJldHVybmNvZGU6Ci0gICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNl
cHRpb24oIkZhaWxlZCB0byByZXRyaWV2ZSBjb21taXQgaW5mb3JtYXRpb24gZm9yICdpe31Ae30n
Ii5mb3JtYXQoaWRlbnRpZmllciwgYnJhbmNoIG9yICdIRUFEJykpCisgICAgICAgICAgICBoYXNo
ID0gc2VsZi5jYWNoZS50b19oYXNoKGlkZW50aWZpZXI9J3t9QHt9Jy5mb3JtYXQoaWRlbnRpZmll
ciwgcGFyc2VkX2JyYW5jaCkpCisgICAgICAgICAgICBpZiBub3QgaGFzaDoKKyAgICAgICAgICAg
ICAgICBiYXNlbGluZSA9IGJyYW5jaCBvciAnSEVBRCcKKyAgICAgICAgICAgICAgICBpc19kZWZh
dWx0ID0gYmFzZWxpbmUgPT0gZGVmYXVsdF9icmFuY2gKKyAgICAgICAgICAgICAgICBpZiBiYXNl
bGluZSA9PSAnSEVBRCc6CisgICAgICAgICAgICAgICAgICAgIGlzX2RlZmF1bHQgPSBkZWZhdWx0
X2JyYW5jaCBpbiBzZWxmLl9icmFuY2hlc19mb3IoYmFzZWxpbmUpCisKKyAgICAgICAgICAgICAg
ICBpZiBpc19kZWZhdWx0IGFuZCBwYXJzZWRfYnJhbmNoX3BvaW50OgorICAgICAgICAgICAgICAg
ICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignQ2Fubm90IHByb3ZpZGUgYSBicmFuY2ggcG9pbnQg
Zm9yIGEgY29tbWl0IG9uIHRoZSBkZWZhdWx0IGJyYW5jaCcpCisKKyAgICAgICAgICAgICAgICBi
YXNlX2NvdW50ID0gc2VsZi5fY29tbWl0X2NvdW50KGJhc2VsaW5lIGlmIGlzX2RlZmF1bHQgZWxz
ZSAne30uLnt9Jy5mb3JtYXQoZGVmYXVsdF9icmFuY2gsIGJhc2VsaW5lKSkKKworICAgICAgICAg
ICAgICAgIGlmIGlkZW50aWZpZXIgPiBiYXNlX2NvdW50OgorICAgICAgICAgICAgICAgICAgICBy
YWlzZSBzZWxmLkV4Y2VwdGlvbignSWRlbnRpZmllciB7fSBjYW5ub3QgYmUgZm91bmQgb24gdGhl
IHNwZWNpZmllZCBicmFuY2ggaW4gdGhlIGN1cnJlbnQgY2hlY2tvdXQnLmZvcm1hdChpZGVudGlm
aWVyKSkKKyAgICAgICAgICAgICAgICBsb2cgPSBydW4oCisgICAgICAgICAgICAgICAgICAgIFtz
ZWxmLmV4ZWN1dGFibGUoKSwgJ2xvZycsICd7fX57fScuZm9ybWF0KGJyYW5jaCBvciAnSEVBRCcs
IGJhc2VfY291bnQgLSBpZGVudGlmaWVyKV0gKyBsb2dfZm9ybWF0LAorICAgICAgICAgICAgICAg
ICAgICBjd2Q9c2VsZi5yb290X3BhdGgsCisgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVfb3V0
cHV0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPSd1dGYtOCcsCisgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgICAgIGlmIGxvZy5yZXR1cm5jb2RlOgorICAgICAgICAg
ICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbigiRmFpbGVkIHRvIHJldHJpZXZlIGNvbW1p
dCBpbmZvcm1hdGlvbiBmb3IgJ2l7fUB7fSciLmZvcm1hdChpZGVudGlmaWVyLCBicmFuY2ggb3Ig
J0hFQUQnKSkKIAotICAgICAgICAgICAgIyBOZWdhdGl2ZSBpZGVudGlmaWVycyBhcmUgYWN0dWFs
bHkgY29tbWl0cyBvbiB0aGUgZGVmYXVsdCBicmFuY2gsIHdlIHdpbGwgbmVlZCB0byByZS1jb21w
dXRlIHRoZSBpZGVudGlmaWVyCi0gICAgICAgICAgICBpZiBpZGVudGlmaWVyIDwgMCBhbmQgaXNf
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignSWxsZWdhbCBu
ZWdhdGl2ZSBpZGVudGlmaWVyIG9uIHRoZSBkZWZhdWx0IGJyYW5jaCcpCi0gICAgICAgICAgICBp
ZiBpZGVudGlmaWVyIDwgMDoKLSAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gTm9uZQorICAg
ICAgICAgICAgICAgICMgTmVnYXRpdmUgaWRlbnRpZmllcnMgYXJlIGFjdHVhbGx5IGNvbW1pdHMg
b24gdGhlIGRlZmF1bHQgYnJhbmNoLCB3ZSB3aWxsIG5lZWQgdG8gcmUtY29tcHV0ZSB0aGUgaWRl
bnRpZmllcgorICAgICAgICAgICAgICAgIGlmIGlkZW50aWZpZXIgPCAwIGFuZCBpc19kZWZhdWx0
OgorICAgICAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignSWxsZWdhbCBuZWdh
dGl2ZSBpZGVudGlmaWVyIG9uIHRoZSBkZWZhdWx0IGJyYW5jaCcpCisgICAgICAgICAgICAgICAg
aWYgaWRlbnRpZmllciA8IDA6CisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgPSBOb25l
CisKKyAgICAgICAgICAgICMgVGhlIGNhY2hlIGNvbnZlcnRlZCB0aGUgaWRlbnRpZmllciB0byBh
IGhhc2gKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbG9nID0gcnVuKAorICAg
ICAgICAgICAgICAgICAgICBbc2VsZi5leGVjdXRhYmxlKCksICdsb2cnLCBoYXNoXSArIGxvZ19m
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnJvb3RfcGF0aCwKKyAgICAgICAg
ICAgICAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgZW5j
b2Rpbmc9J3V0Zi04JywKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgaWYgbG9n
LnJldHVybmNvZGU6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0aW9uKCJG
YWlsZWQgdG8gcmV0cmlldmUgY29tbWl0IGluZm9ybWF0aW9uIGZvciAne30nIi5mb3JtYXQoaGFz
aCkpCiAKICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGBnaXQgbG9nYCBvdXRwdXQgZm9yIGEgZ2l2
ZW4gYnJhbmNoIG9yIHRhZwogICAgICAgICBlbGlmIGJyYW5jaCBvciB0YWc6CkBAIC0yNTIsMTUg
KzQ3MCwyMyBAQCBjbGFzcyBHaXQoU2NtKToKICAgICAgICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0
aW9uKCdJbnZhbGlkIGNvbW1pdCBoYXNoIGluIGdpdCBsb2cnKQogICAgICAgICBoYXNoID0gbWF0
Y2guZ3JvdXAoJ2hhc2gnKQogCisgICAgICAgIGJyYW5jaF9wb2ludCA9IE5vbmUKKyAgICAgICAg
aWYgbm90IGlkZW50aWZpZXIgYW5kIGluY2x1ZGVfaWRlbnRpZmllcjoKKyAgICAgICAgICAgIGNh
Y2hlZF9pZGVudGlmaWVyID0gc2VsZi5jYWNoZS50b19pZGVudGlmaWVyKGhhc2g9aGFzaCkKKyAg
ICAgICAgICAgIGlmIGNhY2hlZF9pZGVudGlmaWVyOgorICAgICAgICAgICAgICAgIGJyYW5jaF9w
b2ludCwgaWRlbnRpZmllciwgYnJhbmNoID0gQ29tbWl0Ll9wYXJzZV9pZGVudGlmaWVyKGNhY2hl
ZF9pZGVudGlmaWVyKQorCiAgICAgICAgICMgQSBjb21taXQgaXMgb2Z0ZW4gb24gbXVsdGlwbGUg
YnJhbmNoZXMsIHRoZSBjYW5vbmljYWwgYnJhbmNoIGlzIHRoZSBvbmUgd2l0aCB0aGUgaGlnaGVz
dCBwcmlvcml0eQotICAgICAgICBicmFuY2ggPSBzZWxmLnByaW9yaXRpemVfYnJhbmNoZXMoc2Vs
Zi5fYnJhbmNoZXNfZm9yKGhhc2gpKQorICAgICAgICBpZiBicmFuY2ggIT0gZGVmYXVsdF9icmFu
Y2g6CisgICAgICAgICAgICBicmFuY2ggPSBzZWxmLnByaW9yaXRpemVfYnJhbmNoZXMoc2VsZi5f
YnJhbmNoZXNfZm9yKGhhc2gpKQogCiAgICAgICAgICMgQ29tcHV0ZSB0aGUgaWRlbnRpZmllciBp
ZiB0aGUgZnVuY3Rpb24gZGlkIG5vdCByZWNlaXZlIG9uZSBhbmQgd2Ugd2VyZSBhc2tlZCB0bwog
ICAgICAgICBpZiBub3QgaWRlbnRpZmllciBhbmQgaW5jbHVkZV9pZGVudGlmaWVyOgogICAgICAg
ICAgICAgaWRlbnRpZmllciA9IHNlbGYuX2NvbW1pdF9jb3VudChoYXNoIGlmIGJyYW5jaCA9PSBk
ZWZhdWx0X2JyYW5jaCBlbHNlICd7fS4ue30nLmZvcm1hdChkZWZhdWx0X2JyYW5jaCwgaGFzaCkp
CiAKICAgICAgICAgIyBPbmx5IGNvbXB1dGUgdGhlIGJyYW5jaCBwb2ludCB3ZSdyZSBvbiBzb21l
dGhpbmcgb3RoZXIgdGhhbiB0aGUgZGVmYXVsdCBicmFuY2gKLSAgICAgICAgYnJhbmNoX3BvaW50
ID0gTm9uZSBpZiBub3QgaW5jbHVkZV9pZGVudGlmaWVyIG9yIGJyYW5jaCA9PSBkZWZhdWx0X2Jy
YW5jaCBlbHNlIHNlbGYuX2NvbW1pdF9jb3VudChoYXNoKSAtIGlkZW50aWZpZXIKKyAgICAgICAg
aWYgbm90IGJyYW5jaF9wb2ludCBhbmQgaW5jbHVkZV9pZGVudGlmaWVyIGFuZCBicmFuY2ggIT0g
ZGVmYXVsdF9icmFuY2g6CisgICAgICAgICAgICBicmFuY2hfcG9pbnQgPSBzZWxmLl9jb21taXRf
Y291bnQoaGFzaCkgLSBpZGVudGlmaWVyCiAgICAgICAgIGlmIGJyYW5jaF9wb2ludCBhbmQgcGFy
c2VkX2JyYW5jaF9wb2ludCBhbmQgYnJhbmNoX3BvaW50ICE9IHBhcnNlZF9icmFuY2hfcG9pbnQ6
CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJQcm92aWRlZCAnYnJhbmNoX3BvaW50JyBk
b2VzIG5vdCBtYXRjaCBicmFuY2ggcG9pbnQgb2Ygc3BlY2lmaWVkIGJyYW5jaCIpCiAKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL2xv
Y2FsL2dpdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9naXQucHkJKHJldmlzaW9uIDI3NzM0MCkKKysr
IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL2xv
Y2FsL2dpdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjQxLDYgKzI0MSwzMSBAQCBub3RoaW5nIHRv
IGNvbW1pdCwgd29ya2luZyB0cmVlIGNsZWFuCiAgICAgICAgICAgICAgICAgICAgICAgICApLAog
ICAgICAgICAgICAgICAgICkgaWYgc2VsZi5maW5kKGFyZ3NbMl0pIGVsc2UgbW9ja3MuUHJvY2Vz
c0NvbXBsZXRpb24ocmV0dXJuY29kZT0xMjgpLAogICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJv
Y2Vzcy5Sb3V0ZSgKKyAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdsb2cnLCByZS5j
b21waWxlKHInLisnKSwKKyAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAg
ICAgICAgIGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBtb2Nrcy5Qcm9jZXNzQ29t
cGxldGlvbigKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuY29kZT0wLAorICAgICAgICAgICAg
ICAgICAgICBzdGRvdXQ9J1xuJy5qb2luKFsKKyAgICAgICAgICAgICAgICAgICAgICAgICdjb21t
aXQge2hhc2h9XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAnQXV0aG9yOiAgICAge2F1dGhv
cn0gPHtlbWFpbH0+XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAnRGF0ZTogICAgICAge2Rh
dGV9XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAnXG57bG9nfScuZm9ybWF0KAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGhhc2g9Y29tbWl0Lmhhc2gsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXV0aG9yPWNvbW1pdC5hdXRob3IubmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbWFpbD1jb21taXQuYXV0aG9yLmVtYWlsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGU9ZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcChjb21taXQudGltZXN0YW1w
ICsgdGltZS50aW1lem9uZSkuc3RyZnRpbWUoJyVhICViICVkICVIOiVNOiVTICVZICswMDAwJyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nPSdcbicuam9pbihbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICgnICAgICcgKyBsaW5lKSBpZiBsaW5lIGVsc2UgJycgZm9y
IGxpbmUgaW4gY29tbWl0Lm1lc3NhZ2Uuc3BsaXRsaW5lcygpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXSArIChbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgZ2l0
LXN2bi1pZDogaHR0cHM6Ly9zdm4ue30vcmVwb3NpdG9yeS97fS90cnVua0B7fSAyNjhmNDVjYy1j
ZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmMnLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYucmVtb3RlLnNwbGl0KCdAJylbLTFdLnNwbGl0KCc6JylbMF0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmJhc2VuYW1lKHBh
dGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0LnJldmlzaW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICldIGlmIGdpdF9zdm4gZWxzZSBbXSksCisg
ICAgICAgICAgICAgICAgICAgICAgICApKSBmb3IgY29tbWl0IGluIHNlbGYuY29tbWl0c19pbl9y
YW5nZShOb25lLCBhcmdzWzJdKQorICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAg
ICAgICkKKyAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCiAgICAgICAgICAg
ICAgICAgc2VsZi5leGVjdXRhYmxlLCAnbG9nJywgJy0tZm9ybWF0PWZ1bGxlcicsIHJlLmNvbXBp
bGUocicuK1wuXC5cLi4rJyksCiAgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogbW9ja3MuUHJvY2Vz
c0NvbXBsZXRpb24oCkBAIC0yNjIsNyArMjg3LDcgQEAgbm90aGluZyB0byBjb21taXQsIHdvcmtp
bmcgdHJlZSBjbGVhbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGdpdC1z
dm4taWQ6IGh0dHBzOi8vc3ZuLnt9L3JlcG9zaXRvcnkve30vdHJ1bmtAe30gMjY4ZjQ1Y2MtY2Qw
OS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjJy5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLnJlbW90ZS5zcGxpdCgnQCcpWy0xXS5zcGxpdCgnOicpWzBdLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5iYXNlbmFtZShwYXRo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0LnJldmlzaW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0LnJldmlzaW9uLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICldIGlmIGdpdF9zdm4gZWxzZSBbXSksCiAgICAgICAg
ICAgICAgICAgICAgICAgICApKSBmb3IgY29tbWl0IGluIHNlbGYuY29tbWl0c19pbl9yYW5nZShh
cmdzWzNdLnNwbGl0KCcuLi4nKVstMV0sIGFyZ3NbM10uc3BsaXQoJy4uLicpWzBdKQogICAgICAg
ICAgICAgICAgICAgICBdKQpAQCAtNDk1LDYgKzUyMCw5IEBAIG5vdGhpbmcgdG8gY29tbWl0LCB3
b3JraW5nIHRyZWUgY2xlYW4KICAgICBkZWYgY29tbWl0c19pbl9yYW5nZShzZWxmLCBiZWdpbiwg
ZW5kKToKICAgICAgICAgYnJhbmNoZXMgPSBbc2VsZi5kZWZhdWx0X2JyYW5jaF0KICAgICAgICAg
Zm9yIGJyYW5jaCwgY29tbWl0cyBpbiBzZWxmLmNvbW1pdHMuaXRlbXMoKToKKyAgICAgICAgICAg
IGlmIGJyYW5jaCA9PSBlbmQgYW5kIGJyYW5jaCAhPSBzZWxmLmRlZmF1bHRfYnJhbmNoOgorICAg
ICAgICAgICAgICAgIGJyYW5jaGVzLmluc2VydCgwLCBicmFuY2gpCisgICAgICAgICAgICAgICAg
YnJlYWsKICAgICAgICAgICAgIGlmIGJyYW5jaCA9PSBzZWxmLmRlZmF1bHRfYnJhbmNoOgogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBmb3IgY29tbWl0IGluIGNvbW1pdHM6
CkBAIC01MDgsNyArNTM2LDcgQEAgbm90aGluZyB0byBjb21taXQsIHdvcmtpbmcgdHJlZSBjbGVh
bgogICAgICAgICBwcmV2aW91cyA9IE5vbmUKICAgICAgICAgZm9yIGJyYW5jaCBpbiBicmFuY2hl
czoKICAgICAgICAgICAgIGZvciBjb21taXQgaW4gcmV2ZXJzZWQoc2VsZi5jb21taXRzW2JyYW5j
aF0pOgotICAgICAgICAgICAgICAgIGlmIGNvbW1pdC5oYXNoID09IGVuZDoKKyAgICAgICAgICAg
ICAgICBpZiBjb21taXQuaGFzaCA9PSBlbmQgb3IgY29tbWl0LmJyYW5jaCA9PSBlbmQ6CiAgICAg
ICAgICAgICAgICAgICAgIGluX3JhbmdlID0gVHJ1ZQogICAgICAgICAgICAgICAgIGlmIGluX3Jh
bmdlIGFuZCAobm90IHByZXZpb3VzIG9yIGNvbW1pdC5oYXNoICE9IHByZXZpb3VzLmhhc2gpOgog
ICAgICAgICAgICAgICAgICAgICB5aWVsZCBjb21taXQKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZ2l0X3VuaXR0ZXN0LnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5
L3Rlc3QvZ2l0X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNzczNDApCisrKyBUb29scy9TY3JpcHRz
L2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2dpdF91bml0dGVzdC5weQko
d29ya2luZyBjb3B5KQpAQCAtMzA1LDYgKzMwNSwzMiBAQCBjbGFzcyBUZXN0R2l0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICAgICAgICAgICAgICAgICAgZ2l0LmNvbW1pdChoYXNoPSc5YjgzMTFm
MicpLAogICAgICAgICAgICAgICAgIF0pLCBDb21taXQuRW5jb2RlcigpLmRlZmF1bHQobGlzdChn
aXQuY29tbWl0cyhiZWdpbj1kaWN0KGFyZ3VtZW50PSc5YjgzMTFmMicpLCBlbmQ9ZGljdChhcmd1
bWVudD0nNjIxNjUyYWQnKSkpKSkKIAorICAgIGRlZiB0ZXN0X2NhY2hlKHNlbGYpOgorICAgICAg
ICBmb3IgbW9jayBpbiBbbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCksIG1vY2tzLmxvY2FsLkdp
dChzZWxmLnBhdGgsIGdpdF9zdm49VHJ1ZSldOgorICAgICAgICAgICAgd2l0aCBtb2NrLCBPdXRw
dXRDYXB0dXJlKCk6CisgICAgICAgICAgICAgICAgcmVwbyA9IGxvY2FsLkdpdChzZWxmLnBhdGgp
CisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG8uY2FjaGUudG9faGFzaChp
ZGVudGlmaWVyPScxQG1haW4nKSwgJzliODMxMWYyNWE3N2JhMTQ5MjNkOWQ1YTY1MzIxMDNmNTRh
YmVmY2InKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwby5jYWNoZS50b19p
ZGVudGlmaWVyKGhhc2g9J2Q4YmNlMjZmYTY1YycpLCAnNUBtYWluJykKKyAgICAgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHJlcG8uY2FjaGUudG9faGFzaChpZGVudGlmaWVyPScyLjNAYnJh
bmNoLWInKSwgJzc5MDcyNWE2ZDc5ZTI4ZGIyZWNkZGUyOTU0OGQyMjYyYzBiZDA1OWQnKQorICAg
ICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwby5jYWNoZS50b19oYXNoKGlkZW50aWZp
ZXI9JzIuMUBicmFuY2gtYScpLCAnYTMwY2U4NDk0YmYxYWMyODA3YTY5ODQ0ZjcyNmJlNGE5ODQz
Y2E1NScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvLmNhY2hlLnRvX2lk
ZW50aWZpZXIoaGFzaD0nYTMwY2U4NDk0YmYxJyksICcyLjFAYnJhbmNoLWEnKQorCisgICAgICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvLmNhY2hlLnRvX2lkZW50aWZpZXIoaGFzaD0n
YmFkYzBkZDFmJyksIE5vbmUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBv
LmNhY2hlLnRvX2hhc2goaWRlbnRpZmllcj0nNkBtYWluJyksIE5vbmUpCisKKworICAgIGRlZiB0
ZXN0X3JldmlzaW9uX2NhY2hlKHNlbGYpOgorICAgICAgICB3aXRoIG1vY2tzLmxvY2FsLkdpdChz
ZWxmLnBhdGgsIGdpdF9zdm49VHJ1ZSksIE91dHB1dENhcHR1cmUoKToKKyAgICAgICAgICAgIHJl
cG8gPSBsb2NhbC5HaXQoc2VsZi5wYXRoKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHJlcG8uY2FjaGUudG9fcmV2aXNpb24oaWRlbnRpZmllcj0nMUBtYWluJyksIDEpCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG8uY2FjaGUudG9faWRlbnRpZmllcihyZXZpc2lvbj0n
cjknKSwgJzVAbWFpbicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG8uY2FjaGUu
dG9faGFzaChyZXZpc2lvbj0ncjknKSwgJ2Q4YmNlMjZmYTY1YzZmYzhmMzljMTc5MjdhYmI3N2Y2
OWZhYjgyZmMnKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG8uY2FjaGUudG9f
aWRlbnRpZmllcihyZXZpc2lvbj0xMDApLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChyZXBvLmNhY2hlLnRvX3JldmlzaW9uKGhhc2g9J2JhZGMwZGQxZicpLCBOb25lKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvLmNhY2hlLnRvX3JldmlzaW9uKGlkZW50aWZp
ZXI9JzZAbWFpbicpLCBOb25lKQogCiBjbGFzcyBUZXN0R2l0SHViKHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICByZW1vdGUgPSAnaHR0cHM6Ly9naXRodWIuZXhhbXBsZS5jb20vV2ViS2l0L1dlYktp
dCcK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429213</attachid>
            <date>2021-05-20 13:53:40 -0700</date>
            <delta_ts>2021-05-20 14:00:36 -0700</delta_ts>
            <desc>Add identifiers cache</desc>
            <filename>identifier-mappings-cache.patch</filename>
            <type>text/plain</type>
            <size>50152</size>
            <attacher name="Dean Johnson">dean_johnson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxMmYz
OTc0NTc3YWUuLmMzNGVmMGZjNTk2YiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIxLTA1LTIwICBEZWFuIEpvaG5z
b24gIDxkZWFuX2pvaG5zb25AYXBwbGUuY29tPgorCisgICAgICAgIFt3ZWJraXRzY21weV0gQ2Fj
aGUgaWRlbnRpZmllcnMgaW4gR2l0IGNoZWNrb3V0cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NjE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGFuIGlkZW50aWZpZXIgbWFw
cGluZyBjYWNoZSBwZXItYnJhbmNoIHRvIDxyZXBvX3Jvb3Q+Ly5naXQvY2FjaGVzLiBJdCBvbmx5
IGV2ZXIgY2FjaGVzCisgICAgICAgIHdoYXQgaXMgcHVzaGVkIHRvIGEgcmVtb3RlLCBhbmQgc2lu
Y2Ugd2UgZG8gbm90IGFsbG93IGZvcmNlLXB1c2hpbmcgdG8gbWFpbiwgd2Ugc2hvdWxkIG5ldmVy
IGhhdmUgdG8KKyAgICAgICAgaW52YWxpZGF0ZSB0aGUgY2FjaGUuCisKKyAgICAgICAgKiBTY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9naXQucHk6CisgICAg
ICAgIChHaXRDYWNoZSk6IEFkZGVkLiBNdWx0aS1kaXJlY3Rpb25hbCBjYWNoZSBiZXR3ZWVuIGhh
c2hlcywgcmV2aXNpb25zIGFuZCBpZGVudGlmaWVycy4gTGF6aWx5IGxvYWRzCisgICAgICAgIGNh
Y2hlcyBhbmQgaWRlbnRpZmllciAtPiBoYXNoICsgcmV2aXNpb24gLyBoYXNoICsgcmV2aXNpb24g
LT4gaWRlbnRpZmllciBtYXBwaW5ncy4KKyAgICAgICAgKEdpdENhY2hlLl9faW5pdF9fKToKKyAg
ICAgICAgKEdpdENhY2hlLmluaXRpYWxpemUpOgorICAgICAgICAoR2l0Q2FjaGUucGF0aCk6IFBh
dGggZm9yIHRoZSBjYWNoZSB0byBiZSBzdG9yZWQuCisgICAgICAgIChHaXRDYWNoZS5wb3B1bGF0
ZSk6IENyZWF0ZXMgb3IgdXBkYXRlcyBjYWNoZSBlbnRyaWVzIGluLXBsYWNlLgorICAgICAgICAo
R2l0Q2FjaGUuc2V0X2hhc2hfbWFwcGluZyk6IEhhc2hlcyBhcmUgc3RvcmVkIHVzaW5nIHRoZSBm
aXJzdCA2IGNoYXJhY3RlcnMgcG9pbnRpbmcgdG8gYSBkaWN0aW9uYXJ5IAorICAgICAgICBvZiB0
aGUgcmVtYWluaW5nIDM0IGNoYXJhY3RlcnMuIFRoaXMgYWxsb3dzIHRoZSBjYWNoZSB0byBiZSBo
aXQgZm9yIGhhc2hlcyBhcyBzaG9ydCBhcyA2IGNoYXJhY3RlcnMsCisgICAgICAgIHdoaWxlIHN0
aWxsIGVuYWJsaW5nIGlkZW50aWZpZXJzIHRvIG1hcCB0byA0MCBjaGFyYWN0ZXIgaGFzaGVzLgor
ICAgICAgICAoR2l0Q2FjaGUuZ2V0X2hhc2hfbWFwcGluZyk6IEhlbHBlciBmdW5jdGlvbiBmb3Ig
YWNjZXNzaW5nIHRoZSBoYXNoIG1hcHBpbmcgc3RvcmFnZTsgcmVwbGljYXRlcyBHaXQKKyAgICAg
ICAgYmVoYXZpb3Igd2hlbiB0aGVyZSBpcyBtdWx0aXBsZSBtYXRjaGVzIGZvciBhIHByb3ZpZGVk
IGhhc2ggKGUuZy4gcmFpc2UgYW4gZXJyb3IpLgorICAgICAgICAoR2l0Q2FjaGUubG9hZF9jb21t
aXRzX2FuZF9yZXZpc2lvbnNfY2FjaGUpOiBMb2FkcyBjb21taXRzIGFuZCByZXZpc2lvbnMgY2Fj
aGUuCisgICAgICAgIChHaXRDYWNoZS5sb2FkX2lkZW50aWZpZXJfY2FjaGUpOiBMb2FkcyBjb21t
aXRzIGFuZCByZXZpc2lvbnMgY2FjaGUgKGlmIG5lZWRlZCksIHRoZW4gaWRlbnRpZmllciBtYXBw
aW5ncy4KKyAgICAgICAgKEdpdENhY2hlLmNhbm9uaWNhbGl6ZV9icmFuY2hfaWRlbnRpZmllcik6
IEFkZCBpbiB0aGUgJzxicmFuY2hfcG9pbnQ+LicgcHJlZml4IGZvciBicmFuY2gtYmFzZWQKKyAg
ICAgICAgaWRlbnRpZmllcnMgbGlrZSAyQHNhZmFyaS02MTEtYnJhbmNoLgorICAgICAgICAoR2l0
Q2FjaGUuZm9ybWF0X2lkZW50aWZpZXIpOiBGb3JtYXR0aW5nIGZ1bmN0aW9uIGZvciBpZGVudGlm
aWVycy4KKyAgICAgICAgKEdpdENhY2hlLmZvcm1hdF9oYXNoKTogRGl0dG8gZm9yIGhhc2hlcy4K
KyAgICAgICAgKEdpdENhY2hlLmZvcm1hdF9yZXZpc2lvbik6IERpdHRvIGZvciByZXZpc2lvbnMu
CisgICAgICAgIChHaXRDYWNoZS5oYXNoX3RvX2lkZW50aWZpZXIpOiBDb252ZXJ0cyBhIGhhc2gg
dG8gYW4gaWRlbnRpZmllciwgb3IgTm9uZSBpZiB0aGUgaGFzaCBkb2VzIG5vdCBleGlzdC4KKyAg
ICAgICAgKEdpdENhY2hlLmhhc2hfdG9fcmV2aXNpb24pOiBEaXR0bywgYnV0IGZvciBoYXNoIC0+
IHJldmlzaW9uLgorICAgICAgICAoR2l0Q2FjaGUucmV2aXNpb25fdG9faWRlbnRpZmllcik6IERp
dHRvLCBidXQgZm9yIHJldmlzaW9uIC0+IGlkZW50aWZpZXIuCisgICAgICAgIChHaXRDYWNoZS5y
ZXZpc2lvbl90b19oYXNoKTogRGl0dG8sIGJ1dCBmb3IgcmV2aXNpb24gLT4gaGFzaC4KKyAgICAg
ICAgKEdpdENhY2hlLmlkZW50aWZpZXJfdG9faGFzaCk6IERpdHRvLCBidXQgZm9yIGlkZW50aWZp
ZXIgLT4gaGFzaC4KKyAgICAgICAgKEdpdENhY2hlLmlkZW50aWZpZXJfdG9fcmV2aXNpb24pOiBE
aXR0bywgYnV0IGZvciBpZGVudGlmaWVyIC0+IHJldmlzaW9uLgorICAgICAgICAoR2l0Q2FjaGUu
X3RyYW5zbGF0ZSk6IEhlbHBlciBmdW5jdGlvbiBmb3IgdHJhbnNsYXRpbmcgaWRlbnRpZmllcnMu
CisgICAgICAgIChHaXQuX19pbml0X18pOgorICAgICAgICAoR2l0KToKKyAgICAgICAgKEdpdC5k
ZWZhdWx0X2JyYW5jaCk6IEFkZCBtZW1vaXphdGlvbiBzbyByZXBlYXRlZCBjYWxscyBkbyBub3Qg
cmVzdWx0IGluIHNoZWxsIGNvbW1hbmRzIHJ1bm5pbmcuCisgICAgICAgIChHaXQubWVtb2l6ZWRf
Y3VycmVudF9icmFuY2gpOiBBZGQgZnVuY3Rpb24gZm9yIG1lbW9pemVkIGN1cnJlbnQgYnJhbmNo
LgorICAgICAgICAoR2l0Lm1lbW9pemVkX2xvY2FsX2JyYW5jaGVzKTogQWRkIGZ1bmN0aW9uIGZv
ciBtZW1vaXplZCBsaXN0IG9mIGxvY2FsIGJyYW5jaGVzLgorICAgICAgICAoR2l0LmNvbW1pdCk6
IE1ha2UgdXNlIG9mIGNhY2hlIHRvIGNyZWF0ZSBtYXBwaW5ncyBiZXR3ZWVuIGhhc2hlcyA8PiBy
ZXZpc2lvbnMgPD4gaWRlbnRpZmllcnMuCisgICAgICAgIChHaXQudXBzdHJlYW1fcmVtb3RlKTog
QWRkIGZ1bmN0aW9uIGZvciBkZWZhdWx0IHVwc3RyZWFtIHJlbW90ZS4gVGhpcyBpcyB1c2VkIHRv
IGZpZ3VyZSBvdXQgd2hhdCBpcworICAgICAgICBjYWNoZWFibGUgb24gZWFjaCBicmFuY2guCisg
ICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3Mv
bG9jYWwvZ2l0LnB5OiBQdXQgbW9jayByZXBvc2l0b3JpZXMgaW4gL3RtcCBzbyB3ZSBjYW4gCisg
ICAgICAgIHdyaXRlIGNhY2hlcyB0byB0aGVtLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3NjbV9iYXNlLnB5OgorICAgICAgICAoU2NtQmFzZSk6
IEFkZCAvIHVwZGF0ZSByZWdleGVzIGZvciBjYWNoZSBjcmVhdGlvbi4KKyAgICAgICAgKiBTY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2Nhbm9uaWNhbGl6ZV91
bml0dGVzdC5weTogRGl0dG8gdG8gbW9jayByZXBvcyBpbiAvdG1wLgorICAgICAgICAoVGVzdENh
bm9uaWNhbGl6ZS5zZXRVcCk6CisgICAgICAgIChUZXN0Q2Fub25pY2FsaXplKToKKyAgICAgICAg
KFRlc3RDYW5vbmljYWxpemUudGVhckRvd24pOgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvY2hlY2tvdXRfdW5pdHRlc3QucHk6IERpdHRv
IHRvIG1vY2sgcmVwb3MgaW4gL3RtcC4KKyAgICAgICAgKFRlc3RDaGVja291dC5zZXRVcCk6Cisg
ICAgICAgIChUZXN0Q2hlY2tvdXQpOgorICAgICAgICAoVGVzdENoZWNrb3V0LnRlYXJEb3duKToK
KyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0
L2ZpbmRfdW5pdHRlc3QucHk6IERpdHRvIHRvIG1vY2sgcmVwb3MgaW4gL3RtcC4KKyAgICAgICAg
KFRlc3RGaW5kLnNldFVwKToKKyAgICAgICAgKFRlc3RGaW5kKToKKyAgICAgICAgKFRlc3RGaW5k
LnRlYXJEb3duKToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJr
aXRzY21weS90ZXN0L2dpdF91bml0dGVzdC5weTogRGl0dG8gdG8gbW9jayByZXBvcyBpbiAvdG1w
IGFuZAorICAgICAgICBhZGQgdW5pdCB0ZXN0cyBmb3IgdGhlIG5ldyBjYWNoaW5nIGxheWVyLgor
ICAgICAgICAoVGVzdEdpdC5zZXRVcCk6CisgICAgICAgIChUZXN0R2l0KToKKyAgICAgICAgKFRl
c3RHaXQudGVhckRvd24pOgorICAgICAgICAoVGVzdEdpdC50ZXN0X2luZm8pOgorICAgICAgICAo
VGVzdEdpdC50ZXN0X2NhY2hlKToKKyAgICAgICAgKFRlc3RHaXQudGVzdF9yZXZpc2lvbl9jYWNo
ZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3N2bi5w
eToKKyAgICAgICAgKFNWTi5pbl93b3JraW5nX2RpcmVjdG9yeSk6IEZpeCBlcnJvci1wcm9uZSBs
b2dpYyBmb3IgU1ZOIHJlcG9zaXRvcnkgZGV0ZWN0aW9uLgorCiAyMDIxLTA1LTEzICBBYWthc2gg
SmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbZXdzXSBTdHlsZSBmaXhl
cyBpbiBzdGVwcy5weQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5CmluZGV4IDllNmNhN2ZiMGM3NC4u
ZTAyMzNhYThlYTA5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9sb2NhbC9naXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5CkBAIC0yMSw2ICsyMSw3IEBA
CiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCBjYWxlbmRhcgoraW1wb3J0IGpzb24KIGltcG9ydCBs
b2dnaW5nCiBpbXBvcnQgb3MKIGltcG9ydCByZQpAQCAtMzYsNiArMzcsMzE3IEBAIGZyb20gd2Vi
a2l0c2NtcHkubG9jYWwgaW1wb3J0IFNjbQogZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgQ29tbWl0
LCBDb250cmlidXRvciwgbG9nCiAKIAorY2xhc3MgR2l0Q2FjaGUob2JqZWN0KToKKyAgICBIQVNI
X1BBUlRJVElPTl9TSVpFID0gNgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcG8sIGluaXRp
YWxpemU9RmFsc2UpOgorICAgICAgICBzZWxmLnJlcG8gPSByZXBvCisgICAgICAgIHNlbGYuX21h
cHBpbmdzID0ge30KKyAgICAgICAgc2VsZi5fa25vd25fdXBkYXRlZF9icmFuY2hlcyA9IHNldCgp
CisKKyAgICAgICAgaWYgaW5pdGlhbGl6ZToKKyAgICAgICAgICAgIHNlbGYuaW5pdGlhbGl6ZShi
cmFuY2g9c2VsZi5yZXBvLmRlZmF1bHRfYnJhbmNoKQorCisgICAgZGVmIGluaXRpYWxpemUoc2Vs
ZiwgYnJhbmNoPU5vbmUpOgorICAgICAgICAnJycKKyAgICAgICAgRm9ybWF0IGZvciBtYXBwaW5n
IGlzIGV4cGVjdGVkIHRvIGJlOgorICAgICAgICAgIG1hcHBpbmcgPSB7CisgICAgICAgICAgICBi
cmFuY2g6IHsKKyAgICAgICAgICAgICAgJ2NvbW1pdHMnOiB7fSwKKyAgICAgICAgICAgICAgJ3Jl
dmlzaW9ucyc6IHt9LAorICAgICAgICAgICAgICAnbGFzdF91cGRhdGVkJzogeworICAgICAgICAg
ICAgICAgICdjb21taXQnOiAnJyBvciBuaWwsCisgICAgICAgICAgICAgICAgJ2lkZW50aWZpZXIn
OiAwIG9yIG5pbCwKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0K
KyAgICAgICAgJycnCisKKyAgICAgICAgaWYgbm90IGJyYW5jaDoKKyAgICAgICAgICAgIHJldHVy
bgorCisgICAgICAgIGpzb25fcGF0aCA9IHNlbGYucGF0aChicmFuY2gpCisgICAgICAgIGlmIG9z
LnBhdGguZXhpc3RzKGpzb25fcGF0aCkgYW5kIGJyYW5jaCBub3QgaW4gc2VsZi5fbWFwcGluZ3M6
CisgICAgICAgICAgICB3aXRoIG9wZW4oanNvbl9wYXRoKSBhcyBmaWxlOgorICAgICAgICAgICAg
ICAgIGNvbnRlbnQgPSBqc29uLmxvYWQoZmlsZSkKKyAgICAgICAgICAgICAgICBzZWxmLl9tYXBw
aW5nc1ticmFuY2hdID0gY29udGVudAorICAgICAgICBlbGlmIGJyYW5jaCBub3QgaW4gc2VsZi5f
bWFwcGluZ3M6CisgICAgICAgICAgICBzZWxmLl9tYXBwaW5nc1ticmFuY2hdID0geydjb21taXRz
Jzoge30sICdyZXZpc2lvbnMnOiB7fSwgJ2xhc3RfdXBkYXRlZCc6IHt9fQorCisgICAgZGVmIHBh
dGgoc2VsZiwgYnJhbmNoKToKKyAgICAgICAgYmFzZV9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYu
cmVwby5yb290X3BhdGgsICcuZ2l0JywgJ2NhY2hlcycsIGJyYW5jaCkKKyAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGJhc2VfcGF0aCk6CisgICAgICAgICAg
ICAgICAgb3MubWFrZWRpcnMoYmFzZV9wYXRoKQorICAgICAgICBleGNlcHQgT1NFcnJvcjogICMg
Rm9yIHVuaXQgdGVzdHMKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICByZXR1cm4gb3MucGF0
aC5qb2luKGJhc2VfcGF0aCwgJ2lkZW50aWZpZXJzLmpzb24nKQorCisgICAgZGVmIHBvcHVsYXRl
KHNlbGYsIGJyYW5jaCk6CisgICAgICAgIGlmIGJyYW5jaCBpbiBzZWxmLl9rbm93bl91cGRhdGVk
X2JyYW5jaGVzOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgc2VsZi5pbml0aWFsaXpl
KGJyYW5jaCkKKyAgICAgICAgZW5kX2JyYW5jaCA9IG9zLnBhdGguam9pbihzZWxmLnJlcG8udXBz
dHJlYW1fcmVtb3RlLCBicmFuY2gpCisKKyAgICAgICAgc3RhcnQgPSBzZWxmLl9tYXBwaW5ncy5n
ZXQoYnJhbmNoLCB7fSkuZ2V0KCdsYXN0X3VwZGF0ZWQnKQorCisgICAgICAgIHJlc3VsdCA9IHJ1
bihbc2VsZi5yZXBvLmV4ZWN1dGFibGUoKSwgJ3Jldi1wYXJzZScsIGVuZF9icmFuY2hdLCBjd2Q9
c2VsZi5yZXBvLnJvb3RfcGF0aCwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgZW5jb2Rpbmc9J3V0Zi04
JykKKyAgICAgICAgaXNfY2FjaGVhYmxlX2JyYW5jaCA9IHJlc3VsdC5yZXR1cm5jb2RlID09IDAg
ICMgUmVtb3RlIGJyYW5jaCBleGlzdHMKKyAgICAgICAgb3V0cHV0ID0gcmVzdWx0LnN0ZG91dC5z
dHJpcCgpCisKKyAgICAgICAgaWYgb3V0cHV0IGFuZCBzdGFydCBhbmQgc3RhcnRbJ2NvbW1pdCdd
ID09IG91dHB1dFs6bGVuKHN0YXJ0Wydjb21taXQnXSldOgorICAgICAgICAgICAgc2VsZi5fa25v
d25fdXBkYXRlZF9icmFuY2hlcy5hZGQoYnJhbmNoKQorICAgICAgICAgICAgcmV0dXJuICAjIENh
Y2hlIGlzIHVwIHRvIGRhdGUKKworICAgICAgICBpZiBub3QgaXNfY2FjaGVhYmxlX2JyYW5jaDoK
KyAgICAgICAgICAgIHNlbGYuX21hcHBpbmdzW2JyYW5jaF0gPSB7J2NvbW1pdHMnOiB7fSwgJ3Jl
dmlzaW9ucyc6IHt9LCAnbGFzdF91cGRhdGVkJzoge319CisgICAgICAgICAgICBzZWxmLl9rbm93
bl91cGRhdGVkX2JyYW5jaGVzLmFkZChicmFuY2gpCisgICAgICAgICAgICByZXR1cm4KKworICAg
ICAgICBvcmRlcl9zdGFydCA9IDEKKyAgICAgICAgcmFuZ2VfYXJnID0gJycKKyAgICAgICAgcHJp
bWFyeV91cHN0cmVhbV9yZW1vdGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5yZXBvLnVwc3RyZWFtX3Jl
bW90ZSwgc2VsZi5yZXBvLmRlZmF1bHRfYnJhbmNoKQorICAgICAgICBpZiBzdGFydCBhbmQgc3Rh
cnQuZ2V0KCdpZGVudGlmaWVyJyk6CisgICAgICAgICAgICBvcmRlcl9zdGFydCA9IGludChzdGFy
dFsnaWRlbnRpZmllciddKQorICAgICAgICAgICAgcmFuZ2VfYXJnICs9IHN0YXJ0Wydjb21taXQn
XSArICcuLicKKyAgICAgICAgZWxpZiBicmFuY2ggIT0gc2VsZi5yZXBvLmRlZmF1bHRfYnJhbmNo
OgorICAgICAgICAgICAgcmFuZ2VfYXJnICs9IHByaW1hcnlfdXBzdHJlYW1fcmVtb3RlICsgJy4u
JworCisgICAgICAgIHJhbmdlX2FyZyArPSBlbmRfYnJhbmNoCisKKyAgICAgICAgIyBGaXJzdCB0
aW1lIHJ1bm5pbmcsIGJlIHN1cmUgdG8gcmVjb3JkIHdoZXJlIG5vbi1kZWZhdWx0IGJyYW5jaCBm
b3JrZWQgZnJvbS4KKyAgICAgICAgaWYgb3JkZXJfc3RhcnQgPT0gMSBhbmQgYnJhbmNoICE9IHNl
bGYucmVwby5kZWZhdWx0X2JyYW5jaDoKKyAgICAgICAgICAgIHByaW1hcnlfYnJhbmNoX2ludGVy
c2VjdGlvbl9jb21tYW5kID0gW3NlbGYucmVwby5leGVjdXRhYmxlKCksICdtZXJnZS1iYXNlJywg
cHJpbWFyeV91cHN0cmVhbV9yZW1vdGUsIGVuZF9icmFuY2hdCisgICAgICAgICAgICBmaXJzdF9j
b21taXQgPSBydW4ocHJpbWFyeV9icmFuY2hfaW50ZXJzZWN0aW9uX2NvbW1hbmQsIGN3ZD1zZWxm
LnJlcG8ucm9vdF9wYXRoLCBjYXB0dXJlX291dHB1dD1UcnVlLCBlbmNvZGluZz0ndXRmLTgnKS5z
dGRvdXQuc3RyaXAoKQorICAgICAgICAgICAgc2VsZi5zZXRfaGFzaF9tYXBwaW5nKGJyYW5jaCwg
Zmlyc3RfY29tbWl0LCAwKQorCisgICAgICAgIGNhY2hlX3BvcHVsYXRpb25fY29tbWFuZCA9IFtz
ZWxmLnJlcG8uZXhlY3V0YWJsZSgpLCAnbG9nJywgcmFuZ2VfYXJnLCAnLS1yZXZlcnNlJ10KKyAg
ICAgICAgcmVzdWx0cyA9IHJ1bihjYWNoZV9wb3B1bGF0aW9uX2NvbW1hbmQsIGN3ZD1zZWxmLnJl
cG8ucm9vdF9wYXRoLCBjYXB0dXJlX291dHB1dD1UcnVlLCBlbmNvZGluZz0ndXRmLTgnKQorCisg
ICAgICAgICMgVGVjaG5pY2FsbHkgd2Ugc2hvdWxkIG5ldmVyIHNlZSB0aGlzIGluIGEgbG9jYWwg
Y2hlY2tvdXQsIGJ1dCBpdCdzIHBvc3NpYmxlIGluIHRlc3RzLgorICAgICAgICBpZiByZXN1bHRz
LnN0ZG91dCA9PSAnJzoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGxvZyA9IE5vbmUK
KyAgICAgICAgdHJ5OgorICAgICAgICAgICAga3dhcmdzID0gZGljdCgpCisgICAgICAgICAgICBp
ZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCAwKToKKyAgICAgICAgICAgICAgICBrd2FyZ3MgPSBk
aWN0KGVuY29kaW5nPSd1dGYtOCcpCisKKyAgICAgICAgICAgIGxvZyA9IHN1YnByb2Nlc3MuUG9w
ZW4oY2FjaGVfcG9wdWxhdGlvbl9jb21tYW5kLCBjd2Q9c2VsZi5yZXBvLnJvb3RfcGF0aCwKKyAg
ICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5Q
SVBFLCAqKmt3YXJncykKKyAgICAgICAgICAgIGlmIGxvZy5wb2xsKCk6CisgICAgICAgICAgICAg
ICAgcmFpc2Ugc2VsZi5yZXBvLkV4Y2VwdGlvbigiRmFpbGVkIHRvIGNvbnN0cnVjdCBicmFuY2gg
aGlzdG9yeSBmb3IgJ3t9JyIuZm9ybWF0KGJyYW5jaCkpCisKKyAgICAgICAgICAgIF9oYXNoLCBy
ZXZpc2lvbiwgbGFzdF9oYXNoID0gTm9uZSwgTm9uZSwgTm9uZQorICAgICAgICAgICAgcmVsYXRp
dmVfaWRlbnRpZmllcl9mcm9tX3N0YXJ0ID0gMAorCisgICAgICAgICAgICBsaW5lID0gbG9nLnN0
ZG91dC5yZWFkbGluZSgpCisgICAgICAgICAgICB3aGlsZSBsaW5lOgorICAgICAgICAgICAgICAg
IGlmIG5vdCBsaW5lLnN0cmlwKCk6CisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsb2cuc3Rk
b3V0LnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAg
ICAgICAgICMgQ2FjaGUgYnVpbGRpbmcgbXVzdCBzdXBwb3J0IGNhc2VzIHdoZXJlIGEgcmVwb3Np
dG9yeSBtYXkgb3IgbWF5IG5vdCBoYXZlIGhpc3RvcmljYWwgZ2l0LXN2biBkYXRhLgorICAgICAg
ICAgICAgICAgIGhhc2hfbWF0Y2ggPSBzZWxmLnJlcG8uQ09NTUlUX0ZST01fTE9HLm1hdGNoKGxp
bmUpCisgICAgICAgICAgICAgICAgaWYgaGFzaF9tYXRjaCBhbmQgX2hhc2ggaXMgTm9uZTogICMg
Z2l0LXN2biBsb2dpYworICAgICAgICAgICAgICAgICAgICBpZiBsYXN0X2hhc2ggaXMgbm90IE5v
bmU6CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgX2hhc2ggaXMgTm9uZSwgIkVycm9y
OiBTb21laG93IGdvdCBhIG5vbi1lbXB0eSBoYXNoIHt9Li4uIG1heWJlIHJldmlzaW9uIGZvciBw
cmV2aW91cyBjb21taXQgZmFpbGVkIHRvIGJlIGNhcHR1cmVkPyIuZm9ybWF0KF9oYXNoKQorCisg
ICAgICAgICAgICAgICAgICAgIF9oYXNoID0gaGFzaF9tYXRjaC5ncm91cCgnY29tbWl0JykKKyAg
ICAgICAgICAgICAgICBlbGlmIGhhc2hfbWF0Y2ggYW5kIF9oYXNoIGlzIG5vdCBOb25lOiAgIyBu
b24gZ2l0LXN2biBsb2dpYworICAgICAgICAgICAgICAgICAgICBsYXN0X2hhc2ggPSBfaGFzaAor
ICAgICAgICAgICAgICAgICAgICBzZWxmLnNldF9oYXNoX21hcHBpbmcoYnJhbmNoLCBfaGFzaCwg
b3JkZXJfc3RhcnQgKyByZWxhdGl2ZV9pZGVudGlmaWVyX2Zyb21fc3RhcnQpCisgICAgICAgICAg
ICAgICAgICAgIHJlbGF0aXZlX2lkZW50aWZpZXJfZnJvbV9zdGFydCArPSAxCisKKyAgICAgICAg
ICAgICAgICAgICAgX2hhc2ggPSBoYXNoX21hdGNoLmdyb3VwKCdjb21taXQnKQorCisgICAgICAg
ICAgICAgICAgcmV2aXNpb25fbWF0Y2ggPSBzZWxmLnJlcG8uR0lUX1NWTl9SRVZJU0lPTi5tYXRj
aChsaW5lKQorICAgICAgICAgICAgICAgIGlmIHJldmlzaW9uX21hdGNoOiAgIyBnaXQtc3ZuIGxv
Z2ljCisgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uID0gc3RyKHJldmlzaW9uX21hdGNoLmdy
b3VwKCdyZXZpc2lvbicpKQorCisgICAgICAgICAgICAgICAgICAgICMgRmx1c2ggdG8gbWFwcGlu
ZworICAgICAgICAgICAgICAgICAgICBhc3NlcnQgX2hhc2ggaXMgbm90IE5vbmUgYW5kIHJldmlz
aW9uIGlzIG5vdCBOb25lLCAiRXJyb3I6IFNvbWVob3cgcmV2aXNpb24gb3IgX2hhc2ggaXMgTm9u
ZS4uLiIKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXRfaGFzaF9tYXBwaW5nKGJyYW5jaCwg
X2hhc2gsIG9yZGVyX3N0YXJ0ICsgcmVsYXRpdmVfaWRlbnRpZmllcl9mcm9tX3N0YXJ0KQorICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9tYXBwaW5nc1ticmFuY2hdWydyZXZpc2lvbnMnXVtyZXZp
c2lvbl0gPSBvcmRlcl9zdGFydCArIHJlbGF0aXZlX2lkZW50aWZpZXJfZnJvbV9zdGFydAorCisg
ICAgICAgICAgICAgICAgICAgIGxhc3RfaGFzaCA9IF9oYXNoCisgICAgICAgICAgICAgICAgICAg
IF9oYXNoLCByZXZpc2lvbiA9IE5vbmUsIE5vbmUKKyAgICAgICAgICAgICAgICAgICAgcmVsYXRp
dmVfaWRlbnRpZmllcl9mcm9tX3N0YXJ0ICs9IDEKKworICAgICAgICAgICAgICAgIGxpbmUgPSBs
b2cuc3Rkb3V0LnJlYWRsaW5lKCkKKworICAgICAgICAgICAgYXNzZXJ0IHJldmlzaW9uIGlzIE5v
bmUsICdFcnJvcjogRXhwZWN0ZWQgcmV2aXNpb24gdG8gYmUgTm9uZSBhZnRlciBnZW5lcmF0aW5n
IGNhY2hlIGZvciB7fS4nLmZvcm1hdChicmFuY2gpCisgICAgICAgICAgICBpZiBfaGFzaDogICMg
bm9uIGdpdC1zdm4gbG9naWM7IGZsdXNoIHNpbmNlIHdlIHByb2Nlc3MgYWZ0ZXIgZWFjaCBjb21t
aXQuCisgICAgICAgICAgICAgICAgbGFzdF9oYXNoID0gX2hhc2gKKyAgICAgICAgICAgICAgICBz
ZWxmLnNldF9oYXNoX21hcHBpbmcoYnJhbmNoLCBfaGFzaCwgb3JkZXJfc3RhcnQgKyByZWxhdGl2
ZV9pZGVudGlmaWVyX2Zyb21fc3RhcnQpCisgICAgICAgICAgICAgICAgcmVsYXRpdmVfaWRlbnRp
Zmllcl9mcm9tX3N0YXJ0ICs9IDEKKworICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYg
bG9nOgorICAgICAgICAgICAgICAgIGxvZy5raWxsKCkKKworICAgICAgICBzZWxmLl9tYXBwaW5n
c1ticmFuY2hdWydsYXN0X3VwZGF0ZWQnXSA9IHsnY29tbWl0JzogbGFzdF9oYXNoLCAnaWRlbnRp
Zmllcic6IG9yZGVyX3N0YXJ0ICsgcmVsYXRpdmVfaWRlbnRpZmllcl9mcm9tX3N0YXJ0fQorICAg
ICAgICBzZWxmLl9rbm93bl91cGRhdGVkX2JyYW5jaGVzLmFkZChicmFuY2gpCisKKyAgICAgICAg
dHJ5OgorICAgICAgICAgICAgd2l0aCBvcGVuKHNlbGYucGF0aChicmFuY2gpLCAndycpIGFzIGZp
bGU6CisgICAgICAgICAgICAgICAganNvbi5kdW1wKHNlbGYuX21hcHBpbmdzW2JyYW5jaF0sIGZp
bGUsIGluZGVudD00KQorICAgICAgICBleGNlcHQgKElPRXJyb3IsIE9TRXJyb3IsIEZpbGVOb3RG
b3VuZEVycm9yKToKKyAgICAgICAgICAgIHNlbGYucmVwby5sb2coIkZhaWxlZCB0byB3cml0ZSBp
ZGVudGlmaWVyIGNhY2hlIHRvICd7fSciLmZvcm1hdChzZWxmLnBhdGgpKQorICAgICAgICAgICAg
aWYgb3MucGF0aC5leGlzdHMoc2VsZi5wYXRoKGJyYW5jaCkpOgorICAgICAgICAgICAgICAgIG9z
LnJlbW92ZShzZWxmLnBhdGgoYnJhbmNoKSkKKworICAgIGRlZiBzZXRfaGFzaF9tYXBwaW5nKHNl
bGYsIGJyYW5jaCwgaGFzaF9rZXksIGlkZW50aWZpZXIpOgorICAgICAgICAnJycKKyAgICAgICAg
VG8gc3VwcG9ydCB1c2luZyB0aGUgY2FjaGUgZm9yIGNvbW1pdHMgYXMgc2hvcnQgYXMgNiBjaGFy
YWN0ZXJzLCB1c2UgYSBuZXN0ZWQgZGljdGlvbmFyeQorICAgICAgICBmb3IgdGhlIGZpcnN0IDYg
Y2hhcmFjdGVycyAtPiByZW1haW5pbmcgMzQgY2hhcmFjdGVycyAtPiBpZGVudGlmaWVyLgorCisg
ICAgICAgIEV4YW1wbGU6CisgICAgICAgIGhhc2gxOiA5YzMxNGEyNDIwNzM1ZDAyOWNkZjg5ZjZj
MzA3MzA4NTVjYTJhNGU1CisgICAgICAgIGhhc2gyOiA5YzMxNGEyOTkxMGE5NWE3NmYyZDkzMGFl
YThlODMxMjhmZmE1NDk1CisgICAgICAgICI5YzMxNGEiOiB7CisgICAgICAgICAgICAiMjQyMDcz
NWQwMjljZGY4OWY2YzMwNzMwODU1Y2EyYTRlNSI6IDExLAorICAgICAgICAgICAgIjI5OTEwYTk1
YTc2ZjJkOTMwYWVhOGU4MzEyOGZmYTU0OTUiOiAzMjQ4MAorICAgICAgICB9LAorICAgICAgICAn
JycKKyAgICAgICAgZmlyc3RfcGFydGl0aW9uID0gaGFzaF9rZXlbOnNlbGYuSEFTSF9QQVJUSVRJ
T05fU0laRV0KKyAgICAgICAgcmVtYWluaW5nID0gaGFzaF9rZXlbc2VsZi5IQVNIX1BBUlRJVElP
Tl9TSVpFOl0KKyAgICAgICAgc2VsZi5fbWFwcGluZ3NbYnJhbmNoXVsnY29tbWl0cyddLnNldGRl
ZmF1bHQoZmlyc3RfcGFydGl0aW9uLCB7fSkKKyAgICAgICAgc2VsZi5fbWFwcGluZ3NbYnJhbmNo
XVsnY29tbWl0cyddW2ZpcnN0X3BhcnRpdGlvbl1bcmVtYWluaW5nXSA9IGlkZW50aWZpZXIKKwor
ICAgIGRlZiBnZXRfaGFzaF9tYXBwaW5nKHNlbGYsIGJyYW5jaCwgaGFzaF9hcmcpOgorICAgICAg
ICBmaXJzdF9wYXJ0aXRpb24gPSBoYXNoX2FyZ1s6c2VsZi5IQVNIX1BBUlRJVElPTl9TSVpFXQor
ICAgICAgICByZW1haW5pbmcgPSBoYXNoX2FyZ1tzZWxmLkhBU0hfUEFSVElUSU9OX1NJWkU6XQor
ICAgICAgICBudW1fcmVzdWx0cyA9IDAKKyAgICAgICAgcmVzdWx0ID0gTm9uZQorICAgICAgICBm
b3IgcmVtYWluaW5nX2hhc2gsIGlkZW50aWZpZXIgaW4gc2VsZi5fbWFwcGluZ3NbYnJhbmNoXVsn
Y29tbWl0cyddLmdldChoYXNoX2FyZ1s6c2VsZi5IQVNIX1BBUlRJVElPTl9TSVpFXSwge30pLml0
ZW1zKCk6CisgICAgICAgICAgICBpZiByZW1haW5pbmdfaGFzaC5zdGFydHN3aXRoKHJlbWFpbmlu
Zyk6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gaWRlbnRpZmllcgorICAgICAgICAgICAgICAg
IG51bV9yZXN1bHRzICs9IDEKKworICAgICAgICAjIFJlcGxpY2F0ZSBnaXQgYmVoYXZpb3IsIHdo
aWNoIGFsc28gZXJyb3JzIG91dCB3aGVuIGdpdmVuIGFuIGFtYmlndW91cyBjb21taXQgbGlrZSAn
OWMzMTRhJy4KKyAgICAgICAgYXNzZXJ0IG51bV9yZXN1bHRzIDwgMiwgJ0Vycm9yOiBHb3QgbW9y
ZSB0aGFuIG9uZSByZXN1bHQgZm9yIGhhc2ggPD4gaWRlbnRpZmllciB3aXRoIGFyZyB7fScuZm9y
bWF0KGhhc2hfYXJnKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgbG9hZF9jb21t
aXRzX2FuZF9yZXZpc2lvbnNfY2FjaGUoc2VsZiwgYnJhbmNoKToKKyAgICAgICAgc2VsZi5wb3B1
bGF0ZShicmFuY2gpCisKKyAgICBkZWYgbG9hZF9pZGVudGlmaWVyX2NhY2hlKHNlbGYsIGJyYW5j
aCk6CisgICAgICAgIGlmIGJyYW5jaCBpbiBzZWxmLl9tYXBwaW5ncyBhbmQgJ2lkZW50aWZpZXJz
JyBpbiBzZWxmLl9tYXBwaW5nc1ticmFuY2hdOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAg
ICAgaWYgYnJhbmNoICE9IHNlbGYucmVwby5kZWZhdWx0X2JyYW5jaCBhbmQgKHNlbGYucmVwby5k
ZWZhdWx0X2JyYW5jaCBub3QgaW4gc2VsZi5fbWFwcGluZ3Mgb3IKKyAgICAgICAgICAgICdpZGVu
dGlmaWVycycgbm90IGluIHNlbGYuX21hcHBpbmdzW3NlbGYucmVwby5kZWZhdWx0X2JyYW5jaF0p
OgorICAgICAgICAgICAgICAgIHNlbGYubG9hZF9pZGVudGlmaWVyX2NhY2hlKHNlbGYucmVwby5k
ZWZhdWx0X2JyYW5jaCkKKworICAgICAgICBzZWxmLnBvcHVsYXRlKGJyYW5jaCkKKyAgICAgICAg
c2VsZi5fbWFwcGluZ3NbYnJhbmNoXVsnaWRlbnRpZmllcnMnXSA9IHt9CisgICAgICAgIGZvciBm
aXJzdF9oYXNoX3BhcnRpdGlvbiwgc2Vjb25kX3BhcnRpdGlvbnMgaW4gc2VsZi5fbWFwcGluZ3Nb
YnJhbmNoXVsnY29tbWl0cyddLml0ZW1zKCk6CisgICAgICAgICAgICBmb3IgcmVtYWluaW5nX3Bh
cnRpdGlvbiwgaWRlbnRpZmllciBpbiBzZWNvbmRfcGFydGl0aW9ucy5pdGVtcygpOgorICAgICAg
ICAgICAgICAgIHNlbGYuX21hcHBpbmdzW2JyYW5jaF1bJ2lkZW50aWZpZXJzJ11baWRlbnRpZmll
cl0gPSB7ICdoYXNoJzogZmlyc3RfaGFzaF9wYXJ0aXRpb24gKyByZW1haW5pbmdfcGFydGl0aW9u
fQorICAgICAgICBmb3IgcmV2aXNpb24sIGlkZW50aWZpZXIgaW4gc2VsZi5fbWFwcGluZ3NbYnJh
bmNoXVsncmV2aXNpb25zJ10uaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGYuX21hcHBpbmdzW2Jy
YW5jaF1bJ2lkZW50aWZpZXJzJ11baWRlbnRpZmllcl1bJ3JldmlzaW9uJ10gPSByZXZpc2lvbgor
CisgICAgZGVmIGNhbm9uaWNhbGl6ZV9icmFuY2hfaWRlbnRpZmllcihzZWxmLCBpZGVudGlmaWVy
KToKKyAgICAgICAgaWYgbm90IGlkZW50aWZpZXIgb3IgaWRlbnRpZmllci5lbmRzd2l0aChzZWxm
LnJlcG8uZGVmYXVsdF9icmFuY2gpOgorICAgICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXIKKwor
ICAgICAgICBicmFuY2hfcG9pbnRfaWRlbnRpZmllciwgYnJhbmNoID0gaWRlbnRpZmllci5zcGxp
dCgnQCcpCisgICAgICAgIGJyYW5jaF9wb2ludF9oYXNoID0gc2VsZi5pZGVudGlmaWVyX3RvX2hh
c2goJzBAe30nLmZvcm1hdChicmFuY2gpLCBicmFuY2g9YnJhbmNoKQorICAgICAgICBpbnRlcnNl
Y3Rpb25faWRlbnRpZmllciA9IHNlbGYuaGFzaF90b19pZGVudGlmaWVyKGJyYW5jaF9wb2ludF9o
YXNoLCBicmFuY2g9c2VsZi5yZXBvLmRlZmF1bHRfYnJhbmNoKQorICAgICAgICBfLCBpbnRlcnNl
Y3Rpb25faWRlbnRpZmllciwgXyA9IENvbW1pdC5fcGFyc2VfaWRlbnRpZmllcihpbnRlcnNlY3Rp
b25faWRlbnRpZmllcikKKyAgICAgICAgYXNzZXJ0IGludGVyc2VjdGlvbl9pZGVudGlmaWVyLCAi
RXJyb3I6IFNvbWVob3cgaW50ZXJzZWN0aW9uIHdpdGgge30gY291bGQgbm90IGJlIGRldGVybWlu
ZWQgZm9yIHt9Ii5mb3JtYXQoc2VsZi5yZXBvLmRlZmF1bHRfYnJhbmNoLCBpZGVudGlmaWVyKQor
ICAgICAgICByZXR1cm4gJ3t9Lnt9QHt9Jy5mb3JtYXQoaW50ZXJzZWN0aW9uX2lkZW50aWZpZXIs
IGJyYW5jaF9wb2ludF9pZGVudGlmaWVyLCBicmFuY2gpCisKKyAgICBkZWYgZm9ybWF0X2lkZW50
aWZpZXIoc2VsZiwgaWRlbnRpZmllciwgYnJhbmNoKToKKyAgICAgICAgcmV0dXJuICd7fUB7fScu
Zm9ybWF0KGlkZW50aWZpZXIsIGJyYW5jaCkKKworICAgIGRlZiBmb3JtYXRfaGFzaChzZWxmLCBf
aGFzaCwgYnJhbmNoKToKKyAgICAgICAgcmV0dXJuIF9oYXNoCisKKyAgICBkZWYgZm9ybWF0X3Jl
dmlzaW9uKHNlbGYsIHJldmlzaW9uLCBicmFuY2gpOgorICAgICAgICByZXR1cm4gJ3J7fScuZm9y
bWF0KHJldmlzaW9uKQorCisgICAgZGVmIGhhc2hfdG9faWRlbnRpZmllcihzZWxmLCBfaGFzaCwg
YnJhbmNoPU5vbmUpOgorICAgICAgICBpZiBsZW4oX2hhc2gpIDwgc2VsZi5IQVNIX1BBUlRJVElP
Tl9TSVpFOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBnZXRfcmVzdWx0X2Z1
bmMgPSBsYW1iZGEgbWFwcGluZywgYnJhbmNoLCBfaGFzaDogc2VsZi5nZXRfaGFzaF9tYXBwaW5n
KGJyYW5jaCwgX2hhc2gpCisgICAgICAgIGlkZW50aWZpZXIgPSBzZWxmLl90cmFuc2xhdGUoX2hh
c2gsIHNlbGYubG9hZF9jb21taXRzX2FuZF9yZXZpc2lvbnNfY2FjaGUsIGdldF9yZXN1bHRfZnVu
YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZvcm1hdF9pZGVudGlmaWVy
LCBicmFuY2g9YnJhbmNoKQorICAgICAgICByZXR1cm4gc2VsZi5jYW5vbmljYWxpemVfYnJhbmNo
X2lkZW50aWZpZXIoaWRlbnRpZmllcikKKworICAgIGRlZiBoYXNoX3RvX3JldmlzaW9uKHNlbGYs
IF9oYXNoLCBicmFuY2g9Tm9uZSk6CisgICAgICAgIGlkZW50aWZpZXIgPSBzZWxmLmhhc2hfdG9f
aWRlbnRpZmllcihfaGFzaCkKKyAgICAgICAgaWYgbm90IGlkZW50aWZpZXI6CisgICAgICAgICAg
ICByZXR1cm4gTm9uZQorCisgICAgICAgIHJldHVybiBzZWxmLmlkZW50aWZpZXJfdG9fcmV2aXNp
b24oaWRlbnRpZmllcikKKworICAgIGRlZiByZXZpc2lvbl90b19pZGVudGlmaWVyKHNlbGYsIHJl
dmlzaW9uLCBicmFuY2g9Tm9uZSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldmlzaW9u
ID0gaW50KHN0cihyZXZpc2lvbikubHN0cmlwKCdyJykpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVy
cm9yOgorICAgICAgICAgICAgc2VsZi5yZXBvLmxvZygnRXJyb3I6IEludmFsaWQgcmV2aXNpb24g
e30gcGFzc2VkIHRvIHJldmlzaW9uX3RvX2lkZW50aWZpZXIuLi4nLmZvcm1hdChyZXZpc2lvbikp
CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIGdldF9yZXN1bHRfZnVuYyA9IGxh
bWJkYSBtYXBwaW5nLCBicmFuY2gsIHJldmlzaW9uOiBtYXBwaW5nW2JyYW5jaF1bJ3JldmlzaW9u
cyddLmdldChyZXZpc2lvbikKKyAgICAgICAgaWRlbnRpZmllciA9IHNlbGYuX3RyYW5zbGF0ZShz
dHIocmV2aXNpb24pLCBzZWxmLmxvYWRfY29tbWl0c19hbmRfcmV2aXNpb25zX2NhY2hlLCBnZXRf
cmVzdWx0X2Z1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZvcm1h
dF9pZGVudGlmaWVyLCBicmFuY2g9YnJhbmNoKQorICAgICAgICByZXR1cm4gc2VsZi5jYW5vbmlj
YWxpemVfYnJhbmNoX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKworICAgIGRlZiByZXZpc2lvbl90
b19oYXNoKHNlbGYsIHJldmlzaW9uLCBicmFuY2g9Tm9uZSk6CisgICAgICAgIGlkZW50aWZpZXIg
PSBzZWxmLnJldmlzaW9uX3RvX2lkZW50aWZpZXIocmV2aXNpb24pCisgICAgICAgIGlmIG5vdCBp
ZGVudGlmaWVyOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIHNlbGYu
aWRlbnRpZmllcl90b19oYXNoKGlkZW50aWZpZXIpCisKKyAgICBkZWYgaWRlbnRpZmllcl90b19o
YXNoKHNlbGYsIGlkZW50aWZpZXIsIGJyYW5jaD1Ob25lKToKKyAgICAgICAgcGFyc2VkX2JyYW5j
aF9wb2ludCwgaWRlbnRpZmllciwgcGFyc2VkX2JyYW5jaCA9IENvbW1pdC5fcGFyc2VfaWRlbnRp
ZmllcihpZGVudGlmaWVyKQorICAgICAgICBpZiBpZGVudGlmaWVyIGlzIE5vbmU6CisgICAgICAg
ICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIGdldF9yZXN1bHRfZnVuYyA9IGxhbWJkYSBtYXBw
aW5nLCBicmFuY2gsIGlkZW50aWZpZXI6IG1hcHBpbmdbYnJhbmNoXVsnaWRlbnRpZmllcnMnXS5n
ZXQoaWRlbnRpZmllciwge30pLmdldCgnaGFzaCcpCisgICAgICAgIF9oYXNoID0gc2VsZi5fdHJh
bnNsYXRlKGlkZW50aWZpZXIsIHNlbGYubG9hZF9pZGVudGlmaWVyX2NhY2hlLCBnZXRfcmVzdWx0
X2Z1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZm9ybWF0X2hhc2gs
IGJyYW5jaD1wYXJzZWRfYnJhbmNoIG9yIGJyYW5jaCkKKyAgICAgICAgcmV0dXJuIF9oYXNoCisK
KyAgICBkZWYgaWRlbnRpZmllcl90b19yZXZpc2lvbihzZWxmLCBpZGVudGlmaWVyLCBicmFuY2g9
Tm9uZSk6CisgICAgICAgIHBhcnNlZF9icmFuY2hfcG9pbnQsIGlkZW50aWZpZXIsIHBhcnNlZF9i
cmFuY2ggPSBDb21taXQuX3BhcnNlX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAgICAgaWYg
bm90IGlkZW50aWZpZXI6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIGdldF9y
ZXN1bHRfZnVuYyA9IGxhbWJkYSBtYXBwaW5nLCBicmFuY2gsIGlkZW50aWZpZXI6IG1hcHBpbmdb
YnJhbmNoXVsnaWRlbnRpZmllcnMnXS5nZXQoaWRlbnRpZmllciwge30pLmdldCgncmV2aXNpb24n
KQorICAgICAgICByZXZpc2lvbiA9IHNlbGYuX3RyYW5zbGF0ZShpZGVudGlmaWVyLCBzZWxmLmxv
YWRfaWRlbnRpZmllcl9jYWNoZSwgZ2V0X3Jlc3VsdF9mdW5jLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLmZvcm1hdF9yZXZpc2lvbiwgYnJhbmNoPXBhcnNlZF9icmFuY2gg
b3IgYnJhbmNoKQorICAgICAgICByZXR1cm4gcmV2aXNpb24KKworICAgIGRlZiBfdHJhbnNsYXRl
KHNlbGYsIGFyZywgbG9hZF9jYWNoZV9mdW5jLCBnZXRfcmVzdWx0X2Z1bmMsIGZvcm1hdF9yZXN1
bHRfZnVuYywgYnJhbmNoPU5vbmUpOgorICAgICAgICBwcmVmZXJyZWRfYnJhbmNoZXMgPSBbYnJh
bmNoXSBpZiBicmFuY2ggZWxzZSBbc2VsZi5yZXBvLmRlZmF1bHRfYnJhbmNoLCBzZWxmLnJlcG8u
bWVtb2l6ZWRfY3VycmVudF9icmFuY2hdCisgICAgICAgIGZvciBfYnJhbmNoIGluIHByZWZlcnJl
ZF9icmFuY2hlczoKKyAgICAgICAgICAgIGlmIG5vdCBfYnJhbmNoOgorICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisKKyAgICAgICAgICAgIGxvYWRfY2FjaGVfZnVuYyhfYnJhbmNoKQorICAgICAg
ICAgICAgcmVzdWx0ID0gZ2V0X3Jlc3VsdF9mdW5jKHNlbGYuX21hcHBpbmdzLCBfYnJhbmNoLCBh
cmcpCisgICAgICAgICAgICBpZiByZXN1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1h
dF9yZXN1bHRfZnVuYyhyZXN1bHQsIF9icmFuY2gpCisKKyAgICAgICAgZm9yIF9icmFuY2ggaW4g
c2VsZi5yZXBvLm1lbW9pemVkX2xvY2FsX2JyYW5jaGVzKCk6CisgICAgICAgICAgICBpZiBub3Qg
X2JyYW5jaCBvciBfYnJhbmNoIGluIHByZWZlcnJlZF9icmFuY2hlcyBvciBfYnJhbmNoID09ICdt
YXN0ZXInOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGxvYWRfY2Fj
aGVfZnVuYyhfYnJhbmNoKQorICAgICAgICAgICAgcmVzdWx0ID0gZ2V0X3Jlc3VsdF9mdW5jKHNl
bGYuX21hcHBpbmdzLCBfYnJhbmNoLCBhcmcpCisgICAgICAgICAgICBpZiByZXN1bHQ6CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZvcm1hdF9yZXN1bHRfZnVuYyhyZXN1bHQsIF9icmFuY2gpCisK
KyAgICAgICAgcmV0dXJuIE5vbmUKKworCiBjbGFzcyBHaXQoU2NtKToKICAgICBHSVRfQ09NTUlU
ID0gcmUuY29tcGlsZShyJ2NvbW1pdCAoP1A8aGFzaD5bMC05YS1mXSspJykKIApAQCAtNTMsNiAr
MzY1LDggQEAgY2xhc3MgR2l0KFNjbSk6CiAgICAgICAgIGlmIG5vdCBzZWxmLnJvb3RfcGF0aDoK
ICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ1Byb3ZpZGVkIHBhdGgge30gaXMgbm90IGEgZ2l0
IHJlcG9zaXRvcnknLmZvcm1hdChwYXRoKSkKIAorICAgICAgICBzZWxmLmNhY2hlID0gR2l0Q2Fj
aGUoc2VsZikKKwogICAgIEBkZWNvcmF0b3JzLk1lbW9pemUoY2FjaGVkPUZhbHNlKQogICAgIGRl
ZiBpbmZvKHNlbGYpOgogICAgICAgICBpZiBub3Qgc2VsZi5pc19zdm46CkBAIC05NCw4ICs0MDgs
OSBAQCBjbGFzcyBHaXQoU2NtKToKICAgICAgICAgcmV0dXJuIHJlc3VsdC5zdGRvdXQucnN0cmlw
KCkKIAogICAgIEBwcm9wZXJ0eQorICAgIEBkZWNvcmF0b3JzLk1lbW9pemUoKQogICAgIGRlZiBk
ZWZhdWx0X2JyYW5jaChzZWxmKToKLSAgICAgICAgcmVzdWx0ID0gcnVuKFtzZWxmLmV4ZWN1dGFi
bGUoKSwgJ3Jldi1wYXJzZScsICctLWFiYnJldi1yZWYnLCAnb3JpZ2luL0hFQUQnXSwgY3dkPXNl
bGYucGF0aCwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgZW5jb2Rpbmc9J3V0Zi04JykKKyAgICAgICAg
cmVzdWx0ID0gcnVuKFtzZWxmLmV4ZWN1dGFibGUoKSwgJ3Jldi1wYXJzZScsICctLWFiYnJldi1y
ZWYnLCAnb3JpZ2luL0hFQUQnXSwgY3dkPXNlbGYucm9vdF9wYXRoLCBjYXB0dXJlX291dHB1dD1U
cnVlLCBlbmNvZGluZz0ndXRmLTgnKQogICAgICAgICBpZiByZXN1bHQucmV0dXJuY29kZToKICAg
ICAgICAgICAgIGNhbmRpZGF0ZXMgPSBzZWxmLmJyYW5jaGVzCiAgICAgICAgICAgICBpZiAnbWFz
dGVyJyBpbiBjYW5kaWRhdGVzOgpAQCAtMTA1LDYgKzQyMCwyNyBAQCBjbGFzcyBHaXQoU2NtKToK
ICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIHJldHVybiAnLycuam9pbihyZXN1bHQu
c3Rkb3V0LnJzdHJpcCgpLnNwbGl0KCcvJylbMTpdKQogCisgICAgQHByb3BlcnR5CisgICAgQGRl
Y29yYXRvcnMuTWVtb2l6ZSgpCisgICAgZGVmIG1lbW9pemVkX2N1cnJlbnRfYnJhbmNoKHNlbGYp
OgorICAgICAgICBicmFuY2ggPSBydW4oW3NlbGYuZXhlY3V0YWJsZSgpLCAnYnJhbmNoJywgJy0t
c2hvdy1jdXJyZW50J10sIGN3ZD1zZWxmLnJvb3RfcGF0aCwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwg
ZW5jb2Rpbmc9J3V0Zi04JykKKyAgICAgICAgaWYgbm90IGJyYW5jaC5yZXR1cm5jb2RlOgorICAg
ICAgICAgICAgcmV0dXJuIGJyYW5jaC5zdGRvdXQuc3RyaXAoKQorCisgICAgICAgIHJldHVybiBO
b25lICAjIFByb2JhYmx5IGRldGF0Y2hlZCBoZWFkLgorCisgICAgQGRlY29yYXRvcnMuTWVtb2l6
ZSgpCisgICAgZGVmIG1lbW9pemVkX2xvY2FsX2JyYW5jaGVzKHNlbGYpOgorICAgICAgICBicmFu
Y2hlcyA9IFtdCisgICAgICAgIGZvciBsaW5lIGluIHJ1bihbc2VsZi5leGVjdXRhYmxlKCksICdi
cmFuY2gnXSwgY3dkPXNlbGYucm9vdF9wYXRoLCBjYXB0dXJlX291dHB1dD1UcnVlLCBlbmNvZGlu
Zz0ndXRmLTgnKS5zdGRvdXQuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgaWYgbm90IGxpbmU6
CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgIyBOb3JtYWxpemUgY3Vy
cmVudCBicmFuY2gKKyAgICAgICAgICAgIGJyYW5jaCA9IGxpbmUucmVwbGFjZSgnKiAnLCAnJyku
c3RyaXAoKQorICAgICAgICAgICAgYnJhbmNoZXMuYXBwZW5kKGJyYW5jaCkKKyAgICAgICAgcmV0
dXJuIGJyYW5jaGVzCisKICAgICBAcHJvcGVydHkKICAgICBkZWYgYnJhbmNoKHNlbGYpOgogICAg
ICAgICBzdGF0dXMgPSBydW4oW3NlbGYuZXhlY3V0YWJsZSgpLCAnc3RhdHVzJ10sIGN3ZD1zZWxm
LnJvb3RfcGF0aCwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgZW5jb2Rpbmc9J3V0Zi04JykKQEAgLTE1
NywxNSArNDkzLDE2IEBAIGNsYXNzIEdpdChTY20pOgogICAgICAgICByZXR1cm4gc29ydGVkKHNl
dChbJy8nLmpvaW4oYnJhbmNoLnNwbGl0KCcvJylbMjpdKSBpZiBicmFuY2guc3RhcnRzd2l0aCgn
cmVtb3Rlcy9vcmlnaW4vJykgZWxzZSBicmFuY2ggZm9yIGJyYW5jaCBpbiByZXN1bHRdKSkKIAog
ICAgIGRlZiBjb21taXQoc2VsZiwgaGFzaD1Ob25lLCByZXZpc2lvbj1Ob25lLCBpZGVudGlmaWVy
PU5vbmUsIGJyYW5jaD1Ob25lLCB0YWc9Tm9uZSwgaW5jbHVkZV9sb2c9VHJ1ZSwgaW5jbHVkZV9p
ZGVudGlmaWVyPVRydWUpOgotICAgICAgICAjIE9ubHkgZ2l0LXN2biBjaGVja291dHMgY2FuIGNv
bnZlcnQgcmV2aXNpb25zIHRvIGZ1bGx5IHF1YWxpZmllZCBjb21taXRzCi0gICAgICAgIGlmIHJl
dmlzaW9uIGFuZCBub3Qgc2VsZi5pc19zdm46Ci0gICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2Vw
dGlvbignVGhpcyBnaXQgY2hlY2tvdXQgZG9lcyBub3Qgc3VwcG9ydCBTVk4gcmV2aXNpb25zJykK
LQotICAgICAgICAjIERldGVybWluZSB0aGUgaGFzaCBmb3IgYSBwcm92aWRlZCBTdWJ2ZXJzaW9u
IHJldmlzaW9uCi0gICAgICAgIGVsaWYgcmV2aXNpb246CisgICAgICAgICMgT25seSBnaXQtc3Zu
IGNoZWNrb3V0cyBjYW4gY29udmVydCByZXZpc2lvbnMgdG8gZnVsbHkgcXVhbGlmaWVkIGNvbW1p
dHMsIHVubGVzcyB3ZSBoYXBwZW4gdG8gaGF2ZSBhIFNWTiBjYWNoZSBidWlsdAorICAgICAgICBp
ZiByZXZpc2lvbjoKICAgICAgICAgICAgIGlmIGhhc2g6CiAgICAgICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcignQ2Fubm90IGRlZmluZSBib3RoIGhhc2ggYW5kIHJldmlzaW9uJykKKyAgICAg
ICAgICAgIGhhc2ggPSBzZWxmLmNhY2hlLnJldmlzaW9uX3RvX2hhc2gocmV2aXNpb24pCisgICAg
ICAgIGlmIHJldmlzaW9uIGFuZCBub3QgaGFzaCBhbmQgbm90IHNlbGYuaXNfc3ZuOgorICAgICAg
ICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oJ1RoaXMgZ2l0IGNoZWNrb3V0IGRvZXMgbm90IHN1
cHBvcnQgU1ZOIHJldmlzaW9ucycpCiAKKyAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGhhc2ggZm9y
IGEgcHJvdmlkZWQgU3VidmVyc2lvbiByZXZpc2lvbgorICAgICAgICBlbGlmIHJldmlzaW9uIGFu
ZCBub3QgaGFzaDoKICAgICAgICAgICAgIHJldmlzaW9uID0gQ29tbWl0Ll9wYXJzZV9yZXZpc2lv
bihyZXZpc2lvbiwgZG9fYXNzZXJ0PVRydWUpCiAgICAgICAgICAgICByZXZpc2lvbl9sb2cgPSBy
dW4oCiAgICAgICAgICAgICAgICAgW3NlbGYuZXhlY3V0YWJsZSgpLCAnc3ZuJywgJ2ZpbmQtcmV2
JywgJ3J7fScuZm9ybWF0KHJldmlzaW9uKV0sCkBAIC0yMDEsMzIgKzUzOCw0NSBAQCBjbGFzcyBH
aXQoU2NtKToKICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgIGJyYW5jaCA9
IHBhcnNlZF9icmFuY2gKIAotICAgICAgICAgICAgYmFzZWxpbmUgPSBicmFuY2ggb3IgJ0hFQUQn
Ci0gICAgICAgICAgICBpc19kZWZhdWx0ID0gYmFzZWxpbmUgPT0gZGVmYXVsdF9icmFuY2gKLSAg
ICAgICAgICAgIGlmIGJhc2VsaW5lID09ICdIRUFEJzoKLSAgICAgICAgICAgICAgICBpc19kZWZh
dWx0ID0gZGVmYXVsdF9icmFuY2ggaW4gc2VsZi5fYnJhbmNoZXNfZm9yKGJhc2VsaW5lKQotCi0g
ICAgICAgICAgICBpZiBpc19kZWZhdWx0IGFuZCBwYXJzZWRfYnJhbmNoX3BvaW50OgotICAgICAg
ICAgICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0aW9uKCdDYW5ub3QgcHJvdmlkZSBhIGJyYW5jaCBw
b2ludCBmb3IgYSBjb21taXQgb24gdGhlIGRlZmF1bHQgYnJhbmNoJykKLQotICAgICAgICAgICAg
YmFzZV9jb3VudCA9IHNlbGYuX2NvbW1pdF9jb3VudChiYXNlbGluZSBpZiBpc19kZWZhdWx0IGVs
c2UgJ3t9Li57fScuZm9ybWF0KGRlZmF1bHRfYnJhbmNoLCBiYXNlbGluZSkpCi0KLSAgICAgICAg
ICAgIGlmIGlkZW50aWZpZXIgPiBiYXNlX2NvdW50OgotICAgICAgICAgICAgICAgIHJhaXNlIHNl
bGYuRXhjZXB0aW9uKCdJZGVudGlmaWVyIHt9IGNhbm5vdCBiZSBmb3VuZCBvbiB0aGUgc3BlY2lm
aWVkIGJyYW5jaCBpbiB0aGUgY3VycmVudCBjaGVja291dCcuZm9ybWF0KGlkZW50aWZpZXIpKQot
ICAgICAgICAgICAgbG9nID0gcnVuKAotICAgICAgICAgICAgICAgIFtzZWxmLmV4ZWN1dGFibGUo
KSwgJ2xvZycsICd7fX57fScuZm9ybWF0KGJyYW5jaCBvciAnSEVBRCcsIGJhc2VfY291bnQgLSBp
ZGVudGlmaWVyKV0gKyBsb2dfZm9ybWF0LAotICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnJvb3Rf
cGF0aCwKLSAgICAgICAgICAgICAgICBjYXB0dXJlX291dHB1dD1UcnVlLAotICAgICAgICAgICAg
ICAgIGVuY29kaW5nPSd1dGYtOCcsCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBpZiBsb2cu
cmV0dXJuY29kZToKLSAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbigiRmFpbGVk
IHRvIHJldHJpZXZlIGNvbW1pdCBpbmZvcm1hdGlvbiBmb3IgJ2l7fUB7fSciLmZvcm1hdChpZGVu
dGlmaWVyLCBicmFuY2ggb3IgJ0hFQUQnKSkKLQotICAgICAgICAgICAgIyBOZWdhdGl2ZSBpZGVu
dGlmaWVycyBhcmUgYWN0dWFsbHkgY29tbWl0cyBvbiB0aGUgZGVmYXVsdCBicmFuY2gsIHdlIHdp
bGwgbmVlZCB0byByZS1jb21wdXRlIHRoZSBpZGVudGlmaWVyCi0gICAgICAgICAgICBpZiBpZGVu
dGlmaWVyIDwgMCBhbmQgaXNfZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4
Y2VwdGlvbignSWxsZWdhbCBuZWdhdGl2ZSBpZGVudGlmaWVyIG9uIHRoZSBkZWZhdWx0IGJyYW5j
aCcpCi0gICAgICAgICAgICBpZiBpZGVudGlmaWVyIDwgMDoKLSAgICAgICAgICAgICAgICBpZGVu
dGlmaWVyID0gTm9uZQorICAgICAgICAgICAgaGFzaCA9IHNlbGYuY2FjaGUuaWRlbnRpZmllcl90
b19oYXNoKCd7fUB7fScuZm9ybWF0KGlkZW50aWZpZXIsIHBhcnNlZF9icmFuY2gpKQorICAgICAg
ICAgICAgaWYgbm90IGhhc2g6CisgICAgICAgICAgICAgICAgYmFzZWxpbmUgPSBicmFuY2ggb3Ig
J0hFQUQnCisgICAgICAgICAgICAgICAgaXNfZGVmYXVsdCA9IGJhc2VsaW5lID09IGRlZmF1bHRf
YnJhbmNoCisgICAgICAgICAgICAgICAgaWYgYmFzZWxpbmUgPT0gJ0hFQUQnOgorICAgICAgICAg
ICAgICAgICAgICBpc19kZWZhdWx0ID0gZGVmYXVsdF9icmFuY2ggaW4gc2VsZi5fYnJhbmNoZXNf
Zm9yKGJhc2VsaW5lKQorCisgICAgICAgICAgICAgICAgaWYgaXNfZGVmYXVsdCBhbmQgcGFyc2Vk
X2JyYW5jaF9wb2ludDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24o
J0Nhbm5vdCBwcm92aWRlIGEgYnJhbmNoIHBvaW50IGZvciBhIGNvbW1pdCBvbiB0aGUgZGVmYXVs
dCBicmFuY2gnKQorCisgICAgICAgICAgICAgICAgYmFzZV9jb3VudCA9IHNlbGYuX2NvbW1pdF9j
b3VudChiYXNlbGluZSBpZiBpc19kZWZhdWx0IGVsc2UgJ3t9Li57fScuZm9ybWF0KGRlZmF1bHRf
YnJhbmNoLCBiYXNlbGluZSkpCisKKyAgICAgICAgICAgICAgICBpZiBpZGVudGlmaWVyID4gYmFz
ZV9jb3VudDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oJ0lkZW50
aWZpZXIge30gY2Fubm90IGJlIGZvdW5kIG9uIHRoZSBzcGVjaWZpZWQgYnJhbmNoIGluIHRoZSBj
dXJyZW50IGNoZWNrb3V0Jy5mb3JtYXQoaWRlbnRpZmllcikpCisgICAgICAgICAgICAgICAgbG9n
ID0gcnVuKAorICAgICAgICAgICAgICAgICAgICBbc2VsZi5leGVjdXRhYmxlKCksICdsb2cnLCAn
e31+e30nLmZvcm1hdChicmFuY2ggb3IgJ0hFQUQnLCBiYXNlX2NvdW50IC0gaWRlbnRpZmllcild
ICsgbG9nX2Zvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgY3dkPXNlbGYucm9vdF9wYXRoLAor
ICAgICAgICAgICAgICAgICAgICBjYXB0dXJlX291dHB1dD1UcnVlLAorICAgICAgICAgICAgICAg
ICAgICBlbmNvZGluZz0ndXRmLTgnLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAg
ICBpZiBsb2cucmV0dXJuY29kZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNl
cHRpb24oIkZhaWxlZCB0byByZXRyaWV2ZSBjb21taXQgaW5mb3JtYXRpb24gZm9yICdpe31Ae30n
Ii5mb3JtYXQoaWRlbnRpZmllciwgYnJhbmNoIG9yICdIRUFEJykpCisKKyAgICAgICAgICAgICAg
ICAjIE5lZ2F0aXZlIGlkZW50aWZpZXJzIGFyZSBhY3R1YWxseSBjb21taXRzIG9uIHRoZSBkZWZh
dWx0IGJyYW5jaCwgd2Ugd2lsbCBuZWVkIHRvIHJlLWNvbXB1dGUgdGhlIGlkZW50aWZpZXIKKyAg
ICAgICAgICAgICAgICBpZiBpZGVudGlmaWVyIDwgMCBhbmQgaXNfZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oJ0lsbGVnYWwgbmVnYXRpdmUgaWRlbnRp
ZmllciBvbiB0aGUgZGVmYXVsdCBicmFuY2gnKQorICAgICAgICAgICAgICAgIGlmIGlkZW50aWZp
ZXIgPCAwOgorICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gTm9uZQorCisgICAgICAg
ICAgICAjIFRoZSBjYWNoZSBjb252ZXJ0ZWQgdGhlIGlkZW50aWZpZXIgdG8gYSBoYXNoCisgICAg
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGxvZyA9IHJ1bigKKyAgICAgICAgICAgICAg
ICAgICAgW3NlbGYuZXhlY3V0YWJsZSgpLCAnbG9nJywgaGFzaF0gKyBsb2dfZm9ybWF0LAorICAg
ICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5yb290X3BhdGgsCisgICAgICAgICAgICAgICAgICAg
IGNhcHR1cmVfb3V0cHV0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPSd1dGYt
OCcsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGlmIGxvZy5yZXR1cm5jb2Rl
OgorICAgICAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbigiRmFpbGVkIHRvIHJl
dHJpZXZlIGNvbW1pdCBpbmZvcm1hdGlvbiBmb3IgJ3t9JyIuZm9ybWF0KGhhc2gpKQogCiAgICAg
ICAgICMgRGV0ZXJtaW5lIHRoZSBgZ2l0IGxvZ2Agb3V0cHV0IGZvciBhIGdpdmVuIGJyYW5jaCBv
ciB0YWcKICAgICAgICAgZWxpZiBicmFuY2ggb3IgdGFnOgpAQCAtMjUyLDE1ICs2MDIsMjMgQEAg
Y2xhc3MgR2l0KFNjbSk6CiAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignSW52YWxp
ZCBjb21taXQgaGFzaCBpbiBnaXQgbG9nJykKICAgICAgICAgaGFzaCA9IG1hdGNoLmdyb3VwKCdo
YXNoJykKIAorICAgICAgICBicmFuY2hfcG9pbnQgPSBOb25lCisgICAgICAgIGlmIG5vdCBpZGVu
dGlmaWVyIGFuZCBpbmNsdWRlX2lkZW50aWZpZXI6CisgICAgICAgICAgICBjYWNoZWRfaWRlbnRp
ZmllciA9IHNlbGYuY2FjaGUuaGFzaF90b19pZGVudGlmaWVyKGhhc2gpCisgICAgICAgICAgICBp
ZiBjYWNoZWRfaWRlbnRpZmllcjoKKyAgICAgICAgICAgICAgICBicmFuY2hfcG9pbnQsIGlkZW50
aWZpZXIsIGJyYW5jaCA9IENvbW1pdC5fcGFyc2VfaWRlbnRpZmllcihjYWNoZWRfaWRlbnRpZmll
cikKKwogICAgICAgICAjIEEgY29tbWl0IGlzIG9mdGVuIG9uIG11bHRpcGxlIGJyYW5jaGVzLCB0
aGUgY2Fub25pY2FsIGJyYW5jaCBpcyB0aGUgb25lIHdpdGggdGhlIGhpZ2hlc3QgcHJpb3JpdHkK
LSAgICAgICAgYnJhbmNoID0gc2VsZi5wcmlvcml0aXplX2JyYW5jaGVzKHNlbGYuX2JyYW5jaGVz
X2ZvcihoYXNoKSkKKyAgICAgICAgaWYgYnJhbmNoICE9IGRlZmF1bHRfYnJhbmNoOgorICAgICAg
ICAgICAgYnJhbmNoID0gc2VsZi5wcmlvcml0aXplX2JyYW5jaGVzKHNlbGYuX2JyYW5jaGVzX2Zv
cihoYXNoKSkKIAogICAgICAgICAjIENvbXB1dGUgdGhlIGlkZW50aWZpZXIgaWYgdGhlIGZ1bmN0
aW9uIGRpZCBub3QgcmVjZWl2ZSBvbmUgYW5kIHdlIHdlcmUgYXNrZWQgdG8KICAgICAgICAgaWYg
bm90IGlkZW50aWZpZXIgYW5kIGluY2x1ZGVfaWRlbnRpZmllcjoKICAgICAgICAgICAgIGlkZW50
aWZpZXIgPSBzZWxmLl9jb21taXRfY291bnQoaGFzaCBpZiBicmFuY2ggPT0gZGVmYXVsdF9icmFu
Y2ggZWxzZSAne30uLnt9Jy5mb3JtYXQoZGVmYXVsdF9icmFuY2gsIGhhc2gpKQogCiAgICAgICAg
ICMgT25seSBjb21wdXRlIHRoZSBicmFuY2ggcG9pbnQgd2UncmUgb24gc29tZXRoaW5nIG90aGVy
IHRoYW4gdGhlIGRlZmF1bHQgYnJhbmNoCi0gICAgICAgIGJyYW5jaF9wb2ludCA9IE5vbmUgaWYg
bm90IGluY2x1ZGVfaWRlbnRpZmllciBvciBicmFuY2ggPT0gZGVmYXVsdF9icmFuY2ggZWxzZSBz
ZWxmLl9jb21taXRfY291bnQoaGFzaCkgLSBpZGVudGlmaWVyCisgICAgICAgIGlmIG5vdCBicmFu
Y2hfcG9pbnQgYW5kIGluY2x1ZGVfaWRlbnRpZmllciBhbmQgYnJhbmNoICE9IGRlZmF1bHRfYnJh
bmNoOgorICAgICAgICAgICAgYnJhbmNoX3BvaW50ID0gc2VsZi5fY29tbWl0X2NvdW50KGhhc2gp
IC0gaWRlbnRpZmllcgogICAgICAgICBpZiBicmFuY2hfcG9pbnQgYW5kIHBhcnNlZF9icmFuY2hf
cG9pbnQgYW5kIGJyYW5jaF9wb2ludCAhPSBwYXJzZWRfYnJhbmNoX3BvaW50OgogICAgICAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcigiUHJvdmlkZWQgJ2JyYW5jaF9wb2ludCcgZG9lcyBub3QgbWF0
Y2ggYnJhbmNoIHBvaW50IG9mIHNwZWNpZmllZCBicmFuY2giKQogCkBAIC00ODAsMyArODM4LDcg
QEAgY2xhc3MgR2l0KFNjbSk6CiAgICAgICAgIHJldHVybiBydW4oWwogICAgICAgICAgICAgc2Vs
Zi5leGVjdXRhYmxlKCksICdyZXNldCcsICdIRUFEJywgJy0taGFyZCcsCiAgICAgICAgIF0sIGN3
ZD1zZWxmLnJvb3RfcGF0aCkucmV0dXJuY29kZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHVw
c3RyZWFtX3JlbW90ZShzZWxmKToKKyAgICAgICAgcmV0dXJuICdyZW1vdGVzL29yaWdpbicgICMg
RklYTUU6IEZpbmQgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMgKG1heWJlIHdlIHBhc3MgaW4gdGhp
cyBhcmd1bWVudCk/CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9tb2Nrcy9naXQtcmVwby5qc29uIGIvVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvZ2l0LXJlcG8uanNvbgppbmRleCA5
ZGNmNzdkZDM0OGQuLjgwMTEyOWRlNDJmNSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvZ2l0LXJlcG8uanNvbgorKysgYi9U
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9naXQt
cmVwby5qc29uCkBAIC0xNDYsNCArMTQ2LDQgQEAKICAgICAgICAgICAgICJyZXZpc2lvbiI6IDYK
ICAgICAgICAgfQogICAgIF0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9t
b2Nrcy9sb2NhbC9naXQucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93
ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9naXQucHkKaW5kZXggZGE5OGViYzI0MDc4Li45OGY5YzEy
ZDYyNzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dl
YmtpdHNjbXB5L21vY2tzL2xvY2FsL2dpdC5weQorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9naXQucHkKQEAgLTE5NCw2ICsx
OTQsMjEgQEAgbm90aGluZyB0byBjb21taXQsIHdvcmtpbmcgdHJlZSBjbGVhbgogICAgICAgICAg
ICAgICAgICAgICBzdGRvdXQ9J1xuJy5qb2luKHNvcnRlZChbJyogJyArIHNlbGYuYnJhbmNoXSAr
IGxpc3QoKHtkZWZhdWx0X2JyYW5jaH0gfCBzZXQoc2VsZi5jb21taXRzLmtleXMoKSkpIC0ge3Nl
bGYuYnJhbmNofSkpKSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG5yZW1vdGVzL29y
aWdpbi9IRUFEIC0+IG9yaWdpbi97fVxuJy5mb3JtYXQoZGVmYXVsdF9icmFuY2gpLAogICAgICAg
ICAgICAgICAgICksCisgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAorICAg
ICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSwgJ2JyYW5jaCcsICctLXNob3ctY3VycmVudCcs
CisgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKKyAgICAgICAgICAgICAgICBnZW5lcmF0
b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24oCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybmNvZGU9MCwKKyAgICAgICAgICAgICAgICAgICAgc3Rkb3V0
PSd7fVxuJy5mb3JtYXQoc2VsZi5icmFuY2gpIGlmIG5vdCBzZWxmLmRldGFjaGVkIGVsc2UgJycs
CisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBtb2Nrcy5T
dWJwcm9jZXNzLlJvdXRlKAorICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSwgJ2JyYW5j
aCcsCisgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKKyAgICAgICAgICAgICAgICBnZW5l
cmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24oCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybmNvZGU9MCwKKyAgICAgICAgICAgICAgICAgICAgc3Rk
b3V0PSdcbicuam9pbihzb3J0ZWQoWycqICcgKyBzZWxmLmJyYW5jaF0gKyBsaXN0KCh7ZGVmYXVs
dF9icmFuY2h9IHwgc2V0KHNlbGYuY29tbWl0cy5rZXlzKCkpKSAtIHtzZWxmLmJyYW5jaH0pKSks
CisgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91
dGUoCiAgICAgICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLCAndGFnJywKICAgICAgICAgICAg
ICAgICBjd2Q9c2VsZi5wYXRoLApAQCAtMjEzLDggKzIyOCwxNSBAQCBub3RoaW5nIHRvIGNvbW1p
dCwgd29ya2luZyB0cmVlIGNsZWFuCiAgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogbW9ja3MuUHJv
Y2Vzc0NvbXBsZXRpb24oCiAgICAgICAgICAgICAgICAgICAgIHJldHVybmNvZGU9MCwKLSAgICAg
ICAgICAgICAgICAgICAgc3Rkb3V0PSd7fVxuJy5mb3JtYXQoc2VsZi5maW5kKGFyZ3NbMl0pLmhh
c2gpLAotICAgICAgICAgICAgICAgICkgaWYgc2VsZi5maW5kKGFyZ3NbMl0pIGVsc2UgbW9ja3Mu
UHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0xMjgpCisgICAgICAgICAgICAgICAgICAgIHN0
ZG91dD0ne31cbicuZm9ybWF0KHNlbGYuZmluZChhcmdzWzJdLnNwbGl0KCcvJylbLTFdKS5oYXNo
KSwKKyAgICAgICAgICAgICAgICApIGlmIHNlbGYuZmluZChhcmdzWzJdLnNwbGl0KCcvJylbLTFd
KSBlbHNlIG1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKHJldHVybmNvZGU9MTI4KQorICAgICAgICAg
ICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKKyAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1
dGFibGUsICdtZXJnZS1iYXNlJywgcmUuY29tcGlsZSgnLisnKSwgcmUuY29tcGlsZSgnLisnKSwK
KyAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAgICAgICAgIGdlbmVyYXRv
cj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbigKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuY29kZT0wLAorICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9
J3t9XG4nLmZvcm1hdChzZWxmLmludGVyc2VjdGlvbihhcmdzWzNdKS5oYXNoKSwKKyAgICAgICAg
ICAgICAgICApIGlmIHNlbGYuaW50ZXJzZWN0aW9uKGFyZ3NbM10pIGVsc2UgbW9ja3MuUHJvY2Vz
c0NvbXBsZXRpb24ocmV0dXJuY29kZT0xMjgpCiAgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9j
ZXNzLlJvdXRlKAogICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSwgJ2xvZycsIHJlLmNv
bXBpbGUocicuKycpLCAnLTEnLAogICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCkBAIC0y
NDAsNiArMjYyLDYzIEBAIG5vdGhpbmcgdG8gY29tbWl0LCB3b3JraW5nIHRyZWUgY2xlYW4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICApLAog
ICAgICAgICAgICAgICAgICkgaWYgc2VsZi5maW5kKGFyZ3NbMl0pIGVsc2UgbW9ja3MuUHJvY2Vz
c0NvbXBsZXRpb24ocmV0dXJuY29kZT0xMjgpLAorICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJv
Y2Vzcy5Sb3V0ZSgKKyAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdsb2cnLCByZS5j
b21waWxlKHInLisnKSwKKyAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAg
ICAgICAgIGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBtb2Nrcy5Qcm9jZXNzQ29t
cGxldGlvbigKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuY29kZT0wLAorICAgICAgICAgICAg
ICAgICAgICBzdGRvdXQ9J1xuJy5qb2luKFsKKyAgICAgICAgICAgICAgICAgICAgICAgICdjb21t
aXQge2hhc2h9XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAnQXV0aG9yOiAgICAge2F1dGhv
cn0gPHtlbWFpbH0+XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAnRGF0ZTogICAgICAge2Rh
dGV9XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAnXG57bG9nfScuZm9ybWF0KAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGhhc2g9Y29tbWl0Lmhhc2gsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXV0aG9yPWNvbW1pdC5hdXRob3IubmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbWFpbD1jb21taXQuYXV0aG9yLmVtYWlsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGU9ZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcChjb21taXQudGltZXN0YW1w
ICsgdGltZS50aW1lem9uZSkuc3RyZnRpbWUoJyVhICViICVkICVIOiVNOiVTICVZICswMDAwJyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nPSdcbicuam9pbihbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICgnICAgICcgKyBsaW5lKSBpZiBsaW5lIGVsc2UgJycgZm9y
IGxpbmUgaW4gY29tbWl0Lm1lc3NhZ2Uuc3BsaXRsaW5lcygpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXSArIChbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgZ2l0
LXN2bi1pZDogaHR0cHM6Ly9zdm4ue30vcmVwb3NpdG9yeS97fS90cnVua0B7fSAyNjhmNDVjYy1j
ZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmMnLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYucmVtb3RlLnNwbGl0KCdAJylbLTFdLnNwbGl0KCc6JylbMF0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmJhc2VuYW1lKHBh
dGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0LnJldmlzaW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICldIGlmIGdpdF9zdm4gZWxzZSBbXSksCisg
ICAgICAgICAgICAgICAgICAgICAgICApKSBmb3IgY29tbWl0IGluIHNlbGYuY29tbWl0c19pbl9y
YW5nZShOb25lLCBhcmdzWzJdKQorICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAg
ICAgICkKKyAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoICAjIEZvciBjYWNo
ZSBnZW5lcmF0aW9uCisgICAgICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLCAnbG9nJywgcmUu
Y29tcGlsZShyJy4rJyksICctLXJldmVyc2UnLAorICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBh
dGgsCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yPWxhbWJkYSAqYXJncywgKiprd2FyZ3M6IG1v
Y2tzLlByb2Nlc3NDb21wbGV0aW9uKAorICAgICAgICAgICAgICAgICAgICByZXR1cm5jb2RlPTAs
CisgICAgICAgICAgICAgICAgICAgIHN0ZG91dD0nXG4nLmpvaW4oWworICAgICAgICAgICAgICAg
ICAgICAgICAgJ2NvbW1pdCB7aGFzaH1cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICdBdXRo
b3I6ICAgICB7YXV0aG9yfSA8e2VtYWlsfT5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICdE
YXRlOiAgICAgICB7ZGF0ZX1cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICdcbntsb2d9Jy5m
b3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaD1jb21taXQuaGFzaCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRob3I9Y29tbWl0LmF1dGhvci5uYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsPWNvbW1pdC5hdXRob3IuZW1haWwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZT1kYXRldGltZS51dGNmcm9tdGltZXN0YW1wKGNv
bW1pdC50aW1lc3RhbXAgKyB0aW1lLnRpbWV6b25lKS5zdHJmdGltZSgnJWEgJWIgJWQgJUg6JU06
JVMgJVkgKzAwMDAnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2c9J1xuJy5qb2lu
KFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCcgICAgJyArIGxpbmUpIGlmIGxp
bmUgZWxzZSAnJyBmb3IgbGluZSBpbiBjb21taXQubWVzc2FnZS5zcGxpdGxpbmVzKCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdICsgKFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJyAgICBnaXQtc3ZuLWlkOiBodHRwczovL3N2bi57fS9yZXBvc2l0b3J5L3t9L3RydW5r
QHt9IDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYycuZm9ybWF0KAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZW1vdGUuc3BsaXQoJ0AnKVstMV0u
c3BsaXQoJzonKVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBh
dGguYmFzZW5hbWUocGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b21taXQucmV2aXNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKV0gaWYgZ2l0X3N2
biBlbHNlIFtdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICkpIGZvciBjb21taXQgaW4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXZlcnNlZCgKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGlzdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuY29tbWl0c19pbl9yYW5nZShOb25lLCBhcmdzWzJdLnJlcGxhY2UoJ3JlbW90ZXMvb3JpZ2lu
LycsICcnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICcuLicgbm90
IGluIGFyZ3NbMl0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuY29tbWl0c19pbl9yYW5nZSgqYXJnc1syXS5yZXBsYWNlKCdyZW1vdGVzL29yaWdpbi8n
LCAnJykuc3BsaXQoJy4uJykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIF0pCisgICAg
ICAgICAgICAgICAgKQogICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKICAg
ICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdsb2cnLCAnLS1mb3JtYXQ9ZnVsbGVyJywg
cmUuY29tcGlsZShyJy4rXC5cLlwuLisnKSwKICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRo
LApAQCAtMjYyLDcgKzM0MSw3IEBAIG5vdGhpbmcgdG8gY29tbWl0LCB3b3JraW5nIHRyZWUgY2xl
YW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBnaXQtc3ZuLWlkOiBodHRw
czovL3N2bi57fS9yZXBvc2l0b3J5L3t9L3RydW5rQHt9IDI2OGY0NWNjLWNkMDktMDQxMC1hYjNj
LWQ1MjY5MWI0ZGJmYycuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5yZW1vdGUuc3BsaXQoJ0AnKVstMV0uc3BsaXQoJzonKVswXSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5hbWUocGF0aCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdC5yZXZpc2lvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdC5yZXZpc2lvbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICApXSBpZiBnaXRfc3ZuIGVsc2UgW10pLAogICAgICAgICAgICAgICAgICAg
ICAgICAgKSkgZm9yIGNvbW1pdCBpbiBzZWxmLmNvbW1pdHNfaW5fcmFuZ2UoYXJnc1szXS5zcGxp
dCgnLi4uJylbLTFdLCBhcmdzWzNdLnNwbGl0KCcuLi4nKVswXSkKICAgICAgICAgICAgICAgICAg
ICAgXSkKQEAgLTMzMiw2ICs0MTEsMTMgQEAgbm90aGluZyB0byBjb21taXQsIHdvcmtpbmcgdHJl
ZSBjbGVhbgogICAgIGRlZiBicmFuY2goc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLmhlYWQu
YnJhbmNoCiAKKyAgICBkZWYgaW50ZXJzZWN0aW9uKHNlbGYsIGJyYW5jaCk6CisgICAgICAgIGJy
YW5jaCA9IGJyYW5jaC5zcGxpdCgnLycpWy0xXQorICAgICAgICBpZiBub3Qgc2VsZi5kZWZhdWx0
X2JyYW5jaCBpbiBzZWxmLmNvbW1pdHMgb3Igbm90IGJyYW5jaCBpbiBzZWxmLmNvbW1pdHM6Cisg
ICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIHJldHVybiBzZWxmLmNvbW1pdHNbc2Vs
Zi5kZWZhdWx0X2JyYW5jaF1bc2VsZi5jb21taXRzW2JyYW5jaF1bMF0uYnJhbmNoX3BvaW50IC0g
MV0KKwogICAgIGRlZiBmaW5kKHNlbGYsIHNvbWV0aGluZyk6CiAgICAgICAgIGlmICd+JyBpbiBz
b21ldGhpbmc6CiAgICAgICAgICAgICBzcGxpdCA9IHNvbWV0aGluZy5zcGxpdCgnficpCkBAIC00
OTMsMzIgKzU3OSw0MSBAQCBub3RoaW5nIHRvIGNvbW1pdCwgd29ya2luZyB0cmVlIGNsZWFuCiAg
ICAgICAgICkKIAogICAgIGRlZiBjb21taXRzX2luX3JhbmdlKHNlbGYsIGJlZ2luLCBlbmQpOgor
ICAgICAgICBlbmQgPSBlbmQgYW5kIGVuZC5yZXBsYWNlKCdyZW1vdGVzL29yaWdpbicsICcnKQor
ICAgICAgICBiZWdpbiA9IGJlZ2luIGFuZCBiZWdpbi5yZXBsYWNlKCdyZW1vdGVzL29yaWdpbics
ICcnKQorCiAgICAgICAgIGJyYW5jaGVzID0gW3NlbGYuZGVmYXVsdF9icmFuY2hdCi0gICAgICAg
IGZvciBicmFuY2gsIGNvbW1pdHMgaW4gc2VsZi5jb21taXRzLml0ZW1zKCk6Ci0gICAgICAgICAg
ICBpZiBicmFuY2ggPT0gc2VsZi5kZWZhdWx0X2JyYW5jaDoKLSAgICAgICAgICAgICAgICBjb250
aW51ZQotICAgICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRzOgotICAgICAgICAgICAgICAg
IGlmIGNvbW1pdC5oYXNoID09IGVuZDoKLSAgICAgICAgICAgICAgICAgICAgYnJhbmNoZXMuaW5z
ZXJ0KDAsIGJyYW5jaCkKKyAgICAgICAgaWYgZW5kIGluIHNlbGYuY29tbWl0cy5rZXlzKCkgYW5k
IGVuZCAhPSBzZWxmLmRlZmF1bHRfYnJhbmNoOgorICAgICAgICAgICAgYnJhbmNoZXMuYXBwZW5k
KGVuZCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZvciBicmFuY2gsIGNvbW1pdHMgaW4g
c2VsZi5jb21taXRzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgaWYgYnJhbmNoID09IHNlbGYu
ZGVmYXVsdF9icmFuY2g6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAg
ICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRzOgorICAgICAgICAgICAgICAgICAgICBpZiBjb21t
aXQuaGFzaC5zdGFydHN3aXRoKGVuZCk6CisgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2hl
cy5pbnNlcnQoMCwgYnJhbmNoKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAg
ICAgICAgICAgICBpZiBsZW4oYnJhbmNoZXMpID4gMToKICAgICAgICAgICAgICAgICAgICAgYnJl
YWsKLSAgICAgICAgICAgIGlmIGxlbihicmFuY2hlcykgPiAxOgotICAgICAgICAgICAgICAgIGJy
ZWFrCiAKICAgICAgICAgaW5fcmFuZ2UgPSBGYWxzZQogICAgICAgICBwcmV2aW91cyA9IE5vbmUK
ICAgICAgICAgZm9yIGJyYW5jaCBpbiBicmFuY2hlczoKICAgICAgICAgICAgIGZvciBjb21taXQg
aW4gcmV2ZXJzZWQoc2VsZi5jb21taXRzW2JyYW5jaF0pOgotICAgICAgICAgICAgICAgIGlmIGNv
bW1pdC5oYXNoID09IGVuZDoKKyAgICAgICAgICAgICAgICBpZiBicmFuY2ggPT0gYmVnaW46Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgaWYgY29tbWl0Lmhhc2gu
c3RhcnRzd2l0aChlbmQpIG9yIGVuZCA9PSBicmFuY2g6CiAgICAgICAgICAgICAgICAgICAgIGlu
X3JhbmdlID0gVHJ1ZQogICAgICAgICAgICAgICAgIGlmIGluX3JhbmdlIGFuZCAobm90IHByZXZp
b3VzIG9yIGNvbW1pdC5oYXNoICE9IHByZXZpb3VzLmhhc2gpOgogICAgICAgICAgICAgICAgICAg
ICB5aWVsZCBjb21taXQKICAgICAgICAgICAgICAgICBwcmV2aW91cyA9IGNvbW1pdAotICAgICAg
ICAgICAgICAgIGlmIGNvbW1pdC5oYXNoID09IGJlZ2luOgorICAgICAgICAgICAgICAgIGlmIGJl
Z2luIGFuZCBjb21taXQuaGFzaC5zdGFydHN3aXRoKGJlZ2luKToKICAgICAgICAgICAgICAgICAg
ICAgaW5fcmFuZ2UgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICBicmVhaworCiAgICAgICAg
ICAgICBpbl9yYW5nZSA9IEZhbHNlCiAgICAgICAgICAgICBpZiBub3QgcHJldmlvdXMgb3IgYnJh
bmNoID09IHNlbGYuZGVmYXVsdF9icmFuY2g6CiAgICAgICAgICAgICAgICAgY29udGludWUKLQog
ICAgICAgICAgICAgZm9yIGNvbW1pdCBpbiByZXZlcnNlZChzZWxmLmNvbW1pdHNbc2VsZi5kZWZh
dWx0X2JyYW5jaF0pOgogICAgICAgICAgICAgICAgIGlmIHByZXZpb3VzLmJyYW5jaF9wb2ludCA9
PSBjb21taXQuaWRlbnRpZmllcjoKICAgICAgICAgICAgICAgICAgICAgZW5kID0gY29tbWl0Lmhh
c2gKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L3Byb2dyYW0vX19pbml0X18ucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtL19faW5pdF9fLnB5CmluZGV4IDJmZWI5Y2FlMzli
ZS4uY2YwYWIxNTJjNzFhIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtL19faW5pdF9fLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vX19pbml0X18ucHkK
QEAgLTM0LDYgKzM0LDcgQEAgZnJvbSAuY2hlY2tvdXQgaW1wb3J0IENoZWNrb3V0CiBmcm9tIC5m
aW5kIGltcG9ydCBGaW5kLCBJbmZvCiBmcm9tIC5wdWxsIGltcG9ydCBQdWxsCiBmcm9tIC5zZXR1
cF9naXRfc3ZuIGltcG9ydCBTZXR1cEdpdFN2bgorZnJvbSAuZ2l0X2ZhbGxiYWNrIGltcG9ydCBC
bGFtZSwgU2hvdywgTG9nLCBTaG9ydGxvZwogCiAKIGRlZiBtYWluKGFyZ3M9Tm9uZSwgcGF0aD1O
b25lLCBsb2dnZXJzPU5vbmUsIGNvbnRyaWJ1dG9ycz1Ob25lLCBpZGVudGlmaWVyX3RlbXBsYXRl
PU5vbmUsIHN1YnZlcnNpb249Tm9uZSk6CkBAIC01Nyw3ICs1OCw3IEBAIGRlZiBtYWluKGFyZ3M9
Tm9uZSwgcGF0aD1Ob25lLCBsb2dnZXJzPU5vbmUsIGNvbnRyaWJ1dG9ycz1Ob25lLCBpZGVudGlm
aWVyX3RlbXBsCiAKICAgICBzdWJwYXJzZXJzID0gcGFyc2VyLmFkZF9zdWJwYXJzZXJzKGhlbHA9
J3N1Yi1jb21tYW5kIGhlbHAnKQogCi0gICAgcHJvZ3JhbXMgPSBbRmluZCwgSW5mbywgQ2hlY2tv
dXQsIENhbm9uaWNhbGl6ZSwgUHVsbCwgQ2xlYW5dCisgICAgcHJvZ3JhbXMgPSBbRmluZCwgSW5m
bywgQ2hlY2tvdXQsIENhbm9uaWNhbGl6ZSwgUHVsbCwgQ2xlYW4sIEJsYW1lLCBTaG93LCBMb2cs
IFNob3J0bG9nXQogICAgIGlmIHN1YnZlcnNpb246CiAgICAgICAgIHByb2dyYW1zLmFwcGVuZChT
ZXR1cEdpdFN2bikKIApAQCAtNjYsNyArNjcsNyBAQCBkZWYgbWFpbihhcmdzPU5vbmUsIHBhdGg9
Tm9uZSwgbG9nZ2Vycz1Ob25lLCBjb250cmlidXRvcnM9Tm9uZSwgaWRlbnRpZmllcl90ZW1wbAog
ICAgICAgICBzdWJwYXJzZXIuc2V0X2RlZmF1bHRzKG1haW49cHJvZ3JhbS5tYWluKQogICAgICAg
ICBwcm9ncmFtLnBhcnNlcihzdWJwYXJzZXIsIGxvZ2dlcnM9bG9nZ2VycykKIAotICAgIHBhcnNl
ZCA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3M9YXJncykKKyAgICBwYXJzZWQsIHVua25vd25fYXJn
cyA9IHBhcnNlci5wYXJzZV9rbm93bl9hcmdzKGFyZ3M9YXJncykKIAogICAgIGlmIHBhcnNlZC5y
ZXBvc2l0b3J5LnN0YXJ0c3dpdGgoKCdodHRwczovLycsICdodHRwOi8vJykpOgogICAgICAgICBy
ZXBvc2l0b3J5ID0gcmVtb3RlLlNjbS5mcm9tX3VybChwYXJzZWQucmVwb3NpdG9yeSwgY29udHJp
YnV0b3JzPWNvbnRyaWJ1dG9ycykKQEAgLTgyLDQgKzgzLDUgQEAgZGVmIG1haW4oYXJncz1Ob25l
LCBwYXRoPU5vbmUsIGxvZ2dlcnM9Tm9uZSwgY29udHJpYnV0b3JzPU5vbmUsIGlkZW50aWZpZXJf
dGVtcGwKICAgICAgICAgcmVwb3NpdG9yeT1yZXBvc2l0b3J5LAogICAgICAgICBpZGVudGlmaWVy
X3RlbXBsYXRlPWlkZW50aWZpZXJfdGVtcGxhdGUsCiAgICAgICAgIHN1YnZlcnNpb249c3VidmVy
c2lvbiwKKyAgICAgICAgdW5rbm93bl9hcmdzPXVua25vd25fYXJncwogICAgICkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3NjbV9i
YXNlLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkv
c2NtX2Jhc2UucHkKaW5kZXggZjFkNWRiOGQ5MDBiLi5hNTkxNDk5YTBmNDIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3NjbV9iYXNl
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5
L3NjbV9iYXNlLnB5CkBAIC0zNyw3ICszNyw5IEBAIGNsYXNzIFNjbUJhc2Uob2JqZWN0KToKICAg
ICAjIHRoZSBmb2xsb3dpbmcgaWRpb21zIHNlZW0gY29tbW9uIGVub3VnaCB0byBiZSBzaGFyZWQu
CiAgICAgREVWX0JSQU5DSEVTID0gcmUuY29tcGlsZShyJy4qWyhlbmcpKGRldikoYnVnKV0vLisn
KQogICAgIFBST0RfQlJBTkNIRVMgPSByZS5jb21waWxlKHInXFMrLVtcZCtcLl0rLWJyYW5jaCcp
Ci0gICAgR0lUX1NWTl9SRVZJU0lPTiA9IHJlLmNvbXBpbGUocideZ2l0LXN2bi1pZDogXFMrOlwv
XC8uK0AoP1A8cmV2aXNpb24+XGQrKSAuKy0uKy0uKy0uKycsIGZsYWdzPXJlLk1VTFRJTElORSkK
KyAgICBHSVRfU1ZOX1JFVklTSU9OID0gcmUuY29tcGlsZShyJ14oPzogICAgKT9naXQtc3ZuLWlk
OiBcUys6XC9cLy4rQCg/UDxyZXZpc2lvbj5cZCspIC4rLS4rLS4rLS4rJywgZmxhZ3M9cmUuTVVM
VElMSU5FKQorICAgIENPTU1JVF9GUk9NX0xPRyA9IHJlLmNvbXBpbGUocideY29tbWl0ICg/UDxj
b21taXQ+W2EtekEtWjAtOV17NDB9KScpCisKICAgICBERUZBVUxUX0JSQU5DSEVTID0gWydtYWlu
JywgJ21hc3RlcicsICd0cnVuayddCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZGV2X2JyYW5j
aGVzPU5vbmUsIHByb2RfYnJhbmNoZXM9Tm9uZSwgY29udHJpYnV0b3JzPU5vbmUsIGlkPU5vbmUp
OgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0
c2NtcHkvdGVzdC9jYW5vbmljYWxpemVfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2Nhbm9uaWNhbGl6ZV91bml0dGVzdC5w
eQppbmRleCA3NzlkZDhhZjM3YjUuLjA4ZWMxODQ3YWY4ZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9jYW5vbmljYWxpemVf
dW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvdGVzdC9jYW5vbmljYWxpemVfdW5pdHRlc3QucHkKQEAgLTIwLDYgKzIwLDkgQEAK
ICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAoraW1wb3J0IG9zCitpbXBv
cnQgc2h1dGlsCitpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtp
dGNvcmVweSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQpAQCAtMjgsNyArMzEsMTQgQEAgZnJvbSB3ZWJr
aXRzY21weSBpbXBvcnQgcHJvZ3JhbSwgbW9ja3MsIGxvY2FsLCBDb21taXQsIENvbnRyaWJ1dG9y
CiAKIAogY2xhc3MgVGVzdENhbm9uaWNhbGl6ZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgcGF0
aCA9ICcvbW9jay9yZXBvc2l0b3J5JworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2Vs
Zi5jb250YWluZXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKyAgICAgICAgc2VsZi5wYXRoID0gb3Mu
cGF0aC5qb2luKHNlbGYuY29udGFpbmVyLCBzZWxmLnBhdGgpCisgICAgICAgIG9zLm1ha2VkaXJz
KHNlbGYucGF0aCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgaWYgb3MucGF0
aC5leGlzdHMoc2VsZi5jb250YWluZXIpIGFuZCBzZWxmLmNvbnRhaW5lci5zdGFydHN3aXRoKCcv
dG1wJyk6CisgICAgICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuY29udGFpbmVyKQogCiAgICAg
ZGVmIHRlc3RfaW52YWxpZChzZWxmKToKICAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCksIG1v
Y2tzLmxvY2FsLkdpdCgpLCBtb2Nrcy5sb2NhbC5Tdm4oc2VsZi5wYXRoKSwgTW9ja1RpbWU6CmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21w
eS90ZXN0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9jaGVja291dF91bml0dGVzdC5weQppbmRleCBjNTg1
ODAyNThkNWMuLjEwM2NiMDI2OTBlNiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9jaGVja291dF91bml0dGVzdC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2No
ZWNrb3V0X3VuaXR0ZXN0LnB5CkBAIC0yMCw2ICsyMCw5IEBACiAjIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAKK2ltcG9ydCBvcworaW1wb3J0IHNodXRpbAoraW1wb3J0IHRl
bXBmaWxlCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IE91dHB1
dENhcHR1cmUKQEAgLTI4LDcgKzMxLDEzIEBAIGZyb20gd2Via2l0c2NtcHkgaW1wb3J0IHByb2dy
YW0sIG1vY2tzLCBsb2NhbAogCiAKIGNsYXNzIFRlc3RDaGVja291dCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6Ci0gICAgcGF0aCA9ICcvbW9jay9yZXBvc2l0b3J5JworICAgIGRlZiBzZXRVcChzZWxmKToK
KyAgICAgICAgc2VsZi5jb250YWluZXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKyAgICAgICAgc2Vs
Zi5wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuY29udGFpbmVyLCAncmVwb3NpdG9yeScpCisKKyAg
ICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNlbGYuY29u
dGFpbmVyKSBhbmQgc2VsZi5jb250YWluZXIuc3RhcnRzd2l0aCgnL3RtcCcpOgorICAgICAgICAg
ICAgc2h1dGlsLnJtdHJlZShzZWxmLmNvbnRhaW5lcikKIAogICAgIGRlZiB0ZXN0X2NoZWNrb3V0
X2dpdChzZWxmKToKICAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCksIG1vY2tzLmxvY2FsLkdp
dChzZWxmLnBhdGgpLCBtb2Nrcy5sb2NhbC5Tdm4oKSwgTW9ja1RpbWU6CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2ZpbmRf
dW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRz
Y21weS90ZXN0L2ZpbmRfdW5pdHRlc3QucHkKaW5kZXggYjZmNTkxODkxZmZmLi5mNWQ3MzdhZjA4
Y2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L3Rlc3QvZmluZF91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2ZpbmRfdW5pdHRlc3QucHkKQEAgLTIyLDYg
KzIyLDcgQEAKIAogaW1wb3J0IGpzb24KIGltcG9ydCBzaHV0aWwKK2ltcG9ydCBvcwogaW1wb3J0
IHRlbXBmaWxlCiBpbXBvcnQgdW5pdHRlc3QKIApAQCAtMzIsNyArMzMsMTMgQEAgZnJvbSB3ZWJr
aXRzY21weSBpbXBvcnQgcHJvZ3JhbSwgbW9ja3MKIAogCiBjbGFzcyBUZXN0RmluZCh1bml0dGVz
dC5UZXN0Q2FzZSk6Ci0gICAgcGF0aCA9ICcvbW9jay9yZXBvc2l0b3J5JworICAgIGRlZiBzZXRV
cChzZWxmKToKKyAgICAgICAgc2VsZi5jb250YWluZXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKyAg
ICAgICAgc2VsZi5wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuY29udGFpbmVyLCAncmVwb3NpdG9y
eScpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGlmIG9zLnBhdGguZXhpc3Rz
KHNlbGYuY29udGFpbmVyKSBhbmQgc2VsZi5jb250YWluZXIuc3RhcnRzd2l0aCgnL3RtcCcpOgor
ICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmNvbnRhaW5lcikKIAogICAgIGRlZiB0ZXN0
X2Jhc2ljX2dpdChzZWxmKToKICAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVy
ZWQsIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgpLCBtb2Nrcy5sb2NhbC5Tdm4oKSwgTW9ja1Rp
bWU6CkBAIC0xODEsNyArMTg4LDcgQEAgSWRlbnRpZmllcjogM0BtYWluCiAgICAgICAgICAgICAg
ICAgKSwgdGltZXN0YW1wPTE2MDE2NjMwMDAsCiAgICAgICAgICAgICAgICAgb3JkZXI9MCwKICAg
ICAgICAgICAgICAgICBicmFuY2g9J21haW4nLAotICAgICAgICAgICAgICAgIG1lc3NhZ2U9JzR0
aCBjb21taXRcbmdpdC1zdm4taWQ6IGh0dHBzOi8vc3ZuLmV4YW1wbGUub3JnL3JlcG9zaXRvcnkv
cmVwb3NpdG9yeS90cnVua0A0IDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYycs
CisgICAgICAgICAgICAgICAgbWVzc2FnZT0nNHRoIGNvbW1pdFxuZ2l0LXN2bi1pZDogaHR0cHM6
Ly9zdm4uZXhhbXBsZS5vcmcvcmVwb3NpdG9yeS9yZXBvc2l0b3J5L3RydW5rQDQgMjY4ZjQ1Y2Mt
Y2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjJyksCiAgICAgICAgICAgICApKQogCiAgICAgZGVm
IHRlc3RfdGFnX3N2bihzZWxmKToKQEAgLTIzNiw3ICsyNDMsMTcgQEAgSWRlbnRpZmllcjogM0B0
cnVuawogCiAKIGNsYXNzIFRlc3RJbmZvKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBwYXRoID0g
Jy9tb2NrL3JlcG9zaXRvcnknCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmNv
bnRhaW5lciA9IHRlbXBmaWxlLm1rZHRlbXAoKQorICAgICAgICBzZWxmLnBhdGggPSBvcy5wYXRo
LmpvaW4oc2VsZi5jb250YWluZXIsICdyZXBvc2l0b3J5JykKKworICAgIGRlZiB0ZWFyRG93bihz
ZWxmKToKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc2VsZi5jb250YWluZXIpIGFuZCBzZWxm
LmNvbnRhaW5lci5zdGFydHN3aXRoKCcvdG1wJyk6CisgICAgICAgICAgICBzaHV0aWwucm10cmVl
KHNlbGYuY29udGFpbmVyKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBpZiBv
cy5wYXRoLmV4aXN0cyhzZWxmLnBhdGgpIGFuZCBzZWxmLnBhdGguc3RhcnRzd2l0aCgnL3RtcCcp
OgorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLnBhdGgpCiAKICAgICBkZWYgdGVzdF9i
YXNpY19naXQoc2VsZik6CiAgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVk
LCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoKSwgbW9ja3MubG9jYWwuU3ZuKCksIE1vY2tUaW1l
OgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0
c2NtcHkvdGVzdC9naXRfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS93ZWJraXRzY21weS90ZXN0L2dpdF91bml0dGVzdC5weQppbmRleCBiYzdiNjM5Mjli
NGEuLmQ4NWVhYzM0MTlhMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9naXRfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9naXRfdW5pdHRlc3Qu
cHkKQEAgLTMyLDcgKzMyLDEzIEBAIGZyb20gd2Via2l0c2NtcHkgaW1wb3J0IENvbW1pdCwgbG9j
YWwsIG1vY2tzLCByZW1vdGUKIAogCiBjbGFzcyBUZXN0R2l0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
LSAgICBwYXRoID0gJy9tb2NrL3JlcG9zaXRvcnknCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAg
ICAgICBzZWxmLmNvbnRhaW5lciA9IHRlbXBmaWxlLm1rZHRlbXAoKQorICAgICAgICBzZWxmLnBh
dGggPSBvcy5wYXRoLmpvaW4oc2VsZi5jb250YWluZXIsICdyZXBvc2l0b3J5JykKKworICAgIGRl
ZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc2VsZi5wYXRoKSBh
bmQgc2VsZi5wYXRoLnN0YXJ0c3dpdGgoJy90bXAnKToKKyAgICAgICAgICAgIHNodXRpbC5ybXRy
ZWUoc2VsZi5wYXRoKQogCiAgICAgZGVmIHRlc3RfZGV0ZWN0aW9uKHNlbGYpOgogICAgICAgICB3
aXRoIE91dHB1dENhcHR1cmUoKSwgbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCksIG1vY2tzLmxv
Y2FsLlN2bigpOgpAQCAtMTAzLDggKzEwOSw4IEBAIGNsYXNzIFRlc3RHaXQodW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RGljdEVxdWFsKAogICAgICAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAnUGF0aCc6ICcuJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICdSZXBvc2l0b3J5IFJvb3QnOiAnZ2l0QGV4YW1wbGUub3JnOi9t
b2NrL3JlcG9zaXRvcnknLAotICAgICAgICAgICAgICAgICAgICAgICAgJ1VSTCc6ICdnaXRAZXhh
bXBsZS5vcmc6L21vY2svcmVwb3NpdG9yeS9tYWluJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICdSZXBvc2l0b3J5IFJvb3QnOiAnZ2l0QGV4YW1wbGUub3JnOnt9Jy5mb3JtYXQoc2VsZi5wYXRo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdVUkwnOiAnZ2l0QGV4YW1wbGUub3JnOnt9L21h
aW4nLmZvcm1hdChzZWxmLnBhdGgpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1JldmlzaW9u
JzogJzknLAogICAgICAgICAgICAgICAgICAgICAgICAgJ05vZGUgS2luZCc6ICdkaXJlY3Rvcnkn
LAogICAgICAgICAgICAgICAgICAgICAgICAgJ1NjaGVkdWxlJzogJ25vcm1hbCcsCkBAIC0zMDUs
NiArMzExLDM1IEBAIGNsYXNzIFRlc3RHaXQodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAg
ICAgICAgICAgICBnaXQuY29tbWl0KGhhc2g9JzliODMxMWYyJyksCiAgICAgICAgICAgICAgICAg
XSksIENvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChsaXN0KGdpdC5jb21taXRzKGJlZ2luPWRpY3Qo
YXJndW1lbnQ9JzliODMxMWYyJyksIGVuZD1kaWN0KGFyZ3VtZW50PSc2MjE2NTJhZCcpKSkpKQog
CisgICAgZGVmIHRlc3RfY2FjaGUoc2VsZik6CisgICAgICAgIGZvciBtb2NrIGluIFttb2Nrcy5s
b2NhbC5HaXQoc2VsZi5wYXRoKSwgbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCwgZ2l0X3N2bj1U
cnVlKV06CisgICAgICAgICAgICB3aXRoIG1vY2ssIE91dHB1dENhcHR1cmUoKToKKyAgICAgICAg
ICAgICAgICByZXBvID0gbG9jYWwuR2l0KHNlbGYucGF0aCkKKworICAgICAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocmVwby5jYWNoZS5pZGVudGlmaWVyX3RvX2hhc2goJzFAbWFpbicpLCAn
OWI4MzExZjI1YTc3YmExNDkyM2Q5ZDVhNjUzMjEwM2Y1NGFiZWZjYicpCisgICAgICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvLmNhY2hlLmhhc2hfdG9faWRlbnRpZmllcignZDhiY2Uy
NmZhNjVjJyksICc1QG1haW4nKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVw
by5jYWNoZS5pZGVudGlmaWVyX3RvX2hhc2goJzIuM0BicmFuY2gtYicpLCAnNzkwNzI1YTZkNzll
MjhkYjJlY2RkZTI5NTQ4ZDIyNjJjMGJkMDU5ZCcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChyZXBvLmNhY2hlLmlkZW50aWZpZXJfdG9faGFzaCgnMi4xQGJyYW5jaC1hJyksICdh
MzBjZTg0OTRiZjFhYzI4MDdhNjk4NDRmNzI2YmU0YTk4NDNjYTU1JykKKyAgICAgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHJlcG8uY2FjaGUuaGFzaF90b19pZGVudGlmaWVyKCdhMzBjZTg0
OTRiZjEnKSwgJzIuMUBicmFuY2gtYScpCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHJlcG8uY2FjaGUuaGFzaF90b19pZGVudGlmaWVyKCdiYWRjMGRkMWYnKSwgTm9uZSkKKyAg
ICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG8uY2FjaGUuaWRlbnRpZmllcl90b19o
YXNoKCc2QG1haW4nKSwgTm9uZSkKKworCisgICAgZGVmIHRlc3RfcmV2aXNpb25fY2FjaGUoc2Vs
Zik6CisgICAgICAgIHdpdGggbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCwgZ2l0X3N2bj1UcnVl
KSwgT3V0cHV0Q2FwdHVyZSgpOgorICAgICAgICAgICAgcmVwbyA9IGxvY2FsLkdpdChzZWxmLnBh
dGgpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwby5jYWNoZS5pZGVudGlmaWVy
X3RvX3JldmlzaW9uKCcxQG1haW4nKSwgJ3IxJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocmVwby5jYWNoZS5yZXZpc2lvbl90b19pZGVudGlmaWVyKCdyOScpLCAnNUBtYWluJykKKwor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvLmNhY2hlLnJldmlzaW9uX3RvX2hhc2go
J3I4JyksICdiYWU1ZDFlOTA5OTlkNGY5MTZhOGExNTgxMGNjZmE0M2YzN2EyZmQ2JykKKworICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvLmNhY2hlLnJldmlzaW9uX3RvX2lkZW50aWZp
ZXIoJ3IxMDAnKSwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwby5jYWNo
ZS5oYXNoX3RvX3JldmlzaW9uKCdiYWRjMGRkMWYnKSwgTm9uZSkKKworICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChyZXBvLmNhY2hlLmlkZW50aWZpZXJfdG9fcmV2aXNpb24oJzZAbWFpbicp
LCBOb25lKQorCiAKIGNsYXNzIFRlc3RHaXRIdWIodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHJl
bW90ZSA9ICdodHRwczovL2dpdGh1Yi5leGFtcGxlLmNvbS9XZWJLaXQvV2ViS2l0JwpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3N2bi5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zdm4ucHkKaW5kZXgg
ZTM5ZDNkZjVkZjk0Li4zMWU0MTEzM2QxOTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zdm4ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3N2bi5weQpAQCAtOTksMTcgKzk5LDE1IEBAIGNsYXNz
IFNWTihTQ00sIFNWTlJlcG9zaXRvcnkpOgogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGlu
X3dvcmtpbmdfZGlyZWN0b3J5KGNscywgcGF0aCwgZXhlY3V0aXZlPU5vbmUpOgotICAgICAgICBp
ZiBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihwYXRoLCAnLnN2bicpKToKLSAgICAgICAgICAg
ICMgVGhpcyBpcyBhIGZhc3Qgc2hvcnRjdXQgZm9yIHN2biBpbmZvIHRoYXQgaXMgdXN1YWxseSBj
b3JyZWN0IGZvciBTVk4gPCAxLjcsCi0gICAgICAgICAgICAjIGJ1dCBkb2Vzbid0IHdvcmsgZm9y
IFNWTiA+PSAxLjcuCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBpZiBub3Qgb3Mu
cGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4ocGF0aCwgJy5zdm4nKSk6CisgICAgICAgICAgICByZXR1
cm4gRmFsc2UKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBleGVjdXRpdmUgPSBleGVjdXRp
dmUgb3IgRXhlY3V0aXZlKCkKICAgICAgICAgICAgIHN2bl9pbmZvX2FyZ3MgPSBbY2xzLmV4ZWN1
dGFibGVfbmFtZSwgJ2luZm8nXQogICAgICAgICAgICAgZXhpdF9jb2RlID0gZXhlY3V0aXZlLnJ1
bl9jb21tYW5kKHN2bl9pbmZvX2FyZ3MsIGN3ZD1wYXRoLCByZXR1cm5fZXhpdF9jb2RlPVRydWUp
CiAgICAgICAgICAgICByZXR1cm4gKGV4aXRfY29kZSA9PSAwKQotICAgICAgICBleGNlcHQgT1NF
cnJvcjoKKyAgICAgICAgZXhjZXB0IChPU0Vycm9yLCBTY3JpcHRFcnJvcik6CiAgICAgICAgICAg
ICByZXR1cm4gRmFsc2UKIAogICAgIGRlZiBmaW5kX3V1aWQoc2VsZiwgcGF0aCk6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429215</attachid>
            <date>2021-05-20 13:58:41 -0700</date>
            <delta_ts>2021-05-20 14:00:36 -0700</delta_ts>
            <desc>Add identifiers cache v2</desc>
            <filename>identifier-mappings-cache-v2.patch</filename>
            <type>text/plain</type>
            <size>47861</size>
            <attacher name="Dean Johnson">dean_johnson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxMmYz
OTc0NTc3YWUuLjMzNDZhYWJmZjhmYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIxLTA1LTIwICBEZWFuIEpvaG5z
b24gIDxkZWFuX2pvaG5zb25AYXBwbGUuY29tPgorCisgICAgICAgIFt3ZWJraXRzY21weV0gQ2Fj
aGUgaWRlbnRpZmllcnMgaW4gR2l0IGNoZWNrb3V0cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NjE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKwkJVGhpcyBwYXRjaCBhZGRzIGFuIGlkZW50aWZpZXIgbWFwcGluZyBj
YWNoZSBwZXItYnJhbmNoIHRvIDxyZXBvX3Jvb3Q+Ly5naXQvY2FjaGVzLiBJdCBvbmx5IGV2ZXIg
Y2FjaGVzCisJCXdoYXQgaXMgcHVzaGVkIHRvIGEgcmVtb3RlLCBhbmQgc2luY2Ugd2UgZG8gbm90
IGFsbG93IGZvcmNlLXB1c2hpbmcgdG8gbWFpbiwgd2Ugc2hvdWxkIG5ldmVyIGhhdmUgdG8KKwkJ
aW52YWxpZGF0ZSB0aGUgY2FjaGUuCisKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS93ZWJraXRzY21weS9sb2NhbC9naXQucHk6CisgICAgICAgIChHaXRDYWNoZSk6IEFk
ZGVkLiBNdWx0aS1kaXJlY3Rpb25hbCBjYWNoZSBiZXR3ZWVuIGhhc2hlcywgcmV2aXNpb25zIGFu
ZCBpZGVudGlmaWVycy4gTGF6aWx5IGxvYWRzCisJCWNhY2hlcyBhbmQgaWRlbnRpZmllciAtPiBo
YXNoICsgcmV2aXNpb24gLyBoYXNoICsgcmV2aXNpb24gLT4gaWRlbnRpZmllciBtYXBwaW5ncy4K
KyAgICAgICAgKEdpdENhY2hlLl9faW5pdF9fKToKKyAgICAgICAgKEdpdENhY2hlLmluaXRpYWxp
emUpOgorICAgICAgICAoR2l0Q2FjaGUucGF0aCk6IFBhdGggZm9yIHRoZSBjYWNoZSB0byBiZSBz
dG9yZWQuCisgICAgICAgIChHaXRDYWNoZS5wb3B1bGF0ZSk6IENyZWF0ZXMgb3IgdXBkYXRlcyBj
YWNoZSBlbnRyaWVzIGluLXBsYWNlLgorICAgICAgICAoR2l0Q2FjaGUuc2V0X2hhc2hfbWFwcGlu
Zyk6IEhhc2hlcyBhcmUgc3RvcmVkIHVzaW5nIHRoZSBmaXJzdCA2IGNoYXJhY3RlcnMgcG9pbnRp
bmcgdG8gYSBkaWN0aW9uYXJ5IAorCQlvZiB0aGUgcmVtYWluaW5nIDM0IGNoYXJhY3RlcnMuIFRo
aXMgYWxsb3dzIHRoZSBjYWNoZSB0byBiZSBoaXQgZm9yIGhhc2hlcyBhcyBzaG9ydCBhcyA2IGNo
YXJhY3RlcnMsCisJCXdoaWxlIHN0aWxsIGVuYWJsaW5nIGlkZW50aWZpZXJzIHRvIG1hcCB0byA0
MCBjaGFyYWN0ZXIgaGFzaGVzLgorICAgICAgICAoR2l0Q2FjaGUuZ2V0X2hhc2hfbWFwcGluZyk6
IEhlbHBlciBmdW5jdGlvbiBmb3IgYWNjZXNzaW5nIHRoZSBoYXNoIG1hcHBpbmcgc3RvcmFnZTsg
cmVwbGljYXRlcyBHaXQKKwkJYmVoYXZpb3Igd2hlbiB0aGVyZSBpcyBtdWx0aXBsZSBtYXRjaGVz
IGZvciBhIHByb3ZpZGVkIGhhc2ggKGUuZy4gcmFpc2UgYW4gZXJyb3IpLgorICAgICAgICAoR2l0
Q2FjaGUubG9hZF9jb21taXRzX2FuZF9yZXZpc2lvbnNfY2FjaGUpOiBMb2FkcyBjb21taXRzIGFu
ZCByZXZpc2lvbnMgY2FjaGUuCisgICAgICAgIChHaXRDYWNoZS5sb2FkX2lkZW50aWZpZXJfY2Fj
aGUpOiBMb2FkcyBjb21taXRzIGFuZCByZXZpc2lvbnMgY2FjaGUgKGlmIG5lZWRlZCksIHRoZW4g
aWRlbnRpZmllciBtYXBwaW5ncy4KKyAgICAgICAgKEdpdENhY2hlLmNhbm9uaWNhbGl6ZV9icmFu
Y2hfaWRlbnRpZmllcik6IEFkZCBpbiB0aGUgJzxicmFuY2hfcG9pbnQ+LicgcHJlZml4IGZvciBi
cmFuY2gtYmFzZWQKKwkJaWRlbnRpZmllcnMgbGlrZSAyQHNhZmFyaS02MTEtYnJhbmNoLgorICAg
ICAgICAoR2l0Q2FjaGUuZm9ybWF0X2lkZW50aWZpZXIpOiBGb3JtYXR0aW5nIGZ1bmN0aW9uIGZv
ciBpZGVudGlmaWVycy4KKyAgICAgICAgKEdpdENhY2hlLmZvcm1hdF9oYXNoKTogRGl0dG8gZm9y
IGhhc2hlcy4KKyAgICAgICAgKEdpdENhY2hlLmZvcm1hdF9yZXZpc2lvbik6IERpdHRvIGZvciBy
ZXZpc2lvbnMuCisgICAgICAgIChHaXRDYWNoZS5oYXNoX3RvX2lkZW50aWZpZXIpOiBDb252ZXJ0
cyBhIGhhc2ggdG8gYW4gaWRlbnRpZmllciwgb3IgTm9uZSBpZiB0aGUgaGFzaCBkb2VzIG5vdCBl
eGlzdC4KKyAgICAgICAgKEdpdENhY2hlLmhhc2hfdG9fcmV2aXNpb24pOiBEaXR0bywgYnV0IGZv
ciBoYXNoIC0+IHJldmlzaW9uLgorICAgICAgICAoR2l0Q2FjaGUucmV2aXNpb25fdG9faWRlbnRp
Zmllcik6IERpdHRvLCBidXQgZm9yIHJldmlzaW9uIC0+IGlkZW50aWZpZXIuCisgICAgICAgIChH
aXRDYWNoZS5yZXZpc2lvbl90b19oYXNoKTogRGl0dG8sIGJ1dCBmb3IgcmV2aXNpb24gLT4gaGFz
aC4KKyAgICAgICAgKEdpdENhY2hlLmlkZW50aWZpZXJfdG9faGFzaCk6IERpdHRvLCBidXQgZm9y
IGlkZW50aWZpZXIgLT4gaGFzaC4KKyAgICAgICAgKEdpdENhY2hlLmlkZW50aWZpZXJfdG9fcmV2
aXNpb24pOiBEaXR0bywgYnV0IGZvciBpZGVudGlmaWVyIC0+IHJldmlzaW9uLgorICAgICAgICAo
R2l0Q2FjaGUuX3RyYW5zbGF0ZSk6IEhlbHBlciBmdW5jdGlvbiBmb3IgdHJhbnNsYXRpbmcgaWRl
bnRpZmllcnMuCisgICAgICAgIChHaXQuX19pbml0X18pOgorICAgICAgICAoR2l0KToKKyAgICAg
ICAgKEdpdC5kZWZhdWx0X2JyYW5jaCk6IEFkZCBtZW1vaXphdGlvbiBzbyByZXBlYXRlZCBjYWxs
cyBkbyBub3QgcmVzdWx0IGluIHNoZWxsIGNvbW1hbmRzIHJ1bm5pbmcuCisgICAgICAgIChHaXQu
bWVtb2l6ZWRfY3VycmVudF9icmFuY2gpOiBBZGQgZnVuY3Rpb24gZm9yIG1lbW9pemVkIGN1cnJl
bnQgYnJhbmNoLgorICAgICAgICAoR2l0Lm1lbW9pemVkX2xvY2FsX2JyYW5jaGVzKTogQWRkIGZ1
bmN0aW9uIGZvciBtZW1vaXplZCBsaXN0IG9mIGxvY2FsIGJyYW5jaGVzLgorICAgICAgICAoR2l0
LmNvbW1pdCk6IE1ha2UgdXNlIG9mIGNhY2hlIHRvIGNyZWF0ZSBtYXBwaW5ncyBiZXR3ZWVuIGhh
c2hlcyA8PiByZXZpc2lvbnMgPD4gaWRlbnRpZmllcnMuCisgICAgICAgIChHaXQudXBzdHJlYW1f
cmVtb3RlKTogQWRkIGZ1bmN0aW9uIGZvciBkZWZhdWx0IHVwc3RyZWFtIHJlbW90ZS4gVGhpcyBp
cyB1c2VkIHRvIGZpZ3VyZSBvdXQgd2hhdCBpcworCQljYWNoZWFibGUgb24gZWFjaCBicmFuY2gu
CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9j
a3MvbG9jYWwvZ2l0LnB5OiBQdXQgbW9jayByZXBvc2l0b3JpZXMgaW4gL3RtcCBzbyB3ZSBjYW4g
CisJCXdyaXRlIGNhY2hlcyB0byB0aGVtLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdHNjbXB5L3dlYmtpdHNjbXB5L3NjbV9iYXNlLnB5OgorICAgICAgICAoU2NtQmFzZSk6IEFk
ZCAvIHVwZGF0ZSByZWdleGVzIGZvciBjYWNoZSBjcmVhdGlvbi4KKyAgICAgICAgKiBTY3JpcHRz
L2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2Nhbm9uaWNhbGl6ZV91bml0
dGVzdC5weTogRGl0dG8gdG8gbW9jayByZXBvcyBpbiAvdG1wLgorICAgICAgICAoVGVzdENhbm9u
aWNhbGl6ZS5zZXRVcCk6CisgICAgICAgIChUZXN0Q2Fub25pY2FsaXplKToKKyAgICAgICAgKFRl
c3RDYW5vbmljYWxpemUudGVhckRvd24pOgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvY2hlY2tvdXRfdW5pdHRlc3QucHk6IERpdHRvIHRv
IG1vY2sgcmVwb3MgaW4gL3RtcC4KKyAgICAgICAgKFRlc3RDaGVja291dC5zZXRVcCk6CisgICAg
ICAgIChUZXN0Q2hlY2tvdXQpOgorICAgICAgICAoVGVzdENoZWNrb3V0LnRlYXJEb3duKToKKyAg
ICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2Zp
bmRfdW5pdHRlc3QucHk6IERpdHRvIHRvIG1vY2sgcmVwb3MgaW4gL3RtcC4KKyAgICAgICAgKFRl
c3RGaW5kLnNldFVwKToKKyAgICAgICAgKFRlc3RGaW5kKToKKyAgICAgICAgKFRlc3RGaW5kLnRl
YXJEb3duKToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRz
Y21weS90ZXN0L2dpdF91bml0dGVzdC5weTogRGl0dG8gdG8gbW9jayByZXBvcyBpbiAvdG1wIGFu
ZAorCQlhZGQgdW5pdCB0ZXN0cyBmb3IgdGhlIG5ldyBjYWNoaW5nIGxheWVyLgorICAgICAgICAo
VGVzdEdpdC5zZXRVcCk6CisgICAgICAgIChUZXN0R2l0KToKKyAgICAgICAgKFRlc3RHaXQudGVh
ckRvd24pOgorICAgICAgICAoVGVzdEdpdC50ZXN0X2luZm8pOgorICAgICAgICAoVGVzdEdpdC50
ZXN0X2NhY2hlKToKKyAgICAgICAgKFRlc3RHaXQudGVzdF9yZXZpc2lvbl9jYWNoZSk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3N2bi5weToKKyAgICAg
ICAgKFNWTi5pbl93b3JraW5nX2RpcmVjdG9yeSk6IEZpeCBlcnJvci1wcm9uZSBsb2dpYyBmb3Ig
U1ZOIHJlcG9zaXRvcnkgZGV0ZWN0aW9uLgorCiAyMDIxLTA1LTEzICBBYWthc2ggSmFpbiAgPGFh
a2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbZXdzXSBTdHlsZSBmaXhlcyBpbiBzdGVw
cy5weQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvbG9jYWwvZ2l0LnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2Nt
cHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5CmluZGV4IDllNmNhN2ZiMGM3NC4uZTAyMzNhYThl
YTA5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJr
aXRzY21weS9sb2NhbC9naXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5CkBAIC0yMSw2ICsyMSw3IEBACiAjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAKIGltcG9ydCBjYWxlbmRhcgoraW1wb3J0IGpzb24KIGltcG9ydCBsb2dnaW5nCiBp
bXBvcnQgb3MKIGltcG9ydCByZQpAQCAtMzYsNiArMzcsMzE3IEBAIGZyb20gd2Via2l0c2NtcHku
bG9jYWwgaW1wb3J0IFNjbQogZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgQ29tbWl0LCBDb250cmli
dXRvciwgbG9nCiAKIAorY2xhc3MgR2l0Q2FjaGUob2JqZWN0KToKKyAgICBIQVNIX1BBUlRJVElP
Tl9TSVpFID0gNgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcG8sIGluaXRpYWxpemU9RmFs
c2UpOgorICAgICAgICBzZWxmLnJlcG8gPSByZXBvCisgICAgICAgIHNlbGYuX21hcHBpbmdzID0g
e30KKyAgICAgICAgc2VsZi5fa25vd25fdXBkYXRlZF9icmFuY2hlcyA9IHNldCgpCisKKyAgICAg
ICAgaWYgaW5pdGlhbGl6ZToKKyAgICAgICAgICAgIHNlbGYuaW5pdGlhbGl6ZShicmFuY2g9c2Vs
Zi5yZXBvLmRlZmF1bHRfYnJhbmNoKQorCisgICAgZGVmIGluaXRpYWxpemUoc2VsZiwgYnJhbmNo
PU5vbmUpOgorICAgICAgICAnJycKKyAgICAgICAgRm9ybWF0IGZvciBtYXBwaW5nIGlzIGV4cGVj
dGVkIHRvIGJlOgorICAgICAgICAgIG1hcHBpbmcgPSB7CisgICAgICAgICAgICBicmFuY2g6IHsK
KyAgICAgICAgICAgICAgJ2NvbW1pdHMnOiB7fSwKKyAgICAgICAgICAgICAgJ3JldmlzaW9ucyc6
IHt9LAorICAgICAgICAgICAgICAnbGFzdF91cGRhdGVkJzogeworICAgICAgICAgICAgICAgICdj
b21taXQnOiAnJyBvciBuaWwsCisgICAgICAgICAgICAgICAgJ2lkZW50aWZpZXInOiAwIG9yIG5p
bCwKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAg
JycnCisKKyAgICAgICAgaWYgbm90IGJyYW5jaDoKKyAgICAgICAgICAgIHJldHVybgorCisgICAg
ICAgIGpzb25fcGF0aCA9IHNlbGYucGF0aChicmFuY2gpCisgICAgICAgIGlmIG9zLnBhdGguZXhp
c3RzKGpzb25fcGF0aCkgYW5kIGJyYW5jaCBub3QgaW4gc2VsZi5fbWFwcGluZ3M6CisgICAgICAg
ICAgICB3aXRoIG9wZW4oanNvbl9wYXRoKSBhcyBmaWxlOgorICAgICAgICAgICAgICAgIGNvbnRl
bnQgPSBqc29uLmxvYWQoZmlsZSkKKyAgICAgICAgICAgICAgICBzZWxmLl9tYXBwaW5nc1ticmFu
Y2hdID0gY29udGVudAorICAgICAgICBlbGlmIGJyYW5jaCBub3QgaW4gc2VsZi5fbWFwcGluZ3M6
CisgICAgICAgICAgICBzZWxmLl9tYXBwaW5nc1ticmFuY2hdID0geydjb21taXRzJzoge30sICdy
ZXZpc2lvbnMnOiB7fSwgJ2xhc3RfdXBkYXRlZCc6IHt9fQorCisgICAgZGVmIHBhdGgoc2VsZiwg
YnJhbmNoKToKKyAgICAgICAgYmFzZV9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYucmVwby5yb290
X3BhdGgsICcuZ2l0JywgJ2NhY2hlcycsIGJyYW5jaCkKKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGJhc2VfcGF0aCk6CisgICAgICAgICAgICAgICAgb3Mu
bWFrZWRpcnMoYmFzZV9wYXRoKQorICAgICAgICBleGNlcHQgT1NFcnJvcjogICMgRm9yIHVuaXQg
dGVzdHMKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKGJh
c2VfcGF0aCwgJ2lkZW50aWZpZXJzLmpzb24nKQorCisgICAgZGVmIHBvcHVsYXRlKHNlbGYsIGJy
YW5jaCk6CisgICAgICAgIGlmIGJyYW5jaCBpbiBzZWxmLl9rbm93bl91cGRhdGVkX2JyYW5jaGVz
OgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgc2VsZi5pbml0aWFsaXplKGJyYW5jaCkK
KyAgICAgICAgZW5kX2JyYW5jaCA9IG9zLnBhdGguam9pbihzZWxmLnJlcG8udXBzdHJlYW1fcmVt
b3RlLCBicmFuY2gpCisKKyAgICAgICAgc3RhcnQgPSBzZWxmLl9tYXBwaW5ncy5nZXQoYnJhbmNo
LCB7fSkuZ2V0KCdsYXN0X3VwZGF0ZWQnKQorCisgICAgICAgIHJlc3VsdCA9IHJ1bihbc2VsZi5y
ZXBvLmV4ZWN1dGFibGUoKSwgJ3Jldi1wYXJzZScsIGVuZF9icmFuY2hdLCBjd2Q9c2VsZi5yZXBv
LnJvb3RfcGF0aCwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgZW5jb2Rpbmc9J3V0Zi04JykKKyAgICAg
ICAgaXNfY2FjaGVhYmxlX2JyYW5jaCA9IHJlc3VsdC5yZXR1cm5jb2RlID09IDAgICMgUmVtb3Rl
IGJyYW5jaCBleGlzdHMKKyAgICAgICAgb3V0cHV0ID0gcmVzdWx0LnN0ZG91dC5zdHJpcCgpCisK
KyAgICAgICAgaWYgb3V0cHV0IGFuZCBzdGFydCBhbmQgc3RhcnRbJ2NvbW1pdCddID09IG91dHB1
dFs6bGVuKHN0YXJ0Wydjb21taXQnXSldOgorICAgICAgICAgICAgc2VsZi5fa25vd25fdXBkYXRl
ZF9icmFuY2hlcy5hZGQoYnJhbmNoKQorICAgICAgICAgICAgcmV0dXJuICAjIENhY2hlIGlzIHVw
IHRvIGRhdGUKKworICAgICAgICBpZiBub3QgaXNfY2FjaGVhYmxlX2JyYW5jaDoKKyAgICAgICAg
ICAgIHNlbGYuX21hcHBpbmdzW2JyYW5jaF0gPSB7J2NvbW1pdHMnOiB7fSwgJ3JldmlzaW9ucyc6
IHt9LCAnbGFzdF91cGRhdGVkJzoge319CisgICAgICAgICAgICBzZWxmLl9rbm93bl91cGRhdGVk
X2JyYW5jaGVzLmFkZChicmFuY2gpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBvcmRl
cl9zdGFydCA9IDEKKyAgICAgICAgcmFuZ2VfYXJnID0gJycKKyAgICAgICAgcHJpbWFyeV91cHN0
cmVhbV9yZW1vdGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5yZXBvLnVwc3RyZWFtX3JlbW90ZSwgc2Vs
Zi5yZXBvLmRlZmF1bHRfYnJhbmNoKQorICAgICAgICBpZiBzdGFydCBhbmQgc3RhcnQuZ2V0KCdp
ZGVudGlmaWVyJyk6CisgICAgICAgICAgICBvcmRlcl9zdGFydCA9IGludChzdGFydFsnaWRlbnRp
ZmllciddKQorICAgICAgICAgICAgcmFuZ2VfYXJnICs9IHN0YXJ0Wydjb21taXQnXSArICcuLicK
KyAgICAgICAgZWxpZiBicmFuY2ggIT0gc2VsZi5yZXBvLmRlZmF1bHRfYnJhbmNoOgorICAgICAg
ICAgICAgcmFuZ2VfYXJnICs9IHByaW1hcnlfdXBzdHJlYW1fcmVtb3RlICsgJy4uJworCisgICAg
ICAgIHJhbmdlX2FyZyArPSBlbmRfYnJhbmNoCisKKyAgICAgICAgIyBGaXJzdCB0aW1lIHJ1bm5p
bmcsIGJlIHN1cmUgdG8gcmVjb3JkIHdoZXJlIG5vbi1kZWZhdWx0IGJyYW5jaCBmb3JrZWQgZnJv
bS4KKyAgICAgICAgaWYgb3JkZXJfc3RhcnQgPT0gMSBhbmQgYnJhbmNoICE9IHNlbGYucmVwby5k
ZWZhdWx0X2JyYW5jaDoKKyAgICAgICAgICAgIHByaW1hcnlfYnJhbmNoX2ludGVyc2VjdGlvbl9j
b21tYW5kID0gW3NlbGYucmVwby5leGVjdXRhYmxlKCksICdtZXJnZS1iYXNlJywgcHJpbWFyeV91
cHN0cmVhbV9yZW1vdGUsIGVuZF9icmFuY2hdCisgICAgICAgICAgICBmaXJzdF9jb21taXQgPSBy
dW4ocHJpbWFyeV9icmFuY2hfaW50ZXJzZWN0aW9uX2NvbW1hbmQsIGN3ZD1zZWxmLnJlcG8ucm9v
dF9wYXRoLCBjYXB0dXJlX291dHB1dD1UcnVlLCBlbmNvZGluZz0ndXRmLTgnKS5zdGRvdXQuc3Ry
aXAoKQorICAgICAgICAgICAgc2VsZi5zZXRfaGFzaF9tYXBwaW5nKGJyYW5jaCwgZmlyc3RfY29t
bWl0LCAwKQorCisgICAgICAgIGNhY2hlX3BvcHVsYXRpb25fY29tbWFuZCA9IFtzZWxmLnJlcG8u
ZXhlY3V0YWJsZSgpLCAnbG9nJywgcmFuZ2VfYXJnLCAnLS1yZXZlcnNlJ10KKyAgICAgICAgcmVz
dWx0cyA9IHJ1bihjYWNoZV9wb3B1bGF0aW9uX2NvbW1hbmQsIGN3ZD1zZWxmLnJlcG8ucm9vdF9w
YXRoLCBjYXB0dXJlX291dHB1dD1UcnVlLCBlbmNvZGluZz0ndXRmLTgnKQorCisgICAgICAgICMg
VGVjaG5pY2FsbHkgd2Ugc2hvdWxkIG5ldmVyIHNlZSB0aGlzIGluIGEgbG9jYWwgY2hlY2tvdXQs
IGJ1dCBpdCdzIHBvc3NpYmxlIGluIHRlc3RzLgorICAgICAgICBpZiByZXN1bHRzLnN0ZG91dCA9
PSAnJzoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGxvZyA9IE5vbmUKKyAgICAgICAg
dHJ5OgorICAgICAgICAgICAga3dhcmdzID0gZGljdCgpCisgICAgICAgICAgICBpZiBzeXMudmVy
c2lvbl9pbmZvID49ICgzLCAwKToKKyAgICAgICAgICAgICAgICBrd2FyZ3MgPSBkaWN0KGVuY29k
aW5nPSd1dGYtOCcpCisKKyAgICAgICAgICAgIGxvZyA9IHN1YnByb2Nlc3MuUG9wZW4oY2FjaGVf
cG9wdWxhdGlvbl9jb21tYW5kLCBjd2Q9c2VsZi5yZXBvLnJvb3RfcGF0aCwKKyAgICAgICAgICAg
ICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLCAqKmt3
YXJncykKKyAgICAgICAgICAgIGlmIGxvZy5wb2xsKCk6CisgICAgICAgICAgICAgICAgcmFpc2Ug
c2VsZi5yZXBvLkV4Y2VwdGlvbigiRmFpbGVkIHRvIGNvbnN0cnVjdCBicmFuY2ggaGlzdG9yeSBm
b3IgJ3t9JyIuZm9ybWF0KGJyYW5jaCkpCisKKyAgICAgICAgICAgIF9oYXNoLCByZXZpc2lvbiwg
bGFzdF9oYXNoID0gTm9uZSwgTm9uZSwgTm9uZQorICAgICAgICAgICAgcmVsYXRpdmVfaWRlbnRp
Zmllcl9mcm9tX3N0YXJ0ID0gMAorCisgICAgICAgICAgICBsaW5lID0gbG9nLnN0ZG91dC5yZWFk
bGluZSgpCisgICAgICAgICAgICB3aGlsZSBsaW5lOgorICAgICAgICAgICAgICAgIGlmIG5vdCBs
aW5lLnN0cmlwKCk6CisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsb2cuc3Rkb3V0LnJlYWRs
aW5lKCkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICMg
Q2FjaGUgYnVpbGRpbmcgbXVzdCBzdXBwb3J0IGNhc2VzIHdoZXJlIGEgcmVwb3NpdG9yeSBtYXkg
b3IgbWF5IG5vdCBoYXZlIGhpc3RvcmljYWwgZ2l0LXN2biBkYXRhLgorICAgICAgICAgICAgICAg
IGhhc2hfbWF0Y2ggPSBzZWxmLnJlcG8uQ09NTUlUX0ZST01fTE9HLm1hdGNoKGxpbmUpCisgICAg
ICAgICAgICAgICAgaWYgaGFzaF9tYXRjaCBhbmQgX2hhc2ggaXMgTm9uZTogICMgZ2l0LXN2biBs
b2dpYworICAgICAgICAgICAgICAgICAgICBpZiBsYXN0X2hhc2ggaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICAgICAgICAgICAgICBhc3NlcnQgX2hhc2ggaXMgTm9uZSwgIkVycm9yOiBTb21laG93
IGdvdCBhIG5vbi1lbXB0eSBoYXNoIHt9Li4uIG1heWJlIHJldmlzaW9uIGZvciBwcmV2aW91cyBj
b21taXQgZmFpbGVkIHRvIGJlIGNhcHR1cmVkPyIuZm9ybWF0KF9oYXNoKQorCisgICAgICAgICAg
ICAgICAgICAgIF9oYXNoID0gaGFzaF9tYXRjaC5ncm91cCgnY29tbWl0JykKKyAgICAgICAgICAg
ICAgICBlbGlmIGhhc2hfbWF0Y2ggYW5kIF9oYXNoIGlzIG5vdCBOb25lOiAgIyBub24gZ2l0LXN2
biBsb2dpYworICAgICAgICAgICAgICAgICAgICBsYXN0X2hhc2ggPSBfaGFzaAorICAgICAgICAg
ICAgICAgICAgICBzZWxmLnNldF9oYXNoX21hcHBpbmcoYnJhbmNoLCBfaGFzaCwgb3JkZXJfc3Rh
cnQgKyByZWxhdGl2ZV9pZGVudGlmaWVyX2Zyb21fc3RhcnQpCisgICAgICAgICAgICAgICAgICAg
IHJlbGF0aXZlX2lkZW50aWZpZXJfZnJvbV9zdGFydCArPSAxCisKKyAgICAgICAgICAgICAgICAg
ICAgX2hhc2ggPSBoYXNoX21hdGNoLmdyb3VwKCdjb21taXQnKQorCisgICAgICAgICAgICAgICAg
cmV2aXNpb25fbWF0Y2ggPSBzZWxmLnJlcG8uR0lUX1NWTl9SRVZJU0lPTi5tYXRjaChsaW5lKQor
ICAgICAgICAgICAgICAgIGlmIHJldmlzaW9uX21hdGNoOiAgIyBnaXQtc3ZuIGxvZ2ljCisgICAg
ICAgICAgICAgICAgICAgIHJldmlzaW9uID0gc3RyKHJldmlzaW9uX21hdGNoLmdyb3VwKCdyZXZp
c2lvbicpKQorCisgICAgICAgICAgICAgICAgICAgICMgRmx1c2ggdG8gbWFwcGluZworICAgICAg
ICAgICAgICAgICAgICBhc3NlcnQgX2hhc2ggaXMgbm90IE5vbmUgYW5kIHJldmlzaW9uIGlzIG5v
dCBOb25lLCAiRXJyb3I6IFNvbWVob3cgcmV2aXNpb24gb3IgX2hhc2ggaXMgTm9uZS4uLiIKKyAg
ICAgICAgICAgICAgICAgICAgc2VsZi5zZXRfaGFzaF9tYXBwaW5nKGJyYW5jaCwgX2hhc2gsIG9y
ZGVyX3N0YXJ0ICsgcmVsYXRpdmVfaWRlbnRpZmllcl9mcm9tX3N0YXJ0KQorICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9tYXBwaW5nc1ticmFuY2hdWydyZXZpc2lvbnMnXVtyZXZpc2lvbl0gPSBv
cmRlcl9zdGFydCArIHJlbGF0aXZlX2lkZW50aWZpZXJfZnJvbV9zdGFydAorCisgICAgICAgICAg
ICAgICAgICAgIGxhc3RfaGFzaCA9IF9oYXNoCisgICAgICAgICAgICAgICAgICAgIF9oYXNoLCBy
ZXZpc2lvbiA9IE5vbmUsIE5vbmUKKyAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmVfaWRlbnRp
Zmllcl9mcm9tX3N0YXJ0ICs9IDEKKworICAgICAgICAgICAgICAgIGxpbmUgPSBsb2cuc3Rkb3V0
LnJlYWRsaW5lKCkKKworICAgICAgICAgICAgYXNzZXJ0IHJldmlzaW9uIGlzIE5vbmUsICdFcnJv
cjogRXhwZWN0ZWQgcmV2aXNpb24gdG8gYmUgTm9uZSBhZnRlciBnZW5lcmF0aW5nIGNhY2hlIGZv
ciB7fS4nLmZvcm1hdChicmFuY2gpCisgICAgICAgICAgICBpZiBfaGFzaDogICMgbm9uIGdpdC1z
dm4gbG9naWM7IGZsdXNoIHNpbmNlIHdlIHByb2Nlc3MgYWZ0ZXIgZWFjaCBjb21taXQuCisgICAg
ICAgICAgICAgICAgbGFzdF9oYXNoID0gX2hhc2gKKyAgICAgICAgICAgICAgICBzZWxmLnNldF9o
YXNoX21hcHBpbmcoYnJhbmNoLCBfaGFzaCwgb3JkZXJfc3RhcnQgKyByZWxhdGl2ZV9pZGVudGlm
aWVyX2Zyb21fc3RhcnQpCisgICAgICAgICAgICAgICAgcmVsYXRpdmVfaWRlbnRpZmllcl9mcm9t
X3N0YXJ0ICs9IDEKKworICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgbG9nOgorICAg
ICAgICAgICAgICAgIGxvZy5raWxsKCkKKworICAgICAgICBzZWxmLl9tYXBwaW5nc1ticmFuY2hd
WydsYXN0X3VwZGF0ZWQnXSA9IHsnY29tbWl0JzogbGFzdF9oYXNoLCAnaWRlbnRpZmllcic6IG9y
ZGVyX3N0YXJ0ICsgcmVsYXRpdmVfaWRlbnRpZmllcl9mcm9tX3N0YXJ0fQorICAgICAgICBzZWxm
Ll9rbm93bl91cGRhdGVkX2JyYW5jaGVzLmFkZChicmFuY2gpCisKKyAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgd2l0aCBvcGVuKHNlbGYucGF0aChicmFuY2gpLCAndycpIGFzIGZpbGU6CisgICAg
ICAgICAgICAgICAganNvbi5kdW1wKHNlbGYuX21hcHBpbmdzW2JyYW5jaF0sIGZpbGUsIGluZGVu
dD00KQorICAgICAgICBleGNlcHQgKElPRXJyb3IsIE9TRXJyb3IsIEZpbGVOb3RGb3VuZEVycm9y
KToKKyAgICAgICAgICAgIHNlbGYucmVwby5sb2coIkZhaWxlZCB0byB3cml0ZSBpZGVudGlmaWVy
IGNhY2hlIHRvICd7fSciLmZvcm1hdChzZWxmLnBhdGgpKQorICAgICAgICAgICAgaWYgb3MucGF0
aC5leGlzdHMoc2VsZi5wYXRoKGJyYW5jaCkpOgorICAgICAgICAgICAgICAgIG9zLnJlbW92ZShz
ZWxmLnBhdGgoYnJhbmNoKSkKKworICAgIGRlZiBzZXRfaGFzaF9tYXBwaW5nKHNlbGYsIGJyYW5j
aCwgaGFzaF9rZXksIGlkZW50aWZpZXIpOgorICAgICAgICAnJycKKyAgICAgICAgVG8gc3VwcG9y
dCB1c2luZyB0aGUgY2FjaGUgZm9yIGNvbW1pdHMgYXMgc2hvcnQgYXMgNiBjaGFyYWN0ZXJzLCB1
c2UgYSBuZXN0ZWQgZGljdGlvbmFyeQorICAgICAgICBmb3IgdGhlIGZpcnN0IDYgY2hhcmFjdGVy
cyAtPiByZW1haW5pbmcgMzQgY2hhcmFjdGVycyAtPiBpZGVudGlmaWVyLgorCisgICAgICAgIEV4
YW1wbGU6CisgICAgICAgIGhhc2gxOiA5YzMxNGEyNDIwNzM1ZDAyOWNkZjg5ZjZjMzA3MzA4NTVj
YTJhNGU1CisgICAgICAgIGhhc2gyOiA5YzMxNGEyOTkxMGE5NWE3NmYyZDkzMGFlYThlODMxMjhm
ZmE1NDk1CisgICAgICAgICI5YzMxNGEiOiB7CisgICAgICAgICAgICAiMjQyMDczNWQwMjljZGY4
OWY2YzMwNzMwODU1Y2EyYTRlNSI6IDExLAorICAgICAgICAgICAgIjI5OTEwYTk1YTc2ZjJkOTMw
YWVhOGU4MzEyOGZmYTU0OTUiOiAzMjQ4MAorICAgICAgICB9LAorICAgICAgICAnJycKKyAgICAg
ICAgZmlyc3RfcGFydGl0aW9uID0gaGFzaF9rZXlbOnNlbGYuSEFTSF9QQVJUSVRJT05fU0laRV0K
KyAgICAgICAgcmVtYWluaW5nID0gaGFzaF9rZXlbc2VsZi5IQVNIX1BBUlRJVElPTl9TSVpFOl0K
KyAgICAgICAgc2VsZi5fbWFwcGluZ3NbYnJhbmNoXVsnY29tbWl0cyddLnNldGRlZmF1bHQoZmly
c3RfcGFydGl0aW9uLCB7fSkKKyAgICAgICAgc2VsZi5fbWFwcGluZ3NbYnJhbmNoXVsnY29tbWl0
cyddW2ZpcnN0X3BhcnRpdGlvbl1bcmVtYWluaW5nXSA9IGlkZW50aWZpZXIKKworICAgIGRlZiBn
ZXRfaGFzaF9tYXBwaW5nKHNlbGYsIGJyYW5jaCwgaGFzaF9hcmcpOgorICAgICAgICBmaXJzdF9w
YXJ0aXRpb24gPSBoYXNoX2FyZ1s6c2VsZi5IQVNIX1BBUlRJVElPTl9TSVpFXQorICAgICAgICBy
ZW1haW5pbmcgPSBoYXNoX2FyZ1tzZWxmLkhBU0hfUEFSVElUSU9OX1NJWkU6XQorICAgICAgICBu
dW1fcmVzdWx0cyA9IDAKKyAgICAgICAgcmVzdWx0ID0gTm9uZQorICAgICAgICBmb3IgcmVtYWlu
aW5nX2hhc2gsIGlkZW50aWZpZXIgaW4gc2VsZi5fbWFwcGluZ3NbYnJhbmNoXVsnY29tbWl0cydd
LmdldChoYXNoX2FyZ1s6c2VsZi5IQVNIX1BBUlRJVElPTl9TSVpFXSwge30pLml0ZW1zKCk6Cisg
ICAgICAgICAgICBpZiByZW1haW5pbmdfaGFzaC5zdGFydHN3aXRoKHJlbWFpbmluZyk6CisgICAg
ICAgICAgICAgICAgcmVzdWx0ID0gaWRlbnRpZmllcgorICAgICAgICAgICAgICAgIG51bV9yZXN1
bHRzICs9IDEKKworICAgICAgICAjIFJlcGxpY2F0ZSBnaXQgYmVoYXZpb3IsIHdoaWNoIGFsc28g
ZXJyb3JzIG91dCB3aGVuIGdpdmVuIGFuIGFtYmlndW91cyBjb21taXQgbGlrZSAnOWMzMTRhJy4K
KyAgICAgICAgYXNzZXJ0IG51bV9yZXN1bHRzIDwgMiwgJ0Vycm9yOiBHb3QgbW9yZSB0aGFuIG9u
ZSByZXN1bHQgZm9yIGhhc2ggPD4gaWRlbnRpZmllciB3aXRoIGFyZyB7fScuZm9ybWF0KGhhc2hf
YXJnKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgbG9hZF9jb21taXRzX2FuZF9y
ZXZpc2lvbnNfY2FjaGUoc2VsZiwgYnJhbmNoKToKKyAgICAgICAgc2VsZi5wb3B1bGF0ZShicmFu
Y2gpCisKKyAgICBkZWYgbG9hZF9pZGVudGlmaWVyX2NhY2hlKHNlbGYsIGJyYW5jaCk6CisgICAg
ICAgIGlmIGJyYW5jaCBpbiBzZWxmLl9tYXBwaW5ncyBhbmQgJ2lkZW50aWZpZXJzJyBpbiBzZWxm
Ll9tYXBwaW5nc1ticmFuY2hdOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgaWYgYnJh
bmNoICE9IHNlbGYucmVwby5kZWZhdWx0X2JyYW5jaCBhbmQgKHNlbGYucmVwby5kZWZhdWx0X2Jy
YW5jaCBub3QgaW4gc2VsZi5fbWFwcGluZ3Mgb3IKKyAgICAgICAgICAgICdpZGVudGlmaWVycycg
bm90IGluIHNlbGYuX21hcHBpbmdzW3NlbGYucmVwby5kZWZhdWx0X2JyYW5jaF0pOgorICAgICAg
ICAgICAgICAgIHNlbGYubG9hZF9pZGVudGlmaWVyX2NhY2hlKHNlbGYucmVwby5kZWZhdWx0X2Jy
YW5jaCkKKworICAgICAgICBzZWxmLnBvcHVsYXRlKGJyYW5jaCkKKyAgICAgICAgc2VsZi5fbWFw
cGluZ3NbYnJhbmNoXVsnaWRlbnRpZmllcnMnXSA9IHt9CisgICAgICAgIGZvciBmaXJzdF9oYXNo
X3BhcnRpdGlvbiwgc2Vjb25kX3BhcnRpdGlvbnMgaW4gc2VsZi5fbWFwcGluZ3NbYnJhbmNoXVsn
Y29tbWl0cyddLml0ZW1zKCk6CisgICAgICAgICAgICBmb3IgcmVtYWluaW5nX3BhcnRpdGlvbiwg
aWRlbnRpZmllciBpbiBzZWNvbmRfcGFydGl0aW9ucy5pdGVtcygpOgorICAgICAgICAgICAgICAg
IHNlbGYuX21hcHBpbmdzW2JyYW5jaF1bJ2lkZW50aWZpZXJzJ11baWRlbnRpZmllcl0gPSB7ICdo
YXNoJzogZmlyc3RfaGFzaF9wYXJ0aXRpb24gKyByZW1haW5pbmdfcGFydGl0aW9ufQorICAgICAg
ICBmb3IgcmV2aXNpb24sIGlkZW50aWZpZXIgaW4gc2VsZi5fbWFwcGluZ3NbYnJhbmNoXVsncmV2
aXNpb25zJ10uaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGYuX21hcHBpbmdzW2JyYW5jaF1bJ2lk
ZW50aWZpZXJzJ11baWRlbnRpZmllcl1bJ3JldmlzaW9uJ10gPSByZXZpc2lvbgorCisgICAgZGVm
IGNhbm9uaWNhbGl6ZV9icmFuY2hfaWRlbnRpZmllcihzZWxmLCBpZGVudGlmaWVyKToKKyAgICAg
ICAgaWYgbm90IGlkZW50aWZpZXIgb3IgaWRlbnRpZmllci5lbmRzd2l0aChzZWxmLnJlcG8uZGVm
YXVsdF9icmFuY2gpOgorICAgICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXIKKworICAgICAgICBi
cmFuY2hfcG9pbnRfaWRlbnRpZmllciwgYnJhbmNoID0gaWRlbnRpZmllci5zcGxpdCgnQCcpCisg
ICAgICAgIGJyYW5jaF9wb2ludF9oYXNoID0gc2VsZi5pZGVudGlmaWVyX3RvX2hhc2goJzBAe30n
LmZvcm1hdChicmFuY2gpLCBicmFuY2g9YnJhbmNoKQorICAgICAgICBpbnRlcnNlY3Rpb25faWRl
bnRpZmllciA9IHNlbGYuaGFzaF90b19pZGVudGlmaWVyKGJyYW5jaF9wb2ludF9oYXNoLCBicmFu
Y2g9c2VsZi5yZXBvLmRlZmF1bHRfYnJhbmNoKQorICAgICAgICBfLCBpbnRlcnNlY3Rpb25faWRl
bnRpZmllciwgXyA9IENvbW1pdC5fcGFyc2VfaWRlbnRpZmllcihpbnRlcnNlY3Rpb25faWRlbnRp
ZmllcikKKyAgICAgICAgYXNzZXJ0IGludGVyc2VjdGlvbl9pZGVudGlmaWVyLCAiRXJyb3I6IFNv
bWVob3cgaW50ZXJzZWN0aW9uIHdpdGgge30gY291bGQgbm90IGJlIGRldGVybWluZWQgZm9yIHt9
Ii5mb3JtYXQoc2VsZi5yZXBvLmRlZmF1bHRfYnJhbmNoLCBpZGVudGlmaWVyKQorICAgICAgICBy
ZXR1cm4gJ3t9Lnt9QHt9Jy5mb3JtYXQoaW50ZXJzZWN0aW9uX2lkZW50aWZpZXIsIGJyYW5jaF9w
b2ludF9pZGVudGlmaWVyLCBicmFuY2gpCisKKyAgICBkZWYgZm9ybWF0X2lkZW50aWZpZXIoc2Vs
ZiwgaWRlbnRpZmllciwgYnJhbmNoKToKKyAgICAgICAgcmV0dXJuICd7fUB7fScuZm9ybWF0KGlk
ZW50aWZpZXIsIGJyYW5jaCkKKworICAgIGRlZiBmb3JtYXRfaGFzaChzZWxmLCBfaGFzaCwgYnJh
bmNoKToKKyAgICAgICAgcmV0dXJuIF9oYXNoCisKKyAgICBkZWYgZm9ybWF0X3JldmlzaW9uKHNl
bGYsIHJldmlzaW9uLCBicmFuY2gpOgorICAgICAgICByZXR1cm4gJ3J7fScuZm9ybWF0KHJldmlz
aW9uKQorCisgICAgZGVmIGhhc2hfdG9faWRlbnRpZmllcihzZWxmLCBfaGFzaCwgYnJhbmNoPU5v
bmUpOgorICAgICAgICBpZiBsZW4oX2hhc2gpIDwgc2VsZi5IQVNIX1BBUlRJVElPTl9TSVpFOgor
ICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBnZXRfcmVzdWx0X2Z1bmMgPSBsYW1i
ZGEgbWFwcGluZywgYnJhbmNoLCBfaGFzaDogc2VsZi5nZXRfaGFzaF9tYXBwaW5nKGJyYW5jaCwg
X2hhc2gpCisgICAgICAgIGlkZW50aWZpZXIgPSBzZWxmLl90cmFuc2xhdGUoX2hhc2gsIHNlbGYu
bG9hZF9jb21taXRzX2FuZF9yZXZpc2lvbnNfY2FjaGUsIGdldF9yZXN1bHRfZnVuYywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZvcm1hdF9pZGVudGlmaWVyLCBicmFuY2g9
YnJhbmNoKQorICAgICAgICByZXR1cm4gc2VsZi5jYW5vbmljYWxpemVfYnJhbmNoX2lkZW50aWZp
ZXIoaWRlbnRpZmllcikKKworICAgIGRlZiBoYXNoX3RvX3JldmlzaW9uKHNlbGYsIF9oYXNoLCBi
cmFuY2g9Tm9uZSk6CisgICAgICAgIGlkZW50aWZpZXIgPSBzZWxmLmhhc2hfdG9faWRlbnRpZmll
cihfaGFzaCkKKyAgICAgICAgaWYgbm90IGlkZW50aWZpZXI6CisgICAgICAgICAgICByZXR1cm4g
Tm9uZQorCisgICAgICAgIHJldHVybiBzZWxmLmlkZW50aWZpZXJfdG9fcmV2aXNpb24oaWRlbnRp
ZmllcikKKworICAgIGRlZiByZXZpc2lvbl90b19pZGVudGlmaWVyKHNlbGYsIHJldmlzaW9uLCBi
cmFuY2g9Tm9uZSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldmlzaW9uID0gaW50KHN0
cihyZXZpc2lvbikubHN0cmlwKCdyJykpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAg
ICAgICAgICAgc2VsZi5yZXBvLmxvZygnRXJyb3I6IEludmFsaWQgcmV2aXNpb24ge30gcGFzc2Vk
IHRvIHJldmlzaW9uX3RvX2lkZW50aWZpZXIuLi4nLmZvcm1hdChyZXZpc2lvbikpCisgICAgICAg
ICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIGdldF9yZXN1bHRfZnVuYyA9IGxhbWJkYSBtYXBw
aW5nLCBicmFuY2gsIHJldmlzaW9uOiBtYXBwaW5nW2JyYW5jaF1bJ3JldmlzaW9ucyddLmdldChy
ZXZpc2lvbikKKyAgICAgICAgaWRlbnRpZmllciA9IHNlbGYuX3RyYW5zbGF0ZShzdHIocmV2aXNp
b24pLCBzZWxmLmxvYWRfY29tbWl0c19hbmRfcmV2aXNpb25zX2NhY2hlLCBnZXRfcmVzdWx0X2Z1
bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZvcm1hdF9pZGVudGlm
aWVyLCBicmFuY2g9YnJhbmNoKQorICAgICAgICByZXR1cm4gc2VsZi5jYW5vbmljYWxpemVfYnJh
bmNoX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKworICAgIGRlZiByZXZpc2lvbl90b19oYXNoKHNl
bGYsIHJldmlzaW9uLCBicmFuY2g9Tm9uZSk6CisgICAgICAgIGlkZW50aWZpZXIgPSBzZWxmLnJl
dmlzaW9uX3RvX2lkZW50aWZpZXIocmV2aXNpb24pCisgICAgICAgIGlmIG5vdCBpZGVudGlmaWVy
OgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIHNlbGYuaWRlbnRpZmll
cl90b19oYXNoKGlkZW50aWZpZXIpCisKKyAgICBkZWYgaWRlbnRpZmllcl90b19oYXNoKHNlbGYs
IGlkZW50aWZpZXIsIGJyYW5jaD1Ob25lKToKKyAgICAgICAgcGFyc2VkX2JyYW5jaF9wb2ludCwg
aWRlbnRpZmllciwgcGFyc2VkX2JyYW5jaCA9IENvbW1pdC5fcGFyc2VfaWRlbnRpZmllcihpZGVu
dGlmaWVyKQorICAgICAgICBpZiBpZGVudGlmaWVyIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1
cm4gTm9uZQorCisgICAgICAgIGdldF9yZXN1bHRfZnVuYyA9IGxhbWJkYSBtYXBwaW5nLCBicmFu
Y2gsIGlkZW50aWZpZXI6IG1hcHBpbmdbYnJhbmNoXVsnaWRlbnRpZmllcnMnXS5nZXQoaWRlbnRp
Zmllciwge30pLmdldCgnaGFzaCcpCisgICAgICAgIF9oYXNoID0gc2VsZi5fdHJhbnNsYXRlKGlk
ZW50aWZpZXIsIHNlbGYubG9hZF9pZGVudGlmaWVyX2NhY2hlLCBnZXRfcmVzdWx0X2Z1bmMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZm9ybWF0X2hhc2gsIGJyYW5jaD1w
YXJzZWRfYnJhbmNoIG9yIGJyYW5jaCkKKyAgICAgICAgcmV0dXJuIF9oYXNoCisKKyAgICBkZWYg
aWRlbnRpZmllcl90b19yZXZpc2lvbihzZWxmLCBpZGVudGlmaWVyLCBicmFuY2g9Tm9uZSk6Cisg
ICAgICAgIHBhcnNlZF9icmFuY2hfcG9pbnQsIGlkZW50aWZpZXIsIHBhcnNlZF9icmFuY2ggPSBD
b21taXQuX3BhcnNlX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAgICAgaWYgbm90IGlkZW50
aWZpZXI6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIGdldF9yZXN1bHRfZnVu
YyA9IGxhbWJkYSBtYXBwaW5nLCBicmFuY2gsIGlkZW50aWZpZXI6IG1hcHBpbmdbYnJhbmNoXVsn
aWRlbnRpZmllcnMnXS5nZXQoaWRlbnRpZmllciwge30pLmdldCgncmV2aXNpb24nKQorICAgICAg
ICByZXZpc2lvbiA9IHNlbGYuX3RyYW5zbGF0ZShpZGVudGlmaWVyLCBzZWxmLmxvYWRfaWRlbnRp
Zmllcl9jYWNoZSwgZ2V0X3Jlc3VsdF9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLmZvcm1hdF9yZXZpc2lvbiwgYnJhbmNoPXBhcnNlZF9icmFuY2ggb3IgYnJhbmNo
KQorICAgICAgICByZXR1cm4gcmV2aXNpb24KKworICAgIGRlZiBfdHJhbnNsYXRlKHNlbGYsIGFy
ZywgbG9hZF9jYWNoZV9mdW5jLCBnZXRfcmVzdWx0X2Z1bmMsIGZvcm1hdF9yZXN1bHRfZnVuYywg
YnJhbmNoPU5vbmUpOgorICAgICAgICBwcmVmZXJyZWRfYnJhbmNoZXMgPSBbYnJhbmNoXSBpZiBi
cmFuY2ggZWxzZSBbc2VsZi5yZXBvLmRlZmF1bHRfYnJhbmNoLCBzZWxmLnJlcG8ubWVtb2l6ZWRf
Y3VycmVudF9icmFuY2hdCisgICAgICAgIGZvciBfYnJhbmNoIGluIHByZWZlcnJlZF9icmFuY2hl
czoKKyAgICAgICAgICAgIGlmIG5vdCBfYnJhbmNoOgorICAgICAgICAgICAgICAgIGNvbnRpbnVl
CisKKyAgICAgICAgICAgIGxvYWRfY2FjaGVfZnVuYyhfYnJhbmNoKQorICAgICAgICAgICAgcmVz
dWx0ID0gZ2V0X3Jlc3VsdF9mdW5jKHNlbGYuX21hcHBpbmdzLCBfYnJhbmNoLCBhcmcpCisgICAg
ICAgICAgICBpZiByZXN1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdF9yZXN1bHRf
ZnVuYyhyZXN1bHQsIF9icmFuY2gpCisKKyAgICAgICAgZm9yIF9icmFuY2ggaW4gc2VsZi5yZXBv
Lm1lbW9pemVkX2xvY2FsX2JyYW5jaGVzKCk6CisgICAgICAgICAgICBpZiBub3QgX2JyYW5jaCBv
ciBfYnJhbmNoIGluIHByZWZlcnJlZF9icmFuY2hlcyBvciBfYnJhbmNoID09ICdtYXN0ZXInOgor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGxvYWRfY2FjaGVfZnVuYyhf
YnJhbmNoKQorICAgICAgICAgICAgcmVzdWx0ID0gZ2V0X3Jlc3VsdF9mdW5jKHNlbGYuX21hcHBp
bmdzLCBfYnJhbmNoLCBhcmcpCisgICAgICAgICAgICBpZiByZXN1bHQ6CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZvcm1hdF9yZXN1bHRfZnVuYyhyZXN1bHQsIF9icmFuY2gpCisKKyAgICAgICAg
cmV0dXJuIE5vbmUKKworCiBjbGFzcyBHaXQoU2NtKToKICAgICBHSVRfQ09NTUlUID0gcmUuY29t
cGlsZShyJ2NvbW1pdCAoP1A8aGFzaD5bMC05YS1mXSspJykKIApAQCAtNTMsNiArMzY1LDggQEAg
Y2xhc3MgR2l0KFNjbSk6CiAgICAgICAgIGlmIG5vdCBzZWxmLnJvb3RfcGF0aDoKICAgICAgICAg
ICAgIHJhaXNlIE9TRXJyb3IoJ1Byb3ZpZGVkIHBhdGgge30gaXMgbm90IGEgZ2l0IHJlcG9zaXRv
cnknLmZvcm1hdChwYXRoKSkKIAorICAgICAgICBzZWxmLmNhY2hlID0gR2l0Q2FjaGUoc2VsZikK
KwogICAgIEBkZWNvcmF0b3JzLk1lbW9pemUoY2FjaGVkPUZhbHNlKQogICAgIGRlZiBpbmZvKHNl
bGYpOgogICAgICAgICBpZiBub3Qgc2VsZi5pc19zdm46CkBAIC05NCw4ICs0MDgsOSBAQCBjbGFz
cyBHaXQoU2NtKToKICAgICAgICAgcmV0dXJuIHJlc3VsdC5zdGRvdXQucnN0cmlwKCkKIAogICAg
IEBwcm9wZXJ0eQorICAgIEBkZWNvcmF0b3JzLk1lbW9pemUoKQogICAgIGRlZiBkZWZhdWx0X2Jy
YW5jaChzZWxmKToKLSAgICAgICAgcmVzdWx0ID0gcnVuKFtzZWxmLmV4ZWN1dGFibGUoKSwgJ3Jl
di1wYXJzZScsICctLWFiYnJldi1yZWYnLCAnb3JpZ2luL0hFQUQnXSwgY3dkPXNlbGYucGF0aCwg
Y2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgZW5jb2Rpbmc9J3V0Zi04JykKKyAgICAgICAgcmVzdWx0ID0g
cnVuKFtzZWxmLmV4ZWN1dGFibGUoKSwgJ3Jldi1wYXJzZScsICctLWFiYnJldi1yZWYnLCAnb3Jp
Z2luL0hFQUQnXSwgY3dkPXNlbGYucm9vdF9wYXRoLCBjYXB0dXJlX291dHB1dD1UcnVlLCBlbmNv
ZGluZz0ndXRmLTgnKQogICAgICAgICBpZiByZXN1bHQucmV0dXJuY29kZToKICAgICAgICAgICAg
IGNhbmRpZGF0ZXMgPSBzZWxmLmJyYW5jaGVzCiAgICAgICAgICAgICBpZiAnbWFzdGVyJyBpbiBj
YW5kaWRhdGVzOgpAQCAtMTA1LDYgKzQyMCwyNyBAQCBjbGFzcyBHaXQoU2NtKToKICAgICAgICAg
ICAgIHJldHVybiBOb25lCiAgICAgICAgIHJldHVybiAnLycuam9pbihyZXN1bHQuc3Rkb3V0LnJz
dHJpcCgpLnNwbGl0KCcvJylbMTpdKQogCisgICAgQHByb3BlcnR5CisgICAgQGRlY29yYXRvcnMu
TWVtb2l6ZSgpCisgICAgZGVmIG1lbW9pemVkX2N1cnJlbnRfYnJhbmNoKHNlbGYpOgorICAgICAg
ICBicmFuY2ggPSBydW4oW3NlbGYuZXhlY3V0YWJsZSgpLCAnYnJhbmNoJywgJy0tc2hvdy1jdXJy
ZW50J10sIGN3ZD1zZWxmLnJvb3RfcGF0aCwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgZW5jb2Rpbmc9
J3V0Zi04JykKKyAgICAgICAgaWYgbm90IGJyYW5jaC5yZXR1cm5jb2RlOgorICAgICAgICAgICAg
cmV0dXJuIGJyYW5jaC5zdGRvdXQuc3RyaXAoKQorCisgICAgICAgIHJldHVybiBOb25lICAjIFBy
b2JhYmx5IGRldGF0Y2hlZCBoZWFkLgorCisgICAgQGRlY29yYXRvcnMuTWVtb2l6ZSgpCisgICAg
ZGVmIG1lbW9pemVkX2xvY2FsX2JyYW5jaGVzKHNlbGYpOgorICAgICAgICBicmFuY2hlcyA9IFtd
CisgICAgICAgIGZvciBsaW5lIGluIHJ1bihbc2VsZi5leGVjdXRhYmxlKCksICdicmFuY2gnXSwg
Y3dkPXNlbGYucm9vdF9wYXRoLCBjYXB0dXJlX291dHB1dD1UcnVlLCBlbmNvZGluZz0ndXRmLTgn
KS5zdGRvdXQuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgaWYgbm90IGxpbmU6CisgICAgICAg
ICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgIyBOb3JtYWxpemUgY3VycmVudCBicmFu
Y2gKKyAgICAgICAgICAgIGJyYW5jaCA9IGxpbmUucmVwbGFjZSgnKiAnLCAnJykuc3RyaXAoKQor
ICAgICAgICAgICAgYnJhbmNoZXMuYXBwZW5kKGJyYW5jaCkKKyAgICAgICAgcmV0dXJuIGJyYW5j
aGVzCisKICAgICBAcHJvcGVydHkKICAgICBkZWYgYnJhbmNoKHNlbGYpOgogICAgICAgICBzdGF0
dXMgPSBydW4oW3NlbGYuZXhlY3V0YWJsZSgpLCAnc3RhdHVzJ10sIGN3ZD1zZWxmLnJvb3RfcGF0
aCwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgZW5jb2Rpbmc9J3V0Zi04JykKQEAgLTE1NywxNSArNDkz
LDE2IEBAIGNsYXNzIEdpdChTY20pOgogICAgICAgICByZXR1cm4gc29ydGVkKHNldChbJy8nLmpv
aW4oYnJhbmNoLnNwbGl0KCcvJylbMjpdKSBpZiBicmFuY2guc3RhcnRzd2l0aCgncmVtb3Rlcy9v
cmlnaW4vJykgZWxzZSBicmFuY2ggZm9yIGJyYW5jaCBpbiByZXN1bHRdKSkKIAogICAgIGRlZiBj
b21taXQoc2VsZiwgaGFzaD1Ob25lLCByZXZpc2lvbj1Ob25lLCBpZGVudGlmaWVyPU5vbmUsIGJy
YW5jaD1Ob25lLCB0YWc9Tm9uZSwgaW5jbHVkZV9sb2c9VHJ1ZSwgaW5jbHVkZV9pZGVudGlmaWVy
PVRydWUpOgotICAgICAgICAjIE9ubHkgZ2l0LXN2biBjaGVja291dHMgY2FuIGNvbnZlcnQgcmV2
aXNpb25zIHRvIGZ1bGx5IHF1YWxpZmllZCBjb21taXRzCi0gICAgICAgIGlmIHJldmlzaW9uIGFu
ZCBub3Qgc2VsZi5pc19zdm46Ci0gICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignVGhp
cyBnaXQgY2hlY2tvdXQgZG9lcyBub3Qgc3VwcG9ydCBTVk4gcmV2aXNpb25zJykKLQotICAgICAg
ICAjIERldGVybWluZSB0aGUgaGFzaCBmb3IgYSBwcm92aWRlZCBTdWJ2ZXJzaW9uIHJldmlzaW9u
Ci0gICAgICAgIGVsaWYgcmV2aXNpb246CisgICAgICAgICMgT25seSBnaXQtc3ZuIGNoZWNrb3V0
cyBjYW4gY29udmVydCByZXZpc2lvbnMgdG8gZnVsbHkgcXVhbGlmaWVkIGNvbW1pdHMsIHVubGVz
cyB3ZSBoYXBwZW4gdG8gaGF2ZSBhIFNWTiBjYWNoZSBidWlsdAorICAgICAgICBpZiByZXZpc2lv
bjoKICAgICAgICAgICAgIGlmIGhhc2g6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJv
cignQ2Fubm90IGRlZmluZSBib3RoIGhhc2ggYW5kIHJldmlzaW9uJykKKyAgICAgICAgICAgIGhh
c2ggPSBzZWxmLmNhY2hlLnJldmlzaW9uX3RvX2hhc2gocmV2aXNpb24pCisgICAgICAgIGlmIHJl
dmlzaW9uIGFuZCBub3QgaGFzaCBhbmQgbm90IHNlbGYuaXNfc3ZuOgorICAgICAgICAgICAgcmFp
c2Ugc2VsZi5FeGNlcHRpb24oJ1RoaXMgZ2l0IGNoZWNrb3V0IGRvZXMgbm90IHN1cHBvcnQgU1ZO
IHJldmlzaW9ucycpCiAKKyAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGhhc2ggZm9yIGEgcHJvdmlk
ZWQgU3VidmVyc2lvbiByZXZpc2lvbgorICAgICAgICBlbGlmIHJldmlzaW9uIGFuZCBub3QgaGFz
aDoKICAgICAgICAgICAgIHJldmlzaW9uID0gQ29tbWl0Ll9wYXJzZV9yZXZpc2lvbihyZXZpc2lv
biwgZG9fYXNzZXJ0PVRydWUpCiAgICAgICAgICAgICByZXZpc2lvbl9sb2cgPSBydW4oCiAgICAg
ICAgICAgICAgICAgW3NlbGYuZXhlY3V0YWJsZSgpLCAnc3ZuJywgJ2ZpbmQtcmV2JywgJ3J7fScu
Zm9ybWF0KHJldmlzaW9uKV0sCkBAIC0yMDEsMzIgKzUzOCw0NSBAQCBjbGFzcyBHaXQoU2NtKToK
ICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgIGJyYW5jaCA9IHBhcnNlZF9i
cmFuY2gKIAotICAgICAgICAgICAgYmFzZWxpbmUgPSBicmFuY2ggb3IgJ0hFQUQnCi0gICAgICAg
ICAgICBpc19kZWZhdWx0ID0gYmFzZWxpbmUgPT0gZGVmYXVsdF9icmFuY2gKLSAgICAgICAgICAg
IGlmIGJhc2VsaW5lID09ICdIRUFEJzoKLSAgICAgICAgICAgICAgICBpc19kZWZhdWx0ID0gZGVm
YXVsdF9icmFuY2ggaW4gc2VsZi5fYnJhbmNoZXNfZm9yKGJhc2VsaW5lKQotCi0gICAgICAgICAg
ICBpZiBpc19kZWZhdWx0IGFuZCBwYXJzZWRfYnJhbmNoX3BvaW50OgotICAgICAgICAgICAgICAg
IHJhaXNlIHNlbGYuRXhjZXB0aW9uKCdDYW5ub3QgcHJvdmlkZSBhIGJyYW5jaCBwb2ludCBmb3Ig
YSBjb21taXQgb24gdGhlIGRlZmF1bHQgYnJhbmNoJykKLQotICAgICAgICAgICAgYmFzZV9jb3Vu
dCA9IHNlbGYuX2NvbW1pdF9jb3VudChiYXNlbGluZSBpZiBpc19kZWZhdWx0IGVsc2UgJ3t9Li57
fScuZm9ybWF0KGRlZmF1bHRfYnJhbmNoLCBiYXNlbGluZSkpCi0KLSAgICAgICAgICAgIGlmIGlk
ZW50aWZpZXIgPiBiYXNlX2NvdW50OgotICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0
aW9uKCdJZGVudGlmaWVyIHt9IGNhbm5vdCBiZSBmb3VuZCBvbiB0aGUgc3BlY2lmaWVkIGJyYW5j
aCBpbiB0aGUgY3VycmVudCBjaGVja291dCcuZm9ybWF0KGlkZW50aWZpZXIpKQotICAgICAgICAg
ICAgbG9nID0gcnVuKAotICAgICAgICAgICAgICAgIFtzZWxmLmV4ZWN1dGFibGUoKSwgJ2xvZycs
ICd7fX57fScuZm9ybWF0KGJyYW5jaCBvciAnSEVBRCcsIGJhc2VfY291bnQgLSBpZGVudGlmaWVy
KV0gKyBsb2dfZm9ybWF0LAotICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnJvb3RfcGF0aCwKLSAg
ICAgICAgICAgICAgICBjYXB0dXJlX291dHB1dD1UcnVlLAotICAgICAgICAgICAgICAgIGVuY29k
aW5nPSd1dGYtOCcsCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBpZiBsb2cucmV0dXJuY29k
ZToKLSAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbigiRmFpbGVkIHRvIHJldHJp
ZXZlIGNvbW1pdCBpbmZvcm1hdGlvbiBmb3IgJ2l7fUB7fSciLmZvcm1hdChpZGVudGlmaWVyLCBi
cmFuY2ggb3IgJ0hFQUQnKSkKLQotICAgICAgICAgICAgIyBOZWdhdGl2ZSBpZGVudGlmaWVycyBh
cmUgYWN0dWFsbHkgY29tbWl0cyBvbiB0aGUgZGVmYXVsdCBicmFuY2gsIHdlIHdpbGwgbmVlZCB0
byByZS1jb21wdXRlIHRoZSBpZGVudGlmaWVyCi0gICAgICAgICAgICBpZiBpZGVudGlmaWVyIDwg
MCBhbmQgaXNfZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbign
SWxsZWdhbCBuZWdhdGl2ZSBpZGVudGlmaWVyIG9uIHRoZSBkZWZhdWx0IGJyYW5jaCcpCi0gICAg
ICAgICAgICBpZiBpZGVudGlmaWVyIDwgMDoKLSAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0g
Tm9uZQorICAgICAgICAgICAgaGFzaCA9IHNlbGYuY2FjaGUuaWRlbnRpZmllcl90b19oYXNoKCd7
fUB7fScuZm9ybWF0KGlkZW50aWZpZXIsIHBhcnNlZF9icmFuY2gpKQorICAgICAgICAgICAgaWYg
bm90IGhhc2g6CisgICAgICAgICAgICAgICAgYmFzZWxpbmUgPSBicmFuY2ggb3IgJ0hFQUQnCisg
ICAgICAgICAgICAgICAgaXNfZGVmYXVsdCA9IGJhc2VsaW5lID09IGRlZmF1bHRfYnJhbmNoCisg
ICAgICAgICAgICAgICAgaWYgYmFzZWxpbmUgPT0gJ0hFQUQnOgorICAgICAgICAgICAgICAgICAg
ICBpc19kZWZhdWx0ID0gZGVmYXVsdF9icmFuY2ggaW4gc2VsZi5fYnJhbmNoZXNfZm9yKGJhc2Vs
aW5lKQorCisgICAgICAgICAgICAgICAgaWYgaXNfZGVmYXVsdCBhbmQgcGFyc2VkX2JyYW5jaF9w
b2ludDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oJ0Nhbm5vdCBw
cm92aWRlIGEgYnJhbmNoIHBvaW50IGZvciBhIGNvbW1pdCBvbiB0aGUgZGVmYXVsdCBicmFuY2gn
KQorCisgICAgICAgICAgICAgICAgYmFzZV9jb3VudCA9IHNlbGYuX2NvbW1pdF9jb3VudChiYXNl
bGluZSBpZiBpc19kZWZhdWx0IGVsc2UgJ3t9Li57fScuZm9ybWF0KGRlZmF1bHRfYnJhbmNoLCBi
YXNlbGluZSkpCisKKyAgICAgICAgICAgICAgICBpZiBpZGVudGlmaWVyID4gYmFzZV9jb3VudDoK
KyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oJ0lkZW50aWZpZXIge30g
Y2Fubm90IGJlIGZvdW5kIG9uIHRoZSBzcGVjaWZpZWQgYnJhbmNoIGluIHRoZSBjdXJyZW50IGNo
ZWNrb3V0Jy5mb3JtYXQoaWRlbnRpZmllcikpCisgICAgICAgICAgICAgICAgbG9nID0gcnVuKAor
ICAgICAgICAgICAgICAgICAgICBbc2VsZi5leGVjdXRhYmxlKCksICdsb2cnLCAne31+e30nLmZv
cm1hdChicmFuY2ggb3IgJ0hFQUQnLCBiYXNlX2NvdW50IC0gaWRlbnRpZmllcildICsgbG9nX2Zv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgY3dkPXNlbGYucm9vdF9wYXRoLAorICAgICAgICAg
ICAgICAgICAgICBjYXB0dXJlX291dHB1dD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBlbmNv
ZGluZz0ndXRmLTgnLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBpZiBsb2cu
cmV0dXJuY29kZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oIkZh
aWxlZCB0byByZXRyaWV2ZSBjb21taXQgaW5mb3JtYXRpb24gZm9yICdpe31Ae30nIi5mb3JtYXQo
aWRlbnRpZmllciwgYnJhbmNoIG9yICdIRUFEJykpCisKKyAgICAgICAgICAgICAgICAjIE5lZ2F0
aXZlIGlkZW50aWZpZXJzIGFyZSBhY3R1YWxseSBjb21taXRzIG9uIHRoZSBkZWZhdWx0IGJyYW5j
aCwgd2Ugd2lsbCBuZWVkIHRvIHJlLWNvbXB1dGUgdGhlIGlkZW50aWZpZXIKKyAgICAgICAgICAg
ICAgICBpZiBpZGVudGlmaWVyIDwgMCBhbmQgaXNfZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAg
ICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oJ0lsbGVnYWwgbmVnYXRpdmUgaWRlbnRpZmllciBvbiB0
aGUgZGVmYXVsdCBicmFuY2gnKQorICAgICAgICAgICAgICAgIGlmIGlkZW50aWZpZXIgPCAwOgor
ICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gTm9uZQorCisgICAgICAgICAgICAjIFRo
ZSBjYWNoZSBjb252ZXJ0ZWQgdGhlIGlkZW50aWZpZXIgdG8gYSBoYXNoCisgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgIGxvZyA9IHJ1bigKKyAgICAgICAgICAgICAgICAgICAgW3Nl
bGYuZXhlY3V0YWJsZSgpLCAnbG9nJywgaGFzaF0gKyBsb2dfZm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICBjd2Q9c2VsZi5yb290X3BhdGgsCisgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVf
b3V0cHV0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPSd1dGYtOCcsCisgICAg
ICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGlmIGxvZy5yZXR1cm5jb2RlOgorICAgICAg
ICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbigiRmFpbGVkIHRvIHJldHJpZXZlIGNv
bW1pdCBpbmZvcm1hdGlvbiBmb3IgJ3t9JyIuZm9ybWF0KGhhc2gpKQogCiAgICAgICAgICMgRGV0
ZXJtaW5lIHRoZSBgZ2l0IGxvZ2Agb3V0cHV0IGZvciBhIGdpdmVuIGJyYW5jaCBvciB0YWcKICAg
ICAgICAgZWxpZiBicmFuY2ggb3IgdGFnOgpAQCAtMjUyLDE1ICs2MDIsMjMgQEAgY2xhc3MgR2l0
KFNjbSk6CiAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignSW52YWxpZCBjb21taXQg
aGFzaCBpbiBnaXQgbG9nJykKICAgICAgICAgaGFzaCA9IG1hdGNoLmdyb3VwKCdoYXNoJykKIAor
ICAgICAgICBicmFuY2hfcG9pbnQgPSBOb25lCisgICAgICAgIGlmIG5vdCBpZGVudGlmaWVyIGFu
ZCBpbmNsdWRlX2lkZW50aWZpZXI6CisgICAgICAgICAgICBjYWNoZWRfaWRlbnRpZmllciA9IHNl
bGYuY2FjaGUuaGFzaF90b19pZGVudGlmaWVyKGhhc2gpCisgICAgICAgICAgICBpZiBjYWNoZWRf
aWRlbnRpZmllcjoKKyAgICAgICAgICAgICAgICBicmFuY2hfcG9pbnQsIGlkZW50aWZpZXIsIGJy
YW5jaCA9IENvbW1pdC5fcGFyc2VfaWRlbnRpZmllcihjYWNoZWRfaWRlbnRpZmllcikKKwogICAg
ICAgICAjIEEgY29tbWl0IGlzIG9mdGVuIG9uIG11bHRpcGxlIGJyYW5jaGVzLCB0aGUgY2Fub25p
Y2FsIGJyYW5jaCBpcyB0aGUgb25lIHdpdGggdGhlIGhpZ2hlc3QgcHJpb3JpdHkKLSAgICAgICAg
YnJhbmNoID0gc2VsZi5wcmlvcml0aXplX2JyYW5jaGVzKHNlbGYuX2JyYW5jaGVzX2ZvcihoYXNo
KSkKKyAgICAgICAgaWYgYnJhbmNoICE9IGRlZmF1bHRfYnJhbmNoOgorICAgICAgICAgICAgYnJh
bmNoID0gc2VsZi5wcmlvcml0aXplX2JyYW5jaGVzKHNlbGYuX2JyYW5jaGVzX2ZvcihoYXNoKSkK
IAogICAgICAgICAjIENvbXB1dGUgdGhlIGlkZW50aWZpZXIgaWYgdGhlIGZ1bmN0aW9uIGRpZCBu
b3QgcmVjZWl2ZSBvbmUgYW5kIHdlIHdlcmUgYXNrZWQgdG8KICAgICAgICAgaWYgbm90IGlkZW50
aWZpZXIgYW5kIGluY2x1ZGVfaWRlbnRpZmllcjoKICAgICAgICAgICAgIGlkZW50aWZpZXIgPSBz
ZWxmLl9jb21taXRfY291bnQoaGFzaCBpZiBicmFuY2ggPT0gZGVmYXVsdF9icmFuY2ggZWxzZSAn
e30uLnt9Jy5mb3JtYXQoZGVmYXVsdF9icmFuY2gsIGhhc2gpKQogCiAgICAgICAgICMgT25seSBj
b21wdXRlIHRoZSBicmFuY2ggcG9pbnQgd2UncmUgb24gc29tZXRoaW5nIG90aGVyIHRoYW4gdGhl
IGRlZmF1bHQgYnJhbmNoCi0gICAgICAgIGJyYW5jaF9wb2ludCA9IE5vbmUgaWYgbm90IGluY2x1
ZGVfaWRlbnRpZmllciBvciBicmFuY2ggPT0gZGVmYXVsdF9icmFuY2ggZWxzZSBzZWxmLl9jb21t
aXRfY291bnQoaGFzaCkgLSBpZGVudGlmaWVyCisgICAgICAgIGlmIG5vdCBicmFuY2hfcG9pbnQg
YW5kIGluY2x1ZGVfaWRlbnRpZmllciBhbmQgYnJhbmNoICE9IGRlZmF1bHRfYnJhbmNoOgorICAg
ICAgICAgICAgYnJhbmNoX3BvaW50ID0gc2VsZi5fY29tbWl0X2NvdW50KGhhc2gpIC0gaWRlbnRp
ZmllcgogICAgICAgICBpZiBicmFuY2hfcG9pbnQgYW5kIHBhcnNlZF9icmFuY2hfcG9pbnQgYW5k
IGJyYW5jaF9wb2ludCAhPSBwYXJzZWRfYnJhbmNoX3BvaW50OgogICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcigiUHJvdmlkZWQgJ2JyYW5jaF9wb2ludCcgZG9lcyBub3QgbWF0Y2ggYnJhbmNo
IHBvaW50IG9mIHNwZWNpZmllZCBicmFuY2giKQogCkBAIC00ODAsMyArODM4LDcgQEAgY2xhc3Mg
R2l0KFNjbSk6CiAgICAgICAgIHJldHVybiBydW4oWwogICAgICAgICAgICAgc2VsZi5leGVjdXRh
YmxlKCksICdyZXNldCcsICdIRUFEJywgJy0taGFyZCcsCiAgICAgICAgIF0sIGN3ZD1zZWxmLnJv
b3RfcGF0aCkucmV0dXJuY29kZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHVwc3RyZWFtX3Jl
bW90ZShzZWxmKToKKyAgICAgICAgcmV0dXJuICdyZW1vdGVzL29yaWdpbicgICMgRklYTUU6IEZp
bmQgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMgKG1heWJlIHdlIHBhc3MgaW4gdGhpcyBhcmd1bWVu
dCk/CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJr
aXRzY21weS9tb2Nrcy9naXQtcmVwby5qc29uIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvZ2l0LXJlcG8uanNvbgppbmRleCA5ZGNmNzdkZDM0
OGQuLjgwMTEyOWRlNDJmNSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvZ2l0LXJlcG8uanNvbgorKysgYi9Ub29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9naXQtcmVwby5qc29u
CkBAIC0xNDYsNCArMTQ2LDQgQEAKICAgICAgICAgICAgICJyZXZpc2lvbiI6IDYKICAgICAgICAg
fQogICAgIF0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2Nh
bC9naXQucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21w
eS9tb2Nrcy9sb2NhbC9naXQucHkKaW5kZXggZGE5OGViYzI0MDc4Li45OGY5YzEyZDYyNzIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5
L21vY2tzL2xvY2FsL2dpdC5weQorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9naXQucHkKQEAgLTE5NCw2ICsxOTQsMjEgQEAg
bm90aGluZyB0byBjb21taXQsIHdvcmtpbmcgdHJlZSBjbGVhbgogICAgICAgICAgICAgICAgICAg
ICBzdGRvdXQ9J1xuJy5qb2luKHNvcnRlZChbJyogJyArIHNlbGYuYnJhbmNoXSArIGxpc3QoKHtk
ZWZhdWx0X2JyYW5jaH0gfCBzZXQoc2VsZi5jb21taXRzLmtleXMoKSkpIC0ge3NlbGYuYnJhbmNo
fSkpKSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG5yZW1vdGVzL29yaWdpbi9IRUFE
IC0+IG9yaWdpbi97fVxuJy5mb3JtYXQoZGVmYXVsdF9icmFuY2gpLAogICAgICAgICAgICAgICAg
ICksCisgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAorICAgICAgICAgICAg
ICAgIHNlbGYuZXhlY3V0YWJsZSwgJ2JyYW5jaCcsICctLXNob3ctY3VycmVudCcsCisgICAgICAg
ICAgICAgICAgY3dkPXNlbGYucGF0aCwKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRh
ICphcmdzLCAqKmt3YXJnczogbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24oCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybmNvZGU9MCwKKyAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PSd7fVxuJy5m
b3JtYXQoc2VsZi5icmFuY2gpIGlmIG5vdCBzZWxmLmRldGFjaGVkIGVsc2UgJycsCisgICAgICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBtb2Nrcy5TdWJwcm9jZXNz
LlJvdXRlKAorICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSwgJ2JyYW5jaCcsCisgICAg
ICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFt
YmRhICphcmdzLCAqKmt3YXJnczogbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24oCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybmNvZGU9MCwKKyAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PSdcbicu
am9pbihzb3J0ZWQoWycqICcgKyBzZWxmLmJyYW5jaF0gKyBsaXN0KCh7ZGVmYXVsdF9icmFuY2h9
IHwgc2V0KHNlbGYuY29tbWl0cy5rZXlzKCkpKSAtIHtzZWxmLmJyYW5jaH0pKSksCisgICAgICAg
ICAgICAgICAgKSwKICAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCiAgICAg
ICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLCAndGFnJywKICAgICAgICAgICAgICAgICBjd2Q9
c2VsZi5wYXRoLApAQCAtMjEzLDggKzIyOCwxNSBAQCBub3RoaW5nIHRvIGNvbW1pdCwgd29ya2lu
ZyB0cmVlIGNsZWFuCiAgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKICAgICAgICAgICAg
ICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogbW9ja3MuUHJvY2Vzc0NvbXBs
ZXRpb24oCiAgICAgICAgICAgICAgICAgICAgIHJldHVybmNvZGU9MCwKLSAgICAgICAgICAgICAg
ICAgICAgc3Rkb3V0PSd7fVxuJy5mb3JtYXQoc2VsZi5maW5kKGFyZ3NbMl0pLmhhc2gpLAotICAg
ICAgICAgICAgICAgICkgaWYgc2VsZi5maW5kKGFyZ3NbMl0pIGVsc2UgbW9ja3MuUHJvY2Vzc0Nv
bXBsZXRpb24ocmV0dXJuY29kZT0xMjgpCisgICAgICAgICAgICAgICAgICAgIHN0ZG91dD0ne31c
bicuZm9ybWF0KHNlbGYuZmluZChhcmdzWzJdLnNwbGl0KCcvJylbLTFdKS5oYXNoKSwKKyAgICAg
ICAgICAgICAgICApIGlmIHNlbGYuZmluZChhcmdzWzJdLnNwbGl0KCcvJylbLTFdKSBlbHNlIG1v
Y2tzLlByb2Nlc3NDb21wbGV0aW9uKHJldHVybmNvZGU9MTI4KQorICAgICAgICAgICAgKSwgbW9j
a3MuU3VicHJvY2Vzcy5Sb3V0ZSgKKyAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdt
ZXJnZS1iYXNlJywgcmUuY29tcGlsZSgnLisnKSwgcmUuY29tcGlsZSgnLisnKSwKKyAgICAgICAg
ICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAgICAgICAgIGdlbmVyYXRvcj1sYW1iZGEg
KmFyZ3MsICoqa3dhcmdzOiBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbigKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuY29kZT0wLAorICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9J3t9XG4nLmZv
cm1hdChzZWxmLmludGVyc2VjdGlvbihhcmdzWzNdKS5oYXNoKSwKKyAgICAgICAgICAgICAgICAp
IGlmIHNlbGYuaW50ZXJzZWN0aW9uKGFyZ3NbM10pIGVsc2UgbW9ja3MuUHJvY2Vzc0NvbXBsZXRp
b24ocmV0dXJuY29kZT0xMjgpCiAgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRl
KAogICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSwgJ2xvZycsIHJlLmNvbXBpbGUocicu
KycpLCAnLTEnLAogICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCkBAIC0yNDAsNiArMjYy
LDYzIEBAIG5vdGhpbmcgdG8gY29tbWl0LCB3b3JraW5nIHRyZWUgY2xlYW4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAg
ICAgICAgICkgaWYgc2VsZi5maW5kKGFyZ3NbMl0pIGVsc2UgbW9ja3MuUHJvY2Vzc0NvbXBsZXRp
b24ocmV0dXJuY29kZT0xMjgpLAorICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0
ZSgKKyAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdsb2cnLCByZS5jb21waWxlKHIn
LisnKSwKKyAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAgICAgICAgIGdl
bmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbigK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuY29kZT0wLAorICAgICAgICAgICAgICAgICAgICBz
dGRvdXQ9J1xuJy5qb2luKFsKKyAgICAgICAgICAgICAgICAgICAgICAgICdjb21taXQge2hhc2h9
XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAnQXV0aG9yOiAgICAge2F1dGhvcn0gPHtlbWFp
bH0+XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAnRGF0ZTogICAgICAge2RhdGV9XG4nCisg
ICAgICAgICAgICAgICAgICAgICAgICAnXG57bG9nfScuZm9ybWF0KAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGhhc2g9Y29tbWl0Lmhhc2gsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXV0aG9yPWNvbW1pdC5hdXRob3IubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbWFpbD1jb21taXQuYXV0aG9yLmVtYWlsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRhdGU9ZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcChjb21taXQudGltZXN0YW1wICsgdGltZS50
aW1lem9uZSkuc3RyZnRpbWUoJyVhICViICVkICVIOiVNOiVTICVZICswMDAwJyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbG9nPSdcbicuam9pbihbCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICgnICAgICcgKyBsaW5lKSBpZiBsaW5lIGVsc2UgJycgZm9yIGxpbmUgaW4g
Y29tbWl0Lm1lc3NhZ2Uuc3BsaXRsaW5lcygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XSArIChbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgZ2l0LXN2bi1pZDog
aHR0cHM6Ly9zdm4ue30vcmVwb3NpdG9yeS97fS90cnVua0B7fSAyNjhmNDVjYy1jZDA5LTA0MTAt
YWIzYy1kNTI2OTFiNGRiZmMnLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYucmVtb3RlLnNwbGl0KCdAJylbLTFdLnNwbGl0KCc6JylbMF0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0LnJldmlzaW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICldIGlmIGdpdF9zdm4gZWxzZSBbXSksCisgICAgICAgICAg
ICAgICAgICAgICAgICApKSBmb3IgY29tbWl0IGluIHNlbGYuY29tbWl0c19pbl9yYW5nZShOb25l
LCBhcmdzWzJdKQorICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoICAjIEZvciBjYWNoZSBnZW5lcmF0
aW9uCisgICAgICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLCAnbG9nJywgcmUuY29tcGlsZShy
Jy4rJyksICctLXJldmVyc2UnLAorICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCisgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yPWxhbWJkYSAqYXJncywgKiprd2FyZ3M6IG1vY2tzLlByb2Nl
c3NDb21wbGV0aW9uKAorICAgICAgICAgICAgICAgICAgICByZXR1cm5jb2RlPTAsCisgICAgICAg
ICAgICAgICAgICAgIHN0ZG91dD0nXG4nLmpvaW4oWworICAgICAgICAgICAgICAgICAgICAgICAg
J2NvbW1pdCB7aGFzaH1cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICdBdXRob3I6ICAgICB7
YXV0aG9yfSA8e2VtYWlsfT5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICdEYXRlOiAgICAg
ICB7ZGF0ZX1cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICdcbntsb2d9Jy5mb3JtYXQoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaD1jb21taXQuaGFzaCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhdXRob3I9Y29tbWl0LmF1dGhvci5uYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVtYWlsPWNvbW1pdC5hdXRob3IuZW1haWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0ZT1kYXRldGltZS51dGNmcm9tdGltZXN0YW1wKGNvbW1pdC50aW1l
c3RhbXAgKyB0aW1lLnRpbWV6b25lKS5zdHJmdGltZSgnJWEgJWIgJWQgJUg6JU06JVMgJVkgKzAw
MDAnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2c9J1xuJy5qb2luKFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKCcgICAgJyArIGxpbmUpIGlmIGxpbmUgZWxzZSAn
JyBmb3IgbGluZSBpbiBjb21taXQubWVzc2FnZS5zcGxpdGxpbmVzKCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBdICsgKFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAg
ICBnaXQtc3ZuLWlkOiBodHRwczovL3N2bi57fS9yZXBvc2l0b3J5L3t9L3RydW5rQHt9IDI2OGY0
NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYycuZm9ybWF0KAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZW1vdGUuc3BsaXQoJ0AnKVstMV0uc3BsaXQoJzon
KVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5h
bWUocGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXQucmV2
aXNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKV0gaWYgZ2l0X3N2biBlbHNlIFtd
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICkpIGZvciBjb21taXQgaW4KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXZlcnNlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGlzdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29tbWl0
c19pbl9yYW5nZShOb25lLCBhcmdzWzJdLnJlcGxhY2UoJ3JlbW90ZXMvb3JpZ2luLycsICcnKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICcuLicgbm90IGluIGFyZ3Nb
Ml0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29t
bWl0c19pbl9yYW5nZSgqYXJnc1syXS5yZXBsYWNlKCdyZW1vdGVzL29yaWdpbi8nLCAnJykuc3Bs
aXQoJy4uJykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAg
ICAgKQogICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKICAgICAgICAgICAg
ICAgICBzZWxmLmV4ZWN1dGFibGUsICdsb2cnLCAnLS1mb3JtYXQ9ZnVsbGVyJywgcmUuY29tcGls
ZShyJy4rXC5cLlwuLisnKSwKICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLApAQCAtMjYy
LDcgKzM0MSw3IEBAIG5vdGhpbmcgdG8gY29tbWl0LCB3b3JraW5nIHRyZWUgY2xlYW4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBnaXQtc3ZuLWlkOiBodHRwczovL3N2bi57
fS9yZXBvc2l0b3J5L3t9L3RydW5rQHt9IDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0
ZGJmYycuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5y
ZW1vdGUuc3BsaXQoJ0AnKVstMV0uc3BsaXQoJzonKVswXSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5hbWUocGF0aCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbW1pdC5yZXZpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbW1pdC5yZXZpc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICApXSBpZiBnaXRfc3ZuIGVsc2UgW10pLAogICAgICAgICAgICAgICAgICAgICAgICAgKSkg
Zm9yIGNvbW1pdCBpbiBzZWxmLmNvbW1pdHNfaW5fcmFuZ2UoYXJnc1szXS5zcGxpdCgnLi4uJylb
LTFdLCBhcmdzWzNdLnNwbGl0KCcuLi4nKVswXSkKICAgICAgICAgICAgICAgICAgICAgXSkKQEAg
LTMzMiw2ICs0MTEsMTMgQEAgbm90aGluZyB0byBjb21taXQsIHdvcmtpbmcgdHJlZSBjbGVhbgog
ICAgIGRlZiBicmFuY2goc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLmhlYWQuYnJhbmNoCiAK
KyAgICBkZWYgaW50ZXJzZWN0aW9uKHNlbGYsIGJyYW5jaCk6CisgICAgICAgIGJyYW5jaCA9IGJy
YW5jaC5zcGxpdCgnLycpWy0xXQorICAgICAgICBpZiBub3Qgc2VsZi5kZWZhdWx0X2JyYW5jaCBp
biBzZWxmLmNvbW1pdHMgb3Igbm90IGJyYW5jaCBpbiBzZWxmLmNvbW1pdHM6CisgICAgICAgICAg
ICByZXR1cm4gTm9uZQorCisgICAgICAgIHJldHVybiBzZWxmLmNvbW1pdHNbc2VsZi5kZWZhdWx0
X2JyYW5jaF1bc2VsZi5jb21taXRzW2JyYW5jaF1bMF0uYnJhbmNoX3BvaW50IC0gMV0KKwogICAg
IGRlZiBmaW5kKHNlbGYsIHNvbWV0aGluZyk6CiAgICAgICAgIGlmICd+JyBpbiBzb21ldGhpbmc6
CiAgICAgICAgICAgICBzcGxpdCA9IHNvbWV0aGluZy5zcGxpdCgnficpCkBAIC00OTMsMzIgKzU3
OSw0MSBAQCBub3RoaW5nIHRvIGNvbW1pdCwgd29ya2luZyB0cmVlIGNsZWFuCiAgICAgICAgICkK
IAogICAgIGRlZiBjb21taXRzX2luX3JhbmdlKHNlbGYsIGJlZ2luLCBlbmQpOgorICAgICAgICBl
bmQgPSBlbmQgYW5kIGVuZC5yZXBsYWNlKCdyZW1vdGVzL29yaWdpbicsICcnKQorICAgICAgICBi
ZWdpbiA9IGJlZ2luIGFuZCBiZWdpbi5yZXBsYWNlKCdyZW1vdGVzL29yaWdpbicsICcnKQorCiAg
ICAgICAgIGJyYW5jaGVzID0gW3NlbGYuZGVmYXVsdF9icmFuY2hdCi0gICAgICAgIGZvciBicmFu
Y2gsIGNvbW1pdHMgaW4gc2VsZi5jb21taXRzLml0ZW1zKCk6Ci0gICAgICAgICAgICBpZiBicmFu
Y2ggPT0gc2VsZi5kZWZhdWx0X2JyYW5jaDoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAg
ICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRzOgotICAgICAgICAgICAgICAgIGlmIGNvbW1p
dC5oYXNoID09IGVuZDoKLSAgICAgICAgICAgICAgICAgICAgYnJhbmNoZXMuaW5zZXJ0KDAsIGJy
YW5jaCkKKyAgICAgICAgaWYgZW5kIGluIHNlbGYuY29tbWl0cy5rZXlzKCkgYW5kIGVuZCAhPSBz
ZWxmLmRlZmF1bHRfYnJhbmNoOgorICAgICAgICAgICAgYnJhbmNoZXMuYXBwZW5kKGVuZCkKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIGZvciBicmFuY2gsIGNvbW1pdHMgaW4gc2VsZi5jb21t
aXRzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgaWYgYnJhbmNoID09IHNlbGYuZGVmYXVsdF9i
cmFuY2g6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgZm9y
IGNvbW1pdCBpbiBjb21taXRzOgorICAgICAgICAgICAgICAgICAgICBpZiBjb21taXQuaGFzaC5z
dGFydHN3aXRoKGVuZCk6CisgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2hlcy5pbnNlcnQo
MCwgYnJhbmNoKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAg
ICBpZiBsZW4oYnJhbmNoZXMpID4gMToKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAg
ICAgICAgIGlmIGxlbihicmFuY2hlcykgPiAxOgotICAgICAgICAgICAgICAgIGJyZWFrCiAKICAg
ICAgICAgaW5fcmFuZ2UgPSBGYWxzZQogICAgICAgICBwcmV2aW91cyA9IE5vbmUKICAgICAgICAg
Zm9yIGJyYW5jaCBpbiBicmFuY2hlczoKICAgICAgICAgICAgIGZvciBjb21taXQgaW4gcmV2ZXJz
ZWQoc2VsZi5jb21taXRzW2JyYW5jaF0pOgotICAgICAgICAgICAgICAgIGlmIGNvbW1pdC5oYXNo
ID09IGVuZDoKKyAgICAgICAgICAgICAgICBpZiBicmFuY2ggPT0gYmVnaW46CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgaWYgY29tbWl0Lmhhc2guc3RhcnRzd2l0
aChlbmQpIG9yIGVuZCA9PSBicmFuY2g6CiAgICAgICAgICAgICAgICAgICAgIGluX3JhbmdlID0g
VHJ1ZQogICAgICAgICAgICAgICAgIGlmIGluX3JhbmdlIGFuZCAobm90IHByZXZpb3VzIG9yIGNv
bW1pdC5oYXNoICE9IHByZXZpb3VzLmhhc2gpOgogICAgICAgICAgICAgICAgICAgICB5aWVsZCBj
b21taXQKICAgICAgICAgICAgICAgICBwcmV2aW91cyA9IGNvbW1pdAotICAgICAgICAgICAgICAg
IGlmIGNvbW1pdC5oYXNoID09IGJlZ2luOgorICAgICAgICAgICAgICAgIGlmIGJlZ2luIGFuZCBj
b21taXQuaGFzaC5zdGFydHN3aXRoKGJlZ2luKToKICAgICAgICAgICAgICAgICAgICAgaW5fcmFu
Z2UgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICBicmVhaworCiAgICAgICAgICAgICBpbl9y
YW5nZSA9IEZhbHNlCiAgICAgICAgICAgICBpZiBub3QgcHJldmlvdXMgb3IgYnJhbmNoID09IHNl
bGYuZGVmYXVsdF9icmFuY2g6CiAgICAgICAgICAgICAgICAgY29udGludWUKLQogICAgICAgICAg
ICAgZm9yIGNvbW1pdCBpbiByZXZlcnNlZChzZWxmLmNvbW1pdHNbc2VsZi5kZWZhdWx0X2JyYW5j
aF0pOgogICAgICAgICAgICAgICAgIGlmIHByZXZpb3VzLmJyYW5jaF9wb2ludCA9PSBjb21taXQu
aWRlbnRpZmllcjoKICAgICAgICAgICAgICAgICAgICAgZW5kID0gY29tbWl0Lmhhc2gKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Nj
bV9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvc2NtX2Jhc2UucHkKaW5kZXggZjFkNWRiOGQ5MDBiLi5hNTkxNDk5YTBmNDIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3NjbV9i
YXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNj
bXB5L3NjbV9iYXNlLnB5CkBAIC0zNyw3ICszNyw5IEBAIGNsYXNzIFNjbUJhc2Uob2JqZWN0KToK
ICAgICAjIHRoZSBmb2xsb3dpbmcgaWRpb21zIHNlZW0gY29tbW9uIGVub3VnaCB0byBiZSBzaGFy
ZWQuCiAgICAgREVWX0JSQU5DSEVTID0gcmUuY29tcGlsZShyJy4qWyhlbmcpKGRldikoYnVnKV0v
LisnKQogICAgIFBST0RfQlJBTkNIRVMgPSByZS5jb21waWxlKHInXFMrLVtcZCtcLl0rLWJyYW5j
aCcpCi0gICAgR0lUX1NWTl9SRVZJU0lPTiA9IHJlLmNvbXBpbGUocideZ2l0LXN2bi1pZDogXFMr
OlwvXC8uK0AoP1A8cmV2aXNpb24+XGQrKSAuKy0uKy0uKy0uKycsIGZsYWdzPXJlLk1VTFRJTElO
RSkKKyAgICBHSVRfU1ZOX1JFVklTSU9OID0gcmUuY29tcGlsZShyJ14oPzogICAgKT9naXQtc3Zu
LWlkOiBcUys6XC9cLy4rQCg/UDxyZXZpc2lvbj5cZCspIC4rLS4rLS4rLS4rJywgZmxhZ3M9cmUu
TVVMVElMSU5FKQorICAgIENPTU1JVF9GUk9NX0xPRyA9IHJlLmNvbXBpbGUocideY29tbWl0ICg/
UDxjb21taXQ+W2EtekEtWjAtOV17NDB9KScpCisKICAgICBERUZBVUxUX0JSQU5DSEVTID0gWydt
YWluJywgJ21hc3RlcicsICd0cnVuayddCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZGV2X2Jy
YW5jaGVzPU5vbmUsIHByb2RfYnJhbmNoZXM9Tm9uZSwgY29udHJpYnV0b3JzPU5vbmUsIGlkPU5v
bmUpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvdGVzdC9jYW5vbmljYWxpemVfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2Nhbm9uaWNhbGl6ZV91bml0dGVz
dC5weQppbmRleCA3NzlkZDhhZjM3YjUuLmYxMWZhZjBjOTk3MiAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9jYW5vbmljYWxp
emVfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkv
d2Via2l0c2NtcHkvdGVzdC9jYW5vbmljYWxpemVfdW5pdHRlc3QucHkKQEAgLTIwLDYgKzIwLDkg
QEAKICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAoraW1wb3J0IG9zCitp
bXBvcnQgc2h1dGlsCitpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdl
YmtpdGNvcmVweSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQpAQCAtMjgsNyArMzEsMTQgQEAgZnJvbSB3
ZWJraXRzY21weSBpbXBvcnQgcHJvZ3JhbSwgbW9ja3MsIGxvY2FsLCBDb21taXQsIENvbnRyaWJ1
dG9yCiAKIAogY2xhc3MgVGVzdENhbm9uaWNhbGl6ZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAg
cGF0aCA9ICcvbW9jay9yZXBvc2l0b3J5JworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAg
c2VsZi5jb250YWluZXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKyAgICAgICAgc2VsZi5wYXRoID0g
b3MucGF0aC5qb2luKHNlbGYuY29udGFpbmVyLCAncmVwb3NpdG9yeScpCisgICAgICAgIG9zLm1h
a2VkaXJzKHNlbGYucGF0aCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgaWYg
b3MucGF0aC5leGlzdHMoc2VsZi5jb250YWluZXIpIGFuZCBzZWxmLmNvbnRhaW5lci5zdGFydHN3
aXRoKCcvdG1wJyk6CisgICAgICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuY29udGFpbmVyKQog
CiAgICAgZGVmIHRlc3RfaW52YWxpZChzZWxmKToKICAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJl
KCksIG1vY2tzLmxvY2FsLkdpdCgpLCBtb2Nrcy5sb2NhbC5Tdm4oc2VsZi5wYXRoKSwgTW9ja1Rp
bWU6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJr
aXRzY21weS90ZXN0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9jaGVja291dF91bml0dGVzdC5weQppbmRl
eCBjNTg1ODAyNThkNWMuLjEwM2NiMDI2OTBlNiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9jaGVja291dF91bml0dGVzdC5w
eQorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90
ZXN0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5CkBAIC0yMCw2ICsyMCw5IEBACiAjIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKK2ltcG9ydCBvcworaW1wb3J0IHNodXRpbAoraW1w
b3J0IHRlbXBmaWxlCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0
IE91dHB1dENhcHR1cmUKQEAgLTI4LDcgKzMxLDEzIEBAIGZyb20gd2Via2l0c2NtcHkgaW1wb3J0
IHByb2dyYW0sIG1vY2tzLCBsb2NhbAogCiAKIGNsYXNzIFRlc3RDaGVja291dCh1bml0dGVzdC5U
ZXN0Q2FzZSk6Ci0gICAgcGF0aCA9ICcvbW9jay9yZXBvc2l0b3J5JworICAgIGRlZiBzZXRVcChz
ZWxmKToKKyAgICAgICAgc2VsZi5jb250YWluZXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKyAgICAg
ICAgc2VsZi5wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuY29udGFpbmVyLCAncmVwb3NpdG9yeScp
CisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNl
bGYuY29udGFpbmVyKSBhbmQgc2VsZi5jb250YWluZXIuc3RhcnRzd2l0aCgnL3RtcCcpOgorICAg
ICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmNvbnRhaW5lcikKIAogICAgIGRlZiB0ZXN0X2No
ZWNrb3V0X2dpdChzZWxmKToKICAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCksIG1vY2tzLmxv
Y2FsLkdpdChzZWxmLnBhdGgpLCBtb2Nrcy5sb2NhbC5Tdm4oKSwgTW9ja1RpbWU6CmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0
L2ZpbmRfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93
ZWJraXRzY21weS90ZXN0L2ZpbmRfdW5pdHRlc3QucHkKaW5kZXggYjZmNTkxODkxZmZmLi5lMWUw
YWRjMmE1ZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L3Rlc3QvZmluZF91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2ZpbmRfdW5pdHRlc3QucHkKQEAg
LTIyLDYgKzIyLDcgQEAKIAogaW1wb3J0IGpzb24KIGltcG9ydCBzaHV0aWwKK2ltcG9ydCBvcwog
aW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdW5pdHRlc3QKIApAQCAtMzIsNyArMzMsMTMgQEAgZnJv
bSB3ZWJraXRzY21weSBpbXBvcnQgcHJvZ3JhbSwgbW9ja3MKIAogCiBjbGFzcyBUZXN0RmluZCh1
bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgcGF0aCA9ICcvbW9jay9yZXBvc2l0b3J5JworICAgIGRl
ZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5jb250YWluZXIgPSB0ZW1wZmlsZS5ta2R0ZW1w
KCkKKyAgICAgICAgc2VsZi5wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuY29udGFpbmVyLCAncmVw
b3NpdG9yeScpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGlmIG9zLnBhdGgu
ZXhpc3RzKHNlbGYuY29udGFpbmVyKSBhbmQgc2VsZi5jb250YWluZXIuc3RhcnRzd2l0aCgnL3Rt
cCcpOgorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmNvbnRhaW5lcikKIAogICAgIGRl
ZiB0ZXN0X2Jhc2ljX2dpdChzZWxmKToKICAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMg
Y2FwdHVyZWQsIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgpLCBtb2Nrcy5sb2NhbC5Tdm4oKSwg
TW9ja1RpbWU6CkBAIC0yMzYsNyArMjQzLDE3IEBAIElkZW50aWZpZXI6IDNAdHJ1bmsKIAogCiBj
bGFzcyBUZXN0SW5mbyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgcGF0aCA9ICcvbW9jay9yZXBv
c2l0b3J5JworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5jb250YWluZXIgPSB0
ZW1wZmlsZS5ta2R0ZW1wKCkKKyAgICAgICAgc2VsZi5wYXRoID0gb3MucGF0aC5qb2luKHNlbGYu
Y29udGFpbmVyLCAncmVwb3NpdG9yeScpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAg
ICAgIGlmIG9zLnBhdGguZXhpc3RzKHNlbGYuY29udGFpbmVyKSBhbmQgc2VsZi5jb250YWluZXIu
c3RhcnRzd2l0aCgnL3RtcCcpOgorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmNvbnRh
aW5lcikKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgaWYgb3MucGF0aC5leGlz
dHMoc2VsZi5wYXRoKSBhbmQgc2VsZi5wYXRoLnN0YXJ0c3dpdGgoJy90bXAnKToKKyAgICAgICAg
ICAgIHNodXRpbC5ybXRyZWUoc2VsZi5wYXRoKQogCiAgICAgZGVmIHRlc3RfYmFzaWNfZ2l0KHNl
bGYpOgogICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZCwgbW9ja3MubG9j
YWwuR2l0KHNlbGYucGF0aCksIG1vY2tzLmxvY2FsLlN2bigpLCBNb2NrVGltZToKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3Qv
Z2l0X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvdGVzdC9naXRfdW5pdHRlc3QucHkKaW5kZXggYmM3YjYzOTI5YjRhLi5kODVlYWMz
NDE5YTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dl
YmtpdHNjbXB5L3Rlc3QvZ2l0X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZ2l0X3VuaXR0ZXN0LnB5CkBAIC0zMiw3
ICszMiwxMyBAQCBmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBDb21taXQsIGxvY2FsLCBtb2Nrcywg
cmVtb3RlCiAKIAogY2xhc3MgVGVzdEdpdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgcGF0aCA9
ICcvbW9jay9yZXBvc2l0b3J5JworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5j
b250YWluZXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKyAgICAgICAgc2VsZi5wYXRoID0gb3MucGF0
aC5qb2luKHNlbGYuY29udGFpbmVyLCAncmVwb3NpdG9yeScpCisKKyAgICBkZWYgdGVhckRvd24o
c2VsZik6CisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNlbGYucGF0aCkgYW5kIHNlbGYucGF0
aC5zdGFydHN3aXRoKCcvdG1wJyk6CisgICAgICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYucGF0
aCkKIAogICAgIGRlZiB0ZXN0X2RldGVjdGlvbihzZWxmKToKICAgICAgICAgd2l0aCBPdXRwdXRD
YXB0dXJlKCksIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgpLCBtb2Nrcy5sb2NhbC5Tdm4oKToK
QEAgLTEwMyw4ICsxMDksOCBAQCBjbGFzcyBUZXN0R2l0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICAgICAgICAgICAgICBzZWxmLmFzc2VydERpY3RFcXVhbCgKICAgICAgICAgICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICAgICAgICAgJ1BhdGgnOiAnLicsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAnUmVwb3NpdG9yeSBSb290JzogJ2dpdEBleGFtcGxlLm9yZzovbW9jay9yZXBvc2l0
b3J5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICdVUkwnOiAnZ2l0QGV4YW1wbGUub3JnOi9t
b2NrL3JlcG9zaXRvcnkvbWFpbicsCisgICAgICAgICAgICAgICAgICAgICAgICAnUmVwb3NpdG9y
eSBSb290JzogJ2dpdEBleGFtcGxlLm9yZzp7fScuZm9ybWF0KHNlbGYucGF0aCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAnVVJMJzogJ2dpdEBleGFtcGxlLm9yZzp7fS9tYWluJy5mb3JtYXQo
c2VsZi5wYXRoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdSZXZpc2lvbic6ICc5JywKICAg
ICAgICAgICAgICAgICAgICAgICAgICdOb2RlIEtpbmQnOiAnZGlyZWN0b3J5JywKICAgICAgICAg
ICAgICAgICAgICAgICAgICdTY2hlZHVsZSc6ICdub3JtYWwnLApAQCAtMzA1LDYgKzMxMSwzNSBA
QCBjbGFzcyBUZXN0R2l0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgICAgICAgICAg
Z2l0LmNvbW1pdChoYXNoPSc5YjgzMTFmMicpLAogICAgICAgICAgICAgICAgIF0pLCBDb21taXQu
RW5jb2RlcigpLmRlZmF1bHQobGlzdChnaXQuY29tbWl0cyhiZWdpbj1kaWN0KGFyZ3VtZW50PSc5
YjgzMTFmMicpLCBlbmQ9ZGljdChhcmd1bWVudD0nNjIxNjUyYWQnKSkpKSkKIAorICAgIGRlZiB0
ZXN0X2NhY2hlKHNlbGYpOgorICAgICAgICBmb3IgbW9jayBpbiBbbW9ja3MubG9jYWwuR2l0KHNl
bGYucGF0aCksIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgsIGdpdF9zdm49VHJ1ZSldOgorICAg
ICAgICAgICAgd2l0aCBtb2NrLCBPdXRwdXRDYXB0dXJlKCk6CisgICAgICAgICAgICAgICAgcmVw
byA9IGxvY2FsLkdpdChzZWxmLnBhdGgpCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHJlcG8uY2FjaGUuaWRlbnRpZmllcl90b19oYXNoKCcxQG1haW4nKSwgJzliODMxMWYyNWE3
N2JhMTQ5MjNkOWQ1YTY1MzIxMDNmNTRhYmVmY2InKQorICAgICAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocmVwby5jYWNoZS5oYXNoX3RvX2lkZW50aWZpZXIoJ2Q4YmNlMjZmYTY1YycpLCAn
NUBtYWluJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG8uY2FjaGUuaWRl
bnRpZmllcl90b19oYXNoKCcyLjNAYnJhbmNoLWInKSwgJzc5MDcyNWE2ZDc5ZTI4ZGIyZWNkZGUy
OTU0OGQyMjYyYzBiZDA1OWQnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVw
by5jYWNoZS5pZGVudGlmaWVyX3RvX2hhc2goJzIuMUBicmFuY2gtYScpLCAnYTMwY2U4NDk0YmYx
YWMyODA3YTY5ODQ0ZjcyNmJlNGE5ODQzY2E1NScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChyZXBvLmNhY2hlLmhhc2hfdG9faWRlbnRpZmllcignYTMwY2U4NDk0YmYxJyksICcy
LjFAYnJhbmNoLWEnKQorCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvLmNh
Y2hlLmhhc2hfdG9faWRlbnRpZmllcignYmFkYzBkZDFmJyksIE5vbmUpCisgICAgICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvLmNhY2hlLmlkZW50aWZpZXJfdG9faGFzaCgnNkBtYWlu
JyksIE5vbmUpCisKKworICAgIGRlZiB0ZXN0X3JldmlzaW9uX2NhY2hlKHNlbGYpOgorICAgICAg
ICB3aXRoIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgsIGdpdF9zdm49VHJ1ZSksIE91dHB1dENh
cHR1cmUoKToKKyAgICAgICAgICAgIHJlcG8gPSBsb2NhbC5HaXQoc2VsZi5wYXRoKQorCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG8uY2FjaGUuaWRlbnRpZmllcl90b19yZXZpc2lv
bignMUBtYWluJyksICdyMScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG8uY2Fj
aGUucmV2aXNpb25fdG9faWRlbnRpZmllcigncjknKSwgJzVAbWFpbicpCisKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocmVwby5jYWNoZS5yZXZpc2lvbl90b19oYXNoKCdyOCcpLCAnYmFl
NWQxZTkwOTk5ZDRmOTE2YThhMTU4MTBjY2ZhNDNmMzdhMmZkNicpCisKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocmVwby5jYWNoZS5yZXZpc2lvbl90b19pZGVudGlmaWVyKCdyMTAwJyks
IE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG8uY2FjaGUuaGFzaF90b19y
ZXZpc2lvbignYmFkYzBkZDFmJyksIE5vbmUpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocmVwby5jYWNoZS5pZGVudGlmaWVyX3RvX3JldmlzaW9uKCc2QG1haW4nKSwgTm9uZSkKKwog
CiBjbGFzcyBUZXN0R2l0SHViKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICByZW1vdGUgPSAnaHR0
cHM6Ly9naXRodWIuZXhhbXBsZS5jb20vV2ViS2l0L1dlYktpdCcKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zdm4ucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc3ZuLnB5CmluZGV4IGUzOWQzZGY1ZGY5
NC4uMzFlNDExMzNkMTkwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9zY20vc3ZuLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L3NjbS9zdm4ucHkKQEAgLTk5LDE3ICs5OSwxNSBAQCBjbGFzcyBTVk4oU0NNLCBT
Vk5SZXBvc2l0b3J5KToKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBpbl93b3JraW5nX2Rp
cmVjdG9yeShjbHMsIHBhdGgsIGV4ZWN1dGl2ZT1Ob25lKToKLSAgICAgICAgaWYgb3MucGF0aC5p
c2Rpcihvcy5wYXRoLmpvaW4ocGF0aCwgJy5zdm4nKSk6Ci0gICAgICAgICAgICAjIFRoaXMgaXMg
YSBmYXN0IHNob3J0Y3V0IGZvciBzdm4gaW5mbyB0aGF0IGlzIHVzdWFsbHkgY29ycmVjdCBmb3Ig
U1ZOIDwgMS43LAotICAgICAgICAgICAgIyBidXQgZG9lc24ndCB3b3JrIGZvciBTVk4gPj0gMS43
LgotICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIo
b3MucGF0aC5qb2luKHBhdGgsICcuc3ZuJykpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAK
ICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZXhlY3V0aXZlID0gZXhlY3V0aXZlIG9yIEV4ZWN1
dGl2ZSgpCiAgICAgICAgICAgICBzdm5faW5mb19hcmdzID0gW2Nscy5leGVjdXRhYmxlX25hbWUs
ICdpbmZvJ10KICAgICAgICAgICAgIGV4aXRfY29kZSA9IGV4ZWN1dGl2ZS5ydW5fY29tbWFuZChz
dm5faW5mb19hcmdzLCBjd2Q9cGF0aCwgcmV0dXJuX2V4aXRfY29kZT1UcnVlKQogICAgICAgICAg
ICAgcmV0dXJuIChleGl0X2NvZGUgPT0gMCkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAg
ICAgIGV4Y2VwdCAoT1NFcnJvciwgU2NyaXB0RXJyb3IpOgogICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCiAKICAgICBkZWYgZmluZF91dWlkKHNlbGYsIHBhdGgpOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429217</attachid>
            <date>2021-05-20 14:00:36 -0700</date>
            <delta_ts>2021-06-28 14:29:38 -0700</delta_ts>
            <desc>Identifiers cache v2</desc>
            <filename>identifier-mappings-cache-v2.patch</filename>
            <type>text/plain</type>
            <size>47861</size>
            <attacher name="Dean Johnson">dean_johnson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxMmYz
OTc0NTc3YWUuLjMzNDZhYWJmZjhmYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIxLTA1LTIwICBEZWFuIEpvaG5z
b24gIDxkZWFuX2pvaG5zb25AYXBwbGUuY29tPgorCisgICAgICAgIFt3ZWJraXRzY21weV0gQ2Fj
aGUgaWRlbnRpZmllcnMgaW4gR2l0IGNoZWNrb3V0cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NjE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKwkJVGhpcyBwYXRjaCBhZGRzIGFuIGlkZW50aWZpZXIgbWFwcGluZyBj
YWNoZSBwZXItYnJhbmNoIHRvIDxyZXBvX3Jvb3Q+Ly5naXQvY2FjaGVzLiBJdCBvbmx5IGV2ZXIg
Y2FjaGVzCisJCXdoYXQgaXMgcHVzaGVkIHRvIGEgcmVtb3RlLCBhbmQgc2luY2Ugd2UgZG8gbm90
IGFsbG93IGZvcmNlLXB1c2hpbmcgdG8gbWFpbiwgd2Ugc2hvdWxkIG5ldmVyIGhhdmUgdG8KKwkJ
aW52YWxpZGF0ZSB0aGUgY2FjaGUuCisKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS93ZWJraXRzY21weS9sb2NhbC9naXQucHk6CisgICAgICAgIChHaXRDYWNoZSk6IEFk
ZGVkLiBNdWx0aS1kaXJlY3Rpb25hbCBjYWNoZSBiZXR3ZWVuIGhhc2hlcywgcmV2aXNpb25zIGFu
ZCBpZGVudGlmaWVycy4gTGF6aWx5IGxvYWRzCisJCWNhY2hlcyBhbmQgaWRlbnRpZmllciAtPiBo
YXNoICsgcmV2aXNpb24gLyBoYXNoICsgcmV2aXNpb24gLT4gaWRlbnRpZmllciBtYXBwaW5ncy4K
KyAgICAgICAgKEdpdENhY2hlLl9faW5pdF9fKToKKyAgICAgICAgKEdpdENhY2hlLmluaXRpYWxp
emUpOgorICAgICAgICAoR2l0Q2FjaGUucGF0aCk6IFBhdGggZm9yIHRoZSBjYWNoZSB0byBiZSBz
dG9yZWQuCisgICAgICAgIChHaXRDYWNoZS5wb3B1bGF0ZSk6IENyZWF0ZXMgb3IgdXBkYXRlcyBj
YWNoZSBlbnRyaWVzIGluLXBsYWNlLgorICAgICAgICAoR2l0Q2FjaGUuc2V0X2hhc2hfbWFwcGlu
Zyk6IEhhc2hlcyBhcmUgc3RvcmVkIHVzaW5nIHRoZSBmaXJzdCA2IGNoYXJhY3RlcnMgcG9pbnRp
bmcgdG8gYSBkaWN0aW9uYXJ5IAorCQlvZiB0aGUgcmVtYWluaW5nIDM0IGNoYXJhY3RlcnMuIFRo
aXMgYWxsb3dzIHRoZSBjYWNoZSB0byBiZSBoaXQgZm9yIGhhc2hlcyBhcyBzaG9ydCBhcyA2IGNo
YXJhY3RlcnMsCisJCXdoaWxlIHN0aWxsIGVuYWJsaW5nIGlkZW50aWZpZXJzIHRvIG1hcCB0byA0
MCBjaGFyYWN0ZXIgaGFzaGVzLgorICAgICAgICAoR2l0Q2FjaGUuZ2V0X2hhc2hfbWFwcGluZyk6
IEhlbHBlciBmdW5jdGlvbiBmb3IgYWNjZXNzaW5nIHRoZSBoYXNoIG1hcHBpbmcgc3RvcmFnZTsg
cmVwbGljYXRlcyBHaXQKKwkJYmVoYXZpb3Igd2hlbiB0aGVyZSBpcyBtdWx0aXBsZSBtYXRjaGVz
IGZvciBhIHByb3ZpZGVkIGhhc2ggKGUuZy4gcmFpc2UgYW4gZXJyb3IpLgorICAgICAgICAoR2l0
Q2FjaGUubG9hZF9jb21taXRzX2FuZF9yZXZpc2lvbnNfY2FjaGUpOiBMb2FkcyBjb21taXRzIGFu
ZCByZXZpc2lvbnMgY2FjaGUuCisgICAgICAgIChHaXRDYWNoZS5sb2FkX2lkZW50aWZpZXJfY2Fj
aGUpOiBMb2FkcyBjb21taXRzIGFuZCByZXZpc2lvbnMgY2FjaGUgKGlmIG5lZWRlZCksIHRoZW4g
aWRlbnRpZmllciBtYXBwaW5ncy4KKyAgICAgICAgKEdpdENhY2hlLmNhbm9uaWNhbGl6ZV9icmFu
Y2hfaWRlbnRpZmllcik6IEFkZCBpbiB0aGUgJzxicmFuY2hfcG9pbnQ+LicgcHJlZml4IGZvciBi
cmFuY2gtYmFzZWQKKwkJaWRlbnRpZmllcnMgbGlrZSAyQHNhZmFyaS02MTEtYnJhbmNoLgorICAg
ICAgICAoR2l0Q2FjaGUuZm9ybWF0X2lkZW50aWZpZXIpOiBGb3JtYXR0aW5nIGZ1bmN0aW9uIGZv
ciBpZGVudGlmaWVycy4KKyAgICAgICAgKEdpdENhY2hlLmZvcm1hdF9oYXNoKTogRGl0dG8gZm9y
IGhhc2hlcy4KKyAgICAgICAgKEdpdENhY2hlLmZvcm1hdF9yZXZpc2lvbik6IERpdHRvIGZvciBy
ZXZpc2lvbnMuCisgICAgICAgIChHaXRDYWNoZS5oYXNoX3RvX2lkZW50aWZpZXIpOiBDb252ZXJ0
cyBhIGhhc2ggdG8gYW4gaWRlbnRpZmllciwgb3IgTm9uZSBpZiB0aGUgaGFzaCBkb2VzIG5vdCBl
eGlzdC4KKyAgICAgICAgKEdpdENhY2hlLmhhc2hfdG9fcmV2aXNpb24pOiBEaXR0bywgYnV0IGZv
ciBoYXNoIC0+IHJldmlzaW9uLgorICAgICAgICAoR2l0Q2FjaGUucmV2aXNpb25fdG9faWRlbnRp
Zmllcik6IERpdHRvLCBidXQgZm9yIHJldmlzaW9uIC0+IGlkZW50aWZpZXIuCisgICAgICAgIChH
aXRDYWNoZS5yZXZpc2lvbl90b19oYXNoKTogRGl0dG8sIGJ1dCBmb3IgcmV2aXNpb24gLT4gaGFz
aC4KKyAgICAgICAgKEdpdENhY2hlLmlkZW50aWZpZXJfdG9faGFzaCk6IERpdHRvLCBidXQgZm9y
IGlkZW50aWZpZXIgLT4gaGFzaC4KKyAgICAgICAgKEdpdENhY2hlLmlkZW50aWZpZXJfdG9fcmV2
aXNpb24pOiBEaXR0bywgYnV0IGZvciBpZGVudGlmaWVyIC0+IHJldmlzaW9uLgorICAgICAgICAo
R2l0Q2FjaGUuX3RyYW5zbGF0ZSk6IEhlbHBlciBmdW5jdGlvbiBmb3IgdHJhbnNsYXRpbmcgaWRl
bnRpZmllcnMuCisgICAgICAgIChHaXQuX19pbml0X18pOgorICAgICAgICAoR2l0KToKKyAgICAg
ICAgKEdpdC5kZWZhdWx0X2JyYW5jaCk6IEFkZCBtZW1vaXphdGlvbiBzbyByZXBlYXRlZCBjYWxs
cyBkbyBub3QgcmVzdWx0IGluIHNoZWxsIGNvbW1hbmRzIHJ1bm5pbmcuCisgICAgICAgIChHaXQu
bWVtb2l6ZWRfY3VycmVudF9icmFuY2gpOiBBZGQgZnVuY3Rpb24gZm9yIG1lbW9pemVkIGN1cnJl
bnQgYnJhbmNoLgorICAgICAgICAoR2l0Lm1lbW9pemVkX2xvY2FsX2JyYW5jaGVzKTogQWRkIGZ1
bmN0aW9uIGZvciBtZW1vaXplZCBsaXN0IG9mIGxvY2FsIGJyYW5jaGVzLgorICAgICAgICAoR2l0
LmNvbW1pdCk6IE1ha2UgdXNlIG9mIGNhY2hlIHRvIGNyZWF0ZSBtYXBwaW5ncyBiZXR3ZWVuIGhh
c2hlcyA8PiByZXZpc2lvbnMgPD4gaWRlbnRpZmllcnMuCisgICAgICAgIChHaXQudXBzdHJlYW1f
cmVtb3RlKTogQWRkIGZ1bmN0aW9uIGZvciBkZWZhdWx0IHVwc3RyZWFtIHJlbW90ZS4gVGhpcyBp
cyB1c2VkIHRvIGZpZ3VyZSBvdXQgd2hhdCBpcworCQljYWNoZWFibGUgb24gZWFjaCBicmFuY2gu
CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9j
a3MvbG9jYWwvZ2l0LnB5OiBQdXQgbW9jayByZXBvc2l0b3JpZXMgaW4gL3RtcCBzbyB3ZSBjYW4g
CisJCXdyaXRlIGNhY2hlcyB0byB0aGVtLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdHNjbXB5L3dlYmtpdHNjbXB5L3NjbV9iYXNlLnB5OgorICAgICAgICAoU2NtQmFzZSk6IEFk
ZCAvIHVwZGF0ZSByZWdleGVzIGZvciBjYWNoZSBjcmVhdGlvbi4KKyAgICAgICAgKiBTY3JpcHRz
L2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2Nhbm9uaWNhbGl6ZV91bml0
dGVzdC5weTogRGl0dG8gdG8gbW9jayByZXBvcyBpbiAvdG1wLgorICAgICAgICAoVGVzdENhbm9u
aWNhbGl6ZS5zZXRVcCk6CisgICAgICAgIChUZXN0Q2Fub25pY2FsaXplKToKKyAgICAgICAgKFRl
c3RDYW5vbmljYWxpemUudGVhckRvd24pOgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvY2hlY2tvdXRfdW5pdHRlc3QucHk6IERpdHRvIHRv
IG1vY2sgcmVwb3MgaW4gL3RtcC4KKyAgICAgICAgKFRlc3RDaGVja291dC5zZXRVcCk6CisgICAg
ICAgIChUZXN0Q2hlY2tvdXQpOgorICAgICAgICAoVGVzdENoZWNrb3V0LnRlYXJEb3duKToKKyAg
ICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2Zp
bmRfdW5pdHRlc3QucHk6IERpdHRvIHRvIG1vY2sgcmVwb3MgaW4gL3RtcC4KKyAgICAgICAgKFRl
c3RGaW5kLnNldFVwKToKKyAgICAgICAgKFRlc3RGaW5kKToKKyAgICAgICAgKFRlc3RGaW5kLnRl
YXJEb3duKToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRz
Y21weS90ZXN0L2dpdF91bml0dGVzdC5weTogRGl0dG8gdG8gbW9jayByZXBvcyBpbiAvdG1wIGFu
ZAorCQlhZGQgdW5pdCB0ZXN0cyBmb3IgdGhlIG5ldyBjYWNoaW5nIGxheWVyLgorICAgICAgICAo
VGVzdEdpdC5zZXRVcCk6CisgICAgICAgIChUZXN0R2l0KToKKyAgICAgICAgKFRlc3RHaXQudGVh
ckRvd24pOgorICAgICAgICAoVGVzdEdpdC50ZXN0X2luZm8pOgorICAgICAgICAoVGVzdEdpdC50
ZXN0X2NhY2hlKToKKyAgICAgICAgKFRlc3RHaXQudGVzdF9yZXZpc2lvbl9jYWNoZSk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3N2bi5weToKKyAgICAg
ICAgKFNWTi5pbl93b3JraW5nX2RpcmVjdG9yeSk6IEZpeCBlcnJvci1wcm9uZSBsb2dpYyBmb3Ig
U1ZOIHJlcG9zaXRvcnkgZGV0ZWN0aW9uLgorCiAyMDIxLTA1LTEzICBBYWthc2ggSmFpbiAgPGFh
a2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbZXdzXSBTdHlsZSBmaXhlcyBpbiBzdGVw
cy5weQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvbG9jYWwvZ2l0LnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2Nt
cHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5CmluZGV4IDllNmNhN2ZiMGM3NC4uZTAyMzNhYThl
YTA5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJr
aXRzY21weS9sb2NhbC9naXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5CkBAIC0yMSw2ICsyMSw3IEBACiAjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAKIGltcG9ydCBjYWxlbmRhcgoraW1wb3J0IGpzb24KIGltcG9ydCBsb2dnaW5nCiBp
bXBvcnQgb3MKIGltcG9ydCByZQpAQCAtMzYsNiArMzcsMzE3IEBAIGZyb20gd2Via2l0c2NtcHku
bG9jYWwgaW1wb3J0IFNjbQogZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgQ29tbWl0LCBDb250cmli
dXRvciwgbG9nCiAKIAorY2xhc3MgR2l0Q2FjaGUob2JqZWN0KToKKyAgICBIQVNIX1BBUlRJVElP
Tl9TSVpFID0gNgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcG8sIGluaXRpYWxpemU9RmFs
c2UpOgorICAgICAgICBzZWxmLnJlcG8gPSByZXBvCisgICAgICAgIHNlbGYuX21hcHBpbmdzID0g
e30KKyAgICAgICAgc2VsZi5fa25vd25fdXBkYXRlZF9icmFuY2hlcyA9IHNldCgpCisKKyAgICAg
ICAgaWYgaW5pdGlhbGl6ZToKKyAgICAgICAgICAgIHNlbGYuaW5pdGlhbGl6ZShicmFuY2g9c2Vs
Zi5yZXBvLmRlZmF1bHRfYnJhbmNoKQorCisgICAgZGVmIGluaXRpYWxpemUoc2VsZiwgYnJhbmNo
PU5vbmUpOgorICAgICAgICAnJycKKyAgICAgICAgRm9ybWF0IGZvciBtYXBwaW5nIGlzIGV4cGVj
dGVkIHRvIGJlOgorICAgICAgICAgIG1hcHBpbmcgPSB7CisgICAgICAgICAgICBicmFuY2g6IHsK
KyAgICAgICAgICAgICAgJ2NvbW1pdHMnOiB7fSwKKyAgICAgICAgICAgICAgJ3JldmlzaW9ucyc6
IHt9LAorICAgICAgICAgICAgICAnbGFzdF91cGRhdGVkJzogeworICAgICAgICAgICAgICAgICdj
b21taXQnOiAnJyBvciBuaWwsCisgICAgICAgICAgICAgICAgJ2lkZW50aWZpZXInOiAwIG9yIG5p
bCwKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAg
JycnCisKKyAgICAgICAgaWYgbm90IGJyYW5jaDoKKyAgICAgICAgICAgIHJldHVybgorCisgICAg
ICAgIGpzb25fcGF0aCA9IHNlbGYucGF0aChicmFuY2gpCisgICAgICAgIGlmIG9zLnBhdGguZXhp
c3RzKGpzb25fcGF0aCkgYW5kIGJyYW5jaCBub3QgaW4gc2VsZi5fbWFwcGluZ3M6CisgICAgICAg
ICAgICB3aXRoIG9wZW4oanNvbl9wYXRoKSBhcyBmaWxlOgorICAgICAgICAgICAgICAgIGNvbnRl
bnQgPSBqc29uLmxvYWQoZmlsZSkKKyAgICAgICAgICAgICAgICBzZWxmLl9tYXBwaW5nc1ticmFu
Y2hdID0gY29udGVudAorICAgICAgICBlbGlmIGJyYW5jaCBub3QgaW4gc2VsZi5fbWFwcGluZ3M6
CisgICAgICAgICAgICBzZWxmLl9tYXBwaW5nc1ticmFuY2hdID0geydjb21taXRzJzoge30sICdy
ZXZpc2lvbnMnOiB7fSwgJ2xhc3RfdXBkYXRlZCc6IHt9fQorCisgICAgZGVmIHBhdGgoc2VsZiwg
YnJhbmNoKToKKyAgICAgICAgYmFzZV9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYucmVwby5yb290
X3BhdGgsICcuZ2l0JywgJ2NhY2hlcycsIGJyYW5jaCkKKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGJhc2VfcGF0aCk6CisgICAgICAgICAgICAgICAgb3Mu
bWFrZWRpcnMoYmFzZV9wYXRoKQorICAgICAgICBleGNlcHQgT1NFcnJvcjogICMgRm9yIHVuaXQg
dGVzdHMKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKGJh
c2VfcGF0aCwgJ2lkZW50aWZpZXJzLmpzb24nKQorCisgICAgZGVmIHBvcHVsYXRlKHNlbGYsIGJy
YW5jaCk6CisgICAgICAgIGlmIGJyYW5jaCBpbiBzZWxmLl9rbm93bl91cGRhdGVkX2JyYW5jaGVz
OgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgc2VsZi5pbml0aWFsaXplKGJyYW5jaCkK
KyAgICAgICAgZW5kX2JyYW5jaCA9IG9zLnBhdGguam9pbihzZWxmLnJlcG8udXBzdHJlYW1fcmVt
b3RlLCBicmFuY2gpCisKKyAgICAgICAgc3RhcnQgPSBzZWxmLl9tYXBwaW5ncy5nZXQoYnJhbmNo
LCB7fSkuZ2V0KCdsYXN0X3VwZGF0ZWQnKQorCisgICAgICAgIHJlc3VsdCA9IHJ1bihbc2VsZi5y
ZXBvLmV4ZWN1dGFibGUoKSwgJ3Jldi1wYXJzZScsIGVuZF9icmFuY2hdLCBjd2Q9c2VsZi5yZXBv
LnJvb3RfcGF0aCwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgZW5jb2Rpbmc9J3V0Zi04JykKKyAgICAg
ICAgaXNfY2FjaGVhYmxlX2JyYW5jaCA9IHJlc3VsdC5yZXR1cm5jb2RlID09IDAgICMgUmVtb3Rl
IGJyYW5jaCBleGlzdHMKKyAgICAgICAgb3V0cHV0ID0gcmVzdWx0LnN0ZG91dC5zdHJpcCgpCisK
KyAgICAgICAgaWYgb3V0cHV0IGFuZCBzdGFydCBhbmQgc3RhcnRbJ2NvbW1pdCddID09IG91dHB1
dFs6bGVuKHN0YXJ0Wydjb21taXQnXSldOgorICAgICAgICAgICAgc2VsZi5fa25vd25fdXBkYXRl
ZF9icmFuY2hlcy5hZGQoYnJhbmNoKQorICAgICAgICAgICAgcmV0dXJuICAjIENhY2hlIGlzIHVw
IHRvIGRhdGUKKworICAgICAgICBpZiBub3QgaXNfY2FjaGVhYmxlX2JyYW5jaDoKKyAgICAgICAg
ICAgIHNlbGYuX21hcHBpbmdzW2JyYW5jaF0gPSB7J2NvbW1pdHMnOiB7fSwgJ3JldmlzaW9ucyc6
IHt9LCAnbGFzdF91cGRhdGVkJzoge319CisgICAgICAgICAgICBzZWxmLl9rbm93bl91cGRhdGVk
X2JyYW5jaGVzLmFkZChicmFuY2gpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBvcmRl
cl9zdGFydCA9IDEKKyAgICAgICAgcmFuZ2VfYXJnID0gJycKKyAgICAgICAgcHJpbWFyeV91cHN0
cmVhbV9yZW1vdGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5yZXBvLnVwc3RyZWFtX3JlbW90ZSwgc2Vs
Zi5yZXBvLmRlZmF1bHRfYnJhbmNoKQorICAgICAgICBpZiBzdGFydCBhbmQgc3RhcnQuZ2V0KCdp
ZGVudGlmaWVyJyk6CisgICAgICAgICAgICBvcmRlcl9zdGFydCA9IGludChzdGFydFsnaWRlbnRp
ZmllciddKQorICAgICAgICAgICAgcmFuZ2VfYXJnICs9IHN0YXJ0Wydjb21taXQnXSArICcuLicK
KyAgICAgICAgZWxpZiBicmFuY2ggIT0gc2VsZi5yZXBvLmRlZmF1bHRfYnJhbmNoOgorICAgICAg
ICAgICAgcmFuZ2VfYXJnICs9IHByaW1hcnlfdXBzdHJlYW1fcmVtb3RlICsgJy4uJworCisgICAg
ICAgIHJhbmdlX2FyZyArPSBlbmRfYnJhbmNoCisKKyAgICAgICAgIyBGaXJzdCB0aW1lIHJ1bm5p
bmcsIGJlIHN1cmUgdG8gcmVjb3JkIHdoZXJlIG5vbi1kZWZhdWx0IGJyYW5jaCBmb3JrZWQgZnJv
bS4KKyAgICAgICAgaWYgb3JkZXJfc3RhcnQgPT0gMSBhbmQgYnJhbmNoICE9IHNlbGYucmVwby5k
ZWZhdWx0X2JyYW5jaDoKKyAgICAgICAgICAgIHByaW1hcnlfYnJhbmNoX2ludGVyc2VjdGlvbl9j
b21tYW5kID0gW3NlbGYucmVwby5leGVjdXRhYmxlKCksICdtZXJnZS1iYXNlJywgcHJpbWFyeV91
cHN0cmVhbV9yZW1vdGUsIGVuZF9icmFuY2hdCisgICAgICAgICAgICBmaXJzdF9jb21taXQgPSBy
dW4ocHJpbWFyeV9icmFuY2hfaW50ZXJzZWN0aW9uX2NvbW1hbmQsIGN3ZD1zZWxmLnJlcG8ucm9v
dF9wYXRoLCBjYXB0dXJlX291dHB1dD1UcnVlLCBlbmNvZGluZz0ndXRmLTgnKS5zdGRvdXQuc3Ry
aXAoKQorICAgICAgICAgICAgc2VsZi5zZXRfaGFzaF9tYXBwaW5nKGJyYW5jaCwgZmlyc3RfY29t
bWl0LCAwKQorCisgICAgICAgIGNhY2hlX3BvcHVsYXRpb25fY29tbWFuZCA9IFtzZWxmLnJlcG8u
ZXhlY3V0YWJsZSgpLCAnbG9nJywgcmFuZ2VfYXJnLCAnLS1yZXZlcnNlJ10KKyAgICAgICAgcmVz
dWx0cyA9IHJ1bihjYWNoZV9wb3B1bGF0aW9uX2NvbW1hbmQsIGN3ZD1zZWxmLnJlcG8ucm9vdF9w
YXRoLCBjYXB0dXJlX291dHB1dD1UcnVlLCBlbmNvZGluZz0ndXRmLTgnKQorCisgICAgICAgICMg
VGVjaG5pY2FsbHkgd2Ugc2hvdWxkIG5ldmVyIHNlZSB0aGlzIGluIGEgbG9jYWwgY2hlY2tvdXQs
IGJ1dCBpdCdzIHBvc3NpYmxlIGluIHRlc3RzLgorICAgICAgICBpZiByZXN1bHRzLnN0ZG91dCA9
PSAnJzoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGxvZyA9IE5vbmUKKyAgICAgICAg
dHJ5OgorICAgICAgICAgICAga3dhcmdzID0gZGljdCgpCisgICAgICAgICAgICBpZiBzeXMudmVy
c2lvbl9pbmZvID49ICgzLCAwKToKKyAgICAgICAgICAgICAgICBrd2FyZ3MgPSBkaWN0KGVuY29k
aW5nPSd1dGYtOCcpCisKKyAgICAgICAgICAgIGxvZyA9IHN1YnByb2Nlc3MuUG9wZW4oY2FjaGVf
cG9wdWxhdGlvbl9jb21tYW5kLCBjd2Q9c2VsZi5yZXBvLnJvb3RfcGF0aCwKKyAgICAgICAgICAg
ICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLCAqKmt3
YXJncykKKyAgICAgICAgICAgIGlmIGxvZy5wb2xsKCk6CisgICAgICAgICAgICAgICAgcmFpc2Ug
c2VsZi5yZXBvLkV4Y2VwdGlvbigiRmFpbGVkIHRvIGNvbnN0cnVjdCBicmFuY2ggaGlzdG9yeSBm
b3IgJ3t9JyIuZm9ybWF0KGJyYW5jaCkpCisKKyAgICAgICAgICAgIF9oYXNoLCByZXZpc2lvbiwg
bGFzdF9oYXNoID0gTm9uZSwgTm9uZSwgTm9uZQorICAgICAgICAgICAgcmVsYXRpdmVfaWRlbnRp
Zmllcl9mcm9tX3N0YXJ0ID0gMAorCisgICAgICAgICAgICBsaW5lID0gbG9nLnN0ZG91dC5yZWFk
bGluZSgpCisgICAgICAgICAgICB3aGlsZSBsaW5lOgorICAgICAgICAgICAgICAgIGlmIG5vdCBs
aW5lLnN0cmlwKCk6CisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsb2cuc3Rkb3V0LnJlYWRs
aW5lKCkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICMg
Q2FjaGUgYnVpbGRpbmcgbXVzdCBzdXBwb3J0IGNhc2VzIHdoZXJlIGEgcmVwb3NpdG9yeSBtYXkg
b3IgbWF5IG5vdCBoYXZlIGhpc3RvcmljYWwgZ2l0LXN2biBkYXRhLgorICAgICAgICAgICAgICAg
IGhhc2hfbWF0Y2ggPSBzZWxmLnJlcG8uQ09NTUlUX0ZST01fTE9HLm1hdGNoKGxpbmUpCisgICAg
ICAgICAgICAgICAgaWYgaGFzaF9tYXRjaCBhbmQgX2hhc2ggaXMgTm9uZTogICMgZ2l0LXN2biBs
b2dpYworICAgICAgICAgICAgICAgICAgICBpZiBsYXN0X2hhc2ggaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICAgICAgICAgICAgICBhc3NlcnQgX2hhc2ggaXMgTm9uZSwgIkVycm9yOiBTb21laG93
IGdvdCBhIG5vbi1lbXB0eSBoYXNoIHt9Li4uIG1heWJlIHJldmlzaW9uIGZvciBwcmV2aW91cyBj
b21taXQgZmFpbGVkIHRvIGJlIGNhcHR1cmVkPyIuZm9ybWF0KF9oYXNoKQorCisgICAgICAgICAg
ICAgICAgICAgIF9oYXNoID0gaGFzaF9tYXRjaC5ncm91cCgnY29tbWl0JykKKyAgICAgICAgICAg
ICAgICBlbGlmIGhhc2hfbWF0Y2ggYW5kIF9oYXNoIGlzIG5vdCBOb25lOiAgIyBub24gZ2l0LXN2
biBsb2dpYworICAgICAgICAgICAgICAgICAgICBsYXN0X2hhc2ggPSBfaGFzaAorICAgICAgICAg
ICAgICAgICAgICBzZWxmLnNldF9oYXNoX21hcHBpbmcoYnJhbmNoLCBfaGFzaCwgb3JkZXJfc3Rh
cnQgKyByZWxhdGl2ZV9pZGVudGlmaWVyX2Zyb21fc3RhcnQpCisgICAgICAgICAgICAgICAgICAg
IHJlbGF0aXZlX2lkZW50aWZpZXJfZnJvbV9zdGFydCArPSAxCisKKyAgICAgICAgICAgICAgICAg
ICAgX2hhc2ggPSBoYXNoX21hdGNoLmdyb3VwKCdjb21taXQnKQorCisgICAgICAgICAgICAgICAg
cmV2aXNpb25fbWF0Y2ggPSBzZWxmLnJlcG8uR0lUX1NWTl9SRVZJU0lPTi5tYXRjaChsaW5lKQor
ICAgICAgICAgICAgICAgIGlmIHJldmlzaW9uX21hdGNoOiAgIyBnaXQtc3ZuIGxvZ2ljCisgICAg
ICAgICAgICAgICAgICAgIHJldmlzaW9uID0gc3RyKHJldmlzaW9uX21hdGNoLmdyb3VwKCdyZXZp
c2lvbicpKQorCisgICAgICAgICAgICAgICAgICAgICMgRmx1c2ggdG8gbWFwcGluZworICAgICAg
ICAgICAgICAgICAgICBhc3NlcnQgX2hhc2ggaXMgbm90IE5vbmUgYW5kIHJldmlzaW9uIGlzIG5v
dCBOb25lLCAiRXJyb3I6IFNvbWVob3cgcmV2aXNpb24gb3IgX2hhc2ggaXMgTm9uZS4uLiIKKyAg
ICAgICAgICAgICAgICAgICAgc2VsZi5zZXRfaGFzaF9tYXBwaW5nKGJyYW5jaCwgX2hhc2gsIG9y
ZGVyX3N0YXJ0ICsgcmVsYXRpdmVfaWRlbnRpZmllcl9mcm9tX3N0YXJ0KQorICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9tYXBwaW5nc1ticmFuY2hdWydyZXZpc2lvbnMnXVtyZXZpc2lvbl0gPSBv
cmRlcl9zdGFydCArIHJlbGF0aXZlX2lkZW50aWZpZXJfZnJvbV9zdGFydAorCisgICAgICAgICAg
ICAgICAgICAgIGxhc3RfaGFzaCA9IF9oYXNoCisgICAgICAgICAgICAgICAgICAgIF9oYXNoLCBy
ZXZpc2lvbiA9IE5vbmUsIE5vbmUKKyAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmVfaWRlbnRp
Zmllcl9mcm9tX3N0YXJ0ICs9IDEKKworICAgICAgICAgICAgICAgIGxpbmUgPSBsb2cuc3Rkb3V0
LnJlYWRsaW5lKCkKKworICAgICAgICAgICAgYXNzZXJ0IHJldmlzaW9uIGlzIE5vbmUsICdFcnJv
cjogRXhwZWN0ZWQgcmV2aXNpb24gdG8gYmUgTm9uZSBhZnRlciBnZW5lcmF0aW5nIGNhY2hlIGZv
ciB7fS4nLmZvcm1hdChicmFuY2gpCisgICAgICAgICAgICBpZiBfaGFzaDogICMgbm9uIGdpdC1z
dm4gbG9naWM7IGZsdXNoIHNpbmNlIHdlIHByb2Nlc3MgYWZ0ZXIgZWFjaCBjb21taXQuCisgICAg
ICAgICAgICAgICAgbGFzdF9oYXNoID0gX2hhc2gKKyAgICAgICAgICAgICAgICBzZWxmLnNldF9o
YXNoX21hcHBpbmcoYnJhbmNoLCBfaGFzaCwgb3JkZXJfc3RhcnQgKyByZWxhdGl2ZV9pZGVudGlm
aWVyX2Zyb21fc3RhcnQpCisgICAgICAgICAgICAgICAgcmVsYXRpdmVfaWRlbnRpZmllcl9mcm9t
X3N0YXJ0ICs9IDEKKworICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgbG9nOgorICAg
ICAgICAgICAgICAgIGxvZy5raWxsKCkKKworICAgICAgICBzZWxmLl9tYXBwaW5nc1ticmFuY2hd
WydsYXN0X3VwZGF0ZWQnXSA9IHsnY29tbWl0JzogbGFzdF9oYXNoLCAnaWRlbnRpZmllcic6IG9y
ZGVyX3N0YXJ0ICsgcmVsYXRpdmVfaWRlbnRpZmllcl9mcm9tX3N0YXJ0fQorICAgICAgICBzZWxm
Ll9rbm93bl91cGRhdGVkX2JyYW5jaGVzLmFkZChicmFuY2gpCisKKyAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgd2l0aCBvcGVuKHNlbGYucGF0aChicmFuY2gpLCAndycpIGFzIGZpbGU6CisgICAg
ICAgICAgICAgICAganNvbi5kdW1wKHNlbGYuX21hcHBpbmdzW2JyYW5jaF0sIGZpbGUsIGluZGVu
dD00KQorICAgICAgICBleGNlcHQgKElPRXJyb3IsIE9TRXJyb3IsIEZpbGVOb3RGb3VuZEVycm9y
KToKKyAgICAgICAgICAgIHNlbGYucmVwby5sb2coIkZhaWxlZCB0byB3cml0ZSBpZGVudGlmaWVy
IGNhY2hlIHRvICd7fSciLmZvcm1hdChzZWxmLnBhdGgpKQorICAgICAgICAgICAgaWYgb3MucGF0
aC5leGlzdHMoc2VsZi5wYXRoKGJyYW5jaCkpOgorICAgICAgICAgICAgICAgIG9zLnJlbW92ZShz
ZWxmLnBhdGgoYnJhbmNoKSkKKworICAgIGRlZiBzZXRfaGFzaF9tYXBwaW5nKHNlbGYsIGJyYW5j
aCwgaGFzaF9rZXksIGlkZW50aWZpZXIpOgorICAgICAgICAnJycKKyAgICAgICAgVG8gc3VwcG9y
dCB1c2luZyB0aGUgY2FjaGUgZm9yIGNvbW1pdHMgYXMgc2hvcnQgYXMgNiBjaGFyYWN0ZXJzLCB1
c2UgYSBuZXN0ZWQgZGljdGlvbmFyeQorICAgICAgICBmb3IgdGhlIGZpcnN0IDYgY2hhcmFjdGVy
cyAtPiByZW1haW5pbmcgMzQgY2hhcmFjdGVycyAtPiBpZGVudGlmaWVyLgorCisgICAgICAgIEV4
YW1wbGU6CisgICAgICAgIGhhc2gxOiA5YzMxNGEyNDIwNzM1ZDAyOWNkZjg5ZjZjMzA3MzA4NTVj
YTJhNGU1CisgICAgICAgIGhhc2gyOiA5YzMxNGEyOTkxMGE5NWE3NmYyZDkzMGFlYThlODMxMjhm
ZmE1NDk1CisgICAgICAgICI5YzMxNGEiOiB7CisgICAgICAgICAgICAiMjQyMDczNWQwMjljZGY4
OWY2YzMwNzMwODU1Y2EyYTRlNSI6IDExLAorICAgICAgICAgICAgIjI5OTEwYTk1YTc2ZjJkOTMw
YWVhOGU4MzEyOGZmYTU0OTUiOiAzMjQ4MAorICAgICAgICB9LAorICAgICAgICAnJycKKyAgICAg
ICAgZmlyc3RfcGFydGl0aW9uID0gaGFzaF9rZXlbOnNlbGYuSEFTSF9QQVJUSVRJT05fU0laRV0K
KyAgICAgICAgcmVtYWluaW5nID0gaGFzaF9rZXlbc2VsZi5IQVNIX1BBUlRJVElPTl9TSVpFOl0K
KyAgICAgICAgc2VsZi5fbWFwcGluZ3NbYnJhbmNoXVsnY29tbWl0cyddLnNldGRlZmF1bHQoZmly
c3RfcGFydGl0aW9uLCB7fSkKKyAgICAgICAgc2VsZi5fbWFwcGluZ3NbYnJhbmNoXVsnY29tbWl0
cyddW2ZpcnN0X3BhcnRpdGlvbl1bcmVtYWluaW5nXSA9IGlkZW50aWZpZXIKKworICAgIGRlZiBn
ZXRfaGFzaF9tYXBwaW5nKHNlbGYsIGJyYW5jaCwgaGFzaF9hcmcpOgorICAgICAgICBmaXJzdF9w
YXJ0aXRpb24gPSBoYXNoX2FyZ1s6c2VsZi5IQVNIX1BBUlRJVElPTl9TSVpFXQorICAgICAgICBy
ZW1haW5pbmcgPSBoYXNoX2FyZ1tzZWxmLkhBU0hfUEFSVElUSU9OX1NJWkU6XQorICAgICAgICBu
dW1fcmVzdWx0cyA9IDAKKyAgICAgICAgcmVzdWx0ID0gTm9uZQorICAgICAgICBmb3IgcmVtYWlu
aW5nX2hhc2gsIGlkZW50aWZpZXIgaW4gc2VsZi5fbWFwcGluZ3NbYnJhbmNoXVsnY29tbWl0cydd
LmdldChoYXNoX2FyZ1s6c2VsZi5IQVNIX1BBUlRJVElPTl9TSVpFXSwge30pLml0ZW1zKCk6Cisg
ICAgICAgICAgICBpZiByZW1haW5pbmdfaGFzaC5zdGFydHN3aXRoKHJlbWFpbmluZyk6CisgICAg
ICAgICAgICAgICAgcmVzdWx0ID0gaWRlbnRpZmllcgorICAgICAgICAgICAgICAgIG51bV9yZXN1
bHRzICs9IDEKKworICAgICAgICAjIFJlcGxpY2F0ZSBnaXQgYmVoYXZpb3IsIHdoaWNoIGFsc28g
ZXJyb3JzIG91dCB3aGVuIGdpdmVuIGFuIGFtYmlndW91cyBjb21taXQgbGlrZSAnOWMzMTRhJy4K
KyAgICAgICAgYXNzZXJ0IG51bV9yZXN1bHRzIDwgMiwgJ0Vycm9yOiBHb3QgbW9yZSB0aGFuIG9u
ZSByZXN1bHQgZm9yIGhhc2ggPD4gaWRlbnRpZmllciB3aXRoIGFyZyB7fScuZm9ybWF0KGhhc2hf
YXJnKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgbG9hZF9jb21taXRzX2FuZF9y
ZXZpc2lvbnNfY2FjaGUoc2VsZiwgYnJhbmNoKToKKyAgICAgICAgc2VsZi5wb3B1bGF0ZShicmFu
Y2gpCisKKyAgICBkZWYgbG9hZF9pZGVudGlmaWVyX2NhY2hlKHNlbGYsIGJyYW5jaCk6CisgICAg
ICAgIGlmIGJyYW5jaCBpbiBzZWxmLl9tYXBwaW5ncyBhbmQgJ2lkZW50aWZpZXJzJyBpbiBzZWxm
Ll9tYXBwaW5nc1ticmFuY2hdOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgaWYgYnJh
bmNoICE9IHNlbGYucmVwby5kZWZhdWx0X2JyYW5jaCBhbmQgKHNlbGYucmVwby5kZWZhdWx0X2Jy
YW5jaCBub3QgaW4gc2VsZi5fbWFwcGluZ3Mgb3IKKyAgICAgICAgICAgICdpZGVudGlmaWVycycg
bm90IGluIHNlbGYuX21hcHBpbmdzW3NlbGYucmVwby5kZWZhdWx0X2JyYW5jaF0pOgorICAgICAg
ICAgICAgICAgIHNlbGYubG9hZF9pZGVudGlmaWVyX2NhY2hlKHNlbGYucmVwby5kZWZhdWx0X2Jy
YW5jaCkKKworICAgICAgICBzZWxmLnBvcHVsYXRlKGJyYW5jaCkKKyAgICAgICAgc2VsZi5fbWFw
cGluZ3NbYnJhbmNoXVsnaWRlbnRpZmllcnMnXSA9IHt9CisgICAgICAgIGZvciBmaXJzdF9oYXNo
X3BhcnRpdGlvbiwgc2Vjb25kX3BhcnRpdGlvbnMgaW4gc2VsZi5fbWFwcGluZ3NbYnJhbmNoXVsn
Y29tbWl0cyddLml0ZW1zKCk6CisgICAgICAgICAgICBmb3IgcmVtYWluaW5nX3BhcnRpdGlvbiwg
aWRlbnRpZmllciBpbiBzZWNvbmRfcGFydGl0aW9ucy5pdGVtcygpOgorICAgICAgICAgICAgICAg
IHNlbGYuX21hcHBpbmdzW2JyYW5jaF1bJ2lkZW50aWZpZXJzJ11baWRlbnRpZmllcl0gPSB7ICdo
YXNoJzogZmlyc3RfaGFzaF9wYXJ0aXRpb24gKyByZW1haW5pbmdfcGFydGl0aW9ufQorICAgICAg
ICBmb3IgcmV2aXNpb24sIGlkZW50aWZpZXIgaW4gc2VsZi5fbWFwcGluZ3NbYnJhbmNoXVsncmV2
aXNpb25zJ10uaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGYuX21hcHBpbmdzW2JyYW5jaF1bJ2lk
ZW50aWZpZXJzJ11baWRlbnRpZmllcl1bJ3JldmlzaW9uJ10gPSByZXZpc2lvbgorCisgICAgZGVm
IGNhbm9uaWNhbGl6ZV9icmFuY2hfaWRlbnRpZmllcihzZWxmLCBpZGVudGlmaWVyKToKKyAgICAg
ICAgaWYgbm90IGlkZW50aWZpZXIgb3IgaWRlbnRpZmllci5lbmRzd2l0aChzZWxmLnJlcG8uZGVm
YXVsdF9icmFuY2gpOgorICAgICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXIKKworICAgICAgICBi
cmFuY2hfcG9pbnRfaWRlbnRpZmllciwgYnJhbmNoID0gaWRlbnRpZmllci5zcGxpdCgnQCcpCisg
ICAgICAgIGJyYW5jaF9wb2ludF9oYXNoID0gc2VsZi5pZGVudGlmaWVyX3RvX2hhc2goJzBAe30n
LmZvcm1hdChicmFuY2gpLCBicmFuY2g9YnJhbmNoKQorICAgICAgICBpbnRlcnNlY3Rpb25faWRl
bnRpZmllciA9IHNlbGYuaGFzaF90b19pZGVudGlmaWVyKGJyYW5jaF9wb2ludF9oYXNoLCBicmFu
Y2g9c2VsZi5yZXBvLmRlZmF1bHRfYnJhbmNoKQorICAgICAgICBfLCBpbnRlcnNlY3Rpb25faWRl
bnRpZmllciwgXyA9IENvbW1pdC5fcGFyc2VfaWRlbnRpZmllcihpbnRlcnNlY3Rpb25faWRlbnRp
ZmllcikKKyAgICAgICAgYXNzZXJ0IGludGVyc2VjdGlvbl9pZGVudGlmaWVyLCAiRXJyb3I6IFNv
bWVob3cgaW50ZXJzZWN0aW9uIHdpdGgge30gY291bGQgbm90IGJlIGRldGVybWluZWQgZm9yIHt9
Ii5mb3JtYXQoc2VsZi5yZXBvLmRlZmF1bHRfYnJhbmNoLCBpZGVudGlmaWVyKQorICAgICAgICBy
ZXR1cm4gJ3t9Lnt9QHt9Jy5mb3JtYXQoaW50ZXJzZWN0aW9uX2lkZW50aWZpZXIsIGJyYW5jaF9w
b2ludF9pZGVudGlmaWVyLCBicmFuY2gpCisKKyAgICBkZWYgZm9ybWF0X2lkZW50aWZpZXIoc2Vs
ZiwgaWRlbnRpZmllciwgYnJhbmNoKToKKyAgICAgICAgcmV0dXJuICd7fUB7fScuZm9ybWF0KGlk
ZW50aWZpZXIsIGJyYW5jaCkKKworICAgIGRlZiBmb3JtYXRfaGFzaChzZWxmLCBfaGFzaCwgYnJh
bmNoKToKKyAgICAgICAgcmV0dXJuIF9oYXNoCisKKyAgICBkZWYgZm9ybWF0X3JldmlzaW9uKHNl
bGYsIHJldmlzaW9uLCBicmFuY2gpOgorICAgICAgICByZXR1cm4gJ3J7fScuZm9ybWF0KHJldmlz
aW9uKQorCisgICAgZGVmIGhhc2hfdG9faWRlbnRpZmllcihzZWxmLCBfaGFzaCwgYnJhbmNoPU5v
bmUpOgorICAgICAgICBpZiBsZW4oX2hhc2gpIDwgc2VsZi5IQVNIX1BBUlRJVElPTl9TSVpFOgor
ICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBnZXRfcmVzdWx0X2Z1bmMgPSBsYW1i
ZGEgbWFwcGluZywgYnJhbmNoLCBfaGFzaDogc2VsZi5nZXRfaGFzaF9tYXBwaW5nKGJyYW5jaCwg
X2hhc2gpCisgICAgICAgIGlkZW50aWZpZXIgPSBzZWxmLl90cmFuc2xhdGUoX2hhc2gsIHNlbGYu
bG9hZF9jb21taXRzX2FuZF9yZXZpc2lvbnNfY2FjaGUsIGdldF9yZXN1bHRfZnVuYywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZvcm1hdF9pZGVudGlmaWVyLCBicmFuY2g9
YnJhbmNoKQorICAgICAgICByZXR1cm4gc2VsZi5jYW5vbmljYWxpemVfYnJhbmNoX2lkZW50aWZp
ZXIoaWRlbnRpZmllcikKKworICAgIGRlZiBoYXNoX3RvX3JldmlzaW9uKHNlbGYsIF9oYXNoLCBi
cmFuY2g9Tm9uZSk6CisgICAgICAgIGlkZW50aWZpZXIgPSBzZWxmLmhhc2hfdG9faWRlbnRpZmll
cihfaGFzaCkKKyAgICAgICAgaWYgbm90IGlkZW50aWZpZXI6CisgICAgICAgICAgICByZXR1cm4g
Tm9uZQorCisgICAgICAgIHJldHVybiBzZWxmLmlkZW50aWZpZXJfdG9fcmV2aXNpb24oaWRlbnRp
ZmllcikKKworICAgIGRlZiByZXZpc2lvbl90b19pZGVudGlmaWVyKHNlbGYsIHJldmlzaW9uLCBi
cmFuY2g9Tm9uZSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldmlzaW9uID0gaW50KHN0
cihyZXZpc2lvbikubHN0cmlwKCdyJykpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAg
ICAgICAgICAgc2VsZi5yZXBvLmxvZygnRXJyb3I6IEludmFsaWQgcmV2aXNpb24ge30gcGFzc2Vk
IHRvIHJldmlzaW9uX3RvX2lkZW50aWZpZXIuLi4nLmZvcm1hdChyZXZpc2lvbikpCisgICAgICAg
ICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIGdldF9yZXN1bHRfZnVuYyA9IGxhbWJkYSBtYXBw
aW5nLCBicmFuY2gsIHJldmlzaW9uOiBtYXBwaW5nW2JyYW5jaF1bJ3JldmlzaW9ucyddLmdldChy
ZXZpc2lvbikKKyAgICAgICAgaWRlbnRpZmllciA9IHNlbGYuX3RyYW5zbGF0ZShzdHIocmV2aXNp
b24pLCBzZWxmLmxvYWRfY29tbWl0c19hbmRfcmV2aXNpb25zX2NhY2hlLCBnZXRfcmVzdWx0X2Z1
bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZvcm1hdF9pZGVudGlm
aWVyLCBicmFuY2g9YnJhbmNoKQorICAgICAgICByZXR1cm4gc2VsZi5jYW5vbmljYWxpemVfYnJh
bmNoX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKworICAgIGRlZiByZXZpc2lvbl90b19oYXNoKHNl
bGYsIHJldmlzaW9uLCBicmFuY2g9Tm9uZSk6CisgICAgICAgIGlkZW50aWZpZXIgPSBzZWxmLnJl
dmlzaW9uX3RvX2lkZW50aWZpZXIocmV2aXNpb24pCisgICAgICAgIGlmIG5vdCBpZGVudGlmaWVy
OgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIHNlbGYuaWRlbnRpZmll
cl90b19oYXNoKGlkZW50aWZpZXIpCisKKyAgICBkZWYgaWRlbnRpZmllcl90b19oYXNoKHNlbGYs
IGlkZW50aWZpZXIsIGJyYW5jaD1Ob25lKToKKyAgICAgICAgcGFyc2VkX2JyYW5jaF9wb2ludCwg
aWRlbnRpZmllciwgcGFyc2VkX2JyYW5jaCA9IENvbW1pdC5fcGFyc2VfaWRlbnRpZmllcihpZGVu
dGlmaWVyKQorICAgICAgICBpZiBpZGVudGlmaWVyIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1
cm4gTm9uZQorCisgICAgICAgIGdldF9yZXN1bHRfZnVuYyA9IGxhbWJkYSBtYXBwaW5nLCBicmFu
Y2gsIGlkZW50aWZpZXI6IG1hcHBpbmdbYnJhbmNoXVsnaWRlbnRpZmllcnMnXS5nZXQoaWRlbnRp
Zmllciwge30pLmdldCgnaGFzaCcpCisgICAgICAgIF9oYXNoID0gc2VsZi5fdHJhbnNsYXRlKGlk
ZW50aWZpZXIsIHNlbGYubG9hZF9pZGVudGlmaWVyX2NhY2hlLCBnZXRfcmVzdWx0X2Z1bmMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZm9ybWF0X2hhc2gsIGJyYW5jaD1w
YXJzZWRfYnJhbmNoIG9yIGJyYW5jaCkKKyAgICAgICAgcmV0dXJuIF9oYXNoCisKKyAgICBkZWYg
aWRlbnRpZmllcl90b19yZXZpc2lvbihzZWxmLCBpZGVudGlmaWVyLCBicmFuY2g9Tm9uZSk6Cisg
ICAgICAgIHBhcnNlZF9icmFuY2hfcG9pbnQsIGlkZW50aWZpZXIsIHBhcnNlZF9icmFuY2ggPSBD
b21taXQuX3BhcnNlX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAgICAgaWYgbm90IGlkZW50
aWZpZXI6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIGdldF9yZXN1bHRfZnVu
YyA9IGxhbWJkYSBtYXBwaW5nLCBicmFuY2gsIGlkZW50aWZpZXI6IG1hcHBpbmdbYnJhbmNoXVsn
aWRlbnRpZmllcnMnXS5nZXQoaWRlbnRpZmllciwge30pLmdldCgncmV2aXNpb24nKQorICAgICAg
ICByZXZpc2lvbiA9IHNlbGYuX3RyYW5zbGF0ZShpZGVudGlmaWVyLCBzZWxmLmxvYWRfaWRlbnRp
Zmllcl9jYWNoZSwgZ2V0X3Jlc3VsdF9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLmZvcm1hdF9yZXZpc2lvbiwgYnJhbmNoPXBhcnNlZF9icmFuY2ggb3IgYnJhbmNo
KQorICAgICAgICByZXR1cm4gcmV2aXNpb24KKworICAgIGRlZiBfdHJhbnNsYXRlKHNlbGYsIGFy
ZywgbG9hZF9jYWNoZV9mdW5jLCBnZXRfcmVzdWx0X2Z1bmMsIGZvcm1hdF9yZXN1bHRfZnVuYywg
YnJhbmNoPU5vbmUpOgorICAgICAgICBwcmVmZXJyZWRfYnJhbmNoZXMgPSBbYnJhbmNoXSBpZiBi
cmFuY2ggZWxzZSBbc2VsZi5yZXBvLmRlZmF1bHRfYnJhbmNoLCBzZWxmLnJlcG8ubWVtb2l6ZWRf
Y3VycmVudF9icmFuY2hdCisgICAgICAgIGZvciBfYnJhbmNoIGluIHByZWZlcnJlZF9icmFuY2hl
czoKKyAgICAgICAgICAgIGlmIG5vdCBfYnJhbmNoOgorICAgICAgICAgICAgICAgIGNvbnRpbnVl
CisKKyAgICAgICAgICAgIGxvYWRfY2FjaGVfZnVuYyhfYnJhbmNoKQorICAgICAgICAgICAgcmVz
dWx0ID0gZ2V0X3Jlc3VsdF9mdW5jKHNlbGYuX21hcHBpbmdzLCBfYnJhbmNoLCBhcmcpCisgICAg
ICAgICAgICBpZiByZXN1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdF9yZXN1bHRf
ZnVuYyhyZXN1bHQsIF9icmFuY2gpCisKKyAgICAgICAgZm9yIF9icmFuY2ggaW4gc2VsZi5yZXBv
Lm1lbW9pemVkX2xvY2FsX2JyYW5jaGVzKCk6CisgICAgICAgICAgICBpZiBub3QgX2JyYW5jaCBv
ciBfYnJhbmNoIGluIHByZWZlcnJlZF9icmFuY2hlcyBvciBfYnJhbmNoID09ICdtYXN0ZXInOgor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGxvYWRfY2FjaGVfZnVuYyhf
YnJhbmNoKQorICAgICAgICAgICAgcmVzdWx0ID0gZ2V0X3Jlc3VsdF9mdW5jKHNlbGYuX21hcHBp
bmdzLCBfYnJhbmNoLCBhcmcpCisgICAgICAgICAgICBpZiByZXN1bHQ6CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZvcm1hdF9yZXN1bHRfZnVuYyhyZXN1bHQsIF9icmFuY2gpCisKKyAgICAgICAg
cmV0dXJuIE5vbmUKKworCiBjbGFzcyBHaXQoU2NtKToKICAgICBHSVRfQ09NTUlUID0gcmUuY29t
cGlsZShyJ2NvbW1pdCAoP1A8aGFzaD5bMC05YS1mXSspJykKIApAQCAtNTMsNiArMzY1LDggQEAg
Y2xhc3MgR2l0KFNjbSk6CiAgICAgICAgIGlmIG5vdCBzZWxmLnJvb3RfcGF0aDoKICAgICAgICAg
ICAgIHJhaXNlIE9TRXJyb3IoJ1Byb3ZpZGVkIHBhdGgge30gaXMgbm90IGEgZ2l0IHJlcG9zaXRv
cnknLmZvcm1hdChwYXRoKSkKIAorICAgICAgICBzZWxmLmNhY2hlID0gR2l0Q2FjaGUoc2VsZikK
KwogICAgIEBkZWNvcmF0b3JzLk1lbW9pemUoY2FjaGVkPUZhbHNlKQogICAgIGRlZiBpbmZvKHNl
bGYpOgogICAgICAgICBpZiBub3Qgc2VsZi5pc19zdm46CkBAIC05NCw4ICs0MDgsOSBAQCBjbGFz
cyBHaXQoU2NtKToKICAgICAgICAgcmV0dXJuIHJlc3VsdC5zdGRvdXQucnN0cmlwKCkKIAogICAg
IEBwcm9wZXJ0eQorICAgIEBkZWNvcmF0b3JzLk1lbW9pemUoKQogICAgIGRlZiBkZWZhdWx0X2Jy
YW5jaChzZWxmKToKLSAgICAgICAgcmVzdWx0ID0gcnVuKFtzZWxmLmV4ZWN1dGFibGUoKSwgJ3Jl
di1wYXJzZScsICctLWFiYnJldi1yZWYnLCAnb3JpZ2luL0hFQUQnXSwgY3dkPXNlbGYucGF0aCwg
Y2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgZW5jb2Rpbmc9J3V0Zi04JykKKyAgICAgICAgcmVzdWx0ID0g
cnVuKFtzZWxmLmV4ZWN1dGFibGUoKSwgJ3Jldi1wYXJzZScsICctLWFiYnJldi1yZWYnLCAnb3Jp
Z2luL0hFQUQnXSwgY3dkPXNlbGYucm9vdF9wYXRoLCBjYXB0dXJlX291dHB1dD1UcnVlLCBlbmNv
ZGluZz0ndXRmLTgnKQogICAgICAgICBpZiByZXN1bHQucmV0dXJuY29kZToKICAgICAgICAgICAg
IGNhbmRpZGF0ZXMgPSBzZWxmLmJyYW5jaGVzCiAgICAgICAgICAgICBpZiAnbWFzdGVyJyBpbiBj
YW5kaWRhdGVzOgpAQCAtMTA1LDYgKzQyMCwyNyBAQCBjbGFzcyBHaXQoU2NtKToKICAgICAgICAg
ICAgIHJldHVybiBOb25lCiAgICAgICAgIHJldHVybiAnLycuam9pbihyZXN1bHQuc3Rkb3V0LnJz
dHJpcCgpLnNwbGl0KCcvJylbMTpdKQogCisgICAgQHByb3BlcnR5CisgICAgQGRlY29yYXRvcnMu
TWVtb2l6ZSgpCisgICAgZGVmIG1lbW9pemVkX2N1cnJlbnRfYnJhbmNoKHNlbGYpOgorICAgICAg
ICBicmFuY2ggPSBydW4oW3NlbGYuZXhlY3V0YWJsZSgpLCAnYnJhbmNoJywgJy0tc2hvdy1jdXJy
ZW50J10sIGN3ZD1zZWxmLnJvb3RfcGF0aCwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgZW5jb2Rpbmc9
J3V0Zi04JykKKyAgICAgICAgaWYgbm90IGJyYW5jaC5yZXR1cm5jb2RlOgorICAgICAgICAgICAg
cmV0dXJuIGJyYW5jaC5zdGRvdXQuc3RyaXAoKQorCisgICAgICAgIHJldHVybiBOb25lICAjIFBy
b2JhYmx5IGRldGF0Y2hlZCBoZWFkLgorCisgICAgQGRlY29yYXRvcnMuTWVtb2l6ZSgpCisgICAg
ZGVmIG1lbW9pemVkX2xvY2FsX2JyYW5jaGVzKHNlbGYpOgorICAgICAgICBicmFuY2hlcyA9IFtd
CisgICAgICAgIGZvciBsaW5lIGluIHJ1bihbc2VsZi5leGVjdXRhYmxlKCksICdicmFuY2gnXSwg
Y3dkPXNlbGYucm9vdF9wYXRoLCBjYXB0dXJlX291dHB1dD1UcnVlLCBlbmNvZGluZz0ndXRmLTgn
KS5zdGRvdXQuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgaWYgbm90IGxpbmU6CisgICAgICAg
ICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgIyBOb3JtYWxpemUgY3VycmVudCBicmFu
Y2gKKyAgICAgICAgICAgIGJyYW5jaCA9IGxpbmUucmVwbGFjZSgnKiAnLCAnJykuc3RyaXAoKQor
ICAgICAgICAgICAgYnJhbmNoZXMuYXBwZW5kKGJyYW5jaCkKKyAgICAgICAgcmV0dXJuIGJyYW5j
aGVzCisKICAgICBAcHJvcGVydHkKICAgICBkZWYgYnJhbmNoKHNlbGYpOgogICAgICAgICBzdGF0
dXMgPSBydW4oW3NlbGYuZXhlY3V0YWJsZSgpLCAnc3RhdHVzJ10sIGN3ZD1zZWxmLnJvb3RfcGF0
aCwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwgZW5jb2Rpbmc9J3V0Zi04JykKQEAgLTE1NywxNSArNDkz
LDE2IEBAIGNsYXNzIEdpdChTY20pOgogICAgICAgICByZXR1cm4gc29ydGVkKHNldChbJy8nLmpv
aW4oYnJhbmNoLnNwbGl0KCcvJylbMjpdKSBpZiBicmFuY2guc3RhcnRzd2l0aCgncmVtb3Rlcy9v
cmlnaW4vJykgZWxzZSBicmFuY2ggZm9yIGJyYW5jaCBpbiByZXN1bHRdKSkKIAogICAgIGRlZiBj
b21taXQoc2VsZiwgaGFzaD1Ob25lLCByZXZpc2lvbj1Ob25lLCBpZGVudGlmaWVyPU5vbmUsIGJy
YW5jaD1Ob25lLCB0YWc9Tm9uZSwgaW5jbHVkZV9sb2c9VHJ1ZSwgaW5jbHVkZV9pZGVudGlmaWVy
PVRydWUpOgotICAgICAgICAjIE9ubHkgZ2l0LXN2biBjaGVja291dHMgY2FuIGNvbnZlcnQgcmV2
aXNpb25zIHRvIGZ1bGx5IHF1YWxpZmllZCBjb21taXRzCi0gICAgICAgIGlmIHJldmlzaW9uIGFu
ZCBub3Qgc2VsZi5pc19zdm46Ci0gICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignVGhp
cyBnaXQgY2hlY2tvdXQgZG9lcyBub3Qgc3VwcG9ydCBTVk4gcmV2aXNpb25zJykKLQotICAgICAg
ICAjIERldGVybWluZSB0aGUgaGFzaCBmb3IgYSBwcm92aWRlZCBTdWJ2ZXJzaW9uIHJldmlzaW9u
Ci0gICAgICAgIGVsaWYgcmV2aXNpb246CisgICAgICAgICMgT25seSBnaXQtc3ZuIGNoZWNrb3V0
cyBjYW4gY29udmVydCByZXZpc2lvbnMgdG8gZnVsbHkgcXVhbGlmaWVkIGNvbW1pdHMsIHVubGVz
cyB3ZSBoYXBwZW4gdG8gaGF2ZSBhIFNWTiBjYWNoZSBidWlsdAorICAgICAgICBpZiByZXZpc2lv
bjoKICAgICAgICAgICAgIGlmIGhhc2g6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJv
cignQ2Fubm90IGRlZmluZSBib3RoIGhhc2ggYW5kIHJldmlzaW9uJykKKyAgICAgICAgICAgIGhh
c2ggPSBzZWxmLmNhY2hlLnJldmlzaW9uX3RvX2hhc2gocmV2aXNpb24pCisgICAgICAgIGlmIHJl
dmlzaW9uIGFuZCBub3QgaGFzaCBhbmQgbm90IHNlbGYuaXNfc3ZuOgorICAgICAgICAgICAgcmFp
c2Ugc2VsZi5FeGNlcHRpb24oJ1RoaXMgZ2l0IGNoZWNrb3V0IGRvZXMgbm90IHN1cHBvcnQgU1ZO
IHJldmlzaW9ucycpCiAKKyAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGhhc2ggZm9yIGEgcHJvdmlk
ZWQgU3VidmVyc2lvbiByZXZpc2lvbgorICAgICAgICBlbGlmIHJldmlzaW9uIGFuZCBub3QgaGFz
aDoKICAgICAgICAgICAgIHJldmlzaW9uID0gQ29tbWl0Ll9wYXJzZV9yZXZpc2lvbihyZXZpc2lv
biwgZG9fYXNzZXJ0PVRydWUpCiAgICAgICAgICAgICByZXZpc2lvbl9sb2cgPSBydW4oCiAgICAg
ICAgICAgICAgICAgW3NlbGYuZXhlY3V0YWJsZSgpLCAnc3ZuJywgJ2ZpbmQtcmV2JywgJ3J7fScu
Zm9ybWF0KHJldmlzaW9uKV0sCkBAIC0yMDEsMzIgKzUzOCw0NSBAQCBjbGFzcyBHaXQoU2NtKToK
ICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgIGJyYW5jaCA9IHBhcnNlZF9i
cmFuY2gKIAotICAgICAgICAgICAgYmFzZWxpbmUgPSBicmFuY2ggb3IgJ0hFQUQnCi0gICAgICAg
ICAgICBpc19kZWZhdWx0ID0gYmFzZWxpbmUgPT0gZGVmYXVsdF9icmFuY2gKLSAgICAgICAgICAg
IGlmIGJhc2VsaW5lID09ICdIRUFEJzoKLSAgICAgICAgICAgICAgICBpc19kZWZhdWx0ID0gZGVm
YXVsdF9icmFuY2ggaW4gc2VsZi5fYnJhbmNoZXNfZm9yKGJhc2VsaW5lKQotCi0gICAgICAgICAg
ICBpZiBpc19kZWZhdWx0IGFuZCBwYXJzZWRfYnJhbmNoX3BvaW50OgotICAgICAgICAgICAgICAg
IHJhaXNlIHNlbGYuRXhjZXB0aW9uKCdDYW5ub3QgcHJvdmlkZSBhIGJyYW5jaCBwb2ludCBmb3Ig
YSBjb21taXQgb24gdGhlIGRlZmF1bHQgYnJhbmNoJykKLQotICAgICAgICAgICAgYmFzZV9jb3Vu
dCA9IHNlbGYuX2NvbW1pdF9jb3VudChiYXNlbGluZSBpZiBpc19kZWZhdWx0IGVsc2UgJ3t9Li57
fScuZm9ybWF0KGRlZmF1bHRfYnJhbmNoLCBiYXNlbGluZSkpCi0KLSAgICAgICAgICAgIGlmIGlk
ZW50aWZpZXIgPiBiYXNlX2NvdW50OgotICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0
aW9uKCdJZGVudGlmaWVyIHt9IGNhbm5vdCBiZSBmb3VuZCBvbiB0aGUgc3BlY2lmaWVkIGJyYW5j
aCBpbiB0aGUgY3VycmVudCBjaGVja291dCcuZm9ybWF0KGlkZW50aWZpZXIpKQotICAgICAgICAg
ICAgbG9nID0gcnVuKAotICAgICAgICAgICAgICAgIFtzZWxmLmV4ZWN1dGFibGUoKSwgJ2xvZycs
ICd7fX57fScuZm9ybWF0KGJyYW5jaCBvciAnSEVBRCcsIGJhc2VfY291bnQgLSBpZGVudGlmaWVy
KV0gKyBsb2dfZm9ybWF0LAotICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnJvb3RfcGF0aCwKLSAg
ICAgICAgICAgICAgICBjYXB0dXJlX291dHB1dD1UcnVlLAotICAgICAgICAgICAgICAgIGVuY29k
aW5nPSd1dGYtOCcsCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBpZiBsb2cucmV0dXJuY29k
ZToKLSAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbigiRmFpbGVkIHRvIHJldHJp
ZXZlIGNvbW1pdCBpbmZvcm1hdGlvbiBmb3IgJ2l7fUB7fSciLmZvcm1hdChpZGVudGlmaWVyLCBi
cmFuY2ggb3IgJ0hFQUQnKSkKLQotICAgICAgICAgICAgIyBOZWdhdGl2ZSBpZGVudGlmaWVycyBh
cmUgYWN0dWFsbHkgY29tbWl0cyBvbiB0aGUgZGVmYXVsdCBicmFuY2gsIHdlIHdpbGwgbmVlZCB0
byByZS1jb21wdXRlIHRoZSBpZGVudGlmaWVyCi0gICAgICAgICAgICBpZiBpZGVudGlmaWVyIDwg
MCBhbmQgaXNfZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbign
SWxsZWdhbCBuZWdhdGl2ZSBpZGVudGlmaWVyIG9uIHRoZSBkZWZhdWx0IGJyYW5jaCcpCi0gICAg
ICAgICAgICBpZiBpZGVudGlmaWVyIDwgMDoKLSAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0g
Tm9uZQorICAgICAgICAgICAgaGFzaCA9IHNlbGYuY2FjaGUuaWRlbnRpZmllcl90b19oYXNoKCd7
fUB7fScuZm9ybWF0KGlkZW50aWZpZXIsIHBhcnNlZF9icmFuY2gpKQorICAgICAgICAgICAgaWYg
bm90IGhhc2g6CisgICAgICAgICAgICAgICAgYmFzZWxpbmUgPSBicmFuY2ggb3IgJ0hFQUQnCisg
ICAgICAgICAgICAgICAgaXNfZGVmYXVsdCA9IGJhc2VsaW5lID09IGRlZmF1bHRfYnJhbmNoCisg
ICAgICAgICAgICAgICAgaWYgYmFzZWxpbmUgPT0gJ0hFQUQnOgorICAgICAgICAgICAgICAgICAg
ICBpc19kZWZhdWx0ID0gZGVmYXVsdF9icmFuY2ggaW4gc2VsZi5fYnJhbmNoZXNfZm9yKGJhc2Vs
aW5lKQorCisgICAgICAgICAgICAgICAgaWYgaXNfZGVmYXVsdCBhbmQgcGFyc2VkX2JyYW5jaF9w
b2ludDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oJ0Nhbm5vdCBw
cm92aWRlIGEgYnJhbmNoIHBvaW50IGZvciBhIGNvbW1pdCBvbiB0aGUgZGVmYXVsdCBicmFuY2gn
KQorCisgICAgICAgICAgICAgICAgYmFzZV9jb3VudCA9IHNlbGYuX2NvbW1pdF9jb3VudChiYXNl
bGluZSBpZiBpc19kZWZhdWx0IGVsc2UgJ3t9Li57fScuZm9ybWF0KGRlZmF1bHRfYnJhbmNoLCBi
YXNlbGluZSkpCisKKyAgICAgICAgICAgICAgICBpZiBpZGVudGlmaWVyID4gYmFzZV9jb3VudDoK
KyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oJ0lkZW50aWZpZXIge30g
Y2Fubm90IGJlIGZvdW5kIG9uIHRoZSBzcGVjaWZpZWQgYnJhbmNoIGluIHRoZSBjdXJyZW50IGNo
ZWNrb3V0Jy5mb3JtYXQoaWRlbnRpZmllcikpCisgICAgICAgICAgICAgICAgbG9nID0gcnVuKAor
ICAgICAgICAgICAgICAgICAgICBbc2VsZi5leGVjdXRhYmxlKCksICdsb2cnLCAne31+e30nLmZv
cm1hdChicmFuY2ggb3IgJ0hFQUQnLCBiYXNlX2NvdW50IC0gaWRlbnRpZmllcildICsgbG9nX2Zv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgY3dkPXNlbGYucm9vdF9wYXRoLAorICAgICAgICAg
ICAgICAgICAgICBjYXB0dXJlX291dHB1dD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBlbmNv
ZGluZz0ndXRmLTgnLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBpZiBsb2cu
cmV0dXJuY29kZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oIkZh
aWxlZCB0byByZXRyaWV2ZSBjb21taXQgaW5mb3JtYXRpb24gZm9yICdpe31Ae30nIi5mb3JtYXQo
aWRlbnRpZmllciwgYnJhbmNoIG9yICdIRUFEJykpCisKKyAgICAgICAgICAgICAgICAjIE5lZ2F0
aXZlIGlkZW50aWZpZXJzIGFyZSBhY3R1YWxseSBjb21taXRzIG9uIHRoZSBkZWZhdWx0IGJyYW5j
aCwgd2Ugd2lsbCBuZWVkIHRvIHJlLWNvbXB1dGUgdGhlIGlkZW50aWZpZXIKKyAgICAgICAgICAg
ICAgICBpZiBpZGVudGlmaWVyIDwgMCBhbmQgaXNfZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAg
ICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oJ0lsbGVnYWwgbmVnYXRpdmUgaWRlbnRpZmllciBvbiB0
aGUgZGVmYXVsdCBicmFuY2gnKQorICAgICAgICAgICAgICAgIGlmIGlkZW50aWZpZXIgPCAwOgor
ICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gTm9uZQorCisgICAgICAgICAgICAjIFRo
ZSBjYWNoZSBjb252ZXJ0ZWQgdGhlIGlkZW50aWZpZXIgdG8gYSBoYXNoCisgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgIGxvZyA9IHJ1bigKKyAgICAgICAgICAgICAgICAgICAgW3Nl
bGYuZXhlY3V0YWJsZSgpLCAnbG9nJywgaGFzaF0gKyBsb2dfZm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICBjd2Q9c2VsZi5yb290X3BhdGgsCisgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVf
b3V0cHV0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPSd1dGYtOCcsCisgICAg
ICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGlmIGxvZy5yZXR1cm5jb2RlOgorICAgICAg
ICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbigiRmFpbGVkIHRvIHJldHJpZXZlIGNv
bW1pdCBpbmZvcm1hdGlvbiBmb3IgJ3t9JyIuZm9ybWF0KGhhc2gpKQogCiAgICAgICAgICMgRGV0
ZXJtaW5lIHRoZSBgZ2l0IGxvZ2Agb3V0cHV0IGZvciBhIGdpdmVuIGJyYW5jaCBvciB0YWcKICAg
ICAgICAgZWxpZiBicmFuY2ggb3IgdGFnOgpAQCAtMjUyLDE1ICs2MDIsMjMgQEAgY2xhc3MgR2l0
KFNjbSk6CiAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignSW52YWxpZCBjb21taXQg
aGFzaCBpbiBnaXQgbG9nJykKICAgICAgICAgaGFzaCA9IG1hdGNoLmdyb3VwKCdoYXNoJykKIAor
ICAgICAgICBicmFuY2hfcG9pbnQgPSBOb25lCisgICAgICAgIGlmIG5vdCBpZGVudGlmaWVyIGFu
ZCBpbmNsdWRlX2lkZW50aWZpZXI6CisgICAgICAgICAgICBjYWNoZWRfaWRlbnRpZmllciA9IHNl
bGYuY2FjaGUuaGFzaF90b19pZGVudGlmaWVyKGhhc2gpCisgICAgICAgICAgICBpZiBjYWNoZWRf
aWRlbnRpZmllcjoKKyAgICAgICAgICAgICAgICBicmFuY2hfcG9pbnQsIGlkZW50aWZpZXIsIGJy
YW5jaCA9IENvbW1pdC5fcGFyc2VfaWRlbnRpZmllcihjYWNoZWRfaWRlbnRpZmllcikKKwogICAg
ICAgICAjIEEgY29tbWl0IGlzIG9mdGVuIG9uIG11bHRpcGxlIGJyYW5jaGVzLCB0aGUgY2Fub25p
Y2FsIGJyYW5jaCBpcyB0aGUgb25lIHdpdGggdGhlIGhpZ2hlc3QgcHJpb3JpdHkKLSAgICAgICAg
YnJhbmNoID0gc2VsZi5wcmlvcml0aXplX2JyYW5jaGVzKHNlbGYuX2JyYW5jaGVzX2ZvcihoYXNo
KSkKKyAgICAgICAgaWYgYnJhbmNoICE9IGRlZmF1bHRfYnJhbmNoOgorICAgICAgICAgICAgYnJh
bmNoID0gc2VsZi5wcmlvcml0aXplX2JyYW5jaGVzKHNlbGYuX2JyYW5jaGVzX2ZvcihoYXNoKSkK
IAogICAgICAgICAjIENvbXB1dGUgdGhlIGlkZW50aWZpZXIgaWYgdGhlIGZ1bmN0aW9uIGRpZCBu
b3QgcmVjZWl2ZSBvbmUgYW5kIHdlIHdlcmUgYXNrZWQgdG8KICAgICAgICAgaWYgbm90IGlkZW50
aWZpZXIgYW5kIGluY2x1ZGVfaWRlbnRpZmllcjoKICAgICAgICAgICAgIGlkZW50aWZpZXIgPSBz
ZWxmLl9jb21taXRfY291bnQoaGFzaCBpZiBicmFuY2ggPT0gZGVmYXVsdF9icmFuY2ggZWxzZSAn
e30uLnt9Jy5mb3JtYXQoZGVmYXVsdF9icmFuY2gsIGhhc2gpKQogCiAgICAgICAgICMgT25seSBj
b21wdXRlIHRoZSBicmFuY2ggcG9pbnQgd2UncmUgb24gc29tZXRoaW5nIG90aGVyIHRoYW4gdGhl
IGRlZmF1bHQgYnJhbmNoCi0gICAgICAgIGJyYW5jaF9wb2ludCA9IE5vbmUgaWYgbm90IGluY2x1
ZGVfaWRlbnRpZmllciBvciBicmFuY2ggPT0gZGVmYXVsdF9icmFuY2ggZWxzZSBzZWxmLl9jb21t
aXRfY291bnQoaGFzaCkgLSBpZGVudGlmaWVyCisgICAgICAgIGlmIG5vdCBicmFuY2hfcG9pbnQg
YW5kIGluY2x1ZGVfaWRlbnRpZmllciBhbmQgYnJhbmNoICE9IGRlZmF1bHRfYnJhbmNoOgorICAg
ICAgICAgICAgYnJhbmNoX3BvaW50ID0gc2VsZi5fY29tbWl0X2NvdW50KGhhc2gpIC0gaWRlbnRp
ZmllcgogICAgICAgICBpZiBicmFuY2hfcG9pbnQgYW5kIHBhcnNlZF9icmFuY2hfcG9pbnQgYW5k
IGJyYW5jaF9wb2ludCAhPSBwYXJzZWRfYnJhbmNoX3BvaW50OgogICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcigiUHJvdmlkZWQgJ2JyYW5jaF9wb2ludCcgZG9lcyBub3QgbWF0Y2ggYnJhbmNo
IHBvaW50IG9mIHNwZWNpZmllZCBicmFuY2giKQogCkBAIC00ODAsMyArODM4LDcgQEAgY2xhc3Mg
R2l0KFNjbSk6CiAgICAgICAgIHJldHVybiBydW4oWwogICAgICAgICAgICAgc2VsZi5leGVjdXRh
YmxlKCksICdyZXNldCcsICdIRUFEJywgJy0taGFyZCcsCiAgICAgICAgIF0sIGN3ZD1zZWxmLnJv
b3RfcGF0aCkucmV0dXJuY29kZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHVwc3RyZWFtX3Jl
bW90ZShzZWxmKToKKyAgICAgICAgcmV0dXJuICdyZW1vdGVzL29yaWdpbicgICMgRklYTUU6IEZp
bmQgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMgKG1heWJlIHdlIHBhc3MgaW4gdGhpcyBhcmd1bWVu
dCk/CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJr
aXRzY21weS9tb2Nrcy9naXQtcmVwby5qc29uIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvZ2l0LXJlcG8uanNvbgppbmRleCA5ZGNmNzdkZDM0
OGQuLjgwMTEyOWRlNDJmNSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvZ2l0LXJlcG8uanNvbgorKysgYi9Ub29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9naXQtcmVwby5qc29u
CkBAIC0xNDYsNCArMTQ2LDQgQEAKICAgICAgICAgICAgICJyZXZpc2lvbiI6IDYKICAgICAgICAg
fQogICAgIF0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2Nh
bC9naXQucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21w
eS9tb2Nrcy9sb2NhbC9naXQucHkKaW5kZXggZGE5OGViYzI0MDc4Li45OGY5YzEyZDYyNzIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5
L21vY2tzL2xvY2FsL2dpdC5weQorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9naXQucHkKQEAgLTE5NCw2ICsxOTQsMjEgQEAg
bm90aGluZyB0byBjb21taXQsIHdvcmtpbmcgdHJlZSBjbGVhbgogICAgICAgICAgICAgICAgICAg
ICBzdGRvdXQ9J1xuJy5qb2luKHNvcnRlZChbJyogJyArIHNlbGYuYnJhbmNoXSArIGxpc3QoKHtk
ZWZhdWx0X2JyYW5jaH0gfCBzZXQoc2VsZi5jb21taXRzLmtleXMoKSkpIC0ge3NlbGYuYnJhbmNo
fSkpKSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG5yZW1vdGVzL29yaWdpbi9IRUFE
IC0+IG9yaWdpbi97fVxuJy5mb3JtYXQoZGVmYXVsdF9icmFuY2gpLAogICAgICAgICAgICAgICAg
ICksCisgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAorICAgICAgICAgICAg
ICAgIHNlbGYuZXhlY3V0YWJsZSwgJ2JyYW5jaCcsICctLXNob3ctY3VycmVudCcsCisgICAgICAg
ICAgICAgICAgY3dkPXNlbGYucGF0aCwKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRh
ICphcmdzLCAqKmt3YXJnczogbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24oCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybmNvZGU9MCwKKyAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PSd7fVxuJy5m
b3JtYXQoc2VsZi5icmFuY2gpIGlmIG5vdCBzZWxmLmRldGFjaGVkIGVsc2UgJycsCisgICAgICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBtb2Nrcy5TdWJwcm9jZXNz
LlJvdXRlKAorICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSwgJ2JyYW5jaCcsCisgICAg
ICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFt
YmRhICphcmdzLCAqKmt3YXJnczogbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24oCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybmNvZGU9MCwKKyAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PSdcbicu
am9pbihzb3J0ZWQoWycqICcgKyBzZWxmLmJyYW5jaF0gKyBsaXN0KCh7ZGVmYXVsdF9icmFuY2h9
IHwgc2V0KHNlbGYuY29tbWl0cy5rZXlzKCkpKSAtIHtzZWxmLmJyYW5jaH0pKSksCisgICAgICAg
ICAgICAgICAgKSwKICAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCiAgICAg
ICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLCAndGFnJywKICAgICAgICAgICAgICAgICBjd2Q9
c2VsZi5wYXRoLApAQCAtMjEzLDggKzIyOCwxNSBAQCBub3RoaW5nIHRvIGNvbW1pdCwgd29ya2lu
ZyB0cmVlIGNsZWFuCiAgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKICAgICAgICAgICAg
ICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogbW9ja3MuUHJvY2Vzc0NvbXBs
ZXRpb24oCiAgICAgICAgICAgICAgICAgICAgIHJldHVybmNvZGU9MCwKLSAgICAgICAgICAgICAg
ICAgICAgc3Rkb3V0PSd7fVxuJy5mb3JtYXQoc2VsZi5maW5kKGFyZ3NbMl0pLmhhc2gpLAotICAg
ICAgICAgICAgICAgICkgaWYgc2VsZi5maW5kKGFyZ3NbMl0pIGVsc2UgbW9ja3MuUHJvY2Vzc0Nv
bXBsZXRpb24ocmV0dXJuY29kZT0xMjgpCisgICAgICAgICAgICAgICAgICAgIHN0ZG91dD0ne31c
bicuZm9ybWF0KHNlbGYuZmluZChhcmdzWzJdLnNwbGl0KCcvJylbLTFdKS5oYXNoKSwKKyAgICAg
ICAgICAgICAgICApIGlmIHNlbGYuZmluZChhcmdzWzJdLnNwbGl0KCcvJylbLTFdKSBlbHNlIG1v
Y2tzLlByb2Nlc3NDb21wbGV0aW9uKHJldHVybmNvZGU9MTI4KQorICAgICAgICAgICAgKSwgbW9j
a3MuU3VicHJvY2Vzcy5Sb3V0ZSgKKyAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdt
ZXJnZS1iYXNlJywgcmUuY29tcGlsZSgnLisnKSwgcmUuY29tcGlsZSgnLisnKSwKKyAgICAgICAg
ICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAgICAgICAgIGdlbmVyYXRvcj1sYW1iZGEg
KmFyZ3MsICoqa3dhcmdzOiBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbigKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuY29kZT0wLAorICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9J3t9XG4nLmZv
cm1hdChzZWxmLmludGVyc2VjdGlvbihhcmdzWzNdKS5oYXNoKSwKKyAgICAgICAgICAgICAgICAp
IGlmIHNlbGYuaW50ZXJzZWN0aW9uKGFyZ3NbM10pIGVsc2UgbW9ja3MuUHJvY2Vzc0NvbXBsZXRp
b24ocmV0dXJuY29kZT0xMjgpCiAgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRl
KAogICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSwgJ2xvZycsIHJlLmNvbXBpbGUocicu
KycpLCAnLTEnLAogICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCkBAIC0yNDAsNiArMjYy
LDYzIEBAIG5vdGhpbmcgdG8gY29tbWl0LCB3b3JraW5nIHRyZWUgY2xlYW4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAg
ICAgICAgICkgaWYgc2VsZi5maW5kKGFyZ3NbMl0pIGVsc2UgbW9ja3MuUHJvY2Vzc0NvbXBsZXRp
b24ocmV0dXJuY29kZT0xMjgpLAorICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0
ZSgKKyAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdsb2cnLCByZS5jb21waWxlKHIn
LisnKSwKKyAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAgICAgICAgIGdl
bmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbigK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuY29kZT0wLAorICAgICAgICAgICAgICAgICAgICBz
dGRvdXQ9J1xuJy5qb2luKFsKKyAgICAgICAgICAgICAgICAgICAgICAgICdjb21taXQge2hhc2h9
XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAnQXV0aG9yOiAgICAge2F1dGhvcn0gPHtlbWFp
bH0+XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAnRGF0ZTogICAgICAge2RhdGV9XG4nCisg
ICAgICAgICAgICAgICAgICAgICAgICAnXG57bG9nfScuZm9ybWF0KAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGhhc2g9Y29tbWl0Lmhhc2gsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXV0aG9yPWNvbW1pdC5hdXRob3IubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbWFpbD1jb21taXQuYXV0aG9yLmVtYWlsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRhdGU9ZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcChjb21taXQudGltZXN0YW1wICsgdGltZS50
aW1lem9uZSkuc3RyZnRpbWUoJyVhICViICVkICVIOiVNOiVTICVZICswMDAwJyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbG9nPSdcbicuam9pbihbCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICgnICAgICcgKyBsaW5lKSBpZiBsaW5lIGVsc2UgJycgZm9yIGxpbmUgaW4g
Y29tbWl0Lm1lc3NhZ2Uuc3BsaXRsaW5lcygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XSArIChbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgZ2l0LXN2bi1pZDog
aHR0cHM6Ly9zdm4ue30vcmVwb3NpdG9yeS97fS90cnVua0B7fSAyNjhmNDVjYy1jZDA5LTA0MTAt
YWIzYy1kNTI2OTFiNGRiZmMnLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYucmVtb3RlLnNwbGl0KCdAJylbLTFdLnNwbGl0KCc6JylbMF0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0LnJldmlzaW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICldIGlmIGdpdF9zdm4gZWxzZSBbXSksCisgICAgICAgICAg
ICAgICAgICAgICAgICApKSBmb3IgY29tbWl0IGluIHNlbGYuY29tbWl0c19pbl9yYW5nZShOb25l
LCBhcmdzWzJdKQorICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoICAjIEZvciBjYWNoZSBnZW5lcmF0
aW9uCisgICAgICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLCAnbG9nJywgcmUuY29tcGlsZShy
Jy4rJyksICctLXJldmVyc2UnLAorICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCisgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yPWxhbWJkYSAqYXJncywgKiprd2FyZ3M6IG1vY2tzLlByb2Nl
c3NDb21wbGV0aW9uKAorICAgICAgICAgICAgICAgICAgICByZXR1cm5jb2RlPTAsCisgICAgICAg
ICAgICAgICAgICAgIHN0ZG91dD0nXG4nLmpvaW4oWworICAgICAgICAgICAgICAgICAgICAgICAg
J2NvbW1pdCB7aGFzaH1cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICdBdXRob3I6ICAgICB7
YXV0aG9yfSA8e2VtYWlsfT5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICdEYXRlOiAgICAg
ICB7ZGF0ZX1cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICdcbntsb2d9Jy5mb3JtYXQoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaD1jb21taXQuaGFzaCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhdXRob3I9Y29tbWl0LmF1dGhvci5uYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVtYWlsPWNvbW1pdC5hdXRob3IuZW1haWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0ZT1kYXRldGltZS51dGNmcm9tdGltZXN0YW1wKGNvbW1pdC50aW1l
c3RhbXAgKyB0aW1lLnRpbWV6b25lKS5zdHJmdGltZSgnJWEgJWIgJWQgJUg6JU06JVMgJVkgKzAw
MDAnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2c9J1xuJy5qb2luKFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKCcgICAgJyArIGxpbmUpIGlmIGxpbmUgZWxzZSAn
JyBmb3IgbGluZSBpbiBjb21taXQubWVzc2FnZS5zcGxpdGxpbmVzKCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBdICsgKFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAg
ICBnaXQtc3ZuLWlkOiBodHRwczovL3N2bi57fS9yZXBvc2l0b3J5L3t9L3RydW5rQHt9IDI2OGY0
NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYycuZm9ybWF0KAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZW1vdGUuc3BsaXQoJ0AnKVstMV0uc3BsaXQoJzon
KVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5h
bWUocGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXQucmV2
aXNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKV0gaWYgZ2l0X3N2biBlbHNlIFtd
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICkpIGZvciBjb21taXQgaW4KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXZlcnNlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGlzdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29tbWl0
c19pbl9yYW5nZShOb25lLCBhcmdzWzJdLnJlcGxhY2UoJ3JlbW90ZXMvb3JpZ2luLycsICcnKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICcuLicgbm90IGluIGFyZ3Nb
Ml0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29t
bWl0c19pbl9yYW5nZSgqYXJnc1syXS5yZXBsYWNlKCdyZW1vdGVzL29yaWdpbi8nLCAnJykuc3Bs
aXQoJy4uJykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAg
ICAgKQogICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKICAgICAgICAgICAg
ICAgICBzZWxmLmV4ZWN1dGFibGUsICdsb2cnLCAnLS1mb3JtYXQ9ZnVsbGVyJywgcmUuY29tcGls
ZShyJy4rXC5cLlwuLisnKSwKICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLApAQCAtMjYy
LDcgKzM0MSw3IEBAIG5vdGhpbmcgdG8gY29tbWl0LCB3b3JraW5nIHRyZWUgY2xlYW4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBnaXQtc3ZuLWlkOiBodHRwczovL3N2bi57
fS9yZXBvc2l0b3J5L3t9L3RydW5rQHt9IDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0
ZGJmYycuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5y
ZW1vdGUuc3BsaXQoJ0AnKVstMV0uc3BsaXQoJzonKVswXSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5hbWUocGF0aCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbW1pdC5yZXZpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbW1pdC5yZXZpc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICApXSBpZiBnaXRfc3ZuIGVsc2UgW10pLAogICAgICAgICAgICAgICAgICAgICAgICAgKSkg
Zm9yIGNvbW1pdCBpbiBzZWxmLmNvbW1pdHNfaW5fcmFuZ2UoYXJnc1szXS5zcGxpdCgnLi4uJylb
LTFdLCBhcmdzWzNdLnNwbGl0KCcuLi4nKVswXSkKICAgICAgICAgICAgICAgICAgICAgXSkKQEAg
LTMzMiw2ICs0MTEsMTMgQEAgbm90aGluZyB0byBjb21taXQsIHdvcmtpbmcgdHJlZSBjbGVhbgog
ICAgIGRlZiBicmFuY2goc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLmhlYWQuYnJhbmNoCiAK
KyAgICBkZWYgaW50ZXJzZWN0aW9uKHNlbGYsIGJyYW5jaCk6CisgICAgICAgIGJyYW5jaCA9IGJy
YW5jaC5zcGxpdCgnLycpWy0xXQorICAgICAgICBpZiBub3Qgc2VsZi5kZWZhdWx0X2JyYW5jaCBp
biBzZWxmLmNvbW1pdHMgb3Igbm90IGJyYW5jaCBpbiBzZWxmLmNvbW1pdHM6CisgICAgICAgICAg
ICByZXR1cm4gTm9uZQorCisgICAgICAgIHJldHVybiBzZWxmLmNvbW1pdHNbc2VsZi5kZWZhdWx0
X2JyYW5jaF1bc2VsZi5jb21taXRzW2JyYW5jaF1bMF0uYnJhbmNoX3BvaW50IC0gMV0KKwogICAg
IGRlZiBmaW5kKHNlbGYsIHNvbWV0aGluZyk6CiAgICAgICAgIGlmICd+JyBpbiBzb21ldGhpbmc6
CiAgICAgICAgICAgICBzcGxpdCA9IHNvbWV0aGluZy5zcGxpdCgnficpCkBAIC00OTMsMzIgKzU3
OSw0MSBAQCBub3RoaW5nIHRvIGNvbW1pdCwgd29ya2luZyB0cmVlIGNsZWFuCiAgICAgICAgICkK
IAogICAgIGRlZiBjb21taXRzX2luX3JhbmdlKHNlbGYsIGJlZ2luLCBlbmQpOgorICAgICAgICBl
bmQgPSBlbmQgYW5kIGVuZC5yZXBsYWNlKCdyZW1vdGVzL29yaWdpbicsICcnKQorICAgICAgICBi
ZWdpbiA9IGJlZ2luIGFuZCBiZWdpbi5yZXBsYWNlKCdyZW1vdGVzL29yaWdpbicsICcnKQorCiAg
ICAgICAgIGJyYW5jaGVzID0gW3NlbGYuZGVmYXVsdF9icmFuY2hdCi0gICAgICAgIGZvciBicmFu
Y2gsIGNvbW1pdHMgaW4gc2VsZi5jb21taXRzLml0ZW1zKCk6Ci0gICAgICAgICAgICBpZiBicmFu
Y2ggPT0gc2VsZi5kZWZhdWx0X2JyYW5jaDoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAg
ICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRzOgotICAgICAgICAgICAgICAgIGlmIGNvbW1p
dC5oYXNoID09IGVuZDoKLSAgICAgICAgICAgICAgICAgICAgYnJhbmNoZXMuaW5zZXJ0KDAsIGJy
YW5jaCkKKyAgICAgICAgaWYgZW5kIGluIHNlbGYuY29tbWl0cy5rZXlzKCkgYW5kIGVuZCAhPSBz
ZWxmLmRlZmF1bHRfYnJhbmNoOgorICAgICAgICAgICAgYnJhbmNoZXMuYXBwZW5kKGVuZCkKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIGZvciBicmFuY2gsIGNvbW1pdHMgaW4gc2VsZi5jb21t
aXRzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgaWYgYnJhbmNoID09IHNlbGYuZGVmYXVsdF9i
cmFuY2g6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgZm9y
IGNvbW1pdCBpbiBjb21taXRzOgorICAgICAgICAgICAgICAgICAgICBpZiBjb21taXQuaGFzaC5z
dGFydHN3aXRoKGVuZCk6CisgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2hlcy5pbnNlcnQo
MCwgYnJhbmNoKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAg
ICBpZiBsZW4oYnJhbmNoZXMpID4gMToKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAg
ICAgICAgIGlmIGxlbihicmFuY2hlcykgPiAxOgotICAgICAgICAgICAgICAgIGJyZWFrCiAKICAg
ICAgICAgaW5fcmFuZ2UgPSBGYWxzZQogICAgICAgICBwcmV2aW91cyA9IE5vbmUKICAgICAgICAg
Zm9yIGJyYW5jaCBpbiBicmFuY2hlczoKICAgICAgICAgICAgIGZvciBjb21taXQgaW4gcmV2ZXJz
ZWQoc2VsZi5jb21taXRzW2JyYW5jaF0pOgotICAgICAgICAgICAgICAgIGlmIGNvbW1pdC5oYXNo
ID09IGVuZDoKKyAgICAgICAgICAgICAgICBpZiBicmFuY2ggPT0gYmVnaW46CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgaWYgY29tbWl0Lmhhc2guc3RhcnRzd2l0
aChlbmQpIG9yIGVuZCA9PSBicmFuY2g6CiAgICAgICAgICAgICAgICAgICAgIGluX3JhbmdlID0g
VHJ1ZQogICAgICAgICAgICAgICAgIGlmIGluX3JhbmdlIGFuZCAobm90IHByZXZpb3VzIG9yIGNv
bW1pdC5oYXNoICE9IHByZXZpb3VzLmhhc2gpOgogICAgICAgICAgICAgICAgICAgICB5aWVsZCBj
b21taXQKICAgICAgICAgICAgICAgICBwcmV2aW91cyA9IGNvbW1pdAotICAgICAgICAgICAgICAg
IGlmIGNvbW1pdC5oYXNoID09IGJlZ2luOgorICAgICAgICAgICAgICAgIGlmIGJlZ2luIGFuZCBj
b21taXQuaGFzaC5zdGFydHN3aXRoKGJlZ2luKToKICAgICAgICAgICAgICAgICAgICAgaW5fcmFu
Z2UgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICBicmVhaworCiAgICAgICAgICAgICBpbl9y
YW5nZSA9IEZhbHNlCiAgICAgICAgICAgICBpZiBub3QgcHJldmlvdXMgb3IgYnJhbmNoID09IHNl
bGYuZGVmYXVsdF9icmFuY2g6CiAgICAgICAgICAgICAgICAgY29udGludWUKLQogICAgICAgICAg
ICAgZm9yIGNvbW1pdCBpbiByZXZlcnNlZChzZWxmLmNvbW1pdHNbc2VsZi5kZWZhdWx0X2JyYW5j
aF0pOgogICAgICAgICAgICAgICAgIGlmIHByZXZpb3VzLmJyYW5jaF9wb2ludCA9PSBjb21taXQu
aWRlbnRpZmllcjoKICAgICAgICAgICAgICAgICAgICAgZW5kID0gY29tbWl0Lmhhc2gKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Nj
bV9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvc2NtX2Jhc2UucHkKaW5kZXggZjFkNWRiOGQ5MDBiLi5hNTkxNDk5YTBmNDIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3NjbV9i
YXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNj
bXB5L3NjbV9iYXNlLnB5CkBAIC0zNyw3ICszNyw5IEBAIGNsYXNzIFNjbUJhc2Uob2JqZWN0KToK
ICAgICAjIHRoZSBmb2xsb3dpbmcgaWRpb21zIHNlZW0gY29tbW9uIGVub3VnaCB0byBiZSBzaGFy
ZWQuCiAgICAgREVWX0JSQU5DSEVTID0gcmUuY29tcGlsZShyJy4qWyhlbmcpKGRldikoYnVnKV0v
LisnKQogICAgIFBST0RfQlJBTkNIRVMgPSByZS5jb21waWxlKHInXFMrLVtcZCtcLl0rLWJyYW5j
aCcpCi0gICAgR0lUX1NWTl9SRVZJU0lPTiA9IHJlLmNvbXBpbGUocideZ2l0LXN2bi1pZDogXFMr
OlwvXC8uK0AoP1A8cmV2aXNpb24+XGQrKSAuKy0uKy0uKy0uKycsIGZsYWdzPXJlLk1VTFRJTElO
RSkKKyAgICBHSVRfU1ZOX1JFVklTSU9OID0gcmUuY29tcGlsZShyJ14oPzogICAgKT9naXQtc3Zu
LWlkOiBcUys6XC9cLy4rQCg/UDxyZXZpc2lvbj5cZCspIC4rLS4rLS4rLS4rJywgZmxhZ3M9cmUu
TVVMVElMSU5FKQorICAgIENPTU1JVF9GUk9NX0xPRyA9IHJlLmNvbXBpbGUocideY29tbWl0ICg/
UDxjb21taXQ+W2EtekEtWjAtOV17NDB9KScpCisKICAgICBERUZBVUxUX0JSQU5DSEVTID0gWydt
YWluJywgJ21hc3RlcicsICd0cnVuayddCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZGV2X2Jy
YW5jaGVzPU5vbmUsIHByb2RfYnJhbmNoZXM9Tm9uZSwgY29udHJpYnV0b3JzPU5vbmUsIGlkPU5v
bmUpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvdGVzdC9jYW5vbmljYWxpemVfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2Nhbm9uaWNhbGl6ZV91bml0dGVz
dC5weQppbmRleCA3NzlkZDhhZjM3YjUuLmYxMWZhZjBjOTk3MiAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9jYW5vbmljYWxp
emVfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkv
d2Via2l0c2NtcHkvdGVzdC9jYW5vbmljYWxpemVfdW5pdHRlc3QucHkKQEAgLTIwLDYgKzIwLDkg
QEAKICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAoraW1wb3J0IG9zCitp
bXBvcnQgc2h1dGlsCitpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdl
YmtpdGNvcmVweSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQpAQCAtMjgsNyArMzEsMTQgQEAgZnJvbSB3
ZWJraXRzY21weSBpbXBvcnQgcHJvZ3JhbSwgbW9ja3MsIGxvY2FsLCBDb21taXQsIENvbnRyaWJ1
dG9yCiAKIAogY2xhc3MgVGVzdENhbm9uaWNhbGl6ZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAg
cGF0aCA9ICcvbW9jay9yZXBvc2l0b3J5JworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAg
c2VsZi5jb250YWluZXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKyAgICAgICAgc2VsZi5wYXRoID0g
b3MucGF0aC5qb2luKHNlbGYuY29udGFpbmVyLCAncmVwb3NpdG9yeScpCisgICAgICAgIG9zLm1h
a2VkaXJzKHNlbGYucGF0aCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgaWYg
b3MucGF0aC5leGlzdHMoc2VsZi5jb250YWluZXIpIGFuZCBzZWxmLmNvbnRhaW5lci5zdGFydHN3
aXRoKCcvdG1wJyk6CisgICAgICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuY29udGFpbmVyKQog
CiAgICAgZGVmIHRlc3RfaW52YWxpZChzZWxmKToKICAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJl
KCksIG1vY2tzLmxvY2FsLkdpdCgpLCBtb2Nrcy5sb2NhbC5Tdm4oc2VsZi5wYXRoKSwgTW9ja1Rp
bWU6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJr
aXRzY21weS90ZXN0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9jaGVja291dF91bml0dGVzdC5weQppbmRl
eCBjNTg1ODAyNThkNWMuLjEwM2NiMDI2OTBlNiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9jaGVja291dF91bml0dGVzdC5w
eQorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90
ZXN0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5CkBAIC0yMCw2ICsyMCw5IEBACiAjIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKK2ltcG9ydCBvcworaW1wb3J0IHNodXRpbAoraW1w
b3J0IHRlbXBmaWxlCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0
IE91dHB1dENhcHR1cmUKQEAgLTI4LDcgKzMxLDEzIEBAIGZyb20gd2Via2l0c2NtcHkgaW1wb3J0
IHByb2dyYW0sIG1vY2tzLCBsb2NhbAogCiAKIGNsYXNzIFRlc3RDaGVja291dCh1bml0dGVzdC5U
ZXN0Q2FzZSk6Ci0gICAgcGF0aCA9ICcvbW9jay9yZXBvc2l0b3J5JworICAgIGRlZiBzZXRVcChz
ZWxmKToKKyAgICAgICAgc2VsZi5jb250YWluZXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKyAgICAg
ICAgc2VsZi5wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuY29udGFpbmVyLCAncmVwb3NpdG9yeScp
CisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNl
bGYuY29udGFpbmVyKSBhbmQgc2VsZi5jb250YWluZXIuc3RhcnRzd2l0aCgnL3RtcCcpOgorICAg
ICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmNvbnRhaW5lcikKIAogICAgIGRlZiB0ZXN0X2No
ZWNrb3V0X2dpdChzZWxmKToKICAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCksIG1vY2tzLmxv
Y2FsLkdpdChzZWxmLnBhdGgpLCBtb2Nrcy5sb2NhbC5Tdm4oKSwgTW9ja1RpbWU6CmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0
L2ZpbmRfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93
ZWJraXRzY21weS90ZXN0L2ZpbmRfdW5pdHRlc3QucHkKaW5kZXggYjZmNTkxODkxZmZmLi5lMWUw
YWRjMmE1ZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L3Rlc3QvZmluZF91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2ZpbmRfdW5pdHRlc3QucHkKQEAg
LTIyLDYgKzIyLDcgQEAKIAogaW1wb3J0IGpzb24KIGltcG9ydCBzaHV0aWwKK2ltcG9ydCBvcwog
aW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdW5pdHRlc3QKIApAQCAtMzIsNyArMzMsMTMgQEAgZnJv
bSB3ZWJraXRzY21weSBpbXBvcnQgcHJvZ3JhbSwgbW9ja3MKIAogCiBjbGFzcyBUZXN0RmluZCh1
bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgcGF0aCA9ICcvbW9jay9yZXBvc2l0b3J5JworICAgIGRl
ZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5jb250YWluZXIgPSB0ZW1wZmlsZS5ta2R0ZW1w
KCkKKyAgICAgICAgc2VsZi5wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuY29udGFpbmVyLCAncmVw
b3NpdG9yeScpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGlmIG9zLnBhdGgu
ZXhpc3RzKHNlbGYuY29udGFpbmVyKSBhbmQgc2VsZi5jb250YWluZXIuc3RhcnRzd2l0aCgnL3Rt
cCcpOgorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmNvbnRhaW5lcikKIAogICAgIGRl
ZiB0ZXN0X2Jhc2ljX2dpdChzZWxmKToKICAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMg
Y2FwdHVyZWQsIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgpLCBtb2Nrcy5sb2NhbC5Tdm4oKSwg
TW9ja1RpbWU6CkBAIC0yMzYsNyArMjQzLDE3IEBAIElkZW50aWZpZXI6IDNAdHJ1bmsKIAogCiBj
bGFzcyBUZXN0SW5mbyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgcGF0aCA9ICcvbW9jay9yZXBv
c2l0b3J5JworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5jb250YWluZXIgPSB0
ZW1wZmlsZS5ta2R0ZW1wKCkKKyAgICAgICAgc2VsZi5wYXRoID0gb3MucGF0aC5qb2luKHNlbGYu
Y29udGFpbmVyLCAncmVwb3NpdG9yeScpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAg
ICAgIGlmIG9zLnBhdGguZXhpc3RzKHNlbGYuY29udGFpbmVyKSBhbmQgc2VsZi5jb250YWluZXIu
c3RhcnRzd2l0aCgnL3RtcCcpOgorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmNvbnRh
aW5lcikKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgaWYgb3MucGF0aC5leGlz
dHMoc2VsZi5wYXRoKSBhbmQgc2VsZi5wYXRoLnN0YXJ0c3dpdGgoJy90bXAnKToKKyAgICAgICAg
ICAgIHNodXRpbC5ybXRyZWUoc2VsZi5wYXRoKQogCiAgICAgZGVmIHRlc3RfYmFzaWNfZ2l0KHNl
bGYpOgogICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZCwgbW9ja3MubG9j
YWwuR2l0KHNlbGYucGF0aCksIG1vY2tzLmxvY2FsLlN2bigpLCBNb2NrVGltZToKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3Qv
Z2l0X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvdGVzdC9naXRfdW5pdHRlc3QucHkKaW5kZXggYmM3YjYzOTI5YjRhLi5kODVlYWMz
NDE5YTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dl
YmtpdHNjbXB5L3Rlc3QvZ2l0X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZ2l0X3VuaXR0ZXN0LnB5CkBAIC0zMiw3
ICszMiwxMyBAQCBmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBDb21taXQsIGxvY2FsLCBtb2Nrcywg
cmVtb3RlCiAKIAogY2xhc3MgVGVzdEdpdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgcGF0aCA9
ICcvbW9jay9yZXBvc2l0b3J5JworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5j
b250YWluZXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKyAgICAgICAgc2VsZi5wYXRoID0gb3MucGF0
aC5qb2luKHNlbGYuY29udGFpbmVyLCAncmVwb3NpdG9yeScpCisKKyAgICBkZWYgdGVhckRvd24o
c2VsZik6CisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNlbGYucGF0aCkgYW5kIHNlbGYucGF0
aC5zdGFydHN3aXRoKCcvdG1wJyk6CisgICAgICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYucGF0
aCkKIAogICAgIGRlZiB0ZXN0X2RldGVjdGlvbihzZWxmKToKICAgICAgICAgd2l0aCBPdXRwdXRD
YXB0dXJlKCksIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgpLCBtb2Nrcy5sb2NhbC5Tdm4oKToK
QEAgLTEwMyw4ICsxMDksOCBAQCBjbGFzcyBUZXN0R2l0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICAgICAgICAgICAgICBzZWxmLmFzc2VydERpY3RFcXVhbCgKICAgICAgICAgICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICAgICAgICAgJ1BhdGgnOiAnLicsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAnUmVwb3NpdG9yeSBSb290JzogJ2dpdEBleGFtcGxlLm9yZzovbW9jay9yZXBvc2l0
b3J5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICdVUkwnOiAnZ2l0QGV4YW1wbGUub3JnOi9t
b2NrL3JlcG9zaXRvcnkvbWFpbicsCisgICAgICAgICAgICAgICAgICAgICAgICAnUmVwb3NpdG9y
eSBSb290JzogJ2dpdEBleGFtcGxlLm9yZzp7fScuZm9ybWF0KHNlbGYucGF0aCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAnVVJMJzogJ2dpdEBleGFtcGxlLm9yZzp7fS9tYWluJy5mb3JtYXQo
c2VsZi5wYXRoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdSZXZpc2lvbic6ICc5JywKICAg
ICAgICAgICAgICAgICAgICAgICAgICdOb2RlIEtpbmQnOiAnZGlyZWN0b3J5JywKICAgICAgICAg
ICAgICAgICAgICAgICAgICdTY2hlZHVsZSc6ICdub3JtYWwnLApAQCAtMzA1LDYgKzMxMSwzNSBA
QCBjbGFzcyBUZXN0R2l0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgICAgICAgICAg
Z2l0LmNvbW1pdChoYXNoPSc5YjgzMTFmMicpLAogICAgICAgICAgICAgICAgIF0pLCBDb21taXQu
RW5jb2RlcigpLmRlZmF1bHQobGlzdChnaXQuY29tbWl0cyhiZWdpbj1kaWN0KGFyZ3VtZW50PSc5
YjgzMTFmMicpLCBlbmQ9ZGljdChhcmd1bWVudD0nNjIxNjUyYWQnKSkpKSkKIAorICAgIGRlZiB0
ZXN0X2NhY2hlKHNlbGYpOgorICAgICAgICBmb3IgbW9jayBpbiBbbW9ja3MubG9jYWwuR2l0KHNl
bGYucGF0aCksIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgsIGdpdF9zdm49VHJ1ZSldOgorICAg
ICAgICAgICAgd2l0aCBtb2NrLCBPdXRwdXRDYXB0dXJlKCk6CisgICAgICAgICAgICAgICAgcmVw
byA9IGxvY2FsLkdpdChzZWxmLnBhdGgpCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHJlcG8uY2FjaGUuaWRlbnRpZmllcl90b19oYXNoKCcxQG1haW4nKSwgJzliODMxMWYyNWE3
N2JhMTQ5MjNkOWQ1YTY1MzIxMDNmNTRhYmVmY2InKQorICAgICAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocmVwby5jYWNoZS5oYXNoX3RvX2lkZW50aWZpZXIoJ2Q4YmNlMjZmYTY1YycpLCAn
NUBtYWluJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG8uY2FjaGUuaWRl
bnRpZmllcl90b19oYXNoKCcyLjNAYnJhbmNoLWInKSwgJzc5MDcyNWE2ZDc5ZTI4ZGIyZWNkZGUy
OTU0OGQyMjYyYzBiZDA1OWQnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVw
by5jYWNoZS5pZGVudGlmaWVyX3RvX2hhc2goJzIuMUBicmFuY2gtYScpLCAnYTMwY2U4NDk0YmYx
YWMyODA3YTY5ODQ0ZjcyNmJlNGE5ODQzY2E1NScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChyZXBvLmNhY2hlLmhhc2hfdG9faWRlbnRpZmllcignYTMwY2U4NDk0YmYxJyksICcy
LjFAYnJhbmNoLWEnKQorCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvLmNh
Y2hlLmhhc2hfdG9faWRlbnRpZmllcignYmFkYzBkZDFmJyksIE5vbmUpCisgICAgICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvLmNhY2hlLmlkZW50aWZpZXJfdG9faGFzaCgnNkBtYWlu
JyksIE5vbmUpCisKKworICAgIGRlZiB0ZXN0X3JldmlzaW9uX2NhY2hlKHNlbGYpOgorICAgICAg
ICB3aXRoIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgsIGdpdF9zdm49VHJ1ZSksIE91dHB1dENh
cHR1cmUoKToKKyAgICAgICAgICAgIHJlcG8gPSBsb2NhbC5HaXQoc2VsZi5wYXRoKQorCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG8uY2FjaGUuaWRlbnRpZmllcl90b19yZXZpc2lv
bignMUBtYWluJyksICdyMScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG8uY2Fj
aGUucmV2aXNpb25fdG9faWRlbnRpZmllcigncjknKSwgJzVAbWFpbicpCisKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocmVwby5jYWNoZS5yZXZpc2lvbl90b19oYXNoKCdyOCcpLCAnYmFl
NWQxZTkwOTk5ZDRmOTE2YThhMTU4MTBjY2ZhNDNmMzdhMmZkNicpCisKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocmVwby5jYWNoZS5yZXZpc2lvbl90b19pZGVudGlmaWVyKCdyMTAwJyks
IE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG8uY2FjaGUuaGFzaF90b19y
ZXZpc2lvbignYmFkYzBkZDFmJyksIE5vbmUpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocmVwby5jYWNoZS5pZGVudGlmaWVyX3RvX3JldmlzaW9uKCc2QG1haW4nKSwgTm9uZSkKKwog
CiBjbGFzcyBUZXN0R2l0SHViKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICByZW1vdGUgPSAnaHR0
cHM6Ly9naXRodWIuZXhhbXBsZS5jb20vV2ViS2l0L1dlYktpdCcKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zdm4ucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc3ZuLnB5CmluZGV4IGUzOWQzZGY1ZGY5
NC4uMzFlNDExMzNkMTkwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9zY20vc3ZuLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L3NjbS9zdm4ucHkKQEAgLTk5LDE3ICs5OSwxNSBAQCBjbGFzcyBTVk4oU0NNLCBT
Vk5SZXBvc2l0b3J5KToKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBpbl93b3JraW5nX2Rp
cmVjdG9yeShjbHMsIHBhdGgsIGV4ZWN1dGl2ZT1Ob25lKToKLSAgICAgICAgaWYgb3MucGF0aC5p
c2Rpcihvcy5wYXRoLmpvaW4ocGF0aCwgJy5zdm4nKSk6Ci0gICAgICAgICAgICAjIFRoaXMgaXMg
YSBmYXN0IHNob3J0Y3V0IGZvciBzdm4gaW5mbyB0aGF0IGlzIHVzdWFsbHkgY29ycmVjdCBmb3Ig
U1ZOIDwgMS43LAotICAgICAgICAgICAgIyBidXQgZG9lc24ndCB3b3JrIGZvciBTVk4gPj0gMS43
LgotICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIo
b3MucGF0aC5qb2luKHBhdGgsICcuc3ZuJykpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAK
ICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZXhlY3V0aXZlID0gZXhlY3V0aXZlIG9yIEV4ZWN1
dGl2ZSgpCiAgICAgICAgICAgICBzdm5faW5mb19hcmdzID0gW2Nscy5leGVjdXRhYmxlX25hbWUs
ICdpbmZvJ10KICAgICAgICAgICAgIGV4aXRfY29kZSA9IGV4ZWN1dGl2ZS5ydW5fY29tbWFuZChz
dm5faW5mb19hcmdzLCBjd2Q9cGF0aCwgcmV0dXJuX2V4aXRfY29kZT1UcnVlKQogICAgICAgICAg
ICAgcmV0dXJuIChleGl0X2NvZGUgPT0gMCkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAg
ICAgIGV4Y2VwdCAoT1NFcnJvciwgU2NyaXB0RXJyb3IpOgogICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCiAKICAgICBkZWYgZmluZF91dWlkKHNlbGYsIHBhdGgpOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432420</attachid>
            <date>2021-06-28 14:29:41 -0700</date>
            <delta_ts>2021-06-29 14:12:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225616-20210628142939.patch</filename>
            <type>text/plain</type>
            <size>35825</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3OTM0NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM3IEBACisyMDIxLTA2LTI4ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0c2NtcHldIENhY2hlIGlkZW50aWZpZXJzIGluIEdpdCBjaGVj
a291dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NTYxNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzc3ODkyMzA+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0lQLgorCisgICAgICAgICogU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5OgorICAgICAg
ICAoR2l0LkNhY2hlKTogQ2xhc3MgaG9sZGluZyBhIGNhY2hlIGFsbG93aW5nIHF1aWNrIG1hcHBp
bmcgYmV0d2VlbiBoYXNoZXMsIGlkZW50aWZpZXJzIGFuZCByZXZpc2lvbnMuCisgICAgICAgIChH
aXQuQ2FjaGUuX19pbml0X18pOiBMb2FkIGNhY2hlIGZyb20ganNvbiBmaWxlIG9uIGRpc2suCisg
ICAgICAgIChHaXQuQ2FjaGUucGF0aCk6IFBhdGggdG8gbG9jYXRpb24gb2YgY2FjaGUgb24gZGlz
ay4KKyAgICAgICAgKEdpdC5DYWNoZS5fZmlsbCk6IFBvcHVsYXRlIHJldmlzaW9uIGFuZCBoYXNo
IHRvIGlkZW50aWZpZXIgZGljdGlvbmFyaWVzLgorICAgICAgICAoR2l0LkNhY2hlLnBvcHVsYXRl
KTogUGFyc2UgZ2l0LWxvZyBhbmQgcG9wdWxhdGUgY2FjaGUuCisgICAgICAgIChHaXQuQ2FjaGUu
aGFzaCk6IEdpdmVuIGFuIGlkZW50aWZpZXIgb3IgcmV2aXNpb24sIGZpbmQgdGhlIGhhc2guCisg
ICAgICAgIChHaXQuQ2FjaGUucmV2aXNpb24pOiBHaXZlbiBhbiBpZGVudGlmaWVyIG9yIGhhc2gs
IGZpbmQgdGhlIHJldmlzaW9uLgorICAgICAgICAoR2l0LkNhY2hlLmlkZW50aWZpZXIpOiBHaXZl
biBhIGhhc2ggb3IgcmV2aXNpb24sIGRldGVybWluZSB0aGUgaWRlbnRpZmllci4KKyAgICAgICAg
KEdpdC5fX2luaXRfXyk6IEluc3RhbnRpYXRlIGNhY2hlLgorICAgICAgICAoR2l0LmNvbW1pdCk6
IENoZWNrIGNhY2hlIGJlZm9yZSBydW5uaW5nIGV4cGVuc2l2ZSBjb21tYW5kcy4KKyAgICAgICAg
KiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9n
aXQucHk6IEFkZCBgZ2l0IGxvZ2AgbW9jay4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2dpdF91bml0dGVzdC5weToKKyAgICAgICAgKFRl
c3RHaXQudGVzdF90YWcpOiBTdXJwcmVzcyBsb2dnaW5nLgorICAgICAgICAoVGVzdEdpdC50ZXN0
X2NoZWNrb3V0KTogRGl0dG8uCisgICAgICAgIChUZXN0R2l0LnRlc3Rfbm9fbG9nKTogRGl0dG8u
CisgICAgICAgIChUZXN0R2l0LnRlc3Rfb3JkZXIpOiBEaXR0by4KKyAgICAgICAgKHRlc3RfY2Fj
aGUpOiBWZXJpZnkgaWRlbnRpZmllciBjYWNoZS4KKyAgICAgICAgKHRlc3RfcmV2aXNpb25fY2Fj
aGUpOiBWZXJpZnkgcmV2aXNpb24gY2FjaGUuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfcnVuX3Jlc3VsdHNfdW5pdHRlc3QucHk6CisgICAgICAg
IChTdW1tYXJpemVkUmVzdWx0c1Rlc3QudGVzdF9zdm5fcmV2aXNpb25fZ2l0KTogU3VycHJlc3Mg
bG9nZ2luZy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZV91bml0dGVzdC5w
eToKKyAgICAgICAgKFBvcnRUZXN0LnRlc3RfY29tbWl0c19mb3JfdXBsb2FkX2dpdF9zdm4pOiBT
dXJwcmVzcyBsb2dnaW5nLgorCiAyMDIxLTA2LTI4ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJk
QGFwcGxlLmNvbT4KIAogICAgICAgICBbd2Via2l0Y29yZXB5XSBBZGQgdGVzdCBzdWl0ZSB3aXRo
IHRlbXAgZGlyZWN0b3J5CkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3Jl
cHkvd2Via2l0Y29yZXB5L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkJKHJldmlzaW9u
IDI3OTM0NykKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRj
b3JlcHkvX19pbml0X18ucHkJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAgZnJvbSB3
ZWJraXRjb3JlcHkuc3VicHJvY2Vzc191dGlscyBpbXBvcgogZnJvbSB3ZWJraXRjb3JlcHkub3V0
cHV0X2NhcHR1cmUgaW1wb3J0IExvZ2dlckNhcHR1cmUsIE91dHB1dENhcHR1cmUsIE91dHB1dER1
cGxpY2F0ZQogZnJvbSB3ZWJraXRjb3JlcHkudGFza19wb29sIGltcG9ydCBUYXNrUG9vbAogZnJv
bSB3ZWJraXRjb3JlcHkuY3JlZGVudGlhbHMgaW1wb3J0IGNyZWRlbnRpYWxzCitmcm9tIHdlYmtp
dGNvcmVweS5uZXN0ZWRfZnV6enlfZGljdCBpbXBvcnQgTmVzdGVkRnV6enlEaWN0CiAKIHZlcnNp
b24gPSBWZXJzaW9uKDAsIDYsIDApCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbmVzdGVkX2Z1enp5X2RpY3QucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9uZXN0
ZWRfZnV6enlfZGljdC5weQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L25lc3RlZF9mdXp6eV9kaWN0LnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTAwIEBACisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK2Zyb20gd2Via2l0Y29yZXB5LnN0cmluZ191dGlscyBpbXBvcnQgdW5pY29kZQorCisK
K2NsYXNzIE5lc3RlZEZ1enp5RGljdChvYmplY3QpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRl
ZiBhc3NlcnRfdmFsaWRfa2V5KGNscywga2V5KToKKyAgICAgICAgaWYgbm90IGFueSgoaXNpbnN0
YW5jZShrZXksIHN0ciksIGlzaW5zdGFuY2Uoa2V5LCB1bmljb2RlKSwgaXNpbnN0YW5jZShrZXks
IGJ5dGVzKSkpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJ3t9JyBpcyBub3QgYSB2
YWxpZCBrZXkgZm9yIGEgTmVzdGVkRGljdCIuZm9ybWF0KHR5cGUoa2V5KSkpCisKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgcHJpbWFyeV9zaXplPU5vbmUsICoqa3dhcmdzKToKKyAgICAgICAgc2Vs
Zi5wcmltYXJ5X3NpemUgPSBpbnQocHJpbWFyeV9zaXplIG9yIDQpCisgICAgICAgIHNlbGYuX2Rh
dGEgPSBkaWN0KCkKKyAgICAgICAgc2VsZi51cGRhdGUoZGljdCgqKmt3YXJncykpCisKKyAgICBk
ZWYgX19nZXRpdGVtX18oc2VsZiwga2V5bmFtZSk6CisgICAgICAgIHNlbGYuYXNzZXJ0X3ZhbGlk
X2tleShrZXluYW1lKQorICAgICAgICBrZXlfYSwga2V5X2IgPSBrZXluYW1lWzpzZWxmLnByaW1h
cnlfc2l6ZV0sIGtleW5hbWVbc2VsZi5wcmltYXJ5X3NpemU6XQorICAgICAgICB2YWx1ZSA9IE5v
bmUKKyAgICAgICAgZm91bmQgPSBGYWxzZQorICAgICAgICBmb3Iga2V5LCByZXN1bHQgaW4gc2Vs
Zi5fZGF0YS5nZXQoa2V5X2EsIGRpY3QoKSkuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIGtleS5z
dGFydHN3aXRoKGtleV9iKToKKyAgICAgICAgICAgICAgICBpZiBmb3VuZDoKKyAgICAgICAgICAg
ICAgICAgICAgcmFpc2UgS2V5RXJyb3IoIk11bHRpcGxlIHZhbHVlcyBtYXRjaCAne30nIi5mb3Jt
YXQoa2V5bmFtZSkpCisgICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlCisgICAgICAgICAgICAg
ICAgdmFsdWUgPSByZXN1bHQKKyAgICAgICAgaWYgZm91bmQ6CisgICAgICAgICAgICByZXR1cm4g
dmFsdWUKKyAgICAgICAgcmFpc2UgS2V5RXJyb3Ioa2V5bmFtZSkKKworICAgIGRlZiBnZXQoc2Vs
Ziwga2V5bmFtZSwgdmFsdWU9Tm9uZSk6CisgICAgICAgIHJldHVybiBzZWxmLmdldGl0ZW0oa2V5
bmFtZSwgdmFsdWUpWzFdCisKKyAgICBkZWYgZ2V0aXRlbShzZWxmLCBrZXluYW1lLCB2YWx1ZT1O
b25lKToKKyAgICAgICAgc2VsZi5hc3NlcnRfdmFsaWRfa2V5KGtleW5hbWUpCisgICAgICAgIGtl
eV9hLCBrZXlfYiA9IGtleW5hbWVbOnNlbGYucHJpbWFyeV9zaXplXSwga2V5bmFtZVtzZWxmLnBy
aW1hcnlfc2l6ZTpdCisgICAgICAgIGZvdW5kID0gTm9uZQorICAgICAgICBmb3Iga2V5LCByZXN1
bHQgaW4gc2VsZi5fZGF0YS5nZXQoa2V5X2EsIGRpY3QoKSkuaXRlbXMoKToKKyAgICAgICAgICAg
IGlmIGtleS5zdGFydHN3aXRoKGtleV9iKToKKyAgICAgICAgICAgICAgICBpZiBmb3VuZDoKKyAg
ICAgICAgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoIk11bHRpcGxlIHZhbHVlcyBtYXRjaCAn
e30nIi5mb3JtYXQoa2V5bmFtZSkpCisgICAgICAgICAgICAgICAgZm91bmQgPSBrZXlfYSArIGtl
eQorICAgICAgICAgICAgICAgIHZhbHVlID0gcmVzdWx0CisgICAgICAgIHJldHVybiBmb3VuZCwg
dmFsdWUKKworICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKToKKyAgICAgICAg
c2VsZi5hc3NlcnRfdmFsaWRfa2V5KGtleSkKKyAgICAgICAgc2VsZi5fZGF0YS5zZXRkZWZhdWx0
KGtleVs6c2VsZi5wcmltYXJ5X3NpemVdLCBkaWN0KCkpW2tleVtzZWxmLnByaW1hcnlfc2l6ZTpd
XSA9IHZhbHVlCisKKyAgICBkZWYgdXBkYXRlKHNlbGYsIGRhdGEpOgorICAgICAgICBmb3Iga2V5
LCB2YWx1ZSBpbiBkYXRhLml0ZW1zKCk6CisgICAgICAgICAgICBzZWxmW2tleV0gPSB2YWx1ZQor
CisgICAgZGVmIGtleXMoc2VsZik6CisgICAgICAgIGZvciBrZXlfYSwgdmFsdWVzIGluIHNlbGYu
X2RhdGEuaXRlbXMoKToKKyAgICAgICAgICAgIGZvciBrZXlfYiBpbiB2YWx1ZXMua2V5cygpOgor
ICAgICAgICAgICAgICAgIHlpZWxkIGtleV9hICsga2V5X2IKKworICAgIGRlZiB2YWx1ZXMoc2Vs
Zik6CisgICAgICAgIGZvciB2YWx1ZXMgaW4gc2VsZi5fZGF0YS52YWx1ZXMoKToKKyAgICAgICAg
ICAgIGZvciB2YWx1ZSBpbiB2YWx1ZXMudmFsdWVzKCk6CisgICAgICAgICAgICAgICAgeWllbGQg
dmFsdWUKKworICAgIGRlZiBpdGVtcyhzZWxmKToKKyAgICAgICAgZm9yIGtleV9hLCB2YWx1ZXMg
aW4gc2VsZi5fZGF0YS5pdGVtcygpOgorICAgICAgICAgICAgZm9yIGtleV9iLCB2YWx1ZSBpbiB2
YWx1ZXMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICB5aWVsZCBrZXlfYSArIGtleV9iLCB2YWx1
ZQorCisgICAgZGVmIGRpY3Qoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IGRpY3QoKQorICAgICAg
ICBmb3Iga2V5LCB2YWx1ZSBpbiBzZWxmLml0ZW1zKCk6CisgICAgICAgICAgICByZXN1bHRba2V5
XSA9IHZhbHVlCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBfX3JlcHJfXyhzZWxm
KToKKyAgICAgICAgcmV0dXJuIHNlbGYuZGljdCgpLl9fcmVwcl9fKCkKKworICAgIGRlZiBfX3N0
cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5kaWN0KCkuX19zdHJfXygpCkluZGV4OiBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlc3RzL25l
c3RlZF9mdXp6eV9kaWN0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvbmVzdGVkX2Z1enp5X2Rp
Y3RfdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXN0cy9uZXN0ZWRfZnV6enlfZGljdF91bml0dGVz
dC5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc5IEBACisjIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRjb3JlcHkg
aW1wb3J0IE5lc3RlZEZ1enp5RGljdAorCisKK2NsYXNzIFRlc3ROZXN0ZWRGdXp6eURpY3QodW5p
dHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yKHNlbGYpOgorICAgICAg
ICBkID0gTmVzdGVkRnV6enlEaWN0KHZhbHVlYT0xLCB2YWx1ZWI9Miwgb3RoZXI9MykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQobGlzdChkLnZhbHVlcygpKSksIHNvcnRlZCgoMSwg
MiwgMykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChsaXN0KGQua2V5cygpKSks
IHNvcnRlZCgoJ3ZhbHVlYScsICd2YWx1ZWInLCAnb3RoZXInKSkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICBzb3J0ZWQobGlzdChkLml0ZW1zKCkpKSwKKyAgICAgICAg
ICAgIHNvcnRlZCgoKCd2YWx1ZWEnLCAxKSwgKCd2YWx1ZWInLCAyKSwgKCdvdGhlcicsIDMpKSks
CisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2luZGV4KHNlbGYpOgorICAgICAgICBkID0gTmVz
dGVkRnV6enlEaWN0KHZhbHVlYT0xLCB2YWx1ZWI9Miwgb3RoZXI9MykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChkWyd2YWx1ZWEnXSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWyd2
YWx1ZWInXSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWydvdGhlJ10sIDMpCisKKyAg
ICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGRbJ25vdGhpbmcnXSwgTm9uZSkKKworICAgICAgICB3aXRoIHNlbGYuYXNz
ZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZFsndmFs
dWUnXSwgTm9uZSkKKworICAgIGRlZiB0ZXN0X2dldChzZWxmKToKKyAgICAgICAgZCA9IE5lc3Rl
ZEZ1enp5RGljdCh2YWx1ZWE9MSwgdmFsdWViPTIsIG90aGVyPTMpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoZC5nZXQoJ3ZhbHVlYScpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQu
Z2V0KCd2YWx1ZWInKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmdldCgnb3RoZScp
LCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuZ2V0KCdub3RoaW5nJyksIE5vbmUpCisK
KyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGQuZ2V0KCd2YWx1ZScpLCBOb25lKQorCisgICAgZGVmIHRlc3RfZ2V0
aXRlbShzZWxmKToKKyAgICAgICAgZCA9IE5lc3RlZEZ1enp5RGljdCh2YWx1ZWE9MSwgdmFsdWVi
PTIsIG90aGVyPTMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5nZXRpdGVtKCd2YWx1ZWEn
KSwgKCd2YWx1ZWEnLCAxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmdldGl0ZW0oJ3Zh
bHVlYicpLCAoJ3ZhbHVlYicsIDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuZ2V0aXRl
bSgnb3RoZScpLCAoJ290aGVyJywgMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5nZXRp
dGVtKCdub3RoaW5nJyksIChOb25lLCBOb25lKSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0
UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5nZXRpdGVt
KCd2YWx1ZScpLCBOb25lKQorCisgICAgZGVmIHRlc3Rfc2V0KHNlbGYpOgorICAgICAgICBkID0g
TmVzdGVkRnV6enlEaWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmdldCgnc29tZWxv
bmd2YWx1ZScpLCBOb25lKQorICAgICAgICBkWydzb21lbG9uZ3ZhbHVlJ10gPSAxCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoZC5nZXQoJ3NvbWVsb25ndmFsdWUnKSwgMSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChkLmdldCgnc29tZScpLCAxKQorCisgICAgZGVmIHRlc3RfZGljdChzZWxm
KToKKyAgICAgICAgZCA9IE5lc3RlZEZ1enp5RGljdCh2YWx1ZWE9MSwgdmFsdWViPTIsIG90aGVy
PTMpCisgICAgICAgIHNlbGYuYXNzZXJ0RGljdEVxdWFsKGQuZGljdCgpLCBkaWN0KHZhbHVlYT0x
LCB2YWx1ZWI9Miwgb3RoZXI9MykpCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS93ZWJraXRzY21weS9sb2NhbC9naXQucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5CShyZXZp
c2lvbiAyNzkzNDcpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJr
aXRzY21weS9sb2NhbC9naXQucHkJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKIGlt
cG9ydCBjYWxlbmRhcgogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcworaW1wb3J0IGpzb24KIGlt
cG9ydCByZQogaW1wb3J0IHNpeAogaW1wb3J0IHN1YnByb2Nlc3MKQEAgLTMxLDEyICszMiwyMjEg
QEAgaW1wb3J0IHRpbWUKIAogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWVkZWx0
YQogCi1mcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgcnVuLCBkZWNvcmF0b3JzCitmcm9tIHdlYmtp
dGNvcmVweSBpbXBvcnQgcnVuLCBkZWNvcmF0b3JzLCBOZXN0ZWRGdXp6eURpY3QKIGZyb20gd2Vi
a2l0c2NtcHkubG9jYWwgaW1wb3J0IFNjbQogZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgQ29tbWl0
LCBDb250cmlidXRvciwgbG9nCiAKIAogY2xhc3MgR2l0KFNjbSk6CisgICAgY2xhc3MgQ2FjaGUo
b2JqZWN0KToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcG8sIGd1cmFudGVlZF9mb3I9
MTApOgorICAgICAgICAgICAgc2VsZi5yZXBvID0gcmVwbworICAgICAgICAgICAgc2VsZi5fb3Jk
ZXJlZF9jb21taXRzID0ge30KKyAgICAgICAgICAgIHNlbGYuX2hhc2hfdG9faWRlbnRpZmllcnMg
PSBOZXN0ZWRGdXp6eURpY3QoKQorICAgICAgICAgICAgc2VsZi5fb3JkZXJlZF9yZXZpc2lvbnMg
PSB7fQorICAgICAgICAgICAgc2VsZi5fcmV2aXNpb25zX3RvX2lkZW50aWZpZXJzID0ge30KKyAg
ICAgICAgICAgIHNlbGYuX2xhc3RfcG9wdWxhdGVkID0ge30KKyAgICAgICAgICAgIHNlbGYuX2d1
cmFudGVlZF9mb3IgPSBndXJhbnRlZWRfZm9yCisKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhp
c3RzKHNlbGYucGF0aCk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAg
ICB3aXRoIG9wZW4oc2VsZi5wYXRoKSBhcyBmaWxlOgorICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGVudCA9IGpzb24ubG9hZChmaWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5f
b3JkZXJlZF9jb21taXRzID0gY29udGVudFsnaGFzaGVzJ10KKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX29yZGVyZWRfcmV2aXNpb25zID0gY29udGVudFsncmV2aXNpb25zJ10KKworICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9maWxsKHNlbGYucmVwby5kZWZhdWx0X2JyYW5jaCkKKyAg
ICAgICAgICAgICAgICAgICAgZm9yIGJyYW5jaCBpbiBzZWxmLl9vcmRlcmVkX2NvbW1pdHMua2V5
cygpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgYnJhbmNoID09IHNlbGYucmVwby5kZWZh
dWx0X2JyYW5jaDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fZmlsbChicmFuY2gpCisgICAgICAgICAgICAgICAgZXhj
ZXB0IEJhc2VFeGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBA
cHJvcGVydHkKKyAgICAgICAgZGVmIHBhdGgoc2VsZik6CisgICAgICAgICAgICByZXR1cm4gb3Mu
cGF0aC5qb2luKHNlbGYucmVwby5yb290X3BhdGgsICcuZ2l0JywgJ2lkZW50aWZpZXJzLmpzb24n
KQorCisgICAgICAgIGRlZiBfZmlsbChzZWxmLCBicmFuY2gpOgorICAgICAgICAgICAgZGVmYXVs
dF9icmFuY2ggPSBzZWxmLnJlcG8uZGVmYXVsdF9icmFuY2gKKyAgICAgICAgICAgIGlmIGJyYW5j
aCA9PSBkZWZhdWx0X2JyYW5jaDoKKyAgICAgICAgICAgICAgICBicmFuY2hfcG9pbnQgPSBOb25l
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGJyYW5jaF9wb2ludCA9IGludChz
ZWxmLl9oYXNoX3RvX2lkZW50aWZpZXJzW3NlbGYuX29yZGVyZWRfY29tbWl0c1ticmFuY2hdWzBd
XS5zcGxpdCgnQCcpWzBdKQorCisgICAgICAgICAgICBpbmRleCA9IGxlbihzZWxmLl9vcmRlcmVk
X2NvbW1pdHNbYnJhbmNoXSkgLSAxCisgICAgICAgICAgICB3aGlsZSBpbmRleDoKKyAgICAgICAg
ICAgICAgICBpZGVudGlmaWVyID0gc2VsZi5faGFzaF90b19pZGVudGlmaWVycy5nZXQoc2VsZi5f
b3JkZXJlZF9jb21taXRzW2JyYW5jaF1baW5kZXhdKQorCisgICAgICAgICAgICAgICAgaWYgaWRl
bnRpZmllcjoKKyAgICAgICAgICAgICAgICAgICAgaWRfYnJhbmNoID0gaWRlbnRpZmllci5zcGxp
dCgnQCcpWy0xXQorICAgICAgICAgICAgICAgICAgICBpZiBicmFuY2ggaW4gKGRlZmF1bHRfYnJh
bmNoLCBpZF9icmFuY2gpOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgYnJhbmNoICE9IHNlbGYucmVwby5wcmlvcml0aXplX2JyYW5jaGVzKChi
cmFuY2gsIGlkX2JyYW5jaCkpOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAg
ICAgICAgICAgICAgIGlkZW50aWZpZXIgPSAne31Ae30nLmZvcm1hdCgne30ue30nLmZvcm1hdChi
cmFuY2hfcG9pbnQsIGluZGV4KSBpZiBicmFuY2hfcG9pbnQgZWxzZSBpbmRleCwgYnJhbmNoKQor
ICAgICAgICAgICAgICAgIHNlbGYuX2hhc2hfdG9faWRlbnRpZmllcnNbc2VsZi5fb3JkZXJlZF9j
b21taXRzW2JyYW5jaF1baW5kZXhdXSA9IGlkZW50aWZpZXIKKyAgICAgICAgICAgICAgICBpZiBz
ZWxmLl9vcmRlcmVkX3JldmlzaW9uc1ticmFuY2hdW2luZGV4XToKKyAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fcmV2aXNpb25zX3RvX2lkZW50aWZpZXJzW3NlbGYuX29yZGVyZWRfcmV2aXNpb25z
W2JyYW5jaF1baW5kZXhdXSA9IGlkZW50aWZpZXIKKyAgICAgICAgICAgICAgICBpbmRleCAtPSAx
CisKKyAgICAgICAgZGVmIHBvcHVsYXRlKHNlbGYsIGJyYW5jaD1Ob25lKToKKyAgICAgICAgICAg
IGJyYW5jaCA9IGJyYW5jaCBvciBzZWxmLnJlcG8uYnJhbmNoCisgICAgICAgICAgICBpZiBub3Qg
YnJhbmNoOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgaWYgc2VsZi5fbGFz
dF9wb3B1bGF0ZWQuZ2V0KGJyYW5jaCwgMCkgKyBzZWxmLl9ndXJhbnRlZWRfZm9yID4gdGltZS50
aW1lKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBkZWZhdWx0X2JyYW5j
aCA9IHNlbGYucmVwby5kZWZhdWx0X2JyYW5jaAorICAgICAgICAgICAgaXNfZGVmYXVsdF9icmFu
Y2ggPSBicmFuY2ggPT0gZGVmYXVsdF9icmFuY2gKKyAgICAgICAgICAgIGlmIGJyYW5jaCBub3Qg
aW4gc2VsZi5fb3JkZXJlZF9jb21taXRzOgorICAgICAgICAgICAgICAgIHNlbGYuX29yZGVyZWRf
Y29tbWl0c1ticmFuY2hdID0gWycnXSBpZiBpc19kZWZhdWx0X2JyYW5jaCBlbHNlIFtdCisgICAg
ICAgICAgICAgICAgc2VsZi5fb3JkZXJlZF9yZXZpc2lvbnNbYnJhbmNoXSA9IFswXSBpZiBpc19k
ZWZhdWx0X2JyYW5jaCBlbHNlIFtdCisKKyAgICAgICAgICAgICMgSWYgd2UgYXJlbid0IG9uIHRo
ZSBkZWZhdWx0IGJyYW5jaCwgd2Ugd2lsbCBuZWVkIHRoZSBkZWZhdWx0IGJyYW5jaCB0byBkZXRl
cm1pbmUgd2hlbgorICAgICAgICAgICAgIyBvdXIgIGJyYW5jaCAgaW50ZXJzZWN0cyB3aXRoIHRo
ZSBkZWZhdWx0IGJyYW5jaC4KKyAgICAgICAgICAgIGlmIG5vdCBpc19kZWZhdWx0X2JyYW5jaDoK
KyAgICAgICAgICAgICAgICBzZWxmLnBvcHVsYXRlKGJyYW5jaD1zZWxmLnJlcG8uZGVmYXVsdF9i
cmFuY2gpCisgICAgICAgICAgICBoYXNoZXMgPSBbXQorICAgICAgICAgICAgcmV2aXNpb25zID0g
W10KKworICAgICAgICAgICAgZGVmIF9hcHBlbmQoYnJhbmNoLCBoYXNoLCByZXZpc2lvbj1Ob25l
KToKKyAgICAgICAgICAgICAgICBoYXNoZXMuYXBwZW5kKGhhc2gpCisgICAgICAgICAgICAgICAg
cmV2aXNpb25zLmFwcGVuZChyZXZpc2lvbikKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0g
c2VsZi5faGFzaF90b19pZGVudGlmaWVycy5nZXQoaGFzaCwgJycpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGlkZW50aWZpZXIuZW5kc3dpdGgoZGVmYXVsdF9icmFuY2gpIG9yIGlkZW50aWZpZXIu
ZW5kc3dpdGgoYnJhbmNoKQorCisgICAgICAgICAgICBpbnRlcnNlY3RlZCA9IEZhbHNlCisgICAg
ICAgICAgICBsb2cgPSBOb25lCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAga3dh
cmdzID0gZGljdCgpCisgICAgICAgICAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywg
MCk6CisgICAgICAgICAgICAgICAgICAgIGt3YXJncyA9IGRpY3QoZW5jb2Rpbmc9J3V0Zi04JykK
KyAgICAgICAgICAgICAgICBzZWxmLl9sYXN0X3BvcHVsYXRlZFticmFuY2hdID0gdGltZS50aW1l
KCkKKyAgICAgICAgICAgICAgICBsb2cgPSBzdWJwcm9jZXNzLlBvcGVuKAorICAgICAgICAgICAg
ICAgICAgICBbc2VsZi5yZXBvLmV4ZWN1dGFibGUoKSwgJ2xvZycsIGJyYW5jaF0sCisgICAgICAg
ICAgICAgICAgICAgIGN3ZD1zZWxmLnJlcG8ucm9vdF9wYXRoLAorICAgICAgICAgICAgICAgICAg
ICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3Vi
cHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAqKiBrd2FyZ3MKKyAgICAgICAgICAg
ICAgICApCisgICAgICAgICAgICAgICAgaWYgbG9nLnBvbGwoKToKKyAgICAgICAgICAgICAgICAg
ICAgcmFpc2Ugc2VsZi5yZXBvLkV4Y2VwdGlvbigiRmFpbGVkIHRvIGNvbnN0cnVjdCBicmFuY2gg
aGlzdG9yeSBmb3IgJ3t9JyIuZm9ybWF0KGJyYW5jaCkpCisKKyAgICAgICAgICAgICAgICBoYXNo
ID0gTm9uZQorICAgICAgICAgICAgICAgIHJldmlzaW9uID0gTm9uZQorCisgICAgICAgICAgICAg
ICAgbGluZSA9IGxvZy5zdGRvdXQucmVhZGxpbmUoKQorICAgICAgICAgICAgICAgIHdoaWxlIGxp
bmU6CisgICAgICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnICAgIGdpdC1zdm4t
aWQ6ICcpOgorICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBzZWxmLnJlcG8uR0lUX1NW
Tl9SRVZJU0lPTi5tYXRjaChsaW5lLmxzdHJpcCgpKQorICAgICAgICAgICAgICAgICAgICAgICAg
aWYgbWF0Y2g6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2aXNpb24gPSBpbnQobWF0
Y2guZ3JvdXAoJ3JldmlzaW9uJykpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lLnN0
YXJ0c3dpdGgoJ2NvbW1pdCAnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsb2cu
c3Rkb3V0LnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAg
ICAgICAgICAgICAgICAgICAgaWYgaGFzaCBhbmQgX2FwcGVuZChicmFuY2gsIGhhc2gsIHJldmlz
aW9uPXJldmlzaW9uKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhc2ggPSBOb25lCisgICAg
ICAgICAgICAgICAgICAgICAgICBpbnRlcnNlY3RlZCA9IFRydWUKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgICAgICAgICAgaGFzaCA9IGxpbmUuc3BsaXQoJyAn
KVsxXS5yc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICByZXZpc2lvbiA9IE5vbmUKKyAgICAg
ICAgICAgICAgICAgICAgbGluZSA9IGxvZy5zdGRvdXQucmVhZGxpbmUoKQorCisgICAgICAgICAg
ICAgICAgaWYgaGFzaDoKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJzZWN0ZWQgPSBfYXBwZW5k
KGJyYW5jaCwgaGFzaCwgcmV2aXNpb249cmV2aXNpb24pCisKKyAgICAgICAgICAgIGZpbmFsbHk6
CisgICAgICAgICAgICAgICAgaWYgbG9nOgorICAgICAgICAgICAgICAgICAgICBsb2cua2lsbCgp
CisKKyAgICAgICAgICAgIGlmIG5vdCBoYXNoZXMgb3IgaW50ZXJzZWN0ZWQgYW5kIGxlbihoYXNo
ZXMpIDw9IDE6CisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgIGhhc2hlcy5y
ZXZlcnNlKCkKKyAgICAgICAgICAgIHJldmlzaW9ucy5yZXZlcnNlKCkKKworICAgICAgICAgICAg
b3JkZXIgPSBsZW4oc2VsZi5fb3JkZXJlZF9jb21taXRzW2JyYW5jaF0pIC0gMQorICAgICAgICAg
ICAgd2hpbGUgb3JkZXIgPiAwOgorICAgICAgICAgICAgICAgIGlmIGhhc2hlc1swXSA9PSBzZWxm
Ll9vcmRlcmVkX2NvbW1pdHNbYnJhbmNoXVtvcmRlcl06CisgICAgICAgICAgICAgICAgICAgIG9y
ZGVyIC09IDEKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBvcmRl
ciAtPSAxCisKKyAgICAgICAgICAgIHNlbGYuX29yZGVyZWRfY29tbWl0c1ticmFuY2hdID0gc2Vs
Zi5fb3JkZXJlZF9jb21taXRzW2JyYW5jaF1bOm9yZGVyICsgMV0gKyBoYXNoZXMKKyAgICAgICAg
ICAgIHNlbGYuX29yZGVyZWRfcmV2aXNpb25zW2JyYW5jaF0gPSBzZWxmLl9vcmRlcmVkX3Jldmlz
aW9uc1ticmFuY2hdWzpvcmRlciArIDFdICsgcmV2aXNpb25zCisgICAgICAgICAgICBzZWxmLl9m
aWxsKGJyYW5jaCkKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdpdGggb3Bl
bihzZWxmLnBhdGgsICd3JykgYXMgZmlsZToKKyAgICAgICAgICAgICAgICAgICAganNvbi5kdW1w
KGRpY3QoCisgICAgICAgICAgICAgICAgICAgICAgICBoYXNoZXM9c2VsZi5fb3JkZXJlZF9jb21t
aXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgcmV2aXNpb25zPXNlbGYuX29yZGVyZWRfcmV2
aXNpb25zLAorICAgICAgICAgICAgICAgICAgICApLCBmaWxlLCBpbmRlbnQ9NCkKKyAgICAgICAg
ICAgIGV4Y2VwdCAoSU9FcnJvciwgT1NFcnJvcik6CisgICAgICAgICAgICAgICAgc2VsZi5yZXBv
LmxvZygiRmFpbGVkIHRvIHdyaXRlIGlkZW50aWZpZXIgY2FjaGUgdG8gJ3t9JyIuZm9ybWF0KHNl
bGYucGF0aCkpCisKKyAgICAgICAgZGVmIHRvX2hhc2goc2VsZiwgcmV2aXNpb249Tm9uZSwgaWRl
bnRpZmllcj1Ob25lLCBwb3B1bGF0ZT1UcnVlKToKKyAgICAgICAgICAgIGlmIHJldmlzaW9uOgor
ICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgPSBzZWxmLnRvX2lkZW50aWZpZXIocmV2aXNpb249
cmV2aXNpb24sIHBvcHVsYXRlPXBvcHVsYXRlKQorICAgICAgICAgICAgcGFydHMgPSBDb21taXQu
X3BhcnNlX2lkZW50aWZpZXIoaWRlbnRpZmllciwgZG9fYXNzZXJ0PUZhbHNlKQorICAgICAgICAg
ICAgaWYgbm90IHBhcnRzOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAg
ICAgIF8sIGJfY291bnQsIGJyYW5jaCA9IHBhcnRzCisgICAgICAgICAgICBpZiBiX2NvdW50IDwg
MDoKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgaWYgYnJhbmNoIG5v
dCBpbiBzZWxmLl9vcmRlcmVkX2NvbW1pdHMgb3IgbGVuKHNlbGYuX29yZGVyZWRfY29tbWl0c1ti
cmFuY2hdKSA8PSBiX2NvdW50OgorICAgICAgICAgICAgICAgIGlmIHBvcHVsYXRlOgorICAgICAg
ICAgICAgICAgICAgICBzZWxmLnBvcHVsYXRlKGJyYW5jaD1icmFuY2gpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBzZWxmLnRvX2hhc2goaWRlbnRpZmllcj1pZGVudGlmaWVyLCBwb3B1bGF0
ZT1GYWxzZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgcmV0dXJu
IHNlbGYuX29yZGVyZWRfY29tbWl0c1ticmFuY2hdW2JfY291bnRdCisKKyAgICAgICAgZGVmIHRv
X3JldmlzaW9uKHNlbGYsIGhhc2g9Tm9uZSwgaWRlbnRpZmllcj1Ob25lLCBwb3B1bGF0ZT1UcnVl
KToKKyAgICAgICAgICAgIGlmIGhhc2g6CisgICAgICAgICAgICAgICAgaWRlbnRpZmllciA9IHNl
bGYudG9faWRlbnRpZmllcihoYXNoPWhhc2gsIHBvcHVsYXRlPXBvcHVsYXRlKQorICAgICAgICAg
ICAgcGFydHMgPSBDb21taXQuX3BhcnNlX2lkZW50aWZpZXIoaWRlbnRpZmllciwgZG9fYXNzZXJ0
PUZhbHNlKQorICAgICAgICAgICAgaWYgbm90IHBhcnRzOgorICAgICAgICAgICAgICAgIHJldHVy
biBOb25lCisKKyAgICAgICAgICAgIF8sIGJfY291bnQsIGJyYW5jaCA9IHBhcnRzCisgICAgICAg
ICAgICBpZiBiX2NvdW50IDwgMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAg
ICAgICAgaWYgYnJhbmNoIG5vdCBpbiBzZWxmLl9vcmRlcmVkX3JldmlzaW9ucyBvciBsZW4oc2Vs
Zi5fb3JkZXJlZF9yZXZpc2lvbnNbYnJhbmNoXSkgPD0gYl9jb3VudDoKKyAgICAgICAgICAgICAg
ICBpZiBwb3B1bGF0ZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wb3B1bGF0ZShicmFuY2g9
YnJhbmNoKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi50b19yZXZpc2lvbihpZGVu
dGlmaWVyPWlkZW50aWZpZXIsIHBvcHVsYXRlPUZhbHNlKQorICAgICAgICAgICAgICAgIHJldHVy
biBOb25lCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fb3JkZXJlZF9yZXZpc2lvbnNbYnJhbmNo
XVtiX2NvdW50XQorCisgICAgICAgIGRlZiB0b19pZGVudGlmaWVyKHNlbGYsIGhhc2g9Tm9uZSwg
cmV2aXNpb249Tm9uZSwgcG9wdWxhdGU9VHJ1ZSk6CisgICAgICAgICAgICByZXZpc2lvbiA9IENv
bW1pdC5fcGFyc2VfcmV2aXNpb24ocmV2aXNpb24sIGRvX2Fzc2VydD1GYWxzZSkKKyAgICAgICAg
ICAgIGlmIHJldmlzaW9uOgorICAgICAgICAgICAgICAgIGlmIHJldmlzaW9uIGluIHNlbGYuX3Jl
dmlzaW9uc190b19pZGVudGlmaWVyczoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu
X3JldmlzaW9uc190b19pZGVudGlmaWVyc1tyZXZpc2lvbl0KKyAgICAgICAgICAgICAgICBpZiBw
b3B1bGF0ZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wb3B1bGF0ZSgpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBzZWxmLnRvX2lkZW50aWZpZXIocmV2aXNpb249cmV2aXNpb24sIHBv
cHVsYXRlPUZhbHNlKQorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgICAg
IGhhc2ggPSBDb21taXQuX3BhcnNlX2hhc2goaGFzaCwgZG9fYXNzZXJ0PUZhbHNlKQorICAgICAg
ICAgICAgaWYgaGFzaDoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAg
IGNhbmRpZGF0ZSA9IHNlbGYuX2hhc2hfdG9faWRlbnRpZmllcnMuZ2V0KGhhc2gpCisgICAgICAg
ICAgICAgICAgZXhjZXB0IEtleUVycm9yOiAgIyBNZWFucyB0aGUgaGFzaCB3YXNuJ3Qgc3BlY2lm
aWMgZW5vdWdoCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgICAg
ICAgICBpZiBjYW5kaWRhdGU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGUK
KyAgICAgICAgICAgICAgICBpZiBwb3B1bGF0ZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5w
b3B1bGF0ZSgpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnRvX2lkZW50aWZpZXIo
aGFzaD1oYXNoLCBwb3B1bGF0ZT1GYWxzZSkKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKwog
ICAgIEdJVF9DT01NSVQgPSByZS5jb21waWxlKHInY29tbWl0ICg/UDxoYXNoPlswLTlhLWZdKykn
KQogCiAgICAgQGNsYXNzbWV0aG9kCkBAIC01MSw2ICsyNjEsNyBAQCBjbGFzcyBHaXQoU2NtKToK
ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgZGV2X2JyYW5jaGVzPU5vbmUsIHByb2RfYnJh
bmNoZXM9Tm9uZSwgY29udHJpYnV0b3JzPU5vbmUsIGlkPU5vbmUpOgogICAgICAgICBzdXBlcihH
aXQsIHNlbGYpLl9faW5pdF9fKHBhdGgsIGRldl9icmFuY2hlcz1kZXZfYnJhbmNoZXMsIHByb2Rf
YnJhbmNoZXM9cHJvZF9icmFuY2hlcywgY29udHJpYnV0b3JzPWNvbnRyaWJ1dG9ycywgaWQ9aWQp
CiAgICAgICAgIHNlbGYuX2JyYW5jaCA9IE5vbmUKKyAgICAgICAgc2VsZi5jYWNoZSA9IHNlbGYu
Q2FjaGUoc2VsZikgaWYgc2VsZi5yb290X3BhdGggZWxzZSBOb25lCiAgICAgICAgIGlmIG5vdCBz
ZWxmLnJvb3RfcGF0aDoKICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ1Byb3ZpZGVkIHBhdGgg
e30gaXMgbm90IGEgZ2l0IHJlcG9zaXRvcnknLmZvcm1hdChwYXRoKSkKIApAQCAtMTYzLDEyICsz
NzQsMTggQEAgY2xhc3MgR2l0KFNjbSk6CiAgICAgICAgIHJldHVybiBzb3J0ZWQoc2V0KFsnLycu
am9pbihicmFuY2guc3BsaXQoJy8nKVsyOl0pIGlmIGJyYW5jaC5zdGFydHN3aXRoKCdyZW1vdGVz
L29yaWdpbi8nKSBlbHNlIGJyYW5jaCBmb3IgYnJhbmNoIGluIHJlc3VsdF0pKQogCiAgICAgZGVm
IGNvbW1pdChzZWxmLCBoYXNoPU5vbmUsIHJldmlzaW9uPU5vbmUsIGlkZW50aWZpZXI9Tm9uZSwg
YnJhbmNoPU5vbmUsIHRhZz1Ob25lLCBpbmNsdWRlX2xvZz1UcnVlLCBpbmNsdWRlX2lkZW50aWZp
ZXI9VHJ1ZSk6Ci0gICAgICAgICMgT25seSBnaXQtc3ZuIGNoZWNrb3V0cyBjYW4gY29udmVydCBy
ZXZpc2lvbnMgdG8gZnVsbHkgcXVhbGlmaWVkIGNvbW1pdHMKLSAgICAgICAgaWYgcmV2aXNpb24g
YW5kIG5vdCBzZWxmLmlzX3N2bjoKKyAgICAgICAgIyBPbmx5IGdpdC1zdm4gY2hlY2tvdXRzIGNh
biBjb252ZXJ0IHJldmlzaW9ucyB0byBmdWxseSBxdWFsaWZpZWQgY29tbWl0cywgdW5sZXNzIHdl
IGhhcHBlbiB0byBoYXZlIGEgU1ZOIGNhY2hlIGJ1aWx0CisgICAgICAgIGlmIHJldmlzaW9uOgor
ICAgICAgICAgICAgaWYgaGFzaDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdD
YW5ub3QgZGVmaW5lIGJvdGggaGFzaCBhbmQgcmV2aXNpb24nKQorICAgICAgICAgICAgaGFzaCA9
IHNlbGYuY2FjaGUudG9faGFzaChyZXZpc2lvbj1yZXZpc2lvbikgaWYgc2VsZi5jYWNoZSBlbHNl
IE5vbmUKKworICAgICAgICAjIElmIHdlIGRvbid0IGhhdmUgYW4gU1ZOIGNhY2hlIGJ1aWx0LCBh
bmQgd2UncmUgbm90IGdpdC1zdm4sIHdlIGNhbid0IHJlYXNvbiBhYm91dCByZXZpc2lvbnMKKyAg
ICAgICAgaWYgcmV2aXNpb24gYW5kIG5vdCBoYXNoIGFuZCBub3Qgc2VsZi5pc19zdm46CiAgICAg
ICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignVGhpcyBnaXQgY2hlY2tvdXQgZG9lcyBub3Qg
c3VwcG9ydCBTVk4gcmV2aXNpb25zJykKIAogICAgICAgICAjIERldGVybWluZSB0aGUgaGFzaCBm
b3IgYSBwcm92aWRlZCBTdWJ2ZXJzaW9uIHJldmlzaW9uCi0gICAgICAgIGVsaWYgcmV2aXNpb246
CisgICAgICAgIGVsaWYgcmV2aXNpb24gYW5kIG5vdCBoYXNoOgogICAgICAgICAgICAgaWYgaGFz
aDoKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdDYW5ub3QgZGVmaW5lIGJvdGgg
aGFzaCBhbmQgcmV2aXNpb24nKQogCkBAIC0yMDYsMzMgKzQyMyw0NyBAQCBjbGFzcyBHaXQoU2Nt
KToKICAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICkKICAg
ICAgICAgICAgICAgICBicmFuY2ggPSBwYXJzZWRfYnJhbmNoCisgICAgICAgICAgICAgICAgaGFz
aCA9IHNlbGYuY2FjaGUudG9faGFzaChpZGVudGlmaWVyPSd7fUB7fScuZm9ybWF0KGlkZW50aWZp
ZXIsIHBhcnNlZF9icmFuY2gpKSBpZiBzZWxmLmNhY2hlIGVsc2UgTm9uZQogCi0gICAgICAgICAg
ICBiYXNlbGluZSA9IGJyYW5jaCBvciAnSEVBRCcKLSAgICAgICAgICAgIGlzX2RlZmF1bHQgPSBi
YXNlbGluZSA9PSBkZWZhdWx0X2JyYW5jaAotICAgICAgICAgICAgaWYgYmFzZWxpbmUgPT0gJ0hF
QUQnOgotICAgICAgICAgICAgICAgIGlzX2RlZmF1bHQgPSBkZWZhdWx0X2JyYW5jaCBpbiBzZWxm
Ll9icmFuY2hlc19mb3IoYmFzZWxpbmUpCi0KLSAgICAgICAgICAgIGlmIGlzX2RlZmF1bHQgYW5k
IHBhcnNlZF9icmFuY2hfcG9pbnQ6Ci0gICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRp
b24oJ0Nhbm5vdCBwcm92aWRlIGEgYnJhbmNoIHBvaW50IGZvciBhIGNvbW1pdCBvbiB0aGUgZGVm
YXVsdCBicmFuY2gnKQotCi0gICAgICAgICAgICBiYXNlX2NvdW50ID0gc2VsZi5fY29tbWl0X2Nv
dW50KGJhc2VsaW5lIGlmIGlzX2RlZmF1bHQgZWxzZSAne30uLnt9Jy5mb3JtYXQoZGVmYXVsdF9i
cmFuY2gsIGJhc2VsaW5lKSkKLQotICAgICAgICAgICAgaWYgaWRlbnRpZmllciA+IGJhc2VfY291
bnQ6Ci0gICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oJ0lkZW50aWZpZXIge30g
Y2Fubm90IGJlIGZvdW5kIG9uIHRoZSBzcGVjaWZpZWQgYnJhbmNoIGluIHRoZSBjdXJyZW50IGNo
ZWNrb3V0Jy5mb3JtYXQoaWRlbnRpZmllcikpCi0gICAgICAgICAgICBsb2cgPSBydW4oCi0gICAg
ICAgICAgICAgICAgW3NlbGYuZXhlY3V0YWJsZSgpLCAnbG9nJywgJ3t9fnt9Jy5mb3JtYXQoYnJh
bmNoIG9yICdIRUFEJywgYmFzZV9jb3VudCAtIGlkZW50aWZpZXIpXSArIGxvZ19mb3JtYXQsCi0g
ICAgICAgICAgICAgICAgY3dkPXNlbGYucm9vdF9wYXRoLAotICAgICAgICAgICAgICAgIGNhcHR1
cmVfb3V0cHV0PVRydWUsCi0gICAgICAgICAgICAgICAgZW5jb2Rpbmc9J3V0Zi04JywKLSAgICAg
ICAgICAgICkKLSAgICAgICAgICAgIGlmIGxvZy5yZXR1cm5jb2RlOgotICAgICAgICAgICAgICAg
IHJhaXNlIHNlbGYuRXhjZXB0aW9uKCJGYWlsZWQgdG8gcmV0cmlldmUgY29tbWl0IGluZm9ybWF0
aW9uIGZvciAnaXt9QHt9JyIuZm9ybWF0KGlkZW50aWZpZXIsIGJyYW5jaCBvciAnSEVBRCcpKQor
ICAgICAgICAgICAgIyBJZiB0aGUgY2FjaGUgbWFuYWdlZCB0byBjb252ZXJ0IHRoZSBpZGVudGlm
aWVyIHRvIGEgaGFzaCwgd2UgY2FuIHNraXAgc29tZSBjb21wdXRhdGlvbgorICAgICAgICAgICAg
aWYgaGFzaDoKKyAgICAgICAgICAgICAgICBsb2cgPSBydW4oCisgICAgICAgICAgICAgICAgICAg
IFtzZWxmLmV4ZWN1dGFibGUoKSwgJ2xvZycsIGhhc2hdICsgbG9nX2Zvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgY3dkPXNlbGYucm9vdF9wYXRoLAorICAgICAgICAgICAgICAgICAgICBjYXB0
dXJlX291dHB1dD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz0ndXRmLTgnLAor
ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBpZiBsb2cucmV0dXJuY29kZToKKyAg
ICAgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oIkZhaWxlZCB0byByZXRyaWV2
ZSBjb21taXQgaW5mb3JtYXRpb24gZm9yICd7fSciLmZvcm1hdChoYXNoKSkKIAotICAgICAgICAg
ICAgIyBOZWdhdGl2ZSBpZGVudGlmaWVycyBhcmUgYWN0dWFsbHkgY29tbWl0cyBvbiB0aGUgZGVm
YXVsdCBicmFuY2gsIHdlIHdpbGwgbmVlZCB0byByZS1jb21wdXRlIHRoZSBpZGVudGlmaWVyCi0g
ICAgICAgICAgICBpZiBpZGVudGlmaWVyIDwgMCBhbmQgaXNfZGVmYXVsdDoKLSAgICAgICAgICAg
ICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignSWxsZWdhbCBuZWdhdGl2ZSBpZGVudGlmaWVyIG9u
IHRoZSBkZWZhdWx0IGJyYW5jaCcpCi0gICAgICAgICAgICBpZiBpZGVudGlmaWVyIDwgMDoKLSAg
ICAgICAgICAgICAgICBpZGVudGlmaWVyID0gTm9uZQorICAgICAgICAgICAgIyBUaGUgY2FjaGUg
aGFzIGZhaWxlZCB0byBjb252ZXJ0IHRoZSBpZGVudGlmaWVyLCB3ZSBuZWVkIHRvIGRvIGl0IHRo
ZSBleHBlbnNpdmUgd2F5CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGJhc2Vs
aW5lID0gYnJhbmNoIG9yICdIRUFEJworICAgICAgICAgICAgICAgIGlzX2RlZmF1bHQgPSBiYXNl
bGluZSA9PSBkZWZhdWx0X2JyYW5jaAorICAgICAgICAgICAgICAgIGlmIGJhc2VsaW5lID09ICdI
RUFEJzoKKyAgICAgICAgICAgICAgICAgICAgaXNfZGVmYXVsdCA9IGRlZmF1bHRfYnJhbmNoIGlu
IHNlbGYuX2JyYW5jaGVzX2ZvcihiYXNlbGluZSkKKworICAgICAgICAgICAgICAgIGlmIGlzX2Rl
ZmF1bHQgYW5kIHBhcnNlZF9icmFuY2hfcG9pbnQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNl
IHNlbGYuRXhjZXB0aW9uKCdDYW5ub3QgcHJvdmlkZSBhIGJyYW5jaCBwb2ludCBmb3IgYSBjb21t
aXQgb24gdGhlIGRlZmF1bHQgYnJhbmNoJykKKworICAgICAgICAgICAgICAgIGJhc2VfY291bnQg
PSBzZWxmLl9jb21taXRfY291bnQoYmFzZWxpbmUgaWYgaXNfZGVmYXVsdCBlbHNlICd7fS4ue30n
LmZvcm1hdChkZWZhdWx0X2JyYW5jaCwgYmFzZWxpbmUpKQorCisgICAgICAgICAgICAgICAgaWYg
aWRlbnRpZmllciA+IGJhc2VfY291bnQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYu
RXhjZXB0aW9uKCdJZGVudGlmaWVyIHt9IGNhbm5vdCBiZSBmb3VuZCBvbiB0aGUgc3BlY2lmaWVk
IGJyYW5jaCBpbiB0aGUgY3VycmVudCBjaGVja291dCcuZm9ybWF0KGlkZW50aWZpZXIpKQorICAg
ICAgICAgICAgICAgIGxvZyA9IHJ1bigKKyAgICAgICAgICAgICAgICAgICAgW3NlbGYuZXhlY3V0
YWJsZSgpLCAnbG9nJywgJ3t9fnt9Jy5mb3JtYXQoYnJhbmNoIG9yICdIRUFEJywgYmFzZV9jb3Vu
dCAtIGlkZW50aWZpZXIpXSArIGxvZ19mb3JtYXQsCisgICAgICAgICAgICAgICAgICAgIGN3ZD1z
ZWxmLnJvb3RfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwK
KyAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9J3V0Zi04JywKKyAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICAgICAgaWYgbG9nLnJldHVybmNvZGU6CisgICAgICAgICAgICAgICAgICAg
IHJhaXNlIHNlbGYuRXhjZXB0aW9uKCJGYWlsZWQgdG8gcmV0cmlldmUgY29tbWl0IGluZm9ybWF0
aW9uIGZvciAnaXt9QHt9JyIuZm9ybWF0KGlkZW50aWZpZXIsIGJyYW5jaCBvciAnSEVBRCcpKQor
CisgICAgICAgICAgICAgICAgIyBOZWdhdGl2ZSBpZGVudGlmaWVycyBhcmUgYWN0dWFsbHkgY29t
bWl0cyBvbiB0aGUgZGVmYXVsdCBicmFuY2gsIHdlIHdpbGwgbmVlZCB0byByZS1jb21wdXRlIHRo
ZSBpZGVudGlmaWVyCisgICAgICAgICAgICAgICAgaWYgaWRlbnRpZmllciA8IDAgYW5kIGlzX2Rl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0aW9uKCdJbGxlZ2Fs
IG5lZ2F0aXZlIGlkZW50aWZpZXIgb24gdGhlIGRlZmF1bHQgYnJhbmNoJykKKyAgICAgICAgICAg
ICAgICBpZiBpZGVudGlmaWVyIDwgMDoKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllciA9
IE5vbmUKIAogICAgICAgICAjIERldGVybWluZSB0aGUgYGdpdCBsb2dgIG91dHB1dCBmb3IgYSBn
aXZlbiBicmFuY2ggb3IgdGFnCiAgICAgICAgIGVsaWYgYnJhbmNoIG9yIHRhZzoKQEAgLTI1OCwx
NSArNDg5LDIzIEBAIGNsYXNzIEdpdChTY20pOgogICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNl
cHRpb24oJ0ludmFsaWQgY29tbWl0IGhhc2ggaW4gZ2l0IGxvZycpCiAgICAgICAgIGhhc2ggPSBt
YXRjaC5ncm91cCgnaGFzaCcpCiAKKyAgICAgICAgYnJhbmNoX3BvaW50ID0gTm9uZQorICAgICAg
ICBpZiBub3QgaWRlbnRpZmllciBhbmQgaW5jbHVkZV9pZGVudGlmaWVyOgorICAgICAgICAgICAg
Y2FjaGVkX2lkZW50aWZpZXIgPSBzZWxmLmNhY2hlLnRvX2lkZW50aWZpZXIoaGFzaD1oYXNoKSBp
ZiBzZWxmLmNhY2hlIGVsc2UgTm9uZQorICAgICAgICAgICAgaWYgY2FjaGVkX2lkZW50aWZpZXI6
CisgICAgICAgICAgICAgICAgYnJhbmNoX3BvaW50LCBpZGVudGlmaWVyLCBicmFuY2ggPSBDb21t
aXQuX3BhcnNlX2lkZW50aWZpZXIoY2FjaGVkX2lkZW50aWZpZXIpCisKICAgICAgICAgIyBBIGNv
bW1pdCBpcyBvZnRlbiBvbiBtdWx0aXBsZSBicmFuY2hlcywgdGhlIGNhbm9uaWNhbCBicmFuY2gg
aXMgdGhlIG9uZSB3aXRoIHRoZSBoaWdoZXN0IHByaW9yaXR5Ci0gICAgICAgIGJyYW5jaCA9IHNl
bGYucHJpb3JpdGl6ZV9icmFuY2hlcyhzZWxmLl9icmFuY2hlc19mb3IoaGFzaCkpCisgICAgICAg
IGlmIGJyYW5jaCAhPSBkZWZhdWx0X2JyYW5jaDoKKyAgICAgICAgICAgIGJyYW5jaCA9IHNlbGYu
cHJpb3JpdGl6ZV9icmFuY2hlcyhzZWxmLl9icmFuY2hlc19mb3IoaGFzaCkpCiAKICAgICAgICAg
IyBDb21wdXRlIHRoZSBpZGVudGlmaWVyIGlmIHRoZSBmdW5jdGlvbiBkaWQgbm90IHJlY2VpdmUg
b25lIGFuZCB3ZSB3ZXJlIGFza2VkIHRvCiAgICAgICAgIGlmIG5vdCBpZGVudGlmaWVyIGFuZCBp
bmNsdWRlX2lkZW50aWZpZXI6CiAgICAgICAgICAgICBpZGVudGlmaWVyID0gc2VsZi5fY29tbWl0
X2NvdW50KGhhc2ggaWYgYnJhbmNoID09IGRlZmF1bHRfYnJhbmNoIGVsc2UgJ3t9Li57fScuZm9y
bWF0KGRlZmF1bHRfYnJhbmNoLCBoYXNoKSkKIAogICAgICAgICAjIE9ubHkgY29tcHV0ZSB0aGUg
YnJhbmNoIHBvaW50IHdlJ3JlIG9uIHNvbWV0aGluZyBvdGhlciB0aGFuIHRoZSBkZWZhdWx0IGJy
YW5jaAotICAgICAgICBicmFuY2hfcG9pbnQgPSBOb25lIGlmIG5vdCBpbmNsdWRlX2lkZW50aWZp
ZXIgb3IgYnJhbmNoID09IGRlZmF1bHRfYnJhbmNoIGVsc2Ugc2VsZi5fY29tbWl0X2NvdW50KGhh
c2gpIC0gaWRlbnRpZmllcgorICAgICAgICBpZiBub3QgYnJhbmNoX3BvaW50IGFuZCBpbmNsdWRl
X2lkZW50aWZpZXIgYW5kIGJyYW5jaCAhPSBkZWZhdWx0X2JyYW5jaDoKKyAgICAgICAgICAgIGJy
YW5jaF9wb2ludCA9IHNlbGYuX2NvbW1pdF9jb3VudChoYXNoKSAtIGlkZW50aWZpZXIKICAgICAg
ICAgaWYgYnJhbmNoX3BvaW50IGFuZCBwYXJzZWRfYnJhbmNoX3BvaW50IGFuZCBicmFuY2hfcG9p
bnQgIT0gcGFyc2VkX2JyYW5jaF9wb2ludDoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3Io
IlByb3ZpZGVkICdicmFuY2hfcG9pbnQnIGRvZXMgbm90IG1hdGNoIGJyYW5jaCBwb2ludCBvZiBz
cGVjaWZpZWQgYnJhbmNoIikKIApJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwvZ2l0LnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL2xvY2FsL2dp
dC5weQkocmV2aXNpb24gMjc5MzQ3KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwvZ2l0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0y
NzAsNiArMjcwLDMxIEBAIG5vdGhpbmcgdG8gY29tbWl0LCB3b3JraW5nIHRyZWUgY2xlYW4KICAg
ICAgICAgICAgICAgICAgICAgXSkKICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICApLCBt
b2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAorICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSwg
J2xvZycsIHJlLmNvbXBpbGUocicuKycpLAorICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgs
CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yPWxhbWJkYSAqYXJncywgKiprd2FyZ3M6IG1vY2tz
LlByb2Nlc3NDb21wbGV0aW9uKAorICAgICAgICAgICAgICAgICAgICByZXR1cm5jb2RlPTAsCisg
ICAgICAgICAgICAgICAgICAgIHN0ZG91dD0nXG4nLmpvaW4oWworICAgICAgICAgICAgICAgICAg
ICAgICAgJ2NvbW1pdCB7aGFzaH1cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICdBdXRob3I6
IHthdXRob3J9IDx7ZW1haWx9PlxuJworICAgICAgICAgICAgICAgICAgICAgICAgJ0RhdGU6ICAg
e2RhdGV9XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAnXG57bG9nfVxuJy5mb3JtYXQoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaD1jb21taXQuaGFzaCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhdXRob3I9Y29tbWl0LmF1dGhvci5uYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVtYWlsPWNvbW1pdC5hdXRob3IuZW1haWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0ZT1kYXRldGltZS51dGNmcm9tdGltZXN0YW1wKGNvbW1pdC50aW1l
c3RhbXAgKyB0aW1lLnRpbWV6b25lKS5zdHJmdGltZSgnJWEgJWIgJWQgJUg6JU06JVMgJVkgKzAw
MDAnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2c9J1xuJy5qb2luKFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKCcgICAgJyArIGxpbmUpIGlmIGxpbmUgZWxzZSAn
JyBmb3IgbGluZSBpbiBjb21taXQubWVzc2FnZS5zcGxpdGxpbmVzKCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBdICsgKFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAg
ICBnaXQtc3ZuLWlkOiBodHRwczovL3N2bi57fS9yZXBvc2l0b3J5L3t9L3RydW5rQHt9IDI2OGY0
NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYycuZm9ybWF0KAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZW1vdGUuc3BsaXQoJ0AnKVstMV0uc3BsaXQoJzon
KVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5h
bWUocGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdC5yZXZp
c2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApXSBpZiBnaXRfc3ZuIGVsc2UgW10p
LAorICAgICAgICAgICAgICAgICAgICAgICAgKSkgZm9yIGNvbW1pdCBpbiBzZWxmLmNvbW1pdHNf
aW5fcmFuZ2Uoc2VsZi5jb21taXRzW3NlbGYuZGVmYXVsdF9icmFuY2hdWzBdLmhhc2gsIGFyZ3Nb
Ml0pCisgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgKQorICAgICAgICAg
ICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKICAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1
dGFibGUsICdyZXYtbGlzdCcsICctLWNvdW50JywgJy0tbm8tbWVyZ2VzJywgcmUuY29tcGlsZShy
Jy4rJyksCiAgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24o
CkBAIC01MTEsNyArNTM2LDcgQEAgbm90aGluZyB0byBjb21taXQsIHdvcmtpbmcgdHJlZSBjbGVh
bgogCiAgICAgICAgIGJyYW5jaGVzID0gW3NlbGYuZGVmYXVsdF9icmFuY2hdCiAgICAgICAgIGlm
IGVuZCBpbiBzZWxmLmNvbW1pdHMua2V5cygpIGFuZCBlbmQgIT0gc2VsZi5kZWZhdWx0X2JyYW5j
aDoKLSAgICAgICAgICAgIGJyYW5jaGVzLmFwcGVuZChlbmQpCisgICAgICAgICAgICBicmFuY2hl
cy5pbnNlcnQoMCwgZW5kKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZm9yIGJyYW5jaCwg
Y29tbWl0cyBpbiBzZWxmLmNvbW1pdHMuaXRlbXMoKToKICAgICAgICAgICAgICAgICBpZiBicmFu
Y2ggPT0gc2VsZi5kZWZhdWx0X2JyYW5jaDoKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZ2l0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3Qv
Z2l0X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNzkzNDcpCisrKyBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2dpdF91bml0dGVzdC5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMjI1LDcgKzIyNSw3IEBAIGNsYXNzIFRlc3RHaXQodGVzdGluZy5QYXRoVGVz
dENhc2UpOgogCiAgICAgZGVmIHRlc3RfdGFnKHNlbGYpOgogICAgICAgICBmb3IgbW9jayBpbiBb
bW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCksIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgsIGdp
dF9zdm49VHJ1ZSldOgotICAgICAgICAgICAgd2l0aCBtb2NrOgorICAgICAgICAgICAgd2l0aCBt
b2NrLCBMb2dnZXJDYXB0dXJlKCk6CiAgICAgICAgICAgICAgICAgbW9jay50YWdzWyd0YWctMSdd
ID0gbW9jay5jb21taXRzWydicmFuY2gtYSddWy0xXQogCiAgICAgICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKQEAgLTIzNSw3ICsyMzUsNyBAQCBjbGFzcyBUZXN0R2l0KHRlc3RpbmcuUGF0
aFRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2NoZWNrb3V0KHNlbGYpOgogICAgICAgICBmb3Ig
bW9jayBpbiBbbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCksIG1vY2tzLmxvY2FsLkdpdChzZWxm
LnBhdGgsIGdpdF9zdm49VHJ1ZSldOgotICAgICAgICAgICAgd2l0aCBtb2NrOgorICAgICAgICAg
ICAgd2l0aCBtb2NrLCBMb2dnZXJDYXB0dXJlKCk6CiAgICAgICAgICAgICAgICAgbW9jay50YWdz
Wyd0YWctMSddID0gbW9jay5jb21taXRzWydicmFuY2gtYSddWy0xXQogCiAgICAgICAgICAgICAg
ICAgcmVwb3NpdG9yeSA9IGxvY2FsLkdpdChzZWxmLnBhdGgpCkBAIC0yNTEsNyArMjUxLDcgQEAg
Y2xhc3MgVGVzdEdpdCh0ZXN0aW5nLlBhdGhUZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9ub19s
b2coc2VsZik6CiAgICAgICAgIGZvciBtb2NrIGluIFttb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRo
KSwgbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCwgZ2l0X3N2bj1UcnVlKV06Ci0gICAgICAgICAg
ICB3aXRoIG1vY2s6CisgICAgICAgICAgICB3aXRoIG1vY2ssIExvZ2dlckNhcHR1cmUoKToKICAg
ICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21t
aXQoaWRlbnRpZmllcj0nNEBtYWluJywgaW5jbHVkZV9sb2c9RmFsc2UpLm1lc3NhZ2UpCiAKICAg
ICBkZWYgdGVzdF9hbHRlcm5hdGl2ZV9kZWZhdWx0X2JyYW5jaChzZWxmKToKQEAgLTI2Nyw3ICsy
NjcsNyBAQCBjbGFzcyBUZXN0R2l0KHRlc3RpbmcuUGF0aFRlc3RDYXNlKToKIAogICAgIGRlZiB0
ZXN0X29yZGVyKHNlbGYpOgogICAgICAgICBmb3IgbW9jayBpbiBbbW9ja3MubG9jYWwuR2l0KHNl
bGYucGF0aCksIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgsIGdpdF9zdm49VHJ1ZSldOgotICAg
ICAgICAgICAgd2l0aCBtb2NrOgorICAgICAgICAgICAgd2l0aCBtb2NrLCBMb2dnZXJDYXB0dXJl
KCk6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsb2NhbC5HaXQoc2VsZi5w
YXRoKS5jb21taXQoaGFzaD0nYmFlNWQxZTkwOTk5Jykub3JkZXIpCiAgICAgICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgxLCBsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQoaGFzaD0nZDhi
Y2UyNmZhNjVjJykub3JkZXIpCiAKQEAgLTM2NSw2ICszNjUsMzIgQEAgQ29tbWl0RGF0ZTogU2F0
IE9jdCAwMyAwMjowNjo0MCAyMDIwICswMAogJycnCiAgICAgICAgICAgICApCiAKKyAgICBkZWYg
dGVzdF9jYWNoZShzZWxmKToKKyAgICAgICAgZm9yIG1vY2sgaW4gW21vY2tzLmxvY2FsLkdpdChz
ZWxmLnBhdGgpLCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoLCBnaXRfc3ZuPVRydWUpXToKKyAg
ICAgICAgICAgIHdpdGggbW9jaywgT3V0cHV0Q2FwdHVyZSgpOgorICAgICAgICAgICAgICAgIHJl
cG8gPSBsb2NhbC5HaXQoc2VsZi5wYXRoKQorCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChyZXBvLmNhY2hlLnRvX2hhc2goaWRlbnRpZmllcj0nMUBtYWluJyksICc5YjgzMTFmMjVh
NzdiYTE0OTIzZDlkNWE2NTMyMTAzZjU0YWJlZmNiJykKKyAgICAgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHJlcG8uY2FjaGUudG9faWRlbnRpZmllcihoYXNoPSdkOGJjZTI2ZmE2NWMnKSwg
JzVAbWFpbicpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvLmNhY2hlLnRv
X2hhc2goaWRlbnRpZmllcj0nMi4zQGJyYW5jaC1iJyksICc3OTA3MjVhNmQ3OWUyOGRiMmVjZGRl
Mjk1NDhkMjI2MmMwYmQwNTlkJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
cG8uY2FjaGUudG9faGFzaChpZGVudGlmaWVyPScyLjFAYnJhbmNoLWEnKSwgJ2EzMGNlODQ5NGJm
MWFjMjgwN2E2OTg0NGY3MjZiZTRhOTg0M2NhNTUnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocmVwby5jYWNoZS50b19pZGVudGlmaWVyKGhhc2g9J2EzMGNlODQ5NGJmMScpLCAn
Mi4xQGJyYW5jaC1hJykKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwby5j
YWNoZS50b19pZGVudGlmaWVyKGhhc2g9J2JhZGMwZGQxZicpLCBOb25lKQorICAgICAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwby5jYWNoZS50b19oYXNoKGlkZW50aWZpZXI9JzZAbWFp
bicpLCBOb25lKQorCisgICAgZGVmIHRlc3RfcmV2aXNpb25fY2FjaGUoc2VsZik6CisgICAgICAg
IHdpdGggbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCwgZ2l0X3N2bj1UcnVlKSwgT3V0cHV0Q2Fw
dHVyZSgpOgorICAgICAgICAgICAgcmVwbyA9IGxvY2FsLkdpdChzZWxmLnBhdGgpCisKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwby5jYWNoZS50b19yZXZpc2lvbihpZGVudGlmaWVy
PScxQG1haW4nKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwby5jYWNoZS50
b19pZGVudGlmaWVyKHJldmlzaW9uPSdyOScpLCAnNUBtYWluJykKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocmVwby5jYWNoZS50b19oYXNoKHJldmlzaW9uPSdyOScpLCAnZDhiY2UyNmZh
NjVjNmZjOGYzOWMxNzkyN2FiYjc3ZjY5ZmFiODJmYycpCisKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocmVwby5jYWNoZS50b19pZGVudGlmaWVyKHJldmlzaW9uPTEwMCksIE5vbmUpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG8uY2FjaGUudG9fcmV2aXNpb24oaGFzaD0n
YmFkYzBkZDFmJyksIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG8uY2Fj
aGUudG9fcmV2aXNpb24oaWRlbnRpZmllcj0nNkBtYWluJyksIE5vbmUpCisKIAogY2xhc3MgVGVz
dEdpdEh1Yih0ZXN0aW5nLlRlc3RDYXNlKToKICAgICByZW1vdGUgPSAnaHR0cHM6Ly9naXRodWIu
ZXhhbXBsZS5jb20vV2ViS2l0L1dlYktpdCcKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X3J1bl9yZXN1bHRzX3VuaXR0ZXN0LnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X3J1
bl9yZXN1bHRzX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNzkzNDcpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9ydW5fcmVzdWx0c191bml0dGVzdC5w
eQkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQCBmcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5tb2RlbHMgaW1wb3J0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1w
b3J0IHRlc3RfcnVuX3Jlc3VsdHMKIGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQg
TW9ja09wdGlvbnMKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IE91dHB1dENhcHR1cmUKIGZy
b20gd2Via2l0c2NtcHkgaW1wb3J0IG1vY2tzCiAKIApAQCAtMTY2LDcgKzE2Nyw3IEBAIGNsYXNz
IFN1bW1hcml6ZWRSZXN1bHRzVGVzdCh1bml0dGVzdC5UZXMKICAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKHN1bW1hcnlbJ3JldmlzaW9uJ10sICc2JykKIAogICAgIGRlZiB0ZXN0X3N2bl9y
ZXZpc2lvbl9naXQoc2VsZik6Ci0gICAgICAgIHdpdGggbW9ja3MubG9jYWwuU3ZuKCksIG1vY2tz
LmxvY2FsLkdpdChwYXRoPScvJywgZ2l0X3N2bj1UcnVlKToKKyAgICAgICAgd2l0aCBtb2Nrcy5s
b2NhbC5Tdm4oKSwgbW9ja3MubG9jYWwuR2l0KHBhdGg9Jy8nLCBnaXRfc3ZuPVRydWUpLCBPdXRw
dXRDYXB0dXJlKCk6CiAgICAgICAgICAgICBzZWxmLnBvcnQuX29wdGlvbnMuYnVpbGRlcl9uYW1l
ID0gJ2R1bW15IGJ1aWxkZXInCiAgICAgICAgICAgICBzdW1tYXJ5ID0gc3VtbWFyaXplZF9yZXN1
bHRzKHNlbGYucG9ydCwgZXhwZWN0ZWQ9RmFsc2UsIHBhc3Npbmc9RmFsc2UsIGZsYWt5PUZhbHNl
KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc3VtbWFyeVsncmV2aXNpb24nXSwgJzkn
KQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2VfdW5pdHRlc3QucHkJ
KHJldmlzaW9uIDI3OTM0NykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlX3Vu
aXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMjksNyArMzI5LDcgQEAgY2xhc3MgUG9ydFRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbeydy
ZXBvc2l0b3J5X2lkJzogJ3dlYmtpdCcsICdpZCc6ICc2JywgJ2JyYW5jaCc6ICd0cnVuayd9XSwg
cG9ydC5jb21taXRzX2Zvcl91cGxvYWQoKSkKIAogICAgIGRlZiB0ZXN0X2NvbW1pdHNfZm9yX3Vw
bG9hZF9naXRfc3ZuKHNlbGYpOgotICAgICAgICB3aXRoIG1vY2tzLmxvY2FsLlN2bigpLCBtb2Nr
cy5sb2NhbC5HaXQocGF0aD0nLycsIGdpdF9zdm49VHJ1ZSk6CisgICAgICAgIHdpdGggbW9ja3Mu
bG9jYWwuU3ZuKCksIG1vY2tzLmxvY2FsLkdpdChwYXRoPScvJywgZ2l0X3N2bj1UcnVlKSwgT3V0
cHV0Q2FwdHVyZSgpOgogICAgICAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KHBvcnRfbmFt
ZT0nZm9vJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW3sKICAgICAgICAgICAgICAg
ICAncmVwb3NpdG9yeV9pZCc6ICd3ZWJraXQnLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432528</attachid>
            <date>2021-06-29 14:12:07 -0700</date>
            <delta_ts>2021-06-30 16:26:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225616-20210629141206.patch</filename>
            <type>text/plain</type>
            <size>28672</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3OTM4MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQxIEBACisyMDIxLTA2LTI5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0c2NtcHldIENhY2hlIGlkZW50aWZpZXJzIGluIEdpdCBjaGVj
a291dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NTYxNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzc3ODkyMzA+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29tcHV0aW5nIGlkZW50aWZpZXJzIGlu
IGdpdCBjYW4gYmUgc2xvdywgZXNwZWNpYWxseSBpZiB5b3UgbmVlZCB0byBjb21wdXRlCisgICAg
ICAgIG11bHRpcGxlLiBDYWNoaW5nIGFsbCBpZGVudGlmaWVycyBmb3IgYSBicmFuY2ggaXMgbm90
IG11Y2ggbW9yZSBleHBlbnNpdmUgdGhhbiBjYWxjdWxhdGluZyBhIHNpbmdsZSBpZGVudGlmaWVy
LiBBZGRpdGlvbmFsbHksIGNhY2hpbmcgYWxsIGlkZW50aWZpZXJzCisgICAgICAgIGxldHMgdXMg
YnVpbGQgYSBwZXJmb3JtYW50IHN1YnZlcnNpb24gbWFwcGluZywgYnlwYXNzaW5nIGdpdC1zdm4u
CisKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvc2V0dXAucHk6Cisg
ICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2lu
aXRfXy5weToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRz
Y21weS9sb2NhbC9naXQucHk6CisgICAgICAgIChHaXQuQ2FjaGUpOiBDbGFzcyBob2xkaW5nIGEg
Y2FjaGUgYWxsb3dpbmcgcXVpY2sgbWFwcGluZyBiZXR3ZWVuIGhhc2hlcywgaWRlbnRpZmllcnMg
YW5kIHJldmlzaW9ucy4KKyAgICAgICAgKEdpdC5DYWNoZS5fX2luaXRfXyk6IExvYWQgY2FjaGUg
ZnJvbSBqc29uIGZpbGUgb24gZGlzay4KKyAgICAgICAgKEdpdC5DYWNoZS5wYXRoKTogUGF0aCB0
byBsb2NhdGlvbiBvZiBjYWNoZSBvbiBkaXNrLgorICAgICAgICAoR2l0LkNhY2hlLl9maWxsKTog
UG9wdWxhdGUgcmV2aXNpb24gYW5kIGhhc2ggdG8gaWRlbnRpZmllciBkaWN0aW9uYXJpZXMuCisg
ICAgICAgIChHaXQuQ2FjaGUucG9wdWxhdGUpOiBQYXJzZSBnaXQtbG9nIGFuZCBwb3B1bGF0ZSBj
YWNoZS4KKyAgICAgICAgKEdpdC5DYWNoZS5oYXNoKTogR2l2ZW4gYW4gaWRlbnRpZmllciBvciBy
ZXZpc2lvbiwgZmluZCB0aGUgaGFzaC4KKyAgICAgICAgKEdpdC5DYWNoZS5yZXZpc2lvbik6IEdp
dmVuIGFuIGlkZW50aWZpZXIgb3IgaGFzaCwgZmluZCB0aGUgcmV2aXNpb24uCisgICAgICAgIChH
aXQuQ2FjaGUuaWRlbnRpZmllcik6IEdpdmVuIGEgaGFzaCBvciByZXZpc2lvbiwgZGV0ZXJtaW5l
IHRoZSBpZGVudGlmaWVyLgorICAgICAgICAoR2l0Ll9faW5pdF9fKTogSW5zdGFudGlhdGUgY2Fj
aGUuCisgICAgICAgIChHaXQuY29tbWl0KTogQ2hlY2sgY2FjaGUgYmVmb3JlIHJ1bm5pbmcgZXhw
ZW5zaXZlIGNvbW1hbmRzLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L21vY2tzL2xvY2FsL2dpdC5weTogQWRkIGBnaXQgbG9nYCBtb2NrLgorICAg
ICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZ2l0
X3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGVzdEdpdC50ZXN0X3RhZyk6IFN1cnByZXNzIGxvZ2dp
bmcuCisgICAgICAgIChUZXN0R2l0LnRlc3RfY2hlY2tvdXQpOiBEaXR0by4KKyAgICAgICAgKFRl
c3RHaXQudGVzdF9ub19sb2cpOiBEaXR0by4KKyAgICAgICAgKFRlc3RHaXQudGVzdF9vcmRlcik6
IERpdHRvLgorICAgICAgICAodGVzdF9jYWNoZSk6IFZlcmlmeSBpZGVudGlmaWVyIGNhY2hlLgor
ICAgICAgICAodGVzdF9yZXZpc2lvbl9jYWNoZSk6IFZlcmlmeSByZXZpc2lvbiBjYWNoZS4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9ydW5fcmVz
dWx0c191bml0dGVzdC5weToKKyAgICAgICAgKFN1bW1hcml6ZWRSZXN1bHRzVGVzdC50ZXN0X3N2
bl9yZXZpc2lvbl9naXQpOiBTdXJwcmVzcyBsb2dnaW5nLgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5OgorICAgICAgICAoUG9ydFRlc3QudGVzdF9jb21t
aXRzX2Zvcl91cGxvYWRfZ2l0X3N2bik6IFN1cnByZXNzIGxvZ2dpbmcuCisKIDIwMjEtMDYtMjkg
IEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFt3ZWJraXRj
b3JlcHldIEFkZCBOZXN0ZWRGdXp6eURpY3QKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdGNvcmVweS9zZXR1cC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRjb3JlcHkvc2V0dXAucHkJKHJldmlzaW9uIDI3OTM4MSkKKysrIFRvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS9zZXR1cC5weQkod29ya2luZyBjb3B5KQpAQCAt
MzAsNyArMzAsNyBAQCBkZWYgcmVhZG1lKCk6CiAKIHNldHVwKAogICAgIG5hbWU9J3dlYmtpdGNv
cmVweScsCi0gICAgdmVyc2lvbj0nMC43LjAnLAorICAgIHZlcnNpb249JzAuNy4xJywKICAgICBk
ZXNjcmlwdGlvbj0nTGlicmFyeSBjb250YWluaW5nIHZhcmlvdXMgUHl0aG9uIHN1cHBvcnQgY2xh
c3NlcyBhbmQgZnVuY3Rpb25zLicsCiAgICAgbG9uZ19kZXNjcmlwdGlvbj1yZWFkbWUoKSwKICAg
ICBjbGFzc2lmaWVycz1bCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3Jl
cHkvd2Via2l0Y29yZXB5L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkJKHJldmlzaW9u
IDI3OTM4MSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRj
b3JlcHkvX19pbml0X18ucHkJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgZnJvbSB3
ZWJraXRjb3JlcHkuY3JlZGVudGlhbHMgaW1wb3J0IGNyZQogZnJvbSB3ZWJraXRjb3JlcHkubWVh
c3VyZV90aW1lIGltcG9ydCBNZWFzdXJlVGltZQogZnJvbSB3ZWJraXRjb3JlcHkubmVzdGVkX2Z1
enp5X2RpY3QgaW1wb3J0IE5lc3RlZEZ1enp5RGljdAogCi12ZXJzaW9uID0gVmVyc2lvbigwLCA3
LCAwKQordmVyc2lvbiA9IFZlcnNpb24oMCwgNywgMSkKIAogZnJvbSB3ZWJraXRjb3JlcHkuYXV0
b2luc3RhbGwgaW1wb3J0IFBhY2thZ2UsIEF1dG9JbnN0YWxsCiBpZiBzeXMudmVyc2lvbl9pbmZv
ID4gKDMsIDApOgpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvbG9jYWwvZ2l0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL2dpdC5weQkocmV2aXNpb24gMjc5Mzgx
KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9j
YWwvZ2l0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiBpbXBvcnQgY2FsZW5k
YXIKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKK2ltcG9ydCBqc29uCiBpbXBvcnQgcmUKIGlt
cG9ydCBzaXgKIGltcG9ydCBzdWJwcm9jZXNzCkBAIC0zMSwxMiArMzIsMjIxIEBAIGltcG9ydCB0
aW1lCiAKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKIAotZnJvbSB3
ZWJraXRjb3JlcHkgaW1wb3J0IHJ1biwgZGVjb3JhdG9ycworZnJvbSB3ZWJraXRjb3JlcHkgaW1w
b3J0IHJ1biwgZGVjb3JhdG9ycywgTmVzdGVkRnV6enlEaWN0CiBmcm9tIHdlYmtpdHNjbXB5Lmxv
Y2FsIGltcG9ydCBTY20KIGZyb20gd2Via2l0c2NtcHkgaW1wb3J0IENvbW1pdCwgQ29udHJpYnV0
b3IsIGxvZwogCiAKIGNsYXNzIEdpdChTY20pOgorICAgIGNsYXNzIENhY2hlKG9iamVjdCk6Cisg
ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXBvLCBndXJhbnRlZWRfZm9yPTEwKToKKyAgICAg
ICAgICAgIHNlbGYucmVwbyA9IHJlcG8KKyAgICAgICAgICAgIHNlbGYuX29yZGVyZWRfY29tbWl0
cyA9IHt9CisgICAgICAgICAgICBzZWxmLl9oYXNoX3RvX2lkZW50aWZpZXJzID0gTmVzdGVkRnV6
enlEaWN0KHByaW1hcnlfc2l6ZT02KQorICAgICAgICAgICAgc2VsZi5fb3JkZXJlZF9yZXZpc2lv
bnMgPSB7fQorICAgICAgICAgICAgc2VsZi5fcmV2aXNpb25zX3RvX2lkZW50aWZpZXJzID0ge30K
KyAgICAgICAgICAgIHNlbGYuX2xhc3RfcG9wdWxhdGVkID0ge30KKyAgICAgICAgICAgIHNlbGYu
X2d1cmFudGVlZF9mb3IgPSBndXJhbnRlZWRfZm9yCisKKyAgICAgICAgICAgIGlmIG9zLnBhdGgu
ZXhpc3RzKHNlbGYucGF0aCk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAg
ICAgICB3aXRoIG9wZW4oc2VsZi5wYXRoKSBhcyBmaWxlOgorICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGVudCA9IGpzb24ubG9hZChmaWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fb3JkZXJlZF9jb21taXRzID0gY29udGVudFsnaGFzaGVzJ10KKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX29yZGVyZWRfcmV2aXNpb25zID0gY29udGVudFsncmV2aXNpb25zJ10KKwor
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9maWxsKHNlbGYucmVwby5kZWZhdWx0X2JyYW5jaCkK
KyAgICAgICAgICAgICAgICAgICAgZm9yIGJyYW5jaCBpbiBzZWxmLl9vcmRlcmVkX2NvbW1pdHMu
a2V5cygpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgYnJhbmNoID09IHNlbGYucmVwby5k
ZWZhdWx0X2JyYW5jaDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmlsbChicmFuY2gpCisgICAgICAgICAgICAgICAg
ZXhjZXB0IEJhc2VFeGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAg
ICBAcHJvcGVydHkKKyAgICAgICAgZGVmIHBhdGgoc2VsZik6CisgICAgICAgICAgICByZXR1cm4g
b3MucGF0aC5qb2luKHNlbGYucmVwby5yb290X3BhdGgsICcuZ2l0JywgJ2lkZW50aWZpZXJzLmpz
b24nKQorCisgICAgICAgIGRlZiBfZmlsbChzZWxmLCBicmFuY2gpOgorICAgICAgICAgICAgZGVm
YXVsdF9icmFuY2ggPSBzZWxmLnJlcG8uZGVmYXVsdF9icmFuY2gKKyAgICAgICAgICAgIGlmIGJy
YW5jaCA9PSBkZWZhdWx0X2JyYW5jaDoKKyAgICAgICAgICAgICAgICBicmFuY2hfcG9pbnQgPSBO
b25lCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGJyYW5jaF9wb2ludCA9IGlu
dChzZWxmLl9oYXNoX3RvX2lkZW50aWZpZXJzW3NlbGYuX29yZGVyZWRfY29tbWl0c1ticmFuY2hd
WzBdXS5zcGxpdCgnQCcpWzBdKQorCisgICAgICAgICAgICBpbmRleCA9IGxlbihzZWxmLl9vcmRl
cmVkX2NvbW1pdHNbYnJhbmNoXSkgLSAxCisgICAgICAgICAgICB3aGlsZSBpbmRleDoKKyAgICAg
ICAgICAgICAgICBpZGVudGlmaWVyID0gc2VsZi5faGFzaF90b19pZGVudGlmaWVycy5nZXQoc2Vs
Zi5fb3JkZXJlZF9jb21taXRzW2JyYW5jaF1baW5kZXhdKQorCisgICAgICAgICAgICAgICAgaWYg
aWRlbnRpZmllcjoKKyAgICAgICAgICAgICAgICAgICAgaWRfYnJhbmNoID0gaWRlbnRpZmllci5z
cGxpdCgnQCcpWy0xXQorICAgICAgICAgICAgICAgICAgICBpZiBicmFuY2ggaW4gKGRlZmF1bHRf
YnJhbmNoLCBpZF9icmFuY2gpOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgYnJhbmNoICE9IHNlbGYucmVwby5wcmlvcml0aXplX2JyYW5jaGVz
KChicmFuY2gsIGlkX2JyYW5jaCkpOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKwor
ICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgPSAne31Ae30nLmZvcm1hdCgne30ue30nLmZvcm1h
dChicmFuY2hfcG9pbnQsIGluZGV4KSBpZiBicmFuY2hfcG9pbnQgZWxzZSBpbmRleCwgYnJhbmNo
KQorICAgICAgICAgICAgICAgIHNlbGYuX2hhc2hfdG9faWRlbnRpZmllcnNbc2VsZi5fb3JkZXJl
ZF9jb21taXRzW2JyYW5jaF1baW5kZXhdXSA9IGlkZW50aWZpZXIKKyAgICAgICAgICAgICAgICBp
ZiBzZWxmLl9vcmRlcmVkX3JldmlzaW9uc1ticmFuY2hdW2luZGV4XToKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fcmV2aXNpb25zX3RvX2lkZW50aWZpZXJzW3NlbGYuX29yZGVyZWRfcmV2aXNp
b25zW2JyYW5jaF1baW5kZXhdXSA9IGlkZW50aWZpZXIKKyAgICAgICAgICAgICAgICBpbmRleCAt
PSAxCisKKyAgICAgICAgZGVmIHBvcHVsYXRlKHNlbGYsIGJyYW5jaD1Ob25lKToKKyAgICAgICAg
ICAgIGJyYW5jaCA9IGJyYW5jaCBvciBzZWxmLnJlcG8uYnJhbmNoCisgICAgICAgICAgICBpZiBu
b3QgYnJhbmNoOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgaWYgc2VsZi5f
bGFzdF9wb3B1bGF0ZWQuZ2V0KGJyYW5jaCwgMCkgKyBzZWxmLl9ndXJhbnRlZWRfZm9yID4gdGlt
ZS50aW1lKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBkZWZhdWx0X2Jy
YW5jaCA9IHNlbGYucmVwby5kZWZhdWx0X2JyYW5jaAorICAgICAgICAgICAgaXNfZGVmYXVsdF9i
cmFuY2ggPSBicmFuY2ggPT0gZGVmYXVsdF9icmFuY2gKKyAgICAgICAgICAgIGlmIGJyYW5jaCBu
b3QgaW4gc2VsZi5fb3JkZXJlZF9jb21taXRzOgorICAgICAgICAgICAgICAgIHNlbGYuX29yZGVy
ZWRfY29tbWl0c1ticmFuY2hdID0gWycnXSBpZiBpc19kZWZhdWx0X2JyYW5jaCBlbHNlIFtdCisg
ICAgICAgICAgICAgICAgc2VsZi5fb3JkZXJlZF9yZXZpc2lvbnNbYnJhbmNoXSA9IFswXSBpZiBp
c19kZWZhdWx0X2JyYW5jaCBlbHNlIFtdCisKKyAgICAgICAgICAgICMgSWYgd2UgYXJlbid0IG9u
IHRoZSBkZWZhdWx0IGJyYW5jaCwgd2Ugd2lsbCBuZWVkIHRoZSBkZWZhdWx0IGJyYW5jaCB0byBk
ZXRlcm1pbmUgd2hlbgorICAgICAgICAgICAgIyBvdXIgIGJyYW5jaCAgaW50ZXJzZWN0cyB3aXRo
IHRoZSBkZWZhdWx0IGJyYW5jaC4KKyAgICAgICAgICAgIGlmIG5vdCBpc19kZWZhdWx0X2JyYW5j
aDoKKyAgICAgICAgICAgICAgICBzZWxmLnBvcHVsYXRlKGJyYW5jaD1zZWxmLnJlcG8uZGVmYXVs
dF9icmFuY2gpCisgICAgICAgICAgICBoYXNoZXMgPSBbXQorICAgICAgICAgICAgcmV2aXNpb25z
ID0gW10KKworICAgICAgICAgICAgZGVmIF9hcHBlbmQoYnJhbmNoLCBoYXNoLCByZXZpc2lvbj1O
b25lKToKKyAgICAgICAgICAgICAgICBoYXNoZXMuYXBwZW5kKGhhc2gpCisgICAgICAgICAgICAg
ICAgcmV2aXNpb25zLmFwcGVuZChyZXZpc2lvbikKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVy
ID0gc2VsZi5faGFzaF90b19pZGVudGlmaWVycy5nZXQoaGFzaCwgJycpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGlkZW50aWZpZXIuZW5kc3dpdGgoZGVmYXVsdF9icmFuY2gpIG9yIGlkZW50aWZp
ZXIuZW5kc3dpdGgoYnJhbmNoKQorCisgICAgICAgICAgICBpbnRlcnNlY3RlZCA9IEZhbHNlCisg
ICAgICAgICAgICBsb2cgPSBOb25lCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAg
a3dhcmdzID0gZGljdCgpCisgICAgICAgICAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAo
MywgMCk6CisgICAgICAgICAgICAgICAgICAgIGt3YXJncyA9IGRpY3QoZW5jb2Rpbmc9J3V0Zi04
JykKKyAgICAgICAgICAgICAgICBzZWxmLl9sYXN0X3BvcHVsYXRlZFticmFuY2hdID0gdGltZS50
aW1lKCkKKyAgICAgICAgICAgICAgICBsb2cgPSBzdWJwcm9jZXNzLlBvcGVuKAorICAgICAgICAg
ICAgICAgICAgICBbc2VsZi5yZXBvLmV4ZWN1dGFibGUoKSwgJ2xvZycsIGJyYW5jaF0sCisgICAg
ICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnJlcG8ucm9vdF9wYXRoLAorICAgICAgICAgICAgICAg
ICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICBzdGRlcnI9
c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAqKiBrd2FyZ3MKKyAgICAgICAg
ICAgICAgICApCisgICAgICAgICAgICAgICAgaWYgbG9nLnBvbGwoKToKKyAgICAgICAgICAgICAg
ICAgICAgcmFpc2Ugc2VsZi5yZXBvLkV4Y2VwdGlvbigiRmFpbGVkIHRvIGNvbnN0cnVjdCBicmFu
Y2ggaGlzdG9yeSBmb3IgJ3t9JyIuZm9ybWF0KGJyYW5jaCkpCisKKyAgICAgICAgICAgICAgICBo
YXNoID0gTm9uZQorICAgICAgICAgICAgICAgIHJldmlzaW9uID0gTm9uZQorCisgICAgICAgICAg
ICAgICAgbGluZSA9IGxvZy5zdGRvdXQucmVhZGxpbmUoKQorICAgICAgICAgICAgICAgIHdoaWxl
IGxpbmU6CisgICAgICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnICAgIGdpdC1z
dm4taWQ6ICcpOgorICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBzZWxmLnJlcG8uR0lU
X1NWTl9SRVZJU0lPTi5tYXRjaChsaW5lLmxzdHJpcCgpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgbWF0Y2g6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2aXNpb24gPSBpbnQo
bWF0Y2guZ3JvdXAoJ3JldmlzaW9uJykpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5l
LnN0YXJ0c3dpdGgoJ2NvbW1pdCAnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBs
b2cuc3Rkb3V0LnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisK
KyAgICAgICAgICAgICAgICAgICAgaWYgaGFzaCBhbmQgX2FwcGVuZChicmFuY2gsIGhhc2gsIHJl
dmlzaW9uPXJldmlzaW9uKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhc2ggPSBOb25lCisg
ICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnNlY3RlZCA9IFRydWUKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgICAgICAgICAgaGFzaCA9IGxpbmUuc3BsaXQo
JyAnKVsxXS5yc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICByZXZpc2lvbiA9IE5vbmUKKyAg
ICAgICAgICAgICAgICAgICAgbGluZSA9IGxvZy5zdGRvdXQucmVhZGxpbmUoKQorCisgICAgICAg
ICAgICAgICAgaWYgaGFzaDoKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJzZWN0ZWQgPSBfYXBw
ZW5kKGJyYW5jaCwgaGFzaCwgcmV2aXNpb249cmV2aXNpb24pCisKKyAgICAgICAgICAgIGZpbmFs
bHk6CisgICAgICAgICAgICAgICAgaWYgbG9nOgorICAgICAgICAgICAgICAgICAgICBsb2cua2ls
bCgpCisKKyAgICAgICAgICAgIGlmIG5vdCBoYXNoZXMgb3IgaW50ZXJzZWN0ZWQgYW5kIGxlbiho
YXNoZXMpIDw9IDE6CisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgIGhhc2hl
cy5yZXZlcnNlKCkKKyAgICAgICAgICAgIHJldmlzaW9ucy5yZXZlcnNlKCkKKworICAgICAgICAg
ICAgb3JkZXIgPSBsZW4oc2VsZi5fb3JkZXJlZF9jb21taXRzW2JyYW5jaF0pIC0gMQorICAgICAg
ICAgICAgd2hpbGUgb3JkZXIgPiAwOgorICAgICAgICAgICAgICAgIGlmIGhhc2hlc1swXSA9PSBz
ZWxmLl9vcmRlcmVkX2NvbW1pdHNbYnJhbmNoXVtvcmRlcl06CisgICAgICAgICAgICAgICAgICAg
IG9yZGVyIC09IDEKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBv
cmRlciAtPSAxCisKKyAgICAgICAgICAgIHNlbGYuX29yZGVyZWRfY29tbWl0c1ticmFuY2hdID0g
c2VsZi5fb3JkZXJlZF9jb21taXRzW2JyYW5jaF1bOm9yZGVyICsgMV0gKyBoYXNoZXMKKyAgICAg
ICAgICAgIHNlbGYuX29yZGVyZWRfcmV2aXNpb25zW2JyYW5jaF0gPSBzZWxmLl9vcmRlcmVkX3Jl
dmlzaW9uc1ticmFuY2hdWzpvcmRlciArIDFdICsgcmV2aXNpb25zCisgICAgICAgICAgICBzZWxm
Ll9maWxsKGJyYW5jaCkKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdpdGgg
b3BlbihzZWxmLnBhdGgsICd3JykgYXMgZmlsZToKKyAgICAgICAgICAgICAgICAgICAganNvbi5k
dW1wKGRpY3QoCisgICAgICAgICAgICAgICAgICAgICAgICBoYXNoZXM9c2VsZi5fb3JkZXJlZF9j
b21taXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgcmV2aXNpb25zPXNlbGYuX29yZGVyZWRf
cmV2aXNpb25zLAorICAgICAgICAgICAgICAgICAgICApLCBmaWxlLCBpbmRlbnQ9NCkKKyAgICAg
ICAgICAgIGV4Y2VwdCAoSU9FcnJvciwgT1NFcnJvcik6CisgICAgICAgICAgICAgICAgc2VsZi5y
ZXBvLmxvZygiRmFpbGVkIHRvIHdyaXRlIGlkZW50aWZpZXIgY2FjaGUgdG8gJ3t9JyIuZm9ybWF0
KHNlbGYucGF0aCkpCisKKyAgICAgICAgZGVmIHRvX2hhc2goc2VsZiwgcmV2aXNpb249Tm9uZSwg
aWRlbnRpZmllcj1Ob25lLCBwb3B1bGF0ZT1UcnVlLCBicmFuY2g9Tm9uZSk6CisgICAgICAgICAg
ICBpZiByZXZpc2lvbjoKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gc2VsZi50b19pZGVu
dGlmaWVyKHJldmlzaW9uPXJldmlzaW9uLCBwb3B1bGF0ZT1wb3B1bGF0ZSwgYnJhbmNoPWJyYW5j
aCkKKyAgICAgICAgICAgIHBhcnRzID0gQ29tbWl0Ll9wYXJzZV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIsIGRvX2Fzc2VydD1GYWxzZSkKKyAgICAgICAgICAgIGlmIG5vdCBwYXJ0czoKKyAgICAgICAg
ICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICBfLCBiX2NvdW50LCBicmFuY2ggPSBw
YXJ0cworICAgICAgICAgICAgaWYgYl9jb3VudCA8IDA6CisgICAgICAgICAgICAgICAgcmV0dXJu
IE5vbmUKKyAgICAgICAgICAgIGlmIGJyYW5jaCBub3QgaW4gc2VsZi5fb3JkZXJlZF9jb21taXRz
IG9yIGxlbihzZWxmLl9vcmRlcmVkX2NvbW1pdHNbYnJhbmNoXSkgPD0gYl9jb3VudDoKKyAgICAg
ICAgICAgICAgICBpZiBwb3B1bGF0ZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wb3B1bGF0
ZShicmFuY2g9YnJhbmNoKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi50b19oYXNo
KGlkZW50aWZpZXI9aWRlbnRpZmllciwgcG9wdWxhdGU9RmFsc2UpCisgICAgICAgICAgICAgICAg
cmV0dXJuIE5vbmUKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9vcmRlcmVkX2NvbW1pdHNbYnJh
bmNoXVtiX2NvdW50XQorCisgICAgICAgIGRlZiB0b19yZXZpc2lvbihzZWxmLCBoYXNoPU5vbmUs
IGlkZW50aWZpZXI9Tm9uZSwgcG9wdWxhdGU9VHJ1ZSwgYnJhbmNoPU5vbmUpOgorICAgICAgICAg
ICAgaWYgaGFzaDoKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gc2VsZi50b19pZGVudGlm
aWVyKGhhc2g9aGFzaCwgcG9wdWxhdGU9cG9wdWxhdGUsIGJyYW5jaD1icmFuY2gpCisgICAgICAg
ICAgICBwYXJ0cyA9IENvbW1pdC5fcGFyc2VfaWRlbnRpZmllcihpZGVudGlmaWVyLCBkb19hc3Nl
cnQ9RmFsc2UpCisgICAgICAgICAgICBpZiBub3QgcGFydHM6CisgICAgICAgICAgICAgICAgcmV0
dXJuIE5vbmUKKworICAgICAgICAgICAgXywgYl9jb3VudCwgYnJhbmNoID0gcGFydHMKKyAgICAg
ICAgICAgIGlmIGJfY291bnQgPCAwOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAg
ICAgICAgICBpZiBicmFuY2ggbm90IGluIHNlbGYuX29yZGVyZWRfcmV2aXNpb25zIG9yIGxlbihz
ZWxmLl9vcmRlcmVkX3JldmlzaW9uc1ticmFuY2hdKSA8PSBiX2NvdW50OgorICAgICAgICAgICAg
ICAgIGlmIHBvcHVsYXRlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnBvcHVsYXRlKGJyYW5j
aD1icmFuY2gpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnRvX3JldmlzaW9uKGlk
ZW50aWZpZXI9aWRlbnRpZmllciwgcG9wdWxhdGU9RmFsc2UpCisgICAgICAgICAgICAgICAgcmV0
dXJuIE5vbmUKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9vcmRlcmVkX3JldmlzaW9uc1ticmFu
Y2hdW2JfY291bnRdCisKKyAgICAgICAgZGVmIHRvX2lkZW50aWZpZXIoc2VsZiwgaGFzaD1Ob25l
LCByZXZpc2lvbj1Ob25lLCBwb3B1bGF0ZT1UcnVlLCBicmFuY2g9Tm9uZSk6CisgICAgICAgICAg
ICByZXZpc2lvbiA9IENvbW1pdC5fcGFyc2VfcmV2aXNpb24ocmV2aXNpb24sIGRvX2Fzc2VydD1G
YWxzZSkKKyAgICAgICAgICAgIGlmIHJldmlzaW9uOgorICAgICAgICAgICAgICAgIGlmIHJldmlz
aW9uIGluIHNlbGYuX3JldmlzaW9uc190b19pZGVudGlmaWVyczoKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHNlbGYuX3JldmlzaW9uc190b19pZGVudGlmaWVyc1tyZXZpc2lvbl0KKyAgICAg
ICAgICAgICAgICBpZiBwb3B1bGF0ZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wb3B1bGF0
ZShicmFuY2g9YnJhbmNoKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi50b19pZGVu
dGlmaWVyKHJldmlzaW9uPXJldmlzaW9uLCBwb3B1bGF0ZT1GYWxzZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICBoYXNoID0gQ29tbWl0Ll9wYXJzZV9oYXNoKGhh
c2gsIGRvX2Fzc2VydD1GYWxzZSkKKyAgICAgICAgICAgIGlmIGhhc2g6CisgICAgICAgICAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPSBzZWxmLl9oYXNoX3RvX2lk
ZW50aWZpZXJzLmdldChoYXNoKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjogICMg
TWVhbnMgdGhlIGhhc2ggd2Fzbid0IHNwZWNpZmljIGVub3VnaAorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICAgICAgaWYgY2FuZGlkYXRlOgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlCisgICAgICAgICAgICAgICAgaWYgcG9wdWxhdGU6
CisgICAgICAgICAgICAgICAgICAgIHNlbGYucG9wdWxhdGUoYnJhbmNoPWJyYW5jaCkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudG9faWRlbnRpZmllcihoYXNoPWhhc2gsIHBvcHVs
YXRlPUZhbHNlKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworCiAgICAgR0lUX0NPTU1JVCA9
IHJlLmNvbXBpbGUocidjb21taXQgKD9QPGhhc2g+WzAtOWEtZl0rKScpCiAKICAgICBAY2xhc3Nt
ZXRob2QKQEAgLTUxLDYgKzI2MSw3IEBAIGNsYXNzIEdpdChTY20pOgogICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBwYXRoLCBkZXZfYnJhbmNoZXM9Tm9uZSwgcHJvZF9icmFuY2hlcz1Ob25lLCBjb250
cmlidXRvcnM9Tm9uZSwgaWQ9Tm9uZSk6CiAgICAgICAgIHN1cGVyKEdpdCwgc2VsZikuX19pbml0
X18ocGF0aCwgZGV2X2JyYW5jaGVzPWRldl9icmFuY2hlcywgcHJvZF9icmFuY2hlcz1wcm9kX2Jy
YW5jaGVzLCBjb250cmlidXRvcnM9Y29udHJpYnV0b3JzLCBpZD1pZCkKICAgICAgICAgc2VsZi5f
YnJhbmNoID0gTm9uZQorICAgICAgICBzZWxmLmNhY2hlID0gc2VsZi5DYWNoZShzZWxmKSBpZiBz
ZWxmLnJvb3RfcGF0aCBlbHNlIE5vbmUKICAgICAgICAgaWYgbm90IHNlbGYucm9vdF9wYXRoOgog
ICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignUHJvdmlkZWQgcGF0aCB7fSBpcyBub3QgYSBnaXQg
cmVwb3NpdG9yeScuZm9ybWF0KHBhdGgpKQogCkBAIC0xNjMsMTIgKzM3NCwxOCBAQCBjbGFzcyBH
aXQoU2NtKToKICAgICAgICAgcmV0dXJuIHNvcnRlZChzZXQoWycvJy5qb2luKGJyYW5jaC5zcGxp
dCgnLycpWzI6XSkgaWYgYnJhbmNoLnN0YXJ0c3dpdGgoJ3JlbW90ZXMvb3JpZ2luLycpIGVsc2Ug
YnJhbmNoIGZvciBicmFuY2ggaW4gcmVzdWx0XSkpCiAKICAgICBkZWYgY29tbWl0KHNlbGYsIGhh
c2g9Tm9uZSwgcmV2aXNpb249Tm9uZSwgaWRlbnRpZmllcj1Ob25lLCBicmFuY2g9Tm9uZSwgdGFn
PU5vbmUsIGluY2x1ZGVfbG9nPVRydWUsIGluY2x1ZGVfaWRlbnRpZmllcj1UcnVlKToKLSAgICAg
ICAgIyBPbmx5IGdpdC1zdm4gY2hlY2tvdXRzIGNhbiBjb252ZXJ0IHJldmlzaW9ucyB0byBmdWxs
eSBxdWFsaWZpZWQgY29tbWl0cwotICAgICAgICBpZiByZXZpc2lvbiBhbmQgbm90IHNlbGYuaXNf
c3ZuOgorICAgICAgICAjIE9ubHkgZ2l0LXN2biBjaGVja291dHMgY2FuIGNvbnZlcnQgcmV2aXNp
b25zIHRvIGZ1bGx5IHF1YWxpZmllZCBjb21taXRzLCB1bmxlc3Mgd2UgaGFwcGVuIHRvIGhhdmUg
YSBTVk4gY2FjaGUgYnVpbHQKKyAgICAgICAgaWYgcmV2aXNpb246CisgICAgICAgICAgICBpZiBo
YXNoOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0Nhbm5vdCBkZWZpbmUgYm90
aCBoYXNoIGFuZCByZXZpc2lvbicpCisgICAgICAgICAgICBoYXNoID0gc2VsZi5jYWNoZS50b19o
YXNoKHJldmlzaW9uPXJldmlzaW9uLCBicmFuY2g9YnJhbmNoKSBpZiBzZWxmLmNhY2hlIGVsc2Ug
Tm9uZQorCisgICAgICAgICMgSWYgd2UgZG9uJ3QgaGF2ZSBhbiBTVk4gY2FjaGUgYnVpbHQsIGFu
ZCB3ZSdyZSBub3QgZ2l0LXN2biwgd2UgY2FuJ3QgcmVhc29uIGFib3V0IHJldmlzaW9ucworICAg
ICAgICBpZiByZXZpc2lvbiBhbmQgbm90IGhhc2ggYW5kIG5vdCBzZWxmLmlzX3N2bjoKICAgICAg
ICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0aW9uKCdUaGlzIGdpdCBjaGVja291dCBkb2VzIG5vdCBz
dXBwb3J0IFNWTiByZXZpc2lvbnMnKQogCiAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBoYXNoIGZv
ciBhIHByb3ZpZGVkIFN1YnZlcnNpb24gcmV2aXNpb24KLSAgICAgICAgZWxpZiByZXZpc2lvbjoK
KyAgICAgICAgZWxpZiByZXZpc2lvbiBhbmQgbm90IGhhc2g6CiAgICAgICAgICAgICBpZiBoYXNo
OgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0Nhbm5vdCBkZWZpbmUgYm90aCBo
YXNoIGFuZCByZXZpc2lvbicpCiAKQEAgLTIwNiwzMyArNDIzLDQ3IEBAIGNsYXNzIEdpdChTY20p
OgogICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAgKQogICAg
ICAgICAgICAgICAgIGJyYW5jaCA9IHBhcnNlZF9icmFuY2gKKyAgICAgICAgICAgICAgICBoYXNo
ID0gc2VsZi5jYWNoZS50b19oYXNoKGlkZW50aWZpZXI9J3t9QHt9Jy5mb3JtYXQoaWRlbnRpZmll
ciwgcGFyc2VkX2JyYW5jaCksIGJyYW5jaD1icmFuY2gpIGlmIHNlbGYuY2FjaGUgZWxzZSBOb25l
CiAKLSAgICAgICAgICAgIGJhc2VsaW5lID0gYnJhbmNoIG9yICdIRUFEJwotICAgICAgICAgICAg
aXNfZGVmYXVsdCA9IGJhc2VsaW5lID09IGRlZmF1bHRfYnJhbmNoCi0gICAgICAgICAgICBpZiBi
YXNlbGluZSA9PSAnSEVBRCc6Ci0gICAgICAgICAgICAgICAgaXNfZGVmYXVsdCA9IGRlZmF1bHRf
YnJhbmNoIGluIHNlbGYuX2JyYW5jaGVzX2ZvcihiYXNlbGluZSkKLQotICAgICAgICAgICAgaWYg
aXNfZGVmYXVsdCBhbmQgcGFyc2VkX2JyYW5jaF9wb2ludDoKLSAgICAgICAgICAgICAgICByYWlz
ZSBzZWxmLkV4Y2VwdGlvbignQ2Fubm90IHByb3ZpZGUgYSBicmFuY2ggcG9pbnQgZm9yIGEgY29t
bWl0IG9uIHRoZSBkZWZhdWx0IGJyYW5jaCcpCi0KLSAgICAgICAgICAgIGJhc2VfY291bnQgPSBz
ZWxmLl9jb21taXRfY291bnQoYmFzZWxpbmUgaWYgaXNfZGVmYXVsdCBlbHNlICd7fS4ue30nLmZv
cm1hdChkZWZhdWx0X2JyYW5jaCwgYmFzZWxpbmUpKQotCi0gICAgICAgICAgICBpZiBpZGVudGlm
aWVyID4gYmFzZV9jb3VudDoKLSAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbign
SWRlbnRpZmllciB7fSBjYW5ub3QgYmUgZm91bmQgb24gdGhlIHNwZWNpZmllZCBicmFuY2ggaW4g
dGhlIGN1cnJlbnQgY2hlY2tvdXQnLmZvcm1hdChpZGVudGlmaWVyKSkKLSAgICAgICAgICAgIGxv
ZyA9IHJ1bigKLSAgICAgICAgICAgICAgICBbc2VsZi5leGVjdXRhYmxlKCksICdsb2cnLCAne31+
e30nLmZvcm1hdChicmFuY2ggb3IgJ0hFQUQnLCBiYXNlX2NvdW50IC0gaWRlbnRpZmllcildICsg
bG9nX2Zvcm1hdCwKLSAgICAgICAgICAgICAgICBjd2Q9c2VsZi5yb290X3BhdGgsCi0gICAgICAg
ICAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwKLSAgICAgICAgICAgICAgICBlbmNvZGluZz0n
dXRmLTgnLAotICAgICAgICAgICAgKQotICAgICAgICAgICAgaWYgbG9nLnJldHVybmNvZGU6Ci0g
ICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oIkZhaWxlZCB0byByZXRyaWV2ZSBj
b21taXQgaW5mb3JtYXRpb24gZm9yICdpe31Ae30nIi5mb3JtYXQoaWRlbnRpZmllciwgYnJhbmNo
IG9yICdIRUFEJykpCisgICAgICAgICAgICAjIElmIHRoZSBjYWNoZSBtYW5hZ2VkIHRvIGNvbnZl
cnQgdGhlIGlkZW50aWZpZXIgdG8gYSBoYXNoLCB3ZSBjYW4gc2tpcCBzb21lIGNvbXB1dGF0aW9u
CisgICAgICAgICAgICBpZiBoYXNoOgorICAgICAgICAgICAgICAgIGxvZyA9IHJ1bigKKyAgICAg
ICAgICAgICAgICAgICAgW3NlbGYuZXhlY3V0YWJsZSgpLCAnbG9nJywgaGFzaF0gKyBsb2dfZm9y
bWF0LAorICAgICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5yb290X3BhdGgsCisgICAgICAgICAg
ICAgICAgICAgIGNhcHR1cmVfb3V0cHV0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGVuY29k
aW5nPSd1dGYtOCcsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGlmIGxvZy5y
ZXR1cm5jb2RlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbigiRmFp
bGVkIHRvIHJldHJpZXZlIGNvbW1pdCBpbmZvcm1hdGlvbiBmb3IgJ3t9JyIuZm9ybWF0KGhhc2gp
KQogCi0gICAgICAgICAgICAjIE5lZ2F0aXZlIGlkZW50aWZpZXJzIGFyZSBhY3R1YWxseSBjb21t
aXRzIG9uIHRoZSBkZWZhdWx0IGJyYW5jaCwgd2Ugd2lsbCBuZWVkIHRvIHJlLWNvbXB1dGUgdGhl
IGlkZW50aWZpZXIKLSAgICAgICAgICAgIGlmIGlkZW50aWZpZXIgPCAwIGFuZCBpc19kZWZhdWx0
OgotICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0aW9uKCdJbGxlZ2FsIG5lZ2F0aXZl
IGlkZW50aWZpZXIgb24gdGhlIGRlZmF1bHQgYnJhbmNoJykKLSAgICAgICAgICAgIGlmIGlkZW50
aWZpZXIgPCAwOgotICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgPSBOb25lCisgICAgICAgICAg
ICAjIFRoZSBjYWNoZSBoYXMgZmFpbGVkIHRvIGNvbnZlcnQgdGhlIGlkZW50aWZpZXIsIHdlIG5l
ZWQgdG8gZG8gaXQgdGhlIGV4cGVuc2l2ZSB3YXkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgYmFzZWxpbmUgPSBicmFuY2ggb3IgJ0hFQUQnCisgICAgICAgICAgICAgICAgaXNf
ZGVmYXVsdCA9IGJhc2VsaW5lID09IGRlZmF1bHRfYnJhbmNoCisgICAgICAgICAgICAgICAgaWYg
YmFzZWxpbmUgPT0gJ0hFQUQnOgorICAgICAgICAgICAgICAgICAgICBpc19kZWZhdWx0ID0gZGVm
YXVsdF9icmFuY2ggaW4gc2VsZi5fYnJhbmNoZXNfZm9yKGJhc2VsaW5lKQorCisgICAgICAgICAg
ICAgICAgaWYgaXNfZGVmYXVsdCBhbmQgcGFyc2VkX2JyYW5jaF9wb2ludDoKKyAgICAgICAgICAg
ICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oJ0Nhbm5vdCBwcm92aWRlIGEgYnJhbmNoIHBv
aW50IGZvciBhIGNvbW1pdCBvbiB0aGUgZGVmYXVsdCBicmFuY2gnKQorCisgICAgICAgICAgICAg
ICAgYmFzZV9jb3VudCA9IHNlbGYuX2NvbW1pdF9jb3VudChiYXNlbGluZSBpZiBpc19kZWZhdWx0
IGVsc2UgJ3t9Li57fScuZm9ybWF0KGRlZmF1bHRfYnJhbmNoLCBiYXNlbGluZSkpCisKKyAgICAg
ICAgICAgICAgICBpZiBpZGVudGlmaWVyID4gYmFzZV9jb3VudDoKKyAgICAgICAgICAgICAgICAg
ICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oJ0lkZW50aWZpZXIge30gY2Fubm90IGJlIGZvdW5kIG9u
IHRoZSBzcGVjaWZpZWQgYnJhbmNoIGluIHRoZSBjdXJyZW50IGNoZWNrb3V0Jy5mb3JtYXQoaWRl
bnRpZmllcikpCisgICAgICAgICAgICAgICAgbG9nID0gcnVuKAorICAgICAgICAgICAgICAgICAg
ICBbc2VsZi5leGVjdXRhYmxlKCksICdsb2cnLCAne31+e30nLmZvcm1hdChicmFuY2ggb3IgJ0hF
QUQnLCBiYXNlX2NvdW50IC0gaWRlbnRpZmllcildICsgbG9nX2Zvcm1hdCwKKyAgICAgICAgICAg
ICAgICAgICAgY3dkPXNlbGYucm9vdF9wYXRoLAorICAgICAgICAgICAgICAgICAgICBjYXB0dXJl
X291dHB1dD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz0ndXRmLTgnLAorICAg
ICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBpZiBsb2cucmV0dXJuY29kZToKKyAgICAg
ICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oIkZhaWxlZCB0byByZXRyaWV2ZSBj
b21taXQgaW5mb3JtYXRpb24gZm9yICdpe31Ae30nIi5mb3JtYXQoaWRlbnRpZmllciwgYnJhbmNo
IG9yICdIRUFEJykpCisKKyAgICAgICAgICAgICAgICAjIE5lZ2F0aXZlIGlkZW50aWZpZXJzIGFy
ZSBhY3R1YWxseSBjb21taXRzIG9uIHRoZSBkZWZhdWx0IGJyYW5jaCwgd2Ugd2lsbCBuZWVkIHRv
IHJlLWNvbXB1dGUgdGhlIGlkZW50aWZpZXIKKyAgICAgICAgICAgICAgICBpZiBpZGVudGlmaWVy
IDwgMCBhbmQgaXNfZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNl
cHRpb24oJ0lsbGVnYWwgbmVnYXRpdmUgaWRlbnRpZmllciBvbiB0aGUgZGVmYXVsdCBicmFuY2gn
KQorICAgICAgICAgICAgICAgIGlmIGlkZW50aWZpZXIgPCAwOgorICAgICAgICAgICAgICAgICAg
ICBpZGVudGlmaWVyID0gTm9uZQogCiAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBgZ2l0IGxvZ2Ag
b3V0cHV0IGZvciBhIGdpdmVuIGJyYW5jaCBvciB0YWcKICAgICAgICAgZWxpZiBicmFuY2ggb3Ig
dGFnOgpAQCAtMjU4LDE1ICs0ODksMjMgQEAgY2xhc3MgR2l0KFNjbSk6CiAgICAgICAgICAgICBy
YWlzZSBzZWxmLkV4Y2VwdGlvbignSW52YWxpZCBjb21taXQgaGFzaCBpbiBnaXQgbG9nJykKICAg
ICAgICAgaGFzaCA9IG1hdGNoLmdyb3VwKCdoYXNoJykKIAorICAgICAgICBicmFuY2hfcG9pbnQg
PSBOb25lCiAgICAgICAgICMgQSBjb21taXQgaXMgb2Z0ZW4gb24gbXVsdGlwbGUgYnJhbmNoZXMs
IHRoZSBjYW5vbmljYWwgYnJhbmNoIGlzIHRoZSBvbmUgd2l0aCB0aGUgaGlnaGVzdCBwcmlvcml0
eQotICAgICAgICBicmFuY2ggPSBzZWxmLnByaW9yaXRpemVfYnJhbmNoZXMoc2VsZi5fYnJhbmNo
ZXNfZm9yKGhhc2gpKQorICAgICAgICBpZiBicmFuY2ggIT0gZGVmYXVsdF9icmFuY2g6CisgICAg
ICAgICAgICBicmFuY2ggPSBzZWxmLnByaW9yaXRpemVfYnJhbmNoZXMoc2VsZi5fYnJhbmNoZXNf
Zm9yKGhhc2gpKQorCisgICAgICAgIGlmIG5vdCBpZGVudGlmaWVyIGFuZCBpbmNsdWRlX2lkZW50
aWZpZXI6CisgICAgICAgICAgICBjYWNoZWRfaWRlbnRpZmllciA9IHNlbGYuY2FjaGUudG9faWRl
bnRpZmllcihoYXNoPWhhc2gsIGJyYW5jaD1icmFuY2gpIGlmIHNlbGYuY2FjaGUgZWxzZSBOb25l
CisgICAgICAgICAgICBpZiBjYWNoZWRfaWRlbnRpZmllcjoKKyAgICAgICAgICAgICAgICBicmFu
Y2hfcG9pbnQsIGlkZW50aWZpZXIsIGJyYW5jaCA9IENvbW1pdC5fcGFyc2VfaWRlbnRpZmllcihj
YWNoZWRfaWRlbnRpZmllcikKIAogICAgICAgICAjIENvbXB1dGUgdGhlIGlkZW50aWZpZXIgaWYg
dGhlIGZ1bmN0aW9uIGRpZCBub3QgcmVjZWl2ZSBvbmUgYW5kIHdlIHdlcmUgYXNrZWQgdG8KICAg
ICAgICAgaWYgbm90IGlkZW50aWZpZXIgYW5kIGluY2x1ZGVfaWRlbnRpZmllcjoKICAgICAgICAg
ICAgIGlkZW50aWZpZXIgPSBzZWxmLl9jb21taXRfY291bnQoaGFzaCBpZiBicmFuY2ggPT0gZGVm
YXVsdF9icmFuY2ggZWxzZSAne30uLnt9Jy5mb3JtYXQoZGVmYXVsdF9icmFuY2gsIGhhc2gpKQog
CiAgICAgICAgICMgT25seSBjb21wdXRlIHRoZSBicmFuY2ggcG9pbnQgd2UncmUgb24gc29tZXRo
aW5nIG90aGVyIHRoYW4gdGhlIGRlZmF1bHQgYnJhbmNoCi0gICAgICAgIGJyYW5jaF9wb2ludCA9
IE5vbmUgaWYgbm90IGluY2x1ZGVfaWRlbnRpZmllciBvciBicmFuY2ggPT0gZGVmYXVsdF9icmFu
Y2ggZWxzZSBzZWxmLl9jb21taXRfY291bnQoaGFzaCkgLSBpZGVudGlmaWVyCisgICAgICAgIGlm
IG5vdCBicmFuY2hfcG9pbnQgYW5kIGluY2x1ZGVfaWRlbnRpZmllciBhbmQgYnJhbmNoICE9IGRl
ZmF1bHRfYnJhbmNoOgorICAgICAgICAgICAgYnJhbmNoX3BvaW50ID0gc2VsZi5fY29tbWl0X2Nv
dW50KGhhc2gpIC0gaWRlbnRpZmllcgogICAgICAgICBpZiBicmFuY2hfcG9pbnQgYW5kIHBhcnNl
ZF9icmFuY2hfcG9pbnQgYW5kIGJyYW5jaF9wb2ludCAhPSBwYXJzZWRfYnJhbmNoX3BvaW50Ogog
ICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUHJvdmlkZWQgJ2JyYW5jaF9wb2ludCcgZG9l
cyBub3QgbWF0Y2ggYnJhbmNoIHBvaW50IG9mIHNwZWNpZmllZCBicmFuY2giKQogCkluZGV4OiBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2Nh
bC9naXQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2Nt
cHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwvZ2l0LnB5CShyZXZpc2lvbiAyNzkzODEpCisrKyBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2Nh
bC9naXQucHkJKHdvcmtpbmcgY29weSkKQEAgLTI3MCw2ICsyNzAsMzEgQEAgbm90aGluZyB0byBj
b21taXQsIHdvcmtpbmcgdHJlZSBjbGVhbgogICAgICAgICAgICAgICAgICAgICBdKQogICAgICAg
ICAgICAgICAgICkKICAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCisgICAg
ICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLCAnbG9nJywgcmUuY29tcGlsZShyJy4rJyksCisg
ICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3I9
bGFtYmRhICphcmdzLCAqKmt3YXJnczogbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24oCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybmNvZGU9MCwKKyAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PSdc
bicuam9pbihbCisgICAgICAgICAgICAgICAgICAgICAgICAnY29tbWl0IHtoYXNofVxuJworICAg
ICAgICAgICAgICAgICAgICAgICAgJ0F1dGhvcjoge2F1dGhvcn0gPHtlbWFpbH0+XG4nCisgICAg
ICAgICAgICAgICAgICAgICAgICAnRGF0ZTogICB7ZGF0ZX1cbicKKyAgICAgICAgICAgICAgICAg
ICAgICAgICdcbntsb2d9XG4nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBo
YXNoPWNvbW1pdC5oYXNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhvcj1jb21t
aXQuYXV0aG9yLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1haWw9Y29tbWl0
LmF1dGhvci5lbWFpbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlPWRhdGV0aW1l
LnV0Y2Zyb210aW1lc3RhbXAoY29tbWl0LnRpbWVzdGFtcCArIHRpbWUudGltZXpvbmUpLnN0cmZ0
aW1lKCclYSAlYiAlZCAlSDolTTolUyAlWSArMDAwMCcpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxvZz0nXG4nLmpvaW4oWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
JyAgICAnICsgbGluZSkgaWYgbGluZSBlbHNlICcnIGZvciBsaW5lIGluIGNvbW1pdC5tZXNzYWdl
LnNwbGl0bGluZXMoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gKyAoWworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGdpdC1zdm4taWQ6IGh0dHBzOi8vc3ZuLnt9
L3JlcG9zaXRvcnkve30vdHJ1bmtAe30gMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRk
YmZjJy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJl
bW90ZS5zcGxpdCgnQCcpWy0xXS5zcGxpdCgnOicpWzBdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3MucGF0aC5iYXNlbmFtZShwYXRoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29tbWl0LnJldmlzaW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICldIGlmIGdpdF9zdm4gZWxzZSBbXSksCisgICAgICAgICAgICAgICAgICAgICAgICAp
KSBmb3IgY29tbWl0IGluIHNlbGYuY29tbWl0c19pbl9yYW5nZShzZWxmLmNvbW1pdHNbc2VsZi5k
ZWZhdWx0X2JyYW5jaF1bMF0uaGFzaCwgYXJnc1syXSkKKyAgICAgICAgICAgICAgICAgICAgXSkK
KyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRl
KAogICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSwgJ3Jldi1saXN0JywgJy0tY291bnQn
LCAnLS1uby1tZXJnZXMnLCByZS5jb21waWxlKHInLisnKSwKICAgICAgICAgICAgICAgICBjd2Q9
c2VsZi5wYXRoLAogICAgICAgICAgICAgICAgIGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dh
cmdzOiBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbigKQEAgLTUxMSw3ICs1MzYsNyBAQCBub3RoaW5n
IHRvIGNvbW1pdCwgd29ya2luZyB0cmVlIGNsZWFuCiAKICAgICAgICAgYnJhbmNoZXMgPSBbc2Vs
Zi5kZWZhdWx0X2JyYW5jaF0KICAgICAgICAgaWYgZW5kIGluIHNlbGYuY29tbWl0cy5rZXlzKCkg
YW5kIGVuZCAhPSBzZWxmLmRlZmF1bHRfYnJhbmNoOgotICAgICAgICAgICAgYnJhbmNoZXMuYXBw
ZW5kKGVuZCkKKyAgICAgICAgICAgIGJyYW5jaGVzLmluc2VydCgwLCBlbmQpCiAgICAgICAgIGVs
c2U6CiAgICAgICAgICAgICBmb3IgYnJhbmNoLCBjb21taXRzIGluIHNlbGYuY29tbWl0cy5pdGVt
cygpOgogICAgICAgICAgICAgICAgIGlmIGJyYW5jaCA9PSBzZWxmLmRlZmF1bHRfYnJhbmNoOgpJ
bmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVz
dC9naXRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9naXRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI3
OTM4MSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5
L3Rlc3QvZ2l0X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMjUsNyArMjI1LDcgQEAg
Y2xhc3MgVGVzdEdpdCh0ZXN0aW5nLlBhdGhUZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF90YWco
c2VsZik6CiAgICAgICAgIGZvciBtb2NrIGluIFttb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoKSwg
bW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCwgZ2l0X3N2bj1UcnVlKV06Ci0gICAgICAgICAgICB3
aXRoIG1vY2s6CisgICAgICAgICAgICB3aXRoIG1vY2ssIExvZ2dlckNhcHR1cmUoKToKICAgICAg
ICAgICAgICAgICBtb2NrLnRhZ3NbJ3RhZy0xJ10gPSBtb2NrLmNvbW1pdHNbJ2JyYW5jaC1hJ11b
LTFdCiAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKApAQCAtMjM1LDcgKzIzNSw3
IEBAIGNsYXNzIFRlc3RHaXQodGVzdGluZy5QYXRoVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3Rf
Y2hlY2tvdXQoc2VsZik6CiAgICAgICAgIGZvciBtb2NrIGluIFttb2Nrcy5sb2NhbC5HaXQoc2Vs
Zi5wYXRoKSwgbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCwgZ2l0X3N2bj1UcnVlKV06Ci0gICAg
ICAgICAgICB3aXRoIG1vY2s6CisgICAgICAgICAgICB3aXRoIG1vY2ssIExvZ2dlckNhcHR1cmUo
KToKICAgICAgICAgICAgICAgICBtb2NrLnRhZ3NbJ3RhZy0xJ10gPSBtb2NrLmNvbW1pdHNbJ2Jy
YW5jaC1hJ11bLTFdCiAKICAgICAgICAgICAgICAgICByZXBvc2l0b3J5ID0gbG9jYWwuR2l0KHNl
bGYucGF0aCkKQEAgLTI1MSw3ICsyNTEsNyBAQCBjbGFzcyBUZXN0R2l0KHRlc3RpbmcuUGF0aFRl
c3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X25vX2xvZyhzZWxmKToKICAgICAgICAgZm9yIG1vY2sg
aW4gW21vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgpLCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRo
LCBnaXRfc3ZuPVRydWUpXToKLSAgICAgICAgICAgIHdpdGggbW9jazoKKyAgICAgICAgICAgIHdp
dGggbW9jaywgTG9nZ2VyQ2FwdHVyZSgpOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNO
b25lKGxvY2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdChpZGVudGlmaWVyPSc0QG1haW4nLCBpbmNs
dWRlX2xvZz1GYWxzZSkubWVzc2FnZSkKIAogICAgIGRlZiB0ZXN0X2FsdGVybmF0aXZlX2RlZmF1
bHRfYnJhbmNoKHNlbGYpOgpAQCAtMjY3LDcgKzI2Nyw3IEBAIGNsYXNzIFRlc3RHaXQodGVzdGlu
Zy5QYXRoVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3Rfb3JkZXIoc2VsZik6CiAgICAgICAgIGZv
ciBtb2NrIGluIFttb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoKSwgbW9ja3MubG9jYWwuR2l0KHNl
bGYucGF0aCwgZ2l0X3N2bj1UcnVlKV06Ci0gICAgICAgICAgICB3aXRoIG1vY2s6CisgICAgICAg
ICAgICB3aXRoIG1vY2ssIExvZ2dlckNhcHR1cmUoKToKICAgICAgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDAsIGxvY2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdChoYXNoPSdiYWU1ZDFlOTA5
OTknKS5vcmRlcikKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxvY2FsLkdp
dChzZWxmLnBhdGgpLmNvbW1pdChoYXNoPSdkOGJjZTI2ZmE2NWMnKS5vcmRlcikKIApAQCAtMzY1
LDYgKzM2NSwzMiBAQCBDb21taXREYXRlOiBTYXQgT2N0IDAzIDAyOjA2OjQwIDIwMjAgKzAwCiAn
JycKICAgICAgICAgICAgICkKIAorICAgIGRlZiB0ZXN0X2NhY2hlKHNlbGYpOgorICAgICAgICBm
b3IgbW9jayBpbiBbbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCksIG1vY2tzLmxvY2FsLkdpdChz
ZWxmLnBhdGgsIGdpdF9zdm49VHJ1ZSldOgorICAgICAgICAgICAgd2l0aCBtb2NrLCBPdXRwdXRD
YXB0dXJlKCk6CisgICAgICAgICAgICAgICAgcmVwbyA9IGxvY2FsLkdpdChzZWxmLnBhdGgpCisK
KyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG8uY2FjaGUudG9faGFzaChpZGVu
dGlmaWVyPScxQG1haW4nKSwgJzliODMxMWYyNWE3N2JhMTQ5MjNkOWQ1YTY1MzIxMDNmNTRhYmVm
Y2InKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwby5jYWNoZS50b19pZGVu
dGlmaWVyKGhhc2g9J2Q4YmNlMjZmYTY1YycpLCAnNUBtYWluJykKKyAgICAgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHJlcG8uY2FjaGUudG9faGFzaChpZGVudGlmaWVyPScyLjNAYnJhbmNo
LWInKSwgJzc5MDcyNWE2ZDc5ZTI4ZGIyZWNkZGUyOTU0OGQyMjYyYzBiZDA1OWQnKQorICAgICAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwby5jYWNoZS50b19oYXNoKGlkZW50aWZpZXI9
JzIuMUBicmFuY2gtYScpLCAnYTMwY2U4NDk0YmYxYWMyODA3YTY5ODQ0ZjcyNmJlNGE5ODQzY2E1
NScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvLmNhY2hlLnRvX2lkZW50
aWZpZXIoaGFzaD0nYTMwY2U4NDk0YmYxJyksICcyLjFAYnJhbmNoLWEnKQorCisgICAgICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvLmNhY2hlLnRvX2lkZW50aWZpZXIoaGFzaD0nYmFk
YzBkZDFmJyksIE5vbmUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvLmNh
Y2hlLnRvX2hhc2goaWRlbnRpZmllcj0nNkBtYWluJyksIE5vbmUpCisKKyAgICBkZWYgdGVzdF9y
ZXZpc2lvbl9jYWNoZShzZWxmKToKKyAgICAgICAgd2l0aCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5w
YXRoLCBnaXRfc3ZuPVRydWUpLCBPdXRwdXRDYXB0dXJlKCk6CisgICAgICAgICAgICByZXBvID0g
bG9jYWwuR2l0KHNlbGYucGF0aCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBv
LmNhY2hlLnRvX3JldmlzaW9uKGlkZW50aWZpZXI9JzFAbWFpbicpLCAxKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChyZXBvLmNhY2hlLnRvX2lkZW50aWZpZXIocmV2aXNpb249J3I5Jyks
ICc1QG1haW4nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvLmNhY2hlLnRvX2hh
c2gocmV2aXNpb249J3I5JyksICdkOGJjZTI2ZmE2NWM2ZmM4ZjM5YzE3OTI3YWJiNzdmNjlmYWI4
MmZjJykKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvLmNhY2hlLnRvX2lkZW50
aWZpZXIocmV2aXNpb249MTAwKSwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cmVwby5jYWNoZS50b19yZXZpc2lvbihoYXNoPSdiYWRjMGRkMWYnKSwgTm9uZSkKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwby5jYWNoZS50b19yZXZpc2lvbihpZGVudGlmaWVyPSc2
QG1haW4nKSwgTm9uZSkKKwogCiBjbGFzcyBUZXN0R2l0SHViKHRlc3RpbmcuVGVzdENhc2UpOgog
ICAgIHJlbW90ZSA9ICdodHRwczovL2dpdGh1Yi5leGFtcGxlLmNvbS9XZWJLaXQvV2ViS2l0JwpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfcnVu
X3Jlc3VsdHNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfcnVuX3Jlc3VsdHNfdW5pdHRlc3QucHkJKHJldmlz
aW9uIDI3OTM4MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVs
cy90ZXN0X3J1bl9yZXN1bHRzX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICsz
NSw3IEBAIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQKIGZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9ydW5fcmVzdWx0cwogZnJvbSB3
ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucwogCitmcm9tIHdlYmtpdGNv
cmVweSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgbW9ja3MK
IAogCkBAIC0xNjYsNyArMTY3LDcgQEAgY2xhc3MgU3VtbWFyaXplZFJlc3VsdHNUZXN0KHVuaXR0
ZXN0LlRlcwogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc3VtbWFyeVsncmV2aXNpb24n
XSwgJzYnKQogCiAgICAgZGVmIHRlc3Rfc3ZuX3JldmlzaW9uX2dpdChzZWxmKToKLSAgICAgICAg
d2l0aCBtb2Nrcy5sb2NhbC5Tdm4oKSwgbW9ja3MubG9jYWwuR2l0KHBhdGg9Jy8nLCBnaXRfc3Zu
PVRydWUpOgorICAgICAgICB3aXRoIG1vY2tzLmxvY2FsLlN2bigpLCBtb2Nrcy5sb2NhbC5HaXQo
cGF0aD0nLycsIGdpdF9zdm49VHJ1ZSksIE91dHB1dENhcHR1cmUoKToKICAgICAgICAgICAgIHNl
bGYucG9ydC5fb3B0aW9ucy5idWlsZGVyX25hbWUgPSAnZHVtbXkgYnVpbGRlcicKICAgICAgICAg
ICAgIHN1bW1hcnkgPSBzdW1tYXJpemVkX3Jlc3VsdHMoc2VsZi5wb3J0LCBleHBlY3RlZD1GYWxz
ZSwgcGFzc2luZz1GYWxzZSwgZmxha3k9RmFsc2UpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhzdW1tYXJ5WydyZXZpc2lvbiddLCAnOScpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvYmFzZV91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvYmFzZV91bml0dGVzdC5weQkocmV2aXNpb24gMjc5MzgxKQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2VfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAg
LTMyOSw3ICszMjksNyBAQCBjbGFzcyBQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFt7J3JlcG9zaXRvcnlfaWQnOiAnd2Via2l0JywgJ2lk
JzogJzYnLCAnYnJhbmNoJzogJ3RydW5rJ31dLCBwb3J0LmNvbW1pdHNfZm9yX3VwbG9hZCgpKQog
CiAgICAgZGVmIHRlc3RfY29tbWl0c19mb3JfdXBsb2FkX2dpdF9zdm4oc2VsZik6Ci0gICAgICAg
IHdpdGggbW9ja3MubG9jYWwuU3ZuKCksIG1vY2tzLmxvY2FsLkdpdChwYXRoPScvJywgZ2l0X3N2
bj1UcnVlKToKKyAgICAgICAgd2l0aCBtb2Nrcy5sb2NhbC5Tdm4oKSwgbW9ja3MubG9jYWwuR2l0
KHBhdGg9Jy8nLCBnaXRfc3ZuPVRydWUpLCBPdXRwdXRDYXB0dXJlKCk6CiAgICAgICAgICAgICBw
b3J0ID0gc2VsZi5tYWtlX3BvcnQocG9ydF9uYW1lPSdmb28nKQogICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChbewogICAgICAgICAgICAgICAgICdyZXBvc2l0b3J5X2lkJzogJ3dlYmtpdCcs
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432642</attachid>
            <date>2021-06-30 16:26:15 -0700</date>
            <delta_ts>2021-06-30 17:16:25 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-225616-20210630162614.patch</filename>
            <type>text/plain</type>
            <size>28708</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3OTQzOSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQxIEBACisyMDIxLTA2LTMwICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0c2NtcHldIENhY2hlIGlkZW50aWZpZXJzIGluIEdpdCBjaGVj
a291dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NTYxNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzc3ODkyMzA+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGV3ZWkgWmh1LgorCisgICAgICAgIENvbXB1dGluZyBpZGVudGlmaWVycyBpbiBnaXQg
Y2FuIGJlIHNsb3csIGVzcGVjaWFsbHkgaWYgeW91IG5lZWQgdG8gY29tcHV0ZQorICAgICAgICBt
dWx0aXBsZS4gQ2FjaGluZyBhbGwgaWRlbnRpZmllcnMgZm9yIGEgYnJhbmNoIGlzIG5vdCBtdWNo
IG1vcmUgZXhwZW5zaXZlIHRoYW4gY2FsY3VsYXRpbmcgYSBzaW5nbGUgaWRlbnRpZmllci4gQWRk
aXRpb25hbGx5LCBjYWNoaW5nIGFsbCBpZGVudGlmaWVycworICAgICAgICBsZXRzIHVzIGJ1aWxk
IGEgcGVyZm9ybWFudCBzdWJ2ZXJzaW9uIG1hcHBpbmcsIGJ5cGFzc2luZyBnaXQtc3ZuLgorCisg
ICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3NldHVwLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18u
cHk6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkv
bG9jYWwvZ2l0LnB5OgorICAgICAgICAoR2l0LkNhY2hlKTogQ2xhc3MgaG9sZGluZyBhIGNhY2hl
IGFsbG93aW5nIHF1aWNrIG1hcHBpbmcgYmV0d2VlbiBoYXNoZXMsIGlkZW50aWZpZXJzIGFuZCBy
ZXZpc2lvbnMuCisgICAgICAgIChHaXQuQ2FjaGUuX19pbml0X18pOiBMb2FkIGNhY2hlIGZyb20g
anNvbiBmaWxlIG9uIGRpc2suCisgICAgICAgIChHaXQuQ2FjaGUucGF0aCk6IFBhdGggdG8gbG9j
YXRpb24gb2YgY2FjaGUgb24gZGlzay4KKyAgICAgICAgKEdpdC5DYWNoZS5fZmlsbCk6IFBvcHVs
YXRlIHJldmlzaW9uIGFuZCBoYXNoIHRvIGlkZW50aWZpZXIgZGljdGlvbmFyaWVzLgorICAgICAg
ICAoR2l0LkNhY2hlLnBvcHVsYXRlKTogUGFyc2UgZ2l0LWxvZyBhbmQgcG9wdWxhdGUgY2FjaGUu
CisgICAgICAgIChHaXQuQ2FjaGUuaGFzaCk6IEdpdmVuIGFuIGlkZW50aWZpZXIgb3IgcmV2aXNp
b24sIGZpbmQgdGhlIGhhc2guCisgICAgICAgIChHaXQuQ2FjaGUucmV2aXNpb24pOiBHaXZlbiBh
biBpZGVudGlmaWVyIG9yIGhhc2gsIGZpbmQgdGhlIHJldmlzaW9uLgorICAgICAgICAoR2l0LkNh
Y2hlLmlkZW50aWZpZXIpOiBHaXZlbiBhIGhhc2ggb3IgcmV2aXNpb24sIGRldGVybWluZSB0aGUg
aWRlbnRpZmllci4KKyAgICAgICAgKEdpdC5fX2luaXRfXyk6IEluc3RhbnRpYXRlIGNhY2hlLgor
ICAgICAgICAoR2l0LmNvbW1pdCk6IENoZWNrIGNhY2hlIGJlZm9yZSBydW5uaW5nIGV4cGVuc2l2
ZSBjb21tYW5kcy4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJr
aXRzY21weS9tb2Nrcy9sb2NhbC9naXQucHk6IEFkZCBgZ2l0IGxvZ2AgbW9jay4KKyAgICAgICAg
KiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2dpdF91bml0
dGVzdC5weToKKyAgICAgICAgKFRlc3RHaXQudGVzdF90YWcpOiBTdXJwcmVzcyBsb2dnaW5nLgor
ICAgICAgICAoVGVzdEdpdC50ZXN0X2NoZWNrb3V0KTogRGl0dG8uCisgICAgICAgIChUZXN0R2l0
LnRlc3Rfbm9fbG9nKTogRGl0dG8uCisgICAgICAgIChUZXN0R2l0LnRlc3Rfb3JkZXIpOiBEaXR0
by4KKyAgICAgICAgKHRlc3RfY2FjaGUpOiBWZXJpZnkgaWRlbnRpZmllciBjYWNoZS4KKyAgICAg
ICAgKHRlc3RfcmV2aXNpb25fY2FjaGUpOiBWZXJpZnkgcmV2aXNpb24gY2FjaGUuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfcnVuX3Jlc3VsdHNf
dW5pdHRlc3QucHk6CisgICAgICAgIChTdW1tYXJpemVkUmVzdWx0c1Rlc3QudGVzdF9zdm5fcmV2
aXNpb25fZ2l0KTogU3VycHJlc3MgbG9nZ2luZy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3BvcnQvYmFzZV91bml0dGVzdC5weToKKyAgICAgICAgKFBvcnRUZXN0LnRlc3RfY29tbWl0c19m
b3JfdXBsb2FkX2dpdF9zdm4pOiBTdXJwcmVzcyBsb2dnaW5nLgorCiAyMDIxLTA2LTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFtMaXZl
IFRleHRdICJUZXh0IGZyb20gQ2FtZXJhIiBzaG91bGQgbm90IGJlIHNob3duIGluIGNhbGxvdXQg
YmFyIHdoZW4gc2VsZWN0aW5nIHRleHQKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdGNvcmVweS9zZXR1cC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRjb3JlcHkvc2V0dXAucHkJKHJldmlzaW9uIDI3OTQzOSkKKysrIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS9zZXR1cC5weQkod29ya2luZyBjb3B5KQpAQCAtMzAs
NyArMzAsNyBAQCBkZWYgcmVhZG1lKCk6CiAKIHNldHVwKAogICAgIG5hbWU9J3dlYmtpdGNvcmVw
eScsCi0gICAgdmVyc2lvbj0nMC43LjAnLAorICAgIHZlcnNpb249JzAuNy4xJywKICAgICBkZXNj
cmlwdGlvbj0nTGlicmFyeSBjb250YWluaW5nIHZhcmlvdXMgUHl0aG9uIHN1cHBvcnQgY2xhc3Nl
cyBhbmQgZnVuY3Rpb25zLicsCiAgICAgbG9uZ19kZXNjcmlwdGlvbj1yZWFkbWUoKSwKICAgICBj
bGFzc2lmaWVycz1bCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkv
d2Via2l0Y29yZXB5L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkJKHJldmlzaW9uIDI3
OTQzOSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3Jl
cHkvX19pbml0X18ucHkJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgZnJvbSB3ZWJr
aXRjb3JlcHkuY3JlZGVudGlhbHMgaW1wb3J0IGNyZQogZnJvbSB3ZWJraXRjb3JlcHkubWVhc3Vy
ZV90aW1lIGltcG9ydCBNZWFzdXJlVGltZQogZnJvbSB3ZWJraXRjb3JlcHkubmVzdGVkX2Z1enp5
X2RpY3QgaW1wb3J0IE5lc3RlZEZ1enp5RGljdAogCi12ZXJzaW9uID0gVmVyc2lvbigwLCA3LCAw
KQordmVyc2lvbiA9IFZlcnNpb24oMCwgNywgMSkKIAogZnJvbSB3ZWJraXRjb3JlcHkuYXV0b2lu
c3RhbGwgaW1wb3J0IFBhY2thZ2UsIEF1dG9JbnN0YWxsCiBpZiBzeXMudmVyc2lvbl9pbmZvID4g
KDMsIDApOgpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0
c2NtcHkvbG9jYWwvZ2l0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL2dpdC5weQkocmV2aXNpb24gMjc5NDM5KQor
KysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwv
Z2l0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiBpbXBvcnQgY2FsZW5kYXIK
IGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKK2ltcG9ydCBqc29uCiBpbXBvcnQgcmUKIGltcG9y
dCBzaXgKIGltcG9ydCBzdWJwcm9jZXNzCkBAIC0zMSwxMiArMzIsMjIzIEBAIGltcG9ydCB0aW1l
CiAKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKIAotZnJvbSB3ZWJr
aXRjb3JlcHkgaW1wb3J0IHJ1biwgZGVjb3JhdG9ycworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0
IHJ1biwgZGVjb3JhdG9ycywgTmVzdGVkRnV6enlEaWN0CiBmcm9tIHdlYmtpdHNjbXB5LmxvY2Fs
IGltcG9ydCBTY20KIGZyb20gd2Via2l0c2NtcHkgaW1wb3J0IENvbW1pdCwgQ29udHJpYnV0b3Is
IGxvZwogCiAKIGNsYXNzIEdpdChTY20pOgorICAgIGNsYXNzIENhY2hlKG9iamVjdCk6CisgICAg
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXBvLCBndXJhbnRlZWRfZm9yPTEwKToKKyAgICAgICAg
ICAgIHNlbGYucmVwbyA9IHJlcG8KKyAgICAgICAgICAgIHNlbGYuX29yZGVyZWRfY29tbWl0cyA9
IHt9CisgICAgICAgICAgICBzZWxmLl9oYXNoX3RvX2lkZW50aWZpZXJzID0gTmVzdGVkRnV6enlE
aWN0KHByaW1hcnlfc2l6ZT02KQorICAgICAgICAgICAgc2VsZi5fb3JkZXJlZF9yZXZpc2lvbnMg
PSB7fQorICAgICAgICAgICAgc2VsZi5fcmV2aXNpb25zX3RvX2lkZW50aWZpZXJzID0ge30KKyAg
ICAgICAgICAgIHNlbGYuX2xhc3RfcG9wdWxhdGVkID0ge30KKyAgICAgICAgICAgIHNlbGYuX2d1
cmFudGVlZF9mb3IgPSBndXJhbnRlZWRfZm9yCisKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRo
LmV4aXN0cyhzZWxmLnBhdGgpOgorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAg
ICB0cnk6CisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHNlbGYucGF0aCkgYXMgZmlsZToKKyAg
ICAgICAgICAgICAgICAgICAgY29udGVudCA9IGpzb24ubG9hZChmaWxlKQorICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9vcmRlcmVkX2NvbW1pdHMgPSBjb250ZW50WydoYXNoZXMnXQorICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9vcmRlcmVkX3JldmlzaW9ucyA9IGNvbnRlbnRbJ3JldmlzaW9u
cyddCisKKyAgICAgICAgICAgICAgICBzZWxmLl9maWxsKHNlbGYucmVwby5kZWZhdWx0X2JyYW5j
aCkKKyAgICAgICAgICAgICAgICBmb3IgYnJhbmNoIGluIHNlbGYuX29yZGVyZWRfY29tbWl0cy5r
ZXlzKCk6CisgICAgICAgICAgICAgICAgICAgIGlmIGJyYW5jaCA9PSBzZWxmLnJlcG8uZGVmYXVs
dF9icmFuY2g6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9maWxsKGJyYW5jaCkKKyAgICAgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0
aW9uOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBAcHJvcGVydHkKKyAgICAgICAg
ZGVmIHBhdGgoc2VsZik6CisgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYucmVw
by5yb290X3BhdGgsICcuZ2l0JywgJ2lkZW50aWZpZXJzLmpzb24nKQorCisgICAgICAgIGRlZiBf
ZmlsbChzZWxmLCBicmFuY2gpOgorICAgICAgICAgICAgZGVmYXVsdF9icmFuY2ggPSBzZWxmLnJl
cG8uZGVmYXVsdF9icmFuY2gKKyAgICAgICAgICAgIGlmIGJyYW5jaCA9PSBkZWZhdWx0X2JyYW5j
aDoKKyAgICAgICAgICAgICAgICBicmFuY2hfcG9pbnQgPSBOb25lCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIGJyYW5jaF9wb2ludCA9IGludChzZWxmLl9oYXNoX3RvX2lkZW50
aWZpZXJzW3NlbGYuX29yZGVyZWRfY29tbWl0c1ticmFuY2hdWzBdXS5zcGxpdCgnQCcpWzBdKQor
CisgICAgICAgICAgICBpbmRleCA9IGxlbihzZWxmLl9vcmRlcmVkX2NvbW1pdHNbYnJhbmNoXSkg
LSAxCisgICAgICAgICAgICB3aGlsZSBpbmRleDoKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVy
ID0gc2VsZi5faGFzaF90b19pZGVudGlmaWVycy5nZXQoc2VsZi5fb3JkZXJlZF9jb21taXRzW2Jy
YW5jaF1baW5kZXhdKQorCisgICAgICAgICAgICAgICAgaWYgaWRlbnRpZmllcjoKKyAgICAgICAg
ICAgICAgICAgICAgaWRfYnJhbmNoID0gaWRlbnRpZmllci5zcGxpdCgnQCcpWy0xXQorICAgICAg
ICAgICAgICAgICAgICBpZiBicmFuY2ggaW4gKGRlZmF1bHRfYnJhbmNoLCBpZF9icmFuY2gpOgor
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgaWYgYnJh
bmNoICE9IHNlbGYucmVwby5wcmlvcml0aXplX2JyYW5jaGVzKChicmFuY2gsIGlkX2JyYW5jaCkp
OgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgICAgIGlkZW50
aWZpZXIgPSAne31Ae30nLmZvcm1hdCgne30ue30nLmZvcm1hdChicmFuY2hfcG9pbnQsIGluZGV4
KSBpZiBicmFuY2hfcG9pbnQgZWxzZSBpbmRleCwgYnJhbmNoKQorICAgICAgICAgICAgICAgIHNl
bGYuX2hhc2hfdG9faWRlbnRpZmllcnNbc2VsZi5fb3JkZXJlZF9jb21taXRzW2JyYW5jaF1baW5k
ZXhdXSA9IGlkZW50aWZpZXIKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9vcmRlcmVkX3Jldmlz
aW9uc1ticmFuY2hdW2luZGV4XToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmV2aXNpb25z
X3RvX2lkZW50aWZpZXJzW3NlbGYuX29yZGVyZWRfcmV2aXNpb25zW2JyYW5jaF1baW5kZXhdXSA9
IGlkZW50aWZpZXIKKyAgICAgICAgICAgICAgICBpbmRleCAtPSAxCisKKyAgICAgICAgZGVmIHBv
cHVsYXRlKHNlbGYsIGJyYW5jaD1Ob25lKToKKyAgICAgICAgICAgIGJyYW5jaCA9IGJyYW5jaCBv
ciBzZWxmLnJlcG8uYnJhbmNoCisgICAgICAgICAgICBpZiBub3QgYnJhbmNoOgorICAgICAgICAg
ICAgICAgIHJldHVybgorICAgICAgICAgICAgaWYgc2VsZi5fbGFzdF9wb3B1bGF0ZWQuZ2V0KGJy
YW5jaCwgMCkgKyBzZWxmLl9ndXJhbnRlZWRfZm9yID4gdGltZS50aW1lKCk6CisgICAgICAgICAg
ICAgICAgcmV0dXJuCisgICAgICAgICAgICBkZWZhdWx0X2JyYW5jaCA9IHNlbGYucmVwby5kZWZh
dWx0X2JyYW5jaAorICAgICAgICAgICAgaXNfZGVmYXVsdF9icmFuY2ggPSBicmFuY2ggPT0gZGVm
YXVsdF9icmFuY2gKKyAgICAgICAgICAgIGlmIGJyYW5jaCBub3QgaW4gc2VsZi5fb3JkZXJlZF9j
b21taXRzOgorICAgICAgICAgICAgICAgIHNlbGYuX29yZGVyZWRfY29tbWl0c1ticmFuY2hdID0g
WycnXSBpZiBpc19kZWZhdWx0X2JyYW5jaCBlbHNlIFtdCisgICAgICAgICAgICAgICAgc2VsZi5f
b3JkZXJlZF9yZXZpc2lvbnNbYnJhbmNoXSA9IFswXSBpZiBpc19kZWZhdWx0X2JyYW5jaCBlbHNl
IFtdCisKKyAgICAgICAgICAgICMgSWYgd2UgYXJlbid0IG9uIHRoZSBkZWZhdWx0IGJyYW5jaCwg
d2Ugd2lsbCBuZWVkIHRoZSBkZWZhdWx0IGJyYW5jaCB0byBkZXRlcm1pbmUgd2hlbgorICAgICAg
ICAgICAgIyBvdXIgIGJyYW5jaCAgaW50ZXJzZWN0cyB3aXRoIHRoZSBkZWZhdWx0IGJyYW5jaC4K
KyAgICAgICAgICAgIGlmIG5vdCBpc19kZWZhdWx0X2JyYW5jaDoKKyAgICAgICAgICAgICAgICBz
ZWxmLnBvcHVsYXRlKGJyYW5jaD1zZWxmLnJlcG8uZGVmYXVsdF9icmFuY2gpCisgICAgICAgICAg
ICBoYXNoZXMgPSBbXQorICAgICAgICAgICAgcmV2aXNpb25zID0gW10KKworICAgICAgICAgICAg
ZGVmIF9hcHBlbmQoYnJhbmNoLCBoYXNoLCByZXZpc2lvbj1Ob25lKToKKyAgICAgICAgICAgICAg
ICBoYXNoZXMuYXBwZW5kKGhhc2gpCisgICAgICAgICAgICAgICAgcmV2aXNpb25zLmFwcGVuZChy
ZXZpc2lvbikKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gc2VsZi5faGFzaF90b19pZGVu
dGlmaWVycy5nZXQoaGFzaCwgJycpCisgICAgICAgICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXIu
ZW5kc3dpdGgoZGVmYXVsdF9icmFuY2gpIG9yIGlkZW50aWZpZXIuZW5kc3dpdGgoYnJhbmNoKQor
CisgICAgICAgICAgICBpbnRlcnNlY3RlZCA9IEZhbHNlCisgICAgICAgICAgICBsb2cgPSBOb25l
CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAga3dhcmdzID0gZGljdCgpCisgICAg
ICAgICAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywgMCk6CisgICAgICAgICAgICAg
ICAgICAgIGt3YXJncyA9IGRpY3QoZW5jb2Rpbmc9J3V0Zi04JykKKyAgICAgICAgICAgICAgICBz
ZWxmLl9sYXN0X3BvcHVsYXRlZFticmFuY2hdID0gdGltZS50aW1lKCkKKyAgICAgICAgICAgICAg
ICBsb2cgPSBzdWJwcm9jZXNzLlBvcGVuKAorICAgICAgICAgICAgICAgICAgICBbc2VsZi5yZXBv
LmV4ZWN1dGFibGUoKSwgJ2xvZycsIGJyYW5jaF0sCisgICAgICAgICAgICAgICAgICAgIGN3ZD1z
ZWxmLnJlcG8ucm9vdF9wYXRoLAorICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vz
cy5QSVBFLAorICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAorICAg
ICAgICAgICAgICAgICAgICAqKiBrd2FyZ3MKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAg
ICAgICAgaWYgbG9nLnBvbGwoKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5yZXBv
LkV4Y2VwdGlvbigiRmFpbGVkIHRvIGNvbnN0cnVjdCBicmFuY2ggaGlzdG9yeSBmb3IgJ3t9JyIu
Zm9ybWF0KGJyYW5jaCkpCisKKyAgICAgICAgICAgICAgICBoYXNoID0gTm9uZQorICAgICAgICAg
ICAgICAgIHJldmlzaW9uID0gTm9uZQorCisgICAgICAgICAgICAgICAgbGluZSA9IGxvZy5zdGRv
dXQucmVhZGxpbmUoKQorICAgICAgICAgICAgICAgIHdoaWxlIGxpbmU6CisgICAgICAgICAgICAg
ICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnICAgIGdpdC1zdm4taWQ6ICcpOgorICAgICAgICAg
ICAgICAgICAgICAgICAgbWF0Y2ggPSBzZWxmLnJlcG8uR0lUX1NWTl9SRVZJU0lPTi5tYXRjaChs
aW5lLmxzdHJpcCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbWF0Y2g6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV2aXNpb24gPSBpbnQobWF0Y2guZ3JvdXAoJ3JldmlzaW9u
JykpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lLnN0YXJ0c3dpdGgoJ2NvbW1pdCAn
KToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsb2cuc3Rkb3V0LnJlYWRsaW5lKCkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAg
aWYgaGFzaCBhbmQgX2FwcGVuZChicmFuY2gsIGhhc2gsIHJldmlzaW9uPXJldmlzaW9uKToKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGhhc2ggPSBOb25lCisgICAgICAgICAgICAgICAgICAgICAg
ICBpbnRlcnNlY3RlZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAg
ICAgICAgICAgICAgICAgICAgaGFzaCA9IGxpbmUuc3BsaXQoJyAnKVsxXS5yc3RyaXAoKQorICAg
ICAgICAgICAgICAgICAgICByZXZpc2lvbiA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgbGlu
ZSA9IGxvZy5zdGRvdXQucmVhZGxpbmUoKQorCisgICAgICAgICAgICAgICAgaWYgaGFzaDoKKyAg
ICAgICAgICAgICAgICAgICAgaW50ZXJzZWN0ZWQgPSBfYXBwZW5kKGJyYW5jaCwgaGFzaCwgcmV2
aXNpb249cmV2aXNpb24pCisKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAg
aWYgbG9nOgorICAgICAgICAgICAgICAgICAgICBsb2cua2lsbCgpCisKKyAgICAgICAgICAgIGlm
IG5vdCBoYXNoZXMgb3IgaW50ZXJzZWN0ZWQgYW5kIGxlbihoYXNoZXMpIDw9IDE6CisgICAgICAg
ICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgIGhhc2hlcy5yZXZlcnNlKCkKKyAgICAgICAg
ICAgIHJldmlzaW9ucy5yZXZlcnNlKCkKKworICAgICAgICAgICAgb3JkZXIgPSBsZW4oc2VsZi5f
b3JkZXJlZF9jb21taXRzW2JyYW5jaF0pIC0gMQorICAgICAgICAgICAgd2hpbGUgb3JkZXIgPiAw
OgorICAgICAgICAgICAgICAgIGlmIGhhc2hlc1swXSA9PSBzZWxmLl9vcmRlcmVkX2NvbW1pdHNb
YnJhbmNoXVtvcmRlcl06CisgICAgICAgICAgICAgICAgICAgIG9yZGVyIC09IDEKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBvcmRlciAtPSAxCisKKyAgICAgICAg
ICAgIHNlbGYuX29yZGVyZWRfY29tbWl0c1ticmFuY2hdID0gc2VsZi5fb3JkZXJlZF9jb21taXRz
W2JyYW5jaF1bOm9yZGVyICsgMV0gKyBoYXNoZXMKKyAgICAgICAgICAgIHNlbGYuX29yZGVyZWRf
cmV2aXNpb25zW2JyYW5jaF0gPSBzZWxmLl9vcmRlcmVkX3JldmlzaW9uc1ticmFuY2hdWzpvcmRl
ciArIDFdICsgcmV2aXNpb25zCisgICAgICAgICAgICBzZWxmLl9maWxsKGJyYW5jaCkKKworICAg
ICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLnBhdGgsICd3Jykg
YXMgZmlsZToKKyAgICAgICAgICAgICAgICAgICAganNvbi5kdW1wKGRpY3QoCisgICAgICAgICAg
ICAgICAgICAgICAgICBoYXNoZXM9c2VsZi5fb3JkZXJlZF9jb21taXRzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV2aXNpb25zPXNlbGYuX29yZGVyZWRfcmV2aXNpb25zLAorICAgICAgICAg
ICAgICAgICAgICApLCBmaWxlLCBpbmRlbnQ9NCkKKyAgICAgICAgICAgIGV4Y2VwdCAoSU9FcnJv
ciwgT1NFcnJvcik6CisgICAgICAgICAgICAgICAgc2VsZi5yZXBvLmxvZygiRmFpbGVkIHRvIHdy
aXRlIGlkZW50aWZpZXIgY2FjaGUgdG8gJ3t9JyIuZm9ybWF0KHNlbGYucGF0aCkpCisKKyAgICAg
ICAgZGVmIHRvX2hhc2goc2VsZiwgcmV2aXNpb249Tm9uZSwgaWRlbnRpZmllcj1Ob25lLCBwb3B1
bGF0ZT1UcnVlLCBicmFuY2g9Tm9uZSk6CisgICAgICAgICAgICBpZiByZXZpc2lvbjoKKyAgICAg
ICAgICAgICAgICBpZGVudGlmaWVyID0gc2VsZi50b19pZGVudGlmaWVyKHJldmlzaW9uPXJldmlz
aW9uLCBwb3B1bGF0ZT1wb3B1bGF0ZSwgYnJhbmNoPWJyYW5jaCkKKyAgICAgICAgICAgIHBhcnRz
ID0gQ29tbWl0Ll9wYXJzZV9pZGVudGlmaWVyKGlkZW50aWZpZXIsIGRvX2Fzc2VydD1GYWxzZSkK
KyAgICAgICAgICAgIGlmIG5vdCBwYXJ0czoKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQor
CisgICAgICAgICAgICBfLCBiX2NvdW50LCBicmFuY2ggPSBwYXJ0cworICAgICAgICAgICAgaWYg
Yl9jb3VudCA8IDA6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIGlm
IGJyYW5jaCBub3QgaW4gc2VsZi5fb3JkZXJlZF9jb21taXRzIG9yIGxlbihzZWxmLl9vcmRlcmVk
X2NvbW1pdHNbYnJhbmNoXSkgPD0gYl9jb3VudDoKKyAgICAgICAgICAgICAgICBpZiBwb3B1bGF0
ZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wb3B1bGF0ZShicmFuY2g9YnJhbmNoKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi50b19oYXNoKGlkZW50aWZpZXI9aWRlbnRpZmll
ciwgcG9wdWxhdGU9RmFsc2UpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAg
ICAgIHJldHVybiBzZWxmLl9vcmRlcmVkX2NvbW1pdHNbYnJhbmNoXVtiX2NvdW50XQorCisgICAg
ICAgIGRlZiB0b19yZXZpc2lvbihzZWxmLCBoYXNoPU5vbmUsIGlkZW50aWZpZXI9Tm9uZSwgcG9w
dWxhdGU9VHJ1ZSwgYnJhbmNoPU5vbmUpOgorICAgICAgICAgICAgaWYgaGFzaDoKKyAgICAgICAg
ICAgICAgICBpZGVudGlmaWVyID0gc2VsZi50b19pZGVudGlmaWVyKGhhc2g9aGFzaCwgcG9wdWxh
dGU9cG9wdWxhdGUsIGJyYW5jaD1icmFuY2gpCisgICAgICAgICAgICBwYXJ0cyA9IENvbW1pdC5f
cGFyc2VfaWRlbnRpZmllcihpZGVudGlmaWVyLCBkb19hc3NlcnQ9RmFsc2UpCisgICAgICAgICAg
ICBpZiBub3QgcGFydHM6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAg
ICAgXywgYl9jb3VudCwgYnJhbmNoID0gcGFydHMKKyAgICAgICAgICAgIGlmIGJfY291bnQgPCAw
OgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICBpZiBicmFuY2ggbm90
IGluIHNlbGYuX29yZGVyZWRfcmV2aXNpb25zIG9yIGxlbihzZWxmLl9vcmRlcmVkX3JldmlzaW9u
c1ticmFuY2hdKSA8PSBiX2NvdW50OgorICAgICAgICAgICAgICAgIGlmIHBvcHVsYXRlOgorICAg
ICAgICAgICAgICAgICAgICBzZWxmLnBvcHVsYXRlKGJyYW5jaD1icmFuY2gpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBzZWxmLnRvX3JldmlzaW9uKGlkZW50aWZpZXI9aWRlbnRpZmllciwg
cG9wdWxhdGU9RmFsc2UpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAg
IHJldHVybiBzZWxmLl9vcmRlcmVkX3JldmlzaW9uc1ticmFuY2hdW2JfY291bnRdCisKKyAgICAg
ICAgZGVmIHRvX2lkZW50aWZpZXIoc2VsZiwgaGFzaD1Ob25lLCByZXZpc2lvbj1Ob25lLCBwb3B1
bGF0ZT1UcnVlLCBicmFuY2g9Tm9uZSk6CisgICAgICAgICAgICByZXZpc2lvbiA9IENvbW1pdC5f
cGFyc2VfcmV2aXNpb24ocmV2aXNpb24sIGRvX2Fzc2VydD1GYWxzZSkKKyAgICAgICAgICAgIGlm
IHJldmlzaW9uOgorICAgICAgICAgICAgICAgIGlmIHJldmlzaW9uIGluIHNlbGYuX3JldmlzaW9u
c190b19pZGVudGlmaWVyczoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Jldmlz
aW9uc190b19pZGVudGlmaWVyc1tyZXZpc2lvbl0KKyAgICAgICAgICAgICAgICBpZiBwb3B1bGF0
ZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wb3B1bGF0ZShicmFuY2g9YnJhbmNoKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi50b19pZGVudGlmaWVyKHJldmlzaW9uPXJldmlz
aW9uLCBwb3B1bGF0ZT1GYWxzZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAg
ICAgICAgICBoYXNoID0gQ29tbWl0Ll9wYXJzZV9oYXNoKGhhc2gsIGRvX2Fzc2VydD1GYWxzZSkK
KyAgICAgICAgICAgIGlmIGhhc2g6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAg
ICAgICAgICBjYW5kaWRhdGUgPSBzZWxmLl9oYXNoX3RvX2lkZW50aWZpZXJzLmdldChoYXNoKQor
ICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjogICMgTWVhbnMgdGhlIGhhc2ggd2Fzbid0
IHNwZWNpZmljIGVub3VnaAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAg
ICAgICAgICAgICAgaWYgY2FuZGlkYXRlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2Fu
ZGlkYXRlCisgICAgICAgICAgICAgICAgaWYgcG9wdWxhdGU6CisgICAgICAgICAgICAgICAgICAg
IHNlbGYucG9wdWxhdGUoYnJhbmNoPWJyYW5jaCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHNlbGYudG9faWRlbnRpZmllcihoYXNoPWhhc2gsIHBvcHVsYXRlPUZhbHNlKQorICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKKworCiAgICAgR0lUX0NPTU1JVCA9IHJlLmNvbXBpbGUocidjb21taXQg
KD9QPGhhc2g+WzAtOWEtZl0rKScpCiAKICAgICBAY2xhc3NtZXRob2QKQEAgLTUxLDYgKzI2Myw3
IEBAIGNsYXNzIEdpdChTY20pOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoLCBkZXZfYnJh
bmNoZXM9Tm9uZSwgcHJvZF9icmFuY2hlcz1Ob25lLCBjb250cmlidXRvcnM9Tm9uZSwgaWQ9Tm9u
ZSk6CiAgICAgICAgIHN1cGVyKEdpdCwgc2VsZikuX19pbml0X18ocGF0aCwgZGV2X2JyYW5jaGVz
PWRldl9icmFuY2hlcywgcHJvZF9icmFuY2hlcz1wcm9kX2JyYW5jaGVzLCBjb250cmlidXRvcnM9
Y29udHJpYnV0b3JzLCBpZD1pZCkKICAgICAgICAgc2VsZi5fYnJhbmNoID0gTm9uZQorICAgICAg
ICBzZWxmLmNhY2hlID0gc2VsZi5DYWNoZShzZWxmKSBpZiBzZWxmLnJvb3RfcGF0aCBlbHNlIE5v
bmUKICAgICAgICAgaWYgbm90IHNlbGYucm9vdF9wYXRoOgogICAgICAgICAgICAgcmFpc2UgT1NF
cnJvcignUHJvdmlkZWQgcGF0aCB7fSBpcyBub3QgYSBnaXQgcmVwb3NpdG9yeScuZm9ybWF0KHBh
dGgpKQogCkBAIC0xNjMsMTIgKzM3NiwxOCBAQCBjbGFzcyBHaXQoU2NtKToKICAgICAgICAgcmV0
dXJuIHNvcnRlZChzZXQoWycvJy5qb2luKGJyYW5jaC5zcGxpdCgnLycpWzI6XSkgaWYgYnJhbmNo
LnN0YXJ0c3dpdGgoJ3JlbW90ZXMvb3JpZ2luLycpIGVsc2UgYnJhbmNoIGZvciBicmFuY2ggaW4g
cmVzdWx0XSkpCiAKICAgICBkZWYgY29tbWl0KHNlbGYsIGhhc2g9Tm9uZSwgcmV2aXNpb249Tm9u
ZSwgaWRlbnRpZmllcj1Ob25lLCBicmFuY2g9Tm9uZSwgdGFnPU5vbmUsIGluY2x1ZGVfbG9nPVRy
dWUsIGluY2x1ZGVfaWRlbnRpZmllcj1UcnVlKToKLSAgICAgICAgIyBPbmx5IGdpdC1zdm4gY2hl
Y2tvdXRzIGNhbiBjb252ZXJ0IHJldmlzaW9ucyB0byBmdWxseSBxdWFsaWZpZWQgY29tbWl0cwot
ICAgICAgICBpZiByZXZpc2lvbiBhbmQgbm90IHNlbGYuaXNfc3ZuOgorICAgICAgICAjIE9ubHkg
Z2l0LXN2biBjaGVja291dHMgY2FuIGNvbnZlcnQgcmV2aXNpb25zIHRvIGZ1bGx5IHF1YWxpZmll
ZCBjb21taXRzLCB1bmxlc3Mgd2UgaGFwcGVuIHRvIGhhdmUgYSBTVk4gY2FjaGUgYnVpbHQKKyAg
ICAgICAgaWYgcmV2aXNpb246CisgICAgICAgICAgICBpZiBoYXNoOgorICAgICAgICAgICAgICAg
IHJhaXNlIFZhbHVlRXJyb3IoJ0Nhbm5vdCBkZWZpbmUgYm90aCBoYXNoIGFuZCByZXZpc2lvbicp
CisgICAgICAgICAgICBoYXNoID0gc2VsZi5jYWNoZS50b19oYXNoKHJldmlzaW9uPXJldmlzaW9u
LCBicmFuY2g9YnJhbmNoKSBpZiBzZWxmLmNhY2hlIGVsc2UgTm9uZQorCisgICAgICAgICMgSWYg
d2UgZG9uJ3QgaGF2ZSBhbiBTVk4gY2FjaGUgYnVpbHQsIGFuZCB3ZSdyZSBub3QgZ2l0LXN2biwg
d2UgY2FuJ3QgcmVhc29uIGFib3V0IHJldmlzaW9ucworICAgICAgICBpZiByZXZpc2lvbiBhbmQg
bm90IGhhc2ggYW5kIG5vdCBzZWxmLmlzX3N2bjoKICAgICAgICAgICAgIHJhaXNlIHNlbGYuRXhj
ZXB0aW9uKCdUaGlzIGdpdCBjaGVja291dCBkb2VzIG5vdCBzdXBwb3J0IFNWTiByZXZpc2lvbnMn
KQogCiAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBoYXNoIGZvciBhIHByb3ZpZGVkIFN1YnZlcnNp
b24gcmV2aXNpb24KLSAgICAgICAgZWxpZiByZXZpc2lvbjoKKyAgICAgICAgZWxpZiByZXZpc2lv
biBhbmQgbm90IGhhc2g6CiAgICAgICAgICAgICBpZiBoYXNoOgogICAgICAgICAgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IoJ0Nhbm5vdCBkZWZpbmUgYm90aCBoYXNoIGFuZCByZXZpc2lvbicpCiAK
QEAgLTIwNiwzMyArNDI1LDQ3IEBAIGNsYXNzIEdpdChTY20pOgogICAgICAgICAgICAgICAgICAg
ICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgIGJyYW5jaCA9
IHBhcnNlZF9icmFuY2gKKyAgICAgICAgICAgICAgICBoYXNoID0gc2VsZi5jYWNoZS50b19oYXNo
KGlkZW50aWZpZXI9J3t9QHt9Jy5mb3JtYXQoaWRlbnRpZmllciwgcGFyc2VkX2JyYW5jaCksIGJy
YW5jaD1icmFuY2gpIGlmIHNlbGYuY2FjaGUgZWxzZSBOb25lCiAKLSAgICAgICAgICAgIGJhc2Vs
aW5lID0gYnJhbmNoIG9yICdIRUFEJwotICAgICAgICAgICAgaXNfZGVmYXVsdCA9IGJhc2VsaW5l
ID09IGRlZmF1bHRfYnJhbmNoCi0gICAgICAgICAgICBpZiBiYXNlbGluZSA9PSAnSEVBRCc6Ci0g
ICAgICAgICAgICAgICAgaXNfZGVmYXVsdCA9IGRlZmF1bHRfYnJhbmNoIGluIHNlbGYuX2JyYW5j
aGVzX2ZvcihiYXNlbGluZSkKLQotICAgICAgICAgICAgaWYgaXNfZGVmYXVsdCBhbmQgcGFyc2Vk
X2JyYW5jaF9wb2ludDoKLSAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignQ2Fu
bm90IHByb3ZpZGUgYSBicmFuY2ggcG9pbnQgZm9yIGEgY29tbWl0IG9uIHRoZSBkZWZhdWx0IGJy
YW5jaCcpCi0KLSAgICAgICAgICAgIGJhc2VfY291bnQgPSBzZWxmLl9jb21taXRfY291bnQoYmFz
ZWxpbmUgaWYgaXNfZGVmYXVsdCBlbHNlICd7fS4ue30nLmZvcm1hdChkZWZhdWx0X2JyYW5jaCwg
YmFzZWxpbmUpKQotCi0gICAgICAgICAgICBpZiBpZGVudGlmaWVyID4gYmFzZV9jb3VudDoKLSAg
ICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignSWRlbnRpZmllciB7fSBjYW5ub3Qg
YmUgZm91bmQgb24gdGhlIHNwZWNpZmllZCBicmFuY2ggaW4gdGhlIGN1cnJlbnQgY2hlY2tvdXQn
LmZvcm1hdChpZGVudGlmaWVyKSkKLSAgICAgICAgICAgIGxvZyA9IHJ1bigKLSAgICAgICAgICAg
ICAgICBbc2VsZi5leGVjdXRhYmxlKCksICdsb2cnLCAne31+e30nLmZvcm1hdChicmFuY2ggb3Ig
J0hFQUQnLCBiYXNlX2NvdW50IC0gaWRlbnRpZmllcildICsgbG9nX2Zvcm1hdCwKLSAgICAgICAg
ICAgICAgICBjd2Q9c2VsZi5yb290X3BhdGgsCi0gICAgICAgICAgICAgICAgY2FwdHVyZV9vdXRw
dXQ9VHJ1ZSwKLSAgICAgICAgICAgICAgICBlbmNvZGluZz0ndXRmLTgnLAotICAgICAgICAgICAg
KQotICAgICAgICAgICAgaWYgbG9nLnJldHVybmNvZGU6Ci0gICAgICAgICAgICAgICAgcmFpc2Ug
c2VsZi5FeGNlcHRpb24oIkZhaWxlZCB0byByZXRyaWV2ZSBjb21taXQgaW5mb3JtYXRpb24gZm9y
ICdpe31Ae30nIi5mb3JtYXQoaWRlbnRpZmllciwgYnJhbmNoIG9yICdIRUFEJykpCisgICAgICAg
ICAgICAjIElmIHRoZSBjYWNoZSBtYW5hZ2VkIHRvIGNvbnZlcnQgdGhlIGlkZW50aWZpZXIgdG8g
YSBoYXNoLCB3ZSBjYW4gc2tpcCBzb21lIGNvbXB1dGF0aW9uCisgICAgICAgICAgICBpZiBoYXNo
OgorICAgICAgICAgICAgICAgIGxvZyA9IHJ1bigKKyAgICAgICAgICAgICAgICAgICAgW3NlbGYu
ZXhlY3V0YWJsZSgpLCAnbG9nJywgaGFzaF0gKyBsb2dfZm9ybWF0LAorICAgICAgICAgICAgICAg
ICAgICBjd2Q9c2VsZi5yb290X3BhdGgsCisgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVfb3V0
cHV0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPSd1dGYtOCcsCisgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgICAgIGlmIGxvZy5yZXR1cm5jb2RlOgorICAgICAgICAg
ICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbigiRmFpbGVkIHRvIHJldHJpZXZlIGNvbW1p
dCBpbmZvcm1hdGlvbiBmb3IgJ3t9JyIuZm9ybWF0KGhhc2gpKQogCi0gICAgICAgICAgICAjIE5l
Z2F0aXZlIGlkZW50aWZpZXJzIGFyZSBhY3R1YWxseSBjb21taXRzIG9uIHRoZSBkZWZhdWx0IGJy
YW5jaCwgd2Ugd2lsbCBuZWVkIHRvIHJlLWNvbXB1dGUgdGhlIGlkZW50aWZpZXIKLSAgICAgICAg
ICAgIGlmIGlkZW50aWZpZXIgPCAwIGFuZCBpc19kZWZhdWx0OgotICAgICAgICAgICAgICAgIHJh
aXNlIHNlbGYuRXhjZXB0aW9uKCdJbGxlZ2FsIG5lZ2F0aXZlIGlkZW50aWZpZXIgb24gdGhlIGRl
ZmF1bHQgYnJhbmNoJykKLSAgICAgICAgICAgIGlmIGlkZW50aWZpZXIgPCAwOgotICAgICAgICAg
ICAgICAgIGlkZW50aWZpZXIgPSBOb25lCisgICAgICAgICAgICAjIFRoZSBjYWNoZSBoYXMgZmFp
bGVkIHRvIGNvbnZlcnQgdGhlIGlkZW50aWZpZXIsIHdlIG5lZWQgdG8gZG8gaXQgdGhlIGV4cGVu
c2l2ZSB3YXkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYmFzZWxpbmUgPSBi
cmFuY2ggb3IgJ0hFQUQnCisgICAgICAgICAgICAgICAgaXNfZGVmYXVsdCA9IGJhc2VsaW5lID09
IGRlZmF1bHRfYnJhbmNoCisgICAgICAgICAgICAgICAgaWYgYmFzZWxpbmUgPT0gJ0hFQUQnOgor
ICAgICAgICAgICAgICAgICAgICBpc19kZWZhdWx0ID0gZGVmYXVsdF9icmFuY2ggaW4gc2VsZi5f
YnJhbmNoZXNfZm9yKGJhc2VsaW5lKQorCisgICAgICAgICAgICAgICAgaWYgaXNfZGVmYXVsdCBh
bmQgcGFyc2VkX2JyYW5jaF9wb2ludDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5F
eGNlcHRpb24oJ0Nhbm5vdCBwcm92aWRlIGEgYnJhbmNoIHBvaW50IGZvciBhIGNvbW1pdCBvbiB0
aGUgZGVmYXVsdCBicmFuY2gnKQorCisgICAgICAgICAgICAgICAgYmFzZV9jb3VudCA9IHNlbGYu
X2NvbW1pdF9jb3VudChiYXNlbGluZSBpZiBpc19kZWZhdWx0IGVsc2UgJ3t9Li57fScuZm9ybWF0
KGRlZmF1bHRfYnJhbmNoLCBiYXNlbGluZSkpCisKKyAgICAgICAgICAgICAgICBpZiBpZGVudGlm
aWVyID4gYmFzZV9jb3VudDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRp
b24oJ0lkZW50aWZpZXIge30gY2Fubm90IGJlIGZvdW5kIG9uIHRoZSBzcGVjaWZpZWQgYnJhbmNo
IGluIHRoZSBjdXJyZW50IGNoZWNrb3V0Jy5mb3JtYXQoaWRlbnRpZmllcikpCisgICAgICAgICAg
ICAgICAgbG9nID0gcnVuKAorICAgICAgICAgICAgICAgICAgICBbc2VsZi5leGVjdXRhYmxlKCks
ICdsb2cnLCAne31+e30nLmZvcm1hdChicmFuY2ggb3IgJ0hFQUQnLCBiYXNlX2NvdW50IC0gaWRl
bnRpZmllcildICsgbG9nX2Zvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgY3dkPXNlbGYucm9v
dF9wYXRoLAorICAgICAgICAgICAgICAgICAgICBjYXB0dXJlX291dHB1dD1UcnVlLAorICAgICAg
ICAgICAgICAgICAgICBlbmNvZGluZz0ndXRmLTgnLAorICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICAgICBpZiBsb2cucmV0dXJuY29kZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ug
c2VsZi5FeGNlcHRpb24oIkZhaWxlZCB0byByZXRyaWV2ZSBjb21taXQgaW5mb3JtYXRpb24gZm9y
ICdpe31Ae30nIi5mb3JtYXQoaWRlbnRpZmllciwgYnJhbmNoIG9yICdIRUFEJykpCisKKyAgICAg
ICAgICAgICAgICAjIE5lZ2F0aXZlIGlkZW50aWZpZXJzIGFyZSBhY3R1YWxseSBjb21taXRzIG9u
IHRoZSBkZWZhdWx0IGJyYW5jaCwgd2Ugd2lsbCBuZWVkIHRvIHJlLWNvbXB1dGUgdGhlIGlkZW50
aWZpZXIKKyAgICAgICAgICAgICAgICBpZiBpZGVudGlmaWVyIDwgMCBhbmQgaXNfZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oJ0lsbGVnYWwgbmVnYXRp
dmUgaWRlbnRpZmllciBvbiB0aGUgZGVmYXVsdCBicmFuY2gnKQorICAgICAgICAgICAgICAgIGlm
IGlkZW50aWZpZXIgPCAwOgorICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gTm9uZQog
CiAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBgZ2l0IGxvZ2Agb3V0cHV0IGZvciBhIGdpdmVuIGJy
YW5jaCBvciB0YWcKICAgICAgICAgZWxpZiBicmFuY2ggb3IgdGFnOgpAQCAtMjU4LDE1ICs0OTEs
MjMgQEAgY2xhc3MgR2l0KFNjbSk6CiAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbign
SW52YWxpZCBjb21taXQgaGFzaCBpbiBnaXQgbG9nJykKICAgICAgICAgaGFzaCA9IG1hdGNoLmdy
b3VwKCdoYXNoJykKIAorICAgICAgICBicmFuY2hfcG9pbnQgPSBOb25lCiAgICAgICAgICMgQSBj
b21taXQgaXMgb2Z0ZW4gb24gbXVsdGlwbGUgYnJhbmNoZXMsIHRoZSBjYW5vbmljYWwgYnJhbmNo
IGlzIHRoZSBvbmUgd2l0aCB0aGUgaGlnaGVzdCBwcmlvcml0eQotICAgICAgICBicmFuY2ggPSBz
ZWxmLnByaW9yaXRpemVfYnJhbmNoZXMoc2VsZi5fYnJhbmNoZXNfZm9yKGhhc2gpKQorICAgICAg
ICBpZiBicmFuY2ggIT0gZGVmYXVsdF9icmFuY2g6CisgICAgICAgICAgICBicmFuY2ggPSBzZWxm
LnByaW9yaXRpemVfYnJhbmNoZXMoc2VsZi5fYnJhbmNoZXNfZm9yKGhhc2gpKQorCisgICAgICAg
IGlmIG5vdCBpZGVudGlmaWVyIGFuZCBpbmNsdWRlX2lkZW50aWZpZXI6CisgICAgICAgICAgICBj
YWNoZWRfaWRlbnRpZmllciA9IHNlbGYuY2FjaGUudG9faWRlbnRpZmllcihoYXNoPWhhc2gsIGJy
YW5jaD1icmFuY2gpIGlmIHNlbGYuY2FjaGUgZWxzZSBOb25lCisgICAgICAgICAgICBpZiBjYWNo
ZWRfaWRlbnRpZmllcjoKKyAgICAgICAgICAgICAgICBicmFuY2hfcG9pbnQsIGlkZW50aWZpZXIs
IGJyYW5jaCA9IENvbW1pdC5fcGFyc2VfaWRlbnRpZmllcihjYWNoZWRfaWRlbnRpZmllcikKIAog
ICAgICAgICAjIENvbXB1dGUgdGhlIGlkZW50aWZpZXIgaWYgdGhlIGZ1bmN0aW9uIGRpZCBub3Qg
cmVjZWl2ZSBvbmUgYW5kIHdlIHdlcmUgYXNrZWQgdG8KICAgICAgICAgaWYgbm90IGlkZW50aWZp
ZXIgYW5kIGluY2x1ZGVfaWRlbnRpZmllcjoKICAgICAgICAgICAgIGlkZW50aWZpZXIgPSBzZWxm
Ll9jb21taXRfY291bnQoaGFzaCBpZiBicmFuY2ggPT0gZGVmYXVsdF9icmFuY2ggZWxzZSAne30u
Lnt9Jy5mb3JtYXQoZGVmYXVsdF9icmFuY2gsIGhhc2gpKQogCiAgICAgICAgICMgT25seSBjb21w
dXRlIHRoZSBicmFuY2ggcG9pbnQgd2UncmUgb24gc29tZXRoaW5nIG90aGVyIHRoYW4gdGhlIGRl
ZmF1bHQgYnJhbmNoCi0gICAgICAgIGJyYW5jaF9wb2ludCA9IE5vbmUgaWYgbm90IGluY2x1ZGVf
aWRlbnRpZmllciBvciBicmFuY2ggPT0gZGVmYXVsdF9icmFuY2ggZWxzZSBzZWxmLl9jb21taXRf
Y291bnQoaGFzaCkgLSBpZGVudGlmaWVyCisgICAgICAgIGlmIG5vdCBicmFuY2hfcG9pbnQgYW5k
IGluY2x1ZGVfaWRlbnRpZmllciBhbmQgYnJhbmNoICE9IGRlZmF1bHRfYnJhbmNoOgorICAgICAg
ICAgICAgYnJhbmNoX3BvaW50ID0gc2VsZi5fY29tbWl0X2NvdW50KGhhc2gpIC0gaWRlbnRpZmll
cgogICAgICAgICBpZiBicmFuY2hfcG9pbnQgYW5kIHBhcnNlZF9icmFuY2hfcG9pbnQgYW5kIGJy
YW5jaF9wb2ludCAhPSBwYXJzZWRfYnJhbmNoX3BvaW50OgogICAgICAgICAgICAgcmFpc2UgVmFs
dWVFcnJvcigiUHJvdmlkZWQgJ2JyYW5jaF9wb2ludCcgZG9lcyBub3QgbWF0Y2ggYnJhbmNoIHBv
aW50IG9mIHNwZWNpZmllZCBicmFuY2giKQogCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9naXQucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3Mv
bG9jYWwvZ2l0LnB5CShyZXZpc2lvbiAyNzk0MzkpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9naXQucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTI3MCw2ICsyNzAsMzEgQEAgbm90aGluZyB0byBjb21taXQsIHdvcmtpbmcgdHJlZSBj
bGVhbgogICAgICAgICAgICAgICAgICAgICBdKQogICAgICAgICAgICAgICAgICkKICAgICAgICAg
ICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCisgICAgICAgICAgICAgICAgc2VsZi5leGVj
dXRhYmxlLCAnbG9nJywgcmUuY29tcGlsZShyJy4rJyksCisgICAgICAgICAgICAgICAgY3dkPXNl
bGYucGF0aCwKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJn
czogbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24oCisgICAgICAgICAgICAgICAgICAgIHJldHVybmNv
ZGU9MCwKKyAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PSdcbicuam9pbihbCisgICAgICAgICAg
ICAgICAgICAgICAgICAnY29tbWl0IHtoYXNofVxuJworICAgICAgICAgICAgICAgICAgICAgICAg
J0F1dGhvcjoge2F1dGhvcn0gPHtlbWFpbH0+XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAn
RGF0ZTogICB7ZGF0ZX1cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICdcbntsb2d9XG4nLmZv
cm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoPWNvbW1pdC5oYXNoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhvcj1jb21taXQuYXV0aG9yLm5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZW1haWw9Y29tbWl0LmF1dGhvci5lbWFpbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkYXRlPWRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoY29t
bWl0LnRpbWVzdGFtcCArIHRpbWUudGltZXpvbmUpLnN0cmZ0aW1lKCclYSAlYiAlZCAlSDolTTol
UyAlWSArMDAwMCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZz0nXG4nLmpvaW4o
WworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJyAgICAnICsgbGluZSkgaWYgbGlu
ZSBlbHNlICcnIGZvciBsaW5lIGluIGNvbW1pdC5tZXNzYWdlLnNwbGl0bGluZXMoKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0gKyAoWworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnICAgIGdpdC1zdm4taWQ6IGh0dHBzOi8vc3ZuLnt9L3JlcG9zaXRvcnkve30vdHJ1bmtA
e30gMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjJy5mb3JtYXQoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlbW90ZS5zcGxpdCgnQCcpWy0xXS5z
cGxpdCgnOicpWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0
aC5iYXNlbmFtZShwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29t
bWl0LnJldmlzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICldIGlmIGdpdF9zdm4g
ZWxzZSBbXSksCisgICAgICAgICAgICAgICAgICAgICAgICApKSBmb3IgY29tbWl0IGluIHNlbGYu
Y29tbWl0c19pbl9yYW5nZShzZWxmLmNvbW1pdHNbc2VsZi5kZWZhdWx0X2JyYW5jaF1bMF0uaGFz
aCwgYXJnc1syXSkKKyAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICApCisg
ICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAogICAgICAgICAgICAgICAgIHNl
bGYuZXhlY3V0YWJsZSwgJ3Jldi1saXN0JywgJy0tY291bnQnLCAnLS1uby1tZXJnZXMnLCByZS5j
b21waWxlKHInLisnKSwKICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAogICAgICAgICAg
ICAgICAgIGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBtb2Nrcy5Qcm9jZXNzQ29t
cGxldGlvbigKQEAgLTUxMSw3ICs1MzYsNyBAQCBub3RoaW5nIHRvIGNvbW1pdCwgd29ya2luZyB0
cmVlIGNsZWFuCiAKICAgICAgICAgYnJhbmNoZXMgPSBbc2VsZi5kZWZhdWx0X2JyYW5jaF0KICAg
ICAgICAgaWYgZW5kIGluIHNlbGYuY29tbWl0cy5rZXlzKCkgYW5kIGVuZCAhPSBzZWxmLmRlZmF1
bHRfYnJhbmNoOgotICAgICAgICAgICAgYnJhbmNoZXMuYXBwZW5kKGVuZCkKKyAgICAgICAgICAg
IGJyYW5jaGVzLmluc2VydCgwLCBlbmQpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBmb3Ig
YnJhbmNoLCBjb21taXRzIGluIHNlbGYuY29tbWl0cy5pdGVtcygpOgogICAgICAgICAgICAgICAg
IGlmIGJyYW5jaCA9PSBzZWxmLmRlZmF1bHRfYnJhbmNoOgpJbmRleDogVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9naXRfdW5pdHRlc3QucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvdGVzdC9naXRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI3OTQzOSkKKysrIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZ2l0X3VuaXR0ZXN0LnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0yMjUsNyArMjI1LDcgQEAgY2xhc3MgVGVzdEdpdCh0ZXN0aW5n
LlBhdGhUZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF90YWcoc2VsZik6CiAgICAgICAgIGZvciBt
b2NrIGluIFttb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoKSwgbW9ja3MubG9jYWwuR2l0KHNlbGYu
cGF0aCwgZ2l0X3N2bj1UcnVlKV06Ci0gICAgICAgICAgICB3aXRoIG1vY2s6CisgICAgICAgICAg
ICB3aXRoIG1vY2ssIExvZ2dlckNhcHR1cmUoKToKICAgICAgICAgICAgICAgICBtb2NrLnRhZ3Nb
J3RhZy0xJ10gPSBtb2NrLmNvbW1pdHNbJ2JyYW5jaC1hJ11bLTFdCiAKICAgICAgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKApAQCAtMjM1LDcgKzIzNSw3IEBAIGNsYXNzIFRlc3RHaXQodGVz
dGluZy5QYXRoVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfY2hlY2tvdXQoc2VsZik6CiAgICAg
ICAgIGZvciBtb2NrIGluIFttb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoKSwgbW9ja3MubG9jYWwu
R2l0KHNlbGYucGF0aCwgZ2l0X3N2bj1UcnVlKV06Ci0gICAgICAgICAgICB3aXRoIG1vY2s6Cisg
ICAgICAgICAgICB3aXRoIG1vY2ssIExvZ2dlckNhcHR1cmUoKToKICAgICAgICAgICAgICAgICBt
b2NrLnRhZ3NbJ3RhZy0xJ10gPSBtb2NrLmNvbW1pdHNbJ2JyYW5jaC1hJ11bLTFdCiAKICAgICAg
ICAgICAgICAgICByZXBvc2l0b3J5ID0gbG9jYWwuR2l0KHNlbGYucGF0aCkKQEAgLTI1MSw3ICsy
NTEsNyBAQCBjbGFzcyBUZXN0R2l0KHRlc3RpbmcuUGF0aFRlc3RDYXNlKToKIAogICAgIGRlZiB0
ZXN0X25vX2xvZyhzZWxmKToKICAgICAgICAgZm9yIG1vY2sgaW4gW21vY2tzLmxvY2FsLkdpdChz
ZWxmLnBhdGgpLCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoLCBnaXRfc3ZuPVRydWUpXToKLSAg
ICAgICAgICAgIHdpdGggbW9jazoKKyAgICAgICAgICAgIHdpdGggbW9jaywgTG9nZ2VyQ2FwdHVy
ZSgpOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGxvY2FsLkdpdChzZWxmLnBh
dGgpLmNvbW1pdChpZGVudGlmaWVyPSc0QG1haW4nLCBpbmNsdWRlX2xvZz1GYWxzZSkubWVzc2Fn
ZSkKIAogICAgIGRlZiB0ZXN0X2FsdGVybmF0aXZlX2RlZmF1bHRfYnJhbmNoKHNlbGYpOgpAQCAt
MjY3LDcgKzI2Nyw3IEBAIGNsYXNzIFRlc3RHaXQodGVzdGluZy5QYXRoVGVzdENhc2UpOgogCiAg
ICAgZGVmIHRlc3Rfb3JkZXIoc2VsZik6CiAgICAgICAgIGZvciBtb2NrIGluIFttb2Nrcy5sb2Nh
bC5HaXQoc2VsZi5wYXRoKSwgbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCwgZ2l0X3N2bj1UcnVl
KV06Ci0gICAgICAgICAgICB3aXRoIG1vY2s6CisgICAgICAgICAgICB3aXRoIG1vY2ssIExvZ2dl
ckNhcHR1cmUoKToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxvY2FsLkdp
dChzZWxmLnBhdGgpLmNvbW1pdChoYXNoPSdiYWU1ZDFlOTA5OTknKS5vcmRlcikKICAgICAgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxvY2FsLkdpdChzZWxmLnBhdGgpLmNvbW1pdCho
YXNoPSdkOGJjZTI2ZmE2NWMnKS5vcmRlcikKIApAQCAtMzY1LDYgKzM2NSwzMiBAQCBDb21taXRE
YXRlOiBTYXQgT2N0IDAzIDAyOjA2OjQwIDIwMjAgKzAwCiAnJycKICAgICAgICAgICAgICkKIAor
ICAgIGRlZiB0ZXN0X2NhY2hlKHNlbGYpOgorICAgICAgICBmb3IgbW9jayBpbiBbbW9ja3MubG9j
YWwuR2l0KHNlbGYucGF0aCksIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgsIGdpdF9zdm49VHJ1
ZSldOgorICAgICAgICAgICAgd2l0aCBtb2NrLCBPdXRwdXRDYXB0dXJlKCk6CisgICAgICAgICAg
ICAgICAgcmVwbyA9IGxvY2FsLkdpdChzZWxmLnBhdGgpCisKKyAgICAgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHJlcG8uY2FjaGUudG9faGFzaChpZGVudGlmaWVyPScxQG1haW4nKSwgJzli
ODMxMWYyNWE3N2JhMTQ5MjNkOWQ1YTY1MzIxMDNmNTRhYmVmY2InKQorICAgICAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocmVwby5jYWNoZS50b19pZGVudGlmaWVyKGhhc2g9J2Q4YmNlMjZm
YTY1YycpLCAnNUBtYWluJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG8u
Y2FjaGUudG9faGFzaChpZGVudGlmaWVyPScyLjNAYnJhbmNoLWInKSwgJzc5MDcyNWE2ZDc5ZTI4
ZGIyZWNkZGUyOTU0OGQyMjYyYzBiZDA1OWQnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocmVwby5jYWNoZS50b19oYXNoKGlkZW50aWZpZXI9JzIuMUBicmFuY2gtYScpLCAnYTMw
Y2U4NDk0YmYxYWMyODA3YTY5ODQ0ZjcyNmJlNGE5ODQzY2E1NScpCisgICAgICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChyZXBvLmNhY2hlLnRvX2lkZW50aWZpZXIoaGFzaD0nYTMwY2U4NDk0
YmYxJyksICcyLjFAYnJhbmNoLWEnKQorCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyZXBvLmNhY2hlLnRvX2lkZW50aWZpZXIoaGFzaD0nYmFkYzBkZDFmJyksIE5vbmUpCisgICAg
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvLmNhY2hlLnRvX2hhc2goaWRlbnRpZmll
cj0nNkBtYWluJyksIE5vbmUpCisKKyAgICBkZWYgdGVzdF9yZXZpc2lvbl9jYWNoZShzZWxmKToK
KyAgICAgICAgd2l0aCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoLCBnaXRfc3ZuPVRydWUpLCBP
dXRwdXRDYXB0dXJlKCk6CisgICAgICAgICAgICByZXBvID0gbG9jYWwuR2l0KHNlbGYucGF0aCkK
KworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvLmNhY2hlLnRvX3JldmlzaW9uKGlk
ZW50aWZpZXI9JzFAbWFpbicpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBv
LmNhY2hlLnRvX2lkZW50aWZpZXIocmV2aXNpb249J3I5JyksICc1QG1haW4nKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvLmNhY2hlLnRvX2hhc2gocmV2aXNpb249J3I5JyksICdk
OGJjZTI2ZmE2NWM2ZmM4ZjM5YzE3OTI3YWJiNzdmNjlmYWI4MmZjJykKKworICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChyZXBvLmNhY2hlLnRvX2lkZW50aWZpZXIocmV2aXNpb249MTAwKSwg
Tm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwby5jYWNoZS50b19yZXZpc2lv
bihoYXNoPSdiYWRjMGRkMWYnKSwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cmVwby5jYWNoZS50b19yZXZpc2lvbihpZGVudGlmaWVyPSc2QG1haW4nKSwgTm9uZSkKKwogCiBj
bGFzcyBUZXN0R2l0SHViKHRlc3RpbmcuVGVzdENhc2UpOgogICAgIHJlbW90ZSA9ICdodHRwczov
L2dpdGh1Yi5leGFtcGxlLmNvbS9XZWJLaXQvV2ViS2l0JwpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfcnVuX3Jlc3VsdHNfdW5pdHRlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxz
L3Rlc3RfcnVuX3Jlc3VsdHNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI3OTQzOSkKKysrIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X3J1bl9yZXN1bHRzX3Vu
aXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBAIGZyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1v
ZGVscyBpbXBvcnQgdGVzdF9ydW5fcmVzdWx0cwogZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29s
IGltcG9ydCBNb2NrT3B0aW9ucwogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgT3V0cHV0Q2Fw
dHVyZQogZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgbW9ja3MKIAogCkBAIC0xNjYsNyArMTY3LDcg
QEAgY2xhc3MgU3VtbWFyaXplZFJlc3VsdHNUZXN0KHVuaXR0ZXN0LlRlcwogICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMoc3VtbWFyeVsncmV2aXNpb24nXSwgJzYnKQogCiAgICAgZGVmIHRl
c3Rfc3ZuX3JldmlzaW9uX2dpdChzZWxmKToKLSAgICAgICAgd2l0aCBtb2Nrcy5sb2NhbC5Tdm4o
KSwgbW9ja3MubG9jYWwuR2l0KHBhdGg9Jy8nLCBnaXRfc3ZuPVRydWUpOgorICAgICAgICB3aXRo
IG1vY2tzLmxvY2FsLlN2bigpLCBtb2Nrcy5sb2NhbC5HaXQocGF0aD0nLycsIGdpdF9zdm49VHJ1
ZSksIE91dHB1dENhcHR1cmUoKToKICAgICAgICAgICAgIHNlbGYucG9ydC5fb3B0aW9ucy5idWls
ZGVyX25hbWUgPSAnZHVtbXkgYnVpbGRlcicKICAgICAgICAgICAgIHN1bW1hcnkgPSBzdW1tYXJp
emVkX3Jlc3VsdHMoc2VsZi5wb3J0LCBleHBlY3RlZD1GYWxzZSwgcGFzc2luZz1GYWxzZSwgZmxh
a3k9RmFsc2UpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzdW1tYXJ5WydyZXZpc2lv
biddLCAnOScpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZV91bml0dGVz
dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZV91bml0
dGVzdC5weQkocmV2aXNpb24gMjc5NDM5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L2Jhc2VfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTMyOSw3ICszMjksNyBAQCBjbGFz
cyBQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKFt7J3JlcG9zaXRvcnlfaWQnOiAnd2Via2l0JywgJ2lkJzogJzYnLCAnYnJhbmNoJzogJ3Ry
dW5rJ31dLCBwb3J0LmNvbW1pdHNfZm9yX3VwbG9hZCgpKQogCiAgICAgZGVmIHRlc3RfY29tbWl0
c19mb3JfdXBsb2FkX2dpdF9zdm4oc2VsZik6Ci0gICAgICAgIHdpdGggbW9ja3MubG9jYWwuU3Zu
KCksIG1vY2tzLmxvY2FsLkdpdChwYXRoPScvJywgZ2l0X3N2bj1UcnVlKToKKyAgICAgICAgd2l0
aCBtb2Nrcy5sb2NhbC5Tdm4oKSwgbW9ja3MubG9jYWwuR2l0KHBhdGg9Jy8nLCBnaXRfc3ZuPVRy
dWUpLCBPdXRwdXRDYXB0dXJlKCk6CiAgICAgICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQo
cG9ydF9uYW1lPSdmb28nKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbewogICAgICAg
ICAgICAgICAgICdyZXBvc2l0b3J5X2lkJzogJ3dlYmtpdCcsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432729</attachid>
            <date>2021-07-01 15:13:25 -0700</date>
            <delta_ts>2021-07-01 15:23:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225616-20210701151324.patch</filename>
            <type>text/plain</type>
            <size>1955</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3OTQ4NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE3IEBACisyMDIxLTA3LTAxICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0c2NtcHldIENhY2hlIGlkZW50aWZpZXJzIGluIEdpdCBjaGVj
a291dHMgKEZvbGxvdy11cCBmaXgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjU2MTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc3Nzg5MjMwPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFB5dGhvbiAy
J3MgU3VicHJvY2VzcyBpcyAxMHggc2xvd2VyIHRoYW4gUHl0aG9uIDMsIHdoaWNoIG1lYW5zIGdl
bmVyYXRpbmcKKyAgICAgICAgdGhlIGNhY2hlIGlzIGltcHJhY3RpY2FsIGluIFB5dGhvbiAyLgor
CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9j
YWwvZ2l0LnB5OgorICAgICAgICAoR2l0Ll9faW5pdF9fKTogRGlzYWJsZSBjYWNoZSBvbiBQeXRo
b24gMiBieSBkZWZhdWx0LgorCiAyMDIxLTA3LTAxICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJk
QGFwcGxlLmNvbT4KIAogICAgICAgICBbY2xlYW4td2Via2l0XSBFeGNsdWRlIGF1dG9pbnN0YWxs
ZWQgZGlyZWN0b3J5CkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93
ZWJraXRzY21weS9sb2NhbC9naXQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5CShyZXZpc2lvbiAyNzk0
ODMpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9s
b2NhbC9naXQucHkJKHdvcmtpbmcgY29weSkKQEAgLTI2MCwxMCArMjYwLDEwIEBAIGNsYXNzIEdp
dChTY20pOgogICAgIGRlZiBpc19jaGVja291dChjbHMsIHBhdGgpOgogICAgICAgICByZXR1cm4g
cnVuKFtjbHMuZXhlY3V0YWJsZSgpLCAncmV2LXBhcnNlJywgJy0tc2hvdy10b3BsZXZlbCddLCBj
d2Q9cGF0aCwgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSkucmV0dXJuY29kZSA9PSAwCiAKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgcGF0aCwgZGV2X2JyYW5jaGVzPU5vbmUsIHByb2RfYnJhbmNoZXM9Tm9u
ZSwgY29udHJpYnV0b3JzPU5vbmUsIGlkPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBw
YXRoLCBkZXZfYnJhbmNoZXM9Tm9uZSwgcHJvZF9icmFuY2hlcz1Ob25lLCBjb250cmlidXRvcnM9
Tm9uZSwgaWQ9Tm9uZSwgY2FjaGVkPXN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCkpOgogICAgICAg
ICBzdXBlcihHaXQsIHNlbGYpLl9faW5pdF9fKHBhdGgsIGRldl9icmFuY2hlcz1kZXZfYnJhbmNo
ZXMsIHByb2RfYnJhbmNoZXM9cHJvZF9icmFuY2hlcywgY29udHJpYnV0b3JzPWNvbnRyaWJ1dG9y
cywgaWQ9aWQpCiAgICAgICAgIHNlbGYuX2JyYW5jaCA9IE5vbmUKLSAgICAgICAgc2VsZi5jYWNo
ZSA9IHNlbGYuQ2FjaGUoc2VsZikgaWYgc2VsZi5yb290X3BhdGggZWxzZSBOb25lCisgICAgICAg
IHNlbGYuY2FjaGUgPSBzZWxmLkNhY2hlKHNlbGYpIGlmIHNlbGYucm9vdF9wYXRoIGFuZCBjYWNo
ZWQgZWxzZSBOb25lCiAgICAgICAgIGlmIG5vdCBzZWxmLnJvb3RfcGF0aDoKICAgICAgICAgICAg
IHJhaXNlIE9TRXJyb3IoJ1Byb3ZpZGVkIHBhdGgge30gaXMgbm90IGEgZ2l0IHJlcG9zaXRvcnkn
LmZvcm1hdChwYXRoKSkKIAo=
</data>
<flag name="review"
          id="454779"
          type_id="1"
          status="+"
          setter="dewei_zhu"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432732</attachid>
            <date>2021-07-01 15:24:33 -0700</date>
            <delta_ts>2021-07-01 17:24:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225616-20210701152432.patch</filename>
            <type>text/plain</type>
            <size>3399</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3OTQ4NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIwIEBACisyMDIxLTA3LTAxICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0c2NtcHldIENhY2hlIGlkZW50aWZpZXJzIGluIEdpdCBjaGVj
a291dHMgKEZvbGxvdy11cCBmaXgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjU2MTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc3Nzg5MjMwPgor
CisgICAgICAgIFJldmlld2VkIGJ5IERld2VpIFpodS4KKworICAgICAgICBQeXRob24gMidzIFN1
YnByb2Nlc3MgaXMgMTB4IHNsb3dlciB0aGFuIFB5dGhvbiAzLCB3aGljaCBtZWFucyBnZW5lcmF0
aW5nCisgICAgICAgIHRoZSBjYWNoZSBpcyBpbXByYWN0aWNhbCBpbiBQeXRob24gMi4KKworICAg
ICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL2dp
dC5weToKKyAgICAgICAgKEdpdC5fX2luaXRfXyk6IERpc2FibGUgY2FjaGUgb24gUHl0aG9uIDIg
YnkgZGVmYXVsdC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJr
aXRzY21weS90ZXN0L2dpdF91bml0dGVzdC5weToKKyAgICAgICAgKHRlc3RfY2FjaGUpOiBGb3Jj
ZSBHaXQgdG8gdXNlIGNhY2hlLgorICAgICAgICAodGVzdF9yZXZpc2lvbl9jYWNoZSk6IERpdHRv
LgorCiAyMDIxLTA3LTAxICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbY2xlYW4td2Via2l0XSBFeGNsdWRlIGF1dG9pbnN0YWxsZWQgZGlyZWN0b3J5Cklu
ZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2Nh
bC9naXQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2Nt
cHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5CShyZXZpc2lvbiAyNzk0ODMpCisrKyBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9naXQucHkJKHdv
cmtpbmcgY29weSkKQEAgLTI2MCwxMCArMjYwLDEwIEBAIGNsYXNzIEdpdChTY20pOgogICAgIGRl
ZiBpc19jaGVja291dChjbHMsIHBhdGgpOgogICAgICAgICByZXR1cm4gcnVuKFtjbHMuZXhlY3V0
YWJsZSgpLCAncmV2LXBhcnNlJywgJy0tc2hvdy10b3BsZXZlbCddLCBjd2Q9cGF0aCwgY2FwdHVy
ZV9vdXRwdXQ9VHJ1ZSkucmV0dXJuY29kZSA9PSAwCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwg
cGF0aCwgZGV2X2JyYW5jaGVzPU5vbmUsIHByb2RfYnJhbmNoZXM9Tm9uZSwgY29udHJpYnV0b3Jz
PU5vbmUsIGlkPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoLCBkZXZfYnJhbmNo
ZXM9Tm9uZSwgcHJvZF9icmFuY2hlcz1Ob25lLCBjb250cmlidXRvcnM9Tm9uZSwgaWQ9Tm9uZSwg
Y2FjaGVkPXN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCkpOgogICAgICAgICBzdXBlcihHaXQsIHNl
bGYpLl9faW5pdF9fKHBhdGgsIGRldl9icmFuY2hlcz1kZXZfYnJhbmNoZXMsIHByb2RfYnJhbmNo
ZXM9cHJvZF9icmFuY2hlcywgY29udHJpYnV0b3JzPWNvbnRyaWJ1dG9ycywgaWQ9aWQpCiAgICAg
ICAgIHNlbGYuX2JyYW5jaCA9IE5vbmUKLSAgICAgICAgc2VsZi5jYWNoZSA9IHNlbGYuQ2FjaGUo
c2VsZikgaWYgc2VsZi5yb290X3BhdGggZWxzZSBOb25lCisgICAgICAgIHNlbGYuY2FjaGUgPSBz
ZWxmLkNhY2hlKHNlbGYpIGlmIHNlbGYucm9vdF9wYXRoIGFuZCBjYWNoZWQgZWxzZSBOb25lCiAg
ICAgICAgIGlmIG5vdCBzZWxmLnJvb3RfcGF0aDoKICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3Io
J1Byb3ZpZGVkIHBhdGgge30gaXMgbm90IGEgZ2l0IHJlcG9zaXRvcnknLmZvcm1hdChwYXRoKSkK
IApJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkv
dGVzdC9naXRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9naXRfdW5pdHRlc3QucHkJKHJldmlzaW9u
IDI3OTQ4MykKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNj
bXB5L3Rlc3QvZ2l0X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNjgsNyArMzY4LDcg
QEAgQ29tbWl0RGF0ZTogU2F0IE9jdCAwMyAwMjowNjo0MCAyMDIwICswMAogICAgIGRlZiB0ZXN0
X2NhY2hlKHNlbGYpOgogICAgICAgICBmb3IgbW9jayBpbiBbbW9ja3MubG9jYWwuR2l0KHNlbGYu
cGF0aCksIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgsIGdpdF9zdm49VHJ1ZSldOgogICAgICAg
ICAgICAgd2l0aCBtb2NrLCBPdXRwdXRDYXB0dXJlKCk6Ci0gICAgICAgICAgICAgICAgcmVwbyA9
IGxvY2FsLkdpdChzZWxmLnBhdGgpCisgICAgICAgICAgICAgICAgcmVwbyA9IGxvY2FsLkdpdChz
ZWxmLnBhdGgsIGNhY2hlZD1UcnVlKQogCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyZXBvLmNhY2hlLnRvX2hhc2goaWRlbnRpZmllcj0nMUBtYWluJyksICc5YjgzMTFmMjVhNzdi
YTE0OTIzZDlkNWE2NTMyMTAzZjU0YWJlZmNiJykKICAgICAgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJlcG8uY2FjaGUudG9faWRlbnRpZmllcihoYXNoPSdkOGJjZTI2ZmE2NWMnKSwgJzVA
bWFpbicpCkBAIC0zODEsNyArMzgxLDcgQEAgQ29tbWl0RGF0ZTogU2F0IE9jdCAwMyAwMjowNjo0
MCAyMDIwICswMAogCiAgICAgZGVmIHRlc3RfcmV2aXNpb25fY2FjaGUoc2VsZik6CiAgICAgICAg
IHdpdGggbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCwgZ2l0X3N2bj1UcnVlKSwgT3V0cHV0Q2Fw
dHVyZSgpOgotICAgICAgICAgICAgcmVwbyA9IGxvY2FsLkdpdChzZWxmLnBhdGgpCisgICAgICAg
ICAgICByZXBvID0gbG9jYWwuR2l0KHNlbGYucGF0aCwgY2FjaGVkPVRydWUpCiAKICAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwby5jYWNoZS50b19yZXZpc2lvbihpZGVudGlmaWVyPScx
QG1haW4nKSwgMSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwby5jYWNoZS50b19p
ZGVudGlmaWVyKHJldmlzaW9uPSdyOScpLCAnNUBtYWluJykK
</data>
<flag name="commit-queue"
          id="454787"
          type_id="3"
          status="+"
          setter="jbedard"
    />
          </attachment>
      

    </bug>

</bugzilla>