<?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>178480</bug_id>
          
          <creation_ts>2017-10-18 12:45:42 -0700</creation_ts>
          <short_desc>Add support for webkitpy tests EWS</short_desc>
          <delta_ts>2020-06-17 09:18:12 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=178539</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=180302</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=213299</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Aakash Jain">aakash_jain</reporter>
          <assigned_to name="Aakash Jain">aakash_jain</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>ap</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>glenn</cc>
    
    <cc>lforschler</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1361847</commentid>
    <comment_count>0</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2017-10-18 12:45:42 -0700</bug_when>
    <thetext>We should have a EWS which runs webkitpy tests. It would help catch webkitpy failures early-on.

See &lt;rdar://problem/18231414&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362269</commentid>
    <comment_count>1</comment_count>
      <attachid>324268</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2017-10-19 13:09:15 -0700</bug_when>
    <thetext>Created attachment 324268
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362279</commentid>
    <comment_count>2</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2017-10-19 13:19:59 -0700</bug_when>
    <thetext>Tested on an staging instance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364493</commentid>
    <comment_count>3</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2017-10-25 14:48:50 -0700</bug_when>
    <thetext>This patch is similar to bindings-test EWS patches, combination of https://bugs.webkit.org/show_bug.cgi?id=168979, https://bugs.webkit.org/show_bug.cgi?id=169063, https://bugs.webkit.org/show_bug.cgi?id=169308</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365269</commentid>
    <comment_count>4</comment_count>
      <attachid>324268</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-10-26 22:48:56 -0700</bug_when>
    <thetext>Comment on attachment 324268
Proposed patch

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

