<?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>52482</bug_id>
          
          <creation_ts>2011-01-14 14:14:03 -0800</creation_ts>
          <short_desc>rebaseline-chromium-webkit-tests: use filesystem objects</short_desc>
          <delta_ts>2011-01-18 13:10:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>52487</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>mihaip</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>334603</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-14 14:14:03 -0800</bug_when>
    <thetext>rebaseline-chromium-webkit-tests: use filesystem objects</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334651</commentid>
    <comment_count>1</comment_count>
      <attachid>79010</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-14 15:06:33 -0800</bug_when>
    <thetext>Created attachment 79010
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334653</commentid>
    <comment_count>2</comment_count>
      <attachid>79011</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-14 15:09:21 -0800</bug_when>
    <thetext>Created attachment 79011
fix minor bug in test_generate_baseline_links</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334732</commentid>
    <comment_count>3</comment_count>
      <attachid>79011</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-01-14 16:45:44 -0800</bug_when>
    <thetext>Comment on attachment 79011
fix minor bug in test_generate_baseline_links

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

&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:171


Should this handle paths that are substrings of one another?

&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:174
&gt; +    def split(self, path):

This looks like a helper method, not one that&apos;s exposed in the Filesystem interface. Call it _split?

&gt; Tools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:111
&gt; +        filesystem.rmtree(html_directory, True)

Filesystem.rmtree doesn&apos;t seem to have a second boolean argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334788</commentid>
    <comment_count>4</comment_count>
      <attachid>79041</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-14 17:51:53 -0800</bug_when>
    <thetext>Created attachment 79041
update w/ changes in response to Mihai&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334791</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-14 17:56:29 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 79011 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=79011&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:171
&gt; 
&gt; 
&gt; Should this handle paths that are substrings of one another?
&gt;

I&apos;m sorry, I don&apos;t understand this. It looks like you&apos;re commenting on rmtree()? I&apos;m not sure how what you wrote is relevant to what that routine is doing (rm -fr path).
 
&gt; &gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:174
&gt; &gt; +    def split(self, path):
&gt; 
&gt; This looks like a helper method, not one that&apos;s exposed in the Filesystem interface. Call it _split?
&gt;

Done.
 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:111
&gt; &gt; +        filesystem.rmtree(html_directory, True)
&gt; 
&gt; Filesystem.rmtree doesn&apos;t seem to have a second boolean argument.

Good catch. Done. Thanks for the feedback!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334817</commentid>
    <comment_count>6</comment_count>
      <attachid>79041</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-01-14 18:59:50 -0800</bug_when>
    <thetext>Comment on attachment 79041
update w/ changes in response to Mihai&apos;s comments

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

&gt; Tools/Scripts/webkitpy/common/system/filesystem.py:115
&gt;                      os.rmdir(self._directory_path)
&gt;  
&gt; +
&gt; +

Nit: Did you mean to add this whitespace?

&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:171
&gt; +    def remove(self, path):
&gt; +        if self.files[path] is None:
&gt; +            self._raise_not_found(path)
&gt; +        self.files[path] = None

It seems weird to have None entries in self.files.  Can you use &apos;del&apos; instead to remove the entry?

&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:176
&gt; +    def rmtree(self, path):
&gt; +        for f in self.files:
&gt; +            if f.startswith(path):
&gt; +                self.files[f] = None

You probably want to use &apos;del&apos; here too (along with self.files.keys() so you don&apos;t confuse the iterator).

&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:203
&gt; +    def __exit__(self, type, value, traceback):
&gt; +        # FIXME: should we close() here?

I think that&apos;s normally what happens in __exit__.  Seems like it would be good to match the built-in file() implementation, although I guess it doesn&apos;t matter much either way.

&gt; Tools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests_unittest.py:148
&gt; +            self._running_port._filesystem.exists = lambda x: True

Do we need to undo this change so tests that run after this don&apos;t have a patched _filesystem.exists?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334828</commentid>
    <comment_count>7</comment_count>
      <attachid>79041</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-14 19:22:40 -0800</bug_when>
    <thetext>Comment on attachment 79041
update w/ changes in response to Mihai&apos;s comments

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

&gt; Tools/Scripts/webkitpy/common/system/filesystem.py:176
&gt; +    def rmtree(self, path):

I could have *sworn* I just added this function in a commit 2 days ago?  Maybe my commit didn&apos;t land?  Are you sure your&apos;e up to date?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334838</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-14 19:54:43 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 79041 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=79041&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/common/system/filesystem.py:115
&gt; &gt;                      os.rmdir(self._directory_path)
&gt; &gt;  
&gt; &gt; +
&gt; &gt; +
&gt; 
&gt; Nit: Did you mean to add this whitespace?
&gt; 

No, probably not. I&apos;ll fix it.

&gt; &gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:171
&gt; &gt; +    def remove(self, path):
&gt; &gt; +        if self.files[path] is None:
&gt; &gt; +            self._raise_not_found(path)
&gt; &gt; +        self.files[path] = None
&gt; 
&gt; It seems weird to have None entries in self.files.  Can you use &apos;del&apos; instead to remove the entry?
&gt;

This is intentional, actually. It allows me to capture the &quot;file does not exist&quot; concept separately from trying access a file/path I wasn&apos;t expecting (which will raise a KeyError exception and cause the test to fail.)
 
&gt; &gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:176
&gt; &gt; +    def rmtree(self, path):
&gt; &gt; +        for f in self.files:
&gt; &gt; +            if f.startswith(path):
&gt; &gt; +                self.files[f] = None
&gt; 
&gt; You probably want to use &apos;del&apos; here too (along with self.files.keys() so you don&apos;t confuse the iterator).
&gt;

See above.
 
&gt; &gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:203
&gt; &gt; +    def __exit__(self, type, value, traceback):
&gt; &gt; +        # FIXME: should we close() here?
&gt; 
&gt; I think that&apos;s normally what happens in __exit__.  Seems like it would be good to match the built-in file() implementation, although I guess it doesn&apos;t matter much either way.
&gt;

I agree with everything you just wrote ;)
 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests_unittest.py:148
&gt; &gt; +            self._running_port._filesystem.exists = lambda x: True
&gt; 
&gt; Do we need to undo this change so tests that run after this don&apos;t have a patched _filesystem.exists?

Not really, because it gets overwritten in the next call to make_generator(). running_port is really more of a local variable than a member variable. I&apos;ll change it accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334839</commentid>
    <comment_count>9</comment_count>
      <attachid>79049</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-14 20:01:53 -0800</bug_when>
    <thetext>Created attachment 79049
update w/ feedback from tony</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334865</commentid>
    <comment_count>10</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-01-14 23:40:52 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; I&apos;m sorry, I don&apos;t understand this. It looks like you&apos;re commenting on rmtree()? I&apos;m not sure how what you wrote is relevant to what that routine is doing (rm -fr path).

I mean that if you have /path/foo/bar and /path/foo2/bar in the mock filesystem, and you call rmtree(&apos;/path/foo&apos;) your function would remove /path/foo2/bar too, even though it&apos;s not under that tree. files_under avoids this by appending a trailing slash to the passed in path if it doesn&apos;t have one already.

(In reply to comment #7)
&gt; I could have *sworn* I just added this function in a commit 2 days ago?  Maybe my commit didn&apos;t land?  Are you sure your&apos;e up to date?

Yes, remove_tree was added by http://trac.webkit.org/changeset/75760. Incidentally, it has the same problem as mentioned above, and I think I like Dirk&apos;s scheme of naming methods in Filesystem after the os[.path] functions that they wrap, so perhaps renaming it to rmtree is best.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335514</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-17 14:12:36 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #5)
&gt; &gt; I&apos;m sorry, I don&apos;t understand this. It looks like you&apos;re commenting on rmtree()? I&apos;m not sure how what you wrote is relevant to what that routine is doing (rm -fr path).
&gt; 
&gt; I mean that if you have /path/foo/bar and /path/foo2/bar in the mock filesystem, and you call rmtree(&apos;/path/foo&apos;) your function would remove /path/foo2/bar too, even though it&apos;s not under that tree. files_under avoids this by appending a trailing slash to the passed in path if it doesn&apos;t have one already.
&gt; 

Ah, good point. I will fix that.

&gt; (In reply to comment #7)
&gt; &gt; I could have *sworn* I just added this function in a commit 2 days ago?  Maybe my commit didn&apos;t land?  Are you sure your&apos;e up to date?
&gt; 
&gt; Yes, remove_tree was added by http://trac.webkit.org/changeset/75760. Incidentally, it has the same problem as mentioned above, and I think I like Dirk&apos;s scheme of naming methods in Filesystem after the os[.path] functions that they wrap, so perhaps renaming it to rmtree is best.

My tree was last synced to 75748, so I must&apos;ve just missed it. I&apos;ll sync things up, but like Mihai said, I much prefer it being called rmtree().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335541</commentid>
    <comment_count>12</comment_count>
      <attachid>79220</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-17 14:59:14 -0800</bug_when>
    <thetext>Created attachment 79220
update w/ more feedback from Mihai, merge to tip of tree</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335542</commentid>
    <comment_count>13</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-17 15:00:02 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Created an attachment (id=79220) [details]
&gt; update w/ more feedback from Mihai, merge to tip of tree

Latest patch addresses Mihai&apos;s bug/fix, updates to tip-of-tree, renames remove_tree to rmtree (and updates the reference in tools/...).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336041</commentid>
    <comment_count>14</comment_count>
      <attachid>79220</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-18 13:10:41 -0800</bug_when>
    <thetext>Comment on attachment 79220
update w/ more feedback from Mihai, merge to tip of tree

Clearing flags on attachment: 79220

Committed r76050: &lt;http://trac.webkit.org/changeset/76050&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336042</commentid>
    <comment_count>15</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-18 13:10:47 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79010</attachid>
            <date>2011-01-14 15:06:33 -0800</date>
            <delta_ts>2011-01-14 15:09:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52482-20110114150631.patch</filename>
            <type>text/plain</type>
            <size>34127</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyYzUz
NDUxNzE5OGY1NTk2ZjM4OWZjNDQyM2VhOWE0NWNhMjAyOWQ3Li40OTM2OTgwOGM0OWFkMjZhNWRj
OTJiZmNkMzJmMDYyZjE3ZGQ2ZTZiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDEtMTQgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXBkYXRlIHJlYmFzZWxpbmUtY2hyb21pdW0td2Via2l0LXRlc3Rz
IHRvIHVzZSBmaWxlc3lzdGVtIG9iamVjdHMKKyAgICAgICAgaW5zdGVhZCBvZiBkaXJlY3QgcmVm
ZXJlbmNlcyB0byBvcy5wYXRoLCBzaHV0aWwsIHRlbXBmaWxlLCBldGMuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBkb2Vzbid0IGNoYW5nZSBhbnl0aGluZywgYnV0IHdpbGwgYWxsb3cgc3Vic2VxdWVu
dAorICAgICAgICBwYXRjaGVzIHRvIGNoYW5nZSB0aGUgdW5pdCB0ZXN0cyB0byBubyBsb25nZXIg
dXNlIHRoZSByZWFsCisgICAgICAgIGZpbGVzeXN0ZW0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBh
ZGRzIGEgYnVuY2ggbW9yZSBtZXRob2RzIHRvIHRoZSBmaWxlc3lzdGVtIG9iamVjdCBhcworICAg
ICAgICB3ZWxsLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01MjQ4MgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2Zp
bGVzeXN0ZW0ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2Zp
bGVzeXN0ZW1fbW9jay5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191
bml0dGVzdC5weToKKwogMjAxMS0wMS0xMyAgQWxlamFuZHJvIEcuIENhc3RybyAgPGFsZXhAaWdh
bGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CmluZGV4
IDg4MzBlYThkYzZjMDUxZGE0YjMyNGVlZmZjYTIwNjE3MDcxMjkwZDEuLmRlMzU2NDMyODgzYTJj
NDBiNmJjMjg3NTUzM2E2NzU1MmY4YTE3YWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CkBAIC00NCwxMCArNDQsMjcgQEAgY2xh
c3MgRmlsZVN5c3RlbShvYmplY3QpOgogICAgIFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIGFsbCBw
YXRocyBhcmUgYWxsb3dlZCB0byBiZSBlaXRoZXIgYWJzb2x1dGUKICAgICBvciByZWxhdGl2ZS4i
IiIKIAorICAgIGRlZiBiYXNlbmFtZShzZWxmLCBwYXRoKToKKyAgICAgICAgcmV0dXJuIG9zLnBh
dGguYmFzZW5hbWUocGF0aCkKKworICAgIGRlZiBjb3B5ZmlsZShzZWxmLCBzb3VyY2UsIGRlc3Rp
bmF0aW9uKToKKyAgICAgICAgIiIiQ29waWVzIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBhdCB0
aGUgZ2l2ZW4gcGF0aCB0byB0aGUgZGVzdGluYXRpb24KKyAgICAgICAgcGF0aC4iIiIKKyAgICAg
ICAgc2h1dGlsLmNvcHlmaWxlKHNvdXJjZSwgZGVzdGluYXRpb24pCisKKyAgICBkZWYgZGlybmFt
ZShzZWxmLCBwYXRoKToKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguZGlybmFtZShwYXRoKQorCiAg
ICAgZGVmIGV4aXN0cyhzZWxmLCBwYXRoKToKICAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhl
IHBhdGggZXhpc3RzIGluIHRoZSBmaWxlc3lzdGVtLiIiIgogICAgICAgICByZXR1cm4gb3MucGF0
aC5leGlzdHMocGF0aCkKIAorICAgIGRlZiBmaWxlc191bmRlcihzZWxmLCBwYXRoKToKKyAgICAg
ICAgIiIiUmV0dXJuIHRoZSBsaXN0IG9mIGFsbCBmaWxlcyB1bmRlciB0aGUgZ2l2ZW4gcGF0aC4i
IiIKKyAgICAgICAgcmV0dXJuIFtzZWxmLmpvaW4ocGF0aF90b19maWxlLCBmaWxlbmFtZSkKKyAg
ICAgICAgICAgIGZvciAocGF0aF90b19maWxlLCBfLCBmaWxlbmFtZXMpIGluIG9zLndhbGsocGF0
aCkKKyAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlbmFtZXNdCisKICAgICBkZWYgaXNm
aWxlKHNlbGYsIHBhdGgpOgogICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgcGF0aCByZWZl
cnMgdG8gYSBmaWxlLiIiIgogICAgICAgICByZXR1cm4gb3MucGF0aC5pc2ZpbGUocGF0aCkKQEAg
LTcxLDE0ICs4OCwyMCBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgIHRoZSBk
aXJlY3Rvcnkgd2lsbCBzZWxmLWRlbGV0ZSBhdCB0aGUgZW5kIG9mIHRoZSBibG9jayAoaWYgdGhl
CiAgICAgICAgIGRpcmVjdG9yeSBpcyBlbXB0eTsgbm9uLWVtcHR5IGRpcmVjdG9yaWVzIHJhaXNl
IGVycm9ycykuIFRoZQogICAgICAgICBkaXJlY3RvcnkgY2FuIGJlIHNhZmVseSBkZWxldGVkIGlu
c2lkZSB0aGUgYmxvY2sgYXMgd2VsbCwgaWYgc28KLSAgICAgICAgZGVzaXJlZC4iIiIKKyAgICAg
ICAgZGVzaXJlZC4KKworICAgICAgICBOb3RlIHRoYXQgdGhlIG9iamVjdCByZXR1cm5lZCBpcyBu
b3QgYSBzdHJpbmcgYW5kIGRvZXMgbm90IHN1cHBvcnQgYWxsIG9mIHRoZSBzdHJpbmcKKyAgICAg
ICAgbWV0aG9kcy4gSWYgeW91IG5lZWQgYSBzdHJpbmcsIGNvZXJjZSB0aGUgb2JqZWN0IHRvIGEg
c3RyaW5nIGFuZCBnbyBmcm9tIHRoZXJlLgorICAgICAgICAiIiIKICAgICAgICAgY2xhc3MgVGVt
cG9yYXJ5RGlyZWN0b3J5KG9iamVjdCk6CiAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwg
Kiprd2FyZ3MpOgogICAgICAgICAgICAgICAgIHNlbGYuX2t3YXJncyA9IGt3YXJncwotICAgICAg
ICAgICAgICAgIHNlbGYuX2RpcmVjdG9yeV9wYXRoID0gTm9uZQorICAgICAgICAgICAgICAgIHNl
bGYuX2RpcmVjdG9yeV9wYXRoID0gdGVtcGZpbGUubWtkdGVtcCgqKnNlbGYuX2t3YXJncykKKwor
ICAgICAgICAgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNl
bGYuX2RpcmVjdG9yeV9wYXRoCiAKICAgICAgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0g
ICAgICAgICAgICAgICAgc2VsZi5fZGlyZWN0b3J5X3BhdGggPSB0ZW1wZmlsZS5ta2R0ZW1wKCoq
c2VsZi5fa3dhcmdzKQogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9kaXJlY3RvcnlfcGF0
aAogCiAgICAgICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNlYmFj
ayk6CkBAIC04OCw2ICsxMTEsOCBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAg
ICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc2VsZi5fZGlyZWN0b3J5X3BhdGgpOgogICAgICAg
ICAgICAgICAgICAgICBvcy5ybWRpcihzZWxmLl9kaXJlY3RvcnlfcGF0aCkKIAorCisKICAgICAg
ICAgcmV0dXJuIFRlbXBvcmFyeURpcmVjdG9yeSgqKmt3YXJncykKIAogICAgIGRlZiBtYXliZV9t
YWtlX2RpcmVjdG9yeShzZWxmLCAqcGF0aCk6CkBAIC05OCw2ICsxMjMsMzAgQEAgY2xhc3MgRmls
ZVN5c3RlbShvYmplY3QpOgogICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FRVhJU1Q6
CiAgICAgICAgICAgICAgICAgcmFpc2UKIAorICAgIGRlZiBtb3ZlKHNlbGYsIHNyYywgZGVzdCk6
CisgICAgICAgIHNodXRpbC5tb3ZlKHNyYywgZGVzdCkKKworICAgIGRlZiBub3JtcGF0aChzZWxm
LCBwYXRoKToKKyAgICAgICAgcmV0dXJuIG9zLnBhdGgubm9ybXBhdGgocGF0aCkKKworICAgIGRl
ZiBvcGVuX2JpbmFyeV90ZW1wZmlsZShzZWxmLCBzdWZmaXgpOgorICAgICAgICAiIiJDcmVhdGUs
IG9wZW4sIGFuZCByZXR1cm4gYSBiaW5hcnkgdGVtcCBmaWxlLiBSZXR1cm5zIGEgdHVwbGUgb2Yg
dGhlIGZpbGUgYW5kIHRoZSBuYW1lLiIiIgorICAgICAgICB0ZW1wX2ZkLCB0ZW1wX25hbWUgPSB0
ZW1wZmlsZS5ta3N0ZW1wKHN1ZmZpeCkKKyAgICAgICAgZiA9IG9zLmZkb3Blbih0ZW1wX2ZkLCAn
d2InKQorICAgICAgICByZXR1cm4gZiwgdGVtcF9uYW1lCisKKyAgICBkZWYgcmVhZF9iaW5hcnlf
ZmlsZShzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBjb250ZW50cyBvZiB0aGUg
ZmlsZSBhdCB0aGUgZ2l2ZW4gcGF0aCBhcyBhIGJ5dGUgc3RyaW5nLiIiIgorICAgICAgICB3aXRo
IGZpbGUocGF0aCwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgIHJldHVybiBmLnJlYWQoKQorCisg
ICAgZGVmIHJlYWRfdGV4dF9maWxlKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJSZXR1cm4gdGhl
IGNvbnRlbnRzIG9mIHRoZSBmaWxlIGF0IHRoZSBnaXZlbiBwYXRoIGFzIGEgVW5pY29kZSBzdHJp
bmcuCisKKyAgICAgICAgVGhlIGZpbGUgaXMgcmVhZCBhc3N1bWluZyBpdCBpcyBhIFVURi04IGVu
Y29kZWQgZmlsZSB3aXRoIG5vIEJPTS4iIiIKKyAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihwYXRo
LCAncicsICd1dGY4JykgYXMgZjoKKyAgICAgICAgICAgIHJldHVybiBmLnJlYWQoKQorCiAgICAg
Y2xhc3MgX1dpbmRvd3NFcnJvcihleGNlcHRpb25zLk9TRXJyb3IpOgogICAgICAgICAiIiJGYWtl
IGV4Y2VwdGlvbiBmb3IgTGludXggYW5kIE1hYy4iIiIKICAgICAgICAgcGFzcwpAQCAtMTI0LDE3
ICsxNzMsMTMgQEAgY2xhc3MgRmlsZVN5c3RlbShvYmplY3QpOgogICAgICAgICAgICAgICAgIGlm
IHJldHJ5X3RpbWVvdXRfc2VjIDwgMDoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZQogCi0g
ICAgZGVmIHJlYWRfYmluYXJ5X2ZpbGUoc2VsZiwgcGF0aCk6Ci0gICAgICAgICIiIlJldHVybiB0
aGUgY29udGVudHMgb2YgdGhlIGZpbGUgYXQgdGhlIGdpdmVuIHBhdGggYXMgYSBieXRlIHN0cmlu
Zy4iIiIKLSAgICAgICAgd2l0aCBmaWxlKHBhdGgsICdyYicpIGFzIGY6Ci0gICAgICAgICAgICBy
ZXR1cm4gZi5yZWFkKCkKLQotICAgIGRlZiByZWFkX3RleHRfZmlsZShzZWxmLCBwYXRoKToKLSAg
ICAgICAgIiIiUmV0dXJuIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBhdCB0aGUgZ2l2ZW4gcGF0
aCBhcyBhIFVuaWNvZGUgc3RyaW5nLgorICAgIGRlZiBybXRyZWUoc2VsZiwgcGF0aCk6CisgICAg
ICAgICIiIkRlbGV0ZSB0aGUgZGlyZWN0b3J5IHJvb3RlZCBhdCBwYXRoLCBlbXB0eSBvciBuby4i
IiIKKyAgICAgICAgc2h1dGlsLnJtdHJlZShwYXRoLCBpZ25vcmVfZXJyb3JzPVRydWUpCiAKLSAg
ICAgICAgVGhlIGZpbGUgaXMgcmVhZCBhc3N1bWluZyBpdCBpcyBhIFVURi04IGVuY29kZWQgZmls
ZSB3aXRoIG5vIEJPTS4iIiIKLSAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihwYXRoLCAncicsICd1
dGY4JykgYXMgZjoKLSAgICAgICAgICAgIHJldHVybiBmLnJlYWQoKQorICAgIGRlZiBzcGxpdGV4
dChzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiUmV0dXJuIChkaXJuYW1lLCBiYXNlbmFtZSArIGV4
dCkuIiIiCisgICAgICAgIHJldHVybiBvcy5wYXRoLnNwbGl0ZXh0KHBhdGgpCiAKICAgICBkZWYg
d3JpdGVfYmluYXJ5X2ZpbGUoc2VsZiwgcGF0aCwgY29udGVudHMpOgogICAgICAgICAiIiJXcml0
ZSB0aGUgY29udGVudHMgdG8gdGhlIGZpbGUgYXQgdGhlIGdpdmVuIGxvY2F0aW9uLiIiIgpAQCAt
MTQ3LDE0ICsxOTIsMyBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgIFRoZSBm
aWxlIGlzIHdyaXR0ZW4gZW5jb2RlZCBhcyBVVEYtOCB3aXRoIG5vIEJPTS4iIiIKICAgICAgICAg
d2l0aCBjb2RlY3Mub3BlbihwYXRoLCAndycsICd1dGY4JykgYXMgZjoKICAgICAgICAgICAgIGYu
d3JpdGUoY29udGVudHMpCi0KLSAgICBkZWYgY29weWZpbGUoc2VsZiwgc291cmNlLCBkZXN0aW5h
dGlvbik6Ci0gICAgICAgICIiIkNvcGllcyB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgYXQgdGhl
IGdpdmVuIHBhdGggdG8gdGhlIGRlc3RpbmF0aW9uCi0gICAgICAgIHBhdGguIiIiCi0gICAgICAg
IHNodXRpbC5jb3B5ZmlsZShzb3VyY2UsIGRlc3RpbmF0aW9uKQotCi0gICAgZGVmIGZpbGVzX3Vu
ZGVyKHNlbGYsIHBhdGgpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGxpc3Qgb2YgYWxsIGZpbGVz
IHVuZGVyIHRoZSBnaXZlbiBwYXRoLiIiIgotICAgICAgICByZXR1cm4gW3NlbGYuam9pbihwYXRo
X3RvX2ZpbGUsIGZpbGVuYW1lKQotICAgICAgICAgICAgZm9yIChwYXRoX3RvX2ZpbGUsIF8sIGZp
bGVuYW1lcykgaW4gb3Mud2FsayhwYXRoKQotICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluIGZp
bGVuYW1lc10KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9maWxlc3lzdGVtX21vY2sucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vZmlsZXN5c3RlbV9tb2NrLnB5CmluZGV4IGM2MDVjYjIxOGQ3YmUyNmJiZjMzMDFlODhjN2Q4
NjkxYWVjMjQ4ZmMuLmU3NDMyMjYzMGUxMTE2Y2MxZGNkN2I4YWUyMjBkNGZmYzJkNzg1MmYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVt
X21vY2sucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVz
eXN0ZW1fbW9jay5weQpAQCAtNDMsMTAgKzQzLDM1IEBAIGNsYXNzIE1vY2tGaWxlU3lzdGVtKG9i
amVjdCk6CiAgICAgICAgICAgICAgICAgbm90IGV4aXN0LgogICAgICAgICAiIiIKICAgICAgICAg
c2VsZi5maWxlcyA9IGZpbGVzIG9yIHt9CisgICAgICAgIHNlbGYuX2N1cnJlbnRfdG1wbm8gPSAw
CisKKyAgICBkZWYgX3JhaXNlX25vdF9mb3VuZChzZWxmLCBwYXRoKToKKyAgICAgICAgcmFpc2Ug
SU9FcnJvcihlcnJuby5FTk9FTlQsIHBhdGgsIG9zLnN0cmVycm9yKGVycm5vLkVOT0VOVCkpCisK
KyAgICBkZWYgYmFzZW5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnNwbGl0KHBhdGgp
WzFdCisKKyAgICBkZWYgY29weWZpbGUoc2VsZiwgc291cmNlLCBkZXN0aW5hdGlvbik6CisgICAg
ICAgIGlmIG5vdCBzZWxmLmV4aXN0cyhzb3VyY2UpOgorICAgICAgICAgICAgc2VsZi5fcmFpc2Vf
bm90X2ZvdW5kKHNvdXJjZSkKKyAgICAgICAgaWYgc2VsZi5pc2Rpcihzb3VyY2UpOgorICAgICAg
ICAgICAgcmFpc2UgSU9FcnJvcihlcnJuby5FSVNESVIsIHNvdXJjZSwgb3Muc3RyZXJyb3IoZXJy
bm8uSVNESVIpKQorICAgICAgICBpZiBzZWxmLmlzZGlyKGRlc3RpbmF0aW9uKToKKyAgICAgICAg
ICAgIHJhaXNlIElPRXJyb3IoZXJybm8uRUlTRElSLCBkZXN0aW5hdGlvbiwgb3Muc3RyZXJyb3Io
ZXJybm8uSVNESVIpKQorCisgICAgICAgIHNlbGYuZmlsZXNbZGVzdGluYXRpb25dID0gc2VsZi5m
aWxlc1tzb3VyY2VdCisKKyAgICBkZWYgZGlybmFtZShzZWxmLCBwYXRoKToKKyAgICAgICAgcmV0
dXJuIHNlbGYuc3BsaXQocGF0aClbMF0KIAogICAgIGRlZiBleGlzdHMoc2VsZiwgcGF0aCk6CiAg
ICAgICAgIHJldHVybiBzZWxmLmlzZmlsZShwYXRoKSBvciBzZWxmLmlzZGlyKHBhdGgpCiAKKyAg
ICBkZWYgZmlsZXNfdW5kZXIoc2VsZiwgcGF0aCk6CisgICAgICAgIGlmIG5vdCBwYXRoLmVuZHN3
aXRoKCcvJyk6CisgICAgICAgICAgICBwYXRoICs9ICcvJworICAgICAgICByZXR1cm4gW2ZpbGUg
Zm9yIGZpbGUgaW4gc2VsZi5maWxlcyBpZiBmaWxlLnN0YXJ0c3dpdGgocGF0aCldCisKICAgICBk
ZWYgaXNmaWxlKHNlbGYsIHBhdGgpOgogICAgICAgICByZXR1cm4gcGF0aCBpbiBzZWxmLmZpbGVz
IGFuZCBzZWxmLmZpbGVzW3BhdGhdIGlzIG5vdCBOb25lCiAKQEAgLTgwLDM5ICsxMDUsMTA3IEBA
IGNsYXNzIE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgIGZpbGVz
LmFwcGVuZChyZW1haW5pbmcpCiAgICAgICAgIHJldHVybiBkaXJzICsgZmlsZXMKIAorICAgIGRl
ZiBfbWt0ZW1wKHNlbGYsIHN1ZmZpeD0nJywgcHJlZml4PSd0bXAnLCBkaXI9Tm9uZSwgKiprd2Fy
Z3MpOgorICAgICAgICBpZiBkaXIgaXMgTm9uZToKKyAgICAgICAgICAgIGRpciA9ICcvX19pbV90
bXAnCisgICAgICAgIGN1cm5vID0gc2VsZi5jdXJyZW50X3RtcG5vCisgICAgICAgIHNlbGYuY3Vy
cmVudF90bXBubyArPSAxCisgICAgICAgIHJldHVybiBzZWxmLmpvaW4oZGlyLCAiJXNfJXVfJXMi
ICUgKHByZWZpeCwgY3Vybm8sIHN1ZmZpeCkpCisKKyAgICBkZWYgbWtkdGVtcChzZWxmLCAqKmt3
YXJncyk6CisgICAgICAgIGNsYXNzIFRlbXBvcmFyeURpcmVjdG9yeShvYmplY3QpOgorICAgICAg
ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAg
c2VsZi5fa3dhcmdzID0ga3dhcmdzCisgICAgICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9
IGZzCisgICAgICAgICAgICAgICAgc2VsZi5fZGlyZWN0b3J5X3BhdGggPSBmcy5fbWt0ZW1wKCoq
a3dhcmdzKQorICAgICAgICAgICAgICAgIGZzLm1heWJlX21ha2VfZGlyZWN0b3J5KHNlbGYuX2Rp
cmVjdG9yeV9wYXRoKQorCisgICAgICAgICAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAg
ICAgICAgICByZXR1cm4gc2VsZi5fZGlyZWN0b3J5X3BhdGgKKworICAgICAgICAgICAgZGVmIF9f
ZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZGlyZWN0b3J5X3Bh
dGgKKworICAgICAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIHR5cGUsIHZhbHVlLCB0cmFjZWJh
Y2spOgorICAgICAgICAgICAgICAgICMgT25seSBzZWxmLWRlbGV0ZSBpZiBuZWNlc3NhcnkuCisK
KyAgICAgICAgICAgICAgICAjIEZJWE1FOiBTaG91bGQgd2UgZGVsZXRlIG5vbi1lbXB0eSBkaXJl
Y3Rvcmllcz8KKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhzZWxm
Ll9kaXJlY3RvcnlfcGF0aCk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0u
cm1kaXIoc2VsZi5fZGlyZWN0b3J5X3BhdGgpCisKKyAgICAgICAgcmV0dXJuIFRlbXBvcmFyeURp
cmVjdG9yeShmcz1zZWxmLCAqKmt3YXJncykKKwogICAgIGRlZiBtYXliZV9tYWtlX2RpcmVjdG9y
eShzZWxmLCAqcGF0aCk6CiAgICAgICAgICMgRklYTUU6IEltcGxlbWVudCBzdWNoIHRoYXQgc3Vi
c2VxdWVudCBjYWxscyB0byBpc2RpcigpIHdvcms/CiAgICAgICAgIHBhc3MKIAorICAgIGRlZiBt
b3ZlKHNlbGYsIHNyYywgZHN0KToKKyAgICAgICAgaWYgc2VsZi5maWxlc1tzcmNdIGlzIE5vbmU6
CisgICAgICAgICAgICBzZWxmLl9yYWlzZV9ub3RfZm91bmQoc3JjKQorICAgICAgICBzZWxmLmZp
bGVzW2RzdF0gPSBzZWxmLmZpbGVzW3NyY10KKyAgICAgICAgc2VsZi5maWxlc1tzcmNdID0gTm9u
ZQorCisgICAgZGVmIG5vcm1wYXRoKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gcGF0aAor
CisgICAgZGVmIG9wZW5fYmluYXJ5X3RlbXBmaWxlKHNlbGYsIHN1ZmZpeCk6CisgICAgICAgIHBh
dGggPSBzZWxmLl9ta3RlbXAoc3VmZml4KQorICAgICAgICByZXR1cm4gV3JpdGFibGVGaWxlT2Jq
ZWN0KHNlbGYsIHBhdGgpLCBwYXRoCisKICAgICBkZWYgcmVhZF90ZXh0X2ZpbGUoc2VsZiwgcGF0
aCk6CiAgICAgICAgIHJldHVybiBzZWxmLnJlYWRfYmluYXJ5X2ZpbGUocGF0aCkKIAogICAgIGRl
ZiByZWFkX2JpbmFyeV9maWxlKHNlbGYsIHBhdGgpOgogICAgICAgICBpZiBwYXRoIGluIHNlbGYu
ZmlsZXM6CiAgICAgICAgICAgICBpZiBzZWxmLmZpbGVzW3BhdGhdIGlzIE5vbmU6Ci0gICAgICAg
ICAgICAgICAgcmFpc2UgSU9FcnJvcihlcnJuby5FTk9FTlQsIHBhdGgsIG9zLnN0cmVycm9yKGVy
cm5vLkVOT0VOVCkpCisgICAgICAgICAgICAgICAgc2VsZi5fcmFpc2Vfbm90X2ZvdW5kKHBhdGgp
CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5maWxlc1twYXRoXQogCisgICAgZGVmIHJlbW92ZShz
ZWxmLCBwYXRoKToKKyAgICAgICAgaWYgc2VsZi5maWxlc1twYXRoXSBpcyBOb25lOgorICAgICAg
ICAgICAgc2VsZi5fcmFpc2Vfbm90X2ZvdW5kKHBhdGgpCisgICAgICAgIHNlbGYuZmlsZXNbcGF0
aF0gPSBOb25lCisKKyAgICBkZWYgcm10cmVlKHNlbGYsIHBhdGgpOgorICAgICAgICBmb3IgZiBp
biBzZWxmLmZpbGVzOgorICAgICAgICAgICAgaWYgZi5zdGFydHN3aXRoKHBhdGgpOgorICAgICAg
ICAgICAgICAgIHNlbGYuZmlsZXNbZl0gPSBOb25lCisKKyAgICBkZWYgc3BsaXQoc2VsZiwgcGF0
aCk6CisgICAgICAgIGlkeCA9IHBhdGgucmZpbmQoJy8nKQorICAgICAgICByZXR1cm4gKHBhdGhb
MDppZHhdLCBwYXRoW2lkeCArIDE6XSkKKworICAgIGRlZiBzcGxpdGV4dChzZWxmLCBwYXRoKToK
KyAgICAgICAgaWR4ID0gcGF0aC5yZmluZCgnLicpCisgICAgICAgIGlmIGlkeCA9PSAtMToKKyAg
ICAgICAgICAgIGlkeCA9IDAKKyAgICAgICAgcmV0dXJuIChwYXRoWzA6aWR4XSwgcGF0aFtpZHg6
XSkKKwogICAgIGRlZiB3cml0ZV90ZXh0X2ZpbGUoc2VsZiwgcGF0aCwgY29udGVudHMpOgogICAg
ICAgICByZXR1cm4gc2VsZi53cml0ZV9iaW5hcnlfZmlsZShwYXRoLCBjb250ZW50cykKIAogICAg
IGRlZiB3cml0ZV9iaW5hcnlfZmlsZShzZWxmLCBwYXRoLCBjb250ZW50cyk6CiAgICAgICAgIHNl
bGYuZmlsZXNbcGF0aF0gPSBjb250ZW50cwogCi0gICAgZGVmIGNvcHlmaWxlKHNlbGYsIHNvdXJj
ZSwgZGVzdGluYXRpb24pOgotICAgICAgICBpZiBub3Qgc2VsZi5leGlzdHMoc291cmNlKToKLSAg
ICAgICAgICAgIHJhaXNlIElPRXJyb3IoZXJybm8uRU5PRU5ULCBzb3VyY2UsIG9zLnN0cmVycm9y
KGVycm5vLkVOT0VOVCkpCi0gICAgICAgIGlmIHNlbGYuaXNkaXIoc291cmNlKToKLSAgICAgICAg
ICAgIHJhaXNlIElPRXJyb3IoZXJybm8uRUlTRElSLCBzb3VyY2UsIG9zLnN0cmVycm9yKGVycm5v
LklTRElSKSkKLSAgICAgICAgaWYgc2VsZi5pc2RpcihkZXN0aW5hdGlvbik6Ci0gICAgICAgICAg
ICByYWlzZSBJT0Vycm9yKGVycm5vLkVJU0RJUiwgZGVzdGluYXRpb24sIG9zLnN0cmVycm9yKGVy
cm5vLklTRElSKSkKIAotICAgICAgICBzZWxmLmZpbGVzW2Rlc3RpbmF0aW9uXSA9IHNlbGYuZmls
ZXNbc291cmNlXQorY2xhc3MgV3JpdGFibGVGaWxlT2JqZWN0KG9iamVjdCk6CisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGZzLCBwYXRoLCBhcHBlbmQ9RmFsc2UsIGVuY29kaW5nPU5vbmUpOgorICAg
ICAgICBzZWxmLmZzID0gZnMKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxm
LmNsb3NlZCA9IEZhbHNlCisgICAgICAgIGlmIHBhdGggbm90IGluIHNlbGYuZnMuZmlsZXMgb3Ig
bm90IGFwcGVuZDoKKyAgICAgICAgICAgIHNlbGYuZnMuZmlsZXNbcGF0aF0gPSAiIgogCi0gICAg
ZGVmIGZpbGVzX3VuZGVyKHNlbGYsIHBhdGgpOgotICAgICAgICBpZiBub3QgcGF0aC5lbmRzd2l0
aCgnLycpOgotICAgICAgICAgICAgcGF0aCArPSAnLycKLSAgICAgICAgcmV0dXJuIFtmaWxlIGZv
ciBmaWxlIGluIHNlbGYuZmlsZXMgaWYgZmlsZS5zdGFydHN3aXRoKHBhdGgpXQorICAgIGRlZiBf
X2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCiAKLSAgICBkZWYgcmVtb3ZlKHNl
bGYsIHBhdGgpOgotICAgICAgICBkZWwgc2VsZi5maWxlc1twYXRoXQorICAgIGRlZiBfX2V4aXRf
XyhzZWxmLCB0eXBlLCB2YWx1ZSwgdHJhY2ViYWNrKToKKyAgICAgICAgIyBGSVhNRTogc2hvdWxk
IHdlIGNsb3NlKCkgaGVyZT8KKyAgICAgICAgcGFzcworCisgICAgZGVmIGNsb3NlKHNlbGYpOgor
ICAgICAgICBzZWxmLmNsb3NlZCA9IFRydWUKKworICAgIGRlZiB3cml0ZShzZWxmLCBzdHIpOgor
ICAgICAgICBzZWxmLmZzLmZpbGVzW3NlbGYubmFtZV0gKz0gc3RyCisgICAgICAgIHNlbGYuZnMu
d3JpdHRlbl9maWxlc1tzZWxmLm5hbWVdID0gc2VsZi5mcy5maWxlc1tzZWxmLm5hbWVdCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2No
cm9taXVtX3dlYmtpdF90ZXN0cy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5CmluZGV4IDRkOGI3YzlmNWEy
YmQ0Yzc0ZWQ1NmZkNjMxMmJhMTk1YzE2YzhhNmQuLjhmZDU2MzgwNmE2MjI0OWU4ZTk0NTZjNTBj
NWQ3MGRjMTY2OTEyNGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rl
c3RzLnB5CkBAIC00MSwyNiArNDEsMTggQEAgVGhlIHNjcmlwdCBkb2VzIHRoZSBmb2xsb3dpbmcg
Zm9yIGVhY2ggcGxhdGZvcm0gc3BlY2lmaWVkOgogQXQgdGhlIGVuZCwgdGhlIHNjcmlwdCBnZW5l
cmF0ZXMgYSBodG1sIHRoYXQgY29tcGFyZXMgb2xkIGFuZCBuZXcgYmFzZWxpbmVzLgogIiIiCiAK
LWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLQotaW1wb3J0IGNvZGVjcwog
aW1wb3J0IGNvcHkKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3B0cGFyc2UKLWltcG9ydCBvcwog
aW1wb3J0IHJlCi1pbXBvcnQgc2h1dGlsCi1pbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwot
aW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdGltZQogaW1wb3J0IHVybGxpYgogaW1wb3J0IHppcGZp
bGUKIAorZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQgaW1wb3J0IHNjbQogZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBwYXRoCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0gaW1wb3J0IHVzZXIKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1w
b3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKLWltcG9ydCB3ZWJraXRweS5jb21tb24uY2hlY2tv
dXQuc2NtIGFzIHNjbQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBv
cnQgU2NyaXB0RXJyb3IKIAogaW1wb3J0IHBvcnQKIGZyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0
IHRlc3RfZXhwZWN0YXRpb25zCkBAIC0xMDAsNDEgKzkyLDM1IEBAIGRlZiBsb2dfZGFzaGVkX3N0
cmluZyh0ZXh0LCBwbGF0Zm9ybSwgbG9nZ2luZ19sZXZlbD1sb2dnaW5nLklORk8pOgogICAgICAg
ICBfbG9nLmluZm8obXNnKQogCiAKLWRlZiBzZXR1cF9odG1sX2RpcmVjdG9yeShodG1sX2RpcmVj
dG9yeSk6CitkZWYgc2V0dXBfaHRtbF9kaXJlY3RvcnkoZmlsZXN5c3RlbSwgcGFyZW50X2RpcmVj
dG9yeSk6CiAgICAgIiIiU2V0dXAgdGhlIGRpcmVjdG9yeSB0byBzdG9yZSBodG1sIHJlc3VsdHMu
CiAKLSAgICAgICBBbGwgaHRtbCByZWxhdGVkIGZpbGVzIGFyZSBzdG9yZWQgaW4gdGhlICJyZWJh
c2VsaW5lX2h0bWwiIHN1YmRpcmVjdG9yeS4KLQotICAgIEFyZ3M6Ci0gICAgICBodG1sX2RpcmVj
dG9yeTogcGFyZW50IGRpcmVjdG9yeSB0aGF0IHN0b3JlcyB0aGUgcmViYXNlbGluaW5nIHJlc3Vs
dHMuCi0gICAgICAgICAgICAgICAgICAgICAgSWYgTm9uZSwgYSB0ZW1wIGRpcmVjdG9yeSBpcyBj
cmVhdGVkLgotCi0gICAgUmV0dXJuczoKLSAgICAgIHRoZSBkaXJlY3RvcnkgdGhhdCBzdG9yZXMg
dGhlIGh0bWwgcmVsYXRlZCByZWJhc2VsaW5pbmcgcmVzdWx0cy4KKyAgICAgICBBbGwgaHRtbCBy
ZWxhdGVkIGZpbGVzIGFyZSBzdG9yZWQgaW4gdGhlICJyZWJhc2VsaW5lX2h0bWwiIHN1YmRpcmVj
dG9yeSBvZgorICAgICAgIHRoZSBwYXJlbnQgZGlyZWN0b3J5LiBUaGUgcGF0aCB0byB0aGUgY3Jl
YXRlZCBkaXJlY3RvcnkgaXMgcmV0dXJuZWQuCiAgICAgIiIiCiAKLSAgICBpZiBub3QgaHRtbF9k
aXJlY3Rvcnk6Ci0gICAgICAgIGh0bWxfZGlyZWN0b3J5ID0gdGVtcGZpbGUubWtkdGVtcCgpCi0g
ICAgZWxpZiBub3Qgb3MucGF0aC5leGlzdHMoaHRtbF9kaXJlY3RvcnkpOgotICAgICAgICBvcy5t
a2RpcihodG1sX2RpcmVjdG9yeSkKKyAgICBpZiBub3QgcGFyZW50X2RpcmVjdG9yeToKKyAgICAg
ICAgcGFyZW50X2RpcmVjdG9yeSA9IHN0cihmaWxlc3lzdGVtLm1rZHRlbXAoKSkKKyAgICBlbHNl
OgorICAgICAgICBmaWxlc3lzdGVtLm1heWJlX21ha2VfZGlyZWN0b3J5KHBhcmVudF9kaXJlY3Rv
cnkpCiAKLSAgICBodG1sX2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbihodG1sX2RpcmVjdG9yeSwg
J3JlYmFzZWxpbmVfaHRtbCcpCisgICAgaHRtbF9kaXJlY3RvcnkgPSBmaWxlc3lzdGVtLmpvaW4o
cGFyZW50X2RpcmVjdG9yeSwgJ3JlYmFzZWxpbmVfaHRtbCcpCiAgICAgX2xvZy5pbmZvKCdIdG1s
IGRpcmVjdG9yeTogIiVzIicsIGh0bWxfZGlyZWN0b3J5KQogCi0gICAgaWYgb3MucGF0aC5leGlz
dHMoaHRtbF9kaXJlY3RvcnkpOgotICAgICAgICBzaHV0aWwucm10cmVlKGh0bWxfZGlyZWN0b3J5
LCBUcnVlKQorICAgIGlmIGZpbGVzeXN0ZW0uZXhpc3RzKGh0bWxfZGlyZWN0b3J5KToKKyAgICAg
ICAgZmlsZXN5c3RlbS5ybXRyZWUoaHRtbF9kaXJlY3RvcnksIFRydWUpCiAgICAgICAgIF9sb2cu
aW5mbygnRGVsZXRlZCBmaWxlIGF0IGh0bWwgZGlyZWN0b3J5OiAiJXMiJywgaHRtbF9kaXJlY3Rv
cnkpCiAKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoaHRtbF9kaXJlY3RvcnkpOgotICAgICAg
ICBvcy5ta2RpcihodG1sX2RpcmVjdG9yeSkKKyAgICBmaWxlc3lzdGVtLm1heWJlX21ha2VfZGly
ZWN0b3J5KGh0bWxfZGlyZWN0b3J5KQogICAgIHJldHVybiBodG1sX2RpcmVjdG9yeQogCiAKLWRl
ZiBnZXRfcmVzdWx0X2ZpbGVfZnVsbHBhdGgoaHRtbF9kaXJlY3RvcnksIGJhc2VsaW5lX2ZpbGVu
YW1lLCBwbGF0Zm9ybSwKK2RlZiBnZXRfcmVzdWx0X2ZpbGVfZnVsbHBhdGgoZmlsZXN5c3RlbSwg
aHRtbF9kaXJlY3RvcnksIGJhc2VsaW5lX2ZpbGVuYW1lLCBwbGF0Zm9ybSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0X3R5cGUpOgogICAgICIiIkdldCBmdWxsIHBhdGggb2Yg
dGhlIGJhc2VsaW5lIHJlc3VsdCBmaWxlLgogCiAgICAgQXJnczoKKyAgICAgIGZpbGVzeXN0ZW06
IHdyYXBwZXIgb2JqZWN0CiAgICAgICBodG1sX2RpcmVjdG9yeTogZGlyZWN0b3J5IHRoYXQgc3Rv
cmVzIHRoZSBodG1sIHJlbGF0ZWQgZmlsZXMuCiAgICAgICBiYXNlbGluZV9maWxlbmFtZTogbmFt
ZSBvZiB0aGUgYmFzZWxpbmUgZmlsZS4KICAgICAgIHBsYXRmb3JtOiB3aW4sIGxpbnV4IG9yIG1h
YwpAQCAtMTQ0LDkgKzEzMCw5IEBAIGRlZiBnZXRfcmVzdWx0X2ZpbGVfZnVsbHBhdGgoaHRtbF9k
aXJlY3RvcnksIGJhc2VsaW5lX2ZpbGVuYW1lLCBwbGF0Zm9ybSwKICAgICAgIEZ1bGwgcGF0aCBv
ZiB0aGUgYmFzZWxpbmUgZmlsZSBmb3IgcmViYXNlbGluaW5nIHJlc3VsdCBjb21wYXJpc29uLgog
ICAgICIiIgogCi0gICAgYmFzZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChiYXNlbGluZV9maWxl
bmFtZSkKKyAgICBiYXNlLCBleHQgPSBmaWxlc3lzdGVtLnNwbGl0ZXh0KGJhc2VsaW5lX2ZpbGVu
YW1lKQogICAgIHJlc3VsdF9maWxlbmFtZSA9ICclcy0lcy0lcyVzJyAlIChiYXNlLCBwbGF0Zm9y
bSwgcmVzdWx0X3R5cGUsIGV4dCkKLSAgICBmdWxscGF0aCA9IG9zLnBhdGguam9pbihodG1sX2Rp
cmVjdG9yeSwgcmVzdWx0X2ZpbGVuYW1lKQorICAgIGZ1bGxwYXRoID0gZmlsZXN5c3RlbS5qb2lu
KGh0bWxfZGlyZWN0b3J5LCByZXN1bHRfZmlsZW5hbWUpCiAgICAgX2xvZy5kZWJ1ZygnICBSZXN1
bHQgZmlsZSBmdWxsIHBhdGg6ICIlcyIuJywgZnVsbHBhdGgpCiAgICAgcmV0dXJuIGZ1bGxwYXRo
CiAKQEAgLTE2OCw2ICsxNTQsNyBAQCBjbGFzcyBSZWJhc2VsaW5lcihvYmplY3QpOgogICAgICAg
ICBzZWxmLl9wbGF0Zm9ybSA9IHBsYXRmb3JtCiAgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRp
b25zCiAgICAgICAgIHNlbGYuX3BvcnQgPSBydW5uaW5nX3BvcnQKKyAgICAgICAgc2VsZi5fZmls
ZXN5c3RlbSA9IHJ1bm5pbmdfcG9ydC5fZmlsZXN5c3RlbQogICAgICAgICBzZWxmLl90YXJnZXRf
cG9ydCA9IHRhcmdldF9wb3J0CiAgICAgICAgIHNlbGYuX3JlYmFzZWxpbmVfcG9ydCA9IHBvcnQu
Z2V0KAogICAgICAgICAgICAgc2VsZi5fdGFyZ2V0X3BvcnQudGVzdF9wbGF0Zm9ybV9uYW1lX3Rv
X25hbWUocGxhdGZvcm0pLCBvcHRpb25zKQpAQCAtMzcwLDcgKzM1Nyw3IEBAIGNsYXNzIFJlYmFz
ZWxpbmVyKG9iamVjdCk6CiAKICAgICAgICAgICAgIGZvdW5kID0gRmFsc2UKICAgICAgICAgICAg
IHNjbV9lcnJvciA9IEZhbHNlCi0gICAgICAgICAgICB0ZXN0X2Jhc2VuYW1lID0gb3MucGF0aC5z
cGxpdGV4dCh0ZXN0KVswXQorICAgICAgICAgICAgdGVzdF9iYXNlbmFtZSA9IHNlbGYuX2ZpbGVz
eXN0ZW0uc3BsaXRleHQodGVzdClbMF0KICAgICAgICAgICAgIGZvciBzdWZmaXggaW4gQkFTRUxJ
TkVfU1VGRklYRVM6CiAgICAgICAgICAgICAgICAgYXJjaGl2ZV90ZXN0X25hbWUgPSAoJ2xheW91
dC10ZXN0LXJlc3VsdHMvJXMtYWN0dWFsJXMnICUKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHRlc3RfYmFzZW5hbWUsIHN1ZmZpeCkpCkBAIC0zODUsMTUgKzM3MiwxNCBA
QCBjbGFzcyBSZWJhc2VsaW5lcihvYmplY3QpOgogCiAgICAgICAgICAgICAgICAgIyBFeHRyYWN0
IG5ldyBiYXNlbGluZSBmcm9tIGFyY2hpdmUgYW5kIHNhdmUgaXQgdG8gYSB0ZW1wIGZpbGUuCiAg
ICAgICAgICAgICAgICAgZGF0YSA9IHppcF9maWxlLnJlYWQoYXJjaGl2ZV90ZXN0X25hbWUpCi0g
ICAgICAgICAgICAgICAgdGVtcF9mZCwgdGVtcF9uYW1lID0gdGVtcGZpbGUubWtzdGVtcChzdWZm
aXgpCi0gICAgICAgICAgICAgICAgZiA9IG9zLmZkb3Blbih0ZW1wX2ZkLCAnd2InKQotICAgICAg
ICAgICAgICAgIGYud3JpdGUoZGF0YSkKLSAgICAgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAg
ICAgICAgICAgICB0ZW1wZmlsZSwgdGVtcF9uYW1lID0gc2VsZi5fZmlsZXN5c3RlbS5vcGVuX2Jp
bmFyeV90ZW1wZmlsZShzdWZmaXgpCisgICAgICAgICAgICAgICAgdGVtcGZpbGUud3JpdGUoZGF0
YSkKKyAgICAgICAgICAgICAgICB0ZW1wZmlsZS5jbG9zZSgpCiAKICAgICAgICAgICAgICAgICBl
eHBlY3RlZF9maWxlbmFtZSA9ICclcy1leHBlY3RlZCVzJyAlICh0ZXN0X2Jhc2VuYW1lLCBzdWZm
aXgpCi0gICAgICAgICAgICAgICAgZXhwZWN0ZWRfZnVsbHBhdGggPSBvcy5wYXRoLmpvaW4oCisg
ICAgICAgICAgICAgICAgZXhwZWN0ZWRfZnVsbHBhdGggPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4o
CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlYmFzZWxpbmVfcG9ydC5iYXNlbGluZV9wYXRo
KCksIGV4cGVjdGVkX2ZpbGVuYW1lKQotICAgICAgICAgICAgICAgIGV4cGVjdGVkX2Z1bGxwYXRo
ID0gb3MucGF0aC5ub3JtcGF0aChleHBlY3RlZF9mdWxscGF0aCkKKyAgICAgICAgICAgICAgICBl
eHBlY3RlZF9mdWxscGF0aCA9IHNlbGYuX2ZpbGVzeXN0ZW0ubm9ybXBhdGgoZXhwZWN0ZWRfZnVs
bHBhdGgpCiAgICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygnICBFeHBlY3RlZCBmaWxlIGZ1bGwg
cGF0aDogIiVzIicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9mdWxscGF0
aCkKIApAQCAtNDA3LDE2ICszOTMsMTMgQEAgY2xhc3MgUmViYXNlbGluZXIob2JqZWN0KToKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9wbGF0Zm9ybSk6Ci0gICAgICAgICAgICAgICAgICAg
IG9zLnJlbW92ZSh0ZW1wX25hbWUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0
ZW0ucmVtb3ZlKHRlbXBfbmFtZSkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGVsZXRlX2Jh
c2VsaW5lKGV4cGVjdGVkX2Z1bGxwYXRoKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQog
Ci0gICAgICAgICAgICAgICAgIyBDcmVhdGUgdGhlIG5ldyBiYXNlbGluZSBkaXJlY3RvcnkgaWYg
aXQgZG9lc24ndCBhbHJlYWR5Ci0gICAgICAgICAgICAgICAgIyBleGlzdC4KLSAgICAgICAgICAg
ICAgICBzZWxmLl9wb3J0Lm1heWJlX21ha2VfZGlyZWN0b3J5KAotICAgICAgICAgICAgICAgICAg
ICBvcy5wYXRoLmRpcm5hbWUoZXhwZWN0ZWRfZnVsbHBhdGgpKQorICAgICAgICAgICAgICAgIHNl
bGYuX2ZpbGVzeXN0ZW0ubWF5YmVfbWFrZV9kaXJlY3Rvcnkoc2VsZi5fZmlsZXN5c3RlbS5kaXJu
YW1lKGV4cGVjdGVkX2Z1bGxwYXRoKSkKIAotICAgICAgICAgICAgICAgIHNodXRpbC5tb3ZlKHRl
bXBfbmFtZSwgZXhwZWN0ZWRfZnVsbHBhdGgpCisgICAgICAgICAgICAgICAgc2VsZi5fZmlsZXN5
c3RlbS5tb3ZlKHRlbXBfbmFtZSwgZXhwZWN0ZWRfZnVsbHBhdGgpCiAKICAgICAgICAgICAgICAg
ICBpZiAwICE9IHNlbGYuX3NjbS5hZGQoZXhwZWN0ZWRfZnVsbHBhdGgsIHJldHVybl9leGl0X2Nv
ZGU9VHJ1ZSk6CiAgICAgICAgICAgICAgICAgICAgICMgRklYTUU6IHByaW50IGRldGFpbGVkIGRp
YWdub3NlIG1lc3NhZ2VzCkBAIC00MzYsNyArNDE5LDcgQEAgY2xhc3MgUmViYXNlbGluZXIob2Jq
ZWN0KToKICAgICAgICAgICAgIHRlc3Rfbm8gKz0gMQogCiAgICAgICAgIHppcF9maWxlLmNsb3Nl
KCkKLSAgICAgICAgb3MucmVtb3ZlKGFyY2hpdmVfZmlsZSkKKyAgICAgICAgc2VsZi5fZmlsZXN5
c3RlbS5yZW1vdmUoYXJjaGl2ZV9maWxlKQogCiAgICAgICAgIHJldHVybiBzZWxmLl9yZWJhc2Vs
aW5lZF90ZXN0cwogCkBAIC00NTgsMjEgKzQ0MSwxNyBAQCBjbGFzcyBSZWJhc2VsaW5lcihvYmpl
Y3QpOgogICAgICAgICAgIFRydWUgaWYgdGhlIGJhc2VsaW5lIGlzIHVubmVjZXNzYXJ5LgogICAg
ICAgICAgIEZhbHNlIG90aGVyd2lzZS4KICAgICAgICAgIiIiCi0gICAgICAgIHRlc3RfZmlsZXBh
dGggPSBvcy5wYXRoLmpvaW4oc2VsZi5fdGFyZ2V0X3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpLAor
ICAgICAgICB0ZXN0X2ZpbGVwYXRoID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3Rhcmdl
dF9wb3J0LmxheW91dF90ZXN0c19kaXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0KQogICAgICAgICBhbGxfYmFzZWxpbmVzID0gc2VsZi5fcmViYXNlbGluZV9w
b3J0LmV4cGVjdGVkX2Jhc2VsaW5lcygKICAgICAgICAgICAgIHRlc3RfZmlsZXBhdGgsIHN1ZmZp
eCwgVHJ1ZSkKICAgICAgICAgZm9yIChmYWxsYmFja19kaXIsIGZhbGxiYWNrX2ZpbGUpIGluIGFs
bF9iYXNlbGluZXM6CiAgICAgICAgICAgICBpZiBmYWxsYmFja19kaXIgYW5kIGZhbGxiYWNrX2Zp
bGU6Ci0gICAgICAgICAgICAgICAgZmFsbGJhY2tfZnVsbHBhdGggPSBvcy5wYXRoLm5vcm1wYXRo
KAotICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oZmFsbGJhY2tfZGlyLCBmYWxsYmFj
a19maWxlKSkKKyAgICAgICAgICAgICAgICBmYWxsYmFja19mdWxscGF0aCA9IHNlbGYuX2ZpbGVz
eXN0ZW0ubm9ybXBhdGgoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0uam9p
bihmYWxsYmFja19kaXIsIGZhbGxiYWNrX2ZpbGUpKQogICAgICAgICAgICAgICAgIGlmIGZhbGxi
YWNrX2Z1bGxwYXRoLmxvd2VyKCkgIT0gYmFzZWxpbmVfcGF0aC5sb3dlcigpOgotICAgICAgICAg
ICAgICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKG5ld19iYXNlbGluZSwgInIiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUpIGFzIGZpbGVfaGFuZGxlMToKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG5ld19vdXRwdXQgPSBmaWxlX2hhbmRsZTEucmVhZCgpCi0gICAg
ICAgICAgICAgICAgICAgIHdpdGggY29kZWNzLm9wZW4oZmFsbGJhY2tfZnVsbHBhdGgsICJyIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lKSBhcyBmaWxlX2hhbmRs
ZTI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFja19vdXRwdXQgPSBmaWxlX2hhbmRs
ZTIucmVhZCgpCisgICAgICAgICAgICAgICAgICAgIG5ld19vdXRwdXQgPSBzZWxmLl9maWxlc3lz
dGVtLnJlYWRfYmluYXJ5X2ZpbGUobmV3X2Jhc2VsaW5lKQorICAgICAgICAgICAgICAgICAgICBm
YWxsYmFja19vdXRwdXQgPSBzZWxmLl9maWxlc3lzdGVtLnJlYWRfYmluYXJ5X2ZpbGUoZmFsbGJh
Y2tfZnVsbHBhdGgpCiAgICAgICAgICAgICAgICAgICAgIGlzX2ltYWdlID0gYmFzZWxpbmVfcGF0
aC5sb3dlcigpLmVuZHN3aXRoKCcucG5nJykKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNl
bGYuX2RpZmZfYmFzZWxpbmVzKG5ld19vdXRwdXQsIGZhbGxiYWNrX291dHB1dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2ltYWdlKToKQEAgLTUw
Nyw3ICs0ODYsNyBAQCBjbGFzcyBSZWJhc2VsaW5lcihvYmplY3QpOgogICAgICAgICAgIGZpbGVu
YW1lOiBmdWxsIHBhdGggb2YgdGhlIGZpbGUgdG8gZGVsZXRlLgogICAgICAgICAiIiIKIAotICAg
ICAgICBpZiBub3QgZmlsZW5hbWUgb3Igbm90IG9zLnBhdGguaXNmaWxlKGZpbGVuYW1lKToKKyAg
ICAgICAgaWYgbm90IGZpbGVuYW1lIG9yIG5vdCBzZWxmLl9maWxlc3lzdGVtLmlzZmlsZShmaWxl
bmFtZSk6CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5fc2NtLmRlbGV0ZShmaWxl
bmFtZSkKIApAQCAtNTMwLDE0ICs1MDksMTIgQEAgY2xhc3MgUmViYXNlbGluZXIob2JqZWN0KToK
ICAgICAgICAgICAgICAgICBkYXRlX3N1ZmZpeCA9IHRpbWUuc3RyZnRpbWUoJyVZJW0lZCVIJU0l
UycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUubG9j
YWx0aW1lKHRpbWUudGltZSgpKSkKICAgICAgICAgICAgICAgICBiYWNrdXBfZmlsZSA9ICgnJXMu
b3JpZy4lcycgJSAocGF0aCwgZGF0ZV9zdWZmaXgpKQotICAgICAgICAgICAgICAgIGlmIG9zLnBh
dGguZXhpc3RzKGJhY2t1cF9maWxlKToKLSAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKGJh
Y2t1cF9maWxlKQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKGJh
Y2t1cF9maWxlKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS5yZW1vdmUo
YmFja3VwX2ZpbGUpCiAgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCdTYXZpbmcgb3JpZ2luYWwg
ZmlsZSB0byAiJXMiJywgYmFja3VwX2ZpbGUpCi0gICAgICAgICAgICAgICAgb3MucmVuYW1lKHBh
dGgsIGJhY2t1cF9maWxlKQotICAgICAgICAgICAgIyBGSVhNRTogV2hhdCBlbmNvZGluZyBhcmUg
dGhlc2UgZmlsZXM/Ci0gICAgICAgICAgICAjIE9yIGlzIG5ld19leHBlY3RhdGlvbnMgYWx3YXlz
IGEgYnl0ZSBhcnJheT8KLSAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAidyIpIGFzIGZpbGU6
Ci0gICAgICAgICAgICAgICAgZmlsZS53cml0ZShuZXdfZXhwZWN0YXRpb25zKQorICAgICAgICAg
ICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ubW92ZShwYXRoLCBiYWNrdXBfZmlsZSkKKworICAgICAg
ICAgICAgc2VsZi5fZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUocGF0aCwgbmV3X2V4cGVjdGF0
aW9ucykKICAgICAgICAgICAgICMgc2VsZi5fc2NtLmFkZChwYXRoKQogICAgICAgICBlbHNlOgog
ICAgICAgICAgICAgX2xvZy5pbmZvKCdObyB0ZXN0IHdhcyByZWJhc2VsaW5lZCBzbyBub3RoaW5n
IHRvIHJlbW92ZS4nKQpAQCAtNTUxLDE1ICs1MjgsMTUgQEAgY2xhc3MgUmViYXNlbGluZXIob2Jq
ZWN0KToKICAgICAgICAgICBiYXNlbGluZV9mdWxscGF0aDogZnVsbCBwYXRoIG9mIHRoZSBleHBl
Y3RlZCBiYXNlbGluZSBmaWxlLgogICAgICAgICAiIiIKIAotICAgICAgICBpZiBub3QgYmFzZWxp
bmVfZnVsbHBhdGggb3Igbm90IG9zLnBhdGguZXhpc3RzKGJhc2VsaW5lX2Z1bGxwYXRoKToKKyAg
ICAgICAgaWYgbm90IGJhc2VsaW5lX2Z1bGxwYXRoIG9yIG5vdCBzZWxmLl9maWxlc3lzdGVtLmV4
aXN0cyhiYXNlbGluZV9mdWxscGF0aCk6CiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICAj
IENvcHkgdGhlIG5ldyBiYXNlbGluZSB0byBodG1sIGRpcmVjdG9yeSBmb3IgcmVzdWx0IGNvbXBh
cmlzb24uCi0gICAgICAgIGJhc2VsaW5lX2ZpbGVuYW1lID0gb3MucGF0aC5iYXNlbmFtZShiYXNl
bGluZV9mdWxscGF0aCkKLSAgICAgICAgbmV3X2ZpbGUgPSBnZXRfcmVzdWx0X2ZpbGVfZnVsbHBh
dGgoc2VsZi5fb3B0aW9ucy5odG1sX2RpcmVjdG9yeSwKKyAgICAgICAgYmFzZWxpbmVfZmlsZW5h
bWUgPSBzZWxmLl9maWxlc3lzdGVtLmJhc2VuYW1lKGJhc2VsaW5lX2Z1bGxwYXRoKQorICAgICAg
ICBuZXdfZmlsZSA9IGdldF9yZXN1bHRfZmlsZV9mdWxscGF0aChzZWxmLl9maWxlc3lzdGVtLCBz
ZWxmLl9vcHRpb25zLmh0bWxfZGlyZWN0b3J5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBiYXNlbGluZV9maWxlbmFtZSwgc2VsZi5fcGxhdGZvcm0sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZXcnKQotICAgICAgICBz
aHV0aWwuY29weWZpbGUoYmFzZWxpbmVfZnVsbHBhdGgsIG5ld19maWxlKQorICAgICAgICBzZWxm
Ll9maWxlc3lzdGVtLmNvcHlmaWxlKGJhc2VsaW5lX2Z1bGxwYXRoLCBuZXdfZmlsZSkKICAgICAg
ICAgX2xvZy5pbmZvKCcgIEh0bWw6IGNvcGllZCBuZXcgYmFzZWxpbmUgZmlsZSBmcm9tICIlcyIg
dG8gIiVzIi4nLAogICAgICAgICAgICAgICAgICAgYmFzZWxpbmVfZnVsbHBhdGgsIG5ld19maWxl
KQogCkBAIC01NzQsNyArNTUxLDcgQEAgY2xhc3MgUmViYXNlbGluZXIob2JqZWN0KToKICAgICAg
ICAgICAgICdOTyBTVUNIIEZJTEUgT1IgRElSRUNUT1JZJykpOgogICAgICAgICAgICAgX2xvZy5p
bmZvKCcgIE5vIGJhc2UgZmlsZTogIiVzIicsIGJhc2VsaW5lX2Z1bGxwYXRoKQogICAgICAgICAg
ICAgcmV0dXJuCi0gICAgICAgIGJhc2VfZmlsZSA9IGdldF9yZXN1bHRfZmlsZV9mdWxscGF0aChz
ZWxmLl9vcHRpb25zLmh0bWxfZGlyZWN0b3J5LAorICAgICAgICBiYXNlX2ZpbGUgPSBnZXRfcmVz
dWx0X2ZpbGVfZnVsbHBhdGgoc2VsZi5fZmlsZXN5c3RlbSwgc2VsZi5fb3B0aW9ucy5odG1sX2Rp
cmVjdG9yeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJh
c2VsaW5lX2ZpbGVuYW1lLCBzZWxmLl9wbGF0Zm9ybSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdvbGQnKQogICAgICAgICAjIFdlIHNob3VsZCBiZSB1c2lu
ZyBhbiBleHBsaWNpdCBlbmNvZGluZyBoZXJlLgpAQCAtNTg3LDcgKzU2NCw3IEBAIGNsYXNzIFJl
YmFzZWxpbmVyKG9iamVjdCk6CiAgICAgICAgIGlmIGJhc2VsaW5lX2ZpbGVuYW1lLnVwcGVyKCku
ZW5kc3dpdGgoJy5UWFQnKToKICAgICAgICAgICAgIG91dHB1dCA9IHNlbGYuX3NjbS5kaWZmX2Zv
cl9maWxlKGJhc2VsaW5lX2Z1bGxwYXRoLCBsb2c9X2xvZykKICAgICAgICAgICAgIGlmIG91dHB1
dDoKLSAgICAgICAgICAgICAgICBkaWZmX2ZpbGUgPSBnZXRfcmVzdWx0X2ZpbGVfZnVsbHBhdGgo
CisgICAgICAgICAgICAgICAgZGlmZl9maWxlID0gZ2V0X3Jlc3VsdF9maWxlX2Z1bGxwYXRoKHNl
bGYuX2ZpbGVzeXN0ZW0sCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuaHRtbF9k
aXJlY3RvcnksIGJhc2VsaW5lX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICBzZWxmLl9w
bGF0Zm9ybSwgJ2RpZmYnKQogICAgICAgICAgICAgICAgIHdpdGggb3BlbihkaWZmX2ZpbGUsICd3
YicpIGFzIGZpbGU6CkBAIC02NDIsMTkgKzYxOSwxOSBAQCBjbGFzcyBIdG1sR2VuZXJhdG9yKG9i
amVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAnPGltZyBzdHlsZT0id2lkdGg6IDIwMCIg
c3JjPSIlKHVyaSlzIiAvPjwvYT48L3RkPicpCiAgICAgSFRNTF9UUiA9ICc8dHI+JXM8L3RyPicK
IAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YXJnZXRfcG9ydCwgb3B0aW9ucywgcGxhdGZvcm1z
LCByZWJhc2VsaW5pbmdfdGVzdHMsCi0gICAgICAgICAgICAgICAgIGV4ZWN1dGl2ZSk6CisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIHRhcmdldF9wb3J0LCBvcHRpb25zLCBwbGF0Zm9ybXMs
IHJlYmFzZWxpbmluZ190ZXN0cyk6CiAgICAgICAgIHNlbGYuX2h0bWxfZGlyZWN0b3J5ID0gb3B0
aW9ucy5odG1sX2RpcmVjdG9yeQorICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAogICAgICAgICBz
ZWxmLl90YXJnZXRfcG9ydCA9IHRhcmdldF9wb3J0CiAgICAgICAgIHNlbGYuX3BsYXRmb3JtcyA9
IHBsYXRmb3JtcwogICAgICAgICBzZWxmLl9yZWJhc2VsaW5pbmdfdGVzdHMgPSByZWJhc2VsaW5p
bmdfdGVzdHMKLSAgICAgICAgc2VsZi5fZXhlY3V0aXZlID0gZXhlY3V0aXZlCi0gICAgICAgIHNl
bGYuX2h0bWxfZmlsZSA9IG9zLnBhdGguam9pbihvcHRpb25zLmh0bWxfZGlyZWN0b3J5LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlYmFzZWxpbmUuaHRtbCcpCisg
ICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBwb3J0Ll9maWxlc3lzdGVtCisgICAgICAgIHNlbGYu
X2h0bWxfZmlsZSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihvcHRpb25zLmh0bWxfZGlyZWN0b3J5
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlYmFz
ZWxpbmUuaHRtbCcpCiAKICAgICBkZWYgYWJzcGF0aF90b191cmkoc2VsZiwgZmlsZW5hbWUpOgog
ICAgICAgICAiIiJDb252ZXJ0cyBhbiBhYnNvbHV0ZSBwYXRoIHRvIGEgZmlsZTogVVJJLiIiIgot
ICAgICAgICByZXR1cm4gcGF0aC5hYnNwYXRoX3RvX3VyaShmaWxlbmFtZSwgc2VsZi5fZXhlY3V0
aXZlKQorICAgICAgICByZXR1cm4gcGF0aC5hYnNwYXRoX3RvX3VyaShmaWxlbmFtZSwgc2VsZi5f
cG9ydC5fZXhlY3V0aXZlKQogCiAgICAgZGVmIGdlbmVyYXRlX2h0bWwoc2VsZik6CiAgICAgICAg
ICIiIkdlbmVyYXRlIGh0bWwgZmlsZSBmb3IgcmViYXNlbGluaW5nIHJlc3VsdCBjb21wYXJpc29u
LiIiIgpAQCAtNjc3LDkgKzY1NCw3IEBAIGNsYXNzIEh0bWxHZW5lcmF0b3Iob2JqZWN0KToKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9keSc6IGh0bWxfYm9keX0p
CiAgICAgICAgIF9sb2cuZGVidWcoaHRtbCkKIAotICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHNl
bGYuX2h0bWxfZmlsZSwgInciLCAidXRmLTgiKSBhcyBmaWxlOgotICAgICAgICAgICAgZmlsZS53
cml0ZShodG1sKQotCisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKHNl
bGYuX2h0bWxfZmlsZSwgaHRtbCkKICAgICAgICAgX2xvZy5pbmZvKCdCYXNlbGluZSBjb21wYXJp
c29uIGh0bWwgZ2VuZXJhdGVkIGF0ICIlcyInLAogICAgICAgICAgICAgICAgICAgc2VsZi5faHRt
bF9maWxlKQogCkBAIC02ODcsNyArNjYyLDcgQEAgY2xhc3MgSHRtbEdlbmVyYXRvcihvYmplY3Qp
OgogICAgICAgICAiIiJMYXVuY2ggdGhlIHJlYmFzZWxpbmluZyBodG1sIGluIGJyd29zZXIuIiIi
CiAKICAgICAgICAgX2xvZy5pbmZvKCdMYXVuY2hpbmcgaHRtbDogIiVzIicsIHNlbGYuX2h0bWxf
ZmlsZSkKLSAgICAgICAgdXNlci5Vc2VyKCkub3Blbl91cmwoc2VsZi5faHRtbF9maWxlKQorICAg
ICAgICBzZWxmLl9wb3J0Ll91c2VyLm9wZW5fdXJsKHNlbGYuX2h0bWxfZmlsZSkKICAgICAgICAg
X2xvZy5pbmZvKCdIdG1sIGxhdW5jaGVkLicpCiAKICAgICBkZWYgX2dlbmVyYXRlX2Jhc2VsaW5l
X2xpbmtzKHNlbGYsIHRlc3RfYmFzZW5hbWUsIHN1ZmZpeCwgcGxhdGZvcm0pOgpAQCAtNzA1LDE0
ICs2ODAsMTQgQEAgY2xhc3MgSHRtbEdlbmVyYXRvcihvYmplY3QpOgogICAgICAgICBiYXNlbGlu
ZV9maWxlbmFtZSA9ICclcy1leHBlY3RlZCVzJyAlICh0ZXN0X2Jhc2VuYW1lLCBzdWZmaXgpCiAg
ICAgICAgIF9sb2cuZGVidWcoJyAgICBiYXNlbGluZSBmaWxlbmFtZTogIiVzIicsIGJhc2VsaW5l
X2ZpbGVuYW1lKQogCi0gICAgICAgIG5ld19maWxlID0gZ2V0X3Jlc3VsdF9maWxlX2Z1bGxwYXRo
KHNlbGYuX2h0bWxfZGlyZWN0b3J5LAorICAgICAgICBuZXdfZmlsZSA9IGdldF9yZXN1bHRfZmls
ZV9mdWxscGF0aChzZWxmLl9maWxlc3lzdGVtLCBzZWxmLl9odG1sX2RpcmVjdG9yeSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVfZmlsZW5hbWUs
IHBsYXRmb3JtLCAnbmV3JykKICAgICAgICAgX2xvZy5pbmZvKCcgICAgTmV3IGJhc2VsaW5lIGZp
bGU6ICIlcyInLCBuZXdfZmlsZSkKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG5ld19m
aWxlKToKKyAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKG5ld19maWxlKToK
ICAgICAgICAgICAgIF9sb2cuaW5mbygnICAgIE5vIG5ldyBiYXNlbGluZSBmaWxlOiAiJXMiJywg
bmV3X2ZpbGUpCiAgICAgICAgICAgICByZXR1cm4gJycKIAotICAgICAgICBvbGRfZmlsZSA9IGdl
dF9yZXN1bHRfZmlsZV9mdWxscGF0aChzZWxmLl9odG1sX2RpcmVjdG9yeSwKKyAgICAgICAgb2xk
X2ZpbGUgPSBnZXRfcmVzdWx0X2ZpbGVfZnVsbHBhdGgoc2VsZi5fZmlsZXN5c3RlbSwgc2VsZi5f
aHRtbF9kaXJlY3RvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJhc2VsaW5lX2ZpbGVuYW1lLCBwbGF0Zm9ybSwgJ29sZCcpCiAgICAgICAgIF9sb2cuaW5m
bygnICAgIE9sZCBiYXNlbGluZSBmaWxlOiAiJXMiJywgb2xkX2ZpbGUpCiAgICAgICAgIGlmIHN1
ZmZpeCA9PSAnLnBuZyc6CkBAIC03MjEsNyArNjk2LDcgQEAgY2xhc3MgSHRtbEdlbmVyYXRvcihv
YmplY3QpOgogICAgICAgICAgICAgaHRtbF90ZF9saW5rID0gc2VsZi5IVE1MX1REX0xJTksKIAog
ICAgICAgICBsaW5rcyA9ICcnCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9sZF9maWxlKToK
KyAgICAgICAgaWYgc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMob2xkX2ZpbGUpOgogICAgICAgICAg
ICAgbGlua3MgKz0gaHRtbF90ZF9saW5rICUgewogICAgICAgICAgICAgICAgICd1cmknOiBzZWxm
LmFic3BhdGhfdG9fdXJpKG9sZF9maWxlKSwKICAgICAgICAgICAgICAgICAnbmFtZSc6IGJhc2Vs
aW5lX2ZpbGVuYW1lfQpAQCAtNzMyLDExICs3MDcsMTEgQEAgY2xhc3MgSHRtbEdlbmVyYXRvcihv
YmplY3QpOgogICAgICAgICBsaW5rcyArPSBodG1sX3RkX2xpbmsgJSB7J3VyaSc6IHNlbGYuYWJz
cGF0aF90b191cmkobmV3X2ZpbGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J25hbWUnOiBiYXNlbGluZV9maWxlbmFtZX0KIAotICAgICAgICBkaWZmX2ZpbGUgPSBnZXRfcmVz
dWx0X2ZpbGVfZnVsbHBhdGgoc2VsZi5faHRtbF9kaXJlY3RvcnksCisgICAgICAgIGRpZmZfZmls
ZSA9IGdldF9yZXN1bHRfZmlsZV9mdWxscGF0aChzZWxmLl9maWxlc3lzdGVtLCBzZWxmLl9odG1s
X2RpcmVjdG9yeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJhc2VsaW5lX2ZpbGVuYW1lLCBwbGF0Zm9ybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdkaWZmJykKICAgICAgICAgX2xvZy5pbmZvKCcgICAgQmFzZWxp
bmUgZGlmZiBmaWxlOiAiJXMiJywgZGlmZl9maWxlKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0
cyhkaWZmX2ZpbGUpOgorICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhkaWZmX2Zp
bGUpOgogICAgICAgICAgICAgbGlua3MgKz0gaHRtbF90ZF9saW5rICUgeyd1cmknOiBzZWxmLmFi
c3BhdGhfdG9fdXJpKGRpZmZfZmlsZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ25hbWUnOiAnRGlmZid9CiAgICAgICAgIGVsc2U6CkBAIC03NTUsNyArNzMwLDcgQEAg
Y2xhc3MgSHRtbEdlbmVyYXRvcihvYmplY3QpOgogICAgICAgICAgIGh0bWwgdGhhdCBjb21wYXJl
cyBiYXNlbGluZSByZXN1bHRzIGZvciB0aGUgdGVzdC4KICAgICAgICAgIiIiCiAKLSAgICAgICAg
dGVzdF9iYXNlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUob3MucGF0aC5zcGxpdGV4dCh0ZXN0KVsw
XSkKKyAgICAgICAgdGVzdF9iYXNlbmFtZSA9IHNlbGYuX2ZpbGVzeXN0ZW0uYmFzZW5hbWUoc2Vs
Zi5fZmlsZXN5c3RlbS5zcGxpdGV4dCh0ZXN0KVswXSkKICAgICAgICAgX2xvZy5pbmZvKCcgIGJh
c2VuYW1lOiAiJXMiJywgdGVzdF9iYXNlbmFtZSkKICAgICAgICAgcm93cyA9IFtdCiAgICAgICAg
IGZvciBzdWZmaXggaW4gQkFTRUxJTkVfU1VGRklYRVM6CkBAIC03NzYsOCArNzUxLDcgQEAgY2xh
c3MgSHRtbEdlbmVyYXRvcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICByb3dzLmFwcGVu
ZChzZWxmLkhUTUxfVFIgJSByb3cpCiAKICAgICAgICAgaWYgcm93czoKLSAgICAgICAgICAgIHRl
c3RfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLl90YXJnZXRfcG9ydC5sYXlvdXRfdGVzdHNfZGly
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdCkKKyAgICAgICAg
ICAgIHRlc3RfcGF0aCA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl90YXJnZXRfcG9ydC5s
YXlvdXRfdGVzdHNfZGlyKCksIHRlc3QpCiAgICAgICAgICAgICBodG1sID0gc2VsZi5IVE1MX1RS
X1RFU1QgJSAoc2VsZi5hYnNwYXRoX3RvX3VyaSh0ZXN0X3BhdGgpLCB0ZXN0KQogICAgICAgICAg
ICAgaHRtbCArPSBzZWxmLkhUTUxfVEVTVF9ERVRBSUwgJSAnICcuam9pbihyb3dzKQogCkBAIC04
ODMsNyArODU3LDcgQEAgZGVmIHBhcnNlX29wdGlvbnMoYXJncyk6CiAgICAgcmV0dXJuIChvcHRp
b25zLCB0YXJnZXRfb3B0aW9ucykKIAogCi1kZWYgbWFpbihleGVjdXRpdmU9RXhlY3V0aXZlKCkp
OgorZGVmIG1haW4oKToKICAgICAiIiJNYWluIGZ1bmN0aW9uIHRvIHByb2R1Y2UgbmV3IGJhc2Vs
aW5lcy4iIiIKIAogICAgIChvcHRpb25zLCB0YXJnZXRfb3B0aW9ucykgPSBwYXJzZV9vcHRpb25z
KHN5cy5hcmd2WzE6XSkKQEAgLTkyOSw3ICs5MDMsNyBAQCBkZWYgbWFpbihleGVjdXRpdmU9RXhl
Y3V0aXZlKCkpOgogICAgICAgICBpZiBwbGF0Zm9ybSBpbiBwbGF0Zm9ybXM6CiAgICAgICAgICAg
ICByZWJhc2VsaW5lX3BsYXRmb3Jtcy5hcHBlbmQocGxhdGZvcm0pCiAKLSAgICBvcHRpb25zLmh0
bWxfZGlyZWN0b3J5ID0gc2V0dXBfaHRtbF9kaXJlY3Rvcnkob3B0aW9ucy5odG1sX2RpcmVjdG9y
eSkKKyAgICBvcHRpb25zLmh0bWxfZGlyZWN0b3J5ID0gc2V0dXBfaHRtbF9kaXJlY3RvcnkoaG9z
dF9wb3J0X29iai5fZmlsZXN5c3RlbSwgb3B0aW9ucy5odG1sX2RpcmVjdG9yeSkKIAogICAgIHJl
YmFzZWxpbmluZ190ZXN0cyA9IHNldCgpCiAgICAgYmFja3VwID0gb3B0aW9ucy5iYWNrdXAKQEAg
LTk1MCwxMSArOTI0LDExIEBAIGRlZiBtYWluKGV4ZWN1dGl2ZT1FeGVjdXRpdmUoKSk6CiAKICAg
ICBfbG9nLmluZm8oJycpCiAgICAgbG9nX2Rhc2hlZF9zdHJpbmcoJ1JlYmFzZWxpbmluZyByZXN1
bHQgY29tcGFyaXNvbiBzdGFydGVkJywgTm9uZSkKLSAgICBodG1sX2dlbmVyYXRvciA9IEh0bWxH
ZW5lcmF0b3IodGFyZ2V0X3BvcnRfb2JqLAorICAgIGh0bWxfZ2VuZXJhdG9yID0gSHRtbEdlbmVy
YXRvcihob3N0X3BvcnRfb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
YXJnZXRfcG9ydF9vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlv
bnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYmFzZWxpbmVfcGxhdGZv
cm1zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWJhc2VsaW5pbmdfdGVz
dHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGl2ZT1leGVjdXRp
dmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYmFzZWxpbmluZ190ZXN0
cykKICAgICBodG1sX2dlbmVyYXRvci5nZW5lcmF0ZV9odG1sKCkKICAgICBpZiBub3Qgb3B0aW9u
cy5xdWlldDoKICAgICAgICAgaHRtbF9nZW5lcmF0b3Iuc2hvd19odG1sKCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1f
d2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKaW5kZXgg
N2M1NWI5NGM5Y2M2OGUyMzIyZjZkNTdiMzZiZWVlNjBkMmEyNTcyNS4uNDliMGNmZDc0ZTg0ZTBk
NGUxMWU0MzMwNTYwYmJmMTYzOGE2MGJkOSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5pdHRl
c3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGlu
ZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKQEAgLTI5LDE1ICsyOSwxNCBAQAog
CiAiIiJVbml0IHRlc3RzIGZvciByZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weS4i
IiIKIAotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJr
aXRweS50b29sIGltcG9ydCBtb2NrdG9vbAotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1w
b3J0IHBvcnQKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCByZWJhc2VsaW5lX2No
cm9taXVtX3dlYmtpdF90ZXN0cwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2
ZSBpbXBvcnQgRXhlY3V0aXZlLCBTY3JpcHRFcnJvcgogCitpbXBvcnQgcG9ydAoraW1wb3J0IHJl
YmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzCisKIAogY2xhc3MgTW9ja1BvcnQob2JqZWN0
KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgaW1hZ2VfZGlmZl9leGlzdHMpOgpAQCAtMTEzLDQ0
ICsxMTIsNDQgQEAgY2xhc3MgVGVzdFJlYmFzZWxpbmVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICBkZWYgdGVzdF9kaWZmX2Jhc2VsaW5lc190eHQoc2VsZik6CiAgICAgICAgIHJlYmFzZWxpbmVy
ID0gc2VsZi5tYWtlX3JlYmFzZWxpbmVyKCkKICAgICAgICAgb3V0cHV0ID0gcmViYXNlbGluZXIu
X3BvcnQuZXhwZWN0ZWRfdGV4dCgKLSAgICAgICAgICAgIG9zLnBhdGguam9pbihyZWJhc2VsaW5l
ci5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ3Bh
c3Nlcy90ZXh0Lmh0bWwnKSkKKyAgICAgICAgICAgIHJlYmFzZWxpbmVyLl9wb3J0Ll9maWxlc3lz
dGVtLmpvaW4ocmViYXNlbGluZXIuX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFzc2VzL3RleHQuaHRtbCcp
KQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlYmFzZWxpbmVyLl9kaWZmX2Jhc2VsaW5lcyhv
dXRwdXQsIG91dHB1dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaXNfaW1hZ2U9RmFsc2UpKQogCiAgICAgZGVmIHRlc3RfZGlmZl9iYXNlbGlu
ZXNfcG5nKHNlbGYpOgogICAgICAgICByZWJhc2VsaW5lciA9IHNlbGYubWFrZV9yZWJhc2VsaW5l
cigpCiAgICAgICAgIGltYWdlID0gcmViYXNlbGluZXIuX3BvcnQuZXhwZWN0ZWRfaW1hZ2UoCi0g
ICAgICAgICAgICBvcy5wYXRoLmpvaW4ocmViYXNlbGluZXIuX3BvcnQubGF5b3V0X3Rlc3RzX2Rp
cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICdwYXNzZXMvaW1hZ2UuaHRtbCcpKQorICAg
ICAgICAgICAgcmViYXNlbGluZXIuX3BvcnQuX2ZpbGVzeXN0ZW0uam9pbihyZWJhc2VsaW5lci5f
cG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdwYXNzZXMvaW1hZ2UuaHRtbCcpKQogICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKHJlYmFzZWxpbmVyLl9kaWZmX2Jhc2VsaW5lcyhpbWFnZSwgaW1hZ2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2ltYWdlPVRy
dWUpKQogCiAKIGNsYXNzIFRlc3RIdG1sR2VuZXJhdG9yKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICBkZWYgbWFrZV9nZW5lcmF0b3Ioc2VsZiwgdGVzdHMpOgorICAgICAgICBvcHRpb25zID0gbW9j
a3Rvb2wuTW9ja09wdGlvbnMoY29uZmlndXJhdGlvbj1Ob25lLCBodG1sX2RpcmVjdG9yeT0nL3Rt
cCcpCisgICAgICAgIHNlbGYuX3J1bm5pbmdfcG9ydCA9IHBvcnQuZ2V0KCd0ZXN0Jywgb3B0aW9u
cykKKwogICAgICAgICByZXR1cm4gcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMuSHRt
bEdlbmVyYXRvcigKKyAgICAgICAgICAgIHNlbGYuX3J1bm5pbmdfcG9ydCwKICAgICAgICAgICAg
IHRhcmdldF9wb3J0PU5vbmUsCi0gICAgICAgICAgICBvcHRpb25zPW1vY2t0b29sLk1vY2tPcHRp
b25zKGNvbmZpZ3VyYXRpb249Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaHRtbF9kaXJlY3Rvcnk9Jy90bXAnKSwKKyAgICAgICAgICAgIG9wdGlvbnM9b3B0
aW9ucywKICAgICAgICAgICAgIHBsYXRmb3Jtcz1bJ21hYyddLAotICAgICAgICAgICAgcmViYXNl
bGluaW5nX3Rlc3RzPXRlc3RzLAotICAgICAgICAgICAgZXhlY3V0aXZlPUV4ZWN1dGl2ZSgpKQor
ICAgICAgICAgICAgcmViYXNlbGluaW5nX3Rlc3RzPXRlc3RzKQogCiAgICAgZGVmIHRlc3RfZ2Vu
ZXJhdGVfYmFzZWxpbmVfbGlua3Moc2VsZik6Ci0gICAgICAgIG9yaWdfcGxhdGZvcm0gPSBzeXMu
cGxhdGZvcm0KLSAgICAgICAgb3JpZ19leGlzdHMgPSBvcy5wYXRoLmV4aXN0cwotCiAgICAgICAg
IHRyeToKKyAgICAgICAgICAgICMgRklYTUU6IFVzZSB0aGUgbW9jayBmaWxlc3lzdGVtIGluc3Rl
YWQgb2YgbW9ua2V5LXBhdGNoaW5nIHN5cy5wbGF0Zm9ybQorICAgICAgICAgICAgb3JpZ19wbGF0
Zm9ybSA9IHN5cy5wbGF0Zm9ybQogICAgICAgICAgICAgc3lzLnBsYXRmb3JtID0gJ2RhcndpbicK
LSAgICAgICAgICAgIG9zLnBhdGguZXhpc3RzID0gbGFtYmRhIHg6IFRydWUKICAgICAgICAgICAg
IGdlbmVyYXRvciA9IHNlbGYubWFrZV9nZW5lcmF0b3IoWyJmb28udHh0Il0pCisgICAgICAgICAg
ICBzZWxmLl9ydW5uaW5nX3BvcnQuX2ZpbGVzeXN0ZW0uZXhpc3RzID0gbGFtYmRhIHg6IFRydWUK
ICAgICAgICAgICAgIGxpbmtzID0gZ2VuZXJhdG9yLl9nZW5lcmF0ZV9iYXNlbGluZV9saW5rcygi
Zm9vIiwgIi50eHQiLCAibWFjIikKICAgICAgICAgICAgIGV4cGVjdGVkX2xpbmtzID0gJzx0ZCBh
bGlnbj1jZW50ZXI+PGEgaHJlZj0iZmlsZTovLy90bXAvZm9vLWV4cGVjdGVkLW1hYy1vbGQudHh0
Ij5mb28tZXhwZWN0ZWQudHh0PC9hPjwvdGQ+PHRkIGFsaWduPWNlbnRlcj48YSBocmVmPSJmaWxl
Oi8vL3RtcC9mb28tZXhwZWN0ZWQtbWFjLW5ldy50eHQiPmZvby1leHBlY3RlZC50eHQ8L2E+PC90
ZD48dGQgYWxpZ249Y2VudGVyPjxhIGhyZWY9ImZpbGU6Ly8vdG1wL2Zvby1leHBlY3RlZC1tYWMt
ZGlmZi50eHQiPkRpZmY8L2E+PC90ZD4nCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxp
bmtzLCBleHBlY3RlZF9saW5rcykKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHN5cy5w
bGF0Zm9ybSA9IG9yaWdfcGxhdGZvcm0KLSAgICAgICAgICAgIG9zLnBhdGguZXhpc3RzID0gb3Jp
Z19leGlzdHMKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79011</attachid>
            <date>2011-01-14 15:09:21 -0800</date>
            <delta_ts>2011-01-14 17:51:49 -0800</delta_ts>
            <desc>fix minor bug in test_generate_baseline_links</desc>
            <filename>bug-52482-20110114150919.patch</filename>
            <type>text/plain</type>
            <size>34085</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyYzUz
NDUxNzE5OGY1NTk2ZjM4OWZjNDQyM2VhOWE0NWNhMjAyOWQ3Li40OTM2OTgwOGM0OWFkMjZhNWRj
OTJiZmNkMzJmMDYyZjE3ZGQ2ZTZiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDEtMTQgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXBkYXRlIHJlYmFzZWxpbmUtY2hyb21pdW0td2Via2l0LXRlc3Rz
IHRvIHVzZSBmaWxlc3lzdGVtIG9iamVjdHMKKyAgICAgICAgaW5zdGVhZCBvZiBkaXJlY3QgcmVm
ZXJlbmNlcyB0byBvcy5wYXRoLCBzaHV0aWwsIHRlbXBmaWxlLCBldGMuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBkb2Vzbid0IGNoYW5nZSBhbnl0aGluZywgYnV0IHdpbGwgYWxsb3cgc3Vic2VxdWVu
dAorICAgICAgICBwYXRjaGVzIHRvIGNoYW5nZSB0aGUgdW5pdCB0ZXN0cyB0byBubyBsb25nZXIg
dXNlIHRoZSByZWFsCisgICAgICAgIGZpbGVzeXN0ZW0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBh
ZGRzIGEgYnVuY2ggbW9yZSBtZXRob2RzIHRvIHRoZSBmaWxlc3lzdGVtIG9iamVjdCBhcworICAg
ICAgICB3ZWxsLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01MjQ4MgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2Zp
bGVzeXN0ZW0ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2Zp
bGVzeXN0ZW1fbW9jay5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191
bml0dGVzdC5weToKKwogMjAxMS0wMS0xMyAgQWxlamFuZHJvIEcuIENhc3RybyAgPGFsZXhAaWdh
bGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CmluZGV4
IDg4MzBlYThkYzZjMDUxZGE0YjMyNGVlZmZjYTIwNjE3MDcxMjkwZDEuLmRlMzU2NDMyODgzYTJj
NDBiNmJjMjg3NTUzM2E2NzU1MmY4YTE3YWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CkBAIC00NCwxMCArNDQsMjcgQEAgY2xh
c3MgRmlsZVN5c3RlbShvYmplY3QpOgogICAgIFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIGFsbCBw
YXRocyBhcmUgYWxsb3dlZCB0byBiZSBlaXRoZXIgYWJzb2x1dGUKICAgICBvciByZWxhdGl2ZS4i
IiIKIAorICAgIGRlZiBiYXNlbmFtZShzZWxmLCBwYXRoKToKKyAgICAgICAgcmV0dXJuIG9zLnBh
dGguYmFzZW5hbWUocGF0aCkKKworICAgIGRlZiBjb3B5ZmlsZShzZWxmLCBzb3VyY2UsIGRlc3Rp
bmF0aW9uKToKKyAgICAgICAgIiIiQ29waWVzIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBhdCB0
aGUgZ2l2ZW4gcGF0aCB0byB0aGUgZGVzdGluYXRpb24KKyAgICAgICAgcGF0aC4iIiIKKyAgICAg
ICAgc2h1dGlsLmNvcHlmaWxlKHNvdXJjZSwgZGVzdGluYXRpb24pCisKKyAgICBkZWYgZGlybmFt
ZShzZWxmLCBwYXRoKToKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguZGlybmFtZShwYXRoKQorCiAg
ICAgZGVmIGV4aXN0cyhzZWxmLCBwYXRoKToKICAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhl
IHBhdGggZXhpc3RzIGluIHRoZSBmaWxlc3lzdGVtLiIiIgogICAgICAgICByZXR1cm4gb3MucGF0
aC5leGlzdHMocGF0aCkKIAorICAgIGRlZiBmaWxlc191bmRlcihzZWxmLCBwYXRoKToKKyAgICAg
ICAgIiIiUmV0dXJuIHRoZSBsaXN0IG9mIGFsbCBmaWxlcyB1bmRlciB0aGUgZ2l2ZW4gcGF0aC4i
IiIKKyAgICAgICAgcmV0dXJuIFtzZWxmLmpvaW4ocGF0aF90b19maWxlLCBmaWxlbmFtZSkKKyAg
ICAgICAgICAgIGZvciAocGF0aF90b19maWxlLCBfLCBmaWxlbmFtZXMpIGluIG9zLndhbGsocGF0
aCkKKyAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlbmFtZXNdCisKICAgICBkZWYgaXNm
aWxlKHNlbGYsIHBhdGgpOgogICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgcGF0aCByZWZl
cnMgdG8gYSBmaWxlLiIiIgogICAgICAgICByZXR1cm4gb3MucGF0aC5pc2ZpbGUocGF0aCkKQEAg
LTcxLDE0ICs4OCwyMCBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgIHRoZSBk
aXJlY3Rvcnkgd2lsbCBzZWxmLWRlbGV0ZSBhdCB0aGUgZW5kIG9mIHRoZSBibG9jayAoaWYgdGhl
CiAgICAgICAgIGRpcmVjdG9yeSBpcyBlbXB0eTsgbm9uLWVtcHR5IGRpcmVjdG9yaWVzIHJhaXNl
IGVycm9ycykuIFRoZQogICAgICAgICBkaXJlY3RvcnkgY2FuIGJlIHNhZmVseSBkZWxldGVkIGlu
c2lkZSB0aGUgYmxvY2sgYXMgd2VsbCwgaWYgc28KLSAgICAgICAgZGVzaXJlZC4iIiIKKyAgICAg
ICAgZGVzaXJlZC4KKworICAgICAgICBOb3RlIHRoYXQgdGhlIG9iamVjdCByZXR1cm5lZCBpcyBu
b3QgYSBzdHJpbmcgYW5kIGRvZXMgbm90IHN1cHBvcnQgYWxsIG9mIHRoZSBzdHJpbmcKKyAgICAg
ICAgbWV0aG9kcy4gSWYgeW91IG5lZWQgYSBzdHJpbmcsIGNvZXJjZSB0aGUgb2JqZWN0IHRvIGEg
c3RyaW5nIGFuZCBnbyBmcm9tIHRoZXJlLgorICAgICAgICAiIiIKICAgICAgICAgY2xhc3MgVGVt
cG9yYXJ5RGlyZWN0b3J5KG9iamVjdCk6CiAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwg
Kiprd2FyZ3MpOgogICAgICAgICAgICAgICAgIHNlbGYuX2t3YXJncyA9IGt3YXJncwotICAgICAg
ICAgICAgICAgIHNlbGYuX2RpcmVjdG9yeV9wYXRoID0gTm9uZQorICAgICAgICAgICAgICAgIHNl
bGYuX2RpcmVjdG9yeV9wYXRoID0gdGVtcGZpbGUubWtkdGVtcCgqKnNlbGYuX2t3YXJncykKKwor
ICAgICAgICAgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNl
bGYuX2RpcmVjdG9yeV9wYXRoCiAKICAgICAgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0g
ICAgICAgICAgICAgICAgc2VsZi5fZGlyZWN0b3J5X3BhdGggPSB0ZW1wZmlsZS5ta2R0ZW1wKCoq
c2VsZi5fa3dhcmdzKQogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9kaXJlY3RvcnlfcGF0
aAogCiAgICAgICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNlYmFj
ayk6CkBAIC04OCw2ICsxMTEsOCBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAg
ICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc2VsZi5fZGlyZWN0b3J5X3BhdGgpOgogICAgICAg
ICAgICAgICAgICAgICBvcy5ybWRpcihzZWxmLl9kaXJlY3RvcnlfcGF0aCkKIAorCisKICAgICAg
ICAgcmV0dXJuIFRlbXBvcmFyeURpcmVjdG9yeSgqKmt3YXJncykKIAogICAgIGRlZiBtYXliZV9t
YWtlX2RpcmVjdG9yeShzZWxmLCAqcGF0aCk6CkBAIC05OCw2ICsxMjMsMzAgQEAgY2xhc3MgRmls
ZVN5c3RlbShvYmplY3QpOgogICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FRVhJU1Q6
CiAgICAgICAgICAgICAgICAgcmFpc2UKIAorICAgIGRlZiBtb3ZlKHNlbGYsIHNyYywgZGVzdCk6
CisgICAgICAgIHNodXRpbC5tb3ZlKHNyYywgZGVzdCkKKworICAgIGRlZiBub3JtcGF0aChzZWxm
LCBwYXRoKToKKyAgICAgICAgcmV0dXJuIG9zLnBhdGgubm9ybXBhdGgocGF0aCkKKworICAgIGRl
ZiBvcGVuX2JpbmFyeV90ZW1wZmlsZShzZWxmLCBzdWZmaXgpOgorICAgICAgICAiIiJDcmVhdGUs
IG9wZW4sIGFuZCByZXR1cm4gYSBiaW5hcnkgdGVtcCBmaWxlLiBSZXR1cm5zIGEgdHVwbGUgb2Yg
dGhlIGZpbGUgYW5kIHRoZSBuYW1lLiIiIgorICAgICAgICB0ZW1wX2ZkLCB0ZW1wX25hbWUgPSB0
ZW1wZmlsZS5ta3N0ZW1wKHN1ZmZpeCkKKyAgICAgICAgZiA9IG9zLmZkb3Blbih0ZW1wX2ZkLCAn
d2InKQorICAgICAgICByZXR1cm4gZiwgdGVtcF9uYW1lCisKKyAgICBkZWYgcmVhZF9iaW5hcnlf
ZmlsZShzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBjb250ZW50cyBvZiB0aGUg
ZmlsZSBhdCB0aGUgZ2l2ZW4gcGF0aCBhcyBhIGJ5dGUgc3RyaW5nLiIiIgorICAgICAgICB3aXRo
IGZpbGUocGF0aCwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgIHJldHVybiBmLnJlYWQoKQorCisg
ICAgZGVmIHJlYWRfdGV4dF9maWxlKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJSZXR1cm4gdGhl
IGNvbnRlbnRzIG9mIHRoZSBmaWxlIGF0IHRoZSBnaXZlbiBwYXRoIGFzIGEgVW5pY29kZSBzdHJp
bmcuCisKKyAgICAgICAgVGhlIGZpbGUgaXMgcmVhZCBhc3N1bWluZyBpdCBpcyBhIFVURi04IGVu
Y29kZWQgZmlsZSB3aXRoIG5vIEJPTS4iIiIKKyAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihwYXRo
LCAncicsICd1dGY4JykgYXMgZjoKKyAgICAgICAgICAgIHJldHVybiBmLnJlYWQoKQorCiAgICAg
Y2xhc3MgX1dpbmRvd3NFcnJvcihleGNlcHRpb25zLk9TRXJyb3IpOgogICAgICAgICAiIiJGYWtl
IGV4Y2VwdGlvbiBmb3IgTGludXggYW5kIE1hYy4iIiIKICAgICAgICAgcGFzcwpAQCAtMTI0LDE3
ICsxNzMsMTMgQEAgY2xhc3MgRmlsZVN5c3RlbShvYmplY3QpOgogICAgICAgICAgICAgICAgIGlm
IHJldHJ5X3RpbWVvdXRfc2VjIDwgMDoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZQogCi0g
ICAgZGVmIHJlYWRfYmluYXJ5X2ZpbGUoc2VsZiwgcGF0aCk6Ci0gICAgICAgICIiIlJldHVybiB0
aGUgY29udGVudHMgb2YgdGhlIGZpbGUgYXQgdGhlIGdpdmVuIHBhdGggYXMgYSBieXRlIHN0cmlu
Zy4iIiIKLSAgICAgICAgd2l0aCBmaWxlKHBhdGgsICdyYicpIGFzIGY6Ci0gICAgICAgICAgICBy
ZXR1cm4gZi5yZWFkKCkKLQotICAgIGRlZiByZWFkX3RleHRfZmlsZShzZWxmLCBwYXRoKToKLSAg
ICAgICAgIiIiUmV0dXJuIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBhdCB0aGUgZ2l2ZW4gcGF0
aCBhcyBhIFVuaWNvZGUgc3RyaW5nLgorICAgIGRlZiBybXRyZWUoc2VsZiwgcGF0aCk6CisgICAg
ICAgICIiIkRlbGV0ZSB0aGUgZGlyZWN0b3J5IHJvb3RlZCBhdCBwYXRoLCBlbXB0eSBvciBuby4i
IiIKKyAgICAgICAgc2h1dGlsLnJtdHJlZShwYXRoLCBpZ25vcmVfZXJyb3JzPVRydWUpCiAKLSAg
ICAgICAgVGhlIGZpbGUgaXMgcmVhZCBhc3N1bWluZyBpdCBpcyBhIFVURi04IGVuY29kZWQgZmls
ZSB3aXRoIG5vIEJPTS4iIiIKLSAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihwYXRoLCAncicsICd1
dGY4JykgYXMgZjoKLSAgICAgICAgICAgIHJldHVybiBmLnJlYWQoKQorICAgIGRlZiBzcGxpdGV4
dChzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiUmV0dXJuIChkaXJuYW1lLCBiYXNlbmFtZSArIGV4
dCkuIiIiCisgICAgICAgIHJldHVybiBvcy5wYXRoLnNwbGl0ZXh0KHBhdGgpCiAKICAgICBkZWYg
d3JpdGVfYmluYXJ5X2ZpbGUoc2VsZiwgcGF0aCwgY29udGVudHMpOgogICAgICAgICAiIiJXcml0
ZSB0aGUgY29udGVudHMgdG8gdGhlIGZpbGUgYXQgdGhlIGdpdmVuIGxvY2F0aW9uLiIiIgpAQCAt
MTQ3LDE0ICsxOTIsMyBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgIFRoZSBm
aWxlIGlzIHdyaXR0ZW4gZW5jb2RlZCBhcyBVVEYtOCB3aXRoIG5vIEJPTS4iIiIKICAgICAgICAg
d2l0aCBjb2RlY3Mub3BlbihwYXRoLCAndycsICd1dGY4JykgYXMgZjoKICAgICAgICAgICAgIGYu
d3JpdGUoY29udGVudHMpCi0KLSAgICBkZWYgY29weWZpbGUoc2VsZiwgc291cmNlLCBkZXN0aW5h
dGlvbik6Ci0gICAgICAgICIiIkNvcGllcyB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgYXQgdGhl
IGdpdmVuIHBhdGggdG8gdGhlIGRlc3RpbmF0aW9uCi0gICAgICAgIHBhdGguIiIiCi0gICAgICAg
IHNodXRpbC5jb3B5ZmlsZShzb3VyY2UsIGRlc3RpbmF0aW9uKQotCi0gICAgZGVmIGZpbGVzX3Vu
ZGVyKHNlbGYsIHBhdGgpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGxpc3Qgb2YgYWxsIGZpbGVz
IHVuZGVyIHRoZSBnaXZlbiBwYXRoLiIiIgotICAgICAgICByZXR1cm4gW3NlbGYuam9pbihwYXRo
X3RvX2ZpbGUsIGZpbGVuYW1lKQotICAgICAgICAgICAgZm9yIChwYXRoX3RvX2ZpbGUsIF8sIGZp
bGVuYW1lcykgaW4gb3Mud2FsayhwYXRoKQotICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluIGZp
bGVuYW1lc10KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9maWxlc3lzdGVtX21vY2sucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vZmlsZXN5c3RlbV9tb2NrLnB5CmluZGV4IGM2MDVjYjIxOGQ3YmUyNmJiZjMzMDFlODhjN2Q4
NjkxYWVjMjQ4ZmMuLmU3NDMyMjYzMGUxMTE2Y2MxZGNkN2I4YWUyMjBkNGZmYzJkNzg1MmYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVt
X21vY2sucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVz
eXN0ZW1fbW9jay5weQpAQCAtNDMsMTAgKzQzLDM1IEBAIGNsYXNzIE1vY2tGaWxlU3lzdGVtKG9i
amVjdCk6CiAgICAgICAgICAgICAgICAgbm90IGV4aXN0LgogICAgICAgICAiIiIKICAgICAgICAg
c2VsZi5maWxlcyA9IGZpbGVzIG9yIHt9CisgICAgICAgIHNlbGYuX2N1cnJlbnRfdG1wbm8gPSAw
CisKKyAgICBkZWYgX3JhaXNlX25vdF9mb3VuZChzZWxmLCBwYXRoKToKKyAgICAgICAgcmFpc2Ug
SU9FcnJvcihlcnJuby5FTk9FTlQsIHBhdGgsIG9zLnN0cmVycm9yKGVycm5vLkVOT0VOVCkpCisK
KyAgICBkZWYgYmFzZW5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnNwbGl0KHBhdGgp
WzFdCisKKyAgICBkZWYgY29weWZpbGUoc2VsZiwgc291cmNlLCBkZXN0aW5hdGlvbik6CisgICAg
ICAgIGlmIG5vdCBzZWxmLmV4aXN0cyhzb3VyY2UpOgorICAgICAgICAgICAgc2VsZi5fcmFpc2Vf
bm90X2ZvdW5kKHNvdXJjZSkKKyAgICAgICAgaWYgc2VsZi5pc2Rpcihzb3VyY2UpOgorICAgICAg
ICAgICAgcmFpc2UgSU9FcnJvcihlcnJuby5FSVNESVIsIHNvdXJjZSwgb3Muc3RyZXJyb3IoZXJy
bm8uSVNESVIpKQorICAgICAgICBpZiBzZWxmLmlzZGlyKGRlc3RpbmF0aW9uKToKKyAgICAgICAg
ICAgIHJhaXNlIElPRXJyb3IoZXJybm8uRUlTRElSLCBkZXN0aW5hdGlvbiwgb3Muc3RyZXJyb3Io
ZXJybm8uSVNESVIpKQorCisgICAgICAgIHNlbGYuZmlsZXNbZGVzdGluYXRpb25dID0gc2VsZi5m
aWxlc1tzb3VyY2VdCisKKyAgICBkZWYgZGlybmFtZShzZWxmLCBwYXRoKToKKyAgICAgICAgcmV0
dXJuIHNlbGYuc3BsaXQocGF0aClbMF0KIAogICAgIGRlZiBleGlzdHMoc2VsZiwgcGF0aCk6CiAg
ICAgICAgIHJldHVybiBzZWxmLmlzZmlsZShwYXRoKSBvciBzZWxmLmlzZGlyKHBhdGgpCiAKKyAg
ICBkZWYgZmlsZXNfdW5kZXIoc2VsZiwgcGF0aCk6CisgICAgICAgIGlmIG5vdCBwYXRoLmVuZHN3
aXRoKCcvJyk6CisgICAgICAgICAgICBwYXRoICs9ICcvJworICAgICAgICByZXR1cm4gW2ZpbGUg
Zm9yIGZpbGUgaW4gc2VsZi5maWxlcyBpZiBmaWxlLnN0YXJ0c3dpdGgocGF0aCldCisKICAgICBk
ZWYgaXNmaWxlKHNlbGYsIHBhdGgpOgogICAgICAgICByZXR1cm4gcGF0aCBpbiBzZWxmLmZpbGVz
IGFuZCBzZWxmLmZpbGVzW3BhdGhdIGlzIG5vdCBOb25lCiAKQEAgLTgwLDM5ICsxMDUsMTA3IEBA
IGNsYXNzIE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgIGZpbGVz
LmFwcGVuZChyZW1haW5pbmcpCiAgICAgICAgIHJldHVybiBkaXJzICsgZmlsZXMKIAorICAgIGRl
ZiBfbWt0ZW1wKHNlbGYsIHN1ZmZpeD0nJywgcHJlZml4PSd0bXAnLCBkaXI9Tm9uZSwgKiprd2Fy
Z3MpOgorICAgICAgICBpZiBkaXIgaXMgTm9uZToKKyAgICAgICAgICAgIGRpciA9ICcvX19pbV90
bXAnCisgICAgICAgIGN1cm5vID0gc2VsZi5jdXJyZW50X3RtcG5vCisgICAgICAgIHNlbGYuY3Vy
cmVudF90bXBubyArPSAxCisgICAgICAgIHJldHVybiBzZWxmLmpvaW4oZGlyLCAiJXNfJXVfJXMi
ICUgKHByZWZpeCwgY3Vybm8sIHN1ZmZpeCkpCisKKyAgICBkZWYgbWtkdGVtcChzZWxmLCAqKmt3
YXJncyk6CisgICAgICAgIGNsYXNzIFRlbXBvcmFyeURpcmVjdG9yeShvYmplY3QpOgorICAgICAg
ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAg
c2VsZi5fa3dhcmdzID0ga3dhcmdzCisgICAgICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9
IGZzCisgICAgICAgICAgICAgICAgc2VsZi5fZGlyZWN0b3J5X3BhdGggPSBmcy5fbWt0ZW1wKCoq
a3dhcmdzKQorICAgICAgICAgICAgICAgIGZzLm1heWJlX21ha2VfZGlyZWN0b3J5KHNlbGYuX2Rp
cmVjdG9yeV9wYXRoKQorCisgICAgICAgICAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAg
ICAgICAgICByZXR1cm4gc2VsZi5fZGlyZWN0b3J5X3BhdGgKKworICAgICAgICAgICAgZGVmIF9f
ZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZGlyZWN0b3J5X3Bh
dGgKKworICAgICAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIHR5cGUsIHZhbHVlLCB0cmFjZWJh
Y2spOgorICAgICAgICAgICAgICAgICMgT25seSBzZWxmLWRlbGV0ZSBpZiBuZWNlc3NhcnkuCisK
KyAgICAgICAgICAgICAgICAjIEZJWE1FOiBTaG91bGQgd2UgZGVsZXRlIG5vbi1lbXB0eSBkaXJl
Y3Rvcmllcz8KKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhzZWxm
Ll9kaXJlY3RvcnlfcGF0aCk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0u
cm1kaXIoc2VsZi5fZGlyZWN0b3J5X3BhdGgpCisKKyAgICAgICAgcmV0dXJuIFRlbXBvcmFyeURp
cmVjdG9yeShmcz1zZWxmLCAqKmt3YXJncykKKwogICAgIGRlZiBtYXliZV9tYWtlX2RpcmVjdG9y
eShzZWxmLCAqcGF0aCk6CiAgICAgICAgICMgRklYTUU6IEltcGxlbWVudCBzdWNoIHRoYXQgc3Vi
c2VxdWVudCBjYWxscyB0byBpc2RpcigpIHdvcms/CiAgICAgICAgIHBhc3MKIAorICAgIGRlZiBt
b3ZlKHNlbGYsIHNyYywgZHN0KToKKyAgICAgICAgaWYgc2VsZi5maWxlc1tzcmNdIGlzIE5vbmU6
CisgICAgICAgICAgICBzZWxmLl9yYWlzZV9ub3RfZm91bmQoc3JjKQorICAgICAgICBzZWxmLmZp
bGVzW2RzdF0gPSBzZWxmLmZpbGVzW3NyY10KKyAgICAgICAgc2VsZi5maWxlc1tzcmNdID0gTm9u
ZQorCisgICAgZGVmIG5vcm1wYXRoKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gcGF0aAor
CisgICAgZGVmIG9wZW5fYmluYXJ5X3RlbXBmaWxlKHNlbGYsIHN1ZmZpeCk6CisgICAgICAgIHBh
dGggPSBzZWxmLl9ta3RlbXAoc3VmZml4KQorICAgICAgICByZXR1cm4gV3JpdGFibGVGaWxlT2Jq
ZWN0KHNlbGYsIHBhdGgpLCBwYXRoCisKICAgICBkZWYgcmVhZF90ZXh0X2ZpbGUoc2VsZiwgcGF0
aCk6CiAgICAgICAgIHJldHVybiBzZWxmLnJlYWRfYmluYXJ5X2ZpbGUocGF0aCkKIAogICAgIGRl
ZiByZWFkX2JpbmFyeV9maWxlKHNlbGYsIHBhdGgpOgogICAgICAgICBpZiBwYXRoIGluIHNlbGYu
ZmlsZXM6CiAgICAgICAgICAgICBpZiBzZWxmLmZpbGVzW3BhdGhdIGlzIE5vbmU6Ci0gICAgICAg
ICAgICAgICAgcmFpc2UgSU9FcnJvcihlcnJuby5FTk9FTlQsIHBhdGgsIG9zLnN0cmVycm9yKGVy
cm5vLkVOT0VOVCkpCisgICAgICAgICAgICAgICAgc2VsZi5fcmFpc2Vfbm90X2ZvdW5kKHBhdGgp
CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5maWxlc1twYXRoXQogCisgICAgZGVmIHJlbW92ZShz
ZWxmLCBwYXRoKToKKyAgICAgICAgaWYgc2VsZi5maWxlc1twYXRoXSBpcyBOb25lOgorICAgICAg
ICAgICAgc2VsZi5fcmFpc2Vfbm90X2ZvdW5kKHBhdGgpCisgICAgICAgIHNlbGYuZmlsZXNbcGF0
aF0gPSBOb25lCisKKyAgICBkZWYgcm10cmVlKHNlbGYsIHBhdGgpOgorICAgICAgICBmb3IgZiBp
biBzZWxmLmZpbGVzOgorICAgICAgICAgICAgaWYgZi5zdGFydHN3aXRoKHBhdGgpOgorICAgICAg
ICAgICAgICAgIHNlbGYuZmlsZXNbZl0gPSBOb25lCisKKyAgICBkZWYgc3BsaXQoc2VsZiwgcGF0
aCk6CisgICAgICAgIGlkeCA9IHBhdGgucmZpbmQoJy8nKQorICAgICAgICByZXR1cm4gKHBhdGhb
MDppZHhdLCBwYXRoW2lkeCArIDE6XSkKKworICAgIGRlZiBzcGxpdGV4dChzZWxmLCBwYXRoKToK
KyAgICAgICAgaWR4ID0gcGF0aC5yZmluZCgnLicpCisgICAgICAgIGlmIGlkeCA9PSAtMToKKyAg
ICAgICAgICAgIGlkeCA9IDAKKyAgICAgICAgcmV0dXJuIChwYXRoWzA6aWR4XSwgcGF0aFtpZHg6
XSkKKwogICAgIGRlZiB3cml0ZV90ZXh0X2ZpbGUoc2VsZiwgcGF0aCwgY29udGVudHMpOgogICAg
ICAgICByZXR1cm4gc2VsZi53cml0ZV9iaW5hcnlfZmlsZShwYXRoLCBjb250ZW50cykKIAogICAg
IGRlZiB3cml0ZV9iaW5hcnlfZmlsZShzZWxmLCBwYXRoLCBjb250ZW50cyk6CiAgICAgICAgIHNl
bGYuZmlsZXNbcGF0aF0gPSBjb250ZW50cwogCi0gICAgZGVmIGNvcHlmaWxlKHNlbGYsIHNvdXJj
ZSwgZGVzdGluYXRpb24pOgotICAgICAgICBpZiBub3Qgc2VsZi5leGlzdHMoc291cmNlKToKLSAg
ICAgICAgICAgIHJhaXNlIElPRXJyb3IoZXJybm8uRU5PRU5ULCBzb3VyY2UsIG9zLnN0cmVycm9y
KGVycm5vLkVOT0VOVCkpCi0gICAgICAgIGlmIHNlbGYuaXNkaXIoc291cmNlKToKLSAgICAgICAg
ICAgIHJhaXNlIElPRXJyb3IoZXJybm8uRUlTRElSLCBzb3VyY2UsIG9zLnN0cmVycm9yKGVycm5v
LklTRElSKSkKLSAgICAgICAgaWYgc2VsZi5pc2RpcihkZXN0aW5hdGlvbik6Ci0gICAgICAgICAg
ICByYWlzZSBJT0Vycm9yKGVycm5vLkVJU0RJUiwgZGVzdGluYXRpb24sIG9zLnN0cmVycm9yKGVy
cm5vLklTRElSKSkKIAotICAgICAgICBzZWxmLmZpbGVzW2Rlc3RpbmF0aW9uXSA9IHNlbGYuZmls
ZXNbc291cmNlXQorY2xhc3MgV3JpdGFibGVGaWxlT2JqZWN0KG9iamVjdCk6CisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGZzLCBwYXRoLCBhcHBlbmQ9RmFsc2UsIGVuY29kaW5nPU5vbmUpOgorICAg
ICAgICBzZWxmLmZzID0gZnMKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxm
LmNsb3NlZCA9IEZhbHNlCisgICAgICAgIGlmIHBhdGggbm90IGluIHNlbGYuZnMuZmlsZXMgb3Ig
bm90IGFwcGVuZDoKKyAgICAgICAgICAgIHNlbGYuZnMuZmlsZXNbcGF0aF0gPSAiIgogCi0gICAg
ZGVmIGZpbGVzX3VuZGVyKHNlbGYsIHBhdGgpOgotICAgICAgICBpZiBub3QgcGF0aC5lbmRzd2l0
aCgnLycpOgotICAgICAgICAgICAgcGF0aCArPSAnLycKLSAgICAgICAgcmV0dXJuIFtmaWxlIGZv
ciBmaWxlIGluIHNlbGYuZmlsZXMgaWYgZmlsZS5zdGFydHN3aXRoKHBhdGgpXQorICAgIGRlZiBf
X2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCiAKLSAgICBkZWYgcmVtb3ZlKHNl
bGYsIHBhdGgpOgotICAgICAgICBkZWwgc2VsZi5maWxlc1twYXRoXQorICAgIGRlZiBfX2V4aXRf
XyhzZWxmLCB0eXBlLCB2YWx1ZSwgdHJhY2ViYWNrKToKKyAgICAgICAgIyBGSVhNRTogc2hvdWxk
IHdlIGNsb3NlKCkgaGVyZT8KKyAgICAgICAgcGFzcworCisgICAgZGVmIGNsb3NlKHNlbGYpOgor
ICAgICAgICBzZWxmLmNsb3NlZCA9IFRydWUKKworICAgIGRlZiB3cml0ZShzZWxmLCBzdHIpOgor
ICAgICAgICBzZWxmLmZzLmZpbGVzW3NlbGYubmFtZV0gKz0gc3RyCisgICAgICAgIHNlbGYuZnMu
d3JpdHRlbl9maWxlc1tzZWxmLm5hbWVdID0gc2VsZi5mcy5maWxlc1tzZWxmLm5hbWVdCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2No
cm9taXVtX3dlYmtpdF90ZXN0cy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5CmluZGV4IDRkOGI3YzlmNWEy
YmQ0Yzc0ZWQ1NmZkNjMxMmJhMTk1YzE2YzhhNmQuLjhmZDU2MzgwNmE2MjI0OWU4ZTk0NTZjNTBj
NWQ3MGRjMTY2OTEyNGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rl
c3RzLnB5CkBAIC00MSwyNiArNDEsMTggQEAgVGhlIHNjcmlwdCBkb2VzIHRoZSBmb2xsb3dpbmcg
Zm9yIGVhY2ggcGxhdGZvcm0gc3BlY2lmaWVkOgogQXQgdGhlIGVuZCwgdGhlIHNjcmlwdCBnZW5l
cmF0ZXMgYSBodG1sIHRoYXQgY29tcGFyZXMgb2xkIGFuZCBuZXcgYmFzZWxpbmVzLgogIiIiCiAK
LWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLQotaW1wb3J0IGNvZGVjcwog
aW1wb3J0IGNvcHkKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3B0cGFyc2UKLWltcG9ydCBvcwog
aW1wb3J0IHJlCi1pbXBvcnQgc2h1dGlsCi1pbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwot
aW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdGltZQogaW1wb3J0IHVybGxpYgogaW1wb3J0IHppcGZp
bGUKIAorZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQgaW1wb3J0IHNjbQogZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBwYXRoCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0gaW1wb3J0IHVzZXIKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1w
b3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKLWltcG9ydCB3ZWJraXRweS5jb21tb24uY2hlY2tv
dXQuc2NtIGFzIHNjbQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBv
cnQgU2NyaXB0RXJyb3IKIAogaW1wb3J0IHBvcnQKIGZyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0
IHRlc3RfZXhwZWN0YXRpb25zCkBAIC0xMDAsNDEgKzkyLDM1IEBAIGRlZiBsb2dfZGFzaGVkX3N0
cmluZyh0ZXh0LCBwbGF0Zm9ybSwgbG9nZ2luZ19sZXZlbD1sb2dnaW5nLklORk8pOgogICAgICAg
ICBfbG9nLmluZm8obXNnKQogCiAKLWRlZiBzZXR1cF9odG1sX2RpcmVjdG9yeShodG1sX2RpcmVj
dG9yeSk6CitkZWYgc2V0dXBfaHRtbF9kaXJlY3RvcnkoZmlsZXN5c3RlbSwgcGFyZW50X2RpcmVj
dG9yeSk6CiAgICAgIiIiU2V0dXAgdGhlIGRpcmVjdG9yeSB0byBzdG9yZSBodG1sIHJlc3VsdHMu
CiAKLSAgICAgICBBbGwgaHRtbCByZWxhdGVkIGZpbGVzIGFyZSBzdG9yZWQgaW4gdGhlICJyZWJh
c2VsaW5lX2h0bWwiIHN1YmRpcmVjdG9yeS4KLQotICAgIEFyZ3M6Ci0gICAgICBodG1sX2RpcmVj
dG9yeTogcGFyZW50IGRpcmVjdG9yeSB0aGF0IHN0b3JlcyB0aGUgcmViYXNlbGluaW5nIHJlc3Vs
dHMuCi0gICAgICAgICAgICAgICAgICAgICAgSWYgTm9uZSwgYSB0ZW1wIGRpcmVjdG9yeSBpcyBj
cmVhdGVkLgotCi0gICAgUmV0dXJuczoKLSAgICAgIHRoZSBkaXJlY3RvcnkgdGhhdCBzdG9yZXMg
dGhlIGh0bWwgcmVsYXRlZCByZWJhc2VsaW5pbmcgcmVzdWx0cy4KKyAgICAgICBBbGwgaHRtbCBy
ZWxhdGVkIGZpbGVzIGFyZSBzdG9yZWQgaW4gdGhlICJyZWJhc2VsaW5lX2h0bWwiIHN1YmRpcmVj
dG9yeSBvZgorICAgICAgIHRoZSBwYXJlbnQgZGlyZWN0b3J5LiBUaGUgcGF0aCB0byB0aGUgY3Jl
YXRlZCBkaXJlY3RvcnkgaXMgcmV0dXJuZWQuCiAgICAgIiIiCiAKLSAgICBpZiBub3QgaHRtbF9k
aXJlY3Rvcnk6Ci0gICAgICAgIGh0bWxfZGlyZWN0b3J5ID0gdGVtcGZpbGUubWtkdGVtcCgpCi0g
ICAgZWxpZiBub3Qgb3MucGF0aC5leGlzdHMoaHRtbF9kaXJlY3RvcnkpOgotICAgICAgICBvcy5t
a2RpcihodG1sX2RpcmVjdG9yeSkKKyAgICBpZiBub3QgcGFyZW50X2RpcmVjdG9yeToKKyAgICAg
ICAgcGFyZW50X2RpcmVjdG9yeSA9IHN0cihmaWxlc3lzdGVtLm1rZHRlbXAoKSkKKyAgICBlbHNl
OgorICAgICAgICBmaWxlc3lzdGVtLm1heWJlX21ha2VfZGlyZWN0b3J5KHBhcmVudF9kaXJlY3Rv
cnkpCiAKLSAgICBodG1sX2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbihodG1sX2RpcmVjdG9yeSwg
J3JlYmFzZWxpbmVfaHRtbCcpCisgICAgaHRtbF9kaXJlY3RvcnkgPSBmaWxlc3lzdGVtLmpvaW4o
cGFyZW50X2RpcmVjdG9yeSwgJ3JlYmFzZWxpbmVfaHRtbCcpCiAgICAgX2xvZy5pbmZvKCdIdG1s
IGRpcmVjdG9yeTogIiVzIicsIGh0bWxfZGlyZWN0b3J5KQogCi0gICAgaWYgb3MucGF0aC5leGlz
dHMoaHRtbF9kaXJlY3RvcnkpOgotICAgICAgICBzaHV0aWwucm10cmVlKGh0bWxfZGlyZWN0b3J5
LCBUcnVlKQorICAgIGlmIGZpbGVzeXN0ZW0uZXhpc3RzKGh0bWxfZGlyZWN0b3J5KToKKyAgICAg
ICAgZmlsZXN5c3RlbS5ybXRyZWUoaHRtbF9kaXJlY3RvcnksIFRydWUpCiAgICAgICAgIF9sb2cu
aW5mbygnRGVsZXRlZCBmaWxlIGF0IGh0bWwgZGlyZWN0b3J5OiAiJXMiJywgaHRtbF9kaXJlY3Rv
cnkpCiAKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoaHRtbF9kaXJlY3RvcnkpOgotICAgICAg
ICBvcy5ta2RpcihodG1sX2RpcmVjdG9yeSkKKyAgICBmaWxlc3lzdGVtLm1heWJlX21ha2VfZGly
ZWN0b3J5KGh0bWxfZGlyZWN0b3J5KQogICAgIHJldHVybiBodG1sX2RpcmVjdG9yeQogCiAKLWRl
ZiBnZXRfcmVzdWx0X2ZpbGVfZnVsbHBhdGgoaHRtbF9kaXJlY3RvcnksIGJhc2VsaW5lX2ZpbGVu
YW1lLCBwbGF0Zm9ybSwKK2RlZiBnZXRfcmVzdWx0X2ZpbGVfZnVsbHBhdGgoZmlsZXN5c3RlbSwg
aHRtbF9kaXJlY3RvcnksIGJhc2VsaW5lX2ZpbGVuYW1lLCBwbGF0Zm9ybSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0X3R5cGUpOgogICAgICIiIkdldCBmdWxsIHBhdGggb2Yg
dGhlIGJhc2VsaW5lIHJlc3VsdCBmaWxlLgogCiAgICAgQXJnczoKKyAgICAgIGZpbGVzeXN0ZW06
IHdyYXBwZXIgb2JqZWN0CiAgICAgICBodG1sX2RpcmVjdG9yeTogZGlyZWN0b3J5IHRoYXQgc3Rv
cmVzIHRoZSBodG1sIHJlbGF0ZWQgZmlsZXMuCiAgICAgICBiYXNlbGluZV9maWxlbmFtZTogbmFt
ZSBvZiB0aGUgYmFzZWxpbmUgZmlsZS4KICAgICAgIHBsYXRmb3JtOiB3aW4sIGxpbnV4IG9yIG1h
YwpAQCAtMTQ0LDkgKzEzMCw5IEBAIGRlZiBnZXRfcmVzdWx0X2ZpbGVfZnVsbHBhdGgoaHRtbF9k
aXJlY3RvcnksIGJhc2VsaW5lX2ZpbGVuYW1lLCBwbGF0Zm9ybSwKICAgICAgIEZ1bGwgcGF0aCBv
ZiB0aGUgYmFzZWxpbmUgZmlsZSBmb3IgcmViYXNlbGluaW5nIHJlc3VsdCBjb21wYXJpc29uLgog
ICAgICIiIgogCi0gICAgYmFzZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChiYXNlbGluZV9maWxl
bmFtZSkKKyAgICBiYXNlLCBleHQgPSBmaWxlc3lzdGVtLnNwbGl0ZXh0KGJhc2VsaW5lX2ZpbGVu
YW1lKQogICAgIHJlc3VsdF9maWxlbmFtZSA9ICclcy0lcy0lcyVzJyAlIChiYXNlLCBwbGF0Zm9y
bSwgcmVzdWx0X3R5cGUsIGV4dCkKLSAgICBmdWxscGF0aCA9IG9zLnBhdGguam9pbihodG1sX2Rp
cmVjdG9yeSwgcmVzdWx0X2ZpbGVuYW1lKQorICAgIGZ1bGxwYXRoID0gZmlsZXN5c3RlbS5qb2lu
KGh0bWxfZGlyZWN0b3J5LCByZXN1bHRfZmlsZW5hbWUpCiAgICAgX2xvZy5kZWJ1ZygnICBSZXN1
bHQgZmlsZSBmdWxsIHBhdGg6ICIlcyIuJywgZnVsbHBhdGgpCiAgICAgcmV0dXJuIGZ1bGxwYXRo
CiAKQEAgLTE2OCw2ICsxNTQsNyBAQCBjbGFzcyBSZWJhc2VsaW5lcihvYmplY3QpOgogICAgICAg
ICBzZWxmLl9wbGF0Zm9ybSA9IHBsYXRmb3JtCiAgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRp
b25zCiAgICAgICAgIHNlbGYuX3BvcnQgPSBydW5uaW5nX3BvcnQKKyAgICAgICAgc2VsZi5fZmls
ZXN5c3RlbSA9IHJ1bm5pbmdfcG9ydC5fZmlsZXN5c3RlbQogICAgICAgICBzZWxmLl90YXJnZXRf
cG9ydCA9IHRhcmdldF9wb3J0CiAgICAgICAgIHNlbGYuX3JlYmFzZWxpbmVfcG9ydCA9IHBvcnQu
Z2V0KAogICAgICAgICAgICAgc2VsZi5fdGFyZ2V0X3BvcnQudGVzdF9wbGF0Zm9ybV9uYW1lX3Rv
X25hbWUocGxhdGZvcm0pLCBvcHRpb25zKQpAQCAtMzcwLDcgKzM1Nyw3IEBAIGNsYXNzIFJlYmFz
ZWxpbmVyKG9iamVjdCk6CiAKICAgICAgICAgICAgIGZvdW5kID0gRmFsc2UKICAgICAgICAgICAg
IHNjbV9lcnJvciA9IEZhbHNlCi0gICAgICAgICAgICB0ZXN0X2Jhc2VuYW1lID0gb3MucGF0aC5z
cGxpdGV4dCh0ZXN0KVswXQorICAgICAgICAgICAgdGVzdF9iYXNlbmFtZSA9IHNlbGYuX2ZpbGVz
eXN0ZW0uc3BsaXRleHQodGVzdClbMF0KICAgICAgICAgICAgIGZvciBzdWZmaXggaW4gQkFTRUxJ
TkVfU1VGRklYRVM6CiAgICAgICAgICAgICAgICAgYXJjaGl2ZV90ZXN0X25hbWUgPSAoJ2xheW91
dC10ZXN0LXJlc3VsdHMvJXMtYWN0dWFsJXMnICUKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHRlc3RfYmFzZW5hbWUsIHN1ZmZpeCkpCkBAIC0zODUsMTUgKzM3MiwxNCBA
QCBjbGFzcyBSZWJhc2VsaW5lcihvYmplY3QpOgogCiAgICAgICAgICAgICAgICAgIyBFeHRyYWN0
IG5ldyBiYXNlbGluZSBmcm9tIGFyY2hpdmUgYW5kIHNhdmUgaXQgdG8gYSB0ZW1wIGZpbGUuCiAg
ICAgICAgICAgICAgICAgZGF0YSA9IHppcF9maWxlLnJlYWQoYXJjaGl2ZV90ZXN0X25hbWUpCi0g
ICAgICAgICAgICAgICAgdGVtcF9mZCwgdGVtcF9uYW1lID0gdGVtcGZpbGUubWtzdGVtcChzdWZm
aXgpCi0gICAgICAgICAgICAgICAgZiA9IG9zLmZkb3Blbih0ZW1wX2ZkLCAnd2InKQotICAgICAg
ICAgICAgICAgIGYud3JpdGUoZGF0YSkKLSAgICAgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAg
ICAgICAgICAgICB0ZW1wZmlsZSwgdGVtcF9uYW1lID0gc2VsZi5fZmlsZXN5c3RlbS5vcGVuX2Jp
bmFyeV90ZW1wZmlsZShzdWZmaXgpCisgICAgICAgICAgICAgICAgdGVtcGZpbGUud3JpdGUoZGF0
YSkKKyAgICAgICAgICAgICAgICB0ZW1wZmlsZS5jbG9zZSgpCiAKICAgICAgICAgICAgICAgICBl
eHBlY3RlZF9maWxlbmFtZSA9ICclcy1leHBlY3RlZCVzJyAlICh0ZXN0X2Jhc2VuYW1lLCBzdWZm
aXgpCi0gICAgICAgICAgICAgICAgZXhwZWN0ZWRfZnVsbHBhdGggPSBvcy5wYXRoLmpvaW4oCisg
ICAgICAgICAgICAgICAgZXhwZWN0ZWRfZnVsbHBhdGggPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4o
CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlYmFzZWxpbmVfcG9ydC5iYXNlbGluZV9wYXRo
KCksIGV4cGVjdGVkX2ZpbGVuYW1lKQotICAgICAgICAgICAgICAgIGV4cGVjdGVkX2Z1bGxwYXRo
ID0gb3MucGF0aC5ub3JtcGF0aChleHBlY3RlZF9mdWxscGF0aCkKKyAgICAgICAgICAgICAgICBl
eHBlY3RlZF9mdWxscGF0aCA9IHNlbGYuX2ZpbGVzeXN0ZW0ubm9ybXBhdGgoZXhwZWN0ZWRfZnVs
bHBhdGgpCiAgICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygnICBFeHBlY3RlZCBmaWxlIGZ1bGwg
cGF0aDogIiVzIicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9mdWxscGF0
aCkKIApAQCAtNDA3LDE2ICszOTMsMTMgQEAgY2xhc3MgUmViYXNlbGluZXIob2JqZWN0KToKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9wbGF0Zm9ybSk6Ci0gICAgICAgICAgICAgICAgICAg
IG9zLnJlbW92ZSh0ZW1wX25hbWUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0
ZW0ucmVtb3ZlKHRlbXBfbmFtZSkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGVsZXRlX2Jh
c2VsaW5lKGV4cGVjdGVkX2Z1bGxwYXRoKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQog
Ci0gICAgICAgICAgICAgICAgIyBDcmVhdGUgdGhlIG5ldyBiYXNlbGluZSBkaXJlY3RvcnkgaWYg
aXQgZG9lc24ndCBhbHJlYWR5Ci0gICAgICAgICAgICAgICAgIyBleGlzdC4KLSAgICAgICAgICAg
ICAgICBzZWxmLl9wb3J0Lm1heWJlX21ha2VfZGlyZWN0b3J5KAotICAgICAgICAgICAgICAgICAg
ICBvcy5wYXRoLmRpcm5hbWUoZXhwZWN0ZWRfZnVsbHBhdGgpKQorICAgICAgICAgICAgICAgIHNl
bGYuX2ZpbGVzeXN0ZW0ubWF5YmVfbWFrZV9kaXJlY3Rvcnkoc2VsZi5fZmlsZXN5c3RlbS5kaXJu
YW1lKGV4cGVjdGVkX2Z1bGxwYXRoKSkKIAotICAgICAgICAgICAgICAgIHNodXRpbC5tb3ZlKHRl
bXBfbmFtZSwgZXhwZWN0ZWRfZnVsbHBhdGgpCisgICAgICAgICAgICAgICAgc2VsZi5fZmlsZXN5
c3RlbS5tb3ZlKHRlbXBfbmFtZSwgZXhwZWN0ZWRfZnVsbHBhdGgpCiAKICAgICAgICAgICAgICAg
ICBpZiAwICE9IHNlbGYuX3NjbS5hZGQoZXhwZWN0ZWRfZnVsbHBhdGgsIHJldHVybl9leGl0X2Nv
ZGU9VHJ1ZSk6CiAgICAgICAgICAgICAgICAgICAgICMgRklYTUU6IHByaW50IGRldGFpbGVkIGRp
YWdub3NlIG1lc3NhZ2VzCkBAIC00MzYsNyArNDE5LDcgQEAgY2xhc3MgUmViYXNlbGluZXIob2Jq
ZWN0KToKICAgICAgICAgICAgIHRlc3Rfbm8gKz0gMQogCiAgICAgICAgIHppcF9maWxlLmNsb3Nl
KCkKLSAgICAgICAgb3MucmVtb3ZlKGFyY2hpdmVfZmlsZSkKKyAgICAgICAgc2VsZi5fZmlsZXN5
c3RlbS5yZW1vdmUoYXJjaGl2ZV9maWxlKQogCiAgICAgICAgIHJldHVybiBzZWxmLl9yZWJhc2Vs
aW5lZF90ZXN0cwogCkBAIC00NTgsMjEgKzQ0MSwxNyBAQCBjbGFzcyBSZWJhc2VsaW5lcihvYmpl
Y3QpOgogICAgICAgICAgIFRydWUgaWYgdGhlIGJhc2VsaW5lIGlzIHVubmVjZXNzYXJ5LgogICAg
ICAgICAgIEZhbHNlIG90aGVyd2lzZS4KICAgICAgICAgIiIiCi0gICAgICAgIHRlc3RfZmlsZXBh
dGggPSBvcy5wYXRoLmpvaW4oc2VsZi5fdGFyZ2V0X3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpLAor
ICAgICAgICB0ZXN0X2ZpbGVwYXRoID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3Rhcmdl
dF9wb3J0LmxheW91dF90ZXN0c19kaXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0KQogICAgICAgICBhbGxfYmFzZWxpbmVzID0gc2VsZi5fcmViYXNlbGluZV9w
b3J0LmV4cGVjdGVkX2Jhc2VsaW5lcygKICAgICAgICAgICAgIHRlc3RfZmlsZXBhdGgsIHN1ZmZp
eCwgVHJ1ZSkKICAgICAgICAgZm9yIChmYWxsYmFja19kaXIsIGZhbGxiYWNrX2ZpbGUpIGluIGFs
bF9iYXNlbGluZXM6CiAgICAgICAgICAgICBpZiBmYWxsYmFja19kaXIgYW5kIGZhbGxiYWNrX2Zp
bGU6Ci0gICAgICAgICAgICAgICAgZmFsbGJhY2tfZnVsbHBhdGggPSBvcy5wYXRoLm5vcm1wYXRo
KAotICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oZmFsbGJhY2tfZGlyLCBmYWxsYmFj
a19maWxlKSkKKyAgICAgICAgICAgICAgICBmYWxsYmFja19mdWxscGF0aCA9IHNlbGYuX2ZpbGVz
eXN0ZW0ubm9ybXBhdGgoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0uam9p
bihmYWxsYmFja19kaXIsIGZhbGxiYWNrX2ZpbGUpKQogICAgICAgICAgICAgICAgIGlmIGZhbGxi
YWNrX2Z1bGxwYXRoLmxvd2VyKCkgIT0gYmFzZWxpbmVfcGF0aC5sb3dlcigpOgotICAgICAgICAg
ICAgICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKG5ld19iYXNlbGluZSwgInIiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUpIGFzIGZpbGVfaGFuZGxlMToKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG5ld19vdXRwdXQgPSBmaWxlX2hhbmRsZTEucmVhZCgpCi0gICAg
ICAgICAgICAgICAgICAgIHdpdGggY29kZWNzLm9wZW4oZmFsbGJhY2tfZnVsbHBhdGgsICJyIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lKSBhcyBmaWxlX2hhbmRs
ZTI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFja19vdXRwdXQgPSBmaWxlX2hhbmRs
ZTIucmVhZCgpCisgICAgICAgICAgICAgICAgICAgIG5ld19vdXRwdXQgPSBzZWxmLl9maWxlc3lz
dGVtLnJlYWRfYmluYXJ5X2ZpbGUobmV3X2Jhc2VsaW5lKQorICAgICAgICAgICAgICAgICAgICBm
YWxsYmFja19vdXRwdXQgPSBzZWxmLl9maWxlc3lzdGVtLnJlYWRfYmluYXJ5X2ZpbGUoZmFsbGJh
Y2tfZnVsbHBhdGgpCiAgICAgICAgICAgICAgICAgICAgIGlzX2ltYWdlID0gYmFzZWxpbmVfcGF0
aC5sb3dlcigpLmVuZHN3aXRoKCcucG5nJykKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNl
bGYuX2RpZmZfYmFzZWxpbmVzKG5ld19vdXRwdXQsIGZhbGxiYWNrX291dHB1dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2ltYWdlKToKQEAgLTUw
Nyw3ICs0ODYsNyBAQCBjbGFzcyBSZWJhc2VsaW5lcihvYmplY3QpOgogICAgICAgICAgIGZpbGVu
YW1lOiBmdWxsIHBhdGggb2YgdGhlIGZpbGUgdG8gZGVsZXRlLgogICAgICAgICAiIiIKIAotICAg
ICAgICBpZiBub3QgZmlsZW5hbWUgb3Igbm90IG9zLnBhdGguaXNmaWxlKGZpbGVuYW1lKToKKyAg
ICAgICAgaWYgbm90IGZpbGVuYW1lIG9yIG5vdCBzZWxmLl9maWxlc3lzdGVtLmlzZmlsZShmaWxl
bmFtZSk6CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5fc2NtLmRlbGV0ZShmaWxl
bmFtZSkKIApAQCAtNTMwLDE0ICs1MDksMTIgQEAgY2xhc3MgUmViYXNlbGluZXIob2JqZWN0KToK
ICAgICAgICAgICAgICAgICBkYXRlX3N1ZmZpeCA9IHRpbWUuc3RyZnRpbWUoJyVZJW0lZCVIJU0l
UycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUubG9j
YWx0aW1lKHRpbWUudGltZSgpKSkKICAgICAgICAgICAgICAgICBiYWNrdXBfZmlsZSA9ICgnJXMu
b3JpZy4lcycgJSAocGF0aCwgZGF0ZV9zdWZmaXgpKQotICAgICAgICAgICAgICAgIGlmIG9zLnBh
dGguZXhpc3RzKGJhY2t1cF9maWxlKToKLSAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKGJh
Y2t1cF9maWxlKQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKGJh
Y2t1cF9maWxlKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS5yZW1vdmUo
YmFja3VwX2ZpbGUpCiAgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCdTYXZpbmcgb3JpZ2luYWwg
ZmlsZSB0byAiJXMiJywgYmFja3VwX2ZpbGUpCi0gICAgICAgICAgICAgICAgb3MucmVuYW1lKHBh
dGgsIGJhY2t1cF9maWxlKQotICAgICAgICAgICAgIyBGSVhNRTogV2hhdCBlbmNvZGluZyBhcmUg
dGhlc2UgZmlsZXM/Ci0gICAgICAgICAgICAjIE9yIGlzIG5ld19leHBlY3RhdGlvbnMgYWx3YXlz
IGEgYnl0ZSBhcnJheT8KLSAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAidyIpIGFzIGZpbGU6
Ci0gICAgICAgICAgICAgICAgZmlsZS53cml0ZShuZXdfZXhwZWN0YXRpb25zKQorICAgICAgICAg
ICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ubW92ZShwYXRoLCBiYWNrdXBfZmlsZSkKKworICAgICAg
ICAgICAgc2VsZi5fZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUocGF0aCwgbmV3X2V4cGVjdGF0
aW9ucykKICAgICAgICAgICAgICMgc2VsZi5fc2NtLmFkZChwYXRoKQogICAgICAgICBlbHNlOgog
ICAgICAgICAgICAgX2xvZy5pbmZvKCdObyB0ZXN0IHdhcyByZWJhc2VsaW5lZCBzbyBub3RoaW5n
IHRvIHJlbW92ZS4nKQpAQCAtNTUxLDE1ICs1MjgsMTUgQEAgY2xhc3MgUmViYXNlbGluZXIob2Jq
ZWN0KToKICAgICAgICAgICBiYXNlbGluZV9mdWxscGF0aDogZnVsbCBwYXRoIG9mIHRoZSBleHBl
Y3RlZCBiYXNlbGluZSBmaWxlLgogICAgICAgICAiIiIKIAotICAgICAgICBpZiBub3QgYmFzZWxp
bmVfZnVsbHBhdGggb3Igbm90IG9zLnBhdGguZXhpc3RzKGJhc2VsaW5lX2Z1bGxwYXRoKToKKyAg
ICAgICAgaWYgbm90IGJhc2VsaW5lX2Z1bGxwYXRoIG9yIG5vdCBzZWxmLl9maWxlc3lzdGVtLmV4
aXN0cyhiYXNlbGluZV9mdWxscGF0aCk6CiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICAj
IENvcHkgdGhlIG5ldyBiYXNlbGluZSB0byBodG1sIGRpcmVjdG9yeSBmb3IgcmVzdWx0IGNvbXBh
cmlzb24uCi0gICAgICAgIGJhc2VsaW5lX2ZpbGVuYW1lID0gb3MucGF0aC5iYXNlbmFtZShiYXNl
bGluZV9mdWxscGF0aCkKLSAgICAgICAgbmV3X2ZpbGUgPSBnZXRfcmVzdWx0X2ZpbGVfZnVsbHBh
dGgoc2VsZi5fb3B0aW9ucy5odG1sX2RpcmVjdG9yeSwKKyAgICAgICAgYmFzZWxpbmVfZmlsZW5h
bWUgPSBzZWxmLl9maWxlc3lzdGVtLmJhc2VuYW1lKGJhc2VsaW5lX2Z1bGxwYXRoKQorICAgICAg
ICBuZXdfZmlsZSA9IGdldF9yZXN1bHRfZmlsZV9mdWxscGF0aChzZWxmLl9maWxlc3lzdGVtLCBz
ZWxmLl9vcHRpb25zLmh0bWxfZGlyZWN0b3J5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBiYXNlbGluZV9maWxlbmFtZSwgc2VsZi5fcGxhdGZvcm0sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZXcnKQotICAgICAgICBz
aHV0aWwuY29weWZpbGUoYmFzZWxpbmVfZnVsbHBhdGgsIG5ld19maWxlKQorICAgICAgICBzZWxm
Ll9maWxlc3lzdGVtLmNvcHlmaWxlKGJhc2VsaW5lX2Z1bGxwYXRoLCBuZXdfZmlsZSkKICAgICAg
ICAgX2xvZy5pbmZvKCcgIEh0bWw6IGNvcGllZCBuZXcgYmFzZWxpbmUgZmlsZSBmcm9tICIlcyIg
dG8gIiVzIi4nLAogICAgICAgICAgICAgICAgICAgYmFzZWxpbmVfZnVsbHBhdGgsIG5ld19maWxl
KQogCkBAIC01NzQsNyArNTUxLDcgQEAgY2xhc3MgUmViYXNlbGluZXIob2JqZWN0KToKICAgICAg
ICAgICAgICdOTyBTVUNIIEZJTEUgT1IgRElSRUNUT1JZJykpOgogICAgICAgICAgICAgX2xvZy5p
bmZvKCcgIE5vIGJhc2UgZmlsZTogIiVzIicsIGJhc2VsaW5lX2Z1bGxwYXRoKQogICAgICAgICAg
ICAgcmV0dXJuCi0gICAgICAgIGJhc2VfZmlsZSA9IGdldF9yZXN1bHRfZmlsZV9mdWxscGF0aChz
ZWxmLl9vcHRpb25zLmh0bWxfZGlyZWN0b3J5LAorICAgICAgICBiYXNlX2ZpbGUgPSBnZXRfcmVz
dWx0X2ZpbGVfZnVsbHBhdGgoc2VsZi5fZmlsZXN5c3RlbSwgc2VsZi5fb3B0aW9ucy5odG1sX2Rp
cmVjdG9yeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJh
c2VsaW5lX2ZpbGVuYW1lLCBzZWxmLl9wbGF0Zm9ybSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdvbGQnKQogICAgICAgICAjIFdlIHNob3VsZCBiZSB1c2lu
ZyBhbiBleHBsaWNpdCBlbmNvZGluZyBoZXJlLgpAQCAtNTg3LDcgKzU2NCw3IEBAIGNsYXNzIFJl
YmFzZWxpbmVyKG9iamVjdCk6CiAgICAgICAgIGlmIGJhc2VsaW5lX2ZpbGVuYW1lLnVwcGVyKCku
ZW5kc3dpdGgoJy5UWFQnKToKICAgICAgICAgICAgIG91dHB1dCA9IHNlbGYuX3NjbS5kaWZmX2Zv
cl9maWxlKGJhc2VsaW5lX2Z1bGxwYXRoLCBsb2c9X2xvZykKICAgICAgICAgICAgIGlmIG91dHB1
dDoKLSAgICAgICAgICAgICAgICBkaWZmX2ZpbGUgPSBnZXRfcmVzdWx0X2ZpbGVfZnVsbHBhdGgo
CisgICAgICAgICAgICAgICAgZGlmZl9maWxlID0gZ2V0X3Jlc3VsdF9maWxlX2Z1bGxwYXRoKHNl
bGYuX2ZpbGVzeXN0ZW0sCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuaHRtbF9k
aXJlY3RvcnksIGJhc2VsaW5lX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICBzZWxmLl9w
bGF0Zm9ybSwgJ2RpZmYnKQogICAgICAgICAgICAgICAgIHdpdGggb3BlbihkaWZmX2ZpbGUsICd3
YicpIGFzIGZpbGU6CkBAIC02NDIsMTkgKzYxOSwxOSBAQCBjbGFzcyBIdG1sR2VuZXJhdG9yKG9i
amVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAnPGltZyBzdHlsZT0id2lkdGg6IDIwMCIg
c3JjPSIlKHVyaSlzIiAvPjwvYT48L3RkPicpCiAgICAgSFRNTF9UUiA9ICc8dHI+JXM8L3RyPicK
IAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YXJnZXRfcG9ydCwgb3B0aW9ucywgcGxhdGZvcm1z
LCByZWJhc2VsaW5pbmdfdGVzdHMsCi0gICAgICAgICAgICAgICAgIGV4ZWN1dGl2ZSk6CisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIHRhcmdldF9wb3J0LCBvcHRpb25zLCBwbGF0Zm9ybXMs
IHJlYmFzZWxpbmluZ190ZXN0cyk6CiAgICAgICAgIHNlbGYuX2h0bWxfZGlyZWN0b3J5ID0gb3B0
aW9ucy5odG1sX2RpcmVjdG9yeQorICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAogICAgICAgICBz
ZWxmLl90YXJnZXRfcG9ydCA9IHRhcmdldF9wb3J0CiAgICAgICAgIHNlbGYuX3BsYXRmb3JtcyA9
IHBsYXRmb3JtcwogICAgICAgICBzZWxmLl9yZWJhc2VsaW5pbmdfdGVzdHMgPSByZWJhc2VsaW5p
bmdfdGVzdHMKLSAgICAgICAgc2VsZi5fZXhlY3V0aXZlID0gZXhlY3V0aXZlCi0gICAgICAgIHNl
bGYuX2h0bWxfZmlsZSA9IG9zLnBhdGguam9pbihvcHRpb25zLmh0bWxfZGlyZWN0b3J5LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlYmFzZWxpbmUuaHRtbCcpCisg
ICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBwb3J0Ll9maWxlc3lzdGVtCisgICAgICAgIHNlbGYu
X2h0bWxfZmlsZSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihvcHRpb25zLmh0bWxfZGlyZWN0b3J5
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlYmFz
ZWxpbmUuaHRtbCcpCiAKICAgICBkZWYgYWJzcGF0aF90b191cmkoc2VsZiwgZmlsZW5hbWUpOgog
ICAgICAgICAiIiJDb252ZXJ0cyBhbiBhYnNvbHV0ZSBwYXRoIHRvIGEgZmlsZTogVVJJLiIiIgot
ICAgICAgICByZXR1cm4gcGF0aC5hYnNwYXRoX3RvX3VyaShmaWxlbmFtZSwgc2VsZi5fZXhlY3V0
aXZlKQorICAgICAgICByZXR1cm4gcGF0aC5hYnNwYXRoX3RvX3VyaShmaWxlbmFtZSwgc2VsZi5f
cG9ydC5fZXhlY3V0aXZlKQogCiAgICAgZGVmIGdlbmVyYXRlX2h0bWwoc2VsZik6CiAgICAgICAg
ICIiIkdlbmVyYXRlIGh0bWwgZmlsZSBmb3IgcmViYXNlbGluaW5nIHJlc3VsdCBjb21wYXJpc29u
LiIiIgpAQCAtNjc3LDkgKzY1NCw3IEBAIGNsYXNzIEh0bWxHZW5lcmF0b3Iob2JqZWN0KToKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9keSc6IGh0bWxfYm9keX0p
CiAgICAgICAgIF9sb2cuZGVidWcoaHRtbCkKIAotICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHNl
bGYuX2h0bWxfZmlsZSwgInciLCAidXRmLTgiKSBhcyBmaWxlOgotICAgICAgICAgICAgZmlsZS53
cml0ZShodG1sKQotCisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKHNl
bGYuX2h0bWxfZmlsZSwgaHRtbCkKICAgICAgICAgX2xvZy5pbmZvKCdCYXNlbGluZSBjb21wYXJp
c29uIGh0bWwgZ2VuZXJhdGVkIGF0ICIlcyInLAogICAgICAgICAgICAgICAgICAgc2VsZi5faHRt
bF9maWxlKQogCkBAIC02ODcsNyArNjYyLDcgQEAgY2xhc3MgSHRtbEdlbmVyYXRvcihvYmplY3Qp
OgogICAgICAgICAiIiJMYXVuY2ggdGhlIHJlYmFzZWxpbmluZyBodG1sIGluIGJyd29zZXIuIiIi
CiAKICAgICAgICAgX2xvZy5pbmZvKCdMYXVuY2hpbmcgaHRtbDogIiVzIicsIHNlbGYuX2h0bWxf
ZmlsZSkKLSAgICAgICAgdXNlci5Vc2VyKCkub3Blbl91cmwoc2VsZi5faHRtbF9maWxlKQorICAg
ICAgICBzZWxmLl9wb3J0Ll91c2VyLm9wZW5fdXJsKHNlbGYuX2h0bWxfZmlsZSkKICAgICAgICAg
X2xvZy5pbmZvKCdIdG1sIGxhdW5jaGVkLicpCiAKICAgICBkZWYgX2dlbmVyYXRlX2Jhc2VsaW5l
X2xpbmtzKHNlbGYsIHRlc3RfYmFzZW5hbWUsIHN1ZmZpeCwgcGxhdGZvcm0pOgpAQCAtNzA1LDE0
ICs2ODAsMTQgQEAgY2xhc3MgSHRtbEdlbmVyYXRvcihvYmplY3QpOgogICAgICAgICBiYXNlbGlu
ZV9maWxlbmFtZSA9ICclcy1leHBlY3RlZCVzJyAlICh0ZXN0X2Jhc2VuYW1lLCBzdWZmaXgpCiAg
ICAgICAgIF9sb2cuZGVidWcoJyAgICBiYXNlbGluZSBmaWxlbmFtZTogIiVzIicsIGJhc2VsaW5l
X2ZpbGVuYW1lKQogCi0gICAgICAgIG5ld19maWxlID0gZ2V0X3Jlc3VsdF9maWxlX2Z1bGxwYXRo
KHNlbGYuX2h0bWxfZGlyZWN0b3J5LAorICAgICAgICBuZXdfZmlsZSA9IGdldF9yZXN1bHRfZmls
ZV9mdWxscGF0aChzZWxmLl9maWxlc3lzdGVtLCBzZWxmLl9odG1sX2RpcmVjdG9yeSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVfZmlsZW5hbWUs
IHBsYXRmb3JtLCAnbmV3JykKICAgICAgICAgX2xvZy5pbmZvKCcgICAgTmV3IGJhc2VsaW5lIGZp
bGU6ICIlcyInLCBuZXdfZmlsZSkKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG5ld19m
aWxlKToKKyAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKG5ld19maWxlKToK
ICAgICAgICAgICAgIF9sb2cuaW5mbygnICAgIE5vIG5ldyBiYXNlbGluZSBmaWxlOiAiJXMiJywg
bmV3X2ZpbGUpCiAgICAgICAgICAgICByZXR1cm4gJycKIAotICAgICAgICBvbGRfZmlsZSA9IGdl
dF9yZXN1bHRfZmlsZV9mdWxscGF0aChzZWxmLl9odG1sX2RpcmVjdG9yeSwKKyAgICAgICAgb2xk
X2ZpbGUgPSBnZXRfcmVzdWx0X2ZpbGVfZnVsbHBhdGgoc2VsZi5fZmlsZXN5c3RlbSwgc2VsZi5f
aHRtbF9kaXJlY3RvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJhc2VsaW5lX2ZpbGVuYW1lLCBwbGF0Zm9ybSwgJ29sZCcpCiAgICAgICAgIF9sb2cuaW5m
bygnICAgIE9sZCBiYXNlbGluZSBmaWxlOiAiJXMiJywgb2xkX2ZpbGUpCiAgICAgICAgIGlmIHN1
ZmZpeCA9PSAnLnBuZyc6CkBAIC03MjEsNyArNjk2LDcgQEAgY2xhc3MgSHRtbEdlbmVyYXRvcihv
YmplY3QpOgogICAgICAgICAgICAgaHRtbF90ZF9saW5rID0gc2VsZi5IVE1MX1REX0xJTksKIAog
ICAgICAgICBsaW5rcyA9ICcnCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9sZF9maWxlKToK
KyAgICAgICAgaWYgc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMob2xkX2ZpbGUpOgogICAgICAgICAg
ICAgbGlua3MgKz0gaHRtbF90ZF9saW5rICUgewogICAgICAgICAgICAgICAgICd1cmknOiBzZWxm
LmFic3BhdGhfdG9fdXJpKG9sZF9maWxlKSwKICAgICAgICAgICAgICAgICAnbmFtZSc6IGJhc2Vs
aW5lX2ZpbGVuYW1lfQpAQCAtNzMyLDExICs3MDcsMTEgQEAgY2xhc3MgSHRtbEdlbmVyYXRvcihv
YmplY3QpOgogICAgICAgICBsaW5rcyArPSBodG1sX3RkX2xpbmsgJSB7J3VyaSc6IHNlbGYuYWJz
cGF0aF90b191cmkobmV3X2ZpbGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J25hbWUnOiBiYXNlbGluZV9maWxlbmFtZX0KIAotICAgICAgICBkaWZmX2ZpbGUgPSBnZXRfcmVz
dWx0X2ZpbGVfZnVsbHBhdGgoc2VsZi5faHRtbF9kaXJlY3RvcnksCisgICAgICAgIGRpZmZfZmls
ZSA9IGdldF9yZXN1bHRfZmlsZV9mdWxscGF0aChzZWxmLl9maWxlc3lzdGVtLCBzZWxmLl9odG1s
X2RpcmVjdG9yeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJhc2VsaW5lX2ZpbGVuYW1lLCBwbGF0Zm9ybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdkaWZmJykKICAgICAgICAgX2xvZy5pbmZvKCcgICAgQmFzZWxp
bmUgZGlmZiBmaWxlOiAiJXMiJywgZGlmZl9maWxlKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0
cyhkaWZmX2ZpbGUpOgorICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhkaWZmX2Zp
bGUpOgogICAgICAgICAgICAgbGlua3MgKz0gaHRtbF90ZF9saW5rICUgeyd1cmknOiBzZWxmLmFi
c3BhdGhfdG9fdXJpKGRpZmZfZmlsZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ25hbWUnOiAnRGlmZid9CiAgICAgICAgIGVsc2U6CkBAIC03NTUsNyArNzMwLDcgQEAg
Y2xhc3MgSHRtbEdlbmVyYXRvcihvYmplY3QpOgogICAgICAgICAgIGh0bWwgdGhhdCBjb21wYXJl
cyBiYXNlbGluZSByZXN1bHRzIGZvciB0aGUgdGVzdC4KICAgICAgICAgIiIiCiAKLSAgICAgICAg
dGVzdF9iYXNlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUob3MucGF0aC5zcGxpdGV4dCh0ZXN0KVsw
XSkKKyAgICAgICAgdGVzdF9iYXNlbmFtZSA9IHNlbGYuX2ZpbGVzeXN0ZW0uYmFzZW5hbWUoc2Vs
Zi5fZmlsZXN5c3RlbS5zcGxpdGV4dCh0ZXN0KVswXSkKICAgICAgICAgX2xvZy5pbmZvKCcgIGJh
c2VuYW1lOiAiJXMiJywgdGVzdF9iYXNlbmFtZSkKICAgICAgICAgcm93cyA9IFtdCiAgICAgICAg
IGZvciBzdWZmaXggaW4gQkFTRUxJTkVfU1VGRklYRVM6CkBAIC03NzYsOCArNzUxLDcgQEAgY2xh
c3MgSHRtbEdlbmVyYXRvcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICByb3dzLmFwcGVu
ZChzZWxmLkhUTUxfVFIgJSByb3cpCiAKICAgICAgICAgaWYgcm93czoKLSAgICAgICAgICAgIHRl
c3RfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLl90YXJnZXRfcG9ydC5sYXlvdXRfdGVzdHNfZGly
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdCkKKyAgICAgICAg
ICAgIHRlc3RfcGF0aCA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl90YXJnZXRfcG9ydC5s
YXlvdXRfdGVzdHNfZGlyKCksIHRlc3QpCiAgICAgICAgICAgICBodG1sID0gc2VsZi5IVE1MX1RS
X1RFU1QgJSAoc2VsZi5hYnNwYXRoX3RvX3VyaSh0ZXN0X3BhdGgpLCB0ZXN0KQogICAgICAgICAg
ICAgaHRtbCArPSBzZWxmLkhUTUxfVEVTVF9ERVRBSUwgJSAnICcuam9pbihyb3dzKQogCkBAIC04
ODMsNyArODU3LDcgQEAgZGVmIHBhcnNlX29wdGlvbnMoYXJncyk6CiAgICAgcmV0dXJuIChvcHRp
b25zLCB0YXJnZXRfb3B0aW9ucykKIAogCi1kZWYgbWFpbihleGVjdXRpdmU9RXhlY3V0aXZlKCkp
OgorZGVmIG1haW4oKToKICAgICAiIiJNYWluIGZ1bmN0aW9uIHRvIHByb2R1Y2UgbmV3IGJhc2Vs
aW5lcy4iIiIKIAogICAgIChvcHRpb25zLCB0YXJnZXRfb3B0aW9ucykgPSBwYXJzZV9vcHRpb25z
KHN5cy5hcmd2WzE6XSkKQEAgLTkyOSw3ICs5MDMsNyBAQCBkZWYgbWFpbihleGVjdXRpdmU9RXhl
Y3V0aXZlKCkpOgogICAgICAgICBpZiBwbGF0Zm9ybSBpbiBwbGF0Zm9ybXM6CiAgICAgICAgICAg
ICByZWJhc2VsaW5lX3BsYXRmb3Jtcy5hcHBlbmQocGxhdGZvcm0pCiAKLSAgICBvcHRpb25zLmh0
bWxfZGlyZWN0b3J5ID0gc2V0dXBfaHRtbF9kaXJlY3Rvcnkob3B0aW9ucy5odG1sX2RpcmVjdG9y
eSkKKyAgICBvcHRpb25zLmh0bWxfZGlyZWN0b3J5ID0gc2V0dXBfaHRtbF9kaXJlY3RvcnkoaG9z
dF9wb3J0X29iai5fZmlsZXN5c3RlbSwgb3B0aW9ucy5odG1sX2RpcmVjdG9yeSkKIAogICAgIHJl
YmFzZWxpbmluZ190ZXN0cyA9IHNldCgpCiAgICAgYmFja3VwID0gb3B0aW9ucy5iYWNrdXAKQEAg
LTk1MCwxMSArOTI0LDExIEBAIGRlZiBtYWluKGV4ZWN1dGl2ZT1FeGVjdXRpdmUoKSk6CiAKICAg
ICBfbG9nLmluZm8oJycpCiAgICAgbG9nX2Rhc2hlZF9zdHJpbmcoJ1JlYmFzZWxpbmluZyByZXN1
bHQgY29tcGFyaXNvbiBzdGFydGVkJywgTm9uZSkKLSAgICBodG1sX2dlbmVyYXRvciA9IEh0bWxH
ZW5lcmF0b3IodGFyZ2V0X3BvcnRfb2JqLAorICAgIGh0bWxfZ2VuZXJhdG9yID0gSHRtbEdlbmVy
YXRvcihob3N0X3BvcnRfb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
YXJnZXRfcG9ydF9vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlv
bnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYmFzZWxpbmVfcGxhdGZv
cm1zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWJhc2VsaW5pbmdfdGVz
dHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGl2ZT1leGVjdXRp
dmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYmFzZWxpbmluZ190ZXN0
cykKICAgICBodG1sX2dlbmVyYXRvci5nZW5lcmF0ZV9odG1sKCkKICAgICBpZiBub3Qgb3B0aW9u
cy5xdWlldDoKICAgICAgICAgaHRtbF9nZW5lcmF0b3Iuc2hvd19odG1sKCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1f
d2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKaW5kZXgg
N2M1NWI5NGM5Y2M2OGUyMzIyZjZkNTdiMzZiZWVlNjBkMmEyNTcyNS4uM2NjYjExN2RkOGNhZTBj
NGFkNGY0NTQ5NDNhODA4ZDI5NzJmNWVmMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5pdHRl
c3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGlu
ZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKQEAgLTI5LDE1ICsyOSwxNSBAQAog
CiAiIiJVbml0IHRlc3RzIGZvciByZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weS4i
IiIKIAotaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJr
aXRweS50b29sIGltcG9ydCBtb2NrdG9vbAotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1w
b3J0IHBvcnQKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCByZWJhc2VsaW5lX2No
cm9taXVtX3dlYmtpdF90ZXN0cwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2
ZSBpbXBvcnQgRXhlY3V0aXZlLCBTY3JpcHRFcnJvcgogCitpbXBvcnQgcG9ydAoraW1wb3J0IHJl
YmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzCisKIAogY2xhc3MgTW9ja1BvcnQob2JqZWN0
KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgaW1hZ2VfZGlmZl9leGlzdHMpOgpAQCAtMTEzLDQ0
ICsxMTMsNDQgQEAgY2xhc3MgVGVzdFJlYmFzZWxpbmVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICBkZWYgdGVzdF9kaWZmX2Jhc2VsaW5lc190eHQoc2VsZik6CiAgICAgICAgIHJlYmFzZWxpbmVy
ID0gc2VsZi5tYWtlX3JlYmFzZWxpbmVyKCkKICAgICAgICAgb3V0cHV0ID0gcmViYXNlbGluZXIu
X3BvcnQuZXhwZWN0ZWRfdGV4dCgKLSAgICAgICAgICAgIG9zLnBhdGguam9pbihyZWJhc2VsaW5l
ci5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ3Bh
c3Nlcy90ZXh0Lmh0bWwnKSkKKyAgICAgICAgICAgIHJlYmFzZWxpbmVyLl9wb3J0Ll9maWxlc3lz
dGVtLmpvaW4ocmViYXNlbGluZXIuX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFzc2VzL3RleHQuaHRtbCcp
KQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlYmFzZWxpbmVyLl9kaWZmX2Jhc2VsaW5lcyhv
dXRwdXQsIG91dHB1dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaXNfaW1hZ2U9RmFsc2UpKQogCiAgICAgZGVmIHRlc3RfZGlmZl9iYXNlbGlu
ZXNfcG5nKHNlbGYpOgogICAgICAgICByZWJhc2VsaW5lciA9IHNlbGYubWFrZV9yZWJhc2VsaW5l
cigpCiAgICAgICAgIGltYWdlID0gcmViYXNlbGluZXIuX3BvcnQuZXhwZWN0ZWRfaW1hZ2UoCi0g
ICAgICAgICAgICBvcy5wYXRoLmpvaW4ocmViYXNlbGluZXIuX3BvcnQubGF5b3V0X3Rlc3RzX2Rp
cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICdwYXNzZXMvaW1hZ2UuaHRtbCcpKQorICAg
ICAgICAgICAgcmViYXNlbGluZXIuX3BvcnQuX2ZpbGVzeXN0ZW0uam9pbihyZWJhc2VsaW5lci5f
cG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdwYXNzZXMvaW1hZ2UuaHRtbCcpKQogICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKHJlYmFzZWxpbmVyLl9kaWZmX2Jhc2VsaW5lcyhpbWFnZSwgaW1hZ2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2ltYWdlPVRy
dWUpKQogCiAKIGNsYXNzIFRlc3RIdG1sR2VuZXJhdG9yKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICBkZWYgbWFrZV9nZW5lcmF0b3Ioc2VsZiwgdGVzdHMpOgorICAgICAgICBvcHRpb25zID0gbW9j
a3Rvb2wuTW9ja09wdGlvbnMoY29uZmlndXJhdGlvbj1Ob25lLCBodG1sX2RpcmVjdG9yeT0nL3Rt
cCcpCisgICAgICAgIHNlbGYuX3J1bm5pbmdfcG9ydCA9IHBvcnQuZ2V0KCd0ZXN0Jywgb3B0aW9u
cykKKwogICAgICAgICByZXR1cm4gcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMuSHRt
bEdlbmVyYXRvcigKKyAgICAgICAgICAgIHNlbGYuX3J1bm5pbmdfcG9ydCwKICAgICAgICAgICAg
IHRhcmdldF9wb3J0PU5vbmUsCi0gICAgICAgICAgICBvcHRpb25zPW1vY2t0b29sLk1vY2tPcHRp
b25zKGNvbmZpZ3VyYXRpb249Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaHRtbF9kaXJlY3Rvcnk9Jy90bXAnKSwKKyAgICAgICAgICAgIG9wdGlvbnM9b3B0
aW9ucywKICAgICAgICAgICAgIHBsYXRmb3Jtcz1bJ21hYyddLAotICAgICAgICAgICAgcmViYXNl
bGluaW5nX3Rlc3RzPXRlc3RzLAotICAgICAgICAgICAgZXhlY3V0aXZlPUV4ZWN1dGl2ZSgpKQor
ICAgICAgICAgICAgcmViYXNlbGluaW5nX3Rlc3RzPXRlc3RzKQogCiAgICAgZGVmIHRlc3RfZ2Vu
ZXJhdGVfYmFzZWxpbmVfbGlua3Moc2VsZik6CiAgICAgICAgIG9yaWdfcGxhdGZvcm0gPSBzeXMu
cGxhdGZvcm0KLSAgICAgICAgb3JpZ19leGlzdHMgPSBvcy5wYXRoLmV4aXN0cwotCiAgICAgICAg
IHRyeToKKyAgICAgICAgICAgICMgRklYTUU6IFVzZSB0aGUgbW9jayBmaWxlc3lzdGVtIGluc3Rl
YWQgb2YgbW9ua2V5LXBhdGNoaW5nIHN5cy5wbGF0Zm9ybQogICAgICAgICAgICAgc3lzLnBsYXRm
b3JtID0gJ2RhcndpbicKLSAgICAgICAgICAgIG9zLnBhdGguZXhpc3RzID0gbGFtYmRhIHg6IFRy
dWUKICAgICAgICAgICAgIGdlbmVyYXRvciA9IHNlbGYubWFrZV9nZW5lcmF0b3IoWyJmb28udHh0
Il0pCisgICAgICAgICAgICBzZWxmLl9ydW5uaW5nX3BvcnQuX2ZpbGVzeXN0ZW0uZXhpc3RzID0g
bGFtYmRhIHg6IFRydWUKICAgICAgICAgICAgIGxpbmtzID0gZ2VuZXJhdG9yLl9nZW5lcmF0ZV9i
YXNlbGluZV9saW5rcygiZm9vIiwgIi50eHQiLCAibWFjIikKICAgICAgICAgICAgIGV4cGVjdGVk
X2xpbmtzID0gJzx0ZCBhbGlnbj1jZW50ZXI+PGEgaHJlZj0iZmlsZTovLy90bXAvZm9vLWV4cGVj
dGVkLW1hYy1vbGQudHh0Ij5mb28tZXhwZWN0ZWQudHh0PC9hPjwvdGQ+PHRkIGFsaWduPWNlbnRl
cj48YSBocmVmPSJmaWxlOi8vL3RtcC9mb28tZXhwZWN0ZWQtbWFjLW5ldy50eHQiPmZvby1leHBl
Y3RlZC50eHQ8L2E+PC90ZD48dGQgYWxpZ249Y2VudGVyPjxhIGhyZWY9ImZpbGU6Ly8vdG1wL2Zv
by1leHBlY3RlZC1tYWMtZGlmZi50eHQiPkRpZmY8L2E+PC90ZD4nCiAgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxpbmtzLCBleHBlY3RlZF9saW5rcykKICAgICAgICAgZmluYWxseToKICAg
ICAgICAgICAgIHN5cy5wbGF0Zm9ybSA9IG9yaWdfcGxhdGZvcm0KLSAgICAgICAgICAgIG9zLnBh
dGguZXhpc3RzID0gb3JpZ19leGlzdHMKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79041</attachid>
            <date>2011-01-14 17:51:53 -0800</date>
            <delta_ts>2011-01-14 20:00:24 -0800</delta_ts>
            <desc>update w/ changes in response to Mihai&apos;s comments</desc>
            <filename>bug-52482-20110114175151.patch</filename>
            <type>text/plain</type>
            <size>34149</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyYzUz
NDUxNzE5OGY1NTk2ZjM4OWZjNDQyM2VhOWE0NWNhMjAyOWQ3Li40OTM2OTgwOGM0OWFkMjZhNWRj
OTJiZmNkMzJmMDYyZjE3ZGQ2ZTZiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDEtMTQgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXBkYXRlIHJlYmFzZWxpbmUtY2hyb21pdW0td2Via2l0LXRlc3Rz
IHRvIHVzZSBmaWxlc3lzdGVtIG9iamVjdHMKKyAgICAgICAgaW5zdGVhZCBvZiBkaXJlY3QgcmVm
ZXJlbmNlcyB0byBvcy5wYXRoLCBzaHV0aWwsIHRlbXBmaWxlLCBldGMuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBkb2Vzbid0IGNoYW5nZSBhbnl0aGluZywgYnV0IHdpbGwgYWxsb3cgc3Vic2VxdWVu
dAorICAgICAgICBwYXRjaGVzIHRvIGNoYW5nZSB0aGUgdW5pdCB0ZXN0cyB0byBubyBsb25nZXIg
dXNlIHRoZSByZWFsCisgICAgICAgIGZpbGVzeXN0ZW0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBh
ZGRzIGEgYnVuY2ggbW9yZSBtZXRob2RzIHRvIHRoZSBmaWxlc3lzdGVtIG9iamVjdCBhcworICAg
ICAgICB3ZWxsLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01MjQ4MgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2Zp
bGVzeXN0ZW0ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2Zp
bGVzeXN0ZW1fbW9jay5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191
bml0dGVzdC5weToKKwogMjAxMS0wMS0xMyAgQWxlamFuZHJvIEcuIENhc3RybyAgPGFsZXhAaWdh
bGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CmluZGV4
IDg4MzBlYThkYzZjMDUxZGE0YjMyNGVlZmZjYTIwNjE3MDcxMjkwZDEuLmRlMzU2NDMyODgzYTJj
NDBiNmJjMjg3NTUzM2E2NzU1MmY4YTE3YWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CkBAIC00NCwxMCArNDQsMjcgQEAgY2xh
c3MgRmlsZVN5c3RlbShvYmplY3QpOgogICAgIFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIGFsbCBw
YXRocyBhcmUgYWxsb3dlZCB0byBiZSBlaXRoZXIgYWJzb2x1dGUKICAgICBvciByZWxhdGl2ZS4i
IiIKIAorICAgIGRlZiBiYXNlbmFtZShzZWxmLCBwYXRoKToKKyAgICAgICAgcmV0dXJuIG9zLnBh
dGguYmFzZW5hbWUocGF0aCkKKworICAgIGRlZiBjb3B5ZmlsZShzZWxmLCBzb3VyY2UsIGRlc3Rp
bmF0aW9uKToKKyAgICAgICAgIiIiQ29waWVzIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBhdCB0
aGUgZ2l2ZW4gcGF0aCB0byB0aGUgZGVzdGluYXRpb24KKyAgICAgICAgcGF0aC4iIiIKKyAgICAg
ICAgc2h1dGlsLmNvcHlmaWxlKHNvdXJjZSwgZGVzdGluYXRpb24pCisKKyAgICBkZWYgZGlybmFt
ZShzZWxmLCBwYXRoKToKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguZGlybmFtZShwYXRoKQorCiAg
ICAgZGVmIGV4aXN0cyhzZWxmLCBwYXRoKToKICAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhl
IHBhdGggZXhpc3RzIGluIHRoZSBmaWxlc3lzdGVtLiIiIgogICAgICAgICByZXR1cm4gb3MucGF0
aC5leGlzdHMocGF0aCkKIAorICAgIGRlZiBmaWxlc191bmRlcihzZWxmLCBwYXRoKToKKyAgICAg
ICAgIiIiUmV0dXJuIHRoZSBsaXN0IG9mIGFsbCBmaWxlcyB1bmRlciB0aGUgZ2l2ZW4gcGF0aC4i
IiIKKyAgICAgICAgcmV0dXJuIFtzZWxmLmpvaW4ocGF0aF90b19maWxlLCBmaWxlbmFtZSkKKyAg
ICAgICAgICAgIGZvciAocGF0aF90b19maWxlLCBfLCBmaWxlbmFtZXMpIGluIG9zLndhbGsocGF0
aCkKKyAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlbmFtZXNdCisKICAgICBkZWYgaXNm
aWxlKHNlbGYsIHBhdGgpOgogICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgcGF0aCByZWZl
cnMgdG8gYSBmaWxlLiIiIgogICAgICAgICByZXR1cm4gb3MucGF0aC5pc2ZpbGUocGF0aCkKQEAg
LTcxLDE0ICs4OCwyMCBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgIHRoZSBk
aXJlY3Rvcnkgd2lsbCBzZWxmLWRlbGV0ZSBhdCB0aGUgZW5kIG9mIHRoZSBibG9jayAoaWYgdGhl
CiAgICAgICAgIGRpcmVjdG9yeSBpcyBlbXB0eTsgbm9uLWVtcHR5IGRpcmVjdG9yaWVzIHJhaXNl
IGVycm9ycykuIFRoZQogICAgICAgICBkaXJlY3RvcnkgY2FuIGJlIHNhZmVseSBkZWxldGVkIGlu
c2lkZSB0aGUgYmxvY2sgYXMgd2VsbCwgaWYgc28KLSAgICAgICAgZGVzaXJlZC4iIiIKKyAgICAg
ICAgZGVzaXJlZC4KKworICAgICAgICBOb3RlIHRoYXQgdGhlIG9iamVjdCByZXR1cm5lZCBpcyBu
b3QgYSBzdHJpbmcgYW5kIGRvZXMgbm90IHN1cHBvcnQgYWxsIG9mIHRoZSBzdHJpbmcKKyAgICAg
ICAgbWV0aG9kcy4gSWYgeW91IG5lZWQgYSBzdHJpbmcsIGNvZXJjZSB0aGUgb2JqZWN0IHRvIGEg
c3RyaW5nIGFuZCBnbyBmcm9tIHRoZXJlLgorICAgICAgICAiIiIKICAgICAgICAgY2xhc3MgVGVt
cG9yYXJ5RGlyZWN0b3J5KG9iamVjdCk6CiAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwg
Kiprd2FyZ3MpOgogICAgICAgICAgICAgICAgIHNlbGYuX2t3YXJncyA9IGt3YXJncwotICAgICAg
ICAgICAgICAgIHNlbGYuX2RpcmVjdG9yeV9wYXRoID0gTm9uZQorICAgICAgICAgICAgICAgIHNl
bGYuX2RpcmVjdG9yeV9wYXRoID0gdGVtcGZpbGUubWtkdGVtcCgqKnNlbGYuX2t3YXJncykKKwor
ICAgICAgICAgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNl
bGYuX2RpcmVjdG9yeV9wYXRoCiAKICAgICAgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0g
ICAgICAgICAgICAgICAgc2VsZi5fZGlyZWN0b3J5X3BhdGggPSB0ZW1wZmlsZS5ta2R0ZW1wKCoq
c2VsZi5fa3dhcmdzKQogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9kaXJlY3RvcnlfcGF0
aAogCiAgICAgICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNlYmFj
ayk6CkBAIC04OCw2ICsxMTEsOCBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAg
ICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc2VsZi5fZGlyZWN0b3J5X3BhdGgpOgogICAgICAg
ICAgICAgICAgICAgICBvcy5ybWRpcihzZWxmLl9kaXJlY3RvcnlfcGF0aCkKIAorCisKICAgICAg
ICAgcmV0dXJuIFRlbXBvcmFyeURpcmVjdG9yeSgqKmt3YXJncykKIAogICAgIGRlZiBtYXliZV9t
YWtlX2RpcmVjdG9yeShzZWxmLCAqcGF0aCk6CkBAIC05OCw2ICsxMjMsMzAgQEAgY2xhc3MgRmls
ZVN5c3RlbShvYmplY3QpOgogICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FRVhJU1Q6
CiAgICAgICAgICAgICAgICAgcmFpc2UKIAorICAgIGRlZiBtb3ZlKHNlbGYsIHNyYywgZGVzdCk6
CisgICAgICAgIHNodXRpbC5tb3ZlKHNyYywgZGVzdCkKKworICAgIGRlZiBub3JtcGF0aChzZWxm
LCBwYXRoKToKKyAgICAgICAgcmV0dXJuIG9zLnBhdGgubm9ybXBhdGgocGF0aCkKKworICAgIGRl
ZiBvcGVuX2JpbmFyeV90ZW1wZmlsZShzZWxmLCBzdWZmaXgpOgorICAgICAgICAiIiJDcmVhdGUs
IG9wZW4sIGFuZCByZXR1cm4gYSBiaW5hcnkgdGVtcCBmaWxlLiBSZXR1cm5zIGEgdHVwbGUgb2Yg
dGhlIGZpbGUgYW5kIHRoZSBuYW1lLiIiIgorICAgICAgICB0ZW1wX2ZkLCB0ZW1wX25hbWUgPSB0
ZW1wZmlsZS5ta3N0ZW1wKHN1ZmZpeCkKKyAgICAgICAgZiA9IG9zLmZkb3Blbih0ZW1wX2ZkLCAn
d2InKQorICAgICAgICByZXR1cm4gZiwgdGVtcF9uYW1lCisKKyAgICBkZWYgcmVhZF9iaW5hcnlf
ZmlsZShzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBjb250ZW50cyBvZiB0aGUg
ZmlsZSBhdCB0aGUgZ2l2ZW4gcGF0aCBhcyBhIGJ5dGUgc3RyaW5nLiIiIgorICAgICAgICB3aXRo
IGZpbGUocGF0aCwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgIHJldHVybiBmLnJlYWQoKQorCisg
ICAgZGVmIHJlYWRfdGV4dF9maWxlKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJSZXR1cm4gdGhl
IGNvbnRlbnRzIG9mIHRoZSBmaWxlIGF0IHRoZSBnaXZlbiBwYXRoIGFzIGEgVW5pY29kZSBzdHJp
bmcuCisKKyAgICAgICAgVGhlIGZpbGUgaXMgcmVhZCBhc3N1bWluZyBpdCBpcyBhIFVURi04IGVu
Y29kZWQgZmlsZSB3aXRoIG5vIEJPTS4iIiIKKyAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihwYXRo
LCAncicsICd1dGY4JykgYXMgZjoKKyAgICAgICAgICAgIHJldHVybiBmLnJlYWQoKQorCiAgICAg
Y2xhc3MgX1dpbmRvd3NFcnJvcihleGNlcHRpb25zLk9TRXJyb3IpOgogICAgICAgICAiIiJGYWtl
IGV4Y2VwdGlvbiBmb3IgTGludXggYW5kIE1hYy4iIiIKICAgICAgICAgcGFzcwpAQCAtMTI0LDE3
ICsxNzMsMTMgQEAgY2xhc3MgRmlsZVN5c3RlbShvYmplY3QpOgogICAgICAgICAgICAgICAgIGlm
IHJldHJ5X3RpbWVvdXRfc2VjIDwgMDoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZQogCi0g
ICAgZGVmIHJlYWRfYmluYXJ5X2ZpbGUoc2VsZiwgcGF0aCk6Ci0gICAgICAgICIiIlJldHVybiB0
aGUgY29udGVudHMgb2YgdGhlIGZpbGUgYXQgdGhlIGdpdmVuIHBhdGggYXMgYSBieXRlIHN0cmlu
Zy4iIiIKLSAgICAgICAgd2l0aCBmaWxlKHBhdGgsICdyYicpIGFzIGY6Ci0gICAgICAgICAgICBy
ZXR1cm4gZi5yZWFkKCkKLQotICAgIGRlZiByZWFkX3RleHRfZmlsZShzZWxmLCBwYXRoKToKLSAg
ICAgICAgIiIiUmV0dXJuIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBhdCB0aGUgZ2l2ZW4gcGF0
aCBhcyBhIFVuaWNvZGUgc3RyaW5nLgorICAgIGRlZiBybXRyZWUoc2VsZiwgcGF0aCk6CisgICAg
ICAgICIiIkRlbGV0ZSB0aGUgZGlyZWN0b3J5IHJvb3RlZCBhdCBwYXRoLCBlbXB0eSBvciBuby4i
IiIKKyAgICAgICAgc2h1dGlsLnJtdHJlZShwYXRoLCBpZ25vcmVfZXJyb3JzPVRydWUpCiAKLSAg
ICAgICAgVGhlIGZpbGUgaXMgcmVhZCBhc3N1bWluZyBpdCBpcyBhIFVURi04IGVuY29kZWQgZmls
ZSB3aXRoIG5vIEJPTS4iIiIKLSAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihwYXRoLCAncicsICd1
dGY4JykgYXMgZjoKLSAgICAgICAgICAgIHJldHVybiBmLnJlYWQoKQorICAgIGRlZiBzcGxpdGV4
dChzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiUmV0dXJuIChkaXJuYW1lLCBiYXNlbmFtZSArIGV4
dCkuIiIiCisgICAgICAgIHJldHVybiBvcy5wYXRoLnNwbGl0ZXh0KHBhdGgpCiAKICAgICBkZWYg
d3JpdGVfYmluYXJ5X2ZpbGUoc2VsZiwgcGF0aCwgY29udGVudHMpOgogICAgICAgICAiIiJXcml0
ZSB0aGUgY29udGVudHMgdG8gdGhlIGZpbGUgYXQgdGhlIGdpdmVuIGxvY2F0aW9uLiIiIgpAQCAt
MTQ3LDE0ICsxOTIsMyBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgIFRoZSBm
aWxlIGlzIHdyaXR0ZW4gZW5jb2RlZCBhcyBVVEYtOCB3aXRoIG5vIEJPTS4iIiIKICAgICAgICAg
d2l0aCBjb2RlY3Mub3BlbihwYXRoLCAndycsICd1dGY4JykgYXMgZjoKICAgICAgICAgICAgIGYu
d3JpdGUoY29udGVudHMpCi0KLSAgICBkZWYgY29weWZpbGUoc2VsZiwgc291cmNlLCBkZXN0aW5h
dGlvbik6Ci0gICAgICAgICIiIkNvcGllcyB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgYXQgdGhl
IGdpdmVuIHBhdGggdG8gdGhlIGRlc3RpbmF0aW9uCi0gICAgICAgIHBhdGguIiIiCi0gICAgICAg
IHNodXRpbC5jb3B5ZmlsZShzb3VyY2UsIGRlc3RpbmF0aW9uKQotCi0gICAgZGVmIGZpbGVzX3Vu
ZGVyKHNlbGYsIHBhdGgpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGxpc3Qgb2YgYWxsIGZpbGVz
IHVuZGVyIHRoZSBnaXZlbiBwYXRoLiIiIgotICAgICAgICByZXR1cm4gW3NlbGYuam9pbihwYXRo
X3RvX2ZpbGUsIGZpbGVuYW1lKQotICAgICAgICAgICAgZm9yIChwYXRoX3RvX2ZpbGUsIF8sIGZp
bGVuYW1lcykgaW4gb3Mud2FsayhwYXRoKQotICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluIGZp
bGVuYW1lc10KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9maWxlc3lzdGVtX21vY2sucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vZmlsZXN5c3RlbV9tb2NrLnB5CmluZGV4IGM2MDVjYjIxOGQ3YmUyNmJiZjMzMDFlODhjN2Q4
NjkxYWVjMjQ4ZmMuLjZmMTBhNjU0MDA1Mzc0ZDViMDNiN2QwOGMyZGE3OWFkYzU3Nzg1NmEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVt
X21vY2sucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVz
eXN0ZW1fbW9jay5weQpAQCAtNDMsMTAgKzQzLDM5IEBAIGNsYXNzIE1vY2tGaWxlU3lzdGVtKG9i
amVjdCk6CiAgICAgICAgICAgICAgICAgbm90IGV4aXN0LgogICAgICAgICAiIiIKICAgICAgICAg
c2VsZi5maWxlcyA9IGZpbGVzIG9yIHt9CisgICAgICAgIHNlbGYuX2N1cnJlbnRfdG1wbm8gPSAw
CisKKyAgICBkZWYgX3JhaXNlX25vdF9mb3VuZChzZWxmLCBwYXRoKToKKyAgICAgICAgcmFpc2Ug
SU9FcnJvcihlcnJuby5FTk9FTlQsIHBhdGgsIG9zLnN0cmVycm9yKGVycm5vLkVOT0VOVCkpCisK
KyAgICBkZWYgX3NwbGl0KHNlbGYsIHBhdGgpOgorICAgICAgICBpZHggPSBwYXRoLnJmaW5kKCcv
JykKKyAgICAgICAgcmV0dXJuIChwYXRoWzA6aWR4XSwgcGF0aFtpZHggKyAxOl0pCisKKyAgICBk
ZWYgYmFzZW5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9zcGxpdChwYXRoKVsxXQor
CisgICAgZGVmIGNvcHlmaWxlKHNlbGYsIHNvdXJjZSwgZGVzdGluYXRpb24pOgorICAgICAgICBp
ZiBub3Qgc2VsZi5leGlzdHMoc291cmNlKToKKyAgICAgICAgICAgIHNlbGYuX3JhaXNlX25vdF9m
b3VuZChzb3VyY2UpCisgICAgICAgIGlmIHNlbGYuaXNkaXIoc291cmNlKToKKyAgICAgICAgICAg
IHJhaXNlIElPRXJyb3IoZXJybm8uRUlTRElSLCBzb3VyY2UsIG9zLnN0cmVycm9yKGVycm5vLklT
RElSKSkKKyAgICAgICAgaWYgc2VsZi5pc2RpcihkZXN0aW5hdGlvbik6CisgICAgICAgICAgICBy
YWlzZSBJT0Vycm9yKGVycm5vLkVJU0RJUiwgZGVzdGluYXRpb24sIG9zLnN0cmVycm9yKGVycm5v
LklTRElSKSkKKworICAgICAgICBzZWxmLmZpbGVzW2Rlc3RpbmF0aW9uXSA9IHNlbGYuZmlsZXNb
c291cmNlXQorCisgICAgZGVmIGRpcm5hbWUoc2VsZiwgcGF0aCk6CisgICAgICAgIHJldHVybiBz
ZWxmLl9zcGxpdChwYXRoKVswXQogCiAgICAgZGVmIGV4aXN0cyhzZWxmLCBwYXRoKToKICAgICAg
ICAgcmV0dXJuIHNlbGYuaXNmaWxlKHBhdGgpIG9yIHNlbGYuaXNkaXIocGF0aCkKIAorICAgIGRl
ZiBmaWxlc191bmRlcihzZWxmLCBwYXRoKToKKyAgICAgICAgaWYgbm90IHBhdGguZW5kc3dpdGgo
Jy8nKToKKyAgICAgICAgICAgIHBhdGggKz0gJy8nCisgICAgICAgIHJldHVybiBbZmlsZSBmb3Ig
ZmlsZSBpbiBzZWxmLmZpbGVzIGlmIGZpbGUuc3RhcnRzd2l0aChwYXRoKV0KKwogICAgIGRlZiBp
c2ZpbGUoc2VsZiwgcGF0aCk6CiAgICAgICAgIHJldHVybiBwYXRoIGluIHNlbGYuZmlsZXMgYW5k
IHNlbGYuZmlsZXNbcGF0aF0gaXMgbm90IE5vbmUKIApAQCAtODAsMzkgKzEwOSwxMDMgQEAgY2xh
c3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgZmlsZXMuYXBw
ZW5kKHJlbWFpbmluZykKICAgICAgICAgcmV0dXJuIGRpcnMgKyBmaWxlcwogCisgICAgZGVmIF9t
a3RlbXAoc2VsZiwgc3VmZml4PScnLCBwcmVmaXg9J3RtcCcsIGRpcj1Ob25lLCAqKmt3YXJncyk6
CisgICAgICAgIGlmIGRpciBpcyBOb25lOgorICAgICAgICAgICAgZGlyID0gJy9fX2ltX3RtcCcK
KyAgICAgICAgY3Vybm8gPSBzZWxmLmN1cnJlbnRfdG1wbm8KKyAgICAgICAgc2VsZi5jdXJyZW50
X3RtcG5vICs9IDEKKyAgICAgICAgcmV0dXJuIHNlbGYuam9pbihkaXIsICIlc18ldV8lcyIgJSAo
cHJlZml4LCBjdXJubywgc3VmZml4KSkKKworICAgIGRlZiBta2R0ZW1wKHNlbGYsICoqa3dhcmdz
KToKKyAgICAgICAgY2xhc3MgVGVtcG9yYXJ5RGlyZWN0b3J5KG9iamVjdCk6CisgICAgICAgICAg
ICBkZWYgX19pbml0X18oc2VsZiwgZnMsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBzZWxm
Ll9rd2FyZ3MgPSBrd2FyZ3MKKyAgICAgICAgICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0gZnMK
KyAgICAgICAgICAgICAgICBzZWxmLl9kaXJlY3RvcnlfcGF0aCA9IGZzLl9ta3RlbXAoKiprd2Fy
Z3MpCisgICAgICAgICAgICAgICAgZnMubWF5YmVfbWFrZV9kaXJlY3Rvcnkoc2VsZi5fZGlyZWN0
b3J5X3BhdGgpCisKKyAgICAgICAgICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICAgICAg
ICAgIHJldHVybiBzZWxmLl9kaXJlY3RvcnlfcGF0aAorCisgICAgICAgICAgICBkZWYgX19lbnRl
cl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9kaXJlY3RvcnlfcGF0aAor
CisgICAgICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNlYmFjayk6
CisgICAgICAgICAgICAgICAgIyBPbmx5IHNlbGYtZGVsZXRlIGlmIG5lY2Vzc2FyeS4KKworICAg
ICAgICAgICAgICAgICMgRklYTUU6IFNob3VsZCB3ZSBkZWxldGUgbm9uLWVtcHR5IGRpcmVjdG9y
aWVzPworICAgICAgICAgICAgICAgIGlmIHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKHNlbGYuX2Rp
cmVjdG9yeV9wYXRoKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS5ybWRp
cihzZWxmLl9kaXJlY3RvcnlfcGF0aCkKKworICAgICAgICByZXR1cm4gVGVtcG9yYXJ5RGlyZWN0
b3J5KGZzPXNlbGYsICoqa3dhcmdzKQorCiAgICAgZGVmIG1heWJlX21ha2VfZGlyZWN0b3J5KHNl
bGYsICpwYXRoKToKICAgICAgICAgIyBGSVhNRTogSW1wbGVtZW50IHN1Y2ggdGhhdCBzdWJzZXF1
ZW50IGNhbGxzIHRvIGlzZGlyKCkgd29yaz8KICAgICAgICAgcGFzcwogCisgICAgZGVmIG1vdmUo
c2VsZiwgc3JjLCBkc3QpOgorICAgICAgICBpZiBzZWxmLmZpbGVzW3NyY10gaXMgTm9uZToKKyAg
ICAgICAgICAgIHNlbGYuX3JhaXNlX25vdF9mb3VuZChzcmMpCisgICAgICAgIHNlbGYuZmlsZXNb
ZHN0XSA9IHNlbGYuZmlsZXNbc3JjXQorICAgICAgICBzZWxmLmZpbGVzW3NyY10gPSBOb25lCisK
KyAgICBkZWYgbm9ybXBhdGgoc2VsZiwgcGF0aCk6CisgICAgICAgIHJldHVybiBwYXRoCisKKyAg
ICBkZWYgb3Blbl9iaW5hcnlfdGVtcGZpbGUoc2VsZiwgc3VmZml4KToKKyAgICAgICAgcGF0aCA9
IHNlbGYuX21rdGVtcChzdWZmaXgpCisgICAgICAgIHJldHVybiBXcml0YWJsZUZpbGVPYmplY3Qo
c2VsZiwgcGF0aCksIHBhdGgKKwogICAgIGRlZiByZWFkX3RleHRfZmlsZShzZWxmLCBwYXRoKToK
ICAgICAgICAgcmV0dXJuIHNlbGYucmVhZF9iaW5hcnlfZmlsZShwYXRoKQogCiAgICAgZGVmIHJl
YWRfYmluYXJ5X2ZpbGUoc2VsZiwgcGF0aCk6CiAgICAgICAgIGlmIHBhdGggaW4gc2VsZi5maWxl
czoKICAgICAgICAgICAgIGlmIHNlbGYuZmlsZXNbcGF0aF0gaXMgTm9uZToKLSAgICAgICAgICAg
ICAgICByYWlzZSBJT0Vycm9yKGVycm5vLkVOT0VOVCwgcGF0aCwgb3Muc3RyZXJyb3IoZXJybm8u
RU5PRU5UKSkKKyAgICAgICAgICAgICAgICBzZWxmLl9yYWlzZV9ub3RfZm91bmQocGF0aCkKICAg
ICAgICAgICAgIHJldHVybiBzZWxmLmZpbGVzW3BhdGhdCiAKKyAgICBkZWYgcmVtb3ZlKHNlbGYs
IHBhdGgpOgorICAgICAgICBpZiBzZWxmLmZpbGVzW3BhdGhdIGlzIE5vbmU6CisgICAgICAgICAg
ICBzZWxmLl9yYWlzZV9ub3RfZm91bmQocGF0aCkKKyAgICAgICAgc2VsZi5maWxlc1twYXRoXSA9
IE5vbmUKKworICAgIGRlZiBybXRyZWUoc2VsZiwgcGF0aCk6CisgICAgICAgIGZvciBmIGluIHNl
bGYuZmlsZXM6CisgICAgICAgICAgICBpZiBmLnN0YXJ0c3dpdGgocGF0aCk6CisgICAgICAgICAg
ICAgICAgc2VsZi5maWxlc1tmXSA9IE5vbmUKKworICAgIGRlZiBzcGxpdGV4dChzZWxmLCBwYXRo
KToKKyAgICAgICAgaWR4ID0gcGF0aC5yZmluZCgnLicpCisgICAgICAgIGlmIGlkeCA9PSAtMToK
KyAgICAgICAgICAgIGlkeCA9IDAKKyAgICAgICAgcmV0dXJuIChwYXRoWzA6aWR4XSwgcGF0aFtp
ZHg6XSkKKwogICAgIGRlZiB3cml0ZV90ZXh0X2ZpbGUoc2VsZiwgcGF0aCwgY29udGVudHMpOgog
ICAgICAgICByZXR1cm4gc2VsZi53cml0ZV9iaW5hcnlfZmlsZShwYXRoLCBjb250ZW50cykKIAog
ICAgIGRlZiB3cml0ZV9iaW5hcnlfZmlsZShzZWxmLCBwYXRoLCBjb250ZW50cyk6CiAgICAgICAg
IHNlbGYuZmlsZXNbcGF0aF0gPSBjb250ZW50cwogCi0gICAgZGVmIGNvcHlmaWxlKHNlbGYsIHNv
dXJjZSwgZGVzdGluYXRpb24pOgotICAgICAgICBpZiBub3Qgc2VsZi5leGlzdHMoc291cmNlKToK
LSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoZXJybm8uRU5PRU5ULCBzb3VyY2UsIG9zLnN0cmVy
cm9yKGVycm5vLkVOT0VOVCkpCi0gICAgICAgIGlmIHNlbGYuaXNkaXIoc291cmNlKToKLSAgICAg
ICAgICAgIHJhaXNlIElPRXJyb3IoZXJybm8uRUlTRElSLCBzb3VyY2UsIG9zLnN0cmVycm9yKGVy
cm5vLklTRElSKSkKLSAgICAgICAgaWYgc2VsZi5pc2RpcihkZXN0aW5hdGlvbik6Ci0gICAgICAg
ICAgICByYWlzZSBJT0Vycm9yKGVycm5vLkVJU0RJUiwgZGVzdGluYXRpb24sIG9zLnN0cmVycm9y
KGVycm5vLklTRElSKSkKIAotICAgICAgICBzZWxmLmZpbGVzW2Rlc3RpbmF0aW9uXSA9IHNlbGYu
ZmlsZXNbc291cmNlXQorY2xhc3MgV3JpdGFibGVGaWxlT2JqZWN0KG9iamVjdCk6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIGZzLCBwYXRoLCBhcHBlbmQ9RmFsc2UsIGVuY29kaW5nPU5vbmUpOgor
ICAgICAgICBzZWxmLmZzID0gZnMKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBz
ZWxmLmNsb3NlZCA9IEZhbHNlCisgICAgICAgIGlmIHBhdGggbm90IGluIHNlbGYuZnMuZmlsZXMg
b3Igbm90IGFwcGVuZDoKKyAgICAgICAgICAgIHNlbGYuZnMuZmlsZXNbcGF0aF0gPSAiIgogCi0g
ICAgZGVmIGZpbGVzX3VuZGVyKHNlbGYsIHBhdGgpOgotICAgICAgICBpZiBub3QgcGF0aC5lbmRz
d2l0aCgnLycpOgotICAgICAgICAgICAgcGF0aCArPSAnLycKLSAgICAgICAgcmV0dXJuIFtmaWxl
IGZvciBmaWxlIGluIHNlbGYuZmlsZXMgaWYgZmlsZS5zdGFydHN3aXRoKHBhdGgpXQorICAgIGRl
ZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCiAKLSAgICBkZWYgcmVtb3Zl
KHNlbGYsIHBhdGgpOgotICAgICAgICBkZWwgc2VsZi5maWxlc1twYXRoXQorICAgIGRlZiBfX2V4
aXRfXyhzZWxmLCB0eXBlLCB2YWx1ZSwgdHJhY2ViYWNrKToKKyAgICAgICAgIyBGSVhNRTogc2hv
dWxkIHdlIGNsb3NlKCkgaGVyZT8KKyAgICAgICAgcGFzcworCisgICAgZGVmIGNsb3NlKHNlbGYp
OgorICAgICAgICBzZWxmLmNsb3NlZCA9IFRydWUKKworICAgIGRlZiB3cml0ZShzZWxmLCBzdHIp
OgorICAgICAgICBzZWxmLmZzLmZpbGVzW3NlbGYubmFtZV0gKz0gc3RyCisgICAgICAgIHNlbGYu
ZnMud3JpdHRlbl9maWxlc1tzZWxmLm5hbWVdID0gc2VsZi5mcy5maWxlc1tzZWxmLm5hbWVdCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5l
X2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5CmluZGV4IDRkOGI3Yzlm
NWEyYmQ0Yzc0ZWQ1NmZkNjMxMmJhMTk1YzE2YzhhNmQuLjc2NDFmNTVkMmZhMjY2ZDM1ZWQxNjIx
NDYzZmEzNzZlMjFhOTQ5NTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0
X3Rlc3RzLnB5CkBAIC00MSwyNiArNDEsMTggQEAgVGhlIHNjcmlwdCBkb2VzIHRoZSBmb2xsb3dp
bmcgZm9yIGVhY2ggcGxhdGZvcm0gc3BlY2lmaWVkOgogQXQgdGhlIGVuZCwgdGhlIHNjcmlwdCBn
ZW5lcmF0ZXMgYSBodG1sIHRoYXQgY29tcGFyZXMgb2xkIGFuZCBuZXcgYmFzZWxpbmVzLgogIiIi
CiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLQotaW1wb3J0IGNvZGVj
cwogaW1wb3J0IGNvcHkKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3B0cGFyc2UKLWltcG9ydCBv
cwogaW1wb3J0IHJlCi1pbXBvcnQgc2h1dGlsCi1pbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5
cwotaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdGltZQogaW1wb3J0IHVybGxpYgogaW1wb3J0IHpp
cGZpbGUKIAorZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQgaW1wb3J0IHNjbQogZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBwYXRoCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0gaW1wb3J0IHVzZXIKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUg
aW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKLWltcG9ydCB3ZWJraXRweS5jb21tb24uY2hl
Y2tvdXQuc2NtIGFzIHNjbQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBp
bXBvcnQgU2NyaXB0RXJyb3IKIAogaW1wb3J0IHBvcnQKIGZyb20gbGF5b3V0X3BhY2thZ2UgaW1w
b3J0IHRlc3RfZXhwZWN0YXRpb25zCkBAIC0xMDAsNDEgKzkyLDM1IEBAIGRlZiBsb2dfZGFzaGVk
X3N0cmluZyh0ZXh0LCBwbGF0Zm9ybSwgbG9nZ2luZ19sZXZlbD1sb2dnaW5nLklORk8pOgogICAg
ICAgICBfbG9nLmluZm8obXNnKQogCiAKLWRlZiBzZXR1cF9odG1sX2RpcmVjdG9yeShodG1sX2Rp
cmVjdG9yeSk6CitkZWYgc2V0dXBfaHRtbF9kaXJlY3RvcnkoZmlsZXN5c3RlbSwgcGFyZW50X2Rp
cmVjdG9yeSk6CiAgICAgIiIiU2V0dXAgdGhlIGRpcmVjdG9yeSB0byBzdG9yZSBodG1sIHJlc3Vs
dHMuCiAKLSAgICAgICBBbGwgaHRtbCByZWxhdGVkIGZpbGVzIGFyZSBzdG9yZWQgaW4gdGhlICJy
ZWJhc2VsaW5lX2h0bWwiIHN1YmRpcmVjdG9yeS4KLQotICAgIEFyZ3M6Ci0gICAgICBodG1sX2Rp
cmVjdG9yeTogcGFyZW50IGRpcmVjdG9yeSB0aGF0IHN0b3JlcyB0aGUgcmViYXNlbGluaW5nIHJl
c3VsdHMuCi0gICAgICAgICAgICAgICAgICAgICAgSWYgTm9uZSwgYSB0ZW1wIGRpcmVjdG9yeSBp
cyBjcmVhdGVkLgotCi0gICAgUmV0dXJuczoKLSAgICAgIHRoZSBkaXJlY3RvcnkgdGhhdCBzdG9y
ZXMgdGhlIGh0bWwgcmVsYXRlZCByZWJhc2VsaW5pbmcgcmVzdWx0cy4KKyAgICAgICBBbGwgaHRt
bCByZWxhdGVkIGZpbGVzIGFyZSBzdG9yZWQgaW4gdGhlICJyZWJhc2VsaW5lX2h0bWwiIHN1YmRp
cmVjdG9yeSBvZgorICAgICAgIHRoZSBwYXJlbnQgZGlyZWN0b3J5LiBUaGUgcGF0aCB0byB0aGUg
Y3JlYXRlZCBkaXJlY3RvcnkgaXMgcmV0dXJuZWQuCiAgICAgIiIiCiAKLSAgICBpZiBub3QgaHRt
bF9kaXJlY3Rvcnk6Ci0gICAgICAgIGh0bWxfZGlyZWN0b3J5ID0gdGVtcGZpbGUubWtkdGVtcCgp
Ci0gICAgZWxpZiBub3Qgb3MucGF0aC5leGlzdHMoaHRtbF9kaXJlY3RvcnkpOgotICAgICAgICBv
cy5ta2RpcihodG1sX2RpcmVjdG9yeSkKKyAgICBpZiBub3QgcGFyZW50X2RpcmVjdG9yeToKKyAg
ICAgICAgcGFyZW50X2RpcmVjdG9yeSA9IHN0cihmaWxlc3lzdGVtLm1rZHRlbXAoKSkKKyAgICBl
bHNlOgorICAgICAgICBmaWxlc3lzdGVtLm1heWJlX21ha2VfZGlyZWN0b3J5KHBhcmVudF9kaXJl
Y3RvcnkpCiAKLSAgICBodG1sX2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbihodG1sX2RpcmVjdG9y
eSwgJ3JlYmFzZWxpbmVfaHRtbCcpCisgICAgaHRtbF9kaXJlY3RvcnkgPSBmaWxlc3lzdGVtLmpv
aW4ocGFyZW50X2RpcmVjdG9yeSwgJ3JlYmFzZWxpbmVfaHRtbCcpCiAgICAgX2xvZy5pbmZvKCdI
dG1sIGRpcmVjdG9yeTogIiVzIicsIGh0bWxfZGlyZWN0b3J5KQogCi0gICAgaWYgb3MucGF0aC5l
eGlzdHMoaHRtbF9kaXJlY3RvcnkpOgotICAgICAgICBzaHV0aWwucm10cmVlKGh0bWxfZGlyZWN0
b3J5LCBUcnVlKQotICAgICAgICBfbG9nLmluZm8oJ0RlbGV0ZWQgZmlsZSBhdCBodG1sIGRpcmVj
dG9yeTogIiVzIicsIGh0bWxfZGlyZWN0b3J5KQorICAgIGlmIGZpbGVzeXN0ZW0uZXhpc3RzKGh0
bWxfZGlyZWN0b3J5KToKKyAgICAgICAgZmlsZXN5c3RlbS5ybXRyZWUoaHRtbF9kaXJlY3Rvcnkp
CisgICAgICAgIF9sb2cuaW5mbygnRGVsZXRlZCBodG1sIGRpcmVjdG9yeTogIiVzIicsIGh0bWxf
ZGlyZWN0b3J5KQogCi0gICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGh0bWxfZGlyZWN0b3J5KToK
LSAgICAgICAgb3MubWtkaXIoaHRtbF9kaXJlY3RvcnkpCisgICAgZmlsZXN5c3RlbS5tYXliZV9t
YWtlX2RpcmVjdG9yeShodG1sX2RpcmVjdG9yeSkKICAgICByZXR1cm4gaHRtbF9kaXJlY3RvcnkK
IAogCi1kZWYgZ2V0X3Jlc3VsdF9maWxlX2Z1bGxwYXRoKGh0bWxfZGlyZWN0b3J5LCBiYXNlbGlu
ZV9maWxlbmFtZSwgcGxhdGZvcm0sCitkZWYgZ2V0X3Jlc3VsdF9maWxlX2Z1bGxwYXRoKGZpbGVz
eXN0ZW0sIGh0bWxfZGlyZWN0b3J5LCBiYXNlbGluZV9maWxlbmFtZSwgcGxhdGZvcm0sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF90eXBlKToKICAgICAiIiJHZXQgZnVsbCBw
YXRoIG9mIHRoZSBiYXNlbGluZSByZXN1bHQgZmlsZS4KIAogICAgIEFyZ3M6CisgICAgICBmaWxl
c3lzdGVtOiB3cmFwcGVyIG9iamVjdAogICAgICAgaHRtbF9kaXJlY3Rvcnk6IGRpcmVjdG9yeSB0
aGF0IHN0b3JlcyB0aGUgaHRtbCByZWxhdGVkIGZpbGVzLgogICAgICAgYmFzZWxpbmVfZmlsZW5h
bWU6IG5hbWUgb2YgdGhlIGJhc2VsaW5lIGZpbGUuCiAgICAgICBwbGF0Zm9ybTogd2luLCBsaW51
eCBvciBtYWMKQEAgLTE0NCw5ICsxMzAsOSBAQCBkZWYgZ2V0X3Jlc3VsdF9maWxlX2Z1bGxwYXRo
KGh0bWxfZGlyZWN0b3J5LCBiYXNlbGluZV9maWxlbmFtZSwgcGxhdGZvcm0sCiAgICAgICBGdWxs
IHBhdGggb2YgdGhlIGJhc2VsaW5lIGZpbGUgZm9yIHJlYmFzZWxpbmluZyByZXN1bHQgY29tcGFy
aXNvbi4KICAgICAiIiIKIAotICAgIGJhc2UsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoYmFzZWxp
bmVfZmlsZW5hbWUpCisgICAgYmFzZSwgZXh0ID0gZmlsZXN5c3RlbS5zcGxpdGV4dChiYXNlbGlu
ZV9maWxlbmFtZSkKICAgICByZXN1bHRfZmlsZW5hbWUgPSAnJXMtJXMtJXMlcycgJSAoYmFzZSwg
cGxhdGZvcm0sIHJlc3VsdF90eXBlLCBleHQpCi0gICAgZnVsbHBhdGggPSBvcy5wYXRoLmpvaW4o
aHRtbF9kaXJlY3RvcnksIHJlc3VsdF9maWxlbmFtZSkKKyAgICBmdWxscGF0aCA9IGZpbGVzeXN0
ZW0uam9pbihodG1sX2RpcmVjdG9yeSwgcmVzdWx0X2ZpbGVuYW1lKQogICAgIF9sb2cuZGVidWco
JyAgUmVzdWx0IGZpbGUgZnVsbCBwYXRoOiAiJXMiLicsIGZ1bGxwYXRoKQogICAgIHJldHVybiBm
dWxscGF0aAogCkBAIC0xNjgsNiArMTU0LDcgQEAgY2xhc3MgUmViYXNlbGluZXIob2JqZWN0KToK
ICAgICAgICAgc2VsZi5fcGxhdGZvcm0gPSBwbGF0Zm9ybQogICAgICAgICBzZWxmLl9vcHRpb25z
ID0gb3B0aW9ucwogICAgICAgICBzZWxmLl9wb3J0ID0gcnVubmluZ19wb3J0CisgICAgICAgIHNl
bGYuX2ZpbGVzeXN0ZW0gPSBydW5uaW5nX3BvcnQuX2ZpbGVzeXN0ZW0KICAgICAgICAgc2VsZi5f
dGFyZ2V0X3BvcnQgPSB0YXJnZXRfcG9ydAogICAgICAgICBzZWxmLl9yZWJhc2VsaW5lX3BvcnQg
PSBwb3J0LmdldCgKICAgICAgICAgICAgIHNlbGYuX3RhcmdldF9wb3J0LnRlc3RfcGxhdGZvcm1f
bmFtZV90b19uYW1lKHBsYXRmb3JtKSwgb3B0aW9ucykKQEAgLTM3MCw3ICszNTcsNyBAQCBjbGFz
cyBSZWJhc2VsaW5lcihvYmplY3QpOgogCiAgICAgICAgICAgICBmb3VuZCA9IEZhbHNlCiAgICAg
ICAgICAgICBzY21fZXJyb3IgPSBGYWxzZQotICAgICAgICAgICAgdGVzdF9iYXNlbmFtZSA9IG9z
LnBhdGguc3BsaXRleHQodGVzdClbMF0KKyAgICAgICAgICAgIHRlc3RfYmFzZW5hbWUgPSBzZWxm
Ll9maWxlc3lzdGVtLnNwbGl0ZXh0KHRlc3QpWzBdCiAgICAgICAgICAgICBmb3Igc3VmZml4IGlu
IEJBU0VMSU5FX1NVRkZJWEVTOgogICAgICAgICAgICAgICAgIGFyY2hpdmVfdGVzdF9uYW1lID0g
KCdsYXlvdXQtdGVzdC1yZXN1bHRzLyVzLWFjdHVhbCVzJyAlCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICh0ZXN0X2Jhc2VuYW1lLCBzdWZmaXgpKQpAQCAtMzg1LDE1ICsz
NzIsMTQgQEAgY2xhc3MgUmViYXNlbGluZXIob2JqZWN0KToKIAogICAgICAgICAgICAgICAgICMg
RXh0cmFjdCBuZXcgYmFzZWxpbmUgZnJvbSBhcmNoaXZlIGFuZCBzYXZlIGl0IHRvIGEgdGVtcCBm
aWxlLgogICAgICAgICAgICAgICAgIGRhdGEgPSB6aXBfZmlsZS5yZWFkKGFyY2hpdmVfdGVzdF9u
YW1lKQotICAgICAgICAgICAgICAgIHRlbXBfZmQsIHRlbXBfbmFtZSA9IHRlbXBmaWxlLm1rc3Rl
bXAoc3VmZml4KQotICAgICAgICAgICAgICAgIGYgPSBvcy5mZG9wZW4odGVtcF9mZCwgJ3diJykK
LSAgICAgICAgICAgICAgICBmLndyaXRlKGRhdGEpCi0gICAgICAgICAgICAgICAgZi5jbG9zZSgp
CisgICAgICAgICAgICAgICAgdGVtcGZpbGUsIHRlbXBfbmFtZSA9IHNlbGYuX2ZpbGVzeXN0ZW0u
b3Blbl9iaW5hcnlfdGVtcGZpbGUoc3VmZml4KQorICAgICAgICAgICAgICAgIHRlbXBmaWxlLndy
aXRlKGRhdGEpCisgICAgICAgICAgICAgICAgdGVtcGZpbGUuY2xvc2UoKQogCiAgICAgICAgICAg
ICAgICAgZXhwZWN0ZWRfZmlsZW5hbWUgPSAnJXMtZXhwZWN0ZWQlcycgJSAodGVzdF9iYXNlbmFt
ZSwgc3VmZml4KQotICAgICAgICAgICAgICAgIGV4cGVjdGVkX2Z1bGxwYXRoID0gb3MucGF0aC5q
b2luKAorICAgICAgICAgICAgICAgIGV4cGVjdGVkX2Z1bGxwYXRoID0gc2VsZi5fZmlsZXN5c3Rl
bS5qb2luKAogICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWJhc2VsaW5lX3BvcnQuYmFzZWxp
bmVfcGF0aCgpLCBleHBlY3RlZF9maWxlbmFtZSkKLSAgICAgICAgICAgICAgICBleHBlY3RlZF9m
dWxscGF0aCA9IG9zLnBhdGgubm9ybXBhdGgoZXhwZWN0ZWRfZnVsbHBhdGgpCisgICAgICAgICAg
ICAgICAgZXhwZWN0ZWRfZnVsbHBhdGggPSBzZWxmLl9maWxlc3lzdGVtLm5vcm1wYXRoKGV4cGVj
dGVkX2Z1bGxwYXRoKQogICAgICAgICAgICAgICAgIF9sb2cuZGVidWcoJyAgRXhwZWN0ZWQgZmls
ZSBmdWxsIHBhdGg6ICIlcyInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRf
ZnVsbHBhdGgpCiAKQEAgLTQwNywxNiArMzkzLDEzIEBAIGNsYXNzIFJlYmFzZWxpbmVyKG9iamVj
dCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGxhdGZvcm0pOgotICAgICAgICAgICAg
ICAgICAgICBvcy5yZW1vdmUodGVtcF9uYW1lKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9m
aWxlc3lzdGVtLnJlbW92ZSh0ZW1wX25hbWUpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Rl
bGV0ZV9iYXNlbGluZShleHBlY3RlZF9mdWxscGF0aCkKICAgICAgICAgICAgICAgICAgICAgY29u
dGludWUKIAotICAgICAgICAgICAgICAgICMgQ3JlYXRlIHRoZSBuZXcgYmFzZWxpbmUgZGlyZWN0
b3J5IGlmIGl0IGRvZXNuJ3QgYWxyZWFkeQotICAgICAgICAgICAgICAgICMgZXhpc3QuCi0gICAg
ICAgICAgICAgICAgc2VsZi5fcG9ydC5tYXliZV9tYWtlX2RpcmVjdG9yeSgKLSAgICAgICAgICAg
ICAgICAgICAgb3MucGF0aC5kaXJuYW1lKGV4cGVjdGVkX2Z1bGxwYXRoKSkKKyAgICAgICAgICAg
ICAgICBzZWxmLl9maWxlc3lzdGVtLm1heWJlX21ha2VfZGlyZWN0b3J5KHNlbGYuX2ZpbGVzeXN0
ZW0uZGlybmFtZShleHBlY3RlZF9mdWxscGF0aCkpCiAKLSAgICAgICAgICAgICAgICBzaHV0aWwu
bW92ZSh0ZW1wX25hbWUsIGV4cGVjdGVkX2Z1bGxwYXRoKQorICAgICAgICAgICAgICAgIHNlbGYu
X2ZpbGVzeXN0ZW0ubW92ZSh0ZW1wX25hbWUsIGV4cGVjdGVkX2Z1bGxwYXRoKQogCiAgICAgICAg
ICAgICAgICAgaWYgMCAhPSBzZWxmLl9zY20uYWRkKGV4cGVjdGVkX2Z1bGxwYXRoLCByZXR1cm5f
ZXhpdF9jb2RlPVRydWUpOgogICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBwcmludCBkZXRh
aWxlZCBkaWFnbm9zZSBtZXNzYWdlcwpAQCAtNDM2LDcgKzQxOSw3IEBAIGNsYXNzIFJlYmFzZWxp
bmVyKG9iamVjdCk6CiAgICAgICAgICAgICB0ZXN0X25vICs9IDEKIAogICAgICAgICB6aXBfZmls
ZS5jbG9zZSgpCi0gICAgICAgIG9zLnJlbW92ZShhcmNoaXZlX2ZpbGUpCisgICAgICAgIHNlbGYu
X2ZpbGVzeXN0ZW0ucmVtb3ZlKGFyY2hpdmVfZmlsZSkKIAogICAgICAgICByZXR1cm4gc2VsZi5f
cmViYXNlbGluZWRfdGVzdHMKIApAQCAtNDU4LDIxICs0NDEsMTcgQEAgY2xhc3MgUmViYXNlbGlu
ZXIob2JqZWN0KToKICAgICAgICAgICBUcnVlIGlmIHRoZSBiYXNlbGluZSBpcyB1bm5lY2Vzc2Fy
eS4KICAgICAgICAgICBGYWxzZSBvdGhlcndpc2UuCiAgICAgICAgICIiIgotICAgICAgICB0ZXN0
X2ZpbGVwYXRoID0gb3MucGF0aC5qb2luKHNlbGYuX3RhcmdldF9wb3J0LmxheW91dF90ZXN0c19k
aXIoKSwKKyAgICAgICAgdGVzdF9maWxlcGF0aCA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxm
Ll90YXJnZXRfcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdCkKICAgICAgICAgYWxsX2Jhc2VsaW5lcyA9IHNlbGYuX3JlYmFz
ZWxpbmVfcG9ydC5leHBlY3RlZF9iYXNlbGluZXMoCiAgICAgICAgICAgICB0ZXN0X2ZpbGVwYXRo
LCBzdWZmaXgsIFRydWUpCiAgICAgICAgIGZvciAoZmFsbGJhY2tfZGlyLCBmYWxsYmFja19maWxl
KSBpbiBhbGxfYmFzZWxpbmVzOgogICAgICAgICAgICAgaWYgZmFsbGJhY2tfZGlyIGFuZCBmYWxs
YmFja19maWxlOgotICAgICAgICAgICAgICAgIGZhbGxiYWNrX2Z1bGxwYXRoID0gb3MucGF0aC5u
b3JtcGF0aCgKLSAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGZhbGxiYWNrX2Rpciwg
ZmFsbGJhY2tfZmlsZSkpCisgICAgICAgICAgICAgICAgZmFsbGJhY2tfZnVsbHBhdGggPSBzZWxm
Ll9maWxlc3lzdGVtLm5vcm1wYXRoKAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9maWxlc3lz
dGVtLmpvaW4oZmFsbGJhY2tfZGlyLCBmYWxsYmFja19maWxlKSkKICAgICAgICAgICAgICAgICBp
ZiBmYWxsYmFja19mdWxscGF0aC5sb3dlcigpICE9IGJhc2VsaW5lX3BhdGgubG93ZXIoKToKLSAg
ICAgICAgICAgICAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihuZXdfYmFzZWxpbmUsICJyIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lKSBhcyBmaWxlX2hhbmRsZTE6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXdfb3V0cHV0ID0gZmlsZV9oYW5kbGUxLnJlYWQo
KQotICAgICAgICAgICAgICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKGZhbGxiYWNrX2Z1bGxwYXRo
LCAiciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSkgYXMgZmls
ZV9oYW5kbGUyOgotICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2tfb3V0cHV0ID0gZmls
ZV9oYW5kbGUyLnJlYWQoKQorICAgICAgICAgICAgICAgICAgICBuZXdfb3V0cHV0ID0gc2VsZi5f
ZmlsZXN5c3RlbS5yZWFkX2JpbmFyeV9maWxlKG5ld19iYXNlbGluZSkKKyAgICAgICAgICAgICAg
ICAgICAgZmFsbGJhY2tfb3V0cHV0ID0gc2VsZi5fZmlsZXN5c3RlbS5yZWFkX2JpbmFyeV9maWxl
KGZhbGxiYWNrX2Z1bGxwYXRoKQogICAgICAgICAgICAgICAgICAgICBpc19pbWFnZSA9IGJhc2Vs
aW5lX3BhdGgubG93ZXIoKS5lbmRzd2l0aCgnLnBuZycpCiAgICAgICAgICAgICAgICAgICAgIGlm
IG5vdCBzZWxmLl9kaWZmX2Jhc2VsaW5lcyhuZXdfb3V0cHV0LCBmYWxsYmFja19vdXRwdXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19pbWFnZSk6
CkBAIC01MDcsNyArNDg2LDcgQEAgY2xhc3MgUmViYXNlbGluZXIob2JqZWN0KToKICAgICAgICAg
ICBmaWxlbmFtZTogZnVsbCBwYXRoIG9mIHRoZSBmaWxlIHRvIGRlbGV0ZS4KICAgICAgICAgIiIi
CiAKLSAgICAgICAgaWYgbm90IGZpbGVuYW1lIG9yIG5vdCBvcy5wYXRoLmlzZmlsZShmaWxlbmFt
ZSk6CisgICAgICAgIGlmIG5vdCBmaWxlbmFtZSBvciBub3Qgc2VsZi5fZmlsZXN5c3RlbS5pc2Zp
bGUoZmlsZW5hbWUpOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHNlbGYuX3NjbS5kZWxl
dGUoZmlsZW5hbWUpCiAKQEAgLTUzMCwxNCArNTA5LDEyIEBAIGNsYXNzIFJlYmFzZWxpbmVyKG9i
amVjdCk6CiAgICAgICAgICAgICAgICAgZGF0ZV9zdWZmaXggPSB0aW1lLnN0cmZ0aW1lKCclWSVt
JWQlSCVNJVMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aW1lLmxvY2FsdGltZSh0aW1lLnRpbWUoKSkpCiAgICAgICAgICAgICAgICAgYmFja3VwX2ZpbGUg
PSAoJyVzLm9yaWcuJXMnICUgKHBhdGgsIGRhdGVfc3VmZml4KSkKLSAgICAgICAgICAgICAgICBp
ZiBvcy5wYXRoLmV4aXN0cyhiYWNrdXBfZmlsZSk6Ci0gICAgICAgICAgICAgICAgICAgIG9zLnJl
bW92ZShiYWNrdXBfZmlsZSkKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4
aXN0cyhiYWNrdXBfZmlsZSk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0u
cmVtb3ZlKGJhY2t1cF9maWxlKQogICAgICAgICAgICAgICAgIF9sb2cuaW5mbygnU2F2aW5nIG9y
aWdpbmFsIGZpbGUgdG8gIiVzIicsIGJhY2t1cF9maWxlKQotICAgICAgICAgICAgICAgIG9zLnJl
bmFtZShwYXRoLCBiYWNrdXBfZmlsZSkKLSAgICAgICAgICAgICMgRklYTUU6IFdoYXQgZW5jb2Rp
bmcgYXJlIHRoZXNlIGZpbGVzPwotICAgICAgICAgICAgIyBPciBpcyBuZXdfZXhwZWN0YXRpb25z
IGFsd2F5cyBhIGJ5dGUgYXJyYXk/Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgInciKSBh
cyBmaWxlOgotICAgICAgICAgICAgICAgIGZpbGUud3JpdGUobmV3X2V4cGVjdGF0aW9ucykKKyAg
ICAgICAgICAgICAgICBzZWxmLl9maWxlc3lzdGVtLm1vdmUocGF0aCwgYmFja3VwX2ZpbGUpCisK
KyAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKHBhdGgsIG5ld19l
eHBlY3RhdGlvbnMpCiAgICAgICAgICAgICAjIHNlbGYuX3NjbS5hZGQocGF0aCkKICAgICAgICAg
ZWxzZToKICAgICAgICAgICAgIF9sb2cuaW5mbygnTm8gdGVzdCB3YXMgcmViYXNlbGluZWQgc28g
bm90aGluZyB0byByZW1vdmUuJykKQEAgLTU1MSwxNSArNTI4LDE1IEBAIGNsYXNzIFJlYmFzZWxp
bmVyKG9iamVjdCk6CiAgICAgICAgICAgYmFzZWxpbmVfZnVsbHBhdGg6IGZ1bGwgcGF0aCBvZiB0
aGUgZXhwZWN0ZWQgYmFzZWxpbmUgZmlsZS4KICAgICAgICAgIiIiCiAKLSAgICAgICAgaWYgbm90
IGJhc2VsaW5lX2Z1bGxwYXRoIG9yIG5vdCBvcy5wYXRoLmV4aXN0cyhiYXNlbGluZV9mdWxscGF0
aCk6CisgICAgICAgIGlmIG5vdCBiYXNlbGluZV9mdWxscGF0aCBvciBub3Qgc2VsZi5fZmlsZXN5
c3RlbS5leGlzdHMoYmFzZWxpbmVfZnVsbHBhdGgpOgogICAgICAgICAgICAgcmV0dXJuCiAKICAg
ICAgICAgIyBDb3B5IHRoZSBuZXcgYmFzZWxpbmUgdG8gaHRtbCBkaXJlY3RvcnkgZm9yIHJlc3Vs
dCBjb21wYXJpc29uLgotICAgICAgICBiYXNlbGluZV9maWxlbmFtZSA9IG9zLnBhdGguYmFzZW5h
bWUoYmFzZWxpbmVfZnVsbHBhdGgpCi0gICAgICAgIG5ld19maWxlID0gZ2V0X3Jlc3VsdF9maWxl
X2Z1bGxwYXRoKHNlbGYuX29wdGlvbnMuaHRtbF9kaXJlY3RvcnksCisgICAgICAgIGJhc2VsaW5l
X2ZpbGVuYW1lID0gc2VsZi5fZmlsZXN5c3RlbS5iYXNlbmFtZShiYXNlbGluZV9mdWxscGF0aCkK
KyAgICAgICAgbmV3X2ZpbGUgPSBnZXRfcmVzdWx0X2ZpbGVfZnVsbHBhdGgoc2VsZi5fZmlsZXN5
c3RlbSwgc2VsZi5fb3B0aW9ucy5odG1sX2RpcmVjdG9yeSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVfZmlsZW5hbWUsIHNlbGYuX3BsYXRmb3Jt
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmV3JykKLSAg
ICAgICAgc2h1dGlsLmNvcHlmaWxlKGJhc2VsaW5lX2Z1bGxwYXRoLCBuZXdfZmlsZSkKKyAgICAg
ICAgc2VsZi5fZmlsZXN5c3RlbS5jb3B5ZmlsZShiYXNlbGluZV9mdWxscGF0aCwgbmV3X2ZpbGUp
CiAgICAgICAgIF9sb2cuaW5mbygnICBIdG1sOiBjb3BpZWQgbmV3IGJhc2VsaW5lIGZpbGUgZnJv
bSAiJXMiIHRvICIlcyIuJywKICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lX2Z1bGxwYXRoLCBu
ZXdfZmlsZSkKIApAQCAtNTc0LDcgKzU1MSw3IEBAIGNsYXNzIFJlYmFzZWxpbmVyKG9iamVjdCk6
CiAgICAgICAgICAgICAnTk8gU1VDSCBGSUxFIE9SIERJUkVDVE9SWScpKToKICAgICAgICAgICAg
IF9sb2cuaW5mbygnICBObyBiYXNlIGZpbGU6ICIlcyInLCBiYXNlbGluZV9mdWxscGF0aCkKICAg
ICAgICAgICAgIHJldHVybgotICAgICAgICBiYXNlX2ZpbGUgPSBnZXRfcmVzdWx0X2ZpbGVfZnVs
bHBhdGgoc2VsZi5fb3B0aW9ucy5odG1sX2RpcmVjdG9yeSwKKyAgICAgICAgYmFzZV9maWxlID0g
Z2V0X3Jlc3VsdF9maWxlX2Z1bGxwYXRoKHNlbGYuX2ZpbGVzeXN0ZW0sIHNlbGYuX29wdGlvbnMu
aHRtbF9kaXJlY3RvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBiYXNlbGluZV9maWxlbmFtZSwgc2VsZi5fcGxhdGZvcm0sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb2xkJykKICAgICAgICAgIyBXZSBzaG91bGQg
YmUgdXNpbmcgYW4gZXhwbGljaXQgZW5jb2RpbmcgaGVyZS4KQEAgLTU4Nyw3ICs1NjQsNyBAQCBj
bGFzcyBSZWJhc2VsaW5lcihvYmplY3QpOgogICAgICAgICBpZiBiYXNlbGluZV9maWxlbmFtZS51
cHBlcigpLmVuZHN3aXRoKCcuVFhUJyk6CiAgICAgICAgICAgICBvdXRwdXQgPSBzZWxmLl9zY20u
ZGlmZl9mb3JfZmlsZShiYXNlbGluZV9mdWxscGF0aCwgbG9nPV9sb2cpCiAgICAgICAgICAgICBp
ZiBvdXRwdXQ6Ci0gICAgICAgICAgICAgICAgZGlmZl9maWxlID0gZ2V0X3Jlc3VsdF9maWxlX2Z1
bGxwYXRoKAorICAgICAgICAgICAgICAgIGRpZmZfZmlsZSA9IGdldF9yZXN1bHRfZmlsZV9mdWxs
cGF0aChzZWxmLl9maWxlc3lzdGVtLAogICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25z
Lmh0bWxfZGlyZWN0b3J5LCBiYXNlbGluZV9maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAg
c2VsZi5fcGxhdGZvcm0sICdkaWZmJykKICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oZGlmZl9m
aWxlLCAnd2InKSBhcyBmaWxlOgpAQCAtNjQyLDE5ICs2MTksMTkgQEAgY2xhc3MgSHRtbEdlbmVy
YXRvcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgJzxpbWcgc3R5bGU9IndpZHRo
OiAyMDAiIHNyYz0iJSh1cmkpcyIgLz48L2E+PC90ZD4nKQogICAgIEhUTUxfVFIgPSAnPHRyPiVz
PC90cj4nCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGFyZ2V0X3BvcnQsIG9wdGlvbnMsIHBs
YXRmb3JtcywgcmViYXNlbGluaW5nX3Rlc3RzLAotICAgICAgICAgICAgICAgICBleGVjdXRpdmUp
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCB0YXJnZXRfcG9ydCwgb3B0aW9ucywgcGxh
dGZvcm1zLCByZWJhc2VsaW5pbmdfdGVzdHMpOgogICAgICAgICBzZWxmLl9odG1sX2RpcmVjdG9y
eSA9IG9wdGlvbnMuaHRtbF9kaXJlY3RvcnkKKyAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKICAg
ICAgICAgc2VsZi5fdGFyZ2V0X3BvcnQgPSB0YXJnZXRfcG9ydAogICAgICAgICBzZWxmLl9wbGF0
Zm9ybXMgPSBwbGF0Zm9ybXMKICAgICAgICAgc2VsZi5fcmViYXNlbGluaW5nX3Rlc3RzID0gcmVi
YXNlbGluaW5nX3Rlc3RzCi0gICAgICAgIHNlbGYuX2V4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZQotICAg
ICAgICBzZWxmLl9odG1sX2ZpbGUgPSBvcy5wYXRoLmpvaW4ob3B0aW9ucy5odG1sX2RpcmVjdG9y
eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWJhc2VsaW5lLmh0
bWwnKQorICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0gcG9ydC5fZmlsZXN5c3RlbQorICAgICAg
ICBzZWxmLl9odG1sX2ZpbGUgPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4ob3B0aW9ucy5odG1sX2Rp
cmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdyZWJhc2VsaW5lLmh0bWwnKQogCiAgICAgZGVmIGFic3BhdGhfdG9fdXJpKHNlbGYsIGZpbGVu
YW1lKToKICAgICAgICAgIiIiQ29udmVydHMgYW4gYWJzb2x1dGUgcGF0aCB0byBhIGZpbGU6IFVS
SS4iIiIKLSAgICAgICAgcmV0dXJuIHBhdGguYWJzcGF0aF90b191cmkoZmlsZW5hbWUsIHNlbGYu
X2V4ZWN1dGl2ZSkKKyAgICAgICAgcmV0dXJuIHBhdGguYWJzcGF0aF90b191cmkoZmlsZW5hbWUs
IHNlbGYuX3BvcnQuX2V4ZWN1dGl2ZSkKIAogICAgIGRlZiBnZW5lcmF0ZV9odG1sKHNlbGYpOgog
ICAgICAgICAiIiJHZW5lcmF0ZSBodG1sIGZpbGUgZm9yIHJlYmFzZWxpbmluZyByZXN1bHQgY29t
cGFyaXNvbi4iIiIKQEAgLTY3Nyw5ICs2NTQsNyBAQCBjbGFzcyBIdG1sR2VuZXJhdG9yKG9iamVj
dCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JvZHknOiBodG1s
X2JvZHl9KQogICAgICAgICBfbG9nLmRlYnVnKGh0bWwpCiAKLSAgICAgICAgd2l0aCBjb2RlY3Mu
b3BlbihzZWxmLl9odG1sX2ZpbGUsICJ3IiwgInV0Zi04IikgYXMgZmlsZToKLSAgICAgICAgICAg
IGZpbGUud3JpdGUoaHRtbCkKLQorICAgICAgICBzZWxmLl9maWxlc3lzdGVtLndyaXRlX3RleHRf
ZmlsZShzZWxmLl9odG1sX2ZpbGUsIGh0bWwpCiAgICAgICAgIF9sb2cuaW5mbygnQmFzZWxpbmUg
Y29tcGFyaXNvbiBodG1sIGdlbmVyYXRlZCBhdCAiJXMiJywKICAgICAgICAgICAgICAgICAgIHNl
bGYuX2h0bWxfZmlsZSkKIApAQCAtNjg3LDcgKzY2Miw3IEBAIGNsYXNzIEh0bWxHZW5lcmF0b3Io
b2JqZWN0KToKICAgICAgICAgIiIiTGF1bmNoIHRoZSByZWJhc2VsaW5pbmcgaHRtbCBpbiBicndv
c2VyLiIiIgogCiAgICAgICAgIF9sb2cuaW5mbygnTGF1bmNoaW5nIGh0bWw6ICIlcyInLCBzZWxm
Ll9odG1sX2ZpbGUpCi0gICAgICAgIHVzZXIuVXNlcigpLm9wZW5fdXJsKHNlbGYuX2h0bWxfZmls
ZSkKKyAgICAgICAgc2VsZi5fcG9ydC5fdXNlci5vcGVuX3VybChzZWxmLl9odG1sX2ZpbGUpCiAg
ICAgICAgIF9sb2cuaW5mbygnSHRtbCBsYXVuY2hlZC4nKQogCiAgICAgZGVmIF9nZW5lcmF0ZV9i
YXNlbGluZV9saW5rcyhzZWxmLCB0ZXN0X2Jhc2VuYW1lLCBzdWZmaXgsIHBsYXRmb3JtKToKQEAg
LTcwNSwxNCArNjgwLDE0IEBAIGNsYXNzIEh0bWxHZW5lcmF0b3Iob2JqZWN0KToKICAgICAgICAg
YmFzZWxpbmVfZmlsZW5hbWUgPSAnJXMtZXhwZWN0ZWQlcycgJSAodGVzdF9iYXNlbmFtZSwgc3Vm
Zml4KQogICAgICAgICBfbG9nLmRlYnVnKCcgICAgYmFzZWxpbmUgZmlsZW5hbWU6ICIlcyInLCBi
YXNlbGluZV9maWxlbmFtZSkKIAotICAgICAgICBuZXdfZmlsZSA9IGdldF9yZXN1bHRfZmlsZV9m
dWxscGF0aChzZWxmLl9odG1sX2RpcmVjdG9yeSwKKyAgICAgICAgbmV3X2ZpbGUgPSBnZXRfcmVz
dWx0X2ZpbGVfZnVsbHBhdGgoc2VsZi5fZmlsZXN5c3RlbSwgc2VsZi5faHRtbF9kaXJlY3Rvcnks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lX2Zp
bGVuYW1lLCBwbGF0Zm9ybSwgJ25ldycpCiAgICAgICAgIF9sb2cuaW5mbygnICAgIE5ldyBiYXNl
bGluZSBmaWxlOiAiJXMiJywgbmV3X2ZpbGUpCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0
cyhuZXdfZmlsZSk6CisgICAgICAgIGlmIG5vdCBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhuZXdf
ZmlsZSk6CiAgICAgICAgICAgICBfbG9nLmluZm8oJyAgICBObyBuZXcgYmFzZWxpbmUgZmlsZTog
IiVzIicsIG5ld19maWxlKQogICAgICAgICAgICAgcmV0dXJuICcnCiAKLSAgICAgICAgb2xkX2Zp
bGUgPSBnZXRfcmVzdWx0X2ZpbGVfZnVsbHBhdGgoc2VsZi5faHRtbF9kaXJlY3RvcnksCisgICAg
ICAgIG9sZF9maWxlID0gZ2V0X3Jlc3VsdF9maWxlX2Z1bGxwYXRoKHNlbGYuX2ZpbGVzeXN0ZW0s
IHNlbGYuX2h0bWxfZGlyZWN0b3J5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBiYXNlbGluZV9maWxlbmFtZSwgcGxhdGZvcm0sICdvbGQnKQogICAgICAgICBf
bG9nLmluZm8oJyAgICBPbGQgYmFzZWxpbmUgZmlsZTogIiVzIicsIG9sZF9maWxlKQogICAgICAg
ICBpZiBzdWZmaXggPT0gJy5wbmcnOgpAQCAtNzIxLDcgKzY5Niw3IEBAIGNsYXNzIEh0bWxHZW5l
cmF0b3Iob2JqZWN0KToKICAgICAgICAgICAgIGh0bWxfdGRfbGluayA9IHNlbGYuSFRNTF9URF9M
SU5LCiAKICAgICAgICAgbGlua3MgPSAnJwotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvbGRf
ZmlsZSk6CisgICAgICAgIGlmIHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKG9sZF9maWxlKToKICAg
ICAgICAgICAgIGxpbmtzICs9IGh0bWxfdGRfbGluayAlIHsKICAgICAgICAgICAgICAgICAndXJp
Jzogc2VsZi5hYnNwYXRoX3RvX3VyaShvbGRfZmlsZSksCiAgICAgICAgICAgICAgICAgJ25hbWUn
OiBiYXNlbGluZV9maWxlbmFtZX0KQEAgLTczMiwxMSArNzA3LDExIEBAIGNsYXNzIEh0bWxHZW5l
cmF0b3Iob2JqZWN0KToKICAgICAgICAgbGlua3MgKz0gaHRtbF90ZF9saW5rICUgeyd1cmknOiBz
ZWxmLmFic3BhdGhfdG9fdXJpKG5ld19maWxlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICduYW1lJzogYmFzZWxpbmVfZmlsZW5hbWV9CiAKLSAgICAgICAgZGlmZl9maWxlID0g
Z2V0X3Jlc3VsdF9maWxlX2Z1bGxwYXRoKHNlbGYuX2h0bWxfZGlyZWN0b3J5LAorICAgICAgICBk
aWZmX2ZpbGUgPSBnZXRfcmVzdWx0X2ZpbGVfZnVsbHBhdGgoc2VsZi5fZmlsZXN5c3RlbSwgc2Vs
Zi5faHRtbF9kaXJlY3RvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBiYXNlbGluZV9maWxlbmFtZSwgcGxhdGZvcm0sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlmZicpCiAgICAgICAgIF9sb2cuaW5mbygnICAg
IEJhc2VsaW5lIGRpZmYgZmlsZTogIiVzIicsIGRpZmZfZmlsZSkKLSAgICAgICAgaWYgb3MucGF0
aC5leGlzdHMoZGlmZl9maWxlKToKKyAgICAgICAgaWYgc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMo
ZGlmZl9maWxlKToKICAgICAgICAgICAgIGxpbmtzICs9IGh0bWxfdGRfbGluayAlIHsndXJpJzog
c2VsZi5hYnNwYXRoX3RvX3VyaShkaWZmX2ZpbGUpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICduYW1lJzogJ0RpZmYnfQogICAgICAgICBlbHNlOgpAQCAtNzU1LDcgKzcz
MCw3IEBAIGNsYXNzIEh0bWxHZW5lcmF0b3Iob2JqZWN0KToKICAgICAgICAgICBodG1sIHRoYXQg
Y29tcGFyZXMgYmFzZWxpbmUgcmVzdWx0cyBmb3IgdGhlIHRlc3QuCiAgICAgICAgICIiIgogCi0g
ICAgICAgIHRlc3RfYmFzZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKG9zLnBhdGguc3BsaXRleHQo
dGVzdClbMF0pCisgICAgICAgIHRlc3RfYmFzZW5hbWUgPSBzZWxmLl9maWxlc3lzdGVtLmJhc2Vu
YW1lKHNlbGYuX2ZpbGVzeXN0ZW0uc3BsaXRleHQodGVzdClbMF0pCiAgICAgICAgIF9sb2cuaW5m
bygnICBiYXNlbmFtZTogIiVzIicsIHRlc3RfYmFzZW5hbWUpCiAgICAgICAgIHJvd3MgPSBbXQog
ICAgICAgICBmb3Igc3VmZml4IGluIEJBU0VMSU5FX1NVRkZJWEVTOgpAQCAtNzc2LDggKzc1MSw3
IEBAIGNsYXNzIEh0bWxHZW5lcmF0b3Iob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgcm93
cy5hcHBlbmQoc2VsZi5IVE1MX1RSICUgcm93KQogCiAgICAgICAgIGlmIHJvd3M6Ci0gICAgICAg
ICAgICB0ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5fdGFyZ2V0X3BvcnQubGF5b3V0X3Rl
c3RzX2RpcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3QpCisg
ICAgICAgICAgICB0ZXN0X3BhdGggPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fdGFyZ2V0
X3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpLCB0ZXN0KQogICAgICAgICAgICAgaHRtbCA9IHNlbGYu
SFRNTF9UUl9URVNUICUgKHNlbGYuYWJzcGF0aF90b191cmkodGVzdF9wYXRoKSwgdGVzdCkKICAg
ICAgICAgICAgIGh0bWwgKz0gc2VsZi5IVE1MX1RFU1RfREVUQUlMICUgJyAnLmpvaW4ocm93cykK
IApAQCAtODgzLDcgKzg1Nyw3IEBAIGRlZiBwYXJzZV9vcHRpb25zKGFyZ3MpOgogICAgIHJldHVy
biAob3B0aW9ucywgdGFyZ2V0X29wdGlvbnMpCiAKIAotZGVmIG1haW4oZXhlY3V0aXZlPUV4ZWN1
dGl2ZSgpKToKK2RlZiBtYWluKCk6CiAgICAgIiIiTWFpbiBmdW5jdGlvbiB0byBwcm9kdWNlIG5l
dyBiYXNlbGluZXMuIiIiCiAKICAgICAob3B0aW9ucywgdGFyZ2V0X29wdGlvbnMpID0gcGFyc2Vf
b3B0aW9ucyhzeXMuYXJndlsxOl0pCkBAIC05MjksNyArOTAzLDcgQEAgZGVmIG1haW4oZXhlY3V0
aXZlPUV4ZWN1dGl2ZSgpKToKICAgICAgICAgaWYgcGxhdGZvcm0gaW4gcGxhdGZvcm1zOgogICAg
ICAgICAgICAgcmViYXNlbGluZV9wbGF0Zm9ybXMuYXBwZW5kKHBsYXRmb3JtKQogCi0gICAgb3B0
aW9ucy5odG1sX2RpcmVjdG9yeSA9IHNldHVwX2h0bWxfZGlyZWN0b3J5KG9wdGlvbnMuaHRtbF9k
aXJlY3RvcnkpCisgICAgb3B0aW9ucy5odG1sX2RpcmVjdG9yeSA9IHNldHVwX2h0bWxfZGlyZWN0
b3J5KGhvc3RfcG9ydF9vYmouX2ZpbGVzeXN0ZW0sIG9wdGlvbnMuaHRtbF9kaXJlY3RvcnkpCiAK
ICAgICByZWJhc2VsaW5pbmdfdGVzdHMgPSBzZXQoKQogICAgIGJhY2t1cCA9IG9wdGlvbnMuYmFj
a3VwCkBAIC05NTAsMTEgKzkyNCwxMSBAQCBkZWYgbWFpbihleGVjdXRpdmU9RXhlY3V0aXZlKCkp
OgogCiAgICAgX2xvZy5pbmZvKCcnKQogICAgIGxvZ19kYXNoZWRfc3RyaW5nKCdSZWJhc2VsaW5p
bmcgcmVzdWx0IGNvbXBhcmlzb24gc3RhcnRlZCcsIE5vbmUpCi0gICAgaHRtbF9nZW5lcmF0b3Ig
PSBIdG1sR2VuZXJhdG9yKHRhcmdldF9wb3J0X29iaiwKKyAgICBodG1sX2dlbmVyYXRvciA9IEh0
bWxHZW5lcmF0b3IoaG9zdF9wb3J0X29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGFyZ2V0X3BvcnRfb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWJhc2VsaW5l
X3BsYXRmb3JtcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmViYXNlbGlu
aW5nX3Rlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRpdmU9
ZXhlY3V0aXZlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWJhc2VsaW5p
bmdfdGVzdHMpCiAgICAgaHRtbF9nZW5lcmF0b3IuZ2VuZXJhdGVfaHRtbCgpCiAgICAgaWYgbm90
IG9wdGlvbnMucXVpZXQ6CiAgICAgICAgIGh0bWxfZ2VuZXJhdG9yLnNob3dfaHRtbCgpCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2No
cm9taXVtX3dlYmtpdF90ZXN0c191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5
CmluZGV4IDdjNTViOTRjOWNjNjhlMjMyMmY2ZDU3YjM2YmVlZTYwZDJhMjU3MjUuLjNjY2IxMTdk
ZDhjYWUwYzRhZDRmNDU0OTQzYTgwOGQyOTcyZjVlZjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3Rz
X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Jl
YmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CkBAIC0yOSwxNSArMjks
MTUgQEAKIAogIiIiVW5pdCB0ZXN0cyBmb3IgcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVz
dHMucHkuIiIiCiAKLWltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKIGZy
b20gd2Via2l0cHkudG9vbCBpbXBvcnQgbW9ja3Rvb2wKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzIGltcG9ydCBwb3J0Ci1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcmViYXNl
bGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5l
eGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKIAoraW1wb3J0IHBvcnQKK2lt
cG9ydCByZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cworCiAKIGNsYXNzIE1vY2tQb3J0
KG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGltYWdlX2RpZmZfZXhpc3RzKToKQEAg
LTExMyw0NCArMTEzLDQ0IEBAIGNsYXNzIFRlc3RSZWJhc2VsaW5lcih1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAgICAgZGVmIHRlc3RfZGlmZl9iYXNlbGluZXNfdHh0KHNlbGYpOgogICAgICAgICByZWJh
c2VsaW5lciA9IHNlbGYubWFrZV9yZWJhc2VsaW5lcigpCiAgICAgICAgIG91dHB1dCA9IHJlYmFz
ZWxpbmVyLl9wb3J0LmV4cGVjdGVkX3RleHQoCi0gICAgICAgICAgICBvcy5wYXRoLmpvaW4ocmVi
YXNlbGluZXIuX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICdwYXNzZXMvdGV4dC5odG1sJykpCisgICAgICAgICAgICByZWJhc2VsaW5lci5fcG9ydC5f
ZmlsZXN5c3RlbS5qb2luKHJlYmFzZWxpbmVyLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3Nlcy90ZXh0
Lmh0bWwnKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZWJhc2VsaW5lci5fZGlmZl9iYXNl
bGluZXMob3V0cHV0LCBvdXRwdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlzX2ltYWdlPUZhbHNlKSkKIAogICAgIGRlZiB0ZXN0X2RpZmZf
YmFzZWxpbmVzX3BuZyhzZWxmKToKICAgICAgICAgcmViYXNlbGluZXIgPSBzZWxmLm1ha2VfcmVi
YXNlbGluZXIoKQogICAgICAgICBpbWFnZSA9IHJlYmFzZWxpbmVyLl9wb3J0LmV4cGVjdGVkX2lt
YWdlKAotICAgICAgICAgICAgb3MucGF0aC5qb2luKHJlYmFzZWxpbmVyLl9wb3J0LmxheW91dF90
ZXN0c19kaXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAncGFzc2VzL2ltYWdlLmh0bWwn
KSkKKyAgICAgICAgICAgIHJlYmFzZWxpbmVyLl9wb3J0Ll9maWxlc3lzdGVtLmpvaW4ocmViYXNl
bGluZXIuX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAncGFzc2VzL2ltYWdlLmh0bWwnKSkKICAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShyZWJhc2VsaW5lci5fZGlmZl9iYXNlbGluZXMoaW1hZ2UsIGltYWdlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19p
bWFnZT1UcnVlKSkKIAogCiBjbGFzcyBUZXN0SHRtbEdlbmVyYXRvcih1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAgICAgZGVmIG1ha2VfZ2VuZXJhdG9yKHNlbGYsIHRlc3RzKToKKyAgICAgICAgb3B0aW9u
cyA9IG1vY2t0b29sLk1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249Tm9uZSwgaHRtbF9kaXJlY3Rv
cnk9Jy90bXAnKQorICAgICAgICBzZWxmLl9ydW5uaW5nX3BvcnQgPSBwb3J0LmdldCgndGVzdCcs
IG9wdGlvbnMpCisKICAgICAgICAgcmV0dXJuIHJlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rl
c3RzLkh0bWxHZW5lcmF0b3IoCisgICAgICAgICAgICBzZWxmLl9ydW5uaW5nX3BvcnQsCiAgICAg
ICAgICAgICB0YXJnZXRfcG9ydD1Ob25lLAotICAgICAgICAgICAgb3B0aW9ucz1tb2NrdG9vbC5N
b2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGh0bWxfZGlyZWN0b3J5PScvdG1wJyksCisgICAgICAgICAgICBvcHRp
b25zPW9wdGlvbnMsCiAgICAgICAgICAgICBwbGF0Zm9ybXM9WydtYWMnXSwKLSAgICAgICAgICAg
IHJlYmFzZWxpbmluZ190ZXN0cz10ZXN0cywKLSAgICAgICAgICAgIGV4ZWN1dGl2ZT1FeGVjdXRp
dmUoKSkKKyAgICAgICAgICAgIHJlYmFzZWxpbmluZ190ZXN0cz10ZXN0cykKIAogICAgIGRlZiB0
ZXN0X2dlbmVyYXRlX2Jhc2VsaW5lX2xpbmtzKHNlbGYpOgogICAgICAgICBvcmlnX3BsYXRmb3Jt
ID0gc3lzLnBsYXRmb3JtCi0gICAgICAgIG9yaWdfZXhpc3RzID0gb3MucGF0aC5leGlzdHMKLQog
ICAgICAgICB0cnk6CisgICAgICAgICAgICAjIEZJWE1FOiBVc2UgdGhlIG1vY2sgZmlsZXN5c3Rl
bSBpbnN0ZWFkIG9mIG1vbmtleS1wYXRjaGluZyBzeXMucGxhdGZvcm0KICAgICAgICAgICAgIHN5
cy5wbGF0Zm9ybSA9ICdkYXJ3aW4nCi0gICAgICAgICAgICBvcy5wYXRoLmV4aXN0cyA9IGxhbWJk
YSB4OiBUcnVlCiAgICAgICAgICAgICBnZW5lcmF0b3IgPSBzZWxmLm1ha2VfZ2VuZXJhdG9yKFsi
Zm9vLnR4dCJdKQorICAgICAgICAgICAgc2VsZi5fcnVubmluZ19wb3J0Ll9maWxlc3lzdGVtLmV4
aXN0cyA9IGxhbWJkYSB4OiBUcnVlCiAgICAgICAgICAgICBsaW5rcyA9IGdlbmVyYXRvci5fZ2Vu
ZXJhdGVfYmFzZWxpbmVfbGlua3MoImZvbyIsICIudHh0IiwgIm1hYyIpCiAgICAgICAgICAgICBl
eHBlY3RlZF9saW5rcyA9ICc8dGQgYWxpZ249Y2VudGVyPjxhIGhyZWY9ImZpbGU6Ly8vdG1wL2Zv
by1leHBlY3RlZC1tYWMtb2xkLnR4dCI+Zm9vLWV4cGVjdGVkLnR4dDwvYT48L3RkPjx0ZCBhbGln
bj1jZW50ZXI+PGEgaHJlZj0iZmlsZTovLy90bXAvZm9vLWV4cGVjdGVkLW1hYy1uZXcudHh0Ij5m
b28tZXhwZWN0ZWQudHh0PC9hPjwvdGQ+PHRkIGFsaWduPWNlbnRlcj48YSBocmVmPSJmaWxlOi8v
L3RtcC9mb28tZXhwZWN0ZWQtbWFjLWRpZmYudHh0Ij5EaWZmPC9hPjwvdGQ+JwogICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsaW5rcywgZXhwZWN0ZWRfbGlua3MpCiAgICAgICAgIGZpbmFs
bHk6CiAgICAgICAgICAgICBzeXMucGxhdGZvcm0gPSBvcmlnX3BsYXRmb3JtCi0gICAgICAgICAg
ICBvcy5wYXRoLmV4aXN0cyA9IG9yaWdfZXhpc3RzCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFp
bl9fJzoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79049</attachid>
            <date>2011-01-14 20:01:53 -0800</date>
            <delta_ts>2011-01-17 14:59:10 -0800</delta_ts>
            <desc>update w/ feedback from tony</desc>
            <filename>bug-52482-20110114200152.patch</filename>
            <type>text/plain</type>
            <size>34015</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyYzUz
NDUxNzE5OGY1NTk2ZjM4OWZjNDQyM2VhOWE0NWNhMjAyOWQ3Li40OTM2OTgwOGM0OWFkMjZhNWRj
OTJiZmNkMzJmMDYyZjE3ZGQ2ZTZiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDEtMTQgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXBkYXRlIHJlYmFzZWxpbmUtY2hyb21pdW0td2Via2l0LXRlc3Rz
IHRvIHVzZSBmaWxlc3lzdGVtIG9iamVjdHMKKyAgICAgICAgaW5zdGVhZCBvZiBkaXJlY3QgcmVm
ZXJlbmNlcyB0byBvcy5wYXRoLCBzaHV0aWwsIHRlbXBmaWxlLCBldGMuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBkb2Vzbid0IGNoYW5nZSBhbnl0aGluZywgYnV0IHdpbGwgYWxsb3cgc3Vic2VxdWVu
dAorICAgICAgICBwYXRjaGVzIHRvIGNoYW5nZSB0aGUgdW5pdCB0ZXN0cyB0byBubyBsb25nZXIg
dXNlIHRoZSByZWFsCisgICAgICAgIGZpbGVzeXN0ZW0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBh
ZGRzIGEgYnVuY2ggbW9yZSBtZXRob2RzIHRvIHRoZSBmaWxlc3lzdGVtIG9iamVjdCBhcworICAg
ICAgICB3ZWxsLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01MjQ4MgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2Zp
bGVzeXN0ZW0ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2Zp
bGVzeXN0ZW1fbW9jay5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191
bml0dGVzdC5weToKKwogMjAxMS0wMS0xMyAgQWxlamFuZHJvIEcuIENhc3RybyAgPGFsZXhAaWdh
bGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CmluZGV4
IDg4MzBlYThkYzZjMDUxZGE0YjMyNGVlZmZjYTIwNjE3MDcxMjkwZDEuLjk5Y2E2MDdhZjJlNmE3
NzQ0NmM3NWQ1ZjA0ZmUzZWI0MzRhMDljYWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CkBAIC00NCwxMCArNDQsMjcgQEAgY2xh
c3MgRmlsZVN5c3RlbShvYmplY3QpOgogICAgIFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIGFsbCBw
YXRocyBhcmUgYWxsb3dlZCB0byBiZSBlaXRoZXIgYWJzb2x1dGUKICAgICBvciByZWxhdGl2ZS4i
IiIKIAorICAgIGRlZiBiYXNlbmFtZShzZWxmLCBwYXRoKToKKyAgICAgICAgcmV0dXJuIG9zLnBh
dGguYmFzZW5hbWUocGF0aCkKKworICAgIGRlZiBjb3B5ZmlsZShzZWxmLCBzb3VyY2UsIGRlc3Rp
bmF0aW9uKToKKyAgICAgICAgIiIiQ29waWVzIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBhdCB0
aGUgZ2l2ZW4gcGF0aCB0byB0aGUgZGVzdGluYXRpb24KKyAgICAgICAgcGF0aC4iIiIKKyAgICAg
ICAgc2h1dGlsLmNvcHlmaWxlKHNvdXJjZSwgZGVzdGluYXRpb24pCisKKyAgICBkZWYgZGlybmFt
ZShzZWxmLCBwYXRoKToKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguZGlybmFtZShwYXRoKQorCiAg
ICAgZGVmIGV4aXN0cyhzZWxmLCBwYXRoKToKICAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhl
IHBhdGggZXhpc3RzIGluIHRoZSBmaWxlc3lzdGVtLiIiIgogICAgICAgICByZXR1cm4gb3MucGF0
aC5leGlzdHMocGF0aCkKIAorICAgIGRlZiBmaWxlc191bmRlcihzZWxmLCBwYXRoKToKKyAgICAg
ICAgIiIiUmV0dXJuIHRoZSBsaXN0IG9mIGFsbCBmaWxlcyB1bmRlciB0aGUgZ2l2ZW4gcGF0aC4i
IiIKKyAgICAgICAgcmV0dXJuIFtzZWxmLmpvaW4ocGF0aF90b19maWxlLCBmaWxlbmFtZSkKKyAg
ICAgICAgICAgIGZvciAocGF0aF90b19maWxlLCBfLCBmaWxlbmFtZXMpIGluIG9zLndhbGsocGF0
aCkKKyAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlbmFtZXNdCisKICAgICBkZWYgaXNm
aWxlKHNlbGYsIHBhdGgpOgogICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgcGF0aCByZWZl
cnMgdG8gYSBmaWxlLiIiIgogICAgICAgICByZXR1cm4gb3MucGF0aC5pc2ZpbGUocGF0aCkKQEAg
LTcxLDE0ICs4OCwyMCBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgIHRoZSBk
aXJlY3Rvcnkgd2lsbCBzZWxmLWRlbGV0ZSBhdCB0aGUgZW5kIG9mIHRoZSBibG9jayAoaWYgdGhl
CiAgICAgICAgIGRpcmVjdG9yeSBpcyBlbXB0eTsgbm9uLWVtcHR5IGRpcmVjdG9yaWVzIHJhaXNl
IGVycm9ycykuIFRoZQogICAgICAgICBkaXJlY3RvcnkgY2FuIGJlIHNhZmVseSBkZWxldGVkIGlu
c2lkZSB0aGUgYmxvY2sgYXMgd2VsbCwgaWYgc28KLSAgICAgICAgZGVzaXJlZC4iIiIKKyAgICAg
ICAgZGVzaXJlZC4KKworICAgICAgICBOb3RlIHRoYXQgdGhlIG9iamVjdCByZXR1cm5lZCBpcyBu
b3QgYSBzdHJpbmcgYW5kIGRvZXMgbm90IHN1cHBvcnQgYWxsIG9mIHRoZSBzdHJpbmcKKyAgICAg
ICAgbWV0aG9kcy4gSWYgeW91IG5lZWQgYSBzdHJpbmcsIGNvZXJjZSB0aGUgb2JqZWN0IHRvIGEg
c3RyaW5nIGFuZCBnbyBmcm9tIHRoZXJlLgorICAgICAgICAiIiIKICAgICAgICAgY2xhc3MgVGVt
cG9yYXJ5RGlyZWN0b3J5KG9iamVjdCk6CiAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwg
Kiprd2FyZ3MpOgogICAgICAgICAgICAgICAgIHNlbGYuX2t3YXJncyA9IGt3YXJncwotICAgICAg
ICAgICAgICAgIHNlbGYuX2RpcmVjdG9yeV9wYXRoID0gTm9uZQorICAgICAgICAgICAgICAgIHNl
bGYuX2RpcmVjdG9yeV9wYXRoID0gdGVtcGZpbGUubWtkdGVtcCgqKnNlbGYuX2t3YXJncykKKwor
ICAgICAgICAgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNl
bGYuX2RpcmVjdG9yeV9wYXRoCiAKICAgICAgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0g
ICAgICAgICAgICAgICAgc2VsZi5fZGlyZWN0b3J5X3BhdGggPSB0ZW1wZmlsZS5ta2R0ZW1wKCoq
c2VsZi5fa3dhcmdzKQogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9kaXJlY3RvcnlfcGF0
aAogCiAgICAgICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNlYmFj
ayk6CkBAIC05OCw2ICsxMjEsMzAgQEAgY2xhc3MgRmlsZVN5c3RlbShvYmplY3QpOgogICAgICAg
ICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FRVhJU1Q6CiAgICAgICAgICAgICAgICAgcmFpc2UK
IAorICAgIGRlZiBtb3ZlKHNlbGYsIHNyYywgZGVzdCk6CisgICAgICAgIHNodXRpbC5tb3ZlKHNy
YywgZGVzdCkKKworICAgIGRlZiBub3JtcGF0aChzZWxmLCBwYXRoKToKKyAgICAgICAgcmV0dXJu
IG9zLnBhdGgubm9ybXBhdGgocGF0aCkKKworICAgIGRlZiBvcGVuX2JpbmFyeV90ZW1wZmlsZShz
ZWxmLCBzdWZmaXgpOgorICAgICAgICAiIiJDcmVhdGUsIG9wZW4sIGFuZCByZXR1cm4gYSBiaW5h
cnkgdGVtcCBmaWxlLiBSZXR1cm5zIGEgdHVwbGUgb2YgdGhlIGZpbGUgYW5kIHRoZSBuYW1lLiIi
IgorICAgICAgICB0ZW1wX2ZkLCB0ZW1wX25hbWUgPSB0ZW1wZmlsZS5ta3N0ZW1wKHN1ZmZpeCkK
KyAgICAgICAgZiA9IG9zLmZkb3Blbih0ZW1wX2ZkLCAnd2InKQorICAgICAgICByZXR1cm4gZiwg
dGVtcF9uYW1lCisKKyAgICBkZWYgcmVhZF9iaW5hcnlfZmlsZShzZWxmLCBwYXRoKToKKyAgICAg
ICAgIiIiUmV0dXJuIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBhdCB0aGUgZ2l2ZW4gcGF0aCBh
cyBhIGJ5dGUgc3RyaW5nLiIiIgorICAgICAgICB3aXRoIGZpbGUocGF0aCwgJ3JiJykgYXMgZjoK
KyAgICAgICAgICAgIHJldHVybiBmLnJlYWQoKQorCisgICAgZGVmIHJlYWRfdGV4dF9maWxlKHNl
bGYsIHBhdGgpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGF0
IHRoZSBnaXZlbiBwYXRoIGFzIGEgVW5pY29kZSBzdHJpbmcuCisKKyAgICAgICAgVGhlIGZpbGUg
aXMgcmVhZCBhc3N1bWluZyBpdCBpcyBhIFVURi04IGVuY29kZWQgZmlsZSB3aXRoIG5vIEJPTS4i
IiIKKyAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihwYXRoLCAncicsICd1dGY4JykgYXMgZjoKKyAg
ICAgICAgICAgIHJldHVybiBmLnJlYWQoKQorCiAgICAgY2xhc3MgX1dpbmRvd3NFcnJvcihleGNl
cHRpb25zLk9TRXJyb3IpOgogICAgICAgICAiIiJGYWtlIGV4Y2VwdGlvbiBmb3IgTGludXggYW5k
IE1hYy4iIiIKICAgICAgICAgcGFzcwpAQCAtMTI0LDE3ICsxNzEsMTMgQEAgY2xhc3MgRmlsZVN5
c3RlbShvYmplY3QpOgogICAgICAgICAgICAgICAgIGlmIHJldHJ5X3RpbWVvdXRfc2VjIDwgMDoK
ICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZQogCi0gICAgZGVmIHJlYWRfYmluYXJ5X2ZpbGUo
c2VsZiwgcGF0aCk6Ci0gICAgICAgICIiIlJldHVybiB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUg
YXQgdGhlIGdpdmVuIHBhdGggYXMgYSBieXRlIHN0cmluZy4iIiIKLSAgICAgICAgd2l0aCBmaWxl
KHBhdGgsICdyYicpIGFzIGY6Ci0gICAgICAgICAgICByZXR1cm4gZi5yZWFkKCkKKyAgICBkZWYg
cm10cmVlKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJEZWxldGUgdGhlIGRpcmVjdG9yeSByb290
ZWQgYXQgcGF0aCwgZW1wdHkgb3Igbm8uIiIiCisgICAgICAgIHNodXRpbC5ybXRyZWUocGF0aCwg
aWdub3JlX2Vycm9ycz1UcnVlKQogCi0gICAgZGVmIHJlYWRfdGV4dF9maWxlKHNlbGYsIHBhdGgp
OgotICAgICAgICAiIiJSZXR1cm4gdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGF0IHRoZSBnaXZl
biBwYXRoIGFzIGEgVW5pY29kZSBzdHJpbmcuCi0KLSAgICAgICAgVGhlIGZpbGUgaXMgcmVhZCBh
c3N1bWluZyBpdCBpcyBhIFVURi04IGVuY29kZWQgZmlsZSB3aXRoIG5vIEJPTS4iIiIKLSAgICAg
ICAgd2l0aCBjb2RlY3Mub3BlbihwYXRoLCAncicsICd1dGY4JykgYXMgZjoKLSAgICAgICAgICAg
IHJldHVybiBmLnJlYWQoKQorICAgIGRlZiBzcGxpdGV4dChzZWxmLCBwYXRoKToKKyAgICAgICAg
IiIiUmV0dXJuIChkaXJuYW1lLCBiYXNlbmFtZSArIGV4dCkuIiIiCisgICAgICAgIHJldHVybiBv
cy5wYXRoLnNwbGl0ZXh0KHBhdGgpCiAKICAgICBkZWYgd3JpdGVfYmluYXJ5X2ZpbGUoc2VsZiwg
cGF0aCwgY29udGVudHMpOgogICAgICAgICAiIiJXcml0ZSB0aGUgY29udGVudHMgdG8gdGhlIGZp
bGUgYXQgdGhlIGdpdmVuIGxvY2F0aW9uLiIiIgpAQCAtMTQ3LDE0ICsxOTAsMyBAQCBjbGFzcyBG
aWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgIFRoZSBmaWxlIGlzIHdyaXR0ZW4gZW5jb2RlZCBh
cyBVVEYtOCB3aXRoIG5vIEJPTS4iIiIKICAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihwYXRoLCAn
dycsICd1dGY4JykgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoY29udGVudHMpCi0KLSAgICBk
ZWYgY29weWZpbGUoc2VsZiwgc291cmNlLCBkZXN0aW5hdGlvbik6Ci0gICAgICAgICIiIkNvcGll
cyB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgYXQgdGhlIGdpdmVuIHBhdGggdG8gdGhlIGRlc3Rp
bmF0aW9uCi0gICAgICAgIHBhdGguIiIiCi0gICAgICAgIHNodXRpbC5jb3B5ZmlsZShzb3VyY2Us
IGRlc3RpbmF0aW9uKQotCi0gICAgZGVmIGZpbGVzX3VuZGVyKHNlbGYsIHBhdGgpOgotICAgICAg
ICAiIiJSZXR1cm4gdGhlIGxpc3Qgb2YgYWxsIGZpbGVzIHVuZGVyIHRoZSBnaXZlbiBwYXRoLiIi
IgotICAgICAgICByZXR1cm4gW3NlbGYuam9pbihwYXRoX3RvX2ZpbGUsIGZpbGVuYW1lKQotICAg
ICAgICAgICAgZm9yIChwYXRoX3RvX2ZpbGUsIF8sIGZpbGVuYW1lcykgaW4gb3Mud2FsayhwYXRo
KQotICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluIGZpbGVuYW1lc10KZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5Cmlu
ZGV4IGM2MDVjYjIxOGQ3YmUyNmJiZjMzMDFlODhjN2Q4NjkxYWVjMjQ4ZmMuLmIzMjYwZWFhNGM2
NGNmYTY0MTNhZGRjYzJmYTM1MmUwMzQwYzM1YjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weQpAQCAtNDMsMTAg
KzQzLDM5IEBAIGNsYXNzIE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgICAgICAgICAg
bm90IGV4aXN0LgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5maWxlcyA9IGZpbGVzIG9yIHt9
CisgICAgICAgIHNlbGYuX2N1cnJlbnRfdG1wbm8gPSAwCisKKyAgICBkZWYgX3JhaXNlX25vdF9m
b3VuZChzZWxmLCBwYXRoKToKKyAgICAgICAgcmFpc2UgSU9FcnJvcihlcnJuby5FTk9FTlQsIHBh
dGgsIG9zLnN0cmVycm9yKGVycm5vLkVOT0VOVCkpCisKKyAgICBkZWYgX3NwbGl0KHNlbGYsIHBh
dGgpOgorICAgICAgICBpZHggPSBwYXRoLnJmaW5kKCcvJykKKyAgICAgICAgcmV0dXJuIChwYXRo
WzA6aWR4XSwgcGF0aFtpZHggKyAxOl0pCisKKyAgICBkZWYgYmFzZW5hbWUoc2VsZik6CisgICAg
ICAgIHJldHVybiBzZWxmLl9zcGxpdChwYXRoKVsxXQorCisgICAgZGVmIGNvcHlmaWxlKHNlbGYs
IHNvdXJjZSwgZGVzdGluYXRpb24pOgorICAgICAgICBpZiBub3Qgc2VsZi5leGlzdHMoc291cmNl
KToKKyAgICAgICAgICAgIHNlbGYuX3JhaXNlX25vdF9mb3VuZChzb3VyY2UpCisgICAgICAgIGlm
IHNlbGYuaXNkaXIoc291cmNlKToKKyAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoZXJybm8uRUlT
RElSLCBzb3VyY2UsIG9zLnN0cmVycm9yKGVycm5vLklTRElSKSkKKyAgICAgICAgaWYgc2VsZi5p
c2RpcihkZXN0aW5hdGlvbik6CisgICAgICAgICAgICByYWlzZSBJT0Vycm9yKGVycm5vLkVJU0RJ
UiwgZGVzdGluYXRpb24sIG9zLnN0cmVycm9yKGVycm5vLklTRElSKSkKKworICAgICAgICBzZWxm
LmZpbGVzW2Rlc3RpbmF0aW9uXSA9IHNlbGYuZmlsZXNbc291cmNlXQorCisgICAgZGVmIGRpcm5h
bWUoc2VsZiwgcGF0aCk6CisgICAgICAgIHJldHVybiBzZWxmLl9zcGxpdChwYXRoKVswXQogCiAg
ICAgZGVmIGV4aXN0cyhzZWxmLCBwYXRoKToKICAgICAgICAgcmV0dXJuIHNlbGYuaXNmaWxlKHBh
dGgpIG9yIHNlbGYuaXNkaXIocGF0aCkKIAorICAgIGRlZiBmaWxlc191bmRlcihzZWxmLCBwYXRo
KToKKyAgICAgICAgaWYgbm90IHBhdGguZW5kc3dpdGgoJy8nKToKKyAgICAgICAgICAgIHBhdGgg
Kz0gJy8nCisgICAgICAgIHJldHVybiBbZmlsZSBmb3IgZmlsZSBpbiBzZWxmLmZpbGVzIGlmIGZp
bGUuc3RhcnRzd2l0aChwYXRoKV0KKwogICAgIGRlZiBpc2ZpbGUoc2VsZiwgcGF0aCk6CiAgICAg
ICAgIHJldHVybiBwYXRoIGluIHNlbGYuZmlsZXMgYW5kIHNlbGYuZmlsZXNbcGF0aF0gaXMgbm90
IE5vbmUKIApAQCAtODAsMzkgKzEwOSwxMDIgQEAgY2xhc3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0
KToKICAgICAgICAgICAgICAgICAgICAgZmlsZXMuYXBwZW5kKHJlbWFpbmluZykKICAgICAgICAg
cmV0dXJuIGRpcnMgKyBmaWxlcwogCisgICAgZGVmIF9ta3RlbXAoc2VsZiwgc3VmZml4PScnLCBw
cmVmaXg9J3RtcCcsIGRpcj1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIGlmIGRpciBpcyBOb25l
OgorICAgICAgICAgICAgZGlyID0gJy9fX2ltX3RtcCcKKyAgICAgICAgY3Vybm8gPSBzZWxmLmN1
cnJlbnRfdG1wbm8KKyAgICAgICAgc2VsZi5jdXJyZW50X3RtcG5vICs9IDEKKyAgICAgICAgcmV0
dXJuIHNlbGYuam9pbihkaXIsICIlc18ldV8lcyIgJSAocHJlZml4LCBjdXJubywgc3VmZml4KSkK
KworICAgIGRlZiBta2R0ZW1wKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgY2xhc3MgVGVtcG9y
YXJ5RGlyZWN0b3J5KG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZnMs
ICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBzZWxmLl9rd2FyZ3MgPSBrd2FyZ3MKKyAgICAg
ICAgICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0gZnMKKyAgICAgICAgICAgICAgICBzZWxmLl9k
aXJlY3RvcnlfcGF0aCA9IGZzLl9ta3RlbXAoKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgZnMu
bWF5YmVfbWFrZV9kaXJlY3Rvcnkoc2VsZi5fZGlyZWN0b3J5X3BhdGgpCisKKyAgICAgICAgICAg
IGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9kaXJlY3Rv
cnlfcGF0aAorCisgICAgICAgICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAg
ICAgIHJldHVybiBzZWxmLl9kaXJlY3RvcnlfcGF0aAorCisgICAgICAgICAgICBkZWYgX19leGl0
X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNlYmFjayk6CisgICAgICAgICAgICAgICAgIyBPbmx5
IHNlbGYtZGVsZXRlIGlmIG5lY2Vzc2FyeS4KKworICAgICAgICAgICAgICAgICMgRklYTUU6IFNo
b3VsZCB3ZSBkZWxldGUgbm9uLWVtcHR5IGRpcmVjdG9yaWVzPworICAgICAgICAgICAgICAgIGlm
IHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKHNlbGYuX2RpcmVjdG9yeV9wYXRoKToKKyAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS5ybWRpcihzZWxmLl9kaXJlY3RvcnlfcGF0aCkK
KworICAgICAgICByZXR1cm4gVGVtcG9yYXJ5RGlyZWN0b3J5KGZzPXNlbGYsICoqa3dhcmdzKQor
CiAgICAgZGVmIG1heWJlX21ha2VfZGlyZWN0b3J5KHNlbGYsICpwYXRoKToKICAgICAgICAgIyBG
SVhNRTogSW1wbGVtZW50IHN1Y2ggdGhhdCBzdWJzZXF1ZW50IGNhbGxzIHRvIGlzZGlyKCkgd29y
az8KICAgICAgICAgcGFzcwogCisgICAgZGVmIG1vdmUoc2VsZiwgc3JjLCBkc3QpOgorICAgICAg
ICBpZiBzZWxmLmZpbGVzW3NyY10gaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX3JhaXNlX25v
dF9mb3VuZChzcmMpCisgICAgICAgIHNlbGYuZmlsZXNbZHN0XSA9IHNlbGYuZmlsZXNbc3JjXQor
ICAgICAgICBzZWxmLmZpbGVzW3NyY10gPSBOb25lCisKKyAgICBkZWYgbm9ybXBhdGgoc2VsZiwg
cGF0aCk6CisgICAgICAgIHJldHVybiBwYXRoCisKKyAgICBkZWYgb3Blbl9iaW5hcnlfdGVtcGZp
bGUoc2VsZiwgc3VmZml4KToKKyAgICAgICAgcGF0aCA9IHNlbGYuX21rdGVtcChzdWZmaXgpCisg
ICAgICAgIHJldHVybiBXcml0YWJsZUZpbGVPYmplY3Qoc2VsZiwgcGF0aCksIHBhdGgKKwogICAg
IGRlZiByZWFkX3RleHRfZmlsZShzZWxmLCBwYXRoKToKICAgICAgICAgcmV0dXJuIHNlbGYucmVh
ZF9iaW5hcnlfZmlsZShwYXRoKQogCiAgICAgZGVmIHJlYWRfYmluYXJ5X2ZpbGUoc2VsZiwgcGF0
aCk6CiAgICAgICAgIGlmIHBhdGggaW4gc2VsZi5maWxlczoKICAgICAgICAgICAgIGlmIHNlbGYu
ZmlsZXNbcGF0aF0gaXMgTm9uZToKLSAgICAgICAgICAgICAgICByYWlzZSBJT0Vycm9yKGVycm5v
LkVOT0VOVCwgcGF0aCwgb3Muc3RyZXJyb3IoZXJybm8uRU5PRU5UKSkKKyAgICAgICAgICAgICAg
ICBzZWxmLl9yYWlzZV9ub3RfZm91bmQocGF0aCkKICAgICAgICAgICAgIHJldHVybiBzZWxmLmZp
bGVzW3BhdGhdCiAKKyAgICBkZWYgcmVtb3ZlKHNlbGYsIHBhdGgpOgorICAgICAgICBpZiBzZWxm
LmZpbGVzW3BhdGhdIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9yYWlzZV9ub3RfZm91bmQo
cGF0aCkKKyAgICAgICAgc2VsZi5maWxlc1twYXRoXSA9IE5vbmUKKworICAgIGRlZiBybXRyZWUo
c2VsZiwgcGF0aCk6CisgICAgICAgIGZvciBmIGluIHNlbGYuZmlsZXM6CisgICAgICAgICAgICBp
ZiBmLnN0YXJ0c3dpdGgocGF0aCk6CisgICAgICAgICAgICAgICAgc2VsZi5maWxlc1tmXSA9IE5v
bmUKKworICAgIGRlZiBzcGxpdGV4dChzZWxmLCBwYXRoKToKKyAgICAgICAgaWR4ID0gcGF0aC5y
ZmluZCgnLicpCisgICAgICAgIGlmIGlkeCA9PSAtMToKKyAgICAgICAgICAgIGlkeCA9IDAKKyAg
ICAgICAgcmV0dXJuIChwYXRoWzA6aWR4XSwgcGF0aFtpZHg6XSkKKwogICAgIGRlZiB3cml0ZV90
ZXh0X2ZpbGUoc2VsZiwgcGF0aCwgY29udGVudHMpOgogICAgICAgICByZXR1cm4gc2VsZi53cml0
ZV9iaW5hcnlfZmlsZShwYXRoLCBjb250ZW50cykKIAogICAgIGRlZiB3cml0ZV9iaW5hcnlfZmls
ZShzZWxmLCBwYXRoLCBjb250ZW50cyk6CiAgICAgICAgIHNlbGYuZmlsZXNbcGF0aF0gPSBjb250
ZW50cwogCi0gICAgZGVmIGNvcHlmaWxlKHNlbGYsIHNvdXJjZSwgZGVzdGluYXRpb24pOgotICAg
ICAgICBpZiBub3Qgc2VsZi5leGlzdHMoc291cmNlKToKLSAgICAgICAgICAgIHJhaXNlIElPRXJy
b3IoZXJybm8uRU5PRU5ULCBzb3VyY2UsIG9zLnN0cmVycm9yKGVycm5vLkVOT0VOVCkpCi0gICAg
ICAgIGlmIHNlbGYuaXNkaXIoc291cmNlKToKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoZXJy
bm8uRUlTRElSLCBzb3VyY2UsIG9zLnN0cmVycm9yKGVycm5vLklTRElSKSkKLSAgICAgICAgaWYg
c2VsZi5pc2RpcihkZXN0aW5hdGlvbik6Ci0gICAgICAgICAgICByYWlzZSBJT0Vycm9yKGVycm5v
LkVJU0RJUiwgZGVzdGluYXRpb24sIG9zLnN0cmVycm9yKGVycm5vLklTRElSKSkKIAotICAgICAg
ICBzZWxmLmZpbGVzW2Rlc3RpbmF0aW9uXSA9IHNlbGYuZmlsZXNbc291cmNlXQorY2xhc3MgV3Jp
dGFibGVGaWxlT2JqZWN0KG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZzLCBwYXRo
LCBhcHBlbmQ9RmFsc2UsIGVuY29kaW5nPU5vbmUpOgorICAgICAgICBzZWxmLmZzID0gZnMKKyAg
ICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLmNsb3NlZCA9IEZhbHNlCisgICAg
ICAgIGlmIHBhdGggbm90IGluIHNlbGYuZnMuZmlsZXMgb3Igbm90IGFwcGVuZDoKKyAgICAgICAg
ICAgIHNlbGYuZnMuZmlsZXNbcGF0aF0gPSAiIgogCi0gICAgZGVmIGZpbGVzX3VuZGVyKHNlbGYs
IHBhdGgpOgotICAgICAgICBpZiBub3QgcGF0aC5lbmRzd2l0aCgnLycpOgotICAgICAgICAgICAg
cGF0aCArPSAnLycKLSAgICAgICAgcmV0dXJuIFtmaWxlIGZvciBmaWxlIGluIHNlbGYuZmlsZXMg
aWYgZmlsZS5zdGFydHN3aXRoKHBhdGgpXQorICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAg
ICAgIHJldHVybiBzZWxmCiAKLSAgICBkZWYgcmVtb3ZlKHNlbGYsIHBhdGgpOgotICAgICAgICBk
ZWwgc2VsZi5maWxlc1twYXRoXQorICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0eXBlLCB2YWx1ZSwg
dHJhY2ViYWNrKToKKyAgICAgICAgc2VsZi5jbG9zZWQgPSBUcnVlCisKKyAgICBkZWYgY2xvc2Uo
c2VsZik6CisgICAgICAgIHNlbGYuY2xvc2VkID0gVHJ1ZQorCisgICAgZGVmIHdyaXRlKHNlbGYs
IHN0cik6CisgICAgICAgIHNlbGYuZnMuZmlsZXNbc2VsZi5uYW1lXSArPSBzdHIKKyAgICAgICAg
c2VsZi5mcy53cml0dGVuX2ZpbGVzW3NlbGYubmFtZV0gPSBzZWxmLmZzLmZpbGVzW3NlbGYubmFt
ZV0KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFz
ZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKaW5kZXggNGQ4
YjdjOWY1YTJiZDRjNzRlZDU2ZmQ2MzEyYmExOTVjMTZjOGE2ZC4uNzY0MWY1NWQyZmEyNjZkMzVl
ZDE2MjE0NjNmYTM3NmUyMWE5NDk1NSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93
ZWJraXRfdGVzdHMucHkKQEAgLTQxLDI2ICs0MSwxOCBAQCBUaGUgc2NyaXB0IGRvZXMgdGhlIGZv
bGxvd2luZyBmb3IgZWFjaCBwbGF0Zm9ybSBzcGVjaWZpZWQ6CiBBdCB0aGUgZW5kLCB0aGUgc2Ny
aXB0IGdlbmVyYXRlcyBhIGh0bWwgdGhhdCBjb21wYXJlcyBvbGQgYW5kIG5ldyBiYXNlbGluZXMu
CiAiIiIKIAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAotCi1pbXBvcnQg
Y29kZWNzCiBpbXBvcnQgY29weQogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcHRwYXJzZQotaW1w
b3J0IG9zCiBpbXBvcnQgcmUKLWltcG9ydCBzaHV0aWwKLWltcG9ydCBzdWJwcm9jZXNzCiBpbXBv
cnQgc3lzCi1pbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0aW1lCiBpbXBvcnQgdXJsbGliCiBpbXBv
cnQgemlwZmlsZQogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dCBpbXBvcnQgc2NtCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IHBhdGgKLWZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbSBpbXBvcnQgdXNlcgotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1
dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBTY3JpcHRFcnJvcgotaW1wb3J0IHdlYmtpdHB5LmNvbW1v
bi5jaGVja291dC5zY20gYXMgc2NtCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0
aXZlIGltcG9ydCBTY3JpcHRFcnJvcgogCiBpbXBvcnQgcG9ydAogZnJvbSBsYXlvdXRfcGFja2Fn
ZSBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKQEAgLTEwMCw0MSArOTIsMzUgQEAgZGVmIGxvZ19k
YXNoZWRfc3RyaW5nKHRleHQsIHBsYXRmb3JtLCBsb2dnaW5nX2xldmVsPWxvZ2dpbmcuSU5GTyk6
CiAgICAgICAgIF9sb2cuaW5mbyhtc2cpCiAKIAotZGVmIHNldHVwX2h0bWxfZGlyZWN0b3J5KGh0
bWxfZGlyZWN0b3J5KToKK2RlZiBzZXR1cF9odG1sX2RpcmVjdG9yeShmaWxlc3lzdGVtLCBwYXJl
bnRfZGlyZWN0b3J5KToKICAgICAiIiJTZXR1cCB0aGUgZGlyZWN0b3J5IHRvIHN0b3JlIGh0bWwg
cmVzdWx0cy4KIAotICAgICAgIEFsbCBodG1sIHJlbGF0ZWQgZmlsZXMgYXJlIHN0b3JlZCBpbiB0
aGUgInJlYmFzZWxpbmVfaHRtbCIgc3ViZGlyZWN0b3J5LgotCi0gICAgQXJnczoKLSAgICAgIGh0
bWxfZGlyZWN0b3J5OiBwYXJlbnQgZGlyZWN0b3J5IHRoYXQgc3RvcmVzIHRoZSByZWJhc2VsaW5p
bmcgcmVzdWx0cy4KLSAgICAgICAgICAgICAgICAgICAgICBJZiBOb25lLCBhIHRlbXAgZGlyZWN0
b3J5IGlzIGNyZWF0ZWQuCi0KLSAgICBSZXR1cm5zOgotICAgICAgdGhlIGRpcmVjdG9yeSB0aGF0
IHN0b3JlcyB0aGUgaHRtbCByZWxhdGVkIHJlYmFzZWxpbmluZyByZXN1bHRzLgorICAgICAgIEFs
bCBodG1sIHJlbGF0ZWQgZmlsZXMgYXJlIHN0b3JlZCBpbiB0aGUgInJlYmFzZWxpbmVfaHRtbCIg
c3ViZGlyZWN0b3J5IG9mCisgICAgICAgdGhlIHBhcmVudCBkaXJlY3RvcnkuIFRoZSBwYXRoIHRv
IHRoZSBjcmVhdGVkIGRpcmVjdG9yeSBpcyByZXR1cm5lZC4KICAgICAiIiIKIAotICAgIGlmIG5v
dCBodG1sX2RpcmVjdG9yeToKLSAgICAgICAgaHRtbF9kaXJlY3RvcnkgPSB0ZW1wZmlsZS5ta2R0
ZW1wKCkKLSAgICBlbGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhodG1sX2RpcmVjdG9yeSk6Ci0gICAg
ICAgIG9zLm1rZGlyKGh0bWxfZGlyZWN0b3J5KQorICAgIGlmIG5vdCBwYXJlbnRfZGlyZWN0b3J5
OgorICAgICAgICBwYXJlbnRfZGlyZWN0b3J5ID0gc3RyKGZpbGVzeXN0ZW0ubWtkdGVtcCgpKQor
ICAgIGVsc2U6CisgICAgICAgIGZpbGVzeXN0ZW0ubWF5YmVfbWFrZV9kaXJlY3RvcnkocGFyZW50
X2RpcmVjdG9yeSkKIAotICAgIGh0bWxfZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKGh0bWxfZGly
ZWN0b3J5LCAncmViYXNlbGluZV9odG1sJykKKyAgICBodG1sX2RpcmVjdG9yeSA9IGZpbGVzeXN0
ZW0uam9pbihwYXJlbnRfZGlyZWN0b3J5LCAncmViYXNlbGluZV9odG1sJykKICAgICBfbG9nLmlu
Zm8oJ0h0bWwgZGlyZWN0b3J5OiAiJXMiJywgaHRtbF9kaXJlY3RvcnkpCiAKLSAgICBpZiBvcy5w
YXRoLmV4aXN0cyhodG1sX2RpcmVjdG9yeSk6Ci0gICAgICAgIHNodXRpbC5ybXRyZWUoaHRtbF9k
aXJlY3RvcnksIFRydWUpCi0gICAgICAgIF9sb2cuaW5mbygnRGVsZXRlZCBmaWxlIGF0IGh0bWwg
ZGlyZWN0b3J5OiAiJXMiJywgaHRtbF9kaXJlY3RvcnkpCisgICAgaWYgZmlsZXN5c3RlbS5leGlz
dHMoaHRtbF9kaXJlY3RvcnkpOgorICAgICAgICBmaWxlc3lzdGVtLnJtdHJlZShodG1sX2RpcmVj
dG9yeSkKKyAgICAgICAgX2xvZy5pbmZvKCdEZWxldGVkIGh0bWwgZGlyZWN0b3J5OiAiJXMiJywg
aHRtbF9kaXJlY3RvcnkpCiAKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoaHRtbF9kaXJlY3Rv
cnkpOgotICAgICAgICBvcy5ta2RpcihodG1sX2RpcmVjdG9yeSkKKyAgICBmaWxlc3lzdGVtLm1h
eWJlX21ha2VfZGlyZWN0b3J5KGh0bWxfZGlyZWN0b3J5KQogICAgIHJldHVybiBodG1sX2RpcmVj
dG9yeQogCiAKLWRlZiBnZXRfcmVzdWx0X2ZpbGVfZnVsbHBhdGgoaHRtbF9kaXJlY3RvcnksIGJh
c2VsaW5lX2ZpbGVuYW1lLCBwbGF0Zm9ybSwKK2RlZiBnZXRfcmVzdWx0X2ZpbGVfZnVsbHBhdGgo
ZmlsZXN5c3RlbSwgaHRtbF9kaXJlY3RvcnksIGJhc2VsaW5lX2ZpbGVuYW1lLCBwbGF0Zm9ybSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3R5cGUpOgogICAgICIiIkdldCBm
dWxsIHBhdGggb2YgdGhlIGJhc2VsaW5lIHJlc3VsdCBmaWxlLgogCiAgICAgQXJnczoKKyAgICAg
IGZpbGVzeXN0ZW06IHdyYXBwZXIgb2JqZWN0CiAgICAgICBodG1sX2RpcmVjdG9yeTogZGlyZWN0
b3J5IHRoYXQgc3RvcmVzIHRoZSBodG1sIHJlbGF0ZWQgZmlsZXMuCiAgICAgICBiYXNlbGluZV9m
aWxlbmFtZTogbmFtZSBvZiB0aGUgYmFzZWxpbmUgZmlsZS4KICAgICAgIHBsYXRmb3JtOiB3aW4s
IGxpbnV4IG9yIG1hYwpAQCAtMTQ0LDkgKzEzMCw5IEBAIGRlZiBnZXRfcmVzdWx0X2ZpbGVfZnVs
bHBhdGgoaHRtbF9kaXJlY3RvcnksIGJhc2VsaW5lX2ZpbGVuYW1lLCBwbGF0Zm9ybSwKICAgICAg
IEZ1bGwgcGF0aCBvZiB0aGUgYmFzZWxpbmUgZmlsZSBmb3IgcmViYXNlbGluaW5nIHJlc3VsdCBj
b21wYXJpc29uLgogICAgICIiIgogCi0gICAgYmFzZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChi
YXNlbGluZV9maWxlbmFtZSkKKyAgICBiYXNlLCBleHQgPSBmaWxlc3lzdGVtLnNwbGl0ZXh0KGJh
c2VsaW5lX2ZpbGVuYW1lKQogICAgIHJlc3VsdF9maWxlbmFtZSA9ICclcy0lcy0lcyVzJyAlIChi
YXNlLCBwbGF0Zm9ybSwgcmVzdWx0X3R5cGUsIGV4dCkKLSAgICBmdWxscGF0aCA9IG9zLnBhdGgu
am9pbihodG1sX2RpcmVjdG9yeSwgcmVzdWx0X2ZpbGVuYW1lKQorICAgIGZ1bGxwYXRoID0gZmls
ZXN5c3RlbS5qb2luKGh0bWxfZGlyZWN0b3J5LCByZXN1bHRfZmlsZW5hbWUpCiAgICAgX2xvZy5k
ZWJ1ZygnICBSZXN1bHQgZmlsZSBmdWxsIHBhdGg6ICIlcyIuJywgZnVsbHBhdGgpCiAgICAgcmV0
dXJuIGZ1bGxwYXRoCiAKQEAgLTE2OCw2ICsxNTQsNyBAQCBjbGFzcyBSZWJhc2VsaW5lcihvYmpl
Y3QpOgogICAgICAgICBzZWxmLl9wbGF0Zm9ybSA9IHBsYXRmb3JtCiAgICAgICAgIHNlbGYuX29w
dGlvbnMgPSBvcHRpb25zCiAgICAgICAgIHNlbGYuX3BvcnQgPSBydW5uaW5nX3BvcnQKKyAgICAg
ICAgc2VsZi5fZmlsZXN5c3RlbSA9IHJ1bm5pbmdfcG9ydC5fZmlsZXN5c3RlbQogICAgICAgICBz
ZWxmLl90YXJnZXRfcG9ydCA9IHRhcmdldF9wb3J0CiAgICAgICAgIHNlbGYuX3JlYmFzZWxpbmVf
cG9ydCA9IHBvcnQuZ2V0KAogICAgICAgICAgICAgc2VsZi5fdGFyZ2V0X3BvcnQudGVzdF9wbGF0
Zm9ybV9uYW1lX3RvX25hbWUocGxhdGZvcm0pLCBvcHRpb25zKQpAQCAtMzcwLDcgKzM1Nyw3IEBA
IGNsYXNzIFJlYmFzZWxpbmVyKG9iamVjdCk6CiAKICAgICAgICAgICAgIGZvdW5kID0gRmFsc2UK
ICAgICAgICAgICAgIHNjbV9lcnJvciA9IEZhbHNlCi0gICAgICAgICAgICB0ZXN0X2Jhc2VuYW1l
ID0gb3MucGF0aC5zcGxpdGV4dCh0ZXN0KVswXQorICAgICAgICAgICAgdGVzdF9iYXNlbmFtZSA9
IHNlbGYuX2ZpbGVzeXN0ZW0uc3BsaXRleHQodGVzdClbMF0KICAgICAgICAgICAgIGZvciBzdWZm
aXggaW4gQkFTRUxJTkVfU1VGRklYRVM6CiAgICAgICAgICAgICAgICAgYXJjaGl2ZV90ZXN0X25h
bWUgPSAoJ2xheW91dC10ZXN0LXJlc3VsdHMvJXMtYWN0dWFsJXMnICUKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHRlc3RfYmFzZW5hbWUsIHN1ZmZpeCkpCkBAIC0zODUs
MTUgKzM3MiwxNCBAQCBjbGFzcyBSZWJhc2VsaW5lcihvYmplY3QpOgogCiAgICAgICAgICAgICAg
ICAgIyBFeHRyYWN0IG5ldyBiYXNlbGluZSBmcm9tIGFyY2hpdmUgYW5kIHNhdmUgaXQgdG8gYSB0
ZW1wIGZpbGUuCiAgICAgICAgICAgICAgICAgZGF0YSA9IHppcF9maWxlLnJlYWQoYXJjaGl2ZV90
ZXN0X25hbWUpCi0gICAgICAgICAgICAgICAgdGVtcF9mZCwgdGVtcF9uYW1lID0gdGVtcGZpbGUu
bWtzdGVtcChzdWZmaXgpCi0gICAgICAgICAgICAgICAgZiA9IG9zLmZkb3Blbih0ZW1wX2ZkLCAn
d2InKQotICAgICAgICAgICAgICAgIGYud3JpdGUoZGF0YSkKLSAgICAgICAgICAgICAgICBmLmNs
b3NlKCkKKyAgICAgICAgICAgICAgICB0ZW1wZmlsZSwgdGVtcF9uYW1lID0gc2VsZi5fZmlsZXN5
c3RlbS5vcGVuX2JpbmFyeV90ZW1wZmlsZShzdWZmaXgpCisgICAgICAgICAgICAgICAgdGVtcGZp
bGUud3JpdGUoZGF0YSkKKyAgICAgICAgICAgICAgICB0ZW1wZmlsZS5jbG9zZSgpCiAKICAgICAg
ICAgICAgICAgICBleHBlY3RlZF9maWxlbmFtZSA9ICclcy1leHBlY3RlZCVzJyAlICh0ZXN0X2Jh
c2VuYW1lLCBzdWZmaXgpCi0gICAgICAgICAgICAgICAgZXhwZWN0ZWRfZnVsbHBhdGggPSBvcy5w
YXRoLmpvaW4oCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZnVsbHBhdGggPSBzZWxmLl9maWxl
c3lzdGVtLmpvaW4oCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlYmFzZWxpbmVfcG9ydC5i
YXNlbGluZV9wYXRoKCksIGV4cGVjdGVkX2ZpbGVuYW1lKQotICAgICAgICAgICAgICAgIGV4cGVj
dGVkX2Z1bGxwYXRoID0gb3MucGF0aC5ub3JtcGF0aChleHBlY3RlZF9mdWxscGF0aCkKKyAgICAg
ICAgICAgICAgICBleHBlY3RlZF9mdWxscGF0aCA9IHNlbGYuX2ZpbGVzeXN0ZW0ubm9ybXBhdGgo
ZXhwZWN0ZWRfZnVsbHBhdGgpCiAgICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygnICBFeHBlY3Rl
ZCBmaWxlIGZ1bGwgcGF0aDogIiVzIicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBl
Y3RlZF9mdWxscGF0aCkKIApAQCAtNDA3LDE2ICszOTMsMTMgQEAgY2xhc3MgUmViYXNlbGluZXIo
b2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wbGF0Zm9ybSk6Ci0gICAgICAg
ICAgICAgICAgICAgIG9zLnJlbW92ZSh0ZW1wX25hbWUpCisgICAgICAgICAgICAgICAgICAgIHNl
bGYuX2ZpbGVzeXN0ZW0ucmVtb3ZlKHRlbXBfbmFtZSkKICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fZGVsZXRlX2Jhc2VsaW5lKGV4cGVjdGVkX2Z1bGxwYXRoKQogICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZQogCi0gICAgICAgICAgICAgICAgIyBDcmVhdGUgdGhlIG5ldyBiYXNlbGluZSBk
aXJlY3RvcnkgaWYgaXQgZG9lc24ndCBhbHJlYWR5Ci0gICAgICAgICAgICAgICAgIyBleGlzdC4K
LSAgICAgICAgICAgICAgICBzZWxmLl9wb3J0Lm1heWJlX21ha2VfZGlyZWN0b3J5KAotICAgICAg
ICAgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUoZXhwZWN0ZWRfZnVsbHBhdGgpKQorICAgICAg
ICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ubWF5YmVfbWFrZV9kaXJlY3Rvcnkoc2VsZi5fZmls
ZXN5c3RlbS5kaXJuYW1lKGV4cGVjdGVkX2Z1bGxwYXRoKSkKIAotICAgICAgICAgICAgICAgIHNo
dXRpbC5tb3ZlKHRlbXBfbmFtZSwgZXhwZWN0ZWRfZnVsbHBhdGgpCisgICAgICAgICAgICAgICAg
c2VsZi5fZmlsZXN5c3RlbS5tb3ZlKHRlbXBfbmFtZSwgZXhwZWN0ZWRfZnVsbHBhdGgpCiAKICAg
ICAgICAgICAgICAgICBpZiAwICE9IHNlbGYuX3NjbS5hZGQoZXhwZWN0ZWRfZnVsbHBhdGgsIHJl
dHVybl9leGl0X2NvZGU9VHJ1ZSk6CiAgICAgICAgICAgICAgICAgICAgICMgRklYTUU6IHByaW50
IGRldGFpbGVkIGRpYWdub3NlIG1lc3NhZ2VzCkBAIC00MzYsNyArNDE5LDcgQEAgY2xhc3MgUmVi
YXNlbGluZXIob2JqZWN0KToKICAgICAgICAgICAgIHRlc3Rfbm8gKz0gMQogCiAgICAgICAgIHpp
cF9maWxlLmNsb3NlKCkKLSAgICAgICAgb3MucmVtb3ZlKGFyY2hpdmVfZmlsZSkKKyAgICAgICAg
c2VsZi5fZmlsZXN5c3RlbS5yZW1vdmUoYXJjaGl2ZV9maWxlKQogCiAgICAgICAgIHJldHVybiBz
ZWxmLl9yZWJhc2VsaW5lZF90ZXN0cwogCkBAIC00NTgsMjEgKzQ0MSwxNyBAQCBjbGFzcyBSZWJh
c2VsaW5lcihvYmplY3QpOgogICAgICAgICAgIFRydWUgaWYgdGhlIGJhc2VsaW5lIGlzIHVubmVj
ZXNzYXJ5LgogICAgICAgICAgIEZhbHNlIG90aGVyd2lzZS4KICAgICAgICAgIiIiCi0gICAgICAg
IHRlc3RfZmlsZXBhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5fdGFyZ2V0X3BvcnQubGF5b3V0X3Rl
c3RzX2RpcigpLAorICAgICAgICB0ZXN0X2ZpbGVwYXRoID0gc2VsZi5fZmlsZXN5c3RlbS5qb2lu
KHNlbGYuX3RhcmdldF9wb3J0LmxheW91dF90ZXN0c19kaXIoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXN0KQogICAgICAgICBhbGxfYmFzZWxpbmVzID0gc2VsZi5f
cmViYXNlbGluZV9wb3J0LmV4cGVjdGVkX2Jhc2VsaW5lcygKICAgICAgICAgICAgIHRlc3RfZmls
ZXBhdGgsIHN1ZmZpeCwgVHJ1ZSkKICAgICAgICAgZm9yIChmYWxsYmFja19kaXIsIGZhbGxiYWNr
X2ZpbGUpIGluIGFsbF9iYXNlbGluZXM6CiAgICAgICAgICAgICBpZiBmYWxsYmFja19kaXIgYW5k
IGZhbGxiYWNrX2ZpbGU6Ci0gICAgICAgICAgICAgICAgZmFsbGJhY2tfZnVsbHBhdGggPSBvcy5w
YXRoLm5vcm1wYXRoKAotICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oZmFsbGJhY2tf
ZGlyLCBmYWxsYmFja19maWxlKSkKKyAgICAgICAgICAgICAgICBmYWxsYmFja19mdWxscGF0aCA9
IHNlbGYuX2ZpbGVzeXN0ZW0ubm9ybXBhdGgoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Zp
bGVzeXN0ZW0uam9pbihmYWxsYmFja19kaXIsIGZhbGxiYWNrX2ZpbGUpKQogICAgICAgICAgICAg
ICAgIGlmIGZhbGxiYWNrX2Z1bGxwYXRoLmxvd2VyKCkgIT0gYmFzZWxpbmVfcGF0aC5sb3dlcigp
OgotICAgICAgICAgICAgICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKG5ld19iYXNlbGluZSwgInIi
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUpIGFzIGZpbGVfaGFu
ZGxlMToKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld19vdXRwdXQgPSBmaWxlX2hhbmRsZTEu
cmVhZCgpCi0gICAgICAgICAgICAgICAgICAgIHdpdGggY29kZWNzLm9wZW4oZmFsbGJhY2tfZnVs
bHBhdGgsICJyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lKSBh
cyBmaWxlX2hhbmRsZTI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFja19vdXRwdXQg
PSBmaWxlX2hhbmRsZTIucmVhZCgpCisgICAgICAgICAgICAgICAgICAgIG5ld19vdXRwdXQgPSBz
ZWxmLl9maWxlc3lzdGVtLnJlYWRfYmluYXJ5X2ZpbGUobmV3X2Jhc2VsaW5lKQorICAgICAgICAg
ICAgICAgICAgICBmYWxsYmFja19vdXRwdXQgPSBzZWxmLl9maWxlc3lzdGVtLnJlYWRfYmluYXJ5
X2ZpbGUoZmFsbGJhY2tfZnVsbHBhdGgpCiAgICAgICAgICAgICAgICAgICAgIGlzX2ltYWdlID0g
YmFzZWxpbmVfcGF0aC5sb3dlcigpLmVuZHN3aXRoKCcucG5nJykKICAgICAgICAgICAgICAgICAg
ICAgaWYgbm90IHNlbGYuX2RpZmZfYmFzZWxpbmVzKG5ld19vdXRwdXQsIGZhbGxiYWNrX291dHB1
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2lt
YWdlKToKQEAgLTUwNyw3ICs0ODYsNyBAQCBjbGFzcyBSZWJhc2VsaW5lcihvYmplY3QpOgogICAg
ICAgICAgIGZpbGVuYW1lOiBmdWxsIHBhdGggb2YgdGhlIGZpbGUgdG8gZGVsZXRlLgogICAgICAg
ICAiIiIKIAotICAgICAgICBpZiBub3QgZmlsZW5hbWUgb3Igbm90IG9zLnBhdGguaXNmaWxlKGZp
bGVuYW1lKToKKyAgICAgICAgaWYgbm90IGZpbGVuYW1lIG9yIG5vdCBzZWxmLl9maWxlc3lzdGVt
LmlzZmlsZShmaWxlbmFtZSk6CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5fc2Nt
LmRlbGV0ZShmaWxlbmFtZSkKIApAQCAtNTMwLDE0ICs1MDksMTIgQEAgY2xhc3MgUmViYXNlbGlu
ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBkYXRlX3N1ZmZpeCA9IHRpbWUuc3RyZnRpbWUo
JyVZJW0lZCVIJU0lUycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRpbWUubG9jYWx0aW1lKHRpbWUudGltZSgpKSkKICAgICAgICAgICAgICAgICBiYWNrdXBf
ZmlsZSA9ICgnJXMub3JpZy4lcycgJSAocGF0aCwgZGF0ZV9zdWZmaXgpKQotICAgICAgICAgICAg
ICAgIGlmIG9zLnBhdGguZXhpc3RzKGJhY2t1cF9maWxlKToKLSAgICAgICAgICAgICAgICAgICAg
b3MucmVtb3ZlKGJhY2t1cF9maWxlKQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX2ZpbGVzeXN0
ZW0uZXhpc3RzKGJhY2t1cF9maWxlKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmlsZXN5
c3RlbS5yZW1vdmUoYmFja3VwX2ZpbGUpCiAgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCdTYXZp
bmcgb3JpZ2luYWwgZmlsZSB0byAiJXMiJywgYmFja3VwX2ZpbGUpCi0gICAgICAgICAgICAgICAg
b3MucmVuYW1lKHBhdGgsIGJhY2t1cF9maWxlKQotICAgICAgICAgICAgIyBGSVhNRTogV2hhdCBl
bmNvZGluZyBhcmUgdGhlc2UgZmlsZXM/Ci0gICAgICAgICAgICAjIE9yIGlzIG5ld19leHBlY3Rh
dGlvbnMgYWx3YXlzIGEgYnl0ZSBhcnJheT8KLSAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAi
dyIpIGFzIGZpbGU6Ci0gICAgICAgICAgICAgICAgZmlsZS53cml0ZShuZXdfZXhwZWN0YXRpb25z
KQorICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ubW92ZShwYXRoLCBiYWNrdXBfZmls
ZSkKKworICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUocGF0aCwg
bmV3X2V4cGVjdGF0aW9ucykKICAgICAgICAgICAgICMgc2VsZi5fc2NtLmFkZChwYXRoKQogICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgX2xvZy5pbmZvKCdObyB0ZXN0IHdhcyByZWJhc2VsaW5l
ZCBzbyBub3RoaW5nIHRvIHJlbW92ZS4nKQpAQCAtNTUxLDE1ICs1MjgsMTUgQEAgY2xhc3MgUmVi
YXNlbGluZXIob2JqZWN0KToKICAgICAgICAgICBiYXNlbGluZV9mdWxscGF0aDogZnVsbCBwYXRo
IG9mIHRoZSBleHBlY3RlZCBiYXNlbGluZSBmaWxlLgogICAgICAgICAiIiIKIAotICAgICAgICBp
ZiBub3QgYmFzZWxpbmVfZnVsbHBhdGggb3Igbm90IG9zLnBhdGguZXhpc3RzKGJhc2VsaW5lX2Z1
bGxwYXRoKToKKyAgICAgICAgaWYgbm90IGJhc2VsaW5lX2Z1bGxwYXRoIG9yIG5vdCBzZWxmLl9m
aWxlc3lzdGVtLmV4aXN0cyhiYXNlbGluZV9mdWxscGF0aCk6CiAgICAgICAgICAgICByZXR1cm4K
IAogICAgICAgICAjIENvcHkgdGhlIG5ldyBiYXNlbGluZSB0byBodG1sIGRpcmVjdG9yeSBmb3Ig
cmVzdWx0IGNvbXBhcmlzb24uCi0gICAgICAgIGJhc2VsaW5lX2ZpbGVuYW1lID0gb3MucGF0aC5i
YXNlbmFtZShiYXNlbGluZV9mdWxscGF0aCkKLSAgICAgICAgbmV3X2ZpbGUgPSBnZXRfcmVzdWx0
X2ZpbGVfZnVsbHBhdGgoc2VsZi5fb3B0aW9ucy5odG1sX2RpcmVjdG9yeSwKKyAgICAgICAgYmFz
ZWxpbmVfZmlsZW5hbWUgPSBzZWxmLl9maWxlc3lzdGVtLmJhc2VuYW1lKGJhc2VsaW5lX2Z1bGxw
YXRoKQorICAgICAgICBuZXdfZmlsZSA9IGdldF9yZXN1bHRfZmlsZV9mdWxscGF0aChzZWxmLl9m
aWxlc3lzdGVtLCBzZWxmLl9vcHRpb25zLmh0bWxfZGlyZWN0b3J5LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlbGluZV9maWxlbmFtZSwgc2VsZi5fcGxh
dGZvcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZXcn
KQotICAgICAgICBzaHV0aWwuY29weWZpbGUoYmFzZWxpbmVfZnVsbHBhdGgsIG5ld19maWxlKQor
ICAgICAgICBzZWxmLl9maWxlc3lzdGVtLmNvcHlmaWxlKGJhc2VsaW5lX2Z1bGxwYXRoLCBuZXdf
ZmlsZSkKICAgICAgICAgX2xvZy5pbmZvKCcgIEh0bWw6IGNvcGllZCBuZXcgYmFzZWxpbmUgZmls
ZSBmcm9tICIlcyIgdG8gIiVzIi4nLAogICAgICAgICAgICAgICAgICAgYmFzZWxpbmVfZnVsbHBh
dGgsIG5ld19maWxlKQogCkBAIC01NzQsNyArNTUxLDcgQEAgY2xhc3MgUmViYXNlbGluZXIob2Jq
ZWN0KToKICAgICAgICAgICAgICdOTyBTVUNIIEZJTEUgT1IgRElSRUNUT1JZJykpOgogICAgICAg
ICAgICAgX2xvZy5pbmZvKCcgIE5vIGJhc2UgZmlsZTogIiVzIicsIGJhc2VsaW5lX2Z1bGxwYXRo
KQogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGJhc2VfZmlsZSA9IGdldF9yZXN1bHRfZmls
ZV9mdWxscGF0aChzZWxmLl9vcHRpb25zLmh0bWxfZGlyZWN0b3J5LAorICAgICAgICBiYXNlX2Zp
bGUgPSBnZXRfcmVzdWx0X2ZpbGVfZnVsbHBhdGgoc2VsZi5fZmlsZXN5c3RlbSwgc2VsZi5fb3B0
aW9ucy5odG1sX2RpcmVjdG9yeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJhc2VsaW5lX2ZpbGVuYW1lLCBzZWxmLl9wbGF0Zm9ybSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvbGQnKQogICAgICAgICAjIFdlIHNo
b3VsZCBiZSB1c2luZyBhbiBleHBsaWNpdCBlbmNvZGluZyBoZXJlLgpAQCAtNTg3LDcgKzU2NCw3
IEBAIGNsYXNzIFJlYmFzZWxpbmVyKG9iamVjdCk6CiAgICAgICAgIGlmIGJhc2VsaW5lX2ZpbGVu
YW1lLnVwcGVyKCkuZW5kc3dpdGgoJy5UWFQnKToKICAgICAgICAgICAgIG91dHB1dCA9IHNlbGYu
X3NjbS5kaWZmX2Zvcl9maWxlKGJhc2VsaW5lX2Z1bGxwYXRoLCBsb2c9X2xvZykKICAgICAgICAg
ICAgIGlmIG91dHB1dDoKLSAgICAgICAgICAgICAgICBkaWZmX2ZpbGUgPSBnZXRfcmVzdWx0X2Zp
bGVfZnVsbHBhdGgoCisgICAgICAgICAgICAgICAgZGlmZl9maWxlID0gZ2V0X3Jlc3VsdF9maWxl
X2Z1bGxwYXRoKHNlbGYuX2ZpbGVzeXN0ZW0sCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29w
dGlvbnMuaHRtbF9kaXJlY3RvcnksIGJhc2VsaW5lX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9wbGF0Zm9ybSwgJ2RpZmYnKQogICAgICAgICAgICAgICAgIHdpdGggb3Blbihk
aWZmX2ZpbGUsICd3YicpIGFzIGZpbGU6CkBAIC02NDIsMTkgKzYxOSwxOSBAQCBjbGFzcyBIdG1s
R2VuZXJhdG9yKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAnPGltZyBzdHlsZT0i
d2lkdGg6IDIwMCIgc3JjPSIlKHVyaSlzIiAvPjwvYT48L3RkPicpCiAgICAgSFRNTF9UUiA9ICc8
dHI+JXM8L3RyPicKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YXJnZXRfcG9ydCwgb3B0aW9u
cywgcGxhdGZvcm1zLCByZWJhc2VsaW5pbmdfdGVzdHMsCi0gICAgICAgICAgICAgICAgIGV4ZWN1
dGl2ZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIHRhcmdldF9wb3J0LCBvcHRpb25z
LCBwbGF0Zm9ybXMsIHJlYmFzZWxpbmluZ190ZXN0cyk6CiAgICAgICAgIHNlbGYuX2h0bWxfZGly
ZWN0b3J5ID0gb3B0aW9ucy5odG1sX2RpcmVjdG9yeQorICAgICAgICBzZWxmLl9wb3J0ID0gcG9y
dAogICAgICAgICBzZWxmLl90YXJnZXRfcG9ydCA9IHRhcmdldF9wb3J0CiAgICAgICAgIHNlbGYu
X3BsYXRmb3JtcyA9IHBsYXRmb3JtcwogICAgICAgICBzZWxmLl9yZWJhc2VsaW5pbmdfdGVzdHMg
PSByZWJhc2VsaW5pbmdfdGVzdHMKLSAgICAgICAgc2VsZi5fZXhlY3V0aXZlID0gZXhlY3V0aXZl
Ci0gICAgICAgIHNlbGYuX2h0bWxfZmlsZSA9IG9zLnBhdGguam9pbihvcHRpb25zLmh0bWxfZGly
ZWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlYmFzZWxp
bmUuaHRtbCcpCisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBwb3J0Ll9maWxlc3lzdGVtCisg
ICAgICAgIHNlbGYuX2h0bWxfZmlsZSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihvcHRpb25zLmh0
bWxfZGlyZWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3JlYmFzZWxpbmUuaHRtbCcpCiAKICAgICBkZWYgYWJzcGF0aF90b191cmkoc2VsZiwg
ZmlsZW5hbWUpOgogICAgICAgICAiIiJDb252ZXJ0cyBhbiBhYnNvbHV0ZSBwYXRoIHRvIGEgZmls
ZTogVVJJLiIiIgotICAgICAgICByZXR1cm4gcGF0aC5hYnNwYXRoX3RvX3VyaShmaWxlbmFtZSwg
c2VsZi5fZXhlY3V0aXZlKQorICAgICAgICByZXR1cm4gcGF0aC5hYnNwYXRoX3RvX3VyaShmaWxl
bmFtZSwgc2VsZi5fcG9ydC5fZXhlY3V0aXZlKQogCiAgICAgZGVmIGdlbmVyYXRlX2h0bWwoc2Vs
Zik6CiAgICAgICAgICIiIkdlbmVyYXRlIGh0bWwgZmlsZSBmb3IgcmViYXNlbGluaW5nIHJlc3Vs
dCBjb21wYXJpc29uLiIiIgpAQCAtNjc3LDkgKzY1NCw3IEBAIGNsYXNzIEh0bWxHZW5lcmF0b3Io
b2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9keSc6
IGh0bWxfYm9keX0pCiAgICAgICAgIF9sb2cuZGVidWcoaHRtbCkKIAotICAgICAgICB3aXRoIGNv
ZGVjcy5vcGVuKHNlbGYuX2h0bWxfZmlsZSwgInciLCAidXRmLTgiKSBhcyBmaWxlOgotICAgICAg
ICAgICAgZmlsZS53cml0ZShodG1sKQotCisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ud3JpdGVf
dGV4dF9maWxlKHNlbGYuX2h0bWxfZmlsZSwgaHRtbCkKICAgICAgICAgX2xvZy5pbmZvKCdCYXNl
bGluZSBjb21wYXJpc29uIGh0bWwgZ2VuZXJhdGVkIGF0ICIlcyInLAogICAgICAgICAgICAgICAg
ICAgc2VsZi5faHRtbF9maWxlKQogCkBAIC02ODcsNyArNjYyLDcgQEAgY2xhc3MgSHRtbEdlbmVy
YXRvcihvYmplY3QpOgogICAgICAgICAiIiJMYXVuY2ggdGhlIHJlYmFzZWxpbmluZyBodG1sIGlu
IGJyd29zZXIuIiIiCiAKICAgICAgICAgX2xvZy5pbmZvKCdMYXVuY2hpbmcgaHRtbDogIiVzIics
IHNlbGYuX2h0bWxfZmlsZSkKLSAgICAgICAgdXNlci5Vc2VyKCkub3Blbl91cmwoc2VsZi5faHRt
bF9maWxlKQorICAgICAgICBzZWxmLl9wb3J0Ll91c2VyLm9wZW5fdXJsKHNlbGYuX2h0bWxfZmls
ZSkKICAgICAgICAgX2xvZy5pbmZvKCdIdG1sIGxhdW5jaGVkLicpCiAKICAgICBkZWYgX2dlbmVy
YXRlX2Jhc2VsaW5lX2xpbmtzKHNlbGYsIHRlc3RfYmFzZW5hbWUsIHN1ZmZpeCwgcGxhdGZvcm0p
OgpAQCAtNzA1LDE0ICs2ODAsMTQgQEAgY2xhc3MgSHRtbEdlbmVyYXRvcihvYmplY3QpOgogICAg
ICAgICBiYXNlbGluZV9maWxlbmFtZSA9ICclcy1leHBlY3RlZCVzJyAlICh0ZXN0X2Jhc2VuYW1l
LCBzdWZmaXgpCiAgICAgICAgIF9sb2cuZGVidWcoJyAgICBiYXNlbGluZSBmaWxlbmFtZTogIiVz
IicsIGJhc2VsaW5lX2ZpbGVuYW1lKQogCi0gICAgICAgIG5ld19maWxlID0gZ2V0X3Jlc3VsdF9m
aWxlX2Z1bGxwYXRoKHNlbGYuX2h0bWxfZGlyZWN0b3J5LAorICAgICAgICBuZXdfZmlsZSA9IGdl
dF9yZXN1bHRfZmlsZV9mdWxscGF0aChzZWxmLl9maWxlc3lzdGVtLCBzZWxmLl9odG1sX2RpcmVj
dG9yeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZWxp
bmVfZmlsZW5hbWUsIHBsYXRmb3JtLCAnbmV3JykKICAgICAgICAgX2xvZy5pbmZvKCcgICAgTmV3
IGJhc2VsaW5lIGZpbGU6ICIlcyInLCBuZXdfZmlsZSkKLSAgICAgICAgaWYgbm90IG9zLnBhdGgu
ZXhpc3RzKG5ld19maWxlKToKKyAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3Rz
KG5ld19maWxlKToKICAgICAgICAgICAgIF9sb2cuaW5mbygnICAgIE5vIG5ldyBiYXNlbGluZSBm
aWxlOiAiJXMiJywgbmV3X2ZpbGUpCiAgICAgICAgICAgICByZXR1cm4gJycKIAotICAgICAgICBv
bGRfZmlsZSA9IGdldF9yZXN1bHRfZmlsZV9mdWxscGF0aChzZWxmLl9odG1sX2RpcmVjdG9yeSwK
KyAgICAgICAgb2xkX2ZpbGUgPSBnZXRfcmVzdWx0X2ZpbGVfZnVsbHBhdGgoc2VsZi5fZmlsZXN5
c3RlbSwgc2VsZi5faHRtbF9kaXJlY3RvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJhc2VsaW5lX2ZpbGVuYW1lLCBwbGF0Zm9ybSwgJ29sZCcpCiAgICAg
ICAgIF9sb2cuaW5mbygnICAgIE9sZCBiYXNlbGluZSBmaWxlOiAiJXMiJywgb2xkX2ZpbGUpCiAg
ICAgICAgIGlmIHN1ZmZpeCA9PSAnLnBuZyc6CkBAIC03MjEsNyArNjk2LDcgQEAgY2xhc3MgSHRt
bEdlbmVyYXRvcihvYmplY3QpOgogICAgICAgICAgICAgaHRtbF90ZF9saW5rID0gc2VsZi5IVE1M
X1REX0xJTksKIAogICAgICAgICBsaW5rcyA9ICcnCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3Rz
KG9sZF9maWxlKToKKyAgICAgICAgaWYgc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMob2xkX2ZpbGUp
OgogICAgICAgICAgICAgbGlua3MgKz0gaHRtbF90ZF9saW5rICUgewogICAgICAgICAgICAgICAg
ICd1cmknOiBzZWxmLmFic3BhdGhfdG9fdXJpKG9sZF9maWxlKSwKICAgICAgICAgICAgICAgICAn
bmFtZSc6IGJhc2VsaW5lX2ZpbGVuYW1lfQpAQCAtNzMyLDExICs3MDcsMTEgQEAgY2xhc3MgSHRt
bEdlbmVyYXRvcihvYmplY3QpOgogICAgICAgICBsaW5rcyArPSBodG1sX3RkX2xpbmsgJSB7J3Vy
aSc6IHNlbGYuYWJzcGF0aF90b191cmkobmV3X2ZpbGUpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ25hbWUnOiBiYXNlbGluZV9maWxlbmFtZX0KIAotICAgICAgICBkaWZmX2Zp
bGUgPSBnZXRfcmVzdWx0X2ZpbGVfZnVsbHBhdGgoc2VsZi5faHRtbF9kaXJlY3RvcnksCisgICAg
ICAgIGRpZmZfZmlsZSA9IGdldF9yZXN1bHRfZmlsZV9mdWxscGF0aChzZWxmLl9maWxlc3lzdGVt
LCBzZWxmLl9odG1sX2RpcmVjdG9yeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJhc2VsaW5lX2ZpbGVuYW1lLCBwbGF0Zm9ybSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaWZmJykKICAgICAgICAgX2xvZy5pbmZv
KCcgICAgQmFzZWxpbmUgZGlmZiBmaWxlOiAiJXMiJywgZGlmZl9maWxlKQotICAgICAgICBpZiBv
cy5wYXRoLmV4aXN0cyhkaWZmX2ZpbGUpOgorICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4
aXN0cyhkaWZmX2ZpbGUpOgogICAgICAgICAgICAgbGlua3MgKz0gaHRtbF90ZF9saW5rICUgeyd1
cmknOiBzZWxmLmFic3BhdGhfdG9fdXJpKGRpZmZfZmlsZSksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ25hbWUnOiAnRGlmZid9CiAgICAgICAgIGVsc2U6CkBAIC03NTUs
NyArNzMwLDcgQEAgY2xhc3MgSHRtbEdlbmVyYXRvcihvYmplY3QpOgogICAgICAgICAgIGh0bWwg
dGhhdCBjb21wYXJlcyBiYXNlbGluZSByZXN1bHRzIGZvciB0aGUgdGVzdC4KICAgICAgICAgIiIi
CiAKLSAgICAgICAgdGVzdF9iYXNlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUob3MucGF0aC5zcGxp
dGV4dCh0ZXN0KVswXSkKKyAgICAgICAgdGVzdF9iYXNlbmFtZSA9IHNlbGYuX2ZpbGVzeXN0ZW0u
YmFzZW5hbWUoc2VsZi5fZmlsZXN5c3RlbS5zcGxpdGV4dCh0ZXN0KVswXSkKICAgICAgICAgX2xv
Zy5pbmZvKCcgIGJhc2VuYW1lOiAiJXMiJywgdGVzdF9iYXNlbmFtZSkKICAgICAgICAgcm93cyA9
IFtdCiAgICAgICAgIGZvciBzdWZmaXggaW4gQkFTRUxJTkVfU1VGRklYRVM6CkBAIC03NzYsOCAr
NzUxLDcgQEAgY2xhc3MgSHRtbEdlbmVyYXRvcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAg
ICByb3dzLmFwcGVuZChzZWxmLkhUTUxfVFIgJSByb3cpCiAKICAgICAgICAgaWYgcm93czoKLSAg
ICAgICAgICAgIHRlc3RfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLl90YXJnZXRfcG9ydC5sYXlv
dXRfdGVzdHNfZGlyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dCkKKyAgICAgICAgICAgIHRlc3RfcGF0aCA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl90
YXJnZXRfcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksIHRlc3QpCiAgICAgICAgICAgICBodG1sID0g
c2VsZi5IVE1MX1RSX1RFU1QgJSAoc2VsZi5hYnNwYXRoX3RvX3VyaSh0ZXN0X3BhdGgpLCB0ZXN0
KQogICAgICAgICAgICAgaHRtbCArPSBzZWxmLkhUTUxfVEVTVF9ERVRBSUwgJSAnICcuam9pbihy
b3dzKQogCkBAIC04ODMsNyArODU3LDcgQEAgZGVmIHBhcnNlX29wdGlvbnMoYXJncyk6CiAgICAg
cmV0dXJuIChvcHRpb25zLCB0YXJnZXRfb3B0aW9ucykKIAogCi1kZWYgbWFpbihleGVjdXRpdmU9
RXhlY3V0aXZlKCkpOgorZGVmIG1haW4oKToKICAgICAiIiJNYWluIGZ1bmN0aW9uIHRvIHByb2R1
Y2UgbmV3IGJhc2VsaW5lcy4iIiIKIAogICAgIChvcHRpb25zLCB0YXJnZXRfb3B0aW9ucykgPSBw
YXJzZV9vcHRpb25zKHN5cy5hcmd2WzE6XSkKQEAgLTkyOSw3ICs5MDMsNyBAQCBkZWYgbWFpbihl
eGVjdXRpdmU9RXhlY3V0aXZlKCkpOgogICAgICAgICBpZiBwbGF0Zm9ybSBpbiBwbGF0Zm9ybXM6
CiAgICAgICAgICAgICByZWJhc2VsaW5lX3BsYXRmb3Jtcy5hcHBlbmQocGxhdGZvcm0pCiAKLSAg
ICBvcHRpb25zLmh0bWxfZGlyZWN0b3J5ID0gc2V0dXBfaHRtbF9kaXJlY3Rvcnkob3B0aW9ucy5o
dG1sX2RpcmVjdG9yeSkKKyAgICBvcHRpb25zLmh0bWxfZGlyZWN0b3J5ID0gc2V0dXBfaHRtbF9k
aXJlY3RvcnkoaG9zdF9wb3J0X29iai5fZmlsZXN5c3RlbSwgb3B0aW9ucy5odG1sX2RpcmVjdG9y
eSkKIAogICAgIHJlYmFzZWxpbmluZ190ZXN0cyA9IHNldCgpCiAgICAgYmFja3VwID0gb3B0aW9u
cy5iYWNrdXAKQEAgLTk1MCwxMSArOTI0LDExIEBAIGRlZiBtYWluKGV4ZWN1dGl2ZT1FeGVjdXRp
dmUoKSk6CiAKICAgICBfbG9nLmluZm8oJycpCiAgICAgbG9nX2Rhc2hlZF9zdHJpbmcoJ1JlYmFz
ZWxpbmluZyByZXN1bHQgY29tcGFyaXNvbiBzdGFydGVkJywgTm9uZSkKLSAgICBodG1sX2dlbmVy
YXRvciA9IEh0bWxHZW5lcmF0b3IodGFyZ2V0X3BvcnRfb2JqLAorICAgIGh0bWxfZ2VuZXJhdG9y
ID0gSHRtbEdlbmVyYXRvcihob3N0X3BvcnRfb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0YXJnZXRfcG9ydF9vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYmFz
ZWxpbmVfcGxhdGZvcm1zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWJh
c2VsaW5pbmdfdGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1
dGl2ZT1leGVjdXRpdmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYmFz
ZWxpbmluZ190ZXN0cykKICAgICBodG1sX2dlbmVyYXRvci5nZW5lcmF0ZV9odG1sKCkKICAgICBp
ZiBub3Qgb3B0aW9ucy5xdWlldDoKICAgICAgICAgaHRtbF9nZW5lcmF0b3Iuc2hvd19odG1sKCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxp
bmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5pdHRl
c3QucHkKaW5kZXggN2M1NWI5NGM5Y2M2OGUyMzIyZjZkNTdiMzZiZWVlNjBkMmEyNTcyNS4uNmM0
YzY4OTI1Y2UwOWMxYWRiNTE1N2IwYWM1YTc1Yjc5OWI1NTExYiAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRf
dGVzdHNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKQEAgLTI5LDE1
ICsyOSwxNSBAQAogCiAiIiJVbml0IHRlc3RzIGZvciByZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtp
dF90ZXN0cy5weS4iIiIKIAotaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QK
IAogZnJvbSB3ZWJraXRweS50b29sIGltcG9ydCBtb2NrdG9vbAotZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMgaW1wb3J0IHBvcnQKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBy
ZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBTY3JpcHRFcnJvcgogCitpbXBvcnQgcG9y
dAoraW1wb3J0IHJlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzCisKIAogY2xhc3MgTW9j
a1BvcnQob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgaW1hZ2VfZGlmZl9leGlzdHMp
OgpAQCAtMTEzLDQ0ICsxMTMsNDQgQEAgY2xhc3MgVGVzdFJlYmFzZWxpbmVyKHVuaXR0ZXN0LlRl
c3RDYXNlKToKICAgICBkZWYgdGVzdF9kaWZmX2Jhc2VsaW5lc190eHQoc2VsZik6CiAgICAgICAg
IHJlYmFzZWxpbmVyID0gc2VsZi5tYWtlX3JlYmFzZWxpbmVyKCkKICAgICAgICAgb3V0cHV0ID0g
cmViYXNlbGluZXIuX3BvcnQuZXhwZWN0ZWRfdGV4dCgKLSAgICAgICAgICAgIG9zLnBhdGguam9p
bihyZWJhc2VsaW5lci5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgJ3Bhc3Nlcy90ZXh0Lmh0bWwnKSkKKyAgICAgICAgICAgIHJlYmFzZWxpbmVyLl9w
b3J0Ll9maWxlc3lzdGVtLmpvaW4ocmViYXNlbGluZXIuX3BvcnQubGF5b3V0X3Rlc3RzX2Rpcigp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFzc2Vz
L3RleHQuaHRtbCcpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlYmFzZWxpbmVyLl9kaWZm
X2Jhc2VsaW5lcyhvdXRwdXQsIG91dHB1dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaXNfaW1hZ2U9RmFsc2UpKQogCiAgICAgZGVmIHRlc3Rf
ZGlmZl9iYXNlbGluZXNfcG5nKHNlbGYpOgogICAgICAgICByZWJhc2VsaW5lciA9IHNlbGYubWFr
ZV9yZWJhc2VsaW5lcigpCiAgICAgICAgIGltYWdlID0gcmViYXNlbGluZXIuX3BvcnQuZXhwZWN0
ZWRfaW1hZ2UoCi0gICAgICAgICAgICBvcy5wYXRoLmpvaW4ocmViYXNlbGluZXIuX3BvcnQubGF5
b3V0X3Rlc3RzX2RpcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICdwYXNzZXMvaW1hZ2Uu
aHRtbCcpKQorICAgICAgICAgICAgcmViYXNlbGluZXIuX3BvcnQuX2ZpbGVzeXN0ZW0uam9pbihy
ZWJhc2VsaW5lci5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXNzZXMvaW1hZ2UuaHRtbCcpKQogICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKHJlYmFzZWxpbmVyLl9kaWZmX2Jhc2VsaW5lcyhpbWFnZSwgaW1h
Z2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlzX2ltYWdlPVRydWUpKQogCiAKIGNsYXNzIFRlc3RIdG1sR2VuZXJhdG9yKHVuaXR0ZXN0LlRl
c3RDYXNlKToKICAgICBkZWYgbWFrZV9nZW5lcmF0b3Ioc2VsZiwgdGVzdHMpOgotICAgICAgICBy
ZXR1cm4gcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMuSHRtbEdlbmVyYXRvcigKKyAg
ICAgICAgb3B0aW9ucyA9IG1vY2t0b29sLk1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249Tm9uZSwg
aHRtbF9kaXJlY3Rvcnk9Jy90bXAnKQorICAgICAgICBob3N0X3BvcnQgPSBwb3J0LmdldCgndGVz
dCcsIG9wdGlvbnMpCisgICAgICAgIGdlbmVyYXRvciA9IHJlYmFzZWxpbmVfY2hyb21pdW1fd2Vi
a2l0X3Rlc3RzLkh0bWxHZW5lcmF0b3IoCisgICAgICAgICAgICBob3N0X3BvcnQsCiAgICAgICAg
ICAgICB0YXJnZXRfcG9ydD1Ob25lLAotICAgICAgICAgICAgb3B0aW9ucz1tb2NrdG9vbC5Nb2Nr
T3B0aW9ucyhjb25maWd1cmF0aW9uPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGh0bWxfZGlyZWN0b3J5PScvdG1wJyksCisgICAgICAgICAgICBvcHRpb25z
PW9wdGlvbnMsCiAgICAgICAgICAgICBwbGF0Zm9ybXM9WydtYWMnXSwKLSAgICAgICAgICAgIHJl
YmFzZWxpbmluZ190ZXN0cz10ZXN0cywKLSAgICAgICAgICAgIGV4ZWN1dGl2ZT1FeGVjdXRpdmUo
KSkKKyAgICAgICAgICAgIHJlYmFzZWxpbmluZ190ZXN0cz10ZXN0cykKKyAgICAgICAgcmV0dXJu
IGdlbmVyYXRvciwgaG9zdF9wb3J0CiAKICAgICBkZWYgdGVzdF9nZW5lcmF0ZV9iYXNlbGluZV9s
aW5rcyhzZWxmKToKICAgICAgICAgb3JpZ19wbGF0Zm9ybSA9IHN5cy5wbGF0Zm9ybQotICAgICAg
ICBvcmlnX2V4aXN0cyA9IG9zLnBhdGguZXhpc3RzCi0KICAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgIyBGSVhNRTogVXNlIHRoZSBtb2NrIGZpbGVzeXN0ZW0gaW5zdGVhZCBvZiBtb25rZXktcGF0
Y2hpbmcgc3lzLnBsYXRmb3JtCiAgICAgICAgICAgICBzeXMucGxhdGZvcm0gPSAnZGFyd2luJwot
ICAgICAgICAgICAgb3MucGF0aC5leGlzdHMgPSBsYW1iZGEgeDogVHJ1ZQotICAgICAgICAgICAg
Z2VuZXJhdG9yID0gc2VsZi5tYWtlX2dlbmVyYXRvcihbImZvby50eHQiXSkKKyAgICAgICAgICAg
IGdlbmVyYXRvciwgaG9zdF9wb3J0ID0gc2VsZi5tYWtlX2dlbmVyYXRvcihbImZvby50eHQiXSkK
KyAgICAgICAgICAgIGhvc3RfcG9ydC5fZmlsZXN5c3RlbS5leGlzdHMgPSBsYW1iZGEgeDogVHJ1
ZQogICAgICAgICAgICAgbGlua3MgPSBnZW5lcmF0b3IuX2dlbmVyYXRlX2Jhc2VsaW5lX2xpbmtz
KCJmb28iLCAiLnR4dCIsICJtYWMiKQogICAgICAgICAgICAgZXhwZWN0ZWRfbGlua3MgPSAnPHRk
IGFsaWduPWNlbnRlcj48YSBocmVmPSJmaWxlOi8vL3RtcC9mb28tZXhwZWN0ZWQtbWFjLW9sZC50
eHQiPmZvby1leHBlY3RlZC50eHQ8L2E+PC90ZD48dGQgYWxpZ249Y2VudGVyPjxhIGhyZWY9ImZp
bGU6Ly8vdG1wL2Zvby1leHBlY3RlZC1tYWMtbmV3LnR4dCI+Zm9vLWV4cGVjdGVkLnR4dDwvYT48
L3RkPjx0ZCBhbGlnbj1jZW50ZXI+PGEgaHJlZj0iZmlsZTovLy90bXAvZm9vLWV4cGVjdGVkLW1h
Yy1kaWZmLnR4dCI+RGlmZjwvYT48L3RkPicKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGlua3MsIGV4cGVjdGVkX2xpbmtzKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc3lz
LnBsYXRmb3JtID0gb3JpZ19wbGF0Zm9ybQotICAgICAgICAgICAgb3MucGF0aC5leGlzdHMgPSBv
cmlnX2V4aXN0cwogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79220</attachid>
            <date>2011-01-17 14:59:14 -0800</date>
            <delta_ts>2011-01-18 13:10:41 -0800</delta_ts>
            <desc>update w/ more feedback from Mihai, merge to tip of tree</desc>
            <filename>bug-52482-20110117145912.patch</filename>
            <type>text/plain</type>
            <size>35058</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5Yzgx
YzQ3M2Y3MTRjOTU2ZGIwOTczNGRlY2UwN2MyNjlmOTA3ZjJkLi42NmQ4MWY3YjFlMzNiOTc3OTQ3
YmMzOTZiMzE4NjBhMmU1MjFkOGYxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMDEtMTQgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXBkYXRlIHJlYmFzZWxpbmUtY2hyb21pdW0td2Via2l0LXRlc3Rz
IHRvIHVzZSBmaWxlc3lzdGVtIG9iamVjdHMKKyAgICAgICAgaW5zdGVhZCBvZiBkaXJlY3QgcmVm
ZXJlbmNlcyB0byBvcy5wYXRoLCBzaHV0aWwsIHRlbXBmaWxlLCBldGMuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBkb2Vzbid0IGNoYW5nZSBhbnl0aGluZywgYnV0IHdpbGwgYWxsb3cgc3Vic2VxdWVu
dAorICAgICAgICBwYXRjaGVzIHRvIGNoYW5nZSB0aGUgdW5pdCB0ZXN0cyB0byBubyBsb25nZXIg
dXNlIHRoZSByZWFsCisgICAgICAgIGZpbGVzeXN0ZW0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBh
ZGRzIGEgYnVuY2ggbW9yZSBtZXRob2RzIHRvIHRoZSBmaWxlc3lzdGVtIG9iamVjdCBhcworICAg
ICAgICB3ZWxsLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01MjQ4MgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2Zp
bGVzeXN0ZW0ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2Zp
bGVzeXN0ZW1fbW9jay5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvcXVldWVzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Jl
YmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0
ZXN0LnB5OgorCiAyMDExLTAxLTE3ICBUb255IEdlbnRpbGNvcmUgIDx0b255Z0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHkKaW5kZXgg
NTI3YjZiZGVhNWFkNjhkYTI1MzBmMzA2OWZlN2Y4N2JmMmViNmViMi4uNTNlOTc5NmYxNWUzNTdm
ZmYyMTkyNTI5ODQ0NDA3N2ZmZGIyNTc5YSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHkKQEAgLTQ0LDEwICs0NCwyNyBAQCBjbGFz
cyBGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgVW5sZXNzIG90aGVyd2lzZSBub3RlZCwgYWxsIHBh
dGhzIGFyZSBhbGxvd2VkIHRvIGJlIGVpdGhlciBhYnNvbHV0ZQogICAgIG9yIHJlbGF0aXZlLiIi
IgogCisgICAgZGVmIGJhc2VuYW1lKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gb3MucGF0
aC5iYXNlbmFtZShwYXRoKQorCisgICAgZGVmIGNvcHlmaWxlKHNlbGYsIHNvdXJjZSwgZGVzdGlu
YXRpb24pOgorICAgICAgICAiIiJDb3BpZXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGF0IHRo
ZSBnaXZlbiBwYXRoIHRvIHRoZSBkZXN0aW5hdGlvbgorICAgICAgICBwYXRoLiIiIgorICAgICAg
ICBzaHV0aWwuY29weWZpbGUoc291cmNlLCBkZXN0aW5hdGlvbikKKworICAgIGRlZiBkaXJuYW1l
KHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gb3MucGF0aC5kaXJuYW1lKHBhdGgpCisKICAg
ICBkZWYgZXhpc3RzKHNlbGYsIHBhdGgpOgogICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUg
cGF0aCBleGlzdHMgaW4gdGhlIGZpbGVzeXN0ZW0uIiIiCiAgICAgICAgIHJldHVybiBvcy5wYXRo
LmV4aXN0cyhwYXRoKQogCisgICAgZGVmIGZpbGVzX3VuZGVyKHNlbGYsIHBhdGgpOgorICAgICAg
ICAiIiJSZXR1cm4gdGhlIGxpc3Qgb2YgYWxsIGZpbGVzIHVuZGVyIHRoZSBnaXZlbiBwYXRoLiIi
IgorICAgICAgICByZXR1cm4gW3NlbGYuam9pbihwYXRoX3RvX2ZpbGUsIGZpbGVuYW1lKQorICAg
ICAgICAgICAgZm9yIChwYXRoX3RvX2ZpbGUsIF8sIGZpbGVuYW1lcykgaW4gb3Mud2FsayhwYXRo
KQorICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluIGZpbGVuYW1lc10KKwogICAgIGRlZiBpc2Zp
bGUoc2VsZiwgcGF0aCk6CiAgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBwYXRoIHJlZmVy
cyB0byBhIGZpbGUuIiIiCiAgICAgICAgIHJldHVybiBvcy5wYXRoLmlzZmlsZShwYXRoKQpAQCAt
NzEsMTQgKzg4LDIwIEBAIGNsYXNzIEZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICAgICAgdGhlIGRp
cmVjdG9yeSB3aWxsIHNlbGYtZGVsZXRlIGF0IHRoZSBlbmQgb2YgdGhlIGJsb2NrIChpZiB0aGUK
ICAgICAgICAgZGlyZWN0b3J5IGlzIGVtcHR5OyBub24tZW1wdHkgZGlyZWN0b3JpZXMgcmFpc2Ug
ZXJyb3JzKS4gVGhlCiAgICAgICAgIGRpcmVjdG9yeSBjYW4gYmUgc2FmZWx5IGRlbGV0ZWQgaW5z
aWRlIHRoZSBibG9jayBhcyB3ZWxsLCBpZiBzbwotICAgICAgICBkZXNpcmVkLiIiIgorICAgICAg
ICBkZXNpcmVkLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGUgb2JqZWN0IHJldHVybmVkIGlzIG5v
dCBhIHN0cmluZyBhbmQgZG9lcyBub3Qgc3VwcG9ydCBhbGwgb2YgdGhlIHN0cmluZworICAgICAg
ICBtZXRob2RzLiBJZiB5b3UgbmVlZCBhIHN0cmluZywgY29lcmNlIHRoZSBvYmplY3QgdG8gYSBz
dHJpbmcgYW5kIGdvIGZyb20gdGhlcmUuCisgICAgICAgICIiIgogICAgICAgICBjbGFzcyBUZW1w
b3JhcnlEaXJlY3Rvcnkob2JqZWN0KToKICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAq
Kmt3YXJncyk6CiAgICAgICAgICAgICAgICAgc2VsZi5fa3dhcmdzID0ga3dhcmdzCi0gICAgICAg
ICAgICAgICAgc2VsZi5fZGlyZWN0b3J5X3BhdGggPSBOb25lCisgICAgICAgICAgICAgICAgc2Vs
Zi5fZGlyZWN0b3J5X3BhdGggPSB0ZW1wZmlsZS5ta2R0ZW1wKCoqc2VsZi5fa3dhcmdzKQorCisg
ICAgICAgICAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5fZGlyZWN0b3J5X3BhdGgKIAogICAgICAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAg
ICAgICAgICAgICAgICBzZWxmLl9kaXJlY3RvcnlfcGF0aCA9IHRlbXBmaWxlLm1rZHRlbXAoKipz
ZWxmLl9rd2FyZ3MpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2RpcmVjdG9yeV9wYXRo
CiAKICAgICAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0eXBlLCB2YWx1ZSwgdHJhY2ViYWNr
KToKQEAgLTk4LDYgKzEyMSwzMCBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAg
ICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVFWElTVDoKICAgICAgICAgICAgICAgICByYWlzZQog
CisgICAgZGVmIG1vdmUoc2VsZiwgc3JjLCBkZXN0KToKKyAgICAgICAgc2h1dGlsLm1vdmUoc3Jj
LCBkZXN0KQorCisgICAgZGVmIG5vcm1wYXRoKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4g
b3MucGF0aC5ub3JtcGF0aChwYXRoKQorCisgICAgZGVmIG9wZW5fYmluYXJ5X3RlbXBmaWxlKHNl
bGYsIHN1ZmZpeCk6CisgICAgICAgICIiIkNyZWF0ZSwgb3BlbiwgYW5kIHJldHVybiBhIGJpbmFy
eSB0ZW1wIGZpbGUuIFJldHVybnMgYSB0dXBsZSBvZiB0aGUgZmlsZSBhbmQgdGhlIG5hbWUuIiIi
CisgICAgICAgIHRlbXBfZmQsIHRlbXBfbmFtZSA9IHRlbXBmaWxlLm1rc3RlbXAoc3VmZml4KQor
ICAgICAgICBmID0gb3MuZmRvcGVuKHRlbXBfZmQsICd3YicpCisgICAgICAgIHJldHVybiBmLCB0
ZW1wX25hbWUKKworICAgIGRlZiByZWFkX2JpbmFyeV9maWxlKHNlbGYsIHBhdGgpOgorICAgICAg
ICAiIiJSZXR1cm4gdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGF0IHRoZSBnaXZlbiBwYXRoIGFz
IGEgYnl0ZSBzdHJpbmcuIiIiCisgICAgICAgIHdpdGggZmlsZShwYXRoLCAncmInKSBhcyBmOgor
ICAgICAgICAgICAgcmV0dXJuIGYucmVhZCgpCisKKyAgICBkZWYgcmVhZF90ZXh0X2ZpbGUoc2Vs
ZiwgcGF0aCk6CisgICAgICAgICIiIlJldHVybiB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgYXQg
dGhlIGdpdmVuIHBhdGggYXMgYSBVbmljb2RlIHN0cmluZy4KKworICAgICAgICBUaGUgZmlsZSBp
cyByZWFkIGFzc3VtaW5nIGl0IGlzIGEgVVRGLTggZW5jb2RlZCBmaWxlIHdpdGggbm8gQk9NLiIi
IgorICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHBhdGgsICdyJywgJ3V0ZjgnKSBhcyBmOgorICAg
ICAgICAgICAgcmV0dXJuIGYucmVhZCgpCisKICAgICBjbGFzcyBfV2luZG93c0Vycm9yKGV4Y2Vw
dGlvbnMuT1NFcnJvcik6CiAgICAgICAgICIiIkZha2UgZXhjZXB0aW9uIGZvciBMaW51eCBhbmQg
TWFjLiIiIgogICAgICAgICBwYXNzCkBAIC0xMjQsOCArMTcxLDkgQEAgY2xhc3MgRmlsZVN5c3Rl
bShvYmplY3QpOgogICAgICAgICAgICAgICAgIGlmIHJldHJ5X3RpbWVvdXRfc2VjIDwgMDoKICAg
ICAgICAgICAgICAgICAgICAgcmFpc2UgZQogCi0gICAgZGVmIHJlbW92ZV90cmVlKHNlbGYsIHBh
dGgsIGlnbm9yZV9lcnJvcnM9RmFsc2UpOgotICAgICAgICBzaHV0aWwucm10cmVlKHBhdGgsIGln
bm9yZV9lcnJvcnMpCisgICAgZGVmIHJtdHJlZShzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiRGVs
ZXRlIHRoZSBkaXJlY3Rvcnkgcm9vdGVkIGF0IHBhdGgsIGVtcHR5IG9yIG5vLiIiIgorICAgICAg
ICBzaHV0aWwucm10cmVlKHBhdGgsIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKIAogICAgIGRlZiByZWFk
X2JpbmFyeV9maWxlKHNlbGYsIHBhdGgpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGNvbnRlbnRz
IG9mIHRoZSBmaWxlIGF0IHRoZSBnaXZlbiBwYXRoIGFzIGEgYnl0ZSBzdHJpbmcuIiIiCkBAIC0x
MzksNiArMTg3LDEwIEBAIGNsYXNzIEZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICAgICAgd2l0aCBj
b2RlY3Mub3BlbihwYXRoLCAncicsICd1dGY4JykgYXMgZjoKICAgICAgICAgICAgIHJldHVybiBm
LnJlYWQoKQogCisgICAgZGVmIHNwbGl0ZXh0KHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJSZXR1
cm4gKGRpcm5hbWUsIGJhc2VuYW1lICsgZXh0KS4iIiIKKyAgICAgICAgcmV0dXJuIG9zLnBhdGgu
c3BsaXRleHQocGF0aCkKKwogICAgIGRlZiB3cml0ZV9iaW5hcnlfZmlsZShzZWxmLCBwYXRoLCBj
b250ZW50cyk6CiAgICAgICAgICIiIldyaXRlIHRoZSBjb250ZW50cyB0byB0aGUgZmlsZSBhdCB0
aGUgZ2l2ZW4gbG9jYXRpb24uIiIiCiAgICAgICAgIHdpdGggZmlsZShwYXRoLCAnd2InKSBhcyBm
OgpAQCAtMTUwLDE0ICsyMDIsMyBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAg
IFRoZSBmaWxlIGlzIHdyaXR0ZW4gZW5jb2RlZCBhcyBVVEYtOCB3aXRoIG5vIEJPTS4iIiIKICAg
ICAgICAgd2l0aCBjb2RlY3Mub3BlbihwYXRoLCAndycsICd1dGY4JykgYXMgZjoKICAgICAgICAg
ICAgIGYud3JpdGUoY29udGVudHMpCi0KLSAgICBkZWYgY29weWZpbGUoc2VsZiwgc291cmNlLCBk
ZXN0aW5hdGlvbik6Ci0gICAgICAgICIiIkNvcGllcyB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUg
YXQgdGhlIGdpdmVuIHBhdGggdG8gdGhlIGRlc3RpbmF0aW9uCi0gICAgICAgIHBhdGguIiIiCi0g
ICAgICAgIHNodXRpbC5jb3B5ZmlsZShzb3VyY2UsIGRlc3RpbmF0aW9uKQotCi0gICAgZGVmIGZp
bGVzX3VuZGVyKHNlbGYsIHBhdGgpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGxpc3Qgb2YgYWxs
IGZpbGVzIHVuZGVyIHRoZSBnaXZlbiBwYXRoLiIiIgotICAgICAgICByZXR1cm4gW3NlbGYuam9p
bihwYXRoX3RvX2ZpbGUsIGZpbGVuYW1lKQotICAgICAgICAgICAgZm9yIChwYXRoX3RvX2ZpbGUs
IF8sIGZpbGVuYW1lcykgaW4gb3Mud2FsayhwYXRoKQotICAgICAgICAgICAgZm9yIGZpbGVuYW1l
IGluIGZpbGVuYW1lc10KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5CmluZGV4IDgwOWM0YzZmYmFhYmFjMDU2NTY1YTdk
NjNlNmNiYzkzNTNiOWIxZmMuLjEwYWNjM2I0MmRlYjUwZTU0OTMyYzFjNjdhNDcyM2RkZmU4MzI4
NGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxl
c3lzdGVtX21vY2sucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L2ZpbGVzeXN0ZW1fbW9jay5weQpAQCAtNDMsMTAgKzQzLDM5IEBAIGNsYXNzIE1vY2tGaWxlU3lz
dGVtKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgbm90IGV4aXN0LgogICAgICAgICAiIiIKICAg
ICAgICAgc2VsZi5maWxlcyA9IGZpbGVzIG9yIHt9CisgICAgICAgIHNlbGYuX2N1cnJlbnRfdG1w
bm8gPSAwCisKKyAgICBkZWYgX3JhaXNlX25vdF9mb3VuZChzZWxmLCBwYXRoKToKKyAgICAgICAg
cmFpc2UgSU9FcnJvcihlcnJuby5FTk9FTlQsIHBhdGgsIG9zLnN0cmVycm9yKGVycm5vLkVOT0VO
VCkpCisKKyAgICBkZWYgX3NwbGl0KHNlbGYsIHBhdGgpOgorICAgICAgICBpZHggPSBwYXRoLnJm
aW5kKCcvJykKKyAgICAgICAgcmV0dXJuIChwYXRoWzA6aWR4XSwgcGF0aFtpZHggKyAxOl0pCisK
KyAgICBkZWYgYmFzZW5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9zcGxpdChwYXRo
KVsxXQorCisgICAgZGVmIGNvcHlmaWxlKHNlbGYsIHNvdXJjZSwgZGVzdGluYXRpb24pOgorICAg
ICAgICBpZiBub3Qgc2VsZi5leGlzdHMoc291cmNlKToKKyAgICAgICAgICAgIHNlbGYuX3JhaXNl
X25vdF9mb3VuZChzb3VyY2UpCisgICAgICAgIGlmIHNlbGYuaXNkaXIoc291cmNlKToKKyAgICAg
ICAgICAgIHJhaXNlIElPRXJyb3IoZXJybm8uRUlTRElSLCBzb3VyY2UsIG9zLnN0cmVycm9yKGVy
cm5vLklTRElSKSkKKyAgICAgICAgaWYgc2VsZi5pc2RpcihkZXN0aW5hdGlvbik6CisgICAgICAg
ICAgICByYWlzZSBJT0Vycm9yKGVycm5vLkVJU0RJUiwgZGVzdGluYXRpb24sIG9zLnN0cmVycm9y
KGVycm5vLklTRElSKSkKKworICAgICAgICBzZWxmLmZpbGVzW2Rlc3RpbmF0aW9uXSA9IHNlbGYu
ZmlsZXNbc291cmNlXQorCisgICAgZGVmIGRpcm5hbWUoc2VsZiwgcGF0aCk6CisgICAgICAgIHJl
dHVybiBzZWxmLl9zcGxpdChwYXRoKVswXQogCiAgICAgZGVmIGV4aXN0cyhzZWxmLCBwYXRoKToK
ICAgICAgICAgcmV0dXJuIHNlbGYuaXNmaWxlKHBhdGgpIG9yIHNlbGYuaXNkaXIocGF0aCkKIAor
ICAgIGRlZiBmaWxlc191bmRlcihzZWxmLCBwYXRoKToKKyAgICAgICAgaWYgbm90IHBhdGguZW5k
c3dpdGgoJy8nKToKKyAgICAgICAgICAgIHBhdGggKz0gJy8nCisgICAgICAgIHJldHVybiBbZmls
ZSBmb3IgZmlsZSBpbiBzZWxmLmZpbGVzIGlmIGZpbGUuc3RhcnRzd2l0aChwYXRoKV0KKwogICAg
IGRlZiBpc2ZpbGUoc2VsZiwgcGF0aCk6CiAgICAgICAgIHJldHVybiBwYXRoIGluIHNlbGYuZmls
ZXMgYW5kIHNlbGYuZmlsZXNbcGF0aF0gaXMgbm90IE5vbmUKIApAQCAtODAsNDIgKzEwOSwxMDUg
QEAgY2xhc3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgZmls
ZXMuYXBwZW5kKHJlbWFpbmluZykKICAgICAgICAgcmV0dXJuIGRpcnMgKyBmaWxlcwogCisgICAg
ZGVmIF9ta3RlbXAoc2VsZiwgc3VmZml4PScnLCBwcmVmaXg9J3RtcCcsIGRpcj1Ob25lLCAqKmt3
YXJncyk6CisgICAgICAgIGlmIGRpciBpcyBOb25lOgorICAgICAgICAgICAgZGlyID0gJy9fX2lt
X3RtcCcKKyAgICAgICAgY3Vybm8gPSBzZWxmLmN1cnJlbnRfdG1wbm8KKyAgICAgICAgc2VsZi5j
dXJyZW50X3RtcG5vICs9IDEKKyAgICAgICAgcmV0dXJuIHNlbGYuam9pbihkaXIsICIlc18ldV8l
cyIgJSAocHJlZml4LCBjdXJubywgc3VmZml4KSkKKworICAgIGRlZiBta2R0ZW1wKHNlbGYsICoq
a3dhcmdzKToKKyAgICAgICAgY2xhc3MgVGVtcG9yYXJ5RGlyZWN0b3J5KG9iamVjdCk6CisgICAg
ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZnMsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAg
ICBzZWxmLl9rd2FyZ3MgPSBrd2FyZ3MKKyAgICAgICAgICAgICAgICBzZWxmLl9maWxlc3lzdGVt
ID0gZnMKKyAgICAgICAgICAgICAgICBzZWxmLl9kaXJlY3RvcnlfcGF0aCA9IGZzLl9ta3RlbXAo
Kiprd2FyZ3MpCisgICAgICAgICAgICAgICAgZnMubWF5YmVfbWFrZV9kaXJlY3Rvcnkoc2VsZi5f
ZGlyZWN0b3J5X3BhdGgpCisKKyAgICAgICAgICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAg
ICAgICAgICAgIHJldHVybiBzZWxmLl9kaXJlY3RvcnlfcGF0aAorCisgICAgICAgICAgICBkZWYg
X19lbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9kaXJlY3Rvcnlf
cGF0aAorCisgICAgICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNl
YmFjayk6CisgICAgICAgICAgICAgICAgIyBPbmx5IHNlbGYtZGVsZXRlIGlmIG5lY2Vzc2FyeS4K
KworICAgICAgICAgICAgICAgICMgRklYTUU6IFNob3VsZCB3ZSBkZWxldGUgbm9uLWVtcHR5IGRp
cmVjdG9yaWVzPworICAgICAgICAgICAgICAgIGlmIHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKHNl
bGYuX2RpcmVjdG9yeV9wYXRoKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3Rl
bS5ybWRpcihzZWxmLl9kaXJlY3RvcnlfcGF0aCkKKworICAgICAgICByZXR1cm4gVGVtcG9yYXJ5
RGlyZWN0b3J5KGZzPXNlbGYsICoqa3dhcmdzKQorCiAgICAgZGVmIG1heWJlX21ha2VfZGlyZWN0
b3J5KHNlbGYsICpwYXRoKToKICAgICAgICAgIyBGSVhNRTogSW1wbGVtZW50IHN1Y2ggdGhhdCBz
dWJzZXF1ZW50IGNhbGxzIHRvIGlzZGlyKCkgd29yaz8KICAgICAgICAgcGFzcwogCisgICAgZGVm
IG1vdmUoc2VsZiwgc3JjLCBkc3QpOgorICAgICAgICBpZiBzZWxmLmZpbGVzW3NyY10gaXMgTm9u
ZToKKyAgICAgICAgICAgIHNlbGYuX3JhaXNlX25vdF9mb3VuZChzcmMpCisgICAgICAgIHNlbGYu
ZmlsZXNbZHN0XSA9IHNlbGYuZmlsZXNbc3JjXQorICAgICAgICBzZWxmLmZpbGVzW3NyY10gPSBO
b25lCisKKyAgICBkZWYgbm9ybXBhdGgoc2VsZiwgcGF0aCk6CisgICAgICAgIHJldHVybiBwYXRo
CisKKyAgICBkZWYgb3Blbl9iaW5hcnlfdGVtcGZpbGUoc2VsZiwgc3VmZml4KToKKyAgICAgICAg
cGF0aCA9IHNlbGYuX21rdGVtcChzdWZmaXgpCisgICAgICAgIHJldHVybiBXcml0YWJsZUZpbGVP
YmplY3Qoc2VsZiwgcGF0aCksIHBhdGgKKwogICAgIGRlZiByZWFkX3RleHRfZmlsZShzZWxmLCBw
YXRoKToKICAgICAgICAgcmV0dXJuIHNlbGYucmVhZF9iaW5hcnlfZmlsZShwYXRoKQogCiAgICAg
ZGVmIHJlYWRfYmluYXJ5X2ZpbGUoc2VsZiwgcGF0aCk6CiAgICAgICAgIGlmIHBhdGggaW4gc2Vs
Zi5maWxlczoKICAgICAgICAgICAgIGlmIHNlbGYuZmlsZXNbcGF0aF0gaXMgTm9uZToKLSAgICAg
ICAgICAgICAgICByYWlzZSBJT0Vycm9yKGVycm5vLkVOT0VOVCwgcGF0aCwgb3Muc3RyZXJyb3Io
ZXJybm8uRU5PRU5UKSkKKyAgICAgICAgICAgICAgICBzZWxmLl9yYWlzZV9ub3RfZm91bmQocGF0
aCkKICAgICAgICAgICAgIHJldHVybiBzZWxmLmZpbGVzW3BhdGhdCiAKKyAgICBkZWYgcmVtb3Zl
KHNlbGYsIHBhdGgpOgorICAgICAgICBpZiBzZWxmLmZpbGVzW3BhdGhdIGlzIE5vbmU6CisgICAg
ICAgICAgICBzZWxmLl9yYWlzZV9ub3RfZm91bmQocGF0aCkKKyAgICAgICAgc2VsZi5maWxlc1tw
YXRoXSA9IE5vbmUKKworICAgIGRlZiBybXRyZWUoc2VsZiwgcGF0aCk6CisgICAgICAgIGlmIG5v
dCBwYXRoLmVuZHN3aXRoKCcvJyk6CisgICAgICAgICAgICBwYXRoICs9ICcvJworCisgICAgICAg
IGZvciBmIGluIHNlbGYuZmlsZXM6CisgICAgICAgICAgICBpZiBmLnN0YXJ0c3dpdGgocGF0aCk6
CisgICAgICAgICAgICAgICAgc2VsZi5maWxlc1tmXSA9IE5vbmUKKworICAgIGRlZiBzcGxpdGV4
dChzZWxmLCBwYXRoKToKKyAgICAgICAgaWR4ID0gcGF0aC5yZmluZCgnLicpCisgICAgICAgIGlm
IGlkeCA9PSAtMToKKyAgICAgICAgICAgIGlkeCA9IDAKKyAgICAgICAgcmV0dXJuIChwYXRoWzA6
aWR4XSwgcGF0aFtpZHg6XSkKKwogICAgIGRlZiB3cml0ZV90ZXh0X2ZpbGUoc2VsZiwgcGF0aCwg
Y29udGVudHMpOgogICAgICAgICByZXR1cm4gc2VsZi53cml0ZV9iaW5hcnlfZmlsZShwYXRoLCBj
b250ZW50cykKIAogICAgIGRlZiB3cml0ZV9iaW5hcnlfZmlsZShzZWxmLCBwYXRoLCBjb250ZW50
cyk6CiAgICAgICAgIHNlbGYuZmlsZXNbcGF0aF0gPSBjb250ZW50cwogCi0gICAgZGVmIGNvcHlm
aWxlKHNlbGYsIHNvdXJjZSwgZGVzdGluYXRpb24pOgotICAgICAgICBpZiBub3Qgc2VsZi5leGlz
dHMoc291cmNlKToKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoZXJybm8uRU5PRU5ULCBzb3Vy
Y2UsIG9zLnN0cmVycm9yKGVycm5vLkVOT0VOVCkpCi0gICAgICAgIGlmIHNlbGYuaXNkaXIoc291
cmNlKToKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoZXJybm8uRUlTRElSLCBzb3VyY2UsIG9z
LnN0cmVycm9yKGVycm5vLklTRElSKSkKLSAgICAgICAgaWYgc2VsZi5pc2RpcihkZXN0aW5hdGlv
bik6Ci0gICAgICAgICAgICByYWlzZSBJT0Vycm9yKGVycm5vLkVJU0RJUiwgZGVzdGluYXRpb24s
IG9zLnN0cmVycm9yKGVycm5vLklTRElSKSkKIAotICAgICAgICBzZWxmLmZpbGVzW2Rlc3RpbmF0
aW9uXSA9IHNlbGYuZmlsZXNbc291cmNlXQorY2xhc3MgV3JpdGFibGVGaWxlT2JqZWN0KG9iamVj
dCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZzLCBwYXRoLCBhcHBlbmQ9RmFsc2UsIGVuY29k
aW5nPU5vbmUpOgorICAgICAgICBzZWxmLmZzID0gZnMKKyAgICAgICAgc2VsZi5uYW1lID0gbmFt
ZQorICAgICAgICBzZWxmLmNsb3NlZCA9IEZhbHNlCisgICAgICAgIGlmIHBhdGggbm90IGluIHNl
bGYuZnMuZmlsZXMgb3Igbm90IGFwcGVuZDoKKyAgICAgICAgICAgIHNlbGYuZnMuZmlsZXNbcGF0
aF0gPSAiIgogCi0gICAgZGVmIGZpbGVzX3VuZGVyKHNlbGYsIHBhdGgpOgotICAgICAgICBpZiBu
b3QgcGF0aC5lbmRzd2l0aCgnLycpOgotICAgICAgICAgICAgcGF0aCArPSAnLycKLSAgICAgICAg
cmV0dXJuIFtmaWxlIGZvciBmaWxlIGluIHNlbGYuZmlsZXMgaWYgZmlsZS5zdGFydHN3aXRoKHBh
dGgpXQorICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCiAKLSAg
ICBkZWYgcmVtb3ZlKHNlbGYsIHBhdGgpOgotICAgICAgICBkZWwgc2VsZi5maWxlc1twYXRoXQor
ICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0eXBlLCB2YWx1ZSwgdHJhY2ViYWNrKToKKyAgICAgICAg
c2VsZi5jbG9zZSgpCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgIHNlbGYuY2xvc2Vk
ID0gVHJ1ZQogCi0gICAgZGVmIHJlbW92ZV90cmVlKHNlbGYsIHBhdGgsIGlnbm9yZV9lcnJvcnM9
RmFsc2UpOgotICAgICAgICBzZWxmLmZpbGVzID0gW2ZpbGUgZm9yIGZpbGUgaW4gc2VsZi5maWxl
cyBpZiBub3QgZmlsZS5zdGFydHN3aXRoKHBhdGgpXQorICAgIGRlZiB3cml0ZShzZWxmLCBzdHIp
OgorICAgICAgICBzZWxmLmZzLmZpbGVzW3NlbGYubmFtZV0gKz0gc3RyCisgICAgICAgIHNlbGYu
ZnMud3JpdHRlbl9maWxlc1tzZWxmLm5hbWVdID0gc2VsZi5mcy5maWxlc1tzZWxmLm5hbWVdCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5l
X2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5CmluZGV4IDRkOGI3Yzlm
NWEyYmQ0Yzc0ZWQ1NmZkNjMxMmJhMTk1YzE2YzhhNmQuLjc2NDFmNTVkMmZhMjY2ZDM1ZWQxNjIx
NDYzZmEzNzZlMjFhOTQ5NTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0
X3Rlc3RzLnB5CkBAIC00MSwyNiArNDEsMTggQEAgVGhlIHNjcmlwdCBkb2VzIHRoZSBmb2xsb3dp
bmcgZm9yIGVhY2ggcGxhdGZvcm0gc3BlY2lmaWVkOgogQXQgdGhlIGVuZCwgdGhlIHNjcmlwdCBn
ZW5lcmF0ZXMgYSBodG1sIHRoYXQgY29tcGFyZXMgb2xkIGFuZCBuZXcgYmFzZWxpbmVzLgogIiIi
CiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLQotaW1wb3J0IGNvZGVj
cwogaW1wb3J0IGNvcHkKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3B0cGFyc2UKLWltcG9ydCBv
cwogaW1wb3J0IHJlCi1pbXBvcnQgc2h1dGlsCi1pbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5
cwotaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdGltZQogaW1wb3J0IHVybGxpYgogaW1wb3J0IHpp
cGZpbGUKIAorZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQgaW1wb3J0IHNjbQogZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBwYXRoCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0gaW1wb3J0IHVzZXIKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUg
aW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKLWltcG9ydCB3ZWJraXRweS5jb21tb24uY2hl
Y2tvdXQuc2NtIGFzIHNjbQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBp
bXBvcnQgU2NyaXB0RXJyb3IKIAogaW1wb3J0IHBvcnQKIGZyb20gbGF5b3V0X3BhY2thZ2UgaW1w
b3J0IHRlc3RfZXhwZWN0YXRpb25zCkBAIC0xMDAsNDEgKzkyLDM1IEBAIGRlZiBsb2dfZGFzaGVk
X3N0cmluZyh0ZXh0LCBwbGF0Zm9ybSwgbG9nZ2luZ19sZXZlbD1sb2dnaW5nLklORk8pOgogICAg
ICAgICBfbG9nLmluZm8obXNnKQogCiAKLWRlZiBzZXR1cF9odG1sX2RpcmVjdG9yeShodG1sX2Rp
cmVjdG9yeSk6CitkZWYgc2V0dXBfaHRtbF9kaXJlY3RvcnkoZmlsZXN5c3RlbSwgcGFyZW50X2Rp
cmVjdG9yeSk6CiAgICAgIiIiU2V0dXAgdGhlIGRpcmVjdG9yeSB0byBzdG9yZSBodG1sIHJlc3Vs
dHMuCiAKLSAgICAgICBBbGwgaHRtbCByZWxhdGVkIGZpbGVzIGFyZSBzdG9yZWQgaW4gdGhlICJy
ZWJhc2VsaW5lX2h0bWwiIHN1YmRpcmVjdG9yeS4KLQotICAgIEFyZ3M6Ci0gICAgICBodG1sX2Rp
cmVjdG9yeTogcGFyZW50IGRpcmVjdG9yeSB0aGF0IHN0b3JlcyB0aGUgcmViYXNlbGluaW5nIHJl
c3VsdHMuCi0gICAgICAgICAgICAgICAgICAgICAgSWYgTm9uZSwgYSB0ZW1wIGRpcmVjdG9yeSBp
cyBjcmVhdGVkLgotCi0gICAgUmV0dXJuczoKLSAgICAgIHRoZSBkaXJlY3RvcnkgdGhhdCBzdG9y
ZXMgdGhlIGh0bWwgcmVsYXRlZCByZWJhc2VsaW5pbmcgcmVzdWx0cy4KKyAgICAgICBBbGwgaHRt
bCByZWxhdGVkIGZpbGVzIGFyZSBzdG9yZWQgaW4gdGhlICJyZWJhc2VsaW5lX2h0bWwiIHN1YmRp
cmVjdG9yeSBvZgorICAgICAgIHRoZSBwYXJlbnQgZGlyZWN0b3J5LiBUaGUgcGF0aCB0byB0aGUg
Y3JlYXRlZCBkaXJlY3RvcnkgaXMgcmV0dXJuZWQuCiAgICAgIiIiCiAKLSAgICBpZiBub3QgaHRt
bF9kaXJlY3Rvcnk6Ci0gICAgICAgIGh0bWxfZGlyZWN0b3J5ID0gdGVtcGZpbGUubWtkdGVtcCgp
Ci0gICAgZWxpZiBub3Qgb3MucGF0aC5leGlzdHMoaHRtbF9kaXJlY3RvcnkpOgotICAgICAgICBv
cy5ta2RpcihodG1sX2RpcmVjdG9yeSkKKyAgICBpZiBub3QgcGFyZW50X2RpcmVjdG9yeToKKyAg
ICAgICAgcGFyZW50X2RpcmVjdG9yeSA9IHN0cihmaWxlc3lzdGVtLm1rZHRlbXAoKSkKKyAgICBl
bHNlOgorICAgICAgICBmaWxlc3lzdGVtLm1heWJlX21ha2VfZGlyZWN0b3J5KHBhcmVudF9kaXJl
Y3RvcnkpCiAKLSAgICBodG1sX2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbihodG1sX2RpcmVjdG9y
eSwgJ3JlYmFzZWxpbmVfaHRtbCcpCisgICAgaHRtbF9kaXJlY3RvcnkgPSBmaWxlc3lzdGVtLmpv
aW4ocGFyZW50X2RpcmVjdG9yeSwgJ3JlYmFzZWxpbmVfaHRtbCcpCiAgICAgX2xvZy5pbmZvKCdI
dG1sIGRpcmVjdG9yeTogIiVzIicsIGh0bWxfZGlyZWN0b3J5KQogCi0gICAgaWYgb3MucGF0aC5l
eGlzdHMoaHRtbF9kaXJlY3RvcnkpOgotICAgICAgICBzaHV0aWwucm10cmVlKGh0bWxfZGlyZWN0
b3J5LCBUcnVlKQotICAgICAgICBfbG9nLmluZm8oJ0RlbGV0ZWQgZmlsZSBhdCBodG1sIGRpcmVj
dG9yeTogIiVzIicsIGh0bWxfZGlyZWN0b3J5KQorICAgIGlmIGZpbGVzeXN0ZW0uZXhpc3RzKGh0
bWxfZGlyZWN0b3J5KToKKyAgICAgICAgZmlsZXN5c3RlbS5ybXRyZWUoaHRtbF9kaXJlY3Rvcnkp
CisgICAgICAgIF9sb2cuaW5mbygnRGVsZXRlZCBodG1sIGRpcmVjdG9yeTogIiVzIicsIGh0bWxf
ZGlyZWN0b3J5KQogCi0gICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGh0bWxfZGlyZWN0b3J5KToK
LSAgICAgICAgb3MubWtkaXIoaHRtbF9kaXJlY3RvcnkpCisgICAgZmlsZXN5c3RlbS5tYXliZV9t
YWtlX2RpcmVjdG9yeShodG1sX2RpcmVjdG9yeSkKICAgICByZXR1cm4gaHRtbF9kaXJlY3RvcnkK
IAogCi1kZWYgZ2V0X3Jlc3VsdF9maWxlX2Z1bGxwYXRoKGh0bWxfZGlyZWN0b3J5LCBiYXNlbGlu
ZV9maWxlbmFtZSwgcGxhdGZvcm0sCitkZWYgZ2V0X3Jlc3VsdF9maWxlX2Z1bGxwYXRoKGZpbGVz
eXN0ZW0sIGh0bWxfZGlyZWN0b3J5LCBiYXNlbGluZV9maWxlbmFtZSwgcGxhdGZvcm0sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF90eXBlKToKICAgICAiIiJHZXQgZnVsbCBw
YXRoIG9mIHRoZSBiYXNlbGluZSByZXN1bHQgZmlsZS4KIAogICAgIEFyZ3M6CisgICAgICBmaWxl
c3lzdGVtOiB3cmFwcGVyIG9iamVjdAogICAgICAgaHRtbF9kaXJlY3Rvcnk6IGRpcmVjdG9yeSB0
aGF0IHN0b3JlcyB0aGUgaHRtbCByZWxhdGVkIGZpbGVzLgogICAgICAgYmFzZWxpbmVfZmlsZW5h
bWU6IG5hbWUgb2YgdGhlIGJhc2VsaW5lIGZpbGUuCiAgICAgICBwbGF0Zm9ybTogd2luLCBsaW51
eCBvciBtYWMKQEAgLTE0NCw5ICsxMzAsOSBAQCBkZWYgZ2V0X3Jlc3VsdF9maWxlX2Z1bGxwYXRo
KGh0bWxfZGlyZWN0b3J5LCBiYXNlbGluZV9maWxlbmFtZSwgcGxhdGZvcm0sCiAgICAgICBGdWxs
IHBhdGggb2YgdGhlIGJhc2VsaW5lIGZpbGUgZm9yIHJlYmFzZWxpbmluZyByZXN1bHQgY29tcGFy
aXNvbi4KICAgICAiIiIKIAotICAgIGJhc2UsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoYmFzZWxp
bmVfZmlsZW5hbWUpCisgICAgYmFzZSwgZXh0ID0gZmlsZXN5c3RlbS5zcGxpdGV4dChiYXNlbGlu
ZV9maWxlbmFtZSkKICAgICByZXN1bHRfZmlsZW5hbWUgPSAnJXMtJXMtJXMlcycgJSAoYmFzZSwg
cGxhdGZvcm0sIHJlc3VsdF90eXBlLCBleHQpCi0gICAgZnVsbHBhdGggPSBvcy5wYXRoLmpvaW4o
aHRtbF9kaXJlY3RvcnksIHJlc3VsdF9maWxlbmFtZSkKKyAgICBmdWxscGF0aCA9IGZpbGVzeXN0
ZW0uam9pbihodG1sX2RpcmVjdG9yeSwgcmVzdWx0X2ZpbGVuYW1lKQogICAgIF9sb2cuZGVidWco
JyAgUmVzdWx0IGZpbGUgZnVsbCBwYXRoOiAiJXMiLicsIGZ1bGxwYXRoKQogICAgIHJldHVybiBm
dWxscGF0aAogCkBAIC0xNjgsNiArMTU0LDcgQEAgY2xhc3MgUmViYXNlbGluZXIob2JqZWN0KToK
ICAgICAgICAgc2VsZi5fcGxhdGZvcm0gPSBwbGF0Zm9ybQogICAgICAgICBzZWxmLl9vcHRpb25z
ID0gb3B0aW9ucwogICAgICAgICBzZWxmLl9wb3J0ID0gcnVubmluZ19wb3J0CisgICAgICAgIHNl
bGYuX2ZpbGVzeXN0ZW0gPSBydW5uaW5nX3BvcnQuX2ZpbGVzeXN0ZW0KICAgICAgICAgc2VsZi5f
dGFyZ2V0X3BvcnQgPSB0YXJnZXRfcG9ydAogICAgICAgICBzZWxmLl9yZWJhc2VsaW5lX3BvcnQg
PSBwb3J0LmdldCgKICAgICAgICAgICAgIHNlbGYuX3RhcmdldF9wb3J0LnRlc3RfcGxhdGZvcm1f
bmFtZV90b19uYW1lKHBsYXRmb3JtKSwgb3B0aW9ucykKQEAgLTM3MCw3ICszNTcsNyBAQCBjbGFz
cyBSZWJhc2VsaW5lcihvYmplY3QpOgogCiAgICAgICAgICAgICBmb3VuZCA9IEZhbHNlCiAgICAg
ICAgICAgICBzY21fZXJyb3IgPSBGYWxzZQotICAgICAgICAgICAgdGVzdF9iYXNlbmFtZSA9IG9z
LnBhdGguc3BsaXRleHQodGVzdClbMF0KKyAgICAgICAgICAgIHRlc3RfYmFzZW5hbWUgPSBzZWxm
Ll9maWxlc3lzdGVtLnNwbGl0ZXh0KHRlc3QpWzBdCiAgICAgICAgICAgICBmb3Igc3VmZml4IGlu
IEJBU0VMSU5FX1NVRkZJWEVTOgogICAgICAgICAgICAgICAgIGFyY2hpdmVfdGVzdF9uYW1lID0g
KCdsYXlvdXQtdGVzdC1yZXN1bHRzLyVzLWFjdHVhbCVzJyAlCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICh0ZXN0X2Jhc2VuYW1lLCBzdWZmaXgpKQpAQCAtMzg1LDE1ICsz
NzIsMTQgQEAgY2xhc3MgUmViYXNlbGluZXIob2JqZWN0KToKIAogICAgICAgICAgICAgICAgICMg
RXh0cmFjdCBuZXcgYmFzZWxpbmUgZnJvbSBhcmNoaXZlIGFuZCBzYXZlIGl0IHRvIGEgdGVtcCBm
aWxlLgogICAgICAgICAgICAgICAgIGRhdGEgPSB6aXBfZmlsZS5yZWFkKGFyY2hpdmVfdGVzdF9u
YW1lKQotICAgICAgICAgICAgICAgIHRlbXBfZmQsIHRlbXBfbmFtZSA9IHRlbXBmaWxlLm1rc3Rl
bXAoc3VmZml4KQotICAgICAgICAgICAgICAgIGYgPSBvcy5mZG9wZW4odGVtcF9mZCwgJ3diJykK
LSAgICAgICAgICAgICAgICBmLndyaXRlKGRhdGEpCi0gICAgICAgICAgICAgICAgZi5jbG9zZSgp
CisgICAgICAgICAgICAgICAgdGVtcGZpbGUsIHRlbXBfbmFtZSA9IHNlbGYuX2ZpbGVzeXN0ZW0u
b3Blbl9iaW5hcnlfdGVtcGZpbGUoc3VmZml4KQorICAgICAgICAgICAgICAgIHRlbXBmaWxlLndy
aXRlKGRhdGEpCisgICAgICAgICAgICAgICAgdGVtcGZpbGUuY2xvc2UoKQogCiAgICAgICAgICAg
ICAgICAgZXhwZWN0ZWRfZmlsZW5hbWUgPSAnJXMtZXhwZWN0ZWQlcycgJSAodGVzdF9iYXNlbmFt
ZSwgc3VmZml4KQotICAgICAgICAgICAgICAgIGV4cGVjdGVkX2Z1bGxwYXRoID0gb3MucGF0aC5q
b2luKAorICAgICAgICAgICAgICAgIGV4cGVjdGVkX2Z1bGxwYXRoID0gc2VsZi5fZmlsZXN5c3Rl
bS5qb2luKAogICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWJhc2VsaW5lX3BvcnQuYmFzZWxp
bmVfcGF0aCgpLCBleHBlY3RlZF9maWxlbmFtZSkKLSAgICAgICAgICAgICAgICBleHBlY3RlZF9m
dWxscGF0aCA9IG9zLnBhdGgubm9ybXBhdGgoZXhwZWN0ZWRfZnVsbHBhdGgpCisgICAgICAgICAg
ICAgICAgZXhwZWN0ZWRfZnVsbHBhdGggPSBzZWxmLl9maWxlc3lzdGVtLm5vcm1wYXRoKGV4cGVj
dGVkX2Z1bGxwYXRoKQogICAgICAgICAgICAgICAgIF9sb2cuZGVidWcoJyAgRXhwZWN0ZWQgZmls
ZSBmdWxsIHBhdGg6ICIlcyInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRf
ZnVsbHBhdGgpCiAKQEAgLTQwNywxNiArMzkzLDEzIEBAIGNsYXNzIFJlYmFzZWxpbmVyKG9iamVj
dCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGxhdGZvcm0pOgotICAgICAgICAgICAg
ICAgICAgICBvcy5yZW1vdmUodGVtcF9uYW1lKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9m
aWxlc3lzdGVtLnJlbW92ZSh0ZW1wX25hbWUpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Rl
bGV0ZV9iYXNlbGluZShleHBlY3RlZF9mdWxscGF0aCkKICAgICAgICAgICAgICAgICAgICAgY29u
dGludWUKIAotICAgICAgICAgICAgICAgICMgQ3JlYXRlIHRoZSBuZXcgYmFzZWxpbmUgZGlyZWN0
b3J5IGlmIGl0IGRvZXNuJ3QgYWxyZWFkeQotICAgICAgICAgICAgICAgICMgZXhpc3QuCi0gICAg
ICAgICAgICAgICAgc2VsZi5fcG9ydC5tYXliZV9tYWtlX2RpcmVjdG9yeSgKLSAgICAgICAgICAg
ICAgICAgICAgb3MucGF0aC5kaXJuYW1lKGV4cGVjdGVkX2Z1bGxwYXRoKSkKKyAgICAgICAgICAg
ICAgICBzZWxmLl9maWxlc3lzdGVtLm1heWJlX21ha2VfZGlyZWN0b3J5KHNlbGYuX2ZpbGVzeXN0
ZW0uZGlybmFtZShleHBlY3RlZF9mdWxscGF0aCkpCiAKLSAgICAgICAgICAgICAgICBzaHV0aWwu
bW92ZSh0ZW1wX25hbWUsIGV4cGVjdGVkX2Z1bGxwYXRoKQorICAgICAgICAgICAgICAgIHNlbGYu
X2ZpbGVzeXN0ZW0ubW92ZSh0ZW1wX25hbWUsIGV4cGVjdGVkX2Z1bGxwYXRoKQogCiAgICAgICAg
ICAgICAgICAgaWYgMCAhPSBzZWxmLl9zY20uYWRkKGV4cGVjdGVkX2Z1bGxwYXRoLCByZXR1cm5f
ZXhpdF9jb2RlPVRydWUpOgogICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBwcmludCBkZXRh
aWxlZCBkaWFnbm9zZSBtZXNzYWdlcwpAQCAtNDM2LDcgKzQxOSw3IEBAIGNsYXNzIFJlYmFzZWxp
bmVyKG9iamVjdCk6CiAgICAgICAgICAgICB0ZXN0X25vICs9IDEKIAogICAgICAgICB6aXBfZmls
ZS5jbG9zZSgpCi0gICAgICAgIG9zLnJlbW92ZShhcmNoaXZlX2ZpbGUpCisgICAgICAgIHNlbGYu
X2ZpbGVzeXN0ZW0ucmVtb3ZlKGFyY2hpdmVfZmlsZSkKIAogICAgICAgICByZXR1cm4gc2VsZi5f
cmViYXNlbGluZWRfdGVzdHMKIApAQCAtNDU4LDIxICs0NDEsMTcgQEAgY2xhc3MgUmViYXNlbGlu
ZXIob2JqZWN0KToKICAgICAgICAgICBUcnVlIGlmIHRoZSBiYXNlbGluZSBpcyB1bm5lY2Vzc2Fy
eS4KICAgICAgICAgICBGYWxzZSBvdGhlcndpc2UuCiAgICAgICAgICIiIgotICAgICAgICB0ZXN0
X2ZpbGVwYXRoID0gb3MucGF0aC5qb2luKHNlbGYuX3RhcmdldF9wb3J0LmxheW91dF90ZXN0c19k
aXIoKSwKKyAgICAgICAgdGVzdF9maWxlcGF0aCA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxm
Ll90YXJnZXRfcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdCkKICAgICAgICAgYWxsX2Jhc2VsaW5lcyA9IHNlbGYuX3JlYmFz
ZWxpbmVfcG9ydC5leHBlY3RlZF9iYXNlbGluZXMoCiAgICAgICAgICAgICB0ZXN0X2ZpbGVwYXRo
LCBzdWZmaXgsIFRydWUpCiAgICAgICAgIGZvciAoZmFsbGJhY2tfZGlyLCBmYWxsYmFja19maWxl
KSBpbiBhbGxfYmFzZWxpbmVzOgogICAgICAgICAgICAgaWYgZmFsbGJhY2tfZGlyIGFuZCBmYWxs
YmFja19maWxlOgotICAgICAgICAgICAgICAgIGZhbGxiYWNrX2Z1bGxwYXRoID0gb3MucGF0aC5u
b3JtcGF0aCgKLSAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGZhbGxiYWNrX2Rpciwg
ZmFsbGJhY2tfZmlsZSkpCisgICAgICAgICAgICAgICAgZmFsbGJhY2tfZnVsbHBhdGggPSBzZWxm
Ll9maWxlc3lzdGVtLm5vcm1wYXRoKAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9maWxlc3lz
dGVtLmpvaW4oZmFsbGJhY2tfZGlyLCBmYWxsYmFja19maWxlKSkKICAgICAgICAgICAgICAgICBp
ZiBmYWxsYmFja19mdWxscGF0aC5sb3dlcigpICE9IGJhc2VsaW5lX3BhdGgubG93ZXIoKToKLSAg
ICAgICAgICAgICAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihuZXdfYmFzZWxpbmUsICJyIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lKSBhcyBmaWxlX2hhbmRsZTE6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXdfb3V0cHV0ID0gZmlsZV9oYW5kbGUxLnJlYWQo
KQotICAgICAgICAgICAgICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKGZhbGxiYWNrX2Z1bGxwYXRo
LCAiciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSkgYXMgZmls
ZV9oYW5kbGUyOgotICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2tfb3V0cHV0ID0gZmls
ZV9oYW5kbGUyLnJlYWQoKQorICAgICAgICAgICAgICAgICAgICBuZXdfb3V0cHV0ID0gc2VsZi5f
ZmlsZXN5c3RlbS5yZWFkX2JpbmFyeV9maWxlKG5ld19iYXNlbGluZSkKKyAgICAgICAgICAgICAg
ICAgICAgZmFsbGJhY2tfb3V0cHV0ID0gc2VsZi5fZmlsZXN5c3RlbS5yZWFkX2JpbmFyeV9maWxl
KGZhbGxiYWNrX2Z1bGxwYXRoKQogICAgICAgICAgICAgICAgICAgICBpc19pbWFnZSA9IGJhc2Vs
aW5lX3BhdGgubG93ZXIoKS5lbmRzd2l0aCgnLnBuZycpCiAgICAgICAgICAgICAgICAgICAgIGlm
IG5vdCBzZWxmLl9kaWZmX2Jhc2VsaW5lcyhuZXdfb3V0cHV0LCBmYWxsYmFja19vdXRwdXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19pbWFnZSk6
CkBAIC01MDcsNyArNDg2LDcgQEAgY2xhc3MgUmViYXNlbGluZXIob2JqZWN0KToKICAgICAgICAg
ICBmaWxlbmFtZTogZnVsbCBwYXRoIG9mIHRoZSBmaWxlIHRvIGRlbGV0ZS4KICAgICAgICAgIiIi
CiAKLSAgICAgICAgaWYgbm90IGZpbGVuYW1lIG9yIG5vdCBvcy5wYXRoLmlzZmlsZShmaWxlbmFt
ZSk6CisgICAgICAgIGlmIG5vdCBmaWxlbmFtZSBvciBub3Qgc2VsZi5fZmlsZXN5c3RlbS5pc2Zp
bGUoZmlsZW5hbWUpOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHNlbGYuX3NjbS5kZWxl
dGUoZmlsZW5hbWUpCiAKQEAgLTUzMCwxNCArNTA5LDEyIEBAIGNsYXNzIFJlYmFzZWxpbmVyKG9i
amVjdCk6CiAgICAgICAgICAgICAgICAgZGF0ZV9zdWZmaXggPSB0aW1lLnN0cmZ0aW1lKCclWSVt
JWQlSCVNJVMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aW1lLmxvY2FsdGltZSh0aW1lLnRpbWUoKSkpCiAgICAgICAgICAgICAgICAgYmFja3VwX2ZpbGUg
PSAoJyVzLm9yaWcuJXMnICUgKHBhdGgsIGRhdGVfc3VmZml4KSkKLSAgICAgICAgICAgICAgICBp
ZiBvcy5wYXRoLmV4aXN0cyhiYWNrdXBfZmlsZSk6Ci0gICAgICAgICAgICAgICAgICAgIG9zLnJl
bW92ZShiYWNrdXBfZmlsZSkKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4
aXN0cyhiYWNrdXBfZmlsZSk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0u
cmVtb3ZlKGJhY2t1cF9maWxlKQogICAgICAgICAgICAgICAgIF9sb2cuaW5mbygnU2F2aW5nIG9y
aWdpbmFsIGZpbGUgdG8gIiVzIicsIGJhY2t1cF9maWxlKQotICAgICAgICAgICAgICAgIG9zLnJl
bmFtZShwYXRoLCBiYWNrdXBfZmlsZSkKLSAgICAgICAgICAgICMgRklYTUU6IFdoYXQgZW5jb2Rp
bmcgYXJlIHRoZXNlIGZpbGVzPwotICAgICAgICAgICAgIyBPciBpcyBuZXdfZXhwZWN0YXRpb25z
IGFsd2F5cyBhIGJ5dGUgYXJyYXk/Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgInciKSBh
cyBmaWxlOgotICAgICAgICAgICAgICAgIGZpbGUud3JpdGUobmV3X2V4cGVjdGF0aW9ucykKKyAg
ICAgICAgICAgICAgICBzZWxmLl9maWxlc3lzdGVtLm1vdmUocGF0aCwgYmFja3VwX2ZpbGUpCisK
KyAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKHBhdGgsIG5ld19l
eHBlY3RhdGlvbnMpCiAgICAgICAgICAgICAjIHNlbGYuX3NjbS5hZGQocGF0aCkKICAgICAgICAg
ZWxzZToKICAgICAgICAgICAgIF9sb2cuaW5mbygnTm8gdGVzdCB3YXMgcmViYXNlbGluZWQgc28g
bm90aGluZyB0byByZW1vdmUuJykKQEAgLTU1MSwxNSArNTI4LDE1IEBAIGNsYXNzIFJlYmFzZWxp
bmVyKG9iamVjdCk6CiAgICAgICAgICAgYmFzZWxpbmVfZnVsbHBhdGg6IGZ1bGwgcGF0aCBvZiB0
aGUgZXhwZWN0ZWQgYmFzZWxpbmUgZmlsZS4KICAgICAgICAgIiIiCiAKLSAgICAgICAgaWYgbm90
IGJhc2VsaW5lX2Z1bGxwYXRoIG9yIG5vdCBvcy5wYXRoLmV4aXN0cyhiYXNlbGluZV9mdWxscGF0
aCk6CisgICAgICAgIGlmIG5vdCBiYXNlbGluZV9mdWxscGF0aCBvciBub3Qgc2VsZi5fZmlsZXN5
c3RlbS5leGlzdHMoYmFzZWxpbmVfZnVsbHBhdGgpOgogICAgICAgICAgICAgcmV0dXJuCiAKICAg
ICAgICAgIyBDb3B5IHRoZSBuZXcgYmFzZWxpbmUgdG8gaHRtbCBkaXJlY3RvcnkgZm9yIHJlc3Vs
dCBjb21wYXJpc29uLgotICAgICAgICBiYXNlbGluZV9maWxlbmFtZSA9IG9zLnBhdGguYmFzZW5h
bWUoYmFzZWxpbmVfZnVsbHBhdGgpCi0gICAgICAgIG5ld19maWxlID0gZ2V0X3Jlc3VsdF9maWxl
X2Z1bGxwYXRoKHNlbGYuX29wdGlvbnMuaHRtbF9kaXJlY3RvcnksCisgICAgICAgIGJhc2VsaW5l
X2ZpbGVuYW1lID0gc2VsZi5fZmlsZXN5c3RlbS5iYXNlbmFtZShiYXNlbGluZV9mdWxscGF0aCkK
KyAgICAgICAgbmV3X2ZpbGUgPSBnZXRfcmVzdWx0X2ZpbGVfZnVsbHBhdGgoc2VsZi5fZmlsZXN5
c3RlbSwgc2VsZi5fb3B0aW9ucy5odG1sX2RpcmVjdG9yeSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVfZmlsZW5hbWUsIHNlbGYuX3BsYXRmb3Jt
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmV3JykKLSAg
ICAgICAgc2h1dGlsLmNvcHlmaWxlKGJhc2VsaW5lX2Z1bGxwYXRoLCBuZXdfZmlsZSkKKyAgICAg
ICAgc2VsZi5fZmlsZXN5c3RlbS5jb3B5ZmlsZShiYXNlbGluZV9mdWxscGF0aCwgbmV3X2ZpbGUp
CiAgICAgICAgIF9sb2cuaW5mbygnICBIdG1sOiBjb3BpZWQgbmV3IGJhc2VsaW5lIGZpbGUgZnJv
bSAiJXMiIHRvICIlcyIuJywKICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lX2Z1bGxwYXRoLCBu
ZXdfZmlsZSkKIApAQCAtNTc0LDcgKzU1MSw3IEBAIGNsYXNzIFJlYmFzZWxpbmVyKG9iamVjdCk6
CiAgICAgICAgICAgICAnTk8gU1VDSCBGSUxFIE9SIERJUkVDVE9SWScpKToKICAgICAgICAgICAg
IF9sb2cuaW5mbygnICBObyBiYXNlIGZpbGU6ICIlcyInLCBiYXNlbGluZV9mdWxscGF0aCkKICAg
ICAgICAgICAgIHJldHVybgotICAgICAgICBiYXNlX2ZpbGUgPSBnZXRfcmVzdWx0X2ZpbGVfZnVs
bHBhdGgoc2VsZi5fb3B0aW9ucy5odG1sX2RpcmVjdG9yeSwKKyAgICAgICAgYmFzZV9maWxlID0g
Z2V0X3Jlc3VsdF9maWxlX2Z1bGxwYXRoKHNlbGYuX2ZpbGVzeXN0ZW0sIHNlbGYuX29wdGlvbnMu
aHRtbF9kaXJlY3RvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBiYXNlbGluZV9maWxlbmFtZSwgc2VsZi5fcGxhdGZvcm0sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb2xkJykKICAgICAgICAgIyBXZSBzaG91bGQg
YmUgdXNpbmcgYW4gZXhwbGljaXQgZW5jb2RpbmcgaGVyZS4KQEAgLTU4Nyw3ICs1NjQsNyBAQCBj
bGFzcyBSZWJhc2VsaW5lcihvYmplY3QpOgogICAgICAgICBpZiBiYXNlbGluZV9maWxlbmFtZS51
cHBlcigpLmVuZHN3aXRoKCcuVFhUJyk6CiAgICAgICAgICAgICBvdXRwdXQgPSBzZWxmLl9zY20u
ZGlmZl9mb3JfZmlsZShiYXNlbGluZV9mdWxscGF0aCwgbG9nPV9sb2cpCiAgICAgICAgICAgICBp
ZiBvdXRwdXQ6Ci0gICAgICAgICAgICAgICAgZGlmZl9maWxlID0gZ2V0X3Jlc3VsdF9maWxlX2Z1
bGxwYXRoKAorICAgICAgICAgICAgICAgIGRpZmZfZmlsZSA9IGdldF9yZXN1bHRfZmlsZV9mdWxs
cGF0aChzZWxmLl9maWxlc3lzdGVtLAogICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25z
Lmh0bWxfZGlyZWN0b3J5LCBiYXNlbGluZV9maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAg
c2VsZi5fcGxhdGZvcm0sICdkaWZmJykKICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oZGlmZl9m
aWxlLCAnd2InKSBhcyBmaWxlOgpAQCAtNjQyLDE5ICs2MTksMTkgQEAgY2xhc3MgSHRtbEdlbmVy
YXRvcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgJzxpbWcgc3R5bGU9IndpZHRo
OiAyMDAiIHNyYz0iJSh1cmkpcyIgLz48L2E+PC90ZD4nKQogICAgIEhUTUxfVFIgPSAnPHRyPiVz
PC90cj4nCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGFyZ2V0X3BvcnQsIG9wdGlvbnMsIHBs
YXRmb3JtcywgcmViYXNlbGluaW5nX3Rlc3RzLAotICAgICAgICAgICAgICAgICBleGVjdXRpdmUp
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCB0YXJnZXRfcG9ydCwgb3B0aW9ucywgcGxh
dGZvcm1zLCByZWJhc2VsaW5pbmdfdGVzdHMpOgogICAgICAgICBzZWxmLl9odG1sX2RpcmVjdG9y
eSA9IG9wdGlvbnMuaHRtbF9kaXJlY3RvcnkKKyAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKICAg
ICAgICAgc2VsZi5fdGFyZ2V0X3BvcnQgPSB0YXJnZXRfcG9ydAogICAgICAgICBzZWxmLl9wbGF0
Zm9ybXMgPSBwbGF0Zm9ybXMKICAgICAgICAgc2VsZi5fcmViYXNlbGluaW5nX3Rlc3RzID0gcmVi
YXNlbGluaW5nX3Rlc3RzCi0gICAgICAgIHNlbGYuX2V4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZQotICAg
ICAgICBzZWxmLl9odG1sX2ZpbGUgPSBvcy5wYXRoLmpvaW4ob3B0aW9ucy5odG1sX2RpcmVjdG9y
eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWJhc2VsaW5lLmh0
bWwnKQorICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0gcG9ydC5fZmlsZXN5c3RlbQorICAgICAg
ICBzZWxmLl9odG1sX2ZpbGUgPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4ob3B0aW9ucy5odG1sX2Rp
cmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdyZWJhc2VsaW5lLmh0bWwnKQogCiAgICAgZGVmIGFic3BhdGhfdG9fdXJpKHNlbGYsIGZpbGVu
YW1lKToKICAgICAgICAgIiIiQ29udmVydHMgYW4gYWJzb2x1dGUgcGF0aCB0byBhIGZpbGU6IFVS
SS4iIiIKLSAgICAgICAgcmV0dXJuIHBhdGguYWJzcGF0aF90b191cmkoZmlsZW5hbWUsIHNlbGYu
X2V4ZWN1dGl2ZSkKKyAgICAgICAgcmV0dXJuIHBhdGguYWJzcGF0aF90b191cmkoZmlsZW5hbWUs
IHNlbGYuX3BvcnQuX2V4ZWN1dGl2ZSkKIAogICAgIGRlZiBnZW5lcmF0ZV9odG1sKHNlbGYpOgog
ICAgICAgICAiIiJHZW5lcmF0ZSBodG1sIGZpbGUgZm9yIHJlYmFzZWxpbmluZyByZXN1bHQgY29t
cGFyaXNvbi4iIiIKQEAgLTY3Nyw5ICs2NTQsNyBAQCBjbGFzcyBIdG1sR2VuZXJhdG9yKG9iamVj
dCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JvZHknOiBodG1s
X2JvZHl9KQogICAgICAgICBfbG9nLmRlYnVnKGh0bWwpCiAKLSAgICAgICAgd2l0aCBjb2RlY3Mu
b3BlbihzZWxmLl9odG1sX2ZpbGUsICJ3IiwgInV0Zi04IikgYXMgZmlsZToKLSAgICAgICAgICAg
IGZpbGUud3JpdGUoaHRtbCkKLQorICAgICAgICBzZWxmLl9maWxlc3lzdGVtLndyaXRlX3RleHRf
ZmlsZShzZWxmLl9odG1sX2ZpbGUsIGh0bWwpCiAgICAgICAgIF9sb2cuaW5mbygnQmFzZWxpbmUg
Y29tcGFyaXNvbiBodG1sIGdlbmVyYXRlZCBhdCAiJXMiJywKICAgICAgICAgICAgICAgICAgIHNl
bGYuX2h0bWxfZmlsZSkKIApAQCAtNjg3LDcgKzY2Miw3IEBAIGNsYXNzIEh0bWxHZW5lcmF0b3Io
b2JqZWN0KToKICAgICAgICAgIiIiTGF1bmNoIHRoZSByZWJhc2VsaW5pbmcgaHRtbCBpbiBicndv
c2VyLiIiIgogCiAgICAgICAgIF9sb2cuaW5mbygnTGF1bmNoaW5nIGh0bWw6ICIlcyInLCBzZWxm
Ll9odG1sX2ZpbGUpCi0gICAgICAgIHVzZXIuVXNlcigpLm9wZW5fdXJsKHNlbGYuX2h0bWxfZmls
ZSkKKyAgICAgICAgc2VsZi5fcG9ydC5fdXNlci5vcGVuX3VybChzZWxmLl9odG1sX2ZpbGUpCiAg
ICAgICAgIF9sb2cuaW5mbygnSHRtbCBsYXVuY2hlZC4nKQogCiAgICAgZGVmIF9nZW5lcmF0ZV9i
YXNlbGluZV9saW5rcyhzZWxmLCB0ZXN0X2Jhc2VuYW1lLCBzdWZmaXgsIHBsYXRmb3JtKToKQEAg
LTcwNSwxNCArNjgwLDE0IEBAIGNsYXNzIEh0bWxHZW5lcmF0b3Iob2JqZWN0KToKICAgICAgICAg
YmFzZWxpbmVfZmlsZW5hbWUgPSAnJXMtZXhwZWN0ZWQlcycgJSAodGVzdF9iYXNlbmFtZSwgc3Vm
Zml4KQogICAgICAgICBfbG9nLmRlYnVnKCcgICAgYmFzZWxpbmUgZmlsZW5hbWU6ICIlcyInLCBi
YXNlbGluZV9maWxlbmFtZSkKIAotICAgICAgICBuZXdfZmlsZSA9IGdldF9yZXN1bHRfZmlsZV9m
dWxscGF0aChzZWxmLl9odG1sX2RpcmVjdG9yeSwKKyAgICAgICAgbmV3X2ZpbGUgPSBnZXRfcmVz
dWx0X2ZpbGVfZnVsbHBhdGgoc2VsZi5fZmlsZXN5c3RlbSwgc2VsZi5faHRtbF9kaXJlY3Rvcnks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lX2Zp
bGVuYW1lLCBwbGF0Zm9ybSwgJ25ldycpCiAgICAgICAgIF9sb2cuaW5mbygnICAgIE5ldyBiYXNl
bGluZSBmaWxlOiAiJXMiJywgbmV3X2ZpbGUpCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0
cyhuZXdfZmlsZSk6CisgICAgICAgIGlmIG5vdCBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhuZXdf
ZmlsZSk6CiAgICAgICAgICAgICBfbG9nLmluZm8oJyAgICBObyBuZXcgYmFzZWxpbmUgZmlsZTog
IiVzIicsIG5ld19maWxlKQogICAgICAgICAgICAgcmV0dXJuICcnCiAKLSAgICAgICAgb2xkX2Zp
bGUgPSBnZXRfcmVzdWx0X2ZpbGVfZnVsbHBhdGgoc2VsZi5faHRtbF9kaXJlY3RvcnksCisgICAg
ICAgIG9sZF9maWxlID0gZ2V0X3Jlc3VsdF9maWxlX2Z1bGxwYXRoKHNlbGYuX2ZpbGVzeXN0ZW0s
IHNlbGYuX2h0bWxfZGlyZWN0b3J5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBiYXNlbGluZV9maWxlbmFtZSwgcGxhdGZvcm0sICdvbGQnKQogICAgICAgICBf
bG9nLmluZm8oJyAgICBPbGQgYmFzZWxpbmUgZmlsZTogIiVzIicsIG9sZF9maWxlKQogICAgICAg
ICBpZiBzdWZmaXggPT0gJy5wbmcnOgpAQCAtNzIxLDcgKzY5Niw3IEBAIGNsYXNzIEh0bWxHZW5l
cmF0b3Iob2JqZWN0KToKICAgICAgICAgICAgIGh0bWxfdGRfbGluayA9IHNlbGYuSFRNTF9URF9M
SU5LCiAKICAgICAgICAgbGlua3MgPSAnJwotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvbGRf
ZmlsZSk6CisgICAgICAgIGlmIHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKG9sZF9maWxlKToKICAg
ICAgICAgICAgIGxpbmtzICs9IGh0bWxfdGRfbGluayAlIHsKICAgICAgICAgICAgICAgICAndXJp
Jzogc2VsZi5hYnNwYXRoX3RvX3VyaShvbGRfZmlsZSksCiAgICAgICAgICAgICAgICAgJ25hbWUn
OiBiYXNlbGluZV9maWxlbmFtZX0KQEAgLTczMiwxMSArNzA3LDExIEBAIGNsYXNzIEh0bWxHZW5l
cmF0b3Iob2JqZWN0KToKICAgICAgICAgbGlua3MgKz0gaHRtbF90ZF9saW5rICUgeyd1cmknOiBz
ZWxmLmFic3BhdGhfdG9fdXJpKG5ld19maWxlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICduYW1lJzogYmFzZWxpbmVfZmlsZW5hbWV9CiAKLSAgICAgICAgZGlmZl9maWxlID0g
Z2V0X3Jlc3VsdF9maWxlX2Z1bGxwYXRoKHNlbGYuX2h0bWxfZGlyZWN0b3J5LAorICAgICAgICBk
aWZmX2ZpbGUgPSBnZXRfcmVzdWx0X2ZpbGVfZnVsbHBhdGgoc2VsZi5fZmlsZXN5c3RlbSwgc2Vs
Zi5faHRtbF9kaXJlY3RvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBiYXNlbGluZV9maWxlbmFtZSwgcGxhdGZvcm0sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlmZicpCiAgICAgICAgIF9sb2cuaW5mbygnICAg
IEJhc2VsaW5lIGRpZmYgZmlsZTogIiVzIicsIGRpZmZfZmlsZSkKLSAgICAgICAgaWYgb3MucGF0
aC5leGlzdHMoZGlmZl9maWxlKToKKyAgICAgICAgaWYgc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMo
ZGlmZl9maWxlKToKICAgICAgICAgICAgIGxpbmtzICs9IGh0bWxfdGRfbGluayAlIHsndXJpJzog
c2VsZi5hYnNwYXRoX3RvX3VyaShkaWZmX2ZpbGUpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICduYW1lJzogJ0RpZmYnfQogICAgICAgICBlbHNlOgpAQCAtNzU1LDcgKzcz
MCw3IEBAIGNsYXNzIEh0bWxHZW5lcmF0b3Iob2JqZWN0KToKICAgICAgICAgICBodG1sIHRoYXQg
Y29tcGFyZXMgYmFzZWxpbmUgcmVzdWx0cyBmb3IgdGhlIHRlc3QuCiAgICAgICAgICIiIgogCi0g
ICAgICAgIHRlc3RfYmFzZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKG9zLnBhdGguc3BsaXRleHQo
dGVzdClbMF0pCisgICAgICAgIHRlc3RfYmFzZW5hbWUgPSBzZWxmLl9maWxlc3lzdGVtLmJhc2Vu
YW1lKHNlbGYuX2ZpbGVzeXN0ZW0uc3BsaXRleHQodGVzdClbMF0pCiAgICAgICAgIF9sb2cuaW5m
bygnICBiYXNlbmFtZTogIiVzIicsIHRlc3RfYmFzZW5hbWUpCiAgICAgICAgIHJvd3MgPSBbXQog
ICAgICAgICBmb3Igc3VmZml4IGluIEJBU0VMSU5FX1NVRkZJWEVTOgpAQCAtNzc2LDggKzc1MSw3
IEBAIGNsYXNzIEh0bWxHZW5lcmF0b3Iob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgcm93
cy5hcHBlbmQoc2VsZi5IVE1MX1RSICUgcm93KQogCiAgICAgICAgIGlmIHJvd3M6Ci0gICAgICAg
ICAgICB0ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5fdGFyZ2V0X3BvcnQubGF5b3V0X3Rl
c3RzX2RpcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3QpCisg
ICAgICAgICAgICB0ZXN0X3BhdGggPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fdGFyZ2V0
X3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpLCB0ZXN0KQogICAgICAgICAgICAgaHRtbCA9IHNlbGYu
SFRNTF9UUl9URVNUICUgKHNlbGYuYWJzcGF0aF90b191cmkodGVzdF9wYXRoKSwgdGVzdCkKICAg
ICAgICAgICAgIGh0bWwgKz0gc2VsZi5IVE1MX1RFU1RfREVUQUlMICUgJyAnLmpvaW4ocm93cykK
IApAQCAtODgzLDcgKzg1Nyw3IEBAIGRlZiBwYXJzZV9vcHRpb25zKGFyZ3MpOgogICAgIHJldHVy
biAob3B0aW9ucywgdGFyZ2V0X29wdGlvbnMpCiAKIAotZGVmIG1haW4oZXhlY3V0aXZlPUV4ZWN1
dGl2ZSgpKToKK2RlZiBtYWluKCk6CiAgICAgIiIiTWFpbiBmdW5jdGlvbiB0byBwcm9kdWNlIG5l
dyBiYXNlbGluZXMuIiIiCiAKICAgICAob3B0aW9ucywgdGFyZ2V0X29wdGlvbnMpID0gcGFyc2Vf
b3B0aW9ucyhzeXMuYXJndlsxOl0pCkBAIC05MjksNyArOTAzLDcgQEAgZGVmIG1haW4oZXhlY3V0
aXZlPUV4ZWN1dGl2ZSgpKToKICAgICAgICAgaWYgcGxhdGZvcm0gaW4gcGxhdGZvcm1zOgogICAg
ICAgICAgICAgcmViYXNlbGluZV9wbGF0Zm9ybXMuYXBwZW5kKHBsYXRmb3JtKQogCi0gICAgb3B0
aW9ucy5odG1sX2RpcmVjdG9yeSA9IHNldHVwX2h0bWxfZGlyZWN0b3J5KG9wdGlvbnMuaHRtbF9k
aXJlY3RvcnkpCisgICAgb3B0aW9ucy5odG1sX2RpcmVjdG9yeSA9IHNldHVwX2h0bWxfZGlyZWN0
b3J5KGhvc3RfcG9ydF9vYmouX2ZpbGVzeXN0ZW0sIG9wdGlvbnMuaHRtbF9kaXJlY3RvcnkpCiAK
ICAgICByZWJhc2VsaW5pbmdfdGVzdHMgPSBzZXQoKQogICAgIGJhY2t1cCA9IG9wdGlvbnMuYmFj
a3VwCkBAIC05NTAsMTEgKzkyNCwxMSBAQCBkZWYgbWFpbihleGVjdXRpdmU9RXhlY3V0aXZlKCkp
OgogCiAgICAgX2xvZy5pbmZvKCcnKQogICAgIGxvZ19kYXNoZWRfc3RyaW5nKCdSZWJhc2VsaW5p
bmcgcmVzdWx0IGNvbXBhcmlzb24gc3RhcnRlZCcsIE5vbmUpCi0gICAgaHRtbF9nZW5lcmF0b3Ig
PSBIdG1sR2VuZXJhdG9yKHRhcmdldF9wb3J0X29iaiwKKyAgICBodG1sX2dlbmVyYXRvciA9IEh0
bWxHZW5lcmF0b3IoaG9zdF9wb3J0X29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGFyZ2V0X3BvcnRfb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWJhc2VsaW5l
X3BsYXRmb3JtcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmViYXNlbGlu
aW5nX3Rlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRpdmU9
ZXhlY3V0aXZlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWJhc2VsaW5p
bmdfdGVzdHMpCiAgICAgaHRtbF9nZW5lcmF0b3IuZ2VuZXJhdGVfaHRtbCgpCiAgICAgaWYgbm90
IG9wdGlvbnMucXVpZXQ6CiAgICAgICAgIGh0bWxfZ2VuZXJhdG9yLnNob3dfaHRtbCgpCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2No
cm9taXVtX3dlYmtpdF90ZXN0c191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5
CmluZGV4IDdjNTViOTRjOWNjNjhlMjMyMmY2ZDU3YjM2YmVlZTYwZDJhMjU3MjUuLjZjNGM2ODky
NWNlMDljMWFkYjUxNTdiMGFjNWE3NWI3OTliNTUxMWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3Rz
X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Jl
YmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CkBAIC0yOSwxNSArMjks
MTUgQEAKIAogIiIiVW5pdCB0ZXN0cyBmb3IgcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVz
dHMucHkuIiIiCiAKLWltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKIGZy
b20gd2Via2l0cHkudG9vbCBpbXBvcnQgbW9ja3Rvb2wKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzIGltcG9ydCBwb3J0Ci1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcmViYXNl
bGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5l
eGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKIAoraW1wb3J0IHBvcnQKK2lt
cG9ydCByZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cworCiAKIGNsYXNzIE1vY2tQb3J0
KG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGltYWdlX2RpZmZfZXhpc3RzKToKQEAg
LTExMyw0NCArMTEzLDQ0IEBAIGNsYXNzIFRlc3RSZWJhc2VsaW5lcih1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAgICAgZGVmIHRlc3RfZGlmZl9iYXNlbGluZXNfdHh0KHNlbGYpOgogICAgICAgICByZWJh
c2VsaW5lciA9IHNlbGYubWFrZV9yZWJhc2VsaW5lcigpCiAgICAgICAgIG91dHB1dCA9IHJlYmFz
ZWxpbmVyLl9wb3J0LmV4cGVjdGVkX3RleHQoCi0gICAgICAgICAgICBvcy5wYXRoLmpvaW4ocmVi
YXNlbGluZXIuX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICdwYXNzZXMvdGV4dC5odG1sJykpCisgICAgICAgICAgICByZWJhc2VsaW5lci5fcG9ydC5f
ZmlsZXN5c3RlbS5qb2luKHJlYmFzZWxpbmVyLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3Nlcy90ZXh0
Lmh0bWwnKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZWJhc2VsaW5lci5fZGlmZl9iYXNl
bGluZXMob3V0cHV0LCBvdXRwdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlzX2ltYWdlPUZhbHNlKSkKIAogICAgIGRlZiB0ZXN0X2RpZmZf
YmFzZWxpbmVzX3BuZyhzZWxmKToKICAgICAgICAgcmViYXNlbGluZXIgPSBzZWxmLm1ha2VfcmVi
YXNlbGluZXIoKQogICAgICAgICBpbWFnZSA9IHJlYmFzZWxpbmVyLl9wb3J0LmV4cGVjdGVkX2lt
YWdlKAotICAgICAgICAgICAgb3MucGF0aC5qb2luKHJlYmFzZWxpbmVyLl9wb3J0LmxheW91dF90
ZXN0c19kaXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAncGFzc2VzL2ltYWdlLmh0bWwn
KSkKKyAgICAgICAgICAgIHJlYmFzZWxpbmVyLl9wb3J0Ll9maWxlc3lzdGVtLmpvaW4ocmViYXNl
bGluZXIuX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAncGFzc2VzL2ltYWdlLmh0bWwnKSkKICAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShyZWJhc2VsaW5lci5fZGlmZl9iYXNlbGluZXMoaW1hZ2UsIGltYWdlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19p
bWFnZT1UcnVlKSkKIAogCiBjbGFzcyBUZXN0SHRtbEdlbmVyYXRvcih1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAgICAgZGVmIG1ha2VfZ2VuZXJhdG9yKHNlbGYsIHRlc3RzKToKLSAgICAgICAgcmV0dXJu
IHJlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLkh0bWxHZW5lcmF0b3IoCisgICAgICAg
IG9wdGlvbnMgPSBtb2NrdG9vbC5Nb2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPU5vbmUsIGh0bWxf
ZGlyZWN0b3J5PScvdG1wJykKKyAgICAgICAgaG9zdF9wb3J0ID0gcG9ydC5nZXQoJ3Rlc3QnLCBv
cHRpb25zKQorICAgICAgICBnZW5lcmF0b3IgPSByZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90
ZXN0cy5IdG1sR2VuZXJhdG9yKAorICAgICAgICAgICAgaG9zdF9wb3J0LAogICAgICAgICAgICAg
dGFyZ2V0X3BvcnQ9Tm9uZSwKLSAgICAgICAgICAgIG9wdGlvbnM9bW9ja3Rvb2wuTW9ja09wdGlv
bnMoY29uZmlndXJhdGlvbj1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBodG1sX2RpcmVjdG9yeT0nL3RtcCcpLAorICAgICAgICAgICAgb3B0aW9ucz1vcHRp
b25zLAogICAgICAgICAgICAgcGxhdGZvcm1zPVsnbWFjJ10sCi0gICAgICAgICAgICByZWJhc2Vs
aW5pbmdfdGVzdHM9dGVzdHMsCi0gICAgICAgICAgICBleGVjdXRpdmU9RXhlY3V0aXZlKCkpCisg
ICAgICAgICAgICByZWJhc2VsaW5pbmdfdGVzdHM9dGVzdHMpCisgICAgICAgIHJldHVybiBnZW5l
cmF0b3IsIGhvc3RfcG9ydAogCiAgICAgZGVmIHRlc3RfZ2VuZXJhdGVfYmFzZWxpbmVfbGlua3Mo
c2VsZik6CiAgICAgICAgIG9yaWdfcGxhdGZvcm0gPSBzeXMucGxhdGZvcm0KLSAgICAgICAgb3Jp
Z19leGlzdHMgPSBvcy5wYXRoLmV4aXN0cwotCiAgICAgICAgIHRyeToKKyAgICAgICAgICAgICMg
RklYTUU6IFVzZSB0aGUgbW9jayBmaWxlc3lzdGVtIGluc3RlYWQgb2YgbW9ua2V5LXBhdGNoaW5n
IHN5cy5wbGF0Zm9ybQogICAgICAgICAgICAgc3lzLnBsYXRmb3JtID0gJ2RhcndpbicKLSAgICAg
ICAgICAgIG9zLnBhdGguZXhpc3RzID0gbGFtYmRhIHg6IFRydWUKLSAgICAgICAgICAgIGdlbmVy
YXRvciA9IHNlbGYubWFrZV9nZW5lcmF0b3IoWyJmb28udHh0Il0pCisgICAgICAgICAgICBnZW5l
cmF0b3IsIGhvc3RfcG9ydCA9IHNlbGYubWFrZV9nZW5lcmF0b3IoWyJmb28udHh0Il0pCisgICAg
ICAgICAgICBob3N0X3BvcnQuX2ZpbGVzeXN0ZW0uZXhpc3RzID0gbGFtYmRhIHg6IFRydWUKICAg
ICAgICAgICAgIGxpbmtzID0gZ2VuZXJhdG9yLl9nZW5lcmF0ZV9iYXNlbGluZV9saW5rcygiZm9v
IiwgIi50eHQiLCAibWFjIikKICAgICAgICAgICAgIGV4cGVjdGVkX2xpbmtzID0gJzx0ZCBhbGln
bj1jZW50ZXI+PGEgaHJlZj0iZmlsZTovLy90bXAvZm9vLWV4cGVjdGVkLW1hYy1vbGQudHh0Ij5m
b28tZXhwZWN0ZWQudHh0PC9hPjwvdGQ+PHRkIGFsaWduPWNlbnRlcj48YSBocmVmPSJmaWxlOi8v
L3RtcC9mb28tZXhwZWN0ZWQtbWFjLW5ldy50eHQiPmZvby1leHBlY3RlZC50eHQ8L2E+PC90ZD48
dGQgYWxpZ249Y2VudGVyPjxhIGhyZWY9ImZpbGU6Ly8vdG1wL2Zvby1leHBlY3RlZC1tYWMtZGlm
Zi50eHQiPkRpZmY8L2E+PC90ZD4nCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmtz
LCBleHBlY3RlZF9saW5rcykKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHN5cy5wbGF0
Zm9ybSA9IG9yaWdfcGxhdGZvcm0KLSAgICAgICAgICAgIG9zLnBhdGguZXhpc3RzID0gb3JpZ19l
eGlzdHMKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkKaW5kZXggNDIzMjFjZmI0NWJhZThmMjll
NTViMWU4MzhmMzc4ZTAzMmFkNzQ1OC4uNWJjODgwYjhlZjhlZTQzM2NhOTc4MDg4M2I4MDlhYjEz
NWU2OTM4YiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L3F1ZXVlcy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVl
dWVzLnB5CkBAIC0zMjYsNyArMzI2LDcgQEAgY2xhc3MgQ29tbWl0UXVldWUoQWJzdHJhY3RQYXRj
aFF1ZXVlLCBTdGVwU2VxdWVuY2VFcnJvckhhbmRsZXIsIENvbW1pdFF1ZXVlVGFza0QKICAgICAg
ICAgYXJjaGl2ZSA9IHNlbGYuX3Rvb2wud29ya3NwYWNlLmNyZWF0ZV96aXAoemlwX3BhdGgsIHJl
c3VsdHNfZGlyZWN0b3J5KQogICAgICAgICAjIFJlbW92ZSB0aGUgcmVzdWx0cyBkaXJlY3Rvcnkg
dG8gcHJldmVudCBodHRwIGxvZ3MsIGV0Yy4gZnJvbSBnZXR0aW5nIGh1Z2UgYmV0d2VlbiBydW5z
LgogICAgICAgICAjIFdlIGNvdWxkIGhhdmUgY3JlYXRlX3ppcCByZW1vdmUgdGhlIG9yaWdpbmFs
LCBidXQgdGhpcyBpcyBtb3JlIGV4cGxpY2l0LgotICAgICAgICBzZWxmLl90b29sLmZpbGVzeXN0
ZW0ucmVtb3ZlX3RyZWUocmVzdWx0c19kaXJlY3RvcnksIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKKyAg
ICAgICAgc2VsZi5fdG9vbC5maWxlc3lzdGVtLnJtdHJlZShyZXN1bHRzX2RpcmVjdG9yeSkKICAg
ICAgICAgcmV0dXJuIGFyY2hpdmUKIAogICAgIGRlZiByZWZldGNoX3BhdGNoKHNlbGYsIHBhdGNo
KToK
</data>

          </attachment>
      

    </bug>

</bugzilla>