<?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>58494</bug_id>
          
          <creation_ts>2011-04-13 16:33:19 -0700</creation_ts>
          <short_desc>commit-queue should be able to land when tree is red</short_desc>
          <delta_ts>2011-04-13 18:08:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>385349</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-13 16:33:19 -0700</bug_when>
    <thetext>commit-queue should be able to land when tree is red</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385355</commentid>
    <comment_count>1</comment_count>
      <attachid>89491</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-13 16:39:28 -0700</bug_when>
    <thetext>Created attachment 89491
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385361</commentid>
    <comment_count>2</comment_count>
      <attachid>89491</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-13 16:58:11 -0700</bug_when>
    <thetext>Comment on attachment 89491
Patch

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

&gt; Tools/Scripts/webkitpy/tool/bot/commitqueuetask.py:205
&gt; +        first_failing_tests = [] if not first_results else first_results.failing_tests()
&gt; +        second_failing_tests = [] if not second_results else second_results.failing_tests()
&gt; +
&gt;          if first_failing_tests != second_failing_tests:

This should be some kind of comparison helper.

&gt; Tools/Scripts/webkitpy/tool/bot/commitqueuetask.py:217
&gt; +        self._expected_failures.grow_expected_failures(self._delegate.layout_test_results())

This could include some flaky failures, but maybe that&apos;s ok since we aggressively remove passing tests.

&gt; Tools/Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:-240
&gt; -    _double_flaky_test_counter = 0

Who added this variable!

&gt; Tools/Scripts/webkitpy/tool/bot/expectedfailures.py:32
&gt; +    def __init__(self):
&gt; +        self._failures = set()

Yeah, we should put an upper bound here.

&gt; Tools/Scripts/webkitpy/tool/bot/expectedfailures.py:37
&gt; +        return len(results.failing_tests()) != 0 and len(results.failing_tests()) != results.failure_limit_count()

This part &quot;len(results.failing_tests()) != 0&quot; is really an assert.

&gt; Tools/Scripts/webkitpy/tool/commands/queues.py:319
&gt;          except OSError, e:  # File does not exist or can&apos;t be read.

Can this exception ever occur?

&gt; Tools/Scripts/webkitpy/tool/steps/runtests.py:35
&gt; +    # FIXME: This knowledge really belongs in the commit-queue.
&gt; +    NON_INTERACTIVE_FAILURE_LIMIT_COUNT = 1

This thing is not great, but you know that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385376</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-13 17:13:25 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 89491 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=89491&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/bot/commitqueuetask.py:205
&gt; &gt; +        first_failing_tests = [] if not first_results else first_results.failing_tests()
&gt; &gt; +        second_failing_tests = [] if not second_results else second_results.failing_tests()
&gt; &gt; +
&gt; &gt;          if first_failing_tests != second_failing_tests:
&gt; 
&gt; This should be some kind of comparison helper.

Done.

&gt; &gt; Tools/Scripts/webkitpy/tool/bot/commitqueuetask.py:217
&gt; &gt; +        self._expected_failures.grow_expected_failures(self._delegate.layout_test_results())
&gt; 
&gt; This could include some flaky failures, but maybe that&apos;s ok since we aggressively remove passing tests.

Yeah, should be fine.

&gt; &gt; Tools/Scripts/webkitpy/tool/bot/expectedfailures.py:32
&gt; &gt; +    def __init__(self):
&gt; &gt; +        self._failures = set()
&gt; 
&gt; Yeah, we should put an upper bound here.

I think I&apos;ll do that in the next patch, this one is hairy enough. :)

&gt; &gt; Tools/Scripts/webkitpy/tool/bot/expectedfailures.py:37
&gt; &gt; +        return len(results.failing_tests()) != 0 and len(results.failing_tests()) != results.failure_limit_count()
&gt; 
&gt; This part &quot;len(results.failing_tests()) != 0&quot; is really an assert.

True, it is.  Going to leave it as is for now though.

&gt; &gt; Tools/Scripts/webkitpy/tool/commands/queues.py:319
&gt; &gt;          except OSError, e:  # File does not exist or can&apos;t be read.
&gt; 
&gt; Can this exception ever occur?

No, supposedly it throws an IOError instead, not sure how I ended up with OSError when I wrote that code.  Leaving it as-is for now though.

&gt; &gt; Tools/Scripts/webkitpy/tool/steps/runtests.py:35
&gt; &gt; +    # FIXME: This knowledge really belongs in the commit-queue.
&gt; &gt; +    NON_INTERACTIVE_FAILURE_LIMIT_COUNT = 1
&gt; 
&gt; This thing is not great, but you know that.

Yup.  Bug 58370 is one way to solve that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385377</commentid>
    <comment_count>4</comment_count>
      <attachid>89495</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-13 17:13:46 -0700</bug_when>
    <thetext>Created attachment 89495
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385381</commentid>
    <comment_count>5</comment_count>
      <attachid>89497</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-13 17:17:47 -0700</bug_when>
    <thetext>Created attachment 89497
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385414</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-13 18:08:35 -0700</bug_when>
    <thetext>Committed r83795: &lt;http://trac.webkit.org/changeset/83795&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89491</attachid>
            <date>2011-04-13 16:39:28 -0700</date>
            <delta_ts>2011-04-13 17:13:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58494-20110413163926.patch</filename>
            <type>text/plain</type>
            <size>25949</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM3MjUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhODFhZjNiOTc0ZTk3NmMxMWNlOTAyNjI1NjhmZDdiNTJh
