<?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>155967</bug_id>
          
          <creation_ts>2016-03-29 03:04:12 -0700</creation_ts>
          <short_desc>Remove forEach use from Fetch Headers builtin constructor</short_desc>
          <delta_ts>2016-03-31 01:31:27 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1178642</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-29 03:04:12 -0700</bug_when>
    <thetext>As a follow-up to bug 155923, we should remove forEach use in Headers built-in constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178643</commentid>
    <comment_count>1</comment_count>
      <attachid>275085</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-29 03:07:29 -0700</bug_when>
    <thetext>Created attachment 275085
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178731</commentid>
    <comment_count>2</comment_count>
      <attachid>275085</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-03-29 11:28:43 -0700</bug_when>
    <thetext>Comment on attachment 275085
Patch

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

r=me

&gt; Source/WebCore/Modules/fetch/FetchHeaders.js:38
&gt; +    if (headersInit instanceof this.constructor) {

Is this change allowing something that previously wouldn&apos;t have worked to work now? Does this affect subclasses? Maybe we should test this:

    let SpecialHeaders = class SpecialHeaders extends Headers {
        constructor() { console.log(&quot;Subclass!&quot;); super(...arguments); }
    };

    let specialHeaders = new SpecialHeaders({a:1});
    let otherHeaders = new Headers(specialHeaders);
    shouldBeEqualToString(otherHeaders.get(&quot;a&quot;), &quot;1&quot;);

&gt; LayoutTests/fetch/shadowing-forEach.html:14
&gt; +new Headers({a:1});

Can you add a new test here covering what you just fixed. Namely, constructing Headers with a Headers param.

    let headers = new Headers({a:1});
    let headers2 = new Headers(headers);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179153</commentid>
    <comment_count>3</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-30 12:48:58 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 275085 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=275085&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/WebCore/Modules/fetch/FetchHeaders.js:38
&gt; &gt; +    if (headersInit instanceof this.constructor) {
&gt; 
&gt; Is this change allowing something that previously wouldn&apos;t have worked to
&gt; work now? Does this affect subclasses? Maybe we should test this:
&gt;     let SpecialHeaders = class SpecialHeaders extends Headers {
&gt;         constructor() { console.log(&quot;Subclass!&quot;); super(...arguments); }
&gt;     };
&gt; 
&gt;     let specialHeaders = new SpecialHeaders({a:1});
&gt;     let otherHeaders = new Headers(specialHeaders);
&gt;     shouldBeEqualToString(otherHeaders.get(&quot;a&quot;), &quot;1&quot;);

I was thinking so but the test below is working without this patch.
I am not exactly sure why.

Anyway, I think this change is an improvement.
It is a good idea to add this test, I will do it in the landing patch.

&gt; 
&gt; &gt; LayoutTests/fetch/shadowing-forEach.html:14
&gt; &gt; +new Headers({a:1});
&gt; 
&gt; Can you add a new test here covering what you just fixed. Namely,
&gt; constructing Headers with a Headers param.
&gt; 
&gt;     let headers = new Headers({a:1});
&gt;     let headers2 = new Headers(headers);

Sure, I&apos;ll do that at landing time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179357</commentid>
    <comment_count>4</comment_count>
      <attachid>275270</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-31 00:29:29 -0700</bug_when>
    <thetext>Created attachment 275270
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179363</commentid>
    <comment_count>5</comment_count>
      <attachid>275270</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-31 01:31:23 -0700</bug_when>
    <thetext>Comment on attachment 275270
Patch for landing

Clearing flags on attachment: 275270

Committed r198889: &lt;http://trac.webkit.org/changeset/198889&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179364</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-31 01:31:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275085</attachid>
            <date>2016-03-29 03:07:29 -0700</date>
            <delta_ts>2016-03-31 00:29:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155967-20160329120731.patch</filename>
            <type>text/plain</type>
            <size>27228</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4Nzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjZlNTIyNDExYTU1ZTUz
ZjU3ZmJhNTRmZTQ2Nzc0MmI4ODNiZjFjNy4uMDkwNzEzMjBiYWU3OGI1MmY2MjI0YjdjNWRjZTgy
N2JkMmI3MTM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE2LTAzLTI5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgUmVtb3Zl
IGZvckVhY2ggdXNlIGZyb20gRmV0Y2ggSGVhZGVycyBidWlsdGluIGNvbnN0cnVjdG9yCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU5NjcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogZmV0Y2gv
c2hhZG93aW5nLWZvckVhY2guaHRtbAorICAgICAgICAgICAgICAgc3RyZWFtcy9zaGFkb3dpbmct
UHJvbWlzZS5odG1sCisgICAgICAgICAgICAgICBzdHJlYW1zL3NoYWRvd2luZy1kZWZpbmVQcm9w
ZXJ0eS5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5pZGw6IEFk
ZGluZyBmaWxsRnJvbUpTIHByaXZhdGUgbWV0aG9kLgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hIZWFkZXJzLmpzOgorICAgICAgICAoaW5pdGlhbGl6ZUZldGNoSGVhZGVycyk6IFVzaW5n
IGZpbGxGcm9tSlMgcHJpdmF0ZSBtZXRob2QuCisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29y
ZUJ1aWx0aW5OYW1lcy5oOiBBZGRpbmcgZmlsbEZyb21KUyBwcml2YXRlIHN5bWJvbC4KKwogMjAx
Ni0wMy0yOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAg
IEF1ZGl0IFdlYkNvcmUgYnVpbHRpbnMgZm9yIHVzZXIgb3ZlcnJpZGFibGUgY29kZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaWRsCmluZGV4IDJjMTNiNzRm
Y2UxNTZlNWJmZTlhMDhlMmU5YWQzNzgzZGY1YzY4NzQuLjJkYWNkZjI2NzIyNWM2YmVhMGEzNjhi
NDdjN2U3YWEwYmNkN2JkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hIZWFkZXJzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoSGVhZGVycy5pZGwKQEAgLTQzLDQgKzQzLDUgQEAgaW50ZXJmYWNlIEZldGNoSGVhZGVycyB7
CiAgICAgaXRlcmFibGU8RE9NU3RyaW5nLCBET01TdHJpbmc+OwogCiAgICAgW1ByaXZhdGUsIFJh
aXNlc0V4Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1hcHBlbmRdIHZvaWQgYXBwZW5kRnJvbUpTKERP
TVN0cmluZyBuYW1lLCBET01TdHJpbmcgdmFsdWUpOworICAgIFtQcml2YXRlLCBJbXBsZW1lbnRl
ZEFzPWZpbGxdIHZvaWQgZmlsbEZyb21KUyhGZXRjaEhlYWRlcnMgaGVhZGVycyk7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuanMgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5qcwppbmRleCBmYzkxYjQx
Y2I4NWZkMWM3YTAxZTRhNDVlYzJlNjkzNjJlZjg3MTNiLi5jYzdiOTU4Zjg3ZDgzYWRiM2FlZmZl
M2I1YTYxMjJkYmEwYTUxMmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoSGVhZGVycy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoSGVhZGVycy5qcwpAQCAtMzUsMTAgKzM1LDkgQEAgZnVuY3Rpb24gaW5pdGlhbGl6ZUZldGNo
SGVhZGVycyhoZWFkZXJzSW5pdCkKICAgICBpZiAoIUBpc09iamVjdChoZWFkZXJzSW5pdCkpCiAg
ICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJoZWFkZXJzSW5pdCBtdXN0IGJlIGFuIG9iamVj
dCIpOwogCi0gICAgaWYgKHRoaXMuY29uc3RydWN0b3IgPT09IGhlYWRlcnNJbml0LmNvbnN0cnVj
dG9yKSB7Ci0gICAgICAgICBoZWFkZXJzSW5pdC5mb3JFYWNoKCh2YWx1ZSwgbmFtZSkgPT4gewot
ICAgICAgICAgICAgIHRoaXMuQGFwcGVuZEZyb21KUyhuYW1lLCB2YWx1ZSk7Ci0gICAgICAgICB9
KTsKKyAgICBpZiAoaGVhZGVyc0luaXQgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yKSB7Cisg
ICAgICAgIHRoaXMuQGZpbGxGcm9tSlMoaGVhZGVyc0luaXQpOworICAgICAgICByZXR1cm4gdGhp
czsKICAgICB9CiAKICAgICBpZiAoaGVhZGVyc0luaXQgaW5zdGFuY2VvZiBAQXJyYXkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRl
eCAzMmMzNzg0ZTFmMmUxZjA3YzdjM2I5MDc0ZTk0OWYyYzAwZjk3MDI1Li4zNDkzODYzNDc4Y2Q5
ZDY3MmVmOWYyZjdhNTRlNjg1ZmJmZjJhNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBtYWNybyhjb250cm9sbGVkUmVhZGFibGVTdHJlYW0pIFwKICAgICBt
YWNybyhjb250cm9sbGVyKSBcCiAgICAgbWFjcm8oZGlzdHVyYmVkKSBcCisgICAgbWFjcm8oZmls
bEZyb21KUykgXAogICAgIG1hY3JvKGdldFVzZXJNZWRpYUZyb21KUykgXAogICAgIG1hY3JvKGlu
aXRpYWxpemVXaXRoKSBcCiAgICAgbWFjcm8ob3BlcmF0aW9ucykgXApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDMyNThiMjA0
NWUzNjU3NDdjZWE3ZTc5MjYwNDNjZDFmNGJhOWNkZGYuLjJkOGI4MWEyYWU5MjU2OTc3MjU1YjYx
OGMyZTRjMzU0ODQzYTA2NzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNi0wMy0yOSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFJlbW92
ZSBmb3JFYWNoIHVzZSBmcm9tIEZldGNoIEhlYWRlcnMgYnVpbHRpbiBjb25zdHJ1Y3RvcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1OTY3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1pbmcgdGVz
dHMgY292ZXJpbmcgdXNlciBzY3JpcHRzIGJyZWFraW5nIHNvbWUgV2ViQ29yZSBKUyBidWlsdCBp
bnMuCisKKyAgICAgICAgKiBmZXRjaC9zaGFkb3dpbmctZm9yRWFjaC1leHBlY3RlZC50eHQ6IFJl
bmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9zdHJlYW1zL2J1aWx0aW4tb3ZlcnJpZGVzLWV4cGVjdGVk
LnR4dC4KKyAgICAgICAgKiBmZXRjaC9zaGFkb3dpbmctZm9yRWFjaC5odG1sOiBSZW5hbWVkIGZy
b20gTGF5b3V0VGVzdHMvZmV0Y2gvYnVpbHRpbi1vdmVycmlkZXMuaHRtbC4KKyAgICAgICAgKiBz
dHJlYW1zL3NoYWRvd2luZy1Qcm9taXNlLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91
dFRlc3RzL3N0cmVhbXMvc3RyZWFtcy1wcm9taXNlcy1leHBlY3RlZC50eHQuCisgICAgICAgICog
c3RyZWFtcy9zaGFkb3dpbmctUHJvbWlzZS5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMv
c3RyZWFtcy9zdHJlYW1zLXByb21pc2VzLmh0bWwuCisgICAgICAgICogc3RyZWFtcy9zaGFkb3dp
bmctZGVmaW5lUHJvcGVydHktZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMv
ZmV0Y2gvYnVpbHRpbi1vdmVycmlkZXMtZXhwZWN0ZWQudHh0LgorICAgICAgICAqIHN0cmVhbXMv
c2hhZG93aW5nLWRlZmluZVByb3BlcnR5Lmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9z
dHJlYW1zL2J1aWx0aW4tb3ZlcnJpZGVzLmh0bWwuCisKIDIwMTYtMDMtMjkgIEpvc2VwaCBQZWNv
cmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBBdWRpdCBXZWJDb3JlIGJ1aWx0
aW5zIGZvciB1c2VyIG92ZXJyaWRhYmxlIGNvZGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zl
dGNoL2J1aWx0aW4tb3ZlcnJpZGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ZldGNoL2J1
aWx0aW4tb3ZlcnJpZGVzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOTA1MTQ1MTUyY2U0YmU0MjAwYjBiOWIxNjdhYzdlYmZkOTMyNWQwYi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mZXRjaC9idWls
dGluLW92ZXJyaWRlcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAK
LVRoaXMgdGVzdCBzaG91bGQgcnVuIHdpdGhvdXQgdGhyb3dpbmcgYW4gZXhjZXB0aW9uLgotCi1P
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ZldGNoL2J1
aWx0aW4tb3ZlcnJpZGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9mZXRjaC9idWlsdGluLW92ZXJyaWRl
cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODZhNWQ0OTEwZWM3YzA3NmRj
YTQ1ZmJiODQxMDdmNzY1NWIxMTA5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ZldGNoL2J1aWx0aW4tb3ZlcnJpZGVzLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi08IURPQ1RZUEUgSFRNTD4KLTxodG1sPgotPGhl
YWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLWRlc2NyaXB0aW9uKCJUaGlzIHRlc3Qgc2hvdWxk
IHJ1biB3aXRob3V0IHRocm93aW5nIGFuIGV4Y2VwdGlvbi4iKTsKLQotQXJyYXkucHJvdG90eXBl
LmZvckVhY2ggPSBmdW5jdGlvbigpIHsKLSAgICB0aHJvdyAiVXNlciBvdmVycmlkZW4iOwotfTsK
LQotbmV3IEhlYWRlcnMoe2E6MX0pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mZXRjaC9zaGFkb3dpbmctZm9yRWFjaC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mZXRjaC9zaGFkb3dpbmctZm9yRWFjaC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTA1MTQ1MTUyY2U0YmU0MjAwYjBiOWIxNjdhYzdlYmZkOTMyNWQwYgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ZldGNoL3NoYWRvd2luZy1mb3JFYWNoLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDkgQEAKK1RoaXMgdGVzdCBzaG91bGQgcnVuIHdpdGhvdXQgdGhyb3dpbmcgYW4g
ZXhjZXB0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ZldGNoL3NoYWRvd2luZy1mb3JFYWNoLmh0bWwgYi9MYXlvdXRUZXN0cy9mZXRjaC9z
aGFkb3dpbmctZm9yRWFjaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4NmE1ZDQ5MTBlYzdjMDc2ZGNhNDVm
YmI4NDEwN2Y3NjU1YjExMDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mZXRjaC9z
aGFkb3dpbmctZm9yRWFjaC5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQRSBIVE1MPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMg
dGVzdCBzaG91bGQgcnVuIHdpdGhvdXQgdGhyb3dpbmcgYW4gZXhjZXB0aW9uLiIpOworCitBcnJh
eS5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uKCkgeworICAgIHRocm93ICJVc2VyIG92ZXJy
aWRlbiI7Cit9OworCituZXcgSGVhZGVycyh7YToxfSk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvYnVpbHRpbi1vdmVycmlkZXMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9idWlsdGluLW92ZXJyaWRlcy1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwNTE0NTE1MmNlNGJlNDIwMGIw
YjliMTY3YWM3ZWJmZDkzMjVkMGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9idWlsdGluLW92ZXJyaWRlcy1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLVRoaXMgdGVzdCBzaG91bGQgcnVu
IHdpdGhvdXQgdGhyb3dpbmcgYW4gZXhjZXB0aW9uLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCi0KLQotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRF
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvYnVpbHRpbi1vdmVycmlkZXMuaHRt
bCBiL0xheW91dFRlc3RzL3N0cmVhbXMvYnVpbHRpbi1vdmVycmlkZXMuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMWMwYWY4ZGMxNjJjMWY5MTY3YjRmMDMwMTQzYWEzOWZiNGU4
ODI3ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9zdHJlYW1zL2J1aWx0aW4tb3ZlcnJpZGVzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwxOSArMCwwIEBACi08IURPQ1RZUEUgSFRNTD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5
PgotPHNjcmlwdD4KLWRlc2NyaXB0aW9uKCJUaGlzIHRlc3Qgc2hvdWxkIHJ1biB3aXRob3V0IHRo
cm93aW5nIGFuIGV4Y2VwdGlvbi4iKTsKLQotT2JqZWN0LmRlZmluZVByb3BlcnR5ID0gZnVuY3Rp
b24oKSB7Ci0gICAgdGhyb3cgIlVzZXIgb3ZlcnJpZGVuIjsKLX07Ci0KLW5ldyBCeXRlTGVuZ3Ro
UXVldWluZ1N0cmF0ZWd5KHt9KTsKLW5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7fSk7Ci08L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvc2hh
ZG93aW5nLVByb21pc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9zaGFkb3dp
bmctUHJvbWlzZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjAxNzllNjZlZmRlYWEwZDQwNjI3
YTAwZGZiZDA1M2JmN2EzZTcwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0cmVh
bXMvc2hhZG93aW5nLVByb21pc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKKworUEFT
UyBTdHJlYW1zIGFuZCBwcm9taXNlczogcmVwbGFjZSBQcm9taXNlIGNvbnN0cnVjdG9yIAorUEFT
UyBTdHJlYW1zIGFuZCBwcm9taXNlczogcmVwbGFjZSBQcm9taXNlLnJlc29sdmUgCitQQVNTIFN0
cmVhbXMgYW5kIHByb21pc2VzOiByZXBsYWNlIFByb21pc2UucmVqZWN0IAorUEFTUyBTdHJlYW1z
IGFuZCBwcm9taXNlczogcmVwbGFjZSBwcm90b3R5cGUgb2YgYSBwcm9taXNlIG9iamVjdCAKK1BB
U1MgU3RyZWFtcyBhbmQgcHJvbWlzZXM6IHJlcGxhY2UgdGhlbiBtZXRob2QgaW4gUHJvbWlzZSBw
cm90b3R5cGUgCitQQVNTIFN0cmVhbXMgYW5kIHByb21pc2VzOiByZXBsYWNlIGNhdGNoIG1ldGhv
ZCBpbiBQcm9taXNlIHByb3RvdHlwZSAKK1BBU1MgU3RyZWFtcyBhbmQgcHJvbWlzZXM6IHJlcGxh
Y2UgdGhlbiBtZXRob2QgaW4gcHJvbWlzZSBvYmplY3QgCitQQVNTIFN0cmVhbXMgc2hvdWxkIG5v
dCBkaXJlY3RseSB1c2UgTnVtYmVyIGFuZCByZWxhdGVkIG1ldGhvZHMgCitQQVNTIFN0cmVhbXMg
c2hvdWxkIG5vdCBkaXJlY3RseSB1c2UgUmVhZGFibGVTdHJlYW0gcHVibGljIEFQSXMgCitQQVNT
IFN0cmVhbXMgc2hvdWxkIG5vdCBkaXJlY3RseSB1c2UgUmVhZGFibGVTdHJlYW1SZWFkZXIgcmVh
ZCBwdWJsaWMgQVBJIAorUEFTUyBTdHJlYW1zIHNob3VsZCBub3QgZGlyZWN0bHkgdXNlIGFycmF5
IHB1YmxpYyBBUElzIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3NoYWRvd2lu
Zy1Qcm9taXNlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3NoYWRvd2luZy1Qcm9taXNlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzNlMGZkMWFlNWFkNWU4NzI2ZjFkNmI1NTcyMTdjODk3MzRkOWExYgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvc2hhZG93aW5nLVByb21pc2Uu
aHRtbApAQCAtMCwwICsxLDIwNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0nLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPScuLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMnPjwvc2NyaXB0PgorPHNjcmlwdD4KK3Rlc3QoZnVu
Y3Rpb24oKSB7CisgICAgY29uc3QgUHJvbWlzZUJhY2t1cCA9IFByb21pc2U7CisKKyAgICB0cnkg
eworICAgICAgICBQcm9taXNlID0gZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoInN0cmVh
bXMgc2hvdWxkIG5vdCB1c2UgdGhpcyBQcm9taXNlIG9iamVjdCIpOyB9OworCisgICAgICAgIG5l
dyBSZWFkYWJsZVN0cmVhbSgpOworICAgICAgICBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgICB9
IGZpbmFsbHkgeworICAgICAgICBQcm9taXNlID0gUHJvbWlzZUJhY2t1cDsKKyAgICB9Cit9LCAn
U3RyZWFtcyBhbmQgcHJvbWlzZXM6IHJlcGxhY2UgUHJvbWlzZSBjb25zdHJ1Y3RvcicpOworCit0
ZXN0KGZ1bmN0aW9uKCkgeworICAgIGNvbnN0IFByb21pc2VSZXNvbHZlQmFja3VwID0gUHJvbWlz
ZS5yZXNvbHZlOworCisgICAgdHJ5IHsKKyAgICAgICAgUHJvbWlzZS5yZXNvbHZlID0gZnVuY3Rp
b24oKSB7IGFzc2VydF91bnJlYWNoZWQoInN0cmVhbXMgc2hvdWxkIG5vdCB1c2UgdGhpcyBQcm9t
aXNlLnJlc29sdmUgbWV0aG9kIik7IH07CisKKyAgICAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKCk7
CisgICAgICAgIG5ldyBXcml0YWJsZVN0cmVhbSgpOworICAgIH0gZmluYWxseSB7CisgICAgICAg
IFByb21pc2UucmVzb2x2ZSA9IFByb21pc2VSZXNvbHZlQmFja3VwOworICAgIH0KK30sICdTdHJl
YW1zIGFuZCBwcm9taXNlczogcmVwbGFjZSBQcm9taXNlLnJlc29sdmUnKTsKKwordGVzdChmdW5j
dGlvbigpIHsKKyAgICBjb25zdCBQcm9taXNlUmVqZWN0QmFja3VwID0gUHJvbWlzZS5yZWplY3Q7
CisKKyAgICB0cnkgeworICAgICAgICBQcm9taXNlLnJlamVjdCA9IGZ1bmN0aW9uKCkgeyBhc3Nl
cnRfdW5yZWFjaGVkKCJzdHJlYW1zIHNob3VsZCBub3QgdXNlIHRoaXMgUHJvbWlzZS5yZWplY3Qg
bWV0aG9kIik7IH07CisKKyAgICAgICAgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmNhbmNlbC5j
YWxsKHt9LCAicmVhc29uIik7CisgICAgICAgIFdyaXRhYmxlU3RyZWFtLnByb3RvdHlwZS5hYm9y
dC5jYWxsKHt9LCAicmVhc29uIik7CisgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgUHJvbWlzZS5y
ZWplY3QgPSBQcm9taXNlUmVqZWN0QmFja3VwOworICAgIH0KK30sICdTdHJlYW1zIGFuZCBwcm9t
aXNlczogcmVwbGFjZSBQcm9taXNlLnJlamVjdCcpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAg
IGZ1bmN0aW9uIGNyZWF0ZU1hbmdsZWRQcm9taXNlKCkgeworICAgICAgICBjb25zdCBwcm9taXNl
ID0gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihwcm9t
aXNlLCB7IGNvbnN0cnVjdG9yOiBQcm9taXNlLCB0aGVuOiBmdW5jdGlvbigpIHsgYXNzZXJ0X3Vu
cmVhY2hlZCgic3RyZWFtcyBzaG91bGQgbm90IHVzZSB0aGlzIHByb21pc2UgdGhlbiBtZXRob2Qi
KTsgfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2U7CisgICAgfQorICAgIG5ldyBSZWFkYWJs
ZVN0cmVhbSh7IHN0YXJ0OiBmdW5jdGlvbigpIHsgcmV0dXJuIGNyZWF0ZU1hbmdsZWRQcm9taXNl
KCk7IH0gfSkKKyAgICBuZXcgV3JpdGFibGVTdHJlYW0oeyBzdGFydDogZnVuY3Rpb24oKSB7IHJl
dHVybiBjcmVhdGVNYW5nbGVkUHJvbWlzZSgpOyB9IH0pCit9LCAnU3RyZWFtcyBhbmQgcHJvbWlz
ZXM6IHJlcGxhY2UgcHJvdG90eXBlIG9mIGEgcHJvbWlzZSBvYmplY3QnKTsKKwordGVzdChmdW5j
dGlvbigpIHsKKyAgICBjb25zdCBQcm9taXNlVGhlbkJhY2t1cCA9IFByb21pc2UucHJvdG90eXBl
LnRoZW47CisKKyAgICB0cnkgeworICAgICAgICBQcm9taXNlLnByb3RvdHlwZS50aGVuID0gZnVu
Y3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoInN0cmVhbXMgc2hvdWxkIG5vdCB1c2UgdGhpcyBQ
cm9taXNlLnByb3RvdHlwZS50aGVuIG1ldGhvZCIpOyB9OworCisgICAgICAgIG5ldyBSZWFkYWJs
ZVN0cmVhbSgpOworICAgICAgICBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgICB9IGZpbmFsbHkg
eworICAgICAgICBQcm9taXNlLnByb3RvdHlwZS50aGVuID0gUHJvbWlzZVRoZW5CYWNrdXA7Cisg
ICAgfQorfSwgJ1N0cmVhbXMgYW5kIHByb21pc2VzOiByZXBsYWNlIHRoZW4gbWV0aG9kIGluIFBy
b21pc2UgcHJvdG90eXBlJyk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgY29uc3QgUHJvbWlz
ZUNhdGNoQmFja3VwID0gUHJvbWlzZS5wcm90b3R5cGUuY2F0Y2g7CisgICAgY29uc3QgUHJvbWlz
ZVRoZW5CYWNrdXAgPSBQcm9taXNlLnByb3RvdHlwZS50aGVuOworCisgICAgdHJ5IHsKKyAgICAg
ICAgUHJvbWlzZS5wcm90b3R5cGUuY2F0Y2ggPSBmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hl
ZCgic3RyZWFtcyBzaG91bGQgbm90IHVzZSB0aGlzIFByb21pc2UucHJvdG90eXBlLmNhdGNoIG1l
dGhvZCIpOyB9OworICAgICAgICBQcm9taXNlLnByb3RvdHlwZS50aGVuID0gZnVuY3Rpb24oKSB7
IGFzc2VydF91bnJlYWNoZWQoInN0cmVhbXMgc2hvdWxkIG5vdCB1c2UgdGhpcyBQcm9taXNlLnBy
b3RvdHlwZS5jYXRjaCBtZXRob2QiKTsgfTsKKworICAgICAgICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSgpOworICAgICAgICBycy50ZWUoKTsKKyAgICB9IGZpbmFsbHkgeworICAgICAg
ICBQcm9taXNlLnByb3RvdHlwZS5jYXRjaCA9IFByb21pc2VDYXRjaEJhY2t1cDsKKyAgICAgICAg
UHJvbWlzZS5wcm90b3R5cGUudGhlbiA9IFByb21pc2VUaGVuQmFja3VwOworICAgIH0KK30sICdT
dHJlYW1zIGFuZCBwcm9taXNlczogcmVwbGFjZSBjYXRjaCBtZXRob2QgaW4gUHJvbWlzZSBwcm90
b3R5cGUnKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBmdW5jdGlvbiBjcmVhdGVNYW5nbGVk
UHJvbWlzZSgpIHsKKyAgICAgICAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOwor
ICAgICAgICBwcm9taXNlLnRoZW4gPSBmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgic3Ry
ZWFtcyBzaG91bGQgbm90IHVzZSB0aGlzIHByb21pc2UgdGhlbiBtZXRob2QiKTsgfTsKKyAgICAg
ICAgcmV0dXJuIHByb21pc2U7CisgICAgfQorICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7IHN0YXJ0
OiBmdW5jdGlvbigpIHsgcmV0dXJuIGNyZWF0ZU1hbmdsZWRQcm9taXNlKCk7IH0gfSkKKyAgICBu
ZXcgV3JpdGFibGVTdHJlYW0oeyBzdGFydDogZnVuY3Rpb24oKSB7IHJldHVybiBjcmVhdGVNYW5n
bGVkUHJvbWlzZSgpOyB9IH0pCit9LCAnU3RyZWFtcyBhbmQgcHJvbWlzZXM6IHJlcGxhY2UgdGhl
biBtZXRob2QgaW4gcHJvbWlzZSBvYmplY3QnKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBj
b25zdCBOdW1iZXJCYWNrdXAgPSBOdW1iZXI7CisgICAgY29uc3QgTnVtYmVySXNOYU5CYWNrdXAg
PSBOdW1iZXIuaXNOYU47CisgICAgY29uc3QgTnVtYmVySXNGaW5pdGVCYWNrdXAgPSBOdW1iZXIu
aXNGaW5pdGU7CisKKyAgICB0cnkgeworICAgICAgICBOdW1iZXIuaXNOYU4gPSBmdW5jdGlvbigp
IHsgYXNzZXJ0X3VucmVhY2hlZCgic3RyZWFtcyBzaG91bGQgbm90IHVzZSB0aGlzIE51bWJlci5p
c05hTiBtZXRob2QiKTsgfTsKKyAgICAgICAgTnVtYmVyLmlzRmluaXRlID0gZnVuY3Rpb24oKSB7
IGFzc2VydF91bnJlYWNoZWQoInN0cmVhbXMgc2hvdWxkIG5vdCB1c2UgdGhpcyBOdW1iZXIuaXNG
aW5pdGUgbWV0aG9kIik7IH07CisgICAgICAgIE51bWJlciA9IG51bGw7CisKKyAgICAgICAgbmV3
IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjb250cm9sbGVy
KSB7CisgICAgICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCJzbWFsbCBwb3RhdG8iKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSwgeworICAgICAgICAgICAgc2l6ZTogZnVuY3Rpb24o
Y2h1bmspIHsgcmV0dXJuIDI7IH0sCisgICAgICAgICAgICBoaWdoV2F0ZXJNYXJrOiAxCisgICAg
ICAgIH0pOworCisgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgTnVtYmVyID0gTnVtYmVyQmFja3Vw
OworICAgICAgICBOdW1iZXIuaXNOYU4gPSBOdW1iZXJJc05hTkJhY2t1cDsKKyAgICAgICAgTnVt
YmVyLmlzRmluaXRlID0gTnVtYmVySXNGaW5pdGVCYWNrdXA7CisgICAgfQorfSwgJ1N0cmVhbXMg
c2hvdWxkIG5vdCBkaXJlY3RseSB1c2UgTnVtYmVyIGFuZCByZWxhdGVkIG1ldGhvZHMnKTsKK3Rl
c3QoZnVuY3Rpb24oKSB7CisgICAgY29uc3QgUmVhZGFibGVTdHJlYW1HZXRSZWFkZXJCYWNrdXAg
PSBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuZ2V0UmVhZGVyOworCisgICAgdHJ5IHsKKyAgICAg
ICAgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmdldFJlYWRlciA9IGZ1bmN0aW9uKCkgeyBhc3Nl
cnRfdW5yZWFjaGVkKCJzdHJlYW1zIHNob3VsZCBub3QgdXNlIHRoaXMgUmVhZGFibGVTdHJlYW0u
Z2V0UmVhZGVyIG1ldGhvZCIpOyB9OworICAgICAgICBuZXcgUmVhZGFibGVTdHJlYW0oKS50ZWUo
KTsKKyAgICB9IGZpbmFsbHkgeworICAgICAgICBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuZ2V0
UmVhZGVyID0gUmVhZGFibGVTdHJlYW1HZXRSZWFkZXJCYWNrdXA7CisgICAgfQorfSwgJ1N0cmVh
bXMgc2hvdWxkIG5vdCBkaXJlY3RseSB1c2UgUmVhZGFibGVTdHJlYW0gcHVibGljIEFQSXMnKTsK
KworcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKCkgeworICAgIGNvbnN0IFJlYWRhYmxlU3RyZWFtUmVh
ZGVyID0gbmV3IFJlYWRhYmxlU3RyZWFtKCkuZ2V0UmVhZGVyKCkuY29uc3RydWN0b3I7CisgICAg
Y29uc3QgUmVhZGFibGVTdHJlYW1SZWFkZXJSZWFkQmFja3VwID0gUmVhZGFibGVTdHJlYW1SZWFk
ZXIucHJvdG90eXBlLnJlYWQ7CisKKyAgICBmdW5jdGlvbiBjbGVhblRlc3QoKSB7CisgICAgICAg
IFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5yZWFkID0gUmVhZGFibGVTdHJlYW1SZWFk
ZXJSZWFkQmFja3VwOworICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIFJlYWRhYmxlU3RyZWFt
UmVhZGVyLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoInN0
cmVhbXMgc2hvdWxkIG5vdCB1c2UgdGhpcyBSZWFkYWJsZVN0cmVhbVJlYWRlci5yZWFkIG1ldGhv
ZCIpOyB9OworCisgICAgICAgIFtzMSwgczJdID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAg
ICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjb250cm9sbGVyKSB7CisgICAgICAgICAgICAgICAgY29u
dHJvbGxlci5jbG9zZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9KS50ZWUoKTsKKyAgICAg
ICAgcmV0dXJuIHMxLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKGNsZWFuVGVzdCwgY2xlYW5UZXN0
KTsKKworICAgIH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICAgIGNsZWFuVGVzdCgpOworICAgICAg
ICBhc3NlcnRfdW5yZWFjaGVkKCJ0ZXN0IHNob3VsZCBub3QgdGhyb3ciKTsKKyAgICB9Cit9LCAn
U3RyZWFtcyBzaG91bGQgbm90IGRpcmVjdGx5IHVzZSBSZWFkYWJsZVN0cmVhbVJlYWRlciByZWFk
IHB1YmxpYyBBUEknKTsKKworcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKCkgeworICAgIGNvbnN0IEFy
cmF5UHVzaEJhY2t1cCA9IEFycmF5LnByb3RvdHlwZS5wdXNoOworICAgIGNvbnN0IEFycmF5U2hp
ZnRCYWNrdXAgPSBBcnJheS5wcm90b3R5cGUuc2hpZnQ7CisKKyAgICAvLyBVc2Ugb2YgdGVzdGlu
ZyB2YXJpYWJsZSB0byB0cnkgbm90IG1lc3NpbmcgdXAgdGVzdGhhcm5lc3MuanMgY29kZS4KKyAg
ICAvLyBGSVhNRTogdGhpcyBhcHByb2FjaCBpcyBmYXIgZnJvbSBwZXJmZWN0OiBwdXNoIGlzIHVz
ZWQgaW4gY2FzZSBhbiBhc3NlcnQgZmFpbHMuCisgICAgLy8gQnV0IGNsZWFuVGVzdCB3aWxsIG5v
dCBiZSBjYWxsZWQgYW5kIHdlIG1heSBlbmQtdXAgbWFzayB0aGUgcmVhbCBhc3NlcnRpb24gZmFp
bHVyZSBieSBiZWxvdyBhc3NlcnRfdW5yZWFjaGVkIG1lc3NhZ2VzLgorICAgIC8vIFdlIG1pZ2h0
IHdhbnQgdG8gZWl0aGVyIGltcHJvdmUgdGVzdGhhcm5lc3MuanMgb3IgIG1vdmUgdGhlc2UgdGVz
dHMgb3V0IG9mIHRlc3RoYXJuZXNzLmpzLgorICAgIGxldCB0ZXN0aW5nID0gdHJ1ZTsKKyAgICBB
cnJheS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAodGVzdGluZykg
eworICAgICAgICAgICAgdGVzdGluZyA9IGZhbHNlOworICAgICAgICAgICAgYXNzZXJ0X3VucmVh
Y2hlZCgiQXJyYXkucHJvdG90eXBlLnB1c2ggY2FsbGVkIik7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIEFycmF5UHVzaEJhY2t1cC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgIH0KKwor
ICAgIEFycmF5LnByb3RvdHlwZS5zaGlmdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAodGVz
dGluZykgeworICAgICAgICAgICAgdGVzdGluZyA9IGZhbHNlOworICAgICAgICAgICAgYXNzZXJ0
X3VucmVhY2hlZCgiQXJyYXkucHJvdG90eXBlLnNoaWZ0IGNhbGxlZCIpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBBcnJheVNoaWZ0QmFja3VwLmNhbGwodGhpcywgYXJndW1lbnRzKTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBjbGVhblRlc3QoKSB7CisgICAgICAgIEFycmF5LnByb3RvdHlw
ZS5wdXNoID0gQXJyYXlQdXNoQmFja3VwOworICAgICAgICBBcnJheS5wcm90b3R5cGUuc2hpZnQg
PSBBcnJheVNoaWZ0QmFja3VwOworICAgIH0KKyAgICB0cnkgeworICAgICAgICBsZXQgX2NvbnRy
b2xsZXI7CisgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAg
ICAgICAgICBzdGFydDogZnVuY3Rpb24oY29udHJvbGxlcikgeworICAgICAgICAgICAgICAgIF9j
b250cm9sbGVyID0gY29udHJvbGxlcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkuZ2V0UmVh
ZGVyKCk7CisgICAgICAgIC8vIGNoZWNraW5nIHdoZXRoZXIgcHVzaGluZy9zaGlmdGluZyBwZW5k
aW5nIHJlYWQgcHJvbWlzZXMgaXMgc2hpZWxkZWQuCisgICAgICAgIGNvbnN0IHJlYWRQcm9taXNl
ID0gcmVhZGVyLnJlYWQoKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhyZXN1bHQudmFsdWUsICJoYWxmIGJha2VkIHBvdGF0byIpOworICAgICAgICAg
ICAgLy8gY2hlY2tpbmcgd2hldGhlciBwdXNoaW5nL3NoaWZ0aW5nIGVucXVldWVkIHZhbHVlcyBp
cyBzaGllbGRlZC4KKyAgICAgICAgICAgIF9jb250cm9sbGVyLmVucXVldWUoImZ1bGx5IGJha2Vk
IHBvdGF0byIpOworICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihmdW5jdGlv
bihyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC52YWx1ZSwg
ImZ1bGx5IGJha2VkIHBvdGF0byIpOworICAgICAgICAgICAgICAgIGNsZWFuVGVzdCgpOworICAg
ICAgICAgICAgfSwgY2xlYW5UZXN0KTsKKyAgICAgICAgfSwgY2xlYW5UZXN0KTsKKyAgICAgICAg
X2NvbnRyb2xsZXIuZW5xdWV1ZSgiaGFsZiBiYWtlZCBwb3RhdG8iKTsKKyAgICAgICAgcmV0dXJu
IHJlYWRQcm9taXNlOworICAgIH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICAgIGNsZWFuVGVzdCgp
OworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpOworICAgIH0KK30sICdTdHJl
YW1zIHNob3VsZCBub3QgZGlyZWN0bHkgdXNlIGFycmF5IHB1YmxpYyBBUElzJyk7Cis8L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvc2hhZG93aW5nLWRlZmluZVByb3Bl
cnR5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvc2hhZG93aW5nLWRlZmluZVBy
b3BlcnR5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDUxNDUxNTJjZTRiZTQyMDBiMGI5YjE2
N2FjN2ViZmQ5MzI1ZDBiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9z
aGFkb3dpbmctZGVmaW5lUHJvcGVydHktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGhp
cyB0ZXN0IHNob3VsZCBydW4gd2l0aG91dCB0aHJvd2luZyBhbiBleGNlcHRpb24uCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9zaGFk
b3dpbmctZGVmaW5lUHJvcGVydHkuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvc2hhZG93aW5n
LWRlZmluZVByb3BlcnR5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWMwYWY4ZGMxNjJjMWY5MTY3YjRmMDMw
MTQzYWEzOWZiNGU4ODI3ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMv
c2hhZG93aW5nLWRlZmluZVByb3BlcnR5Lmh0bWwKQEAgLTAsMCArMSwxOSBAQAorPCFET0NUWVBF
IEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlv
bigiVGhpcyB0ZXN0IHNob3VsZCBydW4gd2l0aG91dCB0aHJvd2luZyBhbiBleGNlcHRpb24uIik7
CisKK09iamVjdC5kZWZpbmVQcm9wZXJ0eSA9IGZ1bmN0aW9uKCkgeworICAgIHRocm93ICJVc2Vy
IG92ZXJyaWRlbiI7Cit9OworCituZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSh7fSk7Citu
ZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koe30pOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3N0cmVhbXMtcHJvbWlzZXMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9zdHJlYW1zLXByb21pc2VzLWV4cGVjdGVkLnR4dApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjAxNzllNjZlZmRlYWEwZDQwNjI3YTAwZGZi
ZDA1M2JmN2EzZTcwYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3N0cmVhbXMtcHJvbWlzZXMtZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotCi1QQVNTIFN0cmVhbXMgYW5kIHByb21pc2Vz
OiByZXBsYWNlIFByb21pc2UgY29uc3RydWN0b3IgCi1QQVNTIFN0cmVhbXMgYW5kIHByb21pc2Vz
OiByZXBsYWNlIFByb21pc2UucmVzb2x2ZSAKLVBBU1MgU3RyZWFtcyBhbmQgcHJvbWlzZXM6IHJl
cGxhY2UgUHJvbWlzZS5yZWplY3QgCi1QQVNTIFN0cmVhbXMgYW5kIHByb21pc2VzOiByZXBsYWNl
IHByb3RvdHlwZSBvZiBhIHByb21pc2Ugb2JqZWN0IAotUEFTUyBTdHJlYW1zIGFuZCBwcm9taXNl
czogcmVwbGFjZSB0aGVuIG1ldGhvZCBpbiBQcm9taXNlIHByb3RvdHlwZSAKLVBBU1MgU3RyZWFt
cyBhbmQgcHJvbWlzZXM6IHJlcGxhY2UgY2F0Y2ggbWV0aG9kIGluIFByb21pc2UgcHJvdG90eXBl
IAotUEFTUyBTdHJlYW1zIGFuZCBwcm9taXNlczogcmVwbGFjZSB0aGVuIG1ldGhvZCBpbiBwcm9t
aXNlIG9iamVjdCAKLVBBU1MgU3RyZWFtcyBzaG91bGQgbm90IGRpcmVjdGx5IHVzZSBOdW1iZXIg
YW5kIHJlbGF0ZWQgbWV0aG9kcyAKLVBBU1MgU3RyZWFtcyBzaG91bGQgbm90IGRpcmVjdGx5IHVz
ZSBSZWFkYWJsZVN0cmVhbSBwdWJsaWMgQVBJcyAKLVBBU1MgU3RyZWFtcyBzaG91bGQgbm90IGRp
cmVjdGx5IHVzZSBSZWFkYWJsZVN0cmVhbVJlYWRlciByZWFkIHB1YmxpYyBBUEkgCi1QQVNTIFN0
cmVhbXMgc2hvdWxkIG5vdCBkaXJlY3RseSB1c2UgYXJyYXkgcHVibGljIEFQSXMgCi0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvc3RyZWFtcy1wcm9taXNlcy5odG1sIGIvTGF5b3V0
VGVzdHMvc3RyZWFtcy9zdHJlYW1zLXByb21pc2VzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDMzZTBmZDFhZTVhZDVlODcyNmYxZDZiNTU3MjE3Yzg5NzM0ZDlhMWIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvc3Ry
ZWFtcy9zdHJlYW1zLXByb21pc2VzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMDYgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08c2NyaXB0IHNyYz0nLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzJz48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPScuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMnPjwvc2NyaXB0PgotPHNjcmlwdD4KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgY29uc3Qg
UHJvbWlzZUJhY2t1cCA9IFByb21pc2U7Ci0KLSAgICB0cnkgewotICAgICAgICBQcm9taXNlID0g
ZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoInN0cmVhbXMgc2hvdWxkIG5vdCB1c2UgdGhp
cyBQcm9taXNlIG9iamVjdCIpOyB9OwotCi0gICAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbSgpOwot
ICAgICAgICBuZXcgV3JpdGFibGVTdHJlYW0oKTsKLSAgICB9IGZpbmFsbHkgewotICAgICAgICBQ
cm9taXNlID0gUHJvbWlzZUJhY2t1cDsKLSAgICB9Ci19LCAnU3RyZWFtcyBhbmQgcHJvbWlzZXM6
IHJlcGxhY2UgUHJvbWlzZSBjb25zdHJ1Y3RvcicpOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICAg
IGNvbnN0IFByb21pc2VSZXNvbHZlQmFja3VwID0gUHJvbWlzZS5yZXNvbHZlOwotCi0gICAgdHJ5
IHsKLSAgICAgICAgUHJvbWlzZS5yZXNvbHZlID0gZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNo
ZWQoInN0cmVhbXMgc2hvdWxkIG5vdCB1c2UgdGhpcyBQcm9taXNlLnJlc29sdmUgbWV0aG9kIik7
IH07Ci0KLSAgICAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci0gICAgICAgIG5ldyBXcml0YWJs
ZVN0cmVhbSgpOwotICAgIH0gZmluYWxseSB7Ci0gICAgICAgIFByb21pc2UucmVzb2x2ZSA9IFBy
b21pc2VSZXNvbHZlQmFja3VwOwotICAgIH0KLX0sICdTdHJlYW1zIGFuZCBwcm9taXNlczogcmVw
bGFjZSBQcm9taXNlLnJlc29sdmUnKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgICBjb25zdCBQ
cm9taXNlUmVqZWN0QmFja3VwID0gUHJvbWlzZS5yZWplY3Q7Ci0KLSAgICB0cnkgewotICAgICAg
ICBQcm9taXNlLnJlamVjdCA9IGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCJzdHJlYW1z
IHNob3VsZCBub3QgdXNlIHRoaXMgUHJvbWlzZS5yZWplY3QgbWV0aG9kIik7IH07Ci0KLSAgICAg
ICAgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmNhbmNlbC5jYWxsKHt9LCAicmVhc29uIik7Ci0g
ICAgICAgIFdyaXRhYmxlU3RyZWFtLnByb3RvdHlwZS5hYm9ydC5jYWxsKHt9LCAicmVhc29uIik7
Ci0gICAgfSBmaW5hbGx5IHsKLSAgICAgICAgUHJvbWlzZS5yZWplY3QgPSBQcm9taXNlUmVqZWN0
QmFja3VwOwotICAgIH0KLX0sICdTdHJlYW1zIGFuZCBwcm9taXNlczogcmVwbGFjZSBQcm9taXNl
LnJlamVjdCcpOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICAgIGZ1bmN0aW9uIGNyZWF0ZU1hbmds
ZWRQcm9taXNlKCkgewotICAgICAgICBjb25zdCBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7
Ci0gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihwcm9taXNlLCB7IGNvbnN0cnVjdG9yOiBQ
cm9taXNlLCB0aGVuOiBmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgic3RyZWFtcyBzaG91
bGQgbm90IHVzZSB0aGlzIHByb21pc2UgdGhlbiBtZXRob2QiKTsgfSB9KTsKLSAgICAgICAgcmV0
dXJuIHByb21pc2U7Ci0gICAgfQotICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7IHN0YXJ0OiBmdW5j
dGlvbigpIHsgcmV0dXJuIGNyZWF0ZU1hbmdsZWRQcm9taXNlKCk7IH0gfSkKLSAgICBuZXcgV3Jp
dGFibGVTdHJlYW0oeyBzdGFydDogZnVuY3Rpb24oKSB7IHJldHVybiBjcmVhdGVNYW5nbGVkUHJv
bWlzZSgpOyB9IH0pCi19LCAnU3RyZWFtcyBhbmQgcHJvbWlzZXM6IHJlcGxhY2UgcHJvdG90eXBl
IG9mIGEgcHJvbWlzZSBvYmplY3QnKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgICBjb25zdCBQ
cm9taXNlVGhlbkJhY2t1cCA9IFByb21pc2UucHJvdG90eXBlLnRoZW47Ci0KLSAgICB0cnkgewot
ICAgICAgICBQcm9taXNlLnByb3RvdHlwZS50aGVuID0gZnVuY3Rpb24oKSB7IGFzc2VydF91bnJl
YWNoZWQoInN0cmVhbXMgc2hvdWxkIG5vdCB1c2UgdGhpcyBQcm9taXNlLnByb3RvdHlwZS50aGVu
IG1ldGhvZCIpOyB9OwotCi0gICAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbSgpOwotICAgICAgICBu
ZXcgV3JpdGFibGVTdHJlYW0oKTsKLSAgICB9IGZpbmFsbHkgewotICAgICAgICBQcm9taXNlLnBy
b3RvdHlwZS50aGVuID0gUHJvbWlzZVRoZW5CYWNrdXA7Ci0gICAgfQotfSwgJ1N0cmVhbXMgYW5k
IHByb21pc2VzOiByZXBsYWNlIHRoZW4gbWV0aG9kIGluIFByb21pc2UgcHJvdG90eXBlJyk7Ci0K
LXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgY29uc3QgUHJvbWlzZUNhdGNoQmFja3VwID0gUHJvbWlz
ZS5wcm90b3R5cGUuY2F0Y2g7Ci0gICAgY29uc3QgUHJvbWlzZVRoZW5CYWNrdXAgPSBQcm9taXNl
LnByb3RvdHlwZS50aGVuOwotCi0gICAgdHJ5IHsKLSAgICAgICAgUHJvbWlzZS5wcm90b3R5cGUu
Y2F0Y2ggPSBmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgic3RyZWFtcyBzaG91bGQgbm90
IHVzZSB0aGlzIFByb21pc2UucHJvdG90eXBlLmNhdGNoIG1ldGhvZCIpOyB9OwotICAgICAgICBQ
cm9taXNlLnByb3RvdHlwZS50aGVuID0gZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoInN0
cmVhbXMgc2hvdWxkIG5vdCB1c2UgdGhpcyBQcm9taXNlLnByb3RvdHlwZS5jYXRjaCBtZXRob2Qi
KTsgfTsKLQotICAgICAgICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwotICAgICAg
ICBycy50ZWUoKTsKLSAgICB9IGZpbmFsbHkgewotICAgICAgICBQcm9taXNlLnByb3RvdHlwZS5j
YXRjaCA9IFByb21pc2VDYXRjaEJhY2t1cDsKLSAgICAgICAgUHJvbWlzZS5wcm90b3R5cGUudGhl
biA9IFByb21pc2VUaGVuQmFja3VwOwotICAgIH0KLX0sICdTdHJlYW1zIGFuZCBwcm9taXNlczog
cmVwbGFjZSBjYXRjaCBtZXRob2QgaW4gUHJvbWlzZSBwcm90b3R5cGUnKTsKLQotdGVzdChmdW5j
dGlvbigpIHsKLSAgICBmdW5jdGlvbiBjcmVhdGVNYW5nbGVkUHJvbWlzZSgpIHsKLSAgICAgICAg
Y29uc3QgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOwotICAgICAgICBwcm9taXNlLnRoZW4g
PSBmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgic3RyZWFtcyBzaG91bGQgbm90IHVzZSB0
aGlzIHByb21pc2UgdGhlbiBtZXRob2QiKTsgfTsKLSAgICAgICAgcmV0dXJuIHByb21pc2U7Ci0g
ICAgfQotICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7IHN0YXJ0OiBmdW5jdGlvbigpIHsgcmV0dXJu
IGNyZWF0ZU1hbmdsZWRQcm9taXNlKCk7IH0gfSkKLSAgICBuZXcgV3JpdGFibGVTdHJlYW0oeyBz
dGFydDogZnVuY3Rpb24oKSB7IHJldHVybiBjcmVhdGVNYW5nbGVkUHJvbWlzZSgpOyB9IH0pCi19
LCAnU3RyZWFtcyBhbmQgcHJvbWlzZXM6IHJlcGxhY2UgdGhlbiBtZXRob2QgaW4gcHJvbWlzZSBv
YmplY3QnKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgICBjb25zdCBOdW1iZXJCYWNrdXAgPSBO
dW1iZXI7Ci0gICAgY29uc3QgTnVtYmVySXNOYU5CYWNrdXAgPSBOdW1iZXIuaXNOYU47Ci0gICAg
Y29uc3QgTnVtYmVySXNGaW5pdGVCYWNrdXAgPSBOdW1iZXIuaXNGaW5pdGU7Ci0KLSAgICB0cnkg
ewotICAgICAgICBOdW1iZXIuaXNOYU4gPSBmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgi
c3RyZWFtcyBzaG91bGQgbm90IHVzZSB0aGlzIE51bWJlci5pc05hTiBtZXRob2QiKTsgfTsKLSAg
ICAgICAgTnVtYmVyLmlzRmluaXRlID0gZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoInN0
cmVhbXMgc2hvdWxkIG5vdCB1c2UgdGhpcyBOdW1iZXIuaXNGaW5pdGUgbWV0aG9kIik7IH07Ci0g
ICAgICAgIE51bWJlciA9IG51bGw7Ci0KLSAgICAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAg
ICAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjb250cm9sbGVyKSB7Ci0gICAgICAgICAgICAgICAg
Y29udHJvbGxlci5lbnF1ZXVlKCJzbWFsbCBwb3RhdG8iKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfSwgewotICAgICAgICAgICAgc2l6ZTogZnVuY3Rpb24oY2h1bmspIHsgcmV0dXJuIDI7IH0s
Ci0gICAgICAgICAgICBoaWdoV2F0ZXJNYXJrOiAxCi0gICAgICAgIH0pOwotCi0gICAgfSBmaW5h
bGx5IHsKLSAgICAgICAgTnVtYmVyID0gTnVtYmVyQmFja3VwOwotICAgICAgICBOdW1iZXIuaXNO
YU4gPSBOdW1iZXJJc05hTkJhY2t1cDsKLSAgICAgICAgTnVtYmVyLmlzRmluaXRlID0gTnVtYmVy
SXNGaW5pdGVCYWNrdXA7Ci0gICAgfQotfSwgJ1N0cmVhbXMgc2hvdWxkIG5vdCBkaXJlY3RseSB1
c2UgTnVtYmVyIGFuZCByZWxhdGVkIG1ldGhvZHMnKTsKLXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAg
Y29uc3QgUmVhZGFibGVTdHJlYW1HZXRSZWFkZXJCYWNrdXAgPSBSZWFkYWJsZVN0cmVhbS5wcm90
b3R5cGUuZ2V0UmVhZGVyOwotCi0gICAgdHJ5IHsKLSAgICAgICAgUmVhZGFibGVTdHJlYW0ucHJv
dG90eXBlLmdldFJlYWRlciA9IGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCJzdHJlYW1z
IHNob3VsZCBub3QgdXNlIHRoaXMgUmVhZGFibGVTdHJlYW0uZ2V0UmVhZGVyIG1ldGhvZCIpOyB9
OwotICAgICAgICBuZXcgUmVhZGFibGVTdHJlYW0oKS50ZWUoKTsKLSAgICB9IGZpbmFsbHkgewot
ICAgICAgICBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuZ2V0UmVhZGVyID0gUmVhZGFibGVTdHJl
YW1HZXRSZWFkZXJCYWNrdXA7Ci0gICAgfQotfSwgJ1N0cmVhbXMgc2hvdWxkIG5vdCBkaXJlY3Rs
eSB1c2UgUmVhZGFibGVTdHJlYW0gcHVibGljIEFQSXMnKTsKLQotcHJvbWlzZV90ZXN0KGZ1bmN0
aW9uKCkgewotICAgIGNvbnN0IFJlYWRhYmxlU3RyZWFtUmVhZGVyID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKCkuZ2V0UmVhZGVyKCkuY29uc3RydWN0b3I7Ci0gICAgY29uc3QgUmVhZGFibGVTdHJlYW1S
ZWFkZXJSZWFkQmFja3VwID0gUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLnJlYWQ7Ci0K
LSAgICBmdW5jdGlvbiBjbGVhblRlc3QoKSB7Ci0gICAgICAgIFJlYWRhYmxlU3RyZWFtUmVhZGVy
LnByb3RvdHlwZS5yZWFkID0gUmVhZGFibGVTdHJlYW1SZWFkZXJSZWFkQmFja3VwOwotICAgIH0K
LQotICAgIHRyeSB7Ci0gICAgICAgIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5yZWFk
ID0gZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoInN0cmVhbXMgc2hvdWxkIG5vdCB1c2Ug
dGhpcyBSZWFkYWJsZVN0cmVhbVJlYWRlci5yZWFkIG1ldGhvZCIpOyB9OwotCi0gICAgICAgIFtz
MSwgczJdID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgICAgIHN0YXJ0OiBmdW5jdGlv
bihjb250cm9sbGVyKSB7Ci0gICAgICAgICAgICAgICAgY29udHJvbGxlci5jbG9zZSgpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9KS50ZWUoKTsKLSAgICAgICAgcmV0dXJuIHMxLmdldFJlYWRl
cigpLmNsb3NlZC50aGVuKGNsZWFuVGVzdCwgY2xlYW5UZXN0KTsKLQotICAgIH0gY2F0Y2ggKGVy
cm9yKSB7Ci0gICAgICAgIGNsZWFuVGVzdCgpOwotICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJ0
ZXN0IHNob3VsZCBub3QgdGhyb3ciKTsKLSAgICB9Ci19LCAnU3RyZWFtcyBzaG91bGQgbm90IGRp
cmVjdGx5IHVzZSBSZWFkYWJsZVN0cmVhbVJlYWRlciByZWFkIHB1YmxpYyBBUEknKTsKLQotcHJv
bWlzZV90ZXN0KGZ1bmN0aW9uKCkgewotICAgIGNvbnN0IEFycmF5UHVzaEJhY2t1cCA9IEFycmF5
LnByb3RvdHlwZS5wdXNoOwotICAgIGNvbnN0IEFycmF5U2hpZnRCYWNrdXAgPSBBcnJheS5wcm90
b3R5cGUuc2hpZnQ7Ci0KLSAgICAvLyBVc2Ugb2YgdGVzdGluZyB2YXJpYWJsZSB0byB0cnkgbm90
IG1lc3NpbmcgdXAgdGVzdGhhcm5lc3MuanMgY29kZS4KLSAgICAvLyBGSVhNRTogdGhpcyBhcHBy
b2FjaCBpcyBmYXIgZnJvbSBwZXJmZWN0OiBwdXNoIGlzIHVzZWQgaW4gY2FzZSBhbiBhc3NlcnQg
ZmFpbHMuCi0gICAgLy8gQnV0IGNsZWFuVGVzdCB3aWxsIG5vdCBiZSBjYWxsZWQgYW5kIHdlIG1h
eSBlbmQtdXAgbWFzayB0aGUgcmVhbCBhc3NlcnRpb24gZmFpbHVyZSBieSBiZWxvdyBhc3NlcnRf
dW5yZWFjaGVkIG1lc3NhZ2VzLgotICAgIC8vIFdlIG1pZ2h0IHdhbnQgdG8gZWl0aGVyIGltcHJv
dmUgdGVzdGhhcm5lc3MuanMgb3IgIG1vdmUgdGhlc2UgdGVzdHMgb3V0IG9mIHRlc3RoYXJuZXNz
LmpzLgotICAgIGxldCB0ZXN0aW5nID0gdHJ1ZTsKLSAgICBBcnJheS5wcm90b3R5cGUucHVzaCA9
IGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAodGVzdGluZykgewotICAgICAgICAgICAgdGVzdGlu
ZyA9IGZhbHNlOwotICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgiQXJyYXkucHJvdG90eXBl
LnB1c2ggY2FsbGVkIik7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIEFycmF5UHVzaEJhY2t1
cC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwotICAgIH0KLQotICAgIEFycmF5LnByb3RvdHlwZS5z
aGlmdCA9IGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAodGVzdGluZykgewotICAgICAgICAgICAg
dGVzdGluZyA9IGZhbHNlOwotICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgiQXJyYXkucHJv
dG90eXBlLnNoaWZ0IGNhbGxlZCIpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBBcnJheVNo
aWZ0QmFja3VwLmNhbGwodGhpcywgYXJndW1lbnRzKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBj
bGVhblRlc3QoKSB7Ci0gICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoID0gQXJyYXlQdXNoQmFj
a3VwOwotICAgICAgICBBcnJheS5wcm90b3R5cGUuc2hpZnQgPSBBcnJheVNoaWZ0QmFja3VwOwot
ICAgIH0KLSAgICB0cnkgewotICAgICAgICBsZXQgX2NvbnRyb2xsZXI7Ci0gICAgICAgIGNvbnN0
IHJlYWRlciA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgICAgICBzdGFydDogZnVuY3Rp
b24oY29udHJvbGxlcikgewotICAgICAgICAgICAgICAgIF9jb250cm9sbGVyID0gY29udHJvbGxl
cjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSkuZ2V0UmVhZGVyKCk7Ci0gICAgICAgIC8vIGNo
ZWNraW5nIHdoZXRoZXIgcHVzaGluZy9zaGlmdGluZyBwZW5kaW5nIHJlYWQgcHJvbWlzZXMgaXMg
c2hpZWxkZWQuCi0gICAgICAgIGNvbnN0IHJlYWRQcm9taXNlID0gcmVhZGVyLnJlYWQoKS50aGVu
KGZ1bmN0aW9uKHJlc3VsdCkgewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQudmFs
dWUsICJoYWxmIGJha2VkIHBvdGF0byIpOwotICAgICAgICAgICAgLy8gY2hlY2tpbmcgd2hldGhl
ciBwdXNoaW5nL3NoaWZ0aW5nIGVucXVldWVkIHZhbHVlcyBpcyBzaGllbGRlZC4KLSAgICAgICAg
ICAgIF9jb250cm9sbGVyLmVucXVldWUoImZ1bGx5IGJha2VkIHBvdGF0byIpOwotICAgICAgICAg
ICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC52YWx1ZSwgImZ1bGx5IGJha2VkIHBvdGF0byIp
OwotICAgICAgICAgICAgICAgIGNsZWFuVGVzdCgpOwotICAgICAgICAgICAgfSwgY2xlYW5UZXN0
KTsKLSAgICAgICAgfSwgY2xlYW5UZXN0KTsKLSAgICAgICAgX2NvbnRyb2xsZXIuZW5xdWV1ZSgi
aGFsZiBiYWtlZCBwb3RhdG8iKTsKLSAgICAgICAgcmV0dXJuIHJlYWRQcm9taXNlOwotICAgIH0g
Y2F0Y2ggKGVycm9yKSB7Ci0gICAgICAgIGNsZWFuVGVzdCgpOwotICAgICAgICByZXR1cm4gUHJv
bWlzZS5yZWplY3QoZXJyb3IpOwotICAgIH0KLX0sICdTdHJlYW1zIHNob3VsZCBub3QgZGlyZWN0
bHkgdXNlIGFycmF5IHB1YmxpYyBBUElzJyk7Ci08L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275270</attachid>
            <date>2016-03-31 00:29:29 -0700</date>
            <delta_ts>2016-03-31 01:31:23 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-155967-20160331092932.patch</filename>
            <type>text/plain</type>
            <size>28969</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4ODg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjlkYjk3NGQ5ZjYyZTM1
YzM2NDZlNDllZWI3NmM3OGQ4MjkwODJiYS4uZDU0MDdiNTg4MjhjMjBkMTYyZGE1MGIyZTg0N2Iy
MjRjMWQwODRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE2LTAzLTMwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgUmVtb3Zl
IGZvckVhY2ggdXNlIGZyb20gRmV0Y2ggSGVhZGVycyBidWlsdGluIGNvbnN0cnVjdG9yCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU5NjcKKworICAg
ICAgICBSZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgVGVzdHM6IGZldGNo
L3NoYWRvd2luZy1mb3JFYWNoLmh0bWwKKyAgICAgICAgICAgICAgIHN0cmVhbXMvc2hhZG93aW5n
LVByb21pc2UuaHRtbAorICAgICAgICAgICAgICAgc3RyZWFtcy9zaGFkb3dpbmctZGVmaW5lUHJv
cGVydHkuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaWRsOiBB
ZGRpbmcgZmlsbEZyb21KUyBwcml2YXRlIG1ldGhvZC4KKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoSGVhZGVycy5qczoKKyAgICAgICAgKGluaXRpYWxpemVGZXRjaEhlYWRlcnMpOiBVc2lu
ZyBmaWxsRnJvbUpTIHByaXZhdGUgbWV0aG9kLiBVc2luZworICAgICAgICBpbnN0YW5jZW9mIHRl
c3QgdG8gY2hlY2sgd2hldGhlciBwYXJhbWV0ZXIgaXMgSGVhZGVycyBvciBzdWJjbGFzcyBvZiBp
dC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmg6IEFkZGluZyBm
aWxsRnJvbUpTIHByaXZhdGUgc3ltYm9sLgorCiAyMDE2LTAzLTMwICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IFdpbmRvd3MgYnVpbGQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5pZGwKaW5kZXgg
MmMxM2I3NGZjZTE1NmU1YmZlOWEwOGUyZTlhZDM3ODNkZjVjNjg3NC4uMDU4NjE2OWMzMzEzYzJi
MGM3OTE5MzQ5ZDhiNjg0ZTRkYjA2NDg2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hIZWFkZXJzLmlkbApAQCAtNDMsNCArNDMsNSBAQCBpbnRlcmZhY2UgRmV0Y2hI
ZWFkZXJzIHsKICAgICBpdGVyYWJsZTxET01TdHJpbmcsIERPTVN0cmluZz47CiAKICAgICBbUHJp
dmF0ZSwgUmFpc2VzRXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPWFwcGVuZF0gdm9pZCBhcHBlbmRG
cm9tSlMoRE9NU3RyaW5nIG5hbWUsIERPTVN0cmluZyB2YWx1ZSk7CisgICAgW1ByaXZhdGUsIElt
cGxlbWVudGVkQXM9ZmlsbF0gdm9pZCBmaWxsRnJvbUpTKEZldGNoSGVhZGVycz8gaGVhZGVycyk7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRl
cnMuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5qcwppbmRl
eCBmYzkxYjQxY2I4NWZkMWM3YTAxZTRhNDVlYzJlNjkzNjJlZjg3MTNiLi5jYzdiOTU4Zjg3ZDgz
YWRiM2FlZmZlM2I1YTYxMjJkYmEwYTUxMmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoSGVhZGVycy5qcwpAQCAtMzUsMTAgKzM1LDkgQEAgZnVuY3Rpb24gaW5pdGlh
bGl6ZUZldGNoSGVhZGVycyhoZWFkZXJzSW5pdCkKICAgICBpZiAoIUBpc09iamVjdChoZWFkZXJz
SW5pdCkpCiAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJoZWFkZXJzSW5pdCBtdXN0IGJl
IGFuIG9iamVjdCIpOwogCi0gICAgaWYgKHRoaXMuY29uc3RydWN0b3IgPT09IGhlYWRlcnNJbml0
LmNvbnN0cnVjdG9yKSB7Ci0gICAgICAgICBoZWFkZXJzSW5pdC5mb3JFYWNoKCh2YWx1ZSwgbmFt
ZSkgPT4gewotICAgICAgICAgICAgIHRoaXMuQGFwcGVuZEZyb21KUyhuYW1lLCB2YWx1ZSk7Ci0g
ICAgICAgICB9KTsKKyAgICBpZiAoaGVhZGVyc0luaXQgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVj
dG9yKSB7CisgICAgICAgIHRoaXMuQGZpbGxGcm9tSlMoaGVhZGVyc0luaXQpOworICAgICAgICBy
ZXR1cm4gdGhpczsKICAgICB9CiAKICAgICBpZiAoaGVhZGVyc0luaXQgaW5zdGFuY2VvZiBAQXJy
YXkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWls
dGluTmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFt
ZXMuaAppbmRleCAzMmMzNzg0ZTFmMmUxZjA3YzdjM2I5MDc0ZTk0OWYyYzAwZjk3MDI1Li4zNDkz
ODYzNDc4Y2Q5ZDY3MmVmOWYyZjdhNTRlNjg1ZmJmZjJhNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC0zOCw2ICszOCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhjb250cm9sbGVkUmVhZGFibGVTdHJlYW0p
IFwKICAgICBtYWNybyhjb250cm9sbGVyKSBcCiAgICAgbWFjcm8oZGlzdHVyYmVkKSBcCisgICAg
bWFjcm8oZmlsbEZyb21KUykgXAogICAgIG1hY3JvKGdldFVzZXJNZWRpYUZyb21KUykgXAogICAg
IG1hY3JvKGluaXRpYWxpemVXaXRoKSBcCiAgICAgbWFjcm8ob3BlcmF0aW9ucykgXApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGUwN2M1MjZlYmNmNTRkZDcyZmE2MjdlYWY0ZmI0ODg2YTRlYWQ4NGQuLjBjZWM2MmQ0NWUyMDg5
MjNhODQ4OGQ0NDMyNDJkZGZjNzdiYzkyZTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxNi0w
My0zMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAg
ICAgIFJlbW92ZSBmb3JFYWNoIHVzZSBmcm9tIEZldGNoIEhlYWRlcnMgYnVpbHRpbiBjb25zdHJ1
Y3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1
OTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9zZXBoIFBlY29yYXJvLgorCisgICAgICAgIFJl
bmFtaW5nIHRlc3RzIGNvdmVyaW5nIHVzZXIgc2NyaXB0cyBicmVha2luZyBzb21lIFdlYkNvcmUg
SlMgYnVpbHQgaW5zLgorCisgICAgICAgICogZmV0Y2gvaGVhZGVyLWNvbnN0cnVjdG9yLXN1YmNs
YXNzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmV0Y2gvaGVhZGVyLWNvbnN0cnVj
dG9yLXN1YmNsYXNzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZldGNoL3NoYWRvd2luZy1mb3JF
YWNoLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL3N0cmVhbXMvYnVpbHRp
bi1vdmVycmlkZXMtZXhwZWN0ZWQudHh0LgorICAgICAgICAqIGZldGNoL3NoYWRvd2luZy1mb3JF
YWNoLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9mZXRjaC9idWlsdGluLW92ZXJyaWRl
cy5odG1sLgorICAgICAgICAqIHN0cmVhbXMvc2hhZG93aW5nLVByb21pc2UtZXhwZWN0ZWQudHh0
OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvc3RyZWFtcy9zdHJlYW1zLXByb21pc2VzLWV4cGVj
dGVkLnR4dC4KKyAgICAgICAgKiBzdHJlYW1zL3NoYWRvd2luZy1Qcm9taXNlLmh0bWw6IFJlbmFt
ZWQgZnJvbSBMYXlvdXRUZXN0cy9zdHJlYW1zL3N0cmVhbXMtcHJvbWlzZXMuaHRtbC4KKyAgICAg
ICAgKiBzdHJlYW1zL3NoYWRvd2luZy1kZWZpbmVQcm9wZXJ0eS1leHBlY3RlZC50eHQ6IFJlbmFt
ZWQgZnJvbSBMYXlvdXRUZXN0cy9mZXRjaC9idWlsdGluLW92ZXJyaWRlcy1leHBlY3RlZC50eHQu
CisgICAgICAgICogc3RyZWFtcy9zaGFkb3dpbmctZGVmaW5lUHJvcGVydHkuaHRtbDogUmVuYW1l
ZCBmcm9tIExheW91dFRlc3RzL3N0cmVhbXMvYnVpbHRpbi1vdmVycmlkZXMuaHRtbC4KKwogMjAx
Ni0wMy0zMCAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5kZXgucnU+CiAKICAgICAg
ICAgRml4ZWQgdHlwbyBpbiBmYXN0L2Nzcy92aWV3cG9ydC12bWluLWJvcmRlciB0ZXN0LgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmV0Y2gvYnVpbHRpbi1vdmVycmlkZXMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmV0Y2gvYnVpbHRpbi1vdmVycmlkZXMtZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDUxNDUxNTJjZTRiZTQyMDBiMGI5YjE2N2FjN2Vi
ZmQ5MzI1ZDBiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ZldGNoL2J1aWx0aW4tb3ZlcnJpZGVzLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDkgKzAsMCBAQAotVGhpcyB0ZXN0IHNob3VsZCBydW4gd2l0aG91dCB0aHJv
d2luZyBhbiBleGNlcHRpb24uCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmV0Y2gvYnVpbHRpbi1vdmVycmlkZXMuaHRtbCBiL0xheW91dFRlc3Rz
L2ZldGNoL2J1aWx0aW4tb3ZlcnJpZGVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGY4NmE1ZDQ5MTBlYzdjMDc2ZGNhNDVmYmI4NDEwN2Y3NjU1YjExMDkuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmV0Y2gvYnVp
bHRpbi1vdmVycmlkZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLTwhRE9D
VFlQRSBIVE1MPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotZGVzY3Jp
cHRpb24oIlRoaXMgdGVzdCBzaG91bGQgcnVuIHdpdGhvdXQgdGhyb3dpbmcgYW4gZXhjZXB0aW9u
LiIpOwotCi1BcnJheS5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uKCkgewotICAgIHRocm93
ICJVc2VyIG92ZXJyaWRlbiI7Ci19OwotCi1uZXcgSGVhZGVycyh7YToxfSk7Ci08L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwv
Ym9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ZldGNoL2hlYWRlci1jb25z
dHJ1Y3Rvci1zdWJjbGFzcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mZXRjaC9oZWFkZXIt
Y29uc3RydWN0b3Itc3ViY2xhc3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2YzUzYzc1MmM4
MmJjZWVhZTM1MzE2ZDQ0YThkNTRlNTU4YjEyNGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mZXRjaC9oZWFkZXItY29uc3RydWN0b3Itc3ViY2xhc3MtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTAgQEAKK1RoaXMgdGVzdCBzaG91bGQgY3JlYXRlIGEgSGVhZGVycyBmcm9tIGFuIG9i
amVjdCB3aGljaCBpcyBhIHN1YmNsYXNzIG9mIEhlYWRlcnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIG90aGVySGVhZGVycy5nZXQoJ2EnKSBpcyAiMSIKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mZXRjaC9oZWFkZXItY29uc3RydWN0b3Itc3ViY2xhc3MuaHRtbCBiL0xheW91
dFRlc3RzL2ZldGNoL2hlYWRlci1jb25zdHJ1Y3Rvci1zdWJjbGFzcy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmViYzY3N2QwYzJkMmZhNDg1MjI0NjcwNDcxZmU0ODQ5ZDc0NzBiZWMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mZXRjaC9oZWFkZXItY29uc3RydWN0b3Itc3ViY2xhc3MuaHRtbApA
QCAtMCwwICsxLDIzIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3Qgc2hvdWxkIGNyZWF0ZSBhIEhl
YWRlcnMgZnJvbSBhbiBvYmplY3Qgd2hpY2ggaXMgYSBzdWJjbGFzcyBvZiBIZWFkZXJzLiIpOwor
CitsZXQgU3BlY2lhbEhlYWRlcnMgPSBjbGFzcyBTcGVjaWFsSGVhZGVycyBleHRlbmRzIEhlYWRl
cnMgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpOwor
ICAgIH0KK307CisKK2xldCBzcGVjaWFsSGVhZGVycyA9IG5ldyBTcGVjaWFsSGVhZGVycyh7ImEi
OiAiMSJ9KTsKK2xldCBvdGhlckhlYWRlcnMgPSBuZXcgSGVhZGVycyhzcGVjaWFsSGVhZGVycyk7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIm90aGVySGVhZGVycy5nZXQoJ2EnKSIsICIxIik7CisK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmV0Y2gv
c2hhZG93aW5nLWZvckVhY2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmV0Y2gvc2hhZG93
aW5nLWZvckVhY2gtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwNTE0NTE1MmNlNGJlNDIwMGIw
YjliMTY3YWM3ZWJmZDkzMjVkMGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mZXRj
aC9zaGFkb3dpbmctZm9yRWFjaC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitUaGlzIHRl
c3Qgc2hvdWxkIHJ1biB3aXRob3V0IHRocm93aW5nIGFuIGV4Y2VwdGlvbi4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mZXRjaC9zaGFkb3dpbmct
Zm9yRWFjaC5odG1sIGIvTGF5b3V0VGVzdHMvZmV0Y2gvc2hhZG93aW5nLWZvckVhY2guaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jODU3OWRlYzNhMTMyYzMzMjAzYjA2MjUzMmFiYjhkOGMwMThiYTY5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmV0Y2gvc2hhZG93aW5nLWZvckVhY2guaHRtbApA
QCAtMCwwICsxLDIwIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3Qgc2hvdWxkIHJ1biB3aXRob3V0
IHRocm93aW5nIGFuIGV4Y2VwdGlvbi4iKTsKKworQXJyYXkucHJvdG90eXBlLmZvckVhY2ggPSBm
dW5jdGlvbigpIHsKKyAgICB0aHJvdyAiVXNlciBvdmVycmlkZW4iOworfTsKKworbGV0IGhlYWRl
cnMgPSBuZXcgSGVhZGVycyh7YToxfSk7CitsZXQgaGVhZGVyczIgPSBuZXcgSGVhZGVycyhoZWFk
ZXJzKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdHJlYW1zL2J1aWx0aW4tb3ZlcnJpZGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0
cmVhbXMvYnVpbHRpbi1vdmVycmlkZXMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5MDUxNDUxNTJjZTRiZTQyMDBiMGI5YjE2N2FjN2ViZmQ5MzI1ZDBiLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3N0
cmVhbXMvYnVpbHRpbi1vdmVycmlkZXMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
OSArMCwwIEBACi1UaGlzIHRlc3Qgc2hvdWxkIHJ1biB3aXRob3V0IHRocm93aW5nIGFuIGV4Y2Vw
dGlvbi4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdHJlYW1zL2J1aWx0aW4tb3ZlcnJpZGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL2J1
aWx0aW4tb3ZlcnJpZGVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjMGFm
OGRjMTYyYzFmOTE2N2I0ZjAzMDE0M2FhMzlmYjRlODgyN2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9idWlsdGluLW92
ZXJyaWRlcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotPCFET0NUWVBFIEhU
TUw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1kZXNjcmlwdGlvbigi
VGhpcyB0ZXN0IHNob3VsZCBydW4gd2l0aG91dCB0aHJvd2luZyBhbiBleGNlcHRpb24uIik7Ci0K
LU9iamVjdC5kZWZpbmVQcm9wZXJ0eSA9IGZ1bmN0aW9uKCkgewotICAgIHRocm93ICJVc2VyIG92
ZXJyaWRlbiI7Ci19OwotCi1uZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSh7fSk7Ci1uZXcg
Q291bnRRdWV1aW5nU3RyYXRlZ3koe30pOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3NoYWRvd2luZy1Qcm9taXNlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvc2hhZG93aW5nLVByb21pc2UtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjYwMTc5ZTY2ZWZkZWFhMGQ0MDYyN2EwMGRmYmQwNTNiZjdhM2U3MGIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3NoYWRvd2luZy1Qcm9taXNlLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEzIEBACisKK1BBU1MgU3RyZWFtcyBhbmQgcHJvbWlzZXM6IHJl
cGxhY2UgUHJvbWlzZSBjb25zdHJ1Y3RvciAKK1BBU1MgU3RyZWFtcyBhbmQgcHJvbWlzZXM6IHJl
cGxhY2UgUHJvbWlzZS5yZXNvbHZlIAorUEFTUyBTdHJlYW1zIGFuZCBwcm9taXNlczogcmVwbGFj
ZSBQcm9taXNlLnJlamVjdCAKK1BBU1MgU3RyZWFtcyBhbmQgcHJvbWlzZXM6IHJlcGxhY2UgcHJv
dG90eXBlIG9mIGEgcHJvbWlzZSBvYmplY3QgCitQQVNTIFN0cmVhbXMgYW5kIHByb21pc2VzOiBy
ZXBsYWNlIHRoZW4gbWV0aG9kIGluIFByb21pc2UgcHJvdG90eXBlIAorUEFTUyBTdHJlYW1zIGFu
ZCBwcm9taXNlczogcmVwbGFjZSBjYXRjaCBtZXRob2QgaW4gUHJvbWlzZSBwcm90b3R5cGUgCitQ
QVNTIFN0cmVhbXMgYW5kIHByb21pc2VzOiByZXBsYWNlIHRoZW4gbWV0aG9kIGluIHByb21pc2Ug
b2JqZWN0IAorUEFTUyBTdHJlYW1zIHNob3VsZCBub3QgZGlyZWN0bHkgdXNlIE51bWJlciBhbmQg
cmVsYXRlZCBtZXRob2RzIAorUEFTUyBTdHJlYW1zIHNob3VsZCBub3QgZGlyZWN0bHkgdXNlIFJl
YWRhYmxlU3RyZWFtIHB1YmxpYyBBUElzIAorUEFTUyBTdHJlYW1zIHNob3VsZCBub3QgZGlyZWN0
bHkgdXNlIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHJlYWQgcHVibGljIEFQSSAKK1BBU1MgU3RyZWFt
cyBzaG91bGQgbm90IGRpcmVjdGx5IHVzZSBhcnJheSBwdWJsaWMgQVBJcyAKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9zaGFkb3dpbmctUHJvbWlzZS5odG1sIGIvTGF5b3V0VGVz
dHMvc3RyZWFtcy9zaGFkb3dpbmctUHJvbWlzZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzZTBmZDFhZTVh
ZDVlODcyNmYxZDZiNTU3MjE3Yzg5NzM0ZDlhMWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdHJlYW1zL3NoYWRvd2luZy1Qcm9taXNlLmh0bWwKQEAgLTAsMCArMSwyMDYgQEAKKzwh
RE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyc+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0nLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Jz48L3NjcmlwdD4KKzxzY3JpcHQ+Cit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGNvbnN0IFByb21p
c2VCYWNrdXAgPSBQcm9taXNlOworCisgICAgdHJ5IHsKKyAgICAgICAgUHJvbWlzZSA9IGZ1bmN0
aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCJzdHJlYW1zIHNob3VsZCBub3QgdXNlIHRoaXMgUHJv
bWlzZSBvYmplY3QiKTsgfTsKKworICAgICAgICBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgICAg
ICAgbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgUHJvbWlz
ZSA9IFByb21pc2VCYWNrdXA7CisgICAgfQorfSwgJ1N0cmVhbXMgYW5kIHByb21pc2VzOiByZXBs
YWNlIFByb21pc2UgY29uc3RydWN0b3InKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBjb25z
dCBQcm9taXNlUmVzb2x2ZUJhY2t1cCA9IFByb21pc2UucmVzb2x2ZTsKKworICAgIHRyeSB7Cisg
ICAgICAgIFByb21pc2UucmVzb2x2ZSA9IGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCJz
dHJlYW1zIHNob3VsZCBub3QgdXNlIHRoaXMgUHJvbWlzZS5yZXNvbHZlIG1ldGhvZCIpOyB9Owor
CisgICAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICAgICAgICBuZXcgV3JpdGFibGVTdHJl
YW0oKTsKKyAgICB9IGZpbmFsbHkgeworICAgICAgICBQcm9taXNlLnJlc29sdmUgPSBQcm9taXNl
UmVzb2x2ZUJhY2t1cDsKKyAgICB9Cit9LCAnU3RyZWFtcyBhbmQgcHJvbWlzZXM6IHJlcGxhY2Ug
UHJvbWlzZS5yZXNvbHZlJyk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgY29uc3QgUHJvbWlz
ZVJlamVjdEJhY2t1cCA9IFByb21pc2UucmVqZWN0OworCisgICAgdHJ5IHsKKyAgICAgICAgUHJv
bWlzZS5yZWplY3QgPSBmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgic3RyZWFtcyBzaG91
bGQgbm90IHVzZSB0aGlzIFByb21pc2UucmVqZWN0IG1ldGhvZCIpOyB9OworCisgICAgICAgIFJl
YWRhYmxlU3RyZWFtLnByb3RvdHlwZS5jYW5jZWwuY2FsbCh7fSwgInJlYXNvbiIpOworICAgICAg
ICBXcml0YWJsZVN0cmVhbS5wcm90b3R5cGUuYWJvcnQuY2FsbCh7fSwgInJlYXNvbiIpOworICAg
IH0gZmluYWxseSB7CisgICAgICAgIFByb21pc2UucmVqZWN0ID0gUHJvbWlzZVJlamVjdEJhY2t1
cDsKKyAgICB9Cit9LCAnU3RyZWFtcyBhbmQgcHJvbWlzZXM6IHJlcGxhY2UgUHJvbWlzZS5yZWpl
Y3QnKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBmdW5jdGlvbiBjcmVhdGVNYW5nbGVkUHJv
bWlzZSgpIHsKKyAgICAgICAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOworICAg
ICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YocHJvbWlzZSwgeyBjb25zdHJ1Y3RvcjogUHJvbWlz
ZSwgdGhlbjogZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoInN0cmVhbXMgc2hvdWxkIG5v
dCB1c2UgdGhpcyBwcm9taXNlIHRoZW4gbWV0aG9kIik7IH0gfSk7CisgICAgICAgIHJldHVybiBw
cm9taXNlOworICAgIH0KKyAgICBuZXcgUmVhZGFibGVTdHJlYW0oeyBzdGFydDogZnVuY3Rpb24o
KSB7IHJldHVybiBjcmVhdGVNYW5nbGVkUHJvbWlzZSgpOyB9IH0pCisgICAgbmV3IFdyaXRhYmxl
U3RyZWFtKHsgc3RhcnQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gY3JlYXRlTWFuZ2xlZFByb21pc2Uo
KTsgfSB9KQorfSwgJ1N0cmVhbXMgYW5kIHByb21pc2VzOiByZXBsYWNlIHByb3RvdHlwZSBvZiBh
IHByb21pc2Ugb2JqZWN0Jyk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgY29uc3QgUHJvbWlz
ZVRoZW5CYWNrdXAgPSBQcm9taXNlLnByb3RvdHlwZS50aGVuOworCisgICAgdHJ5IHsKKyAgICAg
ICAgUHJvbWlzZS5wcm90b3R5cGUudGhlbiA9IGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVk
KCJzdHJlYW1zIHNob3VsZCBub3QgdXNlIHRoaXMgUHJvbWlzZS5wcm90b3R5cGUudGhlbiBtZXRo
b2QiKTsgfTsKKworICAgICAgICBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgICAgICAgbmV3IFdy
aXRhYmxlU3RyZWFtKCk7CisgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgUHJvbWlzZS5wcm90b3R5
cGUudGhlbiA9IFByb21pc2VUaGVuQmFja3VwOworICAgIH0KK30sICdTdHJlYW1zIGFuZCBwcm9t
aXNlczogcmVwbGFjZSB0aGVuIG1ldGhvZCBpbiBQcm9taXNlIHByb3RvdHlwZScpOworCit0ZXN0
KGZ1bmN0aW9uKCkgeworICAgIGNvbnN0IFByb21pc2VDYXRjaEJhY2t1cCA9IFByb21pc2UucHJv
dG90eXBlLmNhdGNoOworICAgIGNvbnN0IFByb21pc2VUaGVuQmFja3VwID0gUHJvbWlzZS5wcm90
b3R5cGUudGhlbjsKKworICAgIHRyeSB7CisgICAgICAgIFByb21pc2UucHJvdG90eXBlLmNhdGNo
ID0gZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoInN0cmVhbXMgc2hvdWxkIG5vdCB1c2Ug
dGhpcyBQcm9taXNlLnByb3RvdHlwZS5jYXRjaCBtZXRob2QiKTsgfTsKKyAgICAgICAgUHJvbWlz
ZS5wcm90b3R5cGUudGhlbiA9IGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCJzdHJlYW1z
IHNob3VsZCBub3QgdXNlIHRoaXMgUHJvbWlzZS5wcm90b3R5cGUuY2F0Y2ggbWV0aG9kIik7IH07
CisKKyAgICAgICAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgICAgICAgcnMu
dGVlKCk7CisgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgUHJvbWlzZS5wcm90b3R5cGUuY2F0Y2gg
PSBQcm9taXNlQ2F0Y2hCYWNrdXA7CisgICAgICAgIFByb21pc2UucHJvdG90eXBlLnRoZW4gPSBQ
cm9taXNlVGhlbkJhY2t1cDsKKyAgICB9Cit9LCAnU3RyZWFtcyBhbmQgcHJvbWlzZXM6IHJlcGxh
Y2UgY2F0Y2ggbWV0aG9kIGluIFByb21pc2UgcHJvdG90eXBlJyk7CisKK3Rlc3QoZnVuY3Rpb24o
KSB7CisgICAgZnVuY3Rpb24gY3JlYXRlTWFuZ2xlZFByb21pc2UoKSB7CisgICAgICAgIGNvbnN0
IHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgcHJvbWlzZS50aGVuID0gZnVu
Y3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoInN0cmVhbXMgc2hvdWxkIG5vdCB1c2UgdGhpcyBw
cm9taXNlIHRoZW4gbWV0aG9kIik7IH07CisgICAgICAgIHJldHVybiBwcm9taXNlOworICAgIH0K
KyAgICBuZXcgUmVhZGFibGVTdHJlYW0oeyBzdGFydDogZnVuY3Rpb24oKSB7IHJldHVybiBjcmVh
dGVNYW5nbGVkUHJvbWlzZSgpOyB9IH0pCisgICAgbmV3IFdyaXRhYmxlU3RyZWFtKHsgc3RhcnQ6
IGZ1bmN0aW9uKCkgeyByZXR1cm4gY3JlYXRlTWFuZ2xlZFByb21pc2UoKTsgfSB9KQorfSwgJ1N0
cmVhbXMgYW5kIHByb21pc2VzOiByZXBsYWNlIHRoZW4gbWV0aG9kIGluIHByb21pc2Ugb2JqZWN0
Jyk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgY29uc3QgTnVtYmVyQmFja3VwID0gTnVtYmVy
OworICAgIGNvbnN0IE51bWJlcklzTmFOQmFja3VwID0gTnVtYmVyLmlzTmFOOworICAgIGNvbnN0
IE51bWJlcklzRmluaXRlQmFja3VwID0gTnVtYmVyLmlzRmluaXRlOworCisgICAgdHJ5IHsKKyAg
ICAgICAgTnVtYmVyLmlzTmFOID0gZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoInN0cmVh
bXMgc2hvdWxkIG5vdCB1c2UgdGhpcyBOdW1iZXIuaXNOYU4gbWV0aG9kIik7IH07CisgICAgICAg
IE51bWJlci5pc0Zpbml0ZSA9IGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCJzdHJlYW1z
IHNob3VsZCBub3QgdXNlIHRoaXMgTnVtYmVyLmlzRmluaXRlIG1ldGhvZCIpOyB9OworICAgICAg
ICBOdW1iZXIgPSBudWxsOworCisgICAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAg
ICAgICBzdGFydDogZnVuY3Rpb24oY29udHJvbGxlcikgeworICAgICAgICAgICAgICAgIGNvbnRy
b2xsZXIuZW5xdWV1ZSgic21hbGwgcG90YXRvIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0s
IHsKKyAgICAgICAgICAgIHNpemU6IGZ1bmN0aW9uKGNodW5rKSB7IHJldHVybiAyOyB9LAorICAg
ICAgICAgICAgaGlnaFdhdGVyTWFyazogMQorICAgICAgICB9KTsKKworICAgIH0gZmluYWxseSB7
CisgICAgICAgIE51bWJlciA9IE51bWJlckJhY2t1cDsKKyAgICAgICAgTnVtYmVyLmlzTmFOID0g
TnVtYmVySXNOYU5CYWNrdXA7CisgICAgICAgIE51bWJlci5pc0Zpbml0ZSA9IE51bWJlcklzRmlu
aXRlQmFja3VwOworICAgIH0KK30sICdTdHJlYW1zIHNob3VsZCBub3QgZGlyZWN0bHkgdXNlIE51
bWJlciBhbmQgcmVsYXRlZCBtZXRob2RzJyk7Cit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGNvbnN0
IFJlYWRhYmxlU3RyZWFtR2V0UmVhZGVyQmFja3VwID0gUmVhZGFibGVTdHJlYW0ucHJvdG90eXBl
LmdldFJlYWRlcjsKKworICAgIHRyeSB7CisgICAgICAgIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlw
ZS5nZXRSZWFkZXIgPSBmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgic3RyZWFtcyBzaG91
bGQgbm90IHVzZSB0aGlzIFJlYWRhYmxlU3RyZWFtLmdldFJlYWRlciBtZXRob2QiKTsgfTsKKyAg
ICAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKCkudGVlKCk7CisgICAgfSBmaW5hbGx5IHsKKyAgICAg
ICAgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmdldFJlYWRlciA9IFJlYWRhYmxlU3RyZWFtR2V0
UmVhZGVyQmFja3VwOworICAgIH0KK30sICdTdHJlYW1zIHNob3VsZCBub3QgZGlyZWN0bHkgdXNl
IFJlYWRhYmxlU3RyZWFtIHB1YmxpYyBBUElzJyk7CisKK3Byb21pc2VfdGVzdChmdW5jdGlvbigp
IHsKKyAgICBjb25zdCBSZWFkYWJsZVN0cmVhbVJlYWRlciA9IG5ldyBSZWFkYWJsZVN0cmVhbSgp
LmdldFJlYWRlcigpLmNvbnN0cnVjdG9yOworICAgIGNvbnN0IFJlYWRhYmxlU3RyZWFtUmVhZGVy
UmVhZEJhY2t1cCA9IFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5yZWFkOworCisgICAg
ZnVuY3Rpb24gY2xlYW5UZXN0KCkgeworICAgICAgICBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90
b3R5cGUucmVhZCA9IFJlYWRhYmxlU3RyZWFtUmVhZGVyUmVhZEJhY2t1cDsKKyAgICB9CisKKyAg
ICB0cnkgeworICAgICAgICBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVhZCA9IGZ1
bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCJzdHJlYW1zIHNob3VsZCBub3QgdXNlIHRoaXMg
UmVhZGFibGVTdHJlYW1SZWFkZXIucmVhZCBtZXRob2QiKTsgfTsKKworICAgICAgICBbczEsIHMy
XSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgICAgICBzdGFydDogZnVuY3Rpb24oY29u
dHJvbGxlcikgeworICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSkudGVlKCk7CisgICAgICAgIHJldHVybiBzMS5nZXRSZWFkZXIoKS5j
bG9zZWQudGhlbihjbGVhblRlc3QsIGNsZWFuVGVzdCk7CisKKyAgICB9IGNhdGNoIChlcnJvcikg
eworICAgICAgICBjbGVhblRlc3QoKTsKKyAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgidGVzdCBz
aG91bGQgbm90IHRocm93Iik7CisgICAgfQorfSwgJ1N0cmVhbXMgc2hvdWxkIG5vdCBkaXJlY3Rs
eSB1c2UgUmVhZGFibGVTdHJlYW1SZWFkZXIgcmVhZCBwdWJsaWMgQVBJJyk7CisKK3Byb21pc2Vf
dGVzdChmdW5jdGlvbigpIHsKKyAgICBjb25zdCBBcnJheVB1c2hCYWNrdXAgPSBBcnJheS5wcm90
b3R5cGUucHVzaDsKKyAgICBjb25zdCBBcnJheVNoaWZ0QmFja3VwID0gQXJyYXkucHJvdG90eXBl
LnNoaWZ0OworCisgICAgLy8gVXNlIG9mIHRlc3RpbmcgdmFyaWFibGUgdG8gdHJ5IG5vdCBtZXNz
aW5nIHVwIHRlc3RoYXJuZXNzLmpzIGNvZGUuCisgICAgLy8gRklYTUU6IHRoaXMgYXBwcm9hY2gg
aXMgZmFyIGZyb20gcGVyZmVjdDogcHVzaCBpcyB1c2VkIGluIGNhc2UgYW4gYXNzZXJ0IGZhaWxz
LgorICAgIC8vIEJ1dCBjbGVhblRlc3Qgd2lsbCBub3QgYmUgY2FsbGVkIGFuZCB3ZSBtYXkgZW5k
LXVwIG1hc2sgdGhlIHJlYWwgYXNzZXJ0aW9uIGZhaWx1cmUgYnkgYmVsb3cgYXNzZXJ0X3VucmVh
Y2hlZCBtZXNzYWdlcy4KKyAgICAvLyBXZSBtaWdodCB3YW50IHRvIGVpdGhlciBpbXByb3ZlIHRl
c3RoYXJuZXNzLmpzIG9yICBtb3ZlIHRoZXNlIHRlc3RzIG91dCBvZiB0ZXN0aGFybmVzcy5qcy4K
KyAgICBsZXQgdGVzdGluZyA9IHRydWU7CisgICAgQXJyYXkucHJvdG90eXBlLnB1c2ggPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgaWYgKHRlc3RpbmcpIHsKKyAgICAgICAgICAgIHRlc3RpbmcgPSBm
YWxzZTsKKyAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoIkFycmF5LnByb3RvdHlwZS5wdXNo
IGNhbGxlZCIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBBcnJheVB1c2hCYWNrdXAuYXBw
bHkodGhpcywgYXJndW1lbnRzKTsKKyAgICB9CisKKyAgICBBcnJheS5wcm90b3R5cGUuc2hpZnQg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHRlc3RpbmcpIHsKKyAgICAgICAgICAgIHRlc3Rp
bmcgPSBmYWxzZTsKKyAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoIkFycmF5LnByb3RvdHlw
ZS5zaGlmdCBjYWxsZWQiKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gQXJyYXlTaGlmdEJh
Y2t1cC5jYWxsKHRoaXMsIGFyZ3VtZW50cyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2xlYW5U
ZXN0KCkgeworICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaCA9IEFycmF5UHVzaEJhY2t1cDsK
KyAgICAgICAgQXJyYXkucHJvdG90eXBlLnNoaWZ0ID0gQXJyYXlTaGlmdEJhY2t1cDsKKyAgICB9
CisgICAgdHJ5IHsKKyAgICAgICAgbGV0IF9jb250cm9sbGVyOworICAgICAgICBjb25zdCByZWFk
ZXIgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGNv
bnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICBfY29udHJvbGxlciA9IGNvbnRyb2xsZXI7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0pLmdldFJlYWRlcigpOworICAgICAgICAvLyBjaGVja2lu
ZyB3aGV0aGVyIHB1c2hpbmcvc2hpZnRpbmcgcGVuZGluZyByZWFkIHByb21pc2VzIGlzIHNoaWVs
ZGVkLgorICAgICAgICBjb25zdCByZWFkUHJvbWlzZSA9IHJlYWRlci5yZWFkKCkudGhlbihmdW5j
dGlvbihyZXN1bHQpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LnZhbHVlLCAi
aGFsZiBiYWtlZCBwb3RhdG8iKTsKKyAgICAgICAgICAgIC8vIGNoZWNraW5nIHdoZXRoZXIgcHVz
aGluZy9zaGlmdGluZyBlbnF1ZXVlZCB2YWx1ZXMgaXMgc2hpZWxkZWQuCisgICAgICAgICAgICBf
Y29udHJvbGxlci5lbnF1ZXVlKCJmdWxseSBiYWtlZCBwb3RhdG8iKTsKKyAgICAgICAgICAgIHJl
dHVybiByZWFkZXIucmVhZCgpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQudmFsdWUsICJmdWxseSBiYWtlZCBwb3RhdG8iKTsKKyAg
ICAgICAgICAgICAgICBjbGVhblRlc3QoKTsKKyAgICAgICAgICAgIH0sIGNsZWFuVGVzdCk7Cisg
ICAgICAgIH0sIGNsZWFuVGVzdCk7CisgICAgICAgIF9jb250cm9sbGVyLmVucXVldWUoImhhbGYg
YmFrZWQgcG90YXRvIik7CisgICAgICAgIHJldHVybiByZWFkUHJvbWlzZTsKKyAgICB9IGNhdGNo
IChlcnJvcikgeworICAgICAgICBjbGVhblRlc3QoKTsKKyAgICAgICAgcmV0dXJuIFByb21pc2Uu
cmVqZWN0KGVycm9yKTsKKyAgICB9Cit9LCAnU3RyZWFtcyBzaG91bGQgbm90IGRpcmVjdGx5IHVz
ZSBhcnJheSBwdWJsaWMgQVBJcycpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdHJlYW1zL3NoYWRvd2luZy1kZWZpbmVQcm9wZXJ0eS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9zdHJlYW1zL3NoYWRvd2luZy1kZWZpbmVQcm9wZXJ0eS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTA1MTQ1MTUyY2U0YmU0MjAwYjBiOWIxNjdhYzdlYmZkOTMyNWQwYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvc2hhZG93aW5nLWRlZmluZVByb3BlcnR5LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK1RoaXMgdGVzdCBzaG91bGQgcnVuIHdpdGhvdXQg
dGhyb3dpbmcgYW4gZXhjZXB0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvc2hhZG93aW5nLWRlZmluZVByb3BlcnR5Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdHJlYW1zL3NoYWRvd2luZy1kZWZpbmVQcm9wZXJ0eS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjFjMGFmOGRjMTYyYzFmOTE2N2I0ZjAzMDE0M2FhMzlmYjRlODgyN2QKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3NoYWRvd2luZy1kZWZpbmVQcm9wZXJ0eS5o
dG1sCkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBzaG91bGQgcnVuIHdp
dGhvdXQgdGhyb3dpbmcgYW4gZXhjZXB0aW9uLiIpOworCitPYmplY3QuZGVmaW5lUHJvcGVydHkg
PSBmdW5jdGlvbigpIHsKKyAgICB0aHJvdyAiVXNlciBvdmVycmlkZW4iOworfTsKKworbmV3IEJ5
dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koe30pOworbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHt9
KTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Ry
ZWFtcy9zdHJlYW1zLXByb21pc2VzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMv
c3RyZWFtcy1wcm9taXNlcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDYwMTc5ZTY2ZWZkZWFhMGQ0MDYyN2EwMGRmYmQwNTNiZjdhM2U3MGIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9z
dHJlYW1zLXByb21pc2VzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAg
QEAKLQotUEFTUyBTdHJlYW1zIGFuZCBwcm9taXNlczogcmVwbGFjZSBQcm9taXNlIGNvbnN0cnVj
dG9yIAotUEFTUyBTdHJlYW1zIGFuZCBwcm9taXNlczogcmVwbGFjZSBQcm9taXNlLnJlc29sdmUg
Ci1QQVNTIFN0cmVhbXMgYW5kIHByb21pc2VzOiByZXBsYWNlIFByb21pc2UucmVqZWN0IAotUEFT
UyBTdHJlYW1zIGFuZCBwcm9taXNlczogcmVwbGFjZSBwcm90b3R5cGUgb2YgYSBwcm9taXNlIG9i
amVjdCAKLVBBU1MgU3RyZWFtcyBhbmQgcHJvbWlzZXM6IHJlcGxhY2UgdGhlbiBtZXRob2QgaW4g
UHJvbWlzZSBwcm90b3R5cGUgCi1QQVNTIFN0cmVhbXMgYW5kIHByb21pc2VzOiByZXBsYWNlIGNh
dGNoIG1ldGhvZCBpbiBQcm9taXNlIHByb3RvdHlwZSAKLVBBU1MgU3RyZWFtcyBhbmQgcHJvbWlz
ZXM6IHJlcGxhY2UgdGhlbiBtZXRob2QgaW4gcHJvbWlzZSBvYmplY3QgCi1QQVNTIFN0cmVhbXMg
c2hvdWxkIG5vdCBkaXJlY3RseSB1c2UgTnVtYmVyIGFuZCByZWxhdGVkIG1ldGhvZHMgCi1QQVNT
IFN0cmVhbXMgc2hvdWxkIG5vdCBkaXJlY3RseSB1c2UgUmVhZGFibGVTdHJlYW0gcHVibGljIEFQ
SXMgCi1QQVNTIFN0cmVhbXMgc2hvdWxkIG5vdCBkaXJlY3RseSB1c2UgUmVhZGFibGVTdHJlYW1S
ZWFkZXIgcmVhZCBwdWJsaWMgQVBJIAotUEFTUyBTdHJlYW1zIHNob3VsZCBub3QgZGlyZWN0bHkg
dXNlIGFycmF5IHB1YmxpYyBBUElzIAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1z
L3N0cmVhbXMtcHJvbWlzZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvc3RyZWFtcy1wcm9t
aXNlcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2UwZmQxYWU1YWQ1ZTg3
MjZmMWQ2YjU1NzIxN2M4OTczNGQ5YTFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvc3RyZWFtcy1wcm9taXNlcy5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMjA2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPHNjcmlw
dCBzcmM9Jy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyc+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0nLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzJz48L3NjcmlwdD4KLTxzY3JpcHQ+
Ci10ZXN0KGZ1bmN0aW9uKCkgewotICAgIGNvbnN0IFByb21pc2VCYWNrdXAgPSBQcm9taXNlOwot
Ci0gICAgdHJ5IHsKLSAgICAgICAgUHJvbWlzZSA9IGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFj
aGVkKCJzdHJlYW1zIHNob3VsZCBub3QgdXNlIHRoaXMgUHJvbWlzZSBvYmplY3QiKTsgfTsKLQot
ICAgICAgICBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLSAgICAgICAgbmV3IFdyaXRhYmxlU3RyZWFt
KCk7Ci0gICAgfSBmaW5hbGx5IHsKLSAgICAgICAgUHJvbWlzZSA9IFByb21pc2VCYWNrdXA7Ci0g
ICAgfQotfSwgJ1N0cmVhbXMgYW5kIHByb21pc2VzOiByZXBsYWNlIFByb21pc2UgY29uc3RydWN0
b3InKTsKLQotdGVzdChmdW5jdGlvbigpIHsKLSAgICBjb25zdCBQcm9taXNlUmVzb2x2ZUJhY2t1
cCA9IFByb21pc2UucmVzb2x2ZTsKLQotICAgIHRyeSB7Ci0gICAgICAgIFByb21pc2UucmVzb2x2
ZSA9IGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCJzdHJlYW1zIHNob3VsZCBub3QgdXNl
IHRoaXMgUHJvbWlzZS5yZXNvbHZlIG1ldGhvZCIpOyB9OwotCi0gICAgICAgIG5ldyBSZWFkYWJs
ZVN0cmVhbSgpOwotICAgICAgICBuZXcgV3JpdGFibGVTdHJlYW0oKTsKLSAgICB9IGZpbmFsbHkg
ewotICAgICAgICBQcm9taXNlLnJlc29sdmUgPSBQcm9taXNlUmVzb2x2ZUJhY2t1cDsKLSAgICB9
Ci19LCAnU3RyZWFtcyBhbmQgcHJvbWlzZXM6IHJlcGxhY2UgUHJvbWlzZS5yZXNvbHZlJyk7Ci0K
LXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgY29uc3QgUHJvbWlzZVJlamVjdEJhY2t1cCA9IFByb21p
c2UucmVqZWN0OwotCi0gICAgdHJ5IHsKLSAgICAgICAgUHJvbWlzZS5yZWplY3QgPSBmdW5jdGlv
bigpIHsgYXNzZXJ0X3VucmVhY2hlZCgic3RyZWFtcyBzaG91bGQgbm90IHVzZSB0aGlzIFByb21p
c2UucmVqZWN0IG1ldGhvZCIpOyB9OwotCi0gICAgICAgIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlw
ZS5jYW5jZWwuY2FsbCh7fSwgInJlYXNvbiIpOwotICAgICAgICBXcml0YWJsZVN0cmVhbS5wcm90
b3R5cGUuYWJvcnQuY2FsbCh7fSwgInJlYXNvbiIpOwotICAgIH0gZmluYWxseSB7Ci0gICAgICAg
IFByb21pc2UucmVqZWN0ID0gUHJvbWlzZVJlamVjdEJhY2t1cDsKLSAgICB9Ci19LCAnU3RyZWFt
cyBhbmQgcHJvbWlzZXM6IHJlcGxhY2UgUHJvbWlzZS5yZWplY3QnKTsKLQotdGVzdChmdW5jdGlv
bigpIHsKLSAgICBmdW5jdGlvbiBjcmVhdGVNYW5nbGVkUHJvbWlzZSgpIHsKLSAgICAgICAgY29u
c3QgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOwotICAgICAgICBPYmplY3Quc2V0UHJvdG90
eXBlT2YocHJvbWlzZSwgeyBjb25zdHJ1Y3RvcjogUHJvbWlzZSwgdGhlbjogZnVuY3Rpb24oKSB7
IGFzc2VydF91bnJlYWNoZWQoInN0cmVhbXMgc2hvdWxkIG5vdCB1c2UgdGhpcyBwcm9taXNlIHRo
ZW4gbWV0aG9kIik7IH0gfSk7Ci0gICAgICAgIHJldHVybiBwcm9taXNlOwotICAgIH0KLSAgICBu
ZXcgUmVhZGFibGVTdHJlYW0oeyBzdGFydDogZnVuY3Rpb24oKSB7IHJldHVybiBjcmVhdGVNYW5n
bGVkUHJvbWlzZSgpOyB9IH0pCi0gICAgbmV3IFdyaXRhYmxlU3RyZWFtKHsgc3RhcnQ6IGZ1bmN0
aW9uKCkgeyByZXR1cm4gY3JlYXRlTWFuZ2xlZFByb21pc2UoKTsgfSB9KQotfSwgJ1N0cmVhbXMg
YW5kIHByb21pc2VzOiByZXBsYWNlIHByb3RvdHlwZSBvZiBhIHByb21pc2Ugb2JqZWN0Jyk7Ci0K
LXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgY29uc3QgUHJvbWlzZVRoZW5CYWNrdXAgPSBQcm9taXNl
LnByb3RvdHlwZS50aGVuOwotCi0gICAgdHJ5IHsKLSAgICAgICAgUHJvbWlzZS5wcm90b3R5cGUu
dGhlbiA9IGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCJzdHJlYW1zIHNob3VsZCBub3Qg
dXNlIHRoaXMgUHJvbWlzZS5wcm90b3R5cGUudGhlbiBtZXRob2QiKTsgfTsKLQotICAgICAgICBu
ZXcgUmVhZGFibGVTdHJlYW0oKTsKLSAgICAgICAgbmV3IFdyaXRhYmxlU3RyZWFtKCk7Ci0gICAg
fSBmaW5hbGx5IHsKLSAgICAgICAgUHJvbWlzZS5wcm90b3R5cGUudGhlbiA9IFByb21pc2VUaGVu
QmFja3VwOwotICAgIH0KLX0sICdTdHJlYW1zIGFuZCBwcm9taXNlczogcmVwbGFjZSB0aGVuIG1l
dGhvZCBpbiBQcm9taXNlIHByb3RvdHlwZScpOwotCi10ZXN0KGZ1bmN0aW9uKCkgewotICAgIGNv
bnN0IFByb21pc2VDYXRjaEJhY2t1cCA9IFByb21pc2UucHJvdG90eXBlLmNhdGNoOwotICAgIGNv
bnN0IFByb21pc2VUaGVuQmFja3VwID0gUHJvbWlzZS5wcm90b3R5cGUudGhlbjsKLQotICAgIHRy
eSB7Ci0gICAgICAgIFByb21pc2UucHJvdG90eXBlLmNhdGNoID0gZnVuY3Rpb24oKSB7IGFzc2Vy
dF91bnJlYWNoZWQoInN0cmVhbXMgc2hvdWxkIG5vdCB1c2UgdGhpcyBQcm9taXNlLnByb3RvdHlw
ZS5jYXRjaCBtZXRob2QiKTsgfTsKLSAgICAgICAgUHJvbWlzZS5wcm90b3R5cGUudGhlbiA9IGZ1
bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCJzdHJlYW1zIHNob3VsZCBub3QgdXNlIHRoaXMg
UHJvbWlzZS5wcm90b3R5cGUuY2F0Y2ggbWV0aG9kIik7IH07Ci0KLSAgICAgICAgY29uc3QgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLSAgICAgICAgcnMudGVlKCk7Ci0gICAgfSBmaW5hbGx5
IHsKLSAgICAgICAgUHJvbWlzZS5wcm90b3R5cGUuY2F0Y2ggPSBQcm9taXNlQ2F0Y2hCYWNrdXA7
Ci0gICAgICAgIFByb21pc2UucHJvdG90eXBlLnRoZW4gPSBQcm9taXNlVGhlbkJhY2t1cDsKLSAg
ICB9Ci19LCAnU3RyZWFtcyBhbmQgcHJvbWlzZXM6IHJlcGxhY2UgY2F0Y2ggbWV0aG9kIGluIFBy
b21pc2UgcHJvdG90eXBlJyk7Ci0KLXRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgZnVuY3Rpb24gY3Jl
YXRlTWFuZ2xlZFByb21pc2UoKSB7Ci0gICAgICAgIGNvbnN0IHByb21pc2UgPSBQcm9taXNlLnJl
c29sdmUoKTsKLSAgICAgICAgcHJvbWlzZS50aGVuID0gZnVuY3Rpb24oKSB7IGFzc2VydF91bnJl
YWNoZWQoInN0cmVhbXMgc2hvdWxkIG5vdCB1c2UgdGhpcyBwcm9taXNlIHRoZW4gbWV0aG9kIik7
IH07Ci0gICAgICAgIHJldHVybiBwcm9taXNlOwotICAgIH0KLSAgICBuZXcgUmVhZGFibGVTdHJl
YW0oeyBzdGFydDogZnVuY3Rpb24oKSB7IHJldHVybiBjcmVhdGVNYW5nbGVkUHJvbWlzZSgpOyB9
IH0pCi0gICAgbmV3IFdyaXRhYmxlU3RyZWFtKHsgc3RhcnQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y3JlYXRlTWFuZ2xlZFByb21pc2UoKTsgfSB9KQotfSwgJ1N0cmVhbXMgYW5kIHByb21pc2VzOiBy
ZXBsYWNlIHRoZW4gbWV0aG9kIGluIHByb21pc2Ugb2JqZWN0Jyk7Ci0KLXRlc3QoZnVuY3Rpb24o
KSB7Ci0gICAgY29uc3QgTnVtYmVyQmFja3VwID0gTnVtYmVyOwotICAgIGNvbnN0IE51bWJlcklz
TmFOQmFja3VwID0gTnVtYmVyLmlzTmFOOwotICAgIGNvbnN0IE51bWJlcklzRmluaXRlQmFja3Vw
ID0gTnVtYmVyLmlzRmluaXRlOwotCi0gICAgdHJ5IHsKLSAgICAgICAgTnVtYmVyLmlzTmFOID0g
ZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoInN0cmVhbXMgc2hvdWxkIG5vdCB1c2UgdGhp
cyBOdW1iZXIuaXNOYU4gbWV0aG9kIik7IH07Ci0gICAgICAgIE51bWJlci5pc0Zpbml0ZSA9IGZ1
bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCJzdHJlYW1zIHNob3VsZCBub3QgdXNlIHRoaXMg
TnVtYmVyLmlzRmluaXRlIG1ldGhvZCIpOyB9OwotICAgICAgICBOdW1iZXIgPSBudWxsOwotCi0g
ICAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgICAgICBzdGFydDogZnVuY3Rpb24o
Y29udHJvbGxlcikgewotICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgic21hbGwg
cG90YXRvIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sIHsKLSAgICAgICAgICAgIHNpemU6
IGZ1bmN0aW9uKGNodW5rKSB7IHJldHVybiAyOyB9LAotICAgICAgICAgICAgaGlnaFdhdGVyTWFy
azogMQotICAgICAgICB9KTsKLQotICAgIH0gZmluYWxseSB7Ci0gICAgICAgIE51bWJlciA9IE51
bWJlckJhY2t1cDsKLSAgICAgICAgTnVtYmVyLmlzTmFOID0gTnVtYmVySXNOYU5CYWNrdXA7Ci0g
ICAgICAgIE51bWJlci5pc0Zpbml0ZSA9IE51bWJlcklzRmluaXRlQmFja3VwOwotICAgIH0KLX0s
ICdTdHJlYW1zIHNob3VsZCBub3QgZGlyZWN0bHkgdXNlIE51bWJlciBhbmQgcmVsYXRlZCBtZXRo
b2RzJyk7Ci10ZXN0KGZ1bmN0aW9uKCkgewotICAgIGNvbnN0IFJlYWRhYmxlU3RyZWFtR2V0UmVh
ZGVyQmFja3VwID0gUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmdldFJlYWRlcjsKLQotICAgIHRy
eSB7Ci0gICAgICAgIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5nZXRSZWFkZXIgPSBmdW5jdGlv
bigpIHsgYXNzZXJ0X3VucmVhY2hlZCgic3RyZWFtcyBzaG91bGQgbm90IHVzZSB0aGlzIFJlYWRh
YmxlU3RyZWFtLmdldFJlYWRlciBtZXRob2QiKTsgfTsKLSAgICAgICAgbmV3IFJlYWRhYmxlU3Ry
ZWFtKCkudGVlKCk7Ci0gICAgfSBmaW5hbGx5IHsKLSAgICAgICAgUmVhZGFibGVTdHJlYW0ucHJv
dG90eXBlLmdldFJlYWRlciA9IFJlYWRhYmxlU3RyZWFtR2V0UmVhZGVyQmFja3VwOwotICAgIH0K
LX0sICdTdHJlYW1zIHNob3VsZCBub3QgZGlyZWN0bHkgdXNlIFJlYWRhYmxlU3RyZWFtIHB1Ymxp
YyBBUElzJyk7Ci0KLXByb21pc2VfdGVzdChmdW5jdGlvbigpIHsKLSAgICBjb25zdCBSZWFkYWJs
ZVN0cmVhbVJlYWRlciA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpLmdldFJlYWRlcigpLmNvbnN0cnVj
dG9yOwotICAgIGNvbnN0IFJlYWRhYmxlU3RyZWFtUmVhZGVyUmVhZEJhY2t1cCA9IFJlYWRhYmxl
U3RyZWFtUmVhZGVyLnByb3RvdHlwZS5yZWFkOwotCi0gICAgZnVuY3Rpb24gY2xlYW5UZXN0KCkg
ewotICAgICAgICBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVhZCA9IFJlYWRhYmxl
U3RyZWFtUmVhZGVyUmVhZEJhY2t1cDsKLSAgICB9Ci0KLSAgICB0cnkgewotICAgICAgICBSZWFk
YWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5y
ZWFjaGVkKCJzdHJlYW1zIHNob3VsZCBub3QgdXNlIHRoaXMgUmVhZGFibGVTdHJlYW1SZWFkZXIu
cmVhZCBtZXRob2QiKTsgfTsKLQotICAgICAgICBbczEsIHMyXSA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7Ci0gICAgICAgICAgICBzdGFydDogZnVuY3Rpb24oY29udHJvbGxlcikgewotICAgICAgICAg
ICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSkudGVl
KCk7Ci0gICAgICAgIHJldHVybiBzMS5nZXRSZWFkZXIoKS5jbG9zZWQudGhlbihjbGVhblRlc3Qs
IGNsZWFuVGVzdCk7Ci0KLSAgICB9IGNhdGNoIChlcnJvcikgewotICAgICAgICBjbGVhblRlc3Qo
KTsKLSAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgidGVzdCBzaG91bGQgbm90IHRocm93Iik7Ci0g
ICAgfQotfSwgJ1N0cmVhbXMgc2hvdWxkIG5vdCBkaXJlY3RseSB1c2UgUmVhZGFibGVTdHJlYW1S
ZWFkZXIgcmVhZCBwdWJsaWMgQVBJJyk7Ci0KLXByb21pc2VfdGVzdChmdW5jdGlvbigpIHsKLSAg
ICBjb25zdCBBcnJheVB1c2hCYWNrdXAgPSBBcnJheS5wcm90b3R5cGUucHVzaDsKLSAgICBjb25z
dCBBcnJheVNoaWZ0QmFja3VwID0gQXJyYXkucHJvdG90eXBlLnNoaWZ0OwotCi0gICAgLy8gVXNl
IG9mIHRlc3RpbmcgdmFyaWFibGUgdG8gdHJ5IG5vdCBtZXNzaW5nIHVwIHRlc3RoYXJuZXNzLmpz
IGNvZGUuCi0gICAgLy8gRklYTUU6IHRoaXMgYXBwcm9hY2ggaXMgZmFyIGZyb20gcGVyZmVjdDog
cHVzaCBpcyB1c2VkIGluIGNhc2UgYW4gYXNzZXJ0IGZhaWxzLgotICAgIC8vIEJ1dCBjbGVhblRl
c3Qgd2lsbCBub3QgYmUgY2FsbGVkIGFuZCB3ZSBtYXkgZW5kLXVwIG1hc2sgdGhlIHJlYWwgYXNz
ZXJ0aW9uIGZhaWx1cmUgYnkgYmVsb3cgYXNzZXJ0X3VucmVhY2hlZCBtZXNzYWdlcy4KLSAgICAv
LyBXZSBtaWdodCB3YW50IHRvIGVpdGhlciBpbXByb3ZlIHRlc3RoYXJuZXNzLmpzIG9yICBtb3Zl
IHRoZXNlIHRlc3RzIG91dCBvZiB0ZXN0aGFybmVzcy5qcy4KLSAgICBsZXQgdGVzdGluZyA9IHRy
dWU7Ci0gICAgQXJyYXkucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYg
KHRlc3RpbmcpIHsKLSAgICAgICAgICAgIHRlc3RpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgIGFz
c2VydF91bnJlYWNoZWQoIkFycmF5LnByb3RvdHlwZS5wdXNoIGNhbGxlZCIpOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBBcnJheVB1c2hCYWNrdXAuYXBwbHkodGhpcywgYXJndW1lbnRzKTsK
LSAgICB9Ci0KLSAgICBBcnJheS5wcm90b3R5cGUuc2hpZnQgPSBmdW5jdGlvbigpIHsKLSAgICAg
ICAgaWYgKHRlc3RpbmcpIHsKLSAgICAgICAgICAgIHRlc3RpbmcgPSBmYWxzZTsKLSAgICAgICAg
ICAgIGFzc2VydF91bnJlYWNoZWQoIkFycmF5LnByb3RvdHlwZS5zaGlmdCBjYWxsZWQiKTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gQXJyYXlTaGlmdEJhY2t1cC5jYWxsKHRoaXMsIGFyZ3Vt
ZW50cyk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gY2xlYW5UZXN0KCkgewotICAgICAgICBBcnJh
eS5wcm90b3R5cGUucHVzaCA9IEFycmF5UHVzaEJhY2t1cDsKLSAgICAgICAgQXJyYXkucHJvdG90
eXBlLnNoaWZ0ID0gQXJyYXlTaGlmdEJhY2t1cDsKLSAgICB9Ci0gICAgdHJ5IHsKLSAgICAgICAg
bGV0IF9jb250cm9sbGVyOwotICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgUmVhZGFibGVTdHJl
YW0oewotICAgICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGNvbnRyb2xsZXIpIHsKLSAgICAgICAg
ICAgICAgICBfY29udHJvbGxlciA9IGNvbnRyb2xsZXI7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0pLmdldFJlYWRlcigpOwotICAgICAgICAvLyBjaGVja2luZyB3aGV0aGVyIHB1c2hpbmcvc2hp
ZnRpbmcgcGVuZGluZyByZWFkIHByb21pc2VzIGlzIHNoaWVsZGVkLgotICAgICAgICBjb25zdCBy
ZWFkUHJvbWlzZSA9IHJlYWRlci5yZWFkKCkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LnZhbHVlLCAiaGFsZiBiYWtlZCBwb3RhdG8iKTsK
LSAgICAgICAgICAgIC8vIGNoZWNraW5nIHdoZXRoZXIgcHVzaGluZy9zaGlmdGluZyBlbnF1ZXVl
ZCB2YWx1ZXMgaXMgc2hpZWxkZWQuCi0gICAgICAgICAgICBfY29udHJvbGxlci5lbnF1ZXVlKCJm
dWxseSBiYWtlZCBwb3RhdG8iKTsKLSAgICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRo
ZW4oZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1
bHQudmFsdWUsICJmdWxseSBiYWtlZCBwb3RhdG8iKTsKLSAgICAgICAgICAgICAgICBjbGVhblRl
c3QoKTsKLSAgICAgICAgICAgIH0sIGNsZWFuVGVzdCk7Ci0gICAgICAgIH0sIGNsZWFuVGVzdCk7
Ci0gICAgICAgIF9jb250cm9sbGVyLmVucXVldWUoImhhbGYgYmFrZWQgcG90YXRvIik7Ci0gICAg
ICAgIHJldHVybiByZWFkUHJvbWlzZTsKLSAgICB9IGNhdGNoIChlcnJvcikgewotICAgICAgICBj
bGVhblRlc3QoKTsKLSAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTsKLSAgICB9
Ci19LCAnU3RyZWFtcyBzaG91bGQgbm90IGRpcmVjdGx5IHVzZSBhcnJheSBwdWJsaWMgQVBJcycp
OwotPC9zY3JpcHQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>