&gt; Tools/Scripts/webkitpy/common/config/ews.json:62
&gt; +    &quot;Webkitpy EWS&quot;: {

Webkitpy =&gt; webkitpy OR WebKitPy

&gt; Tools/Scripts/webkitpy/common/net/webkitpytestresults.py:30
&gt; +class BindingsTestResults(AbstractTestResults):

Please name the file after this class or vice versa.

&gt; Tools/Scripts/webkitpy/common/net/webkitpytestresults_unittest.py:28
&gt; +class BindingsTestResultsTest(unittest.TestCase):

Ditto.

&gt; Tools/Scripts/webkitpy/tool/bot/webkitpytestresultsreader.py:31
&gt; +class BindingsTestResultsReader(AbstractTestResultsReader):

Ditto.

&gt; Tools/Scripts/webkitpy/tool/bot/webkitpytestresultsreader.py:31
&gt; +class WebkitpyTestResultsReader(AbstractTestResultsReader):

Ditto.

&gt; Tools/Scripts/webkitpy/tool/commands/earlywarningsystem.py:67
&gt; +            self._test_results_reader = WebkitpyTestResultsReader(self._tool, self._port.jsc_results_directory())

We should rename jsc_results_directory() to something more generic since we use this directory for other test results.

&gt; Tools/Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:204
&gt; +            &apos;webkitpy-ews&apos;,

Please add this to the list in sorted order according to the UNIX sort command.

&gt; Tools/Scripts/webkitpy/tool/steps/runtests.py:84
&gt; +        # FIXME: Remove this code since we now have a separate webkitpy EWS.

We talked about this in person. It does not seem harmful to support running these tests when using webkit-patch interactively.

&gt; Tools/Scripts/webkitpy/tool/steps/runtests.py:187
&gt; +        args.append(&quot;--json-output=%s&quot; % results_file_path)

I believe we prefer String.format() over % operator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367605</commentid>
    <comment_count>5</comment_count>
      <attachid>325789</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2017-11-02 15:58:23 -0700</bug_when>
    <thetext>Created attachment 325789
Updated patch

Review comments incorporated. Removed some code duplication.

Also enabled checking for patch relevance so that webkitpy-ews bubble only shows for relevant patches.

Tested on staging instance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369207</commentid>
    <comment_count>6</comment_count>
      <attachid>325789</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-07 14:31:00 -0800</bug_when>
    <thetext>Comment on attachment 325789
Updated patch

Clearing flags on attachment: 325789

Committed r224547: &lt;https://trac.webkit.org/changeset/224547&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369208</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-07 14:31:02 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369282</commentid>
    <comment_count>8</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2017-11-07 17:28:44 -0800</bug_when>
    <thetext>Seems to be working fine: https://webkit-queues.webkit.org/queue-status/webkitpy-ews</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324268</attachid>
            <date>2017-10-19 13:09:15 -0700</date>
            <delta_ts>2017-11-02 15:58:23 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>ews_webkitpy_v2</filename>
            <type>text/plain</type>
            <size>21383</size>
            <attacher name="Aakash Jain">aakash_jain</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIyMzY5OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI1IEBACisyMDE3LTEwLTE5ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igd2Via2l0cHkgdGVzdHMgRVdTCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg0ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NvbmZpZy9ld3MuanNvbjogQWRkZWQgd2Via2l0cHkgRVdTLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC93ZWJraXRweXRlc3RyZXN1bHRzLnB5OiBDb3Bp
ZWQgZnJvbSBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYmluZGluZ3N0ZXN0cmVzdWx0cy5w
eS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvd2Via2l0cHl0ZXN0cmVz
dWx0c191bml0dGVzdC5weTogQ29waWVkIGZyb20gU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L2JpbmRpbmdzdGVzdHJlc3VsdHNfdW5pdHRlc3QucHkuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS90b29sL2JvdC9wYXRjaGFuYWx5c2lzdGFzay5weToKKyAgICAgICAgKFBhdGNoQW5hbHlz
aXNUYXNrLl90ZXN0X3BhdGNoKTogRG8gbm90IHJldHJ5IHdlYmtpdHB5IHRlc3Qgc2luY2UgdGhl
eSBhcmUgbm90IGZsYWt5LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3Qvd2Vi
a2l0cHl0ZXN0cmVzdWx0c3JlYWRlci5weTogQ29waWVkIGZyb20gU2NyaXB0cy93ZWJraXRweS90
b29sL2JvdC9iaW5kaW5nc3Rlc3RyZXN1bHRzcmVhZGVyLnB5LgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW0ucHk6CisgICAgICAgIChB
YnN0cmFjdEVhcmx5V2FybmluZ1N5c3RlbS5iZWdpbl93b3JrX3F1ZXVlKTogQWRkZWQgd2Via2l0
cHkgdGVzdCByZXN1bHQgcmVhZGVyLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW1fdW5pdHRlc3QucHk6IFVwZGF0ZWQgdW5pdC10ZXN0
cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcnVudGVzdHMucHk6Cisg
ICAgICAgIChSdW5UZXN0cy5ydW4pOiBSdW4gd2Via2l0cHkgdGVzdHMgd2hlbiAtLWdyb3VwPXdl
YmtpdHB5IGlzIHBhc3NlZC4KKyAgICAgICAgKFJ1blRlc3RzLl9ydW5fd2Via2l0cHlfdGVzdHMp
OiBNZXRob2QgdG8gaW52b2tlIHdlYmtpdHB5IHRlc3RzLgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy9zdGVwc191bml0dGVzdC5weToKKyAgICAgICAgKHRlc3RfcnVudGVz
dHNfd2Via2l0cHkpOiBBZGRlZCB1bml0LXRlc3QuCisKIDIwMTctMTAtMTggIFJ5b3N1a2UgTml3
YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRG9uJ3QgZXhwb3NlIHJhdyBIVE1MIGlu
IHBhc3RlYm9hcmQgdG8gdGhlIHdlYiBjb250ZW50CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9jb25maWcvZXdzLmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY29uZmlnL2V3cy5qc29uCShyZXZpc2lvbiAyMjM2OTkpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvZXdzLmpzb24JKHdvcmtpbmcgY29weSkK
QEAgLTU5LDYgKzU5LDEzIEBACiAgICAgICAgICJydW5UZXN0cyI6IHRydWUsCiAgICAgICAgICJz
aG91bGRCdWlsZCI6IGZhbHNlCiAgICAgfSwKKyAgICAiV2Via2l0cHkgRVdTIjogeworICAgICAg
ICAicG9ydCI6ICJtYWMiLAorICAgICAgICAibmFtZSI6ICJ3ZWJraXRweS1ld3MiLAorICAgICAg
ICAiZ3JvdXAiOiAid2Via2l0cHkiLAorICAgICAgICAicnVuVGVzdHMiOiB0cnVlLAorICAgICAg
ICAic2hvdWxkQnVpbGQiOiBmYWxzZQorICAgIH0sCiAgICAgIldQRSBFV1MiOiB7CiAgICAgICAg
ICJwb3J0IjogIndwZSIsCiAgICAgICAgICJ3YXRjaGVycyI6IFsKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL25ldC93ZWJraXRweXRlc3RyZXN1bHRzLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC93ZWJraXRweXRlc3RyZXN1bHRz
LnB5CShyZXZpc2lvbiAyMjM2MjApCShmcm9tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9iaW5kaW5nc3Rlc3RyZXN1bHRzLnB5OjIyMzYyMCkKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL25ldC93ZWJraXRweXRlc3RyZXN1bHRzLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNTkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
aW1wb3J0IGxvZ2dpbmcKKworZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmFic3RyYWN0dGVzdHJl
c3VsdHMgaW1wb3J0IEFic3RyYWN0VGVzdFJlc3VsdHMKKworX2xvZyA9IGxvZ2dpbmcuZ2V0TG9n
Z2VyKF9fbmFtZV9fKQorCisKK2NsYXNzIEJpbmRpbmdzVGVzdFJlc3VsdHMoQWJzdHJhY3RUZXN0
UmVzdWx0cyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZhaWx1cmVzKToKKyAgICAgICAgc2Vs
Zi5fZmFpbHVyZXMgPSBmYWlsdXJlcworCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHJlc3Vs
dHNfZnJvbV9zdHJpbmcoY2xzLCBzdHJpbmcpOgorICAgICAgICBwYXJzZWRfcmVzdWx0cyA9IGNs
cy5wYXJzZV9qc29uX3N0cmluZyhzdHJpbmcpCisgICAgICAgIGlmIG5vdCBwYXJzZWRfcmVzdWx0
czoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgaWYgJ2ZhaWx1cmVzJyBub3Qg
aW4gcGFyc2VkX3Jlc3VsdHM6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIHJl
dHVybiBjbHMocGFyc2VkX3Jlc3VsdHNbJ2ZhaWx1cmVzJ10pCisKKyAgICBkZWYgaXNfc3Vic2V0
KHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNldChzZWxmLl9mYWlsdXJlcykgPD0gc2V0
KG90aGVyLl9mYWlsdXJlcykKKworICAgIGRlZiBlcXVhbHMoc2VsZiwgb3RoZXIpOgorICAgICAg
ICByZXR1cm4gc2V0KHNlbGYuX2ZhaWx1cmVzKSA9PSBzZXQob3RoZXIuX2ZhaWx1cmVzKQorCisg
ICAgZGVmIGFsbF9wYXNzZWQoc2VsZik6CisgICAgICAgIHJldHVybiBub3Qgc2VsZi5fZmFpbHVy
ZXMKKworICAgIGRlZiBmYWlsaW5nX3Rlc3RzKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5f
ZmFpbHVyZXMKKworICAgICMgTm8gZGVmaW5lZCBmYWlsdXJlIGxpbWl0IGZvciBiaW5kaW5ncyB0
ZXN0cy4KKyAgICBkZWYgZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQoc2VsZik6CisgICAg
ICAgIHJldHVybiBGYWxzZQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L3dlYmtpdHB5dGVzdHJlc3VsdHMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vbmV0L3dlYmtpdHB5dGVzdHJlc3VsdHMucHkJKHJldmlzaW9uIDIyMzYyMCkK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC93ZWJraXRweXRlc3RyZXN1bHRz
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBAIGZyb20gd2Via2l0cHkuY29tbW9u
Lm5ldC5hYnN0cmFjdHRlc3RyZXMKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykK
IAogCi1jbGFzcyBCaW5kaW5nc1Rlc3RSZXN1bHRzKEFic3RyYWN0VGVzdFJlc3VsdHMpOgorY2xh
c3MgV2Via2l0cHlUZXN0UmVzdWx0cyhBYnN0cmFjdFRlc3RSZXN1bHRzKToKICAgICBkZWYgX19p
bml0X18oc2VsZiwgZmFpbHVyZXMpOgogICAgICAgICBzZWxmLl9mYWlsdXJlcyA9IGZhaWx1cmVz
CiAKQEAgLTU0LDYgKzU0LDYgQEAgY2xhc3MgQmluZGluZ3NUZXN0UmVzdWx0cyhBYnN0cmFjdFRl
c3RSZQogICAgIGRlZiBmYWlsaW5nX3Rlc3RzKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5f
ZmFpbHVyZXMKIAotICAgICMgTm8gZGVmaW5lZCBmYWlsdXJlIGxpbWl0IGZvciBiaW5kaW5ncyB0
ZXN0cy4KKyAgICAjIE5vIGRlZmluZWQgZmFpbHVyZSBsaW1pdCBmb3Igd2Via2l0cHkgdGVzdHMu
CiAgICAgZGVmIGRpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0KHNlbGYpOgogICAgICAgICBy
ZXR1cm4gRmFsc2UKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC93ZWJr
aXRweXRlc3RyZXN1bHRzX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL25ldC93ZWJraXRweXRlc3RyZXN1bHRzX3VuaXR0ZXN0LnB5CShyZXZp
c2lvbiAyMjM2MjMpCShmcm9tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9iaW5k
aW5nc3Rlc3RyZXN1bHRzX3VuaXR0ZXN0LnB5OjIyMzYyMykKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL25ldC93ZWJraXRweXRlc3RyZXN1bHRzX3VuaXR0ZXN0LnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisj
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
KyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gd2Via2l0cHkuY29tbW9uLm5ldC5iaW5k
aW5nc3Rlc3RyZXN1bHRzIGltcG9ydCBCaW5kaW5nc1Rlc3RSZXN1bHRzCisKKworY2xhc3MgQmlu
ZGluZ3NUZXN0UmVzdWx0c1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3Jl
c3VsdHNfZnJvbV9zdHJpbmcoc2VsZik6CisgICAgICAgIGluY29tcGxldGVfanNvbiA9ICd7Imtl
eTIiOiBbXX0nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgQmluZGluZ3NUZXN0UmVz
dWx0cy5yZXN1bHRzX2Zyb21fc3RyaW5nKGluY29tcGxldGVfanNvbikpCisKKyAgICBkZWYgdGVz
dF9yZXN1bHRzX2Zyb21fc3RyaW5nX3N1Y2Nlc3Moc2VsZik6CisgICAgICAgIG5vX2ZhaWx1cmVz
X3N0cmluZyA9ICd7ImZhaWx1cmVzIjogW119JworICAgICAgICBub19mYWlsdXJlc19yZXN1bHRz
ID0gQmluZGluZ3NUZXN0UmVzdWx0cyhbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vX2Zh
aWx1cmVzX3Jlc3VsdHMuZXF1YWxzKEJpbmRpbmdzVGVzdFJlc3VsdHMucmVzdWx0c19mcm9tX3N0
cmluZyhub19mYWlsdXJlc19zdHJpbmcpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vX2Zh
aWx1cmVzX3Jlc3VsdHMuYWxsX3Bhc3NlZCgpKQorCisgICAgICAgIHRlc3Rfc3RyaW5nID0gJ3si
ZmFpbHVyZXMiOiBbImZhaWx1cmUxIl19JworICAgICAgICB0ZXN0X3Jlc3VsdHMgPSBCaW5kaW5n
c1Rlc3RSZXN1bHRzKFsiZmFpbHVyZTEiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3Rf
cmVzdWx0cy5lcXVhbHMoQmluZGluZ3NUZXN0UmVzdWx0cy5yZXN1bHRzX2Zyb21fc3RyaW5nKHRl
c3Rfc3RyaW5nKSkpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvd2Vi
a2l0cHl0ZXN0cmVzdWx0c191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvd2Via2l0cHl0ZXN0cmVzdWx0c191bml0dGVzdC5weQkocmV2
aXNpb24gMjIzNjIzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3dlYmtp
dHB5dGVzdHJlc3VsdHNfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTIyLDIwICsyMiwy
MCBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJpbmRp
bmdzdGVzdHJlc3VsdHMgaW1wb3J0IEJpbmRpbmdzVGVzdFJlc3VsdHMKK2Zyb20gd2Via2l0cHku
Y29tbW9uLm5ldC53ZWJraXRweXRlc3RyZXN1bHRzIGltcG9ydCBXZWJraXRweVRlc3RSZXN1bHRz
CiAKIAotY2xhc3MgQmluZGluZ3NUZXN0UmVzdWx0c1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgor
Y2xhc3MgV2Via2l0cHlUZXN0UmVzdWx0c1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRl
ZiB0ZXN0X3Jlc3VsdHNfZnJvbV9zdHJpbmcoc2VsZik6CiAgICAgICAgIGluY29tcGxldGVfanNv
biA9ICd7ImtleTIiOiBbXX0nCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgQmluZGlu
Z3NUZXN0UmVzdWx0cy5yZXN1bHRzX2Zyb21fc3RyaW5nKGluY29tcGxldGVfanNvbikpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgV2Via2l0cHlUZXN0UmVzdWx0cy5yZXN1bHRzX2Zy
b21fc3RyaW5nKGluY29tcGxldGVfanNvbikpCiAKICAgICBkZWYgdGVzdF9yZXN1bHRzX2Zyb21f
c3RyaW5nX3N1Y2Nlc3Moc2VsZik6CiAgICAgICAgIG5vX2ZhaWx1cmVzX3N0cmluZyA9ICd7ImZh
aWx1cmVzIjogW119JwotICAgICAgICBub19mYWlsdXJlc19yZXN1bHRzID0gQmluZGluZ3NUZXN0
UmVzdWx0cyhbXSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vX2ZhaWx1cmVzX3Jlc3VsdHMu
ZXF1YWxzKEJpbmRpbmdzVGVzdFJlc3VsdHMucmVzdWx0c19mcm9tX3N0cmluZyhub19mYWlsdXJl
c19zdHJpbmcpKSkKKyAgICAgICAgbm9fZmFpbHVyZXNfcmVzdWx0cyA9IFdlYmtpdHB5VGVzdFJl
c3VsdHMoW10pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub19mYWlsdXJlc19yZXN1bHRzLmVx
dWFscyhXZWJraXRweVRlc3RSZXN1bHRzLnJlc3VsdHNfZnJvbV9zdHJpbmcobm9fZmFpbHVyZXNf
c3RyaW5nKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub19mYWlsdXJlc19yZXN1bHRzLmFs
bF9wYXNzZWQoKSkKIAogICAgICAgICB0ZXN0X3N0cmluZyA9ICd7ImZhaWx1cmVzIjogWyJmYWls
dXJlMSJdfScKLSAgICAgICAgdGVzdF9yZXN1bHRzID0gQmluZGluZ3NUZXN0UmVzdWx0cyhbImZh
aWx1cmUxIl0pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X3Jlc3VsdHMuZXF1YWxzKEJp
bmRpbmdzVGVzdFJlc3VsdHMucmVzdWx0c19mcm9tX3N0cmluZyh0ZXN0X3N0cmluZykpKQorICAg
ICAgICB0ZXN0X3Jlc3VsdHMgPSBXZWJraXRweVRlc3RSZXN1bHRzKFsiZmFpbHVyZTEiXSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3RfcmVzdWx0cy5lcXVhbHMoV2Via2l0cHlUZXN0UmVz
dWx0cy5yZXN1bHRzX2Zyb21fc3RyaW5nKHRlc3Rfc3RyaW5nKSkpCkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvYm90L3BhdGNoYW5hbHlzaXN0YXNrLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvcGF0Y2hhbmFseXNpc3Rhc2sucHkJKHJl
dmlzaW9uIDIyMzY5OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvcGF0Y2hh
bmFseXNpc3Rhc2sucHkJKHdvcmtpbmcgY29weSkKQEAgLTM2OCw2ICszNjgsOCBAQCBjbGFzcyBQ
YXRjaEFuYWx5c2lzVGFzayhvYmplY3QpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JldHJ5
X2pzY190ZXN0cygpCiAgICAgICAgIGVsaWYgaGFzYXR0cihzZWxmLl9kZWxlZ2F0ZSwgJ2dyb3Vw
JykgYW5kIHNlbGYuX2RlbGVnYXRlLmdyb3VwKCkgPT0gImJpbmRpbmdzIjoKICAgICAgICAgICAg
IHJldHVybiBzZWxmLl9yZXRyeV9iaW5kaW5nc190ZXN0cygpCisgICAgICAgIGVsaWYgaGFzYXR0
cihzZWxmLl9kZWxlZ2F0ZSwgJ2dyb3VwJykgYW5kIHNlbGYuX2RlbGVnYXRlLmdyb3VwKCkgPT0g
IndlYmtpdHB5IjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBlbHNlOgogICAg
ICAgICAgICAgcmV0dXJuIHNlbGYuX3JldHJ5X2xheW91dF90ZXN0cygpCiAKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3Qvd2Via2l0cHl0ZXN0cmVzdWx0c3JlYWRlci5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3dlYmtpdHB5dGVz
dHJlc3VsdHNyZWFkZXIucHkJKHJldmlzaW9uIDIyMzYyMCkJKGZyb20gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2JvdC9iaW5kaW5nc3Rlc3RyZXN1bHRzcmVhZGVyLnB5OjIyMzYyMCkKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3Qvd2Via2l0cHl0ZXN0cmVzdWx0c3JlYWRl
ci5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1IEBACisjIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBsb2dnaW5nCisKK2Zyb20gd2Via2l0cHkuY29t
bW9uLm5ldC5iaW5kaW5nc3Rlc3RyZXN1bHRzIGltcG9ydCBCaW5kaW5nc1Rlc3RSZXN1bHRzCitm
cm9tIHdlYmtpdHB5LnRvb2wuYm90LmFic3RyYWN0dGVzdHJlc3VsdHNyZWFkZXIgaW1wb3J0IEFi
c3RyYWN0VGVzdFJlc3VsdHNSZWFkZXIKKworX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFt
ZV9fKQorCisKK2NsYXNzIEJpbmRpbmdzVGVzdFJlc3VsdHNSZWFkZXIoQWJzdHJhY3RUZXN0UmVz
dWx0c1JlYWRlcik6CisgICAgZGVmIHJlc3VsdHMoc2VsZik6CisgICAgICAgIHJlc3VsdHNfcGF0
aCA9IHNlbGYuX2hvc3QuZmlsZXN5c3RlbS5qb2luKHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5LCAn
YmluZGluZ3NfdGVzdF9yZXN1bHRzLmpzb24nKQorICAgICAgICBjb250ZW50cyA9IHNlbGYuX3Jl
YWRfZmlsZV9jb250ZW50cyhyZXN1bHRzX3BhdGgpCisgICAgICAgIHJldHVybiBCaW5kaW5nc1Rl
c3RSZXN1bHRzLnJlc3VsdHNfZnJvbV9zdHJpbmcoY29udGVudHMpCkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvYm90L3dlYmtpdHB5dGVzdHJlc3VsdHNyZWFkZXIucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC93ZWJraXRweXRlc3RyZXN1
bHRzcmVhZGVyLnB5CShyZXZpc2lvbiAyMjM2MjApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvYm90L3dlYmtpdHB5dGVzdHJlc3VsdHNyZWFkZXIucHkJKHdvcmtpbmcgY29weSkKQEAg
LTIyLDE0ICsyMiwxNCBAQAogCiBpbXBvcnQgbG9nZ2luZwogCi1mcm9tIHdlYmtpdHB5LmNvbW1v
bi5uZXQuYmluZGluZ3N0ZXN0cmVzdWx0cyBpbXBvcnQgQmluZGluZ3NUZXN0UmVzdWx0cworZnJv
bSB3ZWJraXRweS5jb21tb24ubmV0LndlYmtpdHB5dGVzdHJlc3VsdHMgaW1wb3J0IFdlYmtpdHB5
VGVzdFJlc3VsdHMKIGZyb20gd2Via2l0cHkudG9vbC5ib3QuYWJzdHJhY3R0ZXN0cmVzdWx0c3Jl
YWRlciBpbXBvcnQgQWJzdHJhY3RUZXN0UmVzdWx0c1JlYWRlcgogCiBfbG9nID0gbG9nZ2luZy5n
ZXRMb2dnZXIoX19uYW1lX18pCiAKIAotY2xhc3MgQmluZGluZ3NUZXN0UmVzdWx0c1JlYWRlcihB
YnN0cmFjdFRlc3RSZXN1bHRzUmVhZGVyKToKK2NsYXNzIFdlYmtpdHB5VGVzdFJlc3VsdHNSZWFk
ZXIoQWJzdHJhY3RUZXN0UmVzdWx0c1JlYWRlcik6CiAgICAgZGVmIHJlc3VsdHMoc2VsZik6Ci0g
ICAgICAgIHJlc3VsdHNfcGF0aCA9IHNlbGYuX2hvc3QuZmlsZXN5c3RlbS5qb2luKHNlbGYuX3Jl
c3VsdHNfZGlyZWN0b3J5LCAnYmluZGluZ3NfdGVzdF9yZXN1bHRzLmpzb24nKQorICAgICAgICBy
ZXN1bHRzX3BhdGggPSBzZWxmLl9ob3N0LmZpbGVzeXN0ZW0uam9pbihzZWxmLl9yZXN1bHRzX2Rp
cmVjdG9yeSwgJ3dlYmtpdHB5X3Rlc3RfcmVzdWx0cy5qc29uJykKICAgICAgICAgY29udGVudHMg
PSBzZWxmLl9yZWFkX2ZpbGVfY29udGVudHMocmVzdWx0c19wYXRoKQotICAgICAgICByZXR1cm4g
QmluZGluZ3NUZXN0UmVzdWx0cy5yZXN1bHRzX2Zyb21fc3RyaW5nKGNvbnRlbnRzKQorICAgICAg
ICByZXR1cm4gV2Via2l0cHlUZXN0UmVzdWx0cy5yZXN1bHRzX2Zyb21fc3RyaW5nKGNvbnRlbnRz
KQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2Fybmlu
Z3N5c3RlbS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtLnB5CShyZXZpc2lvbiAyMjM2OTkpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5l
eGVjdXRpdmUgaW0KIGZyb20gd2Via2l0cHkudG9vbC5ib3QuZWFybHl3YXJuaW5nc3lzdGVtdGFz
ayBpbXBvcnQgRWFybHlXYXJuaW5nU3lzdGVtVGFzaywgRWFybHlXYXJuaW5nU3lzdGVtVGFza0Rl
bGVnYXRlCiBmcm9tIHdlYmtpdHB5LnRvb2wuYm90LmJpbmRpbmdzdGVzdHJlc3VsdHNyZWFkZXIg
aW1wb3J0IEJpbmRpbmdzVGVzdFJlc3VsdHNSZWFkZXIKIGZyb20gd2Via2l0cHkudG9vbC5ib3Qu
bGF5b3V0dGVzdHJlc3VsdHNyZWFkZXIgaW1wb3J0IExheW91dFRlc3RSZXN1bHRzUmVhZGVyCitm
cm9tIHdlYmtpdHB5LnRvb2wuYm90LndlYmtpdHB5dGVzdHJlc3VsdHNyZWFkZXIgaW1wb3J0IFdl
YmtpdHB5VGVzdFJlc3VsdHNSZWFkZXIKIGZyb20gd2Via2l0cHkudG9vbC5ib3QuanNjdGVzdHJl
c3VsdHNyZWFkZXIgaW1wb3J0IEpTQ1Rlc3RSZXN1bHRzUmVhZGVyCiBmcm9tIHdlYmtpdHB5LnRv
b2wuYm90LnBhdGNoYW5hbHlzaXN0YXNrIGltcG9ydCBVbmFibGVUb0FwcGx5UGF0Y2gsIFBhdGNo
SXNOb3RWYWxpZCwgUGF0Y2hJc05vdEFwcGxpY2FibGUKIGZyb20gd2Via2l0cHkudG9vbC5ib3Qu
cXVldWVlbmdpbmUgaW1wb3J0IFF1ZXVlRW5naW5lCkBAIC02Miw2ICs2Myw4IEBAIGNsYXNzIEFi
c3RyYWN0RWFybHlXYXJuaW5nU3lzdGVtKEFic3RyYWMKICAgICAgICAgICAgIHNlbGYuX3Rlc3Rf
cmVzdWx0c19yZWFkZXIgPSBKU0NUZXN0UmVzdWx0c1JlYWRlcihzZWxmLl90b29sLCBzZWxmLl9w
b3J0LmpzY19yZXN1bHRzX2RpcmVjdG9yeSgpKQogICAgICAgICBlbGlmIHNlbGYuZ3JvdXAoKSA9
PSAiYmluZGluZ3MiOgogICAgICAgICAgICAgc2VsZi5fdGVzdF9yZXN1bHRzX3JlYWRlciA9IEJp
bmRpbmdzVGVzdFJlc3VsdHNSZWFkZXIoc2VsZi5fdG9vbCwgc2VsZi5fcG9ydC5qc2NfcmVzdWx0
c19kaXJlY3RvcnkoKSkKKyAgICAgICAgZWxpZiBzZWxmLmdyb3VwKCkgPT0gIndlYmtpdHB5IjoK
KyAgICAgICAgICAgIHNlbGYuX3Rlc3RfcmVzdWx0c19yZWFkZXIgPSBXZWJraXRweVRlc3RSZXN1
bHRzUmVhZGVyKHNlbGYuX3Rvb2wsIHNlbGYuX3BvcnQuanNjX3Jlc3VsdHNfZGlyZWN0b3J5KCkp
CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLl90ZXN0X3Jlc3VsdHNfcmVhZGVyID0g
TGF5b3V0VGVzdFJlc3VsdHNSZWFkZXIoc2VsZi5fdG9vbCwgc2VsZi5fcG9ydC5yZXN1bHRzX2Rp
cmVjdG9yeSgpLCBzZWxmLl9sb2dfZGlyZWN0b3J5KCkpCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW1fdW5pdHRlc3QucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2Fy
bmluZ3N5c3RlbV91bml0dGVzdC5weQkocmV2aXNpb24gMjIzNjk5KQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbV91bml0dGVzdC5weQko
d29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0
X21vY2sgaW1wb3J0IE1vCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYmluZGluZ3N0ZXN0cmVz
dWx0cyBpbXBvcnQgQmluZGluZ3NUZXN0UmVzdWx0cwogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0
LmpzY3Rlc3RyZXN1bHRzIGltcG9ydCBKU0NUZXN0UmVzdWx0cwogZnJvbSB3ZWJraXRweS5jb21t
b24ubmV0LmxheW91dHRlc3RyZXN1bHRzIGltcG9ydCBMYXlvdXRUZXN0UmVzdWx0cworZnJvbSB3
ZWJraXRweS5jb21tb24ubmV0LndlYmtpdHB5dGVzdHJlc3VsdHMgaW1wb3J0IFdlYmtpdHB5VGVz
dFJlc3VsdHMKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9y
dCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0
IHRlc3RfcmVzdWx0cwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0
ZXN0X2ZhaWx1cmVzCkBAIC02Myw2ICs2NCwxMiBAQCBjbGFzcyBUZXN0QmluZGluZ3NFV1MoQWJz
dHJhY3RFYXJseVdhcm5pCiAgICAgX2dyb3VwID0gImJpbmRpbmdzIgogCiAKK2NsYXNzIFRlc3RX
ZWJraXRweUVXUyhBYnN0cmFjdEVhcmx5V2FybmluZ1N5c3RlbSk6CisgICAgcG9ydF9uYW1lID0g
Im1hYyIKKyAgICBfYnVpbGRfc3R5bGUgPSBOb25lCisgICAgX2dyb3VwID0gIndlYmtpdHB5Igor
CisKIGNsYXNzIEFic3RyYWN0RWFybHlXYXJuaW5nU3lzdGVtVGVzdChRdWV1ZXNUZXN0KToKICAg
ICBkZWYgX3Rlc3RfbWVzc2FnZShzZWxmLCBld3MsIHJlc3VsdHMsIG1lc3NhZ2UpOgogICAgICAg
ICBld3MuYmluZF90b190b29sKE1vY2tUb29sKCkpCkBAIC05NCw2ICsxMDEsMTIgQEAgY2xhc3Mg
QWJzdHJhY3RFYXJseVdhcm5pbmdTeXN0ZW1UZXN0KFF1ZQogICAgICAgICBtZXNzYWdlID0gIk5l
dyBmYWlsaW5nIHRlc3RzOlxuKEpTKSBUZXN0TWFwTGlrZS5pZGxcbihKUykgVGVzdE5vZGUuaWRs
IgogICAgICAgICBzZWxmLl90ZXN0X21lc3NhZ2UoZXdzLCByZXN1bHRzLCBtZXNzYWdlKQogCisg
ICAgZGVmIHRlc3RfZmFpbGluZ193ZWJraXRweV90ZXN0c19tZXNzYWdlKHNlbGYpOgorICAgICAg
ICBld3MgPSBUZXN0V2Via2l0cHlFV1MoKQorICAgICAgICByZXN1bHRzID0gbGFtYmRhIGE6IFdl
YmtpdHB5VGVzdFJlc3VsdHMoWyJ3ZWJraXRweS50b29sLmNvbW1hbmRzLmVhcmx5d2FybmluZ3N5
c3RlbV91bml0dGVzdC5FYXJseVdhcm5pbmdTeXN0ZW1UZXN0LnRlc3RfZXdzX25hbWUiXSkKKyAg
ICAgICAgbWVzc2FnZSA9ICJOZXcgZmFpbGluZyB0ZXN0czpcbndlYmtpdHB5LnRvb2wuY29tbWFu
ZHMuZWFybHl3YXJuaW5nc3lzdGVtX3VuaXR0ZXN0LkVhcmx5V2FybmluZ1N5c3RlbVRlc3QudGVz
dF9ld3NfbmFtZSIKKyAgICAgICAgc2VsZi5fdGVzdF9tZXNzYWdlKGV3cywgcmVzdWx0cywgbWVz
c2FnZSkKKwogCiBjbGFzcyBNb2NrRWFybHlXYXJuaW5nU3lzdGVtVGFza0ZvckluY29uY2x1c2l2
ZUpTQ1Jlc3VsdHMoRWFybHlXYXJuaW5nU3lzdGVtVGFzayk6CiAgICAgZGVmIF90ZXN0X3BhdGNo
KHNlbGYpOgpAQCAtMTg4LDYgKzIwMSw3IEBAIE1PQ0s6IHVwZGF0ZV9zdGF0dXM6ICUobmFtZSlz
IENoZWNrZWQgcmUKICAgICAgICAgICAgICdtYWMtZGVidWctZXdzJywKICAgICAgICAgICAgICdt
YWMtMzJiaXQtZXdzJywKICAgICAgICAgICAgICdiaW5kaW5ncy1ld3MnLAorICAgICAgICAgICAg
J3dlYmtpdHB5LWV3cycsCiAgICAgICAgICAgICAnanNjLWV3cycsCiAgICAgICAgICAgICAnd3Bl
LWV3cycsCiAgICAgICAgIH0KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy9ydW50ZXN0cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
c3RlcHMvcnVudGVzdHMucHkJKHJldmlzaW9uIDIyMzY5OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy9ydW50ZXN0cy5weQkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAs
MTAgQEAgY2xhc3MgUnVuVGVzdHMoQWJzdHJhY3RTdGVwKToKICAgICAgICAgICAgIHNlbGYuX3J1
bl9iaW5kaW5nc190ZXN0cygpCiAgICAgICAgICAgICByZXR1cm4KIAorICAgICAgICBpZiBzZWxm
Ll9vcHRpb25zLmdyb3VwID09ICJ3ZWJraXRweSI6CisgICAgICAgICAgICBzZWxmLl9ydW5fd2Vi
a2l0cHlfdGVzdHMoKQorICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgaWYgc2VsZi5fb3B0
aW9ucy5pdGVyYXRlX29uX25ld190ZXN0czoKICAgICAgICAgICAgIF9sb2cuaW5mbygiUnVubmlu
ZyBydW4td2Via2l0LXRlc3RzIG9uIG5ldyB0ZXN0cyIpCiAgICAgICAgICAgICBzZWxmLl9ydW5f
d2Via2l0X3Rlc3RzKHNlbGYuX29wdGlvbnMuaXRlcmF0ZV9vbl9uZXdfdGVzdHMpCkBAIC03Nyw2
ICs4MSw3IEBAIGNsYXNzIFJ1blRlc3RzKEFic3RyYWN0U3RlcCk6CiAgICAgICAgIGlmIG5vdCBz
ZWxmLl9vcHRpb25zLnRlc3Q6CiAgICAgICAgICAgICByZXR1cm4KIAorICAgICAgICAjIEZJWE1F
OiBSZW1vdmUgdGhpcyBjb2RlIHNpbmNlIHdlIG5vdyBoYXZlIGEgc2VwYXJhdGUgd2Via2l0cHkg
RVdTLgogICAgICAgICBweXRob25fdW5pdHRlc3RzX2NvbW1hbmQgPSBzZWxmLl90b29sLmRlcHJl
Y2F0ZWRfcG9ydCgpLnJ1bl9weXRob25fdW5pdHRlc3RzX2NvbW1hbmQoKQogICAgICAgICBpZiBw
eXRob25fdW5pdHRlc3RzX2NvbW1hbmQ6CiAgICAgICAgICAgICBfbG9nLmluZm8oIlJ1bm5pbmcg
UHl0aG9uIHVuaXQgdGVzdHMiKQpAQCAtMTc0LDYgKzE3OSwxNCBAQCBjbGFzcyBSdW5UZXN0cyhB
YnN0cmFjdFN0ZXApOgogICAgICAgICBhcmdzLmFwcGVuZCgiLS1qc29uLW91dHB1dD0lcyIgJSBy
ZXN1bHRzX2ZpbGVfcGF0aCkKICAgICAgICAgc2VsZi5fdG9vbC5leGVjdXRpdmUucnVuX2FuZF90
aHJvd19pZl9mYWlsKGFyZ3MsIGN3ZD1zZWxmLl90b29sLnNjbSgpLmNoZWNrb3V0X3Jvb3QpCiAK
KyAgICBkZWYgX3J1bl93ZWJraXRweV90ZXN0cyhzZWxmKToKKyAgICAgICAgYXJncyA9IHNlbGYu
X3Rvb2wuZGVwcmVjYXRlZF9wb3J0KCkucnVuX3B5dGhvbl91bml0dGVzdHNfY29tbWFuZCgpCisg
ICAgICAgIHJlc3VsdHNfZGlyZWN0b3J5ID0gc2VsZi5fdG9vbC5wb3J0X2ZhY3RvcnkuZ2V0KG9w
dGlvbnM9c2VsZi5fb3B0aW9ucykucHl0aG9uX3VuaXR0ZXN0X3Jlc3VsdHNfZGlyZWN0b3J5KCkK
KyAgICAgICAgc2VsZi5fdG9vbC5maWxlc3lzdGVtLm1heWJlX21ha2VfZGlyZWN0b3J5KHJlc3Vs
dHNfZGlyZWN0b3J5KQorICAgICAgICByZXN1bHRzX2ZpbGVfcGF0aCA9IHNlbGYuX3Rvb2wuZmls
ZXN5c3RlbS5qb2luKHJlc3VsdHNfZGlyZWN0b3J5LCAid2Via2l0cHlfdGVzdF9yZXN1bHRzLmpz
b24iKQorICAgICAgICBhcmdzLmFwcGVuZCgiLS1qc29uLW91dHB1dD0lcyIgJSByZXN1bHRzX2Zp
bGVfcGF0aCkKKyAgICAgICAgc2VsZi5fdG9vbC5leGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9m
YWlsKGFyZ3MsIGN3ZD1zZWxmLl90b29sLnNjbSgpLmNoZWNrb3V0X3Jvb3QpCisKICAgICBkZWYg
X3J1bl9hcGlfdGVzdHMoc2VsZik6CiAgICAgICAgIGFyZ3MgPSBzZWxmLl90b29sLmRlcHJlY2F0
ZWRfcG9ydCgpLnJ1bl9hcGlfdGVzdHNfY29tbWFuZChzZWxmLl9vcHRpb25zLmJ1aWxkX3N0eWxl
KQogICAgICAgICByZXN1bHRzX2RpcmVjdG9yeSA9IHNlbGYuX3Rvb2wucG9ydF9mYWN0b3J5Lmdl
dChvcHRpb25zPXNlbGYuX29wdGlvbnMpLmFwaV9yZXN1bHRzX2RpcmVjdG9yeSgpCkluZGV4OiBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvc3RlcHNfdW5pdHRlc3QucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3N0ZXBzX3VuaXR0ZXN0
LnB5CShyZXZpc2lvbiAyMjM2OTkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3Rl
cHMvc3RlcHNfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI2NSw2ICsyNjUsMTkgQEAg
VGhpcyBwYXRjaCBkb2VzIG5vdCBoYXZlIHJlbGV2YW50IGNoYW5nZQogIiIiCiAgICAgICAgIE91
dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBzdGVwLnJ1biwgW3t9XSwgZXhwZWN0
ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQogCisgICAgZGVmIHRlc3RfcnVudGVzdHNfd2Via2l0cHko
c2VsZik6CisgICAgICAgIG1vY2tfb3B0aW9ucyA9IHNlbGYuX3N0ZXBfb3B0aW9ucygpCisgICAg
ICAgIG1vY2tfb3B0aW9ucy5ub25faW50ZXJhY3RpdmUgPSBGYWxzZQorICAgICAgICBtb2NrX29w
dGlvbnMuZ3JvdXAgPSAid2Via2l0cHkiCisgICAgICAgIHN0ZXAgPSBzdGVwcy5SdW5UZXN0cyhN
b2NrVG9vbChsb2dfZXhlY3V0aXZlPVRydWUpLCBtb2NrX29wdGlvbnMpCisgICAgICAgIHRvb2wg
PSBNb2NrVG9vbChsb2dfZXhlY3V0aXZlPVRydWUpCisgICAgICAgICMgRklYTUU6IFdlIHNob3Vs
ZG4ndCB1c2UgYSByZWFsIHBvcnQtb2JqZWN0IGhlcmUsIGJ1dCB0aGVyZSBpcyB0b28gbXVjaCB0
byBtb2NrIGF0IHRoZSBtb21lbnQuCisgICAgICAgIHRvb2wuX2RlcHJlY2F0ZWRfcG9ydCA9IERl
cHJlY2F0ZWRQb3J0KCkKKyAgICAgICAgc3RlcCA9IHN0ZXBzLlJ1blRlc3RzKHRvb2wsIG1vY2tf
b3B0aW9ucykKKyAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICIiIk1PQ0sgcnVuX2FuZF90aHJvd19p
Zl9mYWlsOiBbJ1Rvb2xzL1NjcmlwdHMvdGVzdC13ZWJraXRweScsICctLWpzb24tb3V0cHV0PS90
bXAvcHl0aG9uLXVuaXR0ZXN0LXJlc3VsdHMvd2Via2l0cHlfdGVzdF9yZXN1bHRzLmpzb24nXSwg
Y3dkPS9tb2NrLWNoZWNrb3V0CisiIiIKKyAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9v
dXRwdXRzKHNlbGYsIHN0ZXAucnVuLCBbe31dLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3Mp
CisKICAgICBkZWYgdGVzdF9wYXRjaF9yZWxldmFudF9iaW5kaW5ncyhzZWxmKToKICAgICAgICAg
c2VsZi5tYXhEaWZmID0gTm9uZQogICAgICAgICBtb2NrX29wdGlvbnMgPSBzZWxmLl9zdGVwX29w
dGlvbnMoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325789</attachid>
            <date>2017-11-02 15:58:23 -0700</date>
            <delta_ts>2017-11-07 14:31:00 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>ews_webkitpy_v3</filename>
            <type>text/plain</type>
            <size>28997</size>
            <attacher name="Aakash Jain">aakash_jain</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIyNDM2MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI4IEBACisyMDE3LTExLTAyICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igd2Via2l0cHkgdGVzdHMgRVdTCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg0ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NvbmZpZy9ld3MuanNvbjogQWRkZWQgd2Via2l0cHkgRVdTLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9nZW5lcmljdGVzdHJlc3VsdHMucHk6IFJlbmFt
ZWQgZnJvbSBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYmluZGluZ3N0ZXN0cmVzdWx0cy5w
eS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvZ2VuZXJpY3Rlc3RyZXN1
bHRzX3VuaXR0ZXN0LnB5OiBSZW5hbWVkIGZyb20gU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L2JpbmRpbmdzdGVzdHJlc3VsdHNfdW5pdHRlc3QucHkuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS90b29sL2JvdC9wYXRjaGFuYWx5c2lzdGFzay5weToKKyAgICAgICAgKFBhdGNoQW5hbHlz
aXNUYXNrLl90ZXN0X3BhdGNoKTogRG8gbm90IHJldHJ5IHdlYmtpdHB5IHRlc3Qgc2luY2UgdGhl
eSBhcmUgbm90IGZsYWt5LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvYmlu
ZGluZ3N0ZXN0cmVzdWx0c3JlYWRlci5weTogVXBkYXRlZCBpbXBvcnQgZm9yIEJpbmRpbmdzVGVz
dFJlc3VsdC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3JldHJ5bG9naWNf
dW5pdHRlc3QucHk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3Qv
d2Via2l0cHl0ZXN0cmVzdWx0c3JlYWRlci5weTogQ29waWVkIGZyb20gU2NyaXB0cy93ZWJraXRw
eS90b29sL2JvdC9iaW5kaW5nc3Rlc3RyZXN1bHRzcmVhZGVyLnB5LgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW0ucHk6CisgICAgICAg
IChBYnN0cmFjdEVhcmx5V2FybmluZ1N5c3RlbS5iZWdpbl93b3JrX3F1ZXVlKTogQWRkZWQgd2Vi
a2l0cHkgdGVzdCByZXN1bHQgcmVhZGVyLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW1fdW5pdHRlc3QucHk6IFVwZGF0ZWQgdW5pdC10
ZXN0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2twYXRjaHJl
bGV2YW5jZS5weTogUnVuIHdlYmtpdHB5IEVXUyBvbmx5IGZvciByZWxldmFudCBjaGFuZ2VzLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9ydW50ZXN0cy5weToKKyAgICAg
ICAgKFJ1blRlc3RzLnJ1bik6IFJ1biB3ZWJraXRweSB0ZXN0cyB3aGVuIC0tZ3JvdXA9d2Via2l0
cHkgaXMgcGFzc2VkLgorICAgICAgICAoUnVuVGVzdHMuX3J1bl93ZWJraXRweV90ZXN0cyk6IE1l
dGhvZCB0byBpbnZva2Ugd2Via2l0cHkgdGVzdHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS90b29sL3N0ZXBzL3N0ZXBzX3VuaXR0ZXN0LnB5OgorICAgICAgICAodGVzdF9ydW50ZXN0c193
ZWJraXRweSk6IEFkZGVkIHVuaXQtdGVzdC4KKwogMjAxNy0xMS0wMiAgQ2FybG9zIEFsYmVydG8g
TG9wZXogUGVyZXogIDxjbG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXVtKSEJ1aWxk
XSBVcGRhdGUgV1BFQmFja2VuZCBhbmQgV1BFQmFja2VuZC1tZXNhCkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvZXdzLmpzb24KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2V3cy5qc29uCShyZXZpc2lvbiAyMjQzNTUp
CisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvZXdzLmpzb24JKHdvcmtp
bmcgY29weSkKQEAgLTU5LDYgKzU5LDEzIEBACiAgICAgICAgICJydW5UZXN0cyI6IHRydWUsCiAg
ICAgICAgICJzaG91bGRCdWlsZCI6IGZhbHNlCiAgICAgfSwKKyAgICAid2Via2l0cHkgRVdTIjog
eworICAgICAgICAicG9ydCI6ICJtYWMiLAorICAgICAgICAibmFtZSI6ICJ3ZWJraXRweS1ld3Mi
LAorICAgICAgICAiZ3JvdXAiOiAid2Via2l0cHkiLAorICAgICAgICAicnVuVGVzdHMiOiB0cnVl
LAorICAgICAgICAic2hvdWxkQnVpbGQiOiBmYWxzZQorICAgIH0sCiAgICAgIldQRSBFV1MiOiB7
CiAgICAgICAgICJwb3J0IjogIndwZSIsCiAgICAgICAgICJ3YXRjaGVycyI6IFsKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9iaW5kaW5nc3Rlc3RyZXN1bHRzLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9iaW5kaW5nc3Rl
c3RyZXN1bHRzLnB5CShyZXZpc2lvbiAyMjQzNTUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXQvYmluZGluZ3N0ZXN0cmVzdWx0cy5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDU5
ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
LSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0
IGxvZ2dpbmcKLQotZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmFic3RyYWN0dGVzdHJlc3VsdHMg
aW1wb3J0IEFic3RyYWN0VGVzdFJlc3VsdHMKLQotX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9f
bmFtZV9fKQotCi0KLWNsYXNzIEJpbmRpbmdzVGVzdFJlc3VsdHMoQWJzdHJhY3RUZXN0UmVzdWx0
cyk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZhaWx1cmVzKToKLSAgICAgICAgc2VsZi5fZmFp
bHVyZXMgPSBmYWlsdXJlcwotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHJlc3VsdHNfZnJv
bV9zdHJpbmcoY2xzLCBzdHJpbmcpOgotICAgICAgICBwYXJzZWRfcmVzdWx0cyA9IGNscy5wYXJz
ZV9qc29uX3N0cmluZyhzdHJpbmcpCi0gICAgICAgIGlmIG5vdCBwYXJzZWRfcmVzdWx0czoKLSAg
ICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgaWYgJ2ZhaWx1cmVzJyBub3QgaW4gcGFy
c2VkX3Jlc3VsdHM6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIHJldHVybiBj
bHMocGFyc2VkX3Jlc3VsdHNbJ2ZhaWx1cmVzJ10pCi0KLSAgICBkZWYgaXNfc3Vic2V0KHNlbGYs
IG90aGVyKToKLSAgICAgICAgcmV0dXJuIHNldChzZWxmLl9mYWlsdXJlcykgPD0gc2V0KG90aGVy
Ll9mYWlsdXJlcykKLQotICAgIGRlZiBlcXVhbHMoc2VsZiwgb3RoZXIpOgotICAgICAgICByZXR1
cm4gc2V0KHNlbGYuX2ZhaWx1cmVzKSA9PSBzZXQob3RoZXIuX2ZhaWx1cmVzKQotCi0gICAgZGVm
IGFsbF9wYXNzZWQoc2VsZik6Ci0gICAgICAgIHJldHVybiBub3Qgc2VsZi5fZmFpbHVyZXMKLQot
ICAgIGRlZiBmYWlsaW5nX3Rlc3RzKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fZmFpbHVy
ZXMKLQotICAgICMgTm8gZGVmaW5lZCBmYWlsdXJlIGxpbWl0IGZvciBiaW5kaW5ncyB0ZXN0cy4K
LSAgICBkZWYgZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQoc2VsZik6Ci0gICAgICAgIHJl
dHVybiBGYWxzZQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2JpbmRp
bmdzdGVzdHJlc3VsdHNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vbmV0L2JpbmRpbmdzdGVzdHJlc3VsdHNfdW5pdHRlc3QucHkJKHJldmlz
aW9uIDIyNDM1NSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9iaW5kaW5n
c3Rlc3RyZXN1bHRzX3VuaXR0ZXN0LnB5CShub25leGlzdGVudCkKQEAgLTEsNDEgKzAsMCBAQAot
IyBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwot
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAot
IyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgdW5pdHRlc3QK
LQotZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJpbmRpbmdzdGVzdHJlc3VsdHMgaW1wb3J0IEJp
bmRpbmdzVGVzdFJlc3VsdHMKLQotCi1jbGFzcyBCaW5kaW5nc1Rlc3RSZXN1bHRzVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfcmVzdWx0c19mcm9tX3N0cmluZyhzZWxmKToK
LSAgICAgICAgaW5jb21wbGV0ZV9qc29uID0gJ3sia2V5MiI6IFtdfScKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChOb25lLCBCaW5kaW5nc1Rlc3RSZXN1bHRzLnJlc3VsdHNfZnJvbV9zdHJpbmco
aW5jb21wbGV0ZV9qc29uKSkKLQotICAgIGRlZiB0ZXN0X3Jlc3VsdHNfZnJvbV9zdHJpbmdfc3Vj
Y2VzcyhzZWxmKToKLSAgICAgICAgbm9fZmFpbHVyZXNfc3RyaW5nID0gJ3siZmFpbHVyZXMiOiBb
XX0nCi0gICAgICAgIG5vX2ZhaWx1cmVzX3Jlc3VsdHMgPSBCaW5kaW5nc1Rlc3RSZXN1bHRzKFtd
KQotICAgICAgICBzZWxmLmFzc2VydFRydWUobm9fZmFpbHVyZXNfcmVzdWx0cy5lcXVhbHMoQmlu
ZGluZ3NUZXN0UmVzdWx0cy5yZXN1bHRzX2Zyb21fc3RyaW5nKG5vX2ZhaWx1cmVzX3N0cmluZykp
KQotICAgICAgICBzZWxmLmFzc2VydFRydWUobm9fZmFpbHVyZXNfcmVzdWx0cy5hbGxfcGFzc2Vk
KCkpCi0KLSAgICAgICAgdGVzdF9zdHJpbmcgPSAneyJmYWlsdXJlcyI6IFsiZmFpbHVyZTEiXX0n
Ci0gICAgICAgIHRlc3RfcmVzdWx0cyA9IEJpbmRpbmdzVGVzdFJlc3VsdHMoWyJmYWlsdXJlMSJd
KQotICAgICAgICBzZWxmLmFzc2VydFRydWUodGVzdF9yZXN1bHRzLmVxdWFscyhCaW5kaW5nc1Rl
c3RSZXN1bHRzLnJlc3VsdHNfZnJvbV9zdHJpbmcodGVzdF9zdHJpbmcpKSkKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9nZW5lcmljdGVzdHJlc3VsdHMucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2dlbmVyaWN0ZXN0cmVz
dWx0cy5weQkocmV2aXNpb24gMjI0MzU1KQkoZnJvbSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9uZXQvYmluZGluZ3N0ZXN0cmVzdWx0cy5weToyMjQzNTUpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvZ2VuZXJpY3Rlc3RyZXN1bHRzLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNTkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworaW1wb3J0IGxvZ2dpbmcKKworZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmFic3RyYWN0dGVz
dHJlc3VsdHMgaW1wb3J0IEFic3RyYWN0VGVzdFJlc3VsdHMKKworX2xvZyA9IGxvZ2dpbmcuZ2V0
TG9nZ2VyKF9fbmFtZV9fKQorCisKK2NsYXNzIEJpbmRpbmdzVGVzdFJlc3VsdHMoQWJzdHJhY3RU
ZXN0UmVzdWx0cyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZhaWx1cmVzKToKKyAgICAgICAg
c2VsZi5fZmFpbHVyZXMgPSBmYWlsdXJlcworCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHJl
c3VsdHNfZnJvbV9zdHJpbmcoY2xzLCBzdHJpbmcpOgorICAgICAgICBwYXJzZWRfcmVzdWx0cyA9
IGNscy5wYXJzZV9qc29uX3N0cmluZyhzdHJpbmcpCisgICAgICAgIGlmIG5vdCBwYXJzZWRfcmVz
dWx0czoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgaWYgJ2ZhaWx1cmVzJyBu
b3QgaW4gcGFyc2VkX3Jlc3VsdHM6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAg
IHJldHVybiBjbHMocGFyc2VkX3Jlc3VsdHNbJ2ZhaWx1cmVzJ10pCisKKyAgICBkZWYgaXNfc3Vi
c2V0KHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNldChzZWxmLl9mYWlsdXJlcykgPD0g
c2V0KG90aGVyLl9mYWlsdXJlcykKKworICAgIGRlZiBlcXVhbHMoc2VsZiwgb3RoZXIpOgorICAg
ICAgICByZXR1cm4gc2V0KHNlbGYuX2ZhaWx1cmVzKSA9PSBzZXQob3RoZXIuX2ZhaWx1cmVzKQor
CisgICAgZGVmIGFsbF9wYXNzZWQoc2VsZik6CisgICAgICAgIHJldHVybiBub3Qgc2VsZi5fZmFp
bHVyZXMKKworICAgIGRlZiBmYWlsaW5nX3Rlc3RzKHNlbGYpOgorICAgICAgICByZXR1cm4gc2Vs
Zi5fZmFpbHVyZXMKKworICAgICMgTm8gZGVmaW5lZCBmYWlsdXJlIGxpbWl0IGZvciBiaW5kaW5n
cyB0ZXN0cy4KKyAgICBkZWYgZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQoc2VsZik6Cisg
ICAgICAgIHJldHVybiBGYWxzZQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
bmV0L2dlbmVyaWN0ZXN0cmVzdWx0cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvZ2VuZXJpY3Rlc3RyZXN1bHRzLnB5CShyZXZpc2lvbiAyMjQzNTUp
CisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvZ2VuZXJpY3Rlc3RyZXN1bHRz
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBAIGZyb20gd2Via2l0cHkuY29tbW9u
Lm5ldC5hYnN0cmFjdHRlc3RyZXMKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykK
IAogCi1jbGFzcyBCaW5kaW5nc1Rlc3RSZXN1bHRzKEFic3RyYWN0VGVzdFJlc3VsdHMpOgorY2xh
c3MgR2VuZXJpY1Rlc3RSZXN1bHRzKEFic3RyYWN0VGVzdFJlc3VsdHMpOgogICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBmYWlsdXJlcyk6CiAgICAgICAgIHNlbGYuX2ZhaWx1cmVzID0gZmFpbHVyZXMK
IApAQCAtNTcsMyArNTcsMTEgQEAgY2xhc3MgQmluZGluZ3NUZXN0UmVzdWx0cyhBYnN0cmFjdFRl
c3RSZQogICAgICMgTm8gZGVmaW5lZCBmYWlsdXJlIGxpbWl0IGZvciBiaW5kaW5ncyB0ZXN0cy4K
ICAgICBkZWYgZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQoc2VsZik6CiAgICAgICAgIHJl
dHVybiBGYWxzZQorCisKK2NsYXNzIEJpbmRpbmdzVGVzdFJlc3VsdHMoR2VuZXJpY1Rlc3RSZXN1
bHRzKToKKyAgICBwYXNzCisKKworY2xhc3MgV2Via2l0cHlUZXN0UmVzdWx0cyhHZW5lcmljVGVz
dFJlc3VsdHMpOgorICAgIHBhc3MKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9nZW5lcmljdGVzdHJlc3VsdHNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2dlbmVyaWN0ZXN0cmVzdWx0c191bml0dGVzdC5w
eQkocmV2aXNpb24gMjI0MzU1KQkoZnJvbSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9u
ZXQvYmluZGluZ3N0ZXN0cmVzdWx0c191bml0dGVzdC5weToyMjQzNTUpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvZ2VuZXJpY3Rlc3RyZXN1bHRzX3VuaXR0ZXN0LnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
IyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gd2Via2l0cHkuY29tbW9uLm5l
dC5iaW5kaW5nc3Rlc3RyZXN1bHRzIGltcG9ydCBCaW5kaW5nc1Rlc3RSZXN1bHRzCisKKworY2xh
c3MgQmluZGluZ3NUZXN0UmVzdWx0c1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0
ZXN0X3Jlc3VsdHNfZnJvbV9zdHJpbmcoc2VsZik6CisgICAgICAgIGluY29tcGxldGVfanNvbiA9
ICd7ImtleTIiOiBbXX0nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgQmluZGluZ3NU
ZXN0UmVzdWx0cy5yZXN1bHRzX2Zyb21fc3RyaW5nKGluY29tcGxldGVfanNvbikpCisKKyAgICBk
ZWYgdGVzdF9yZXN1bHRzX2Zyb21fc3RyaW5nX3N1Y2Nlc3Moc2VsZik6CisgICAgICAgIG5vX2Zh
aWx1cmVzX3N0cmluZyA9ICd7ImZhaWx1cmVzIjogW119JworICAgICAgICBub19mYWlsdXJlc19y
ZXN1bHRzID0gQmluZGluZ3NUZXN0UmVzdWx0cyhbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KG5vX2ZhaWx1cmVzX3Jlc3VsdHMuZXF1YWxzKEJpbmRpbmdzVGVzdFJlc3VsdHMucmVzdWx0c19m
cm9tX3N0cmluZyhub19mYWlsdXJlc19zdHJpbmcpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KG5vX2ZhaWx1cmVzX3Jlc3VsdHMuYWxsX3Bhc3NlZCgpKQorCisgICAgICAgIHRlc3Rfc3RyaW5n
ID0gJ3siZmFpbHVyZXMiOiBbImZhaWx1cmUxIl19JworICAgICAgICB0ZXN0X3Jlc3VsdHMgPSBC
aW5kaW5nc1Rlc3RSZXN1bHRzKFsiZmFpbHVyZTEiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHRlc3RfcmVzdWx0cy5lcXVhbHMoQmluZGluZ3NUZXN0UmVzdWx0cy5yZXN1bHRzX2Zyb21fc3Ry
aW5nKHRlc3Rfc3RyaW5nKSkpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9u
ZXQvZ2VuZXJpY3Rlc3RyZXN1bHRzX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9nZW5lcmljdGVzdHJlc3VsdHNfdW5pdHRlc3QucHkJ
KHJldmlzaW9uIDIyNDM1NSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9n
ZW5lcmljdGVzdHJlc3VsdHNfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTIyLDIwICsy
MiwyMCBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJp
bmRpbmdzdGVzdHJlc3VsdHMgaW1wb3J0IEJpbmRpbmdzVGVzdFJlc3VsdHMKK2Zyb20gd2Via2l0
cHkuY29tbW9uLm5ldC5nZW5lcmljdGVzdHJlc3VsdHMgaW1wb3J0IEdlbmVyaWNUZXN0UmVzdWx0
cwogCiAKLWNsYXNzIEJpbmRpbmdzVGVzdFJlc3VsdHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
K2NsYXNzIEdlbmVyaWNUZXN0UmVzdWx0c1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRl
ZiB0ZXN0X3Jlc3VsdHNfZnJvbV9zdHJpbmcoc2VsZik6CiAgICAgICAgIGluY29tcGxldGVfanNv
biA9ICd7ImtleTIiOiBbXX0nCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgQmluZGlu
Z3NUZXN0UmVzdWx0cy5yZXN1bHRzX2Zyb21fc3RyaW5nKGluY29tcGxldGVfanNvbikpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgR2VuZXJpY1Rlc3RSZXN1bHRzLnJlc3VsdHNfZnJv
bV9zdHJpbmcoaW5jb21wbGV0ZV9qc29uKSkKIAogICAgIGRlZiB0ZXN0X3Jlc3VsdHNfZnJvbV9z
dHJpbmdfc3VjY2VzcyhzZWxmKToKICAgICAgICAgbm9fZmFpbHVyZXNfc3RyaW5nID0gJ3siZmFp
bHVyZXMiOiBbXX0nCi0gICAgICAgIG5vX2ZhaWx1cmVzX3Jlc3VsdHMgPSBCaW5kaW5nc1Rlc3RS
ZXN1bHRzKFtdKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobm9fZmFpbHVyZXNfcmVzdWx0cy5l
cXVhbHMoQmluZGluZ3NUZXN0UmVzdWx0cy5yZXN1bHRzX2Zyb21fc3RyaW5nKG5vX2ZhaWx1cmVz
X3N0cmluZykpKQorICAgICAgICBub19mYWlsdXJlc19yZXN1bHRzID0gR2VuZXJpY1Rlc3RSZXN1
bHRzKFtdKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobm9fZmFpbHVyZXNfcmVzdWx0cy5lcXVh
bHMoR2VuZXJpY1Rlc3RSZXN1bHRzLnJlc3VsdHNfZnJvbV9zdHJpbmcobm9fZmFpbHVyZXNfc3Ry
aW5nKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub19mYWlsdXJlc19yZXN1bHRzLmFsbF9w
YXNzZWQoKSkKIAogICAgICAgICB0ZXN0X3N0cmluZyA9ICd7ImZhaWx1cmVzIjogWyJmYWlsdXJl
MSJdfScKLSAgICAgICAgdGVzdF9yZXN1bHRzID0gQmluZGluZ3NUZXN0UmVzdWx0cyhbImZhaWx1
cmUxIl0pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X3Jlc3VsdHMuZXF1YWxzKEJpbmRp
bmdzVGVzdFJlc3VsdHMucmVzdWx0c19mcm9tX3N0cmluZyh0ZXN0X3N0cmluZykpKQorICAgICAg
ICB0ZXN0X3Jlc3VsdHMgPSBHZW5lcmljVGVzdFJlc3VsdHMoWyJmYWlsdXJlMSJdKQorICAgICAg
ICBzZWxmLmFzc2VydFRydWUodGVzdF9yZXN1bHRzLmVxdWFscyhHZW5lcmljVGVzdFJlc3VsdHMu
cmVzdWx0c19mcm9tX3N0cmluZyh0ZXN0X3N0cmluZykpKQpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2JvdC9iaW5kaW5nc3Rlc3RyZXN1bHRzcmVhZGVyLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvYmluZGluZ3N0ZXN0cmVzdWx0c3Jl
YWRlci5weQkocmV2aXNpb24gMjI0MzU1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2JvdC9iaW5kaW5nc3Rlc3RyZXN1bHRzcmVhZGVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3
ICsyMiw3IEBACiAKIGltcG9ydCBsb2dnaW5nCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5i
aW5kaW5nc3Rlc3RyZXN1bHRzIGltcG9ydCBCaW5kaW5nc1Rlc3RSZXN1bHRzCitmcm9tIHdlYmtp
dHB5LmNvbW1vbi5uZXQuZ2VuZXJpY3Rlc3RyZXN1bHRzIGltcG9ydCBCaW5kaW5nc1Rlc3RSZXN1
bHRzCiBmcm9tIHdlYmtpdHB5LnRvb2wuYm90LmFic3RyYWN0dGVzdHJlc3VsdHNyZWFkZXIgaW1w
b3J0IEFic3RyYWN0VGVzdFJlc3VsdHNSZWFkZXIKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy
KF9fbmFtZV9fKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9wYXRjaGFu
YWx5c2lzdGFzay5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Ym90L3BhdGNoYW5hbHlzaXN0YXNrLnB5CShyZXZpc2lvbiAyMjQzNTUpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvYm90L3BhdGNoYW5hbHlzaXN0YXNrLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0zNjgsNiArMzY4LDggQEAgY2xhc3MgUGF0Y2hBbmFseXNpc1Rhc2sob2JqZWN0KToKICAg
ICAgICAgICAgIHJldHVybiBzZWxmLl9yZXRyeV9qc2NfdGVzdHMoKQogICAgICAgICBlbGlmIGhh
c2F0dHIoc2VsZi5fZGVsZWdhdGUsICdncm91cCcpIGFuZCBzZWxmLl9kZWxlZ2F0ZS5ncm91cCgp
ID09ICJiaW5kaW5ncyI6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmV0cnlfYmluZGluZ3Nf
dGVzdHMoKQorICAgICAgICBlbGlmIGhhc2F0dHIoc2VsZi5fZGVsZWdhdGUsICdncm91cCcpIGFu
ZCBzZWxmLl9kZWxlZ2F0ZS5ncm91cCgpID09ICJ3ZWJraXRweSI6CisgICAgICAgICAgICByZXR1
cm4gRmFsc2UKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZXRyeV9s
YXlvdXRfdGVzdHMoKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3Jl
dHJ5bG9naWNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2JvdC9yZXRyeWxvZ2ljX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyMjQzNTUpCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3JldHJ5bG9naWNfdW5pdHRlc3QucHkJKHdv
cmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgdW5p
dHRlc3QKIAotZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJpbmRpbmdzdGVzdHJlc3VsdHMgaW1w
b3J0IEJpbmRpbmdzVGVzdFJlc3VsdHMKK2Zyb20gd2Via2l0cHkuY29tbW9uLm5ldC5nZW5lcmlj
dGVzdHJlc3VsdHMgaW1wb3J0IEJpbmRpbmdzVGVzdFJlc3VsdHMKIGZyb20gd2Via2l0cHkuY29t
bW9uLm5ldC5qc2N0ZXN0cmVzdWx0cyBpbXBvcnQgSlNDVGVzdFJlc3VsdHMKIGZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCiBmcm9tIHdlYmtp
dHB5LnRvb2wuYm90LnBhdGNoYW5hbHlzaXN0YXNrIGltcG9ydCAqCkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvYm90L3dlYmtpdHB5dGVzdHJlc3VsdHNyZWFkZXIucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC93ZWJraXRweXRlc3RyZXN1
bHRzcmVhZGVyLnB5CShyZXZpc2lvbiAyMjM2MjApCShmcm9tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9ib3QvYmluZGluZ3N0ZXN0cmVzdWx0c3JlYWRlci5weToyMjM2MjApCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3dlYmtpdHB5dGVzdHJlc3VsdHNyZWFkZXIucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
CisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCitpbXBvcnQgbG9nZ2luZworCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5u
ZXQuYmluZGluZ3N0ZXN0cmVzdWx0cyBpbXBvcnQgQmluZGluZ3NUZXN0UmVzdWx0cworZnJvbSB3
ZWJraXRweS50b29sLmJvdC5hYnN0cmFjdHRlc3RyZXN1bHRzcmVhZGVyIGltcG9ydCBBYnN0cmFj
dFRlc3RSZXN1bHRzUmVhZGVyCisKK19sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykK
KworCitjbGFzcyBCaW5kaW5nc1Rlc3RSZXN1bHRzUmVhZGVyKEFic3RyYWN0VGVzdFJlc3VsdHNS
ZWFkZXIpOgorICAgIGRlZiByZXN1bHRzKHNlbGYpOgorICAgICAgICByZXN1bHRzX3BhdGggPSBz
ZWxmLl9ob3N0LmZpbGVzeXN0ZW0uam9pbihzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSwgJ2JpbmRp
bmdzX3Rlc3RfcmVzdWx0cy5qc29uJykKKyAgICAgICAgY29udGVudHMgPSBzZWxmLl9yZWFkX2Zp
bGVfY29udGVudHMocmVzdWx0c19wYXRoKQorICAgICAgICByZXR1cm4gQmluZGluZ3NUZXN0UmVz
dWx0cy5yZXN1bHRzX2Zyb21fc3RyaW5nKGNvbnRlbnRzKQpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2JvdC93ZWJraXRweXRlc3RyZXN1bHRzcmVhZGVyLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3Qvd2Via2l0cHl0ZXN0cmVzdWx0c3Jl
YWRlci5weQkocmV2aXNpb24gMjIzNjIwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2JvdC93ZWJraXRweXRlc3RyZXN1bHRzcmVhZGVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMiwx
NCArMjIsMTQgQEAKIAogaW1wb3J0IGxvZ2dpbmcKIAotZnJvbSB3ZWJraXRweS5jb21tb24ubmV0
LmJpbmRpbmdzdGVzdHJlc3VsdHMgaW1wb3J0IEJpbmRpbmdzVGVzdFJlc3VsdHMKK2Zyb20gd2Vi
a2l0cHkuY29tbW9uLm5ldC5nZW5lcmljdGVzdHJlc3VsdHMgaW1wb3J0IFdlYmtpdHB5VGVzdFJl
c3VsdHMKIGZyb20gd2Via2l0cHkudG9vbC5ib3QuYWJzdHJhY3R0ZXN0cmVzdWx0c3JlYWRlciBp
bXBvcnQgQWJzdHJhY3RUZXN0UmVzdWx0c1JlYWRlcgogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dn
ZXIoX19uYW1lX18pCiAKIAotY2xhc3MgQmluZGluZ3NUZXN0UmVzdWx0c1JlYWRlcihBYnN0cmFj
dFRlc3RSZXN1bHRzUmVhZGVyKToKK2NsYXNzIFdlYmtpdHB5VGVzdFJlc3VsdHNSZWFkZXIoQWJz
dHJhY3RUZXN0UmVzdWx0c1JlYWRlcik6CiAgICAgZGVmIHJlc3VsdHMoc2VsZik6Ci0gICAgICAg
IHJlc3VsdHNfcGF0aCA9IHNlbGYuX2hvc3QuZmlsZXN5c3RlbS5qb2luKHNlbGYuX3Jlc3VsdHNf
ZGlyZWN0b3J5LCAnYmluZGluZ3NfdGVzdF9yZXN1bHRzLmpzb24nKQorICAgICAgICByZXN1bHRz
X3BhdGggPSBzZWxmLl9ob3N0LmZpbGVzeXN0ZW0uam9pbihzZWxmLl9yZXN1bHRzX2RpcmVjdG9y
eSwgJ3dlYmtpdHB5X3Rlc3RfcmVzdWx0cy5qc29uJykKICAgICAgICAgY29udGVudHMgPSBzZWxm
Ll9yZWFkX2ZpbGVfY29udGVudHMocmVzdWx0c19wYXRoKQotICAgICAgICByZXR1cm4gQmluZGlu
Z3NUZXN0UmVzdWx0cy5yZXN1bHRzX2Zyb21fc3RyaW5nKGNvbnRlbnRzKQorICAgICAgICByZXR1
cm4gV2Via2l0cHlUZXN0UmVzdWx0cy5yZXN1bHRzX2Zyb21fc3RyaW5nKGNvbnRlbnRzKQpJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3Rl
bS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
ZWFybHl3YXJuaW5nc3lzdGVtLnB5CShyZXZpc2lvbiAyMjQzNTgpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0zOSw2ICszOSw3IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRp
dmUgaW0KIGZyb20gd2Via2l0cHkudG9vbC5ib3QuZWFybHl3YXJuaW5nc3lzdGVtdGFzayBpbXBv
cnQgRWFybHlXYXJuaW5nU3lzdGVtVGFzaywgRWFybHlXYXJuaW5nU3lzdGVtVGFza0RlbGVnYXRl
CiBmcm9tIHdlYmtpdHB5LnRvb2wuYm90LmJpbmRpbmdzdGVzdHJlc3VsdHNyZWFkZXIgaW1wb3J0
IEJpbmRpbmdzVGVzdFJlc3VsdHNSZWFkZXIKIGZyb20gd2Via2l0cHkudG9vbC5ib3QubGF5b3V0
dGVzdHJlc3VsdHNyZWFkZXIgaW1wb3J0IExheW91dFRlc3RSZXN1bHRzUmVhZGVyCitmcm9tIHdl
YmtpdHB5LnRvb2wuYm90LndlYmtpdHB5dGVzdHJlc3VsdHNyZWFkZXIgaW1wb3J0IFdlYmtpdHB5
VGVzdFJlc3VsdHNSZWFkZXIKIGZyb20gd2Via2l0cHkudG9vbC5ib3QuanNjdGVzdHJlc3VsdHNy
ZWFkZXIgaW1wb3J0IEpTQ1Rlc3RSZXN1bHRzUmVhZGVyCiBmcm9tIHdlYmtpdHB5LnRvb2wuYm90
LnBhdGNoYW5hbHlzaXN0YXNrIGltcG9ydCBVbmFibGVUb0FwcGx5UGF0Y2gsIFBhdGNoSXNOb3RW
YWxpZCwgUGF0Y2hJc05vdEFwcGxpY2FibGUKIGZyb20gd2Via2l0cHkudG9vbC5ib3QucXVldWVl
bmdpbmUgaW1wb3J0IFF1ZXVlRW5naW5lCkBAIC02Miw2ICs2Myw4IEBAIGNsYXNzIEFic3RyYWN0
RWFybHlXYXJuaW5nU3lzdGVtKEFic3RyYWMKICAgICAgICAgICAgIHNlbGYuX3Rlc3RfcmVzdWx0
c19yZWFkZXIgPSBKU0NUZXN0UmVzdWx0c1JlYWRlcihzZWxmLl90b29sLCBzZWxmLl9wb3J0Lmpz
Y19yZXN1bHRzX2RpcmVjdG9yeSgpKQogICAgICAgICBlbGlmIHNlbGYuZ3JvdXAoKSA9PSAiYmlu
ZGluZ3MiOgogICAgICAgICAgICAgc2VsZi5fdGVzdF9yZXN1bHRzX3JlYWRlciA9IEJpbmRpbmdz
VGVzdFJlc3VsdHNSZWFkZXIoc2VsZi5fdG9vbCwgc2VsZi5fcG9ydC5qc2NfcmVzdWx0c19kaXJl
Y3RvcnkoKSkKKyAgICAgICAgZWxpZiBzZWxmLmdyb3VwKCkgPT0gIndlYmtpdHB5IjoKKyAgICAg
ICAgICAgIHNlbGYuX3Rlc3RfcmVzdWx0c19yZWFkZXIgPSBXZWJraXRweVRlc3RSZXN1bHRzUmVh
ZGVyKHNlbGYuX3Rvb2wsIHNlbGYuX3BvcnQucHl0aG9uX3VuaXR0ZXN0X3Jlc3VsdHNfZGlyZWN0
b3J5KCkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLl90ZXN0X3Jlc3VsdHNfcmVh
ZGVyID0gTGF5b3V0VGVzdFJlc3VsdHNSZWFkZXIoc2VsZi5fdG9vbCwgc2VsZi5fcG9ydC5yZXN1
bHRzX2RpcmVjdG9yeSgpLCBzZWxmLl9sb2dfZGlyZWN0b3J5KCkpCiAKSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW1fdW5pdHRlc3Qu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vh
cmx5d2FybmluZ3N5c3RlbV91bml0dGVzdC5weQkocmV2aXNpb24gMjI0MzU4KQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbV91bml0dGVz
dC5weQkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsOCBAQAogZnJvbSB3ZWJraXRweS50aGly
ZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0
IEhvc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKLWZy
b20gd2Via2l0cHkuY29tbW9uLm5ldC5iaW5kaW5nc3Rlc3RyZXN1bHRzIGltcG9ydCBCaW5kaW5n
c1Rlc3RSZXN1bHRzCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuZ2VuZXJpY3Rlc3RyZXN1bHRz
IGltcG9ydCBCaW5kaW5nc1Rlc3RSZXN1bHRzCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuZ2Vu
ZXJpY3Rlc3RyZXN1bHRzIGltcG9ydCBXZWJraXRweVRlc3RSZXN1bHRzCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5uZXQuanNjdGVzdHJlc3VsdHMgaW1wb3J0IEpTQ1Rlc3RSZXN1bHRzCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5uZXQubGF5b3V0dGVzdHJlc3VsdHMgaW1wb3J0IExheW91dFRlc3RSZXN1
bHRzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0
cHV0Q2FwdHVyZQpAQCAtNjMsNiArNjQsMTIgQEAgY2xhc3MgVGVzdEJpbmRpbmdzRVdTKEFic3Ry
YWN0RWFybHlXYXJuaQogICAgIF9ncm91cCA9ICJiaW5kaW5ncyIKIAogCitjbGFzcyBUZXN0V2Vi
a2l0cHlFV1MoQWJzdHJhY3RFYXJseVdhcm5pbmdTeXN0ZW0pOgorICAgIHBvcnRfbmFtZSA9ICJt
YWMiCisgICAgX2J1aWxkX3N0eWxlID0gTm9uZQorICAgIF9ncm91cCA9ICJ3ZWJraXRweSIKKwor
CiBjbGFzcyBBYnN0cmFjdEVhcmx5V2FybmluZ1N5c3RlbVRlc3QoUXVldWVzVGVzdCk6CiAgICAg
ZGVmIF90ZXN0X21lc3NhZ2Uoc2VsZiwgZXdzLCByZXN1bHRzLCBtZXNzYWdlKToKICAgICAgICAg
ZXdzLmJpbmRfdG9fdG9vbChNb2NrVG9vbCgpKQpAQCAtOTQsNiArMTAxLDEyIEBAIGNsYXNzIEFi
c3RyYWN0RWFybHlXYXJuaW5nU3lzdGVtVGVzdChRdWUKICAgICAgICAgbWVzc2FnZSA9ICJOZXcg
ZmFpbGluZyB0ZXN0czpcbihKUykgVGVzdE1hcExpa2UuaWRsXG4oSlMpIFRlc3ROb2RlLmlkbCIK
ICAgICAgICAgc2VsZi5fdGVzdF9tZXNzYWdlKGV3cywgcmVzdWx0cywgbWVzc2FnZSkKIAorICAg
IGRlZiB0ZXN0X2ZhaWxpbmdfd2Via2l0cHlfdGVzdHNfbWVzc2FnZShzZWxmKToKKyAgICAgICAg
ZXdzID0gVGVzdFdlYmtpdHB5RVdTKCkKKyAgICAgICAgcmVzdWx0cyA9IGxhbWJkYSBhOiBXZWJr
aXRweVRlc3RSZXN1bHRzKFsid2Via2l0cHkudG9vbC5jb21tYW5kcy5lYXJseXdhcm5pbmdzeXN0
ZW1fdW5pdHRlc3QuRWFybHlXYXJuaW5nU3lzdGVtVGVzdC50ZXN0X2V3c19uYW1lIl0pCisgICAg
ICAgIG1lc3NhZ2UgPSAiTmV3IGZhaWxpbmcgdGVzdHM6XG53ZWJraXRweS50b29sLmNvbW1hbmRz
LmVhcmx5d2FybmluZ3N5c3RlbV91bml0dGVzdC5FYXJseVdhcm5pbmdTeXN0ZW1UZXN0LnRlc3Rf
ZXdzX25hbWUiCisgICAgICAgIHNlbGYuX3Rlc3RfbWVzc2FnZShld3MsIHJlc3VsdHMsIG1lc3Nh
Z2UpCisKIAogY2xhc3MgTW9ja0Vhcmx5V2FybmluZ1N5c3RlbVRhc2tGb3JJbmNvbmNsdXNpdmVK
U0NSZXN1bHRzKEVhcmx5V2FybmluZ1N5c3RlbVRhc2spOgogICAgIGRlZiBfdGVzdF9wYXRjaChz
ZWxmKToKQEAgLTE3OSwxNiArMTkyLDE3IEBAIE1PQ0s6IHVwZGF0ZV9zdGF0dXM6ICUobmFtZSlz
IENoZWNrZWQgcmUKICAgICBkZWYgdGVzdF9ld3NfbmFtZShzZWxmKToKICAgICAgICAgIyBUaGVz
ZSBhcmUgdGhlIG5hbWVzIEVXUydzIGluZnJhc3RydWN0dXJlIGV4cGVjdHMsIGNoZWNrIHRoYXQg
dGhleSB3b3JrCiAgICAgICAgIGV4cGVjdGVkX25hbWVzID0geworICAgICAgICAgICAgJ2JpbmRp
bmdzLWV3cycsCiAgICAgICAgICAgICAnZ3RrLXdrMi1ld3MnLAotICAgICAgICAgICAgJ3dpbi1l
d3MnLAogICAgICAgICAgICAgJ2lvcy1ld3MnLAogICAgICAgICAgICAgJ2lvcy1zaW0tZXdzJywK
KyAgICAgICAgICAgICdqc2MtZXdzJywKKyAgICAgICAgICAgICdtYWMtMzJiaXQtZXdzJywKKyAg
ICAgICAgICAgICdtYWMtZGVidWctZXdzJywKICAgICAgICAgICAgICdtYWMtZXdzJywKICAgICAg
ICAgICAgICdtYWMtd2syLWV3cycsCi0gICAgICAgICAgICAnbWFjLWRlYnVnLWV3cycsCi0gICAg
ICAgICAgICAnbWFjLTMyYml0LWV3cycsCi0gICAgICAgICAgICAnYmluZGluZ3MtZXdzJywKLSAg
ICAgICAgICAgICdqc2MtZXdzJywKKyAgICAgICAgICAgICd3ZWJraXRweS1ld3MnLAorICAgICAg
ICAgICAgJ3dpbi1ld3MnLAogICAgICAgICAgICAgJ3dwZS1ld3MnLAogICAgICAgICB9CiAgICAg
ICAgIGNsYXNzZXMgPSBBYnN0cmFjdEVhcmx5V2FybmluZ1N5c3RlbS5sb2FkX2V3c19jbGFzc2Vz
KCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3BhdGNocmVs
ZXZhbmNlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy9jaGVja3BhdGNocmVsZXZhbmNlLnB5CShyZXZpc2lvbiAyMjQzNTUpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2twYXRjaHJlbGV2YW5jZS5weQkod29ya2luZyBj
b3B5KQpAQCAtNjQsOSArNjQsMTUgQEAgY2xhc3MgQ2hlY2tQYXRjaFJlbGV2YW5jZShBYnN0cmFj
dFN0ZXApOgogICAgICAgICAiVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtIiwKICAgICBdCiAK
KyAgICB3ZWJraXRweV9wYXRocyA9IFsKKyAgICAgICAgIlRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
IiwKKyAgICAgICAgIlRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyLyIsCisgICAgXQorCiAgICAgZ3Jv
dXBfdG9fcGF0aHNfbWFwcGluZyA9IHsKICAgICAgICAgJ2JpbmRpbmdzJzogYmluZGluZ3NfcGF0
aHMsCiAgICAgICAgICdqc2MnOiBqc2NfcGF0aHMsCisgICAgICAgICd3ZWJraXRweSc6IHdlYmtp
dHB5X3BhdGhzLAogICAgIH0KIAogICAgIGRlZiBfY2hhbmdlc19hcmVfcmVsZXZhbnQoc2VsZiwg
Y2hhbmdlZF9maWxlcyk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
cnVudGVzdHMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0
ZXBzL3J1bnRlc3RzLnB5CShyZXZpc2lvbiAyMjQzNTUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvc3RlcHMvcnVudGVzdHMucHkJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDEw
IEBAIGNsYXNzIFJ1blRlc3RzKEFic3RyYWN0U3RlcCk6CiAgICAgICAgICAgICBzZWxmLl9ydW5f
YmluZGluZ3NfdGVzdHMoKQogICAgICAgICAgICAgcmV0dXJuCiAKKyAgICAgICAgaWYgc2VsZi5f
b3B0aW9ucy5ncm91cCA9PSAid2Via2l0cHkiOgorICAgICAgICAgICAgc2VsZi5fcnVuX3dlYmtp
dHB5X3Rlc3RzKCkKKyAgICAgICAgICAgIHJldHVybgorCiAgICAgICAgIGlmIHNlbGYuX29wdGlv
bnMuaXRlcmF0ZV9vbl9uZXdfdGVzdHM6CiAgICAgICAgICAgICBfbG9nLmluZm8oIlJ1bm5pbmcg
cnVuLXdlYmtpdC10ZXN0cyBvbiBuZXcgdGVzdHMiKQogICAgICAgICAgICAgc2VsZi5fcnVuX3dl
YmtpdF90ZXN0cyhzZWxmLl9vcHRpb25zLml0ZXJhdGVfb25fbmV3X3Rlc3RzKQpAQCAtMTY1LDYg
KzE2OSwxNCBAQCBjbGFzcyBSdW5UZXN0cyhBYnN0cmFjdFN0ZXApOgogICAgICAgICBhcmdzLmFw
cGVuZCgiLS1qc29uLW91dHB1dD0lcyIgJSByZXN1bHRzX2ZpbGVfcGF0aCkKICAgICAgICAgc2Vs
Zi5fdG9vbC5leGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKGFyZ3MsIGN3ZD1zZWxmLl90
b29sLnNjbSgpLmNoZWNrb3V0X3Jvb3QpCiAKKyAgICBkZWYgX3J1bl93ZWJraXRweV90ZXN0cyhz
ZWxmKToKKyAgICAgICAgYXJncyA9IHNlbGYuX3Rvb2wuZGVwcmVjYXRlZF9wb3J0KCkucnVuX3B5
dGhvbl91bml0dGVzdHNfY29tbWFuZCgpCisgICAgICAgIHJlc3VsdHNfZGlyZWN0b3J5ID0gc2Vs
Zi5fdG9vbC5wb3J0X2ZhY3RvcnkuZ2V0KG9wdGlvbnM9c2VsZi5fb3B0aW9ucykucHl0aG9uX3Vu
aXR0ZXN0X3Jlc3VsdHNfZGlyZWN0b3J5KCkKKyAgICAgICAgc2VsZi5fdG9vbC5maWxlc3lzdGVt
Lm1heWJlX21ha2VfZGlyZWN0b3J5KHJlc3VsdHNfZGlyZWN0b3J5KQorICAgICAgICByZXN1bHRz
X2ZpbGVfcGF0aCA9IHNlbGYuX3Rvb2wuZmlsZXN5c3RlbS5qb2luKHJlc3VsdHNfZGlyZWN0b3J5
LCAid2Via2l0cHlfdGVzdF9yZXN1bHRzLmpzb24iKQorICAgICAgICBhcmdzLmFwcGVuZCgiLS1q
c29uLW91dHB1dD17fSIuZm9ybWF0KHJlc3VsdHNfZmlsZV9wYXRoKSkKKyAgICAgICAgc2VsZi5f
dG9vbC5leGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKGFyZ3MsIGN3ZD1zZWxmLl90b29s
LnNjbSgpLmNoZWNrb3V0X3Jvb3QpCisKICAgICBkZWYgX3J1bl9hcGlfdGVzdHMoc2VsZik6CiAg
ICAgICAgIGFyZ3MgPSBzZWxmLl90b29sLmRlcHJlY2F0ZWRfcG9ydCgpLnJ1bl9hcGlfdGVzdHNf
Y29tbWFuZChzZWxmLl9vcHRpb25zLmJ1aWxkX3N0eWxlKQogICAgICAgICByZXN1bHRzX2RpcmVj
dG9yeSA9IHNlbGYuX3Rvb2wucG9ydF9mYWN0b3J5LmdldChvcHRpb25zPXNlbGYuX29wdGlvbnMp
LmFwaV9yZXN1bHRzX2RpcmVjdG9yeSgpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvc3RlcHNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL3N0ZXBzX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyMjQzNTUpCisr
KyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvc3RlcHNfdW5pdHRlc3QucHkJKHdv
cmtpbmcgY29weSkKQEAgLTI2MSw2ICsyNjEsMTkgQEAgVGhpcyBwYXRjaCBkb2VzIG5vdCBoYXZl
IHJlbGV2YW50IGNoYW5nZQogIiIiCiAgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0
cHV0cyhzZWxmLCBzdGVwLnJ1biwgW3t9XSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQog
CisgICAgZGVmIHRlc3RfcnVudGVzdHNfd2Via2l0cHkoc2VsZik6CisgICAgICAgIG1vY2tfb3B0
aW9ucyA9IHNlbGYuX3N0ZXBfb3B0aW9ucygpCisgICAgICAgIG1vY2tfb3B0aW9ucy5ub25faW50
ZXJhY3RpdmUgPSBGYWxzZQorICAgICAgICBtb2NrX29wdGlvbnMuZ3JvdXAgPSAid2Via2l0cHki
CisgICAgICAgIHN0ZXAgPSBzdGVwcy5SdW5UZXN0cyhNb2NrVG9vbChsb2dfZXhlY3V0aXZlPVRy
dWUpLCBtb2NrX29wdGlvbnMpCisgICAgICAgIHRvb2wgPSBNb2NrVG9vbChsb2dfZXhlY3V0aXZl
PVRydWUpCisgICAgICAgICMgRklYTUU6IFdlIHNob3VsZG4ndCB1c2UgYSByZWFsIHBvcnQtb2Jq
ZWN0IGhlcmUsIGJ1dCB0aGVyZSBpcyB0b28gbXVjaCB0byBtb2NrIGF0IHRoZSBtb21lbnQuCisg
ICAgICAgIHRvb2wuX2RlcHJlY2F0ZWRfcG9ydCA9IERlcHJlY2F0ZWRQb3J0KCkKKyAgICAgICAg
c3RlcCA9IHN0ZXBzLlJ1blRlc3RzKHRvb2wsIG1vY2tfb3B0aW9ucykKKyAgICAgICAgZXhwZWN0
ZWRfbG9ncyA9ICIiIk1PQ0sgcnVuX2FuZF90aHJvd19pZl9mYWlsOiBbJ1Rvb2xzL1NjcmlwdHMv
dGVzdC13ZWJraXRweScsICctLWpzb24tb3V0cHV0PS90bXAvcHl0aG9uLXVuaXR0ZXN0LXJlc3Vs
dHMvd2Via2l0cHlfdGVzdF9yZXN1bHRzLmpzb24nXSwgY3dkPS9tb2NrLWNoZWNrb3V0CisiIiIK
KyAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHN0ZXAucnVuLCBb
e31dLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3MpCisKICAgICBkZWYgdGVzdF9wYXRjaF9y
ZWxldmFudF9iaW5kaW5ncyhzZWxmKToKICAgICAgICAgc2VsZi5tYXhEaWZmID0gTm9uZQogICAg
ICAgICBtb2NrX29wdGlvbnMgPSBzZWxmLl9zdGVwX29wdGlvbnMoKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>