MTIzMDE4Li5jMjFiN2ZmNTY2NmY5OTRmYTUwYTA5NWNhMjY4YmIwMDNkYTEwYTJhIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkg
QEAKKzIwMTEtMDQtMTMgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNvbW1pdC1xdWV1ZSBzaG91
bGQgYmUgYWJsZSB0byBsYW5kIHdoZW4gdHJlZSBpcyByZWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NDk0CisKKyAgICAgICAgVGhlcmUgaXMgc29t
ZSB5YWsgaGFpciBvbiBteSBoYW5kcywgSSB3aWxsIGFkbWl0LgorCisgICAgICAgIFRoaXMgY2hh
bmdlIGlzIG1vc3RseSBhYm91dCBhZGRpbmcgYW4gRXhwZWN0ZWRGYWlsdXJlcworICAgICAgICBj
bGFzcyB0byB0cmFjayB3aGVuIHRoZSBib3RzIGFyZSByZWQgYW5kIHdlIHNob3VsZCBiZQorICAg
ICAgICBpZ25vcmluZyBmYWlsdXJlcyB3aGVuIGxhbmRpbmcgZnJvbSB0aGUgY29tbWl0LXF1ZXVl
LgorCisgICAgICAgIEhvd2V2ZXIsIHRvIG1ha2UgaW50ZWxsaWdlbnQgZGVjaXNpb25zIGFib3V0
IHBhdGNoZXMgd2UKKyAgICAgICAgbmVlZCB0byBrbm93IHdoZXRoZXIgdGhlIHJ1biBoaXQgdGhl
IC0tZXhpdC1hZnRlci1OLWZhaWx1cmVzIGxpbWl0CisgICAgICAgIG9yIG5vdC4gIFJpZ2h0IG5v
dyB0aGF0IGluZm9ybWF0aW9uIGlzIG5vdCBzYXZlZCBvZmYgaW4gcmVzdWx0cy5odG1sCisgICAg
ICAgIHNvIHdlIGhhdmUgdG8gcHVsbCB0aGUgaW5mb3JtYXRpb24gZnJvbSBSdW5UZXN0cy4KKwor
ICAgICAgICBJJ3ZlIHBsdW1iZWQgdGhlIC0tZXhpdC1hZnRlci1OLWZhaWx1cmVzIGluZm9ybWF0
aW9uIGludG8KKyAgICAgICAgTGF5b3V0VGVzdFJlc3VsdHMgZm9yIG5vdyB0byBtYWtlIHRoZSBF
eHBlY3RlZEZhaWx1cmVzIGNvZGUgY2xlYW5lci4KKworICAgICAgICBBcyBhIHJlc3VsdCBvZiBh
ZGRpbmcgYWxsIHRoZXNlIGFkZGl0aW9uYWwgY2FsbHMgdG8gZGVsZWdhdGUubGF5b3V0X3Rlc3Rf
cmVzdWx0cygpCisgICAgICAgIEkgYnJva2Ugc29tZSBvZiBvdXIgZmxha3kgdGVzdCBkZXRlY3Rp
b24gdGVzdHMgYW5kIGhhZCB0byByZS13cml0ZSB0aGVtCisgICAgICAgIHRvIG5vdCBkZXBlbmQg
b24gdGhlIG51bWJlciBvZiBsYXlvdXRfdGVzdF9yZXN1bHRzIGNvZGUuCisKKyAgICAgICAgQXQg
dGhlIHNhbWUgdGltZSBJIHVwZGF0ZWQgdGhlIGNvbW1pdC1xdWV1ZSB0byB1c2UgdGhlIG5ld2Vy
IGZpbGVzeXN0ZW0KKyAgICAgICAgQVBJICh0byBhbGxvdyB1cyB0byB1c2UgTW9ja0ZpbGVTeXN0
ZW0pIHdoaWNoIHJlcXVpcmVkIGZ1cnRoZXIgY2hhbmdlcworICAgICAgICB0byB0aGUgbGF5b3V0
IHRlc3RzLiAgQ2hhbmdlcyB3ZXJlIHJlcXVpcmVkIGluIGVpdGhlciBjYXNlLCBzaW5jZQorICAg
ICAgICB3ZSdyZSBub3cgY2FsbGluZyBsYXlvdXRfdGVzdF9yZXN1bHRzKCkgaW4gbW9yZSBjYXNl
cywgd2hpY2ggcHJldmlvdXNseQorICAgICAgICB3b3VsZCB0cnkgYW5kIGhpdCB0aGUgZGlzayAo
dW50aWwgSSBtb3ZlZCBpdCB0byB1c2UgdG9vbC5maWxlc3lzdGVtKS4KKworICAgICAgICBJIHNo
b3VsZCBub3RlIHRoYXQgKmFsbCogb2YgdGhpcyBjb2RlIGlzIGRpc2FibGVkIGZvciBub3csIHNp
bmNlIG91cgorICAgICAgICAtLWV4aXQtYWZ0ZXItTi1mYWlsdXJlcyBsaW1pdCBpcyBjdXJyZW50
bHkgMSEgIChUaHVzIHdlcmUgYWx3YXlzIGluIHRoZQorICAgICAgICBjYXNlIHdoZXJlIHdlIGNh
bid0IGFjdHVhbGx5IHRlbGwgaWYgdGhlIGxheW91dCB0ZXN0IHJlc3VsdHMgYXJlIGxlZ2l0LikK
KyAgICAgICAgSSB3aWxsIHVwIHRoYXQgbGltaXQgaW4gYSBzZWNvbmQgcGF0Y2ggKHdoaWNoIG1h
eSByZXF1aXJlIGEgY291cGxlIG1vcmUgdW5pdCB0ZXN0IHR3ZWFrcykuCisKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2sucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9leHBlY3RlZGZhaWx1cmVzLnB5
OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2V4cGVjdGVkZmFp
bHVyZXNfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9xdWV1ZXMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2Nv
bW1hbmRzL3F1ZXVlc191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvcXVldWVzdGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvcnVudGVzdHMucHk6CisKIDIwMTEtMDQtMTIgIEtlbnQgVGFtdXJhICA8dGtlbnRA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVz
dWx0cy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVz
dWx0cy5weQppbmRleCAyNDllY2M5YzBjMzQzNGRlZjA0YzFjMGQyNTA4MmZlZDhhZWU2OGQ3Li41
N2JkNGMxMDM5MTM1NDUyMDUxMTM4MjVjNDFkNzdiNzM2YzBjZDM3IDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRzLnB5CkBA
IC0xMzIsOCArMTMyLDE5IEBAIGNsYXNzIExheW91dFRlc3RSZXN1bHRzKG9iamVjdCk6CiAgICAg
ICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICByZXR1cm4gY2xzKHRlc3RfcmVzdWx0cykKIAot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0X3Jlc3VsdHMpOgorICAgICMgRklYTUU6IHJ1bi13
ZWJraXQtdGVzdHMgc2hvdWxkIHN0b3JlIHRoZSAtLWV4aXQtYWZ0ZXItTi1mYWlsdXJlcyB2YWx1
ZQorICAgICMgKG9yIHNvbWUgaW5kaWNhdGlvbiBvZiBlYXJseSBleGl0KSBzb21ld2hlcmUgaW4g
dGhlIHJlc3VsdHMuaHRtbC9yZXN1bHRzLmpzb24KKyAgICAjIGZpbGUuICBVbnRpbCBpdCBkb2Vz
LCB3ZSBkZXBlbmQgb24gY2FsbGVycyBvZiB0aGlzIGZ1bmN0aW9uIHRvIGNyZWF0ZQorICAgICMg
TGF5b3V0VGVzdFJlc3VsdHMgd2l0aCBhIGZhaWx1cmVfbGltaXRfY291bnQgdmFsdWUsIHJlcHJl
c2VudGluZyB0aGUKKyAgICAjIC0tZXhpdC1hZnRlci1OLWZhaWx1cmVzIHZhbHVlIHVzZWQgaW4g
dGhhdCBydW4uICBDb25zdW1lcnMgb2YgTGF5b3V0VGVzdFJlc3VsdHMKKyAgICAjIHdpbGwgdXNl
IHRoYXQgdmFsdWUgdG8ga25vdyBpZiBhYnNlbmNlIGZyb20gdGhlIGZhaWx1cmUgbGlzdCBtZWFu
cyBQQVNTLgorICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4
NDgxCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfcmVzdWx0cywgZmFpbHVyZV9saW1pdF9j
b3VudD1Ob25lKToKICAgICAgICAgc2VsZi5fdGVzdF9yZXN1bHRzID0gdGVzdF9yZXN1bHRzCisg
ICAgICAgIHNlbGYuX2ZhaWx1cmVfbGltaXRfY291bnQgPSBmYWlsdXJlX2xpbWl0X2NvdW50CisK
KyAgICBkZWYgZmFpbHVyZV9saW1pdF9jb3VudChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
X2ZhaWx1cmVfbGltaXRfY291bnQKIAogICAgIGRlZiB0ZXN0X3Jlc3VsdHMoc2VsZik6CiAgICAg
ICAgIHJldHVybiBzZWxmLl90ZXN0X3Jlc3VsdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2sucHkKaW5kZXggZTk5ZGQxOTQxMzM4M2NjMDQ0
OTQ3NDk4YWExZWM3ZmRhYmY2N2JhNy4uYTdlODdlOGY4NTE1ZmUzOGEyMDQxNjgxMmJkMTJjM2M0
ZWU5OTZhOSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21t
aXRxdWV1ZXRhc2sucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21t
aXRxdWV1ZXRhc2sucHkKQEAgLTI4LDYgKzI4LDcgQEAKIAogZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKIGZyb20gd2Via2l0cHkuY29tbW9u
Lm5ldC5sYXlvdXR0ZXN0cmVzdWx0cyBpbXBvcnQgTGF5b3V0VGVzdFJlc3VsdHMKK2Zyb20gd2Vi
a2l0cHkudG9vbC5ib3QuZXhwZWN0ZWRmYWlsdXJlcyBpbXBvcnQgRXhwZWN0ZWRGYWlsdXJlcwog
CiAKIGNsYXNzIENvbW1pdFF1ZXVlVGFza0RlbGVnYXRlKG9iamVjdCk6CkBAIC02MCw2ICs2MSw3
IEBAIGNsYXNzIENvbW1pdFF1ZXVlVGFzayhvYmplY3QpOgogICAgICAgICBzZWxmLl9wYXRjaCA9
IHBhdGNoCiAgICAgICAgIHNlbGYuX3NjcmlwdF9lcnJvciA9IE5vbmUKICAgICAgICAgc2VsZi5f
cmVzdWx0c19hcmNoaXZlX2Zyb21fcGF0Y2hfdGVzdF9ydW4gPSBOb25lCisgICAgICAgIHNlbGYu
X2V4cGVjdGVkX2ZhaWx1cmVzID0gRXhwZWN0ZWRGYWlsdXJlcygpCiAKICAgICBkZWYgX3ZhbGlk
YXRlKHNlbGYpOgogICAgICAgICAjIEJ1Z3MgbWlnaHQgZ2V0IGNsb3NlZCwgb3IgcGF0Y2hlcyBt
aWdodCBiZSBvYnNvbGV0ZWQgb3Igci0nZCB3aGlsZSB0aGUKQEAgLTEzMyw3ICsxMzUsNyBAQCBj
bGFzcyBDb21taXRRdWV1ZVRhc2sob2JqZWN0KToKICAgICAgICAgIlVuYWJsZSB0byBidWlsZCB3
aXRob3V0IHBhdGNoIikKIAogICAgIGRlZiBfdGVzdChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNl
bGYuX3J1bl9jb21tYW5kKFsKKyAgICAgICAgc3VjY2VzcyA9IHNlbGYuX3J1bl9jb21tYW5kKFsK
ICAgICAgICAgICAgICJidWlsZC1hbmQtdGVzdCIsCiAgICAgICAgICAgICAiLS1uby1jbGVhbiIs
CiAgICAgICAgICAgICAiLS1uby11cGRhdGUiLApAQCAtMTQ0LDggKzE0NiwxMSBAQCBjbGFzcyBD
b21taXRRdWV1ZVRhc2sob2JqZWN0KToKICAgICAgICAgIlBhc3NlZCB0ZXN0cyIsCiAgICAgICAg
ICJQYXRjaCBkb2VzIG5vdCBwYXNzIHRlc3RzIikKIAorICAgICAgICBzZWxmLl9leHBlY3RlZF9m
YWlsdXJlcy5zaHJpbmtfZXhwZWN0ZWRfZmFpbHVyZXMoc2VsZi5fZGVsZWdhdGUubGF5b3V0X3Rl
c3RfcmVzdWx0cygpLCBzdWNjZXNzKQorICAgICAgICByZXR1cm4gc3VjY2VzcworCiAgICAgZGVm
IF9idWlsZF9hbmRfdGVzdF93aXRob3V0X3BhdGNoKHNlbGYpOgotICAgICAgICByZXR1cm4gc2Vs
Zi5fcnVuX2NvbW1hbmQoWworICAgICAgICBzdWNjZXNzID0gc2VsZi5fcnVuX2NvbW1hbmQoWwog
ICAgICAgICAgICAgImJ1aWxkLWFuZC10ZXN0IiwKICAgICAgICAgICAgICItLWZvcmNlLWNsZWFu
IiwKICAgICAgICAgICAgICItLW5vLXVwZGF0ZSIsCkBAIC0xNTYsMTEgKzE2MSw4IEBAIGNsYXNz
IENvbW1pdFF1ZXVlVGFzayhvYmplY3QpOgogICAgICAgICAiQWJsZSB0byBwYXNzIHRlc3RzIHdp
dGhvdXQgcGF0Y2giLAogICAgICAgICAiVW5hYmxlIHRvIHBhc3MgdGVzdHMgd2l0aG91dCBwYXRj
aCAodHJlZSBpcyByZWQ/KSIpCiAKLSAgICBkZWYgX2ZhaWxpbmdfcmVzdWx0c19mcm9tX2xhc3Rf
cnVuKHNlbGYpOgotICAgICAgICByZXN1bHRzID0gc2VsZi5fZGVsZWdhdGUubGF5b3V0X3Rlc3Rf
cmVzdWx0cygpCi0gICAgICAgIGlmIG5vdCByZXN1bHRzOgotICAgICAgICAgICAgcmV0dXJuIFtd
ICAjIE1ha2VzIGNhbGxlcnMgc2xpZ2h0eSBjbGVhbmVyIHRvIG5vdCBoYXZlIHRvIGRlYWwgd2l0
aCBOb25lCi0gICAgICAgIHJldHVybiByZXN1bHRzLmZhaWxpbmdfdGVzdF9yZXN1bHRzKCkKKyAg
ICAgICAgc2VsZi5fZXhwZWN0ZWRfZmFpbHVyZXMuc2hyaW5rX2V4cGVjdGVkX2ZhaWx1cmVzKHNl
bGYuX2RlbGVnYXRlLmxheW91dF90ZXN0X3Jlc3VsdHMoKSwgc3VjY2VzcykKKyAgICAgICAgcmV0
dXJuIHN1Y2Nlc3MKIAogICAgIGRlZiBfbGFuZChzZWxmKToKICAgICAgICAgIyBVbmNsZWFyIGlm
IHRoaXMgc2hvdWxkIHBhc3MgLS1xdWlldCBvciBub3QuICBJZiAtLXBhcmVudC1jb21tYW5kIGFs
d2F5cyBkb2VzIHRoZSByZXBvcnRpbmcsIHRoZW4gaXQgc2hvdWxkLgpAQCAtMTgyLDI3ICsxODQs
MzggQEAgY2xhc3MgQ29tbWl0UXVldWVUYXNrKG9iamVjdCk6CiAgICAgICAgIGlmIHNlbGYuX3Rl
c3QoKToKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICAgICAgZmlyc3RfcmVzdWx0cyA9
IHNlbGYuX2ZhaWxpbmdfcmVzdWx0c19mcm9tX2xhc3RfcnVuKCkKLSAgICAgICAgZmlyc3RfZmFp
bGluZ190ZXN0cyA9IFtyZXN1bHQuZmlsZW5hbWUgZm9yIHJlc3VsdCBpbiBmaXJzdF9yZXN1bHRz
XQorICAgICAgICAjIE5vdGU6IGxheW91dF90ZXN0X3Jlc3VsdHMoKSBhbmQgIGFyY2hpdmVfbGFz
dF9sYXlvdXRfdGVzdF9yZXN1bHRzKCkgYXJlIG9yZGVyLXNlbnNpdGl2ZS4KKyAgICAgICAgIyBX
ZSBjb3VsZCBncmFiIHRoZSByZXN1bHRzIGZyb20gdGhlIGFyY2hpdmUgdG8gZml4IHRoaXMgZGVw
ZW5kZW5jeS4KKyAgICAgICAgZmlyc3RfcmVzdWx0cyA9IHNlbGYuX2RlbGVnYXRlLmxheW91dF90
ZXN0X3Jlc3VsdHMoKQogICAgICAgICBmaXJzdF9yZXN1bHRzX2FyY2hpdmUgPSBzZWxmLl9kZWxl
Z2F0ZS5hcmNoaXZlX2xhc3RfbGF5b3V0X3Rlc3RfcmVzdWx0cyhzZWxmLl9wYXRjaCkKKworICAg
ICAgICBpZiBzZWxmLl9leHBlY3RlZF9mYWlsdXJlcy5mYWlsdXJlc193ZXJlX2V4cGVjdGVkKGZp
cnN0X3Jlc3VsdHMpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKwogICAgICAgICBpZiBzZWxm
Ll90ZXN0KCk6Ci0gICAgICAgICAgICAjIE9ubHkgcmVwb3J0IGZsYWt5IHRlc3RzIGlmIHdlIHdl
cmUgc3VjY2Vzc2Z1bCBhdCBhcmNoaXZpbmcgcmVzdWx0cy4KLSAgICAgICAgICAgIGlmIGZpcnN0
X3Jlc3VsdHNfYXJjaGl2ZToKLSAgICAgICAgICAgICAgICBzZWxmLl9yZXBvcnRfZmxha3lfdGVz
dHMoZmlyc3RfcmVzdWx0cywgZmlyc3RfcmVzdWx0c19hcmNoaXZlKQorICAgICAgICAgICAgIyBP
bmx5IHJlcG9ydCBmbGFreSB0ZXN0cyBpZiB3ZSB3ZXJlIHN1Y2Nlc3NmdWwgYXQgcGFyc2luZyBy
ZXN1bHRzLmh0bWwgYW5kIGFyY2hpdmluZyByZXN1bHRzLgorICAgICAgICAgICAgaWYgZmlyc3Rf
cmVzdWx0cyBhbmQgZmlyc3RfcmVzdWx0c19hcmNoaXZlOgorICAgICAgICAgICAgICAgIHNlbGYu
X3JlcG9ydF9mbGFreV90ZXN0cyhmaXJzdF9yZXN1bHRzLmZhaWxpbmdfdGVzdF9yZXN1bHRzKCks
IGZpcnN0X3Jlc3VsdHNfYXJjaGl2ZSkKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICAg
ICAgc2Vjb25kX3Jlc3VsdHMgPSBzZWxmLl9mYWlsaW5nX3Jlc3VsdHNfZnJvbV9sYXN0X3J1bigp
Ci0gICAgICAgIHNlY29uZF9mYWlsaW5nX3Rlc3RzID0gW3Jlc3VsdC5maWxlbmFtZSBmb3IgcmVz
dWx0IGluIHNlY29uZF9yZXN1bHRzXQorICAgICAgICBzZWNvbmRfcmVzdWx0cyA9IHNlbGYuX2Rl
bGVnYXRlLmxheW91dF90ZXN0X3Jlc3VsdHMoKQorICAgICAgICBmaXJzdF9mYWlsaW5nX3Rlc3Rz
ID0gW10gaWYgbm90IGZpcnN0X3Jlc3VsdHMgZWxzZSBmaXJzdF9yZXN1bHRzLmZhaWxpbmdfdGVz
dHMoKQorICAgICAgICBzZWNvbmRfZmFpbGluZ190ZXN0cyA9IFtdIGlmIG5vdCBzZWNvbmRfcmVz
dWx0cyBlbHNlIHNlY29uZF9yZXN1bHRzLmZhaWxpbmdfdGVzdHMoKQorCiAgICAgICAgIGlmIGZp
cnN0X2ZhaWxpbmdfdGVzdHMgIT0gc2Vjb25kX2ZhaWxpbmdfdGVzdHM6CiAgICAgICAgICAgICAj
IFdlIGNvdWxkIHJlcG9ydCBmbGFreSB0ZXN0cyBoZXJlLCBidXQgc2luY2UgcnVuLXdlYmtpdC10
ZXN0cwotICAgICAgICAgICAgIyBpcyBydW4gd2l0aCAtLWV4aXQtYWZ0ZXItTi1mYWlsdXJlcz0x
LCB3ZSB3b3VsZCBuZWVkIHRvCisgICAgICAgICAgICAjIGlzIGN1cnJlbnRseSBydW4gd2l0aCAt
LWV4aXQtYWZ0ZXItTi1mYWlsdXJlcz0xLCB3ZSB3b3VsZCBuZWVkIHRvCiAgICAgICAgICAgICAj
IGJlIGNhcmVmdWwgbm90IHRvIHJlcG9ydCBjb25zdGFudCBmYWlsdXJlcyBhcyBmbGFreSBkdWUg
dG8gZWFybGllcgogICAgICAgICAgICAgIyBmbGFreSB0ZXN0IG1ha2luZyB0aGVtIG5vdCBmYWls
IChubyByZXN1bHRzKSBpbiBvbmUgb2YgdGhlIHJ1bnMuCiAgICAgICAgICAgICAjIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTEyNzIKICAgICAgICAgICAgIHJl
dHVybiBGYWxzZQogCiAgICAgICAgIGlmIHNlbGYuX2J1aWxkX2FuZF90ZXN0X3dpdGhvdXRfcGF0
Y2goKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnJlcG9ydF9mYWlsdXJlKGZpcnN0X3Jlc3Vs
dHNfYXJjaGl2ZSkgICMgVGhlIGVycm9yIGZyb20gdGhlIHByZXZpb3VzIC5fdGVzdCgpIHJ1biBp
cyByZWFsLCByZXBvcnQgaXQuCisgICAgICAgICAgICAjIFRoZSBlcnJvciBmcm9tIHRoZSBwcmV2
aW91cyAuX3Rlc3QoKSBydW4gaXMgcmVhbCwgcmVwb3J0IGl0LgorICAgICAgICAgICAgcmV0dXJu
IHNlbGYucmVwb3J0X2ZhaWx1cmUoZmlyc3RfcmVzdWx0c19hcmNoaXZlKQorCisgICAgICAgIHNl
bGYuX2V4cGVjdGVkX2ZhaWx1cmVzLmdyb3dfZXhwZWN0ZWRfZmFpbHVyZXMoc2VsZi5fZGVsZWdh
dGUubGF5b3V0X3Rlc3RfcmVzdWx0cygpKQorCiAgICAgICAgIHJldHVybiBGYWxzZSAgIyBUcmVl
IG11c3QgYmUgcmVkLCBqdXN0IHJldHJ5IGxhdGVyLgogCiAgICAgZGVmIHJlc3VsdHNfYXJjaGl2
ZV9mcm9tX3BhdGNoX3Rlc3RfcnVuKHNlbGYsIHBhdGNoKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHkK
aW5kZXggODdkMGFiNTgyYTQzNDlmYzA3MDM4NGNjZjE5ZGRiN2QyZWY3MjQxMi4uZGM2ZWM2NzE3
YmIzN2ViODc4ZTExMDUyNTZmOGFmMzNhMGQxMzVlNSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHkK
QEAgLTMwLDYgKzMwLDcgQEAgZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKIGltcG9ydCB1
bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQgaW1wb3J0IGJ1Z3ppbGxhCitmcm9t
IHdlYmtpdHB5LmNvbW1vbi5uZXQubGF5b3V0dGVzdHJlc3VsdHMgaW1wb3J0IExheW91dFRlc3RS
ZXN1bHRzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZGVwcmVjYXRlZF9sb2dnaW5nIGlt
cG9ydCBlcnJvciwgbG9nCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVy
ZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0
X3BhY2thZ2UgaW1wb3J0IHRlc3RfcmVzdWx0cwpAQCAtNzcsOSArNzgsNiBAQCBjbGFzcyBNb2Nr
Q29tbWl0UXVldWUoQ29tbWl0UXVldWVUYXNrRGVsZWdhdGUpOgogCiAKIGNsYXNzIENvbW1pdFF1
ZXVlVGFza1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBfbW9ja190ZXN0X3Jlc3Vs
dChzZWxmLCB0ZXN0bmFtZSk6Ci0gICAgICAgIHJldHVybiB0ZXN0X3Jlc3VsdHMuVGVzdFJlc3Vs
dCh0ZXN0bmFtZSwgW3Rlc3RfZmFpbHVyZXMuRmFpbHVyZVRleHRNaXNtYXRjaCgpXSkKLQogICAg
IGRlZiBfcnVuX3Rocm91Z2hfdGFzayhzZWxmLCBjb21taXRfcXVldWUsIGV4cGVjdGVkX3N0ZGVy
ciwgZXhwZWN0ZWRfZXhjZXB0aW9uPU5vbmUsIGV4cGVjdF9yZXRyeT1GYWxzZSk6CiAgICAgICAg
IHRvb2wgPSBNb2NrVG9vbChsb2dfZXhlY3V0aXZlPVRydWUpCiAgICAgICAgIHBhdGNoID0gdG9v
bC5idWdzLmZldGNoX2F0dGFjaG1lbnQoMTk3KQpAQCAtMTkwLDYgKzE4OCw5IEBAIGNvbW1hbmRf
ZmFpbGVkOiBmYWlsdXJlX21lc3NhZ2U9J1VuYWJsZSB0byBidWlsZCB3aXRob3V0IHBhdGNoJyBz
Y3JpcHRfZXJyb3I9J01PCiAgICAgICAgICAgICBOb25lLAogICAgICAgICAgICAgU2NyaXB0RXJy
b3IoIk1PQ0sgdGVzdHMgZmFpbHVyZSIpLAogICAgICAgICBdKQorICAgICAgICAjIENvbW1pdFF1
ZXVlVGFzayB3aWxsIG9ubHkgcmVwb3J0IGZsYWt5IHRlc3RzIGlmIHdlIHN1Y2Nlc3NmdWxseSBw
YXJzZWQKKyAgICAgICAgIyByZXN1bHRzLmh0bWwgYW5kIHJldHVybmVkIGEgTGF5b3V0VGVzdFJl
c3VsdHMgb2JqZWN0LCBzbyB3ZSBmYWtlIG9uZS4KKyAgICAgICAgY29tbWl0X3F1ZXVlLmxheW91
dF90ZXN0X3Jlc3VsdHMgPSBsYW1iZGE6IExheW91dFRlc3RSZXN1bHRzKFtdKQogICAgICAgICBl
eHBlY3RlZF9zdGRlcnIgPSAiIiJydW5fd2Via2l0X3BhdGNoOiBbJ2NsZWFuJ10KIGNvbW1hbmRf
cGFzc2VkOiBzdWNjZXNzX21lc3NhZ2U9J0NsZWFuZWQgd29ya2luZyBkaXJlY3RvcnknIHBhdGNo
PScxOTcnCiBydW5fd2Via2l0X3BhdGNoOiBbJ3VwZGF0ZSddCkBAIC0yMTcsNiArMjE4LDcgQEAg
Y29tbWFuZF9wYXNzZWQ6IHN1Y2Nlc3NfbWVzc2FnZT0nTGFuZGVkIHBhdGNoJyBwYXRjaD0nMTk3
JwogICAgICAgICAgICAgTm9uZSwKICAgICAgICAgICAgIFNjcmlwdEVycm9yKCJNT0NLIHRlc3Rz
IGZhaWx1cmUiKSwKICAgICAgICAgXSkKKyAgICAgICAgY29tbWl0X3F1ZXVlLmxheW91dF90ZXN0
X3Jlc3VsdHMgPSBsYW1iZGE6IExheW91dFRlc3RSZXN1bHRzKFtdKQogICAgICAgICAjIEl0J3Mg
cG9zc2libGUgZGVsZWdhdGUgdG8gZmFpbCB0byBhcmNoaXZlIGxheW91dCB0ZXN0cywgZG9uJ3Qg
dHJ5IHRvIHJlcG9ydAogICAgICAgICAjIGZsYWt5IHRlc3RzIHdoZW4gdGhhdCBoYXBwZW5zLgog
ICAgICAgICBjb21taXRfcXVldWUuYXJjaGl2ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3VsdHMgPSBs
YW1iZGEgcGF0Y2g6IE5vbmUKQEAgLTIzNywxMCArMjM5LDI1IEBAIGNvbW1hbmRfcGFzc2VkOiBz
dWNjZXNzX21lc3NhZ2U9J0xhbmRlZCBwYXRjaCcgcGF0Y2g9JzE5NycKICIiIgogICAgICAgICBz
ZWxmLl9ydW5fdGhyb3VnaF90YXNrKGNvbW1pdF9xdWV1ZSwgZXhwZWN0ZWRfc3RkZXJyKQogCi0g
ICAgX2RvdWJsZV9mbGFreV90ZXN0X2NvdW50ZXIgPSAwCi0KICAgICBkZWYgdGVzdF9kb3VibGVf
Zmxha3lfdGVzdF9mYWlsdXJlKHNlbGYpOgotICAgICAgICBjb21taXRfcXVldWUgPSBNb2NrQ29t
bWl0UXVldWUoWworICAgICAgICBjbGFzcyBEb3VibGVGbGFreUNvbW1pdFF1ZXVlKE1vY2tDb21t
aXRRdWV1ZSk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZXJyb3JfcGxhbik6Cisg
ICAgICAgICAgICAgICAgTW9ja0NvbW1pdFF1ZXVlLl9faW5pdF9fKHNlbGYsIGVycm9yX3BsYW4p
CisgICAgICAgICAgICAgICAgc2VsZi5fZG91YmxlX2ZsYWt5X3Rlc3RfY291bnRlciA9IDAKKwor
ICAgICAgICAgICAgZGVmIHJ1bl9jb21tYW5kKHNlbGYsIGNvbW1hbmQpOgorICAgICAgICAgICAg
ICAgIHNlbGYuX2RvdWJsZV9mbGFreV90ZXN0X2NvdW50ZXIgKz0gMQorICAgICAgICAgICAgICAg
IE1vY2tDb21taXRRdWV1ZS5ydW5fY29tbWFuZChzZWxmLCBjb21tYW5kKQorCisgICAgICAgICAg
ICBkZWYgX21vY2tfdGVzdF9yZXN1bHQoc2VsZiwgdGVzdG5hbWUpOgorICAgICAgICAgICAgICAg
IHJldHVybiB0ZXN0X3Jlc3VsdHMuVGVzdFJlc3VsdCh0ZXN0bmFtZSwgW3Rlc3RfZmFpbHVyZXMu
RmFpbHVyZVRleHRNaXNtYXRjaCgpXSkKKworICAgICAgICAgICAgZGVmIGxheW91dF90ZXN0X3Jl
c3VsdHMoc2VsZik6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fZG91YmxlX2ZsYWt5X3Rlc3Rf
Y291bnRlciAlIDI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBMYXlvdXRUZXN0UmVzdWx0
cyhbc2VsZi5fbW9ja190ZXN0X3Jlc3VsdCgnZm9vLmh0bWwnKV0pCisgICAgICAgICAgICAgICAg
cmV0dXJuIExheW91dFRlc3RSZXN1bHRzKFtzZWxmLl9tb2NrX3Rlc3RfcmVzdWx0KCdiYXIuaHRt
bCcpXSkKKworICAgICAgICBjb21taXRfcXVldWUgPSBEb3VibGVGbGFreUNvbW1pdFF1ZXVlKFsK
ICAgICAgICAgICAgIE5vbmUsCiAgICAgICAgICAgICBOb25lLAogICAgICAgICAgICAgTm9uZSwK
QEAgLTI2OCwxNSArMjg1LDYgQEAgY29tbWFuZF9mYWlsZWQ6IGZhaWx1cmVfbWVzc2FnZT0nUGF0
Y2ggZG9lcyBub3QgcGFzcyB0ZXN0cycgc2NyaXB0X2Vycm9yPSdNT0NLIHQKICAgICAgICAgdG9v
bCA9IE1vY2tUb29sKGxvZ19leGVjdXRpdmU9VHJ1ZSkKICAgICAgICAgcGF0Y2ggPSB0b29sLmJ1
Z3MuZmV0Y2hfYXR0YWNobWVudCgxOTcpCiAgICAgICAgIHRhc2sgPSBDb21taXRRdWV1ZVRhc2so
Y29tbWl0X3F1ZXVlLCBwYXRjaCkKLSAgICAgICAgc2VsZi5fZG91YmxlX2ZsYWt5X3Rlc3RfY291
bnRlciA9IDAKLQotICAgICAgICBkZWYgbW9ja19mYWlsaW5nX3Jlc3VsdHNfZnJvbV9sYXN0X3J1
bigpOgotICAgICAgICAgICAgQ29tbWl0UXVldWVUYXNrVGVzdC5fZG91YmxlX2ZsYWt5X3Rlc3Rf
Y291bnRlciArPSAxCi0gICAgICAgICAgICBpZiBDb21taXRRdWV1ZVRhc2tUZXN0Ll9kb3VibGVf
Zmxha3lfdGVzdF9jb3VudGVyICUgMjoKLSAgICAgICAgICAgICAgICByZXR1cm4gW3NlbGYuX21v
Y2tfdGVzdF9yZXN1bHQoJ2Zvby5odG1sJyldCi0gICAgICAgICAgICByZXR1cm4gW3NlbGYuX21v
Y2tfdGVzdF9yZXN1bHQoJ2Jhci5odG1sJyldCi0KLSAgICAgICAgdGFzay5fZmFpbGluZ19yZXN1
bHRzX2Zyb21fbGFzdF9ydW4gPSBtb2NrX2ZhaWxpbmdfcmVzdWx0c19mcm9tX2xhc3RfcnVuCiAg
ICAgICAgIHN1Y2Nlc3MgPSBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgdGFz
ay5ydW4sIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3VjY2VzcywgRmFsc2UpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9ib3QvZXhwZWN0ZWRmYWlsdXJlcy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9ib3QvZXhwZWN0ZWRmYWlsdXJlcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzM2YWMwZDFhODlm
MzljMTgxZDQzOGNhZTI1ZTY4OTc4M2ZmYWIyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2JvdC9leHBlY3RlZGZhaWx1cmVzLnB5CkBAIC0wLDAgKzEsNTUg
QEAKKyMgQ29weXJpZ2h0IChjKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2NsYXNzIEV4cGVjdGVkRmFpbHVyZXMob2JqZWN0KToK
KyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuX2ZhaWx1cmVzID0gc2V0KCkK
KworICAgIGRlZiBfY2FuX3RydXN0X3Jlc3VsdHMoc2VsZiwgcmVzdWx0cyk6CisgICAgICAgIGlm
IG5vdCByZXN1bHRzIG9yIG5vdCByZXN1bHRzLmZhaWx1cmVfbGltaXRfY291bnQoKToKKyAgICAg
ICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gbGVuKHJlc3VsdHMuZmFpbGluZ190
ZXN0cygpKSAhPSAwIGFuZCBsZW4ocmVzdWx0cy5mYWlsaW5nX3Rlc3RzKCkpICE9IHJlc3VsdHMu
ZmFpbHVyZV9saW1pdF9jb3VudCgpCisKKyAgICBkZWYgZmFpbHVyZXNfd2VyZV9leHBlY3RlZChz
ZWxmLCByZXN1bHRzKToKKyAgICAgICAgaWYgbm90IHNlbGYuX2Nhbl90cnVzdF9yZXN1bHRzKHJl
c3VsdHMpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBzZXQocmVz
dWx0cy5mYWlsaW5nX3Rlc3RzKCkpIDw9IHNlbGYuX2ZhaWx1cmVzCisKKyAgICBkZWYgc2hyaW5r
X2V4cGVjdGVkX2ZhaWx1cmVzKHNlbGYsIHJlc3VsdHMsIHJ1bl9zdWNjZXNzKToKKyAgICAgICAg
aWYgcnVuX3N1Y2Nlc3M6CisgICAgICAgICAgICBzZWxmLl9mYWlsdXJlcyA9IHNldCgpCisgICAg
ICAgIGVsaWYgc2VsZi5fY2FuX3RydXN0X3Jlc3VsdHMocmVzdWx0cyk6CisgICAgICAgICAgICAj
IFJlbW92ZSBhbGwgZXhwZWN0ZWQgZmFpbHVyZXMgd2hpY2ggYXJlIG5vdCBpbiB0aGUgbmV3IGZh
aWxpbmcgcmVzdWx0cy4KKyAgICAgICAgICAgIHNlbGYuX2ZhaWx1cmVzLmludGVyc2VjdGlvbl91
cGRhdGUoc2V0KHJlc3VsdHMuZmFpbGluZ190ZXN0cygpKSkKKworICAgIGRlZiBncm93X2V4cGVj
dGVkX2ZhaWx1cmVzKHNlbGYsIHJlc3VsdHMpOgorICAgICAgICBpZiBub3Qgc2VsZi5fY2FuX3Ry
dXN0X3Jlc3VsdHMocmVzdWx0cyk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5f
ZmFpbHVyZXMudXBkYXRlKHJlc3VsdHMuZmFpbGluZ190ZXN0cygpKQorICAgICAgICAjIEZJWE1F
OiBTaG91bGQgd2UgYXNzZXJ0KCkgaGVyZSB0aGF0IGV4cGVjdGVkX2ZhaWx1cmVzIG5ldmVyIGNy
b3NzZXMgYSBjZXJ0YWluIHNpemU/CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvYm90L2V4cGVjdGVkZmFpbHVyZXNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvYm90L2V4cGVjdGVkZmFpbHVyZXNfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGEyNzAyYmNmMDA1MWNiYjk0NWY5MjBlNDhkMzU0OTRjNTEyZmEwNwotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvZXhwZWN0ZWRmYWlsdXJlc191bml0
dGVzdC5weQpAQCAtMCwwICsxLDczIEBACisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
IyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHVuaXR0
ZXN0CisKK2Zyb20gd2Via2l0cHkudG9vbC5ib3QuZXhwZWN0ZWRmYWlsdXJlcyBpbXBvcnQgRXhw
ZWN0ZWRGYWlsdXJlcworCisKK2NsYXNzIE1vY2tSZXN1bHRzKG9iamVjdCk6CisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGZhaWxpbmdfdGVzdHM9W10sIGZhaWx1cmVfbGltaXQ9MTApOgorICAgICAg
ICBzZWxmLl9mYWlsaW5nX3Rlc3RzID0gZmFpbGluZ190ZXN0cworICAgICAgICBzZWxmLl9mYWls
dXJlX2xpbWl0X2NvdW50ID0gZmFpbHVyZV9saW1pdAorCisgICAgZGVmIGZhaWx1cmVfbGltaXRf
Y291bnQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9mYWlsdXJlX2xpbWl0X2NvdW50CisK
KyAgICBkZWYgZmFpbGluZ190ZXN0cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZhaWxp
bmdfdGVzdHMKKworCitjbGFzcyBFeHBlY3RlZEZhaWx1cmVzVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CisgICAgZGVmIF9hc3NlcnRfY2FuX3RydXN0KHNlbGYsIHJlc3VsdHMsIGNhbl90cnVzdCk6
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKEV4cGVjdGVkRmFpbHVyZXMoKS5fY2FuX3RydXN0
X3Jlc3VsdHMocmVzdWx0cyksIGNhbl90cnVzdCkKKworICAgIGRlZiB0ZXN0X2Nhbl90cnVzdF9y
ZXN1bHRzKHNlbGYpOgorICAgICAgICBzZWxmLl9hc3NlcnRfY2FuX3RydXN0KE5vbmUsIEZhbHNl
KQorICAgICAgICBzZWxmLl9hc3NlcnRfY2FuX3RydXN0KE1vY2tSZXN1bHRzKGZhaWxpbmdfdGVz
dHM9W10sIGZhaWx1cmVfbGltaXQ9Tm9uZSksIEZhbHNlKQorICAgICAgICBzZWxmLl9hc3NlcnRf
Y2FuX3RydXN0KE1vY2tSZXN1bHRzKGZhaWxpbmdfdGVzdHM9W10sIGZhaWx1cmVfbGltaXQ9MTAp
LCBGYWxzZSkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2Nhbl90cnVzdChNb2NrUmVzdWx0cyhmYWls
aW5nX3Rlc3RzPVsxXSwgZmFpbHVyZV9saW1pdD1Ob25lKSwgRmFsc2UpCisgICAgICAgIHNlbGYu
X2Fzc2VydF9jYW5fdHJ1c3QoTW9ja1Jlc3VsdHMoZmFpbGluZ190ZXN0cz1bMV0sIGZhaWx1cmVf
bGltaXQ9MiksIFRydWUpCisgICAgICAgIHNlbGYuX2Fzc2VydF9jYW5fdHJ1c3QoTW9ja1Jlc3Vs
dHMoZmFpbGluZ190ZXN0cz1bMV0sIGZhaWx1cmVfbGltaXQ9MSksIEZhbHNlKQorCisgICAgZGVm
IF9hc3NlcnRfZXhwZWN0ZWQoc2VsZiwgZXhwZWN0ZWRfZmFpbHVyZXMsIGZhaWx1cmVzLCBleHBl
Y3RlZCk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfZmFpbHVyZXMuZmFpbHVy
ZXNfd2VyZV9leHBlY3RlZChNb2NrUmVzdWx0cyhmYWlsdXJlcykpLCBleHBlY3RlZCkKKworICAg
IGRlZiB0ZXN0X2ZhaWx1cmVzX3dlcmVfZXhwZWN0ZWQoc2VsZik6CisgICAgICAgIGZhaWx1cmVz
ID0gRXhwZWN0ZWRGYWlsdXJlcygpCisgICAgICAgIGZhaWx1cmVzLmdyb3dfZXhwZWN0ZWRfZmFp
bHVyZXMoTW9ja1Jlc3VsdHMoWydmb28uaHRtbCddKSkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2V4
cGVjdGVkKGZhaWx1cmVzLCBbJ2Zvby5odG1sJ10sIFRydWUpCisgICAgICAgIHNlbGYuX2Fzc2Vy
dF9leHBlY3RlZChmYWlsdXJlcywgWydiYXIuaHRtbCddLCBGYWxzZSkKKyAgICAgICAgZmFpbHVy
ZXMuc2hyaW5rX2V4cGVjdGVkX2ZhaWx1cmVzKE1vY2tSZXN1bHRzKFsnYmF6Lmh0bWwnXSksIEZh
bHNlKQorICAgICAgICBzZWxmLl9hc3NlcnRfZXhwZWN0ZWQoZmFpbHVyZXMsIFsnZm9vLmh0bWwn
XSwgRmFsc2UpCisgICAgICAgIHNlbGYuX2Fzc2VydF9leHBlY3RlZChmYWlsdXJlcywgWydiYXou
aHRtbCddLCBGYWxzZSkKKworICAgICAgICBmYWlsdXJlcy5ncm93X2V4cGVjdGVkX2ZhaWx1cmVz
KE1vY2tSZXN1bHRzKFsnYmF6Lmh0bWwnXSkpCisgICAgICAgIHNlbGYuX2Fzc2VydF9leHBlY3Rl
ZChmYWlsdXJlcywgWydiYXouaHRtbCddLCBUcnVlKQorICAgICAgICBmYWlsdXJlcy5zaHJpbmtf
ZXhwZWN0ZWRfZmFpbHVyZXMoTW9ja1Jlc3VsdHMoKSwgVHJ1ZSkKKyAgICAgICAgc2VsZi5fYXNz
ZXJ0X2V4cGVjdGVkKGZhaWx1cmVzLCBbJ2Jhei5odG1sJ10sIEZhbHNlKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkKaW5kZXggNTYzNjI0OTgzMmMx
MmRjYjEyZjg5MjNlZDgxZGZmYmRiZmY5ZTU1NC4uMDVkNDNhNWQyNzYwNzU1NzZjYjY5OWQ1Mjg0
YjNiNDRhZGFmYWQ2MiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2Nv
bW1hbmRzL3F1ZXVlcy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvcXVldWVzLnB5CkBAIC01MCw2ICs1MCw3IEBAIGZyb20gd2Via2l0cHkudG9vbC5ib3QuZmVl
ZGVycyBpbXBvcnQgQ29tbWl0UXVldWVGZWVkZXIsIEVXU0ZlZWRlcgogZnJvbSB3ZWJraXRweS50
b29sLmJvdC5xdWV1ZWVuZ2luZSBpbXBvcnQgUXVldWVFbmdpbmUsIFF1ZXVlRW5naW5lRGVsZWdh
dGUKIGZyb20gd2Via2l0cHkudG9vbC5ib3QuZmxha3l0ZXN0cmVwb3J0ZXIgaW1wb3J0IEZsYWt5
VGVzdFJlcG9ydGVyCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuc3RlcHNlcXVlbmNlIGlt
cG9ydCBTdGVwU2VxdWVuY2VFcnJvckhhbmRsZXIKK2Zyb20gd2Via2l0cHkudG9vbC5zdGVwcy5y
dW50ZXN0cyBpbXBvcnQgUnVuVGVzdHMKIGZyb20gd2Via2l0cHkudG9vbC5tdWx0aWNvbW1hbmR0
b29sIGltcG9ydCBDb21tYW5kLCBUcnlBZ2FpbgogCiAKQEAgLTMxNCw4ICszMTUsNyBAQCBjbGFz
cyBDb21taXRRdWV1ZShBYnN0cmFjdFBhdGNoUXVldWUsIFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxl
ciwgQ29tbWl0UXVldWVUYXNrRAogICAgICMgdG9vbC5maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxl
LiAgVGhleSBoYXZlIGRpZmZlcmVudCBlcnJvciBoYW5kbGluZyBhdCB0aGUgbW9tZW50LgogICAg
IGRlZiBfcmVhZF9maWxlX2NvbnRlbnRzKHNlbGYsIHBhdGgpOgogICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHBhdGgsICJyIiwgInV0Zi04IikgYXMgb3Blbl9maWxl
OgotICAgICAgICAgICAgICAgIHJldHVybiBvcGVuX2ZpbGUucmVhZCgpCisgICAgICAgICAgICBy
ZXR1cm4gc2VsZi5fdG9vbC5maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKHBhdGgpCiAgICAgICAg
IGV4Y2VwdCBPU0Vycm9yLCBlOiAgIyBGaWxlIGRvZXMgbm90IGV4aXN0IG9yIGNhbid0IGJlIHJl
YWQuCiAgICAgICAgICAgICByZXR1cm4gTm9uZQogCkBAIC0zMjUsNyArMzI1LDExIEBAIGNsYXNz
IENvbW1pdFF1ZXVlKEFic3RyYWN0UGF0Y2hRdWV1ZSwgU3RlcFNlcXVlbmNlRXJyb3JIYW5kbGVy
LCBDb21taXRRdWV1ZVRhc2tECiAgICAgICAgIHJlc3VsdHNfaHRtbCA9IHNlbGYuX3JlYWRfZmls
ZV9jb250ZW50cyhyZXN1bHRzX3BhdGgpCiAgICAgICAgIGlmIG5vdCByZXN1bHRzX2h0bWw6CiAg
ICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gTGF5b3V0VGVzdFJlc3VsdHMu
cmVzdWx0c19mcm9tX3N0cmluZyhyZXN1bHRzX2h0bWwpCisgICAgICAgICMgRklYTUU6IFdlIHNo
b3VsZCBub3QgaGF2ZSB0byBwYXNzIGEgZmFpbHVyZV9saW1pdF9jb3VudCwgYnV0IHdlCisgICAg
ICAgICMgZG8gdW50aWwgcnVuLXdlYmtpdC10ZXN0cyBjYW4gYmUgdXBkYXRlZCBzYXZlIG9mZiB0
aGUgdmFsdWUKKyAgICAgICAgIyBvZiAtLWV4aXQtYWZ0ZXItTi1mYWlsdXJlcyBpbiByZXN1bHRz
Lmh0bWwvcmVzdWx0cy5qc29uLgorICAgICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01ODQ4MQorICAgICAgICByZXR1cm4gTGF5b3V0VGVzdFJlc3VsdHMucmVz
dWx0c19mcm9tX3N0cmluZyhyZXN1bHRzX2h0bWwsIGZhaWx1cmVfbGltaXRfY291bnQ9UnVuVGVz
dHMuTk9OX0lOVEVSQUNUSVZFX0ZBSUxVUkVfTElNSVRfQ09VTlQpCiAKICAgICBkZWYgX3Jlc3Vs
dHNfZGlyZWN0b3J5KHNlbGYpOgogICAgICAgICByZXN1bHRzX3BhdGggPSBzZWxmLl90b29sLnBv
cnQoKS5sYXlvdXRfdGVzdHNfcmVzdWx0c19wYXRoKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5CmluZGV4IDgyMzM2
MTc0YjMxZWRhZTU0ZGMzZTQ0NGQ4MDhmMjRhNDk2MWU2NGEuLjgyM2Y5ODBjMDFiOTA4MWFkNjA0
NDAxNjljNzUyY2VmMjZlOTE2NGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weQpAQCAtMjUzLDYgKzI1Myw3IEBA
IE1PQ0s6IHJlbGVhc2Vfd29ya19pdGVtOiBjb21taXQtcXVldWUgMTk3CiAKICAgICBkZWYgdGVz
dF9yb2xsb3V0KHNlbGYpOgogICAgICAgICB0b29sID0gTW9ja1Rvb2wobG9nX2V4ZWN1dGl2ZT1U
cnVlKQorICAgICAgICB0b29sLmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKCcvbW9jay9yZXN1
bHRzLmh0bWwnLCAnJykgICMgT3RoZXJ3aXNlIHRoZSBjb21taXQtcXVldWUgd2lsbCBoaXQgYSBL
ZXlFcnJvciB0cnlpbmcgdG8gcmVhZCB0aGUgcmVzdWx0cyBmcm9tIHRoZSBNb2NrRmlsZVN5c3Rl
bS4KICAgICAgICAgdG9vbC5idWlsZGJvdC5saWdodF90cmVlX29uX2ZpcmUoKQogICAgICAgICBl
eHBlY3RlZF9zdGRlcnIgPSB7CiAgICAgICAgICAgICAiYmVnaW5fd29ya19xdWV1ZSI6IHNlbGYu
X2RlZmF1bHRfYmVnaW5fd29ya19xdWV1ZV9zdGRlcnIoImNvbW1pdC1xdWV1ZSIsIE1vY2tTQ00u
ZmFrZV9jaGVja291dF9yb290KSwKQEAgLTMyMSw2ICszMjIsNyBAQCBNT0NLOiByZWxlYXNlX3dv
cmtfaXRlbTogY29tbWl0LXF1ZXVlIDEwNgogICAgIGRlZiB0ZXN0X21hbnVhbF9yZWplY3RfZHVy
aW5nX3Byb2Nlc3Npbmcoc2VsZik6CiAgICAgICAgIHF1ZXVlID0gU2Vjb25kVGhvdWdodHNDb21t
aXRRdWV1ZSgpCiAgICAgICAgIHF1ZXVlLmJpbmRfdG9fdG9vbChNb2NrVG9vbCgpKQorICAgICAg
ICBxdWV1ZS5fdG9vbC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZSgnL21vY2svcmVzdWx0cy5o
dG1sJywgJycpICAjIE90aGVyd2lzZSB0aGUgY29tbWl0LXF1ZXVlIHdpbGwgaGl0IGEgS2V5RXJy
b3IgdHJ5aW5nIHRvIHJlYWQgdGhlIHJlc3VsdHMgZnJvbSB0aGUgTW9ja0ZpbGVTeXN0ZW0uCiAg
ICAgICAgIHF1ZXVlLl9vcHRpb25zID0gTW9jaygpCiAgICAgICAgIHF1ZXVlLl9vcHRpb25zLnBv
cnQgPSBOb25lCiAgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICIiIk1PQ0s6IHVwZGF0ZV9zdGF0
dXM6IGNvbW1pdC1xdWV1ZSBDbGVhbmVkIHdvcmtpbmcgZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzdGVzdC5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXN0ZXN0LnB5CmluZGV4IDY0NTU2
MTcyNGZiYmVjNzEzNmE5MTdlMTBlYWVhOGJjOTVmMWQ4Y2IuLjc1ODgzMmVhYTFiMWUzNGMwZDg5
MWRkYjkzODU0ZjVhMGE3OTgyY2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9jb21tYW5kcy9xdWV1ZXN0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9jb21tYW5kcy9xdWV1ZXN0ZXN0LnB5CkBAIC02Nyw2ICs2Nyw5IEBAIGNsYXNzIFF1ZXVl
c1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBhc3NlcnRfcXVldWVfb3V0cHV0cyhz
ZWxmLCBxdWV1ZSwgYXJncz1Ob25lLCB3b3JrX2l0ZW09Tm9uZSwgZXhwZWN0ZWRfc3Rkb3V0PU5v
bmUsIGV4cGVjdGVkX3N0ZGVycj1Ob25lLCBleHBlY3RlZF9leGNlcHRpb25zPU5vbmUsIG9wdGlv
bnM9Tm9uZSwgdG9vbD1Ob25lKToKICAgICAgICAgaWYgbm90IHRvb2w6CiAgICAgICAgICAgICB0
b29sID0gTW9ja1Rvb2woKQorICAgICAgICAgICAgIyBUaGlzIGlzIGEgaGFjayB0byBtYWtlIGl0
IGVhc3kgZm9yIGNhbGxlcnMgdG8gbm90IGhhdmUgdG8gc2V0dXAgYSBjdXN0b20gTW9ja0ZpbGVT
eXN0ZW0ganVzdCB0byB0ZXN0IHRoZSBjb21taXQtcXVldWUKKyAgICAgICAgICAgICMgdGhlIGNx
IHRyaWVzIHRvIHJlYWQgdGhlIGxheW91dCB0ZXN0IHJlc3VsdHMsIGFuZCB3aWxsIGhpdCBhIEtl
eUVycm9yIGluIE1vY2tGaWxlU3lzdGVtIGlmIHdlIGRvbid0IGRvIHRoaXMuCisgICAgICAgICAg
ICB0b29sLmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKCcvbW9jay9yZXN1bHRzLmh0bWwnLCAi
IikKICAgICAgICAgaWYgbm90IGV4cGVjdGVkX3N0ZG91dDoKICAgICAgICAgICAgIGV4cGVjdGVk
X3N0ZG91dCA9IHt9CiAgICAgICAgIGlmIG5vdCBleHBlY3RlZF9zdGRlcnI6CmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcnVudGVzdHMucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcnVudGVzdHMucHkKaW5kZXggMjgyZTM4MTAzMGEw
MzQ0NGI2ZTdjYTQ2NGNkZWVmYmU4ZWNkYjdjNi4uOTYxNWJlMjFlNTI2OTQzN2JmOTAxMjE4NzAy
Zjc1NTIzZjcxZTQxNyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0
ZXBzL3J1bnRlc3RzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9y
dW50ZXN0cy5weQpAQCAtMzEsNiArMzEsOSBAQCBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMub3B0
aW9ucyBpbXBvcnQgT3B0aW9ucwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJlY2F0
ZWRfbG9nZ2luZyBpbXBvcnQgbG9nCiAKIGNsYXNzIFJ1blRlc3RzKEFic3RyYWN0U3RlcCk6Cisg
ICAgIyBGSVhNRTogVGhpcyBrbm93bGVkZ2UgcmVhbGx5IGJlbG9uZ3MgaW4gdGhlIGNvbW1pdC1x
dWV1ZS4KKyAgICBOT05fSU5URVJBQ1RJVkVfRkFJTFVSRV9MSU1JVF9DT1VOVCA9IDEKKwogICAg
IEBjbGFzc21ldGhvZAogICAgIGRlZiBvcHRpb25zKGNscyk6CiAgICAgICAgIHJldHVybiBBYnN0
cmFjdFN0ZXAub3B0aW9ucygpICsgWwpAQCAtNTksNyArNjIsNyBAQCBjbGFzcyBSdW5UZXN0cyhB
YnN0cmFjdFN0ZXApOgogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLm5vbl9pbnRlcmFjdGl2ZToK
ICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCItLW5vLW5ldy10ZXN0LXJlc3VsdHMiKQogICAgICAg
ICAgICAgYXJncy5hcHBlbmQoIi0tbm8tbGF1bmNoLXNhZmFyaSIpCi0gICAgICAgICAgICBhcmdz
LmFwcGVuZCgiLS1leGl0LWFmdGVyLW4tZmFpbHVyZXM9MSIpCisgICAgICAgICAgICBhcmdzLmFw
cGVuZCgiLS1leGl0LWFmdGVyLW4tZmFpbHVyZXM9JXMiICUgc2VsZi5OT05fSU5URVJBQ1RJVkVf
RkFJTFVSRV9MSU1JVF9DT1VOVCkKICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCItLXdhaXQtZm9y
LWh0dHBkIikKICAgICAgICAgICAgICMgRklYTUU6IEhhY2sgdG8gd29yayBhcm91bmQgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4OTEyCiAgICAgICAgICAgICAjIHdo
ZW4gcnVubmluZyB0aGUgY29tbWl0LXF1ZXVlIG9uIGEgbWFjIGxlb3BhcmQgbWFjaGluZSBzaW5j
ZSBjb21wb3NpdGluZwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89495</attachid>
            <date>2011-04-13 17:13:46 -0700</date>
            <delta_ts>2011-04-13 17:17:44 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-58494-20110413171345.patch</filename>
            <type>text/plain</type>
            <size>26849</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM3MjUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhODFhZjNiOTc0ZTk3NmMxMWNlOTAyNjI1NjhmZDdiNTJh
MTIzMDE4Li45MTQzYzc1OWI5YTBjOWRlNjYwZTdiNjUwMDYzMzIwYjAwOWM3NWM0IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkg
QEAKKzIwMTEtMDQtMTMgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgY29tbWl0LXF1ZXVlIHNob3VsZCBi
ZSBhYmxlIHRvIGxhbmQgd2hlbiB0cmVlIGlzIHJlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg0OTQKKworICAgICAgICBUaGVyZSBpcyBzb21lIHlh
ayBoYWlyIG9uIG15IGhhbmRzLCBJIHdpbGwgYWRtaXQuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
aXMgbW9zdGx5IGFib3V0IGFkZGluZyBhbiBFeHBlY3RlZEZhaWx1cmVzCisgICAgICAgIGNsYXNz
IHRvIHRyYWNrIHdoZW4gdGhlIGJvdHMgYXJlIHJlZCBhbmQgd2Ugc2hvdWxkIGJlCisgICAgICAg
IGlnbm9yaW5nIGZhaWx1cmVzIHdoZW4gbGFuZGluZyBmcm9tIHRoZSBjb21taXQtcXVldWUuCisK
KyAgICAgICAgSG93ZXZlciwgdG8gbWFrZSBpbnRlbGxpZ2VudCBkZWNpc2lvbnMgYWJvdXQgcGF0
Y2hlcyB3ZQorICAgICAgICBuZWVkIHRvIGtub3cgd2hldGhlciB0aGUgcnVuIGhpdCB0aGUgLS1l
eGl0LWFmdGVyLU4tZmFpbHVyZXMgbGltaXQKKyAgICAgICAgb3Igbm90LiAgUmlnaHQgbm93IHRo
YXQgaW5mb3JtYXRpb24gaXMgbm90IHNhdmVkIG9mZiBpbiByZXN1bHRzLmh0bWwKKyAgICAgICAg
c28gd2UgaGF2ZSB0byBwdWxsIHRoZSBpbmZvcm1hdGlvbiBmcm9tIFJ1blRlc3RzLgorCisgICAg
ICAgIEkndmUgcGx1bWJlZCB0aGUgLS1leGl0LWFmdGVyLU4tZmFpbHVyZXMgaW5mb3JtYXRpb24g
aW50bworICAgICAgICBMYXlvdXRUZXN0UmVzdWx0cyBmb3Igbm93IHRvIG1ha2UgdGhlIEV4cGVj
dGVkRmFpbHVyZXMgY29kZSBjbGVhbmVyLgorCisgICAgICAgIEFzIGEgcmVzdWx0IG9mIGFkZGlu
ZyBhbGwgdGhlc2UgYWRkaXRpb25hbCBjYWxscyB0byBkZWxlZ2F0ZS5sYXlvdXRfdGVzdF9yZXN1
bHRzKCkKKyAgICAgICAgSSBicm9rZSBzb21lIG9mIG91ciBmbGFreSB0ZXN0IGRldGVjdGlvbiB0
ZXN0cyBhbmQgaGFkIHRvIHJlLXdyaXRlIHRoZW0KKyAgICAgICAgdG8gbm90IGRlcGVuZCBvbiB0
aGUgbnVtYmVyIG9mIGxheW91dF90ZXN0X3Jlc3VsdHMgY29kZS4KKworICAgICAgICBBdCB0aGUg
c2FtZSB0aW1lIEkgdXBkYXRlZCB0aGUgY29tbWl0LXF1ZXVlIHRvIHVzZSB0aGUgbmV3ZXIgZmls
ZXN5c3RlbQorICAgICAgICBBUEkgKHRvIGFsbG93IHVzIHRvIHVzZSBNb2NrRmlsZVN5c3RlbSkg
d2hpY2ggcmVxdWlyZWQgZnVydGhlciBjaGFuZ2VzCisgICAgICAgIHRvIHRoZSBsYXlvdXQgdGVz
dHMuICBDaGFuZ2VzIHdlcmUgcmVxdWlyZWQgaW4gZWl0aGVyIGNhc2UsIHNpbmNlCisgICAgICAg
IHdlJ3JlIG5vdyBjYWxsaW5nIGxheW91dF90ZXN0X3Jlc3VsdHMoKSBpbiBtb3JlIGNhc2VzLCB3
aGljaCBwcmV2aW91c2x5CisgICAgICAgIHdvdWxkIHRyeSBhbmQgaGl0IHRoZSBkaXNrICh1bnRp
bCBJIG1vdmVkIGl0IHRvIHVzZSB0b29sLmZpbGVzeXN0ZW0pLgorCisgICAgICAgIEkgc2hvdWxk
IG5vdGUgdGhhdCAqYWxsKiBvZiB0aGlzIGNvZGUgaXMgZGlzYWJsZWQgZm9yIG5vdywgc2luY2Ug
b3VyCisgICAgICAgIC0tZXhpdC1hZnRlci1OLWZhaWx1cmVzIGxpbWl0IGlzIGN1cnJlbnRseSAx
ISAgKFRodXMgd2VyZSBhbHdheXMgaW4gdGhlCisgICAgICAgIGNhc2Ugd2hlcmUgd2UgY2FuJ3Qg
YWN0dWFsbHkgdGVsbCBpZiB0aGUgbGF5b3V0IHRlc3QgcmVzdWx0cyBhcmUgbGVnaXQuKQorICAg
ICAgICBJIHdpbGwgdXAgdGhhdCBsaW1pdCBpbiBhIHNlY29uZCBwYXRjaCAod2hpY2ggbWF5IHJl
cXVpcmUgYSBjb3VwbGUgbW9yZSB1bml0IHRlc3QgdHdlYWtzKS4KKworICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFzay5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFza191bml0dGVzdC5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2V4cGVjdGVkZmFpbHVyZXMucHk6IEFk
ZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvZXhwZWN0ZWRmYWlsdXJl
c191bml0dGVzdC5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2Nv
bW1hbmRzL3F1ZXVlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvcXVldWVzX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9xdWV1ZXN0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9z
dGVwcy9ydW50ZXN0cy5weToKKwogMjAxMS0wNC0xMiAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRz
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRz
LnB5CmluZGV4IDI0OWVjYzljMGMzNDM0ZGVmMDRjMWMwZDI1MDgyZmVkOGFlZTY4ZDcuLjU3YmQ0
YzEwMzkxMzU0NTIwNTExMzgyNWM0MWQ3N2I3MzZjMGNkMzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHkKQEAgLTEz
Miw4ICsxMzIsMTkgQEAgY2xhc3MgTGF5b3V0VGVzdFJlc3VsdHMob2JqZWN0KToKICAgICAgICAg
ICAgIHJldHVybiBOb25lCiAgICAgICAgIHJldHVybiBjbHModGVzdF9yZXN1bHRzKQogCi0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfcmVzdWx0cyk6CisgICAgIyBGSVhNRTogcnVuLXdlYmtp
dC10ZXN0cyBzaG91bGQgc3RvcmUgdGhlIC0tZXhpdC1hZnRlci1OLWZhaWx1cmVzIHZhbHVlCisg
ICAgIyAob3Igc29tZSBpbmRpY2F0aW9uIG9mIGVhcmx5IGV4aXQpIHNvbWV3aGVyZSBpbiB0aGUg
cmVzdWx0cy5odG1sL3Jlc3VsdHMuanNvbgorICAgICMgZmlsZS4gIFVudGlsIGl0IGRvZXMsIHdl
IGRlcGVuZCBvbiBjYWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24gdG8gY3JlYXRlCisgICAgIyBMYXlv
dXRUZXN0UmVzdWx0cyB3aXRoIGEgZmFpbHVyZV9saW1pdF9jb3VudCB2YWx1ZSwgcmVwcmVzZW50
aW5nIHRoZQorICAgICMgLS1leGl0LWFmdGVyLU4tZmFpbHVyZXMgdmFsdWUgdXNlZCBpbiB0aGF0
IHJ1bi4gIENvbnN1bWVycyBvZiBMYXlvdXRUZXN0UmVzdWx0cworICAgICMgd2lsbCB1c2UgdGhh
dCB2YWx1ZSB0byBrbm93IGlmIGFic2VuY2UgZnJvbSB0aGUgZmFpbHVyZSBsaXN0IG1lYW5zIFBB
U1MuCisgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg0ODEK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdF9yZXN1bHRzLCBmYWlsdXJlX2xpbWl0X2NvdW50
PU5vbmUpOgogICAgICAgICBzZWxmLl90ZXN0X3Jlc3VsdHMgPSB0ZXN0X3Jlc3VsdHMKKyAgICAg
ICAgc2VsZi5fZmFpbHVyZV9saW1pdF9jb3VudCA9IGZhaWx1cmVfbGltaXRfY291bnQKKworICAg
IGRlZiBmYWlsdXJlX2xpbWl0X2NvdW50KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fZmFp
bHVyZV9saW1pdF9jb3VudAogCiAgICAgZGVmIHRlc3RfcmVzdWx0cyhzZWxmKToKICAgICAgICAg
cmV0dXJuIHNlbGYuX3Rlc3RfcmVzdWx0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2sucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFzay5weQppbmRleCBlOTlkZDE5NDEzMzgzY2MwNDQ5NDc0
OThhYTFlYzdmZGFiZjY3YmE3Li4wYWYyNDg5NjU0YzZhYWQwMDcxYTRmYjZhMTMyZjIzNzkwZGY3
OWU4IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1
ZXVldGFzay5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1
ZXVldGFzay5weQpAQCAtMjgsNiArMjgsNyBAQAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0
LmxheW91dHRlc3RyZXN1bHRzIGltcG9ydCBMYXlvdXRUZXN0UmVzdWx0cworZnJvbSB3ZWJraXRw
eS50b29sLmJvdC5leHBlY3RlZGZhaWx1cmVzIGltcG9ydCBFeHBlY3RlZEZhaWx1cmVzCiAKIAog
Y2xhc3MgQ29tbWl0UXVldWVUYXNrRGVsZWdhdGUob2JqZWN0KToKQEAgLTYwLDYgKzYxLDcgQEAg
Y2xhc3MgQ29tbWl0UXVldWVUYXNrKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX3BhdGNoID0gcGF0
Y2gKICAgICAgICAgc2VsZi5fc2NyaXB0X2Vycm9yID0gTm9uZQogICAgICAgICBzZWxmLl9yZXN1
bHRzX2FyY2hpdmVfZnJvbV9wYXRjaF90ZXN0X3J1biA9IE5vbmUKKyAgICAgICAgc2VsZi5fZXhw
ZWN0ZWRfZmFpbHVyZXMgPSBFeHBlY3RlZEZhaWx1cmVzKCkKIAogICAgIGRlZiBfdmFsaWRhdGUo
c2VsZik6CiAgICAgICAgICMgQnVncyBtaWdodCBnZXQgY2xvc2VkLCBvciBwYXRjaGVzIG1pZ2h0
IGJlIG9ic29sZXRlZCBvciByLSdkIHdoaWxlIHRoZQpAQCAtMTMzLDcgKzEzNSw3IEBAIGNsYXNz
IENvbW1pdFF1ZXVlVGFzayhvYmplY3QpOgogICAgICAgICAiVW5hYmxlIHRvIGJ1aWxkIHdpdGhv
dXQgcGF0Y2giKQogCiAgICAgZGVmIF90ZXN0KHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5f
cnVuX2NvbW1hbmQoWworICAgICAgICBzdWNjZXNzID0gc2VsZi5fcnVuX2NvbW1hbmQoWwogICAg
ICAgICAgICAgImJ1aWxkLWFuZC10ZXN0IiwKICAgICAgICAgICAgICItLW5vLWNsZWFuIiwKICAg
ICAgICAgICAgICItLW5vLXVwZGF0ZSIsCkBAIC0xNDQsOCArMTQ2LDExIEBAIGNsYXNzIENvbW1p
dFF1ZXVlVGFzayhvYmplY3QpOgogICAgICAgICAiUGFzc2VkIHRlc3RzIiwKICAgICAgICAgIlBh
dGNoIGRvZXMgbm90IHBhc3MgdGVzdHMiKQogCisgICAgICAgIHNlbGYuX2V4cGVjdGVkX2ZhaWx1
cmVzLnNocmlua19leHBlY3RlZF9mYWlsdXJlcyhzZWxmLl9kZWxlZ2F0ZS5sYXlvdXRfdGVzdF9y
ZXN1bHRzKCksIHN1Y2Nlc3MpCisgICAgICAgIHJldHVybiBzdWNjZXNzCisKICAgICBkZWYgX2J1
aWxkX2FuZF90ZXN0X3dpdGhvdXRfcGF0Y2goc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9y
dW5fY29tbWFuZChbCisgICAgICAgIHN1Y2Nlc3MgPSBzZWxmLl9ydW5fY29tbWFuZChbCiAgICAg
ICAgICAgICAiYnVpbGQtYW5kLXRlc3QiLAogICAgICAgICAgICAgIi0tZm9yY2UtY2xlYW4iLAog
ICAgICAgICAgICAgIi0tbm8tdXBkYXRlIiwKQEAgLTE1NiwxMSArMTYxLDggQEAgY2xhc3MgQ29t
bWl0UXVldWVUYXNrKG9iamVjdCk6CiAgICAgICAgICJBYmxlIHRvIHBhc3MgdGVzdHMgd2l0aG91
dCBwYXRjaCIsCiAgICAgICAgICJVbmFibGUgdG8gcGFzcyB0ZXN0cyB3aXRob3V0IHBhdGNoICh0
cmVlIGlzIHJlZD8pIikKIAotICAgIGRlZiBfZmFpbGluZ19yZXN1bHRzX2Zyb21fbGFzdF9ydW4o
c2VsZik6Ci0gICAgICAgIHJlc3VsdHMgPSBzZWxmLl9kZWxlZ2F0ZS5sYXlvdXRfdGVzdF9yZXN1
bHRzKCkKLSAgICAgICAgaWYgbm90IHJlc3VsdHM6Ci0gICAgICAgICAgICByZXR1cm4gW10gICMg
TWFrZXMgY2FsbGVycyBzbGlnaHR5IGNsZWFuZXIgdG8gbm90IGhhdmUgdG8gZGVhbCB3aXRoIE5v
bmUKLSAgICAgICAgcmV0dXJuIHJlc3VsdHMuZmFpbGluZ190ZXN0X3Jlc3VsdHMoKQorICAgICAg
ICBzZWxmLl9leHBlY3RlZF9mYWlsdXJlcy5zaHJpbmtfZXhwZWN0ZWRfZmFpbHVyZXMoc2VsZi5f
ZGVsZWdhdGUubGF5b3V0X3Rlc3RfcmVzdWx0cygpLCBzdWNjZXNzKQorICAgICAgICByZXR1cm4g
c3VjY2VzcwogCiAgICAgZGVmIF9sYW5kKHNlbGYpOgogICAgICAgICAjIFVuY2xlYXIgaWYgdGhp
cyBzaG91bGQgcGFzcyAtLXF1aWV0IG9yIG5vdC4gIElmIC0tcGFyZW50LWNvbW1hbmQgYWx3YXlz
IGRvZXMgdGhlIHJlcG9ydGluZywgdGhlbiBpdCBzaG91bGQuCkBAIC0xNzgsMzIgKzE4MCw1MCBA
QCBjbGFzcyBDb21taXRRdWV1ZVRhc2sob2JqZWN0KToKICAgICBkZWYgX3JlcG9ydF9mbGFreV90
ZXN0cyhzZWxmLCBmbGFreV90ZXN0X3Jlc3VsdHMsIHJlc3VsdHNfYXJjaGl2ZSk6CiAgICAgICAg
IHNlbGYuX2RlbGVnYXRlLnJlcG9ydF9mbGFreV90ZXN0cyhzZWxmLl9wYXRjaCwgZmxha3lfdGVz
dF9yZXN1bHRzLCByZXN1bHRzX2FyY2hpdmUpCiAKKyAgICBkZWYgX3Jlc3VsdHNfZmFpbGVkX2Rp
ZmZlcmVudF90ZXN0cyhzZWxmLCBmaXJzdCwgc2Vjb25kKToKKyAgICAgICAgZmlyc3RfZmFpbGlu
Z190ZXN0cyA9IFtdIGlmIG5vdCBmaXJzdCBlbHNlIGZpcnN0LmZhaWxpbmdfdGVzdHMoKQorICAg
ICAgICBzZWNvbmRfZmFpbGluZ190ZXN0cyA9IFtdIGlmIG5vdCBzZWNvbmQgZWxzZSBzZWNvbmQu
ZmFpbGluZ190ZXN0cygpCisgICAgICAgIHJldHVybiBmaXJzdF9mYWlsaW5nX3Rlc3RzICE9IHNl
Y29uZF9mYWlsaW5nX3Rlc3RzCisKICAgICBkZWYgX3Rlc3RfcGF0Y2goc2VsZik6CiAgICAgICAg
IGlmIHNlbGYuX3Rlc3QoKToKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICAgICAgZmly
c3RfcmVzdWx0cyA9IHNlbGYuX2ZhaWxpbmdfcmVzdWx0c19mcm9tX2xhc3RfcnVuKCkKLSAgICAg
ICAgZmlyc3RfZmFpbGluZ190ZXN0cyA9IFtyZXN1bHQuZmlsZW5hbWUgZm9yIHJlc3VsdCBpbiBm
aXJzdF9yZXN1bHRzXQorICAgICAgICAjIE5vdGU6IGFyY2hpdmVfbGFzdF9sYXlvdXRfdGVzdF9y
ZXN1bHRzIGRlbGV0ZXMgdGhlIHJlc3VsdHMgZGlyZWN0b3J5LCBtYWtpbmcgdGhlc2UgY2FsbHMg
b3JkZXItc2Vuc2l0dmUuCisgICAgICAgICMgV2UgY291bGQgcmVtb3ZlIHRoaXMgZGVwZW5kZW5j
eSBieSBidWlsZGluZyB0aGUgbGF5b3V0X3Rlc3RfcmVzdWx0cyBmcm9tIHRoZSBhcmNoaXZlLgor
ICAgICAgICBmaXJzdF9yZXN1bHRzID0gc2VsZi5fZGVsZWdhdGUubGF5b3V0X3Rlc3RfcmVzdWx0
cygpCiAgICAgICAgIGZpcnN0X3Jlc3VsdHNfYXJjaGl2ZSA9IHNlbGYuX2RlbGVnYXRlLmFyY2hp
dmVfbGFzdF9sYXlvdXRfdGVzdF9yZXN1bHRzKHNlbGYuX3BhdGNoKQorCisgICAgICAgIGlmIHNl
bGYuX2V4cGVjdGVkX2ZhaWx1cmVzLmZhaWx1cmVzX3dlcmVfZXhwZWN0ZWQoZmlyc3RfcmVzdWx0
cyk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCiAgICAgICAgIGlmIHNlbGYuX3Rlc3QoKToK
LSAgICAgICAgICAgICMgT25seSByZXBvcnQgZmxha3kgdGVzdHMgaWYgd2Ugd2VyZSBzdWNjZXNz
ZnVsIGF0IGFyY2hpdmluZyByZXN1bHRzLgotICAgICAgICAgICAgaWYgZmlyc3RfcmVzdWx0c19h
cmNoaXZlOgotICAgICAgICAgICAgICAgIHNlbGYuX3JlcG9ydF9mbGFreV90ZXN0cyhmaXJzdF9y
ZXN1bHRzLCBmaXJzdF9yZXN1bHRzX2FyY2hpdmUpCisgICAgICAgICAgICAjIE9ubHkgcmVwb3J0
IGZsYWt5IHRlc3RzIGlmIHdlIHdlcmUgc3VjY2Vzc2Z1bCBhdCBwYXJzaW5nIHJlc3VsdHMuaHRt
bCBhbmQgYXJjaGl2aW5nIHJlc3VsdHMuCisgICAgICAgICAgICBpZiBmaXJzdF9yZXN1bHRzIGFu
ZCBmaXJzdF9yZXN1bHRzX2FyY2hpdmU6CisgICAgICAgICAgICAgICAgc2VsZi5fcmVwb3J0X2Zs
YWt5X3Rlc3RzKGZpcnN0X3Jlc3VsdHMuZmFpbGluZ190ZXN0X3Jlc3VsdHMoKSwgZmlyc3RfcmVz
dWx0c19hcmNoaXZlKQogICAgICAgICAgICAgcmV0dXJuIFRydWUKIAotICAgICAgICBzZWNvbmRf
cmVzdWx0cyA9IHNlbGYuX2ZhaWxpbmdfcmVzdWx0c19mcm9tX2xhc3RfcnVuKCkKLSAgICAgICAg
c2Vjb25kX2ZhaWxpbmdfdGVzdHMgPSBbcmVzdWx0LmZpbGVuYW1lIGZvciByZXN1bHQgaW4gc2Vj
b25kX3Jlc3VsdHNdCi0gICAgICAgIGlmIGZpcnN0X2ZhaWxpbmdfdGVzdHMgIT0gc2Vjb25kX2Zh
aWxpbmdfdGVzdHM6CisgICAgICAgIHNlY29uZF9yZXN1bHRzID0gc2VsZi5fZGVsZWdhdGUubGF5
b3V0X3Rlc3RfcmVzdWx0cygpCisgICAgICAgIGlmIHNlbGYuX3Jlc3VsdHNfZmFpbGVkX2RpZmZl
cmVudF90ZXN0cyhmaXJzdF9yZXN1bHRzLCBzZWNvbmRfcmVzdWx0cyk6CiAgICAgICAgICAgICAj
IFdlIGNvdWxkIHJlcG9ydCBmbGFreSB0ZXN0cyBoZXJlLCBidXQgc2luY2UgcnVuLXdlYmtpdC10
ZXN0cwotICAgICAgICAgICAgIyBpcyBydW4gd2l0aCAtLWV4aXQtYWZ0ZXItTi1mYWlsdXJlcz0x
LCB3ZSB3b3VsZCBuZWVkIHRvCisgICAgICAgICAgICAjIGlzIGN1cnJlbnRseSBydW4gd2l0aCAt
LWV4aXQtYWZ0ZXItTi1mYWlsdXJlcz0xLCB3ZSB3b3VsZCBuZWVkIHRvCiAgICAgICAgICAgICAj
IGJlIGNhcmVmdWwgbm90IHRvIHJlcG9ydCBjb25zdGFudCBmYWlsdXJlcyBhcyBmbGFreSBkdWUg
dG8gZWFybGllcgogICAgICAgICAgICAgIyBmbGFreSB0ZXN0IG1ha2luZyB0aGVtIG5vdCBmYWls
IChubyByZXN1bHRzKSBpbiBvbmUgb2YgdGhlIHJ1bnMuCiAgICAgICAgICAgICAjIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTEyNzIKICAgICAgICAgICAgIHJl
dHVybiBGYWxzZQogCisgICAgICAgICMgQXJjaGl2ZSAoYW5kIHJlbW92ZSkgc2Vjb25kIHJlc3Vs
dHMgc28gbGF5b3V0X3Rlc3RfcmVzdWx0cygpIGFmdGVyCisgICAgICAgICMgYnVpbGRfYW5kX3Rl
c3Rfd2l0aG91dF9wYXRjaCB3b24ndCB1c2Ugc2Vjb25kIHJlc3VsdHMgaW5zdGVhZCBvZiB0aGUg
Y2xlYW4tdHJlZSByZXN1bHRzLgorICAgICAgICBzZWNvbmRfcmVzdWx0c19hcmNoaXZlID0gc2Vs
Zi5fZGVsZWdhdGUuYXJjaGl2ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3VsdHMoc2VsZi5fcGF0Y2gp
CisKICAgICAgICAgaWYgc2VsZi5fYnVpbGRfYW5kX3Rlc3Rfd2l0aG91dF9wYXRjaCgpOgotICAg
ICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0X2ZhaWx1cmUoZmlyc3RfcmVzdWx0c19hcmNoaXZl
KSAgIyBUaGUgZXJyb3IgZnJvbSB0aGUgcHJldmlvdXMgLl90ZXN0KCkgcnVuIGlzIHJlYWwsIHJl
cG9ydCBpdC4KLSAgICAgICAgcmV0dXJuIEZhbHNlICAjIFRyZWUgbXVzdCBiZSByZWQsIGp1c3Qg
cmV0cnkgbGF0ZXIuCisgICAgICAgICAgICAjIFRoZSBlcnJvciBmcm9tIHRoZSBwcmV2aW91cyAu
X3Rlc3QoKSBydW4gaXMgcmVhbCwgcmVwb3J0IGl0LgorICAgICAgICAgICAgcmV0dXJuIHNlbGYu
cmVwb3J0X2ZhaWx1cmUoZmlyc3RfcmVzdWx0c19hcmNoaXZlKQorCisgICAgICAgIGNsZWFuX3Ry
ZWVfcmVzdWx0cyA9IHNlbGYuX2RlbGVnYXRlLmxheW91dF90ZXN0X3Jlc3VsdHMoKQorICAgICAg
ICBzZWxmLl9leHBlY3RlZF9mYWlsdXJlcy5ncm93X2V4cGVjdGVkX2ZhaWx1cmVzKGNsZWFuX3Ry
ZWVfcmVzdWx0cykKKworICAgICAgICByZXR1cm4gRmFsc2UgICMgVHJlZSBtdXN0IGJlIHJlZGRl
ciB0aGFuIHdlIGV4cGVjdGVkLCBqdXN0IHJldHJ5IGxhdGVyLgogCiAgICAgZGVmIHJlc3VsdHNf
YXJjaGl2ZV9mcm9tX3BhdGNoX3Rlc3RfcnVuKHNlbGYsIHBhdGNoKToKICAgICAgICAgYXNzZXJ0
KHNlbGYuX3BhdGNoLmlkKCkgPT0gcGF0Y2guaWQoKSkgICMgQ29tbWl0UXVldWVUYXNrIGlzIG5v
dCBjdXJyZW50bHkgcmUtdXNlYWJsZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHkKaW5kZXggODdkMGFi
NTgyYTQzNDlmYzA3MDM4NGNjZjE5ZGRiN2QyZWY3MjQxMi4uZGM2ZWM2NzE3YmIzN2ViODc4ZTEx
MDUyNTZmOGFmMzNhMGQxMzVlNSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHkKQEAgLTMwLDYgKzMw
LDcgQEAgZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKIGltcG9ydCB1bml0dGVzdAogCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQgaW1wb3J0IGJ1Z3ppbGxhCitmcm9tIHdlYmtpdHB5LmNv
bW1vbi5uZXQubGF5b3V0dGVzdHJlc3VsdHMgaW1wb3J0IExheW91dFRlc3RSZXN1bHRzCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZGVwcmVjYXRlZF9sb2dnaW5nIGltcG9ydCBlcnJvciwg
bG9nCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0
cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1w
b3J0IHRlc3RfcmVzdWx0cwpAQCAtNzcsOSArNzgsNiBAQCBjbGFzcyBNb2NrQ29tbWl0UXVldWUo
Q29tbWl0UXVldWVUYXNrRGVsZWdhdGUpOgogCiAKIGNsYXNzIENvbW1pdFF1ZXVlVGFza1Rlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBfbW9ja190ZXN0X3Jlc3VsdChzZWxmLCB0ZXN0
bmFtZSk6Ci0gICAgICAgIHJldHVybiB0ZXN0X3Jlc3VsdHMuVGVzdFJlc3VsdCh0ZXN0bmFtZSwg
W3Rlc3RfZmFpbHVyZXMuRmFpbHVyZVRleHRNaXNtYXRjaCgpXSkKLQogICAgIGRlZiBfcnVuX3Ro
cm91Z2hfdGFzayhzZWxmLCBjb21taXRfcXVldWUsIGV4cGVjdGVkX3N0ZGVyciwgZXhwZWN0ZWRf
ZXhjZXB0aW9uPU5vbmUsIGV4cGVjdF9yZXRyeT1GYWxzZSk6CiAgICAgICAgIHRvb2wgPSBNb2Nr
VG9vbChsb2dfZXhlY3V0aXZlPVRydWUpCiAgICAgICAgIHBhdGNoID0gdG9vbC5idWdzLmZldGNo
X2F0dGFjaG1lbnQoMTk3KQpAQCAtMTkwLDYgKzE4OCw5IEBAIGNvbW1hbmRfZmFpbGVkOiBmYWls
dXJlX21lc3NhZ2U9J1VuYWJsZSB0byBidWlsZCB3aXRob3V0IHBhdGNoJyBzY3JpcHRfZXJyb3I9
J01PCiAgICAgICAgICAgICBOb25lLAogICAgICAgICAgICAgU2NyaXB0RXJyb3IoIk1PQ0sgdGVz
dHMgZmFpbHVyZSIpLAogICAgICAgICBdKQorICAgICAgICAjIENvbW1pdFF1ZXVlVGFzayB3aWxs
IG9ubHkgcmVwb3J0IGZsYWt5IHRlc3RzIGlmIHdlIHN1Y2Nlc3NmdWxseSBwYXJzZWQKKyAgICAg
ICAgIyByZXN1bHRzLmh0bWwgYW5kIHJldHVybmVkIGEgTGF5b3V0VGVzdFJlc3VsdHMgb2JqZWN0
LCBzbyB3ZSBmYWtlIG9uZS4KKyAgICAgICAgY29tbWl0X3F1ZXVlLmxheW91dF90ZXN0X3Jlc3Vs
dHMgPSBsYW1iZGE6IExheW91dFRlc3RSZXN1bHRzKFtdKQogICAgICAgICBleHBlY3RlZF9zdGRl
cnIgPSAiIiJydW5fd2Via2l0X3BhdGNoOiBbJ2NsZWFuJ10KIGNvbW1hbmRfcGFzc2VkOiBzdWNj
ZXNzX21lc3NhZ2U9J0NsZWFuZWQgd29ya2luZyBkaXJlY3RvcnknIHBhdGNoPScxOTcnCiBydW5f
d2Via2l0X3BhdGNoOiBbJ3VwZGF0ZSddCkBAIC0yMTcsNiArMjE4LDcgQEAgY29tbWFuZF9wYXNz
ZWQ6IHN1Y2Nlc3NfbWVzc2FnZT0nTGFuZGVkIHBhdGNoJyBwYXRjaD0nMTk3JwogICAgICAgICAg
ICAgTm9uZSwKICAgICAgICAgICAgIFNjcmlwdEVycm9yKCJNT0NLIHRlc3RzIGZhaWx1cmUiKSwK
ICAgICAgICAgXSkKKyAgICAgICAgY29tbWl0X3F1ZXVlLmxheW91dF90ZXN0X3Jlc3VsdHMgPSBs
YW1iZGE6IExheW91dFRlc3RSZXN1bHRzKFtdKQogICAgICAgICAjIEl0J3MgcG9zc2libGUgZGVs
ZWdhdGUgdG8gZmFpbCB0byBhcmNoaXZlIGxheW91dCB0ZXN0cywgZG9uJ3QgdHJ5IHRvIHJlcG9y
dAogICAgICAgICAjIGZsYWt5IHRlc3RzIHdoZW4gdGhhdCBoYXBwZW5zLgogICAgICAgICBjb21t
aXRfcXVldWUuYXJjaGl2ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3VsdHMgPSBsYW1iZGEgcGF0Y2g6
IE5vbmUKQEAgLTIzNywxMCArMjM5LDI1IEBAIGNvbW1hbmRfcGFzc2VkOiBzdWNjZXNzX21lc3Nh
Z2U9J0xhbmRlZCBwYXRjaCcgcGF0Y2g9JzE5NycKICIiIgogICAgICAgICBzZWxmLl9ydW5fdGhy
b3VnaF90YXNrKGNvbW1pdF9xdWV1ZSwgZXhwZWN0ZWRfc3RkZXJyKQogCi0gICAgX2RvdWJsZV9m
bGFreV90ZXN0X2NvdW50ZXIgPSAwCi0KICAgICBkZWYgdGVzdF9kb3VibGVfZmxha3lfdGVzdF9m
YWlsdXJlKHNlbGYpOgotICAgICAgICBjb21taXRfcXVldWUgPSBNb2NrQ29tbWl0UXVldWUoWwor
ICAgICAgICBjbGFzcyBEb3VibGVGbGFreUNvbW1pdFF1ZXVlKE1vY2tDb21taXRRdWV1ZSk6Cisg
ICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZXJyb3JfcGxhbik6CisgICAgICAgICAgICAg
ICAgTW9ja0NvbW1pdFF1ZXVlLl9faW5pdF9fKHNlbGYsIGVycm9yX3BsYW4pCisgICAgICAgICAg
ICAgICAgc2VsZi5fZG91YmxlX2ZsYWt5X3Rlc3RfY291bnRlciA9IDAKKworICAgICAgICAgICAg
ZGVmIHJ1bl9jb21tYW5kKHNlbGYsIGNvbW1hbmQpOgorICAgICAgICAgICAgICAgIHNlbGYuX2Rv
dWJsZV9mbGFreV90ZXN0X2NvdW50ZXIgKz0gMQorICAgICAgICAgICAgICAgIE1vY2tDb21taXRR
dWV1ZS5ydW5fY29tbWFuZChzZWxmLCBjb21tYW5kKQorCisgICAgICAgICAgICBkZWYgX21vY2tf
dGVzdF9yZXN1bHQoc2VsZiwgdGVzdG5hbWUpOgorICAgICAgICAgICAgICAgIHJldHVybiB0ZXN0
X3Jlc3VsdHMuVGVzdFJlc3VsdCh0ZXN0bmFtZSwgW3Rlc3RfZmFpbHVyZXMuRmFpbHVyZVRleHRN
aXNtYXRjaCgpXSkKKworICAgICAgICAgICAgZGVmIGxheW91dF90ZXN0X3Jlc3VsdHMoc2VsZik6
CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fZG91YmxlX2ZsYWt5X3Rlc3RfY291bnRlciAlIDI6
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBMYXlvdXRUZXN0UmVzdWx0cyhbc2VsZi5fbW9j
a190ZXN0X3Jlc3VsdCgnZm9vLmh0bWwnKV0pCisgICAgICAgICAgICAgICAgcmV0dXJuIExheW91
dFRlc3RSZXN1bHRzKFtzZWxmLl9tb2NrX3Rlc3RfcmVzdWx0KCdiYXIuaHRtbCcpXSkKKworICAg
ICAgICBjb21taXRfcXVldWUgPSBEb3VibGVGbGFreUNvbW1pdFF1ZXVlKFsKICAgICAgICAgICAg
IE5vbmUsCiAgICAgICAgICAgICBOb25lLAogICAgICAgICAgICAgTm9uZSwKQEAgLTI2OCwxNSAr
Mjg1LDYgQEAgY29tbWFuZF9mYWlsZWQ6IGZhaWx1cmVfbWVzc2FnZT0nUGF0Y2ggZG9lcyBub3Qg
cGFzcyB0ZXN0cycgc2NyaXB0X2Vycm9yPSdNT0NLIHQKICAgICAgICAgdG9vbCA9IE1vY2tUb29s
KGxvZ19leGVjdXRpdmU9VHJ1ZSkKICAgICAgICAgcGF0Y2ggPSB0b29sLmJ1Z3MuZmV0Y2hfYXR0
YWNobWVudCgxOTcpCiAgICAgICAgIHRhc2sgPSBDb21taXRRdWV1ZVRhc2soY29tbWl0X3F1ZXVl
LCBwYXRjaCkKLSAgICAgICAgc2VsZi5fZG91YmxlX2ZsYWt5X3Rlc3RfY291bnRlciA9IDAKLQot
ICAgICAgICBkZWYgbW9ja19mYWlsaW5nX3Jlc3VsdHNfZnJvbV9sYXN0X3J1bigpOgotICAgICAg
ICAgICAgQ29tbWl0UXVldWVUYXNrVGVzdC5fZG91YmxlX2ZsYWt5X3Rlc3RfY291bnRlciArPSAx
Ci0gICAgICAgICAgICBpZiBDb21taXRRdWV1ZVRhc2tUZXN0Ll9kb3VibGVfZmxha3lfdGVzdF9j
b3VudGVyICUgMjoKLSAgICAgICAgICAgICAgICByZXR1cm4gW3NlbGYuX21vY2tfdGVzdF9yZXN1
bHQoJ2Zvby5odG1sJyldCi0gICAgICAgICAgICByZXR1cm4gW3NlbGYuX21vY2tfdGVzdF9yZXN1
bHQoJ2Jhci5odG1sJyldCi0KLSAgICAgICAgdGFzay5fZmFpbGluZ19yZXN1bHRzX2Zyb21fbGFz
dF9ydW4gPSBtb2NrX2ZhaWxpbmdfcmVzdWx0c19mcm9tX2xhc3RfcnVuCiAgICAgICAgIHN1Y2Nl
c3MgPSBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgdGFzay5ydW4sIGV4cGVj
dGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Vj
Y2VzcywgRmFsc2UpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9i
b3QvZXhwZWN0ZWRmYWlsdXJlcy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3Qv
ZXhwZWN0ZWRmYWlsdXJlcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzM2YWMwZDFhODlmMzljMTgxZDQzOGNh
ZTI1ZTY4OTc4M2ZmYWIyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2JvdC9leHBlY3RlZGZhaWx1cmVzLnB5CkBAIC0wLDAgKzEsNTUgQEAKKyMgQ29weXJp
Z2h0IChjKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisKK2NsYXNzIEV4cGVjdGVkRmFpbHVyZXMob2JqZWN0KToKKyAgICBkZWYgX19p
bml0X18oc2VsZik6CisgICAgICAgIHNlbGYuX2ZhaWx1cmVzID0gc2V0KCkKKworICAgIGRlZiBf
Y2FuX3RydXN0X3Jlc3VsdHMoc2VsZiwgcmVzdWx0cyk6CisgICAgICAgIGlmIG5vdCByZXN1bHRz
IG9yIG5vdCByZXN1bHRzLmZhaWx1cmVfbGltaXRfY291bnQoKToKKyAgICAgICAgICAgIHJldHVy
biBGYWxzZQorICAgICAgICByZXR1cm4gbGVuKHJlc3VsdHMuZmFpbGluZ190ZXN0cygpKSAhPSAw
IGFuZCBsZW4ocmVzdWx0cy5mYWlsaW5nX3Rlc3RzKCkpICE9IHJlc3VsdHMuZmFpbHVyZV9saW1p
dF9jb3VudCgpCisKKyAgICBkZWYgZmFpbHVyZXNfd2VyZV9leHBlY3RlZChzZWxmLCByZXN1bHRz
KToKKyAgICAgICAgaWYgbm90IHNlbGYuX2Nhbl90cnVzdF9yZXN1bHRzKHJlc3VsdHMpOgorICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBzZXQocmVzdWx0cy5mYWlsaW5n
X3Rlc3RzKCkpIDw9IHNlbGYuX2ZhaWx1cmVzCisKKyAgICBkZWYgc2hyaW5rX2V4cGVjdGVkX2Zh
aWx1cmVzKHNlbGYsIHJlc3VsdHMsIHJ1bl9zdWNjZXNzKToKKyAgICAgICAgaWYgcnVuX3N1Y2Nl
c3M6CisgICAgICAgICAgICBzZWxmLl9mYWlsdXJlcyA9IHNldCgpCisgICAgICAgIGVsaWYgc2Vs
Zi5fY2FuX3RydXN0X3Jlc3VsdHMocmVzdWx0cyk6CisgICAgICAgICAgICAjIFJlbW92ZSBhbGwg
ZXhwZWN0ZWQgZmFpbHVyZXMgd2hpY2ggYXJlIG5vdCBpbiB0aGUgbmV3IGZhaWxpbmcgcmVzdWx0
cy4KKyAgICAgICAgICAgIHNlbGYuX2ZhaWx1cmVzLmludGVyc2VjdGlvbl91cGRhdGUoc2V0KHJl
c3VsdHMuZmFpbGluZ190ZXN0cygpKSkKKworICAgIGRlZiBncm93X2V4cGVjdGVkX2ZhaWx1cmVz
KHNlbGYsIHJlc3VsdHMpOgorICAgICAgICBpZiBub3Qgc2VsZi5fY2FuX3RydXN0X3Jlc3VsdHMo
cmVzdWx0cyk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5fZmFpbHVyZXMudXBk
YXRlKHJlc3VsdHMuZmFpbGluZ190ZXN0cygpKQorICAgICAgICAjIEZJWE1FOiBTaG91bGQgd2Ug
YXNzZXJ0KCkgaGVyZSB0aGF0IGV4cGVjdGVkX2ZhaWx1cmVzIG5ldmVyIGNyb3NzZXMgYSBjZXJ0
YWluIHNpemU/CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2V4
cGVjdGVkZmFpbHVyZXNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Ym90L2V4cGVjdGVkZmFpbHVyZXNfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGEyNzAyYmNmMDA1
MWNiYjk0NWY5MjBlNDhkMzU0OTRjNTEyZmEwNwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvZXhwZWN0ZWRmYWlsdXJlc191bml0dGVzdC5weQpAQCAt
MCwwICsxLDczIEBACisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMg
ZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20g
d2Via2l0cHkudG9vbC5ib3QuZXhwZWN0ZWRmYWlsdXJlcyBpbXBvcnQgRXhwZWN0ZWRGYWlsdXJl
cworCisKK2NsYXNzIE1vY2tSZXN1bHRzKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IGZhaWxpbmdfdGVzdHM9W10sIGZhaWx1cmVfbGltaXQ9MTApOgorICAgICAgICBzZWxmLl9mYWls
aW5nX3Rlc3RzID0gZmFpbGluZ190ZXN0cworICAgICAgICBzZWxmLl9mYWlsdXJlX2xpbWl0X2Nv
dW50ID0gZmFpbHVyZV9saW1pdAorCisgICAgZGVmIGZhaWx1cmVfbGltaXRfY291bnQoc2VsZik6
CisgICAgICAgIHJldHVybiBzZWxmLl9mYWlsdXJlX2xpbWl0X2NvdW50CisKKyAgICBkZWYgZmFp
bGluZ190ZXN0cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZhaWxpbmdfdGVzdHMKKwor
CitjbGFzcyBFeHBlY3RlZEZhaWx1cmVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVm
IF9hc3NlcnRfY2FuX3RydXN0KHNlbGYsIHJlc3VsdHMsIGNhbl90cnVzdCk6CisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKEV4cGVjdGVkRmFpbHVyZXMoKS5fY2FuX3RydXN0X3Jlc3VsdHMocmVz
dWx0cyksIGNhbl90cnVzdCkKKworICAgIGRlZiB0ZXN0X2Nhbl90cnVzdF9yZXN1bHRzKHNlbGYp
OgorICAgICAgICBzZWxmLl9hc3NlcnRfY2FuX3RydXN0KE5vbmUsIEZhbHNlKQorICAgICAgICBz
ZWxmLl9hc3NlcnRfY2FuX3RydXN0KE1vY2tSZXN1bHRzKGZhaWxpbmdfdGVzdHM9W10sIGZhaWx1
cmVfbGltaXQ9Tm9uZSksIEZhbHNlKQorICAgICAgICBzZWxmLl9hc3NlcnRfY2FuX3RydXN0KE1v
Y2tSZXN1bHRzKGZhaWxpbmdfdGVzdHM9W10sIGZhaWx1cmVfbGltaXQ9MTApLCBGYWxzZSkKKyAg
ICAgICAgc2VsZi5fYXNzZXJ0X2Nhbl90cnVzdChNb2NrUmVzdWx0cyhmYWlsaW5nX3Rlc3RzPVsx
XSwgZmFpbHVyZV9saW1pdD1Ob25lKSwgRmFsc2UpCisgICAgICAgIHNlbGYuX2Fzc2VydF9jYW5f
dHJ1c3QoTW9ja1Jlc3VsdHMoZmFpbGluZ190ZXN0cz1bMV0sIGZhaWx1cmVfbGltaXQ9MiksIFRy
dWUpCisgICAgICAgIHNlbGYuX2Fzc2VydF9jYW5fdHJ1c3QoTW9ja1Jlc3VsdHMoZmFpbGluZ190
ZXN0cz1bMV0sIGZhaWx1cmVfbGltaXQ9MSksIEZhbHNlKQorCisgICAgZGVmIF9hc3NlcnRfZXhw
ZWN0ZWQoc2VsZiwgZXhwZWN0ZWRfZmFpbHVyZXMsIGZhaWx1cmVzLCBleHBlY3RlZCk6CisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfZmFpbHVyZXMuZmFpbHVyZXNfd2VyZV9leHBl
Y3RlZChNb2NrUmVzdWx0cyhmYWlsdXJlcykpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2Zh
aWx1cmVzX3dlcmVfZXhwZWN0ZWQoc2VsZik6CisgICAgICAgIGZhaWx1cmVzID0gRXhwZWN0ZWRG
YWlsdXJlcygpCisgICAgICAgIGZhaWx1cmVzLmdyb3dfZXhwZWN0ZWRfZmFpbHVyZXMoTW9ja1Jl
c3VsdHMoWydmb28uaHRtbCddKSkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2V4cGVjdGVkKGZhaWx1
cmVzLCBbJ2Zvby5odG1sJ10sIFRydWUpCisgICAgICAgIHNlbGYuX2Fzc2VydF9leHBlY3RlZChm
YWlsdXJlcywgWydiYXIuaHRtbCddLCBGYWxzZSkKKyAgICAgICAgZmFpbHVyZXMuc2hyaW5rX2V4
cGVjdGVkX2ZhaWx1cmVzKE1vY2tSZXN1bHRzKFsnYmF6Lmh0bWwnXSksIEZhbHNlKQorICAgICAg
ICBzZWxmLl9hc3NlcnRfZXhwZWN0ZWQoZmFpbHVyZXMsIFsnZm9vLmh0bWwnXSwgRmFsc2UpCisg
ICAgICAgIHNlbGYuX2Fzc2VydF9leHBlY3RlZChmYWlsdXJlcywgWydiYXouaHRtbCddLCBGYWxz
ZSkKKworICAgICAgICBmYWlsdXJlcy5ncm93X2V4cGVjdGVkX2ZhaWx1cmVzKE1vY2tSZXN1bHRz
KFsnYmF6Lmh0bWwnXSkpCisgICAgICAgIHNlbGYuX2Fzc2VydF9leHBlY3RlZChmYWlsdXJlcywg
WydiYXouaHRtbCddLCBUcnVlKQorICAgICAgICBmYWlsdXJlcy5zaHJpbmtfZXhwZWN0ZWRfZmFp
bHVyZXMoTW9ja1Jlc3VsdHMoKSwgVHJ1ZSkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2V4cGVjdGVk
KGZhaWx1cmVzLCBbJ2Jhei5odG1sJ10sIEZhbHNlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkKaW5kZXggNTYzNjI0OTgzMmMxMmRjYjEyZjg5MjNl
ZDgxZGZmYmRiZmY5ZTU1NC4uMDVkNDNhNWQyNzYwNzU1NzZjYjY5OWQ1Mjg0YjNiNDRhZGFmYWQ2
MiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVl
cy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5
CkBAIC01MCw2ICs1MCw3IEBAIGZyb20gd2Via2l0cHkudG9vbC5ib3QuZmVlZGVycyBpbXBvcnQg
Q29tbWl0UXVldWVGZWVkZXIsIEVXU0ZlZWRlcgogZnJvbSB3ZWJraXRweS50b29sLmJvdC5xdWV1
ZWVuZ2luZSBpbXBvcnQgUXVldWVFbmdpbmUsIFF1ZXVlRW5naW5lRGVsZWdhdGUKIGZyb20gd2Vi
a2l0cHkudG9vbC5ib3QuZmxha3l0ZXN0cmVwb3J0ZXIgaW1wb3J0IEZsYWt5VGVzdFJlcG9ydGVy
CiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuc3RlcHNlcXVlbmNlIGltcG9ydCBTdGVwU2Vx
dWVuY2VFcnJvckhhbmRsZXIKK2Zyb20gd2Via2l0cHkudG9vbC5zdGVwcy5ydW50ZXN0cyBpbXBv
cnQgUnVuVGVzdHMKIGZyb20gd2Via2l0cHkudG9vbC5tdWx0aWNvbW1hbmR0b29sIGltcG9ydCBD
b21tYW5kLCBUcnlBZ2FpbgogCiAKQEAgLTMxNCw4ICszMTUsNyBAQCBjbGFzcyBDb21taXRRdWV1
ZShBYnN0cmFjdFBhdGNoUXVldWUsIFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxlciwgQ29tbWl0UXVl
dWVUYXNrRAogICAgICMgdG9vbC5maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlLiAgVGhleSBoYXZl
IGRpZmZlcmVudCBlcnJvciBoYW5kbGluZyBhdCB0aGUgbW9tZW50LgogICAgIGRlZiBfcmVhZF9m
aWxlX2NvbnRlbnRzKHNlbGYsIHBhdGgpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRo
IGNvZGVjcy5vcGVuKHBhdGgsICJyIiwgInV0Zi04IikgYXMgb3Blbl9maWxlOgotICAgICAgICAg
ICAgICAgIHJldHVybiBvcGVuX2ZpbGUucmVhZCgpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5f
dG9vbC5maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKHBhdGgpCiAgICAgICAgIGV4Y2VwdCBPU0Vy
cm9yLCBlOiAgIyBGaWxlIGRvZXMgbm90IGV4aXN0IG9yIGNhbid0IGJlIHJlYWQuCiAgICAgICAg
ICAgICByZXR1cm4gTm9uZQogCkBAIC0zMjUsNyArMzI1LDExIEBAIGNsYXNzIENvbW1pdFF1ZXVl
KEFic3RyYWN0UGF0Y2hRdWV1ZSwgU3RlcFNlcXVlbmNlRXJyb3JIYW5kbGVyLCBDb21taXRRdWV1
ZVRhc2tECiAgICAgICAgIHJlc3VsdHNfaHRtbCA9IHNlbGYuX3JlYWRfZmlsZV9jb250ZW50cyhy
ZXN1bHRzX3BhdGgpCiAgICAgICAgIGlmIG5vdCByZXN1bHRzX2h0bWw6CiAgICAgICAgICAgICBy
ZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gTGF5b3V0VGVzdFJlc3VsdHMucmVzdWx0c19mcm9t
X3N0cmluZyhyZXN1bHRzX2h0bWwpCisgICAgICAgICMgRklYTUU6IFdlIHNob3VsZCBub3QgaGF2
ZSB0byBwYXNzIGEgZmFpbHVyZV9saW1pdF9jb3VudCwgYnV0IHdlCisgICAgICAgICMgZG8gdW50
aWwgcnVuLXdlYmtpdC10ZXN0cyBjYW4gYmUgdXBkYXRlZCBzYXZlIG9mZiB0aGUgdmFsdWUKKyAg
ICAgICAgIyBvZiAtLWV4aXQtYWZ0ZXItTi1mYWlsdXJlcyBpbiByZXN1bHRzLmh0bWwvcmVzdWx0
cy5qc29uLgorICAgICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01ODQ4MQorICAgICAgICByZXR1cm4gTGF5b3V0VGVzdFJlc3VsdHMucmVzdWx0c19mcm9tX3N0
cmluZyhyZXN1bHRzX2h0bWwsIGZhaWx1cmVfbGltaXRfY291bnQ9UnVuVGVzdHMuTk9OX0lOVEVS
QUNUSVZFX0ZBSUxVUkVfTElNSVRfQ09VTlQpCiAKICAgICBkZWYgX3Jlc3VsdHNfZGlyZWN0b3J5
KHNlbGYpOgogICAgICAgICByZXN1bHRzX3BhdGggPSBzZWxmLl90b29sLnBvcnQoKS5sYXlvdXRf
dGVzdHNfcmVzdWx0c19wYXRoKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5CmluZGV4IDgyMzM2MTc0YjMxZWRhZTU0
ZGMzZTQ0NGQ4MDhmMjRhNDk2MWU2NGEuLjgyM2Y5ODBjMDFiOTA4MWFkNjA0NDAxNjljNzUyY2Vm
MjZlOTE2NGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9xdWV1ZXNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2Nv
bW1hbmRzL3F1ZXVlc191bml0dGVzdC5weQpAQCAtMjUzLDYgKzI1Myw3IEBAIE1PQ0s6IHJlbGVh
c2Vfd29ya19pdGVtOiBjb21taXQtcXVldWUgMTk3CiAKICAgICBkZWYgdGVzdF9yb2xsb3V0KHNl
bGYpOgogICAgICAgICB0b29sID0gTW9ja1Rvb2wobG9nX2V4ZWN1dGl2ZT1UcnVlKQorICAgICAg
ICB0b29sLmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKCcvbW9jay9yZXN1bHRzLmh0bWwnLCAn
JykgICMgT3RoZXJ3aXNlIHRoZSBjb21taXQtcXVldWUgd2lsbCBoaXQgYSBLZXlFcnJvciB0cnlp
bmcgdG8gcmVhZCB0aGUgcmVzdWx0cyBmcm9tIHRoZSBNb2NrRmlsZVN5c3RlbS4KICAgICAgICAg
dG9vbC5idWlsZGJvdC5saWdodF90cmVlX29uX2ZpcmUoKQogICAgICAgICBleHBlY3RlZF9zdGRl
cnIgPSB7CiAgICAgICAgICAgICAiYmVnaW5fd29ya19xdWV1ZSI6IHNlbGYuX2RlZmF1bHRfYmVn
aW5fd29ya19xdWV1ZV9zdGRlcnIoImNvbW1pdC1xdWV1ZSIsIE1vY2tTQ00uZmFrZV9jaGVja291
dF9yb290KSwKQEAgLTMyMSw2ICszMjIsNyBAQCBNT0NLOiByZWxlYXNlX3dvcmtfaXRlbTogY29t
bWl0LXF1ZXVlIDEwNgogICAgIGRlZiB0ZXN0X21hbnVhbF9yZWplY3RfZHVyaW5nX3Byb2Nlc3Np
bmcoc2VsZik6CiAgICAgICAgIHF1ZXVlID0gU2Vjb25kVGhvdWdodHNDb21taXRRdWV1ZSgpCiAg
ICAgICAgIHF1ZXVlLmJpbmRfdG9fdG9vbChNb2NrVG9vbCgpKQorICAgICAgICBxdWV1ZS5fdG9v
bC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZSgnL21vY2svcmVzdWx0cy5odG1sJywgJycpICAj
IE90aGVyd2lzZSB0aGUgY29tbWl0LXF1ZXVlIHdpbGwgaGl0IGEgS2V5RXJyb3IgdHJ5aW5nIHRv
IHJlYWQgdGhlIHJlc3VsdHMgZnJvbSB0aGUgTW9ja0ZpbGVTeXN0ZW0uCiAgICAgICAgIHF1ZXVl
Ll9vcHRpb25zID0gTW9jaygpCiAgICAgICAgIHF1ZXVlLl9vcHRpb25zLnBvcnQgPSBOb25lCiAg
ICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICIiIk1PQ0s6IHVwZGF0ZV9zdGF0dXM6IGNvbW1pdC1x
dWV1ZSBDbGVhbmVkIHdvcmtpbmcgZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzdGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXN0ZXN0LnB5CmluZGV4IDY0NTU2MTcyNGZiYmVjNzEz
NmE5MTdlMTBlYWVhOGJjOTVmMWQ4Y2IuLjc1ODgzMmVhYTFiMWUzNGMwZDg5MWRkYjkzODU0ZjVh
MGE3OTgyY2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9xdWV1ZXN0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9xdWV1ZXN0ZXN0LnB5CkBAIC02Nyw2ICs2Nyw5IEBAIGNsYXNzIFF1ZXVlc1Rlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgogICAgIGRlZiBhc3NlcnRfcXVldWVfb3V0cHV0cyhzZWxmLCBxdWV1ZSwg
YXJncz1Ob25lLCB3b3JrX2l0ZW09Tm9uZSwgZXhwZWN0ZWRfc3Rkb3V0PU5vbmUsIGV4cGVjdGVk
X3N0ZGVycj1Ob25lLCBleHBlY3RlZF9leGNlcHRpb25zPU5vbmUsIG9wdGlvbnM9Tm9uZSwgdG9v
bD1Ob25lKToKICAgICAgICAgaWYgbm90IHRvb2w6CiAgICAgICAgICAgICB0b29sID0gTW9ja1Rv
b2woKQorICAgICAgICAgICAgIyBUaGlzIGlzIGEgaGFjayB0byBtYWtlIGl0IGVhc3kgZm9yIGNh
bGxlcnMgdG8gbm90IGhhdmUgdG8gc2V0dXAgYSBjdXN0b20gTW9ja0ZpbGVTeXN0ZW0ganVzdCB0
byB0ZXN0IHRoZSBjb21taXQtcXVldWUKKyAgICAgICAgICAgICMgdGhlIGNxIHRyaWVzIHRvIHJl
YWQgdGhlIGxheW91dCB0ZXN0IHJlc3VsdHMsIGFuZCB3aWxsIGhpdCBhIEtleUVycm9yIGluIE1v
Y2tGaWxlU3lzdGVtIGlmIHdlIGRvbid0IGRvIHRoaXMuCisgICAgICAgICAgICB0b29sLmZpbGVz
eXN0ZW0ud3JpdGVfdGV4dF9maWxlKCcvbW9jay9yZXN1bHRzLmh0bWwnLCAiIikKICAgICAgICAg
aWYgbm90IGV4cGVjdGVkX3N0ZG91dDoKICAgICAgICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9IHt9
CiAgICAgICAgIGlmIG5vdCBleHBlY3RlZF9zdGRlcnI6CmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcnVudGVzdHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvc3RlcHMvcnVudGVzdHMucHkKaW5kZXggMjgyZTM4MTAzMGEwMzQ0NGI2ZTdjYTQ2
NGNkZWVmYmU4ZWNkYjdjNi4uOTYxNWJlMjFlNTI2OTQzN2JmOTAxMjE4NzAyZjc1NTIzZjcxZTQx
NyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3J1bnRlc3Rz
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9ydW50ZXN0cy5weQpA
QCAtMzEsNiArMzEsOSBAQCBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMub3B0aW9ucyBpbXBvcnQg
T3B0aW9ucwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJlY2F0ZWRfbG9nZ2luZyBp
bXBvcnQgbG9nCiAKIGNsYXNzIFJ1blRlc3RzKEFic3RyYWN0U3RlcCk6CisgICAgIyBGSVhNRTog
VGhpcyBrbm93bGVkZ2UgcmVhbGx5IGJlbG9uZ3MgaW4gdGhlIGNvbW1pdC1xdWV1ZS4KKyAgICBO
T05fSU5URVJBQ1RJVkVfRkFJTFVSRV9MSU1JVF9DT1VOVCA9IDEKKwogICAgIEBjbGFzc21ldGhv
ZAogICAgIGRlZiBvcHRpb25zKGNscyk6CiAgICAgICAgIHJldHVybiBBYnN0cmFjdFN0ZXAub3B0
aW9ucygpICsgWwpAQCAtNTksNyArNjIsNyBAQCBjbGFzcyBSdW5UZXN0cyhBYnN0cmFjdFN0ZXAp
OgogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLm5vbl9pbnRlcmFjdGl2ZToKICAgICAgICAgICAg
IGFyZ3MuYXBwZW5kKCItLW5vLW5ldy10ZXN0LXJlc3VsdHMiKQogICAgICAgICAgICAgYXJncy5h
cHBlbmQoIi0tbm8tbGF1bmNoLXNhZmFyaSIpCi0gICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1l
eGl0LWFmdGVyLW4tZmFpbHVyZXM9MSIpCisgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1leGl0
LWFmdGVyLW4tZmFpbHVyZXM9JXMiICUgc2VsZi5OT05fSU5URVJBQ1RJVkVfRkFJTFVSRV9MSU1J
VF9DT1VOVCkKICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCItLXdhaXQtZm9yLWh0dHBkIikKICAg
ICAgICAgICAgICMgRklYTUU6IEhhY2sgdG8gd29yayBhcm91bmQgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM4OTEyCiAgICAgICAgICAgICAjIHdoZW4gcnVubmluZyB0
aGUgY29tbWl0LXF1ZXVlIG9uIGEgbWFjIGxlb3BhcmQgbWFjaGluZSBzaW5jZSBjb21wb3NpdGlu
Zwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89497</attachid>
            <date>2011-04-13 17:17:47 -0700</date>
            <delta_ts>2011-04-13 17:17:47 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-58494-20110413171746.patch</filename>
            <type>text/plain</type>
            <size>28109</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM3MjUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhODFhZjNiOTc0ZTk3NmMxMWNlOTAyNjI1NjhmZDdiNTJh
MTIzMDE4Li45MTQzYzc1OWI5YTBjOWRlNjYwZTdiNjUwMDYzMzIwYjAwOWM3NWM0IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkg
QEAKKzIwMTEtMDQtMTMgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgY29tbWl0LXF1ZXVlIHNob3VsZCBi
ZSBhYmxlIHRvIGxhbmQgd2hlbiB0cmVlIGlzIHJlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg0OTQKKworICAgICAgICBUaGVyZSBpcyBzb21lIHlh
ayBoYWlyIG9uIG15IGhhbmRzLCBJIHdpbGwgYWRtaXQuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
aXMgbW9zdGx5IGFib3V0IGFkZGluZyBhbiBFeHBlY3RlZEZhaWx1cmVzCisgICAgICAgIGNsYXNz
IHRvIHRyYWNrIHdoZW4gdGhlIGJvdHMgYXJlIHJlZCBhbmQgd2Ugc2hvdWxkIGJlCisgICAgICAg
IGlnbm9yaW5nIGZhaWx1cmVzIHdoZW4gbGFuZGluZyBmcm9tIHRoZSBjb21taXQtcXVldWUuCisK
KyAgICAgICAgSG93ZXZlciwgdG8gbWFrZSBpbnRlbGxpZ2VudCBkZWNpc2lvbnMgYWJvdXQgcGF0
Y2hlcyB3ZQorICAgICAgICBuZWVkIHRvIGtub3cgd2hldGhlciB0aGUgcnVuIGhpdCB0aGUgLS1l
eGl0LWFmdGVyLU4tZmFpbHVyZXMgbGltaXQKKyAgICAgICAgb3Igbm90LiAgUmlnaHQgbm93IHRo
YXQgaW5mb3JtYXRpb24gaXMgbm90IHNhdmVkIG9mZiBpbiByZXN1bHRzLmh0bWwKKyAgICAgICAg
c28gd2UgaGF2ZSB0byBwdWxsIHRoZSBpbmZvcm1hdGlvbiBmcm9tIFJ1blRlc3RzLgorCisgICAg
ICAgIEkndmUgcGx1bWJlZCB0aGUgLS1leGl0LWFmdGVyLU4tZmFpbHVyZXMgaW5mb3JtYXRpb24g
aW50bworICAgICAgICBMYXlvdXRUZXN0UmVzdWx0cyBmb3Igbm93IHRvIG1ha2UgdGhlIEV4cGVj
dGVkRmFpbHVyZXMgY29kZSBjbGVhbmVyLgorCisgICAgICAgIEFzIGEgcmVzdWx0IG9mIGFkZGlu
ZyBhbGwgdGhlc2UgYWRkaXRpb25hbCBjYWxscyB0byBkZWxlZ2F0ZS5sYXlvdXRfdGVzdF9yZXN1
bHRzKCkKKyAgICAgICAgSSBicm9rZSBzb21lIG9mIG91ciBmbGFreSB0ZXN0IGRldGVjdGlvbiB0
ZXN0cyBhbmQgaGFkIHRvIHJlLXdyaXRlIHRoZW0KKyAgICAgICAgdG8gbm90IGRlcGVuZCBvbiB0
aGUgbnVtYmVyIG9mIGxheW91dF90ZXN0X3Jlc3VsdHMgY29kZS4KKworICAgICAgICBBdCB0aGUg
c2FtZSB0aW1lIEkgdXBkYXRlZCB0aGUgY29tbWl0LXF1ZXVlIHRvIHVzZSB0aGUgbmV3ZXIgZmls
ZXN5c3RlbQorICAgICAgICBBUEkgKHRvIGFsbG93IHVzIHRvIHVzZSBNb2NrRmlsZVN5c3RlbSkg
d2hpY2ggcmVxdWlyZWQgZnVydGhlciBjaGFuZ2VzCisgICAgICAgIHRvIHRoZSBsYXlvdXQgdGVz
dHMuICBDaGFuZ2VzIHdlcmUgcmVxdWlyZWQgaW4gZWl0aGVyIGNhc2UsIHNpbmNlCisgICAgICAg
IHdlJ3JlIG5vdyBjYWxsaW5nIGxheW91dF90ZXN0X3Jlc3VsdHMoKSBpbiBtb3JlIGNhc2VzLCB3
aGljaCBwcmV2aW91c2x5CisgICAgICAgIHdvdWxkIHRyeSBhbmQgaGl0IHRoZSBkaXNrICh1bnRp
bCBJIG1vdmVkIGl0IHRvIHVzZSB0b29sLmZpbGVzeXN0ZW0pLgorCisgICAgICAgIEkgc2hvdWxk
IG5vdGUgdGhhdCAqYWxsKiBvZiB0aGlzIGNvZGUgaXMgZGlzYWJsZWQgZm9yIG5vdywgc2luY2Ug
b3VyCisgICAgICAgIC0tZXhpdC1hZnRlci1OLWZhaWx1cmVzIGxpbWl0IGlzIGN1cnJlbnRseSAx
ISAgKFRodXMgd2VyZSBhbHdheXMgaW4gdGhlCisgICAgICAgIGNhc2Ugd2hlcmUgd2UgY2FuJ3Qg
YWN0dWFsbHkgdGVsbCBpZiB0aGUgbGF5b3V0IHRlc3QgcmVzdWx0cyBhcmUgbGVnaXQuKQorICAg
ICAgICBJIHdpbGwgdXAgdGhhdCBsaW1pdCBpbiBhIHNlY29uZCBwYXRjaCAod2hpY2ggbWF5IHJl
cXVpcmUgYSBjb3VwbGUgbW9yZSB1bml0IHRlc3QgdHdlYWtzKS4KKworICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFzay5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFza191bml0dGVzdC5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2V4cGVjdGVkZmFpbHVyZXMucHk6IEFk
ZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvZXhwZWN0ZWRmYWlsdXJl
c191bml0dGVzdC5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2Nv
bW1hbmRzL3F1ZXVlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvcXVldWVzX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9xdWV1ZXN0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9z
dGVwcy9ydW50ZXN0cy5weToKKwogMjAxMS0wNC0xMiAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRz
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRz
LnB5CmluZGV4IDI0OWVjYzljMGMzNDM0ZGVmMDRjMWMwZDI1MDgyZmVkOGFlZTY4ZDcuLjU3YmQ0
YzEwMzkxMzU0NTIwNTExMzgyNWM0MWQ3N2I3MzZjMGNkMzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHkKQEAgLTEz
Miw4ICsxMzIsMTkgQEAgY2xhc3MgTGF5b3V0VGVzdFJlc3VsdHMob2JqZWN0KToKICAgICAgICAg
ICAgIHJldHVybiBOb25lCiAgICAgICAgIHJldHVybiBjbHModGVzdF9yZXN1bHRzKQogCi0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfcmVzdWx0cyk6CisgICAgIyBGSVhNRTogcnVuLXdlYmtp
dC10ZXN0cyBzaG91bGQgc3RvcmUgdGhlIC0tZXhpdC1hZnRlci1OLWZhaWx1cmVzIHZhbHVlCisg
ICAgIyAob3Igc29tZSBpbmRpY2F0aW9uIG9mIGVhcmx5IGV4aXQpIHNvbWV3aGVyZSBpbiB0aGUg
cmVzdWx0cy5odG1sL3Jlc3VsdHMuanNvbgorICAgICMgZmlsZS4gIFVudGlsIGl0IGRvZXMsIHdl
IGRlcGVuZCBvbiBjYWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24gdG8gY3JlYXRlCisgICAgIyBMYXlv
dXRUZXN0UmVzdWx0cyB3aXRoIGEgZmFpbHVyZV9saW1pdF9jb3VudCB2YWx1ZSwgcmVwcmVzZW50
aW5nIHRoZQorICAgICMgLS1leGl0LWFmdGVyLU4tZmFpbHVyZXMgdmFsdWUgdXNlZCBpbiB0aGF0
IHJ1bi4gIENvbnN1bWVycyBvZiBMYXlvdXRUZXN0UmVzdWx0cworICAgICMgd2lsbCB1c2UgdGhh
dCB2YWx1ZSB0byBrbm93IGlmIGFic2VuY2UgZnJvbSB0aGUgZmFpbHVyZSBsaXN0IG1lYW5zIFBB
U1MuCisgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg0ODEK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdF9yZXN1bHRzLCBmYWlsdXJlX2xpbWl0X2NvdW50
PU5vbmUpOgogICAgICAgICBzZWxmLl90ZXN0X3Jlc3VsdHMgPSB0ZXN0X3Jlc3VsdHMKKyAgICAg
ICAgc2VsZi5fZmFpbHVyZV9saW1pdF9jb3VudCA9IGZhaWx1cmVfbGltaXRfY291bnQKKworICAg
IGRlZiBmYWlsdXJlX2xpbWl0X2NvdW50KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fZmFp
bHVyZV9saW1pdF9jb3VudAogCiAgICAgZGVmIHRlc3RfcmVzdWx0cyhzZWxmKToKICAgICAgICAg
cmV0dXJuIHNlbGYuX3Rlc3RfcmVzdWx0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2sucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFzay5weQppbmRleCBlOTlkZDE5NDEzMzgzY2MwNDQ5NDc0
OThhYTFlYzdmZGFiZjY3YmE3Li4wYWYyNDg5NjU0YzZhYWQwMDcxYTRmYjZhMTMyZjIzNzkwZGY3
OWU4IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1
ZXVldGFzay5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1
ZXVldGFzay5weQpAQCAtMjgsNiArMjgsNyBAQAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0
LmxheW91dHRlc3RyZXN1bHRzIGltcG9ydCBMYXlvdXRUZXN0UmVzdWx0cworZnJvbSB3ZWJraXRw
eS50b29sLmJvdC5leHBlY3RlZGZhaWx1cmVzIGltcG9ydCBFeHBlY3RlZEZhaWx1cmVzCiAKIAog
Y2xhc3MgQ29tbWl0UXVldWVUYXNrRGVsZWdhdGUob2JqZWN0KToKQEAgLTYwLDYgKzYxLDcgQEAg
Y2xhc3MgQ29tbWl0UXVldWVUYXNrKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX3BhdGNoID0gcGF0
Y2gKICAgICAgICAgc2VsZi5fc2NyaXB0X2Vycm9yID0gTm9uZQogICAgICAgICBzZWxmLl9yZXN1
bHRzX2FyY2hpdmVfZnJvbV9wYXRjaF90ZXN0X3J1biA9IE5vbmUKKyAgICAgICAgc2VsZi5fZXhw
ZWN0ZWRfZmFpbHVyZXMgPSBFeHBlY3RlZEZhaWx1cmVzKCkKIAogICAgIGRlZiBfdmFsaWRhdGUo
c2VsZik6CiAgICAgICAgICMgQnVncyBtaWdodCBnZXQgY2xvc2VkLCBvciBwYXRjaGVzIG1pZ2h0
IGJlIG9ic29sZXRlZCBvciByLSdkIHdoaWxlIHRoZQpAQCAtMTMzLDcgKzEzNSw3IEBAIGNsYXNz
IENvbW1pdFF1ZXVlVGFzayhvYmplY3QpOgogICAgICAgICAiVW5hYmxlIHRvIGJ1aWxkIHdpdGhv
dXQgcGF0Y2giKQogCiAgICAgZGVmIF90ZXN0KHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5f
cnVuX2NvbW1hbmQoWworICAgICAgICBzdWNjZXNzID0gc2VsZi5fcnVuX2NvbW1hbmQoWwogICAg
ICAgICAgICAgImJ1aWxkLWFuZC10ZXN0IiwKICAgICAgICAgICAgICItLW5vLWNsZWFuIiwKICAg
ICAgICAgICAgICItLW5vLXVwZGF0ZSIsCkBAIC0xNDQsOCArMTQ2LDExIEBAIGNsYXNzIENvbW1p
dFF1ZXVlVGFzayhvYmplY3QpOgogICAgICAgICAiUGFzc2VkIHRlc3RzIiwKICAgICAgICAgIlBh
dGNoIGRvZXMgbm90IHBhc3MgdGVzdHMiKQogCisgICAgICAgIHNlbGYuX2V4cGVjdGVkX2ZhaWx1
cmVzLnNocmlua19leHBlY3RlZF9mYWlsdXJlcyhzZWxmLl9kZWxlZ2F0ZS5sYXlvdXRfdGVzdF9y
ZXN1bHRzKCksIHN1Y2Nlc3MpCisgICAgICAgIHJldHVybiBzdWNjZXNzCisKICAgICBkZWYgX2J1
aWxkX2FuZF90ZXN0X3dpdGhvdXRfcGF0Y2goc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9y
dW5fY29tbWFuZChbCisgICAgICAgIHN1Y2Nlc3MgPSBzZWxmLl9ydW5fY29tbWFuZChbCiAgICAg
ICAgICAgICAiYnVpbGQtYW5kLXRlc3QiLAogICAgICAgICAgICAgIi0tZm9yY2UtY2xlYW4iLAog
ICAgICAgICAgICAgIi0tbm8tdXBkYXRlIiwKQEAgLTE1NiwxMSArMTYxLDggQEAgY2xhc3MgQ29t
bWl0UXVldWVUYXNrKG9iamVjdCk6CiAgICAgICAgICJBYmxlIHRvIHBhc3MgdGVzdHMgd2l0aG91
dCBwYXRjaCIsCiAgICAgICAgICJVbmFibGUgdG8gcGFzcyB0ZXN0cyB3aXRob3V0IHBhdGNoICh0
cmVlIGlzIHJlZD8pIikKIAotICAgIGRlZiBfZmFpbGluZ19yZXN1bHRzX2Zyb21fbGFzdF9ydW4o
c2VsZik6Ci0gICAgICAgIHJlc3VsdHMgPSBzZWxmLl9kZWxlZ2F0ZS5sYXlvdXRfdGVzdF9yZXN1
bHRzKCkKLSAgICAgICAgaWYgbm90IHJlc3VsdHM6Ci0gICAgICAgICAgICByZXR1cm4gW10gICMg
TWFrZXMgY2FsbGVycyBzbGlnaHR5IGNsZWFuZXIgdG8gbm90IGhhdmUgdG8gZGVhbCB3aXRoIE5v
bmUKLSAgICAgICAgcmV0dXJuIHJlc3VsdHMuZmFpbGluZ190ZXN0X3Jlc3VsdHMoKQorICAgICAg
ICBzZWxmLl9leHBlY3RlZF9mYWlsdXJlcy5zaHJpbmtfZXhwZWN0ZWRfZmFpbHVyZXMoc2VsZi5f
ZGVsZWdhdGUubGF5b3V0X3Rlc3RfcmVzdWx0cygpLCBzdWNjZXNzKQorICAgICAgICByZXR1cm4g
c3VjY2VzcwogCiAgICAgZGVmIF9sYW5kKHNlbGYpOgogICAgICAgICAjIFVuY2xlYXIgaWYgdGhp
cyBzaG91bGQgcGFzcyAtLXF1aWV0IG9yIG5vdC4gIElmIC0tcGFyZW50LWNvbW1hbmQgYWx3YXlz
IGRvZXMgdGhlIHJlcG9ydGluZywgdGhlbiBpdCBzaG91bGQuCkBAIC0xNzgsMzIgKzE4MCw1MCBA
QCBjbGFzcyBDb21taXRRdWV1ZVRhc2sob2JqZWN0KToKICAgICBkZWYgX3JlcG9ydF9mbGFreV90
ZXN0cyhzZWxmLCBmbGFreV90ZXN0X3Jlc3VsdHMsIHJlc3VsdHNfYXJjaGl2ZSk6CiAgICAgICAg
IHNlbGYuX2RlbGVnYXRlLnJlcG9ydF9mbGFreV90ZXN0cyhzZWxmLl9wYXRjaCwgZmxha3lfdGVz
dF9yZXN1bHRzLCByZXN1bHRzX2FyY2hpdmUpCiAKKyAgICBkZWYgX3Jlc3VsdHNfZmFpbGVkX2Rp
ZmZlcmVudF90ZXN0cyhzZWxmLCBmaXJzdCwgc2Vjb25kKToKKyAgICAgICAgZmlyc3RfZmFpbGlu
Z190ZXN0cyA9IFtdIGlmIG5vdCBmaXJzdCBlbHNlIGZpcnN0LmZhaWxpbmdfdGVzdHMoKQorICAg
ICAgICBzZWNvbmRfZmFpbGluZ190ZXN0cyA9IFtdIGlmIG5vdCBzZWNvbmQgZWxzZSBzZWNvbmQu
ZmFpbGluZ190ZXN0cygpCisgICAgICAgIHJldHVybiBmaXJzdF9mYWlsaW5nX3Rlc3RzICE9IHNl
Y29uZF9mYWlsaW5nX3Rlc3RzCisKICAgICBkZWYgX3Rlc3RfcGF0Y2goc2VsZik6CiAgICAgICAg
IGlmIHNlbGYuX3Rlc3QoKToKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICAgICAgZmly
c3RfcmVzdWx0cyA9IHNlbGYuX2ZhaWxpbmdfcmVzdWx0c19mcm9tX2xhc3RfcnVuKCkKLSAgICAg
ICAgZmlyc3RfZmFpbGluZ190ZXN0cyA9IFtyZXN1bHQuZmlsZW5hbWUgZm9yIHJlc3VsdCBpbiBm
aXJzdF9yZXN1bHRzXQorICAgICAgICAjIE5vdGU6IGFyY2hpdmVfbGFzdF9sYXlvdXRfdGVzdF9y
ZXN1bHRzIGRlbGV0ZXMgdGhlIHJlc3VsdHMgZGlyZWN0b3J5LCBtYWtpbmcgdGhlc2UgY2FsbHMg
b3JkZXItc2Vuc2l0dmUuCisgICAgICAgICMgV2UgY291bGQgcmVtb3ZlIHRoaXMgZGVwZW5kZW5j
eSBieSBidWlsZGluZyB0aGUgbGF5b3V0X3Rlc3RfcmVzdWx0cyBmcm9tIHRoZSBhcmNoaXZlLgor
ICAgICAgICBmaXJzdF9yZXN1bHRzID0gc2VsZi5fZGVsZWdhdGUubGF5b3V0X3Rlc3RfcmVzdWx0
cygpCiAgICAgICAgIGZpcnN0X3Jlc3VsdHNfYXJjaGl2ZSA9IHNlbGYuX2RlbGVnYXRlLmFyY2hp
dmVfbGFzdF9sYXlvdXRfdGVzdF9yZXN1bHRzKHNlbGYuX3BhdGNoKQorCisgICAgICAgIGlmIHNl
bGYuX2V4cGVjdGVkX2ZhaWx1cmVzLmZhaWx1cmVzX3dlcmVfZXhwZWN0ZWQoZmlyc3RfcmVzdWx0
cyk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCiAgICAgICAgIGlmIHNlbGYuX3Rlc3QoKToK
LSAgICAgICAgICAgICMgT25seSByZXBvcnQgZmxha3kgdGVzdHMgaWYgd2Ugd2VyZSBzdWNjZXNz
ZnVsIGF0IGFyY2hpdmluZyByZXN1bHRzLgotICAgICAgICAgICAgaWYgZmlyc3RfcmVzdWx0c19h
cmNoaXZlOgotICAgICAgICAgICAgICAgIHNlbGYuX3JlcG9ydF9mbGFreV90ZXN0cyhmaXJzdF9y
ZXN1bHRzLCBmaXJzdF9yZXN1bHRzX2FyY2hpdmUpCisgICAgICAgICAgICAjIE9ubHkgcmVwb3J0
IGZsYWt5IHRlc3RzIGlmIHdlIHdlcmUgc3VjY2Vzc2Z1bCBhdCBwYXJzaW5nIHJlc3VsdHMuaHRt
bCBhbmQgYXJjaGl2aW5nIHJlc3VsdHMuCisgICAgICAgICAgICBpZiBmaXJzdF9yZXN1bHRzIGFu
ZCBmaXJzdF9yZXN1bHRzX2FyY2hpdmU6CisgICAgICAgICAgICAgICAgc2VsZi5fcmVwb3J0X2Zs
YWt5X3Rlc3RzKGZpcnN0X3Jlc3VsdHMuZmFpbGluZ190ZXN0X3Jlc3VsdHMoKSwgZmlyc3RfcmVz
dWx0c19hcmNoaXZlKQogICAgICAgICAgICAgcmV0dXJuIFRydWUKIAotICAgICAgICBzZWNvbmRf
cmVzdWx0cyA9IHNlbGYuX2ZhaWxpbmdfcmVzdWx0c19mcm9tX2xhc3RfcnVuKCkKLSAgICAgICAg
c2Vjb25kX2ZhaWxpbmdfdGVzdHMgPSBbcmVzdWx0LmZpbGVuYW1lIGZvciByZXN1bHQgaW4gc2Vj
b25kX3Jlc3VsdHNdCi0gICAgICAgIGlmIGZpcnN0X2ZhaWxpbmdfdGVzdHMgIT0gc2Vjb25kX2Zh
aWxpbmdfdGVzdHM6CisgICAgICAgIHNlY29uZF9yZXN1bHRzID0gc2VsZi5fZGVsZWdhdGUubGF5
b3V0X3Rlc3RfcmVzdWx0cygpCisgICAgICAgIGlmIHNlbGYuX3Jlc3VsdHNfZmFpbGVkX2RpZmZl
cmVudF90ZXN0cyhmaXJzdF9yZXN1bHRzLCBzZWNvbmRfcmVzdWx0cyk6CiAgICAgICAgICAgICAj
IFdlIGNvdWxkIHJlcG9ydCBmbGFreSB0ZXN0cyBoZXJlLCBidXQgc2luY2UgcnVuLXdlYmtpdC10
ZXN0cwotICAgICAgICAgICAgIyBpcyBydW4gd2l0aCAtLWV4aXQtYWZ0ZXItTi1mYWlsdXJlcz0x
LCB3ZSB3b3VsZCBuZWVkIHRvCisgICAgICAgICAgICAjIGlzIGN1cnJlbnRseSBydW4gd2l0aCAt
LWV4aXQtYWZ0ZXItTi1mYWlsdXJlcz0xLCB3ZSB3b3VsZCBuZWVkIHRvCiAgICAgICAgICAgICAj
IGJlIGNhcmVmdWwgbm90IHRvIHJlcG9ydCBjb25zdGFudCBmYWlsdXJlcyBhcyBmbGFreSBkdWUg
dG8gZWFybGllcgogICAgICAgICAgICAgIyBmbGFreSB0ZXN0IG1ha2luZyB0aGVtIG5vdCBmYWls
IChubyByZXN1bHRzKSBpbiBvbmUgb2YgdGhlIHJ1bnMuCiAgICAgICAgICAgICAjIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTEyNzIKICAgICAgICAgICAgIHJl
dHVybiBGYWxzZQogCisgICAgICAgICMgQXJjaGl2ZSAoYW5kIHJlbW92ZSkgc2Vjb25kIHJlc3Vs
dHMgc28gbGF5b3V0X3Rlc3RfcmVzdWx0cygpIGFmdGVyCisgICAgICAgICMgYnVpbGRfYW5kX3Rl
c3Rfd2l0aG91dF9wYXRjaCB3b24ndCB1c2Ugc2Vjb25kIHJlc3VsdHMgaW5zdGVhZCBvZiB0aGUg
Y2xlYW4tdHJlZSByZXN1bHRzLgorICAgICAgICBzZWNvbmRfcmVzdWx0c19hcmNoaXZlID0gc2Vs
Zi5fZGVsZWdhdGUuYXJjaGl2ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3VsdHMoc2VsZi5fcGF0Y2gp
CisKICAgICAgICAgaWYgc2VsZi5fYnVpbGRfYW5kX3Rlc3Rfd2l0aG91dF9wYXRjaCgpOgotICAg
ICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0X2ZhaWx1cmUoZmlyc3RfcmVzdWx0c19hcmNoaXZl
KSAgIyBUaGUgZXJyb3IgZnJvbSB0aGUgcHJldmlvdXMgLl90ZXN0KCkgcnVuIGlzIHJlYWwsIHJl
cG9ydCBpdC4KLSAgICAgICAgcmV0dXJuIEZhbHNlICAjIFRyZWUgbXVzdCBiZSByZWQsIGp1c3Qg
cmV0cnkgbGF0ZXIuCisgICAgICAgICAgICAjIFRoZSBlcnJvciBmcm9tIHRoZSBwcmV2aW91cyAu
X3Rlc3QoKSBydW4gaXMgcmVhbCwgcmVwb3J0IGl0LgorICAgICAgICAgICAgcmV0dXJuIHNlbGYu
cmVwb3J0X2ZhaWx1cmUoZmlyc3RfcmVzdWx0c19hcmNoaXZlKQorCisgICAgICAgIGNsZWFuX3Ry
ZWVfcmVzdWx0cyA9IHNlbGYuX2RlbGVnYXRlLmxheW91dF90ZXN0X3Jlc3VsdHMoKQorICAgICAg
ICBzZWxmLl9leHBlY3RlZF9mYWlsdXJlcy5ncm93X2V4cGVjdGVkX2ZhaWx1cmVzKGNsZWFuX3Ry
ZWVfcmVzdWx0cykKKworICAgICAgICByZXR1cm4gRmFsc2UgICMgVHJlZSBtdXN0IGJlIHJlZGRl
ciB0aGFuIHdlIGV4cGVjdGVkLCBqdXN0IHJldHJ5IGxhdGVyLgogCiAgICAgZGVmIHJlc3VsdHNf
YXJjaGl2ZV9mcm9tX3BhdGNoX3Rlc3RfcnVuKHNlbGYsIHBhdGNoKToKICAgICAgICAgYXNzZXJ0
KHNlbGYuX3BhdGNoLmlkKCkgPT0gcGF0Y2guaWQoKSkgICMgQ29tbWl0UXVldWVUYXNrIGlzIG5v
dCBjdXJyZW50bHkgcmUtdXNlYWJsZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHkKaW5kZXggODdkMGFi
NTgyYTQzNDlmYzA3MDM4NGNjZjE5ZGRiN2QyZWY3MjQxMi4uNzMyNGQ3ODNhMGRhMmZmMzNjNDZk
OTk1MmIxYThiZTk0YmFkNzYwMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHkKQEAgLTMwLDYgKzMw
LDcgQEAgZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKIGltcG9ydCB1bml0dGVzdAogCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQgaW1wb3J0IGJ1Z3ppbGxhCitmcm9tIHdlYmtpdHB5LmNv
bW1vbi5uZXQubGF5b3V0dGVzdHJlc3VsdHMgaW1wb3J0IExheW91dFRlc3RSZXN1bHRzCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZGVwcmVjYXRlZF9sb2dnaW5nIGltcG9ydCBlcnJvciwg
bG9nCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0
cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1w
b3J0IHRlc3RfcmVzdWx0cwpAQCAtNzcsOSArNzgsNiBAQCBjbGFzcyBNb2NrQ29tbWl0UXVldWUo
Q29tbWl0UXVldWVUYXNrRGVsZWdhdGUpOgogCiAKIGNsYXNzIENvbW1pdFF1ZXVlVGFza1Rlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBfbW9ja190ZXN0X3Jlc3VsdChzZWxmLCB0ZXN0
bmFtZSk6Ci0gICAgICAgIHJldHVybiB0ZXN0X3Jlc3VsdHMuVGVzdFJlc3VsdCh0ZXN0bmFtZSwg
W3Rlc3RfZmFpbHVyZXMuRmFpbHVyZVRleHRNaXNtYXRjaCgpXSkKLQogICAgIGRlZiBfcnVuX3Ro
cm91Z2hfdGFzayhzZWxmLCBjb21taXRfcXVldWUsIGV4cGVjdGVkX3N0ZGVyciwgZXhwZWN0ZWRf
ZXhjZXB0aW9uPU5vbmUsIGV4cGVjdF9yZXRyeT1GYWxzZSk6CiAgICAgICAgIHRvb2wgPSBNb2Nr
VG9vbChsb2dfZXhlY3V0aXZlPVRydWUpCiAgICAgICAgIHBhdGNoID0gdG9vbC5idWdzLmZldGNo
X2F0dGFjaG1lbnQoMTk3KQpAQCAtMTkwLDYgKzE4OCw5IEBAIGNvbW1hbmRfZmFpbGVkOiBmYWls
dXJlX21lc3NhZ2U9J1VuYWJsZSB0byBidWlsZCB3aXRob3V0IHBhdGNoJyBzY3JpcHRfZXJyb3I9
J01PCiAgICAgICAgICAgICBOb25lLAogICAgICAgICAgICAgU2NyaXB0RXJyb3IoIk1PQ0sgdGVz
dHMgZmFpbHVyZSIpLAogICAgICAgICBdKQorICAgICAgICAjIENvbW1pdFF1ZXVlVGFzayB3aWxs
IG9ubHkgcmVwb3J0IGZsYWt5IHRlc3RzIGlmIHdlIHN1Y2Nlc3NmdWxseSBwYXJzZWQKKyAgICAg
ICAgIyByZXN1bHRzLmh0bWwgYW5kIHJldHVybmVkIGEgTGF5b3V0VGVzdFJlc3VsdHMgb2JqZWN0
LCBzbyB3ZSBmYWtlIG9uZS4KKyAgICAgICAgY29tbWl0X3F1ZXVlLmxheW91dF90ZXN0X3Jlc3Vs
dHMgPSBsYW1iZGE6IExheW91dFRlc3RSZXN1bHRzKFtdKQogICAgICAgICBleHBlY3RlZF9zdGRl
cnIgPSAiIiJydW5fd2Via2l0X3BhdGNoOiBbJ2NsZWFuJ10KIGNvbW1hbmRfcGFzc2VkOiBzdWNj
ZXNzX21lc3NhZ2U9J0NsZWFuZWQgd29ya2luZyBkaXJlY3RvcnknIHBhdGNoPScxOTcnCiBydW5f
d2Via2l0X3BhdGNoOiBbJ3VwZGF0ZSddCkBAIC0yMTcsNiArMjE4LDcgQEAgY29tbWFuZF9wYXNz
ZWQ6IHN1Y2Nlc3NfbWVzc2FnZT0nTGFuZGVkIHBhdGNoJyBwYXRjaD0nMTk3JwogICAgICAgICAg
ICAgTm9uZSwKICAgICAgICAgICAgIFNjcmlwdEVycm9yKCJNT0NLIHRlc3RzIGZhaWx1cmUiKSwK
ICAgICAgICAgXSkKKyAgICAgICAgY29tbWl0X3F1ZXVlLmxheW91dF90ZXN0X3Jlc3VsdHMgPSBs
YW1iZGE6IExheW91dFRlc3RSZXN1bHRzKFtdKQogICAgICAgICAjIEl0J3MgcG9zc2libGUgZGVs
ZWdhdGUgdG8gZmFpbCB0byBhcmNoaXZlIGxheW91dCB0ZXN0cywgZG9uJ3QgdHJ5IHRvIHJlcG9y
dAogICAgICAgICAjIGZsYWt5IHRlc3RzIHdoZW4gdGhhdCBoYXBwZW5zLgogICAgICAgICBjb21t
aXRfcXVldWUuYXJjaGl2ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3VsdHMgPSBsYW1iZGEgcGF0Y2g6
IE5vbmUKQEAgLTIzNywxMCArMjM5LDI1IEBAIGNvbW1hbmRfcGFzc2VkOiBzdWNjZXNzX21lc3Nh
Z2U9J0xhbmRlZCBwYXRjaCcgcGF0Y2g9JzE5NycKICIiIgogICAgICAgICBzZWxmLl9ydW5fdGhy
b3VnaF90YXNrKGNvbW1pdF9xdWV1ZSwgZXhwZWN0ZWRfc3RkZXJyKQogCi0gICAgX2RvdWJsZV9m
bGFreV90ZXN0X2NvdW50ZXIgPSAwCi0KICAgICBkZWYgdGVzdF9kb3VibGVfZmxha3lfdGVzdF9m
YWlsdXJlKHNlbGYpOgotICAgICAgICBjb21taXRfcXVldWUgPSBNb2NrQ29tbWl0UXVldWUoWwor
ICAgICAgICBjbGFzcyBEb3VibGVGbGFreUNvbW1pdFF1ZXVlKE1vY2tDb21taXRRdWV1ZSk6Cisg
ICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZXJyb3JfcGxhbik6CisgICAgICAgICAgICAg
ICAgTW9ja0NvbW1pdFF1ZXVlLl9faW5pdF9fKHNlbGYsIGVycm9yX3BsYW4pCisgICAgICAgICAg
ICAgICAgc2VsZi5fZG91YmxlX2ZsYWt5X3Rlc3RfY291bnRlciA9IDAKKworICAgICAgICAgICAg
ZGVmIHJ1bl9jb21tYW5kKHNlbGYsIGNvbW1hbmQpOgorICAgICAgICAgICAgICAgIHNlbGYuX2Rv
dWJsZV9mbGFreV90ZXN0X2NvdW50ZXIgKz0gMQorICAgICAgICAgICAgICAgIE1vY2tDb21taXRR
dWV1ZS5ydW5fY29tbWFuZChzZWxmLCBjb21tYW5kKQorCisgICAgICAgICAgICBkZWYgX21vY2tf
dGVzdF9yZXN1bHQoc2VsZiwgdGVzdG5hbWUpOgorICAgICAgICAgICAgICAgIHJldHVybiB0ZXN0
X3Jlc3VsdHMuVGVzdFJlc3VsdCh0ZXN0bmFtZSwgW3Rlc3RfZmFpbHVyZXMuRmFpbHVyZVRleHRN
aXNtYXRjaCgpXSkKKworICAgICAgICAgICAgZGVmIGxheW91dF90ZXN0X3Jlc3VsdHMoc2VsZik6
CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fZG91YmxlX2ZsYWt5X3Rlc3RfY291bnRlciAlIDI6
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBMYXlvdXRUZXN0UmVzdWx0cyhbc2VsZi5fbW9j
a190ZXN0X3Jlc3VsdCgnZm9vLmh0bWwnKV0pCisgICAgICAgICAgICAgICAgcmV0dXJuIExheW91
dFRlc3RSZXN1bHRzKFtzZWxmLl9tb2NrX3Rlc3RfcmVzdWx0KCdiYXIuaHRtbCcpXSkKKworICAg
ICAgICBjb21taXRfcXVldWUgPSBEb3VibGVGbGFreUNvbW1pdFF1ZXVlKFsKICAgICAgICAgICAg
IE5vbmUsCiAgICAgICAgICAgICBOb25lLAogICAgICAgICAgICAgTm9uZSwKQEAgLTI2OCwxNSAr
Mjg1LDYgQEAgY29tbWFuZF9mYWlsZWQ6IGZhaWx1cmVfbWVzc2FnZT0nUGF0Y2ggZG9lcyBub3Qg
cGFzcyB0ZXN0cycgc2NyaXB0X2Vycm9yPSdNT0NLIHQKICAgICAgICAgdG9vbCA9IE1vY2tUb29s
KGxvZ19leGVjdXRpdmU9VHJ1ZSkKICAgICAgICAgcGF0Y2ggPSB0b29sLmJ1Z3MuZmV0Y2hfYXR0
YWNobWVudCgxOTcpCiAgICAgICAgIHRhc2sgPSBDb21taXRRdWV1ZVRhc2soY29tbWl0X3F1ZXVl
LCBwYXRjaCkKLSAgICAgICAgc2VsZi5fZG91YmxlX2ZsYWt5X3Rlc3RfY291bnRlciA9IDAKLQot
ICAgICAgICBkZWYgbW9ja19mYWlsaW5nX3Jlc3VsdHNfZnJvbV9sYXN0X3J1bigpOgotICAgICAg
ICAgICAgQ29tbWl0UXVldWVUYXNrVGVzdC5fZG91YmxlX2ZsYWt5X3Rlc3RfY291bnRlciArPSAx
Ci0gICAgICAgICAgICBpZiBDb21taXRRdWV1ZVRhc2tUZXN0Ll9kb3VibGVfZmxha3lfdGVzdF9j
b3VudGVyICUgMjoKLSAgICAgICAgICAgICAgICByZXR1cm4gW3NlbGYuX21vY2tfdGVzdF9yZXN1
bHQoJ2Zvby5odG1sJyldCi0gICAgICAgICAgICByZXR1cm4gW3NlbGYuX21vY2tfdGVzdF9yZXN1
bHQoJ2Jhci5odG1sJyldCi0KLSAgICAgICAgdGFzay5fZmFpbGluZ19yZXN1bHRzX2Zyb21fbGFz
dF9ydW4gPSBtb2NrX2ZhaWxpbmdfcmVzdWx0c19mcm9tX2xhc3RfcnVuCiAgICAgICAgIHN1Y2Nl
c3MgPSBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgdGFzay5ydW4sIGV4cGVj
dGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Vj
Y2VzcywgRmFsc2UpCiAKQEAgLTMwMiw2ICszMTAsNyBAQCBjb21tYW5kX2ZhaWxlZDogZmFpbHVy
ZV9tZXNzYWdlPSdQYXRjaCBkb2VzIG5vdCBwYXNzIHRlc3RzJyBzY3JpcHRfZXJyb3I9J01PQ0sg
dAogYXJjaGl2ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3VsdHM6IHBhdGNoPScxOTcnCiBydW5fd2Vi
a2l0X3BhdGNoOiBbJ2J1aWxkLWFuZC10ZXN0JywgJy0tbm8tY2xlYW4nLCAnLS1uby11cGRhdGUn
LCAnLS10ZXN0JywgJy0tbm9uLWludGVyYWN0aXZlJ10KIGNvbW1hbmRfZmFpbGVkOiBmYWlsdXJl
X21lc3NhZ2U9J1BhdGNoIGRvZXMgbm90IHBhc3MgdGVzdHMnIHNjcmlwdF9lcnJvcj0nTU9DSyB0
ZXN0IGZhaWx1cmUgYWdhaW4nIHBhdGNoPScxOTcnCithcmNoaXZlX2xhc3RfbGF5b3V0X3Rlc3Rf
cmVzdWx0czogcGF0Y2g9JzE5NycKIHJ1bl93ZWJraXRfcGF0Y2g6IFsnYnVpbGQtYW5kLXRlc3Qn
LCAnLS1mb3JjZS1jbGVhbicsICctLW5vLXVwZGF0ZScsICctLWJ1aWxkJywgJy0tdGVzdCcsICct
LW5vbi1pbnRlcmFjdGl2ZSddCiBjb21tYW5kX3Bhc3NlZDogc3VjY2Vzc19tZXNzYWdlPSdBYmxl
IHRvIHBhc3MgdGVzdHMgd2l0aG91dCBwYXRjaCcgcGF0Y2g9JzE5NycKICIiIgpAQCAtMzMwLDYg
KzMzOSw3IEBAIGNvbW1hbmRfZmFpbGVkOiBmYWlsdXJlX21lc3NhZ2U9J1BhdGNoIGRvZXMgbm90
IHBhc3MgdGVzdHMnIHNjcmlwdF9lcnJvcj0nTU9DSyB0CiBhcmNoaXZlX2xhc3RfbGF5b3V0X3Rl
c3RfcmVzdWx0czogcGF0Y2g9JzE5NycKIHJ1bl93ZWJraXRfcGF0Y2g6IFsnYnVpbGQtYW5kLXRl
c3QnLCAnLS1uby1jbGVhbicsICctLW5vLXVwZGF0ZScsICctLXRlc3QnLCAnLS1ub24taW50ZXJh
Y3RpdmUnXQogY29tbWFuZF9mYWlsZWQ6IGZhaWx1cmVfbWVzc2FnZT0nUGF0Y2ggZG9lcyBub3Qg
cGFzcyB0ZXN0cycgc2NyaXB0X2Vycm9yPSdNT0NLIHRlc3QgZmFpbHVyZSBhZ2FpbicgcGF0Y2g9
JzE5NycKK2FyY2hpdmVfbGFzdF9sYXlvdXRfdGVzdF9yZXN1bHRzOiBwYXRjaD0nMTk3JwogcnVu
X3dlYmtpdF9wYXRjaDogWydidWlsZC1hbmQtdGVzdCcsICctLWZvcmNlLWNsZWFuJywgJy0tbm8t
dXBkYXRlJywgJy0tYnVpbGQnLCAnLS10ZXN0JywgJy0tbm9uLWludGVyYWN0aXZlJ10KIGNvbW1h
bmRfZmFpbGVkOiBmYWlsdXJlX21lc3NhZ2U9J1VuYWJsZSB0byBwYXNzIHRlc3RzIHdpdGhvdXQg
cGF0Y2ggKHRyZWUgaXMgcmVkPyknIHNjcmlwdF9lcnJvcj0nTU9DSyBjbGVhbiB0ZXN0IGZhaWx1
cmUnIHBhdGNoPScxOTcnCiAiIiIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9ib3QvZXhwZWN0ZWRmYWlsdXJlcy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9ib3QvZXhwZWN0ZWRmYWlsdXJlcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzM2YWMwZDFhODlmMzljMTgx
ZDQzOGNhZTI1ZTY4OTc4M2ZmYWIyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2JvdC9leHBlY3RlZGZhaWx1cmVzLnB5CkBAIC0wLDAgKzEsNTUgQEAKKyMg
Q29weXJpZ2h0IChjKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisj
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisKK2NsYXNzIEV4cGVjdGVkRmFpbHVyZXMob2JqZWN0KToKKyAgICBk
ZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuX2ZhaWx1cmVzID0gc2V0KCkKKworICAg
IGRlZiBfY2FuX3RydXN0X3Jlc3VsdHMoc2VsZiwgcmVzdWx0cyk6CisgICAgICAgIGlmIG5vdCBy
ZXN1bHRzIG9yIG5vdCByZXN1bHRzLmZhaWx1cmVfbGltaXRfY291bnQoKToKKyAgICAgICAgICAg
IHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gbGVuKHJlc3VsdHMuZmFpbGluZ190ZXN0cygp
KSAhPSAwIGFuZCBsZW4ocmVzdWx0cy5mYWlsaW5nX3Rlc3RzKCkpICE9IHJlc3VsdHMuZmFpbHVy
ZV9saW1pdF9jb3VudCgpCisKKyAgICBkZWYgZmFpbHVyZXNfd2VyZV9leHBlY3RlZChzZWxmLCBy
ZXN1bHRzKToKKyAgICAgICAgaWYgbm90IHNlbGYuX2Nhbl90cnVzdF9yZXN1bHRzKHJlc3VsdHMp
OgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBzZXQocmVzdWx0cy5m
YWlsaW5nX3Rlc3RzKCkpIDw9IHNlbGYuX2ZhaWx1cmVzCisKKyAgICBkZWYgc2hyaW5rX2V4cGVj
dGVkX2ZhaWx1cmVzKHNlbGYsIHJlc3VsdHMsIHJ1bl9zdWNjZXNzKToKKyAgICAgICAgaWYgcnVu
X3N1Y2Nlc3M6CisgICAgICAgICAgICBzZWxmLl9mYWlsdXJlcyA9IHNldCgpCisgICAgICAgIGVs
aWYgc2VsZi5fY2FuX3RydXN0X3Jlc3VsdHMocmVzdWx0cyk6CisgICAgICAgICAgICAjIFJlbW92
ZSBhbGwgZXhwZWN0ZWQgZmFpbHVyZXMgd2hpY2ggYXJlIG5vdCBpbiB0aGUgbmV3IGZhaWxpbmcg
cmVzdWx0cy4KKyAgICAgICAgICAgIHNlbGYuX2ZhaWx1cmVzLmludGVyc2VjdGlvbl91cGRhdGUo
c2V0KHJlc3VsdHMuZmFpbGluZ190ZXN0cygpKSkKKworICAgIGRlZiBncm93X2V4cGVjdGVkX2Zh
aWx1cmVzKHNlbGYsIHJlc3VsdHMpOgorICAgICAgICBpZiBub3Qgc2VsZi5fY2FuX3RydXN0X3Jl
c3VsdHMocmVzdWx0cyk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5fZmFpbHVy
ZXMudXBkYXRlKHJlc3VsdHMuZmFpbGluZ190ZXN0cygpKQorICAgICAgICAjIEZJWE1FOiBTaG91
bGQgd2UgYXNzZXJ0KCkgaGVyZSB0aGF0IGV4cGVjdGVkX2ZhaWx1cmVzIG5ldmVyIGNyb3NzZXMg
YSBjZXJ0YWluIHNpemU/CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Ym90L2V4cGVjdGVkZmFpbHVyZXNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvYm90L2V4cGVjdGVkZmFpbHVyZXNfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGEyNzAy
YmNmMDA1MWNiYjk0NWY5MjBlNDhkMzU0OTRjNTEyZmEwNwotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvZXhwZWN0ZWRmYWlsdXJlc191bml0dGVzdC5w
eQpAQCAtMCwwICsxLDczIEBACisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6
CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHVuaXR0ZXN0CisK
K2Zyb20gd2Via2l0cHkudG9vbC5ib3QuZXhwZWN0ZWRmYWlsdXJlcyBpbXBvcnQgRXhwZWN0ZWRG
YWlsdXJlcworCisKK2NsYXNzIE1vY2tSZXN1bHRzKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIGZhaWxpbmdfdGVzdHM9W10sIGZhaWx1cmVfbGltaXQ9MTApOgorICAgICAgICBzZWxm
Ll9mYWlsaW5nX3Rlc3RzID0gZmFpbGluZ190ZXN0cworICAgICAgICBzZWxmLl9mYWlsdXJlX2xp
bWl0X2NvdW50ID0gZmFpbHVyZV9saW1pdAorCisgICAgZGVmIGZhaWx1cmVfbGltaXRfY291bnQo
c2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9mYWlsdXJlX2xpbWl0X2NvdW50CisKKyAgICBk
ZWYgZmFpbGluZ190ZXN0cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZhaWxpbmdfdGVz
dHMKKworCitjbGFzcyBFeHBlY3RlZEZhaWx1cmVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Cisg
ICAgZGVmIF9hc3NlcnRfY2FuX3RydXN0KHNlbGYsIHJlc3VsdHMsIGNhbl90cnVzdCk6CisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKEV4cGVjdGVkRmFpbHVyZXMoKS5fY2FuX3RydXN0X3Jlc3Vs
dHMocmVzdWx0cyksIGNhbl90cnVzdCkKKworICAgIGRlZiB0ZXN0X2Nhbl90cnVzdF9yZXN1bHRz
KHNlbGYpOgorICAgICAgICBzZWxmLl9hc3NlcnRfY2FuX3RydXN0KE5vbmUsIEZhbHNlKQorICAg
ICAgICBzZWxmLl9hc3NlcnRfY2FuX3RydXN0KE1vY2tSZXN1bHRzKGZhaWxpbmdfdGVzdHM9W10s
IGZhaWx1cmVfbGltaXQ9Tm9uZSksIEZhbHNlKQorICAgICAgICBzZWxmLl9hc3NlcnRfY2FuX3Ry
dXN0KE1vY2tSZXN1bHRzKGZhaWxpbmdfdGVzdHM9W10sIGZhaWx1cmVfbGltaXQ9MTApLCBGYWxz
ZSkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2Nhbl90cnVzdChNb2NrUmVzdWx0cyhmYWlsaW5nX3Rl
c3RzPVsxXSwgZmFpbHVyZV9saW1pdD1Ob25lKSwgRmFsc2UpCisgICAgICAgIHNlbGYuX2Fzc2Vy
dF9jYW5fdHJ1c3QoTW9ja1Jlc3VsdHMoZmFpbGluZ190ZXN0cz1bMV0sIGZhaWx1cmVfbGltaXQ9
MiksIFRydWUpCisgICAgICAgIHNlbGYuX2Fzc2VydF9jYW5fdHJ1c3QoTW9ja1Jlc3VsdHMoZmFp
bGluZ190ZXN0cz1bMV0sIGZhaWx1cmVfbGltaXQ9MSksIEZhbHNlKQorCisgICAgZGVmIF9hc3Nl
cnRfZXhwZWN0ZWQoc2VsZiwgZXhwZWN0ZWRfZmFpbHVyZXMsIGZhaWx1cmVzLCBleHBlY3RlZCk6
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfZmFpbHVyZXMuZmFpbHVyZXNfd2Vy
ZV9leHBlY3RlZChNb2NrUmVzdWx0cyhmYWlsdXJlcykpLCBleHBlY3RlZCkKKworICAgIGRlZiB0
ZXN0X2ZhaWx1cmVzX3dlcmVfZXhwZWN0ZWQoc2VsZik6CisgICAgICAgIGZhaWx1cmVzID0gRXhw
ZWN0ZWRGYWlsdXJlcygpCisgICAgICAgIGZhaWx1cmVzLmdyb3dfZXhwZWN0ZWRfZmFpbHVyZXMo
TW9ja1Jlc3VsdHMoWydmb28uaHRtbCddKSkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2V4cGVjdGVk
KGZhaWx1cmVzLCBbJ2Zvby5odG1sJ10sIFRydWUpCisgICAgICAgIHNlbGYuX2Fzc2VydF9leHBl
Y3RlZChmYWlsdXJlcywgWydiYXIuaHRtbCddLCBGYWxzZSkKKyAgICAgICAgZmFpbHVyZXMuc2hy
aW5rX2V4cGVjdGVkX2ZhaWx1cmVzKE1vY2tSZXN1bHRzKFsnYmF6Lmh0bWwnXSksIEZhbHNlKQor
ICAgICAgICBzZWxmLl9hc3NlcnRfZXhwZWN0ZWQoZmFpbHVyZXMsIFsnZm9vLmh0bWwnXSwgRmFs
c2UpCisgICAgICAgIHNlbGYuX2Fzc2VydF9leHBlY3RlZChmYWlsdXJlcywgWydiYXouaHRtbCdd
LCBGYWxzZSkKKworICAgICAgICBmYWlsdXJlcy5ncm93X2V4cGVjdGVkX2ZhaWx1cmVzKE1vY2tS
ZXN1bHRzKFsnYmF6Lmh0bWwnXSkpCisgICAgICAgIHNlbGYuX2Fzc2VydF9leHBlY3RlZChmYWls
dXJlcywgWydiYXouaHRtbCddLCBUcnVlKQorICAgICAgICBmYWlsdXJlcy5zaHJpbmtfZXhwZWN0
ZWRfZmFpbHVyZXMoTW9ja1Jlc3VsdHMoKSwgVHJ1ZSkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2V4
cGVjdGVkKGZhaWx1cmVzLCBbJ2Jhei5odG1sJ10sIEZhbHNlKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkKaW5kZXggNTYzNjI0OTgzMmMxMmRjYjEy
Zjg5MjNlZDgxZGZmYmRiZmY5ZTU1NC4uMDVkNDNhNWQyNzYwNzU1NzZjYjY5OWQ1Mjg0YjNiNDRh
ZGFmYWQ2MiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L3F1ZXVlcy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVl
dWVzLnB5CkBAIC01MCw2ICs1MCw3IEBAIGZyb20gd2Via2l0cHkudG9vbC5ib3QuZmVlZGVycyBp
bXBvcnQgQ29tbWl0UXVldWVGZWVkZXIsIEVXU0ZlZWRlcgogZnJvbSB3ZWJraXRweS50b29sLmJv
dC5xdWV1ZWVuZ2luZSBpbXBvcnQgUXVldWVFbmdpbmUsIFF1ZXVlRW5naW5lRGVsZWdhdGUKIGZy
b20gd2Via2l0cHkudG9vbC5ib3QuZmxha3l0ZXN0cmVwb3J0ZXIgaW1wb3J0IEZsYWt5VGVzdFJl
cG9ydGVyCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuc3RlcHNlcXVlbmNlIGltcG9ydCBT
dGVwU2VxdWVuY2VFcnJvckhhbmRsZXIKK2Zyb20gd2Via2l0cHkudG9vbC5zdGVwcy5ydW50ZXN0
cyBpbXBvcnQgUnVuVGVzdHMKIGZyb20gd2Via2l0cHkudG9vbC5tdWx0aWNvbW1hbmR0b29sIGlt
cG9ydCBDb21tYW5kLCBUcnlBZ2FpbgogCiAKQEAgLTMxNCw4ICszMTUsNyBAQCBjbGFzcyBDb21t
aXRRdWV1ZShBYnN0cmFjdFBhdGNoUXVldWUsIFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxlciwgQ29t
bWl0UXVldWVUYXNrRAogICAgICMgdG9vbC5maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlLiAgVGhl
eSBoYXZlIGRpZmZlcmVudCBlcnJvciBoYW5kbGluZyBhdCB0aGUgbW9tZW50LgogICAgIGRlZiBf
cmVhZF9maWxlX2NvbnRlbnRzKHNlbGYsIHBhdGgpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICB3aXRoIGNvZGVjcy5vcGVuKHBhdGgsICJyIiwgInV0Zi04IikgYXMgb3Blbl9maWxlOgotICAg
ICAgICAgICAgICAgIHJldHVybiBvcGVuX2ZpbGUucmVhZCgpCisgICAgICAgICAgICByZXR1cm4g
c2VsZi5fdG9vbC5maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKHBhdGgpCiAgICAgICAgIGV4Y2Vw
dCBPU0Vycm9yLCBlOiAgIyBGaWxlIGRvZXMgbm90IGV4aXN0IG9yIGNhbid0IGJlIHJlYWQuCiAg
ICAgICAgICAgICByZXR1cm4gTm9uZQogCkBAIC0zMjUsNyArMzI1LDExIEBAIGNsYXNzIENvbW1p
dFF1ZXVlKEFic3RyYWN0UGF0Y2hRdWV1ZSwgU3RlcFNlcXVlbmNlRXJyb3JIYW5kbGVyLCBDb21t
aXRRdWV1ZVRhc2tECiAgICAgICAgIHJlc3VsdHNfaHRtbCA9IHNlbGYuX3JlYWRfZmlsZV9jb250
ZW50cyhyZXN1bHRzX3BhdGgpCiAgICAgICAgIGlmIG5vdCByZXN1bHRzX2h0bWw6CiAgICAgICAg
ICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gTGF5b3V0VGVzdFJlc3VsdHMucmVzdWx0
c19mcm9tX3N0cmluZyhyZXN1bHRzX2h0bWwpCisgICAgICAgICMgRklYTUU6IFdlIHNob3VsZCBu
b3QgaGF2ZSB0byBwYXNzIGEgZmFpbHVyZV9saW1pdF9jb3VudCwgYnV0IHdlCisgICAgICAgICMg
ZG8gdW50aWwgcnVuLXdlYmtpdC10ZXN0cyBjYW4gYmUgdXBkYXRlZCBzYXZlIG9mZiB0aGUgdmFs
dWUKKyAgICAgICAgIyBvZiAtLWV4aXQtYWZ0ZXItTi1mYWlsdXJlcyBpbiByZXN1bHRzLmh0bWwv
cmVzdWx0cy5qc29uLgorICAgICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01ODQ4MQorICAgICAgICByZXR1cm4gTGF5b3V0VGVzdFJlc3VsdHMucmVzdWx0c19m
cm9tX3N0cmluZyhyZXN1bHRzX2h0bWwsIGZhaWx1cmVfbGltaXRfY291bnQ9UnVuVGVzdHMuTk9O
X0lOVEVSQUNUSVZFX0ZBSUxVUkVfTElNSVRfQ09VTlQpCiAKICAgICBkZWYgX3Jlc3VsdHNfZGly
ZWN0b3J5KHNlbGYpOgogICAgICAgICByZXN1bHRzX3BhdGggPSBzZWxmLl90b29sLnBvcnQoKS5s
YXlvdXRfdGVzdHNfcmVzdWx0c19wYXRoKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5CmluZGV4IDgyMzM2MTc0YjMx
ZWRhZTU0ZGMzZTQ0NGQ4MDhmMjRhNDk2MWU2NGEuLjgyM2Y5ODBjMDFiOTA4MWFkNjA0NDAxNjlj
NzUyY2VmMjZlOTE2NGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weQpAQCAtMjUzLDYgKzI1Myw3IEBAIE1PQ0s6
IHJlbGVhc2Vfd29ya19pdGVtOiBjb21taXQtcXVldWUgMTk3CiAKICAgICBkZWYgdGVzdF9yb2xs
b3V0KHNlbGYpOgogICAgICAgICB0b29sID0gTW9ja1Rvb2wobG9nX2V4ZWN1dGl2ZT1UcnVlKQor
ICAgICAgICB0b29sLmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKCcvbW9jay9yZXN1bHRzLmh0
bWwnLCAnJykgICMgT3RoZXJ3aXNlIHRoZSBjb21taXQtcXVldWUgd2lsbCBoaXQgYSBLZXlFcnJv
ciB0cnlpbmcgdG8gcmVhZCB0aGUgcmVzdWx0cyBmcm9tIHRoZSBNb2NrRmlsZVN5c3RlbS4KICAg
ICAgICAgdG9vbC5idWlsZGJvdC5saWdodF90cmVlX29uX2ZpcmUoKQogICAgICAgICBleHBlY3Rl
ZF9zdGRlcnIgPSB7CiAgICAgICAgICAgICAiYmVnaW5fd29ya19xdWV1ZSI6IHNlbGYuX2RlZmF1
bHRfYmVnaW5fd29ya19xdWV1ZV9zdGRlcnIoImNvbW1pdC1xdWV1ZSIsIE1vY2tTQ00uZmFrZV9j
aGVja291dF9yb290KSwKQEAgLTMyMSw2ICszMjIsNyBAQCBNT0NLOiByZWxlYXNlX3dvcmtfaXRl
bTogY29tbWl0LXF1ZXVlIDEwNgogICAgIGRlZiB0ZXN0X21hbnVhbF9yZWplY3RfZHVyaW5nX3By
b2Nlc3Npbmcoc2VsZik6CiAgICAgICAgIHF1ZXVlID0gU2Vjb25kVGhvdWdodHNDb21taXRRdWV1
ZSgpCiAgICAgICAgIHF1ZXVlLmJpbmRfdG9fdG9vbChNb2NrVG9vbCgpKQorICAgICAgICBxdWV1
ZS5fdG9vbC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZSgnL21vY2svcmVzdWx0cy5odG1sJywg
JycpICAjIE90aGVyd2lzZSB0aGUgY29tbWl0LXF1ZXVlIHdpbGwgaGl0IGEgS2V5RXJyb3IgdHJ5
aW5nIHRvIHJlYWQgdGhlIHJlc3VsdHMgZnJvbSB0aGUgTW9ja0ZpbGVTeXN0ZW0uCiAgICAgICAg
IHF1ZXVlLl9vcHRpb25zID0gTW9jaygpCiAgICAgICAgIHF1ZXVlLl9vcHRpb25zLnBvcnQgPSBO
b25lCiAgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICIiIk1PQ0s6IHVwZGF0ZV9zdGF0dXM6IGNv
bW1pdC1xdWV1ZSBDbGVhbmVkIHdvcmtpbmcgZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzdGVzdC5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXN0ZXN0LnB5CmluZGV4IDY0NTU2MTcyNGZi
YmVjNzEzNmE5MTdlMTBlYWVhOGJjOTVmMWQ4Y2IuLjc1ODgzMmVhYTFiMWUzNGMwZDg5MWRkYjkz
ODU0ZjVhMGE3OTgyY2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9xdWV1ZXN0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9xdWV1ZXN0ZXN0LnB5CkBAIC02Nyw2ICs2Nyw5IEBAIGNsYXNzIFF1ZXVlc1Rlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBhc3NlcnRfcXVldWVfb3V0cHV0cyhzZWxmLCBx
dWV1ZSwgYXJncz1Ob25lLCB3b3JrX2l0ZW09Tm9uZSwgZXhwZWN0ZWRfc3Rkb3V0PU5vbmUsIGV4
cGVjdGVkX3N0ZGVycj1Ob25lLCBleHBlY3RlZF9leGNlcHRpb25zPU5vbmUsIG9wdGlvbnM9Tm9u
ZSwgdG9vbD1Ob25lKToKICAgICAgICAgaWYgbm90IHRvb2w6CiAgICAgICAgICAgICB0b29sID0g
TW9ja1Rvb2woKQorICAgICAgICAgICAgIyBUaGlzIGlzIGEgaGFjayB0byBtYWtlIGl0IGVhc3kg
Zm9yIGNhbGxlcnMgdG8gbm90IGhhdmUgdG8gc2V0dXAgYSBjdXN0b20gTW9ja0ZpbGVTeXN0ZW0g
anVzdCB0byB0ZXN0IHRoZSBjb21taXQtcXVldWUKKyAgICAgICAgICAgICMgdGhlIGNxIHRyaWVz
IHRvIHJlYWQgdGhlIGxheW91dCB0ZXN0IHJlc3VsdHMsIGFuZCB3aWxsIGhpdCBhIEtleUVycm9y
IGluIE1vY2tGaWxlU3lzdGVtIGlmIHdlIGRvbid0IGRvIHRoaXMuCisgICAgICAgICAgICB0b29s
LmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKCcvbW9jay9yZXN1bHRzLmh0bWwnLCAiIikKICAg
ICAgICAgaWYgbm90IGV4cGVjdGVkX3N0ZG91dDoKICAgICAgICAgICAgIGV4cGVjdGVkX3N0ZG91
dCA9IHt9CiAgICAgICAgIGlmIG5vdCBleHBlY3RlZF9zdGRlcnI6CmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcnVudGVzdHMucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvc3RlcHMvcnVudGVzdHMucHkKaW5kZXggMjgyZTM4MTAzMGEwMzQ0NGI2
ZTdjYTQ2NGNkZWVmYmU4ZWNkYjdjNi4uOTYxNWJlMjFlNTI2OTQzN2JmOTAxMjE4NzAyZjc1NTIz
ZjcxZTQxNyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3J1
bnRlc3RzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9ydW50ZXN0
cy5weQpAQCAtMzEsNiArMzEsOSBAQCBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMub3B0aW9ucyBp
bXBvcnQgT3B0aW9ucwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJlY2F0ZWRfbG9n
Z2luZyBpbXBvcnQgbG9nCiAKIGNsYXNzIFJ1blRlc3RzKEFic3RyYWN0U3RlcCk6CisgICAgIyBG
SVhNRTogVGhpcyBrbm93bGVkZ2UgcmVhbGx5IGJlbG9uZ3MgaW4gdGhlIGNvbW1pdC1xdWV1ZS4K
KyAgICBOT05fSU5URVJBQ1RJVkVfRkFJTFVSRV9MSU1JVF9DT1VOVCA9IDEKKwogICAgIEBjbGFz
c21ldGhvZAogICAgIGRlZiBvcHRpb25zKGNscyk6CiAgICAgICAgIHJldHVybiBBYnN0cmFjdFN0
ZXAub3B0aW9ucygpICsgWwpAQCAtNTksNyArNjIsNyBAQCBjbGFzcyBSdW5UZXN0cyhBYnN0cmFj
dFN0ZXApOgogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLm5vbl9pbnRlcmFjdGl2ZToKICAgICAg
ICAgICAgIGFyZ3MuYXBwZW5kKCItLW5vLW5ldy10ZXN0LXJlc3VsdHMiKQogICAgICAgICAgICAg
YXJncy5hcHBlbmQoIi0tbm8tbGF1bmNoLXNhZmFyaSIpCi0gICAgICAgICAgICBhcmdzLmFwcGVu
ZCgiLS1leGl0LWFmdGVyLW4tZmFpbHVyZXM9MSIpCisgICAgICAgICAgICBhcmdzLmFwcGVuZCgi
LS1leGl0LWFmdGVyLW4tZmFpbHVyZXM9JXMiICUgc2VsZi5OT05fSU5URVJBQ1RJVkVfRkFJTFVS
RV9MSU1JVF9DT1VOVCkKICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCItLXdhaXQtZm9yLWh0dHBk
IikKICAgICAgICAgICAgICMgRklYTUU6IEhhY2sgdG8gd29yayBhcm91bmQgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4OTEyCiAgICAgICAgICAgICAjIHdoZW4gcnVu
bmluZyB0aGUgY29tbWl0LXF1ZXVlIG9uIGEgbWFjIGxlb3BhcmQgbWFjaGluZSBzaW5jZSBjb21w
b3NpdGluZwo=
</data>
<flag name="commit-queue"
          id="82181"
          type_id="3"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>