<?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>154671</bug_id>
          
          <creation_ts>2016-02-25 00:17:24 -0800</creation_ts>
          <short_desc>Move streams tests from web-platform-tests/streams-api to web-platform-tests/streams</short_desc>
          <delta_ts>2016-02-25 02:35:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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>commit-queue</cc>
    
    <cc>lforschler</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1168046</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-02-25 00:17:24 -0800</bug_when>
    <thetext>Streams API tests have been uploaded in wpt repo in the &quot;streams&quot; folder.
Let&apos;s align with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168047</commentid>
    <comment_count>1</comment_count>
      <attachid>272180</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-02-25 00:36:10 -0800</bug_when>
    <thetext>Created attachment 272180
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168048</commentid>
    <comment_count>2</comment_count>
      <attachid>272180</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2016-02-25 01:04:49 -0800</bug_when>
    <thetext>Comment on attachment 272180
Patch

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

Easy renaming. Please, make suggested changes in the changelog before landing.

&gt; LayoutTests/imported/w3c/ChangeLog:20
&gt; +        (test):
&gt; +        (test.const.highWaterMarkObjectGetter.get highWaterMark):
&gt; +        (test.const.highWaterMarkObjectGetterThrowing.get highWaterMark):
&gt; +        (set string_appeared_here):
&gt; +        (test.const.chunkGetter.get byteLength):
&gt; +        (test.const.chunkGetterThrowing.get byteLength):
&gt; +        (test.const.chunk.get byteLength):

Please, remove functions empty comments from here and the other files as it is non important and offers no relevant information.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168050</commentid>
    <comment_count>3</comment_count>
      <attachid>272181</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-02-25 01:21:48 -0800</bug_when>
    <thetext>Created attachment 272181
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168051</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-02-25 01:22:55 -0800</bug_when>
    <thetext>Thanks for the review.

(In reply to comment #2)
&gt; Comment on attachment 272180 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=272180&amp;action=review
&gt; 
&gt; Easy renaming. Please, make suggested changes in the changelog before
&gt; landing.
&gt; 
&gt; &gt; LayoutTests/imported/w3c/ChangeLog:20
&gt; &gt; +        (test):
&gt; &gt; +        (test.const.highWaterMarkObjectGetter.get highWaterMark):
&gt; &gt; +        (test.const.highWaterMarkObjectGetterThrowing.get highWaterMark):
&gt; &gt; +        (set string_appeared_here):
&gt; &gt; +        (test.const.chunkGetter.get byteLength):
&gt; &gt; +        (test.const.chunkGetterThrowing.get byteLength):
&gt; &gt; +        (test.const.chunk.get byteLength):
&gt; 
&gt; Please, remove functions empty comments from here and the other files as it
&gt; is non important and offers no relevant information.

Done in the landing patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168052</commentid>
    <comment_count>5</comment_count>
      <attachid>272181</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-25 01:25:22 -0800</bug_when>
    <thetext>Comment on attachment 272181
Patch for landing

Rejecting attachment 272181 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 272181, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Xabier Rodriguez Calvar found in /Volumes/Data/EWS/WebKit/LayoutTests/imported/w3c/ChangeLog does not appear to be a valid reviewer according to contributors.json.
/Volumes/Data/EWS/WebKit/LayoutTests/imported/w3c/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://webkit-queues.webkit.org/results/880911</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168053</commentid>
    <comment_count>6</comment_count>
      <attachid>272182</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-02-25 01:33:10 -0800</bug_when>
    <thetext>Created attachment 272182
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168054</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-02-25 01:34:09 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 272181 [details]
&gt; Patch for landing
&gt; 
&gt; Xabier Rodriguez Calvar found in
&gt; /Volumes/Data/EWS/WebKit/LayoutTests/imported/w3c/ChangeLog does not appear
&gt; to be a valid reviewer according to contributors.json.

Hum, it seems I should have written &quot;Xabier Rodriguez-Calvar&quot; and not &quot;Xabier Rodriguez Calvar&quot;. Let&apos;s see if it works now!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168073</commentid>
    <comment_count>8</comment_count>
      <attachid>272182</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-25 02:35:46 -0800</bug_when>
    <thetext>Comment on attachment 272182
Patch for landing

Clearing flags on attachment: 272182

Committed r197090: &lt;http://trac.webkit.org/changeset/197090&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168074</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-25 02:35:51 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272180</attachid>
            <date>2016-02-25 00:36:10 -0800</date>
            <delta_ts>2016-02-25 01:21:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154671-20160225093551.patch</filename>
            <type>text/plain</type>
            <size>402619</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3MDYyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpp
bmRleCA2NjE5OThjZmUwMjgyMGMwNzBjM2JlZDY5NGRmODExYjliNDAwOWRkLi41ZmUxNGQ1OWI4
MjhjZjlhOTVmMDQ5ZTc4NDk3ZmMxMjdhYTBlZDFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNTEgQEAKKzIwMTYtMDItMjUgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBNb3ZlIHN0cmVhbXMgdGVzdHMgZnJv
bSB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkgdG8gd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NDY3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgd2lsbCBhbGxvdyBwcmVwYXJpbmcgcmVzeW5jaW5nIHdlYi1wbGF0Zm9ybS10ZXN0cy4KKwor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL1JFQURNRS50eHQ6IFJlbmFtZWQg
ZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMt
YXBpL1JFQURNRS50eHQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0
ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL2J5dGUt
bGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0LgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuaHRtbDogUmVu
YW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy1hcGkvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5odG1sLgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuanM6
IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMtYXBpL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuanMuCisgICAgICAgICh0
ZXN0KToKKyAgICAgICAgKHRlc3QuY29uc3QuaGlnaFdhdGVyTWFya09iamVjdEdldHRlci5nZXQg
aGlnaFdhdGVyTWFyayk6CisgICAgICAgICh0ZXN0LmNvbnN0LmhpZ2hXYXRlck1hcmtPYmplY3RH
ZXR0ZXJUaHJvd2luZy5nZXQgaGlnaFdhdGVyTWFyayk6CisgICAgICAgIChzZXQgc3RyaW5nX2Fw
cGVhcmVkX2hlcmUpOgorICAgICAgICAodGVzdC5jb25zdC5jaHVua0dldHRlci5nZXQgYnl0ZUxl
bmd0aCk6CisgICAgICAgICh0ZXN0LmNvbnN0LmNodW5rR2V0dGVyVGhyb3dpbmcuZ2V0IGJ5dGVM
ZW5ndGgpOgorICAgICAgICAodGVzdC5jb25zdC5jaHVuay5nZXQgYnl0ZUxlbmd0aCk6CisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1l
eHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQu
dHh0LgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2NvdW50LXF1ZXVpbmct
c3RyYXRlZ3kuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvY291bnQtcXVldWluZy1zdHJhdGVneS5odG1sLgor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRl
Z3kuanM6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMtYXBpL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuanMuCisgICAgICAgICh0
ZXN0KToKKyAgICAgICAgKHRlc3QuY29uc3QuaGlnaFdhdGVyTWFya09iamVjdEdldHRlci5nZXQg
aGlnaFdhdGVyTWFyayk6CisgICAgICAgICh0ZXN0LmNvbnN0LmhpZ2hXYXRlck1hcmtPYmplY3RH
ZXR0ZXJUaHJvd2luZy5nZXQgaGlnaFdhdGVyTWFyayk6CisgICAgICAgIChzZXQgc3RyaW5nX2Fw
cGVhcmVkX2hlcmUpOgorICAgICAgICAodGVzdC5jb25zdC5jaHVuay5nZXQgYnl0ZUxlbmd0aCk6
CisgICAgICAgICh0ZXN0LmNvbnN0LmNodW5rR2V0dGVyLmdldCBieXRlTGVuZ3RoKToKKyAgICAg
ICAgKHRlc3QuY29uc3QuY2h1bmtHZXR0ZXJUaHJvd2luZy5nZXQgYnl0ZUxlbmd0aCk6CisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3Ry
YXRlZ2llcy1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0
cmF0ZWdpZXMtZXhwZWN0ZWQudHh0LgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuaHRtbDogUmVuYW1lZCBmcm9tIExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVh
ZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5odG1sLgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuanM6IFJlbmFt
ZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuanMuCisgICAgICAgICh0ZXN0
KToKKyAgICAgICAgKGdldCBzdHJpbmdfYXBwZWFyZWRfaGVyZSk6CisgICAgICAgIChwcm9taXNl
X3Rlc3QudC5jb25zdC5ycy5uZXcuUmVhZGFibGVTdHJlYW0uc3RhcnQpOgorICAgICAgICAocHJv
bWlzZV90ZXN0LnQuc2l6ZSk6CisgICAgICAgIChwcm9taXNlX3Rlc3QpOgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmct
c291cmNlcy1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVu
ZGVybHlpbmctc291cmNlcy1leHBlY3RlZC50eHQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmh0bWw6
IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5odG1s
LgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
YmFkLXVuZGVybHlpbmctc291cmNlcy5qczogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9i
YWQtdW5kZXJseWluZy1zb3VyY2VzLmpzLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChnZXQg
c3RyaW5nX2FwcGVhcmVkX2hlcmUpOgorICAgICAgICAocHJvbWlzZV90ZXN0LnQuY29uc3QucnMu
bmV3LlJlYWRhYmxlU3RyZWFtLmdldCBwdWxsKToKKyAgICAgICAgKHByb21pc2VfdGVzdC50LmNv
bnN0LnJzLm5ldy5SZWFkYWJsZVN0cmVhbS5wdWxsKToKKyAgICAgICAgKHByb21pc2VfdGVzdC50
LmNvbnN0LnJzLm5ldy5SZWFkYWJsZVN0cmVhbS5nZXQgY2FuY2VsKToKKyAgICAgICAgKHByb21p
c2VfdGVzdC50LmNvbnN0LnJzLm5ldy5SZWFkYWJsZVN0cmVhbS5jYW5jZWwpOgorICAgICAgICAo
cHJvbWlzZV90ZXN0KToKKyAgICAgICAgKHByb21pc2VfdGVzdC50LmNvbnN0LmNsb3NlZC5uZXcu
UmVhZGFibGVTdHJlYW0uc3RhcnQpOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBm
cm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1h
cGkvcmVhZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3MtZXhwZWN0ZWQudHh0LgorICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tz
Lmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmh0bWwuCisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9icmFu
ZC1jaGVja3MuanM6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmpz
LgorICAgICAgICAodGVzdCk6CisgICAgICAgIChmYWtlUmVhZGFibGVTdHJlYW0pOgorICAgICAg
ICAocmVhbFJlYWRhYmxlU3RyZWFtKToKKyAgICAgICAgKGZha2VSZWFkYWJsZVN0cmVhbVJlYWRl
ci5yZXR1cm4uZ2V0IGNsb3NlZCk6CisgICAgICAgIChmYWtlUmVhZGFibGVTdHJlYW1SZWFkZXIp
OgorICAgICAgICAoZmFrZVJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcik6CisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwtZXhwZWN0ZWQu
dHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC1leHBlY3RlZC50eHQuCisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5j
ZWwuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuaHRtbC4KKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5q
czogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuanMuCisgICAgICAgIChwcm9t
aXNlX3Rlc3QpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0
aW9uLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1
aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRl
Z3ktaW50ZWdyYXRpb24uaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1x
dWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmh0bWwuCisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWlu
dGVncmF0aW9uLmpzOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmct
c3RyYXRlZ3ktaW50ZWdyYXRpb24uanMuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKHByb21p
c2VfdGVzdCk6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24tMS1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3Jl
YWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLTEtZXhwZWN0ZWQudHh0LgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1j
b2xsZWN0aW9uLTEuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNv
bGxlY3Rpb24tMS5odG1sLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLTItZXhwZWN0ZWQudHh0OiBSZW5hbWVk
IGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
LWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi0yLWV4cGVjdGVkLnR4dC4K
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dh
cmJhZ2UtY29sbGVjdGlvbi0yLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2Fy
YmFnZS1jb2xsZWN0aW9uLTIuaHRtbC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi1leHBlY3RlZC50eHQ6IFJl
bmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLWV4cGVjdGVkLnR4
dC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2dhcmJhZ2UtY29sbGVjdGlvbi5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dh
cmJhZ2UtY29sbGVjdGlvbi5odG1sLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmpzOiBSZW5hbWVkIGZyb20g
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9y
ZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5qcy4KKyAgICAgICAgKHByb21pc2Vf
dGVzdCk6CisgICAgICAgIChwcm9taXNlX3Rlc3QudC5jb25zdC5jbG9zZWRQcm9taXNlLm5ldy5S
ZWFkYWJsZVN0cmVhbS5zdGFydCk6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVh
ZGFibGUtc3RyZWFtcy9nZW5lcmFsLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuaHRtbDogUmVuYW1lZCBm
cm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1h
cGkvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLmh0bWwuCisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLmpzOiBSZW5hbWVkIGZyb20g
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9y
ZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuanMuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKHBy
b21pc2VfdGVzdCk6CisgICAgICAgIChwcm9taXNlX3Rlc3QuU291cmNlLnByb3RvdHlwZS5zdGFy
dCk6CisgICAgICAgIChwcm9taXNlX3Rlc3QuU291cmNlLnByb3RvdHlwZS5wdWxsKToKKyAgICAg
ICAgKHByb21pc2VfdGVzdC5Tb3VyY2UucHJvdG90eXBlLmNhbmNlbCk6CisgICAgICAgIChwcm9t
aXNlX3Rlc3QuU291cmNlKToKKyAgICAgICAgKHByb21pc2VfdGVzdC50LmNvbnN0LnJzLm5ldy5S
ZWFkYWJsZVN0cmVhbS5zdGFydCk6CisgICAgICAgIChwcm9taXNlX3Rlc3QudC5jb25zdC5ycy5u
ZXcuUmVhZGFibGVTdHJlYW0ucHVsbCk6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9waXBlLXRocm91Z2gtZXhwZWN0ZWQudHh0OiBSZW5hbWVk
IGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
LWFwaS9yZWFkYWJsZS1zdHJlYW1zL3BpcGUtdGhyb3VnaC1leHBlY3RlZC50eHQuCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9waXBlLXRocm91
Z2guaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9waXBlLXRocm91Z2guaHRtbC4K
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3Bp
cGUtdGhyb3VnaC5qczogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9waXBlLXRocm91Z2gu
anMuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKHRlc3QuY29uc3QudGhyb3dpbmdQaXBlVG8u
Z2V0IHBpcGVUbyk6CisgICAgICAgICh0ZXN0LmNvbnN0LnRocm93aW5nV3JpdGFibGUuZ2V0IHdy
aXRhYmxlKToKKyAgICAgICAgKHRlc3QuY29uc3QudGhyb3dpbmdSZWFkYWJsZS5nZXQgcmVhZGFi
bGUpOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRh
YmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQuCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW0tcmVhZGVyLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUt
c3RyZWFtLXJlYWRlci5odG1sLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5qczogUmVuYW1lZCBmcm9t
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkv
cmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmpzLgorICAgICAgICAodGVz
dCk6CisgICAgICAgIChwcm9taXNlX3Rlc3QpOgorICAgICAgICAocHJvbWlzZV90ZXN0LnQuY29u
c3QucnMubmV3LlJlYWRhYmxlU3RyZWFtLnN0YXJ0KToKKyAgICAgICAgKHByb21pc2VfdGVzdC50
LmNvbnN0LnJzLm5ldy5SZWFkYWJsZVN0cmVhbS5jYW5jZWwpOgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLWV4cGVjdGVkLnR4dDogUmVu
YW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy90ZWUtZXhwZWN0ZWQudHh0LgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmh0bWw6IFJlbmFt
ZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmh0bWwuCisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuanM6IFJlbmFtZWQgZnJvbSBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRh
YmxlLXN0cmVhbXMvdGVlLmpzLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChwcm9taXNlX3Rl
c3QudC5jb25zdC5ycy5uZXcuUmVhZGFibGVTdHJlYW0uc3RhcnQpOgorICAgICAgICAocHJvbWlz
ZV90ZXN0KToKKyAgICAgICAgKHByb21pc2VfdGVzdC50LmNvbnN0LnJzLm5ldy5SZWFkYWJsZVN0
cmVhbS5wdWxsKToKKyAgICAgICAgKHByb21pc2VfdGVzdC50LmNvbnN0LnJzLm5ldy5SZWFkYWJs
ZVN0cmVhbS5jYW5jZWwpOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFi
bGUtc3RyZWFtcy90ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0LgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmh0bWw6IFJlbmFtZWQg
ZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMt
YXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmh0bWwuCisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuanM6IFJlbmFtZWQg
ZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMt
YXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmpzLgorICAgICAgICAocmV0dXJuLm5ldy5S
ZWFkYWJsZVN0cmVhbS5zdGFydCk6CisgICAgICAgIChjb25zdC5zdHJlYW0ubmV3LlJlYWRhYmxl
U3RyZWFtLnN0YXJ0KToKKyAgICAgICAgKHJldHVybi5zdHJlYW1BbmREZWZhdWx0UmVhZGVyLm5l
dy5SZWFkYWJsZVN0cmVhbS5zdGFydCk6CisgICAgICAgIChjb25zdC5yZXN1bHQuc3RyZWFtQW5k
RGVmYXVsdFJlYWRlci5uZXcuUmVhZGFibGVTdHJlYW0uc3RhcnQpOgorICAgICAgICAoc3RyZWFt
QW5kRGVmYXVsdFJlYWRlcik6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVzb3VyY2VzL3JzLXRlc3QtdGVtcGxhdGVzLmpzOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZXNvdXJjZXMvcnMt
dGVzdC10ZW1wbGF0ZXMuanMuCisgICAgICAgIChzZWxmLnRlbXBsYXRlZFJTRW1wdHkpOgorICAg
ICAgICAoc2VsZi50ZW1wbGF0ZWRSU0Nsb3NlZCk6CisgICAgICAgIChzZWxmLnRlbXBsYXRlZFJT
RXJyb3JlZCk6CisgICAgICAgIChzZWxmLnRlbXBsYXRlZFJTRXJyb3JlZFN5bmNPbmx5KToKKyAg
ICAgICAgKHNlbGYudGVtcGxhdGVkUlNFbXB0eVJlYWRlcik6CisgICAgICAgIChzZWxmLnRlbXBs
YXRlZFJTQ2xvc2VkUmVhZGVyKToKKyAgICAgICAgKHNlbGYudGVtcGxhdGVkUlNFcnJvcmVkUmVh
ZGVyKToKKyAgICAgICAgKHNlbGYudGVtcGxhdGVkUlNUd29DaHVua3NPcGVuUmVhZGVyKToKKyAg
ICAgICAgKHNlbGYudGVtcGxhdGVkUlNUd29DaHVua3NDbG9zZWRSZWFkZXIpOgorICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jlc291cmNlcy9ycy11dGlscy5qczogUmVuYW1l
ZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy1hcGkvcmVzb3VyY2VzL3JzLXV0aWxzLmpzLgorICAgICAgICAoUmFuZG9tUHVzaFNvdXJjZSk6
CisgICAgICAgIChSYW5kb21QdXNoU291cmNlLnByb3RvdHlwZS5yZWFkU3RhcnQud3JpdGVDaHVu
ayk6CisgICAgICAgIChSYW5kb21QdXNoU291cmNlLnByb3RvdHlwZS5yZWFkU3RhcnQpOgorICAg
ICAgICAoUmFuZG9tUHVzaFNvdXJjZS5wcm90b3R5cGUucmVhZFN0b3ApOgorICAgICAgICAocmFu
ZG9tQ2h1bmspOgorICAgICAgICAocHVtcCk6CisgICAgICAgIChyZWFkYWJsZVN0cmVhbVRvQXJy
YXkpOgorICAgICAgICAocHJvdG90eXBlLm9wZW4pOgorICAgICAgICAocHJvdG90eXBlLnJlYWQp
OgorICAgICAgICAocHJvdG90eXBlLmNsb3NlKToKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qczogUmVuYW1lZCBmcm9tIExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVz
b3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMuCisgICAgICAgICh3b3JrZXJfdGVzdCk6CisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanM6
IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMtYXBpL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzLgorICAgICAgICAoc2VsZi5nZXR0
ZXJSZWplY3RzKToKKyAgICAgICAgKHNlbGYubWV0aG9kUmVqZWN0cyk6CisgICAgICAgIChzZWxm
LmdldHRlclRocm93cyk6CisgICAgICAgIChzZWxmLm1ldGhvZFRocm93cyk6CisgICAgICAgIChz
ZWxmLmdhcmJhZ2VDb2xsZWN0KToKKwogMjAxNi0wMi0yNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAgICAgIFtGZXRjaCBBUEldIEltcGxlbWVudCBG
ZXRjaCBBUEkgUmVzcG9uc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvUkVBRE1FLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvUkVBRE1FLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2ZjOTFmNTk0NmEzOGQxNDJiMDUxYzgxMWQ2MTU4
OWY2ZTAwZTZlYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBp
L1JFQURNRS50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLVRoaXMgZGlyZWN0b3J5
IGlzIGltcG9ydGVkIGZyb20gdGhlIHRoZSBTdHJlYW1zIEFQSSByZXBvc2l0b3J5LgotCi1UaGVy
ZSBpcyBhIHBsYW4gdG8gbW92ZSB0aGVzZSB0ZXN0cyB0byB3ZWItcGxhdGZvcm0tdGVzdHMgcmVw
b3NpdG9yeSBzbyBmcm9tIHRoYXQgbW9tZW50IG9uIHRoaXMgaW1wb3J0YXRpb24gd2lsbCBiZQot
YXV0b21hdGljLgotCi1DdXJyZW50IHZlcnNpb246IGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cv
c3RyZWFtcy90cmVlLzdmMTkxNzU0MTVkOWI1N2FmMDRjYjhjMmNkMzU1Y2EzODEwMWYwYWEvcmVm
ZXJlbmNlLWltcGxlbWVudGF0aW9uL3dlYi1wbGF0Zm9ybS10ZXN0cy4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvYnl0
ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL2J5dGUtbGVuZ3RoLXF1ZXVp
bmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
MmQ5NjQxNTAyOTk0ZTMyZDQyZWJjOWJlMmQ3YjM0ZjE0NWY1Y2I0Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVn
eS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0KLVBBU1MgQ2Fu
IGNvbnN0cnVjdCBhIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kgd2l0aCBhIHZhbGlkIGhpZ2gg
d2F0ZXIgbWFyayAKLVBBU1MgQ2FuIGNvbnN0cnVjdCBhIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRl
Z3kgd2l0aCBhbnkgdmFsdWUgYXMgaXRzIGhpZ2ggd2F0ZXIgbWFyayAKLVBBU1MgQnl0ZUxlbmd0
aFF1ZXVpbmdTdHJhdGVneSBjb25zdHJ1Y3RvciBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3Ry
YW5nZSBhcmd1bWVudHMgCi1QQVNTIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kgc2l6ZSBiZWhh
dmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1bWVudHMgCi1QQVNTIEJ5dGVMZW5ndGhR
dWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUgc2hvdWxkIHdvcmsgZ2VuZXJpY2FsbHkgb24g
aXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMgCi1QQVNTIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRl
Z3kgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgcHJvcGVydGllcyAKLVBBU1MgQnl0ZUxlbmd0
aFF1ZXVpbmdTdHJhdGVneSdzIGhpZ2hXYXRlck1hcmsgcHJvcGVydHkgY2FuIGJlIHNldCB0byBh
bnl0aGluZyAKLUZBSUwgTG9hZCBieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmpzIHdpdGgg
U2hhcmVkV29ya2VyIGFzc2VydF91bnJlYWNoZWQ6IFNoYXJlZFdvcmtlciBpcyB1bmF2YWlsYWJs
ZSBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKLUZBSUwgVW50aXRsZWQgdW5kZWZpbmVkIGlzIG5v
dCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmdldFJlZ2lz
dHJhdGlvbicpCi1QQVNTIENhbiBjb25zdHJ1Y3QgYSBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5
IHdpdGggYSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsgCi1QQVNTIENhbiBjb25zdHJ1Y3QgYSBCeXRl
TGVuZ3RoUXVldWluZ1N0cmF0ZWd5IHdpdGggYW55IHZhbHVlIGFzIGl0cyBoaWdoIHdhdGVyIG1h
cmsgCi1QQVNTIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kgY29uc3RydWN0b3IgYmVoYXZlcyBh
cyBleHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRzIAotUEFTUyBCeXRlTGVuZ3RoUXVldWlu
Z1N0cmF0ZWd5IHNpemUgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRz
IAotUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplIHNob3VsZCB3
b3JrIGdlbmVyaWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzIAotUEFTUyBCeXRl
TGVuZ3RoUXVldWluZ1N0cmF0ZWd5IGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IHByb3BlcnRp
ZXMgCi1QQVNTIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kncyBoaWdoV2F0ZXJNYXJrIHByb3Bl
cnR5IGNhbiBiZSBzZXQgdG8gYW55dGhpbmcgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvYnl0ZS1sZW5ndGgtcXVl
dWluZy1zdHJhdGVneS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zLWFwaS9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzZjE1YWNiOWZmYWI2OGFlMjg1ZjU3ODI2NzE3
N2JmYjdlNWRiMjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFw
aS9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwx
MiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJz
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5q
cyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSJieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci13b3JrZXJfdGVzdCgnYnl0
ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5qcycpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL2J5
dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRl
Z3kuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0NDA3YWY5OTEzODg5M2I4YjUy
OTJhYTI0ODEwMDQxNjJlNzJlNWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zLWFwaS9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmpzCisrKyAvZGV2L251bGwK
QEAgLTEsMTA3ICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotaWYgKHNlbGYuaW1wb3J0U2NyaXB0
cykgewotICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnKTsK
LX0KLQotdGVzdCgoKSA9PiB7Ci0KLSAgbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koeyBo
aWdoV2F0ZXJNYXJrOiA0IH0pOwotCi19LCAnQ2FuIGNvbnN0cnVjdCBhIEJ5dGVMZW5ndGhRdWV1
aW5nU3RyYXRlZ3kgd2l0aCBhIHZhbGlkIGhpZ2ggd2F0ZXIgbWFyaycpOwotCi10ZXN0KCgpID0+
IHsKLQotICBmb3IgKGNvbnN0IGhpZ2hXYXRlck1hcmsgb2YgWy1JbmZpbml0eSwgTmFOLCAnZm9v
Jywge30sICgpID0+IHt9XSkgewotICAgIGNvbnN0IHN0cmF0ZWd5ID0gbmV3IEJ5dGVMZW5ndGhR
dWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrIH0pOwotICAgIGFzc2VydF9lcXVhbHMoc3Ry
YXRlZ3kuaGlnaFdhdGVyTWFyaywgaGlnaFdhdGVyTWFyaywgYCR7aGlnaFdhdGVyTWFya30gZ2V0
cyBzZXQgY29ycmVjdGx5YCk7Ci0gIH0KLQotfSwgJ0NhbiBjb25zdHJ1Y3QgYSBCeXRlTGVuZ3Ro
UXVldWluZ1N0cmF0ZWd5IHdpdGggYW55IHZhbHVlIGFzIGl0cyBoaWdoIHdhdGVyIG1hcmsnKTsK
LQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgaGlnaFdhdGVyTWFyayA9IDE7Ci0gIGNvbnN0IGhp
Z2hXYXRlck1hcmtPYmplY3RHZXR0ZXIgPSB7Ci0gICAgZ2V0IGhpZ2hXYXRlck1hcmsoKSB7IHJl
dHVybiBoaWdoV2F0ZXJNYXJrOyB9Ci0gIH07Ci0gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCd3
b3chJyk7Ci0gIGNvbnN0IGhpZ2hXYXRlck1hcmtPYmplY3RHZXR0ZXJUaHJvd2luZyA9IHsKLSAg
ICBnZXQgaGlnaFdhdGVyTWFyaygpIHsgdGhyb3cgZXJyb3I7IH0KLSAgfTsKLQotICBhc3NlcnRf
dGhyb3dzKHsgbmFtZTogJ1R5cGVFcnJvcicgfSwgKCkgPT4gbmV3IEJ5dGVMZW5ndGhRdWV1aW5n
U3RyYXRlZ3koKSwgJ2NvbnN0cnVjdGlvbiBmYWlscyB3aXRoIHVuZGVmaW5lZCcpOwotICBhc3Nl
cnRfdGhyb3dzKHsgbmFtZTogJ1R5cGVFcnJvcicgfSwgKCkgPT4gbmV3IEJ5dGVMZW5ndGhRdWV1
aW5nU3RyYXRlZ3kobnVsbCksICdjb25zdHJ1Y3Rpb24gZmFpbHMgd2l0aCBudWxsJyk7Ci0gIGFz
c2VydF90aHJvd3MoeyBuYW1lOiAnRXJyb3InIH0sICgpID0+IG5ldyBCeXRlTGVuZ3RoUXVldWlu
Z1N0cmF0ZWd5KGhpZ2hXYXRlck1hcmtPYmplY3RHZXR0ZXJUaHJvd2luZyksCi0gICAgJ2NvbnN0
cnVjdGlvbiBmYWlscyB3aXRoIGFuIG9iamVjdCB3aXRoIGEgdGhyb3dpbmcgaGlnaFdhdGVyTWFy
ayBnZXR0ZXInKTsKLQotICAvLyBTaG91bGQgbm90IGZhaWw6Ci0gIG5ldyBCeXRlTGVuZ3RoUXVl
dWluZ1N0cmF0ZWd5KCdwb3RhdG8nKTsKLSAgbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3ko
e30pOwotICBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneShoaWdoV2F0ZXJNYXJrT2JqZWN0
R2V0dGVyKTsKLQotfSwgJ0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kgY29uc3RydWN0b3IgYmVo
YXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRzJyk7Ci0KLXRlc3QoKCkgPT4g
ewotCi0gIGNvbnN0IHNpemUgPSAxMDI0OwotICBjb25zdCBjaHVuayA9IHsgYnl0ZUxlbmd0aDog
c2l6ZSB9OwotICBjb25zdCBjaHVua0dldHRlciA9IHsKLSAgICBnZXQgYnl0ZUxlbmd0aCgpIHsg
cmV0dXJuIHNpemU7IH0KLSAgfTsKLSAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ3dvdyEnKTsK
LSAgY29uc3QgY2h1bmtHZXR0ZXJUaHJvd2luZyA9IHsKLSAgICBnZXQgYnl0ZUxlbmd0aCgpIHsg
dGhyb3cgZXJyb3I7IH0KLSAgfTsKLSAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICdUeXBlRXJyb3In
IH0sICgpID0+IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoKSwgJ3Np
emUgZmFpbHMgd2l0aCB1bmRlZmluZWQnKTsKLSAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICdUeXBl
RXJyb3InIH0sICgpID0+IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUo
bnVsbCksICdzaXplIGZhaWxzIHdpdGggbnVsbCcpOwotICBhc3NlcnRfZXF1YWxzKEJ5dGVMZW5n
dGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoJ3BvdGF0bycpLCB1bmRlZmluZWQsCi0g
ICAgJ3NpemUgc3VjY2VlZHMgd2l0aCB1bmRlZmluZWQgd2l0aCBhIHJhbmRvbSBub24tb2JqZWN0
IHR5cGUnKTsKLSAgYXNzZXJ0X2VxdWFscyhCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3Rv
dHlwZS5zaXplKHt9KSwgdW5kZWZpbmVkLAotICAgICdzaXplIHN1Y2NlZWRzIHdpdGggdW5kZWZp
bmVkIHdpdGggYW4gb2JqZWN0IHdpdGhvdXQgaHdtIHByb3BlcnR5Jyk7Ci0gIGFzc2VydF9lcXVh
bHMoQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZShjaHVuayksIHNpemUs
Ci0gICAgJ3NpemUgc3VjY2VlZHMgd2l0aCB0aGUgcmlnaHQgYW1vdW50IHdpdGggYW4gb2JqZWN0
IHdpdGggYSBod20nKTsKLSAgYXNzZXJ0X2VxdWFscyhCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5
LnByb3RvdHlwZS5zaXplKGNodW5rR2V0dGVyKSwgc2l6ZSwKLSAgICAnc2l6ZSBzdWNjZWVkcyB3
aXRoIHRoZSByaWdodCBhbW91bnQgd2l0aCBhbiBvYmplY3Qgd2l0aCBhIGh3bSBnZXR0ZXInKTsK
LSAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICdFcnJvcicgfSwgKCkgPT4gQnl0ZUxlbmd0aFF1ZXVp
bmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZShjaHVua0dldHRlclRocm93aW5nKSwKLSAgICAnc2l6
ZSBmYWlscyB3aXRoIHRoZSBlcnJvciB0aHJvd24gYnkgdGhlIGdldHRlcicpOwotCi19LCAnQnl0
ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSBzaXplIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJh
bmdlIGFyZ3VtZW50cycpOwotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCB0aGlzVmFsdWUgPSBu
dWxsOwotICBjb25zdCByZXR1cm5WYWx1ZSA9IHsgJ3JldHVybmVkIGZyb20nOiAnYnl0ZUxlbmd0
aCBnZXR0ZXInIH07Ci0gIGNvbnN0IGNodW5rID0gewotICAgIGdldCBieXRlTGVuZ3RoKCkgeyBy
ZXR1cm4gcmV0dXJuVmFsdWU7IH0KLSAgfTsKLQotICBhc3NlcnRfZXF1YWxzKEJ5dGVMZW5ndGhR
dWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUuY2FsbCh0aGlzVmFsdWUsIGNodW5rKSwgcmV0
dXJuVmFsdWUpOwotCi19LCAnQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6
ZSBzaG91bGQgd29yayBnZW5lcmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cycp
OwotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCBzdHJhdGVneSA9IG5ldyBCeXRlTGVuZ3RoUXVl
dWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KTsKLQotICBhc3NlcnRfb2JqZWN0X2Vx
dWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHN0cmF0ZWd5LCAnaGlnaFdhdGVy
TWFyaycpLAotICAgIHsgdmFsdWU6IDQsIHdyaXRhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiB0cnVl
LCBjb25maWd1cmFibGU6IHRydWUgfSwKLSAgICAnaGlnaFdhdGVyTWFyayBwcm9wZXJ0eSBzaG91
bGQgYmUgYSBkYXRhIHByb3BlcnR5IHdpdGggdGhlIHZhbHVlIHBhc3NlZCB0aGUgY29uc3RydWN0
b3InKTsKLSAgYXNzZXJ0X2VxdWFscyh0eXBlb2Ygc3RyYXRlZ3kuc2l6ZSwgJ2Z1bmN0aW9uJyk7
Ci0KLX0sICdCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IGluc3RhbmNlcyBoYXZlIHRoZSBjb3Jy
ZWN0IHByb3BlcnRpZXMnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3Qgc3RyYXRlZ3kgPSBu
ZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSk7Ci0gIGFz
c2VydF9lcXVhbHMoc3RyYXRlZ3kuaGlnaFdhdGVyTWFyaywgNCk7Ci0KLSAgc3RyYXRlZ3kuaGln
aFdhdGVyTWFyayA9IDEwOwotICBhc3NlcnRfZXF1YWxzKHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmss
IDEwKTsKLQotICBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrID0gJ2JhbmFuYSc7Ci0gIGFzc2VydF9l
cXVhbHMoc3RyYXRlZ3kuaGlnaFdhdGVyTWFyaywgJ2JhbmFuYScpOwotCi19LCAnQnl0ZUxlbmd0
aFF1ZXVpbmdTdHJhdGVneVwncyBoaWdoV2F0ZXJNYXJrIHByb3BlcnR5IGNhbiBiZSBzZXQgdG8g
YW55dGhpbmcnKTsKLQotZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy1hcGkvY291bnQtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjMjdhNTViZjc4YTFmN2Q0NGI2NWU0OWQ0NmM2ZTlk
MjI5OTkzZWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9j
b3VudC1xdWV1aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE4
ICswLDAgQEAKLQotUEFTUyBDYW4gY29uc3RydWN0IGEgQ291bnRRdWV1aW5nU3RyYXRlZ3kgd2l0
aCBhIHZhbGlkIGhpZ2ggd2F0ZXIgbWFyayAKLVBBU1MgQ2FuIGNvbnN0cnVjdCBhIENvdW50UXVl
dWluZ1N0cmF0ZWd5IHdpdGggYW55IHZhbHVlIGFzIGl0cyBoaWdoIHdhdGVyIG1hcmsgCi1QQVNT
IENvdW50UXVldWluZ1N0cmF0ZWd5IGNvbnN0cnVjdG9yIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0
aCBzdHJhbmdlIGFyZ3VtZW50cyAKLVBBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBl
LnNpemUgc2hvdWxkIHdvcmsgZ2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVu
dHMgCi1QQVNTIENvdW50UXVldWluZ1N0cmF0ZWd5IHNpemUgYmVoYXZlcyBhcyBleHBlY3RlZCB3
aXRoIHN0cmFuZ2UgYXJndW1lbnRzIAotUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneSBpbnN0YW5j
ZXMgaGF2ZSB0aGUgY29ycmVjdCBwcm9wZXJ0aWVzIAotUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVn
eSdzIGhpZ2hXYXRlck1hcmsgcHJvcGVydHkgY2FuIGJlIHNldCB0byBhbnl0aGluZyAKLUZBSUwg
TG9hZCBjb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmpzIHdpdGggU2hhcmVkV29ya2VyIGFzc2VydF91
bnJlYWNoZWQ6IFNoYXJlZFdvcmtlciBpcyB1bmF2YWlsYWJsZSBSZWFjaGVkIHVucmVhY2hhYmxl
IGNvZGUKLUZBSUwgVW50aXRsZWQgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRp
bmcgJ25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmdldFJlZ2lzdHJhdGlvbicpCi1QQVNTIENhbiBj
b25zdHJ1Y3QgYSBDb3VudFF1ZXVpbmdTdHJhdGVneSB3aXRoIGEgdmFsaWQgaGlnaCB3YXRlciBt
YXJrIAotUEFTUyBDYW4gY29uc3RydWN0IGEgQ291bnRRdWV1aW5nU3RyYXRlZ3kgd2l0aCBhbnkg
dmFsdWUgYXMgaXRzIGhpZ2ggd2F0ZXIgbWFyayAKLVBBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3kg
Y29uc3RydWN0b3IgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRzIAot
UEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSBzaG91bGQgd29yayBnZW5l
cmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cyAKLVBBU1MgQ291bnRRdWV1aW5n
U3RyYXRlZ3kgc2l6ZSBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1bWVudHMg
Ci1QQVNTIENvdW50UXVldWluZ1N0cmF0ZWd5IGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IHBy
b3BlcnRpZXMgCi1QQVNTIENvdW50UXVldWluZ1N0cmF0ZWd5J3MgaGlnaFdhdGVyTWFyayBwcm9w
ZXJ0eSBjYW4gYmUgc2V0IHRvIGFueXRoaW5nIAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL2NvdW50LXF1ZXVpbmct
c3RyYXRlZ3kuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy1hcGkvY291bnQtcXVldWluZy1zdHJhdGVneS5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAyYWZkMTI2ODg2NWNjOGFiN2U5OGQ3MTNhZGI5OGY5NWRlZTg1OTNj
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvY291bnQtcXVl
dWluZy1zdHJhdGVneS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwvc2NyaXB0PgotCi08
c2NyaXB0IHNyYz0iY291bnQtcXVldWluZy1zdHJhdGVneS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
PgotJ3VzZSBzdHJpY3QnOwotd29ya2VyX3Rlc3QoJ2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuanMn
KTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmpzIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9jb3Vu
dC1xdWV1aW5nLXN0cmF0ZWd5LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWUw
MDYzZjU3ZDA5ZGQ0N2ZhZjY4MWVjODA5YTBmODM3NjNkNWM2Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvY291bnQtcXVldWluZy1zdHJhdGVneS5qcworKysg
L2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi0ndXNlIHN0cmljdCc7Ci0KLWlmIChzZWxmLmlt
cG9ydFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzJyk7Ci19Ci0KLXRlc3QoKCkgPT4gewotCi0gIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVn
eSh7IGhpZ2hXYXRlck1hcms6IDQgfSk7Ci0KLX0sICdDYW4gY29uc3RydWN0IGEgQ291bnRRdWV1
aW5nU3RyYXRlZ3kgd2l0aCBhIHZhbGlkIGhpZ2ggd2F0ZXIgbWFyaycpOwotCi10ZXN0KCgpID0+
IHsKLQotICBmb3IgKGNvbnN0IGhpZ2hXYXRlck1hcmsgb2YgWy1JbmZpbml0eSwgTmFOLCAnZm9v
Jywge30sICgpID0+IHt9XSkgewotICAgIGNvbnN0IHN0cmF0ZWd5ID0gbmV3IENvdW50UXVldWlu
Z1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyayB9KTsKLSAgICBhc3NlcnRfZXF1YWxzKHN0cmF0ZWd5
LmhpZ2hXYXRlck1hcmssIGhpZ2hXYXRlck1hcmssIGAke2hpZ2hXYXRlck1hcmt9IGdldHMgc2V0
IGNvcnJlY3RseWApOwotICB9Ci0KLX0sICdDYW4gY29uc3RydWN0IGEgQ291bnRRdWV1aW5nU3Ry
YXRlZ3kgd2l0aCBhbnkgdmFsdWUgYXMgaXRzIGhpZ2ggd2F0ZXIgbWFyaycpOwotCi10ZXN0KCgp
ID0+IHsKLQotICBjb25zdCBoaWdoV2F0ZXJNYXJrID0gMTsKLSAgY29uc3QgaGlnaFdhdGVyTWFy
a09iamVjdEdldHRlciA9IHsKLSAgICBnZXQgaGlnaFdhdGVyTWFyaygpIHsgcmV0dXJuIGhpZ2hX
YXRlck1hcms7IH0KLSAgfTsKLSAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ3dvdyEnKTsKLSAg
Y29uc3QgaGlnaFdhdGVyTWFya09iamVjdEdldHRlclRocm93aW5nID0gewotICAgIGdldCBoaWdo
V2F0ZXJNYXJrKCkgeyB0aHJvdyBlcnJvcjsgfQotICB9OwotCi0gIGFzc2VydF90aHJvd3MoeyBu
YW1lOiAnVHlwZUVycm9yJyB9LCAoKSA9PiBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koKSwgJ2Nv
bnN0cnVjdGlvbiBmYWlscyB3aXRoIHVuZGVmaW5lZCcpOwotICBhc3NlcnRfdGhyb3dzKHsgbmFt
ZTogJ1R5cGVFcnJvcicgfSwgKCkgPT4gbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KG51bGwpLCAn
Y29uc3RydWN0aW9uIGZhaWxzIHdpdGggbnVsbCcpOwotICBhc3NlcnRfdGhyb3dzKHsgbmFtZTog
J0Vycm9yJyB9LCAoKSA9PiBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koaGlnaFdhdGVyTWFya09i
amVjdEdldHRlclRocm93aW5nKSwKLSAgICAnY29uc3RydWN0aW9uIGZhaWxzIHdpdGggYW4gb2Jq
ZWN0IHdpdGggYSB0aHJvd2luZyBoaWdoV2F0ZXJNYXJrIGdldHRlcicpOwotCi0gIC8vIFNob3Vs
ZCBub3QgZmFpbDoKLSAgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KCdwb3RhdG8nKTsKLSAgbmV3
IENvdW50UXVldWluZ1N0cmF0ZWd5KHt9KTsKLSAgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KGhp
Z2hXYXRlck1hcmtPYmplY3RHZXR0ZXIpOwotCi19LCAnQ291bnRRdWV1aW5nU3RyYXRlZ3kgY29u
c3RydWN0b3IgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRzJyk7Ci0K
LQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgdGhpc1ZhbHVlID0gbnVsbDsKLSAgY29uc3QgY2h1
bmsgPSB7Ci0gICAgZ2V0IGJ5dGVMZW5ndGgoKSB7Ci0gICAgICB0aHJvdyBuZXcgVHlwZUVycm9y
KCdzaG91bGRuXCd0IGJlIGNhbGxlZCcpOwotICAgIH0KLSAgfTsKLQotICBhc3NlcnRfZXF1YWxz
KENvdW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplLmNhbGwodGhpc1ZhbHVlLCBjaHVu
ayksIDEpOwotCi19LCAnQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUgc2hvdWxk
IHdvcmsgZ2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMnKTsKLQotdGVz
dCgoKSA9PiB7Ci0KLSAgY29uc3Qgc2l6ZSA9IDEwMjQ7Ci0gIGNvbnN0IGNodW5rID0geyBieXRl
TGVuZ3RoOiBzaXplIH07Ci0gIGNvbnN0IGNodW5rR2V0dGVyID0gewotICAgIGdldCBieXRlTGVu
Z3RoKCkgeyByZXR1cm4gc2l6ZTsgfQotICB9OwotICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcign
d293IScpOwotICBjb25zdCBjaHVua0dldHRlclRocm93aW5nID0gewotICAgIGdldCBieXRlTGVu
Z3RoKCkgeyB0aHJvdyBlcnJvcjsgfQotICB9OwotCi0gIGFzc2VydF9lcXVhbHMoQ291bnRRdWV1
aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoKSwgMSwgJ3NpemUgcmV0dXJucyAxIHdpdGggdW5k
ZWZpbmVkJyk7Ci0gIGFzc2VydF9lcXVhbHMoQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBl
LnNpemUobnVsbCksIDEsICdzaXplIHJldHVybnMgMSB3aXRoIG51bGwnKTsKLSAgYXNzZXJ0X2Vx
dWFscyhDb3VudFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSgncG90YXRvJyksIDEsICdz
aXplIHJldHVybnMgMSB3aXRoIG5vbi1vYmplY3QgdHlwZScpOwotICBhc3NlcnRfZXF1YWxzKENv
dW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKHt9KSwgMSwgJ3NpemUgcmV0dXJucyAx
IHdpdGggZW1wdHkgb2JqZWN0Jyk7Ci0gIGFzc2VydF9lcXVhbHMoQ291bnRRdWV1aW5nU3RyYXRl
Z3kucHJvdG90eXBlLnNpemUoY2h1bmspLCAxLCAnc2l6ZSByZXR1cm5zIDEgd2l0aCBhIGNodW5r
Jyk7Ci0gIGFzc2VydF9lcXVhbHMoQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUo
Y2h1bmtHZXR0ZXIpLCAxLCAnc2l6ZSByZXR1cm5zIDEgd2l0aCBjaHVuayBnZXR0ZXInKTsKLSAg
YXNzZXJ0X2VxdWFscyhDb3VudFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZShjaHVua0dl
dHRlclRocm93aW5nKSwgMSwKLSAgICAnc2l6ZSByZXR1cm5zIDEgd2l0aCBjaHVuayBnZXR0ZXIg
dGhhdCB0aHJvd3MnKTsKLQotfSwgJ0NvdW50UXVldWluZ1N0cmF0ZWd5IHNpemUgYmVoYXZlcyBh
cyBleHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRzJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0g
IGNvbnN0IHN0cmF0ZWd5ID0gbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFy
azogNCB9KTsKLQotICBhc3NlcnRfb2JqZWN0X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKHN0cmF0ZWd5LCAnaGlnaFdhdGVyTWFyaycpLAotICAgIHsgdmFsdWU6IDQsIHdy
aXRhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSwKLSAg
ICAnaGlnaFdhdGVyTWFyayBwcm9wZXJ0eSBzaG91bGQgYmUgYSBkYXRhIHByb3BlcnR5IHdpdGgg
dGhlIHZhbHVlIHBhc3NlZCB0aGUgY29uc3RydWN0b3InKTsKLSAgYXNzZXJ0X2VxdWFscyh0eXBl
b2Ygc3RyYXRlZ3kuc2l6ZSwgJ2Z1bmN0aW9uJyk7Ci0KLX0sICdDb3VudFF1ZXVpbmdTdHJhdGVn
eSBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBwcm9wZXJ0aWVzJyk7Ci0KLXRlc3QoKCkgPT4g
ewotCi0gIGNvbnN0IHN0cmF0ZWd5ID0gbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdh
dGVyTWFyazogNCB9KTsKLSAgYXNzZXJ0X2VxdWFscyhzdHJhdGVneS5oaWdoV2F0ZXJNYXJrLCA0
KTsKLQotICBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrID0gMTA7Ci0gIGFzc2VydF9lcXVhbHMoc3Ry
YXRlZ3kuaGlnaFdhdGVyTWFyaywgMTApOwotCi0gIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgPSAn
YmFuYW5hJzsKLSAgYXNzZXJ0X2VxdWFscyhzdHJhdGVneS5oaWdoV2F0ZXJNYXJrLCAnYmFuYW5h
Jyk7Ci0KLX0sICdDb3VudFF1ZXVpbmdTdHJhdGVneVwncyBoaWdoV2F0ZXJNYXJrIHByb3BlcnR5
IGNhbiBiZSBzZXQgdG8gYW55dGhpbmcnKTsKLQotZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJs
ZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9i
YWQtc3RyYXRlZ2llcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGZhOGFmMzQxMjY5YTI1NDQ5M2UxNTBkZWQ3NGFkZWQ0NTA4MmRiNjMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJh
dGVnaWVzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLQotUEFT
UyBSZWFkYWJsZSBzdHJlYW06IHRocm93aW5nIHN0cmF0ZWd5LnNpemUgZ2V0dGVyIAotUEFTUyBS
ZWFkYWJsZSBzdHJlYW06IHN0cmF0ZWd5LnNpemUgZXJyb3JzIHRoZSBzdHJlYW0gYW5kIHRoZW4g
dGhyb3dzIAotUEFTUyBSZWFkYWJsZSBzdHJlYW06IHN0cmF0ZWd5LnNpemUgZXJyb3JzIHRoZSBz
dHJlYW0gYW5kIHRoZW4gcmV0dXJucyBJbmZpbml0eSAKLVBBU1MgUmVhZGFibGUgc3RyZWFtOiB0
aHJvd2luZyBzdHJhdGVneS5zaXplIG1ldGhvZCAKLVBBU1MgUmVhZGFibGUgc3RyZWFtOiB0aHJv
d2luZyBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIGdldHRlciAKLVBBU1MgUmVhZGFibGUgc3RyZWFt
OiBpbnZhbGlkIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgCi1QQVNTIFJlYWRhYmxlIHN0cmVhbTog
aW52YWxpZCBzdHJhdGVneS5zaXplIHJldHVybiB2YWx1ZSAKLUZBSUwgTG9hZCBiYWQtc3RyYXRl
Z2llcy5qcyB3aXRoIFNoYXJlZFdvcmtlciBhc3NlcnRfdW5yZWFjaGVkOiBTaGFyZWRXb3JrZXIg
aXMgdW5hdmFpbGFibGUgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCi1GQUlMIFVudGl0bGVkIHVu
ZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICduYXZpZ2F0b3Iuc2VydmljZVdv
cmtlci5nZXRSZWdpc3RyYXRpb24nKQotUEFTUyBSZWFkYWJsZSBzdHJlYW06IHRocm93aW5nIHN0
cmF0ZWd5LnNpemUgZ2V0dGVyIAotUEFTUyBSZWFkYWJsZSBzdHJlYW06IHN0cmF0ZWd5LnNpemUg
ZXJyb3JzIHRoZSBzdHJlYW0gYW5kIHRoZW4gdGhyb3dzIAotUEFTUyBSZWFkYWJsZSBzdHJlYW06
IHN0cmF0ZWd5LnNpemUgZXJyb3JzIHRoZSBzdHJlYW0gYW5kIHRoZW4gcmV0dXJucyBJbmZpbml0
eSAKLVBBU1MgUmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5zaXplIG1ldGhvZCAK
LVBBU1MgUmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIGdl
dHRlciAKLVBBU1MgUmVhZGFibGUgc3RyZWFtOiBpbnZhbGlkIHN0cmF0ZWd5LmhpZ2hXYXRlck1h
cmsgCi1QQVNTIFJlYWRhYmxlIHN0cmVhbTogaW52YWxpZCBzdHJhdGVneS5zaXplIHJldHVybiB2
YWx1ZSAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBp
L3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNGZhYjkzMTMyMzliNzdjNzY2YTkzMjJiNDM0MWVmYzUzYzI2ZGJmZS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVh
bXMvYmFkLXN0cmF0ZWdpZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdv
cmtlcnMvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIj48L3Njcmlw
dD4KLQotPHNjcmlwdCBzcmM9ImJhZC1zdHJhdGVnaWVzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+
Ci0ndXNlIHN0cmljdCc7Ci13b3JrZXJfdGVzdCgnYmFkLXN0cmF0ZWdpZXMuanMnKTsKLTwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmpzIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFk
YWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwYzA1M2FiNjJiY2ZlMjFlNDJjNTViMjBiYmNiYWFlMjI2YmFmOGI0Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9iYWQt
c3RyYXRlZ2llcy5qcworKysgL2Rldi9udWxsCkBAIC0xLDE3NSArMCwwIEBACi0ndXNlIHN0cmlj
dCc7Ci0KLWlmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0
IHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKLQotICBhc3NlcnRfdGhy
b3dzKHRoZUVycm9yLCAoKSA9PiB7Ci0gICAgbmV3IFJlYWRhYmxlU3RyZWFtKHt9LCB7Ci0gICAg
ICBnZXQgc2l6ZSgpIHsKLSAgICAgICAgdGhyb3cgdGhlRXJyb3I7Ci0gICAgICB9LAotICAgICAg
aGlnaFdhdGVyTWFyazogNQotICAgIH0pOwotICB9LCAnY29uc3RydWN0aW9uIHNob3VsZCByZS10
aHJvdyB0aGUgZXJyb3InKTsKLQotfSwgJ1JlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRl
Z3kuc2l6ZSBnZXR0ZXInKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IGNvbnRy
b2xsZXJFcnJvciA9IHsgbmFtZTogJ2NvbnRyb2xsZXIgZXJyb3InIH07Ci0gIGNvbnN0IHRocm93
bkVycm9yID0geyBuYW1lOiAndGhyb3duIGVycm9yJyB9OwotCi0gIGxldCBjb250cm9sbGVyOwot
ICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgKLSAgICB7Ci0gICAgICBzdGFydChjKSB7
Ci0gICAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgICAgfQotICAgIH0sCi0gICAgewotICAgICAg
c2l6ZSgpIHsKLSAgICAgICAgY29udHJvbGxlci5lcnJvcihjb250cm9sbGVyRXJyb3IpOwotICAg
ICAgICB0aHJvdyB0aHJvd25FcnJvcjsKLSAgICAgIH0sCi0gICAgICBoaWdoV2F0ZXJNYXJrOiA1
Ci0gICAgfQotICApOwotCi0gIGFzc2VydF90aHJvd3ModGhyb3duRXJyb3IsICgpID0+IGNvbnRy
b2xsZXIuZW5xdWV1ZSgnYScpLCAnZW5xdWV1ZSBzaG91bGQgcmUtdGhyb3cgdGhlIGVycm9yJyk7
Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBjb250cm9sbGVyRXJyb3IsIHJzLmdldFJl
YWRlcigpLmNsb3NlZCk7Ci0KLX0sICdSZWFkYWJsZSBzdHJlYW06IHN0cmF0ZWd5LnNpemUgZXJy
b3JzIHRoZSBzdHJlYW0gYW5kIHRoZW4gdGhyb3dzJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsK
LQotICBjb25zdCB0aGVFcnJvciA9IHsgbmFtZTogJ215IGVycm9yJyB9OwotCi0gIGxldCBjb250
cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgKLSAgICB7Ci0gICAgICBz
dGFydChjKSB7Ci0gICAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgICAgfQotICAgIH0sCi0gICAg
ewotICAgICAgc2l6ZSgpIHsKLSAgICAgICAgY29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7Ci0g
ICAgICAgIHJldHVybiBJbmZpbml0eTsKLSAgICAgIH0sCi0gICAgICBoaWdoV2F0ZXJNYXJrOiA1
Ci0gICAgfQotICApOwotCi0gIGFzc2VydF90aHJvd3MobmV3IFJhbmdlRXJyb3IoKSwgKCkgPT4g
Y29udHJvbGxlci5lbnF1ZXVlKCdhJyksICdlbnF1ZXVlIHNob3VsZCB0aHJvdyBhIFJhbmdlRXJy
b3InKTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCBycy5nZXRSZWFk
ZXIoKS5jbG9zZWQsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOwotCi19
LCAnUmVhZGFibGUgc3RyZWFtOiBzdHJhdGVneS5zaXplIGVycm9ycyB0aGUgc3RyZWFtIGFuZCB0
aGVuIHJldHVybnMgSW5maW5pdHknKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25z
dCB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7Ci0gIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKAotICAgIHsKLSAgICAgIHN0YXJ0KGMpIHsKLSAgICAgICAgYXNz
ZXJ0X3Rocm93cyh0aGVFcnJvciwgKCkgPT4gYy5lbnF1ZXVlKCdhJyksICdlbnF1ZXVlIHNob3Vs
ZCB0aHJvdyB0aGUgZXJyb3InKTsKLSAgICAgIH0KLSAgICB9LAotICAgIHsKLSAgICAgIHNpemUo
KSB7Ci0gICAgICAgIHRocm93IHRoZUVycm9yOwotICAgICAgfSwKLSAgICAgIGhpZ2hXYXRlck1h
cms6IDUKLSAgICB9Ci0gICk7Ci0KLSAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZC5jYXRj
aChlID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnY2xvc2VkIHNob3VsZCBy
ZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZSBzdHJlYW06IHRo
cm93aW5nIHN0cmF0ZWd5LnNpemUgbWV0aG9kJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0
IHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKLQotICBhc3NlcnRfdGhy
b3dzKHRoZUVycm9yLCAoKSA9PiB7Ci0gICAgbmV3IFJlYWRhYmxlU3RyZWFtKHt9LCB7Ci0gICAg
ICBzaXplKCkgewotICAgICAgICByZXR1cm4gMTsKLSAgICAgIH0sCi0gICAgICBnZXQgaGlnaFdh
dGVyTWFyaygpIHsKLSAgICAgICAgdGhyb3cgdGhlRXJyb3I7Ci0gICAgICB9Ci0gICAgfSk7Ci0g
IH0sICdjb25zdHJ1Y3Rpb24gc2hvdWxkIHJlLXRocm93IHRoZSBlcnJvcicpOwotCi19LCAnUmVh
ZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIGdldHRlcicpOwot
Ci10ZXN0KCgpID0+IHsKLQotICBmb3IgKGNvbnN0IGhpZ2hXYXRlck1hcmsgb2YgWy0xLCAtSW5m
aW5pdHldKSB7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgUmFuZ2VFcnJvcigpLCAoKSA9PiB7Ci0g
ICAgICBuZXcgUmVhZGFibGVTdHJlYW0oe30sIHsKLSAgICAgICAgc2l6ZSgpIHsKLSAgICAgICAg
ICByZXR1cm4gMTsKLSAgICAgICAgfSwKLSAgICAgICAgaGlnaFdhdGVyTWFyawotICAgICAgfSk7
Ci0gICAgfSwgJ2NvbnN0cnVjdGlvbiBzaG91bGQgdGhyb3cgYSBSYW5nZUVycm9yIGZvciAnICsg
aGlnaFdhdGVyTWFyayk7Ci0gIH0KLQotICBmb3IgKGNvbnN0IGhpZ2hXYXRlck1hcmsgb2YgW05h
TiwgJ2ZvbycsIHt9XSkgewotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9
PiB7Ci0gICAgICBuZXcgUmVhZGFibGVTdHJlYW0oe30sIHsKLSAgICAgICAgc2l6ZSgpIHsKLSAg
ICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgfSwKLSAgICAgICAgaGlnaFdhdGVyTWFyawotICAg
ICAgfSk7Ci0gICAgfSwgJ2NvbnN0cnVjdGlvbiBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IgZm9y
ICcgKyBoaWdoV2F0ZXJNYXJrKTsKLSAgfQotCi19LCAnUmVhZGFibGUgc3RyZWFtOiBpbnZhbGlk
IHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBj
b25zdCBwcm9taXNlcyA9IFtdOwotICBmb3IgKGNvbnN0IHNpemUgb2YgW05hTiwgLUluZmluaXR5
LCBJbmZpbml0eSwgLTFdKSB7Ci0gICAgbGV0IHRoZUVycm9yOwotICAgIGNvbnN0IHJzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKAotICAgICAgewotICAgICAgICBzdGFydChjKSB7Ci0gICAgICAgICAg
dHJ5IHsKLSAgICAgICAgICAgIGMuZW5xdWV1ZSgnaGknKTsKLSAgICAgICAgICAgIGFzc2VydF91
bnJlYWNoZWQoJ2VucXVldWUgZGlkblwndCB0aHJvdycpOwotICAgICAgICAgIH0gY2F0Y2ggKGVy
cm9yKSB7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGVycm9yLm5hbWUsICdSYW5nZUVycm9y
JywgJ2VucXVldWUgc2hvdWxkIHRocm93IGEgUmFuZ2VFcnJvciBmb3IgJyArIHNpemUpOwotICAg
ICAgICAgICAgdGhlRXJyb3IgPSBlcnJvcjsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
IH0sCi0gICAgICB7Ci0gICAgICAgIHNpemUoKSB7Ci0gICAgICAgICAgcmV0dXJuIHNpemU7Ci0g
ICAgICAgIH0sCi0gICAgICAgIGhpZ2hXYXRlck1hcms6IDUKLSAgICAgIH0KLSAgICApOwotCi0g
ICAgcHJvbWlzZXMucHVzaChycy5nZXRSZWFkZXIoKS5jbG9zZWQuY2F0Y2goZSA9PiB7Ci0gICAg
ICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0
aGUgZXJyb3IgZm9yICcgKyBzaXplKTsKLSAgICB9KSk7Ci0gIH0KLQotICByZXR1cm4gUHJvbWlz
ZS5hbGwocHJvbWlzZXMpOwotCi19LCAnUmVhZGFibGUgc3RyZWFtOiBpbnZhbGlkIHN0cmF0ZWd5
LnNpemUgcmV0dXJuIHZhbHVlJyk7Ci0KLWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3Ry
ZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFt
cy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMjljZmNhNWI3NjBjNDExOTQxNTFlNzg2MmY4NGQ1YTdiMDZkMTVmMi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVh
bXMvYmFkLXVuZGVybHlpbmctc291cmNlcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSw0NiArMCwwIEBACi0KLVBBU1MgVW5kZXJseWluZyBzb3VyY2Ugc3RhcnQ6IHRocm93aW5nIGdl
dHRlciAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2Ugc3RhcnQ6IHRocm93aW5nIG1ldGhvZCAKLVBB
U1MgVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgZ2V0dGVyIChpbml0aWFsIHB1bGwp
IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBtZXRob2QgKGluaXRpYWwg
cHVsbCkgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlIHB1bGw6IHRocm93aW5nIGdldHRlciAoc2Vj
b25kIHB1bGwpIAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBwdWxsOiB0aHJvd2luZyBtZXRob2Qg
KHNlY29uZCBwdWxsKSAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2UgY2FuY2VsOiB0aHJvd2luZyBn
ZXR0ZXIgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlIGNhbmNlbDogdGhyb3dpbmcgbWV0aG9kIAot
UEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGFuIGVtcHR5IGNhbmNl
bGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2Fs
bGluZyBlbnF1ZXVlIG9uIGEgbm9uLWVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRo
cm93IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGEgY2xvc2Vk
IHN0cmVhbSBzaG91bGQgdGhyb3cgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVu
cXVldWUgb24gYW4gZXJyb3JlZCBzdHJlYW0gc2hvdWxkIHRocm93IAotUEFTUyBVbmRlcmx5aW5n
IHNvdXJjZTogY2FsbGluZyBjbG9zZSB0d2ljZSBvbiBhbiBlbXB0eSBzdHJlYW0gc2hvdWxkIHRo
cm93IHRoZSBzZWNvbmQgdGltZSAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xv
c2UgdHdpY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRp
bWUgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIG9uIGFuIGVtcHR5IGNh
bmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTog
Y2FsbGluZyBjbG9zZSBvbiBhIG5vbi1lbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0
aHJvdyAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgYWZ0ZXIgZXJyb3Ig
c2hvdWxkIHRocm93IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciB0d2lj
ZSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lIAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTog
Y2FsbGluZyBlcnJvciBhZnRlciBjbG9zZSBzaG91bGQgdGhyb3cgCi1QQVNTIFVuZGVybHlpbmcg
c291cmNlOiBjYWxsaW5nIGVycm9yIGFuZCByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGZy
b20gc3RhcnQgc2hvdWxkIGNhdXNlIHRoZSBzdHJlYW0gdG8gZXJyb3Igd2l0aCB0aGUgZmlyc3Qg
ZXJyb3IgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9yIGFuZCByZXR1cm5p
bmcgYSByZWplY3RlZCBwcm9taXNlIGZyb20gcHVsbCBzaG91bGQgY2F1c2UgdGhlIHN0cmVhbSB0
byBlcnJvciB3aXRoIHRoZSBmaXJzdCBlcnJvciAKLUZBSUwgTG9hZCBiYWQtdW5kZXJseWluZy1z
b3VyY2VzLmpzIHdpdGggU2hhcmVkV29ya2VyIGFzc2VydF91bnJlYWNoZWQ6IFNoYXJlZFdvcmtl
ciBpcyB1bmF2YWlsYWJsZSBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKLUZBSUwgVW50aXRsZWQg
dW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ25hdmlnYXRvci5zZXJ2aWNl
V29ya2VyLmdldFJlZ2lzdHJhdGlvbicpCi1QQVNTIFVuZGVybHlpbmcgc291cmNlIHN0YXJ0OiB0
aHJvd2luZyBnZXR0ZXIgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlIHN0YXJ0OiB0aHJvd2luZyBt
ZXRob2QgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIGdldHRlciAoaW5p
dGlhbCBwdWxsKSAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgbWV0aG9k
IChpbml0aWFsIHB1bGwpIAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBwdWxsOiB0aHJvd2luZyBn
ZXR0ZXIgKHNlY29uZCBwdWxsKSAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2UgcHVsbDogdGhyb3dp
bmcgbWV0aG9kIChzZWNvbmQgcHVsbCkgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlIGNhbmNlbDog
dGhyb3dpbmcgZ2V0dGVyIAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBjYW5jZWw6IHRocm93aW5n
IG1ldGhvZCAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBl
bXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdyAKLVBBU1MgVW5kZXJseWluZyBz
b3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhIG5vbi1lbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hv
dWxkIG5vdCB0aHJvdyAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBv
biBhIGNsb3NlZCBzdHJlYW0gc2hvdWxkIHRocm93IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTog
Y2FsbGluZyBlbnF1ZXVlIG9uIGFuIGVycm9yZWQgc3RyZWFtIHNob3VsZCB0aHJvdyAKLVBBU1Mg
VW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgdHdpY2Ugb24gYW4gZW1wdHkgc3RyZWFt
IHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlOiBj
YWxsaW5nIGNsb3NlIHR3aWNlIG9uIGEgbm9uLWVtcHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhl
IHNlY29uZCB0aW1lIAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBvbiBh
biBlbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdyAKLVBBU1MgVW5kZXJseWlu
ZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24gYSBub24tZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNo
b3VsZCBub3QgdGhyb3cgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIGFm
dGVyIGVycm9yIHNob3VsZCB0aHJvdyAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcg
ZXJyb3IgdHdpY2Ugc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGltZSAKLVBBU1MgVW5kZXJseWlu
ZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYWZ0ZXIgY2xvc2Ugc2hvdWxkIHRocm93IAotUEFTUyBV
bmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQg
cHJvbWlzZSBmcm9tIHN0YXJ0IHNob3VsZCBjYXVzZSB0aGUgc3RyZWFtIHRvIGVycm9yIHdpdGgg
dGhlIGZpcnN0IGVycm9yIAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBh
bmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHB1bGwgc2hvdWxkIGNhdXNlIHRo
ZSBzdHJlYW0gdG8gZXJyb3Igd2l0aCB0aGUgZmlyc3QgZXJyb3IgCi0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVh
ZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVh
bXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBlY2IxMWZlYWIxMmM0NzZjNDcxZmQyZGM1ZGJmYjMwZDlkN2RmYjU2Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9iYWQt
dW5kZXJseWluZy1zb3VyY2VzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3Jp
cHQ+Ci0KLTxzY3JpcHQgc3JjPSJiYWQtdW5kZXJseWluZy1zb3VyY2VzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci13b3JrZXJfdGVzdCgnYmFkLXVuZGVybHlpbmctc291
cmNlcy5qcycpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVu
ZGVybHlpbmctc291cmNlcy5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3Vy
Y2VzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMmZkMGZkYzkyOTlkNWQ1ZGU0
ZjU2MjhkZDE5ZDU5ZmQyOTMwMGRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmpzCisr
KyAvZGV2L251bGwKQEAgLTEsMzgzICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotaWYgKHNlbGYu
aW1wb3J0U2NyaXB0cykgewotICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMnKTsKLX0KLQotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCB0aGVFcnJvciA9IG5l
dyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7Ci0KLSAgYXNzZXJ0X3Rocm93cyh0aGVFcnJvciwg
KCkgPT4gewotICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICBnZXQgc3RhcnQoKSB7Ci0g
ICAgICAgIHRocm93IHRoZUVycm9yOwotICAgICAgfQotICAgIH0pOwotICB9LCAnY29uc3RydWN0
aW5nIHRoZSBzdHJlYW0gc2hvdWxkIHJlLXRocm93IHRoZSBlcnJvcicpOwotCi19LCAnVW5kZXJs
eWluZyBzb3VyY2Ugc3RhcnQ6IHRocm93aW5nIGdldHRlcicpOwotCi0KLXRlc3QoKCkgPT4gewot
Ci0gIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKLQotICBh
c3NlcnRfdGhyb3dzKHRoZUVycm9yLCAoKSA9PiB7Ci0gICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsK
LSAgICAgIHN0YXJ0KCkgewotICAgICAgICB0aHJvdyB0aGVFcnJvcjsKLSAgICAgIH0KLSAgICB9
KTsKLSAgfSwgJ2NvbnN0cnVjdGluZyB0aGUgc3RyZWFtIHNob3VsZCByZS10aHJvdyB0aGUgZXJy
b3InKTsKLQotfSwgJ1VuZGVybHlpbmcgc291cmNlIHN0YXJ0OiB0aHJvd2luZyBtZXRob2QnKTsK
LQotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3Io
J2EgdW5pcXVlIHN0cmluZycpOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0g
ICAgZ2V0IHB1bGwoKSB7Ci0gICAgICB0aHJvdyB0aGVFcnJvcjsKLSAgICB9Ci0gIH0pOwotCi0g
IHJldHVybiBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJzLmdldFJlYWRlcigpLmNsb3Nl
ZCk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBnZXR0ZXIgKGluaXRp
YWwgcHVsbCknKTsKLQotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3Ig
PSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7Ci0gICAgcHVsbCgpIHsKLSAgICAgIHRocm93IHRoZUVycm9yOwotICAgIH0KLSAg
fSk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcnMuZ2V0UmVhZGVy
KCkuY2xvc2VkKTsKLQotfSwgJ1VuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIG1ldGhv
ZCAoaW5pdGlhbCBwdWxsKScpOwotCi0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCB0
aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7Ci0KLSAgbGV0IGNvdW50ZXIg
PSAwOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgZ2V0IHB1bGwoKSB7
Ci0gICAgICArK2NvdW50ZXI7Ci0gICAgICBpZiAoY291bnRlciA9PT0gMSkgewotICAgICAgICBy
ZXR1cm4gYyA9PiBjLmVucXVldWUoJ2EnKTsKLSAgICAgIH0KLQotICAgICAgdGhyb3cgdGhlRXJy
b3I7Ci0gICAgfQotICB9KTsKLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAg
cmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICByZWFkZXIucmVhZCgpLnRoZW4ociA9PiB7Ci0gICAg
ICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICd0
aGUgY2h1bmsgcmVhZCBzaG91bGQgYmUgY29ycmVjdCcpOwotICAgIH0pLAotICAgIHByb21pc2Vf
cmVqZWN0cyh0LCB0aGVFcnJvciwgcmVhZGVyLmNsb3NlZCkKLSAgXSk7Ci0KLX0sICdVbmRlcmx5
aW5nIHNvdXJjZSBwdWxsOiB0aHJvd2luZyBnZXR0ZXIgKHNlY29uZCBwdWxsKScpOwotCi0KLXBy
b21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlx
dWUgc3RyaW5nJyk7Ci0KLSAgbGV0IGNvdW50ZXIgPSAwOwotICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgcHVsbChjKSB7Ci0gICAgICArK2NvdW50ZXI7Ci0gICAgICBpZiAo
Y291bnRlciA9PT0gMSkgewotICAgICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICAgICAgcmV0dXJu
OwotICAgICAgfQotCi0gICAgICB0aHJvdyB0aGVFcnJvcjsKLSAgICB9Ci0gIH0pOwotICBjb25z
dCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAg
IHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIs
IHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3RoZSBjaHVuayByZWFkIHNob3VsZCBiZSBj
b3JyZWN0Jyk7Ci0gICAgfSksCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFk
ZXIuY2xvc2VkKQotICBdKTsKLQotfSwgJ1VuZGVybHlpbmcgc291cmNlIHB1bGw6IHRocm93aW5n
IG1ldGhvZCAoc2Vjb25kIHB1bGwpJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25z
dCB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7Ci0gIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBnZXQgY2FuY2VsKCkgewotICAgICAgdGhyb3cgdGhl
RXJyb3I7Ci0gICAgfQotICB9KTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVy
cm9yLCBycy5jYW5jZWwoKSk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZSBjYW5jZWw6IHRocm93
aW5nIGdldHRlcicpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3Ig
PSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7Ci0gICAgY2FuY2VsKCkgewotICAgICAgdGhyb3cgdGhlRXJyb3I7Ci0gICAgfQot
ICB9KTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCBycy5jYW5jZWwo
KSk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZSBjYW5jZWw6IHRocm93aW5nIG1ldGhvZCcpOwot
Ci1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9
IGM7Ci0gICAgfQotICB9KTsKLQotICBycy5jYW5jZWwoKTsKLSAgY29udHJvbGxlci5lbnF1ZXVl
KCdhJyk7IC8vIENhbGxpbmcgZW5xdWV1ZSBhZnRlciBjYW5jZWxpbmcgc2hvdWxkIG5vdCB0aHJv
dyBhbnl0aGluZy4KLQotICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkOwotCi19LCAnVW5k
ZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBlbXB0eSBjYW5jZWxlZCBzdHJl
YW0gc2hvdWxkIG5vdCB0aHJvdycpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBj
b250cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQo
YykgewotICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICBjLmVucXVldWUoJ2InKTsKLSAgICAg
IGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0KLSAgcnMuY2FuY2VsKCk7Ci0gIGNvbnRy
b2xsZXIuZW5xdWV1ZSgnYycpOyAvLyBDYWxsaW5nIGVucXVldWUgYWZ0ZXIgY2FuY2VsaW5nIHNo
b3VsZCBub3QgdGhyb3cgYW55dGhpbmcuCi0KLSAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3Nl
ZDsKLQotfSwgJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYSBub24tZW1w
dHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cnKTsKLQotcHJvbWlzZV90ZXN0KCgp
ID0+IHsKLQotICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0g
ICAgICBjLmNsb3NlKCk7Ci0gICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkg
PT4gYy5lbnF1ZXVlKCdhJyksICdjYWxsIHRvIGVucXVldWUgc2hvdWxkIHRocm93IGEgVHlwZUVy
cm9yJyk7Ci0gICAgfQotICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7Ci0KLX0sICdVbmRlcmx5aW5n
IHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGEgY2xvc2VkIHN0cmVhbSBzaG91bGQgdGhyb3cn
KTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9y
KCdib28nKTsKLSAgY29uc3QgY2xvc2VkID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFy
dChjKSB7Ci0gICAgICBjLmVycm9yKHRoZUVycm9yKTsKLSAgICAgIGFzc2VydF90aHJvd3ModGhl
RXJyb3IsICgpID0+IGMuZW5xdWV1ZSgnYScpLCAnY2FsbCB0byBlbnF1ZXVlIHNob3VsZCB0aHJv
dyB0aGUgZXJyb3InKTsKLSAgICB9Ci0gIH0pLmdldFJlYWRlcigpLmNsb3NlZDsKLQotICByZXR1
cm4gcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCBjbG9zZWQpOwotCi19LCAnVW5kZXJseWlu
ZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBlcnJvcmVkIHN0cmVhbSBzaG91bGQgdGhy
b3cnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICByZXR1cm4gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAgICBhc3NlcnRfdGhy
b3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gYy5jbG9zZSgpLCAnc2Vjb25kIGNhbGwgdG8gY2xv
c2Ugc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7Ci0gICAgfQotICB9KS5nZXRSZWFkZXIoKS5j
bG9zZWQ7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSB0d2ljZSBvbiBh
biBlbXB0eSBzdHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGltZScpOwotCi1wcm9taXNl
X3Rlc3QoKCkgPT4gewotCi0gIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOwotICBsZXQgcmVhZENh
bGxlZCA9IGZhbHNlOwotICBjb25zdCByZWFkZXIgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAg
IHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgICAgYy5jbG9zZSgpOwotICAg
ICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGMuY2xvc2UoKSwgJ3NlY29u
ZCBjYWxsIHRvIGNsb3NlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwotICAgICAgc3RhcnRD
YWxsZWQgPSB0cnVlOwotICAgIH0KLSAgfSkuZ2V0UmVhZGVyKCk7Ci0KLSAgcmV0dXJuIFByb21p
c2UuYWxsKFsKLSAgICByZWFkZXIucmVhZCgpLnRoZW4ociA9PiB7Ci0gICAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdyZWFkKCkgc2hvdWxk
IHJlYWQgdGhlIGVucXVldWVkIGNodW5rJyk7Ci0gICAgICByZWFkQ2FsbGVkID0gdHJ1ZTsKLSAg
ICB9KSwKLSAgICByZWFkZXIuY2xvc2VkLnRoZW4oKCkgPT4gewotICAgICAgYXNzZXJ0X3RydWUo
c3RhcnRDYWxsZWQpOwotICAgICAgYXNzZXJ0X3RydWUocmVhZENhbGxlZCk7Ci0gICAgfSkKLSAg
XSk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSB0d2ljZSBvbiBhIG5v
bi1lbXB0eSBzdHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGltZScpOwotCi1wcm9taXNl
X3Rlc3QoKCkgPT4gewotCi0gIGxldCBjb250cm9sbGVyOwotICBsZXQgc3RhcnRDYWxsZWQgPSBm
YWxzZTsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsK
LSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOwotICAgIH0K
LSAgfSk7Ci0KLSAgcnMuY2FuY2VsKCk7Ci0gIGNvbnRyb2xsZXIuY2xvc2UoKTsgLy8gQ2FsbGlu
ZyBjbG9zZSBhZnRlciBjYW5jZWxpbmcgc2hvdWxkIG5vdCB0aHJvdyBhbnl0aGluZy4KLQotICBy
ZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF90cnVl
KHN0YXJ0Q2FsbGVkKTsKLSAgfSk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBj
bG9zZSBvbiBhbiBlbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdycpOwotCi1w
cm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBjb250cm9sbGVyOwotICBsZXQgc3RhcnRDYWxs
ZWQgPSBmYWxzZTsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0
KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAg
ICBzdGFydENhbGxlZCA9IHRydWU7Ci0gICAgfQotICB9KTsKLQotICBycy5jYW5jZWwoKTsKLSAg
Y29udHJvbGxlci5jbG9zZSgpOyAvLyBDYWxsaW5nIGNsb3NlIGFmdGVyIGNhbmNlbGluZyBzaG91
bGQgbm90IHRocm93IGFueXRoaW5nLgotCi0gIHJldHVybiBycy5nZXRSZWFkZXIoKS5jbG9zZWQu
dGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOwotICB9KTsKLQotfSwg
J1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIG9uIGEgbm9uLWVtcHR5IGNhbmNlbGVk
IHN0cmVhbSBzaG91bGQgbm90IHRocm93Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAg
Y29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2JvbycpOwotICBsZXQgc3RhcnRDYWxsZWQgPSBm
YWxzZTsKLQotICBjb25zdCBjbG9zZWQgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0
KGMpIHsKLSAgICAgIGMuZXJyb3IodGhlRXJyb3IpOwotICAgICAgYXNzZXJ0X3Rocm93cyhuZXcg
VHlwZUVycm9yKCksICgpID0+IGMuY2xvc2UoKSwgJ2NhbGwgdG8gY2xvc2Ugc2hvdWxkIHRocm93
IGEgVHlwZUVycm9yJyk7Ci0gICAgICBzdGFydENhbGxlZCA9IHRydWU7Ci0gICAgfQotICB9KS5n
ZXRSZWFkZXIoKS5jbG9zZWQ7Ci0KLSAgcmV0dXJuIGNsb3NlZC5jYXRjaChlID0+IHsKLSAgICBh
c3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwg
J2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7Ci0gIH0pOwotCi19LCAnVW5k
ZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgYWZ0ZXIgZXJyb3Igc2hvdWxkIHRocm93Jyk7
Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3Io
J2JvbycpOwotICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKLQotICBjb25zdCBjbG9zZWQgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZXJyb3IodGhlRXJy
b3IpOwotICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGMuZXJyb3Io
KSwgJ3NlY29uZCBjYWxsIHRvIGVycm9yIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwotICAg
ICAgc3RhcnRDYWxsZWQgPSB0cnVlOwotICAgIH0KLSAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOwot
Ci0gIHJldHVybiBjbG9zZWQuY2F0Y2goZSA9PiB7Ci0gICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxs
ZWQpOwotICAgIGFzc2VydF9lcXVhbHMoZSwgdGhlRXJyb3IsICdjbG9zZWQgc2hvdWxkIHJlamVj
dCB3aXRoIHRoZSBlcnJvcicpOwotICB9KTsKLQotfSwgJ1VuZGVybHlpbmcgc291cmNlOiBjYWxs
aW5nIGVycm9yIHR3aWNlIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUnKTsKLQotcHJvbWlz
ZV90ZXN0KCgpID0+IHsKLQotICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKLQotICBjb25zdCBj
bG9zZWQgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuY2xv
c2UoKTsKLSAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjLmVycm9y
KCksICdzZWNvbmQgY2FsbCB0byBlcnJvciBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKLSAg
ICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKLSAgICB9Ci0gIH0pLmdldFJlYWRlcigpLmNsb3NlZDsK
LQotICByZXR1cm4gY2xvc2VkLnRoZW4oKCkgPT4gYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpKTsK
LQotfSwgJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9yIGFmdGVyIGNsb3NlIHNob3Vs
ZCB0aHJvdycpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBzdGFydENhbGxlZCA9
IGZhbHNlOwotICBjb25zdCBmaXJzdEVycm9yID0gbmV3IEVycm9yKCcxJyk7Ci0gIGNvbnN0IHNl
Y29uZEVycm9yID0gbmV3IEVycm9yKCcyJyk7Ci0KLSAgY29uc3QgY2xvc2VkID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVycm9yKGZpcnN0RXJyb3IpOwot
ICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOwotICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHNl
Y29uZEVycm9yKTsKLSAgICB9Ci0gIH0pLmdldFJlYWRlcigpLmNsb3NlZDsKLQotICByZXR1cm4g
Y2xvc2VkLmNhdGNoKGUgPT4gewotICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKLSAgICBh
c3NlcnRfZXF1YWxzKGUsIGZpcnN0RXJyb3IsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRo
ZSBmaXJzdCBlcnJvcicpOwotICB9KTsKLQotfSwgJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5n
IGVycm9yIGFuZCByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGZyb20gc3RhcnQgc2hvdWxk
IGNhdXNlIHRoZSBzdHJlYW0gdG8gZXJyb3IgJyArCi0gICAnd2l0aCB0aGUgZmlyc3QgZXJyb3In
KTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsK
LSAgY29uc3QgZmlyc3RFcnJvciA9IG5ldyBFcnJvcignMScpOwotICBjb25zdCBzZWNvbmRFcnJv
ciA9IG5ldyBFcnJvcignMicpOwotCi0gIGNvbnN0IGNsb3NlZCA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7Ci0gICAgcHVsbChjKSB7Ci0gICAgICBjLmVycm9yKGZpcnN0RXJyb3IpOwotICAgICAgc3Rh
cnRDYWxsZWQgPSB0cnVlOwotICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHNlY29uZEVycm9y
KTsKLSAgICB9Ci0gIH0pLmdldFJlYWRlcigpLmNsb3NlZDsKLQotICByZXR1cm4gY2xvc2VkLmNh
dGNoKGUgPT4gewotICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKLSAgICBhc3NlcnRfZXF1
YWxzKGUsIGZpcnN0RXJyb3IsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBmaXJzdCBl
cnJvcicpOwotICB9KTsKLQotfSwgJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9yIGFu
ZCByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGZyb20gcHVsbCBzaG91bGQgY2F1c2UgdGhl
IHN0cmVhbSB0byBlcnJvciAnICsKLSAgICd3aXRoIHRoZSBmaXJzdCBlcnJvcicpOwotCi1kb25l
KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1h
cGkvcmVhZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3MtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2NzZlMDY4NmFmY2FlYmM5M2YyZTQ4MWUwZjE1ODI5N2Y1Mzcx
MTFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFi
bGUtc3RyZWFtcy9icmFuZC1jaGVja3MtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
MzQgKzAsMCBAQAotCi1QQVNTIENhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0
cnVjdG9yIGluZGlyZWN0bHkgCi1QQVNTIENhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtQ29udHJv
bGxlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5IAotUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5
cGUuY2FuY2VsIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtLnBy
b3RvdHlwZS5nZXRSZWFkZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVT
dHJlYW0ucHJvdG90eXBlLnRlZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJs
ZVN0cmVhbVJlYWRlciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIG9uIGl0cyBhcmd1bWVudCAKLVBB
U1MgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLmNsb3NlZCBlbmZvcmNlcyBhIGJyYW5k
IGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUuY2FuY2VsIGVuZm9y
Y2VzIGEgYnJhbmQgY2hlY2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5y
ZWFkIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnBy
b3RvdHlwZS5yZWxlYXNlTG9jayBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjayBvbiBpdHMgYXJndW1lbnQg
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBjYW4ndCBiZSBnaXZlbiBhIGZ1bGx5LWNv
bnN0cnVjdGVkIFJlYWRhYmxlU3RyZWFtIAotUEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIu
cHJvdG90eXBlLmNsb3NlIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlci5wcm90b3R5cGUuZW5xdWV1ZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAot
UEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLmVycm9yIGVuZm9yY2VzIGEg
YnJhbmQgY2hlY2sgCi1GQUlMIExvYWQgYnJhbmQtY2hlY2tzLmpzIHdpdGggU2hhcmVkV29ya2Vy
IGFzc2VydF91bnJlYWNoZWQ6IFNoYXJlZFdvcmtlciBpcyB1bmF2YWlsYWJsZSBSZWFjaGVkIHVu
cmVhY2hhYmxlIGNvZGUKLUZBSUwgVW50aXRsZWQgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3Qg
KGV2YWx1YXRpbmcgJ25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmdldFJlZ2lzdHJhdGlvbicpCi1Q
QVNTIENhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0
bHkgCi1QQVNTIENhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBjb25zdHJ1Y3Rv
ciBpbmRpcmVjdGx5IAotUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuY2FuY2VsIGVuZm9y
Y2VzIGEgYnJhbmQgY2hlY2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5nZXRSZWFk
ZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBl
LnRlZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBl
bmZvcmNlcyBhIGJyYW5kIGNoZWNrIG9uIGl0cyBhcmd1bWVudCAKLVBBU1MgUmVhZGFibGVTdHJl
YW1SZWFkZXIucHJvdG90eXBlLmNsb3NlZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBS
ZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUuY2FuY2VsIGVuZm9yY2VzIGEgYnJhbmQgY2hl
Y2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5yZWFkIGVuZm9yY2VzIGEg
YnJhbmQgY2hlY2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5yZWxlYXNl
TG9jayBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjayBvbiBpdHMgYXJndW1lbnQgCi1QQVNTIFJlYWRhYmxl
U3RyZWFtQ29udHJvbGxlciBjYW4ndCBiZSBnaXZlbiBhIGZ1bGx5LWNvbnN0cnVjdGVkIFJlYWRh
YmxlU3RyZWFtIAotUEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLmNsb3Nl
IGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5w
cm90b3R5cGUuZW5xdWV1ZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLmVycm9yIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3MuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUt
c3RyZWFtcy9icmFuZC1jaGVja3MuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OWRmZWQxMjNkNzZkYjg3ZjdiMzIwMTljYzE2M2IzMzQyZjFhMmQ4Yi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hl
Y2tzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2Vycy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
YnJhbmQtY2hlY2tzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci13b3Jr
ZXJfdGVzdCgnYnJhbmQtY2hlY2tzLmpzJyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFi
bGUtc3RyZWFtcy9icmFuZC1jaGVja3MuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tz
LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjU1M2NmOTJmNTJmZDZkYzBlNzIz
YmFmNmY3M2Q3M2VlYjhmNWYwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3MuanMKKysrIC9kZXYvbnVsbApA
QCAtMSwxNTEgKzAsMCBAQAotJ3VzZSBzdHJpY3QnOwotCi1pZiAoc2VsZi5pbXBvcnRTY3JpcHRz
KSB7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMnKTsK
LSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0K
LWxldCBSZWFkYWJsZVN0cmVhbVJlYWRlcjsKLWxldCBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI7
Ci0KLXRlc3QoKCkgPT4gewotCi0gIC8vIEl0J3Mgbm90IGV4cG9zZWQgZ2xvYmFsbHksIGJ1dCB3
ZSB0ZXN0IGEgZmV3IG9mIGl0cyBwcm9wZXJ0aWVzIGhlcmUuCi0gIFJlYWRhYmxlU3RyZWFtUmVh
ZGVyID0gKG5ldyBSZWFkYWJsZVN0cmVhbSgpKS5nZXRSZWFkZXIoKS5jb25zdHJ1Y3RvcjsKLQot
fSwgJ0NhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0
bHknKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgLy8gSXQncyBub3QgZXhwb3NlZCBnbG9iYWxseSwg
YnV0IHdlIHRlc3QgYSBmZXcgb2YgaXRzIHByb3BlcnRpZXMgaGVyZS4KLSAgbmV3IFJlYWRhYmxl
U3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIg
PSBjLmNvbnN0cnVjdG9yOwotICAgIH0KLSAgfSk7Ci0KLX0sICdDYW4gZ2V0IHRoZSBSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXIgY29uc3RydWN0b3IgaW5kaXJlY3RseScpOwotCi1mdW5jdGlvbiBm
YWtlUmVhZGFibGVTdHJlYW0oKSB7Ci0gIHJldHVybiB7Ci0gICAgY2FuY2VsKCkgeyByZXR1cm4g
UHJvbWlzZS5yZXNvbHZlKCk7IH0sCi0gICAgZ2V0UmVhZGVyKCkgeyByZXR1cm4gbmV3IFJlYWRh
YmxlU3RyZWFtUmVhZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSgpKTsgfSwKLSAgICBwaXBlVGhyb3Vn
aChvYmopIHsgcmV0dXJuIG9iai5yZWFkYWJsZTsgfSwKLSAgICBwaXBlVG8oKSB7IHJldHVybiBQ
cm9taXNlLnJlc29sdmUoKTsgfSwKLSAgICB0ZWUoKSB7IHJldHVybiBbcmVhbFJlYWRhYmxlU3Ry
ZWFtKCksIHJlYWxSZWFkYWJsZVN0cmVhbSgpXTsgfQotICB9OwotfQotCi1mdW5jdGlvbiByZWFs
UmVhZGFibGVTdHJlYW0oKSB7Ci0gIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLX0KLQot
ZnVuY3Rpb24gZmFrZVJlYWRhYmxlU3RyZWFtUmVhZGVyKCkgewotICByZXR1cm4gewotICAgIGdl
dCBjbG9zZWQoKSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsgfSwKLSAgICBjYW5jZWwoKSB7
IHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsgfSwKLSAgICByZWFkKCkgeyByZXR1cm4gUHJvbWlz
ZS5yZXNvbHZlKHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9KTsgfSwKLSAgICByZWxl
YXNlTG9jaygpIHsgcmV0dXJuOyB9Ci0gIH07Ci19Ci0KLWZ1bmN0aW9uIGZha2VSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXIoKSB7Ci0gIHJldHVybiB7Ci0gICAgY2xvc2UoKSB7IH0sCi0gICAgZW5x
dWV1ZSgpIHsgfSwKLSAgICBlcnJvcigpIHsgfQotICB9OwotfQotCi1wcm9taXNlX3Rlc3QodCA9
PiB7Ci0KLSAgcmV0dXJuIG1ldGhvZFJlamVjdHModCwgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBl
LCAnY2FuY2VsJywgZmFrZVJlYWRhYmxlU3RyZWFtKCkpOwotCi19LCAnUmVhZGFibGVTdHJlYW0u
cHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7Ci0KLXRlc3QoKCkgPT4g
ewotCi0gIG1ldGhvZFRocm93cyhSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUsICdnZXRSZWFkZXIn
LCBmYWtlUmVhZGFibGVTdHJlYW0oKSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUu
Z2V0UmVhZGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAg
bWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ3RlZScsIGZha2VSZWFkYWJs
ZVN0cmVhbSgpKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS50ZWUgZW5mb3JjZXMg
YSBicmFuZCBjaGVjaycpOwotCi10ZXN0KCgpID0+IHsKLQotICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKGZha2VSZWFkYWJsZVN0
cmVhbSgpKSwKLSAgICAgICAgICAgICAgICAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1S
ZWFkZXIgc2hvdWxkIHRocm93Jyk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbVJlYWRlciBlbmZvcmNl
cyBhIGJyYW5kIGNoZWNrIG9uIGl0cyBhcmd1bWVudCcpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7
Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICBnZXR0ZXJSZWplY3RzKHQsIFJlYWRhYmxl
U3RyZWFtUmVhZGVyLnByb3RvdHlwZSwgJ2Nsb3NlZCcsIGZha2VSZWFkYWJsZVN0cmVhbVJlYWRl
cigpKSwKLSAgICBnZXR0ZXJSZWplY3RzKHQsIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlw
ZSwgJ2Nsb3NlZCcsIHJlYWxSZWFkYWJsZVN0cmVhbSgpKQotICBdKTsKLQotfSwgJ1JlYWRhYmxl
U3RyZWFtUmVhZGVyLnByb3RvdHlwZS5jbG9zZWQgZW5mb3JjZXMgYSBicmFuZCBjaGVjaycpOwot
Ci1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICBtZXRo
b2RSZWplY3RzKHQsIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZSwgJ2NhbmNlbCcsIGZh
a2VSZWFkYWJsZVN0cmVhbVJlYWRlcigpKSwKLSAgICBtZXRob2RSZWplY3RzKHQsIFJlYWRhYmxl
U3RyZWFtUmVhZGVyLnByb3RvdHlwZSwgJ2NhbmNlbCcsIHJlYWxSZWFkYWJsZVN0cmVhbSgpKQot
ICBdKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5jYW5jZWwgZW5mb3Jj
ZXMgYSBicmFuZCBjaGVjaycpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgcmV0dXJuIFBy
b21pc2UuYWxsKFsKLSAgICBtZXRob2RSZWplY3RzKHQsIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnBy
b3RvdHlwZSwgJ3JlYWQnLCBmYWtlUmVhZGFibGVTdHJlYW1SZWFkZXIoKSksCi0gICAgbWV0aG9k
UmVqZWN0cyh0LCBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUsICdyZWFkJywgcmVhbFJl
YWRhYmxlU3RyZWFtKCkpCi0gIF0pOwotCi19LCAnUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90
eXBlLnJlYWQgZW5mb3JjZXMgYSBicmFuZCBjaGVjaycpOwotCi10ZXN0KCgpID0+IHsKLQotICBt
ZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLCAncmVsZWFzZUxvY2sn
LCBmYWtlUmVhZGFibGVTdHJlYW1SZWFkZXIoKSk7Ci0gIG1ldGhvZFRocm93cyhSZWFkYWJsZVN0
cmVhbVJlYWRlci5wcm90b3R5cGUsICdyZWxlYXNlTG9jaycsIHJlYWxSZWFkYWJsZVN0cmVhbSgp
KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5yZWxlYXNlTG9jayBlbmZv
cmNlcyBhIGJyYW5kIGNoZWNrJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGFzc2VydF90aHJvd3Mo
bmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKGZha2VS
ZWFkYWJsZVN0cmVhbSgpKSwKLSAgICAgICAgICAgICAgICAnQ29uc3RydWN0aW5nIGEgUmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyIHNob3VsZCB0aHJvdycpOwotCi19LCAnUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50Jyk7Ci0KLXRl
c3QoKCkgPT4gewotCi0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcg
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyKHJlYWxSZWFkYWJsZVN0cmVhbSgpKSwKLSAgICAgICAg
ICAgICAgICAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIHNob3VsZCB0
aHJvdycpOwotCi19LCAnUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIGNhblwndCBiZSBnaXZlbiBh
IGZ1bGx5LWNvbnN0cnVjdGVkIFJlYWRhYmxlU3RyZWFtJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0g
IG1ldGhvZFRocm93cyhSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLCAnY2xvc2Un
LCBmYWtlUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKCkpOwotCi19LCAnUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyLnByb3RvdHlwZS5jbG9zZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7Ci0KLXRl
c3QoKCkgPT4gewotCi0gIG1ldGhvZFRocm93cyhSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIucHJv
dG90eXBlLCAnZW5xdWV1ZScsIGZha2VSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIoKSk7Ci0KLX0s
ICdSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLmVucXVldWUgZW5mb3JjZXMgYSBi
cmFuZCBjaGVjaycpOwotCi10ZXN0KCgpID0+IHsKLQotICBtZXRob2RUaHJvd3MoUmVhZGFibGVT
dHJlYW1Db250cm9sbGVyLnByb3RvdHlwZSwgJ2Vycm9yJywgZmFrZVJlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlcigpKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUuZXJy
b3IgZW5mb3JjZXMgYSBicmFuZCBjaGVjaycpOwotCi1kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRh
YmxlLXN0cmVhbXMvY2FuY2VsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTk0YjNiOTQ2ZTIx
MzAxMzM2Njg2ZmQ4MDRjNzNhYWEyZDEyY2U1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwtZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNl
bGxhdGlvbjogaW50ZWdyYXRpb24gdGVzdCBvbiBhbiBpbmZpbml0ZSBzdHJlYW0gZGVyaXZlZCBm
cm9tIGEgcmFuZG9tIHB1c2ggc291cmNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRp
b246IGNhbmNlbChyZWFzb24pIHNob3VsZCBwYXNzIHRocm91Z2ggdGhlIGdpdmVuIHJlYXNvbiB0
byB0aGUgdW5kZXJseWluZyBzb3VyY2UgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlv
bjogY2FuY2VsKCkgb24gYSBsb2NrZWQgc3RyZWFtIHNob3VsZCBmYWlsIGFuZCBub3QgY2FsbCB0
aGUgdW5kZXJseWluZyBzb3VyY2UgY2FuY2VsIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxs
YXRpb246IHNob3VsZCBmdWxmaWxsIHByb21pc2Ugd2hlbiBjYW5jZWwgY2FsbGJhY2sgd2VudCBm
aW5lIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IHJldHVybmluZyBhIHZhbHVl
IGZyb20gdGhlIHVuZGVybHlpbmcgc291cmNlJ3MgY2FuY2VsIHNob3VsZCBub3QgYWZmZWN0IHRo
ZSBmdWxmaWxsbWVudCB2YWx1ZSBvZiB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3RyZWFt
J3MgY2FuY2VsIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IHNob3VsZCByZWpl
Y3QgcHJvbWlzZSB3aGVuIGNhbmNlbCBjYWxsYmFjayByYWlzZXMgYW4gZXhjZXB0aW9uIAotUEFT
UyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSdz
IGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5
IHRoZSBzdHJlYW0ncyBjYW5jZWwgc2hvdWxkIGZ1bGZpbGwgd2hlbiB0aGF0IG9uZSBkb2VzICgx
KSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBz
b3VyY2UncyBjYW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSByZXR1
cm5lZCBieSB0aGUgc3RyZWFtJ3MgY2FuY2VsIHNob3VsZCBmdWxmaWxsIHdoZW4gdGhhdCBvbmUg
ZG9lcyAoMikgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVy
bHlpbmcgc291cmNlJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21p
c2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBzaG91bGQgcmVqZWN0IHdoZW4gdGhh
dCBvbmUgZG9lcyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5jZWxsaW5n
IGJlZm9yZSBzdGFydCBmaW5pc2hlcyBzaG91bGQgcHJldmVudCBwdWxsKCkgZnJvbSBiZWluZyBj
YWxsZWQgCi1GQUlMIExvYWQgY2FuY2VsLmpzIHdpdGggU2hhcmVkV29ya2VyIGFzc2VydF91bnJl
YWNoZWQ6IFNoYXJlZFdvcmtlciBpcyB1bmF2YWlsYWJsZSBSZWFjaGVkIHVucmVhY2hhYmxlIGNv
ZGUKLUZBSUwgVW50aXRsZWQgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcg
J25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmdldFJlZ2lzdHJhdGlvbicpCi1QQVNTIFJlYWRhYmxl
U3RyZWFtIGNhbmNlbGxhdGlvbjogaW50ZWdyYXRpb24gdGVzdCBvbiBhbiBpbmZpbml0ZSBzdHJl
YW0gZGVyaXZlZCBmcm9tIGEgcmFuZG9tIHB1c2ggc291cmNlIAotUEFTUyBSZWFkYWJsZVN0cmVh
bSBjYW5jZWxsYXRpb246IGNhbmNlbChyZWFzb24pIHNob3VsZCBwYXNzIHRocm91Z2ggdGhlIGdp
dmVuIHJlYXNvbiB0byB0aGUgdW5kZXJseWluZyBzb3VyY2UgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
IGNhbmNlbGxhdGlvbjogY2FuY2VsKCkgb24gYSBsb2NrZWQgc3RyZWFtIHNob3VsZCBmYWlsIGFu
ZCBub3QgY2FsbCB0aGUgdW5kZXJseWluZyBzb3VyY2UgY2FuY2VsIAotUEFTUyBSZWFkYWJsZVN0
cmVhbSBjYW5jZWxsYXRpb246IHNob3VsZCBmdWxmaWxsIHByb21pc2Ugd2hlbiBjYW5jZWwgY2Fs
bGJhY2sgd2VudCBmaW5lIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IHJldHVy
bmluZyBhIHZhbHVlIGZyb20gdGhlIHVuZGVybHlpbmcgc291cmNlJ3MgY2FuY2VsIHNob3VsZCBu
b3QgYWZmZWN0IHRoZSBmdWxmaWxsbWVudCB2YWx1ZSBvZiB0aGUgcHJvbWlzZSByZXR1cm5lZCBi
eSB0aGUgc3RyZWFtJ3MgY2FuY2VsIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246
IHNob3VsZCByZWplY3QgcHJvbWlzZSB3aGVuIGNhbmNlbCBjYWxsYmFjayByYWlzZXMgYW4gZXhj
ZXB0aW9uIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5
aW5nIHNvdXJjZSdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRoZSBwcm9taXNl
IHJldHVybmVkIGJ5IHRoZSBzdHJlYW0ncyBjYW5jZWwgc2hvdWxkIGZ1bGZpbGwgd2hlbiB0aGF0
IG9uZSBkb2VzICgxKSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUg
dW5kZXJseWluZyBzb3VyY2UncyBjYW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUg
cHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3RyZWFtJ3MgY2FuY2VsIHNob3VsZCBmdWxmaWxsIHdo
ZW4gdGhhdCBvbmUgZG9lcyAoMikgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjog
aWYgdGhlIHVuZGVybHlpbmcgc291cmNlJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlz
ZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBzaG91bGQgcmVq
ZWN0IHdoZW4gdGhhdCBvbmUgZG9lcyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9u
OiBjYW5jZWxsaW5nIGJlZm9yZSBzdGFydCBmaW5pc2hlcyBzaG91bGQgcHJldmVudCBwdWxsKCkg
ZnJvbSBiZWluZyBjYWxsZWQgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy1hcGkvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZjc2NzQyOWYxNzAyOTIzNmRjNGI0MTA4ZDQ1NDQ1MGMwN2VjNmE0Yi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMv
Y2FuY2VsLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2Vycy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJjYW5j
ZWwuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLXdvcmtlcl90ZXN0KCdj
YW5jZWwuanMnKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2NhbmNl
bC5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy1hcGkvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGY1MDE0YzJjOTRkMjcxZTMxOGMwZWNjYjJjZjgwM2E2MDI1M2ExZTEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2Nh
bmNlbC5qcworKysgL2Rldi9udWxsCkBAIC0xLDI0MiArMCwwIEBACi0ndXNlIHN0cmljdCc7Ci0K
LWlmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNv
dXJjZXMvdGVzdC11dGlscy5qcycpOwotICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNl
cy9ycy11dGlscy5qcycpOwotICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMnKTsKLX0KLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCByYW5kb21T
b3VyY2UgPSBuZXcgUmFuZG9tUHVzaFNvdXJjZSgpOwotCi0gIGxldCBjYW5jZWxsYXRpb25GaW5p
c2hlZCA9IGZhbHNlOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3Rh
cnQoYykgewotICAgICAgcmFuZG9tU291cmNlLm9uZGF0YSA9IGMuZW5xdWV1ZS5iaW5kKGMpOwot
ICAgICAgcmFuZG9tU291cmNlLm9uZW5kID0gYy5jbG9zZS5iaW5kKGMpOwotICAgICAgcmFuZG9t
U291cmNlLm9uZXJyb3IgPSBjLmVycm9yLmJpbmQoYyk7Ci0gICAgfSwKLQotICAgIHB1bGwoKSB7
Ci0gICAgICByYW5kb21Tb3VyY2UucmVhZFN0YXJ0KCk7Ci0gICAgfSwKLQotICAgIGNhbmNlbCgp
IHsKLSAgICAgIHJhbmRvbVNvdXJjZS5yZWFkU3RvcCgpOwotICAgICAgcmFuZG9tU291cmNlLm9u
ZW5kKCk7Ci0KLSAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAg
c2V0VGltZW91dCgoKSA9PiB7Ci0gICAgICAgICAgY2FuY2VsbGF0aW9uRmluaXNoZWQgPSB0cnVl
OwotICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgfSwgMSk7Ci0gICAgICB9KTsKLSAgICB9
Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gIC8vIFdlIGNh
bGwgZGVsYXkgbXVsdGlwbGUgdGltZXMgdG8gYXZvaWQgY2FuY2VsbGluZyB0b28gZWFybHkgZm9y
IHRoZQotICAvLyBzb3VyY2UgdG8gZW5xdWV1ZSBhdCBsZWFzdCBvbmUgY2h1bmsuCi0gIGNvbnN0
IGNhbmNlbCA9IGRlbGF5KDUpLnRoZW4oKCkgPT4gZGVsYXkoNSkpLnRoZW4oKCkgPT4gZGVsYXko
NSkpLnRoZW4oKCkgPT4gewotICAgIGxldCBjYW5jZWxQcm9taXNlID0gcmVhZGVyLmNhbmNlbCgp
OwotICAgIGFzc2VydF9mYWxzZShjYW5jZWxsYXRpb25GaW5pc2hlZCwgJ2NhbmNlbGxhdGlvbiBp
biBzb3VyY2Ugc2hvdWxkIGhhcHBlbiBsYXRlcicpOwotICAgIHJldHVybiBjYW5jZWxQcm9taXNl
OwotICB9KQotCi0gIHJldHVybiByZWFkYWJsZVN0cmVhbVRvQXJyYXkocnMsIHJlYWRlcikudGhl
bihjaHVua3MgPT4gewotICAgIGFzc2VydF9ncmVhdGVyX3RoYW4oY2h1bmtzLmxlbmd0aCwgMCwg
J2F0IGxlYXN0IG9uZSBjaHVuayBzaG91bGQgYmUgcmVhZCcpOwotICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgY2h1bmtzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGNodW5rc1tp
XS5sZW5ndGgsIDEyOCwgJ2NodW5rICcgKyBpICsgJyBzaG91bGQgaGF2ZSAxMjggYnl0ZXMnKTsK
LSAgICB9Ci0gICAgcmV0dXJuIGNhbmNlbDsKLSAgfSkudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0
X3RydWUoY2FuY2VsbGF0aW9uRmluaXNoZWQsICdpdCByZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGlz
IGZ1bGZpbGxlZCB3aGVuIHRoZSBjYW5jZWxsYXRpb24gZmluaXNoZXMnKTsKLSAgfSk7Ci0KLX0s
ICdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGludGVncmF0aW9uIHRlc3Qgb24gYW4gaW5m
aW5pdGUgc3RyZWFtIGRlcml2ZWQgZnJvbSBhIHJhbmRvbSBwdXNoIHNvdXJjZScpOwotCi10ZXN0
KCgpID0+IHsKLQotICBsZXQgcmVjb3JkZWRSZWFzb247Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKLSAgICBjYW5jZWwocmVhc29uKSB7Ci0gICAgICByZWNvcmRlZFJlYXNvbiA9
IHJlYXNvbjsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHBhc3NlZFJlYXNvbiA9IG5ldyBFcnJv
cignU29ycnksIGl0IGp1c3Qgd2FzblwndCBtZWFudCB0byBiZS4nKTsKLSAgcnMuY2FuY2VsKHBh
c3NlZFJlYXNvbik7Ci0KLSAgYXNzZXJ0X2VxdWFscyhyZWNvcmRlZFJlYXNvbiwgcGFzc2VkUmVh
c29uLAotICAgICd0aGUgZXJyb3IgcGFzc2VkIHRvIHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyBj
YW5jZWwgbWV0aG9kIHNob3VsZCBlcXVhbCB0aGUgb25lIHBhc3NlZCB0byB0aGUgc3RyZWFtXCdz
IGNhbmNlbCcpOwotCi19LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5jZWwocmVh
c29uKSBzaG91bGQgcGFzcyB0aHJvdWdoIHRoZSBnaXZlbiByZWFzb24gdG8gdGhlIHVuZGVybHlp
bmcgc291cmNlJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1ZSgnYScpOwot
ICAgICAgYy5jbG9zZSgpOwotICAgIH0sCi0gICAgY2FuY2VsKCkgewotICAgICAgYXNzZXJ0X3Vu
cmVhY2hlZCgndW5kZXJseWluZyBzb3VyY2UgY2FuY2VsKCkgc2hvdWxkIG5vdCBoYXZlIGJlZW4g
Y2FsbGVkJyk7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIo
KTsKLQotICByZXR1cm4gcnMuY2FuY2VsKCkudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X3VucmVh
Y2hlZCgnY2FuY2VsKCkgc2hvdWxkIGJlIHJlamVjdGVkJyk7Ci0gIH0sIGUgPT4gewotICAgIGFz
c2VydF9lcXVhbHMoZS5uYW1lLCAnVHlwZUVycm9yJywgJ2NhbmNlbCgpIHNob3VsZCBiZSByZWpl
Y3RlZCB3aXRoIGEgVHlwZUVycm9yJyk7Ci0gIH0pLnRoZW4oKCkgPT4gewotICAgIHJldHVybiBy
ZWFkZXIucmVhZCgpOwotICB9KS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNzZXJ0X29iamVjdF9l
cXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdyZWFkKCkgc2hvdWxk
IHN0aWxsIHdvcmsgYWZ0ZXIgdGhlIGF0dGVtcHRlZCBjYW5jZWwnKTsKLSAgICByZXR1cm4gcmVh
ZGVyLmNsb3NlZDsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGNh
bmNlbCgpIG9uIGEgbG9ja2VkIHN0cmVhbSBzaG91bGQgZmFpbCBhbmQgbm90IGNhbGwgdGhlIHVu
ZGVybHlpbmcgc291cmNlIGNhbmNlbCcpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxl
dCBjYW5jZWxSZWNlaXZlZCA9IGZhbHNlOwotICBjb25zdCBjYW5jZWxSZWFzb24gPSBuZXcgRXJy
b3IoJ0kgYW0gdGlyZWQgb2YgdGhpcyBzdHJlYW0sIEkgcHJlZmVyIHRvIGNhbmNlbCBpdCcpOwot
ICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgY2FuY2VsKHJlYXNvbikgewot
ICAgICAgY2FuY2VsUmVjZWl2ZWQgPSB0cnVlOwotICAgICAgYXNzZXJ0X2VxdWFscyhyZWFzb24s
IGNhbmNlbFJlYXNvbiwgJ2NhbmNlbGxhdGlvbiByZWFzb24gZ2l2ZW4gdG8gdGhlIHVuZGVybHlp
bmcgc291cmNlIHNob3VsZCBiZSBlcXVhbCB0byB0aGUgb25lIHBhc3NlZCcpOwotICAgIH0KLSAg
fSk7Ci0KLSAgcmV0dXJuIHJzLmNhbmNlbChjYW5jZWxSZWFzb24pLnRoZW4oKCkgPT4gewotICAg
IGFzc2VydF90cnVlKGNhbmNlbFJlY2VpdmVkKTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVh
bSBjYW5jZWxsYXRpb246IHNob3VsZCBmdWxmaWxsIHByb21pc2Ugd2hlbiBjYW5jZWwgY2FsbGJh
Y2sgd2VudCBmaW5lJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oewotICAgIGNhbmNlbCgpIHsKLSAgICAgIHJldHVybiAnSGVsbG8n
OwotICAgIH0KLSAgfSk7Ci0KLSAgcmV0dXJuIHJzLmNhbmNlbCgpLnRoZW4odiA9PiB7Ci0gICAg
YXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxk
IGJlIGZ1bGZpbGxlZCB3aXRoIHVuZGVmaW5lZCcpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3Ry
ZWFtIGNhbmNlbGxhdGlvbjogcmV0dXJuaW5nIGEgdmFsdWUgZnJvbSB0aGUgdW5kZXJseWluZyBz
b3VyY2VcJ3MgY2FuY2VsIHNob3VsZCBub3QgYWZmZWN0IHRoZSBmdWxmaWxsbWVudCB2YWx1ZSBv
ZiB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3RyZWFtXCdzIGNhbmNlbCcpOwotCi1wcm9t
aXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHRocm93bkVycm9yID0gbmV3IEVycm9yKCd0ZXN0
Jyk7Ci0gIGxldCBjYW5jZWxDYWxsZWQgPSBmYWxzZTsKLQotICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgY2FuY2VsKCkgewotICAgICAgY2FuY2VsQ2FsbGVkID0gdHJ1ZTsK
LSAgICAgIHRocm93IHRocm93bkVycm9yOwotICAgIH0KLSAgfSk7Ci0KLSAgcmV0dXJuIHJzLmNh
bmNlbCgndGVzdCcpLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF91bnJlYWNoZWQoJ2NhbmNlbCBz
aG91bGQgcmVqZWN0Jyk7Ci0gIH0sIGUgPT4gewotICAgIGFzc2VydF90cnVlKGNhbmNlbENhbGxl
ZCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhlLCB0aHJvd25FcnJvcik7Ci0gIH0pOwotCi19LCAnUmVh
ZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBzaG91bGQgcmVqZWN0IHByb21pc2Ugd2hlbiBjYW5j
ZWwgY2FsbGJhY2sgcmFpc2VzIGFuIGV4Y2VwdGlvbicpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4g
ewotCi0gIGNvbnN0IGNhbmNlbFJlYXNvbiA9IG5ldyBFcnJvcigndGVzdCcpOwotCi0gIGNvbnN0
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBjYW5jZWwoZXJyb3IpIHsKLSAgICAgIGFz
c2VydF9lcXVhbHMoZXJyb3IsIGNhbmNlbFJlYXNvbik7Ci0gICAgICByZXR1cm4gZGVsYXkoMSk7
Ci0gICAgfQotICB9KTsKLQotICByZXR1cm4gcnMuY2FuY2VsKGNhbmNlbFJlYXNvbik7Ci0KLX0s
ICdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwn
cyBjYW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBi
eSB0aGUgc3RyZWFtXCdzIGNhbmNlbCBzaG91bGQgZnVsZmlsbCB3aGVuIHRoYXQgb25lIGRvZXMg
KDEpJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHJlc29sdmVTb3VyY2VDYW5j
ZWxQcm9taXNlOwotICBsZXQgc291cmNlQ2FuY2VsUHJvbWlzZUhhc0Z1bGZpbGxlZCA9IGZhbHNl
OwotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBjYW5jZWwoKSB7Ci0g
ICAgICBjb25zdCBzb3VyY2VDYW5jZWxQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBy
ZXNvbHZlU291cmNlQ2FuY2VsUHJvbWlzZSA9IHJlc29sdmUpOwotCi0gICAgICBzb3VyY2VDYW5j
ZWxQcm9taXNlLnRoZW4oKCkgPT4gewotICAgICAgICBzb3VyY2VDYW5jZWxQcm9taXNlSGFzRnVs
ZmlsbGVkID0gdHJ1ZTsKLSAgICAgIH0pOwotCi0gICAgICByZXR1cm4gc291cmNlQ2FuY2VsUHJv
bWlzZTsKLSAgICB9Ci0gIH0pOwotCi0gIHNldFRpbWVvdXQoKCkgPT4gcmVzb2x2ZVNvdXJjZUNh
bmNlbFByb21pc2UoJ0hlbGxvJyksIDEpOwotCi0gIHJldHVybiBycy5jYW5jZWwoKS50aGVuKHZh
bHVlID0+IHsKLSAgICBhc3NlcnRfdHJ1ZShzb3VyY2VDYW5jZWxQcm9taXNlSGFzRnVsZmlsbGVk
LCAnY2FuY2VsKCkgcmV0dXJuIHZhbHVlIHNob3VsZCBiZSBmdWxmaWxsZWQgb25seSBhZnRlciB0
aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2VsJyk7
Ci0gICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgdW5kZWZpbmVkLCAnY2FuY2VsKCkgcmV0dXJuIHZh
bHVlIHNob3VsZCBiZSBmdWxmaWxsZWQgd2l0aCB1bmRlZmluZWQnKTsKLSAgfSk7Ci0KLX0sICdS
ZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyBj
YW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0
aGUgc3RyZWFtXCdzIGNhbmNlbCBzaG91bGQgZnVsZmlsbCB3aGVuIHRoYXQgb25lIGRvZXMgKDIp
Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHJlamVjdFNvdXJjZUNhbmNlbFBy
b21pc2U7Ci0gIGxldCBzb3VyY2VDYW5jZWxQcm9taXNlSGFzUmVqZWN0ZWQgPSBmYWxzZTsKLQot
ICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgY2FuY2VsKCkgewotICAgICAg
Y29uc3Qgc291cmNlQ2FuY2VsUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3Qp
ID0+IHJlamVjdFNvdXJjZUNhbmNlbFByb21pc2UgPSByZWplY3QpOwotCi0gICAgICBzb3VyY2VD
YW5jZWxQcm9taXNlLmNhdGNoKCgpID0+IHsKLSAgICAgICAgc291cmNlQ2FuY2VsUHJvbWlzZUhh
c1JlamVjdGVkID0gdHJ1ZTsKLSAgICAgIH0pOwotCi0gICAgICByZXR1cm4gc291cmNlQ2FuY2Vs
UHJvbWlzZTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IGVycm9ySW5DYW5jZWwgPSBuZXcgRXJy
b3IoJ1NvcnJ5LCBpdCBqdXN0IHdhc25cJ3QgbWVhbnQgdG8gYmUuJyk7Ci0KLSAgc2V0VGltZW91
dCgoKSA9PiByZWplY3RTb3VyY2VDYW5jZWxQcm9taXNlKGVycm9ySW5DYW5jZWwpLCAxKTsKLQot
ICByZXR1cm4gcnMuY2FuY2VsKCkudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X3VucmVhY2hlZCgn
Y2FuY2VsKCkgcmV0dXJuIHZhbHVlIHNob3VsZCBiZSByZWplY3RlZCcpOwotICB9LCByID0+IHsK
LSAgICBhc3NlcnRfdHJ1ZShzb3VyY2VDYW5jZWxQcm9taXNlSGFzUmVqZWN0ZWQsICdjYW5jZWwo
KSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIHJlamVjdGVkIG9ubHkgYWZ0ZXIgdGhlIHByb21pc2Ug
cmV0dXJuZWQgYnkgdGhlIHVuZGVybHlpbmcgc291cmNlXCdzIGNhbmNlbCcpOwotICAgIGFzc2Vy
dF9lcXVhbHMociwgZXJyb3JJbkNhbmNlbCwgJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBzaG91bGQg
YmUgcmVqZWN0ZWQgd2l0aCB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgcmVqZWN0aW9uIHJlYXNv
bicpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVu
ZGVybHlpbmcgc291cmNlXCdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRoZSBw
cm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW1cJ3MgY2FuY2VsIHNob3VsZCByZWplY3Qgd2hl
biB0aGF0IG9uZSBkb2VzJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KCkgewotICAgICAgcmV0dXJuIG5ldyBQ
cm9taXNlKCgpID0+IHt9KTsKLSAgICB9LAotICAgIHB1bGwoKSB7Ci0gICAgICBhc3NlcnRfdW5y
ZWFjaGVkKCdwdWxsIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCcpOwotICAgIH0KLSAgfSk7
Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKFtycy5jYW5jZWwoKSwgcnMuZ2V0UmVhZGVyKCkuY2xv
c2VkXSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGNhbmNlbGxpbmcgYmVm
b3JlIHN0YXJ0IGZpbmlzaGVzIHNob3VsZCBwcmV2ZW50IHB1bGwoKSBmcm9tIGJlaW5nIGNhbGxl
ZCcpOwotCi1kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWlu
Zy1zdHJhdGVneS1pbnRlZ3JhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvY291
bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGZhNGUxZGY5OTFjMTc3OGQ0Y2UzYzE5YjlhMTc0ZTY3NzcxYTg4
NjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJs
ZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24tZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotCi1QQVNTIENhbiBjb25zdHJ1Y3QgYSBy
ZWFkYWJsZSBzdHJlYW0gd2l0aCBhIHZhbGlkIENvdW50UXVldWluZ1N0cmF0ZWd5IAotUEFTUyBD
b3JyZWN0bHkgZ292ZXJucyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcidzIGRlc2lyZWRTaXpl
IHByb3BlcnR5IChIV00gPSAwKSAKLVBBU1MgQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXIncyBkZXNpcmVkU2l6ZSBwcm9wZXJ0eSAoSFdNID0gMSkgCi1QQVNTIENv
cnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyJ3MgZGVzaXJlZFNpemUg
cHJvcGVydHkgKEhXTSA9IDQpIAotRkFJTCBMb2FkIGNvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50
ZWdyYXRpb24uanMgd2l0aCBTaGFyZWRXb3JrZXIgYXNzZXJ0X3VucmVhY2hlZDogU2hhcmVkV29y
a2VyIGlzIHVuYXZhaWxhYmxlIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQotRkFJTCBVbnRpdGxl
ZCB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnbmF2aWdhdG9yLnNlcnZp
Y2VXb3JrZXIuZ2V0UmVnaXN0cmF0aW9uJykKLVBBU1MgQ2FuIGNvbnN0cnVjdCBhIHJlYWRhYmxl
IHN0cmVhbSB3aXRoIGEgdmFsaWQgQ291bnRRdWV1aW5nU3RyYXRlZ3kgCi1QQVNTIENvcnJlY3Rs
eSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyJ3MgZGVzaXJlZFNpemUgcHJvcGVy
dHkgKEhXTSA9IDApIAotUEFTUyBDb3JyZWN0bHkgZ292ZXJucyBhIFJlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlcidzIGRlc2lyZWRTaXplIHByb3BlcnR5IChIV00gPSAxKSAKLVBBU1MgQ29ycmVjdGx5
IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIncyBkZXNpcmVkU2l6ZSBwcm9wZXJ0
eSAoSFdNID0gNCkgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5n
LXN0cmF0ZWd5LWludGVncmF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWlu
Zy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBiYzM4MTY2YzMwMzU4ODg2NWFkOWI0NGRhMWE5ODk5YzFmYzc2ZDY0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1x
dWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMiAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5q
cyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSJjb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVn
cmF0aW9uLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci13b3JrZXJfdGVz
dCgnY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5qcycpOwotPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3Jh
dGlvbi5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0
aW9uLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjlhMWFhMmJhNjMxZWRiYjlk
ZTE4M2YxMDY2ZTYzYTM5Mjc3ZmNkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVn
cmF0aW9uLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjEzICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsK
LQotaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgewotICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMnKTsKLX0KLQotdGVzdCgoKSA9PiB7Ci0KLSAgbmV3IFJlYWRh
YmxlU3RyZWFtKHt9LCBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA0
IH0pKTsKLQotfSwgJ0NhbiBjb25zdHJ1Y3QgYSByZWFkYWJsZSBzdHJlYW0gd2l0aCBhIHZhbGlk
IENvdW50UXVldWluZ1N0cmF0ZWd5Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0
IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAotICAgIHsKLSAg
ICAgIHN0YXJ0KGMpIHsKLSAgICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgICB9Ci0gICAgfSwK
LSAgICBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAwIH0pCi0gICk7
Ci0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gIGFzc2VydF9lcXVhbHMoY29u
dHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzAgcmVhZHMsIDAgZW5xdWV1ZXM6IGRlc2lyZWRTaXpl
IHNob3VsZCBiZSAwJyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOwotICBhc3NlcnRfZXF1
YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMCByZWFkcywgMSBlbnF1ZXVlOiBkZXNp
cmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKLSAgY29udHJvbGxlci5lbnF1ZXVlKCdiJyk7Ci0gIGFz
c2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTIsICcwIHJlYWRzLCAyIGVucXVl
dWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTInKTsKLSAgY29udHJvbGxlci5lbnF1ZXVlKCdj
Jyk7Ci0gIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTMsICcwIHJlYWRz
LCAzIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTMnKTsKLSAgY29udHJvbGxlci5l
bnF1ZXVlKCdkJyk7Ci0gIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTQs
ICcwIHJlYWRzLCA0IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTQnKTsKLQotICBy
ZXR1cm4gcmVhZGVyLnJlYWQoKQotICAgIC50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICBhc3NlcnRf
b2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICcxc3QgcmVhZCBnaXZlcyBiYWNrIHRoZSAxc3QgY2h1bmsg
ZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAzIGNodW5rcyknKTsKLSAgICAgIHJldHVybiBy
ZWFkZXIucmVhZCgpOwotICAgIH0pCi0gICAgLnRoZW4ocmVzdWx0ID0+IHsKLSAgICAgIGFzc2Vy
dF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJzJuZCByZWFkIGdpdmVzIGJhY2sgdGhlIDJuZCBjaHVu
ayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDIgY2h1bmtzKScpOwotICAgICAgcmV0dXJu
IHJlYWRlci5yZWFkKCk7Ci0gICAgfSkKLSAgICAudGhlbihyZXN1bHQgPT4gewotICAgICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYycsIGRvbmU6IGZhbHNlIH0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAnM3JkIHJlYWQgZ2l2ZXMgYmFjayB0aGUgM3JkIGNo
dW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMSBjaHVuayknKTsKLQotICAgICAgYXNz
ZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzMgcmVhZHMsIDQgZW5xdWV1
ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMScpOwotICAgICAgY29udHJvbGxlci5lbnF1ZXVl
KCdlJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0yLCAn
MyByZWFkcywgNSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0yJyk7Ci0KLSAgICAg
IHJldHVybiByZWFkZXIucmVhZCgpOwotICAgIH0pCi0gICAgLnRoZW4ocmVzdWx0ID0+IHsKLSAg
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2QnLCBkb25lOiBmYWxz
ZSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJzR0aCByZWFkIGdpdmVzIGJhY2sgdGhl
IDR0aCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDEgY2h1bmtzKScpOwotICAg
ICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0KLSAgICB9KS50aGVuKHJlc3VsdCA9PiB7Ci0gICAg
ICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdlJywgZG9uZTogZmFsc2Ug
fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICc1dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA1
dGggY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAwIGNodW5rcyknKTsKLQotICAg
ICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnNSByZWFkcywgNSBl
bnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAnKTsKLSAgICAgIGNvbnRyb2xsZXIuZW5x
dWV1ZSgnZicpOwotICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAt
MSwgJzUgcmVhZHMsIDYgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMScpOwotICAg
ICAgY29udHJvbGxlci5lbnF1ZXVlKCdnJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xs
ZXIuZGVzaXJlZFNpemUsIC0yLCAnNSByZWFkcywgNyBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hv
dWxkIGJlIC0yJyk7Ci0gICAgfSk7Ci0KLX0sICdDb3JyZWN0bHkgZ292ZXJucyBhIFJlYWRhYmxl
U3RyZWFtQ29udHJvbGxlclwncyBkZXNpcmVkU2l6ZSBwcm9wZXJ0eSAoSFdNID0gMCknKTsKLQot
cHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oCi0gICAgewotICAgICAgc3RhcnQoYykgewotICAgICAgICBjb250
cm9sbGVyID0gYzsKLSAgICAgIH0KLSAgICB9LAotICAgIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVn
eSh7IGhpZ2hXYXRlck1hcms6IDEgfSkKLSAgKTsKLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVh
ZGVyKCk7Ci0KLSAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnMCBy
ZWFkcywgMCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEnKTsKLSAgY29udHJvbGxl
ci5lbnF1ZXVlKCdhJyk7Ci0gIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwg
MCwgJzAgcmVhZHMsIDEgZW5xdWV1ZTogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAnKTsKLSAgY29u
dHJvbGxlci5lbnF1ZXVlKCdiJyk7Ci0gIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVk
U2l6ZSwgLTEsICcwIHJlYWRzLCAyIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEn
KTsKLSAgY29udHJvbGxlci5lbnF1ZXVlKCdjJyk7Ci0gIGFzc2VydF9lcXVhbHMoY29udHJvbGxl
ci5kZXNpcmVkU2l6ZSwgLTIsICcwIHJlYWRzLCAzIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91
bGQgYmUgLTInKTsKLSAgY29udHJvbGxlci5lbnF1ZXVlKCdkJyk7Ci0gIGFzc2VydF9lcXVhbHMo
Y29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTMsICcwIHJlYWRzLCA0IGVucXVldWVzOiBkZXNpcmVk
U2l6ZSBzaG91bGQgYmUgLTMnKTsKLQotICByZXR1cm4gcmVhZGVyLnJlYWQoKQotICAgIC50aGVu
KHJlc3VsdCA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6
ICdhJywgZG9uZTogZmFsc2UgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICcxc3QgcmVh
ZCBnaXZlcyBiYWNrIHRoZSAxc3QgY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAz
IGNodW5rcyknKTsKLSAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICAgIH0pCi0gICAgLnRo
ZW4ocmVzdWx0ID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1
ZTogJ2InLCBkb25lOiBmYWxzZSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJzJuZCBy
ZWFkIGdpdmVzIGJhY2sgdGhlIDJuZCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5z
IDIgY2h1bmtzKScpOwotICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gICAgfSkKLSAgICAu
dGhlbihyZXN1bHQgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZh
bHVlOiAnYycsIGRvbmU6IGZhbHNlIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnM3Jk
IHJlYWQgZ2l2ZXMgYmFjayB0aGUgM3JkIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFp
bnMgMSBjaHVuayknKTsKLQotICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRT
aXplLCAwLCAnMyByZWFkcywgNCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAnKTsK
LSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZScpOwotICAgICAgYXNzZXJ0X2VxdWFscyhjb250
cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzMgcmVhZHMsIDUgZW5xdWV1ZXM6IGRlc2lyZWRTaXpl
IHNob3VsZCBiZSAtMScpOwotCi0gICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgICB9KQot
ICAgIC50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQs
IHsgdmFsdWU6ICdkJywgZG9uZTogZmFsc2UgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICc0dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA0dGggY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBj
b250YWlucyAxIGNodW5rcyknKTsKLSAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICAgIH0p
Ci0gICAgLnRoZW4ocmVzdWx0ID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3Vs
dCwgeyB2YWx1ZTogJ2UnLCBkb25lOiBmYWxzZSB9LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJzV0aCByZWFkIGdpdmVzIGJhY2sgdGhlIDV0aCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93
IGNvbnRhaW5zIDAgY2h1bmtzKScpOwotCi0gICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIu
ZGVzaXJlZFNpemUsIDEsICc1IHJlYWRzLCA1IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQg
YmUgMScpOwotICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdmJyk7Ci0gICAgICBhc3NlcnRfZXF1
YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICc1IHJlYWRzLCA2IGVucXVldWVzOiBkZXNp
cmVkU2l6ZSBzaG91bGQgYmUgMCcpOwotICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdnJyk7Ci0g
ICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnNSByZWFkcywg
NyBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7Ci0gICAgfSk7Ci0KLX0sICdD
b3JyZWN0bHkgZ292ZXJucyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlclwncyBkZXNpcmVkU2l6
ZSBwcm9wZXJ0eSAoSFdNID0gMSknKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQg
Y29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oCi0gICAgewotICAg
ICAgc3RhcnQoYykgewotICAgICAgICBjb250cm9sbGVyID0gYzsKLSAgICAgIH0KLSAgICB9LAot
ICAgIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSkKLSAgKTsK
LSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgYXNzZXJ0X2VxdWFscyhjb250
cm9sbGVyLmRlc2lyZWRTaXplLCA0LCAnMCByZWFkcywgMCBlbnF1ZXVlczogZGVzaXJlZFNpemUg
c2hvdWxkIGJlIDQnKTsKLSAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7Ci0gIGFzc2VydF9lcXVh
bHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMywgJzAgcmVhZHMsIDEgZW5xdWV1ZTogZGVzaXJl
ZFNpemUgc2hvdWxkIGJlIDMnKTsKLSAgY29udHJvbGxlci5lbnF1ZXVlKCdiJyk7Ci0gIGFzc2Vy
dF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMiwgJzAgcmVhZHMsIDIgZW5xdWV1ZXM6
IGRlc2lyZWRTaXplIHNob3VsZCBiZSAyJyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpOwot
ICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEsICcwIHJlYWRzLCAzIGVu
cXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMScpOwotICBjb250cm9sbGVyLmVucXVldWUo
J2QnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnMCByZWFk
cywgNCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAnKTsKLSAgY29udHJvbGxlci5l
bnF1ZXVlKCdlJyk7Ci0gIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEs
ICcwIHJlYWRzLCA1IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKLSAgY29u
dHJvbGxlci5lbnF1ZXVlKCdmJyk7Ci0gIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVk
U2l6ZSwgLTIsICcwIHJlYWRzLCA2IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTIn
KTsKLQotCi0gIHJlYWRlci5yZWFkKCkKLSAgICAudGhlbihyZXN1bHQgPT4gewotICAgICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAnMXN0IHJlYWQgZ2l2ZXMgYmFjayB0aGUgMXN0IGNo
dW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgNSBjaHVua3MpJyk7Ci0gICAgICByZXR1
cm4gcmVhZGVyLnJlYWQoKTsKLSAgICB9KQotICAgIC50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFsc2UgfSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICcybmQgcmVhZCBnaXZlcyBiYWNrIHRoZSAybmQg
Y2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyA0IGNodW5rcyknKTsKLQotICAgICAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnMiByZWFkcywgNiBlbnF1
ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAnKTsKLSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1
ZSgnZycpOwotICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwg
JzIgcmVhZHMsIDcgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMScpOwotCi0gICAg
ICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgICB9KQotICAgIC50aGVuKHJlc3VsdCA9PiB7Ci0g
ICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdjJywgZG9uZTogZmFs
c2UgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICczcmQgcmVhZCBnaXZlcyBiYWNrIHRo
ZSAzcmQgY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyA0IGNodW5rcyknKTsKLSAg
ICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICAgIH0pCi0gICAgLnRoZW4ocmVzdWx0ID0+IHsK
LSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2QnLCBkb25lOiBm
YWxzZSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJzR0aCByZWFkIGdpdmVzIGJhY2sg
dGhlIDR0aCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDMgY2h1bmtzKScpOwot
ICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gICAgfSkKLSAgICAudGhlbihyZXN1bHQgPT4g
ewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZScsIGRvbmU6
IGZhbHNlIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnNXRoIHJlYWQgZ2l2ZXMgYmFj
ayB0aGUgNXRoIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMiBjaHVua3MpJyk7
Ci0gICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgICB9KQotICAgIC50aGVuKHJlc3VsdCA9
PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdmJywgZG9u
ZTogZmFsc2UgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICc2dGggcmVhZCBnaXZlcyBi
YWNrIHRoZSA2dGggY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAwIGNodW5rcykn
KTsKLQotICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAzLCAnNiBy
ZWFkcywgNyBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDMnKTsKLSAgICAgIGNvbnRy
b2xsZXIuZW5xdWV1ZSgnaCcpOwotICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2ly
ZWRTaXplLCAyLCAnNiByZWFkcywgOCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDIn
KTsKLSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnaScpOwotICAgICAgYXNzZXJ0X2VxdWFscyhj
b250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnNiByZWFkcywgOSBlbnF1ZXVlczogZGVzaXJlZFNp
emUgc2hvdWxkIGJlIDEnKTsKLSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnaicpOwotICAgICAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnNiByZWFkcywgMTAgZW5x
dWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7Ci0gICAgICBjb250cm9sbGVyLmVucXVl
dWUoJ2snKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEs
ICc2IHJlYWRzLCAxMSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7Ci0gICAg
fSk7Ci0KLX0sICdDb3JyZWN0bHkgZ292ZXJucyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlclwn
cyBkZXNpcmVkU2l6ZSBwcm9wZXJ0eSAoSFdNID0gNCknKTsKLQotZG9uZSgpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFw
aS9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi0xLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVh
ZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24tMS1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiNjUyYjg1MmYwN2U1YWJjNTZmNTIxMDVhY2MxODYwNWRj
YjgzMTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFk
YWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi0xLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDYgKzAsMCBAQAotCi1QQVNTIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBtZXRo
b2RzIHNob3VsZCBjb250aW51ZSB3b3JraW5nIHByb3Blcmx5IHdoZW4gc2NyaXB0cyBsb3NlIHRo
ZWlyIHJlZmVyZW5jZSB0byB0aGUgcmVhZGFibGUgc3RyZWFtIAotUEFTUyBSZWFkYWJsZVN0cmVh
bSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgZnVsZmlsbCBldmVuIGlmIHRoZSBzdHJlYW0gYW5kIHJl
YWRlciBKUyByZWZlcmVuY2VzIGFyZSBsb3N0IAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjbG9zZWQg
cHJvbWlzZSBzaG91bGQgcmVqZWN0IGV2ZW4gaWYgc3RyZWFtIGFuZCByZWFkZXIgSlMgcmVmZXJl
bmNlcyBhcmUgbG9zdCAKLVBBU1MgR2FyYmFnZS1jb2xsZWN0aW5nIGEgUmVhZGFibGVTdHJlYW1S
ZWFkZXIgc2hvdWxkIG5vdCB1bmxvY2sgaXRzIHN0cmVhbSAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJs
ZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi0xLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2Fy
YmFnZS1jb2xsZWN0aW9uLTEuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTI2
MDU1MmVhMGUyNzE1ZDhkNDliODc3YjQ2Y2JkMDllYWU3ZDQ5ZS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xs
ZWN0aW9uLTEuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIj48L3NjcmlwdD4KLQotPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KLTwhLS0gRmls
ZSB0byBiZSByZW1vdmVkIG9uY2UgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjQzNiBpcyByZXNvbHZlZCAtLT4KLTxzY3JpcHQgc3JjPSJnYXJiYWdlLWNvbGxlY3Rp
b24uanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29s
bGVjdGlvbi0yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rp
b24tMi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1N2QwY2Nk
Nzc5MzVlOGQyN2U3ZWFiYWZkNjAxZWUxY2NhMzY3YTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlv
bi0yLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotCi1QQVNTIFJl
YWRhYmxlU3RyZWFtQ29udHJvbGxlciBtZXRob2RzIHNob3VsZCBjb250aW51ZSB3b3JraW5nIHBy
b3Blcmx5IHdoZW4gc2NyaXB0cyBsb3NlIHRoZWlyIHJlZmVyZW5jZSB0byB0aGUgcmVhZGFibGUg
c3RyZWFtIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgZnVsZmls
bCBldmVuIGlmIHRoZSBzdHJlYW0gYW5kIHJlYWRlciBKUyByZWZlcmVuY2VzIGFyZSBsb3N0IAot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLTIuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkv
cmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24tMi5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA3YmUzYTRlMWY2OGM4OWY3MTgyZTNjYTA0ZDg1MTBlMzFhYjBlMDFj
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUt
c3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24tMi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDgg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIu
anMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMi
Pjwvc2NyaXB0PgotPCEtLSBGaWxlIHRvIGJlIHJlbW92ZWQgb25jZSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNDM2IGlzIHJlc29sdmVkIC0tPgotPHNjcmlwdD4K
LSd1c2Ugc3RyaWN0JzsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgY29udHJvbGxl
cjsKLSAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9s
bGVyID0gYzsKLSAgICB9Ci0gIH0pOwotCi0gIGdhcmJhZ2VDb2xsZWN0KCk7Ci0KLSAgcmV0dXJu
IGRlbGF5KDUwKS50aGVuKCgpID0+IHsKLSAgICBjb250cm9sbGVyLmNsb3NlKCk7Ci0gICAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGNvbnRyb2xsZXIuY2xvc2UoKSwgJ2Ns
b3NlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciB0aGUgc2Vjb25kIHRpbWUnKTsKLSAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gY29udHJvbGxlci5lcnJvcigpLCAnZXJy
b3Igc2hvdWxkIHRocm93IGEgVHlwZUVycm9yIG9uIGEgY2xvc2VkIHN0cmVhbScpOwotICB9KTsK
LQotfSwgJ1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBtZXRob2RzIHNob3VsZCBjb250aW51ZSB3
b3JraW5nIHByb3Blcmx5IHdoZW4gc2NyaXB0cyBsb3NlIHRoZWlyIHJlZmVyZW5jZSB0byB0aGUg
JyArCi0gICAncmVhZGFibGUgc3RyZWFtJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAg
bGV0IGNvbnRyb2xsZXI7Ci0KLSAgY29uc3QgY2xvc2VkUHJvbWlzZSA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9
KS5nZXRSZWFkZXIoKS5jbG9zZWQ7Ci0KLSAgZ2FyYmFnZUNvbGxlY3QoKTsKLQotICByZXR1cm4g
ZGVsYXkoNTApLnRoZW4oKCkgPT4gY29udHJvbGxlci5jbG9zZSgpKS50aGVuKCgpID0+IGNsb3Nl
ZFByb21pc2UpOwotCi19LCAnUmVhZGFibGVTdHJlYW0gY2xvc2VkIHByb21pc2Ugc2hvdWxkIGZ1
bGZpbGwgZXZlbiBpZiB0aGUgc3RyZWFtIGFuZCByZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9z
dCcpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xs
ZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24t
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTFjMzMwMDk2YmRj
ZTJiMDk1MGFmOWQ1N2Q2NTYzMTZhMWQ5MjQyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24tZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDM3OiBUZXN0cyBhcmUgcnVubmluZyB3aXRob3V0IHRoZSBhYmlsaXR5IHRvIGRvIG1h
bnVhbCBnYXJiYWdlIGNvbGxlY3Rpb24uIFRoZXkgd2lsbCBzdGlsbCB3b3JrLCBidXQgY292ZXJh
Z2Ugd2lsbCBiZSBzdWJvcHRpbWFsLgotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDM3OiBUZXN0cyBh
cmUgcnVubmluZyB3aXRob3V0IHRoZSBhYmlsaXR5IHRvIGRvIG1hbnVhbCBnYXJiYWdlIGNvbGxl
Y3Rpb24uIFRoZXkgd2lsbCBzdGlsbCB3b3JrLCBidXQgY292ZXJhZ2Ugd2lsbCBiZSBzdWJvcHRp
bWFsLgotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDM3OiBUZXN0cyBhcmUgcnVubmluZyB3aXRob3V0
IHRoZSBhYmlsaXR5IHRvIGRvIG1hbnVhbCBnYXJiYWdlIGNvbGxlY3Rpb24uIFRoZXkgd2lsbCBz
dGlsbCB3b3JrLCBidXQgY292ZXJhZ2Ugd2lsbCBiZSBzdWJvcHRpbWFsLgotQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDM3OiBUZXN0cyBhcmUgcnVubmluZyB3aXRob3V0IHRoZSBhYmlsaXR5IHRvIGRv
IG1hbnVhbCBnYXJiYWdlIGNvbGxlY3Rpb24uIFRoZXkgd2lsbCBzdGlsbCB3b3JrLCBidXQgY292
ZXJhZ2Ugd2lsbCBiZSBzdWJvcHRpbWFsLgotCi1QQVNTIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxl
ciBtZXRob2RzIHNob3VsZCBjb250aW51ZSB3b3JraW5nIHByb3Blcmx5IHdoZW4gc2NyaXB0cyBs
b3NlIHRoZWlyIHJlZmVyZW5jZSB0byB0aGUgcmVhZGFibGUgc3RyZWFtIAotUEFTUyBSZWFkYWJs
ZVN0cmVhbSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgZnVsZmlsbCBldmVuIGlmIHRoZSBzdHJlYW0g
YW5kIHJlYWRlciBKUyByZWZlcmVuY2VzIGFyZSBsb3N0IAotUEFTUyBSZWFkYWJsZVN0cmVhbSBj
bG9zZWQgcHJvbWlzZSBzaG91bGQgcmVqZWN0IGV2ZW4gaWYgc3RyZWFtIGFuZCByZWFkZXIgSlMg
cmVmZXJlbmNlcyBhcmUgbG9zdCAKLVBBU1MgR2FyYmFnZS1jb2xsZWN0aW5nIGEgUmVhZGFibGVT
dHJlYW1SZWFkZXIgc2hvdWxkIG5vdCB1bmxvY2sgaXRzIHN0cmVhbSAKLUZBSUwgTG9hZCBnYXJi
YWdlLWNvbGxlY3Rpb24uanMgd2l0aCBTaGFyZWRXb3JrZXIgYXNzZXJ0X3VucmVhY2hlZDogU2hh
cmVkV29ya2VyIGlzIHVuYXZhaWxhYmxlIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQotRkFJTCBV
bnRpdGxlZCB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnbmF2aWdhdG9y
LnNlcnZpY2VXb3JrZXIuZ2V0UmVnaXN0cmF0aW9uJykKLVBBU1MgUmVhZGFibGVTdHJlYW1Db250
cm9sbGVyIG1ldGhvZHMgc2hvdWxkIGNvbnRpbnVlIHdvcmtpbmcgcHJvcGVybHkgd2hlbiBzY3Jp
cHRzIGxvc2UgdGhlaXIgcmVmZXJlbmNlIHRvIHRoZSByZWFkYWJsZSBzdHJlYW0gCi1QQVNTIFJl
YWRhYmxlU3RyZWFtIGNsb3NlZCBwcm9taXNlIHNob3VsZCBmdWxmaWxsIGV2ZW4gaWYgdGhlIHN0
cmVhbSBhbmQgcmVhZGVyIEpTIHJlZmVyZW5jZXMgYXJlIGxvc3QgCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtIGNsb3NlZCBwcm9taXNlIHNob3VsZCByZWplY3QgZXZlbiBpZiBzdHJlYW0gYW5kIHJlYWRl
ciBKUyByZWZlcmVuY2VzIGFyZSBsb3N0IAotUEFTUyBHYXJiYWdlLWNvbGxlY3RpbmcgYSBSZWFk
YWJsZVN0cmVhbVJlYWRlciBzaG91bGQgbm90IHVubG9jayBpdHMgc3RyZWFtIAotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMt
YXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0
cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGEzOGVkMjA1MzRjMjA2NWQ1N2FmZjJjZjRhODRjNjdhOTU4ZGEyNGQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dhcmJh
Z2UtY29sbGVjdGlvbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwvc2NyaXB0Pgot
Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9ImdhcmJhZ2UtY29sbGVjdGlvbi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotJ3Vz
ZSBzdHJpY3QnOwotd29ya2VyX3Rlc3QoJ2dhcmJhZ2UtY29sbGVjdGlvbi5qcycpOwotPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmpzIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9y
ZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5qcwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZmIwMGM5NDZiYmI1MmIyM2VmNmVkOGZjZDM0MGRiOTBmZTM5ZGU4MS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVh
bXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAot
J3VzZSBzdHJpY3QnOwotCi1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYuaW1wb3J0
U2NyaXB0cygnLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMnKTsKLSAgc2VsZi5pbXBvcnRTY3Jp
cHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0KLXByb21pc2VfdGVzdCgoKSA9
PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3Rh
cnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9KTsKLQotICBnYXJiYWdl
Q29sbGVjdCgpOwotCi0gIHJldHVybiBkZWxheSg1MCkudGhlbigoKSA9PiB7Ci0gICAgY29udHJv
bGxlci5jbG9zZSgpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBj
b250cm9sbGVyLmNsb3NlKCksICdjbG9zZSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IgdGhlIHNl
Y29uZCB0aW1lJyk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGNv
bnRyb2xsZXIuZXJyb3IoKSwgJ2Vycm9yIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciBvbiBhIGNs
b3NlZCBzdHJlYW0nKTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgbWV0
aG9kcyBzaG91bGQgY29udGludWUgd29ya2luZyBwcm9wZXJseSB3aGVuIHNjcmlwdHMgbG9zZSB0
aGVpciByZWZlcmVuY2UgdG8gdGhlICcgKwotICAgJ3JlYWRhYmxlIHN0cmVhbScpOwotCi1wcm9t
aXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBjb250cm9sbGVyOwotCi0gIGNvbnN0IGNsb3NlZFBy
b21pc2UgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRy
b2xsZXIgPSBjOwotICAgIH0KLSAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOwotCi0gIGdhcmJhZ2VD
b2xsZWN0KCk7Ci0KLSAgcmV0dXJuIGRlbGF5KDUwKS50aGVuKCgpID0+IGNvbnRyb2xsZXIuY2xv
c2UoKSkudGhlbigoKSA9PiBjbG9zZWRQcm9taXNlKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGNs
b3NlZCBwcm9taXNlIHNob3VsZCBmdWxmaWxsIGV2ZW4gaWYgdGhlIHN0cmVhbSBhbmQgcmVhZGVy
IEpTIHJlZmVyZW5jZXMgYXJlIGxvc3QnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNv
bnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdib28nKTsKLSAgbGV0IGNvbnRyb2xsZXI7Ci0KLSAg
Y29uc3QgY2xvc2VkUHJvbWlzZSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykg
ewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7
Ci0KLSAgZ2FyYmFnZUNvbGxlY3QoKTsKLQotICByZXR1cm4gZGVsYXkoNTApLnRoZW4oKCkgPT4g
Y29udHJvbGxlci5lcnJvcih0aGVFcnJvcikpCi0gICAgICAgICAgICAgICAgICAudGhlbigoKSA9
PiBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIGNsb3NlZFByb21pc2UpKTsKLQotfSwgJ1Jl
YWRhYmxlU3RyZWFtIGNsb3NlZCBwcm9taXNlIHNob3VsZCByZWplY3QgZXZlbiBpZiBzdHJlYW0g
YW5kIHJlYWRlciBKUyByZWZlcmVuY2VzIGFyZSBsb3N0Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9
PiB7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oe30pOwotCi0gIHJzLmdldFJl
YWRlcigpOwotCi0gIGdhcmJhZ2VDb2xsZWN0KCk7Ci0KLSAgcmV0dXJuIGRlbGF5KDUwKS50aGVu
KCgpID0+IGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBycy5nZXRSZWFkZXIo
KSwKLSAgICAnb2xkIHJlYWRlciBzaG91bGQgc3RpbGwgYmUgbG9ja2luZyB0aGUgc3RyZWFtIGV2
ZW4gYWZ0ZXIgZ2FyYmFnZSBjb2xsZWN0aW9uJykpOwotCi19LCAnR2FyYmFnZS1jb2xsZWN0aW5n
IGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgc2hvdWxkIG5vdCB1bmxvY2sgaXRzIHN0cmVhbScpOwot
Ci1kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMt
YXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGNkODUyYjU1OGVkZDhjMmY5NjlkYTcyNDdiZWVjYjQzN2I1NDkwYjku
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1z
dHJlYW1zL2dlbmVyYWwtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBA
QAotCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbiBiZSBjb25zdHJ1Y3RlZCB3aXRoIG5vIGVycm9y
cyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuJ3QgYmUgY29uc3RydWN0ZWQgd2l0aCBnYXJiYWdl
IAotRkFJTCBSZWFkYWJsZVN0cmVhbSBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3Qg
bGlzdCBvZiBwcm9wZXJ0aWVzIGFzc2VydF9mYWxzZTogbWV0aG9kIHNob3VsZCBiZSBub24tZW51
bWVyYWJsZSBleHBlY3RlZCBmYWxzZSBnb3QgdHJ1ZQotUEFTUyBSZWFkYWJsZVN0cmVhbSBjb25z
dHJ1Y3RvciBzaG91bGQgdGhyb3cgZm9yIG5vbi1mdW5jdGlvbiBzdGFydCBhcmd1bWVudHMgCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbiBnZXQgaW5pdGlhbCBnYXJiYWdlIGFz
IGNhbmNlbCBhcmd1bWVudCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3IgY2FuIGdl
dCBpbml0aWFsIGdhcmJhZ2UgYXMgcHVsbCBhcmd1bWVudCAKLUZBSUwgUmVhZGFibGVTdHJlYW0g
c3RhcnQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBwcm9wZXIgcGFyYW1ldGVycyBhc3NlcnRf
ZmFsc2U6IGNsb3NlIHNob3VsZCBiZSBub24tZW51bWVyYWJsZSBleHBlY3RlZCBmYWxzZSBnb3Qg
dHJ1ZQotUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBjb250cm9sbGVyIHBhcmFtZXRlciBzaG91
bGQgYmUgZXh0ZW5zaWJsZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gc2hvdWxkIGJlIGFibGUgdG8g
Y2FsbCBzdGFydCBtZXRob2Qgd2l0aGluIHByb3RvdHlwZSBjaGFpbiBvZiBpdHMgc291cmNlIAot
UEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1cm4gYSBwcm9t
aXNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1cm4g
YSBwcm9taXNlIGFuZCByZWplY3QgaXQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHNob3VsZCBiZSBh
YmxlIHRvIGVucXVldWUgZGlmZmVyZW50IG9iamVjdHMuIAotUEFTUyBSZWFkYWJsZVN0cmVhbTog
aWYgcHVsbCByZWplY3RzLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSAKLVBBU1MgUmVhZGFi
bGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIHVwb24gc3RhcnRpbmcgdGhlIHN0
cmVhbSAKLVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHB1bGwgd2hlbiB0cnlpbmcg
dG8gcmVhZCBmcm9tIGEgc3RhcnRlZCwgZW1wdHkgc3RyZWFtIAotUEFTUyBSZWFkYWJsZVN0cmVh
bTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHJlYWQg
ZnJvbSBiZWZvcmUgc3RhcnQgZnVsZmlsbHMgCi1QQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQg
b25seSBjYWxsIHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9tIGFmdGVy
IHN0YXJ0IGZ1bGZpbGxzIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCBp
biByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIG5vdCBkcmFpbmluZyAK
LVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsKCkgaW4gcmVhY3Rpb24g
dG8gcmVhZCgpaW5nIHRoZSBsYXN0IGNodW5rLCBpZiBkcmFpbmluZyAKLVBBU1MgUmVhZGFibGVT
dHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIHVudGlsIHRoZSBwcmV2aW91cyBwdWxsIGNhbGwn
cyBwcm9taXNlIGZ1bGZpbGxzIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIHB1bGwgYWZ0
ZXIgc3RhcnQsIGFuZCBhZnRlciBldmVyeSByZWFkIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hv
dWxkIG5vdCBjYWxsIHB1bGwgYWZ0ZXIgc3RhcnQgaWYgdGhlIHN0cmVhbSBpcyBub3cgY2xvc2Vk
IAotUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCBhZnRlciBlbnF1ZXVlaW5n
IGZyb20gaW5zaWRlIHB1bGwgKHdpdGggbm8gcmVhZCByZXF1ZXN0cyksIGlmIHN0cmF0ZWd5IGFs
bG93cyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcHVsbCBzaG91bGQgYmUgYWJsZSB0byBjbG9zZSBh
IHN0cmVhbS4gCi1QQVNTIFJlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB3aGVu
IHRoZSBzdHJlYW0gaXMgcmVhZGFibGUgYnV0IGRyYWluaW5nIAotUEFTUyBSZWFkYWJsZVN0cmVh
bTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgd2hlbiB0aGUgc3RyZWFtIGlzIGNsb3NlZCAKLVBBU1Mg
UmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBzdG9yZWQgZXJyb3Igd2hl
biB0aGUgc3RyZWFtIGlzIGVycm9yZWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2Fs
bCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRob2RzIGFzIG1ldGhvZHMgCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNob3VsZCBnaXZlIGRlc2lyZWRT
aXplIG9mIDEgdG8gc3RhcnQsIGRlY3JlYXNpbmcgYnkgMSBwZXIgZW5xdWV1ZSAKLVBBU1MgUmVh
ZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGNvbnRp
bnVlIGdpdmluZyBkZXNpcmVkU2l6ZSBvZiAxIGlmIHRoZSBjaHVua3MgYXJlIHJlYWQgaW1tZWRp
YXRlbHkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEg
cmFuZG9tIHB1c2ggc291cmNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0
OiBhZGFwdGluZyBhIHN5bmMgcHVsbCBzb3VyY2UgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGludGVn
cmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGFuIGFzeW5jIHB1bGwgc291cmNlIAotRkFJTCBMb2FkIGdl
bmVyYWwuanMgd2l0aCBTaGFyZWRXb3JrZXIgYXNzZXJ0X3VucmVhY2hlZDogU2hhcmVkV29ya2Vy
IGlzIHVuYXZhaWxhYmxlIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQotRkFJTCBVbnRpdGxlZCB1
bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnbmF2aWdhdG9yLnNlcnZpY2VX
b3JrZXIuZ2V0UmVnaXN0cmF0aW9uJykKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuIGJlIGNvbnN0
cnVjdGVkIHdpdGggbm8gZXJyb3JzIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW4ndCBiZSBjb25z
dHJ1Y3RlZCB3aXRoIGdhcmJhZ2UgCi1GQUlMIFJlYWRhYmxlU3RyZWFtIGluc3RhbmNlcyBzaG91
bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3BlcnRpZXMgYXNzZXJ0X2ZhbHNlOiBtZXRo
b2Qgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlIGV4cGVjdGVkIGZhbHNlIGdvdCB0cnVlCi1QQVNT
IFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBmb3Igbm9uLWZ1bmN0aW9u
IHN0YXJ0IGFyZ3VtZW50cyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3IgY2FuIGdl
dCBpbml0aWFsIGdhcmJhZ2UgYXMgY2FuY2VsIGFyZ3VtZW50IAotUEFTUyBSZWFkYWJsZVN0cmVh
bSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBhcyBwdWxsIGFyZ3VtZW50IAot
RkFJTCBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIHByb3Bl
ciBwYXJhbWV0ZXJzIGFzc2VydF9mYWxzZTogY2xvc2Ugc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxl
IGV4cGVjdGVkIGZhbHNlIGdvdCB0cnVlCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IGNvbnRy
b2xsZXIgcGFyYW1ldGVyIHNob3VsZCBiZSBleHRlbnNpYmxlIAotUEFTUyBSZWFkYWJsZVN0cmVh
bSBzaG91bGQgYmUgYWJsZSB0byBjYWxsIHN0YXJ0IG1ldGhvZCB3aXRoaW4gcHJvdG90eXBlIGNo
YWluIG9mIGl0cyBzb3VyY2UgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBh
YmxlIHRvIHJldHVybiBhIHByb21pc2UgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3Vs
ZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJlamVjdCBpdCAKLVBBU1MgUmVhZGFi
bGVTdHJlYW0gc2hvdWxkIGJlIGFibGUgdG8gZW5xdWV1ZSBkaWZmZXJlbnQgb2JqZWN0cy4gCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtOiBpZiBwdWxsIHJlamVjdHMsIGl0IHNob3VsZCBlcnJvciB0aGUg
c3RyZWFtIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2Ug
dXBvbiBzdGFydGluZyB0aGUgc3RyZWFtIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNh
bGwgcHVsbCB3aGVuIHRyeWluZyB0byByZWFkIGZyb20gYSBzdGFydGVkLCBlbXB0eSBzdHJlYW0g
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgb25jZSBvbiBhIG5v
bi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9tIGJlZm9yZSBzdGFydCBmdWxmaWxscyAKLVBBU1MgUmVh
ZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIG9uIGEgbm9uLWVtcHR5IHN0
cmVhbSByZWFkIGZyb20gYWZ0ZXIgc3RhcnQgZnVsZmlsbHMgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
OiBzaG91bGQgY2FsbCBwdWxsIGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0aGUgbGFzdCBjaHVu
aywgaWYgbm90IGRyYWluaW5nIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxs
IHB1bGwoKSBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIGRyYWlu
aW5nIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50aWwgdGhl
IHByZXZpb3VzIHB1bGwgY2FsbCdzIHByb21pc2UgZnVsZmlsbHMgCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtOiBzaG91bGQgcHVsbCBhZnRlciBzdGFydCwgYW5kIGFmdGVyIGV2ZXJ5IHJlYWQgCi1QQVNT
IFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCBhZnRlciBzdGFydCBpZiB0aGUg
c3RyZWFtIGlzIG5vdyBjbG9zZWQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBw
dWxsIGFmdGVyIGVucXVldWVpbmcgZnJvbSBpbnNpZGUgcHVsbCAod2l0aCBubyByZWFkIHJlcXVl
c3RzKSwgaWYgc3RyYXRlZ3kgYWxsb3dzIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBwdWxsIHNob3Vs
ZCBiZSBhYmxlIHRvIGNsb3NlIGEgc3RyZWFtLiAKLVBBU1MgUmVhZGFibGVTdHJlYW06IGVucXVl
dWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyByZWFkYWJsZSBidXQgZHJhaW5pbmcg
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB3aGVuIHRoZSBzdHJl
YW0gaXMgY2xvc2VkIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cg
dGhlIHN0b3JlZCBlcnJvciB3aGVuIHRoZSBzdHJlYW0gaXMgZXJyb3JlZCAKLVBBU1MgUmVhZGFi
bGVTdHJlYW06IHNob3VsZCBjYWxsIHVuZGVybHlpbmcgc291cmNlIG1ldGhvZHMgYXMgbWV0aG9k
cyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kg
c2hvdWxkIGdpdmUgZGVzaXJlZFNpemUgb2YgMSB0byBzdGFydCwgZGVjcmVhc2luZyBieSAxIHBl
ciBlbnF1ZXVlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBz
dHJhdGVneSBzaG91bGQgY29udGludWUgZ2l2aW5nIGRlc2lyZWRTaXplIG9mIDEgaWYgdGhlIGNo
dW5rcyBhcmUgcmVhZCBpbW1lZGlhdGVseSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRp
b24gdGVzdDogYWRhcHRpbmcgYSByYW5kb20gcHVzaCBzb3VyY2UgCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgc3luYyBwdWxsIHNvdXJjZSAKLVBBU1Mg
UmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYW4gYXN5bmMgcHVsbCBz
b3VyY2UgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRh
YmxlLXN0cmVhbXMvZ2VuZXJhbC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm
NTI0MWZmZThmMDcyZmJmZDVmNjc2YzA2OWYxNTRiNDI5YjAxNDZlLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vy
cy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3JzLXV0aWxzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJnZW5lcmFsLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci13b3JrZXJfdGVzdCgnZ2VuZXJhbC5q
cycpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5qcyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkv
cmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0NGQxYTRhNmNhNDAzY2RmNGQ1NDRiNTBmYjZlMTI2NjUzNmZiNzNkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFs
LmpzCisrKyAvZGV2L251bGwKQEAgLTEsODMxICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotaWYg
KHNlbGYuaW1wb3J0U2NyaXB0cykgewotICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNl
cy90ZXN0LXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3Jz
LXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcycpOwotfQotCi10ZXN0KCgpID0+IHsKLQotICBuZXcgUmVhZGFibGVTdHJlYW0oKTsgLy8g
UmVhZGFibGVTdHJlYW0gY29uc3RydWN0ZWQgd2l0aCBubyBwYXJhbWV0ZXJzCi0gIG5ldyBSZWFk
YWJsZVN0cmVhbSh7IH0pOyAvLyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RlZCB3aXRoIGFuIGVt
cHR5IG9iamVjdCBhcyBwYXJhbWV0ZXIKLSAgbmV3IFJlYWRhYmxlU3RyZWFtKHVuZGVmaW5lZCk7
IC8vIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdGVkIHdpdGggdW5kZWZpbmVkIGFzIHBhcmFtZXRl
cgotCi0gIGxldCB4OwotICBuZXcgUmVhZGFibGVTdHJlYW0oeCk7IC8vIFJlYWRhYmxlU3RyZWFt
IGNvbnN0cnVjdGVkIHdpdGggYW4gdW5kZWZpbmVkIHZhcmlhYmxlIGFzIHBhcmFtZXRlcgotCi19
LCAnUmVhZGFibGVTdHJlYW0gY2FuIGJlIGNvbnN0cnVjdGVkIHdpdGggbm8gZXJyb3JzJyk7Ci0K
LXRlc3QoKCkgPT4gewotCi0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBu
ZXcgUmVhZGFibGVTdHJlYW0obnVsbCksICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgd2hlbiB0
aGUgc291cmNlIGlzIG51bGwnKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGNhblwndCBiZSBjb25z
dHJ1Y3RlZCB3aXRoIGdhcmJhZ2UnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgbWV0aG9k
cyA9IFsnY2FuY2VsJywgJ2NvbnN0cnVjdG9yJywgJ2dldFJlYWRlcicsICdwaXBlVGhyb3VnaCcs
ICdwaXBlVG8nLCAndGVlJ107Ci0gIGNvbnN0IHByb3BlcnRpZXMgPSBtZXRob2RzLmNvbmNhdChb
J2xvY2tlZCddKS5zb3J0KCk7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsK
LSAgY29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocnMpOwotCi0gIGFzc2VydF9h
cnJheV9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocHJvdG8pLnNvcnQoKSwgcHJv
cGVydGllcywgJ3Nob3VsZCBoYXZlIGFsbCB0aGUgY29ycmVjdCBtZXRob2RzJyk7Ci0KLSAgZm9y
IChjb25zdCBtIG9mIG1ldGhvZHMpIHsKLSAgICBjb25zdCBwcm9wRGVzYyA9IE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIG0pOwotICAgIGFzc2VydF9mYWxzZShwcm9wRGVz
Yy5lbnVtZXJhYmxlLCAnbWV0aG9kIHNob3VsZCBiZSBub24tZW51bWVyYWJsZScpOwotICAgIGFz
c2VydF90cnVlKHByb3BEZXNjLmNvbmZpZ3VyYWJsZSwgJ21ldGhvZCBzaG91bGQgYmUgY29uZmln
dXJhYmxlJyk7Ci0gICAgYXNzZXJ0X3RydWUocHJvcERlc2Mud3JpdGFibGUsICdtZXRob2Qgc2hv
dWxkIGJlIHdyaXRhYmxlJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNbbV0sICdmdW5j
dGlvbicsICdtZXRob2Qgc2hvdWxkIGJlIGEgZnVuY3Rpb24nKTsKLSAgfQotCi0gIGNvbnN0IGxv
Y2tlZFByb3BEZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgJ2xv
Y2tlZCcpOwotICBhc3NlcnRfZmFsc2UobG9ja2VkUHJvcERlc2MuZW51bWVyYWJsZSwgJ2xvY2tl
ZCBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUnKTsKLSAgYXNzZXJ0X2VxdWFscyhsb2NrZWRQcm9w
RGVzYy53cml0YWJsZSwgdW5kZWZpbmVkLCAnbG9ja2VkIHNob3VsZCBub3QgYmUgYSBkYXRhIHBy
b3BlcnR5Jyk7Ci0gIGFzc2VydF9lcXVhbHModHlwZW9mIGxvY2tlZFByb3BEZXNjLmdldCwgJ2Z1
bmN0aW9uJywgJ2xvY2tlZCBzaG91bGQgaGF2ZSBhIGdldHRlcicpOwotICBhc3NlcnRfZXF1YWxz
KGxvY2tlZFByb3BEZXNjLnNldCwgdW5kZWZpbmVkLCAnbG9ja2VkIHNob3VsZCBub3QgaGF2ZSBh
IHNldHRlcicpOwotICBhc3NlcnRfdHJ1ZShsb2NrZWRQcm9wRGVzYy5jb25maWd1cmFibGUsICds
b2NrZWQgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZScpOwotCi0gIGFzc2VydF9lcXVhbHMocnMuY2Fu
Y2VsLmxlbmd0aCwgMSwgJ2NhbmNlbCBzaG91bGQgaGF2ZSAxIHBhcmFtZXRlcicpOwotICBhc3Nl
cnRfZXF1YWxzKHJzLmNvbnN0cnVjdG9yLmxlbmd0aCwgMCwgJ2NvbnN0cnVjdG9yIHNob3VsZCBo
YXZlIG5vIHBhcmFtZXRlcnMnKTsKLSAgYXNzZXJ0X2VxdWFscyhycy5nZXRSZWFkZXIubGVuZ3Ro
LCAwLCAnZ2V0UmVhZGVyIHNob3VsZCBoYXZlIG5vIHBhcmFtZXRlcnMnKTsKLSAgYXNzZXJ0X2Vx
dWFscyhycy5waXBlVGhyb3VnaC5sZW5ndGgsIDIsICdwaXBlVGhyb3VnaCBzaG91bGQgaGF2ZSAy
IHBhcmFtZXRlcnMnKTsKLSAgYXNzZXJ0X2VxdWFscyhycy5waXBlVG8ubGVuZ3RoLCAxLCAncGlw
ZVRvIHNob3VsZCBoYXZlIDEgcGFyYW1ldGVyJyk7Ci0gIGFzc2VydF9lcXVhbHMocnMudGVlLmxl
bmd0aCwgMCwgJ3RlZSBzaG91bGQgaGF2ZSBubyBwYXJhbWV0ZXJzJyk7Ci0KLX0sICdSZWFkYWJs
ZVN0cmVhbSBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0
aWVzJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigp
LCAoKSA9PiB7Ci0gICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsgc3RhcnQ6ICdwb3RhdG8nIH0pOwot
ICB9LCAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHdoZW4gc3RhcnQgaXMgbm90IGEgZnVuY3Rp
b24nKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBmb3Ig
bm9uLWZ1bmN0aW9uIHN0YXJ0IGFyZ3VtZW50cycpOwotCi10ZXN0KCgpID0+IHsKLQotICBuZXcg
UmVhZGFibGVTdHJlYW0oeyBjYW5jZWw6ICcyJyB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGNv
bnN0cnVjdG9yIGNhbiBnZXQgaW5pdGlhbCBnYXJiYWdlIGFzIGNhbmNlbCBhcmd1bWVudCcpOwot
Ci10ZXN0KCgpID0+IHsKLQotICBuZXcgUmVhZGFibGVTdHJlYW0oeyBwdWxsOiB7IH0gfSk7Ci0K
LX0sICdSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBh
cyBwdWxsIGFyZ3VtZW50Jyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGxldCBzdGFydENhbGxlZCA9
IGZhbHNlOwotCi0gIGNvbnN0IHNvdXJjZSA9IHsKLSAgICBzdGFydChjb250cm9sbGVyKSB7Ci0g
ICAgICBhc3NlcnRfZXF1YWxzKHRoaXMsIHNvdXJjZSwgJ3NvdXJjZSBpcyB0aGlzIGR1cmluZyBz
dGFydCcpOwotCi0gICAgICBjb25zdCBtZXRob2RzID0gWydjbG9zZScsICdlbnF1ZXVlJywgJ2Vy
cm9yJywgJ2NvbnN0cnVjdG9yJ107Ci0gICAgICBjb25zdCBwcm9wZXJ0aWVzID0gWydkZXNpcmVk
U2l6ZSddLmNvbmNhdChtZXRob2RzKS5zb3J0KCk7Ci0gICAgICBjb25zdCBwcm90byA9IE9iamVj
dC5nZXRQcm90b3R5cGVPZihjb250cm9sbGVyKTsKLQotICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhwcm90bykuc29ydCgpLCBwcm9wZXJ0aWVzLAot
ICAgICAgICAndGhlIGNvbnRyb2xsZXIgc2hvdWxkIGhhdmUgdGhlIHJpZ2h0IHByb3BlcnRpZXMn
KTsKLQotICAgICAgZm9yIChjb25zdCBtIG9mIG1ldGhvZHMpIHsKLSAgICAgICAgY29uc3QgcHJv
cERlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBtKTsKLSAgICAg
ICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgY29udHJvbGxlclttXSwgJ2Z1bmN0aW9uJywgYHNob3Vs
ZCBoYXZlIGEgJHttfSBtZXRob2RgKTsKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKHByb3BEZXNjLmVu
dW1lcmFibGUsIG0gKyAnIHNob3VsZCBiZSBub24tZW51bWVyYWJsZScpOwotICAgICAgICBhc3Nl
cnRfdHJ1ZShwcm9wRGVzYy5jb25maWd1cmFibGUsIG0gKyAnIHNob3VsZCBiZSBjb25maWd1cmFi
bGUnKTsKLSAgICAgICAgYXNzZXJ0X3RydWUocHJvcERlc2Mud3JpdGFibGUsIG0gKyAnIHNob3Vs
ZCBiZSB3cml0YWJsZScpOwotICAgICAgfQotCi0gICAgICBjb25zdCBkZXNpcmVkU2l6ZVByb3BE
ZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgJ2Rlc2lyZWRTaXpl
Jyk7Ci0gICAgICBhc3NlcnRfZmFsc2UoZGVzaXJlZFNpemVQcm9wRGVzYy5lbnVtZXJhYmxlLCAn
ZGVzaXJlZFNpemUgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlJyk7Ci0gICAgICBhc3NlcnRfZXF1
YWxzKGRlc2lyZWRTaXplUHJvcERlc2Mud3JpdGFibGUsIHVuZGVmaW5lZCwgJ2Rlc2lyZWRTaXpl
IHNob3VsZCBub3QgYmUgYSBkYXRhIHByb3BlcnR5Jyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHR5
cGVvZiBkZXNpcmVkU2l6ZVByb3BEZXNjLmdldCwgJ2Z1bmN0aW9uJywgJ2Rlc2lyZWRTaXplIHNo
b3VsZCBoYXZlIGEgZ2V0dGVyJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGRlc2lyZWRTaXplUHJv
cERlc2Muc2V0LCB1bmRlZmluZWQsICdkZXNpcmVkU2l6ZSBzaG91bGQgbm90IGhhdmUgYSBzZXR0
ZXInKTsKLSAgICAgIGFzc2VydF90cnVlKGRlc2lyZWRTaXplUHJvcERlc2MuY29uZmlndXJhYmxl
LCAnZGVzaXJlZFNpemUgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZScpOwotCi0gICAgICBhc3NlcnRf
ZXF1YWxzKGNvbnRyb2xsZXIuY2xvc2UubGVuZ3RoLCAwLCAnY2xvc2Ugc2hvdWxkIGhhdmUgbm8g
cGFyYW1ldGVycycpOwotICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmNvbnN0cnVjdG9y
Lmxlbmd0aCwgMSwgJ2NvbnN0cnVjdG9yIHNob3VsZCBoYXZlIDEgcGFyYW1ldGVyJyk7Ci0gICAg
ICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZW5xdWV1ZS5sZW5ndGgsIDEsICdlbnF1ZXVlIHNo
b3VsZCBoYXZlIDEgcGFyYW1ldGVyJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIu
ZXJyb3IubGVuZ3RoLCAxLCAnZXJyb3Igc2hvdWxkIGhhdmUgMSBwYXJhbWV0ZXInKTsKLQotICAg
ICAgc3RhcnRDYWxsZWQgPSB0cnVlOwotICAgIH0KLSAgfTsKLQotICBuZXcgUmVhZGFibGVTdHJl
YW0oc291cmNlKTsKLSAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOwotCi19LCAnUmVhZGFibGVT
dHJlYW0gc3RhcnQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBwcm9wZXIgcGFyYW1ldGVycycp
OwotCi10ZXN0KCgpID0+IHsKLQotICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKLSAgY29uc3Qg
c291cmNlID0gewotICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKLSAgICAgIGNvbnN0IHByb3BlcnRp
ZXMgPSBbJ2Nsb3NlJywgJ2NvbnN0cnVjdG9yJywgJ2Rlc2lyZWRTaXplJywgJ2VucXVldWUnLCAn
ZXJyb3InXTsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5
TmFtZXMoT2JqZWN0LmdldFByb3RvdHlwZU9mKGNvbnRyb2xsZXIpKS5zb3J0KCksIHByb3BlcnRp
ZXMsCi0gICAgICAgICdwcm90b3R5cGUgc2hvdWxkIGhhdmUgdGhlIHJpZ2h0IHByb3BlcnRpZXMn
KTsKLQotICAgICAgY29udHJvbGxlci50ZXN0ID0gJyc7Ci0gICAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE9iamVjdC5nZXRQcm90b3R5cGVPZihjb250
cm9sbGVyKSkuc29ydCgpLCBwcm9wZXJ0aWVzLAotICAgICAgICAncHJvdG90eXBlIHNob3VsZCBz
dGlsbCBoYXZlIHRoZSByaWdodCBwcm9wZXJ0aWVzJyk7Ci0gICAgICBhc3NlcnRfbm90X2VxdWFs
cyhPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhjb250cm9sbGVyKS5pbmRleE9mKCd0ZXN0Jyks
IC0xLAotICAgICAgICAnInRlc3QiIHNob3VsZCBiZSBhIHByb3BlcnR5IG9mIHRoZSBjb250cm9s
bGVyJyk7Ci0KLSAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKLSAgICB9Ci0gIH07Ci0KLSAgbmV3
IFJlYWRhYmxlU3RyZWFtKHNvdXJjZSk7Ci0gIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKLQot
fSwgJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0IGNvbnRyb2xsZXIgcGFyYW1ldGVyIHNob3VsZCBiZSBl
eHRlbnNpYmxlJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgZnVuY3Rpb24gU2ltcGxl
U3RyZWFtU291cmNlKCkge30KLSAgbGV0IHJlc29sdmU7Ci0gIGNvbnN0IHByb21pc2UgPSBuZXcg
UHJvbWlzZShyID0+IHJlc29sdmUgPSByKTsKLSAgU2ltcGxlU3RyZWFtU291cmNlLnByb3RvdHlw
ZSA9IHsKLSAgICBzdGFydDogcmVzb2x2ZQotICB9OwotCi0gIG5ldyBSZWFkYWJsZVN0cmVhbShu
ZXcgU2ltcGxlU3RyZWFtU291cmNlKCkpOwotICByZXR1cm4gcHJvbWlzZTsKLQotfSwgJ1JlYWRh
YmxlU3RyZWFtIHNob3VsZCBiZSBhYmxlIHRvIGNhbGwgc3RhcnQgbWV0aG9kIHdpdGhpbiBwcm90
b3R5cGUgY2hhaW4gb2YgaXRzIHNvdXJjZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0g
IGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBy
ZXR1cm4gZGVsYXkoNSkudGhlbigoKSA9PiB7Ci0gICAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAg
ICAgICBjLmNsb3NlKCk7Ci0gICAgICB9KTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWRl
ciA9IHJzLmdldFJlYWRlcigpOwotICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4gewot
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwg
J3ZhbHVlIHJlYWQgc2hvdWxkIGJlIHRoZSBvbmUgZW5xdWV1ZWQnKTsKLSAgICByZXR1cm4gcmVh
ZGVyLmNsb3NlZDsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUg
YWJsZSB0byByZXR1cm4gYSBwcm9taXNlJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAg
Y29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ3JlamVjdGVkIScpOwotICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoKSB7Ci0gICAgICByZXR1cm4gZGVsYXkoMSku
dGhlbigoKSA9PiB7IHRocm93IHRoZUVycm9yOyB9KTsKLSAgICB9Ci0gIH0pOwotCi0gIHJldHVy
biBycy5nZXRSZWFkZXIoKS5jbG9zZWQudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X3VucmVhY2hl
ZCgnY2xvc2VkIHByb21pc2Ugc2hvdWxkIGJlIHJlamVjdGVkJyk7Ci0gIH0sIGUgPT4gewotICAg
IGFzc2VydF9lcXVhbHMoZSwgdGhlRXJyb3IsICdwcm9taXNlIHNob3VsZCBiZSByZWplY3RlZCB3
aXRoIHRoZSBzYW1lIGVycm9yJyk7Ci0gIH0pOwotCi19LCAnUmVhZGFibGVTdHJlYW0gc3RhcnQg
c2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSBhbmQgcmVqZWN0IGl0Jyk7Ci0KLXBy
b21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3Qgb2JqZWN0cyA9IFsKLSAgICB7IHBvdGF0bzog
J0dpdmUgbWUgbW9yZSEnIH0sCi0gICAgJ3Rlc3QnLAotICAgIDEKLSAgXTsKLQotICBjb25zdCBy
cyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgZm9yIChjb25z
dCBvIG9mIG9iamVjdHMpIHsKLSAgICAgICAgYy5lbnF1ZXVlKG8pOwotICAgICAgfQotICAgICAg
Yy5jbG9zZSgpOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVy
KCk7Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKFtyZWFkZXIucmVhZCgpLCByZWFkZXIucmVhZCgp
LCByZWFkZXIucmVhZCgpLCByZWFkZXIuY2xvc2VkXSkudGhlbihyID0+IHsKLSAgICBhc3NlcnRf
b2JqZWN0X2VxdWFscyhyWzBdLCB7IHZhbHVlOiBvYmplY3RzWzBdLCBkb25lOiBmYWxzZSB9LCAn
dmFsdWUgcmVhZCBzaG91bGQgYmUgdGhlIG9uZSBlbnF1ZXVlZCcpOwotICAgIGFzc2VydF9vYmpl
Y3RfZXF1YWxzKHJbMV0sIHsgdmFsdWU6IG9iamVjdHNbMV0sIGRvbmU6IGZhbHNlIH0sICd2YWx1
ZSByZWFkIHNob3VsZCBiZSB0aGUgb25lIGVucXVldWVkJyk7Ci0gICAgYXNzZXJ0X29iamVjdF9l
cXVhbHMoclsyXSwgeyB2YWx1ZTogb2JqZWN0c1syXSwgZG9uZTogZmFsc2UgfSwgJ3ZhbHVlIHJl
YWQgc2hvdWxkIGJlIHRoZSBvbmUgZW5xdWV1ZWQnKTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0
cmVhbSBzaG91bGQgYmUgYWJsZSB0byBlbnF1ZXVlIGRpZmZlcmVudCBvYmplY3RzLicpOwotCi1w
cm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCdwdWxsIGZh
aWx1cmUnKTsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHB1bGwoKSB7
Ci0gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpOwotICAgIH0KLSAgfSk7Ci0KLSAg
Y29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgbGV0IGNsb3NlZCA9IGZhbHNlOwot
ICBsZXQgcmVhZCA9IGZhbHNlOwotCi0gIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgcmVhZGVy
LmNsb3NlZC50aGVuKCgpID0+IHsKLSAgICAgIGFzc2VydF91bnJlYWNoZWQoJ2Nsb3NlZCBzaG91
bGQgYmUgcmVqZWN0ZWQnKTsKLSAgICB9LCBlID0+IHsKLSAgICAgIGNsb3NlZCA9IHRydWU7Ci0g
ICAgICBhc3NlcnRfdHJ1ZShyZWFkKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoZSwgZXJyb3IsICdj
bG9zZWQgc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdGhlIHRocm93biBlcnJvcicpOwotICAgIH0p
LAotICAgIHJlYWRlci5yZWFkKCkudGhlbigoKSA9PiB7Ci0gICAgICBhc3NlcnRfdW5yZWFjaGVk
KCdyZWFkKCkgc2hvdWxkIGJlIHJlamVjdGVkJyk7Ci0gICAgfSwgZSA9PiB7Ci0gICAgICByZWFk
ID0gdHJ1ZTsKLSAgICAgIGFzc2VydF9mYWxzZShjbG9zZWQpOwotICAgICAgYXNzZXJ0X2VxdWFs
cyhlLCBlcnJvciwgJ3JlYWQoKSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgdGhyb3duIGVy
cm9yJyk7Ci0gICAgfSkKLSAgXSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbTogaWYgcHVsbCByZWpl
Y3RzLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4g
ewotCi0gIGxldCBwdWxsQ291bnQgPSAwOwotICBjb25zdCBzdGFydFByb21pc2UgPSBQcm9taXNl
LnJlc29sdmUoKTsKLQotICBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KCkgewotICAg
ICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKLSAgICB9LAotICAgIHB1bGwoKSB7Ci0gICAgICBwdWxs
Q291bnQrKzsKLSAgICB9Ci0gIH0pOwotCi0gIHJldHVybiBzdGFydFByb21pc2UudGhlbigoKSA9
PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBiZSBjYWxs
ZWQgb25jZSBzdGFydCBmaW5pc2hlcycpOwotICAgIHJldHVybiBkZWxheSgxMCk7Ci0gIH0pLnRo
ZW4oKCkgPT4gewotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQg
YmUgY2FsbGVkIGV4YWN0bHkgb25jZScpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtOiBz
aG91bGQgb25seSBjYWxsIHB1bGwgb25jZSB1cG9uIHN0YXJ0aW5nIHRoZSBzdHJlYW0nKTsKLQot
cHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgcHVsbENvdW50ID0gMDsKLQotICBjb25zdCBy
cyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgcHVsbChjKSB7Ci0gICAgICAvLyBEb24ndCBl
bnF1ZXVlIGltbWVkaWF0ZWx5IGFmdGVyIHN0YXJ0LiBXZSB3YW50IHRoZSBzdHJlYW0gdG8gYmUg
ZW1wdHkgd2hlbiB3ZSBjYWxsIC5yZWFkKCkgb24gaXQuCi0gICAgICBpZiAocHVsbENvdW50ID4g
MCkgewotICAgICAgICBjLmVucXVldWUocHVsbENvdW50KTsKLSAgICAgIH0KLSAgICAgICsrcHVs
bENvdW50OwotICAgIH0KLSAgfSk7Ci0KLSAgcmV0dXJuIGRlbGF5KDEpLnRoZW4oKCkgPT4gewot
ICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIG9u
Y2Ugc3RhcnQgZmluaXNoZXMnKTsKLQotICAgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigp
OwotICAgIGNvbnN0IHJlYWQgPSByZWFkZXIucmVhZCgpOwotICAgIGFzc2VydF9lcXVhbHMocHVs
bENvdW50LCAyLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIHdoZW4gcmVhZCBpcyBjYWxsZWQnKTsK
LSAgICByZXR1cm4gcmVhZDsKLSAgfSkudGhlbihyZXN1bHQgPT4gewotICAgIGFzc2VydF9lcXVh
bHMocHVsbENvdW50LCAzLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGFnYWluIGluIHJlYWN0aW9u
IHRvIGNhbGxpbmcgcmVhZCcpOwotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2
YWx1ZTogMSwgZG9uZTogZmFsc2UgfSwgJ3RoZSByZXN1bHQgcmVhZCBzaG91bGQgYmUgdGhlIG9u
ZSBlbnF1ZXVlZCcpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBw
dWxsIHdoZW4gdHJ5aW5nIHRvIHJlYWQgZnJvbSBhIHN0YXJ0ZWQsIGVtcHR5IHN0cmVhbScpOwot
Ci1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBwdWxsQ291bnQgPSAwOwotICBjb25zdCBz
dGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKLQotICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAg
ICByZXR1cm4gc3RhcnRQcm9taXNlOwotICAgIH0sCi0gICAgcHVsbCgpIHsKLSAgICAgIHB1bGxD
b3VudCsrOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcmVhZCA9IHJzLmdldFJlYWRlcigpLnJl
YWQoKTsKLSAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAsICdjYWxsaW5nIHJlYWQoKSBzaG91
bGQgbm90IGNhdXNlIHB1bGwgdG8gYmUgY2FsbGVkIHlldCcpOwotCi0gIHJldHVybiBzdGFydFBy
b21pc2UudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxs
IHNob3VsZCBiZSBjYWxsZWQgb25jZSBzdGFydCBmaW5pc2hlcycpOwotICAgIHJldHVybiByZWFk
OwotICB9KS50aGVuKHIgPT4gewotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6
ICdhJywgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IHJlYWQoKSBzaG91bGQgcmV0dXJuIGZpcnN0IGNo
dW5rJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBub3Qg
aGF2ZSBiZWVuIGNhbGxlZCBhZ2FpbicpOwotICAgIHJldHVybiBkZWxheSgxMCk7Ci0gIH0pLnRo
ZW4oKCkgPT4gewotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQg
YmUgY2FsbGVkIGV4YWN0bHkgb25jZScpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtOiBz
aG91bGQgb25seSBjYWxsIHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9t
IGJlZm9yZSBzdGFydCBmdWxmaWxscycpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxl
dCBwdWxsQ291bnQgPSAwOwotICBjb25zdCBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUo
KTsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewot
ICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICByZXR1cm4gc3RhcnRQcm9taXNlOwotICAgIH0s
Ci0gICAgcHVsbCgpIHsKLSAgICAgIHB1bGxDb3VudCsrOwotICAgIH0KLSAgfSk7Ci0KLSAgcmV0
dXJuIHN0YXJ0UHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3Vu
dCwgMCwgJ3B1bGwgc2hvdWxkIG5vdCBiZSBjYWxsZWQgb25jZSBzdGFydCBmaW5pc2hlcywgc2lu
Y2UgdGhlIHF1ZXVlIGlzIGZ1bGwnKTsKLQotICAgIGNvbnN0IHJlYWQgPSBycy5nZXRSZWFkZXIo
KS5yZWFkKCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdjYWxsaW5nIHJlYWQo
KSBzaG91bGQgY2F1c2UgcHVsbCB0byBiZSBjYWxsZWQgaW1tZWRpYXRlbHknKTsKLSAgICByZXR1
cm4gcmVhZDsKLSAgfSkudGhlbihyID0+IHsKLSAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7
IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdmaXJzdCByZWFkKCkgc2hvdWxkIHJldHVybiBm
aXJzdCBjaHVuaycpOwotICAgIHJldHVybiBkZWxheSgxMCk7Ci0gIH0pLnRoZW4oKCkgPT4gewot
ICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGV4
YWN0bHkgb25jZScpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBj
YWxsIHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9tIGFmdGVyIHN0YXJ0
IGZ1bGZpbGxzJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHB1bGxDb3VudCA9
IDA7Ci0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBzdGFydFByb21pc2UgPSBQcm9taXNlLnJl
c29sdmUoKTsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQo
YykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgICByZXR1cm4gc3RhcnRQcm9taXNlOwot
ICAgIH0sCi0gICAgcHVsbCgpIHsKLSAgICAgICsrcHVsbENvdW50OwotICAgIH0KLSAgfSk7Ci0K
LSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0gIHJldHVybiBzdGFydFByb21pc2Uu
dGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3Vs
ZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UgYnkgdGhlIHRpbWUgdGhlIHN0cmVhbSBzdGFydHMnKTsK
LQotICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOwotICAgIGFzc2VydF9lcXVhbHMocHVsbENv
dW50LCAxLCAncHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQgYWdhaW4gYWZ0ZXIgZW5x
dWV1ZScpOwotCi0gICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gIH0pLnRoZW4oKCkgPT4gewot
ICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAyLCAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNh
bGxlZCBhZ2FpbiBhZnRlciByZWFkJyk7Ci0KLSAgICByZXR1cm4gZGVsYXkoMTApOwotICB9KS50
aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMiwgJ3B1bGwgc2hvdWxk
IGJlIGNhbGxlZCBleGFjdGx5IHR3aWNlJyk7Ci0gIH0pOwotfSwgJ1JlYWRhYmxlU3RyZWFtOiBz
aG91bGQgY2FsbCBwdWxsIGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0aGUgbGFzdCBjaHVuaywg
aWYgbm90IGRyYWluaW5nJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHB1bGxD
b3VudCA9IDA7Ci0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBzdGFydFByb21pc2UgPSBQcm9t
aXNlLnJlc29sdmUoKTsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAg
c3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgICByZXR1cm4gc3RhcnRQcm9t
aXNlOwotICAgIH0sCi0gICAgcHVsbCgpIHsKLSAgICAgICsrcHVsbENvdW50OwotICAgIH0KLSAg
fSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgcmV0dXJuIHN0YXJ0
UHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1
bGwgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZSBieSB0aGUgdGltZSB0aGUgc3RyZWFtIHN0
YXJ0cycpOwotCi0gICAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCBhZ2FpbiBh
ZnRlciBlbnF1ZXVlJyk7Ci0KLSAgICBjb250cm9sbGVyLmNsb3NlKCk7Ci0KLSAgICByZXR1cm4g
cmVhZGVyLnJlYWQoKTsKLSAgfSkudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxs
Q291bnQsIDEsICdwdWxsIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCBhIHNlY29uZCB0aW1l
IGFmdGVyIHJlYWQnKTsKLQotICAgIHJldHVybiBkZWxheSgxMCk7Ci0gIH0pLnRoZW4oKCkgPT4g
ewotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVk
IGV4YWN0bHkgb25jZScpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90
IGNhbGwgcHVsbCgpIGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0aGUgbGFzdCBjaHVuaywgaWYg
ZHJhaW5pbmcnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgcmVzb2x2ZTsKLSAg
bGV0IHJldHVybmVkUHJvbWlzZTsKLSAgbGV0IHRpbWVzQ2FsbGVkID0gMDsKLSAgY29uc3Qgc3Rh
cnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oewotICAgIHN0YXJ0KCkgewotICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKLSAg
ICB9LAotICAgIHB1bGwoYykgewotICAgICAgYy5lbnF1ZXVlKCsrdGltZXNDYWxsZWQpOwotICAg
ICAgcmV0dXJuZWRQcm9taXNlID0gbmV3IFByb21pc2UociA9PiByZXNvbHZlID0gcik7Ci0gICAg
ICByZXR1cm4gcmV0dXJuZWRQcm9taXNlOwotICAgIH0KLSAgfSk7Ci0gIGNvbnN0IHJlYWRlciA9
IHJzLmdldFJlYWRlcigpOwotCi0gIHJldHVybiBzdGFydFByb21pc2UudGhlbigoKSA9PiB7Ci0g
ICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gIH0pLnRoZW4ocmVzdWx0MSA9PiB7Ci0gICAgYXNz
ZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgMSwKLSAgICAgICdwdWxsIHNob3VsZCBoYXZlIGJlZW4g
Y2FsbGVkIG9uY2UgYWZ0ZXIgc3RhcnQsIGJ1dCBub3QgeWV0IGhhdmUgYmVlbiBjYWxsZWQgYSBz
ZWNvbmQgdGltZScpOwotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDEsIHsgdmFsdWU6
IDEsIGRvbmU6IGZhbHNlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB0aGUgZW5xdWV1
ZWQgdmFsdWUnKTsKLQotICAgIHJldHVybiBkZWxheSgxMCk7Ci0gIH0pLnRoZW4oKCkgPT4gewot
ICAgIGFzc2VydF9lcXVhbHModGltZXNDYWxsZWQsIDEsICdhZnRlciAxMCBtcywgcHVsbCBzaG91
bGQgc3RpbGwgb25seSBoYXZlIGJlZW4gY2FsbGVkIG9uY2UnKTsKLQotICAgIHJlc29sdmUoKTsK
LSAgICByZXR1cm4gcmV0dXJuZWRQcm9taXNlOwotICB9KS50aGVuKCgpID0+IHsKLSAgICBhc3Nl
cnRfZXF1YWxzKHRpbWVzQ2FsbGVkLCAyLAotICAgICAgJ2FmdGVyIHRoZSBwcm9taXNlIHJldHVy
bmVkIGJ5IHB1bGwgaXMgZnVsZmlsbGVkLCBwdWxsIHNob3VsZCBiZSBjYWxsZWQgYSBzZWNvbmQg
dGltZScpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVs
bCB1bnRpbCB0aGUgcHJldmlvdXMgcHVsbCBjYWxsXCdzIHByb21pc2UgZnVsZmlsbHMnKTsKLQot
cHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgdGltZXNDYWxsZWQgPSAwOwotICBjb25zdCBz
dGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKLQotICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSgKLSAgICB7Ci0gICAgICBzdGFydChjKSB7Ci0gICAgICAgIGMuZW5xdWV1ZSgn
YScpOwotICAgICAgICBjLmVucXVldWUoJ2InKTsKLSAgICAgICAgYy5lbnF1ZXVlKCdjJyk7Ci0g
ICAgICAgIHJldHVybiBzdGFydFByb21pc2U7Ci0gICAgICB9LAotICAgICAgcHVsbCgpIHsKLSAg
ICAgICAgKyt0aW1lc0NhbGxlZDsKLSAgICAgIH0KLSAgICB9LAotICAgIHsKLSAgICAgIHNpemUo
KSB7Ci0gICAgICAgIHJldHVybiAxOwotICAgICAgfSwKLSAgICAgIGhpZ2hXYXRlck1hcms6IElu
ZmluaXR5Ci0gICAgfQotICApOwotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQot
ICByZXR1cm4gc3RhcnRQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIHJldHVybiByZWFkZXIucmVh
ZCgpOwotICB9KS50aGVuKHJlc3VsdDEgPT4gewotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJl
c3VsdDEsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IGNodW5rIHNob3VsZCBi
ZSBhcyBleHBlY3RlZCcpOwotCi0gICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gIH0pLnRoZW4o
cmVzdWx0MiA9PiB7Ci0gICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MiwgeyB2YWx1ZTog
J2InLCBkb25lOiBmYWxzZSB9LCAnc2Vjb25kIGNodW5rIHNob3VsZCBiZSBhcyBleHBlY3RlZCcp
OwotCi0gICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gIH0pLnRoZW4ocmVzdWx0MyA9PiB7Ci0g
ICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MywgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxz
ZSB9LCAndGhpcmQgY2h1bmsgc2hvdWxkIGJlIGFzIGV4cGVjdGVkJyk7Ci0KLSAgICByZXR1cm4g
ZGVsYXkoMTApOwotICB9KS50aGVuKCgpID0+IHsKLSAgICAvLyBPbmNlIGZvciBhZnRlciBzdGFy
dCwgYW5kIG9uY2UgZm9yIGV2ZXJ5IHJlYWQuCi0gICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxl
ZCwgNCwgJ3B1bGwoKSBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgZm91ciB0aW1lcycpOwotICB9
KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgcHVsbCBhZnRlciBzdGFydCwgYW5kIGFm
dGVyIGV2ZXJ5IHJlYWQnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgdGltZXND
YWxsZWQgPSAwOwotICBjb25zdCBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKLQot
ICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAg
Yy5lbnF1ZXVlKCdhJyk7Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAgICByZXR1cm4gc3RhcnRQcm9t
aXNlOwotICAgIH0sCi0gICAgcHVsbCgpIHsKLSAgICAgICsrdGltZXNDYWxsZWQ7Ci0gICAgfQot
ICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLSAgcmV0dXJuIHN0YXJ0
UHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHRpbWVzQ2FsbGVkLCAwLCAn
YWZ0ZXIgc3RhcnQgZmluaXNoZXMsIHB1bGwgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkJyk7
Ci0KLSAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgfSkudGhlbigoKSA9PiB7Ci0gICAgYXNz
ZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgMCwgJ3JlYWRpbmcgc2hvdWxkIG5vdCBoYXZlIHRyaWdn
ZXJlZCBhIHB1bGwgY2FsbCcpOwotCi0gICAgcmV0dXJuIHJlYWRlci5jbG9zZWQ7Ci0gIH0pLnRo
ZW4oKCkgPT4gewotICAgIGFzc2VydF9lcXVhbHModGltZXNDYWxsZWQsIDAsICdzdHJlYW0gc2hv
dWxkIGhhdmUgY2xvc2VkIHdpdGggc3RpbGwgbm8gY2FsbHMgdG8gcHVsbCcpOwotICB9KTsKLQot
fSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCBhZnRlciBzdGFydCBpZiB0
aGUgc3RyZWFtIGlzIG5vdyBjbG9zZWQnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBs
ZXQgdGltZXNDYWxsZWQgPSAwOwotICBsZXQgcmVzb2x2ZTsKLSAgY29uc3QgcmVhZHkgPSBuZXcg
UHJvbWlzZShyID0+IHJlc29sdmUgPSByKTsKLQotICBuZXcgUmVhZGFibGVTdHJlYW0oCi0gICAg
ewotICAgICAgc3RhcnQoKSB7fSwKLSAgICAgIHB1bGwoYykgewotICAgICAgICBjLmVucXVldWUo
Kyt0aW1lc0NhbGxlZCk7Ci0KLSAgICAgICAgaWYgKHRpbWVzQ2FsbGVkID09PSA0KSB7Ci0gICAg
ICAgICAgcmVzb2x2ZSgpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSwKLSAgICB7Ci0gICAg
ICBzaXplKCkgewotICAgICAgICByZXR1cm4gMTsKLSAgICAgIH0sCi0gICAgICBoaWdoV2F0ZXJN
YXJrOiA0Ci0gICAgfQotICApOwotCi0gIHJldHVybiByZWFkeS50aGVuKCgpID0+IHsKLSAgICAv
LyBhZnRlciBzdGFydDogc2l6ZSA9IDAsIHB1bGwoKQotICAgIC8vIGFmdGVyIGVucXVldWUoMSk6
IHNpemUgPSAxLCBwdWxsKCkKLSAgICAvLyBhZnRlciBlbnF1ZXVlKDIpOiBzaXplID0gMiwgcHVs
bCgpCi0gICAgLy8gYWZ0ZXIgZW5xdWV1ZSgzKTogc2l6ZSA9IDMsIHB1bGwoKQotICAgIC8vIGFm
dGVyIGVucXVldWUoNCk6IHNpemUgPSA0LCBkbyBub3QgcHVsbAotICAgIGFzc2VydF9lcXVhbHMo
dGltZXNDYWxsZWQsIDQsICdwdWxsKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgZm91ciB0aW1l
cycpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxsIGFmdGVy
IGVucXVldWVpbmcgZnJvbSBpbnNpZGUgcHVsbCAod2l0aCBubyByZWFkIHJlcXVlc3RzKSwgaWYg
c3RyYXRlZ3kgYWxsb3dzJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHB1bGxD
YWxsZWQgPSBmYWxzZTsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAg
cHVsbChjKSB7Ci0gICAgICBwdWxsQ2FsbGVkID0gdHJ1ZTsKLSAgICAgIGMuY2xvc2UoKTsKLSAg
ICB9Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotICByZXR1cm4g
cmVhZGVyLmNsb3NlZC50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfdHJ1ZShwdWxsQ2FsbGVkKTsK
LSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBwdWxsIHNob3VsZCBiZSBhYmxlIHRvIGNsb3Nl
IGEgc3RyZWFtLicpOwotCi10ZXN0KCgpID0+IHsKLQotICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxz
ZTsKLQotICBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGFzc2Vy
dF9lcXVhbHMoYy5lbnF1ZXVlKCdhJyksIHVuZGVmaW5lZCwgJ3RoZSBmaXJzdCBlbnF1ZXVlIHNo
b3VsZCByZXR1cm4gdW5kZWZpbmVkJyk7Ci0gICAgICBjLmNsb3NlKCk7Ci0KLSAgICAgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjLmVucXVldWUoJ2InKSwgJ2VucXVldWUg
YWZ0ZXIgY2xvc2Ugc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7Ci0gICAgICBzdGFydENhbGxl
ZCA9IHRydWU7Ci0gICAgfQotICB9KTsKLQotICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7Ci0K
LX0sICdSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgd2hlbiB0aGUgc3RyZWFt
IGlzIHJlYWRhYmxlIGJ1dCBkcmFpbmluZycpOwotCi10ZXN0KCgpID0+IHsKLQotICBsZXQgc3Rh
cnRDYWxsZWQgPSBmYWxzZTsKLQotICBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMp
IHsKLSAgICAgIGMuY2xvc2UoKTsKLQotICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
KCksICgpID0+IGMuZW5xdWV1ZSgnYScpLCAnZW5xdWV1ZSBhZnRlciBjbG9zZSBzaG91bGQgdGhy
b3cgYSBUeXBlRXJyb3InKTsKLSAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKLSAgICB9Ci0gIH0p
OwotCi0gIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtOiBl
bnF1ZXVlIHNob3VsZCB0aHJvdyB3aGVuIHRoZSBzdHJlYW0gaXMgY2xvc2VkJyk7Ci0KLXRlc3Qo
KCkgPT4gewotCi0gIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOwotICBjb25zdCBleHBlY3RlZEVy
cm9yID0gbmV3IEVycm9yKCdpIGFtIHNhZCcpOwotCi0gIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0g
ICAgc3RhcnQoYykgewotICAgICAgYy5lcnJvcihleHBlY3RlZEVycm9yKTsKLQotICAgICAgYXNz
ZXJ0X3Rocm93cyhleHBlY3RlZEVycm9yLCAoKSA9PiBjLmVucXVldWUoJ2EnKSwgJ2VucXVldWUg
YWZ0ZXIgZXJyb3Igc2hvdWxkIHRocm93IHRoYXQgZXJyb3InKTsKLSAgICAgIHN0YXJ0Q2FsbGVk
ID0gdHJ1ZTsKLSAgICB9Ci0gIH0pOwotCi0gIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKLQot
fSwgJ1JlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB0aGUgc3RvcmVkIGVycm9y
IHdoZW4gdGhlIHN0cmVhbSBpcyBlcnJvcmVkJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0K
LSAgbGV0IHN0YXJ0Q2FsbGVkID0gMDsKLSAgbGV0IHB1bGxDYWxsZWQgPSAwOwotICBsZXQgY2Fu
Y2VsQ2FsbGVkID0gMDsKLQotICAvKiBlc2xpbnQtZGlzYWJsZSBuby11c2UtYmVmb3JlLWRlZmlu
ZSAqLwotICBjbGFzcyBTb3VyY2UgewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIHN0YXJ0Q2FsbGVk
Kys7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHRoaXMsIHRoZVNvdXJjZSwgJ3N0YXJ0KCkgc2hvdWxk
IGJlIGNhbGxlZCB3aXRoIHRoZSBjb3JyZWN0IHRoaXMnKTsKLSAgICAgIGMuZW5xdWV1ZSgnYScp
OwotICAgIH0KLQotICAgIHB1bGwoKSB7Ci0gICAgICBwdWxsQ2FsbGVkKys7Ci0gICAgICBhc3Nl
cnRfZXF1YWxzKHRoaXMsIHRoZVNvdXJjZSwgJ3B1bGwoKSBzaG91bGQgYmUgY2FsbGVkIHdpdGgg
dGhlIGNvcnJlY3QgdGhpcycpOwotICAgIH0KLQotICAgIGNhbmNlbCgpIHsKLSAgICAgIGNhbmNl
bENhbGxlZCsrOwotICAgICAgYXNzZXJ0X2VxdWFscyh0aGlzLCB0aGVTb3VyY2UsICdjYW5jZWwo
KSBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIGNvcnJlY3QgdGhpcycpOwotICAgIH0KLSAgfQot
ICAvKiBlc2xpbnQtZW5hYmxlIG5vLXVzZS1iZWZvcmUtZGVmaW5lICovCi0KLSAgY29uc3QgdGhl
U291cmNlID0gbmV3IFNvdXJjZSgpOwotICB0aGVTb3VyY2UuZGVidWdOYW1lID0gJ3RoZSBzb3Vy
Y2Ugb2JqZWN0IHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3InOyAvLyBtYWtlcyB0ZXN0IGZhaWx1
cmVzIGVhc2llciB0byBkaWFnbm9zZQotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHRoZVNvdXJjZSk7Ci0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gIHJldHVy
biByZWFkZXIucmVhZCgpLnRoZW4oKCkgPT4gewotICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOwot
ICAgIHJzLmNhbmNlbCgpOwotICAgIGFzc2VydF9lcXVhbHMoc3RhcnRDYWxsZWQsIDEpOwotICAg
IGFzc2VydF9lcXVhbHMocHVsbENhbGxlZCwgMSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhjYW5jZWxD
YWxsZWQsIDEpOwotICAgIHJldHVybiBycy5nZXRSZWFkZXIoKS5jbG9zZWQ7Ci0gIH0pOwotCi19
LCAnUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHVuZGVybHlpbmcgc291cmNlIG1ldGhvZHMg
YXMgbWV0aG9kcycpOwotCi10ZXN0KCgpID0+IHsKLQotICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxz
ZTsKLSAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBhc3NlcnRf
ZXF1YWxzKGMuZGVzaXJlZFNpemUsIDEpOwotICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICBh
c3NlcnRfZXF1YWxzKGMuZGVzaXJlZFNpemUsIDApOwotICAgICAgYy5lbnF1ZXVlKCdiJyk7Ci0g
ICAgICBhc3NlcnRfZXF1YWxzKGMuZGVzaXJlZFNpemUsIC0xKTsKLSAgICAgIGMuZW5xdWV1ZSgn
YycpOwotICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAtMik7Ci0gICAgICBjLmVu
cXVldWUoJ2QnKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgLTMpOwotICAg
ICAgYy5lbnF1ZXVlKCdlJyk7Ci0gICAgICBzdGFydENhbGxlZCA9IHRydWU7Ci0gICAgfQotICB9
KTsKLQotICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBz
dHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91bGQgZ2l2ZSBkZXNpcmVkU2l6ZSBv
ZiAxIHRvIHN0YXJ0LCBkZWNyZWFzaW5nIGJ5IDEgcGVyIGVucXVldWUnKTsKLQotcHJvbWlzZV90
ZXN0KCgpID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0K
LSAgfSk7Ci0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gIGFzc2VydF9lcXVh
bHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBzdGFydCBh
dCAxJyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRy
b2xsZXIuZGVzaXJlZFNpemUsIDAsICdkZXNpcmVkU2l6ZSBzaG91bGQgZGVjcmVhc2UgdG8gMCBh
ZnRlciBmaXJzdCBlbnF1ZXVlJyk7Ci0KLSAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihyZXN1
bHQxID0+IHsKLSAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQxLCB7IHZhbHVlOiAnYScs
IGRvbmU6IGZhbHNlIH0sICdmaXJzdCBjaHVuayByZWFkIHNob3VsZCBiZSBjb3JyZWN0Jyk7Ci0K
LSAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEsICdkZXNpcmVkU2l6
ZSBzaG91bGQgZ28gdXAgdG8gMSBhZnRlciB0aGUgZmlyc3QgcmVhZCcpOwotICAgIGNvbnRyb2xs
ZXIuZW5xdWV1ZSgnYicpOwotICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6
ZSwgMCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBnbyBkb3duIHRvIDAgYWZ0ZXIgdGhlIHNlY29uZCBl
bnF1ZXVlJyk7Ci0KLSAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgfSkudGhlbihyZXN1bHQy
ID0+IHsKLSAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQyLCB7IHZhbHVlOiAnYicsIGRv
bmU6IGZhbHNlIH0sICdzZWNvbmQgY2h1bmsgcmVhZCBzaG91bGQgYmUgY29ycmVjdCcpOwotCi0g
ICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnZGVzaXJlZFNpemUg
c2hvdWxkIGdvIHVwIHRvIDEgYWZ0ZXIgdGhlIHNlY29uZCByZWFkJyk7Ci0gICAgY29udHJvbGxl
ci5lbnF1ZXVlKCdjJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXpl
LCAwLCAnZGVzaXJlZFNpemUgc2hvdWxkIGdvIGRvd24gdG8gMCBhZnRlciB0aGUgdGhpcmQgZW5x
dWV1ZScpOwotCi0gICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gIH0pLnRoZW4ocmVzdWx0MyA9
PiB7Ci0gICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MywgeyB2YWx1ZTogJ2MnLCBkb25l
OiBmYWxzZSB9LCAndGhpcmQgY2h1bmsgcmVhZCBzaG91bGQgYmUgY29ycmVjdCcpOwotCi0gICAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnZGVzaXJlZFNpemUgc2hv
dWxkIGdvIHVwIHRvIDEgYWZ0ZXIgdGhlIHRoaXJkIHJlYWQnKTsKLSAgICBjb250cm9sbGVyLmVu
cXVldWUoJ2QnKTsKLSAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAs
ICdkZXNpcmVkU2l6ZSBzaG91bGQgZ28gZG93biB0byAwIGFmdGVyIHRoZSBmb3VydGggZW5xdWV1
ZScpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0
IHN0cmF0ZWd5IHNob3VsZCBjb250aW51ZSBnaXZpbmcgZGVzaXJlZFNpemUgb2YgMSBpZiB0aGUg
Y2h1bmtzIGFyZSByZWFkIGltbWVkaWF0ZWx5Jyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQot
ICBjb25zdCByYW5kb21Tb3VyY2UgPSBuZXcgUmFuZG9tUHVzaFNvdXJjZSg4KTsKLQotICBjb25z
dCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYXNzZXJ0
X2VxdWFscyh0eXBlb2YgYywgJ29iamVjdCcsICdjIHNob3VsZCBiZSBhbiBvYmplY3QgaW4gc3Rh
cnQnKTsKLSAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGMuZW5xdWV1ZSwgJ2Z1bmN0aW9uJywg
J2VucXVldWUgc2hvdWxkIGJlIGEgZnVuY3Rpb24gaW4gc3RhcnQnKTsKLSAgICAgIGFzc2VydF9l
cXVhbHModHlwZW9mIGMuY2xvc2UsICdmdW5jdGlvbicsICdjbG9zZSBzaG91bGQgYmUgYSBmdW5j
dGlvbiBpbiBzdGFydCcpOwotICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgYy5lcnJvciwgJ2Z1
bmN0aW9uJywgJ2Vycm9yIHNob3VsZCBiZSBhIGZ1bmN0aW9uIGluIHN0YXJ0Jyk7Ci0KLSAgICAg
IHJhbmRvbVNvdXJjZS5vbmRhdGEgPSB0LnN0ZXBfZnVuYyhjaHVuayA9PiB7Ci0gICAgICAgIGlm
ICghYy5lbnF1ZXVlKGNodW5rKSA8PSAwKSB7Ci0gICAgICAgICAgcmFuZG9tU291cmNlLnJlYWRT
dG9wKCk7Ci0gICAgICAgIH0KLSAgICAgIH0pOwotCi0gICAgICByYW5kb21Tb3VyY2Uub25lbmQg
PSBjLmNsb3NlLmJpbmQoYyk7Ci0gICAgICByYW5kb21Tb3VyY2Uub25lcnJvciA9IGMuZXJyb3Iu
YmluZChjKTsKLSAgICB9LAotCi0gICAgcHVsbChjKSB7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHR5
cGVvZiBjLCAnb2JqZWN0JywgJ2Mgc2hvdWxkIGJlIGFuIG9iamVjdCBpbiBwdWxsJyk7Ci0gICAg
ICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBjLmVucXVldWUsICdmdW5jdGlvbicsICdlbnF1ZXVlIHNo
b3VsZCBiZSBhIGZ1bmN0aW9uIGluIHB1bGwnKTsKLSAgICAgIGFzc2VydF9lcXVhbHModHlwZW9m
IGMuY2xvc2UsICdmdW5jdGlvbicsICdjbG9zZSBzaG91bGQgYmUgYSBmdW5jdGlvbiBpbiBwdWxs
Jyk7Ci0KLSAgICAgIHJhbmRvbVNvdXJjZS5yZWFkU3RhcnQoKTsKLSAgICB9Ci0gIH0pOwotCi0g
IHJldHVybiByZWFkYWJsZVN0cmVhbVRvQXJyYXkocnMpLnRoZW4oY2h1bmtzID0+IHsKLSAgICBh
c3NlcnRfZXF1YWxzKGNodW5rcy5sZW5ndGgsIDgsICc4IGNodW5rcyBzaG91bGQgYmUgcmVhZCcp
OwotICAgIGZvciAoY29uc3QgY2h1bmsgb2YgY2h1bmtzKSB7Ci0gICAgICBhc3NlcnRfZXF1YWxz
KGNodW5rLmxlbmd0aCwgMTI4LCAnY2h1bmsgc2hvdWxkIGhhdmUgMTI4IGJ5dGVzJyk7Ci0gICAg
fQotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5n
IGEgcmFuZG9tIHB1c2ggc291cmNlJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29u
c3QgcnMgPSBzZXF1ZW50aWFsUmVhZGFibGVTdHJlYW0oMTApOwotCi0gIHJldHVybiByZWFkYWJs
ZVN0cmVhbVRvQXJyYXkocnMpLnRoZW4oY2h1bmtzID0+IHsKLSAgICBhc3NlcnRfdHJ1ZShycy5z
b3VyY2UuY2xvc2VkLCAnc291cmNlIHNob3VsZCBiZSBjbG9zZWQgYWZ0ZXIgYWxsIGNodW5rcyBh
cmUgcmVhZCcpOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbMSwgMiwgMywgNCwg
NSwgNiwgNywgOCwgOSwgMTBdLCAndGhlIGV4cGVjdGVkIDEwIGNodW5rcyBzaG91bGQgYmUgcmVh
ZCcpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0
aW5nIGEgc3luYyBwdWxsIHNvdXJjZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNv
bnN0IHJzID0gc2VxdWVudGlhbFJlYWRhYmxlU3RyZWFtKDEwLCB7IGFzeW5jOiB0cnVlIH0pOwot
Ci0gIHJldHVybiByZWFkYWJsZVN0cmVhbVRvQXJyYXkocnMpLnRoZW4oY2h1bmtzID0+IHsKLSAg
ICBhc3NlcnRfdHJ1ZShycy5zb3VyY2UuY2xvc2VkLCAnc291cmNlIHNob3VsZCBiZSBjbG9zZWQg
YWZ0ZXIgYWxsIGNodW5rcyBhcmUgcmVhZCcpOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1
bmtzLCBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdLCAndGhlIGV4cGVjdGVkIDEwIGNo
dW5rcyBzaG91bGQgYmUgcmVhZCcpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGludGVn
cmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGFuIGFzeW5jIHB1bGwgc291cmNlJyk7Ci0KLWRvbmUoKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9waXBlLXRocm91Z2gtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9y
ZWFkYWJsZS1zdHJlYW1zL3BpcGUtdGhyb3VnaC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDdlMTg3YTJjMzk1Y2ZhNjQyMDM1NjkwYzc3MWNmZjk2MDIxOWUwODcu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1z
dHJlYW1zL3BpcGUtdGhyb3VnaC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxNCAr
MCwwIEBACi0KLVBBU1MgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3Vs
ZCB3b3JrIGdlbmVyaWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzIAotUEFTUyBS
ZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2ggc2hvdWxkIHRocm93IHdoZW4gaXRz
IGZpcnN0IGFyZ3VtZW50IGlzIG5vdCBjb252ZXJ0aWJsZSB0byBhbiBvYmplY3QgCi1QQVNTIFJl
YWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCBzaG91bGQgdGhyb3cgd2hlbiAidGhp
cyIgaGFzIG5vIHBpcGVUbyBtZXRob2QgCi1QQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5w
aXBlVGhyb3VnaCBzaG91bGQgcmV0aHJvdyBlcnJvcnMgZnJvbSBhY2Nlc3NpbmcgcGlwZVRvLCBy
ZWFkYWJsZSwgb3Igd3JpdGFibGUgCi1QQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBl
VGhyb3VnaCBzaG91bGQgd29yayB3aXRoIG1pc3NpbmcgcmVhZGFibGUsIHdyaXRhYmxlLCBvciBv
cHRpb25zIAotRkFJTCBMb2FkIHBpcGUtdGhyb3VnaC5qcyB3aXRoIFNoYXJlZFdvcmtlciBhc3Nl
cnRfdW5yZWFjaGVkOiBTaGFyZWRXb3JrZXIgaXMgdW5hdmFpbGFibGUgUmVhY2hlZCB1bnJlYWNo
YWJsZSBjb2RlCi1GQUlMIFVudGl0bGVkIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFs
dWF0aW5nICduYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdpc3RyYXRpb24nKQotUEFTUyBS
ZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2ggc2hvdWxkIHdvcmsgZ2VuZXJpY2Fs
bHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMgCi1QQVNTIFJlYWRhYmxlU3RyZWFtLnBy
b3RvdHlwZS5waXBlVGhyb3VnaCBzaG91bGQgdGhyb3cgd2hlbiBpdHMgZmlyc3QgYXJndW1lbnQg
aXMgbm90IGNvbnZlcnRpYmxlIHRvIGFuIG9iamVjdCAKLVBBU1MgUmVhZGFibGVTdHJlYW0ucHJv
dG90eXBlLnBpcGVUaHJvdWdoIHNob3VsZCB0aHJvdyB3aGVuICJ0aGlzIiBoYXMgbm8gcGlwZVRv
IG1ldGhvZCAKLVBBU1MgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3Vs
ZCByZXRocm93IGVycm9ycyBmcm9tIGFjY2Vzc2luZyBwaXBlVG8sIHJlYWRhYmxlLCBvciB3cml0
YWJsZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3VsZCB3
b3JrIHdpdGggbWlzc2luZyByZWFkYWJsZSwgd3JpdGFibGUsIG9yIG9wdGlvbnMgCi0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy1hcGkvcmVhZGFibGUtc3RyZWFtcy9waXBlLXRocm91Z2guaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFt
cy9waXBlLXRocm91Z2guaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjJkOThk
NDVhZjQ2ZjI1ZmUwNjI2MjEwZDhmYTE5MTVjYzY0NWNmNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcGlwZS10aHJvdWdoLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vy
cy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icGlwZS10
aHJvdWdoLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci13b3JrZXJfdGVz
dCgncGlwZS10aHJvdWdoLmpzJyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3Ry
ZWFtcy9waXBlLXRocm91Z2guanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcGlwZS10aHJvdWdoLmpzCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTg4OTI4ZTc4YjE4ZTczYWY0NGVjZjQ5ZGQx
ZTRhZjgxYjZiM2VmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1h
cGkvcmVhZGFibGUtc3RyZWFtcy9waXBlLXRocm91Z2guanMKKysrIC9kZXYvbnVsbApAQCAtMSwx
MDggKzAsMCBAQAotJ3VzZSBzdHJpY3QnOwotCi1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0g
IHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMnKTsKLSAgc2Vs
Zi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0KLXRlc3Qo
KCkgPT4gewotCi0gIGxldCBwaXBlVG9Bcmd1bWVudHM7Ci0gIGNvbnN0IHRoaXNWYWx1ZSA9IHsK
LSAgICBwaXBlVG8oKSB7Ci0gICAgICBwaXBlVG9Bcmd1bWVudHMgPSBhcmd1bWVudHM7Ci0gICAg
fQotICB9OwotCi0gIGNvbnN0IGlucHV0ID0geyByZWFkYWJsZToge30sIHdyaXRhYmxlOiB7fSB9
OwotICBjb25zdCBvcHRpb25zID0ge307Ci0gIGNvbnN0IHJlc3VsdCA9IFJlYWRhYmxlU3RyZWFt
LnByb3RvdHlwZS5waXBlVGhyb3VnaC5jYWxsKHRoaXNWYWx1ZSwgaW5wdXQsIG9wdGlvbnMpOwot
Ci0gIGFzc2VydF9hcnJheV9lcXVhbHMocGlwZVRvQXJndW1lbnRzLCBbaW5wdXQud3JpdGFibGUs
IG9wdGlvbnNdLAotICAgICdjb3JyZWN0IGFyZ3VtZW50cyBzaG91bGQgYmUgcGFzc2VkIHRvIHRo
aXNWYWx1ZS5waXBlVG8nKTsKLSAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIGlucHV0LnJlYWRhYmxl
LCAncmV0dXJuIHZhbHVlIHNob3VsZCBiZSB0aGUgcGFzc2VkIHJlYWRhYmxlIHByb3BlcnR5Jyk7
Ci0KLX0sICdSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2ggc2hvdWxkIHdvcmsg
Z2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMnKTsKLQotdGVzdCgoKSA9
PiB7Ci0KLSAgY29uc3QgdGhpc1ZhbHVlID0gewotICAgIHBpcGVUbygpIHsKLSAgICAgIGFzc2Vy
dF91bnJlYWNoZWQoJ3BpcGVUbyBzaG91bGQgbm90IGJlIGNhbGxlZCcpOwotICAgIH0KLSAgfTsK
LQotICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLCAncGlwZVRocm91Z2gn
LCB0aGlzVmFsdWUsIFt1bmRlZmluZWQsIHt9XSk7Ci0gIG1ldGhvZFRocm93cyhSZWFkYWJsZVN0
cmVhbS5wcm90b3R5cGUsICdwaXBlVGhyb3VnaCcsIHRoaXNWYWx1ZSwgW251bGwsIHt9XSk7Ci0K
LX0sICdSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2ggc2hvdWxkIHRocm93IHdo
ZW4gaXRzIGZpcnN0IGFyZ3VtZW50IGlzIG5vdCBjb252ZXJ0aWJsZSB0byBhbiBvYmplY3QnKTsK
LQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgYXJncyA9IFt7IHJlYWRhYmxlOiB7fSwgd3JpdGFi
bGU6IHt9IH0sIHt9XTsKLQotICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW0ucHJvdG90eXBl
LCAncGlwZVRocm91Z2gnLCB1bmRlZmluZWQsIGFyZ3MpOwotICBtZXRob2RUaHJvd3MoUmVhZGFi
bGVTdHJlYW0ucHJvdG90eXBlLCAncGlwZVRocm91Z2gnLCBudWxsLCBhcmdzKTsKLSAgbWV0aG9k
VGhyb3dzKFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ3BpcGVUaHJvdWdoJywgMSwgYXJncyk7
Ci0gIG1ldGhvZFRocm93cyhSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUsICdwaXBlVGhyb3VnaCcs
IHsgcGlwZVRvOiAndGVzdCcgfSwgYXJncyk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbS5wcm90b3R5
cGUucGlwZVRocm91Z2ggc2hvdWxkIHRocm93IHdoZW4gInRoaXMiIGhhcyBubyBwaXBlVG8gbWV0
aG9kJyk7Ci0KLXRlc3QoKCkgPT4gewotICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcigncG90YXRv
Jyk7Ci0KLSAgY29uc3QgdGhyb3dpbmdQaXBlVG8gPSB7Ci0gICAgZ2V0IHBpcGVUbygpIHsKLSAg
ICAgIHRocm93IGVycm9yOwotICAgIH0KLSAgfTsKLSAgYXNzZXJ0X3Rocm93cyhlcnJvciwKLSAg
ICAoKSA9PiBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2guY2FsbCh0aHJvd2lu
Z1BpcGVUbywgeyByZWFkYWJsZTogeyB9LCB3cml0YWJsZTogeyB9IH0sIHt9KSwKLSAgICAncGlw
ZVRocm91Z2ggc2hvdWxkIHJldGhyb3cgdGhlIGVycm9yIHRocm93biBieSBwaXBlVG8nKTsKLQot
ICBjb25zdCB0aGlzVmFsdWUgPSB7Ci0gICAgcGlwZVRvKCkgewotICAgICAgYXNzZXJ0X3VucmVh
Y2hlZCgncGlwZVRvIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7Ci0gICAgfQotICB9OwotCi0gIGNv
bnN0IHRocm93aW5nV3JpdGFibGUgPSB7Ci0gICAgcmVhZGFibGU6IHt9LAotICAgIGdldCB3cml0
YWJsZSgpIHsKLSAgICAgIHRocm93IGVycm9yOwotICAgIH0KLSAgfTsKLSAgYXNzZXJ0X3Rocm93
cyhlcnJvciwKLSAgICAoKSA9PiBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2gu
Y2FsbCh0aGlzVmFsdWUsIHRocm93aW5nV3JpdGFibGUsIHt9KSwKLSAgICAncGlwZVRocm91Z2gg
c2hvdWxkIHJldGhyb3cgdGhlIGVycm9yIHRocm93biBieSB0aGUgd3JpdGFibGUgZ2V0dGVyJyk7
Ci0KLSAgY29uc3QgdGhyb3dpbmdSZWFkYWJsZSA9IHsKLSAgICBnZXQgcmVhZGFibGUoKSB7Ci0g
ICAgICB0aHJvdyBlcnJvcjsKLSAgICB9LAotICAgIHdyaXRhYmxlOiB7fQotICB9OwotICBhc3Nl
cnRfdGhyb3dzKGVycm9yLAotICAgICgpID0+IFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBl
VGhyb3VnaC5jYWxsKHRoaXNWYWx1ZSwgdGhyb3dpbmdSZWFkYWJsZSwge30pLAotICAgICdwaXBl
VGhyb3VnaCBzaG91bGQgcmV0aHJvdyB0aGUgZXJyb3IgdGhyb3duIGJ5IHRoZSByZWFkYWJsZSBn
ZXR0ZXInKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCBzaG91
bGQgcmV0aHJvdyBlcnJvcnMgZnJvbSBhY2Nlc3NpbmcgcGlwZVRvLCByZWFkYWJsZSwgb3Igd3Jp
dGFibGUnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNvdW50ID0gMDsKLSAgY29uc3QgdGhp
c1ZhbHVlID0gewotICAgIHBpcGVUbygpIHsKLSAgICAgICsrY291bnQ7Ci0gICAgfQotICB9Owot
Ci0gIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaC5jYWxsKHRoaXNWYWx1ZSwg
eyByZWFkYWJsZToge30sIHdyaXRhYmxlOiB7fSB9KTsKLSAgUmVhZGFibGVTdHJlYW0ucHJvdG90
eXBlLnBpcGVUaHJvdWdoLmNhbGwodGhpc1ZhbHVlLCB7IHJlYWRhYmxlOiB7fSB9LCB7fSk7Ci0g
IFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaC5jYWxsKHRoaXNWYWx1ZSwgeyB3
cml0YWJsZToge30gfSwge30pOwotCi0gIGFzc2VydF9lcXVhbHMoY291bnQsIDMsICdwaXBlVG8g
d2FzIGNhbGxlZCAzIHRpbWVzJyk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlw
ZVRocm91Z2ggc2hvdWxkIHdvcmsgd2l0aCBtaXNzaW5nIHJlYWRhYmxlLCB3cml0YWJsZSwgb3Ig
b3B0aW9ucycpOwotCi1kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUt
c3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGU2MDM4MmI2ODI4NjBhZGY0NjVmOTY1OTE1MzQ0ZjQzYzRhMzRkNTYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbS1yZWFkZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBA
QAotCi1QQVNTIENhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9yIGlu
ZGlyZWN0bHkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9yIHNob3VsZCBn
ZXQgYSBSZWFkYWJsZVN0cmVhbSBvYmplY3QgYXMgYXJndW1lbnQgCi1GQUlMIFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyIGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3Bl
cnRpZXMgYXNzZXJ0X2VxdWFsczogbWV0aG9kIHNob3VsZCBiZSBub24tZW51bWVyYWJsZSBleHBl
Y3RlZCBmYWxzZSBidXQgZ290IHRydWUKLVBBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2Vk
IHNob3VsZCBhbHdheXMgcmV0dXJuIHRoZSBzYW1lIHByb21pc2Ugb2JqZWN0IAotUEFTUyBDb25z
dHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgZmFpbCBpZiB0
aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0IGNvbnN0cnVjdGlvbikgCi1Q
QVNTIEdldHRpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciB2aWEgZ2V0UmVhZGVyIHNob3VsZCBm
YWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3QgY29uc3RydWN0
aW9uKSAKLVBBU1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkg
c2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGdldFJlYWRl
cikgCi1QQVNTIEdldHRpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciB2aWEgZ2V0UmVhZGVyIHNo
b3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBnZXRSZWFkZXIp
IAotUEFTUyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91
bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBpcyBjbG9zZWQgCi1QQVNTIENvbnN0cnVjdGluZyBhIFJl
YWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlz
IGVycm9yZWQgCi1QQVNTIFJlYWRpbmcgZnJvbSBhIHJlYWRlciBmb3IgYW4gZW1wdHkgc3RyZWFt
IHdpbGwgd2FpdCB1bnRpbCBhIGNodW5rIGlzIGF2YWlsYWJsZSAKLVBBU1MgY2FuY2VsKCkgb24g
YSByZWFkZXIgZG9lcyBub3QgcmVsZWFzZSB0aGUgcmVhZGVyIAotUEFTUyBjbG9zZWQgc2hvdWxk
IGJlIGZ1bGZpbGxlZCBhZnRlciBzdHJlYW0gaXMgY2xvc2VkICguY2xvc2VkIGFjY2VzcyBiZWZv
cmUgYWNxdWlyaW5nKSAKLVBBU1MgY2xvc2VkIHNob3VsZCBiZSByZWplY3RlZCBhZnRlciByZWFk
ZXIgcmVsZWFzZXMgaXRzIGxvY2sgKG11bHRpcGxlIHN0cmVhbSBsb2NrcykgCi1QQVNTIE11bHRp
cGxlIHJlYWRlcnMgY2FuIGFjY2VzcyB0aGUgc3RyZWFtIGluIHNlcXVlbmNlIAotUEFTUyBDYW5u
b3QgdXNlIGFuIGFscmVhZHktcmVsZWFzZWQgcmVhZGVyIHRvIHVubG9jayBhIHN0cmVhbSBhZ2Fp
biAKLVBBU1MgY2FuY2VsKCkgb24gYSByZWxlYXNlZCByZWFkZXIgaXMgYSBuby1vcCBhbmQgZG9l
cyBub3QgcGFzcyB0aHJvdWdoIAotUEFTUyBHZXR0aW5nIGEgc2Vjb25kIHJlYWRlciBhZnRlciBl
cnJvcmluZyB0aGUgc3RyZWFtIGFuZCByZWxlYXNpbmcgdGhlIHJlYWRlciBzaG91bGQgc3VjY2Vl
ZCAKLVBBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHByb21pc2Ugc2hvdWxkIGJlIHJl
amVjdGVkIHdpdGggdW5kZWZpbmVkIGlmIHRoYXQgaXMgdGhlIGVycm9yIAotUEFTUyBSZWFkYWJs
ZVN0cmVhbVJlYWRlcjogaWYgc3RhcnQgcmVqZWN0cyB3aXRoIG5vIHBhcmFtZXRlciwgaXQgc2hv
dWxkIGVycm9yIHRoZSBzdHJlYW0gd2l0aCBhbiB1bmRlZmluZWQgZXJyb3IgCi1QQVNTIEVycm9y
aW5nIGEgUmVhZGFibGVTdHJlYW0gYWZ0ZXIgY2hlY2tpbmcgY2xvc2VkIHNob3VsZCByZWplY3Qg
UmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHByb21pc2UgCi1QQVNTIEVycm9yaW5nIGEgUmVh
ZGFibGVTdHJlYW0gYmVmb3JlIGNoZWNraW5nIGNsb3NlZCBzaG91bGQgcmVqZWN0IFJlYWRhYmxl
U3RyZWFtUmVhZGVyIGNsb3NlZCBwcm9taXNlIAotUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgc3Ry
ZWFtIHRoYXQgZ2V0cyBjbG9zZWQgCi1QQVNTIFJlYWRpbmcgdHdpY2Ugb24gYSBjbG9zZWQgc3Ry
ZWFtIAotUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGFuIGVycm9yZWQgc3RyZWFtIAotUEFTUyBSZWFk
aW5nIHR3aWNlIG9uIGEgc3RyZWFtIHRoYXQgZ2V0cyBlcnJvcmVkIAotRkFJTCBMb2FkIHJlYWRh
YmxlLXN0cmVhbS1yZWFkZXIuanMgd2l0aCBTaGFyZWRXb3JrZXIgYXNzZXJ0X3VucmVhY2hlZDog
U2hhcmVkV29ya2VyIGlzIHVuYXZhaWxhYmxlIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQotRkFJ
TCBVbnRpdGxlZCB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnbmF2aWdh
dG9yLnNlcnZpY2VXb3JrZXIuZ2V0UmVnaXN0cmF0aW9uJykKLVBBU1MgQ2FuIGdldCB0aGUgUmVh
ZGFibGVTdHJlYW1SZWFkZXIgY29uc3RydWN0b3IgaW5kaXJlY3RseSAKLVBBU1MgUmVhZGFibGVT
dHJlYW1SZWFkZXIgY29uc3RydWN0b3Igc2hvdWxkIGdldCBhIFJlYWRhYmxlU3RyZWFtIG9iamVj
dCBhcyBhcmd1bWVudCAKLUZBSUwgUmVhZGFibGVTdHJlYW1SZWFkZXIgaW5zdGFuY2VzIHNob3Vs
ZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2YgcHJvcGVydGllcyBhc3NlcnRfZXF1YWxzOiBtZXRo
b2Qgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlIGV4cGVjdGVkIGZhbHNlIGJ1dCBnb3QgdHJ1ZQot
UEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgc2hvdWxkIGFsd2F5cyByZXR1cm4gdGhl
IHNhbWUgcHJvbWlzZSBvYmplY3QgCi1QQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFt
UmVhZGVyIGRpcmVjdGx5IHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2Nr
ZWQgKHZpYSBkaXJlY3QgY29uc3RydWN0aW9uKSAKLVBBU1MgR2V0dGluZyBhIFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJl
YWR5IGxvY2tlZCAodmlhIGRpcmVjdCBjb25zdHJ1Y3Rpb24pIAotUEFTUyBDb25zdHJ1Y3Rpbmcg
YSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFt
IGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVhZGVyKSAKLVBBU1MgR2V0dGluZyBhIFJlYWRh
YmxlU3RyZWFtUmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBp
cyBhbHJlYWR5IGxvY2tlZCAodmlhIGdldFJlYWRlcikgCi1QQVNTIENvbnN0cnVjdGluZyBhIFJl
YWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlz
IGNsb3NlZCAKLVBBU1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0
bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgZXJyb3JlZCAKLVBBU1MgUmVhZGluZyBm
cm9tIGEgcmVhZGVyIGZvciBhbiBlbXB0eSBzdHJlYW0gd2lsbCB3YWl0IHVudGlsIGEgY2h1bmsg
aXMgYXZhaWxhYmxlIAotUEFTUyBjYW5jZWwoKSBvbiBhIHJlYWRlciBkb2VzIG5vdCByZWxlYXNl
IHRoZSByZWFkZXIgCi1QQVNTIGNsb3NlZCBzaG91bGQgYmUgZnVsZmlsbGVkIGFmdGVyIHN0cmVh
bSBpcyBjbG9zZWQgKC5jbG9zZWQgYWNjZXNzIGJlZm9yZSBhY3F1aXJpbmcpIAotUEFTUyBjbG9z
ZWQgc2hvdWxkIGJlIHJlamVjdGVkIGFmdGVyIHJlYWRlciByZWxlYXNlcyBpdHMgbG9jayAobXVs
dGlwbGUgc3RyZWFtIGxvY2tzKSAKLVBBU1MgTXVsdGlwbGUgcmVhZGVycyBjYW4gYWNjZXNzIHRo
ZSBzdHJlYW0gaW4gc2VxdWVuY2UgCi1QQVNTIENhbm5vdCB1c2UgYW4gYWxyZWFkeS1yZWxlYXNl
ZCByZWFkZXIgdG8gdW5sb2NrIGEgc3RyZWFtIGFnYWluIAotUEFTUyBjYW5jZWwoKSBvbiBhIHJl
bGVhc2VkIHJlYWRlciBpcyBhIG5vLW9wIGFuZCBkb2VzIG5vdCBwYXNzIHRocm91Z2ggCi1QQVNT
IEdldHRpbmcgYSBzZWNvbmQgcmVhZGVyIGFmdGVyIGVycm9yaW5nIHRoZSBzdHJlYW0gYW5kIHJl
bGVhc2luZyB0aGUgcmVhZGVyIHNob3VsZCBzdWNjZWVkIAotUEFTUyBSZWFkYWJsZVN0cmVhbVJl
YWRlciBjbG9zZWQgcHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB1bmRlZmluZWQgaWYg
dGhhdCBpcyB0aGUgZXJyb3IgCi1QQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyOiBpZiBzdGFydCBy
ZWplY3RzIHdpdGggbm8gcGFyYW1ldGVyLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSB3aXRo
IGFuIHVuZGVmaW5lZCBlcnJvciAKLVBBU1MgRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBhZnRl
ciBjaGVja2luZyBjbG9zZWQgc2hvdWxkIHJlamVjdCBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9z
ZWQgcHJvbWlzZSAKLVBBU1MgRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBiZWZvcmUgY2hlY2tp
bmcgY2xvc2VkIHNob3VsZCByZWplY3QgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHByb21p
c2UgCi1QQVNTIFJlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGNsb3NlZCAKLVBB
U1MgUmVhZGluZyB0d2ljZSBvbiBhIGNsb3NlZCBzdHJlYW0gCi1QQVNTIFJlYWRpbmcgdHdpY2Ug
b24gYW4gZXJyb3JlZCBzdHJlYW0gCi1QQVNTIFJlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhh
dCBnZXRzIGVycm9yZWQgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW0tcmVhZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRl
ci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjBkYjExZDFiYzRlODNjM2Y1
MzhmNDdlNjY3YzczNWFiNDBjOGY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vycy9y
ZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSJyZWFk
YWJsZS1zdHJlYW0tcmVhZGVyLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7
Ci13b3JrZXJfdGVzdCgncmVhZGFibGUtc3RyZWFtLXJlYWRlci5qcycpOwotPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5qcyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVh
ZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmpzCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAxZDViYzEzMDA0ZjhhMzU3ZmM1ZTgyNTIyZjNiZDMwOWYxMzExYjlhLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNDg1ICsw
LDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgewotICBzZWxm
LmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9ycy11dGlscy5qcycpOwotICBzZWxmLmltcG9y
dFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnKTsKLX0KLQotbGV0IFJlYWRhYmxl
U3RyZWFtUmVhZGVyOwotCi10ZXN0KCgpID0+IHsKLQotICAvLyBJdCdzIG5vdCBleHBvc2VkIGds
b2JhbGx5LCBidXQgd2UgdGVzdCBhIGZldyBvZiBpdHMgcHJvcGVydGllcyBoZXJlLgotICBSZWFk
YWJsZVN0cmVhbVJlYWRlciA9IChuZXcgUmVhZGFibGVTdHJlYW0oKSkuZ2V0UmVhZGVyKCkuY29u
c3RydWN0b3I7Ci0KLX0sICdDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1
Y3RvciBpbmRpcmVjdGx5Jyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGFzc2VydF90aHJvd3MobmV3
IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW1SZWFkZXIoJ3BvdGF0bycpKTsK
LSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVh
bVJlYWRlcih7fSkpOwotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3
IFJlYWRhYmxlU3RyZWFtUmVhZGVyKCkpOwotCi19LCAnUmVhZGFibGVTdHJlYW1SZWFkZXIgY29u
c3RydWN0b3Igc2hvdWxkIGdldCBhIFJlYWRhYmxlU3RyZWFtIG9iamVjdCBhcyBhcmd1bWVudCcp
OwotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCBtZXRob2RzID0gWydjYW5jZWwnLCAnY29uc3Ry
dWN0b3InLCAncmVhZCcsICdyZWxlYXNlTG9jayddOwotICBjb25zdCBwcm9wZXJ0aWVzID0gbWV0
aG9kcy5jb25jYXQoWydjbG9zZWQnXSkuc29ydCgpOwotCi0gIGNvbnN0IHJzUmVhZGVyID0gbmV3
IFJlYWRhYmxlU3RyZWFtUmVhZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSgpKTsKLSAgY29uc3QgcHJv
dG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocnNSZWFkZXIpOwotCi0gIGFzc2VydF9hcnJheV9l
cXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocHJvdG8pLnNvcnQoKSwgcHJvcGVydGll
cyk7Ci0KLSAgZm9yIChjb25zdCBtIG9mIG1ldGhvZHMpIHsKLSAgICBjb25zdCBwcm9wRGVzYyA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIG0pOwotICAgIGFzc2VydF9l
cXVhbHMocHJvcERlc2MuZW51bWVyYWJsZSwgZmFsc2UsICdtZXRob2Qgc2hvdWxkIGJlIG5vbi1l
bnVtZXJhYmxlJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhwcm9wRGVzYy5jb25maWd1cmFibGUsIHRy
dWUsICdtZXRob2Qgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZScpOwotICAgIGFzc2VydF9lcXVhbHMo
cHJvcERlc2Mud3JpdGFibGUsIHRydWUsICdtZXRob2Qgc2hvdWxkIGJlIHdyaXRhYmxlJyk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNSZWFkZXJbbV0sICdmdW5jdGlvbicsICdzaG91bGQg
aGF2ZSBiZSBhIG1ldGhvZCcpOwotICB9Ci0KLSAgY29uc3QgY2xvc2VkUHJvcERlc2MgPSBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCAnY2xvc2VkJyk7Ci0gIGFzc2VydF9l
cXVhbHMoY2xvc2VkUHJvcERlc2MuZW51bWVyYWJsZSwgZmFsc2UsICdjbG9zZWQgc2hvdWxkIGJl
IG5vbi1lbnVtZXJhYmxlJyk7Ci0gIGFzc2VydF9lcXVhbHMoY2xvc2VkUHJvcERlc2MuY29uZmln
dXJhYmxlLCB0cnVlLCAnY2xvc2VkIHNob3VsZCBiZSBjb25maWd1cmFibGUnKTsKLSAgYXNzZXJ0
X25vdF9lcXVhbHMoY2xvc2VkUHJvcERlc2MuZ2V0LCB1bmRlZmluZWQsICdjbG9zZWQgc2hvdWxk
IGhhdmUgYSBnZXR0ZXInKTsKLSAgYXNzZXJ0X2VxdWFscyhjbG9zZWRQcm9wRGVzYy5zZXQsIHVu
ZGVmaW5lZCwgJ2Nsb3NlZCBzaG91bGQgbm90IGhhdmUgYSBzZXR0ZXInKTsKLQotICBhc3NlcnRf
ZXF1YWxzKHJzUmVhZGVyLmNhbmNlbC5sZW5ndGgsIDEsICdjYW5jZWwgaGFzIDEgcGFyYW1ldGVy
Jyk7Ci0gIGFzc2VydF9ub3RfZXF1YWxzKHJzUmVhZGVyLmNsb3NlZCwgdW5kZWZpbmVkLCAnaGFz
IGEgbm9uLXVuZGVmaW5lZCBjbG9zZWQgcHJvcGVydHknKTsKLSAgYXNzZXJ0X2VxdWFscyh0eXBl
b2YgcnNSZWFkZXIuY2xvc2VkLnRoZW4sICdmdW5jdGlvbicsICdjbG9zZWQgcHJvcGVydHkgaXMg
dGhlbmFibGUnKTsKLSAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNSZWFkZXIuY29uc3RydWN0b3Is
ICdmdW5jdGlvbicsICdoYXMgYSBjb25zdHJ1Y3RvciBtZXRob2QnKTsKLSAgYXNzZXJ0X2VxdWFs
cyhyc1JlYWRlci5jb25zdHJ1Y3Rvci5sZW5ndGgsIDEsICdjb25zdHJ1Y3RvciBoYXMgMSBwYXJh
bWV0ZXInKTsKLSAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNSZWFkZXIucmVhZCwgJ2Z1bmN0aW9u
JywgJ2hhcyBhIGdldFJlYWRlciBtZXRob2QnKTsKLSAgYXNzZXJ0X2VxdWFscyhyc1JlYWRlci5y
ZWFkLmxlbmd0aCwgMCwgJ3JlYWQgaGFzIG5vIHBhcmFtZXRlcnMnKTsKLSAgYXNzZXJ0X2VxdWFs
cyh0eXBlb2YgcnNSZWFkZXIucmVsZWFzZUxvY2ssICdmdW5jdGlvbicsICdoYXMgYSByZWxlYXNl
TG9jayBtZXRob2QnKTsKLSAgYXNzZXJ0X2VxdWFscyhyc1JlYWRlci5yZWxlYXNlTG9jay5sZW5n
dGgsIDAsICdyZWxlYXNlTG9jayBoYXMgbm8gcGFyYW1ldGVycycpOwotCi19LCAnUmVhZGFibGVT
dHJlYW1SZWFkZXIgaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2YgcHJv
cGVydGllcycpOwotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCByc1JlYWRlciA9IG5ldyBSZWFk
YWJsZVN0cmVhbVJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0oKSk7Ci0gIGFzc2VydF9lcXVhbHMo
cnNSZWFkZXIuY2xvc2VkLCByc1JlYWRlci5jbG9zZWQsICdjbG9zZWQgc2hvdWxkIHJldHVybiB0
aGUgc2FtZSBwcm9taXNlJyk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgc2hv
dWxkIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgcHJvbWlzZSBvYmplY3QnKTsKLQotdGVzdCgoKSA9
PiB7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLSAgbmV3IFJlYWRhYmxl
U3RyZWFtUmVhZGVyKHJzKTsgLy8gQ29uc3RydWN0aW5nIGRpcmVjdGx5IHRoZSBmaXJzdCB0aW1l
IHNob3VsZCBiZSBmaW5lLgotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4g
bmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKHJzKSwKLSAgICAgICAgICAgICAgICAnY29uc3RydWN0
aW5nIGRpcmVjdGx5IHRoZSBzZWNvbmQgdGltZSBzaG91bGQgZmFpbCcpOwotCi19LCAnQ29uc3Ry
dWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZhaWwgaWYgdGhl
IHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCAnICsKLSAgICdjb25zdHJ1Y3Rp
b24pJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFt
KCk7Ci0gIG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihycyk7IC8vIENvbnN0cnVjdGluZyBkaXJl
Y3RseSBzaG91bGQgYmUgZmluZS4KLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgp
ID0+IHJzLmdldFJlYWRlcigpLCAnZ2V0UmVhZGVyKCkgc2hvdWxkIGZhaWwnKTsKLQotfSwgJ0dl
dHRpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciB2aWEgZ2V0UmVhZGVyIHNob3VsZCBmYWlsIGlm
IHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3QgJyArCi0gICAnY29uc3Ry
dWN0aW9uKScpOwotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSgpOwotICBycy5nZXRSZWFkZXIoKTsgLy8gZ2V0UmVhZGVyKCkgc2hvdWxkIGJlIGZpbmUu
Ci0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJl
YW1SZWFkZXIocnMpLCAnY29uc3RydWN0aW5nIGRpcmVjdGx5IHNob3VsZCBmYWlsJyk7Ci0KLX0s
ICdDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgZmFp
bCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVhZGVyKScpOwotCi10
ZXN0KCgpID0+IHsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwotICBycy5n
ZXRSZWFkZXIoKTsgLy8gZ2V0UmVhZGVyKCkgc2hvdWxkIGJlIGZpbmUuCi0gIGFzc2VydF90aHJv
d3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBycy5nZXRSZWFkZXIoKSwgJ2dldFJlYWRlcigpIHNo
b3VsZCBmYWlsJyk7Ci0KLX0sICdHZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgdmlhIGdl
dFJlYWRlciBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEg
Z2V0UmVhZGVyKScpOwotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5jbG9zZSgpOwotICAgIH0KLSAgfSk7
Ci0KLSAgbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKHJzKTsgLy8gQ29uc3RydWN0aW5nIGRpcmVj
dGx5IHNob3VsZCBub3QgdGhyb3cuCi0KLX0sICdDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVh
bVJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBpcyBjbG9zZWQnKTsK
LQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2RvblwndCBz
YXkgaSBkaWRuXCd0IHdhcm4geWEnKTsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
ewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZXJyb3IodGhlRXJyb3IpOwotICAgIH0KLSAgfSk7
Ci0KLSAgbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKHJzKTsgLy8gQ29uc3RydWN0aW5nIGRpcmVj
dGx5IHNob3VsZCBub3QgdGhyb3cuCi0KLX0sICdDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVh
bVJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBpcyBlcnJvcmVkJyk7
Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVy
ID0gYzsKLSAgICB9Ci0gIH0pOwotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQot
ICBjb25zdCBwcm9taXNlID0gcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdy
ZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB0aGUgZW5xdWV1ZWQgY2h1bmsnKTsKLSAgfSk7Ci0K
LSAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7Ci0gIHJldHVybiBwcm9taXNlOwotCi19LCAnUmVh
ZGluZyBmcm9tIGEgcmVhZGVyIGZvciBhbiBlbXB0eSBzdHJlYW0gd2lsbCB3YWl0IHVudGlsIGEg
Y2h1bmsgaXMgYXZhaWxhYmxlJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNh
bmNlbENhbGxlZCA9IGZhbHNlOwotICBjb25zdCBwYXNzZWRSZWFzb24gPSBuZXcgRXJyb3IoJ2l0
IHdhc25cJ3QgdGhlIHJpZ2h0IHRpbWUsIHNvcnJ5Jyk7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKLSAgICBjYW5jZWwocmVhc29uKSB7Ci0gICAgICBhc3NlcnRfdHJ1ZShycy5s
b2NrZWQsICd0aGUgc3RyZWFtIHNob3VsZCBzdGlsbCBiZSBsb2NrZWQnKTsKLSAgICAgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBycy5nZXRSZWFkZXIoKSwgJ3Nob3VsZCBu
b3QgYmUgYWJsZSB0byBnZXQgYW5vdGhlciByZWFkZXInKTsKLSAgICAgIGFzc2VydF9lcXVhbHMo
cmVhc29uLCBwYXNzZWRSZWFzb24sICd0aGUgY2FuY2VsbGF0aW9uIHJlYXNvbiBpcyBwYXNzZWQg
dGhyb3VnaCB0byB0aGUgdW5kZXJseWluZyBzb3VyY2UnKTsKLSAgICAgIGNhbmNlbENhbGxlZCA9
IHRydWU7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsK
LSAgcmV0dXJuIHJlYWRlci5jYW5jZWwocGFzc2VkUmVhc29uKS50aGVuKCgpID0+IGFzc2VydF90
cnVlKGNhbmNlbENhbGxlZCkpOwotCi19LCAnY2FuY2VsKCkgb24gYSByZWFkZXIgZG9lcyBub3Qg
cmVsZWFzZSB0aGUgcmVhZGVyJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNv
bnRyb2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChj
KSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWRl
ciA9IHJzLmdldFJlYWRlcigpOwotICBjb25zdCBwcm9taXNlID0gcmVhZGVyLmNsb3NlZDsKLQot
ICBjb250cm9sbGVyLmNsb3NlKCk7Ci0gIHJldHVybiBwcm9taXNlOwotCi19LCAnY2xvc2VkIHNo
b3VsZCBiZSBmdWxmaWxsZWQgYWZ0ZXIgc3RyZWFtIGlzIGNsb3NlZCAoLmNsb3NlZCBhY2Nlc3Mg
YmVmb3JlIGFjcXVpcmluZyknKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGxldCBjb250
cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykg
ewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCByZWFkZXIx
ID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgcmVhZGVyMS5yZWxlYXNlTG9jaygpOwotCi0gIGNvbnN0
IHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKLSAgY29udHJvbGxlci5jbG9zZSgpOwotCi0gIHJl
dHVybiBQcm9taXNlLmFsbChbCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3Io
KSwgcmVhZGVyMS5jbG9zZWQpLAotICAgIHJlYWRlcjIuY2xvc2VkCi0gIF0pOwotCi19LCAnY2xv
c2VkIHNob3VsZCBiZSByZWplY3RlZCBhZnRlciByZWFkZXIgcmVsZWFzZXMgaXRzIGxvY2sgKG11
bHRpcGxlIHN0cmVhbSBsb2NrcyknKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25z
dCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lbnF1
ZXVlKCdhJyk7Ci0gICAgICBjLmVucXVldWUoJ2InKTsKLSAgICAgIGMuY2xvc2UoKTsKLSAgICB9
Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWRlcjEgPSBycy5nZXRSZWFkZXIoKTsKLSAgY29uc3QgcHJv
bWlzZTEgPSByZWFkZXIxLnJlYWQoKS50aGVuKHIgPT4gewotICAgIGFzc2VydF9vYmplY3RfZXF1
YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3JlYWRpbmcgdGhlIGZpcnN0IGNo
dW5rIGZyb20gcmVhZGVyMSB3b3JrcycpOwotICB9KTsKLSAgcmVhZGVyMS5yZWxlYXNlTG9jaygp
OwotCi0gIGNvbnN0IHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKLSAgY29uc3QgcHJvbWlzZTIg
PSByZWFkZXIyLnJlYWQoKS50aGVuKHIgPT4gewotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIs
IHsgdmFsdWU6ICdiJywgZG9uZTogZmFsc2UgfSwgJ3JlYWRpbmcgdGhlIHNlY29uZCBjaHVuayBm
cm9tIHJlYWRlcjIgd29ya3MnKTsKLSAgfSk7Ci0gIHJlYWRlcjIucmVsZWFzZUxvY2soKTsKLQot
ICByZXR1cm4gUHJvbWlzZS5hbGwoW3Byb21pc2UxLCBwcm9taXNlMl0pOwotCi19LCAnTXVsdGlw
bGUgcmVhZGVycyBjYW4gYWNjZXNzIHRoZSBzdHJlYW0gaW4gc2VxdWVuY2UnKTsKLQotcHJvbWlz
ZV90ZXN0KCgpID0+IHsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0
YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3Qg
cmVhZGVyMSA9IHJzLmdldFJlYWRlcigpOwotICByZWFkZXIxLnJlbGVhc2VMb2NrKCk7Ci0KLSAg
Y29uc3QgcmVhZGVyMiA9IHJzLmdldFJlYWRlcigpOwotCi0gIC8vIFNob3VsZCBiZSBhIG5vLW9w
Ci0gIHJlYWRlcjEucmVsZWFzZUxvY2soKTsKLQotICByZXR1cm4gcmVhZGVyMi5yZWFkKCkudGhl
bihyZXN1bHQgPT4gewotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTog
J2EnLCBkb25lOiBmYWxzZSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICdyZWFkKCkgc2hv
dWxkIHN0aWxsIHdvcmsgb24gcmVhZGVyMiBldmVuIGFmdGVyIHJlYWRlcjEgaXMgcmVsZWFzZWQn
KTsKLSAgfSk7Ci0KLX0sICdDYW5ub3QgdXNlIGFuIGFscmVhZHktcmVsZWFzZWQgcmVhZGVyIHRv
IHVubG9jayBhIHN0cmVhbSBhZ2FpbicpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29u
c3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5x
dWV1ZSgnYScpOwotICAgIH0sCi0gICAgY2FuY2VsKCkgewotICAgICAgYXNzZXJ0X3VucmVhY2hl
ZCgndW5kZXJseWluZyBzb3VyY2UgY2FuY2VsIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7Ci0gICAg
fQotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLSAgcmVhZGVyLnJl
bGVhc2VMb2NrKCk7Ci0gIGNvbnN0IGNhbmNlbFByb21pc2UgPSByZWFkZXIuY2FuY2VsKCk7Ci0K
LSAgY29uc3QgcmVhZGVyMiA9IHJzLmdldFJlYWRlcigpOwotICBjb25zdCByZWFkUHJvbWlzZSA9
IHJlYWRlcjIucmVhZCgpLnRoZW4ociA9PiB7Ci0gICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwg
eyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnYSBuZXcgcmVhZGVyIHNob3VsZCBiZSBhYmxl
IHRvIHJlYWQgYSBjaHVuaycpOwotICB9KTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAg
IHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIGNhbmNlbFByb21pc2UpLAotICAg
IHJlYWRQcm9taXNlCi0gIF0pOwotCi19LCAnY2FuY2VsKCkgb24gYSByZWxlYXNlZCByZWFkZXIg
aXMgYSBuby1vcCBhbmQgZG9lcyBub3QgcGFzcyB0aHJvdWdoJyk7Ci0KLXByb21pc2VfdGVzdCh0
ID0+IHsKLQotICBjb25zdCBwcm9taXNlQXNzZXJ0cyA9IFtdOwotCi0gIGxldCBjb250cm9sbGVy
OwotICBjb25zdCB0aGVFcnJvciA9IHsgbmFtZTogJ3VuaXF1ZSBlcnJvcicgfTsKLSAgY29uc3Qg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xs
ZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyMSA9IHJzLmdldFJlYWRlcigp
OwotCi0gIHByb21pc2VBc3NlcnRzLnB1c2goCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVy
cm9yLCByZWFkZXIxLmNsb3NlZCksCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCBy
ZWFkZXIxLnJlYWQoKSkKLSAgKTsKLQotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwg
KCkgPT4gcnMuZ2V0UmVhZGVyKCksICd0cnlpbmcgdG8gZ2V0IGFub3RoZXIgcmVhZGVyIGJlZm9y
ZSBlcnJvcmluZyBzaG91bGQgdGhyb3cnKTsKLQotICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9y
KTsKLQotICByZWFkZXIxLnJlbGVhc2VMb2NrKCk7Ci0KLSAgY29uc3QgcmVhZGVyMiA9IHJzLmdl
dFJlYWRlcigpOwotCi0gIHByb21pc2VBc3NlcnRzLnB1c2goCi0gICAgcHJvbWlzZV9yZWplY3Rz
KHQsIHRoZUVycm9yLCByZWFkZXIyLmNsb3NlZCksCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIHRo
ZUVycm9yLCByZWFkZXIyLnJlYWQoKSkKLSAgKTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwocHJv
bWlzZUFzc2VydHMpOwotCi19LCAnR2V0dGluZyBhIHNlY29uZCByZWFkZXIgYWZ0ZXIgZXJyb3Jp
bmcgdGhlIHN0cmVhbSBhbmQgcmVsZWFzaW5nIHRoZSByZWFkZXIgc2hvdWxkIHN1Y2NlZWQnKTsK
LQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9
IGM7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBwcm9taXNlID0gcnMuZ2V0UmVhZGVyKCkuY2xv
c2VkLnRoZW4oCi0gICAgdC51bnJlYWNoZWRfZnVuYygnY2xvc2VkIHByb21pc2Ugc2hvdWxkIG5v
dCBiZSBmdWxmaWxsZWQgd2hlbiBzdHJlYW0gaXMgZXJyb3JlZCcpLAotICAgIGVyciA9PiB7Ci0g
ICAgICBhc3NlcnRfZXF1YWxzKGVyciwgdW5kZWZpbmVkLCAncGFzc2VkIGVycm9yIHNob3VsZCBi
ZSB1bmRlZmluZWQgYXMgaXQgd2FzJyk7Ci0gICAgfQotICApOwotCi0gIGNvbnRyb2xsZXIuZXJy
b3IoKTsKLSAgcmV0dXJuIHByb21pc2U7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9z
ZWQgcHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB1bmRlZmluZWQgaWYgdGhhdCBpcyB0
aGUgZXJyb3InKTsKLQotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KCkgewotICAgICAgcmV0dXJuIFByb21pc2UucmVq
ZWN0KCk7Ci0gICAgfQotICB9KTsKLQotICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkucmVhZCgpLnRo
ZW4oCi0gICAgdC51bnJlYWNoZWRfZnVuYygncmVhZCBwcm9taXNlIHNob3VsZCBub3QgYmUgZnVs
ZmlsbGVkIHdoZW4gc3RyZWFtIGlzIGVycm9yZWQnKSwKLSAgICBlcnIgPT4gewotICAgICAgYXNz
ZXJ0X2VxdWFscyhlcnIsIHVuZGVmaW5lZCwgJ3Bhc3NlZCBlcnJvciBzaG91bGQgYmUgdW5kZWZp
bmVkIGFzIGl0IHdhcycpOwotICAgIH0KLSAgKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtUmVhZGVy
OiBpZiBzdGFydCByZWplY3RzIHdpdGggbm8gcGFyYW1ldGVyLCBpdCBzaG91bGQgZXJyb3IgdGhl
IHN0cmVhbSB3aXRoIGFuIHVuZGVmaW5lZCBlcnJvcicpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7
Ci0KLSAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICd1bmlxdWUgc3RyaW5nJyB9OwotICBsZXQg
Y29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0
KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcHJv
bWlzZSA9IHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcnMuZ2V0UmVhZGVyKCkuY2xvc2Vk
KTsKLQotICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKLSAgcmV0dXJuIHByb21pc2U7Ci0K
LX0sICdFcnJvcmluZyBhIFJlYWRhYmxlU3RyZWFtIGFmdGVyIGNoZWNraW5nIGNsb3NlZCBzaG91
bGQgcmVqZWN0IFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBwcm9taXNlJyk7Ci0KLXByb21p
c2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCB0aGVFcnJvciA9IHsgbmFtZTogJ3VuaXF1ZSBzdHJp
bmcnIH07Ci0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9KTsK
LQotICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKLQotICAvLyBMZXQncyBjYWxsIGdldFJl
YWRlciB0d2ljZSBmb3IgZXh0cmEgdGVzdCBjb3ZlcmFnZSBvZiB0aGlzIGNvZGUgcGF0aC4KLSAg
cnMuZ2V0UmVhZGVyKCkucmVsZWFzZUxvY2soKTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3Rz
KHQsIHRoZUVycm9yLCBycy5nZXRSZWFkZXIoKS5jbG9zZWQpOwotCi19LCAnRXJyb3JpbmcgYSBS
ZWFkYWJsZVN0cmVhbSBiZWZvcmUgY2hlY2tpbmcgY2xvc2VkIHNob3VsZCByZWplY3QgUmVhZGFi
bGVTdHJlYW1SZWFkZXIgY2xvc2VkIHByb21pc2UnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsK
LQotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewot
ICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0gIGNv
bnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gIGNvbnN0IHByb21pc2UgPSBQcm9taXNl
LmFsbChbCi0gICAgcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICBhc3NlcnRf
b2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAn
cmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2UgKDEpJyk7Ci0gICAgfSksCi0gICAgcmVh
ZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhy
ZXN1bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBm
dWxmaWxsIHdpdGggY2xvc2UgKDIpJyk7Ci0gICAgfSksCi0gICAgcmVhZGVyLmNsb3NlZAotICBd
KTsKLQotICBjb250cm9sbGVyLmNsb3NlKCk7Ci0gIHJldHVybiBwcm9taXNlOwotCi19LCAnUmVh
ZGluZyB0d2ljZSBvbiBhIHN0cmVhbSB0aGF0IGdldHMgY2xvc2VkJyk7Ci0KLXByb21pc2VfdGVz
dCgoKSA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0g
IH0pOwotCi0gIGNvbnRyb2xsZXIuY2xvc2UoKTsKLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVh
ZGVyKCk7Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICByZWFkZXIucmVhZCgpLnRoZW4o
cmVzdWx0ID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTog
dW5kZWZpbmVkLCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCBjbG9z
ZSAoMSknKTsKLSAgICB9KSwKLSAgICByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKLSAg
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25l
OiB0cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCBjbG9zZSAoMiknKTsKLSAgICB9
KSwKLSAgICByZWFkZXIuY2xvc2VkCi0gIF0pOwotCi19LCAnUmVhZGluZyB0d2ljZSBvbiBhIGNs
b3NlZCBzdHJlYW0nKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGxldCBjb250cm9sbGVy
OwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAg
ICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBteUVycm9yID0geyBu
YW1lOiAnbWFzaGVkIHBvdGF0b2VzJyB9OwotICBjb250cm9sbGVyLmVycm9yKG15RXJyb3IpOwot
Ci0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gIHJldHVybiBQcm9taXNlLmFs
bChbCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIG15RXJyb3IsIHJlYWRlci5yZWFkKCkpLAotICAg
IHByb21pc2VfcmVqZWN0cyh0LCBteUVycm9yLCByZWFkZXIucmVhZCgpKSwKLSAgICBwcm9taXNl
X3JlamVjdHModCwgbXlFcnJvciwgcmVhZGVyLmNsb3NlZCkKLSAgXSk7Ci0KLX0sICdSZWFkaW5n
IHR3aWNlIG9uIGFuIGVycm9yZWQgc3RyZWFtJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQot
ICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAg
IHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0KLSAgY29u
c3QgbXlFcnJvciA9IHsgbmFtZTogJ21hc2hlZCBwb3RhdG9lcycgfTsKLSAgY29uc3QgcmVhZGVy
ID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UuYWxsKFsKLSAg
ICBwcm9taXNlX3JlamVjdHModCwgbXlFcnJvciwgcmVhZGVyLnJlYWQoKSksCi0gICAgcHJvbWlz
ZV9yZWplY3RzKHQsIG15RXJyb3IsIHJlYWRlci5yZWFkKCkpLAotICAgIHByb21pc2VfcmVqZWN0
cyh0LCBteUVycm9yLCByZWFkZXIuY2xvc2VkKQotICBdKTsKLQotICBjb250cm9sbGVyLmVycm9y
KG15RXJyb3IpOwotICByZXR1cm4gcHJvbWlzZTsKLQotfSwgJ1JlYWRpbmcgdHdpY2Ugb24gYSBz
dHJlYW0gdGhhdCBnZXRzIGVycm9yZWQnKTsKLQotZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJs
ZS1zdHJlYW1zL3RlZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVlLWV4cGVjdGVk
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjZiZDE5OTFjYWMyMDhmZTRhNjVi
OWQwYWNiMDc4Y2YwZmZjNTM5Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDI0ICswLDAgQEAKLQotUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHJzLnRlZSgp
IHJldHVybnMgYW4gYXJyYXkgb2YgdHdvIFJlYWRhYmxlU3RyZWFtcyAKLVBBU1MgUmVhZGFibGVT
dHJlYW0gdGVlaW5nOiBzaG91bGQgYmUgYWJsZSB0byByZWFkIG9uZSBicmFuY2ggdG8gdGhlIGVu
ZCB3aXRob3V0IGFmZmVjdGluZyB0aGUgb3RoZXIgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWlu
ZzogdmFsdWVzIHNob3VsZCBiZSBlcXVhbCBhY3Jvc3MgZWFjaCBicmFuY2ggCi1QQVNTIFJlYWRh
YmxlU3RyZWFtIHRlZWluZzogZXJyb3JzIGluIHRoZSBzb3VyY2Ugc2hvdWxkIHByb3BhZ2F0ZSB0
byBib3RoIGJyYW5jaGVzIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBi
cmFuY2gxIHNob3VsZCBub3QgaW1wYWN0IGJyYW5jaDIgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHRl
ZWluZzogY2FuY2VsaW5nIGJyYW5jaDIgc2hvdWxkIG5vdCBpbXBhY3QgYnJhbmNoMiAKLVBBU1Mg
UmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYm90aCBicmFuY2hlcyBzaG91bGQgYWdn
cmVnYXRlIHRoZSBjYW5jZWwgcmVhc29ucyBpbnRvIGFuIGFycmF5IAotUEFTUyBSZWFkYWJsZVN0
cmVhbSB0ZWVpbmc6IGZhaWxpbmcgdG8gY2FuY2VsIHRoZSBvcmlnaW5hbCBzdHJlYW0gc2hvdWxk
IGNhdXNlIGNhbmNlbCgpIHRvIHJlamVjdCBvbiBicmFuY2hlcyAKLVBBU1MgUmVhZGFibGVTdHJl
YW0gdGVlaW5nOiBjbG9zaW5nIHRoZSBvcmlnaW5hbCBzaG91bGQgaW1tZWRpYXRlbHkgY2xvc2Ug
dGhlIGJyYW5jaGVzIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGVycm9yaW5nIHRoZSBv
cmlnaW5hbCBzaG91bGQgaW1tZWRpYXRlbHkgZXJyb3IgdGhlIGJyYW5jaGVzIAotRkFJTCBMb2Fk
IHRlZS5qcyB3aXRoIFNoYXJlZFdvcmtlciBhc3NlcnRfdW5yZWFjaGVkOiBTaGFyZWRXb3JrZXIg
aXMgdW5hdmFpbGFibGUgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCi1GQUlMIFVudGl0bGVkIHVu
ZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICduYXZpZ2F0b3Iuc2VydmljZVdv
cmtlci5nZXRSZWdpc3RyYXRpb24nKQotUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHJzLnRl
ZSgpIHJldHVybnMgYW4gYXJyYXkgb2YgdHdvIFJlYWRhYmxlU3RyZWFtcyAKLVBBU1MgUmVhZGFi
bGVTdHJlYW0gdGVlaW5nOiBzaG91bGQgYmUgYWJsZSB0byByZWFkIG9uZSBicmFuY2ggdG8gdGhl
IGVuZCB3aXRob3V0IGFmZmVjdGluZyB0aGUgb3RoZXIgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHRl
ZWluZzogdmFsdWVzIHNob3VsZCBiZSBlcXVhbCBhY3Jvc3MgZWFjaCBicmFuY2ggCi1QQVNTIFJl
YWRhYmxlU3RyZWFtIHRlZWluZzogZXJyb3JzIGluIHRoZSBzb3VyY2Ugc2hvdWxkIHByb3BhZ2F0
ZSB0byBib3RoIGJyYW5jaGVzIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGlu
ZyBicmFuY2gxIHNob3VsZCBub3QgaW1wYWN0IGJyYW5jaDIgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
IHRlZWluZzogY2FuY2VsaW5nIGJyYW5jaDIgc2hvdWxkIG5vdCBpbXBhY3QgYnJhbmNoMiAKLVBB
U1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYm90aCBicmFuY2hlcyBzaG91bGQg
YWdncmVnYXRlIHRoZSBjYW5jZWwgcmVhc29ucyBpbnRvIGFuIGFycmF5IAotUEFTUyBSZWFkYWJs
ZVN0cmVhbSB0ZWVpbmc6IGZhaWxpbmcgdG8gY2FuY2VsIHRoZSBvcmlnaW5hbCBzdHJlYW0gc2hv
dWxkIGNhdXNlIGNhbmNlbCgpIHRvIHJlamVjdCBvbiBicmFuY2hlcyAKLVBBU1MgUmVhZGFibGVT
dHJlYW0gdGVlaW5nOiBjbG9zaW5nIHRoZSBvcmlnaW5hbCBzaG91bGQgaW1tZWRpYXRlbHkgY2xv
c2UgdGhlIGJyYW5jaGVzIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGVycm9yaW5nIHRo
ZSBvcmlnaW5hbCBzaG91bGQgaW1tZWRpYXRlbHkgZXJyb3IgdGhlIGJyYW5jaGVzIAotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyYzg0N2I4MTE3OGFkMGM1MGJhYWMw
OWQ3YjFjZGM2ODgyOTMyZDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3RlZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIu
anMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJ0ZWUuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLSd1c2Ug
c3RyaWN0JzsKLXdvcmtlcl90ZXN0KCd0ZWUuanMnKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9y
ZWFkYWJsZS1zdHJlYW1zL3RlZS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy90ZWUuanMKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4NWYyYWY3YWI1Y2U0ZmZiNjljOTVmOGE4YmU1NGRmYTFl
MmVkMDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFk
YWJsZS1zdHJlYW1zL3RlZS5qcworKysgL2Rldi9udWxsCkBAIC0xLDI1NCArMCwwIEBACi0ndXNl
IHN0cmljdCc7Ci0KLWlmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBvcnRTY3Jp
cHRzKCcuLi9yZXNvdXJjZXMvcnMtdXRpbHMuanMnKTsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci0gIGNvbnN0IHJlc3VsdCA9IHJzLnRlZSgpOwot
Ci0gIGFzc2VydF90cnVlKEFycmF5LmlzQXJyYXkocmVzdWx0KSwgJ3JldHVybiB2YWx1ZSBzaG91
bGQgYmUgYW4gYXJyYXknKTsKLSAgYXNzZXJ0X2VxdWFscyhyZXN1bHQubGVuZ3RoLCAyLCAnYXJy
YXkgc2hvdWxkIGhhdmUgbGVuZ3RoIDInKTsKLSAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbMF0uY29u
c3RydWN0b3IsIFJlYWRhYmxlU3RyZWFtLCAnMHRoIGVsZW1lbnQgc2hvdWxkIGJlIGEgUmVhZGFi
bGVTdHJlYW0nKTsKLSAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbMV0uY29uc3RydWN0b3IsIFJlYWRh
YmxlU3RyZWFtLCAnMXN0IGVsZW1lbnQgc2hvdWxkIGJlIGEgUmVhZGFibGVTdHJlYW0nKTsKLQot
fSwgJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogcnMudGVlKCkgcmV0dXJucyBhbiBhcnJheSBvZiB0
d28gUmVhZGFibGVTdHJlYW1zJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBy
cyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lbnF1ZXVl
KCdhJyk7Ci0gICAgICBjLmVucXVldWUoJ2InKTsKLSAgICAgIGMuY2xvc2UoKTsKLSAgICB9Ci0g
IH0pOwotCi0gIGNvbnN0IGJyYW5jaCA9IHJzLnRlZSgpOwotICBjb25zdCBicmFuY2gxID0gYnJh
bmNoWzBdOwotICBjb25zdCBicmFuY2gyID0gYnJhbmNoWzFdOwotICBjb25zdCByZWFkZXIxID0g
YnJhbmNoMS5nZXRSZWFkZXIoKTsKLSAgY29uc3QgcmVhZGVyMiA9IGJyYW5jaDIuZ2V0UmVhZGVy
KCk7Ci0KLSAgcmVhZGVyMi5jbG9zZWQudGhlbih0LnVucmVhY2hlZF9mdW5jKCdicmFuY2gyIHNo
b3VsZCBub3QgYmUgY2xvc2VkJykpOwotCi0gIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgcmVh
ZGVyMS5jbG9zZWQsCi0gICAgcmVhZGVyMS5yZWFkKCkudGhlbihyID0+IHsKLSAgICAgIGFzc2Vy
dF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IGNo
dW5rIGZyb20gYnJhbmNoMSBzaG91bGQgYmUgY29ycmVjdCcpOwotICAgIH0pLAotICAgIHJlYWRl
cjEucmVhZCgpLnRoZW4ociA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZh
bHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sICdzZWNvbmQgY2h1bmsgZnJvbSBicmFuY2gxIHNob3Vs
ZCBiZSBjb3JyZWN0Jyk7Ci0gICAgfSksCi0gICAgcmVhZGVyMS5yZWFkKCkudGhlbihyID0+IHsK
LSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTog
dHJ1ZSB9LCAndGhpcmQgcmVhZCgpIGZyb20gYnJhbmNoMSBzaG91bGQgYmUgZG9uZScpOwotICAg
IH0pLAotICAgIHJlYWRlcjIucmVhZCgpLnRoZW4ociA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0
X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdmaXJzdCBjaHVuayBmcm9t
IGJyYW5jaDIgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLSAgICB9KQotICBdKTsKLQotfSwgJ1JlYWRh
YmxlU3RyZWFtIHRlZWluZzogc2hvdWxkIGJlIGFibGUgdG8gcmVhZCBvbmUgYnJhbmNoIHRvIHRo
ZSBlbmQgd2l0aG91dCBhZmZlY3RpbmcgdGhlIG90aGVyJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9
PiB7Ci0KLSAgY29uc3QgdGhlT2JqZWN0ID0geyB0aGU6ICd0ZXN0IG9iamVjdCcgfTsKLSAgY29u
c3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5x
dWV1ZSh0aGVPYmplY3QpOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgYnJhbmNoID0gcnMudGVl
KCk7Ci0gIGNvbnN0IGJyYW5jaDEgPSBicmFuY2hbMF07Ci0gIGNvbnN0IGJyYW5jaDIgPSBicmFu
Y2hbMV07Ci0gIGNvbnN0IHJlYWRlcjEgPSBicmFuY2gxLmdldFJlYWRlcigpOwotICBjb25zdCBy
ZWFkZXIyID0gYnJhbmNoMi5nZXRSZWFkZXIoKTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoW3Jl
YWRlcjEucmVhZCgpLCByZWFkZXIyLnJlYWQoKV0pLnRoZW4odmFsdWVzID0+IHsKLSAgICBhc3Nl
cnRfb2JqZWN0X2VxdWFscyh2YWx1ZXNbMF0sIHZhbHVlc1sxXSwgJ3RoZSB2YWx1ZXMgc2hvdWxk
IGJlIGVxdWFsJyk7Ci0gIH0pOwotCi19LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiB2YWx1ZXMg
c2hvdWxkIGJlIGVxdWFsIGFjcm9zcyBlYWNoIGJyYW5jaCcpOwotCi1wcm9taXNlX3Rlc3QodCA9
PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICdib28hJyB9OwotICBjb25zdCBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lbnF1ZXVlKCdh
Jyk7Ci0gICAgICBjLmVucXVldWUoJ2InKTsKLSAgICB9LAotICAgIHB1bGwoKSB7Ci0gICAgICB0
aHJvdyB0aGVFcnJvcjsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IGJyYW5jaGVzID0gcnMudGVl
KCk7Ci0gIGNvbnN0IHJlYWRlcjEgPSBicmFuY2hlc1swXS5nZXRSZWFkZXIoKTsKLSAgY29uc3Qg
cmVhZGVyMiA9IGJyYW5jaGVzWzFdLmdldFJlYWRlcigpOwotCi0gIHJlYWRlcjEubGFiZWwgPSAn
cmVhZGVyMSc7Ci0gIHJlYWRlcjIubGFiZWwgPSAncmVhZGVyMic7Ci0KLSAgcmV0dXJuIFByb21p
c2UuYWxsKFsKLSAgICBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJlYWRlcjEuY2xvc2Vk
KSwKLSAgICBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJlYWRlcjIuY2xvc2VkKSwKLSAg
ICByZWFkZXIxLnJlYWQoKS50aGVuKHIgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMo
ciwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnc2hvdWxkIGJlIGFibGUgdG8gcmVhZCB0
aGUgZmlyc3QgY2h1bmsgaW4gYnJhbmNoMScpOwotICAgIH0pLAotICAgIHJlYWRlcjEucmVhZCgp
LnRoZW4ociA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYics
IGRvbmU6IGZhbHNlIH0sICdzaG91bGQgYmUgYWJsZSB0byByZWFkIHRoZSBzZWNvbmQgY2h1bmsg
aW4gYnJhbmNoMScpOwotCi0gICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9y
LCByZWFkZXIyLnJlYWQoKSk7Ci0gICAgfSkKLSAgICAudGhlbigoKSA9PiBwcm9taXNlX3JlamVj
dHModCwgdGhlRXJyb3IsIHJlYWRlcjEucmVhZCgpKSkKLSAgXSk7Ci0KLX0sICdSZWFkYWJsZVN0
cmVhbSB0ZWVpbmc6IGVycm9ycyBpbiB0aGUgc291cmNlIHNob3VsZCBwcm9wYWdhdGUgdG8gYm90
aCBicmFuY2hlcycpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVucXVldWUoJ2EnKTsK
LSAgICAgIGMuZW5xdWV1ZSgnYicpOwotICAgICAgYy5jbG9zZSgpOwotICAgIH0KLSAgfSk7Ci0K
LSAgY29uc3QgYnJhbmNoZXMgPSBycy50ZWUoKTsKLSAgY29uc3QgYnJhbmNoMSA9IGJyYW5jaGVz
WzBdOwotICBjb25zdCBicmFuY2gyID0gYnJhbmNoZXNbMV07Ci0gIGJyYW5jaDEuY2FuY2VsKCk7
Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICByZWFkYWJsZVN0cmVhbVRvQXJyYXkoYnJh
bmNoMSkudGhlbihjaHVua3MgPT4gewotICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3Ms
IFtdLCAnYnJhbmNoMSBzaG91bGQgaGF2ZSBubyBjaHVua3MnKTsKLSAgICB9KSwKLSAgICByZWFk
YWJsZVN0cmVhbVRvQXJyYXkoYnJhbmNoMikudGhlbihjaHVua3MgPT4gewotICAgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhjaHVua3MsIFsnYScsICdiJ10sICdicmFuY2gyIHNob3VsZCBoYXZlIHR3
byBjaHVua3MnKTsKLSAgICB9KQotICBdKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzog
Y2FuY2VsaW5nIGJyYW5jaDEgc2hvdWxkIG5vdCBpbXBhY3QgYnJhbmNoMicpOwotCi1wcm9taXNl
X3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBz
dGFydChjKSB7Ci0gICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICAgIGMuZW5xdWV1ZSgnYicpOwot
ICAgICAgYy5jbG9zZSgpOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgYnJhbmNoZXMgPSBycy50
ZWUoKTsKLSAgY29uc3QgYnJhbmNoMSA9IGJyYW5jaGVzWzBdOwotICBjb25zdCBicmFuY2gyID0g
YnJhbmNoZXNbMV07Ci0gIGJyYW5jaDIuY2FuY2VsKCk7Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxs
KFsKLSAgICByZWFkYWJsZVN0cmVhbVRvQXJyYXkoYnJhbmNoMSkudGhlbihjaHVua3MgPT4gewot
ICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3MsIFsnYScsICdiJ10sICdicmFuY2gxIHNo
b3VsZCBoYXZlIHR3byBjaHVua3MnKTsKLSAgICB9KSwKLSAgICByZWFkYWJsZVN0cmVhbVRvQXJy
YXkoYnJhbmNoMikudGhlbihjaHVua3MgPT4gewotICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhj
aHVua3MsIFtdLCAnYnJhbmNoMiBzaG91bGQgaGF2ZSBubyBjaHVua3MnKTsKLSAgICB9KQotICBd
KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJyYW5jaDIgc2hvdWxk
IG5vdCBpbXBhY3QgYnJhbmNoMicpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0
IHJlYXNvbjEgPSBuZXcgRXJyb3IoJ1dlXCdyZSB3YW50ZWQgbWVuLicpOwotICBjb25zdCByZWFz
b24yID0gbmV3IEVycm9yKCdJIGhhdmUgdGhlIGRlYXRoIHNlbnRlbmNlIG9uIHR3ZWx2ZSBzeXN0
ZW1zLicpOwotCi0gIGxldCByZXNvbHZlOwotICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2Uo
ciA9PiByZXNvbHZlID0gcik7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAg
ICBjYW5jZWwocmVhc29uKSB7Ci0gICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJlYXNvbiwgW3Jl
YXNvbjEsIHJlYXNvbjJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAndGhlIGNhbmNlbCBy
ZWFzb24gc2hvdWxkIGJlIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhvc2UgZnJvbSB0aGUgYnJhbmNo
ZXMnKTsKLSAgICAgIHJlc29sdmUoKTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IGJyYW5jaCA9
IHJzLnRlZSgpOwotICBjb25zdCBicmFuY2gxID0gYnJhbmNoWzBdOwotICBjb25zdCBicmFuY2gy
ID0gYnJhbmNoWzFdOwotICBicmFuY2gxLmNhbmNlbChyZWFzb24xKTsKLSAgYnJhbmNoMi5jYW5j
ZWwocmVhc29uMik7Ci0KLSAgcmV0dXJuIHByb21pc2U7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSB0
ZWVpbmc6IGNhbmNlbGluZyBib3RoIGJyYW5jaGVzIHNob3VsZCBhZ2dyZWdhdGUgdGhlIGNhbmNl
bCByZWFzb25zIGludG8gYW4gYXJyYXknKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNv
bnN0IHRoZUVycm9yID0geyBuYW1lOiAnSVwnbGwgYmUgY2FyZWZ1bC4nIH07Ci0gIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBjYW5jZWwoKSB7Ci0gICAgICB0aHJvdyB0aGVF
cnJvcjsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IGJyYW5jaCA9IHJzLnRlZSgpOwotICBjb25z
dCBicmFuY2gxID0gYnJhbmNoWzBdOwotICBjb25zdCBicmFuY2gyID0gYnJhbmNoWzFdOwotCi0g
IHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCBi
cmFuY2gxLmNhbmNlbCgpKSwKLSAgICBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIGJyYW5j
aDIuY2FuY2VsKCkpCi0gIF0pOwotCi19LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBmYWlsaW5n
IHRvIGNhbmNlbCB0aGUgb3JpZ2luYWwgc3RyZWFtIHNob3VsZCBjYXVzZSBjYW5jZWwoKSB0byBy
ZWplY3Qgb24gYnJhbmNoZXMnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgY29u
dHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMp
IHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgYnJhbmNo
ZXMgPSBycy50ZWUoKTsKLSAgY29uc3QgcmVhZGVyMSA9IGJyYW5jaGVzWzBdLmdldFJlYWRlcigp
OwotICBjb25zdCByZWFkZXIyID0gYnJhbmNoZXNbMV0uZ2V0UmVhZGVyKCk7Ci0KLSAgY29uc3Qg
cHJvbWlzZSA9IFByb21pc2UuYWxsKFtyZWFkZXIxLmNsb3NlZCwgcmVhZGVyMi5jbG9zZWRdKTsK
LQotICBjb250cm9sbGVyLmNsb3NlKCk7Ci0gIHJldHVybiBwcm9taXNlOwotCi19LCAnUmVhZGFi
bGVTdHJlYW0gdGVlaW5nOiBjbG9zaW5nIHRoZSBvcmlnaW5hbCBzaG91bGQgaW1tZWRpYXRlbHkg
Y2xvc2UgdGhlIGJyYW5jaGVzJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBsZXQgY29u
dHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMp
IHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgYnJhbmNo
ZXMgPSBycy50ZWUoKTsKLSAgY29uc3QgcmVhZGVyMSA9IGJyYW5jaGVzWzBdLmdldFJlYWRlcigp
OwotICBjb25zdCByZWFkZXIyID0gYnJhbmNoZXNbMV0uZ2V0UmVhZGVyKCk7Ci0KLSAgY29uc3Qg
dGhlRXJyb3IgPSB7IG5hbWU6ICdib28hJyB9OwotICBjb25zdCBwcm9taXNlID0gUHJvbWlzZS5h
bGwoWwotICAgIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcmVhZGVyMS5jbG9zZWQpLAot
ICAgIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcmVhZGVyMi5jbG9zZWQpCi0gIF0pOwot
Ci0gIGNvbnRyb2xsZXIuZXJyb3IodGhlRXJyb3IpOwotICByZXR1cm4gcHJvbWlzZTsKLQotfSwg
J1JlYWRhYmxlU3RyZWFtIHRlZWluZzogZXJyb3JpbmcgdGhlIG9yaWdpbmFsIHNob3VsZCBpbW1l
ZGlhdGVseSBlcnJvciB0aGUgYnJhbmNoZXMnKTsKLQotZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFk
YWJsZS1zdHJlYW1zL3RlbXBsYXRlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVt
cGxhdGVkLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTk5N2Jk
MmFmZGFiYmYyNjc3YTRjNDczNDU1ZWM2OWYwMjM3Y2I0Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE3NCArMCwwIEBACi0KLVBBU1MgUnVubmluZyB0
ZW1wbGF0ZWRSU0VtcHR5IHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5KSAKLVBBU1MgaW5zdGFu
Y2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBhbmQgcHJvcGVydGllcyAKLVBBU1MgUnVubmlu
ZyB0ZW1wbGF0ZWRSU0VtcHR5UmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFk
ZXIgCi1QQVNTIGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRp
ZXMgCi1QQVNTIGxvY2tlZCBzaG91bGQgYmUgdHJ1ZSAKLVBBU1MgcmVhZCgpIHNob3VsZCBuZXZl
ciBzZXR0bGUgCi1QQVNTIHR3byByZWFkKClzIHNob3VsZCBib3RoIG5ldmVyIHNldHRsZSAKLVBB
U1MgcmVhZCgpIHNob3VsZCByZXR1cm4gZGlzdGluY3QgcHJvbWlzZXMgZWFjaCB0aW1lIAotUEFT
UyBnZXRSZWFkZXIoKSBhZ2FpbiBvbiB0aGUgc3RyZWFtIHNob3VsZCBmYWlsIAotUEFTUyByZWxl
YXNpbmcgdGhlIGxvY2sgd2l0aCBwZW5kaW5nIHJlYWQgcmVxdWVzdHMgc2hvdWxkIHRocm93IGJ1
dCB0aGUgcmVhZCByZXF1ZXN0cyBzaG91bGQgc3RheSBwZW5kaW5nIAotUEFTUyByZWxlYXNpbmcg
dGhlIGxvY2sgc2hvdWxkIGNhdXNlIGZ1cnRoZXIgcmVhZCgpIGNhbGxzIHRvIHJlamVjdCB3aXRo
IGEgVHlwZUVycm9yIAotUEFTUyByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3Nl
ZCBjYWxscyB0byByZWplY3Qgd2l0aCBhIFR5cGVFcnJvciAKLVBBU1MgcmVsZWFzaW5nIHRoZSBs
b2NrIHNob3VsZCBjYXVzZSBsb2NrZWQgdG8gYmVjb21lIGZhbHNlIAotUEFTUyBjYW5jZWxpbmcg
dmlhIHRoZSByZWFkZXIgc2hvdWxkIGNhdXNlIHRoZSByZWFkZXIgdG8gYWN0IGNsb3NlZCAKLVBB
U1MgY2FuY2VsaW5nIHZpYSB0aGUgc3RyZWFtIHNob3VsZCBmYWlsIAotUEFTUyBSdW5uaW5nIHRl
bXBsYXRlZFJTQ2xvc2VkIHdpdGggUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBz
dGFydCkgCi1QQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQg
cHJvbWlzZSBlYWNoIHRpbWUgCi1QQVNTIGxvY2tlZCBzaG91bGQgYmUgZmFsc2UgCi1QQVNTIGdl
dFJlYWRlcigpIHNob3VsZCBiZSBPSyAKLVBBU1Mgc2hvdWxkIGJlIGFibGUgdG8gYWNxdWlyZSBt
dWx0aXBsZSByZWFkZXJzIGlmIHRoZXkgYXJlIHJlbGVhc2VkIGluIHN1Y2Nlc3Npb24gCi1QQVNT
IHNob3VsZCBub3QgYmUgYWJsZSB0byBhY3F1aXJlIGEgc2Vjb25kIHJlYWRlciBpZiB3ZSBkb24n
dCByZWxlYXNlIHRoZSBmaXJzdCBvbmUgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRS
ZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUgZ2V0dGluZyBy
ZWFkZXIpIAotUEFTUyByZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmlu
ZWQsIGRvbmU6IHRydWUgfSAKLVBBU1MgcmVhZCgpIG11bHRpcGxlIHRpbWVzIHNob3VsZCBmdWxm
aWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCi1QQVNTIHJlYWQoKSBz
aG91bGQgd29yayB3aGVuIHVzZWQgd2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZpbGwgY2FsbGJh
Y2sgCi1QQVNTIGNsb3NlZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCAKLVBBU1MgcmVs
ZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2Ug
aWRlbnRpdHkgCi1QQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxs
ZWQgcHJvbWlzZSBlYWNoIHRpbWUgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFk
ZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJlYWRl
cikgCi1QQVNTIHJlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwg
ZG9uZTogdHJ1ZSB9IAotUEFTUyByZWFkKCkgbXVsdGlwbGUgdGltZXMgc2hvdWxkIGZ1bGZpbGwg
d2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKLVBBU1MgcmVhZCgpIHNob3Vs
ZCB3b3JrIHdoZW4gdXNlZCB3aXRoaW4gYW5vdGhlciByZWFkKCkgZnVsZmlsbCBjYWxsYmFjayAK
LVBBU1MgY2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkIAotUEFTUyByZWxlYXNp
bmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVu
dGl0eSAKLVBBU1MgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBw
cm9taXNlIGVhY2ggdGltZSAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZCB3aXRoIFJl
YWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbmNlbCkgCi1QQVNTIGNhbmNlbCgpIHNob3VsZCBy
ZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgCi1QQVNTIGxvY2tl
ZCBzaG91bGQgYmUgZmFsc2UgCi1QQVNTIGdldFJlYWRlcigpIHNob3VsZCBiZSBPSyAKLVBBU1Mg
c2hvdWxkIGJlIGFibGUgdG8gYWNxdWlyZSBtdWx0aXBsZSByZWFkZXJzIGlmIHRoZXkgYXJlIHJl
bGVhc2VkIGluIHN1Y2Nlc3Npb24gCi1QQVNTIHNob3VsZCBub3QgYmUgYWJsZSB0byBhY3F1aXJl
IGEgc2Vjb25kIHJlYWRlciBpZiB3ZSBkb24ndCByZWxlYXNlIHRoZSBmaXJzdCBvbmUgCi1QQVNT
IFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFk
ZXIgKGNsb3NlZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcgcmVhZGVyKSAKLVBBU1MgcmVhZCgp
IHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCi1Q
QVNTIHJlYWQoKSBtdWx0aXBsZSB0aW1lcyBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVu
ZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAotUEFTUyByZWFkKCkgc2hvdWxkIHdvcmsgd2hlbiB1c2Vk
IHdpdGhpbiBhbm90aGVyIHJlYWQoKSBmdWxmaWxsIGNhbGxiYWNrIAotUEFTUyBjbG9zZWQgc2hv
dWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQgCi1QQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91
bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IAotUEFTUyBjYW5j
ZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1l
IAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChl
cnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KSAKLVBBU1MgZ2V0UmVhZGVyKCkgc2hvdWxkIHJldHVy
biBhIHJlYWRlciB0aGF0IGFjdHMgZXJyb3JlZCAKLVBBU1MgcmVhZCgpIHR3aWNlIHNob3VsZCBn
aXZlIHRoZSBlcnJvciBlYWNoIHRpbWUgCi1QQVNTIGxvY2tlZCBzaG91bGQgYmUgZmFsc2UgCi1Q
QVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHkgd2l0aCBSZWFkYWJsZVN0cmVh
bSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCkgCi1QQVNTIHNob3VsZCBiZSBhYmxlIHRvIG9i
dGFpbiBhIHNlY29uZCByZWFkZXIsIHdpdGggdGhlIGNvcnJlY3QgY2xvc2VkIHByb21pc2UgCi1Q
QVNTIHNob3VsZCBub3QgYmUgYWJsZSB0byBvYnRhaW4gYWRkaXRpb25hbCByZWFkZXJzIGlmIHdl
IGRvbid0IHJlbGVhc2UgdGhlIGZpcnN0IGxvY2sgCi1QQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1
cm4gYSBkaXN0aW5jdCByZWplY3RlZCBwcm9taXNlIGVhY2ggdGltZSAKLVBBU1MgcmVhZGVyIGNh
bmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCByZWplY3RlZCBwcm9taXNlIGVhY2ggdGlt
ZSAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAo
ZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgCi1QQVNT
IGdldFJlYWRlcigpIHNob3VsZCByZXR1cm4gYSByZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQgCi1Q
QVNTIHJlYWQoKSB0d2ljZSBzaG91bGQgZ2l2ZSB0aGUgZXJyb3IgZWFjaCB0aW1lIAotUEFTUyBs
b2NrZWQgc2hvdWxkIGJlIGZhbHNlIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJl
YWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3Rl
ZCBwcm9taXNlIGluIHN0YXJ0KSByZWFkZXIgCi1QQVNTIGNsb3NlZCBzaG91bGQgcmVqZWN0IHdp
dGggdGhlIGVycm9yIAotUEFTUyByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3Nl
ZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKLVBBU1MgcmVhZCgpIHNob3VsZCByZWpl
Y3Qgd2l0aCB0aGUgZXJyb3IgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVy
IHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGJlZm9yZSBnZXR0aW5nIHJlYWRl
cikgCi1QQVNTIGNsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAotUEFTUyByZWxl
YXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBp
ZGVudGl0eSAKLVBBU1MgcmVhZCgpIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCi1QQVNT
IFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVh
ZGVyIChlcnJvcmVkIGFmdGVyIGdldHRpbmcgcmVhZGVyKSAKLVBBU1MgY2xvc2VkIHNob3VsZCBy
ZWplY3Qgd2l0aCB0aGUgZXJyb3IgCi1QQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1
c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IAotUEFTUyByZWFkKCkgc2hv
dWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU1R3b0No
dW5rc09wZW5SZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwg
c3RpbGwgb3BlbikgcmVhZGVyIAotUEFTUyBjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdh
aXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MgKHNlcXVlbnRpYWwpIAotUEFT
UyBjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdp
dmUgYm90aCBjaHVua3MgKG5lc3RlZCkgCi1QQVNTIHJlYWQoKSBzaG91bGQgcmV0dXJuIGRpc3Rp
bmN0IHByb21pc2VzIGVhY2ggdGltZSAKLVBBU1MgY2FuY2VsKCkgYWZ0ZXIgYSByZWFkKCkgc2hv
dWxkIHN0aWxsIGdpdmUgdGhhdCBzaW5nbGUgcmVhZCByZXN1bHQgCi1QQVNTIFJ1bm5pbmcgdGVt
cGxhdGVkUlNUd29DaHVua3NDbG9zZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAodHdvIGNo
dW5rcyBlbnF1ZXVlZCwgdGhlbiBjbG9zZWQpIHJlYWRlciAKLVBBU1MgdGhpcmQgcmVhZCgpLCB3
aXRob3V0IHdhaXRpbmcsIHNob3VsZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1
ZSB9IChzZXF1ZW50aWFsKSAKLVBBU1MgdGhpcmQgcmVhZCgpLCB3aXRob3V0IHdhaXRpbmcsIHNo
b3VsZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IChuZXN0ZWQpIAotUEFT
UyBkcmFpbmluZyB0aGUgc3RyZWFtIHZpYSByZWFkKCkgc2hvdWxkIGNhdXNlIHRoZSByZWFkZXIg
Y2xvc2VkIHByb21pc2UgdG8gZnVsZmlsbCwgYnV0IGxvY2tlZCBzdGF5cyB0cnVlIAotUEFTUyBy
ZWxlYXNpbmcgdGhlIGxvY2sgYWZ0ZXIgdGhlIHN0cmVhbSBpcyBjbG9zZWQgc2hvdWxkIGNhdXNl
IGxvY2tlZCB0byBiZWNvbWUgZmFsc2UgCi1QQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQg
Y2F1c2UgZnVydGhlciByZWFkKCkgY2FsbHMgdG8gcmVqZWN0IHdpdGggYSBUeXBlRXJyb3IgCi1Q
QVNTIHJlYWRlcidzIGNsb3NlZCBwcm9wZXJ0eSBhbHdheXMgcmV0dXJucyB0aGUgc2FtZSBwcm9t
aXNlIAotRkFJTCBMb2FkIHRlbXBsYXRlZC5qcyB3aXRoIFNoYXJlZFdvcmtlciBhc3NlcnRfdW5y
ZWFjaGVkOiBTaGFyZWRXb3JrZXIgaXMgdW5hdmFpbGFibGUgUmVhY2hlZCB1bnJlYWNoYWJsZSBj
b2RlCi1GQUlMIFVudGl0bGVkIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5n
ICduYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdpc3RyYXRpb24nKQotUEFTUyBSdW5uaW5n
IHRlbXBsYXRlZFJTRW1wdHkgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIAotUEFTUyBpbnN0
YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIAotUEFTUyBSdW5u
aW5nIHRlbXBsYXRlZFJTRW1wdHlSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJl
YWRlciAKLVBBU1MgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBhbmQgcHJvcGVy
dGllcyAKLVBBU1MgbG9ja2VkIHNob3VsZCBiZSB0cnVlIAotUEFTUyByZWFkKCkgc2hvdWxkIG5l
dmVyIHNldHRsZSAKLVBBU1MgdHdvIHJlYWQoKXMgc2hvdWxkIGJvdGggbmV2ZXIgc2V0dGxlIAot
UEFTUyByZWFkKCkgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcyBlYWNoIHRpbWUgCi1Q
QVNTIGdldFJlYWRlcigpIGFnYWluIG9uIHRoZSBzdHJlYW0gc2hvdWxkIGZhaWwgCi1QQVNTIHJl
bGVhc2luZyB0aGUgbG9jayB3aXRoIHBlbmRpbmcgcmVhZCByZXF1ZXN0cyBzaG91bGQgdGhyb3cg
YnV0IHRoZSByZWFkIHJlcXVlc3RzIHNob3VsZCBzdGF5IHBlbmRpbmcgCi1QQVNTIHJlbGVhc2lu
ZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgZnVydGhlciByZWFkKCkgY2FsbHMgdG8gcmVqZWN0IHdp
dGggYSBUeXBlRXJyb3IgCi1QQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xv
c2VkIGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yIAotUEFTUyByZWxlYXNpbmcgdGhl
IGxvY2sgc2hvdWxkIGNhdXNlIGxvY2tlZCB0byBiZWNvbWUgZmFsc2UgCi1QQVNTIGNhbmNlbGlu
ZyB2aWEgdGhlIHJlYWRlciBzaG91bGQgY2F1c2UgdGhlIHJlYWRlciB0byBhY3QgY2xvc2VkIAot
UEFTUyBjYW5jZWxpbmcgdmlhIHRoZSBzdHJlYW0gc2hvdWxkIGZhaWwgCi1QQVNTIFJ1bm5pbmcg
dGVtcGxhdGVkUlNDbG9zZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxsIGlu
IHN0YXJ0KSAKLVBBU1MgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxl
ZCBwcm9taXNlIGVhY2ggdGltZSAKLVBBU1MgbG9ja2VkIHNob3VsZCBiZSBmYWxzZSAKLVBBU1Mg
Z2V0UmVhZGVyKCkgc2hvdWxkIGJlIE9LIAotUEFTUyBzaG91bGQgYmUgYWJsZSB0byBhY3F1aXJl
IG11bHRpcGxlIHJlYWRlcnMgaWYgdGhleSBhcmUgcmVsZWFzZWQgaW4gc3VjY2Vzc2lvbiAKLVBB
U1Mgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGFjcXVpcmUgYSBzZWNvbmQgcmVhZGVyIGlmIHdlIGRv
bid0IHJlbGVhc2UgdGhlIGZpcnN0IG9uZSAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3Nl
ZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGJlZm9yZSBnZXR0aW5n
IHJlYWRlcikgCi1QQVNTIHJlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVm
aW5lZCwgZG9uZTogdHJ1ZSB9IAotUEFTUyByZWFkKCkgbXVsdGlwbGUgdGltZXMgc2hvdWxkIGZ1
bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKLVBBU1MgcmVhZCgp
IHNob3VsZCB3b3JrIHdoZW4gdXNlZCB3aXRoaW4gYW5vdGhlciByZWFkKCkgZnVsZmlsbCBjYWxs
YmFjayAKLVBBU1MgY2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkIAotUEFTUyBy
ZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5n
ZSBpZGVudGl0eSAKLVBBU1MgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZp
bGxlZCBwcm9taXNlIGVhY2ggdGltZSAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJl
YWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGFmdGVyIGdldHRpbmcgcmVh
ZGVyKSAKLVBBU1MgcmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVk
LCBkb25lOiB0cnVlIH0gCi1QQVNTIHJlYWQoKSBtdWx0aXBsZSB0aW1lcyBzaG91bGQgZnVsZmls
bCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAotUEFTUyByZWFkKCkgc2hv
dWxkIHdvcmsgd2hlbiB1c2VkIHdpdGhpbiBhbm90aGVyIHJlYWQoKSBmdWxmaWxsIGNhbGxiYWNr
IAotUEFTUyBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQgCi1QQVNTIHJlbGVh
c2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlk
ZW50aXR5IAotUEFTUyBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVk
IHByb21pc2UgZWFjaCB0aW1lIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkIHdpdGgg
UmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKSAKLVBBU1MgY2FuY2VsKCkgc2hvdWxk
IHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZSAKLVBBU1MgbG9j
a2VkIHNob3VsZCBiZSBmYWxzZSAKLVBBU1MgZ2V0UmVhZGVyKCkgc2hvdWxkIGJlIE9LIAotUEFT
UyBzaG91bGQgYmUgYWJsZSB0byBhY3F1aXJlIG11bHRpcGxlIHJlYWRlcnMgaWYgdGhleSBhcmUg
cmVsZWFzZWQgaW4gc3VjY2Vzc2lvbiAKLVBBU1Mgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGFjcXVp
cmUgYSBzZWNvbmQgcmVhZGVyIGlmIHdlIGRvbid0IHJlbGVhc2UgdGhlIGZpcnN0IG9uZSAKLVBB
U1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJl
YWRlciAoY2xvc2VkIHZpYSBjYW5jZWwgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpIAotUEFTUyByZWFk
KCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAK
LVBBU1MgcmVhZCgpIG11bHRpcGxlIHRpbWVzIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTog
dW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCi1QQVNTIHJlYWQoKSBzaG91bGQgd29yayB3aGVuIHVz
ZWQgd2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZpbGwgY2FsbGJhY2sgCi1QQVNTIGNsb3NlZCBz
aG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCAKLVBBU1MgcmVsZWFzaW5nIHRoZSBsb2NrIHNo
b3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkgCi1QQVNTIGNh
bmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRp
bWUgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkIHdpdGggUmVhZGFibGVTdHJlYW0g
KGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpIAotUEFTUyBnZXRSZWFkZXIoKSBzaG91bGQgcmV0
dXJuIGEgcmVhZGVyIHRoYXQgYWN0cyBlcnJvcmVkIAotUEFTUyByZWFkKCkgdHdpY2Ugc2hvdWxk
IGdpdmUgdGhlIGVycm9yIGVhY2ggdGltZSAKLVBBU1MgbG9ja2VkIHNob3VsZCBiZSBmYWxzZSAK
LVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRTeW5jT25seSB3aXRoIFJlYWRhYmxlU3Ry
ZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KSAKLVBBU1Mgc2hvdWxkIGJlIGFibGUgdG8g
b2J0YWluIGEgc2Vjb25kIHJlYWRlciwgd2l0aCB0aGUgY29ycmVjdCBjbG9zZWQgcHJvbWlzZSAK
LVBBU1Mgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIG9idGFpbiBhZGRpdGlvbmFsIHJlYWRlcnMgaWYg
d2UgZG9uJ3QgcmVsZWFzZSB0aGUgZmlyc3QgbG9jayAKLVBBU1MgY2FuY2VsKCkgc2hvdWxkIHJl
dHVybiBhIGRpc3RpbmN0IHJlamVjdGVkIHByb21pc2UgZWFjaCB0aW1lIAotUEFTUyByZWFkZXIg
Y2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IHJlamVjdGVkIHByb21pc2UgZWFjaCB0
aW1lIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZCB3aXRoIFJlYWRhYmxlU3RyZWFt
IChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KSAKLVBB
U1MgZ2V0UmVhZGVyKCkgc2hvdWxkIHJldHVybiBhIHJlYWRlciB0aGF0IGFjdHMgZXJyb3JlZCAK
LVBBU1MgcmVhZCgpIHR3aWNlIHNob3VsZCBnaXZlIHRoZSBlcnJvciBlYWNoIHRpbWUgCi1QQVNT
IGxvY2tlZCBzaG91bGQgYmUgZmFsc2UgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVk
UmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVj
dGVkIHByb21pc2UgaW4gc3RhcnQpIHJlYWRlciAKLVBBU1MgY2xvc2VkIHNob3VsZCByZWplY3Qg
d2l0aCB0aGUgZXJyb3IgCi1QQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xv
c2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IAotUEFTUyByZWFkKCkgc2hvdWxkIHJl
amVjdCB3aXRoIHRoZSBlcnJvciAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFk
ZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQgYmVmb3JlIGdldHRpbmcgcmVh
ZGVyKSAKLVBBU1MgY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCi1QQVNTIHJl
bGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdl
IGlkZW50aXR5IAotUEFTUyByZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciAKLVBB
U1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSBy
ZWFkZXIgKGVycm9yZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpIAotUEFTUyBjbG9zZWQgc2hvdWxk
IHJlamVjdCB3aXRoIHRoZSBlcnJvciAKLVBBU1MgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBj
YXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkgCi1QQVNTIHJlYWQoKSBz
aG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTVHdv
Q2h1bmtzT3BlblJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVk
LCBzdGlsbCBvcGVuKSByZWFkZXIgCi1QQVNTIGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQg
d2FpdGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNodW5rcyAoc2VxdWVudGlhbCkgCi1Q
QVNTIGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2FpdGluZyB3aWxsIGV2ZW50dWFsbHkg
Z2l2ZSBib3RoIGNodW5rcyAobmVzdGVkKSAKLVBBU1MgcmVhZCgpIHNob3VsZCByZXR1cm4gZGlz
dGluY3QgcHJvbWlzZXMgZWFjaCB0aW1lIAotUEFTUyBjYW5jZWwoKSBhZnRlciBhIHJlYWQoKSBz
aG91bGQgc3RpbGwgZ2l2ZSB0aGF0IHNpbmdsZSByZWFkIHJlc3VsdCAKLVBBU1MgUnVubmluZyB0
ZW1wbGF0ZWRSU1R3b0NodW5rc0Nsb3NlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtICh0d28g
Y2h1bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkgcmVhZGVyIAotUEFTUyB0aGlyZCByZWFkKCks
IHdpdGhvdXQgd2FpdGluZywgc2hvdWxkIGdpdmUgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0
cnVlIH0gKHNlcXVlbnRpYWwpIAotUEFTUyB0aGlyZCByZWFkKCksIHdpdGhvdXQgd2FpdGluZywg
c2hvdWxkIGdpdmUgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gKG5lc3RlZCkgCi1Q
QVNTIGRyYWluaW5nIHRoZSBzdHJlYW0gdmlhIHJlYWQoKSBzaG91bGQgY2F1c2UgdGhlIHJlYWRl
ciBjbG9zZWQgcHJvbWlzZSB0byBmdWxmaWxsLCBidXQgbG9ja2VkIHN0YXlzIHRydWUgCi1QQVNT
IHJlbGVhc2luZyB0aGUgbG9jayBhZnRlciB0aGUgc3RyZWFtIGlzIGNsb3NlZCBzaG91bGQgY2F1
c2UgbG9ja2VkIHRvIGJlY29tZSBmYWxzZSAKLVBBU1MgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3Vs
ZCBjYXVzZSBmdXJ0aGVyIHJlYWQoKSBjYWxscyB0byByZWplY3Qgd2l0aCBhIFR5cGVFcnJvciAK
LVBBU1MgcmVhZGVyJ3MgY2xvc2VkIHByb3BlcnR5IGFsd2F5cyByZXR1cm5zIHRoZSBzYW1lIHBy
b21pc2UgCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVh
ZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOTVjNmE2YWNhZWZiNWRhYzU4Yjk1ZjIyODExMDMyZTlhYmE2MmFmYy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxh
dGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2Vycy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3JzLXRlc3QtdGVtcGxhdGVzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSJ0ZW1wbGF0ZWQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLSd1c2Ugc3RyaWN0JzsKLXdvcmtl
cl90ZXN0KCd0ZW1wbGF0ZWQuanMnKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1z
dHJlYW1zL3RlbXBsYXRlZC5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuanMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkYjA0Mjk5OTRkNDUzZGJmY2QyZTgzNDdlNmZhN2Vm
ZGYyMGJjNGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9y
ZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5qcworKysgL2Rldi9udWxsCkBAIC0xLDE0OCArMCww
IEBACi0ndXNlIHN0cmljdCc7Ci0KLWlmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKLSAgc2VsZi5p
bXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0
U2NyaXB0cygnLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMnKTsKLSAgc2VsZi5pbXBvcnRTY3Jp
cHRzKCcuLi9yZXNvdXJjZXMvcnMtdGVzdC10ZW1wbGF0ZXMuanMnKTsKLX0KLQotLy8gUnVuIHRo
ZSByZWFkYWJsZSBzdHJlYW0gdGVzdCB0ZW1wbGF0ZXMgYWdhaW5zdCByZWFkYWJsZSBzdHJlYW1z
IGNyZWF0ZWQgZGlyZWN0bHkgdXNpbmcgdGhlIGNvbnN0cnVjdG9yCi0KLWNvbnN0IHRoZUVycm9y
ID0geyBuYW1lOiAnYm9vIScgfTsKLWNvbnN0IGNodW5rcyA9IFsnYScsICdiJ107Ci0KLXRlbXBs
YXRlZFJTRW1wdHkoJ1JlYWRhYmxlU3RyZWFtIChlbXB0eSknLCAoKSA9PiB7Ci0gIHJldHVybiBu
ZXcgUmVhZGFibGVTdHJlYW0oKTsKLX0pOwotCi10ZW1wbGF0ZWRSU0VtcHR5UmVhZGVyKCdSZWFk
YWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlcicsICgpID0+IHsKLSAgcmV0dXJuIHN0cmVhbUFuZERl
ZmF1bHRSZWFkZXIobmV3IFJlYWRhYmxlU3RyZWFtKCkpOwotfSk7Ci0KLXRlbXBsYXRlZFJTQ2xv
c2VkKCdSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxsIGluIHN0YXJ0KScsICgpID0+IHsK
LSAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5j
bG9zZSgpOwotICAgIH0KLSAgfSk7Ci19KTsKLQotdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIoJ1Jl
YWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGJlZm9yZSBnZXR0aW5nIHJlYWRlciknLCAoKSA9
PiB7Ci0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJl
YW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7
Ci0gIGNvbnRyb2xsZXIuY2xvc2UoKTsKLSAgY29uc3QgcmVzdWx0ID0gc3RyZWFtQW5kRGVmYXVs
dFJlYWRlcihzdHJlYW0pOwotICByZXR1cm4gcmVzdWx0OwotfSk7Ci0KLXRlbXBsYXRlZFJTQ2xv
c2VkUmVhZGVyKCdSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJl
YWRlciknLCAoKSA9PiB7Ci0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBzdHJlYW0gPSBuZXcg
UmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwot
ICAgIH0KLSAgfSk7Ci0gIGNvbnN0IHJlc3VsdCA9IHN0cmVhbUFuZERlZmF1bHRSZWFkZXIoc3Ry
ZWFtKTsKLSAgY29udHJvbGxlci5jbG9zZSgpOwotICByZXR1cm4gcmVzdWx0OwotfSk7Ci0KLXRl
bXBsYXRlZFJTQ2xvc2VkKCdSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwpJywgKCkg
PT4gewotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLSAgc3RyZWFtLmNh
bmNlbCgpOwotICByZXR1cm4gc3RyZWFtOwotfSk7Ci0KLXRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVy
KCdSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcg
cmVhZGVyKScsICgpID0+IHsKLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7
Ci0gIGNvbnN0IHJlc3VsdCA9IHN0cmVhbUFuZERlZmF1bHRSZWFkZXIoc3RyZWFtKTsKLSAgcmVz
dWx0LnJlYWRlci5jYW5jZWwoKTsKLSAgcmV0dXJuIHJlc3VsdDsKLX0pOwotCi10ZW1wbGF0ZWRS
U0Vycm9yZWQoJ1JlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KScsICgp
ID0+IHsKLSAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAg
ICAgYy5lcnJvcih0aGVFcnJvcik7Ci0gICAgfQotICB9KTsKLX0sIHRoZUVycm9yKTsKLQotdGVt
cGxhdGVkUlNFcnJvcmVkU3luY09ubHkoJ1JlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxs
IGluIHN0YXJ0KScsICgpID0+IHsKLSAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAg
c3RhcnQoYykgewotICAgICAgYy5lcnJvcih0aGVFcnJvcik7Ci0gICAgfQotICB9KTsKLX0sIHRo
ZUVycm9yKTsKLQotdGVtcGxhdGVkUlNFcnJvcmVkKCdSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2
aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCknLCAoKSA9PiB7Ci0gIHJl
dHVybiBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KCkgewotICAgICAgcmV0dXJuIFBy
b21pc2UucmVqZWN0KHRoZUVycm9yKTsKLSAgICB9Ci0gIH0pOwotfSwgdGhlRXJyb3IpOwotCi10
ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIoJ1JlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1
cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KSByZWFkZXInLCAoKSA9PiB7Ci0gIHJl
dHVybiBzdHJlYW1BbmREZWZhdWx0UmVhZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3Rh
cnQoKSB7Ci0gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QodGhlRXJyb3IpOwotICAgIH0KLSAg
fSkpOwotfSwgdGhlRXJyb3IpOwotCi10ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIoJ1JlYWRhYmxl
U3RyZWFtIHJlYWRlciAoZXJyb3JlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpJywgKCkgPT4gewot
ICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
LSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0pOwotICBj
b250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKLSAgcmV0dXJuIHN0cmVhbUFuZERlZmF1bHRSZWFk
ZXIoc3RyZWFtKTsKLX0sIHRoZUVycm9yKTsKLQotdGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyKCdS
ZWFkYWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpJywgKCkg
PT4gewotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcmVzdWx0ID0gc3RyZWFtQW5kRGVmYXVs
dFJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRy
b2xsZXIgPSBjOwotICAgIH0KLSAgfSkpOwotICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsK
LSAgcmV0dXJuIHJlc3VsdDsKLX0sIHRoZUVycm9yKTsKLQotdGVtcGxhdGVkUlNUd29DaHVua3NP
cGVuUmVhZGVyKCdSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgc3RpbGwgb3Bl
bikgcmVhZGVyJywgKCkgPT4gewotICByZXR1cm4gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihuZXcg
UmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1ZShjaHVua3Nb
MF0pOwotICAgICAgYy5lbnF1ZXVlKGNodW5rc1sxXSk7Ci0gICAgfQotICB9KSk7Ci19LCBjaHVu
a3MpOwotCi10ZW1wbGF0ZWRSU1R3b0NodW5rc0Nsb3NlZFJlYWRlcignUmVhZGFibGVTdHJlYW0g
KHR3byBjaHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXInLCAoKSA9PiB7Ci0gIGxl
dCBkb0Nsb3NlOwotICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0
YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1ZShjaHVua3NbMF0pOwotICAgICAgYy5lbnF1ZXVlKGNo
dW5rc1sxXSk7Ci0gICAgICBkb0Nsb3NlID0gYy5jbG9zZS5iaW5kKGMpOwotICAgIH0KLSAgfSk7
Ci0gIGNvbnN0IHJlc3VsdCA9IHN0cmVhbUFuZERlZmF1bHRSZWFkZXIoc3RyZWFtKTsKLSAgZG9D
bG9zZSgpOwotICByZXR1cm4gcmVzdWx0OwotfSwgY2h1bmtzKTsKLQotZnVuY3Rpb24gc3RyZWFt
QW5kRGVmYXVsdFJlYWRlcihzdHJlYW0pIHsKLSAgcmV0dXJuIHsgc3RyZWFtLCByZWFkZXI6IHN0
cmVhbS5nZXRSZWFkZXIoKSB9OwotfQotCi1kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3Jlc291cmNlcy9y
cy10ZXN0LXRlbXBsYXRlcy5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVzb3VyY2VzL3JzLXRlc3QtdGVtcGxhdGVzLmpzCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTJiNTY1ZDkwNDJlNzE3ODBkMTY0Y2EyMTZhODc0
ZmMwOTliYzhkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkv
cmVzb3VyY2VzL3JzLXRlc3QtdGVtcGxhdGVzLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNjI0ICsw
LDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotLy8gVGhlc2UgdGVzdHMgY2FuIGJlIHJ1biBhZ2FpbnN0
IGFueSByZWFkYWJsZSBzdHJlYW0gcHJvZHVjZWQgYnkgdGhlIHdlYiBwbGF0Zm9ybSB0aGF0IG1l
ZXRzIHRoZSBnaXZlbiBkZXNjcmlwdGlvbnMuCi0vLyBGb3IgcmVhZGFibGUgc3RyZWFtIHRlc3Rz
LCB0aGUgZmFjdG9yeSBzaG91bGQgcmV0dXJuIHRoZSBzdHJlYW0uIEZvciByZWFkZXIgdGVzdHMs
IHRoZSBmYWN0b3J5IHNob3VsZCByZXR1cm4gYQotLy8geyBzdHJlYW0sIHJlYWRlciB9IG9iamVj
dC4gKFlvdSBjYW4gdXNlIHRoaXMgdG8gdmFyeSB0aGUgdGltZSBhdCB3aGljaCB5b3UgYWNxdWly
ZSBhIHJlYWRlci4pCi0KLXNlbGYudGVtcGxhdGVkUlNFbXB0eSA9IChsYWJlbCwgZmFjdG9yeSkg
PT4gewotICB0ZXN0KCgpID0+IHt9LCAnUnVubmluZyB0ZW1wbGF0ZWRSU0VtcHR5IHdpdGggJyAr
IGxhYmVsKTsKLQotICB0ZXN0KCgpID0+IHsKLQotICAgIGNvbnN0IHJzID0gZmFjdG9yeSgpOwot
Ci0gICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnMubG9ja2VkLCAnYm9vbGVhbicsICdoYXMgYSBi
b29sZWFuIGxvY2tlZCBnZXR0ZXInKTsKLSAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBycy5jYW5j
ZWwsICdmdW5jdGlvbicsICdoYXMgYSBjYW5jZWwgbWV0aG9kJyk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyh0eXBlb2YgcnMuZ2V0UmVhZGVyLCAnZnVuY3Rpb24nLCAnaGFzIGEgZ2V0UmVhZGVyIG1ldGhv
ZCcpOwotICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJzLnBpcGVUaHJvdWdoLCAnZnVuY3Rpb24n
LCAnaGFzIGEgcGlwZVRocm91Z2ggbWV0aG9kJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh0eXBlb2Yg
cnMucGlwZVRvLCAnZnVuY3Rpb24nLCAnaGFzIGEgcGlwZVRvIG1ldGhvZCcpOwotICAgIGFzc2Vy
dF9lcXVhbHModHlwZW9mIHJzLnRlZSwgJ2Z1bmN0aW9uJywgJ2hhcyBhIHRlZSBtZXRob2QnKTsK
LQotICB9LCAnaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBhbmQgcHJvcGVydGll
cycpOwotfTsKLQotc2VsZi50ZW1wbGF0ZWRSU0Nsb3NlZCA9IChsYWJlbCwgZmFjdG9yeSkgPT4g
ewotICB0ZXN0KCgpID0+IHt9LCAnUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZCB3aXRoICcgKyBs
YWJlbCk7Ci0KLSAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICAgIGNvbnN0IHJzID0gZmFjdG9y
eSgpOwotICAgIGNvbnN0IGNhbmNlbFByb21pc2UxID0gcnMuY2FuY2VsKCk7Ci0gICAgY29uc3Qg
Y2FuY2VsUHJvbWlzZTIgPSBycy5jYW5jZWwoKTsKLQotICAgIGFzc2VydF9ub3RfZXF1YWxzKGNh
bmNlbFByb21pc2UxLCBjYW5jZWxQcm9taXNlMiwgJ2NhbmNlbCgpIGNhbGxzIHNob3VsZCByZXR1
cm4gZGlzdGluY3QgcHJvbWlzZXMnKTsKLQotICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAg
ICBjYW5jZWxQcm9taXNlMS50aGVuKHYgPT4gYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdm
aXJzdCBjYW5jZWwoKSBjYWxsIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJykpLAotICAg
ICAgY2FuY2VsUHJvbWlzZTIudGhlbih2ID0+IGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAn
c2Vjb25kIGNhbmNlbCgpIGNhbGwgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKSkKLSAg
ICBdKTsKLQotICB9LCAnY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxl
ZCBwcm9taXNlIGVhY2ggdGltZScpOwotCi0gIHRlc3QoKCkgPT4gewotCi0gICAgY29uc3QgcnMg
PSBmYWN0b3J5KCk7Ci0gICAgYXNzZXJ0X2ZhbHNlKHJzLmxvY2tlZCwgJ2xvY2tlZCBnZXR0ZXIg
c2hvdWxkIHJldHVybiBmYWxzZScpOwotCi0gIH0sICdsb2NrZWQgc2hvdWxkIGJlIGZhbHNlJyk7
Ci0KLSAgdGVzdCgoKSA9PiB7Ci0KLSAgICBjb25zdCBycyA9IGZhY3RvcnkoKTsKLSAgICBycy5n
ZXRSZWFkZXIoKTsgLy8gZ2V0UmVhZGVyKCkgc2hvdWxkIG5vdCB0aHJvdy4KLQotICB9LCAnZ2V0
UmVhZGVyKCkgc2hvdWxkIGJlIE9LJyk7Ci0KLSAgdGVzdCgoKSA9PiB7Ci0KLSAgICBjb25zdCBy
cyA9IGZhY3RvcnkoKTsKLQotICAgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotICAg
IHJlYWRlci5yZWxlYXNlTG9jaygpOwotCi0gICAgY29uc3QgcmVhZGVyMiA9IHJzLmdldFJlYWRl
cigpOyAvLyBHZXR0aW5nIGEgc2Vjb25kIHJlYWRlciBzaG91bGQgbm90IHRocm93LgotICAgIHJl
YWRlcjIucmVsZWFzZUxvY2soKTsKLQotICAgIHJzLmdldFJlYWRlcigpOyAvLyBHZXR0aW5nIGEg
dGhpcmQgcmVhZGVyIHNob3VsZCBub3QgdGhyb3cuCi0KLSAgfSwgJ3Nob3VsZCBiZSBhYmxlIHRv
IGFjcXVpcmUgbXVsdGlwbGUgcmVhZGVycyBpZiB0aGV5IGFyZSByZWxlYXNlZCBpbiBzdWNjZXNz
aW9uJyk7Ci0KLSAgdGVzdCgoKSA9PiB7Ci0KLSAgICBjb25zdCBycyA9IGZhY3RvcnkoKTsKLQot
ICAgIHJzLmdldFJlYWRlcigpOwotCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCks
ICgpID0+IHJzLmdldFJlYWRlcigpLCAnZ2V0dGluZyBhIHNlY29uZCByZWFkZXIgc2hvdWxkIHRo
cm93Jyk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJzLmdldFJl
YWRlcigpLCAnZ2V0dGluZyBhIHRoaXJkIHJlYWRlciBzaG91bGQgdGhyb3cnKTsKLQotICB9LCAn
c2hvdWxkIG5vdCBiZSBhYmxlIHRvIGFjcXVpcmUgYSBzZWNvbmQgcmVhZGVyIGlmIHdlIGRvblwn
dCByZWxlYXNlIHRoZSBmaXJzdCBvbmUnKTsKLX07Ci0KLXNlbGYudGVtcGxhdGVkUlNFcnJvcmVk
ID0gKGxhYmVsLCBmYWN0b3J5LCBlcnJvcikgPT4gewotICB0ZXN0KCgpID0+IHt9LCAnUnVubmlu
ZyB0ZW1wbGF0ZWRSU0Vycm9yZWQgd2l0aCAnICsgbGFiZWwpOwotCi0gIHByb21pc2VfdGVzdCh0
ID0+IHsKLQotICAgIGNvbnN0IHJzID0gZmFjdG9yeSgpOwotICAgIGNvbnN0IHJlYWRlciA9IHJz
LmdldFJlYWRlcigpOwotCi0gICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgIHByb21pc2Vf
cmVqZWN0cyh0LCBlcnJvciwgcmVhZGVyLmNsb3NlZCksCi0gICAgICBwcm9taXNlX3JlamVjdHMo
dCwgZXJyb3IsIHJlYWRlci5yZWFkKCkpCi0gICAgXSk7Ci0KLSAgfSwgJ2dldFJlYWRlcigpIHNo
b3VsZCByZXR1cm4gYSByZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQnKTsKLQotICBwcm9taXNlX3Rl
c3QodCA9PiB7Ci0KLSAgICBjb25zdCBycyA9IGZhY3RvcnkoKTsKLSAgICBjb25zdCByZWFkZXIg
PSBycy5nZXRSZWFkZXIoKTsKLQotICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICBwcm9t
aXNlX3JlamVjdHModCwgZXJyb3IsIHJlYWRlci5yZWFkKCkpLAotICAgICAgcHJvbWlzZV9yZWpl
Y3RzKHQsIGVycm9yLCByZWFkZXIucmVhZCgpKSwKLSAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBl
cnJvciwgcmVhZGVyLmNsb3NlZCkKLSAgICBdKTsKLQotICB9LCAncmVhZCgpIHR3aWNlIHNob3Vs
ZCBnaXZlIHRoZSBlcnJvciBlYWNoIHRpbWUnKTsKLQotICB0ZXN0KCgpID0+IHsKLSAgICBjb25z
dCBycyA9IGZhY3RvcnkoKTsKLQotICAgIGFzc2VydF9mYWxzZShycy5sb2NrZWQsICdsb2NrZWQg
Z2V0dGVyIHNob3VsZCByZXR1cm4gZmFsc2UnKTsKLSAgfSwgJ2xvY2tlZCBzaG91bGQgYmUgZmFs
c2UnKTsKLX07Ci0KLXNlbGYudGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHkgPSAobGFiZWwsIGZh
Y3RvcnksIGVycm9yKSA9PiB7Ci0gIHRlc3QoKCkgPT4ge30sICdSdW5uaW5nIHRlbXBsYXRlZFJT
RXJyb3JlZFN5bmNPbmx5IHdpdGggJyArIGxhYmVsKTsKLQotICBwcm9taXNlX3Rlc3QodCA9PiB7
Ci0KLSAgICBjb25zdCBycyA9IGZhY3RvcnkoKTsKLSAgICBycy5nZXRSZWFkZXIoKS5yZWxlYXNl
TG9jaygpOwotICAgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOyAvLyBDYWxsaW5nIGdl
dFJlYWRlcigpIHR3aWNlIGRvZXMgbm90IHRocm93ICh0aGUgc3RyZWFtIGlzIG5vdCBsb2NrZWQp
LgotCi0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvciwgcmVhZGVyLmNsb3NlZCk7
Ci0KLSAgfSwgJ3Nob3VsZCBiZSBhYmxlIHRvIG9idGFpbiBhIHNlY29uZCByZWFkZXIsIHdpdGgg
dGhlIGNvcnJlY3QgY2xvc2VkIHByb21pc2UnKTsKLQotICB0ZXN0KCgpID0+IHsKLQotICAgIGNv
bnN0IHJzID0gZmFjdG9yeSgpOwotICAgIHJzLmdldFJlYWRlcigpOwotCi0gICAgYXNzZXJ0X3Ro
cm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJzLmdldFJlYWRlcigpLCAnZ2V0dGluZyBhIHNl
Y29uZCByZWFkZXIgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7Ci0gICAgYXNzZXJ0X3Rocm93
cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJzLmdldFJlYWRlcigpLCAnZ2V0dGluZyBhIHRoaXJk
IHJlYWRlciBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKLQotICB9LCAnc2hvdWxkIG5vdCBi
ZSBhYmxlIHRvIG9idGFpbiBhZGRpdGlvbmFsIHJlYWRlcnMgaWYgd2UgZG9uXCd0IHJlbGVhc2Ug
dGhlIGZpcnN0IGxvY2snKTsKLQotICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgICBjb25zdCBy
cyA9IGZhY3RvcnkoKTsKLSAgICBjb25zdCBjYW5jZWxQcm9taXNlMSA9IHJzLmNhbmNlbCgpOwot
ICAgIGNvbnN0IGNhbmNlbFByb21pc2UyID0gcnMuY2FuY2VsKCk7Ci0KLSAgICBhc3NlcnRfbm90
X2VxdWFscyhjYW5jZWxQcm9taXNlMSwgY2FuY2VsUHJvbWlzZTIsICdjYW5jZWwoKSBjYWxscyBz
aG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzJyk7Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5h
bGwoWwotICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yLCBjYW5jZWxQcm9taXNlMSksCi0g
ICAgICBwcm9taXNlX3JlamVjdHModCwgZXJyb3IsIGNhbmNlbFByb21pc2UyKQotICAgIF0pOwot
Ci0gIH0sICdjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlz
ZSBlYWNoIHRpbWUnKTsKLQotICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgICBjb25zdCBycyA9
IGZhY3RvcnkoKTsKLSAgICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLSAgICBjb25z
dCBjYW5jZWxQcm9taXNlMSA9IHJlYWRlci5jYW5jZWwoKTsKLSAgICBjb25zdCBjYW5jZWxQcm9t
aXNlMiA9IHJlYWRlci5jYW5jZWwoKTsKLQotICAgIGFzc2VydF9ub3RfZXF1YWxzKGNhbmNlbFBy
b21pc2UxLCBjYW5jZWxQcm9taXNlMiwgJ2NhbmNlbCgpIGNhbGxzIHNob3VsZCByZXR1cm4gZGlz
dGluY3QgcHJvbWlzZXMnKTsKLQotICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICBwcm9t
aXNlX3JlamVjdHModCwgZXJyb3IsIGNhbmNlbFByb21pc2UxKSwKLSAgICAgIHByb21pc2VfcmVq
ZWN0cyh0LCBlcnJvciwgY2FuY2VsUHJvbWlzZTIpCi0gICAgXSk7Ci0KLSAgfSwgJ3JlYWRlciBj
YW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRp
bWUnKTsKLX07Ci0KLXNlbGYudGVtcGxhdGVkUlNFbXB0eVJlYWRlciA9IChsYWJlbCwgZmFjdG9y
eSkgPT4gewotICB0ZXN0KCgpID0+IHt9LCAnUnVubmluZyB0ZW1wbGF0ZWRSU0VtcHR5UmVhZGVy
IHdpdGggJyArIGxhYmVsKTsKLQotICB0ZXN0KCgpID0+IHsKLQotICAgIGNvbnN0IHJlYWRlciA9
IGZhY3RvcnkoKS5yZWFkZXI7Ci0KLSAgICBhc3NlcnRfdHJ1ZSgnY2xvc2VkJyBpbiByZWFkZXIs
ICdoYXMgYSBjbG9zZWQgcHJvcGVydHknKTsKLSAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiByZWFk
ZXIuY2xvc2VkLnRoZW4sICdmdW5jdGlvbicsICdjbG9zZWQgcHJvcGVydHkgaXMgdGhlbmFibGUn
KTsKLQotICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJlYWRlci5jYW5jZWwsICdmdW5jdGlvbics
ICdoYXMgYSBjYW5jZWwgbWV0aG9kJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcmVhZGVy
LnJlYWQsICdmdW5jdGlvbicsICdoYXMgYSByZWFkIG1ldGhvZCcpOwotICAgIGFzc2VydF9lcXVh
bHModHlwZW9mIHJlYWRlci5yZWxlYXNlTG9jaywgJ2Z1bmN0aW9uJywgJ2hhcyBhIHJlbGVhc2VM
b2NrIG1ldGhvZCcpOwotCi0gIH0sICdpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBtZXRob2Rz
IGFuZCBwcm9wZXJ0aWVzJyk7Ci0KLSAgdGVzdCgoKSA9PiB7Ci0KLSAgICBjb25zdCBzdHJlYW0g
PSBmYWN0b3J5KCkuc3RyZWFtOwotCi0gICAgYXNzZXJ0X3RydWUoc3RyZWFtLmxvY2tlZCwgJ2xv
Y2tlZCBnZXR0ZXIgc2hvdWxkIHJldHVybiB0cnVlJyk7Ci0KLSAgfSwgJ2xvY2tlZCBzaG91bGQg
YmUgdHJ1ZScpOwotCi0gIHByb21pc2VfdGVzdCh0ID0+IHsKLQotICAgIGNvbnN0IHJlYWRlciA9
IGZhY3RvcnkoKS5yZWFkZXI7Ci0KLSAgICByZWFkZXIucmVhZCgpLnRoZW4oCi0gICAgICB0LnVu
cmVhY2hlZF9mdW5jKCdyZWFkKCkgc2hvdWxkIG5vdCBmdWxmaWxsJyksCi0gICAgICB0LnVucmVh
Y2hlZF9mdW5jKCdyZWFkKCkgc2hvdWxkIG5vdCByZWplY3QnKQotICAgICk7Ci0KLSAgICByZXR1
cm4gZGVsYXkoNTAwKTsKLQotICB9LCAncmVhZCgpIHNob3VsZCBuZXZlciBzZXR0bGUnKTsKLQot
ICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVh
ZGVyOwotCi0gICAgcmVhZGVyLnJlYWQoKS50aGVuKAotICAgICAgdC51bnJlYWNoZWRfZnVuYygn
cmVhZCgpIHNob3VsZCBub3QgZnVsZmlsbCcpLAotICAgICAgdC51bnJlYWNoZWRfZnVuYygncmVh
ZCgpIHNob3VsZCBub3QgcmVqZWN0JykKLSAgICApOwotCi0gICAgcmVhZGVyLnJlYWQoKS50aGVu
KAotICAgICAgdC51bnJlYWNoZWRfZnVuYygncmVhZCgpIHNob3VsZCBub3QgZnVsZmlsbCcpLAot
ICAgICAgdC51bnJlYWNoZWRfZnVuYygncmVhZCgpIHNob3VsZCBub3QgcmVqZWN0JykKLSAgICAp
OwotCi0gICAgcmV0dXJuIGRlbGF5KDUwMCk7Ci0KLSAgfSwgJ3R3byByZWFkKClzIHNob3VsZCBi
b3RoIG5ldmVyIHNldHRsZScpOwotCi0gIHRlc3QoKCkgPT4gewotCi0gICAgY29uc3QgcmVhZGVy
ID0gZmFjdG9yeSgpLnJlYWRlcjsKLSAgICBhc3NlcnRfbm90X2VxdWFscyhyZWFkZXIucmVhZCgp
LCByZWFkZXIucmVhZCgpLCAndGhlIHByb21pc2VzIHJldHVybmVkIHNob3VsZCBiZSBkaXN0aW5j
dCcpOwotCi0gIH0sICdyZWFkKCkgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcyBlYWNo
IHRpbWUnKTsKLQotICB0ZXN0KCgpID0+IHsKLQotICAgIGNvbnN0IHN0cmVhbSA9IGZhY3Rvcnko
KS5zdHJlYW07Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHN0cmVh
bS5nZXRSZWFkZXIoKSwgJ3N0cmVhbS5nZXRSZWFkZXIoKSBzaG91bGQgdGhyb3cgYSBUeXBlRXJy
b3InKTsKLQotICB9LCAnZ2V0UmVhZGVyKCkgYWdhaW4gb24gdGhlIHN0cmVhbSBzaG91bGQgZmFp
bCcpOwotCi0gIHByb21pc2VfdGVzdCh0ID0+IHsKLQotICAgIGNvbnN0IHN0cmVhbUFuZFJlYWRl
ciA9IGZhY3RvcnkoKTsKLSAgICBjb25zdCBzdHJlYW0gPSBzdHJlYW1BbmRSZWFkZXIuc3RyZWFt
OwotICAgIGNvbnN0IHJlYWRlciA9IHN0cmVhbUFuZFJlYWRlci5yZWFkZXI7Ci0KLSAgICByZWFk
ZXIucmVhZCgpLnRoZW4oCi0gICAgICB0LnVucmVhY2hlZF9mdW5jKCdmaXJzdCByZWFkKCkgc2hv
dWxkIG5vdCBmdWxmaWxsJyksCi0gICAgICB0LnVucmVhY2hlZF9mdW5jKCdmaXJzdCByZWFkKCkg
c2hvdWxkIG5vdCByZWplY3QnKQotICAgICk7Ci0KLSAgICByZWFkZXIucmVhZCgpLnRoZW4oCi0g
ICAgICB0LnVucmVhY2hlZF9mdW5jKCdzZWNvbmQgcmVhZCgpIHNob3VsZCBub3QgZnVsZmlsbCcp
LAotICAgICAgdC51bnJlYWNoZWRfZnVuYygnc2Vjb25kIHJlYWQoKSBzaG91bGQgbm90IHJlamVj
dCcpCi0gICAgKTsKLQotICAgIHJlYWRlci5jbG9zZWQudGhlbigKLSAgICAgIHQudW5yZWFjaGVk
X2Z1bmMoJ2Nsb3NlZCBzaG91bGQgbm90IGZ1bGZpbGwnKSwKLSAgICAgIHQudW5yZWFjaGVkX2Z1
bmMoJ2Nsb3NlZCBzaG91bGQgbm90IHJlamVjdCcpCi0gICAgKTsKLQotICAgIGFzc2VydF90aHJv
d3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiByZWFkZXIucmVsZWFzZUxvY2soKSwgJ3JlbGVhc2VM
b2NrIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwotCi0gICAgYXNzZXJ0X3RydWUoc3RyZWFt
LmxvY2tlZCwgJ3RoZSBzdHJlYW0gc2hvdWxkIHN0aWxsIGJlIGxvY2tlZCcpOwotCi0gICAgcmV0
dXJuIGRlbGF5KDUwMCk7Ci0KLSAgfSwgJ3JlbGVhc2luZyB0aGUgbG9jayB3aXRoIHBlbmRpbmcg
cmVhZCByZXF1ZXN0cyBzaG91bGQgdGhyb3cgYnV0IHRoZSByZWFkIHJlcXVlc3RzIHNob3VsZCBz
dGF5IHBlbmRpbmcnKTsKLQotICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgICBjb25zdCByZWFk
ZXIgPSBmYWN0b3J5KCkucmVhZGVyOwotICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOwotCi0gICAg
cmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVy
cm9yKCksIHJlYWRlci5yZWFkKCkpLAotICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBl
RXJyb3IoKSwgcmVhZGVyLnJlYWQoKSkKLSAgICBdKTsKLQotICB9LCAncmVsZWFzaW5nIHRoZSBs
b2NrIHNob3VsZCBjYXVzZSBmdXJ0aGVyIHJlYWQoKSBjYWxscyB0byByZWplY3Qgd2l0aCBhIFR5
cGVFcnJvcicpOwotCi0gIHByb21pc2VfdGVzdCh0ID0+IHsKLQotICAgIGNvbnN0IHJlYWRlciA9
IGZhY3RvcnkoKS5yZWFkZXI7Ci0KLSAgICBjb25zdCBjbG9zZWRCZWZvcmUgPSByZWFkZXIuY2xv
c2VkOwotICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOwotICAgIGNvbnN0IGNsb3NlZEFmdGVyID0g
cmVhZGVyLmNsb3NlZDsKLQotICAgIGFzc2VydF9lcXVhbHMoY2xvc2VkQmVmb3JlLCBjbG9zZWRB
ZnRlciwgJ3RoZSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgbm90IGNoYW5nZSBpZGVudGl0eScpOwot
Ci0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIGNsb3NlZEJl
Zm9yZSk7Ci0KLSAgfSwgJ3JlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIGNh
bGxzIHRvIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yJyk7Ci0KLSAgdGVzdCgoKSA9PiB7Ci0KLSAg
ICBjb25zdCBzdHJlYW1BbmRSZWFkZXIgPSBmYWN0b3J5KCk7Ci0gICAgY29uc3Qgc3RyZWFtID0g
c3RyZWFtQW5kUmVhZGVyLnN0cmVhbTsKLSAgICBjb25zdCByZWFkZXIgPSBzdHJlYW1BbmRSZWFk
ZXIucmVhZGVyOwotCi0gICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7Ci0gICAgYXNzZXJ0X2ZhbHNl
KHN0cmVhbS5sb2NrZWQsICdsb2NrZWQgZ2V0dGVyIHNob3VsZCByZXR1cm4gZmFsc2UnKTsKLQot
ICB9LCAncmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBsb2NrZWQgdG8gYmVjb21lIGZh
bHNlJyk7Ci0KLSAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICAgIGNvbnN0IHJlYWRlciA9IGZh
Y3RvcnkoKS5yZWFkZXI7Ci0gICAgcmVhZGVyLmNhbmNlbCgpOwotCi0gICAgcmV0dXJuIHJlYWRl
ci5yZWFkKCkudGhlbihyID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFs
dWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpaW5nIGZyb20gdGhlIHJlYWRlciBz
aG91bGQgZ2l2ZSBhIGRvbmUgcmVzdWx0Jyk7Ci0gICAgfSk7Ci0KLSAgfSwgJ2NhbmNlbGluZyB2
aWEgdGhlIHJlYWRlciBzaG91bGQgY2F1c2UgdGhlIHJlYWRlciB0byBhY3QgY2xvc2VkJyk7Ci0K
LSAgcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gICAgY29uc3Qgc3RyZWFtID0gZmFjdG9yeSgpLnN0
cmVhbTsKLSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgc3Ry
ZWFtLmNhbmNlbCgpKTsKLQotICB9LCAnY2FuY2VsaW5nIHZpYSB0aGUgc3RyZWFtIHNob3VsZCBm
YWlsJyk7Ci19OwotCi1zZWxmLnRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyID0gKGxhYmVsLCBmYWN0
b3J5KSA9PiB7Ci0gIHRlc3QoKCkgPT4ge30sICdSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkUmVh
ZGVyIHdpdGggJyArIGxhYmVsKTsKLQotICBwcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gICAgY29u
c3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKLQotICAgIHJldHVybiByZWFkZXIucmVhZCgp
LnRoZW4odiA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyh2LCB7IHZhbHVlOiB1bmRl
ZmluZWQsIGRvbmU6IHRydWUgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCBjb3JyZWN0bHknKTsK
LSAgICB9KTsKLQotICB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5k
ZWZpbmVkLCBkb25lOiB0cnVlIH0nKTsKLQotICBwcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gICAg
Y29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKLQotICAgIHJldHVybiBQcm9taXNlLmFs
bChbCi0gICAgICByZWFkZXIucmVhZCgpLnRoZW4odiA9PiB7Ci0gICAgICAgIGFzc2VydF9vYmpl
Y3RfZXF1YWxzKHYsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNo
b3VsZCBmdWxmaWxsIGNvcnJlY3RseScpOwotICAgICAgfSksCi0gICAgICByZWFkZXIucmVhZCgp
LnRoZW4odiA9PiB7Ci0gICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHYsIHsgdmFsdWU6IHVu
ZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIGNvcnJlY3RseScp
OwotICAgICAgfSkKLSAgICBdKTsKLQotICB9LCAncmVhZCgpIG11bHRpcGxlIHRpbWVzIHNob3Vs
ZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0nKTsKLQotICBw
cm9taXNlX3Rlc3QoKCkgPT4gewotCi0gICAgY29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRl
cjsKLQotICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4oKCkgPT4gcmVhZGVyLnJlYWQoKSku
dGhlbih2ID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHYsIHsgdmFsdWU6IHVuZGVm
aW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIGNvcnJlY3RseScpOwot
ICAgIH0pOwotCi0gIH0sICdyZWFkKCkgc2hvdWxkIHdvcmsgd2hlbiB1c2VkIHdpdGhpbiBhbm90
aGVyIHJlYWQoKSBmdWxmaWxsIGNhbGxiYWNrJyk7Ci0KLSAgcHJvbWlzZV90ZXN0KCgpID0+IHsK
LQotICAgIGNvbnN0IHJlYWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7Ci0KLSAgICByZXR1cm4gcmVh
ZGVyLmNsb3NlZC50aGVuKHYgPT4gYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdyZWFkZXIg
Y2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJykpOwotCi0gIH0sICdjbG9zZWQg
c2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsKLQotICBwcm9taXNlX3Rlc3QodCA9PiB7
Ci0KLSAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOwotCi0gICAgY29uc3QgY2xv
c2VkQmVmb3JlID0gcmVhZGVyLmNsb3NlZDsKLSAgICByZWFkZXIucmVsZWFzZUxvY2soKTsKLSAg
ICBjb25zdCBjbG9zZWRBZnRlciA9IHJlYWRlci5jbG9zZWQ7Ci0KLSAgICBhc3NlcnRfbm90X2Vx
dWFscyhjbG9zZWRCZWZvcmUsIGNsb3NlZEFmdGVyLCAndGhlIGNsb3NlZCBwcm9taXNlIHNob3Vs
ZCBjaGFuZ2UgaWRlbnRpdHknKTsKLQotICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICBj
bG9zZWRCZWZvcmUudGhlbih2ID0+IGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAncmVhZGVy
LmNsb3NlZCBhY3F1aXJlZCBiZWZvcmUgcmVsZWFzZSBzaG91bGQgZnVsZmlsbCcpKSwKLSAgICAg
IHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIGNsb3NlZEFmdGVyKQotICAgIF0p
OwotCi0gIH0sICdyZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWpl
Y3QgYW5kIGNoYW5nZSBpZGVudGl0eScpOwotCi0gIHByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAg
ICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOwotICAgIGNvbnN0IGNhbmNlbFByb21p
c2UxID0gcmVhZGVyLmNhbmNlbCgpOwotICAgIGNvbnN0IGNhbmNlbFByb21pc2UyID0gcmVhZGVy
LmNhbmNlbCgpOwotICAgIGNvbnN0IGNsb3NlZFJlYWRlclByb21pc2UgPSByZWFkZXIuY2xvc2Vk
OwotCi0gICAgYXNzZXJ0X25vdF9lcXVhbHMoY2FuY2VsUHJvbWlzZTEsIGNhbmNlbFByb21pc2Uy
LCAnY2FuY2VsKCkgY2FsbHMgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcycpOwotICAg
IGFzc2VydF9ub3RfZXF1YWxzKGNhbmNlbFByb21pc2UxLCBjbG9zZWRSZWFkZXJQcm9taXNlLCAn
Y2FuY2VsKCkgcHJvbWlzZSAxIHNob3VsZCBiZSBkaXN0aW5jdCBmcm9tIHJlYWRlci5jbG9zZWQn
KTsKLSAgICBhc3NlcnRfbm90X2VxdWFscyhjYW5jZWxQcm9taXNlMiwgY2xvc2VkUmVhZGVyUHJv
bWlzZSwgJ2NhbmNlbCgpIHByb21pc2UgMiBzaG91bGQgYmUgZGlzdGluY3QgZnJvbSByZWFkZXIu
Y2xvc2VkJyk7Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgY2FuY2VsUHJvbWlz
ZTEudGhlbih2ID0+IGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAnZmlyc3QgY2FuY2VsKCkg
c2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKSksCi0gICAgICBjYW5jZWxQcm9taXNlMi50
aGVuKHYgPT4gYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdzZWNvbmQgY2FuY2VsKCkgc2hv
dWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKSkKLSAgICBdKTsKLQotICB9LCAnY2FuY2VsKCkg
c2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZScpOwot
fTsKLQotc2VsZi50ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIgPSAobGFiZWwsIGZhY3RvcnksIGVy
cm9yKSA9PiB7Ci0gIHRlc3QoKCkgPT4ge30sICdSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJl
YWRlciB3aXRoICcgKyBsYWJlbCk7Ci0KLSAgcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gICAgY29u
c3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKLSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3Rz
KHQsIGVycm9yLCByZWFkZXIuY2xvc2VkKTsKLQotICB9LCAnY2xvc2VkIHNob3VsZCByZWplY3Qg
d2l0aCB0aGUgZXJyb3InKTsKLQotICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgICBjb25zdCBy
ZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOwotICAgIGNvbnN0IGNsb3NlZEJlZm9yZSA9IHJlYWRl
ci5jbG9zZWQ7Ci0KLSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yLCBjbG9zZWRC
ZWZvcmUpLnRoZW4oKCkgPT4gewotICAgICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7Ci0KLSAgICAg
IGNvbnN0IGNsb3NlZEFmdGVyID0gcmVhZGVyLmNsb3NlZDsKLSAgICAgIGFzc2VydF9ub3RfZXF1
YWxzKGNsb3NlZEJlZm9yZSwgY2xvc2VkQWZ0ZXIsICd0aGUgY2xvc2VkIHByb21pc2Ugc2hvdWxk
IGNoYW5nZSBpZGVudGl0eScpOwotCi0gICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIG5l
dyBUeXBlRXJyb3IoKSwgY2xvc2VkQWZ0ZXIpOwotICAgIH0pOwotCi0gIH0sICdyZWxlYXNpbmcg
dGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0
eScpOwotCi0gIHByb21pc2VfdGVzdCh0ID0+IHsKLQotICAgIGNvbnN0IHJlYWRlciA9IGZhY3Rv
cnkoKS5yZWFkZXI7Ci0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvciwgcmVhZGVy
LnJlYWQoKSk7Ci0KLSAgfSwgJ3JlYWQoKSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7
Ci19OwotCi1zZWxmLnRlbXBsYXRlZFJTVHdvQ2h1bmtzT3BlblJlYWRlciA9IChsYWJlbCwgZmFj
dG9yeSwgY2h1bmtzKSA9PiB7Ci0gIHRlc3QoKCkgPT4ge30sICdSdW5uaW5nIHRlbXBsYXRlZFJT
VHdvQ2h1bmtzT3BlblJlYWRlciB3aXRoICcgKyBsYWJlbCk7Ci0KLSAgcHJvbWlzZV90ZXN0KCgp
ID0+IHsKLQotICAgIGNvbnN0IHJlYWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7Ci0KLSAgICByZXR1
cm4gUHJvbWlzZS5hbGwoWwotICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4gewotICAgICAg
ICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiBjaHVua3NbMF0sIGRvbmU6IGZhbHNl
IH0sICdmaXJzdCByZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLSAgICAgIH0pLAotICAgICAg
cmVhZGVyLnJlYWQoKS50aGVuKHIgPT4gewotICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhy
LCB7IHZhbHVlOiBjaHVua3NbMV0sIGRvbmU6IGZhbHNlIH0sICdzZWNvbmQgcmVzdWx0IHNob3Vs
ZCBiZSBjb3JyZWN0Jyk7Ci0gICAgICB9KQotICAgIF0pOwotCi0gIH0sICdjYWxsaW5nIHJlYWQo
KSB0d2ljZSB3aXRob3V0IHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3Mg
KHNlcXVlbnRpYWwpJyk7Ci0KLSAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICAgIGNvbnN0IHJl
YWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7Ci0KLSAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVu
KHIgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogY2h1bmtzWzBd
LCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgcmVzdWx0IHNob3VsZCBiZSBjb3JyZWN0Jyk7Ci0KLSAg
ICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4ocjIgPT4gewotICAgICAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyMiwgeyB2YWx1ZTogY2h1bmtzWzFdLCBkb25lOiBmYWxzZSB9LCAnc2Vjb25k
IHJlc3VsdCBzaG91bGQgYmUgY29ycmVjdCcpOwotICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgfSwg
J2NhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2FpdGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2
ZSBib3RoIGNodW5rcyAobmVzdGVkKScpOwotCi0gIHRlc3QoKCkgPT4gewotCi0gICAgY29uc3Qg
cmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKLSAgICBhc3NlcnRfbm90X2VxdWFscyhyZWFkZXIu
cmVhZCgpLCByZWFkZXIucmVhZCgpLCAndGhlIHByb21pc2VzIHJldHVybmVkIHNob3VsZCBiZSBk
aXN0aW5jdCcpOwotCi0gIH0sICdyZWFkKCkgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNl
cyBlYWNoIHRpbWUnKTsKLQotICBwcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gICAgY29uc3QgcmVh
ZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKLQotICAgIGNvbnN0IHByb21pc2UxID0gcmVhZGVyLmNs
b3NlZC50aGVuKHYgPT4gewotICAgICAgYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdyZWFk
ZXIgY2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7Ci0gICAgfSk7Ci0KLSAg
ICBjb25zdCBwcm9taXNlMiA9IHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKLSAgICAgIGFzc2Vy
dF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IGNodW5rc1swXSwgZG9uZTogZmFsc2UgfSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9taXNlIHJldHVybmVkIGJlZm9yZSBjYW5jZWxs
YXRpb24gc2hvdWxkIGZ1bGZpbGwgd2l0aCBhIGNodW5rJyk7Ci0gICAgfSk7Ci0KLSAgICByZWFk
ZXIuY2FuY2VsKCk7Ci0KLSAgICBjb25zdCBwcm9taXNlMyA9IHJlYWRlci5yZWFkKCkudGhlbihy
ID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IHVuZGVmaW5lZCwg
ZG9uZTogdHJ1ZSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb21pc2UgcmV0dXJu
ZWQgYWZ0ZXIgY2FuY2VsbGF0aW9uIHNob3VsZCBmdWxmaWxsIHdpdGggYW4gZW5kLW9mLXN0cmVh
bSBzaWduYWwnKTsKLSAgICB9KTsKLQotICAgIHJldHVybiBQcm9taXNlLmFsbChbcHJvbWlzZTEs
IHByb21pc2UyLCBwcm9taXNlM10pOwotCi0gIH0sICdjYW5jZWwoKSBhZnRlciBhIHJlYWQoKSBz
aG91bGQgc3RpbGwgZ2l2ZSB0aGF0IHNpbmdsZSByZWFkIHJlc3VsdCcpOwotfTsKLQotc2VsZi50
ZW1wbGF0ZWRSU1R3b0NodW5rc0Nsb3NlZFJlYWRlciA9IGZ1bmN0aW9uIChsYWJlbCwgZmFjdG9y
eSwgY2h1bmtzKSB7Ci0gIHRlc3QoKCkgPT4ge30sICdSdW5uaW5nIHRlbXBsYXRlZFJTVHdvQ2h1
bmtzQ2xvc2VkUmVhZGVyIHdpdGggJyArIGxhYmVsKTsKLQotICBwcm9taXNlX3Rlc3QoKCkgPT4g
ewotCi0gICAgY29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKLQotICAgIHJldHVybiBQ
cm9taXNlLmFsbChbCi0gICAgICByZWFkZXIucmVhZCgpLnRoZW4ociA9PiB7Ci0gICAgICAgIGFz
c2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IGNodW5rc1swXSwgZG9uZTogZmFsc2UgfSwg
J2ZpcnN0IHJlc3VsdCBzaG91bGQgYmUgY29ycmVjdCcpOwotICAgICAgfSksCi0gICAgICByZWFk
ZXIucmVhZCgpLnRoZW4ociA9PiB7Ci0gICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsg
dmFsdWU6IGNodW5rc1sxXSwgZG9uZTogZmFsc2UgfSwgJ3NlY29uZCByZXN1bHQgc2hvdWxkIGJl
IGNvcnJlY3QnKTsKLSAgICAgIH0pLAotICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4gewot
ICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6
IHRydWUgfSwgJ3RoaXJkIHJlc3VsdCBzaG91bGQgYmUgY29ycmVjdCcpOwotICAgICAgfSkKLSAg
ICBdKTsKLQotICB9LCAndGhpcmQgcmVhZCgpLCB3aXRob3V0IHdhaXRpbmcsIHNob3VsZCBnaXZl
IHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IChzZXF1ZW50aWFsKScpOwotCi0gIHBy
b21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVy
OwotCi0gICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKLSAgICAgIGFzc2VydF9v
YmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IGNodW5rc1swXSwgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0
IHJlc3VsdCBzaG91bGQgYmUgY29ycmVjdCcpOwotCi0gICAgICByZXR1cm4gcmVhZGVyLnJlYWQo
KS50aGVuKHIyID0+IHsKLSAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocjIsIHsgdmFsdWU6
IGNodW5rc1sxXSwgZG9uZTogZmFsc2UgfSwgJ3NlY29uZCByZXN1bHQgc2hvdWxkIGJlIGNvcnJl
Y3QnKTsKLQotICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHIzID0+IHsKLSAgICAg
ICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyMywgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0
cnVlIH0sICd0aGlyZCByZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLSAgICAgICAgfSk7Ci0g
ICAgICB9KTsKLSAgICB9KTsKLQotICB9LCAndGhpcmQgcmVhZCgpLCB3aXRob3V0IHdhaXRpbmcs
IHNob3VsZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IChuZXN0ZWQpJyk7
Ci0KLSAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICAgIGNvbnN0IHN0cmVhbUFuZFJlYWRlciA9
IGZhY3RvcnkoKTsKLSAgICBjb25zdCBzdHJlYW0gPSBzdHJlYW1BbmRSZWFkZXIuc3RyZWFtOwot
ICAgIGNvbnN0IHJlYWRlciA9IHN0cmVhbUFuZFJlYWRlci5yZWFkZXI7Ci0KLSAgICBhc3NlcnRf
dHJ1ZShzdHJlYW0ubG9ja2VkLCAnc3RyZWFtIHNob3VsZCBzdGFydCBsb2NrZWQnKTsKLQotICAg
IGNvbnN0IHByb21pc2UgPSByZWFkZXIuY2xvc2VkLnRoZW4odiA9PiB7Ci0gICAgICBhc3NlcnRf
ZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ3JlYWRlciBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1
bmRlZmluZWQnKTsKLSAgICAgIGFzc2VydF90cnVlKHN0cmVhbS5sb2NrZWQsICdzdHJlYW0gc2hv
dWxkIHJlbWFpbiBsb2NrZWQnKTsKLSAgICB9KTsKLQotICAgIHJlYWRlci5yZWFkKCk7Ci0gICAg
cmVhZGVyLnJlYWQoKTsKLQotICAgIHJldHVybiBwcm9taXNlOwotCi0gIH0sICdkcmFpbmluZyB0
aGUgc3RyZWFtIHZpYSByZWFkKCkgc2hvdWxkIGNhdXNlIHRoZSByZWFkZXIgY2xvc2VkIHByb21p
c2UgdG8gZnVsZmlsbCwgYnV0IGxvY2tlZCBzdGF5cyB0cnVlJyk7Ci0KLSAgcHJvbWlzZV90ZXN0
KCgpID0+IHsKLQotICAgIGNvbnN0IHN0cmVhbUFuZFJlYWRlciA9IGZhY3RvcnkoKTsKLSAgICBj
b25zdCBzdHJlYW0gPSBzdHJlYW1BbmRSZWFkZXIuc3RyZWFtOwotICAgIGNvbnN0IHJlYWRlciA9
IHN0cmVhbUFuZFJlYWRlci5yZWFkZXI7Ci0KLSAgICBjb25zdCBwcm9taXNlID0gcmVhZGVyLmNs
b3NlZC50aGVuKCgpID0+IHsKLSAgICAgIGFzc2VydF90cnVlKHN0cmVhbS5sb2NrZWQsICd0aGUg
c3RyZWFtIHNob3VsZCBzdGFydCBsb2NrZWQnKTsKLSAgICAgIHJlYWRlci5yZWxlYXNlTG9jaygp
OyAvLyBSZWxlYXNpbmcgdGhlIGxvY2sgYWZ0ZXIgcmVhZGVyIGNsb3NlZCBzaG91bGQgbm90IHRo
cm93LgotICAgICAgYXNzZXJ0X2ZhbHNlKHN0cmVhbS5sb2NrZWQsICd0aGUgc3RyZWFtIHNob3Vs
ZCBlbmQgdW5sb2NrZWQnKTsKLSAgICB9KTsKLQotICAgIHJlYWRlci5yZWFkKCk7Ci0gICAgcmVh
ZGVyLnJlYWQoKTsKLQotICAgIHJldHVybiBwcm9taXNlOwotCi0gIH0sICdyZWxlYXNpbmcgdGhl
IGxvY2sgYWZ0ZXIgdGhlIHN0cmVhbSBpcyBjbG9zZWQgc2hvdWxkIGNhdXNlIGxvY2tlZCB0byBi
ZWNvbWUgZmFsc2UnKTsKLQotICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgICBjb25zdCByZWFk
ZXIgPSBmYWN0b3J5KCkucmVhZGVyOwotCi0gICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7Ci0KLSAg
ICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBl
RXJyb3IoKSwgcmVhZGVyLnJlYWQoKSksCi0gICAgICBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5
cGVFcnJvcigpLCByZWFkZXIucmVhZCgpKSwKLSAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBuZXcg
VHlwZUVycm9yKCksIHJlYWRlci5yZWFkKCkpCi0gICAgXSk7Ci0KLSAgfSwgJ3JlbGVhc2luZyB0
aGUgbG9jayBzaG91bGQgY2F1c2UgZnVydGhlciByZWFkKCkgY2FsbHMgdG8gcmVqZWN0IHdpdGgg
YSBUeXBlRXJyb3InKTsKLQotICBwcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gICAgY29uc3Qgc3Ry
ZWFtQW5kUmVhZGVyID0gZmFjdG9yeSgpOwotICAgIGNvbnN0IHN0cmVhbSA9IHN0cmVhbUFuZFJl
YWRlci5zdHJlYW07Ci0gICAgY29uc3QgcmVhZGVyID0gc3RyZWFtQW5kUmVhZGVyLnJlYWRlcjsK
LQotICAgIGNvbnN0IHJlYWRlckNsb3NlZCA9IHJlYWRlci5jbG9zZWQ7Ci0KLSAgICBhc3NlcnRf
ZXF1YWxzKHJlYWRlci5jbG9zZWQsIHJlYWRlckNsb3NlZCwgJ2FjY2Vzc2luZyByZWFkZXIuY2xv
c2VkIHR3aWNlIGluIHN1Y2Nlc3Npb24gZ2l2ZXMgdGhlIHNhbWUgdmFsdWUnKTsKLQotICAgIGNv
bnN0IHByb21pc2UgPSByZWFkZXIucmVhZCgpLnRoZW4oKCkgPT4gewotICAgICAgYXNzZXJ0X2Vx
dWFscyhyZWFkZXIuY2xvc2VkLCByZWFkZXJDbG9zZWQsICdyZWFkZXIuY2xvc2VkIGlzIHRoZSBz
YW1lIGFmdGVyIHJlYWQoKSBmdWxmaWxscycpOwotCi0gICAgICByZWFkZXIucmVsZWFzZUxvY2so
KTsKLQotICAgICAgYXNzZXJ0X2VxdWFscyhyZWFkZXIuY2xvc2VkLCByZWFkZXJDbG9zZWQsICdy
ZWFkZXIuY2xvc2VkIGlzIHRoZSBzYW1lIGFmdGVyIHJlbGVhc2luZyB0aGUgbG9jaycpOwotCi0g
ICAgICBjb25zdCBuZXdSZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7Ci0gICAgICByZXR1cm4g
bmV3UmVhZGVyLnJlYWQoKTsKLSAgICB9KTsKLQotICAgIGFzc2VydF9lcXVhbHMocmVhZGVyLmNs
b3NlZCwgcmVhZGVyQ2xvc2VkLCAncmVhZGVyLmNsb3NlZCBpcyB0aGUgc2FtZSBhZnRlciBjYWxs
aW5nIHJlYWQoKScpOwotCi0gICAgcmV0dXJuIHByb21pc2U7Ci0KLSAgfSwgJ3JlYWRlclwncyBj
bG9zZWQgcHJvcGVydHkgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUgcHJvbWlzZScpOwotfTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy1hcGkvcmVzb3VyY2VzL3JzLXV0aWxzLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZXNvdXJjZXMvcnMtdXRpbHMuanMKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmMzIyMmUyM2NhYjdhMGE2ZDYxNzcxMTZjOTll
ZDkwZGY5NTc5NzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFw
aS9yZXNvdXJjZXMvcnMtdXRpbHMuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxODUgKzAsMCBAQAot
J3VzZSBzdHJpY3QnOwotKGZ1bmN0aW9uICgpIHsKLQotICBjbGFzcyBSYW5kb21QdXNoU291cmNl
IHsKLSAgICBjb25zdHJ1Y3Rvcih0b1B1c2gpIHsKLSAgICAgIHRoaXMucHVzaGVkID0gMDsKLSAg
ICAgIHRoaXMudG9QdXNoID0gdG9QdXNoOwotICAgICAgdGhpcy5zdGFydGVkID0gZmFsc2U7Ci0g
ICAgICB0aGlzLnBhdXNlZCA9IGZhbHNlOwotICAgICAgdGhpcy5jbG9zZWQgPSBmYWxzZTsKLQot
ICAgICAgdGhpcy5faW50ZXJ2YWxIYW5kbGUgPSBudWxsOwotICAgIH0KLQotICAgIHJlYWRTdGFy
dCgpIHsKLSAgICAgIGlmICh0aGlzLmNsb3NlZCkgewotICAgICAgICByZXR1cm47Ci0gICAgICB9
Ci0KLSAgICAgIGlmICghdGhpcy5zdGFydGVkKSB7Ci0gICAgICAgIHRoaXMuX2ludGVydmFsSGFu
ZGxlID0gc2V0SW50ZXJ2YWwod3JpdGVDaHVuaywgMik7Ci0gICAgICAgIHRoaXMuc3RhcnRlZCA9
IHRydWU7Ci0gICAgICB9Ci0KLSAgICAgIGlmICh0aGlzLnBhdXNlZCkgewotICAgICAgICB0aGlz
Ll9pbnRlcnZhbEhhbmRsZSA9IHNldEludGVydmFsKHdyaXRlQ2h1bmssIDIpOwotICAgICAgICB0
aGlzLnBhdXNlZCA9IGZhbHNlOwotICAgICAgfQotCi0gICAgICBjb25zdCBzb3VyY2UgPSB0aGlz
OwotICAgICAgZnVuY3Rpb24gd3JpdGVDaHVuaygpIHsKLSAgICAgICAgaWYgKHNvdXJjZS5wYXVz
ZWQpIHsKLSAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBzb3VyY2UucHVz
aGVkKys7Ci0KLSAgICAgICAgaWYgKHNvdXJjZS50b1B1c2ggPiAwICYmIHNvdXJjZS5wdXNoZWQg
PiBzb3VyY2UudG9QdXNoKSB7Ci0gICAgICAgICAgaWYgKHNvdXJjZS5faW50ZXJ2YWxIYW5kbGUp
IHsKLSAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoc291cmNlLl9pbnRlcnZhbEhhbmRsZSk7Ci0g
ICAgICAgICAgICBzb3VyY2UuX2ludGVydmFsSGFuZGxlID0gdW5kZWZpbmVkOwotICAgICAgICAg
IH0KLSAgICAgICAgICBzb3VyY2UuY2xvc2VkID0gdHJ1ZTsKLSAgICAgICAgICBzb3VyY2Uub25l
bmQoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBzb3VyY2Uub25kYXRhKHJhbmRvbUNo
dW5rKDEyOCkpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmVhZFN0b3AoKSB7
Ci0gICAgICBpZiAodGhpcy5wYXVzZWQpIHsKLSAgICAgICAgcmV0dXJuOwotICAgICAgfQotCi0g
ICAgICBpZiAodGhpcy5zdGFydGVkKSB7Ci0gICAgICAgIHRoaXMucGF1c2VkID0gdHJ1ZTsKLSAg
ICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLl9pbnRlcnZhbEhhbmRsZSk7Ci0gICAgICAgIHRoaXMu
X2ludGVydmFsSGFuZGxlID0gdW5kZWZpbmVkOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdDYW5cJ3QgcGF1c2UgcmVhZGluZyBhbiB1bnN0YXJ0ZWQgc291cmNlLicp
OwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIGZ1bmN0aW9uIHJhbmRvbUNodW5rKHNpemUpIHsK
LSAgICBsZXQgY2h1bmsgPSAnJzsKLQotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgKytp
KSB7Ci0gICAgICAvLyBBZGQgYSByYW5kb20gY2hhcmFjdGVyIGZyb20gdGhlIGJhc2ljIHByaW50
YWJsZSBBU0NJSSBzZXQuCi0gICAgICBjaHVuayArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKE1hdGgu
cm91bmQoTWF0aC5yYW5kb20oKSAqIDg0KSArIDMyKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gY2h1
bms7Ci0gIH0KLQotICBmdW5jdGlvbiByZWFkYWJsZVN0cmVhbVRvQXJyYXkocmVhZGFibGUsIHJl
YWRlcikgewotICAgIGlmIChyZWFkZXIgPT09IHVuZGVmaW5lZCkgewotICAgICAgcmVhZGVyID0g
cmVhZGFibGUuZ2V0UmVhZGVyKCk7Ci0gICAgfQotCi0gICAgY29uc3QgY2h1bmtzID0gW107Ci0K
LSAgICByZXR1cm4gcHVtcCgpOwotCi0gICAgZnVuY3Rpb24gcHVtcCgpIHsKLSAgICAgIHJldHVy
biByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0ID0+IHsKLSAgICAgICAgaWYgKHJlc3VsdC5kb25l
KSB7Ci0gICAgICAgICAgcmV0dXJuIGNodW5rczsKLSAgICAgICAgfQotCi0gICAgICAgIGNodW5r
cy5wdXNoKHJlc3VsdC52YWx1ZSk7Ci0gICAgICAgIHJldHVybiBwdW1wKCk7Ci0gICAgICB9KTsK
LSAgICB9Ci0gIH0KLQotICBjbGFzcyBTZXF1ZW50aWFsUHVsbFNvdXJjZSB7Ci0gICAgY29uc3Ry
dWN0b3IobGltaXQsIG9wdGlvbnMpIHsKLSAgICAgIGNvbnN0IGFzeW5jID0gb3B0aW9ucyAmJiBv
cHRpb25zLmFzeW5jOwotCi0gICAgICB0aGlzLmN1cnJlbnQgPSAwOwotICAgICAgdGhpcy5saW1p
dCA9IGxpbWl0OwotICAgICAgdGhpcy5vcGVuZWQgPSBmYWxzZTsKLSAgICAgIHRoaXMuY2xvc2Vk
ID0gZmFsc2U7Ci0KLSAgICAgIHRoaXMuX2V4ZWMgPSBmID0+IGYoKTsKLSAgICAgIGlmIChhc3lu
YykgewotICAgICAgICB0aGlzLl9leGVjID0gZiA9PiBzZXRUaW1lb3V0KGYsIDApOwotICAgICAg
fQotICAgIH0KLQotICAgIG9wZW4oY2IpIHsKLSAgICAgIHRoaXMuX2V4ZWMoKCkgPT4gewotICAg
ICAgICB0aGlzLm9wZW5lZCA9IHRydWU7Ci0gICAgICAgIGNiKCk7Ci0gICAgICB9KTsKLSAgICB9
Ci0KLSAgICByZWFkKGNiKSB7Ci0gICAgICB0aGlzLl9leGVjKCgpID0+IHsKLSAgICAgICAgaWYg
KCsrdGhpcy5jdXJyZW50IDw9IHRoaXMubGltaXQpIHsKLSAgICAgICAgICBjYihudWxsLCBmYWxz
ZSwgdGhpcy5jdXJyZW50KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBjYihudWxsLCB0
cnVlLCBudWxsKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0gICAgfQotCi0gICAgY2xvc2UoY2Ip
IHsKLSAgICAgIHRoaXMuX2V4ZWMoKCkgPT4gewotICAgICAgICB0aGlzLmNsb3NlZCA9IHRydWU7
Ci0gICAgICAgIGNiKCk7Ci0gICAgICB9KTsKLSAgICB9Ci0gIH0KLQotICBmdW5jdGlvbiBzZXF1
ZW50aWFsUmVhZGFibGVTdHJlYW0obGltaXQsIG9wdGlvbnMpIHsKLSAgICBjb25zdCBzZXF1ZW50
aWFsU291cmNlID0gbmV3IFNlcXVlbnRpYWxQdWxsU291cmNlKGxpbWl0LCBvcHRpb25zKTsKLQot
ICAgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICBzdGFydCgpIHsK
LSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKLSAgICAg
ICAgICBzZXF1ZW50aWFsU291cmNlLm9wZW4oZXJyID0+IHsKLSAgICAgICAgICAgIGlmIChlcnIp
IHsKLSAgICAgICAgICAgICAgcmVqZWN0KGVycik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICByZXNvbHZlKCk7Ci0gICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgICAgfSwKLQotICAg
ICAgcHVsbChjKSB7Ci0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0
KSA9PiB7Ci0gICAgICAgICAgc2VxdWVudGlhbFNvdXJjZS5yZWFkKChlcnIsIGRvbmUsIGNodW5r
KSA9PiB7Ci0gICAgICAgICAgICBpZiAoZXJyKSB7Ci0gICAgICAgICAgICAgIHJlamVjdChlcnIp
OwotICAgICAgICAgICAgfSBlbHNlIGlmIChkb25lKSB7Ci0gICAgICAgICAgICAgIHNlcXVlbnRp
YWxTb3VyY2UuY2xvc2UoZXJyMiA9PiB7Ci0gICAgICAgICAgICAgICAgaWYgKGVycjIpIHsKLSAg
ICAgICAgICAgICAgICAgIHJlamVjdChlcnIyKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgYy5jbG9zZSgpOwotICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICBjLmVucXVldWUo
Y2h1bmspOwotICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgfSk7Ci0gICAgICAgIH0pOwotICAgICAgfQotICAgIH0pOwotCi0gICAgc3RyZWFtLnNvdXJj
ZSA9IHNlcXVlbnRpYWxTb3VyY2U7Ci0KLSAgICByZXR1cm4gc3RyZWFtOwotICB9Ci0KLQotICBz
ZWxmLlJhbmRvbVB1c2hTb3VyY2UgPSBSYW5kb21QdXNoU291cmNlOwotICBzZWxmLnJlYWRhYmxl
U3RyZWFtVG9BcnJheSA9IHJlYWRhYmxlU3RyZWFtVG9BcnJheTsKLSAgc2VsZi5zZXF1ZW50aWFs
UmVhZGFibGVTdHJlYW0gPSBzZXF1ZW50aWFsUmVhZGFibGVTdHJlYW07Ci0KLX0oKSk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMtYXBpL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZXNvdXJjZXMvdGVzdC1pbml0
aWFsaXplci5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDZlZDRhN2FhYjU0MWU4
ZTVjZmVlYzQwNDIwMzI4OTI0MzAxNDdiMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMtYXBpL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzCisrKyAvZGV2L251
bGwKQEAgLTEsMTQgKzAsMCBAQAotJ3VzZSBzdHJpY3QnOwotCi1mdW5jdGlvbiB3b3JrZXJfdGVz
dChmaWxlKSB7Ci0gIGZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBXb3JrZXIoZmlsZSkpOwot
ICBpZiAodHlwZW9mIFNoYXJlZFdvcmtlciA9PT0gJ2Z1bmN0aW9uJykgewotICAgIGZldGNoX3Rl
c3RzX2Zyb21fd29ya2VyKG5ldyBTaGFyZWRXb3JrZXIoZmlsZSkpOwotICB9IGVsc2UgewotICAg
IHRlc3QoKCkgPT4gewotICAgICAgYXNzZXJ0X3VucmVhY2hlZCgnU2hhcmVkV29ya2VyIGlzIHVu
YXZhaWxhYmxlJyk7Ci0gICAgfSwgJ0xvYWQgJyArIGZpbGUgKyAnIHdpdGggU2hhcmVkV29ya2Vy
Jyk7Ci0gIH0KLSAgc2VydmljZV93b3JrZXJfdGVzdChmaWxlKTsKLX0KLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9y
ZXNvdXJjZXMvdGVzdC11dGlscy5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjNDc4OThhNjA4ZTkzZDVlNTY2NGQwMTc2MDdiNGY0NzA5
ZjUzNzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZXNv
dXJjZXMvdGVzdC11dGlscy5qcworKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLSd1c2Ug
c3RyaWN0JzsKLQotc2VsZi5nZXR0ZXJSZWplY3RzID0gKHQsIG9iaiwgZ2V0dGVyTmFtZSwgdGFy
Z2V0KSA9PiB7Ci0gIGNvbnN0IGdldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3Iob2JqLCBnZXR0ZXJOYW1lKS5nZXQ7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBu
ZXcgVHlwZUVycm9yKCksIGdldHRlci5jYWxsKHRhcmdldCkpOwotfTsKLQotc2VsZi5tZXRob2RS
ZWplY3RzID0gKHQsIG9iaiwgbWV0aG9kTmFtZSwgdGFyZ2V0KSA9PiB7Ci0gIGNvbnN0IG1ldGhv
ZCA9IG9ialttZXRob2ROYW1lXTsKLQotICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBU
eXBlRXJyb3IoKSwgbWV0aG9kLmNhbGwodGFyZ2V0KSk7Ci19OwotCi1zZWxmLmdldHRlclRocm93
cyA9IChvYmosIGdldHRlck5hbWUsIHRhcmdldCkgPT4gewotICBjb25zdCBnZXR0ZXIgPSBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwgZ2V0dGVyTmFtZSkuZ2V0OwotCi0gIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBnZXR0ZXIuY2FsbCh0YXJnZXQpLCBn
ZXR0ZXJOYW1lICsgJyBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKLX07Ci0KLXNlbGYubWV0
aG9kVGhyb3dzID0gKG9iaiwgbWV0aG9kTmFtZSwgdGFyZ2V0LCBhcmdzKSA9PiB7Ci0gIGNvbnN0
IG1ldGhvZCA9IG9ialttZXRob2ROYW1lXTsKLQotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJy
b3IoKSwgKCkgPT4gbWV0aG9kLmFwcGx5KHRhcmdldCwgYXJncyksIG1ldGhvZE5hbWUgKyAnIHNo
b3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwotfTsKLQotc2VsZi5nYXJiYWdlQ29sbGVjdCA9ICgp
ID0+IHsKLSAgaWYgKHNlbGYuZ2MpIHsKLSAgICAvLyBVc2UgLS1leHBvc2VfZ2MgZm9yIFY4IChh
bmQgTm9kZS5qcykKLSAgICAvLyBFeHBvc2VkIGluIFNwaWRlck1vbmtleSBzaGVsbCBhcyB3ZWxs
Ci0gICAgc2VsZi5nYygpOwotICB9IGVsc2UgaWYgKHNlbGYuR0NDb250cm9sbGVyKSB7Ci0gICAg
Ly8gUHJlc2VudCBpbiBzb21lIFdlYktpdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMKLSAgICBH
Q0NvbnRyb2xsZXIuY29sbGVjdCgpOwotICB9IGVsc2UgewotICAgIC8qIGVzbGludC1kaXNhYmxl
IG5vLWNvbnNvbGUgKi8KLSAgICBjb25zb2xlLndhcm4oJ1Rlc3RzIGFyZSBydW5uaW5nIHdpdGhv
dXQgdGhlIGFiaWxpdHkgdG8gZG8gbWFudWFsIGdhcmJhZ2UgY29sbGVjdGlvbi4gVGhleSB3aWxs
IHN0aWxsIHdvcmssIGJ1dCAnICsKLSAgICAgICdjb3ZlcmFnZSB3aWxsIGJlIHN1Ym9wdGltYWwu
Jyk7Ci0gICAgLyogZXNsaW50LWVuYWJsZSBuby1jb25zb2xlICovCi0gIH0KLX07Ci0KLXNlbGYu
ZGVsYXkgPSBtcyA9PiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHN0ZXBfdGltZW91dChyZXNvbHZl
LCBtcykpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL1JFQURNRS50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvUkVBRE1FLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmM5MWY1OTQ2
YTM4ZDE0MmIwNTFjODExZDYxNTg5ZjZlMDBlNmVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL1JFQURNRS50eHQK
QEAgLTAsMCArMSw2IEBACitUaGlzIGRpcmVjdG9yeSBpcyBpbXBvcnRlZCBmcm9tIHRoZSB0aGUg
U3RyZWFtcyBBUEkgcmVwb3NpdG9yeS4KKworVGhlcmUgaXMgYSBwbGFuIHRvIG1vdmUgdGhlc2Ug
dGVzdHMgdG8gd2ViLXBsYXRmb3JtLXRlc3RzIHJlcG9zaXRvcnkgc28gZnJvbSB0aGF0IG1vbWVu
dCBvbiB0aGlzIGltcG9ydGF0aW9uIHdpbGwgYmUKK2F1dG9tYXRpYy4KKworQ3VycmVudCB2ZXJz
aW9uOiBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL3N0cmVhbXMvdHJlZS83ZjE5MTc1NDE1ZDli
NTdhZjA0Y2I4YzJjZDM1NWNhMzgxMDFmMGFhL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi93ZWIt
cGxhdGZvcm0tdGVzdHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTJkOTY0MTUwMjk5NGUzMmQ0MmViYzliZTJkN2IzNGYxNDVmNWNiNAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4
IEBACisKK1BBU1MgQ2FuIGNvbnN0cnVjdCBhIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kgd2l0
aCBhIHZhbGlkIGhpZ2ggd2F0ZXIgbWFyayAKK1BBU1MgQ2FuIGNvbnN0cnVjdCBhIEJ5dGVMZW5n
dGhRdWV1aW5nU3RyYXRlZ3kgd2l0aCBhbnkgdmFsdWUgYXMgaXRzIGhpZ2ggd2F0ZXIgbWFyayAK
K1BBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSBjb25zdHJ1Y3RvciBiZWhhdmVzIGFzIGV4
cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1bWVudHMgCitQQVNTIEJ5dGVMZW5ndGhRdWV1aW5nU3Ry
YXRlZ3kgc2l6ZSBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1bWVudHMgCitQ
QVNTIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUgc2hvdWxkIHdvcmsg
Z2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMgCitQQVNTIEJ5dGVMZW5n
dGhRdWV1aW5nU3RyYXRlZ3kgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgcHJvcGVydGllcyAK
K1BBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSdzIGhpZ2hXYXRlck1hcmsgcHJvcGVydHkg
Y2FuIGJlIHNldCB0byBhbnl0aGluZyAKK0ZBSUwgTG9hZCBieXRlLWxlbmd0aC1xdWV1aW5nLXN0
cmF0ZWd5LmpzIHdpdGggU2hhcmVkV29ya2VyIGFzc2VydF91bnJlYWNoZWQ6IFNoYXJlZFdvcmtl
ciBpcyB1bmF2YWlsYWJsZSBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK0ZBSUwgVW50aXRsZWQg
dW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ25hdmlnYXRvci5zZXJ2aWNl
V29ya2VyLmdldFJlZ2lzdHJhdGlvbicpCitQQVNTIENhbiBjb25zdHJ1Y3QgYSBCeXRlTGVuZ3Ro
UXVldWluZ1N0cmF0ZWd5IHdpdGggYSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsgCitQQVNTIENhbiBj
b25zdHJ1Y3QgYSBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IHdpdGggYW55IHZhbHVlIGFzIGl0
cyBoaWdoIHdhdGVyIG1hcmsgCitQQVNTIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kgY29uc3Ry
dWN0b3IgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRzIAorUEFTUyBC
eXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IHNpemUgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0
cmFuZ2UgYXJndW1lbnRzIAorUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlw
ZS5zaXplIHNob3VsZCB3b3JrIGdlbmVyaWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1l
bnRzIAorUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IGluc3RhbmNlcyBoYXZlIHRoZSBj
b3JyZWN0IHByb3BlcnRpZXMgCitQQVNTIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kncyBoaWdo
V2F0ZXJNYXJrIHByb3BlcnR5IGNhbiBiZSBzZXQgdG8gYW55dGhpbmcgCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9ieXRl
LWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjEzZjE1YWNiOWZmYWI2OGFlMjg1ZjU3ODI2NzE3N2JmYjdlNWRiMjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5odG1sCkBAIC0wLDAg
KzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpz
Ij48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9ImJ5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3ku
anMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyd1c2Ugc3RyaWN0JzsKK3dvcmtlcl90ZXN0KCdieXRl
LWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmpzJyk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9ieXRlLWxl
bmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTQ0MDdhZjk5MTM4ODkzYjhiNTI5MmFhMjQ4MTAwNDE2MmU3MmU1YQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmpzCkBAIC0wLDAgKzEsMTA3IEBA
CisndXNlIHN0cmljdCc7CisKK2lmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKKyAgc2VsZi5pbXBv
cnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Cit9CisKK3Rlc3QoKCkgPT4g
eworCisgIG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9
KTsKKworfSwgJ0NhbiBjb25zdHJ1Y3QgYSBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IHdpdGgg
YSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgZm9yIChjb25z
dCBoaWdoV2F0ZXJNYXJrIG9mIFstSW5maW5pdHksIE5hTiwgJ2ZvbycsIHt9LCAoKSA9PiB7fV0p
IHsKKyAgICBjb25zdCBzdHJhdGVneSA9IG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KHsg
aGlnaFdhdGVyTWFyayB9KTsKKyAgICBhc3NlcnRfZXF1YWxzKHN0cmF0ZWd5LmhpZ2hXYXRlck1h
cmssIGhpZ2hXYXRlck1hcmssIGAke2hpZ2hXYXRlck1hcmt9IGdldHMgc2V0IGNvcnJlY3RseWAp
OworICB9CisKK30sICdDYW4gY29uc3RydWN0IGEgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSB3
aXRoIGFueSB2YWx1ZSBhcyBpdHMgaGlnaCB3YXRlciBtYXJrJyk7CisKK3Rlc3QoKCkgPT4gewor
CisgIGNvbnN0IGhpZ2hXYXRlck1hcmsgPSAxOworICBjb25zdCBoaWdoV2F0ZXJNYXJrT2JqZWN0
R2V0dGVyID0geworICAgIGdldCBoaWdoV2F0ZXJNYXJrKCkgeyByZXR1cm4gaGlnaFdhdGVyTWFy
azsgfQorICB9OworICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignd293IScpOworICBjb25zdCBo
aWdoV2F0ZXJNYXJrT2JqZWN0R2V0dGVyVGhyb3dpbmcgPSB7CisgICAgZ2V0IGhpZ2hXYXRlck1h
cmsoKSB7IHRocm93IGVycm9yOyB9CisgIH07CisKKyAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICdU
eXBlRXJyb3InIH0sICgpID0+IG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KCksICdjb25z
dHJ1Y3Rpb24gZmFpbHMgd2l0aCB1bmRlZmluZWQnKTsKKyAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6
ICdUeXBlRXJyb3InIH0sICgpID0+IG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KG51bGwp
LCAnY29uc3RydWN0aW9uIGZhaWxzIHdpdGggbnVsbCcpOworICBhc3NlcnRfdGhyb3dzKHsgbmFt
ZTogJ0Vycm9yJyB9LCAoKSA9PiBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneShoaWdoV2F0
ZXJNYXJrT2JqZWN0R2V0dGVyVGhyb3dpbmcpLAorICAgICdjb25zdHJ1Y3Rpb24gZmFpbHMgd2l0
aCBhbiBvYmplY3Qgd2l0aCBhIHRocm93aW5nIGhpZ2hXYXRlck1hcmsgZ2V0dGVyJyk7CisKKyAg
Ly8gU2hvdWxkIG5vdCBmYWlsOgorICBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSgncG90
YXRvJyk7CisgIG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KHt9KTsKKyAgbmV3IEJ5dGVM
ZW5ndGhRdWV1aW5nU3RyYXRlZ3koaGlnaFdhdGVyTWFya09iamVjdEdldHRlcik7CisKK30sICdC
eXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IGNvbnN0cnVjdG9yIGJlaGF2ZXMgYXMgZXhwZWN0ZWQg
d2l0aCBzdHJhbmdlIGFyZ3VtZW50cycpOworCit0ZXN0KCgpID0+IHsKKworICBjb25zdCBzaXpl
ID0gMTAyNDsKKyAgY29uc3QgY2h1bmsgPSB7IGJ5dGVMZW5ndGg6IHNpemUgfTsKKyAgY29uc3Qg
Y2h1bmtHZXR0ZXIgPSB7CisgICAgZ2V0IGJ5dGVMZW5ndGgoKSB7IHJldHVybiBzaXplOyB9Cisg
IH07CisgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCd3b3chJyk7CisgIGNvbnN0IGNodW5rR2V0
dGVyVGhyb3dpbmcgPSB7CisgICAgZ2V0IGJ5dGVMZW5ndGgoKSB7IHRocm93IGVycm9yOyB9Cisg
IH07CisgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAnVHlwZUVycm9yJyB9LCAoKSA9PiBCeXRlTGVu
Z3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKCksICdzaXplIGZhaWxzIHdpdGggdW5k
ZWZpbmVkJyk7CisgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAnVHlwZUVycm9yJyB9LCAoKSA9PiBC
eXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKG51bGwpLCAnc2l6ZSBmYWls
cyB3aXRoIG51bGwnKTsKKyAgYXNzZXJ0X2VxdWFscyhCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5
LnByb3RvdHlwZS5zaXplKCdwb3RhdG8nKSwgdW5kZWZpbmVkLAorICAgICdzaXplIHN1Y2NlZWRz
IHdpdGggdW5kZWZpbmVkIHdpdGggYSByYW5kb20gbm9uLW9iamVjdCB0eXBlJyk7CisgIGFzc2Vy
dF9lcXVhbHMoQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSh7fSksIHVu
ZGVmaW5lZCwKKyAgICAnc2l6ZSBzdWNjZWVkcyB3aXRoIHVuZGVmaW5lZCB3aXRoIGFuIG9iamVj
dCB3aXRob3V0IGh3bSBwcm9wZXJ0eScpOworICBhc3NlcnRfZXF1YWxzKEJ5dGVMZW5ndGhRdWV1
aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoY2h1bmspLCBzaXplLAorICAgICdzaXplIHN1Y2Nl
ZWRzIHdpdGggdGhlIHJpZ2h0IGFtb3VudCB3aXRoIGFuIG9iamVjdCB3aXRoIGEgaHdtJyk7Cisg
IGFzc2VydF9lcXVhbHMoQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZShj
aHVua0dldHRlciksIHNpemUsCisgICAgJ3NpemUgc3VjY2VlZHMgd2l0aCB0aGUgcmlnaHQgYW1v
dW50IHdpdGggYW4gb2JqZWN0IHdpdGggYSBod20gZ2V0dGVyJyk7CisgIGFzc2VydF90aHJvd3Mo
eyBuYW1lOiAnRXJyb3InIH0sICgpID0+IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90
eXBlLnNpemUoY2h1bmtHZXR0ZXJUaHJvd2luZyksCisgICAgJ3NpemUgZmFpbHMgd2l0aCB0aGUg
ZXJyb3IgdGhyb3duIGJ5IHRoZSBnZXR0ZXInKTsKKworfSwgJ0J5dGVMZW5ndGhRdWV1aW5nU3Ry
YXRlZ3kgc2l6ZSBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1bWVudHMnKTsK
KwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgdGhpc1ZhbHVlID0gbnVsbDsKKyAgY29uc3QgcmV0
dXJuVmFsdWUgPSB7ICdyZXR1cm5lZCBmcm9tJzogJ2J5dGVMZW5ndGggZ2V0dGVyJyB9OworICBj
b25zdCBjaHVuayA9IHsKKyAgICBnZXQgYnl0ZUxlbmd0aCgpIHsgcmV0dXJuIHJldHVyblZhbHVl
OyB9CisgIH07CisKKyAgYXNzZXJ0X2VxdWFscyhCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnBy
b3RvdHlwZS5zaXplLmNhbGwodGhpc1ZhbHVlLCBjaHVuayksIHJldHVyblZhbHVlKTsKKworfSwg
J0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUgc2hvdWxkIHdvcmsgZ2Vu
ZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMnKTsKKwordGVzdCgoKSA9PiB7
CisKKyAgY29uc3Qgc3RyYXRlZ3kgPSBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSh7IGhp
Z2hXYXRlck1hcms6IDQgfSk7CisKKyAgYXNzZXJ0X29iamVjdF9lcXVhbHMoT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihzdHJhdGVneSwgJ2hpZ2hXYXRlck1hcmsnKSwKKyAgICB7IHZh
bHVlOiA0LCB3cml0YWJsZTogdHJ1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0
cnVlIH0sCisgICAgJ2hpZ2hXYXRlck1hcmsgcHJvcGVydHkgc2hvdWxkIGJlIGEgZGF0YSBwcm9w
ZXJ0eSB3aXRoIHRoZSB2YWx1ZSBwYXNzZWQgdGhlIGNvbnN0cnVjdG9yJyk7CisgIGFzc2VydF9l
cXVhbHModHlwZW9mIHN0cmF0ZWd5LnNpemUsICdmdW5jdGlvbicpOworCit9LCAnQnl0ZUxlbmd0
aFF1ZXVpbmdTdHJhdGVneSBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBwcm9wZXJ0aWVzJyk7
CisKK3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHN0cmF0ZWd5ID0gbmV3IEJ5dGVMZW5ndGhRdWV1
aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0pOworICBhc3NlcnRfZXF1YWxzKHN0cmF0
ZWd5LmhpZ2hXYXRlck1hcmssIDQpOworCisgIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgPSAxMDsK
KyAgYXNzZXJ0X2VxdWFscyhzdHJhdGVneS5oaWdoV2F0ZXJNYXJrLCAxMCk7CisKKyAgc3RyYXRl
Z3kuaGlnaFdhdGVyTWFyayA9ICdiYW5hbmEnOworICBhc3NlcnRfZXF1YWxzKHN0cmF0ZWd5Lmhp
Z2hXYXRlck1hcmssICdiYW5hbmEnKTsKKworfSwgJ0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3lc
J3MgaGlnaFdhdGVyTWFyayBwcm9wZXJ0eSBjYW4gYmUgc2V0IHRvIGFueXRoaW5nJyk7CisKK2Rv
bmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9jb3VudC1xdWV1
aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzI3YTU1YmY3OGExZjdkNDRi
NjVlNDlkNDZjNmU5ZDIyOTk5M2VhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRl
Z3ktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKKworUEFTUyBDYW4gY29uc3RydWN0IGEg
Q291bnRRdWV1aW5nU3RyYXRlZ3kgd2l0aCBhIHZhbGlkIGhpZ2ggd2F0ZXIgbWFyayAKK1BBU1Mg
Q2FuIGNvbnN0cnVjdCBhIENvdW50UXVldWluZ1N0cmF0ZWd5IHdpdGggYW55IHZhbHVlIGFzIGl0
cyBoaWdoIHdhdGVyIG1hcmsgCitQQVNTIENvdW50UXVldWluZ1N0cmF0ZWd5IGNvbnN0cnVjdG9y
IGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cyAKK1BBU1MgQ291bnRR
dWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUgc2hvdWxkIHdvcmsgZ2VuZXJpY2FsbHkgb24g
aXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMgCitQQVNTIENvdW50UXVldWluZ1N0cmF0ZWd5IHNp
emUgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRzIAorUEFTUyBDb3Vu
dFF1ZXVpbmdTdHJhdGVneSBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBwcm9wZXJ0aWVzIAor
UEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneSdzIGhpZ2hXYXRlck1hcmsgcHJvcGVydHkgY2FuIGJl
IHNldCB0byBhbnl0aGluZyAKK0ZBSUwgTG9hZCBjb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmpzIHdp
dGggU2hhcmVkV29ya2VyIGFzc2VydF91bnJlYWNoZWQ6IFNoYXJlZFdvcmtlciBpcyB1bmF2YWls
YWJsZSBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK0ZBSUwgVW50aXRsZWQgdW5kZWZpbmVkIGlz
IG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmdldFJl
Z2lzdHJhdGlvbicpCitQQVNTIENhbiBjb25zdHJ1Y3QgYSBDb3VudFF1ZXVpbmdTdHJhdGVneSB3
aXRoIGEgdmFsaWQgaGlnaCB3YXRlciBtYXJrIAorUEFTUyBDYW4gY29uc3RydWN0IGEgQ291bnRR
dWV1aW5nU3RyYXRlZ3kgd2l0aCBhbnkgdmFsdWUgYXMgaXRzIGhpZ2ggd2F0ZXIgbWFyayAKK1BB
U1MgQ291bnRRdWV1aW5nU3RyYXRlZ3kgY29uc3RydWN0b3IgYmVoYXZlcyBhcyBleHBlY3RlZCB3
aXRoIHN0cmFuZ2UgYXJndW1lbnRzIAorUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5
cGUuc2l6ZSBzaG91bGQgd29yayBnZW5lcmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3Vt
ZW50cyAKK1BBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3kgc2l6ZSBiZWhhdmVzIGFzIGV4cGVjdGVk
IHdpdGggc3RyYW5nZSBhcmd1bWVudHMgCitQQVNTIENvdW50UXVldWluZ1N0cmF0ZWd5IGluc3Rh
bmNlcyBoYXZlIHRoZSBjb3JyZWN0IHByb3BlcnRpZXMgCitQQVNTIENvdW50UXVldWluZ1N0cmF0
ZWd5J3MgaGlnaFdhdGVyTWFyayBwcm9wZXJ0eSBjYW4gYmUgc2V0IHRvIGFueXRoaW5nIAorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yYWZkMTI2ODg2NWNjOGFiN2U5OGQ3MTNhZGI5OGY5NWRlZTg1OTNjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuaHRtbApAQCAtMCwwICsxLDEyIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3Jp
cHQ+CisKKzxzY3JpcHQgc3JjPSJjb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CisndXNlIHN0cmljdCc7Cit3b3JrZXJfdGVzdCgnY291bnQtcXVldWluZy1zdHJh
dGVneS5qcycpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS5qcyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9jb3Vu
dC1xdWV1aW5nLXN0cmF0ZWd5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhZTAwNjNmNTdkMDlkZDQ3ZmFmNjgx
ZWM4MDlhMGY4Mzc2M2Q1YzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS5q
cwpAQCAtMCwwICsxLDEwNiBAQAorJ3VzZSBzdHJpY3QnOworCitpZiAoc2VsZi5pbXBvcnRTY3Jp
cHRzKSB7CisgIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycp
OworfQorCit0ZXN0KCgpID0+IHsKKworICBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdo
V2F0ZXJNYXJrOiA0IH0pOworCit9LCAnQ2FuIGNvbnN0cnVjdCBhIENvdW50UXVldWluZ1N0cmF0
ZWd5IHdpdGggYSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsnKTsKKwordGVzdCgoKSA9PiB7CisKKyAg
Zm9yIChjb25zdCBoaWdoV2F0ZXJNYXJrIG9mIFstSW5maW5pdHksIE5hTiwgJ2ZvbycsIHt9LCAo
KSA9PiB7fV0pIHsKKyAgICBjb25zdCBzdHJhdGVneSA9IG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVn
eSh7IGhpZ2hXYXRlck1hcmsgfSk7CisgICAgYXNzZXJ0X2VxdWFscyhzdHJhdGVneS5oaWdoV2F0
ZXJNYXJrLCBoaWdoV2F0ZXJNYXJrLCBgJHtoaWdoV2F0ZXJNYXJrfSBnZXRzIHNldCBjb3JyZWN0
bHlgKTsKKyAgfQorCit9LCAnQ2FuIGNvbnN0cnVjdCBhIENvdW50UXVldWluZ1N0cmF0ZWd5IHdp
dGggYW55IHZhbHVlIGFzIGl0cyBoaWdoIHdhdGVyIG1hcmsnKTsKKwordGVzdCgoKSA9PiB7CisK
KyAgY29uc3QgaGlnaFdhdGVyTWFyayA9IDE7CisgIGNvbnN0IGhpZ2hXYXRlck1hcmtPYmplY3RH
ZXR0ZXIgPSB7CisgICAgZ2V0IGhpZ2hXYXRlck1hcmsoKSB7IHJldHVybiBoaWdoV2F0ZXJNYXJr
OyB9CisgIH07CisgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCd3b3chJyk7CisgIGNvbnN0IGhp
Z2hXYXRlck1hcmtPYmplY3RHZXR0ZXJUaHJvd2luZyA9IHsKKyAgICBnZXQgaGlnaFdhdGVyTWFy
aygpIHsgdGhyb3cgZXJyb3I7IH0KKyAgfTsKKworICBhc3NlcnRfdGhyb3dzKHsgbmFtZTogJ1R5
cGVFcnJvcicgfSwgKCkgPT4gbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KCksICdjb25zdHJ1Y3Rp
b24gZmFpbHMgd2l0aCB1bmRlZmluZWQnKTsKKyAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICdUeXBl
RXJyb3InIH0sICgpID0+IG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneShudWxsKSwgJ2NvbnN0cnVj
dGlvbiBmYWlscyB3aXRoIG51bGwnKTsKKyAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICdFcnJvcicg
fSwgKCkgPT4gbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KGhpZ2hXYXRlck1hcmtPYmplY3RHZXR0
ZXJUaHJvd2luZyksCisgICAgJ2NvbnN0cnVjdGlvbiBmYWlscyB3aXRoIGFuIG9iamVjdCB3aXRo
IGEgdGhyb3dpbmcgaGlnaFdhdGVyTWFyayBnZXR0ZXInKTsKKworICAvLyBTaG91bGQgbm90IGZh
aWw6CisgIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSgncG90YXRvJyk7CisgIG5ldyBDb3VudFF1
ZXVpbmdTdHJhdGVneSh7fSk7CisgIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneShoaWdoV2F0ZXJN
YXJrT2JqZWN0R2V0dGVyKTsKKworfSwgJ0NvdW50UXVldWluZ1N0cmF0ZWd5IGNvbnN0cnVjdG9y
IGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cycpOworCisKK3Rlc3Qo
KCkgPT4geworCisgIGNvbnN0IHRoaXNWYWx1ZSA9IG51bGw7CisgIGNvbnN0IGNodW5rID0gewor
ICAgIGdldCBieXRlTGVuZ3RoKCkgeworICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignc2hvdWxk
blwndCBiZSBjYWxsZWQnKTsKKyAgICB9CisgIH07CisKKyAgYXNzZXJ0X2VxdWFscyhDb3VudFF1
ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZS5jYWxsKHRoaXNWYWx1ZSwgY2h1bmspLCAxKTsK
KworfSwgJ0NvdW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplIHNob3VsZCB3b3JrIGdl
bmVyaWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzJyk7CisKK3Rlc3QoKCkgPT4g
eworCisgIGNvbnN0IHNpemUgPSAxMDI0OworICBjb25zdCBjaHVuayA9IHsgYnl0ZUxlbmd0aDog
c2l6ZSB9OworICBjb25zdCBjaHVua0dldHRlciA9IHsKKyAgICBnZXQgYnl0ZUxlbmd0aCgpIHsg
cmV0dXJuIHNpemU7IH0KKyAgfTsKKyAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ3dvdyEnKTsK
KyAgY29uc3QgY2h1bmtHZXR0ZXJUaHJvd2luZyA9IHsKKyAgICBnZXQgYnl0ZUxlbmd0aCgpIHsg
dGhyb3cgZXJyb3I7IH0KKyAgfTsKKworICBhc3NlcnRfZXF1YWxzKENvdW50UXVldWluZ1N0cmF0
ZWd5LnByb3RvdHlwZS5zaXplKCksIDEsICdzaXplIHJldHVybnMgMSB3aXRoIHVuZGVmaW5lZCcp
OworICBhc3NlcnRfZXF1YWxzKENvdW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKG51
bGwpLCAxLCAnc2l6ZSByZXR1cm5zIDEgd2l0aCBudWxsJyk7CisgIGFzc2VydF9lcXVhbHMoQ291
bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoJ3BvdGF0bycpLCAxLCAnc2l6ZSByZXR1
cm5zIDEgd2l0aCBub24tb2JqZWN0IHR5cGUnKTsKKyAgYXNzZXJ0X2VxdWFscyhDb3VudFF1ZXVp
bmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSh7fSksIDEsICdzaXplIHJldHVybnMgMSB3aXRoIGVt
cHR5IG9iamVjdCcpOworICBhc3NlcnRfZXF1YWxzKENvdW50UXVldWluZ1N0cmF0ZWd5LnByb3Rv
dHlwZS5zaXplKGNodW5rKSwgMSwgJ3NpemUgcmV0dXJucyAxIHdpdGggYSBjaHVuaycpOworICBh
c3NlcnRfZXF1YWxzKENvdW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKGNodW5rR2V0
dGVyKSwgMSwgJ3NpemUgcmV0dXJucyAxIHdpdGggY2h1bmsgZ2V0dGVyJyk7CisgIGFzc2VydF9l
cXVhbHMoQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoY2h1bmtHZXR0ZXJUaHJv
d2luZyksIDEsCisgICAgJ3NpemUgcmV0dXJucyAxIHdpdGggY2h1bmsgZ2V0dGVyIHRoYXQgdGhy
b3dzJyk7CisKK30sICdDb3VudFF1ZXVpbmdTdHJhdGVneSBzaXplIGJlaGF2ZXMgYXMgZXhwZWN0
ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cycpOworCit0ZXN0KCgpID0+IHsKKworICBjb25zdCBz
dHJhdGVneSA9IG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSk7
CisKKyAgYXNzZXJ0X29iamVjdF9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihzdHJhdGVneSwgJ2hpZ2hXYXRlck1hcmsnKSwKKyAgICB7IHZhbHVlOiA0LCB3cml0YWJsZTog
dHJ1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0sCisgICAgJ2hpZ2hX
YXRlck1hcmsgcHJvcGVydHkgc2hvdWxkIGJlIGEgZGF0YSBwcm9wZXJ0eSB3aXRoIHRoZSB2YWx1
ZSBwYXNzZWQgdGhlIGNvbnN0cnVjdG9yJyk7CisgIGFzc2VydF9lcXVhbHModHlwZW9mIHN0cmF0
ZWd5LnNpemUsICdmdW5jdGlvbicpOworCit9LCAnQ291bnRRdWV1aW5nU3RyYXRlZ3kgaW5zdGFu
Y2VzIGhhdmUgdGhlIGNvcnJlY3QgcHJvcGVydGllcycpOworCit0ZXN0KCgpID0+IHsKKworICBj
b25zdCBzdHJhdGVneSA9IG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6
IDQgfSk7CisgIGFzc2VydF9lcXVhbHMoc3RyYXRlZ3kuaGlnaFdhdGVyTWFyaywgNCk7CisKKyAg
c3RyYXRlZ3kuaGlnaFdhdGVyTWFyayA9IDEwOworICBhc3NlcnRfZXF1YWxzKHN0cmF0ZWd5Lmhp
Z2hXYXRlck1hcmssIDEwKTsKKworICBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrID0gJ2JhbmFuYSc7
CisgIGFzc2VydF9lcXVhbHMoc3RyYXRlZ3kuaGlnaFdhdGVyTWFyaywgJ2JhbmFuYScpOworCit9
LCAnQ291bnRRdWV1aW5nU3RyYXRlZ3lcJ3MgaGlnaFdhdGVyTWFyayBwcm9wZXJ0eSBjYW4gYmUg
c2V0IHRvIGFueXRoaW5nJyk7CisKK2RvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Jh
ZC1zdHJhdGVnaWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYThhZjM0MTI2OWEyNTQ0OTNlMTUwZGVkNzRhZGVkNDUw
ODJkYjYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKKworUEFTUyBSZWFkYWJsZSBzdHJlYW06IHRocm93
aW5nIHN0cmF0ZWd5LnNpemUgZ2V0dGVyIAorUEFTUyBSZWFkYWJsZSBzdHJlYW06IHN0cmF0ZWd5
LnNpemUgZXJyb3JzIHRoZSBzdHJlYW0gYW5kIHRoZW4gdGhyb3dzIAorUEFTUyBSZWFkYWJsZSBz
dHJlYW06IHN0cmF0ZWd5LnNpemUgZXJyb3JzIHRoZSBzdHJlYW0gYW5kIHRoZW4gcmV0dXJucyBJ
bmZpbml0eSAKK1BBU1MgUmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5zaXplIG1l
dGhvZCAKK1BBU1MgUmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5oaWdoV2F0ZXJN
YXJrIGdldHRlciAKK1BBU1MgUmVhZGFibGUgc3RyZWFtOiBpbnZhbGlkIHN0cmF0ZWd5LmhpZ2hX
YXRlck1hcmsgCitQQVNTIFJlYWRhYmxlIHN0cmVhbTogaW52YWxpZCBzdHJhdGVneS5zaXplIHJl
dHVybiB2YWx1ZSAKK0ZBSUwgTG9hZCBiYWQtc3RyYXRlZ2llcy5qcyB3aXRoIFNoYXJlZFdvcmtl
ciBhc3NlcnRfdW5yZWFjaGVkOiBTaGFyZWRXb3JrZXIgaXMgdW5hdmFpbGFibGUgUmVhY2hlZCB1
bnJlYWNoYWJsZSBjb2RlCitGQUlMIFVudGl0bGVkIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0
IChldmFsdWF0aW5nICduYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdpc3RyYXRpb24nKQor
UEFTUyBSZWFkYWJsZSBzdHJlYW06IHRocm93aW5nIHN0cmF0ZWd5LnNpemUgZ2V0dGVyIAorUEFT
UyBSZWFkYWJsZSBzdHJlYW06IHN0cmF0ZWd5LnNpemUgZXJyb3JzIHRoZSBzdHJlYW0gYW5kIHRo
ZW4gdGhyb3dzIAorUEFTUyBSZWFkYWJsZSBzdHJlYW06IHN0cmF0ZWd5LnNpemUgZXJyb3JzIHRo
ZSBzdHJlYW0gYW5kIHRoZW4gcmV0dXJucyBJbmZpbml0eSAKK1BBU1MgUmVhZGFibGUgc3RyZWFt
OiB0aHJvd2luZyBzdHJhdGVneS5zaXplIG1ldGhvZCAKK1BBU1MgUmVhZGFibGUgc3RyZWFtOiB0
aHJvd2luZyBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIGdldHRlciAKK1BBU1MgUmVhZGFibGUgc3Ry
ZWFtOiBpbnZhbGlkIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgCitQQVNTIFJlYWRhYmxlIHN0cmVh
bTogaW52YWxpZCBzdHJhdGVneS5zaXplIHJldHVybiB2YWx1ZSAKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGZhYjkzMTMyMzliNzdjNzY2YTkzMjJiNDM0MWVmYzUzYzI2ZGJm
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmh0bWwKQEAg
LTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3Rlc3QtaGVs
cGVycy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3QtaW5pdGlh
bGl6ZXIuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iYmFkLXN0cmF0ZWdpZXMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KKyd1c2Ugc3RyaWN0JzsKK3dvcmtlcl90ZXN0KCdiYWQtc3RyYXRl
Z2llcy5qcycpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRl
Z2llcy5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjMDUz
YWI2MmJjZmUyMWU0MmM1NWIyMGJiY2JhYWUyMjZiYWY4YjQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5qcwpAQCAtMCwwICsxLDE3NSBAQAorJ3VzZSBzdHJp
Y3QnOworCitpZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7CisgIHNlbGYuaW1wb3J0U2NyaXB0cygn
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOworfQorCit0ZXN0KCgpID0+IHsKKworICBjb25z
dCB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7CisKKyAgYXNzZXJ0X3Ro
cm93cyh0aGVFcnJvciwgKCkgPT4geworICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7fSwgeworICAg
ICAgZ2V0IHNpemUoKSB7CisgICAgICAgIHRocm93IHRoZUVycm9yOworICAgICAgfSwKKyAgICAg
IGhpZ2hXYXRlck1hcms6IDUKKyAgICB9KTsKKyAgfSwgJ2NvbnN0cnVjdGlvbiBzaG91bGQgcmUt
dGhyb3cgdGhlIGVycm9yJyk7CisKK30sICdSZWFkYWJsZSBzdHJlYW06IHRocm93aW5nIHN0cmF0
ZWd5LnNpemUgZ2V0dGVyJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBjb250
cm9sbGVyRXJyb3IgPSB7IG5hbWU6ICdjb250cm9sbGVyIGVycm9yJyB9OworICBjb25zdCB0aHJv
d25FcnJvciA9IHsgbmFtZTogJ3Rocm93biBlcnJvcicgfTsKKworICBsZXQgY29udHJvbGxlcjsK
KyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oCisgICAgeworICAgICAgc3RhcnQoYykg
eworICAgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAg
IHNpemUoKSB7CisgICAgICAgIGNvbnRyb2xsZXIuZXJyb3IoY29udHJvbGxlckVycm9yKTsKKyAg
ICAgICAgdGhyb3cgdGhyb3duRXJyb3I7CisgICAgICB9LAorICAgICAgaGlnaFdhdGVyTWFyazog
NQorICAgIH0KKyAgKTsKKworICBhc3NlcnRfdGhyb3dzKHRocm93bkVycm9yLCAoKSA9PiBjb250
cm9sbGVyLmVucXVldWUoJ2EnKSwgJ2VucXVldWUgc2hvdWxkIHJlLXRocm93IHRoZSBlcnJvcicp
OworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgY29udHJvbGxlckVycm9yLCBycy5nZXRS
ZWFkZXIoKS5jbG9zZWQpOworCit9LCAnUmVhZGFibGUgc3RyZWFtOiBzdHJhdGVneS5zaXplIGVy
cm9ycyB0aGUgc3RyZWFtIGFuZCB0aGVuIHRocm93cycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7
CisKKyAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICdteSBlcnJvcicgfTsKKworICBsZXQgY29u
dHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oCisgICAgeworICAgICAg
c3RhcnQoYykgeworICAgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgIH0KKyAgICB9LAorICAg
IHsKKyAgICAgIHNpemUoKSB7CisgICAgICAgIGNvbnRyb2xsZXIuZXJyb3IodGhlRXJyb3IpOwor
ICAgICAgICByZXR1cm4gSW5maW5pdHk7CisgICAgICB9LAorICAgICAgaGlnaFdhdGVyTWFyazog
NQorICAgIH0KKyAgKTsKKworICBhc3NlcnRfdGhyb3dzKG5ldyBSYW5nZUVycm9yKCksICgpID0+
IGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpLCAnZW5xdWV1ZSBzaG91bGQgdGhyb3cgYSBSYW5nZUVy
cm9yJyk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcnMuZ2V0UmVh
ZGVyKCkuY2xvc2VkLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKKwor
fSwgJ1JlYWRhYmxlIHN0cmVhbTogc3RyYXRlZ3kuc2l6ZSBlcnJvcnMgdGhlIHN0cmVhbSBhbmQg
dGhlbiByZXR1cm5zIEluZmluaXR5Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgY29u
c3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOworICBjb25zdCBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSgKKyAgICB7CisgICAgICBzdGFydChjKSB7CisgICAgICAgIGFz
c2VydF90aHJvd3ModGhlRXJyb3IsICgpID0+IGMuZW5xdWV1ZSgnYScpLCAnZW5xdWV1ZSBzaG91
bGQgdGhyb3cgdGhlIGVycm9yJyk7CisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICBzaXpl
KCkgeworICAgICAgICB0aHJvdyB0aGVFcnJvcjsKKyAgICAgIH0sCisgICAgICBoaWdoV2F0ZXJN
YXJrOiA1CisgICAgfQorICApOworCisgIHJldHVybiBycy5nZXRSZWFkZXIoKS5jbG9zZWQuY2F0
Y2goZSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ2Nsb3NlZCBzaG91bGQg
cmVqZWN0IHdpdGggdGhlIGVycm9yJyk7CisgIH0pOworCit9LCAnUmVhZGFibGUgc3RyZWFtOiB0
aHJvd2luZyBzdHJhdGVneS5zaXplIG1ldGhvZCcpOworCit0ZXN0KCgpID0+IHsKKworICBjb25z
dCB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7CisKKyAgYXNzZXJ0X3Ro
cm93cyh0aGVFcnJvciwgKCkgPT4geworICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7fSwgeworICAg
ICAgc2l6ZSgpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgICB9LAorICAgICAgZ2V0IGhpZ2hX
YXRlck1hcmsoKSB7CisgICAgICAgIHRocm93IHRoZUVycm9yOworICAgICAgfQorICAgIH0pOwor
ICB9LCAnY29uc3RydWN0aW9uIHNob3VsZCByZS10aHJvdyB0aGUgZXJyb3InKTsKKworfSwgJ1Jl
YWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayBnZXR0ZXInKTsK
KwordGVzdCgoKSA9PiB7CisKKyAgZm9yIChjb25zdCBoaWdoV2F0ZXJNYXJrIG9mIFstMSwgLUlu
ZmluaXR5XSkgeworICAgIGFzc2VydF90aHJvd3MobmV3IFJhbmdlRXJyb3IoKSwgKCkgPT4gewor
ICAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHt9LCB7CisgICAgICAgIHNpemUoKSB7CisgICAgICAg
ICAgcmV0dXJuIDE7CisgICAgICAgIH0sCisgICAgICAgIGhpZ2hXYXRlck1hcmsKKyAgICAgIH0p
OworICAgIH0sICdjb25zdHJ1Y3Rpb24gc2hvdWxkIHRocm93IGEgUmFuZ2VFcnJvciBmb3IgJyAr
IGhpZ2hXYXRlck1hcmspOworICB9CisKKyAgZm9yIChjb25zdCBoaWdoV2F0ZXJNYXJrIG9mIFtO
YU4sICdmb28nLCB7fV0pIHsKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkg
PT4geworICAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHt9LCB7CisgICAgICAgIHNpemUoKSB7Cisg
ICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0sCisgICAgICAgIGhpZ2hXYXRlck1hcmsKKyAg
ICAgIH0pOworICAgIH0sICdjb25zdHJ1Y3Rpb24gc2hvdWxkIHRocm93IGEgVHlwZUVycm9yIGZv
ciAnICsgaGlnaFdhdGVyTWFyayk7CisgIH0KKworfSwgJ1JlYWRhYmxlIHN0cmVhbTogaW52YWxp
ZCBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAg
Y29uc3QgcHJvbWlzZXMgPSBbXTsKKyAgZm9yIChjb25zdCBzaXplIG9mIFtOYU4sIC1JbmZpbml0
eSwgSW5maW5pdHksIC0xXSkgeworICAgIGxldCB0aGVFcnJvcjsKKyAgICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSgKKyAgICAgIHsKKyAgICAgICAgc3RhcnQoYykgeworICAgICAgICAg
IHRyeSB7CisgICAgICAgICAgICBjLmVucXVldWUoJ2hpJyk7CisgICAgICAgICAgICBhc3NlcnRf
dW5yZWFjaGVkKCdlbnF1ZXVlIGRpZG5cJ3QgdGhyb3cnKTsKKyAgICAgICAgICB9IGNhdGNoIChl
cnJvcikgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhlcnJvci5uYW1lLCAnUmFuZ2VFcnJv
cicsICdlbnF1ZXVlIHNob3VsZCB0aHJvdyBhIFJhbmdlRXJyb3IgZm9yICcgKyBzaXplKTsKKyAg
ICAgICAgICAgIHRoZUVycm9yID0gZXJyb3I7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICB9LAorICAgICAgeworICAgICAgICBzaXplKCkgeworICAgICAgICAgIHJldHVybiBzaXplOwor
ICAgICAgICB9LAorICAgICAgICBoaWdoV2F0ZXJNYXJrOiA1CisgICAgICB9CisgICAgKTsKKwor
ICAgIHByb21pc2VzLnB1c2gocnMuZ2V0UmVhZGVyKCkuY2xvc2VkLmNhdGNoKGUgPT4geworICAg
ICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGgg
dGhlIGVycm9yIGZvciAnICsgc2l6ZSk7CisgICAgfSkpOworICB9CisKKyAgcmV0dXJuIFByb21p
c2UuYWxsKHByb21pc2VzKTsKKworfSwgJ1JlYWRhYmxlIHN0cmVhbTogaW52YWxpZCBzdHJhdGVn
eS5zaXplIHJldHVybiB2YWx1ZScpOworCitkb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11
bmRlcmx5aW5nLXNvdXJjZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5Y2ZjYTViNzYwYzQx
MTk0MTUxZTc4NjJmODRkNWE3YjA2ZDE1ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQ2IEBACisK
K1BBU1MgVW5kZXJseWluZyBzb3VyY2Ugc3RhcnQ6IHRocm93aW5nIGdldHRlciAKK1BBU1MgVW5k
ZXJseWluZyBzb3VyY2Ugc3RhcnQ6IHRocm93aW5nIG1ldGhvZCAKK1BBU1MgVW5kZXJseWluZyBz
b3VyY2U6IHRocm93aW5nIHB1bGwgZ2V0dGVyIChpbml0aWFsIHB1bGwpIAorUEFTUyBVbmRlcmx5
aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBtZXRob2QgKGluaXRpYWwgcHVsbCkgCitQQVNTIFVu
ZGVybHlpbmcgc291cmNlIHB1bGw6IHRocm93aW5nIGdldHRlciAoc2Vjb25kIHB1bGwpIAorUEFT
UyBVbmRlcmx5aW5nIHNvdXJjZSBwdWxsOiB0aHJvd2luZyBtZXRob2QgKHNlY29uZCBwdWxsKSAK
K1BBU1MgVW5kZXJseWluZyBzb3VyY2UgY2FuY2VsOiB0aHJvd2luZyBnZXR0ZXIgCitQQVNTIFVu
ZGVybHlpbmcgc291cmNlIGNhbmNlbDogdGhyb3dpbmcgbWV0aG9kIAorUEFTUyBVbmRlcmx5aW5n
IHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGFuIGVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91
bGQgbm90IHRocm93IAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9u
IGEgbm9uLWVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93IAorUEFTUyBVbmRl
cmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGEgY2xvc2VkIHN0cmVhbSBzaG91bGQg
dGhyb3cgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYW4gZXJy
b3JlZCBzdHJlYW0gc2hvdWxkIHRocm93IAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGlu
ZyBjbG9zZSB0d2ljZSBvbiBhbiBlbXB0eSBzdHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNvbmQg
dGltZSAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgdHdpY2Ugb24gYSBu
b24tZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUgCitQQVNTIFVuZGVy
bHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIG9uIGFuIGVtcHR5IGNhbmNlbGVkIHN0cmVhbSBz
aG91bGQgbm90IHRocm93IAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBv
biBhIG5vbi1lbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdyAKK1BBU1MgVW5k
ZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgYWZ0ZXIgZXJyb3Igc2hvdWxkIHRocm93IAor
UEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciB0d2ljZSBzaG91bGQgdGhyb3cg
dGhlIHNlY29uZCB0aW1lIAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBh
ZnRlciBjbG9zZSBzaG91bGQgdGhyb3cgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5n
IGVycm9yIGFuZCByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGZyb20gc3RhcnQgc2hvdWxk
IGNhdXNlIHRoZSBzdHJlYW0gdG8gZXJyb3Igd2l0aCB0aGUgZmlyc3QgZXJyb3IgCitQQVNTIFVu
ZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9yIGFuZCByZXR1cm5pbmcgYSByZWplY3RlZCBw
cm9taXNlIGZyb20gcHVsbCBzaG91bGQgY2F1c2UgdGhlIHN0cmVhbSB0byBlcnJvciB3aXRoIHRo
ZSBmaXJzdCBlcnJvciAKK0ZBSUwgTG9hZCBiYWQtdW5kZXJseWluZy1zb3VyY2VzLmpzIHdpdGgg
U2hhcmVkV29ya2VyIGFzc2VydF91bnJlYWNoZWQ6IFNoYXJlZFdvcmtlciBpcyB1bmF2YWlsYWJs
ZSBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK0ZBSUwgVW50aXRsZWQgdW5kZWZpbmVkIGlzIG5v
dCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmdldFJlZ2lz
dHJhdGlvbicpCitQQVNTIFVuZGVybHlpbmcgc291cmNlIHN0YXJ0OiB0aHJvd2luZyBnZXR0ZXIg
CitQQVNTIFVuZGVybHlpbmcgc291cmNlIHN0YXJ0OiB0aHJvd2luZyBtZXRob2QgCitQQVNTIFVu
ZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIGdldHRlciAoaW5pdGlhbCBwdWxsKSAKK1BB
U1MgVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgbWV0aG9kIChpbml0aWFsIHB1bGwp
IAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBwdWxsOiB0aHJvd2luZyBnZXR0ZXIgKHNlY29uZCBw
dWxsKSAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2UgcHVsbDogdGhyb3dpbmcgbWV0aG9kIChzZWNv
bmQgcHVsbCkgCitQQVNTIFVuZGVybHlpbmcgc291cmNlIGNhbmNlbDogdGhyb3dpbmcgZ2V0dGVy
IAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBjYW5jZWw6IHRocm93aW5nIG1ldGhvZCAKK1BBU1Mg
VW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBlbXB0eSBjYW5jZWxlZCBz
dHJlYW0gc2hvdWxkIG5vdCB0aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcg
ZW5xdWV1ZSBvbiBhIG5vbi1lbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdyAK
K1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhIGNsb3NlZCBzdHJl
YW0gc2hvdWxkIHRocm93IAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVl
IG9uIGFuIGVycm9yZWQgc3RyZWFtIHNob3VsZCB0aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3Vy
Y2U6IGNhbGxpbmcgY2xvc2UgdHdpY2Ugb24gYW4gZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0
aGUgc2Vjb25kIHRpbWUgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3
aWNlIG9uIGEgbm9uLWVtcHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lIAor
UEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBvbiBhbiBlbXB0eSBjYW5jZWxl
ZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxp
bmcgY2xvc2Ugb24gYSBub24tZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cg
CitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIGFmdGVyIGVycm9yIHNob3Vs
ZCB0aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgdHdpY2Ugc2hv
dWxkIHRocm93IHRoZSBzZWNvbmQgdGltZSAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxp
bmcgZXJyb3IgYWZ0ZXIgY2xvc2Ugc2hvdWxkIHRocm93IAorUEFTUyBVbmRlcmx5aW5nIHNvdXJj
ZTogY2FsbGluZyBlcnJvciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHN0
YXJ0IHNob3VsZCBjYXVzZSB0aGUgc3RyZWFtIHRvIGVycm9yIHdpdGggdGhlIGZpcnN0IGVycm9y
IAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhbmQgcmV0dXJuaW5nIGEg
cmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHB1bGwgc2hvdWxkIGNhdXNlIHRoZSBzdHJlYW0gdG8gZXJy
b3Igd2l0aCB0aGUgZmlyc3QgZXJyb3IgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11
bmRlcmx5aW5nLXNvdXJjZXMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJj
ZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lY2IxMWZlYWIxMmM0NzZjNDcxZmQyZGM1ZGJmYjMwZDlkN2Rm
YjU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNl
cy5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXJzL3Jlc291cmNl
cy90ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90
ZXN0LWluaXRpYWxpemVyLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9ImJhZC11bmRlcmx5
aW5nLXNvdXJjZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyd1c2Ugc3RyaWN0JzsKK3dvcmtl
cl90ZXN0KCdiYWQtdW5kZXJseWluZy1zb3VyY2VzLmpzJyk7Cis8L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuanMgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9i
YWQtdW5kZXJseWluZy1zb3VyY2VzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyZmQwZmRjOTI5OWQ1ZDVkZTRm
NTYyOGRkMTlkNTlmZDI5MzAwZGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQt
dW5kZXJseWluZy1zb3VyY2VzLmpzCkBAIC0wLDAgKzEsMzgzIEBACisndXNlIHN0cmljdCc7CisK
K2lmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKKyAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzJyk7Cit9CisKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgdGhl
RXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOworCisgIGFzc2VydF90aHJvd3Mo
dGhlRXJyb3IsICgpID0+IHsKKyAgICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgZ2V0IHN0
YXJ0KCkgeworICAgICAgICB0aHJvdyB0aGVFcnJvcjsKKyAgICAgIH0KKyAgICB9KTsKKyAgfSwg
J2NvbnN0cnVjdGluZyB0aGUgc3RyZWFtIHNob3VsZCByZS10aHJvdyB0aGUgZXJyb3InKTsKKwor
fSwgJ1VuZGVybHlpbmcgc291cmNlIHN0YXJ0OiB0aHJvd2luZyBnZXR0ZXInKTsKKworCit0ZXN0
KCgpID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5n
Jyk7CisKKyAgYXNzZXJ0X3Rocm93cyh0aGVFcnJvciwgKCkgPT4geworICAgIG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisgICAgICBzdGFydCgpIHsKKyAgICAgICAgdGhyb3cgdGhlRXJyb3I7CisgICAg
ICB9CisgICAgfSk7CisgIH0sICdjb25zdHJ1Y3RpbmcgdGhlIHN0cmVhbSBzaG91bGQgcmUtdGhy
b3cgdGhlIGVycm9yJyk7CisKK30sICdVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dpbmcg
bWV0aG9kJyk7CisKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHRoZUVycm9yID0g
bmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oeworICAgIGdldCBwdWxsKCkgeworICAgICAgdGhyb3cgdGhlRXJyb3I7CisgICAgfQor
ICB9KTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCBycy5nZXRSZWFk
ZXIoKS5jbG9zZWQpOworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgZ2V0
dGVyIChpbml0aWFsIHB1bGwpJyk7CisKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0
IHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKKyAgY29uc3QgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwoKSB7CisgICAgICB0aHJvdyB0aGVFcnJvcjsK
KyAgICB9CisgIH0pOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJz
LmdldFJlYWRlcigpLmNsb3NlZCk7CisKK30sICdVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcg
cHVsbCBtZXRob2QgKGluaXRpYWwgcHVsbCknKTsKKworCitwcm9taXNlX3Rlc3QodCA9PiB7CisK
KyAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOworCisgIGxl
dCBjb3VudGVyID0gMDsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIGdl
dCBwdWxsKCkgeworICAgICAgKytjb3VudGVyOworICAgICAgaWYgKGNvdW50ZXIgPT09IDEpIHsK
KyAgICAgICAgcmV0dXJuIGMgPT4gYy5lbnF1ZXVlKCdhJyk7CisgICAgICB9CisKKyAgICAgIHRo
cm93IHRoZUVycm9yOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRl
cigpOworCisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHIg
PT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBm
YWxzZSB9LCAndGhlIGNodW5rIHJlYWQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKyAgICB9KSwKKyAg
ICBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJlYWRlci5jbG9zZWQpCisgIF0pOworCit9
LCAnVW5kZXJseWluZyBzb3VyY2UgcHVsbDogdGhyb3dpbmcgZ2V0dGVyIChzZWNvbmQgcHVsbCkn
KTsKKworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJy
b3IoJ2EgdW5pcXVlIHN0cmluZycpOworCisgIGxldCBjb3VudGVyID0gMDsKKyAgY29uc3QgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwoYykgeworICAgICAgKytjb3VudGVyOwor
ICAgICAgaWYgKGNvdW50ZXIgPT09IDEpIHsKKyAgICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAg
ICAgIHJldHVybjsKKyAgICAgIH0KKworICAgICAgdGhyb3cgdGhlRXJyb3I7CisgICAgfQorICB9
KTsKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgcmV0dXJuIFByb21pc2Uu
YWxsKFsKKyAgICByZWFkZXIucmVhZCgpLnRoZW4ociA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0
X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICd0aGUgY2h1bmsgcmVhZCBz
aG91bGQgYmUgY29ycmVjdCcpOworICAgIH0pLAorICAgIHByb21pc2VfcmVqZWN0cyh0LCB0aGVF
cnJvciwgcmVhZGVyLmNsb3NlZCkKKyAgXSk7CisKK30sICdVbmRlcmx5aW5nIHNvdXJjZSBwdWxs
OiB0aHJvd2luZyBtZXRob2QgKHNlY29uZCBwdWxsKScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7
CisKKyAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOworICBj
b25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgZ2V0IGNhbmNlbCgpIHsKKyAgICAg
IHRocm93IHRoZUVycm9yOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0
cyh0LCB0aGVFcnJvciwgcnMuY2FuY2VsKCkpOworCit9LCAnVW5kZXJseWluZyBzb3VyY2UgY2Fu
Y2VsOiB0aHJvd2luZyBnZXR0ZXInKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0
IHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKKyAgY29uc3QgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgIGNhbmNlbCgpIHsKKyAgICAgIHRocm93IHRoZUVycm9y
OworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwg
cnMuY2FuY2VsKCkpOworCit9LCAnVW5kZXJseWluZyBzb3VyY2UgY2FuY2VsOiB0aHJvd2luZyBt
ZXRob2QnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNv
bnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisKKyAgcnMuY2FuY2VsKCk7CisgIGNvbnRyb2xs
ZXIuZW5xdWV1ZSgnYScpOyAvLyBDYWxsaW5nIGVucXVldWUgYWZ0ZXIgY2FuY2VsaW5nIHNob3Vs
ZCBub3QgdGhyb3cgYW55dGhpbmcuCisKKyAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZDsK
KworfSwgJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYW4gZW1wdHkgY2Fu
Y2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsK
KworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewor
ICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAgYy5lbnF1ZXVlKCdi
Jyk7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisgIHJzLmNhbmNlbCgp
OworICBjb250cm9sbGVyLmVucXVldWUoJ2MnKTsgLy8gQ2FsbGluZyBlbnF1ZXVlIGFmdGVyIGNh
bmNlbGluZyBzaG91bGQgbm90IHRocm93IGFueXRoaW5nLgorCisgIHJldHVybiBycy5nZXRSZWFk
ZXIoKS5jbG9zZWQ7CisKK30sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9u
IGEgbm9uLWVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93Jyk7CisKK3Byb21p
c2VfdGVzdCgoKSA9PiB7CisKKyAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3Rh
cnQoYykgeworICAgICAgYy5jbG9zZSgpOworICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCksICgpID0+IGMuZW5xdWV1ZSgnYScpLCAnY2FsbCB0byBlbnF1ZXVlIHNob3VsZCB0aHJv
dyBhIFR5cGVFcnJvcicpOworICAgIH0KKyAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOworCit9LCAn
VW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhIGNsb3NlZCBzdHJlYW0gc2hv
dWxkIHRocm93Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9
IG5ldyBFcnJvcignYm9vJyk7CisgIGNvbnN0IGNsb3NlZCA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
CisgICAgc3RhcnQoYykgeworICAgICAgYy5lcnJvcih0aGVFcnJvcik7CisgICAgICBhc3NlcnRf
dGhyb3dzKHRoZUVycm9yLCAoKSA9PiBjLmVucXVldWUoJ2EnKSwgJ2NhbGwgdG8gZW5xdWV1ZSBz
aG91bGQgdGhyb3cgdGhlIGVycm9yJyk7CisgICAgfQorICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7
CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgY2xvc2VkKTsKKworfSwg
J1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYW4gZXJyb3JlZCBzdHJlYW0g
c2hvdWxkIHRocm93Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgcmV0dXJuIG5ldyBS
ZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5jbG9zZSgpOworICAgICAg
YXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGMuY2xvc2UoKSwgJ3NlY29uZCBj
YWxsIHRvIGNsb3NlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOworICAgIH0KKyAgfSkuZ2V0
UmVhZGVyKCkuY2xvc2VkOworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ug
dHdpY2Ugb24gYW4gZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUnKTsK
KworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKKyAg
bGV0IHJlYWRDYWxsZWQgPSBmYWxzZTsKKyAgY29uc3QgcmVhZGVyID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICAgIGMuY2xv
c2UoKTsKKyAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjLmNsb3Nl
KCksICdzZWNvbmQgY2FsbCB0byBjbG9zZSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKKyAg
ICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKKyAgICB9CisgIH0pLmdldFJlYWRlcigpOworCisgIHJl
dHVybiBQcm9taXNlLmFsbChbCisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4geworICAgICAg
YXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAncmVh
ZCgpIHNob3VsZCByZWFkIHRoZSBlbnF1ZXVlZCBjaHVuaycpOworICAgICAgcmVhZENhbGxlZCA9
IHRydWU7CisgICAgfSksCisgICAgcmVhZGVyLmNsb3NlZC50aGVuKCgpID0+IHsKKyAgICAgIGFz
c2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKKyAgICAgIGFzc2VydF90cnVlKHJlYWRDYWxsZWQpOwor
ICAgIH0pCisgIF0pOworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgdHdp
Y2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUnKTsK
KworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgbGV0IHN0YXJ0
Q2FsbGVkID0gZmFsc2U7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBz
dGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1
ZTsKKyAgICB9CisgIH0pOworCisgIHJzLmNhbmNlbCgpOworICBjb250cm9sbGVyLmNsb3NlKCk7
IC8vIENhbGxpbmcgY2xvc2UgYWZ0ZXIgY2FuY2VsaW5nIHNob3VsZCBub3QgdGhyb3cgYW55dGhp
bmcuCisKKyAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKCgpID0+IHsKKyAgICBh
c3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7CisgIH0pOworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6
IGNhbGxpbmcgY2xvc2Ugb24gYW4gZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhy
b3cnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgbGV0
IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
KyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgIGMuZW5xdWV1ZSgn
YScpOworICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOworICAgIH0KKyAgfSk7CisKKyAgcnMuY2Fu
Y2VsKCk7CisgIGNvbnRyb2xsZXIuY2xvc2UoKTsgLy8gQ2FsbGluZyBjbG9zZSBhZnRlciBjYW5j
ZWxpbmcgc2hvdWxkIG5vdCB0aHJvdyBhbnl0aGluZy4KKworICByZXR1cm4gcnMuZ2V0UmVhZGVy
KCkuY2xvc2VkLnRoZW4oKCkgPT4geworICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKKyAg
fSk7CisKK30sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBvbiBhIG5vbi1lbXB0
eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdycpOworCitwcm9taXNlX3Rlc3QoKCkg
PT4geworCisgIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdib28nKTsKKyAgbGV0IHN0YXJ0
Q2FsbGVkID0gZmFsc2U7CisKKyAgY29uc3QgY2xvc2VkID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
KyAgICBzdGFydChjKSB7CisgICAgICBjLmVycm9yKHRoZUVycm9yKTsKKyAgICAgIGFzc2VydF90
aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjLmNsb3NlKCksICdjYWxsIHRvIGNsb3NlIHNo
b3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOworICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOworICAg
IH0KKyAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOworCisgIHJldHVybiBjbG9zZWQuY2F0Y2goZSA9
PiB7CisgICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOworICAgIGFzc2VydF9lcXVhbHMoZSwg
dGhlRXJyb3IsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOworICB9KTsK
KworfSwgJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIGFmdGVyIGVycm9yIHNob3Vs
ZCB0aHJvdycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHRoZUVycm9yID0g
bmV3IEVycm9yKCdib28nKTsKKyAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisKKyAgY29uc3Qg
Y2xvc2VkID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVy
cm9yKHRoZUVycm9yKTsKKyAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9
PiBjLmVycm9yKCksICdzZWNvbmQgY2FsbCB0byBlcnJvciBzaG91bGQgdGhyb3cgYSBUeXBlRXJy
b3InKTsKKyAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKKyAgICB9CisgIH0pLmdldFJlYWRlcigp
LmNsb3NlZDsKKworICByZXR1cm4gY2xvc2VkLmNhdGNoKGUgPT4geworICAgIGFzc2VydF90cnVl
KHN0YXJ0Q2FsbGVkKTsKKyAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnY2xvc2VkIHNo
b3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKKyAgfSk7CisKK30sICdVbmRlcmx5aW5nIHNv
dXJjZTogY2FsbGluZyBlcnJvciB0d2ljZSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lJyk7
CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisK
KyAgY29uc3QgY2xvc2VkID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7Cisg
ICAgICBjLmNsb3NlKCk7CisgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkg
PT4gYy5lcnJvcigpLCAnc2Vjb25kIGNhbGwgdG8gZXJyb3Igc2hvdWxkIHRocm93IGEgVHlwZUVy
cm9yJyk7CisgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgfQorICB9KS5nZXRSZWFkZXIo
KS5jbG9zZWQ7CisKKyAgcmV0dXJuIGNsb3NlZC50aGVuKCgpID0+IGFzc2VydF90cnVlKHN0YXJ0
Q2FsbGVkKSk7CisKK30sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhZnRlciBj
bG9zZSBzaG91bGQgdGhyb3cnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgc3Rh
cnRDYWxsZWQgPSBmYWxzZTsKKyAgY29uc3QgZmlyc3RFcnJvciA9IG5ldyBFcnJvcignMScpOwor
ICBjb25zdCBzZWNvbmRFcnJvciA9IG5ldyBFcnJvcignMicpOworCisgIGNvbnN0IGNsb3NlZCA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lcnJvcihmaXJz
dEVycm9yKTsKKyAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKKyAgICAgIHJldHVybiBQcm9taXNl
LnJlamVjdChzZWNvbmRFcnJvcik7CisgICAgfQorICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7CisK
KyAgcmV0dXJuIGNsb3NlZC5jYXRjaChlID0+IHsKKyAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxl
ZCk7CisgICAgYXNzZXJ0X2VxdWFscyhlLCBmaXJzdEVycm9yLCAnY2xvc2VkIHNob3VsZCByZWpl
Y3Qgd2l0aCB0aGUgZmlyc3QgZXJyb3InKTsKKyAgfSk7CisKK30sICdVbmRlcmx5aW5nIHNvdXJj
ZTogY2FsbGluZyBlcnJvciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHN0
YXJ0IHNob3VsZCBjYXVzZSB0aGUgc3RyZWFtIHRvIGVycm9yICcgKworICAgJ3dpdGggdGhlIGZp
cnN0IGVycm9yJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHN0YXJ0Q2FsbGVk
ID0gZmFsc2U7CisgIGNvbnN0IGZpcnN0RXJyb3IgPSBuZXcgRXJyb3IoJzEnKTsKKyAgY29uc3Qg
c2Vjb25kRXJyb3IgPSBuZXcgRXJyb3IoJzInKTsKKworICBjb25zdCBjbG9zZWQgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIHB1bGwoYykgeworICAgICAgYy5lcnJvcihmaXJzdEVycm9yKTsK
KyAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKKyAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChz
ZWNvbmRFcnJvcik7CisgICAgfQorICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7CisKKyAgcmV0dXJu
IGNsb3NlZC5jYXRjaChlID0+IHsKKyAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7CisgICAg
YXNzZXJ0X2VxdWFscyhlLCBmaXJzdEVycm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0
aGUgZmlyc3QgZXJyb3InKTsKKyAgfSk7CisKK30sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGlu
ZyBlcnJvciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHB1bGwgc2hvdWxk
IGNhdXNlIHRoZSBzdHJlYW0gdG8gZXJyb3IgJyArCisgICAnd2l0aCB0aGUgZmlyc3QgZXJyb3In
KTsKKworZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjc2ZTA2ODZhZmNhZWJjOTNmMmU0ODFlMGYxNTgyOTdmNTM3MTExYwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwz
NCBAQAorCitQQVNTIENhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9y
IGluZGlyZWN0bHkgCitQQVNTIENhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBj
b25zdHJ1Y3RvciBpbmRpcmVjdGx5IAorUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuY2Fu
Y2VsIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCitQQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlw
ZS5nZXRSZWFkZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKK1BBU1MgUmVhZGFibGVTdHJlYW0u
cHJvdG90eXBlLnRlZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAorUEFTUyBSZWFkYWJsZVN0cmVh
bVJlYWRlciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIG9uIGl0cyBhcmd1bWVudCAKK1BBU1MgUmVh
ZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLmNsb3NlZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNr
IAorUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUuY2FuY2VsIGVuZm9yY2VzIGEg
YnJhbmQgY2hlY2sgCitQQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5yZWFkIGVu
Zm9yY2VzIGEgYnJhbmQgY2hlY2sgCitQQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlw
ZS5yZWxlYXNlTG9jayBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAorUEFTUyBSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjayBvbiBpdHMgYXJndW1lbnQgCitQQVNT
IFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBjYW4ndCBiZSBnaXZlbiBhIGZ1bGx5LWNvbnN0cnVj
dGVkIFJlYWRhYmxlU3RyZWFtIAorUEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90
eXBlLmNsb3NlIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCitQQVNTIFJlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlci5wcm90b3R5cGUuZW5xdWV1ZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAorUEFTUyBS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLmVycm9yIGVuZm9yY2VzIGEgYnJhbmQg
Y2hlY2sgCitGQUlMIExvYWQgYnJhbmQtY2hlY2tzLmpzIHdpdGggU2hhcmVkV29ya2VyIGFzc2Vy
dF91bnJlYWNoZWQ6IFNoYXJlZFdvcmtlciBpcyB1bmF2YWlsYWJsZSBSZWFjaGVkIHVucmVhY2hh
YmxlIGNvZGUKK0ZBSUwgVW50aXRsZWQgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1
YXRpbmcgJ25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmdldFJlZ2lzdHJhdGlvbicpCitQQVNTIENh
biBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0bHkgCitQ
QVNTIENhbiBnZXQgdGhlIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBjb25zdHJ1Y3RvciBpbmRp
cmVjdGx5IAorUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuY2FuY2VsIGVuZm9yY2VzIGEg
YnJhbmQgY2hlY2sgCitQQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5nZXRSZWFkZXIgZW5m
b3JjZXMgYSBicmFuZCBjaGVjayAKK1BBU1MgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnRlZSBl
bmZvcmNlcyBhIGJyYW5kIGNoZWNrIAorUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBlbmZvcmNl
cyBhIGJyYW5kIGNoZWNrIG9uIGl0cyBhcmd1bWVudCAKK1BBU1MgUmVhZGFibGVTdHJlYW1SZWFk
ZXIucHJvdG90eXBlLmNsb3NlZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAorUEFTUyBSZWFkYWJs
ZVN0cmVhbVJlYWRlci5wcm90b3R5cGUuY2FuY2VsIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCitQ
QVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5yZWFkIGVuZm9yY2VzIGEgYnJhbmQg
Y2hlY2sgCitQQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5yZWxlYXNlTG9jayBl
bmZvcmNlcyBhIGJyYW5kIGNoZWNrIAorUEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgZW5m
b3JjZXMgYSBicmFuZCBjaGVjayBvbiBpdHMgYXJndW1lbnQgCitQQVNTIFJlYWRhYmxlU3RyZWFt
Q29udHJvbGxlciBjYW4ndCBiZSBnaXZlbiBhIGZ1bGx5LWNvbnN0cnVjdGVkIFJlYWRhYmxlU3Ry
ZWFtIAorUEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLmNsb3NlIGVuZm9y
Y2VzIGEgYnJhbmQgY2hlY2sgCitQQVNTIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5
cGUuZW5xdWV1ZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAorUEFTUyBSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXIucHJvdG90eXBlLmVycm9yIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQt
Y2hlY2tzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWRmZWQxMjNkNzZkYjg3ZjdiMzIwMTljYzE2M2IzMzQy
ZjFhMmQ4YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5odG1s
CkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy90ZXN0
LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LWlu
aXRpYWxpemVyLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJicmFuZC1jaGVja3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KKyd1c2Ugc3RyaWN0JzsKK3dvcmtlcl90ZXN0KCdicmFuZC1jaGVja3Mu
anMnKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmpz
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyNTUzY2Y5MmY1MmZk
NmRjMGU3MjNiYWY2ZjczZDczZWViOGY1ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9icmFuZC1jaGVja3MuanMKQEAgLTAsMCArMSwxNTEgQEAKKyd1c2Ugc3RyaWN0JzsKKworaWYg
KHNlbGYuaW1wb3J0U2NyaXB0cykgeworICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNl
cy90ZXN0LXV0aWxzLmpzJyk7CisgIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcycpOworfQorCitsZXQgUmVhZGFibGVTdHJlYW1SZWFkZXI7CitsZXQgUmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyOworCit0ZXN0KCgpID0+IHsKKworICAvLyBJdCdzIG5vdCBleHBv
c2VkIGdsb2JhbGx5LCBidXQgd2UgdGVzdCBhIGZldyBvZiBpdHMgcHJvcGVydGllcyBoZXJlLgor
ICBSZWFkYWJsZVN0cmVhbVJlYWRlciA9IChuZXcgUmVhZGFibGVTdHJlYW0oKSkuZ2V0UmVhZGVy
KCkuY29uc3RydWN0b3I7CisKK30sICdDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRlciBj
b25zdHJ1Y3RvciBpbmRpcmVjdGx5Jyk7CisKK3Rlc3QoKCkgPT4geworCisgIC8vIEl0J3Mgbm90
IGV4cG9zZWQgZ2xvYmFsbHksIGJ1dCB3ZSB0ZXN0IGEgZmV3IG9mIGl0cyBwcm9wZXJ0aWVzIGhl
cmUuCisgIG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgUmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyID0gYy5jb25zdHJ1Y3RvcjsKKyAgICB9CisgIH0pOworCit9LCAn
Q2FuIGdldCB0aGUgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0
bHknKTsKKworZnVuY3Rpb24gZmFrZVJlYWRhYmxlU3RyZWFtKCkgeworICByZXR1cm4geworICAg
IGNhbmNlbCgpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOyB9LAorICAgIGdldFJlYWRlcigp
IHsgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0oKSk7
IH0sCisgICAgcGlwZVRocm91Z2gob2JqKSB7IHJldHVybiBvYmoucmVhZGFibGU7IH0sCisgICAg
cGlwZVRvKCkgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7IH0sCisgICAgdGVlKCkgeyByZXR1
cm4gW3JlYWxSZWFkYWJsZVN0cmVhbSgpLCByZWFsUmVhZGFibGVTdHJlYW0oKV07IH0KKyAgfTsK
K30KKworZnVuY3Rpb24gcmVhbFJlYWRhYmxlU3RyZWFtKCkgeworICByZXR1cm4gbmV3IFJlYWRh
YmxlU3RyZWFtKCk7Cit9CisKK2Z1bmN0aW9uIGZha2VSZWFkYWJsZVN0cmVhbVJlYWRlcigpIHsK
KyAgcmV0dXJuIHsKKyAgICBnZXQgY2xvc2VkKCkgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7
IH0sCisgICAgY2FuY2VsKCkgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7IH0sCisgICAgcmVh
ZCgpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRy
dWUgfSk7IH0sCisgICAgcmVsZWFzZUxvY2soKSB7IHJldHVybjsgfQorICB9OworfQorCitmdW5j
dGlvbiBmYWtlUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKCkgeworICByZXR1cm4geworICAgIGNs
b3NlKCkgeyB9LAorICAgIGVucXVldWUoKSB7IH0sCisgICAgZXJyb3IoKSB7IH0KKyAgfTsKK30K
KworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIHJldHVybiBtZXRob2RSZWplY3RzKHQsIFJlYWRh
YmxlU3RyZWFtLnByb3RvdHlwZSwgJ2NhbmNlbCcsIGZha2VSZWFkYWJsZVN0cmVhbSgpKTsKKwor
fSwgJ1JlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5jYW5jZWwgZW5mb3JjZXMgYSBicmFuZCBjaGVj
aycpOworCit0ZXN0KCgpID0+IHsKKworICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW0ucHJv
dG90eXBlLCAnZ2V0UmVhZGVyJywgZmFrZVJlYWRhYmxlU3RyZWFtKCkpOworCit9LCAnUmVhZGFi
bGVTdHJlYW0ucHJvdG90eXBlLmdldFJlYWRlciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7CisK
K3Rlc3QoKCkgPT4geworCisgIG1ldGhvZFRocm93cyhSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUs
ICd0ZWUnLCBmYWtlUmVhZGFibGVTdHJlYW0oKSk7CisKK30sICdSZWFkYWJsZVN0cmVhbS5wcm90
b3R5cGUudGVlIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKKwordGVzdCgoKSA9PiB7CisKKyAg
YXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbVJl
YWRlcihmYWtlUmVhZGFibGVTdHJlYW0oKSksCisgICAgICAgICAgICAgICAgJ0NvbnN0cnVjdGlu
ZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHNob3VsZCB0aHJvdycpOworCit9LCAnUmVhZGFibGVT
dHJlYW1SZWFkZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjayBvbiBpdHMgYXJndW1lbnQnKTsKKwor
cHJvbWlzZV90ZXN0KHQgPT4geworCisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgZ2V0dGVy
UmVqZWN0cyh0LCBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUsICdjbG9zZWQnLCBmYWtl
UmVhZGFibGVTdHJlYW1SZWFkZXIoKSksCisgICAgZ2V0dGVyUmVqZWN0cyh0LCBSZWFkYWJsZVN0
cmVhbVJlYWRlci5wcm90b3R5cGUsICdjbG9zZWQnLCByZWFsUmVhZGFibGVTdHJlYW0oKSkKKyAg
XSk7CisKK30sICdSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUuY2xvc2VkIGVuZm9yY2Vz
IGEgYnJhbmQgY2hlY2snKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIHJldHVybiBQcm9t
aXNlLmFsbChbCisgICAgbWV0aG9kUmVqZWN0cyh0LCBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90
b3R5cGUsICdjYW5jZWwnLCBmYWtlUmVhZGFibGVTdHJlYW1SZWFkZXIoKSksCisgICAgbWV0aG9k
UmVqZWN0cyh0LCBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUsICdjYW5jZWwnLCByZWFs
UmVhZGFibGVTdHJlYW0oKSkKKyAgXSk7CisKK30sICdSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90
b3R5cGUuY2FuY2VsIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKKworcHJvbWlzZV90ZXN0KHQg
PT4geworCisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgbWV0aG9kUmVqZWN0cyh0LCBSZWFk
YWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUsICdyZWFkJywgZmFrZVJlYWRhYmxlU3RyZWFtUmVh
ZGVyKCkpLAorICAgIG1ldGhvZFJlamVjdHModCwgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90
eXBlLCAncmVhZCcsIHJlYWxSZWFkYWJsZVN0cmVhbSgpKQorICBdKTsKKworfSwgJ1JlYWRhYmxl
U3RyZWFtUmVhZGVyLnByb3RvdHlwZS5yZWFkIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKKwor
dGVzdCgoKSA9PiB7CisKKyAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3Rv
dHlwZSwgJ3JlbGVhc2VMb2NrJywgZmFrZVJlYWRhYmxlU3RyZWFtUmVhZGVyKCkpOworICBtZXRo
b2RUaHJvd3MoUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLCAncmVsZWFzZUxvY2snLCBy
ZWFsUmVhZGFibGVTdHJlYW0oKSk7CisKK30sICdSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5
cGUucmVsZWFzZUxvY2sgZW5mb3JjZXMgYSBicmFuZCBjaGVjaycpOworCit0ZXN0KCgpID0+IHsK
KworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlcihmYWtlUmVhZGFibGVTdHJlYW0oKSksCisgICAgICAgICAgICAgICAgJ0Nv
bnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBzaG91bGQgdGhyb3cnKTsKKwor
fSwgJ1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIG9uIGl0
cyBhcmd1bWVudCcpOworCit0ZXN0KCgpID0+IHsKKworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBl
RXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcihyZWFsUmVhZGFibGVT
dHJlYW0oKSksCisgICAgICAgICAgICAgICAgJ0NvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFt
Q29udHJvbGxlciBzaG91bGQgdGhyb3cnKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtQ29udHJvbGxl
ciBjYW5cJ3QgYmUgZ2l2ZW4gYSBmdWxseS1jb25zdHJ1Y3RlZCBSZWFkYWJsZVN0cmVhbScpOwor
Cit0ZXN0KCgpID0+IHsKKworICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
LnByb3RvdHlwZSwgJ2Nsb3NlJywgZmFrZVJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcigpKTsKKwor
fSwgJ1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUuY2xvc2UgZW5mb3JjZXMgYSBi
cmFuZCBjaGVjaycpOworCit0ZXN0KCgpID0+IHsKKworICBtZXRob2RUaHJvd3MoUmVhZGFibGVT
dHJlYW1Db250cm9sbGVyLnByb3RvdHlwZSwgJ2VucXVldWUnLCBmYWtlUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyKCkpOworCit9LCAnUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5l
bnF1ZXVlIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKKwordGVzdCgoKSA9PiB7CisKKyAgbWV0
aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUsICdlcnJvcicsIGZh
a2VSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIoKSk7CisKK30sICdSZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXIucHJvdG90eXBlLmVycm9yIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKKworZG9uZSgp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2NhbmNlbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzk5NGIzYjk0NmUyMTMwMTMzNjY4
NmZkODA0YzczYWFhMmQxMmNlNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNl
bC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNCBAQAorCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNh
bmNlbGxhdGlvbjogaW50ZWdyYXRpb24gdGVzdCBvbiBhbiBpbmZpbml0ZSBzdHJlYW0gZGVyaXZl
ZCBmcm9tIGEgcmFuZG9tIHB1c2ggc291cmNlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxs
YXRpb246IGNhbmNlbChyZWFzb24pIHNob3VsZCBwYXNzIHRocm91Z2ggdGhlIGdpdmVuIHJlYXNv
biB0byB0aGUgdW5kZXJseWluZyBzb3VyY2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxh
dGlvbjogY2FuY2VsKCkgb24gYSBsb2NrZWQgc3RyZWFtIHNob3VsZCBmYWlsIGFuZCBub3QgY2Fs
bCB0aGUgdW5kZXJseWluZyBzb3VyY2UgY2FuY2VsIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5j
ZWxsYXRpb246IHNob3VsZCBmdWxmaWxsIHByb21pc2Ugd2hlbiBjYW5jZWwgY2FsbGJhY2sgd2Vu
dCBmaW5lIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IHJldHVybmluZyBhIHZh
bHVlIGZyb20gdGhlIHVuZGVybHlpbmcgc291cmNlJ3MgY2FuY2VsIHNob3VsZCBub3QgYWZmZWN0
IHRoZSBmdWxmaWxsbWVudCB2YWx1ZSBvZiB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3Ry
ZWFtJ3MgY2FuY2VsIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IHNob3VsZCBy
ZWplY3QgcHJvbWlzZSB3aGVuIGNhbmNlbCBjYWxsYmFjayByYWlzZXMgYW4gZXhjZXB0aW9uIAor
UEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5aW5nIHNvdXJj
ZSdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRoZSBwcm9taXNlIHJldHVybmVk
IGJ5IHRoZSBzdHJlYW0ncyBjYW5jZWwgc2hvdWxkIGZ1bGZpbGwgd2hlbiB0aGF0IG9uZSBkb2Vz
ICgxKSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWlu
ZyBzb3VyY2UncyBjYW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSBy
ZXR1cm5lZCBieSB0aGUgc3RyZWFtJ3MgY2FuY2VsIHNob3VsZCBmdWxmaWxsIHdoZW4gdGhhdCBv
bmUgZG9lcyAoMikgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVu
ZGVybHlpbmcgc291cmNlJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHBy
b21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBzaG91bGQgcmVqZWN0IHdoZW4g
dGhhdCBvbmUgZG9lcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5jZWxs
aW5nIGJlZm9yZSBzdGFydCBmaW5pc2hlcyBzaG91bGQgcHJldmVudCBwdWxsKCkgZnJvbSBiZWlu
ZyBjYWxsZWQgCitGQUlMIExvYWQgY2FuY2VsLmpzIHdpdGggU2hhcmVkV29ya2VyIGFzc2VydF91
bnJlYWNoZWQ6IFNoYXJlZFdvcmtlciBpcyB1bmF2YWlsYWJsZSBSZWFjaGVkIHVucmVhY2hhYmxl
IGNvZGUKK0ZBSUwgVW50aXRsZWQgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRp
bmcgJ25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmdldFJlZ2lzdHJhdGlvbicpCitQQVNTIFJlYWRh
YmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaW50ZWdyYXRpb24gdGVzdCBvbiBhbiBpbmZpbml0ZSBz
dHJlYW0gZGVyaXZlZCBmcm9tIGEgcmFuZG9tIHB1c2ggc291cmNlIAorUEFTUyBSZWFkYWJsZVN0
cmVhbSBjYW5jZWxsYXRpb246IGNhbmNlbChyZWFzb24pIHNob3VsZCBwYXNzIHRocm91Z2ggdGhl
IGdpdmVuIHJlYXNvbiB0byB0aGUgdW5kZXJseWluZyBzb3VyY2UgCitQQVNTIFJlYWRhYmxlU3Ry
ZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsKCkgb24gYSBsb2NrZWQgc3RyZWFtIHNob3VsZCBmYWls
IGFuZCBub3QgY2FsbCB0aGUgdW5kZXJseWluZyBzb3VyY2UgY2FuY2VsIAorUEFTUyBSZWFkYWJs
ZVN0cmVhbSBjYW5jZWxsYXRpb246IHNob3VsZCBmdWxmaWxsIHByb21pc2Ugd2hlbiBjYW5jZWwg
Y2FsbGJhY2sgd2VudCBmaW5lIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IHJl
dHVybmluZyBhIHZhbHVlIGZyb20gdGhlIHVuZGVybHlpbmcgc291cmNlJ3MgY2FuY2VsIHNob3Vs
ZCBub3QgYWZmZWN0IHRoZSBmdWxmaWxsbWVudCB2YWx1ZSBvZiB0aGUgcHJvbWlzZSByZXR1cm5l
ZCBieSB0aGUgc3RyZWFtJ3MgY2FuY2VsIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRp
b246IHNob3VsZCByZWplY3QgcHJvbWlzZSB3aGVuIGNhbmNlbCBjYWxsYmFjayByYWlzZXMgYW4g
ZXhjZXB0aW9uIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRl
cmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRoZSBwcm9t
aXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW0ncyBjYW5jZWwgc2hvdWxkIGZ1bGZpbGwgd2hlbiB0
aGF0IG9uZSBkb2VzICgxKSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0
aGUgdW5kZXJseWluZyBzb3VyY2UncyBjYW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0
aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3RyZWFtJ3MgY2FuY2VsIHNob3VsZCBmdWxmaWxs
IHdoZW4gdGhhdCBvbmUgZG9lcyAoMikgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlv
bjogaWYgdGhlIHVuZGVybHlpbmcgc291cmNlJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJv
bWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBzaG91bGQg
cmVqZWN0IHdoZW4gdGhhdCBvbmUgZG9lcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0
aW9uOiBjYW5jZWxsaW5nIGJlZm9yZSBzdGFydCBmaW5pc2hlcyBzaG91bGQgcHJldmVudCBwdWxs
KCkgZnJvbSBiZWluZyBjYWxsZWQgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjc2NzQyOWYxNzAyOTIz
NmRjNGI0MTA4ZDQ1NDQ1MGMwN2VjNmE0YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2NhbmNlbC5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXJzL3Jl
c291cmNlcy90ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy90ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvcnMtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImNhbmNlbC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOword29ya2VyX3Rlc3QoJ2NhbmNlbC5qcycpOwor
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuanMgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9jYW5jZWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjUwMTRjMmM5NGQyNzFlMzE4YzBlY2NiMmNmODAzYTYw
MjUzYTFlMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5qcwpAQCAtMCww
ICsxLDI0MiBAQAorJ3VzZSBzdHJpY3QnOworCitpZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Cisg
IHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMnKTsKKyAgc2Vs
Zi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvcnMtdXRpbHMuanMnKTsKKyAgc2VsZi5pbXBv
cnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Cit9CisKK3Byb21pc2VfdGVz
dCgoKSA9PiB7CisKKyAgY29uc3QgcmFuZG9tU291cmNlID0gbmV3IFJhbmRvbVB1c2hTb3VyY2Uo
KTsKKworICBsZXQgY2FuY2VsbGF0aW9uRmluaXNoZWQgPSBmYWxzZTsKKyAgY29uc3QgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIHJhbmRvbVNvdXJjZS5v
bmRhdGEgPSBjLmVucXVldWUuYmluZChjKTsKKyAgICAgIHJhbmRvbVNvdXJjZS5vbmVuZCA9IGMu
Y2xvc2UuYmluZChjKTsKKyAgICAgIHJhbmRvbVNvdXJjZS5vbmVycm9yID0gYy5lcnJvci5iaW5k
KGMpOworICAgIH0sCisKKyAgICBwdWxsKCkgeworICAgICAgcmFuZG9tU291cmNlLnJlYWRTdGFy
dCgpOworICAgIH0sCisKKyAgICBjYW5jZWwoKSB7CisgICAgICByYW5kb21Tb3VyY2UucmVhZFN0
b3AoKTsKKyAgICAgIHJhbmRvbVNvdXJjZS5vbmVuZCgpOworCisgICAgICByZXR1cm4gbmV3IFBy
b21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAg
IGNhbmNlbGxhdGlvbkZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgICByZXNvbHZlKCk7CisgICAg
ICAgIH0sIDEpOworICAgICAgfSk7CisgICAgfQorICB9KTsKKworICBjb25zdCByZWFkZXIgPSBy
cy5nZXRSZWFkZXIoKTsKKworICAvLyBXZSBjYWxsIGRlbGF5IG11bHRpcGxlIHRpbWVzIHRvIGF2
b2lkIGNhbmNlbGxpbmcgdG9vIGVhcmx5IGZvciB0aGUKKyAgLy8gc291cmNlIHRvIGVucXVldWUg
YXQgbGVhc3Qgb25lIGNodW5rLgorICBjb25zdCBjYW5jZWwgPSBkZWxheSg1KS50aGVuKCgpID0+
IGRlbGF5KDUpKS50aGVuKCgpID0+IGRlbGF5KDUpKS50aGVuKCgpID0+IHsKKyAgICBsZXQgY2Fu
Y2VsUHJvbWlzZSA9IHJlYWRlci5jYW5jZWwoKTsKKyAgICBhc3NlcnRfZmFsc2UoY2FuY2VsbGF0
aW9uRmluaXNoZWQsICdjYW5jZWxsYXRpb24gaW4gc291cmNlIHNob3VsZCBoYXBwZW4gbGF0ZXIn
KTsKKyAgICByZXR1cm4gY2FuY2VsUHJvbWlzZTsKKyAgfSkKKworICByZXR1cm4gcmVhZGFibGVT
dHJlYW1Ub0FycmF5KHJzLCByZWFkZXIpLnRoZW4oY2h1bmtzID0+IHsKKyAgICBhc3NlcnRfZ3Jl
YXRlcl90aGFuKGNodW5rcy5sZW5ndGgsIDAsICdhdCBsZWFzdCBvbmUgY2h1bmsgc2hvdWxkIGJl
IHJlYWQnKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNodW5rcy5sZW5ndGg7IGkrKykgewor
ICAgICAgYXNzZXJ0X2VxdWFscyhjaHVua3NbaV0ubGVuZ3RoLCAxMjgsICdjaHVuayAnICsgaSAr
ICcgc2hvdWxkIGhhdmUgMTI4IGJ5dGVzJyk7CisgICAgfQorICAgIHJldHVybiBjYW5jZWw7Cisg
IH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF90cnVlKGNhbmNlbGxhdGlvbkZpbmlzaGVkLCAn
aXQgcmV0dXJucyBhIHByb21pc2UgdGhhdCBpcyBmdWxmaWxsZWQgd2hlbiB0aGUgY2FuY2VsbGF0
aW9uIGZpbmlzaGVzJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9u
OiBpbnRlZ3JhdGlvbiB0ZXN0IG9uIGFuIGluZmluaXRlIHN0cmVhbSBkZXJpdmVkIGZyb20gYSBy
YW5kb20gcHVzaCBzb3VyY2UnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgbGV0IHJlY29yZGVkUmVh
c29uOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgY2FuY2VsKHJlYXNv
bikgeworICAgICAgcmVjb3JkZWRSZWFzb24gPSByZWFzb247CisgICAgfQorICB9KTsKKworICBj
b25zdCBwYXNzZWRSZWFzb24gPSBuZXcgRXJyb3IoJ1NvcnJ5LCBpdCBqdXN0IHdhc25cJ3QgbWVh
bnQgdG8gYmUuJyk7CisgIHJzLmNhbmNlbChwYXNzZWRSZWFzb24pOworCisgIGFzc2VydF9lcXVh
bHMocmVjb3JkZWRSZWFzb24sIHBhc3NlZFJlYXNvbiwKKyAgICAndGhlIGVycm9yIHBhc3NlZCB0
byB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2VsIG1ldGhvZCBzaG91bGQgZXF1YWwgdGhl
IG9uZSBwYXNzZWQgdG8gdGhlIHN0cmVhbVwncyBjYW5jZWwnKTsKKworfSwgJ1JlYWRhYmxlU3Ry
ZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsKHJlYXNvbikgc2hvdWxkIHBhc3MgdGhyb3VnaCB0aGUg
Z2l2ZW4gcmVhc29uIHRvIHRoZSB1bmRlcmx5aW5nIHNvdXJjZScpOworCitwcm9taXNlX3Rlc3Qo
KCkgPT4geworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChj
KSB7CisgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICB9LAorICAg
IGNhbmNlbCgpIHsKKyAgICAgIGFzc2VydF91bnJlYWNoZWQoJ3VuZGVybHlpbmcgc291cmNlIGNh
bmNlbCgpIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCcpOworICAgIH0KKyAgfSk7CisKKyAg
Y29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgcmV0dXJuIHJzLmNhbmNlbCgpLnRo
ZW4oKCkgPT4geworICAgIGFzc2VydF91bnJlYWNoZWQoJ2NhbmNlbCgpIHNob3VsZCBiZSByZWpl
Y3RlZCcpOworICB9LCBlID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGUubmFtZSwgJ1R5cGVFcnJv
cicsICdjYW5jZWwoKSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCBhIFR5cGVFcnJvcicpOworICB9
KS50aGVuKCgpID0+IHsKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgfSkudGhlbihyZXN1
bHQgPT4geworICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2EnLCBk
b25lOiBmYWxzZSB9LCAncmVhZCgpIHNob3VsZCBzdGlsbCB3b3JrIGFmdGVyIHRoZSBhdHRlbXB0
ZWQgY2FuY2VsJyk7CisgICAgcmV0dXJuIHJlYWRlci5jbG9zZWQ7CisgIH0pOworCit9LCAnUmVh
ZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5jZWwoKSBvbiBhIGxvY2tlZCBzdHJlYW0gc2hv
dWxkIGZhaWwgYW5kIG5vdCBjYWxsIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSBjYW5jZWwnKTsKKwor
cHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgY2FuY2VsUmVjZWl2ZWQgPSBmYWxzZTsKKyAg
Y29uc3QgY2FuY2VsUmVhc29uID0gbmV3IEVycm9yKCdJIGFtIHRpcmVkIG9mIHRoaXMgc3RyZWFt
LCBJIHByZWZlciB0byBjYW5jZWwgaXQnKTsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgIGNhbmNlbChyZWFzb24pIHsKKyAgICAgIGNhbmNlbFJlY2VpdmVkID0gdHJ1ZTsK
KyAgICAgIGFzc2VydF9lcXVhbHMocmVhc29uLCBjYW5jZWxSZWFzb24sICdjYW5jZWxsYXRpb24g
cmVhc29uIGdpdmVuIHRvIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSBzaG91bGQgYmUgZXF1YWwgdG8g
dGhlIG9uZSBwYXNzZWQnKTsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBycy5jYW5jZWwoY2Fu
Y2VsUmVhc29uKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfdHJ1ZShjYW5jZWxSZWNlaXZlZCk7
CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBzaG91bGQgZnVsZmls
bCBwcm9taXNlIHdoZW4gY2FuY2VsIGNhbGxiYWNrIHdlbnQgZmluZScpOworCitwcm9taXNlX3Rl
c3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBjYW5j
ZWwoKSB7CisgICAgICByZXR1cm4gJ0hlbGxvJzsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBy
cy5jYW5jZWwoKS50aGVuKHYgPT4geworICAgIGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAn
Y2FuY2VsKCkgcmV0dXJuIHZhbHVlIHNob3VsZCBiZSBmdWxmaWxsZWQgd2l0aCB1bmRlZmluZWQn
KTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IHJldHVybmluZyBh
IHZhbHVlIGZyb20gdGhlIHVuZGVybHlpbmcgc291cmNlXCdzIGNhbmNlbCBzaG91bGQgbm90IGFm
ZmVjdCB0aGUgZnVsZmlsbG1lbnQgdmFsdWUgb2YgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhl
IHN0cmVhbVwncyBjYW5jZWwnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCB0
aHJvd25FcnJvciA9IG5ldyBFcnJvcigndGVzdCcpOworICBsZXQgY2FuY2VsQ2FsbGVkID0gZmFs
c2U7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIGNhbmNlbCgpIHsK
KyAgICAgIGNhbmNlbENhbGxlZCA9IHRydWU7CisgICAgICB0aHJvdyB0aHJvd25FcnJvcjsKKyAg
ICB9CisgIH0pOworCisgIHJldHVybiBycy5jYW5jZWwoJ3Rlc3QnKS50aGVuKCgpID0+IHsKKyAg
ICBhc3NlcnRfdW5yZWFjaGVkKCdjYW5jZWwgc2hvdWxkIHJlamVjdCcpOworICB9LCBlID0+IHsK
KyAgICBhc3NlcnRfdHJ1ZShjYW5jZWxDYWxsZWQpOworICAgIGFzc2VydF9lcXVhbHMoZSwgdGhy
b3duRXJyb3IpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogc2hv
dWxkIHJlamVjdCBwcm9taXNlIHdoZW4gY2FuY2VsIGNhbGxiYWNrIHJhaXNlcyBhbiBleGNlcHRp
b24nKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBjYW5jZWxSZWFzb24gPSBu
ZXcgRXJyb3IoJ3Rlc3QnKTsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Cisg
ICAgY2FuY2VsKGVycm9yKSB7CisgICAgICBhc3NlcnRfZXF1YWxzKGVycm9yLCBjYW5jZWxSZWFz
b24pOworICAgICAgcmV0dXJuIGRlbGF5KDEpOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHJz
LmNhbmNlbChjYW5jZWxSZWFzb24pOworCit9LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9u
OiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJv
bWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbVwncyBjYW5jZWwgc2hvdWxk
IGZ1bGZpbGwgd2hlbiB0aGF0IG9uZSBkb2VzICgxKScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4g
eworCisgIGxldCByZXNvbHZlU291cmNlQ2FuY2VsUHJvbWlzZTsKKyAgbGV0IHNvdXJjZUNhbmNl
bFByb21pc2VIYXNGdWxmaWxsZWQgPSBmYWxzZTsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisgICAgY2FuY2VsKCkgeworICAgICAgY29uc3Qgc291cmNlQ2FuY2VsUHJvbWlz
ZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gcmVzb2x2ZVNvdXJjZUNhbmNlbFByb21pc2UgPSBy
ZXNvbHZlKTsKKworICAgICAgc291cmNlQ2FuY2VsUHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICAg
ICAgc291cmNlQ2FuY2VsUHJvbWlzZUhhc0Z1bGZpbGxlZCA9IHRydWU7CisgICAgICB9KTsKKwor
ICAgICAgcmV0dXJuIHNvdXJjZUNhbmNlbFByb21pc2U7CisgICAgfQorICB9KTsKKworICBzZXRU
aW1lb3V0KCgpID0+IHJlc29sdmVTb3VyY2VDYW5jZWxQcm9taXNlKCdIZWxsbycpLCAxKTsKKwor
ICByZXR1cm4gcnMuY2FuY2VsKCkudGhlbih2YWx1ZSA9PiB7CisgICAgYXNzZXJ0X3RydWUoc291
cmNlQ2FuY2VsUHJvbWlzZUhhc0Z1bGZpbGxlZCwgJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBzaG91
bGQgYmUgZnVsZmlsbGVkIG9ubHkgYWZ0ZXIgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHVu
ZGVybHlpbmcgc291cmNlXCdzIGNhbmNlbCcpOworICAgIGFzc2VydF9lcXVhbHModmFsdWUsIHVu
ZGVmaW5lZCwgJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBzaG91bGQgYmUgZnVsZmlsbGVkIHdpdGgg
dW5kZWZpbmVkJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBp
ZiB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlz
ZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbVwncyBjYW5jZWwgc2hvdWxkIGZ1
bGZpbGwgd2hlbiB0aGF0IG9uZSBkb2VzICgyKScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4gewor
CisgIGxldCByZWplY3RTb3VyY2VDYW5jZWxQcm9taXNlOworICBsZXQgc291cmNlQ2FuY2VsUHJv
bWlzZUhhc1JlamVjdGVkID0gZmFsc2U7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgIGNhbmNlbCgpIHsKKyAgICAgIGNvbnN0IHNvdXJjZUNhbmNlbFByb21pc2UgPSBu
ZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiByZWplY3RTb3VyY2VDYW5jZWxQcm9taXNl
ID0gcmVqZWN0KTsKKworICAgICAgc291cmNlQ2FuY2VsUHJvbWlzZS5jYXRjaCgoKSA9PiB7Cisg
ICAgICAgIHNvdXJjZUNhbmNlbFByb21pc2VIYXNSZWplY3RlZCA9IHRydWU7CisgICAgICB9KTsK
KworICAgICAgcmV0dXJuIHNvdXJjZUNhbmNlbFByb21pc2U7CisgICAgfQorICB9KTsKKworICBj
b25zdCBlcnJvckluQ2FuY2VsID0gbmV3IEVycm9yKCdTb3JyeSwgaXQganVzdCB3YXNuXCd0IG1l
YW50IHRvIGJlLicpOworCisgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0U291cmNlQ2FuY2VsUHJv
bWlzZShlcnJvckluQ2FuY2VsKSwgMSk7CisKKyAgcmV0dXJuIHJzLmNhbmNlbCgpLnRoZW4oKCkg
PT4geworICAgIGFzc2VydF91bnJlYWNoZWQoJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBzaG91bGQg
YmUgcmVqZWN0ZWQnKTsKKyAgfSwgciA9PiB7CisgICAgYXNzZXJ0X3RydWUoc291cmNlQ2FuY2Vs
UHJvbWlzZUhhc1JlamVjdGVkLCAnY2FuY2VsKCkgcmV0dXJuIHZhbHVlIHNob3VsZCBiZSByZWpl
Y3RlZCBvbmx5IGFmdGVyIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSB1bmRlcmx5aW5nIHNv
dXJjZVwncyBjYW5jZWwnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHIsIGVycm9ySW5DYW5jZWwsICdj
YW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdGhlIHVuZGVybHlp
bmcgc291cmNlXCdzIHJlamVjdGlvbiByZWFzb24nKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0
cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyBjYW5jZWwgbWV0
aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3RyZWFt
XCdzIGNhbmNlbCBzaG91bGQgcmVqZWN0IHdoZW4gdGhhdCBvbmUgZG9lcycpOworCitwcm9taXNl
X3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBz
dGFydCgpIHsKKyAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgoKSA9PiB7fSk7CisgICAgfSwKKyAg
ICBwdWxsKCkgeworICAgICAgYXNzZXJ0X3VucmVhY2hlZCgncHVsbCBzaG91bGQgbm90IGhhdmUg
YmVlbiBjYWxsZWQnKTsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBQcm9taXNlLmFsbChbcnMu
Y2FuY2VsKCksIHJzLmdldFJlYWRlcigpLmNsb3NlZF0pOworCit9LCAnUmVhZGFibGVTdHJlYW0g
Y2FuY2VsbGF0aW9uOiBjYW5jZWxsaW5nIGJlZm9yZSBzdGFydCBmaW5pc2hlcyBzaG91bGQgcHJl
dmVudCBwdWxsKCkgZnJvbSBiZWluZyBjYWxsZWQnKTsKKworZG9uZSgpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mYTRlMWRmOTkxYzE3NzhkNGNlM2MxOWI5YTE3NGU2Nzc3MWE4
ODY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVn
eS1pbnRlZ3JhdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorCitQQVNTIENhbiBj
b25zdHJ1Y3QgYSByZWFkYWJsZSBzdHJlYW0gd2l0aCBhIHZhbGlkIENvdW50UXVldWluZ1N0cmF0
ZWd5IAorUEFTUyBDb3JyZWN0bHkgZ292ZXJucyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcidz
IGRlc2lyZWRTaXplIHByb3BlcnR5IChIV00gPSAwKSAKK1BBU1MgQ29ycmVjdGx5IGdvdmVybnMg
YSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIncyBkZXNpcmVkU2l6ZSBwcm9wZXJ0eSAoSFdNID0g
MSkgCitQQVNTIENvcnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyJ3Mg
ZGVzaXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDQpIAorRkFJTCBMb2FkIGNvdW50LXF1ZXVpbmct
c3RyYXRlZ3ktaW50ZWdyYXRpb24uanMgd2l0aCBTaGFyZWRXb3JrZXIgYXNzZXJ0X3VucmVhY2hl
ZDogU2hhcmVkV29ya2VyIGlzIHVuYXZhaWxhYmxlIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQor
RkFJTCBVbnRpdGxlZCB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnbmF2
aWdhdG9yLnNlcnZpY2VXb3JrZXIuZ2V0UmVnaXN0cmF0aW9uJykKK1BBU1MgQ2FuIGNvbnN0cnVj
dCBhIHJlYWRhYmxlIHN0cmVhbSB3aXRoIGEgdmFsaWQgQ291bnRRdWV1aW5nU3RyYXRlZ3kgCitQ
QVNTIENvcnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyJ3MgZGVzaXJl
ZFNpemUgcHJvcGVydHkgKEhXTSA9IDApIAorUEFTUyBDb3JyZWN0bHkgZ292ZXJucyBhIFJlYWRh
YmxlU3RyZWFtQ29udHJvbGxlcidzIGRlc2lyZWRTaXplIHByb3BlcnR5IChIV00gPSAxKSAKK1BB
U1MgQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIncyBkZXNpcmVk
U2l6ZSBwcm9wZXJ0eSAoSFdNID0gNCkgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50
LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1
ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzM4MTY2YzMwMzU4
ODg2NWFkOWI0NGRhMWE5ODk5YzFmYzc2ZDY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5odG1sCkBAIC0wLDAgKzEsMTIg
QEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9zZXJ2
aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIj48
L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9ImNvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRp
b24uanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyd1c2Ugc3RyaWN0JzsKK3dvcmtlcl90ZXN0KCdj
b3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmpzJyk7Cis8L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uanMg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmZiOWExYWEyYmE2MzFlZGJiOWRlMTgzZjEwNjZlNjNhMzkyNzdmY2QKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9u
LmpzCkBAIC0wLDAgKzEsMjEzIEBACisndXNlIHN0cmljdCc7CisKK2lmIChzZWxmLmltcG9ydFNj
cmlwdHMpIHsKKyAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Jyk7Cit9CisKK3Rlc3QoKCkgPT4geworCisgIG5ldyBSZWFkYWJsZVN0cmVhbSh7fSwgbmV3IENv
dW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KSk7CisKK30sICdDYW4gY29u
c3RydWN0IGEgcmVhZGFibGUgc3RyZWFtIHdpdGggYSB2YWxpZCBDb3VudFF1ZXVpbmdTdHJhdGVn
eScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBjb250cm9sbGVyOworICBjb25z
dCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgKKyAgICB7CisgICAgICBzdGFydChjKSB7CisgICAg
ICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgfQorICAgIH0sCisgICAgbmV3IENvdW50UXVldWlu
Z1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMCB9KQorICApOworICBjb25zdCByZWFkZXIgPSBy
cy5nZXRSZWFkZXIoKTsKKworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUs
IDAsICcwIHJlYWRzLCAwIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCcpOworICBj
b250cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2ly
ZWRTaXplLCAtMSwgJzAgcmVhZHMsIDEgZW5xdWV1ZTogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0x
Jyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xs
ZXIuZGVzaXJlZFNpemUsIC0yLCAnMCByZWFkcywgMiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hv
dWxkIGJlIC0yJyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpOworICBhc3NlcnRfZXF1YWxz
KGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0zLCAnMCByZWFkcywgMyBlbnF1ZXVlczogZGVzaXJl
ZFNpemUgc2hvdWxkIGJlIC0zJyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZCcpOworICBhc3Nl
cnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC00LCAnMCByZWFkcywgNCBlbnF1ZXVl
czogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC00Jyk7CisKKyAgcmV0dXJuIHJlYWRlci5yZWFkKCkK
KyAgICAudGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0
LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnMXN0IHJlYWQgZ2l2ZXMgYmFjayB0aGUgMXN0IGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cg
Y29udGFpbnMgMyBjaHVua3MpJyk7CisgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgICB9
KQorICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1
bHQsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcybmQgcmVhZCBnaXZlcyBiYWNrIHRoZSAybmQgY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5v
dyBjb250YWlucyAyIGNodW5rcyknKTsKKyAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICAg
IH0pCisgICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJl
c3VsdCwgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJzNyZCByZWFkIGdpdmVzIGJhY2sgdGhlIDNyZCBjaHVuayBlbnF1ZXVlZCAocXVldWUg
bm93IGNvbnRhaW5zIDEgY2h1bmspJyk7CisKKyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxl
ci5kZXNpcmVkU2l6ZSwgLTEsICczIHJlYWRzLCA0IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91
bGQgYmUgLTEnKTsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZScpOworICAgICAgYXNzZXJ0
X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMiwgJzMgcmVhZHMsIDUgZW5xdWV1ZXM6
IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMicpOworCisgICAgICByZXR1cm4gcmVhZGVyLnJlYWQo
KTsKKyAgICB9KQorICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2Vx
dWFscyhyZXN1bHQsIHsgdmFsdWU6ICdkJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICc0dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA0dGggY2h1bmsgZW5xdWV1ZWQg
KHF1ZXVlIG5vdyBjb250YWlucyAxIGNodW5rcyknKTsKKyAgICAgIHJldHVybiByZWFkZXIucmVh
ZCgpOworCisgICAgfSkudGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVh
bHMocmVzdWx0LCB7IHZhbHVlOiAnZScsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnNXRoIHJlYWQgZ2l2ZXMgYmFjayB0aGUgNXRoIGNodW5rIGVucXVldWVkIChx
dWV1ZSBub3cgY29udGFpbnMgMCBjaHVua3MpJyk7CisKKyAgICAgIGFzc2VydF9lcXVhbHMoY29u
dHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzUgcmVhZHMsIDUgZW5xdWV1ZXM6IGRlc2lyZWRTaXpl
IHNob3VsZCBiZSAwJyk7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2YnKTsKKyAgICAgIGFz
c2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICc1IHJlYWRzLCA2IGVucXVl
dWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1
ZSgnZycpOworICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMiwg
JzUgcmVhZHMsIDcgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMicpOworICAgIH0p
OworCit9LCAnQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJcJ3Mg
ZGVzaXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDApJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7
CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAor
ICAgIHsKKyAgICAgIHN0YXJ0KGMpIHsKKyAgICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICB9
CisgICAgfSwKKyAgICBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiAx
IH0pCisgICk7CisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIGFzc2VydF9l
cXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJzAgcmVhZHMsIDAgZW5xdWV1ZXM6IGRl
c2lyZWRTaXplIHNob3VsZCBiZSAxJyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICBh
c3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICcwIHJlYWRzLCAxIGVucXVl
dWU6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicp
OworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMCByZWFkcywg
MiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7CisgIGNvbnRyb2xsZXIuZW5x
dWV1ZSgnYycpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0yLCAn
MCByZWFkcywgMyBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0yJyk7CisgIGNvbnRy
b2xsZXIuZW5xdWV1ZSgnZCcpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNp
emUsIC0zLCAnMCByZWFkcywgNCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0zJyk7
CisKKyAgcmV0dXJuIHJlYWRlci5yZWFkKCkKKyAgICAudGhlbihyZXN1bHQgPT4geworICAgICAg
YXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAnMXN0IHJlYWQgZ2l2ZXMgYmFjayB0aGUgMXN0
IGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMyBjaHVua3MpJyk7CisgICAgICBy
ZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgICB9KQorICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAg
ICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFsc2Ug
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICcybmQgcmVhZCBnaXZlcyBiYWNrIHRoZSAy
bmQgY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAyIGNodW5rcyknKTsKKyAgICAg
IHJldHVybiByZWFkZXIucmVhZCgpOworICAgIH0pCisgICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAg
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxz
ZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJzNyZCByZWFkIGdpdmVzIGJhY2sgdGhl
IDNyZCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDEgY2h1bmspJyk7CisKKyAg
ICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzMgcmVhZHMsIDQg
ZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7CisgICAgICBjb250cm9sbGVyLmVu
cXVldWUoJ2UnKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwg
LTEsICczIHJlYWRzLCA1IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKKwor
ICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgICAgfSkKKyAgICAudGhlbihyZXN1bHQgPT4g
eworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZCcsIGRvbmU6
IGZhbHNlIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnNHRoIHJlYWQgZ2l2ZXMgYmFj
ayB0aGUgNHRoIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMSBjaHVua3MpJyk7
CisgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgICB9KQorICAgIC50aGVuKHJlc3VsdCA9
PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdlJywgZG9u
ZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICc1dGggcmVhZCBnaXZlcyBi
YWNrIHRoZSA1dGggY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAwIGNodW5rcykn
KTsKKworICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnNSBy
ZWFkcywgNSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEnKTsKKyAgICAgIGNvbnRy
b2xsZXIuZW5xdWV1ZSgnZicpOworICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2ly
ZWRTaXplLCAwLCAnNSByZWFkcywgNiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAn
KTsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZycpOworICAgICAgYXNzZXJ0X2VxdWFscyhj
b250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzUgcmVhZHMsIDcgZW5xdWV1ZXM6IGRlc2lyZWRT
aXplIHNob3VsZCBiZSAtMScpOworICAgIH0pOworCit9LCAnQ29ycmVjdGx5IGdvdmVybnMgYSBS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJcJ3MgZGVzaXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDEp
Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAorICAgIHsKKyAgICAgIHN0YXJ0KGMpIHsKKyAgICAg
ICAgY29udHJvbGxlciA9IGM7CisgICAgICB9CisgICAgfSwKKyAgICBuZXcgQ291bnRRdWV1aW5n
U3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0pCisgICk7CisgIGNvbnN0IHJlYWRlciA9IHJz
LmdldFJlYWRlcigpOworCisgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwg
NCwgJzAgcmVhZHMsIDAgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSA0Jyk7CisgIGNv
bnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJl
ZFNpemUsIDMsICcwIHJlYWRzLCAxIGVucXVldWU6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAzJyk7
CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIu
ZGVzaXJlZFNpemUsIDIsICcwIHJlYWRzLCAyIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQg
YmUgMicpOworICBjb250cm9sbGVyLmVucXVldWUoJ2MnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250
cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnMCByZWFkcywgMyBlbnF1ZXVlczogZGVzaXJlZFNpemUg
c2hvdWxkIGJlIDEnKTsKKyAgY29udHJvbGxlci5lbnF1ZXVlKCdkJyk7CisgIGFzc2VydF9lcXVh
bHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzAgcmVhZHMsIDQgZW5xdWV1ZXM6IGRlc2ly
ZWRTaXplIHNob3VsZCBiZSAwJyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZScpOworICBhc3Nl
cnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMCByZWFkcywgNSBlbnF1ZXVl
czogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZicp
OworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0yLCAnMCByZWFkcywg
NiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0yJyk7CisKKworICByZWFkZXIucmVh
ZCgpCisgICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJl
c3VsdCwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJzFzdCByZWFkIGdpdmVzIGJhY2sgdGhlIDFzdCBjaHVuayBlbnF1ZXVlZCAocXVldWUg
bm93IGNvbnRhaW5zIDUgY2h1bmtzKScpOworICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Cisg
ICAgfSkKKyAgICAudGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMo
cmVzdWx0LCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnMm5kIHJlYWQgZ2l2ZXMgYmFjayB0aGUgMm5kIGNodW5rIGVucXVldWVkIChxdWV1
ZSBub3cgY29udGFpbnMgNCBjaHVua3MpJyk7CisKKyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJv
bGxlci5kZXNpcmVkU2l6ZSwgMCwgJzIgcmVhZHMsIDYgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNo
b3VsZCBiZSAwJyk7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2cnKTsKKyAgICAgIGFzc2Vy
dF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICcyIHJlYWRzLCA3IGVucXVldWVz
OiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKKworICAgICAgcmV0dXJuIHJlYWRlci5yZWFk
KCk7CisgICAgfSkKKyAgICAudGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9l
cXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYycsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnM3JkIHJlYWQgZ2l2ZXMgYmFjayB0aGUgM3JkIGNodW5rIGVucXVldWVk
IChxdWV1ZSBub3cgY29udGFpbnMgNCBjaHVua3MpJyk7CisgICAgICByZXR1cm4gcmVhZGVyLnJl
YWQoKTsKKyAgICB9KQorICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0
X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdkJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICc0dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA0dGggY2h1bmsgZW5xdWV1
ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAzIGNodW5rcyknKTsKKyAgICAgIHJldHVybiByZWFkZXIu
cmVhZCgpOworICAgIH0pCisgICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmpl
Y3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2UnLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJzV0aCByZWFkIGdpdmVzIGJhY2sgdGhlIDV0aCBjaHVuayBlbnF1
ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDIgY2h1bmtzKScpOworICAgICAgcmV0dXJuIHJlYWRl
ci5yZWFkKCk7CisgICAgfSkKKyAgICAudGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29i
amVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZicsIGRvbmU6IGZhbHNlIH0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnNnRoIHJlYWQgZ2l2ZXMgYmFjayB0aGUgNnRoIGNodW5rIGVu
cXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMCBjaHVua3MpJyk7CisKKyAgICAgIGFzc2VydF9l
cXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMywgJzYgcmVhZHMsIDcgZW5xdWV1ZXM6IGRl
c2lyZWRTaXplIHNob3VsZCBiZSAzJyk7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2gnKTsK
KyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMiwgJzYgcmVhZHMs
IDggZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAyJyk7CisgICAgICBjb250cm9sbGVy
LmVucXVldWUoJ2knKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6
ZSwgMSwgJzYgcmVhZHMsIDkgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAxJyk7Cisg
ICAgICBjb250cm9sbGVyLmVucXVldWUoJ2onKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJv
bGxlci5kZXNpcmVkU2l6ZSwgMCwgJzYgcmVhZHMsIDEwIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBz
aG91bGQgYmUgMCcpOworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdrJyk7CisgICAgICBhc3Nl
cnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnNiByZWFkcywgMTEgZW5xdWV1
ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMScpOworICAgIH0pOworCit9LCAnQ29ycmVjdGx5
IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJcJ3MgZGVzaXJlZFNpemUgcHJvcGVy
dHkgKEhXTSA9IDQpJyk7CisKK2RvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJh
Z2UtY29sbGVjdGlvbi0xLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVj
dGlvbi0xLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYjY1MmI4NTJmMDdlNWFiYzU2ZjUyMTA1
YWNjMTg2MDVkY2I4MzE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1j
b2xsZWN0aW9uLTEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorCitQQVNTIFJlYWRhYmxl
U3RyZWFtQ29udHJvbGxlciBtZXRob2RzIHNob3VsZCBjb250aW51ZSB3b3JraW5nIHByb3Blcmx5
IHdoZW4gc2NyaXB0cyBsb3NlIHRoZWlyIHJlZmVyZW5jZSB0byB0aGUgcmVhZGFibGUgc3RyZWFt
IAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgZnVsZmlsbCBldmVu
IGlmIHRoZSBzdHJlYW0gYW5kIHJlYWRlciBKUyByZWZlcmVuY2VzIGFyZSBsb3N0IAorUEFTUyBS
ZWFkYWJsZVN0cmVhbSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgcmVqZWN0IGV2ZW4gaWYgc3RyZWFt
IGFuZCByZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9zdCAKK1BBU1MgR2FyYmFnZS1jb2xsZWN0
aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgc2hvdWxkIG5vdCB1bmxvY2sgaXRzIHN0cmVhbSAK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLTEuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi0xLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTI2MDU1MmVh
MGUyNzE1ZDhkNDliODc3YjQ2Y2JkMDllYWU3ZDQ5ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi0xLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPCEt
LSBGaWxlIHRvIGJlIHJlbW92ZWQgb25jZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUyNDM2IGlzIHJlc29sdmVkIC0tPgorPHNjcmlwdCBzcmM9ImdhcmJhZ2UtY29s
bGVjdGlvbi5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNv
bGxlY3Rpb24tMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24t
Mi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTU3ZDBjY2Q3NzkzNWU4ZDI3ZTdlYWJhZmQ2MDFl
ZTFjY2EzNjdhOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVj
dGlvbi0yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXIgbWV0aG9kcyBzaG91bGQgY29udGludWUgd29ya2luZyBwcm9wZXJseSB3aGVu
IHNjcmlwdHMgbG9zZSB0aGVpciByZWZlcmVuY2UgdG8gdGhlIHJlYWRhYmxlIHN0cmVhbSAKK1BB
U1MgUmVhZGFibGVTdHJlYW0gY2xvc2VkIHByb21pc2Ugc2hvdWxkIGZ1bGZpbGwgZXZlbiBpZiB0
aGUgc3RyZWFtIGFuZCByZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9zdCAKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLTIuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dh
cmJhZ2UtY29sbGVjdGlvbi0yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2JlM2E0ZTFmNjhjODlmNzE4MmUz
Y2EwNGQ4NTEwZTMxYWIwZTAxYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJh
Z2UtY29sbGVjdGlvbi0yLmh0bWwKQEAgLTAsMCArMSw0OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlcnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPCEtLSBGaWxlIHRvIGJl
IHJlbW92ZWQgb25jZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
NDM2IGlzIHJlc29sdmVkIC0tPgorPHNjcmlwdD4KKyd1c2Ugc3RyaWN0JzsKKworcHJvbWlzZV90
ZXN0KCgpID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKHsK
KyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisg
IGdhcmJhZ2VDb2xsZWN0KCk7CisKKyAgcmV0dXJuIGRlbGF5KDUwKS50aGVuKCgpID0+IHsKKyAg
ICBjb250cm9sbGVyLmNsb3NlKCk7CisgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCks
ICgpID0+IGNvbnRyb2xsZXIuY2xvc2UoKSwgJ2Nsb3NlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJv
ciB0aGUgc2Vjb25kIHRpbWUnKTsKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwg
KCkgPT4gY29udHJvbGxlci5lcnJvcigpLCAnZXJyb3Igc2hvdWxkIHRocm93IGEgVHlwZUVycm9y
IG9uIGEgY2xvc2VkIHN0cmVhbScpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtQ29udHJv
bGxlciBtZXRob2RzIHNob3VsZCBjb250aW51ZSB3b3JraW5nIHByb3Blcmx5IHdoZW4gc2NyaXB0
cyBsb3NlIHRoZWlyIHJlZmVyZW5jZSB0byB0aGUgJyArCisgICAncmVhZGFibGUgc3RyZWFtJyk7
CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisKKyAgY29uc3Qg
Y2xvc2VkUHJvbWlzZSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAg
ICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7CisKKyAg
Z2FyYmFnZUNvbGxlY3QoKTsKKworICByZXR1cm4gZGVsYXkoNTApLnRoZW4oKCkgPT4gY29udHJv
bGxlci5jbG9zZSgpKS50aGVuKCgpID0+IGNsb3NlZFByb21pc2UpOworCit9LCAnUmVhZGFibGVT
dHJlYW0gY2xvc2VkIHByb21pc2Ugc2hvdWxkIGZ1bGZpbGwgZXZlbiBpZiB0aGUgc3RyZWFtIGFu
ZCByZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9zdCcpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvZ2FyYmFnZS1jb2xsZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTFjMzMwMDk2
YmRjZTJiMDk1MGFmOWQ1N2Q2NTYzMTZhMWQ5MjQyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMzc6IFRlc3RzIGFyZSBydW5uaW5nIHdpdGhvdXQgdGhlIGFi
aWxpdHkgdG8gZG8gbWFudWFsIGdhcmJhZ2UgY29sbGVjdGlvbi4gVGhleSB3aWxsIHN0aWxsIHdv
cmssIGJ1dCBjb3ZlcmFnZSB3aWxsIGJlIHN1Ym9wdGltYWwuCitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgMzc6IFRlc3RzIGFyZSBydW5uaW5nIHdpdGhvdXQgdGhlIGFiaWxpdHkgdG8gZG8gbWFudWFs
IGdhcmJhZ2UgY29sbGVjdGlvbi4gVGhleSB3aWxsIHN0aWxsIHdvcmssIGJ1dCBjb3ZlcmFnZSB3
aWxsIGJlIHN1Ym9wdGltYWwuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMzc6IFRlc3RzIGFyZSBy
dW5uaW5nIHdpdGhvdXQgdGhlIGFiaWxpdHkgdG8gZG8gbWFudWFsIGdhcmJhZ2UgY29sbGVjdGlv
bi4gVGhleSB3aWxsIHN0aWxsIHdvcmssIGJ1dCBjb3ZlcmFnZSB3aWxsIGJlIHN1Ym9wdGltYWwu
CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMzc6IFRlc3RzIGFyZSBydW5uaW5nIHdpdGhvdXQgdGhl
IGFiaWxpdHkgdG8gZG8gbWFudWFsIGdhcmJhZ2UgY29sbGVjdGlvbi4gVGhleSB3aWxsIHN0aWxs
IHdvcmssIGJ1dCBjb3ZlcmFnZSB3aWxsIGJlIHN1Ym9wdGltYWwuCisKK1BBU1MgUmVhZGFibGVT
dHJlYW1Db250cm9sbGVyIG1ldGhvZHMgc2hvdWxkIGNvbnRpbnVlIHdvcmtpbmcgcHJvcGVybHkg
d2hlbiBzY3JpcHRzIGxvc2UgdGhlaXIgcmVmZXJlbmNlIHRvIHRoZSByZWFkYWJsZSBzdHJlYW0g
CitQQVNTIFJlYWRhYmxlU3RyZWFtIGNsb3NlZCBwcm9taXNlIHNob3VsZCBmdWxmaWxsIGV2ZW4g
aWYgdGhlIHN0cmVhbSBhbmQgcmVhZGVyIEpTIHJlZmVyZW5jZXMgYXJlIGxvc3QgCitQQVNTIFJl
YWRhYmxlU3RyZWFtIGNsb3NlZCBwcm9taXNlIHNob3VsZCByZWplY3QgZXZlbiBpZiBzdHJlYW0g
YW5kIHJlYWRlciBKUyByZWZlcmVuY2VzIGFyZSBsb3N0IAorUEFTUyBHYXJiYWdlLWNvbGxlY3Rp
bmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBzaG91bGQgbm90IHVubG9jayBpdHMgc3RyZWFtIAor
RkFJTCBMb2FkIGdhcmJhZ2UtY29sbGVjdGlvbi5qcyB3aXRoIFNoYXJlZFdvcmtlciBhc3NlcnRf
dW5yZWFjaGVkOiBTaGFyZWRXb3JrZXIgaXMgdW5hdmFpbGFibGUgUmVhY2hlZCB1bnJlYWNoYWJs
ZSBjb2RlCitGQUlMIFVudGl0bGVkIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0
aW5nICduYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdpc3RyYXRpb24nKQorUEFTUyBSZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXIgbWV0aG9kcyBzaG91bGQgY29udGludWUgd29ya2luZyBwcm9w
ZXJseSB3aGVuIHNjcmlwdHMgbG9zZSB0aGVpciByZWZlcmVuY2UgdG8gdGhlIHJlYWRhYmxlIHN0
cmVhbSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2xvc2VkIHByb21pc2Ugc2hvdWxkIGZ1bGZpbGwg
ZXZlbiBpZiB0aGUgc3RyZWFtIGFuZCByZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9zdCAKK1BB
U1MgUmVhZGFibGVTdHJlYW0gY2xvc2VkIHByb21pc2Ugc2hvdWxkIHJlamVjdCBldmVuIGlmIHN0
cmVhbSBhbmQgcmVhZGVyIEpTIHJlZmVyZW5jZXMgYXJlIGxvc3QgCitQQVNTIEdhcmJhZ2UtY29s
bGVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHNob3VsZCBub3QgdW5sb2NrIGl0cyBzdHJl
YW0gCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTM4ZWQyMDUz
NGMyMDY1ZDU3YWZmMmNmNGE4NGM2N2E5NThkYTI0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMv
c2VydmljZS13b3JrZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIj48L3NjcmlwdD4KKwor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJnYXJiYWdlLWNvbGxlY3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyd1c2Ug
c3RyaWN0JzsKK3dvcmtlcl90ZXN0KCdnYXJiYWdlLWNvbGxlY3Rpb24uanMnKTsKKzwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmpzIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiMDBjOTQ2YmJiNTJiMjNl
ZjZlZDhmY2QzNDBkYjkwZmUzOWRlODEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9n
YXJiYWdlLWNvbGxlY3Rpb24uanMKQEAgLTAsMCArMSw3NSBAQAorJ3VzZSBzdHJpY3QnOworCitp
ZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7CisgIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3Vy
Y2VzL3Rlc3QtdXRpbHMuanMnKTsKKyAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzJyk7Cit9CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvbnRy
b2xsZXI7CisgIG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29u
dHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKworICBnYXJiYWdlQ29sbGVjdCgpOworCisgIHJl
dHVybiBkZWxheSg1MCkudGhlbigoKSA9PiB7CisgICAgY29udHJvbGxlci5jbG9zZSgpOworICAg
IGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjb250cm9sbGVyLmNsb3NlKCks
ICdjbG9zZSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IgdGhlIHNlY29uZCB0aW1lJyk7CisgICAg
YXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGNvbnRyb2xsZXIuZXJyb3IoKSwg
J2Vycm9yIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciBvbiBhIGNsb3NlZCBzdHJlYW0nKTsKKyAg
fSk7CisKK30sICdSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgbWV0aG9kcyBzaG91bGQgY29udGlu
dWUgd29ya2luZyBwcm9wZXJseSB3aGVuIHNjcmlwdHMgbG9zZSB0aGVpciByZWZlcmVuY2UgdG8g
dGhlICcgKworICAgJ3JlYWRhYmxlIHN0cmVhbScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4gewor
CisgIGxldCBjb250cm9sbGVyOworCisgIGNvbnN0IGNsb3NlZFByb21pc2UgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0K
KyAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOworCisgIGdhcmJhZ2VDb2xsZWN0KCk7CisKKyAgcmV0
dXJuIGRlbGF5KDUwKS50aGVuKCgpID0+IGNvbnRyb2xsZXIuY2xvc2UoKSkudGhlbigoKSA9PiBj
bG9zZWRQcm9taXNlKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNsb3NlZCBwcm9taXNlIHNob3Vs
ZCBmdWxmaWxsIGV2ZW4gaWYgdGhlIHN0cmVhbSBhbmQgcmVhZGVyIEpTIHJlZmVyZW5jZXMgYXJl
IGxvc3QnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHRoZUVycm9yID0gbmV3
IEVycm9yKCdib28nKTsKKyAgbGV0IGNvbnRyb2xsZXI7CisKKyAgY29uc3QgY2xvc2VkUHJvbWlz
ZSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxl
ciA9IGM7CisgICAgfQorICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7CisKKyAgZ2FyYmFnZUNvbGxl
Y3QoKTsKKworICByZXR1cm4gZGVsYXkoNTApLnRoZW4oKCkgPT4gY29udHJvbGxlci5lcnJvcih0
aGVFcnJvcikpCisgICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiBwcm9taXNlX3JlamVjdHMo
dCwgdGhlRXJyb3IsIGNsb3NlZFByb21pc2UpKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNsb3Nl
ZCBwcm9taXNlIHNob3VsZCByZWplY3QgZXZlbiBpZiBzdHJlYW0gYW5kIHJlYWRlciBKUyByZWZl
cmVuY2VzIGFyZSBsb3N0Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgY29uc3QgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oe30pOworCisgIHJzLmdldFJlYWRlcigpOworCisgIGdhcmJh
Z2VDb2xsZWN0KCk7CisKKyAgcmV0dXJuIGRlbGF5KDUwKS50aGVuKCgpID0+IGFzc2VydF90aHJv
d3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBycy5nZXRSZWFkZXIoKSwKKyAgICAnb2xkIHJlYWRl
ciBzaG91bGQgc3RpbGwgYmUgbG9ja2luZyB0aGUgc3RyZWFtIGV2ZW4gYWZ0ZXIgZ2FyYmFnZSBj
b2xsZWN0aW9uJykpOworCit9LCAnR2FyYmFnZS1jb2xsZWN0aW5nIGEgUmVhZGFibGVTdHJlYW1S
ZWFkZXIgc2hvdWxkIG5vdCB1bmxvY2sgaXRzIHN0cmVhbScpOworCitkb25lKCk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVy
YWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkODUyYjU1OGVkZDhjMmY5NjlkYTcyNDdiZWVj
YjQzN2I1NDkwYjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDcwIEBACisKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuIGJlIGNv
bnN0cnVjdGVkIHdpdGggbm8gZXJyb3JzIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW4ndCBiZSBj
b25zdHJ1Y3RlZCB3aXRoIGdhcmJhZ2UgCitGQUlMIFJlYWRhYmxlU3RyZWFtIGluc3RhbmNlcyBz
aG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3BlcnRpZXMgYXNzZXJ0X2ZhbHNlOiBt
ZXRob2Qgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlIGV4cGVjdGVkIGZhbHNlIGdvdCB0cnVlCitQ
QVNTIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBmb3Igbm9uLWZ1bmN0
aW9uIHN0YXJ0IGFyZ3VtZW50cyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3IgY2Fu
IGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgY2FuY2VsIGFyZ3VtZW50IAorUEFTUyBSZWFkYWJsZVN0
cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBhcyBwdWxsIGFyZ3VtZW50
IAorRkFJTCBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIHBy
b3BlciBwYXJhbWV0ZXJzIGFzc2VydF9mYWxzZTogY2xvc2Ugc2hvdWxkIGJlIG5vbi1lbnVtZXJh
YmxlIGV4cGVjdGVkIGZhbHNlIGdvdCB0cnVlCitQQVNTIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IGNv
bnRyb2xsZXIgcGFyYW1ldGVyIHNob3VsZCBiZSBleHRlbnNpYmxlIAorUEFTUyBSZWFkYWJsZVN0
cmVhbSBzaG91bGQgYmUgYWJsZSB0byBjYWxsIHN0YXJ0IG1ldGhvZCB3aXRoaW4gcHJvdG90eXBl
IGNoYWluIG9mIGl0cyBzb3VyY2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBi
ZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNo
b3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJlamVjdCBpdCAKK1BBU1MgUmVh
ZGFibGVTdHJlYW0gc2hvdWxkIGJlIGFibGUgdG8gZW5xdWV1ZSBkaWZmZXJlbnQgb2JqZWN0cy4g
CitQQVNTIFJlYWRhYmxlU3RyZWFtOiBpZiBwdWxsIHJlamVjdHMsIGl0IHNob3VsZCBlcnJvciB0
aGUgc3RyZWFtIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9u
Y2UgdXBvbiBzdGFydGluZyB0aGUgc3RyZWFtIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxk
IGNhbGwgcHVsbCB3aGVuIHRyeWluZyB0byByZWFkIGZyb20gYSBzdGFydGVkLCBlbXB0eSBzdHJl
YW0gCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgb25jZSBvbiBh
IG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9tIGJlZm9yZSBzdGFydCBmdWxmaWxscyAKK1BBU1Mg
UmVhZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIG9uIGEgbm9uLWVtcHR5
IHN0cmVhbSByZWFkIGZyb20gYWZ0ZXIgc3RhcnQgZnVsZmlsbHMgCitQQVNTIFJlYWRhYmxlU3Ry
ZWFtOiBzaG91bGQgY2FsbCBwdWxsIGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0aGUgbGFzdCBj
aHVuaywgaWYgbm90IGRyYWluaW5nIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBj
YWxsIHB1bGwoKSBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIGRy
YWluaW5nIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50aWwg
dGhlIHByZXZpb3VzIHB1bGwgY2FsbCdzIHByb21pc2UgZnVsZmlsbHMgCitQQVNTIFJlYWRhYmxl
U3RyZWFtOiBzaG91bGQgcHVsbCBhZnRlciBzdGFydCwgYW5kIGFmdGVyIGV2ZXJ5IHJlYWQgCitQ
QVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCBhZnRlciBzdGFydCBpZiB0
aGUgc3RyZWFtIGlzIG5vdyBjbG9zZWQgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2Fs
bCBwdWxsIGFmdGVyIGVucXVldWVpbmcgZnJvbSBpbnNpZGUgcHVsbCAod2l0aCBubyByZWFkIHJl
cXVlc3RzKSwgaWYgc3RyYXRlZ3kgYWxsb3dzIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBwdWxsIHNo
b3VsZCBiZSBhYmxlIHRvIGNsb3NlIGEgc3RyZWFtLiAKK1BBU1MgUmVhZGFibGVTdHJlYW06IGVu
cXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyByZWFkYWJsZSBidXQgZHJhaW5p
bmcgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB3aGVuIHRoZSBz
dHJlYW0gaXMgY2xvc2VkIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhy
b3cgdGhlIHN0b3JlZCBlcnJvciB3aGVuIHRoZSBzdHJlYW0gaXMgZXJyb3JlZCAKK1BBU1MgUmVh
ZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHVuZGVybHlpbmcgc291cmNlIG1ldGhvZHMgYXMgbWV0
aG9kcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRl
Z3kgc2hvdWxkIGdpdmUgZGVzaXJlZFNpemUgb2YgMSB0byBzdGFydCwgZGVjcmVhc2luZyBieSAx
IHBlciBlbnF1ZXVlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVs
dCBzdHJhdGVneSBzaG91bGQgY29udGludWUgZ2l2aW5nIGRlc2lyZWRTaXplIG9mIDEgaWYgdGhl
IGNodW5rcyBhcmUgcmVhZCBpbW1lZGlhdGVseSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gaW50ZWdy
YXRpb24gdGVzdDogYWRhcHRpbmcgYSByYW5kb20gcHVzaCBzb3VyY2UgCitQQVNTIFJlYWRhYmxl
U3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgc3luYyBwdWxsIHNvdXJjZSAKK1BB
U1MgUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYW4gYXN5bmMgcHVs
bCBzb3VyY2UgCitGQUlMIExvYWQgZ2VuZXJhbC5qcyB3aXRoIFNoYXJlZFdvcmtlciBhc3NlcnRf
dW5yZWFjaGVkOiBTaGFyZWRXb3JrZXIgaXMgdW5hdmFpbGFibGUgUmVhY2hlZCB1bnJlYWNoYWJs
ZSBjb2RlCitGQUlMIFVudGl0bGVkIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0
aW5nICduYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdpc3RyYXRpb24nKQorUEFTUyBSZWFk
YWJsZVN0cmVhbSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBubyBlcnJvcnMgCitQQVNTIFJlYWRh
YmxlU3RyZWFtIGNhbid0IGJlIGNvbnN0cnVjdGVkIHdpdGggZ2FyYmFnZSAKK0ZBSUwgUmVhZGFi
bGVTdHJlYW0gaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2YgcHJvcGVy
dGllcyBhc3NlcnRfZmFsc2U6IG1ldGhvZCBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUgZXhwZWN0
ZWQgZmFsc2UgZ290IHRydWUKK1BBU1MgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3Igc2hvdWxk
IHRocm93IGZvciBub24tZnVuY3Rpb24gc3RhcnQgYXJndW1lbnRzIAorUEFTUyBSZWFkYWJsZVN0
cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBhcyBjYW5jZWwgYXJndW1l
bnQgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbiBnZXQgaW5pdGlhbCBnYXJi
YWdlIGFzIHB1bGwgYXJndW1lbnQgCitGQUlMIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBi
ZSBjYWxsZWQgd2l0aCB0aGUgcHJvcGVyIHBhcmFtZXRlcnMgYXNzZXJ0X2ZhbHNlOiBjbG9zZSBz
aG91bGQgYmUgbm9uLWVudW1lcmFibGUgZXhwZWN0ZWQgZmFsc2UgZ290IHRydWUKK1BBU1MgUmVh
ZGFibGVTdHJlYW0gc3RhcnQgY29udHJvbGxlciBwYXJhbWV0ZXIgc2hvdWxkIGJlIGV4dGVuc2li
bGUgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHNob3VsZCBiZSBhYmxlIHRvIGNhbGwgc3RhcnQgbWV0
aG9kIHdpdGhpbiBwcm90b3R5cGUgY2hhaW4gb2YgaXRzIHNvdXJjZSAKK1BBU1MgUmVhZGFibGVT
dHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSAKK1BBU1MgUmVh
ZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSBhbmQg
cmVqZWN0IGl0IAorUEFTUyBSZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBlbnF1ZXVl
IGRpZmZlcmVudCBvYmplY3RzLiAKK1BBU1MgUmVhZGFibGVTdHJlYW06IGlmIHB1bGwgcmVqZWN0
cywgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0gCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91
bGQgb25seSBjYWxsIHB1bGwgb25jZSB1cG9uIHN0YXJ0aW5nIHRoZSBzdHJlYW0gCitQQVNTIFJl
YWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxsIHdoZW4gdHJ5aW5nIHRvIHJlYWQgZnJvbSBh
IHN0YXJ0ZWQsIGVtcHR5IHN0cmVhbSAKK1BBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBvbmx5
IGNhbGwgcHVsbCBvbmNlIG9uIGEgbm9uLWVtcHR5IHN0cmVhbSByZWFkIGZyb20gYmVmb3JlIHN0
YXJ0IGZ1bGZpbGxzIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxs
IG9uY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBhZnRlciBzdGFydCBmdWxmaWxs
cyAKK1BBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHB1bGwgaW4gcmVhY3Rpb24gdG8g
cmVhZCgpaW5nIHRoZSBsYXN0IGNodW5rLCBpZiBub3QgZHJhaW5pbmcgCitQQVNTIFJlYWRhYmxl
U3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCgpIGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0
aGUgbGFzdCBjaHVuaywgaWYgZHJhaW5pbmcgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQg
bm90IGNhbGwgcHVsbCB1bnRpbCB0aGUgcHJldmlvdXMgcHVsbCBjYWxsJ3MgcHJvbWlzZSBmdWxm
aWxscyAKK1BBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBwdWxsIGFmdGVyIHN0YXJ0LCBhbmQg
YWZ0ZXIgZXZlcnkgcmVhZCAKK1BBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBw
dWxsIGFmdGVyIHN0YXJ0IGlmIHRoZSBzdHJlYW0gaXMgbm93IGNsb3NlZCAKK1BBU1MgUmVhZGFi
bGVTdHJlYW06IHNob3VsZCBjYWxsIHB1bGwgYWZ0ZXIgZW5xdWV1ZWluZyBmcm9tIGluc2lkZSBw
dWxsICh3aXRoIG5vIHJlYWQgcmVxdWVzdHMpLCBpZiBzdHJhdGVneSBhbGxvd3MgCitQQVNTIFJl
YWRhYmxlU3RyZWFtIHB1bGwgc2hvdWxkIGJlIGFibGUgdG8gY2xvc2UgYSBzdHJlYW0uIAorUEFT
UyBSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgd2hlbiB0aGUgc3RyZWFtIGlz
IHJlYWRhYmxlIGJ1dCBkcmFpbmluZyAKK1BBU1MgUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hv
dWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyBjbG9zZWQgCitQQVNTIFJlYWRhYmxlU3RyZWFt
OiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB0aGUgc3RvcmVkIGVycm9yIHdoZW4gdGhlIHN0cmVhbSBp
cyBlcnJvcmVkIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgdW5kZXJseWluZyBz
b3VyY2UgbWV0aG9kcyBhcyBtZXRob2RzIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBzdHJhdGVnaWVz
OiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91bGQgZ2l2ZSBkZXNpcmVkU2l6ZSBvZiAxIHRvIHN0
YXJ0LCBkZWNyZWFzaW5nIGJ5IDEgcGVyIGVucXVldWUgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHN0
cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNob3VsZCBjb250aW51ZSBnaXZpbmcgZGVz
aXJlZFNpemUgb2YgMSBpZiB0aGUgY2h1bmtzIGFyZSByZWFkIGltbWVkaWF0ZWx5IAorUEFTUyBS
ZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHJhbmRvbSBwdXNoIHNv
dXJjZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYSBz
eW5jIHB1bGwgc291cmNlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBh
ZGFwdGluZyBhbiBhc3luYyBwdWxsIHNvdXJjZSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
Z2VuZXJhbC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1MjQx
ZmZlOGYwNzJmYmZkNWY2NzZjMDY5ZjE1NGI0MjliMDE0NmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9nZW5lcmFsLmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNl
LXdvcmtlcnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9ycy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iZ2VuZXJh
bC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOword29ya2VyX3Rlc3QoJ2dl
bmVyYWwuanMnKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5q
cyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDRkMWE0YTZjYTQwM2NkZjRk
NTQ0YjUwZmI2ZTEyNjY1MzZmYjczZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dl
bmVyYWwuanMKQEAgLTAsMCArMSw4MzEgQEAKKyd1c2Ugc3RyaWN0JzsKKworaWYgKHNlbGYuaW1w
b3J0U2NyaXB0cykgeworICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy90ZXN0LXV0
aWxzLmpzJyk7CisgIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3JzLXV0aWxzLmpz
Jyk7CisgIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOwor
fQorCit0ZXN0KCgpID0+IHsKKworICBuZXcgUmVhZGFibGVTdHJlYW0oKTsgLy8gUmVhZGFibGVT
dHJlYW0gY29uc3RydWN0ZWQgd2l0aCBubyBwYXJhbWV0ZXJzCisgIG5ldyBSZWFkYWJsZVN0cmVh
bSh7IH0pOyAvLyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RlZCB3aXRoIGFuIGVtcHR5IG9iamVj
dCBhcyBwYXJhbWV0ZXIKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKHVuZGVmaW5lZCk7IC8vIFJlYWRh
YmxlU3RyZWFtIGNvbnN0cnVjdGVkIHdpdGggdW5kZWZpbmVkIGFzIHBhcmFtZXRlcgorCisgIGxl
dCB4OworICBuZXcgUmVhZGFibGVTdHJlYW0oeCk7IC8vIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVj
dGVkIHdpdGggYW4gdW5kZWZpbmVkIHZhcmlhYmxlIGFzIHBhcmFtZXRlcgorCit9LCAnUmVhZGFi
bGVTdHJlYW0gY2FuIGJlIGNvbnN0cnVjdGVkIHdpdGggbm8gZXJyb3JzJyk7CisKK3Rlc3QoKCkg
PT4geworCisgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFi
bGVTdHJlYW0obnVsbCksICdjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgd2hlbiB0aGUgc291cmNl
IGlzIG51bGwnKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNhblwndCBiZSBjb25zdHJ1Y3RlZCB3
aXRoIGdhcmJhZ2UnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgbWV0aG9kcyA9IFsnY2Fu
Y2VsJywgJ2NvbnN0cnVjdG9yJywgJ2dldFJlYWRlcicsICdwaXBlVGhyb3VnaCcsICdwaXBlVG8n
LCAndGVlJ107CisgIGNvbnN0IHByb3BlcnRpZXMgPSBtZXRob2RzLmNvbmNhdChbJ2xvY2tlZCdd
KS5zb3J0KCk7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgY29uc3Qg
cHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocnMpOworCisgIGFzc2VydF9hcnJheV9lcXVh
bHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocHJvdG8pLnNvcnQoKSwgcHJvcGVydGllcywg
J3Nob3VsZCBoYXZlIGFsbCB0aGUgY29ycmVjdCBtZXRob2RzJyk7CisKKyAgZm9yIChjb25zdCBt
IG9mIG1ldGhvZHMpIHsKKyAgICBjb25zdCBwcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IocHJvdG8sIG0pOworICAgIGFzc2VydF9mYWxzZShwcm9wRGVzYy5lbnVtZXJh
YmxlLCAnbWV0aG9kIHNob3VsZCBiZSBub24tZW51bWVyYWJsZScpOworICAgIGFzc2VydF90cnVl
KHByb3BEZXNjLmNvbmZpZ3VyYWJsZSwgJ21ldGhvZCBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7
CisgICAgYXNzZXJ0X3RydWUocHJvcERlc2Mud3JpdGFibGUsICdtZXRob2Qgc2hvdWxkIGJlIHdy
aXRhYmxlJyk7CisgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNbbV0sICdmdW5jdGlvbicsICdt
ZXRob2Qgc2hvdWxkIGJlIGEgZnVuY3Rpb24nKTsKKyAgfQorCisgIGNvbnN0IGxvY2tlZFByb3BE
ZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgJ2xvY2tlZCcpOwor
ICBhc3NlcnRfZmFsc2UobG9ja2VkUHJvcERlc2MuZW51bWVyYWJsZSwgJ2xvY2tlZCBzaG91bGQg
YmUgbm9uLWVudW1lcmFibGUnKTsKKyAgYXNzZXJ0X2VxdWFscyhsb2NrZWRQcm9wRGVzYy53cml0
YWJsZSwgdW5kZWZpbmVkLCAnbG9ja2VkIHNob3VsZCBub3QgYmUgYSBkYXRhIHByb3BlcnR5Jyk7
CisgIGFzc2VydF9lcXVhbHModHlwZW9mIGxvY2tlZFByb3BEZXNjLmdldCwgJ2Z1bmN0aW9uJywg
J2xvY2tlZCBzaG91bGQgaGF2ZSBhIGdldHRlcicpOworICBhc3NlcnRfZXF1YWxzKGxvY2tlZFBy
b3BEZXNjLnNldCwgdW5kZWZpbmVkLCAnbG9ja2VkIHNob3VsZCBub3QgaGF2ZSBhIHNldHRlcicp
OworICBhc3NlcnRfdHJ1ZShsb2NrZWRQcm9wRGVzYy5jb25maWd1cmFibGUsICdsb2NrZWQgc2hv
dWxkIGJlIGNvbmZpZ3VyYWJsZScpOworCisgIGFzc2VydF9lcXVhbHMocnMuY2FuY2VsLmxlbmd0
aCwgMSwgJ2NhbmNlbCBzaG91bGQgaGF2ZSAxIHBhcmFtZXRlcicpOworICBhc3NlcnRfZXF1YWxz
KHJzLmNvbnN0cnVjdG9yLmxlbmd0aCwgMCwgJ2NvbnN0cnVjdG9yIHNob3VsZCBoYXZlIG5vIHBh
cmFtZXRlcnMnKTsKKyAgYXNzZXJ0X2VxdWFscyhycy5nZXRSZWFkZXIubGVuZ3RoLCAwLCAnZ2V0
UmVhZGVyIHNob3VsZCBoYXZlIG5vIHBhcmFtZXRlcnMnKTsKKyAgYXNzZXJ0X2VxdWFscyhycy5w
aXBlVGhyb3VnaC5sZW5ndGgsIDIsICdwaXBlVGhyb3VnaCBzaG91bGQgaGF2ZSAyIHBhcmFtZXRl
cnMnKTsKKyAgYXNzZXJ0X2VxdWFscyhycy5waXBlVG8ubGVuZ3RoLCAxLCAncGlwZVRvIHNob3Vs
ZCBoYXZlIDEgcGFyYW1ldGVyJyk7CisgIGFzc2VydF9lcXVhbHMocnMudGVlLmxlbmd0aCwgMCwg
J3RlZSBzaG91bGQgaGF2ZSBubyBwYXJhbWV0ZXJzJyk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBp
bnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzJyk7CisK
K3Rlc3QoKCkgPT4geworCisgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiB7
CisgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsgc3RhcnQ6ICdwb3RhdG8nIH0pOworICB9LCAnY29u
c3RydWN0b3Igc2hvdWxkIHRocm93IHdoZW4gc3RhcnQgaXMgbm90IGEgZnVuY3Rpb24nKTsKKwor
fSwgJ1JlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBmb3Igbm9uLWZ1bmN0
aW9uIHN0YXJ0IGFyZ3VtZW50cycpOworCit0ZXN0KCgpID0+IHsKKworICBuZXcgUmVhZGFibGVT
dHJlYW0oeyBjYW5jZWw6ICcyJyB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9y
IGNhbiBnZXQgaW5pdGlhbCBnYXJiYWdlIGFzIGNhbmNlbCBhcmd1bWVudCcpOworCit0ZXN0KCgp
ID0+IHsKKworICBuZXcgUmVhZGFibGVTdHJlYW0oeyBwdWxsOiB7IH0gfSk7CisKK30sICdSZWFk
YWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBhcyBwdWxsIGFy
Z3VtZW50Jyk7CisKK3Rlc3QoKCkgPT4geworCisgIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOwor
CisgIGNvbnN0IHNvdXJjZSA9IHsKKyAgICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBhc3Nl
cnRfZXF1YWxzKHRoaXMsIHNvdXJjZSwgJ3NvdXJjZSBpcyB0aGlzIGR1cmluZyBzdGFydCcpOwor
CisgICAgICBjb25zdCBtZXRob2RzID0gWydjbG9zZScsICdlbnF1ZXVlJywgJ2Vycm9yJywgJ2Nv
bnN0cnVjdG9yJ107CisgICAgICBjb25zdCBwcm9wZXJ0aWVzID0gWydkZXNpcmVkU2l6ZSddLmNv
bmNhdChtZXRob2RzKS5zb3J0KCk7CisgICAgICBjb25zdCBwcm90byA9IE9iamVjdC5nZXRQcm90
b3R5cGVPZihjb250cm9sbGVyKTsKKworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhPYmplY3Qu
Z2V0T3duUHJvcGVydHlOYW1lcyhwcm90bykuc29ydCgpLCBwcm9wZXJ0aWVzLAorICAgICAgICAn
dGhlIGNvbnRyb2xsZXIgc2hvdWxkIGhhdmUgdGhlIHJpZ2h0IHByb3BlcnRpZXMnKTsKKworICAg
ICAgZm9yIChjb25zdCBtIG9mIG1ldGhvZHMpIHsKKyAgICAgICAgY29uc3QgcHJvcERlc2MgPSBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBtKTsKKyAgICAgICAgYXNzZXJ0
X2VxdWFscyh0eXBlb2YgY29udHJvbGxlclttXSwgJ2Z1bmN0aW9uJywgYHNob3VsZCBoYXZlIGEg
JHttfSBtZXRob2RgKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKHByb3BEZXNjLmVudW1lcmFibGUs
IG0gKyAnIHNob3VsZCBiZSBub24tZW51bWVyYWJsZScpOworICAgICAgICBhc3NlcnRfdHJ1ZShw
cm9wRGVzYy5jb25maWd1cmFibGUsIG0gKyAnIHNob3VsZCBiZSBjb25maWd1cmFibGUnKTsKKyAg
ICAgICAgYXNzZXJ0X3RydWUocHJvcERlc2Mud3JpdGFibGUsIG0gKyAnIHNob3VsZCBiZSB3cml0
YWJsZScpOworICAgICAgfQorCisgICAgICBjb25zdCBkZXNpcmVkU2l6ZVByb3BEZXNjID0gT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgJ2Rlc2lyZWRTaXplJyk7CisgICAg
ICBhc3NlcnRfZmFsc2UoZGVzaXJlZFNpemVQcm9wRGVzYy5lbnVtZXJhYmxlLCAnZGVzaXJlZFNp
emUgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKGRlc2ly
ZWRTaXplUHJvcERlc2Mud3JpdGFibGUsIHVuZGVmaW5lZCwgJ2Rlc2lyZWRTaXplIHNob3VsZCBu
b3QgYmUgYSBkYXRhIHByb3BlcnR5Jyk7CisgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBkZXNp
cmVkU2l6ZVByb3BEZXNjLmdldCwgJ2Z1bmN0aW9uJywgJ2Rlc2lyZWRTaXplIHNob3VsZCBoYXZl
IGEgZ2V0dGVyJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKGRlc2lyZWRTaXplUHJvcERlc2Muc2V0
LCB1bmRlZmluZWQsICdkZXNpcmVkU2l6ZSBzaG91bGQgbm90IGhhdmUgYSBzZXR0ZXInKTsKKyAg
ICAgIGFzc2VydF90cnVlKGRlc2lyZWRTaXplUHJvcERlc2MuY29uZmlndXJhYmxlLCAnZGVzaXJl
ZFNpemUgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZScpOworCisgICAgICBhc3NlcnRfZXF1YWxzKGNv
bnRyb2xsZXIuY2xvc2UubGVuZ3RoLCAwLCAnY2xvc2Ugc2hvdWxkIGhhdmUgbm8gcGFyYW1ldGVy
cycpOworICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmNvbnN0cnVjdG9yLmxlbmd0aCwg
MSwgJ2NvbnN0cnVjdG9yIHNob3VsZCBoYXZlIDEgcGFyYW1ldGVyJyk7CisgICAgICBhc3NlcnRf
ZXF1YWxzKGNvbnRyb2xsZXIuZW5xdWV1ZS5sZW5ndGgsIDEsICdlbnF1ZXVlIHNob3VsZCBoYXZl
IDEgcGFyYW1ldGVyJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZXJyb3IubGVu
Z3RoLCAxLCAnZXJyb3Igc2hvdWxkIGhhdmUgMSBwYXJhbWV0ZXInKTsKKworICAgICAgc3RhcnRD
YWxsZWQgPSB0cnVlOworICAgIH0KKyAgfTsKKworICBuZXcgUmVhZGFibGVTdHJlYW0oc291cmNl
KTsKKyAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOworCit9LCAnUmVhZGFibGVTdHJlYW0gc3Rh
cnQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBwcm9wZXIgcGFyYW1ldGVycycpOworCit0ZXN0
KCgpID0+IHsKKworICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKKyAgY29uc3Qgc291cmNlID0g
eworICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHsKKyAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSBbJ2Ns
b3NlJywgJ2NvbnN0cnVjdG9yJywgJ2Rlc2lyZWRTaXplJywgJ2VucXVldWUnLCAnZXJyb3InXTsK
KyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoT2Jq
ZWN0LmdldFByb3RvdHlwZU9mKGNvbnRyb2xsZXIpKS5zb3J0KCksIHByb3BlcnRpZXMsCisgICAg
ICAgICdwcm90b3R5cGUgc2hvdWxkIGhhdmUgdGhlIHJpZ2h0IHByb3BlcnRpZXMnKTsKKworICAg
ICAgY29udHJvbGxlci50ZXN0ID0gJyc7CisgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKE9iamVj
dC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE9iamVjdC5nZXRQcm90b3R5cGVPZihjb250cm9sbGVyKSku
c29ydCgpLCBwcm9wZXJ0aWVzLAorICAgICAgICAncHJvdG90eXBlIHNob3VsZCBzdGlsbCBoYXZl
IHRoZSByaWdodCBwcm9wZXJ0aWVzJyk7CisgICAgICBhc3NlcnRfbm90X2VxdWFscyhPYmplY3Qu
Z2V0T3duUHJvcGVydHlOYW1lcyhjb250cm9sbGVyKS5pbmRleE9mKCd0ZXN0JyksIC0xLAorICAg
ICAgICAnInRlc3QiIHNob3VsZCBiZSBhIHByb3BlcnR5IG9mIHRoZSBjb250cm9sbGVyJyk7CisK
KyAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKKyAgICB9CisgIH07CisKKyAgbmV3IFJlYWRhYmxl
U3RyZWFtKHNvdXJjZSk7CisgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKKworfSwgJ1JlYWRh
YmxlU3RyZWFtIHN0YXJ0IGNvbnRyb2xsZXIgcGFyYW1ldGVyIHNob3VsZCBiZSBleHRlbnNpYmxl
Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgZnVuY3Rpb24gU2ltcGxlU3RyZWFtU291
cmNlKCkge30KKyAgbGV0IHJlc29sdmU7CisgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZShy
ID0+IHJlc29sdmUgPSByKTsKKyAgU2ltcGxlU3RyZWFtU291cmNlLnByb3RvdHlwZSA9IHsKKyAg
ICBzdGFydDogcmVzb2x2ZQorICB9OworCisgIG5ldyBSZWFkYWJsZVN0cmVhbShuZXcgU2ltcGxl
U3RyZWFtU291cmNlKCkpOworICByZXR1cm4gcHJvbWlzZTsKKworfSwgJ1JlYWRhYmxlU3RyZWFt
IHNob3VsZCBiZSBhYmxlIHRvIGNhbGwgc3RhcnQgbWV0aG9kIHdpdGhpbiBwcm90b3R5cGUgY2hh
aW4gb2YgaXRzIHNvdXJjZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICByZXR1cm4gZGVs
YXkoNSkudGhlbigoKSA9PiB7CisgICAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAgICBjLmNs
b3NlKCk7CisgICAgICB9KTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHJzLmdl
dFJlYWRlcigpOworICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4geworICAgIGFzc2Vy
dF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3ZhbHVlIHJl
YWQgc2hvdWxkIGJlIHRoZSBvbmUgZW5xdWV1ZWQnKTsKKyAgICByZXR1cm4gcmVhZGVyLmNsb3Nl
ZDsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byBy
ZXR1cm4gYSBwcm9taXNlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgY29uc3QgdGhl
RXJyb3IgPSBuZXcgRXJyb3IoJ3JlamVjdGVkIScpOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisgICAgc3RhcnQoKSB7CisgICAgICByZXR1cm4gZGVsYXkoMSkudGhlbigoKSA9
PiB7IHRocm93IHRoZUVycm9yOyB9KTsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBycy5nZXRS
ZWFkZXIoKS5jbG9zZWQudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X3VucmVhY2hlZCgnY2xvc2Vk
IHByb21pc2Ugc2hvdWxkIGJlIHJlamVjdGVkJyk7CisgIH0sIGUgPT4geworICAgIGFzc2VydF9l
cXVhbHMoZSwgdGhlRXJyb3IsICdwcm9taXNlIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHRoZSBz
YW1lIGVycm9yJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJl
IGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSBhbmQgcmVqZWN0IGl0Jyk7CisKK3Byb21pc2VfdGVz
dCgoKSA9PiB7CisKKyAgY29uc3Qgb2JqZWN0cyA9IFsKKyAgICB7IHBvdGF0bzogJ0dpdmUgbWUg
bW9yZSEnIH0sCisgICAgJ3Rlc3QnLAorICAgIDEKKyAgXTsKKworICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgZm9yIChjb25zdCBvIG9mIG9i
amVjdHMpIHsKKyAgICAgICAgYy5lbnF1ZXVlKG8pOworICAgICAgfQorICAgICAgYy5jbG9zZSgp
OworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAg
cmV0dXJuIFByb21pc2UuYWxsKFtyZWFkZXIucmVhZCgpLCByZWFkZXIucmVhZCgpLCByZWFkZXIu
cmVhZCgpLCByZWFkZXIuY2xvc2VkXSkudGhlbihyID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2Vx
dWFscyhyWzBdLCB7IHZhbHVlOiBvYmplY3RzWzBdLCBkb25lOiBmYWxzZSB9LCAndmFsdWUgcmVh
ZCBzaG91bGQgYmUgdGhlIG9uZSBlbnF1ZXVlZCcpOworICAgIGFzc2VydF9vYmplY3RfZXF1YWxz
KHJbMV0sIHsgdmFsdWU6IG9iamVjdHNbMV0sIGRvbmU6IGZhbHNlIH0sICd2YWx1ZSByZWFkIHNo
b3VsZCBiZSB0aGUgb25lIGVucXVldWVkJyk7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMoclsy
XSwgeyB2YWx1ZTogb2JqZWN0c1syXSwgZG9uZTogZmFsc2UgfSwgJ3ZhbHVlIHJlYWQgc2hvdWxk
IGJlIHRoZSBvbmUgZW5xdWV1ZWQnKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBzaG91
bGQgYmUgYWJsZSB0byBlbnF1ZXVlIGRpZmZlcmVudCBvYmplY3RzLicpOworCitwcm9taXNlX3Rl
c3QoKCkgPT4geworCisgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCdwdWxsIGZhaWx1cmUnKTsK
KyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwoKSB7CisgICAgICBy
ZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcmVh
ZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgbGV0IGNsb3NlZCA9IGZhbHNlOworICBsZXQgcmVh
ZCA9IGZhbHNlOworCisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgcmVhZGVyLmNsb3NlZC50
aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF91bnJlYWNoZWQoJ2Nsb3NlZCBzaG91bGQgYmUgcmVq
ZWN0ZWQnKTsKKyAgICB9LCBlID0+IHsKKyAgICAgIGNsb3NlZCA9IHRydWU7CisgICAgICBhc3Nl
cnRfdHJ1ZShyZWFkKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoZSwgZXJyb3IsICdjbG9zZWQgc2hv
dWxkIGJlIHJlamVjdGVkIHdpdGggdGhlIHRocm93biBlcnJvcicpOworICAgIH0pLAorICAgIHJl
YWRlci5yZWFkKCkudGhlbigoKSA9PiB7CisgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdyZWFkKCkg
c2hvdWxkIGJlIHJlamVjdGVkJyk7CisgICAgfSwgZSA9PiB7CisgICAgICByZWFkID0gdHJ1ZTsK
KyAgICAgIGFzc2VydF9mYWxzZShjbG9zZWQpOworICAgICAgYXNzZXJ0X2VxdWFscyhlLCBlcnJv
ciwgJ3JlYWQoKSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgdGhyb3duIGVycm9yJyk7Cisg
ICAgfSkKKyAgXSk7CisKK30sICdSZWFkYWJsZVN0cmVhbTogaWYgcHVsbCByZWplY3RzLCBpdCBz
aG91bGQgZXJyb3IgdGhlIHN0cmVhbScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxl
dCBwdWxsQ291bnQgPSAwOworICBjb25zdCBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUo
KTsKKworICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KCkgeworICAgICAgcmV0dXJu
IHN0YXJ0UHJvbWlzZTsKKyAgICB9LAorICAgIHB1bGwoKSB7CisgICAgICBwdWxsQ291bnQrKzsK
KyAgICB9CisgIH0pOworCisgIHJldHVybiBzdGFydFByb21pc2UudGhlbigoKSA9PiB7CisgICAg
YXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgb25jZSBz
dGFydCBmaW5pc2hlcycpOworICAgIHJldHVybiBkZWxheSgxMCk7CisgIH0pLnRoZW4oKCkgPT4g
eworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVk
IGV4YWN0bHkgb25jZScpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25s
eSBjYWxsIHB1bGwgb25jZSB1cG9uIHN0YXJ0aW5nIHRoZSBzdHJlYW0nKTsKKworcHJvbWlzZV90
ZXN0KCgpID0+IHsKKworICBsZXQgcHVsbENvdW50ID0gMDsKKworICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7CisgICAgcHVsbChjKSB7CisgICAgICAvLyBEb24ndCBlbnF1ZXVlIGlt
bWVkaWF0ZWx5IGFmdGVyIHN0YXJ0LiBXZSB3YW50IHRoZSBzdHJlYW0gdG8gYmUgZW1wdHkgd2hl
biB3ZSBjYWxsIC5yZWFkKCkgb24gaXQuCisgICAgICBpZiAocHVsbENvdW50ID4gMCkgeworICAg
ICAgICBjLmVucXVldWUocHVsbENvdW50KTsKKyAgICAgIH0KKyAgICAgICsrcHVsbENvdW50Owor
ICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIGRlbGF5KDEpLnRoZW4oKCkgPT4geworICAgIGFzc2Vy
dF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIG9uY2Ugc3RhcnQg
ZmluaXNoZXMnKTsKKworICAgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworICAgIGNv
bnN0IHJlYWQgPSByZWFkZXIucmVhZCgpOworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAy
LCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIHdoZW4gcmVhZCBpcyBjYWxsZWQnKTsKKyAgICByZXR1
cm4gcmVhZDsKKyAgfSkudGhlbihyZXN1bHQgPT4geworICAgIGFzc2VydF9lcXVhbHMocHVsbENv
dW50LCAzLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGFnYWluIGluIHJlYWN0aW9uIHRvIGNhbGxp
bmcgcmVhZCcpOworICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogMSwg
ZG9uZTogZmFsc2UgfSwgJ3RoZSByZXN1bHQgcmVhZCBzaG91bGQgYmUgdGhlIG9uZSBlbnF1ZXVl
ZCcpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxsIHdoZW4g
dHJ5aW5nIHRvIHJlYWQgZnJvbSBhIHN0YXJ0ZWQsIGVtcHR5IHN0cmVhbScpOworCitwcm9taXNl
X3Rlc3QoKCkgPT4geworCisgIGxldCBwdWxsQ291bnQgPSAwOworICBjb25zdCBzdGFydFByb21p
c2UgPSBQcm9taXNlLnJlc29sdmUoKTsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgICByZXR1cm4g
c3RhcnRQcm9taXNlOworICAgIH0sCisgICAgcHVsbCgpIHsKKyAgICAgIHB1bGxDb3VudCsrOwor
ICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcmVhZCA9IHJzLmdldFJlYWRlcigpLnJlYWQoKTsKKyAg
YXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAsICdjYWxsaW5nIHJlYWQoKSBzaG91bGQgbm90IGNh
dXNlIHB1bGwgdG8gYmUgY2FsbGVkIHlldCcpOworCisgIHJldHVybiBzdGFydFByb21pc2UudGhl
bigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBi
ZSBjYWxsZWQgb25jZSBzdGFydCBmaW5pc2hlcycpOworICAgIHJldHVybiByZWFkOworICB9KS50
aGVuKHIgPT4geworICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9u
ZTogZmFsc2UgfSwgJ2ZpcnN0IHJlYWQoKSBzaG91bGQgcmV0dXJuIGZpcnN0IGNodW5rJyk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBub3QgaGF2ZSBiZWVu
IGNhbGxlZCBhZ2FpbicpOworICAgIHJldHVybiBkZWxheSgxMCk7CisgIH0pLnRoZW4oKCkgPT4g
eworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVk
IGV4YWN0bHkgb25jZScpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25s
eSBjYWxsIHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9tIGJlZm9yZSBz
dGFydCBmdWxmaWxscycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBwdWxsQ291
bnQgPSAwOworICBjb25zdCBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKKworICBj
b25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5l
bnF1ZXVlKCdhJyk7CisgICAgICByZXR1cm4gc3RhcnRQcm9taXNlOworICAgIH0sCisgICAgcHVs
bCgpIHsKKyAgICAgIHB1bGxDb3VudCsrOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHN0YXJ0
UHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMCwgJ3B1
bGwgc2hvdWxkIG5vdCBiZSBjYWxsZWQgb25jZSBzdGFydCBmaW5pc2hlcywgc2luY2UgdGhlIHF1
ZXVlIGlzIGZ1bGwnKTsKKworICAgIGNvbnN0IHJlYWQgPSBycy5nZXRSZWFkZXIoKS5yZWFkKCk7
CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdjYWxsaW5nIHJlYWQoKSBzaG91bGQg
Y2F1c2UgcHVsbCB0byBiZSBjYWxsZWQgaW1tZWRpYXRlbHknKTsKKyAgICByZXR1cm4gcmVhZDsK
KyAgfSkudGhlbihyID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAn
YScsIGRvbmU6IGZhbHNlIH0sICdmaXJzdCByZWFkKCkgc2hvdWxkIHJldHVybiBmaXJzdCBjaHVu
aycpOworICAgIHJldHVybiBkZWxheSgxMCk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2Vy
dF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgb25j
ZScpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwg
b25jZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9tIGFmdGVyIHN0YXJ0IGZ1bGZpbGxz
Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHB1bGxDb3VudCA9IDA7CisgIGxl
dCBjb250cm9sbGVyOworICBjb25zdCBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsK
KworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAg
ICAgY29udHJvbGxlciA9IGM7CisgICAgICByZXR1cm4gc3RhcnRQcm9taXNlOworICAgIH0sCisg
ICAgcHVsbCgpIHsKKyAgICAgICsrcHVsbENvdW50OworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qg
cmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisgIHJldHVybiBzdGFydFByb21pc2UudGhlbigoKSA9
PiB7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBoYXZlIGJl
ZW4gY2FsbGVkIG9uY2UgYnkgdGhlIHRpbWUgdGhlIHN0cmVhbSBzdGFydHMnKTsKKworICAgIGNv
bnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAn
cHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQgYWdhaW4gYWZ0ZXIgZW5xdWV1ZScpOwor
CisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2Vy
dF9lcXVhbHMocHVsbENvdW50LCAyLCAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBhZ2Fp
biBhZnRlciByZWFkJyk7CisKKyAgICByZXR1cm4gZGVsYXkoMTApOworICB9KS50aGVuKCgpID0+
IHsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMiwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxl
ZCBleGFjdGx5IHR3aWNlJyk7CisgIH0pOworfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2Fs
bCBwdWxsIGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0aGUgbGFzdCBjaHVuaywgaWYgbm90IGRy
YWluaW5nJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHB1bGxDb3VudCA9IDA7
CisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29s
dmUoKTsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykg
eworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICByZXR1cm4gc3RhcnRQcm9taXNlOworICAg
IH0sCisgICAgcHVsbCgpIHsKKyAgICAgICsrcHVsbENvdW50OworICAgIH0KKyAgfSk7CisKKyAg
Y29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgcmV0dXJuIHN0YXJ0UHJvbWlzZS50
aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxk
IGhhdmUgYmVlbiBjYWxsZWQgb25jZSBieSB0aGUgdGltZSB0aGUgc3RyZWFtIHN0YXJ0cycpOwor
CisgICAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291
bnQsIDEsICdwdWxsIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCBhZ2FpbiBhZnRlciBlbnF1
ZXVlJyk7CisKKyAgICBjb250cm9sbGVyLmNsb3NlKCk7CisKKyAgICByZXR1cm4gcmVhZGVyLnJl
YWQoKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEs
ICdwdWxsIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCBhIHNlY29uZCB0aW1lIGFmdGVyIHJl
YWQnKTsKKworICAgIHJldHVybiBkZWxheSgxMCk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFz
c2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkg
b25jZScpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVs
bCgpIGluIHJlYWN0aW9uIHRvIHJlYWQoKWluZyB0aGUgbGFzdCBjaHVuaywgaWYgZHJhaW5pbmcn
KTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgcmVzb2x2ZTsKKyAgbGV0IHJldHVy
bmVkUHJvbWlzZTsKKyAgbGV0IHRpbWVzQ2FsbGVkID0gMDsKKyAgY29uc3Qgc3RhcnRQcm9taXNl
ID0gUHJvbWlzZS5yZXNvbHZlKCk7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
eworICAgIHN0YXJ0KCkgeworICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKKyAgICB9LAorICAg
IHB1bGwoYykgeworICAgICAgYy5lbnF1ZXVlKCsrdGltZXNDYWxsZWQpOworICAgICAgcmV0dXJu
ZWRQcm9taXNlID0gbmV3IFByb21pc2UociA9PiByZXNvbHZlID0gcik7CisgICAgICByZXR1cm4g
cmV0dXJuZWRQcm9taXNlOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJl
YWRlcigpOworCisgIHJldHVybiBzdGFydFByb21pc2UudGhlbigoKSA9PiB7CisgICAgcmV0dXJu
IHJlYWRlci5yZWFkKCk7CisgIH0pLnRoZW4ocmVzdWx0MSA9PiB7CisgICAgYXNzZXJ0X2VxdWFs
cyh0aW1lc0NhbGxlZCwgMSwKKyAgICAgICdwdWxsIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9u
Y2UgYWZ0ZXIgc3RhcnQsIGJ1dCBub3QgeWV0IGhhdmUgYmVlbiBjYWxsZWQgYSBzZWNvbmQgdGlt
ZScpOworICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDEsIHsgdmFsdWU6IDEsIGRvbmU6
IGZhbHNlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB0aGUgZW5xdWV1ZWQgdmFsdWUn
KTsKKworICAgIHJldHVybiBkZWxheSgxMCk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2Vy
dF9lcXVhbHModGltZXNDYWxsZWQsIDEsICdhZnRlciAxMCBtcywgcHVsbCBzaG91bGQgc3RpbGwg
b25seSBoYXZlIGJlZW4gY2FsbGVkIG9uY2UnKTsKKworICAgIHJlc29sdmUoKTsKKyAgICByZXR1
cm4gcmV0dXJuZWRQcm9taXNlOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxz
KHRpbWVzQ2FsbGVkLCAyLAorICAgICAgJ2FmdGVyIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHB1
bGwgaXMgZnVsZmlsbGVkLCBwdWxsIHNob3VsZCBiZSBjYWxsZWQgYSBzZWNvbmQgdGltZScpOwor
ICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCB1bnRpbCB0
aGUgcHJldmlvdXMgcHVsbCBjYWxsXCdzIHByb21pc2UgZnVsZmlsbHMnKTsKKworcHJvbWlzZV90
ZXN0KCgpID0+IHsKKworICBsZXQgdGltZXNDYWxsZWQgPSAwOworICBjb25zdCBzdGFydFByb21p
c2UgPSBQcm9taXNlLnJlc29sdmUoKTsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSgKKyAgICB7CisgICAgICBzdGFydChjKSB7CisgICAgICAgIGMuZW5xdWV1ZSgnYScpOworICAg
ICAgICBjLmVucXVldWUoJ2InKTsKKyAgICAgICAgYy5lbnF1ZXVlKCdjJyk7CisgICAgICAgIHJl
dHVybiBzdGFydFByb21pc2U7CisgICAgICB9LAorICAgICAgcHVsbCgpIHsKKyAgICAgICAgKyt0
aW1lc0NhbGxlZDsKKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgIHNpemUoKSB7CisgICAg
ICAgIHJldHVybiAxOworICAgICAgfSwKKyAgICAgIGhpZ2hXYXRlck1hcms6IEluZmluaXR5Cisg
ICAgfQorICApOworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICByZXR1cm4g
c3RhcnRQcm9taXNlLnRoZW4oKCkgPT4geworICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9
KS50aGVuKHJlc3VsdDEgPT4geworICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDEsIHsg
dmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IGNodW5rIHNob3VsZCBiZSBhcyBleHBl
Y3RlZCcpOworCisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgIH0pLnRoZW4ocmVzdWx0MiA9
PiB7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MiwgeyB2YWx1ZTogJ2InLCBkb25l
OiBmYWxzZSB9LCAnc2Vjb25kIGNodW5rIHNob3VsZCBiZSBhcyBleHBlY3RlZCcpOworCisgICAg
cmV0dXJuIHJlYWRlci5yZWFkKCk7CisgIH0pLnRoZW4ocmVzdWx0MyA9PiB7CisgICAgYXNzZXJ0
X29iamVjdF9lcXVhbHMocmVzdWx0MywgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxzZSB9LCAndGhp
cmQgY2h1bmsgc2hvdWxkIGJlIGFzIGV4cGVjdGVkJyk7CisKKyAgICByZXR1cm4gZGVsYXkoMTAp
OworICB9KS50aGVuKCgpID0+IHsKKyAgICAvLyBPbmNlIGZvciBhZnRlciBzdGFydCwgYW5kIG9u
Y2UgZm9yIGV2ZXJ5IHJlYWQuCisgICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgNCwgJ3B1
bGwoKSBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgZm91ciB0aW1lcycpOworICB9KTsKKworfSwg
J1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgcHVsbCBhZnRlciBzdGFydCwgYW5kIGFmdGVyIGV2ZXJ5
IHJlYWQnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgdGltZXNDYWxsZWQgPSAw
OworICBjb25zdCBzdGFydFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKKworICBjb25zdCBy
cyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVl
KCdhJyk7CisgICAgICBjLmNsb3NlKCk7CisgICAgICByZXR1cm4gc3RhcnRQcm9taXNlOworICAg
IH0sCisgICAgcHVsbCgpIHsKKyAgICAgICsrdGltZXNDYWxsZWQ7CisgICAgfQorICB9KTsKKwor
ICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKyAgcmV0dXJuIHN0YXJ0UHJvbWlzZS50
aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHRpbWVzQ2FsbGVkLCAwLCAnYWZ0ZXIgc3Rh
cnQgZmluaXNoZXMsIHB1bGwgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkJyk7CisKKyAgICBy
ZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFs
cyh0aW1lc0NhbGxlZCwgMCwgJ3JlYWRpbmcgc2hvdWxkIG5vdCBoYXZlIHRyaWdnZXJlZCBhIHB1
bGwgY2FsbCcpOworCisgICAgcmV0dXJuIHJlYWRlci5jbG9zZWQ7CisgIH0pLnRoZW4oKCkgPT4g
eworICAgIGFzc2VydF9lcXVhbHModGltZXNDYWxsZWQsIDAsICdzdHJlYW0gc2hvdWxkIGhhdmUg
Y2xvc2VkIHdpdGggc3RpbGwgbm8gY2FsbHMgdG8gcHVsbCcpOworICB9KTsKKworfSwgJ1JlYWRh
YmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCBhZnRlciBzdGFydCBpZiB0aGUgc3RyZWFt
IGlzIG5vdyBjbG9zZWQnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgdGltZXND
YWxsZWQgPSAwOworICBsZXQgcmVzb2x2ZTsKKyAgY29uc3QgcmVhZHkgPSBuZXcgUHJvbWlzZShy
ID0+IHJlc29sdmUgPSByKTsKKworICBuZXcgUmVhZGFibGVTdHJlYW0oCisgICAgeworICAgICAg
c3RhcnQoKSB7fSwKKyAgICAgIHB1bGwoYykgeworICAgICAgICBjLmVucXVldWUoKyt0aW1lc0Nh
bGxlZCk7CisKKyAgICAgICAgaWYgKHRpbWVzQ2FsbGVkID09PSA0KSB7CisgICAgICAgICAgcmVz
b2x2ZSgpOworICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICBzaXplKCkg
eworICAgICAgICByZXR1cm4gMTsKKyAgICAgIH0sCisgICAgICBoaWdoV2F0ZXJNYXJrOiA0Cisg
ICAgfQorICApOworCisgIHJldHVybiByZWFkeS50aGVuKCgpID0+IHsKKyAgICAvLyBhZnRlciBz
dGFydDogc2l6ZSA9IDAsIHB1bGwoKQorICAgIC8vIGFmdGVyIGVucXVldWUoMSk6IHNpemUgPSAx
LCBwdWxsKCkKKyAgICAvLyBhZnRlciBlbnF1ZXVlKDIpOiBzaXplID0gMiwgcHVsbCgpCisgICAg
Ly8gYWZ0ZXIgZW5xdWV1ZSgzKTogc2l6ZSA9IDMsIHB1bGwoKQorICAgIC8vIGFmdGVyIGVucXVl
dWUoNCk6IHNpemUgPSA0LCBkbyBub3QgcHVsbAorICAgIGFzc2VydF9lcXVhbHModGltZXNDYWxs
ZWQsIDQsICdwdWxsKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgZm91ciB0aW1lcycpOworICB9
KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxsIGFmdGVyIGVucXVldWVp
bmcgZnJvbSBpbnNpZGUgcHVsbCAod2l0aCBubyByZWFkIHJlcXVlc3RzKSwgaWYgc3RyYXRlZ3kg
YWxsb3dzJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHB1bGxDYWxsZWQgPSBm
YWxzZTsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgcHVsbChjKSB7
CisgICAgICBwdWxsQ2FsbGVkID0gdHJ1ZTsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICB9CisgIH0p
OworCisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworICByZXR1cm4gcmVhZGVyLmNs
b3NlZC50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfdHJ1ZShwdWxsQ2FsbGVkKTsKKyAgfSk7CisK
K30sICdSZWFkYWJsZVN0cmVhbSBwdWxsIHNob3VsZCBiZSBhYmxlIHRvIGNsb3NlIGEgc3RyZWFt
LicpOworCit0ZXN0KCgpID0+IHsKKworICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKKworICBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGFzc2VydF9lcXVhbHMo
Yy5lbnF1ZXVlKCdhJyksIHVuZGVmaW5lZCwgJ3RoZSBmaXJzdCBlbnF1ZXVlIHNob3VsZCByZXR1
cm4gdW5kZWZpbmVkJyk7CisgICAgICBjLmNsb3NlKCk7CisKKyAgICAgIGFzc2VydF90aHJvd3Mo
bmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjLmVucXVldWUoJ2InKSwgJ2VucXVldWUgYWZ0ZXIgY2xv
c2Ugc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7CisgICAgICBzdGFydENhbGxlZCA9IHRydWU7
CisgICAgfQorICB9KTsKKworICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7CisKK30sICdSZWFk
YWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgd2hlbiB0aGUgc3RyZWFtIGlzIHJlYWRh
YmxlIGJ1dCBkcmFpbmluZycpOworCit0ZXN0KCgpID0+IHsKKworICBsZXQgc3RhcnRDYWxsZWQg
PSBmYWxzZTsKKworICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAg
IGMuY2xvc2UoKTsKKworICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+
IGMuZW5xdWV1ZSgnYScpLCAnZW5xdWV1ZSBhZnRlciBjbG9zZSBzaG91bGQgdGhyb3cgYSBUeXBl
RXJyb3InKTsKKyAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKKyAgICB9CisgIH0pOworCisgIGFz
c2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNo
b3VsZCB0aHJvdyB3aGVuIHRoZSBzdHJlYW0gaXMgY2xvc2VkJyk7CisKK3Rlc3QoKCkgPT4gewor
CisgIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOworICBjb25zdCBleHBlY3RlZEVycm9yID0gbmV3
IEVycm9yKCdpIGFtIHNhZCcpOworCisgIG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQo
YykgeworICAgICAgYy5lcnJvcihleHBlY3RlZEVycm9yKTsKKworICAgICAgYXNzZXJ0X3Rocm93
cyhleHBlY3RlZEVycm9yLCAoKSA9PiBjLmVucXVldWUoJ2EnKSwgJ2VucXVldWUgYWZ0ZXIgZXJy
b3Igc2hvdWxkIHRocm93IHRoYXQgZXJyb3InKTsKKyAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsK
KyAgICB9CisgIH0pOworCisgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKKworfSwgJ1JlYWRh
YmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB0aGUgc3RvcmVkIGVycm9yIHdoZW4gdGhl
IHN0cmVhbSBpcyBlcnJvcmVkJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHN0
YXJ0Q2FsbGVkID0gMDsKKyAgbGV0IHB1bGxDYWxsZWQgPSAwOworICBsZXQgY2FuY2VsQ2FsbGVk
ID0gMDsKKworICAvKiBlc2xpbnQtZGlzYWJsZSBuby11c2UtYmVmb3JlLWRlZmluZSAqLworICBj
bGFzcyBTb3VyY2UgeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIHN0YXJ0Q2FsbGVkKys7CisgICAg
ICBhc3NlcnRfZXF1YWxzKHRoaXMsIHRoZVNvdXJjZSwgJ3N0YXJ0KCkgc2hvdWxkIGJlIGNhbGxl
ZCB3aXRoIHRoZSBjb3JyZWN0IHRoaXMnKTsKKyAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgIH0K
KworICAgIHB1bGwoKSB7CisgICAgICBwdWxsQ2FsbGVkKys7CisgICAgICBhc3NlcnRfZXF1YWxz
KHRoaXMsIHRoZVNvdXJjZSwgJ3B1bGwoKSBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIGNvcnJl
Y3QgdGhpcycpOworICAgIH0KKworICAgIGNhbmNlbCgpIHsKKyAgICAgIGNhbmNlbENhbGxlZCsr
OworICAgICAgYXNzZXJ0X2VxdWFscyh0aGlzLCB0aGVTb3VyY2UsICdjYW5jZWwoKSBzaG91bGQg
YmUgY2FsbGVkIHdpdGggdGhlIGNvcnJlY3QgdGhpcycpOworICAgIH0KKyAgfQorICAvKiBlc2xp
bnQtZW5hYmxlIG5vLXVzZS1iZWZvcmUtZGVmaW5lICovCisKKyAgY29uc3QgdGhlU291cmNlID0g
bmV3IFNvdXJjZSgpOworICB0aGVTb3VyY2UuZGVidWdOYW1lID0gJ3RoZSBzb3VyY2Ugb2JqZWN0
IHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3InOyAvLyBtYWtlcyB0ZXN0IGZhaWx1cmVzIGVhc2ll
ciB0byBkaWFnbm9zZQorCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHRoZVNvdXJj
ZSk7CisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIHJldHVybiByZWFkZXIu
cmVhZCgpLnRoZW4oKCkgPT4geworICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOworICAgIHJzLmNh
bmNlbCgpOworICAgIGFzc2VydF9lcXVhbHMoc3RhcnRDYWxsZWQsIDEpOworICAgIGFzc2VydF9l
cXVhbHMocHVsbENhbGxlZCwgMSk7CisgICAgYXNzZXJ0X2VxdWFscyhjYW5jZWxDYWxsZWQsIDEp
OworICAgIHJldHVybiBycy5nZXRSZWFkZXIoKS5jbG9zZWQ7CisgIH0pOworCit9LCAnUmVhZGFi
bGVTdHJlYW06IHNob3VsZCBjYWxsIHVuZGVybHlpbmcgc291cmNlIG1ldGhvZHMgYXMgbWV0aG9k
cycpOworCit0ZXN0KCgpID0+IHsKKworICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKKyAgbmV3
IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBhc3NlcnRfZXF1YWxzKGMu
ZGVzaXJlZFNpemUsIDEpOworICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgICBhc3NlcnRfZXF1
YWxzKGMuZGVzaXJlZFNpemUsIDApOworICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgICBhc3Nl
cnRfZXF1YWxzKGMuZGVzaXJlZFNpemUsIC0xKTsKKyAgICAgIGMuZW5xdWV1ZSgnYycpOworICAg
ICAgYXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAtMik7CisgICAgICBjLmVucXVldWUoJ2Qn
KTsKKyAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgLTMpOworICAgICAgYy5lbnF1
ZXVlKCdlJyk7CisgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgfQorICB9KTsKKworICBh
c3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBzdHJhdGVnaWVz
OiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91bGQgZ2l2ZSBkZXNpcmVkU2l6ZSBvZiAxIHRvIHN0
YXJ0LCBkZWNyZWFzaW5nIGJ5IDEgcGVyIGVucXVldWUnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+
IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
eworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7Cisg
IGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIGFzc2VydF9lcXVhbHMoY29udHJv
bGxlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBzdGFydCBhdCAxJyk7Cisg
IGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVz
aXJlZFNpemUsIDAsICdkZXNpcmVkU2l6ZSBzaG91bGQgZGVjcmVhc2UgdG8gMCBhZnRlciBmaXJz
dCBlbnF1ZXVlJyk7CisKKyAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQxID0+IHsK
KyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQxLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZh
bHNlIH0sICdmaXJzdCBjaHVuayByZWFkIHNob3VsZCBiZSBjb3JyZWN0Jyk7CisKKyAgICBhc3Nl
cnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEsICdkZXNpcmVkU2l6ZSBzaG91bGQg
Z28gdXAgdG8gMSBhZnRlciB0aGUgZmlyc3QgcmVhZCcpOworICAgIGNvbnRyb2xsZXIuZW5xdWV1
ZSgnYicpOworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJ2Rl
c2lyZWRTaXplIHNob3VsZCBnbyBkb3duIHRvIDAgYWZ0ZXIgdGhlIHNlY29uZCBlbnF1ZXVlJyk7
CisKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgfSkudGhlbihyZXN1bHQyID0+IHsKKyAg
ICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQyLCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNl
IH0sICdzZWNvbmQgY2h1bmsgcmVhZCBzaG91bGQgYmUgY29ycmVjdCcpOworCisgICAgYXNzZXJ0
X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnZGVzaXJlZFNpemUgc2hvdWxkIGdv
IHVwIHRvIDEgYWZ0ZXIgdGhlIHNlY29uZCByZWFkJyk7CisgICAgY29udHJvbGxlci5lbnF1ZXVl
KCdjJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnZGVz
aXJlZFNpemUgc2hvdWxkIGdvIGRvd24gdG8gMCBhZnRlciB0aGUgdGhpcmQgZW5xdWV1ZScpOwor
CisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgIH0pLnRoZW4ocmVzdWx0MyA9PiB7CisgICAg
YXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MywgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxzZSB9
LCAndGhpcmQgY2h1bmsgcmVhZCBzaG91bGQgYmUgY29ycmVjdCcpOworCisgICAgYXNzZXJ0X2Vx
dWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnZGVzaXJlZFNpemUgc2hvdWxkIGdvIHVw
IHRvIDEgYWZ0ZXIgdGhlIHRoaXJkIHJlYWQnKTsKKyAgICBjb250cm9sbGVyLmVucXVldWUoJ2Qn
KTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICdkZXNpcmVk
U2l6ZSBzaG91bGQgZ28gZG93biB0byAwIGFmdGVyIHRoZSBmb3VydGggZW5xdWV1ZScpOworICB9
KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5
IHNob3VsZCBjb250aW51ZSBnaXZpbmcgZGVzaXJlZFNpemUgb2YgMSBpZiB0aGUgY2h1bmtzIGFy
ZSByZWFkIGltbWVkaWF0ZWx5Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBy
YW5kb21Tb3VyY2UgPSBuZXcgUmFuZG9tUHVzaFNvdXJjZSg4KTsKKworICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYXNzZXJ0X2VxdWFscyh0
eXBlb2YgYywgJ29iamVjdCcsICdjIHNob3VsZCBiZSBhbiBvYmplY3QgaW4gc3RhcnQnKTsKKyAg
ICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGMuZW5xdWV1ZSwgJ2Z1bmN0aW9uJywgJ2VucXVldWUg
c2hvdWxkIGJlIGEgZnVuY3Rpb24gaW4gc3RhcnQnKTsKKyAgICAgIGFzc2VydF9lcXVhbHModHlw
ZW9mIGMuY2xvc2UsICdmdW5jdGlvbicsICdjbG9zZSBzaG91bGQgYmUgYSBmdW5jdGlvbiBpbiBz
dGFydCcpOworICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgYy5lcnJvciwgJ2Z1bmN0aW9uJywg
J2Vycm9yIHNob3VsZCBiZSBhIGZ1bmN0aW9uIGluIHN0YXJ0Jyk7CisKKyAgICAgIHJhbmRvbVNv
dXJjZS5vbmRhdGEgPSB0LnN0ZXBfZnVuYyhjaHVuayA9PiB7CisgICAgICAgIGlmICghYy5lbnF1
ZXVlKGNodW5rKSA8PSAwKSB7CisgICAgICAgICAgcmFuZG9tU291cmNlLnJlYWRTdG9wKCk7Cisg
ICAgICAgIH0KKyAgICAgIH0pOworCisgICAgICByYW5kb21Tb3VyY2Uub25lbmQgPSBjLmNsb3Nl
LmJpbmQoYyk7CisgICAgICByYW5kb21Tb3VyY2Uub25lcnJvciA9IGMuZXJyb3IuYmluZChjKTsK
KyAgICB9LAorCisgICAgcHVsbChjKSB7CisgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBjLCAn
b2JqZWN0JywgJ2Mgc2hvdWxkIGJlIGFuIG9iamVjdCBpbiBwdWxsJyk7CisgICAgICBhc3NlcnRf
ZXF1YWxzKHR5cGVvZiBjLmVucXVldWUsICdmdW5jdGlvbicsICdlbnF1ZXVlIHNob3VsZCBiZSBh
IGZ1bmN0aW9uIGluIHB1bGwnKTsKKyAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGMuY2xvc2Us
ICdmdW5jdGlvbicsICdjbG9zZSBzaG91bGQgYmUgYSBmdW5jdGlvbiBpbiBwdWxsJyk7CisKKyAg
ICAgIHJhbmRvbVNvdXJjZS5yZWFkU3RhcnQoKTsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBy
ZWFkYWJsZVN0cmVhbVRvQXJyYXkocnMpLnRoZW4oY2h1bmtzID0+IHsKKyAgICBhc3NlcnRfZXF1
YWxzKGNodW5rcy5sZW5ndGgsIDgsICc4IGNodW5rcyBzaG91bGQgYmUgcmVhZCcpOworICAgIGZv
ciAoY29uc3QgY2h1bmsgb2YgY2h1bmtzKSB7CisgICAgICBhc3NlcnRfZXF1YWxzKGNodW5rLmxl
bmd0aCwgMTI4LCAnY2h1bmsgc2hvdWxkIGhhdmUgMTI4IGJ5dGVzJyk7CisgICAgfQorICB9KTsK
KworfSwgJ1JlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgcmFuZG9t
IHB1c2ggc291cmNlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgY29uc3QgcnMgPSBz
ZXF1ZW50aWFsUmVhZGFibGVTdHJlYW0oMTApOworCisgIHJldHVybiByZWFkYWJsZVN0cmVhbVRv
QXJyYXkocnMpLnRoZW4oY2h1bmtzID0+IHsKKyAgICBhc3NlcnRfdHJ1ZShycy5zb3VyY2UuY2xv
c2VkLCAnc291cmNlIHNob3VsZCBiZSBjbG9zZWQgYWZ0ZXIgYWxsIGNodW5rcyBhcmUgcmVhZCcp
OworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbMSwgMiwgMywgNCwgNSwgNiwgNywg
OCwgOSwgMTBdLCAndGhlIGV4cGVjdGVkIDEwIGNodW5rcyBzaG91bGQgYmUgcmVhZCcpOworICB9
KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgc3lu
YyBwdWxsIHNvdXJjZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0g
c2VxdWVudGlhbFJlYWRhYmxlU3RyZWFtKDEwLCB7IGFzeW5jOiB0cnVlIH0pOworCisgIHJldHVy
biByZWFkYWJsZVN0cmVhbVRvQXJyYXkocnMpLnRoZW4oY2h1bmtzID0+IHsKKyAgICBhc3NlcnRf
dHJ1ZShycy5zb3VyY2UuY2xvc2VkLCAnc291cmNlIHNob3VsZCBiZSBjbG9zZWQgYWZ0ZXIgYWxs
IGNodW5rcyBhcmUgcmVhZCcpOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbMSwg
MiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdLCAndGhlIGV4cGVjdGVkIDEwIGNodW5rcyBzaG91
bGQgYmUgcmVhZCcpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRl
c3Q6IGFkYXB0aW5nIGFuIGFzeW5jIHB1bGwgc291cmNlJyk7CisKK2RvbmUoKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW1zL3BpcGUtdGhyb3VnaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9w
aXBlLXRocm91Z2gtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlMTg3YTJjMzk1Y2ZhNjQyMDM1
NjkwYzc3MWNmZjk2MDIxOWUwODcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9waXBl
LXRocm91Z2gtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKKworUEFTUyBSZWFkYWJsZVN0
cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2ggc2hvdWxkIHdvcmsgZ2VuZXJpY2FsbHkgb24gaXRz
IHRoaXMgYW5kIGl0cyBhcmd1bWVudHMgCitQQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5w
aXBlVGhyb3VnaCBzaG91bGQgdGhyb3cgd2hlbiBpdHMgZmlyc3QgYXJndW1lbnQgaXMgbm90IGNv
bnZlcnRpYmxlIHRvIGFuIG9iamVjdCAKK1BBU1MgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBp
cGVUaHJvdWdoIHNob3VsZCB0aHJvdyB3aGVuICJ0aGlzIiBoYXMgbm8gcGlwZVRvIG1ldGhvZCAK
K1BBU1MgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3VsZCByZXRocm93
IGVycm9ycyBmcm9tIGFjY2Vzc2luZyBwaXBlVG8sIHJlYWRhYmxlLCBvciB3cml0YWJsZSAKK1BB
U1MgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3VsZCB3b3JrIHdpdGgg
bWlzc2luZyByZWFkYWJsZSwgd3JpdGFibGUsIG9yIG9wdGlvbnMgCitGQUlMIExvYWQgcGlwZS10
aHJvdWdoLmpzIHdpdGggU2hhcmVkV29ya2VyIGFzc2VydF91bnJlYWNoZWQ6IFNoYXJlZFdvcmtl
ciBpcyB1bmF2YWlsYWJsZSBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK0ZBSUwgVW50aXRsZWQg
dW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ25hdmlnYXRvci5zZXJ2aWNl
V29ya2VyLmdldFJlZ2lzdHJhdGlvbicpCitQQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5w
aXBlVGhyb3VnaCBzaG91bGQgd29yayBnZW5lcmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFy
Z3VtZW50cyAKK1BBU1MgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3Vs
ZCB0aHJvdyB3aGVuIGl0cyBmaXJzdCBhcmd1bWVudCBpcyBub3QgY29udmVydGlibGUgdG8gYW4g
b2JqZWN0IAorUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2ggc2hvdWxk
IHRocm93IHdoZW4gInRoaXMiIGhhcyBubyBwaXBlVG8gbWV0aG9kIAorUEFTUyBSZWFkYWJsZVN0
cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2ggc2hvdWxkIHJldGhyb3cgZXJyb3JzIGZyb20gYWNj
ZXNzaW5nIHBpcGVUbywgcmVhZGFibGUsIG9yIHdyaXRhYmxlIAorUEFTUyBSZWFkYWJsZVN0cmVh
bS5wcm90b3R5cGUucGlwZVRocm91Z2ggc2hvdWxkIHdvcmsgd2l0aCBtaXNzaW5nIHJlYWRhYmxl
LCB3cml0YWJsZSwgb3Igb3B0aW9ucyAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcGlwZS10
aHJvdWdoLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9waXBlLXRocm91Z2guaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
MmQ5OGQ0NWFmNDZmMjVmZTA2MjYyMTBkOGZhMTkxNWNjNjQ1Y2Y2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvcGlwZS10aHJvdWdoLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InBpcGUtdGhyb3VnaC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorJ3VzZSBzdHJp
Y3QnOword29ya2VyX3Rlc3QoJ3BpcGUtdGhyb3VnaC5qcycpOworPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9waXBlLXRocm91Z2guanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9waXBlLXRocm91
Z2guanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDk4ODkyOGU3OGIxOGU3M2FmNDRlY2Y0OWRkMWU0YWY4MWI2YjNl
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3BpcGUtdGhyb3VnaC5qcwpAQCAtMCww
ICsxLDEwOCBAQAorJ3VzZSBzdHJpY3QnOworCitpZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Cisg
IHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMnKTsKKyAgc2Vs
Zi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Cit9CisKK3Rlc3Qo
KCkgPT4geworCisgIGxldCBwaXBlVG9Bcmd1bWVudHM7CisgIGNvbnN0IHRoaXNWYWx1ZSA9IHsK
KyAgICBwaXBlVG8oKSB7CisgICAgICBwaXBlVG9Bcmd1bWVudHMgPSBhcmd1bWVudHM7CisgICAg
fQorICB9OworCisgIGNvbnN0IGlucHV0ID0geyByZWFkYWJsZToge30sIHdyaXRhYmxlOiB7fSB9
OworICBjb25zdCBvcHRpb25zID0ge307CisgIGNvbnN0IHJlc3VsdCA9IFJlYWRhYmxlU3RyZWFt
LnByb3RvdHlwZS5waXBlVGhyb3VnaC5jYWxsKHRoaXNWYWx1ZSwgaW5wdXQsIG9wdGlvbnMpOwor
CisgIGFzc2VydF9hcnJheV9lcXVhbHMocGlwZVRvQXJndW1lbnRzLCBbaW5wdXQud3JpdGFibGUs
IG9wdGlvbnNdLAorICAgICdjb3JyZWN0IGFyZ3VtZW50cyBzaG91bGQgYmUgcGFzc2VkIHRvIHRo
aXNWYWx1ZS5waXBlVG8nKTsKKyAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIGlucHV0LnJlYWRhYmxl
LCAncmV0dXJuIHZhbHVlIHNob3VsZCBiZSB0aGUgcGFzc2VkIHJlYWRhYmxlIHByb3BlcnR5Jyk7
CisKK30sICdSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2ggc2hvdWxkIHdvcmsg
Z2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMnKTsKKwordGVzdCgoKSA9
PiB7CisKKyAgY29uc3QgdGhpc1ZhbHVlID0geworICAgIHBpcGVUbygpIHsKKyAgICAgIGFzc2Vy
dF91bnJlYWNoZWQoJ3BpcGVUbyBzaG91bGQgbm90IGJlIGNhbGxlZCcpOworICAgIH0KKyAgfTsK
KworICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLCAncGlwZVRocm91Z2gn
LCB0aGlzVmFsdWUsIFt1bmRlZmluZWQsIHt9XSk7CisgIG1ldGhvZFRocm93cyhSZWFkYWJsZVN0
cmVhbS5wcm90b3R5cGUsICdwaXBlVGhyb3VnaCcsIHRoaXNWYWx1ZSwgW251bGwsIHt9XSk7CisK
K30sICdSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2ggc2hvdWxkIHRocm93IHdo
ZW4gaXRzIGZpcnN0IGFyZ3VtZW50IGlzIG5vdCBjb252ZXJ0aWJsZSB0byBhbiBvYmplY3QnKTsK
KwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgYXJncyA9IFt7IHJlYWRhYmxlOiB7fSwgd3JpdGFi
bGU6IHt9IH0sIHt9XTsKKworICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW0ucHJvdG90eXBl
LCAncGlwZVRocm91Z2gnLCB1bmRlZmluZWQsIGFyZ3MpOworICBtZXRob2RUaHJvd3MoUmVhZGFi
bGVTdHJlYW0ucHJvdG90eXBlLCAncGlwZVRocm91Z2gnLCBudWxsLCBhcmdzKTsKKyAgbWV0aG9k
VGhyb3dzKFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ3BpcGVUaHJvdWdoJywgMSwgYXJncyk7
CisgIG1ldGhvZFRocm93cyhSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUsICdwaXBlVGhyb3VnaCcs
IHsgcGlwZVRvOiAndGVzdCcgfSwgYXJncyk7CisKK30sICdSZWFkYWJsZVN0cmVhbS5wcm90b3R5
cGUucGlwZVRocm91Z2ggc2hvdWxkIHRocm93IHdoZW4gInRoaXMiIGhhcyBubyBwaXBlVG8gbWV0
aG9kJyk7CisKK3Rlc3QoKCkgPT4geworICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcigncG90YXRv
Jyk7CisKKyAgY29uc3QgdGhyb3dpbmdQaXBlVG8gPSB7CisgICAgZ2V0IHBpcGVUbygpIHsKKyAg
ICAgIHRocm93IGVycm9yOworICAgIH0KKyAgfTsKKyAgYXNzZXJ0X3Rocm93cyhlcnJvciwKKyAg
ICAoKSA9PiBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2guY2FsbCh0aHJvd2lu
Z1BpcGVUbywgeyByZWFkYWJsZTogeyB9LCB3cml0YWJsZTogeyB9IH0sIHt9KSwKKyAgICAncGlw
ZVRocm91Z2ggc2hvdWxkIHJldGhyb3cgdGhlIGVycm9yIHRocm93biBieSBwaXBlVG8nKTsKKwor
ICBjb25zdCB0aGlzVmFsdWUgPSB7CisgICAgcGlwZVRvKCkgeworICAgICAgYXNzZXJ0X3VucmVh
Y2hlZCgncGlwZVRvIHNob3VsZCBub3QgYmUgY2FsbGVkJyk7CisgICAgfQorICB9OworCisgIGNv
bnN0IHRocm93aW5nV3JpdGFibGUgPSB7CisgICAgcmVhZGFibGU6IHt9LAorICAgIGdldCB3cml0
YWJsZSgpIHsKKyAgICAgIHRocm93IGVycm9yOworICAgIH0KKyAgfTsKKyAgYXNzZXJ0X3Rocm93
cyhlcnJvciwKKyAgICAoKSA9PiBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2gu
Y2FsbCh0aGlzVmFsdWUsIHRocm93aW5nV3JpdGFibGUsIHt9KSwKKyAgICAncGlwZVRocm91Z2gg
c2hvdWxkIHJldGhyb3cgdGhlIGVycm9yIHRocm93biBieSB0aGUgd3JpdGFibGUgZ2V0dGVyJyk7
CisKKyAgY29uc3QgdGhyb3dpbmdSZWFkYWJsZSA9IHsKKyAgICBnZXQgcmVhZGFibGUoKSB7Cisg
ICAgICB0aHJvdyBlcnJvcjsKKyAgICB9LAorICAgIHdyaXRhYmxlOiB7fQorICB9OworICBhc3Nl
cnRfdGhyb3dzKGVycm9yLAorICAgICgpID0+IFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBl
VGhyb3VnaC5jYWxsKHRoaXNWYWx1ZSwgdGhyb3dpbmdSZWFkYWJsZSwge30pLAorICAgICdwaXBl
VGhyb3VnaCBzaG91bGQgcmV0aHJvdyB0aGUgZXJyb3IgdGhyb3duIGJ5IHRoZSByZWFkYWJsZSBn
ZXR0ZXInKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCBzaG91
bGQgcmV0aHJvdyBlcnJvcnMgZnJvbSBhY2Nlc3NpbmcgcGlwZVRvLCByZWFkYWJsZSwgb3Igd3Jp
dGFibGUnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvdW50ID0gMDsKKyAgY29uc3QgdGhp
c1ZhbHVlID0geworICAgIHBpcGVUbygpIHsKKyAgICAgICsrY291bnQ7CisgICAgfQorICB9Owor
CisgIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaC5jYWxsKHRoaXNWYWx1ZSwg
eyByZWFkYWJsZToge30sIHdyaXRhYmxlOiB7fSB9KTsKKyAgUmVhZGFibGVTdHJlYW0ucHJvdG90
eXBlLnBpcGVUaHJvdWdoLmNhbGwodGhpc1ZhbHVlLCB7IHJlYWRhYmxlOiB7fSB9LCB7fSk7Cisg
IFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaC5jYWxsKHRoaXNWYWx1ZSwgeyB3
cml0YWJsZToge30gfSwge30pOworCisgIGFzc2VydF9lcXVhbHMoY291bnQsIDMsICdwaXBlVG8g
d2FzIGNhbGxlZCAzIHRpbWVzJyk7CisKK30sICdSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlw
ZVRocm91Z2ggc2hvdWxkIHdvcmsgd2l0aCBtaXNzaW5nIHJlYWRhYmxlLCB3cml0YWJsZSwgb3Ig
b3B0aW9ucycpOworCitkb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1y
ZWFkZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2MDM4MmI2ODI4NjBhZGY0NjVmOTY1OTE1
MzQ0ZjQzYzRhMzRkNTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDU2IEBACisKK1BBU1MgQ2FuIGdl
dCB0aGUgUmVhZGFibGVTdHJlYW1SZWFkZXIgY29uc3RydWN0b3IgaW5kaXJlY3RseSAKK1BBU1Mg
UmVhZGFibGVTdHJlYW1SZWFkZXIgY29uc3RydWN0b3Igc2hvdWxkIGdldCBhIFJlYWRhYmxlU3Ry
ZWFtIG9iamVjdCBhcyBhcmd1bWVudCAKK0ZBSUwgUmVhZGFibGVTdHJlYW1SZWFkZXIgaW5zdGFu
Y2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2YgcHJvcGVydGllcyBhc3NlcnRfZXF1
YWxzOiBtZXRob2Qgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlIGV4cGVjdGVkIGZhbHNlIGJ1dCBn
b3QgdHJ1ZQorUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgc2hvdWxkIGFsd2F5cyBy
ZXR1cm4gdGhlIHNhbWUgcHJvbWlzZSBvYmplY3QgCitQQVNTIENvbnN0cnVjdGluZyBhIFJlYWRh
YmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxy
ZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3QgY29uc3RydWN0aW9uKSAKK1BBU1MgR2V0dGluZyBhIFJl
YWRhYmxlU3RyZWFtUmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVh
bSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCBjb25zdHJ1Y3Rpb24pIAorUEFTUyBDb25z
dHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgZmFpbCBpZiB0
aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVhZGVyKSAKK1BBU1MgR2V0dGlu
ZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHZpYSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhl
IHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGdldFJlYWRlcikgCitQQVNTIENvbnN0cnVj
dGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0aGUg
c3RyZWFtIGlzIGNsb3NlZCAKK1BBU1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFk
ZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgZXJyb3JlZCAKK1BBU1Mg
UmVhZGluZyBmcm9tIGEgcmVhZGVyIGZvciBhbiBlbXB0eSBzdHJlYW0gd2lsbCB3YWl0IHVudGls
IGEgY2h1bmsgaXMgYXZhaWxhYmxlIAorUEFTUyBjYW5jZWwoKSBvbiBhIHJlYWRlciBkb2VzIG5v
dCByZWxlYXNlIHRoZSByZWFkZXIgCitQQVNTIGNsb3NlZCBzaG91bGQgYmUgZnVsZmlsbGVkIGFm
dGVyIHN0cmVhbSBpcyBjbG9zZWQgKC5jbG9zZWQgYWNjZXNzIGJlZm9yZSBhY3F1aXJpbmcpIAor
UEFTUyBjbG9zZWQgc2hvdWxkIGJlIHJlamVjdGVkIGFmdGVyIHJlYWRlciByZWxlYXNlcyBpdHMg
bG9jayAobXVsdGlwbGUgc3RyZWFtIGxvY2tzKSAKK1BBU1MgTXVsdGlwbGUgcmVhZGVycyBjYW4g
YWNjZXNzIHRoZSBzdHJlYW0gaW4gc2VxdWVuY2UgCitQQVNTIENhbm5vdCB1c2UgYW4gYWxyZWFk
eS1yZWxlYXNlZCByZWFkZXIgdG8gdW5sb2NrIGEgc3RyZWFtIGFnYWluIAorUEFTUyBjYW5jZWwo
KSBvbiBhIHJlbGVhc2VkIHJlYWRlciBpcyBhIG5vLW9wIGFuZCBkb2VzIG5vdCBwYXNzIHRocm91
Z2ggCitQQVNTIEdldHRpbmcgYSBzZWNvbmQgcmVhZGVyIGFmdGVyIGVycm9yaW5nIHRoZSBzdHJl
YW0gYW5kIHJlbGVhc2luZyB0aGUgcmVhZGVyIHNob3VsZCBzdWNjZWVkIAorUEFTUyBSZWFkYWJs
ZVN0cmVhbVJlYWRlciBjbG9zZWQgcHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB1bmRl
ZmluZWQgaWYgdGhhdCBpcyB0aGUgZXJyb3IgCitQQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyOiBp
ZiBzdGFydCByZWplY3RzIHdpdGggbm8gcGFyYW1ldGVyLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0
cmVhbSB3aXRoIGFuIHVuZGVmaW5lZCBlcnJvciAKK1BBU1MgRXJyb3JpbmcgYSBSZWFkYWJsZVN0
cmVhbSBhZnRlciBjaGVja2luZyBjbG9zZWQgc2hvdWxkIHJlamVjdCBSZWFkYWJsZVN0cmVhbVJl
YWRlciBjbG9zZWQgcHJvbWlzZSAKK1BBU1MgRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBiZWZv
cmUgY2hlY2tpbmcgY2xvc2VkIHNob3VsZCByZWplY3QgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xv
c2VkIHByb21pc2UgCitQQVNTIFJlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGNs
b3NlZCAKK1BBU1MgUmVhZGluZyB0d2ljZSBvbiBhIGNsb3NlZCBzdHJlYW0gCitQQVNTIFJlYWRp
bmcgdHdpY2Ugb24gYW4gZXJyb3JlZCBzdHJlYW0gCitQQVNTIFJlYWRpbmcgdHdpY2Ugb24gYSBz
dHJlYW0gdGhhdCBnZXRzIGVycm9yZWQgCitGQUlMIExvYWQgcmVhZGFibGUtc3RyZWFtLXJlYWRl
ci5qcyB3aXRoIFNoYXJlZFdvcmtlciBhc3NlcnRfdW5yZWFjaGVkOiBTaGFyZWRXb3JrZXIgaXMg
dW5hdmFpbGFibGUgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCitGQUlMIFVudGl0bGVkIHVuZGVm
aW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICduYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5nZXRSZWdpc3RyYXRpb24nKQorUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRl
ciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5IAorUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25z
dHJ1Y3RvciBzaG91bGQgZ2V0IGEgUmVhZGFibGVTdHJlYW0gb2JqZWN0IGFzIGFyZ3VtZW50IAor
RkFJTCBSZWFkYWJsZVN0cmVhbVJlYWRlciBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJl
Y3QgbGlzdCBvZiBwcm9wZXJ0aWVzIGFzc2VydF9lcXVhbHM6IG1ldGhvZCBzaG91bGQgYmUgbm9u
LWVudW1lcmFibGUgZXhwZWN0ZWQgZmFsc2UgYnV0IGdvdCB0cnVlCitQQVNTIFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyIGNsb3NlZCBzaG91bGQgYWx3YXlzIHJldHVybiB0aGUgc2FtZSBwcm9taXNlIG9i
amVjdCAKK1BBU1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkg
c2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCBj
b25zdHJ1Y3Rpb24pIAorUEFTUyBHZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgdmlhIGdl
dFJlYWRlciBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEg
ZGlyZWN0IGNvbnN0cnVjdGlvbikgCitQQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFt
UmVhZGVyIGRpcmVjdGx5IHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2Nr
ZWQgKHZpYSBnZXRSZWFkZXIpIAorUEFTUyBHZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIg
dmlhIGdldFJlYWRlciBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2Vk
ICh2aWEgZ2V0UmVhZGVyKSAKK1BBU1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFk
ZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgY2xvc2VkIAorUEFTUyBD
b25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUgT0sg
aWYgdGhlIHN0cmVhbSBpcyBlcnJvcmVkIAorUEFTUyBSZWFkaW5nIGZyb20gYSByZWFkZXIgZm9y
IGFuIGVtcHR5IHN0cmVhbSB3aWxsIHdhaXQgdW50aWwgYSBjaHVuayBpcyBhdmFpbGFibGUgCitQ
QVNTIGNhbmNlbCgpIG9uIGEgcmVhZGVyIGRvZXMgbm90IHJlbGVhc2UgdGhlIHJlYWRlciAKK1BB
U1MgY2xvc2VkIHNob3VsZCBiZSBmdWxmaWxsZWQgYWZ0ZXIgc3RyZWFtIGlzIGNsb3NlZCAoLmNs
b3NlZCBhY2Nlc3MgYmVmb3JlIGFjcXVpcmluZykgCitQQVNTIGNsb3NlZCBzaG91bGQgYmUgcmVq
ZWN0ZWQgYWZ0ZXIgcmVhZGVyIHJlbGVhc2VzIGl0cyBsb2NrIChtdWx0aXBsZSBzdHJlYW0gbG9j
a3MpIAorUEFTUyBNdWx0aXBsZSByZWFkZXJzIGNhbiBhY2Nlc3MgdGhlIHN0cmVhbSBpbiBzZXF1
ZW5jZSAKK1BBU1MgQ2Fubm90IHVzZSBhbiBhbHJlYWR5LXJlbGVhc2VkIHJlYWRlciB0byB1bmxv
Y2sgYSBzdHJlYW0gYWdhaW4gCitQQVNTIGNhbmNlbCgpIG9uIGEgcmVsZWFzZWQgcmVhZGVyIGlz
IGEgbm8tb3AgYW5kIGRvZXMgbm90IHBhc3MgdGhyb3VnaCAKK1BBU1MgR2V0dGluZyBhIHNlY29u
ZCByZWFkZXIgYWZ0ZXIgZXJyb3JpbmcgdGhlIHN0cmVhbSBhbmQgcmVsZWFzaW5nIHRoZSByZWFk
ZXIgc2hvdWxkIHN1Y2NlZWQgCitQQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBwcm9t
aXNlIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHVuZGVmaW5lZCBpZiB0aGF0IGlzIHRoZSBlcnJv
ciAKK1BBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXI6IGlmIHN0YXJ0IHJlamVjdHMgd2l0aCBubyBw
YXJhbWV0ZXIsIGl0IHNob3VsZCBlcnJvciB0aGUgc3RyZWFtIHdpdGggYW4gdW5kZWZpbmVkIGVy
cm9yIAorUEFTUyBFcnJvcmluZyBhIFJlYWRhYmxlU3RyZWFtIGFmdGVyIGNoZWNraW5nIGNsb3Nl
ZCBzaG91bGQgcmVqZWN0IFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBwcm9taXNlIAorUEFT
UyBFcnJvcmluZyBhIFJlYWRhYmxlU3RyZWFtIGJlZm9yZSBjaGVja2luZyBjbG9zZWQgc2hvdWxk
IHJlamVjdCBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgcHJvbWlzZSAKK1BBU1MgUmVhZGlu
ZyB0d2ljZSBvbiBhIHN0cmVhbSB0aGF0IGdldHMgY2xvc2VkIAorUEFTUyBSZWFkaW5nIHR3aWNl
IG9uIGEgY2xvc2VkIHN0cmVhbSAKK1BBU1MgUmVhZGluZyB0d2ljZSBvbiBhbiBlcnJvcmVkIHN0
cmVhbSAKK1BBU1MgUmVhZGluZyB0d2ljZSBvbiBhIHN0cmVhbSB0aGF0IGdldHMgZXJyb3JlZCAK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmMGRi
MTFkMWJjNGU4M2MzZjUzOGY0N2U2NjdjNzM1YWI0MGM4ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmh0bWwKQEAgLTAsMCArMSwxMiBAQAor
PCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0icmVhZGFibGUtc3RyZWFtLXJlYWRlci5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOword29ya2VyX3Rlc3QoJ3JlYWRhYmxlLXN0cmVhbS1y
ZWFkZXIuanMnKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUt
c3RyZWFtLXJlYWRlci5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMWQ1YmMxMzAwNGY4YTM1N2ZjNWU4MjUyMmYzYmQzMDlmMTMxMWI5YQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuanMKQEAg
LTAsMCArMSw0ODUgQEAKKyd1c2Ugc3RyaWN0JzsKKworaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykg
eworICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9ycy11dGlscy5qcycpOworICBz
ZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnKTsKK30KKworbGV0
IFJlYWRhYmxlU3RyZWFtUmVhZGVyOworCit0ZXN0KCgpID0+IHsKKworICAvLyBJdCdzIG5vdCBl
eHBvc2VkIGdsb2JhbGx5LCBidXQgd2UgdGVzdCBhIGZldyBvZiBpdHMgcHJvcGVydGllcyBoZXJl
LgorICBSZWFkYWJsZVN0cmVhbVJlYWRlciA9IChuZXcgUmVhZGFibGVTdHJlYW0oKSkuZ2V0UmVh
ZGVyKCkuY29uc3RydWN0b3I7CisKK30sICdDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRl
ciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5Jyk7CisKK3Rlc3QoKCkgPT4geworCisgIGFzc2VydF90
aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW1SZWFkZXIoJ3Bv
dGF0bycpKTsKKyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBSZWFk
YWJsZVN0cmVhbVJlYWRlcih7fSkpOworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwg
KCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKCkpOworCit9LCAnUmVhZGFibGVTdHJlYW1S
ZWFkZXIgY29uc3RydWN0b3Igc2hvdWxkIGdldCBhIFJlYWRhYmxlU3RyZWFtIG9iamVjdCBhcyBh
cmd1bWVudCcpOworCit0ZXN0KCgpID0+IHsKKworICBjb25zdCBtZXRob2RzID0gWydjYW5jZWwn
LCAnY29uc3RydWN0b3InLCAncmVhZCcsICdyZWxlYXNlTG9jayddOworICBjb25zdCBwcm9wZXJ0
aWVzID0gbWV0aG9kcy5jb25jYXQoWydjbG9zZWQnXSkuc29ydCgpOworCisgIGNvbnN0IHJzUmVh
ZGVyID0gbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSgpKTsKKyAg
Y29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocnNSZWFkZXIpOworCisgIGFzc2Vy
dF9hcnJheV9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocHJvdG8pLnNvcnQoKSwg
cHJvcGVydGllcyk7CisKKyAgZm9yIChjb25zdCBtIG9mIG1ldGhvZHMpIHsKKyAgICBjb25zdCBw
cm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIG0pOworICAg
IGFzc2VydF9lcXVhbHMocHJvcERlc2MuZW51bWVyYWJsZSwgZmFsc2UsICdtZXRob2Qgc2hvdWxk
IGJlIG5vbi1lbnVtZXJhYmxlJyk7CisgICAgYXNzZXJ0X2VxdWFscyhwcm9wRGVzYy5jb25maWd1
cmFibGUsIHRydWUsICdtZXRob2Qgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZScpOworICAgIGFzc2Vy
dF9lcXVhbHMocHJvcERlc2Mud3JpdGFibGUsIHRydWUsICdtZXRob2Qgc2hvdWxkIGJlIHdyaXRh
YmxlJyk7CisgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNSZWFkZXJbbV0sICdmdW5jdGlvbics
ICdzaG91bGQgaGF2ZSBiZSBhIG1ldGhvZCcpOworICB9CisKKyAgY29uc3QgY2xvc2VkUHJvcERl
c2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCAnY2xvc2VkJyk7Cisg
IGFzc2VydF9lcXVhbHMoY2xvc2VkUHJvcERlc2MuZW51bWVyYWJsZSwgZmFsc2UsICdjbG9zZWQg
c2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlJyk7CisgIGFzc2VydF9lcXVhbHMoY2xvc2VkUHJvcERl
c2MuY29uZmlndXJhYmxlLCB0cnVlLCAnY2xvc2VkIHNob3VsZCBiZSBjb25maWd1cmFibGUnKTsK
KyAgYXNzZXJ0X25vdF9lcXVhbHMoY2xvc2VkUHJvcERlc2MuZ2V0LCB1bmRlZmluZWQsICdjbG9z
ZWQgc2hvdWxkIGhhdmUgYSBnZXR0ZXInKTsKKyAgYXNzZXJ0X2VxdWFscyhjbG9zZWRQcm9wRGVz
Yy5zZXQsIHVuZGVmaW5lZCwgJ2Nsb3NlZCBzaG91bGQgbm90IGhhdmUgYSBzZXR0ZXInKTsKKwor
ICBhc3NlcnRfZXF1YWxzKHJzUmVhZGVyLmNhbmNlbC5sZW5ndGgsIDEsICdjYW5jZWwgaGFzIDEg
cGFyYW1ldGVyJyk7CisgIGFzc2VydF9ub3RfZXF1YWxzKHJzUmVhZGVyLmNsb3NlZCwgdW5kZWZp
bmVkLCAnaGFzIGEgbm9uLXVuZGVmaW5lZCBjbG9zZWQgcHJvcGVydHknKTsKKyAgYXNzZXJ0X2Vx
dWFscyh0eXBlb2YgcnNSZWFkZXIuY2xvc2VkLnRoZW4sICdmdW5jdGlvbicsICdjbG9zZWQgcHJv
cGVydHkgaXMgdGhlbmFibGUnKTsKKyAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNSZWFkZXIuY29u
c3RydWN0b3IsICdmdW5jdGlvbicsICdoYXMgYSBjb25zdHJ1Y3RvciBtZXRob2QnKTsKKyAgYXNz
ZXJ0X2VxdWFscyhyc1JlYWRlci5jb25zdHJ1Y3Rvci5sZW5ndGgsIDEsICdjb25zdHJ1Y3RvciBo
YXMgMSBwYXJhbWV0ZXInKTsKKyAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnNSZWFkZXIucmVhZCwg
J2Z1bmN0aW9uJywgJ2hhcyBhIGdldFJlYWRlciBtZXRob2QnKTsKKyAgYXNzZXJ0X2VxdWFscyhy
c1JlYWRlci5yZWFkLmxlbmd0aCwgMCwgJ3JlYWQgaGFzIG5vIHBhcmFtZXRlcnMnKTsKKyAgYXNz
ZXJ0X2VxdWFscyh0eXBlb2YgcnNSZWFkZXIucmVsZWFzZUxvY2ssICdmdW5jdGlvbicsICdoYXMg
YSByZWxlYXNlTG9jayBtZXRob2QnKTsKKyAgYXNzZXJ0X2VxdWFscyhyc1JlYWRlci5yZWxlYXNl
TG9jay5sZW5ndGgsIDAsICdyZWxlYXNlTG9jayBoYXMgbm8gcGFyYW1ldGVycycpOworCit9LCAn
UmVhZGFibGVTdHJlYW1SZWFkZXIgaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxp
c3Qgb2YgcHJvcGVydGllcycpOworCit0ZXN0KCgpID0+IHsKKworICBjb25zdCByc1JlYWRlciA9
IG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0oKSk7CisgIGFzc2Vy
dF9lcXVhbHMocnNSZWFkZXIuY2xvc2VkLCByc1JlYWRlci5jbG9zZWQsICdjbG9zZWQgc2hvdWxk
IHJldHVybiB0aGUgc2FtZSBwcm9taXNlJyk7CisKK30sICdSZWFkYWJsZVN0cmVhbVJlYWRlciBj
bG9zZWQgc2hvdWxkIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgcHJvbWlzZSBvYmplY3QnKTsKKwor
dGVzdCgoKSA9PiB7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgbmV3
IFJlYWRhYmxlU3RyZWFtUmVhZGVyKHJzKTsgLy8gQ29uc3RydWN0aW5nIGRpcmVjdGx5IHRoZSBm
aXJzdCB0aW1lIHNob3VsZCBiZSBmaW5lLgorICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3Io
KSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKHJzKSwKKyAgICAgICAgICAgICAgICAn
Y29uc3RydWN0aW5nIGRpcmVjdGx5IHRoZSBzZWNvbmQgdGltZSBzaG91bGQgZmFpbCcpOworCit9
LCAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZh
aWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCAnICsKKyAgICdj
b25zdHJ1Y3Rpb24pJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKCk7CisgIG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihycyk7IC8vIENvbnN0cnVj
dGluZyBkaXJlY3RseSBzaG91bGQgYmUgZmluZS4KKyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCksICgpID0+IHJzLmdldFJlYWRlcigpLCAnZ2V0UmVhZGVyKCkgc2hvdWxkIGZhaWwnKTsK
KworfSwgJ0dldHRpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciB2aWEgZ2V0UmVhZGVyIHNob3Vs
ZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3QgJyArCisg
ICAnY29uc3RydWN0aW9uKScpOworCit0ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSgpOworICBycy5nZXRSZWFkZXIoKTsgLy8gZ2V0UmVhZGVyKCkgc2hvdWxk
IGJlIGZpbmUuCisgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVh
ZGFibGVTdHJlYW1SZWFkZXIocnMpLCAnY29uc3RydWN0aW5nIGRpcmVjdGx5IHNob3VsZCBmYWls
Jyk7CisKK30sICdDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBz
aG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVhZGVy
KScpOworCit0ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgp
OworICBycy5nZXRSZWFkZXIoKTsgLy8gZ2V0UmVhZGVyKCkgc2hvdWxkIGJlIGZpbmUuCisgIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBycy5nZXRSZWFkZXIoKSwgJ2dldFJl
YWRlcigpIHNob3VsZCBmYWlsJyk7CisKK30sICdHZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFk
ZXIgdmlhIGdldFJlYWRlciBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9j
a2VkICh2aWEgZ2V0UmVhZGVyKScpOworCit0ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5jbG9zZSgpOworICAg
IH0KKyAgfSk7CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKHJzKTsgLy8gQ29uc3RydWN0
aW5nIGRpcmVjdGx5IHNob3VsZCBub3QgdGhyb3cuCisKK30sICdDb25zdHJ1Y3RpbmcgYSBSZWFk
YWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBpcyBj
bG9zZWQnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3Io
J2RvblwndCBzYXkgaSBkaWRuXCd0IHdhcm4geWEnKTsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZXJyb3IodGhlRXJyb3IpOworICAg
IH0KKyAgfSk7CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKHJzKTsgLy8gQ29uc3RydWN0
aW5nIGRpcmVjdGx5IHNob3VsZCBub3QgdGhyb3cuCisKK30sICdDb25zdHJ1Y3RpbmcgYSBSZWFk
YWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBpcyBl
cnJvcmVkJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7Cisg
IGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBj
b250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFk
ZXIoKTsKKworICBjb25zdCBwcm9taXNlID0gcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7
CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZh
bHNlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB0aGUgZW5xdWV1ZWQgY2h1bmsnKTsK
KyAgfSk7CisKKyAgY29udHJvbGxlci5lbnF1ZXVlKCdhJyk7CisgIHJldHVybiBwcm9taXNlOwor
Cit9LCAnUmVhZGluZyBmcm9tIGEgcmVhZGVyIGZvciBhbiBlbXB0eSBzdHJlYW0gd2lsbCB3YWl0
IHVudGlsIGEgY2h1bmsgaXMgYXZhaWxhYmxlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisK
KyAgbGV0IGNhbmNlbENhbGxlZCA9IGZhbHNlOworICBjb25zdCBwYXNzZWRSZWFzb24gPSBuZXcg
RXJyb3IoJ2l0IHdhc25cJ3QgdGhlIHJpZ2h0IHRpbWUsIHNvcnJ5Jyk7CisgIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBjYW5jZWwocmVhc29uKSB7CisgICAgICBhc3NlcnRf
dHJ1ZShycy5sb2NrZWQsICd0aGUgc3RyZWFtIHNob3VsZCBzdGlsbCBiZSBsb2NrZWQnKTsKKyAg
ICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBycy5nZXRSZWFkZXIoKSwg
J3Nob3VsZCBub3QgYmUgYWJsZSB0byBnZXQgYW5vdGhlciByZWFkZXInKTsKKyAgICAgIGFzc2Vy
dF9lcXVhbHMocmVhc29uLCBwYXNzZWRSZWFzb24sICd0aGUgY2FuY2VsbGF0aW9uIHJlYXNvbiBp
cyBwYXNzZWQgdGhyb3VnaCB0byB0aGUgdW5kZXJseWluZyBzb3VyY2UnKTsKKyAgICAgIGNhbmNl
bENhbGxlZCA9IHRydWU7CisgICAgfQorICB9KTsKKworICBjb25zdCByZWFkZXIgPSBycy5nZXRS
ZWFkZXIoKTsKKyAgcmV0dXJuIHJlYWRlci5jYW5jZWwocGFzc2VkUmVhc29uKS50aGVuKCgpID0+
IGFzc2VydF90cnVlKGNhbmNlbENhbGxlZCkpOworCit9LCAnY2FuY2VsKCkgb24gYSByZWFkZXIg
ZG9lcyBub3QgcmVsZWFzZSB0aGUgcmVhZGVyJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisK
KyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAg
ICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisgIGNv
bnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworICBjb25zdCBwcm9taXNlID0gcmVhZGVyLmNs
b3NlZDsKKworICBjb250cm9sbGVyLmNsb3NlKCk7CisgIHJldHVybiBwcm9taXNlOworCit9LCAn
Y2xvc2VkIHNob3VsZCBiZSBmdWxmaWxsZWQgYWZ0ZXIgc3RyZWFtIGlzIGNsb3NlZCAoLmNsb3Nl
ZCBhY2Nlc3MgYmVmb3JlIGFjcXVpcmluZyknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisg
IGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAg
c3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKworICBjb25z
dCByZWFkZXIxID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgcmVhZGVyMS5yZWxlYXNlTG9jaygpOwor
CisgIGNvbnN0IHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKKyAgY29udHJvbGxlci5jbG9zZSgp
OworCisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBU
eXBlRXJyb3IoKSwgcmVhZGVyMS5jbG9zZWQpLAorICAgIHJlYWRlcjIuY2xvc2VkCisgIF0pOwor
Cit9LCAnY2xvc2VkIHNob3VsZCBiZSByZWplY3RlZCBhZnRlciByZWFkZXIgcmVsZWFzZXMgaXRz
IGxvY2sgKG11bHRpcGxlIHN0cmVhbSBsb2NrcyknKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsK
KworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAg
ICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgICBjLmVucXVldWUoJ2InKTsKKyAgICAgIGMuY2xvc2Uo
KTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRlcjEgPSBycy5nZXRSZWFkZXIoKTsKKyAg
Y29uc3QgcHJvbWlzZTEgPSByZWFkZXIxLnJlYWQoKS50aGVuKHIgPT4geworICAgIGFzc2VydF9v
YmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3JlYWRpbmcgdGhl
IGZpcnN0IGNodW5rIGZyb20gcmVhZGVyMSB3b3JrcycpOworICB9KTsKKyAgcmVhZGVyMS5yZWxl
YXNlTG9jaygpOworCisgIGNvbnN0IHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKKyAgY29uc3Qg
cHJvbWlzZTIgPSByZWFkZXIyLnJlYWQoKS50aGVuKHIgPT4geworICAgIGFzc2VydF9vYmplY3Rf
ZXF1YWxzKHIsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFsc2UgfSwgJ3JlYWRpbmcgdGhlIHNlY29u
ZCBjaHVuayBmcm9tIHJlYWRlcjIgd29ya3MnKTsKKyAgfSk7CisgIHJlYWRlcjIucmVsZWFzZUxv
Y2soKTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoW3Byb21pc2UxLCBwcm9taXNlMl0pOworCit9
LCAnTXVsdGlwbGUgcmVhZGVycyBjYW4gYWNjZXNzIHRoZSBzdHJlYW0gaW4gc2VxdWVuY2UnKTsK
KworcHJvbWlzZV90ZXN0KCgpID0+IHsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
eworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgIH0KKyAgfSk7CisK
KyAgY29uc3QgcmVhZGVyMSA9IHJzLmdldFJlYWRlcigpOworICByZWFkZXIxLnJlbGVhc2VMb2Nr
KCk7CisKKyAgY29uc3QgcmVhZGVyMiA9IHJzLmdldFJlYWRlcigpOworCisgIC8vIFNob3VsZCBi
ZSBhIG5vLW9wCisgIHJlYWRlcjEucmVsZWFzZUxvY2soKTsKKworICByZXR1cm4gcmVhZGVyMi5y
ZWFkKCkudGhlbihyZXN1bHQgPT4geworICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwg
eyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICdy
ZWFkKCkgc2hvdWxkIHN0aWxsIHdvcmsgb24gcmVhZGVyMiBldmVuIGFmdGVyIHJlYWRlcjEgaXMg
cmVsZWFzZWQnKTsKKyAgfSk7CisKK30sICdDYW5ub3QgdXNlIGFuIGFscmVhZHktcmVsZWFzZWQg
cmVhZGVyIHRvIHVubG9jayBhIHN0cmVhbSBhZ2FpbicpOworCitwcm9taXNlX3Rlc3QodCA9PiB7
CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAg
ICAgIGMuZW5xdWV1ZSgnYScpOworICAgIH0sCisgICAgY2FuY2VsKCkgeworICAgICAgYXNzZXJ0
X3VucmVhY2hlZCgndW5kZXJseWluZyBzb3VyY2UgY2FuY2VsIHNob3VsZCBub3QgYmUgY2FsbGVk
Jyk7CisgICAgfQorICB9KTsKKworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKyAg
cmVhZGVyLnJlbGVhc2VMb2NrKCk7CisgIGNvbnN0IGNhbmNlbFByb21pc2UgPSByZWFkZXIuY2Fu
Y2VsKCk7CisKKyAgY29uc3QgcmVhZGVyMiA9IHJzLmdldFJlYWRlcigpOworICBjb25zdCByZWFk
UHJvbWlzZSA9IHJlYWRlcjIucmVhZCgpLnRoZW4ociA9PiB7CisgICAgYXNzZXJ0X29iamVjdF9l
cXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnYSBuZXcgcmVhZGVyIHNob3Vs
ZCBiZSBhYmxlIHRvIHJlYWQgYSBjaHVuaycpOworICB9KTsKKworICByZXR1cm4gUHJvbWlzZS5h
bGwoWworICAgIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIGNhbmNlbFByb21p
c2UpLAorICAgIHJlYWRQcm9taXNlCisgIF0pOworCit9LCAnY2FuY2VsKCkgb24gYSByZWxlYXNl
ZCByZWFkZXIgaXMgYSBuby1vcCBhbmQgZG9lcyBub3QgcGFzcyB0aHJvdWdoJyk7CisKK3Byb21p
c2VfdGVzdCh0ID0+IHsKKworICBjb25zdCBwcm9taXNlQXNzZXJ0cyA9IFtdOworCisgIGxldCBj
b250cm9sbGVyOworICBjb25zdCB0aGVFcnJvciA9IHsgbmFtZTogJ3VuaXF1ZSBlcnJvcicgfTsK
KyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAg
IGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyMSA9IHJzLmdl
dFJlYWRlcigpOworCisgIHByb21pc2VBc3NlcnRzLnB1c2goCisgICAgcHJvbWlzZV9yZWplY3Rz
KHQsIHRoZUVycm9yLCByZWFkZXIxLmNsb3NlZCksCisgICAgcHJvbWlzZV9yZWplY3RzKHQsIHRo
ZUVycm9yLCByZWFkZXIxLnJlYWQoKSkKKyAgKTsKKworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBl
RXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksICd0cnlpbmcgdG8gZ2V0IGFub3RoZXIgcmVh
ZGVyIGJlZm9yZSBlcnJvcmluZyBzaG91bGQgdGhyb3cnKTsKKworICBjb250cm9sbGVyLmVycm9y
KHRoZUVycm9yKTsKKworICByZWFkZXIxLnJlbGVhc2VMb2NrKCk7CisKKyAgY29uc3QgcmVhZGVy
MiA9IHJzLmdldFJlYWRlcigpOworCisgIHByb21pc2VBc3NlcnRzLnB1c2goCisgICAgcHJvbWlz
ZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIyLmNsb3NlZCksCisgICAgcHJvbWlzZV9yZWpl
Y3RzKHQsIHRoZUVycm9yLCByZWFkZXIyLnJlYWQoKSkKKyAgKTsKKworICByZXR1cm4gUHJvbWlz
ZS5hbGwocHJvbWlzZUFzc2VydHMpOworCit9LCAnR2V0dGluZyBhIHNlY29uZCByZWFkZXIgYWZ0
ZXIgZXJyb3JpbmcgdGhlIHN0cmVhbSBhbmQgcmVsZWFzaW5nIHRoZSByZWFkZXIgc2hvdWxkIHN1
Y2NlZWQnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGxldCBjb250cm9sbGVyOworICBj
b25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29u
dHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKworICBjb25zdCBwcm9taXNlID0gcnMuZ2V0UmVh
ZGVyKCkuY2xvc2VkLnRoZW4oCisgICAgdC51bnJlYWNoZWRfZnVuYygnY2xvc2VkIHByb21pc2Ug
c2hvdWxkIG5vdCBiZSBmdWxmaWxsZWQgd2hlbiBzdHJlYW0gaXMgZXJyb3JlZCcpLAorICAgIGVy
ciA9PiB7CisgICAgICBhc3NlcnRfZXF1YWxzKGVyciwgdW5kZWZpbmVkLCAncGFzc2VkIGVycm9y
IHNob3VsZCBiZSB1bmRlZmluZWQgYXMgaXQgd2FzJyk7CisgICAgfQorICApOworCisgIGNvbnRy
b2xsZXIuZXJyb3IoKTsKKyAgcmV0dXJuIHByb21pc2U7CisKK30sICdSZWFkYWJsZVN0cmVhbVJl
YWRlciBjbG9zZWQgcHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB1bmRlZmluZWQgaWYg
dGhhdCBpcyB0aGUgZXJyb3InKTsKKworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3Qg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KCkgeworICAgICAgcmV0dXJuIFBy
b21pc2UucmVqZWN0KCk7CisgICAgfQorICB9KTsKKworICByZXR1cm4gcnMuZ2V0UmVhZGVyKCku
cmVhZCgpLnRoZW4oCisgICAgdC51bnJlYWNoZWRfZnVuYygncmVhZCBwcm9taXNlIHNob3VsZCBu
b3QgYmUgZnVsZmlsbGVkIHdoZW4gc3RyZWFtIGlzIGVycm9yZWQnKSwKKyAgICBlcnIgPT4gewor
ICAgICAgYXNzZXJ0X2VxdWFscyhlcnIsIHVuZGVmaW5lZCwgJ3Bhc3NlZCBlcnJvciBzaG91bGQg
YmUgdW5kZWZpbmVkIGFzIGl0IHdhcycpOworICAgIH0KKyAgKTsKKworfSwgJ1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyOiBpZiBzdGFydCByZWplY3RzIHdpdGggbm8gcGFyYW1ldGVyLCBpdCBzaG91bGQg
ZXJyb3IgdGhlIHN0cmVhbSB3aXRoIGFuIHVuZGVmaW5lZCBlcnJvcicpOworCitwcm9taXNlX3Rl
c3QodCA9PiB7CisKKyAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICd1bmlxdWUgc3RyaW5nJyB9
OworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewor
ICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisKKyAg
Y29uc3QgcHJvbWlzZSA9IHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcnMuZ2V0UmVhZGVy
KCkuY2xvc2VkKTsKKworICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKKyAgcmV0dXJuIHBy
b21pc2U7CisKK30sICdFcnJvcmluZyBhIFJlYWRhYmxlU3RyZWFtIGFmdGVyIGNoZWNraW5nIGNs
b3NlZCBzaG91bGQgcmVqZWN0IFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBwcm9taXNlJyk7
CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9IHsgbmFtZTogJ3Vu
aXF1ZSBzdHJpbmcnIH07CisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAg
fQorICB9KTsKKworICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKKworICAvLyBMZXQncyBj
YWxsIGdldFJlYWRlciB0d2ljZSBmb3IgZXh0cmEgdGVzdCBjb3ZlcmFnZSBvZiB0aGlzIGNvZGUg
cGF0aC4KKyAgcnMuZ2V0UmVhZGVyKCkucmVsZWFzZUxvY2soKTsKKworICByZXR1cm4gcHJvbWlz
ZV9yZWplY3RzKHQsIHRoZUVycm9yLCBycy5nZXRSZWFkZXIoKS5jbG9zZWQpOworCit9LCAnRXJy
b3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBiZWZvcmUgY2hlY2tpbmcgY2xvc2VkIHNob3VsZCByZWpl
Y3QgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHByb21pc2UnKTsKKworcHJvbWlzZV90ZXN0
KCgpID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAg
fSk7CisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIGNvbnN0IHByb21pc2Ug
PSBQcm9taXNlLmFsbChbCisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7CisgICAg
ICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTog
dHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2UgKDEpJyk7CisgICAgfSks
CisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0
X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgp
IHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2UgKDIpJyk7CisgICAgfSksCisgICAgcmVhZGVyLmNs
b3NlZAorICBdKTsKKworICBjb250cm9sbGVyLmNsb3NlKCk7CisgIHJldHVybiBwcm9taXNlOwor
Cit9LCAnUmVhZGluZyB0d2ljZSBvbiBhIHN0cmVhbSB0aGF0IGdldHMgY2xvc2VkJyk7CisKK3By
b21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsK
KyAgICB9CisgIH0pOworCisgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgY29uc3QgcmVhZGVyID0g
cnMuZ2V0UmVhZGVyKCk7CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICByZWFkZXIucmVh
ZCgpLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwg
eyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwg
d2l0aCBjbG9zZSAoMSknKTsKKyAgICB9KSwKKyAgICByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0
ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogdW5kZWZp
bmVkLCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCBjbG9zZSAoMikn
KTsKKyAgICB9KSwKKyAgICByZWFkZXIuY2xvc2VkCisgIF0pOworCit9LCAnUmVhZGluZyB0d2lj
ZSBvbiBhIGNsb3NlZCBzdHJlYW0nKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGxldCBj
b250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQo
YykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKworICBjb25zdCBteUVy
cm9yID0geyBuYW1lOiAnbWFzaGVkIHBvdGF0b2VzJyB9OworICBjb250cm9sbGVyLmVycm9yKG15
RXJyb3IpOworCisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIHJldHVybiBQ
cm9taXNlLmFsbChbCisgICAgcHJvbWlzZV9yZWplY3RzKHQsIG15RXJyb3IsIHJlYWRlci5yZWFk
KCkpLAorICAgIHByb21pc2VfcmVqZWN0cyh0LCBteUVycm9yLCByZWFkZXIucmVhZCgpKSwKKyAg
ICBwcm9taXNlX3JlamVjdHModCwgbXlFcnJvciwgcmVhZGVyLmNsb3NlZCkKKyAgXSk7CisKK30s
ICdSZWFkaW5nIHR3aWNlIG9uIGFuIGVycm9yZWQgc3RyZWFtJyk7CisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7
CisKKyAgY29uc3QgbXlFcnJvciA9IHsgbmFtZTogJ21hc2hlZCBwb3RhdG9lcycgfTsKKyAgY29u
c3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgY29uc3QgcHJvbWlzZSA9IFByb21pc2Uu
YWxsKFsKKyAgICBwcm9taXNlX3JlamVjdHModCwgbXlFcnJvciwgcmVhZGVyLnJlYWQoKSksCisg
ICAgcHJvbWlzZV9yZWplY3RzKHQsIG15RXJyb3IsIHJlYWRlci5yZWFkKCkpLAorICAgIHByb21p
c2VfcmVqZWN0cyh0LCBteUVycm9yLCByZWFkZXIuY2xvc2VkKQorICBdKTsKKworICBjb250cm9s
bGVyLmVycm9yKG15RXJyb3IpOworICByZXR1cm4gcHJvbWlzZTsKKworfSwgJ1JlYWRpbmcgdHdp
Y2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGVycm9yZWQnKTsKKworZG9uZSgpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbXMvdGVlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjZiZDE5OTFjYWMyMDhmZTRhNjViOWQwYWNiMDc4Y2YwZmZjNTM5
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwyNCBAQAorCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogcnMudGVlKCkgcmV0dXJu
cyBhbiBhcnJheSBvZiB0d28gUmVhZGFibGVTdHJlYW1zIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0
ZWVpbmc6IHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgb25lIGJyYW5jaCB0byB0aGUgZW5kIHdpdGhv
dXQgYWZmZWN0aW5nIHRoZSBvdGhlciAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiB2YWx1
ZXMgc2hvdWxkIGJlIGVxdWFsIGFjcm9zcyBlYWNoIGJyYW5jaCAKK1BBU1MgUmVhZGFibGVTdHJl
YW0gdGVlaW5nOiBlcnJvcnMgaW4gdGhlIHNvdXJjZSBzaG91bGQgcHJvcGFnYXRlIHRvIGJvdGgg
YnJhbmNoZXMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJyYW5jaDEg
c2hvdWxkIG5vdCBpbXBhY3QgYnJhbmNoMiAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBj
YW5jZWxpbmcgYnJhbmNoMiBzaG91bGQgbm90IGltcGFjdCBicmFuY2gyIAorUEFTUyBSZWFkYWJs
ZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBib3RoIGJyYW5jaGVzIHNob3VsZCBhZ2dyZWdhdGUg
dGhlIGNhbmNlbCByZWFzb25zIGludG8gYW4gYXJyYXkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRl
ZWluZzogZmFpbGluZyB0byBjYW5jZWwgdGhlIG9yaWdpbmFsIHN0cmVhbSBzaG91bGQgY2F1c2Ug
Y2FuY2VsKCkgdG8gcmVqZWN0IG9uIGJyYW5jaGVzIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVp
bmc6IGNsb3NpbmcgdGhlIG9yaWdpbmFsIHNob3VsZCBpbW1lZGlhdGVseSBjbG9zZSB0aGUgYnJh
bmNoZXMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogZXJyb3JpbmcgdGhlIG9yaWdpbmFs
IHNob3VsZCBpbW1lZGlhdGVseSBlcnJvciB0aGUgYnJhbmNoZXMgCitGQUlMIExvYWQgdGVlLmpz
IHdpdGggU2hhcmVkV29ya2VyIGFzc2VydF91bnJlYWNoZWQ6IFNoYXJlZFdvcmtlciBpcyB1bmF2
YWlsYWJsZSBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK0ZBSUwgVW50aXRsZWQgdW5kZWZpbmVk
IGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmdl
dFJlZ2lzdHJhdGlvbicpCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogcnMudGVlKCkgcmV0
dXJucyBhbiBhcnJheSBvZiB0d28gUmVhZGFibGVTdHJlYW1zIAorUEFTUyBSZWFkYWJsZVN0cmVh
bSB0ZWVpbmc6IHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgb25lIGJyYW5jaCB0byB0aGUgZW5kIHdp
dGhvdXQgYWZmZWN0aW5nIHRoZSBvdGhlciAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiB2
YWx1ZXMgc2hvdWxkIGJlIGVxdWFsIGFjcm9zcyBlYWNoIGJyYW5jaCAKK1BBU1MgUmVhZGFibGVT
dHJlYW0gdGVlaW5nOiBlcnJvcnMgaW4gdGhlIHNvdXJjZSBzaG91bGQgcHJvcGFnYXRlIHRvIGJv
dGggYnJhbmNoZXMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJyYW5j
aDEgc2hvdWxkIG5vdCBpbXBhY3QgYnJhbmNoMiAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5n
OiBjYW5jZWxpbmcgYnJhbmNoMiBzaG91bGQgbm90IGltcGFjdCBicmFuY2gyIAorUEFTUyBSZWFk
YWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBib3RoIGJyYW5jaGVzIHNob3VsZCBhZ2dyZWdh
dGUgdGhlIGNhbmNlbCByZWFzb25zIGludG8gYW4gYXJyYXkgCitQQVNTIFJlYWRhYmxlU3RyZWFt
IHRlZWluZzogZmFpbGluZyB0byBjYW5jZWwgdGhlIG9yaWdpbmFsIHN0cmVhbSBzaG91bGQgY2F1
c2UgY2FuY2VsKCkgdG8gcmVqZWN0IG9uIGJyYW5jaGVzIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0
ZWVpbmc6IGNsb3NpbmcgdGhlIG9yaWdpbmFsIHNob3VsZCBpbW1lZGlhdGVseSBjbG9zZSB0aGUg
YnJhbmNoZXMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogZXJyb3JpbmcgdGhlIG9yaWdp
bmFsIHNob3VsZCBpbW1lZGlhdGVseSBlcnJvciB0aGUgYnJhbmNoZXMgCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW1zL3RlZS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDJjODQ3YjgxMTc4YWQwYzUwYmFhYzA5ZDdiMWNkYzY4ODI5MzJkMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW1zL3RlZS5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBodG1s
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2Vydmlj
ZS13b3JrZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIj48L3NjcmlwdD4KKworPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9ycy11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
dGVlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7Cit3b3JrZXJfdGVzdCgn
dGVlLmpzJyk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5qcyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL3RlZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODVmMmFmN2FiNWNlNGZmYjY5Yzk1ZjhhOGJl
NTRkZmExZTJlZDA3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmpzCkBAIC0w
LDAgKzEsMjU0IEBACisndXNlIHN0cmljdCc7CisKK2lmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsK
KyAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvcnMtdXRpbHMuanMnKTsKKyAgc2Vs
Zi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Cit9CisKK3Rlc3Qo
KCkgPT4geworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHJl
c3VsdCA9IHJzLnRlZSgpOworCisgIGFzc2VydF90cnVlKEFycmF5LmlzQXJyYXkocmVzdWx0KSwg
J3JldHVybiB2YWx1ZSBzaG91bGQgYmUgYW4gYXJyYXknKTsKKyAgYXNzZXJ0X2VxdWFscyhyZXN1
bHQubGVuZ3RoLCAyLCAnYXJyYXkgc2hvdWxkIGhhdmUgbGVuZ3RoIDInKTsKKyAgYXNzZXJ0X2Vx
dWFscyhyZXN1bHRbMF0uY29uc3RydWN0b3IsIFJlYWRhYmxlU3RyZWFtLCAnMHRoIGVsZW1lbnQg
c2hvdWxkIGJlIGEgUmVhZGFibGVTdHJlYW0nKTsKKyAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbMV0u
Y29uc3RydWN0b3IsIFJlYWRhYmxlU3RyZWFtLCAnMXN0IGVsZW1lbnQgc2hvdWxkIGJlIGEgUmVh
ZGFibGVTdHJlYW0nKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogcnMudGVlKCkgcmV0
dXJucyBhbiBhcnJheSBvZiB0d28gUmVhZGFibGVTdHJlYW1zJyk7CisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykg
eworICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgICBjLmVucXVldWUoJ2InKTsKKyAgICAgIGMu
Y2xvc2UoKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IGJyYW5jaCA9IHJzLnRlZSgpOworICBj
b25zdCBicmFuY2gxID0gYnJhbmNoWzBdOworICBjb25zdCBicmFuY2gyID0gYnJhbmNoWzFdOwor
ICBjb25zdCByZWFkZXIxID0gYnJhbmNoMS5nZXRSZWFkZXIoKTsKKyAgY29uc3QgcmVhZGVyMiA9
IGJyYW5jaDIuZ2V0UmVhZGVyKCk7CisKKyAgcmVhZGVyMi5jbG9zZWQudGhlbih0LnVucmVhY2hl
ZF9mdW5jKCdicmFuY2gyIHNob3VsZCBub3QgYmUgY2xvc2VkJykpOworCisgIHJldHVybiBQcm9t
aXNlLmFsbChbCisgICAgcmVhZGVyMS5jbG9zZWQsCisgICAgcmVhZGVyMS5yZWFkKCkudGhlbihy
ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTog
ZmFsc2UgfSwgJ2ZpcnN0IGNodW5rIGZyb20gYnJhbmNoMSBzaG91bGQgYmUgY29ycmVjdCcpOwor
ICAgIH0pLAorICAgIHJlYWRlcjEucmVhZCgpLnRoZW4ociA9PiB7CisgICAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sICdzZWNvbmQgY2h1bmsg
ZnJvbSBicmFuY2gxIHNob3VsZCBiZSBjb3JyZWN0Jyk7CisgICAgfSksCisgICAgcmVhZGVyMS5y
ZWFkKCkudGhlbihyID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6
IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAndGhpcmQgcmVhZCgpIGZyb20gYnJhbmNoMSBzaG91
bGQgYmUgZG9uZScpOworICAgIH0pLAorICAgIHJlYWRlcjIucmVhZCgpLnRoZW4ociA9PiB7Cisg
ICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0s
ICdmaXJzdCBjaHVuayBmcm9tIGJyYW5jaDIgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKyAgICB9KQor
ICBdKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogc2hvdWxkIGJlIGFibGUgdG8gcmVh
ZCBvbmUgYnJhbmNoIHRvIHRoZSBlbmQgd2l0aG91dCBhZmZlY3RpbmcgdGhlIG90aGVyJyk7CisK
K3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgY29uc3QgdGhlT2JqZWN0ID0geyB0aGU6ICd0ZXN0
IG9iamVjdCcgfTsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0
KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSh0aGVPYmplY3QpOworICAgIH0KKyAgfSk7CisKKyAgY29u
c3QgYnJhbmNoID0gcnMudGVlKCk7CisgIGNvbnN0IGJyYW5jaDEgPSBicmFuY2hbMF07CisgIGNv
bnN0IGJyYW5jaDIgPSBicmFuY2hbMV07CisgIGNvbnN0IHJlYWRlcjEgPSBicmFuY2gxLmdldFJl
YWRlcigpOworICBjb25zdCByZWFkZXIyID0gYnJhbmNoMi5nZXRSZWFkZXIoKTsKKworICByZXR1
cm4gUHJvbWlzZS5hbGwoW3JlYWRlcjEucmVhZCgpLCByZWFkZXIyLnJlYWQoKV0pLnRoZW4odmFs
dWVzID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyh2YWx1ZXNbMF0sIHZhbHVlc1sxXSwg
J3RoZSB2YWx1ZXMgc2hvdWxkIGJlIGVxdWFsJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJl
YW0gdGVlaW5nOiB2YWx1ZXMgc2hvdWxkIGJlIGVxdWFsIGFjcm9zcyBlYWNoIGJyYW5jaCcpOwor
Citwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICdib28h
JyB9OworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgewor
ICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgICBjLmVucXVldWUoJ2InKTsKKyAgICB9LAorICAg
IHB1bGwoKSB7CisgICAgICB0aHJvdyB0aGVFcnJvcjsKKyAgICB9CisgIH0pOworCisgIGNvbnN0
IGJyYW5jaGVzID0gcnMudGVlKCk7CisgIGNvbnN0IHJlYWRlcjEgPSBicmFuY2hlc1swXS5nZXRS
ZWFkZXIoKTsKKyAgY29uc3QgcmVhZGVyMiA9IGJyYW5jaGVzWzFdLmdldFJlYWRlcigpOworCisg
IHJlYWRlcjEubGFiZWwgPSAncmVhZGVyMSc7CisgIHJlYWRlcjIubGFiZWwgPSAncmVhZGVyMic7
CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICBwcm9taXNlX3JlamVjdHModCwgdGhlRXJy
b3IsIHJlYWRlcjEuY2xvc2VkKSwKKyAgICBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJl
YWRlcjIuY2xvc2VkKSwKKyAgICByZWFkZXIxLnJlYWQoKS50aGVuKHIgPT4geworICAgICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnc2hvdWxk
IGJlIGFibGUgdG8gcmVhZCB0aGUgZmlyc3QgY2h1bmsgaW4gYnJhbmNoMScpOworICAgIH0pLAor
ICAgIHJlYWRlcjEucmVhZCgpLnRoZW4ociA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFs
cyhyLCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sICdzaG91bGQgYmUgYWJsZSB0byByZWFk
IHRoZSBzZWNvbmQgY2h1bmsgaW4gYnJhbmNoMScpOworCisgICAgICByZXR1cm4gcHJvbWlzZV9y
ZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIyLnJlYWQoKSk7CisgICAgfSkKKyAgICAudGhlbigo
KSA9PiBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJlYWRlcjEucmVhZCgpKSkKKyAgXSk7
CisKK30sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGVycm9ycyBpbiB0aGUgc291cmNlIHNob3Vs
ZCBwcm9wYWdhdGUgdG8gYm90aCBicmFuY2hlcycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4gewor
CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAg
ICBjLmVucXVldWUoJ2EnKTsKKyAgICAgIGMuZW5xdWV1ZSgnYicpOworICAgICAgYy5jbG9zZSgp
OworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgYnJhbmNoZXMgPSBycy50ZWUoKTsKKyAgY29uc3Qg
YnJhbmNoMSA9IGJyYW5jaGVzWzBdOworICBjb25zdCBicmFuY2gyID0gYnJhbmNoZXNbMV07Cisg
IGJyYW5jaDEuY2FuY2VsKCk7CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICByZWFkYWJs
ZVN0cmVhbVRvQXJyYXkoYnJhbmNoMSkudGhlbihjaHVua3MgPT4geworICAgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhjaHVua3MsIFtdLCAnYnJhbmNoMSBzaG91bGQgaGF2ZSBubyBjaHVua3MnKTsK
KyAgICB9KSwKKyAgICByZWFkYWJsZVN0cmVhbVRvQXJyYXkoYnJhbmNoMikudGhlbihjaHVua3Mg
PT4geworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3MsIFsnYScsICdiJ10sICdicmFu
Y2gyIHNob3VsZCBoYXZlIHR3byBjaHVua3MnKTsKKyAgICB9KQorICBdKTsKKworfSwgJ1JlYWRh
YmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJyYW5jaDEgc2hvdWxkIG5vdCBpbXBhY3QgYnJh
bmNoMicpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICAg
IGMuZW5xdWV1ZSgnYicpOworICAgICAgYy5jbG9zZSgpOworICAgIH0KKyAgfSk7CisKKyAgY29u
c3QgYnJhbmNoZXMgPSBycy50ZWUoKTsKKyAgY29uc3QgYnJhbmNoMSA9IGJyYW5jaGVzWzBdOwor
ICBjb25zdCBicmFuY2gyID0gYnJhbmNoZXNbMV07CisgIGJyYW5jaDIuY2FuY2VsKCk7CisKKyAg
cmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICByZWFkYWJsZVN0cmVhbVRvQXJyYXkoYnJhbmNoMSku
dGhlbihjaHVua3MgPT4geworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjaHVua3MsIFsnYScs
ICdiJ10sICdicmFuY2gxIHNob3VsZCBoYXZlIHR3byBjaHVua3MnKTsKKyAgICB9KSwKKyAgICBy
ZWFkYWJsZVN0cmVhbVRvQXJyYXkoYnJhbmNoMikudGhlbihjaHVua3MgPT4geworICAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhjaHVua3MsIFtdLCAnYnJhbmNoMiBzaG91bGQgaGF2ZSBubyBjaHVu
a3MnKTsKKyAgICB9KQorICBdKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2Vs
aW5nIGJyYW5jaDIgc2hvdWxkIG5vdCBpbXBhY3QgYnJhbmNoMicpOworCitwcm9taXNlX3Rlc3Qo
KCkgPT4geworCisgIGNvbnN0IHJlYXNvbjEgPSBuZXcgRXJyb3IoJ1dlXCdyZSB3YW50ZWQgbWVu
LicpOworICBjb25zdCByZWFzb24yID0gbmV3IEVycm9yKCdJIGhhdmUgdGhlIGRlYXRoIHNlbnRl
bmNlIG9uIHR3ZWx2ZSBzeXN0ZW1zLicpOworCisgIGxldCByZXNvbHZlOworICBjb25zdCBwcm9t
aXNlID0gbmV3IFByb21pc2UociA9PiByZXNvbHZlID0gcik7CisgIGNvbnN0IHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKKyAgICBjYW5jZWwocmVhc29uKSB7CisgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKHJlYXNvbiwgW3JlYXNvbjEsIHJlYXNvbjJdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAndGhlIGNhbmNlbCByZWFzb24gc2hvdWxkIGJlIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhv
c2UgZnJvbSB0aGUgYnJhbmNoZXMnKTsKKyAgICAgIHJlc29sdmUoKTsKKyAgICB9CisgIH0pOwor
CisgIGNvbnN0IGJyYW5jaCA9IHJzLnRlZSgpOworICBjb25zdCBicmFuY2gxID0gYnJhbmNoWzBd
OworICBjb25zdCBicmFuY2gyID0gYnJhbmNoWzFdOworICBicmFuY2gxLmNhbmNlbChyZWFzb24x
KTsKKyAgYnJhbmNoMi5jYW5jZWwocmVhc29uMik7CisKKyAgcmV0dXJuIHByb21pc2U7CisKK30s
ICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBib3RoIGJyYW5jaGVzIHNob3VsZCBh
Z2dyZWdhdGUgdGhlIGNhbmNlbCByZWFzb25zIGludG8gYW4gYXJyYXknKTsKKworcHJvbWlzZV90
ZXN0KHQgPT4geworCisgIGNvbnN0IHRoZUVycm9yID0geyBuYW1lOiAnSVwnbGwgYmUgY2FyZWZ1
bC4nIH07CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBjYW5jZWwoKSB7
CisgICAgICB0aHJvdyB0aGVFcnJvcjsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IGJyYW5jaCA9
IHJzLnRlZSgpOworICBjb25zdCBicmFuY2gxID0gYnJhbmNoWzBdOworICBjb25zdCBicmFuY2gy
ID0gYnJhbmNoWzFdOworCisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgcHJvbWlzZV9yZWpl
Y3RzKHQsIHRoZUVycm9yLCBicmFuY2gxLmNhbmNlbCgpKSwKKyAgICBwcm9taXNlX3JlamVjdHMo
dCwgdGhlRXJyb3IsIGJyYW5jaDIuY2FuY2VsKCkpCisgIF0pOworCit9LCAnUmVhZGFibGVTdHJl
YW0gdGVlaW5nOiBmYWlsaW5nIHRvIGNhbmNlbCB0aGUgb3JpZ2luYWwgc3RyZWFtIHNob3VsZCBj
YXVzZSBjYW5jZWwoKSB0byByZWplY3Qgb24gYnJhbmNoZXMnKTsKKworcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7
CisKKyAgY29uc3QgYnJhbmNoZXMgPSBycy50ZWUoKTsKKyAgY29uc3QgcmVhZGVyMSA9IGJyYW5j
aGVzWzBdLmdldFJlYWRlcigpOworICBjb25zdCByZWFkZXIyID0gYnJhbmNoZXNbMV0uZ2V0UmVh
ZGVyKCk7CisKKyAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UuYWxsKFtyZWFkZXIxLmNsb3NlZCwg
cmVhZGVyMi5jbG9zZWRdKTsKKworICBjb250cm9sbGVyLmNsb3NlKCk7CisgIHJldHVybiBwcm9t
aXNlOworCit9LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjbG9zaW5nIHRoZSBvcmlnaW5hbCBz
aG91bGQgaW1tZWRpYXRlbHkgY2xvc2UgdGhlIGJyYW5jaGVzJyk7CisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7
CisKKyAgY29uc3QgYnJhbmNoZXMgPSBycy50ZWUoKTsKKyAgY29uc3QgcmVhZGVyMSA9IGJyYW5j
aGVzWzBdLmdldFJlYWRlcigpOworICBjb25zdCByZWFkZXIyID0gYnJhbmNoZXNbMV0uZ2V0UmVh
ZGVyKCk7CisKKyAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICdib28hJyB9OworICBjb25zdCBw
cm9taXNlID0gUHJvbWlzZS5hbGwoWworICAgIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwg
cmVhZGVyMS5jbG9zZWQpLAorICAgIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcmVhZGVy
Mi5jbG9zZWQpCisgIF0pOworCisgIGNvbnRyb2xsZXIuZXJyb3IodGhlRXJyb3IpOworICByZXR1
cm4gcHJvbWlzZTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogZXJyb3JpbmcgdGhlIG9y
aWdpbmFsIHNob3VsZCBpbW1lZGlhdGVseSBlcnJvciB0aGUgYnJhbmNoZXMnKTsKKworZG9uZSgp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL3RlbXBsYXRlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTk5N2JkMmFmZGFiYmYy
Njc3YTRjNDczNDU1ZWM2OWYwMjM3Y2I0YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L3RlbXBsYXRlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNzQgQEAKKworUEFTUyBSdW5uaW5n
IHRlbXBsYXRlZFJTRW1wdHkgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIAorUEFTUyBpbnN0
YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIAorUEFTUyBSdW5u
aW5nIHRlbXBsYXRlZFJTRW1wdHlSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJl
YWRlciAKK1BBU1MgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBhbmQgcHJvcGVy
dGllcyAKK1BBU1MgbG9ja2VkIHNob3VsZCBiZSB0cnVlIAorUEFTUyByZWFkKCkgc2hvdWxkIG5l
dmVyIHNldHRsZSAKK1BBU1MgdHdvIHJlYWQoKXMgc2hvdWxkIGJvdGggbmV2ZXIgc2V0dGxlIAor
UEFTUyByZWFkKCkgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcyBlYWNoIHRpbWUgCitQ
QVNTIGdldFJlYWRlcigpIGFnYWluIG9uIHRoZSBzdHJlYW0gc2hvdWxkIGZhaWwgCitQQVNTIHJl
bGVhc2luZyB0aGUgbG9jayB3aXRoIHBlbmRpbmcgcmVhZCByZXF1ZXN0cyBzaG91bGQgdGhyb3cg
YnV0IHRoZSByZWFkIHJlcXVlc3RzIHNob3VsZCBzdGF5IHBlbmRpbmcgCitQQVNTIHJlbGVhc2lu
ZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgZnVydGhlciByZWFkKCkgY2FsbHMgdG8gcmVqZWN0IHdp
dGggYSBUeXBlRXJyb3IgCitQQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xv
c2VkIGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yIAorUEFTUyByZWxlYXNpbmcgdGhl
IGxvY2sgc2hvdWxkIGNhdXNlIGxvY2tlZCB0byBiZWNvbWUgZmFsc2UgCitQQVNTIGNhbmNlbGlu
ZyB2aWEgdGhlIHJlYWRlciBzaG91bGQgY2F1c2UgdGhlIHJlYWRlciB0byBhY3QgY2xvc2VkIAor
UEFTUyBjYW5jZWxpbmcgdmlhIHRoZSBzdHJlYW0gc2hvdWxkIGZhaWwgCitQQVNTIFJ1bm5pbmcg
dGVtcGxhdGVkUlNDbG9zZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxsIGlu
IHN0YXJ0KSAKK1BBU1MgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxl
ZCBwcm9taXNlIGVhY2ggdGltZSAKK1BBU1MgbG9ja2VkIHNob3VsZCBiZSBmYWxzZSAKK1BBU1Mg
Z2V0UmVhZGVyKCkgc2hvdWxkIGJlIE9LIAorUEFTUyBzaG91bGQgYmUgYWJsZSB0byBhY3F1aXJl
IG11bHRpcGxlIHJlYWRlcnMgaWYgdGhleSBhcmUgcmVsZWFzZWQgaW4gc3VjY2Vzc2lvbiAKK1BB
U1Mgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGFjcXVpcmUgYSBzZWNvbmQgcmVhZGVyIGlmIHdlIGRv
bid0IHJlbGVhc2UgdGhlIGZpcnN0IG9uZSAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3Nl
ZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGJlZm9yZSBnZXR0aW5n
IHJlYWRlcikgCitQQVNTIHJlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVm
aW5lZCwgZG9uZTogdHJ1ZSB9IAorUEFTUyByZWFkKCkgbXVsdGlwbGUgdGltZXMgc2hvdWxkIGZ1
bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKK1BBU1MgcmVhZCgp
IHNob3VsZCB3b3JrIHdoZW4gdXNlZCB3aXRoaW4gYW5vdGhlciByZWFkKCkgZnVsZmlsbCBjYWxs
YmFjayAKK1BBU1MgY2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkIAorUEFTUyBy
ZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5n
ZSBpZGVudGl0eSAKK1BBU1MgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZp
bGxlZCBwcm9taXNlIGVhY2ggdGltZSAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJl
YWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGFmdGVyIGdldHRpbmcgcmVh
ZGVyKSAKK1BBU1MgcmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVk
LCBkb25lOiB0cnVlIH0gCitQQVNTIHJlYWQoKSBtdWx0aXBsZSB0aW1lcyBzaG91bGQgZnVsZmls
bCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAorUEFTUyByZWFkKCkgc2hv
dWxkIHdvcmsgd2hlbiB1c2VkIHdpdGhpbiBhbm90aGVyIHJlYWQoKSBmdWxmaWxsIGNhbGxiYWNr
IAorUEFTUyBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQgCitQQVNTIHJlbGVh
c2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlk
ZW50aXR5IAorUEFTUyBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVk
IHByb21pc2UgZWFjaCB0aW1lIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkIHdpdGgg
UmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKSAKK1BBU1MgY2FuY2VsKCkgc2hvdWxk
IHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZSAKK1BBU1MgbG9j
a2VkIHNob3VsZCBiZSBmYWxzZSAKK1BBU1MgZ2V0UmVhZGVyKCkgc2hvdWxkIGJlIE9LIAorUEFT
UyBzaG91bGQgYmUgYWJsZSB0byBhY3F1aXJlIG11bHRpcGxlIHJlYWRlcnMgaWYgdGhleSBhcmUg
cmVsZWFzZWQgaW4gc3VjY2Vzc2lvbiAKK1BBU1Mgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGFjcXVp
cmUgYSBzZWNvbmQgcmVhZGVyIGlmIHdlIGRvbid0IHJlbGVhc2UgdGhlIGZpcnN0IG9uZSAKK1BB
U1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJl
YWRlciAoY2xvc2VkIHZpYSBjYW5jZWwgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpIAorUEFTUyByZWFk
KCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAK
K1BBU1MgcmVhZCgpIG11bHRpcGxlIHRpbWVzIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTog
dW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCitQQVNTIHJlYWQoKSBzaG91bGQgd29yayB3aGVuIHVz
ZWQgd2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZpbGwgY2FsbGJhY2sgCitQQVNTIGNsb3NlZCBz
aG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCAKK1BBU1MgcmVsZWFzaW5nIHRoZSBsb2NrIHNo
b3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkgCitQQVNTIGNh
bmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRp
bWUgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkIHdpdGggUmVhZGFibGVTdHJlYW0g
KGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpIAorUEFTUyBnZXRSZWFkZXIoKSBzaG91bGQgcmV0
dXJuIGEgcmVhZGVyIHRoYXQgYWN0cyBlcnJvcmVkIAorUEFTUyByZWFkKCkgdHdpY2Ugc2hvdWxk
IGdpdmUgdGhlIGVycm9yIGVhY2ggdGltZSAKK1BBU1MgbG9ja2VkIHNob3VsZCBiZSBmYWxzZSAK
K1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRTeW5jT25seSB3aXRoIFJlYWRhYmxlU3Ry
ZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KSAKK1BBU1Mgc2hvdWxkIGJlIGFibGUgdG8g
b2J0YWluIGEgc2Vjb25kIHJlYWRlciwgd2l0aCB0aGUgY29ycmVjdCBjbG9zZWQgcHJvbWlzZSAK
K1BBU1Mgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIG9idGFpbiBhZGRpdGlvbmFsIHJlYWRlcnMgaWYg
d2UgZG9uJ3QgcmVsZWFzZSB0aGUgZmlyc3QgbG9jayAKK1BBU1MgY2FuY2VsKCkgc2hvdWxkIHJl
dHVybiBhIGRpc3RpbmN0IHJlamVjdGVkIHByb21pc2UgZWFjaCB0aW1lIAorUEFTUyByZWFkZXIg
Y2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IHJlamVjdGVkIHByb21pc2UgZWFjaCB0
aW1lIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZCB3aXRoIFJlYWRhYmxlU3RyZWFt
IChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KSAKK1BB
U1MgZ2V0UmVhZGVyKCkgc2hvdWxkIHJldHVybiBhIHJlYWRlciB0aGF0IGFjdHMgZXJyb3JlZCAK
K1BBU1MgcmVhZCgpIHR3aWNlIHNob3VsZCBnaXZlIHRoZSBlcnJvciBlYWNoIHRpbWUgCitQQVNT
IGxvY2tlZCBzaG91bGQgYmUgZmFsc2UgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVk
UmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVj
dGVkIHByb21pc2UgaW4gc3RhcnQpIHJlYWRlciAKK1BBU1MgY2xvc2VkIHNob3VsZCByZWplY3Qg
d2l0aCB0aGUgZXJyb3IgCitQQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xv
c2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IAorUEFTUyByZWFkKCkgc2hvdWxkIHJl
amVjdCB3aXRoIHRoZSBlcnJvciAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFk
ZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQgYmVmb3JlIGdldHRpbmcgcmVh
ZGVyKSAKK1BBU1MgY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCitQQVNTIHJl
bGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdl
IGlkZW50aXR5IAorUEFTUyByZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciAKK1BB
U1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSBy
ZWFkZXIgKGVycm9yZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpIAorUEFTUyBjbG9zZWQgc2hvdWxk
IHJlamVjdCB3aXRoIHRoZSBlcnJvciAKK1BBU1MgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBj
YXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkgCitQQVNTIHJlYWQoKSBz
aG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTVHdv
Q2h1bmtzT3BlblJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVk
LCBzdGlsbCBvcGVuKSByZWFkZXIgCitQQVNTIGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQg
d2FpdGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNodW5rcyAoc2VxdWVudGlhbCkgCitQ
QVNTIGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2FpdGluZyB3aWxsIGV2ZW50dWFsbHkg
Z2l2ZSBib3RoIGNodW5rcyAobmVzdGVkKSAKK1BBU1MgcmVhZCgpIHNob3VsZCByZXR1cm4gZGlz
dGluY3QgcHJvbWlzZXMgZWFjaCB0aW1lIAorUEFTUyBjYW5jZWwoKSBhZnRlciBhIHJlYWQoKSBz
aG91bGQgc3RpbGwgZ2l2ZSB0aGF0IHNpbmdsZSByZWFkIHJlc3VsdCAKK1BBU1MgUnVubmluZyB0
ZW1wbGF0ZWRSU1R3b0NodW5rc0Nsb3NlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtICh0d28g
Y2h1bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkgcmVhZGVyIAorUEFTUyB0aGlyZCByZWFkKCks
IHdpdGhvdXQgd2FpdGluZywgc2hvdWxkIGdpdmUgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0
cnVlIH0gKHNlcXVlbnRpYWwpIAorUEFTUyB0aGlyZCByZWFkKCksIHdpdGhvdXQgd2FpdGluZywg
c2hvdWxkIGdpdmUgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gKG5lc3RlZCkgCitQ
QVNTIGRyYWluaW5nIHRoZSBzdHJlYW0gdmlhIHJlYWQoKSBzaG91bGQgY2F1c2UgdGhlIHJlYWRl
ciBjbG9zZWQgcHJvbWlzZSB0byBmdWxmaWxsLCBidXQgbG9ja2VkIHN0YXlzIHRydWUgCitQQVNT
IHJlbGVhc2luZyB0aGUgbG9jayBhZnRlciB0aGUgc3RyZWFtIGlzIGNsb3NlZCBzaG91bGQgY2F1
c2UgbG9ja2VkIHRvIGJlY29tZSBmYWxzZSAKK1BBU1MgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3Vs
ZCBjYXVzZSBmdXJ0aGVyIHJlYWQoKSBjYWxscyB0byByZWplY3Qgd2l0aCBhIFR5cGVFcnJvciAK
K1BBU1MgcmVhZGVyJ3MgY2xvc2VkIHByb3BlcnR5IGFsd2F5cyByZXR1cm5zIHRoZSBzYW1lIHBy
b21pc2UgCitGQUlMIExvYWQgdGVtcGxhdGVkLmpzIHdpdGggU2hhcmVkV29ya2VyIGFzc2VydF91
bnJlYWNoZWQ6IFNoYXJlZFdvcmtlciBpcyB1bmF2YWlsYWJsZSBSZWFjaGVkIHVucmVhY2hhYmxl
IGNvZGUKK0ZBSUwgVW50aXRsZWQgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRp
bmcgJ25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmdldFJlZ2lzdHJhdGlvbicpCitQQVNTIFJ1bm5p
bmcgdGVtcGxhdGVkUlNFbXB0eSB3aXRoIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgCitQQVNTIGlu
c3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgCitQQVNTIFJ1
bm5pbmcgdGVtcGxhdGVkUlNFbXB0eVJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkg
cmVhZGVyIAorUEFTUyBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9w
ZXJ0aWVzIAorUEFTUyBsb2NrZWQgc2hvdWxkIGJlIHRydWUgCitQQVNTIHJlYWQoKSBzaG91bGQg
bmV2ZXIgc2V0dGxlIAorUEFTUyB0d28gcmVhZCgpcyBzaG91bGQgYm90aCBuZXZlciBzZXR0bGUg
CitQQVNTIHJlYWQoKSBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzIGVhY2ggdGltZSAK
K1BBU1MgZ2V0UmVhZGVyKCkgYWdhaW4gb24gdGhlIHN0cmVhbSBzaG91bGQgZmFpbCAKK1BBU1Mg
cmVsZWFzaW5nIHRoZSBsb2NrIHdpdGggcGVuZGluZyByZWFkIHJlcXVlc3RzIHNob3VsZCB0aHJv
dyBidXQgdGhlIHJlYWQgcmVxdWVzdHMgc2hvdWxkIHN0YXkgcGVuZGluZyAKK1BBU1MgcmVsZWFz
aW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBmdXJ0aGVyIHJlYWQoKSBjYWxscyB0byByZWplY3Qg
d2l0aCBhIFR5cGVFcnJvciAKK1BBU1MgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBj
bG9zZWQgY2FsbHMgdG8gcmVqZWN0IHdpdGggYSBUeXBlRXJyb3IgCitQQVNTIHJlbGVhc2luZyB0
aGUgbG9jayBzaG91bGQgY2F1c2UgbG9ja2VkIHRvIGJlY29tZSBmYWxzZSAKK1BBU1MgY2FuY2Vs
aW5nIHZpYSB0aGUgcmVhZGVyIHNob3VsZCBjYXVzZSB0aGUgcmVhZGVyIHRvIGFjdCBjbG9zZWQg
CitQQVNTIGNhbmNlbGluZyB2aWEgdGhlIHN0cmVhbSBzaG91bGQgZmFpbCAKK1BBU1MgUnVubmlu
ZyB0ZW1wbGF0ZWRSU0Nsb3NlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbGwg
aW4gc3RhcnQpIAorUEFTUyBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmls
bGVkIHByb21pc2UgZWFjaCB0aW1lIAorUEFTUyBsb2NrZWQgc2hvdWxkIGJlIGZhbHNlIAorUEFT
UyBnZXRSZWFkZXIoKSBzaG91bGQgYmUgT0sgCitQQVNTIHNob3VsZCBiZSBhYmxlIHRvIGFjcXVp
cmUgbXVsdGlwbGUgcmVhZGVycyBpZiB0aGV5IGFyZSByZWxlYXNlZCBpbiBzdWNjZXNzaW9uIAor
UEFTUyBzaG91bGQgbm90IGJlIGFibGUgdG8gYWNxdWlyZSBhIHNlY29uZCByZWFkZXIgaWYgd2Ug
ZG9uJ3QgcmVsZWFzZSB0aGUgZmlyc3Qgb25lIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xv
c2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYmVmb3JlIGdldHRp
bmcgcmVhZGVyKSAKK1BBU1MgcmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5k
ZWZpbmVkLCBkb25lOiB0cnVlIH0gCitQQVNTIHJlYWQoKSBtdWx0aXBsZSB0aW1lcyBzaG91bGQg
ZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAorUEFTUyByZWFk
KCkgc2hvdWxkIHdvcmsgd2hlbiB1c2VkIHdpdGhpbiBhbm90aGVyIHJlYWQoKSBmdWxmaWxsIGNh
bGxiYWNrIAorUEFTUyBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQgCitQQVNT
IHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hh
bmdlIGlkZW50aXR5IAorUEFTUyBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVs
ZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2Vk
UmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGluZyBy
ZWFkZXIpIAorUEFTUyByZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmlu
ZWQsIGRvbmU6IHRydWUgfSAKK1BBU1MgcmVhZCgpIG11bHRpcGxlIHRpbWVzIHNob3VsZCBmdWxm
aWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCitQQVNTIHJlYWQoKSBz
aG91bGQgd29yayB3aGVuIHVzZWQgd2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZpbGwgY2FsbGJh
Y2sgCitQQVNTIGNsb3NlZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCAKK1BBU1MgcmVs
ZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2Ug
aWRlbnRpdHkgCitQQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxs
ZWQgcHJvbWlzZSBlYWNoIHRpbWUgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWQgd2l0
aCBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwpIAorUEFTUyBjYW5jZWwoKSBzaG91
bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIAorUEFTUyBs
b2NrZWQgc2hvdWxkIGJlIGZhbHNlIAorUEFTUyBnZXRSZWFkZXIoKSBzaG91bGQgYmUgT0sgCitQ
QVNTIHNob3VsZCBiZSBhYmxlIHRvIGFjcXVpcmUgbXVsdGlwbGUgcmVhZGVycyBpZiB0aGV5IGFy
ZSByZWxlYXNlZCBpbiBzdWNjZXNzaW9uIAorUEFTUyBzaG91bGQgbm90IGJlIGFibGUgdG8gYWNx
dWlyZSBhIHNlY29uZCByZWFkZXIgaWYgd2UgZG9uJ3QgcmVsZWFzZSB0aGUgZmlyc3Qgb25lIAor
UEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0g
cmVhZGVyIChjbG9zZWQgdmlhIGNhbmNlbCBhZnRlciBnZXR0aW5nIHJlYWRlcikgCitQQVNTIHJl
YWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9
IAorUEFTUyByZWFkKCkgbXVsdGlwbGUgdGltZXMgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVl
OiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKK1BBU1MgcmVhZCgpIHNob3VsZCB3b3JrIHdoZW4g
dXNlZCB3aXRoaW4gYW5vdGhlciByZWFkKCkgZnVsZmlsbCBjYWxsYmFjayAKK1BBU1MgY2xvc2Vk
IHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkIAorUEFTUyByZWxlYXNpbmcgdGhlIGxvY2sg
c2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKK1BBU1Mg
Y2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2gg
dGltZSAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWQgd2l0aCBSZWFkYWJsZVN0cmVh
bSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCkgCitQQVNTIGdldFJlYWRlcigpIHNob3VsZCBy
ZXR1cm4gYSByZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQgCitQQVNTIHJlYWQoKSB0d2ljZSBzaG91
bGQgZ2l2ZSB0aGUgZXJyb3IgZWFjaCB0aW1lIAorUEFTUyBsb2NrZWQgc2hvdWxkIGJlIGZhbHNl
IAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFN5bmNPbmx5IHdpdGggUmVhZGFibGVT
dHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpIAorUEFTUyBzaG91bGQgYmUgYWJsZSB0
byBvYnRhaW4gYSBzZWNvbmQgcmVhZGVyLCB3aXRoIHRoZSBjb3JyZWN0IGNsb3NlZCBwcm9taXNl
IAorUEFTUyBzaG91bGQgbm90IGJlIGFibGUgdG8gb2J0YWluIGFkZGl0aW9uYWwgcmVhZGVycyBp
ZiB3ZSBkb24ndCByZWxlYXNlIHRoZSBmaXJzdCBsb2NrIAorUEFTUyBjYW5jZWwoKSBzaG91bGQg
cmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUgCitQQVNTIHJlYWRl
ciBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNo
IHRpbWUgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkIHdpdGggUmVhZGFibGVTdHJl
YW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpIAor
UEFTUyBnZXRSZWFkZXIoKSBzaG91bGQgcmV0dXJuIGEgcmVhZGVyIHRoYXQgYWN0cyBlcnJvcmVk
IAorUEFTUyByZWFkKCkgdHdpY2Ugc2hvdWxkIGdpdmUgdGhlIGVycm9yIGVhY2ggdGltZSAKK1BB
U1MgbG9ja2VkIHNob3VsZCBiZSBmYWxzZSAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9y
ZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVq
ZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgcmVhZGVyIAorUEFTUyBjbG9zZWQgc2hvdWxkIHJlamVj
dCB3aXRoIHRoZSBlcnJvciAKK1BBU1MgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBj
bG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkgCitQQVNTIHJlYWQoKSBzaG91bGQg
cmVqZWN0IHdpdGggdGhlIGVycm9yIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJl
YWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBiZWZvcmUgZ2V0dGluZyBy
ZWFkZXIpIAorUEFTUyBjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciAKK1BBU1Mg
cmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFu
Z2UgaWRlbnRpdHkgCitQQVNTIHJlYWQoKSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAor
UEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFt
IHJlYWRlciAoZXJyb3JlZCBhZnRlciBnZXR0aW5nIHJlYWRlcikgCitQQVNTIGNsb3NlZCBzaG91
bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAorUEFTUyByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxk
IGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKK1BBU1MgcmVhZCgp
IHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNU
d29DaHVua3NPcGVuUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1
ZWQsIHN0aWxsIG9wZW4pIHJlYWRlciAKK1BBU1MgY2FsbGluZyByZWFkKCkgdHdpY2Ugd2l0aG91
dCB3YWl0aW5nIHdpbGwgZXZlbnR1YWxseSBnaXZlIGJvdGggY2h1bmtzIChzZXF1ZW50aWFsKSAK
K1BBU1MgY2FsbGluZyByZWFkKCkgdHdpY2Ugd2l0aG91dCB3YWl0aW5nIHdpbGwgZXZlbnR1YWxs
eSBnaXZlIGJvdGggY2h1bmtzIChuZXN0ZWQpIAorUEFTUyByZWFkKCkgc2hvdWxkIHJldHVybiBk
aXN0aW5jdCBwcm9taXNlcyBlYWNoIHRpbWUgCitQQVNTIGNhbmNlbCgpIGFmdGVyIGEgcmVhZCgp
IHNob3VsZCBzdGlsbCBnaXZlIHRoYXQgc2luZ2xlIHJlYWQgcmVzdWx0IAorUEFTUyBSdW5uaW5n
IHRlbXBsYXRlZFJTVHdvQ2h1bmtzQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKHR3
byBjaHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXIgCitQQVNTIHRoaXJkIHJlYWQo
KSwgd2l0aG91dCB3YWl0aW5nLCBzaG91bGQgZ2l2ZSB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6
IHRydWUgfSAoc2VxdWVudGlhbCkgCitQQVNTIHRoaXJkIHJlYWQoKSwgd2l0aG91dCB3YWl0aW5n
LCBzaG91bGQgZ2l2ZSB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAobmVzdGVkKSAK
K1BBU1MgZHJhaW5pbmcgdGhlIHN0cmVhbSB2aWEgcmVhZCgpIHNob3VsZCBjYXVzZSB0aGUgcmVh
ZGVyIGNsb3NlZCBwcm9taXNlIHRvIGZ1bGZpbGwsIGJ1dCBsb2NrZWQgc3RheXMgdHJ1ZSAKK1BB
U1MgcmVsZWFzaW5nIHRoZSBsb2NrIGFmdGVyIHRoZSBzdHJlYW0gaXMgY2xvc2VkIHNob3VsZCBj
YXVzZSBsb2NrZWQgdG8gYmVjb21lIGZhbHNlIAorUEFTUyByZWxlYXNpbmcgdGhlIGxvY2sgc2hv
dWxkIGNhdXNlIGZ1cnRoZXIgcmVhZCgpIGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlwZUVycm9y
IAorUEFTUyByZWFkZXIncyBjbG9zZWQgcHJvcGVydHkgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUg
cHJvbWlzZSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy90ZW1wbGF0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NWM2YTZhY2FlZmI1ZGFjNThiOTVm
MjI4MTEwMzJlOWFiYTYyYWZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxh
dGVkLmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlcnMvcmVzb3Vy
Y2VzL3Rlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3Rlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9y
cy10ZXN0LXRlbXBsYXRlcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0idGVtcGxhdGVkLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7Cit3b3JrZXJfdGVzdCgndGVtcGxh
dGVkLmpzJyk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5q
cyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZGIwNDI5OTk0ZDQ1M2Ri
ZmNkMmU4MzQ3ZTZmYTdlZmRmMjBiYzRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMv
dGVtcGxhdGVkLmpzCkBAIC0wLDAgKzEsMTQ4IEBACisndXNlIHN0cmljdCc7CisKK2lmIChzZWxm
LmltcG9ydFNjcmlwdHMpIHsKKyAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzJyk7CisgIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3Rlc3QtdXRp
bHMuanMnKTsKKyAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvcnMtdGVzdC10ZW1w
bGF0ZXMuanMnKTsKK30KKworLy8gUnVuIHRoZSByZWFkYWJsZSBzdHJlYW0gdGVzdCB0ZW1wbGF0
ZXMgYWdhaW5zdCByZWFkYWJsZSBzdHJlYW1zIGNyZWF0ZWQgZGlyZWN0bHkgdXNpbmcgdGhlIGNv
bnN0cnVjdG9yCisKK2NvbnN0IHRoZUVycm9yID0geyBuYW1lOiAnYm9vIScgfTsKK2NvbnN0IGNo
dW5rcyA9IFsnYScsICdiJ107CisKK3RlbXBsYXRlZFJTRW1wdHkoJ1JlYWRhYmxlU3RyZWFtIChl
bXB0eSknLCAoKSA9PiB7CisgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oKTsKK30pOworCit0
ZW1wbGF0ZWRSU0VtcHR5UmVhZGVyKCdSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRlcicsICgp
ID0+IHsKKyAgcmV0dXJuIHN0cmVhbUFuZERlZmF1bHRSZWFkZXIobmV3IFJlYWRhYmxlU3RyZWFt
KCkpOworfSk7CisKK3RlbXBsYXRlZFJTQ2xvc2VkKCdSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZp
YSBjYWxsIGluIHN0YXJ0KScsICgpID0+IHsKKyAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7
CisgICAgc3RhcnQoYykgeworICAgICAgYy5jbG9zZSgpOworICAgIH0KKyAgfSk7Cit9KTsKKwor
dGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIoJ1JlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGJl
Zm9yZSBnZXR0aW5nIHJlYWRlciknLCAoKSA9PiB7CisgIGxldCBjb250cm9sbGVyOworICBjb25z
dCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNv
bnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgY29u
c3QgcmVzdWx0ID0gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihzdHJlYW0pOworICByZXR1cm4gcmVz
dWx0OworfSk7CisKK3RlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyKCdSZWFkYWJsZVN0cmVhbSByZWFk
ZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJlYWRlciknLCAoKSA9PiB7CisgIGxldCBjb250cm9s
bGVyOworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMp
IHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHJlc3VsdCA9
IHN0cmVhbUFuZERlZmF1bHRSZWFkZXIoc3RyZWFtKTsKKyAgY29udHJvbGxlci5jbG9zZSgpOwor
ICByZXR1cm4gcmVzdWx0OworfSk7CisKK3RlbXBsYXRlZFJTQ2xvc2VkKCdSZWFkYWJsZVN0cmVh
bSAoY2xvc2VkIHZpYSBjYW5jZWwpJywgKCkgPT4geworICBjb25zdCBzdHJlYW0gPSBuZXcgUmVh
ZGFibGVTdHJlYW0oKTsKKyAgc3RyZWFtLmNhbmNlbCgpOworICByZXR1cm4gc3RyZWFtOworfSk7
CisKK3RlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyKCdSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3Nl
ZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcgcmVhZGVyKScsICgpID0+IHsKKyAgY29uc3Qgc3Ry
ZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHJlc3VsdCA9IHN0cmVhbUFuZERl
ZmF1bHRSZWFkZXIoc3RyZWFtKTsKKyAgcmVzdWx0LnJlYWRlci5jYW5jZWwoKTsKKyAgcmV0dXJu
IHJlc3VsdDsKK30pOworCit0ZW1wbGF0ZWRSU0Vycm9yZWQoJ1JlYWRhYmxlU3RyZWFtIChlcnJv
cmVkIHZpYSBjYWxsIGluIHN0YXJ0KScsICgpID0+IHsKKyAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0
cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lcnJvcih0aGVFcnJvcik7CisgICAgfQor
ICB9KTsKK30sIHRoZUVycm9yKTsKKwordGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHkoJ1JlYWRh
YmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KScsICgpID0+IHsKKyAgcmV0dXJu
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lcnJvcih0aGVF
cnJvcik7CisgICAgfQorICB9KTsKK30sIHRoZUVycm9yKTsKKwordGVtcGxhdGVkUlNFcnJvcmVk
KCdSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlz
ZSBpbiBzdGFydCknLCAoKSA9PiB7CisgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oeworICAg
IHN0YXJ0KCkgeworICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHRoZUVycm9yKTsKKyAgICB9
CisgIH0pOworfSwgdGhlRXJyb3IpOworCit0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIoJ1JlYWRh
YmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0
YXJ0KSByZWFkZXInLCAoKSA9PiB7CisgIHJldHVybiBzdHJlYW1BbmREZWZhdWx0UmVhZGVyKG5l
dyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoKSB7CisgICAgICByZXR1cm4gUHJvbWlzZS5y
ZWplY3QodGhlRXJyb3IpOworICAgIH0KKyAgfSkpOworfSwgdGhlRXJyb3IpOworCit0ZW1wbGF0
ZWRSU0Vycm9yZWRSZWFkZXIoJ1JlYWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBiZWZvcmUg
Z2V0dGluZyByZWFkZXIpJywgKCkgPT4geworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3Qgc3Ry
ZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9s
bGVyID0gYzsKKyAgICB9CisgIH0pOworICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKKyAg
cmV0dXJuIHN0cmVhbUFuZERlZmF1bHRSZWFkZXIoc3RyZWFtKTsKK30sIHRoZUVycm9yKTsKKwor
dGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyKCdSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQg
YWZ0ZXIgZ2V0dGluZyByZWFkZXIpJywgKCkgPT4geworICBsZXQgY29udHJvbGxlcjsKKyAgY29u
c3QgcmVzdWx0ID0gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0oewor
ICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSkpOworICBj
b250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKKyAgcmV0dXJuIHJlc3VsdDsKK30sIHRoZUVycm9y
KTsKKwordGVtcGxhdGVkUlNUd29DaHVua3NPcGVuUmVhZGVyKCdSZWFkYWJsZVN0cmVhbSAodHdv
IGNodW5rcyBlbnF1ZXVlZCwgc3RpbGwgb3BlbikgcmVhZGVyJywgKCkgPT4geworICByZXR1cm4g
c3RyZWFtQW5kRGVmYXVsdFJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMp
IHsKKyAgICAgIGMuZW5xdWV1ZShjaHVua3NbMF0pOworICAgICAgYy5lbnF1ZXVlKGNodW5rc1sx
XSk7CisgICAgfQorICB9KSk7Cit9LCBjaHVua3MpOworCit0ZW1wbGF0ZWRSU1R3b0NodW5rc0Ns
b3NlZFJlYWRlcignUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xv
c2VkKSByZWFkZXInLCAoKSA9PiB7CisgIGxldCBkb0Nsb3NlOworICBjb25zdCBzdHJlYW0gPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZShjaHVu
a3NbMF0pOworICAgICAgYy5lbnF1ZXVlKGNodW5rc1sxXSk7CisgICAgICBkb0Nsb3NlID0gYy5j
bG9zZS5iaW5kKGMpOworICAgIH0KKyAgfSk7CisgIGNvbnN0IHJlc3VsdCA9IHN0cmVhbUFuZERl
ZmF1bHRSZWFkZXIoc3RyZWFtKTsKKyAgZG9DbG9zZSgpOworICByZXR1cm4gcmVzdWx0OworfSwg
Y2h1bmtzKTsKKworZnVuY3Rpb24gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihzdHJlYW0pIHsKKyAg
cmV0dXJuIHsgc3RyZWFtLCByZWFkZXI6IHN0cmVhbS5nZXRSZWFkZXIoKSB9OworfQorCitkb25l
KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVzb3VyY2VzL3JzLXRlc3QtdGVtcGxhdGVzLmpzIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jlc291cmNlcy9ycy10ZXN0
LXRlbXBsYXRlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NTJiNTY1ZDkwNDJlNzE3ODBkMTY0Y2EyMTZhODc0
ZmMwOTliYzhkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jlc291cmNlcy9ycy10ZXN0LXRlbXBsYXRlcy5qcwpA
QCAtMCwwICsxLDYyNCBAQAorJ3VzZSBzdHJpY3QnOworCisvLyBUaGVzZSB0ZXN0cyBjYW4gYmUg
cnVuIGFnYWluc3QgYW55IHJlYWRhYmxlIHN0cmVhbSBwcm9kdWNlZCBieSB0aGUgd2ViIHBsYXRm
b3JtIHRoYXQgbWVldHMgdGhlIGdpdmVuIGRlc2NyaXB0aW9ucy4KKy8vIEZvciByZWFkYWJsZSBz
dHJlYW0gdGVzdHMsIHRoZSBmYWN0b3J5IHNob3VsZCByZXR1cm4gdGhlIHN0cmVhbS4gRm9yIHJl
YWRlciB0ZXN0cywgdGhlIGZhY3Rvcnkgc2hvdWxkIHJldHVybiBhCisvLyB7IHN0cmVhbSwgcmVh
ZGVyIH0gb2JqZWN0LiAoWW91IGNhbiB1c2UgdGhpcyB0byB2YXJ5IHRoZSB0aW1lIGF0IHdoaWNo
IHlvdSBhY3F1aXJlIGEgcmVhZGVyLikKKworc2VsZi50ZW1wbGF0ZWRSU0VtcHR5ID0gKGxhYmVs
LCBmYWN0b3J5KSA9PiB7CisgIHRlc3QoKCkgPT4ge30sICdSdW5uaW5nIHRlbXBsYXRlZFJTRW1w
dHkgd2l0aCAnICsgbGFiZWwpOworCisgIHRlc3QoKCkgPT4geworCisgICAgY29uc3QgcnMgPSBm
YWN0b3J5KCk7CisKKyAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBycy5sb2NrZWQsICdib29sZWFu
JywgJ2hhcyBhIGJvb2xlYW4gbG9ja2VkIGdldHRlcicpOworICAgIGFzc2VydF9lcXVhbHModHlw
ZW9mIHJzLmNhbmNlbCwgJ2Z1bmN0aW9uJywgJ2hhcyBhIGNhbmNlbCBtZXRob2QnKTsKKyAgICBh
c3NlcnRfZXF1YWxzKHR5cGVvZiBycy5nZXRSZWFkZXIsICdmdW5jdGlvbicsICdoYXMgYSBnZXRS
ZWFkZXIgbWV0aG9kJyk7CisgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnMucGlwZVRocm91Z2gs
ICdmdW5jdGlvbicsICdoYXMgYSBwaXBlVGhyb3VnaCBtZXRob2QnKTsKKyAgICBhc3NlcnRfZXF1
YWxzKHR5cGVvZiBycy5waXBlVG8sICdmdW5jdGlvbicsICdoYXMgYSBwaXBlVG8gbWV0aG9kJyk7
CisgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnMudGVlLCAnZnVuY3Rpb24nLCAnaGFzIGEgdGVl
IG1ldGhvZCcpOworCisgIH0sICdpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBtZXRob2RzIGFu
ZCBwcm9wZXJ0aWVzJyk7Cit9OworCitzZWxmLnRlbXBsYXRlZFJTQ2xvc2VkID0gKGxhYmVsLCBm
YWN0b3J5KSA9PiB7CisgIHRlc3QoKCkgPT4ge30sICdSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2Vk
IHdpdGggJyArIGxhYmVsKTsKKworICBwcm9taXNlX3Rlc3QoKCkgPT4geworCisgICAgY29uc3Qg
cnMgPSBmYWN0b3J5KCk7CisgICAgY29uc3QgY2FuY2VsUHJvbWlzZTEgPSBycy5jYW5jZWwoKTsK
KyAgICBjb25zdCBjYW5jZWxQcm9taXNlMiA9IHJzLmNhbmNlbCgpOworCisgICAgYXNzZXJ0X25v
dF9lcXVhbHMoY2FuY2VsUHJvbWlzZTEsIGNhbmNlbFByb21pc2UyLCAnY2FuY2VsKCkgY2FsbHMg
c2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcycpOworCisgICAgcmV0dXJuIFByb21pc2Uu
YWxsKFsKKyAgICAgIGNhbmNlbFByb21pc2UxLnRoZW4odiA9PiBhc3NlcnRfZXF1YWxzKHYsIHVu
ZGVmaW5lZCwgJ2ZpcnN0IGNhbmNlbCgpIGNhbGwgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmlu
ZWQnKSksCisgICAgICBjYW5jZWxQcm9taXNlMi50aGVuKHYgPT4gYXNzZXJ0X2VxdWFscyh2LCB1
bmRlZmluZWQsICdzZWNvbmQgY2FuY2VsKCkgY2FsbCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVm
aW5lZCcpKQorICAgIF0pOworCisgIH0sICdjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGlu
Y3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lJyk7CisKKyAgdGVzdCgoKSA9PiB7CisKKyAg
ICBjb25zdCBycyA9IGZhY3RvcnkoKTsKKyAgICBhc3NlcnRfZmFsc2UocnMubG9ja2VkLCAnbG9j
a2VkIGdldHRlciBzaG91bGQgcmV0dXJuIGZhbHNlJyk7CisKKyAgfSwgJ2xvY2tlZCBzaG91bGQg
YmUgZmFsc2UnKTsKKworICB0ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHJzID0gZmFjdG9yeSgp
OworICAgIHJzLmdldFJlYWRlcigpOyAvLyBnZXRSZWFkZXIoKSBzaG91bGQgbm90IHRocm93Lgor
CisgIH0sICdnZXRSZWFkZXIoKSBzaG91bGQgYmUgT0snKTsKKworICB0ZXN0KCgpID0+IHsKKwor
ICAgIGNvbnN0IHJzID0gZmFjdG9yeSgpOworCisgICAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVh
ZGVyKCk7CisgICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7CisKKyAgICBjb25zdCByZWFkZXIyID0g
cnMuZ2V0UmVhZGVyKCk7IC8vIEdldHRpbmcgYSBzZWNvbmQgcmVhZGVyIHNob3VsZCBub3QgdGhy
b3cuCisgICAgcmVhZGVyMi5yZWxlYXNlTG9jaygpOworCisgICAgcnMuZ2V0UmVhZGVyKCk7IC8v
IEdldHRpbmcgYSB0aGlyZCByZWFkZXIgc2hvdWxkIG5vdCB0aHJvdy4KKworICB9LCAnc2hvdWxk
IGJlIGFibGUgdG8gYWNxdWlyZSBtdWx0aXBsZSByZWFkZXJzIGlmIHRoZXkgYXJlIHJlbGVhc2Vk
IGluIHN1Y2Nlc3Npb24nKTsKKworICB0ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHJzID0gZmFj
dG9yeSgpOworCisgICAgcnMuZ2V0UmVhZGVyKCk7CisKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksICdnZXR0aW5nIGEgc2Vjb25kIHJlYWRl
ciBzaG91bGQgdGhyb3cnKTsKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkg
PT4gcnMuZ2V0UmVhZGVyKCksICdnZXR0aW5nIGEgdGhpcmQgcmVhZGVyIHNob3VsZCB0aHJvdycp
OworCisgIH0sICdzaG91bGQgbm90IGJlIGFibGUgdG8gYWNxdWlyZSBhIHNlY29uZCByZWFkZXIg
aWYgd2UgZG9uXCd0IHJlbGVhc2UgdGhlIGZpcnN0IG9uZScpOworfTsKKworc2VsZi50ZW1wbGF0
ZWRSU0Vycm9yZWQgPSAobGFiZWwsIGZhY3RvcnksIGVycm9yKSA9PiB7CisgIHRlc3QoKCkgPT4g
e30sICdSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZCB3aXRoICcgKyBsYWJlbCk7CisKKyAgcHJv
bWlzZV90ZXN0KHQgPT4geworCisgICAgY29uc3QgcnMgPSBmYWN0b3J5KCk7CisgICAgY29uc3Qg
cmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAg
ICAgcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yLCByZWFkZXIuY2xvc2VkKSwKKyAgICAgIHByb21p
c2VfcmVqZWN0cyh0LCBlcnJvciwgcmVhZGVyLnJlYWQoKSkKKyAgICBdKTsKKworICB9LCAnZ2V0
UmVhZGVyKCkgc2hvdWxkIHJldHVybiBhIHJlYWRlciB0aGF0IGFjdHMgZXJyb3JlZCcpOworCisg
IHByb21pc2VfdGVzdCh0ID0+IHsKKworICAgIGNvbnN0IHJzID0gZmFjdG9yeSgpOworICAgIGNv
bnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsK
KyAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvciwgcmVhZGVyLnJlYWQoKSksCisgICAgICBw
cm9taXNlX3JlamVjdHModCwgZXJyb3IsIHJlYWRlci5yZWFkKCkpLAorICAgICAgcHJvbWlzZV9y
ZWplY3RzKHQsIGVycm9yLCByZWFkZXIuY2xvc2VkKQorICAgIF0pOworCisgIH0sICdyZWFkKCkg
dHdpY2Ugc2hvdWxkIGdpdmUgdGhlIGVycm9yIGVhY2ggdGltZScpOworCisgIHRlc3QoKCkgPT4g
eworICAgIGNvbnN0IHJzID0gZmFjdG9yeSgpOworCisgICAgYXNzZXJ0X2ZhbHNlKHJzLmxvY2tl
ZCwgJ2xvY2tlZCBnZXR0ZXIgc2hvdWxkIHJldHVybiBmYWxzZScpOworICB9LCAnbG9ja2VkIHNo
b3VsZCBiZSBmYWxzZScpOworfTsKKworc2VsZi50ZW1wbGF0ZWRSU0Vycm9yZWRTeW5jT25seSA9
IChsYWJlbCwgZmFjdG9yeSwgZXJyb3IpID0+IHsKKyAgdGVzdCgoKSA9PiB7fSwgJ1J1bm5pbmcg
dGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHkgd2l0aCAnICsgbGFiZWwpOworCisgIHByb21pc2Vf
dGVzdCh0ID0+IHsKKworICAgIGNvbnN0IHJzID0gZmFjdG9yeSgpOworICAgIHJzLmdldFJlYWRl
cigpLnJlbGVhc2VMb2NrKCk7CisgICAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7IC8v
IENhbGxpbmcgZ2V0UmVhZGVyKCkgdHdpY2UgZG9lcyBub3QgdGhyb3cgKHRoZSBzdHJlYW0gaXMg
bm90IGxvY2tlZCkuCisKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yLCByZWFk
ZXIuY2xvc2VkKTsKKworICB9LCAnc2hvdWxkIGJlIGFibGUgdG8gb2J0YWluIGEgc2Vjb25kIHJl
YWRlciwgd2l0aCB0aGUgY29ycmVjdCBjbG9zZWQgcHJvbWlzZScpOworCisgIHRlc3QoKCkgPT4g
eworCisgICAgY29uc3QgcnMgPSBmYWN0b3J5KCk7CisgICAgcnMuZ2V0UmVhZGVyKCk7CisKKyAg
ICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksICdn
ZXR0aW5nIGEgc2Vjb25kIHJlYWRlciBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKKyAgICBh
c3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksICdnZXR0
aW5nIGEgdGhpcmQgcmVhZGVyIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOworCisgIH0sICdz
aG91bGQgbm90IGJlIGFibGUgdG8gb2J0YWluIGFkZGl0aW9uYWwgcmVhZGVycyBpZiB3ZSBkb25c
J3QgcmVsZWFzZSB0aGUgZmlyc3QgbG9jaycpOworCisgIHByb21pc2VfdGVzdCh0ID0+IHsKKwor
ICAgIGNvbnN0IHJzID0gZmFjdG9yeSgpOworICAgIGNvbnN0IGNhbmNlbFByb21pc2UxID0gcnMu
Y2FuY2VsKCk7CisgICAgY29uc3QgY2FuY2VsUHJvbWlzZTIgPSBycy5jYW5jZWwoKTsKKworICAg
IGFzc2VydF9ub3RfZXF1YWxzKGNhbmNlbFByb21pc2UxLCBjYW5jZWxQcm9taXNlMiwgJ2NhbmNl
bCgpIGNhbGxzIHNob3VsZCByZXR1cm4gZGlzdGluY3QgcHJvbWlzZXMnKTsKKworICAgIHJldHVy
biBQcm9taXNlLmFsbChbCisgICAgICBwcm9taXNlX3JlamVjdHModCwgZXJyb3IsIGNhbmNlbFBy
b21pc2UxKSwKKyAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvciwgY2FuY2VsUHJvbWlzZTIp
CisgICAgXSk7CisKKyAgfSwgJ2NhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCByZWpl
Y3RlZCBwcm9taXNlIGVhY2ggdGltZScpOworCisgIHByb21pc2VfdGVzdCh0ID0+IHsKKworICAg
IGNvbnN0IHJzID0gZmFjdG9yeSgpOworICAgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigp
OworICAgIGNvbnN0IGNhbmNlbFByb21pc2UxID0gcmVhZGVyLmNhbmNlbCgpOworICAgIGNvbnN0
IGNhbmNlbFByb21pc2UyID0gcmVhZGVyLmNhbmNlbCgpOworCisgICAgYXNzZXJ0X25vdF9lcXVh
bHMoY2FuY2VsUHJvbWlzZTEsIGNhbmNlbFByb21pc2UyLCAnY2FuY2VsKCkgY2FsbHMgc2hvdWxk
IHJldHVybiBkaXN0aW5jdCBwcm9taXNlcycpOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsK
KyAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvciwgY2FuY2VsUHJvbWlzZTEpLAorICAgICAg
cHJvbWlzZV9yZWplY3RzKHQsIGVycm9yLCBjYW5jZWxQcm9taXNlMikKKyAgICBdKTsKKworICB9
LCAncmVhZGVyIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCByZWplY3RlZCBwcm9t
aXNlIGVhY2ggdGltZScpOworfTsKKworc2VsZi50ZW1wbGF0ZWRSU0VtcHR5UmVhZGVyID0gKGxh
YmVsLCBmYWN0b3J5KSA9PiB7CisgIHRlc3QoKCkgPT4ge30sICdSdW5uaW5nIHRlbXBsYXRlZFJT
RW1wdHlSZWFkZXIgd2l0aCAnICsgbGFiZWwpOworCisgIHRlc3QoKCkgPT4geworCisgICAgY29u
c3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKKworICAgIGFzc2VydF90cnVlKCdjbG9zZWQn
IGluIHJlYWRlciwgJ2hhcyBhIGNsb3NlZCBwcm9wZXJ0eScpOworICAgIGFzc2VydF9lcXVhbHMo
dHlwZW9mIHJlYWRlci5jbG9zZWQudGhlbiwgJ2Z1bmN0aW9uJywgJ2Nsb3NlZCBwcm9wZXJ0eSBp
cyB0aGVuYWJsZScpOworCisgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcmVhZGVyLmNhbmNlbCwg
J2Z1bmN0aW9uJywgJ2hhcyBhIGNhbmNlbCBtZXRob2QnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHR5
cGVvZiByZWFkZXIucmVhZCwgJ2Z1bmN0aW9uJywgJ2hhcyBhIHJlYWQgbWV0aG9kJyk7CisgICAg
YXNzZXJ0X2VxdWFscyh0eXBlb2YgcmVhZGVyLnJlbGVhc2VMb2NrLCAnZnVuY3Rpb24nLCAnaGFz
IGEgcmVsZWFzZUxvY2sgbWV0aG9kJyk7CisKKyAgfSwgJ2luc3RhbmNlcyBoYXZlIHRoZSBjb3Jy
ZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMnKTsKKworICB0ZXN0KCgpID0+IHsKKworICAgIGNv
bnN0IHN0cmVhbSA9IGZhY3RvcnkoKS5zdHJlYW07CisKKyAgICBhc3NlcnRfdHJ1ZShzdHJlYW0u
bG9ja2VkLCAnbG9ja2VkIGdldHRlciBzaG91bGQgcmV0dXJuIHRydWUnKTsKKworICB9LCAnbG9j
a2VkIHNob3VsZCBiZSB0cnVlJyk7CisKKyAgcHJvbWlzZV90ZXN0KHQgPT4geworCisgICAgY29u
c3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKKworICAgIHJlYWRlci5yZWFkKCkudGhlbigK
KyAgICAgIHQudW5yZWFjaGVkX2Z1bmMoJ3JlYWQoKSBzaG91bGQgbm90IGZ1bGZpbGwnKSwKKyAg
ICAgIHQudW5yZWFjaGVkX2Z1bmMoJ3JlYWQoKSBzaG91bGQgbm90IHJlamVjdCcpCisgICAgKTsK
KworICAgIHJldHVybiBkZWxheSg1MDApOworCisgIH0sICdyZWFkKCkgc2hvdWxkIG5ldmVyIHNl
dHRsZScpOworCisgIHByb21pc2VfdGVzdCh0ID0+IHsKKworICAgIGNvbnN0IHJlYWRlciA9IGZh
Y3RvcnkoKS5yZWFkZXI7CisKKyAgICByZWFkZXIucmVhZCgpLnRoZW4oCisgICAgICB0LnVucmVh
Y2hlZF9mdW5jKCdyZWFkKCkgc2hvdWxkIG5vdCBmdWxmaWxsJyksCisgICAgICB0LnVucmVhY2hl
ZF9mdW5jKCdyZWFkKCkgc2hvdWxkIG5vdCByZWplY3QnKQorICAgICk7CisKKyAgICByZWFkZXIu
cmVhZCgpLnRoZW4oCisgICAgICB0LnVucmVhY2hlZF9mdW5jKCdyZWFkKCkgc2hvdWxkIG5vdCBm
dWxmaWxsJyksCisgICAgICB0LnVucmVhY2hlZF9mdW5jKCdyZWFkKCkgc2hvdWxkIG5vdCByZWpl
Y3QnKQorICAgICk7CisKKyAgICByZXR1cm4gZGVsYXkoNTAwKTsKKworICB9LCAndHdvIHJlYWQo
KXMgc2hvdWxkIGJvdGggbmV2ZXIgc2V0dGxlJyk7CisKKyAgdGVzdCgoKSA9PiB7CisKKyAgICBj
b25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOworICAgIGFzc2VydF9ub3RfZXF1YWxzKHJl
YWRlci5yZWFkKCksIHJlYWRlci5yZWFkKCksICd0aGUgcHJvbWlzZXMgcmV0dXJuZWQgc2hvdWxk
IGJlIGRpc3RpbmN0Jyk7CisKKyAgfSwgJ3JlYWQoKSBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHBy
b21pc2VzIGVhY2ggdGltZScpOworCisgIHRlc3QoKCkgPT4geworCisgICAgY29uc3Qgc3RyZWFt
ID0gZmFjdG9yeSgpLnN0cmVhbTsKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwg
KCkgPT4gc3RyZWFtLmdldFJlYWRlcigpLCAnc3RyZWFtLmdldFJlYWRlcigpIHNob3VsZCB0aHJv
dyBhIFR5cGVFcnJvcicpOworCisgIH0sICdnZXRSZWFkZXIoKSBhZ2FpbiBvbiB0aGUgc3RyZWFt
IHNob3VsZCBmYWlsJyk7CisKKyAgcHJvbWlzZV90ZXN0KHQgPT4geworCisgICAgY29uc3Qgc3Ry
ZWFtQW5kUmVhZGVyID0gZmFjdG9yeSgpOworICAgIGNvbnN0IHN0cmVhbSA9IHN0cmVhbUFuZFJl
YWRlci5zdHJlYW07CisgICAgY29uc3QgcmVhZGVyID0gc3RyZWFtQW5kUmVhZGVyLnJlYWRlcjsK
KworICAgIHJlYWRlci5yZWFkKCkudGhlbigKKyAgICAgIHQudW5yZWFjaGVkX2Z1bmMoJ2ZpcnN0
IHJlYWQoKSBzaG91bGQgbm90IGZ1bGZpbGwnKSwKKyAgICAgIHQudW5yZWFjaGVkX2Z1bmMoJ2Zp
cnN0IHJlYWQoKSBzaG91bGQgbm90IHJlamVjdCcpCisgICAgKTsKKworICAgIHJlYWRlci5yZWFk
KCkudGhlbigKKyAgICAgIHQudW5yZWFjaGVkX2Z1bmMoJ3NlY29uZCByZWFkKCkgc2hvdWxkIG5v
dCBmdWxmaWxsJyksCisgICAgICB0LnVucmVhY2hlZF9mdW5jKCdzZWNvbmQgcmVhZCgpIHNob3Vs
ZCBub3QgcmVqZWN0JykKKyAgICApOworCisgICAgcmVhZGVyLmNsb3NlZC50aGVuKAorICAgICAg
dC51bnJlYWNoZWRfZnVuYygnY2xvc2VkIHNob3VsZCBub3QgZnVsZmlsbCcpLAorICAgICAgdC51
bnJlYWNoZWRfZnVuYygnY2xvc2VkIHNob3VsZCBub3QgcmVqZWN0JykKKyAgICApOworCisgICAg
YXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJlYWRlci5yZWxlYXNlTG9jaygp
LCAncmVsZWFzZUxvY2sgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7CisKKyAgICBhc3NlcnRf
dHJ1ZShzdHJlYW0ubG9ja2VkLCAndGhlIHN0cmVhbSBzaG91bGQgc3RpbGwgYmUgbG9ja2VkJyk7
CisKKyAgICByZXR1cm4gZGVsYXkoNTAwKTsKKworICB9LCAncmVsZWFzaW5nIHRoZSBsb2NrIHdp
dGggcGVuZGluZyByZWFkIHJlcXVlc3RzIHNob3VsZCB0aHJvdyBidXQgdGhlIHJlYWQgcmVxdWVz
dHMgc2hvdWxkIHN0YXkgcGVuZGluZycpOworCisgIHByb21pc2VfdGVzdCh0ID0+IHsKKworICAg
IGNvbnN0IHJlYWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7CisgICAgcmVhZGVyLnJlbGVhc2VMb2Nr
KCk7CisKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgcHJvbWlzZV9yZWplY3RzKHQs
IG5ldyBUeXBlRXJyb3IoKSwgcmVhZGVyLnJlYWQoKSksCisgICAgICBwcm9taXNlX3JlamVjdHMo
dCwgbmV3IFR5cGVFcnJvcigpLCByZWFkZXIucmVhZCgpKQorICAgIF0pOworCisgIH0sICdyZWxl
YXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGZ1cnRoZXIgcmVhZCgpIGNhbGxzIHRvIHJlamVj
dCB3aXRoIGEgVHlwZUVycm9yJyk7CisKKyAgcHJvbWlzZV90ZXN0KHQgPT4geworCisgICAgY29u
c3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKKworICAgIGNvbnN0IGNsb3NlZEJlZm9yZSA9
IHJlYWRlci5jbG9zZWQ7CisgICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7CisgICAgY29uc3QgY2xv
c2VkQWZ0ZXIgPSByZWFkZXIuY2xvc2VkOworCisgICAgYXNzZXJ0X2VxdWFscyhjbG9zZWRCZWZv
cmUsIGNsb3NlZEFmdGVyLCAndGhlIGNsb3NlZCBwcm9taXNlIHNob3VsZCBub3QgY2hhbmdlIGlk
ZW50aXR5Jyk7CisKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3Io
KSwgY2xvc2VkQmVmb3JlKTsKKworICB9LCAncmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVz
ZSBjbG9zZWQgY2FsbHMgdG8gcmVqZWN0IHdpdGggYSBUeXBlRXJyb3InKTsKKworICB0ZXN0KCgp
ID0+IHsKKworICAgIGNvbnN0IHN0cmVhbUFuZFJlYWRlciA9IGZhY3RvcnkoKTsKKyAgICBjb25z
dCBzdHJlYW0gPSBzdHJlYW1BbmRSZWFkZXIuc3RyZWFtOworICAgIGNvbnN0IHJlYWRlciA9IHN0
cmVhbUFuZFJlYWRlci5yZWFkZXI7CisKKyAgICByZWFkZXIucmVsZWFzZUxvY2soKTsKKyAgICBh
c3NlcnRfZmFsc2Uoc3RyZWFtLmxvY2tlZCwgJ2xvY2tlZCBnZXR0ZXIgc2hvdWxkIHJldHVybiBm
YWxzZScpOworCisgIH0sICdyZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGxvY2tlZCB0
byBiZWNvbWUgZmFsc2UnKTsKKworICBwcm9taXNlX3Rlc3QoKCkgPT4geworCisgICAgY29uc3Qg
cmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKKyAgICByZWFkZXIuY2FuY2VsKCk7CisKKyAgICBy
ZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVh
bHMociwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0sICdyZWFkKClpbmcgZnJvbSB0
aGUgcmVhZGVyIHNob3VsZCBnaXZlIGEgZG9uZSByZXN1bHQnKTsKKyAgICB9KTsKKworICB9LCAn
Y2FuY2VsaW5nIHZpYSB0aGUgcmVhZGVyIHNob3VsZCBjYXVzZSB0aGUgcmVhZGVyIHRvIGFjdCBj
bG9zZWQnKTsKKworICBwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgICBjb25zdCBzdHJlYW0gPSBm
YWN0b3J5KCkuc3RyZWFtOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVF
cnJvcigpLCBzdHJlYW0uY2FuY2VsKCkpOworCisgIH0sICdjYW5jZWxpbmcgdmlhIHRoZSBzdHJl
YW0gc2hvdWxkIGZhaWwnKTsKK307CisKK3NlbGYudGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIgPSAo
bGFiZWwsIGZhY3RvcnkpID0+IHsKKyAgdGVzdCgoKSA9PiB7fSwgJ1J1bm5pbmcgdGVtcGxhdGVk
UlNDbG9zZWRSZWFkZXIgd2l0aCAnICsgbGFiZWwpOworCisgIHByb21pc2VfdGVzdCgoKSA9PiB7
CisKKyAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOworCisgICAgcmV0dXJuIHJl
YWRlci5yZWFkKCkudGhlbih2ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHYsIHsg
dmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIGNv
cnJlY3RseScpOworICAgIH0pOworCisgIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7
IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfScpOworCisgIHByb21pc2VfdGVzdCgoKSA9
PiB7CisKKyAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOworCisgICAgcmV0dXJu
IFByb21pc2UuYWxsKFsKKyAgICAgIHJlYWRlci5yZWFkKCkudGhlbih2ID0+IHsKKyAgICAgICAg
YXNzZXJ0X29iamVjdF9lcXVhbHModiwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0s
ICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgY29ycmVjdGx5Jyk7CisgICAgICB9KSwKKyAgICAgIHJl
YWRlci5yZWFkKCkudGhlbih2ID0+IHsKKyAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHModiwg
eyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwg
Y29ycmVjdGx5Jyk7CisgICAgICB9KQorICAgIF0pOworCisgIH0sICdyZWFkKCkgbXVsdGlwbGUg
dGltZXMgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUg
fScpOworCisgIHByb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgICBjb25zdCByZWFkZXIgPSBmYWN0
b3J5KCkucmVhZGVyOworCisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbigoKSA9PiByZWFk
ZXIucmVhZCgpKS50aGVuKHYgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHModiwgeyB2
YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgY29y
cmVjdGx5Jyk7CisgICAgfSk7CisKKyAgfSwgJ3JlYWQoKSBzaG91bGQgd29yayB3aGVuIHVzZWQg
d2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZpbGwgY2FsbGJhY2snKTsKKworICBwcm9taXNlX3Rl
c3QoKCkgPT4geworCisgICAgY29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKKworICAg
IHJldHVybiByZWFkZXIuY2xvc2VkLnRoZW4odiA9PiBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5l
ZCwgJ3JlYWRlciBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKSk7CisKKyAg
fSwgJ2Nsb3NlZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpOworCisgIHByb21pc2Vf
dGVzdCh0ID0+IHsKKworICAgIGNvbnN0IHJlYWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7CisKKyAg
ICBjb25zdCBjbG9zZWRCZWZvcmUgPSByZWFkZXIuY2xvc2VkOworICAgIHJlYWRlci5yZWxlYXNl
TG9jaygpOworICAgIGNvbnN0IGNsb3NlZEFmdGVyID0gcmVhZGVyLmNsb3NlZDsKKworICAgIGFz
c2VydF9ub3RfZXF1YWxzKGNsb3NlZEJlZm9yZSwgY2xvc2VkQWZ0ZXIsICd0aGUgY2xvc2VkIHBy
b21pc2Ugc2hvdWxkIGNoYW5nZSBpZGVudGl0eScpOworCisgICAgcmV0dXJuIFByb21pc2UuYWxs
KFsKKyAgICAgIGNsb3NlZEJlZm9yZS50aGVuKHYgPT4gYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmlu
ZWQsICdyZWFkZXIuY2xvc2VkIGFjcXVpcmVkIGJlZm9yZSByZWxlYXNlIHNob3VsZCBmdWxmaWxs
JykpLAorICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgY2xvc2VkQWZ0
ZXIpCisgICAgXSk7CisKKyAgfSwgJ3JlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xv
c2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5Jyk7CisKKyAgcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKworICAgIGNvbnN0IHJlYWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7CisgICAgY29uc3Qg
Y2FuY2VsUHJvbWlzZTEgPSByZWFkZXIuY2FuY2VsKCk7CisgICAgY29uc3QgY2FuY2VsUHJvbWlz
ZTIgPSByZWFkZXIuY2FuY2VsKCk7CisgICAgY29uc3QgY2xvc2VkUmVhZGVyUHJvbWlzZSA9IHJl
YWRlci5jbG9zZWQ7CisKKyAgICBhc3NlcnRfbm90X2VxdWFscyhjYW5jZWxQcm9taXNlMSwgY2Fu
Y2VsUHJvbWlzZTIsICdjYW5jZWwoKSBjYWxscyBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21p
c2VzJyk7CisgICAgYXNzZXJ0X25vdF9lcXVhbHMoY2FuY2VsUHJvbWlzZTEsIGNsb3NlZFJlYWRl
clByb21pc2UsICdjYW5jZWwoKSBwcm9taXNlIDEgc2hvdWxkIGJlIGRpc3RpbmN0IGZyb20gcmVh
ZGVyLmNsb3NlZCcpOworICAgIGFzc2VydF9ub3RfZXF1YWxzKGNhbmNlbFByb21pc2UyLCBjbG9z
ZWRSZWFkZXJQcm9taXNlLCAnY2FuY2VsKCkgcHJvbWlzZSAyIHNob3VsZCBiZSBkaXN0aW5jdCBm
cm9tIHJlYWRlci5jbG9zZWQnKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBj
YW5jZWxQcm9taXNlMS50aGVuKHYgPT4gYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdmaXJz
dCBjYW5jZWwoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpKSwKKyAgICAgIGNhbmNl
bFByb21pc2UyLnRoZW4odiA9PiBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ3NlY29uZCBj
YW5jZWwoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpKQorICAgIF0pOworCisgIH0s
ICdjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFj
aCB0aW1lJyk7Cit9OworCitzZWxmLnRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlciA9IChsYWJlbCwg
ZmFjdG9yeSwgZXJyb3IpID0+IHsKKyAgdGVzdCgoKSA9PiB7fSwgJ1J1bm5pbmcgdGVtcGxhdGVk
UlNFcnJvcmVkUmVhZGVyIHdpdGggJyArIGxhYmVsKTsKKworICBwcm9taXNlX3Rlc3QodCA9PiB7
CisKKyAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOworICAgIHJldHVybiBwcm9t
aXNlX3JlamVjdHModCwgZXJyb3IsIHJlYWRlci5jbG9zZWQpOworCisgIH0sICdjbG9zZWQgc2hv
dWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOworCisgIHByb21pc2VfdGVzdCh0ID0+IHsKKwor
ICAgIGNvbnN0IHJlYWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7CisgICAgY29uc3QgY2xvc2VkQmVm
b3JlID0gcmVhZGVyLmNsb3NlZDsKKworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJy
b3IsIGNsb3NlZEJlZm9yZSkudGhlbigoKSA9PiB7CisgICAgICByZWFkZXIucmVsZWFzZUxvY2so
KTsKKworICAgICAgY29uc3QgY2xvc2VkQWZ0ZXIgPSByZWFkZXIuY2xvc2VkOworICAgICAgYXNz
ZXJ0X25vdF9lcXVhbHMoY2xvc2VkQmVmb3JlLCBjbG9zZWRBZnRlciwgJ3RoZSBjbG9zZWQgcHJv
bWlzZSBzaG91bGQgY2hhbmdlIGlkZW50aXR5Jyk7CisKKyAgICAgIHJldHVybiBwcm9taXNlX3Jl
amVjdHModCwgbmV3IFR5cGVFcnJvcigpLCBjbG9zZWRBZnRlcik7CisgICAgfSk7CisKKyAgfSwg
J3JlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hh
bmdlIGlkZW50aXR5Jyk7CisKKyAgcHJvbWlzZV90ZXN0KHQgPT4geworCisgICAgY29uc3QgcmVh
ZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVy
cm9yLCByZWFkZXIucmVhZCgpKTsKKworICB9LCAncmVhZCgpIHNob3VsZCByZWplY3Qgd2l0aCB0
aGUgZXJyb3InKTsKK307CisKK3NlbGYudGVtcGxhdGVkUlNUd29DaHVua3NPcGVuUmVhZGVyID0g
KGxhYmVsLCBmYWN0b3J5LCBjaHVua3MpID0+IHsKKyAgdGVzdCgoKSA9PiB7fSwgJ1J1bm5pbmcg
dGVtcGxhdGVkUlNUd29DaHVua3NPcGVuUmVhZGVyIHdpdGggJyArIGxhYmVsKTsKKworICBwcm9t
aXNlX3Rlc3QoKCkgPT4geworCisgICAgY29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsK
KworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICByZWFkZXIucmVhZCgpLnRoZW4ociA9
PiB7CisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IGNodW5rc1swXSwg
ZG9uZTogZmFsc2UgfSwgJ2ZpcnN0IHJlc3VsdCBzaG91bGQgYmUgY29ycmVjdCcpOworICAgICAg
fSksCisgICAgICByZWFkZXIucmVhZCgpLnRoZW4ociA9PiB7CisgICAgICAgIGFzc2VydF9vYmpl
Y3RfZXF1YWxzKHIsIHsgdmFsdWU6IGNodW5rc1sxXSwgZG9uZTogZmFsc2UgfSwgJ3NlY29uZCBy
ZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKyAgICAgIH0pCisgICAgXSk7CisKKyAgfSwgJ2Nh
bGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2FpdGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2ZSBi
b3RoIGNodW5rcyAoc2VxdWVudGlhbCknKTsKKworICBwcm9taXNlX3Rlc3QoKCkgPT4geworCisg
ICAgY29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKKworICAgIHJldHVybiByZWFkZXIu
cmVhZCgpLnRoZW4ociA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVl
OiBjaHVua3NbMF0sIGRvbmU6IGZhbHNlIH0sICdmaXJzdCByZXN1bHQgc2hvdWxkIGJlIGNvcnJl
Y3QnKTsKKworICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihyMiA9PiB7CisgICAgICAg
IGFzc2VydF9vYmplY3RfZXF1YWxzKHIyLCB7IHZhbHVlOiBjaHVua3NbMV0sIGRvbmU6IGZhbHNl
IH0sICdzZWNvbmQgcmVzdWx0IHNob3VsZCBiZSBjb3JyZWN0Jyk7CisgICAgICB9KTsKKyAgICB9
KTsKKworICB9LCAnY2FsbGluZyByZWFkKCkgdHdpY2Ugd2l0aG91dCB3YWl0aW5nIHdpbGwgZXZl
bnR1YWxseSBnaXZlIGJvdGggY2h1bmtzIChuZXN0ZWQpJyk7CisKKyAgdGVzdCgoKSA9PiB7CisK
KyAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOworICAgIGFzc2VydF9ub3RfZXF1
YWxzKHJlYWRlci5yZWFkKCksIHJlYWRlci5yZWFkKCksICd0aGUgcHJvbWlzZXMgcmV0dXJuZWQg
c2hvdWxkIGJlIGRpc3RpbmN0Jyk7CisKKyAgfSwgJ3JlYWQoKSBzaG91bGQgcmV0dXJuIGRpc3Rp
bmN0IHByb21pc2VzIGVhY2ggdGltZScpOworCisgIHByb21pc2VfdGVzdCgoKSA9PiB7CisKKyAg
ICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOworCisgICAgY29uc3QgcHJvbWlzZTEg
PSByZWFkZXIuY2xvc2VkLnRoZW4odiA9PiB7CisgICAgICBhc3NlcnRfZXF1YWxzKHYsIHVuZGVm
aW5lZCwgJ3JlYWRlciBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsKKyAg
ICB9KTsKKworICAgIGNvbnN0IHByb21pc2UyID0gcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4gewor
ICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogY2h1bmtzWzBdLCBkb25lOiBm
YWxzZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb21pc2UgcmV0dXJuZWQgYmVm
b3JlIGNhbmNlbGxhdGlvbiBzaG91bGQgZnVsZmlsbCB3aXRoIGEgY2h1bmsnKTsKKyAgICB9KTsK
KworICAgIHJlYWRlci5jYW5jZWwoKTsKKworICAgIGNvbnN0IHByb21pc2UzID0gcmVhZGVyLnJl
YWQoKS50aGVuKHIgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTog
dW5kZWZpbmVkLCBkb25lOiB0cnVlIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJv
bWlzZSByZXR1cm5lZCBhZnRlciBjYW5jZWxsYXRpb24gc2hvdWxkIGZ1bGZpbGwgd2l0aCBhbiBl
bmQtb2Ytc3RyZWFtIHNpZ25hbCcpOworICAgIH0pOworCisgICAgcmV0dXJuIFByb21pc2UuYWxs
KFtwcm9taXNlMSwgcHJvbWlzZTIsIHByb21pc2UzXSk7CisKKyAgfSwgJ2NhbmNlbCgpIGFmdGVy
IGEgcmVhZCgpIHNob3VsZCBzdGlsbCBnaXZlIHRoYXQgc2luZ2xlIHJlYWQgcmVzdWx0Jyk7Cit9
OworCitzZWxmLnRlbXBsYXRlZFJTVHdvQ2h1bmtzQ2xvc2VkUmVhZGVyID0gZnVuY3Rpb24gKGxh
YmVsLCBmYWN0b3J5LCBjaHVua3MpIHsKKyAgdGVzdCgoKSA9PiB7fSwgJ1J1bm5pbmcgdGVtcGxh
dGVkUlNUd29DaHVua3NDbG9zZWRSZWFkZXIgd2l0aCAnICsgbGFiZWwpOworCisgIHByb21pc2Vf
dGVzdCgoKSA9PiB7CisKKyAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOworCisg
ICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsK
KyAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogY2h1bmtzWzBdLCBkb25l
OiBmYWxzZSB9LCAnZmlyc3QgcmVzdWx0IHNob3VsZCBiZSBjb3JyZWN0Jyk7CisgICAgICB9KSwK
KyAgICAgIHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKKyAgICAgICAgYXNzZXJ0X29iamVjdF9l
cXVhbHMociwgeyB2YWx1ZTogY2h1bmtzWzFdLCBkb25lOiBmYWxzZSB9LCAnc2Vjb25kIHJlc3Vs
dCBzaG91bGQgYmUgY29ycmVjdCcpOworICAgICAgfSksCisgICAgICByZWFkZXIucmVhZCgpLnRo
ZW4ociA9PiB7CisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IHVuZGVm
aW5lZCwgZG9uZTogdHJ1ZSB9LCAndGhpcmQgcmVzdWx0IHNob3VsZCBiZSBjb3JyZWN0Jyk7Cisg
ICAgICB9KQorICAgIF0pOworCisgIH0sICd0aGlyZCByZWFkKCksIHdpdGhvdXQgd2FpdGluZywg
c2hvdWxkIGdpdmUgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gKHNlcXVlbnRpYWwp
Jyk7CisKKyAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHJlYWRlciA9IGZhY3Rv
cnkoKS5yZWFkZXI7CisKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4geworICAg
ICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogY2h1bmtzWzBdLCBkb25lOiBmYWxz
ZSB9LCAnZmlyc3QgcmVzdWx0IHNob3VsZCBiZSBjb3JyZWN0Jyk7CisKKyAgICAgIHJldHVybiBy
ZWFkZXIucmVhZCgpLnRoZW4ocjIgPT4geworICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhy
MiwgeyB2YWx1ZTogY2h1bmtzWzFdLCBkb25lOiBmYWxzZSB9LCAnc2Vjb25kIHJlc3VsdCBzaG91
bGQgYmUgY29ycmVjdCcpOworCisgICAgICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4ocjMg
PT4geworICAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIzLCB7IHZhbHVlOiB1bmRlZmlu
ZWQsIGRvbmU6IHRydWUgfSwgJ3RoaXJkIHJlc3VsdCBzaG91bGQgYmUgY29ycmVjdCcpOworICAg
ICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOworCisgIH0sICd0aGlyZCByZWFkKCksIHdpdGhv
dXQgd2FpdGluZywgc2hvdWxkIGdpdmUgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0g
KG5lc3RlZCknKTsKKworICBwcm9taXNlX3Rlc3QoKCkgPT4geworCisgICAgY29uc3Qgc3RyZWFt
QW5kUmVhZGVyID0gZmFjdG9yeSgpOworICAgIGNvbnN0IHN0cmVhbSA9IHN0cmVhbUFuZFJlYWRl
ci5zdHJlYW07CisgICAgY29uc3QgcmVhZGVyID0gc3RyZWFtQW5kUmVhZGVyLnJlYWRlcjsKKwor
ICAgIGFzc2VydF90cnVlKHN0cmVhbS5sb2NrZWQsICdzdHJlYW0gc2hvdWxkIHN0YXJ0IGxvY2tl
ZCcpOworCisgICAgY29uc3QgcHJvbWlzZSA9IHJlYWRlci5jbG9zZWQudGhlbih2ID0+IHsKKyAg
ICAgIGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAncmVhZGVyIGNsb3NlZCBzaG91bGQgZnVs
ZmlsbCB3aXRoIHVuZGVmaW5lZCcpOworICAgICAgYXNzZXJ0X3RydWUoc3RyZWFtLmxvY2tlZCwg
J3N0cmVhbSBzaG91bGQgcmVtYWluIGxvY2tlZCcpOworICAgIH0pOworCisgICAgcmVhZGVyLnJl
YWQoKTsKKyAgICByZWFkZXIucmVhZCgpOworCisgICAgcmV0dXJuIHByb21pc2U7CisKKyAgfSwg
J2RyYWluaW5nIHRoZSBzdHJlYW0gdmlhIHJlYWQoKSBzaG91bGQgY2F1c2UgdGhlIHJlYWRlciBj
bG9zZWQgcHJvbWlzZSB0byBmdWxmaWxsLCBidXQgbG9ja2VkIHN0YXlzIHRydWUnKTsKKworICBw
cm9taXNlX3Rlc3QoKCkgPT4geworCisgICAgY29uc3Qgc3RyZWFtQW5kUmVhZGVyID0gZmFjdG9y
eSgpOworICAgIGNvbnN0IHN0cmVhbSA9IHN0cmVhbUFuZFJlYWRlci5zdHJlYW07CisgICAgY29u
c3QgcmVhZGVyID0gc3RyZWFtQW5kUmVhZGVyLnJlYWRlcjsKKworICAgIGNvbnN0IHByb21pc2Ug
PSByZWFkZXIuY2xvc2VkLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X3RydWUoc3RyZWFtLmxv
Y2tlZCwgJ3RoZSBzdHJlYW0gc2hvdWxkIHN0YXJ0IGxvY2tlZCcpOworICAgICAgcmVhZGVyLnJl
bGVhc2VMb2NrKCk7IC8vIFJlbGVhc2luZyB0aGUgbG9jayBhZnRlciByZWFkZXIgY2xvc2VkIHNo
b3VsZCBub3QgdGhyb3cuCisgICAgICBhc3NlcnRfZmFsc2Uoc3RyZWFtLmxvY2tlZCwgJ3RoZSBz
dHJlYW0gc2hvdWxkIGVuZCB1bmxvY2tlZCcpOworICAgIH0pOworCisgICAgcmVhZGVyLnJlYWQo
KTsKKyAgICByZWFkZXIucmVhZCgpOworCisgICAgcmV0dXJuIHByb21pc2U7CisKKyAgfSwgJ3Jl
bGVhc2luZyB0aGUgbG9jayBhZnRlciB0aGUgc3RyZWFtIGlzIGNsb3NlZCBzaG91bGQgY2F1c2Ug
bG9ja2VkIHRvIGJlY29tZSBmYWxzZScpOworCisgIHByb21pc2VfdGVzdCh0ID0+IHsKKworICAg
IGNvbnN0IHJlYWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7CisKKyAgICByZWFkZXIucmVsZWFzZUxv
Y2soKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICBwcm9taXNlX3JlamVjdHMo
dCwgbmV3IFR5cGVFcnJvcigpLCByZWFkZXIucmVhZCgpKSwKKyAgICAgIHByb21pc2VfcmVqZWN0
cyh0LCBuZXcgVHlwZUVycm9yKCksIHJlYWRlci5yZWFkKCkpLAorICAgICAgcHJvbWlzZV9yZWpl
Y3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgcmVhZGVyLnJlYWQoKSkKKyAgICBdKTsKKworICB9LCAn
cmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBmdXJ0aGVyIHJlYWQoKSBjYWxscyB0byBy
ZWplY3Qgd2l0aCBhIFR5cGVFcnJvcicpOworCisgIHByb21pc2VfdGVzdCgoKSA9PiB7CisKKyAg
ICBjb25zdCBzdHJlYW1BbmRSZWFkZXIgPSBmYWN0b3J5KCk7CisgICAgY29uc3Qgc3RyZWFtID0g
c3RyZWFtQW5kUmVhZGVyLnN0cmVhbTsKKyAgICBjb25zdCByZWFkZXIgPSBzdHJlYW1BbmRSZWFk
ZXIucmVhZGVyOworCisgICAgY29uc3QgcmVhZGVyQ2xvc2VkID0gcmVhZGVyLmNsb3NlZDsKKwor
ICAgIGFzc2VydF9lcXVhbHMocmVhZGVyLmNsb3NlZCwgcmVhZGVyQ2xvc2VkLCAnYWNjZXNzaW5n
IHJlYWRlci5jbG9zZWQgdHdpY2UgaW4gc3VjY2Vzc2lvbiBnaXZlcyB0aGUgc2FtZSB2YWx1ZScp
OworCisgICAgY29uc3QgcHJvbWlzZSA9IHJlYWRlci5yZWFkKCkudGhlbigoKSA9PiB7CisgICAg
ICBhc3NlcnRfZXF1YWxzKHJlYWRlci5jbG9zZWQsIHJlYWRlckNsb3NlZCwgJ3JlYWRlci5jbG9z
ZWQgaXMgdGhlIHNhbWUgYWZ0ZXIgcmVhZCgpIGZ1bGZpbGxzJyk7CisKKyAgICAgIHJlYWRlci5y
ZWxlYXNlTG9jaygpOworCisgICAgICBhc3NlcnRfZXF1YWxzKHJlYWRlci5jbG9zZWQsIHJlYWRl
ckNsb3NlZCwgJ3JlYWRlci5jbG9zZWQgaXMgdGhlIHNhbWUgYWZ0ZXIgcmVsZWFzaW5nIHRoZSBs
b2NrJyk7CisKKyAgICAgIGNvbnN0IG5ld1JlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsKKyAg
ICAgIHJldHVybiBuZXdSZWFkZXIucmVhZCgpOworICAgIH0pOworCisgICAgYXNzZXJ0X2VxdWFs
cyhyZWFkZXIuY2xvc2VkLCByZWFkZXJDbG9zZWQsICdyZWFkZXIuY2xvc2VkIGlzIHRoZSBzYW1l
IGFmdGVyIGNhbGxpbmcgcmVhZCgpJyk7CisKKyAgICByZXR1cm4gcHJvbWlzZTsKKworICB9LCAn
cmVhZGVyXCdzIGNsb3NlZCBwcm9wZXJ0eSBhbHdheXMgcmV0dXJucyB0aGUgc2FtZSBwcm9taXNl
Jyk7Cit9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3Jlc291cmNlcy9ycy11dGlscy5qcyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZXNvdXJjZXMvcnMtdXRpbHMuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMGYzMjIyZTIzY2FiN2EwYTZkNjE3NzExNmM5OWVkOTBkZjk1Nzk3NwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZXNvdXJjZXMvcnMtdXRpbHMuanMKQEAgLTAsMCArMSwxODUgQEAKKyd1c2Ug
c3RyaWN0JzsKKyhmdW5jdGlvbiAoKSB7CisKKyAgY2xhc3MgUmFuZG9tUHVzaFNvdXJjZSB7Cisg
ICAgY29uc3RydWN0b3IodG9QdXNoKSB7CisgICAgICB0aGlzLnB1c2hlZCA9IDA7CisgICAgICB0
aGlzLnRvUHVzaCA9IHRvUHVzaDsKKyAgICAgIHRoaXMuc3RhcnRlZCA9IGZhbHNlOworICAgICAg
dGhpcy5wYXVzZWQgPSBmYWxzZTsKKyAgICAgIHRoaXMuY2xvc2VkID0gZmFsc2U7CisKKyAgICAg
IHRoaXMuX2ludGVydmFsSGFuZGxlID0gbnVsbDsKKyAgICB9CisKKyAgICByZWFkU3RhcnQoKSB7
CisgICAgICBpZiAodGhpcy5jbG9zZWQpIHsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorCisg
ICAgICBpZiAoIXRoaXMuc3RhcnRlZCkgeworICAgICAgICB0aGlzLl9pbnRlcnZhbEhhbmRsZSA9
IHNldEludGVydmFsKHdyaXRlQ2h1bmssIDIpOworICAgICAgICB0aGlzLnN0YXJ0ZWQgPSB0cnVl
OworICAgICAgfQorCisgICAgICBpZiAodGhpcy5wYXVzZWQpIHsKKyAgICAgICAgdGhpcy5faW50
ZXJ2YWxIYW5kbGUgPSBzZXRJbnRlcnZhbCh3cml0ZUNodW5rLCAyKTsKKyAgICAgICAgdGhpcy5w
YXVzZWQgPSBmYWxzZTsKKyAgICAgIH0KKworICAgICAgY29uc3Qgc291cmNlID0gdGhpczsKKyAg
ICAgIGZ1bmN0aW9uIHdyaXRlQ2h1bmsoKSB7CisgICAgICAgIGlmIChzb3VyY2UucGF1c2VkKSB7
CisgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgc291cmNlLnB1c2hlZCsr
OworCisgICAgICAgIGlmIChzb3VyY2UudG9QdXNoID4gMCAmJiBzb3VyY2UucHVzaGVkID4gc291
cmNlLnRvUHVzaCkgeworICAgICAgICAgIGlmIChzb3VyY2UuX2ludGVydmFsSGFuZGxlKSB7Cisg
ICAgICAgICAgICBjbGVhckludGVydmFsKHNvdXJjZS5faW50ZXJ2YWxIYW5kbGUpOworICAgICAg
ICAgICAgc291cmNlLl9pbnRlcnZhbEhhbmRsZSA9IHVuZGVmaW5lZDsKKyAgICAgICAgICB9Cisg
ICAgICAgICAgc291cmNlLmNsb3NlZCA9IHRydWU7CisgICAgICAgICAgc291cmNlLm9uZW5kKCk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgc291cmNlLm9uZGF0YShyYW5kb21DaHVuaygx
MjgpKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIHJlYWRTdG9wKCkgeworICAg
ICAgaWYgKHRoaXMucGF1c2VkKSB7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKworICAgICAg
aWYgKHRoaXMuc3RhcnRlZCkgeworICAgICAgICB0aGlzLnBhdXNlZCA9IHRydWU7CisgICAgICAg
IGNsZWFySW50ZXJ2YWwodGhpcy5faW50ZXJ2YWxIYW5kbGUpOworICAgICAgICB0aGlzLl9pbnRl
cnZhbEhhbmRsZSA9IHVuZGVmaW5lZDsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHRocm93IG5l
dyBFcnJvcignQ2FuXCd0IHBhdXNlIHJlYWRpbmcgYW4gdW5zdGFydGVkIHNvdXJjZS4nKTsKKyAg
ICAgIH0KKyAgICB9CisgIH0KKworICBmdW5jdGlvbiByYW5kb21DaHVuayhzaXplKSB7CisgICAg
bGV0IGNodW5rID0gJyc7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7ICsraSkgewor
ICAgICAgLy8gQWRkIGEgcmFuZG9tIGNoYXJhY3RlciBmcm9tIHRoZSBiYXNpYyBwcmludGFibGUg
QVNDSUkgc2V0LgorICAgICAgY2h1bmsgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShNYXRoLnJvdW5k
KE1hdGgucmFuZG9tKCkgKiA4NCkgKyAzMik7CisgICAgfQorCisgICAgcmV0dXJuIGNodW5rOwor
ICB9CisKKyAgZnVuY3Rpb24gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHJlYWRhYmxlLCByZWFkZXIp
IHsKKyAgICBpZiAocmVhZGVyID09PSB1bmRlZmluZWQpIHsKKyAgICAgIHJlYWRlciA9IHJlYWRh
YmxlLmdldFJlYWRlcigpOworICAgIH0KKworICAgIGNvbnN0IGNodW5rcyA9IFtdOworCisgICAg
cmV0dXJuIHB1bXAoKTsKKworICAgIGZ1bmN0aW9uIHB1bXAoKSB7CisgICAgICByZXR1cm4gcmVh
ZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7CisgICAgICAgIGlmIChyZXN1bHQuZG9uZSkgewor
ICAgICAgICAgIHJldHVybiBjaHVua3M7CisgICAgICAgIH0KKworICAgICAgICBjaHVua3MucHVz
aChyZXN1bHQudmFsdWUpOworICAgICAgICByZXR1cm4gcHVtcCgpOworICAgICAgfSk7CisgICAg
fQorICB9CisKKyAgY2xhc3MgU2VxdWVudGlhbFB1bGxTb3VyY2UgeworICAgIGNvbnN0cnVjdG9y
KGxpbWl0LCBvcHRpb25zKSB7CisgICAgICBjb25zdCBhc3luYyA9IG9wdGlvbnMgJiYgb3B0aW9u
cy5hc3luYzsKKworICAgICAgdGhpcy5jdXJyZW50ID0gMDsKKyAgICAgIHRoaXMubGltaXQgPSBs
aW1pdDsKKyAgICAgIHRoaXMub3BlbmVkID0gZmFsc2U7CisgICAgICB0aGlzLmNsb3NlZCA9IGZh
bHNlOworCisgICAgICB0aGlzLl9leGVjID0gZiA9PiBmKCk7CisgICAgICBpZiAoYXN5bmMpIHsK
KyAgICAgICAgdGhpcy5fZXhlYyA9IGYgPT4gc2V0VGltZW91dChmLCAwKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICBvcGVuKGNiKSB7CisgICAgICB0aGlzLl9leGVjKCgpID0+IHsKKyAgICAgICAg
dGhpcy5vcGVuZWQgPSB0cnVlOworICAgICAgICBjYigpOworICAgICAgfSk7CisgICAgfQorCisg
ICAgcmVhZChjYikgeworICAgICAgdGhpcy5fZXhlYygoKSA9PiB7CisgICAgICAgIGlmICgrK3Ro
aXMuY3VycmVudCA8PSB0aGlzLmxpbWl0KSB7CisgICAgICAgICAgY2IobnVsbCwgZmFsc2UsIHRo
aXMuY3VycmVudCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgY2IobnVsbCwgdHJ1ZSwg
bnVsbCk7CisgICAgICAgIH0KKyAgICAgIH0pOworICAgIH0KKworICAgIGNsb3NlKGNiKSB7Cisg
ICAgICB0aGlzLl9leGVjKCgpID0+IHsKKyAgICAgICAgdGhpcy5jbG9zZWQgPSB0cnVlOworICAg
ICAgICBjYigpOworICAgICAgfSk7CisgICAgfQorICB9CisKKyAgZnVuY3Rpb24gc2VxdWVudGlh
bFJlYWRhYmxlU3RyZWFtKGxpbWl0LCBvcHRpb25zKSB7CisgICAgY29uc3Qgc2VxdWVudGlhbFNv
dXJjZSA9IG5ldyBTZXF1ZW50aWFsUHVsbFNvdXJjZShsaW1pdCwgb3B0aW9ucyk7CisKKyAgICBj
b25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgc3RhcnQoKSB7CisgICAg
ICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAg
c2VxdWVudGlhbFNvdXJjZS5vcGVuKGVyciA9PiB7CisgICAgICAgICAgICBpZiAoZXJyKSB7Cisg
ICAgICAgICAgICAgIHJlamVjdChlcnIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVz
b2x2ZSgpOworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICAgIH0sCisKKyAgICAgIHB1
bGwoYykgeworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4g
eworICAgICAgICAgIHNlcXVlbnRpYWxTb3VyY2UucmVhZCgoZXJyLCBkb25lLCBjaHVuaykgPT4g
eworICAgICAgICAgICAgaWYgKGVycikgeworICAgICAgICAgICAgICByZWplY3QoZXJyKTsKKyAg
ICAgICAgICAgIH0gZWxzZSBpZiAoZG9uZSkgeworICAgICAgICAgICAgICBzZXF1ZW50aWFsU291
cmNlLmNsb3NlKGVycjIgPT4geworICAgICAgICAgICAgICAgIGlmIChlcnIyKSB7CisgICAgICAg
ICAgICAgICAgICByZWplY3QoZXJyMik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGMuY2xvc2UoKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgYy5lbnF1ZXVlKGNodW5r
KTsKKyAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgIH0p
OworICAgICAgICB9KTsKKyAgICAgIH0KKyAgICB9KTsKKworICAgIHN0cmVhbS5zb3VyY2UgPSBz
ZXF1ZW50aWFsU291cmNlOworCisgICAgcmV0dXJuIHN0cmVhbTsKKyAgfQorCisKKyAgc2VsZi5S
YW5kb21QdXNoU291cmNlID0gUmFuZG9tUHVzaFNvdXJjZTsKKyAgc2VsZi5yZWFkYWJsZVN0cmVh
bVRvQXJyYXkgPSByZWFkYWJsZVN0cmVhbVRvQXJyYXk7CisgIHNlbGYuc2VxdWVudGlhbFJlYWRh
YmxlU3RyZWFtID0gc2VxdWVudGlhbFJlYWRhYmxlU3RyZWFtOworCit9KCkpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jl
c291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ2ZWQ0YTdhYWI1NDFlOGU1Y2ZlZWM0MDQyMDMyODkyNDMwMTQ3YjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMKQEAgLTAsMCArMSwxNCBAQAor
J3VzZSBzdHJpY3QnOworCitmdW5jdGlvbiB3b3JrZXJfdGVzdChmaWxlKSB7CisgIGZldGNoX3Rl
c3RzX2Zyb21fd29ya2VyKG5ldyBXb3JrZXIoZmlsZSkpOworICBpZiAodHlwZW9mIFNoYXJlZFdv
cmtlciA9PT0gJ2Z1bmN0aW9uJykgeworICAgIGZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBT
aGFyZWRXb3JrZXIoZmlsZSkpOworICB9IGVsc2UgeworICAgIHRlc3QoKCkgPT4geworICAgICAg
YXNzZXJ0X3VucmVhY2hlZCgnU2hhcmVkV29ya2VyIGlzIHVuYXZhaWxhYmxlJyk7CisgICAgfSwg
J0xvYWQgJyArIGZpbGUgKyAnIHdpdGggU2hhcmVkV29ya2VyJyk7CisgIH0KKyAgc2VydmljZV93
b3JrZXJfdGVzdChmaWxlKTsKK30KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jlc291
cmNlcy90ZXN0LXV0aWxzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjNDc4OThhNjA4ZTkzZDVlNTY2NGQwMTc2
MDdiNGY0NzA5ZjUzNzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMKQEAg
LTAsMCArMSw0MyBAQAorJ3VzZSBzdHJpY3QnOworCitzZWxmLmdldHRlclJlamVjdHMgPSAodCwg
b2JqLCBnZXR0ZXJOYW1lLCB0YXJnZXQpID0+IHsKKyAgY29uc3QgZ2V0dGVyID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGdldHRlck5hbWUpLmdldDsKKworICByZXR1cm4g
cHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgZ2V0dGVyLmNhbGwodGFyZ2V0KSk7
Cit9OworCitzZWxmLm1ldGhvZFJlamVjdHMgPSAodCwgb2JqLCBtZXRob2ROYW1lLCB0YXJnZXQp
ID0+IHsKKyAgY29uc3QgbWV0aG9kID0gb2JqW21ldGhvZE5hbWVdOworCisgIHJldHVybiBwcm9t
aXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLCBtZXRob2QuY2FsbCh0YXJnZXQpKTsKK307
CisKK3NlbGYuZ2V0dGVyVGhyb3dzID0gKG9iaiwgZ2V0dGVyTmFtZSwgdGFyZ2V0KSA9PiB7Cisg
IGNvbnN0IGdldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBnZXR0
ZXJOYW1lKS5nZXQ7CisKKyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGdl
dHRlci5jYWxsKHRhcmdldCksIGdldHRlck5hbWUgKyAnIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJv
cicpOworfTsKKworc2VsZi5tZXRob2RUaHJvd3MgPSAob2JqLCBtZXRob2ROYW1lLCB0YXJnZXQs
IGFyZ3MpID0+IHsKKyAgY29uc3QgbWV0aG9kID0gb2JqW21ldGhvZE5hbWVdOworCisgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBtZXRob2QuYXBwbHkodGFyZ2V0LCBhcmdz
KSwgbWV0aG9kTmFtZSArICcgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7Cit9OworCitzZWxm
LmdhcmJhZ2VDb2xsZWN0ID0gKCkgPT4geworICBpZiAoc2VsZi5nYykgeworICAgIC8vIFVzZSAt
LWV4cG9zZV9nYyBmb3IgVjggKGFuZCBOb2RlLmpzKQorICAgIC8vIEV4cG9zZWQgaW4gU3BpZGVy
TW9ua2V5IHNoZWxsIGFzIHdlbGwKKyAgICBzZWxmLmdjKCk7CisgIH0gZWxzZSBpZiAoc2VsZi5H
Q0NvbnRyb2xsZXIpIHsKKyAgICAvLyBQcmVzZW50IGluIHNvbWUgV2ViS2l0IGRldmVsb3BtZW50
IGVudmlyb25tZW50cworICAgIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7CisgIH0gZWxzZSB7Cisg
ICAgLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqLworICAgIGNvbnNvbGUud2FybignVGVz
dHMgYXJlIHJ1bm5pbmcgd2l0aG91dCB0aGUgYWJpbGl0eSB0byBkbyBtYW51YWwgZ2FyYmFnZSBj
b2xsZWN0aW9uLiBUaGV5IHdpbGwgc3RpbGwgd29yaywgYnV0ICcgKworICAgICAgJ2NvdmVyYWdl
IHdpbGwgYmUgc3Vib3B0aW1hbC4nKTsKKyAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLWNvbnNvbGUg
Ki8KKyAgfQorfTsKKworc2VsZi5kZWxheSA9IG1zID0+IG5ldyBQcm9taXNlKHJlc29sdmUgPT4g
c3RlcF90aW1lb3V0KHJlc29sdmUsIG1zKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272181</attachid>
            <date>2016-02-25 01:21:48 -0800</date>
            <delta_ts>2016-02-25 01:33:03 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-154671-20160225102129.patch</filename>
            <type>text/plain</type>
            <size>398909</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3MDYyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpp
bmRleCA2NjE5OThjZmUwMjgyMGMwNzBjM2JlZDY5NGRmODExYjliNDAwOWRkLi4wZTc4ZmNjOGMz
ZGViMmQxNGVhYTUwMjRiZTI3N2YwNjc4Y2UxN2M0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAxNi0wMi0yNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIE1vdmUgc3RyZWFtcyB0ZXN0cyBmcm9t
IHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaSB0byB3ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0
NjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIuCisKKyAg
ICAgICAgVGhpcyB3aWxsIGFsbG93IHByZXBhcmluZyByZXN5bmNpbmcgd2ViLXBsYXRmb3JtLXRl
c3RzLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvUkVBRE1FLnR4dDog
UmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy1hcGkvUkVBRE1FLnR4dC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dDogUmVuYW1lZCBm
cm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1h
cGkvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQuCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5o
dG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zLWFwaS9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWwuCisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJh
dGVneS5qczogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy1hcGkvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5qcy4KKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5
LWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvY291bnQtcXVldWluZy1zdHJhdGVneS1leHBlY3Rl
ZC50eHQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvY291bnQtcXVldWlu
Zy1zdHJhdGVneS5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWwu
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvY291bnQtcXVldWluZy1zdHJh
dGVneS5qczogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy1hcGkvY291bnQtcXVldWluZy1zdHJhdGVneS5qcy4KKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVn
aWVzLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRl
Z2llcy1leHBlY3RlZC50eHQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJs
ZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmh0bWwuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5qczogUmVuYW1lZCBm
cm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1h
cGkvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5qcy4KKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJj
ZXMtZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5
aW5nLXNvdXJjZXMtZXhwZWN0ZWQudHh0LgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5odG1sOiBSZW5h
bWVkIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuaHRtbC4KKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11
bmRlcmx5aW5nLXNvdXJjZXMuanM6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVu
ZGVybHlpbmctc291cmNlcy5qcy4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJv
bSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBp
L3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiB3
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5o
dG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5odG1sLgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQt
Y2hlY2tzLmpzOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5qcy4K
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Nh
bmNlbC1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLWV4
cGVjdGVkLnR4dC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL2NhbmNlbC5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2NhbmNl
bC5odG1sLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvY2FuY2VsLmpzOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5qcy4K
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Nv
dW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24tZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZy
b20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFw
aS9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24tZXhw
ZWN0ZWQudHh0LgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5odG1sOiBSZW5hbWVk
IGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
LWFwaS9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24u
aHRtbC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uanM6IFJlbmFtZWQgZnJvbSBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3Jl
YWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5qcy4KKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJh
Z2UtY29sbGVjdGlvbi0xLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFt
cy9nYXJiYWdlLWNvbGxlY3Rpb24tMS1leHBlY3RlZC50eHQuCisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24tMS5o
dG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi0xLmh0
bWwuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9nYXJiYWdlLWNvbGxlY3Rpb24tMi1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxl
LXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLTItZXhwZWN0ZWQudHh0LgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0
aW9uLTIuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rp
b24tMi5odG1sLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVh
ZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24tZXhwZWN0ZWQudHh0LgorICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xs
ZWN0aW9uLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0
aW9uLmh0bWwuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uanM6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVh
bXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmpzLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJv
bSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBp
L3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC1leHBlY3RlZC50eHQuCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLmh0bWw6IFJlbmFt
ZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5odG1sLgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5qczogUmVuYW1lZCBm
cm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1h
cGkvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLmpzLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcGlwZS10aHJvdWdoLWV4cGVjdGVkLnR4dDog
UmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9waXBlLXRocm91Z2gtZXhwZWN0ZWQudHh0Lgor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcGlw
ZS10aHJvdWdoLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcGlwZS10aHJvdWdo
Lmh0bWwuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtcy9waXBlLXRocm91Z2guanM6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcGlwZS10
aHJvdWdoLmpzLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJv
bSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBp
L3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQuCisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW0tcmVhZGVyLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtLXJlYWRlci5odG1sLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5qczogUmVuYW1l
ZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy1hcGkvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmpzLgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLWV4cGVj
dGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy90ZWUtZXhwZWN0ZWQudHh0Lgor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVl
Lmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmh0bWwuCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuanM6IFJlbmFt
ZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmpzLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLWV4cGVjdGVkLnR4dDogUmVu
YW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0LgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVk
Lmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmh0bWwuCisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0
ZWQuanM6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmpzLgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jlc291cmNlcy9ycy10ZXN0LXRlbXBsYXRl
cy5qczogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy1hcGkvcmVzb3VyY2VzL3JzLXRlc3QtdGVtcGxhdGVzLmpzLgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jlc291cmNlcy9ycy11dGlscy5qczogUmVu
YW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy1hcGkvcmVzb3VyY2VzL3JzLXV0aWxzLmpzLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzOiBSZW5hbWVkIGZyb20g
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9y
ZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcy4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZXNvdXJjZXMvdGVzdC11dGlscy5qczogUmVuYW1lZCBmcm9tIExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVzb3VyY2Vz
L3Rlc3QtdXRpbHMuanMuCisKIDIwMTYtMDItMjQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFi
bGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBbRmV0Y2ggQVBJXSBJbXBsZW1lbnQgRmV0Y2gg
QVBJIFJlc3BvbnNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL1JFQURNRS50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL1JFQURNRS50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmYzkxZjU5NDZhMzhkMTQyYjA1MWM4MTFkNjE1ODlmNmUw
MGU2ZWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9SRUFE
TUUudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1UaGlzIGRpcmVjdG9yeSBpcyBp
bXBvcnRlZCBmcm9tIHRoZSB0aGUgU3RyZWFtcyBBUEkgcmVwb3NpdG9yeS4KLQotVGhlcmUgaXMg
YSBwbGFuIHRvIG1vdmUgdGhlc2UgdGVzdHMgdG8gd2ViLXBsYXRmb3JtLXRlc3RzIHJlcG9zaXRv
cnkgc28gZnJvbSB0aGF0IG1vbWVudCBvbiB0aGlzIGltcG9ydGF0aW9uIHdpbGwgYmUKLWF1dG9t
YXRpYy4KLQotQ3VycmVudCB2ZXJzaW9uOiBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL3N0cmVh
bXMvdHJlZS83ZjE5MTc1NDE1ZDliNTdhZjA0Y2I4YzJjZDM1NWNhMzgxMDFmMGFhL3JlZmVyZW5j
ZS1pbXBsZW1lbnRhdGlvbi93ZWItcGxhdGZvcm0tdGVzdHMuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL2J5dGUtbGVu
Z3RoLXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0
cmF0ZWd5LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTJkOTY0
MTUwMjk5NGUzMmQ0MmViYzliZTJkN2IzNGYxNDVmNWNiNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3ktZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotCi1QQVNTIENhbiBjb25z
dHJ1Y3QgYSBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IHdpdGggYSB2YWxpZCBoaWdoIHdhdGVy
IG1hcmsgCi1QQVNTIENhbiBjb25zdHJ1Y3QgYSBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IHdp
dGggYW55IHZhbHVlIGFzIGl0cyBoaWdoIHdhdGVyIG1hcmsgCi1QQVNTIEJ5dGVMZW5ndGhRdWV1
aW5nU3RyYXRlZ3kgY29uc3RydWN0b3IgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0cmFuZ2Ug
YXJndW1lbnRzIAotUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IHNpemUgYmVoYXZlcyBh
cyBleHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRzIAotUEFTUyBCeXRlTGVuZ3RoUXVldWlu
Z1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplIHNob3VsZCB3b3JrIGdlbmVyaWNhbGx5IG9uIGl0cyB0
aGlzIGFuZCBpdHMgYXJndW1lbnRzIAotUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IGlu
c3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IHByb3BlcnRpZXMgCi1QQVNTIEJ5dGVMZW5ndGhRdWV1
aW5nU3RyYXRlZ3kncyBoaWdoV2F0ZXJNYXJrIHByb3BlcnR5IGNhbiBiZSBzZXQgdG8gYW55dGhp
bmcgCi1GQUlMIExvYWQgYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5qcyB3aXRoIFNoYXJl
ZFdvcmtlciBhc3NlcnRfdW5yZWFjaGVkOiBTaGFyZWRXb3JrZXIgaXMgdW5hdmFpbGFibGUgUmVh
Y2hlZCB1bnJlYWNoYWJsZSBjb2RlCi1GQUlMIFVudGl0bGVkIHVuZGVmaW5lZCBpcyBub3QgYW4g
b2JqZWN0IChldmFsdWF0aW5nICduYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdpc3RyYXRp
b24nKQotUEFTUyBDYW4gY29uc3RydWN0IGEgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSB3aXRo
IGEgdmFsaWQgaGlnaCB3YXRlciBtYXJrIAotUEFTUyBDYW4gY29uc3RydWN0IGEgQnl0ZUxlbmd0
aFF1ZXVpbmdTdHJhdGVneSB3aXRoIGFueSB2YWx1ZSBhcyBpdHMgaGlnaCB3YXRlciBtYXJrIAot
UEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IGNvbnN0cnVjdG9yIGJlaGF2ZXMgYXMgZXhw
ZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cyAKLVBBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJh
dGVneSBzaXplIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cyAKLVBB
U1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSBzaG91bGQgd29yayBn
ZW5lcmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cyAKLVBBU1MgQnl0ZUxlbmd0
aFF1ZXVpbmdTdHJhdGVneSBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBwcm9wZXJ0aWVzIAot
UEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5J3MgaGlnaFdhdGVyTWFyayBwcm9wZXJ0eSBj
YW4gYmUgc2V0IHRvIGFueXRoaW5nIAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL2J5dGUtbGVuZ3RoLXF1ZXVpbmct
c3RyYXRlZ3kuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy1hcGkvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxM2YxNWFjYjlmZmFiNjhhZTI4NWY1NzgyNjcxNzdiZmI3
ZTVkYjIxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvYnl0
ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Nl
cnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwv
c2NyaXB0PgotCi08c2NyaXB0IHNyYz0iYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotd29ya2VyX3Rlc3QoJ2J5dGUtbGVu
Z3RoLXF1ZXVpbmctc3RyYXRlZ3kuanMnKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9ieXRlLWxl
bmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5Lmpz
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDQwN2FmOTkxMzg4OTNiOGI1MjkyYWEy
NDgxMDA0MTYyZTcyZTVhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy1hcGkvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5qcworKysgL2Rldi9udWxsCkBAIC0x
LDEwNyArMCwwIEBACi0ndXNlIHN0cmljdCc7Ci0KLWlmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsK
LSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0K
LXRlc3QoKCkgPT4gewotCi0gIG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdh
dGVyTWFyazogNCB9KTsKLQotfSwgJ0NhbiBjb25zdHJ1Y3QgYSBCeXRlTGVuZ3RoUXVldWluZ1N0
cmF0ZWd5IHdpdGggYSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsnKTsKLQotdGVzdCgoKSA9PiB7Ci0K
LSAgZm9yIChjb25zdCBoaWdoV2F0ZXJNYXJrIG9mIFstSW5maW5pdHksIE5hTiwgJ2ZvbycsIHt9
LCAoKSA9PiB7fV0pIHsKLSAgICBjb25zdCBzdHJhdGVneSA9IG5ldyBCeXRlTGVuZ3RoUXVldWlu
Z1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyayB9KTsKLSAgICBhc3NlcnRfZXF1YWxzKHN0cmF0ZWd5
LmhpZ2hXYXRlck1hcmssIGhpZ2hXYXRlck1hcmssIGAke2hpZ2hXYXRlck1hcmt9IGdldHMgc2V0
IGNvcnJlY3RseWApOwotICB9Ci0KLX0sICdDYW4gY29uc3RydWN0IGEgQnl0ZUxlbmd0aFF1ZXVp
bmdTdHJhdGVneSB3aXRoIGFueSB2YWx1ZSBhcyBpdHMgaGlnaCB3YXRlciBtYXJrJyk7Ci0KLXRl
c3QoKCkgPT4gewotCi0gIGNvbnN0IGhpZ2hXYXRlck1hcmsgPSAxOwotICBjb25zdCBoaWdoV2F0
ZXJNYXJrT2JqZWN0R2V0dGVyID0gewotICAgIGdldCBoaWdoV2F0ZXJNYXJrKCkgeyByZXR1cm4g
aGlnaFdhdGVyTWFyazsgfQotICB9OwotICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignd293IScp
OwotICBjb25zdCBoaWdoV2F0ZXJNYXJrT2JqZWN0R2V0dGVyVGhyb3dpbmcgPSB7Ci0gICAgZ2V0
IGhpZ2hXYXRlck1hcmsoKSB7IHRocm93IGVycm9yOyB9Ci0gIH07Ci0KLSAgYXNzZXJ0X3Rocm93
cyh7IG5hbWU6ICdUeXBlRXJyb3InIH0sICgpID0+IG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0
ZWd5KCksICdjb25zdHJ1Y3Rpb24gZmFpbHMgd2l0aCB1bmRlZmluZWQnKTsKLSAgYXNzZXJ0X3Ro
cm93cyh7IG5hbWU6ICdUeXBlRXJyb3InIH0sICgpID0+IG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0
cmF0ZWd5KG51bGwpLCAnY29uc3RydWN0aW9uIGZhaWxzIHdpdGggbnVsbCcpOwotICBhc3NlcnRf
dGhyb3dzKHsgbmFtZTogJ0Vycm9yJyB9LCAoKSA9PiBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJh
dGVneShoaWdoV2F0ZXJNYXJrT2JqZWN0R2V0dGVyVGhyb3dpbmcpLAotICAgICdjb25zdHJ1Y3Rp
b24gZmFpbHMgd2l0aCBhbiBvYmplY3Qgd2l0aCBhIHRocm93aW5nIGhpZ2hXYXRlck1hcmsgZ2V0
dGVyJyk7Ci0KLSAgLy8gU2hvdWxkIG5vdCBmYWlsOgotICBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdT
dHJhdGVneSgncG90YXRvJyk7Ci0gIG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KHt9KTsK
LSAgbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koaGlnaFdhdGVyTWFya09iamVjdEdldHRl
cik7Ci0KLX0sICdCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IGNvbnN0cnVjdG9yIGJlaGF2ZXMg
YXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cycpOwotCi10ZXN0KCgpID0+IHsKLQot
ICBjb25zdCBzaXplID0gMTAyNDsKLSAgY29uc3QgY2h1bmsgPSB7IGJ5dGVMZW5ndGg6IHNpemUg
fTsKLSAgY29uc3QgY2h1bmtHZXR0ZXIgPSB7Ci0gICAgZ2V0IGJ5dGVMZW5ndGgoKSB7IHJldHVy
biBzaXplOyB9Ci0gIH07Ci0gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCd3b3chJyk7Ci0gIGNv
bnN0IGNodW5rR2V0dGVyVGhyb3dpbmcgPSB7Ci0gICAgZ2V0IGJ5dGVMZW5ndGgoKSB7IHRocm93
IGVycm9yOyB9Ci0gIH07Ci0gIGFzc2VydF90aHJvd3MoeyBuYW1lOiAnVHlwZUVycm9yJyB9LCAo
KSA9PiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKCksICdzaXplIGZh
aWxzIHdpdGggdW5kZWZpbmVkJyk7Ci0gIGFzc2VydF90aHJvd3MoeyBuYW1lOiAnVHlwZUVycm9y
JyB9LCAoKSA9PiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKG51bGwp
LCAnc2l6ZSBmYWlscyB3aXRoIG51bGwnKTsKLSAgYXNzZXJ0X2VxdWFscyhCeXRlTGVuZ3RoUXVl
dWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKCdwb3RhdG8nKSwgdW5kZWZpbmVkLAotICAgICdz
aXplIHN1Y2NlZWRzIHdpdGggdW5kZWZpbmVkIHdpdGggYSByYW5kb20gbm9uLW9iamVjdCB0eXBl
Jyk7Ci0gIGFzc2VydF9lcXVhbHMoQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUu
c2l6ZSh7fSksIHVuZGVmaW5lZCwKLSAgICAnc2l6ZSBzdWNjZWVkcyB3aXRoIHVuZGVmaW5lZCB3
aXRoIGFuIG9iamVjdCB3aXRob3V0IGh3bSBwcm9wZXJ0eScpOwotICBhc3NlcnRfZXF1YWxzKEJ5
dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoY2h1bmspLCBzaXplLAotICAg
ICdzaXplIHN1Y2NlZWRzIHdpdGggdGhlIHJpZ2h0IGFtb3VudCB3aXRoIGFuIG9iamVjdCB3aXRo
IGEgaHdtJyk7Ci0gIGFzc2VydF9lcXVhbHMoQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90
b3R5cGUuc2l6ZShjaHVua0dldHRlciksIHNpemUsCi0gICAgJ3NpemUgc3VjY2VlZHMgd2l0aCB0
aGUgcmlnaHQgYW1vdW50IHdpdGggYW4gb2JqZWN0IHdpdGggYSBod20gZ2V0dGVyJyk7Ci0gIGFz
c2VydF90aHJvd3MoeyBuYW1lOiAnRXJyb3InIH0sICgpID0+IEJ5dGVMZW5ndGhRdWV1aW5nU3Ry
YXRlZ3kucHJvdG90eXBlLnNpemUoY2h1bmtHZXR0ZXJUaHJvd2luZyksCi0gICAgJ3NpemUgZmFp
bHMgd2l0aCB0aGUgZXJyb3IgdGhyb3duIGJ5IHRoZSBnZXR0ZXInKTsKLQotfSwgJ0J5dGVMZW5n
dGhRdWV1aW5nU3RyYXRlZ3kgc2l6ZSBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBh
cmd1bWVudHMnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgdGhpc1ZhbHVlID0gbnVsbDsK
LSAgY29uc3QgcmV0dXJuVmFsdWUgPSB7ICdyZXR1cm5lZCBmcm9tJzogJ2J5dGVMZW5ndGggZ2V0
dGVyJyB9OwotICBjb25zdCBjaHVuayA9IHsKLSAgICBnZXQgYnl0ZUxlbmd0aCgpIHsgcmV0dXJu
IHJldHVyblZhbHVlOyB9Ci0gIH07Ci0KLSAgYXNzZXJ0X2VxdWFscyhCeXRlTGVuZ3RoUXVldWlu
Z1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplLmNhbGwodGhpc1ZhbHVlLCBjaHVuayksIHJldHVyblZh
bHVlKTsKLQotfSwgJ0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUgc2hv
dWxkIHdvcmsgZ2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMnKTsKLQot
dGVzdCgoKSA9PiB7Ci0KLSAgY29uc3Qgc3RyYXRlZ3kgPSBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdT
dHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSk7Ci0KLSAgYXNzZXJ0X29iamVjdF9lcXVhbHMo
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzdHJhdGVneSwgJ2hpZ2hXYXRlck1hcmsn
KSwKLSAgICB7IHZhbHVlOiA0LCB3cml0YWJsZTogdHJ1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29u
ZmlndXJhYmxlOiB0cnVlIH0sCi0gICAgJ2hpZ2hXYXRlck1hcmsgcHJvcGVydHkgc2hvdWxkIGJl
IGEgZGF0YSBwcm9wZXJ0eSB3aXRoIHRoZSB2YWx1ZSBwYXNzZWQgdGhlIGNvbnN0cnVjdG9yJyk7
Ci0gIGFzc2VydF9lcXVhbHModHlwZW9mIHN0cmF0ZWd5LnNpemUsICdmdW5jdGlvbicpOwotCi19
LCAnQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBw
cm9wZXJ0aWVzJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IHN0cmF0ZWd5ID0gbmV3IEJ5
dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0pOwotICBhc3NlcnRf
ZXF1YWxzKHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmssIDQpOwotCi0gIHN0cmF0ZWd5LmhpZ2hXYXRl
ck1hcmsgPSAxMDsKLSAgYXNzZXJ0X2VxdWFscyhzdHJhdGVneS5oaWdoV2F0ZXJNYXJrLCAxMCk7
Ci0KLSAgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayA9ICdiYW5hbmEnOwotICBhc3NlcnRfZXF1YWxz
KHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmssICdiYW5hbmEnKTsKLQotfSwgJ0J5dGVMZW5ndGhRdWV1
aW5nU3RyYXRlZ3lcJ3MgaGlnaFdhdGVyTWFyayBwcm9wZXJ0eSBjYW4gYmUgc2V0IHRvIGFueXRo
aW5nJyk7Ci0KLWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvY291bnQtcXVldWluZy1zdHJhdGVneS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMtYXBpL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhYzI3YTU1YmY3OGExZjdkNDRiNjVlNDlkNDZjNmU5ZDIyOTk5
M2VhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvY291bnQt
cXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCww
IEBACi0KLVBBU1MgQ2FuIGNvbnN0cnVjdCBhIENvdW50UXVldWluZ1N0cmF0ZWd5IHdpdGggYSB2
YWxpZCBoaWdoIHdhdGVyIG1hcmsgCi1QQVNTIENhbiBjb25zdHJ1Y3QgYSBDb3VudFF1ZXVpbmdT
dHJhdGVneSB3aXRoIGFueSB2YWx1ZSBhcyBpdHMgaGlnaCB3YXRlciBtYXJrIAotUEFTUyBDb3Vu
dFF1ZXVpbmdTdHJhdGVneSBjb25zdHJ1Y3RvciBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3Ry
YW5nZSBhcmd1bWVudHMgCi1QQVNTIENvdW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXpl
IHNob3VsZCB3b3JrIGdlbmVyaWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzIAot
UEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneSBzaXplIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBz
dHJhbmdlIGFyZ3VtZW50cyAKLVBBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3kgaW5zdGFuY2VzIGhh
dmUgdGhlIGNvcnJlY3QgcHJvcGVydGllcyAKLVBBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3kncyBo
aWdoV2F0ZXJNYXJrIHByb3BlcnR5IGNhbiBiZSBzZXQgdG8gYW55dGhpbmcgCi1GQUlMIExvYWQg
Y291bnQtcXVldWluZy1zdHJhdGVneS5qcyB3aXRoIFNoYXJlZFdvcmtlciBhc3NlcnRfdW5yZWFj
aGVkOiBTaGFyZWRXb3JrZXIgaXMgdW5hdmFpbGFibGUgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2Rl
Ci1GQUlMIFVudGl0bGVkIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdu
YXZpZ2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdpc3RyYXRpb24nKQotUEFTUyBDYW4gY29uc3Ry
dWN0IGEgQ291bnRRdWV1aW5nU3RyYXRlZ3kgd2l0aCBhIHZhbGlkIGhpZ2ggd2F0ZXIgbWFyayAK
LVBBU1MgQ2FuIGNvbnN0cnVjdCBhIENvdW50UXVldWluZ1N0cmF0ZWd5IHdpdGggYW55IHZhbHVl
IGFzIGl0cyBoaWdoIHdhdGVyIG1hcmsgCi1QQVNTIENvdW50UXVldWluZ1N0cmF0ZWd5IGNvbnN0
cnVjdG9yIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cyAKLVBBU1Mg
Q291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUgc2hvdWxkIHdvcmsgZ2VuZXJpY2Fs
bHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMgCi1QQVNTIENvdW50UXVldWluZ1N0cmF0
ZWd5IHNpemUgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRzIAotUEFT
UyBDb3VudFF1ZXVpbmdTdHJhdGVneSBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBwcm9wZXJ0
aWVzIAotUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneSdzIGhpZ2hXYXRlck1hcmsgcHJvcGVydHkg
Y2FuIGJlIHNldCB0byBhbnl0aGluZyAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9jb3VudC1xdWV1aW5nLXN0cmF0
ZWd5Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMtYXBpL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMmFmZDEyNjg4NjVjYzhhYjdlOThkNzEzYWRiOThmOTVkZWU4NTkzYy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL2NvdW50LXF1ZXVpbmct
c3RyYXRlZ3kuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9InJlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIj48L3NjcmlwdD4KLQotPHNjcmlw
dCBzcmM9ImNvdW50LXF1ZXVpbmctc3RyYXRlZ3kuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLSd1
c2Ugc3RyaWN0JzsKLXdvcmtlcl90ZXN0KCdjb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmpzJyk7Ci08
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy1hcGkvY291bnQtcXVldWluZy1zdHJhdGVneS5qcyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvY291bnQtcXVl
dWluZy1zdHJhdGVneS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWFlMDA2M2Y1
N2QwOWRkNDdmYWY2ODFlYzgwOWEwZjgzNzYzZDVjNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMtYXBpL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuanMKKysrIC9kZXYv
bnVsbApAQCAtMSwxMDYgKzAsMCBAQAotJ3VzZSBzdHJpY3QnOwotCi1pZiAoc2VsZi5pbXBvcnRT
Y3JpcHRzKSB7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cycpOwotfQotCi10ZXN0KCgpID0+IHsKLQotICBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBo
aWdoV2F0ZXJNYXJrOiA0IH0pOwotCi19LCAnQ2FuIGNvbnN0cnVjdCBhIENvdW50UXVldWluZ1N0
cmF0ZWd5IHdpdGggYSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsnKTsKLQotdGVzdCgoKSA9PiB7Ci0K
LSAgZm9yIChjb25zdCBoaWdoV2F0ZXJNYXJrIG9mIFstSW5maW5pdHksIE5hTiwgJ2ZvbycsIHt9
LCAoKSA9PiB7fV0pIHsKLSAgICBjb25zdCBzdHJhdGVneSA9IG5ldyBDb3VudFF1ZXVpbmdTdHJh
dGVneSh7IGhpZ2hXYXRlck1hcmsgfSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhzdHJhdGVneS5oaWdo
V2F0ZXJNYXJrLCBoaWdoV2F0ZXJNYXJrLCBgJHtoaWdoV2F0ZXJNYXJrfSBnZXRzIHNldCBjb3Jy
ZWN0bHlgKTsKLSAgfQotCi19LCAnQ2FuIGNvbnN0cnVjdCBhIENvdW50UXVldWluZ1N0cmF0ZWd5
IHdpdGggYW55IHZhbHVlIGFzIGl0cyBoaWdoIHdhdGVyIG1hcmsnKTsKLQotdGVzdCgoKSA9PiB7
Ci0KLSAgY29uc3QgaGlnaFdhdGVyTWFyayA9IDE7Ci0gIGNvbnN0IGhpZ2hXYXRlck1hcmtPYmpl
Y3RHZXR0ZXIgPSB7Ci0gICAgZ2V0IGhpZ2hXYXRlck1hcmsoKSB7IHJldHVybiBoaWdoV2F0ZXJN
YXJrOyB9Ci0gIH07Ci0gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCd3b3chJyk7Ci0gIGNvbnN0
IGhpZ2hXYXRlck1hcmtPYmplY3RHZXR0ZXJUaHJvd2luZyA9IHsKLSAgICBnZXQgaGlnaFdhdGVy
TWFyaygpIHsgdGhyb3cgZXJyb3I7IH0KLSAgfTsKLQotICBhc3NlcnRfdGhyb3dzKHsgbmFtZTog
J1R5cGVFcnJvcicgfSwgKCkgPT4gbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KCksICdjb25zdHJ1
Y3Rpb24gZmFpbHMgd2l0aCB1bmRlZmluZWQnKTsKLSAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICdU
eXBlRXJyb3InIH0sICgpID0+IG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneShudWxsKSwgJ2NvbnN0
cnVjdGlvbiBmYWlscyB3aXRoIG51bGwnKTsKLSAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICdFcnJv
cicgfSwgKCkgPT4gbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KGhpZ2hXYXRlck1hcmtPYmplY3RH
ZXR0ZXJUaHJvd2luZyksCi0gICAgJ2NvbnN0cnVjdGlvbiBmYWlscyB3aXRoIGFuIG9iamVjdCB3
aXRoIGEgdGhyb3dpbmcgaGlnaFdhdGVyTWFyayBnZXR0ZXInKTsKLQotICAvLyBTaG91bGQgbm90
IGZhaWw6Ci0gIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSgncG90YXRvJyk7Ci0gIG5ldyBDb3Vu
dFF1ZXVpbmdTdHJhdGVneSh7fSk7Ci0gIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneShoaWdoV2F0
ZXJNYXJrT2JqZWN0R2V0dGVyKTsKLQotfSwgJ0NvdW50UXVldWluZ1N0cmF0ZWd5IGNvbnN0cnVj
dG9yIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cycpOwotCi0KLXRl
c3QoKCkgPT4gewotCi0gIGNvbnN0IHRoaXNWYWx1ZSA9IG51bGw7Ci0gIGNvbnN0IGNodW5rID0g
ewotICAgIGdldCBieXRlTGVuZ3RoKCkgewotICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignc2hv
dWxkblwndCBiZSBjYWxsZWQnKTsKLSAgICB9Ci0gIH07Ci0KLSAgYXNzZXJ0X2VxdWFscyhDb3Vu
dFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZS5jYWxsKHRoaXNWYWx1ZSwgY2h1bmspLCAx
KTsKLQotfSwgJ0NvdW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplIHNob3VsZCB3b3Jr
IGdlbmVyaWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzJyk7Ci0KLXRlc3QoKCkg
PT4gewotCi0gIGNvbnN0IHNpemUgPSAxMDI0OwotICBjb25zdCBjaHVuayA9IHsgYnl0ZUxlbmd0
aDogc2l6ZSB9OwotICBjb25zdCBjaHVua0dldHRlciA9IHsKLSAgICBnZXQgYnl0ZUxlbmd0aCgp
IHsgcmV0dXJuIHNpemU7IH0KLSAgfTsKLSAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ3dvdyEn
KTsKLSAgY29uc3QgY2h1bmtHZXR0ZXJUaHJvd2luZyA9IHsKLSAgICBnZXQgYnl0ZUxlbmd0aCgp
IHsgdGhyb3cgZXJyb3I7IH0KLSAgfTsKLQotICBhc3NlcnRfZXF1YWxzKENvdW50UXVldWluZ1N0
cmF0ZWd5LnByb3RvdHlwZS5zaXplKCksIDEsICdzaXplIHJldHVybnMgMSB3aXRoIHVuZGVmaW5l
ZCcpOwotICBhc3NlcnRfZXF1YWxzKENvdW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXpl
KG51bGwpLCAxLCAnc2l6ZSByZXR1cm5zIDEgd2l0aCBudWxsJyk7Ci0gIGFzc2VydF9lcXVhbHMo
Q291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoJ3BvdGF0bycpLCAxLCAnc2l6ZSBy
ZXR1cm5zIDEgd2l0aCBub24tb2JqZWN0IHR5cGUnKTsKLSAgYXNzZXJ0X2VxdWFscyhDb3VudFF1
ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSh7fSksIDEsICdzaXplIHJldHVybnMgMSB3aXRo
IGVtcHR5IG9iamVjdCcpOwotICBhc3NlcnRfZXF1YWxzKENvdW50UXVldWluZ1N0cmF0ZWd5LnBy
b3RvdHlwZS5zaXplKGNodW5rKSwgMSwgJ3NpemUgcmV0dXJucyAxIHdpdGggYSBjaHVuaycpOwot
ICBhc3NlcnRfZXF1YWxzKENvdW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKGNodW5r
R2V0dGVyKSwgMSwgJ3NpemUgcmV0dXJucyAxIHdpdGggY2h1bmsgZ2V0dGVyJyk7Ci0gIGFzc2Vy
dF9lcXVhbHMoQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoY2h1bmtHZXR0ZXJU
aHJvd2luZyksIDEsCi0gICAgJ3NpemUgcmV0dXJucyAxIHdpdGggY2h1bmsgZ2V0dGVyIHRoYXQg
dGhyb3dzJyk7Ci0KLX0sICdDb3VudFF1ZXVpbmdTdHJhdGVneSBzaXplIGJlaGF2ZXMgYXMgZXhw
ZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cycpOwotCi10ZXN0KCgpID0+IHsKLQotICBjb25z
dCBzdHJhdGVneSA9IG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQg
fSk7Ci0KLSAgYXNzZXJ0X29iamVjdF9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihzdHJhdGVneSwgJ2hpZ2hXYXRlck1hcmsnKSwKLSAgICB7IHZhbHVlOiA0LCB3cml0YWJs
ZTogdHJ1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0sCi0gICAgJ2hp
Z2hXYXRlck1hcmsgcHJvcGVydHkgc2hvdWxkIGJlIGEgZGF0YSBwcm9wZXJ0eSB3aXRoIHRoZSB2
YWx1ZSBwYXNzZWQgdGhlIGNvbnN0cnVjdG9yJyk7Ci0gIGFzc2VydF9lcXVhbHModHlwZW9mIHN0
cmF0ZWd5LnNpemUsICdmdW5jdGlvbicpOwotCi19LCAnQ291bnRRdWV1aW5nU3RyYXRlZ3kgaW5z
dGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgcHJvcGVydGllcycpOwotCi10ZXN0KCgpID0+IHsKLQot
ICBjb25zdCBzdHJhdGVneSA9IG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1h
cms6IDQgfSk7Ci0gIGFzc2VydF9lcXVhbHMoc3RyYXRlZ3kuaGlnaFdhdGVyTWFyaywgNCk7Ci0K
LSAgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayA9IDEwOwotICBhc3NlcnRfZXF1YWxzKHN0cmF0ZWd5
LmhpZ2hXYXRlck1hcmssIDEwKTsKLQotICBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrID0gJ2JhbmFu
YSc7Ci0gIGFzc2VydF9lcXVhbHMoc3RyYXRlZ3kuaGlnaFdhdGVyTWFyaywgJ2JhbmFuYScpOwot
Ci19LCAnQ291bnRRdWV1aW5nU3RyYXRlZ3lcJ3MgaGlnaFdhdGVyTWFyayBwcm9wZXJ0eSBjYW4g
YmUgc2V0IHRvIGFueXRoaW5nJyk7Ci0KLWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3Ry
ZWFtcy9iYWQtc3RyYXRlZ2llcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0
cmF0ZWdpZXMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYThh
ZjM0MTI2OWEyNTQ0OTNlMTUwZGVkNzRhZGVkNDUwODJkYjYzLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2ll
cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0KLVBBU1MgUmVh
ZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5zaXplIGdldHRlciAKLVBBU1MgUmVhZGFi
bGUgc3RyZWFtOiBzdHJhdGVneS5zaXplIGVycm9ycyB0aGUgc3RyZWFtIGFuZCB0aGVuIHRocm93
cyAKLVBBU1MgUmVhZGFibGUgc3RyZWFtOiBzdHJhdGVneS5zaXplIGVycm9ycyB0aGUgc3RyZWFt
IGFuZCB0aGVuIHJldHVybnMgSW5maW5pdHkgCi1QQVNTIFJlYWRhYmxlIHN0cmVhbTogdGhyb3dp
bmcgc3RyYXRlZ3kuc2l6ZSBtZXRob2QgCi1QQVNTIFJlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcg
c3RyYXRlZ3kuaGlnaFdhdGVyTWFyayBnZXR0ZXIgCi1QQVNTIFJlYWRhYmxlIHN0cmVhbTogaW52
YWxpZCBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIAotUEFTUyBSZWFkYWJsZSBzdHJlYW06IGludmFs
aWQgc3RyYXRlZ3kuc2l6ZSByZXR1cm4gdmFsdWUgCi1GQUlMIExvYWQgYmFkLXN0cmF0ZWdpZXMu
anMgd2l0aCBTaGFyZWRXb3JrZXIgYXNzZXJ0X3VucmVhY2hlZDogU2hhcmVkV29ya2VyIGlzIHVu
YXZhaWxhYmxlIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQotRkFJTCBVbnRpdGxlZCB1bmRlZmlu
ZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIu
Z2V0UmVnaXN0cmF0aW9uJykKLVBBU1MgUmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVn
eS5zaXplIGdldHRlciAKLVBBU1MgUmVhZGFibGUgc3RyZWFtOiBzdHJhdGVneS5zaXplIGVycm9y
cyB0aGUgc3RyZWFtIGFuZCB0aGVuIHRocm93cyAKLVBBU1MgUmVhZGFibGUgc3RyZWFtOiBzdHJh
dGVneS5zaXplIGVycm9ycyB0aGUgc3RyZWFtIGFuZCB0aGVuIHJldHVybnMgSW5maW5pdHkgCi1Q
QVNTIFJlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBtZXRob2QgCi1QQVNT
IFJlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayBnZXR0ZXIg
Ci1QQVNTIFJlYWRhYmxlIHN0cmVhbTogaW52YWxpZCBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIAot
UEFTUyBSZWFkYWJsZSBzdHJlYW06IGludmFsaWQgc3RyYXRlZ3kuc2l6ZSByZXR1cm4gdmFsdWUg
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFk
YWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDRmYWI5MzEzMjM5Yjc3Yzc2NmE5MzIyYjQzNDFlZmM1M2MyNmRiZmUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2Jh
ZC1zdHJhdGVnaWVzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3JpcHQ+Ci0K
LTxzY3JpcHQgc3JjPSJiYWQtc3RyYXRlZ2llcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotJ3Vz
ZSBzdHJpY3QnOwotd29ya2VyX3Rlc3QoJ2JhZC1zdHJhdGVnaWVzLmpzJyk7Ci08L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5qcyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUt
c3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MGMwNTNhYjYyYmNmZTIxZTQyYzU1YjIwYmJjYmFhZTIyNmJhZjhiNC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0
ZWdpZXMuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxNzUgKzAsMCBAQAotJ3VzZSBzdHJpY3QnOwot
Ci1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcycpOwotfQotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCB0aGVF
cnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7Ci0KLSAgYXNzZXJ0X3Rocm93cyh0
aGVFcnJvciwgKCkgPT4gewotICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7fSwgewotICAgICAgZ2V0
IHNpemUoKSB7Ci0gICAgICAgIHRocm93IHRoZUVycm9yOwotICAgICAgfSwKLSAgICAgIGhpZ2hX
YXRlck1hcms6IDUKLSAgICB9KTsKLSAgfSwgJ2NvbnN0cnVjdGlvbiBzaG91bGQgcmUtdGhyb3cg
dGhlIGVycm9yJyk7Ci0KLX0sICdSZWFkYWJsZSBzdHJlYW06IHRocm93aW5nIHN0cmF0ZWd5LnNp
emUgZ2V0dGVyJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBjb250cm9sbGVy
RXJyb3IgPSB7IG5hbWU6ICdjb250cm9sbGVyIGVycm9yJyB9OwotICBjb25zdCB0aHJvd25FcnJv
ciA9IHsgbmFtZTogJ3Rocm93biBlcnJvcicgfTsKLQotICBsZXQgY29udHJvbGxlcjsKLSAgY29u
c3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oCi0gICAgewotICAgICAgc3RhcnQoYykgewotICAg
ICAgICBjb250cm9sbGVyID0gYzsKLSAgICAgIH0KLSAgICB9LAotICAgIHsKLSAgICAgIHNpemUo
KSB7Ci0gICAgICAgIGNvbnRyb2xsZXIuZXJyb3IoY29udHJvbGxlckVycm9yKTsKLSAgICAgICAg
dGhyb3cgdGhyb3duRXJyb3I7Ci0gICAgICB9LAotICAgICAgaGlnaFdhdGVyTWFyazogNQotICAg
IH0KLSAgKTsKLQotICBhc3NlcnRfdGhyb3dzKHRocm93bkVycm9yLCAoKSA9PiBjb250cm9sbGVy
LmVucXVldWUoJ2EnKSwgJ2VucXVldWUgc2hvdWxkIHJlLXRocm93IHRoZSBlcnJvcicpOwotCi0g
IHJldHVybiBwcm9taXNlX3JlamVjdHModCwgY29udHJvbGxlckVycm9yLCBycy5nZXRSZWFkZXIo
KS5jbG9zZWQpOwotCi19LCAnUmVhZGFibGUgc3RyZWFtOiBzdHJhdGVneS5zaXplIGVycm9ycyB0
aGUgc3RyZWFtIGFuZCB0aGVuIHRocm93cycpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAg
Y29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICdteSBlcnJvcicgfTsKLQotICBsZXQgY29udHJvbGxl
cjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oCi0gICAgewotICAgICAgc3RhcnQo
YykgewotICAgICAgICBjb250cm9sbGVyID0gYzsKLSAgICAgIH0KLSAgICB9LAotICAgIHsKLSAg
ICAgIHNpemUoKSB7Ci0gICAgICAgIGNvbnRyb2xsZXIuZXJyb3IodGhlRXJyb3IpOwotICAgICAg
ICByZXR1cm4gSW5maW5pdHk7Ci0gICAgICB9LAotICAgICAgaGlnaFdhdGVyTWFyazogNQotICAg
IH0KLSAgKTsKLQotICBhc3NlcnRfdGhyb3dzKG5ldyBSYW5nZUVycm9yKCksICgpID0+IGNvbnRy
b2xsZXIuZW5xdWV1ZSgnYScpLCAnZW5xdWV1ZSBzaG91bGQgdGhyb3cgYSBSYW5nZUVycm9yJyk7
Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcnMuZ2V0UmVhZGVyKCku
Y2xvc2VkLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKLQotfSwgJ1Jl
YWRhYmxlIHN0cmVhbTogc3RyYXRlZ3kuc2l6ZSBlcnJvcnMgdGhlIHN0cmVhbSBhbmQgdGhlbiBy
ZXR1cm5zIEluZmluaXR5Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgdGhl
RXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwotICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSgKLSAgICB7Ci0gICAgICBzdGFydChjKSB7Ci0gICAgICAgIGFzc2VydF90
aHJvd3ModGhlRXJyb3IsICgpID0+IGMuZW5xdWV1ZSgnYScpLCAnZW5xdWV1ZSBzaG91bGQgdGhy
b3cgdGhlIGVycm9yJyk7Ci0gICAgICB9Ci0gICAgfSwKLSAgICB7Ci0gICAgICBzaXplKCkgewot
ICAgICAgICB0aHJvdyB0aGVFcnJvcjsKLSAgICAgIH0sCi0gICAgICBoaWdoV2F0ZXJNYXJrOiA1
Ci0gICAgfQotICApOwotCi0gIHJldHVybiBycy5nZXRSZWFkZXIoKS5jbG9zZWQuY2F0Y2goZSA9
PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0
IHdpdGggdGhlIGVycm9yJyk7Ci0gIH0pOwotCi19LCAnUmVhZGFibGUgc3RyZWFtOiB0aHJvd2lu
ZyBzdHJhdGVneS5zaXplIG1ldGhvZCcpOwotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCB0aGVF
cnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7Ci0KLSAgYXNzZXJ0X3Rocm93cyh0
aGVFcnJvciwgKCkgPT4gewotICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7fSwgewotICAgICAgc2l6
ZSgpIHsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgICB9LAotICAgICAgZ2V0IGhpZ2hXYXRlck1h
cmsoKSB7Ci0gICAgICAgIHRocm93IHRoZUVycm9yOwotICAgICAgfQotICAgIH0pOwotICB9LCAn
Y29uc3RydWN0aW9uIHNob3VsZCByZS10aHJvdyB0aGUgZXJyb3InKTsKLQotfSwgJ1JlYWRhYmxl
IHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayBnZXR0ZXInKTsKLQotdGVz
dCgoKSA9PiB7Ci0KLSAgZm9yIChjb25zdCBoaWdoV2F0ZXJNYXJrIG9mIFstMSwgLUluZmluaXR5
XSkgewotICAgIGFzc2VydF90aHJvd3MobmV3IFJhbmdlRXJyb3IoKSwgKCkgPT4gewotICAgICAg
bmV3IFJlYWRhYmxlU3RyZWFtKHt9LCB7Ci0gICAgICAgIHNpemUoKSB7Ci0gICAgICAgICAgcmV0
dXJuIDE7Ci0gICAgICAgIH0sCi0gICAgICAgIGhpZ2hXYXRlck1hcmsKLSAgICAgIH0pOwotICAg
IH0sICdjb25zdHJ1Y3Rpb24gc2hvdWxkIHRocm93IGEgUmFuZ2VFcnJvciBmb3IgJyArIGhpZ2hX
YXRlck1hcmspOwotICB9Ci0KLSAgZm9yIChjb25zdCBoaWdoV2F0ZXJNYXJrIG9mIFtOYU4sICdm
b28nLCB7fV0pIHsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gewot
ICAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHt9LCB7Ci0gICAgICAgIHNpemUoKSB7Ci0gICAgICAg
ICAgcmV0dXJuIDE7Ci0gICAgICAgIH0sCi0gICAgICAgIGhpZ2hXYXRlck1hcmsKLSAgICAgIH0p
OwotICAgIH0sICdjb25zdHJ1Y3Rpb24gc2hvdWxkIHRocm93IGEgVHlwZUVycm9yIGZvciAnICsg
aGlnaFdhdGVyTWFyayk7Ci0gIH0KLQotfSwgJ1JlYWRhYmxlIHN0cmVhbTogaW52YWxpZCBzdHJh
dGVneS5oaWdoV2F0ZXJNYXJrJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3Qg
cHJvbWlzZXMgPSBbXTsKLSAgZm9yIChjb25zdCBzaXplIG9mIFtOYU4sIC1JbmZpbml0eSwgSW5m
aW5pdHksIC0xXSkgewotICAgIGxldCB0aGVFcnJvcjsKLSAgICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSgKLSAgICAgIHsKLSAgICAgICAgc3RhcnQoYykgewotICAgICAgICAgIHRyeSB7
Ci0gICAgICAgICAgICBjLmVucXVldWUoJ2hpJyk7Ci0gICAgICAgICAgICBhc3NlcnRfdW5yZWFj
aGVkKCdlbnF1ZXVlIGRpZG5cJ3QgdGhyb3cnKTsKLSAgICAgICAgICB9IGNhdGNoIChlcnJvcikg
ewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhlcnJvci5uYW1lLCAnUmFuZ2VFcnJvcicsICdl
bnF1ZXVlIHNob3VsZCB0aHJvdyBhIFJhbmdlRXJyb3IgZm9yICcgKyBzaXplKTsKLSAgICAgICAg
ICAgIHRoZUVycm9yID0gZXJyb3I7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9LAot
ICAgICAgewotICAgICAgICBzaXplKCkgewotICAgICAgICAgIHJldHVybiBzaXplOwotICAgICAg
ICB9LAotICAgICAgICBoaWdoV2F0ZXJNYXJrOiA1Ci0gICAgICB9Ci0gICAgKTsKLQotICAgIHBy
b21pc2VzLnB1c2gocnMuZ2V0UmVhZGVyKCkuY2xvc2VkLmNhdGNoKGUgPT4gewotICAgICAgYXNz
ZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVy
cm9yIGZvciAnICsgc2l6ZSk7Ci0gICAgfSkpOwotICB9Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxs
KHByb21pc2VzKTsKLQotfSwgJ1JlYWRhYmxlIHN0cmVhbTogaW52YWxpZCBzdHJhdGVneS5zaXpl
IHJldHVybiB2YWx1ZScpOwotCi1kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMv
YmFkLXVuZGVybHlpbmctc291cmNlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFk
LXVuZGVybHlpbmctc291cmNlcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDI5Y2ZjYTViNzYwYzQxMTk0MTUxZTc4NjJmODRkNWE3YjA2ZDE1ZjIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2Jh
ZC11bmRlcmx5aW5nLXNvdXJjZXMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNDYg
KzAsMCBAQAotCi1QQVNTIFVuZGVybHlpbmcgc291cmNlIHN0YXJ0OiB0aHJvd2luZyBnZXR0ZXIg
Ci1QQVNTIFVuZGVybHlpbmcgc291cmNlIHN0YXJ0OiB0aHJvd2luZyBtZXRob2QgCi1QQVNTIFVu
ZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIGdldHRlciAoaW5pdGlhbCBwdWxsKSAKLVBB
U1MgVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgbWV0aG9kIChpbml0aWFsIHB1bGwp
IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBwdWxsOiB0aHJvd2luZyBnZXR0ZXIgKHNlY29uZCBw
dWxsKSAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2UgcHVsbDogdGhyb3dpbmcgbWV0aG9kIChzZWNv
bmQgcHVsbCkgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlIGNhbmNlbDogdGhyb3dpbmcgZ2V0dGVy
IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBjYW5jZWw6IHRocm93aW5nIG1ldGhvZCAKLVBBU1Mg
VW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBlbXB0eSBjYW5jZWxlZCBz
dHJlYW0gc2hvdWxkIG5vdCB0aHJvdyAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcg
ZW5xdWV1ZSBvbiBhIG5vbi1lbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdyAK
LVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhIGNsb3NlZCBzdHJl
YW0gc2hvdWxkIHRocm93IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVl
IG9uIGFuIGVycm9yZWQgc3RyZWFtIHNob3VsZCB0aHJvdyAKLVBBU1MgVW5kZXJseWluZyBzb3Vy
Y2U6IGNhbGxpbmcgY2xvc2UgdHdpY2Ugb24gYW4gZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0
aGUgc2Vjb25kIHRpbWUgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3
aWNlIG9uIGEgbm9uLWVtcHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lIAot
UEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBvbiBhbiBlbXB0eSBjYW5jZWxl
ZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdyAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxp
bmcgY2xvc2Ugb24gYSBub24tZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cg
Ci1QQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIGFmdGVyIGVycm9yIHNob3Vs
ZCB0aHJvdyAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgdHdpY2Ugc2hv
dWxkIHRocm93IHRoZSBzZWNvbmQgdGltZSAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxp
bmcgZXJyb3IgYWZ0ZXIgY2xvc2Ugc2hvdWxkIHRocm93IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJj
ZTogY2FsbGluZyBlcnJvciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHN0
YXJ0IHNob3VsZCBjYXVzZSB0aGUgc3RyZWFtIHRvIGVycm9yIHdpdGggdGhlIGZpcnN0IGVycm9y
IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhbmQgcmV0dXJuaW5nIGEg
cmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHB1bGwgc2hvdWxkIGNhdXNlIHRoZSBzdHJlYW0gdG8gZXJy
b3Igd2l0aCB0aGUgZmlyc3QgZXJyb3IgCi1GQUlMIExvYWQgYmFkLXVuZGVybHlpbmctc291cmNl
cy5qcyB3aXRoIFNoYXJlZFdvcmtlciBhc3NlcnRfdW5yZWFjaGVkOiBTaGFyZWRXb3JrZXIgaXMg
dW5hdmFpbGFibGUgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCi1GQUlMIFVudGl0bGVkIHVuZGVm
aW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICduYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5nZXRSZWdpc3RyYXRpb24nKQotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dp
bmcgZ2V0dGVyIAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dpbmcgbWV0aG9k
IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBnZXR0ZXIgKGluaXRpYWwg
cHVsbCkgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIG1ldGhvZCAoaW5p
dGlhbCBwdWxsKSAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2UgcHVsbDogdGhyb3dpbmcgZ2V0dGVy
IChzZWNvbmQgcHVsbCkgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlIHB1bGw6IHRocm93aW5nIG1l
dGhvZCAoc2Vjb25kIHB1bGwpIAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBjYW5jZWw6IHRocm93
aW5nIGdldHRlciAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2UgY2FuY2VsOiB0aHJvd2luZyBtZXRo
b2QgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYW4gZW1wdHkg
Y2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cgCi1QQVNTIFVuZGVybHlpbmcgc291cmNl
OiBjYWxsaW5nIGVucXVldWUgb24gYSBub24tZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBu
b3QgdGhyb3cgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYSBj
bG9zZWQgc3RyZWFtIHNob3VsZCB0aHJvdyAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxp
bmcgZW5xdWV1ZSBvbiBhbiBlcnJvcmVkIHN0cmVhbSBzaG91bGQgdGhyb3cgCi1QQVNTIFVuZGVy
bHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGFuIGVtcHR5IHN0cmVhbSBzaG91
bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lIAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGlu
ZyBjbG9zZSB0d2ljZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNv
bmQgdGltZSAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24gYW4gZW1w
dHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cgCi1QQVNTIFVuZGVybHlpbmcgc291
cmNlOiBjYWxsaW5nIGNsb3NlIG9uIGEgbm9uLWVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQg
bm90IHRocm93IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBhZnRlciBl
cnJvciBzaG91bGQgdGhyb3cgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9y
IHR3aWNlIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUgCi1QQVNTIFVuZGVybHlpbmcgc291
cmNlOiBjYWxsaW5nIGVycm9yIGFmdGVyIGNsb3NlIHNob3VsZCB0aHJvdyAKLVBBU1MgVW5kZXJs
eWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYW5kIHJldHVybmluZyBhIHJlamVjdGVkIHByb21p
c2UgZnJvbSBzdGFydCBzaG91bGQgY2F1c2UgdGhlIHN0cmVhbSB0byBlcnJvciB3aXRoIHRoZSBm
aXJzdCBlcnJvciAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYW5kIHJl
dHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgZnJvbSBwdWxsIHNob3VsZCBjYXVzZSB0aGUgc3Ry
ZWFtIHRvIGVycm9yIHdpdGggdGhlIGZpcnN0IGVycm9yIAotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxl
LXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2Jh
ZC11bmRlcmx5aW5nLXNvdXJjZXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZWNiMTFmZWFiMTJjNDc2YzQ3MWZkMmRjNWRiZmIzMGQ5ZDdkZmI1Ni4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVy
bHlpbmctc291cmNlcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwvc2NyaXB0Pgot
Ci08c2NyaXB0IHNyYz0iYmFkLXVuZGVybHlpbmctc291cmNlcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0PgotJ3VzZSBzdHJpY3QnOwotd29ya2VyX3Rlc3QoJ2JhZC11bmRlcmx5aW5nLXNvdXJjZXMu
anMnKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5
aW5nLXNvdXJjZXMuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5q
cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJmZDBmZGM5Mjk5ZDVkNWRlNGY1NjI4
ZGQxOWQ1OWZkMjkzMDBkYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5qcworKysgL2Rl
di9udWxsCkBAIC0xLDM4MyArMCwwIEBACi0ndXNlIHN0cmljdCc7Ci0KLWlmIChzZWxmLmltcG9y
dFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzJyk7Ci19Ci0KLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJy
b3IoJ2EgdW5pcXVlIHN0cmluZycpOwotCi0gIGFzc2VydF90aHJvd3ModGhlRXJyb3IsICgpID0+
IHsKLSAgICBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgZ2V0IHN0YXJ0KCkgewotICAgICAg
ICB0aHJvdyB0aGVFcnJvcjsKLSAgICAgIH0KLSAgICB9KTsKLSAgfSwgJ2NvbnN0cnVjdGluZyB0
aGUgc3RyZWFtIHNob3VsZCByZS10aHJvdyB0aGUgZXJyb3InKTsKLQotfSwgJ1VuZGVybHlpbmcg
c291cmNlIHN0YXJ0OiB0aHJvd2luZyBnZXR0ZXInKTsKLQotCi10ZXN0KCgpID0+IHsKLQotICBj
b25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7Ci0KLSAgYXNzZXJ0
X3Rocm93cyh0aGVFcnJvciwgKCkgPT4gewotICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAg
ICBzdGFydCgpIHsKLSAgICAgICAgdGhyb3cgdGhlRXJyb3I7Ci0gICAgICB9Ci0gICAgfSk7Ci0g
IH0sICdjb25zdHJ1Y3RpbmcgdGhlIHN0cmVhbSBzaG91bGQgcmUtdGhyb3cgdGhlIGVycm9yJyk7
Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dpbmcgbWV0aG9kJyk7Ci0KLQot
cHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVu
aXF1ZSBzdHJpbmcnKTsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIGdl
dCBwdWxsKCkgewotICAgICAgdGhyb3cgdGhlRXJyb3I7Ci0gICAgfQotICB9KTsKLQotICByZXR1
cm4gcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCBycy5nZXRSZWFkZXIoKS5jbG9zZWQpOwot
Ci19LCAnVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgZ2V0dGVyIChpbml0aWFsIHB1
bGwpJyk7Ci0KLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHRoZUVycm9yID0gbmV3
IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oewotICAgIHB1bGwoKSB7Ci0gICAgICB0aHJvdyB0aGVFcnJvcjsKLSAgICB9Ci0gIH0pOwot
Ci0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJzLmdldFJlYWRlcigpLmNs
b3NlZCk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBtZXRob2QgKGlu
aXRpYWwgcHVsbCknKTsKLQotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgdGhlRXJy
b3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwotCi0gIGxldCBjb3VudGVyID0gMDsK
LSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIGdldCBwdWxsKCkgewotICAg
ICAgKytjb3VudGVyOwotICAgICAgaWYgKGNvdW50ZXIgPT09IDEpIHsKLSAgICAgICAgcmV0dXJu
IGMgPT4gYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICB9Ci0KLSAgICAgIHRocm93IHRoZUVycm9yOwot
ICAgIH0KLSAgfSk7Ci0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gIHJldHVy
biBQcm9taXNlLmFsbChbCi0gICAgcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4gewotICAgICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAndGhlIGNo
dW5rIHJlYWQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLSAgICB9KSwKLSAgICBwcm9taXNlX3JlamVj
dHModCwgdGhlRXJyb3IsIHJlYWRlci5jbG9zZWQpCi0gIF0pOwotCi19LCAnVW5kZXJseWluZyBz
b3VyY2UgcHVsbDogdGhyb3dpbmcgZ2V0dGVyIChzZWNvbmQgcHVsbCknKTsKLQotCi1wcm9taXNl
X3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0
cmluZycpOwotCi0gIGxldCBjb3VudGVyID0gMDsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oewotICAgIHB1bGwoYykgewotICAgICAgKytjb3VudGVyOwotICAgICAgaWYgKGNvdW50
ZXIgPT09IDEpIHsKLSAgICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICAgIH0KLQotICAgICAgdGhyb3cgdGhlRXJyb3I7Ci0gICAgfQotICB9KTsKLSAgY29uc3QgcmVh
ZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICByZWFk
ZXIucmVhZCgpLnRoZW4ociA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZh
bHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICd0aGUgY2h1bmsgcmVhZCBzaG91bGQgYmUgY29ycmVj
dCcpOwotICAgIH0pLAotICAgIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcmVhZGVyLmNs
b3NlZCkKLSAgXSk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZSBwdWxsOiB0aHJvd2luZyBtZXRo
b2QgKHNlY29uZCBwdWxsKScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgdGhl
RXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwotICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7Ci0gICAgZ2V0IGNhbmNlbCgpIHsKLSAgICAgIHRocm93IHRoZUVycm9y
OwotICAgIH0KLSAgfSk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwg
cnMuY2FuY2VsKCkpOwotCi19LCAnVW5kZXJseWluZyBzb3VyY2UgY2FuY2VsOiB0aHJvd2luZyBn
ZXR0ZXInKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHRoZUVycm9yID0gbmV3
IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oewotICAgIGNhbmNlbCgpIHsKLSAgICAgIHRocm93IHRoZUVycm9yOwotICAgIH0KLSAgfSk7
Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcnMuY2FuY2VsKCkpOwot
Ci19LCAnVW5kZXJseWluZyBzb3VyY2UgY2FuY2VsOiB0aHJvd2luZyBtZXRob2QnKTsKLQotcHJv
bWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwot
ICAgIH0KLSAgfSk7Ci0KLSAgcnMuY2FuY2VsKCk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScp
OyAvLyBDYWxsaW5nIGVucXVldWUgYWZ0ZXIgY2FuY2VsaW5nIHNob3VsZCBub3QgdGhyb3cgYW55
dGhpbmcuCi0KLSAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZDsKLQotfSwgJ1VuZGVybHlp
bmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYW4gZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNo
b3VsZCBub3QgdGhyb3cnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgY29udHJv
bGxlcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsK
LSAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgICAgYy5lbnF1ZXVlKCdiJyk7Ci0gICAgICBjb250
cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0pOwotCi0gIHJzLmNhbmNlbCgpOwotICBjb250cm9sbGVy
LmVucXVldWUoJ2MnKTsgLy8gQ2FsbGluZyBlbnF1ZXVlIGFmdGVyIGNhbmNlbGluZyBzaG91bGQg
bm90IHRocm93IGFueXRoaW5nLgotCi0gIHJldHVybiBycy5nZXRSZWFkZXIoKS5jbG9zZWQ7Ci0K
LX0sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGEgbm9uLWVtcHR5IGNh
bmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7
Ci0KLSAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAg
Yy5jbG9zZSgpOwotICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGMu
ZW5xdWV1ZSgnYScpLCAnY2FsbCB0byBlbnF1ZXVlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicp
OwotICAgIH0KLSAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOwotCi19LCAnVW5kZXJseWluZyBzb3Vy
Y2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhIGNsb3NlZCBzdHJlYW0gc2hvdWxkIHRocm93Jyk7Ci0K
LXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYm9v
Jyk7Ci0gIGNvbnN0IGNsb3NlZCA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykg
ewotICAgICAgYy5lcnJvcih0aGVFcnJvcik7Ci0gICAgICBhc3NlcnRfdGhyb3dzKHRoZUVycm9y
LCAoKSA9PiBjLmVucXVldWUoJ2EnKSwgJ2NhbGwgdG8gZW5xdWV1ZSBzaG91bGQgdGhyb3cgdGhl
IGVycm9yJyk7Ci0gICAgfQotICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7Ci0KLSAgcmV0dXJuIHBy
b21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgY2xvc2VkKTsKLQotfSwgJ1VuZGVybHlpbmcgc291
cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYW4gZXJyb3JlZCBzdHJlYW0gc2hvdWxkIHRocm93Jyk7
Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7
Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5jbG9zZSgpOwotICAgICAgYXNzZXJ0X3Rocm93cyhu
ZXcgVHlwZUVycm9yKCksICgpID0+IGMuY2xvc2UoKSwgJ3NlY29uZCBjYWxsIHRvIGNsb3NlIHNo
b3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwotICAgIH0KLSAgfSkuZ2V0UmVhZGVyKCkuY2xvc2Vk
OwotCi19LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgdHdpY2Ugb24gYW4gZW1w
dHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUnKTsKLQotcHJvbWlzZV90ZXN0
KCgpID0+IHsKLQotICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKLSAgbGV0IHJlYWRDYWxsZWQg
PSBmYWxzZTsKLSAgY29uc3QgcmVhZGVyID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFy
dChjKSB7Ci0gICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICAgIGMuY2xvc2UoKTsKLSAgICAgIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjLmNsb3NlKCksICdzZWNvbmQgY2Fs
bCB0byBjbG9zZSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKLSAgICAgIHN0YXJ0Q2FsbGVk
ID0gdHJ1ZTsKLSAgICB9Ci0gIH0pLmdldFJlYWRlcigpOwotCi0gIHJldHVybiBQcm9taXNlLmFs
bChbCi0gICAgcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9l
cXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAncmVhZCgpIHNob3VsZCByZWFk
IHRoZSBlbnF1ZXVlZCBjaHVuaycpOwotICAgICAgcmVhZENhbGxlZCA9IHRydWU7Ci0gICAgfSks
Ci0gICAgcmVhZGVyLmNsb3NlZC50aGVuKCgpID0+IHsKLSAgICAgIGFzc2VydF90cnVlKHN0YXJ0
Q2FsbGVkKTsKLSAgICAgIGFzc2VydF90cnVlKHJlYWRDYWxsZWQpOwotICAgIH0pCi0gIF0pOwot
Ci19LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgdHdpY2Ugb24gYSBub24tZW1w
dHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUnKTsKLQotcHJvbWlzZV90ZXN0
KCgpID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsKLSAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7
Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAg
ICBjb250cm9sbGVyID0gYzsKLSAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKLSAgICB9Ci0gIH0p
OwotCi0gIHJzLmNhbmNlbCgpOwotICBjb250cm9sbGVyLmNsb3NlKCk7IC8vIENhbGxpbmcgY2xv
c2UgYWZ0ZXIgY2FuY2VsaW5nIHNob3VsZCBub3QgdGhyb3cgYW55dGhpbmcuCi0KLSAgcmV0dXJu
IHJzLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfdHJ1ZShzdGFy
dENhbGxlZCk7Ci0gIH0pOwotCi19LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ug
b24gYW4gZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cnKTsKLQotcHJvbWlz
ZV90ZXN0KCgpID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsKLSAgbGV0IHN0YXJ0Q2FsbGVkID0g
ZmFsc2U7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7
Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgICAgc3Rh
cnRDYWxsZWQgPSB0cnVlOwotICAgIH0KLSAgfSk7Ci0KLSAgcnMuY2FuY2VsKCk7Ci0gIGNvbnRy
b2xsZXIuY2xvc2UoKTsgLy8gQ2FsbGluZyBjbG9zZSBhZnRlciBjYW5jZWxpbmcgc2hvdWxkIG5v
dCB0aHJvdyBhbnl0aGluZy4KLQotICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4o
KCkgPT4gewotICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKLSAgfSk7Ci0KLX0sICdVbmRl
cmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBvbiBhIG5vbi1lbXB0eSBjYW5jZWxlZCBzdHJl
YW0gc2hvdWxkIG5vdCB0aHJvdycpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0
IHRoZUVycm9yID0gbmV3IEVycm9yKCdib28nKTsKLSAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7
Ci0KLSAgY29uc3QgY2xvc2VkID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7
Ci0gICAgICBjLmVycm9yKHRoZUVycm9yKTsKLSAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVF
cnJvcigpLCAoKSA9PiBjLmNsb3NlKCksICdjYWxsIHRvIGNsb3NlIHNob3VsZCB0aHJvdyBhIFR5
cGVFcnJvcicpOwotICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOwotICAgIH0KLSAgfSkuZ2V0UmVh
ZGVyKCkuY2xvc2VkOwotCi0gIHJldHVybiBjbG9zZWQuY2F0Y2goZSA9PiB7Ci0gICAgYXNzZXJ0
X3RydWUoc3RhcnRDYWxsZWQpOwotICAgIGFzc2VydF9lcXVhbHMoZSwgdGhlRXJyb3IsICdjbG9z
ZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOwotICB9KTsKLQotfSwgJ1VuZGVybHlp
bmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIGFmdGVyIGVycm9yIHNob3VsZCB0aHJvdycpOwotCi1w
cm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdib28n
KTsKLSAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7Ci0KLSAgY29uc3QgY2xvc2VkID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVycm9yKHRoZUVycm9yKTsK
LSAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjLmVycm9yKCksICdz
ZWNvbmQgY2FsbCB0byBlcnJvciBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKLSAgICAgIHN0
YXJ0Q2FsbGVkID0gdHJ1ZTsKLSAgICB9Ci0gIH0pLmdldFJlYWRlcigpLmNsb3NlZDsKLQotICBy
ZXR1cm4gY2xvc2VkLmNhdGNoKGUgPT4gewotICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsK
LSAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0
aCB0aGUgZXJyb3InKTsKLSAgfSk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBl
cnJvciB0d2ljZSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lJyk7Ci0KLXByb21pc2VfdGVz
dCgoKSA9PiB7Ci0KLSAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7Ci0KLSAgY29uc3QgY2xvc2Vk
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmNsb3NlKCk7
Ci0gICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gYy5lcnJvcigpLCAn
c2Vjb25kIGNhbGwgdG8gZXJyb3Igc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7Ci0gICAgICBz
dGFydENhbGxlZCA9IHRydWU7Ci0gICAgfQotICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7Ci0KLSAg
cmV0dXJuIGNsb3NlZC50aGVuKCgpID0+IGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKSk7Ci0KLX0s
ICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhZnRlciBjbG9zZSBzaG91bGQgdGhy
b3cnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxz
ZTsKLSAgY29uc3QgZmlyc3RFcnJvciA9IG5ldyBFcnJvcignMScpOwotICBjb25zdCBzZWNvbmRF
cnJvciA9IG5ldyBFcnJvcignMicpOwotCi0gIGNvbnN0IGNsb3NlZCA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lcnJvcihmaXJzdEVycm9yKTsKLSAgICAg
IHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKLSAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChzZWNvbmRF
cnJvcik7Ci0gICAgfQotICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7Ci0KLSAgcmV0dXJuIGNsb3Nl
ZC5jYXRjaChlID0+IHsKLSAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7Ci0gICAgYXNzZXJ0
X2VxdWFscyhlLCBmaXJzdEVycm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZmly
c3QgZXJyb3InKTsKLSAgfSk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJv
ciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHN0YXJ0IHNob3VsZCBjYXVz
ZSB0aGUgc3RyZWFtIHRvIGVycm9yICcgKwotICAgJ3dpdGggdGhlIGZpcnN0IGVycm9yJyk7Ci0K
LXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7Ci0gIGNv
bnN0IGZpcnN0RXJyb3IgPSBuZXcgRXJyb3IoJzEnKTsKLSAgY29uc3Qgc2Vjb25kRXJyb3IgPSBu
ZXcgRXJyb3IoJzInKTsKLQotICBjb25zdCBjbG9zZWQgPSBuZXcgUmVhZGFibGVTdHJlYW0oewot
ICAgIHB1bGwoYykgewotICAgICAgYy5lcnJvcihmaXJzdEVycm9yKTsKLSAgICAgIHN0YXJ0Q2Fs
bGVkID0gdHJ1ZTsKLSAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChzZWNvbmRFcnJvcik7Ci0g
ICAgfQotICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7Ci0KLSAgcmV0dXJuIGNsb3NlZC5jYXRjaChl
ID0+IHsKLSAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhl
LCBmaXJzdEVycm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZmlyc3QgZXJyb3In
KTsKLSAgfSk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhbmQgcmV0
dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHB1bGwgc2hvdWxkIGNhdXNlIHRoZSBzdHJl
YW0gdG8gZXJyb3IgJyArCi0gICAnd2l0aCB0aGUgZmlyc3QgZXJyb3InKTsKLQotZG9uZSgpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3Jl
YWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNjc2ZTA2ODZhZmNhZWJjOTNmMmU0ODFlMGYxNTgyOTdmNTM3MTExYy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0
cmVhbXMvYnJhbmQtY2hlY2tzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICsw
LDAgQEAKLQotUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3Rv
ciBpbmRpcmVjdGx5IAotUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIg
Y29uc3RydWN0b3IgaW5kaXJlY3RseSAKLVBBU1MgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmNh
bmNlbCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5
cGUuZ2V0UmVhZGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
LnByb3RvdHlwZS50ZWUgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJl
YW1SZWFkZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjayBvbiBpdHMgYXJndW1lbnQgCi1QQVNTIFJl
YWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5jbG9zZWQgZW5mb3JjZXMgYSBicmFuZCBjaGVj
ayAKLVBBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBh
IGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVhZCBl
bmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5
cGUucmVsZWFzZUxvY2sgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJl
YW1Db250cm9sbGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50IAotUEFT
UyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgY2FuJ3QgYmUgZ2l2ZW4gYSBmdWxseS1jb25zdHJ1
Y3RlZCBSZWFkYWJsZVN0cmVhbSAKLVBBU1MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3Rv
dHlwZS5jbG9zZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXIucHJvdG90eXBlLmVucXVldWUgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1Mg
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5lcnJvciBlbmZvcmNlcyBhIGJyYW5k
IGNoZWNrIAotRkFJTCBMb2FkIGJyYW5kLWNoZWNrcy5qcyB3aXRoIFNoYXJlZFdvcmtlciBhc3Nl
cnRfdW5yZWFjaGVkOiBTaGFyZWRXb3JrZXIgaXMgdW5hdmFpbGFibGUgUmVhY2hlZCB1bnJlYWNo
YWJsZSBjb2RlCi1GQUlMIFVudGl0bGVkIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFs
dWF0aW5nICduYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdpc3RyYXRpb24nKQotUEFTUyBD
YW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5IAot
UEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgY29uc3RydWN0b3IgaW5k
aXJlY3RseSAKLVBBU1MgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBh
IGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuZ2V0UmVhZGVyIGVu
Zm9yY2VzIGEgYnJhbmQgY2hlY2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS50ZWUg
ZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIgZW5mb3Jj
ZXMgYSBicmFuZCBjaGVjayBvbiBpdHMgYXJndW1lbnQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtUmVh
ZGVyLnByb3RvdHlwZS5jbG9zZWQgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFi
bGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAot
UEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVhZCBlbmZvcmNlcyBhIGJyYW5k
IGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVsZWFzZUxvY2sg
ZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIGVu
Zm9yY2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50IAotUEFTUyBSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXIgY2FuJ3QgYmUgZ2l2ZW4gYSBmdWxseS1jb25zdHJ1Y3RlZCBSZWFkYWJsZVN0
cmVhbSAKLVBBU1MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5jbG9zZSBlbmZv
cmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90
eXBlLmVucXVldWUgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyLnByb3RvdHlwZS5lcnJvciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVh
bXMvYnJhbmQtY2hlY2tzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkZmVk
MTIzZDc2ZGI4N2Y3YjMyMDE5Y2MxNjNiMzM0MmYxYTJkOGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
cnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImJyYW5k
LWNoZWNrcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotd29ya2VyX3Rl
c3QoJ2JyYW5kLWNoZWNrcy5qcycpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0
cmVhbXMvYnJhbmQtY2hlY2tzLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5qcwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzI1NTNjZjkyZjUyZmQ2ZGMwZTcyM2JhZjZm
NzNkNzNlZWI4ZjVmMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMt
YXBpL3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmpzCisrKyAvZGV2L251bGwKQEAgLTEs
MTUxICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgewot
ICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzJyk7Ci0gIHNl
bGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOwotfQotCi1sZXQg
UmVhZGFibGVTdHJlYW1SZWFkZXI7Ci1sZXQgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyOwotCi10
ZXN0KCgpID0+IHsKLQotICAvLyBJdCdzIG5vdCBleHBvc2VkIGdsb2JhbGx5LCBidXQgd2UgdGVz
dCBhIGZldyBvZiBpdHMgcHJvcGVydGllcyBoZXJlLgotICBSZWFkYWJsZVN0cmVhbVJlYWRlciA9
IChuZXcgUmVhZGFibGVTdHJlYW0oKSkuZ2V0UmVhZGVyKCkuY29uc3RydWN0b3I7Ci0KLX0sICdD
YW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5Jyk7
Ci0KLXRlc3QoKCkgPT4gewotCi0gIC8vIEl0J3Mgbm90IGV4cG9zZWQgZ2xvYmFsbHksIGJ1dCB3
ZSB0ZXN0IGEgZmV3IG9mIGl0cyBwcm9wZXJ0aWVzIGhlcmUuCi0gIG5ldyBSZWFkYWJsZVN0cmVh
bSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyID0gYy5j
b25zdHJ1Y3RvcjsKLSAgICB9Ci0gIH0pOwotCi19LCAnQ2FuIGdldCB0aGUgUmVhZGFibGVTdHJl
YW1Db250cm9sbGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0bHknKTsKLQotZnVuY3Rpb24gZmFrZVJl
YWRhYmxlU3RyZWFtKCkgewotICByZXR1cm4gewotICAgIGNhbmNlbCgpIHsgcmV0dXJuIFByb21p
c2UucmVzb2x2ZSgpOyB9LAotICAgIGdldFJlYWRlcigpIHsgcmV0dXJuIG5ldyBSZWFkYWJsZVN0
cmVhbVJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0oKSk7IH0sCi0gICAgcGlwZVRocm91Z2gob2Jq
KSB7IHJldHVybiBvYmoucmVhZGFibGU7IH0sCi0gICAgcGlwZVRvKCkgeyByZXR1cm4gUHJvbWlz
ZS5yZXNvbHZlKCk7IH0sCi0gICAgdGVlKCkgeyByZXR1cm4gW3JlYWxSZWFkYWJsZVN0cmVhbSgp
LCByZWFsUmVhZGFibGVTdHJlYW0oKV07IH0KLSAgfTsKLX0KLQotZnVuY3Rpb24gcmVhbFJlYWRh
YmxlU3RyZWFtKCkgewotICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci19Ci0KLWZ1bmN0
aW9uIGZha2VSZWFkYWJsZVN0cmVhbVJlYWRlcigpIHsKLSAgcmV0dXJuIHsKLSAgICBnZXQgY2xv
c2VkKCkgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7IH0sCi0gICAgY2FuY2VsKCkgeyByZXR1
cm4gUHJvbWlzZS5yZXNvbHZlKCk7IH0sCi0gICAgcmVhZCgpIHsgcmV0dXJuIFByb21pc2UucmVz
b2x2ZSh7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSk7IH0sCi0gICAgcmVsZWFzZUxv
Y2soKSB7IHJldHVybjsgfQotICB9OwotfQotCi1mdW5jdGlvbiBmYWtlUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyKCkgewotICByZXR1cm4gewotICAgIGNsb3NlKCkgeyB9LAotICAgIGVucXVldWUo
KSB7IH0sCi0gICAgZXJyb3IoKSB7IH0KLSAgfTsKLX0KLQotcHJvbWlzZV90ZXN0KHQgPT4gewot
Ci0gIHJldHVybiBtZXRob2RSZWplY3RzKHQsIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ2Nh
bmNlbCcsIGZha2VSZWFkYWJsZVN0cmVhbSgpKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtLnByb3Rv
dHlwZS5jYW5jZWwgZW5mb3JjZXMgYSBicmFuZCBjaGVjaycpOwotCi10ZXN0KCgpID0+IHsKLQot
ICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLCAnZ2V0UmVhZGVyJywgZmFr
ZVJlYWRhYmxlU3RyZWFtKCkpOwotCi19LCAnUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmdldFJl
YWRlciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIG1ldGhv
ZFRocm93cyhSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUsICd0ZWUnLCBmYWtlUmVhZGFibGVTdHJl
YW0oKSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUudGVlIGVuZm9yY2VzIGEgYnJh
bmQgY2hlY2snKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihmYWtlUmVhZGFibGVTdHJlYW0o
KSksCi0gICAgICAgICAgICAgICAgJ0NvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVy
IHNob3VsZCB0aHJvdycpOwotCi19LCAnUmVhZGFibGVTdHJlYW1SZWFkZXIgZW5mb3JjZXMgYSBi
cmFuZCBjaGVjayBvbiBpdHMgYXJndW1lbnQnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0g
IHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgZ2V0dGVyUmVqZWN0cyh0LCBSZWFkYWJsZVN0cmVh
bVJlYWRlci5wcm90b3R5cGUsICdjbG9zZWQnLCBmYWtlUmVhZGFibGVTdHJlYW1SZWFkZXIoKSks
Ci0gICAgZ2V0dGVyUmVqZWN0cyh0LCBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUsICdj
bG9zZWQnLCByZWFsUmVhZGFibGVTdHJlYW0oKSkKLSAgXSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVh
bVJlYWRlci5wcm90b3R5cGUuY2xvc2VkIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKLQotcHJv
bWlzZV90ZXN0KHQgPT4gewotCi0gIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgbWV0aG9kUmVq
ZWN0cyh0LCBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUsICdjYW5jZWwnLCBmYWtlUmVh
ZGFibGVTdHJlYW1SZWFkZXIoKSksCi0gICAgbWV0aG9kUmVqZWN0cyh0LCBSZWFkYWJsZVN0cmVh
bVJlYWRlci5wcm90b3R5cGUsICdjYW5jZWwnLCByZWFsUmVhZGFibGVTdHJlYW0oKSkKLSAgXSk7
Ci0KLX0sICdSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUuY2FuY2VsIGVuZm9yY2VzIGEg
YnJhbmQgY2hlY2snKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIHJldHVybiBQcm9taXNl
LmFsbChbCi0gICAgbWV0aG9kUmVqZWN0cyh0LCBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5
cGUsICdyZWFkJywgZmFrZVJlYWRhYmxlU3RyZWFtUmVhZGVyKCkpLAotICAgIG1ldGhvZFJlamVj
dHModCwgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLCAncmVhZCcsIHJlYWxSZWFkYWJs
ZVN0cmVhbSgpKQotICBdKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5y
ZWFkIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgbWV0aG9k
VGhyb3dzKFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZSwgJ3JlbGVhc2VMb2NrJywgZmFr
ZVJlYWRhYmxlU3RyZWFtUmVhZGVyKCkpOwotICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW1S
ZWFkZXIucHJvdG90eXBlLCAncmVsZWFzZUxvY2snLCByZWFsUmVhZGFibGVTdHJlYW0oKSk7Ci0K
LX0sICdSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVsZWFzZUxvY2sgZW5mb3JjZXMg
YSBicmFuZCBjaGVjaycpOwotCi10ZXN0KCgpID0+IHsKLQotICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcihmYWtlUmVhZGFi
bGVTdHJlYW0oKSksCi0gICAgICAgICAgICAgICAgJ0NvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlciBzaG91bGQgdGhyb3cnKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtQ29udHJv
bGxlciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIG9uIGl0cyBhcmd1bWVudCcpOwotCi10ZXN0KCgp
ID0+IHsKLQotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRh
YmxlU3RyZWFtQ29udHJvbGxlcihyZWFsUmVhZGFibGVTdHJlYW0oKSksCi0gICAgICAgICAgICAg
ICAgJ0NvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBzaG91bGQgdGhyb3cn
KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBjYW5cJ3QgYmUgZ2l2ZW4gYSBmdWxs
eS1jb25zdHJ1Y3RlZCBSZWFkYWJsZVN0cmVhbScpOwotCi10ZXN0KCgpID0+IHsKLQotICBtZXRo
b2RUaHJvd3MoUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZSwgJ2Nsb3NlJywgZmFr
ZVJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcigpKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtQ29udHJv
bGxlci5wcm90b3R5cGUuY2xvc2UgZW5mb3JjZXMgYSBicmFuZCBjaGVjaycpOwotCi10ZXN0KCgp
ID0+IHsKLQotICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlw
ZSwgJ2VucXVldWUnLCBmYWtlUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKCkpOwotCi19LCAnUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5lbnF1ZXVlIGVuZm9yY2VzIGEgYnJhbmQg
Y2hlY2snKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFt
Q29udHJvbGxlci5wcm90b3R5cGUsICdlcnJvcicsIGZha2VSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIoKSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLmVycm9yIGVu
Zm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKLQotZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1z
dHJlYW1zL2NhbmNlbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLWV4cGVj
dGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzk5NGIzYjk0NmUyMTMwMTMz
NjY4NmZkODA0YzczYWFhMmQxMmNlNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDI0ICswLDAgQEAKLQotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRp
b246IGludGVncmF0aW9uIHRlc3Qgb24gYW4gaW5maW5pdGUgc3RyZWFtIGRlcml2ZWQgZnJvbSBh
IHJhbmRvbSBwdXNoIHNvdXJjZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBj
YW5jZWwocmVhc29uKSBzaG91bGQgcGFzcyB0aHJvdWdoIHRoZSBnaXZlbiByZWFzb24gdG8gdGhl
IHVuZGVybHlpbmcgc291cmNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGNh
bmNlbCgpIG9uIGEgbG9ja2VkIHN0cmVhbSBzaG91bGQgZmFpbCBhbmQgbm90IGNhbGwgdGhlIHVu
ZGVybHlpbmcgc291cmNlIGNhbmNlbCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9u
OiBzaG91bGQgZnVsZmlsbCBwcm9taXNlIHdoZW4gY2FuY2VsIGNhbGxiYWNrIHdlbnQgZmluZSAK
LVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiByZXR1cm5pbmcgYSB2YWx1ZSBmcm9t
IHRoZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBzaG91bGQgbm90IGFmZmVjdCB0aGUgZnVs
ZmlsbG1lbnQgdmFsdWUgb2YgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNh
bmNlbCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBzaG91bGQgcmVqZWN0IHBy
b21pc2Ugd2hlbiBjYW5jZWwgY2FsbGJhY2sgcmFpc2VzIGFuIGV4Y2VwdGlvbiAKLVBBU1MgUmVh
ZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2UncyBjYW5j
ZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUg
c3RyZWFtJ3MgY2FuY2VsIHNob3VsZCBmdWxmaWxsIHdoZW4gdGhhdCBvbmUgZG9lcyAoMSkgCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVybHlpbmcgc291cmNl
J3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQg
YnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBzaG91bGQgZnVsZmlsbCB3aGVuIHRoYXQgb25lIGRvZXMg
KDIpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5aW5n
IHNvdXJjZSdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRoZSBwcm9taXNlIHJl
dHVybmVkIGJ5IHRoZSBzdHJlYW0ncyBjYW5jZWwgc2hvdWxkIHJlamVjdCB3aGVuIHRoYXQgb25l
IGRvZXMgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsbGluZyBiZWZv
cmUgc3RhcnQgZmluaXNoZXMgc2hvdWxkIHByZXZlbnQgcHVsbCgpIGZyb20gYmVpbmcgY2FsbGVk
IAotRkFJTCBMb2FkIGNhbmNlbC5qcyB3aXRoIFNoYXJlZFdvcmtlciBhc3NlcnRfdW5yZWFjaGVk
OiBTaGFyZWRXb3JrZXIgaXMgdW5hdmFpbGFibGUgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCi1G
QUlMIFVudGl0bGVkIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICduYXZp
Z2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdpc3RyYXRpb24nKQotUEFTUyBSZWFkYWJsZVN0cmVh
bSBjYW5jZWxsYXRpb246IGludGVncmF0aW9uIHRlc3Qgb24gYW4gaW5maW5pdGUgc3RyZWFtIGRl
cml2ZWQgZnJvbSBhIHJhbmRvbSBwdXNoIHNvdXJjZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2Fu
Y2VsbGF0aW9uOiBjYW5jZWwocmVhc29uKSBzaG91bGQgcGFzcyB0aHJvdWdoIHRoZSBnaXZlbiBy
ZWFzb24gdG8gdGhlIHVuZGVybHlpbmcgc291cmNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5j
ZWxsYXRpb246IGNhbmNlbCgpIG9uIGEgbG9ja2VkIHN0cmVhbSBzaG91bGQgZmFpbCBhbmQgbm90
IGNhbGwgdGhlIHVuZGVybHlpbmcgc291cmNlIGNhbmNlbCAKLVBBU1MgUmVhZGFibGVTdHJlYW0g
Y2FuY2VsbGF0aW9uOiBzaG91bGQgZnVsZmlsbCBwcm9taXNlIHdoZW4gY2FuY2VsIGNhbGxiYWNr
IHdlbnQgZmluZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiByZXR1cm5pbmcg
YSB2YWx1ZSBmcm9tIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBzaG91bGQgbm90IGFm
ZmVjdCB0aGUgZnVsZmlsbG1lbnQgdmFsdWUgb2YgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhl
IHN0cmVhbSdzIGNhbmNlbCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBzaG91
bGQgcmVqZWN0IHByb21pc2Ugd2hlbiBjYW5jZWwgY2FsbGJhY2sgcmFpc2VzIGFuIGV4Y2VwdGlv
biAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBz
b3VyY2UncyBjYW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSByZXR1
cm5lZCBieSB0aGUgc3RyZWFtJ3MgY2FuY2VsIHNob3VsZCBmdWxmaWxsIHdoZW4gdGhhdCBvbmUg
ZG9lcyAoMSkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVy
bHlpbmcgc291cmNlJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21p
c2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBzaG91bGQgZnVsZmlsbCB3aGVuIHRo
YXQgb25lIGRvZXMgKDIpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRo
ZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRo
ZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW0ncyBjYW5jZWwgc2hvdWxkIHJlamVjdCB3
aGVuIHRoYXQgb25lIGRvZXMgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2Fu
Y2VsbGluZyBiZWZvcmUgc3RhcnQgZmluaXNoZXMgc2hvdWxkIHByZXZlbnQgcHVsbCgpIGZyb20g
YmVpbmcgY2FsbGVkIAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBp
L3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGY3Njc0MjlmMTcwMjkyMzZkYzRiNDEwOGQ0NTQ0NTBjMDdlYzZhNGIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2NhbmNl
bC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlcnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9ycy11dGlscy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iY2FuY2VsLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci13b3JrZXJfdGVzdCgnY2FuY2Vs
LmpzJyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuanMg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBp
L3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBmNTAxNGMyYzk0ZDI3MWUzMThjMGVjY2IyY2Y4MDNhNjAyNTNhMWUxLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwu
anMKKysrIC9kZXYvbnVsbApAQCAtMSwyNDIgKzAsMCBAQAotJ3VzZSBzdHJpY3QnOwotCi1pZiAo
c2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2Vz
L3Rlc3QtdXRpbHMuanMnKTsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvcnMt
dXRpbHMuanMnKTsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzJyk7Ci19Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcmFuZG9tU291cmNl
ID0gbmV3IFJhbmRvbVB1c2hTb3VyY2UoKTsKLQotICBsZXQgY2FuY2VsbGF0aW9uRmluaXNoZWQg
PSBmYWxzZTsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMp
IHsKLSAgICAgIHJhbmRvbVNvdXJjZS5vbmRhdGEgPSBjLmVucXVldWUuYmluZChjKTsKLSAgICAg
IHJhbmRvbVNvdXJjZS5vbmVuZCA9IGMuY2xvc2UuYmluZChjKTsKLSAgICAgIHJhbmRvbVNvdXJj
ZS5vbmVycm9yID0gYy5lcnJvci5iaW5kKGMpOwotICAgIH0sCi0KLSAgICBwdWxsKCkgewotICAg
ICAgcmFuZG9tU291cmNlLnJlYWRTdGFydCgpOwotICAgIH0sCi0KLSAgICBjYW5jZWwoKSB7Ci0g
ICAgICByYW5kb21Tb3VyY2UucmVhZFN0b3AoKTsKLSAgICAgIHJhbmRvbVNvdXJjZS5vbmVuZCgp
OwotCi0gICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgICAgIHNldFRp
bWVvdXQoKCkgPT4gewotICAgICAgICAgIGNhbmNlbGxhdGlvbkZpbmlzaGVkID0gdHJ1ZTsKLSAg
ICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgIH0sIDEpOwotICAgICAgfSk7Ci0gICAgfQotICB9
KTsKLQotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICAvLyBXZSBjYWxsIGRl
bGF5IG11bHRpcGxlIHRpbWVzIHRvIGF2b2lkIGNhbmNlbGxpbmcgdG9vIGVhcmx5IGZvciB0aGUK
LSAgLy8gc291cmNlIHRvIGVucXVldWUgYXQgbGVhc3Qgb25lIGNodW5rLgotICBjb25zdCBjYW5j
ZWwgPSBkZWxheSg1KS50aGVuKCgpID0+IGRlbGF5KDUpKS50aGVuKCgpID0+IGRlbGF5KDUpKS50
aGVuKCgpID0+IHsKLSAgICBsZXQgY2FuY2VsUHJvbWlzZSA9IHJlYWRlci5jYW5jZWwoKTsKLSAg
ICBhc3NlcnRfZmFsc2UoY2FuY2VsbGF0aW9uRmluaXNoZWQsICdjYW5jZWxsYXRpb24gaW4gc291
cmNlIHNob3VsZCBoYXBwZW4gbGF0ZXInKTsKLSAgICByZXR1cm4gY2FuY2VsUHJvbWlzZTsKLSAg
fSkKLQotICByZXR1cm4gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHJzLCByZWFkZXIpLnRoZW4oY2h1
bmtzID0+IHsKLSAgICBhc3NlcnRfZ3JlYXRlcl90aGFuKGNodW5rcy5sZW5ndGgsIDAsICdhdCBs
ZWFzdCBvbmUgY2h1bmsgc2hvdWxkIGJlIHJlYWQnKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8
IGNodW5rcy5sZW5ndGg7IGkrKykgewotICAgICAgYXNzZXJ0X2VxdWFscyhjaHVua3NbaV0ubGVu
Z3RoLCAxMjgsICdjaHVuayAnICsgaSArICcgc2hvdWxkIGhhdmUgMTI4IGJ5dGVzJyk7Ci0gICAg
fQotICAgIHJldHVybiBjYW5jZWw7Ci0gIH0pLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF90cnVl
KGNhbmNlbGxhdGlvbkZpbmlzaGVkLCAnaXQgcmV0dXJucyBhIHByb21pc2UgdGhhdCBpcyBmdWxm
aWxsZWQgd2hlbiB0aGUgY2FuY2VsbGF0aW9uIGZpbmlzaGVzJyk7Ci0gIH0pOwotCi19LCAnUmVh
ZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpbnRlZ3JhdGlvbiB0ZXN0IG9uIGFuIGluZmluaXRl
IHN0cmVhbSBkZXJpdmVkIGZyb20gYSByYW5kb20gcHVzaCBzb3VyY2UnKTsKLQotdGVzdCgoKSA9
PiB7Ci0KLSAgbGV0IHJlY29yZGVkUmVhc29uOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7Ci0gICAgY2FuY2VsKHJlYXNvbikgewotICAgICAgcmVjb3JkZWRSZWFzb24gPSByZWFz
b247Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBwYXNzZWRSZWFzb24gPSBuZXcgRXJyb3IoJ1Nv
cnJ5LCBpdCBqdXN0IHdhc25cJ3QgbWVhbnQgdG8gYmUuJyk7Ci0gIHJzLmNhbmNlbChwYXNzZWRS
ZWFzb24pOwotCi0gIGFzc2VydF9lcXVhbHMocmVjb3JkZWRSZWFzb24sIHBhc3NlZFJlYXNvbiwK
LSAgICAndGhlIGVycm9yIHBhc3NlZCB0byB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2Vs
IG1ldGhvZCBzaG91bGQgZXF1YWwgdGhlIG9uZSBwYXNzZWQgdG8gdGhlIHN0cmVhbVwncyBjYW5j
ZWwnKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsKHJlYXNvbikg
c2hvdWxkIHBhc3MgdGhyb3VnaCB0aGUgZ2l2ZW4gcmVhc29uIHRvIHRoZSB1bmRlcmx5aW5nIHNv
dXJjZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICAg
IGMuY2xvc2UoKTsKLSAgICB9LAotICAgIGNhbmNlbCgpIHsKLSAgICAgIGFzc2VydF91bnJlYWNo
ZWQoJ3VuZGVybHlpbmcgc291cmNlIGNhbmNlbCgpIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxl
ZCcpOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0K
LSAgcmV0dXJuIHJzLmNhbmNlbCgpLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF91bnJlYWNoZWQo
J2NhbmNlbCgpIHNob3VsZCBiZSByZWplY3RlZCcpOwotICB9LCBlID0+IHsKLSAgICBhc3NlcnRf
ZXF1YWxzKGUubmFtZSwgJ1R5cGVFcnJvcicsICdjYW5jZWwoKSBzaG91bGQgYmUgcmVqZWN0ZWQg
d2l0aCBhIFR5cGVFcnJvcicpOwotICB9KS50aGVuKCgpID0+IHsKLSAgICByZXR1cm4gcmVhZGVy
LnJlYWQoKTsKLSAgfSkudGhlbihyZXN1bHQgPT4gewotICAgIGFzc2VydF9vYmplY3RfZXF1YWxz
KHJlc3VsdCwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAncmVhZCgpIHNob3VsZCBzdGls
bCB3b3JrIGFmdGVyIHRoZSBhdHRlbXB0ZWQgY2FuY2VsJyk7Ci0gICAgcmV0dXJuIHJlYWRlci5j
bG9zZWQ7Ci0gIH0pOwotCi19LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5jZWwo
KSBvbiBhIGxvY2tlZCBzdHJlYW0gc2hvdWxkIGZhaWwgYW5kIG5vdCBjYWxsIHRoZSB1bmRlcmx5
aW5nIHNvdXJjZSBjYW5jZWwnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgY2Fu
Y2VsUmVjZWl2ZWQgPSBmYWxzZTsKLSAgY29uc3QgY2FuY2VsUmVhc29uID0gbmV3IEVycm9yKCdJ
IGFtIHRpcmVkIG9mIHRoaXMgc3RyZWFtLCBJIHByZWZlciB0byBjYW5jZWwgaXQnKTsKLSAgY29u
c3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIGNhbmNlbChyZWFzb24pIHsKLSAgICAg
IGNhbmNlbFJlY2VpdmVkID0gdHJ1ZTsKLSAgICAgIGFzc2VydF9lcXVhbHMocmVhc29uLCBjYW5j
ZWxSZWFzb24sICdjYW5jZWxsYXRpb24gcmVhc29uIGdpdmVuIHRvIHRoZSB1bmRlcmx5aW5nIHNv
dXJjZSBzaG91bGQgYmUgZXF1YWwgdG8gdGhlIG9uZSBwYXNzZWQnKTsKLSAgICB9Ci0gIH0pOwot
Ci0gIHJldHVybiBycy5jYW5jZWwoY2FuY2VsUmVhc29uKS50aGVuKCgpID0+IHsKLSAgICBhc3Nl
cnRfdHJ1ZShjYW5jZWxSZWNlaXZlZCk7Ci0gIH0pOwotCi19LCAnUmVhZGFibGVTdHJlYW0gY2Fu
Y2VsbGF0aW9uOiBzaG91bGQgZnVsZmlsbCBwcm9taXNlIHdoZW4gY2FuY2VsIGNhbGxiYWNrIHdl
bnQgZmluZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKLSAgICBjYW5jZWwoKSB7Ci0gICAgICByZXR1cm4gJ0hlbGxvJzsKLSAg
ICB9Ci0gIH0pOwotCi0gIHJldHVybiBycy5jYW5jZWwoKS50aGVuKHYgPT4gewotICAgIGFzc2Vy
dF9lcXVhbHModiwgdW5kZWZpbmVkLCAnY2FuY2VsKCkgcmV0dXJuIHZhbHVlIHNob3VsZCBiZSBm
dWxmaWxsZWQgd2l0aCB1bmRlZmluZWQnKTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBj
YW5jZWxsYXRpb246IHJldHVybmluZyBhIHZhbHVlIGZyb20gdGhlIHVuZGVybHlpbmcgc291cmNl
XCdzIGNhbmNlbCBzaG91bGQgbm90IGFmZmVjdCB0aGUgZnVsZmlsbG1lbnQgdmFsdWUgb2YgdGhl
IHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbVwncyBjYW5jZWwnKTsKLQotcHJvbWlzZV90
ZXN0KCgpID0+IHsKLQotICBjb25zdCB0aHJvd25FcnJvciA9IG5ldyBFcnJvcigndGVzdCcpOwot
ICBsZXQgY2FuY2VsQ2FsbGVkID0gZmFsc2U7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oewotICAgIGNhbmNlbCgpIHsKLSAgICAgIGNhbmNlbENhbGxlZCA9IHRydWU7Ci0gICAg
ICB0aHJvdyB0aHJvd25FcnJvcjsKLSAgICB9Ci0gIH0pOwotCi0gIHJldHVybiBycy5jYW5jZWwo
J3Rlc3QnKS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfdW5yZWFjaGVkKCdjYW5jZWwgc2hvdWxk
IHJlamVjdCcpOwotICB9LCBlID0+IHsKLSAgICBhc3NlcnRfdHJ1ZShjYW5jZWxDYWxsZWQpOwot
ICAgIGFzc2VydF9lcXVhbHMoZSwgdGhyb3duRXJyb3IpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxl
U3RyZWFtIGNhbmNlbGxhdGlvbjogc2hvdWxkIHJlamVjdCBwcm9taXNlIHdoZW4gY2FuY2VsIGNh
bGxiYWNrIHJhaXNlcyBhbiBleGNlcHRpb24nKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQot
ICBjb25zdCBjYW5jZWxSZWFzb24gPSBuZXcgRXJyb3IoJ3Rlc3QnKTsKLQotICBjb25zdCBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgY2FuY2VsKGVycm9yKSB7Ci0gICAgICBhc3NlcnRf
ZXF1YWxzKGVycm9yLCBjYW5jZWxSZWFzb24pOwotICAgICAgcmV0dXJuIGRlbGF5KDEpOwotICAg
IH0KLSAgfSk7Ci0KLSAgcmV0dXJuIHJzLmNhbmNlbChjYW5jZWxSZWFzb24pOwotCi19LCAnUmVh
ZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2Fu
Y2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhl
IHN0cmVhbVwncyBjYW5jZWwgc2hvdWxkIGZ1bGZpbGwgd2hlbiB0aGF0IG9uZSBkb2VzICgxKScp
OwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCByZXNvbHZlU291cmNlQ2FuY2VsUHJv
bWlzZTsKLSAgbGV0IHNvdXJjZUNhbmNlbFByb21pc2VIYXNGdWxmaWxsZWQgPSBmYWxzZTsKLQot
ICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgY2FuY2VsKCkgewotICAgICAg
Y29uc3Qgc291cmNlQ2FuY2VsUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gcmVzb2x2
ZVNvdXJjZUNhbmNlbFByb21pc2UgPSByZXNvbHZlKTsKLQotICAgICAgc291cmNlQ2FuY2VsUHJv
bWlzZS50aGVuKCgpID0+IHsKLSAgICAgICAgc291cmNlQ2FuY2VsUHJvbWlzZUhhc0Z1bGZpbGxl
ZCA9IHRydWU7Ci0gICAgICB9KTsKLQotICAgICAgcmV0dXJuIHNvdXJjZUNhbmNlbFByb21pc2U7
Ci0gICAgfQotICB9KTsKLQotICBzZXRUaW1lb3V0KCgpID0+IHJlc29sdmVTb3VyY2VDYW5jZWxQ
cm9taXNlKCdIZWxsbycpLCAxKTsKLQotICByZXR1cm4gcnMuY2FuY2VsKCkudGhlbih2YWx1ZSA9
PiB7Ci0gICAgYXNzZXJ0X3RydWUoc291cmNlQ2FuY2VsUHJvbWlzZUhhc0Z1bGZpbGxlZCwgJ2Nh
bmNlbCgpIHJldHVybiB2YWx1ZSBzaG91bGQgYmUgZnVsZmlsbGVkIG9ubHkgYWZ0ZXIgdGhlIHBy
b21pc2UgcmV0dXJuZWQgYnkgdGhlIHVuZGVybHlpbmcgc291cmNlXCdzIGNhbmNlbCcpOwotICAg
IGFzc2VydF9lcXVhbHModmFsdWUsIHVuZGVmaW5lZCwgJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBz
aG91bGQgYmUgZnVsZmlsbGVkIHdpdGggdW5kZWZpbmVkJyk7Ci0gIH0pOwotCi19LCAnUmVhZGFi
bGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2Vs
IG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0
cmVhbVwncyBjYW5jZWwgc2hvdWxkIGZ1bGZpbGwgd2hlbiB0aGF0IG9uZSBkb2VzICgyKScpOwot
Ci1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCByZWplY3RTb3VyY2VDYW5jZWxQcm9taXNl
OwotICBsZXQgc291cmNlQ2FuY2VsUHJvbWlzZUhhc1JlamVjdGVkID0gZmFsc2U7Ci0KLSAgY29u
c3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIGNhbmNlbCgpIHsKLSAgICAgIGNvbnN0
IHNvdXJjZUNhbmNlbFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiBy
ZWplY3RTb3VyY2VDYW5jZWxQcm9taXNlID0gcmVqZWN0KTsKLQotICAgICAgc291cmNlQ2FuY2Vs
UHJvbWlzZS5jYXRjaCgoKSA9PiB7Ci0gICAgICAgIHNvdXJjZUNhbmNlbFByb21pc2VIYXNSZWpl
Y3RlZCA9IHRydWU7Ci0gICAgICB9KTsKLQotICAgICAgcmV0dXJuIHNvdXJjZUNhbmNlbFByb21p
c2U7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBlcnJvckluQ2FuY2VsID0gbmV3IEVycm9yKCdT
b3JyeSwgaXQganVzdCB3YXNuXCd0IG1lYW50IHRvIGJlLicpOwotCi0gIHNldFRpbWVvdXQoKCkg
PT4gcmVqZWN0U291cmNlQ2FuY2VsUHJvbWlzZShlcnJvckluQ2FuY2VsKSwgMSk7Ci0KLSAgcmV0
dXJuIHJzLmNhbmNlbCgpLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF91bnJlYWNoZWQoJ2NhbmNl
bCgpIHJldHVybiB2YWx1ZSBzaG91bGQgYmUgcmVqZWN0ZWQnKTsKLSAgfSwgciA9PiB7Ci0gICAg
YXNzZXJ0X3RydWUoc291cmNlQ2FuY2VsUHJvbWlzZUhhc1JlamVjdGVkLCAnY2FuY2VsKCkgcmV0
dXJuIHZhbHVlIHNob3VsZCBiZSByZWplY3RlZCBvbmx5IGFmdGVyIHRoZSBwcm9taXNlIHJldHVy
bmVkIGJ5IHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyBjYW5jZWwnKTsKLSAgICBhc3NlcnRfZXF1
YWxzKHIsIGVycm9ySW5DYW5jZWwsICdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIHJl
amVjdGVkIHdpdGggdGhlIHVuZGVybHlpbmcgc291cmNlXCdzIHJlamVjdGlvbiByZWFzb24nKTsK
LSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5
aW5nIHNvdXJjZVwncyBjYW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlz
ZSByZXR1cm5lZCBieSB0aGUgc3RyZWFtXCdzIGNhbmNlbCBzaG91bGQgcmVqZWN0IHdoZW4gdGhh
dCBvbmUgZG9lcycpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydCgpIHsKLSAgICAgIHJldHVybiBuZXcgUHJvbWlz
ZSgoKSA9PiB7fSk7Ci0gICAgfSwKLSAgICBwdWxsKCkgewotICAgICAgYXNzZXJ0X3VucmVhY2hl
ZCgncHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQnKTsKLSAgICB9Ci0gIH0pOwotCi0g
IHJldHVybiBQcm9taXNlLmFsbChbcnMuY2FuY2VsKCksIHJzLmdldFJlYWRlcigpLmNsb3NlZF0p
OwotCi19LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5jZWxsaW5nIGJlZm9yZSBz
dGFydCBmaW5pc2hlcyBzaG91bGQgcHJldmVudCBwdWxsKCkgZnJvbSBiZWluZyBjYWxsZWQnKTsK
LQotZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3Ry
YXRlZ3ktaW50ZWdyYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1
ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24tZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmYTRlMWRmOTkxYzE3NzhkNGNlM2MxOWI5YTE3NGU2Nzc3MWE4ODY3Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3Ry
ZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLQotUEFTUyBDYW4gY29uc3RydWN0IGEgcmVhZGFi
bGUgc3RyZWFtIHdpdGggYSB2YWxpZCBDb3VudFF1ZXVpbmdTdHJhdGVneSAKLVBBU1MgQ29ycmVj
dGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIncyBkZXNpcmVkU2l6ZSBwcm9w
ZXJ0eSAoSFdNID0gMCkgCi1QQVNTIENvcnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyJ3MgZGVzaXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDEpIAotUEFTUyBDb3JyZWN0
bHkgZ292ZXJucyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcidzIGRlc2lyZWRTaXplIHByb3Bl
cnR5IChIV00gPSA0KSAKLUZBSUwgTG9hZCBjb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0
aW9uLmpzIHdpdGggU2hhcmVkV29ya2VyIGFzc2VydF91bnJlYWNoZWQ6IFNoYXJlZFdvcmtlciBp
cyB1bmF2YWlsYWJsZSBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKLUZBSUwgVW50aXRsZWQgdW5k
ZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ25hdmlnYXRvci5zZXJ2aWNlV29y
a2VyLmdldFJlZ2lzdHJhdGlvbicpCi1QQVNTIENhbiBjb25zdHJ1Y3QgYSByZWFkYWJsZSBzdHJl
YW0gd2l0aCBhIHZhbGlkIENvdW50UXVldWluZ1N0cmF0ZWd5IAotUEFTUyBDb3JyZWN0bHkgZ292
ZXJucyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcidzIGRlc2lyZWRTaXplIHByb3BlcnR5IChI
V00gPSAwKSAKLVBBU1MgQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIncyBkZXNpcmVkU2l6ZSBwcm9wZXJ0eSAoSFdNID0gMSkgCi1QQVNTIENvcnJlY3RseSBnb3Zl
cm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyJ3MgZGVzaXJlZFNpemUgcHJvcGVydHkgKEhX
TSA9IDQpIAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJh
dGVneS1pbnRlZ3JhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3Ry
YXRlZ3ktaW50ZWdyYXRpb24uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmMz
ODE2NmMzMDM1ODg4NjVhZDliNDRkYTFhOTg5OWMxZmM3NmQ2NC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWlu
Zy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwv
c2NyaXB0PgotCi08c2NyaXB0IHNyYz0iY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlv
bi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotd29ya2VyX3Rlc3QoJ2Nv
dW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uanMnKTsKLTwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
LWFwaS9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24u
anMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMt
YXBpL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5q
cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI5YTFhYTJiYTYzMWVkYmI5ZGUxODNm
MTA2NmU2M2EzOTI3N2ZjZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlv
bi5qcworKysgL2Rldi9udWxsCkBAIC0xLDIxMyArMCwwIEBACi0ndXNlIHN0cmljdCc7Ci0KLWlm
IChzZWxmLmltcG9ydFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0KLXRlc3QoKCkgPT4gewotCi0gIG5ldyBSZWFkYWJsZVN0
cmVhbSh7fSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KSk7
Ci0KLX0sICdDYW4gY29uc3RydWN0IGEgcmVhZGFibGUgc3RyZWFtIHdpdGggYSB2YWxpZCBDb3Vu
dFF1ZXVpbmdTdHJhdGVneScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBjb250
cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgKLSAgICB7Ci0gICAgICBz
dGFydChjKSB7Ci0gICAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgICAgfQotICAgIH0sCi0gICAg
bmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMCB9KQotICApOwotICBj
b25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xs
ZXIuZGVzaXJlZFNpemUsIDAsICcwIHJlYWRzLCAwIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91
bGQgYmUgMCcpOwotICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKLSAgYXNzZXJ0X2VxdWFscyhj
b250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzAgcmVhZHMsIDEgZW5xdWV1ZTogZGVzaXJlZFNp
emUgc2hvdWxkIGJlIC0xJyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOwotICBhc3NlcnRf
ZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0yLCAnMCByZWFkcywgMiBlbnF1ZXVlczog
ZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0yJyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpOwot
ICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0zLCAnMCByZWFkcywgMyBl
bnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0zJyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1
ZSgnZCcpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC00LCAnMCBy
ZWFkcywgNCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC00Jyk7Ci0KLSAgcmV0dXJu
IHJlYWRlci5yZWFkKCkKLSAgICAudGhlbihyZXN1bHQgPT4gewotICAgICAgYXNzZXJ0X29iamVj
dF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAnMXN0IHJlYWQgZ2l2ZXMgYmFjayB0aGUgMXN0IGNodW5rIGVucXVl
dWVkIChxdWV1ZSBub3cgY29udGFpbnMgMyBjaHVua3MpJyk7Ci0gICAgICByZXR1cm4gcmVhZGVy
LnJlYWQoKTsKLSAgICB9KQotICAgIC50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFsc2UgfSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICcybmQgcmVhZCBnaXZlcyBiYWNrIHRoZSAybmQgY2h1bmsgZW5x
dWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAyIGNodW5rcyknKTsKLSAgICAgIHJldHVybiByZWFk
ZXIucmVhZCgpOwotICAgIH0pCi0gICAgLnRoZW4ocmVzdWx0ID0+IHsKLSAgICAgIGFzc2VydF9v
YmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxzZSB9LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJzNyZCByZWFkIGdpdmVzIGJhY2sgdGhlIDNyZCBjaHVuayBl
bnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDEgY2h1bmspJyk7Ci0KLSAgICAgIGFzc2VydF9l
cXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICczIHJlYWRzLCA0IGVucXVldWVzOiBk
ZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKLSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZScp
OwotICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMiwgJzMgcmVh
ZHMsIDUgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMicpOwotCi0gICAgICByZXR1
cm4gcmVhZGVyLnJlYWQoKTsKLSAgICB9KQotICAgIC50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdkJywgZG9uZTogZmFsc2UgfSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICc0dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA0dGgg
Y2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAxIGNodW5rcyknKTsKLSAgICAgIHJl
dHVybiByZWFkZXIucmVhZCgpOwotCi0gICAgfSkudGhlbihyZXN1bHQgPT4gewotICAgICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZScsIGRvbmU6IGZhbHNlIH0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAnNXRoIHJlYWQgZ2l2ZXMgYmFjayB0aGUgNXRoIGNo
dW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMCBjaHVua3MpJyk7Ci0KLSAgICAgIGFz
c2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzUgcmVhZHMsIDUgZW5xdWV1
ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7Ci0gICAgICBjb250cm9sbGVyLmVucXVldWUo
J2YnKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICc1
IHJlYWRzLCA2IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKLSAgICAgIGNv
bnRyb2xsZXIuZW5xdWV1ZSgnZycpOwotICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRl
c2lyZWRTaXplLCAtMiwgJzUgcmVhZHMsIDcgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBi
ZSAtMicpOwotICAgIH0pOwotCi19LCAnQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXJcJ3MgZGVzaXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDApJyk7Ci0KLXByb21p
c2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKAotICAgIHsKLSAgICAgIHN0YXJ0KGMpIHsKLSAgICAgICAgY29udHJvbGxl
ciA9IGM7Ci0gICAgICB9Ci0gICAgfSwKLSAgICBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBo
aWdoV2F0ZXJNYXJrOiAxIH0pCi0gICk7Ci0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigp
OwotCi0gIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJzAgcmVhZHMs
IDAgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAxJyk7Ci0gIGNvbnRyb2xsZXIuZW5x
dWV1ZSgnYScpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICcw
IHJlYWRzLCAxIGVucXVldWU6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7Ci0gIGNvbnRyb2xs
ZXIuZW5xdWV1ZSgnYicpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUs
IC0xLCAnMCByZWFkcywgMiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7Ci0g
IGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVz
aXJlZFNpemUsIC0yLCAnMCByZWFkcywgMyBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJl
IC0yJyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZCcpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRy
b2xsZXIuZGVzaXJlZFNpemUsIC0zLCAnMCByZWFkcywgNCBlbnF1ZXVlczogZGVzaXJlZFNpemUg
c2hvdWxkIGJlIC0zJyk7Ci0KLSAgcmV0dXJuIHJlYWRlci5yZWFkKCkKLSAgICAudGhlbihyZXN1
bHQgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYScs
IGRvbmU6IGZhbHNlIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnMXN0IHJlYWQgZ2l2
ZXMgYmFjayB0aGUgMXN0IGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMyBjaHVu
a3MpJyk7Ci0gICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgICB9KQotICAgIC50aGVuKHJl
c3VsdCA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdi
JywgZG9uZTogZmFsc2UgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICcybmQgcmVhZCBn
aXZlcyBiYWNrIHRoZSAybmQgY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAyIGNo
dW5rcyknKTsKLSAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICAgIH0pCi0gICAgLnRoZW4o
cmVzdWx0ID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTog
J2MnLCBkb25lOiBmYWxzZSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJzNyZCByZWFk
IGdpdmVzIGJhY2sgdGhlIDNyZCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDEg
Y2h1bmspJyk7Ci0KLSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwg
MCwgJzMgcmVhZHMsIDQgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7Ci0gICAg
ICBjb250cm9sbGVyLmVucXVldWUoJ2UnKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxl
ci5kZXNpcmVkU2l6ZSwgLTEsICczIHJlYWRzLCA1IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91
bGQgYmUgLTEnKTsKLQotICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gICAgfSkKLSAgICAu
dGhlbihyZXN1bHQgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZh
bHVlOiAnZCcsIGRvbmU6IGZhbHNlIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnNHRo
IHJlYWQgZ2l2ZXMgYmFjayB0aGUgNHRoIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFp
bnMgMSBjaHVua3MpJyk7Ci0gICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgICB9KQotICAg
IC50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsg
dmFsdWU6ICdlJywgZG9uZTogZmFsc2UgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICc1
dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA1dGggY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250
YWlucyAwIGNodW5rcyknKTsKLQotICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2ly
ZWRTaXplLCAxLCAnNSByZWFkcywgNSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEn
KTsKLSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZicpOwotICAgICAgYXNzZXJ0X2VxdWFscyhj
b250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnNSByZWFkcywgNiBlbnF1ZXVlczogZGVzaXJlZFNp
emUgc2hvdWxkIGJlIDAnKTsKLSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZycpOwotICAgICAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzUgcmVhZHMsIDcgZW5x
dWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMScpOwotICAgIH0pOwotCi19LCAnQ29ycmVj
dGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJcJ3MgZGVzaXJlZFNpemUgcHJv
cGVydHkgKEhXTSA9IDEpJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNvbnRy
b2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAotICAgIHsKLSAgICAgIHN0
YXJ0KGMpIHsKLSAgICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgICB9Ci0gICAgfSwKLSAgICBu
ZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0pCi0gICk7Ci0gIGNv
bnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gIGFzc2VydF9lcXVhbHMoY29udHJvbGxl
ci5kZXNpcmVkU2l6ZSwgNCwgJzAgcmVhZHMsIDAgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3Vs
ZCBiZSA0Jyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOwotICBhc3NlcnRfZXF1YWxzKGNv
bnRyb2xsZXIuZGVzaXJlZFNpemUsIDMsICcwIHJlYWRzLCAxIGVucXVldWU6IGRlc2lyZWRTaXpl
IHNob3VsZCBiZSAzJyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOwotICBhc3NlcnRfZXF1
YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDIsICcwIHJlYWRzLCAyIGVucXVldWVzOiBkZXNp
cmVkU2l6ZSBzaG91bGQgYmUgMicpOwotICBjb250cm9sbGVyLmVucXVldWUoJ2MnKTsKLSAgYXNz
ZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnMCByZWFkcywgMyBlbnF1ZXVl
czogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEnKTsKLSAgY29udHJvbGxlci5lbnF1ZXVlKCdkJyk7
Ci0gIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzAgcmVhZHMsIDQg
ZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1
ZSgnZScpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMCBy
ZWFkcywgNSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7Ci0gIGNvbnRyb2xs
ZXIuZW5xdWV1ZSgnZicpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUs
IC0yLCAnMCByZWFkcywgNiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0yJyk7Ci0K
LQotICByZWFkZXIucmVhZCgpCi0gICAgLnRoZW4ocmVzdWx0ID0+IHsKLSAgICAgIGFzc2VydF9v
YmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJzFzdCByZWFkIGdpdmVzIGJhY2sgdGhlIDFzdCBjaHVuayBl
bnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDUgY2h1bmtzKScpOwotICAgICAgcmV0dXJuIHJl
YWRlci5yZWFkKCk7Ci0gICAgfSkKLSAgICAudGhlbihyZXN1bHQgPT4gewotICAgICAgYXNzZXJ0
X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAnMm5kIHJlYWQgZ2l2ZXMgYmFjayB0aGUgMm5kIGNodW5r
IGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgNCBjaHVua3MpJyk7Ci0KLSAgICAgIGFzc2Vy
dF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzIgcmVhZHMsIDYgZW5xdWV1ZXM6
IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7Ci0gICAgICBjb250cm9sbGVyLmVucXVldWUoJ2cn
KTsKLSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICcyIHJl
YWRzLCA3IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKLQotICAgICAgcmV0
dXJuIHJlYWRlci5yZWFkKCk7Ci0gICAgfSkKLSAgICAudGhlbihyZXN1bHQgPT4gewotICAgICAg
YXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYycsIGRvbmU6IGZhbHNlIH0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAnM3JkIHJlYWQgZ2l2ZXMgYmFjayB0aGUgM3Jk
IGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgNCBjaHVua3MpJyk7Ci0gICAgICBy
ZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgICB9KQotICAgIC50aGVuKHJlc3VsdCA9PiB7Ci0gICAg
ICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdkJywgZG9uZTogZmFsc2Ug
fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICc0dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA0
dGggY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAzIGNodW5rcyknKTsKLSAgICAg
IHJldHVybiByZWFkZXIucmVhZCgpOwotICAgIH0pCi0gICAgLnRoZW4ocmVzdWx0ID0+IHsKLSAg
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2UnLCBkb25lOiBmYWxz
ZSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJzV0aCByZWFkIGdpdmVzIGJhY2sgdGhl
IDV0aCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDIgY2h1bmtzKScpOwotICAg
ICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gICAgfSkKLSAgICAudGhlbihyZXN1bHQgPT4gewot
ICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZicsIGRvbmU6IGZh
bHNlIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnNnRoIHJlYWQgZ2l2ZXMgYmFjayB0
aGUgNnRoIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMCBjaHVua3MpJyk7Ci0K
LSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMywgJzYgcmVhZHMs
IDcgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAzJyk7Ci0gICAgICBjb250cm9sbGVy
LmVucXVldWUoJ2gnKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6
ZSwgMiwgJzYgcmVhZHMsIDggZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAyJyk7Ci0g
ICAgICBjb250cm9sbGVyLmVucXVldWUoJ2knKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJv
bGxlci5kZXNpcmVkU2l6ZSwgMSwgJzYgcmVhZHMsIDkgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNo
b3VsZCBiZSAxJyk7Ci0gICAgICBjb250cm9sbGVyLmVucXVldWUoJ2onKTsKLSAgICAgIGFzc2Vy
dF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzYgcmVhZHMsIDEwIGVucXVldWVz
OiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCcpOwotICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdr
Jyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnNiBy
ZWFkcywgMTEgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMScpOwotICAgIH0pOwot
Ci19LCAnQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJcJ3MgZGVz
aXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDQpJyk7Ci0KLWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVh
ZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24tMS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxl
LXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLTEtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmYjY1MmI4NTJmMDdlNWFiYzU2ZjUyMTA1YWNjMTg2MDVkY2I4MzE4
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUt
c3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24tMS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSw2ICswLDAgQEAKLQotUEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgbWV0aG9kcyBz
aG91bGQgY29udGludWUgd29ya2luZyBwcm9wZXJseSB3aGVuIHNjcmlwdHMgbG9zZSB0aGVpciBy
ZWZlcmVuY2UgdG8gdGhlIHJlYWRhYmxlIHN0cmVhbSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2xv
c2VkIHByb21pc2Ugc2hvdWxkIGZ1bGZpbGwgZXZlbiBpZiB0aGUgc3RyZWFtIGFuZCByZWFkZXIg
SlMgcmVmZXJlbmNlcyBhcmUgbG9zdCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2xvc2VkIHByb21p
c2Ugc2hvdWxkIHJlamVjdCBldmVuIGlmIHN0cmVhbSBhbmQgcmVhZGVyIEpTIHJlZmVyZW5jZXMg
YXJlIGxvc3QgCi1QQVNTIEdhcmJhZ2UtY29sbGVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVy
IHNob3VsZCBub3QgdW5sb2NrIGl0cyBzdHJlYW0gCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3Ry
ZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24tMS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2Ut
Y29sbGVjdGlvbi0xLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyNjA1NTJl
YTBlMjcxNWQ4ZDQ5Yjg3N2I0NmNiZDA5ZWFlN2Q0OWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlv
bi0xLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2Vycy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Ci08IS0tIEZpbGUgdG8g
YmUgcmVtb3ZlZCBvbmNlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTI0MzYgaXMgcmVzb2x2ZWQgLS0+Ci08c2NyaXB0IHNyYz0iZ2FyYmFnZS1jb2xsZWN0aW9uLmpz
Ij48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rp
b24tMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLTIt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTdkMGNjZDc3OTM1
ZThkMjdlN2VhYmFmZDYwMWVlMWNjYTM2N2E5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24tMi1l
eHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLQotUEFTUyBSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXIgbWV0aG9kcyBzaG91bGQgY29udGludWUgd29ya2luZyBwcm9wZXJs
eSB3aGVuIHNjcmlwdHMgbG9zZSB0aGVpciByZWZlcmVuY2UgdG8gdGhlIHJlYWRhYmxlIHN0cmVh
bSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2xvc2VkIHByb21pc2Ugc2hvdWxkIGZ1bGZpbGwgZXZl
biBpZiB0aGUgc3RyZWFtIGFuZCByZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9zdCAKLQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi0yLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRh
YmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLTIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggN2JlM2E0ZTFmNjhjODlmNzE4MmUzY2EwNGQ4NTEwZTMxYWIwZTAxYy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVh
bXMvZ2FyYmFnZS1jb2xsZWN0aW9uLTIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9zZXJ2
aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIj48
L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KLTwhLS0gRmlsZSB0byBiZSByZW1vdmVkIG9uY2UgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MjQzNiBpcyByZXNvbHZlZCAtLT4KLTxzY3JpcHQ+Ci0ndXNl
IHN0cmljdCc7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0g
IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9
IGM7Ci0gICAgfQotICB9KTsKLQotICBnYXJiYWdlQ29sbGVjdCgpOwotCi0gIHJldHVybiBkZWxh
eSg1MCkudGhlbigoKSA9PiB7Ci0gICAgY29udHJvbGxlci5jbG9zZSgpOwotICAgIGFzc2VydF90
aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjb250cm9sbGVyLmNsb3NlKCksICdjbG9zZSBz
aG91bGQgdGhyb3cgYSBUeXBlRXJyb3IgdGhlIHNlY29uZCB0aW1lJyk7Ci0gICAgYXNzZXJ0X3Ro
cm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGNvbnRyb2xsZXIuZXJyb3IoKSwgJ2Vycm9yIHNo
b3VsZCB0aHJvdyBhIFR5cGVFcnJvciBvbiBhIGNsb3NlZCBzdHJlYW0nKTsKLSAgfSk7Ci0KLX0s
ICdSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgbWV0aG9kcyBzaG91bGQgY29udGludWUgd29ya2lu
ZyBwcm9wZXJseSB3aGVuIHNjcmlwdHMgbG9zZSB0aGVpciByZWZlcmVuY2UgdG8gdGhlICcgKwot
ICAgJ3JlYWRhYmxlIHN0cmVhbScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBj
b250cm9sbGVyOwotCi0gIGNvbnN0IGNsb3NlZFByb21pc2UgPSBuZXcgUmVhZGFibGVTdHJlYW0o
ewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSkuZ2V0
UmVhZGVyKCkuY2xvc2VkOwotCi0gIGdhcmJhZ2VDb2xsZWN0KCk7Ci0KLSAgcmV0dXJuIGRlbGF5
KDUwKS50aGVuKCgpID0+IGNvbnRyb2xsZXIuY2xvc2UoKSkudGhlbigoKSA9PiBjbG9zZWRQcm9t
aXNlKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGNsb3NlZCBwcm9taXNlIHNob3VsZCBmdWxmaWxs
IGV2ZW4gaWYgdGhlIHN0cmVhbSBhbmQgcmVhZGVyIEpTIHJlZmVyZW5jZXMgYXJlIGxvc3QnKTsK
LTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlv
bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLWV4cGVj
dGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmUxYzMzMDA5NmJkY2UyYjA5
NTBhZjlkNTdkNjU2MzE2YTFkOTI0Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGlu
ZSAzNzogVGVzdHMgYXJlIHJ1bm5pbmcgd2l0aG91dCB0aGUgYWJpbGl0eSB0byBkbyBtYW51YWwg
Z2FyYmFnZSBjb2xsZWN0aW9uLiBUaGV5IHdpbGwgc3RpbGwgd29yaywgYnV0IGNvdmVyYWdlIHdp
bGwgYmUgc3Vib3B0aW1hbC4KLUNPTlNPTEUgTUVTU0FHRTogbGluZSAzNzogVGVzdHMgYXJlIHJ1
bm5pbmcgd2l0aG91dCB0aGUgYWJpbGl0eSB0byBkbyBtYW51YWwgZ2FyYmFnZSBjb2xsZWN0aW9u
LiBUaGV5IHdpbGwgc3RpbGwgd29yaywgYnV0IGNvdmVyYWdlIHdpbGwgYmUgc3Vib3B0aW1hbC4K
LUNPTlNPTEUgTUVTU0FHRTogbGluZSAzNzogVGVzdHMgYXJlIHJ1bm5pbmcgd2l0aG91dCB0aGUg
YWJpbGl0eSB0byBkbyBtYW51YWwgZ2FyYmFnZSBjb2xsZWN0aW9uLiBUaGV5IHdpbGwgc3RpbGwg
d29yaywgYnV0IGNvdmVyYWdlIHdpbGwgYmUgc3Vib3B0aW1hbC4KLUNPTlNPTEUgTUVTU0FHRTog
bGluZSAzNzogVGVzdHMgYXJlIHJ1bm5pbmcgd2l0aG91dCB0aGUgYWJpbGl0eSB0byBkbyBtYW51
YWwgZ2FyYmFnZSBjb2xsZWN0aW9uLiBUaGV5IHdpbGwgc3RpbGwgd29yaywgYnV0IGNvdmVyYWdl
IHdpbGwgYmUgc3Vib3B0aW1hbC4KLQotUEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgbWV0
aG9kcyBzaG91bGQgY29udGludWUgd29ya2luZyBwcm9wZXJseSB3aGVuIHNjcmlwdHMgbG9zZSB0
aGVpciByZWZlcmVuY2UgdG8gdGhlIHJlYWRhYmxlIHN0cmVhbSAKLVBBU1MgUmVhZGFibGVTdHJl
YW0gY2xvc2VkIHByb21pc2Ugc2hvdWxkIGZ1bGZpbGwgZXZlbiBpZiB0aGUgc3RyZWFtIGFuZCBy
ZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9zdCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2xvc2Vk
IHByb21pc2Ugc2hvdWxkIHJlamVjdCBldmVuIGlmIHN0cmVhbSBhbmQgcmVhZGVyIEpTIHJlZmVy
ZW5jZXMgYXJlIGxvc3QgCi1QQVNTIEdhcmJhZ2UtY29sbGVjdGluZyBhIFJlYWRhYmxlU3RyZWFt
UmVhZGVyIHNob3VsZCBub3QgdW5sb2NrIGl0cyBzdHJlYW0gCi1GQUlMIExvYWQgZ2FyYmFnZS1j
b2xsZWN0aW9uLmpzIHdpdGggU2hhcmVkV29ya2VyIGFzc2VydF91bnJlYWNoZWQ6IFNoYXJlZFdv
cmtlciBpcyB1bmF2YWlsYWJsZSBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKLUZBSUwgVW50aXRs
ZWQgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ25hdmlnYXRvci5zZXJ2
aWNlV29ya2VyLmdldFJlZ2lzdHJhdGlvbicpCi1QQVNTIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxl
ciBtZXRob2RzIHNob3VsZCBjb250aW51ZSB3b3JraW5nIHByb3Blcmx5IHdoZW4gc2NyaXB0cyBs
b3NlIHRoZWlyIHJlZmVyZW5jZSB0byB0aGUgcmVhZGFibGUgc3RyZWFtIAotUEFTUyBSZWFkYWJs
ZVN0cmVhbSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgZnVsZmlsbCBldmVuIGlmIHRoZSBzdHJlYW0g
YW5kIHJlYWRlciBKUyByZWZlcmVuY2VzIGFyZSBsb3N0IAotUEFTUyBSZWFkYWJsZVN0cmVhbSBj
bG9zZWQgcHJvbWlzZSBzaG91bGQgcmVqZWN0IGV2ZW4gaWYgc3RyZWFtIGFuZCByZWFkZXIgSlMg
cmVmZXJlbmNlcyBhcmUgbG9zdCAKLVBBU1MgR2FyYmFnZS1jb2xsZWN0aW5nIGEgUmVhZGFibGVT
dHJlYW1SZWFkZXIgc2hvdWxkIG5vdCB1bmxvY2sgaXRzIHN0cmVhbSAKLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9y
ZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1z
L2dhcmJhZ2UtY29sbGVjdGlvbi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
MzhlZDIwNTM0YzIwNjVkNTdhZmYyY2Y0YTg0YzY3YTk1OGRhMjRkLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNv
bGxlY3Rpb24uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIj48L3NjcmlwdD4KLQotPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSJnYXJiYWdlLWNvbGxlY3Rpb24uanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLSd1c2Ugc3Ry
aWN0JzsKLXdvcmtlcl90ZXN0KCdnYXJiYWdlLWNvbGxlY3Rpb24uanMnKTsKLTwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5qcyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFi
bGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGZiMDBjOTQ2YmJiNTJiMjNlZjZlZDhmY2QzNDBkYjkwZmUzOWRlODEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dh
cmJhZ2UtY29sbGVjdGlvbi5qcworKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLSd1c2Ug
c3RyaWN0JzsKLQotaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgewotICBzZWxmLmltcG9ydFNjcmlw
dHMoJy4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygn
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOwotfQotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewot
Ci0gIGxldCBjb250cm9sbGVyOwotICBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMp
IHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0KLSAgZ2FyYmFnZUNvbGxl
Y3QoKTsKLQotICByZXR1cm4gZGVsYXkoNTApLnRoZW4oKCkgPT4gewotICAgIGNvbnRyb2xsZXIu
Y2xvc2UoKTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gY29udHJv
bGxlci5jbG9zZSgpLCAnY2xvc2Ugc2hvdWxkIHRocm93IGEgVHlwZUVycm9yIHRoZSBzZWNvbmQg
dGltZScpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjb250cm9s
bGVyLmVycm9yKCksICdlcnJvciBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3Igb24gYSBjbG9zZWQg
c3RyZWFtJyk7Ci0gIH0pOwotCi19LCAnUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIG1ldGhvZHMg
c2hvdWxkIGNvbnRpbnVlIHdvcmtpbmcgcHJvcGVybHkgd2hlbiBzY3JpcHRzIGxvc2UgdGhlaXIg
cmVmZXJlbmNlIHRvIHRoZSAnICsKLSAgICdyZWFkYWJsZSBzdHJlYW0nKTsKLQotcHJvbWlzZV90
ZXN0KCgpID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsKLQotICBjb25zdCBjbG9zZWRQcm9taXNl
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVy
ID0gYzsKLSAgICB9Ci0gIH0pLmdldFJlYWRlcigpLmNsb3NlZDsKLQotICBnYXJiYWdlQ29sbGVj
dCgpOwotCi0gIHJldHVybiBkZWxheSg1MCkudGhlbigoKSA9PiBjb250cm9sbGVyLmNsb3NlKCkp
LnRoZW4oKCkgPT4gY2xvc2VkUHJvbWlzZSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBjbG9zZWQg
cHJvbWlzZSBzaG91bGQgZnVsZmlsbCBldmVuIGlmIHRoZSBzdHJlYW0gYW5kIHJlYWRlciBKUyBy
ZWZlcmVuY2VzIGFyZSBsb3N0Jyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCB0
aGVFcnJvciA9IG5ldyBFcnJvcignYm9vJyk7Ci0gIGxldCBjb250cm9sbGVyOwotCi0gIGNvbnN0
IGNsb3NlZFByb21pc2UgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAg
ICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOwotCi0g
IGdhcmJhZ2VDb2xsZWN0KCk7Ci0KLSAgcmV0dXJuIGRlbGF5KDUwKS50aGVuKCgpID0+IGNvbnRy
b2xsZXIuZXJyb3IodGhlRXJyb3IpKQotICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gcHJv
bWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCBjbG9zZWRQcm9taXNlKSk7Ci0KLX0sICdSZWFkYWJs
ZVN0cmVhbSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgcmVqZWN0IGV2ZW4gaWYgc3RyZWFtIGFuZCBy
ZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9zdCcpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewot
Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHt9KTsKLQotICBycy5nZXRSZWFkZXIo
KTsKLQotICBnYXJiYWdlQ29sbGVjdCgpOwotCi0gIHJldHVybiBkZWxheSg1MCkudGhlbigoKSA9
PiBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksCi0g
ICAgJ29sZCByZWFkZXIgc2hvdWxkIHN0aWxsIGJlIGxvY2tpbmcgdGhlIHN0cmVhbSBldmVuIGFm
dGVyIGdhcmJhZ2UgY29sbGVjdGlvbicpKTsKLQotfSwgJ0dhcmJhZ2UtY29sbGVjdGluZyBhIFJl
YWRhYmxlU3RyZWFtUmVhZGVyIHNob3VsZCBub3QgdW5sb2NrIGl0cyBzdHJlYW0nKTsKLQotZG9u
ZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9y
ZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBjZDg1MmI1NThlZGQ4YzJmOTY5ZGE3MjQ3YmVlY2I0MzdiNTQ5MGI5Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFt
cy9nZW5lcmFsLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLQot
UEFTUyBSZWFkYWJsZVN0cmVhbSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBubyBlcnJvcnMgCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtIGNhbid0IGJlIGNvbnN0cnVjdGVkIHdpdGggZ2FyYmFnZSAKLUZB
SUwgUmVhZGFibGVTdHJlYW0gaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qg
b2YgcHJvcGVydGllcyBhc3NlcnRfZmFsc2U6IG1ldGhvZCBzaG91bGQgYmUgbm9uLWVudW1lcmFi
bGUgZXhwZWN0ZWQgZmFsc2UgZ290IHRydWUKLVBBU1MgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0
b3Igc2hvdWxkIHRocm93IGZvciBub24tZnVuY3Rpb24gc3RhcnQgYXJndW1lbnRzIAotUEFTUyBS
ZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBhcyBjYW5j
ZWwgYXJndW1lbnQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbiBnZXQgaW5p
dGlhbCBnYXJiYWdlIGFzIHB1bGwgYXJndW1lbnQgCi1GQUlMIFJlYWRhYmxlU3RyZWFtIHN0YXJ0
IHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgcHJvcGVyIHBhcmFtZXRlcnMgYXNzZXJ0X2ZhbHNl
OiBjbG9zZSBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUgZXhwZWN0ZWQgZmFsc2UgZ290IHRydWUK
LVBBU1MgUmVhZGFibGVTdHJlYW0gc3RhcnQgY29udHJvbGxlciBwYXJhbWV0ZXIgc2hvdWxkIGJl
IGV4dGVuc2libGUgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHNob3VsZCBiZSBhYmxlIHRvIGNhbGwg
c3RhcnQgbWV0aG9kIHdpdGhpbiBwcm90b3R5cGUgY2hhaW4gb2YgaXRzIHNvdXJjZSAKLVBBU1Mg
UmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSAK
LVBBU1MgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJv
bWlzZSBhbmQgcmVqZWN0IGl0IAotUEFTUyBSZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0
byBlbnF1ZXVlIGRpZmZlcmVudCBvYmplY3RzLiAKLVBBU1MgUmVhZGFibGVTdHJlYW06IGlmIHB1
bGwgcmVqZWN0cywgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0gCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgb25jZSB1cG9uIHN0YXJ0aW5nIHRoZSBzdHJlYW0g
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxsIHdoZW4gdHJ5aW5nIHRvIHJl
YWQgZnJvbSBhIHN0YXJ0ZWQsIGVtcHR5IHN0cmVhbSAKLVBBU1MgUmVhZGFibGVTdHJlYW06IHNo
b3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIG9uIGEgbm9uLWVtcHR5IHN0cmVhbSByZWFkIGZyb20g
YmVmb3JlIHN0YXJ0IGZ1bGZpbGxzIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkg
Y2FsbCBwdWxsIG9uY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBhZnRlciBzdGFy
dCBmdWxmaWxscyAKLVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHB1bGwgaW4gcmVh
Y3Rpb24gdG8gcmVhZCgpaW5nIHRoZSBsYXN0IGNodW5rLCBpZiBub3QgZHJhaW5pbmcgCi1QQVNT
IFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCgpIGluIHJlYWN0aW9uIHRvIHJl
YWQoKWluZyB0aGUgbGFzdCBjaHVuaywgaWYgZHJhaW5pbmcgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
OiBzaG91bGQgbm90IGNhbGwgcHVsbCB1bnRpbCB0aGUgcHJldmlvdXMgcHVsbCBjYWxsJ3MgcHJv
bWlzZSBmdWxmaWxscyAKLVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBwdWxsIGFmdGVyIHN0
YXJ0LCBhbmQgYWZ0ZXIgZXZlcnkgcmVhZCAKLVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBu
b3QgY2FsbCBwdWxsIGFmdGVyIHN0YXJ0IGlmIHRoZSBzdHJlYW0gaXMgbm93IGNsb3NlZCAKLVBB
U1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHB1bGwgYWZ0ZXIgZW5xdWV1ZWluZyBmcm9t
IGluc2lkZSBwdWxsICh3aXRoIG5vIHJlYWQgcmVxdWVzdHMpLCBpZiBzdHJhdGVneSBhbGxvd3Mg
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtIHB1bGwgc2hvdWxkIGJlIGFibGUgdG8gY2xvc2UgYSBzdHJl
YW0uIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgd2hlbiB0aGUg
c3RyZWFtIGlzIHJlYWRhYmxlIGJ1dCBkcmFpbmluZyAKLVBBU1MgUmVhZGFibGVTdHJlYW06IGVu
cXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyBjbG9zZWQgCi1QQVNTIFJlYWRh
YmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB0aGUgc3RvcmVkIGVycm9yIHdoZW4gdGhl
IHN0cmVhbSBpcyBlcnJvcmVkIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgdW5k
ZXJseWluZyBzb3VyY2UgbWV0aG9kcyBhcyBtZXRob2RzIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBz
dHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91bGQgZ2l2ZSBkZXNpcmVkU2l6ZSBv
ZiAxIHRvIHN0YXJ0LCBkZWNyZWFzaW5nIGJ5IDEgcGVyIGVucXVldWUgCi1QQVNTIFJlYWRhYmxl
U3RyZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNob3VsZCBjb250aW51ZSBn
aXZpbmcgZGVzaXJlZFNpemUgb2YgMSBpZiB0aGUgY2h1bmtzIGFyZSByZWFkIGltbWVkaWF0ZWx5
IAotUEFTUyBSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHJhbmRv
bSBwdXNoIHNvdXJjZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRh
cHRpbmcgYSBzeW5jIHB1bGwgc291cmNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlv
biB0ZXN0OiBhZGFwdGluZyBhbiBhc3luYyBwdWxsIHNvdXJjZSAKLUZBSUwgTG9hZCBnZW5lcmFs
LmpzIHdpdGggU2hhcmVkV29ya2VyIGFzc2VydF91bnJlYWNoZWQ6IFNoYXJlZFdvcmtlciBpcyB1
bmF2YWlsYWJsZSBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKLUZBSUwgVW50aXRsZWQgdW5kZWZp
bmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ25hdmlnYXRvci5zZXJ2aWNlV29ya2Vy
LmdldFJlZ2lzdHJhdGlvbicpCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbiBiZSBjb25zdHJ1Y3Rl
ZCB3aXRoIG5vIGVycm9ycyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuJ3QgYmUgY29uc3RydWN0
ZWQgd2l0aCBnYXJiYWdlIAotRkFJTCBSZWFkYWJsZVN0cmVhbSBpbnN0YW5jZXMgc2hvdWxkIGhh
dmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzIGFzc2VydF9mYWxzZTogbWV0aG9kIHNo
b3VsZCBiZSBub24tZW51bWVyYWJsZSBleHBlY3RlZCBmYWxzZSBnb3QgdHJ1ZQotUEFTUyBSZWFk
YWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZm9yIG5vbi1mdW5jdGlvbiBzdGFy
dCBhcmd1bWVudHMgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbiBnZXQgaW5p
dGlhbCBnYXJiYWdlIGFzIGNhbmNlbCBhcmd1bWVudCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY29u
c3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgcHVsbCBhcmd1bWVudCAKLUZBSUwg
UmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBwcm9wZXIgcGFy
YW1ldGVycyBhc3NlcnRfZmFsc2U6IGNsb3NlIHNob3VsZCBiZSBub24tZW51bWVyYWJsZSBleHBl
Y3RlZCBmYWxzZSBnb3QgdHJ1ZQotUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBjb250cm9sbGVy
IHBhcmFtZXRlciBzaG91bGQgYmUgZXh0ZW5zaWJsZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gc2hv
dWxkIGJlIGFibGUgdG8gY2FsbCBzdGFydCBtZXRob2Qgd2l0aGluIHByb3RvdHlwZSBjaGFpbiBv
ZiBpdHMgc291cmNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0
byByZXR1cm4gYSBwcm9taXNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUg
YWJsZSB0byByZXR1cm4gYSBwcm9taXNlIGFuZCByZWplY3QgaXQgCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtIHNob3VsZCBiZSBhYmxlIHRvIGVucXVldWUgZGlmZmVyZW50IG9iamVjdHMuIAotUEFTUyBS
ZWFkYWJsZVN0cmVhbTogaWYgcHVsbCByZWplY3RzLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVh
bSAKLVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIHVwb24g
c3RhcnRpbmcgdGhlIHN0cmVhbSAKLVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHB1
bGwgd2hlbiB0cnlpbmcgdG8gcmVhZCBmcm9tIGEgc3RhcnRlZCwgZW1wdHkgc3RyZWFtIAotUEFT
UyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2Ugb24gYSBub24tZW1w
dHkgc3RyZWFtIHJlYWQgZnJvbSBiZWZvcmUgc3RhcnQgZnVsZmlsbHMgCi1QQVNTIFJlYWRhYmxl
U3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0g
cmVhZCBmcm9tIGFmdGVyIHN0YXJ0IGZ1bGZpbGxzIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hv
dWxkIGNhbGwgcHVsbCBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlm
IG5vdCBkcmFpbmluZyAKLVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxs
KCkgaW4gcmVhY3Rpb24gdG8gcmVhZCgpaW5nIHRoZSBsYXN0IGNodW5rLCBpZiBkcmFpbmluZyAK
LVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIHVudGlsIHRoZSBwcmV2
aW91cyBwdWxsIGNhbGwncyBwcm9taXNlIGZ1bGZpbGxzIAotUEFTUyBSZWFkYWJsZVN0cmVhbTog
c2hvdWxkIHB1bGwgYWZ0ZXIgc3RhcnQsIGFuZCBhZnRlciBldmVyeSByZWFkIAotUEFTUyBSZWFk
YWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgYWZ0ZXIgc3RhcnQgaWYgdGhlIHN0cmVh
bSBpcyBub3cgY2xvc2VkIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCBh
ZnRlciBlbnF1ZXVlaW5nIGZyb20gaW5zaWRlIHB1bGwgKHdpdGggbm8gcmVhZCByZXF1ZXN0cyks
IGlmIHN0cmF0ZWd5IGFsbG93cyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcHVsbCBzaG91bGQgYmUg
YWJsZSB0byBjbG9zZSBhIHN0cmVhbS4gCi1QQVNTIFJlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNo
b3VsZCB0aHJvdyB3aGVuIHRoZSBzdHJlYW0gaXMgcmVhZGFibGUgYnV0IGRyYWluaW5nIAotUEFT
UyBSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgd2hlbiB0aGUgc3RyZWFtIGlz
IGNsb3NlZCAKLVBBU1MgUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBz
dG9yZWQgZXJyb3Igd2hlbiB0aGUgc3RyZWFtIGlzIGVycm9yZWQgCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRob2RzIGFzIG1ldGhvZHMgCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNob3Vs
ZCBnaXZlIGRlc2lyZWRTaXplIG9mIDEgdG8gc3RhcnQsIGRlY3JlYXNpbmcgYnkgMSBwZXIgZW5x
dWV1ZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRl
Z3kgc2hvdWxkIGNvbnRpbnVlIGdpdmluZyBkZXNpcmVkU2l6ZSBvZiAxIGlmIHRoZSBjaHVua3Mg
YXJlIHJlYWQgaW1tZWRpYXRlbHkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRl
c3Q6IGFkYXB0aW5nIGEgcmFuZG9tIHB1c2ggc291cmNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBp
bnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHN5bmMgcHVsbCBzb3VyY2UgCi1QQVNTIFJlYWRh
YmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGFuIGFzeW5jIHB1bGwgc291cmNl
IAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1z
dHJlYW1zL2dlbmVyYWwuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjUyNDFm
ZmU4ZjA3MmZiZmQ1ZjY3NmMwNjlmMTU0YjQyOWIwMTQ2ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlcnMvcmVz
b3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3Rlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9ycy11dGlscy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iZ2VuZXJhbC5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotd29ya2VyX3Rlc3QoJ2dlbmVyYWwuanMnKTsK
LTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuanMgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRh
YmxlLXN0cmVhbXMvZ2VuZXJhbC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDRk
MWE0YTZjYTQwM2NkZjRkNTQ0YjUwZmI2ZTEyNjY1MzZmYjczZC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5qcwor
KysgL2Rldi9udWxsCkBAIC0xLDgzMSArMCwwIEBACi0ndXNlIHN0cmljdCc7Ci0KLWlmIChzZWxm
LmltcG9ydFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvdGVz
dC11dGlscy5qcycpOwotICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9ycy11dGls
cy5qcycpOwotICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMn
KTsKLX0KLQotdGVzdCgoKSA9PiB7Ci0KLSAgbmV3IFJlYWRhYmxlU3RyZWFtKCk7IC8vIFJlYWRh
YmxlU3RyZWFtIGNvbnN0cnVjdGVkIHdpdGggbm8gcGFyYW1ldGVycwotICBuZXcgUmVhZGFibGVT
dHJlYW0oeyB9KTsgLy8gUmVhZGFibGVTdHJlYW0gY29uc3RydWN0ZWQgd2l0aCBhbiBlbXB0eSBv
YmplY3QgYXMgcGFyYW1ldGVyCi0gIG5ldyBSZWFkYWJsZVN0cmVhbSh1bmRlZmluZWQpOyAvLyBS
ZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RlZCB3aXRoIHVuZGVmaW5lZCBhcyBwYXJhbWV0ZXIKLQot
ICBsZXQgeDsKLSAgbmV3IFJlYWRhYmxlU3RyZWFtKHgpOyAvLyBSZWFkYWJsZVN0cmVhbSBjb25z
dHJ1Y3RlZCB3aXRoIGFuIHVuZGVmaW5lZCB2YXJpYWJsZSBhcyBwYXJhbWV0ZXIKLQotfSwgJ1Jl
YWRhYmxlU3RyZWFtIGNhbiBiZSBjb25zdHJ1Y3RlZCB3aXRoIG5vIGVycm9ycycpOwotCi10ZXN0
KCgpID0+IHsKLQotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJl
YWRhYmxlU3RyZWFtKG51bGwpLCAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHdoZW4gdGhlIHNv
dXJjZSBpcyBudWxsJyk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBjYW5cJ3QgYmUgY29uc3RydWN0
ZWQgd2l0aCBnYXJiYWdlJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IG1ldGhvZHMgPSBb
J2NhbmNlbCcsICdjb25zdHJ1Y3RvcicsICdnZXRSZWFkZXInLCAncGlwZVRocm91Z2gnLCAncGlw
ZVRvJywgJ3RlZSddOwotICBjb25zdCBwcm9wZXJ0aWVzID0gbWV0aG9kcy5jb25jYXQoWydsb2Nr
ZWQnXSkuc29ydCgpOwotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci0gIGNv
bnN0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHJzKTsKLQotICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvKS5zb3J0KCksIHByb3BlcnRp
ZXMsICdzaG91bGQgaGF2ZSBhbGwgdGhlIGNvcnJlY3QgbWV0aG9kcycpOwotCi0gIGZvciAoY29u
c3QgbSBvZiBtZXRob2RzKSB7Ci0gICAgY29uc3QgcHJvcERlc2MgPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKHByb3RvLCBtKTsKLSAgICBhc3NlcnRfZmFsc2UocHJvcERlc2MuZW51
bWVyYWJsZSwgJ21ldGhvZCBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUnKTsKLSAgICBhc3NlcnRf
dHJ1ZShwcm9wRGVzYy5jb25maWd1cmFibGUsICdtZXRob2Qgc2hvdWxkIGJlIGNvbmZpZ3VyYWJs
ZScpOwotICAgIGFzc2VydF90cnVlKHByb3BEZXNjLndyaXRhYmxlLCAnbWV0aG9kIHNob3VsZCBi
ZSB3cml0YWJsZScpOwotICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJzW21dLCAnZnVuY3Rpb24n
LCAnbWV0aG9kIHNob3VsZCBiZSBhIGZ1bmN0aW9uJyk7Ci0gIH0KLQotICBjb25zdCBsb2NrZWRQ
cm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sICdsb2NrZWQn
KTsKLSAgYXNzZXJ0X2ZhbHNlKGxvY2tlZFByb3BEZXNjLmVudW1lcmFibGUsICdsb2NrZWQgc2hv
dWxkIGJlIG5vbi1lbnVtZXJhYmxlJyk7Ci0gIGFzc2VydF9lcXVhbHMobG9ja2VkUHJvcERlc2Mu
d3JpdGFibGUsIHVuZGVmaW5lZCwgJ2xvY2tlZCBzaG91bGQgbm90IGJlIGEgZGF0YSBwcm9wZXJ0
eScpOwotICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBsb2NrZWRQcm9wRGVzYy5nZXQsICdmdW5jdGlv
bicsICdsb2NrZWQgc2hvdWxkIGhhdmUgYSBnZXR0ZXInKTsKLSAgYXNzZXJ0X2VxdWFscyhsb2Nr
ZWRQcm9wRGVzYy5zZXQsIHVuZGVmaW5lZCwgJ2xvY2tlZCBzaG91bGQgbm90IGhhdmUgYSBzZXR0
ZXInKTsKLSAgYXNzZXJ0X3RydWUobG9ja2VkUHJvcERlc2MuY29uZmlndXJhYmxlLCAnbG9ja2Vk
IHNob3VsZCBiZSBjb25maWd1cmFibGUnKTsKLQotICBhc3NlcnRfZXF1YWxzKHJzLmNhbmNlbC5s
ZW5ndGgsIDEsICdjYW5jZWwgc2hvdWxkIGhhdmUgMSBwYXJhbWV0ZXInKTsKLSAgYXNzZXJ0X2Vx
dWFscyhycy5jb25zdHJ1Y3Rvci5sZW5ndGgsIDAsICdjb25zdHJ1Y3RvciBzaG91bGQgaGF2ZSBu
byBwYXJhbWV0ZXJzJyk7Ci0gIGFzc2VydF9lcXVhbHMocnMuZ2V0UmVhZGVyLmxlbmd0aCwgMCwg
J2dldFJlYWRlciBzaG91bGQgaGF2ZSBubyBwYXJhbWV0ZXJzJyk7Ci0gIGFzc2VydF9lcXVhbHMo
cnMucGlwZVRocm91Z2gubGVuZ3RoLCAyLCAncGlwZVRocm91Z2ggc2hvdWxkIGhhdmUgMiBwYXJh
bWV0ZXJzJyk7Ci0gIGFzc2VydF9lcXVhbHMocnMucGlwZVRvLmxlbmd0aCwgMSwgJ3BpcGVUbyBz
aG91bGQgaGF2ZSAxIHBhcmFtZXRlcicpOwotICBhc3NlcnRfZXF1YWxzKHJzLnRlZS5sZW5ndGgs
IDAsICd0ZWUgc2hvdWxkIGhhdmUgbm8gcGFyYW1ldGVycycpOwotCi19LCAnUmVhZGFibGVTdHJl
YW0gaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2YgcHJvcGVydGllcycp
OwotCi10ZXN0KCgpID0+IHsKLQotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkg
PT4gewotICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7IHN0YXJ0OiAncG90YXRvJyB9KTsKLSAgfSwg
J2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIHN0YXJ0IGlzIG5vdCBhIGZ1bmN0aW9uJyk7
Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZm9yIG5vbi1m
dW5jdGlvbiBzdGFydCBhcmd1bWVudHMnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgbmV3IFJlYWRh
YmxlU3RyZWFtKHsgY2FuY2VsOiAnMicgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBjb25zdHJ1
Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBhcyBjYW5jZWwgYXJndW1lbnQnKTsKLQotdGVz
dCgoKSA9PiB7Ci0KLSAgbmV3IFJlYWRhYmxlU3RyZWFtKHsgcHVsbDogeyB9IH0pOwotCi19LCAn
UmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgcHVs
bCBhcmd1bWVudCcpOwotCi10ZXN0KCgpID0+IHsKLQotICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxz
ZTsKLQotICBjb25zdCBzb3VyY2UgPSB7Ci0gICAgc3RhcnQoY29udHJvbGxlcikgewotICAgICAg
YXNzZXJ0X2VxdWFscyh0aGlzLCBzb3VyY2UsICdzb3VyY2UgaXMgdGhpcyBkdXJpbmcgc3RhcnQn
KTsKLQotICAgICAgY29uc3QgbWV0aG9kcyA9IFsnY2xvc2UnLCAnZW5xdWV1ZScsICdlcnJvcics
ICdjb25zdHJ1Y3RvciddOwotICAgICAgY29uc3QgcHJvcGVydGllcyA9IFsnZGVzaXJlZFNpemUn
XS5jb25jYXQobWV0aG9kcykuc29ydCgpOwotICAgICAgY29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0
UHJvdG90eXBlT2YoY29udHJvbGxlcik7Ci0KLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoT2Jq
ZWN0LmdldE93blByb3BlcnR5TmFtZXMocHJvdG8pLnNvcnQoKSwgcHJvcGVydGllcywKLSAgICAg
ICAgJ3RoZSBjb250cm9sbGVyIHNob3VsZCBoYXZlIHRoZSByaWdodCBwcm9wZXJ0aWVzJyk7Ci0K
LSAgICAgIGZvciAoY29uc3QgbSBvZiBtZXRob2RzKSB7Ci0gICAgICAgIGNvbnN0IHByb3BEZXNj
ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgbSk7Ci0gICAgICAgIGFz
c2VydF9lcXVhbHModHlwZW9mIGNvbnRyb2xsZXJbbV0sICdmdW5jdGlvbicsIGBzaG91bGQgaGF2
ZSBhICR7bX0gbWV0aG9kYCk7Ci0gICAgICAgIGFzc2VydF9mYWxzZShwcm9wRGVzYy5lbnVtZXJh
YmxlLCBtICsgJyBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUnKTsKLSAgICAgICAgYXNzZXJ0X3Ry
dWUocHJvcERlc2MuY29uZmlndXJhYmxlLCBtICsgJyBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7
Ci0gICAgICAgIGFzc2VydF90cnVlKHByb3BEZXNjLndyaXRhYmxlLCBtICsgJyBzaG91bGQgYmUg
d3JpdGFibGUnKTsKLSAgICAgIH0KLQotICAgICAgY29uc3QgZGVzaXJlZFNpemVQcm9wRGVzYyA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sICdkZXNpcmVkU2l6ZScpOwot
ICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2lyZWRTaXplUHJvcERlc2MuZW51bWVyYWJsZSwgJ2Rlc2ly
ZWRTaXplIHNob3VsZCBiZSBub24tZW51bWVyYWJsZScpOwotICAgICAgYXNzZXJ0X2VxdWFscyhk
ZXNpcmVkU2l6ZVByb3BEZXNjLndyaXRhYmxlLCB1bmRlZmluZWQsICdkZXNpcmVkU2l6ZSBzaG91
bGQgbm90IGJlIGEgZGF0YSBwcm9wZXJ0eScpOwotICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2Yg
ZGVzaXJlZFNpemVQcm9wRGVzYy5nZXQsICdmdW5jdGlvbicsICdkZXNpcmVkU2l6ZSBzaG91bGQg
aGF2ZSBhIGdldHRlcicpOwotICAgICAgYXNzZXJ0X2VxdWFscyhkZXNpcmVkU2l6ZVByb3BEZXNj
LnNldCwgdW5kZWZpbmVkLCAnZGVzaXJlZFNpemUgc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyJyk7
Ci0gICAgICBhc3NlcnRfdHJ1ZShkZXNpcmVkU2l6ZVByb3BEZXNjLmNvbmZpZ3VyYWJsZSwgJ2Rl
c2lyZWRTaXplIHNob3VsZCBiZSBjb25maWd1cmFibGUnKTsKLQotICAgICAgYXNzZXJ0X2VxdWFs
cyhjb250cm9sbGVyLmNsb3NlLmxlbmd0aCwgMCwgJ2Nsb3NlIHNob3VsZCBoYXZlIG5vIHBhcmFt
ZXRlcnMnKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5jb25zdHJ1Y3Rvci5sZW5n
dGgsIDEsICdjb25zdHJ1Y3RvciBzaG91bGQgaGF2ZSAxIHBhcmFtZXRlcicpOwotICAgICAgYXNz
ZXJ0X2VxdWFscyhjb250cm9sbGVyLmVucXVldWUubGVuZ3RoLCAxLCAnZW5xdWV1ZSBzaG91bGQg
aGF2ZSAxIHBhcmFtZXRlcicpOwotICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmVycm9y
Lmxlbmd0aCwgMSwgJ2Vycm9yIHNob3VsZCBoYXZlIDEgcGFyYW1ldGVyJyk7Ci0KLSAgICAgIHN0
YXJ0Q2FsbGVkID0gdHJ1ZTsKLSAgICB9Ci0gIH07Ci0KLSAgbmV3IFJlYWRhYmxlU3RyZWFtKHNv
dXJjZSk7Ci0gIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFt
IHN0YXJ0IHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgcHJvcGVyIHBhcmFtZXRlcnMnKTsKLQot
dGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7Ci0gIGNvbnN0IHNvdXJj
ZSA9IHsKLSAgICBzdGFydChjb250cm9sbGVyKSB7Ci0gICAgICBjb25zdCBwcm9wZXJ0aWVzID0g
WydjbG9zZScsICdjb25zdHJ1Y3RvcicsICdkZXNpcmVkU2l6ZScsICdlbnF1ZXVlJywgJ2Vycm9y
J107Ci0gICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVz
KE9iamVjdC5nZXRQcm90b3R5cGVPZihjb250cm9sbGVyKSkuc29ydCgpLCBwcm9wZXJ0aWVzLAot
ICAgICAgICAncHJvdG90eXBlIHNob3VsZCBoYXZlIHRoZSByaWdodCBwcm9wZXJ0aWVzJyk7Ci0K
LSAgICAgIGNvbnRyb2xsZXIudGVzdCA9ICcnOwotICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhP
YmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPYmplY3QuZ2V0UHJvdG90eXBlT2YoY29udHJvbGxl
cikpLnNvcnQoKSwgcHJvcGVydGllcywKLSAgICAgICAgJ3Byb3RvdHlwZSBzaG91bGQgc3RpbGwg
aGF2ZSB0aGUgcmlnaHQgcHJvcGVydGllcycpOwotICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoT2Jq
ZWN0LmdldE93blByb3BlcnR5TmFtZXMoY29udHJvbGxlcikuaW5kZXhPZigndGVzdCcpLCAtMSwK
LSAgICAgICAgJyJ0ZXN0IiBzaG91bGQgYmUgYSBwcm9wZXJ0eSBvZiB0aGUgY29udHJvbGxlcicp
OwotCi0gICAgICBzdGFydENhbGxlZCA9IHRydWU7Ci0gICAgfQotICB9OwotCi0gIG5ldyBSZWFk
YWJsZVN0cmVhbShzb3VyY2UpOwotICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7Ci0KLX0sICdS
ZWFkYWJsZVN0cmVhbSBzdGFydCBjb250cm9sbGVyIHBhcmFtZXRlciBzaG91bGQgYmUgZXh0ZW5z
aWJsZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGZ1bmN0aW9uIFNpbXBsZVN0cmVh
bVNvdXJjZSgpIHt9Ci0gIGxldCByZXNvbHZlOwotICBjb25zdCBwcm9taXNlID0gbmV3IFByb21p
c2UociA9PiByZXNvbHZlID0gcik7Ci0gIFNpbXBsZVN0cmVhbVNvdXJjZS5wcm90b3R5cGUgPSB7
Ci0gICAgc3RhcnQ6IHJlc29sdmUKLSAgfTsKLQotICBuZXcgUmVhZGFibGVTdHJlYW0obmV3IFNp
bXBsZVN0cmVhbVNvdXJjZSgpKTsKLSAgcmV0dXJuIHByb21pc2U7Ci0KLX0sICdSZWFkYWJsZVN0
cmVhbSBzaG91bGQgYmUgYWJsZSB0byBjYWxsIHN0YXJ0IG1ldGhvZCB3aXRoaW4gcHJvdG90eXBl
IGNoYWluIG9mIGl0cyBzb3VyY2UnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25z
dCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgcmV0dXJu
IGRlbGF5KDUpLnRoZW4oKCkgPT4gewotICAgICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICAgICAg
Yy5jbG9zZSgpOwotICAgICAgfSk7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBy
cy5nZXRSZWFkZXIoKTsKLSAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKLSAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICd2YWx1
ZSByZWFkIHNob3VsZCBiZSB0aGUgb25lIGVucXVldWVkJyk7Ci0gICAgcmV0dXJuIHJlYWRlci5j
bG9zZWQ7Ci0gIH0pOwotCi19LCAnUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUg
dG8gcmV0dXJuIGEgcHJvbWlzZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0
IHRoZUVycm9yID0gbmV3IEVycm9yKCdyZWplY3RlZCEnKTsKLSAgY29uc3QgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KCkgewotICAgICAgcmV0dXJuIGRlbGF5KDEpLnRoZW4o
KCkgPT4geyB0aHJvdyB0aGVFcnJvcjsgfSk7Ci0gICAgfQotICB9KTsKLQotICByZXR1cm4gcnMu
Z2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF91bnJlYWNoZWQoJ2Ns
b3NlZCBwcm9taXNlIHNob3VsZCBiZSByZWplY3RlZCcpOwotICB9LCBlID0+IHsKLSAgICBhc3Nl
cnRfZXF1YWxzKGUsIHRoZUVycm9yLCAncHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB0
aGUgc2FtZSBlcnJvcicpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3Vs
ZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJlamVjdCBpdCcpOwotCi1wcm9taXNl
X3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IG9iamVjdHMgPSBbCi0gICAgeyBwb3RhdG86ICdHaXZl
IG1lIG1vcmUhJyB9LAotICAgICd0ZXN0JywKLSAgICAxCi0gIF07Ci0KLSAgY29uc3QgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGZvciAoY29uc3QgbyBv
ZiBvYmplY3RzKSB7Ci0gICAgICAgIGMuZW5xdWV1ZShvKTsKLSAgICAgIH0KLSAgICAgIGMuY2xv
c2UoKTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwot
Ci0gIHJldHVybiBQcm9taXNlLmFsbChbcmVhZGVyLnJlYWQoKSwgcmVhZGVyLnJlYWQoKSwgcmVh
ZGVyLnJlYWQoKSwgcmVhZGVyLmNsb3NlZF0pLnRoZW4ociA9PiB7Ci0gICAgYXNzZXJ0X29iamVj
dF9lcXVhbHMoclswXSwgeyB2YWx1ZTogb2JqZWN0c1swXSwgZG9uZTogZmFsc2UgfSwgJ3ZhbHVl
IHJlYWQgc2hvdWxkIGJlIHRoZSBvbmUgZW5xdWV1ZWQnKTsKLSAgICBhc3NlcnRfb2JqZWN0X2Vx
dWFscyhyWzFdLCB7IHZhbHVlOiBvYmplY3RzWzFdLCBkb25lOiBmYWxzZSB9LCAndmFsdWUgcmVh
ZCBzaG91bGQgYmUgdGhlIG9uZSBlbnF1ZXVlZCcpOwotICAgIGFzc2VydF9vYmplY3RfZXF1YWxz
KHJbMl0sIHsgdmFsdWU6IG9iamVjdHNbMl0sIGRvbmU6IGZhbHNlIH0sICd2YWx1ZSByZWFkIHNo
b3VsZCBiZSB0aGUgb25lIGVucXVldWVkJyk7Ci0gIH0pOwotCi19LCAnUmVhZGFibGVTdHJlYW0g
c2hvdWxkIGJlIGFibGUgdG8gZW5xdWV1ZSBkaWZmZXJlbnQgb2JqZWN0cy4nKTsKLQotcHJvbWlz
ZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcigncHVsbCBmYWlsdXJl
Jyk7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBwdWxsKCkgewotICAg
ICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0
IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gIGxldCBjbG9zZWQgPSBmYWxzZTsKLSAgbGV0
IHJlYWQgPSBmYWxzZTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgIHJlYWRlci5jbG9z
ZWQudGhlbigoKSA9PiB7Ci0gICAgICBhc3NlcnRfdW5yZWFjaGVkKCdjbG9zZWQgc2hvdWxkIGJl
IHJlamVjdGVkJyk7Ci0gICAgfSwgZSA9PiB7Ci0gICAgICBjbG9zZWQgPSB0cnVlOwotICAgICAg
YXNzZXJ0X3RydWUocmVhZCk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGUsIGVycm9yLCAnY2xvc2Vk
IHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHRoZSB0aHJvd24gZXJyb3InKTsKLSAgICB9KSwKLSAg
ICByZWFkZXIucmVhZCgpLnRoZW4oKCkgPT4gewotICAgICAgYXNzZXJ0X3VucmVhY2hlZCgncmVh
ZCgpIHNob3VsZCBiZSByZWplY3RlZCcpOwotICAgIH0sIGUgPT4gewotICAgICAgcmVhZCA9IHRy
dWU7Ci0gICAgICBhc3NlcnRfZmFsc2UoY2xvc2VkKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoZSwg
ZXJyb3IsICdyZWFkKCkgc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdGhlIHRocm93biBlcnJvcicp
OwotICAgIH0pCi0gIF0pOwotCi19LCAnUmVhZGFibGVTdHJlYW06IGlmIHB1bGwgcmVqZWN0cywg
aXQgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0nKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQot
ICBsZXQgcHVsbENvdW50ID0gMDsKLSAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNv
bHZlKCk7Ci0KLSAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydCgpIHsKLSAgICAgIHJl
dHVybiBzdGFydFByb21pc2U7Ci0gICAgfSwKLSAgICBwdWxsKCkgewotICAgICAgcHVsbENvdW50
Kys7Ci0gICAgfQotICB9KTsKLQotICByZXR1cm4gc3RhcnRQcm9taXNlLnRoZW4oKCkgPT4gewot
ICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIG9u
Y2Ugc3RhcnQgZmluaXNoZXMnKTsKLSAgICByZXR1cm4gZGVsYXkoMTApOwotICB9KS50aGVuKCgp
ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNh
bGxlZCBleGFjdGx5IG9uY2UnKTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxk
IG9ubHkgY2FsbCBwdWxsIG9uY2UgdXBvbiBzdGFydGluZyB0aGUgc3RyZWFtJyk7Ci0KLXByb21p
c2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHB1bGxDb3VudCA9IDA7Ci0KLSAgY29uc3QgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHB1bGwoYykgewotICAgICAgLy8gRG9uJ3QgZW5xdWV1
ZSBpbW1lZGlhdGVseSBhZnRlciBzdGFydC4gV2Ugd2FudCB0aGUgc3RyZWFtIHRvIGJlIGVtcHR5
IHdoZW4gd2UgY2FsbCAucmVhZCgpIG9uIGl0LgotICAgICAgaWYgKHB1bGxDb3VudCA+IDApIHsK
LSAgICAgICAgYy5lbnF1ZXVlKHB1bGxDb3VudCk7Ci0gICAgICB9Ci0gICAgICArK3B1bGxDb3Vu
dDsKLSAgICB9Ci0gIH0pOwotCi0gIHJldHVybiBkZWxheSgxKS50aGVuKCgpID0+IHsKLSAgICBh
c3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBvbmNlIHN0
YXJ0IGZpbmlzaGVzJyk7Ci0KLSAgICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLSAg
ICBjb25zdCByZWFkID0gcmVhZGVyLnJlYWQoKTsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3Vu
dCwgMiwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIHJlYWQgaXMgY2FsbGVkJyk7Ci0gICAg
cmV0dXJuIHJlYWQ7Ci0gIH0pLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHB1
bGxDb3VudCwgMywgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBhZ2FpbiBpbiByZWFjdGlvbiB0byBj
YWxsaW5nIHJlYWQnKTsKLSAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6
IDEsIGRvbmU6IGZhbHNlIH0sICd0aGUgcmVzdWx0IHJlYWQgc2hvdWxkIGJlIHRoZSBvbmUgZW5x
dWV1ZWQnKTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCB3
aGVuIHRyeWluZyB0byByZWFkIGZyb20gYSBzdGFydGVkLCBlbXB0eSBzdHJlYW0nKTsKLQotcHJv
bWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgcHVsbENvdW50ID0gMDsKLSAgY29uc3Qgc3RhcnRQ
cm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgICAgcmV0
dXJuIHN0YXJ0UHJvbWlzZTsKLSAgICB9LAotICAgIHB1bGwoKSB7Ci0gICAgICBwdWxsQ291bnQr
KzsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWQgPSBycy5nZXRSZWFkZXIoKS5yZWFkKCk7
Ci0gIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAwLCAnY2FsbGluZyByZWFkKCkgc2hvdWxkIG5v
dCBjYXVzZSBwdWxsIHRvIGJlIGNhbGxlZCB5ZXQnKTsKLQotICByZXR1cm4gc3RhcnRQcm9taXNl
LnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91
bGQgYmUgY2FsbGVkIG9uY2Ugc3RhcnQgZmluaXNoZXMnKTsKLSAgICByZXR1cm4gcmVhZDsKLSAg
fSkudGhlbihyID0+IHsKLSAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScs
IGRvbmU6IGZhbHNlIH0sICdmaXJzdCByZWFkKCkgc2hvdWxkIHJldHVybiBmaXJzdCBjaHVuaycp
OwotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgbm90IGhhdmUg
YmVlbiBjYWxsZWQgYWdhaW4nKTsKLSAgICByZXR1cm4gZGVsYXkoMTApOwotICB9KS50aGVuKCgp
ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNh
bGxlZCBleGFjdGx5IG9uY2UnKTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxk
IG9ubHkgY2FsbCBwdWxsIG9uY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBiZWZv
cmUgc3RhcnQgZnVsZmlsbHMnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgcHVs
bENvdW50ID0gMDsKLSAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0K
LSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAg
IGMuZW5xdWV1ZSgnYScpOwotICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKLSAgICB9LAotICAg
IHB1bGwoKSB7Ci0gICAgICBwdWxsQ291bnQrKzsKLSAgICB9Ci0gIH0pOwotCi0gIHJldHVybiBz
dGFydFByb21pc2UudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAs
ICdwdWxsIHNob3VsZCBub3QgYmUgY2FsbGVkIG9uY2Ugc3RhcnQgZmluaXNoZXMsIHNpbmNlIHRo
ZSBxdWV1ZSBpcyBmdWxsJyk7Ci0KLSAgICBjb25zdCByZWFkID0gcnMuZ2V0UmVhZGVyKCkucmVh
ZCgpOwotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAnY2FsbGluZyByZWFkKCkgc2hv
dWxkIGNhdXNlIHB1bGwgdG8gYmUgY2FsbGVkIGltbWVkaWF0ZWx5Jyk7Ci0gICAgcmV0dXJuIHJl
YWQ7Ci0gIH0pLnRoZW4ociA9PiB7Ci0gICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1
ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgcmVhZCgpIHNob3VsZCByZXR1cm4gZmlyc3Qg
Y2h1bmsnKTsKLSAgICByZXR1cm4gZGVsYXkoMTApOwotICB9KS50aGVuKCgpID0+IHsKLSAgICBh
c3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5
IG9uY2UnKTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBw
dWxsIG9uY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBhZnRlciBzdGFydCBmdWxm
aWxscycpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBwdWxsQ291bnQgPSAwOwot
ICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZl
KCk7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsK
LSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKLSAgICB9
LAotICAgIHB1bGwoKSB7Ci0gICAgICArK3B1bGxDb3VudDsKLSAgICB9Ci0gIH0pOwotCi0gIGNv
bnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotICByZXR1cm4gc3RhcnRQcm9taXNlLnRoZW4o
KCkgPT4gewotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgaGF2
ZSBiZWVuIGNhbGxlZCBvbmNlIGJ5IHRoZSB0aW1lIHRoZSBzdHJlYW0gc3RhcnRzJyk7Ci0KLSAg
ICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwg
MSwgJ3B1bGwgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkIGFnYWluIGFmdGVyIGVucXVldWUn
KTsKLQotICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICB9KS50aGVuKCgpID0+IHsKLSAgICBh
c3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMiwgJ3B1bGwgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQg
YWdhaW4gYWZ0ZXIgcmVhZCcpOwotCi0gICAgcmV0dXJuIGRlbGF5KDEwKTsKLSAgfSkudGhlbigo
KSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDIsICdwdWxsIHNob3VsZCBiZSBj
YWxsZWQgZXhhY3RseSB0d2ljZScpOwotICB9KTsKLX0sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxk
IGNhbGwgcHVsbCBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIG5v
dCBkcmFpbmluZycpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBwdWxsQ291bnQg
PSAwOwotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5y
ZXNvbHZlKCk7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0
KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsK
LSAgICB9LAotICAgIHB1bGwoKSB7Ci0gICAgICArK3B1bGxDb3VudDsKLSAgICB9Ci0gIH0pOwot
Ci0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gIHJldHVybiBzdGFydFByb21p
c2UudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNo
b3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UgYnkgdGhlIHRpbWUgdGhlIHN0cmVhbSBzdGFydHMn
KTsKLQotICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOwotICAgIGFzc2VydF9lcXVhbHMocHVs
bENvdW50LCAxLCAncHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQgYWdhaW4gYWZ0ZXIg
ZW5xdWV1ZScpOwotCi0gICAgY29udHJvbGxlci5jbG9zZSgpOwotCi0gICAgcmV0dXJuIHJlYWRl
ci5yZWFkKCk7Ci0gIH0pLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50
LCAxLCAncHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQgYSBzZWNvbmQgdGltZSBhZnRl
ciByZWFkJyk7Ci0KLSAgICByZXR1cm4gZGVsYXkoMTApOwotICB9KS50aGVuKCgpID0+IHsKLSAg
ICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFj
dGx5IG9uY2UnKTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxs
IHB1bGwoKSBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIGRyYWlu
aW5nJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHJlc29sdmU7Ci0gIGxldCBy
ZXR1cm5lZFByb21pc2U7Ci0gIGxldCB0aW1lc0NhbGxlZCA9IDA7Ci0gIGNvbnN0IHN0YXJ0UHJv
bWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOwotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKLSAgICBzdGFydCgpIHsKLSAgICAgIHJldHVybiBzdGFydFByb21pc2U7Ci0gICAgfSwK
LSAgICBwdWxsKGMpIHsKLSAgICAgIGMuZW5xdWV1ZSgrK3RpbWVzQ2FsbGVkKTsKLSAgICAgIHJl
dHVybmVkUHJvbWlzZSA9IG5ldyBQcm9taXNlKHIgPT4gcmVzb2x2ZSA9IHIpOwotICAgICAgcmV0
dXJuIHJldHVybmVkUHJvbWlzZTsKLSAgICB9Ci0gIH0pOwotICBjb25zdCByZWFkZXIgPSBycy5n
ZXRSZWFkZXIoKTsKLQotICByZXR1cm4gc3RhcnRQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIHJl
dHVybiByZWFkZXIucmVhZCgpOwotICB9KS50aGVuKHJlc3VsdDEgPT4gewotICAgIGFzc2VydF9l
cXVhbHModGltZXNDYWxsZWQsIDEsCi0gICAgICAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxl
ZCBvbmNlIGFmdGVyIHN0YXJ0LCBidXQgbm90IHlldCBoYXZlIGJlZW4gY2FsbGVkIGEgc2Vjb25k
IHRpbWUnKTsKLSAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQxLCB7IHZhbHVlOiAxLCBk
b25lOiBmYWxzZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggdGhlIGVucXVldWVkIHZh
bHVlJyk7Ci0KLSAgICByZXR1cm4gZGVsYXkoMTApOwotICB9KS50aGVuKCgpID0+IHsKLSAgICBh
c3NlcnRfZXF1YWxzKHRpbWVzQ2FsbGVkLCAxLCAnYWZ0ZXIgMTAgbXMsIHB1bGwgc2hvdWxkIHN0
aWxsIG9ubHkgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlJyk7Ci0KLSAgICByZXNvbHZlKCk7Ci0gICAg
cmV0dXJuIHJldHVybmVkUHJvbWlzZTsKLSAgfSkudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2Vx
dWFscyh0aW1lc0NhbGxlZCwgMiwKLSAgICAgICdhZnRlciB0aGUgcHJvbWlzZSByZXR1cm5lZCBi
eSBwdWxsIGlzIGZ1bGZpbGxlZCwgcHVsbCBzaG91bGQgYmUgY2FsbGVkIGEgc2Vjb25kIHRpbWUn
KTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50
aWwgdGhlIHByZXZpb3VzIHB1bGwgY2FsbFwncyBwcm9taXNlIGZ1bGZpbGxzJyk7Ci0KLXByb21p
c2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHRpbWVzQ2FsbGVkID0gMDsKLSAgY29uc3Qgc3RhcnRQ
cm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oCi0gICAgewotICAgICAgc3RhcnQoYykgewotICAgICAgICBjLmVucXVldWUoJ2EnKTsK
LSAgICAgICAgYy5lbnF1ZXVlKCdiJyk7Ci0gICAgICAgIGMuZW5xdWV1ZSgnYycpOwotICAgICAg
ICByZXR1cm4gc3RhcnRQcm9taXNlOwotICAgICAgfSwKLSAgICAgIHB1bGwoKSB7Ci0gICAgICAg
ICsrdGltZXNDYWxsZWQ7Ci0gICAgICB9Ci0gICAgfSwKLSAgICB7Ci0gICAgICBzaXplKCkgewot
ICAgICAgICByZXR1cm4gMTsKLSAgICAgIH0sCi0gICAgICBoaWdoV2F0ZXJNYXJrOiBJbmZpbml0
eQotICAgIH0KLSAgKTsKLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgcmV0
dXJuIHN0YXJ0UHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsK
LSAgfSkudGhlbihyZXN1bHQxID0+IHsKLSAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQx
LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdmaXJzdCBjaHVuayBzaG91bGQgYmUgYXMg
ZXhwZWN0ZWQnKTsKLQotICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICB9KS50aGVuKHJlc3Vs
dDIgPT4gewotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDIsIHsgdmFsdWU6ICdiJywg
ZG9uZTogZmFsc2UgfSwgJ3NlY29uZCBjaHVuayBzaG91bGQgYmUgYXMgZXhwZWN0ZWQnKTsKLQot
ICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICB9KS50aGVuKHJlc3VsdDMgPT4gewotICAgIGFz
c2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDMsIHsgdmFsdWU6ICdjJywgZG9uZTogZmFsc2UgfSwg
J3RoaXJkIGNodW5rIHNob3VsZCBiZSBhcyBleHBlY3RlZCcpOwotCi0gICAgcmV0dXJuIGRlbGF5
KDEwKTsKLSAgfSkudGhlbigoKSA9PiB7Ci0gICAgLy8gT25jZSBmb3IgYWZ0ZXIgc3RhcnQsIGFu
ZCBvbmNlIGZvciBldmVyeSByZWFkLgotICAgIGFzc2VydF9lcXVhbHModGltZXNDYWxsZWQsIDQs
ICdwdWxsKCkgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IGZvdXIgdGltZXMnKTsKLSAgfSk7Ci0K
LX0sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIHB1bGwgYWZ0ZXIgc3RhcnQsIGFuZCBhZnRlciBl
dmVyeSByZWFkJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHRpbWVzQ2FsbGVk
ID0gMDsKLSAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0KLSAgY29u
c3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5x
dWV1ZSgnYScpOwotICAgICAgYy5jbG9zZSgpOwotICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsK
LSAgICB9LAotICAgIHB1bGwoKSB7Ci0gICAgICArK3RpbWVzQ2FsbGVkOwotICAgIH0KLSAgfSk7
Ci0KLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0gIHJldHVybiBzdGFydFByb21p
c2UudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgMCwgJ2FmdGVy
IHN0YXJ0IGZpbmlzaGVzLCBwdWxsIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCcpOwotCi0g
ICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gIH0pLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9l
cXVhbHModGltZXNDYWxsZWQsIDAsICdyZWFkaW5nIHNob3VsZCBub3QgaGF2ZSB0cmlnZ2VyZWQg
YSBwdWxsIGNhbGwnKTsKLQotICAgIHJldHVybiByZWFkZXIuY2xvc2VkOwotICB9KS50aGVuKCgp
ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHRpbWVzQ2FsbGVkLCAwLCAnc3RyZWFtIHNob3VsZCBo
YXZlIGNsb3NlZCB3aXRoIHN0aWxsIG5vIGNhbGxzIHRvIHB1bGwnKTsKLSAgfSk7Ci0KLX0sICdS
ZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgYWZ0ZXIgc3RhcnQgaWYgdGhlIHN0
cmVhbSBpcyBub3cgY2xvc2VkJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHRp
bWVzQ2FsbGVkID0gMDsKLSAgbGV0IHJlc29sdmU7Ci0gIGNvbnN0IHJlYWR5ID0gbmV3IFByb21p
c2UociA9PiByZXNvbHZlID0gcik7Ci0KLSAgbmV3IFJlYWRhYmxlU3RyZWFtKAotICAgIHsKLSAg
ICAgIHN0YXJ0KCkge30sCi0gICAgICBwdWxsKGMpIHsKLSAgICAgICAgYy5lbnF1ZXVlKCsrdGlt
ZXNDYWxsZWQpOwotCi0gICAgICAgIGlmICh0aW1lc0NhbGxlZCA9PT0gNCkgewotICAgICAgICAg
IHJlc29sdmUoKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0sCi0gICAgewotICAgICAgc2l6
ZSgpIHsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgICB9LAotICAgICAgaGlnaFdhdGVyTWFyazog
NAotICAgIH0KLSAgKTsKLQotICByZXR1cm4gcmVhZHkudGhlbigoKSA9PiB7Ci0gICAgLy8gYWZ0
ZXIgc3RhcnQ6IHNpemUgPSAwLCBwdWxsKCkKLSAgICAvLyBhZnRlciBlbnF1ZXVlKDEpOiBzaXpl
ID0gMSwgcHVsbCgpCi0gICAgLy8gYWZ0ZXIgZW5xdWV1ZSgyKTogc2l6ZSA9IDIsIHB1bGwoKQot
ICAgIC8vIGFmdGVyIGVucXVldWUoMyk6IHNpemUgPSAzLCBwdWxsKCkKLSAgICAvLyBhZnRlciBl
bnF1ZXVlKDQpOiBzaXplID0gNCwgZG8gbm90IHB1bGwKLSAgICBhc3NlcnRfZXF1YWxzKHRpbWVz
Q2FsbGVkLCA0LCAncHVsbCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGZvdXIgdGltZXMnKTsK
LSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCBhZnRlciBlbnF1
ZXVlaW5nIGZyb20gaW5zaWRlIHB1bGwgKHdpdGggbm8gcmVhZCByZXF1ZXN0cyksIGlmIHN0cmF0
ZWd5IGFsbG93cycpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBwdWxsQ2FsbGVk
ID0gZmFsc2U7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHB1bGwo
YykgewotICAgICAgcHVsbENhbGxlZCA9IHRydWU7Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAgfQot
ICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLSAgcmV0dXJuIHJlYWRl
ci5jbG9zZWQudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X3RydWUocHVsbENhbGxlZCk7Ci0gIH0p
OwotCi19LCAnUmVhZGFibGVTdHJlYW0gcHVsbCBzaG91bGQgYmUgYWJsZSB0byBjbG9zZSBhIHN0
cmVhbS4nKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7Ci0K
LSAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBhc3NlcnRfZXF1
YWxzKGMuZW5xdWV1ZSgnYScpLCB1bmRlZmluZWQsICd0aGUgZmlyc3QgZW5xdWV1ZSBzaG91bGQg
cmV0dXJuIHVuZGVmaW5lZCcpOwotICAgICAgYy5jbG9zZSgpOwotCi0gICAgICBhc3NlcnRfdGhy
b3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gYy5lbnF1ZXVlKCdiJyksICdlbnF1ZXVlIGFmdGVy
IGNsb3NlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwotICAgICAgc3RhcnRDYWxsZWQgPSB0
cnVlOwotICAgIH0KLSAgfSk7Ci0KLSAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOwotCi19LCAn
UmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyBy
ZWFkYWJsZSBidXQgZHJhaW5pbmcnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHN0YXJ0Q2Fs
bGVkID0gZmFsc2U7Ci0KLSAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0g
ICAgICBjLmNsb3NlKCk7Ci0KLSAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAo
KSA9PiBjLmVucXVldWUoJ2EnKSwgJ2VucXVldWUgYWZ0ZXIgY2xvc2Ugc2hvdWxkIHRocm93IGEg
VHlwZUVycm9yJyk7Ci0gICAgICBzdGFydENhbGxlZCA9IHRydWU7Ci0gICAgfQotICB9KTsKLQot
ICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbTogZW5xdWV1
ZSBzaG91bGQgdGhyb3cgd2hlbiB0aGUgc3RyZWFtIGlzIGNsb3NlZCcpOwotCi10ZXN0KCgpID0+
IHsKLQotICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKLSAgY29uc3QgZXhwZWN0ZWRFcnJvciA9
IG5ldyBFcnJvcignaSBhbSBzYWQnKTsKLQotICBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0
YXJ0KGMpIHsKLSAgICAgIGMuZXJyb3IoZXhwZWN0ZWRFcnJvcik7Ci0KLSAgICAgIGFzc2VydF90
aHJvd3MoZXhwZWN0ZWRFcnJvciwgKCkgPT4gYy5lbnF1ZXVlKCdhJyksICdlbnF1ZXVlIGFmdGVy
IGVycm9yIHNob3VsZCB0aHJvdyB0aGF0IGVycm9yJyk7Ci0gICAgICBzdGFydENhbGxlZCA9IHRy
dWU7Ci0gICAgfQotICB9KTsKLQotICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7Ci0KLX0sICdS
ZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgdGhlIHN0b3JlZCBlcnJvciB3aGVu
IHRoZSBzdHJlYW0gaXMgZXJyb3JlZCcpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxl
dCBzdGFydENhbGxlZCA9IDA7Ci0gIGxldCBwdWxsQ2FsbGVkID0gMDsKLSAgbGV0IGNhbmNlbENh
bGxlZCA9IDA7Ci0KLSAgLyogZXNsaW50LWRpc2FibGUgbm8tdXNlLWJlZm9yZS1kZWZpbmUgKi8K
LSAgY2xhc3MgU291cmNlIHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBzdGFydENhbGxlZCsrOwot
ICAgICAgYXNzZXJ0X2VxdWFscyh0aGlzLCB0aGVTb3VyY2UsICdzdGFydCgpIHNob3VsZCBiZSBj
YWxsZWQgd2l0aCB0aGUgY29ycmVjdCB0aGlzJyk7Ci0gICAgICBjLmVucXVldWUoJ2EnKTsKLSAg
ICB9Ci0KLSAgICBwdWxsKCkgewotICAgICAgcHVsbENhbGxlZCsrOwotICAgICAgYXNzZXJ0X2Vx
dWFscyh0aGlzLCB0aGVTb3VyY2UsICdwdWxsKCkgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBj
b3JyZWN0IHRoaXMnKTsKLSAgICB9Ci0KLSAgICBjYW5jZWwoKSB7Ci0gICAgICBjYW5jZWxDYWxs
ZWQrKzsKLSAgICAgIGFzc2VydF9lcXVhbHModGhpcywgdGhlU291cmNlLCAnY2FuY2VsKCkgc2hv
dWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBjb3JyZWN0IHRoaXMnKTsKLSAgICB9Ci0gIH0KLSAgLyog
ZXNsaW50LWVuYWJsZSBuby11c2UtYmVmb3JlLWRlZmluZSAqLwotCi0gIGNvbnN0IHRoZVNvdXJj
ZSA9IG5ldyBTb3VyY2UoKTsKLSAgdGhlU291cmNlLmRlYnVnTmFtZSA9ICd0aGUgc291cmNlIG9i
amVjdCBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yJzsgLy8gbWFrZXMgdGVzdCBmYWlsdXJlcyBl
YXNpZXIgdG8gZGlhZ25vc2UKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh0aGVT
b3VyY2UpOwotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICByZXR1cm4gcmVh
ZGVyLnJlYWQoKS50aGVuKCgpID0+IHsKLSAgICByZWFkZXIucmVsZWFzZUxvY2soKTsKLSAgICBy
cy5jYW5jZWwoKTsKLSAgICBhc3NlcnRfZXF1YWxzKHN0YXJ0Q2FsbGVkLCAxKTsKLSAgICBhc3Nl
cnRfZXF1YWxzKHB1bGxDYWxsZWQsIDEpOwotICAgIGFzc2VydF9lcXVhbHMoY2FuY2VsQ2FsbGVk
LCAxKTsKLSAgICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkOwotICB9KTsKLQotfSwgJ1Jl
YWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRob2RzIGFzIG1l
dGhvZHMnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7Ci0g
IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYXNzZXJ0X2VxdWFs
cyhjLmRlc2lyZWRTaXplLCAxKTsKLSAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgICAgYXNzZXJ0
X2VxdWFscyhjLmRlc2lyZWRTaXplLCAwKTsKLSAgICAgIGMuZW5xdWV1ZSgnYicpOwotICAgICAg
YXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAtMSk7Ci0gICAgICBjLmVucXVldWUoJ2MnKTsK
LSAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgLTIpOwotICAgICAgYy5lbnF1ZXVl
KCdkJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGMuZGVzaXJlZFNpemUsIC0zKTsKLSAgICAgIGMu
ZW5xdWV1ZSgnZScpOwotICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOwotICAgIH0KLSAgfSk7Ci0K
LSAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOwotCi19LCAnUmVhZGFibGVTdHJlYW0gc3RyYXRl
Z2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGdpdmUgZGVzaXJlZFNpemUgb2YgMSB0
byBzdGFydCwgZGVjcmVhc2luZyBieSAxIHBlciBlbnF1ZXVlJyk7Ci0KLXByb21pc2VfdGVzdCgo
KSA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0p
OwotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICBhc3NlcnRfZXF1YWxzKGNv
bnRyb2xsZXIuZGVzaXJlZFNpemUsIDEsICdkZXNpcmVkU2l6ZSBzaG91bGQgc3RhcnQgYXQgMScp
OwotICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVy
LmRlc2lyZWRTaXplLCAwLCAnZGVzaXJlZFNpemUgc2hvdWxkIGRlY3JlYXNlIHRvIDAgYWZ0ZXIg
Zmlyc3QgZW5xdWV1ZScpOwotCi0gIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0MSA9
PiB7Ci0gICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MSwgeyB2YWx1ZTogJ2EnLCBkb25l
OiBmYWxzZSB9LCAnZmlyc3QgY2h1bmsgcmVhZCBzaG91bGQgYmUgY29ycmVjdCcpOwotCi0gICAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnZGVzaXJlZFNpemUgc2hv
dWxkIGdvIHVwIHRvIDEgYWZ0ZXIgdGhlIGZpcnN0IHJlYWQnKTsKLSAgICBjb250cm9sbGVyLmVu
cXVldWUoJ2InKTsKLSAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAs
ICdkZXNpcmVkU2l6ZSBzaG91bGQgZ28gZG93biB0byAwIGFmdGVyIHRoZSBzZWNvbmQgZW5xdWV1
ZScpOwotCi0gICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gIH0pLnRoZW4ocmVzdWx0MiA9PiB7
Ci0gICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MiwgeyB2YWx1ZTogJ2InLCBkb25lOiBm
YWxzZSB9LCAnc2Vjb25kIGNodW5rIHJlYWQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLQotICAgIGFz
c2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXplIHNob3Vs
ZCBnbyB1cCB0byAxIGFmdGVyIHRoZSBzZWNvbmQgcmVhZCcpOwotICAgIGNvbnRyb2xsZXIuZW5x
dWV1ZSgnYycpOwotICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwg
J2Rlc2lyZWRTaXplIHNob3VsZCBnbyBkb3duIHRvIDAgYWZ0ZXIgdGhlIHRoaXJkIGVucXVldWUn
KTsKLQotICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICB9KS50aGVuKHJlc3VsdDMgPT4gewot
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDMsIHsgdmFsdWU6ICdjJywgZG9uZTogZmFs
c2UgfSwgJ3RoaXJkIGNodW5rIHJlYWQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLQotICAgIGFzc2Vy
dF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBn
byB1cCB0byAxIGFmdGVyIHRoZSB0aGlyZCByZWFkJyk7Ci0gICAgY29udHJvbGxlci5lbnF1ZXVl
KCdkJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnZGVz
aXJlZFNpemUgc2hvdWxkIGdvIGRvd24gdG8gMCBhZnRlciB0aGUgZm91cnRoIGVucXVldWUnKTsK
LSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJh
dGVneSBzaG91bGQgY29udGludWUgZ2l2aW5nIGRlc2lyZWRTaXplIG9mIDEgaWYgdGhlIGNodW5r
cyBhcmUgcmVhZCBpbW1lZGlhdGVseScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29u
c3QgcmFuZG9tU291cmNlID0gbmV3IFJhbmRvbVB1c2hTb3VyY2UoOCk7Ci0KLSAgY29uc3QgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGFzc2VydF9lcXVh
bHModHlwZW9mIGMsICdvYmplY3QnLCAnYyBzaG91bGQgYmUgYW4gb2JqZWN0IGluIHN0YXJ0Jyk7
Ci0gICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBjLmVucXVldWUsICdmdW5jdGlvbicsICdlbnF1
ZXVlIHNob3VsZCBiZSBhIGZ1bmN0aW9uIGluIHN0YXJ0Jyk7Ci0gICAgICBhc3NlcnRfZXF1YWxz
KHR5cGVvZiBjLmNsb3NlLCAnZnVuY3Rpb24nLCAnY2xvc2Ugc2hvdWxkIGJlIGEgZnVuY3Rpb24g
aW4gc3RhcnQnKTsKLSAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGMuZXJyb3IsICdmdW5jdGlv
bicsICdlcnJvciBzaG91bGQgYmUgYSBmdW5jdGlvbiBpbiBzdGFydCcpOwotCi0gICAgICByYW5k
b21Tb3VyY2Uub25kYXRhID0gdC5zdGVwX2Z1bmMoY2h1bmsgPT4gewotICAgICAgICBpZiAoIWMu
ZW5xdWV1ZShjaHVuaykgPD0gMCkgewotICAgICAgICAgIHJhbmRvbVNvdXJjZS5yZWFkU3RvcCgp
OwotICAgICAgICB9Ci0gICAgICB9KTsKLQotICAgICAgcmFuZG9tU291cmNlLm9uZW5kID0gYy5j
bG9zZS5iaW5kKGMpOwotICAgICAgcmFuZG9tU291cmNlLm9uZXJyb3IgPSBjLmVycm9yLmJpbmQo
Yyk7Ci0gICAgfSwKLQotICAgIHB1bGwoYykgewotICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2Yg
YywgJ29iamVjdCcsICdjIHNob3VsZCBiZSBhbiBvYmplY3QgaW4gcHVsbCcpOwotICAgICAgYXNz
ZXJ0X2VxdWFscyh0eXBlb2YgYy5lbnF1ZXVlLCAnZnVuY3Rpb24nLCAnZW5xdWV1ZSBzaG91bGQg
YmUgYSBmdW5jdGlvbiBpbiBwdWxsJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBjLmNs
b3NlLCAnZnVuY3Rpb24nLCAnY2xvc2Ugc2hvdWxkIGJlIGEgZnVuY3Rpb24gaW4gcHVsbCcpOwot
Ci0gICAgICByYW5kb21Tb3VyY2UucmVhZFN0YXJ0KCk7Ci0gICAgfQotICB9KTsKLQotICByZXR1
cm4gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHJzKS50aGVuKGNodW5rcyA9PiB7Ci0gICAgYXNzZXJ0
X2VxdWFscyhjaHVua3MubGVuZ3RoLCA4LCAnOCBjaHVua3Mgc2hvdWxkIGJlIHJlYWQnKTsKLSAg
ICBmb3IgKGNvbnN0IGNodW5rIG9mIGNodW5rcykgewotICAgICAgYXNzZXJ0X2VxdWFscyhjaHVu
ay5sZW5ndGgsIDEyOCwgJ2NodW5rIHNob3VsZCBoYXZlIDEyOCBieXRlcycpOwotICAgIH0KLSAg
fSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHJh
bmRvbSBwdXNoIHNvdXJjZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJz
ID0gc2VxdWVudGlhbFJlYWRhYmxlU3RyZWFtKDEwKTsKLQotICByZXR1cm4gcmVhZGFibGVTdHJl
YW1Ub0FycmF5KHJzKS50aGVuKGNodW5rcyA9PiB7Ci0gICAgYXNzZXJ0X3RydWUocnMuc291cmNl
LmNsb3NlZCwgJ3NvdXJjZSBzaG91bGQgYmUgY2xvc2VkIGFmdGVyIGFsbCBjaHVua3MgYXJlIHJl
YWQnKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rcywgWzEsIDIsIDMsIDQsIDUsIDYs
IDcsIDgsIDksIDEwXSwgJ3RoZSBleHBlY3RlZCAxMCBjaHVua3Mgc2hvdWxkIGJlIHJlYWQnKTsK
LSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBh
IHN5bmMgcHVsbCBzb3VyY2UnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCBy
cyA9IHNlcXVlbnRpYWxSZWFkYWJsZVN0cmVhbSgxMCwgeyBhc3luYzogdHJ1ZSB9KTsKLQotICBy
ZXR1cm4gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHJzKS50aGVuKGNodW5rcyA9PiB7Ci0gICAgYXNz
ZXJ0X3RydWUocnMuc291cmNlLmNsb3NlZCwgJ3NvdXJjZSBzaG91bGQgYmUgY2xvc2VkIGFmdGVy
IGFsbCBjaHVua3MgYXJlIHJlYWQnKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rcywg
WzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXSwgJ3RoZSBleHBlY3RlZCAxMCBjaHVua3Mg
c2hvdWxkIGJlIHJlYWQnKTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlv
biB0ZXN0OiBhZGFwdGluZyBhbiBhc3luYyBwdWxsIHNvdXJjZScpOwotCi1kb25lKCk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcGlwZS10aHJvdWdoLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFi
bGUtc3RyZWFtcy9waXBlLXRocm91Z2gtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3ZTE4N2EyYzM5NWNmYTY0MjAzNTY5MGM3NzFjZmY5NjAyMTllMDg3Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFt
cy9waXBlLXRocm91Z2gtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBA
QAotCi1QQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCBzaG91bGQgd29y
ayBnZW5lcmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cyAKLVBBU1MgUmVhZGFi
bGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3VsZCB0aHJvdyB3aGVuIGl0cyBmaXJz
dCBhcmd1bWVudCBpcyBub3QgY29udmVydGlibGUgdG8gYW4gb2JqZWN0IAotUEFTUyBSZWFkYWJs
ZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2ggc2hvdWxkIHRocm93IHdoZW4gInRoaXMiIGhh
cyBubyBwaXBlVG8gbWV0aG9kIAotUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRo
cm91Z2ggc2hvdWxkIHJldGhyb3cgZXJyb3JzIGZyb20gYWNjZXNzaW5nIHBpcGVUbywgcmVhZGFi
bGUsIG9yIHdyaXRhYmxlIAotUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91
Z2ggc2hvdWxkIHdvcmsgd2l0aCBtaXNzaW5nIHJlYWRhYmxlLCB3cml0YWJsZSwgb3Igb3B0aW9u
cyAKLUZBSUwgTG9hZCBwaXBlLXRocm91Z2guanMgd2l0aCBTaGFyZWRXb3JrZXIgYXNzZXJ0X3Vu
cmVhY2hlZDogU2hhcmVkV29ya2VyIGlzIHVuYXZhaWxhYmxlIFJlYWNoZWQgdW5yZWFjaGFibGUg
Y29kZQotRkFJTCBVbnRpdGxlZCB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGlu
ZyAnbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuZ2V0UmVnaXN0cmF0aW9uJykKLVBBU1MgUmVhZGFi
bGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3VsZCB3b3JrIGdlbmVyaWNhbGx5IG9u
IGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzIAotUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5
cGUucGlwZVRocm91Z2ggc2hvdWxkIHRocm93IHdoZW4gaXRzIGZpcnN0IGFyZ3VtZW50IGlzIG5v
dCBjb252ZXJ0aWJsZSB0byBhbiBvYmplY3QgCi1QQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlw
ZS5waXBlVGhyb3VnaCBzaG91bGQgdGhyb3cgd2hlbiAidGhpcyIgaGFzIG5vIHBpcGVUbyBtZXRo
b2QgCi1QQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCBzaG91bGQgcmV0
aHJvdyBlcnJvcnMgZnJvbSBhY2Nlc3NpbmcgcGlwZVRvLCByZWFkYWJsZSwgb3Igd3JpdGFibGUg
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCBzaG91bGQgd29yayB3
aXRoIG1pc3NpbmcgcmVhZGFibGUsIHdyaXRhYmxlLCBvciBvcHRpb25zIAotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBp
L3JlYWRhYmxlLXN0cmVhbXMvcGlwZS10aHJvdWdoLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcGlw
ZS10aHJvdWdoLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyZDk4ZDQ1YWY0
NmYyNWZlMDYyNjIxMGQ4ZmExOTE1Y2M2NDVjZjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3BpcGUtdGhyb3VnaC5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlcnMvcmVz
b3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3Rlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InBpcGUtdGhyb3Vn
aC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotd29ya2VyX3Rlc3QoJ3Bp
cGUtdGhyb3VnaC5qcycpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMv
cGlwZS10aHJvdWdoLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3BpcGUtdGhyb3VnaC5qcwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk4ODkyOGU3OGIxOGU3M2FmNDRlY2Y0OWRkMWU0YWY4
MWI2YjNlZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3Jl
YWRhYmxlLXN0cmVhbXMvcGlwZS10aHJvdWdoLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICsw
LDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgewotICBzZWxm
LmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1w
b3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOwotfQotCi10ZXN0KCgpID0+
IHsKLQotICBsZXQgcGlwZVRvQXJndW1lbnRzOwotICBjb25zdCB0aGlzVmFsdWUgPSB7Ci0gICAg
cGlwZVRvKCkgewotICAgICAgcGlwZVRvQXJndW1lbnRzID0gYXJndW1lbnRzOwotICAgIH0KLSAg
fTsKLQotICBjb25zdCBpbnB1dCA9IHsgcmVhZGFibGU6IHt9LCB3cml0YWJsZToge30gfTsKLSAg
Y29uc3Qgb3B0aW9ucyA9IHt9OwotICBjb25zdCByZXN1bHQgPSBSZWFkYWJsZVN0cmVhbS5wcm90
b3R5cGUucGlwZVRocm91Z2guY2FsbCh0aGlzVmFsdWUsIGlucHV0LCBvcHRpb25zKTsKLQotICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHBpcGVUb0FyZ3VtZW50cywgW2lucHV0LndyaXRhYmxlLCBvcHRp
b25zXSwKLSAgICAnY29ycmVjdCBhcmd1bWVudHMgc2hvdWxkIGJlIHBhc3NlZCB0byB0aGlzVmFs
dWUucGlwZVRvJyk7Ci0gIGFzc2VydF9lcXVhbHMocmVzdWx0LCBpbnB1dC5yZWFkYWJsZSwgJ3Jl
dHVybiB2YWx1ZSBzaG91bGQgYmUgdGhlIHBhc3NlZCByZWFkYWJsZSBwcm9wZXJ0eScpOwotCi19
LCAnUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3VsZCB3b3JrIGdlbmVy
aWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzJyk7Ci0KLXRlc3QoKCkgPT4gewot
Ci0gIGNvbnN0IHRoaXNWYWx1ZSA9IHsKLSAgICBwaXBlVG8oKSB7Ci0gICAgICBhc3NlcnRfdW5y
ZWFjaGVkKCdwaXBlVG8gc2hvdWxkIG5vdCBiZSBjYWxsZWQnKTsKLSAgICB9Ci0gIH07Ci0KLSAg
bWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ3BpcGVUaHJvdWdoJywgdGhp
c1ZhbHVlLCBbdW5kZWZpbmVkLCB7fV0pOwotICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW0u
cHJvdG90eXBlLCAncGlwZVRocm91Z2gnLCB0aGlzVmFsdWUsIFtudWxsLCB7fV0pOwotCi19LCAn
UmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3VsZCB0aHJvdyB3aGVuIGl0
cyBmaXJzdCBhcmd1bWVudCBpcyBub3QgY29udmVydGlibGUgdG8gYW4gb2JqZWN0Jyk7Ci0KLXRl
c3QoKCkgPT4gewotCi0gIGNvbnN0IGFyZ3MgPSBbeyByZWFkYWJsZToge30sIHdyaXRhYmxlOiB7
fSB9LCB7fV07Ci0KLSAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ3Bp
cGVUaHJvdWdoJywgdW5kZWZpbmVkLCBhcmdzKTsKLSAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3Ry
ZWFtLnByb3RvdHlwZSwgJ3BpcGVUaHJvdWdoJywgbnVsbCwgYXJncyk7Ci0gIG1ldGhvZFRocm93
cyhSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUsICdwaXBlVGhyb3VnaCcsIDEsIGFyZ3MpOwotICBt
ZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLCAncGlwZVRocm91Z2gnLCB7IHBp
cGVUbzogJ3Rlc3QnIH0sIGFyZ3MpOwotCi19LCAnUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBp
cGVUaHJvdWdoIHNob3VsZCB0aHJvdyB3aGVuICJ0aGlzIiBoYXMgbm8gcGlwZVRvIG1ldGhvZCcp
OwotCi10ZXN0KCgpID0+IHsKLSAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ3BvdGF0bycpOwot
Ci0gIGNvbnN0IHRocm93aW5nUGlwZVRvID0gewotICAgIGdldCBwaXBlVG8oKSB7Ci0gICAgICB0
aHJvdyBlcnJvcjsKLSAgICB9Ci0gIH07Ci0gIGFzc2VydF90aHJvd3MoZXJyb3IsCi0gICAgKCkg
PT4gUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoLmNhbGwodGhyb3dpbmdQaXBl
VG8sIHsgcmVhZGFibGU6IHsgfSwgd3JpdGFibGU6IHsgfSB9LCB7fSksCi0gICAgJ3BpcGVUaHJv
dWdoIHNob3VsZCByZXRocm93IHRoZSBlcnJvciB0aHJvd24gYnkgcGlwZVRvJyk7Ci0KLSAgY29u
c3QgdGhpc1ZhbHVlID0gewotICAgIHBpcGVUbygpIHsKLSAgICAgIGFzc2VydF91bnJlYWNoZWQo
J3BpcGVUbyBzaG91bGQgbm90IGJlIGNhbGxlZCcpOwotICAgIH0KLSAgfTsKLQotICBjb25zdCB0
aHJvd2luZ1dyaXRhYmxlID0gewotICAgIHJlYWRhYmxlOiB7fSwKLSAgICBnZXQgd3JpdGFibGUo
KSB7Ci0gICAgICB0aHJvdyBlcnJvcjsKLSAgICB9Ci0gIH07Ci0gIGFzc2VydF90aHJvd3MoZXJy
b3IsCi0gICAgKCkgPT4gUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoLmNhbGwo
dGhpc1ZhbHVlLCB0aHJvd2luZ1dyaXRhYmxlLCB7fSksCi0gICAgJ3BpcGVUaHJvdWdoIHNob3Vs
ZCByZXRocm93IHRoZSBlcnJvciB0aHJvd24gYnkgdGhlIHdyaXRhYmxlIGdldHRlcicpOwotCi0g
IGNvbnN0IHRocm93aW5nUmVhZGFibGUgPSB7Ci0gICAgZ2V0IHJlYWRhYmxlKCkgewotICAgICAg
dGhyb3cgZXJyb3I7Ci0gICAgfSwKLSAgICB3cml0YWJsZToge30KLSAgfTsKLSAgYXNzZXJ0X3Ro
cm93cyhlcnJvciwKLSAgICAoKSA9PiBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91
Z2guY2FsbCh0aGlzVmFsdWUsIHRocm93aW5nUmVhZGFibGUsIHt9KSwKLSAgICAncGlwZVRocm91
Z2ggc2hvdWxkIHJldGhyb3cgdGhlIGVycm9yIHRocm93biBieSB0aGUgcmVhZGFibGUgZ2V0dGVy
Jyk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2ggc2hvdWxkIHJl
dGhyb3cgZXJyb3JzIGZyb20gYWNjZXNzaW5nIHBpcGVUbywgcmVhZGFibGUsIG9yIHdyaXRhYmxl
Jyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGxldCBjb3VudCA9IDA7Ci0gIGNvbnN0IHRoaXNWYWx1
ZSA9IHsKLSAgICBwaXBlVG8oKSB7Ci0gICAgICArK2NvdW50OwotICAgIH0KLSAgfTsKLQotICBS
ZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2guY2FsbCh0aGlzVmFsdWUsIHsgcmVh
ZGFibGU6IHt9LCB3cml0YWJsZToge30gfSk7Ci0gIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5w
aXBlVGhyb3VnaC5jYWxsKHRoaXNWYWx1ZSwgeyByZWFkYWJsZToge30gfSwge30pOwotICBSZWFk
YWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2guY2FsbCh0aGlzVmFsdWUsIHsgd3JpdGFi
bGU6IHt9IH0sIHt9KTsKLQotICBhc3NlcnRfZXF1YWxzKGNvdW50LCAzLCAncGlwZVRvIHdhcyBj
YWxsZWQgMyB0aW1lcycpOwotCi19LCAnUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJv
dWdoIHNob3VsZCB3b3JrIHdpdGggbWlzc2luZyByZWFkYWJsZSwgd3JpdGFibGUsIG9yIG9wdGlv
bnMnKTsKLQotZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbS1yZWFkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bS1yZWFkZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjAz
ODJiNjgyODYwYWRmNDY1Zjk2NTkxNTM0NGY0M2M0YTM0ZDU2Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW0tcmVhZGVyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLQot
UEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBpbmRpcmVj
dGx5IAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBzaG91bGQgZ2V0IGEg
UmVhZGFibGVTdHJlYW0gb2JqZWN0IGFzIGFyZ3VtZW50IAotRkFJTCBSZWFkYWJsZVN0cmVhbVJl
YWRlciBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVz
IGFzc2VydF9lcXVhbHM6IG1ldGhvZCBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUgZXhwZWN0ZWQg
ZmFsc2UgYnV0IGdvdCB0cnVlCi1QQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBzaG91
bGQgYWx3YXlzIHJldHVybiB0aGUgc2FtZSBwcm9taXNlIG9iamVjdCAKLVBBU1MgQ29uc3RydWN0
aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZhaWwgaWYgdGhlIHN0
cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCBjb25zdHJ1Y3Rpb24pIAotUEFTUyBH
ZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgdmlhIGdldFJlYWRlciBzaG91bGQgZmFpbCBp
ZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0IGNvbnN0cnVjdGlvbikg
Ci1QQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3Vs
ZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBnZXRSZWFkZXIpIAot
UEFTUyBHZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgdmlhIGdldFJlYWRlciBzaG91bGQg
ZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVhZGVyKSAKLVBB
U1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJl
IE9LIGlmIHRoZSBzdHJlYW0gaXMgY2xvc2VkIAotUEFTUyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJs
ZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBpcyBlcnJv
cmVkIAotUEFTUyBSZWFkaW5nIGZyb20gYSByZWFkZXIgZm9yIGFuIGVtcHR5IHN0cmVhbSB3aWxs
IHdhaXQgdW50aWwgYSBjaHVuayBpcyBhdmFpbGFibGUgCi1QQVNTIGNhbmNlbCgpIG9uIGEgcmVh
ZGVyIGRvZXMgbm90IHJlbGVhc2UgdGhlIHJlYWRlciAKLVBBU1MgY2xvc2VkIHNob3VsZCBiZSBm
dWxmaWxsZWQgYWZ0ZXIgc3RyZWFtIGlzIGNsb3NlZCAoLmNsb3NlZCBhY2Nlc3MgYmVmb3JlIGFj
cXVpcmluZykgCi1QQVNTIGNsb3NlZCBzaG91bGQgYmUgcmVqZWN0ZWQgYWZ0ZXIgcmVhZGVyIHJl
bGVhc2VzIGl0cyBsb2NrIChtdWx0aXBsZSBzdHJlYW0gbG9ja3MpIAotUEFTUyBNdWx0aXBsZSBy
ZWFkZXJzIGNhbiBhY2Nlc3MgdGhlIHN0cmVhbSBpbiBzZXF1ZW5jZSAKLVBBU1MgQ2Fubm90IHVz
ZSBhbiBhbHJlYWR5LXJlbGVhc2VkIHJlYWRlciB0byB1bmxvY2sgYSBzdHJlYW0gYWdhaW4gCi1Q
QVNTIGNhbmNlbCgpIG9uIGEgcmVsZWFzZWQgcmVhZGVyIGlzIGEgbm8tb3AgYW5kIGRvZXMgbm90
IHBhc3MgdGhyb3VnaCAKLVBBU1MgR2V0dGluZyBhIHNlY29uZCByZWFkZXIgYWZ0ZXIgZXJyb3Jp
bmcgdGhlIHN0cmVhbSBhbmQgcmVsZWFzaW5nIHRoZSByZWFkZXIgc2hvdWxkIHN1Y2NlZWQgCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBwcm9taXNlIHNob3VsZCBiZSByZWplY3Rl
ZCB3aXRoIHVuZGVmaW5lZCBpZiB0aGF0IGlzIHRoZSBlcnJvciAKLVBBU1MgUmVhZGFibGVTdHJl
YW1SZWFkZXI6IGlmIHN0YXJ0IHJlamVjdHMgd2l0aCBubyBwYXJhbWV0ZXIsIGl0IHNob3VsZCBl
cnJvciB0aGUgc3RyZWFtIHdpdGggYW4gdW5kZWZpbmVkIGVycm9yIAotUEFTUyBFcnJvcmluZyBh
IFJlYWRhYmxlU3RyZWFtIGFmdGVyIGNoZWNraW5nIGNsb3NlZCBzaG91bGQgcmVqZWN0IFJlYWRh
YmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBwcm9taXNlIAotUEFTUyBFcnJvcmluZyBhIFJlYWRhYmxl
U3RyZWFtIGJlZm9yZSBjaGVja2luZyBjbG9zZWQgc2hvdWxkIHJlamVjdCBSZWFkYWJsZVN0cmVh
bVJlYWRlciBjbG9zZWQgcHJvbWlzZSAKLVBBU1MgUmVhZGluZyB0d2ljZSBvbiBhIHN0cmVhbSB0
aGF0IGdldHMgY2xvc2VkIAotUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgY2xvc2VkIHN0cmVhbSAK
LVBBU1MgUmVhZGluZyB0d2ljZSBvbiBhbiBlcnJvcmVkIHN0cmVhbSAKLVBBU1MgUmVhZGluZyB0
d2ljZSBvbiBhIHN0cmVhbSB0aGF0IGdldHMgZXJyb3JlZCAKLUZBSUwgTG9hZCByZWFkYWJsZS1z
dHJlYW0tcmVhZGVyLmpzIHdpdGggU2hhcmVkV29ya2VyIGFzc2VydF91bnJlYWNoZWQ6IFNoYXJl
ZFdvcmtlciBpcyB1bmF2YWlsYWJsZSBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKLUZBSUwgVW50
aXRsZWQgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ25hdmlnYXRvci5z
ZXJ2aWNlV29ya2VyLmdldFJlZ2lzdHJhdGlvbicpCi1QQVNTIENhbiBnZXQgdGhlIFJlYWRhYmxl
U3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0bHkgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
UmVhZGVyIGNvbnN0cnVjdG9yIHNob3VsZCBnZXQgYSBSZWFkYWJsZVN0cmVhbSBvYmplY3QgYXMg
YXJndW1lbnQgCi1GQUlMIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGluc3RhbmNlcyBzaG91bGQgaGF2
ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3BlcnRpZXMgYXNzZXJ0X2VxdWFsczogbWV0aG9kIHNo
b3VsZCBiZSBub24tZW51bWVyYWJsZSBleHBlY3RlZCBmYWxzZSBidXQgZ290IHRydWUKLVBBU1Mg
UmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHNob3VsZCBhbHdheXMgcmV0dXJuIHRoZSBzYW1l
IHByb21pc2Ugb2JqZWN0IAotUEFTUyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRl
ciBkaXJlY3RseSBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2
aWEgZGlyZWN0IGNvbnN0cnVjdGlvbikgCi1QQVNTIEdldHRpbmcgYSBSZWFkYWJsZVN0cmVhbVJl
YWRlciB2aWEgZ2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBs
b2NrZWQgKHZpYSBkaXJlY3QgY29uc3RydWN0aW9uKSAKLVBBU1MgQ29uc3RydWN0aW5nIGEgUmVh
ZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBh
bHJlYWR5IGxvY2tlZCAodmlhIGdldFJlYWRlcikgCi1QQVNTIEdldHRpbmcgYSBSZWFkYWJsZVN0
cmVhbVJlYWRlciB2aWEgZ2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxy
ZWFkeSBsb2NrZWQgKHZpYSBnZXRSZWFkZXIpIAotUEFTUyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJs
ZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBpcyBjbG9z
ZWQgCi1QQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNo
b3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlzIGVycm9yZWQgCi1QQVNTIFJlYWRpbmcgZnJvbSBh
IHJlYWRlciBmb3IgYW4gZW1wdHkgc3RyZWFtIHdpbGwgd2FpdCB1bnRpbCBhIGNodW5rIGlzIGF2
YWlsYWJsZSAKLVBBU1MgY2FuY2VsKCkgb24gYSByZWFkZXIgZG9lcyBub3QgcmVsZWFzZSB0aGUg
cmVhZGVyIAotUEFTUyBjbG9zZWQgc2hvdWxkIGJlIGZ1bGZpbGxlZCBhZnRlciBzdHJlYW0gaXMg
Y2xvc2VkICguY2xvc2VkIGFjY2VzcyBiZWZvcmUgYWNxdWlyaW5nKSAKLVBBU1MgY2xvc2VkIHNo
b3VsZCBiZSByZWplY3RlZCBhZnRlciByZWFkZXIgcmVsZWFzZXMgaXRzIGxvY2sgKG11bHRpcGxl
IHN0cmVhbSBsb2NrcykgCi1QQVNTIE11bHRpcGxlIHJlYWRlcnMgY2FuIGFjY2VzcyB0aGUgc3Ry
ZWFtIGluIHNlcXVlbmNlIAotUEFTUyBDYW5ub3QgdXNlIGFuIGFscmVhZHktcmVsZWFzZWQgcmVh
ZGVyIHRvIHVubG9jayBhIHN0cmVhbSBhZ2FpbiAKLVBBU1MgY2FuY2VsKCkgb24gYSByZWxlYXNl
ZCByZWFkZXIgaXMgYSBuby1vcCBhbmQgZG9lcyBub3QgcGFzcyB0aHJvdWdoIAotUEFTUyBHZXR0
aW5nIGEgc2Vjb25kIHJlYWRlciBhZnRlciBlcnJvcmluZyB0aGUgc3RyZWFtIGFuZCByZWxlYXNp
bmcgdGhlIHJlYWRlciBzaG91bGQgc3VjY2VlZCAKLVBBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIg
Y2xvc2VkIHByb21pc2Ugc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdW5kZWZpbmVkIGlmIHRoYXQg
aXMgdGhlIGVycm9yIAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlcjogaWYgc3RhcnQgcmVqZWN0
cyB3aXRoIG5vIHBhcmFtZXRlciwgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0gd2l0aCBhbiB1
bmRlZmluZWQgZXJyb3IgCi1QQVNTIEVycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gYWZ0ZXIgY2hl
Y2tpbmcgY2xvc2VkIHNob3VsZCByZWplY3QgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHBy
b21pc2UgCi1QQVNTIEVycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gYmVmb3JlIGNoZWNraW5nIGNs
b3NlZCBzaG91bGQgcmVqZWN0IFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBwcm9taXNlIAot
UEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgc3RyZWFtIHRoYXQgZ2V0cyBjbG9zZWQgCi1QQVNTIFJl
YWRpbmcgdHdpY2Ugb24gYSBjbG9zZWQgc3RyZWFtIAotUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGFu
IGVycm9yZWQgc3RyZWFtIAotUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgc3RyZWFtIHRoYXQgZ2V0
cyBlcnJvcmVkIAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFt
LXJlYWRlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGYwZGIxMWQxYmM0ZTgzYzNmNTM4ZjQ3
ZTY2N2M3MzVhYjQwYzhmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlcnMvcmVzb3Vy
Y2VzL3Rlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0icmVhZGFibGUt
c3RyZWFtLXJlYWRlci5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotd29y
a2VyX3Rlc3QoJ3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuanMnKTsKLTwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
LWFwaS9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuanMgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxl
LXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMWQ1YmMxMzAwNGY4YTM1N2ZjNWU4MjUyMmYzYmQzMDlmMTMxMWI5YS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMv
cmVhZGFibGUtc3RyZWFtLXJlYWRlci5qcworKysgL2Rldi9udWxsCkBAIC0xLDQ4NSArMCwwIEBA
Ci0ndXNlIHN0cmljdCc7Ci0KLWlmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBv
cnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvcnMtdXRpbHMuanMnKTsKLSAgc2VsZi5pbXBvcnRTY3Jp
cHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0KLWxldCBSZWFkYWJsZVN0cmVh
bVJlYWRlcjsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgLy8gSXQncyBub3QgZXhwb3NlZCBnbG9iYWxs
eSwgYnV0IHdlIHRlc3QgYSBmZXcgb2YgaXRzIHByb3BlcnRpZXMgaGVyZS4KLSAgUmVhZGFibGVT
dHJlYW1SZWFkZXIgPSAobmV3IFJlYWRhYmxlU3RyZWFtKCkpLmdldFJlYWRlcigpLmNvbnN0cnVj
dG9yOwotCi19LCAnQ2FuIGdldCB0aGUgUmVhZGFibGVTdHJlYW1SZWFkZXIgY29uc3RydWN0b3Ig
aW5kaXJlY3RseScpOwotCi10ZXN0KCgpID0+IHsKLQotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBl
RXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKCdwb3RhdG8nKSk7Ci0gIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW1SZWFk
ZXIoe30pKTsKLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBSZWFk
YWJsZVN0cmVhbVJlYWRlcigpKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVj
dG9yIHNob3VsZCBnZXQgYSBSZWFkYWJsZVN0cmVhbSBvYmplY3QgYXMgYXJndW1lbnQnKTsKLQot
dGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgbWV0aG9kcyA9IFsnY2FuY2VsJywgJ2NvbnN0cnVjdG9y
JywgJ3JlYWQnLCAncmVsZWFzZUxvY2snXTsKLSAgY29uc3QgcHJvcGVydGllcyA9IG1ldGhvZHMu
Y29uY2F0KFsnY2xvc2VkJ10pLnNvcnQoKTsKLQotICBjb25zdCByc1JlYWRlciA9IG5ldyBSZWFk
YWJsZVN0cmVhbVJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0oKSk7Ci0gIGNvbnN0IHByb3RvID0g
T2JqZWN0LmdldFByb3RvdHlwZU9mKHJzUmVhZGVyKTsKLQotICBhc3NlcnRfYXJyYXlfZXF1YWxz
KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvKS5zb3J0KCksIHByb3BlcnRpZXMpOwot
Ci0gIGZvciAoY29uc3QgbSBvZiBtZXRob2RzKSB7Ci0gICAgY29uc3QgcHJvcERlc2MgPSBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBtKTsKLSAgICBhc3NlcnRfZXF1YWxz
KHByb3BEZXNjLmVudW1lcmFibGUsIGZhbHNlLCAnbWV0aG9kIHNob3VsZCBiZSBub24tZW51bWVy
YWJsZScpOwotICAgIGFzc2VydF9lcXVhbHMocHJvcERlc2MuY29uZmlndXJhYmxlLCB0cnVlLCAn
bWV0aG9kIHNob3VsZCBiZSBjb25maWd1cmFibGUnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHByb3BE
ZXNjLndyaXRhYmxlLCB0cnVlLCAnbWV0aG9kIHNob3VsZCBiZSB3cml0YWJsZScpOwotICAgIGFz
c2VydF9lcXVhbHModHlwZW9mIHJzUmVhZGVyW21dLCAnZnVuY3Rpb24nLCAnc2hvdWxkIGhhdmUg
YmUgYSBtZXRob2QnKTsKLSAgfQotCi0gIGNvbnN0IGNsb3NlZFByb3BEZXNjID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgJ2Nsb3NlZCcpOwotICBhc3NlcnRfZXF1YWxz
KGNsb3NlZFByb3BEZXNjLmVudW1lcmFibGUsIGZhbHNlLCAnY2xvc2VkIHNob3VsZCBiZSBub24t
ZW51bWVyYWJsZScpOwotICBhc3NlcnRfZXF1YWxzKGNsb3NlZFByb3BEZXNjLmNvbmZpZ3VyYWJs
ZSwgdHJ1ZSwgJ2Nsb3NlZCBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7Ci0gIGFzc2VydF9ub3Rf
ZXF1YWxzKGNsb3NlZFByb3BEZXNjLmdldCwgdW5kZWZpbmVkLCAnY2xvc2VkIHNob3VsZCBoYXZl
IGEgZ2V0dGVyJyk7Ci0gIGFzc2VydF9lcXVhbHMoY2xvc2VkUHJvcERlc2Muc2V0LCB1bmRlZmlu
ZWQsICdjbG9zZWQgc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyJyk7Ci0KLSAgYXNzZXJ0X2VxdWFs
cyhyc1JlYWRlci5jYW5jZWwubGVuZ3RoLCAxLCAnY2FuY2VsIGhhcyAxIHBhcmFtZXRlcicpOwot
ICBhc3NlcnRfbm90X2VxdWFscyhyc1JlYWRlci5jbG9zZWQsIHVuZGVmaW5lZCwgJ2hhcyBhIG5v
bi11bmRlZmluZWQgY2xvc2VkIHByb3BlcnR5Jyk7Ci0gIGFzc2VydF9lcXVhbHModHlwZW9mIHJz
UmVhZGVyLmNsb3NlZC50aGVuLCAnZnVuY3Rpb24nLCAnY2xvc2VkIHByb3BlcnR5IGlzIHRoZW5h
YmxlJyk7Ci0gIGFzc2VydF9lcXVhbHModHlwZW9mIHJzUmVhZGVyLmNvbnN0cnVjdG9yLCAnZnVu
Y3Rpb24nLCAnaGFzIGEgY29uc3RydWN0b3IgbWV0aG9kJyk7Ci0gIGFzc2VydF9lcXVhbHMocnNS
ZWFkZXIuY29uc3RydWN0b3IubGVuZ3RoLCAxLCAnY29uc3RydWN0b3IgaGFzIDEgcGFyYW1ldGVy
Jyk7Ci0gIGFzc2VydF9lcXVhbHModHlwZW9mIHJzUmVhZGVyLnJlYWQsICdmdW5jdGlvbicsICdo
YXMgYSBnZXRSZWFkZXIgbWV0aG9kJyk7Ci0gIGFzc2VydF9lcXVhbHMocnNSZWFkZXIucmVhZC5s
ZW5ndGgsIDAsICdyZWFkIGhhcyBubyBwYXJhbWV0ZXJzJyk7Ci0gIGFzc2VydF9lcXVhbHModHlw
ZW9mIHJzUmVhZGVyLnJlbGVhc2VMb2NrLCAnZnVuY3Rpb24nLCAnaGFzIGEgcmVsZWFzZUxvY2sg
bWV0aG9kJyk7Ci0gIGFzc2VydF9lcXVhbHMocnNSZWFkZXIucmVsZWFzZUxvY2subGVuZ3RoLCAw
LCAncmVsZWFzZUxvY2sgaGFzIG5vIHBhcmFtZXRlcnMnKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFt
UmVhZGVyIGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3BlcnRp
ZXMnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnNSZWFkZXIgPSBuZXcgUmVhZGFibGVT
dHJlYW1SZWFkZXIobmV3IFJlYWRhYmxlU3RyZWFtKCkpOwotICBhc3NlcnRfZXF1YWxzKHJzUmVh
ZGVyLmNsb3NlZCwgcnNSZWFkZXIuY2xvc2VkLCAnY2xvc2VkIHNob3VsZCByZXR1cm4gdGhlIHNh
bWUgcHJvbWlzZScpOwotCi19LCAnUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHNob3VsZCBh
bHdheXMgcmV0dXJuIHRoZSBzYW1lIHByb21pc2Ugb2JqZWN0Jyk7Ci0KLXRlc3QoKCkgPT4gewot
Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci0gIG5ldyBSZWFkYWJsZVN0cmVh
bVJlYWRlcihycyk7IC8vIENvbnN0cnVjdGluZyBkaXJlY3RseSB0aGUgZmlyc3QgdGltZSBzaG91
bGQgYmUgZmluZS4KLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBS
ZWFkYWJsZVN0cmVhbVJlYWRlcihycyksCi0gICAgICAgICAgICAgICAgJ2NvbnN0cnVjdGluZyBk
aXJlY3RseSB0aGUgc2Vjb25kIHRpbWUgc2hvdWxkIGZhaWwnKTsKLQotfSwgJ0NvbnN0cnVjdGlu
ZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBmYWlsIGlmIHRoZSBzdHJl
YW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3QgJyArCi0gICAnY29uc3RydWN0aW9uKScp
OwotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwot
ICBuZXcgUmVhZGFibGVTdHJlYW1SZWFkZXIocnMpOyAvLyBDb25zdHJ1Y3RpbmcgZGlyZWN0bHkg
c2hvdWxkIGJlIGZpbmUuCi0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBy
cy5nZXRSZWFkZXIoKSwgJ2dldFJlYWRlcigpIHNob3VsZCBmYWlsJyk7Ci0KLX0sICdHZXR0aW5n
IGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgdmlhIGdldFJlYWRlciBzaG91bGQgZmFpbCBpZiB0aGUg
c3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0ICcgKwotICAgJ2NvbnN0cnVjdGlv
biknKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
KTsKLSAgcnMuZ2V0UmVhZGVyKCk7IC8vIGdldFJlYWRlcigpIHNob3VsZCBiZSBmaW5lLgotICBh
c3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtUmVh
ZGVyKHJzKSwgJ2NvbnN0cnVjdGluZyBkaXJlY3RseSBzaG91bGQgZmFpbCcpOwotCi19LCAnQ29u
c3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZhaWwgaWYg
dGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGdldFJlYWRlciknKTsKLQotdGVzdCgo
KSA9PiB7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLSAgcnMuZ2V0UmVh
ZGVyKCk7IC8vIGdldFJlYWRlcigpIHNob3VsZCBiZSBmaW5lLgotICBhc3NlcnRfdGhyb3dzKG5l
dyBUeXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksICdnZXRSZWFkZXIoKSBzaG91bGQg
ZmFpbCcpOwotCi19LCAnR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHZpYSBnZXRSZWFk
ZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGdldFJl
YWRlciknKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuY2xvc2UoKTsKLSAgICB9Ci0gIH0pOwotCi0g
IG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihycyk7IC8vIENvbnN0cnVjdGluZyBkaXJlY3RseSBz
aG91bGQgbm90IHRocm93LgotCi19LCAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFk
ZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgY2xvc2VkJyk7Ci0KLXRl
c3QoKCkgPT4gewotCi0gIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdkb25cJ3Qgc2F5IGkg
ZGlkblwndCB3YXJuIHlhJyk7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAg
ICBzdGFydChjKSB7Ci0gICAgICBjLmVycm9yKHRoZUVycm9yKTsKLSAgICB9Ci0gIH0pOwotCi0g
IG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihycyk7IC8vIENvbnN0cnVjdGluZyBkaXJlY3RseSBz
aG91bGQgbm90IHRocm93LgotCi19LCAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFk
ZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgZXJyb3JlZCcpOwotCi1w
cm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7
Ci0gICAgfQotICB9KTsKLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgY29u
c3QgcHJvbWlzZSA9IHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQgPT4gewotICAgIGFzc2VydF9v
YmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAncmVhZCgp
IHNob3VsZCBmdWxmaWxsIHdpdGggdGhlIGVucXVldWVkIGNodW5rJyk7Ci0gIH0pOwotCi0gIGNv
bnRyb2xsZXIuZW5xdWV1ZSgnYScpOwotICByZXR1cm4gcHJvbWlzZTsKLQotfSwgJ1JlYWRpbmcg
ZnJvbSBhIHJlYWRlciBmb3IgYW4gZW1wdHkgc3RyZWFtIHdpbGwgd2FpdCB1bnRpbCBhIGNodW5r
IGlzIGF2YWlsYWJsZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBjYW5jZWxD
YWxsZWQgPSBmYWxzZTsKLSAgY29uc3QgcGFzc2VkUmVhc29uID0gbmV3IEVycm9yKCdpdCB3YXNu
XCd0IHRoZSByaWdodCB0aW1lLCBzb3JyeScpOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7Ci0gICAgY2FuY2VsKHJlYXNvbikgewotICAgICAgYXNzZXJ0X3RydWUocnMubG9ja2Vk
LCAndGhlIHN0cmVhbSBzaG91bGQgc3RpbGwgYmUgbG9ja2VkJyk7Ci0gICAgICBhc3NlcnRfdGhy
b3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksICdzaG91bGQgbm90IGJl
IGFibGUgdG8gZ2V0IGFub3RoZXIgcmVhZGVyJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHJlYXNv
biwgcGFzc2VkUmVhc29uLCAndGhlIGNhbmNlbGxhdGlvbiByZWFzb24gaXMgcGFzc2VkIHRocm91
Z2ggdG8gdGhlIHVuZGVybHlpbmcgc291cmNlJyk7Ci0gICAgICBjYW5jZWxDYWxsZWQgPSB0cnVl
OwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0gIHJl
dHVybiByZWFkZXIuY2FuY2VsKHBhc3NlZFJlYXNvbikudGhlbigoKSA9PiBhc3NlcnRfdHJ1ZShj
YW5jZWxDYWxsZWQpKTsKLQotfSwgJ2NhbmNlbCgpIG9uIGEgcmVhZGVyIGRvZXMgbm90IHJlbGVh
c2UgdGhlIHJlYWRlcicpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBjb250cm9s
bGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewot
ICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBy
cy5nZXRSZWFkZXIoKTsKLSAgY29uc3QgcHJvbWlzZSA9IHJlYWRlci5jbG9zZWQ7Ci0KLSAgY29u
dHJvbGxlci5jbG9zZSgpOwotICByZXR1cm4gcHJvbWlzZTsKLQotfSwgJ2Nsb3NlZCBzaG91bGQg
YmUgZnVsZmlsbGVkIGFmdGVyIHN0cmVhbSBpcyBjbG9zZWQgKC5jbG9zZWQgYWNjZXNzIGJlZm9y
ZSBhY3F1aXJpbmcpJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBsZXQgY29udHJvbGxl
cjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAg
ICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyMSA9IHJz
LmdldFJlYWRlcigpOwotCi0gIHJlYWRlcjEucmVsZWFzZUxvY2soKTsKLQotICBjb25zdCByZWFk
ZXIyID0gcnMuZ2V0UmVhZGVyKCk7Ci0gIGNvbnRyb2xsZXIuY2xvc2UoKTsKLQotICByZXR1cm4g
UHJvbWlzZS5hbGwoWwotICAgIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIHJl
YWRlcjEuY2xvc2VkKSwKLSAgICByZWFkZXIyLmNsb3NlZAotICBdKTsKLQotfSwgJ2Nsb3NlZCBz
aG91bGQgYmUgcmVqZWN0ZWQgYWZ0ZXIgcmVhZGVyIHJlbGVhc2VzIGl0cyBsb2NrIChtdWx0aXBs
ZSBzdHJlYW0gbG9ja3MpJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1ZSgn
YScpOwotICAgICAgYy5lbnF1ZXVlKCdiJyk7Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAgfQotICB9
KTsKLQotICBjb25zdCByZWFkZXIxID0gcnMuZ2V0UmVhZGVyKCk7Ci0gIGNvbnN0IHByb21pc2Ux
ID0gcmVhZGVyMS5yZWFkKCkudGhlbihyID0+IHsKLSAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhy
LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdyZWFkaW5nIHRoZSBmaXJzdCBjaHVuayBm
cm9tIHJlYWRlcjEgd29ya3MnKTsKLSAgfSk7Ci0gIHJlYWRlcjEucmVsZWFzZUxvY2soKTsKLQot
ICBjb25zdCByZWFkZXIyID0gcnMuZ2V0UmVhZGVyKCk7Ci0gIGNvbnN0IHByb21pc2UyID0gcmVh
ZGVyMi5yZWFkKCkudGhlbihyID0+IHsKLSAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZh
bHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sICdyZWFkaW5nIHRoZSBzZWNvbmQgY2h1bmsgZnJvbSBy
ZWFkZXIyIHdvcmtzJyk7Ci0gIH0pOwotICByZWFkZXIyLnJlbGVhc2VMb2NrKCk7Ci0KLSAgcmV0
dXJuIFByb21pc2UuYWxsKFtwcm9taXNlMSwgcHJvbWlzZTJdKTsKLQotfSwgJ011bHRpcGxlIHJl
YWRlcnMgY2FuIGFjY2VzcyB0aGUgc3RyZWFtIGluIHNlcXVlbmNlJyk7Ci0KLXByb21pc2VfdGVz
dCgoKSA9PiB7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChj
KSB7Ci0gICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWRl
cjEgPSBycy5nZXRSZWFkZXIoKTsKLSAgcmVhZGVyMS5yZWxlYXNlTG9jaygpOwotCi0gIGNvbnN0
IHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKLQotICAvLyBTaG91bGQgYmUgYSBuby1vcAotICBy
ZWFkZXIxLnJlbGVhc2VMb2NrKCk7Ci0KLSAgcmV0dXJuIHJlYWRlcjIucmVhZCgpLnRoZW4ocmVz
dWx0ID0+IHsKLSAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdhJywg
ZG9uZTogZmFsc2UgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAncmVhZCgpIHNob3VsZCBz
dGlsbCB3b3JrIG9uIHJlYWRlcjIgZXZlbiBhZnRlciByZWFkZXIxIGlzIHJlbGVhc2VkJyk7Ci0g
IH0pOwotCi19LCAnQ2Fubm90IHVzZSBhbiBhbHJlYWR5LXJlbGVhc2VkIHJlYWRlciB0byB1bmxv
Y2sgYSBzdHJlYW0gYWdhaW4nKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVucXVldWUo
J2EnKTsKLSAgICB9LAotICAgIGNhbmNlbCgpIHsKLSAgICAgIGFzc2VydF91bnJlYWNoZWQoJ3Vu
ZGVybHlpbmcgc291cmNlIGNhbmNlbCBzaG91bGQgbm90IGJlIGNhbGxlZCcpOwotICAgIH0KLSAg
fSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0gIHJlYWRlci5yZWxlYXNl
TG9jaygpOwotICBjb25zdCBjYW5jZWxQcm9taXNlID0gcmVhZGVyLmNhbmNlbCgpOwotCi0gIGNv
bnN0IHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKLSAgY29uc3QgcmVhZFByb21pc2UgPSByZWFk
ZXIyLnJlYWQoKS50aGVuKHIgPT4gewotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFs
dWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2EgbmV3IHJlYWRlciBzaG91bGQgYmUgYWJsZSB0byBy
ZWFkIGEgY2h1bmsnKTsKLSAgfSk7Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICBwcm9t
aXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLCBjYW5jZWxQcm9taXNlKSwKLSAgICByZWFk
UHJvbWlzZQotICBdKTsKLQotfSwgJ2NhbmNlbCgpIG9uIGEgcmVsZWFzZWQgcmVhZGVyIGlzIGEg
bm8tb3AgYW5kIGRvZXMgbm90IHBhc3MgdGhyb3VnaCcpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7
Ci0KLSAgY29uc3QgcHJvbWlzZUFzc2VydHMgPSBbXTsKLQotICBsZXQgY29udHJvbGxlcjsKLSAg
Y29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICd1bmlxdWUgZXJyb3InIH07Ci0gIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0g
YzsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWRlcjEgPSBycy5nZXRSZWFkZXIoKTsKLQot
ICBwcm9taXNlQXNzZXJ0cy5wdXNoKAotICAgIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwg
cmVhZGVyMS5jbG9zZWQpLAotICAgIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcmVhZGVy
MS5yZWFkKCkpCi0gICk7Ci0KLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+
IHJzLmdldFJlYWRlcigpLCAndHJ5aW5nIHRvIGdldCBhbm90aGVyIHJlYWRlciBiZWZvcmUgZXJy
b3Jpbmcgc2hvdWxkIHRocm93Jyk7Ci0KLSAgY29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7Ci0K
LSAgcmVhZGVyMS5yZWxlYXNlTG9jaygpOwotCi0gIGNvbnN0IHJlYWRlcjIgPSBycy5nZXRSZWFk
ZXIoKTsKLQotICBwcm9taXNlQXNzZXJ0cy5wdXNoKAotICAgIHByb21pc2VfcmVqZWN0cyh0LCB0
aGVFcnJvciwgcmVhZGVyMi5jbG9zZWQpLAotICAgIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJv
ciwgcmVhZGVyMi5yZWFkKCkpCi0gICk7Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VB
c3NlcnRzKTsKLQotfSwgJ0dldHRpbmcgYSBzZWNvbmQgcmVhZGVyIGFmdGVyIGVycm9yaW5nIHRo
ZSBzdHJlYW0gYW5kIHJlbGVhc2luZyB0aGUgcmVhZGVyIHNob3VsZCBzdWNjZWVkJyk7Ci0KLXBy
b21pc2VfdGVzdCh0ID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwot
ICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcHJvbWlzZSA9IHJzLmdldFJlYWRlcigpLmNsb3NlZC50
aGVuKAotICAgIHQudW5yZWFjaGVkX2Z1bmMoJ2Nsb3NlZCBwcm9taXNlIHNob3VsZCBub3QgYmUg
ZnVsZmlsbGVkIHdoZW4gc3RyZWFtIGlzIGVycm9yZWQnKSwKLSAgICBlcnIgPT4gewotICAgICAg
YXNzZXJ0X2VxdWFscyhlcnIsIHVuZGVmaW5lZCwgJ3Bhc3NlZCBlcnJvciBzaG91bGQgYmUgdW5k
ZWZpbmVkIGFzIGl0IHdhcycpOwotICAgIH0KLSAgKTsKLQotICBjb250cm9sbGVyLmVycm9yKCk7
Ci0gIHJldHVybiBwcm9taXNlOwotCi19LCAnUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHBy
b21pc2Ugc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdW5kZWZpbmVkIGlmIHRoYXQgaXMgdGhlIGVy
cm9yJyk7Ci0KLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKLSAgICBzdGFydCgpIHsKLSAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgp
OwotICAgIH0KLSAgfSk7Ci0KLSAgcmV0dXJuIHJzLmdldFJlYWRlcigpLnJlYWQoKS50aGVuKAot
ICAgIHQudW5yZWFjaGVkX2Z1bmMoJ3JlYWQgcHJvbWlzZSBzaG91bGQgbm90IGJlIGZ1bGZpbGxl
ZCB3aGVuIHN0cmVhbSBpcyBlcnJvcmVkJyksCi0gICAgZXJyID0+IHsKLSAgICAgIGFzc2VydF9l
cXVhbHMoZXJyLCB1bmRlZmluZWQsICdwYXNzZWQgZXJyb3Igc2hvdWxkIGJlIHVuZGVmaW5lZCBh
cyBpdCB3YXMnKTsKLSAgICB9Ci0gICk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbVJlYWRlcjogaWYg
c3RhcnQgcmVqZWN0cyB3aXRoIG5vIHBhcmFtZXRlciwgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJl
YW0gd2l0aCBhbiB1bmRlZmluZWQgZXJyb3InKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0g
IGNvbnN0IHRoZUVycm9yID0geyBuYW1lOiAndW5pcXVlIHN0cmluZycgfTsKLSAgbGV0IGNvbnRy
b2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7
Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHByb21pc2Ug
PSBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJzLmdldFJlYWRlcigpLmNsb3NlZCk7Ci0K
LSAgY29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7Ci0gIHJldHVybiBwcm9taXNlOwotCi19LCAn
RXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBhZnRlciBjaGVja2luZyBjbG9zZWQgc2hvdWxkIHJl
amVjdCBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgcHJvbWlzZScpOwotCi1wcm9taXNlX3Rl
c3QodCA9PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICd1bmlxdWUgc3RyaW5nJyB9
OwotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewot
ICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0KLSAg
Y29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7Ci0KLSAgLy8gTGV0J3MgY2FsbCBnZXRSZWFkZXIg
dHdpY2UgZm9yIGV4dHJhIHRlc3QgY292ZXJhZ2Ugb2YgdGhpcyBjb2RlIHBhdGguCi0gIHJzLmdl
dFJlYWRlcigpLnJlbGVhc2VMb2NrKCk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCB0
aGVFcnJvciwgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkKTsKLQotfSwgJ0Vycm9yaW5nIGEgUmVhZGFi
bGVTdHJlYW0gYmVmb3JlIGNoZWNraW5nIGNsb3NlZCBzaG91bGQgcmVqZWN0IFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyIGNsb3NlZCBwcm9taXNlJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAg
bGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBz
dGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0pOwotICBjb25zdCBy
ZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICBjb25zdCBwcm9taXNlID0gUHJvbWlzZS5hbGwo
WwotICAgIHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQgPT4gewotICAgICAgYXNzZXJ0X29iamVj
dF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwgJ3JlYWQo
KSBzaG91bGQgZnVsZmlsbCB3aXRoIGNsb3NlICgxKScpOwotICAgIH0pLAotICAgIHJlYWRlci5y
ZWFkKCkudGhlbihyZXN1bHQgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0
LCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmls
bCB3aXRoIGNsb3NlICgyKScpOwotICAgIH0pLAotICAgIHJlYWRlci5jbG9zZWQKLSAgXSk7Ci0K
LSAgY29udHJvbGxlci5jbG9zZSgpOwotICByZXR1cm4gcHJvbWlzZTsKLQotfSwgJ1JlYWRpbmcg
dHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGNsb3NlZCcpOwotCi1wcm9taXNlX3Rlc3QoKCkg
PT4gewotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9KTsK
LQotICBjb250cm9sbGVyLmNsb3NlKCk7Ci0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigp
OwotCi0gIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgcmVhZGVyLnJlYWQoKS50aGVuKHJlc3Vs
dCA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVuZGVm
aW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2UgKDEp
Jyk7Ci0gICAgfSksCi0gICAgcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1
ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2UgKDIpJyk7Ci0gICAgfSksCi0g
ICAgcmVhZGVyLmNsb3NlZAotICBdKTsKLQotfSwgJ1JlYWRpbmcgdHdpY2Ugb24gYSBjbG9zZWQg
c3RyZWFtJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsKLSAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNv
bnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgbXlFcnJvciA9IHsgbmFtZTog
J21hc2hlZCBwb3RhdG9lcycgfTsKLSAgY29udHJvbGxlci5lcnJvcihteUVycm9yKTsKLQotICBj
b25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoWwot
ICAgIHByb21pc2VfcmVqZWN0cyh0LCBteUVycm9yLCByZWFkZXIucmVhZCgpKSwKLSAgICBwcm9t
aXNlX3JlamVjdHModCwgbXlFcnJvciwgcmVhZGVyLnJlYWQoKSksCi0gICAgcHJvbWlzZV9yZWpl
Y3RzKHQsIG15RXJyb3IsIHJlYWRlci5jbG9zZWQpCi0gIF0pOwotCi19LCAnUmVhZGluZyB0d2lj
ZSBvbiBhbiBlcnJvcmVkIHN0cmVhbScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgbGV0
IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFy
dChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IG15
RXJyb3IgPSB7IG5hbWU6ICdtYXNoZWQgcG90YXRvZXMnIH07Ci0gIGNvbnN0IHJlYWRlciA9IHJz
LmdldFJlYWRlcigpOwotCi0gIGNvbnN0IHByb21pc2UgPSBQcm9taXNlLmFsbChbCi0gICAgcHJv
bWlzZV9yZWplY3RzKHQsIG15RXJyb3IsIHJlYWRlci5yZWFkKCkpLAotICAgIHByb21pc2VfcmVq
ZWN0cyh0LCBteUVycm9yLCByZWFkZXIucmVhZCgpKSwKLSAgICBwcm9taXNlX3JlamVjdHModCwg
bXlFcnJvciwgcmVhZGVyLmNsb3NlZCkKLSAgXSk7Ci0KLSAgY29udHJvbGxlci5lcnJvcihteUVy
cm9yKTsKLSAgcmV0dXJuIHByb21pc2U7Ci0KLX0sICdSZWFkaW5nIHR3aWNlIG9uIGEgc3RyZWFt
IHRoYXQgZ2V0cyBlcnJvcmVkJyk7Ci0KLWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3Ry
ZWFtcy90ZWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3RlZS1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2YmQxOTkxY2FjMjA4ZmU0YTY1YjlkMGFj
YjA3OGNmMGZmYzUzOWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
LWFwaS9yZWFkYWJsZS1zdHJlYW1zL3RlZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSwyNCArMCwwIEBACi0KLVBBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBycy50ZWUoKSByZXR1
cm5zIGFuIGFycmF5IG9mIHR3byBSZWFkYWJsZVN0cmVhbXMgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
IHRlZWluZzogc2hvdWxkIGJlIGFibGUgdG8gcmVhZCBvbmUgYnJhbmNoIHRvIHRoZSBlbmQgd2l0
aG91dCBhZmZlY3RpbmcgdGhlIG90aGVyIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHZh
bHVlcyBzaG91bGQgYmUgZXF1YWwgYWNyb3NzIGVhY2ggYnJhbmNoIAotUEFTUyBSZWFkYWJsZVN0
cmVhbSB0ZWVpbmc6IGVycm9ycyBpbiB0aGUgc291cmNlIHNob3VsZCBwcm9wYWdhdGUgdG8gYm90
aCBicmFuY2hlcyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYnJhbmNo
MSBzaG91bGQgbm90IGltcGFjdCBicmFuY2gyIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6
IGNhbmNlbGluZyBicmFuY2gyIHNob3VsZCBub3QgaW1wYWN0IGJyYW5jaDIgCi1QQVNTIFJlYWRh
YmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJvdGggYnJhbmNoZXMgc2hvdWxkIGFnZ3JlZ2F0
ZSB0aGUgY2FuY2VsIHJlYXNvbnMgaW50byBhbiBhcnJheSAKLVBBU1MgUmVhZGFibGVTdHJlYW0g
dGVlaW5nOiBmYWlsaW5nIHRvIGNhbmNlbCB0aGUgb3JpZ2luYWwgc3RyZWFtIHNob3VsZCBjYXVz
ZSBjYW5jZWwoKSB0byByZWplY3Qgb24gYnJhbmNoZXMgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHRl
ZWluZzogY2xvc2luZyB0aGUgb3JpZ2luYWwgc2hvdWxkIGltbWVkaWF0ZWx5IGNsb3NlIHRoZSBi
cmFuY2hlcyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcmluZyB0aGUgb3JpZ2lu
YWwgc2hvdWxkIGltbWVkaWF0ZWx5IGVycm9yIHRoZSBicmFuY2hlcyAKLUZBSUwgTG9hZCB0ZWUu
anMgd2l0aCBTaGFyZWRXb3JrZXIgYXNzZXJ0X3VucmVhY2hlZDogU2hhcmVkV29ya2VyIGlzIHVu
YXZhaWxhYmxlIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQotRkFJTCBVbnRpdGxlZCB1bmRlZmlu
ZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIu
Z2V0UmVnaXN0cmF0aW9uJykKLVBBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBycy50ZWUoKSBy
ZXR1cm5zIGFuIGFycmF5IG9mIHR3byBSZWFkYWJsZVN0cmVhbXMgCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtIHRlZWluZzogc2hvdWxkIGJlIGFibGUgdG8gcmVhZCBvbmUgYnJhbmNoIHRvIHRoZSBlbmQg
d2l0aG91dCBhZmZlY3RpbmcgdGhlIG90aGVyIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6
IHZhbHVlcyBzaG91bGQgYmUgZXF1YWwgYWNyb3NzIGVhY2ggYnJhbmNoIAotUEFTUyBSZWFkYWJs
ZVN0cmVhbSB0ZWVpbmc6IGVycm9ycyBpbiB0aGUgc291cmNlIHNob3VsZCBwcm9wYWdhdGUgdG8g
Ym90aCBicmFuY2hlcyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYnJh
bmNoMSBzaG91bGQgbm90IGltcGFjdCBicmFuY2gyIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVp
bmc6IGNhbmNlbGluZyBicmFuY2gyIHNob3VsZCBub3QgaW1wYWN0IGJyYW5jaDIgCi1QQVNTIFJl
YWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJvdGggYnJhbmNoZXMgc2hvdWxkIGFnZ3Jl
Z2F0ZSB0aGUgY2FuY2VsIHJlYXNvbnMgaW50byBhbiBhcnJheSAKLVBBU1MgUmVhZGFibGVTdHJl
YW0gdGVlaW5nOiBmYWlsaW5nIHRvIGNhbmNlbCB0aGUgb3JpZ2luYWwgc3RyZWFtIHNob3VsZCBj
YXVzZSBjYW5jZWwoKSB0byByZWplY3Qgb24gYnJhbmNoZXMgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
IHRlZWluZzogY2xvc2luZyB0aGUgb3JpZ2luYWwgc2hvdWxkIGltbWVkaWF0ZWx5IGNsb3NlIHRo
ZSBicmFuY2hlcyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcmluZyB0aGUgb3Jp
Z2luYWwgc2hvdWxkIGltbWVkaWF0ZWx5IGVycm9yIHRoZSBicmFuY2hlcyAKLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFw
aS9yZWFkYWJsZS1zdHJlYW1zL3RlZS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3RlZS5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMmM4NDdiODExNzhhZDBjNTBiYWFjMDlkN2Ix
Y2RjNjg4MjkzMmQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1h
cGkvcmVhZGFibGUtc3RyZWFtcy90ZWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9zZXJ2
aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIj48
L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9ycy11dGlscy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0idGVlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0ndXNlIHN0cmlj
dCc7Ci13b3JrZXJfdGVzdCgndGVlLmpzJyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFi
bGUtc3RyZWFtcy90ZWUuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmpzCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0ODVmMmFmN2FiNWNlNGZmYjY5Yzk1ZjhhOGJlNTRkZmExZTJlZDA3
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUt
c3RyZWFtcy90ZWUuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyNTQgKzAsMCBAQAotJ3VzZSBzdHJp
Y3QnOwotCi1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygn
Li4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcycpOwotfQotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwotICBjb25zdCByZXN1bHQgPSBycy50ZWUoKTsKLQotICBh
c3NlcnRfdHJ1ZShBcnJheS5pc0FycmF5KHJlc3VsdCksICdyZXR1cm4gdmFsdWUgc2hvdWxkIGJl
IGFuIGFycmF5Jyk7Ci0gIGFzc2VydF9lcXVhbHMocmVzdWx0Lmxlbmd0aCwgMiwgJ2FycmF5IHNo
b3VsZCBoYXZlIGxlbmd0aCAyJyk7Ci0gIGFzc2VydF9lcXVhbHMocmVzdWx0WzBdLmNvbnN0cnVj
dG9yLCBSZWFkYWJsZVN0cmVhbSwgJzB0aCBlbGVtZW50IHNob3VsZCBiZSBhIFJlYWRhYmxlU3Ry
ZWFtJyk7Ci0gIGFzc2VydF9lcXVhbHMocmVzdWx0WzFdLmNvbnN0cnVjdG9yLCBSZWFkYWJsZVN0
cmVhbSwgJzFzdCBlbGVtZW50IHNob3VsZCBiZSBhIFJlYWRhYmxlU3RyZWFtJyk7Ci0KLX0sICdS
ZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHJzLnRlZSgpIHJldHVybnMgYW4gYXJyYXkgb2YgdHdvIFJl
YWRhYmxlU3RyZWFtcycpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1ZSgnYScp
OwotICAgICAgYy5lbnF1ZXVlKCdiJyk7Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAgfQotICB9KTsK
LQotICBjb25zdCBicmFuY2ggPSBycy50ZWUoKTsKLSAgY29uc3QgYnJhbmNoMSA9IGJyYW5jaFsw
XTsKLSAgY29uc3QgYnJhbmNoMiA9IGJyYW5jaFsxXTsKLSAgY29uc3QgcmVhZGVyMSA9IGJyYW5j
aDEuZ2V0UmVhZGVyKCk7Ci0gIGNvbnN0IHJlYWRlcjIgPSBicmFuY2gyLmdldFJlYWRlcigpOwot
Ci0gIHJlYWRlcjIuY2xvc2VkLnRoZW4odC51bnJlYWNoZWRfZnVuYygnYnJhbmNoMiBzaG91bGQg
bm90IGJlIGNsb3NlZCcpKTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgIHJlYWRlcjEu
Y2xvc2VkLAotICAgIHJlYWRlcjEucmVhZCgpLnRoZW4ociA9PiB7Ci0gICAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdmaXJzdCBjaHVuayBm
cm9tIGJyYW5jaDEgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLSAgICB9KSwKLSAgICByZWFkZXIxLnJl
YWQoKS50aGVuKHIgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTog
J2InLCBkb25lOiBmYWxzZSB9LCAnc2Vjb25kIGNodW5rIGZyb20gYnJhbmNoMSBzaG91bGQgYmUg
Y29ycmVjdCcpOwotICAgIH0pLAotICAgIHJlYWRlcjEucmVhZCgpLnRoZW4ociA9PiB7Ci0gICAg
ICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUg
fSwgJ3RoaXJkIHJlYWQoKSBmcm9tIGJyYW5jaDEgc2hvdWxkIGJlIGRvbmUnKTsKLSAgICB9KSwK
LSAgICByZWFkZXIyLnJlYWQoKS50aGVuKHIgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVh
bHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgY2h1bmsgZnJvbSBicmFu
Y2gyIHNob3VsZCBiZSBjb3JyZWN0Jyk7Ci0gICAgfSkKLSAgXSk7Ci0KLX0sICdSZWFkYWJsZVN0
cmVhbSB0ZWVpbmc6IHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgb25lIGJyYW5jaCB0byB0aGUgZW5k
IHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBvdGhlcicpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewot
Ci0gIGNvbnN0IHRoZU9iamVjdCA9IHsgdGhlOiAndGVzdCBvYmplY3QnIH07Ci0gIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVucXVldWUo
dGhlT2JqZWN0KTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IGJyYW5jaCA9IHJzLnRlZSgpOwot
ICBjb25zdCBicmFuY2gxID0gYnJhbmNoWzBdOwotICBjb25zdCBicmFuY2gyID0gYnJhbmNoWzFd
OwotICBjb25zdCByZWFkZXIxID0gYnJhbmNoMS5nZXRSZWFkZXIoKTsKLSAgY29uc3QgcmVhZGVy
MiA9IGJyYW5jaDIuZ2V0UmVhZGVyKCk7Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKFtyZWFkZXIx
LnJlYWQoKSwgcmVhZGVyMi5yZWFkKCldKS50aGVuKHZhbHVlcyA9PiB7Ci0gICAgYXNzZXJ0X29i
amVjdF9lcXVhbHModmFsdWVzWzBdLCB2YWx1ZXNbMV0sICd0aGUgdmFsdWVzIHNob3VsZCBiZSBl
cXVhbCcpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogdmFsdWVzIHNob3Vs
ZCBiZSBlcXVhbCBhY3Jvc3MgZWFjaCBicmFuY2gnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewot
Ci0gIGNvbnN0IHRoZUVycm9yID0geyBuYW1lOiAnYm9vIScgfTsKLSAgY29uc3QgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1ZSgnYScpOwot
ICAgICAgYy5lbnF1ZXVlKCdiJyk7Ci0gICAgfSwKLSAgICBwdWxsKCkgewotICAgICAgdGhyb3cg
dGhlRXJyb3I7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBicmFuY2hlcyA9IHJzLnRlZSgpOwot
ICBjb25zdCByZWFkZXIxID0gYnJhbmNoZXNbMF0uZ2V0UmVhZGVyKCk7Ci0gIGNvbnN0IHJlYWRl
cjIgPSBicmFuY2hlc1sxXS5nZXRSZWFkZXIoKTsKLQotICByZWFkZXIxLmxhYmVsID0gJ3JlYWRl
cjEnOwotICByZWFkZXIyLmxhYmVsID0gJ3JlYWRlcjInOwotCi0gIHJldHVybiBQcm9taXNlLmFs
bChbCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIxLmNsb3NlZCksCi0g
ICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIyLmNsb3NlZCksCi0gICAgcmVh
ZGVyMS5yZWFkKCkudGhlbihyID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsg
dmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3Nob3VsZCBiZSBhYmxlIHRvIHJlYWQgdGhlIGZp
cnN0IGNodW5rIGluIGJyYW5jaDEnKTsKLSAgICB9KSwKLSAgICByZWFkZXIxLnJlYWQoKS50aGVu
KHIgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2InLCBkb25l
OiBmYWxzZSB9LCAnc2hvdWxkIGJlIGFibGUgdG8gcmVhZCB0aGUgc2Vjb25kIGNodW5rIGluIGJy
YW5jaDEnKTsKLQotICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcmVh
ZGVyMi5yZWFkKCkpOwotICAgIH0pCi0gICAgLnRoZW4oKCkgPT4gcHJvbWlzZV9yZWplY3RzKHQs
IHRoZUVycm9yLCByZWFkZXIxLnJlYWQoKSkpCi0gIF0pOwotCi19LCAnUmVhZGFibGVTdHJlYW0g
dGVlaW5nOiBlcnJvcnMgaW4gdGhlIHNvdXJjZSBzaG91bGQgcHJvcGFnYXRlIHRvIGJvdGggYnJh
bmNoZXMnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAg
ICBjLmVucXVldWUoJ2InKTsKLSAgICAgIGMuY2xvc2UoKTsKLSAgICB9Ci0gIH0pOwotCi0gIGNv
bnN0IGJyYW5jaGVzID0gcnMudGVlKCk7Ci0gIGNvbnN0IGJyYW5jaDEgPSBicmFuY2hlc1swXTsK
LSAgY29uc3QgYnJhbmNoMiA9IGJyYW5jaGVzWzFdOwotICBicmFuY2gxLmNhbmNlbCgpOwotCi0g
IHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgcmVhZGFibGVTdHJlYW1Ub0FycmF5KGJyYW5jaDEp
LnRoZW4oY2h1bmtzID0+IHsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbXSwg
J2JyYW5jaDEgc2hvdWxkIGhhdmUgbm8gY2h1bmtzJyk7Ci0gICAgfSksCi0gICAgcmVhZGFibGVT
dHJlYW1Ub0FycmF5KGJyYW5jaDIpLnRoZW4oY2h1bmtzID0+IHsKLSAgICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMoY2h1bmtzLCBbJ2EnLCAnYiddLCAnYnJhbmNoMiBzaG91bGQgaGF2ZSB0d28gY2h1
bmtzJyk7Ci0gICAgfSkKLSAgXSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNl
bGluZyBicmFuY2gxIHNob3VsZCBub3QgaW1wYWN0IGJyYW5jaDInKTsKLQotcHJvbWlzZV90ZXN0
KCgpID0+IHsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQo
YykgewotICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICBjLmVucXVldWUoJ2InKTsKLSAgICAg
IGMuY2xvc2UoKTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IGJyYW5jaGVzID0gcnMudGVlKCk7
Ci0gIGNvbnN0IGJyYW5jaDEgPSBicmFuY2hlc1swXTsKLSAgY29uc3QgYnJhbmNoMiA9IGJyYW5j
aGVzWzFdOwotICBicmFuY2gyLmNhbmNlbCgpOwotCi0gIHJldHVybiBQcm9taXNlLmFsbChbCi0g
ICAgcmVhZGFibGVTdHJlYW1Ub0FycmF5KGJyYW5jaDEpLnRoZW4oY2h1bmtzID0+IHsKLSAgICAg
IGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbJ2EnLCAnYiddLCAnYnJhbmNoMSBzaG91bGQg
aGF2ZSB0d28gY2h1bmtzJyk7Ci0gICAgfSksCi0gICAgcmVhZGFibGVTdHJlYW1Ub0FycmF5KGJy
YW5jaDIpLnRoZW4oY2h1bmtzID0+IHsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtz
LCBbXSwgJ2JyYW5jaDIgc2hvdWxkIGhhdmUgbm8gY2h1bmtzJyk7Ci0gICAgfSkKLSAgXSk7Ci0K
LX0sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBicmFuY2gyIHNob3VsZCBub3Qg
aW1wYWN0IGJyYW5jaDInKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCByZWFz
b24xID0gbmV3IEVycm9yKCdXZVwncmUgd2FudGVkIG1lbi4nKTsKLSAgY29uc3QgcmVhc29uMiA9
IG5ldyBFcnJvcignSSBoYXZlIHRoZSBkZWF0aCBzZW50ZW5jZSBvbiB0d2VsdmUgc3lzdGVtcy4n
KTsKLQotICBsZXQgcmVzb2x2ZTsKLSAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKHIgPT4g
cmVzb2x2ZSA9IHIpOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgY2Fu
Y2VsKHJlYXNvbikgewotICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhyZWFzb24sIFtyZWFzb24x
LCByZWFzb24yXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBjYW5jZWwgcmVhc29u
IHNob3VsZCBiZSBhbiBhcnJheSBjb250YWluaW5nIHRob3NlIGZyb20gdGhlIGJyYW5jaGVzJyk7
Ci0gICAgICByZXNvbHZlKCk7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBicmFuY2ggPSBycy50
ZWUoKTsKLSAgY29uc3QgYnJhbmNoMSA9IGJyYW5jaFswXTsKLSAgY29uc3QgYnJhbmNoMiA9IGJy
YW5jaFsxXTsKLSAgYnJhbmNoMS5jYW5jZWwocmVhc29uMSk7Ci0gIGJyYW5jaDIuY2FuY2VsKHJl
YXNvbjIpOwotCi0gIHJldHVybiBwcm9taXNlOwotCi19LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5n
OiBjYW5jZWxpbmcgYm90aCBicmFuY2hlcyBzaG91bGQgYWdncmVnYXRlIHRoZSBjYW5jZWwgcmVh
c29ucyBpbnRvIGFuIGFycmF5Jyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCB0
aGVFcnJvciA9IHsgbmFtZTogJ0lcJ2xsIGJlIGNhcmVmdWwuJyB9OwotICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgY2FuY2VsKCkgewotICAgICAgdGhyb3cgdGhlRXJyb3I7
Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBicmFuY2ggPSBycy50ZWUoKTsKLSAgY29uc3QgYnJh
bmNoMSA9IGJyYW5jaFswXTsKLSAgY29uc3QgYnJhbmNoMiA9IGJyYW5jaFsxXTsKLQotICByZXR1
cm4gUHJvbWlzZS5hbGwoWwotICAgIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgYnJhbmNo
MS5jYW5jZWwoKSksCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCBicmFuY2gyLmNh
bmNlbCgpKQotICBdKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogZmFpbGluZyB0byBj
YW5jZWwgdGhlIG9yaWdpbmFsIHN0cmVhbSBzaG91bGQgY2F1c2UgY2FuY2VsKCkgdG8gcmVqZWN0
IG9uIGJyYW5jaGVzJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xs
ZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0g
ICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IGJyYW5jaGVzID0g
cnMudGVlKCk7Ci0gIGNvbnN0IHJlYWRlcjEgPSBicmFuY2hlc1swXS5nZXRSZWFkZXIoKTsKLSAg
Y29uc3QgcmVhZGVyMiA9IGJyYW5jaGVzWzFdLmdldFJlYWRlcigpOwotCi0gIGNvbnN0IHByb21p
c2UgPSBQcm9taXNlLmFsbChbcmVhZGVyMS5jbG9zZWQsIHJlYWRlcjIuY2xvc2VkXSk7Ci0KLSAg
Y29udHJvbGxlci5jbG9zZSgpOwotICByZXR1cm4gcHJvbWlzZTsKLQotfSwgJ1JlYWRhYmxlU3Ry
ZWFtIHRlZWluZzogY2xvc2luZyB0aGUgb3JpZ2luYWwgc2hvdWxkIGltbWVkaWF0ZWx5IGNsb3Nl
IHRoZSBicmFuY2hlcycpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xs
ZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0g
ICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IGJyYW5jaGVzID0g
cnMudGVlKCk7Ci0gIGNvbnN0IHJlYWRlcjEgPSBicmFuY2hlc1swXS5nZXRSZWFkZXIoKTsKLSAg
Y29uc3QgcmVhZGVyMiA9IGJyYW5jaGVzWzFdLmdldFJlYWRlcigpOwotCi0gIGNvbnN0IHRoZUVy
cm9yID0geyBuYW1lOiAnYm9vIScgfTsKLSAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UuYWxsKFsK
LSAgICBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJlYWRlcjEuY2xvc2VkKSwKLSAgICBw
cm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJlYWRlcjIuY2xvc2VkKQotICBdKTsKLQotICBj
b250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKLSAgcmV0dXJuIHByb21pc2U7Ci0KLX0sICdSZWFk
YWJsZVN0cmVhbSB0ZWVpbmc6IGVycm9yaW5nIHRoZSBvcmlnaW5hbCBzaG91bGQgaW1tZWRpYXRl
bHkgZXJyb3IgdGhlIGJyYW5jaGVzJyk7Ci0KLWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUt
c3RyZWFtcy90ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRl
ZC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5OTdiZDJhZmRh
YmJmMjY3N2E0YzQ3MzQ1NWVjNjlmMDIzN2NiNGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxNzQgKzAsMCBAQAotCi1QQVNTIFJ1bm5pbmcgdGVtcGxh
dGVkUlNFbXB0eSB3aXRoIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgCi1QQVNTIGluc3RhbmNlcyBo
YXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgCi1QQVNTIFJ1bm5pbmcgdGVt
cGxhdGVkUlNFbXB0eVJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyIAot
UEFTUyBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIAot
UEFTUyBsb2NrZWQgc2hvdWxkIGJlIHRydWUgCi1QQVNTIHJlYWQoKSBzaG91bGQgbmV2ZXIgc2V0
dGxlIAotUEFTUyB0d28gcmVhZCgpcyBzaG91bGQgYm90aCBuZXZlciBzZXR0bGUgCi1QQVNTIHJl
YWQoKSBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzIGVhY2ggdGltZSAKLVBBU1MgZ2V0
UmVhZGVyKCkgYWdhaW4gb24gdGhlIHN0cmVhbSBzaG91bGQgZmFpbCAKLVBBU1MgcmVsZWFzaW5n
IHRoZSBsb2NrIHdpdGggcGVuZGluZyByZWFkIHJlcXVlc3RzIHNob3VsZCB0aHJvdyBidXQgdGhl
IHJlYWQgcmVxdWVzdHMgc2hvdWxkIHN0YXkgcGVuZGluZyAKLVBBU1MgcmVsZWFzaW5nIHRoZSBs
b2NrIHNob3VsZCBjYXVzZSBmdXJ0aGVyIHJlYWQoKSBjYWxscyB0byByZWplY3Qgd2l0aCBhIFR5
cGVFcnJvciAKLVBBU1MgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgY2Fs
bHMgdG8gcmVqZWN0IHdpdGggYSBUeXBlRXJyb3IgCi1QQVNTIHJlbGVhc2luZyB0aGUgbG9jayBz
aG91bGQgY2F1c2UgbG9ja2VkIHRvIGJlY29tZSBmYWxzZSAKLVBBU1MgY2FuY2VsaW5nIHZpYSB0
aGUgcmVhZGVyIHNob3VsZCBjYXVzZSB0aGUgcmVhZGVyIHRvIGFjdCBjbG9zZWQgCi1QQVNTIGNh
bmNlbGluZyB2aWEgdGhlIHN0cmVhbSBzaG91bGQgZmFpbCAKLVBBU1MgUnVubmluZyB0ZW1wbGF0
ZWRSU0Nsb3NlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbGwgaW4gc3RhcnQp
IAotUEFTUyBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21p
c2UgZWFjaCB0aW1lIAotUEFTUyBsb2NrZWQgc2hvdWxkIGJlIGZhbHNlIAotUEFTUyBnZXRSZWFk
ZXIoKSBzaG91bGQgYmUgT0sgCi1QQVNTIHNob3VsZCBiZSBhYmxlIHRvIGFjcXVpcmUgbXVsdGlw
bGUgcmVhZGVycyBpZiB0aGV5IGFyZSByZWxlYXNlZCBpbiBzdWNjZXNzaW9uIAotUEFTUyBzaG91
bGQgbm90IGJlIGFibGUgdG8gYWNxdWlyZSBhIHNlY29uZCByZWFkZXIgaWYgd2UgZG9uJ3QgcmVs
ZWFzZSB0aGUgZmlyc3Qgb25lIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVy
IHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVy
KSAKLVBBU1MgcmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBk
b25lOiB0cnVlIH0gCi1QQVNTIHJlYWQoKSBtdWx0aXBsZSB0aW1lcyBzaG91bGQgZnVsZmlsbCB3
aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAotUEFTUyByZWFkKCkgc2hvdWxk
IHdvcmsgd2hlbiB1c2VkIHdpdGhpbiBhbm90aGVyIHJlYWQoKSBmdWxmaWxsIGNhbGxiYWNrIAot
UEFTUyBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQgCi1QQVNTIHJlbGVhc2lu
ZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50
aXR5IAotUEFTUyBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHBy
b21pc2UgZWFjaCB0aW1lIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyIHdp
dGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpIAot
UEFTUyByZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6
IHRydWUgfSAKLVBBU1MgcmVhZCgpIG11bHRpcGxlIHRpbWVzIHNob3VsZCBmdWxmaWxsIHdpdGgg
eyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCi1QQVNTIHJlYWQoKSBzaG91bGQgd29y
ayB3aGVuIHVzZWQgd2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZpbGwgY2FsbGJhY2sgCi1QQVNT
IGNsb3NlZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCAKLVBBU1MgcmVsZWFzaW5nIHRo
ZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkg
Ci1QQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlz
ZSBlYWNoIHRpbWUgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWQgd2l0aCBSZWFkYWJs
ZVN0cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwpIAotUEFTUyBjYW5jZWwoKSBzaG91bGQgcmV0dXJu
IGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIAotUEFTUyBsb2NrZWQgc2hv
dWxkIGJlIGZhbHNlIAotUEFTUyBnZXRSZWFkZXIoKSBzaG91bGQgYmUgT0sgCi1QQVNTIHNob3Vs
ZCBiZSBhYmxlIHRvIGFjcXVpcmUgbXVsdGlwbGUgcmVhZGVycyBpZiB0aGV5IGFyZSByZWxlYXNl
ZCBpbiBzdWNjZXNzaW9uIAotUEFTUyBzaG91bGQgbm90IGJlIGFibGUgdG8gYWNxdWlyZSBhIHNl
Y29uZCByZWFkZXIgaWYgd2UgZG9uJ3QgcmVsZWFzZSB0aGUgZmlyc3Qgb25lIAotUEFTUyBSdW5u
aW5nIHRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChj
bG9zZWQgdmlhIGNhbmNlbCBhZnRlciBnZXR0aW5nIHJlYWRlcikgCi1QQVNTIHJlYWQoKSBzaG91
bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAotUEFTUyBy
ZWFkKCkgbXVsdGlwbGUgdGltZXMgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmlu
ZWQsIGRvbmU6IHRydWUgfSAKLVBBU1MgcmVhZCgpIHNob3VsZCB3b3JrIHdoZW4gdXNlZCB3aXRo
aW4gYW5vdGhlciByZWFkKCkgZnVsZmlsbCBjYWxsYmFjayAKLVBBU1MgY2xvc2VkIHNob3VsZCBm
dWxmaWxsIHdpdGggdW5kZWZpbmVkIAotUEFTUyByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNh
dXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKLVBBU1MgY2FuY2VsKCkg
c2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZSAKLVBB
U1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3Jl
ZCB2aWEgY2FsbCBpbiBzdGFydCkgCi1QQVNTIGdldFJlYWRlcigpIHNob3VsZCByZXR1cm4gYSBy
ZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQgCi1QQVNTIHJlYWQoKSB0d2ljZSBzaG91bGQgZ2l2ZSB0
aGUgZXJyb3IgZWFjaCB0aW1lIAotUEFTUyBsb2NrZWQgc2hvdWxkIGJlIGZhbHNlIAotUEFTUyBS
dW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFN5bmNPbmx5IHdpdGggUmVhZGFibGVTdHJlYW0gKGVy
cm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpIAotUEFTUyBzaG91bGQgYmUgYWJsZSB0byBvYnRhaW4g
YSBzZWNvbmQgcmVhZGVyLCB3aXRoIHRoZSBjb3JyZWN0IGNsb3NlZCBwcm9taXNlIAotUEFTUyBz
aG91bGQgbm90IGJlIGFibGUgdG8gb2J0YWluIGFkZGl0aW9uYWwgcmVhZGVycyBpZiB3ZSBkb24n
dCByZWxlYXNlIHRoZSBmaXJzdCBsb2NrIAotUEFTUyBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEg
ZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUgCi1QQVNTIHJlYWRlciBjYW5jZWwo
KSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUgCi1Q
QVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkIHdpdGggUmVhZGFibGVTdHJlYW0gKGVycm9y
ZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpIAotUEFTUyBnZXRS
ZWFkZXIoKSBzaG91bGQgcmV0dXJuIGEgcmVhZGVyIHRoYXQgYWN0cyBlcnJvcmVkIAotUEFTUyBy
ZWFkKCkgdHdpY2Ugc2hvdWxkIGdpdmUgdGhlIGVycm9yIGVhY2ggdGltZSAKLVBBU1MgbG9ja2Vk
IHNob3VsZCBiZSBmYWxzZSAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIg
d2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJv
bWlzZSBpbiBzdGFydCkgcmVhZGVyIAotUEFTUyBjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRo
ZSBlcnJvciAKLVBBU1MgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8g
cmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkgCi1QQVNTIHJlYWQoKSBzaG91bGQgcmVqZWN0IHdp
dGggdGhlIGVycm9yIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlciB3aXRo
IFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpIAot
UEFTUyBjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciAKLVBBU1MgcmVsZWFzaW5n
IHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRp
dHkgCi1QQVNTIHJlYWQoKSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAotUEFTUyBSdW5u
aW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAo
ZXJyb3JlZCBhZnRlciBnZXR0aW5nIHJlYWRlcikgCi1QQVNTIGNsb3NlZCBzaG91bGQgcmVqZWN0
IHdpdGggdGhlIGVycm9yIAotUEFTUyByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNs
b3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKLVBBU1MgcmVhZCgpIHNob3VsZCBy
ZWplY3Qgd2l0aCB0aGUgZXJyb3IgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNUd29DaHVua3NP
cGVuUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHN0aWxs
IG9wZW4pIHJlYWRlciAKLVBBU1MgY2FsbGluZyByZWFkKCkgdHdpY2Ugd2l0aG91dCB3YWl0aW5n
IHdpbGwgZXZlbnR1YWxseSBnaXZlIGJvdGggY2h1bmtzIChzZXF1ZW50aWFsKSAKLVBBU1MgY2Fs
bGluZyByZWFkKCkgdHdpY2Ugd2l0aG91dCB3YWl0aW5nIHdpbGwgZXZlbnR1YWxseSBnaXZlIGJv
dGggY2h1bmtzIChuZXN0ZWQpIAotUEFTUyByZWFkKCkgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBw
cm9taXNlcyBlYWNoIHRpbWUgCi1QQVNTIGNhbmNlbCgpIGFmdGVyIGEgcmVhZCgpIHNob3VsZCBz
dGlsbCBnaXZlIHRoYXQgc2luZ2xlIHJlYWQgcmVzdWx0IAotUEFTUyBSdW5uaW5nIHRlbXBsYXRl
ZFJTVHdvQ2h1bmtzQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3Mg
ZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXIgCi1QQVNTIHRoaXJkIHJlYWQoKSwgd2l0aG91
dCB3YWl0aW5nLCBzaG91bGQgZ2l2ZSB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAo
c2VxdWVudGlhbCkgCi1QQVNTIHRoaXJkIHJlYWQoKSwgd2l0aG91dCB3YWl0aW5nLCBzaG91bGQg
Z2l2ZSB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAobmVzdGVkKSAKLVBBU1MgZHJh
aW5pbmcgdGhlIHN0cmVhbSB2aWEgcmVhZCgpIHNob3VsZCBjYXVzZSB0aGUgcmVhZGVyIGNsb3Nl
ZCBwcm9taXNlIHRvIGZ1bGZpbGwsIGJ1dCBsb2NrZWQgc3RheXMgdHJ1ZSAKLVBBU1MgcmVsZWFz
aW5nIHRoZSBsb2NrIGFmdGVyIHRoZSBzdHJlYW0gaXMgY2xvc2VkIHNob3VsZCBjYXVzZSBsb2Nr
ZWQgdG8gYmVjb21lIGZhbHNlIAotUEFTUyByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNl
IGZ1cnRoZXIgcmVhZCgpIGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yIAotUEFTUyBy
ZWFkZXIncyBjbG9zZWQgcHJvcGVydHkgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUgcHJvbWlzZSAK
LUZBSUwgTG9hZCB0ZW1wbGF0ZWQuanMgd2l0aCBTaGFyZWRXb3JrZXIgYXNzZXJ0X3VucmVhY2hl
ZDogU2hhcmVkV29ya2VyIGlzIHVuYXZhaWxhYmxlIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQot
RkFJTCBVbnRpdGxlZCB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnbmF2
aWdhdG9yLnNlcnZpY2VXb3JrZXIuZ2V0UmVnaXN0cmF0aW9uJykKLVBBU1MgUnVubmluZyB0ZW1w
bGF0ZWRSU0VtcHR5IHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5KSAKLVBBU1MgaW5zdGFuY2Vz
IGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBhbmQgcHJvcGVydGllcyAKLVBBU1MgUnVubmluZyB0
ZW1wbGF0ZWRSU0VtcHR5UmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXIg
Ci1QQVNTIGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMg
Ci1QQVNTIGxvY2tlZCBzaG91bGQgYmUgdHJ1ZSAKLVBBU1MgcmVhZCgpIHNob3VsZCBuZXZlciBz
ZXR0bGUgCi1QQVNTIHR3byByZWFkKClzIHNob3VsZCBib3RoIG5ldmVyIHNldHRsZSAKLVBBU1Mg
cmVhZCgpIHNob3VsZCByZXR1cm4gZGlzdGluY3QgcHJvbWlzZXMgZWFjaCB0aW1lIAotUEFTUyBn
ZXRSZWFkZXIoKSBhZ2FpbiBvbiB0aGUgc3RyZWFtIHNob3VsZCBmYWlsIAotUEFTUyByZWxlYXNp
bmcgdGhlIGxvY2sgd2l0aCBwZW5kaW5nIHJlYWQgcmVxdWVzdHMgc2hvdWxkIHRocm93IGJ1dCB0
aGUgcmVhZCByZXF1ZXN0cyBzaG91bGQgc3RheSBwZW5kaW5nIAotUEFTUyByZWxlYXNpbmcgdGhl
IGxvY2sgc2hvdWxkIGNhdXNlIGZ1cnRoZXIgcmVhZCgpIGNhbGxzIHRvIHJlamVjdCB3aXRoIGEg
VHlwZUVycm9yIAotUEFTUyByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCBj
YWxscyB0byByZWplY3Qgd2l0aCBhIFR5cGVFcnJvciAKLVBBU1MgcmVsZWFzaW5nIHRoZSBsb2Nr
IHNob3VsZCBjYXVzZSBsb2NrZWQgdG8gYmVjb21lIGZhbHNlIAotUEFTUyBjYW5jZWxpbmcgdmlh
IHRoZSByZWFkZXIgc2hvdWxkIGNhdXNlIHRoZSByZWFkZXIgdG8gYWN0IGNsb3NlZCAKLVBBU1Mg
Y2FuY2VsaW5nIHZpYSB0aGUgc3RyZWFtIHNob3VsZCBmYWlsIAotUEFTUyBSdW5uaW5nIHRlbXBs
YXRlZFJTQ2xvc2VkIHdpdGggUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBzdGFy
dCkgCi1QQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJv
bWlzZSBlYWNoIHRpbWUgCi1QQVNTIGxvY2tlZCBzaG91bGQgYmUgZmFsc2UgCi1QQVNTIGdldFJl
YWRlcigpIHNob3VsZCBiZSBPSyAKLVBBU1Mgc2hvdWxkIGJlIGFibGUgdG8gYWNxdWlyZSBtdWx0
aXBsZSByZWFkZXJzIGlmIHRoZXkgYXJlIHJlbGVhc2VkIGluIHN1Y2Nlc3Npb24gCi1QQVNTIHNo
b3VsZCBub3QgYmUgYWJsZSB0byBhY3F1aXJlIGEgc2Vjb25kIHJlYWRlciBpZiB3ZSBkb24ndCBy
ZWxlYXNlIHRoZSBmaXJzdCBvbmUgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFk
ZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUgZ2V0dGluZyByZWFk
ZXIpIAotUEFTUyByZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQs
IGRvbmU6IHRydWUgfSAKLVBBU1MgcmVhZCgpIG11bHRpcGxlIHRpbWVzIHNob3VsZCBmdWxmaWxs
IHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCi1QQVNTIHJlYWQoKSBzaG91
bGQgd29yayB3aGVuIHVzZWQgd2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZpbGwgY2FsbGJhY2sg
Ci1QQVNTIGNsb3NlZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCAKLVBBU1MgcmVsZWFz
aW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRl
bnRpdHkgCi1QQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQg
cHJvbWlzZSBlYWNoIHRpbWUgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIg
d2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJlYWRlcikg
Ci1QQVNTIHJlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9u
ZTogdHJ1ZSB9IAotUEFTUyByZWFkKCkgbXVsdGlwbGUgdGltZXMgc2hvdWxkIGZ1bGZpbGwgd2l0
aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKLVBBU1MgcmVhZCgpIHNob3VsZCB3
b3JrIHdoZW4gdXNlZCB3aXRoaW4gYW5vdGhlciByZWFkKCkgZnVsZmlsbCBjYWxsYmFjayAKLVBB
U1MgY2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkIAotUEFTUyByZWxlYXNpbmcg
dGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0
eSAKLVBBU1MgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9t
aXNlIGVhY2ggdGltZSAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZCB3aXRoIFJlYWRh
YmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbmNlbCkgCi1QQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1
cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgCi1QQVNTIGxvY2tlZCBz
aG91bGQgYmUgZmFsc2UgCi1QQVNTIGdldFJlYWRlcigpIHNob3VsZCBiZSBPSyAKLVBBU1Mgc2hv
dWxkIGJlIGFibGUgdG8gYWNxdWlyZSBtdWx0aXBsZSByZWFkZXJzIGlmIHRoZXkgYXJlIHJlbGVh
c2VkIGluIHN1Y2Nlc3Npb24gCi1QQVNTIHNob3VsZCBub3QgYmUgYWJsZSB0byBhY3F1aXJlIGEg
c2Vjb25kIHJlYWRlciBpZiB3ZSBkb24ndCByZWxlYXNlIHRoZSBmaXJzdCBvbmUgCi1QQVNTIFJ1
bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIg
KGNsb3NlZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcgcmVhZGVyKSAKLVBBU1MgcmVhZCgpIHNo
b3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCi1QQVNT
IHJlYWQoKSBtdWx0aXBsZSB0aW1lcyBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVm
aW5lZCwgZG9uZTogdHJ1ZSB9IAotUEFTUyByZWFkKCkgc2hvdWxkIHdvcmsgd2hlbiB1c2VkIHdp
dGhpbiBhbm90aGVyIHJlYWQoKSBmdWxmaWxsIGNhbGxiYWNrIAotUEFTUyBjbG9zZWQgc2hvdWxk
IGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQgCi1QQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQg
Y2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IAotUEFTUyBjYW5jZWwo
KSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIAot
UEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJv
cmVkIHZpYSBjYWxsIGluIHN0YXJ0KSAKLVBBU1MgZ2V0UmVhZGVyKCkgc2hvdWxkIHJldHVybiBh
IHJlYWRlciB0aGF0IGFjdHMgZXJyb3JlZCAKLVBBU1MgcmVhZCgpIHR3aWNlIHNob3VsZCBnaXZl
IHRoZSBlcnJvciBlYWNoIHRpbWUgCi1QQVNTIGxvY2tlZCBzaG91bGQgYmUgZmFsc2UgCi1QQVNT
IFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHkgd2l0aCBSZWFkYWJsZVN0cmVhbSAo
ZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCkgCi1QQVNTIHNob3VsZCBiZSBhYmxlIHRvIG9idGFp
biBhIHNlY29uZCByZWFkZXIsIHdpdGggdGhlIGNvcnJlY3QgY2xvc2VkIHByb21pc2UgCi1QQVNT
IHNob3VsZCBub3QgYmUgYWJsZSB0byBvYnRhaW4gYWRkaXRpb25hbCByZWFkZXJzIGlmIHdlIGRv
bid0IHJlbGVhc2UgdGhlIGZpcnN0IGxvY2sgCi1QQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1cm4g
YSBkaXN0aW5jdCByZWplY3RlZCBwcm9taXNlIGVhY2ggdGltZSAKLVBBU1MgcmVhZGVyIGNhbmNl
bCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCByZWplY3RlZCBwcm9taXNlIGVhY2ggdGltZSAK
LVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJy
b3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgCi1QQVNTIGdl
dFJlYWRlcigpIHNob3VsZCByZXR1cm4gYSByZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQgCi1QQVNT
IHJlYWQoKSB0d2ljZSBzaG91bGQgZ2l2ZSB0aGUgZXJyb3IgZWFjaCB0aW1lIAotUEFTUyBsb2Nr
ZWQgc2hvdWxkIGJlIGZhbHNlIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRl
ciB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBw
cm9taXNlIGluIHN0YXJ0KSByZWFkZXIgCi1QQVNTIGNsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGgg
dGhlIGVycm9yIAotUEFTUyByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0
byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKLVBBU1MgcmVhZCgpIHNob3VsZCByZWplY3Qg
d2l0aCB0aGUgZXJyb3IgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyIHdp
dGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcikg
Ci1QQVNTIGNsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAotUEFTUyByZWxlYXNp
bmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVu
dGl0eSAKLVBBU1MgcmVhZCgpIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCi1QQVNTIFJ1
bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVy
IChlcnJvcmVkIGFmdGVyIGdldHRpbmcgcmVhZGVyKSAKLVBBU1MgY2xvc2VkIHNob3VsZCByZWpl
Y3Qgd2l0aCB0aGUgZXJyb3IgCi1QQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2Ug
Y2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IAotUEFTUyByZWFkKCkgc2hvdWxk
IHJlamVjdCB3aXRoIHRoZSBlcnJvciAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU1R3b0NodW5r
c09wZW5SZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgc3Rp
bGwgb3BlbikgcmVhZGVyIAotUEFTUyBjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRp
bmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MgKHNlcXVlbnRpYWwpIAotUEFTUyBj
YWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUg
Ym90aCBjaHVua3MgKG5lc3RlZCkgCi1QQVNTIHJlYWQoKSBzaG91bGQgcmV0dXJuIGRpc3RpbmN0
IHByb21pc2VzIGVhY2ggdGltZSAKLVBBU1MgY2FuY2VsKCkgYWZ0ZXIgYSByZWFkKCkgc2hvdWxk
IHN0aWxsIGdpdmUgdGhhdCBzaW5nbGUgcmVhZCByZXN1bHQgCi1QQVNTIFJ1bm5pbmcgdGVtcGxh
dGVkUlNUd29DaHVua3NDbG9zZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5r
cyBlbnF1ZXVlZCwgdGhlbiBjbG9zZWQpIHJlYWRlciAKLVBBU1MgdGhpcmQgcmVhZCgpLCB3aXRo
b3V0IHdhaXRpbmcsIHNob3VsZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9
IChzZXF1ZW50aWFsKSAKLVBBU1MgdGhpcmQgcmVhZCgpLCB3aXRob3V0IHdhaXRpbmcsIHNob3Vs
ZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IChuZXN0ZWQpIAotUEFTUyBk
cmFpbmluZyB0aGUgc3RyZWFtIHZpYSByZWFkKCkgc2hvdWxkIGNhdXNlIHRoZSByZWFkZXIgY2xv
c2VkIHByb21pc2UgdG8gZnVsZmlsbCwgYnV0IGxvY2tlZCBzdGF5cyB0cnVlIAotUEFTUyByZWxl
YXNpbmcgdGhlIGxvY2sgYWZ0ZXIgdGhlIHN0cmVhbSBpcyBjbG9zZWQgc2hvdWxkIGNhdXNlIGxv
Y2tlZCB0byBiZWNvbWUgZmFsc2UgCi1QQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1
c2UgZnVydGhlciByZWFkKCkgY2FsbHMgdG8gcmVqZWN0IHdpdGggYSBUeXBlRXJyb3IgCi1QQVNT
IHJlYWRlcidzIGNsb3NlZCBwcm9wZXJ0eSBhbHdheXMgcmV0dXJucyB0aGUgc2FtZSBwcm9taXNl
IAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxl
LXN0cmVhbXMvdGVtcGxhdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1
YzZhNmFjYWVmYjVkYWM1OGI5NWYyMjgxMTAzMmU5YWJhNjJhZmMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
cnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9ycy10ZXN0LXRlbXBsYXRlcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0idGVt
cGxhdGVkLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci13b3JrZXJfdGVz
dCgndGVtcGxhdGVkLmpzJyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFt
cy90ZW1wbGF0ZWQuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmpzCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2ZGIwNDI5OTk0ZDQ1M2RiZmNkMmU4MzQ3ZTZmYTdlZmRmMjBi
YzRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFi
bGUtc3RyZWFtcy90ZW1wbGF0ZWQuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDggKzAsMCBAQAot
J3VzZSBzdHJpY3QnOwotCi1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYuaW1wb3J0
U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOwotICBzZWxmLmltcG9ydFNjcmlw
dHMoJy4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygn
Li4vcmVzb3VyY2VzL3JzLXRlc3QtdGVtcGxhdGVzLmpzJyk7Ci19Ci0KLS8vIFJ1biB0aGUgcmVh
ZGFibGUgc3RyZWFtIHRlc3QgdGVtcGxhdGVzIGFnYWluc3QgcmVhZGFibGUgc3RyZWFtcyBjcmVh
dGVkIGRpcmVjdGx5IHVzaW5nIHRoZSBjb25zdHJ1Y3RvcgotCi1jb25zdCB0aGVFcnJvciA9IHsg
bmFtZTogJ2JvbyEnIH07Ci1jb25zdCBjaHVua3MgPSBbJ2EnLCAnYiddOwotCi10ZW1wbGF0ZWRS
U0VtcHR5KCdSZWFkYWJsZVN0cmVhbSAoZW1wdHkpJywgKCkgPT4gewotICByZXR1cm4gbmV3IFJl
YWRhYmxlU3RyZWFtKCk7Ci19KTsKLQotdGVtcGxhdGVkUlNFbXB0eVJlYWRlcignUmVhZGFibGVT
dHJlYW0gKGVtcHR5KSByZWFkZXInLCAoKSA9PiB7Ci0gIHJldHVybiBzdHJlYW1BbmREZWZhdWx0
UmVhZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSgpKTsKLX0pOwotCi10ZW1wbGF0ZWRSU0Nsb3NlZCgn
UmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBzdGFydCknLCAoKSA9PiB7Ci0gIHJl
dHVybiBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuY2xvc2Uo
KTsKLSAgICB9Ci0gIH0pOwotfSk7Ci0KLXRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyKCdSZWFkYWJs
ZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpJywgKCkgPT4gewot
ICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
LSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0pOwotICBj
b250cm9sbGVyLmNsb3NlKCk7Ci0gIGNvbnN0IHJlc3VsdCA9IHN0cmVhbUFuZERlZmF1bHRSZWFk
ZXIoc3RyZWFtKTsKLSAgcmV0dXJuIHJlc3VsdDsKLX0pOwotCi10ZW1wbGF0ZWRSU0Nsb3NlZFJl
YWRlcignUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIp
JywgKCkgPT4gewotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9
Ci0gIH0pOwotICBjb25zdCByZXN1bHQgPSBzdHJlYW1BbmREZWZhdWx0UmVhZGVyKHN0cmVhbSk7
Ci0gIGNvbnRyb2xsZXIuY2xvc2UoKTsKLSAgcmV0dXJuIHJlc3VsdDsKLX0pOwotCi10ZW1wbGF0
ZWRSU0Nsb3NlZCgnUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKScsICgpID0+IHsK
LSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci0gIHN0cmVhbS5jYW5jZWwo
KTsKLSAgcmV0dXJuIHN0cmVhbTsKLX0pOwotCi10ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlcignUmVh
ZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgdmlhIGNhbmNlbCBhZnRlciBnZXR0aW5nIHJlYWRl
ciknLCAoKSA9PiB7Ci0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwotICBj
b25zdCByZXN1bHQgPSBzdHJlYW1BbmREZWZhdWx0UmVhZGVyKHN0cmVhbSk7Ci0gIHJlc3VsdC5y
ZWFkZXIuY2FuY2VsKCk7Ci0gIHJldHVybiByZXN1bHQ7Ci19KTsKLQotdGVtcGxhdGVkUlNFcnJv
cmVkKCdSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCknLCAoKSA9PiB7
Ci0gIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMu
ZXJyb3IodGhlRXJyb3IpOwotICAgIH0KLSAgfSk7Ci19LCB0aGVFcnJvcik7Ci0KLXRlbXBsYXRl
ZFJTRXJyb3JlZFN5bmNPbmx5KCdSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBz
dGFydCknLCAoKSA9PiB7Ci0gIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0
KGMpIHsKLSAgICAgIGMuZXJyb3IodGhlRXJyb3IpOwotICAgIH0KLSAgfSk7Ci19LCB0aGVFcnJv
cik7Ci0KLXRlbXBsYXRlZFJTRXJyb3JlZCgnUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJl
dHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpJywgKCkgPT4gewotICByZXR1cm4g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydCgpIHsKLSAgICAgIHJldHVybiBQcm9taXNl
LnJlamVjdCh0aGVFcnJvcik7Ci0gICAgfQotICB9KTsKLX0sIHRoZUVycm9yKTsKLQotdGVtcGxh
dGVkUlNFcnJvcmVkUmVhZGVyKCdSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5n
IGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgcmVhZGVyJywgKCkgPT4gewotICByZXR1cm4g
c3RyZWFtQW5kRGVmYXVsdFJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KCkg
ewotICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHRoZUVycm9yKTsKLSAgICB9Ci0gIH0pKTsK
LX0sIHRoZUVycm9yKTsKLQotdGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyKCdSZWFkYWJsZVN0cmVh
bSByZWFkZXIgKGVycm9yZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKScsICgpID0+IHsKLSAgbGV0
IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAg
c3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9KTsKLSAgY29udHJv
bGxlci5lcnJvcih0aGVFcnJvcik7Ci0gIHJldHVybiBzdHJlYW1BbmREZWZhdWx0UmVhZGVyKHN0
cmVhbSk7Ci19LCB0aGVFcnJvcik7Ci0KLXRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlcignUmVhZGFi
bGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGFmdGVyIGdldHRpbmcgcmVhZGVyKScsICgpID0+IHsK
LSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJlc3VsdCA9IHN0cmVhbUFuZERlZmF1bHRSZWFk
ZXIobmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVy
ID0gYzsKLSAgICB9Ci0gIH0pKTsKLSAgY29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7Ci0gIHJl
dHVybiByZXN1bHQ7Ci19LCB0aGVFcnJvcik7Ci0KLXRlbXBsYXRlZFJTVHdvQ2h1bmtzT3BlblJl
YWRlcignUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHN0aWxsIG9wZW4pIHJl
YWRlcicsICgpID0+IHsKLSAgcmV0dXJuIHN0cmVhbUFuZERlZmF1bHRSZWFkZXIobmV3IFJlYWRh
YmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVucXVldWUoY2h1bmtzWzBdKTsK
LSAgICAgIGMuZW5xdWV1ZShjaHVua3NbMV0pOwotICAgIH0KLSAgfSkpOwotfSwgY2h1bmtzKTsK
LQotdGVtcGxhdGVkUlNUd29DaHVua3NDbG9zZWRSZWFkZXIoJ1JlYWRhYmxlU3RyZWFtICh0d28g
Y2h1bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkgcmVhZGVyJywgKCkgPT4gewotICBsZXQgZG9D
bG9zZTsKLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChj
KSB7Ci0gICAgICBjLmVucXVldWUoY2h1bmtzWzBdKTsKLSAgICAgIGMuZW5xdWV1ZShjaHVua3Nb
MV0pOwotICAgICAgZG9DbG9zZSA9IGMuY2xvc2UuYmluZChjKTsKLSAgICB9Ci0gIH0pOwotICBj
b25zdCByZXN1bHQgPSBzdHJlYW1BbmREZWZhdWx0UmVhZGVyKHN0cmVhbSk7Ci0gIGRvQ2xvc2Uo
KTsKLSAgcmV0dXJuIHJlc3VsdDsKLX0sIGNodW5rcyk7Ci0KLWZ1bmN0aW9uIHN0cmVhbUFuZERl
ZmF1bHRSZWFkZXIoc3RyZWFtKSB7Ci0gIHJldHVybiB7IHN0cmVhbSwgcmVhZGVyOiBzdHJlYW0u
Z2V0UmVhZGVyKCkgfTsKLX0KLQotZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZXNvdXJjZXMvcnMtdGVz
dC10ZW1wbGF0ZXMuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMtYXBpL3Jlc291cmNlcy9ycy10ZXN0LXRlbXBsYXRlcy5qcwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggODUyYjU2NWQ5MDQyZTcxNzgwZDE2NGNhMjE2YTg3NGZjMDk5
YmM4ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3Jlc291
cmNlcy9ycy10ZXN0LXRlbXBsYXRlcy5qcworKysgL2Rldi9udWxsCkBAIC0xLDYyNCArMCwwIEBA
Ci0ndXNlIHN0cmljdCc7Ci0KLS8vIFRoZXNlIHRlc3RzIGNhbiBiZSBydW4gYWdhaW5zdCBhbnkg
cmVhZGFibGUgc3RyZWFtIHByb2R1Y2VkIGJ5IHRoZSB3ZWIgcGxhdGZvcm0gdGhhdCBtZWV0cyB0
aGUgZ2l2ZW4gZGVzY3JpcHRpb25zLgotLy8gRm9yIHJlYWRhYmxlIHN0cmVhbSB0ZXN0cywgdGhl
IGZhY3Rvcnkgc2hvdWxkIHJldHVybiB0aGUgc3RyZWFtLiBGb3IgcmVhZGVyIHRlc3RzLCB0aGUg
ZmFjdG9yeSBzaG91bGQgcmV0dXJuIGEKLS8vIHsgc3RyZWFtLCByZWFkZXIgfSBvYmplY3QuIChZ
b3UgY2FuIHVzZSB0aGlzIHRvIHZhcnkgdGhlIHRpbWUgYXQgd2hpY2ggeW91IGFjcXVpcmUgYSBy
ZWFkZXIuKQotCi1zZWxmLnRlbXBsYXRlZFJTRW1wdHkgPSAobGFiZWwsIGZhY3RvcnkpID0+IHsK
LSAgdGVzdCgoKSA9PiB7fSwgJ1J1bm5pbmcgdGVtcGxhdGVkUlNFbXB0eSB3aXRoICcgKyBsYWJl
bCk7Ci0KLSAgdGVzdCgoKSA9PiB7Ci0KLSAgICBjb25zdCBycyA9IGZhY3RvcnkoKTsKLQotICAg
IGFzc2VydF9lcXVhbHModHlwZW9mIHJzLmxvY2tlZCwgJ2Jvb2xlYW4nLCAnaGFzIGEgYm9vbGVh
biBsb2NrZWQgZ2V0dGVyJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnMuY2FuY2VsLCAn
ZnVuY3Rpb24nLCAnaGFzIGEgY2FuY2VsIG1ldGhvZCcpOwotICAgIGFzc2VydF9lcXVhbHModHlw
ZW9mIHJzLmdldFJlYWRlciwgJ2Z1bmN0aW9uJywgJ2hhcyBhIGdldFJlYWRlciBtZXRob2QnKTsK
LSAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBycy5waXBlVGhyb3VnaCwgJ2Z1bmN0aW9uJywgJ2hh
cyBhIHBpcGVUaHJvdWdoIG1ldGhvZCcpOwotICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJzLnBp
cGVUbywgJ2Z1bmN0aW9uJywgJ2hhcyBhIHBpcGVUbyBtZXRob2QnKTsKLSAgICBhc3NlcnRfZXF1
YWxzKHR5cGVvZiBycy50ZWUsICdmdW5jdGlvbicsICdoYXMgYSB0ZWUgbWV0aG9kJyk7Ci0KLSAg
fSwgJ2luc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMnKTsK
LX07Ci0KLXNlbGYudGVtcGxhdGVkUlNDbG9zZWQgPSAobGFiZWwsIGZhY3RvcnkpID0+IHsKLSAg
dGVzdCgoKSA9PiB7fSwgJ1J1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWQgd2l0aCAnICsgbGFiZWwp
OwotCi0gIHByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgICBjb25zdCBycyA9IGZhY3RvcnkoKTsK
LSAgICBjb25zdCBjYW5jZWxQcm9taXNlMSA9IHJzLmNhbmNlbCgpOwotICAgIGNvbnN0IGNhbmNl
bFByb21pc2UyID0gcnMuY2FuY2VsKCk7Ci0KLSAgICBhc3NlcnRfbm90X2VxdWFscyhjYW5jZWxQ
cm9taXNlMSwgY2FuY2VsUHJvbWlzZTIsICdjYW5jZWwoKSBjYWxscyBzaG91bGQgcmV0dXJuIGRp
c3RpbmN0IHByb21pc2VzJyk7Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgY2Fu
Y2VsUHJvbWlzZTEudGhlbih2ID0+IGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAnZmlyc3Qg
Y2FuY2VsKCkgY2FsbCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpKSwKLSAgICAgIGNh
bmNlbFByb21pc2UyLnRoZW4odiA9PiBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ3NlY29u
ZCBjYW5jZWwoKSBjYWxsIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJykpCi0gICAgXSk7
Ci0KLSAgfSwgJ2NhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJv
bWlzZSBlYWNoIHRpbWUnKTsKLQotICB0ZXN0KCgpID0+IHsKLQotICAgIGNvbnN0IHJzID0gZmFj
dG9yeSgpOwotICAgIGFzc2VydF9mYWxzZShycy5sb2NrZWQsICdsb2NrZWQgZ2V0dGVyIHNob3Vs
ZCByZXR1cm4gZmFsc2UnKTsKLQotICB9LCAnbG9ja2VkIHNob3VsZCBiZSBmYWxzZScpOwotCi0g
IHRlc3QoKCkgPT4gewotCi0gICAgY29uc3QgcnMgPSBmYWN0b3J5KCk7Ci0gICAgcnMuZ2V0UmVh
ZGVyKCk7IC8vIGdldFJlYWRlcigpIHNob3VsZCBub3QgdGhyb3cuCi0KLSAgfSwgJ2dldFJlYWRl
cigpIHNob3VsZCBiZSBPSycpOwotCi0gIHRlc3QoKCkgPT4gewotCi0gICAgY29uc3QgcnMgPSBm
YWN0b3J5KCk7Ci0KLSAgICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLSAgICByZWFk
ZXIucmVsZWFzZUxvY2soKTsKLQotICAgIGNvbnN0IHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsg
Ly8gR2V0dGluZyBhIHNlY29uZCByZWFkZXIgc2hvdWxkIG5vdCB0aHJvdy4KLSAgICByZWFkZXIy
LnJlbGVhc2VMb2NrKCk7Ci0KLSAgICBycy5nZXRSZWFkZXIoKTsgLy8gR2V0dGluZyBhIHRoaXJk
IHJlYWRlciBzaG91bGQgbm90IHRocm93LgotCi0gIH0sICdzaG91bGQgYmUgYWJsZSB0byBhY3F1
aXJlIG11bHRpcGxlIHJlYWRlcnMgaWYgdGhleSBhcmUgcmVsZWFzZWQgaW4gc3VjY2Vzc2lvbicp
OwotCi0gIHRlc3QoKCkgPT4gewotCi0gICAgY29uc3QgcnMgPSBmYWN0b3J5KCk7Ci0KLSAgICBy
cy5nZXRSZWFkZXIoKTsKLQotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9
PiBycy5nZXRSZWFkZXIoKSwgJ2dldHRpbmcgYSBzZWNvbmQgcmVhZGVyIHNob3VsZCB0aHJvdycp
OwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBycy5nZXRSZWFkZXIo
KSwgJ2dldHRpbmcgYSB0aGlyZCByZWFkZXIgc2hvdWxkIHRocm93Jyk7Ci0KLSAgfSwgJ3Nob3Vs
ZCBub3QgYmUgYWJsZSB0byBhY3F1aXJlIGEgc2Vjb25kIHJlYWRlciBpZiB3ZSBkb25cJ3QgcmVs
ZWFzZSB0aGUgZmlyc3Qgb25lJyk7Ci19OwotCi1zZWxmLnRlbXBsYXRlZFJTRXJyb3JlZCA9IChs
YWJlbCwgZmFjdG9yeSwgZXJyb3IpID0+IHsKLSAgdGVzdCgoKSA9PiB7fSwgJ1J1bm5pbmcgdGVt
cGxhdGVkUlNFcnJvcmVkIHdpdGggJyArIGxhYmVsKTsKLQotICBwcm9taXNlX3Rlc3QodCA9PiB7
Ci0KLSAgICBjb25zdCBycyA9IGZhY3RvcnkoKTsKLSAgICBjb25zdCByZWFkZXIgPSBycy5nZXRS
ZWFkZXIoKTsKLQotICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICBwcm9taXNlX3JlamVj
dHModCwgZXJyb3IsIHJlYWRlci5jbG9zZWQpLAotICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIGVy
cm9yLCByZWFkZXIucmVhZCgpKQotICAgIF0pOwotCi0gIH0sICdnZXRSZWFkZXIoKSBzaG91bGQg
cmV0dXJuIGEgcmVhZGVyIHRoYXQgYWN0cyBlcnJvcmVkJyk7Ci0KLSAgcHJvbWlzZV90ZXN0KHQg
PT4gewotCi0gICAgY29uc3QgcnMgPSBmYWN0b3J5KCk7Ci0gICAgY29uc3QgcmVhZGVyID0gcnMu
Z2V0UmVhZGVyKCk7Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgcHJvbWlzZV9y
ZWplY3RzKHQsIGVycm9yLCByZWFkZXIucmVhZCgpKSwKLSAgICAgIHByb21pc2VfcmVqZWN0cyh0
LCBlcnJvciwgcmVhZGVyLnJlYWQoKSksCi0gICAgICBwcm9taXNlX3JlamVjdHModCwgZXJyb3Is
IHJlYWRlci5jbG9zZWQpCi0gICAgXSk7Ci0KLSAgfSwgJ3JlYWQoKSB0d2ljZSBzaG91bGQgZ2l2
ZSB0aGUgZXJyb3IgZWFjaCB0aW1lJyk7Ci0KLSAgdGVzdCgoKSA9PiB7Ci0gICAgY29uc3QgcnMg
PSBmYWN0b3J5KCk7Ci0KLSAgICBhc3NlcnRfZmFsc2UocnMubG9ja2VkLCAnbG9ja2VkIGdldHRl
ciBzaG91bGQgcmV0dXJuIGZhbHNlJyk7Ci0gIH0sICdsb2NrZWQgc2hvdWxkIGJlIGZhbHNlJyk7
Ci19OwotCi1zZWxmLnRlbXBsYXRlZFJTRXJyb3JlZFN5bmNPbmx5ID0gKGxhYmVsLCBmYWN0b3J5
LCBlcnJvcikgPT4gewotICB0ZXN0KCgpID0+IHt9LCAnUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9y
ZWRTeW5jT25seSB3aXRoICcgKyBsYWJlbCk7Ci0KLSAgcHJvbWlzZV90ZXN0KHQgPT4gewotCi0g
ICAgY29uc3QgcnMgPSBmYWN0b3J5KCk7Ci0gICAgcnMuZ2V0UmVhZGVyKCkucmVsZWFzZUxvY2so
KTsKLSAgICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsgLy8gQ2FsbGluZyBnZXRSZWFk
ZXIoKSB0d2ljZSBkb2VzIG5vdCB0aHJvdyAodGhlIHN0cmVhbSBpcyBub3QgbG9ja2VkKS4KLQot
ICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3IsIHJlYWRlci5jbG9zZWQpOwotCi0g
IH0sICdzaG91bGQgYmUgYWJsZSB0byBvYnRhaW4gYSBzZWNvbmQgcmVhZGVyLCB3aXRoIHRoZSBj
b3JyZWN0IGNsb3NlZCBwcm9taXNlJyk7Ci0KLSAgdGVzdCgoKSA9PiB7Ci0KLSAgICBjb25zdCBy
cyA9IGZhY3RvcnkoKTsKLSAgICBycy5nZXRSZWFkZXIoKTsKLQotICAgIGFzc2VydF90aHJvd3Mo
bmV3IFR5cGVFcnJvcigpLCAoKSA9PiBycy5nZXRSZWFkZXIoKSwgJ2dldHRpbmcgYSBzZWNvbmQg
cmVhZGVyIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwotICAgIGFzc2VydF90aHJvd3MobmV3
IFR5cGVFcnJvcigpLCAoKSA9PiBycy5nZXRSZWFkZXIoKSwgJ2dldHRpbmcgYSB0aGlyZCByZWFk
ZXIgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7Ci0KLSAgfSwgJ3Nob3VsZCBub3QgYmUgYWJs
ZSB0byBvYnRhaW4gYWRkaXRpb25hbCByZWFkZXJzIGlmIHdlIGRvblwndCByZWxlYXNlIHRoZSBm
aXJzdCBsb2NrJyk7Ci0KLSAgcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gICAgY29uc3QgcnMgPSBm
YWN0b3J5KCk7Ci0gICAgY29uc3QgY2FuY2VsUHJvbWlzZTEgPSBycy5jYW5jZWwoKTsKLSAgICBj
b25zdCBjYW5jZWxQcm9taXNlMiA9IHJzLmNhbmNlbCgpOwotCi0gICAgYXNzZXJ0X25vdF9lcXVh
bHMoY2FuY2VsUHJvbWlzZTEsIGNhbmNlbFByb21pc2UyLCAnY2FuY2VsKCkgY2FsbHMgc2hvdWxk
IHJldHVybiBkaXN0aW5jdCBwcm9taXNlcycpOwotCi0gICAgcmV0dXJuIFByb21pc2UuYWxsKFsK
LSAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvciwgY2FuY2VsUHJvbWlzZTEpLAotICAgICAg
cHJvbWlzZV9yZWplY3RzKHQsIGVycm9yLCBjYW5jZWxQcm9taXNlMikKLSAgICBdKTsKLQotICB9
LCAnY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IHJlamVjdGVkIHByb21pc2UgZWFj
aCB0aW1lJyk7Ci0KLSAgcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gICAgY29uc3QgcnMgPSBmYWN0
b3J5KCk7Ci0gICAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0gICAgY29uc3QgY2Fu
Y2VsUHJvbWlzZTEgPSByZWFkZXIuY2FuY2VsKCk7Ci0gICAgY29uc3QgY2FuY2VsUHJvbWlzZTIg
PSByZWFkZXIuY2FuY2VsKCk7Ci0KLSAgICBhc3NlcnRfbm90X2VxdWFscyhjYW5jZWxQcm9taXNl
MSwgY2FuY2VsUHJvbWlzZTIsICdjYW5jZWwoKSBjYWxscyBzaG91bGQgcmV0dXJuIGRpc3RpbmN0
IHByb21pc2VzJyk7Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgcHJvbWlzZV9y
ZWplY3RzKHQsIGVycm9yLCBjYW5jZWxQcm9taXNlMSksCi0gICAgICBwcm9taXNlX3JlamVjdHMo
dCwgZXJyb3IsIGNhbmNlbFByb21pc2UyKQotICAgIF0pOwotCi0gIH0sICdyZWFkZXIgY2FuY2Vs
KCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IHJlamVjdGVkIHByb21pc2UgZWFjaCB0aW1lJyk7
Ci19OwotCi1zZWxmLnRlbXBsYXRlZFJTRW1wdHlSZWFkZXIgPSAobGFiZWwsIGZhY3RvcnkpID0+
IHsKLSAgdGVzdCgoKSA9PiB7fSwgJ1J1bm5pbmcgdGVtcGxhdGVkUlNFbXB0eVJlYWRlciB3aXRo
ICcgKyBsYWJlbCk7Ci0KLSAgdGVzdCgoKSA9PiB7Ci0KLSAgICBjb25zdCByZWFkZXIgPSBmYWN0
b3J5KCkucmVhZGVyOwotCi0gICAgYXNzZXJ0X3RydWUoJ2Nsb3NlZCcgaW4gcmVhZGVyLCAnaGFz
IGEgY2xvc2VkIHByb3BlcnR5Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcmVhZGVyLmNs
b3NlZC50aGVuLCAnZnVuY3Rpb24nLCAnY2xvc2VkIHByb3BlcnR5IGlzIHRoZW5hYmxlJyk7Ci0K
LSAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiByZWFkZXIuY2FuY2VsLCAnZnVuY3Rpb24nLCAnaGFz
IGEgY2FuY2VsIG1ldGhvZCcpOwotICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJlYWRlci5yZWFk
LCAnZnVuY3Rpb24nLCAnaGFzIGEgcmVhZCBtZXRob2QnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHR5
cGVvZiByZWFkZXIucmVsZWFzZUxvY2ssICdmdW5jdGlvbicsICdoYXMgYSByZWxlYXNlTG9jayBt
ZXRob2QnKTsKLQotICB9LCAnaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBhbmQg
cHJvcGVydGllcycpOwotCi0gIHRlc3QoKCkgPT4gewotCi0gICAgY29uc3Qgc3RyZWFtID0gZmFj
dG9yeSgpLnN0cmVhbTsKLQotICAgIGFzc2VydF90cnVlKHN0cmVhbS5sb2NrZWQsICdsb2NrZWQg
Z2V0dGVyIHNob3VsZCByZXR1cm4gdHJ1ZScpOwotCi0gIH0sICdsb2NrZWQgc2hvdWxkIGJlIHRy
dWUnKTsKLQotICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgICBjb25zdCByZWFkZXIgPSBmYWN0
b3J5KCkucmVhZGVyOwotCi0gICAgcmVhZGVyLnJlYWQoKS50aGVuKAotICAgICAgdC51bnJlYWNo
ZWRfZnVuYygncmVhZCgpIHNob3VsZCBub3QgZnVsZmlsbCcpLAotICAgICAgdC51bnJlYWNoZWRf
ZnVuYygncmVhZCgpIHNob3VsZCBub3QgcmVqZWN0JykKLSAgICApOwotCi0gICAgcmV0dXJuIGRl
bGF5KDUwMCk7Ci0KLSAgfSwgJ3JlYWQoKSBzaG91bGQgbmV2ZXIgc2V0dGxlJyk7Ci0KLSAgcHJv
bWlzZV90ZXN0KHQgPT4gewotCi0gICAgY29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsK
LQotICAgIHJlYWRlci5yZWFkKCkudGhlbigKLSAgICAgIHQudW5yZWFjaGVkX2Z1bmMoJ3JlYWQo
KSBzaG91bGQgbm90IGZ1bGZpbGwnKSwKLSAgICAgIHQudW5yZWFjaGVkX2Z1bmMoJ3JlYWQoKSBz
aG91bGQgbm90IHJlamVjdCcpCi0gICAgKTsKLQotICAgIHJlYWRlci5yZWFkKCkudGhlbigKLSAg
ICAgIHQudW5yZWFjaGVkX2Z1bmMoJ3JlYWQoKSBzaG91bGQgbm90IGZ1bGZpbGwnKSwKLSAgICAg
IHQudW5yZWFjaGVkX2Z1bmMoJ3JlYWQoKSBzaG91bGQgbm90IHJlamVjdCcpCi0gICAgKTsKLQot
ICAgIHJldHVybiBkZWxheSg1MDApOwotCi0gIH0sICd0d28gcmVhZCgpcyBzaG91bGQgYm90aCBu
ZXZlciBzZXR0bGUnKTsKLQotICB0ZXN0KCgpID0+IHsKLQotICAgIGNvbnN0IHJlYWRlciA9IGZh
Y3RvcnkoKS5yZWFkZXI7Ci0gICAgYXNzZXJ0X25vdF9lcXVhbHMocmVhZGVyLnJlYWQoKSwgcmVh
ZGVyLnJlYWQoKSwgJ3RoZSBwcm9taXNlcyByZXR1cm5lZCBzaG91bGQgYmUgZGlzdGluY3QnKTsK
LQotICB9LCAncmVhZCgpIHNob3VsZCByZXR1cm4gZGlzdGluY3QgcHJvbWlzZXMgZWFjaCB0aW1l
Jyk7Ci0KLSAgdGVzdCgoKSA9PiB7Ci0KLSAgICBjb25zdCBzdHJlYW0gPSBmYWN0b3J5KCkuc3Ry
ZWFtOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBzdHJlYW0uZ2V0
UmVhZGVyKCksICdzdHJlYW0uZ2V0UmVhZGVyKCkgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7
Ci0KLSAgfSwgJ2dldFJlYWRlcigpIGFnYWluIG9uIHRoZSBzdHJlYW0gc2hvdWxkIGZhaWwnKTsK
LQotICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgICBjb25zdCBzdHJlYW1BbmRSZWFkZXIgPSBm
YWN0b3J5KCk7Ci0gICAgY29uc3Qgc3RyZWFtID0gc3RyZWFtQW5kUmVhZGVyLnN0cmVhbTsKLSAg
ICBjb25zdCByZWFkZXIgPSBzdHJlYW1BbmRSZWFkZXIucmVhZGVyOwotCi0gICAgcmVhZGVyLnJl
YWQoKS50aGVuKAotICAgICAgdC51bnJlYWNoZWRfZnVuYygnZmlyc3QgcmVhZCgpIHNob3VsZCBu
b3QgZnVsZmlsbCcpLAotICAgICAgdC51bnJlYWNoZWRfZnVuYygnZmlyc3QgcmVhZCgpIHNob3Vs
ZCBub3QgcmVqZWN0JykKLSAgICApOwotCi0gICAgcmVhZGVyLnJlYWQoKS50aGVuKAotICAgICAg
dC51bnJlYWNoZWRfZnVuYygnc2Vjb25kIHJlYWQoKSBzaG91bGQgbm90IGZ1bGZpbGwnKSwKLSAg
ICAgIHQudW5yZWFjaGVkX2Z1bmMoJ3NlY29uZCByZWFkKCkgc2hvdWxkIG5vdCByZWplY3QnKQot
ICAgICk7Ci0KLSAgICByZWFkZXIuY2xvc2VkLnRoZW4oCi0gICAgICB0LnVucmVhY2hlZF9mdW5j
KCdjbG9zZWQgc2hvdWxkIG5vdCBmdWxmaWxsJyksCi0gICAgICB0LnVucmVhY2hlZF9mdW5jKCdj
bG9zZWQgc2hvdWxkIG5vdCByZWplY3QnKQotICAgICk7Ci0KLSAgICBhc3NlcnRfdGhyb3dzKG5l
dyBUeXBlRXJyb3IoKSwgKCkgPT4gcmVhZGVyLnJlbGVhc2VMb2NrKCksICdyZWxlYXNlTG9jayBz
aG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKLQotICAgIGFzc2VydF90cnVlKHN0cmVhbS5sb2Nr
ZWQsICd0aGUgc3RyZWFtIHNob3VsZCBzdGlsbCBiZSBsb2NrZWQnKTsKLQotICAgIHJldHVybiBk
ZWxheSg1MDApOwotCi0gIH0sICdyZWxlYXNpbmcgdGhlIGxvY2sgd2l0aCBwZW5kaW5nIHJlYWQg
cmVxdWVzdHMgc2hvdWxkIHRocm93IGJ1dCB0aGUgcmVhZCByZXF1ZXN0cyBzaG91bGQgc3RheSBw
ZW5kaW5nJyk7Ci0KLSAgcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gICAgY29uc3QgcmVhZGVyID0g
ZmFjdG9yeSgpLnJlYWRlcjsKLSAgICByZWFkZXIucmVsZWFzZUxvY2soKTsKLQotICAgIHJldHVy
biBQcm9taXNlLmFsbChbCi0gICAgICBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigp
LCByZWFkZXIucmVhZCgpKSwKLSAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9y
KCksIHJlYWRlci5yZWFkKCkpCi0gICAgXSk7Ci0KLSAgfSwgJ3JlbGVhc2luZyB0aGUgbG9jayBz
aG91bGQgY2F1c2UgZnVydGhlciByZWFkKCkgY2FsbHMgdG8gcmVqZWN0IHdpdGggYSBUeXBlRXJy
b3InKTsKLQotICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgICBjb25zdCByZWFkZXIgPSBmYWN0
b3J5KCkucmVhZGVyOwotCi0gICAgY29uc3QgY2xvc2VkQmVmb3JlID0gcmVhZGVyLmNsb3NlZDsK
LSAgICByZWFkZXIucmVsZWFzZUxvY2soKTsKLSAgICBjb25zdCBjbG9zZWRBZnRlciA9IHJlYWRl
ci5jbG9zZWQ7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGNsb3NlZEJlZm9yZSwgY2xvc2VkQWZ0ZXIs
ICd0aGUgY2xvc2VkIHByb21pc2Ugc2hvdWxkIG5vdCBjaGFuZ2UgaWRlbnRpdHknKTsKLQotICAg
IHJldHVybiBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLCBjbG9zZWRCZWZvcmUp
OwotCi0gIH0sICdyZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCBjYWxscyB0
byByZWplY3Qgd2l0aCBhIFR5cGVFcnJvcicpOwotCi0gIHRlc3QoKCkgPT4gewotCi0gICAgY29u
c3Qgc3RyZWFtQW5kUmVhZGVyID0gZmFjdG9yeSgpOwotICAgIGNvbnN0IHN0cmVhbSA9IHN0cmVh
bUFuZFJlYWRlci5zdHJlYW07Ci0gICAgY29uc3QgcmVhZGVyID0gc3RyZWFtQW5kUmVhZGVyLnJl
YWRlcjsKLQotICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOwotICAgIGFzc2VydF9mYWxzZShzdHJl
YW0ubG9ja2VkLCAnbG9ja2VkIGdldHRlciBzaG91bGQgcmV0dXJuIGZhbHNlJyk7Ci0KLSAgfSwg
J3JlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgbG9ja2VkIHRvIGJlY29tZSBmYWxzZScp
OwotCi0gIHByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5
KCkucmVhZGVyOwotICAgIHJlYWRlci5jYW5jZWwoKTsKLQotICAgIHJldHVybiByZWFkZXIucmVh
ZCgpLnRoZW4ociA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiB1
bmRlZmluZWQsIGRvbmU6IHRydWUgfSwgJ3JlYWQoKWluZyBmcm9tIHRoZSByZWFkZXIgc2hvdWxk
IGdpdmUgYSBkb25lIHJlc3VsdCcpOwotICAgIH0pOwotCi0gIH0sICdjYW5jZWxpbmcgdmlhIHRo
ZSByZWFkZXIgc2hvdWxkIGNhdXNlIHRoZSByZWFkZXIgdG8gYWN0IGNsb3NlZCcpOwotCi0gIHBy
b21pc2VfdGVzdCh0ID0+IHsKLQotICAgIGNvbnN0IHN0cmVhbSA9IGZhY3RvcnkoKS5zdHJlYW07
Ci0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIHN0cmVhbS5j
YW5jZWwoKSk7Ci0KLSAgfSwgJ2NhbmNlbGluZyB2aWEgdGhlIHN0cmVhbSBzaG91bGQgZmFpbCcp
OwotfTsKLQotc2VsZi50ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlciA9IChsYWJlbCwgZmFjdG9yeSkg
PT4gewotICB0ZXN0KCgpID0+IHt9LCAnUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlciB3
aXRoICcgKyBsYWJlbCk7Ci0KLSAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICAgIGNvbnN0IHJl
YWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7Ci0KLSAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVu
KHYgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHModiwgeyB2YWx1ZTogdW5kZWZpbmVk
LCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgY29ycmVjdGx5Jyk7Ci0gICAg
fSk7Ci0KLSAgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5l
ZCwgZG9uZTogdHJ1ZSB9Jyk7Ci0KLSAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICAgIGNvbnN0
IHJlYWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwot
ICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKHYgPT4gewotICAgICAgICBhc3NlcnRfb2JqZWN0X2Vx
dWFscyh2LCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwgJ3JlYWQoKSBzaG91bGQg
ZnVsZmlsbCBjb3JyZWN0bHknKTsKLSAgICAgIH0pLAotICAgICAgcmVhZGVyLnJlYWQoKS50aGVu
KHYgPT4gewotICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyh2LCB7IHZhbHVlOiB1bmRlZmlu
ZWQsIGRvbmU6IHRydWUgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCBjb3JyZWN0bHknKTsKLSAg
ICAgIH0pCi0gICAgXSk7Ci0KLSAgfSwgJ3JlYWQoKSBtdWx0aXBsZSB0aW1lcyBzaG91bGQgZnVs
ZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9Jyk7Ci0KLSAgcHJvbWlz
ZV90ZXN0KCgpID0+IHsKLQotICAgIGNvbnN0IHJlYWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7Ci0K
LSAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKCgpID0+IHJlYWRlci5yZWFkKCkpLnRoZW4o
diA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyh2LCB7IHZhbHVlOiB1bmRlZmluZWQs
IGRvbmU6IHRydWUgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCBjb3JyZWN0bHknKTsKLSAgICB9
KTsKLQotICB9LCAncmVhZCgpIHNob3VsZCB3b3JrIHdoZW4gdXNlZCB3aXRoaW4gYW5vdGhlciBy
ZWFkKCkgZnVsZmlsbCBjYWxsYmFjaycpOwotCi0gIHByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAg
ICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOwotCi0gICAgcmV0dXJuIHJlYWRlci5j
bG9zZWQudGhlbih2ID0+IGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAncmVhZGVyIGNsb3Nl
ZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpKTsKLQotICB9LCAnY2xvc2VkIHNob3Vs
ZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7Ci0KLSAgcHJvbWlzZV90ZXN0KHQgPT4gewotCi0g
ICAgY29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKLQotICAgIGNvbnN0IGNsb3NlZEJl
Zm9yZSA9IHJlYWRlci5jbG9zZWQ7Ci0gICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7Ci0gICAgY29u
c3QgY2xvc2VkQWZ0ZXIgPSByZWFkZXIuY2xvc2VkOwotCi0gICAgYXNzZXJ0X25vdF9lcXVhbHMo
Y2xvc2VkQmVmb3JlLCBjbG9zZWRBZnRlciwgJ3RoZSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgY2hh
bmdlIGlkZW50aXR5Jyk7Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgY2xvc2Vk
QmVmb3JlLnRoZW4odiA9PiBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ3JlYWRlci5jbG9z
ZWQgYWNxdWlyZWQgYmVmb3JlIHJlbGVhc2Ugc2hvdWxkIGZ1bGZpbGwnKSksCi0gICAgICBwcm9t
aXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLCBjbG9zZWRBZnRlcikKLSAgICBdKTsKLQot
ICB9LCAncmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFu
ZCBjaGFuZ2UgaWRlbnRpdHknKTsKLQotICBwcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gICAgY29u
c3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKLSAgICBjb25zdCBjYW5jZWxQcm9taXNlMSA9
IHJlYWRlci5jYW5jZWwoKTsKLSAgICBjb25zdCBjYW5jZWxQcm9taXNlMiA9IHJlYWRlci5jYW5j
ZWwoKTsKLSAgICBjb25zdCBjbG9zZWRSZWFkZXJQcm9taXNlID0gcmVhZGVyLmNsb3NlZDsKLQot
ICAgIGFzc2VydF9ub3RfZXF1YWxzKGNhbmNlbFByb21pc2UxLCBjYW5jZWxQcm9taXNlMiwgJ2Nh
bmNlbCgpIGNhbGxzIHNob3VsZCByZXR1cm4gZGlzdGluY3QgcHJvbWlzZXMnKTsKLSAgICBhc3Nl
cnRfbm90X2VxdWFscyhjYW5jZWxQcm9taXNlMSwgY2xvc2VkUmVhZGVyUHJvbWlzZSwgJ2NhbmNl
bCgpIHByb21pc2UgMSBzaG91bGQgYmUgZGlzdGluY3QgZnJvbSByZWFkZXIuY2xvc2VkJyk7Ci0g
ICAgYXNzZXJ0X25vdF9lcXVhbHMoY2FuY2VsUHJvbWlzZTIsIGNsb3NlZFJlYWRlclByb21pc2Us
ICdjYW5jZWwoKSBwcm9taXNlIDIgc2hvdWxkIGJlIGRpc3RpbmN0IGZyb20gcmVhZGVyLmNsb3Nl
ZCcpOwotCi0gICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgIGNhbmNlbFByb21pc2UxLnRo
ZW4odiA9PiBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ2ZpcnN0IGNhbmNlbCgpIHNob3Vs
ZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJykpLAotICAgICAgY2FuY2VsUHJvbWlzZTIudGhlbih2
ID0+IGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAnc2Vjb25kIGNhbmNlbCgpIHNob3VsZCBm
dWxmaWxsIHdpdGggdW5kZWZpbmVkJykpCi0gICAgXSk7Ci0KLSAgfSwgJ2NhbmNlbCgpIHNob3Vs
ZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUnKTsKLX07Ci0K
LXNlbGYudGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyID0gKGxhYmVsLCBmYWN0b3J5LCBlcnJvcikg
PT4gewotICB0ZXN0KCgpID0+IHt9LCAnUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIg
d2l0aCAnICsgbGFiZWwpOwotCi0gIHByb21pc2VfdGVzdCh0ID0+IHsKLQotICAgIGNvbnN0IHJl
YWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7Ci0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBl
cnJvciwgcmVhZGVyLmNsb3NlZCk7Ci0KLSAgfSwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGgg
dGhlIGVycm9yJyk7Ci0KLSAgcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gICAgY29uc3QgcmVhZGVy
ID0gZmFjdG9yeSgpLnJlYWRlcjsKLSAgICBjb25zdCBjbG9zZWRCZWZvcmUgPSByZWFkZXIuY2xv
c2VkOwotCi0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvciwgY2xvc2VkQmVmb3Jl
KS50aGVuKCgpID0+IHsKLSAgICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOwotCi0gICAgICBjb25z
dCBjbG9zZWRBZnRlciA9IHJlYWRlci5jbG9zZWQ7Ci0gICAgICBhc3NlcnRfbm90X2VxdWFscyhj
bG9zZWRCZWZvcmUsIGNsb3NlZEFmdGVyLCAndGhlIGNsb3NlZCBwcm9taXNlIHNob3VsZCBjaGFu
Z2UgaWRlbnRpdHknKTsKLQotICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlw
ZUVycm9yKCksIGNsb3NlZEFmdGVyKTsKLSAgICB9KTsKLQotICB9LCAncmVsZWFzaW5nIHRoZSBs
b2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHknKTsK
LQotICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCku
cmVhZGVyOwotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3IsIHJlYWRlci5yZWFk
KCkpOwotCi0gIH0sICdyZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOwotfTsK
LQotc2VsZi50ZW1wbGF0ZWRSU1R3b0NodW5rc09wZW5SZWFkZXIgPSAobGFiZWwsIGZhY3Rvcnks
IGNodW5rcykgPT4gewotICB0ZXN0KCgpID0+IHt9LCAnUnVubmluZyB0ZW1wbGF0ZWRSU1R3b0No
dW5rc09wZW5SZWFkZXIgd2l0aCAnICsgbGFiZWwpOwotCi0gIHByb21pc2VfdGVzdCgoKSA9PiB7
Ci0KLSAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOwotCi0gICAgcmV0dXJuIFBy
b21pc2UuYWxsKFsKLSAgICAgIHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKLSAgICAgICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogY2h1bmtzWzBdLCBkb25lOiBmYWxzZSB9LCAn
Zmlyc3QgcmVzdWx0IHNob3VsZCBiZSBjb3JyZWN0Jyk7Ci0gICAgICB9KSwKLSAgICAgIHJlYWRl
ci5yZWFkKCkudGhlbihyID0+IHsKLSAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2
YWx1ZTogY2h1bmtzWzFdLCBkb25lOiBmYWxzZSB9LCAnc2Vjb25kIHJlc3VsdCBzaG91bGQgYmUg
Y29ycmVjdCcpOwotICAgICAgfSkKLSAgICBdKTsKLQotICB9LCAnY2FsbGluZyByZWFkKCkgdHdp
Y2Ugd2l0aG91dCB3YWl0aW5nIHdpbGwgZXZlbnR1YWxseSBnaXZlIGJvdGggY2h1bmtzIChzZXF1
ZW50aWFsKScpOwotCi0gIHByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgICBjb25zdCByZWFkZXIg
PSBmYWN0b3J5KCkucmVhZGVyOwotCi0gICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihyID0+
IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IGNodW5rc1swXSwgZG9u
ZTogZmFsc2UgfSwgJ2ZpcnN0IHJlc3VsdCBzaG91bGQgYmUgY29ycmVjdCcpOwotCi0gICAgICBy
ZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHIyID0+IHsKLSAgICAgICAgYXNzZXJ0X29iamVjdF9l
cXVhbHMocjIsIHsgdmFsdWU6IGNodW5rc1sxXSwgZG9uZTogZmFsc2UgfSwgJ3NlY29uZCByZXN1
bHQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLSAgICAgIH0pOwotICAgIH0pOwotCi0gIH0sICdjYWxs
aW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90
aCBjaHVua3MgKG5lc3RlZCknKTsKLQotICB0ZXN0KCgpID0+IHsKLQotICAgIGNvbnN0IHJlYWRl
ciA9IGZhY3RvcnkoKS5yZWFkZXI7Ci0gICAgYXNzZXJ0X25vdF9lcXVhbHMocmVhZGVyLnJlYWQo
KSwgcmVhZGVyLnJlYWQoKSwgJ3RoZSBwcm9taXNlcyByZXR1cm5lZCBzaG91bGQgYmUgZGlzdGlu
Y3QnKTsKLQotICB9LCAncmVhZCgpIHNob3VsZCByZXR1cm4gZGlzdGluY3QgcHJvbWlzZXMgZWFj
aCB0aW1lJyk7Ci0KLSAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICAgIGNvbnN0IHJlYWRlciA9
IGZhY3RvcnkoKS5yZWFkZXI7Ci0KLSAgICBjb25zdCBwcm9taXNlMSA9IHJlYWRlci5jbG9zZWQu
dGhlbih2ID0+IHsKLSAgICAgIGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAncmVhZGVyIGNs
b3NlZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpOwotICAgIH0pOwotCi0gICAgY29u
c3QgcHJvbWlzZTIgPSByZWFkZXIucmVhZCgpLnRoZW4ociA9PiB7Ci0gICAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyLCB7IHZhbHVlOiBjaHVua3NbMF0sIGRvbmU6IGZhbHNlIH0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAncHJvbWlzZSByZXR1cm5lZCBiZWZvcmUgY2FuY2VsbGF0aW9u
IHNob3VsZCBmdWxmaWxsIHdpdGggYSBjaHVuaycpOwotICAgIH0pOwotCi0gICAgcmVhZGVyLmNh
bmNlbCgpOwotCi0gICAgY29uc3QgcHJvbWlzZTMgPSByZWFkZXIucmVhZCgpLnRoZW4ociA9PiB7
Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6
IHRydWUgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9taXNlIHJldHVybmVkIGFm
dGVyIGNhbmNlbGxhdGlvbiBzaG91bGQgZnVsZmlsbCB3aXRoIGFuIGVuZC1vZi1zdHJlYW0gc2ln
bmFsJyk7Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5hbGwoW3Byb21pc2UxLCBwcm9t
aXNlMiwgcHJvbWlzZTNdKTsKLQotICB9LCAnY2FuY2VsKCkgYWZ0ZXIgYSByZWFkKCkgc2hvdWxk
IHN0aWxsIGdpdmUgdGhhdCBzaW5nbGUgcmVhZCByZXN1bHQnKTsKLX07Ci0KLXNlbGYudGVtcGxh
dGVkUlNUd29DaHVua3NDbG9zZWRSZWFkZXIgPSBmdW5jdGlvbiAobGFiZWwsIGZhY3RvcnksIGNo
dW5rcykgewotICB0ZXN0KCgpID0+IHt9LCAnUnVubmluZyB0ZW1wbGF0ZWRSU1R3b0NodW5rc0Ns
b3NlZFJlYWRlciB3aXRoICcgKyBsYWJlbCk7Ci0KLSAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLQot
ICAgIGNvbnN0IHJlYWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7Ci0KLSAgICByZXR1cm4gUHJvbWlz
ZS5hbGwoWwotICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4gewotICAgICAgICBhc3NlcnRf
b2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiBjaHVua3NbMF0sIGRvbmU6IGZhbHNlIH0sICdmaXJz
dCByZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLSAgICAgIH0pLAotICAgICAgcmVhZGVyLnJl
YWQoKS50aGVuKHIgPT4gewotICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVl
OiBjaHVua3NbMV0sIGRvbmU6IGZhbHNlIH0sICdzZWNvbmQgcmVzdWx0IHNob3VsZCBiZSBjb3Jy
ZWN0Jyk7Ci0gICAgICB9KSwKLSAgICAgIHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKLSAgICAg
ICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVl
IH0sICd0aGlyZCByZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLSAgICAgIH0pCi0gICAgXSk7
Ci0KLSAgfSwgJ3RoaXJkIHJlYWQoKSwgd2l0aG91dCB3YWl0aW5nLCBzaG91bGQgZ2l2ZSB7IHZh
bHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAoc2VxdWVudGlhbCknKTsKLQotICBwcm9taXNl
X3Rlc3QoKCkgPT4gewotCi0gICAgY29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKLQot
ICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4ociA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0
X2VxdWFscyhyLCB7IHZhbHVlOiBjaHVua3NbMF0sIGRvbmU6IGZhbHNlIH0sICdmaXJzdCByZXN1
bHQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLQotICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhl
bihyMiA9PiB7Ci0gICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIyLCB7IHZhbHVlOiBjaHVu
a3NbMV0sIGRvbmU6IGZhbHNlIH0sICdzZWNvbmQgcmVzdWx0IHNob3VsZCBiZSBjb3JyZWN0Jyk7
Ci0KLSAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihyMyA9PiB7Ci0gICAgICAgICAg
YXNzZXJ0X29iamVjdF9lcXVhbHMocjMsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9
LCAndGhpcmQgcmVzdWx0IHNob3VsZCBiZSBjb3JyZWN0Jyk7Ci0gICAgICAgIH0pOwotICAgICAg
fSk7Ci0gICAgfSk7Ci0KLSAgfSwgJ3RoaXJkIHJlYWQoKSwgd2l0aG91dCB3YWl0aW5nLCBzaG91
bGQgZ2l2ZSB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAobmVzdGVkKScpOwotCi0g
IHByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgICBjb25zdCBzdHJlYW1BbmRSZWFkZXIgPSBmYWN0
b3J5KCk7Ci0gICAgY29uc3Qgc3RyZWFtID0gc3RyZWFtQW5kUmVhZGVyLnN0cmVhbTsKLSAgICBj
b25zdCByZWFkZXIgPSBzdHJlYW1BbmRSZWFkZXIucmVhZGVyOwotCi0gICAgYXNzZXJ0X3RydWUo
c3RyZWFtLmxvY2tlZCwgJ3N0cmVhbSBzaG91bGQgc3RhcnQgbG9ja2VkJyk7Ci0KLSAgICBjb25z
dCBwcm9taXNlID0gcmVhZGVyLmNsb3NlZC50aGVuKHYgPT4gewotICAgICAgYXNzZXJ0X2VxdWFs
cyh2LCB1bmRlZmluZWQsICdyZWFkZXIgY2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZp
bmVkJyk7Ci0gICAgICBhc3NlcnRfdHJ1ZShzdHJlYW0ubG9ja2VkLCAnc3RyZWFtIHNob3VsZCBy
ZW1haW4gbG9ja2VkJyk7Ci0gICAgfSk7Ci0KLSAgICByZWFkZXIucmVhZCgpOwotICAgIHJlYWRl
ci5yZWFkKCk7Ci0KLSAgICByZXR1cm4gcHJvbWlzZTsKLQotICB9LCAnZHJhaW5pbmcgdGhlIHN0
cmVhbSB2aWEgcmVhZCgpIHNob3VsZCBjYXVzZSB0aGUgcmVhZGVyIGNsb3NlZCBwcm9taXNlIHRv
IGZ1bGZpbGwsIGJ1dCBsb2NrZWQgc3RheXMgdHJ1ZScpOwotCi0gIHByb21pc2VfdGVzdCgoKSA9
PiB7Ci0KLSAgICBjb25zdCBzdHJlYW1BbmRSZWFkZXIgPSBmYWN0b3J5KCk7Ci0gICAgY29uc3Qg
c3RyZWFtID0gc3RyZWFtQW5kUmVhZGVyLnN0cmVhbTsKLSAgICBjb25zdCByZWFkZXIgPSBzdHJl
YW1BbmRSZWFkZXIucmVhZGVyOwotCi0gICAgY29uc3QgcHJvbWlzZSA9IHJlYWRlci5jbG9zZWQu
dGhlbigoKSA9PiB7Ci0gICAgICBhc3NlcnRfdHJ1ZShzdHJlYW0ubG9ja2VkLCAndGhlIHN0cmVh
bSBzaG91bGQgc3RhcnQgbG9ja2VkJyk7Ci0gICAgICByZWFkZXIucmVsZWFzZUxvY2soKTsgLy8g
UmVsZWFzaW5nIHRoZSBsb2NrIGFmdGVyIHJlYWRlciBjbG9zZWQgc2hvdWxkIG5vdCB0aHJvdy4K
LSAgICAgIGFzc2VydF9mYWxzZShzdHJlYW0ubG9ja2VkLCAndGhlIHN0cmVhbSBzaG91bGQgZW5k
IHVubG9ja2VkJyk7Ci0gICAgfSk7Ci0KLSAgICByZWFkZXIucmVhZCgpOwotICAgIHJlYWRlci5y
ZWFkKCk7Ci0KLSAgICByZXR1cm4gcHJvbWlzZTsKLQotICB9LCAncmVsZWFzaW5nIHRoZSBsb2Nr
IGFmdGVyIHRoZSBzdHJlYW0gaXMgY2xvc2VkIHNob3VsZCBjYXVzZSBsb2NrZWQgdG8gYmVjb21l
IGZhbHNlJyk7Ci0KLSAgcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gICAgY29uc3QgcmVhZGVyID0g
ZmFjdG9yeSgpLnJlYWRlcjsKLQotICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOwotCi0gICAgcmV0
dXJuIFByb21pc2UuYWxsKFsKLSAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9y
KCksIHJlYWRlci5yZWFkKCkpLAotICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJy
b3IoKSwgcmVhZGVyLnJlYWQoKSksCi0gICAgICBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVF
cnJvcigpLCByZWFkZXIucmVhZCgpKQotICAgIF0pOwotCi0gIH0sICdyZWxlYXNpbmcgdGhlIGxv
Y2sgc2hvdWxkIGNhdXNlIGZ1cnRoZXIgcmVhZCgpIGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlw
ZUVycm9yJyk7Ci0KLSAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICAgIGNvbnN0IHN0cmVhbUFu
ZFJlYWRlciA9IGZhY3RvcnkoKTsKLSAgICBjb25zdCBzdHJlYW0gPSBzdHJlYW1BbmRSZWFkZXIu
c3RyZWFtOwotICAgIGNvbnN0IHJlYWRlciA9IHN0cmVhbUFuZFJlYWRlci5yZWFkZXI7Ci0KLSAg
ICBjb25zdCByZWFkZXJDbG9zZWQgPSByZWFkZXIuY2xvc2VkOwotCi0gICAgYXNzZXJ0X2VxdWFs
cyhyZWFkZXIuY2xvc2VkLCByZWFkZXJDbG9zZWQsICdhY2Nlc3NpbmcgcmVhZGVyLmNsb3NlZCB0
d2ljZSBpbiBzdWNjZXNzaW9uIGdpdmVzIHRoZSBzYW1lIHZhbHVlJyk7Ci0KLSAgICBjb25zdCBw
cm9taXNlID0gcmVhZGVyLnJlYWQoKS50aGVuKCgpID0+IHsKLSAgICAgIGFzc2VydF9lcXVhbHMo
cmVhZGVyLmNsb3NlZCwgcmVhZGVyQ2xvc2VkLCAncmVhZGVyLmNsb3NlZCBpcyB0aGUgc2FtZSBh
ZnRlciByZWFkKCkgZnVsZmlsbHMnKTsKLQotICAgICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7Ci0K
LSAgICAgIGFzc2VydF9lcXVhbHMocmVhZGVyLmNsb3NlZCwgcmVhZGVyQ2xvc2VkLCAncmVhZGVy
LmNsb3NlZCBpcyB0aGUgc2FtZSBhZnRlciByZWxlYXNpbmcgdGhlIGxvY2snKTsKLQotICAgICAg
Y29uc3QgbmV3UmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOwotICAgICAgcmV0dXJuIG5ld1Jl
YWRlci5yZWFkKCk7Ci0gICAgfSk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKHJlYWRlci5jbG9zZWQs
IHJlYWRlckNsb3NlZCwgJ3JlYWRlci5jbG9zZWQgaXMgdGhlIHNhbWUgYWZ0ZXIgY2FsbGluZyBy
ZWFkKCknKTsKLQotICAgIHJldHVybiBwcm9taXNlOwotCi0gIH0sICdyZWFkZXJcJ3MgY2xvc2Vk
IHByb3BlcnR5IGFsd2F5cyByZXR1cm5zIHRoZSBzYW1lIHByb21pc2UnKTsKLX07CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMt
YXBpL3Jlc291cmNlcy9ycy11dGlscy5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVzb3VyY2VzL3JzLXV0aWxzLmpzCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjMyMjJlMjNjYWI3YTBhNmQ2MTc3MTE2Yzk5ZWQ5MGRm
OTU3OTc3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVz
b3VyY2VzL3JzLXV0aWxzLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTg1ICswLDAgQEAKLSd1c2Ug
c3RyaWN0JzsKLShmdW5jdGlvbiAoKSB7Ci0KLSAgY2xhc3MgUmFuZG9tUHVzaFNvdXJjZSB7Ci0g
ICAgY29uc3RydWN0b3IodG9QdXNoKSB7Ci0gICAgICB0aGlzLnB1c2hlZCA9IDA7Ci0gICAgICB0
aGlzLnRvUHVzaCA9IHRvUHVzaDsKLSAgICAgIHRoaXMuc3RhcnRlZCA9IGZhbHNlOwotICAgICAg
dGhpcy5wYXVzZWQgPSBmYWxzZTsKLSAgICAgIHRoaXMuY2xvc2VkID0gZmFsc2U7Ci0KLSAgICAg
IHRoaXMuX2ludGVydmFsSGFuZGxlID0gbnVsbDsKLSAgICB9Ci0KLSAgICByZWFkU3RhcnQoKSB7
Ci0gICAgICBpZiAodGhpcy5jbG9zZWQpIHsKLSAgICAgICAgcmV0dXJuOwotICAgICAgfQotCi0g
ICAgICBpZiAoIXRoaXMuc3RhcnRlZCkgewotICAgICAgICB0aGlzLl9pbnRlcnZhbEhhbmRsZSA9
IHNldEludGVydmFsKHdyaXRlQ2h1bmssIDIpOwotICAgICAgICB0aGlzLnN0YXJ0ZWQgPSB0cnVl
OwotICAgICAgfQotCi0gICAgICBpZiAodGhpcy5wYXVzZWQpIHsKLSAgICAgICAgdGhpcy5faW50
ZXJ2YWxIYW5kbGUgPSBzZXRJbnRlcnZhbCh3cml0ZUNodW5rLCAyKTsKLSAgICAgICAgdGhpcy5w
YXVzZWQgPSBmYWxzZTsKLSAgICAgIH0KLQotICAgICAgY29uc3Qgc291cmNlID0gdGhpczsKLSAg
ICAgIGZ1bmN0aW9uIHdyaXRlQ2h1bmsoKSB7Ci0gICAgICAgIGlmIChzb3VyY2UucGF1c2VkKSB7
Ci0gICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgc291cmNlLnB1c2hlZCsr
OwotCi0gICAgICAgIGlmIChzb3VyY2UudG9QdXNoID4gMCAmJiBzb3VyY2UucHVzaGVkID4gc291
cmNlLnRvUHVzaCkgewotICAgICAgICAgIGlmIChzb3VyY2UuX2ludGVydmFsSGFuZGxlKSB7Ci0g
ICAgICAgICAgICBjbGVhckludGVydmFsKHNvdXJjZS5faW50ZXJ2YWxIYW5kbGUpOwotICAgICAg
ICAgICAgc291cmNlLl9pbnRlcnZhbEhhbmRsZSA9IHVuZGVmaW5lZDsKLSAgICAgICAgICB9Ci0g
ICAgICAgICAgc291cmNlLmNsb3NlZCA9IHRydWU7Ci0gICAgICAgICAgc291cmNlLm9uZW5kKCk7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgc291cmNlLm9uZGF0YShyYW5kb21DaHVuaygx
MjgpKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIHJlYWRTdG9wKCkgewotICAg
ICAgaWYgKHRoaXMucGF1c2VkKSB7Ci0gICAgICAgIHJldHVybjsKLSAgICAgIH0KLQotICAgICAg
aWYgKHRoaXMuc3RhcnRlZCkgewotICAgICAgICB0aGlzLnBhdXNlZCA9IHRydWU7Ci0gICAgICAg
IGNsZWFySW50ZXJ2YWwodGhpcy5faW50ZXJ2YWxIYW5kbGUpOwotICAgICAgICB0aGlzLl9pbnRl
cnZhbEhhbmRsZSA9IHVuZGVmaW5lZDsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHRocm93IG5l
dyBFcnJvcignQ2FuXCd0IHBhdXNlIHJlYWRpbmcgYW4gdW5zdGFydGVkIHNvdXJjZS4nKTsKLSAg
ICAgIH0KLSAgICB9Ci0gIH0KLQotICBmdW5jdGlvbiByYW5kb21DaHVuayhzaXplKSB7Ci0gICAg
bGV0IGNodW5rID0gJyc7Ci0KLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7ICsraSkgewot
ICAgICAgLy8gQWRkIGEgcmFuZG9tIGNoYXJhY3RlciBmcm9tIHRoZSBiYXNpYyBwcmludGFibGUg
QVNDSUkgc2V0LgotICAgICAgY2h1bmsgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShNYXRoLnJvdW5k
KE1hdGgucmFuZG9tKCkgKiA4NCkgKyAzMik7Ci0gICAgfQotCi0gICAgcmV0dXJuIGNodW5rOwot
ICB9Ci0KLSAgZnVuY3Rpb24gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHJlYWRhYmxlLCByZWFkZXIp
IHsKLSAgICBpZiAocmVhZGVyID09PSB1bmRlZmluZWQpIHsKLSAgICAgIHJlYWRlciA9IHJlYWRh
YmxlLmdldFJlYWRlcigpOwotICAgIH0KLQotICAgIGNvbnN0IGNodW5rcyA9IFtdOwotCi0gICAg
cmV0dXJuIHB1bXAoKTsKLQotICAgIGZ1bmN0aW9uIHB1bXAoKSB7Ci0gICAgICByZXR1cm4gcmVh
ZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICAgIGlmIChyZXN1bHQuZG9uZSkgewot
ICAgICAgICAgIHJldHVybiBjaHVua3M7Ci0gICAgICAgIH0KLQotICAgICAgICBjaHVua3MucHVz
aChyZXN1bHQudmFsdWUpOwotICAgICAgICByZXR1cm4gcHVtcCgpOwotICAgICAgfSk7Ci0gICAg
fQotICB9Ci0KLSAgY2xhc3MgU2VxdWVudGlhbFB1bGxTb3VyY2UgewotICAgIGNvbnN0cnVjdG9y
KGxpbWl0LCBvcHRpb25zKSB7Ci0gICAgICBjb25zdCBhc3luYyA9IG9wdGlvbnMgJiYgb3B0aW9u
cy5hc3luYzsKLQotICAgICAgdGhpcy5jdXJyZW50ID0gMDsKLSAgICAgIHRoaXMubGltaXQgPSBs
aW1pdDsKLSAgICAgIHRoaXMub3BlbmVkID0gZmFsc2U7Ci0gICAgICB0aGlzLmNsb3NlZCA9IGZh
bHNlOwotCi0gICAgICB0aGlzLl9leGVjID0gZiA9PiBmKCk7Ci0gICAgICBpZiAoYXN5bmMpIHsK
LSAgICAgICAgdGhpcy5fZXhlYyA9IGYgPT4gc2V0VGltZW91dChmLCAwKTsKLSAgICAgIH0KLSAg
ICB9Ci0KLSAgICBvcGVuKGNiKSB7Ci0gICAgICB0aGlzLl9leGVjKCgpID0+IHsKLSAgICAgICAg
dGhpcy5vcGVuZWQgPSB0cnVlOwotICAgICAgICBjYigpOwotICAgICAgfSk7Ci0gICAgfQotCi0g
ICAgcmVhZChjYikgewotICAgICAgdGhpcy5fZXhlYygoKSA9PiB7Ci0gICAgICAgIGlmICgrK3Ro
aXMuY3VycmVudCA8PSB0aGlzLmxpbWl0KSB7Ci0gICAgICAgICAgY2IobnVsbCwgZmFsc2UsIHRo
aXMuY3VycmVudCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgY2IobnVsbCwgdHJ1ZSwg
bnVsbCk7Ci0gICAgICAgIH0KLSAgICAgIH0pOwotICAgIH0KLQotICAgIGNsb3NlKGNiKSB7Ci0g
ICAgICB0aGlzLl9leGVjKCgpID0+IHsKLSAgICAgICAgdGhpcy5jbG9zZWQgPSB0cnVlOwotICAg
ICAgICBjYigpOwotICAgICAgfSk7Ci0gICAgfQotICB9Ci0KLSAgZnVuY3Rpb24gc2VxdWVudGlh
bFJlYWRhYmxlU3RyZWFtKGxpbWl0LCBvcHRpb25zKSB7Ci0gICAgY29uc3Qgc2VxdWVudGlhbFNv
dXJjZSA9IG5ldyBTZXF1ZW50aWFsUHVsbFNvdXJjZShsaW1pdCwgb3B0aW9ucyk7Ci0KLSAgICBj
b25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgc3RhcnQoKSB7Ci0gICAg
ICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Ci0gICAgICAgICAg
c2VxdWVudGlhbFNvdXJjZS5vcGVuKGVyciA9PiB7Ci0gICAgICAgICAgICBpZiAoZXJyKSB7Ci0g
ICAgICAgICAgICAgIHJlamVjdChlcnIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmVz
b2x2ZSgpOwotICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICAgIH0sCi0KLSAgICAgIHB1
bGwoYykgewotICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4g
ewotICAgICAgICAgIHNlcXVlbnRpYWxTb3VyY2UucmVhZCgoZXJyLCBkb25lLCBjaHVuaykgPT4g
ewotICAgICAgICAgICAgaWYgKGVycikgewotICAgICAgICAgICAgICByZWplY3QoZXJyKTsKLSAg
ICAgICAgICAgIH0gZWxzZSBpZiAoZG9uZSkgewotICAgICAgICAgICAgICBzZXF1ZW50aWFsU291
cmNlLmNsb3NlKGVycjIgPT4gewotICAgICAgICAgICAgICAgIGlmIChlcnIyKSB7Ci0gICAgICAg
ICAgICAgICAgICByZWplY3QoZXJyMik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGMuY2xvc2UoKTsKLSAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAg
IH0pOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgYy5lbnF1ZXVlKGNodW5r
KTsKLSAgICAgICAgICAgICAgcmVzb2x2ZSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0p
OwotICAgICAgICB9KTsKLSAgICAgIH0KLSAgICB9KTsKLQotICAgIHN0cmVhbS5zb3VyY2UgPSBz
ZXF1ZW50aWFsU291cmNlOwotCi0gICAgcmV0dXJuIHN0cmVhbTsKLSAgfQotCi0KLSAgc2VsZi5S
YW5kb21QdXNoU291cmNlID0gUmFuZG9tUHVzaFNvdXJjZTsKLSAgc2VsZi5yZWFkYWJsZVN0cmVh
bVRvQXJyYXkgPSByZWFkYWJsZVN0cmVhbVRvQXJyYXk7Ci0gIHNlbGYuc2VxdWVudGlhbFJlYWRh
YmxlU3RyZWFtID0gc2VxdWVudGlhbFJlYWRhYmxlU3RyZWFtOwotCi19KCkpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFw
aS9yZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6
ZXIuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2ZWQ0YTdhYWI1NDFlOGU1Y2Zl
ZWM0MDQyMDMyODkyNDMwMTQ3YjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zLWFwaS9yZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcworKysgL2Rldi9udWxsCkBA
IC0xLDE0ICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotZnVuY3Rpb24gd29ya2VyX3Rlc3QoZmls
ZSkgewotICBmZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgV29ya2VyKGZpbGUpKTsKLSAgaWYg
KHR5cGVvZiBTaGFyZWRXb3JrZXIgPT09ICdmdW5jdGlvbicpIHsKLSAgICBmZXRjaF90ZXN0c19m
cm9tX3dvcmtlcihuZXcgU2hhcmVkV29ya2VyKGZpbGUpKTsKLSAgfSBlbHNlIHsKLSAgICB0ZXN0
KCgpID0+IHsKLSAgICAgIGFzc2VydF91bnJlYWNoZWQoJ1NoYXJlZFdvcmtlciBpcyB1bmF2YWls
YWJsZScpOwotICAgIH0sICdMb2FkICcgKyBmaWxlICsgJyB3aXRoIFNoYXJlZFdvcmtlcicpOwot
ICB9Ci0gIHNlcnZpY2Vfd29ya2VyX3Rlc3QoZmlsZSk7Ci19Ci0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVzb3Vy
Y2VzL3Rlc3QtdXRpbHMuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMtYXBpL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjYzQ3ODk4YTYwOGU5M2Q1ZTU2NjRkMDE3NjA3YjRmNDcwOWY1Mzcw
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVzb3VyY2Vz
L3Rlc3QtdXRpbHMuanMKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0ndXNlIHN0cmlj
dCc7Ci0KLXNlbGYuZ2V0dGVyUmVqZWN0cyA9ICh0LCBvYmosIGdldHRlck5hbWUsIHRhcmdldCkg
PT4gewotICBjb25zdCBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9i
aiwgZ2V0dGVyTmFtZSkuZ2V0OwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5
cGVFcnJvcigpLCBnZXR0ZXIuY2FsbCh0YXJnZXQpKTsKLX07Ci0KLXNlbGYubWV0aG9kUmVqZWN0
cyA9ICh0LCBvYmosIG1ldGhvZE5hbWUsIHRhcmdldCkgPT4gewotICBjb25zdCBtZXRob2QgPSBv
YmpbbWV0aG9kTmFtZV07Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVy
cm9yKCksIG1ldGhvZC5jYWxsKHRhcmdldCkpOwotfTsKLQotc2VsZi5nZXR0ZXJUaHJvd3MgPSAo
b2JqLCBnZXR0ZXJOYW1lLCB0YXJnZXQpID0+IHsKLSAgY29uc3QgZ2V0dGVyID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGdldHRlck5hbWUpLmdldDsKLQotICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gZ2V0dGVyLmNhbGwodGFyZ2V0KSwgZ2V0dGVy
TmFtZSArICcgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7Ci19OwotCi1zZWxmLm1ldGhvZFRo
cm93cyA9IChvYmosIG1ldGhvZE5hbWUsIHRhcmdldCwgYXJncykgPT4gewotICBjb25zdCBtZXRo
b2QgPSBvYmpbbWV0aG9kTmFtZV07Ci0KLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCks
ICgpID0+IG1ldGhvZC5hcHBseSh0YXJnZXQsIGFyZ3MpLCBtZXRob2ROYW1lICsgJyBzaG91bGQg
dGhyb3cgYSBUeXBlRXJyb3InKTsKLX07Ci0KLXNlbGYuZ2FyYmFnZUNvbGxlY3QgPSAoKSA9PiB7
Ci0gIGlmIChzZWxmLmdjKSB7Ci0gICAgLy8gVXNlIC0tZXhwb3NlX2djIGZvciBWOCAoYW5kIE5v
ZGUuanMpCi0gICAgLy8gRXhwb3NlZCBpbiBTcGlkZXJNb25rZXkgc2hlbGwgYXMgd2VsbAotICAg
IHNlbGYuZ2MoKTsKLSAgfSBlbHNlIGlmIChzZWxmLkdDQ29udHJvbGxlcikgewotICAgIC8vIFBy
ZXNlbnQgaW4gc29tZSBXZWJLaXQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzCi0gICAgR0NDb250
cm9sbGVyLmNvbGxlY3QoKTsKLSAgfSBlbHNlIHsKLSAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1j
b25zb2xlICovCi0gICAgY29uc29sZS53YXJuKCdUZXN0cyBhcmUgcnVubmluZyB3aXRob3V0IHRo
ZSBhYmlsaXR5IHRvIGRvIG1hbnVhbCBnYXJiYWdlIGNvbGxlY3Rpb24uIFRoZXkgd2lsbCBzdGls
bCB3b3JrLCBidXQgJyArCi0gICAgICAnY292ZXJhZ2Ugd2lsbCBiZSBzdWJvcHRpbWFsLicpOwot
ICAgIC8qIGVzbGludC1lbmFibGUgbm8tY29uc29sZSAqLwotICB9Ci19OwotCi1zZWxmLmRlbGF5
ID0gbXMgPT4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzdGVwX3RpbWVvdXQocmVzb2x2ZSwgbXMp
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9SRUFETUUudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL1JFQURNRS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2ZjOTFmNTk0NmEzOGQx
NDJiMDUxYzgxMWQ2MTU4OWY2ZTAwZTZlYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9SRUFETUUudHh0CkBAIC0w
LDAgKzEsNiBAQAorVGhpcyBkaXJlY3RvcnkgaXMgaW1wb3J0ZWQgZnJvbSB0aGUgdGhlIFN0cmVh
bXMgQVBJIHJlcG9zaXRvcnkuCisKK1RoZXJlIGlzIGEgcGxhbiB0byBtb3ZlIHRoZXNlIHRlc3Rz
IHRvIHdlYi1wbGF0Zm9ybS10ZXN0cyByZXBvc2l0b3J5IHNvIGZyb20gdGhhdCBtb21lbnQgb24g
dGhpcyBpbXBvcnRhdGlvbiB3aWxsIGJlCithdXRvbWF0aWMuCisKK0N1cnJlbnQgdmVyc2lvbjog
aHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9zdHJlYW1zL3RyZWUvN2YxOTE3NTQxNWQ5YjU3YWYw
NGNiOGMyY2QzNTVjYTM4MTAxZjBhYS9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vd2ViLXBsYXRm
b3JtLXRlc3RzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEy
ZDk2NDE1MDI5OTRlMzJkNDJlYmM5YmUyZDdiMzRmMTQ1ZjVjYjQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0
ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAor
CitQQVNTIENhbiBjb25zdHJ1Y3QgYSBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IHdpdGggYSB2
YWxpZCBoaWdoIHdhdGVyIG1hcmsgCitQQVNTIENhbiBjb25zdHJ1Y3QgYSBCeXRlTGVuZ3RoUXVl
dWluZ1N0cmF0ZWd5IHdpdGggYW55IHZhbHVlIGFzIGl0cyBoaWdoIHdhdGVyIG1hcmsgCitQQVNT
IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kgY29uc3RydWN0b3IgYmVoYXZlcyBhcyBleHBlY3Rl
ZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRzIAorUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5
IHNpemUgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRzIAorUEFTUyBC
eXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplIHNob3VsZCB3b3JrIGdlbmVy
aWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzIAorUEFTUyBCeXRlTGVuZ3RoUXVl
dWluZ1N0cmF0ZWd5IGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IHByb3BlcnRpZXMgCitQQVNT
IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kncyBoaWdoV2F0ZXJNYXJrIHByb3BlcnR5IGNhbiBi
ZSBzZXQgdG8gYW55dGhpbmcgCitGQUlMIExvYWQgYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVn
eS5qcyB3aXRoIFNoYXJlZFdvcmtlciBhc3NlcnRfdW5yZWFjaGVkOiBTaGFyZWRXb3JrZXIgaXMg
dW5hdmFpbGFibGUgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCitGQUlMIFVudGl0bGVkIHVuZGVm
aW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICduYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5nZXRSZWdpc3RyYXRpb24nKQorUEFTUyBDYW4gY29uc3RydWN0IGEgQnl0ZUxlbmd0aFF1ZXVp
bmdTdHJhdGVneSB3aXRoIGEgdmFsaWQgaGlnaCB3YXRlciBtYXJrIAorUEFTUyBDYW4gY29uc3Ry
dWN0IGEgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSB3aXRoIGFueSB2YWx1ZSBhcyBpdHMgaGln
aCB3YXRlciBtYXJrIAorUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IGNvbnN0cnVjdG9y
IGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cyAKK1BBU1MgQnl0ZUxl
bmd0aFF1ZXVpbmdTdHJhdGVneSBzaXplIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdl
IGFyZ3VtZW50cyAKK1BBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6
ZSBzaG91bGQgd29yayBnZW5lcmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cyAK
K1BBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVj
dCBwcm9wZXJ0aWVzIAorUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5J3MgaGlnaFdhdGVy
TWFyayBwcm9wZXJ0eSBjYW4gYmUgc2V0IHRvIGFueXRoaW5nIAorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5n
dGgtcXVldWluZy1zdHJhdGVneS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xM2YxNWFjYjlmZmFiNjhhZTI4NWY1NzgyNjcxNzdiZmI3ZTVkYjIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuaHRtbApAQCAtMCwwICsxLDEy
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvc2Vy
dmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyI+PC9z
Y3JpcHQ+CisKKzxzY3JpcHQgc3JjPSJieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7Cit3b3JrZXJfdGVzdCgnYnl0ZS1sZW5n
dGgtcXVldWluZy1zdHJhdGVneS5qcycpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5ndGgt
cXVldWluZy1zdHJhdGVneS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjU0NDA3YWY5OTEzODg5M2I4YjUyOTJhYTI0ODEwMDQxNjJlNzJlNWEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5qcwpAQCAtMCwwICsxLDEwNyBAQAorJ3Vz
ZSBzdHJpY3QnOworCitpZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7CisgIHNlbGYuaW1wb3J0U2Ny
aXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOworfQorCit0ZXN0KCgpID0+IHsKKwor
ICBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSk7CisK
K30sICdDYW4gY29uc3RydWN0IGEgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSB3aXRoIGEgdmFs
aWQgaGlnaCB3YXRlciBtYXJrJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGZvciAoY29uc3QgaGln
aFdhdGVyTWFyayBvZiBbLUluZmluaXR5LCBOYU4sICdmb28nLCB7fSwgKCkgPT4ge31dKSB7Cisg
ICAgY29uc3Qgc3RyYXRlZ3kgPSBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hX
YXRlck1hcmsgfSk7CisgICAgYXNzZXJ0X2VxdWFscyhzdHJhdGVneS5oaWdoV2F0ZXJNYXJrLCBo
aWdoV2F0ZXJNYXJrLCBgJHtoaWdoV2F0ZXJNYXJrfSBnZXRzIHNldCBjb3JyZWN0bHlgKTsKKyAg
fQorCit9LCAnQ2FuIGNvbnN0cnVjdCBhIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kgd2l0aCBh
bnkgdmFsdWUgYXMgaXRzIGhpZ2ggd2F0ZXIgbWFyaycpOworCit0ZXN0KCgpID0+IHsKKworICBj
b25zdCBoaWdoV2F0ZXJNYXJrID0gMTsKKyAgY29uc3QgaGlnaFdhdGVyTWFya09iamVjdEdldHRl
ciA9IHsKKyAgICBnZXQgaGlnaFdhdGVyTWFyaygpIHsgcmV0dXJuIGhpZ2hXYXRlck1hcms7IH0K
KyAgfTsKKyAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ3dvdyEnKTsKKyAgY29uc3QgaGlnaFdh
dGVyTWFya09iamVjdEdldHRlclRocm93aW5nID0geworICAgIGdldCBoaWdoV2F0ZXJNYXJrKCkg
eyB0aHJvdyBlcnJvcjsgfQorICB9OworCisgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAnVHlwZUVy
cm9yJyB9LCAoKSA9PiBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSgpLCAnY29uc3RydWN0
aW9uIGZhaWxzIHdpdGggdW5kZWZpbmVkJyk7CisgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAnVHlw
ZUVycm9yJyB9LCAoKSA9PiBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneShudWxsKSwgJ2Nv
bnN0cnVjdGlvbiBmYWlscyB3aXRoIG51bGwnKTsKKyAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICdF
cnJvcicgfSwgKCkgPT4gbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koaGlnaFdhdGVyTWFy
a09iamVjdEdldHRlclRocm93aW5nKSwKKyAgICAnY29uc3RydWN0aW9uIGZhaWxzIHdpdGggYW4g
b2JqZWN0IHdpdGggYSB0aHJvd2luZyBoaWdoV2F0ZXJNYXJrIGdldHRlcicpOworCisgIC8vIFNo
b3VsZCBub3QgZmFpbDoKKyAgbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koJ3BvdGF0bycp
OworICBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSh7fSk7CisgIG5ldyBCeXRlTGVuZ3Ro
UXVldWluZ1N0cmF0ZWd5KGhpZ2hXYXRlck1hcmtPYmplY3RHZXR0ZXIpOworCit9LCAnQnl0ZUxl
bmd0aFF1ZXVpbmdTdHJhdGVneSBjb25zdHJ1Y3RvciBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGgg
c3RyYW5nZSBhcmd1bWVudHMnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3Qgc2l6ZSA9IDEw
MjQ7CisgIGNvbnN0IGNodW5rID0geyBieXRlTGVuZ3RoOiBzaXplIH07CisgIGNvbnN0IGNodW5r
R2V0dGVyID0geworICAgIGdldCBieXRlTGVuZ3RoKCkgeyByZXR1cm4gc2l6ZTsgfQorICB9Owor
ICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignd293IScpOworICBjb25zdCBjaHVua0dldHRlclRo
cm93aW5nID0geworICAgIGdldCBieXRlTGVuZ3RoKCkgeyB0aHJvdyBlcnJvcjsgfQorICB9Owor
ICBhc3NlcnRfdGhyb3dzKHsgbmFtZTogJ1R5cGVFcnJvcicgfSwgKCkgPT4gQnl0ZUxlbmd0aFF1
ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSgpLCAnc2l6ZSBmYWlscyB3aXRoIHVuZGVmaW5l
ZCcpOworICBhc3NlcnRfdGhyb3dzKHsgbmFtZTogJ1R5cGVFcnJvcicgfSwgKCkgPT4gQnl0ZUxl
bmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZShudWxsKSwgJ3NpemUgZmFpbHMgd2l0
aCBudWxsJyk7CisgIGFzc2VydF9lcXVhbHMoQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90
b3R5cGUuc2l6ZSgncG90YXRvJyksIHVuZGVmaW5lZCwKKyAgICAnc2l6ZSBzdWNjZWVkcyB3aXRo
IHVuZGVmaW5lZCB3aXRoIGEgcmFuZG9tIG5vbi1vYmplY3QgdHlwZScpOworICBhc3NlcnRfZXF1
YWxzKEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoe30pLCB1bmRlZmlu
ZWQsCisgICAgJ3NpemUgc3VjY2VlZHMgd2l0aCB1bmRlZmluZWQgd2l0aCBhbiBvYmplY3Qgd2l0
aG91dCBod20gcHJvcGVydHknKTsKKyAgYXNzZXJ0X2VxdWFscyhCeXRlTGVuZ3RoUXVldWluZ1N0
cmF0ZWd5LnByb3RvdHlwZS5zaXplKGNodW5rKSwgc2l6ZSwKKyAgICAnc2l6ZSBzdWNjZWVkcyB3
aXRoIHRoZSByaWdodCBhbW91bnQgd2l0aCBhbiBvYmplY3Qgd2l0aCBhIGh3bScpOworICBhc3Nl
cnRfZXF1YWxzKEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoY2h1bmtH
ZXR0ZXIpLCBzaXplLAorICAgICdzaXplIHN1Y2NlZWRzIHdpdGggdGhlIHJpZ2h0IGFtb3VudCB3
aXRoIGFuIG9iamVjdCB3aXRoIGEgaHdtIGdldHRlcicpOworICBhc3NlcnRfdGhyb3dzKHsgbmFt
ZTogJ0Vycm9yJyB9LCAoKSA9PiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5z
aXplKGNodW5rR2V0dGVyVGhyb3dpbmcpLAorICAgICdzaXplIGZhaWxzIHdpdGggdGhlIGVycm9y
IHRocm93biBieSB0aGUgZ2V0dGVyJyk7CisKK30sICdCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5
IHNpemUgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRzJyk7CisKK3Rl
c3QoKCkgPT4geworCisgIGNvbnN0IHRoaXNWYWx1ZSA9IG51bGw7CisgIGNvbnN0IHJldHVyblZh
bHVlID0geyAncmV0dXJuZWQgZnJvbSc6ICdieXRlTGVuZ3RoIGdldHRlcicgfTsKKyAgY29uc3Qg
Y2h1bmsgPSB7CisgICAgZ2V0IGJ5dGVMZW5ndGgoKSB7IHJldHVybiByZXR1cm5WYWx1ZTsgfQor
ICB9OworCisgIGFzc2VydF9lcXVhbHMoQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5
cGUuc2l6ZS5jYWxsKHRoaXNWYWx1ZSwgY2h1bmspLCByZXR1cm5WYWx1ZSk7CisKK30sICdCeXRl
TGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplIHNob3VsZCB3b3JrIGdlbmVyaWNh
bGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzJyk7CisKK3Rlc3QoKCkgPT4geworCisg
IGNvbnN0IHN0cmF0ZWd5ID0gbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0
ZXJNYXJrOiA0IH0pOworCisgIGFzc2VydF9vYmplY3RfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3Ioc3RyYXRlZ3ksICdoaWdoV2F0ZXJNYXJrJyksCisgICAgeyB2YWx1ZTog
NCwgd3JpdGFibGU6IHRydWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9
LAorICAgICdoaWdoV2F0ZXJNYXJrIHByb3BlcnR5IHNob3VsZCBiZSBhIGRhdGEgcHJvcGVydHkg
d2l0aCB0aGUgdmFsdWUgcGFzc2VkIHRoZSBjb25zdHJ1Y3RvcicpOworICBhc3NlcnRfZXF1YWxz
KHR5cGVvZiBzdHJhdGVneS5zaXplLCAnZnVuY3Rpb24nKTsKKworfSwgJ0J5dGVMZW5ndGhRdWV1
aW5nU3RyYXRlZ3kgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgcHJvcGVydGllcycpOworCit0
ZXN0KCgpID0+IHsKKworICBjb25zdCBzdHJhdGVneSA9IG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0
cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KTsKKyAgYXNzZXJ0X2VxdWFscyhzdHJhdGVneS5o
aWdoV2F0ZXJNYXJrLCA0KTsKKworICBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrID0gMTA7CisgIGFz
c2VydF9lcXVhbHMoc3RyYXRlZ3kuaGlnaFdhdGVyTWFyaywgMTApOworCisgIHN0cmF0ZWd5Lmhp
Z2hXYXRlck1hcmsgPSAnYmFuYW5hJzsKKyAgYXNzZXJ0X2VxdWFscyhzdHJhdGVneS5oaWdoV2F0
ZXJNYXJrLCAnYmFuYW5hJyk7CisKK30sICdCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5XCdzIGhp
Z2hXYXRlck1hcmsgcHJvcGVydHkgY2FuIGJlIHNldCB0byBhbnl0aGluZycpOworCitkb25lKCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvY291bnQtcXVldWluZy1z
dHJhdGVneS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWMyN2E1NWJmNzhhMWY3ZDQ0YjY1ZTQ5
ZDQ2YzZlOWQyMjk5OTNlYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACisKK1BBU1MgQ2FuIGNvbnN0cnVjdCBhIENvdW50
UXVldWluZ1N0cmF0ZWd5IHdpdGggYSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsgCitQQVNTIENhbiBj
b25zdHJ1Y3QgYSBDb3VudFF1ZXVpbmdTdHJhdGVneSB3aXRoIGFueSB2YWx1ZSBhcyBpdHMgaGln
aCB3YXRlciBtYXJrIAorUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneSBjb25zdHJ1Y3RvciBiZWhh
dmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1bWVudHMgCitQQVNTIENvdW50UXVldWlu
Z1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplIHNob3VsZCB3b3JrIGdlbmVyaWNhbGx5IG9uIGl0cyB0
aGlzIGFuZCBpdHMgYXJndW1lbnRzIAorUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneSBzaXplIGJl
aGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cyAKK1BBU1MgQ291bnRRdWV1
aW5nU3RyYXRlZ3kgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgcHJvcGVydGllcyAKK1BBU1Mg
Q291bnRRdWV1aW5nU3RyYXRlZ3kncyBoaWdoV2F0ZXJNYXJrIHByb3BlcnR5IGNhbiBiZSBzZXQg
dG8gYW55dGhpbmcgCitGQUlMIExvYWQgY291bnQtcXVldWluZy1zdHJhdGVneS5qcyB3aXRoIFNo
YXJlZFdvcmtlciBhc3NlcnRfdW5yZWFjaGVkOiBTaGFyZWRXb3JrZXIgaXMgdW5hdmFpbGFibGUg
UmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCitGQUlMIFVudGl0bGVkIHVuZGVmaW5lZCBpcyBub3Qg
YW4gb2JqZWN0IChldmFsdWF0aW5nICduYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdpc3Ry
YXRpb24nKQorUEFTUyBDYW4gY29uc3RydWN0IGEgQ291bnRRdWV1aW5nU3RyYXRlZ3kgd2l0aCBh
IHZhbGlkIGhpZ2ggd2F0ZXIgbWFyayAKK1BBU1MgQ2FuIGNvbnN0cnVjdCBhIENvdW50UXVldWlu
Z1N0cmF0ZWd5IHdpdGggYW55IHZhbHVlIGFzIGl0cyBoaWdoIHdhdGVyIG1hcmsgCitQQVNTIENv
dW50UXVldWluZ1N0cmF0ZWd5IGNvbnN0cnVjdG9yIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBz
dHJhbmdlIGFyZ3VtZW50cyAKK1BBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNp
emUgc2hvdWxkIHdvcmsgZ2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMg
CitQQVNTIENvdW50UXVldWluZ1N0cmF0ZWd5IHNpemUgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRo
IHN0cmFuZ2UgYXJndW1lbnRzIAorUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneSBpbnN0YW5jZXMg
aGF2ZSB0aGUgY29ycmVjdCBwcm9wZXJ0aWVzIAorUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneSdz
IGhpZ2hXYXRlck1hcmsgcHJvcGVydHkgY2FuIGJlIHNldCB0byBhbnl0aGluZyAKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMmFmZDEyNjg4NjVjYzhhYjdlOThkNzEzYWRiOThmOTVkZWU4NTkzYwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29y
a2Vycy9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iY291bnQtcXVldWluZy1zdHJhdGVneS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgorJ3VzZSBzdHJpY3QnOword29ya2VyX3Rlc3QoJ2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ku
anMnKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuanMgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvY291bnQtcXVl
dWluZy1zdHJhdGVneS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YWUwMDYzZjU3ZDA5ZGQ0N2ZhZjY4MWVjODA5
YTBmODM3NjNkNWM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuanMKQEAg
LTAsMCArMSwxMDYgQEAKKyd1c2Ugc3RyaWN0JzsKKworaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykg
eworICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnKTsKK30K
KwordGVzdCgoKSA9PiB7CisKKyAgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVy
TWFyazogNCB9KTsKKworfSwgJ0NhbiBjb25zdHJ1Y3QgYSBDb3VudFF1ZXVpbmdTdHJhdGVneSB3
aXRoIGEgdmFsaWQgaGlnaCB3YXRlciBtYXJrJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGZvciAo
Y29uc3QgaGlnaFdhdGVyTWFyayBvZiBbLUluZmluaXR5LCBOYU4sICdmb28nLCB7fSwgKCkgPT4g
e31dKSB7CisgICAgY29uc3Qgc3RyYXRlZ3kgPSBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBo
aWdoV2F0ZXJNYXJrIH0pOworICAgIGFzc2VydF9lcXVhbHMoc3RyYXRlZ3kuaGlnaFdhdGVyTWFy
aywgaGlnaFdhdGVyTWFyaywgYCR7aGlnaFdhdGVyTWFya30gZ2V0cyBzZXQgY29ycmVjdGx5YCk7
CisgIH0KKworfSwgJ0NhbiBjb25zdHJ1Y3QgYSBDb3VudFF1ZXVpbmdTdHJhdGVneSB3aXRoIGFu
eSB2YWx1ZSBhcyBpdHMgaGlnaCB3YXRlciBtYXJrJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGNv
bnN0IGhpZ2hXYXRlck1hcmsgPSAxOworICBjb25zdCBoaWdoV2F0ZXJNYXJrT2JqZWN0R2V0dGVy
ID0geworICAgIGdldCBoaWdoV2F0ZXJNYXJrKCkgeyByZXR1cm4gaGlnaFdhdGVyTWFyazsgfQor
ICB9OworICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignd293IScpOworICBjb25zdCBoaWdoV2F0
ZXJNYXJrT2JqZWN0R2V0dGVyVGhyb3dpbmcgPSB7CisgICAgZ2V0IGhpZ2hXYXRlck1hcmsoKSB7
IHRocm93IGVycm9yOyB9CisgIH07CisKKyAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICdUeXBlRXJy
b3InIH0sICgpID0+IG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSgpLCAnY29uc3RydWN0aW9uIGZh
aWxzIHdpdGggdW5kZWZpbmVkJyk7CisgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAnVHlwZUVycm9y
JyB9LCAoKSA9PiBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3kobnVsbCksICdjb25zdHJ1Y3Rpb24g
ZmFpbHMgd2l0aCBudWxsJyk7CisgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAnRXJyb3InIH0sICgp
ID0+IG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneShoaWdoV2F0ZXJNYXJrT2JqZWN0R2V0dGVyVGhy
b3dpbmcpLAorICAgICdjb25zdHJ1Y3Rpb24gZmFpbHMgd2l0aCBhbiBvYmplY3Qgd2l0aCBhIHRo
cm93aW5nIGhpZ2hXYXRlck1hcmsgZ2V0dGVyJyk7CisKKyAgLy8gU2hvdWxkIG5vdCBmYWlsOgor
ICBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koJ3BvdGF0bycpOworICBuZXcgQ291bnRRdWV1aW5n
U3RyYXRlZ3koe30pOworICBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koaGlnaFdhdGVyTWFya09i
amVjdEdldHRlcik7CisKK30sICdDb3VudFF1ZXVpbmdTdHJhdGVneSBjb25zdHJ1Y3RvciBiZWhh
dmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1bWVudHMnKTsKKworCit0ZXN0KCgpID0+
IHsKKworICBjb25zdCB0aGlzVmFsdWUgPSBudWxsOworICBjb25zdCBjaHVuayA9IHsKKyAgICBn
ZXQgYnl0ZUxlbmd0aCgpIHsKKyAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3Nob3VsZG5cJ3Qg
YmUgY2FsbGVkJyk7CisgICAgfQorICB9OworCisgIGFzc2VydF9lcXVhbHMoQ291bnRRdWV1aW5n
U3RyYXRlZ3kucHJvdG90eXBlLnNpemUuY2FsbCh0aGlzVmFsdWUsIGNodW5rKSwgMSk7CisKK30s
ICdDb3VudFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSBzaG91bGQgd29yayBnZW5lcmlj
YWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cycpOworCit0ZXN0KCgpID0+IHsKKwor
ICBjb25zdCBzaXplID0gMTAyNDsKKyAgY29uc3QgY2h1bmsgPSB7IGJ5dGVMZW5ndGg6IHNpemUg
fTsKKyAgY29uc3QgY2h1bmtHZXR0ZXIgPSB7CisgICAgZ2V0IGJ5dGVMZW5ndGgoKSB7IHJldHVy
biBzaXplOyB9CisgIH07CisgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCd3b3chJyk7CisgIGNv
bnN0IGNodW5rR2V0dGVyVGhyb3dpbmcgPSB7CisgICAgZ2V0IGJ5dGVMZW5ndGgoKSB7IHRocm93
IGVycm9yOyB9CisgIH07CisKKyAgYXNzZXJ0X2VxdWFscyhDb3VudFF1ZXVpbmdTdHJhdGVneS5w
cm90b3R5cGUuc2l6ZSgpLCAxLCAnc2l6ZSByZXR1cm5zIDEgd2l0aCB1bmRlZmluZWQnKTsKKyAg
YXNzZXJ0X2VxdWFscyhDb3VudFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZShudWxsKSwg
MSwgJ3NpemUgcmV0dXJucyAxIHdpdGggbnVsbCcpOworICBhc3NlcnRfZXF1YWxzKENvdW50UXVl
dWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKCdwb3RhdG8nKSwgMSwgJ3NpemUgcmV0dXJucyAx
IHdpdGggbm9uLW9iamVjdCB0eXBlJyk7CisgIGFzc2VydF9lcXVhbHMoQ291bnRRdWV1aW5nU3Ry
YXRlZ3kucHJvdG90eXBlLnNpemUoe30pLCAxLCAnc2l6ZSByZXR1cm5zIDEgd2l0aCBlbXB0eSBv
YmplY3QnKTsKKyAgYXNzZXJ0X2VxdWFscyhDb3VudFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUu
c2l6ZShjaHVuayksIDEsICdzaXplIHJldHVybnMgMSB3aXRoIGEgY2h1bmsnKTsKKyAgYXNzZXJ0
X2VxdWFscyhDb3VudFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZShjaHVua0dldHRlciks
IDEsICdzaXplIHJldHVybnMgMSB3aXRoIGNodW5rIGdldHRlcicpOworICBhc3NlcnRfZXF1YWxz
KENvdW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKGNodW5rR2V0dGVyVGhyb3dpbmcp
LCAxLAorICAgICdzaXplIHJldHVybnMgMSB3aXRoIGNodW5rIGdldHRlciB0aGF0IHRocm93cycp
OworCit9LCAnQ291bnRRdWV1aW5nU3RyYXRlZ3kgc2l6ZSBiZWhhdmVzIGFzIGV4cGVjdGVkIHdp
dGggc3RyYW5nZSBhcmd1bWVudHMnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3Qgc3RyYXRl
Z3kgPSBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0pOworCisg
IGFzc2VydF9vYmplY3RfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc3Ry
YXRlZ3ksICdoaWdoV2F0ZXJNYXJrJyksCisgICAgeyB2YWx1ZTogNCwgd3JpdGFibGU6IHRydWUs
IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9LAorICAgICdoaWdoV2F0ZXJN
YXJrIHByb3BlcnR5IHNob3VsZCBiZSBhIGRhdGEgcHJvcGVydHkgd2l0aCB0aGUgdmFsdWUgcGFz
c2VkIHRoZSBjb25zdHJ1Y3RvcicpOworICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBzdHJhdGVneS5z
aXplLCAnZnVuY3Rpb24nKTsKKworfSwgJ0NvdW50UXVldWluZ1N0cmF0ZWd5IGluc3RhbmNlcyBo
YXZlIHRoZSBjb3JyZWN0IHByb3BlcnRpZXMnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3Qg
c3RyYXRlZ3kgPSBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0p
OworICBhc3NlcnRfZXF1YWxzKHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmssIDQpOworCisgIHN0cmF0
ZWd5LmhpZ2hXYXRlck1hcmsgPSAxMDsKKyAgYXNzZXJ0X2VxdWFscyhzdHJhdGVneS5oaWdoV2F0
ZXJNYXJrLCAxMCk7CisKKyAgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayA9ICdiYW5hbmEnOworICBh
c3NlcnRfZXF1YWxzKHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmssICdiYW5hbmEnKTsKKworfSwgJ0Nv
dW50UXVldWluZ1N0cmF0ZWd5XCdzIGhpZ2hXYXRlck1hcmsgcHJvcGVydHkgY2FuIGJlIHNldCB0
byBhbnl0aGluZycpOworCitkb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3Ry
YXRlZ2llcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZmE4YWYzNDEyNjlhMjU0NDkzZTE1MGRlZDc0YWRlZDQ1MDgyZGI2
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDE4IEBACisKK1BBU1MgUmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBz
dHJhdGVneS5zaXplIGdldHRlciAKK1BBU1MgUmVhZGFibGUgc3RyZWFtOiBzdHJhdGVneS5zaXpl
IGVycm9ycyB0aGUgc3RyZWFtIGFuZCB0aGVuIHRocm93cyAKK1BBU1MgUmVhZGFibGUgc3RyZWFt
OiBzdHJhdGVneS5zaXplIGVycm9ycyB0aGUgc3RyZWFtIGFuZCB0aGVuIHJldHVybnMgSW5maW5p
dHkgCitQQVNTIFJlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBtZXRob2Qg
CitQQVNTIFJlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayBn
ZXR0ZXIgCitQQVNTIFJlYWRhYmxlIHN0cmVhbTogaW52YWxpZCBzdHJhdGVneS5oaWdoV2F0ZXJN
YXJrIAorUEFTUyBSZWFkYWJsZSBzdHJlYW06IGludmFsaWQgc3RyYXRlZ3kuc2l6ZSByZXR1cm4g
dmFsdWUgCitGQUlMIExvYWQgYmFkLXN0cmF0ZWdpZXMuanMgd2l0aCBTaGFyZWRXb3JrZXIgYXNz
ZXJ0X3VucmVhY2hlZDogU2hhcmVkV29ya2VyIGlzIHVuYXZhaWxhYmxlIFJlYWNoZWQgdW5yZWFj
aGFibGUgY29kZQorRkFJTCBVbnRpdGxlZCB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZh
bHVhdGluZyAnbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuZ2V0UmVnaXN0cmF0aW9uJykKK1BBU1Mg
UmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5zaXplIGdldHRlciAKK1BBU1MgUmVh
ZGFibGUgc3RyZWFtOiBzdHJhdGVneS5zaXplIGVycm9ycyB0aGUgc3RyZWFtIGFuZCB0aGVuIHRo
cm93cyAKK1BBU1MgUmVhZGFibGUgc3RyZWFtOiBzdHJhdGVneS5zaXplIGVycm9ycyB0aGUgc3Ry
ZWFtIGFuZCB0aGVuIHJldHVybnMgSW5maW5pdHkgCitQQVNTIFJlYWRhYmxlIHN0cmVhbTogdGhy
b3dpbmcgc3RyYXRlZ3kuc2l6ZSBtZXRob2QgCitQQVNTIFJlYWRhYmxlIHN0cmVhbTogdGhyb3dp
bmcgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayBnZXR0ZXIgCitQQVNTIFJlYWRhYmxlIHN0cmVhbTog
aW52YWxpZCBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIAorUEFTUyBSZWFkYWJsZSBzdHJlYW06IGlu
dmFsaWQgc3RyYXRlZ3kuc2l6ZSByZXR1cm4gdmFsdWUgCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2JhZC1zdHJhdGVnaWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRmYWI5MzEzMjM5Yjc3Yzc2NmE5MzIyYjQzNDFlZmM1M2MyNmRiZmUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5odG1sCkBAIC0wLDAg
KzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVy
LmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9ImJhZC1zdHJhdGVnaWVzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7Cit3b3JrZXJfdGVzdCgnYmFkLXN0cmF0ZWdpZXMu
anMnKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMu
anMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzA1M2FiNjJi
Y2ZlMjFlNDJjNTViMjBiYmNiYWFlMjI2YmFmOGI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvYmFkLXN0cmF0ZWdpZXMuanMKQEAgLTAsMCArMSwxNzUgQEAKKyd1c2Ugc3RyaWN0JzsK
KworaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgeworICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMnKTsKK30KKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgdGhl
RXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOworCisgIGFzc2VydF90aHJvd3Mo
dGhlRXJyb3IsICgpID0+IHsKKyAgICBuZXcgUmVhZGFibGVTdHJlYW0oe30sIHsKKyAgICAgIGdl
dCBzaXplKCkgeworICAgICAgICB0aHJvdyB0aGVFcnJvcjsKKyAgICAgIH0sCisgICAgICBoaWdo
V2F0ZXJNYXJrOiA1CisgICAgfSk7CisgIH0sICdjb25zdHJ1Y3Rpb24gc2hvdWxkIHJlLXRocm93
IHRoZSBlcnJvcicpOworCit9LCAnUmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5z
aXplIGdldHRlcicpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgY29udHJvbGxl
ckVycm9yID0geyBuYW1lOiAnY29udHJvbGxlciBlcnJvcicgfTsKKyAgY29uc3QgdGhyb3duRXJy
b3IgPSB7IG5hbWU6ICd0aHJvd24gZXJyb3InIH07CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNv
bnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAorICAgIHsKKyAgICAgIHN0YXJ0KGMpIHsKKyAg
ICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICBzaXpl
KCkgeworICAgICAgICBjb250cm9sbGVyLmVycm9yKGNvbnRyb2xsZXJFcnJvcik7CisgICAgICAg
IHRocm93IHRocm93bkVycm9yOworICAgICAgfSwKKyAgICAgIGhpZ2hXYXRlck1hcms6IDUKKyAg
ICB9CisgICk7CisKKyAgYXNzZXJ0X3Rocm93cyh0aHJvd25FcnJvciwgKCkgPT4gY29udHJvbGxl
ci5lbnF1ZXVlKCdhJyksICdlbnF1ZXVlIHNob3VsZCByZS10aHJvdyB0aGUgZXJyb3InKTsKKwor
ICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGNvbnRyb2xsZXJFcnJvciwgcnMuZ2V0UmVhZGVy
KCkuY2xvc2VkKTsKKworfSwgJ1JlYWRhYmxlIHN0cmVhbTogc3RyYXRlZ3kuc2l6ZSBlcnJvcnMg
dGhlIHN0cmVhbSBhbmQgdGhlbiB0aHJvd3MnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisg
IGNvbnN0IHRoZUVycm9yID0geyBuYW1lOiAnbXkgZXJyb3InIH07CisKKyAgbGV0IGNvbnRyb2xs
ZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAorICAgIHsKKyAgICAgIHN0YXJ0
KGMpIHsKKyAgICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICB9CisgICAgfSwKKyAgICB7Cisg
ICAgICBzaXplKCkgeworICAgICAgICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKKyAgICAg
ICAgcmV0dXJuIEluZmluaXR5OworICAgICAgfSwKKyAgICAgIGhpZ2hXYXRlck1hcms6IDUKKyAg
ICB9CisgICk7CisKKyAgYXNzZXJ0X3Rocm93cyhuZXcgUmFuZ2VFcnJvcigpLCAoKSA9PiBjb250
cm9sbGVyLmVucXVldWUoJ2EnKSwgJ2VucXVldWUgc2hvdWxkIHRocm93IGEgUmFuZ2VFcnJvcicp
OworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJzLmdldFJlYWRlcigp
LmNsb3NlZCwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7CisKK30sICdS
ZWFkYWJsZSBzdHJlYW06IHN0cmF0ZWd5LnNpemUgZXJyb3JzIHRoZSBzdHJlYW0gYW5kIHRoZW4g
cmV0dXJucyBJbmZpbml0eScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHRo
ZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKKyAgY29uc3QgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oCisgICAgeworICAgICAgc3RhcnQoYykgeworICAgICAgICBhc3NlcnRf
dGhyb3dzKHRoZUVycm9yLCAoKSA9PiBjLmVucXVldWUoJ2EnKSwgJ2VucXVldWUgc2hvdWxkIHRo
cm93IHRoZSBlcnJvcicpOworICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgc2l6ZSgpIHsK
KyAgICAgICAgdGhyb3cgdGhlRXJyb3I7CisgICAgICB9LAorICAgICAgaGlnaFdhdGVyTWFyazog
NQorICAgIH0KKyAgKTsKKworICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLmNhdGNoKGUg
PT4geworICAgIGFzc2VydF9lcXVhbHMoZSwgdGhlRXJyb3IsICdjbG9zZWQgc2hvdWxkIHJlamVj
dCB3aXRoIHRoZSBlcnJvcicpOworICB9KTsKKworfSwgJ1JlYWRhYmxlIHN0cmVhbTogdGhyb3dp
bmcgc3RyYXRlZ3kuc2l6ZSBtZXRob2QnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgdGhl
RXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOworCisgIGFzc2VydF90aHJvd3Mo
dGhlRXJyb3IsICgpID0+IHsKKyAgICBuZXcgUmVhZGFibGVTdHJlYW0oe30sIHsKKyAgICAgIHNp
emUoKSB7CisgICAgICAgIHJldHVybiAxOworICAgICAgfSwKKyAgICAgIGdldCBoaWdoV2F0ZXJN
YXJrKCkgeworICAgICAgICB0aHJvdyB0aGVFcnJvcjsKKyAgICAgIH0KKyAgICB9KTsKKyAgfSwg
J2NvbnN0cnVjdGlvbiBzaG91bGQgcmUtdGhyb3cgdGhlIGVycm9yJyk7CisKK30sICdSZWFkYWJs
ZSBzdHJlYW06IHRocm93aW5nIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgZ2V0dGVyJyk7CisKK3Rl
c3QoKCkgPT4geworCisgIGZvciAoY29uc3QgaGlnaFdhdGVyTWFyayBvZiBbLTEsIC1JbmZpbml0
eV0pIHsKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBSYW5nZUVycm9yKCksICgpID0+IHsKKyAgICAg
IG5ldyBSZWFkYWJsZVN0cmVhbSh7fSwgeworICAgICAgICBzaXplKCkgeworICAgICAgICAgIHJl
dHVybiAxOworICAgICAgICB9LAorICAgICAgICBoaWdoV2F0ZXJNYXJrCisgICAgICB9KTsKKyAg
ICB9LCAnY29uc3RydWN0aW9uIHNob3VsZCB0aHJvdyBhIFJhbmdlRXJyb3IgZm9yICcgKyBoaWdo
V2F0ZXJNYXJrKTsKKyAgfQorCisgIGZvciAoY29uc3QgaGlnaFdhdGVyTWFyayBvZiBbTmFOLCAn
Zm9vJywge31dKSB7CisgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHsK
KyAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7fSwgeworICAgICAgICBzaXplKCkgeworICAgICAg
ICAgIHJldHVybiAxOworICAgICAgICB9LAorICAgICAgICBoaWdoV2F0ZXJNYXJrCisgICAgICB9
KTsKKyAgICB9LCAnY29uc3RydWN0aW9uIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciBmb3IgJyAr
IGhpZ2hXYXRlck1hcmspOworICB9CisKK30sICdSZWFkYWJsZSBzdHJlYW06IGludmFsaWQgc3Ry
YXRlZ3kuaGlnaFdhdGVyTWFyaycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0
IHByb21pc2VzID0gW107CisgIGZvciAoY29uc3Qgc2l6ZSBvZiBbTmFOLCAtSW5maW5pdHksIElu
ZmluaXR5LCAtMV0pIHsKKyAgICBsZXQgdGhlRXJyb3I7CisgICAgY29uc3QgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oCisgICAgICB7CisgICAgICAgIHN0YXJ0KGMpIHsKKyAgICAgICAgICB0cnkg
eworICAgICAgICAgICAgYy5lbnF1ZXVlKCdoaScpOworICAgICAgICAgICAgYXNzZXJ0X3VucmVh
Y2hlZCgnZW5xdWV1ZSBkaWRuXCd0IHRocm93Jyk7CisgICAgICAgICAgfSBjYXRjaCAoZXJyb3Ip
IHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXJyb3IubmFtZSwgJ1JhbmdlRXJyb3InLCAn
ZW5xdWV1ZSBzaG91bGQgdGhyb3cgYSBSYW5nZUVycm9yIGZvciAnICsgc2l6ZSk7CisgICAgICAg
ICAgICB0aGVFcnJvciA9IGVycm9yOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwK
KyAgICAgIHsKKyAgICAgICAgc2l6ZSgpIHsKKyAgICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICAg
ICAgfSwKKyAgICAgICAgaGlnaFdhdGVyTWFyazogNQorICAgICAgfQorICAgICk7CisKKyAgICBw
cm9taXNlcy5wdXNoKHJzLmdldFJlYWRlcigpLmNsb3NlZC5jYXRjaChlID0+IHsKKyAgICAgIGFz
c2VydF9lcXVhbHMoZSwgdGhlRXJyb3IsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBl
cnJvciBmb3IgJyArIHNpemUpOworICAgIH0pKTsKKyAgfQorCisgIHJldHVybiBQcm9taXNlLmFs
bChwcm9taXNlcyk7CisKK30sICdSZWFkYWJsZSBzdHJlYW06IGludmFsaWQgc3RyYXRlZ3kuc2l6
ZSByZXR1cm4gdmFsdWUnKTsKKworZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFk
LXVuZGVybHlpbmctc291cmNlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJs
eWluZy1zb3VyY2VzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOWNmY2E1Yjc2MGM0MTE5NDE1
MWU3ODYyZjg0ZDVhN2IwNmQxNWYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFk
LXVuZGVybHlpbmctc291cmNlcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0NiBAQAorCitQQVNT
IFVuZGVybHlpbmcgc291cmNlIHN0YXJ0OiB0aHJvd2luZyBnZXR0ZXIgCitQQVNTIFVuZGVybHlp
bmcgc291cmNlIHN0YXJ0OiB0aHJvd2luZyBtZXRob2QgCitQQVNTIFVuZGVybHlpbmcgc291cmNl
OiB0aHJvd2luZyBwdWxsIGdldHRlciAoaW5pdGlhbCBwdWxsKSAKK1BBU1MgVW5kZXJseWluZyBz
b3VyY2U6IHRocm93aW5nIHB1bGwgbWV0aG9kIChpbml0aWFsIHB1bGwpIAorUEFTUyBVbmRlcmx5
aW5nIHNvdXJjZSBwdWxsOiB0aHJvd2luZyBnZXR0ZXIgKHNlY29uZCBwdWxsKSAKK1BBU1MgVW5k
ZXJseWluZyBzb3VyY2UgcHVsbDogdGhyb3dpbmcgbWV0aG9kIChzZWNvbmQgcHVsbCkgCitQQVNT
IFVuZGVybHlpbmcgc291cmNlIGNhbmNlbDogdGhyb3dpbmcgZ2V0dGVyIAorUEFTUyBVbmRlcmx5
aW5nIHNvdXJjZSBjYW5jZWw6IHRocm93aW5nIG1ldGhvZCAKK1BBU1MgVW5kZXJseWluZyBzb3Vy
Y2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBlbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5v
dCB0aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhIG5v
bi1lbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdyAKK1BBU1MgVW5kZXJseWlu
ZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhIGNsb3NlZCBzdHJlYW0gc2hvdWxkIHRocm93
IAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGFuIGVycm9yZWQg
c3RyZWFtIHNob3VsZCB0aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xv
c2UgdHdpY2Ugb24gYW4gZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUg
CitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGEgbm9uLWVt
cHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lIAorUEFTUyBVbmRlcmx5aW5n
IHNvdXJjZTogY2FsbGluZyBjbG9zZSBvbiBhbiBlbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxk
IG5vdCB0aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24gYSBu
b24tZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cgCitQQVNTIFVuZGVybHlp
bmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIGFmdGVyIGVycm9yIHNob3VsZCB0aHJvdyAKK1BBU1Mg
VW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgdHdpY2Ugc2hvdWxkIHRocm93IHRoZSBz
ZWNvbmQgdGltZSAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYWZ0ZXIg
Y2xvc2Ugc2hvdWxkIHRocm93IAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJv
ciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHN0YXJ0IHNob3VsZCBjYXVz
ZSB0aGUgc3RyZWFtIHRvIGVycm9yIHdpdGggdGhlIGZpcnN0IGVycm9yIAorUEFTUyBVbmRlcmx5
aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlz
ZSBmcm9tIHB1bGwgc2hvdWxkIGNhdXNlIHRoZSBzdHJlYW0gdG8gZXJyb3Igd2l0aCB0aGUgZmly
c3QgZXJyb3IgCitGQUlMIExvYWQgYmFkLXVuZGVybHlpbmctc291cmNlcy5qcyB3aXRoIFNoYXJl
ZFdvcmtlciBhc3NlcnRfdW5yZWFjaGVkOiBTaGFyZWRXb3JrZXIgaXMgdW5hdmFpbGFibGUgUmVh
Y2hlZCB1bnJlYWNoYWJsZSBjb2RlCitGQUlMIFVudGl0bGVkIHVuZGVmaW5lZCBpcyBub3QgYW4g
b2JqZWN0IChldmFsdWF0aW5nICduYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdpc3RyYXRp
b24nKQorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dpbmcgZ2V0dGVyIAorUEFT
UyBVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dpbmcgbWV0aG9kIAorUEFTUyBVbmRlcmx5
aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBnZXR0ZXIgKGluaXRpYWwgcHVsbCkgCitQQVNTIFVu
ZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIG1ldGhvZCAoaW5pdGlhbCBwdWxsKSAKK1BB
U1MgVW5kZXJseWluZyBzb3VyY2UgcHVsbDogdGhyb3dpbmcgZ2V0dGVyIChzZWNvbmQgcHVsbCkg
CitQQVNTIFVuZGVybHlpbmcgc291cmNlIHB1bGw6IHRocm93aW5nIG1ldGhvZCAoc2Vjb25kIHB1
bGwpIAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBjYW5jZWw6IHRocm93aW5nIGdldHRlciAKK1BB
U1MgVW5kZXJseWluZyBzb3VyY2UgY2FuY2VsOiB0aHJvd2luZyBtZXRob2QgCitQQVNTIFVuZGVy
bHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYW4gZW1wdHkgY2FuY2VsZWQgc3RyZWFt
IHNob3VsZCBub3QgdGhyb3cgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVl
dWUgb24gYSBub24tZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cgCitQQVNT
IFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYSBjbG9zZWQgc3RyZWFtIHNo
b3VsZCB0aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBh
biBlcnJvcmVkIHN0cmVhbSBzaG91bGQgdGhyb3cgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBj
YWxsaW5nIGNsb3NlIHR3aWNlIG9uIGFuIGVtcHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNl
Y29uZCB0aW1lIAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSB0d2ljZSBv
biBhIG5vbi1lbXB0eSBzdHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGltZSAKK1BBU1Mg
VW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24gYW4gZW1wdHkgY2FuY2VsZWQgc3Ry
ZWFtIHNob3VsZCBub3QgdGhyb3cgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNs
b3NlIG9uIGEgbm9uLWVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93IAorUEFT
UyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBhZnRlciBlcnJvciBzaG91bGQgdGhy
b3cgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9yIHR3aWNlIHNob3VsZCB0
aHJvdyB0aGUgc2Vjb25kIHRpbWUgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVy
cm9yIGFmdGVyIGNsb3NlIHNob3VsZCB0aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNh
bGxpbmcgZXJyb3IgYW5kIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgZnJvbSBzdGFydCBz
aG91bGQgY2F1c2UgdGhlIHN0cmVhbSB0byBlcnJvciB3aXRoIHRoZSBmaXJzdCBlcnJvciAKK1BB
U1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYW5kIHJldHVybmluZyBhIHJlamVj
dGVkIHByb21pc2UgZnJvbSBwdWxsIHNob3VsZCBjYXVzZSB0aGUgc3RyZWFtIHRvIGVycm9yIHdp
dGggdGhlIGZpcnN0IGVycm9yIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJs
eWluZy1zb3VyY2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZWNiMTFmZWFiMTJjNDc2YzQ3MWZkMmRjNWRiZmIzMGQ5ZDdkZmI1Ngot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuaHRt
bApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvdGVz
dC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC1p
bml0aWFsaXplci5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSJiYWQtdW5kZXJseWluZy1z
b3VyY2VzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7Cit3b3JrZXJfdGVz
dCgnYmFkLXVuZGVybHlpbmctc291cmNlcy5qcycpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVu
ZGVybHlpbmctc291cmNlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMmZkMGZkYzkyOTlkNWQ1ZGU0ZjU2Mjhk
ZDE5ZDU5ZmQyOTMwMGRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVy
bHlpbmctc291cmNlcy5qcwpAQCAtMCwwICsxLDM4MyBAQAorJ3VzZSBzdHJpY3QnOworCitpZiAo
c2VsZi5pbXBvcnRTY3JpcHRzKSB7CisgIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcycpOworfQorCisKK3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHRoZUVycm9y
ID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKKworICBhc3NlcnRfdGhyb3dzKHRoZUVy
cm9yLCAoKSA9PiB7CisgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgIGdldCBzdGFydCgp
IHsKKyAgICAgICAgdGhyb3cgdGhlRXJyb3I7CisgICAgICB9CisgICAgfSk7CisgIH0sICdjb25z
dHJ1Y3RpbmcgdGhlIHN0cmVhbSBzaG91bGQgcmUtdGhyb3cgdGhlIGVycm9yJyk7CisKK30sICdV
bmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dpbmcgZ2V0dGVyJyk7CisKKwordGVzdCgoKSA9
PiB7CisKKyAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwor
CisgIGFzc2VydF90aHJvd3ModGhlRXJyb3IsICgpID0+IHsKKyAgICBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgICAgc3RhcnQoKSB7CisgICAgICAgIHRocm93IHRoZUVycm9yOworICAgICAgfQor
ICAgIH0pOworICB9LCAnY29uc3RydWN0aW5nIHRoZSBzdHJlYW0gc2hvdWxkIHJlLXRocm93IHRo
ZSBlcnJvcicpOworCit9LCAnVW5kZXJseWluZyBzb3VyY2Ugc3RhcnQ6IHRocm93aW5nIG1ldGhv
ZCcpOworCisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9IG5ldyBF
cnJvcignYSB1bmlxdWUgc3RyaW5nJyk7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKKyAgICBnZXQgcHVsbCgpIHsKKyAgICAgIHRocm93IHRoZUVycm9yOworICAgIH0KKyAgfSk7
CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcnMuZ2V0UmVhZGVyKCku
Y2xvc2VkKTsKKworfSwgJ1VuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIGdldHRlciAo
aW5pdGlhbCBwdWxsKScpOworCisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCB0aGVF
cnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7CisgIGNvbnN0IHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKCkgeworICAgICAgdGhyb3cgdGhlRXJyb3I7CisgICAg
fQorICB9KTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCBycy5nZXRS
ZWFkZXIoKS5jbG9zZWQpOworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwg
bWV0aG9kIChpbml0aWFsIHB1bGwpJyk7CisKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNv
bnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKKworICBsZXQgY291
bnRlciA9IDA7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBnZXQgcHVs
bCgpIHsKKyAgICAgICsrY291bnRlcjsKKyAgICAgIGlmIChjb3VudGVyID09PSAxKSB7CisgICAg
ICAgIHJldHVybiBjID0+IGMuZW5xdWV1ZSgnYScpOworICAgICAgfQorCisgICAgICB0aHJvdyB0
aGVFcnJvcjsKKyAgICB9CisgIH0pOworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsK
KworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsK
KyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2Ug
fSwgJ3RoZSBjaHVuayByZWFkIHNob3VsZCBiZSBjb3JyZWN0Jyk7CisgICAgfSksCisgICAgcHJv
bWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIuY2xvc2VkKQorICBdKTsKKworfSwgJ1Vu
ZGVybHlpbmcgc291cmNlIHB1bGw6IHRocm93aW5nIGdldHRlciAoc2Vjb25kIHB1bGwpJyk7CisK
KworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdh
IHVuaXF1ZSBzdHJpbmcnKTsKKworICBsZXQgY291bnRlciA9IDA7CisgIGNvbnN0IHJzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKGMpIHsKKyAgICAgICsrY291bnRlcjsKKyAgICAg
IGlmIChjb3VudGVyID09PSAxKSB7CisgICAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAgICBy
ZXR1cm47CisgICAgICB9CisKKyAgICAgIHRocm93IHRoZUVycm9yOworICAgIH0KKyAgfSk7Cisg
IGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIHJldHVybiBQcm9taXNlLmFsbChb
CisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVh
bHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAndGhlIGNodW5rIHJlYWQgc2hvdWxk
IGJlIGNvcnJlY3QnKTsKKyAgICB9KSwKKyAgICBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3Is
IHJlYWRlci5jbG9zZWQpCisgIF0pOworCit9LCAnVW5kZXJseWluZyBzb3VyY2UgcHVsbDogdGhy
b3dpbmcgbWV0aG9kIChzZWNvbmQgcHVsbCknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisg
IGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKKyAgY29uc3Qg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIGdldCBjYW5jZWwoKSB7CisgICAgICB0aHJv
dyB0aGVFcnJvcjsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwg
dGhlRXJyb3IsIHJzLmNhbmNlbCgpKTsKKworfSwgJ1VuZGVybHlpbmcgc291cmNlIGNhbmNlbDog
dGhyb3dpbmcgZ2V0dGVyJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCB0aGVF
cnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7CisgIGNvbnN0IHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKKyAgICBjYW5jZWwoKSB7CisgICAgICB0aHJvdyB0aGVFcnJvcjsKKyAg
ICB9CisgIH0pOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJzLmNh
bmNlbCgpKTsKKworfSwgJ1VuZGVybHlpbmcgc291cmNlIGNhbmNlbDogdGhyb3dpbmcgbWV0aG9k
Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9s
bGVyID0gYzsKKyAgICB9CisgIH0pOworCisgIHJzLmNhbmNlbCgpOworICBjb250cm9sbGVyLmVu
cXVldWUoJ2EnKTsgLy8gQ2FsbGluZyBlbnF1ZXVlIGFmdGVyIGNhbmNlbGluZyBzaG91bGQgbm90
IHRocm93IGFueXRoaW5nLgorCisgIHJldHVybiBycy5nZXRSZWFkZXIoKS5jbG9zZWQ7CisKK30s
ICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGFuIGVtcHR5IGNhbmNlbGVk
IHN0cmVhbSBzaG91bGQgbm90IHRocm93Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAg
bGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBz
dGFydChjKSB7CisgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICAgIGMuZW5xdWV1ZSgnYicpOwor
ICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKworICBycy5jYW5jZWwoKTsKKyAg
Y29udHJvbGxlci5lbnF1ZXVlKCdjJyk7IC8vIENhbGxpbmcgZW5xdWV1ZSBhZnRlciBjYW5jZWxp
bmcgc2hvdWxkIG5vdCB0aHJvdyBhbnl0aGluZy4KKworICByZXR1cm4gcnMuZ2V0UmVhZGVyKCku
Y2xvc2VkOworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhIG5v
bi1lbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdycpOworCitwcm9taXNlX3Rl
c3QoKCkgPT4geworCisgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMp
IHsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigp
LCAoKSA9PiBjLmVucXVldWUoJ2EnKSwgJ2NhbGwgdG8gZW5xdWV1ZSBzaG91bGQgdGhyb3cgYSBU
eXBlRXJyb3InKTsKKyAgICB9CisgIH0pLmdldFJlYWRlcigpLmNsb3NlZDsKKworfSwgJ1VuZGVy
bHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYSBjbG9zZWQgc3RyZWFtIHNob3VsZCB0
aHJvdycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgdGhlRXJyb3IgPSBuZXcg
RXJyb3IoJ2JvbycpOworICBjb25zdCBjbG9zZWQgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAg
IHN0YXJ0KGMpIHsKKyAgICAgIGMuZXJyb3IodGhlRXJyb3IpOworICAgICAgYXNzZXJ0X3Rocm93
cyh0aGVFcnJvciwgKCkgPT4gYy5lbnF1ZXVlKCdhJyksICdjYWxsIHRvIGVucXVldWUgc2hvdWxk
IHRocm93IHRoZSBlcnJvcicpOworICAgIH0KKyAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOworCisg
IHJldHVybiBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIGNsb3NlZCk7CisKK30sICdVbmRl
cmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGFuIGVycm9yZWQgc3RyZWFtIHNob3Vs
ZCB0aHJvdycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIHJldHVybiBuZXcgUmVhZGFi
bGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICAgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjLmNsb3NlKCksICdzZWNvbmQgY2FsbCB0
byBjbG9zZSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKKyAgICB9CisgIH0pLmdldFJlYWRl
cigpLmNsb3NlZDsKKworfSwgJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNl
IG9uIGFuIGVtcHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lJyk7CisKK3By
b21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisgIGxldCBy
ZWFkQ2FsbGVkID0gZmFsc2U7CisgIGNvbnN0IHJlYWRlciA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgICBjLmNsb3NlKCk7
CisgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gYy5jbG9zZSgpLCAn
c2Vjb25kIGNhbGwgdG8gY2xvc2Ugc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7CisgICAgICBz
dGFydENhbGxlZCA9IHRydWU7CisgICAgfQorICB9KS5nZXRSZWFkZXIoKTsKKworICByZXR1cm4g
UHJvbWlzZS5hbGwoWworICAgIHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKKyAgICAgIGFzc2Vy
dF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3JlYWQoKSBz
aG91bGQgcmVhZCB0aGUgZW5xdWV1ZWQgY2h1bmsnKTsKKyAgICAgIHJlYWRDYWxsZWQgPSB0cnVl
OworICAgIH0pLAorICAgIHJlYWRlci5jbG9zZWQudGhlbigoKSA9PiB7CisgICAgICBhc3NlcnRf
dHJ1ZShzdGFydENhbGxlZCk7CisgICAgICBhc3NlcnRfdHJ1ZShyZWFkQ2FsbGVkKTsKKyAgICB9
KQorICBdKTsKKworfSwgJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9u
IGEgbm9uLWVtcHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lJyk7CisKK3By
b21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGxldCBzdGFydENhbGxl
ZCA9IGZhbHNlOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQo
YykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICBzdGFydENhbGxlZCA9IHRydWU7Cisg
ICAgfQorICB9KTsKKworICBycy5jYW5jZWwoKTsKKyAgY29udHJvbGxlci5jbG9zZSgpOyAvLyBD
YWxsaW5nIGNsb3NlIGFmdGVyIGNhbmNlbGluZyBzaG91bGQgbm90IHRocm93IGFueXRoaW5nLgor
CisgIHJldHVybiBycy5nZXRSZWFkZXIoKS5jbG9zZWQudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0
X3RydWUoc3RhcnRDYWxsZWQpOworICB9KTsKKworfSwgJ1VuZGVybHlpbmcgc291cmNlOiBjYWxs
aW5nIGNsb3NlIG9uIGFuIGVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93Jyk7
CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGxldCBzdGFy
dENhbGxlZCA9IGZhbHNlOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAg
c3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICBjLmVucXVldWUoJ2EnKTsK
KyAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKKyAgICB9CisgIH0pOworCisgIHJzLmNhbmNlbCgp
OworICBjb250cm9sbGVyLmNsb3NlKCk7IC8vIENhbGxpbmcgY2xvc2UgYWZ0ZXIgY2FuY2VsaW5n
IHNob3VsZCBub3QgdGhyb3cgYW55dGhpbmcuCisKKyAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNs
b3NlZC50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7CisgIH0pOwor
Cit9LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24gYSBub24tZW1wdHkgY2Fu
Y2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsK
KworICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYm9vJyk7CisgIGxldCBzdGFydENhbGxl
ZCA9IGZhbHNlOworCisgIGNvbnN0IGNsb3NlZCA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAg
c3RhcnQoYykgeworICAgICAgYy5lcnJvcih0aGVFcnJvcik7CisgICAgICBhc3NlcnRfdGhyb3dz
KG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gYy5jbG9zZSgpLCAnY2FsbCB0byBjbG9zZSBzaG91bGQg
dGhyb3cgYSBUeXBlRXJyb3InKTsKKyAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKKyAgICB9Cisg
IH0pLmdldFJlYWRlcigpLmNsb3NlZDsKKworICByZXR1cm4gY2xvc2VkLmNhdGNoKGUgPT4gewor
ICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKKyAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVy
cm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKKyAgfSk7CisKK30s
ICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBhZnRlciBlcnJvciBzaG91bGQgdGhy
b3cnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9IG5ldyBF
cnJvcignYm9vJyk7CisgIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOworCisgIGNvbnN0IGNsb3Nl
ZCA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lcnJvcih0
aGVFcnJvcik7CisgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gYy5l
cnJvcigpLCAnc2Vjb25kIGNhbGwgdG8gZXJyb3Igc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7
CisgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgfQorICB9KS5nZXRSZWFkZXIoKS5jbG9z
ZWQ7CisKKyAgcmV0dXJuIGNsb3NlZC5jYXRjaChlID0+IHsKKyAgICBhc3NlcnRfdHJ1ZShzdGFy
dENhbGxlZCk7CisgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ2Nsb3NlZCBzaG91bGQg
cmVqZWN0IHdpdGggdGhlIGVycm9yJyk7CisgIH0pOworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6
IGNhbGxpbmcgZXJyb3IgdHdpY2Ugc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGltZScpOworCitw
cm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOworCisgIGNv
bnN0IGNsb3NlZCA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAg
Yy5jbG9zZSgpOworICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGMu
ZXJyb3IoKSwgJ3NlY29uZCBjYWxsIHRvIGVycm9yIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicp
OworICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOworICAgIH0KKyAgfSkuZ2V0UmVhZGVyKCkuY2xv
c2VkOworCisgIHJldHVybiBjbG9zZWQudGhlbigoKSA9PiBhc3NlcnRfdHJ1ZShzdGFydENhbGxl
ZCkpOworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYWZ0ZXIgY2xvc2Ug
c2hvdWxkIHRocm93Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHN0YXJ0Q2Fs
bGVkID0gZmFsc2U7CisgIGNvbnN0IGZpcnN0RXJyb3IgPSBuZXcgRXJyb3IoJzEnKTsKKyAgY29u
c3Qgc2Vjb25kRXJyb3IgPSBuZXcgRXJyb3IoJzInKTsKKworICBjb25zdCBjbG9zZWQgPSBuZXcg
UmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZXJyb3IoZmlyc3RFcnJv
cik7CisgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgICByZXR1cm4gUHJvbWlzZS5yZWpl
Y3Qoc2Vjb25kRXJyb3IpOworICAgIH0KKyAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOworCisgIHJl
dHVybiBjbG9zZWQuY2F0Y2goZSA9PiB7CisgICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOwor
ICAgIGFzc2VydF9lcXVhbHMoZSwgZmlyc3RFcnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdp
dGggdGhlIGZpcnN0IGVycm9yJyk7CisgIH0pOworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6IGNh
bGxpbmcgZXJyb3IgYW5kIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgZnJvbSBzdGFydCBz
aG91bGQgY2F1c2UgdGhlIHN0cmVhbSB0byBlcnJvciAnICsKKyAgICd3aXRoIHRoZSBmaXJzdCBl
cnJvcicpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBzdGFydENhbGxlZCA9IGZh
bHNlOworICBjb25zdCBmaXJzdEVycm9yID0gbmV3IEVycm9yKCcxJyk7CisgIGNvbnN0IHNlY29u
ZEVycm9yID0gbmV3IEVycm9yKCcyJyk7CisKKyAgY29uc3QgY2xvc2VkID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKKyAgICBwdWxsKGMpIHsKKyAgICAgIGMuZXJyb3IoZmlyc3RFcnJvcik7CisgICAg
ICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoc2Vjb25k
RXJyb3IpOworICAgIH0KKyAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOworCisgIHJldHVybiBjbG9z
ZWQuY2F0Y2goZSA9PiB7CisgICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOworICAgIGFzc2Vy
dF9lcXVhbHMoZSwgZmlyc3RFcnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGZp
cnN0IGVycm9yJyk7CisgIH0pOworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJy
b3IgYW5kIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgZnJvbSBwdWxsIHNob3VsZCBjYXVz
ZSB0aGUgc3RyZWFtIHRvIGVycm9yICcgKworICAgJ3dpdGggdGhlIGZpcnN0IGVycm9yJyk7CisK
K2RvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3
NmUwNjg2YWZjYWViYzkzZjJlNDgxZTBmMTU4Mjk3ZjUzNzExMWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3MtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzQgQEAK
KworUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBpbmRp
cmVjdGx5IAorUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgY29uc3Ry
dWN0b3IgaW5kaXJlY3RseSAKK1BBU1MgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmNhbmNlbCBl
bmZvcmNlcyBhIGJyYW5kIGNoZWNrIAorUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuZ2V0
UmVhZGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCitQQVNTIFJlYWRhYmxlU3RyZWFtLnByb3Rv
dHlwZS50ZWUgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKK1BBU1MgUmVhZGFibGVTdHJlYW1SZWFk
ZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjayBvbiBpdHMgYXJndW1lbnQgCitQQVNTIFJlYWRhYmxl
U3RyZWFtUmVhZGVyLnByb3RvdHlwZS5jbG9zZWQgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKK1BB
U1MgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBhIGJyYW5k
IGNoZWNrIAorUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVhZCBlbmZvcmNl
cyBhIGJyYW5kIGNoZWNrIAorUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVs
ZWFzZUxvY2sgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKK1BBU1MgUmVhZGFibGVTdHJlYW1Db250
cm9sbGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50IAorUEFTUyBSZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXIgY2FuJ3QgYmUgZ2l2ZW4gYSBmdWxseS1jb25zdHJ1Y3RlZCBS
ZWFkYWJsZVN0cmVhbSAKK1BBU1MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5j
bG9zZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAorUEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIucHJvdG90eXBlLmVucXVldWUgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKK1BBU1MgUmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5lcnJvciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNr
IAorRkFJTCBMb2FkIGJyYW5kLWNoZWNrcy5qcyB3aXRoIFNoYXJlZFdvcmtlciBhc3NlcnRfdW5y
ZWFjaGVkOiBTaGFyZWRXb3JrZXIgaXMgdW5hdmFpbGFibGUgUmVhY2hlZCB1bnJlYWNoYWJsZSBj
b2RlCitGQUlMIFVudGl0bGVkIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5n
ICduYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdpc3RyYXRpb24nKQorUEFTUyBDYW4gZ2V0
IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5IAorUEFTUyBD
YW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgY29uc3RydWN0b3IgaW5kaXJlY3Rs
eSAKK1BBU1MgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBhIGJyYW5k
IGNoZWNrIAorUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuZ2V0UmVhZGVyIGVuZm9yY2Vz
IGEgYnJhbmQgY2hlY2sgCitQQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS50ZWUgZW5mb3Jj
ZXMgYSBicmFuZCBjaGVjayAKK1BBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIgZW5mb3JjZXMgYSBi
cmFuZCBjaGVjayBvbiBpdHMgYXJndW1lbnQgCitQQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnBy
b3RvdHlwZS5jbG9zZWQgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKK1BBU1MgUmVhZGFibGVTdHJl
YW1SZWFkZXIucHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAorUEFTUyBS
ZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVhZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNr
IAorUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVsZWFzZUxvY2sgZW5mb3Jj
ZXMgYSBicmFuZCBjaGVjayAKK1BBU1MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIGVuZm9yY2Vz
IGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50IAorUEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXIgY2FuJ3QgYmUgZ2l2ZW4gYSBmdWxseS1jb25zdHJ1Y3RlZCBSZWFkYWJsZVN0cmVhbSAK
K1BBU1MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5jbG9zZSBlbmZvcmNlcyBh
IGJyYW5kIGNoZWNrIAorUEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLmVu
cXVldWUgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKK1BBU1MgUmVhZGFibGVTdHJlYW1Db250cm9s
bGVyLnByb3RvdHlwZS5lcnJvciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3MuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNr
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjlkZmVkMTIzZDc2ZGI4N2Y3YjMyMDE5Y2MxNjNiMzM0MmYxYTJk
OGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3MuaHRtbApAQCAt
MCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvdGVzdC1oZWxw
ZXJzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC1pbml0aWFs
aXplci5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iYnJhbmQtY2hlY2tzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CisndXNlIHN0cmljdCc7Cit3b3JrZXJfdGVzdCgnYnJhbmQtY2hlY2tzLmpzJyk7
Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5qcyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMjU1M2NmOTJmNTJmZDZkYzBl
NzIzYmFmNmY3M2Q3M2VlYjhmNWYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYnJh
bmQtY2hlY2tzLmpzCkBAIC0wLDAgKzEsMTUxIEBACisndXNlIHN0cmljdCc7CisKK2lmIChzZWxm
LmltcG9ydFNjcmlwdHMpIHsKKyAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvdGVz
dC11dGlscy5qcycpOworICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMnKTsKK30KKworbGV0IFJlYWRhYmxlU3RyZWFtUmVhZGVyOworbGV0IFJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlcjsKKwordGVzdCgoKSA9PiB7CisKKyAgLy8gSXQncyBub3QgZXhwb3NlZCBn
bG9iYWxseSwgYnV0IHdlIHRlc3QgYSBmZXcgb2YgaXRzIHByb3BlcnRpZXMgaGVyZS4KKyAgUmVh
ZGFibGVTdHJlYW1SZWFkZXIgPSAobmV3IFJlYWRhYmxlU3RyZWFtKCkpLmdldFJlYWRlcigpLmNv
bnN0cnVjdG9yOworCit9LCAnQ2FuIGdldCB0aGUgUmVhZGFibGVTdHJlYW1SZWFkZXIgY29uc3Ry
dWN0b3IgaW5kaXJlY3RseScpOworCit0ZXN0KCgpID0+IHsKKworICAvLyBJdCdzIG5vdCBleHBv
c2VkIGdsb2JhbGx5LCBidXQgd2UgdGVzdCBhIGZldyBvZiBpdHMgcHJvcGVydGllcyBoZXJlLgor
ICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIFJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlciA9IGMuY29uc3RydWN0b3I7CisgICAgfQorICB9KTsKKworfSwgJ0NhbiBn
ZXQgdGhlIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5Jyk7
CisKK2Z1bmN0aW9uIGZha2VSZWFkYWJsZVN0cmVhbSgpIHsKKyAgcmV0dXJuIHsKKyAgICBjYW5j
ZWwoKSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsgfSwKKyAgICBnZXRSZWFkZXIoKSB7IHJl
dHVybiBuZXcgUmVhZGFibGVTdHJlYW1SZWFkZXIobmV3IFJlYWRhYmxlU3RyZWFtKCkpOyB9LAor
ICAgIHBpcGVUaHJvdWdoKG9iaikgeyByZXR1cm4gb2JqLnJlYWRhYmxlOyB9LAorICAgIHBpcGVU
bygpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOyB9LAorICAgIHRlZSgpIHsgcmV0dXJuIFty
ZWFsUmVhZGFibGVTdHJlYW0oKSwgcmVhbFJlYWRhYmxlU3RyZWFtKCldOyB9CisgIH07Cit9CisK
K2Z1bmN0aW9uIHJlYWxSZWFkYWJsZVN0cmVhbSgpIHsKKyAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0
cmVhbSgpOworfQorCitmdW5jdGlvbiBmYWtlUmVhZGFibGVTdHJlYW1SZWFkZXIoKSB7CisgIHJl
dHVybiB7CisgICAgZ2V0IGNsb3NlZCgpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOyB9LAor
ICAgIGNhbmNlbCgpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOyB9LAorICAgIHJlYWQoKSB7
IHJldHVybiBQcm9taXNlLnJlc29sdmUoeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0p
OyB9LAorICAgIHJlbGVhc2VMb2NrKCkgeyByZXR1cm47IH0KKyAgfTsKK30KKworZnVuY3Rpb24g
ZmFrZVJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcigpIHsKKyAgcmV0dXJuIHsKKyAgICBjbG9zZSgp
IHsgfSwKKyAgICBlbnF1ZXVlKCkgeyB9LAorICAgIGVycm9yKCkgeyB9CisgIH07Cit9CisKK3By
b21pc2VfdGVzdCh0ID0+IHsKKworICByZXR1cm4gbWV0aG9kUmVqZWN0cyh0LCBSZWFkYWJsZVN0
cmVhbS5wcm90b3R5cGUsICdjYW5jZWwnLCBmYWtlUmVhZGFibGVTdHJlYW0oKSk7CisKK30sICdS
ZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuY2FuY2VsIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsK
KwordGVzdCgoKSA9PiB7CisKKyAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtLnByb3RvdHlw
ZSwgJ2dldFJlYWRlcicsIGZha2VSZWFkYWJsZVN0cmVhbSgpKTsKKworfSwgJ1JlYWRhYmxlU3Ry
ZWFtLnByb3RvdHlwZS5nZXRSZWFkZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjaycpOworCit0ZXN0
KCgpID0+IHsKKworICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLCAndGVl
JywgZmFrZVJlYWRhYmxlU3RyZWFtKCkpOworCit9LCAnUmVhZGFibGVTdHJlYW0ucHJvdG90eXBl
LnRlZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW1SZWFkZXIo
ZmFrZVJlYWRhYmxlU3RyZWFtKCkpLAorICAgICAgICAgICAgICAgICdDb25zdHJ1Y3RpbmcgYSBS
ZWFkYWJsZVN0cmVhbVJlYWRlciBzaG91bGQgdGhyb3cnKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFt
UmVhZGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50Jyk7CisKK3Byb21p
c2VfdGVzdCh0ID0+IHsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIGdldHRlclJlamVj
dHModCwgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLCAnY2xvc2VkJywgZmFrZVJlYWRh
YmxlU3RyZWFtUmVhZGVyKCkpLAorICAgIGdldHRlclJlamVjdHModCwgUmVhZGFibGVTdHJlYW1S
ZWFkZXIucHJvdG90eXBlLCAnY2xvc2VkJywgcmVhbFJlYWRhYmxlU3RyZWFtKCkpCisgIF0pOwor
Cit9LCAnUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLmNsb3NlZCBlbmZvcmNlcyBhIGJy
YW5kIGNoZWNrJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICByZXR1cm4gUHJvbWlzZS5h
bGwoWworICAgIG1ldGhvZFJlamVjdHModCwgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBl
LCAnY2FuY2VsJywgZmFrZVJlYWRhYmxlU3RyZWFtUmVhZGVyKCkpLAorICAgIG1ldGhvZFJlamVj
dHModCwgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLCAnY2FuY2VsJywgcmVhbFJlYWRh
YmxlU3RyZWFtKCkpCisgIF0pOworCit9LCAnUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBl
LmNhbmNlbCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsK
KworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIG1ldGhvZFJlamVjdHModCwgUmVhZGFibGVT
dHJlYW1SZWFkZXIucHJvdG90eXBlLCAncmVhZCcsIGZha2VSZWFkYWJsZVN0cmVhbVJlYWRlcigp
KSwKKyAgICBtZXRob2RSZWplY3RzKHQsIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZSwg
J3JlYWQnLCByZWFsUmVhZGFibGVTdHJlYW0oKSkKKyAgXSk7CisKK30sICdSZWFkYWJsZVN0cmVh
bVJlYWRlci5wcm90b3R5cGUucmVhZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7CisKK3Rlc3Qo
KCkgPT4geworCisgIG1ldGhvZFRocm93cyhSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUs
ICdyZWxlYXNlTG9jaycsIGZha2VSZWFkYWJsZVN0cmVhbVJlYWRlcigpKTsKKyAgbWV0aG9kVGhy
b3dzKFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZSwgJ3JlbGVhc2VMb2NrJywgcmVhbFJl
YWRhYmxlU3RyZWFtKCkpOworCit9LCAnUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLnJl
bGVhc2VMb2NrIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKKwordGVzdCgoKSA9PiB7CisKKyAg
YXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXIoZmFrZVJlYWRhYmxlU3RyZWFtKCkpLAorICAgICAgICAgICAgICAgICdDb25zdHJ1
Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgc2hvdWxkIHRocm93Jyk7CisKK30sICdS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjayBvbiBpdHMgYXJn
dW1lbnQnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
KCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIocmVhbFJlYWRhYmxlU3RyZWFt
KCkpLAorICAgICAgICAgICAgICAgICdDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXIgc2hvdWxkIHRocm93Jyk7CisKK30sICdSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgY2Fu
XCd0IGJlIGdpdmVuIGEgZnVsbHktY29uc3RydWN0ZWQgUmVhZGFibGVTdHJlYW0nKTsKKwordGVz
dCgoKSA9PiB7CisKKyAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5wcm90
b3R5cGUsICdjbG9zZScsIGZha2VSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIoKSk7CisKK30sICdS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLmNsb3NlIGVuZm9yY2VzIGEgYnJhbmQg
Y2hlY2snKTsKKwordGVzdCgoKSA9PiB7CisKKyAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFt
Q29udHJvbGxlci5wcm90b3R5cGUsICdlbnF1ZXVlJywgZmFrZVJlYWRhYmxlU3RyZWFtQ29udHJv
bGxlcigpKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUuZW5xdWV1
ZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7CisKK3Rlc3QoKCkgPT4geworCisgIG1ldGhvZFRo
cm93cyhSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLCAnZXJyb3InLCBmYWtlUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyKCkpOworCit9LCAnUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
LnByb3RvdHlwZS5lcnJvciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7CisKK2RvbmUoKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9j
YW5jZWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5OTRiM2I5NDZlMjEzMDEzMzY2ODZmZDgw
NGM3M2FhYTJkMTJjZTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjQgQEAKKworUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxs
YXRpb246IGludGVncmF0aW9uIHRlc3Qgb24gYW4gaW5maW5pdGUgc3RyZWFtIGRlcml2ZWQgZnJv
bSBhIHJhbmRvbSBwdXNoIHNvdXJjZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9u
OiBjYW5jZWwocmVhc29uKSBzaG91bGQgcGFzcyB0aHJvdWdoIHRoZSBnaXZlbiByZWFzb24gdG8g
dGhlIHVuZGVybHlpbmcgc291cmNlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246
IGNhbmNlbCgpIG9uIGEgbG9ja2VkIHN0cmVhbSBzaG91bGQgZmFpbCBhbmQgbm90IGNhbGwgdGhl
IHVuZGVybHlpbmcgc291cmNlIGNhbmNlbCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0
aW9uOiBzaG91bGQgZnVsZmlsbCBwcm9taXNlIHdoZW4gY2FuY2VsIGNhbGxiYWNrIHdlbnQgZmlu
ZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiByZXR1cm5pbmcgYSB2YWx1ZSBm
cm9tIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBzaG91bGQgbm90IGFmZmVjdCB0aGUg
ZnVsZmlsbG1lbnQgdmFsdWUgb2YgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdz
IGNhbmNlbCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBzaG91bGQgcmVqZWN0
IHByb21pc2Ugd2hlbiBjYW5jZWwgY2FsbGJhY2sgcmFpc2VzIGFuIGV4Y2VwdGlvbiAKK1BBU1Mg
UmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2UncyBj
YW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0
aGUgc3RyZWFtJ3MgY2FuY2VsIHNob3VsZCBmdWxmaWxsIHdoZW4gdGhhdCBvbmUgZG9lcyAoMSkg
CitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVybHlpbmcgc291
cmNlJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJu
ZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBzaG91bGQgZnVsZmlsbCB3aGVuIHRoYXQgb25lIGRv
ZXMgKDIpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5
aW5nIHNvdXJjZSdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRoZSBwcm9taXNl
IHJldHVybmVkIGJ5IHRoZSBzdHJlYW0ncyBjYW5jZWwgc2hvdWxkIHJlamVjdCB3aGVuIHRoYXQg
b25lIGRvZXMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsbGluZyBi
ZWZvcmUgc3RhcnQgZmluaXNoZXMgc2hvdWxkIHByZXZlbnQgcHVsbCgpIGZyb20gYmVpbmcgY2Fs
bGVkIAorRkFJTCBMb2FkIGNhbmNlbC5qcyB3aXRoIFNoYXJlZFdvcmtlciBhc3NlcnRfdW5yZWFj
aGVkOiBTaGFyZWRXb3JrZXIgaXMgdW5hdmFpbGFibGUgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2Rl
CitGQUlMIFVudGl0bGVkIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdu
YXZpZ2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdpc3RyYXRpb24nKQorUEFTUyBSZWFkYWJsZVN0
cmVhbSBjYW5jZWxsYXRpb246IGludGVncmF0aW9uIHRlc3Qgb24gYW4gaW5maW5pdGUgc3RyZWFt
IGRlcml2ZWQgZnJvbSBhIHJhbmRvbSBwdXNoIHNvdXJjZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0g
Y2FuY2VsbGF0aW9uOiBjYW5jZWwocmVhc29uKSBzaG91bGQgcGFzcyB0aHJvdWdoIHRoZSBnaXZl
biByZWFzb24gdG8gdGhlIHVuZGVybHlpbmcgc291cmNlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBj
YW5jZWxsYXRpb246IGNhbmNlbCgpIG9uIGEgbG9ja2VkIHN0cmVhbSBzaG91bGQgZmFpbCBhbmQg
bm90IGNhbGwgdGhlIHVuZGVybHlpbmcgc291cmNlIGNhbmNlbCAKK1BBU1MgUmVhZGFibGVTdHJl
YW0gY2FuY2VsbGF0aW9uOiBzaG91bGQgZnVsZmlsbCBwcm9taXNlIHdoZW4gY2FuY2VsIGNhbGxi
YWNrIHdlbnQgZmluZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiByZXR1cm5p
bmcgYSB2YWx1ZSBmcm9tIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBzaG91bGQgbm90
IGFmZmVjdCB0aGUgZnVsZmlsbG1lbnQgdmFsdWUgb2YgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkg
dGhlIHN0cmVhbSdzIGNhbmNlbCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBz
aG91bGQgcmVqZWN0IHByb21pc2Ugd2hlbiBjYW5jZWwgY2FsbGJhY2sgcmFpc2VzIGFuIGV4Y2Vw
dGlvbiAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWlu
ZyBzb3VyY2UncyBjYW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSBy
ZXR1cm5lZCBieSB0aGUgc3RyZWFtJ3MgY2FuY2VsIHNob3VsZCBmdWxmaWxsIHdoZW4gdGhhdCBv
bmUgZG9lcyAoMSkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVu
ZGVybHlpbmcgc291cmNlJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHBy
b21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBzaG91bGQgZnVsZmlsbCB3aGVu
IHRoYXQgb25lIGRvZXMgKDIpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlm
IHRoZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2Us
IHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW0ncyBjYW5jZWwgc2hvdWxkIHJlamVj
dCB3aGVuIHRoYXQgb25lIGRvZXMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjog
Y2FuY2VsbGluZyBiZWZvcmUgc3RhcnQgZmluaXNoZXMgc2hvdWxkIHByZXZlbnQgcHVsbCgpIGZy
b20gYmVpbmcgY2FsbGVkIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW1zL2NhbmNlbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3Njc0MjlmMTcwMjkyMzZkYzRi
NDEwOGQ0NTQ0NTBjMDdlYzZhNGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5j
ZWwuaHRtbApAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vycy9yZXNvdXJj
ZXMvdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
dGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Jz
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJjYW5jZWwuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KKyd1c2Ugc3RyaWN0JzsKK3dvcmtlcl90ZXN0KCdjYW5jZWwuanMnKTsKKzwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmpzIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2Fu
Y2VsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY1MDE0YzJjOTRkMjcxZTMxOGMwZWNjYjJjZjgwM2E2MDI1M2Ex
ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuanMKQEAgLTAsMCArMSwy
NDIgQEAKKyd1c2Ugc3RyaWN0JzsKKworaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgeworICBzZWxm
LmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzJyk7CisgIHNlbGYuaW1w
b3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzJyk7CisgIHNlbGYuaW1wb3J0U2Ny
aXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOworfQorCitwcm9taXNlX3Rlc3QoKCkg
PT4geworCisgIGNvbnN0IHJhbmRvbVNvdXJjZSA9IG5ldyBSYW5kb21QdXNoU291cmNlKCk7CisK
KyAgbGV0IGNhbmNlbGxhdGlvbkZpbmlzaGVkID0gZmFsc2U7CisgIGNvbnN0IHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICByYW5kb21Tb3VyY2Uub25kYXRh
ID0gYy5lbnF1ZXVlLmJpbmQoYyk7CisgICAgICByYW5kb21Tb3VyY2Uub25lbmQgPSBjLmNsb3Nl
LmJpbmQoYyk7CisgICAgICByYW5kb21Tb3VyY2Uub25lcnJvciA9IGMuZXJyb3IuYmluZChjKTsK
KyAgICB9LAorCisgICAgcHVsbCgpIHsKKyAgICAgIHJhbmRvbVNvdXJjZS5yZWFkU3RhcnQoKTsK
KyAgICB9LAorCisgICAgY2FuY2VsKCkgeworICAgICAgcmFuZG9tU291cmNlLnJlYWRTdG9wKCk7
CisgICAgICByYW5kb21Tb3VyY2Uub25lbmQoKTsKKworICAgICAgcmV0dXJuIG5ldyBQcm9taXNl
KHJlc29sdmUgPT4geworICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICBjYW5j
ZWxsYXRpb25GaW5pc2hlZCA9IHRydWU7CisgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9
LCAxKTsKKyAgICAgIH0pOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0
UmVhZGVyKCk7CisKKyAgLy8gV2UgY2FsbCBkZWxheSBtdWx0aXBsZSB0aW1lcyB0byBhdm9pZCBj
YW5jZWxsaW5nIHRvbyBlYXJseSBmb3IgdGhlCisgIC8vIHNvdXJjZSB0byBlbnF1ZXVlIGF0IGxl
YXN0IG9uZSBjaHVuay4KKyAgY29uc3QgY2FuY2VsID0gZGVsYXkoNSkudGhlbigoKSA9PiBkZWxh
eSg1KSkudGhlbigoKSA9PiBkZWxheSg1KSkudGhlbigoKSA9PiB7CisgICAgbGV0IGNhbmNlbFBy
b21pc2UgPSByZWFkZXIuY2FuY2VsKCk7CisgICAgYXNzZXJ0X2ZhbHNlKGNhbmNlbGxhdGlvbkZp
bmlzaGVkLCAnY2FuY2VsbGF0aW9uIGluIHNvdXJjZSBzaG91bGQgaGFwcGVuIGxhdGVyJyk7Cisg
ICAgcmV0dXJuIGNhbmNlbFByb21pc2U7CisgIH0pCisKKyAgcmV0dXJuIHJlYWRhYmxlU3RyZWFt
VG9BcnJheShycywgcmVhZGVyKS50aGVuKGNodW5rcyA9PiB7CisgICAgYXNzZXJ0X2dyZWF0ZXJf
dGhhbihjaHVua3MubGVuZ3RoLCAwLCAnYXQgbGVhc3Qgb25lIGNodW5rIHNob3VsZCBiZSByZWFk
Jyk7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaHVua3MubGVuZ3RoOyBpKyspIHsKKyAgICAg
IGFzc2VydF9lcXVhbHMoY2h1bmtzW2ldLmxlbmd0aCwgMTI4LCAnY2h1bmsgJyArIGkgKyAnIHNo
b3VsZCBoYXZlIDEyOCBieXRlcycpOworICAgIH0KKyAgICByZXR1cm4gY2FuY2VsOworICB9KS50
aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfdHJ1ZShjYW5jZWxsYXRpb25GaW5pc2hlZCwgJ2l0IHJl
dHVybnMgYSBwcm9taXNlIHRoYXQgaXMgZnVsZmlsbGVkIHdoZW4gdGhlIGNhbmNlbGxhdGlvbiBm
aW5pc2hlcycpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaW50
ZWdyYXRpb24gdGVzdCBvbiBhbiBpbmZpbml0ZSBzdHJlYW0gZGVyaXZlZCBmcm9tIGEgcmFuZG9t
IHB1c2ggc291cmNlJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGxldCByZWNvcmRlZFJlYXNvbjsK
KyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIGNhbmNlbChyZWFzb24pIHsK
KyAgICAgIHJlY29yZGVkUmVhc29uID0gcmVhc29uOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qg
cGFzc2VkUmVhc29uID0gbmV3IEVycm9yKCdTb3JyeSwgaXQganVzdCB3YXNuXCd0IG1lYW50IHRv
IGJlLicpOworICBycy5jYW5jZWwocGFzc2VkUmVhc29uKTsKKworICBhc3NlcnRfZXF1YWxzKHJl
Y29yZGVkUmVhc29uLCBwYXNzZWRSZWFzb24sCisgICAgJ3RoZSBlcnJvciBwYXNzZWQgdG8gdGhl
IHVuZGVybHlpbmcgc291cmNlXCdzIGNhbmNlbCBtZXRob2Qgc2hvdWxkIGVxdWFsIHRoZSBvbmUg
cGFzc2VkIHRvIHRoZSBzdHJlYW1cJ3MgY2FuY2VsJyk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBj
YW5jZWxsYXRpb246IGNhbmNlbChyZWFzb24pIHNob3VsZCBwYXNzIHRocm91Z2ggdGhlIGdpdmVu
IHJlYXNvbiB0byB0aGUgdW5kZXJseWluZyBzb3VyY2UnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+
IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgewor
ICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgICBjLmNsb3NlKCk7CisgICAgfSwKKyAgICBjYW5j
ZWwoKSB7CisgICAgICBhc3NlcnRfdW5yZWFjaGVkKCd1bmRlcmx5aW5nIHNvdXJjZSBjYW5jZWwo
KSBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQnKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0
IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIHJldHVybiBycy5jYW5jZWwoKS50aGVuKCgp
ID0+IHsKKyAgICBhc3NlcnRfdW5yZWFjaGVkKCdjYW5jZWwoKSBzaG91bGQgYmUgcmVqZWN0ZWQn
KTsKKyAgfSwgZSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhlLm5hbWUsICdUeXBlRXJyb3InLCAn
Y2FuY2VsKCkgc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggYSBUeXBlRXJyb3InKTsKKyAgfSkudGhl
bigoKSA9PiB7CisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgIH0pLnRoZW4ocmVzdWx0ID0+
IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdhJywgZG9uZTog
ZmFsc2UgfSwgJ3JlYWQoKSBzaG91bGQgc3RpbGwgd29yayBhZnRlciB0aGUgYXR0ZW1wdGVkIGNh
bmNlbCcpOworICAgIHJldHVybiByZWFkZXIuY2xvc2VkOworICB9KTsKKworfSwgJ1JlYWRhYmxl
U3RyZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsKCkgb24gYSBsb2NrZWQgc3RyZWFtIHNob3VsZCBm
YWlsIGFuZCBub3QgY2FsbCB0aGUgdW5kZXJseWluZyBzb3VyY2UgY2FuY2VsJyk7CisKK3Byb21p
c2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNhbmNlbFJlY2VpdmVkID0gZmFsc2U7CisgIGNvbnN0
IGNhbmNlbFJlYXNvbiA9IG5ldyBFcnJvcignSSBhbSB0aXJlZCBvZiB0aGlzIHN0cmVhbSwgSSBw
cmVmZXIgdG8gY2FuY2VsIGl0Jyk7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
KyAgICBjYW5jZWwocmVhc29uKSB7CisgICAgICBjYW5jZWxSZWNlaXZlZCA9IHRydWU7CisgICAg
ICBhc3NlcnRfZXF1YWxzKHJlYXNvbiwgY2FuY2VsUmVhc29uLCAnY2FuY2VsbGF0aW9uIHJlYXNv
biBnaXZlbiB0byB0aGUgdW5kZXJseWluZyBzb3VyY2Ugc2hvdWxkIGJlIGVxdWFsIHRvIHRoZSBv
bmUgcGFzc2VkJyk7CisgICAgfQorICB9KTsKKworICByZXR1cm4gcnMuY2FuY2VsKGNhbmNlbFJl
YXNvbikudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X3RydWUoY2FuY2VsUmVjZWl2ZWQpOworICB9
KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogc2hvdWxkIGZ1bGZpbGwgcHJv
bWlzZSB3aGVuIGNhbmNlbCBjYWxsYmFjayB3ZW50IGZpbmUnKTsKKworcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgY2FuY2VsKCkg
eworICAgICAgcmV0dXJuICdIZWxsbyc7CisgICAgfQorICB9KTsKKworICByZXR1cm4gcnMuY2Fu
Y2VsKCkudGhlbih2ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ2NhbmNl
bCgpIHJldHVybiB2YWx1ZSBzaG91bGQgYmUgZnVsZmlsbGVkIHdpdGggdW5kZWZpbmVkJyk7Cisg
IH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiByZXR1cm5pbmcgYSB2YWx1
ZSBmcm9tIHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyBjYW5jZWwgc2hvdWxkIG5vdCBhZmZlY3Qg
dGhlIGZ1bGZpbGxtZW50IHZhbHVlIG9mIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJl
YW1cJ3MgY2FuY2VsJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgY29uc3QgdGhyb3du
RXJyb3IgPSBuZXcgRXJyb3IoJ3Rlc3QnKTsKKyAgbGV0IGNhbmNlbENhbGxlZCA9IGZhbHNlOwor
CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBjYW5jZWwoKSB7CisgICAg
ICBjYW5jZWxDYWxsZWQgPSB0cnVlOworICAgICAgdGhyb3cgdGhyb3duRXJyb3I7CisgICAgfQor
ICB9KTsKKworICByZXR1cm4gcnMuY2FuY2VsKCd0ZXN0JykudGhlbigoKSA9PiB7CisgICAgYXNz
ZXJ0X3VucmVhY2hlZCgnY2FuY2VsIHNob3VsZCByZWplY3QnKTsKKyAgfSwgZSA9PiB7CisgICAg
YXNzZXJ0X3RydWUoY2FuY2VsQ2FsbGVkKTsKKyAgICBhc3NlcnRfZXF1YWxzKGUsIHRocm93bkVy
cm9yKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IHNob3VsZCBy
ZWplY3QgcHJvbWlzZSB3aGVuIGNhbmNlbCBjYWxsYmFjayByYWlzZXMgYW4gZXhjZXB0aW9uJyk7
CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgY29uc3QgY2FuY2VsUmVhc29uID0gbmV3IEVy
cm9yKCd0ZXN0Jyk7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIGNh
bmNlbChlcnJvcikgeworICAgICAgYXNzZXJ0X2VxdWFscyhlcnJvciwgY2FuY2VsUmVhc29uKTsK
KyAgICAgIHJldHVybiBkZWxheSgxKTsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBycy5jYW5j
ZWwoY2FuY2VsUmVhc29uKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYg
dGhlIHVuZGVybHlpbmcgc291cmNlXCdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2Us
IHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW1cJ3MgY2FuY2VsIHNob3VsZCBmdWxm
aWxsIHdoZW4gdGhhdCBvbmUgZG9lcyAoMSknKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKwor
ICBsZXQgcmVzb2x2ZVNvdXJjZUNhbmNlbFByb21pc2U7CisgIGxldCBzb3VyY2VDYW5jZWxQcm9t
aXNlSGFzRnVsZmlsbGVkID0gZmFsc2U7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgIGNhbmNlbCgpIHsKKyAgICAgIGNvbnN0IHNvdXJjZUNhbmNlbFByb21pc2UgPSBu
ZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmVTb3VyY2VDYW5jZWxQcm9taXNlID0gcmVzb2x2
ZSk7CisKKyAgICAgIHNvdXJjZUNhbmNlbFByb21pc2UudGhlbigoKSA9PiB7CisgICAgICAgIHNv
dXJjZUNhbmNlbFByb21pc2VIYXNGdWxmaWxsZWQgPSB0cnVlOworICAgICAgfSk7CisKKyAgICAg
IHJldHVybiBzb3VyY2VDYW5jZWxQcm9taXNlOworICAgIH0KKyAgfSk7CisKKyAgc2V0VGltZW91
dCgoKSA9PiByZXNvbHZlU291cmNlQ2FuY2VsUHJvbWlzZSgnSGVsbG8nKSwgMSk7CisKKyAgcmV0
dXJuIHJzLmNhbmNlbCgpLnRoZW4odmFsdWUgPT4geworICAgIGFzc2VydF90cnVlKHNvdXJjZUNh
bmNlbFByb21pc2VIYXNGdWxmaWxsZWQsICdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIGJl
IGZ1bGZpbGxlZCBvbmx5IGFmdGVyIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSB1bmRlcmx5
aW5nIHNvdXJjZVwncyBjYW5jZWwnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmlu
ZWQsICdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIGZ1bGZpbGxlZCB3aXRoIHVuZGVm
aW5lZCcpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhl
IHVuZGVybHlpbmcgc291cmNlXCdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRo
ZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW1cJ3MgY2FuY2VsIHNob3VsZCBmdWxmaWxs
IHdoZW4gdGhhdCBvbmUgZG9lcyAoMiknKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBs
ZXQgcmVqZWN0U291cmNlQ2FuY2VsUHJvbWlzZTsKKyAgbGV0IHNvdXJjZUNhbmNlbFByb21pc2VI
YXNSZWplY3RlZCA9IGZhbHNlOworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
KyAgICBjYW5jZWwoKSB7CisgICAgICBjb25zdCBzb3VyY2VDYW5jZWxQcm9taXNlID0gbmV3IFBy
b21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gcmVqZWN0U291cmNlQ2FuY2VsUHJvbWlzZSA9IHJl
amVjdCk7CisKKyAgICAgIHNvdXJjZUNhbmNlbFByb21pc2UuY2F0Y2goKCkgPT4geworICAgICAg
ICBzb3VyY2VDYW5jZWxQcm9taXNlSGFzUmVqZWN0ZWQgPSB0cnVlOworICAgICAgfSk7CisKKyAg
ICAgIHJldHVybiBzb3VyY2VDYW5jZWxQcm9taXNlOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qg
ZXJyb3JJbkNhbmNlbCA9IG5ldyBFcnJvcignU29ycnksIGl0IGp1c3Qgd2FzblwndCBtZWFudCB0
byBiZS4nKTsKKworICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdFNvdXJjZUNhbmNlbFByb21pc2Uo
ZXJyb3JJbkNhbmNlbCksIDEpOworCisgIHJldHVybiBycy5jYW5jZWwoKS50aGVuKCgpID0+IHsK
KyAgICBhc3NlcnRfdW5yZWFjaGVkKCdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIHJl
amVjdGVkJyk7CisgIH0sIHIgPT4geworICAgIGFzc2VydF90cnVlKHNvdXJjZUNhbmNlbFByb21p
c2VIYXNSZWplY3RlZCwgJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBzaG91bGQgYmUgcmVqZWN0ZWQg
b25seSBhZnRlciB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgdW5kZXJseWluZyBzb3VyY2Vc
J3MgY2FuY2VsJyk7CisgICAgYXNzZXJ0X2VxdWFscyhyLCBlcnJvckluQ2FuY2VsLCAnY2FuY2Vs
KCkgcmV0dXJuIHZhbHVlIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHRoZSB1bmRlcmx5aW5nIHNv
dXJjZVwncyByZWplY3Rpb24gcmVhc29uJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0g
Y2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2VsIG1ldGhvZCBy
ZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbVwncyBj
YW5jZWwgc2hvdWxkIHJlamVjdCB3aGVuIHRoYXQgb25lIGRvZXMnKTsKKworcHJvbWlzZV90ZXN0
KCgpID0+IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQo
KSB7CisgICAgICByZXR1cm4gbmV3IFByb21pc2UoKCkgPT4ge30pOworICAgIH0sCisgICAgcHVs
bCgpIHsKKyAgICAgIGFzc2VydF91bnJlYWNoZWQoJ3B1bGwgc2hvdWxkIG5vdCBoYXZlIGJlZW4g
Y2FsbGVkJyk7CisgICAgfQorICB9KTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoW3JzLmNhbmNl
bCgpLCBycy5nZXRSZWFkZXIoKS5jbG9zZWRdKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNl
bGxhdGlvbjogY2FuY2VsbGluZyBiZWZvcmUgc3RhcnQgZmluaXNoZXMgc2hvdWxkIHByZXZlbnQg
cHVsbCgpIGZyb20gYmVpbmcgY2FsbGVkJyk7CisKK2RvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmE0ZTFkZjk5MWMxNzc4ZDRjZTNjMTliOWExNzRlNjc3NzFhODg2Nwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50
ZWdyYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKKworUEFTUyBDYW4gY29uc3Ry
dWN0IGEgcmVhZGFibGUgc3RyZWFtIHdpdGggYSB2YWxpZCBDb3VudFF1ZXVpbmdTdHJhdGVneSAK
K1BBU1MgQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIncyBkZXNp
cmVkU2l6ZSBwcm9wZXJ0eSAoSFdNID0gMCkgCitQQVNTIENvcnJlY3RseSBnb3Zlcm5zIGEgUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyJ3MgZGVzaXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDEpIAor
UEFTUyBDb3JyZWN0bHkgZ292ZXJucyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcidzIGRlc2ly
ZWRTaXplIHByb3BlcnR5IChIV00gPSA0KSAKK0ZBSUwgTG9hZCBjb3VudC1xdWV1aW5nLXN0cmF0
ZWd5LWludGVncmF0aW9uLmpzIHdpdGggU2hhcmVkV29ya2VyIGFzc2VydF91bnJlYWNoZWQ6IFNo
YXJlZFdvcmtlciBpcyB1bmF2YWlsYWJsZSBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK0ZBSUwg
VW50aXRsZWQgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ25hdmlnYXRv
ci5zZXJ2aWNlV29ya2VyLmdldFJlZ2lzdHJhdGlvbicpCitQQVNTIENhbiBjb25zdHJ1Y3QgYSBy
ZWFkYWJsZSBzdHJlYW0gd2l0aCBhIHZhbGlkIENvdW50UXVldWluZ1N0cmF0ZWd5IAorUEFTUyBD
b3JyZWN0bHkgZ292ZXJucyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcidzIGRlc2lyZWRTaXpl
IHByb3BlcnR5IChIV00gPSAwKSAKK1BBU1MgQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXIncyBkZXNpcmVkU2l6ZSBwcm9wZXJ0eSAoSFdNID0gMSkgCitQQVNTIENv
cnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyJ3MgZGVzaXJlZFNpemUg
cHJvcGVydHkgKEhXTSA9IDQpIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1
aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5n
LXN0cmF0ZWd5LWludGVncmF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmMzODE2NmMzMDM1ODg4NjVh
ZDliNDRkYTFhOTg5OWMxZmM3NmQ2NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Nv
dW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uaHRtbApAQCAtMCwwICsxLDEyIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3Jp
cHQ+CisKKzxzY3JpcHQgc3JjPSJjb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7Cit3b3JrZXJfdGVzdCgnY291bnQt
cXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5qcycpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmpzIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mYjlhMWFhMmJhNjMxZWRiYjlkZTE4M2YxMDY2ZTYzYTM5Mjc3ZmNkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5qcwpA
QCAtMCwwICsxLDIxMyBAQAorJ3VzZSBzdHJpY3QnOworCitpZiAoc2VsZi5pbXBvcnRTY3JpcHRz
KSB7CisgIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOwor
fQorCit0ZXN0KCgpID0+IHsKKworICBuZXcgUmVhZGFibGVTdHJlYW0oe30sIG5ldyBDb3VudFF1
ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSkpOworCit9LCAnQ2FuIGNvbnN0cnVj
dCBhIHJlYWRhYmxlIHN0cmVhbSB3aXRoIGEgdmFsaWQgQ291bnRRdWV1aW5nU3RyYXRlZ3knKTsK
KworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oCisgICAgeworICAgICAgc3RhcnQoYykgeworICAgICAgICBj
b250cm9sbGVyID0gYzsKKyAgICAgIH0KKyAgICB9LAorICAgIG5ldyBDb3VudFF1ZXVpbmdTdHJh
dGVneSh7IGhpZ2hXYXRlck1hcms6IDAgfSkKKyAgKTsKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0
UmVhZGVyKCk7CisKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAn
MCByZWFkcywgMCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAnKTsKKyAgY29udHJv
bGxlci5lbnF1ZXVlKCdhJyk7CisgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6
ZSwgLTEsICcwIHJlYWRzLCAxIGVucXVldWU6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMScpOwor
ICBjb250cm9sbGVyLmVucXVldWUoJ2InKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRl
c2lyZWRTaXplLCAtMiwgJzAgcmVhZHMsIDIgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBi
ZSAtMicpOworICBjb250cm9sbGVyLmVucXVldWUoJ2MnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250
cm9sbGVyLmRlc2lyZWRTaXplLCAtMywgJzAgcmVhZHMsIDMgZW5xdWV1ZXM6IGRlc2lyZWRTaXpl
IHNob3VsZCBiZSAtMycpOworICBjb250cm9sbGVyLmVucXVldWUoJ2QnKTsKKyAgYXNzZXJ0X2Vx
dWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtNCwgJzAgcmVhZHMsIDQgZW5xdWV1ZXM6IGRl
c2lyZWRTaXplIHNob3VsZCBiZSAtNCcpOworCisgIHJldHVybiByZWFkZXIucmVhZCgpCisgICAg
LnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2
YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJzFz
dCByZWFkIGdpdmVzIGJhY2sgdGhlIDFzdCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRh
aW5zIDMgY2h1bmtzKScpOworICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgICAgfSkKKyAg
ICAudGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7
IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAn
Mm5kIHJlYWQgZ2l2ZXMgYmFjayB0aGUgMm5kIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29u
dGFpbnMgMiBjaHVua3MpJyk7CisgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgICB9KQor
ICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQs
IHsgdmFsdWU6ICdjJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICczcmQgcmVhZCBnaXZlcyBiYWNrIHRoZSAzcmQgY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBj
b250YWlucyAxIGNodW5rKScpOworCisgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVz
aXJlZFNpemUsIC0xLCAnMyByZWFkcywgNCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJl
IC0xJyk7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2UnKTsKKyAgICAgIGFzc2VydF9lcXVh
bHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTIsICczIHJlYWRzLCA1IGVucXVldWVzOiBkZXNp
cmVkU2l6ZSBzaG91bGQgYmUgLTInKTsKKworICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Cisg
ICAgfSkKKyAgICAudGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMo
cmVzdWx0LCB7IHZhbHVlOiAnZCcsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnNHRoIHJlYWQgZ2l2ZXMgYmFjayB0aGUgNHRoIGNodW5rIGVucXVldWVkIChxdWV1
ZSBub3cgY29udGFpbnMgMSBjaHVua3MpJyk7CisgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsK
KworICAgIH0pLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJl
c3VsdCwgeyB2YWx1ZTogJ2UnLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJzV0aCByZWFkIGdpdmVzIGJhY2sgdGhlIDV0aCBjaHVuayBlbnF1ZXVlZCAocXVldWUg
bm93IGNvbnRhaW5zIDAgY2h1bmtzKScpOworCisgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xs
ZXIuZGVzaXJlZFNpemUsIDAsICc1IHJlYWRzLCA1IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91
bGQgYmUgMCcpOworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdmJyk7CisgICAgICBhc3NlcnRf
ZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnNSByZWFkcywgNiBlbnF1ZXVlczog
ZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2cn
KTsKKyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTIsICc1IHJl
YWRzLCA3IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTInKTsKKyAgICB9KTsKKwor
fSwgJ0NvcnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyXCdzIGRlc2ly
ZWRTaXplIHByb3BlcnR5IChIV00gPSAwKScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisg
IGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgKKyAgICB7
CisgICAgICBzdGFydChjKSB7CisgICAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgfQorICAg
IH0sCisgICAgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMSB9KQor
ICApOworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICBhc3NlcnRfZXF1YWxz
KGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEsICcwIHJlYWRzLCAwIGVucXVldWVzOiBkZXNpcmVk
U2l6ZSBzaG91bGQgYmUgMScpOworICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgYXNzZXJ0
X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnMCByZWFkcywgMSBlbnF1ZXVlOiBk
ZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCcpOworICBjb250cm9sbGVyLmVucXVldWUoJ2InKTsKKyAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzAgcmVhZHMsIDIgZW5x
dWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMScpOworICBjb250cm9sbGVyLmVucXVldWUo
J2MnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMiwgJzAgcmVh
ZHMsIDMgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMicpOworICBjb250cm9sbGVy
LmVucXVldWUoJ2QnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAt
MywgJzAgcmVhZHMsIDQgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMycpOworCisg
IHJldHVybiByZWFkZXIucmVhZCgpCisgICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2Vy
dF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJzFzdCByZWFkIGdpdmVzIGJhY2sgdGhlIDFzdCBjaHVu
ayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDMgY2h1bmtzKScpOworICAgICAgcmV0dXJu
IHJlYWRlci5yZWFkKCk7CisgICAgfSkKKyAgICAudGhlbihyZXN1bHQgPT4geworICAgICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnMm5kIHJlYWQgZ2l2ZXMgYmFjayB0aGUgMm5kIGNo
dW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMiBjaHVua3MpJyk7CisgICAgICByZXR1
cm4gcmVhZGVyLnJlYWQoKTsKKyAgICB9KQorICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdjJywgZG9uZTogZmFsc2UgfSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICczcmQgcmVhZCBnaXZlcyBiYWNrIHRoZSAzcmQg
Y2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAxIGNodW5rKScpOworCisgICAgICBh
c3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICczIHJlYWRzLCA0IGVucXVl
dWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCcpOworICAgICAgY29udHJvbGxlci5lbnF1ZXVl
KCdlJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAn
MyByZWFkcywgNSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7CisKKyAgICAg
IHJldHVybiByZWFkZXIucmVhZCgpOworICAgIH0pCisgICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAg
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2QnLCBkb25lOiBmYWxz
ZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJzR0aCByZWFkIGdpdmVzIGJhY2sgdGhl
IDR0aCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDEgY2h1bmtzKScpOworICAg
ICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgICAgfSkKKyAgICAudGhlbihyZXN1bHQgPT4gewor
ICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZScsIGRvbmU6IGZh
bHNlIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnNXRoIHJlYWQgZ2l2ZXMgYmFjayB0
aGUgNXRoIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMCBjaHVua3MpJyk7CisK
KyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJzUgcmVhZHMs
IDUgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAxJyk7CisgICAgICBjb250cm9sbGVy
LmVucXVldWUoJ2YnKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6
ZSwgMCwgJzUgcmVhZHMsIDYgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7Cisg
ICAgICBjb250cm9sbGVyLmVucXVldWUoJ2cnKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJv
bGxlci5kZXNpcmVkU2l6ZSwgLTEsICc1IHJlYWRzLCA3IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBz
aG91bGQgYmUgLTEnKTsKKyAgICB9KTsKKworfSwgJ0NvcnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyXCdzIGRlc2lyZWRTaXplIHByb3BlcnR5IChIV00gPSAxKScpOwor
Citwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSgKKyAgICB7CisgICAgICBzdGFydChjKSB7CisgICAgICAgIGNv
bnRyb2xsZXIgPSBjOworICAgICAgfQorICAgIH0sCisgICAgbmV3IENvdW50UXVldWluZ1N0cmF0
ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KQorICApOworICBjb25zdCByZWFkZXIgPSBycy5nZXRS
ZWFkZXIoKTsKKworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDQsICcw
IHJlYWRzLCAwIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgNCcpOworICBjb250cm9s
bGVyLmVucXVldWUoJ2EnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXpl
LCAzLCAnMCByZWFkcywgMSBlbnF1ZXVlOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMycpOworICBj
b250cm9sbGVyLmVucXVldWUoJ2InKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2ly
ZWRTaXplLCAyLCAnMCByZWFkcywgMiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDIn
KTsKKyAgY29udHJvbGxlci5lbnF1ZXVlKCdjJyk7CisgIGFzc2VydF9lcXVhbHMoY29udHJvbGxl
ci5kZXNpcmVkU2l6ZSwgMSwgJzAgcmVhZHMsIDMgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3Vs
ZCBiZSAxJyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZCcpOworICBhc3NlcnRfZXF1YWxzKGNv
bnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICcwIHJlYWRzLCA0IGVucXVldWVzOiBkZXNpcmVkU2l6
ZSBzaG91bGQgYmUgMCcpOworICBjb250cm9sbGVyLmVucXVldWUoJ2UnKTsKKyAgYXNzZXJ0X2Vx
dWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzAgcmVhZHMsIDUgZW5xdWV1ZXM6IGRl
c2lyZWRTaXplIHNob3VsZCBiZSAtMScpOworICBjb250cm9sbGVyLmVucXVldWUoJ2YnKTsKKyAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMiwgJzAgcmVhZHMsIDYgZW5x
dWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMicpOworCisKKyAgcmVhZGVyLnJlYWQoKQor
ICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQs
IHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICcxc3QgcmVhZCBnaXZlcyBiYWNrIHRoZSAxc3QgY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBj
b250YWlucyA1IGNodW5rcyknKTsKKyAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICAgIH0p
CisgICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3Vs
dCwgeyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJzJuZCByZWFkIGdpdmVzIGJhY2sgdGhlIDJuZCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93
IGNvbnRhaW5zIDQgY2h1bmtzKScpOworCisgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIu
ZGVzaXJlZFNpemUsIDAsICcyIHJlYWRzLCA2IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQg
YmUgMCcpOworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdnJyk7CisgICAgICBhc3NlcnRfZXF1
YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMiByZWFkcywgNyBlbnF1ZXVlczogZGVz
aXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7CisKKyAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOwor
ICAgIH0pCisgICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxz
KHJlc3VsdCwgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJzNyZCByZWFkIGdpdmVzIGJhY2sgdGhlIDNyZCBjaHVuayBlbnF1ZXVlZCAocXVl
dWUgbm93IGNvbnRhaW5zIDQgY2h1bmtzKScpOworICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7
CisgICAgfSkKKyAgICAudGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVh
bHMocmVzdWx0LCB7IHZhbHVlOiAnZCcsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnNHRoIHJlYWQgZ2l2ZXMgYmFjayB0aGUgNHRoIGNodW5rIGVucXVldWVkIChx
dWV1ZSBub3cgY29udGFpbnMgMyBjaHVua3MpJyk7CisgICAgICByZXR1cm4gcmVhZGVyLnJlYWQo
KTsKKyAgICB9KQorICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2Vx
dWFscyhyZXN1bHQsIHsgdmFsdWU6ICdlJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICc1dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA1dGggY2h1bmsgZW5xdWV1ZWQg
KHF1ZXVlIG5vdyBjb250YWlucyAyIGNodW5rcyknKTsKKyAgICAgIHJldHVybiByZWFkZXIucmVh
ZCgpOworICAgIH0pCisgICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3Rf
ZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2YnLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJzZ0aCByZWFkIGdpdmVzIGJhY2sgdGhlIDZ0aCBjaHVuayBlbnF1ZXVl
ZCAocXVldWUgbm93IGNvbnRhaW5zIDAgY2h1bmtzKScpOworCisgICAgICBhc3NlcnRfZXF1YWxz
KGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDMsICc2IHJlYWRzLCA3IGVucXVldWVzOiBkZXNpcmVk
U2l6ZSBzaG91bGQgYmUgMycpOworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdoJyk7CisgICAg
ICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDIsICc2IHJlYWRzLCA4IGVu
cXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMicpOworICAgICAgY29udHJvbGxlci5lbnF1
ZXVlKCdpJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEs
ICc2IHJlYWRzLCA5IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMScpOworICAgICAg
Y29udHJvbGxlci5lbnF1ZXVlKCdqJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIu
ZGVzaXJlZFNpemUsIDAsICc2IHJlYWRzLCAxMCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxk
IGJlIDAnKTsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnaycpOworICAgICAgYXNzZXJ0X2Vx
dWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzYgcmVhZHMsIDExIGVucXVldWVzOiBk
ZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKKyAgICB9KTsKKworfSwgJ0NvcnJlY3RseSBnb3Zl
cm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyXCdzIGRlc2lyZWRTaXplIHByb3BlcnR5IChI
V00gPSA0KScpOworCitkb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNv
bGxlY3Rpb24tMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24t
MS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmI2NTJiODUyZjA3ZTVhYmM1NmY1MjEwNWFjYzE4
NjA1ZGNiODMxOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVj
dGlvbi0xLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKKworUEFTUyBSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXIgbWV0aG9kcyBzaG91bGQgY29udGludWUgd29ya2luZyBwcm9wZXJseSB3aGVu
IHNjcmlwdHMgbG9zZSB0aGVpciByZWZlcmVuY2UgdG8gdGhlIHJlYWRhYmxlIHN0cmVhbSAKK1BB
U1MgUmVhZGFibGVTdHJlYW0gY2xvc2VkIHByb21pc2Ugc2hvdWxkIGZ1bGZpbGwgZXZlbiBpZiB0
aGUgc3RyZWFtIGFuZCByZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9zdCAKK1BBU1MgUmVhZGFi
bGVTdHJlYW0gY2xvc2VkIHByb21pc2Ugc2hvdWxkIHJlamVjdCBldmVuIGlmIHN0cmVhbSBhbmQg
cmVhZGVyIEpTIHJlZmVyZW5jZXMgYXJlIGxvc3QgCitQQVNTIEdhcmJhZ2UtY29sbGVjdGluZyBh
IFJlYWRhYmxlU3RyZWFtUmVhZGVyIHNob3VsZCBub3QgdW5sb2NrIGl0cyBzdHJlYW0gCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi0xLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24tMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyNjA1NTJlYTBlMjcx
NWQ4ZDQ5Yjg3N2I0NmNiZDA5ZWFlN2Q0OWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9nYXJiYWdlLWNvbGxlY3Rpb24tMS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIj48L3NjcmlwdD4KKworPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwhLS0gRmls
ZSB0byBiZSByZW1vdmVkIG9uY2UgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjQzNiBpcyByZXNvbHZlZCAtLT4KKzxzY3JpcHQgc3JjPSJnYXJiYWdlLWNvbGxlY3Rp
b24uanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0
aW9uLTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLTItZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1N2QwY2NkNzc5MzVlOGQyN2U3ZWFiYWZkNjAxZWUxY2Nh
MzY3YTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24t
Mi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgUmVhZGFibGVTdHJlYW1Db250
cm9sbGVyIG1ldGhvZHMgc2hvdWxkIGNvbnRpbnVlIHdvcmtpbmcgcHJvcGVybHkgd2hlbiBzY3Jp
cHRzIGxvc2UgdGhlaXIgcmVmZXJlbmNlIHRvIHRoZSByZWFkYWJsZSBzdHJlYW0gCitQQVNTIFJl
YWRhYmxlU3RyZWFtIGNsb3NlZCBwcm9taXNlIHNob3VsZCBmdWxmaWxsIGV2ZW4gaWYgdGhlIHN0
cmVhbSBhbmQgcmVhZGVyIEpTIHJlZmVyZW5jZXMgYXJlIGxvc3QgCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi0yLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdl
LWNvbGxlY3Rpb24tMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiZTNhNGUxZjY4Yzg5ZjcxODJlM2NhMDRk
ODUxMGUzMWFiMGUwMWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNv
bGxlY3Rpb24tMi5odG1sCkBAIC0wLDAgKzEsNDggQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXJz
L3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwhLS0gRmlsZSB0byBiZSByZW1v
dmVkIG9uY2UgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjQzNiBp
cyByZXNvbHZlZCAtLT4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7CisKK3Byb21pc2VfdGVzdCgo
KSA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAg
c3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKworICBnYXJi
YWdlQ29sbGVjdCgpOworCisgIHJldHVybiBkZWxheSg1MCkudGhlbigoKSA9PiB7CisgICAgY29u
dHJvbGxlci5jbG9zZSgpOworICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9
PiBjb250cm9sbGVyLmNsb3NlKCksICdjbG9zZSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IgdGhl
IHNlY29uZCB0aW1lJyk7CisgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+
IGNvbnRyb2xsZXIuZXJyb3IoKSwgJ2Vycm9yIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciBvbiBh
IGNsb3NlZCBzdHJlYW0nKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIg
bWV0aG9kcyBzaG91bGQgY29udGludWUgd29ya2luZyBwcm9wZXJseSB3aGVuIHNjcmlwdHMgbG9z
ZSB0aGVpciByZWZlcmVuY2UgdG8gdGhlICcgKworICAgJ3JlYWRhYmxlIHN0cmVhbScpOworCitw
cm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBjb250cm9sbGVyOworCisgIGNvbnN0IGNsb3Nl
ZFByb21pc2UgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNv
bnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOworCisgIGdhcmJh
Z2VDb2xsZWN0KCk7CisKKyAgcmV0dXJuIGRlbGF5KDUwKS50aGVuKCgpID0+IGNvbnRyb2xsZXIu
Y2xvc2UoKSkudGhlbigoKSA9PiBjbG9zZWRQcm9taXNlKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFt
IGNsb3NlZCBwcm9taXNlIHNob3VsZCBmdWxmaWxsIGV2ZW4gaWYgdGhlIHN0cmVhbSBhbmQgcmVh
ZGVyIEpTIHJlZmVyZW5jZXMgYXJlIGxvc3QnKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dh
cmJhZ2UtY29sbGVjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmUxYzMzMDA5NmJkY2Uy
YjA5NTBhZjlkNTdkNjU2MzE2YTFkOTI0MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2dhcmJhZ2UtY29sbGVjdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDM3OiBUZXN0cyBhcmUgcnVubmluZyB3aXRob3V0IHRoZSBhYmlsaXR5
IHRvIGRvIG1hbnVhbCBnYXJiYWdlIGNvbGxlY3Rpb24uIFRoZXkgd2lsbCBzdGlsbCB3b3JrLCBi
dXQgY292ZXJhZ2Ugd2lsbCBiZSBzdWJvcHRpbWFsLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDM3
OiBUZXN0cyBhcmUgcnVubmluZyB3aXRob3V0IHRoZSBhYmlsaXR5IHRvIGRvIG1hbnVhbCBnYXJi
YWdlIGNvbGxlY3Rpb24uIFRoZXkgd2lsbCBzdGlsbCB3b3JrLCBidXQgY292ZXJhZ2Ugd2lsbCBi
ZSBzdWJvcHRpbWFsLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDM3OiBUZXN0cyBhcmUgcnVubmlu
ZyB3aXRob3V0IHRoZSBhYmlsaXR5IHRvIGRvIG1hbnVhbCBnYXJiYWdlIGNvbGxlY3Rpb24uIFRo
ZXkgd2lsbCBzdGlsbCB3b3JrLCBidXQgY292ZXJhZ2Ugd2lsbCBiZSBzdWJvcHRpbWFsLgorQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDM3OiBUZXN0cyBhcmUgcnVubmluZyB3aXRob3V0IHRoZSBhYmls
aXR5IHRvIGRvIG1hbnVhbCBnYXJiYWdlIGNvbGxlY3Rpb24uIFRoZXkgd2lsbCBzdGlsbCB3b3Jr
LCBidXQgY292ZXJhZ2Ugd2lsbCBiZSBzdWJvcHRpbWFsLgorCitQQVNTIFJlYWRhYmxlU3RyZWFt
Q29udHJvbGxlciBtZXRob2RzIHNob3VsZCBjb250aW51ZSB3b3JraW5nIHByb3Blcmx5IHdoZW4g
c2NyaXB0cyBsb3NlIHRoZWlyIHJlZmVyZW5jZSB0byB0aGUgcmVhZGFibGUgc3RyZWFtIAorUEFT
UyBSZWFkYWJsZVN0cmVhbSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgZnVsZmlsbCBldmVuIGlmIHRo
ZSBzdHJlYW0gYW5kIHJlYWRlciBKUyByZWZlcmVuY2VzIGFyZSBsb3N0IAorUEFTUyBSZWFkYWJs
ZVN0cmVhbSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgcmVqZWN0IGV2ZW4gaWYgc3RyZWFtIGFuZCBy
ZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9zdCAKK1BBU1MgR2FyYmFnZS1jb2xsZWN0aW5nIGEg
UmVhZGFibGVTdHJlYW1SZWFkZXIgc2hvdWxkIG5vdCB1bmxvY2sgaXRzIHN0cmVhbSAKK0ZBSUwg
TG9hZCBnYXJiYWdlLWNvbGxlY3Rpb24uanMgd2l0aCBTaGFyZWRXb3JrZXIgYXNzZXJ0X3VucmVh
Y2hlZDogU2hhcmVkV29ya2VyIGlzIHVuYXZhaWxhYmxlIFJlYWNoZWQgdW5yZWFjaGFibGUgY29k
ZQorRkFJTCBVbnRpdGxlZCB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAn
bmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuZ2V0UmVnaXN0cmF0aW9uJykKK1BBU1MgUmVhZGFibGVT
dHJlYW1Db250cm9sbGVyIG1ldGhvZHMgc2hvdWxkIGNvbnRpbnVlIHdvcmtpbmcgcHJvcGVybHkg
d2hlbiBzY3JpcHRzIGxvc2UgdGhlaXIgcmVmZXJlbmNlIHRvIHRoZSByZWFkYWJsZSBzdHJlYW0g
CitQQVNTIFJlYWRhYmxlU3RyZWFtIGNsb3NlZCBwcm9taXNlIHNob3VsZCBmdWxmaWxsIGV2ZW4g
aWYgdGhlIHN0cmVhbSBhbmQgcmVhZGVyIEpTIHJlZmVyZW5jZXMgYXJlIGxvc3QgCitQQVNTIFJl
YWRhYmxlU3RyZWFtIGNsb3NlZCBwcm9taXNlIHNob3VsZCByZWplY3QgZXZlbiBpZiBzdHJlYW0g
YW5kIHJlYWRlciBKUyByZWZlcmVuY2VzIGFyZSBsb3N0IAorUEFTUyBHYXJiYWdlLWNvbGxlY3Rp
bmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBzaG91bGQgbm90IHVubG9jayBpdHMgc3RyZWFtIAor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzOGVkMjA1MzRjMjA2
NWQ1N2FmZjJjZjRhODRjNjdhOTU4ZGEyNGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9nYXJiYWdlLWNvbGxlY3Rpb24uaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2Vycy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3JpcHQ+CisKKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iZ2FyYmFnZS1jb2xsZWN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisndXNlIHN0cmlj
dCc7Cit3b3JrZXJfdGVzdCgnZ2FyYmFnZS1jb2xsZWN0aW9uLmpzJyk7Cis8L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5qcyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2dhcmJhZ2UtY29sbGVjdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYjAwYzk0NmJiYjUyYjIzZWY2ZWQ4
ZmNkMzQwZGI5MGZlMzlkZTgxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFn
ZS1jb2xsZWN0aW9uLmpzCkBAIC0wLDAgKzEsNzUgQEAKKyd1c2Ugc3RyaWN0JzsKKworaWYgKHNl
bGYuaW1wb3J0U2NyaXB0cykgeworICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy90
ZXN0LXV0aWxzLmpzJyk7CisgIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcycpOworfQorCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBjb250cm9sbGVy
OworICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xs
ZXIgPSBjOworICAgIH0KKyAgfSk7CisKKyAgZ2FyYmFnZUNvbGxlY3QoKTsKKworICByZXR1cm4g
ZGVsYXkoNTApLnRoZW4oKCkgPT4geworICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gY29udHJvbGxlci5jbG9zZSgpLCAnY2xv
c2Ugc2hvdWxkIHRocm93IGEgVHlwZUVycm9yIHRoZSBzZWNvbmQgdGltZScpOworICAgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjb250cm9sbGVyLmVycm9yKCksICdlcnJv
ciBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3Igb24gYSBjbG9zZWQgc3RyZWFtJyk7CisgIH0pOwor
Cit9LCAnUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIG1ldGhvZHMgc2hvdWxkIGNvbnRpbnVlIHdv
cmtpbmcgcHJvcGVybHkgd2hlbiBzY3JpcHRzIGxvc2UgdGhlaXIgcmVmZXJlbmNlIHRvIHRoZSAn
ICsKKyAgICdyZWFkYWJsZSBzdHJlYW0nKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBs
ZXQgY29udHJvbGxlcjsKKworICBjb25zdCBjbG9zZWRQcm9taXNlID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0p
LmdldFJlYWRlcigpLmNsb3NlZDsKKworICBnYXJiYWdlQ29sbGVjdCgpOworCisgIHJldHVybiBk
ZWxheSg1MCkudGhlbigoKSA9PiBjb250cm9sbGVyLmNsb3NlKCkpLnRoZW4oKCkgPT4gY2xvc2Vk
UHJvbWlzZSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgZnVs
ZmlsbCBldmVuIGlmIHRoZSBzdHJlYW0gYW5kIHJlYWRlciBKUyByZWZlcmVuY2VzIGFyZSBsb3N0
Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJv
cignYm9vJyk7CisgIGxldCBjb250cm9sbGVyOworCisgIGNvbnN0IGNsb3NlZFByb21pc2UgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBj
OworICAgIH0KKyAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOworCisgIGdhcmJhZ2VDb2xsZWN0KCk7
CisKKyAgcmV0dXJuIGRlbGF5KDUwKS50aGVuKCgpID0+IGNvbnRyb2xsZXIuZXJyb3IodGhlRXJy
b3IpKQorICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gcHJvbWlzZV9yZWplY3RzKHQsIHRo
ZUVycm9yLCBjbG9zZWRQcm9taXNlKSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBjbG9zZWQgcHJv
bWlzZSBzaG91bGQgcmVqZWN0IGV2ZW4gaWYgc3RyZWFtIGFuZCByZWFkZXIgSlMgcmVmZXJlbmNl
cyBhcmUgbG9zdCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHt9KTsKKworICBycy5nZXRSZWFkZXIoKTsKKworICBnYXJiYWdlQ29s
bGVjdCgpOworCisgIHJldHVybiBkZWxheSg1MCkudGhlbigoKSA9PiBhc3NlcnRfdGhyb3dzKG5l
dyBUeXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksCisgICAgJ29sZCByZWFkZXIgc2hv
dWxkIHN0aWxsIGJlIGxvY2tpbmcgdGhlIHN0cmVhbSBldmVuIGFmdGVyIGdhcmJhZ2UgY29sbGVj
dGlvbicpKTsKKworfSwgJ0dhcmJhZ2UtY29sbGVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVy
IHNob3VsZCBub3QgdW5sb2NrIGl0cyBzdHJlYW0nKTsKKworZG9uZSgpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvZ2VuZXJhbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDg1MmI1NThlZGQ4YzJmOTY5ZGE3MjQ3YmVlY2I0Mzdi
NTQ5MGI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw3MCBAQAorCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbiBiZSBjb25zdHJ1
Y3RlZCB3aXRoIG5vIGVycm9ycyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuJ3QgYmUgY29uc3Ry
dWN0ZWQgd2l0aCBnYXJiYWdlIAorRkFJTCBSZWFkYWJsZVN0cmVhbSBpbnN0YW5jZXMgc2hvdWxk
IGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzIGFzc2VydF9mYWxzZTogbWV0aG9k
IHNob3VsZCBiZSBub24tZW51bWVyYWJsZSBleHBlY3RlZCBmYWxzZSBnb3QgdHJ1ZQorUEFTUyBS
ZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZm9yIG5vbi1mdW5jdGlvbiBz
dGFydCBhcmd1bWVudHMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbiBnZXQg
aW5pdGlhbCBnYXJiYWdlIGFzIGNhbmNlbCBhcmd1bWVudCAKK1BBU1MgUmVhZGFibGVTdHJlYW0g
Y29uc3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgcHVsbCBhcmd1bWVudCAKK0ZB
SUwgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBwcm9wZXIg
cGFyYW1ldGVycyBhc3NlcnRfZmFsc2U6IGNsb3NlIHNob3VsZCBiZSBub24tZW51bWVyYWJsZSBl
eHBlY3RlZCBmYWxzZSBnb3QgdHJ1ZQorUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBjb250cm9s
bGVyIHBhcmFtZXRlciBzaG91bGQgYmUgZXh0ZW5zaWJsZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0g
c2hvdWxkIGJlIGFibGUgdG8gY2FsbCBzdGFydCBtZXRob2Qgd2l0aGluIHByb3RvdHlwZSBjaGFp
biBvZiBpdHMgc291cmNlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJs
ZSB0byByZXR1cm4gYSBwcm9taXNlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQg
YmUgYWJsZSB0byByZXR1cm4gYSBwcm9taXNlIGFuZCByZWplY3QgaXQgCitQQVNTIFJlYWRhYmxl
U3RyZWFtIHNob3VsZCBiZSBhYmxlIHRvIGVucXVldWUgZGlmZmVyZW50IG9iamVjdHMuIAorUEFT
UyBSZWFkYWJsZVN0cmVhbTogaWYgcHVsbCByZWplY3RzLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0
cmVhbSAKK1BBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIHVw
b24gc3RhcnRpbmcgdGhlIHN0cmVhbSAKK1BBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxs
IHB1bGwgd2hlbiB0cnlpbmcgdG8gcmVhZCBmcm9tIGEgc3RhcnRlZCwgZW1wdHkgc3RyZWFtIAor
UEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2Ugb24gYSBub24t
ZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBiZWZvcmUgc3RhcnQgZnVsZmlsbHMgCitQQVNTIFJlYWRh
YmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBzdHJl
YW0gcmVhZCBmcm9tIGFmdGVyIHN0YXJ0IGZ1bGZpbGxzIAorUEFTUyBSZWFkYWJsZVN0cmVhbTog
c2hvdWxkIGNhbGwgcHVsbCBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmss
IGlmIG5vdCBkcmFpbmluZyAKK1BBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBw
dWxsKCkgaW4gcmVhY3Rpb24gdG8gcmVhZCgpaW5nIHRoZSBsYXN0IGNodW5rLCBpZiBkcmFpbmlu
ZyAKK1BBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIHVudGlsIHRoZSBw
cmV2aW91cyBwdWxsIGNhbGwncyBwcm9taXNlIGZ1bGZpbGxzIAorUEFTUyBSZWFkYWJsZVN0cmVh
bTogc2hvdWxkIHB1bGwgYWZ0ZXIgc3RhcnQsIGFuZCBhZnRlciBldmVyeSByZWFkIAorUEFTUyBS
ZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgYWZ0ZXIgc3RhcnQgaWYgdGhlIHN0
cmVhbSBpcyBub3cgY2xvc2VkIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVs
bCBhZnRlciBlbnF1ZXVlaW5nIGZyb20gaW5zaWRlIHB1bGwgKHdpdGggbm8gcmVhZCByZXF1ZXN0
cyksIGlmIHN0cmF0ZWd5IGFsbG93cyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcHVsbCBzaG91bGQg
YmUgYWJsZSB0byBjbG9zZSBhIHN0cmVhbS4gCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBlbnF1ZXVl
IHNob3VsZCB0aHJvdyB3aGVuIHRoZSBzdHJlYW0gaXMgcmVhZGFibGUgYnV0IGRyYWluaW5nIAor
UEFTUyBSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgd2hlbiB0aGUgc3RyZWFt
IGlzIGNsb3NlZCAKK1BBU1MgUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHRo
ZSBzdG9yZWQgZXJyb3Igd2hlbiB0aGUgc3RyZWFtIGlzIGVycm9yZWQgCitQQVNTIFJlYWRhYmxl
U3RyZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRob2RzIGFzIG1ldGhvZHMg
CitQQVNTIFJlYWRhYmxlU3RyZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNo
b3VsZCBnaXZlIGRlc2lyZWRTaXplIG9mIDEgdG8gc3RhcnQsIGRlY3JlYXNpbmcgYnkgMSBwZXIg
ZW5xdWV1ZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3Ry
YXRlZ3kgc2hvdWxkIGNvbnRpbnVlIGdpdmluZyBkZXNpcmVkU2l6ZSBvZiAxIGlmIHRoZSBjaHVu
a3MgYXJlIHJlYWQgaW1tZWRpYXRlbHkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9u
IHRlc3Q6IGFkYXB0aW5nIGEgcmFuZG9tIHB1c2ggc291cmNlIAorUEFTUyBSZWFkYWJsZVN0cmVh
bSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHN5bmMgcHVsbCBzb3VyY2UgCitQQVNTIFJl
YWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGFuIGFzeW5jIHB1bGwgc291
cmNlIAorRkFJTCBMb2FkIGdlbmVyYWwuanMgd2l0aCBTaGFyZWRXb3JrZXIgYXNzZXJ0X3VucmVh
Y2hlZDogU2hhcmVkV29ya2VyIGlzIHVuYXZhaWxhYmxlIFJlYWNoZWQgdW5yZWFjaGFibGUgY29k
ZQorRkFJTCBVbnRpdGxlZCB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAn
bmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuZ2V0UmVnaXN0cmF0aW9uJykKK1BBU1MgUmVhZGFibGVT
dHJlYW0gY2FuIGJlIGNvbnN0cnVjdGVkIHdpdGggbm8gZXJyb3JzIAorUEFTUyBSZWFkYWJsZVN0
cmVhbSBjYW4ndCBiZSBjb25zdHJ1Y3RlZCB3aXRoIGdhcmJhZ2UgCitGQUlMIFJlYWRhYmxlU3Ry
ZWFtIGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3BlcnRpZXMg
YXNzZXJ0X2ZhbHNlOiBtZXRob2Qgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlIGV4cGVjdGVkIGZh
bHNlIGdvdCB0cnVlCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHNob3VsZCB0aHJv
dyBmb3Igbm9uLWZ1bmN0aW9uIHN0YXJ0IGFyZ3VtZW50cyAKK1BBU1MgUmVhZGFibGVTdHJlYW0g
Y29uc3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgY2FuY2VsIGFyZ3VtZW50IAor
UEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBh
cyBwdWxsIGFyZ3VtZW50IAorRkFJTCBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgY2Fs
bGVkIHdpdGggdGhlIHByb3BlciBwYXJhbWV0ZXJzIGFzc2VydF9mYWxzZTogY2xvc2Ugc2hvdWxk
IGJlIG5vbi1lbnVtZXJhYmxlIGV4cGVjdGVkIGZhbHNlIGdvdCB0cnVlCitQQVNTIFJlYWRhYmxl
U3RyZWFtIHN0YXJ0IGNvbnRyb2xsZXIgcGFyYW1ldGVyIHNob3VsZCBiZSBleHRlbnNpYmxlIAor
UEFTUyBSZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBjYWxsIHN0YXJ0IG1ldGhvZCB3
aXRoaW4gcHJvdG90eXBlIGNoYWluIG9mIGl0cyBzb3VyY2UgCitQQVNTIFJlYWRhYmxlU3RyZWFt
IHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgCitQQVNTIFJlYWRhYmxl
U3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJlamVj
dCBpdCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gc2hvdWxkIGJlIGFibGUgdG8gZW5xdWV1ZSBkaWZm
ZXJlbnQgb2JqZWN0cy4gCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBpZiBwdWxsIHJlamVjdHMsIGl0
IHNob3VsZCBlcnJvciB0aGUgc3RyZWFtIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9u
bHkgY2FsbCBwdWxsIG9uY2UgdXBvbiBzdGFydGluZyB0aGUgc3RyZWFtIAorUEFTUyBSZWFkYWJs
ZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCB3aGVuIHRyeWluZyB0byByZWFkIGZyb20gYSBzdGFy
dGVkLCBlbXB0eSBzdHJlYW0gCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxs
IHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9tIGJlZm9yZSBzdGFydCBm
dWxmaWxscyAKK1BBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNl
IG9uIGEgbm9uLWVtcHR5IHN0cmVhbSByZWFkIGZyb20gYWZ0ZXIgc3RhcnQgZnVsZmlsbHMgCitQ
QVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxsIGluIHJlYWN0aW9uIHRvIHJlYWQo
KWluZyB0aGUgbGFzdCBjaHVuaywgaWYgbm90IGRyYWluaW5nIAorUEFTUyBSZWFkYWJsZVN0cmVh
bTogc2hvdWxkIG5vdCBjYWxsIHB1bGwoKSBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxh
c3QgY2h1bmssIGlmIGRyYWluaW5nIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBj
YWxsIHB1bGwgdW50aWwgdGhlIHByZXZpb3VzIHB1bGwgY2FsbCdzIHByb21pc2UgZnVsZmlsbHMg
CitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgcHVsbCBhZnRlciBzdGFydCwgYW5kIGFmdGVy
IGV2ZXJ5IHJlYWQgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCBh
ZnRlciBzdGFydCBpZiB0aGUgc3RyZWFtIGlzIG5vdyBjbG9zZWQgCitQQVNTIFJlYWRhYmxlU3Ry
ZWFtOiBzaG91bGQgY2FsbCBwdWxsIGFmdGVyIGVucXVldWVpbmcgZnJvbSBpbnNpZGUgcHVsbCAo
d2l0aCBubyByZWFkIHJlcXVlc3RzKSwgaWYgc3RyYXRlZ3kgYWxsb3dzIAorUEFTUyBSZWFkYWJs
ZVN0cmVhbSBwdWxsIHNob3VsZCBiZSBhYmxlIHRvIGNsb3NlIGEgc3RyZWFtLiAKK1BBU1MgUmVh
ZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyByZWFk
YWJsZSBidXQgZHJhaW5pbmcgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0
aHJvdyB3aGVuIHRoZSBzdHJlYW0gaXMgY2xvc2VkIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogZW5x
dWV1ZSBzaG91bGQgdGhyb3cgdGhlIHN0b3JlZCBlcnJvciB3aGVuIHRoZSBzdHJlYW0gaXMgZXJy
b3JlZCAKK1BBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHVuZGVybHlpbmcgc291cmNl
IG1ldGhvZHMgYXMgbWV0aG9kcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhl
IGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGdpdmUgZGVzaXJlZFNpemUgb2YgMSB0byBzdGFydCwg
ZGVjcmVhc2luZyBieSAxIHBlciBlbnF1ZXVlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBzdHJhdGVn
aWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91bGQgY29udGludWUgZ2l2aW5nIGRlc2lyZWRT
aXplIG9mIDEgaWYgdGhlIGNodW5rcyBhcmUgcmVhZCBpbW1lZGlhdGVseSAKK1BBU1MgUmVhZGFi
bGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYSByYW5kb20gcHVzaCBzb3VyY2Ug
CitQQVNTIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgc3luYyBw
dWxsIHNvdXJjZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRp
bmcgYW4gYXN5bmMgcHVsbCBzb3VyY2UgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVy
YWwuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNTI0MWZmZThm
MDcyZmJmZDVmNjc2YzA2OWYxNTRiNDI5YjAxNDZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvZ2VuZXJhbC5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3Jr
ZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvcnMtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImdlbmVyYWwuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD4KKyd1c2Ugc3RyaWN0JzsKK3dvcmtlcl90ZXN0KCdnZW5lcmFs
LmpzJyk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuanMgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9nZW5lcmFsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0ZDFhNGE2Y2E0MDNjZGY0ZDU0NGI1
MGZiNmUxMjY2NTM2ZmI3M2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFs
LmpzCkBAIC0wLDAgKzEsODMxIEBACisndXNlIHN0cmljdCc7CisKK2lmIChzZWxmLmltcG9ydFNj
cmlwdHMpIHsKKyAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvdGVzdC11dGlscy5q
cycpOworICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9ycy11dGlscy5qcycpOwor
ICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnKTsKK30KKwor
dGVzdCgoKSA9PiB7CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKCk7IC8vIFJlYWRhYmxlU3RyZWFt
IGNvbnN0cnVjdGVkIHdpdGggbm8gcGFyYW1ldGVycworICBuZXcgUmVhZGFibGVTdHJlYW0oeyB9
KTsgLy8gUmVhZGFibGVTdHJlYW0gY29uc3RydWN0ZWQgd2l0aCBhbiBlbXB0eSBvYmplY3QgYXMg
cGFyYW1ldGVyCisgIG5ldyBSZWFkYWJsZVN0cmVhbSh1bmRlZmluZWQpOyAvLyBSZWFkYWJsZVN0
cmVhbSBjb25zdHJ1Y3RlZCB3aXRoIHVuZGVmaW5lZCBhcyBwYXJhbWV0ZXIKKworICBsZXQgeDsK
KyAgbmV3IFJlYWRhYmxlU3RyZWFtKHgpOyAvLyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RlZCB3
aXRoIGFuIHVuZGVmaW5lZCB2YXJpYWJsZSBhcyBwYXJhbWV0ZXIKKworfSwgJ1JlYWRhYmxlU3Ry
ZWFtIGNhbiBiZSBjb25zdHJ1Y3RlZCB3aXRoIG5vIGVycm9ycycpOworCit0ZXN0KCgpID0+IHsK
KworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3Ry
ZWFtKG51bGwpLCAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHdoZW4gdGhlIHNvdXJjZSBpcyBu
dWxsJyk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBjYW5cJ3QgYmUgY29uc3RydWN0ZWQgd2l0aCBn
YXJiYWdlJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGNvbnN0IG1ldGhvZHMgPSBbJ2NhbmNlbCcs
ICdjb25zdHJ1Y3RvcicsICdnZXRSZWFkZXInLCAncGlwZVRocm91Z2gnLCAncGlwZVRvJywgJ3Rl
ZSddOworICBjb25zdCBwcm9wZXJ0aWVzID0gbWV0aG9kcy5jb25jYXQoWydsb2NrZWQnXSkuc29y
dCgpOworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHByb3Rv
ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHJzKTsKKworICBhc3NlcnRfYXJyYXlfZXF1YWxzKE9i
amVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvKS5zb3J0KCksIHByb3BlcnRpZXMsICdzaG91
bGQgaGF2ZSBhbGwgdGhlIGNvcnJlY3QgbWV0aG9kcycpOworCisgIGZvciAoY29uc3QgbSBvZiBt
ZXRob2RzKSB7CisgICAgY29uc3QgcHJvcERlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKHByb3RvLCBtKTsKKyAgICBhc3NlcnRfZmFsc2UocHJvcERlc2MuZW51bWVyYWJsZSwg
J21ldGhvZCBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUnKTsKKyAgICBhc3NlcnRfdHJ1ZShwcm9w
RGVzYy5jb25maWd1cmFibGUsICdtZXRob2Qgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZScpOworICAg
IGFzc2VydF90cnVlKHByb3BEZXNjLndyaXRhYmxlLCAnbWV0aG9kIHNob3VsZCBiZSB3cml0YWJs
ZScpOworICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJzW21dLCAnZnVuY3Rpb24nLCAnbWV0aG9k
IHNob3VsZCBiZSBhIGZ1bmN0aW9uJyk7CisgIH0KKworICBjb25zdCBsb2NrZWRQcm9wRGVzYyA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sICdsb2NrZWQnKTsKKyAgYXNz
ZXJ0X2ZhbHNlKGxvY2tlZFByb3BEZXNjLmVudW1lcmFibGUsICdsb2NrZWQgc2hvdWxkIGJlIG5v
bi1lbnVtZXJhYmxlJyk7CisgIGFzc2VydF9lcXVhbHMobG9ja2VkUHJvcERlc2Mud3JpdGFibGUs
IHVuZGVmaW5lZCwgJ2xvY2tlZCBzaG91bGQgbm90IGJlIGEgZGF0YSBwcm9wZXJ0eScpOworICBh
c3NlcnRfZXF1YWxzKHR5cGVvZiBsb2NrZWRQcm9wRGVzYy5nZXQsICdmdW5jdGlvbicsICdsb2Nr
ZWQgc2hvdWxkIGhhdmUgYSBnZXR0ZXInKTsKKyAgYXNzZXJ0X2VxdWFscyhsb2NrZWRQcm9wRGVz
Yy5zZXQsIHVuZGVmaW5lZCwgJ2xvY2tlZCBzaG91bGQgbm90IGhhdmUgYSBzZXR0ZXInKTsKKyAg
YXNzZXJ0X3RydWUobG9ja2VkUHJvcERlc2MuY29uZmlndXJhYmxlLCAnbG9ja2VkIHNob3VsZCBi
ZSBjb25maWd1cmFibGUnKTsKKworICBhc3NlcnRfZXF1YWxzKHJzLmNhbmNlbC5sZW5ndGgsIDEs
ICdjYW5jZWwgc2hvdWxkIGhhdmUgMSBwYXJhbWV0ZXInKTsKKyAgYXNzZXJ0X2VxdWFscyhycy5j
b25zdHJ1Y3Rvci5sZW5ndGgsIDAsICdjb25zdHJ1Y3RvciBzaG91bGQgaGF2ZSBubyBwYXJhbWV0
ZXJzJyk7CisgIGFzc2VydF9lcXVhbHMocnMuZ2V0UmVhZGVyLmxlbmd0aCwgMCwgJ2dldFJlYWRl
ciBzaG91bGQgaGF2ZSBubyBwYXJhbWV0ZXJzJyk7CisgIGFzc2VydF9lcXVhbHMocnMucGlwZVRo
cm91Z2gubGVuZ3RoLCAyLCAncGlwZVRocm91Z2ggc2hvdWxkIGhhdmUgMiBwYXJhbWV0ZXJzJyk7
CisgIGFzc2VydF9lcXVhbHMocnMucGlwZVRvLmxlbmd0aCwgMSwgJ3BpcGVUbyBzaG91bGQgaGF2
ZSAxIHBhcmFtZXRlcicpOworICBhc3NlcnRfZXF1YWxzKHJzLnRlZS5sZW5ndGgsIDAsICd0ZWUg
c2hvdWxkIGhhdmUgbm8gcGFyYW1ldGVycycpOworCit9LCAnUmVhZGFibGVTdHJlYW0gaW5zdGFu
Y2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2YgcHJvcGVydGllcycpOworCit0ZXN0
KCgpID0+IHsKKworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4geworICAg
IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHN0YXJ0OiAncG90YXRvJyB9KTsKKyAgfSwgJ2NvbnN0cnVj
dG9yIHNob3VsZCB0aHJvdyB3aGVuIHN0YXJ0IGlzIG5vdCBhIGZ1bmN0aW9uJyk7CisKK30sICdS
ZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZm9yIG5vbi1mdW5jdGlvbiBz
dGFydCBhcmd1bWVudHMnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFt
KHsgY2FuY2VsOiAnMicgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4g
Z2V0IGluaXRpYWwgZ2FyYmFnZSBhcyBjYW5jZWwgYXJndW1lbnQnKTsKKwordGVzdCgoKSA9PiB7
CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKHsgcHVsbDogeyB9IH0pOworCit9LCAnUmVhZGFibGVT
dHJlYW0gY29uc3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgcHVsbCBhcmd1bWVu
dCcpOworCit0ZXN0KCgpID0+IHsKKworICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKKworICBj
b25zdCBzb3VyY2UgPSB7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgYXNzZXJ0X2Vx
dWFscyh0aGlzLCBzb3VyY2UsICdzb3VyY2UgaXMgdGhpcyBkdXJpbmcgc3RhcnQnKTsKKworICAg
ICAgY29uc3QgbWV0aG9kcyA9IFsnY2xvc2UnLCAnZW5xdWV1ZScsICdlcnJvcicsICdjb25zdHJ1
Y3RvciddOworICAgICAgY29uc3QgcHJvcGVydGllcyA9IFsnZGVzaXJlZFNpemUnXS5jb25jYXQo
bWV0aG9kcykuc29ydCgpOworICAgICAgY29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBl
T2YoY29udHJvbGxlcik7CisKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoT2JqZWN0LmdldE93
blByb3BlcnR5TmFtZXMocHJvdG8pLnNvcnQoKSwgcHJvcGVydGllcywKKyAgICAgICAgJ3RoZSBj
b250cm9sbGVyIHNob3VsZCBoYXZlIHRoZSByaWdodCBwcm9wZXJ0aWVzJyk7CisKKyAgICAgIGZv
ciAoY29uc3QgbSBvZiBtZXRob2RzKSB7CisgICAgICAgIGNvbnN0IHByb3BEZXNjID0gT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgbSk7CisgICAgICAgIGFzc2VydF9lcXVh
bHModHlwZW9mIGNvbnRyb2xsZXJbbV0sICdmdW5jdGlvbicsIGBzaG91bGQgaGF2ZSBhICR7bX0g
bWV0aG9kYCk7CisgICAgICAgIGFzc2VydF9mYWxzZShwcm9wRGVzYy5lbnVtZXJhYmxlLCBtICsg
JyBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUnKTsKKyAgICAgICAgYXNzZXJ0X3RydWUocHJvcERl
c2MuY29uZmlndXJhYmxlLCBtICsgJyBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7CisgICAgICAg
IGFzc2VydF90cnVlKHByb3BEZXNjLndyaXRhYmxlLCBtICsgJyBzaG91bGQgYmUgd3JpdGFibGUn
KTsKKyAgICAgIH0KKworICAgICAgY29uc3QgZGVzaXJlZFNpemVQcm9wRGVzYyA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sICdkZXNpcmVkU2l6ZScpOworICAgICAgYXNz
ZXJ0X2ZhbHNlKGRlc2lyZWRTaXplUHJvcERlc2MuZW51bWVyYWJsZSwgJ2Rlc2lyZWRTaXplIHNo
b3VsZCBiZSBub24tZW51bWVyYWJsZScpOworICAgICAgYXNzZXJ0X2VxdWFscyhkZXNpcmVkU2l6
ZVByb3BEZXNjLndyaXRhYmxlLCB1bmRlZmluZWQsICdkZXNpcmVkU2l6ZSBzaG91bGQgbm90IGJl
IGEgZGF0YSBwcm9wZXJ0eScpOworICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgZGVzaXJlZFNp
emVQcm9wRGVzYy5nZXQsICdmdW5jdGlvbicsICdkZXNpcmVkU2l6ZSBzaG91bGQgaGF2ZSBhIGdl
dHRlcicpOworICAgICAgYXNzZXJ0X2VxdWFscyhkZXNpcmVkU2l6ZVByb3BEZXNjLnNldCwgdW5k
ZWZpbmVkLCAnZGVzaXJlZFNpemUgc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyJyk7CisgICAgICBh
c3NlcnRfdHJ1ZShkZXNpcmVkU2l6ZVByb3BEZXNjLmNvbmZpZ3VyYWJsZSwgJ2Rlc2lyZWRTaXpl
IHNob3VsZCBiZSBjb25maWd1cmFibGUnKTsKKworICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9s
bGVyLmNsb3NlLmxlbmd0aCwgMCwgJ2Nsb3NlIHNob3VsZCBoYXZlIG5vIHBhcmFtZXRlcnMnKTsK
KyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5jb25zdHJ1Y3Rvci5sZW5ndGgsIDEsICdj
b25zdHJ1Y3RvciBzaG91bGQgaGF2ZSAxIHBhcmFtZXRlcicpOworICAgICAgYXNzZXJ0X2VxdWFs
cyhjb250cm9sbGVyLmVucXVldWUubGVuZ3RoLCAxLCAnZW5xdWV1ZSBzaG91bGQgaGF2ZSAxIHBh
cmFtZXRlcicpOworICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmVycm9yLmxlbmd0aCwg
MSwgJ2Vycm9yIHNob3VsZCBoYXZlIDEgcGFyYW1ldGVyJyk7CisKKyAgICAgIHN0YXJ0Q2FsbGVk
ID0gdHJ1ZTsKKyAgICB9CisgIH07CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKHNvdXJjZSk7Cisg
IGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0IHNo
b3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgcHJvcGVyIHBhcmFtZXRlcnMnKTsKKwordGVzdCgoKSA9
PiB7CisKKyAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisgIGNvbnN0IHNvdXJjZSA9IHsKKyAg
ICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBjb25zdCBwcm9wZXJ0aWVzID0gWydjbG9zZScs
ICdjb25zdHJ1Y3RvcicsICdkZXNpcmVkU2l6ZScsICdlbnF1ZXVlJywgJ2Vycm9yJ107CisgICAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE9iamVjdC5n
ZXRQcm90b3R5cGVPZihjb250cm9sbGVyKSkuc29ydCgpLCBwcm9wZXJ0aWVzLAorICAgICAgICAn
cHJvdG90eXBlIHNob3VsZCBoYXZlIHRoZSByaWdodCBwcm9wZXJ0aWVzJyk7CisKKyAgICAgIGNv
bnRyb2xsZXIudGVzdCA9ICcnOworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhPYmplY3QuZ2V0
T3duUHJvcGVydHlOYW1lcyhPYmplY3QuZ2V0UHJvdG90eXBlT2YoY29udHJvbGxlcikpLnNvcnQo
KSwgcHJvcGVydGllcywKKyAgICAgICAgJ3Byb3RvdHlwZSBzaG91bGQgc3RpbGwgaGF2ZSB0aGUg
cmlnaHQgcHJvcGVydGllcycpOworICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoT2JqZWN0LmdldE93
blByb3BlcnR5TmFtZXMoY29udHJvbGxlcikuaW5kZXhPZigndGVzdCcpLCAtMSwKKyAgICAgICAg
JyJ0ZXN0IiBzaG91bGQgYmUgYSBwcm9wZXJ0eSBvZiB0aGUgY29udHJvbGxlcicpOworCisgICAg
ICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgfQorICB9OworCisgIG5ldyBSZWFkYWJsZVN0cmVh
bShzb3VyY2UpOworICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7CisKK30sICdSZWFkYWJsZVN0
cmVhbSBzdGFydCBjb250cm9sbGVyIHBhcmFtZXRlciBzaG91bGQgYmUgZXh0ZW5zaWJsZScpOwor
Citwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGZ1bmN0aW9uIFNpbXBsZVN0cmVhbVNvdXJjZSgp
IHt9CisgIGxldCByZXNvbHZlOworICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UociA9PiBy
ZXNvbHZlID0gcik7CisgIFNpbXBsZVN0cmVhbVNvdXJjZS5wcm90b3R5cGUgPSB7CisgICAgc3Rh
cnQ6IHJlc29sdmUKKyAgfTsKKworICBuZXcgUmVhZGFibGVTdHJlYW0obmV3IFNpbXBsZVN0cmVh
bVNvdXJjZSgpKTsKKyAgcmV0dXJuIHByb21pc2U7CisKK30sICdSZWFkYWJsZVN0cmVhbSBzaG91
bGQgYmUgYWJsZSB0byBjYWxsIHN0YXJ0IG1ldGhvZCB3aXRoaW4gcHJvdG90eXBlIGNoYWluIG9m
IGl0cyBzb3VyY2UnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgcmV0dXJuIGRlbGF5KDUp
LnRoZW4oKCkgPT4geworICAgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICAgICAgYy5jbG9zZSgp
OworICAgICAgfSk7CisgICAgfQorICB9KTsKKworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFk
ZXIoKTsKKyAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKKyAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICd2YWx1ZSByZWFkIHNo
b3VsZCBiZSB0aGUgb25lIGVucXVldWVkJyk7CisgICAgcmV0dXJuIHJlYWRlci5jbG9zZWQ7Cisg
IH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJu
IGEgcHJvbWlzZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHRoZUVycm9y
ID0gbmV3IEVycm9yKCdyZWplY3RlZCEnKTsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgIHN0YXJ0KCkgeworICAgICAgcmV0dXJuIGRlbGF5KDEpLnRoZW4oKCkgPT4geyB0
aHJvdyB0aGVFcnJvcjsgfSk7CisgICAgfQorICB9KTsKKworICByZXR1cm4gcnMuZ2V0UmVhZGVy
KCkuY2xvc2VkLnRoZW4oKCkgPT4geworICAgIGFzc2VydF91bnJlYWNoZWQoJ2Nsb3NlZCBwcm9t
aXNlIHNob3VsZCBiZSByZWplY3RlZCcpOworICB9LCBlID0+IHsKKyAgICBhc3NlcnRfZXF1YWxz
KGUsIHRoZUVycm9yLCAncHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgc2FtZSBl
cnJvcicpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxl
IHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJlamVjdCBpdCcpOworCitwcm9taXNlX3Rlc3QoKCkg
PT4geworCisgIGNvbnN0IG9iamVjdHMgPSBbCisgICAgeyBwb3RhdG86ICdHaXZlIG1lIG1vcmUh
JyB9LAorICAgICd0ZXN0JywKKyAgICAxCisgIF07CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGZvciAoY29uc3QgbyBvZiBvYmplY3Rz
KSB7CisgICAgICAgIGMuZW5xdWV1ZShvKTsKKyAgICAgIH0KKyAgICAgIGMuY2xvc2UoKTsKKyAg
ICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIHJldHVy
biBQcm9taXNlLmFsbChbcmVhZGVyLnJlYWQoKSwgcmVhZGVyLnJlYWQoKSwgcmVhZGVyLnJlYWQo
KSwgcmVhZGVyLmNsb3NlZF0pLnRoZW4ociA9PiB7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMo
clswXSwgeyB2YWx1ZTogb2JqZWN0c1swXSwgZG9uZTogZmFsc2UgfSwgJ3ZhbHVlIHJlYWQgc2hv
dWxkIGJlIHRoZSBvbmUgZW5xdWV1ZWQnKTsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyWzFd
LCB7IHZhbHVlOiBvYmplY3RzWzFdLCBkb25lOiBmYWxzZSB9LCAndmFsdWUgcmVhZCBzaG91bGQg
YmUgdGhlIG9uZSBlbnF1ZXVlZCcpOworICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJbMl0sIHsg
dmFsdWU6IG9iamVjdHNbMl0sIGRvbmU6IGZhbHNlIH0sICd2YWx1ZSByZWFkIHNob3VsZCBiZSB0
aGUgb25lIGVucXVldWVkJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gc2hvdWxkIGJl
IGFibGUgdG8gZW5xdWV1ZSBkaWZmZXJlbnQgb2JqZWN0cy4nKTsKKworcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKworICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcigncHVsbCBmYWlsdXJlJyk7CisgIGNv
bnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKCkgeworICAgICAgcmV0dXJu
IFByb21pc2UucmVqZWN0KGVycm9yKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9
IHJzLmdldFJlYWRlcigpOworCisgIGxldCBjbG9zZWQgPSBmYWxzZTsKKyAgbGV0IHJlYWQgPSBm
YWxzZTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHJlYWRlci5jbG9zZWQudGhlbigo
KSA9PiB7CisgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdjbG9zZWQgc2hvdWxkIGJlIHJlamVjdGVk
Jyk7CisgICAgfSwgZSA9PiB7CisgICAgICBjbG9zZWQgPSB0cnVlOworICAgICAgYXNzZXJ0X3Ry
dWUocmVhZCk7CisgICAgICBhc3NlcnRfZXF1YWxzKGUsIGVycm9yLCAnY2xvc2VkIHNob3VsZCBi
ZSByZWplY3RlZCB3aXRoIHRoZSB0aHJvd24gZXJyb3InKTsKKyAgICB9KSwKKyAgICByZWFkZXIu
cmVhZCgpLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X3VucmVhY2hlZCgncmVhZCgpIHNob3Vs
ZCBiZSByZWplY3RlZCcpOworICAgIH0sIGUgPT4geworICAgICAgcmVhZCA9IHRydWU7CisgICAg
ICBhc3NlcnRfZmFsc2UoY2xvc2VkKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoZSwgZXJyb3IsICdy
ZWFkKCkgc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdGhlIHRocm93biBlcnJvcicpOworICAgIH0p
CisgIF0pOworCit9LCAnUmVhZGFibGVTdHJlYW06IGlmIHB1bGwgcmVqZWN0cywgaXQgc2hvdWxk
IGVycm9yIHRoZSBzdHJlYW0nKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgcHVs
bENvdW50ID0gMDsKKyAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7CisK
KyAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydCgpIHsKKyAgICAgIHJldHVybiBzdGFy
dFByb21pc2U7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgcHVsbENvdW50Kys7CisgICAg
fQorICB9KTsKKworICByZXR1cm4gc3RhcnRQcm9taXNlLnRoZW4oKCkgPT4geworICAgIGFzc2Vy
dF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIG9uY2Ugc3RhcnQg
ZmluaXNoZXMnKTsKKyAgICByZXR1cm4gZGVsYXkoMTApOworICB9KS50aGVuKCgpID0+IHsKKyAg
ICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFj
dGx5IG9uY2UnKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2Fs
bCBwdWxsIG9uY2UgdXBvbiBzdGFydGluZyB0aGUgc3RyZWFtJyk7CisKK3Byb21pc2VfdGVzdCgo
KSA9PiB7CisKKyAgbGV0IHB1bGxDb3VudCA9IDA7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oeworICAgIHB1bGwoYykgeworICAgICAgLy8gRG9uJ3QgZW5xdWV1ZSBpbW1lZGlh
dGVseSBhZnRlciBzdGFydC4gV2Ugd2FudCB0aGUgc3RyZWFtIHRvIGJlIGVtcHR5IHdoZW4gd2Ug
Y2FsbCAucmVhZCgpIG9uIGl0LgorICAgICAgaWYgKHB1bGxDb3VudCA+IDApIHsKKyAgICAgICAg
Yy5lbnF1ZXVlKHB1bGxDb3VudCk7CisgICAgICB9CisgICAgICArK3B1bGxDb3VudDsKKyAgICB9
CisgIH0pOworCisgIHJldHVybiBkZWxheSgxKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1
YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBvbmNlIHN0YXJ0IGZpbmlz
aGVzJyk7CisKKyAgICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKyAgICBjb25zdCBy
ZWFkID0gcmVhZGVyLnJlYWQoKTsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMiwgJ3B1
bGwgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIHJlYWQgaXMgY2FsbGVkJyk7CisgICAgcmV0dXJuIHJl
YWQ7CisgIH0pLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwg
MywgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBhZ2FpbiBpbiByZWFjdGlvbiB0byBjYWxsaW5nIHJl
YWQnKTsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IDEsIGRvbmU6
IGZhbHNlIH0sICd0aGUgcmVzdWx0IHJlYWQgc2hvdWxkIGJlIHRoZSBvbmUgZW5xdWV1ZWQnKTsK
KyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCB3aGVuIHRyeWlu
ZyB0byByZWFkIGZyb20gYSBzdGFydGVkLCBlbXB0eSBzdHJlYW0nKTsKKworcHJvbWlzZV90ZXN0
KCgpID0+IHsKKworICBsZXQgcHVsbENvdW50ID0gMDsKKyAgY29uc3Qgc3RhcnRQcm9taXNlID0g
UHJvbWlzZS5yZXNvbHZlKCk7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewor
ICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAgcmV0dXJuIHN0YXJ0
UHJvbWlzZTsKKyAgICB9LAorICAgIHB1bGwoKSB7CisgICAgICBwdWxsQ291bnQrKzsKKyAgICB9
CisgIH0pOworCisgIGNvbnN0IHJlYWQgPSBycy5nZXRSZWFkZXIoKS5yZWFkKCk7CisgIGFzc2Vy
dF9lcXVhbHMocHVsbENvdW50LCAwLCAnY2FsbGluZyByZWFkKCkgc2hvdWxkIG5vdCBjYXVzZSBw
dWxsIHRvIGJlIGNhbGxlZCB5ZXQnKTsKKworICByZXR1cm4gc3RhcnRQcm9taXNlLnRoZW4oKCkg
PT4geworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2Fs
bGVkIG9uY2Ugc3RhcnQgZmluaXNoZXMnKTsKKyAgICByZXR1cm4gcmVhZDsKKyAgfSkudGhlbihy
ID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZh
bHNlIH0sICdmaXJzdCByZWFkKCkgc2hvdWxkIHJldHVybiBmaXJzdCBjaHVuaycpOworICAgIGFz
c2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxs
ZWQgYWdhaW4nKTsKKyAgICByZXR1cm4gZGVsYXkoMTApOworICB9KS50aGVuKCgpID0+IHsKKyAg
ICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFj
dGx5IG9uY2UnKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2Fs
bCBwdWxsIG9uY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBiZWZvcmUgc3RhcnQg
ZnVsZmlsbHMnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgcHVsbENvdW50ID0g
MDsKKyAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7CisKKyAgY29uc3Qg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1
ZSgnYScpOworICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKKyAgICB9LAorICAgIHB1bGwoKSB7
CisgICAgICBwdWxsQ291bnQrKzsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBzdGFydFByb21p
c2UudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAsICdwdWxsIHNo
b3VsZCBub3QgYmUgY2FsbGVkIG9uY2Ugc3RhcnQgZmluaXNoZXMsIHNpbmNlIHRoZSBxdWV1ZSBp
cyBmdWxsJyk7CisKKyAgICBjb25zdCByZWFkID0gcnMuZ2V0UmVhZGVyKCkucmVhZCgpOworICAg
IGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAnY2FsbGluZyByZWFkKCkgc2hvdWxkIGNhdXNl
IHB1bGwgdG8gYmUgY2FsbGVkIGltbWVkaWF0ZWx5Jyk7CisgICAgcmV0dXJuIHJlYWQ7CisgIH0p
LnRoZW4ociA9PiB7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBk
b25lOiBmYWxzZSB9LCAnZmlyc3QgcmVhZCgpIHNob3VsZCByZXR1cm4gZmlyc3QgY2h1bmsnKTsK
KyAgICByZXR1cm4gZGVsYXkoMTApOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1
YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IG9uY2UnKTsK
KyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2Ug
b24gYSBub24tZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBhZnRlciBzdGFydCBmdWxmaWxscycpOwor
Citwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBwdWxsQ291bnQgPSAwOworICBsZXQgY29u
dHJvbGxlcjsKKyAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7CisKKyAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNv
bnRyb2xsZXIgPSBjOworICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKKyAgICB9LAorICAgIHB1
bGwoKSB7CisgICAgICArK3B1bGxDb3VudDsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRl
ciA9IHJzLmdldFJlYWRlcigpOworICByZXR1cm4gc3RhcnRQcm9taXNlLnRoZW4oKCkgPT4gewor
ICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNh
bGxlZCBvbmNlIGJ5IHRoZSB0aW1lIHRoZSBzdHJlYW0gc3RhcnRzJyk7CisKKyAgICBjb250cm9s
bGVyLmVucXVldWUoJ2EnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwg
c2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkIGFnYWluIGFmdGVyIGVucXVldWUnKTsKKworICAg
IHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1
YWxzKHB1bGxDb3VudCwgMiwgJ3B1bGwgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgYWdhaW4gYWZ0
ZXIgcmVhZCcpOworCisgICAgcmV0dXJuIGRlbGF5KDEwKTsKKyAgfSkudGhlbigoKSA9PiB7Cisg
ICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDIsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgZXhh
Y3RseSB0d2ljZScpOworICB9KTsKK30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVs
bCBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIG5vdCBkcmFpbmlu
ZycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBwdWxsQ291bnQgPSAwOworICBs
ZXQgY29udHJvbGxlcjsKKyAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7
CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAg
ICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKKyAgICB9LAor
ICAgIHB1bGwoKSB7CisgICAgICArK3B1bGxDb3VudDsKKyAgICB9CisgIH0pOworCisgIGNvbnN0
IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIHJldHVybiBzdGFydFByb21pc2UudGhlbigo
KSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBoYXZl
IGJlZW4gY2FsbGVkIG9uY2UgYnkgdGhlIHRpbWUgdGhlIHN0cmVhbSBzdGFydHMnKTsKKworICAg
IGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAx
LCAncHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQgYWdhaW4gYWZ0ZXIgZW5xdWV1ZScp
OworCisgICAgY29udHJvbGxlci5jbG9zZSgpOworCisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7
CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVs
bCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQgYSBzZWNvbmQgdGltZSBhZnRlciByZWFkJyk7
CisKKyAgICByZXR1cm4gZGVsYXkoMTApOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRf
ZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IG9uY2Un
KTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwoKSBp
biByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIGRyYWluaW5nJyk7CisK
K3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHJlc29sdmU7CisgIGxldCByZXR1cm5lZFBy
b21pc2U7CisgIGxldCB0aW1lc0NhbGxlZCA9IDA7CisgIGNvbnN0IHN0YXJ0UHJvbWlzZSA9IFBy
b21pc2UucmVzb2x2ZSgpOworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAg
ICBzdGFydCgpIHsKKyAgICAgIHJldHVybiBzdGFydFByb21pc2U7CisgICAgfSwKKyAgICBwdWxs
KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgrK3RpbWVzQ2FsbGVkKTsKKyAgICAgIHJldHVybmVkUHJv
bWlzZSA9IG5ldyBQcm9taXNlKHIgPT4gcmVzb2x2ZSA9IHIpOworICAgICAgcmV0dXJuIHJldHVy
bmVkUHJvbWlzZTsKKyAgICB9CisgIH0pOworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIo
KTsKKworICByZXR1cm4gc3RhcnRQcm9taXNlLnRoZW4oKCkgPT4geworICAgIHJldHVybiByZWFk
ZXIucmVhZCgpOworICB9KS50aGVuKHJlc3VsdDEgPT4geworICAgIGFzc2VydF9lcXVhbHModGlt
ZXNDYWxsZWQsIDEsCisgICAgICAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlIGFm
dGVyIHN0YXJ0LCBidXQgbm90IHlldCBoYXZlIGJlZW4gY2FsbGVkIGEgc2Vjb25kIHRpbWUnKTsK
KyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQxLCB7IHZhbHVlOiAxLCBkb25lOiBmYWxz
ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggdGhlIGVucXVldWVkIHZhbHVlJyk7CisK
KyAgICByZXR1cm4gZGVsYXkoMTApOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1
YWxzKHRpbWVzQ2FsbGVkLCAxLCAnYWZ0ZXIgMTAgbXMsIHB1bGwgc2hvdWxkIHN0aWxsIG9ubHkg
aGF2ZSBiZWVuIGNhbGxlZCBvbmNlJyk7CisKKyAgICByZXNvbHZlKCk7CisgICAgcmV0dXJuIHJl
dHVybmVkUHJvbWlzZTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyh0aW1l
c0NhbGxlZCwgMiwKKyAgICAgICdhZnRlciB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSBwdWxsIGlz
IGZ1bGZpbGxlZCwgcHVsbCBzaG91bGQgYmUgY2FsbGVkIGEgc2Vjb25kIHRpbWUnKTsKKyAgfSk7
CisKK30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50aWwgdGhlIHBy
ZXZpb3VzIHB1bGwgY2FsbFwncyBwcm9taXNlIGZ1bGZpbGxzJyk7CisKK3Byb21pc2VfdGVzdCgo
KSA9PiB7CisKKyAgbGV0IHRpbWVzQ2FsbGVkID0gMDsKKyAgY29uc3Qgc3RhcnRQcm9taXNlID0g
UHJvbWlzZS5yZXNvbHZlKCk7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oCisg
ICAgeworICAgICAgc3RhcnQoYykgeworICAgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICAgICAg
Yy5lbnF1ZXVlKCdiJyk7CisgICAgICAgIGMuZW5xdWV1ZSgnYycpOworICAgICAgICByZXR1cm4g
c3RhcnRQcm9taXNlOworICAgICAgfSwKKyAgICAgIHB1bGwoKSB7CisgICAgICAgICsrdGltZXND
YWxsZWQ7CisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICBzaXplKCkgeworICAgICAgICBy
ZXR1cm4gMTsKKyAgICAgIH0sCisgICAgICBoaWdoV2F0ZXJNYXJrOiBJbmZpbml0eQorICAgIH0K
KyAgKTsKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgcmV0dXJuIHN0YXJ0
UHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgfSkudGhl
bihyZXN1bHQxID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQxLCB7IHZhbHVl
OiAnYScsIGRvbmU6IGZhbHNlIH0sICdmaXJzdCBjaHVuayBzaG91bGQgYmUgYXMgZXhwZWN0ZWQn
KTsKKworICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50aGVuKHJlc3VsdDIgPT4gewor
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDIsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFs
c2UgfSwgJ3NlY29uZCBjaHVuayBzaG91bGQgYmUgYXMgZXhwZWN0ZWQnKTsKKworICAgIHJldHVy
biByZWFkZXIucmVhZCgpOworICB9KS50aGVuKHJlc3VsdDMgPT4geworICAgIGFzc2VydF9vYmpl
Y3RfZXF1YWxzKHJlc3VsdDMsIHsgdmFsdWU6ICdjJywgZG9uZTogZmFsc2UgfSwgJ3RoaXJkIGNo
dW5rIHNob3VsZCBiZSBhcyBleHBlY3RlZCcpOworCisgICAgcmV0dXJuIGRlbGF5KDEwKTsKKyAg
fSkudGhlbigoKSA9PiB7CisgICAgLy8gT25jZSBmb3IgYWZ0ZXIgc3RhcnQsIGFuZCBvbmNlIGZv
ciBldmVyeSByZWFkLgorICAgIGFzc2VydF9lcXVhbHModGltZXNDYWxsZWQsIDQsICdwdWxsKCkg
c2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IGZvdXIgdGltZXMnKTsKKyAgfSk7CisKK30sICdSZWFk
YWJsZVN0cmVhbTogc2hvdWxkIHB1bGwgYWZ0ZXIgc3RhcnQsIGFuZCBhZnRlciBldmVyeSByZWFk
Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHRpbWVzQ2FsbGVkID0gMDsKKyAg
Y29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7CisKKyAgY29uc3QgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgnYScp
OworICAgICAgYy5jbG9zZSgpOworICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKKyAgICB9LAor
ICAgIHB1bGwoKSB7CisgICAgICArK3RpbWVzQ2FsbGVkOworICAgIH0KKyAgfSk7CisKKyAgY29u
c3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisgIHJldHVybiBzdGFydFByb21pc2UudGhlbigo
KSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgMCwgJ2FmdGVyIHN0YXJ0IGZp
bmlzaGVzLCBwdWxsIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCcpOworCisgICAgcmV0dXJu
IHJlYWRlci5yZWFkKCk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHModGlt
ZXNDYWxsZWQsIDAsICdyZWFkaW5nIHNob3VsZCBub3QgaGF2ZSB0cmlnZ2VyZWQgYSBwdWxsIGNh
bGwnKTsKKworICAgIHJldHVybiByZWFkZXIuY2xvc2VkOworICB9KS50aGVuKCgpID0+IHsKKyAg
ICBhc3NlcnRfZXF1YWxzKHRpbWVzQ2FsbGVkLCAwLCAnc3RyZWFtIHNob3VsZCBoYXZlIGNsb3Nl
ZCB3aXRoIHN0aWxsIG5vIGNhbGxzIHRvIHB1bGwnKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0
cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgYWZ0ZXIgc3RhcnQgaWYgdGhlIHN0cmVhbSBpcyBu
b3cgY2xvc2VkJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHRpbWVzQ2FsbGVk
ID0gMDsKKyAgbGV0IHJlc29sdmU7CisgIGNvbnN0IHJlYWR5ID0gbmV3IFByb21pc2UociA9PiBy
ZXNvbHZlID0gcik7CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKAorICAgIHsKKyAgICAgIHN0YXJ0
KCkge30sCisgICAgICBwdWxsKGMpIHsKKyAgICAgICAgYy5lbnF1ZXVlKCsrdGltZXNDYWxsZWQp
OworCisgICAgICAgIGlmICh0aW1lc0NhbGxlZCA9PT0gNCkgeworICAgICAgICAgIHJlc29sdmUo
KTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgc2l6ZSgpIHsKKyAg
ICAgICAgcmV0dXJuIDE7CisgICAgICB9LAorICAgICAgaGlnaFdhdGVyTWFyazogNAorICAgIH0K
KyAgKTsKKworICByZXR1cm4gcmVhZHkudGhlbigoKSA9PiB7CisgICAgLy8gYWZ0ZXIgc3RhcnQ6
IHNpemUgPSAwLCBwdWxsKCkKKyAgICAvLyBhZnRlciBlbnF1ZXVlKDEpOiBzaXplID0gMSwgcHVs
bCgpCisgICAgLy8gYWZ0ZXIgZW5xdWV1ZSgyKTogc2l6ZSA9IDIsIHB1bGwoKQorICAgIC8vIGFm
dGVyIGVucXVldWUoMyk6IHNpemUgPSAzLCBwdWxsKCkKKyAgICAvLyBhZnRlciBlbnF1ZXVlKDQp
OiBzaXplID0gNCwgZG8gbm90IHB1bGwKKyAgICBhc3NlcnRfZXF1YWxzKHRpbWVzQ2FsbGVkLCA0
LCAncHVsbCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGZvdXIgdGltZXMnKTsKKyAgfSk7CisK
K30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCBhZnRlciBlbnF1ZXVlaW5nIGZy
b20gaW5zaWRlIHB1bGwgKHdpdGggbm8gcmVhZCByZXF1ZXN0cyksIGlmIHN0cmF0ZWd5IGFsbG93
cycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBwdWxsQ2FsbGVkID0gZmFsc2U7
CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwoYykgeworICAg
ICAgcHVsbENhbGxlZCA9IHRydWU7CisgICAgICBjLmNsb3NlKCk7CisgICAgfQorICB9KTsKKwor
ICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKyAgcmV0dXJuIHJlYWRlci5jbG9zZWQu
dGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X3RydWUocHVsbENhbGxlZCk7CisgIH0pOworCit9LCAn
UmVhZGFibGVTdHJlYW0gcHVsbCBzaG91bGQgYmUgYWJsZSB0byBjbG9zZSBhIHN0cmVhbS4nKTsK
KwordGVzdCgoKSA9PiB7CisKKyAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisKKyAgbmV3IFJl
YWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBhc3NlcnRfZXF1YWxzKGMuZW5x
dWV1ZSgnYScpLCB1bmRlZmluZWQsICd0aGUgZmlyc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHVu
ZGVmaW5lZCcpOworICAgICAgYy5jbG9zZSgpOworCisgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IoKSwgKCkgPT4gYy5lbnF1ZXVlKCdiJyksICdlbnF1ZXVlIGFmdGVyIGNsb3NlIHNo
b3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOworICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOworICAg
IH0KKyAgfSk7CisKKyAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOworCit9LCAnUmVhZGFibGVT
dHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyByZWFkYWJsZSBi
dXQgZHJhaW5pbmcnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFs
c2U7CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmNs
b3NlKCk7CisKKyAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjLmVu
cXVldWUoJ2EnKSwgJ2VucXVldWUgYWZ0ZXIgY2xvc2Ugc2hvdWxkIHRocm93IGEgVHlwZUVycm9y
Jyk7CisgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgfQorICB9KTsKKworICBhc3NlcnRf
dHJ1ZShzdGFydENhbGxlZCk7CisKK30sICdSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQg
dGhyb3cgd2hlbiB0aGUgc3RyZWFtIGlzIGNsb3NlZCcpOworCit0ZXN0KCgpID0+IHsKKworICBs
ZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKKyAgY29uc3QgZXhwZWN0ZWRFcnJvciA9IG5ldyBFcnJv
cignaSBhbSBzYWQnKTsKKworICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsK
KyAgICAgIGMuZXJyb3IoZXhwZWN0ZWRFcnJvcik7CisKKyAgICAgIGFzc2VydF90aHJvd3MoZXhw
ZWN0ZWRFcnJvciwgKCkgPT4gYy5lbnF1ZXVlKCdhJyksICdlbnF1ZXVlIGFmdGVyIGVycm9yIHNo
b3VsZCB0aHJvdyB0aGF0IGVycm9yJyk7CisgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAg
fQorICB9KTsKKworICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7CisKK30sICdSZWFkYWJsZVN0
cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgdGhlIHN0b3JlZCBlcnJvciB3aGVuIHRoZSBzdHJl
YW0gaXMgZXJyb3JlZCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBzdGFydENh
bGxlZCA9IDA7CisgIGxldCBwdWxsQ2FsbGVkID0gMDsKKyAgbGV0IGNhbmNlbENhbGxlZCA9IDA7
CisKKyAgLyogZXNsaW50LWRpc2FibGUgbm8tdXNlLWJlZm9yZS1kZWZpbmUgKi8KKyAgY2xhc3Mg
U291cmNlIHsKKyAgICBzdGFydChjKSB7CisgICAgICBzdGFydENhbGxlZCsrOworICAgICAgYXNz
ZXJ0X2VxdWFscyh0aGlzLCB0aGVTb3VyY2UsICdzdGFydCgpIHNob3VsZCBiZSBjYWxsZWQgd2l0
aCB0aGUgY29ycmVjdCB0aGlzJyk7CisgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICB9CisKKyAg
ICBwdWxsKCkgeworICAgICAgcHVsbENhbGxlZCsrOworICAgICAgYXNzZXJ0X2VxdWFscyh0aGlz
LCB0aGVTb3VyY2UsICdwdWxsKCkgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBjb3JyZWN0IHRo
aXMnKTsKKyAgICB9CisKKyAgICBjYW5jZWwoKSB7CisgICAgICBjYW5jZWxDYWxsZWQrKzsKKyAg
ICAgIGFzc2VydF9lcXVhbHModGhpcywgdGhlU291cmNlLCAnY2FuY2VsKCkgc2hvdWxkIGJlIGNh
bGxlZCB3aXRoIHRoZSBjb3JyZWN0IHRoaXMnKTsKKyAgICB9CisgIH0KKyAgLyogZXNsaW50LWVu
YWJsZSBuby11c2UtYmVmb3JlLWRlZmluZSAqLworCisgIGNvbnN0IHRoZVNvdXJjZSA9IG5ldyBT
b3VyY2UoKTsKKyAgdGhlU291cmNlLmRlYnVnTmFtZSA9ICd0aGUgc291cmNlIG9iamVjdCBwYXNz
ZWQgdG8gdGhlIGNvbnN0cnVjdG9yJzsgLy8gbWFrZXMgdGVzdCBmYWlsdXJlcyBlYXNpZXIgdG8g
ZGlhZ25vc2UKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh0aGVTb3VyY2UpOwor
ICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICByZXR1cm4gcmVhZGVyLnJlYWQo
KS50aGVuKCgpID0+IHsKKyAgICByZWFkZXIucmVsZWFzZUxvY2soKTsKKyAgICBycy5jYW5jZWwo
KTsKKyAgICBhc3NlcnRfZXF1YWxzKHN0YXJ0Q2FsbGVkLCAxKTsKKyAgICBhc3NlcnRfZXF1YWxz
KHB1bGxDYWxsZWQsIDEpOworICAgIGFzc2VydF9lcXVhbHMoY2FuY2VsQ2FsbGVkLCAxKTsKKyAg
ICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3Ry
ZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRob2RzIGFzIG1ldGhvZHMnKTsK
KwordGVzdCgoKSA9PiB7CisKKyAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisgIG5ldyBSZWFk
YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2ly
ZWRTaXplLCAxKTsKKyAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAgYXNzZXJ0X2VxdWFscyhj
LmRlc2lyZWRTaXplLCAwKTsKKyAgICAgIGMuZW5xdWV1ZSgnYicpOworICAgICAgYXNzZXJ0X2Vx
dWFscyhjLmRlc2lyZWRTaXplLCAtMSk7CisgICAgICBjLmVucXVldWUoJ2MnKTsKKyAgICAgIGFz
c2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgLTIpOworICAgICAgYy5lbnF1ZXVlKCdkJyk7Cisg
ICAgICBhc3NlcnRfZXF1YWxzKGMuZGVzaXJlZFNpemUsIC0zKTsKKyAgICAgIGMuZW5xdWV1ZSgn
ZScpOworICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOworICAgIH0KKyAgfSk7CisKKyAgYXNzZXJ0
X3RydWUoc3RhcnRDYWxsZWQpOworCit9LCAnUmVhZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhl
IGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGdpdmUgZGVzaXJlZFNpemUgb2YgMSB0byBzdGFydCwg
ZGVjcmVhc2luZyBieSAxIHBlciBlbnF1ZXVlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisK
KyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAg
ICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworICBjb25z
dCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIu
ZGVzaXJlZFNpemUsIDEsICdkZXNpcmVkU2l6ZSBzaG91bGQgc3RhcnQgYXQgMScpOworICBjb250
cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRT
aXplLCAwLCAnZGVzaXJlZFNpemUgc2hvdWxkIGRlY3JlYXNlIHRvIDAgYWZ0ZXIgZmlyc3QgZW5x
dWV1ZScpOworCisgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0MSA9PiB7CisgICAg
YXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MSwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9
LCAnZmlyc3QgY2h1bmsgcmVhZCBzaG91bGQgYmUgY29ycmVjdCcpOworCisgICAgYXNzZXJ0X2Vx
dWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnZGVzaXJlZFNpemUgc2hvdWxkIGdvIHVw
IHRvIDEgYWZ0ZXIgdGhlIGZpcnN0IHJlYWQnKTsKKyAgICBjb250cm9sbGVyLmVucXVldWUoJ2In
KTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICdkZXNpcmVk
U2l6ZSBzaG91bGQgZ28gZG93biB0byAwIGFmdGVyIHRoZSBzZWNvbmQgZW5xdWV1ZScpOworCisg
ICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgIH0pLnRoZW4ocmVzdWx0MiA9PiB7CisgICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MiwgeyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LCAn
c2Vjb25kIGNodW5rIHJlYWQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKworICAgIGFzc2VydF9lcXVh
bHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBnbyB1cCB0
byAxIGFmdGVyIHRoZSBzZWNvbmQgcmVhZCcpOworICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycp
OworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJ2Rlc2lyZWRT
aXplIHNob3VsZCBnbyBkb3duIHRvIDAgYWZ0ZXIgdGhlIHRoaXJkIGVucXVldWUnKTsKKworICAg
IHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50aGVuKHJlc3VsdDMgPT4geworICAgIGFzc2Vy
dF9vYmplY3RfZXF1YWxzKHJlc3VsdDMsIHsgdmFsdWU6ICdjJywgZG9uZTogZmFsc2UgfSwgJ3Ro
aXJkIGNodW5rIHJlYWQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKworICAgIGFzc2VydF9lcXVhbHMo
Y29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBnbyB1cCB0byAx
IGFmdGVyIHRoZSB0aGlyZCByZWFkJyk7CisgICAgY29udHJvbGxlci5lbnF1ZXVlKCdkJyk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnZGVzaXJlZFNpemUg
c2hvdWxkIGdvIGRvd24gdG8gMCBhZnRlciB0aGUgZm91cnRoIGVucXVldWUnKTsKKyAgfSk7CisK
K30sICdSZWFkYWJsZVN0cmVhbSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91
bGQgY29udGludWUgZ2l2aW5nIGRlc2lyZWRTaXplIG9mIDEgaWYgdGhlIGNodW5rcyBhcmUgcmVh
ZCBpbW1lZGlhdGVseScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcmFuZG9t
U291cmNlID0gbmV3IFJhbmRvbVB1c2hTb3VyY2UoOCk7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGFzc2VydF9lcXVhbHModHlwZW9m
IGMsICdvYmplY3QnLCAnYyBzaG91bGQgYmUgYW4gb2JqZWN0IGluIHN0YXJ0Jyk7CisgICAgICBh
c3NlcnRfZXF1YWxzKHR5cGVvZiBjLmVucXVldWUsICdmdW5jdGlvbicsICdlbnF1ZXVlIHNob3Vs
ZCBiZSBhIGZ1bmN0aW9uIGluIHN0YXJ0Jyk7CisgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBj
LmNsb3NlLCAnZnVuY3Rpb24nLCAnY2xvc2Ugc2hvdWxkIGJlIGEgZnVuY3Rpb24gaW4gc3RhcnQn
KTsKKyAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGMuZXJyb3IsICdmdW5jdGlvbicsICdlcnJv
ciBzaG91bGQgYmUgYSBmdW5jdGlvbiBpbiBzdGFydCcpOworCisgICAgICByYW5kb21Tb3VyY2Uu
b25kYXRhID0gdC5zdGVwX2Z1bmMoY2h1bmsgPT4geworICAgICAgICBpZiAoIWMuZW5xdWV1ZShj
aHVuaykgPD0gMCkgeworICAgICAgICAgIHJhbmRvbVNvdXJjZS5yZWFkU3RvcCgpOworICAgICAg
ICB9CisgICAgICB9KTsKKworICAgICAgcmFuZG9tU291cmNlLm9uZW5kID0gYy5jbG9zZS5iaW5k
KGMpOworICAgICAgcmFuZG9tU291cmNlLm9uZXJyb3IgPSBjLmVycm9yLmJpbmQoYyk7CisgICAg
fSwKKworICAgIHB1bGwoYykgeworICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgYywgJ29iamVj
dCcsICdjIHNob3VsZCBiZSBhbiBvYmplY3QgaW4gcHVsbCcpOworICAgICAgYXNzZXJ0X2VxdWFs
cyh0eXBlb2YgYy5lbnF1ZXVlLCAnZnVuY3Rpb24nLCAnZW5xdWV1ZSBzaG91bGQgYmUgYSBmdW5j
dGlvbiBpbiBwdWxsJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBjLmNsb3NlLCAnZnVu
Y3Rpb24nLCAnY2xvc2Ugc2hvdWxkIGJlIGEgZnVuY3Rpb24gaW4gcHVsbCcpOworCisgICAgICBy
YW5kb21Tb3VyY2UucmVhZFN0YXJ0KCk7CisgICAgfQorICB9KTsKKworICByZXR1cm4gcmVhZGFi
bGVTdHJlYW1Ub0FycmF5KHJzKS50aGVuKGNodW5rcyA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhj
aHVua3MubGVuZ3RoLCA4LCAnOCBjaHVua3Mgc2hvdWxkIGJlIHJlYWQnKTsKKyAgICBmb3IgKGNv
bnN0IGNodW5rIG9mIGNodW5rcykgeworICAgICAgYXNzZXJ0X2VxdWFscyhjaHVuay5sZW5ndGgs
IDEyOCwgJ2NodW5rIHNob3VsZCBoYXZlIDEyOCBieXRlcycpOworICAgIH0KKyAgfSk7CisKK30s
ICdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHJhbmRvbSBwdXNo
IHNvdXJjZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gc2VxdWVu
dGlhbFJlYWRhYmxlU3RyZWFtKDEwKTsKKworICByZXR1cm4gcmVhZGFibGVTdHJlYW1Ub0FycmF5
KHJzKS50aGVuKGNodW5rcyA9PiB7CisgICAgYXNzZXJ0X3RydWUocnMuc291cmNlLmNsb3NlZCwg
J3NvdXJjZSBzaG91bGQgYmUgY2xvc2VkIGFmdGVyIGFsbCBjaHVua3MgYXJlIHJlYWQnKTsKKyAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rcywgWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDks
IDEwXSwgJ3RoZSBleHBlY3RlZCAxMCBjaHVua3Mgc2hvdWxkIGJlIHJlYWQnKTsKKyAgfSk7CisK
K30sICdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHN5bmMgcHVs
bCBzb3VyY2UnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IHNlcXVl
bnRpYWxSZWFkYWJsZVN0cmVhbSgxMCwgeyBhc3luYzogdHJ1ZSB9KTsKKworICByZXR1cm4gcmVh
ZGFibGVTdHJlYW1Ub0FycmF5KHJzKS50aGVuKGNodW5rcyA9PiB7CisgICAgYXNzZXJ0X3RydWUo
cnMuc291cmNlLmNsb3NlZCwgJ3NvdXJjZSBzaG91bGQgYmUgY2xvc2VkIGFmdGVyIGFsbCBjaHVu
a3MgYXJlIHJlYWQnKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rcywgWzEsIDIsIDMs
IDQsIDUsIDYsIDcsIDgsIDksIDEwXSwgJ3RoZSBleHBlY3RlZCAxMCBjaHVua3Mgc2hvdWxkIGJl
IHJlYWQnKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBh
ZGFwdGluZyBhbiBhc3luYyBwdWxsIHNvdXJjZScpOworCitkb25lKCk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9waXBlLXRocm91Z2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcGlwZS10
aHJvdWdoLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZTE4N2EyYzM5NWNmYTY0MjAzNTY5MGM3
NzFjZmY5NjAyMTllMDg3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcGlwZS10aHJv
dWdoLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACisKK1BBU1MgUmVhZGFibGVTdHJlYW0u
cHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3VsZCB3b3JrIGdlbmVyaWNhbGx5IG9uIGl0cyB0aGlz
IGFuZCBpdHMgYXJndW1lbnRzIAorUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRo
cm91Z2ggc2hvdWxkIHRocm93IHdoZW4gaXRzIGZpcnN0IGFyZ3VtZW50IGlzIG5vdCBjb252ZXJ0
aWJsZSB0byBhbiBvYmplY3QgCitQQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhy
b3VnaCBzaG91bGQgdGhyb3cgd2hlbiAidGhpcyIgaGFzIG5vIHBpcGVUbyBtZXRob2QgCitQQVNT
IFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCBzaG91bGQgcmV0aHJvdyBlcnJv
cnMgZnJvbSBhY2Nlc3NpbmcgcGlwZVRvLCByZWFkYWJsZSwgb3Igd3JpdGFibGUgCitQQVNTIFJl
YWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCBzaG91bGQgd29yayB3aXRoIG1pc3Np
bmcgcmVhZGFibGUsIHdyaXRhYmxlLCBvciBvcHRpb25zIAorRkFJTCBMb2FkIHBpcGUtdGhyb3Vn
aC5qcyB3aXRoIFNoYXJlZFdvcmtlciBhc3NlcnRfdW5yZWFjaGVkOiBTaGFyZWRXb3JrZXIgaXMg
dW5hdmFpbGFibGUgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCitGQUlMIFVudGl0bGVkIHVuZGVm
aW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICduYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5nZXRSZWdpc3RyYXRpb24nKQorUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRo
cm91Z2ggc2hvdWxkIHdvcmsgZ2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVu
dHMgCitQQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCBzaG91bGQgdGhy
b3cgd2hlbiBpdHMgZmlyc3QgYXJndW1lbnQgaXMgbm90IGNvbnZlcnRpYmxlIHRvIGFuIG9iamVj
dCAKK1BBU1MgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3VsZCB0aHJv
dyB3aGVuICJ0aGlzIiBoYXMgbm8gcGlwZVRvIG1ldGhvZCAKK1BBU1MgUmVhZGFibGVTdHJlYW0u
cHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3VsZCByZXRocm93IGVycm9ycyBmcm9tIGFjY2Vzc2lu
ZyBwaXBlVG8sIHJlYWRhYmxlLCBvciB3cml0YWJsZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0ucHJv
dG90eXBlLnBpcGVUaHJvdWdoIHNob3VsZCB3b3JrIHdpdGggbWlzc2luZyByZWFkYWJsZSwgd3Jp
dGFibGUsIG9yIG9wdGlvbnMgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3BpcGUtdGhyb3Vn
aC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvcGlwZS10aHJvdWdoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjJkOThk
NDVhZjQ2ZjI1ZmUwNjI2MjEwZDhmYTE5MTVjYzY0NWNmNgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL3BpcGUtdGhyb3VnaC5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIj48L3NjcmlwdD4KKworPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJwaXBlLXRocm91Z2guanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyd1c2Ugc3RyaWN0JzsK
K3dvcmtlcl90ZXN0KCdwaXBlLXRocm91Z2guanMnKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvcGlwZS10aHJvdWdoLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcGlwZS10aHJvdWdoLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQ5ODg5MjhlNzhiMThlNzNhZjQ0ZWNmNDlkZDFlNGFmODFiNmIzZWYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9waXBlLXRocm91Z2guanMKQEAgLTAsMCArMSwx
MDggQEAKKyd1c2Ugc3RyaWN0JzsKKworaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgeworICBzZWxm
LmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzJyk7CisgIHNlbGYuaW1w
b3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOworfQorCit0ZXN0KCgpID0+
IHsKKworICBsZXQgcGlwZVRvQXJndW1lbnRzOworICBjb25zdCB0aGlzVmFsdWUgPSB7CisgICAg
cGlwZVRvKCkgeworICAgICAgcGlwZVRvQXJndW1lbnRzID0gYXJndW1lbnRzOworICAgIH0KKyAg
fTsKKworICBjb25zdCBpbnB1dCA9IHsgcmVhZGFibGU6IHt9LCB3cml0YWJsZToge30gfTsKKyAg
Y29uc3Qgb3B0aW9ucyA9IHt9OworICBjb25zdCByZXN1bHQgPSBSZWFkYWJsZVN0cmVhbS5wcm90
b3R5cGUucGlwZVRocm91Z2guY2FsbCh0aGlzVmFsdWUsIGlucHV0LCBvcHRpb25zKTsKKworICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHBpcGVUb0FyZ3VtZW50cywgW2lucHV0LndyaXRhYmxlLCBvcHRp
b25zXSwKKyAgICAnY29ycmVjdCBhcmd1bWVudHMgc2hvdWxkIGJlIHBhc3NlZCB0byB0aGlzVmFs
dWUucGlwZVRvJyk7CisgIGFzc2VydF9lcXVhbHMocmVzdWx0LCBpbnB1dC5yZWFkYWJsZSwgJ3Jl
dHVybiB2YWx1ZSBzaG91bGQgYmUgdGhlIHBhc3NlZCByZWFkYWJsZSBwcm9wZXJ0eScpOworCit9
LCAnUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3VsZCB3b3JrIGdlbmVy
aWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzJyk7CisKK3Rlc3QoKCkgPT4gewor
CisgIGNvbnN0IHRoaXNWYWx1ZSA9IHsKKyAgICBwaXBlVG8oKSB7CisgICAgICBhc3NlcnRfdW5y
ZWFjaGVkKCdwaXBlVG8gc2hvdWxkIG5vdCBiZSBjYWxsZWQnKTsKKyAgICB9CisgIH07CisKKyAg
bWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ3BpcGVUaHJvdWdoJywgdGhp
c1ZhbHVlLCBbdW5kZWZpbmVkLCB7fV0pOworICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW0u
cHJvdG90eXBlLCAncGlwZVRocm91Z2gnLCB0aGlzVmFsdWUsIFtudWxsLCB7fV0pOworCit9LCAn
UmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3VsZCB0aHJvdyB3aGVuIGl0
cyBmaXJzdCBhcmd1bWVudCBpcyBub3QgY29udmVydGlibGUgdG8gYW4gb2JqZWN0Jyk7CisKK3Rl
c3QoKCkgPT4geworCisgIGNvbnN0IGFyZ3MgPSBbeyByZWFkYWJsZToge30sIHdyaXRhYmxlOiB7
fSB9LCB7fV07CisKKyAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ3Bp
cGVUaHJvdWdoJywgdW5kZWZpbmVkLCBhcmdzKTsKKyAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3Ry
ZWFtLnByb3RvdHlwZSwgJ3BpcGVUaHJvdWdoJywgbnVsbCwgYXJncyk7CisgIG1ldGhvZFRocm93
cyhSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUsICdwaXBlVGhyb3VnaCcsIDEsIGFyZ3MpOworICBt
ZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLCAncGlwZVRocm91Z2gnLCB7IHBp
cGVUbzogJ3Rlc3QnIH0sIGFyZ3MpOworCit9LCAnUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBp
cGVUaHJvdWdoIHNob3VsZCB0aHJvdyB3aGVuICJ0aGlzIiBoYXMgbm8gcGlwZVRvIG1ldGhvZCcp
OworCit0ZXN0KCgpID0+IHsKKyAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ3BvdGF0bycpOwor
CisgIGNvbnN0IHRocm93aW5nUGlwZVRvID0geworICAgIGdldCBwaXBlVG8oKSB7CisgICAgICB0
aHJvdyBlcnJvcjsKKyAgICB9CisgIH07CisgIGFzc2VydF90aHJvd3MoZXJyb3IsCisgICAgKCkg
PT4gUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoLmNhbGwodGhyb3dpbmdQaXBl
VG8sIHsgcmVhZGFibGU6IHsgfSwgd3JpdGFibGU6IHsgfSB9LCB7fSksCisgICAgJ3BpcGVUaHJv
dWdoIHNob3VsZCByZXRocm93IHRoZSBlcnJvciB0aHJvd24gYnkgcGlwZVRvJyk7CisKKyAgY29u
c3QgdGhpc1ZhbHVlID0geworICAgIHBpcGVUbygpIHsKKyAgICAgIGFzc2VydF91bnJlYWNoZWQo
J3BpcGVUbyBzaG91bGQgbm90IGJlIGNhbGxlZCcpOworICAgIH0KKyAgfTsKKworICBjb25zdCB0
aHJvd2luZ1dyaXRhYmxlID0geworICAgIHJlYWRhYmxlOiB7fSwKKyAgICBnZXQgd3JpdGFibGUo
KSB7CisgICAgICB0aHJvdyBlcnJvcjsKKyAgICB9CisgIH07CisgIGFzc2VydF90aHJvd3MoZXJy
b3IsCisgICAgKCkgPT4gUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoLmNhbGwo
dGhpc1ZhbHVlLCB0aHJvd2luZ1dyaXRhYmxlLCB7fSksCisgICAgJ3BpcGVUaHJvdWdoIHNob3Vs
ZCByZXRocm93IHRoZSBlcnJvciB0aHJvd24gYnkgdGhlIHdyaXRhYmxlIGdldHRlcicpOworCisg
IGNvbnN0IHRocm93aW5nUmVhZGFibGUgPSB7CisgICAgZ2V0IHJlYWRhYmxlKCkgeworICAgICAg
dGhyb3cgZXJyb3I7CisgICAgfSwKKyAgICB3cml0YWJsZToge30KKyAgfTsKKyAgYXNzZXJ0X3Ro
cm93cyhlcnJvciwKKyAgICAoKSA9PiBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91
Z2guY2FsbCh0aGlzVmFsdWUsIHRocm93aW5nUmVhZGFibGUsIHt9KSwKKyAgICAncGlwZVRocm91
Z2ggc2hvdWxkIHJldGhyb3cgdGhlIGVycm9yIHRocm93biBieSB0aGUgcmVhZGFibGUgZ2V0dGVy
Jyk7CisKK30sICdSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2ggc2hvdWxkIHJl
dGhyb3cgZXJyb3JzIGZyb20gYWNjZXNzaW5nIHBpcGVUbywgcmVhZGFibGUsIG9yIHdyaXRhYmxl
Jyk7CisKK3Rlc3QoKCkgPT4geworCisgIGxldCBjb3VudCA9IDA7CisgIGNvbnN0IHRoaXNWYWx1
ZSA9IHsKKyAgICBwaXBlVG8oKSB7CisgICAgICArK2NvdW50OworICAgIH0KKyAgfTsKKworICBS
ZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2guY2FsbCh0aGlzVmFsdWUsIHsgcmVh
ZGFibGU6IHt9LCB3cml0YWJsZToge30gfSk7CisgIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5w
aXBlVGhyb3VnaC5jYWxsKHRoaXNWYWx1ZSwgeyByZWFkYWJsZToge30gfSwge30pOworICBSZWFk
YWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2guY2FsbCh0aGlzVmFsdWUsIHsgd3JpdGFi
bGU6IHt9IH0sIHt9KTsKKworICBhc3NlcnRfZXF1YWxzKGNvdW50LCAzLCAncGlwZVRvIHdhcyBj
YWxsZWQgMyB0aW1lcycpOworCit9LCAnUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJv
dWdoIHNob3VsZCB3b3JrIHdpdGggbWlzc2luZyByZWFkYWJsZSwgd3JpdGFibGUsIG9yIG9wdGlv
bnMnKTsKKworZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFt
LXJlYWRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVy
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjAzODJiNjgyODYwYWRmNDY1Zjk2NTkxNTM0NGY0
M2M0YTM0ZDU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFt
LXJlYWRlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1NiBAQAorCitQQVNTIENhbiBnZXQgdGhl
IFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0bHkgCitQQVNTIFJlYWRh
YmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9yIHNob3VsZCBnZXQgYSBSZWFkYWJsZVN0cmVhbSBv
YmplY3QgYXMgYXJndW1lbnQgCitGQUlMIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGluc3RhbmNlcyBz
aG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3BlcnRpZXMgYXNzZXJ0X2VxdWFsczog
bWV0aG9kIHNob3VsZCBiZSBub24tZW51bWVyYWJsZSBleHBlY3RlZCBmYWxzZSBidXQgZ290IHRy
dWUKK1BBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHNob3VsZCBhbHdheXMgcmV0dXJu
IHRoZSBzYW1lIHByb21pc2Ugb2JqZWN0IAorUEFTUyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0
cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkg
bG9ja2VkICh2aWEgZGlyZWN0IGNvbnN0cnVjdGlvbikgCitQQVNTIEdldHRpbmcgYSBSZWFkYWJs
ZVN0cmVhbVJlYWRlciB2aWEgZ2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMg
YWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3QgY29uc3RydWN0aW9uKSAKK1BBU1MgQ29uc3RydWN0
aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZhaWwgaWYgdGhlIHN0
cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGdldFJlYWRlcikgCitQQVNTIEdldHRpbmcgYSBS
ZWFkYWJsZVN0cmVhbVJlYWRlciB2aWEgZ2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBzdHJl
YW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBnZXRSZWFkZXIpIAorUEFTUyBDb25zdHJ1Y3Rpbmcg
YSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUgT0sgaWYgdGhlIHN0cmVh
bSBpcyBjbG9zZWQgCitQQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRp
cmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlzIGVycm9yZWQgCitQQVNTIFJlYWRp
bmcgZnJvbSBhIHJlYWRlciBmb3IgYW4gZW1wdHkgc3RyZWFtIHdpbGwgd2FpdCB1bnRpbCBhIGNo
dW5rIGlzIGF2YWlsYWJsZSAKK1BBU1MgY2FuY2VsKCkgb24gYSByZWFkZXIgZG9lcyBub3QgcmVs
ZWFzZSB0aGUgcmVhZGVyIAorUEFTUyBjbG9zZWQgc2hvdWxkIGJlIGZ1bGZpbGxlZCBhZnRlciBz
dHJlYW0gaXMgY2xvc2VkICguY2xvc2VkIGFjY2VzcyBiZWZvcmUgYWNxdWlyaW5nKSAKK1BBU1Mg
Y2xvc2VkIHNob3VsZCBiZSByZWplY3RlZCBhZnRlciByZWFkZXIgcmVsZWFzZXMgaXRzIGxvY2sg
KG11bHRpcGxlIHN0cmVhbSBsb2NrcykgCitQQVNTIE11bHRpcGxlIHJlYWRlcnMgY2FuIGFjY2Vz
cyB0aGUgc3RyZWFtIGluIHNlcXVlbmNlIAorUEFTUyBDYW5ub3QgdXNlIGFuIGFscmVhZHktcmVs
ZWFzZWQgcmVhZGVyIHRvIHVubG9jayBhIHN0cmVhbSBhZ2FpbiAKK1BBU1MgY2FuY2VsKCkgb24g
YSByZWxlYXNlZCByZWFkZXIgaXMgYSBuby1vcCBhbmQgZG9lcyBub3QgcGFzcyB0aHJvdWdoIAor
UEFTUyBHZXR0aW5nIGEgc2Vjb25kIHJlYWRlciBhZnRlciBlcnJvcmluZyB0aGUgc3RyZWFtIGFu
ZCByZWxlYXNpbmcgdGhlIHJlYWRlciBzaG91bGQgc3VjY2VlZCAKK1BBU1MgUmVhZGFibGVTdHJl
YW1SZWFkZXIgY2xvc2VkIHByb21pc2Ugc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdW5kZWZpbmVk
IGlmIHRoYXQgaXMgdGhlIGVycm9yIAorUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlcjogaWYgc3Rh
cnQgcmVqZWN0cyB3aXRoIG5vIHBhcmFtZXRlciwgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0g
d2l0aCBhbiB1bmRlZmluZWQgZXJyb3IgCitQQVNTIEVycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0g
YWZ0ZXIgY2hlY2tpbmcgY2xvc2VkIHNob3VsZCByZWplY3QgUmVhZGFibGVTdHJlYW1SZWFkZXIg
Y2xvc2VkIHByb21pc2UgCitQQVNTIEVycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gYmVmb3JlIGNo
ZWNraW5nIGNsb3NlZCBzaG91bGQgcmVqZWN0IFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBw
cm9taXNlIAorUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgc3RyZWFtIHRoYXQgZ2V0cyBjbG9zZWQg
CitQQVNTIFJlYWRpbmcgdHdpY2Ugb24gYSBjbG9zZWQgc3RyZWFtIAorUEFTUyBSZWFkaW5nIHR3
aWNlIG9uIGFuIGVycm9yZWQgc3RyZWFtIAorUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgc3RyZWFt
IHRoYXQgZ2V0cyBlcnJvcmVkIAorRkFJTCBMb2FkIHJlYWRhYmxlLXN0cmVhbS1yZWFkZXIuanMg
d2l0aCBTaGFyZWRXb3JrZXIgYXNzZXJ0X3VucmVhY2hlZDogU2hhcmVkV29ya2VyIGlzIHVuYXZh
aWxhYmxlIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBVbnRpdGxlZCB1bmRlZmluZWQg
aXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuZ2V0
UmVnaXN0cmF0aW9uJykKK1BBU1MgQ2FuIGdldCB0aGUgUmVhZGFibGVTdHJlYW1SZWFkZXIgY29u
c3RydWN0b3IgaW5kaXJlY3RseSAKK1BBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIgY29uc3RydWN0
b3Igc2hvdWxkIGdldCBhIFJlYWRhYmxlU3RyZWFtIG9iamVjdCBhcyBhcmd1bWVudCAKK0ZBSUwg
UmVhZGFibGVTdHJlYW1SZWFkZXIgaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxp
c3Qgb2YgcHJvcGVydGllcyBhc3NlcnRfZXF1YWxzOiBtZXRob2Qgc2hvdWxkIGJlIG5vbi1lbnVt
ZXJhYmxlIGV4cGVjdGVkIGZhbHNlIGJ1dCBnb3QgdHJ1ZQorUEFTUyBSZWFkYWJsZVN0cmVhbVJl
YWRlciBjbG9zZWQgc2hvdWxkIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgcHJvbWlzZSBvYmplY3Qg
CitQQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3Vs
ZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3QgY29uc3Ry
dWN0aW9uKSAKK1BBU1MgR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHZpYSBnZXRSZWFk
ZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVj
dCBjb25zdHJ1Y3Rpb24pIAorUEFTUyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRl
ciBkaXJlY3RseSBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2
aWEgZ2V0UmVhZGVyKSAKK1BBU1MgR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHZpYSBn
ZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlh
IGdldFJlYWRlcikgCitQQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRp
cmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCAKK1BBU1MgQ29uc3Ry
dWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRo
ZSBzdHJlYW0gaXMgZXJyb3JlZCAKK1BBU1MgUmVhZGluZyBmcm9tIGEgcmVhZGVyIGZvciBhbiBl
bXB0eSBzdHJlYW0gd2lsbCB3YWl0IHVudGlsIGEgY2h1bmsgaXMgYXZhaWxhYmxlIAorUEFTUyBj
YW5jZWwoKSBvbiBhIHJlYWRlciBkb2VzIG5vdCByZWxlYXNlIHRoZSByZWFkZXIgCitQQVNTIGNs
b3NlZCBzaG91bGQgYmUgZnVsZmlsbGVkIGFmdGVyIHN0cmVhbSBpcyBjbG9zZWQgKC5jbG9zZWQg
YWNjZXNzIGJlZm9yZSBhY3F1aXJpbmcpIAorUEFTUyBjbG9zZWQgc2hvdWxkIGJlIHJlamVjdGVk
IGFmdGVyIHJlYWRlciByZWxlYXNlcyBpdHMgbG9jayAobXVsdGlwbGUgc3RyZWFtIGxvY2tzKSAK
K1BBU1MgTXVsdGlwbGUgcmVhZGVycyBjYW4gYWNjZXNzIHRoZSBzdHJlYW0gaW4gc2VxdWVuY2Ug
CitQQVNTIENhbm5vdCB1c2UgYW4gYWxyZWFkeS1yZWxlYXNlZCByZWFkZXIgdG8gdW5sb2NrIGEg
c3RyZWFtIGFnYWluIAorUEFTUyBjYW5jZWwoKSBvbiBhIHJlbGVhc2VkIHJlYWRlciBpcyBhIG5v
LW9wIGFuZCBkb2VzIG5vdCBwYXNzIHRocm91Z2ggCitQQVNTIEdldHRpbmcgYSBzZWNvbmQgcmVh
ZGVyIGFmdGVyIGVycm9yaW5nIHRoZSBzdHJlYW0gYW5kIHJlbGVhc2luZyB0aGUgcmVhZGVyIHNo
b3VsZCBzdWNjZWVkIAorUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgcHJvbWlzZSBz
aG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB1bmRlZmluZWQgaWYgdGhhdCBpcyB0aGUgZXJyb3IgCitQ
QVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyOiBpZiBzdGFydCByZWplY3RzIHdpdGggbm8gcGFyYW1l
dGVyLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSB3aXRoIGFuIHVuZGVmaW5lZCBlcnJvciAK
K1BBU1MgRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBhZnRlciBjaGVja2luZyBjbG9zZWQgc2hv
dWxkIHJlamVjdCBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgcHJvbWlzZSAKK1BBU1MgRXJy
b3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBiZWZvcmUgY2hlY2tpbmcgY2xvc2VkIHNob3VsZCByZWpl
Y3QgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHByb21pc2UgCitQQVNTIFJlYWRpbmcgdHdp
Y2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGNsb3NlZCAKK1BBU1MgUmVhZGluZyB0d2ljZSBvbiBh
IGNsb3NlZCBzdHJlYW0gCitQQVNTIFJlYWRpbmcgdHdpY2Ugb24gYW4gZXJyb3JlZCBzdHJlYW0g
CitQQVNTIFJlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGVycm9yZWQgCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZjBkYjExZDFi
YzRlODNjM2Y1MzhmNDdlNjY3YzczNWFiNDBjOGY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9D
VFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtl
cnMvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIj48L3NjcmlwdD4K
KworPHNjcmlwdCBzcmM9InJlYWRhYmxlLXN0cmVhbS1yZWFkZXIuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD4KKyd1c2Ugc3RyaWN0JzsKK3dvcmtlcl90ZXN0KCdyZWFkYWJsZS1zdHJlYW0tcmVhZGVy
LmpzJyk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bS1yZWFkZXIuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjFkNWJjMTMwMDRmOGEzNTdmYzVlODI1MjJmM2JkMzA5ZjEzMTFiOWEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmpzCkBAIC0wLDAg
KzEsNDg1IEBACisndXNlIHN0cmljdCc7CisKK2lmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKKyAg
c2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvcnMtdXRpbHMuanMnKTsKKyAgc2VsZi5p
bXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Cit9CisKK2xldCBSZWFk
YWJsZVN0cmVhbVJlYWRlcjsKKwordGVzdCgoKSA9PiB7CisKKyAgLy8gSXQncyBub3QgZXhwb3Nl
ZCBnbG9iYWxseSwgYnV0IHdlIHRlc3QgYSBmZXcgb2YgaXRzIHByb3BlcnRpZXMgaGVyZS4KKyAg
UmVhZGFibGVTdHJlYW1SZWFkZXIgPSAobmV3IFJlYWRhYmxlU3RyZWFtKCkpLmdldFJlYWRlcigp
LmNvbnN0cnVjdG9yOworCit9LCAnQ2FuIGdldCB0aGUgUmVhZGFibGVTdHJlYW1SZWFkZXIgY29u
c3RydWN0b3IgaW5kaXJlY3RseScpOworCit0ZXN0KCgpID0+IHsKKworICBhc3NlcnRfdGhyb3dz
KG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKCdwb3RhdG8n
KSk7CisgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVT
dHJlYW1SZWFkZXIoe30pKTsKKyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+
IG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcigpKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtUmVhZGVy
IGNvbnN0cnVjdG9yIHNob3VsZCBnZXQgYSBSZWFkYWJsZVN0cmVhbSBvYmplY3QgYXMgYXJndW1l
bnQnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgbWV0aG9kcyA9IFsnY2FuY2VsJywgJ2Nv
bnN0cnVjdG9yJywgJ3JlYWQnLCAncmVsZWFzZUxvY2snXTsKKyAgY29uc3QgcHJvcGVydGllcyA9
IG1ldGhvZHMuY29uY2F0KFsnY2xvc2VkJ10pLnNvcnQoKTsKKworICBjb25zdCByc1JlYWRlciA9
IG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0oKSk7CisgIGNvbnN0
IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHJzUmVhZGVyKTsKKworICBhc3NlcnRfYXJy
YXlfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvKS5zb3J0KCksIHByb3Bl
cnRpZXMpOworCisgIGZvciAoY29uc3QgbSBvZiBtZXRob2RzKSB7CisgICAgY29uc3QgcHJvcERl
c2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBtKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKHByb3BEZXNjLmVudW1lcmFibGUsIGZhbHNlLCAnbWV0aG9kIHNob3VsZCBiZSBu
b24tZW51bWVyYWJsZScpOworICAgIGFzc2VydF9lcXVhbHMocHJvcERlc2MuY29uZmlndXJhYmxl
LCB0cnVlLCAnbWV0aG9kIHNob3VsZCBiZSBjb25maWd1cmFibGUnKTsKKyAgICBhc3NlcnRfZXF1
YWxzKHByb3BEZXNjLndyaXRhYmxlLCB0cnVlLCAnbWV0aG9kIHNob3VsZCBiZSB3cml0YWJsZScp
OworICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJzUmVhZGVyW21dLCAnZnVuY3Rpb24nLCAnc2hv
dWxkIGhhdmUgYmUgYSBtZXRob2QnKTsKKyAgfQorCisgIGNvbnN0IGNsb3NlZFByb3BEZXNjID0g
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgJ2Nsb3NlZCcpOworICBhc3Nl
cnRfZXF1YWxzKGNsb3NlZFByb3BEZXNjLmVudW1lcmFibGUsIGZhbHNlLCAnY2xvc2VkIHNob3Vs
ZCBiZSBub24tZW51bWVyYWJsZScpOworICBhc3NlcnRfZXF1YWxzKGNsb3NlZFByb3BEZXNjLmNv
bmZpZ3VyYWJsZSwgdHJ1ZSwgJ2Nsb3NlZCBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7CisgIGFz
c2VydF9ub3RfZXF1YWxzKGNsb3NlZFByb3BEZXNjLmdldCwgdW5kZWZpbmVkLCAnY2xvc2VkIHNo
b3VsZCBoYXZlIGEgZ2V0dGVyJyk7CisgIGFzc2VydF9lcXVhbHMoY2xvc2VkUHJvcERlc2Muc2V0
LCB1bmRlZmluZWQsICdjbG9zZWQgc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyJyk7CisKKyAgYXNz
ZXJ0X2VxdWFscyhyc1JlYWRlci5jYW5jZWwubGVuZ3RoLCAxLCAnY2FuY2VsIGhhcyAxIHBhcmFt
ZXRlcicpOworICBhc3NlcnRfbm90X2VxdWFscyhyc1JlYWRlci5jbG9zZWQsIHVuZGVmaW5lZCwg
J2hhcyBhIG5vbi11bmRlZmluZWQgY2xvc2VkIHByb3BlcnR5Jyk7CisgIGFzc2VydF9lcXVhbHMo
dHlwZW9mIHJzUmVhZGVyLmNsb3NlZC50aGVuLCAnZnVuY3Rpb24nLCAnY2xvc2VkIHByb3BlcnR5
IGlzIHRoZW5hYmxlJyk7CisgIGFzc2VydF9lcXVhbHModHlwZW9mIHJzUmVhZGVyLmNvbnN0cnVj
dG9yLCAnZnVuY3Rpb24nLCAnaGFzIGEgY29uc3RydWN0b3IgbWV0aG9kJyk7CisgIGFzc2VydF9l
cXVhbHMocnNSZWFkZXIuY29uc3RydWN0b3IubGVuZ3RoLCAxLCAnY29uc3RydWN0b3IgaGFzIDEg
cGFyYW1ldGVyJyk7CisgIGFzc2VydF9lcXVhbHModHlwZW9mIHJzUmVhZGVyLnJlYWQsICdmdW5j
dGlvbicsICdoYXMgYSBnZXRSZWFkZXIgbWV0aG9kJyk7CisgIGFzc2VydF9lcXVhbHMocnNSZWFk
ZXIucmVhZC5sZW5ndGgsIDAsICdyZWFkIGhhcyBubyBwYXJhbWV0ZXJzJyk7CisgIGFzc2VydF9l
cXVhbHModHlwZW9mIHJzUmVhZGVyLnJlbGVhc2VMb2NrLCAnZnVuY3Rpb24nLCAnaGFzIGEgcmVs
ZWFzZUxvY2sgbWV0aG9kJyk7CisgIGFzc2VydF9lcXVhbHMocnNSZWFkZXIucmVsZWFzZUxvY2su
bGVuZ3RoLCAwLCAncmVsZWFzZUxvY2sgaGFzIG5vIHBhcmFtZXRlcnMnKTsKKworfSwgJ1JlYWRh
YmxlU3RyZWFtUmVhZGVyIGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9m
IHByb3BlcnRpZXMnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgcnNSZWFkZXIgPSBuZXcg
UmVhZGFibGVTdHJlYW1SZWFkZXIobmV3IFJlYWRhYmxlU3RyZWFtKCkpOworICBhc3NlcnRfZXF1
YWxzKHJzUmVhZGVyLmNsb3NlZCwgcnNSZWFkZXIuY2xvc2VkLCAnY2xvc2VkIHNob3VsZCByZXR1
cm4gdGhlIHNhbWUgcHJvbWlzZScpOworCit9LCAnUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2Vk
IHNob3VsZCBhbHdheXMgcmV0dXJuIHRoZSBzYW1lIHByb21pc2Ugb2JqZWN0Jyk7CisKK3Rlc3Qo
KCkgPT4geworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIG5ldyBSZWFk
YWJsZVN0cmVhbVJlYWRlcihycyk7IC8vIENvbnN0cnVjdGluZyBkaXJlY3RseSB0aGUgZmlyc3Qg
dGltZSBzaG91bGQgYmUgZmluZS4KKyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgp
ID0+IG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihycyksCisgICAgICAgICAgICAgICAgJ2NvbnN0
cnVjdGluZyBkaXJlY3RseSB0aGUgc2Vjb25kIHRpbWUgc2hvdWxkIGZhaWwnKTsKKworfSwgJ0Nv
bnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBmYWlsIGlm
IHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3QgJyArCisgICAnY29uc3Ry
dWN0aW9uKScpOworCit0ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSgpOworICBuZXcgUmVhZGFibGVTdHJlYW1SZWFkZXIocnMpOyAvLyBDb25zdHJ1Y3Rpbmcg
ZGlyZWN0bHkgc2hvdWxkIGJlIGZpbmUuCisgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigp
LCAoKSA9PiBycy5nZXRSZWFkZXIoKSwgJ2dldFJlYWRlcigpIHNob3VsZCBmYWlsJyk7CisKK30s
ICdHZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgdmlhIGdldFJlYWRlciBzaG91bGQgZmFp
bCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0ICcgKworICAgJ2Nv
bnN0cnVjdGlvbiknKTsKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oKTsKKyAgcnMuZ2V0UmVhZGVyKCk7IC8vIGdldFJlYWRlcigpIHNob3VsZCBiZSBm
aW5lLgorICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxl
U3RyZWFtUmVhZGVyKHJzKSwgJ2NvbnN0cnVjdGluZyBkaXJlY3RseSBzaG91bGQgZmFpbCcpOwor
Cit9LCAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxk
IGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGdldFJlYWRlciknKTsK
KwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAg
cnMuZ2V0UmVhZGVyKCk7IC8vIGdldFJlYWRlcigpIHNob3VsZCBiZSBmaW5lLgorICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksICdnZXRSZWFkZXIo
KSBzaG91bGQgZmFpbCcpOworCit9LCAnR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHZp
YSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAo
dmlhIGdldFJlYWRlciknKTsKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICB9Cisg
IH0pOworCisgIG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihycyk7IC8vIENvbnN0cnVjdGluZyBk
aXJlY3RseSBzaG91bGQgbm90IHRocm93LgorCit9LCAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVT
dHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgY2xvc2Vk
Jyk7CisKK3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdkb25c
J3Qgc2F5IGkgZGlkblwndCB3YXJuIHlhJyk7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVycm9yKHRoZUVycm9yKTsKKyAgICB9Cisg
IH0pOworCisgIG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihycyk7IC8vIENvbnN0cnVjdGluZyBk
aXJlY3RseSBzaG91bGQgbm90IHRocm93LgorCit9LCAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVT
dHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgZXJyb3Jl
ZCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBjb250cm9sbGVyOworICBjb25z
dCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJv
bGxlciA9IGM7CisgICAgfQorICB9KTsKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7
CisKKyAgY29uc3QgcHJvbWlzZSA9IHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQgPT4geworICAg
IGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9
LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggdGhlIGVucXVldWVkIGNodW5rJyk7CisgIH0p
OworCisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICByZXR1cm4gcHJvbWlzZTsKKworfSwg
J1JlYWRpbmcgZnJvbSBhIHJlYWRlciBmb3IgYW4gZW1wdHkgc3RyZWFtIHdpbGwgd2FpdCB1bnRp
bCBhIGNodW5rIGlzIGF2YWlsYWJsZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxl
dCBjYW5jZWxDYWxsZWQgPSBmYWxzZTsKKyAgY29uc3QgcGFzc2VkUmVhc29uID0gbmV3IEVycm9y
KCdpdCB3YXNuXCd0IHRoZSByaWdodCB0aW1lLCBzb3JyeScpOworICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7CisgICAgY2FuY2VsKHJlYXNvbikgeworICAgICAgYXNzZXJ0X3RydWUo
cnMubG9ja2VkLCAndGhlIHN0cmVhbSBzaG91bGQgc3RpbGwgYmUgbG9ja2VkJyk7CisgICAgICBh
c3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksICdzaG91
bGQgbm90IGJlIGFibGUgdG8gZ2V0IGFub3RoZXIgcmVhZGVyJyk7CisgICAgICBhc3NlcnRfZXF1
YWxzKHJlYXNvbiwgcGFzc2VkUmVhc29uLCAndGhlIGNhbmNlbGxhdGlvbiByZWFzb24gaXMgcGFz
c2VkIHRocm91Z2ggdG8gdGhlIHVuZGVybHlpbmcgc291cmNlJyk7CisgICAgICBjYW5jZWxDYWxs
ZWQgPSB0cnVlOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVy
KCk7CisgIHJldHVybiByZWFkZXIuY2FuY2VsKHBhc3NlZFJlYXNvbikudGhlbigoKSA9PiBhc3Nl
cnRfdHJ1ZShjYW5jZWxDYWxsZWQpKTsKKworfSwgJ2NhbmNlbCgpIG9uIGEgcmVhZGVyIGRvZXMg
bm90IHJlbGVhc2UgdGhlIHJlYWRlcicpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxl
dCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3Rh
cnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKworICBjb25zdCBy
ZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKyAgY29uc3QgcHJvbWlzZSA9IHJlYWRlci5jbG9zZWQ7
CisKKyAgY29udHJvbGxlci5jbG9zZSgpOworICByZXR1cm4gcHJvbWlzZTsKKworfSwgJ2Nsb3Nl
ZCBzaG91bGQgYmUgZnVsZmlsbGVkIGFmdGVyIHN0cmVhbSBpcyBjbG9zZWQgKC5jbG9zZWQgYWNj
ZXNzIGJlZm9yZSBhY3F1aXJpbmcpJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBsZXQg
Y29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0
KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcmVh
ZGVyMSA9IHJzLmdldFJlYWRlcigpOworCisgIHJlYWRlcjEucmVsZWFzZUxvY2soKTsKKworICBj
b25zdCByZWFkZXIyID0gcnMuZ2V0UmVhZGVyKCk7CisgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKwor
ICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVy
cm9yKCksIHJlYWRlcjEuY2xvc2VkKSwKKyAgICByZWFkZXIyLmNsb3NlZAorICBdKTsKKworfSwg
J2Nsb3NlZCBzaG91bGQgYmUgcmVqZWN0ZWQgYWZ0ZXIgcmVhZGVyIHJlbGVhc2VzIGl0cyBsb2Nr
IChtdWx0aXBsZSBzdHJlYW0gbG9ja3MpJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMu
ZW5xdWV1ZSgnYScpOworICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgICBjLmNsb3NlKCk7Cisg
ICAgfQorICB9KTsKKworICBjb25zdCByZWFkZXIxID0gcnMuZ2V0UmVhZGVyKCk7CisgIGNvbnN0
IHByb21pc2UxID0gcmVhZGVyMS5yZWFkKCkudGhlbihyID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0
X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdyZWFkaW5nIHRoZSBmaXJz
dCBjaHVuayBmcm9tIHJlYWRlcjEgd29ya3MnKTsKKyAgfSk7CisgIHJlYWRlcjEucmVsZWFzZUxv
Y2soKTsKKworICBjb25zdCByZWFkZXIyID0gcnMuZ2V0UmVhZGVyKCk7CisgIGNvbnN0IHByb21p
c2UyID0gcmVhZGVyMi5yZWFkKCkudGhlbihyID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFs
cyhyLCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sICdyZWFkaW5nIHRoZSBzZWNvbmQgY2h1
bmsgZnJvbSByZWFkZXIyIHdvcmtzJyk7CisgIH0pOworICByZWFkZXIyLnJlbGVhc2VMb2NrKCk7
CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFtwcm9taXNlMSwgcHJvbWlzZTJdKTsKKworfSwgJ011
bHRpcGxlIHJlYWRlcnMgY2FuIGFjY2VzcyB0aGUgc3RyZWFtIGluIHNlcXVlbmNlJyk7CisKK3By
b21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAg
ICBzdGFydChjKSB7CisgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICB9CisgIH0pOworCisgIGNv
bnN0IHJlYWRlcjEgPSBycy5nZXRSZWFkZXIoKTsKKyAgcmVhZGVyMS5yZWxlYXNlTG9jaygpOwor
CisgIGNvbnN0IHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKKworICAvLyBTaG91bGQgYmUgYSBu
by1vcAorICByZWFkZXIxLnJlbGVhc2VMb2NrKCk7CisKKyAgcmV0dXJuIHJlYWRlcjIucmVhZCgp
LnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFs
dWU6ICdhJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAncmVhZCgp
IHNob3VsZCBzdGlsbCB3b3JrIG9uIHJlYWRlcjIgZXZlbiBhZnRlciByZWFkZXIxIGlzIHJlbGVh
c2VkJyk7CisgIH0pOworCit9LCAnQ2Fubm90IHVzZSBhbiBhbHJlYWR5LXJlbGVhc2VkIHJlYWRl
ciB0byB1bmxvY2sgYSBzdHJlYW0gYWdhaW4nKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisg
IGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBj
LmVucXVldWUoJ2EnKTsKKyAgICB9LAorICAgIGNhbmNlbCgpIHsKKyAgICAgIGFzc2VydF91bnJl
YWNoZWQoJ3VuZGVybHlpbmcgc291cmNlIGNhbmNlbCBzaG91bGQgbm90IGJlIGNhbGxlZCcpOwor
ICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisgIHJlYWRl
ci5yZWxlYXNlTG9jaygpOworICBjb25zdCBjYW5jZWxQcm9taXNlID0gcmVhZGVyLmNhbmNlbCgp
OworCisgIGNvbnN0IHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKKyAgY29uc3QgcmVhZFByb21p
c2UgPSByZWFkZXIyLnJlYWQoKS50aGVuKHIgPT4geworICAgIGFzc2VydF9vYmplY3RfZXF1YWxz
KHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2EgbmV3IHJlYWRlciBzaG91bGQgYmUg
YWJsZSB0byByZWFkIGEgY2h1bmsnKTsKKyAgfSk7CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFsK
KyAgICBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLCBjYW5jZWxQcm9taXNlKSwK
KyAgICByZWFkUHJvbWlzZQorICBdKTsKKworfSwgJ2NhbmNlbCgpIG9uIGEgcmVsZWFzZWQgcmVh
ZGVyIGlzIGEgbm8tb3AgYW5kIGRvZXMgbm90IHBhc3MgdGhyb3VnaCcpOworCitwcm9taXNlX3Rl
c3QodCA9PiB7CisKKyAgY29uc3QgcHJvbWlzZUFzc2VydHMgPSBbXTsKKworICBsZXQgY29udHJv
bGxlcjsKKyAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICd1bmlxdWUgZXJyb3InIH07CisgIGNv
bnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250
cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRlcjEgPSBycy5nZXRSZWFk
ZXIoKTsKKworICBwcm9taXNlQXNzZXJ0cy5wdXNoKAorICAgIHByb21pc2VfcmVqZWN0cyh0LCB0
aGVFcnJvciwgcmVhZGVyMS5jbG9zZWQpLAorICAgIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJv
ciwgcmVhZGVyMS5yZWFkKCkpCisgICk7CisKKyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
KCksICgpID0+IHJzLmdldFJlYWRlcigpLCAndHJ5aW5nIHRvIGdldCBhbm90aGVyIHJlYWRlciBi
ZWZvcmUgZXJyb3Jpbmcgc2hvdWxkIHRocm93Jyk7CisKKyAgY29udHJvbGxlci5lcnJvcih0aGVF
cnJvcik7CisKKyAgcmVhZGVyMS5yZWxlYXNlTG9jaygpOworCisgIGNvbnN0IHJlYWRlcjIgPSBy
cy5nZXRSZWFkZXIoKTsKKworICBwcm9taXNlQXNzZXJ0cy5wdXNoKAorICAgIHByb21pc2VfcmVq
ZWN0cyh0LCB0aGVFcnJvciwgcmVhZGVyMi5jbG9zZWQpLAorICAgIHByb21pc2VfcmVqZWN0cyh0
LCB0aGVFcnJvciwgcmVhZGVyMi5yZWFkKCkpCisgICk7CisKKyAgcmV0dXJuIFByb21pc2UuYWxs
KHByb21pc2VBc3NlcnRzKTsKKworfSwgJ0dldHRpbmcgYSBzZWNvbmQgcmVhZGVyIGFmdGVyIGVy
cm9yaW5nIHRoZSBzdHJlYW0gYW5kIHJlbGVhc2luZyB0aGUgcmVhZGVyIHNob3VsZCBzdWNjZWVk
Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3Qg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xs
ZXIgPSBjOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcHJvbWlzZSA9IHJzLmdldFJlYWRlcigp
LmNsb3NlZC50aGVuKAorICAgIHQudW5yZWFjaGVkX2Z1bmMoJ2Nsb3NlZCBwcm9taXNlIHNob3Vs
ZCBub3QgYmUgZnVsZmlsbGVkIHdoZW4gc3RyZWFtIGlzIGVycm9yZWQnKSwKKyAgICBlcnIgPT4g
eworICAgICAgYXNzZXJ0X2VxdWFscyhlcnIsIHVuZGVmaW5lZCwgJ3Bhc3NlZCBlcnJvciBzaG91
bGQgYmUgdW5kZWZpbmVkIGFzIGl0IHdhcycpOworICAgIH0KKyAgKTsKKworICBjb250cm9sbGVy
LmVycm9yKCk7CisgIHJldHVybiBwcm9taXNlOworCit9LCAnUmVhZGFibGVTdHJlYW1SZWFkZXIg
Y2xvc2VkIHByb21pc2Ugc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdW5kZWZpbmVkIGlmIHRoYXQg
aXMgdGhlIGVycm9yJyk7CisKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydCgpIHsKKyAgICAgIHJldHVybiBQcm9taXNl
LnJlamVjdCgpOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHJzLmdldFJlYWRlcigpLnJlYWQo
KS50aGVuKAorICAgIHQudW5yZWFjaGVkX2Z1bmMoJ3JlYWQgcHJvbWlzZSBzaG91bGQgbm90IGJl
IGZ1bGZpbGxlZCB3aGVuIHN0cmVhbSBpcyBlcnJvcmVkJyksCisgICAgZXJyID0+IHsKKyAgICAg
IGFzc2VydF9lcXVhbHMoZXJyLCB1bmRlZmluZWQsICdwYXNzZWQgZXJyb3Igc2hvdWxkIGJlIHVu
ZGVmaW5lZCBhcyBpdCB3YXMnKTsKKyAgICB9CisgICk7CisKK30sICdSZWFkYWJsZVN0cmVhbVJl
YWRlcjogaWYgc3RhcnQgcmVqZWN0cyB3aXRoIG5vIHBhcmFtZXRlciwgaXQgc2hvdWxkIGVycm9y
IHRoZSBzdHJlYW0gd2l0aCBhbiB1bmRlZmluZWQgZXJyb3InKTsKKworcHJvbWlzZV90ZXN0KHQg
PT4geworCisgIGNvbnN0IHRoZUVycm9yID0geyBuYW1lOiAndW5pcXVlIHN0cmluZycgfTsKKyAg
bGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBz
dGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisgIGNvbnN0
IHByb21pc2UgPSBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJzLmdldFJlYWRlcigpLmNs
b3NlZCk7CisKKyAgY29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7CisgIHJldHVybiBwcm9taXNl
OworCit9LCAnRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBhZnRlciBjaGVja2luZyBjbG9zZWQg
c2hvdWxkIHJlamVjdCBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgcHJvbWlzZScpOworCitw
cm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICd1bmlxdWUg
c3RyaW5nJyB9OworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAg
fSk7CisKKyAgY29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7CisKKyAgLy8gTGV0J3MgY2FsbCBn
ZXRSZWFkZXIgdHdpY2UgZm9yIGV4dHJhIHRlc3QgY292ZXJhZ2Ugb2YgdGhpcyBjb2RlIHBhdGgu
CisgIHJzLmdldFJlYWRlcigpLnJlbGVhc2VMb2NrKCk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVq
ZWN0cyh0LCB0aGVFcnJvciwgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkKTsKKworfSwgJ0Vycm9yaW5n
IGEgUmVhZGFibGVTdHJlYW0gYmVmb3JlIGNoZWNraW5nIGNsb3NlZCBzaG91bGQgcmVqZWN0IFJl
YWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBwcm9taXNlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9
PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOwor
ICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICBjb25zdCBwcm9taXNlID0gUHJv
bWlzZS5hbGwoWworICAgIHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQgPT4geworICAgICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUg
fSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIGNsb3NlICgxKScpOworICAgIH0pLAorICAg
IHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVh
bHMocmVzdWx0LCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwgJ3JlYWQoKSBzaG91
bGQgZnVsZmlsbCB3aXRoIGNsb3NlICgyKScpOworICAgIH0pLAorICAgIHJlYWRlci5jbG9zZWQK
KyAgXSk7CisKKyAgY29udHJvbGxlci5jbG9zZSgpOworICByZXR1cm4gcHJvbWlzZTsKKworfSwg
J1JlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGNsb3NlZCcpOworCitwcm9taXNl
X3Rlc3QoKCkgPT4geworCisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAg
fQorICB9KTsKKworICBjb250cm9sbGVyLmNsb3NlKCk7CisgIGNvbnN0IHJlYWRlciA9IHJzLmdl
dFJlYWRlcigpOworCisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgcmVhZGVyLnJlYWQoKS50
aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFs
dWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGgg
Y2xvc2UgKDEpJyk7CisgICAgfSksCisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7
CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwg
ZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2UgKDIpJyk7Cisg
ICAgfSksCisgICAgcmVhZGVyLmNsb3NlZAorICBdKTsKKworfSwgJ1JlYWRpbmcgdHdpY2Ugb24g
YSBjbG9zZWQgc3RyZWFtJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBsZXQgY29udHJv
bGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsK
KyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgbXlFcnJvciA9
IHsgbmFtZTogJ21hc2hlZCBwb3RhdG9lcycgfTsKKyAgY29udHJvbGxlci5lcnJvcihteUVycm9y
KTsKKworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICByZXR1cm4gUHJvbWlz
ZS5hbGwoWworICAgIHByb21pc2VfcmVqZWN0cyh0LCBteUVycm9yLCByZWFkZXIucmVhZCgpKSwK
KyAgICBwcm9taXNlX3JlamVjdHModCwgbXlFcnJvciwgcmVhZGVyLnJlYWQoKSksCisgICAgcHJv
bWlzZV9yZWplY3RzKHQsIG15RXJyb3IsIHJlYWRlci5jbG9zZWQpCisgIF0pOworCit9LCAnUmVh
ZGluZyB0d2ljZSBvbiBhbiBlcnJvcmVkIHN0cmVhbScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7
CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
KyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisg
IGNvbnN0IG15RXJyb3IgPSB7IG5hbWU6ICdtYXNoZWQgcG90YXRvZXMnIH07CisgIGNvbnN0IHJl
YWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIGNvbnN0IHByb21pc2UgPSBQcm9taXNlLmFsbChb
CisgICAgcHJvbWlzZV9yZWplY3RzKHQsIG15RXJyb3IsIHJlYWRlci5yZWFkKCkpLAorICAgIHBy
b21pc2VfcmVqZWN0cyh0LCBteUVycm9yLCByZWFkZXIucmVhZCgpKSwKKyAgICBwcm9taXNlX3Jl
amVjdHModCwgbXlFcnJvciwgcmVhZGVyLmNsb3NlZCkKKyAgXSk7CisKKyAgY29udHJvbGxlci5l
cnJvcihteUVycm9yKTsKKyAgcmV0dXJuIHByb21pc2U7CisKK30sICdSZWFkaW5nIHR3aWNlIG9u
IGEgc3RyZWFtIHRoYXQgZ2V0cyBlcnJvcmVkJyk7CisKK2RvbmUoKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL3RlZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjY2YmQxOTkxY2FjMjA4ZmU0YTY1YjlkMGFjYjA3OGNmMGZmYzUzOWMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MjQgQEAKKworUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHJzLnRlZSgpIHJldHVybnMgYW4g
YXJyYXkgb2YgdHdvIFJlYWRhYmxlU3RyZWFtcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5n
OiBzaG91bGQgYmUgYWJsZSB0byByZWFkIG9uZSBicmFuY2ggdG8gdGhlIGVuZCB3aXRob3V0IGFm
ZmVjdGluZyB0aGUgb3RoZXIgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogdmFsdWVzIHNo
b3VsZCBiZSBlcXVhbCBhY3Jvc3MgZWFjaCBicmFuY2ggCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRl
ZWluZzogZXJyb3JzIGluIHRoZSBzb3VyY2Ugc2hvdWxkIHByb3BhZ2F0ZSB0byBib3RoIGJyYW5j
aGVzIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBicmFuY2gxIHNob3Vs
ZCBub3QgaW1wYWN0IGJyYW5jaDIgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2Vs
aW5nIGJyYW5jaDIgc2hvdWxkIG5vdCBpbXBhY3QgYnJhbmNoMiAKK1BBU1MgUmVhZGFibGVTdHJl
YW0gdGVlaW5nOiBjYW5jZWxpbmcgYm90aCBicmFuY2hlcyBzaG91bGQgYWdncmVnYXRlIHRoZSBj
YW5jZWwgcmVhc29ucyBpbnRvIGFuIGFycmF5IAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6
IGZhaWxpbmcgdG8gY2FuY2VsIHRoZSBvcmlnaW5hbCBzdHJlYW0gc2hvdWxkIGNhdXNlIGNhbmNl
bCgpIHRvIHJlamVjdCBvbiBicmFuY2hlcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBj
bG9zaW5nIHRoZSBvcmlnaW5hbCBzaG91bGQgaW1tZWRpYXRlbHkgY2xvc2UgdGhlIGJyYW5jaGVz
IAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGVycm9yaW5nIHRoZSBvcmlnaW5hbCBzaG91
bGQgaW1tZWRpYXRlbHkgZXJyb3IgdGhlIGJyYW5jaGVzIAorRkFJTCBMb2FkIHRlZS5qcyB3aXRo
IFNoYXJlZFdvcmtlciBhc3NlcnRfdW5yZWFjaGVkOiBTaGFyZWRXb3JrZXIgaXMgdW5hdmFpbGFi
bGUgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCitGQUlMIFVudGl0bGVkIHVuZGVmaW5lZCBpcyBu
b3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICduYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdp
c3RyYXRpb24nKQorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHJzLnRlZSgpIHJldHVybnMg
YW4gYXJyYXkgb2YgdHdvIFJlYWRhYmxlU3RyZWFtcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVl
aW5nOiBzaG91bGQgYmUgYWJsZSB0byByZWFkIG9uZSBicmFuY2ggdG8gdGhlIGVuZCB3aXRob3V0
IGFmZmVjdGluZyB0aGUgb3RoZXIgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogdmFsdWVz
IHNob3VsZCBiZSBlcXVhbCBhY3Jvc3MgZWFjaCBicmFuY2ggCitQQVNTIFJlYWRhYmxlU3RyZWFt
IHRlZWluZzogZXJyb3JzIGluIHRoZSBzb3VyY2Ugc2hvdWxkIHByb3BhZ2F0ZSB0byBib3RoIGJy
YW5jaGVzIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBicmFuY2gxIHNo
b3VsZCBub3QgaW1wYWN0IGJyYW5jaDIgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2Fu
Y2VsaW5nIGJyYW5jaDIgc2hvdWxkIG5vdCBpbXBhY3QgYnJhbmNoMiAKK1BBU1MgUmVhZGFibGVT
dHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYm90aCBicmFuY2hlcyBzaG91bGQgYWdncmVnYXRlIHRo
ZSBjYW5jZWwgcmVhc29ucyBpbnRvIGFuIGFycmF5IAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVp
bmc6IGZhaWxpbmcgdG8gY2FuY2VsIHRoZSBvcmlnaW5hbCBzdHJlYW0gc2hvdWxkIGNhdXNlIGNh
bmNlbCgpIHRvIHJlamVjdCBvbiBicmFuY2hlcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5n
OiBjbG9zaW5nIHRoZSBvcmlnaW5hbCBzaG91bGQgaW1tZWRpYXRlbHkgY2xvc2UgdGhlIGJyYW5j
aGVzIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGVycm9yaW5nIHRoZSBvcmlnaW5hbCBz
aG91bGQgaW1tZWRpYXRlbHkgZXJyb3IgdGhlIGJyYW5jaGVzIAorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy90ZWUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyYzg0
N2I4MTE3OGFkMGM1MGJhYWMwOWQ3YjFjZGM2ODgyOTMyZDEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy90ZWUuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29y
a2Vycy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvcnMtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InRlZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOword29ya2VyX3Rlc3QoJ3RlZS5q
cycpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuanMgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtcy90ZWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDg1ZjJhZjdhYjVjZTRmZmI2OWM5NWY4YThiZTU0ZGZh
MWUyZWQwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5qcwpAQCAtMCwwICsx
LDI1NCBAQAorJ3VzZSBzdHJpY3QnOworCitpZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7CisgIHNl
bGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzJyk7CisgIHNlbGYuaW1w
b3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOworfQorCit0ZXN0KCgpID0+
IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICBjb25zdCByZXN1bHQg
PSBycy50ZWUoKTsKKworICBhc3NlcnRfdHJ1ZShBcnJheS5pc0FycmF5KHJlc3VsdCksICdyZXR1
cm4gdmFsdWUgc2hvdWxkIGJlIGFuIGFycmF5Jyk7CisgIGFzc2VydF9lcXVhbHMocmVzdWx0Lmxl
bmd0aCwgMiwgJ2FycmF5IHNob3VsZCBoYXZlIGxlbmd0aCAyJyk7CisgIGFzc2VydF9lcXVhbHMo
cmVzdWx0WzBdLmNvbnN0cnVjdG9yLCBSZWFkYWJsZVN0cmVhbSwgJzB0aCBlbGVtZW50IHNob3Vs
ZCBiZSBhIFJlYWRhYmxlU3RyZWFtJyk7CisgIGFzc2VydF9lcXVhbHMocmVzdWx0WzFdLmNvbnN0
cnVjdG9yLCBSZWFkYWJsZVN0cmVhbSwgJzFzdCBlbGVtZW50IHNob3VsZCBiZSBhIFJlYWRhYmxl
U3RyZWFtJyk7CisKK30sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHJzLnRlZSgpIHJldHVybnMg
YW4gYXJyYXkgb2YgdHdvIFJlYWRhYmxlU3RyZWFtcycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7
CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAg
ICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgICBjLmNsb3Nl
KCk7CisgICAgfQorICB9KTsKKworICBjb25zdCBicmFuY2ggPSBycy50ZWUoKTsKKyAgY29uc3Qg
YnJhbmNoMSA9IGJyYW5jaFswXTsKKyAgY29uc3QgYnJhbmNoMiA9IGJyYW5jaFsxXTsKKyAgY29u
c3QgcmVhZGVyMSA9IGJyYW5jaDEuZ2V0UmVhZGVyKCk7CisgIGNvbnN0IHJlYWRlcjIgPSBicmFu
Y2gyLmdldFJlYWRlcigpOworCisgIHJlYWRlcjIuY2xvc2VkLnRoZW4odC51bnJlYWNoZWRfZnVu
YygnYnJhbmNoMiBzaG91bGQgbm90IGJlIGNsb3NlZCcpKTsKKworICByZXR1cm4gUHJvbWlzZS5h
bGwoWworICAgIHJlYWRlcjEuY2xvc2VkLAorICAgIHJlYWRlcjEucmVhZCgpLnRoZW4ociA9PiB7
CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNl
IH0sICdmaXJzdCBjaHVuayBmcm9tIGJyYW5jaDEgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKyAgICB9
KSwKKyAgICByZWFkZXIxLnJlYWQoKS50aGVuKHIgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9l
cXVhbHMociwgeyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LCAnc2Vjb25kIGNodW5rIGZyb20g
YnJhbmNoMSBzaG91bGQgYmUgY29ycmVjdCcpOworICAgIH0pLAorICAgIHJlYWRlcjEucmVhZCgp
LnRoZW4ociA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiB1bmRl
ZmluZWQsIGRvbmU6IHRydWUgfSwgJ3RoaXJkIHJlYWQoKSBmcm9tIGJyYW5jaDEgc2hvdWxkIGJl
IGRvbmUnKTsKKyAgICB9KSwKKyAgICByZWFkZXIyLnJlYWQoKS50aGVuKHIgPT4geworICAgICAg
YXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnZmly
c3QgY2h1bmsgZnJvbSBicmFuY2gyIHNob3VsZCBiZSBjb3JyZWN0Jyk7CisgICAgfSkKKyAgXSk7
CisKK30sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgb25l
IGJyYW5jaCB0byB0aGUgZW5kIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBvdGhlcicpOworCitwcm9t
aXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHRoZU9iamVjdCA9IHsgdGhlOiAndGVzdCBvYmpl
Y3QnIH07CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7
CisgICAgICBjLmVucXVldWUodGhlT2JqZWN0KTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IGJy
YW5jaCA9IHJzLnRlZSgpOworICBjb25zdCBicmFuY2gxID0gYnJhbmNoWzBdOworICBjb25zdCBi
cmFuY2gyID0gYnJhbmNoWzFdOworICBjb25zdCByZWFkZXIxID0gYnJhbmNoMS5nZXRSZWFkZXIo
KTsKKyAgY29uc3QgcmVhZGVyMiA9IGJyYW5jaDIuZ2V0UmVhZGVyKCk7CisKKyAgcmV0dXJuIFBy
b21pc2UuYWxsKFtyZWFkZXIxLnJlYWQoKSwgcmVhZGVyMi5yZWFkKCldKS50aGVuKHZhbHVlcyA9
PiB7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHModmFsdWVzWzBdLCB2YWx1ZXNbMV0sICd0aGUg
dmFsdWVzIHNob3VsZCBiZSBlcXVhbCcpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIHRl
ZWluZzogdmFsdWVzIHNob3VsZCBiZSBlcXVhbCBhY3Jvc3MgZWFjaCBicmFuY2gnKTsKKworcHJv
bWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHRoZUVycm9yID0geyBuYW1lOiAnYm9vIScgfTsK
KyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAg
IGMuZW5xdWV1ZSgnYScpOworICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgfSwKKyAgICBwdWxs
KCkgeworICAgICAgdGhyb3cgdGhlRXJyb3I7CisgICAgfQorICB9KTsKKworICBjb25zdCBicmFu
Y2hlcyA9IHJzLnRlZSgpOworICBjb25zdCByZWFkZXIxID0gYnJhbmNoZXNbMF0uZ2V0UmVhZGVy
KCk7CisgIGNvbnN0IHJlYWRlcjIgPSBicmFuY2hlc1sxXS5nZXRSZWFkZXIoKTsKKworICByZWFk
ZXIxLmxhYmVsID0gJ3JlYWRlcjEnOworICByZWFkZXIyLmxhYmVsID0gJ3JlYWRlcjInOworCisg
IHJldHVybiBQcm9taXNlLmFsbChbCisgICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCBy
ZWFkZXIxLmNsb3NlZCksCisgICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIy
LmNsb3NlZCksCisgICAgcmVhZGVyMS5yZWFkKCkudGhlbihyID0+IHsKKyAgICAgIGFzc2VydF9v
YmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3Nob3VsZCBiZSBh
YmxlIHRvIHJlYWQgdGhlIGZpcnN0IGNodW5rIGluIGJyYW5jaDEnKTsKKyAgICB9KSwKKyAgICBy
ZWFkZXIxLnJlYWQoKS50aGVuKHIgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwg
eyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LCAnc2hvdWxkIGJlIGFibGUgdG8gcmVhZCB0aGUg
c2Vjb25kIGNodW5rIGluIGJyYW5jaDEnKTsKKworICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0
cyh0LCB0aGVFcnJvciwgcmVhZGVyMi5yZWFkKCkpOworICAgIH0pCisgICAgLnRoZW4oKCkgPT4g
cHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIxLnJlYWQoKSkpCisgIF0pOworCit9
LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcnMgaW4gdGhlIHNvdXJjZSBzaG91bGQgcHJv
cGFnYXRlIHRvIGJvdGggYnJhbmNoZXMnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBj
b25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5l
bnF1ZXVlKCdhJyk7CisgICAgICBjLmVucXVldWUoJ2InKTsKKyAgICAgIGMuY2xvc2UoKTsKKyAg
ICB9CisgIH0pOworCisgIGNvbnN0IGJyYW5jaGVzID0gcnMudGVlKCk7CisgIGNvbnN0IGJyYW5j
aDEgPSBicmFuY2hlc1swXTsKKyAgY29uc3QgYnJhbmNoMiA9IGJyYW5jaGVzWzFdOworICBicmFu
Y2gxLmNhbmNlbCgpOworCisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgcmVhZGFibGVTdHJl
YW1Ub0FycmF5KGJyYW5jaDEpLnRoZW4oY2h1bmtzID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMoY2h1bmtzLCBbXSwgJ2JyYW5jaDEgc2hvdWxkIGhhdmUgbm8gY2h1bmtzJyk7CisgICAg
fSksCisgICAgcmVhZGFibGVTdHJlYW1Ub0FycmF5KGJyYW5jaDIpLnRoZW4oY2h1bmtzID0+IHsK
KyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbJ2EnLCAnYiddLCAnYnJhbmNoMiBz
aG91bGQgaGF2ZSB0d28gY2h1bmtzJyk7CisgICAgfSkKKyAgXSk7CisKK30sICdSZWFkYWJsZVN0
cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBicmFuY2gxIHNob3VsZCBub3QgaW1wYWN0IGJyYW5jaDIn
KTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgICBjLmVu
cXVldWUoJ2InKTsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IGJy
YW5jaGVzID0gcnMudGVlKCk7CisgIGNvbnN0IGJyYW5jaDEgPSBicmFuY2hlc1swXTsKKyAgY29u
c3QgYnJhbmNoMiA9IGJyYW5jaGVzWzFdOworICBicmFuY2gyLmNhbmNlbCgpOworCisgIHJldHVy
biBQcm9taXNlLmFsbChbCisgICAgcmVhZGFibGVTdHJlYW1Ub0FycmF5KGJyYW5jaDEpLnRoZW4o
Y2h1bmtzID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbJ2EnLCAnYidd
LCAnYnJhbmNoMSBzaG91bGQgaGF2ZSB0d28gY2h1bmtzJyk7CisgICAgfSksCisgICAgcmVhZGFi
bGVTdHJlYW1Ub0FycmF5KGJyYW5jaDIpLnRoZW4oY2h1bmtzID0+IHsKKyAgICAgIGFzc2VydF9h
cnJheV9lcXVhbHMoY2h1bmtzLCBbXSwgJ2JyYW5jaDIgc2hvdWxkIGhhdmUgbm8gY2h1bmtzJyk7
CisgICAgfSkKKyAgXSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBi
cmFuY2gyIHNob3VsZCBub3QgaW1wYWN0IGJyYW5jaDInKTsKKworcHJvbWlzZV90ZXN0KCgpID0+
IHsKKworICBjb25zdCByZWFzb24xID0gbmV3IEVycm9yKCdXZVwncmUgd2FudGVkIG1lbi4nKTsK
KyAgY29uc3QgcmVhc29uMiA9IG5ldyBFcnJvcignSSBoYXZlIHRoZSBkZWF0aCBzZW50ZW5jZSBv
biB0d2VsdmUgc3lzdGVtcy4nKTsKKworICBsZXQgcmVzb2x2ZTsKKyAgY29uc3QgcHJvbWlzZSA9
IG5ldyBQcm9taXNlKHIgPT4gcmVzb2x2ZSA9IHIpOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisgICAgY2FuY2VsKHJlYXNvbikgeworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhyZWFzb24sIFtyZWFzb24xLCByZWFzb24yXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
J3RoZSBjYW5jZWwgcmVhc29uIHNob3VsZCBiZSBhbiBhcnJheSBjb250YWluaW5nIHRob3NlIGZy
b20gdGhlIGJyYW5jaGVzJyk7CisgICAgICByZXNvbHZlKCk7CisgICAgfQorICB9KTsKKworICBj
b25zdCBicmFuY2ggPSBycy50ZWUoKTsKKyAgY29uc3QgYnJhbmNoMSA9IGJyYW5jaFswXTsKKyAg
Y29uc3QgYnJhbmNoMiA9IGJyYW5jaFsxXTsKKyAgYnJhbmNoMS5jYW5jZWwocmVhc29uMSk7Cisg
IGJyYW5jaDIuY2FuY2VsKHJlYXNvbjIpOworCisgIHJldHVybiBwcm9taXNlOworCit9LCAnUmVh
ZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYm90aCBicmFuY2hlcyBzaG91bGQgYWdncmVn
YXRlIHRoZSBjYW5jZWwgcmVhc29ucyBpbnRvIGFuIGFycmF5Jyk7CisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9IHsgbmFtZTogJ0lcJ2xsIGJlIGNhcmVmdWwuJyB9
OworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgY2FuY2VsKCkgeworICAg
ICAgdGhyb3cgdGhlRXJyb3I7CisgICAgfQorICB9KTsKKworICBjb25zdCBicmFuY2ggPSBycy50
ZWUoKTsKKyAgY29uc3QgYnJhbmNoMSA9IGJyYW5jaFswXTsKKyAgY29uc3QgYnJhbmNoMiA9IGJy
YW5jaFsxXTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHByb21pc2VfcmVqZWN0cyh0
LCB0aGVFcnJvciwgYnJhbmNoMS5jYW5jZWwoKSksCisgICAgcHJvbWlzZV9yZWplY3RzKHQsIHRo
ZUVycm9yLCBicmFuY2gyLmNhbmNlbCgpKQorICBdKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIHRl
ZWluZzogZmFpbGluZyB0byBjYW5jZWwgdGhlIG9yaWdpbmFsIHN0cmVhbSBzaG91bGQgY2F1c2Ug
Y2FuY2VsKCkgdG8gcmVqZWN0IG9uIGJyYW5jaGVzJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7
CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
KyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisg
IGNvbnN0IGJyYW5jaGVzID0gcnMudGVlKCk7CisgIGNvbnN0IHJlYWRlcjEgPSBicmFuY2hlc1sw
XS5nZXRSZWFkZXIoKTsKKyAgY29uc3QgcmVhZGVyMiA9IGJyYW5jaGVzWzFdLmdldFJlYWRlcigp
OworCisgIGNvbnN0IHByb21pc2UgPSBQcm9taXNlLmFsbChbcmVhZGVyMS5jbG9zZWQsIHJlYWRl
cjIuY2xvc2VkXSk7CisKKyAgY29udHJvbGxlci5jbG9zZSgpOworICByZXR1cm4gcHJvbWlzZTsK
KworfSwgJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogY2xvc2luZyB0aGUgb3JpZ2luYWwgc2hvdWxk
IGltbWVkaWF0ZWx5IGNsb3NlIHRoZSBicmFuY2hlcycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7
CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
KyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisg
IGNvbnN0IGJyYW5jaGVzID0gcnMudGVlKCk7CisgIGNvbnN0IHJlYWRlcjEgPSBicmFuY2hlc1sw
XS5nZXRSZWFkZXIoKTsKKyAgY29uc3QgcmVhZGVyMiA9IGJyYW5jaGVzWzFdLmdldFJlYWRlcigp
OworCisgIGNvbnN0IHRoZUVycm9yID0geyBuYW1lOiAnYm9vIScgfTsKKyAgY29uc3QgcHJvbWlz
ZSA9IFByb21pc2UuYWxsKFsKKyAgICBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJlYWRl
cjEuY2xvc2VkKSwKKyAgICBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJlYWRlcjIuY2xv
c2VkKQorICBdKTsKKworICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKKyAgcmV0dXJuIHBy
b21pc2U7CisKK30sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGVycm9yaW5nIHRoZSBvcmlnaW5h
bCBzaG91bGQgaW1tZWRpYXRlbHkgZXJyb3IgdGhlIGJyYW5jaGVzJyk7CisKK2RvbmUoKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy90ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5OTdiZDJhZmRhYmJmMjY3N2E0
YzQ3MzQ1NWVjNjlmMDIzN2NiNGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZW1w
bGF0ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTc0IEBACisKK1BBU1MgUnVubmluZyB0ZW1w
bGF0ZWRSU0VtcHR5IHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5KSAKK1BBU1MgaW5zdGFuY2Vz
IGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBhbmQgcHJvcGVydGllcyAKK1BBU1MgUnVubmluZyB0
ZW1wbGF0ZWRSU0VtcHR5UmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXIg
CitQQVNTIGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMg
CitQQVNTIGxvY2tlZCBzaG91bGQgYmUgdHJ1ZSAKK1BBU1MgcmVhZCgpIHNob3VsZCBuZXZlciBz
ZXR0bGUgCitQQVNTIHR3byByZWFkKClzIHNob3VsZCBib3RoIG5ldmVyIHNldHRsZSAKK1BBU1Mg
cmVhZCgpIHNob3VsZCByZXR1cm4gZGlzdGluY3QgcHJvbWlzZXMgZWFjaCB0aW1lIAorUEFTUyBn
ZXRSZWFkZXIoKSBhZ2FpbiBvbiB0aGUgc3RyZWFtIHNob3VsZCBmYWlsIAorUEFTUyByZWxlYXNp
bmcgdGhlIGxvY2sgd2l0aCBwZW5kaW5nIHJlYWQgcmVxdWVzdHMgc2hvdWxkIHRocm93IGJ1dCB0
aGUgcmVhZCByZXF1ZXN0cyBzaG91bGQgc3RheSBwZW5kaW5nIAorUEFTUyByZWxlYXNpbmcgdGhl
IGxvY2sgc2hvdWxkIGNhdXNlIGZ1cnRoZXIgcmVhZCgpIGNhbGxzIHRvIHJlamVjdCB3aXRoIGEg
VHlwZUVycm9yIAorUEFTUyByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCBj
YWxscyB0byByZWplY3Qgd2l0aCBhIFR5cGVFcnJvciAKK1BBU1MgcmVsZWFzaW5nIHRoZSBsb2Nr
IHNob3VsZCBjYXVzZSBsb2NrZWQgdG8gYmVjb21lIGZhbHNlIAorUEFTUyBjYW5jZWxpbmcgdmlh
IHRoZSByZWFkZXIgc2hvdWxkIGNhdXNlIHRoZSByZWFkZXIgdG8gYWN0IGNsb3NlZCAKK1BBU1Mg
Y2FuY2VsaW5nIHZpYSB0aGUgc3RyZWFtIHNob3VsZCBmYWlsIAorUEFTUyBSdW5uaW5nIHRlbXBs
YXRlZFJTQ2xvc2VkIHdpdGggUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBzdGFy
dCkgCitQQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJv
bWlzZSBlYWNoIHRpbWUgCitQQVNTIGxvY2tlZCBzaG91bGQgYmUgZmFsc2UgCitQQVNTIGdldFJl
YWRlcigpIHNob3VsZCBiZSBPSyAKK1BBU1Mgc2hvdWxkIGJlIGFibGUgdG8gYWNxdWlyZSBtdWx0
aXBsZSByZWFkZXJzIGlmIHRoZXkgYXJlIHJlbGVhc2VkIGluIHN1Y2Nlc3Npb24gCitQQVNTIHNo
b3VsZCBub3QgYmUgYWJsZSB0byBhY3F1aXJlIGEgc2Vjb25kIHJlYWRlciBpZiB3ZSBkb24ndCBy
ZWxlYXNlIHRoZSBmaXJzdCBvbmUgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFk
ZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUgZ2V0dGluZyByZWFk
ZXIpIAorUEFTUyByZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQs
IGRvbmU6IHRydWUgfSAKK1BBU1MgcmVhZCgpIG11bHRpcGxlIHRpbWVzIHNob3VsZCBmdWxmaWxs
IHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCitQQVNTIHJlYWQoKSBzaG91
bGQgd29yayB3aGVuIHVzZWQgd2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZpbGwgY2FsbGJhY2sg
CitQQVNTIGNsb3NlZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCAKK1BBU1MgcmVsZWFz
aW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRl
bnRpdHkgCitQQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQg
cHJvbWlzZSBlYWNoIHRpbWUgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIg
d2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJlYWRlcikg
CitQQVNTIHJlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9u
ZTogdHJ1ZSB9IAorUEFTUyByZWFkKCkgbXVsdGlwbGUgdGltZXMgc2hvdWxkIGZ1bGZpbGwgd2l0
aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKK1BBU1MgcmVhZCgpIHNob3VsZCB3
b3JrIHdoZW4gdXNlZCB3aXRoaW4gYW5vdGhlciByZWFkKCkgZnVsZmlsbCBjYWxsYmFjayAKK1BB
U1MgY2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkIAorUEFTUyByZWxlYXNpbmcg
dGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0
eSAKK1BBU1MgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9t
aXNlIGVhY2ggdGltZSAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZCB3aXRoIFJlYWRh
YmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbmNlbCkgCitQQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1
cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgCitQQVNTIGxvY2tlZCBz
aG91bGQgYmUgZmFsc2UgCitQQVNTIGdldFJlYWRlcigpIHNob3VsZCBiZSBPSyAKK1BBU1Mgc2hv
dWxkIGJlIGFibGUgdG8gYWNxdWlyZSBtdWx0aXBsZSByZWFkZXJzIGlmIHRoZXkgYXJlIHJlbGVh
c2VkIGluIHN1Y2Nlc3Npb24gCitQQVNTIHNob3VsZCBub3QgYmUgYWJsZSB0byBhY3F1aXJlIGEg
c2Vjb25kIHJlYWRlciBpZiB3ZSBkb24ndCByZWxlYXNlIHRoZSBmaXJzdCBvbmUgCitQQVNTIFJ1
bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIg
KGNsb3NlZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcgcmVhZGVyKSAKK1BBU1MgcmVhZCgpIHNo
b3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCitQQVNT
IHJlYWQoKSBtdWx0aXBsZSB0aW1lcyBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVm
aW5lZCwgZG9uZTogdHJ1ZSB9IAorUEFTUyByZWFkKCkgc2hvdWxkIHdvcmsgd2hlbiB1c2VkIHdp
dGhpbiBhbm90aGVyIHJlYWQoKSBmdWxmaWxsIGNhbGxiYWNrIAorUEFTUyBjbG9zZWQgc2hvdWxk
IGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQgCitQQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQg
Y2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IAorUEFTUyBjYW5jZWwo
KSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIAor
UEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJv
cmVkIHZpYSBjYWxsIGluIHN0YXJ0KSAKK1BBU1MgZ2V0UmVhZGVyKCkgc2hvdWxkIHJldHVybiBh
IHJlYWRlciB0aGF0IGFjdHMgZXJyb3JlZCAKK1BBU1MgcmVhZCgpIHR3aWNlIHNob3VsZCBnaXZl
IHRoZSBlcnJvciBlYWNoIHRpbWUgCitQQVNTIGxvY2tlZCBzaG91bGQgYmUgZmFsc2UgCitQQVNT
IFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHkgd2l0aCBSZWFkYWJsZVN0cmVhbSAo
ZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCkgCitQQVNTIHNob3VsZCBiZSBhYmxlIHRvIG9idGFp
biBhIHNlY29uZCByZWFkZXIsIHdpdGggdGhlIGNvcnJlY3QgY2xvc2VkIHByb21pc2UgCitQQVNT
IHNob3VsZCBub3QgYmUgYWJsZSB0byBvYnRhaW4gYWRkaXRpb25hbCByZWFkZXJzIGlmIHdlIGRv
bid0IHJlbGVhc2UgdGhlIGZpcnN0IGxvY2sgCitQQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1cm4g
YSBkaXN0aW5jdCByZWplY3RlZCBwcm9taXNlIGVhY2ggdGltZSAKK1BBU1MgcmVhZGVyIGNhbmNl
bCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCByZWplY3RlZCBwcm9taXNlIGVhY2ggdGltZSAK
K1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJy
b3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgCitQQVNTIGdl
dFJlYWRlcigpIHNob3VsZCByZXR1cm4gYSByZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQgCitQQVNT
IHJlYWQoKSB0d2ljZSBzaG91bGQgZ2l2ZSB0aGUgZXJyb3IgZWFjaCB0aW1lIAorUEFTUyBsb2Nr
ZWQgc2hvdWxkIGJlIGZhbHNlIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRl
ciB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBw
cm9taXNlIGluIHN0YXJ0KSByZWFkZXIgCitQQVNTIGNsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGgg
dGhlIGVycm9yIAorUEFTUyByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0
byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKK1BBU1MgcmVhZCgpIHNob3VsZCByZWplY3Qg
d2l0aCB0aGUgZXJyb3IgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyIHdp
dGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcikg
CitQQVNTIGNsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAorUEFTUyByZWxlYXNp
bmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVu
dGl0eSAKK1BBU1MgcmVhZCgpIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCitQQVNTIFJ1
bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVy
IChlcnJvcmVkIGFmdGVyIGdldHRpbmcgcmVhZGVyKSAKK1BBU1MgY2xvc2VkIHNob3VsZCByZWpl
Y3Qgd2l0aCB0aGUgZXJyb3IgCitQQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2Ug
Y2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IAorUEFTUyByZWFkKCkgc2hvdWxk
IHJlamVjdCB3aXRoIHRoZSBlcnJvciAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU1R3b0NodW5r
c09wZW5SZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgc3Rp
bGwgb3BlbikgcmVhZGVyIAorUEFTUyBjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRp
bmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MgKHNlcXVlbnRpYWwpIAorUEFTUyBj
YWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUg
Ym90aCBjaHVua3MgKG5lc3RlZCkgCitQQVNTIHJlYWQoKSBzaG91bGQgcmV0dXJuIGRpc3RpbmN0
IHByb21pc2VzIGVhY2ggdGltZSAKK1BBU1MgY2FuY2VsKCkgYWZ0ZXIgYSByZWFkKCkgc2hvdWxk
IHN0aWxsIGdpdmUgdGhhdCBzaW5nbGUgcmVhZCByZXN1bHQgCitQQVNTIFJ1bm5pbmcgdGVtcGxh
dGVkUlNUd29DaHVua3NDbG9zZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5r
cyBlbnF1ZXVlZCwgdGhlbiBjbG9zZWQpIHJlYWRlciAKK1BBU1MgdGhpcmQgcmVhZCgpLCB3aXRo
b3V0IHdhaXRpbmcsIHNob3VsZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9
IChzZXF1ZW50aWFsKSAKK1BBU1MgdGhpcmQgcmVhZCgpLCB3aXRob3V0IHdhaXRpbmcsIHNob3Vs
ZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IChuZXN0ZWQpIAorUEFTUyBk
cmFpbmluZyB0aGUgc3RyZWFtIHZpYSByZWFkKCkgc2hvdWxkIGNhdXNlIHRoZSByZWFkZXIgY2xv
c2VkIHByb21pc2UgdG8gZnVsZmlsbCwgYnV0IGxvY2tlZCBzdGF5cyB0cnVlIAorUEFTUyByZWxl
YXNpbmcgdGhlIGxvY2sgYWZ0ZXIgdGhlIHN0cmVhbSBpcyBjbG9zZWQgc2hvdWxkIGNhdXNlIGxv
Y2tlZCB0byBiZWNvbWUgZmFsc2UgCitQQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1
c2UgZnVydGhlciByZWFkKCkgY2FsbHMgdG8gcmVqZWN0IHdpdGggYSBUeXBlRXJyb3IgCitQQVNT
IHJlYWRlcidzIGNsb3NlZCBwcm9wZXJ0eSBhbHdheXMgcmV0dXJucyB0aGUgc2FtZSBwcm9taXNl
IAorRkFJTCBMb2FkIHRlbXBsYXRlZC5qcyB3aXRoIFNoYXJlZFdvcmtlciBhc3NlcnRfdW5yZWFj
aGVkOiBTaGFyZWRXb3JrZXIgaXMgdW5hdmFpbGFibGUgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2Rl
CitGQUlMIFVudGl0bGVkIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdu
YXZpZ2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdpc3RyYXRpb24nKQorUEFTUyBSdW5uaW5nIHRl
bXBsYXRlZFJTRW1wdHkgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIAorUEFTUyBpbnN0YW5j
ZXMgaGF2ZSB0aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIAorUEFTUyBSdW5uaW5n
IHRlbXBsYXRlZFJTRW1wdHlSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRl
ciAKK1BBU1MgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBhbmQgcHJvcGVydGll
cyAKK1BBU1MgbG9ja2VkIHNob3VsZCBiZSB0cnVlIAorUEFTUyByZWFkKCkgc2hvdWxkIG5ldmVy
IHNldHRsZSAKK1BBU1MgdHdvIHJlYWQoKXMgc2hvdWxkIGJvdGggbmV2ZXIgc2V0dGxlIAorUEFT
UyByZWFkKCkgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcyBlYWNoIHRpbWUgCitQQVNT
IGdldFJlYWRlcigpIGFnYWluIG9uIHRoZSBzdHJlYW0gc2hvdWxkIGZhaWwgCitQQVNTIHJlbGVh
c2luZyB0aGUgbG9jayB3aXRoIHBlbmRpbmcgcmVhZCByZXF1ZXN0cyBzaG91bGQgdGhyb3cgYnV0
IHRoZSByZWFkIHJlcXVlc3RzIHNob3VsZCBzdGF5IHBlbmRpbmcgCitQQVNTIHJlbGVhc2luZyB0
aGUgbG9jayBzaG91bGQgY2F1c2UgZnVydGhlciByZWFkKCkgY2FsbHMgdG8gcmVqZWN0IHdpdGgg
YSBUeXBlRXJyb3IgCitQQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2Vk
IGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yIAorUEFTUyByZWxlYXNpbmcgdGhlIGxv
Y2sgc2hvdWxkIGNhdXNlIGxvY2tlZCB0byBiZWNvbWUgZmFsc2UgCitQQVNTIGNhbmNlbGluZyB2
aWEgdGhlIHJlYWRlciBzaG91bGQgY2F1c2UgdGhlIHJlYWRlciB0byBhY3QgY2xvc2VkIAorUEFT
UyBjYW5jZWxpbmcgdmlhIHRoZSBzdHJlYW0gc2hvdWxkIGZhaWwgCitQQVNTIFJ1bm5pbmcgdGVt
cGxhdGVkUlNDbG9zZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxsIGluIHN0
YXJ0KSAKK1BBU1MgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBw
cm9taXNlIGVhY2ggdGltZSAKK1BBU1MgbG9ja2VkIHNob3VsZCBiZSBmYWxzZSAKK1BBU1MgZ2V0
UmVhZGVyKCkgc2hvdWxkIGJlIE9LIAorUEFTUyBzaG91bGQgYmUgYWJsZSB0byBhY3F1aXJlIG11
bHRpcGxlIHJlYWRlcnMgaWYgdGhleSBhcmUgcmVsZWFzZWQgaW4gc3VjY2Vzc2lvbiAKK1BBU1Mg
c2hvdWxkIG5vdCBiZSBhYmxlIHRvIGFjcXVpcmUgYSBzZWNvbmQgcmVhZGVyIGlmIHdlIGRvbid0
IHJlbGVhc2UgdGhlIGZpcnN0IG9uZSAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJl
YWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGJlZm9yZSBnZXR0aW5nIHJl
YWRlcikgCitQQVNTIHJlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5l
ZCwgZG9uZTogdHJ1ZSB9IAorUEFTUyByZWFkKCkgbXVsdGlwbGUgdGltZXMgc2hvdWxkIGZ1bGZp
bGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKK1BBU1MgcmVhZCgpIHNo
b3VsZCB3b3JrIHdoZW4gdXNlZCB3aXRoaW4gYW5vdGhlciByZWFkKCkgZnVsZmlsbCBjYWxsYmFj
ayAKK1BBU1MgY2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkIAorUEFTUyByZWxl
YXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBp
ZGVudGl0eSAKK1BBU1MgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxl
ZCBwcm9taXNlIGVhY2ggdGltZSAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRl
ciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGFmdGVyIGdldHRpbmcgcmVhZGVy
KSAKK1BBU1MgcmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBk
b25lOiB0cnVlIH0gCitQQVNTIHJlYWQoKSBtdWx0aXBsZSB0aW1lcyBzaG91bGQgZnVsZmlsbCB3
aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAorUEFTUyByZWFkKCkgc2hvdWxk
IHdvcmsgd2hlbiB1c2VkIHdpdGhpbiBhbm90aGVyIHJlYWQoKSBmdWxmaWxsIGNhbGxiYWNrIAor
UEFTUyBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQgCitQQVNTIHJlbGVhc2lu
ZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50
aXR5IAorUEFTUyBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHBy
b21pc2UgZWFjaCB0aW1lIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkIHdpdGggUmVh
ZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKSAKK1BBU1MgY2FuY2VsKCkgc2hvdWxkIHJl
dHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZSAKK1BBU1MgbG9ja2Vk
IHNob3VsZCBiZSBmYWxzZSAKK1BBU1MgZ2V0UmVhZGVyKCkgc2hvdWxkIGJlIE9LIAorUEFTUyBz
aG91bGQgYmUgYWJsZSB0byBhY3F1aXJlIG11bHRpcGxlIHJlYWRlcnMgaWYgdGhleSBhcmUgcmVs
ZWFzZWQgaW4gc3VjY2Vzc2lvbiAKK1BBU1Mgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGFjcXVpcmUg
YSBzZWNvbmQgcmVhZGVyIGlmIHdlIGRvbid0IHJlbGVhc2UgdGhlIGZpcnN0IG9uZSAKK1BBU1Mg
UnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRl
ciAoY2xvc2VkIHZpYSBjYW5jZWwgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpIAorUEFTUyByZWFkKCkg
c2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKK1BB
U1MgcmVhZCgpIG11bHRpcGxlIHRpbWVzIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5k
ZWZpbmVkLCBkb25lOiB0cnVlIH0gCitQQVNTIHJlYWQoKSBzaG91bGQgd29yayB3aGVuIHVzZWQg
d2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZpbGwgY2FsbGJhY2sgCitQQVNTIGNsb3NlZCBzaG91
bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCAKK1BBU1MgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3Vs
ZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkgCitQQVNTIGNhbmNl
bCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUg
CitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkIHdpdGggUmVhZGFibGVTdHJlYW0gKGVy
cm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpIAorUEFTUyBnZXRSZWFkZXIoKSBzaG91bGQgcmV0dXJu
IGEgcmVhZGVyIHRoYXQgYWN0cyBlcnJvcmVkIAorUEFTUyByZWFkKCkgdHdpY2Ugc2hvdWxkIGdp
dmUgdGhlIGVycm9yIGVhY2ggdGltZSAKK1BBU1MgbG9ja2VkIHNob3VsZCBiZSBmYWxzZSAKK1BB
U1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRTeW5jT25seSB3aXRoIFJlYWRhYmxlU3RyZWFt
IChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KSAKK1BBU1Mgc2hvdWxkIGJlIGFibGUgdG8gb2J0
YWluIGEgc2Vjb25kIHJlYWRlciwgd2l0aCB0aGUgY29ycmVjdCBjbG9zZWQgcHJvbWlzZSAKK1BB
U1Mgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIG9idGFpbiBhZGRpdGlvbmFsIHJlYWRlcnMgaWYgd2Ug
ZG9uJ3QgcmVsZWFzZSB0aGUgZmlyc3QgbG9jayAKK1BBU1MgY2FuY2VsKCkgc2hvdWxkIHJldHVy
biBhIGRpc3RpbmN0IHJlamVjdGVkIHByb21pc2UgZWFjaCB0aW1lIAorUEFTUyByZWFkZXIgY2Fu
Y2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IHJlamVjdGVkIHByb21pc2UgZWFjaCB0aW1l
IAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChl
cnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KSAKK1BBU1Mg
Z2V0UmVhZGVyKCkgc2hvdWxkIHJldHVybiBhIHJlYWRlciB0aGF0IGFjdHMgZXJyb3JlZCAKK1BB
U1MgcmVhZCgpIHR3aWNlIHNob3VsZCBnaXZlIHRoZSBlcnJvciBlYWNoIHRpbWUgCitQQVNTIGxv
Y2tlZCBzaG91bGQgYmUgZmFsc2UgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkUmVh
ZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVk
IHByb21pc2UgaW4gc3RhcnQpIHJlYWRlciAKK1BBU1MgY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0
aCB0aGUgZXJyb3IgCitQQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2Vk
IHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IAorUEFTUyByZWFkKCkgc2hvdWxkIHJlamVj
dCB3aXRoIHRoZSBlcnJvciAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIg
d2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVy
KSAKK1BBU1MgY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCitQQVNTIHJlbGVh
c2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlk
ZW50aXR5IAorUEFTUyByZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciAKK1BBU1Mg
UnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFk
ZXIgKGVycm9yZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpIAorUEFTUyBjbG9zZWQgc2hvdWxkIHJl
amVjdCB3aXRoIHRoZSBlcnJvciAKK1BBU1MgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVz
ZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkgCitQQVNTIHJlYWQoKSBzaG91
bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTVHdvQ2h1
bmtzT3BlblJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCBz
dGlsbCBvcGVuKSByZWFkZXIgCitQQVNTIGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2Fp
dGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNodW5rcyAoc2VxdWVudGlhbCkgCitQQVNT
IGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2FpdGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2
ZSBib3RoIGNodW5rcyAobmVzdGVkKSAKK1BBU1MgcmVhZCgpIHNob3VsZCByZXR1cm4gZGlzdGlu
Y3QgcHJvbWlzZXMgZWFjaCB0aW1lIAorUEFTUyBjYW5jZWwoKSBhZnRlciBhIHJlYWQoKSBzaG91
bGQgc3RpbGwgZ2l2ZSB0aGF0IHNpbmdsZSByZWFkIHJlc3VsdCAKK1BBU1MgUnVubmluZyB0ZW1w
bGF0ZWRSU1R3b0NodW5rc0Nsb3NlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1
bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkgcmVhZGVyIAorUEFTUyB0aGlyZCByZWFkKCksIHdp
dGhvdXQgd2FpdGluZywgc2hvdWxkIGdpdmUgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVl
IH0gKHNlcXVlbnRpYWwpIAorUEFTUyB0aGlyZCByZWFkKCksIHdpdGhvdXQgd2FpdGluZywgc2hv
dWxkIGdpdmUgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gKG5lc3RlZCkgCitQQVNT
IGRyYWluaW5nIHRoZSBzdHJlYW0gdmlhIHJlYWQoKSBzaG91bGQgY2F1c2UgdGhlIHJlYWRlciBj
bG9zZWQgcHJvbWlzZSB0byBmdWxmaWxsLCBidXQgbG9ja2VkIHN0YXlzIHRydWUgCitQQVNTIHJl
bGVhc2luZyB0aGUgbG9jayBhZnRlciB0aGUgc3RyZWFtIGlzIGNsb3NlZCBzaG91bGQgY2F1c2Ug
bG9ja2VkIHRvIGJlY29tZSBmYWxzZSAKK1BBU1MgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBj
YXVzZSBmdXJ0aGVyIHJlYWQoKSBjYWxscyB0byByZWplY3Qgd2l0aCBhIFR5cGVFcnJvciAKK1BB
U1MgcmVhZGVyJ3MgY2xvc2VkIHByb3BlcnR5IGFsd2F5cyByZXR1cm5zIHRoZSBzYW1lIHByb21p
c2UgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvdGVtcGxhdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTVjNmE2YWNhZWZiNWRhYzU4Yjk1ZjIyODEx
MDMyZTlhYmE2MmFmYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5o
dG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy90
ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0
LWluaXRpYWxpemVyLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcnMtdGVz
dC10ZW1wbGF0ZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InRlbXBsYXRlZC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOword29ya2VyX3Rlc3QoJ3RlbXBsYXRlZC5q
cycpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuanMgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy90ZW1wbGF0ZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmRiMDQyOTk5NGQ0NTNkYmZjZDJl
ODM0N2U2ZmE3ZWZkZjIwYmM0ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBs
YXRlZC5qcwpAQCAtMCwwICsxLDE0OCBAQAorJ3VzZSBzdHJpY3QnOworCitpZiAoc2VsZi5pbXBv
cnRTY3JpcHRzKSB7CisgIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcycpOworICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpz
Jyk7CisgIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3JzLXRlc3QtdGVtcGxhdGVz
LmpzJyk7Cit9CisKKy8vIFJ1biB0aGUgcmVhZGFibGUgc3RyZWFtIHRlc3QgdGVtcGxhdGVzIGFn
YWluc3QgcmVhZGFibGUgc3RyZWFtcyBjcmVhdGVkIGRpcmVjdGx5IHVzaW5nIHRoZSBjb25zdHJ1
Y3RvcgorCitjb25zdCB0aGVFcnJvciA9IHsgbmFtZTogJ2JvbyEnIH07Citjb25zdCBjaHVua3Mg
PSBbJ2EnLCAnYiddOworCit0ZW1wbGF0ZWRSU0VtcHR5KCdSZWFkYWJsZVN0cmVhbSAoZW1wdHkp
JywgKCkgPT4geworICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Cit9KTsKKwordGVtcGxh
dGVkUlNFbXB0eVJlYWRlcignUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXInLCAoKSA9PiB7
CisgIHJldHVybiBzdHJlYW1BbmREZWZhdWx0UmVhZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSgpKTsK
K30pOworCit0ZW1wbGF0ZWRSU0Nsb3NlZCgnUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2Fs
bCBpbiBzdGFydCknLCAoKSA9PiB7CisgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oeworICAg
IHN0YXJ0KGMpIHsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICB9CisgIH0pOworfSk7CisKK3RlbXBs
YXRlZFJTQ2xvc2VkUmVhZGVyKCdSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUg
Z2V0dGluZyByZWFkZXIpJywgKCkgPT4geworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3Qgc3Ry
ZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9s
bGVyID0gYzsKKyAgICB9CisgIH0pOworICBjb250cm9sbGVyLmNsb3NlKCk7CisgIGNvbnN0IHJl
c3VsdCA9IHN0cmVhbUFuZERlZmF1bHRSZWFkZXIoc3RyZWFtKTsKKyAgcmV0dXJuIHJlc3VsdDsK
K30pOworCit0ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlcignUmVhZGFibGVTdHJlYW0gcmVhZGVyIChj
bG9zZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpJywgKCkgPT4geworICBsZXQgY29udHJvbGxlcjsK
KyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7Cisg
ICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworICBjb25zdCByZXN1bHQgPSBzdHJl
YW1BbmREZWZhdWx0UmVhZGVyKHN0cmVhbSk7CisgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgcmV0
dXJuIHJlc3VsdDsKK30pOworCit0ZW1wbGF0ZWRSU0Nsb3NlZCgnUmVhZGFibGVTdHJlYW0gKGNs
b3NlZCB2aWEgY2FuY2VsKScsICgpID0+IHsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxl
U3RyZWFtKCk7CisgIHN0cmVhbS5jYW5jZWwoKTsKKyAgcmV0dXJuIHN0cmVhbTsKK30pOworCit0
ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlcignUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgdmlh
IGNhbmNlbCBhZnRlciBnZXR0aW5nIHJlYWRlciknLCAoKSA9PiB7CisgIGNvbnN0IHN0cmVhbSA9
IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICBjb25zdCByZXN1bHQgPSBzdHJlYW1BbmREZWZhdWx0
UmVhZGVyKHN0cmVhbSk7CisgIHJlc3VsdC5yZWFkZXIuY2FuY2VsKCk7CisgIHJldHVybiByZXN1
bHQ7Cit9KTsKKwordGVtcGxhdGVkUlNFcnJvcmVkKCdSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2
aWEgY2FsbCBpbiBzdGFydCknLCAoKSA9PiB7CisgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0o
eworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZXJyb3IodGhlRXJyb3IpOworICAgIH0KKyAgfSk7
Cit9LCB0aGVFcnJvcik7CisKK3RlbXBsYXRlZFJTRXJyb3JlZFN5bmNPbmx5KCdSZWFkYWJsZVN0
cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCknLCAoKSA9PiB7CisgIHJldHVybiBuZXcg
UmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZXJyb3IodGhlRXJyb3Ip
OworICAgIH0KKyAgfSk7Cit9LCB0aGVFcnJvcik7CisKK3RlbXBsYXRlZFJTRXJyb3JlZCgnUmVh
ZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4g
c3RhcnQpJywgKCkgPT4geworICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFy
dCgpIHsKKyAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh0aGVFcnJvcik7CisgICAgfQorICB9
KTsKK30sIHRoZUVycm9yKTsKKwordGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyKCdSZWFkYWJsZVN0
cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkg
cmVhZGVyJywgKCkgPT4geworICByZXR1cm4gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KCkgeworICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0
KHRoZUVycm9yKTsKKyAgICB9CisgIH0pKTsKK30sIHRoZUVycm9yKTsKKwordGVtcGxhdGVkUlNF
cnJvcmVkUmVhZGVyKCdSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQgYmVmb3JlIGdldHRp
bmcgcmVhZGVyKScsICgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHN0cmVhbSA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9
IGM7CisgICAgfQorICB9KTsKKyAgY29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7CisgIHJldHVy
biBzdHJlYW1BbmREZWZhdWx0UmVhZGVyKHN0cmVhbSk7Cit9LCB0aGVFcnJvcik7CisKK3RlbXBs
YXRlZFJTRXJyb3JlZFJlYWRlcignUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGFmdGVy
IGdldHRpbmcgcmVhZGVyKScsICgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJl
c3VsdCA9IHN0cmVhbUFuZERlZmF1bHRSZWFkZXIobmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBz
dGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pKTsKKyAgY29udHJv
bGxlci5lcnJvcih0aGVFcnJvcik7CisgIHJldHVybiByZXN1bHQ7Cit9LCB0aGVFcnJvcik7CisK
K3RlbXBsYXRlZFJTVHdvQ2h1bmtzT3BlblJlYWRlcignUmVhZGFibGVTdHJlYW0gKHR3byBjaHVu
a3MgZW5xdWV1ZWQsIHN0aWxsIG9wZW4pIHJlYWRlcicsICgpID0+IHsKKyAgcmV0dXJuIHN0cmVh
bUFuZERlZmF1bHRSZWFkZXIobmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7Cisg
ICAgICBjLmVucXVldWUoY2h1bmtzWzBdKTsKKyAgICAgIGMuZW5xdWV1ZShjaHVua3NbMV0pOwor
ICAgIH0KKyAgfSkpOworfSwgY2h1bmtzKTsKKwordGVtcGxhdGVkUlNUd29DaHVua3NDbG9zZWRS
ZWFkZXIoJ1JlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkg
cmVhZGVyJywgKCkgPT4geworICBsZXQgZG9DbG9zZTsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVucXVldWUoY2h1bmtzWzBd
KTsKKyAgICAgIGMuZW5xdWV1ZShjaHVua3NbMV0pOworICAgICAgZG9DbG9zZSA9IGMuY2xvc2Uu
YmluZChjKTsKKyAgICB9CisgIH0pOworICBjb25zdCByZXN1bHQgPSBzdHJlYW1BbmREZWZhdWx0
UmVhZGVyKHN0cmVhbSk7CisgIGRvQ2xvc2UoKTsKKyAgcmV0dXJuIHJlc3VsdDsKK30sIGNodW5r
cyk7CisKK2Z1bmN0aW9uIHN0cmVhbUFuZERlZmF1bHRSZWFkZXIoc3RyZWFtKSB7CisgIHJldHVy
biB7IHN0cmVhbSwgcmVhZGVyOiBzdHJlYW0uZ2V0UmVhZGVyKCkgfTsKK30KKworZG9uZSgpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3Jlc291cmNlcy9ycy10ZXN0LXRlbXBsYXRlcy5qcyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZXNvdXJjZXMvcnMtdGVzdC10ZW1w
bGF0ZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODUyYjU2NWQ5MDQyZTcxNzgwZDE2NGNhMjE2YTg3NGZjMDk5
YmM4ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZXNvdXJjZXMvcnMtdGVzdC10ZW1wbGF0ZXMuanMKQEAgLTAs
MCArMSw2MjQgQEAKKyd1c2Ugc3RyaWN0JzsKKworLy8gVGhlc2UgdGVzdHMgY2FuIGJlIHJ1biBh
Z2FpbnN0IGFueSByZWFkYWJsZSBzdHJlYW0gcHJvZHVjZWQgYnkgdGhlIHdlYiBwbGF0Zm9ybSB0
aGF0IG1lZXRzIHRoZSBnaXZlbiBkZXNjcmlwdGlvbnMuCisvLyBGb3IgcmVhZGFibGUgc3RyZWFt
IHRlc3RzLCB0aGUgZmFjdG9yeSBzaG91bGQgcmV0dXJuIHRoZSBzdHJlYW0uIEZvciByZWFkZXIg
dGVzdHMsIHRoZSBmYWN0b3J5IHNob3VsZCByZXR1cm4gYQorLy8geyBzdHJlYW0sIHJlYWRlciB9
IG9iamVjdC4gKFlvdSBjYW4gdXNlIHRoaXMgdG8gdmFyeSB0aGUgdGltZSBhdCB3aGljaCB5b3Ug
YWNxdWlyZSBhIHJlYWRlci4pCisKK3NlbGYudGVtcGxhdGVkUlNFbXB0eSA9IChsYWJlbCwgZmFj
dG9yeSkgPT4geworICB0ZXN0KCgpID0+IHt9LCAnUnVubmluZyB0ZW1wbGF0ZWRSU0VtcHR5IHdp
dGggJyArIGxhYmVsKTsKKworICB0ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHJzID0gZmFjdG9y
eSgpOworCisgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnMubG9ja2VkLCAnYm9vbGVhbicsICdo
YXMgYSBib29sZWFuIGxvY2tlZCBnZXR0ZXInKTsKKyAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBy
cy5jYW5jZWwsICdmdW5jdGlvbicsICdoYXMgYSBjYW5jZWwgbWV0aG9kJyk7CisgICAgYXNzZXJ0
X2VxdWFscyh0eXBlb2YgcnMuZ2V0UmVhZGVyLCAnZnVuY3Rpb24nLCAnaGFzIGEgZ2V0UmVhZGVy
IG1ldGhvZCcpOworICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJzLnBpcGVUaHJvdWdoLCAnZnVu
Y3Rpb24nLCAnaGFzIGEgcGlwZVRocm91Z2ggbWV0aG9kJyk7CisgICAgYXNzZXJ0X2VxdWFscyh0
eXBlb2YgcnMucGlwZVRvLCAnZnVuY3Rpb24nLCAnaGFzIGEgcGlwZVRvIG1ldGhvZCcpOworICAg
IGFzc2VydF9lcXVhbHModHlwZW9mIHJzLnRlZSwgJ2Z1bmN0aW9uJywgJ2hhcyBhIHRlZSBtZXRo
b2QnKTsKKworICB9LCAnaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBhbmQgcHJv
cGVydGllcycpOworfTsKKworc2VsZi50ZW1wbGF0ZWRSU0Nsb3NlZCA9IChsYWJlbCwgZmFjdG9y
eSkgPT4geworICB0ZXN0KCgpID0+IHt9LCAnUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZCB3aXRo
ICcgKyBsYWJlbCk7CisKKyAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHJzID0g
ZmFjdG9yeSgpOworICAgIGNvbnN0IGNhbmNlbFByb21pc2UxID0gcnMuY2FuY2VsKCk7CisgICAg
Y29uc3QgY2FuY2VsUHJvbWlzZTIgPSBycy5jYW5jZWwoKTsKKworICAgIGFzc2VydF9ub3RfZXF1
YWxzKGNhbmNlbFByb21pc2UxLCBjYW5jZWxQcm9taXNlMiwgJ2NhbmNlbCgpIGNhbGxzIHNob3Vs
ZCByZXR1cm4gZGlzdGluY3QgcHJvbWlzZXMnKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChb
CisgICAgICBjYW5jZWxQcm9taXNlMS50aGVuKHYgPT4gYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmlu
ZWQsICdmaXJzdCBjYW5jZWwoKSBjYWxsIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJykp
LAorICAgICAgY2FuY2VsUHJvbWlzZTIudGhlbih2ID0+IGFzc2VydF9lcXVhbHModiwgdW5kZWZp
bmVkLCAnc2Vjb25kIGNhbmNlbCgpIGNhbGwgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQn
KSkKKyAgICBdKTsKKworICB9LCAnY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1
bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZScpOworCisgIHRlc3QoKCkgPT4geworCisgICAgY29u
c3QgcnMgPSBmYWN0b3J5KCk7CisgICAgYXNzZXJ0X2ZhbHNlKHJzLmxvY2tlZCwgJ2xvY2tlZCBn
ZXR0ZXIgc2hvdWxkIHJldHVybiBmYWxzZScpOworCisgIH0sICdsb2NrZWQgc2hvdWxkIGJlIGZh
bHNlJyk7CisKKyAgdGVzdCgoKSA9PiB7CisKKyAgICBjb25zdCBycyA9IGZhY3RvcnkoKTsKKyAg
ICBycy5nZXRSZWFkZXIoKTsgLy8gZ2V0UmVhZGVyKCkgc2hvdWxkIG5vdCB0aHJvdy4KKworICB9
LCAnZ2V0UmVhZGVyKCkgc2hvdWxkIGJlIE9LJyk7CisKKyAgdGVzdCgoKSA9PiB7CisKKyAgICBj
b25zdCBycyA9IGZhY3RvcnkoKTsKKworICAgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigp
OworICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOworCisgICAgY29uc3QgcmVhZGVyMiA9IHJzLmdl
dFJlYWRlcigpOyAvLyBHZXR0aW5nIGEgc2Vjb25kIHJlYWRlciBzaG91bGQgbm90IHRocm93Lgor
ICAgIHJlYWRlcjIucmVsZWFzZUxvY2soKTsKKworICAgIHJzLmdldFJlYWRlcigpOyAvLyBHZXR0
aW5nIGEgdGhpcmQgcmVhZGVyIHNob3VsZCBub3QgdGhyb3cuCisKKyAgfSwgJ3Nob3VsZCBiZSBh
YmxlIHRvIGFjcXVpcmUgbXVsdGlwbGUgcmVhZGVycyBpZiB0aGV5IGFyZSByZWxlYXNlZCBpbiBz
dWNjZXNzaW9uJyk7CisKKyAgdGVzdCgoKSA9PiB7CisKKyAgICBjb25zdCBycyA9IGZhY3Rvcnko
KTsKKworICAgIHJzLmdldFJlYWRlcigpOworCisgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCksICgpID0+IHJzLmdldFJlYWRlcigpLCAnZ2V0dGluZyBhIHNlY29uZCByZWFkZXIgc2hv
dWxkIHRocm93Jyk7CisgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJz
LmdldFJlYWRlcigpLCAnZ2V0dGluZyBhIHRoaXJkIHJlYWRlciBzaG91bGQgdGhyb3cnKTsKKwor
ICB9LCAnc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGFjcXVpcmUgYSBzZWNvbmQgcmVhZGVyIGlmIHdl
IGRvblwndCByZWxlYXNlIHRoZSBmaXJzdCBvbmUnKTsKK307CisKK3NlbGYudGVtcGxhdGVkUlNF
cnJvcmVkID0gKGxhYmVsLCBmYWN0b3J5LCBlcnJvcikgPT4geworICB0ZXN0KCgpID0+IHt9LCAn
UnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWQgd2l0aCAnICsgbGFiZWwpOworCisgIHByb21pc2Vf
dGVzdCh0ID0+IHsKKworICAgIGNvbnN0IHJzID0gZmFjdG9yeSgpOworICAgIGNvbnN0IHJlYWRl
ciA9IHJzLmdldFJlYWRlcigpOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHBy
b21pc2VfcmVqZWN0cyh0LCBlcnJvciwgcmVhZGVyLmNsb3NlZCksCisgICAgICBwcm9taXNlX3Jl
amVjdHModCwgZXJyb3IsIHJlYWRlci5yZWFkKCkpCisgICAgXSk7CisKKyAgfSwgJ2dldFJlYWRl
cigpIHNob3VsZCByZXR1cm4gYSByZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQnKTsKKworICBwcm9t
aXNlX3Rlc3QodCA9PiB7CisKKyAgICBjb25zdCBycyA9IGZhY3RvcnkoKTsKKyAgICBjb25zdCBy
ZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAg
ICBwcm9taXNlX3JlamVjdHModCwgZXJyb3IsIHJlYWRlci5yZWFkKCkpLAorICAgICAgcHJvbWlz
ZV9yZWplY3RzKHQsIGVycm9yLCByZWFkZXIucmVhZCgpKSwKKyAgICAgIHByb21pc2VfcmVqZWN0
cyh0LCBlcnJvciwgcmVhZGVyLmNsb3NlZCkKKyAgICBdKTsKKworICB9LCAncmVhZCgpIHR3aWNl
IHNob3VsZCBnaXZlIHRoZSBlcnJvciBlYWNoIHRpbWUnKTsKKworICB0ZXN0KCgpID0+IHsKKyAg
ICBjb25zdCBycyA9IGZhY3RvcnkoKTsKKworICAgIGFzc2VydF9mYWxzZShycy5sb2NrZWQsICds
b2NrZWQgZ2V0dGVyIHNob3VsZCByZXR1cm4gZmFsc2UnKTsKKyAgfSwgJ2xvY2tlZCBzaG91bGQg
YmUgZmFsc2UnKTsKK307CisKK3NlbGYudGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHkgPSAobGFi
ZWwsIGZhY3RvcnksIGVycm9yKSA9PiB7CisgIHRlc3QoKCkgPT4ge30sICdSdW5uaW5nIHRlbXBs
YXRlZFJTRXJyb3JlZFN5bmNPbmx5IHdpdGggJyArIGxhYmVsKTsKKworICBwcm9taXNlX3Rlc3Qo
dCA9PiB7CisKKyAgICBjb25zdCBycyA9IGZhY3RvcnkoKTsKKyAgICBycy5nZXRSZWFkZXIoKS5y
ZWxlYXNlTG9jaygpOworICAgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOyAvLyBDYWxs
aW5nIGdldFJlYWRlcigpIHR3aWNlIGRvZXMgbm90IHRocm93ICh0aGUgc3RyZWFtIGlzIG5vdCBs
b2NrZWQpLgorCisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvciwgcmVhZGVyLmNs
b3NlZCk7CisKKyAgfSwgJ3Nob3VsZCBiZSBhYmxlIHRvIG9idGFpbiBhIHNlY29uZCByZWFkZXIs
IHdpdGggdGhlIGNvcnJlY3QgY2xvc2VkIHByb21pc2UnKTsKKworICB0ZXN0KCgpID0+IHsKKwor
ICAgIGNvbnN0IHJzID0gZmFjdG9yeSgpOworICAgIHJzLmdldFJlYWRlcigpOworCisgICAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJzLmdldFJlYWRlcigpLCAnZ2V0dGlu
ZyBhIHNlY29uZCByZWFkZXIgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7CisgICAgYXNzZXJ0
X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJzLmdldFJlYWRlcigpLCAnZ2V0dGluZyBh
IHRoaXJkIHJlYWRlciBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKKworICB9LCAnc2hvdWxk
IG5vdCBiZSBhYmxlIHRvIG9idGFpbiBhZGRpdGlvbmFsIHJlYWRlcnMgaWYgd2UgZG9uXCd0IHJl
bGVhc2UgdGhlIGZpcnN0IGxvY2snKTsKKworICBwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgICBj
b25zdCBycyA9IGZhY3RvcnkoKTsKKyAgICBjb25zdCBjYW5jZWxQcm9taXNlMSA9IHJzLmNhbmNl
bCgpOworICAgIGNvbnN0IGNhbmNlbFByb21pc2UyID0gcnMuY2FuY2VsKCk7CisKKyAgICBhc3Nl
cnRfbm90X2VxdWFscyhjYW5jZWxQcm9taXNlMSwgY2FuY2VsUHJvbWlzZTIsICdjYW5jZWwoKSBj
YWxscyBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzJyk7CisKKyAgICByZXR1cm4gUHJv
bWlzZS5hbGwoWworICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yLCBjYW5jZWxQcm9taXNl
MSksCisgICAgICBwcm9taXNlX3JlamVjdHModCwgZXJyb3IsIGNhbmNlbFByb21pc2UyKQorICAg
IF0pOworCisgIH0sICdjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQg
cHJvbWlzZSBlYWNoIHRpbWUnKTsKKworICBwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgICBjb25z
dCBycyA9IGZhY3RvcnkoKTsKKyAgICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKyAg
ICBjb25zdCBjYW5jZWxQcm9taXNlMSA9IHJlYWRlci5jYW5jZWwoKTsKKyAgICBjb25zdCBjYW5j
ZWxQcm9taXNlMiA9IHJlYWRlci5jYW5jZWwoKTsKKworICAgIGFzc2VydF9ub3RfZXF1YWxzKGNh
bmNlbFByb21pc2UxLCBjYW5jZWxQcm9taXNlMiwgJ2NhbmNlbCgpIGNhbGxzIHNob3VsZCByZXR1
cm4gZGlzdGluY3QgcHJvbWlzZXMnKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAg
ICBwcm9taXNlX3JlamVjdHModCwgZXJyb3IsIGNhbmNlbFByb21pc2UxKSwKKyAgICAgIHByb21p
c2VfcmVqZWN0cyh0LCBlcnJvciwgY2FuY2VsUHJvbWlzZTIpCisgICAgXSk7CisKKyAgfSwgJ3Jl
YWRlciBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBl
YWNoIHRpbWUnKTsKK307CisKK3NlbGYudGVtcGxhdGVkUlNFbXB0eVJlYWRlciA9IChsYWJlbCwg
ZmFjdG9yeSkgPT4geworICB0ZXN0KCgpID0+IHt9LCAnUnVubmluZyB0ZW1wbGF0ZWRSU0VtcHR5
UmVhZGVyIHdpdGggJyArIGxhYmVsKTsKKworICB0ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHJl
YWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7CisKKyAgICBhc3NlcnRfdHJ1ZSgnY2xvc2VkJyBpbiBy
ZWFkZXIsICdoYXMgYSBjbG9zZWQgcHJvcGVydHknKTsKKyAgICBhc3NlcnRfZXF1YWxzKHR5cGVv
ZiByZWFkZXIuY2xvc2VkLnRoZW4sICdmdW5jdGlvbicsICdjbG9zZWQgcHJvcGVydHkgaXMgdGhl
bmFibGUnKTsKKworICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJlYWRlci5jYW5jZWwsICdmdW5j
dGlvbicsICdoYXMgYSBjYW5jZWwgbWV0aG9kJyk7CisgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2Yg
cmVhZGVyLnJlYWQsICdmdW5jdGlvbicsICdoYXMgYSByZWFkIG1ldGhvZCcpOworICAgIGFzc2Vy
dF9lcXVhbHModHlwZW9mIHJlYWRlci5yZWxlYXNlTG9jaywgJ2Z1bmN0aW9uJywgJ2hhcyBhIHJl
bGVhc2VMb2NrIG1ldGhvZCcpOworCisgIH0sICdpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBt
ZXRob2RzIGFuZCBwcm9wZXJ0aWVzJyk7CisKKyAgdGVzdCgoKSA9PiB7CisKKyAgICBjb25zdCBz
dHJlYW0gPSBmYWN0b3J5KCkuc3RyZWFtOworCisgICAgYXNzZXJ0X3RydWUoc3RyZWFtLmxvY2tl
ZCwgJ2xvY2tlZCBnZXR0ZXIgc2hvdWxkIHJldHVybiB0cnVlJyk7CisKKyAgfSwgJ2xvY2tlZCBz
aG91bGQgYmUgdHJ1ZScpOworCisgIHByb21pc2VfdGVzdCh0ID0+IHsKKworICAgIGNvbnN0IHJl
YWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7CisKKyAgICByZWFkZXIucmVhZCgpLnRoZW4oCisgICAg
ICB0LnVucmVhY2hlZF9mdW5jKCdyZWFkKCkgc2hvdWxkIG5vdCBmdWxmaWxsJyksCisgICAgICB0
LnVucmVhY2hlZF9mdW5jKCdyZWFkKCkgc2hvdWxkIG5vdCByZWplY3QnKQorICAgICk7CisKKyAg
ICByZXR1cm4gZGVsYXkoNTAwKTsKKworICB9LCAncmVhZCgpIHNob3VsZCBuZXZlciBzZXR0bGUn
KTsKKworICBwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5
KCkucmVhZGVyOworCisgICAgcmVhZGVyLnJlYWQoKS50aGVuKAorICAgICAgdC51bnJlYWNoZWRf
ZnVuYygncmVhZCgpIHNob3VsZCBub3QgZnVsZmlsbCcpLAorICAgICAgdC51bnJlYWNoZWRfZnVu
YygncmVhZCgpIHNob3VsZCBub3QgcmVqZWN0JykKKyAgICApOworCisgICAgcmVhZGVyLnJlYWQo
KS50aGVuKAorICAgICAgdC51bnJlYWNoZWRfZnVuYygncmVhZCgpIHNob3VsZCBub3QgZnVsZmls
bCcpLAorICAgICAgdC51bnJlYWNoZWRfZnVuYygncmVhZCgpIHNob3VsZCBub3QgcmVqZWN0JykK
KyAgICApOworCisgICAgcmV0dXJuIGRlbGF5KDUwMCk7CisKKyAgfSwgJ3R3byByZWFkKClzIHNo
b3VsZCBib3RoIG5ldmVyIHNldHRsZScpOworCisgIHRlc3QoKCkgPT4geworCisgICAgY29uc3Qg
cmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKKyAgICBhc3NlcnRfbm90X2VxdWFscyhyZWFkZXIu
cmVhZCgpLCByZWFkZXIucmVhZCgpLCAndGhlIHByb21pc2VzIHJldHVybmVkIHNob3VsZCBiZSBk
aXN0aW5jdCcpOworCisgIH0sICdyZWFkKCkgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNl
cyBlYWNoIHRpbWUnKTsKKworICB0ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHN0cmVhbSA9IGZh
Y3RvcnkoKS5zdHJlYW07CisgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+
IHN0cmVhbS5nZXRSZWFkZXIoKSwgJ3N0cmVhbS5nZXRSZWFkZXIoKSBzaG91bGQgdGhyb3cgYSBU
eXBlRXJyb3InKTsKKworICB9LCAnZ2V0UmVhZGVyKCkgYWdhaW4gb24gdGhlIHN0cmVhbSBzaG91
bGQgZmFpbCcpOworCisgIHByb21pc2VfdGVzdCh0ID0+IHsKKworICAgIGNvbnN0IHN0cmVhbUFu
ZFJlYWRlciA9IGZhY3RvcnkoKTsKKyAgICBjb25zdCBzdHJlYW0gPSBzdHJlYW1BbmRSZWFkZXIu
c3RyZWFtOworICAgIGNvbnN0IHJlYWRlciA9IHN0cmVhbUFuZFJlYWRlci5yZWFkZXI7CisKKyAg
ICByZWFkZXIucmVhZCgpLnRoZW4oCisgICAgICB0LnVucmVhY2hlZF9mdW5jKCdmaXJzdCByZWFk
KCkgc2hvdWxkIG5vdCBmdWxmaWxsJyksCisgICAgICB0LnVucmVhY2hlZF9mdW5jKCdmaXJzdCBy
ZWFkKCkgc2hvdWxkIG5vdCByZWplY3QnKQorICAgICk7CisKKyAgICByZWFkZXIucmVhZCgpLnRo
ZW4oCisgICAgICB0LnVucmVhY2hlZF9mdW5jKCdzZWNvbmQgcmVhZCgpIHNob3VsZCBub3QgZnVs
ZmlsbCcpLAorICAgICAgdC51bnJlYWNoZWRfZnVuYygnc2Vjb25kIHJlYWQoKSBzaG91bGQgbm90
IHJlamVjdCcpCisgICAgKTsKKworICAgIHJlYWRlci5jbG9zZWQudGhlbigKKyAgICAgIHQudW5y
ZWFjaGVkX2Z1bmMoJ2Nsb3NlZCBzaG91bGQgbm90IGZ1bGZpbGwnKSwKKyAgICAgIHQudW5yZWFj
aGVkX2Z1bmMoJ2Nsb3NlZCBzaG91bGQgbm90IHJlamVjdCcpCisgICAgKTsKKworICAgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiByZWFkZXIucmVsZWFzZUxvY2soKSwgJ3Jl
bGVhc2VMb2NrIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOworCisgICAgYXNzZXJ0X3RydWUo
c3RyZWFtLmxvY2tlZCwgJ3RoZSBzdHJlYW0gc2hvdWxkIHN0aWxsIGJlIGxvY2tlZCcpOworCisg
ICAgcmV0dXJuIGRlbGF5KDUwMCk7CisKKyAgfSwgJ3JlbGVhc2luZyB0aGUgbG9jayB3aXRoIHBl
bmRpbmcgcmVhZCByZXF1ZXN0cyBzaG91bGQgdGhyb3cgYnV0IHRoZSByZWFkIHJlcXVlc3RzIHNo
b3VsZCBzdGF5IHBlbmRpbmcnKTsKKworICBwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgICBjb25z
dCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOworICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOwor
CisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBuZXcg
VHlwZUVycm9yKCksIHJlYWRlci5yZWFkKCkpLAorICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIG5l
dyBUeXBlRXJyb3IoKSwgcmVhZGVyLnJlYWQoKSkKKyAgICBdKTsKKworICB9LCAncmVsZWFzaW5n
IHRoZSBsb2NrIHNob3VsZCBjYXVzZSBmdXJ0aGVyIHJlYWQoKSBjYWxscyB0byByZWplY3Qgd2l0
aCBhIFR5cGVFcnJvcicpOworCisgIHByb21pc2VfdGVzdCh0ID0+IHsKKworICAgIGNvbnN0IHJl
YWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7CisKKyAgICBjb25zdCBjbG9zZWRCZWZvcmUgPSByZWFk
ZXIuY2xvc2VkOworICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOworICAgIGNvbnN0IGNsb3NlZEFm
dGVyID0gcmVhZGVyLmNsb3NlZDsKKworICAgIGFzc2VydF9lcXVhbHMoY2xvc2VkQmVmb3JlLCBj
bG9zZWRBZnRlciwgJ3RoZSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgbm90IGNoYW5nZSBpZGVudGl0
eScpOworCisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIGNs
b3NlZEJlZm9yZSk7CisKKyAgfSwgJ3JlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xv
c2VkIGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yJyk7CisKKyAgdGVzdCgoKSA9PiB7
CisKKyAgICBjb25zdCBzdHJlYW1BbmRSZWFkZXIgPSBmYWN0b3J5KCk7CisgICAgY29uc3Qgc3Ry
ZWFtID0gc3RyZWFtQW5kUmVhZGVyLnN0cmVhbTsKKyAgICBjb25zdCByZWFkZXIgPSBzdHJlYW1B
bmRSZWFkZXIucmVhZGVyOworCisgICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7CisgICAgYXNzZXJ0
X2ZhbHNlKHN0cmVhbS5sb2NrZWQsICdsb2NrZWQgZ2V0dGVyIHNob3VsZCByZXR1cm4gZmFsc2Un
KTsKKworICB9LCAncmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBsb2NrZWQgdG8gYmVj
b21lIGZhbHNlJyk7CisKKyAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHJlYWRl
ciA9IGZhY3RvcnkoKS5yZWFkZXI7CisgICAgcmVhZGVyLmNhbmNlbCgpOworCisgICAgcmV0dXJu
IHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIs
IHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpaW5nIGZyb20gdGhlIHJl
YWRlciBzaG91bGQgZ2l2ZSBhIGRvbmUgcmVzdWx0Jyk7CisgICAgfSk7CisKKyAgfSwgJ2NhbmNl
bGluZyB2aWEgdGhlIHJlYWRlciBzaG91bGQgY2F1c2UgdGhlIHJlYWRlciB0byBhY3QgY2xvc2Vk
Jyk7CisKKyAgcHJvbWlzZV90ZXN0KHQgPT4geworCisgICAgY29uc3Qgc3RyZWFtID0gZmFjdG9y
eSgpLnN0cmVhbTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3Io
KSwgc3RyZWFtLmNhbmNlbCgpKTsKKworICB9LCAnY2FuY2VsaW5nIHZpYSB0aGUgc3RyZWFtIHNo
b3VsZCBmYWlsJyk7Cit9OworCitzZWxmLnRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyID0gKGxhYmVs
LCBmYWN0b3J5KSA9PiB7CisgIHRlc3QoKCkgPT4ge30sICdSdW5uaW5nIHRlbXBsYXRlZFJTQ2xv
c2VkUmVhZGVyIHdpdGggJyArIGxhYmVsKTsKKworICBwcm9taXNlX3Rlc3QoKCkgPT4geworCisg
ICAgY29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKKworICAgIHJldHVybiByZWFkZXIu
cmVhZCgpLnRoZW4odiA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyh2LCB7IHZhbHVl
OiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCBjb3JyZWN0
bHknKTsKKyAgICB9KTsKKworICB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1
ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0nKTsKKworICBwcm9taXNlX3Rlc3QoKCkgPT4gewor
CisgICAgY29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKKworICAgIHJldHVybiBQcm9t
aXNlLmFsbChbCisgICAgICByZWFkZXIucmVhZCgpLnRoZW4odiA9PiB7CisgICAgICAgIGFzc2Vy
dF9vYmplY3RfZXF1YWxzKHYsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVh
ZCgpIHNob3VsZCBmdWxmaWxsIGNvcnJlY3RseScpOworICAgICAgfSksCisgICAgICByZWFkZXIu
cmVhZCgpLnRoZW4odiA9PiB7CisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHYsIHsgdmFs
dWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIGNvcnJl
Y3RseScpOworICAgICAgfSkKKyAgICBdKTsKKworICB9LCAncmVhZCgpIG11bHRpcGxlIHRpbWVz
IHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0nKTsK
KworICBwcm9taXNlX3Rlc3QoKCkgPT4geworCisgICAgY29uc3QgcmVhZGVyID0gZmFjdG9yeSgp
LnJlYWRlcjsKKworICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4oKCkgPT4gcmVhZGVyLnJl
YWQoKSkudGhlbih2ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHYsIHsgdmFsdWU6
IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIGNvcnJlY3Rs
eScpOworICAgIH0pOworCisgIH0sICdyZWFkKCkgc2hvdWxkIHdvcmsgd2hlbiB1c2VkIHdpdGhp
biBhbm90aGVyIHJlYWQoKSBmdWxmaWxsIGNhbGxiYWNrJyk7CisKKyAgcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKworICAgIGNvbnN0IHJlYWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7CisKKyAgICByZXR1
cm4gcmVhZGVyLmNsb3NlZC50aGVuKHYgPT4gYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdy
ZWFkZXIgY2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJykpOworCisgIH0sICdj
bG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsKKworICBwcm9taXNlX3Rlc3Qo
dCA9PiB7CisKKyAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOworCisgICAgY29u
c3QgY2xvc2VkQmVmb3JlID0gcmVhZGVyLmNsb3NlZDsKKyAgICByZWFkZXIucmVsZWFzZUxvY2so
KTsKKyAgICBjb25zdCBjbG9zZWRBZnRlciA9IHJlYWRlci5jbG9zZWQ7CisKKyAgICBhc3NlcnRf
bm90X2VxdWFscyhjbG9zZWRCZWZvcmUsIGNsb3NlZEFmdGVyLCAndGhlIGNsb3NlZCBwcm9taXNl
IHNob3VsZCBjaGFuZ2UgaWRlbnRpdHknKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisg
ICAgICBjbG9zZWRCZWZvcmUudGhlbih2ID0+IGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAn
cmVhZGVyLmNsb3NlZCBhY3F1aXJlZCBiZWZvcmUgcmVsZWFzZSBzaG91bGQgZnVsZmlsbCcpKSwK
KyAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIGNsb3NlZEFmdGVyKQor
ICAgIF0pOworCisgIH0sICdyZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0
byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eScpOworCisgIHByb21pc2VfdGVzdCgoKSA9PiB7
CisKKyAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOworICAgIGNvbnN0IGNhbmNl
bFByb21pc2UxID0gcmVhZGVyLmNhbmNlbCgpOworICAgIGNvbnN0IGNhbmNlbFByb21pc2UyID0g
cmVhZGVyLmNhbmNlbCgpOworICAgIGNvbnN0IGNsb3NlZFJlYWRlclByb21pc2UgPSByZWFkZXIu
Y2xvc2VkOworCisgICAgYXNzZXJ0X25vdF9lcXVhbHMoY2FuY2VsUHJvbWlzZTEsIGNhbmNlbFBy
b21pc2UyLCAnY2FuY2VsKCkgY2FsbHMgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcycp
OworICAgIGFzc2VydF9ub3RfZXF1YWxzKGNhbmNlbFByb21pc2UxLCBjbG9zZWRSZWFkZXJQcm9t
aXNlLCAnY2FuY2VsKCkgcHJvbWlzZSAxIHNob3VsZCBiZSBkaXN0aW5jdCBmcm9tIHJlYWRlci5j
bG9zZWQnKTsKKyAgICBhc3NlcnRfbm90X2VxdWFscyhjYW5jZWxQcm9taXNlMiwgY2xvc2VkUmVh
ZGVyUHJvbWlzZSwgJ2NhbmNlbCgpIHByb21pc2UgMiBzaG91bGQgYmUgZGlzdGluY3QgZnJvbSBy
ZWFkZXIuY2xvc2VkJyk7CisKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgY2FuY2Vs
UHJvbWlzZTEudGhlbih2ID0+IGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAnZmlyc3QgY2Fu
Y2VsKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKSksCisgICAgICBjYW5jZWxQcm9t
aXNlMi50aGVuKHYgPT4gYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdzZWNvbmQgY2FuY2Vs
KCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKSkKKyAgICBdKTsKKworICB9LCAnY2Fu
Y2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGlt
ZScpOworfTsKKworc2VsZi50ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIgPSAobGFiZWwsIGZhY3Rv
cnksIGVycm9yKSA9PiB7CisgIHRlc3QoKCkgPT4ge30sICdSdW5uaW5nIHRlbXBsYXRlZFJTRXJy
b3JlZFJlYWRlciB3aXRoICcgKyBsYWJlbCk7CisKKyAgcHJvbWlzZV90ZXN0KHQgPT4geworCisg
ICAgY29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKKyAgICByZXR1cm4gcHJvbWlzZV9y
ZWplY3RzKHQsIGVycm9yLCByZWFkZXIuY2xvc2VkKTsKKworICB9LCAnY2xvc2VkIHNob3VsZCBy
ZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKKworICBwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgICBj
b25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOworICAgIGNvbnN0IGNsb3NlZEJlZm9yZSA9
IHJlYWRlci5jbG9zZWQ7CisKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yLCBj
bG9zZWRCZWZvcmUpLnRoZW4oKCkgPT4geworICAgICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7CisK
KyAgICAgIGNvbnN0IGNsb3NlZEFmdGVyID0gcmVhZGVyLmNsb3NlZDsKKyAgICAgIGFzc2VydF9u
b3RfZXF1YWxzKGNsb3NlZEJlZm9yZSwgY2xvc2VkQWZ0ZXIsICd0aGUgY2xvc2VkIHByb21pc2Ug
c2hvdWxkIGNoYW5nZSBpZGVudGl0eScpOworCisgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3Rz
KHQsIG5ldyBUeXBlRXJyb3IoKSwgY2xvc2VkQWZ0ZXIpOworICAgIH0pOworCisgIH0sICdyZWxl
YXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBp
ZGVudGl0eScpOworCisgIHByb21pc2VfdGVzdCh0ID0+IHsKKworICAgIGNvbnN0IHJlYWRlciA9
IGZhY3RvcnkoKS5yZWFkZXI7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvciwg
cmVhZGVyLnJlYWQoKSk7CisKKyAgfSwgJ3JlYWQoKSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVy
cm9yJyk7Cit9OworCitzZWxmLnRlbXBsYXRlZFJTVHdvQ2h1bmtzT3BlblJlYWRlciA9IChsYWJl
bCwgZmFjdG9yeSwgY2h1bmtzKSA9PiB7CisgIHRlc3QoKCkgPT4ge30sICdSdW5uaW5nIHRlbXBs
YXRlZFJTVHdvQ2h1bmtzT3BlblJlYWRlciB3aXRoICcgKyBsYWJlbCk7CisKKyAgcHJvbWlzZV90
ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHJlYWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7CisKKyAg
ICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4gewor
ICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiBjaHVua3NbMF0sIGRvbmU6
IGZhbHNlIH0sICdmaXJzdCByZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKyAgICAgIH0pLAor
ICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4geworICAgICAgICBhc3NlcnRfb2JqZWN0X2Vx
dWFscyhyLCB7IHZhbHVlOiBjaHVua3NbMV0sIGRvbmU6IGZhbHNlIH0sICdzZWNvbmQgcmVzdWx0
IHNob3VsZCBiZSBjb3JyZWN0Jyk7CisgICAgICB9KQorICAgIF0pOworCisgIH0sICdjYWxsaW5n
IHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBj
aHVua3MgKHNlcXVlbnRpYWwpJyk7CisKKyAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICAgIGNv
bnN0IHJlYWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7CisKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQo
KS50aGVuKHIgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogY2h1
bmtzWzBdLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgcmVzdWx0IHNob3VsZCBiZSBjb3JyZWN0Jyk7
CisKKyAgICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4ocjIgPT4geworICAgICAgICBhc3Nl
cnRfb2JqZWN0X2VxdWFscyhyMiwgeyB2YWx1ZTogY2h1bmtzWzFdLCBkb25lOiBmYWxzZSB9LCAn
c2Vjb25kIHJlc3VsdCBzaG91bGQgYmUgY29ycmVjdCcpOworICAgICAgfSk7CisgICAgfSk7CisK
KyAgfSwgJ2NhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2FpdGluZyB3aWxsIGV2ZW50dWFs
bHkgZ2l2ZSBib3RoIGNodW5rcyAobmVzdGVkKScpOworCisgIHRlc3QoKCkgPT4geworCisgICAg
Y29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKKyAgICBhc3NlcnRfbm90X2VxdWFscyhy
ZWFkZXIucmVhZCgpLCByZWFkZXIucmVhZCgpLCAndGhlIHByb21pc2VzIHJldHVybmVkIHNob3Vs
ZCBiZSBkaXN0aW5jdCcpOworCisgIH0sICdyZWFkKCkgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBw
cm9taXNlcyBlYWNoIHRpbWUnKTsKKworICBwcm9taXNlX3Rlc3QoKCkgPT4geworCisgICAgY29u
c3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKKworICAgIGNvbnN0IHByb21pc2UxID0gcmVh
ZGVyLmNsb3NlZC50aGVuKHYgPT4geworICAgICAgYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQs
ICdyZWFkZXIgY2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7CisgICAgfSk7
CisKKyAgICBjb25zdCBwcm9taXNlMiA9IHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKKyAgICAg
IGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IGNodW5rc1swXSwgZG9uZTogZmFsc2Ug
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9taXNlIHJldHVybmVkIGJlZm9yZSBj
YW5jZWxsYXRpb24gc2hvdWxkIGZ1bGZpbGwgd2l0aCBhIGNodW5rJyk7CisgICAgfSk7CisKKyAg
ICByZWFkZXIuY2FuY2VsKCk7CisKKyAgICBjb25zdCBwcm9taXNlMyA9IHJlYWRlci5yZWFkKCku
dGhlbihyID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IHVuZGVm
aW5lZCwgZG9uZTogdHJ1ZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb21pc2Ug
cmV0dXJuZWQgYWZ0ZXIgY2FuY2VsbGF0aW9uIHNob3VsZCBmdWxmaWxsIHdpdGggYW4gZW5kLW9m
LXN0cmVhbSBzaWduYWwnKTsKKyAgICB9KTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbcHJv
bWlzZTEsIHByb21pc2UyLCBwcm9taXNlM10pOworCisgIH0sICdjYW5jZWwoKSBhZnRlciBhIHJl
YWQoKSBzaG91bGQgc3RpbGwgZ2l2ZSB0aGF0IHNpbmdsZSByZWFkIHJlc3VsdCcpOworfTsKKwor
c2VsZi50ZW1wbGF0ZWRSU1R3b0NodW5rc0Nsb3NlZFJlYWRlciA9IGZ1bmN0aW9uIChsYWJlbCwg
ZmFjdG9yeSwgY2h1bmtzKSB7CisgIHRlc3QoKCkgPT4ge30sICdSdW5uaW5nIHRlbXBsYXRlZFJT
VHdvQ2h1bmtzQ2xvc2VkUmVhZGVyIHdpdGggJyArIGxhYmVsKTsKKworICBwcm9taXNlX3Rlc3Qo
KCkgPT4geworCisgICAgY29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKKworICAgIHJl
dHVybiBQcm9taXNlLmFsbChbCisgICAgICByZWFkZXIucmVhZCgpLnRoZW4ociA9PiB7CisgICAg
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IGNodW5rc1swXSwgZG9uZTogZmFs
c2UgfSwgJ2ZpcnN0IHJlc3VsdCBzaG91bGQgYmUgY29ycmVjdCcpOworICAgICAgfSksCisgICAg
ICByZWFkZXIucmVhZCgpLnRoZW4ociA9PiB7CisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxz
KHIsIHsgdmFsdWU6IGNodW5rc1sxXSwgZG9uZTogZmFsc2UgfSwgJ3NlY29uZCByZXN1bHQgc2hv
dWxkIGJlIGNvcnJlY3QnKTsKKyAgICAgIH0pLAorICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKHIg
PT4geworICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiB1bmRlZmluZWQs
IGRvbmU6IHRydWUgfSwgJ3RoaXJkIHJlc3VsdCBzaG91bGQgYmUgY29ycmVjdCcpOworICAgICAg
fSkKKyAgICBdKTsKKworICB9LCAndGhpcmQgcmVhZCgpLCB3aXRob3V0IHdhaXRpbmcsIHNob3Vs
ZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IChzZXF1ZW50aWFsKScpOwor
CisgIHByb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCku
cmVhZGVyOworCisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKKyAgICAgIGFz
c2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IGNodW5rc1swXSwgZG9uZTogZmFsc2UgfSwg
J2ZpcnN0IHJlc3VsdCBzaG91bGQgYmUgY29ycmVjdCcpOworCisgICAgICByZXR1cm4gcmVhZGVy
LnJlYWQoKS50aGVuKHIyID0+IHsKKyAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocjIsIHsg
dmFsdWU6IGNodW5rc1sxXSwgZG9uZTogZmFsc2UgfSwgJ3NlY29uZCByZXN1bHQgc2hvdWxkIGJl
IGNvcnJlY3QnKTsKKworICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHIzID0+IHsK
KyAgICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyMywgeyB2YWx1ZTogdW5kZWZpbmVkLCBk
b25lOiB0cnVlIH0sICd0aGlyZCByZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKyAgICAgICAg
fSk7CisgICAgICB9KTsKKyAgICB9KTsKKworICB9LCAndGhpcmQgcmVhZCgpLCB3aXRob3V0IHdh
aXRpbmcsIHNob3VsZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IChuZXN0
ZWQpJyk7CisKKyAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHN0cmVhbUFuZFJl
YWRlciA9IGZhY3RvcnkoKTsKKyAgICBjb25zdCBzdHJlYW0gPSBzdHJlYW1BbmRSZWFkZXIuc3Ry
ZWFtOworICAgIGNvbnN0IHJlYWRlciA9IHN0cmVhbUFuZFJlYWRlci5yZWFkZXI7CisKKyAgICBh
c3NlcnRfdHJ1ZShzdHJlYW0ubG9ja2VkLCAnc3RyZWFtIHNob3VsZCBzdGFydCBsb2NrZWQnKTsK
KworICAgIGNvbnN0IHByb21pc2UgPSByZWFkZXIuY2xvc2VkLnRoZW4odiA9PiB7CisgICAgICBh
c3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ3JlYWRlciBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwg
d2l0aCB1bmRlZmluZWQnKTsKKyAgICAgIGFzc2VydF90cnVlKHN0cmVhbS5sb2NrZWQsICdzdHJl
YW0gc2hvdWxkIHJlbWFpbiBsb2NrZWQnKTsKKyAgICB9KTsKKworICAgIHJlYWRlci5yZWFkKCk7
CisgICAgcmVhZGVyLnJlYWQoKTsKKworICAgIHJldHVybiBwcm9taXNlOworCisgIH0sICdkcmFp
bmluZyB0aGUgc3RyZWFtIHZpYSByZWFkKCkgc2hvdWxkIGNhdXNlIHRoZSByZWFkZXIgY2xvc2Vk
IHByb21pc2UgdG8gZnVsZmlsbCwgYnV0IGxvY2tlZCBzdGF5cyB0cnVlJyk7CisKKyAgcHJvbWlz
ZV90ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHN0cmVhbUFuZFJlYWRlciA9IGZhY3RvcnkoKTsK
KyAgICBjb25zdCBzdHJlYW0gPSBzdHJlYW1BbmRSZWFkZXIuc3RyZWFtOworICAgIGNvbnN0IHJl
YWRlciA9IHN0cmVhbUFuZFJlYWRlci5yZWFkZXI7CisKKyAgICBjb25zdCBwcm9taXNlID0gcmVh
ZGVyLmNsb3NlZC50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF90cnVlKHN0cmVhbS5sb2NrZWQs
ICd0aGUgc3RyZWFtIHNob3VsZCBzdGFydCBsb2NrZWQnKTsKKyAgICAgIHJlYWRlci5yZWxlYXNl
TG9jaygpOyAvLyBSZWxlYXNpbmcgdGhlIGxvY2sgYWZ0ZXIgcmVhZGVyIGNsb3NlZCBzaG91bGQg
bm90IHRocm93LgorICAgICAgYXNzZXJ0X2ZhbHNlKHN0cmVhbS5sb2NrZWQsICd0aGUgc3RyZWFt
IHNob3VsZCBlbmQgdW5sb2NrZWQnKTsKKyAgICB9KTsKKworICAgIHJlYWRlci5yZWFkKCk7Cisg
ICAgcmVhZGVyLnJlYWQoKTsKKworICAgIHJldHVybiBwcm9taXNlOworCisgIH0sICdyZWxlYXNp
bmcgdGhlIGxvY2sgYWZ0ZXIgdGhlIHN0cmVhbSBpcyBjbG9zZWQgc2hvdWxkIGNhdXNlIGxvY2tl
ZCB0byBiZWNvbWUgZmFsc2UnKTsKKworICBwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgICBjb25z
dCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOworCisgICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7
CisKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIG5l
dyBUeXBlRXJyb3IoKSwgcmVhZGVyLnJlYWQoKSksCisgICAgICBwcm9taXNlX3JlamVjdHModCwg
bmV3IFR5cGVFcnJvcigpLCByZWFkZXIucmVhZCgpKSwKKyAgICAgIHByb21pc2VfcmVqZWN0cyh0
LCBuZXcgVHlwZUVycm9yKCksIHJlYWRlci5yZWFkKCkpCisgICAgXSk7CisKKyAgfSwgJ3JlbGVh
c2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgZnVydGhlciByZWFkKCkgY2FsbHMgdG8gcmVqZWN0
IHdpdGggYSBUeXBlRXJyb3InKTsKKworICBwcm9taXNlX3Rlc3QoKCkgPT4geworCisgICAgY29u
c3Qgc3RyZWFtQW5kUmVhZGVyID0gZmFjdG9yeSgpOworICAgIGNvbnN0IHN0cmVhbSA9IHN0cmVh
bUFuZFJlYWRlci5zdHJlYW07CisgICAgY29uc3QgcmVhZGVyID0gc3RyZWFtQW5kUmVhZGVyLnJl
YWRlcjsKKworICAgIGNvbnN0IHJlYWRlckNsb3NlZCA9IHJlYWRlci5jbG9zZWQ7CisKKyAgICBh
c3NlcnRfZXF1YWxzKHJlYWRlci5jbG9zZWQsIHJlYWRlckNsb3NlZCwgJ2FjY2Vzc2luZyByZWFk
ZXIuY2xvc2VkIHR3aWNlIGluIHN1Y2Nlc3Npb24gZ2l2ZXMgdGhlIHNhbWUgdmFsdWUnKTsKKwor
ICAgIGNvbnN0IHByb21pc2UgPSByZWFkZXIucmVhZCgpLnRoZW4oKCkgPT4geworICAgICAgYXNz
ZXJ0X2VxdWFscyhyZWFkZXIuY2xvc2VkLCByZWFkZXJDbG9zZWQsICdyZWFkZXIuY2xvc2VkIGlz
IHRoZSBzYW1lIGFmdGVyIHJlYWQoKSBmdWxmaWxscycpOworCisgICAgICByZWFkZXIucmVsZWFz
ZUxvY2soKTsKKworICAgICAgYXNzZXJ0X2VxdWFscyhyZWFkZXIuY2xvc2VkLCByZWFkZXJDbG9z
ZWQsICdyZWFkZXIuY2xvc2VkIGlzIHRoZSBzYW1lIGFmdGVyIHJlbGVhc2luZyB0aGUgbG9jaycp
OworCisgICAgICBjb25zdCBuZXdSZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7CisgICAgICBy
ZXR1cm4gbmV3UmVhZGVyLnJlYWQoKTsKKyAgICB9KTsKKworICAgIGFzc2VydF9lcXVhbHMocmVh
ZGVyLmNsb3NlZCwgcmVhZGVyQ2xvc2VkLCAncmVhZGVyLmNsb3NlZCBpcyB0aGUgc2FtZSBhZnRl
ciBjYWxsaW5nIHJlYWQoKScpOworCisgICAgcmV0dXJuIHByb21pc2U7CisKKyAgfSwgJ3JlYWRl
clwncyBjbG9zZWQgcHJvcGVydHkgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUgcHJvbWlzZScpOwor
fTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZXNvdXJjZXMvcnMtdXRpbHMuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVzb3VyY2VzL3JzLXV0aWxzLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBmMzIyMmUyM2NhYjdhMGE2ZDYxNzcxMTZjOTllZDkwZGY5NTc5NzcKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVzb3VyY2VzL3JzLXV0aWxzLmpzCkBAIC0wLDAgKzEsMTg1IEBACisndXNlIHN0cmlj
dCc7CisoZnVuY3Rpb24gKCkgeworCisgIGNsYXNzIFJhbmRvbVB1c2hTb3VyY2UgeworICAgIGNv
bnN0cnVjdG9yKHRvUHVzaCkgeworICAgICAgdGhpcy5wdXNoZWQgPSAwOworICAgICAgdGhpcy50
b1B1c2ggPSB0b1B1c2g7CisgICAgICB0aGlzLnN0YXJ0ZWQgPSBmYWxzZTsKKyAgICAgIHRoaXMu
cGF1c2VkID0gZmFsc2U7CisgICAgICB0aGlzLmNsb3NlZCA9IGZhbHNlOworCisgICAgICB0aGlz
Ll9pbnRlcnZhbEhhbmRsZSA9IG51bGw7CisgICAgfQorCisgICAgcmVhZFN0YXJ0KCkgeworICAg
ICAgaWYgKHRoaXMuY2xvc2VkKSB7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKworICAgICAg
aWYgKCF0aGlzLnN0YXJ0ZWQpIHsKKyAgICAgICAgdGhpcy5faW50ZXJ2YWxIYW5kbGUgPSBzZXRJ
bnRlcnZhbCh3cml0ZUNodW5rLCAyKTsKKyAgICAgICAgdGhpcy5zdGFydGVkID0gdHJ1ZTsKKyAg
ICAgIH0KKworICAgICAgaWYgKHRoaXMucGF1c2VkKSB7CisgICAgICAgIHRoaXMuX2ludGVydmFs
SGFuZGxlID0gc2V0SW50ZXJ2YWwod3JpdGVDaHVuaywgMik7CisgICAgICAgIHRoaXMucGF1c2Vk
ID0gZmFsc2U7CisgICAgICB9CisKKyAgICAgIGNvbnN0IHNvdXJjZSA9IHRoaXM7CisgICAgICBm
dW5jdGlvbiB3cml0ZUNodW5rKCkgeworICAgICAgICBpZiAoc291cmNlLnBhdXNlZCkgeworICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHNvdXJjZS5wdXNoZWQrKzsKKwor
ICAgICAgICBpZiAoc291cmNlLnRvUHVzaCA+IDAgJiYgc291cmNlLnB1c2hlZCA+IHNvdXJjZS50
b1B1c2gpIHsKKyAgICAgICAgICBpZiAoc291cmNlLl9pbnRlcnZhbEhhbmRsZSkgeworICAgICAg
ICAgICAgY2xlYXJJbnRlcnZhbChzb3VyY2UuX2ludGVydmFsSGFuZGxlKTsKKyAgICAgICAgICAg
IHNvdXJjZS5faW50ZXJ2YWxIYW5kbGUgPSB1bmRlZmluZWQ7CisgICAgICAgICAgfQorICAgICAg
ICAgIHNvdXJjZS5jbG9zZWQgPSB0cnVlOworICAgICAgICAgIHNvdXJjZS5vbmVuZCgpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgIHNvdXJjZS5vbmRhdGEocmFuZG9tQ2h1bmsoMTI4KSk7
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgICByZWFkU3RvcCgpIHsKKyAgICAgIGlm
ICh0aGlzLnBhdXNlZCkgeworICAgICAgICByZXR1cm47CisgICAgICB9CisKKyAgICAgIGlmICh0
aGlzLnN0YXJ0ZWQpIHsKKyAgICAgICAgdGhpcy5wYXVzZWQgPSB0cnVlOworICAgICAgICBjbGVh
ckludGVydmFsKHRoaXMuX2ludGVydmFsSGFuZGxlKTsKKyAgICAgICAgdGhpcy5faW50ZXJ2YWxI
YW5kbGUgPSB1bmRlZmluZWQ7CisgICAgICB9IGVsc2UgeworICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ0NhblwndCBwYXVzZSByZWFkaW5nIGFuIHVuc3RhcnRlZCBzb3VyY2UuJyk7CisgICAgICB9
CisgICAgfQorICB9CisKKyAgZnVuY3Rpb24gcmFuZG9tQ2h1bmsoc2l6ZSkgeworICAgIGxldCBj
aHVuayA9ICcnOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAg
IC8vIEFkZCBhIHJhbmRvbSBjaGFyYWN0ZXIgZnJvbSB0aGUgYmFzaWMgcHJpbnRhYmxlIEFTQ0lJ
IHNldC4KKyAgICAgIGNodW5rICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoTWF0aC5yb3VuZChNYXRo
LnJhbmRvbSgpICogODQpICsgMzIpOworICAgIH0KKworICAgIHJldHVybiBjaHVuazsKKyAgfQor
CisgIGZ1bmN0aW9uIHJlYWRhYmxlU3RyZWFtVG9BcnJheShyZWFkYWJsZSwgcmVhZGVyKSB7Cisg
ICAgaWYgKHJlYWRlciA9PT0gdW5kZWZpbmVkKSB7CisgICAgICByZWFkZXIgPSByZWFkYWJsZS5n
ZXRSZWFkZXIoKTsKKyAgICB9CisKKyAgICBjb25zdCBjaHVua3MgPSBbXTsKKworICAgIHJldHVy
biBwdW1wKCk7CisKKyAgICBmdW5jdGlvbiBwdW1wKCkgeworICAgICAgcmV0dXJuIHJlYWRlci5y
ZWFkKCkudGhlbihyZXN1bHQgPT4geworICAgICAgICBpZiAocmVzdWx0LmRvbmUpIHsKKyAgICAg
ICAgICByZXR1cm4gY2h1bmtzOworICAgICAgICB9CisKKyAgICAgICAgY2h1bmtzLnB1c2gocmVz
dWx0LnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHB1bXAoKTsKKyAgICAgIH0pOworICAgIH0KKyAg
fQorCisgIGNsYXNzIFNlcXVlbnRpYWxQdWxsU291cmNlIHsKKyAgICBjb25zdHJ1Y3RvcihsaW1p
dCwgb3B0aW9ucykgeworICAgICAgY29uc3QgYXN5bmMgPSBvcHRpb25zICYmIG9wdGlvbnMuYXN5
bmM7CisKKyAgICAgIHRoaXMuY3VycmVudCA9IDA7CisgICAgICB0aGlzLmxpbWl0ID0gbGltaXQ7
CisgICAgICB0aGlzLm9wZW5lZCA9IGZhbHNlOworICAgICAgdGhpcy5jbG9zZWQgPSBmYWxzZTsK
KworICAgICAgdGhpcy5fZXhlYyA9IGYgPT4gZigpOworICAgICAgaWYgKGFzeW5jKSB7CisgICAg
ICAgIHRoaXMuX2V4ZWMgPSBmID0+IHNldFRpbWVvdXQoZiwgMCk7CisgICAgICB9CisgICAgfQor
CisgICAgb3BlbihjYikgeworICAgICAgdGhpcy5fZXhlYygoKSA9PiB7CisgICAgICAgIHRoaXMu
b3BlbmVkID0gdHJ1ZTsKKyAgICAgICAgY2IoKTsKKyAgICAgIH0pOworICAgIH0KKworICAgIHJl
YWQoY2IpIHsKKyAgICAgIHRoaXMuX2V4ZWMoKCkgPT4geworICAgICAgICBpZiAoKyt0aGlzLmN1
cnJlbnQgPD0gdGhpcy5saW1pdCkgeworICAgICAgICAgIGNiKG51bGwsIGZhbHNlLCB0aGlzLmN1
cnJlbnQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGNiKG51bGwsIHRydWUsIG51bGwp
OworICAgICAgICB9CisgICAgICB9KTsKKyAgICB9CisKKyAgICBjbG9zZShjYikgeworICAgICAg
dGhpcy5fZXhlYygoKSA9PiB7CisgICAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTsKKyAgICAgICAg
Y2IoKTsKKyAgICAgIH0pOworICAgIH0KKyAgfQorCisgIGZ1bmN0aW9uIHNlcXVlbnRpYWxSZWFk
YWJsZVN0cmVhbShsaW1pdCwgb3B0aW9ucykgeworICAgIGNvbnN0IHNlcXVlbnRpYWxTb3VyY2Ug
PSBuZXcgU2VxdWVudGlhbFB1bGxTb3VyY2UobGltaXQsIG9wdGlvbnMpOworCisgICAgY29uc3Qg
c3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgIHN0YXJ0KCkgeworICAgICAgICBy
ZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgIHNlcXVl
bnRpYWxTb3VyY2Uub3BlbihlcnIgPT4geworICAgICAgICAgICAgaWYgKGVycikgeworICAgICAg
ICAgICAgICByZWplY3QoZXJyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlc29sdmUo
KTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICB9LAorCisgICAgICBwdWxsKGMp
IHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAg
ICAgICAgICBzZXF1ZW50aWFsU291cmNlLnJlYWQoKGVyciwgZG9uZSwgY2h1bmspID0+IHsKKyAg
ICAgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgICAgcmVqZWN0KGVycik7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKGRvbmUpIHsKKyAgICAgICAgICAgICAgc2VxdWVudGlhbFNvdXJjZS5j
bG9zZShlcnIyID0+IHsKKyAgICAgICAgICAgICAgICBpZiAoZXJyMikgeworICAgICAgICAgICAg
ICAgICAgcmVqZWN0KGVycjIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBj
LmNsb3NlKCk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIGMuZW5xdWV1ZShjaHVuayk7Cisg
ICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9KTsKKyAg
ICAgICAgfSk7CisgICAgICB9CisgICAgfSk7CisKKyAgICBzdHJlYW0uc291cmNlID0gc2VxdWVu
dGlhbFNvdXJjZTsKKworICAgIHJldHVybiBzdHJlYW07CisgIH0KKworCisgIHNlbGYuUmFuZG9t
UHVzaFNvdXJjZSA9IFJhbmRvbVB1c2hTb3VyY2U7CisgIHNlbGYucmVhZGFibGVTdHJlYW1Ub0Fy
cmF5ID0gcmVhZGFibGVTdHJlYW1Ub0FycmF5OworICBzZWxmLnNlcXVlbnRpYWxSZWFkYWJsZVN0
cmVhbSA9IHNlcXVlbnRpYWxSZWFkYWJsZVN0cmVhbTsKKworfSgpKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZXNvdXJj
ZXMvdGVzdC1pbml0aWFsaXplci5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kNmVkNGE3YWFiNTQxZThlNWNmZWVjNDA0MjAzMjg5MjQzMDE0N2IxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzCkBAIC0wLDAgKzEsMTQgQEAKKyd1c2Ug
c3RyaWN0JzsKKworZnVuY3Rpb24gd29ya2VyX3Rlc3QoZmlsZSkgeworICBmZXRjaF90ZXN0c19m
cm9tX3dvcmtlcihuZXcgV29ya2VyKGZpbGUpKTsKKyAgaWYgKHR5cGVvZiBTaGFyZWRXb3JrZXIg
PT09ICdmdW5jdGlvbicpIHsKKyAgICBmZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgU2hhcmVk
V29ya2VyKGZpbGUpKTsKKyAgfSBlbHNlIHsKKyAgICB0ZXN0KCgpID0+IHsKKyAgICAgIGFzc2Vy
dF91bnJlYWNoZWQoJ1NoYXJlZFdvcmtlciBpcyB1bmF2YWlsYWJsZScpOworICAgIH0sICdMb2Fk
ICcgKyBmaWxlICsgJyB3aXRoIFNoYXJlZFdvcmtlcicpOworICB9CisgIHNlcnZpY2Vfd29ya2Vy
X3Rlc3QoZmlsZSk7Cit9CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZXNvdXJjZXMvdGVzdC11dGlscy5qcyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZXNvdXJjZXMv
dGVzdC11dGlscy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYzQ3ODk4YTYwOGU5M2Q1ZTU2NjRkMDE3NjA3YjRm
NDcwOWY1MzcwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzCkBAIC0wLDAg
KzEsNDMgQEAKKyd1c2Ugc3RyaWN0JzsKKworc2VsZi5nZXR0ZXJSZWplY3RzID0gKHQsIG9iaiwg
Z2V0dGVyTmFtZSwgdGFyZ2V0KSA9PiB7CisgIGNvbnN0IGdldHRlciA9IE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBnZXR0ZXJOYW1lKS5nZXQ7CisKKyAgcmV0dXJuIHByb21p
c2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIGdldHRlci5jYWxsKHRhcmdldCkpOworfTsK
Kworc2VsZi5tZXRob2RSZWplY3RzID0gKHQsIG9iaiwgbWV0aG9kTmFtZSwgdGFyZ2V0KSA9PiB7
CisgIGNvbnN0IG1ldGhvZCA9IG9ialttZXRob2ROYW1lXTsKKworICByZXR1cm4gcHJvbWlzZV9y
ZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgbWV0aG9kLmNhbGwodGFyZ2V0KSk7Cit9OworCitz
ZWxmLmdldHRlclRocm93cyA9IChvYmosIGdldHRlck5hbWUsIHRhcmdldCkgPT4geworICBjb25z
dCBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwgZ2V0dGVyTmFt
ZSkuZ2V0OworCisgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBnZXR0ZXIu
Y2FsbCh0YXJnZXQpLCBnZXR0ZXJOYW1lICsgJyBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsK
K307CisKK3NlbGYubWV0aG9kVGhyb3dzID0gKG9iaiwgbWV0aG9kTmFtZSwgdGFyZ2V0LCBhcmdz
KSA9PiB7CisgIGNvbnN0IG1ldGhvZCA9IG9ialttZXRob2ROYW1lXTsKKworICBhc3NlcnRfdGhy
b3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbWV0aG9kLmFwcGx5KHRhcmdldCwgYXJncyksIG1l
dGhvZE5hbWUgKyAnIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOworfTsKKworc2VsZi5nYXJi
YWdlQ29sbGVjdCA9ICgpID0+IHsKKyAgaWYgKHNlbGYuZ2MpIHsKKyAgICAvLyBVc2UgLS1leHBv
c2VfZ2MgZm9yIFY4IChhbmQgTm9kZS5qcykKKyAgICAvLyBFeHBvc2VkIGluIFNwaWRlck1vbmtl
eSBzaGVsbCBhcyB3ZWxsCisgICAgc2VsZi5nYygpOworICB9IGVsc2UgaWYgKHNlbGYuR0NDb250
cm9sbGVyKSB7CisgICAgLy8gUHJlc2VudCBpbiBzb21lIFdlYktpdCBkZXZlbG9wbWVudCBlbnZp
cm9ubWVudHMKKyAgICBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOworICB9IGVsc2UgeworICAgIC8q
IGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi8KKyAgICBjb25zb2xlLndhcm4oJ1Rlc3RzIGFy
ZSBydW5uaW5nIHdpdGhvdXQgdGhlIGFiaWxpdHkgdG8gZG8gbWFudWFsIGdhcmJhZ2UgY29sbGVj
dGlvbi4gVGhleSB3aWxsIHN0aWxsIHdvcmssIGJ1dCAnICsKKyAgICAgICdjb3ZlcmFnZSB3aWxs
IGJlIHN1Ym9wdGltYWwuJyk7CisgICAgLyogZXNsaW50LWVuYWJsZSBuby1jb25zb2xlICovCisg
IH0KK307CisKK3NlbGYuZGVsYXkgPSBtcyA9PiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHN0ZXBf
dGltZW91dChyZXNvbHZlLCBtcykpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272182</attachid>
            <date>2016-02-25 01:33:10 -0800</date>
            <delta_ts>2016-02-25 02:35:46 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-154671-20160225103251.patch</filename>
            <type>text/plain</type>
            <size>398909</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3MDYyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpp
bmRleCA2NjE5OThjZmUwMjgyMGMwNzBjM2JlZDY5NGRmODExYjliNDAwOWRkLi4zZjk5MTg5Yzhj
OWUyNzQyYmY2MDRiMGYyZWI0OWY2ZGJkZjYzMWU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAxNi0wMi0yNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIE1vdmUgc3RyZWFtcyB0ZXN0cyBmcm9t
IHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaSB0byB3ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0
NjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWGFiaWVyIFJvZHJpZ3Vlei1DYWx2YXIuCisKKyAg
ICAgICAgVGhpcyB3aWxsIGFsbG93IHByZXBhcmluZyByZXN5bmNpbmcgd2ViLXBsYXRmb3JtLXRl
c3RzLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvUkVBRE1FLnR4dDog
UmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy1hcGkvUkVBRE1FLnR4dC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dDogUmVuYW1lZCBm
cm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1h
cGkvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQuCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5o
dG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zLWFwaS9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWwuCisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJh
dGVneS5qczogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy1hcGkvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5qcy4KKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5
LWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvY291bnQtcXVldWluZy1zdHJhdGVneS1leHBlY3Rl
ZC50eHQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvY291bnQtcXVldWlu
Zy1zdHJhdGVneS5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWwu
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvY291bnQtcXVldWluZy1zdHJh
dGVneS5qczogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy1hcGkvY291bnQtcXVldWluZy1zdHJhdGVneS5qcy4KKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVn
aWVzLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRl
Z2llcy1leHBlY3RlZC50eHQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJs
ZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmh0bWwuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5qczogUmVuYW1lZCBm
cm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1h
cGkvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5qcy4KKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJj
ZXMtZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5
aW5nLXNvdXJjZXMtZXhwZWN0ZWQudHh0LgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5odG1sOiBSZW5h
bWVkIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuaHRtbC4KKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11
bmRlcmx5aW5nLXNvdXJjZXMuanM6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVu
ZGVybHlpbmctc291cmNlcy5qcy4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJv
bSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBp
L3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiB3
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5o
dG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5odG1sLgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQt
Y2hlY2tzLmpzOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5qcy4K
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Nh
bmNlbC1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLWV4
cGVjdGVkLnR4dC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL2NhbmNlbC5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2NhbmNl
bC5odG1sLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvY2FuY2VsLmpzOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC5qcy4K
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Nv
dW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24tZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZy
b20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFw
aS9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24tZXhw
ZWN0ZWQudHh0LgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5odG1sOiBSZW5hbWVk
IGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
LWFwaS9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24u
aHRtbC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uanM6IFJlbmFtZWQgZnJvbSBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3Jl
YWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5qcy4KKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJh
Z2UtY29sbGVjdGlvbi0xLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFt
cy9nYXJiYWdlLWNvbGxlY3Rpb24tMS1leHBlY3RlZC50eHQuCisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24tMS5o
dG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi0xLmh0
bWwuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9nYXJiYWdlLWNvbGxlY3Rpb24tMi1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxl
LXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLTItZXhwZWN0ZWQudHh0LgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0
aW9uLTIuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rp
b24tMi5odG1sLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVh
ZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24tZXhwZWN0ZWQudHh0LgorICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xs
ZWN0aW9uLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0
aW9uLmh0bWwuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uanM6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVh
bXMvZ2FyYmFnZS1jb2xsZWN0aW9uLmpzLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJv
bSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBp
L3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC1leHBlY3RlZC50eHQuCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLmh0bWw6IFJlbmFt
ZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5odG1sLgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5qczogUmVuYW1lZCBm
cm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1h
cGkvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLmpzLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcGlwZS10aHJvdWdoLWV4cGVjdGVkLnR4dDog
UmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9waXBlLXRocm91Z2gtZXhwZWN0ZWQudHh0Lgor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcGlw
ZS10aHJvdWdoLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcGlwZS10aHJvdWdo
Lmh0bWwuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtcy9waXBlLXRocm91Z2guanM6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcGlwZS10
aHJvdWdoLmpzLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJv
bSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBp
L3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQuCisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW0tcmVhZGVyLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtLXJlYWRlci5odG1sLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5qczogUmVuYW1l
ZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy1hcGkvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmpzLgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVlLWV4cGVj
dGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy90ZWUtZXhwZWN0ZWQudHh0Lgor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVl
Lmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmh0bWwuCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuanM6IFJlbmFt
ZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmpzLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLWV4cGVjdGVkLnR4dDogUmVu
YW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0LgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVk
Lmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmh0bWwuCisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0
ZWQuanM6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmpzLgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jlc291cmNlcy9ycy10ZXN0LXRlbXBsYXRl
cy5qczogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy1hcGkvcmVzb3VyY2VzL3JzLXRlc3QtdGVtcGxhdGVzLmpzLgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jlc291cmNlcy9ycy11dGlscy5qczogUmVu
YW1lZCBmcm9tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy1hcGkvcmVzb3VyY2VzL3JzLXV0aWxzLmpzLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzOiBSZW5hbWVkIGZyb20g
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9y
ZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcy4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZXNvdXJjZXMvdGVzdC11dGlscy5qczogUmVuYW1lZCBmcm9tIExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVzb3VyY2Vz
L3Rlc3QtdXRpbHMuanMuCisKIDIwMTYtMDItMjQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFi
bGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBbRmV0Y2ggQVBJXSBJbXBsZW1lbnQgRmV0Y2gg
QVBJIFJlc3BvbnNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL1JFQURNRS50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL1JFQURNRS50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmYzkxZjU5NDZhMzhkMTQyYjA1MWM4MTFkNjE1ODlmNmUw
MGU2ZWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9SRUFE
TUUudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1UaGlzIGRpcmVjdG9yeSBpcyBp
bXBvcnRlZCBmcm9tIHRoZSB0aGUgU3RyZWFtcyBBUEkgcmVwb3NpdG9yeS4KLQotVGhlcmUgaXMg
YSBwbGFuIHRvIG1vdmUgdGhlc2UgdGVzdHMgdG8gd2ViLXBsYXRmb3JtLXRlc3RzIHJlcG9zaXRv
cnkgc28gZnJvbSB0aGF0IG1vbWVudCBvbiB0aGlzIGltcG9ydGF0aW9uIHdpbGwgYmUKLWF1dG9t
YXRpYy4KLQotQ3VycmVudCB2ZXJzaW9uOiBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL3N0cmVh
bXMvdHJlZS83ZjE5MTc1NDE1ZDliNTdhZjA0Y2I4YzJjZDM1NWNhMzgxMDFmMGFhL3JlZmVyZW5j
ZS1pbXBsZW1lbnRhdGlvbi93ZWItcGxhdGZvcm0tdGVzdHMuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL2J5dGUtbGVu
Z3RoLXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0
cmF0ZWd5LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTJkOTY0
MTUwMjk5NGUzMmQ0MmViYzliZTJkN2IzNGYxNDVmNWNiNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3ktZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotCi1QQVNTIENhbiBjb25z
dHJ1Y3QgYSBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IHdpdGggYSB2YWxpZCBoaWdoIHdhdGVy
IG1hcmsgCi1QQVNTIENhbiBjb25zdHJ1Y3QgYSBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IHdp
dGggYW55IHZhbHVlIGFzIGl0cyBoaWdoIHdhdGVyIG1hcmsgCi1QQVNTIEJ5dGVMZW5ndGhRdWV1
aW5nU3RyYXRlZ3kgY29uc3RydWN0b3IgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0cmFuZ2Ug
YXJndW1lbnRzIAotUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IHNpemUgYmVoYXZlcyBh
cyBleHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRzIAotUEFTUyBCeXRlTGVuZ3RoUXVldWlu
Z1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplIHNob3VsZCB3b3JrIGdlbmVyaWNhbGx5IG9uIGl0cyB0
aGlzIGFuZCBpdHMgYXJndW1lbnRzIAotUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IGlu
c3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IHByb3BlcnRpZXMgCi1QQVNTIEJ5dGVMZW5ndGhRdWV1
aW5nU3RyYXRlZ3kncyBoaWdoV2F0ZXJNYXJrIHByb3BlcnR5IGNhbiBiZSBzZXQgdG8gYW55dGhp
bmcgCi1GQUlMIExvYWQgYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5qcyB3aXRoIFNoYXJl
ZFdvcmtlciBhc3NlcnRfdW5yZWFjaGVkOiBTaGFyZWRXb3JrZXIgaXMgdW5hdmFpbGFibGUgUmVh
Y2hlZCB1bnJlYWNoYWJsZSBjb2RlCi1GQUlMIFVudGl0bGVkIHVuZGVmaW5lZCBpcyBub3QgYW4g
b2JqZWN0IChldmFsdWF0aW5nICduYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdpc3RyYXRp
b24nKQotUEFTUyBDYW4gY29uc3RydWN0IGEgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSB3aXRo
IGEgdmFsaWQgaGlnaCB3YXRlciBtYXJrIAotUEFTUyBDYW4gY29uc3RydWN0IGEgQnl0ZUxlbmd0
aFF1ZXVpbmdTdHJhdGVneSB3aXRoIGFueSB2YWx1ZSBhcyBpdHMgaGlnaCB3YXRlciBtYXJrIAot
UEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IGNvbnN0cnVjdG9yIGJlaGF2ZXMgYXMgZXhw
ZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cyAKLVBBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJh
dGVneSBzaXplIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cyAKLVBB
U1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSBzaG91bGQgd29yayBn
ZW5lcmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cyAKLVBBU1MgQnl0ZUxlbmd0
aFF1ZXVpbmdTdHJhdGVneSBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBwcm9wZXJ0aWVzIAot
UEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5J3MgaGlnaFdhdGVyTWFyayBwcm9wZXJ0eSBj
YW4gYmUgc2V0IHRvIGFueXRoaW5nIAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL2J5dGUtbGVuZ3RoLXF1ZXVpbmct
c3RyYXRlZ3kuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy1hcGkvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxM2YxNWFjYjlmZmFiNjhhZTI4NWY1NzgyNjcxNzdiZmI3
ZTVkYjIxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvYnl0
ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Nl
cnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwv
c2NyaXB0PgotCi08c2NyaXB0IHNyYz0iYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotd29ya2VyX3Rlc3QoJ2J5dGUtbGVu
Z3RoLXF1ZXVpbmctc3RyYXRlZ3kuanMnKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9ieXRlLWxl
bmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5Lmpz
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDQwN2FmOTkxMzg4OTNiOGI1MjkyYWEy
NDgxMDA0MTYyZTcyZTVhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFt
cy1hcGkvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5qcworKysgL2Rldi9udWxsCkBAIC0x
LDEwNyArMCwwIEBACi0ndXNlIHN0cmljdCc7Ci0KLWlmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsK
LSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0K
LXRlc3QoKCkgPT4gewotCi0gIG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdh
dGVyTWFyazogNCB9KTsKLQotfSwgJ0NhbiBjb25zdHJ1Y3QgYSBCeXRlTGVuZ3RoUXVldWluZ1N0
cmF0ZWd5IHdpdGggYSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsnKTsKLQotdGVzdCgoKSA9PiB7Ci0K
LSAgZm9yIChjb25zdCBoaWdoV2F0ZXJNYXJrIG9mIFstSW5maW5pdHksIE5hTiwgJ2ZvbycsIHt9
LCAoKSA9PiB7fV0pIHsKLSAgICBjb25zdCBzdHJhdGVneSA9IG5ldyBCeXRlTGVuZ3RoUXVldWlu
Z1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyayB9KTsKLSAgICBhc3NlcnRfZXF1YWxzKHN0cmF0ZWd5
LmhpZ2hXYXRlck1hcmssIGhpZ2hXYXRlck1hcmssIGAke2hpZ2hXYXRlck1hcmt9IGdldHMgc2V0
IGNvcnJlY3RseWApOwotICB9Ci0KLX0sICdDYW4gY29uc3RydWN0IGEgQnl0ZUxlbmd0aFF1ZXVp
bmdTdHJhdGVneSB3aXRoIGFueSB2YWx1ZSBhcyBpdHMgaGlnaCB3YXRlciBtYXJrJyk7Ci0KLXRl
c3QoKCkgPT4gewotCi0gIGNvbnN0IGhpZ2hXYXRlck1hcmsgPSAxOwotICBjb25zdCBoaWdoV2F0
ZXJNYXJrT2JqZWN0R2V0dGVyID0gewotICAgIGdldCBoaWdoV2F0ZXJNYXJrKCkgeyByZXR1cm4g
aGlnaFdhdGVyTWFyazsgfQotICB9OwotICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignd293IScp
OwotICBjb25zdCBoaWdoV2F0ZXJNYXJrT2JqZWN0R2V0dGVyVGhyb3dpbmcgPSB7Ci0gICAgZ2V0
IGhpZ2hXYXRlck1hcmsoKSB7IHRocm93IGVycm9yOyB9Ci0gIH07Ci0KLSAgYXNzZXJ0X3Rocm93
cyh7IG5hbWU6ICdUeXBlRXJyb3InIH0sICgpID0+IG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0
ZWd5KCksICdjb25zdHJ1Y3Rpb24gZmFpbHMgd2l0aCB1bmRlZmluZWQnKTsKLSAgYXNzZXJ0X3Ro
cm93cyh7IG5hbWU6ICdUeXBlRXJyb3InIH0sICgpID0+IG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0
cmF0ZWd5KG51bGwpLCAnY29uc3RydWN0aW9uIGZhaWxzIHdpdGggbnVsbCcpOwotICBhc3NlcnRf
dGhyb3dzKHsgbmFtZTogJ0Vycm9yJyB9LCAoKSA9PiBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJh
dGVneShoaWdoV2F0ZXJNYXJrT2JqZWN0R2V0dGVyVGhyb3dpbmcpLAotICAgICdjb25zdHJ1Y3Rp
b24gZmFpbHMgd2l0aCBhbiBvYmplY3Qgd2l0aCBhIHRocm93aW5nIGhpZ2hXYXRlck1hcmsgZ2V0
dGVyJyk7Ci0KLSAgLy8gU2hvdWxkIG5vdCBmYWlsOgotICBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdT
dHJhdGVneSgncG90YXRvJyk7Ci0gIG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5KHt9KTsK
LSAgbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koaGlnaFdhdGVyTWFya09iamVjdEdldHRl
cik7Ci0KLX0sICdCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IGNvbnN0cnVjdG9yIGJlaGF2ZXMg
YXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cycpOwotCi10ZXN0KCgpID0+IHsKLQot
ICBjb25zdCBzaXplID0gMTAyNDsKLSAgY29uc3QgY2h1bmsgPSB7IGJ5dGVMZW5ndGg6IHNpemUg
fTsKLSAgY29uc3QgY2h1bmtHZXR0ZXIgPSB7Ci0gICAgZ2V0IGJ5dGVMZW5ndGgoKSB7IHJldHVy
biBzaXplOyB9Ci0gIH07Ci0gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCd3b3chJyk7Ci0gIGNv
bnN0IGNodW5rR2V0dGVyVGhyb3dpbmcgPSB7Ci0gICAgZ2V0IGJ5dGVMZW5ndGgoKSB7IHRocm93
IGVycm9yOyB9Ci0gIH07Ci0gIGFzc2VydF90aHJvd3MoeyBuYW1lOiAnVHlwZUVycm9yJyB9LCAo
KSA9PiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKCksICdzaXplIGZh
aWxzIHdpdGggdW5kZWZpbmVkJyk7Ci0gIGFzc2VydF90aHJvd3MoeyBuYW1lOiAnVHlwZUVycm9y
JyB9LCAoKSA9PiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKG51bGwp
LCAnc2l6ZSBmYWlscyB3aXRoIG51bGwnKTsKLSAgYXNzZXJ0X2VxdWFscyhCeXRlTGVuZ3RoUXVl
dWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKCdwb3RhdG8nKSwgdW5kZWZpbmVkLAotICAgICdz
aXplIHN1Y2NlZWRzIHdpdGggdW5kZWZpbmVkIHdpdGggYSByYW5kb20gbm9uLW9iamVjdCB0eXBl
Jyk7Ci0gIGFzc2VydF9lcXVhbHMoQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUu
c2l6ZSh7fSksIHVuZGVmaW5lZCwKLSAgICAnc2l6ZSBzdWNjZWVkcyB3aXRoIHVuZGVmaW5lZCB3
aXRoIGFuIG9iamVjdCB3aXRob3V0IGh3bSBwcm9wZXJ0eScpOwotICBhc3NlcnRfZXF1YWxzKEJ5
dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoY2h1bmspLCBzaXplLAotICAg
ICdzaXplIHN1Y2NlZWRzIHdpdGggdGhlIHJpZ2h0IGFtb3VudCB3aXRoIGFuIG9iamVjdCB3aXRo
IGEgaHdtJyk7Ci0gIGFzc2VydF9lcXVhbHMoQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90
b3R5cGUuc2l6ZShjaHVua0dldHRlciksIHNpemUsCi0gICAgJ3NpemUgc3VjY2VlZHMgd2l0aCB0
aGUgcmlnaHQgYW1vdW50IHdpdGggYW4gb2JqZWN0IHdpdGggYSBod20gZ2V0dGVyJyk7Ci0gIGFz
c2VydF90aHJvd3MoeyBuYW1lOiAnRXJyb3InIH0sICgpID0+IEJ5dGVMZW5ndGhRdWV1aW5nU3Ry
YXRlZ3kucHJvdG90eXBlLnNpemUoY2h1bmtHZXR0ZXJUaHJvd2luZyksCi0gICAgJ3NpemUgZmFp
bHMgd2l0aCB0aGUgZXJyb3IgdGhyb3duIGJ5IHRoZSBnZXR0ZXInKTsKLQotfSwgJ0J5dGVMZW5n
dGhRdWV1aW5nU3RyYXRlZ3kgc2l6ZSBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBh
cmd1bWVudHMnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgdGhpc1ZhbHVlID0gbnVsbDsK
LSAgY29uc3QgcmV0dXJuVmFsdWUgPSB7ICdyZXR1cm5lZCBmcm9tJzogJ2J5dGVMZW5ndGggZ2V0
dGVyJyB9OwotICBjb25zdCBjaHVuayA9IHsKLSAgICBnZXQgYnl0ZUxlbmd0aCgpIHsgcmV0dXJu
IHJldHVyblZhbHVlOyB9Ci0gIH07Ci0KLSAgYXNzZXJ0X2VxdWFscyhCeXRlTGVuZ3RoUXVldWlu
Z1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplLmNhbGwodGhpc1ZhbHVlLCBjaHVuayksIHJldHVyblZh
bHVlKTsKLQotfSwgJ0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUgc2hv
dWxkIHdvcmsgZ2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMnKTsKLQot
dGVzdCgoKSA9PiB7Ci0KLSAgY29uc3Qgc3RyYXRlZ3kgPSBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdT
dHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSk7Ci0KLSAgYXNzZXJ0X29iamVjdF9lcXVhbHMo
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzdHJhdGVneSwgJ2hpZ2hXYXRlck1hcmsn
KSwKLSAgICB7IHZhbHVlOiA0LCB3cml0YWJsZTogdHJ1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29u
ZmlndXJhYmxlOiB0cnVlIH0sCi0gICAgJ2hpZ2hXYXRlck1hcmsgcHJvcGVydHkgc2hvdWxkIGJl
IGEgZGF0YSBwcm9wZXJ0eSB3aXRoIHRoZSB2YWx1ZSBwYXNzZWQgdGhlIGNvbnN0cnVjdG9yJyk7
Ci0gIGFzc2VydF9lcXVhbHModHlwZW9mIHN0cmF0ZWd5LnNpemUsICdmdW5jdGlvbicpOwotCi19
LCAnQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBw
cm9wZXJ0aWVzJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IHN0cmF0ZWd5ID0gbmV3IEJ5
dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0pOwotICBhc3NlcnRf
ZXF1YWxzKHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmssIDQpOwotCi0gIHN0cmF0ZWd5LmhpZ2hXYXRl
ck1hcmsgPSAxMDsKLSAgYXNzZXJ0X2VxdWFscyhzdHJhdGVneS5oaWdoV2F0ZXJNYXJrLCAxMCk7
Ci0KLSAgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayA9ICdiYW5hbmEnOwotICBhc3NlcnRfZXF1YWxz
KHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmssICdiYW5hbmEnKTsKLQotfSwgJ0J5dGVMZW5ndGhRdWV1
aW5nU3RyYXRlZ3lcJ3MgaGlnaFdhdGVyTWFyayBwcm9wZXJ0eSBjYW4gYmUgc2V0IHRvIGFueXRo
aW5nJyk7Ci0KLWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvY291bnQtcXVldWluZy1zdHJhdGVneS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMtYXBpL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhYzI3YTU1YmY3OGExZjdkNDRiNjVlNDlkNDZjNmU5ZDIyOTk5
M2VhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvY291bnQt
cXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCww
IEBACi0KLVBBU1MgQ2FuIGNvbnN0cnVjdCBhIENvdW50UXVldWluZ1N0cmF0ZWd5IHdpdGggYSB2
YWxpZCBoaWdoIHdhdGVyIG1hcmsgCi1QQVNTIENhbiBjb25zdHJ1Y3QgYSBDb3VudFF1ZXVpbmdT
dHJhdGVneSB3aXRoIGFueSB2YWx1ZSBhcyBpdHMgaGlnaCB3YXRlciBtYXJrIAotUEFTUyBDb3Vu
dFF1ZXVpbmdTdHJhdGVneSBjb25zdHJ1Y3RvciBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGggc3Ry
YW5nZSBhcmd1bWVudHMgCi1QQVNTIENvdW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXpl
IHNob3VsZCB3b3JrIGdlbmVyaWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzIAot
UEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneSBzaXplIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBz
dHJhbmdlIGFyZ3VtZW50cyAKLVBBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3kgaW5zdGFuY2VzIGhh
dmUgdGhlIGNvcnJlY3QgcHJvcGVydGllcyAKLVBBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3kncyBo
aWdoV2F0ZXJNYXJrIHByb3BlcnR5IGNhbiBiZSBzZXQgdG8gYW55dGhpbmcgCi1GQUlMIExvYWQg
Y291bnQtcXVldWluZy1zdHJhdGVneS5qcyB3aXRoIFNoYXJlZFdvcmtlciBhc3NlcnRfdW5yZWFj
aGVkOiBTaGFyZWRXb3JrZXIgaXMgdW5hdmFpbGFibGUgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2Rl
Ci1GQUlMIFVudGl0bGVkIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdu
YXZpZ2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdpc3RyYXRpb24nKQotUEFTUyBDYW4gY29uc3Ry
dWN0IGEgQ291bnRRdWV1aW5nU3RyYXRlZ3kgd2l0aCBhIHZhbGlkIGhpZ2ggd2F0ZXIgbWFyayAK
LVBBU1MgQ2FuIGNvbnN0cnVjdCBhIENvdW50UXVldWluZ1N0cmF0ZWd5IHdpdGggYW55IHZhbHVl
IGFzIGl0cyBoaWdoIHdhdGVyIG1hcmsgCi1QQVNTIENvdW50UXVldWluZ1N0cmF0ZWd5IGNvbnN0
cnVjdG9yIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cyAKLVBBU1Mg
Q291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUgc2hvdWxkIHdvcmsgZ2VuZXJpY2Fs
bHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMgCi1QQVNTIENvdW50UXVldWluZ1N0cmF0
ZWd5IHNpemUgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRzIAotUEFT
UyBDb3VudFF1ZXVpbmdTdHJhdGVneSBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBwcm9wZXJ0
aWVzIAotUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneSdzIGhpZ2hXYXRlck1hcmsgcHJvcGVydHkg
Y2FuIGJlIHNldCB0byBhbnl0aGluZyAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9jb3VudC1xdWV1aW5nLXN0cmF0
ZWd5Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMtYXBpL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMmFmZDEyNjg4NjVjYzhhYjdlOThkNzEzYWRiOThmOTVkZWU4NTkzYy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL2NvdW50LXF1ZXVpbmct
c3RyYXRlZ3kuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9InJlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIj48L3NjcmlwdD4KLQotPHNjcmlw
dCBzcmM9ImNvdW50LXF1ZXVpbmctc3RyYXRlZ3kuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLSd1
c2Ugc3RyaWN0JzsKLXdvcmtlcl90ZXN0KCdjb3VudC1xdWV1aW5nLXN0cmF0ZWd5LmpzJyk7Ci08
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy1hcGkvY291bnQtcXVldWluZy1zdHJhdGVneS5qcyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvY291bnQtcXVl
dWluZy1zdHJhdGVneS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWFlMDA2M2Y1
N2QwOWRkNDdmYWY2ODFlYzgwOWEwZjgzNzYzZDVjNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMtYXBpL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuanMKKysrIC9kZXYv
bnVsbApAQCAtMSwxMDYgKzAsMCBAQAotJ3VzZSBzdHJpY3QnOwotCi1pZiAoc2VsZi5pbXBvcnRT
Y3JpcHRzKSB7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cycpOwotfQotCi10ZXN0KCgpID0+IHsKLQotICBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBo
aWdoV2F0ZXJNYXJrOiA0IH0pOwotCi19LCAnQ2FuIGNvbnN0cnVjdCBhIENvdW50UXVldWluZ1N0
cmF0ZWd5IHdpdGggYSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsnKTsKLQotdGVzdCgoKSA9PiB7Ci0K
LSAgZm9yIChjb25zdCBoaWdoV2F0ZXJNYXJrIG9mIFstSW5maW5pdHksIE5hTiwgJ2ZvbycsIHt9
LCAoKSA9PiB7fV0pIHsKLSAgICBjb25zdCBzdHJhdGVneSA9IG5ldyBDb3VudFF1ZXVpbmdTdHJh
dGVneSh7IGhpZ2hXYXRlck1hcmsgfSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhzdHJhdGVneS5oaWdo
V2F0ZXJNYXJrLCBoaWdoV2F0ZXJNYXJrLCBgJHtoaWdoV2F0ZXJNYXJrfSBnZXRzIHNldCBjb3Jy
ZWN0bHlgKTsKLSAgfQotCi19LCAnQ2FuIGNvbnN0cnVjdCBhIENvdW50UXVldWluZ1N0cmF0ZWd5
IHdpdGggYW55IHZhbHVlIGFzIGl0cyBoaWdoIHdhdGVyIG1hcmsnKTsKLQotdGVzdCgoKSA9PiB7
Ci0KLSAgY29uc3QgaGlnaFdhdGVyTWFyayA9IDE7Ci0gIGNvbnN0IGhpZ2hXYXRlck1hcmtPYmpl
Y3RHZXR0ZXIgPSB7Ci0gICAgZ2V0IGhpZ2hXYXRlck1hcmsoKSB7IHJldHVybiBoaWdoV2F0ZXJN
YXJrOyB9Ci0gIH07Ci0gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCd3b3chJyk7Ci0gIGNvbnN0
IGhpZ2hXYXRlck1hcmtPYmplY3RHZXR0ZXJUaHJvd2luZyA9IHsKLSAgICBnZXQgaGlnaFdhdGVy
TWFyaygpIHsgdGhyb3cgZXJyb3I7IH0KLSAgfTsKLQotICBhc3NlcnRfdGhyb3dzKHsgbmFtZTog
J1R5cGVFcnJvcicgfSwgKCkgPT4gbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KCksICdjb25zdHJ1
Y3Rpb24gZmFpbHMgd2l0aCB1bmRlZmluZWQnKTsKLSAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICdU
eXBlRXJyb3InIH0sICgpID0+IG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneShudWxsKSwgJ2NvbnN0
cnVjdGlvbiBmYWlscyB3aXRoIG51bGwnKTsKLSAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICdFcnJv
cicgfSwgKCkgPT4gbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KGhpZ2hXYXRlck1hcmtPYmplY3RH
ZXR0ZXJUaHJvd2luZyksCi0gICAgJ2NvbnN0cnVjdGlvbiBmYWlscyB3aXRoIGFuIG9iamVjdCB3
aXRoIGEgdGhyb3dpbmcgaGlnaFdhdGVyTWFyayBnZXR0ZXInKTsKLQotICAvLyBTaG91bGQgbm90
IGZhaWw6Ci0gIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSgncG90YXRvJyk7Ci0gIG5ldyBDb3Vu
dFF1ZXVpbmdTdHJhdGVneSh7fSk7Ci0gIG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneShoaWdoV2F0
ZXJNYXJrT2JqZWN0R2V0dGVyKTsKLQotfSwgJ0NvdW50UXVldWluZ1N0cmF0ZWd5IGNvbnN0cnVj
dG9yIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cycpOwotCi0KLXRl
c3QoKCkgPT4gewotCi0gIGNvbnN0IHRoaXNWYWx1ZSA9IG51bGw7Ci0gIGNvbnN0IGNodW5rID0g
ewotICAgIGdldCBieXRlTGVuZ3RoKCkgewotICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignc2hv
dWxkblwndCBiZSBjYWxsZWQnKTsKLSAgICB9Ci0gIH07Ci0KLSAgYXNzZXJ0X2VxdWFscyhDb3Vu
dFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZS5jYWxsKHRoaXNWYWx1ZSwgY2h1bmspLCAx
KTsKLQotfSwgJ0NvdW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplIHNob3VsZCB3b3Jr
IGdlbmVyaWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzJyk7Ci0KLXRlc3QoKCkg
PT4gewotCi0gIGNvbnN0IHNpemUgPSAxMDI0OwotICBjb25zdCBjaHVuayA9IHsgYnl0ZUxlbmd0
aDogc2l6ZSB9OwotICBjb25zdCBjaHVua0dldHRlciA9IHsKLSAgICBnZXQgYnl0ZUxlbmd0aCgp
IHsgcmV0dXJuIHNpemU7IH0KLSAgfTsKLSAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ3dvdyEn
KTsKLSAgY29uc3QgY2h1bmtHZXR0ZXJUaHJvd2luZyA9IHsKLSAgICBnZXQgYnl0ZUxlbmd0aCgp
IHsgdGhyb3cgZXJyb3I7IH0KLSAgfTsKLQotICBhc3NlcnRfZXF1YWxzKENvdW50UXVldWluZ1N0
cmF0ZWd5LnByb3RvdHlwZS5zaXplKCksIDEsICdzaXplIHJldHVybnMgMSB3aXRoIHVuZGVmaW5l
ZCcpOwotICBhc3NlcnRfZXF1YWxzKENvdW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXpl
KG51bGwpLCAxLCAnc2l6ZSByZXR1cm5zIDEgd2l0aCBudWxsJyk7Ci0gIGFzc2VydF9lcXVhbHMo
Q291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoJ3BvdGF0bycpLCAxLCAnc2l6ZSBy
ZXR1cm5zIDEgd2l0aCBub24tb2JqZWN0IHR5cGUnKTsKLSAgYXNzZXJ0X2VxdWFscyhDb3VudFF1
ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSh7fSksIDEsICdzaXplIHJldHVybnMgMSB3aXRo
IGVtcHR5IG9iamVjdCcpOwotICBhc3NlcnRfZXF1YWxzKENvdW50UXVldWluZ1N0cmF0ZWd5LnBy
b3RvdHlwZS5zaXplKGNodW5rKSwgMSwgJ3NpemUgcmV0dXJucyAxIHdpdGggYSBjaHVuaycpOwot
ICBhc3NlcnRfZXF1YWxzKENvdW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKGNodW5r
R2V0dGVyKSwgMSwgJ3NpemUgcmV0dXJucyAxIHdpdGggY2h1bmsgZ2V0dGVyJyk7Ci0gIGFzc2Vy
dF9lcXVhbHMoQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoY2h1bmtHZXR0ZXJU
aHJvd2luZyksIDEsCi0gICAgJ3NpemUgcmV0dXJucyAxIHdpdGggY2h1bmsgZ2V0dGVyIHRoYXQg
dGhyb3dzJyk7Ci0KLX0sICdDb3VudFF1ZXVpbmdTdHJhdGVneSBzaXplIGJlaGF2ZXMgYXMgZXhw
ZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cycpOwotCi10ZXN0KCgpID0+IHsKLQotICBjb25z
dCBzdHJhdGVneSA9IG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQg
fSk7Ci0KLSAgYXNzZXJ0X29iamVjdF9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihzdHJhdGVneSwgJ2hpZ2hXYXRlck1hcmsnKSwKLSAgICB7IHZhbHVlOiA0LCB3cml0YWJs
ZTogdHJ1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0sCi0gICAgJ2hp
Z2hXYXRlck1hcmsgcHJvcGVydHkgc2hvdWxkIGJlIGEgZGF0YSBwcm9wZXJ0eSB3aXRoIHRoZSB2
YWx1ZSBwYXNzZWQgdGhlIGNvbnN0cnVjdG9yJyk7Ci0gIGFzc2VydF9lcXVhbHModHlwZW9mIHN0
cmF0ZWd5LnNpemUsICdmdW5jdGlvbicpOwotCi19LCAnQ291bnRRdWV1aW5nU3RyYXRlZ3kgaW5z
dGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgcHJvcGVydGllcycpOwotCi10ZXN0KCgpID0+IHsKLQot
ICBjb25zdCBzdHJhdGVneSA9IG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1h
cms6IDQgfSk7Ci0gIGFzc2VydF9lcXVhbHMoc3RyYXRlZ3kuaGlnaFdhdGVyTWFyaywgNCk7Ci0K
LSAgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayA9IDEwOwotICBhc3NlcnRfZXF1YWxzKHN0cmF0ZWd5
LmhpZ2hXYXRlck1hcmssIDEwKTsKLQotICBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrID0gJ2JhbmFu
YSc7Ci0gIGFzc2VydF9lcXVhbHMoc3RyYXRlZ3kuaGlnaFdhdGVyTWFyaywgJ2JhbmFuYScpOwot
Ci19LCAnQ291bnRRdWV1aW5nU3RyYXRlZ3lcJ3MgaGlnaFdhdGVyTWFyayBwcm9wZXJ0eSBjYW4g
YmUgc2V0IHRvIGFueXRoaW5nJyk7Ci0KLWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3Ry
ZWFtcy9iYWQtc3RyYXRlZ2llcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0
cmF0ZWdpZXMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYThh
ZjM0MTI2OWEyNTQ0OTNlMTUwZGVkNzRhZGVkNDUwODJkYjYzLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2ll
cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0KLVBBU1MgUmVh
ZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5zaXplIGdldHRlciAKLVBBU1MgUmVhZGFi
bGUgc3RyZWFtOiBzdHJhdGVneS5zaXplIGVycm9ycyB0aGUgc3RyZWFtIGFuZCB0aGVuIHRocm93
cyAKLVBBU1MgUmVhZGFibGUgc3RyZWFtOiBzdHJhdGVneS5zaXplIGVycm9ycyB0aGUgc3RyZWFt
IGFuZCB0aGVuIHJldHVybnMgSW5maW5pdHkgCi1QQVNTIFJlYWRhYmxlIHN0cmVhbTogdGhyb3dp
bmcgc3RyYXRlZ3kuc2l6ZSBtZXRob2QgCi1QQVNTIFJlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcg
c3RyYXRlZ3kuaGlnaFdhdGVyTWFyayBnZXR0ZXIgCi1QQVNTIFJlYWRhYmxlIHN0cmVhbTogaW52
YWxpZCBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIAotUEFTUyBSZWFkYWJsZSBzdHJlYW06IGludmFs
aWQgc3RyYXRlZ3kuc2l6ZSByZXR1cm4gdmFsdWUgCi1GQUlMIExvYWQgYmFkLXN0cmF0ZWdpZXMu
anMgd2l0aCBTaGFyZWRXb3JrZXIgYXNzZXJ0X3VucmVhY2hlZDogU2hhcmVkV29ya2VyIGlzIHVu
YXZhaWxhYmxlIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQotRkFJTCBVbnRpdGxlZCB1bmRlZmlu
ZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIu
Z2V0UmVnaXN0cmF0aW9uJykKLVBBU1MgUmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVn
eS5zaXplIGdldHRlciAKLVBBU1MgUmVhZGFibGUgc3RyZWFtOiBzdHJhdGVneS5zaXplIGVycm9y
cyB0aGUgc3RyZWFtIGFuZCB0aGVuIHRocm93cyAKLVBBU1MgUmVhZGFibGUgc3RyZWFtOiBzdHJh
dGVneS5zaXplIGVycm9ycyB0aGUgc3RyZWFtIGFuZCB0aGVuIHJldHVybnMgSW5maW5pdHkgCi1Q
QVNTIFJlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBtZXRob2QgCi1QQVNT
IFJlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayBnZXR0ZXIg
Ci1QQVNTIFJlYWRhYmxlIHN0cmVhbTogaW52YWxpZCBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIAot
UEFTUyBSZWFkYWJsZSBzdHJlYW06IGludmFsaWQgc3RyYXRlZ3kuc2l6ZSByZXR1cm4gdmFsdWUg
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFk
YWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDRmYWI5MzEzMjM5Yjc3Yzc2NmE5MzIyYjQzNDFlZmM1M2MyNmRiZmUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2Jh
ZC1zdHJhdGVnaWVzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3JpcHQ+Ci0K
LTxzY3JpcHQgc3JjPSJiYWQtc3RyYXRlZ2llcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotJ3Vz
ZSBzdHJpY3QnOwotd29ya2VyX3Rlc3QoJ2JhZC1zdHJhdGVnaWVzLmpzJyk7Ci08L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5qcyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUt
c3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MGMwNTNhYjYyYmNmZTIxZTQyYzU1YjIwYmJjYmFhZTIyNmJhZjhiNC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0
ZWdpZXMuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxNzUgKzAsMCBAQAotJ3VzZSBzdHJpY3QnOwot
Ci1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcycpOwotfQotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCB0aGVF
cnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7Ci0KLSAgYXNzZXJ0X3Rocm93cyh0
aGVFcnJvciwgKCkgPT4gewotICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7fSwgewotICAgICAgZ2V0
IHNpemUoKSB7Ci0gICAgICAgIHRocm93IHRoZUVycm9yOwotICAgICAgfSwKLSAgICAgIGhpZ2hX
YXRlck1hcms6IDUKLSAgICB9KTsKLSAgfSwgJ2NvbnN0cnVjdGlvbiBzaG91bGQgcmUtdGhyb3cg
dGhlIGVycm9yJyk7Ci0KLX0sICdSZWFkYWJsZSBzdHJlYW06IHRocm93aW5nIHN0cmF0ZWd5LnNp
emUgZ2V0dGVyJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCBjb250cm9sbGVy
RXJyb3IgPSB7IG5hbWU6ICdjb250cm9sbGVyIGVycm9yJyB9OwotICBjb25zdCB0aHJvd25FcnJv
ciA9IHsgbmFtZTogJ3Rocm93biBlcnJvcicgfTsKLQotICBsZXQgY29udHJvbGxlcjsKLSAgY29u
c3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oCi0gICAgewotICAgICAgc3RhcnQoYykgewotICAg
ICAgICBjb250cm9sbGVyID0gYzsKLSAgICAgIH0KLSAgICB9LAotICAgIHsKLSAgICAgIHNpemUo
KSB7Ci0gICAgICAgIGNvbnRyb2xsZXIuZXJyb3IoY29udHJvbGxlckVycm9yKTsKLSAgICAgICAg
dGhyb3cgdGhyb3duRXJyb3I7Ci0gICAgICB9LAotICAgICAgaGlnaFdhdGVyTWFyazogNQotICAg
IH0KLSAgKTsKLQotICBhc3NlcnRfdGhyb3dzKHRocm93bkVycm9yLCAoKSA9PiBjb250cm9sbGVy
LmVucXVldWUoJ2EnKSwgJ2VucXVldWUgc2hvdWxkIHJlLXRocm93IHRoZSBlcnJvcicpOwotCi0g
IHJldHVybiBwcm9taXNlX3JlamVjdHModCwgY29udHJvbGxlckVycm9yLCBycy5nZXRSZWFkZXIo
KS5jbG9zZWQpOwotCi19LCAnUmVhZGFibGUgc3RyZWFtOiBzdHJhdGVneS5zaXplIGVycm9ycyB0
aGUgc3RyZWFtIGFuZCB0aGVuIHRocm93cycpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAg
Y29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICdteSBlcnJvcicgfTsKLQotICBsZXQgY29udHJvbGxl
cjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oCi0gICAgewotICAgICAgc3RhcnQo
YykgewotICAgICAgICBjb250cm9sbGVyID0gYzsKLSAgICAgIH0KLSAgICB9LAotICAgIHsKLSAg
ICAgIHNpemUoKSB7Ci0gICAgICAgIGNvbnRyb2xsZXIuZXJyb3IodGhlRXJyb3IpOwotICAgICAg
ICByZXR1cm4gSW5maW5pdHk7Ci0gICAgICB9LAotICAgICAgaGlnaFdhdGVyTWFyazogNQotICAg
IH0KLSAgKTsKLQotICBhc3NlcnRfdGhyb3dzKG5ldyBSYW5nZUVycm9yKCksICgpID0+IGNvbnRy
b2xsZXIuZW5xdWV1ZSgnYScpLCAnZW5xdWV1ZSBzaG91bGQgdGhyb3cgYSBSYW5nZUVycm9yJyk7
Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcnMuZ2V0UmVhZGVyKCku
Y2xvc2VkLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKLQotfSwgJ1Jl
YWRhYmxlIHN0cmVhbTogc3RyYXRlZ3kuc2l6ZSBlcnJvcnMgdGhlIHN0cmVhbSBhbmQgdGhlbiBy
ZXR1cm5zIEluZmluaXR5Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgdGhl
RXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwotICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSgKLSAgICB7Ci0gICAgICBzdGFydChjKSB7Ci0gICAgICAgIGFzc2VydF90
aHJvd3ModGhlRXJyb3IsICgpID0+IGMuZW5xdWV1ZSgnYScpLCAnZW5xdWV1ZSBzaG91bGQgdGhy
b3cgdGhlIGVycm9yJyk7Ci0gICAgICB9Ci0gICAgfSwKLSAgICB7Ci0gICAgICBzaXplKCkgewot
ICAgICAgICB0aHJvdyB0aGVFcnJvcjsKLSAgICAgIH0sCi0gICAgICBoaWdoV2F0ZXJNYXJrOiA1
Ci0gICAgfQotICApOwotCi0gIHJldHVybiBycy5nZXRSZWFkZXIoKS5jbG9zZWQuY2F0Y2goZSA9
PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0
IHdpdGggdGhlIGVycm9yJyk7Ci0gIH0pOwotCi19LCAnUmVhZGFibGUgc3RyZWFtOiB0aHJvd2lu
ZyBzdHJhdGVneS5zaXplIG1ldGhvZCcpOwotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCB0aGVF
cnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7Ci0KLSAgYXNzZXJ0X3Rocm93cyh0
aGVFcnJvciwgKCkgPT4gewotICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7fSwgewotICAgICAgc2l6
ZSgpIHsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgICB9LAotICAgICAgZ2V0IGhpZ2hXYXRlck1h
cmsoKSB7Ci0gICAgICAgIHRocm93IHRoZUVycm9yOwotICAgICAgfQotICAgIH0pOwotICB9LCAn
Y29uc3RydWN0aW9uIHNob3VsZCByZS10aHJvdyB0aGUgZXJyb3InKTsKLQotfSwgJ1JlYWRhYmxl
IHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayBnZXR0ZXInKTsKLQotdGVz
dCgoKSA9PiB7Ci0KLSAgZm9yIChjb25zdCBoaWdoV2F0ZXJNYXJrIG9mIFstMSwgLUluZmluaXR5
XSkgewotICAgIGFzc2VydF90aHJvd3MobmV3IFJhbmdlRXJyb3IoKSwgKCkgPT4gewotICAgICAg
bmV3IFJlYWRhYmxlU3RyZWFtKHt9LCB7Ci0gICAgICAgIHNpemUoKSB7Ci0gICAgICAgICAgcmV0
dXJuIDE7Ci0gICAgICAgIH0sCi0gICAgICAgIGhpZ2hXYXRlck1hcmsKLSAgICAgIH0pOwotICAg
IH0sICdjb25zdHJ1Y3Rpb24gc2hvdWxkIHRocm93IGEgUmFuZ2VFcnJvciBmb3IgJyArIGhpZ2hX
YXRlck1hcmspOwotICB9Ci0KLSAgZm9yIChjb25zdCBoaWdoV2F0ZXJNYXJrIG9mIFtOYU4sICdm
b28nLCB7fV0pIHsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gewot
ICAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHt9LCB7Ci0gICAgICAgIHNpemUoKSB7Ci0gICAgICAg
ICAgcmV0dXJuIDE7Ci0gICAgICAgIH0sCi0gICAgICAgIGhpZ2hXYXRlck1hcmsKLSAgICAgIH0p
OwotICAgIH0sICdjb25zdHJ1Y3Rpb24gc2hvdWxkIHRocm93IGEgVHlwZUVycm9yIGZvciAnICsg
aGlnaFdhdGVyTWFyayk7Ci0gIH0KLQotfSwgJ1JlYWRhYmxlIHN0cmVhbTogaW52YWxpZCBzdHJh
dGVneS5oaWdoV2F0ZXJNYXJrJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3Qg
cHJvbWlzZXMgPSBbXTsKLSAgZm9yIChjb25zdCBzaXplIG9mIFtOYU4sIC1JbmZpbml0eSwgSW5m
aW5pdHksIC0xXSkgewotICAgIGxldCB0aGVFcnJvcjsKLSAgICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSgKLSAgICAgIHsKLSAgICAgICAgc3RhcnQoYykgewotICAgICAgICAgIHRyeSB7
Ci0gICAgICAgICAgICBjLmVucXVldWUoJ2hpJyk7Ci0gICAgICAgICAgICBhc3NlcnRfdW5yZWFj
aGVkKCdlbnF1ZXVlIGRpZG5cJ3QgdGhyb3cnKTsKLSAgICAgICAgICB9IGNhdGNoIChlcnJvcikg
ewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhlcnJvci5uYW1lLCAnUmFuZ2VFcnJvcicsICdl
bnF1ZXVlIHNob3VsZCB0aHJvdyBhIFJhbmdlRXJyb3IgZm9yICcgKyBzaXplKTsKLSAgICAgICAg
ICAgIHRoZUVycm9yID0gZXJyb3I7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9LAot
ICAgICAgewotICAgICAgICBzaXplKCkgewotICAgICAgICAgIHJldHVybiBzaXplOwotICAgICAg
ICB9LAotICAgICAgICBoaWdoV2F0ZXJNYXJrOiA1Ci0gICAgICB9Ci0gICAgKTsKLQotICAgIHBy
b21pc2VzLnB1c2gocnMuZ2V0UmVhZGVyKCkuY2xvc2VkLmNhdGNoKGUgPT4gewotICAgICAgYXNz
ZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVy
cm9yIGZvciAnICsgc2l6ZSk7Ci0gICAgfSkpOwotICB9Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxs
KHByb21pc2VzKTsKLQotfSwgJ1JlYWRhYmxlIHN0cmVhbTogaW52YWxpZCBzdHJhdGVneS5zaXpl
IHJldHVybiB2YWx1ZScpOwotCi1kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMv
YmFkLXVuZGVybHlpbmctc291cmNlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFk
LXVuZGVybHlpbmctc291cmNlcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDI5Y2ZjYTViNzYwYzQxMTk0MTUxZTc4NjJmODRkNWE3YjA2ZDE1ZjIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2Jh
ZC11bmRlcmx5aW5nLXNvdXJjZXMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNDYg
KzAsMCBAQAotCi1QQVNTIFVuZGVybHlpbmcgc291cmNlIHN0YXJ0OiB0aHJvd2luZyBnZXR0ZXIg
Ci1QQVNTIFVuZGVybHlpbmcgc291cmNlIHN0YXJ0OiB0aHJvd2luZyBtZXRob2QgCi1QQVNTIFVu
ZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIGdldHRlciAoaW5pdGlhbCBwdWxsKSAKLVBB
U1MgVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgbWV0aG9kIChpbml0aWFsIHB1bGwp
IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBwdWxsOiB0aHJvd2luZyBnZXR0ZXIgKHNlY29uZCBw
dWxsKSAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2UgcHVsbDogdGhyb3dpbmcgbWV0aG9kIChzZWNv
bmQgcHVsbCkgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlIGNhbmNlbDogdGhyb3dpbmcgZ2V0dGVy
IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBjYW5jZWw6IHRocm93aW5nIG1ldGhvZCAKLVBBU1Mg
VW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBlbXB0eSBjYW5jZWxlZCBz
dHJlYW0gc2hvdWxkIG5vdCB0aHJvdyAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcg
ZW5xdWV1ZSBvbiBhIG5vbi1lbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdyAK
LVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhIGNsb3NlZCBzdHJl
YW0gc2hvdWxkIHRocm93IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVl
IG9uIGFuIGVycm9yZWQgc3RyZWFtIHNob3VsZCB0aHJvdyAKLVBBU1MgVW5kZXJseWluZyBzb3Vy
Y2U6IGNhbGxpbmcgY2xvc2UgdHdpY2Ugb24gYW4gZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0
aGUgc2Vjb25kIHRpbWUgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3
aWNlIG9uIGEgbm9uLWVtcHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lIAot
UEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBvbiBhbiBlbXB0eSBjYW5jZWxl
ZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdyAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxp
bmcgY2xvc2Ugb24gYSBub24tZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cg
Ci1QQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIGFmdGVyIGVycm9yIHNob3Vs
ZCB0aHJvdyAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgdHdpY2Ugc2hv
dWxkIHRocm93IHRoZSBzZWNvbmQgdGltZSAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxp
bmcgZXJyb3IgYWZ0ZXIgY2xvc2Ugc2hvdWxkIHRocm93IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJj
ZTogY2FsbGluZyBlcnJvciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHN0
YXJ0IHNob3VsZCBjYXVzZSB0aGUgc3RyZWFtIHRvIGVycm9yIHdpdGggdGhlIGZpcnN0IGVycm9y
IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhbmQgcmV0dXJuaW5nIGEg
cmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHB1bGwgc2hvdWxkIGNhdXNlIHRoZSBzdHJlYW0gdG8gZXJy
b3Igd2l0aCB0aGUgZmlyc3QgZXJyb3IgCi1GQUlMIExvYWQgYmFkLXVuZGVybHlpbmctc291cmNl
cy5qcyB3aXRoIFNoYXJlZFdvcmtlciBhc3NlcnRfdW5yZWFjaGVkOiBTaGFyZWRXb3JrZXIgaXMg
dW5hdmFpbGFibGUgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCi1GQUlMIFVudGl0bGVkIHVuZGVm
aW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICduYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5nZXRSZWdpc3RyYXRpb24nKQotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dp
bmcgZ2V0dGVyIAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dpbmcgbWV0aG9k
IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBnZXR0ZXIgKGluaXRpYWwg
cHVsbCkgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIG1ldGhvZCAoaW5p
dGlhbCBwdWxsKSAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2UgcHVsbDogdGhyb3dpbmcgZ2V0dGVy
IChzZWNvbmQgcHVsbCkgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlIHB1bGw6IHRocm93aW5nIG1l
dGhvZCAoc2Vjb25kIHB1bGwpIAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBjYW5jZWw6IHRocm93
aW5nIGdldHRlciAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2UgY2FuY2VsOiB0aHJvd2luZyBtZXRo
b2QgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYW4gZW1wdHkg
Y2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cgCi1QQVNTIFVuZGVybHlpbmcgc291cmNl
OiBjYWxsaW5nIGVucXVldWUgb24gYSBub24tZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBu
b3QgdGhyb3cgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYSBj
bG9zZWQgc3RyZWFtIHNob3VsZCB0aHJvdyAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxp
bmcgZW5xdWV1ZSBvbiBhbiBlcnJvcmVkIHN0cmVhbSBzaG91bGQgdGhyb3cgCi1QQVNTIFVuZGVy
bHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGFuIGVtcHR5IHN0cmVhbSBzaG91
bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lIAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGlu
ZyBjbG9zZSB0d2ljZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNv
bmQgdGltZSAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24gYW4gZW1w
dHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cgCi1QQVNTIFVuZGVybHlpbmcgc291
cmNlOiBjYWxsaW5nIGNsb3NlIG9uIGEgbm9uLWVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQg
bm90IHRocm93IAotUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBhZnRlciBl
cnJvciBzaG91bGQgdGhyb3cgCi1QQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9y
IHR3aWNlIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUgCi1QQVNTIFVuZGVybHlpbmcgc291
cmNlOiBjYWxsaW5nIGVycm9yIGFmdGVyIGNsb3NlIHNob3VsZCB0aHJvdyAKLVBBU1MgVW5kZXJs
eWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYW5kIHJldHVybmluZyBhIHJlamVjdGVkIHByb21p
c2UgZnJvbSBzdGFydCBzaG91bGQgY2F1c2UgdGhlIHN0cmVhbSB0byBlcnJvciB3aXRoIHRoZSBm
aXJzdCBlcnJvciAKLVBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYW5kIHJl
dHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgZnJvbSBwdWxsIHNob3VsZCBjYXVzZSB0aGUgc3Ry
ZWFtIHRvIGVycm9yIHdpdGggdGhlIGZpcnN0IGVycm9yIAotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxl
LXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2Jh
ZC11bmRlcmx5aW5nLXNvdXJjZXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZWNiMTFmZWFiMTJjNDc2YzQ3MWZkMmRjNWRiZmIzMGQ5ZDdkZmI1Ni4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVy
bHlpbmctc291cmNlcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwvc2NyaXB0Pgot
Ci08c2NyaXB0IHNyYz0iYmFkLXVuZGVybHlpbmctc291cmNlcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0PgotJ3VzZSBzdHJpY3QnOwotd29ya2VyX3Rlc3QoJ2JhZC11bmRlcmx5aW5nLXNvdXJjZXMu
anMnKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5
aW5nLXNvdXJjZXMuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5q
cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJmZDBmZGM5Mjk5ZDVkNWRlNGY1NjI4
ZGQxOWQ1OWZkMjkzMDBkYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVybHlpbmctc291cmNlcy5qcworKysgL2Rl
di9udWxsCkBAIC0xLDM4MyArMCwwIEBACi0ndXNlIHN0cmljdCc7Ci0KLWlmIChzZWxmLmltcG9y
dFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzJyk7Ci19Ci0KLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJy
b3IoJ2EgdW5pcXVlIHN0cmluZycpOwotCi0gIGFzc2VydF90aHJvd3ModGhlRXJyb3IsICgpID0+
IHsKLSAgICBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgZ2V0IHN0YXJ0KCkgewotICAgICAg
ICB0aHJvdyB0aGVFcnJvcjsKLSAgICAgIH0KLSAgICB9KTsKLSAgfSwgJ2NvbnN0cnVjdGluZyB0
aGUgc3RyZWFtIHNob3VsZCByZS10aHJvdyB0aGUgZXJyb3InKTsKLQotfSwgJ1VuZGVybHlpbmcg
c291cmNlIHN0YXJ0OiB0aHJvd2luZyBnZXR0ZXInKTsKLQotCi10ZXN0KCgpID0+IHsKLQotICBj
b25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7Ci0KLSAgYXNzZXJ0
X3Rocm93cyh0aGVFcnJvciwgKCkgPT4gewotICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAg
ICBzdGFydCgpIHsKLSAgICAgICAgdGhyb3cgdGhlRXJyb3I7Ci0gICAgICB9Ci0gICAgfSk7Ci0g
IH0sICdjb25zdHJ1Y3RpbmcgdGhlIHN0cmVhbSBzaG91bGQgcmUtdGhyb3cgdGhlIGVycm9yJyk7
Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dpbmcgbWV0aG9kJyk7Ci0KLQot
cHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVu
aXF1ZSBzdHJpbmcnKTsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIGdl
dCBwdWxsKCkgewotICAgICAgdGhyb3cgdGhlRXJyb3I7Ci0gICAgfQotICB9KTsKLQotICByZXR1
cm4gcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCBycy5nZXRSZWFkZXIoKS5jbG9zZWQpOwot
Ci19LCAnVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgZ2V0dGVyIChpbml0aWFsIHB1
bGwpJyk7Ci0KLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHRoZUVycm9yID0gbmV3
IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oewotICAgIHB1bGwoKSB7Ci0gICAgICB0aHJvdyB0aGVFcnJvcjsKLSAgICB9Ci0gIH0pOwot
Ci0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJzLmdldFJlYWRlcigpLmNs
b3NlZCk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBtZXRob2QgKGlu
aXRpYWwgcHVsbCknKTsKLQotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgdGhlRXJy
b3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwotCi0gIGxldCBjb3VudGVyID0gMDsK
LSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIGdldCBwdWxsKCkgewotICAg
ICAgKytjb3VudGVyOwotICAgICAgaWYgKGNvdW50ZXIgPT09IDEpIHsKLSAgICAgICAgcmV0dXJu
IGMgPT4gYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICB9Ci0KLSAgICAgIHRocm93IHRoZUVycm9yOwot
ICAgIH0KLSAgfSk7Ci0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gIHJldHVy
biBQcm9taXNlLmFsbChbCi0gICAgcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4gewotICAgICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAndGhlIGNo
dW5rIHJlYWQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLSAgICB9KSwKLSAgICBwcm9taXNlX3JlamVj
dHModCwgdGhlRXJyb3IsIHJlYWRlci5jbG9zZWQpCi0gIF0pOwotCi19LCAnVW5kZXJseWluZyBz
b3VyY2UgcHVsbDogdGhyb3dpbmcgZ2V0dGVyIChzZWNvbmQgcHVsbCknKTsKLQotCi1wcm9taXNl
X3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0
cmluZycpOwotCi0gIGxldCBjb3VudGVyID0gMDsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oewotICAgIHB1bGwoYykgewotICAgICAgKytjb3VudGVyOwotICAgICAgaWYgKGNvdW50
ZXIgPT09IDEpIHsKLSAgICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICAgIH0KLQotICAgICAgdGhyb3cgdGhlRXJyb3I7Ci0gICAgfQotICB9KTsKLSAgY29uc3QgcmVh
ZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICByZWFk
ZXIucmVhZCgpLnRoZW4ociA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZh
bHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICd0aGUgY2h1bmsgcmVhZCBzaG91bGQgYmUgY29ycmVj
dCcpOwotICAgIH0pLAotICAgIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcmVhZGVyLmNs
b3NlZCkKLSAgXSk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZSBwdWxsOiB0aHJvd2luZyBtZXRo
b2QgKHNlY29uZCBwdWxsKScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgdGhl
RXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwotICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7Ci0gICAgZ2V0IGNhbmNlbCgpIHsKLSAgICAgIHRocm93IHRoZUVycm9y
OwotICAgIH0KLSAgfSk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwg
cnMuY2FuY2VsKCkpOwotCi19LCAnVW5kZXJseWluZyBzb3VyY2UgY2FuY2VsOiB0aHJvd2luZyBn
ZXR0ZXInKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHRoZUVycm9yID0gbmV3
IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oewotICAgIGNhbmNlbCgpIHsKLSAgICAgIHRocm93IHRoZUVycm9yOwotICAgIH0KLSAgfSk7
Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcnMuY2FuY2VsKCkpOwot
Ci19LCAnVW5kZXJseWluZyBzb3VyY2UgY2FuY2VsOiB0aHJvd2luZyBtZXRob2QnKTsKLQotcHJv
bWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwot
ICAgIH0KLSAgfSk7Ci0KLSAgcnMuY2FuY2VsKCk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScp
OyAvLyBDYWxsaW5nIGVucXVldWUgYWZ0ZXIgY2FuY2VsaW5nIHNob3VsZCBub3QgdGhyb3cgYW55
dGhpbmcuCi0KLSAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNsb3NlZDsKLQotfSwgJ1VuZGVybHlp
bmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYW4gZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNo
b3VsZCBub3QgdGhyb3cnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgY29udHJv
bGxlcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsK
LSAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgICAgYy5lbnF1ZXVlKCdiJyk7Ci0gICAgICBjb250
cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0pOwotCi0gIHJzLmNhbmNlbCgpOwotICBjb250cm9sbGVy
LmVucXVldWUoJ2MnKTsgLy8gQ2FsbGluZyBlbnF1ZXVlIGFmdGVyIGNhbmNlbGluZyBzaG91bGQg
bm90IHRocm93IGFueXRoaW5nLgotCi0gIHJldHVybiBycy5nZXRSZWFkZXIoKS5jbG9zZWQ7Ci0K
LX0sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGEgbm9uLWVtcHR5IGNh
bmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93Jyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7
Ci0KLSAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAg
Yy5jbG9zZSgpOwotICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGMu
ZW5xdWV1ZSgnYScpLCAnY2FsbCB0byBlbnF1ZXVlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicp
OwotICAgIH0KLSAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOwotCi19LCAnVW5kZXJseWluZyBzb3Vy
Y2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhIGNsb3NlZCBzdHJlYW0gc2hvdWxkIHRocm93Jyk7Ci0K
LXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYm9v
Jyk7Ci0gIGNvbnN0IGNsb3NlZCA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykg
ewotICAgICAgYy5lcnJvcih0aGVFcnJvcik7Ci0gICAgICBhc3NlcnRfdGhyb3dzKHRoZUVycm9y
LCAoKSA9PiBjLmVucXVldWUoJ2EnKSwgJ2NhbGwgdG8gZW5xdWV1ZSBzaG91bGQgdGhyb3cgdGhl
IGVycm9yJyk7Ci0gICAgfQotICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7Ci0KLSAgcmV0dXJuIHBy
b21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgY2xvc2VkKTsKLQotfSwgJ1VuZGVybHlpbmcgc291
cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYW4gZXJyb3JlZCBzdHJlYW0gc2hvdWxkIHRocm93Jyk7
Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7
Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5jbG9zZSgpOwotICAgICAgYXNzZXJ0X3Rocm93cyhu
ZXcgVHlwZUVycm9yKCksICgpID0+IGMuY2xvc2UoKSwgJ3NlY29uZCBjYWxsIHRvIGNsb3NlIHNo
b3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwotICAgIH0KLSAgfSkuZ2V0UmVhZGVyKCkuY2xvc2Vk
OwotCi19LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgdHdpY2Ugb24gYW4gZW1w
dHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUnKTsKLQotcHJvbWlzZV90ZXN0
KCgpID0+IHsKLQotICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKLSAgbGV0IHJlYWRDYWxsZWQg
PSBmYWxzZTsKLSAgY29uc3QgcmVhZGVyID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFy
dChjKSB7Ci0gICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICAgIGMuY2xvc2UoKTsKLSAgICAgIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjLmNsb3NlKCksICdzZWNvbmQgY2Fs
bCB0byBjbG9zZSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKLSAgICAgIHN0YXJ0Q2FsbGVk
ID0gdHJ1ZTsKLSAgICB9Ci0gIH0pLmdldFJlYWRlcigpOwotCi0gIHJldHVybiBQcm9taXNlLmFs
bChbCi0gICAgcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9l
cXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAncmVhZCgpIHNob3VsZCByZWFk
IHRoZSBlbnF1ZXVlZCBjaHVuaycpOwotICAgICAgcmVhZENhbGxlZCA9IHRydWU7Ci0gICAgfSks
Ci0gICAgcmVhZGVyLmNsb3NlZC50aGVuKCgpID0+IHsKLSAgICAgIGFzc2VydF90cnVlKHN0YXJ0
Q2FsbGVkKTsKLSAgICAgIGFzc2VydF90cnVlKHJlYWRDYWxsZWQpOwotICAgIH0pCi0gIF0pOwot
Ci19LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgdHdpY2Ugb24gYSBub24tZW1w
dHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUnKTsKLQotcHJvbWlzZV90ZXN0
KCgpID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsKLSAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7
Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAg
ICBjb250cm9sbGVyID0gYzsKLSAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKLSAgICB9Ci0gIH0p
OwotCi0gIHJzLmNhbmNlbCgpOwotICBjb250cm9sbGVyLmNsb3NlKCk7IC8vIENhbGxpbmcgY2xv
c2UgYWZ0ZXIgY2FuY2VsaW5nIHNob3VsZCBub3QgdGhyb3cgYW55dGhpbmcuCi0KLSAgcmV0dXJu
IHJzLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfdHJ1ZShzdGFy
dENhbGxlZCk7Ci0gIH0pOwotCi19LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ug
b24gYW4gZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cnKTsKLQotcHJvbWlz
ZV90ZXN0KCgpID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsKLSAgbGV0IHN0YXJ0Q2FsbGVkID0g
ZmFsc2U7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7
Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgICAgc3Rh
cnRDYWxsZWQgPSB0cnVlOwotICAgIH0KLSAgfSk7Ci0KLSAgcnMuY2FuY2VsKCk7Ci0gIGNvbnRy
b2xsZXIuY2xvc2UoKTsgLy8gQ2FsbGluZyBjbG9zZSBhZnRlciBjYW5jZWxpbmcgc2hvdWxkIG5v
dCB0aHJvdyBhbnl0aGluZy4KLQotICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4o
KCkgPT4gewotICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKLSAgfSk7Ci0KLX0sICdVbmRl
cmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBvbiBhIG5vbi1lbXB0eSBjYW5jZWxlZCBzdHJl
YW0gc2hvdWxkIG5vdCB0aHJvdycpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0
IHRoZUVycm9yID0gbmV3IEVycm9yKCdib28nKTsKLSAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7
Ci0KLSAgY29uc3QgY2xvc2VkID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7
Ci0gICAgICBjLmVycm9yKHRoZUVycm9yKTsKLSAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVF
cnJvcigpLCAoKSA9PiBjLmNsb3NlKCksICdjYWxsIHRvIGNsb3NlIHNob3VsZCB0aHJvdyBhIFR5
cGVFcnJvcicpOwotICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOwotICAgIH0KLSAgfSkuZ2V0UmVh
ZGVyKCkuY2xvc2VkOwotCi0gIHJldHVybiBjbG9zZWQuY2F0Y2goZSA9PiB7Ci0gICAgYXNzZXJ0
X3RydWUoc3RhcnRDYWxsZWQpOwotICAgIGFzc2VydF9lcXVhbHMoZSwgdGhlRXJyb3IsICdjbG9z
ZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOwotICB9KTsKLQotfSwgJ1VuZGVybHlp
bmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIGFmdGVyIGVycm9yIHNob3VsZCB0aHJvdycpOwotCi1w
cm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdib28n
KTsKLSAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7Ci0KLSAgY29uc3QgY2xvc2VkID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVycm9yKHRoZUVycm9yKTsK
LSAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjLmVycm9yKCksICdz
ZWNvbmQgY2FsbCB0byBlcnJvciBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKLSAgICAgIHN0
YXJ0Q2FsbGVkID0gdHJ1ZTsKLSAgICB9Ci0gIH0pLmdldFJlYWRlcigpLmNsb3NlZDsKLQotICBy
ZXR1cm4gY2xvc2VkLmNhdGNoKGUgPT4gewotICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsK
LSAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVycm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0
aCB0aGUgZXJyb3InKTsKLSAgfSk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBl
cnJvciB0d2ljZSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lJyk7Ci0KLXByb21pc2VfdGVz
dCgoKSA9PiB7Ci0KLSAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7Ci0KLSAgY29uc3QgY2xvc2Vk
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmNsb3NlKCk7
Ci0gICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gYy5lcnJvcigpLCAn
c2Vjb25kIGNhbGwgdG8gZXJyb3Igc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7Ci0gICAgICBz
dGFydENhbGxlZCA9IHRydWU7Ci0gICAgfQotICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7Ci0KLSAg
cmV0dXJuIGNsb3NlZC50aGVuKCgpID0+IGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKSk7Ci0KLX0s
ICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhZnRlciBjbG9zZSBzaG91bGQgdGhy
b3cnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxz
ZTsKLSAgY29uc3QgZmlyc3RFcnJvciA9IG5ldyBFcnJvcignMScpOwotICBjb25zdCBzZWNvbmRF
cnJvciA9IG5ldyBFcnJvcignMicpOwotCi0gIGNvbnN0IGNsb3NlZCA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lcnJvcihmaXJzdEVycm9yKTsKLSAgICAg
IHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKLSAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChzZWNvbmRF
cnJvcik7Ci0gICAgfQotICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7Ci0KLSAgcmV0dXJuIGNsb3Nl
ZC5jYXRjaChlID0+IHsKLSAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7Ci0gICAgYXNzZXJ0
X2VxdWFscyhlLCBmaXJzdEVycm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZmly
c3QgZXJyb3InKTsKLSAgfSk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJv
ciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHN0YXJ0IHNob3VsZCBjYXVz
ZSB0aGUgc3RyZWFtIHRvIGVycm9yICcgKwotICAgJ3dpdGggdGhlIGZpcnN0IGVycm9yJyk7Ci0K
LXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7Ci0gIGNv
bnN0IGZpcnN0RXJyb3IgPSBuZXcgRXJyb3IoJzEnKTsKLSAgY29uc3Qgc2Vjb25kRXJyb3IgPSBu
ZXcgRXJyb3IoJzInKTsKLQotICBjb25zdCBjbG9zZWQgPSBuZXcgUmVhZGFibGVTdHJlYW0oewot
ICAgIHB1bGwoYykgewotICAgICAgYy5lcnJvcihmaXJzdEVycm9yKTsKLSAgICAgIHN0YXJ0Q2Fs
bGVkID0gdHJ1ZTsKLSAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChzZWNvbmRFcnJvcik7Ci0g
ICAgfQotICB9KS5nZXRSZWFkZXIoKS5jbG9zZWQ7Ci0KLSAgcmV0dXJuIGNsb3NlZC5jYXRjaChl
ID0+IHsKLSAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhl
LCBmaXJzdEVycm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZmlyc3QgZXJyb3In
KTsKLSAgfSk7Ci0KLX0sICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhbmQgcmV0
dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHB1bGwgc2hvdWxkIGNhdXNlIHRoZSBzdHJl
YW0gdG8gZXJyb3IgJyArCi0gICAnd2l0aCB0aGUgZmlyc3QgZXJyb3InKTsKLQotZG9uZSgpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3Jl
YWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNjc2ZTA2ODZhZmNhZWJjOTNmMmU0ODFlMGYxNTgyOTdmNTM3MTExYy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0
cmVhbXMvYnJhbmQtY2hlY2tzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICsw
LDAgQEAKLQotUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3Rv
ciBpbmRpcmVjdGx5IAotUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIg
Y29uc3RydWN0b3IgaW5kaXJlY3RseSAKLVBBU1MgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmNh
bmNlbCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5
cGUuZ2V0UmVhZGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
LnByb3RvdHlwZS50ZWUgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJl
YW1SZWFkZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjayBvbiBpdHMgYXJndW1lbnQgCi1QQVNTIFJl
YWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5jbG9zZWQgZW5mb3JjZXMgYSBicmFuZCBjaGVj
ayAKLVBBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBh
IGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVhZCBl
bmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5
cGUucmVsZWFzZUxvY2sgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJl
YW1Db250cm9sbGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50IAotUEFT
UyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgY2FuJ3QgYmUgZ2l2ZW4gYSBmdWxseS1jb25zdHJ1
Y3RlZCBSZWFkYWJsZVN0cmVhbSAKLVBBU1MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3Rv
dHlwZS5jbG9zZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXIucHJvdG90eXBlLmVucXVldWUgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1Mg
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5lcnJvciBlbmZvcmNlcyBhIGJyYW5k
IGNoZWNrIAotRkFJTCBMb2FkIGJyYW5kLWNoZWNrcy5qcyB3aXRoIFNoYXJlZFdvcmtlciBhc3Nl
cnRfdW5yZWFjaGVkOiBTaGFyZWRXb3JrZXIgaXMgdW5hdmFpbGFibGUgUmVhY2hlZCB1bnJlYWNo
YWJsZSBjb2RlCi1GQUlMIFVudGl0bGVkIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFs
dWF0aW5nICduYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdpc3RyYXRpb24nKQotUEFTUyBD
YW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5IAot
UEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgY29uc3RydWN0b3IgaW5k
aXJlY3RseSAKLVBBU1MgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBh
IGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuZ2V0UmVhZGVyIGVu
Zm9yY2VzIGEgYnJhbmQgY2hlY2sgCi1QQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS50ZWUg
ZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIgZW5mb3Jj
ZXMgYSBicmFuZCBjaGVjayBvbiBpdHMgYXJndW1lbnQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtUmVh
ZGVyLnByb3RvdHlwZS5jbG9zZWQgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFi
bGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAot
UEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVhZCBlbmZvcmNlcyBhIGJyYW5k
IGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVsZWFzZUxvY2sg
ZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIGVu
Zm9yY2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50IAotUEFTUyBSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXIgY2FuJ3QgYmUgZ2l2ZW4gYSBmdWxseS1jb25zdHJ1Y3RlZCBSZWFkYWJsZVN0
cmVhbSAKLVBBU1MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5jbG9zZSBlbmZv
cmNlcyBhIGJyYW5kIGNoZWNrIAotUEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90
eXBlLmVucXVldWUgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKLVBBU1MgUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyLnByb3RvdHlwZS5lcnJvciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVh
bXMvYnJhbmQtY2hlY2tzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkZmVk
MTIzZDc2ZGI4N2Y3YjMyMDE5Y2MxNjNiMzM0MmYxYTJkOGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
cnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImJyYW5k
LWNoZWNrcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotd29ya2VyX3Rl
c3QoJ2JyYW5kLWNoZWNrcy5qcycpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0
cmVhbXMvYnJhbmQtY2hlY2tzLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5qcwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzI1NTNjZjkyZjUyZmQ2ZGMwZTcyM2JhZjZm
NzNkNzNlZWI4ZjVmMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMt
YXBpL3JlYWRhYmxlLXN0cmVhbXMvYnJhbmQtY2hlY2tzLmpzCisrKyAvZGV2L251bGwKQEAgLTEs
MTUxICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgewot
ICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzJyk7Ci0gIHNl
bGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOwotfQotCi1sZXQg
UmVhZGFibGVTdHJlYW1SZWFkZXI7Ci1sZXQgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyOwotCi10
ZXN0KCgpID0+IHsKLQotICAvLyBJdCdzIG5vdCBleHBvc2VkIGdsb2JhbGx5LCBidXQgd2UgdGVz
dCBhIGZldyBvZiBpdHMgcHJvcGVydGllcyBoZXJlLgotICBSZWFkYWJsZVN0cmVhbVJlYWRlciA9
IChuZXcgUmVhZGFibGVTdHJlYW0oKSkuZ2V0UmVhZGVyKCkuY29uc3RydWN0b3I7Ci0KLX0sICdD
YW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5Jyk7
Ci0KLXRlc3QoKCkgPT4gewotCi0gIC8vIEl0J3Mgbm90IGV4cG9zZWQgZ2xvYmFsbHksIGJ1dCB3
ZSB0ZXN0IGEgZmV3IG9mIGl0cyBwcm9wZXJ0aWVzIGhlcmUuCi0gIG5ldyBSZWFkYWJsZVN0cmVh
bSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyID0gYy5j
b25zdHJ1Y3RvcjsKLSAgICB9Ci0gIH0pOwotCi19LCAnQ2FuIGdldCB0aGUgUmVhZGFibGVTdHJl
YW1Db250cm9sbGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0bHknKTsKLQotZnVuY3Rpb24gZmFrZVJl
YWRhYmxlU3RyZWFtKCkgewotICByZXR1cm4gewotICAgIGNhbmNlbCgpIHsgcmV0dXJuIFByb21p
c2UucmVzb2x2ZSgpOyB9LAotICAgIGdldFJlYWRlcigpIHsgcmV0dXJuIG5ldyBSZWFkYWJsZVN0
cmVhbVJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0oKSk7IH0sCi0gICAgcGlwZVRocm91Z2gob2Jq
KSB7IHJldHVybiBvYmoucmVhZGFibGU7IH0sCi0gICAgcGlwZVRvKCkgeyByZXR1cm4gUHJvbWlz
ZS5yZXNvbHZlKCk7IH0sCi0gICAgdGVlKCkgeyByZXR1cm4gW3JlYWxSZWFkYWJsZVN0cmVhbSgp
LCByZWFsUmVhZGFibGVTdHJlYW0oKV07IH0KLSAgfTsKLX0KLQotZnVuY3Rpb24gcmVhbFJlYWRh
YmxlU3RyZWFtKCkgewotICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci19Ci0KLWZ1bmN0
aW9uIGZha2VSZWFkYWJsZVN0cmVhbVJlYWRlcigpIHsKLSAgcmV0dXJuIHsKLSAgICBnZXQgY2xv
c2VkKCkgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7IH0sCi0gICAgY2FuY2VsKCkgeyByZXR1
cm4gUHJvbWlzZS5yZXNvbHZlKCk7IH0sCi0gICAgcmVhZCgpIHsgcmV0dXJuIFByb21pc2UucmVz
b2x2ZSh7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSk7IH0sCi0gICAgcmVsZWFzZUxv
Y2soKSB7IHJldHVybjsgfQotICB9OwotfQotCi1mdW5jdGlvbiBmYWtlUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyKCkgewotICByZXR1cm4gewotICAgIGNsb3NlKCkgeyB9LAotICAgIGVucXVldWUo
KSB7IH0sCi0gICAgZXJyb3IoKSB7IH0KLSAgfTsKLX0KLQotcHJvbWlzZV90ZXN0KHQgPT4gewot
Ci0gIHJldHVybiBtZXRob2RSZWplY3RzKHQsIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ2Nh
bmNlbCcsIGZha2VSZWFkYWJsZVN0cmVhbSgpKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtLnByb3Rv
dHlwZS5jYW5jZWwgZW5mb3JjZXMgYSBicmFuZCBjaGVjaycpOwotCi10ZXN0KCgpID0+IHsKLQot
ICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLCAnZ2V0UmVhZGVyJywgZmFr
ZVJlYWRhYmxlU3RyZWFtKCkpOwotCi19LCAnUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmdldFJl
YWRlciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIG1ldGhv
ZFRocm93cyhSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUsICd0ZWUnLCBmYWtlUmVhZGFibGVTdHJl
YW0oKSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUudGVlIGVuZm9yY2VzIGEgYnJh
bmQgY2hlY2snKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihmYWtlUmVhZGFibGVTdHJlYW0o
KSksCi0gICAgICAgICAgICAgICAgJ0NvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVy
IHNob3VsZCB0aHJvdycpOwotCi19LCAnUmVhZGFibGVTdHJlYW1SZWFkZXIgZW5mb3JjZXMgYSBi
cmFuZCBjaGVjayBvbiBpdHMgYXJndW1lbnQnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0g
IHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgZ2V0dGVyUmVqZWN0cyh0LCBSZWFkYWJsZVN0cmVh
bVJlYWRlci5wcm90b3R5cGUsICdjbG9zZWQnLCBmYWtlUmVhZGFibGVTdHJlYW1SZWFkZXIoKSks
Ci0gICAgZ2V0dGVyUmVqZWN0cyh0LCBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUsICdj
bG9zZWQnLCByZWFsUmVhZGFibGVTdHJlYW0oKSkKLSAgXSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVh
bVJlYWRlci5wcm90b3R5cGUuY2xvc2VkIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKLQotcHJv
bWlzZV90ZXN0KHQgPT4gewotCi0gIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgbWV0aG9kUmVq
ZWN0cyh0LCBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUsICdjYW5jZWwnLCBmYWtlUmVh
ZGFibGVTdHJlYW1SZWFkZXIoKSksCi0gICAgbWV0aG9kUmVqZWN0cyh0LCBSZWFkYWJsZVN0cmVh
bVJlYWRlci5wcm90b3R5cGUsICdjYW5jZWwnLCByZWFsUmVhZGFibGVTdHJlYW0oKSkKLSAgXSk7
Ci0KLX0sICdSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUuY2FuY2VsIGVuZm9yY2VzIGEg
YnJhbmQgY2hlY2snKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIHJldHVybiBQcm9taXNl
LmFsbChbCi0gICAgbWV0aG9kUmVqZWN0cyh0LCBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5
cGUsICdyZWFkJywgZmFrZVJlYWRhYmxlU3RyZWFtUmVhZGVyKCkpLAotICAgIG1ldGhvZFJlamVj
dHModCwgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLCAncmVhZCcsIHJlYWxSZWFkYWJs
ZVN0cmVhbSgpKQotICBdKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZS5y
ZWFkIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgbWV0aG9k
VGhyb3dzKFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZSwgJ3JlbGVhc2VMb2NrJywgZmFr
ZVJlYWRhYmxlU3RyZWFtUmVhZGVyKCkpOwotICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW1S
ZWFkZXIucHJvdG90eXBlLCAncmVsZWFzZUxvY2snLCByZWFsUmVhZGFibGVTdHJlYW0oKSk7Ci0K
LX0sICdSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVsZWFzZUxvY2sgZW5mb3JjZXMg
YSBicmFuZCBjaGVjaycpOwotCi10ZXN0KCgpID0+IHsKLQotICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcihmYWtlUmVhZGFi
bGVTdHJlYW0oKSksCi0gICAgICAgICAgICAgICAgJ0NvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlciBzaG91bGQgdGhyb3cnKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtQ29udHJv
bGxlciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIG9uIGl0cyBhcmd1bWVudCcpOwotCi10ZXN0KCgp
ID0+IHsKLQotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRh
YmxlU3RyZWFtQ29udHJvbGxlcihyZWFsUmVhZGFibGVTdHJlYW0oKSksCi0gICAgICAgICAgICAg
ICAgJ0NvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBzaG91bGQgdGhyb3cn
KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBjYW5cJ3QgYmUgZ2l2ZW4gYSBmdWxs
eS1jb25zdHJ1Y3RlZCBSZWFkYWJsZVN0cmVhbScpOwotCi10ZXN0KCgpID0+IHsKLQotICBtZXRo
b2RUaHJvd3MoUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZSwgJ2Nsb3NlJywgZmFr
ZVJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcigpKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtQ29udHJv
bGxlci5wcm90b3R5cGUuY2xvc2UgZW5mb3JjZXMgYSBicmFuZCBjaGVjaycpOwotCi10ZXN0KCgp
ID0+IHsKLQotICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlw
ZSwgJ2VucXVldWUnLCBmYWtlUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKCkpOwotCi19LCAnUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5lbnF1ZXVlIGVuZm9yY2VzIGEgYnJhbmQg
Y2hlY2snKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFt
Q29udHJvbGxlci5wcm90b3R5cGUsICdlcnJvcicsIGZha2VSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIoKSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLmVycm9yIGVu
Zm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKLQotZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1z
dHJlYW1zL2NhbmNlbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLWV4cGVj
dGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzk5NGIzYjk0NmUyMTMwMTMz
NjY4NmZkODA0YzczYWFhMmQxMmNlNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDI0ICswLDAgQEAKLQotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRp
b246IGludGVncmF0aW9uIHRlc3Qgb24gYW4gaW5maW5pdGUgc3RyZWFtIGRlcml2ZWQgZnJvbSBh
IHJhbmRvbSBwdXNoIHNvdXJjZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBj
YW5jZWwocmVhc29uKSBzaG91bGQgcGFzcyB0aHJvdWdoIHRoZSBnaXZlbiByZWFzb24gdG8gdGhl
IHVuZGVybHlpbmcgc291cmNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGNh
bmNlbCgpIG9uIGEgbG9ja2VkIHN0cmVhbSBzaG91bGQgZmFpbCBhbmQgbm90IGNhbGwgdGhlIHVu
ZGVybHlpbmcgc291cmNlIGNhbmNlbCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9u
OiBzaG91bGQgZnVsZmlsbCBwcm9taXNlIHdoZW4gY2FuY2VsIGNhbGxiYWNrIHdlbnQgZmluZSAK
LVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiByZXR1cm5pbmcgYSB2YWx1ZSBmcm9t
IHRoZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBzaG91bGQgbm90IGFmZmVjdCB0aGUgZnVs
ZmlsbG1lbnQgdmFsdWUgb2YgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNh
bmNlbCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBzaG91bGQgcmVqZWN0IHBy
b21pc2Ugd2hlbiBjYW5jZWwgY2FsbGJhY2sgcmFpc2VzIGFuIGV4Y2VwdGlvbiAKLVBBU1MgUmVh
ZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2UncyBjYW5j
ZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUg
c3RyZWFtJ3MgY2FuY2VsIHNob3VsZCBmdWxmaWxsIHdoZW4gdGhhdCBvbmUgZG9lcyAoMSkgCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVybHlpbmcgc291cmNl
J3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQg
YnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBzaG91bGQgZnVsZmlsbCB3aGVuIHRoYXQgb25lIGRvZXMg
KDIpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5aW5n
IHNvdXJjZSdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRoZSBwcm9taXNlIHJl
dHVybmVkIGJ5IHRoZSBzdHJlYW0ncyBjYW5jZWwgc2hvdWxkIHJlamVjdCB3aGVuIHRoYXQgb25l
IGRvZXMgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsbGluZyBiZWZv
cmUgc3RhcnQgZmluaXNoZXMgc2hvdWxkIHByZXZlbnQgcHVsbCgpIGZyb20gYmVpbmcgY2FsbGVk
IAotRkFJTCBMb2FkIGNhbmNlbC5qcyB3aXRoIFNoYXJlZFdvcmtlciBhc3NlcnRfdW5yZWFjaGVk
OiBTaGFyZWRXb3JrZXIgaXMgdW5hdmFpbGFibGUgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCi1G
QUlMIFVudGl0bGVkIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICduYXZp
Z2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdpc3RyYXRpb24nKQotUEFTUyBSZWFkYWJsZVN0cmVh
bSBjYW5jZWxsYXRpb246IGludGVncmF0aW9uIHRlc3Qgb24gYW4gaW5maW5pdGUgc3RyZWFtIGRl
cml2ZWQgZnJvbSBhIHJhbmRvbSBwdXNoIHNvdXJjZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2Fu
Y2VsbGF0aW9uOiBjYW5jZWwocmVhc29uKSBzaG91bGQgcGFzcyB0aHJvdWdoIHRoZSBnaXZlbiBy
ZWFzb24gdG8gdGhlIHVuZGVybHlpbmcgc291cmNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5j
ZWxsYXRpb246IGNhbmNlbCgpIG9uIGEgbG9ja2VkIHN0cmVhbSBzaG91bGQgZmFpbCBhbmQgbm90
IGNhbGwgdGhlIHVuZGVybHlpbmcgc291cmNlIGNhbmNlbCAKLVBBU1MgUmVhZGFibGVTdHJlYW0g
Y2FuY2VsbGF0aW9uOiBzaG91bGQgZnVsZmlsbCBwcm9taXNlIHdoZW4gY2FuY2VsIGNhbGxiYWNr
IHdlbnQgZmluZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiByZXR1cm5pbmcg
YSB2YWx1ZSBmcm9tIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBzaG91bGQgbm90IGFm
ZmVjdCB0aGUgZnVsZmlsbG1lbnQgdmFsdWUgb2YgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhl
IHN0cmVhbSdzIGNhbmNlbCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBzaG91
bGQgcmVqZWN0IHByb21pc2Ugd2hlbiBjYW5jZWwgY2FsbGJhY2sgcmFpc2VzIGFuIGV4Y2VwdGlv
biAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBz
b3VyY2UncyBjYW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSByZXR1
cm5lZCBieSB0aGUgc3RyZWFtJ3MgY2FuY2VsIHNob3VsZCBmdWxmaWxsIHdoZW4gdGhhdCBvbmUg
ZG9lcyAoMSkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVy
bHlpbmcgc291cmNlJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21p
c2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBzaG91bGQgZnVsZmlsbCB3aGVuIHRo
YXQgb25lIGRvZXMgKDIpIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRo
ZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRo
ZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW0ncyBjYW5jZWwgc2hvdWxkIHJlamVjdCB3
aGVuIHRoYXQgb25lIGRvZXMgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2Fu
Y2VsbGluZyBiZWZvcmUgc3RhcnQgZmluaXNoZXMgc2hvdWxkIHByZXZlbnQgcHVsbCgpIGZyb20g
YmVpbmcgY2FsbGVkIAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBp
L3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGY3Njc0MjlmMTcwMjkyMzZkYzRiNDEwOGQ0NTQ0NTBjMDdlYzZhNGIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2NhbmNl
bC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlcnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9ycy11dGlscy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iY2FuY2VsLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci13b3JrZXJfdGVzdCgnY2FuY2Vs
LmpzJyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuanMg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBp
L3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBmNTAxNGMyYzk0ZDI3MWUzMThjMGVjY2IyY2Y4MDNhNjAyNTNhMWUxLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwu
anMKKysrIC9kZXYvbnVsbApAQCAtMSwyNDIgKzAsMCBAQAotJ3VzZSBzdHJpY3QnOwotCi1pZiAo
c2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2Vz
L3Rlc3QtdXRpbHMuanMnKTsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvcnMt
dXRpbHMuanMnKTsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzJyk7Ci19Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcmFuZG9tU291cmNl
ID0gbmV3IFJhbmRvbVB1c2hTb3VyY2UoKTsKLQotICBsZXQgY2FuY2VsbGF0aW9uRmluaXNoZWQg
PSBmYWxzZTsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMp
IHsKLSAgICAgIHJhbmRvbVNvdXJjZS5vbmRhdGEgPSBjLmVucXVldWUuYmluZChjKTsKLSAgICAg
IHJhbmRvbVNvdXJjZS5vbmVuZCA9IGMuY2xvc2UuYmluZChjKTsKLSAgICAgIHJhbmRvbVNvdXJj
ZS5vbmVycm9yID0gYy5lcnJvci5iaW5kKGMpOwotICAgIH0sCi0KLSAgICBwdWxsKCkgewotICAg
ICAgcmFuZG9tU291cmNlLnJlYWRTdGFydCgpOwotICAgIH0sCi0KLSAgICBjYW5jZWwoKSB7Ci0g
ICAgICByYW5kb21Tb3VyY2UucmVhZFN0b3AoKTsKLSAgICAgIHJhbmRvbVNvdXJjZS5vbmVuZCgp
OwotCi0gICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgICAgIHNldFRp
bWVvdXQoKCkgPT4gewotICAgICAgICAgIGNhbmNlbGxhdGlvbkZpbmlzaGVkID0gdHJ1ZTsKLSAg
ICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgIH0sIDEpOwotICAgICAgfSk7Ci0gICAgfQotICB9
KTsKLQotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICAvLyBXZSBjYWxsIGRl
bGF5IG11bHRpcGxlIHRpbWVzIHRvIGF2b2lkIGNhbmNlbGxpbmcgdG9vIGVhcmx5IGZvciB0aGUK
LSAgLy8gc291cmNlIHRvIGVucXVldWUgYXQgbGVhc3Qgb25lIGNodW5rLgotICBjb25zdCBjYW5j
ZWwgPSBkZWxheSg1KS50aGVuKCgpID0+IGRlbGF5KDUpKS50aGVuKCgpID0+IGRlbGF5KDUpKS50
aGVuKCgpID0+IHsKLSAgICBsZXQgY2FuY2VsUHJvbWlzZSA9IHJlYWRlci5jYW5jZWwoKTsKLSAg
ICBhc3NlcnRfZmFsc2UoY2FuY2VsbGF0aW9uRmluaXNoZWQsICdjYW5jZWxsYXRpb24gaW4gc291
cmNlIHNob3VsZCBoYXBwZW4gbGF0ZXInKTsKLSAgICByZXR1cm4gY2FuY2VsUHJvbWlzZTsKLSAg
fSkKLQotICByZXR1cm4gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHJzLCByZWFkZXIpLnRoZW4oY2h1
bmtzID0+IHsKLSAgICBhc3NlcnRfZ3JlYXRlcl90aGFuKGNodW5rcy5sZW5ndGgsIDAsICdhdCBs
ZWFzdCBvbmUgY2h1bmsgc2hvdWxkIGJlIHJlYWQnKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8
IGNodW5rcy5sZW5ndGg7IGkrKykgewotICAgICAgYXNzZXJ0X2VxdWFscyhjaHVua3NbaV0ubGVu
Z3RoLCAxMjgsICdjaHVuayAnICsgaSArICcgc2hvdWxkIGhhdmUgMTI4IGJ5dGVzJyk7Ci0gICAg
fQotICAgIHJldHVybiBjYW5jZWw7Ci0gIH0pLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF90cnVl
KGNhbmNlbGxhdGlvbkZpbmlzaGVkLCAnaXQgcmV0dXJucyBhIHByb21pc2UgdGhhdCBpcyBmdWxm
aWxsZWQgd2hlbiB0aGUgY2FuY2VsbGF0aW9uIGZpbmlzaGVzJyk7Ci0gIH0pOwotCi19LCAnUmVh
ZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpbnRlZ3JhdGlvbiB0ZXN0IG9uIGFuIGluZmluaXRl
IHN0cmVhbSBkZXJpdmVkIGZyb20gYSByYW5kb20gcHVzaCBzb3VyY2UnKTsKLQotdGVzdCgoKSA9
PiB7Ci0KLSAgbGV0IHJlY29yZGVkUmVhc29uOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7Ci0gICAgY2FuY2VsKHJlYXNvbikgewotICAgICAgcmVjb3JkZWRSZWFzb24gPSByZWFz
b247Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBwYXNzZWRSZWFzb24gPSBuZXcgRXJyb3IoJ1Nv
cnJ5LCBpdCBqdXN0IHdhc25cJ3QgbWVhbnQgdG8gYmUuJyk7Ci0gIHJzLmNhbmNlbChwYXNzZWRS
ZWFzb24pOwotCi0gIGFzc2VydF9lcXVhbHMocmVjb3JkZWRSZWFzb24sIHBhc3NlZFJlYXNvbiwK
LSAgICAndGhlIGVycm9yIHBhc3NlZCB0byB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2Vs
IG1ldGhvZCBzaG91bGQgZXF1YWwgdGhlIG9uZSBwYXNzZWQgdG8gdGhlIHN0cmVhbVwncyBjYW5j
ZWwnKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsKHJlYXNvbikg
c2hvdWxkIHBhc3MgdGhyb3VnaCB0aGUgZ2l2ZW4gcmVhc29uIHRvIHRoZSB1bmRlcmx5aW5nIHNv
dXJjZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICAg
IGMuY2xvc2UoKTsKLSAgICB9LAotICAgIGNhbmNlbCgpIHsKLSAgICAgIGFzc2VydF91bnJlYWNo
ZWQoJ3VuZGVybHlpbmcgc291cmNlIGNhbmNlbCgpIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxl
ZCcpOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0K
LSAgcmV0dXJuIHJzLmNhbmNlbCgpLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF91bnJlYWNoZWQo
J2NhbmNlbCgpIHNob3VsZCBiZSByZWplY3RlZCcpOwotICB9LCBlID0+IHsKLSAgICBhc3NlcnRf
ZXF1YWxzKGUubmFtZSwgJ1R5cGVFcnJvcicsICdjYW5jZWwoKSBzaG91bGQgYmUgcmVqZWN0ZWQg
d2l0aCBhIFR5cGVFcnJvcicpOwotICB9KS50aGVuKCgpID0+IHsKLSAgICByZXR1cm4gcmVhZGVy
LnJlYWQoKTsKLSAgfSkudGhlbihyZXN1bHQgPT4gewotICAgIGFzc2VydF9vYmplY3RfZXF1YWxz
KHJlc3VsdCwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAncmVhZCgpIHNob3VsZCBzdGls
bCB3b3JrIGFmdGVyIHRoZSBhdHRlbXB0ZWQgY2FuY2VsJyk7Ci0gICAgcmV0dXJuIHJlYWRlci5j
bG9zZWQ7Ci0gIH0pOwotCi19LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5jZWwo
KSBvbiBhIGxvY2tlZCBzdHJlYW0gc2hvdWxkIGZhaWwgYW5kIG5vdCBjYWxsIHRoZSB1bmRlcmx5
aW5nIHNvdXJjZSBjYW5jZWwnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgY2Fu
Y2VsUmVjZWl2ZWQgPSBmYWxzZTsKLSAgY29uc3QgY2FuY2VsUmVhc29uID0gbmV3IEVycm9yKCdJ
IGFtIHRpcmVkIG9mIHRoaXMgc3RyZWFtLCBJIHByZWZlciB0byBjYW5jZWwgaXQnKTsKLSAgY29u
c3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIGNhbmNlbChyZWFzb24pIHsKLSAgICAg
IGNhbmNlbFJlY2VpdmVkID0gdHJ1ZTsKLSAgICAgIGFzc2VydF9lcXVhbHMocmVhc29uLCBjYW5j
ZWxSZWFzb24sICdjYW5jZWxsYXRpb24gcmVhc29uIGdpdmVuIHRvIHRoZSB1bmRlcmx5aW5nIHNv
dXJjZSBzaG91bGQgYmUgZXF1YWwgdG8gdGhlIG9uZSBwYXNzZWQnKTsKLSAgICB9Ci0gIH0pOwot
Ci0gIHJldHVybiBycy5jYW5jZWwoY2FuY2VsUmVhc29uKS50aGVuKCgpID0+IHsKLSAgICBhc3Nl
cnRfdHJ1ZShjYW5jZWxSZWNlaXZlZCk7Ci0gIH0pOwotCi19LCAnUmVhZGFibGVTdHJlYW0gY2Fu
Y2VsbGF0aW9uOiBzaG91bGQgZnVsZmlsbCBwcm9taXNlIHdoZW4gY2FuY2VsIGNhbGxiYWNrIHdl
bnQgZmluZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKLSAgICBjYW5jZWwoKSB7Ci0gICAgICByZXR1cm4gJ0hlbGxvJzsKLSAg
ICB9Ci0gIH0pOwotCi0gIHJldHVybiBycy5jYW5jZWwoKS50aGVuKHYgPT4gewotICAgIGFzc2Vy
dF9lcXVhbHModiwgdW5kZWZpbmVkLCAnY2FuY2VsKCkgcmV0dXJuIHZhbHVlIHNob3VsZCBiZSBm
dWxmaWxsZWQgd2l0aCB1bmRlZmluZWQnKTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBj
YW5jZWxsYXRpb246IHJldHVybmluZyBhIHZhbHVlIGZyb20gdGhlIHVuZGVybHlpbmcgc291cmNl
XCdzIGNhbmNlbCBzaG91bGQgbm90IGFmZmVjdCB0aGUgZnVsZmlsbG1lbnQgdmFsdWUgb2YgdGhl
IHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbVwncyBjYW5jZWwnKTsKLQotcHJvbWlzZV90
ZXN0KCgpID0+IHsKLQotICBjb25zdCB0aHJvd25FcnJvciA9IG5ldyBFcnJvcigndGVzdCcpOwot
ICBsZXQgY2FuY2VsQ2FsbGVkID0gZmFsc2U7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oewotICAgIGNhbmNlbCgpIHsKLSAgICAgIGNhbmNlbENhbGxlZCA9IHRydWU7Ci0gICAg
ICB0aHJvdyB0aHJvd25FcnJvcjsKLSAgICB9Ci0gIH0pOwotCi0gIHJldHVybiBycy5jYW5jZWwo
J3Rlc3QnKS50aGVuKCgpID0+IHsKLSAgICBhc3NlcnRfdW5yZWFjaGVkKCdjYW5jZWwgc2hvdWxk
IHJlamVjdCcpOwotICB9LCBlID0+IHsKLSAgICBhc3NlcnRfdHJ1ZShjYW5jZWxDYWxsZWQpOwot
ICAgIGFzc2VydF9lcXVhbHMoZSwgdGhyb3duRXJyb3IpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxl
U3RyZWFtIGNhbmNlbGxhdGlvbjogc2hvdWxkIHJlamVjdCBwcm9taXNlIHdoZW4gY2FuY2VsIGNh
bGxiYWNrIHJhaXNlcyBhbiBleGNlcHRpb24nKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQot
ICBjb25zdCBjYW5jZWxSZWFzb24gPSBuZXcgRXJyb3IoJ3Rlc3QnKTsKLQotICBjb25zdCBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgY2FuY2VsKGVycm9yKSB7Ci0gICAgICBhc3NlcnRf
ZXF1YWxzKGVycm9yLCBjYW5jZWxSZWFzb24pOwotICAgICAgcmV0dXJuIGRlbGF5KDEpOwotICAg
IH0KLSAgfSk7Ci0KLSAgcmV0dXJuIHJzLmNhbmNlbChjYW5jZWxSZWFzb24pOwotCi19LCAnUmVh
ZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2Fu
Y2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhl
IHN0cmVhbVwncyBjYW5jZWwgc2hvdWxkIGZ1bGZpbGwgd2hlbiB0aGF0IG9uZSBkb2VzICgxKScp
OwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCByZXNvbHZlU291cmNlQ2FuY2VsUHJv
bWlzZTsKLSAgbGV0IHNvdXJjZUNhbmNlbFByb21pc2VIYXNGdWxmaWxsZWQgPSBmYWxzZTsKLQot
ICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgY2FuY2VsKCkgewotICAgICAg
Y29uc3Qgc291cmNlQ2FuY2VsUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gcmVzb2x2
ZVNvdXJjZUNhbmNlbFByb21pc2UgPSByZXNvbHZlKTsKLQotICAgICAgc291cmNlQ2FuY2VsUHJv
bWlzZS50aGVuKCgpID0+IHsKLSAgICAgICAgc291cmNlQ2FuY2VsUHJvbWlzZUhhc0Z1bGZpbGxl
ZCA9IHRydWU7Ci0gICAgICB9KTsKLQotICAgICAgcmV0dXJuIHNvdXJjZUNhbmNlbFByb21pc2U7
Ci0gICAgfQotICB9KTsKLQotICBzZXRUaW1lb3V0KCgpID0+IHJlc29sdmVTb3VyY2VDYW5jZWxQ
cm9taXNlKCdIZWxsbycpLCAxKTsKLQotICByZXR1cm4gcnMuY2FuY2VsKCkudGhlbih2YWx1ZSA9
PiB7Ci0gICAgYXNzZXJ0X3RydWUoc291cmNlQ2FuY2VsUHJvbWlzZUhhc0Z1bGZpbGxlZCwgJ2Nh
bmNlbCgpIHJldHVybiB2YWx1ZSBzaG91bGQgYmUgZnVsZmlsbGVkIG9ubHkgYWZ0ZXIgdGhlIHBy
b21pc2UgcmV0dXJuZWQgYnkgdGhlIHVuZGVybHlpbmcgc291cmNlXCdzIGNhbmNlbCcpOwotICAg
IGFzc2VydF9lcXVhbHModmFsdWUsIHVuZGVmaW5lZCwgJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBz
aG91bGQgYmUgZnVsZmlsbGVkIHdpdGggdW5kZWZpbmVkJyk7Ci0gIH0pOwotCi19LCAnUmVhZGFi
bGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2Vs
IG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0
cmVhbVwncyBjYW5jZWwgc2hvdWxkIGZ1bGZpbGwgd2hlbiB0aGF0IG9uZSBkb2VzICgyKScpOwot
Ci1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCByZWplY3RTb3VyY2VDYW5jZWxQcm9taXNl
OwotICBsZXQgc291cmNlQ2FuY2VsUHJvbWlzZUhhc1JlamVjdGVkID0gZmFsc2U7Ci0KLSAgY29u
c3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIGNhbmNlbCgpIHsKLSAgICAgIGNvbnN0
IHNvdXJjZUNhbmNlbFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiBy
ZWplY3RTb3VyY2VDYW5jZWxQcm9taXNlID0gcmVqZWN0KTsKLQotICAgICAgc291cmNlQ2FuY2Vs
UHJvbWlzZS5jYXRjaCgoKSA9PiB7Ci0gICAgICAgIHNvdXJjZUNhbmNlbFByb21pc2VIYXNSZWpl
Y3RlZCA9IHRydWU7Ci0gICAgICB9KTsKLQotICAgICAgcmV0dXJuIHNvdXJjZUNhbmNlbFByb21p
c2U7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBlcnJvckluQ2FuY2VsID0gbmV3IEVycm9yKCdT
b3JyeSwgaXQganVzdCB3YXNuXCd0IG1lYW50IHRvIGJlLicpOwotCi0gIHNldFRpbWVvdXQoKCkg
PT4gcmVqZWN0U291cmNlQ2FuY2VsUHJvbWlzZShlcnJvckluQ2FuY2VsKSwgMSk7Ci0KLSAgcmV0
dXJuIHJzLmNhbmNlbCgpLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF91bnJlYWNoZWQoJ2NhbmNl
bCgpIHJldHVybiB2YWx1ZSBzaG91bGQgYmUgcmVqZWN0ZWQnKTsKLSAgfSwgciA9PiB7Ci0gICAg
YXNzZXJ0X3RydWUoc291cmNlQ2FuY2VsUHJvbWlzZUhhc1JlamVjdGVkLCAnY2FuY2VsKCkgcmV0
dXJuIHZhbHVlIHNob3VsZCBiZSByZWplY3RlZCBvbmx5IGFmdGVyIHRoZSBwcm9taXNlIHJldHVy
bmVkIGJ5IHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyBjYW5jZWwnKTsKLSAgICBhc3NlcnRfZXF1
YWxzKHIsIGVycm9ySW5DYW5jZWwsICdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIHJl
amVjdGVkIHdpdGggdGhlIHVuZGVybHlpbmcgc291cmNlXCdzIHJlamVjdGlvbiByZWFzb24nKTsK
LSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5
aW5nIHNvdXJjZVwncyBjYW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlz
ZSByZXR1cm5lZCBieSB0aGUgc3RyZWFtXCdzIGNhbmNlbCBzaG91bGQgcmVqZWN0IHdoZW4gdGhh
dCBvbmUgZG9lcycpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydCgpIHsKLSAgICAgIHJldHVybiBuZXcgUHJvbWlz
ZSgoKSA9PiB7fSk7Ci0gICAgfSwKLSAgICBwdWxsKCkgewotICAgICAgYXNzZXJ0X3VucmVhY2hl
ZCgncHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQnKTsKLSAgICB9Ci0gIH0pOwotCi0g
IHJldHVybiBQcm9taXNlLmFsbChbcnMuY2FuY2VsKCksIHJzLmdldFJlYWRlcigpLmNsb3NlZF0p
OwotCi19LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5jZWxsaW5nIGJlZm9yZSBz
dGFydCBmaW5pc2hlcyBzaG91bGQgcHJldmVudCBwdWxsKCkgZnJvbSBiZWluZyBjYWxsZWQnKTsK
LQotZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3Ry
YXRlZ3ktaW50ZWdyYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1
ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24tZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmYTRlMWRmOTkxYzE3NzhkNGNlM2MxOWI5YTE3NGU2Nzc3MWE4ODY3Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3Ry
ZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLQotUEFTUyBDYW4gY29uc3RydWN0IGEgcmVhZGFi
bGUgc3RyZWFtIHdpdGggYSB2YWxpZCBDb3VudFF1ZXVpbmdTdHJhdGVneSAKLVBBU1MgQ29ycmVj
dGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIncyBkZXNpcmVkU2l6ZSBwcm9w
ZXJ0eSAoSFdNID0gMCkgCi1QQVNTIENvcnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyJ3MgZGVzaXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDEpIAotUEFTUyBDb3JyZWN0
bHkgZ292ZXJucyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcidzIGRlc2lyZWRTaXplIHByb3Bl
cnR5IChIV00gPSA0KSAKLUZBSUwgTG9hZCBjb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0
aW9uLmpzIHdpdGggU2hhcmVkV29ya2VyIGFzc2VydF91bnJlYWNoZWQ6IFNoYXJlZFdvcmtlciBp
cyB1bmF2YWlsYWJsZSBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKLUZBSUwgVW50aXRsZWQgdW5k
ZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ25hdmlnYXRvci5zZXJ2aWNlV29y
a2VyLmdldFJlZ2lzdHJhdGlvbicpCi1QQVNTIENhbiBjb25zdHJ1Y3QgYSByZWFkYWJsZSBzdHJl
YW0gd2l0aCBhIHZhbGlkIENvdW50UXVldWluZ1N0cmF0ZWd5IAotUEFTUyBDb3JyZWN0bHkgZ292
ZXJucyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcidzIGRlc2lyZWRTaXplIHByb3BlcnR5IChI
V00gPSAwKSAKLVBBU1MgQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIncyBkZXNpcmVkU2l6ZSBwcm9wZXJ0eSAoSFdNID0gMSkgCi1QQVNTIENvcnJlY3RseSBnb3Zl
cm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyJ3MgZGVzaXJlZFNpemUgcHJvcGVydHkgKEhX
TSA9IDQpIAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJh
dGVneS1pbnRlZ3JhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3Ry
YXRlZ3ktaW50ZWdyYXRpb24uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmMz
ODE2NmMzMDM1ODg4NjVhZDliNDRkYTFhOTg5OWMxZmM3NmQ2NC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWlu
Zy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwv
c2NyaXB0PgotCi08c2NyaXB0IHNyYz0iY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlv
bi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotd29ya2VyX3Rlc3QoJ2Nv
dW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uanMnKTsKLTwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
LWFwaS9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24u
anMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMt
YXBpL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5q
cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI5YTFhYTJiYTYzMWVkYmI5ZGUxODNm
MTA2NmU2M2EzOTI3N2ZjZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlv
bi5qcworKysgL2Rldi9udWxsCkBAIC0xLDIxMyArMCwwIEBACi0ndXNlIHN0cmljdCc7Ci0KLWlm
IChzZWxmLmltcG9ydFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0KLXRlc3QoKCkgPT4gewotCi0gIG5ldyBSZWFkYWJsZVN0
cmVhbSh7fSwgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KSk7
Ci0KLX0sICdDYW4gY29uc3RydWN0IGEgcmVhZGFibGUgc3RyZWFtIHdpdGggYSB2YWxpZCBDb3Vu
dFF1ZXVpbmdTdHJhdGVneScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBjb250
cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgKLSAgICB7Ci0gICAgICBz
dGFydChjKSB7Ci0gICAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgICAgfQotICAgIH0sCi0gICAg
bmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMCB9KQotICApOwotICBj
b25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xs
ZXIuZGVzaXJlZFNpemUsIDAsICcwIHJlYWRzLCAwIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91
bGQgYmUgMCcpOwotICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKLSAgYXNzZXJ0X2VxdWFscyhj
b250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzAgcmVhZHMsIDEgZW5xdWV1ZTogZGVzaXJlZFNp
emUgc2hvdWxkIGJlIC0xJyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOwotICBhc3NlcnRf
ZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0yLCAnMCByZWFkcywgMiBlbnF1ZXVlczog
ZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0yJyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpOwot
ICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0zLCAnMCByZWFkcywgMyBl
bnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0zJyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1
ZSgnZCcpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC00LCAnMCBy
ZWFkcywgNCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC00Jyk7Ci0KLSAgcmV0dXJu
IHJlYWRlci5yZWFkKCkKLSAgICAudGhlbihyZXN1bHQgPT4gewotICAgICAgYXNzZXJ0X29iamVj
dF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAnMXN0IHJlYWQgZ2l2ZXMgYmFjayB0aGUgMXN0IGNodW5rIGVucXVl
dWVkIChxdWV1ZSBub3cgY29udGFpbnMgMyBjaHVua3MpJyk7Ci0gICAgICByZXR1cm4gcmVhZGVy
LnJlYWQoKTsKLSAgICB9KQotICAgIC50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFsc2UgfSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICcybmQgcmVhZCBnaXZlcyBiYWNrIHRoZSAybmQgY2h1bmsgZW5x
dWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAyIGNodW5rcyknKTsKLSAgICAgIHJldHVybiByZWFk
ZXIucmVhZCgpOwotICAgIH0pCi0gICAgLnRoZW4ocmVzdWx0ID0+IHsKLSAgICAgIGFzc2VydF9v
YmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxzZSB9LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJzNyZCByZWFkIGdpdmVzIGJhY2sgdGhlIDNyZCBjaHVuayBl
bnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDEgY2h1bmspJyk7Ci0KLSAgICAgIGFzc2VydF9l
cXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICczIHJlYWRzLCA0IGVucXVldWVzOiBk
ZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKLSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZScp
OwotICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMiwgJzMgcmVh
ZHMsIDUgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMicpOwotCi0gICAgICByZXR1
cm4gcmVhZGVyLnJlYWQoKTsKLSAgICB9KQotICAgIC50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdkJywgZG9uZTogZmFsc2UgfSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICc0dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA0dGgg
Y2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAxIGNodW5rcyknKTsKLSAgICAgIHJl
dHVybiByZWFkZXIucmVhZCgpOwotCi0gICAgfSkudGhlbihyZXN1bHQgPT4gewotICAgICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZScsIGRvbmU6IGZhbHNlIH0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAnNXRoIHJlYWQgZ2l2ZXMgYmFjayB0aGUgNXRoIGNo
dW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMCBjaHVua3MpJyk7Ci0KLSAgICAgIGFz
c2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzUgcmVhZHMsIDUgZW5xdWV1
ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7Ci0gICAgICBjb250cm9sbGVyLmVucXVldWUo
J2YnKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICc1
IHJlYWRzLCA2IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKLSAgICAgIGNv
bnRyb2xsZXIuZW5xdWV1ZSgnZycpOwotICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRl
c2lyZWRTaXplLCAtMiwgJzUgcmVhZHMsIDcgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBi
ZSAtMicpOwotICAgIH0pOwotCi19LCAnQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXJcJ3MgZGVzaXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDApJyk7Ci0KLXByb21p
c2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKAotICAgIHsKLSAgICAgIHN0YXJ0KGMpIHsKLSAgICAgICAgY29udHJvbGxl
ciA9IGM7Ci0gICAgICB9Ci0gICAgfSwKLSAgICBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBo
aWdoV2F0ZXJNYXJrOiAxIH0pCi0gICk7Ci0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigp
OwotCi0gIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJzAgcmVhZHMs
IDAgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAxJyk7Ci0gIGNvbnRyb2xsZXIuZW5x
dWV1ZSgnYScpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICcw
IHJlYWRzLCAxIGVucXVldWU6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7Ci0gIGNvbnRyb2xs
ZXIuZW5xdWV1ZSgnYicpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUs
IC0xLCAnMCByZWFkcywgMiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7Ci0g
IGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVz
aXJlZFNpemUsIC0yLCAnMCByZWFkcywgMyBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJl
IC0yJyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZCcpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRy
b2xsZXIuZGVzaXJlZFNpemUsIC0zLCAnMCByZWFkcywgNCBlbnF1ZXVlczogZGVzaXJlZFNpemUg
c2hvdWxkIGJlIC0zJyk7Ci0KLSAgcmV0dXJuIHJlYWRlci5yZWFkKCkKLSAgICAudGhlbihyZXN1
bHQgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYScs
IGRvbmU6IGZhbHNlIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnMXN0IHJlYWQgZ2l2
ZXMgYmFjayB0aGUgMXN0IGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMyBjaHVu
a3MpJyk7Ci0gICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgICB9KQotICAgIC50aGVuKHJl
c3VsdCA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdi
JywgZG9uZTogZmFsc2UgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICcybmQgcmVhZCBn
aXZlcyBiYWNrIHRoZSAybmQgY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAyIGNo
dW5rcyknKTsKLSAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICAgIH0pCi0gICAgLnRoZW4o
cmVzdWx0ID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTog
J2MnLCBkb25lOiBmYWxzZSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJzNyZCByZWFk
IGdpdmVzIGJhY2sgdGhlIDNyZCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDEg
Y2h1bmspJyk7Ci0KLSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwg
MCwgJzMgcmVhZHMsIDQgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7Ci0gICAg
ICBjb250cm9sbGVyLmVucXVldWUoJ2UnKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxl
ci5kZXNpcmVkU2l6ZSwgLTEsICczIHJlYWRzLCA1IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91
bGQgYmUgLTEnKTsKLQotICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gICAgfSkKLSAgICAu
dGhlbihyZXN1bHQgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZh
bHVlOiAnZCcsIGRvbmU6IGZhbHNlIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnNHRo
IHJlYWQgZ2l2ZXMgYmFjayB0aGUgNHRoIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFp
bnMgMSBjaHVua3MpJyk7Ci0gICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgICB9KQotICAg
IC50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsg
dmFsdWU6ICdlJywgZG9uZTogZmFsc2UgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICc1
dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA1dGggY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250
YWlucyAwIGNodW5rcyknKTsKLQotICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2ly
ZWRTaXplLCAxLCAnNSByZWFkcywgNSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEn
KTsKLSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZicpOwotICAgICAgYXNzZXJ0X2VxdWFscyhj
b250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnNSByZWFkcywgNiBlbnF1ZXVlczogZGVzaXJlZFNp
emUgc2hvdWxkIGJlIDAnKTsKLSAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZycpOwotICAgICAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzUgcmVhZHMsIDcgZW5x
dWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMScpOwotICAgIH0pOwotCi19LCAnQ29ycmVj
dGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJcJ3MgZGVzaXJlZFNpemUgcHJv
cGVydHkgKEhXTSA9IDEpJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNvbnRy
b2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAotICAgIHsKLSAgICAgIHN0
YXJ0KGMpIHsKLSAgICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgICB9Ci0gICAgfSwKLSAgICBu
ZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0pCi0gICk7Ci0gIGNv
bnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gIGFzc2VydF9lcXVhbHMoY29udHJvbGxl
ci5kZXNpcmVkU2l6ZSwgNCwgJzAgcmVhZHMsIDAgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3Vs
ZCBiZSA0Jyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOwotICBhc3NlcnRfZXF1YWxzKGNv
bnRyb2xsZXIuZGVzaXJlZFNpemUsIDMsICcwIHJlYWRzLCAxIGVucXVldWU6IGRlc2lyZWRTaXpl
IHNob3VsZCBiZSAzJyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYicpOwotICBhc3NlcnRfZXF1
YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDIsICcwIHJlYWRzLCAyIGVucXVldWVzOiBkZXNp
cmVkU2l6ZSBzaG91bGQgYmUgMicpOwotICBjb250cm9sbGVyLmVucXVldWUoJ2MnKTsKLSAgYXNz
ZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnMCByZWFkcywgMyBlbnF1ZXVl
czogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDEnKTsKLSAgY29udHJvbGxlci5lbnF1ZXVlKCdkJyk7
Ci0gIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzAgcmVhZHMsIDQg
ZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7Ci0gIGNvbnRyb2xsZXIuZW5xdWV1
ZSgnZScpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMCBy
ZWFkcywgNSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7Ci0gIGNvbnRyb2xs
ZXIuZW5xdWV1ZSgnZicpOwotICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUs
IC0yLCAnMCByZWFkcywgNiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0yJyk7Ci0K
LQotICByZWFkZXIucmVhZCgpCi0gICAgLnRoZW4ocmVzdWx0ID0+IHsKLSAgICAgIGFzc2VydF9v
YmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJzFzdCByZWFkIGdpdmVzIGJhY2sgdGhlIDFzdCBjaHVuayBl
bnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDUgY2h1bmtzKScpOwotICAgICAgcmV0dXJuIHJl
YWRlci5yZWFkKCk7Ci0gICAgfSkKLSAgICAudGhlbihyZXN1bHQgPT4gewotICAgICAgYXNzZXJ0
X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAnMm5kIHJlYWQgZ2l2ZXMgYmFjayB0aGUgMm5kIGNodW5r
IGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgNCBjaHVua3MpJyk7Ci0KLSAgICAgIGFzc2Vy
dF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzIgcmVhZHMsIDYgZW5xdWV1ZXM6
IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7Ci0gICAgICBjb250cm9sbGVyLmVucXVldWUoJ2cn
KTsKLSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTEsICcyIHJl
YWRzLCA3IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKLQotICAgICAgcmV0
dXJuIHJlYWRlci5yZWFkKCk7Ci0gICAgfSkKLSAgICAudGhlbihyZXN1bHQgPT4gewotICAgICAg
YXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYycsIGRvbmU6IGZhbHNlIH0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAnM3JkIHJlYWQgZ2l2ZXMgYmFjayB0aGUgM3Jk
IGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgNCBjaHVua3MpJyk7Ci0gICAgICBy
ZXR1cm4gcmVhZGVyLnJlYWQoKTsKLSAgICB9KQotICAgIC50aGVuKHJlc3VsdCA9PiB7Ci0gICAg
ICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdkJywgZG9uZTogZmFsc2Ug
fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICc0dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA0
dGggY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAzIGNodW5rcyknKTsKLSAgICAg
IHJldHVybiByZWFkZXIucmVhZCgpOwotICAgIH0pCi0gICAgLnRoZW4ocmVzdWx0ID0+IHsKLSAg
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2UnLCBkb25lOiBmYWxz
ZSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJzV0aCByZWFkIGdpdmVzIGJhY2sgdGhl
IDV0aCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDIgY2h1bmtzKScpOwotICAg
ICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gICAgfSkKLSAgICAudGhlbihyZXN1bHQgPT4gewot
ICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZicsIGRvbmU6IGZh
bHNlIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnNnRoIHJlYWQgZ2l2ZXMgYmFjayB0
aGUgNnRoIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMCBjaHVua3MpJyk7Ci0K
LSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMywgJzYgcmVhZHMs
IDcgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAzJyk7Ci0gICAgICBjb250cm9sbGVy
LmVucXVldWUoJ2gnKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6
ZSwgMiwgJzYgcmVhZHMsIDggZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAyJyk7Ci0g
ICAgICBjb250cm9sbGVyLmVucXVldWUoJ2knKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJv
bGxlci5kZXNpcmVkU2l6ZSwgMSwgJzYgcmVhZHMsIDkgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNo
b3VsZCBiZSAxJyk7Ci0gICAgICBjb250cm9sbGVyLmVucXVldWUoJ2onKTsKLSAgICAgIGFzc2Vy
dF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJzYgcmVhZHMsIDEwIGVucXVldWVz
OiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCcpOwotICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdr
Jyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnNiBy
ZWFkcywgMTEgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMScpOwotICAgIH0pOwot
Ci19LCAnQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJcJ3MgZGVz
aXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDQpJyk7Ci0KLWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVh
ZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24tMS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxl
LXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLTEtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmYjY1MmI4NTJmMDdlNWFiYzU2ZjUyMTA1YWNjMTg2MDVkY2I4MzE4
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUt
c3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24tMS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSw2ICswLDAgQEAKLQotUEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgbWV0aG9kcyBz
aG91bGQgY29udGludWUgd29ya2luZyBwcm9wZXJseSB3aGVuIHNjcmlwdHMgbG9zZSB0aGVpciBy
ZWZlcmVuY2UgdG8gdGhlIHJlYWRhYmxlIHN0cmVhbSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2xv
c2VkIHByb21pc2Ugc2hvdWxkIGZ1bGZpbGwgZXZlbiBpZiB0aGUgc3RyZWFtIGFuZCByZWFkZXIg
SlMgcmVmZXJlbmNlcyBhcmUgbG9zdCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2xvc2VkIHByb21p
c2Ugc2hvdWxkIHJlamVjdCBldmVuIGlmIHN0cmVhbSBhbmQgcmVhZGVyIEpTIHJlZmVyZW5jZXMg
YXJlIGxvc3QgCi1QQVNTIEdhcmJhZ2UtY29sbGVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVy
IHNob3VsZCBub3QgdW5sb2NrIGl0cyBzdHJlYW0gCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3Ry
ZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24tMS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2Ut
Y29sbGVjdGlvbi0xLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyNjA1NTJl
YTBlMjcxNWQ4ZDQ5Yjg3N2I0NmNiZDA5ZWFlN2Q0OWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlv
bi0xLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2Vycy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Ci08IS0tIEZpbGUgdG8g
YmUgcmVtb3ZlZCBvbmNlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTI0MzYgaXMgcmVzb2x2ZWQgLS0+Ci08c2NyaXB0IHNyYz0iZ2FyYmFnZS1jb2xsZWN0aW9uLmpz
Ij48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rp
b24tMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLTIt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTdkMGNjZDc3OTM1
ZThkMjdlN2VhYmFmZDYwMWVlMWNjYTM2N2E5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24tMi1l
eHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLQotUEFTUyBSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXIgbWV0aG9kcyBzaG91bGQgY29udGludWUgd29ya2luZyBwcm9wZXJs
eSB3aGVuIHNjcmlwdHMgbG9zZSB0aGVpciByZWZlcmVuY2UgdG8gdGhlIHJlYWRhYmxlIHN0cmVh
bSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2xvc2VkIHByb21pc2Ugc2hvdWxkIGZ1bGZpbGwgZXZl
biBpZiB0aGUgc3RyZWFtIGFuZCByZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9zdCAKLQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi0yLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRh
YmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLTIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggN2JlM2E0ZTFmNjhjODlmNzE4MmUzY2EwNGQ4NTEwZTMxYWIwZTAxYy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVh
bXMvZ2FyYmFnZS1jb2xsZWN0aW9uLTIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9zZXJ2
aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIj48
L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzIj48L3Nj
cmlwdD4KLTwhLS0gRmlsZSB0byBiZSByZW1vdmVkIG9uY2UgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MjQzNiBpcyByZXNvbHZlZCAtLT4KLTxzY3JpcHQ+Ci0ndXNl
IHN0cmljdCc7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0g
IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9
IGM7Ci0gICAgfQotICB9KTsKLQotICBnYXJiYWdlQ29sbGVjdCgpOwotCi0gIHJldHVybiBkZWxh
eSg1MCkudGhlbigoKSA9PiB7Ci0gICAgY29udHJvbGxlci5jbG9zZSgpOwotICAgIGFzc2VydF90
aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjb250cm9sbGVyLmNsb3NlKCksICdjbG9zZSBz
aG91bGQgdGhyb3cgYSBUeXBlRXJyb3IgdGhlIHNlY29uZCB0aW1lJyk7Ci0gICAgYXNzZXJ0X3Ro
cm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGNvbnRyb2xsZXIuZXJyb3IoKSwgJ2Vycm9yIHNo
b3VsZCB0aHJvdyBhIFR5cGVFcnJvciBvbiBhIGNsb3NlZCBzdHJlYW0nKTsKLSAgfSk7Ci0KLX0s
ICdSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgbWV0aG9kcyBzaG91bGQgY29udGludWUgd29ya2lu
ZyBwcm9wZXJseSB3aGVuIHNjcmlwdHMgbG9zZSB0aGVpciByZWZlcmVuY2UgdG8gdGhlICcgKwot
ICAgJ3JlYWRhYmxlIHN0cmVhbScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBj
b250cm9sbGVyOwotCi0gIGNvbnN0IGNsb3NlZFByb21pc2UgPSBuZXcgUmVhZGFibGVTdHJlYW0o
ewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSkuZ2V0
UmVhZGVyKCkuY2xvc2VkOwotCi0gIGdhcmJhZ2VDb2xsZWN0KCk7Ci0KLSAgcmV0dXJuIGRlbGF5
KDUwKS50aGVuKCgpID0+IGNvbnRyb2xsZXIuY2xvc2UoKSkudGhlbigoKSA9PiBjbG9zZWRQcm9t
aXNlKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIGNsb3NlZCBwcm9taXNlIHNob3VsZCBmdWxmaWxs
IGV2ZW4gaWYgdGhlIHN0cmVhbSBhbmQgcmVhZGVyIEpTIHJlZmVyZW5jZXMgYXJlIGxvc3QnKTsK
LTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlv
bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLWV4cGVj
dGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmUxYzMzMDA5NmJkY2UyYjA5
NTBhZjlkNTdkNjU2MzE2YTFkOTI0Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGlu
ZSAzNzogVGVzdHMgYXJlIHJ1bm5pbmcgd2l0aG91dCB0aGUgYWJpbGl0eSB0byBkbyBtYW51YWwg
Z2FyYmFnZSBjb2xsZWN0aW9uLiBUaGV5IHdpbGwgc3RpbGwgd29yaywgYnV0IGNvdmVyYWdlIHdp
bGwgYmUgc3Vib3B0aW1hbC4KLUNPTlNPTEUgTUVTU0FHRTogbGluZSAzNzogVGVzdHMgYXJlIHJ1
bm5pbmcgd2l0aG91dCB0aGUgYWJpbGl0eSB0byBkbyBtYW51YWwgZ2FyYmFnZSBjb2xsZWN0aW9u
LiBUaGV5IHdpbGwgc3RpbGwgd29yaywgYnV0IGNvdmVyYWdlIHdpbGwgYmUgc3Vib3B0aW1hbC4K
LUNPTlNPTEUgTUVTU0FHRTogbGluZSAzNzogVGVzdHMgYXJlIHJ1bm5pbmcgd2l0aG91dCB0aGUg
YWJpbGl0eSB0byBkbyBtYW51YWwgZ2FyYmFnZSBjb2xsZWN0aW9uLiBUaGV5IHdpbGwgc3RpbGwg
d29yaywgYnV0IGNvdmVyYWdlIHdpbGwgYmUgc3Vib3B0aW1hbC4KLUNPTlNPTEUgTUVTU0FHRTog
bGluZSAzNzogVGVzdHMgYXJlIHJ1bm5pbmcgd2l0aG91dCB0aGUgYWJpbGl0eSB0byBkbyBtYW51
YWwgZ2FyYmFnZSBjb2xsZWN0aW9uLiBUaGV5IHdpbGwgc3RpbGwgd29yaywgYnV0IGNvdmVyYWdl
IHdpbGwgYmUgc3Vib3B0aW1hbC4KLQotUEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgbWV0
aG9kcyBzaG91bGQgY29udGludWUgd29ya2luZyBwcm9wZXJseSB3aGVuIHNjcmlwdHMgbG9zZSB0
aGVpciByZWZlcmVuY2UgdG8gdGhlIHJlYWRhYmxlIHN0cmVhbSAKLVBBU1MgUmVhZGFibGVTdHJl
YW0gY2xvc2VkIHByb21pc2Ugc2hvdWxkIGZ1bGZpbGwgZXZlbiBpZiB0aGUgc3RyZWFtIGFuZCBy
ZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9zdCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2xvc2Vk
IHByb21pc2Ugc2hvdWxkIHJlamVjdCBldmVuIGlmIHN0cmVhbSBhbmQgcmVhZGVyIEpTIHJlZmVy
ZW5jZXMgYXJlIGxvc3QgCi1QQVNTIEdhcmJhZ2UtY29sbGVjdGluZyBhIFJlYWRhYmxlU3RyZWFt
UmVhZGVyIHNob3VsZCBub3QgdW5sb2NrIGl0cyBzdHJlYW0gCi1GQUlMIExvYWQgZ2FyYmFnZS1j
b2xsZWN0aW9uLmpzIHdpdGggU2hhcmVkV29ya2VyIGFzc2VydF91bnJlYWNoZWQ6IFNoYXJlZFdv
cmtlciBpcyB1bmF2YWlsYWJsZSBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKLUZBSUwgVW50aXRs
ZWQgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ25hdmlnYXRvci5zZXJ2
aWNlV29ya2VyLmdldFJlZ2lzdHJhdGlvbicpCi1QQVNTIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxl
ciBtZXRob2RzIHNob3VsZCBjb250aW51ZSB3b3JraW5nIHByb3Blcmx5IHdoZW4gc2NyaXB0cyBs
b3NlIHRoZWlyIHJlZmVyZW5jZSB0byB0aGUgcmVhZGFibGUgc3RyZWFtIAotUEFTUyBSZWFkYWJs
ZVN0cmVhbSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgZnVsZmlsbCBldmVuIGlmIHRoZSBzdHJlYW0g
YW5kIHJlYWRlciBKUyByZWZlcmVuY2VzIGFyZSBsb3N0IAotUEFTUyBSZWFkYWJsZVN0cmVhbSBj
bG9zZWQgcHJvbWlzZSBzaG91bGQgcmVqZWN0IGV2ZW4gaWYgc3RyZWFtIGFuZCByZWFkZXIgSlMg
cmVmZXJlbmNlcyBhcmUgbG9zdCAKLVBBU1MgR2FyYmFnZS1jb2xsZWN0aW5nIGEgUmVhZGFibGVT
dHJlYW1SZWFkZXIgc2hvdWxkIG5vdCB1bmxvY2sgaXRzIHN0cmVhbSAKLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9y
ZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1z
L2dhcmJhZ2UtY29sbGVjdGlvbi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
MzhlZDIwNTM0YzIwNjVkNTdhZmYyY2Y0YTg0YzY3YTk1OGRhMjRkLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNv
bGxlY3Rpb24uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIj48L3NjcmlwdD4KLQotPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSJnYXJiYWdlLWNvbGxlY3Rpb24uanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLSd1c2Ugc3Ry
aWN0JzsKLXdvcmtlcl90ZXN0KCdnYXJiYWdlLWNvbGxlY3Rpb24uanMnKTsKLTwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5qcyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFi
bGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGZiMDBjOTQ2YmJiNTJiMjNlZjZlZDhmY2QzNDBkYjkwZmUzOWRlODEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dh
cmJhZ2UtY29sbGVjdGlvbi5qcworKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLSd1c2Ug
c3RyaWN0JzsKLQotaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgewotICBzZWxmLmltcG9ydFNjcmlw
dHMoJy4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygn
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOwotfQotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewot
Ci0gIGxldCBjb250cm9sbGVyOwotICBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMp
IHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0KLSAgZ2FyYmFnZUNvbGxl
Y3QoKTsKLQotICByZXR1cm4gZGVsYXkoNTApLnRoZW4oKCkgPT4gewotICAgIGNvbnRyb2xsZXIu
Y2xvc2UoKTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gY29udHJv
bGxlci5jbG9zZSgpLCAnY2xvc2Ugc2hvdWxkIHRocm93IGEgVHlwZUVycm9yIHRoZSBzZWNvbmQg
dGltZScpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjb250cm9s
bGVyLmVycm9yKCksICdlcnJvciBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3Igb24gYSBjbG9zZWQg
c3RyZWFtJyk7Ci0gIH0pOwotCi19LCAnUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIG1ldGhvZHMg
c2hvdWxkIGNvbnRpbnVlIHdvcmtpbmcgcHJvcGVybHkgd2hlbiBzY3JpcHRzIGxvc2UgdGhlaXIg
cmVmZXJlbmNlIHRvIHRoZSAnICsKLSAgICdyZWFkYWJsZSBzdHJlYW0nKTsKLQotcHJvbWlzZV90
ZXN0KCgpID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsKLQotICBjb25zdCBjbG9zZWRQcm9taXNl
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVy
ID0gYzsKLSAgICB9Ci0gIH0pLmdldFJlYWRlcigpLmNsb3NlZDsKLQotICBnYXJiYWdlQ29sbGVj
dCgpOwotCi0gIHJldHVybiBkZWxheSg1MCkudGhlbigoKSA9PiBjb250cm9sbGVyLmNsb3NlKCkp
LnRoZW4oKCkgPT4gY2xvc2VkUHJvbWlzZSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBjbG9zZWQg
cHJvbWlzZSBzaG91bGQgZnVsZmlsbCBldmVuIGlmIHRoZSBzdHJlYW0gYW5kIHJlYWRlciBKUyBy
ZWZlcmVuY2VzIGFyZSBsb3N0Jyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCB0
aGVFcnJvciA9IG5ldyBFcnJvcignYm9vJyk7Ci0gIGxldCBjb250cm9sbGVyOwotCi0gIGNvbnN0
IGNsb3NlZFByb21pc2UgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAg
ICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOwotCi0g
IGdhcmJhZ2VDb2xsZWN0KCk7Ci0KLSAgcmV0dXJuIGRlbGF5KDUwKS50aGVuKCgpID0+IGNvbnRy
b2xsZXIuZXJyb3IodGhlRXJyb3IpKQotICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gcHJv
bWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCBjbG9zZWRQcm9taXNlKSk7Ci0KLX0sICdSZWFkYWJs
ZVN0cmVhbSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgcmVqZWN0IGV2ZW4gaWYgc3RyZWFtIGFuZCBy
ZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9zdCcpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewot
Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHt9KTsKLQotICBycy5nZXRSZWFkZXIo
KTsKLQotICBnYXJiYWdlQ29sbGVjdCgpOwotCi0gIHJldHVybiBkZWxheSg1MCkudGhlbigoKSA9
PiBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksCi0g
ICAgJ29sZCByZWFkZXIgc2hvdWxkIHN0aWxsIGJlIGxvY2tpbmcgdGhlIHN0cmVhbSBldmVuIGFm
dGVyIGdhcmJhZ2UgY29sbGVjdGlvbicpKTsKLQotfSwgJ0dhcmJhZ2UtY29sbGVjdGluZyBhIFJl
YWRhYmxlU3RyZWFtUmVhZGVyIHNob3VsZCBub3QgdW5sb2NrIGl0cyBzdHJlYW0nKTsKLQotZG9u
ZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9y
ZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBjZDg1MmI1NThlZGQ4YzJmOTY5ZGE3MjQ3YmVlY2I0MzdiNTQ5MGI5Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFt
cy9nZW5lcmFsLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLQot
UEFTUyBSZWFkYWJsZVN0cmVhbSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBubyBlcnJvcnMgCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtIGNhbid0IGJlIGNvbnN0cnVjdGVkIHdpdGggZ2FyYmFnZSAKLUZB
SUwgUmVhZGFibGVTdHJlYW0gaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qg
b2YgcHJvcGVydGllcyBhc3NlcnRfZmFsc2U6IG1ldGhvZCBzaG91bGQgYmUgbm9uLWVudW1lcmFi
bGUgZXhwZWN0ZWQgZmFsc2UgZ290IHRydWUKLVBBU1MgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0
b3Igc2hvdWxkIHRocm93IGZvciBub24tZnVuY3Rpb24gc3RhcnQgYXJndW1lbnRzIAotUEFTUyBS
ZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBhcyBjYW5j
ZWwgYXJndW1lbnQgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbiBnZXQgaW5p
dGlhbCBnYXJiYWdlIGFzIHB1bGwgYXJndW1lbnQgCi1GQUlMIFJlYWRhYmxlU3RyZWFtIHN0YXJ0
IHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgcHJvcGVyIHBhcmFtZXRlcnMgYXNzZXJ0X2ZhbHNl
OiBjbG9zZSBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUgZXhwZWN0ZWQgZmFsc2UgZ290IHRydWUK
LVBBU1MgUmVhZGFibGVTdHJlYW0gc3RhcnQgY29udHJvbGxlciBwYXJhbWV0ZXIgc2hvdWxkIGJl
IGV4dGVuc2libGUgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHNob3VsZCBiZSBhYmxlIHRvIGNhbGwg
c3RhcnQgbWV0aG9kIHdpdGhpbiBwcm90b3R5cGUgY2hhaW4gb2YgaXRzIHNvdXJjZSAKLVBBU1Mg
UmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSAK
LVBBU1MgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJv
bWlzZSBhbmQgcmVqZWN0IGl0IAotUEFTUyBSZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0
byBlbnF1ZXVlIGRpZmZlcmVudCBvYmplY3RzLiAKLVBBU1MgUmVhZGFibGVTdHJlYW06IGlmIHB1
bGwgcmVqZWN0cywgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0gCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgb25jZSB1cG9uIHN0YXJ0aW5nIHRoZSBzdHJlYW0g
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxsIHdoZW4gdHJ5aW5nIHRvIHJl
YWQgZnJvbSBhIHN0YXJ0ZWQsIGVtcHR5IHN0cmVhbSAKLVBBU1MgUmVhZGFibGVTdHJlYW06IHNo
b3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIG9uIGEgbm9uLWVtcHR5IHN0cmVhbSByZWFkIGZyb20g
YmVmb3JlIHN0YXJ0IGZ1bGZpbGxzIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkg
Y2FsbCBwdWxsIG9uY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBhZnRlciBzdGFy
dCBmdWxmaWxscyAKLVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHB1bGwgaW4gcmVh
Y3Rpb24gdG8gcmVhZCgpaW5nIHRoZSBsYXN0IGNodW5rLCBpZiBub3QgZHJhaW5pbmcgCi1QQVNT
IFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCgpIGluIHJlYWN0aW9uIHRvIHJl
YWQoKWluZyB0aGUgbGFzdCBjaHVuaywgaWYgZHJhaW5pbmcgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
OiBzaG91bGQgbm90IGNhbGwgcHVsbCB1bnRpbCB0aGUgcHJldmlvdXMgcHVsbCBjYWxsJ3MgcHJv
bWlzZSBmdWxmaWxscyAKLVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBwdWxsIGFmdGVyIHN0
YXJ0LCBhbmQgYWZ0ZXIgZXZlcnkgcmVhZCAKLVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBu
b3QgY2FsbCBwdWxsIGFmdGVyIHN0YXJ0IGlmIHRoZSBzdHJlYW0gaXMgbm93IGNsb3NlZCAKLVBB
U1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHB1bGwgYWZ0ZXIgZW5xdWV1ZWluZyBmcm9t
IGluc2lkZSBwdWxsICh3aXRoIG5vIHJlYWQgcmVxdWVzdHMpLCBpZiBzdHJhdGVneSBhbGxvd3Mg
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtIHB1bGwgc2hvdWxkIGJlIGFibGUgdG8gY2xvc2UgYSBzdHJl
YW0uIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgd2hlbiB0aGUg
c3RyZWFtIGlzIHJlYWRhYmxlIGJ1dCBkcmFpbmluZyAKLVBBU1MgUmVhZGFibGVTdHJlYW06IGVu
cXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyBjbG9zZWQgCi1QQVNTIFJlYWRh
YmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB0aGUgc3RvcmVkIGVycm9yIHdoZW4gdGhl
IHN0cmVhbSBpcyBlcnJvcmVkIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgdW5k
ZXJseWluZyBzb3VyY2UgbWV0aG9kcyBhcyBtZXRob2RzIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBz
dHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91bGQgZ2l2ZSBkZXNpcmVkU2l6ZSBv
ZiAxIHRvIHN0YXJ0LCBkZWNyZWFzaW5nIGJ5IDEgcGVyIGVucXVldWUgCi1QQVNTIFJlYWRhYmxl
U3RyZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNob3VsZCBjb250aW51ZSBn
aXZpbmcgZGVzaXJlZFNpemUgb2YgMSBpZiB0aGUgY2h1bmtzIGFyZSByZWFkIGltbWVkaWF0ZWx5
IAotUEFTUyBSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHJhbmRv
bSBwdXNoIHNvdXJjZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRh
cHRpbmcgYSBzeW5jIHB1bGwgc291cmNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlv
biB0ZXN0OiBhZGFwdGluZyBhbiBhc3luYyBwdWxsIHNvdXJjZSAKLUZBSUwgTG9hZCBnZW5lcmFs
LmpzIHdpdGggU2hhcmVkV29ya2VyIGFzc2VydF91bnJlYWNoZWQ6IFNoYXJlZFdvcmtlciBpcyB1
bmF2YWlsYWJsZSBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKLUZBSUwgVW50aXRsZWQgdW5kZWZp
bmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ25hdmlnYXRvci5zZXJ2aWNlV29ya2Vy
LmdldFJlZ2lzdHJhdGlvbicpCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNhbiBiZSBjb25zdHJ1Y3Rl
ZCB3aXRoIG5vIGVycm9ycyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY2FuJ3QgYmUgY29uc3RydWN0
ZWQgd2l0aCBnYXJiYWdlIAotRkFJTCBSZWFkYWJsZVN0cmVhbSBpbnN0YW5jZXMgc2hvdWxkIGhh
dmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzIGFzc2VydF9mYWxzZTogbWV0aG9kIHNo
b3VsZCBiZSBub24tZW51bWVyYWJsZSBleHBlY3RlZCBmYWxzZSBnb3QgdHJ1ZQotUEFTUyBSZWFk
YWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZm9yIG5vbi1mdW5jdGlvbiBzdGFy
dCBhcmd1bWVudHMgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbiBnZXQgaW5p
dGlhbCBnYXJiYWdlIGFzIGNhbmNlbCBhcmd1bWVudCAKLVBBU1MgUmVhZGFibGVTdHJlYW0gY29u
c3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgcHVsbCBhcmd1bWVudCAKLUZBSUwg
UmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBwcm9wZXIgcGFy
YW1ldGVycyBhc3NlcnRfZmFsc2U6IGNsb3NlIHNob3VsZCBiZSBub24tZW51bWVyYWJsZSBleHBl
Y3RlZCBmYWxzZSBnb3QgdHJ1ZQotUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBjb250cm9sbGVy
IHBhcmFtZXRlciBzaG91bGQgYmUgZXh0ZW5zaWJsZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gc2hv
dWxkIGJlIGFibGUgdG8gY2FsbCBzdGFydCBtZXRob2Qgd2l0aGluIHByb3RvdHlwZSBjaGFpbiBv
ZiBpdHMgc291cmNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0
byByZXR1cm4gYSBwcm9taXNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUg
YWJsZSB0byByZXR1cm4gYSBwcm9taXNlIGFuZCByZWplY3QgaXQgCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtIHNob3VsZCBiZSBhYmxlIHRvIGVucXVldWUgZGlmZmVyZW50IG9iamVjdHMuIAotUEFTUyBS
ZWFkYWJsZVN0cmVhbTogaWYgcHVsbCByZWplY3RzLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVh
bSAKLVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIHVwb24g
c3RhcnRpbmcgdGhlIHN0cmVhbSAKLVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHB1
bGwgd2hlbiB0cnlpbmcgdG8gcmVhZCBmcm9tIGEgc3RhcnRlZCwgZW1wdHkgc3RyZWFtIAotUEFT
UyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2Ugb24gYSBub24tZW1w
dHkgc3RyZWFtIHJlYWQgZnJvbSBiZWZvcmUgc3RhcnQgZnVsZmlsbHMgCi1QQVNTIFJlYWRhYmxl
U3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0g
cmVhZCBmcm9tIGFmdGVyIHN0YXJ0IGZ1bGZpbGxzIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hv
dWxkIGNhbGwgcHVsbCBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlm
IG5vdCBkcmFpbmluZyAKLVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxs
KCkgaW4gcmVhY3Rpb24gdG8gcmVhZCgpaW5nIHRoZSBsYXN0IGNodW5rLCBpZiBkcmFpbmluZyAK
LVBBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIHVudGlsIHRoZSBwcmV2
aW91cyBwdWxsIGNhbGwncyBwcm9taXNlIGZ1bGZpbGxzIAotUEFTUyBSZWFkYWJsZVN0cmVhbTog
c2hvdWxkIHB1bGwgYWZ0ZXIgc3RhcnQsIGFuZCBhZnRlciBldmVyeSByZWFkIAotUEFTUyBSZWFk
YWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgYWZ0ZXIgc3RhcnQgaWYgdGhlIHN0cmVh
bSBpcyBub3cgY2xvc2VkIAotUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCBh
ZnRlciBlbnF1ZXVlaW5nIGZyb20gaW5zaWRlIHB1bGwgKHdpdGggbm8gcmVhZCByZXF1ZXN0cyks
IGlmIHN0cmF0ZWd5IGFsbG93cyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gcHVsbCBzaG91bGQgYmUg
YWJsZSB0byBjbG9zZSBhIHN0cmVhbS4gCi1QQVNTIFJlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNo
b3VsZCB0aHJvdyB3aGVuIHRoZSBzdHJlYW0gaXMgcmVhZGFibGUgYnV0IGRyYWluaW5nIAotUEFT
UyBSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgd2hlbiB0aGUgc3RyZWFtIGlz
IGNsb3NlZCAKLVBBU1MgUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBz
dG9yZWQgZXJyb3Igd2hlbiB0aGUgc3RyZWFtIGlzIGVycm9yZWQgCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRob2RzIGFzIG1ldGhvZHMgCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNob3Vs
ZCBnaXZlIGRlc2lyZWRTaXplIG9mIDEgdG8gc3RhcnQsIGRlY3JlYXNpbmcgYnkgMSBwZXIgZW5x
dWV1ZSAKLVBBU1MgUmVhZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRl
Z3kgc2hvdWxkIGNvbnRpbnVlIGdpdmluZyBkZXNpcmVkU2l6ZSBvZiAxIGlmIHRoZSBjaHVua3Mg
YXJlIHJlYWQgaW1tZWRpYXRlbHkgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRl
c3Q6IGFkYXB0aW5nIGEgcmFuZG9tIHB1c2ggc291cmNlIAotUEFTUyBSZWFkYWJsZVN0cmVhbSBp
bnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHN5bmMgcHVsbCBzb3VyY2UgCi1QQVNTIFJlYWRh
YmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGFuIGFzeW5jIHB1bGwgc291cmNl
IAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1z
dHJlYW1zL2dlbmVyYWwuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjUyNDFm
ZmU4ZjA3MmZiZmQ1ZjY3NmMwNjlmMTU0YjQyOWIwMTQ2ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlcnMvcmVz
b3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3Rlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9ycy11dGlscy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iZ2VuZXJhbC5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotd29ya2VyX3Rlc3QoJ2dlbmVyYWwuanMnKTsK
LTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuanMgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRh
YmxlLXN0cmVhbXMvZ2VuZXJhbC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDRk
MWE0YTZjYTQwM2NkZjRkNTQ0YjUwZmI2ZTEyNjY1MzZmYjczZC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC5qcwor
KysgL2Rldi9udWxsCkBAIC0xLDgzMSArMCwwIEBACi0ndXNlIHN0cmljdCc7Ci0KLWlmIChzZWxm
LmltcG9ydFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvdGVz
dC11dGlscy5qcycpOwotICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9ycy11dGls
cy5qcycpOwotICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMn
KTsKLX0KLQotdGVzdCgoKSA9PiB7Ci0KLSAgbmV3IFJlYWRhYmxlU3RyZWFtKCk7IC8vIFJlYWRh
YmxlU3RyZWFtIGNvbnN0cnVjdGVkIHdpdGggbm8gcGFyYW1ldGVycwotICBuZXcgUmVhZGFibGVT
dHJlYW0oeyB9KTsgLy8gUmVhZGFibGVTdHJlYW0gY29uc3RydWN0ZWQgd2l0aCBhbiBlbXB0eSBv
YmplY3QgYXMgcGFyYW1ldGVyCi0gIG5ldyBSZWFkYWJsZVN0cmVhbSh1bmRlZmluZWQpOyAvLyBS
ZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RlZCB3aXRoIHVuZGVmaW5lZCBhcyBwYXJhbWV0ZXIKLQot
ICBsZXQgeDsKLSAgbmV3IFJlYWRhYmxlU3RyZWFtKHgpOyAvLyBSZWFkYWJsZVN0cmVhbSBjb25z
dHJ1Y3RlZCB3aXRoIGFuIHVuZGVmaW5lZCB2YXJpYWJsZSBhcyBwYXJhbWV0ZXIKLQotfSwgJ1Jl
YWRhYmxlU3RyZWFtIGNhbiBiZSBjb25zdHJ1Y3RlZCB3aXRoIG5vIGVycm9ycycpOwotCi10ZXN0
KCgpID0+IHsKLQotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJl
YWRhYmxlU3RyZWFtKG51bGwpLCAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHdoZW4gdGhlIHNv
dXJjZSBpcyBudWxsJyk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBjYW5cJ3QgYmUgY29uc3RydWN0
ZWQgd2l0aCBnYXJiYWdlJyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGNvbnN0IG1ldGhvZHMgPSBb
J2NhbmNlbCcsICdjb25zdHJ1Y3RvcicsICdnZXRSZWFkZXInLCAncGlwZVRocm91Z2gnLCAncGlw
ZVRvJywgJ3RlZSddOwotICBjb25zdCBwcm9wZXJ0aWVzID0gbWV0aG9kcy5jb25jYXQoWydsb2Nr
ZWQnXSkuc29ydCgpOwotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci0gIGNv
bnN0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHJzKTsKLQotICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvKS5zb3J0KCksIHByb3BlcnRp
ZXMsICdzaG91bGQgaGF2ZSBhbGwgdGhlIGNvcnJlY3QgbWV0aG9kcycpOwotCi0gIGZvciAoY29u
c3QgbSBvZiBtZXRob2RzKSB7Ci0gICAgY29uc3QgcHJvcERlc2MgPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKHByb3RvLCBtKTsKLSAgICBhc3NlcnRfZmFsc2UocHJvcERlc2MuZW51
bWVyYWJsZSwgJ21ldGhvZCBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUnKTsKLSAgICBhc3NlcnRf
dHJ1ZShwcm9wRGVzYy5jb25maWd1cmFibGUsICdtZXRob2Qgc2hvdWxkIGJlIGNvbmZpZ3VyYWJs
ZScpOwotICAgIGFzc2VydF90cnVlKHByb3BEZXNjLndyaXRhYmxlLCAnbWV0aG9kIHNob3VsZCBi
ZSB3cml0YWJsZScpOwotICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJzW21dLCAnZnVuY3Rpb24n
LCAnbWV0aG9kIHNob3VsZCBiZSBhIGZ1bmN0aW9uJyk7Ci0gIH0KLQotICBjb25zdCBsb2NrZWRQ
cm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sICdsb2NrZWQn
KTsKLSAgYXNzZXJ0X2ZhbHNlKGxvY2tlZFByb3BEZXNjLmVudW1lcmFibGUsICdsb2NrZWQgc2hv
dWxkIGJlIG5vbi1lbnVtZXJhYmxlJyk7Ci0gIGFzc2VydF9lcXVhbHMobG9ja2VkUHJvcERlc2Mu
d3JpdGFibGUsIHVuZGVmaW5lZCwgJ2xvY2tlZCBzaG91bGQgbm90IGJlIGEgZGF0YSBwcm9wZXJ0
eScpOwotICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBsb2NrZWRQcm9wRGVzYy5nZXQsICdmdW5jdGlv
bicsICdsb2NrZWQgc2hvdWxkIGhhdmUgYSBnZXR0ZXInKTsKLSAgYXNzZXJ0X2VxdWFscyhsb2Nr
ZWRQcm9wRGVzYy5zZXQsIHVuZGVmaW5lZCwgJ2xvY2tlZCBzaG91bGQgbm90IGhhdmUgYSBzZXR0
ZXInKTsKLSAgYXNzZXJ0X3RydWUobG9ja2VkUHJvcERlc2MuY29uZmlndXJhYmxlLCAnbG9ja2Vk
IHNob3VsZCBiZSBjb25maWd1cmFibGUnKTsKLQotICBhc3NlcnRfZXF1YWxzKHJzLmNhbmNlbC5s
ZW5ndGgsIDEsICdjYW5jZWwgc2hvdWxkIGhhdmUgMSBwYXJhbWV0ZXInKTsKLSAgYXNzZXJ0X2Vx
dWFscyhycy5jb25zdHJ1Y3Rvci5sZW5ndGgsIDAsICdjb25zdHJ1Y3RvciBzaG91bGQgaGF2ZSBu
byBwYXJhbWV0ZXJzJyk7Ci0gIGFzc2VydF9lcXVhbHMocnMuZ2V0UmVhZGVyLmxlbmd0aCwgMCwg
J2dldFJlYWRlciBzaG91bGQgaGF2ZSBubyBwYXJhbWV0ZXJzJyk7Ci0gIGFzc2VydF9lcXVhbHMo
cnMucGlwZVRocm91Z2gubGVuZ3RoLCAyLCAncGlwZVRocm91Z2ggc2hvdWxkIGhhdmUgMiBwYXJh
bWV0ZXJzJyk7Ci0gIGFzc2VydF9lcXVhbHMocnMucGlwZVRvLmxlbmd0aCwgMSwgJ3BpcGVUbyBz
aG91bGQgaGF2ZSAxIHBhcmFtZXRlcicpOwotICBhc3NlcnRfZXF1YWxzKHJzLnRlZS5sZW5ndGgs
IDAsICd0ZWUgc2hvdWxkIGhhdmUgbm8gcGFyYW1ldGVycycpOwotCi19LCAnUmVhZGFibGVTdHJl
YW0gaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2YgcHJvcGVydGllcycp
OwotCi10ZXN0KCgpID0+IHsKLQotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkg
PT4gewotICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7IHN0YXJ0OiAncG90YXRvJyB9KTsKLSAgfSwg
J2NvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyB3aGVuIHN0YXJ0IGlzIG5vdCBhIGZ1bmN0aW9uJyk7
Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZm9yIG5vbi1m
dW5jdGlvbiBzdGFydCBhcmd1bWVudHMnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgbmV3IFJlYWRh
YmxlU3RyZWFtKHsgY2FuY2VsOiAnMicgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBjb25zdHJ1
Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBhcyBjYW5jZWwgYXJndW1lbnQnKTsKLQotdGVz
dCgoKSA9PiB7Ci0KLSAgbmV3IFJlYWRhYmxlU3RyZWFtKHsgcHVsbDogeyB9IH0pOwotCi19LCAn
UmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgcHVs
bCBhcmd1bWVudCcpOwotCi10ZXN0KCgpID0+IHsKLQotICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxz
ZTsKLQotICBjb25zdCBzb3VyY2UgPSB7Ci0gICAgc3RhcnQoY29udHJvbGxlcikgewotICAgICAg
YXNzZXJ0X2VxdWFscyh0aGlzLCBzb3VyY2UsICdzb3VyY2UgaXMgdGhpcyBkdXJpbmcgc3RhcnQn
KTsKLQotICAgICAgY29uc3QgbWV0aG9kcyA9IFsnY2xvc2UnLCAnZW5xdWV1ZScsICdlcnJvcics
ICdjb25zdHJ1Y3RvciddOwotICAgICAgY29uc3QgcHJvcGVydGllcyA9IFsnZGVzaXJlZFNpemUn
XS5jb25jYXQobWV0aG9kcykuc29ydCgpOwotICAgICAgY29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0
UHJvdG90eXBlT2YoY29udHJvbGxlcik7Ci0KLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoT2Jq
ZWN0LmdldE93blByb3BlcnR5TmFtZXMocHJvdG8pLnNvcnQoKSwgcHJvcGVydGllcywKLSAgICAg
ICAgJ3RoZSBjb250cm9sbGVyIHNob3VsZCBoYXZlIHRoZSByaWdodCBwcm9wZXJ0aWVzJyk7Ci0K
LSAgICAgIGZvciAoY29uc3QgbSBvZiBtZXRob2RzKSB7Ci0gICAgICAgIGNvbnN0IHByb3BEZXNj
ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgbSk7Ci0gICAgICAgIGFz
c2VydF9lcXVhbHModHlwZW9mIGNvbnRyb2xsZXJbbV0sICdmdW5jdGlvbicsIGBzaG91bGQgaGF2
ZSBhICR7bX0gbWV0aG9kYCk7Ci0gICAgICAgIGFzc2VydF9mYWxzZShwcm9wRGVzYy5lbnVtZXJh
YmxlLCBtICsgJyBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUnKTsKLSAgICAgICAgYXNzZXJ0X3Ry
dWUocHJvcERlc2MuY29uZmlndXJhYmxlLCBtICsgJyBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7
Ci0gICAgICAgIGFzc2VydF90cnVlKHByb3BEZXNjLndyaXRhYmxlLCBtICsgJyBzaG91bGQgYmUg
d3JpdGFibGUnKTsKLSAgICAgIH0KLQotICAgICAgY29uc3QgZGVzaXJlZFNpemVQcm9wRGVzYyA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sICdkZXNpcmVkU2l6ZScpOwot
ICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2lyZWRTaXplUHJvcERlc2MuZW51bWVyYWJsZSwgJ2Rlc2ly
ZWRTaXplIHNob3VsZCBiZSBub24tZW51bWVyYWJsZScpOwotICAgICAgYXNzZXJ0X2VxdWFscyhk
ZXNpcmVkU2l6ZVByb3BEZXNjLndyaXRhYmxlLCB1bmRlZmluZWQsICdkZXNpcmVkU2l6ZSBzaG91
bGQgbm90IGJlIGEgZGF0YSBwcm9wZXJ0eScpOwotICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2Yg
ZGVzaXJlZFNpemVQcm9wRGVzYy5nZXQsICdmdW5jdGlvbicsICdkZXNpcmVkU2l6ZSBzaG91bGQg
aGF2ZSBhIGdldHRlcicpOwotICAgICAgYXNzZXJ0X2VxdWFscyhkZXNpcmVkU2l6ZVByb3BEZXNj
LnNldCwgdW5kZWZpbmVkLCAnZGVzaXJlZFNpemUgc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyJyk7
Ci0gICAgICBhc3NlcnRfdHJ1ZShkZXNpcmVkU2l6ZVByb3BEZXNjLmNvbmZpZ3VyYWJsZSwgJ2Rl
c2lyZWRTaXplIHNob3VsZCBiZSBjb25maWd1cmFibGUnKTsKLQotICAgICAgYXNzZXJ0X2VxdWFs
cyhjb250cm9sbGVyLmNsb3NlLmxlbmd0aCwgMCwgJ2Nsb3NlIHNob3VsZCBoYXZlIG5vIHBhcmFt
ZXRlcnMnKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5jb25zdHJ1Y3Rvci5sZW5n
dGgsIDEsICdjb25zdHJ1Y3RvciBzaG91bGQgaGF2ZSAxIHBhcmFtZXRlcicpOwotICAgICAgYXNz
ZXJ0X2VxdWFscyhjb250cm9sbGVyLmVucXVldWUubGVuZ3RoLCAxLCAnZW5xdWV1ZSBzaG91bGQg
aGF2ZSAxIHBhcmFtZXRlcicpOwotICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmVycm9y
Lmxlbmd0aCwgMSwgJ2Vycm9yIHNob3VsZCBoYXZlIDEgcGFyYW1ldGVyJyk7Ci0KLSAgICAgIHN0
YXJ0Q2FsbGVkID0gdHJ1ZTsKLSAgICB9Ci0gIH07Ci0KLSAgbmV3IFJlYWRhYmxlU3RyZWFtKHNv
dXJjZSk7Ci0gIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFt
IHN0YXJ0IHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgcHJvcGVyIHBhcmFtZXRlcnMnKTsKLQot
dGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7Ci0gIGNvbnN0IHNvdXJj
ZSA9IHsKLSAgICBzdGFydChjb250cm9sbGVyKSB7Ci0gICAgICBjb25zdCBwcm9wZXJ0aWVzID0g
WydjbG9zZScsICdjb25zdHJ1Y3RvcicsICdkZXNpcmVkU2l6ZScsICdlbnF1ZXVlJywgJ2Vycm9y
J107Ci0gICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVz
KE9iamVjdC5nZXRQcm90b3R5cGVPZihjb250cm9sbGVyKSkuc29ydCgpLCBwcm9wZXJ0aWVzLAot
ICAgICAgICAncHJvdG90eXBlIHNob3VsZCBoYXZlIHRoZSByaWdodCBwcm9wZXJ0aWVzJyk7Ci0K
LSAgICAgIGNvbnRyb2xsZXIudGVzdCA9ICcnOwotICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhP
YmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPYmplY3QuZ2V0UHJvdG90eXBlT2YoY29udHJvbGxl
cikpLnNvcnQoKSwgcHJvcGVydGllcywKLSAgICAgICAgJ3Byb3RvdHlwZSBzaG91bGQgc3RpbGwg
aGF2ZSB0aGUgcmlnaHQgcHJvcGVydGllcycpOwotICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoT2Jq
ZWN0LmdldE93blByb3BlcnR5TmFtZXMoY29udHJvbGxlcikuaW5kZXhPZigndGVzdCcpLCAtMSwK
LSAgICAgICAgJyJ0ZXN0IiBzaG91bGQgYmUgYSBwcm9wZXJ0eSBvZiB0aGUgY29udHJvbGxlcicp
OwotCi0gICAgICBzdGFydENhbGxlZCA9IHRydWU7Ci0gICAgfQotICB9OwotCi0gIG5ldyBSZWFk
YWJsZVN0cmVhbShzb3VyY2UpOwotICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7Ci0KLX0sICdS
ZWFkYWJsZVN0cmVhbSBzdGFydCBjb250cm9sbGVyIHBhcmFtZXRlciBzaG91bGQgYmUgZXh0ZW5z
aWJsZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGZ1bmN0aW9uIFNpbXBsZVN0cmVh
bVNvdXJjZSgpIHt9Ci0gIGxldCByZXNvbHZlOwotICBjb25zdCBwcm9taXNlID0gbmV3IFByb21p
c2UociA9PiByZXNvbHZlID0gcik7Ci0gIFNpbXBsZVN0cmVhbVNvdXJjZS5wcm90b3R5cGUgPSB7
Ci0gICAgc3RhcnQ6IHJlc29sdmUKLSAgfTsKLQotICBuZXcgUmVhZGFibGVTdHJlYW0obmV3IFNp
bXBsZVN0cmVhbVNvdXJjZSgpKTsKLSAgcmV0dXJuIHByb21pc2U7Ci0KLX0sICdSZWFkYWJsZVN0
cmVhbSBzaG91bGQgYmUgYWJsZSB0byBjYWxsIHN0YXJ0IG1ldGhvZCB3aXRoaW4gcHJvdG90eXBl
IGNoYWluIG9mIGl0cyBzb3VyY2UnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25z
dCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgcmV0dXJu
IGRlbGF5KDUpLnRoZW4oKCkgPT4gewotICAgICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICAgICAg
Yy5jbG9zZSgpOwotICAgICAgfSk7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBy
cy5nZXRSZWFkZXIoKTsKLSAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKLSAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICd2YWx1
ZSByZWFkIHNob3VsZCBiZSB0aGUgb25lIGVucXVldWVkJyk7Ci0gICAgcmV0dXJuIHJlYWRlci5j
bG9zZWQ7Ci0gIH0pOwotCi19LCAnUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUg
dG8gcmV0dXJuIGEgcHJvbWlzZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0
IHRoZUVycm9yID0gbmV3IEVycm9yKCdyZWplY3RlZCEnKTsKLSAgY29uc3QgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KCkgewotICAgICAgcmV0dXJuIGRlbGF5KDEpLnRoZW4o
KCkgPT4geyB0aHJvdyB0aGVFcnJvcjsgfSk7Ci0gICAgfQotICB9KTsKLQotICByZXR1cm4gcnMu
Z2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF91bnJlYWNoZWQoJ2Ns
b3NlZCBwcm9taXNlIHNob3VsZCBiZSByZWplY3RlZCcpOwotICB9LCBlID0+IHsKLSAgICBhc3Nl
cnRfZXF1YWxzKGUsIHRoZUVycm9yLCAncHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB0
aGUgc2FtZSBlcnJvcicpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3Vs
ZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJlamVjdCBpdCcpOwotCi1wcm9taXNl
X3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IG9iamVjdHMgPSBbCi0gICAgeyBwb3RhdG86ICdHaXZl
IG1lIG1vcmUhJyB9LAotICAgICd0ZXN0JywKLSAgICAxCi0gIF07Ci0KLSAgY29uc3QgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGZvciAoY29uc3QgbyBv
ZiBvYmplY3RzKSB7Ci0gICAgICAgIGMuZW5xdWV1ZShvKTsKLSAgICAgIH0KLSAgICAgIGMuY2xv
c2UoKTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwot
Ci0gIHJldHVybiBQcm9taXNlLmFsbChbcmVhZGVyLnJlYWQoKSwgcmVhZGVyLnJlYWQoKSwgcmVh
ZGVyLnJlYWQoKSwgcmVhZGVyLmNsb3NlZF0pLnRoZW4ociA9PiB7Ci0gICAgYXNzZXJ0X29iamVj
dF9lcXVhbHMoclswXSwgeyB2YWx1ZTogb2JqZWN0c1swXSwgZG9uZTogZmFsc2UgfSwgJ3ZhbHVl
IHJlYWQgc2hvdWxkIGJlIHRoZSBvbmUgZW5xdWV1ZWQnKTsKLSAgICBhc3NlcnRfb2JqZWN0X2Vx
dWFscyhyWzFdLCB7IHZhbHVlOiBvYmplY3RzWzFdLCBkb25lOiBmYWxzZSB9LCAndmFsdWUgcmVh
ZCBzaG91bGQgYmUgdGhlIG9uZSBlbnF1ZXVlZCcpOwotICAgIGFzc2VydF9vYmplY3RfZXF1YWxz
KHJbMl0sIHsgdmFsdWU6IG9iamVjdHNbMl0sIGRvbmU6IGZhbHNlIH0sICd2YWx1ZSByZWFkIHNo
b3VsZCBiZSB0aGUgb25lIGVucXVldWVkJyk7Ci0gIH0pOwotCi19LCAnUmVhZGFibGVTdHJlYW0g
c2hvdWxkIGJlIGFibGUgdG8gZW5xdWV1ZSBkaWZmZXJlbnQgb2JqZWN0cy4nKTsKLQotcHJvbWlz
ZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcigncHVsbCBmYWlsdXJl
Jyk7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBwdWxsKCkgewotICAg
ICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0
IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gIGxldCBjbG9zZWQgPSBmYWxzZTsKLSAgbGV0
IHJlYWQgPSBmYWxzZTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgIHJlYWRlci5jbG9z
ZWQudGhlbigoKSA9PiB7Ci0gICAgICBhc3NlcnRfdW5yZWFjaGVkKCdjbG9zZWQgc2hvdWxkIGJl
IHJlamVjdGVkJyk7Ci0gICAgfSwgZSA9PiB7Ci0gICAgICBjbG9zZWQgPSB0cnVlOwotICAgICAg
YXNzZXJ0X3RydWUocmVhZCk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGUsIGVycm9yLCAnY2xvc2Vk
IHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHRoZSB0aHJvd24gZXJyb3InKTsKLSAgICB9KSwKLSAg
ICByZWFkZXIucmVhZCgpLnRoZW4oKCkgPT4gewotICAgICAgYXNzZXJ0X3VucmVhY2hlZCgncmVh
ZCgpIHNob3VsZCBiZSByZWplY3RlZCcpOwotICAgIH0sIGUgPT4gewotICAgICAgcmVhZCA9IHRy
dWU7Ci0gICAgICBhc3NlcnRfZmFsc2UoY2xvc2VkKTsKLSAgICAgIGFzc2VydF9lcXVhbHMoZSwg
ZXJyb3IsICdyZWFkKCkgc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdGhlIHRocm93biBlcnJvcicp
OwotICAgIH0pCi0gIF0pOwotCi19LCAnUmVhZGFibGVTdHJlYW06IGlmIHB1bGwgcmVqZWN0cywg
aXQgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0nKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQot
ICBsZXQgcHVsbENvdW50ID0gMDsKLSAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNv
bHZlKCk7Ci0KLSAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydCgpIHsKLSAgICAgIHJl
dHVybiBzdGFydFByb21pc2U7Ci0gICAgfSwKLSAgICBwdWxsKCkgewotICAgICAgcHVsbENvdW50
Kys7Ci0gICAgfQotICB9KTsKLQotICByZXR1cm4gc3RhcnRQcm9taXNlLnRoZW4oKCkgPT4gewot
ICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIG9u
Y2Ugc3RhcnQgZmluaXNoZXMnKTsKLSAgICByZXR1cm4gZGVsYXkoMTApOwotICB9KS50aGVuKCgp
ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNh
bGxlZCBleGFjdGx5IG9uY2UnKTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxk
IG9ubHkgY2FsbCBwdWxsIG9uY2UgdXBvbiBzdGFydGluZyB0aGUgc3RyZWFtJyk7Ci0KLXByb21p
c2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHB1bGxDb3VudCA9IDA7Ci0KLSAgY29uc3QgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHB1bGwoYykgewotICAgICAgLy8gRG9uJ3QgZW5xdWV1
ZSBpbW1lZGlhdGVseSBhZnRlciBzdGFydC4gV2Ugd2FudCB0aGUgc3RyZWFtIHRvIGJlIGVtcHR5
IHdoZW4gd2UgY2FsbCAucmVhZCgpIG9uIGl0LgotICAgICAgaWYgKHB1bGxDb3VudCA+IDApIHsK
LSAgICAgICAgYy5lbnF1ZXVlKHB1bGxDb3VudCk7Ci0gICAgICB9Ci0gICAgICArK3B1bGxDb3Vu
dDsKLSAgICB9Ci0gIH0pOwotCi0gIHJldHVybiBkZWxheSgxKS50aGVuKCgpID0+IHsKLSAgICBh
c3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBvbmNlIHN0
YXJ0IGZpbmlzaGVzJyk7Ci0KLSAgICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLSAg
ICBjb25zdCByZWFkID0gcmVhZGVyLnJlYWQoKTsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3Vu
dCwgMiwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIHJlYWQgaXMgY2FsbGVkJyk7Ci0gICAg
cmV0dXJuIHJlYWQ7Ci0gIH0pLnRoZW4ocmVzdWx0ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHB1
bGxDb3VudCwgMywgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBhZ2FpbiBpbiByZWFjdGlvbiB0byBj
YWxsaW5nIHJlYWQnKTsKLSAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6
IDEsIGRvbmU6IGZhbHNlIH0sICd0aGUgcmVzdWx0IHJlYWQgc2hvdWxkIGJlIHRoZSBvbmUgZW5x
dWV1ZWQnKTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCB3
aGVuIHRyeWluZyB0byByZWFkIGZyb20gYSBzdGFydGVkLCBlbXB0eSBzdHJlYW0nKTsKLQotcHJv
bWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgcHVsbENvdW50ID0gMDsKLSAgY29uc3Qgc3RhcnRQ
cm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgICAgcmV0
dXJuIHN0YXJ0UHJvbWlzZTsKLSAgICB9LAotICAgIHB1bGwoKSB7Ci0gICAgICBwdWxsQ291bnQr
KzsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWQgPSBycy5nZXRSZWFkZXIoKS5yZWFkKCk7
Ci0gIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAwLCAnY2FsbGluZyByZWFkKCkgc2hvdWxkIG5v
dCBjYXVzZSBwdWxsIHRvIGJlIGNhbGxlZCB5ZXQnKTsKLQotICByZXR1cm4gc3RhcnRQcm9taXNl
LnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91
bGQgYmUgY2FsbGVkIG9uY2Ugc3RhcnQgZmluaXNoZXMnKTsKLSAgICByZXR1cm4gcmVhZDsKLSAg
fSkudGhlbihyID0+IHsKLSAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScs
IGRvbmU6IGZhbHNlIH0sICdmaXJzdCByZWFkKCkgc2hvdWxkIHJldHVybiBmaXJzdCBjaHVuaycp
OwotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgbm90IGhhdmUg
YmVlbiBjYWxsZWQgYWdhaW4nKTsKLSAgICByZXR1cm4gZGVsYXkoMTApOwotICB9KS50aGVuKCgp
ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNh
bGxlZCBleGFjdGx5IG9uY2UnKTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxk
IG9ubHkgY2FsbCBwdWxsIG9uY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBiZWZv
cmUgc3RhcnQgZnVsZmlsbHMnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBsZXQgcHVs
bENvdW50ID0gMDsKLSAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0K
LSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAg
IGMuZW5xdWV1ZSgnYScpOwotICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKLSAgICB9LAotICAg
IHB1bGwoKSB7Ci0gICAgICBwdWxsQ291bnQrKzsKLSAgICB9Ci0gIH0pOwotCi0gIHJldHVybiBz
dGFydFByb21pc2UudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAs
ICdwdWxsIHNob3VsZCBub3QgYmUgY2FsbGVkIG9uY2Ugc3RhcnQgZmluaXNoZXMsIHNpbmNlIHRo
ZSBxdWV1ZSBpcyBmdWxsJyk7Ci0KLSAgICBjb25zdCByZWFkID0gcnMuZ2V0UmVhZGVyKCkucmVh
ZCgpOwotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAnY2FsbGluZyByZWFkKCkgc2hv
dWxkIGNhdXNlIHB1bGwgdG8gYmUgY2FsbGVkIGltbWVkaWF0ZWx5Jyk7Ci0gICAgcmV0dXJuIHJl
YWQ7Ci0gIH0pLnRoZW4ociA9PiB7Ci0gICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1
ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgcmVhZCgpIHNob3VsZCByZXR1cm4gZmlyc3Qg
Y2h1bmsnKTsKLSAgICByZXR1cm4gZGVsYXkoMTApOwotICB9KS50aGVuKCgpID0+IHsKLSAgICBh
c3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5
IG9uY2UnKTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBw
dWxsIG9uY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBhZnRlciBzdGFydCBmdWxm
aWxscycpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBwdWxsQ291bnQgPSAwOwot
ICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZl
KCk7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsK
LSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKLSAgICB9
LAotICAgIHB1bGwoKSB7Ci0gICAgICArK3B1bGxDb3VudDsKLSAgICB9Ci0gIH0pOwotCi0gIGNv
bnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotICByZXR1cm4gc3RhcnRQcm9taXNlLnRoZW4o
KCkgPT4gewotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgaGF2
ZSBiZWVuIGNhbGxlZCBvbmNlIGJ5IHRoZSB0aW1lIHRoZSBzdHJlYW0gc3RhcnRzJyk7Ci0KLSAg
ICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwg
MSwgJ3B1bGwgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkIGFnYWluIGFmdGVyIGVucXVldWUn
KTsKLQotICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICB9KS50aGVuKCgpID0+IHsKLSAgICBh
c3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMiwgJ3B1bGwgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQg
YWdhaW4gYWZ0ZXIgcmVhZCcpOwotCi0gICAgcmV0dXJuIGRlbGF5KDEwKTsKLSAgfSkudGhlbigo
KSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDIsICdwdWxsIHNob3VsZCBiZSBj
YWxsZWQgZXhhY3RseSB0d2ljZScpOwotICB9KTsKLX0sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxk
IGNhbGwgcHVsbCBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIG5v
dCBkcmFpbmluZycpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBwdWxsQ291bnQg
PSAwOwotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5y
ZXNvbHZlKCk7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0
KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsK
LSAgICB9LAotICAgIHB1bGwoKSB7Ci0gICAgICArK3B1bGxDb3VudDsKLSAgICB9Ci0gIH0pOwot
Ci0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwotCi0gIHJldHVybiBzdGFydFByb21p
c2UudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNo
b3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UgYnkgdGhlIHRpbWUgdGhlIHN0cmVhbSBzdGFydHMn
KTsKLQotICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOwotICAgIGFzc2VydF9lcXVhbHMocHVs
bENvdW50LCAxLCAncHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQgYWdhaW4gYWZ0ZXIg
ZW5xdWV1ZScpOwotCi0gICAgY29udHJvbGxlci5jbG9zZSgpOwotCi0gICAgcmV0dXJuIHJlYWRl
ci5yZWFkKCk7Ci0gIH0pLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50
LCAxLCAncHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQgYSBzZWNvbmQgdGltZSBhZnRl
ciByZWFkJyk7Ci0KLSAgICByZXR1cm4gZGVsYXkoMTApOwotICB9KS50aGVuKCgpID0+IHsKLSAg
ICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFj
dGx5IG9uY2UnKTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxs
IHB1bGwoKSBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIGRyYWlu
aW5nJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHJlc29sdmU7Ci0gIGxldCBy
ZXR1cm5lZFByb21pc2U7Ci0gIGxldCB0aW1lc0NhbGxlZCA9IDA7Ci0gIGNvbnN0IHN0YXJ0UHJv
bWlzZSA9IFByb21pc2UucmVzb2x2ZSgpOwotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKLSAgICBzdGFydCgpIHsKLSAgICAgIHJldHVybiBzdGFydFByb21pc2U7Ci0gICAgfSwK
LSAgICBwdWxsKGMpIHsKLSAgICAgIGMuZW5xdWV1ZSgrK3RpbWVzQ2FsbGVkKTsKLSAgICAgIHJl
dHVybmVkUHJvbWlzZSA9IG5ldyBQcm9taXNlKHIgPT4gcmVzb2x2ZSA9IHIpOwotICAgICAgcmV0
dXJuIHJldHVybmVkUHJvbWlzZTsKLSAgICB9Ci0gIH0pOwotICBjb25zdCByZWFkZXIgPSBycy5n
ZXRSZWFkZXIoKTsKLQotICByZXR1cm4gc3RhcnRQcm9taXNlLnRoZW4oKCkgPT4gewotICAgIHJl
dHVybiByZWFkZXIucmVhZCgpOwotICB9KS50aGVuKHJlc3VsdDEgPT4gewotICAgIGFzc2VydF9l
cXVhbHModGltZXNDYWxsZWQsIDEsCi0gICAgICAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxl
ZCBvbmNlIGFmdGVyIHN0YXJ0LCBidXQgbm90IHlldCBoYXZlIGJlZW4gY2FsbGVkIGEgc2Vjb25k
IHRpbWUnKTsKLSAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQxLCB7IHZhbHVlOiAxLCBk
b25lOiBmYWxzZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggdGhlIGVucXVldWVkIHZh
bHVlJyk7Ci0KLSAgICByZXR1cm4gZGVsYXkoMTApOwotICB9KS50aGVuKCgpID0+IHsKLSAgICBh
c3NlcnRfZXF1YWxzKHRpbWVzQ2FsbGVkLCAxLCAnYWZ0ZXIgMTAgbXMsIHB1bGwgc2hvdWxkIHN0
aWxsIG9ubHkgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlJyk7Ci0KLSAgICByZXNvbHZlKCk7Ci0gICAg
cmV0dXJuIHJldHVybmVkUHJvbWlzZTsKLSAgfSkudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2Vx
dWFscyh0aW1lc0NhbGxlZCwgMiwKLSAgICAgICdhZnRlciB0aGUgcHJvbWlzZSByZXR1cm5lZCBi
eSBwdWxsIGlzIGZ1bGZpbGxlZCwgcHVsbCBzaG91bGQgYmUgY2FsbGVkIGEgc2Vjb25kIHRpbWUn
KTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50
aWwgdGhlIHByZXZpb3VzIHB1bGwgY2FsbFwncyBwcm9taXNlIGZ1bGZpbGxzJyk7Ci0KLXByb21p
c2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHRpbWVzQ2FsbGVkID0gMDsKLSAgY29uc3Qgc3RhcnRQ
cm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oCi0gICAgewotICAgICAgc3RhcnQoYykgewotICAgICAgICBjLmVucXVldWUoJ2EnKTsK
LSAgICAgICAgYy5lbnF1ZXVlKCdiJyk7Ci0gICAgICAgIGMuZW5xdWV1ZSgnYycpOwotICAgICAg
ICByZXR1cm4gc3RhcnRQcm9taXNlOwotICAgICAgfSwKLSAgICAgIHB1bGwoKSB7Ci0gICAgICAg
ICsrdGltZXNDYWxsZWQ7Ci0gICAgICB9Ci0gICAgfSwKLSAgICB7Ci0gICAgICBzaXplKCkgewot
ICAgICAgICByZXR1cm4gMTsKLSAgICAgIH0sCi0gICAgICBoaWdoV2F0ZXJNYXJrOiBJbmZpbml0
eQotICAgIH0KLSAgKTsKLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgcmV0
dXJuIHN0YXJ0UHJvbWlzZS50aGVuKCgpID0+IHsKLSAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsK
LSAgfSkudGhlbihyZXN1bHQxID0+IHsKLSAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQx
LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdmaXJzdCBjaHVuayBzaG91bGQgYmUgYXMg
ZXhwZWN0ZWQnKTsKLQotICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICB9KS50aGVuKHJlc3Vs
dDIgPT4gewotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDIsIHsgdmFsdWU6ICdiJywg
ZG9uZTogZmFsc2UgfSwgJ3NlY29uZCBjaHVuayBzaG91bGQgYmUgYXMgZXhwZWN0ZWQnKTsKLQot
ICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICB9KS50aGVuKHJlc3VsdDMgPT4gewotICAgIGFz
c2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDMsIHsgdmFsdWU6ICdjJywgZG9uZTogZmFsc2UgfSwg
J3RoaXJkIGNodW5rIHNob3VsZCBiZSBhcyBleHBlY3RlZCcpOwotCi0gICAgcmV0dXJuIGRlbGF5
KDEwKTsKLSAgfSkudGhlbigoKSA9PiB7Ci0gICAgLy8gT25jZSBmb3IgYWZ0ZXIgc3RhcnQsIGFu
ZCBvbmNlIGZvciBldmVyeSByZWFkLgotICAgIGFzc2VydF9lcXVhbHModGltZXNDYWxsZWQsIDQs
ICdwdWxsKCkgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IGZvdXIgdGltZXMnKTsKLSAgfSk7Ci0K
LX0sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIHB1bGwgYWZ0ZXIgc3RhcnQsIGFuZCBhZnRlciBl
dmVyeSByZWFkJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHRpbWVzQ2FsbGVk
ID0gMDsKLSAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Ci0KLSAgY29u
c3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5x
dWV1ZSgnYScpOwotICAgICAgYy5jbG9zZSgpOwotICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsK
LSAgICB9LAotICAgIHB1bGwoKSB7Ci0gICAgICArK3RpbWVzQ2FsbGVkOwotICAgIH0KLSAgfSk7
Ci0KLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0gIHJldHVybiBzdGFydFByb21p
c2UudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgMCwgJ2FmdGVy
IHN0YXJ0IGZpbmlzaGVzLCBwdWxsIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCcpOwotCi0g
ICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gIH0pLnRoZW4oKCkgPT4gewotICAgIGFzc2VydF9l
cXVhbHModGltZXNDYWxsZWQsIDAsICdyZWFkaW5nIHNob3VsZCBub3QgaGF2ZSB0cmlnZ2VyZWQg
YSBwdWxsIGNhbGwnKTsKLQotICAgIHJldHVybiByZWFkZXIuY2xvc2VkOwotICB9KS50aGVuKCgp
ID0+IHsKLSAgICBhc3NlcnRfZXF1YWxzKHRpbWVzQ2FsbGVkLCAwLCAnc3RyZWFtIHNob3VsZCBo
YXZlIGNsb3NlZCB3aXRoIHN0aWxsIG5vIGNhbGxzIHRvIHB1bGwnKTsKLSAgfSk7Ci0KLX0sICdS
ZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgYWZ0ZXIgc3RhcnQgaWYgdGhlIHN0
cmVhbSBpcyBub3cgY2xvc2VkJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHRp
bWVzQ2FsbGVkID0gMDsKLSAgbGV0IHJlc29sdmU7Ci0gIGNvbnN0IHJlYWR5ID0gbmV3IFByb21p
c2UociA9PiByZXNvbHZlID0gcik7Ci0KLSAgbmV3IFJlYWRhYmxlU3RyZWFtKAotICAgIHsKLSAg
ICAgIHN0YXJ0KCkge30sCi0gICAgICBwdWxsKGMpIHsKLSAgICAgICAgYy5lbnF1ZXVlKCsrdGlt
ZXNDYWxsZWQpOwotCi0gICAgICAgIGlmICh0aW1lc0NhbGxlZCA9PT0gNCkgewotICAgICAgICAg
IHJlc29sdmUoKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0sCi0gICAgewotICAgICAgc2l6
ZSgpIHsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgICB9LAotICAgICAgaGlnaFdhdGVyTWFyazog
NAotICAgIH0KLSAgKTsKLQotICByZXR1cm4gcmVhZHkudGhlbigoKSA9PiB7Ci0gICAgLy8gYWZ0
ZXIgc3RhcnQ6IHNpemUgPSAwLCBwdWxsKCkKLSAgICAvLyBhZnRlciBlbnF1ZXVlKDEpOiBzaXpl
ID0gMSwgcHVsbCgpCi0gICAgLy8gYWZ0ZXIgZW5xdWV1ZSgyKTogc2l6ZSA9IDIsIHB1bGwoKQot
ICAgIC8vIGFmdGVyIGVucXVldWUoMyk6IHNpemUgPSAzLCBwdWxsKCkKLSAgICAvLyBhZnRlciBl
bnF1ZXVlKDQpOiBzaXplID0gNCwgZG8gbm90IHB1bGwKLSAgICBhc3NlcnRfZXF1YWxzKHRpbWVz
Q2FsbGVkLCA0LCAncHVsbCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGZvdXIgdGltZXMnKTsK
LSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCBhZnRlciBlbnF1
ZXVlaW5nIGZyb20gaW5zaWRlIHB1bGwgKHdpdGggbm8gcmVhZCByZXF1ZXN0cyksIGlmIHN0cmF0
ZWd5IGFsbG93cycpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBwdWxsQ2FsbGVk
ID0gZmFsc2U7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHB1bGwo
YykgewotICAgICAgcHVsbENhbGxlZCA9IHRydWU7Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAgfQot
ICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLSAgcmV0dXJuIHJlYWRl
ci5jbG9zZWQudGhlbigoKSA9PiB7Ci0gICAgYXNzZXJ0X3RydWUocHVsbENhbGxlZCk7Ci0gIH0p
OwotCi19LCAnUmVhZGFibGVTdHJlYW0gcHVsbCBzaG91bGQgYmUgYWJsZSB0byBjbG9zZSBhIHN0
cmVhbS4nKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7Ci0K
LSAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBhc3NlcnRfZXF1
YWxzKGMuZW5xdWV1ZSgnYScpLCB1bmRlZmluZWQsICd0aGUgZmlyc3QgZW5xdWV1ZSBzaG91bGQg
cmV0dXJuIHVuZGVmaW5lZCcpOwotICAgICAgYy5jbG9zZSgpOwotCi0gICAgICBhc3NlcnRfdGhy
b3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gYy5lbnF1ZXVlKCdiJyksICdlbnF1ZXVlIGFmdGVy
IGNsb3NlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwotICAgICAgc3RhcnRDYWxsZWQgPSB0
cnVlOwotICAgIH0KLSAgfSk7Ci0KLSAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOwotCi19LCAn
UmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyBy
ZWFkYWJsZSBidXQgZHJhaW5pbmcnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHN0YXJ0Q2Fs
bGVkID0gZmFsc2U7Ci0KLSAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0g
ICAgICBjLmNsb3NlKCk7Ci0KLSAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAo
KSA9PiBjLmVucXVldWUoJ2EnKSwgJ2VucXVldWUgYWZ0ZXIgY2xvc2Ugc2hvdWxkIHRocm93IGEg
VHlwZUVycm9yJyk7Ci0gICAgICBzdGFydENhbGxlZCA9IHRydWU7Ci0gICAgfQotICB9KTsKLQot
ICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbTogZW5xdWV1
ZSBzaG91bGQgdGhyb3cgd2hlbiB0aGUgc3RyZWFtIGlzIGNsb3NlZCcpOwotCi10ZXN0KCgpID0+
IHsKLQotICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKLSAgY29uc3QgZXhwZWN0ZWRFcnJvciA9
IG5ldyBFcnJvcignaSBhbSBzYWQnKTsKLQotICBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0
YXJ0KGMpIHsKLSAgICAgIGMuZXJyb3IoZXhwZWN0ZWRFcnJvcik7Ci0KLSAgICAgIGFzc2VydF90
aHJvd3MoZXhwZWN0ZWRFcnJvciwgKCkgPT4gYy5lbnF1ZXVlKCdhJyksICdlbnF1ZXVlIGFmdGVy
IGVycm9yIHNob3VsZCB0aHJvdyB0aGF0IGVycm9yJyk7Ci0gICAgICBzdGFydENhbGxlZCA9IHRy
dWU7Ci0gICAgfQotICB9KTsKLQotICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7Ci0KLX0sICdS
ZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgdGhlIHN0b3JlZCBlcnJvciB3aGVu
IHRoZSBzdHJlYW0gaXMgZXJyb3JlZCcpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxl
dCBzdGFydENhbGxlZCA9IDA7Ci0gIGxldCBwdWxsQ2FsbGVkID0gMDsKLSAgbGV0IGNhbmNlbENh
bGxlZCA9IDA7Ci0KLSAgLyogZXNsaW50LWRpc2FibGUgbm8tdXNlLWJlZm9yZS1kZWZpbmUgKi8K
LSAgY2xhc3MgU291cmNlIHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBzdGFydENhbGxlZCsrOwot
ICAgICAgYXNzZXJ0X2VxdWFscyh0aGlzLCB0aGVTb3VyY2UsICdzdGFydCgpIHNob3VsZCBiZSBj
YWxsZWQgd2l0aCB0aGUgY29ycmVjdCB0aGlzJyk7Ci0gICAgICBjLmVucXVldWUoJ2EnKTsKLSAg
ICB9Ci0KLSAgICBwdWxsKCkgewotICAgICAgcHVsbENhbGxlZCsrOwotICAgICAgYXNzZXJ0X2Vx
dWFscyh0aGlzLCB0aGVTb3VyY2UsICdwdWxsKCkgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBj
b3JyZWN0IHRoaXMnKTsKLSAgICB9Ci0KLSAgICBjYW5jZWwoKSB7Ci0gICAgICBjYW5jZWxDYWxs
ZWQrKzsKLSAgICAgIGFzc2VydF9lcXVhbHModGhpcywgdGhlU291cmNlLCAnY2FuY2VsKCkgc2hv
dWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBjb3JyZWN0IHRoaXMnKTsKLSAgICB9Ci0gIH0KLSAgLyog
ZXNsaW50LWVuYWJsZSBuby11c2UtYmVmb3JlLWRlZmluZSAqLwotCi0gIGNvbnN0IHRoZVNvdXJj
ZSA9IG5ldyBTb3VyY2UoKTsKLSAgdGhlU291cmNlLmRlYnVnTmFtZSA9ICd0aGUgc291cmNlIG9i
amVjdCBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yJzsgLy8gbWFrZXMgdGVzdCBmYWlsdXJlcyBl
YXNpZXIgdG8gZGlhZ25vc2UKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh0aGVT
b3VyY2UpOwotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICByZXR1cm4gcmVh
ZGVyLnJlYWQoKS50aGVuKCgpID0+IHsKLSAgICByZWFkZXIucmVsZWFzZUxvY2soKTsKLSAgICBy
cy5jYW5jZWwoKTsKLSAgICBhc3NlcnRfZXF1YWxzKHN0YXJ0Q2FsbGVkLCAxKTsKLSAgICBhc3Nl
cnRfZXF1YWxzKHB1bGxDYWxsZWQsIDEpOwotICAgIGFzc2VydF9lcXVhbHMoY2FuY2VsQ2FsbGVk
LCAxKTsKLSAgICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkOwotICB9KTsKLQotfSwgJ1Jl
YWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRob2RzIGFzIG1l
dGhvZHMnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7Ci0g
IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYXNzZXJ0X2VxdWFs
cyhjLmRlc2lyZWRTaXplLCAxKTsKLSAgICAgIGMuZW5xdWV1ZSgnYScpOwotICAgICAgYXNzZXJ0
X2VxdWFscyhjLmRlc2lyZWRTaXplLCAwKTsKLSAgICAgIGMuZW5xdWV1ZSgnYicpOwotICAgICAg
YXNzZXJ0X2VxdWFscyhjLmRlc2lyZWRTaXplLCAtMSk7Ci0gICAgICBjLmVucXVldWUoJ2MnKTsK
LSAgICAgIGFzc2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgLTIpOwotICAgICAgYy5lbnF1ZXVl
KCdkJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGMuZGVzaXJlZFNpemUsIC0zKTsKLSAgICAgIGMu
ZW5xdWV1ZSgnZScpOwotICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOwotICAgIH0KLSAgfSk7Ci0K
LSAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOwotCi19LCAnUmVhZGFibGVTdHJlYW0gc3RyYXRl
Z2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGdpdmUgZGVzaXJlZFNpemUgb2YgMSB0
byBzdGFydCwgZGVjcmVhc2luZyBieSAxIHBlciBlbnF1ZXVlJyk7Ci0KLXByb21pc2VfdGVzdCgo
KSA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0p
OwotICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICBhc3NlcnRfZXF1YWxzKGNv
bnRyb2xsZXIuZGVzaXJlZFNpemUsIDEsICdkZXNpcmVkU2l6ZSBzaG91bGQgc3RhcnQgYXQgMScp
OwotICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKLSAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVy
LmRlc2lyZWRTaXplLCAwLCAnZGVzaXJlZFNpemUgc2hvdWxkIGRlY3JlYXNlIHRvIDAgYWZ0ZXIg
Zmlyc3QgZW5xdWV1ZScpOwotCi0gIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0MSA9
PiB7Ci0gICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MSwgeyB2YWx1ZTogJ2EnLCBkb25l
OiBmYWxzZSB9LCAnZmlyc3QgY2h1bmsgcmVhZCBzaG91bGQgYmUgY29ycmVjdCcpOwotCi0gICAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnZGVzaXJlZFNpemUgc2hv
dWxkIGdvIHVwIHRvIDEgYWZ0ZXIgdGhlIGZpcnN0IHJlYWQnKTsKLSAgICBjb250cm9sbGVyLmVu
cXVldWUoJ2InKTsKLSAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAs
ICdkZXNpcmVkU2l6ZSBzaG91bGQgZ28gZG93biB0byAwIGFmdGVyIHRoZSBzZWNvbmQgZW5xdWV1
ZScpOwotCi0gICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Ci0gIH0pLnRoZW4ocmVzdWx0MiA9PiB7
Ci0gICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MiwgeyB2YWx1ZTogJ2InLCBkb25lOiBm
YWxzZSB9LCAnc2Vjb25kIGNodW5rIHJlYWQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLQotICAgIGFz
c2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXplIHNob3Vs
ZCBnbyB1cCB0byAxIGFmdGVyIHRoZSBzZWNvbmQgcmVhZCcpOwotICAgIGNvbnRyb2xsZXIuZW5x
dWV1ZSgnYycpOwotICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwg
J2Rlc2lyZWRTaXplIHNob3VsZCBnbyBkb3duIHRvIDAgYWZ0ZXIgdGhlIHRoaXJkIGVucXVldWUn
KTsKLQotICAgIHJldHVybiByZWFkZXIucmVhZCgpOwotICB9KS50aGVuKHJlc3VsdDMgPT4gewot
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDMsIHsgdmFsdWU6ICdjJywgZG9uZTogZmFs
c2UgfSwgJ3RoaXJkIGNodW5rIHJlYWQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLQotICAgIGFzc2Vy
dF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBn
byB1cCB0byAxIGFmdGVyIHRoZSB0aGlyZCByZWFkJyk7Ci0gICAgY29udHJvbGxlci5lbnF1ZXVl
KCdkJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnZGVz
aXJlZFNpemUgc2hvdWxkIGdvIGRvd24gdG8gMCBhZnRlciB0aGUgZm91cnRoIGVucXVldWUnKTsK
LSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJh
dGVneSBzaG91bGQgY29udGludWUgZ2l2aW5nIGRlc2lyZWRTaXplIG9mIDEgaWYgdGhlIGNodW5r
cyBhcmUgcmVhZCBpbW1lZGlhdGVseScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29u
c3QgcmFuZG9tU291cmNlID0gbmV3IFJhbmRvbVB1c2hTb3VyY2UoOCk7Ci0KLSAgY29uc3QgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGFzc2VydF9lcXVh
bHModHlwZW9mIGMsICdvYmplY3QnLCAnYyBzaG91bGQgYmUgYW4gb2JqZWN0IGluIHN0YXJ0Jyk7
Ci0gICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBjLmVucXVldWUsICdmdW5jdGlvbicsICdlbnF1
ZXVlIHNob3VsZCBiZSBhIGZ1bmN0aW9uIGluIHN0YXJ0Jyk7Ci0gICAgICBhc3NlcnRfZXF1YWxz
KHR5cGVvZiBjLmNsb3NlLCAnZnVuY3Rpb24nLCAnY2xvc2Ugc2hvdWxkIGJlIGEgZnVuY3Rpb24g
aW4gc3RhcnQnKTsKLSAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGMuZXJyb3IsICdmdW5jdGlv
bicsICdlcnJvciBzaG91bGQgYmUgYSBmdW5jdGlvbiBpbiBzdGFydCcpOwotCi0gICAgICByYW5k
b21Tb3VyY2Uub25kYXRhID0gdC5zdGVwX2Z1bmMoY2h1bmsgPT4gewotICAgICAgICBpZiAoIWMu
ZW5xdWV1ZShjaHVuaykgPD0gMCkgewotICAgICAgICAgIHJhbmRvbVNvdXJjZS5yZWFkU3RvcCgp
OwotICAgICAgICB9Ci0gICAgICB9KTsKLQotICAgICAgcmFuZG9tU291cmNlLm9uZW5kID0gYy5j
bG9zZS5iaW5kKGMpOwotICAgICAgcmFuZG9tU291cmNlLm9uZXJyb3IgPSBjLmVycm9yLmJpbmQo
Yyk7Ci0gICAgfSwKLQotICAgIHB1bGwoYykgewotICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2Yg
YywgJ29iamVjdCcsICdjIHNob3VsZCBiZSBhbiBvYmplY3QgaW4gcHVsbCcpOwotICAgICAgYXNz
ZXJ0X2VxdWFscyh0eXBlb2YgYy5lbnF1ZXVlLCAnZnVuY3Rpb24nLCAnZW5xdWV1ZSBzaG91bGQg
YmUgYSBmdW5jdGlvbiBpbiBwdWxsJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBjLmNs
b3NlLCAnZnVuY3Rpb24nLCAnY2xvc2Ugc2hvdWxkIGJlIGEgZnVuY3Rpb24gaW4gcHVsbCcpOwot
Ci0gICAgICByYW5kb21Tb3VyY2UucmVhZFN0YXJ0KCk7Ci0gICAgfQotICB9KTsKLQotICByZXR1
cm4gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHJzKS50aGVuKGNodW5rcyA9PiB7Ci0gICAgYXNzZXJ0
X2VxdWFscyhjaHVua3MubGVuZ3RoLCA4LCAnOCBjaHVua3Mgc2hvdWxkIGJlIHJlYWQnKTsKLSAg
ICBmb3IgKGNvbnN0IGNodW5rIG9mIGNodW5rcykgewotICAgICAgYXNzZXJ0X2VxdWFscyhjaHVu
ay5sZW5ndGgsIDEyOCwgJ2NodW5rIHNob3VsZCBoYXZlIDEyOCBieXRlcycpOwotICAgIH0KLSAg
fSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHJh
bmRvbSBwdXNoIHNvdXJjZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGNvbnN0IHJz
ID0gc2VxdWVudGlhbFJlYWRhYmxlU3RyZWFtKDEwKTsKLQotICByZXR1cm4gcmVhZGFibGVTdHJl
YW1Ub0FycmF5KHJzKS50aGVuKGNodW5rcyA9PiB7Ci0gICAgYXNzZXJ0X3RydWUocnMuc291cmNl
LmNsb3NlZCwgJ3NvdXJjZSBzaG91bGQgYmUgY2xvc2VkIGFmdGVyIGFsbCBjaHVua3MgYXJlIHJl
YWQnKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rcywgWzEsIDIsIDMsIDQsIDUsIDYs
IDcsIDgsIDksIDEwXSwgJ3RoZSBleHBlY3RlZCAxMCBjaHVua3Mgc2hvdWxkIGJlIHJlYWQnKTsK
LSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBh
IHN5bmMgcHVsbCBzb3VyY2UnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCBy
cyA9IHNlcXVlbnRpYWxSZWFkYWJsZVN0cmVhbSgxMCwgeyBhc3luYzogdHJ1ZSB9KTsKLQotICBy
ZXR1cm4gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHJzKS50aGVuKGNodW5rcyA9PiB7Ci0gICAgYXNz
ZXJ0X3RydWUocnMuc291cmNlLmNsb3NlZCwgJ3NvdXJjZSBzaG91bGQgYmUgY2xvc2VkIGFmdGVy
IGFsbCBjaHVua3MgYXJlIHJlYWQnKTsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rcywg
WzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXSwgJ3RoZSBleHBlY3RlZCAxMCBjaHVua3Mg
c2hvdWxkIGJlIHJlYWQnKTsKLSAgfSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlv
biB0ZXN0OiBhZGFwdGluZyBhbiBhc3luYyBwdWxsIHNvdXJjZScpOwotCi1kb25lKCk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcGlwZS10aHJvdWdoLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFi
bGUtc3RyZWFtcy9waXBlLXRocm91Z2gtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3ZTE4N2EyYzM5NWNmYTY0MjAzNTY5MGM3NzFjZmY5NjAyMTllMDg3Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFt
cy9waXBlLXRocm91Z2gtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBA
QAotCi1QQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCBzaG91bGQgd29y
ayBnZW5lcmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cyAKLVBBU1MgUmVhZGFi
bGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3VsZCB0aHJvdyB3aGVuIGl0cyBmaXJz
dCBhcmd1bWVudCBpcyBub3QgY29udmVydGlibGUgdG8gYW4gb2JqZWN0IAotUEFTUyBSZWFkYWJs
ZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2ggc2hvdWxkIHRocm93IHdoZW4gInRoaXMiIGhh
cyBubyBwaXBlVG8gbWV0aG9kIAotUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRo
cm91Z2ggc2hvdWxkIHJldGhyb3cgZXJyb3JzIGZyb20gYWNjZXNzaW5nIHBpcGVUbywgcmVhZGFi
bGUsIG9yIHdyaXRhYmxlIAotUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91
Z2ggc2hvdWxkIHdvcmsgd2l0aCBtaXNzaW5nIHJlYWRhYmxlLCB3cml0YWJsZSwgb3Igb3B0aW9u
cyAKLUZBSUwgTG9hZCBwaXBlLXRocm91Z2guanMgd2l0aCBTaGFyZWRXb3JrZXIgYXNzZXJ0X3Vu
cmVhY2hlZDogU2hhcmVkV29ya2VyIGlzIHVuYXZhaWxhYmxlIFJlYWNoZWQgdW5yZWFjaGFibGUg
Y29kZQotRkFJTCBVbnRpdGxlZCB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGlu
ZyAnbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuZ2V0UmVnaXN0cmF0aW9uJykKLVBBU1MgUmVhZGFi
bGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3VsZCB3b3JrIGdlbmVyaWNhbGx5IG9u
IGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzIAotUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5
cGUucGlwZVRocm91Z2ggc2hvdWxkIHRocm93IHdoZW4gaXRzIGZpcnN0IGFyZ3VtZW50IGlzIG5v
dCBjb252ZXJ0aWJsZSB0byBhbiBvYmplY3QgCi1QQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlw
ZS5waXBlVGhyb3VnaCBzaG91bGQgdGhyb3cgd2hlbiAidGhpcyIgaGFzIG5vIHBpcGVUbyBtZXRo
b2QgCi1QQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCBzaG91bGQgcmV0
aHJvdyBlcnJvcnMgZnJvbSBhY2Nlc3NpbmcgcGlwZVRvLCByZWFkYWJsZSwgb3Igd3JpdGFibGUg
Ci1QQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCBzaG91bGQgd29yayB3
aXRoIG1pc3NpbmcgcmVhZGFibGUsIHdyaXRhYmxlLCBvciBvcHRpb25zIAotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBp
L3JlYWRhYmxlLXN0cmVhbXMvcGlwZS10aHJvdWdoLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcGlw
ZS10aHJvdWdoLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyZDk4ZDQ1YWY0
NmYyNWZlMDYyNjIxMGQ4ZmExOTE1Y2M2NDVjZjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3BpcGUtdGhyb3VnaC5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlcnMvcmVz
b3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3Rlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InBpcGUtdGhyb3Vn
aC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotd29ya2VyX3Rlc3QoJ3Bp
cGUtdGhyb3VnaC5qcycpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMv
cGlwZS10aHJvdWdoLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3BpcGUtdGhyb3VnaC5qcwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk4ODkyOGU3OGIxOGU3M2FmNDRlY2Y0OWRkMWU0YWY4
MWI2YjNlZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3Jl
YWRhYmxlLXN0cmVhbXMvcGlwZS10aHJvdWdoLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICsw
LDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgewotICBzZWxm
LmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1w
b3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOwotfQotCi10ZXN0KCgpID0+
IHsKLQotICBsZXQgcGlwZVRvQXJndW1lbnRzOwotICBjb25zdCB0aGlzVmFsdWUgPSB7Ci0gICAg
cGlwZVRvKCkgewotICAgICAgcGlwZVRvQXJndW1lbnRzID0gYXJndW1lbnRzOwotICAgIH0KLSAg
fTsKLQotICBjb25zdCBpbnB1dCA9IHsgcmVhZGFibGU6IHt9LCB3cml0YWJsZToge30gfTsKLSAg
Y29uc3Qgb3B0aW9ucyA9IHt9OwotICBjb25zdCByZXN1bHQgPSBSZWFkYWJsZVN0cmVhbS5wcm90
b3R5cGUucGlwZVRocm91Z2guY2FsbCh0aGlzVmFsdWUsIGlucHV0LCBvcHRpb25zKTsKLQotICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHBpcGVUb0FyZ3VtZW50cywgW2lucHV0LndyaXRhYmxlLCBvcHRp
b25zXSwKLSAgICAnY29ycmVjdCBhcmd1bWVudHMgc2hvdWxkIGJlIHBhc3NlZCB0byB0aGlzVmFs
dWUucGlwZVRvJyk7Ci0gIGFzc2VydF9lcXVhbHMocmVzdWx0LCBpbnB1dC5yZWFkYWJsZSwgJ3Jl
dHVybiB2YWx1ZSBzaG91bGQgYmUgdGhlIHBhc3NlZCByZWFkYWJsZSBwcm9wZXJ0eScpOwotCi19
LCAnUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3VsZCB3b3JrIGdlbmVy
aWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzJyk7Ci0KLXRlc3QoKCkgPT4gewot
Ci0gIGNvbnN0IHRoaXNWYWx1ZSA9IHsKLSAgICBwaXBlVG8oKSB7Ci0gICAgICBhc3NlcnRfdW5y
ZWFjaGVkKCdwaXBlVG8gc2hvdWxkIG5vdCBiZSBjYWxsZWQnKTsKLSAgICB9Ci0gIH07Ci0KLSAg
bWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ3BpcGVUaHJvdWdoJywgdGhp
c1ZhbHVlLCBbdW5kZWZpbmVkLCB7fV0pOwotICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW0u
cHJvdG90eXBlLCAncGlwZVRocm91Z2gnLCB0aGlzVmFsdWUsIFtudWxsLCB7fV0pOwotCi19LCAn
UmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3VsZCB0aHJvdyB3aGVuIGl0
cyBmaXJzdCBhcmd1bWVudCBpcyBub3QgY29udmVydGlibGUgdG8gYW4gb2JqZWN0Jyk7Ci0KLXRl
c3QoKCkgPT4gewotCi0gIGNvbnN0IGFyZ3MgPSBbeyByZWFkYWJsZToge30sIHdyaXRhYmxlOiB7
fSB9LCB7fV07Ci0KLSAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ3Bp
cGVUaHJvdWdoJywgdW5kZWZpbmVkLCBhcmdzKTsKLSAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3Ry
ZWFtLnByb3RvdHlwZSwgJ3BpcGVUaHJvdWdoJywgbnVsbCwgYXJncyk7Ci0gIG1ldGhvZFRocm93
cyhSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUsICdwaXBlVGhyb3VnaCcsIDEsIGFyZ3MpOwotICBt
ZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLCAncGlwZVRocm91Z2gnLCB7IHBp
cGVUbzogJ3Rlc3QnIH0sIGFyZ3MpOwotCi19LCAnUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBp
cGVUaHJvdWdoIHNob3VsZCB0aHJvdyB3aGVuICJ0aGlzIiBoYXMgbm8gcGlwZVRvIG1ldGhvZCcp
OwotCi10ZXN0KCgpID0+IHsKLSAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ3BvdGF0bycpOwot
Ci0gIGNvbnN0IHRocm93aW5nUGlwZVRvID0gewotICAgIGdldCBwaXBlVG8oKSB7Ci0gICAgICB0
aHJvdyBlcnJvcjsKLSAgICB9Ci0gIH07Ci0gIGFzc2VydF90aHJvd3MoZXJyb3IsCi0gICAgKCkg
PT4gUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoLmNhbGwodGhyb3dpbmdQaXBl
VG8sIHsgcmVhZGFibGU6IHsgfSwgd3JpdGFibGU6IHsgfSB9LCB7fSksCi0gICAgJ3BpcGVUaHJv
dWdoIHNob3VsZCByZXRocm93IHRoZSBlcnJvciB0aHJvd24gYnkgcGlwZVRvJyk7Ci0KLSAgY29u
c3QgdGhpc1ZhbHVlID0gewotICAgIHBpcGVUbygpIHsKLSAgICAgIGFzc2VydF91bnJlYWNoZWQo
J3BpcGVUbyBzaG91bGQgbm90IGJlIGNhbGxlZCcpOwotICAgIH0KLSAgfTsKLQotICBjb25zdCB0
aHJvd2luZ1dyaXRhYmxlID0gewotICAgIHJlYWRhYmxlOiB7fSwKLSAgICBnZXQgd3JpdGFibGUo
KSB7Ci0gICAgICB0aHJvdyBlcnJvcjsKLSAgICB9Ci0gIH07Ci0gIGFzc2VydF90aHJvd3MoZXJy
b3IsCi0gICAgKCkgPT4gUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoLmNhbGwo
dGhpc1ZhbHVlLCB0aHJvd2luZ1dyaXRhYmxlLCB7fSksCi0gICAgJ3BpcGVUaHJvdWdoIHNob3Vs
ZCByZXRocm93IHRoZSBlcnJvciB0aHJvd24gYnkgdGhlIHdyaXRhYmxlIGdldHRlcicpOwotCi0g
IGNvbnN0IHRocm93aW5nUmVhZGFibGUgPSB7Ci0gICAgZ2V0IHJlYWRhYmxlKCkgewotICAgICAg
dGhyb3cgZXJyb3I7Ci0gICAgfSwKLSAgICB3cml0YWJsZToge30KLSAgfTsKLSAgYXNzZXJ0X3Ro
cm93cyhlcnJvciwKLSAgICAoKSA9PiBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91
Z2guY2FsbCh0aGlzVmFsdWUsIHRocm93aW5nUmVhZGFibGUsIHt9KSwKLSAgICAncGlwZVRocm91
Z2ggc2hvdWxkIHJldGhyb3cgdGhlIGVycm9yIHRocm93biBieSB0aGUgcmVhZGFibGUgZ2V0dGVy
Jyk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2ggc2hvdWxkIHJl
dGhyb3cgZXJyb3JzIGZyb20gYWNjZXNzaW5nIHBpcGVUbywgcmVhZGFibGUsIG9yIHdyaXRhYmxl
Jyk7Ci0KLXRlc3QoKCkgPT4gewotCi0gIGxldCBjb3VudCA9IDA7Ci0gIGNvbnN0IHRoaXNWYWx1
ZSA9IHsKLSAgICBwaXBlVG8oKSB7Ci0gICAgICArK2NvdW50OwotICAgIH0KLSAgfTsKLQotICBS
ZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2guY2FsbCh0aGlzVmFsdWUsIHsgcmVh
ZGFibGU6IHt9LCB3cml0YWJsZToge30gfSk7Ci0gIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5w
aXBlVGhyb3VnaC5jYWxsKHRoaXNWYWx1ZSwgeyByZWFkYWJsZToge30gfSwge30pOwotICBSZWFk
YWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2guY2FsbCh0aGlzVmFsdWUsIHsgd3JpdGFi
bGU6IHt9IH0sIHt9KTsKLQotICBhc3NlcnRfZXF1YWxzKGNvdW50LCAzLCAncGlwZVRvIHdhcyBj
YWxsZWQgMyB0aW1lcycpOwotCi19LCAnUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJv
dWdoIHNob3VsZCB3b3JrIHdpdGggbWlzc2luZyByZWFkYWJsZSwgd3JpdGFibGUsIG9yIG9wdGlv
bnMnKTsKLQotZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbS1yZWFkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bS1yZWFkZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjAz
ODJiNjgyODYwYWRmNDY1Zjk2NTkxNTM0NGY0M2M0YTM0ZDU2Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW0tcmVhZGVyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLQot
UEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBpbmRpcmVj
dGx5IAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBzaG91bGQgZ2V0IGEg
UmVhZGFibGVTdHJlYW0gb2JqZWN0IGFzIGFyZ3VtZW50IAotRkFJTCBSZWFkYWJsZVN0cmVhbVJl
YWRlciBpbnN0YW5jZXMgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVz
IGFzc2VydF9lcXVhbHM6IG1ldGhvZCBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUgZXhwZWN0ZWQg
ZmFsc2UgYnV0IGdvdCB0cnVlCi1QQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBzaG91
bGQgYWx3YXlzIHJldHVybiB0aGUgc2FtZSBwcm9taXNlIG9iamVjdCAKLVBBU1MgQ29uc3RydWN0
aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZhaWwgaWYgdGhlIHN0
cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVjdCBjb25zdHJ1Y3Rpb24pIAotUEFTUyBH
ZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgdmlhIGdldFJlYWRlciBzaG91bGQgZmFpbCBp
ZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0IGNvbnN0cnVjdGlvbikg
Ci1QQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3Vs
ZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBnZXRSZWFkZXIpIAot
UEFTUyBHZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgdmlhIGdldFJlYWRlciBzaG91bGQg
ZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZ2V0UmVhZGVyKSAKLVBB
U1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJl
IE9LIGlmIHRoZSBzdHJlYW0gaXMgY2xvc2VkIAotUEFTUyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJs
ZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBpcyBlcnJv
cmVkIAotUEFTUyBSZWFkaW5nIGZyb20gYSByZWFkZXIgZm9yIGFuIGVtcHR5IHN0cmVhbSB3aWxs
IHdhaXQgdW50aWwgYSBjaHVuayBpcyBhdmFpbGFibGUgCi1QQVNTIGNhbmNlbCgpIG9uIGEgcmVh
ZGVyIGRvZXMgbm90IHJlbGVhc2UgdGhlIHJlYWRlciAKLVBBU1MgY2xvc2VkIHNob3VsZCBiZSBm
dWxmaWxsZWQgYWZ0ZXIgc3RyZWFtIGlzIGNsb3NlZCAoLmNsb3NlZCBhY2Nlc3MgYmVmb3JlIGFj
cXVpcmluZykgCi1QQVNTIGNsb3NlZCBzaG91bGQgYmUgcmVqZWN0ZWQgYWZ0ZXIgcmVhZGVyIHJl
bGVhc2VzIGl0cyBsb2NrIChtdWx0aXBsZSBzdHJlYW0gbG9ja3MpIAotUEFTUyBNdWx0aXBsZSBy
ZWFkZXJzIGNhbiBhY2Nlc3MgdGhlIHN0cmVhbSBpbiBzZXF1ZW5jZSAKLVBBU1MgQ2Fubm90IHVz
ZSBhbiBhbHJlYWR5LXJlbGVhc2VkIHJlYWRlciB0byB1bmxvY2sgYSBzdHJlYW0gYWdhaW4gCi1Q
QVNTIGNhbmNlbCgpIG9uIGEgcmVsZWFzZWQgcmVhZGVyIGlzIGEgbm8tb3AgYW5kIGRvZXMgbm90
IHBhc3MgdGhyb3VnaCAKLVBBU1MgR2V0dGluZyBhIHNlY29uZCByZWFkZXIgYWZ0ZXIgZXJyb3Jp
bmcgdGhlIHN0cmVhbSBhbmQgcmVsZWFzaW5nIHRoZSByZWFkZXIgc2hvdWxkIHN1Y2NlZWQgCi1Q
QVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBwcm9taXNlIHNob3VsZCBiZSByZWplY3Rl
ZCB3aXRoIHVuZGVmaW5lZCBpZiB0aGF0IGlzIHRoZSBlcnJvciAKLVBBU1MgUmVhZGFibGVTdHJl
YW1SZWFkZXI6IGlmIHN0YXJ0IHJlamVjdHMgd2l0aCBubyBwYXJhbWV0ZXIsIGl0IHNob3VsZCBl
cnJvciB0aGUgc3RyZWFtIHdpdGggYW4gdW5kZWZpbmVkIGVycm9yIAotUEFTUyBFcnJvcmluZyBh
IFJlYWRhYmxlU3RyZWFtIGFmdGVyIGNoZWNraW5nIGNsb3NlZCBzaG91bGQgcmVqZWN0IFJlYWRh
YmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBwcm9taXNlIAotUEFTUyBFcnJvcmluZyBhIFJlYWRhYmxl
U3RyZWFtIGJlZm9yZSBjaGVja2luZyBjbG9zZWQgc2hvdWxkIHJlamVjdCBSZWFkYWJsZVN0cmVh
bVJlYWRlciBjbG9zZWQgcHJvbWlzZSAKLVBBU1MgUmVhZGluZyB0d2ljZSBvbiBhIHN0cmVhbSB0
aGF0IGdldHMgY2xvc2VkIAotUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgY2xvc2VkIHN0cmVhbSAK
LVBBU1MgUmVhZGluZyB0d2ljZSBvbiBhbiBlcnJvcmVkIHN0cmVhbSAKLVBBU1MgUmVhZGluZyB0
d2ljZSBvbiBhIHN0cmVhbSB0aGF0IGdldHMgZXJyb3JlZCAKLUZBSUwgTG9hZCByZWFkYWJsZS1z
dHJlYW0tcmVhZGVyLmpzIHdpdGggU2hhcmVkV29ya2VyIGFzc2VydF91bnJlYWNoZWQ6IFNoYXJl
ZFdvcmtlciBpcyB1bmF2YWlsYWJsZSBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKLUZBSUwgVW50
aXRsZWQgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ25hdmlnYXRvci5z
ZXJ2aWNlV29ya2VyLmdldFJlZ2lzdHJhdGlvbicpCi1QQVNTIENhbiBnZXQgdGhlIFJlYWRhYmxl
U3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0bHkgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
UmVhZGVyIGNvbnN0cnVjdG9yIHNob3VsZCBnZXQgYSBSZWFkYWJsZVN0cmVhbSBvYmplY3QgYXMg
YXJndW1lbnQgCi1GQUlMIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGluc3RhbmNlcyBzaG91bGQgaGF2
ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3BlcnRpZXMgYXNzZXJ0X2VxdWFsczogbWV0aG9kIHNo
b3VsZCBiZSBub24tZW51bWVyYWJsZSBleHBlY3RlZCBmYWxzZSBidXQgZ290IHRydWUKLVBBU1Mg
UmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHNob3VsZCBhbHdheXMgcmV0dXJuIHRoZSBzYW1l
IHByb21pc2Ugb2JqZWN0IAotUEFTUyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRl
ciBkaXJlY3RseSBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2
aWEgZGlyZWN0IGNvbnN0cnVjdGlvbikgCi1QQVNTIEdldHRpbmcgYSBSZWFkYWJsZVN0cmVhbVJl
YWRlciB2aWEgZ2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBs
b2NrZWQgKHZpYSBkaXJlY3QgY29uc3RydWN0aW9uKSAKLVBBU1MgQ29uc3RydWN0aW5nIGEgUmVh
ZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBh
bHJlYWR5IGxvY2tlZCAodmlhIGdldFJlYWRlcikgCi1QQVNTIEdldHRpbmcgYSBSZWFkYWJsZVN0
cmVhbVJlYWRlciB2aWEgZ2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxy
ZWFkeSBsb2NrZWQgKHZpYSBnZXRSZWFkZXIpIAotUEFTUyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJs
ZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBpcyBjbG9z
ZWQgCi1QQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNo
b3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlzIGVycm9yZWQgCi1QQVNTIFJlYWRpbmcgZnJvbSBh
IHJlYWRlciBmb3IgYW4gZW1wdHkgc3RyZWFtIHdpbGwgd2FpdCB1bnRpbCBhIGNodW5rIGlzIGF2
YWlsYWJsZSAKLVBBU1MgY2FuY2VsKCkgb24gYSByZWFkZXIgZG9lcyBub3QgcmVsZWFzZSB0aGUg
cmVhZGVyIAotUEFTUyBjbG9zZWQgc2hvdWxkIGJlIGZ1bGZpbGxlZCBhZnRlciBzdHJlYW0gaXMg
Y2xvc2VkICguY2xvc2VkIGFjY2VzcyBiZWZvcmUgYWNxdWlyaW5nKSAKLVBBU1MgY2xvc2VkIHNo
b3VsZCBiZSByZWplY3RlZCBhZnRlciByZWFkZXIgcmVsZWFzZXMgaXRzIGxvY2sgKG11bHRpcGxl
IHN0cmVhbSBsb2NrcykgCi1QQVNTIE11bHRpcGxlIHJlYWRlcnMgY2FuIGFjY2VzcyB0aGUgc3Ry
ZWFtIGluIHNlcXVlbmNlIAotUEFTUyBDYW5ub3QgdXNlIGFuIGFscmVhZHktcmVsZWFzZWQgcmVh
ZGVyIHRvIHVubG9jayBhIHN0cmVhbSBhZ2FpbiAKLVBBU1MgY2FuY2VsKCkgb24gYSByZWxlYXNl
ZCByZWFkZXIgaXMgYSBuby1vcCBhbmQgZG9lcyBub3QgcGFzcyB0aHJvdWdoIAotUEFTUyBHZXR0
aW5nIGEgc2Vjb25kIHJlYWRlciBhZnRlciBlcnJvcmluZyB0aGUgc3RyZWFtIGFuZCByZWxlYXNp
bmcgdGhlIHJlYWRlciBzaG91bGQgc3VjY2VlZCAKLVBBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIg
Y2xvc2VkIHByb21pc2Ugc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdW5kZWZpbmVkIGlmIHRoYXQg
aXMgdGhlIGVycm9yIAotUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlcjogaWYgc3RhcnQgcmVqZWN0
cyB3aXRoIG5vIHBhcmFtZXRlciwgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0gd2l0aCBhbiB1
bmRlZmluZWQgZXJyb3IgCi1QQVNTIEVycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gYWZ0ZXIgY2hl
Y2tpbmcgY2xvc2VkIHNob3VsZCByZWplY3QgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHBy
b21pc2UgCi1QQVNTIEVycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gYmVmb3JlIGNoZWNraW5nIGNs
b3NlZCBzaG91bGQgcmVqZWN0IFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBwcm9taXNlIAot
UEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgc3RyZWFtIHRoYXQgZ2V0cyBjbG9zZWQgCi1QQVNTIFJl
YWRpbmcgdHdpY2Ugb24gYSBjbG9zZWQgc3RyZWFtIAotUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGFu
IGVycm9yZWQgc3RyZWFtIAotUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgc3RyZWFtIHRoYXQgZ2V0
cyBlcnJvcmVkIAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFt
LXJlYWRlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGYwZGIxMWQxYmM0ZTgzYzNmNTM4ZjQ3
ZTY2N2M3MzVhYjQwYzhmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlcnMvcmVzb3Vy
Y2VzL3Rlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0icmVhZGFibGUt
c3RyZWFtLXJlYWRlci5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotJ3VzZSBzdHJpY3QnOwotd29y
a2VyX3Rlc3QoJ3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuanMnKTsKLTwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
LWFwaS9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuanMgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxl
LXN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMWQ1YmMxMzAwNGY4YTM1N2ZjNWU4MjUyMmYzYmQzMDlmMTMxMWI5YS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMv
cmVhZGFibGUtc3RyZWFtLXJlYWRlci5qcworKysgL2Rldi9udWxsCkBAIC0xLDQ4NSArMCwwIEBA
Ci0ndXNlIHN0cmljdCc7Ci0KLWlmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKLSAgc2VsZi5pbXBv
cnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvcnMtdXRpbHMuanMnKTsKLSAgc2VsZi5pbXBvcnRTY3Jp
cHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Ci19Ci0KLWxldCBSZWFkYWJsZVN0cmVh
bVJlYWRlcjsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgLy8gSXQncyBub3QgZXhwb3NlZCBnbG9iYWxs
eSwgYnV0IHdlIHRlc3QgYSBmZXcgb2YgaXRzIHByb3BlcnRpZXMgaGVyZS4KLSAgUmVhZGFibGVT
dHJlYW1SZWFkZXIgPSAobmV3IFJlYWRhYmxlU3RyZWFtKCkpLmdldFJlYWRlcigpLmNvbnN0cnVj
dG9yOwotCi19LCAnQ2FuIGdldCB0aGUgUmVhZGFibGVTdHJlYW1SZWFkZXIgY29uc3RydWN0b3Ig
aW5kaXJlY3RseScpOwotCi10ZXN0KCgpID0+IHsKLQotICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBl
RXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKCdwb3RhdG8nKSk7Ci0gIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW1SZWFk
ZXIoe30pKTsKLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBSZWFk
YWJsZVN0cmVhbVJlYWRlcigpKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVj
dG9yIHNob3VsZCBnZXQgYSBSZWFkYWJsZVN0cmVhbSBvYmplY3QgYXMgYXJndW1lbnQnKTsKLQot
dGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgbWV0aG9kcyA9IFsnY2FuY2VsJywgJ2NvbnN0cnVjdG9y
JywgJ3JlYWQnLCAncmVsZWFzZUxvY2snXTsKLSAgY29uc3QgcHJvcGVydGllcyA9IG1ldGhvZHMu
Y29uY2F0KFsnY2xvc2VkJ10pLnNvcnQoKTsKLQotICBjb25zdCByc1JlYWRlciA9IG5ldyBSZWFk
YWJsZVN0cmVhbVJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0oKSk7Ci0gIGNvbnN0IHByb3RvID0g
T2JqZWN0LmdldFByb3RvdHlwZU9mKHJzUmVhZGVyKTsKLQotICBhc3NlcnRfYXJyYXlfZXF1YWxz
KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvKS5zb3J0KCksIHByb3BlcnRpZXMpOwot
Ci0gIGZvciAoY29uc3QgbSBvZiBtZXRob2RzKSB7Ci0gICAgY29uc3QgcHJvcERlc2MgPSBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBtKTsKLSAgICBhc3NlcnRfZXF1YWxz
KHByb3BEZXNjLmVudW1lcmFibGUsIGZhbHNlLCAnbWV0aG9kIHNob3VsZCBiZSBub24tZW51bWVy
YWJsZScpOwotICAgIGFzc2VydF9lcXVhbHMocHJvcERlc2MuY29uZmlndXJhYmxlLCB0cnVlLCAn
bWV0aG9kIHNob3VsZCBiZSBjb25maWd1cmFibGUnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHByb3BE
ZXNjLndyaXRhYmxlLCB0cnVlLCAnbWV0aG9kIHNob3VsZCBiZSB3cml0YWJsZScpOwotICAgIGFz
c2VydF9lcXVhbHModHlwZW9mIHJzUmVhZGVyW21dLCAnZnVuY3Rpb24nLCAnc2hvdWxkIGhhdmUg
YmUgYSBtZXRob2QnKTsKLSAgfQotCi0gIGNvbnN0IGNsb3NlZFByb3BEZXNjID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgJ2Nsb3NlZCcpOwotICBhc3NlcnRfZXF1YWxz
KGNsb3NlZFByb3BEZXNjLmVudW1lcmFibGUsIGZhbHNlLCAnY2xvc2VkIHNob3VsZCBiZSBub24t
ZW51bWVyYWJsZScpOwotICBhc3NlcnRfZXF1YWxzKGNsb3NlZFByb3BEZXNjLmNvbmZpZ3VyYWJs
ZSwgdHJ1ZSwgJ2Nsb3NlZCBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7Ci0gIGFzc2VydF9ub3Rf
ZXF1YWxzKGNsb3NlZFByb3BEZXNjLmdldCwgdW5kZWZpbmVkLCAnY2xvc2VkIHNob3VsZCBoYXZl
IGEgZ2V0dGVyJyk7Ci0gIGFzc2VydF9lcXVhbHMoY2xvc2VkUHJvcERlc2Muc2V0LCB1bmRlZmlu
ZWQsICdjbG9zZWQgc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyJyk7Ci0KLSAgYXNzZXJ0X2VxdWFs
cyhyc1JlYWRlci5jYW5jZWwubGVuZ3RoLCAxLCAnY2FuY2VsIGhhcyAxIHBhcmFtZXRlcicpOwot
ICBhc3NlcnRfbm90X2VxdWFscyhyc1JlYWRlci5jbG9zZWQsIHVuZGVmaW5lZCwgJ2hhcyBhIG5v
bi11bmRlZmluZWQgY2xvc2VkIHByb3BlcnR5Jyk7Ci0gIGFzc2VydF9lcXVhbHModHlwZW9mIHJz
UmVhZGVyLmNsb3NlZC50aGVuLCAnZnVuY3Rpb24nLCAnY2xvc2VkIHByb3BlcnR5IGlzIHRoZW5h
YmxlJyk7Ci0gIGFzc2VydF9lcXVhbHModHlwZW9mIHJzUmVhZGVyLmNvbnN0cnVjdG9yLCAnZnVu
Y3Rpb24nLCAnaGFzIGEgY29uc3RydWN0b3IgbWV0aG9kJyk7Ci0gIGFzc2VydF9lcXVhbHMocnNS
ZWFkZXIuY29uc3RydWN0b3IubGVuZ3RoLCAxLCAnY29uc3RydWN0b3IgaGFzIDEgcGFyYW1ldGVy
Jyk7Ci0gIGFzc2VydF9lcXVhbHModHlwZW9mIHJzUmVhZGVyLnJlYWQsICdmdW5jdGlvbicsICdo
YXMgYSBnZXRSZWFkZXIgbWV0aG9kJyk7Ci0gIGFzc2VydF9lcXVhbHMocnNSZWFkZXIucmVhZC5s
ZW5ndGgsIDAsICdyZWFkIGhhcyBubyBwYXJhbWV0ZXJzJyk7Ci0gIGFzc2VydF9lcXVhbHModHlw
ZW9mIHJzUmVhZGVyLnJlbGVhc2VMb2NrLCAnZnVuY3Rpb24nLCAnaGFzIGEgcmVsZWFzZUxvY2sg
bWV0aG9kJyk7Ci0gIGFzc2VydF9lcXVhbHMocnNSZWFkZXIucmVsZWFzZUxvY2subGVuZ3RoLCAw
LCAncmVsZWFzZUxvY2sgaGFzIG5vIHBhcmFtZXRlcnMnKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFt
UmVhZGVyIGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3BlcnRp
ZXMnKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnNSZWFkZXIgPSBuZXcgUmVhZGFibGVT
dHJlYW1SZWFkZXIobmV3IFJlYWRhYmxlU3RyZWFtKCkpOwotICBhc3NlcnRfZXF1YWxzKHJzUmVh
ZGVyLmNsb3NlZCwgcnNSZWFkZXIuY2xvc2VkLCAnY2xvc2VkIHNob3VsZCByZXR1cm4gdGhlIHNh
bWUgcHJvbWlzZScpOwotCi19LCAnUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHNob3VsZCBh
bHdheXMgcmV0dXJuIHRoZSBzYW1lIHByb21pc2Ugb2JqZWN0Jyk7Ci0KLXRlc3QoKCkgPT4gewot
Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci0gIG5ldyBSZWFkYWJsZVN0cmVh
bVJlYWRlcihycyk7IC8vIENvbnN0cnVjdGluZyBkaXJlY3RseSB0aGUgZmlyc3QgdGltZSBzaG91
bGQgYmUgZmluZS4KLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBS
ZWFkYWJsZVN0cmVhbVJlYWRlcihycyksCi0gICAgICAgICAgICAgICAgJ2NvbnN0cnVjdGluZyBk
aXJlY3RseSB0aGUgc2Vjb25kIHRpbWUgc2hvdWxkIGZhaWwnKTsKLQotfSwgJ0NvbnN0cnVjdGlu
ZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBmYWlsIGlmIHRoZSBzdHJl
YW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3QgJyArCi0gICAnY29uc3RydWN0aW9uKScp
OwotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwot
ICBuZXcgUmVhZGFibGVTdHJlYW1SZWFkZXIocnMpOyAvLyBDb25zdHJ1Y3RpbmcgZGlyZWN0bHkg
c2hvdWxkIGJlIGZpbmUuCi0gIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBy
cy5nZXRSZWFkZXIoKSwgJ2dldFJlYWRlcigpIHNob3VsZCBmYWlsJyk7Ci0KLX0sICdHZXR0aW5n
IGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgdmlhIGdldFJlYWRlciBzaG91bGQgZmFpbCBpZiB0aGUg
c3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0ICcgKwotICAgJ2NvbnN0cnVjdGlv
biknKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
KTsKLSAgcnMuZ2V0UmVhZGVyKCk7IC8vIGdldFJlYWRlcigpIHNob3VsZCBiZSBmaW5lLgotICBh
c3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtUmVh
ZGVyKHJzKSwgJ2NvbnN0cnVjdGluZyBkaXJlY3RseSBzaG91bGQgZmFpbCcpOwotCi19LCAnQ29u
c3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZhaWwgaWYg
dGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGdldFJlYWRlciknKTsKLQotdGVzdCgo
KSA9PiB7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLSAgcnMuZ2V0UmVh
ZGVyKCk7IC8vIGdldFJlYWRlcigpIHNob3VsZCBiZSBmaW5lLgotICBhc3NlcnRfdGhyb3dzKG5l
dyBUeXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksICdnZXRSZWFkZXIoKSBzaG91bGQg
ZmFpbCcpOwotCi19LCAnR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHZpYSBnZXRSZWFk
ZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGdldFJl
YWRlciknKTsKLQotdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuY2xvc2UoKTsKLSAgICB9Ci0gIH0pOwotCi0g
IG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihycyk7IC8vIENvbnN0cnVjdGluZyBkaXJlY3RseSBz
aG91bGQgbm90IHRocm93LgotCi19LCAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFk
ZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgY2xvc2VkJyk7Ci0KLXRl
c3QoKCkgPT4gewotCi0gIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdkb25cJ3Qgc2F5IGkg
ZGlkblwndCB3YXJuIHlhJyk7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAg
ICBzdGFydChjKSB7Ci0gICAgICBjLmVycm9yKHRoZUVycm9yKTsKLSAgICB9Ci0gIH0pOwotCi0g
IG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihycyk7IC8vIENvbnN0cnVjdGluZyBkaXJlY3RseSBz
aG91bGQgbm90IHRocm93LgotCi19LCAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFk
ZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgZXJyb3JlZCcpOwotCi1w
cm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7
Ci0gICAgfQotICB9KTsKLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0KLSAgY29u
c3QgcHJvbWlzZSA9IHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQgPT4gewotICAgIGFzc2VydF9v
YmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAncmVhZCgp
IHNob3VsZCBmdWxmaWxsIHdpdGggdGhlIGVucXVldWVkIGNodW5rJyk7Ci0gIH0pOwotCi0gIGNv
bnRyb2xsZXIuZW5xdWV1ZSgnYScpOwotICByZXR1cm4gcHJvbWlzZTsKLQotfSwgJ1JlYWRpbmcg
ZnJvbSBhIHJlYWRlciBmb3IgYW4gZW1wdHkgc3RyZWFtIHdpbGwgd2FpdCB1bnRpbCBhIGNodW5r
IGlzIGF2YWlsYWJsZScpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBjYW5jZWxD
YWxsZWQgPSBmYWxzZTsKLSAgY29uc3QgcGFzc2VkUmVhc29uID0gbmV3IEVycm9yKCdpdCB3YXNu
XCd0IHRoZSByaWdodCB0aW1lLCBzb3JyeScpOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7Ci0gICAgY2FuY2VsKHJlYXNvbikgewotICAgICAgYXNzZXJ0X3RydWUocnMubG9ja2Vk
LCAndGhlIHN0cmVhbSBzaG91bGQgc3RpbGwgYmUgbG9ja2VkJyk7Ci0gICAgICBhc3NlcnRfdGhy
b3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksICdzaG91bGQgbm90IGJl
IGFibGUgdG8gZ2V0IGFub3RoZXIgcmVhZGVyJyk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKHJlYXNv
biwgcGFzc2VkUmVhc29uLCAndGhlIGNhbmNlbGxhdGlvbiByZWFzb24gaXMgcGFzc2VkIHRocm91
Z2ggdG8gdGhlIHVuZGVybHlpbmcgc291cmNlJyk7Ci0gICAgICBjYW5jZWxDYWxsZWQgPSB0cnVl
OwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0gIHJl
dHVybiByZWFkZXIuY2FuY2VsKHBhc3NlZFJlYXNvbikudGhlbigoKSA9PiBhc3NlcnRfdHJ1ZShj
YW5jZWxDYWxsZWQpKTsKLQotfSwgJ2NhbmNlbCgpIG9uIGEgcmVhZGVyIGRvZXMgbm90IHJlbGVh
c2UgdGhlIHJlYWRlcicpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gIGxldCBjb250cm9s
bGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewot
ICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCByZWFkZXIgPSBy
cy5nZXRSZWFkZXIoKTsKLSAgY29uc3QgcHJvbWlzZSA9IHJlYWRlci5jbG9zZWQ7Ci0KLSAgY29u
dHJvbGxlci5jbG9zZSgpOwotICByZXR1cm4gcHJvbWlzZTsKLQotfSwgJ2Nsb3NlZCBzaG91bGQg
YmUgZnVsZmlsbGVkIGFmdGVyIHN0cmVhbSBpcyBjbG9zZWQgKC5jbG9zZWQgYWNjZXNzIGJlZm9y
ZSBhY3F1aXJpbmcpJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBsZXQgY29udHJvbGxl
cjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAg
ICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcmVhZGVyMSA9IHJz
LmdldFJlYWRlcigpOwotCi0gIHJlYWRlcjEucmVsZWFzZUxvY2soKTsKLQotICBjb25zdCByZWFk
ZXIyID0gcnMuZ2V0UmVhZGVyKCk7Ci0gIGNvbnRyb2xsZXIuY2xvc2UoKTsKLQotICByZXR1cm4g
UHJvbWlzZS5hbGwoWwotICAgIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIHJl
YWRlcjEuY2xvc2VkKSwKLSAgICByZWFkZXIyLmNsb3NlZAotICBdKTsKLQotfSwgJ2Nsb3NlZCBz
aG91bGQgYmUgcmVqZWN0ZWQgYWZ0ZXIgcmVhZGVyIHJlbGVhc2VzIGl0cyBsb2NrIChtdWx0aXBs
ZSBzdHJlYW0gbG9ja3MpJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgY29uc3QgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1ZSgn
YScpOwotICAgICAgYy5lbnF1ZXVlKCdiJyk7Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAgfQotICB9
KTsKLQotICBjb25zdCByZWFkZXIxID0gcnMuZ2V0UmVhZGVyKCk7Ci0gIGNvbnN0IHByb21pc2Ux
ID0gcmVhZGVyMS5yZWFkKCkudGhlbihyID0+IHsKLSAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhy
LCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdyZWFkaW5nIHRoZSBmaXJzdCBjaHVuayBm
cm9tIHJlYWRlcjEgd29ya3MnKTsKLSAgfSk7Ci0gIHJlYWRlcjEucmVsZWFzZUxvY2soKTsKLQot
ICBjb25zdCByZWFkZXIyID0gcnMuZ2V0UmVhZGVyKCk7Ci0gIGNvbnN0IHByb21pc2UyID0gcmVh
ZGVyMi5yZWFkKCkudGhlbihyID0+IHsKLSAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZh
bHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sICdyZWFkaW5nIHRoZSBzZWNvbmQgY2h1bmsgZnJvbSBy
ZWFkZXIyIHdvcmtzJyk7Ci0gIH0pOwotICByZWFkZXIyLnJlbGVhc2VMb2NrKCk7Ci0KLSAgcmV0
dXJuIFByb21pc2UuYWxsKFtwcm9taXNlMSwgcHJvbWlzZTJdKTsKLQotfSwgJ011bHRpcGxlIHJl
YWRlcnMgY2FuIGFjY2VzcyB0aGUgc3RyZWFtIGluIHNlcXVlbmNlJyk7Ci0KLXByb21pc2VfdGVz
dCgoKSA9PiB7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChj
KSB7Ci0gICAgICBjLmVucXVldWUoJ2EnKTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWRl
cjEgPSBycy5nZXRSZWFkZXIoKTsKLSAgcmVhZGVyMS5yZWxlYXNlTG9jaygpOwotCi0gIGNvbnN0
IHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKLQotICAvLyBTaG91bGQgYmUgYSBuby1vcAotICBy
ZWFkZXIxLnJlbGVhc2VMb2NrKCk7Ci0KLSAgcmV0dXJuIHJlYWRlcjIucmVhZCgpLnRoZW4ocmVz
dWx0ID0+IHsKLSAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdhJywg
ZG9uZTogZmFsc2UgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAncmVhZCgpIHNob3VsZCBz
dGlsbCB3b3JrIG9uIHJlYWRlcjIgZXZlbiBhZnRlciByZWFkZXIxIGlzIHJlbGVhc2VkJyk7Ci0g
IH0pOwotCi19LCAnQ2Fubm90IHVzZSBhbiBhbHJlYWR5LXJlbGVhc2VkIHJlYWRlciB0byB1bmxv
Y2sgYSBzdHJlYW0gYWdhaW4nKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVucXVldWUo
J2EnKTsKLSAgICB9LAotICAgIGNhbmNlbCgpIHsKLSAgICAgIGFzc2VydF91bnJlYWNoZWQoJ3Vu
ZGVybHlpbmcgc291cmNlIGNhbmNlbCBzaG91bGQgbm90IGJlIGNhbGxlZCcpOwotICAgIH0KLSAg
fSk7Ci0KLSAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0gIHJlYWRlci5yZWxlYXNl
TG9jaygpOwotICBjb25zdCBjYW5jZWxQcm9taXNlID0gcmVhZGVyLmNhbmNlbCgpOwotCi0gIGNv
bnN0IHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKLSAgY29uc3QgcmVhZFByb21pc2UgPSByZWFk
ZXIyLnJlYWQoKS50aGVuKHIgPT4gewotICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFs
dWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2EgbmV3IHJlYWRlciBzaG91bGQgYmUgYWJsZSB0byBy
ZWFkIGEgY2h1bmsnKTsKLSAgfSk7Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICBwcm9t
aXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLCBjYW5jZWxQcm9taXNlKSwKLSAgICByZWFk
UHJvbWlzZQotICBdKTsKLQotfSwgJ2NhbmNlbCgpIG9uIGEgcmVsZWFzZWQgcmVhZGVyIGlzIGEg
bm8tb3AgYW5kIGRvZXMgbm90IHBhc3MgdGhyb3VnaCcpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7
Ci0KLSAgY29uc3QgcHJvbWlzZUFzc2VydHMgPSBbXTsKLQotICBsZXQgY29udHJvbGxlcjsKLSAg
Y29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICd1bmlxdWUgZXJyb3InIH07Ci0gIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0g
YzsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHJlYWRlcjEgPSBycy5nZXRSZWFkZXIoKTsKLQot
ICBwcm9taXNlQXNzZXJ0cy5wdXNoKAotICAgIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwg
cmVhZGVyMS5jbG9zZWQpLAotICAgIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcmVhZGVy
MS5yZWFkKCkpCi0gICk7Ci0KLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+
IHJzLmdldFJlYWRlcigpLCAndHJ5aW5nIHRvIGdldCBhbm90aGVyIHJlYWRlciBiZWZvcmUgZXJy
b3Jpbmcgc2hvdWxkIHRocm93Jyk7Ci0KLSAgY29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7Ci0K
LSAgcmVhZGVyMS5yZWxlYXNlTG9jaygpOwotCi0gIGNvbnN0IHJlYWRlcjIgPSBycy5nZXRSZWFk
ZXIoKTsKLQotICBwcm9taXNlQXNzZXJ0cy5wdXNoKAotICAgIHByb21pc2VfcmVqZWN0cyh0LCB0
aGVFcnJvciwgcmVhZGVyMi5jbG9zZWQpLAotICAgIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJv
ciwgcmVhZGVyMi5yZWFkKCkpCi0gICk7Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VB
c3NlcnRzKTsKLQotfSwgJ0dldHRpbmcgYSBzZWNvbmQgcmVhZGVyIGFmdGVyIGVycm9yaW5nIHRo
ZSBzdHJlYW0gYW5kIHJlbGVhc2luZyB0aGUgcmVhZGVyIHNob3VsZCBzdWNjZWVkJyk7Ci0KLXBy
b21pc2VfdGVzdCh0ID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwot
ICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgcHJvbWlzZSA9IHJzLmdldFJlYWRlcigpLmNsb3NlZC50
aGVuKAotICAgIHQudW5yZWFjaGVkX2Z1bmMoJ2Nsb3NlZCBwcm9taXNlIHNob3VsZCBub3QgYmUg
ZnVsZmlsbGVkIHdoZW4gc3RyZWFtIGlzIGVycm9yZWQnKSwKLSAgICBlcnIgPT4gewotICAgICAg
YXNzZXJ0X2VxdWFscyhlcnIsIHVuZGVmaW5lZCwgJ3Bhc3NlZCBlcnJvciBzaG91bGQgYmUgdW5k
ZWZpbmVkIGFzIGl0IHdhcycpOwotICAgIH0KLSAgKTsKLQotICBjb250cm9sbGVyLmVycm9yKCk7
Ci0gIHJldHVybiBwcm9taXNlOwotCi19LCAnUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHBy
b21pc2Ugc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdW5kZWZpbmVkIGlmIHRoYXQgaXMgdGhlIGVy
cm9yJyk7Ci0KLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gIGNvbnN0IHJzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKLSAgICBzdGFydCgpIHsKLSAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgp
OwotICAgIH0KLSAgfSk7Ci0KLSAgcmV0dXJuIHJzLmdldFJlYWRlcigpLnJlYWQoKS50aGVuKAot
ICAgIHQudW5yZWFjaGVkX2Z1bmMoJ3JlYWQgcHJvbWlzZSBzaG91bGQgbm90IGJlIGZ1bGZpbGxl
ZCB3aGVuIHN0cmVhbSBpcyBlcnJvcmVkJyksCi0gICAgZXJyID0+IHsKLSAgICAgIGFzc2VydF9l
cXVhbHMoZXJyLCB1bmRlZmluZWQsICdwYXNzZWQgZXJyb3Igc2hvdWxkIGJlIHVuZGVmaW5lZCBh
cyBpdCB3YXMnKTsKLSAgICB9Ci0gICk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbVJlYWRlcjogaWYg
c3RhcnQgcmVqZWN0cyB3aXRoIG5vIHBhcmFtZXRlciwgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJl
YW0gd2l0aCBhbiB1bmRlZmluZWQgZXJyb3InKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewotCi0g
IGNvbnN0IHRoZUVycm9yID0geyBuYW1lOiAndW5pcXVlIHN0cmluZycgfTsKLSAgbGV0IGNvbnRy
b2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7
Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IHByb21pc2Ug
PSBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJzLmdldFJlYWRlcigpLmNsb3NlZCk7Ci0K
LSAgY29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7Ci0gIHJldHVybiBwcm9taXNlOwotCi19LCAn
RXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBhZnRlciBjaGVja2luZyBjbG9zZWQgc2hvdWxkIHJl
amVjdCBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgcHJvbWlzZScpOwotCi1wcm9taXNlX3Rl
c3QodCA9PiB7Ci0KLSAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICd1bmlxdWUgc3RyaW5nJyB9
OwotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewot
ICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNvbnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0KLSAg
Y29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7Ci0KLSAgLy8gTGV0J3MgY2FsbCBnZXRSZWFkZXIg
dHdpY2UgZm9yIGV4dHJhIHRlc3QgY292ZXJhZ2Ugb2YgdGhpcyBjb2RlIHBhdGguCi0gIHJzLmdl
dFJlYWRlcigpLnJlbGVhc2VMb2NrKCk7Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCB0
aGVFcnJvciwgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkKTsKLQotfSwgJ0Vycm9yaW5nIGEgUmVhZGFi
bGVTdHJlYW0gYmVmb3JlIGNoZWNraW5nIGNsb3NlZCBzaG91bGQgcmVqZWN0IFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyIGNsb3NlZCBwcm9taXNlJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAg
bGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBz
dGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0pOwotICBjb25zdCBy
ZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICBjb25zdCBwcm9taXNlID0gUHJvbWlzZS5hbGwo
WwotICAgIHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQgPT4gewotICAgICAgYXNzZXJ0X29iamVj
dF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwgJ3JlYWQo
KSBzaG91bGQgZnVsZmlsbCB3aXRoIGNsb3NlICgxKScpOwotICAgIH0pLAotICAgIHJlYWRlci5y
ZWFkKCkudGhlbihyZXN1bHQgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0
LCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmls
bCB3aXRoIGNsb3NlICgyKScpOwotICAgIH0pLAotICAgIHJlYWRlci5jbG9zZWQKLSAgXSk7Ci0K
LSAgY29udHJvbGxlci5jbG9zZSgpOwotICByZXR1cm4gcHJvbWlzZTsKLQotfSwgJ1JlYWRpbmcg
dHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGNsb3NlZCcpOwotCi1wcm9taXNlX3Rlc3QoKCkg
PT4gewotCi0gIGxldCBjb250cm9sbGVyOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9KTsK
LQotICBjb250cm9sbGVyLmNsb3NlKCk7Ci0gIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigp
OwotCi0gIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgcmVhZGVyLnJlYWQoKS50aGVuKHJlc3Vs
dCA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVuZGVm
aW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2UgKDEp
Jyk7Ci0gICAgfSksCi0gICAgcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1
ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2UgKDIpJyk7Ci0gICAgfSksCi0g
ICAgcmVhZGVyLmNsb3NlZAotICBdKTsKLQotfSwgJ1JlYWRpbmcgdHdpY2Ugb24gYSBjbG9zZWQg
c3RyZWFtJyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBsZXQgY29udHJvbGxlcjsKLSAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGNv
bnRyb2xsZXIgPSBjOwotICAgIH0KLSAgfSk7Ci0KLSAgY29uc3QgbXlFcnJvciA9IHsgbmFtZTog
J21hc2hlZCBwb3RhdG9lcycgfTsKLSAgY29udHJvbGxlci5lcnJvcihteUVycm9yKTsKLQotICBj
b25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoWwot
ICAgIHByb21pc2VfcmVqZWN0cyh0LCBteUVycm9yLCByZWFkZXIucmVhZCgpKSwKLSAgICBwcm9t
aXNlX3JlamVjdHModCwgbXlFcnJvciwgcmVhZGVyLnJlYWQoKSksCi0gICAgcHJvbWlzZV9yZWpl
Y3RzKHQsIG15RXJyb3IsIHJlYWRlci5jbG9zZWQpCi0gIF0pOwotCi19LCAnUmVhZGluZyB0d2lj
ZSBvbiBhbiBlcnJvcmVkIHN0cmVhbScpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgbGV0
IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFy
dChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IG15
RXJyb3IgPSB7IG5hbWU6ICdtYXNoZWQgcG90YXRvZXMnIH07Ci0gIGNvbnN0IHJlYWRlciA9IHJz
LmdldFJlYWRlcigpOwotCi0gIGNvbnN0IHByb21pc2UgPSBQcm9taXNlLmFsbChbCi0gICAgcHJv
bWlzZV9yZWplY3RzKHQsIG15RXJyb3IsIHJlYWRlci5yZWFkKCkpLAotICAgIHByb21pc2VfcmVq
ZWN0cyh0LCBteUVycm9yLCByZWFkZXIucmVhZCgpKSwKLSAgICBwcm9taXNlX3JlamVjdHModCwg
bXlFcnJvciwgcmVhZGVyLmNsb3NlZCkKLSAgXSk7Ci0KLSAgY29udHJvbGxlci5lcnJvcihteUVy
cm9yKTsKLSAgcmV0dXJuIHByb21pc2U7Ci0KLX0sICdSZWFkaW5nIHR3aWNlIG9uIGEgc3RyZWFt
IHRoYXQgZ2V0cyBlcnJvcmVkJyk7Ci0KLWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3Ry
ZWFtcy90ZWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3RlZS1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2YmQxOTkxY2FjMjA4ZmU0YTY1YjlkMGFj
YjA3OGNmMGZmYzUzOWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
LWFwaS9yZWFkYWJsZS1zdHJlYW1zL3RlZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSwyNCArMCwwIEBACi0KLVBBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBycy50ZWUoKSByZXR1
cm5zIGFuIGFycmF5IG9mIHR3byBSZWFkYWJsZVN0cmVhbXMgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
IHRlZWluZzogc2hvdWxkIGJlIGFibGUgdG8gcmVhZCBvbmUgYnJhbmNoIHRvIHRoZSBlbmQgd2l0
aG91dCBhZmZlY3RpbmcgdGhlIG90aGVyIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHZh
bHVlcyBzaG91bGQgYmUgZXF1YWwgYWNyb3NzIGVhY2ggYnJhbmNoIAotUEFTUyBSZWFkYWJsZVN0
cmVhbSB0ZWVpbmc6IGVycm9ycyBpbiB0aGUgc291cmNlIHNob3VsZCBwcm9wYWdhdGUgdG8gYm90
aCBicmFuY2hlcyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYnJhbmNo
MSBzaG91bGQgbm90IGltcGFjdCBicmFuY2gyIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6
IGNhbmNlbGluZyBicmFuY2gyIHNob3VsZCBub3QgaW1wYWN0IGJyYW5jaDIgCi1QQVNTIFJlYWRh
YmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJvdGggYnJhbmNoZXMgc2hvdWxkIGFnZ3JlZ2F0
ZSB0aGUgY2FuY2VsIHJlYXNvbnMgaW50byBhbiBhcnJheSAKLVBBU1MgUmVhZGFibGVTdHJlYW0g
dGVlaW5nOiBmYWlsaW5nIHRvIGNhbmNlbCB0aGUgb3JpZ2luYWwgc3RyZWFtIHNob3VsZCBjYXVz
ZSBjYW5jZWwoKSB0byByZWplY3Qgb24gYnJhbmNoZXMgCi1QQVNTIFJlYWRhYmxlU3RyZWFtIHRl
ZWluZzogY2xvc2luZyB0aGUgb3JpZ2luYWwgc2hvdWxkIGltbWVkaWF0ZWx5IGNsb3NlIHRoZSBi
cmFuY2hlcyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcmluZyB0aGUgb3JpZ2lu
YWwgc2hvdWxkIGltbWVkaWF0ZWx5IGVycm9yIHRoZSBicmFuY2hlcyAKLUZBSUwgTG9hZCB0ZWUu
anMgd2l0aCBTaGFyZWRXb3JrZXIgYXNzZXJ0X3VucmVhY2hlZDogU2hhcmVkV29ya2VyIGlzIHVu
YXZhaWxhYmxlIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQotRkFJTCBVbnRpdGxlZCB1bmRlZmlu
ZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIu
Z2V0UmVnaXN0cmF0aW9uJykKLVBBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBycy50ZWUoKSBy
ZXR1cm5zIGFuIGFycmF5IG9mIHR3byBSZWFkYWJsZVN0cmVhbXMgCi1QQVNTIFJlYWRhYmxlU3Ry
ZWFtIHRlZWluZzogc2hvdWxkIGJlIGFibGUgdG8gcmVhZCBvbmUgYnJhbmNoIHRvIHRoZSBlbmQg
d2l0aG91dCBhZmZlY3RpbmcgdGhlIG90aGVyIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6
IHZhbHVlcyBzaG91bGQgYmUgZXF1YWwgYWNyb3NzIGVhY2ggYnJhbmNoIAotUEFTUyBSZWFkYWJs
ZVN0cmVhbSB0ZWVpbmc6IGVycm9ycyBpbiB0aGUgc291cmNlIHNob3VsZCBwcm9wYWdhdGUgdG8g
Ym90aCBicmFuY2hlcyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYnJh
bmNoMSBzaG91bGQgbm90IGltcGFjdCBicmFuY2gyIAotUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVp
bmc6IGNhbmNlbGluZyBicmFuY2gyIHNob3VsZCBub3QgaW1wYWN0IGJyYW5jaDIgCi1QQVNTIFJl
YWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2VsaW5nIGJvdGggYnJhbmNoZXMgc2hvdWxkIGFnZ3Jl
Z2F0ZSB0aGUgY2FuY2VsIHJlYXNvbnMgaW50byBhbiBhcnJheSAKLVBBU1MgUmVhZGFibGVTdHJl
YW0gdGVlaW5nOiBmYWlsaW5nIHRvIGNhbmNlbCB0aGUgb3JpZ2luYWwgc3RyZWFtIHNob3VsZCBj
YXVzZSBjYW5jZWwoKSB0byByZWplY3Qgb24gYnJhbmNoZXMgCi1QQVNTIFJlYWRhYmxlU3RyZWFt
IHRlZWluZzogY2xvc2luZyB0aGUgb3JpZ2luYWwgc2hvdWxkIGltbWVkaWF0ZWx5IGNsb3NlIHRo
ZSBicmFuY2hlcyAKLVBBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcmluZyB0aGUgb3Jp
Z2luYWwgc2hvdWxkIGltbWVkaWF0ZWx5IGVycm9yIHRoZSBicmFuY2hlcyAKLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFw
aS9yZWFkYWJsZS1zdHJlYW1zL3RlZS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3RlZS5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMmM4NDdiODExNzhhZDBjNTBiYWFjMDlkN2Ix
Y2RjNjg4MjkzMmQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1h
cGkvcmVhZGFibGUtc3RyZWFtcy90ZWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9zZXJ2
aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIj48
L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9ycy11dGlscy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0idGVlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0ndXNlIHN0cmlj
dCc7Ci13b3JrZXJfdGVzdCgndGVlLmpzJyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFi
bGUtc3RyZWFtcy90ZWUuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVlLmpzCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0ODVmMmFmN2FiNWNlNGZmYjY5Yzk1ZjhhOGJlNTRkZmExZTJlZDA3
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUt
c3RyZWFtcy90ZWUuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyNTQgKzAsMCBAQAotJ3VzZSBzdHJp
Y3QnOwotCi1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygn
Li4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcycpOwotfQotCi10ZXN0KCgpID0+IHsKLQotICBjb25zdCBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwotICBjb25zdCByZXN1bHQgPSBycy50ZWUoKTsKLQotICBh
c3NlcnRfdHJ1ZShBcnJheS5pc0FycmF5KHJlc3VsdCksICdyZXR1cm4gdmFsdWUgc2hvdWxkIGJl
IGFuIGFycmF5Jyk7Ci0gIGFzc2VydF9lcXVhbHMocmVzdWx0Lmxlbmd0aCwgMiwgJ2FycmF5IHNo
b3VsZCBoYXZlIGxlbmd0aCAyJyk7Ci0gIGFzc2VydF9lcXVhbHMocmVzdWx0WzBdLmNvbnN0cnVj
dG9yLCBSZWFkYWJsZVN0cmVhbSwgJzB0aCBlbGVtZW50IHNob3VsZCBiZSBhIFJlYWRhYmxlU3Ry
ZWFtJyk7Ci0gIGFzc2VydF9lcXVhbHMocmVzdWx0WzFdLmNvbnN0cnVjdG9yLCBSZWFkYWJsZVN0
cmVhbSwgJzFzdCBlbGVtZW50IHNob3VsZCBiZSBhIFJlYWRhYmxlU3RyZWFtJyk7Ci0KLX0sICdS
ZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHJzLnRlZSgpIHJldHVybnMgYW4gYXJyYXkgb2YgdHdvIFJl
YWRhYmxlU3RyZWFtcycpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgY29uc3QgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1ZSgnYScp
OwotICAgICAgYy5lbnF1ZXVlKCdiJyk7Ci0gICAgICBjLmNsb3NlKCk7Ci0gICAgfQotICB9KTsK
LQotICBjb25zdCBicmFuY2ggPSBycy50ZWUoKTsKLSAgY29uc3QgYnJhbmNoMSA9IGJyYW5jaFsw
XTsKLSAgY29uc3QgYnJhbmNoMiA9IGJyYW5jaFsxXTsKLSAgY29uc3QgcmVhZGVyMSA9IGJyYW5j
aDEuZ2V0UmVhZGVyKCk7Ci0gIGNvbnN0IHJlYWRlcjIgPSBicmFuY2gyLmdldFJlYWRlcigpOwot
Ci0gIHJlYWRlcjIuY2xvc2VkLnRoZW4odC51bnJlYWNoZWRfZnVuYygnYnJhbmNoMiBzaG91bGQg
bm90IGJlIGNsb3NlZCcpKTsKLQotICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgIHJlYWRlcjEu
Y2xvc2VkLAotICAgIHJlYWRlcjEucmVhZCgpLnRoZW4ociA9PiB7Ci0gICAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdmaXJzdCBjaHVuayBm
cm9tIGJyYW5jaDEgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLSAgICB9KSwKLSAgICByZWFkZXIxLnJl
YWQoKS50aGVuKHIgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTog
J2InLCBkb25lOiBmYWxzZSB9LCAnc2Vjb25kIGNodW5rIGZyb20gYnJhbmNoMSBzaG91bGQgYmUg
Y29ycmVjdCcpOwotICAgIH0pLAotICAgIHJlYWRlcjEucmVhZCgpLnRoZW4ociA9PiB7Ci0gICAg
ICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUg
fSwgJ3RoaXJkIHJlYWQoKSBmcm9tIGJyYW5jaDEgc2hvdWxkIGJlIGRvbmUnKTsKLSAgICB9KSwK
LSAgICByZWFkZXIyLnJlYWQoKS50aGVuKHIgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVh
bHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgY2h1bmsgZnJvbSBicmFu
Y2gyIHNob3VsZCBiZSBjb3JyZWN0Jyk7Ci0gICAgfSkKLSAgXSk7Ci0KLX0sICdSZWFkYWJsZVN0
cmVhbSB0ZWVpbmc6IHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgb25lIGJyYW5jaCB0byB0aGUgZW5k
IHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBvdGhlcicpOwotCi1wcm9taXNlX3Rlc3QoKCkgPT4gewot
Ci0gIGNvbnN0IHRoZU9iamVjdCA9IHsgdGhlOiAndGVzdCBvYmplY3QnIH07Ci0gIGNvbnN0IHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVucXVldWUo
dGhlT2JqZWN0KTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IGJyYW5jaCA9IHJzLnRlZSgpOwot
ICBjb25zdCBicmFuY2gxID0gYnJhbmNoWzBdOwotICBjb25zdCBicmFuY2gyID0gYnJhbmNoWzFd
OwotICBjb25zdCByZWFkZXIxID0gYnJhbmNoMS5nZXRSZWFkZXIoKTsKLSAgY29uc3QgcmVhZGVy
MiA9IGJyYW5jaDIuZ2V0UmVhZGVyKCk7Ci0KLSAgcmV0dXJuIFByb21pc2UuYWxsKFtyZWFkZXIx
LnJlYWQoKSwgcmVhZGVyMi5yZWFkKCldKS50aGVuKHZhbHVlcyA9PiB7Ci0gICAgYXNzZXJ0X29i
amVjdF9lcXVhbHModmFsdWVzWzBdLCB2YWx1ZXNbMV0sICd0aGUgdmFsdWVzIHNob3VsZCBiZSBl
cXVhbCcpOwotICB9KTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogdmFsdWVzIHNob3Vs
ZCBiZSBlcXVhbCBhY3Jvc3MgZWFjaCBicmFuY2gnKTsKLQotcHJvbWlzZV90ZXN0KHQgPT4gewot
Ci0gIGNvbnN0IHRoZUVycm9yID0geyBuYW1lOiAnYm9vIScgfTsKLSAgY29uc3QgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuZW5xdWV1ZSgnYScpOwot
ICAgICAgYy5lbnF1ZXVlKCdiJyk7Ci0gICAgfSwKLSAgICBwdWxsKCkgewotICAgICAgdGhyb3cg
dGhlRXJyb3I7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBicmFuY2hlcyA9IHJzLnRlZSgpOwot
ICBjb25zdCByZWFkZXIxID0gYnJhbmNoZXNbMF0uZ2V0UmVhZGVyKCk7Ci0gIGNvbnN0IHJlYWRl
cjIgPSBicmFuY2hlc1sxXS5nZXRSZWFkZXIoKTsKLQotICByZWFkZXIxLmxhYmVsID0gJ3JlYWRl
cjEnOwotICByZWFkZXIyLmxhYmVsID0gJ3JlYWRlcjInOwotCi0gIHJldHVybiBQcm9taXNlLmFs
bChbCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIxLmNsb3NlZCksCi0g
ICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIyLmNsb3NlZCksCi0gICAgcmVh
ZGVyMS5yZWFkKCkudGhlbihyID0+IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsg
dmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3Nob3VsZCBiZSBhYmxlIHRvIHJlYWQgdGhlIGZp
cnN0IGNodW5rIGluIGJyYW5jaDEnKTsKLSAgICB9KSwKLSAgICByZWFkZXIxLnJlYWQoKS50aGVu
KHIgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2InLCBkb25l
OiBmYWxzZSB9LCAnc2hvdWxkIGJlIGFibGUgdG8gcmVhZCB0aGUgc2Vjb25kIGNodW5rIGluIGJy
YW5jaDEnKTsKLQotICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcmVh
ZGVyMi5yZWFkKCkpOwotICAgIH0pCi0gICAgLnRoZW4oKCkgPT4gcHJvbWlzZV9yZWplY3RzKHQs
IHRoZUVycm9yLCByZWFkZXIxLnJlYWQoKSkpCi0gIF0pOwotCi19LCAnUmVhZGFibGVTdHJlYW0g
dGVlaW5nOiBlcnJvcnMgaW4gdGhlIHNvdXJjZSBzaG91bGQgcHJvcGFnYXRlIHRvIGJvdGggYnJh
bmNoZXMnKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQoYykgewotICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAg
ICBjLmVucXVldWUoJ2InKTsKLSAgICAgIGMuY2xvc2UoKTsKLSAgICB9Ci0gIH0pOwotCi0gIGNv
bnN0IGJyYW5jaGVzID0gcnMudGVlKCk7Ci0gIGNvbnN0IGJyYW5jaDEgPSBicmFuY2hlc1swXTsK
LSAgY29uc3QgYnJhbmNoMiA9IGJyYW5jaGVzWzFdOwotICBicmFuY2gxLmNhbmNlbCgpOwotCi0g
IHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgcmVhZGFibGVTdHJlYW1Ub0FycmF5KGJyYW5jaDEp
LnRoZW4oY2h1bmtzID0+IHsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbXSwg
J2JyYW5jaDEgc2hvdWxkIGhhdmUgbm8gY2h1bmtzJyk7Ci0gICAgfSksCi0gICAgcmVhZGFibGVT
dHJlYW1Ub0FycmF5KGJyYW5jaDIpLnRoZW4oY2h1bmtzID0+IHsKLSAgICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMoY2h1bmtzLCBbJ2EnLCAnYiddLCAnYnJhbmNoMiBzaG91bGQgaGF2ZSB0d28gY2h1
bmtzJyk7Ci0gICAgfSkKLSAgXSk7Ci0KLX0sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNl
bGluZyBicmFuY2gxIHNob3VsZCBub3QgaW1wYWN0IGJyYW5jaDInKTsKLQotcHJvbWlzZV90ZXN0
KCgpID0+IHsKLQotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgc3RhcnQo
YykgewotICAgICAgYy5lbnF1ZXVlKCdhJyk7Ci0gICAgICBjLmVucXVldWUoJ2InKTsKLSAgICAg
IGMuY2xvc2UoKTsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IGJyYW5jaGVzID0gcnMudGVlKCk7
Ci0gIGNvbnN0IGJyYW5jaDEgPSBicmFuY2hlc1swXTsKLSAgY29uc3QgYnJhbmNoMiA9IGJyYW5j
aGVzWzFdOwotICBicmFuY2gyLmNhbmNlbCgpOwotCi0gIHJldHVybiBQcm9taXNlLmFsbChbCi0g
ICAgcmVhZGFibGVTdHJlYW1Ub0FycmF5KGJyYW5jaDEpLnRoZW4oY2h1bmtzID0+IHsKLSAgICAg
IGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbJ2EnLCAnYiddLCAnYnJhbmNoMSBzaG91bGQg
aGF2ZSB0d28gY2h1bmtzJyk7Ci0gICAgfSksCi0gICAgcmVhZGFibGVTdHJlYW1Ub0FycmF5KGJy
YW5jaDIpLnRoZW4oY2h1bmtzID0+IHsKLSAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtz
LCBbXSwgJ2JyYW5jaDIgc2hvdWxkIGhhdmUgbm8gY2h1bmtzJyk7Ci0gICAgfSkKLSAgXSk7Ci0K
LX0sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBicmFuY2gyIHNob3VsZCBub3Qg
aW1wYWN0IGJyYW5jaDInKTsKLQotcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICBjb25zdCByZWFz
b24xID0gbmV3IEVycm9yKCdXZVwncmUgd2FudGVkIG1lbi4nKTsKLSAgY29uc3QgcmVhc29uMiA9
IG5ldyBFcnJvcignSSBoYXZlIHRoZSBkZWF0aCBzZW50ZW5jZSBvbiB0d2VsdmUgc3lzdGVtcy4n
KTsKLQotICBsZXQgcmVzb2x2ZTsKLSAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKHIgPT4g
cmVzb2x2ZSA9IHIpOwotICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgY2Fu
Y2VsKHJlYXNvbikgewotICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhyZWFzb24sIFtyZWFzb24x
LCByZWFzb24yXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBjYW5jZWwgcmVhc29u
IHNob3VsZCBiZSBhbiBhcnJheSBjb250YWluaW5nIHRob3NlIGZyb20gdGhlIGJyYW5jaGVzJyk7
Ci0gICAgICByZXNvbHZlKCk7Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBicmFuY2ggPSBycy50
ZWUoKTsKLSAgY29uc3QgYnJhbmNoMSA9IGJyYW5jaFswXTsKLSAgY29uc3QgYnJhbmNoMiA9IGJy
YW5jaFsxXTsKLSAgYnJhbmNoMS5jYW5jZWwocmVhc29uMSk7Ci0gIGJyYW5jaDIuY2FuY2VsKHJl
YXNvbjIpOwotCi0gIHJldHVybiBwcm9taXNlOwotCi19LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5n
OiBjYW5jZWxpbmcgYm90aCBicmFuY2hlcyBzaG91bGQgYWdncmVnYXRlIHRoZSBjYW5jZWwgcmVh
c29ucyBpbnRvIGFuIGFycmF5Jyk7Ci0KLXByb21pc2VfdGVzdCh0ID0+IHsKLQotICBjb25zdCB0
aGVFcnJvciA9IHsgbmFtZTogJ0lcJ2xsIGJlIGNhcmVmdWwuJyB9OwotICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgY2FuY2VsKCkgewotICAgICAgdGhyb3cgdGhlRXJyb3I7
Ci0gICAgfQotICB9KTsKLQotICBjb25zdCBicmFuY2ggPSBycy50ZWUoKTsKLSAgY29uc3QgYnJh
bmNoMSA9IGJyYW5jaFswXTsKLSAgY29uc3QgYnJhbmNoMiA9IGJyYW5jaFsxXTsKLQotICByZXR1
cm4gUHJvbWlzZS5hbGwoWwotICAgIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgYnJhbmNo
MS5jYW5jZWwoKSksCi0gICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCBicmFuY2gyLmNh
bmNlbCgpKQotICBdKTsKLQotfSwgJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogZmFpbGluZyB0byBj
YW5jZWwgdGhlIG9yaWdpbmFsIHN0cmVhbSBzaG91bGQgY2F1c2UgY2FuY2VsKCkgdG8gcmVqZWN0
IG9uIGJyYW5jaGVzJyk7Ci0KLXByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xs
ZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0g
ICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IGJyYW5jaGVzID0g
cnMudGVlKCk7Ci0gIGNvbnN0IHJlYWRlcjEgPSBicmFuY2hlc1swXS5nZXRSZWFkZXIoKTsKLSAg
Y29uc3QgcmVhZGVyMiA9IGJyYW5jaGVzWzFdLmdldFJlYWRlcigpOwotCi0gIGNvbnN0IHByb21p
c2UgPSBQcm9taXNlLmFsbChbcmVhZGVyMS5jbG9zZWQsIHJlYWRlcjIuY2xvc2VkXSk7Ci0KLSAg
Y29udHJvbGxlci5jbG9zZSgpOwotICByZXR1cm4gcHJvbWlzZTsKLQotfSwgJ1JlYWRhYmxlU3Ry
ZWFtIHRlZWluZzogY2xvc2luZyB0aGUgb3JpZ2luYWwgc2hvdWxkIGltbWVkaWF0ZWx5IGNsb3Nl
IHRoZSBicmFuY2hlcycpOwotCi1wcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgbGV0IGNvbnRyb2xs
ZXI7Ci0gIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0g
ICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0pOwotCi0gIGNvbnN0IGJyYW5jaGVzID0g
cnMudGVlKCk7Ci0gIGNvbnN0IHJlYWRlcjEgPSBicmFuY2hlc1swXS5nZXRSZWFkZXIoKTsKLSAg
Y29uc3QgcmVhZGVyMiA9IGJyYW5jaGVzWzFdLmdldFJlYWRlcigpOwotCi0gIGNvbnN0IHRoZUVy
cm9yID0geyBuYW1lOiAnYm9vIScgfTsKLSAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UuYWxsKFsK
LSAgICBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJlYWRlcjEuY2xvc2VkKSwKLSAgICBw
cm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJlYWRlcjIuY2xvc2VkKQotICBdKTsKLQotICBj
b250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKLSAgcmV0dXJuIHByb21pc2U7Ci0KLX0sICdSZWFk
YWJsZVN0cmVhbSB0ZWVpbmc6IGVycm9yaW5nIHRoZSBvcmlnaW5hbCBzaG91bGQgaW1tZWRpYXRl
bHkgZXJyb3IgdGhlIGJyYW5jaGVzJyk7Ci0KLWRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUt
c3RyZWFtcy90ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRl
ZC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5OTdiZDJhZmRh
YmJmMjY3N2E0YzQ3MzQ1NWVjNjlmMDIzN2NiNGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxNzQgKzAsMCBAQAotCi1QQVNTIFJ1bm5pbmcgdGVtcGxh
dGVkUlNFbXB0eSB3aXRoIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgCi1QQVNTIGluc3RhbmNlcyBo
YXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgCi1QQVNTIFJ1bm5pbmcgdGVt
cGxhdGVkUlNFbXB0eVJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkgcmVhZGVyIAot
UEFTUyBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIAot
UEFTUyBsb2NrZWQgc2hvdWxkIGJlIHRydWUgCi1QQVNTIHJlYWQoKSBzaG91bGQgbmV2ZXIgc2V0
dGxlIAotUEFTUyB0d28gcmVhZCgpcyBzaG91bGQgYm90aCBuZXZlciBzZXR0bGUgCi1QQVNTIHJl
YWQoKSBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzIGVhY2ggdGltZSAKLVBBU1MgZ2V0
UmVhZGVyKCkgYWdhaW4gb24gdGhlIHN0cmVhbSBzaG91bGQgZmFpbCAKLVBBU1MgcmVsZWFzaW5n
IHRoZSBsb2NrIHdpdGggcGVuZGluZyByZWFkIHJlcXVlc3RzIHNob3VsZCB0aHJvdyBidXQgdGhl
IHJlYWQgcmVxdWVzdHMgc2hvdWxkIHN0YXkgcGVuZGluZyAKLVBBU1MgcmVsZWFzaW5nIHRoZSBs
b2NrIHNob3VsZCBjYXVzZSBmdXJ0aGVyIHJlYWQoKSBjYWxscyB0byByZWplY3Qgd2l0aCBhIFR5
cGVFcnJvciAKLVBBU1MgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgY2Fs
bHMgdG8gcmVqZWN0IHdpdGggYSBUeXBlRXJyb3IgCi1QQVNTIHJlbGVhc2luZyB0aGUgbG9jayBz
aG91bGQgY2F1c2UgbG9ja2VkIHRvIGJlY29tZSBmYWxzZSAKLVBBU1MgY2FuY2VsaW5nIHZpYSB0
aGUgcmVhZGVyIHNob3VsZCBjYXVzZSB0aGUgcmVhZGVyIHRvIGFjdCBjbG9zZWQgCi1QQVNTIGNh
bmNlbGluZyB2aWEgdGhlIHN0cmVhbSBzaG91bGQgZmFpbCAKLVBBU1MgUnVubmluZyB0ZW1wbGF0
ZWRSU0Nsb3NlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbGwgaW4gc3RhcnQp
IAotUEFTUyBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21p
c2UgZWFjaCB0aW1lIAotUEFTUyBsb2NrZWQgc2hvdWxkIGJlIGZhbHNlIAotUEFTUyBnZXRSZWFk
ZXIoKSBzaG91bGQgYmUgT0sgCi1QQVNTIHNob3VsZCBiZSBhYmxlIHRvIGFjcXVpcmUgbXVsdGlw
bGUgcmVhZGVycyBpZiB0aGV5IGFyZSByZWxlYXNlZCBpbiBzdWNjZXNzaW9uIAotUEFTUyBzaG91
bGQgbm90IGJlIGFibGUgdG8gYWNxdWlyZSBhIHNlY29uZCByZWFkZXIgaWYgd2UgZG9uJ3QgcmVs
ZWFzZSB0aGUgZmlyc3Qgb25lIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVy
IHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVy
KSAKLVBBU1MgcmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBk
b25lOiB0cnVlIH0gCi1QQVNTIHJlYWQoKSBtdWx0aXBsZSB0aW1lcyBzaG91bGQgZnVsZmlsbCB3
aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAotUEFTUyByZWFkKCkgc2hvdWxk
IHdvcmsgd2hlbiB1c2VkIHdpdGhpbiBhbm90aGVyIHJlYWQoKSBmdWxmaWxsIGNhbGxiYWNrIAot
UEFTUyBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQgCi1QQVNTIHJlbGVhc2lu
ZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50
aXR5IAotUEFTUyBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHBy
b21pc2UgZWFjaCB0aW1lIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyIHdp
dGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpIAot
UEFTUyByZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6
IHRydWUgfSAKLVBBU1MgcmVhZCgpIG11bHRpcGxlIHRpbWVzIHNob3VsZCBmdWxmaWxsIHdpdGgg
eyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCi1QQVNTIHJlYWQoKSBzaG91bGQgd29y
ayB3aGVuIHVzZWQgd2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZpbGwgY2FsbGJhY2sgCi1QQVNT
IGNsb3NlZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCAKLVBBU1MgcmVsZWFzaW5nIHRo
ZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkg
Ci1QQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlz
ZSBlYWNoIHRpbWUgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWQgd2l0aCBSZWFkYWJs
ZVN0cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwpIAotUEFTUyBjYW5jZWwoKSBzaG91bGQgcmV0dXJu
IGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIAotUEFTUyBsb2NrZWQgc2hv
dWxkIGJlIGZhbHNlIAotUEFTUyBnZXRSZWFkZXIoKSBzaG91bGQgYmUgT0sgCi1QQVNTIHNob3Vs
ZCBiZSBhYmxlIHRvIGFjcXVpcmUgbXVsdGlwbGUgcmVhZGVycyBpZiB0aGV5IGFyZSByZWxlYXNl
ZCBpbiBzdWNjZXNzaW9uIAotUEFTUyBzaG91bGQgbm90IGJlIGFibGUgdG8gYWNxdWlyZSBhIHNl
Y29uZCByZWFkZXIgaWYgd2UgZG9uJ3QgcmVsZWFzZSB0aGUgZmlyc3Qgb25lIAotUEFTUyBSdW5u
aW5nIHRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChj
bG9zZWQgdmlhIGNhbmNlbCBhZnRlciBnZXR0aW5nIHJlYWRlcikgCi1QQVNTIHJlYWQoKSBzaG91
bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAotUEFTUyBy
ZWFkKCkgbXVsdGlwbGUgdGltZXMgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmlu
ZWQsIGRvbmU6IHRydWUgfSAKLVBBU1MgcmVhZCgpIHNob3VsZCB3b3JrIHdoZW4gdXNlZCB3aXRo
aW4gYW5vdGhlciByZWFkKCkgZnVsZmlsbCBjYWxsYmFjayAKLVBBU1MgY2xvc2VkIHNob3VsZCBm
dWxmaWxsIHdpdGggdW5kZWZpbmVkIAotUEFTUyByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNh
dXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKLVBBU1MgY2FuY2VsKCkg
c2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZSAKLVBB
U1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3Jl
ZCB2aWEgY2FsbCBpbiBzdGFydCkgCi1QQVNTIGdldFJlYWRlcigpIHNob3VsZCByZXR1cm4gYSBy
ZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQgCi1QQVNTIHJlYWQoKSB0d2ljZSBzaG91bGQgZ2l2ZSB0
aGUgZXJyb3IgZWFjaCB0aW1lIAotUEFTUyBsb2NrZWQgc2hvdWxkIGJlIGZhbHNlIAotUEFTUyBS
dW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFN5bmNPbmx5IHdpdGggUmVhZGFibGVTdHJlYW0gKGVy
cm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpIAotUEFTUyBzaG91bGQgYmUgYWJsZSB0byBvYnRhaW4g
YSBzZWNvbmQgcmVhZGVyLCB3aXRoIHRoZSBjb3JyZWN0IGNsb3NlZCBwcm9taXNlIAotUEFTUyBz
aG91bGQgbm90IGJlIGFibGUgdG8gb2J0YWluIGFkZGl0aW9uYWwgcmVhZGVycyBpZiB3ZSBkb24n
dCByZWxlYXNlIHRoZSBmaXJzdCBsb2NrIAotUEFTUyBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEg
ZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUgCi1QQVNTIHJlYWRlciBjYW5jZWwo
KSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUgCi1Q
QVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkIHdpdGggUmVhZGFibGVTdHJlYW0gKGVycm9y
ZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpIAotUEFTUyBnZXRS
ZWFkZXIoKSBzaG91bGQgcmV0dXJuIGEgcmVhZGVyIHRoYXQgYWN0cyBlcnJvcmVkIAotUEFTUyBy
ZWFkKCkgdHdpY2Ugc2hvdWxkIGdpdmUgdGhlIGVycm9yIGVhY2ggdGltZSAKLVBBU1MgbG9ja2Vk
IHNob3VsZCBiZSBmYWxzZSAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIg
d2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJv
bWlzZSBpbiBzdGFydCkgcmVhZGVyIAotUEFTUyBjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRo
ZSBlcnJvciAKLVBBU1MgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8g
cmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkgCi1QQVNTIHJlYWQoKSBzaG91bGQgcmVqZWN0IHdp
dGggdGhlIGVycm9yIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlciB3aXRo
IFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoZXJyb3JlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpIAot
UEFTUyBjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciAKLVBBU1MgcmVsZWFzaW5n
IHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRp
dHkgCi1QQVNTIHJlYWQoKSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAotUEFTUyBSdW5u
aW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAo
ZXJyb3JlZCBhZnRlciBnZXR0aW5nIHJlYWRlcikgCi1QQVNTIGNsb3NlZCBzaG91bGQgcmVqZWN0
IHdpdGggdGhlIGVycm9yIAotUEFTUyByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNs
b3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKLVBBU1MgcmVhZCgpIHNob3VsZCBy
ZWplY3Qgd2l0aCB0aGUgZXJyb3IgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNUd29DaHVua3NP
cGVuUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHN0aWxs
IG9wZW4pIHJlYWRlciAKLVBBU1MgY2FsbGluZyByZWFkKCkgdHdpY2Ugd2l0aG91dCB3YWl0aW5n
IHdpbGwgZXZlbnR1YWxseSBnaXZlIGJvdGggY2h1bmtzIChzZXF1ZW50aWFsKSAKLVBBU1MgY2Fs
bGluZyByZWFkKCkgdHdpY2Ugd2l0aG91dCB3YWl0aW5nIHdpbGwgZXZlbnR1YWxseSBnaXZlIGJv
dGggY2h1bmtzIChuZXN0ZWQpIAotUEFTUyByZWFkKCkgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBw
cm9taXNlcyBlYWNoIHRpbWUgCi1QQVNTIGNhbmNlbCgpIGFmdGVyIGEgcmVhZCgpIHNob3VsZCBz
dGlsbCBnaXZlIHRoYXQgc2luZ2xlIHJlYWQgcmVzdWx0IAotUEFTUyBSdW5uaW5nIHRlbXBsYXRl
ZFJTVHdvQ2h1bmtzQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3Mg
ZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXIgCi1QQVNTIHRoaXJkIHJlYWQoKSwgd2l0aG91
dCB3YWl0aW5nLCBzaG91bGQgZ2l2ZSB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAo
c2VxdWVudGlhbCkgCi1QQVNTIHRoaXJkIHJlYWQoKSwgd2l0aG91dCB3YWl0aW5nLCBzaG91bGQg
Z2l2ZSB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAobmVzdGVkKSAKLVBBU1MgZHJh
aW5pbmcgdGhlIHN0cmVhbSB2aWEgcmVhZCgpIHNob3VsZCBjYXVzZSB0aGUgcmVhZGVyIGNsb3Nl
ZCBwcm9taXNlIHRvIGZ1bGZpbGwsIGJ1dCBsb2NrZWQgc3RheXMgdHJ1ZSAKLVBBU1MgcmVsZWFz
aW5nIHRoZSBsb2NrIGFmdGVyIHRoZSBzdHJlYW0gaXMgY2xvc2VkIHNob3VsZCBjYXVzZSBsb2Nr
ZWQgdG8gYmVjb21lIGZhbHNlIAotUEFTUyByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNl
IGZ1cnRoZXIgcmVhZCgpIGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yIAotUEFTUyBy
ZWFkZXIncyBjbG9zZWQgcHJvcGVydHkgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUgcHJvbWlzZSAK
LUZBSUwgTG9hZCB0ZW1wbGF0ZWQuanMgd2l0aCBTaGFyZWRXb3JrZXIgYXNzZXJ0X3VucmVhY2hl
ZDogU2hhcmVkV29ya2VyIGlzIHVuYXZhaWxhYmxlIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQot
RkFJTCBVbnRpdGxlZCB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnbmF2
aWdhdG9yLnNlcnZpY2VXb3JrZXIuZ2V0UmVnaXN0cmF0aW9uJykKLVBBU1MgUnVubmluZyB0ZW1w
bGF0ZWRSU0VtcHR5IHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5KSAKLVBBU1MgaW5zdGFuY2Vz
IGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBhbmQgcHJvcGVydGllcyAKLVBBU1MgUnVubmluZyB0
ZW1wbGF0ZWRSU0VtcHR5UmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXIg
Ci1QQVNTIGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMg
Ci1QQVNTIGxvY2tlZCBzaG91bGQgYmUgdHJ1ZSAKLVBBU1MgcmVhZCgpIHNob3VsZCBuZXZlciBz
ZXR0bGUgCi1QQVNTIHR3byByZWFkKClzIHNob3VsZCBib3RoIG5ldmVyIHNldHRsZSAKLVBBU1Mg
cmVhZCgpIHNob3VsZCByZXR1cm4gZGlzdGluY3QgcHJvbWlzZXMgZWFjaCB0aW1lIAotUEFTUyBn
ZXRSZWFkZXIoKSBhZ2FpbiBvbiB0aGUgc3RyZWFtIHNob3VsZCBmYWlsIAotUEFTUyByZWxlYXNp
bmcgdGhlIGxvY2sgd2l0aCBwZW5kaW5nIHJlYWQgcmVxdWVzdHMgc2hvdWxkIHRocm93IGJ1dCB0
aGUgcmVhZCByZXF1ZXN0cyBzaG91bGQgc3RheSBwZW5kaW5nIAotUEFTUyByZWxlYXNpbmcgdGhl
IGxvY2sgc2hvdWxkIGNhdXNlIGZ1cnRoZXIgcmVhZCgpIGNhbGxzIHRvIHJlamVjdCB3aXRoIGEg
VHlwZUVycm9yIAotUEFTUyByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCBj
YWxscyB0byByZWplY3Qgd2l0aCBhIFR5cGVFcnJvciAKLVBBU1MgcmVsZWFzaW5nIHRoZSBsb2Nr
IHNob3VsZCBjYXVzZSBsb2NrZWQgdG8gYmVjb21lIGZhbHNlIAotUEFTUyBjYW5jZWxpbmcgdmlh
IHRoZSByZWFkZXIgc2hvdWxkIGNhdXNlIHRoZSByZWFkZXIgdG8gYWN0IGNsb3NlZCAKLVBBU1Mg
Y2FuY2VsaW5nIHZpYSB0aGUgc3RyZWFtIHNob3VsZCBmYWlsIAotUEFTUyBSdW5uaW5nIHRlbXBs
YXRlZFJTQ2xvc2VkIHdpdGggUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBzdGFy
dCkgCi1QQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJv
bWlzZSBlYWNoIHRpbWUgCi1QQVNTIGxvY2tlZCBzaG91bGQgYmUgZmFsc2UgCi1QQVNTIGdldFJl
YWRlcigpIHNob3VsZCBiZSBPSyAKLVBBU1Mgc2hvdWxkIGJlIGFibGUgdG8gYWNxdWlyZSBtdWx0
aXBsZSByZWFkZXJzIGlmIHRoZXkgYXJlIHJlbGVhc2VkIGluIHN1Y2Nlc3Npb24gCi1QQVNTIHNo
b3VsZCBub3QgYmUgYWJsZSB0byBhY3F1aXJlIGEgc2Vjb25kIHJlYWRlciBpZiB3ZSBkb24ndCBy
ZWxlYXNlIHRoZSBmaXJzdCBvbmUgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFk
ZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUgZ2V0dGluZyByZWFk
ZXIpIAotUEFTUyByZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQs
IGRvbmU6IHRydWUgfSAKLVBBU1MgcmVhZCgpIG11bHRpcGxlIHRpbWVzIHNob3VsZCBmdWxmaWxs
IHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCi1QQVNTIHJlYWQoKSBzaG91
bGQgd29yayB3aGVuIHVzZWQgd2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZpbGwgY2FsbGJhY2sg
Ci1QQVNTIGNsb3NlZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCAKLVBBU1MgcmVsZWFz
aW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRl
bnRpdHkgCi1QQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQg
cHJvbWlzZSBlYWNoIHRpbWUgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIg
d2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJlYWRlcikg
Ci1QQVNTIHJlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9u
ZTogdHJ1ZSB9IAotUEFTUyByZWFkKCkgbXVsdGlwbGUgdGltZXMgc2hvdWxkIGZ1bGZpbGwgd2l0
aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKLVBBU1MgcmVhZCgpIHNob3VsZCB3
b3JrIHdoZW4gdXNlZCB3aXRoaW4gYW5vdGhlciByZWFkKCkgZnVsZmlsbCBjYWxsYmFjayAKLVBB
U1MgY2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkIAotUEFTUyByZWxlYXNpbmcg
dGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0
eSAKLVBBU1MgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9t
aXNlIGVhY2ggdGltZSAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZCB3aXRoIFJlYWRh
YmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbmNlbCkgCi1QQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1
cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgCi1QQVNTIGxvY2tlZCBz
aG91bGQgYmUgZmFsc2UgCi1QQVNTIGdldFJlYWRlcigpIHNob3VsZCBiZSBPSyAKLVBBU1Mgc2hv
dWxkIGJlIGFibGUgdG8gYWNxdWlyZSBtdWx0aXBsZSByZWFkZXJzIGlmIHRoZXkgYXJlIHJlbGVh
c2VkIGluIHN1Y2Nlc3Npb24gCi1QQVNTIHNob3VsZCBub3QgYmUgYWJsZSB0byBhY3F1aXJlIGEg
c2Vjb25kIHJlYWRlciBpZiB3ZSBkb24ndCByZWxlYXNlIHRoZSBmaXJzdCBvbmUgCi1QQVNTIFJ1
bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIg
KGNsb3NlZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcgcmVhZGVyKSAKLVBBU1MgcmVhZCgpIHNo
b3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCi1QQVNT
IHJlYWQoKSBtdWx0aXBsZSB0aW1lcyBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVm
aW5lZCwgZG9uZTogdHJ1ZSB9IAotUEFTUyByZWFkKCkgc2hvdWxkIHdvcmsgd2hlbiB1c2VkIHdp
dGhpbiBhbm90aGVyIHJlYWQoKSBmdWxmaWxsIGNhbGxiYWNrIAotUEFTUyBjbG9zZWQgc2hvdWxk
IGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQgCi1QQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQg
Y2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IAotUEFTUyBjYW5jZWwo
KSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIAot
UEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJv
cmVkIHZpYSBjYWxsIGluIHN0YXJ0KSAKLVBBU1MgZ2V0UmVhZGVyKCkgc2hvdWxkIHJldHVybiBh
IHJlYWRlciB0aGF0IGFjdHMgZXJyb3JlZCAKLVBBU1MgcmVhZCgpIHR3aWNlIHNob3VsZCBnaXZl
IHRoZSBlcnJvciBlYWNoIHRpbWUgCi1QQVNTIGxvY2tlZCBzaG91bGQgYmUgZmFsc2UgCi1QQVNT
IFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHkgd2l0aCBSZWFkYWJsZVN0cmVhbSAo
ZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCkgCi1QQVNTIHNob3VsZCBiZSBhYmxlIHRvIG9idGFp
biBhIHNlY29uZCByZWFkZXIsIHdpdGggdGhlIGNvcnJlY3QgY2xvc2VkIHByb21pc2UgCi1QQVNT
IHNob3VsZCBub3QgYmUgYWJsZSB0byBvYnRhaW4gYWRkaXRpb25hbCByZWFkZXJzIGlmIHdlIGRv
bid0IHJlbGVhc2UgdGhlIGZpcnN0IGxvY2sgCi1QQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1cm4g
YSBkaXN0aW5jdCByZWplY3RlZCBwcm9taXNlIGVhY2ggdGltZSAKLVBBU1MgcmVhZGVyIGNhbmNl
bCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCByZWplY3RlZCBwcm9taXNlIGVhY2ggdGltZSAK
LVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJy
b3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgCi1QQVNTIGdl
dFJlYWRlcigpIHNob3VsZCByZXR1cm4gYSByZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQgCi1QQVNT
IHJlYWQoKSB0d2ljZSBzaG91bGQgZ2l2ZSB0aGUgZXJyb3IgZWFjaCB0aW1lIAotUEFTUyBsb2Nr
ZWQgc2hvdWxkIGJlIGZhbHNlIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRl
ciB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBw
cm9taXNlIGluIHN0YXJ0KSByZWFkZXIgCi1QQVNTIGNsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGgg
dGhlIGVycm9yIAotUEFTUyByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0
byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKLVBBU1MgcmVhZCgpIHNob3VsZCByZWplY3Qg
d2l0aCB0aGUgZXJyb3IgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyIHdp
dGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcikg
Ci1QQVNTIGNsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAotUEFTUyByZWxlYXNp
bmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVu
dGl0eSAKLVBBU1MgcmVhZCgpIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCi1QQVNTIFJ1
bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVy
IChlcnJvcmVkIGFmdGVyIGdldHRpbmcgcmVhZGVyKSAKLVBBU1MgY2xvc2VkIHNob3VsZCByZWpl
Y3Qgd2l0aCB0aGUgZXJyb3IgCi1QQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2Ug
Y2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IAotUEFTUyByZWFkKCkgc2hvdWxk
IHJlamVjdCB3aXRoIHRoZSBlcnJvciAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU1R3b0NodW5r
c09wZW5SZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgc3Rp
bGwgb3BlbikgcmVhZGVyIAotUEFTUyBjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRp
bmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MgKHNlcXVlbnRpYWwpIAotUEFTUyBj
YWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUg
Ym90aCBjaHVua3MgKG5lc3RlZCkgCi1QQVNTIHJlYWQoKSBzaG91bGQgcmV0dXJuIGRpc3RpbmN0
IHByb21pc2VzIGVhY2ggdGltZSAKLVBBU1MgY2FuY2VsKCkgYWZ0ZXIgYSByZWFkKCkgc2hvdWxk
IHN0aWxsIGdpdmUgdGhhdCBzaW5nbGUgcmVhZCByZXN1bHQgCi1QQVNTIFJ1bm5pbmcgdGVtcGxh
dGVkUlNUd29DaHVua3NDbG9zZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5r
cyBlbnF1ZXVlZCwgdGhlbiBjbG9zZWQpIHJlYWRlciAKLVBBU1MgdGhpcmQgcmVhZCgpLCB3aXRo
b3V0IHdhaXRpbmcsIHNob3VsZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9
IChzZXF1ZW50aWFsKSAKLVBBU1MgdGhpcmQgcmVhZCgpLCB3aXRob3V0IHdhaXRpbmcsIHNob3Vs
ZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IChuZXN0ZWQpIAotUEFTUyBk
cmFpbmluZyB0aGUgc3RyZWFtIHZpYSByZWFkKCkgc2hvdWxkIGNhdXNlIHRoZSByZWFkZXIgY2xv
c2VkIHByb21pc2UgdG8gZnVsZmlsbCwgYnV0IGxvY2tlZCBzdGF5cyB0cnVlIAotUEFTUyByZWxl
YXNpbmcgdGhlIGxvY2sgYWZ0ZXIgdGhlIHN0cmVhbSBpcyBjbG9zZWQgc2hvdWxkIGNhdXNlIGxv
Y2tlZCB0byBiZWNvbWUgZmFsc2UgCi1QQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1
c2UgZnVydGhlciByZWFkKCkgY2FsbHMgdG8gcmVqZWN0IHdpdGggYSBUeXBlRXJyb3IgCi1QQVNT
IHJlYWRlcidzIGNsb3NlZCBwcm9wZXJ0eSBhbHdheXMgcmV0dXJucyB0aGUgc2FtZSBwcm9taXNl
IAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxl
LXN0cmVhbXMvdGVtcGxhdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1
YzZhNmFjYWVmYjVkYWM1OGI5NWYyMjgxMTAzMmU5YWJhNjJhZmMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
cnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9ycy10ZXN0LXRlbXBsYXRlcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0idGVt
cGxhdGVkLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0ndXNlIHN0cmljdCc7Ci13b3JrZXJfdGVz
dCgndGVtcGxhdGVkLmpzJyk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFibGUtc3RyZWFt
cy90ZW1wbGF0ZWQuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMtYXBpL3JlYWRhYmxlLXN0cmVhbXMvdGVtcGxhdGVkLmpzCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2ZGIwNDI5OTk0ZDQ1M2RiZmNkMmU4MzQ3ZTZmYTdlZmRmMjBi
YzRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVhZGFi
bGUtc3RyZWFtcy90ZW1wbGF0ZWQuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDggKzAsMCBAQAot
J3VzZSBzdHJpY3QnOwotCi1pZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7Ci0gIHNlbGYuaW1wb3J0
U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOwotICBzZWxmLmltcG9ydFNjcmlw
dHMoJy4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzJyk7Ci0gIHNlbGYuaW1wb3J0U2NyaXB0cygn
Li4vcmVzb3VyY2VzL3JzLXRlc3QtdGVtcGxhdGVzLmpzJyk7Ci19Ci0KLS8vIFJ1biB0aGUgcmVh
ZGFibGUgc3RyZWFtIHRlc3QgdGVtcGxhdGVzIGFnYWluc3QgcmVhZGFibGUgc3RyZWFtcyBjcmVh
dGVkIGRpcmVjdGx5IHVzaW5nIHRoZSBjb25zdHJ1Y3RvcgotCi1jb25zdCB0aGVFcnJvciA9IHsg
bmFtZTogJ2JvbyEnIH07Ci1jb25zdCBjaHVua3MgPSBbJ2EnLCAnYiddOwotCi10ZW1wbGF0ZWRS
U0VtcHR5KCdSZWFkYWJsZVN0cmVhbSAoZW1wdHkpJywgKCkgPT4gewotICByZXR1cm4gbmV3IFJl
YWRhYmxlU3RyZWFtKCk7Ci19KTsKLQotdGVtcGxhdGVkUlNFbXB0eVJlYWRlcignUmVhZGFibGVT
dHJlYW0gKGVtcHR5KSByZWFkZXInLCAoKSA9PiB7Ci0gIHJldHVybiBzdHJlYW1BbmREZWZhdWx0
UmVhZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSgpKTsKLX0pOwotCi10ZW1wbGF0ZWRSU0Nsb3NlZCgn
UmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBzdGFydCknLCAoKSA9PiB7Ci0gIHJl
dHVybiBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMuY2xvc2Uo
KTsKLSAgICB9Ci0gIH0pOwotfSk7Ci0KLXRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyKCdSZWFkYWJs
ZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUgZ2V0dGluZyByZWFkZXIpJywgKCkgPT4gewot
ICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
LSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9Ci0gIH0pOwotICBj
b250cm9sbGVyLmNsb3NlKCk7Ci0gIGNvbnN0IHJlc3VsdCA9IHN0cmVhbUFuZERlZmF1bHRSZWFk
ZXIoc3RyZWFtKTsKLSAgcmV0dXJuIHJlc3VsdDsKLX0pOwotCi10ZW1wbGF0ZWRSU0Nsb3NlZFJl
YWRlcignUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIp
JywgKCkgPT4gewotICBsZXQgY29udHJvbGxlcjsKLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVyID0gYzsKLSAgICB9
Ci0gIH0pOwotICBjb25zdCByZXN1bHQgPSBzdHJlYW1BbmREZWZhdWx0UmVhZGVyKHN0cmVhbSk7
Ci0gIGNvbnRyb2xsZXIuY2xvc2UoKTsKLSAgcmV0dXJuIHJlc3VsdDsKLX0pOwotCi10ZW1wbGF0
ZWRSU0Nsb3NlZCgnUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKScsICgpID0+IHsK
LSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Ci0gIHN0cmVhbS5jYW5jZWwo
KTsKLSAgcmV0dXJuIHN0cmVhbTsKLX0pOwotCi10ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlcignUmVh
ZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgdmlhIGNhbmNlbCBhZnRlciBnZXR0aW5nIHJlYWRl
ciknLCAoKSA9PiB7Ci0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwotICBj
b25zdCByZXN1bHQgPSBzdHJlYW1BbmREZWZhdWx0UmVhZGVyKHN0cmVhbSk7Ci0gIHJlc3VsdC5y
ZWFkZXIuY2FuY2VsKCk7Ci0gIHJldHVybiByZXN1bHQ7Ci19KTsKLQotdGVtcGxhdGVkUlNFcnJv
cmVkKCdSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCknLCAoKSA9PiB7
Ci0gIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KGMpIHsKLSAgICAgIGMu
ZXJyb3IodGhlRXJyb3IpOwotICAgIH0KLSAgfSk7Ci19LCB0aGVFcnJvcik7Ci0KLXRlbXBsYXRl
ZFJTRXJyb3JlZFN5bmNPbmx5KCdSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBz
dGFydCknLCAoKSA9PiB7Ci0gIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0
KGMpIHsKLSAgICAgIGMuZXJyb3IodGhlRXJyb3IpOwotICAgIH0KLSAgfSk7Ci19LCB0aGVFcnJv
cik7Ci0KLXRlbXBsYXRlZFJTRXJyb3JlZCgnUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJl
dHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpJywgKCkgPT4gewotICByZXR1cm4g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydCgpIHsKLSAgICAgIHJldHVybiBQcm9taXNl
LnJlamVjdCh0aGVFcnJvcik7Ci0gICAgfQotICB9KTsKLX0sIHRoZUVycm9yKTsKLQotdGVtcGxh
dGVkUlNFcnJvcmVkUmVhZGVyKCdSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5n
IGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgcmVhZGVyJywgKCkgPT4gewotICByZXR1cm4g
c3RyZWFtQW5kRGVmYXVsdFJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0oewotICAgIHN0YXJ0KCkg
ewotICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHRoZUVycm9yKTsKLSAgICB9Ci0gIH0pKTsK
LX0sIHRoZUVycm9yKTsKLQotdGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyKCdSZWFkYWJsZVN0cmVh
bSByZWFkZXIgKGVycm9yZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVyKScsICgpID0+IHsKLSAgbGV0
IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAg
c3RhcnQoYykgewotICAgICAgY29udHJvbGxlciA9IGM7Ci0gICAgfQotICB9KTsKLSAgY29udHJv
bGxlci5lcnJvcih0aGVFcnJvcik7Ci0gIHJldHVybiBzdHJlYW1BbmREZWZhdWx0UmVhZGVyKHN0
cmVhbSk7Ci19LCB0aGVFcnJvcik7Ci0KLXRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlcignUmVhZGFi
bGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGFmdGVyIGdldHRpbmcgcmVhZGVyKScsICgpID0+IHsK
LSAgbGV0IGNvbnRyb2xsZXI7Ci0gIGNvbnN0IHJlc3VsdCA9IHN0cmVhbUFuZERlZmF1bHRSZWFk
ZXIobmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjb250cm9sbGVy
ID0gYzsKLSAgICB9Ci0gIH0pKTsKLSAgY29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7Ci0gIHJl
dHVybiByZXN1bHQ7Ci19LCB0aGVFcnJvcik7Ci0KLXRlbXBsYXRlZFJTVHdvQ2h1bmtzT3BlblJl
YWRlcignUmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHN0aWxsIG9wZW4pIHJl
YWRlcicsICgpID0+IHsKLSAgcmV0dXJuIHN0cmVhbUFuZERlZmF1bHRSZWFkZXIobmV3IFJlYWRh
YmxlU3RyZWFtKHsKLSAgICBzdGFydChjKSB7Ci0gICAgICBjLmVucXVldWUoY2h1bmtzWzBdKTsK
LSAgICAgIGMuZW5xdWV1ZShjaHVua3NbMV0pOwotICAgIH0KLSAgfSkpOwotfSwgY2h1bmtzKTsK
LQotdGVtcGxhdGVkUlNUd29DaHVua3NDbG9zZWRSZWFkZXIoJ1JlYWRhYmxlU3RyZWFtICh0d28g
Y2h1bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkgcmVhZGVyJywgKCkgPT4gewotICBsZXQgZG9D
bG9zZTsKLSAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICBzdGFydChj
KSB7Ci0gICAgICBjLmVucXVldWUoY2h1bmtzWzBdKTsKLSAgICAgIGMuZW5xdWV1ZShjaHVua3Nb
MV0pOwotICAgICAgZG9DbG9zZSA9IGMuY2xvc2UuYmluZChjKTsKLSAgICB9Ci0gIH0pOwotICBj
b25zdCByZXN1bHQgPSBzdHJlYW1BbmREZWZhdWx0UmVhZGVyKHN0cmVhbSk7Ci0gIGRvQ2xvc2Uo
KTsKLSAgcmV0dXJuIHJlc3VsdDsKLX0sIGNodW5rcyk7Ci0KLWZ1bmN0aW9uIHN0cmVhbUFuZERl
ZmF1bHRSZWFkZXIoc3RyZWFtKSB7Ci0gIHJldHVybiB7IHN0cmVhbSwgcmVhZGVyOiBzdHJlYW0u
Z2V0UmVhZGVyKCkgfTsKLX0KLQotZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFwaS9yZXNvdXJjZXMvcnMtdGVz
dC10ZW1wbGF0ZXMuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMtYXBpL3Jlc291cmNlcy9ycy10ZXN0LXRlbXBsYXRlcy5qcwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggODUyYjU2NWQ5MDQyZTcxNzgwZDE2NGNhMjE2YTg3NGZjMDk5
YmM4ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMtYXBpL3Jlc291
cmNlcy9ycy10ZXN0LXRlbXBsYXRlcy5qcworKysgL2Rldi9udWxsCkBAIC0xLDYyNCArMCwwIEBA
Ci0ndXNlIHN0cmljdCc7Ci0KLS8vIFRoZXNlIHRlc3RzIGNhbiBiZSBydW4gYWdhaW5zdCBhbnkg
cmVhZGFibGUgc3RyZWFtIHByb2R1Y2VkIGJ5IHRoZSB3ZWIgcGxhdGZvcm0gdGhhdCBtZWV0cyB0
aGUgZ2l2ZW4gZGVzY3JpcHRpb25zLgotLy8gRm9yIHJlYWRhYmxlIHN0cmVhbSB0ZXN0cywgdGhl
IGZhY3Rvcnkgc2hvdWxkIHJldHVybiB0aGUgc3RyZWFtLiBGb3IgcmVhZGVyIHRlc3RzLCB0aGUg
ZmFjdG9yeSBzaG91bGQgcmV0dXJuIGEKLS8vIHsgc3RyZWFtLCByZWFkZXIgfSBvYmplY3QuIChZ
b3UgY2FuIHVzZSB0aGlzIHRvIHZhcnkgdGhlIHRpbWUgYXQgd2hpY2ggeW91IGFjcXVpcmUgYSBy
ZWFkZXIuKQotCi1zZWxmLnRlbXBsYXRlZFJTRW1wdHkgPSAobGFiZWwsIGZhY3RvcnkpID0+IHsK
LSAgdGVzdCgoKSA9PiB7fSwgJ1J1bm5pbmcgdGVtcGxhdGVkUlNFbXB0eSB3aXRoICcgKyBsYWJl
bCk7Ci0KLSAgdGVzdCgoKSA9PiB7Ci0KLSAgICBjb25zdCBycyA9IGZhY3RvcnkoKTsKLQotICAg
IGFzc2VydF9lcXVhbHModHlwZW9mIHJzLmxvY2tlZCwgJ2Jvb2xlYW4nLCAnaGFzIGEgYm9vbGVh
biBsb2NrZWQgZ2V0dGVyJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnMuY2FuY2VsLCAn
ZnVuY3Rpb24nLCAnaGFzIGEgY2FuY2VsIG1ldGhvZCcpOwotICAgIGFzc2VydF9lcXVhbHModHlw
ZW9mIHJzLmdldFJlYWRlciwgJ2Z1bmN0aW9uJywgJ2hhcyBhIGdldFJlYWRlciBtZXRob2QnKTsK
LSAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBycy5waXBlVGhyb3VnaCwgJ2Z1bmN0aW9uJywgJ2hh
cyBhIHBpcGVUaHJvdWdoIG1ldGhvZCcpOwotICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJzLnBp
cGVUbywgJ2Z1bmN0aW9uJywgJ2hhcyBhIHBpcGVUbyBtZXRob2QnKTsKLSAgICBhc3NlcnRfZXF1
YWxzKHR5cGVvZiBycy50ZWUsICdmdW5jdGlvbicsICdoYXMgYSB0ZWUgbWV0aG9kJyk7Ci0KLSAg
fSwgJ2luc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMnKTsK
LX07Ci0KLXNlbGYudGVtcGxhdGVkUlNDbG9zZWQgPSAobGFiZWwsIGZhY3RvcnkpID0+IHsKLSAg
dGVzdCgoKSA9PiB7fSwgJ1J1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWQgd2l0aCAnICsgbGFiZWwp
OwotCi0gIHByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgICBjb25zdCBycyA9IGZhY3RvcnkoKTsK
LSAgICBjb25zdCBjYW5jZWxQcm9taXNlMSA9IHJzLmNhbmNlbCgpOwotICAgIGNvbnN0IGNhbmNl
bFByb21pc2UyID0gcnMuY2FuY2VsKCk7Ci0KLSAgICBhc3NlcnRfbm90X2VxdWFscyhjYW5jZWxQ
cm9taXNlMSwgY2FuY2VsUHJvbWlzZTIsICdjYW5jZWwoKSBjYWxscyBzaG91bGQgcmV0dXJuIGRp
c3RpbmN0IHByb21pc2VzJyk7Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgY2Fu
Y2VsUHJvbWlzZTEudGhlbih2ID0+IGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAnZmlyc3Qg
Y2FuY2VsKCkgY2FsbCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpKSwKLSAgICAgIGNh
bmNlbFByb21pc2UyLnRoZW4odiA9PiBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ3NlY29u
ZCBjYW5jZWwoKSBjYWxsIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJykpCi0gICAgXSk7
Ci0KLSAgfSwgJ2NhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJv
bWlzZSBlYWNoIHRpbWUnKTsKLQotICB0ZXN0KCgpID0+IHsKLQotICAgIGNvbnN0IHJzID0gZmFj
dG9yeSgpOwotICAgIGFzc2VydF9mYWxzZShycy5sb2NrZWQsICdsb2NrZWQgZ2V0dGVyIHNob3Vs
ZCByZXR1cm4gZmFsc2UnKTsKLQotICB9LCAnbG9ja2VkIHNob3VsZCBiZSBmYWxzZScpOwotCi0g
IHRlc3QoKCkgPT4gewotCi0gICAgY29uc3QgcnMgPSBmYWN0b3J5KCk7Ci0gICAgcnMuZ2V0UmVh
ZGVyKCk7IC8vIGdldFJlYWRlcigpIHNob3VsZCBub3QgdGhyb3cuCi0KLSAgfSwgJ2dldFJlYWRl
cigpIHNob3VsZCBiZSBPSycpOwotCi0gIHRlc3QoKCkgPT4gewotCi0gICAgY29uc3QgcnMgPSBm
YWN0b3J5KCk7Ci0KLSAgICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKLSAgICByZWFk
ZXIucmVsZWFzZUxvY2soKTsKLQotICAgIGNvbnN0IHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsg
Ly8gR2V0dGluZyBhIHNlY29uZCByZWFkZXIgc2hvdWxkIG5vdCB0aHJvdy4KLSAgICByZWFkZXIy
LnJlbGVhc2VMb2NrKCk7Ci0KLSAgICBycy5nZXRSZWFkZXIoKTsgLy8gR2V0dGluZyBhIHRoaXJk
IHJlYWRlciBzaG91bGQgbm90IHRocm93LgotCi0gIH0sICdzaG91bGQgYmUgYWJsZSB0byBhY3F1
aXJlIG11bHRpcGxlIHJlYWRlcnMgaWYgdGhleSBhcmUgcmVsZWFzZWQgaW4gc3VjY2Vzc2lvbicp
OwotCi0gIHRlc3QoKCkgPT4gewotCi0gICAgY29uc3QgcnMgPSBmYWN0b3J5KCk7Ci0KLSAgICBy
cy5nZXRSZWFkZXIoKTsKLQotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9
PiBycy5nZXRSZWFkZXIoKSwgJ2dldHRpbmcgYSBzZWNvbmQgcmVhZGVyIHNob3VsZCB0aHJvdycp
OwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBycy5nZXRSZWFkZXIo
KSwgJ2dldHRpbmcgYSB0aGlyZCByZWFkZXIgc2hvdWxkIHRocm93Jyk7Ci0KLSAgfSwgJ3Nob3Vs
ZCBub3QgYmUgYWJsZSB0byBhY3F1aXJlIGEgc2Vjb25kIHJlYWRlciBpZiB3ZSBkb25cJ3QgcmVs
ZWFzZSB0aGUgZmlyc3Qgb25lJyk7Ci19OwotCi1zZWxmLnRlbXBsYXRlZFJTRXJyb3JlZCA9IChs
YWJlbCwgZmFjdG9yeSwgZXJyb3IpID0+IHsKLSAgdGVzdCgoKSA9PiB7fSwgJ1J1bm5pbmcgdGVt
cGxhdGVkUlNFcnJvcmVkIHdpdGggJyArIGxhYmVsKTsKLQotICBwcm9taXNlX3Rlc3QodCA9PiB7
Ci0KLSAgICBjb25zdCBycyA9IGZhY3RvcnkoKTsKLSAgICBjb25zdCByZWFkZXIgPSBycy5nZXRS
ZWFkZXIoKTsKLQotICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICBwcm9taXNlX3JlamVj
dHModCwgZXJyb3IsIHJlYWRlci5jbG9zZWQpLAotICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIGVy
cm9yLCByZWFkZXIucmVhZCgpKQotICAgIF0pOwotCi0gIH0sICdnZXRSZWFkZXIoKSBzaG91bGQg
cmV0dXJuIGEgcmVhZGVyIHRoYXQgYWN0cyBlcnJvcmVkJyk7Ci0KLSAgcHJvbWlzZV90ZXN0KHQg
PT4gewotCi0gICAgY29uc3QgcnMgPSBmYWN0b3J5KCk7Ci0gICAgY29uc3QgcmVhZGVyID0gcnMu
Z2V0UmVhZGVyKCk7Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgcHJvbWlzZV9y
ZWplY3RzKHQsIGVycm9yLCByZWFkZXIucmVhZCgpKSwKLSAgICAgIHByb21pc2VfcmVqZWN0cyh0
LCBlcnJvciwgcmVhZGVyLnJlYWQoKSksCi0gICAgICBwcm9taXNlX3JlamVjdHModCwgZXJyb3Is
IHJlYWRlci5jbG9zZWQpCi0gICAgXSk7Ci0KLSAgfSwgJ3JlYWQoKSB0d2ljZSBzaG91bGQgZ2l2
ZSB0aGUgZXJyb3IgZWFjaCB0aW1lJyk7Ci0KLSAgdGVzdCgoKSA9PiB7Ci0gICAgY29uc3QgcnMg
PSBmYWN0b3J5KCk7Ci0KLSAgICBhc3NlcnRfZmFsc2UocnMubG9ja2VkLCAnbG9ja2VkIGdldHRl
ciBzaG91bGQgcmV0dXJuIGZhbHNlJyk7Ci0gIH0sICdsb2NrZWQgc2hvdWxkIGJlIGZhbHNlJyk7
Ci19OwotCi1zZWxmLnRlbXBsYXRlZFJTRXJyb3JlZFN5bmNPbmx5ID0gKGxhYmVsLCBmYWN0b3J5
LCBlcnJvcikgPT4gewotICB0ZXN0KCgpID0+IHt9LCAnUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9y
ZWRTeW5jT25seSB3aXRoICcgKyBsYWJlbCk7Ci0KLSAgcHJvbWlzZV90ZXN0KHQgPT4gewotCi0g
ICAgY29uc3QgcnMgPSBmYWN0b3J5KCk7Ci0gICAgcnMuZ2V0UmVhZGVyKCkucmVsZWFzZUxvY2so
KTsKLSAgICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsgLy8gQ2FsbGluZyBnZXRSZWFk
ZXIoKSB0d2ljZSBkb2VzIG5vdCB0aHJvdyAodGhlIHN0cmVhbSBpcyBub3QgbG9ja2VkKS4KLQot
ICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3IsIHJlYWRlci5jbG9zZWQpOwotCi0g
IH0sICdzaG91bGQgYmUgYWJsZSB0byBvYnRhaW4gYSBzZWNvbmQgcmVhZGVyLCB3aXRoIHRoZSBj
b3JyZWN0IGNsb3NlZCBwcm9taXNlJyk7Ci0KLSAgdGVzdCgoKSA9PiB7Ci0KLSAgICBjb25zdCBy
cyA9IGZhY3RvcnkoKTsKLSAgICBycy5nZXRSZWFkZXIoKTsKLQotICAgIGFzc2VydF90aHJvd3Mo
bmV3IFR5cGVFcnJvcigpLCAoKSA9PiBycy5nZXRSZWFkZXIoKSwgJ2dldHRpbmcgYSBzZWNvbmQg
cmVhZGVyIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOwotICAgIGFzc2VydF90aHJvd3MobmV3
IFR5cGVFcnJvcigpLCAoKSA9PiBycy5nZXRSZWFkZXIoKSwgJ2dldHRpbmcgYSB0aGlyZCByZWFk
ZXIgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7Ci0KLSAgfSwgJ3Nob3VsZCBub3QgYmUgYWJs
ZSB0byBvYnRhaW4gYWRkaXRpb25hbCByZWFkZXJzIGlmIHdlIGRvblwndCByZWxlYXNlIHRoZSBm
aXJzdCBsb2NrJyk7Ci0KLSAgcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gICAgY29uc3QgcnMgPSBm
YWN0b3J5KCk7Ci0gICAgY29uc3QgY2FuY2VsUHJvbWlzZTEgPSBycy5jYW5jZWwoKTsKLSAgICBj
b25zdCBjYW5jZWxQcm9taXNlMiA9IHJzLmNhbmNlbCgpOwotCi0gICAgYXNzZXJ0X25vdF9lcXVh
bHMoY2FuY2VsUHJvbWlzZTEsIGNhbmNlbFByb21pc2UyLCAnY2FuY2VsKCkgY2FsbHMgc2hvdWxk
IHJldHVybiBkaXN0aW5jdCBwcm9taXNlcycpOwotCi0gICAgcmV0dXJuIFByb21pc2UuYWxsKFsK
LSAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvciwgY2FuY2VsUHJvbWlzZTEpLAotICAgICAg
cHJvbWlzZV9yZWplY3RzKHQsIGVycm9yLCBjYW5jZWxQcm9taXNlMikKLSAgICBdKTsKLQotICB9
LCAnY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IHJlamVjdGVkIHByb21pc2UgZWFj
aCB0aW1lJyk7Ci0KLSAgcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gICAgY29uc3QgcnMgPSBmYWN0
b3J5KCk7Ci0gICAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7Ci0gICAgY29uc3QgY2Fu
Y2VsUHJvbWlzZTEgPSByZWFkZXIuY2FuY2VsKCk7Ci0gICAgY29uc3QgY2FuY2VsUHJvbWlzZTIg
PSByZWFkZXIuY2FuY2VsKCk7Ci0KLSAgICBhc3NlcnRfbm90X2VxdWFscyhjYW5jZWxQcm9taXNl
MSwgY2FuY2VsUHJvbWlzZTIsICdjYW5jZWwoKSBjYWxscyBzaG91bGQgcmV0dXJuIGRpc3RpbmN0
IHByb21pc2VzJyk7Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgcHJvbWlzZV9y
ZWplY3RzKHQsIGVycm9yLCBjYW5jZWxQcm9taXNlMSksCi0gICAgICBwcm9taXNlX3JlamVjdHMo
dCwgZXJyb3IsIGNhbmNlbFByb21pc2UyKQotICAgIF0pOwotCi0gIH0sICdyZWFkZXIgY2FuY2Vs
KCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IHJlamVjdGVkIHByb21pc2UgZWFjaCB0aW1lJyk7
Ci19OwotCi1zZWxmLnRlbXBsYXRlZFJTRW1wdHlSZWFkZXIgPSAobGFiZWwsIGZhY3RvcnkpID0+
IHsKLSAgdGVzdCgoKSA9PiB7fSwgJ1J1bm5pbmcgdGVtcGxhdGVkUlNFbXB0eVJlYWRlciB3aXRo
ICcgKyBsYWJlbCk7Ci0KLSAgdGVzdCgoKSA9PiB7Ci0KLSAgICBjb25zdCByZWFkZXIgPSBmYWN0
b3J5KCkucmVhZGVyOwotCi0gICAgYXNzZXJ0X3RydWUoJ2Nsb3NlZCcgaW4gcmVhZGVyLCAnaGFz
IGEgY2xvc2VkIHByb3BlcnR5Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcmVhZGVyLmNs
b3NlZC50aGVuLCAnZnVuY3Rpb24nLCAnY2xvc2VkIHByb3BlcnR5IGlzIHRoZW5hYmxlJyk7Ci0K
LSAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiByZWFkZXIuY2FuY2VsLCAnZnVuY3Rpb24nLCAnaGFz
IGEgY2FuY2VsIG1ldGhvZCcpOwotICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJlYWRlci5yZWFk
LCAnZnVuY3Rpb24nLCAnaGFzIGEgcmVhZCBtZXRob2QnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHR5
cGVvZiByZWFkZXIucmVsZWFzZUxvY2ssICdmdW5jdGlvbicsICdoYXMgYSByZWxlYXNlTG9jayBt
ZXRob2QnKTsKLQotICB9LCAnaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBhbmQg
cHJvcGVydGllcycpOwotCi0gIHRlc3QoKCkgPT4gewotCi0gICAgY29uc3Qgc3RyZWFtID0gZmFj
dG9yeSgpLnN0cmVhbTsKLQotICAgIGFzc2VydF90cnVlKHN0cmVhbS5sb2NrZWQsICdsb2NrZWQg
Z2V0dGVyIHNob3VsZCByZXR1cm4gdHJ1ZScpOwotCi0gIH0sICdsb2NrZWQgc2hvdWxkIGJlIHRy
dWUnKTsKLQotICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgICBjb25zdCByZWFkZXIgPSBmYWN0
b3J5KCkucmVhZGVyOwotCi0gICAgcmVhZGVyLnJlYWQoKS50aGVuKAotICAgICAgdC51bnJlYWNo
ZWRfZnVuYygncmVhZCgpIHNob3VsZCBub3QgZnVsZmlsbCcpLAotICAgICAgdC51bnJlYWNoZWRf
ZnVuYygncmVhZCgpIHNob3VsZCBub3QgcmVqZWN0JykKLSAgICApOwotCi0gICAgcmV0dXJuIGRl
bGF5KDUwMCk7Ci0KLSAgfSwgJ3JlYWQoKSBzaG91bGQgbmV2ZXIgc2V0dGxlJyk7Ci0KLSAgcHJv
bWlzZV90ZXN0KHQgPT4gewotCi0gICAgY29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsK
LQotICAgIHJlYWRlci5yZWFkKCkudGhlbigKLSAgICAgIHQudW5yZWFjaGVkX2Z1bmMoJ3JlYWQo
KSBzaG91bGQgbm90IGZ1bGZpbGwnKSwKLSAgICAgIHQudW5yZWFjaGVkX2Z1bmMoJ3JlYWQoKSBz
aG91bGQgbm90IHJlamVjdCcpCi0gICAgKTsKLQotICAgIHJlYWRlci5yZWFkKCkudGhlbigKLSAg
ICAgIHQudW5yZWFjaGVkX2Z1bmMoJ3JlYWQoKSBzaG91bGQgbm90IGZ1bGZpbGwnKSwKLSAgICAg
IHQudW5yZWFjaGVkX2Z1bmMoJ3JlYWQoKSBzaG91bGQgbm90IHJlamVjdCcpCi0gICAgKTsKLQot
ICAgIHJldHVybiBkZWxheSg1MDApOwotCi0gIH0sICd0d28gcmVhZCgpcyBzaG91bGQgYm90aCBu
ZXZlciBzZXR0bGUnKTsKLQotICB0ZXN0KCgpID0+IHsKLQotICAgIGNvbnN0IHJlYWRlciA9IGZh
Y3RvcnkoKS5yZWFkZXI7Ci0gICAgYXNzZXJ0X25vdF9lcXVhbHMocmVhZGVyLnJlYWQoKSwgcmVh
ZGVyLnJlYWQoKSwgJ3RoZSBwcm9taXNlcyByZXR1cm5lZCBzaG91bGQgYmUgZGlzdGluY3QnKTsK
LQotICB9LCAncmVhZCgpIHNob3VsZCByZXR1cm4gZGlzdGluY3QgcHJvbWlzZXMgZWFjaCB0aW1l
Jyk7Ci0KLSAgdGVzdCgoKSA9PiB7Ci0KLSAgICBjb25zdCBzdHJlYW0gPSBmYWN0b3J5KCkuc3Ry
ZWFtOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBzdHJlYW0uZ2V0
UmVhZGVyKCksICdzdHJlYW0uZ2V0UmVhZGVyKCkgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7
Ci0KLSAgfSwgJ2dldFJlYWRlcigpIGFnYWluIG9uIHRoZSBzdHJlYW0gc2hvdWxkIGZhaWwnKTsK
LQotICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgICBjb25zdCBzdHJlYW1BbmRSZWFkZXIgPSBm
YWN0b3J5KCk7Ci0gICAgY29uc3Qgc3RyZWFtID0gc3RyZWFtQW5kUmVhZGVyLnN0cmVhbTsKLSAg
ICBjb25zdCByZWFkZXIgPSBzdHJlYW1BbmRSZWFkZXIucmVhZGVyOwotCi0gICAgcmVhZGVyLnJl
YWQoKS50aGVuKAotICAgICAgdC51bnJlYWNoZWRfZnVuYygnZmlyc3QgcmVhZCgpIHNob3VsZCBu
b3QgZnVsZmlsbCcpLAotICAgICAgdC51bnJlYWNoZWRfZnVuYygnZmlyc3QgcmVhZCgpIHNob3Vs
ZCBub3QgcmVqZWN0JykKLSAgICApOwotCi0gICAgcmVhZGVyLnJlYWQoKS50aGVuKAotICAgICAg
dC51bnJlYWNoZWRfZnVuYygnc2Vjb25kIHJlYWQoKSBzaG91bGQgbm90IGZ1bGZpbGwnKSwKLSAg
ICAgIHQudW5yZWFjaGVkX2Z1bmMoJ3NlY29uZCByZWFkKCkgc2hvdWxkIG5vdCByZWplY3QnKQot
ICAgICk7Ci0KLSAgICByZWFkZXIuY2xvc2VkLnRoZW4oCi0gICAgICB0LnVucmVhY2hlZF9mdW5j
KCdjbG9zZWQgc2hvdWxkIG5vdCBmdWxmaWxsJyksCi0gICAgICB0LnVucmVhY2hlZF9mdW5jKCdj
bG9zZWQgc2hvdWxkIG5vdCByZWplY3QnKQotICAgICk7Ci0KLSAgICBhc3NlcnRfdGhyb3dzKG5l
dyBUeXBlRXJyb3IoKSwgKCkgPT4gcmVhZGVyLnJlbGVhc2VMb2NrKCksICdyZWxlYXNlTG9jayBz
aG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKLQotICAgIGFzc2VydF90cnVlKHN0cmVhbS5sb2Nr
ZWQsICd0aGUgc3RyZWFtIHNob3VsZCBzdGlsbCBiZSBsb2NrZWQnKTsKLQotICAgIHJldHVybiBk
ZWxheSg1MDApOwotCi0gIH0sICdyZWxlYXNpbmcgdGhlIGxvY2sgd2l0aCBwZW5kaW5nIHJlYWQg
cmVxdWVzdHMgc2hvdWxkIHRocm93IGJ1dCB0aGUgcmVhZCByZXF1ZXN0cyBzaG91bGQgc3RheSBw
ZW5kaW5nJyk7Ci0KLSAgcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gICAgY29uc3QgcmVhZGVyID0g
ZmFjdG9yeSgpLnJlYWRlcjsKLSAgICByZWFkZXIucmVsZWFzZUxvY2soKTsKLQotICAgIHJldHVy
biBQcm9taXNlLmFsbChbCi0gICAgICBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigp
LCByZWFkZXIucmVhZCgpKSwKLSAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9y
KCksIHJlYWRlci5yZWFkKCkpCi0gICAgXSk7Ci0KLSAgfSwgJ3JlbGVhc2luZyB0aGUgbG9jayBz
aG91bGQgY2F1c2UgZnVydGhlciByZWFkKCkgY2FsbHMgdG8gcmVqZWN0IHdpdGggYSBUeXBlRXJy
b3InKTsKLQotICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgICBjb25zdCByZWFkZXIgPSBmYWN0
b3J5KCkucmVhZGVyOwotCi0gICAgY29uc3QgY2xvc2VkQmVmb3JlID0gcmVhZGVyLmNsb3NlZDsK
LSAgICByZWFkZXIucmVsZWFzZUxvY2soKTsKLSAgICBjb25zdCBjbG9zZWRBZnRlciA9IHJlYWRl
ci5jbG9zZWQ7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGNsb3NlZEJlZm9yZSwgY2xvc2VkQWZ0ZXIs
ICd0aGUgY2xvc2VkIHByb21pc2Ugc2hvdWxkIG5vdCBjaGFuZ2UgaWRlbnRpdHknKTsKLQotICAg
IHJldHVybiBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLCBjbG9zZWRCZWZvcmUp
OwotCi0gIH0sICdyZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCBjYWxscyB0
byByZWplY3Qgd2l0aCBhIFR5cGVFcnJvcicpOwotCi0gIHRlc3QoKCkgPT4gewotCi0gICAgY29u
c3Qgc3RyZWFtQW5kUmVhZGVyID0gZmFjdG9yeSgpOwotICAgIGNvbnN0IHN0cmVhbSA9IHN0cmVh
bUFuZFJlYWRlci5zdHJlYW07Ci0gICAgY29uc3QgcmVhZGVyID0gc3RyZWFtQW5kUmVhZGVyLnJl
YWRlcjsKLQotICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOwotICAgIGFzc2VydF9mYWxzZShzdHJl
YW0ubG9ja2VkLCAnbG9ja2VkIGdldHRlciBzaG91bGQgcmV0dXJuIGZhbHNlJyk7Ci0KLSAgfSwg
J3JlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgbG9ja2VkIHRvIGJlY29tZSBmYWxzZScp
OwotCi0gIHByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5
KCkucmVhZGVyOwotICAgIHJlYWRlci5jYW5jZWwoKTsKLQotICAgIHJldHVybiByZWFkZXIucmVh
ZCgpLnRoZW4ociA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiB1
bmRlZmluZWQsIGRvbmU6IHRydWUgfSwgJ3JlYWQoKWluZyBmcm9tIHRoZSByZWFkZXIgc2hvdWxk
IGdpdmUgYSBkb25lIHJlc3VsdCcpOwotICAgIH0pOwotCi0gIH0sICdjYW5jZWxpbmcgdmlhIHRo
ZSByZWFkZXIgc2hvdWxkIGNhdXNlIHRoZSByZWFkZXIgdG8gYWN0IGNsb3NlZCcpOwotCi0gIHBy
b21pc2VfdGVzdCh0ID0+IHsKLQotICAgIGNvbnN0IHN0cmVhbSA9IGZhY3RvcnkoKS5zdHJlYW07
Ci0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIHN0cmVhbS5j
YW5jZWwoKSk7Ci0KLSAgfSwgJ2NhbmNlbGluZyB2aWEgdGhlIHN0cmVhbSBzaG91bGQgZmFpbCcp
OwotfTsKLQotc2VsZi50ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlciA9IChsYWJlbCwgZmFjdG9yeSkg
PT4gewotICB0ZXN0KCgpID0+IHt9LCAnUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlciB3
aXRoICcgKyBsYWJlbCk7Ci0KLSAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICAgIGNvbnN0IHJl
YWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7Ci0KLSAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVu
KHYgPT4gewotICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHModiwgeyB2YWx1ZTogdW5kZWZpbmVk
LCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgY29ycmVjdGx5Jyk7Ci0gICAg
fSk7Ci0KLSAgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5l
ZCwgZG9uZTogdHJ1ZSB9Jyk7Ci0KLSAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICAgIGNvbnN0
IHJlYWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwot
ICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKHYgPT4gewotICAgICAgICBhc3NlcnRfb2JqZWN0X2Vx
dWFscyh2LCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwgJ3JlYWQoKSBzaG91bGQg
ZnVsZmlsbCBjb3JyZWN0bHknKTsKLSAgICAgIH0pLAotICAgICAgcmVhZGVyLnJlYWQoKS50aGVu
KHYgPT4gewotICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyh2LCB7IHZhbHVlOiB1bmRlZmlu
ZWQsIGRvbmU6IHRydWUgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCBjb3JyZWN0bHknKTsKLSAg
ICAgIH0pCi0gICAgXSk7Ci0KLSAgfSwgJ3JlYWQoKSBtdWx0aXBsZSB0aW1lcyBzaG91bGQgZnVs
ZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9Jyk7Ci0KLSAgcHJvbWlz
ZV90ZXN0KCgpID0+IHsKLQotICAgIGNvbnN0IHJlYWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7Ci0K
LSAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKCgpID0+IHJlYWRlci5yZWFkKCkpLnRoZW4o
diA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyh2LCB7IHZhbHVlOiB1bmRlZmluZWQs
IGRvbmU6IHRydWUgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCBjb3JyZWN0bHknKTsKLSAgICB9
KTsKLQotICB9LCAncmVhZCgpIHNob3VsZCB3b3JrIHdoZW4gdXNlZCB3aXRoaW4gYW5vdGhlciBy
ZWFkKCkgZnVsZmlsbCBjYWxsYmFjaycpOwotCi0gIHByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAg
ICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOwotCi0gICAgcmV0dXJuIHJlYWRlci5j
bG9zZWQudGhlbih2ID0+IGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAncmVhZGVyIGNsb3Nl
ZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpKTsKLQotICB9LCAnY2xvc2VkIHNob3Vs
ZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7Ci0KLSAgcHJvbWlzZV90ZXN0KHQgPT4gewotCi0g
ICAgY29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKLQotICAgIGNvbnN0IGNsb3NlZEJl
Zm9yZSA9IHJlYWRlci5jbG9zZWQ7Ci0gICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7Ci0gICAgY29u
c3QgY2xvc2VkQWZ0ZXIgPSByZWFkZXIuY2xvc2VkOwotCi0gICAgYXNzZXJ0X25vdF9lcXVhbHMo
Y2xvc2VkQmVmb3JlLCBjbG9zZWRBZnRlciwgJ3RoZSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgY2hh
bmdlIGlkZW50aXR5Jyk7Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgY2xvc2Vk
QmVmb3JlLnRoZW4odiA9PiBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ3JlYWRlci5jbG9z
ZWQgYWNxdWlyZWQgYmVmb3JlIHJlbGVhc2Ugc2hvdWxkIGZ1bGZpbGwnKSksCi0gICAgICBwcm9t
aXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLCBjbG9zZWRBZnRlcikKLSAgICBdKTsKLQot
ICB9LCAncmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFu
ZCBjaGFuZ2UgaWRlbnRpdHknKTsKLQotICBwcm9taXNlX3Rlc3QoKCkgPT4gewotCi0gICAgY29u
c3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKLSAgICBjb25zdCBjYW5jZWxQcm9taXNlMSA9
IHJlYWRlci5jYW5jZWwoKTsKLSAgICBjb25zdCBjYW5jZWxQcm9taXNlMiA9IHJlYWRlci5jYW5j
ZWwoKTsKLSAgICBjb25zdCBjbG9zZWRSZWFkZXJQcm9taXNlID0gcmVhZGVyLmNsb3NlZDsKLQot
ICAgIGFzc2VydF9ub3RfZXF1YWxzKGNhbmNlbFByb21pc2UxLCBjYW5jZWxQcm9taXNlMiwgJ2Nh
bmNlbCgpIGNhbGxzIHNob3VsZCByZXR1cm4gZGlzdGluY3QgcHJvbWlzZXMnKTsKLSAgICBhc3Nl
cnRfbm90X2VxdWFscyhjYW5jZWxQcm9taXNlMSwgY2xvc2VkUmVhZGVyUHJvbWlzZSwgJ2NhbmNl
bCgpIHByb21pc2UgMSBzaG91bGQgYmUgZGlzdGluY3QgZnJvbSByZWFkZXIuY2xvc2VkJyk7Ci0g
ICAgYXNzZXJ0X25vdF9lcXVhbHMoY2FuY2VsUHJvbWlzZTIsIGNsb3NlZFJlYWRlclByb21pc2Us
ICdjYW5jZWwoKSBwcm9taXNlIDIgc2hvdWxkIGJlIGRpc3RpbmN0IGZyb20gcmVhZGVyLmNsb3Nl
ZCcpOwotCi0gICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgIGNhbmNlbFByb21pc2UxLnRo
ZW4odiA9PiBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ2ZpcnN0IGNhbmNlbCgpIHNob3Vs
ZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJykpLAotICAgICAgY2FuY2VsUHJvbWlzZTIudGhlbih2
ID0+IGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAnc2Vjb25kIGNhbmNlbCgpIHNob3VsZCBm
dWxmaWxsIHdpdGggdW5kZWZpbmVkJykpCi0gICAgXSk7Ci0KLSAgfSwgJ2NhbmNlbCgpIHNob3Vs
ZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUnKTsKLX07Ci0K
LXNlbGYudGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyID0gKGxhYmVsLCBmYWN0b3J5LCBlcnJvcikg
PT4gewotICB0ZXN0KCgpID0+IHt9LCAnUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIg
d2l0aCAnICsgbGFiZWwpOwotCi0gIHByb21pc2VfdGVzdCh0ID0+IHsKLQotICAgIGNvbnN0IHJl
YWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7Ci0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBl
cnJvciwgcmVhZGVyLmNsb3NlZCk7Ci0KLSAgfSwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGgg
dGhlIGVycm9yJyk7Ci0KLSAgcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gICAgY29uc3QgcmVhZGVy
ID0gZmFjdG9yeSgpLnJlYWRlcjsKLSAgICBjb25zdCBjbG9zZWRCZWZvcmUgPSByZWFkZXIuY2xv
c2VkOwotCi0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvciwgY2xvc2VkQmVmb3Jl
KS50aGVuKCgpID0+IHsKLSAgICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOwotCi0gICAgICBjb25z
dCBjbG9zZWRBZnRlciA9IHJlYWRlci5jbG9zZWQ7Ci0gICAgICBhc3NlcnRfbm90X2VxdWFscyhj
bG9zZWRCZWZvcmUsIGNsb3NlZEFmdGVyLCAndGhlIGNsb3NlZCBwcm9taXNlIHNob3VsZCBjaGFu
Z2UgaWRlbnRpdHknKTsKLQotICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlw
ZUVycm9yKCksIGNsb3NlZEFmdGVyKTsKLSAgICB9KTsKLQotICB9LCAncmVsZWFzaW5nIHRoZSBs
b2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHknKTsK
LQotICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0KLSAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCku
cmVhZGVyOwotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgZXJyb3IsIHJlYWRlci5yZWFk
KCkpOwotCi0gIH0sICdyZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvcicpOwotfTsK
LQotc2VsZi50ZW1wbGF0ZWRSU1R3b0NodW5rc09wZW5SZWFkZXIgPSAobGFiZWwsIGZhY3Rvcnks
IGNodW5rcykgPT4gewotICB0ZXN0KCgpID0+IHt9LCAnUnVubmluZyB0ZW1wbGF0ZWRSU1R3b0No
dW5rc09wZW5SZWFkZXIgd2l0aCAnICsgbGFiZWwpOwotCi0gIHByb21pc2VfdGVzdCgoKSA9PiB7
Ci0KLSAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOwotCi0gICAgcmV0dXJuIFBy
b21pc2UuYWxsKFsKLSAgICAgIHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKLSAgICAgICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogY2h1bmtzWzBdLCBkb25lOiBmYWxzZSB9LCAn
Zmlyc3QgcmVzdWx0IHNob3VsZCBiZSBjb3JyZWN0Jyk7Ci0gICAgICB9KSwKLSAgICAgIHJlYWRl
ci5yZWFkKCkudGhlbihyID0+IHsKLSAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2
YWx1ZTogY2h1bmtzWzFdLCBkb25lOiBmYWxzZSB9LCAnc2Vjb25kIHJlc3VsdCBzaG91bGQgYmUg
Y29ycmVjdCcpOwotICAgICAgfSkKLSAgICBdKTsKLQotICB9LCAnY2FsbGluZyByZWFkKCkgdHdp
Y2Ugd2l0aG91dCB3YWl0aW5nIHdpbGwgZXZlbnR1YWxseSBnaXZlIGJvdGggY2h1bmtzIChzZXF1
ZW50aWFsKScpOwotCi0gIHByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgICBjb25zdCByZWFkZXIg
PSBmYWN0b3J5KCkucmVhZGVyOwotCi0gICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihyID0+
IHsKLSAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IGNodW5rc1swXSwgZG9u
ZTogZmFsc2UgfSwgJ2ZpcnN0IHJlc3VsdCBzaG91bGQgYmUgY29ycmVjdCcpOwotCi0gICAgICBy
ZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHIyID0+IHsKLSAgICAgICAgYXNzZXJ0X29iamVjdF9l
cXVhbHMocjIsIHsgdmFsdWU6IGNodW5rc1sxXSwgZG9uZTogZmFsc2UgfSwgJ3NlY29uZCByZXN1
bHQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLSAgICAgIH0pOwotICAgIH0pOwotCi0gIH0sICdjYWxs
aW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90
aCBjaHVua3MgKG5lc3RlZCknKTsKLQotICB0ZXN0KCgpID0+IHsKLQotICAgIGNvbnN0IHJlYWRl
ciA9IGZhY3RvcnkoKS5yZWFkZXI7Ci0gICAgYXNzZXJ0X25vdF9lcXVhbHMocmVhZGVyLnJlYWQo
KSwgcmVhZGVyLnJlYWQoKSwgJ3RoZSBwcm9taXNlcyByZXR1cm5lZCBzaG91bGQgYmUgZGlzdGlu
Y3QnKTsKLQotICB9LCAncmVhZCgpIHNob3VsZCByZXR1cm4gZGlzdGluY3QgcHJvbWlzZXMgZWFj
aCB0aW1lJyk7Ci0KLSAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICAgIGNvbnN0IHJlYWRlciA9
IGZhY3RvcnkoKS5yZWFkZXI7Ci0KLSAgICBjb25zdCBwcm9taXNlMSA9IHJlYWRlci5jbG9zZWQu
dGhlbih2ID0+IHsKLSAgICAgIGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAncmVhZGVyIGNs
b3NlZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCcpOwotICAgIH0pOwotCi0gICAgY29u
c3QgcHJvbWlzZTIgPSByZWFkZXIucmVhZCgpLnRoZW4ociA9PiB7Ci0gICAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyLCB7IHZhbHVlOiBjaHVua3NbMF0sIGRvbmU6IGZhbHNlIH0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAncHJvbWlzZSByZXR1cm5lZCBiZWZvcmUgY2FuY2VsbGF0aW9u
IHNob3VsZCBmdWxmaWxsIHdpdGggYSBjaHVuaycpOwotICAgIH0pOwotCi0gICAgcmVhZGVyLmNh
bmNlbCgpOwotCi0gICAgY29uc3QgcHJvbWlzZTMgPSByZWFkZXIucmVhZCgpLnRoZW4ociA9PiB7
Ci0gICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6
IHRydWUgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9taXNlIHJldHVybmVkIGFm
dGVyIGNhbmNlbGxhdGlvbiBzaG91bGQgZnVsZmlsbCB3aXRoIGFuIGVuZC1vZi1zdHJlYW0gc2ln
bmFsJyk7Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gUHJvbWlzZS5hbGwoW3Byb21pc2UxLCBwcm9t
aXNlMiwgcHJvbWlzZTNdKTsKLQotICB9LCAnY2FuY2VsKCkgYWZ0ZXIgYSByZWFkKCkgc2hvdWxk
IHN0aWxsIGdpdmUgdGhhdCBzaW5nbGUgcmVhZCByZXN1bHQnKTsKLX07Ci0KLXNlbGYudGVtcGxh
dGVkUlNUd29DaHVua3NDbG9zZWRSZWFkZXIgPSBmdW5jdGlvbiAobGFiZWwsIGZhY3RvcnksIGNo
dW5rcykgewotICB0ZXN0KCgpID0+IHt9LCAnUnVubmluZyB0ZW1wbGF0ZWRSU1R3b0NodW5rc0Ns
b3NlZFJlYWRlciB3aXRoICcgKyBsYWJlbCk7Ci0KLSAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLQot
ICAgIGNvbnN0IHJlYWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7Ci0KLSAgICByZXR1cm4gUHJvbWlz
ZS5hbGwoWwotICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4gewotICAgICAgICBhc3NlcnRf
b2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiBjaHVua3NbMF0sIGRvbmU6IGZhbHNlIH0sICdmaXJz
dCByZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLSAgICAgIH0pLAotICAgICAgcmVhZGVyLnJl
YWQoKS50aGVuKHIgPT4gewotICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVl
OiBjaHVua3NbMV0sIGRvbmU6IGZhbHNlIH0sICdzZWNvbmQgcmVzdWx0IHNob3VsZCBiZSBjb3Jy
ZWN0Jyk7Ci0gICAgICB9KSwKLSAgICAgIHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKLSAgICAg
ICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVl
IH0sICd0aGlyZCByZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLSAgICAgIH0pCi0gICAgXSk7
Ci0KLSAgfSwgJ3RoaXJkIHJlYWQoKSwgd2l0aG91dCB3YWl0aW5nLCBzaG91bGQgZ2l2ZSB7IHZh
bHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAoc2VxdWVudGlhbCknKTsKLQotICBwcm9taXNl
X3Rlc3QoKCkgPT4gewotCi0gICAgY29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKLQot
ICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4ociA9PiB7Ci0gICAgICBhc3NlcnRfb2JqZWN0
X2VxdWFscyhyLCB7IHZhbHVlOiBjaHVua3NbMF0sIGRvbmU6IGZhbHNlIH0sICdmaXJzdCByZXN1
bHQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKLQotICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhl
bihyMiA9PiB7Ci0gICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIyLCB7IHZhbHVlOiBjaHVu
a3NbMV0sIGRvbmU6IGZhbHNlIH0sICdzZWNvbmQgcmVzdWx0IHNob3VsZCBiZSBjb3JyZWN0Jyk7
Ci0KLSAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihyMyA9PiB7Ci0gICAgICAgICAg
YXNzZXJ0X29iamVjdF9lcXVhbHMocjMsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9
LCAndGhpcmQgcmVzdWx0IHNob3VsZCBiZSBjb3JyZWN0Jyk7Ci0gICAgICAgIH0pOwotICAgICAg
fSk7Ci0gICAgfSk7Ci0KLSAgfSwgJ3RoaXJkIHJlYWQoKSwgd2l0aG91dCB3YWl0aW5nLCBzaG91
bGQgZ2l2ZSB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAobmVzdGVkKScpOwotCi0g
IHByb21pc2VfdGVzdCgoKSA9PiB7Ci0KLSAgICBjb25zdCBzdHJlYW1BbmRSZWFkZXIgPSBmYWN0
b3J5KCk7Ci0gICAgY29uc3Qgc3RyZWFtID0gc3RyZWFtQW5kUmVhZGVyLnN0cmVhbTsKLSAgICBj
b25zdCByZWFkZXIgPSBzdHJlYW1BbmRSZWFkZXIucmVhZGVyOwotCi0gICAgYXNzZXJ0X3RydWUo
c3RyZWFtLmxvY2tlZCwgJ3N0cmVhbSBzaG91bGQgc3RhcnQgbG9ja2VkJyk7Ci0KLSAgICBjb25z
dCBwcm9taXNlID0gcmVhZGVyLmNsb3NlZC50aGVuKHYgPT4gewotICAgICAgYXNzZXJ0X2VxdWFs
cyh2LCB1bmRlZmluZWQsICdyZWFkZXIgY2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZp
bmVkJyk7Ci0gICAgICBhc3NlcnRfdHJ1ZShzdHJlYW0ubG9ja2VkLCAnc3RyZWFtIHNob3VsZCBy
ZW1haW4gbG9ja2VkJyk7Ci0gICAgfSk7Ci0KLSAgICByZWFkZXIucmVhZCgpOwotICAgIHJlYWRl
ci5yZWFkKCk7Ci0KLSAgICByZXR1cm4gcHJvbWlzZTsKLQotICB9LCAnZHJhaW5pbmcgdGhlIHN0
cmVhbSB2aWEgcmVhZCgpIHNob3VsZCBjYXVzZSB0aGUgcmVhZGVyIGNsb3NlZCBwcm9taXNlIHRv
IGZ1bGZpbGwsIGJ1dCBsb2NrZWQgc3RheXMgdHJ1ZScpOwotCi0gIHByb21pc2VfdGVzdCgoKSA9
PiB7Ci0KLSAgICBjb25zdCBzdHJlYW1BbmRSZWFkZXIgPSBmYWN0b3J5KCk7Ci0gICAgY29uc3Qg
c3RyZWFtID0gc3RyZWFtQW5kUmVhZGVyLnN0cmVhbTsKLSAgICBjb25zdCByZWFkZXIgPSBzdHJl
YW1BbmRSZWFkZXIucmVhZGVyOwotCi0gICAgY29uc3QgcHJvbWlzZSA9IHJlYWRlci5jbG9zZWQu
dGhlbigoKSA9PiB7Ci0gICAgICBhc3NlcnRfdHJ1ZShzdHJlYW0ubG9ja2VkLCAndGhlIHN0cmVh
bSBzaG91bGQgc3RhcnQgbG9ja2VkJyk7Ci0gICAgICByZWFkZXIucmVsZWFzZUxvY2soKTsgLy8g
UmVsZWFzaW5nIHRoZSBsb2NrIGFmdGVyIHJlYWRlciBjbG9zZWQgc2hvdWxkIG5vdCB0aHJvdy4K
LSAgICAgIGFzc2VydF9mYWxzZShzdHJlYW0ubG9ja2VkLCAndGhlIHN0cmVhbSBzaG91bGQgZW5k
IHVubG9ja2VkJyk7Ci0gICAgfSk7Ci0KLSAgICByZWFkZXIucmVhZCgpOwotICAgIHJlYWRlci5y
ZWFkKCk7Ci0KLSAgICByZXR1cm4gcHJvbWlzZTsKLQotICB9LCAncmVsZWFzaW5nIHRoZSBsb2Nr
IGFmdGVyIHRoZSBzdHJlYW0gaXMgY2xvc2VkIHNob3VsZCBjYXVzZSBsb2NrZWQgdG8gYmVjb21l
IGZhbHNlJyk7Ci0KLSAgcHJvbWlzZV90ZXN0KHQgPT4gewotCi0gICAgY29uc3QgcmVhZGVyID0g
ZmFjdG9yeSgpLnJlYWRlcjsKLQotICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOwotCi0gICAgcmV0
dXJuIFByb21pc2UuYWxsKFsKLSAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9y
KCksIHJlYWRlci5yZWFkKCkpLAotICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJy
b3IoKSwgcmVhZGVyLnJlYWQoKSksCi0gICAgICBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVF
cnJvcigpLCByZWFkZXIucmVhZCgpKQotICAgIF0pOwotCi0gIH0sICdyZWxlYXNpbmcgdGhlIGxv
Y2sgc2hvdWxkIGNhdXNlIGZ1cnRoZXIgcmVhZCgpIGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlw
ZUVycm9yJyk7Ci0KLSAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLQotICAgIGNvbnN0IHN0cmVhbUFu
ZFJlYWRlciA9IGZhY3RvcnkoKTsKLSAgICBjb25zdCBzdHJlYW0gPSBzdHJlYW1BbmRSZWFkZXIu
c3RyZWFtOwotICAgIGNvbnN0IHJlYWRlciA9IHN0cmVhbUFuZFJlYWRlci5yZWFkZXI7Ci0KLSAg
ICBjb25zdCByZWFkZXJDbG9zZWQgPSByZWFkZXIuY2xvc2VkOwotCi0gICAgYXNzZXJ0X2VxdWFs
cyhyZWFkZXIuY2xvc2VkLCByZWFkZXJDbG9zZWQsICdhY2Nlc3NpbmcgcmVhZGVyLmNsb3NlZCB0
d2ljZSBpbiBzdWNjZXNzaW9uIGdpdmVzIHRoZSBzYW1lIHZhbHVlJyk7Ci0KLSAgICBjb25zdCBw
cm9taXNlID0gcmVhZGVyLnJlYWQoKS50aGVuKCgpID0+IHsKLSAgICAgIGFzc2VydF9lcXVhbHMo
cmVhZGVyLmNsb3NlZCwgcmVhZGVyQ2xvc2VkLCAncmVhZGVyLmNsb3NlZCBpcyB0aGUgc2FtZSBh
ZnRlciByZWFkKCkgZnVsZmlsbHMnKTsKLQotICAgICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7Ci0K
LSAgICAgIGFzc2VydF9lcXVhbHMocmVhZGVyLmNsb3NlZCwgcmVhZGVyQ2xvc2VkLCAncmVhZGVy
LmNsb3NlZCBpcyB0aGUgc2FtZSBhZnRlciByZWxlYXNpbmcgdGhlIGxvY2snKTsKLQotICAgICAg
Y29uc3QgbmV3UmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOwotICAgICAgcmV0dXJuIG5ld1Jl
YWRlci5yZWFkKCk7Ci0gICAgfSk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKHJlYWRlci5jbG9zZWQs
IHJlYWRlckNsb3NlZCwgJ3JlYWRlci5jbG9zZWQgaXMgdGhlIHNhbWUgYWZ0ZXIgY2FsbGluZyBy
ZWFkKCknKTsKLQotICAgIHJldHVybiBwcm9taXNlOwotCi0gIH0sICdyZWFkZXJcJ3MgY2xvc2Vk
IHByb3BlcnR5IGFsd2F5cyByZXR1cm5zIHRoZSBzYW1lIHByb21pc2UnKTsKLX07CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMt
YXBpL3Jlc291cmNlcy9ycy11dGlscy5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVzb3VyY2VzL3JzLXV0aWxzLmpzCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjMyMjJlMjNjYWI3YTBhNmQ2MTc3MTE2Yzk5ZWQ5MGRm
OTU3OTc3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVz
b3VyY2VzL3JzLXV0aWxzLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTg1ICswLDAgQEAKLSd1c2Ug
c3RyaWN0JzsKLShmdW5jdGlvbiAoKSB7Ci0KLSAgY2xhc3MgUmFuZG9tUHVzaFNvdXJjZSB7Ci0g
ICAgY29uc3RydWN0b3IodG9QdXNoKSB7Ci0gICAgICB0aGlzLnB1c2hlZCA9IDA7Ci0gICAgICB0
aGlzLnRvUHVzaCA9IHRvUHVzaDsKLSAgICAgIHRoaXMuc3RhcnRlZCA9IGZhbHNlOwotICAgICAg
dGhpcy5wYXVzZWQgPSBmYWxzZTsKLSAgICAgIHRoaXMuY2xvc2VkID0gZmFsc2U7Ci0KLSAgICAg
IHRoaXMuX2ludGVydmFsSGFuZGxlID0gbnVsbDsKLSAgICB9Ci0KLSAgICByZWFkU3RhcnQoKSB7
Ci0gICAgICBpZiAodGhpcy5jbG9zZWQpIHsKLSAgICAgICAgcmV0dXJuOwotICAgICAgfQotCi0g
ICAgICBpZiAoIXRoaXMuc3RhcnRlZCkgewotICAgICAgICB0aGlzLl9pbnRlcnZhbEhhbmRsZSA9
IHNldEludGVydmFsKHdyaXRlQ2h1bmssIDIpOwotICAgICAgICB0aGlzLnN0YXJ0ZWQgPSB0cnVl
OwotICAgICAgfQotCi0gICAgICBpZiAodGhpcy5wYXVzZWQpIHsKLSAgICAgICAgdGhpcy5faW50
ZXJ2YWxIYW5kbGUgPSBzZXRJbnRlcnZhbCh3cml0ZUNodW5rLCAyKTsKLSAgICAgICAgdGhpcy5w
YXVzZWQgPSBmYWxzZTsKLSAgICAgIH0KLQotICAgICAgY29uc3Qgc291cmNlID0gdGhpczsKLSAg
ICAgIGZ1bmN0aW9uIHdyaXRlQ2h1bmsoKSB7Ci0gICAgICAgIGlmIChzb3VyY2UucGF1c2VkKSB7
Ci0gICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgc291cmNlLnB1c2hlZCsr
OwotCi0gICAgICAgIGlmIChzb3VyY2UudG9QdXNoID4gMCAmJiBzb3VyY2UucHVzaGVkID4gc291
cmNlLnRvUHVzaCkgewotICAgICAgICAgIGlmIChzb3VyY2UuX2ludGVydmFsSGFuZGxlKSB7Ci0g
ICAgICAgICAgICBjbGVhckludGVydmFsKHNvdXJjZS5faW50ZXJ2YWxIYW5kbGUpOwotICAgICAg
ICAgICAgc291cmNlLl9pbnRlcnZhbEhhbmRsZSA9IHVuZGVmaW5lZDsKLSAgICAgICAgICB9Ci0g
ICAgICAgICAgc291cmNlLmNsb3NlZCA9IHRydWU7Ci0gICAgICAgICAgc291cmNlLm9uZW5kKCk7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgc291cmNlLm9uZGF0YShyYW5kb21DaHVuaygx
MjgpKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIHJlYWRTdG9wKCkgewotICAg
ICAgaWYgKHRoaXMucGF1c2VkKSB7Ci0gICAgICAgIHJldHVybjsKLSAgICAgIH0KLQotICAgICAg
aWYgKHRoaXMuc3RhcnRlZCkgewotICAgICAgICB0aGlzLnBhdXNlZCA9IHRydWU7Ci0gICAgICAg
IGNsZWFySW50ZXJ2YWwodGhpcy5faW50ZXJ2YWxIYW5kbGUpOwotICAgICAgICB0aGlzLl9pbnRl
cnZhbEhhbmRsZSA9IHVuZGVmaW5lZDsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHRocm93IG5l
dyBFcnJvcignQ2FuXCd0IHBhdXNlIHJlYWRpbmcgYW4gdW5zdGFydGVkIHNvdXJjZS4nKTsKLSAg
ICAgIH0KLSAgICB9Ci0gIH0KLQotICBmdW5jdGlvbiByYW5kb21DaHVuayhzaXplKSB7Ci0gICAg
bGV0IGNodW5rID0gJyc7Ci0KLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7ICsraSkgewot
ICAgICAgLy8gQWRkIGEgcmFuZG9tIGNoYXJhY3RlciBmcm9tIHRoZSBiYXNpYyBwcmludGFibGUg
QVNDSUkgc2V0LgotICAgICAgY2h1bmsgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShNYXRoLnJvdW5k
KE1hdGgucmFuZG9tKCkgKiA4NCkgKyAzMik7Ci0gICAgfQotCi0gICAgcmV0dXJuIGNodW5rOwot
ICB9Ci0KLSAgZnVuY3Rpb24gcmVhZGFibGVTdHJlYW1Ub0FycmF5KHJlYWRhYmxlLCByZWFkZXIp
IHsKLSAgICBpZiAocmVhZGVyID09PSB1bmRlZmluZWQpIHsKLSAgICAgIHJlYWRlciA9IHJlYWRh
YmxlLmdldFJlYWRlcigpOwotICAgIH0KLQotICAgIGNvbnN0IGNodW5rcyA9IFtdOwotCi0gICAg
cmV0dXJuIHB1bXAoKTsKLQotICAgIGZ1bmN0aW9uIHB1bXAoKSB7Ci0gICAgICByZXR1cm4gcmVh
ZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7Ci0gICAgICAgIGlmIChyZXN1bHQuZG9uZSkgewot
ICAgICAgICAgIHJldHVybiBjaHVua3M7Ci0gICAgICAgIH0KLQotICAgICAgICBjaHVua3MucHVz
aChyZXN1bHQudmFsdWUpOwotICAgICAgICByZXR1cm4gcHVtcCgpOwotICAgICAgfSk7Ci0gICAg
fQotICB9Ci0KLSAgY2xhc3MgU2VxdWVudGlhbFB1bGxTb3VyY2UgewotICAgIGNvbnN0cnVjdG9y
KGxpbWl0LCBvcHRpb25zKSB7Ci0gICAgICBjb25zdCBhc3luYyA9IG9wdGlvbnMgJiYgb3B0aW9u
cy5hc3luYzsKLQotICAgICAgdGhpcy5jdXJyZW50ID0gMDsKLSAgICAgIHRoaXMubGltaXQgPSBs
aW1pdDsKLSAgICAgIHRoaXMub3BlbmVkID0gZmFsc2U7Ci0gICAgICB0aGlzLmNsb3NlZCA9IGZh
bHNlOwotCi0gICAgICB0aGlzLl9leGVjID0gZiA9PiBmKCk7Ci0gICAgICBpZiAoYXN5bmMpIHsK
LSAgICAgICAgdGhpcy5fZXhlYyA9IGYgPT4gc2V0VGltZW91dChmLCAwKTsKLSAgICAgIH0KLSAg
ICB9Ci0KLSAgICBvcGVuKGNiKSB7Ci0gICAgICB0aGlzLl9leGVjKCgpID0+IHsKLSAgICAgICAg
dGhpcy5vcGVuZWQgPSB0cnVlOwotICAgICAgICBjYigpOwotICAgICAgfSk7Ci0gICAgfQotCi0g
ICAgcmVhZChjYikgewotICAgICAgdGhpcy5fZXhlYygoKSA9PiB7Ci0gICAgICAgIGlmICgrK3Ro
aXMuY3VycmVudCA8PSB0aGlzLmxpbWl0KSB7Ci0gICAgICAgICAgY2IobnVsbCwgZmFsc2UsIHRo
aXMuY3VycmVudCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgY2IobnVsbCwgdHJ1ZSwg
bnVsbCk7Ci0gICAgICAgIH0KLSAgICAgIH0pOwotICAgIH0KLQotICAgIGNsb3NlKGNiKSB7Ci0g
ICAgICB0aGlzLl9leGVjKCgpID0+IHsKLSAgICAgICAgdGhpcy5jbG9zZWQgPSB0cnVlOwotICAg
ICAgICBjYigpOwotICAgICAgfSk7Ci0gICAgfQotICB9Ci0KLSAgZnVuY3Rpb24gc2VxdWVudGlh
bFJlYWRhYmxlU3RyZWFtKGxpbWl0LCBvcHRpb25zKSB7Ci0gICAgY29uc3Qgc2VxdWVudGlhbFNv
dXJjZSA9IG5ldyBTZXF1ZW50aWFsUHVsbFNvdXJjZShsaW1pdCwgb3B0aW9ucyk7Ci0KLSAgICBj
b25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgc3RhcnQoKSB7Ci0gICAg
ICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Ci0gICAgICAgICAg
c2VxdWVudGlhbFNvdXJjZS5vcGVuKGVyciA9PiB7Ci0gICAgICAgICAgICBpZiAoZXJyKSB7Ci0g
ICAgICAgICAgICAgIHJlamVjdChlcnIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmVz
b2x2ZSgpOwotICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICAgIH0sCi0KLSAgICAgIHB1
bGwoYykgewotICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4g
ewotICAgICAgICAgIHNlcXVlbnRpYWxTb3VyY2UucmVhZCgoZXJyLCBkb25lLCBjaHVuaykgPT4g
ewotICAgICAgICAgICAgaWYgKGVycikgewotICAgICAgICAgICAgICByZWplY3QoZXJyKTsKLSAg
ICAgICAgICAgIH0gZWxzZSBpZiAoZG9uZSkgewotICAgICAgICAgICAgICBzZXF1ZW50aWFsU291
cmNlLmNsb3NlKGVycjIgPT4gewotICAgICAgICAgICAgICAgIGlmIChlcnIyKSB7Ci0gICAgICAg
ICAgICAgICAgICByZWplY3QoZXJyMik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGMuY2xvc2UoKTsKLSAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAg
IH0pOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgYy5lbnF1ZXVlKGNodW5r
KTsKLSAgICAgICAgICAgICAgcmVzb2x2ZSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0p
OwotICAgICAgICB9KTsKLSAgICAgIH0KLSAgICB9KTsKLQotICAgIHN0cmVhbS5zb3VyY2UgPSBz
ZXF1ZW50aWFsU291cmNlOwotCi0gICAgcmV0dXJuIHN0cmVhbTsKLSAgfQotCi0KLSAgc2VsZi5S
YW5kb21QdXNoU291cmNlID0gUmFuZG9tUHVzaFNvdXJjZTsKLSAgc2VsZi5yZWFkYWJsZVN0cmVh
bVRvQXJyYXkgPSByZWFkYWJsZVN0cmVhbVRvQXJyYXk7Ci0gIHNlbGYuc2VxdWVudGlhbFJlYWRh
YmxlU3RyZWFtID0gc2VxdWVudGlhbFJlYWRhYmxlU3RyZWFtOwotCi19KCkpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zLWFw
aS9yZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6
ZXIuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2ZWQ0YTdhYWI1NDFlOGU1Y2Zl
ZWM0MDQyMDMyODkyNDMwMTQ3YjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zLWFwaS9yZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcworKysgL2Rldi9udWxsCkBA
IC0xLDE0ICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotZnVuY3Rpb24gd29ya2VyX3Rlc3QoZmls
ZSkgewotICBmZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgV29ya2VyKGZpbGUpKTsKLSAgaWYg
KHR5cGVvZiBTaGFyZWRXb3JrZXIgPT09ICdmdW5jdGlvbicpIHsKLSAgICBmZXRjaF90ZXN0c19m
cm9tX3dvcmtlcihuZXcgU2hhcmVkV29ya2VyKGZpbGUpKTsKLSAgfSBlbHNlIHsKLSAgICB0ZXN0
KCgpID0+IHsKLSAgICAgIGFzc2VydF91bnJlYWNoZWQoJ1NoYXJlZFdvcmtlciBpcyB1bmF2YWls
YWJsZScpOwotICAgIH0sICdMb2FkICcgKyBmaWxlICsgJyB3aXRoIFNoYXJlZFdvcmtlcicpOwot
ICB9Ci0gIHNlcnZpY2Vfd29ya2VyX3Rlc3QoZmlsZSk7Ci19Ci0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVzb3Vy
Y2VzL3Rlc3QtdXRpbHMuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMtYXBpL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjYzQ3ODk4YTYwOGU5M2Q1ZTU2NjRkMDE3NjA3YjRmNDcwOWY1Mzcw
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy1hcGkvcmVzb3VyY2Vz
L3Rlc3QtdXRpbHMuanMKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0ndXNlIHN0cmlj
dCc7Ci0KLXNlbGYuZ2V0dGVyUmVqZWN0cyA9ICh0LCBvYmosIGdldHRlck5hbWUsIHRhcmdldCkg
PT4gewotICBjb25zdCBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9i
aiwgZ2V0dGVyTmFtZSkuZ2V0OwotCi0gIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5
cGVFcnJvcigpLCBnZXR0ZXIuY2FsbCh0YXJnZXQpKTsKLX07Ci0KLXNlbGYubWV0aG9kUmVqZWN0
cyA9ICh0LCBvYmosIG1ldGhvZE5hbWUsIHRhcmdldCkgPT4gewotICBjb25zdCBtZXRob2QgPSBv
YmpbbWV0aG9kTmFtZV07Ci0KLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVy
cm9yKCksIG1ldGhvZC5jYWxsKHRhcmdldCkpOwotfTsKLQotc2VsZi5nZXR0ZXJUaHJvd3MgPSAo
b2JqLCBnZXR0ZXJOYW1lLCB0YXJnZXQpID0+IHsKLSAgY29uc3QgZ2V0dGVyID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGdldHRlck5hbWUpLmdldDsKLQotICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gZ2V0dGVyLmNhbGwodGFyZ2V0KSwgZ2V0dGVy
TmFtZSArICcgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7Ci19OwotCi1zZWxmLm1ldGhvZFRo
cm93cyA9IChvYmosIG1ldGhvZE5hbWUsIHRhcmdldCwgYXJncykgPT4gewotICBjb25zdCBtZXRo
b2QgPSBvYmpbbWV0aG9kTmFtZV07Ci0KLSAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCks
ICgpID0+IG1ldGhvZC5hcHBseSh0YXJnZXQsIGFyZ3MpLCBtZXRob2ROYW1lICsgJyBzaG91bGQg
dGhyb3cgYSBUeXBlRXJyb3InKTsKLX07Ci0KLXNlbGYuZ2FyYmFnZUNvbGxlY3QgPSAoKSA9PiB7
Ci0gIGlmIChzZWxmLmdjKSB7Ci0gICAgLy8gVXNlIC0tZXhwb3NlX2djIGZvciBWOCAoYW5kIE5v
ZGUuanMpCi0gICAgLy8gRXhwb3NlZCBpbiBTcGlkZXJNb25rZXkgc2hlbGwgYXMgd2VsbAotICAg
IHNlbGYuZ2MoKTsKLSAgfSBlbHNlIGlmIChzZWxmLkdDQ29udHJvbGxlcikgewotICAgIC8vIFBy
ZXNlbnQgaW4gc29tZSBXZWJLaXQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzCi0gICAgR0NDb250
cm9sbGVyLmNvbGxlY3QoKTsKLSAgfSBlbHNlIHsKLSAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1j
b25zb2xlICovCi0gICAgY29uc29sZS53YXJuKCdUZXN0cyBhcmUgcnVubmluZyB3aXRob3V0IHRo
ZSBhYmlsaXR5IHRvIGRvIG1hbnVhbCBnYXJiYWdlIGNvbGxlY3Rpb24uIFRoZXkgd2lsbCBzdGls
bCB3b3JrLCBidXQgJyArCi0gICAgICAnY292ZXJhZ2Ugd2lsbCBiZSBzdWJvcHRpbWFsLicpOwot
ICAgIC8qIGVzbGludC1lbmFibGUgbm8tY29uc29sZSAqLwotICB9Ci19OwotCi1zZWxmLmRlbGF5
ID0gbXMgPT4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzdGVwX3RpbWVvdXQocmVzb2x2ZSwgbXMp
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9SRUFETUUudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL1JFQURNRS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2ZjOTFmNTk0NmEzOGQx
NDJiMDUxYzgxMWQ2MTU4OWY2ZTAwZTZlYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9SRUFETUUudHh0CkBAIC0w
LDAgKzEsNiBAQAorVGhpcyBkaXJlY3RvcnkgaXMgaW1wb3J0ZWQgZnJvbSB0aGUgdGhlIFN0cmVh
bXMgQVBJIHJlcG9zaXRvcnkuCisKK1RoZXJlIGlzIGEgcGxhbiB0byBtb3ZlIHRoZXNlIHRlc3Rz
IHRvIHdlYi1wbGF0Zm9ybS10ZXN0cyByZXBvc2l0b3J5IHNvIGZyb20gdGhhdCBtb21lbnQgb24g
dGhpcyBpbXBvcnRhdGlvbiB3aWxsIGJlCithdXRvbWF0aWMuCisKK0N1cnJlbnQgdmVyc2lvbjog
aHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9zdHJlYW1zL3RyZWUvN2YxOTE3NTQxNWQ5YjU3YWYw
NGNiOGMyY2QzNTVjYTM4MTAxZjBhYS9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vd2ViLXBsYXRm
b3JtLXRlc3RzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEy
ZDk2NDE1MDI5OTRlMzJkNDJlYmM5YmUyZDdiMzRmMTQ1ZjVjYjQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0
ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAor
CitQQVNTIENhbiBjb25zdHJ1Y3QgYSBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IHdpdGggYSB2
YWxpZCBoaWdoIHdhdGVyIG1hcmsgCitQQVNTIENhbiBjb25zdHJ1Y3QgYSBCeXRlTGVuZ3RoUXVl
dWluZ1N0cmF0ZWd5IHdpdGggYW55IHZhbHVlIGFzIGl0cyBoaWdoIHdhdGVyIG1hcmsgCitQQVNT
IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kgY29uc3RydWN0b3IgYmVoYXZlcyBhcyBleHBlY3Rl
ZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRzIAorUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5
IHNpemUgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRzIAorUEFTUyBC
eXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplIHNob3VsZCB3b3JrIGdlbmVy
aWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzIAorUEFTUyBCeXRlTGVuZ3RoUXVl
dWluZ1N0cmF0ZWd5IGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IHByb3BlcnRpZXMgCitQQVNT
IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kncyBoaWdoV2F0ZXJNYXJrIHByb3BlcnR5IGNhbiBi
ZSBzZXQgdG8gYW55dGhpbmcgCitGQUlMIExvYWQgYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVn
eS5qcyB3aXRoIFNoYXJlZFdvcmtlciBhc3NlcnRfdW5yZWFjaGVkOiBTaGFyZWRXb3JrZXIgaXMg
dW5hdmFpbGFibGUgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCitGQUlMIFVudGl0bGVkIHVuZGVm
aW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICduYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5nZXRSZWdpc3RyYXRpb24nKQorUEFTUyBDYW4gY29uc3RydWN0IGEgQnl0ZUxlbmd0aFF1ZXVp
bmdTdHJhdGVneSB3aXRoIGEgdmFsaWQgaGlnaCB3YXRlciBtYXJrIAorUEFTUyBDYW4gY29uc3Ry
dWN0IGEgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSB3aXRoIGFueSB2YWx1ZSBhcyBpdHMgaGln
aCB3YXRlciBtYXJrIAorUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5IGNvbnN0cnVjdG9y
IGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cyAKK1BBU1MgQnl0ZUxl
bmd0aFF1ZXVpbmdTdHJhdGVneSBzaXplIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdl
IGFyZ3VtZW50cyAKK1BBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6
ZSBzaG91bGQgd29yayBnZW5lcmljYWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cyAK
K1BBU1MgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVj
dCBwcm9wZXJ0aWVzIAorUEFTUyBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5J3MgaGlnaFdhdGVy
TWFyayBwcm9wZXJ0eSBjYW4gYmUgc2V0IHRvIGFueXRoaW5nIAorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5n
dGgtcXVldWluZy1zdHJhdGVneS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xM2YxNWFjYjlmZmFiNjhhZTI4NWY1NzgyNjcxNzdiZmI3ZTVkYjIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zdHJlYW1zL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kuaHRtbApAQCAtMCwwICsxLDEy
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvc2Vy
dmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyI+PC9z
Y3JpcHQ+CisKKzxzY3JpcHQgc3JjPSJieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7Cit3b3JrZXJfdGVzdCgnYnl0ZS1sZW5n
dGgtcXVldWluZy1zdHJhdGVneS5qcycpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvYnl0ZS1sZW5ndGgt
cXVldWluZy1zdHJhdGVneS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9ieXRlLWxlbmd0aC1xdWV1aW5nLXN0cmF0ZWd5LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjU0NDA3YWY5OTEzODg5M2I4YjUyOTJhYTI0ODEwMDQxNjJlNzJlNWEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVh
bXMvYnl0ZS1sZW5ndGgtcXVldWluZy1zdHJhdGVneS5qcwpAQCAtMCwwICsxLDEwNyBAQAorJ3Vz
ZSBzdHJpY3QnOworCitpZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7CisgIHNlbGYuaW1wb3J0U2Ny
aXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOworfQorCit0ZXN0KCgpID0+IHsKKwor
ICBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSk7CisK
K30sICdDYW4gY29uc3RydWN0IGEgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSB3aXRoIGEgdmFs
aWQgaGlnaCB3YXRlciBtYXJrJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGZvciAoY29uc3QgaGln
aFdhdGVyTWFyayBvZiBbLUluZmluaXR5LCBOYU4sICdmb28nLCB7fSwgKCkgPT4ge31dKSB7Cisg
ICAgY29uc3Qgc3RyYXRlZ3kgPSBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSh7IGhpZ2hX
YXRlck1hcmsgfSk7CisgICAgYXNzZXJ0X2VxdWFscyhzdHJhdGVneS5oaWdoV2F0ZXJNYXJrLCBo
aWdoV2F0ZXJNYXJrLCBgJHtoaWdoV2F0ZXJNYXJrfSBnZXRzIHNldCBjb3JyZWN0bHlgKTsKKyAg
fQorCit9LCAnQ2FuIGNvbnN0cnVjdCBhIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kgd2l0aCBh
bnkgdmFsdWUgYXMgaXRzIGhpZ2ggd2F0ZXIgbWFyaycpOworCit0ZXN0KCgpID0+IHsKKworICBj
b25zdCBoaWdoV2F0ZXJNYXJrID0gMTsKKyAgY29uc3QgaGlnaFdhdGVyTWFya09iamVjdEdldHRl
ciA9IHsKKyAgICBnZXQgaGlnaFdhdGVyTWFyaygpIHsgcmV0dXJuIGhpZ2hXYXRlck1hcms7IH0K
KyAgfTsKKyAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ3dvdyEnKTsKKyAgY29uc3QgaGlnaFdh
dGVyTWFya09iamVjdEdldHRlclRocm93aW5nID0geworICAgIGdldCBoaWdoV2F0ZXJNYXJrKCkg
eyB0aHJvdyBlcnJvcjsgfQorICB9OworCisgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAnVHlwZUVy
cm9yJyB9LCAoKSA9PiBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSgpLCAnY29uc3RydWN0
aW9uIGZhaWxzIHdpdGggdW5kZWZpbmVkJyk7CisgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAnVHlw
ZUVycm9yJyB9LCAoKSA9PiBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneShudWxsKSwgJ2Nv
bnN0cnVjdGlvbiBmYWlscyB3aXRoIG51bGwnKTsKKyAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICdF
cnJvcicgfSwgKCkgPT4gbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koaGlnaFdhdGVyTWFy
a09iamVjdEdldHRlclRocm93aW5nKSwKKyAgICAnY29uc3RydWN0aW9uIGZhaWxzIHdpdGggYW4g
b2JqZWN0IHdpdGggYSB0aHJvd2luZyBoaWdoV2F0ZXJNYXJrIGdldHRlcicpOworCisgIC8vIFNo
b3VsZCBub3QgZmFpbDoKKyAgbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koJ3BvdGF0bycp
OworICBuZXcgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSh7fSk7CisgIG5ldyBCeXRlTGVuZ3Ro
UXVldWluZ1N0cmF0ZWd5KGhpZ2hXYXRlck1hcmtPYmplY3RHZXR0ZXIpOworCit9LCAnQnl0ZUxl
bmd0aFF1ZXVpbmdTdHJhdGVneSBjb25zdHJ1Y3RvciBiZWhhdmVzIGFzIGV4cGVjdGVkIHdpdGgg
c3RyYW5nZSBhcmd1bWVudHMnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3Qgc2l6ZSA9IDEw
MjQ7CisgIGNvbnN0IGNodW5rID0geyBieXRlTGVuZ3RoOiBzaXplIH07CisgIGNvbnN0IGNodW5r
R2V0dGVyID0geworICAgIGdldCBieXRlTGVuZ3RoKCkgeyByZXR1cm4gc2l6ZTsgfQorICB9Owor
ICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignd293IScpOworICBjb25zdCBjaHVua0dldHRlclRo
cm93aW5nID0geworICAgIGdldCBieXRlTGVuZ3RoKCkgeyB0aHJvdyBlcnJvcjsgfQorICB9Owor
ICBhc3NlcnRfdGhyb3dzKHsgbmFtZTogJ1R5cGVFcnJvcicgfSwgKCkgPT4gQnl0ZUxlbmd0aFF1
ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSgpLCAnc2l6ZSBmYWlscyB3aXRoIHVuZGVmaW5l
ZCcpOworICBhc3NlcnRfdGhyb3dzKHsgbmFtZTogJ1R5cGVFcnJvcicgfSwgKCkgPT4gQnl0ZUxl
bmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZShudWxsKSwgJ3NpemUgZmFpbHMgd2l0
aCBudWxsJyk7CisgIGFzc2VydF9lcXVhbHMoQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90
b3R5cGUuc2l6ZSgncG90YXRvJyksIHVuZGVmaW5lZCwKKyAgICAnc2l6ZSBzdWNjZWVkcyB3aXRo
IHVuZGVmaW5lZCB3aXRoIGEgcmFuZG9tIG5vbi1vYmplY3QgdHlwZScpOworICBhc3NlcnRfZXF1
YWxzKEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoe30pLCB1bmRlZmlu
ZWQsCisgICAgJ3NpemUgc3VjY2VlZHMgd2l0aCB1bmRlZmluZWQgd2l0aCBhbiBvYmplY3Qgd2l0
aG91dCBod20gcHJvcGVydHknKTsKKyAgYXNzZXJ0X2VxdWFscyhCeXRlTGVuZ3RoUXVldWluZ1N0
cmF0ZWd5LnByb3RvdHlwZS5zaXplKGNodW5rKSwgc2l6ZSwKKyAgICAnc2l6ZSBzdWNjZWVkcyB3
aXRoIHRoZSByaWdodCBhbW91bnQgd2l0aCBhbiBvYmplY3Qgd2l0aCBhIGh3bScpOworICBhc3Nl
cnRfZXF1YWxzKEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNpemUoY2h1bmtH
ZXR0ZXIpLCBzaXplLAorICAgICdzaXplIHN1Y2NlZWRzIHdpdGggdGhlIHJpZ2h0IGFtb3VudCB3
aXRoIGFuIG9iamVjdCB3aXRoIGEgaHdtIGdldHRlcicpOworICBhc3NlcnRfdGhyb3dzKHsgbmFt
ZTogJ0Vycm9yJyB9LCAoKSA9PiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5z
aXplKGNodW5rR2V0dGVyVGhyb3dpbmcpLAorICAgICdzaXplIGZhaWxzIHdpdGggdGhlIGVycm9y
IHRocm93biBieSB0aGUgZ2V0dGVyJyk7CisKK30sICdCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5
IHNpemUgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRoIHN0cmFuZ2UgYXJndW1lbnRzJyk7CisKK3Rl
c3QoKCkgPT4geworCisgIGNvbnN0IHRoaXNWYWx1ZSA9IG51bGw7CisgIGNvbnN0IHJldHVyblZh
bHVlID0geyAncmV0dXJuZWQgZnJvbSc6ICdieXRlTGVuZ3RoIGdldHRlcicgfTsKKyAgY29uc3Qg
Y2h1bmsgPSB7CisgICAgZ2V0IGJ5dGVMZW5ndGgoKSB7IHJldHVybiByZXR1cm5WYWx1ZTsgfQor
ICB9OworCisgIGFzc2VydF9lcXVhbHMoQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5
cGUuc2l6ZS5jYWxsKHRoaXNWYWx1ZSwgY2h1bmspLCByZXR1cm5WYWx1ZSk7CisKK30sICdCeXRl
TGVuZ3RoUXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplIHNob3VsZCB3b3JrIGdlbmVyaWNh
bGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzJyk7CisKK3Rlc3QoKCkgPT4geworCisg
IGNvbnN0IHN0cmF0ZWd5ID0gbmV3IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0
ZXJNYXJrOiA0IH0pOworCisgIGFzc2VydF9vYmplY3RfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3Ioc3RyYXRlZ3ksICdoaWdoV2F0ZXJNYXJrJyksCisgICAgeyB2YWx1ZTog
NCwgd3JpdGFibGU6IHRydWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9
LAorICAgICdoaWdoV2F0ZXJNYXJrIHByb3BlcnR5IHNob3VsZCBiZSBhIGRhdGEgcHJvcGVydHkg
d2l0aCB0aGUgdmFsdWUgcGFzc2VkIHRoZSBjb25zdHJ1Y3RvcicpOworICBhc3NlcnRfZXF1YWxz
KHR5cGVvZiBzdHJhdGVneS5zaXplLCAnZnVuY3Rpb24nKTsKKworfSwgJ0J5dGVMZW5ndGhRdWV1
aW5nU3RyYXRlZ3kgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgcHJvcGVydGllcycpOworCit0
ZXN0KCgpID0+IHsKKworICBjb25zdCBzdHJhdGVneSA9IG5ldyBCeXRlTGVuZ3RoUXVldWluZ1N0
cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KTsKKyAgYXNzZXJ0X2VxdWFscyhzdHJhdGVneS5o
aWdoV2F0ZXJNYXJrLCA0KTsKKworICBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrID0gMTA7CisgIGFz
c2VydF9lcXVhbHMoc3RyYXRlZ3kuaGlnaFdhdGVyTWFyaywgMTApOworCisgIHN0cmF0ZWd5Lmhp
Z2hXYXRlck1hcmsgPSAnYmFuYW5hJzsKKyAgYXNzZXJ0X2VxdWFscyhzdHJhdGVneS5oaWdoV2F0
ZXJNYXJrLCAnYmFuYW5hJyk7CisKK30sICdCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5XCdzIGhp
Z2hXYXRlck1hcmsgcHJvcGVydHkgY2FuIGJlIHNldCB0byBhbnl0aGluZycpOworCitkb25lKCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvY291bnQtcXVldWluZy1z
dHJhdGVneS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWMyN2E1NWJmNzhhMWY3ZDQ0YjY1ZTQ5
ZDQ2YzZlOWQyMjk5OTNlYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACisKK1BBU1MgQ2FuIGNvbnN0cnVjdCBhIENvdW50
UXVldWluZ1N0cmF0ZWd5IHdpdGggYSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsgCitQQVNTIENhbiBj
b25zdHJ1Y3QgYSBDb3VudFF1ZXVpbmdTdHJhdGVneSB3aXRoIGFueSB2YWx1ZSBhcyBpdHMgaGln
aCB3YXRlciBtYXJrIAorUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneSBjb25zdHJ1Y3RvciBiZWhh
dmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1bWVudHMgCitQQVNTIENvdW50UXVldWlu
Z1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplIHNob3VsZCB3b3JrIGdlbmVyaWNhbGx5IG9uIGl0cyB0
aGlzIGFuZCBpdHMgYXJndW1lbnRzIAorUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneSBzaXplIGJl
aGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBzdHJhbmdlIGFyZ3VtZW50cyAKK1BBU1MgQ291bnRRdWV1
aW5nU3RyYXRlZ3kgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgcHJvcGVydGllcyAKK1BBU1Mg
Q291bnRRdWV1aW5nU3RyYXRlZ3kncyBoaWdoV2F0ZXJNYXJrIHByb3BlcnR5IGNhbiBiZSBzZXQg
dG8gYW55dGhpbmcgCitGQUlMIExvYWQgY291bnQtcXVldWluZy1zdHJhdGVneS5qcyB3aXRoIFNo
YXJlZFdvcmtlciBhc3NlcnRfdW5yZWFjaGVkOiBTaGFyZWRXb3JrZXIgaXMgdW5hdmFpbGFibGUg
UmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCitGQUlMIFVudGl0bGVkIHVuZGVmaW5lZCBpcyBub3Qg
YW4gb2JqZWN0IChldmFsdWF0aW5nICduYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdpc3Ry
YXRpb24nKQorUEFTUyBDYW4gY29uc3RydWN0IGEgQ291bnRRdWV1aW5nU3RyYXRlZ3kgd2l0aCBh
IHZhbGlkIGhpZ2ggd2F0ZXIgbWFyayAKK1BBU1MgQ2FuIGNvbnN0cnVjdCBhIENvdW50UXVldWlu
Z1N0cmF0ZWd5IHdpdGggYW55IHZhbHVlIGFzIGl0cyBoaWdoIHdhdGVyIG1hcmsgCitQQVNTIENv
dW50UXVldWluZ1N0cmF0ZWd5IGNvbnN0cnVjdG9yIGJlaGF2ZXMgYXMgZXhwZWN0ZWQgd2l0aCBz
dHJhbmdlIGFyZ3VtZW50cyAKK1BBU1MgQ291bnRRdWV1aW5nU3RyYXRlZ3kucHJvdG90eXBlLnNp
emUgc2hvdWxkIHdvcmsgZ2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVudHMg
CitQQVNTIENvdW50UXVldWluZ1N0cmF0ZWd5IHNpemUgYmVoYXZlcyBhcyBleHBlY3RlZCB3aXRo
IHN0cmFuZ2UgYXJndW1lbnRzIAorUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneSBpbnN0YW5jZXMg
aGF2ZSB0aGUgY29ycmVjdCBwcm9wZXJ0aWVzIAorUEFTUyBDb3VudFF1ZXVpbmdTdHJhdGVneSdz
IGhpZ2hXYXRlck1hcmsgcHJvcGVydHkgY2FuIGJlIHNldCB0byBhbnl0aGluZyAKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMmFmZDEyNjg4NjVjYzhhYjdlOThkNzEzYWRiOThmOTVkZWU4NTkzYwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29y
a2Vycy9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rlc3QtaW5pdGlhbGl6ZXIuanMiPjwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iY291bnQtcXVldWluZy1zdHJhdGVneS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgorJ3VzZSBzdHJpY3QnOword29ya2VyX3Rlc3QoJ2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ku
anMnKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuanMgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvY291bnQtcXVl
dWluZy1zdHJhdGVneS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YWUwMDYzZjU3ZDA5ZGQ0N2ZhZjY4MWVjODA5
YTBmODM3NjNkNWM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuanMKQEAg
LTAsMCArMSwxMDYgQEAKKyd1c2Ugc3RyaWN0JzsKKworaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykg
eworICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnKTsKK30K
KwordGVzdCgoKSA9PiB7CisKKyAgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVy
TWFyazogNCB9KTsKKworfSwgJ0NhbiBjb25zdHJ1Y3QgYSBDb3VudFF1ZXVpbmdTdHJhdGVneSB3
aXRoIGEgdmFsaWQgaGlnaCB3YXRlciBtYXJrJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGZvciAo
Y29uc3QgaGlnaFdhdGVyTWFyayBvZiBbLUluZmluaXR5LCBOYU4sICdmb28nLCB7fSwgKCkgPT4g
e31dKSB7CisgICAgY29uc3Qgc3RyYXRlZ3kgPSBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBo
aWdoV2F0ZXJNYXJrIH0pOworICAgIGFzc2VydF9lcXVhbHMoc3RyYXRlZ3kuaGlnaFdhdGVyTWFy
aywgaGlnaFdhdGVyTWFyaywgYCR7aGlnaFdhdGVyTWFya30gZ2V0cyBzZXQgY29ycmVjdGx5YCk7
CisgIH0KKworfSwgJ0NhbiBjb25zdHJ1Y3QgYSBDb3VudFF1ZXVpbmdTdHJhdGVneSB3aXRoIGFu
eSB2YWx1ZSBhcyBpdHMgaGlnaCB3YXRlciBtYXJrJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGNv
bnN0IGhpZ2hXYXRlck1hcmsgPSAxOworICBjb25zdCBoaWdoV2F0ZXJNYXJrT2JqZWN0R2V0dGVy
ID0geworICAgIGdldCBoaWdoV2F0ZXJNYXJrKCkgeyByZXR1cm4gaGlnaFdhdGVyTWFyazsgfQor
ICB9OworICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignd293IScpOworICBjb25zdCBoaWdoV2F0
ZXJNYXJrT2JqZWN0R2V0dGVyVGhyb3dpbmcgPSB7CisgICAgZ2V0IGhpZ2hXYXRlck1hcmsoKSB7
IHRocm93IGVycm9yOyB9CisgIH07CisKKyAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICdUeXBlRXJy
b3InIH0sICgpID0+IG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSgpLCAnY29uc3RydWN0aW9uIGZh
aWxzIHdpdGggdW5kZWZpbmVkJyk7CisgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAnVHlwZUVycm9y
JyB9LCAoKSA9PiBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3kobnVsbCksICdjb25zdHJ1Y3Rpb24g
ZmFpbHMgd2l0aCBudWxsJyk7CisgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAnRXJyb3InIH0sICgp
ID0+IG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneShoaWdoV2F0ZXJNYXJrT2JqZWN0R2V0dGVyVGhy
b3dpbmcpLAorICAgICdjb25zdHJ1Y3Rpb24gZmFpbHMgd2l0aCBhbiBvYmplY3Qgd2l0aCBhIHRo
cm93aW5nIGhpZ2hXYXRlck1hcmsgZ2V0dGVyJyk7CisKKyAgLy8gU2hvdWxkIG5vdCBmYWlsOgor
ICBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koJ3BvdGF0bycpOworICBuZXcgQ291bnRRdWV1aW5n
U3RyYXRlZ3koe30pOworICBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koaGlnaFdhdGVyTWFya09i
amVjdEdldHRlcik7CisKK30sICdDb3VudFF1ZXVpbmdTdHJhdGVneSBjb25zdHJ1Y3RvciBiZWhh
dmVzIGFzIGV4cGVjdGVkIHdpdGggc3RyYW5nZSBhcmd1bWVudHMnKTsKKworCit0ZXN0KCgpID0+
IHsKKworICBjb25zdCB0aGlzVmFsdWUgPSBudWxsOworICBjb25zdCBjaHVuayA9IHsKKyAgICBn
ZXQgYnl0ZUxlbmd0aCgpIHsKKyAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3Nob3VsZG5cJ3Qg
YmUgY2FsbGVkJyk7CisgICAgfQorICB9OworCisgIGFzc2VydF9lcXVhbHMoQ291bnRRdWV1aW5n
U3RyYXRlZ3kucHJvdG90eXBlLnNpemUuY2FsbCh0aGlzVmFsdWUsIGNodW5rKSwgMSk7CisKK30s
ICdDb3VudFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZSBzaG91bGQgd29yayBnZW5lcmlj
YWxseSBvbiBpdHMgdGhpcyBhbmQgaXRzIGFyZ3VtZW50cycpOworCit0ZXN0KCgpID0+IHsKKwor
ICBjb25zdCBzaXplID0gMTAyNDsKKyAgY29uc3QgY2h1bmsgPSB7IGJ5dGVMZW5ndGg6IHNpemUg
fTsKKyAgY29uc3QgY2h1bmtHZXR0ZXIgPSB7CisgICAgZ2V0IGJ5dGVMZW5ndGgoKSB7IHJldHVy
biBzaXplOyB9CisgIH07CisgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCd3b3chJyk7CisgIGNv
bnN0IGNodW5rR2V0dGVyVGhyb3dpbmcgPSB7CisgICAgZ2V0IGJ5dGVMZW5ndGgoKSB7IHRocm93
IGVycm9yOyB9CisgIH07CisKKyAgYXNzZXJ0X2VxdWFscyhDb3VudFF1ZXVpbmdTdHJhdGVneS5w
cm90b3R5cGUuc2l6ZSgpLCAxLCAnc2l6ZSByZXR1cm5zIDEgd2l0aCB1bmRlZmluZWQnKTsKKyAg
YXNzZXJ0X2VxdWFscyhDb3VudFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZShudWxsKSwg
MSwgJ3NpemUgcmV0dXJucyAxIHdpdGggbnVsbCcpOworICBhc3NlcnRfZXF1YWxzKENvdW50UXVl
dWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKCdwb3RhdG8nKSwgMSwgJ3NpemUgcmV0dXJucyAx
IHdpdGggbm9uLW9iamVjdCB0eXBlJyk7CisgIGFzc2VydF9lcXVhbHMoQ291bnRRdWV1aW5nU3Ry
YXRlZ3kucHJvdG90eXBlLnNpemUoe30pLCAxLCAnc2l6ZSByZXR1cm5zIDEgd2l0aCBlbXB0eSBv
YmplY3QnKTsKKyAgYXNzZXJ0X2VxdWFscyhDb3VudFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUu
c2l6ZShjaHVuayksIDEsICdzaXplIHJldHVybnMgMSB3aXRoIGEgY2h1bmsnKTsKKyAgYXNzZXJ0
X2VxdWFscyhDb3VudFF1ZXVpbmdTdHJhdGVneS5wcm90b3R5cGUuc2l6ZShjaHVua0dldHRlciks
IDEsICdzaXplIHJldHVybnMgMSB3aXRoIGNodW5rIGdldHRlcicpOworICBhc3NlcnRfZXF1YWxz
KENvdW50UXVldWluZ1N0cmF0ZWd5LnByb3RvdHlwZS5zaXplKGNodW5rR2V0dGVyVGhyb3dpbmcp
LCAxLAorICAgICdzaXplIHJldHVybnMgMSB3aXRoIGNodW5rIGdldHRlciB0aGF0IHRocm93cycp
OworCit9LCAnQ291bnRRdWV1aW5nU3RyYXRlZ3kgc2l6ZSBiZWhhdmVzIGFzIGV4cGVjdGVkIHdp
dGggc3RyYW5nZSBhcmd1bWVudHMnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3Qgc3RyYXRl
Z3kgPSBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0pOworCisg
IGFzc2VydF9vYmplY3RfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc3Ry
YXRlZ3ksICdoaWdoV2F0ZXJNYXJrJyksCisgICAgeyB2YWx1ZTogNCwgd3JpdGFibGU6IHRydWUs
IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9LAorICAgICdoaWdoV2F0ZXJN
YXJrIHByb3BlcnR5IHNob3VsZCBiZSBhIGRhdGEgcHJvcGVydHkgd2l0aCB0aGUgdmFsdWUgcGFz
c2VkIHRoZSBjb25zdHJ1Y3RvcicpOworICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBzdHJhdGVneS5z
aXplLCAnZnVuY3Rpb24nKTsKKworfSwgJ0NvdW50UXVldWluZ1N0cmF0ZWd5IGluc3RhbmNlcyBo
YXZlIHRoZSBjb3JyZWN0IHByb3BlcnRpZXMnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3Qg
c3RyYXRlZ3kgPSBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyBoaWdoV2F0ZXJNYXJrOiA0IH0p
OworICBhc3NlcnRfZXF1YWxzKHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmssIDQpOworCisgIHN0cmF0
ZWd5LmhpZ2hXYXRlck1hcmsgPSAxMDsKKyAgYXNzZXJ0X2VxdWFscyhzdHJhdGVneS5oaWdoV2F0
ZXJNYXJrLCAxMCk7CisKKyAgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayA9ICdiYW5hbmEnOworICBh
c3NlcnRfZXF1YWxzKHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmssICdiYW5hbmEnKTsKKworfSwgJ0Nv
dW50UXVldWluZ1N0cmF0ZWd5XCdzIGhpZ2hXYXRlck1hcmsgcHJvcGVydHkgY2FuIGJlIHNldCB0
byBhbnl0aGluZycpOworCitkb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3Ry
YXRlZ2llcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZmE4YWYzNDEyNjlhMjU0NDkzZTE1MGRlZDc0YWRlZDQ1MDgyZGI2
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC1zdHJhdGVnaWVzLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDE4IEBACisKK1BBU1MgUmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBz
dHJhdGVneS5zaXplIGdldHRlciAKK1BBU1MgUmVhZGFibGUgc3RyZWFtOiBzdHJhdGVneS5zaXpl
IGVycm9ycyB0aGUgc3RyZWFtIGFuZCB0aGVuIHRocm93cyAKK1BBU1MgUmVhZGFibGUgc3RyZWFt
OiBzdHJhdGVneS5zaXplIGVycm9ycyB0aGUgc3RyZWFtIGFuZCB0aGVuIHJldHVybnMgSW5maW5p
dHkgCitQQVNTIFJlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuc2l6ZSBtZXRob2Qg
CitQQVNTIFJlYWRhYmxlIHN0cmVhbTogdGhyb3dpbmcgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayBn
ZXR0ZXIgCitQQVNTIFJlYWRhYmxlIHN0cmVhbTogaW52YWxpZCBzdHJhdGVneS5oaWdoV2F0ZXJN
YXJrIAorUEFTUyBSZWFkYWJsZSBzdHJlYW06IGludmFsaWQgc3RyYXRlZ3kuc2l6ZSByZXR1cm4g
dmFsdWUgCitGQUlMIExvYWQgYmFkLXN0cmF0ZWdpZXMuanMgd2l0aCBTaGFyZWRXb3JrZXIgYXNz
ZXJ0X3VucmVhY2hlZDogU2hhcmVkV29ya2VyIGlzIHVuYXZhaWxhYmxlIFJlYWNoZWQgdW5yZWFj
aGFibGUgY29kZQorRkFJTCBVbnRpdGxlZCB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZh
bHVhdGluZyAnbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuZ2V0UmVnaXN0cmF0aW9uJykKK1BBU1Mg
UmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5zaXplIGdldHRlciAKK1BBU1MgUmVh
ZGFibGUgc3RyZWFtOiBzdHJhdGVneS5zaXplIGVycm9ycyB0aGUgc3RyZWFtIGFuZCB0aGVuIHRo
cm93cyAKK1BBU1MgUmVhZGFibGUgc3RyZWFtOiBzdHJhdGVneS5zaXplIGVycm9ycyB0aGUgc3Ry
ZWFtIGFuZCB0aGVuIHJldHVybnMgSW5maW5pdHkgCitQQVNTIFJlYWRhYmxlIHN0cmVhbTogdGhy
b3dpbmcgc3RyYXRlZ3kuc2l6ZSBtZXRob2QgCitQQVNTIFJlYWRhYmxlIHN0cmVhbTogdGhyb3dp
bmcgc3RyYXRlZ3kuaGlnaFdhdGVyTWFyayBnZXR0ZXIgCitQQVNTIFJlYWRhYmxlIHN0cmVhbTog
aW52YWxpZCBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrIAorUEFTUyBSZWFkYWJsZSBzdHJlYW06IGlu
dmFsaWQgc3RyYXRlZ3kuc2l6ZSByZXR1cm4gdmFsdWUgCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW1zL2JhZC1zdHJhdGVnaWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRmYWI5MzEzMjM5Yjc3Yzc2NmE5MzIyYjQzNDFlZmM1M2MyNmRiZmUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5odG1sCkBAIC0wLDAg
KzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVy
LmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9ImJhZC1zdHJhdGVnaWVzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7Cit3b3JrZXJfdGVzdCgnYmFkLXN0cmF0ZWdpZXMu
anMnKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXN0cmF0ZWdpZXMu
anMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9iYWQtc3RyYXRlZ2llcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzA1M2FiNjJi
Y2ZlMjFlNDJjNTViMjBiYmNiYWFlMjI2YmFmOGI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvYmFkLXN0cmF0ZWdpZXMuanMKQEAgLTAsMCArMSwxNzUgQEAKKyd1c2Ugc3RyaWN0JzsK
KworaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgeworICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMnKTsKK30KKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgdGhl
RXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOworCisgIGFzc2VydF90aHJvd3Mo
dGhlRXJyb3IsICgpID0+IHsKKyAgICBuZXcgUmVhZGFibGVTdHJlYW0oe30sIHsKKyAgICAgIGdl
dCBzaXplKCkgeworICAgICAgICB0aHJvdyB0aGVFcnJvcjsKKyAgICAgIH0sCisgICAgICBoaWdo
V2F0ZXJNYXJrOiA1CisgICAgfSk7CisgIH0sICdjb25zdHJ1Y3Rpb24gc2hvdWxkIHJlLXRocm93
IHRoZSBlcnJvcicpOworCit9LCAnUmVhZGFibGUgc3RyZWFtOiB0aHJvd2luZyBzdHJhdGVneS5z
aXplIGdldHRlcicpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgY29udHJvbGxl
ckVycm9yID0geyBuYW1lOiAnY29udHJvbGxlciBlcnJvcicgfTsKKyAgY29uc3QgdGhyb3duRXJy
b3IgPSB7IG5hbWU6ICd0aHJvd24gZXJyb3InIH07CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNv
bnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAorICAgIHsKKyAgICAgIHN0YXJ0KGMpIHsKKyAg
ICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICBzaXpl
KCkgeworICAgICAgICBjb250cm9sbGVyLmVycm9yKGNvbnRyb2xsZXJFcnJvcik7CisgICAgICAg
IHRocm93IHRocm93bkVycm9yOworICAgICAgfSwKKyAgICAgIGhpZ2hXYXRlck1hcms6IDUKKyAg
ICB9CisgICk7CisKKyAgYXNzZXJ0X3Rocm93cyh0aHJvd25FcnJvciwgKCkgPT4gY29udHJvbGxl
ci5lbnF1ZXVlKCdhJyksICdlbnF1ZXVlIHNob3VsZCByZS10aHJvdyB0aGUgZXJyb3InKTsKKwor
ICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGNvbnRyb2xsZXJFcnJvciwgcnMuZ2V0UmVhZGVy
KCkuY2xvc2VkKTsKKworfSwgJ1JlYWRhYmxlIHN0cmVhbTogc3RyYXRlZ3kuc2l6ZSBlcnJvcnMg
dGhlIHN0cmVhbSBhbmQgdGhlbiB0aHJvd3MnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisg
IGNvbnN0IHRoZUVycm9yID0geyBuYW1lOiAnbXkgZXJyb3InIH07CisKKyAgbGV0IGNvbnRyb2xs
ZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAorICAgIHsKKyAgICAgIHN0YXJ0
KGMpIHsKKyAgICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICB9CisgICAgfSwKKyAgICB7Cisg
ICAgICBzaXplKCkgeworICAgICAgICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKKyAgICAg
ICAgcmV0dXJuIEluZmluaXR5OworICAgICAgfSwKKyAgICAgIGhpZ2hXYXRlck1hcms6IDUKKyAg
ICB9CisgICk7CisKKyAgYXNzZXJ0X3Rocm93cyhuZXcgUmFuZ2VFcnJvcigpLCAoKSA9PiBjb250
cm9sbGVyLmVucXVldWUoJ2EnKSwgJ2VucXVldWUgc2hvdWxkIHRocm93IGEgUmFuZ2VFcnJvcicp
OworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJzLmdldFJlYWRlcigp
LmNsb3NlZCwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yJyk7CisKK30sICdS
ZWFkYWJsZSBzdHJlYW06IHN0cmF0ZWd5LnNpemUgZXJyb3JzIHRoZSBzdHJlYW0gYW5kIHRoZW4g
cmV0dXJucyBJbmZpbml0eScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHRo
ZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKKyAgY29uc3QgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oCisgICAgeworICAgICAgc3RhcnQoYykgeworICAgICAgICBhc3NlcnRf
dGhyb3dzKHRoZUVycm9yLCAoKSA9PiBjLmVucXVldWUoJ2EnKSwgJ2VucXVldWUgc2hvdWxkIHRo
cm93IHRoZSBlcnJvcicpOworICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgc2l6ZSgpIHsK
KyAgICAgICAgdGhyb3cgdGhlRXJyb3I7CisgICAgICB9LAorICAgICAgaGlnaFdhdGVyTWFyazog
NQorICAgIH0KKyAgKTsKKworICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLmNhdGNoKGUg
PT4geworICAgIGFzc2VydF9lcXVhbHMoZSwgdGhlRXJyb3IsICdjbG9zZWQgc2hvdWxkIHJlamVj
dCB3aXRoIHRoZSBlcnJvcicpOworICB9KTsKKworfSwgJ1JlYWRhYmxlIHN0cmVhbTogdGhyb3dp
bmcgc3RyYXRlZ3kuc2l6ZSBtZXRob2QnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgdGhl
RXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOworCisgIGFzc2VydF90aHJvd3Mo
dGhlRXJyb3IsICgpID0+IHsKKyAgICBuZXcgUmVhZGFibGVTdHJlYW0oe30sIHsKKyAgICAgIHNp
emUoKSB7CisgICAgICAgIHJldHVybiAxOworICAgICAgfSwKKyAgICAgIGdldCBoaWdoV2F0ZXJN
YXJrKCkgeworICAgICAgICB0aHJvdyB0aGVFcnJvcjsKKyAgICAgIH0KKyAgICB9KTsKKyAgfSwg
J2NvbnN0cnVjdGlvbiBzaG91bGQgcmUtdGhyb3cgdGhlIGVycm9yJyk7CisKK30sICdSZWFkYWJs
ZSBzdHJlYW06IHRocm93aW5nIHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgZ2V0dGVyJyk7CisKK3Rl
c3QoKCkgPT4geworCisgIGZvciAoY29uc3QgaGlnaFdhdGVyTWFyayBvZiBbLTEsIC1JbmZpbml0
eV0pIHsKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBSYW5nZUVycm9yKCksICgpID0+IHsKKyAgICAg
IG5ldyBSZWFkYWJsZVN0cmVhbSh7fSwgeworICAgICAgICBzaXplKCkgeworICAgICAgICAgIHJl
dHVybiAxOworICAgICAgICB9LAorICAgICAgICBoaWdoV2F0ZXJNYXJrCisgICAgICB9KTsKKyAg
ICB9LCAnY29uc3RydWN0aW9uIHNob3VsZCB0aHJvdyBhIFJhbmdlRXJyb3IgZm9yICcgKyBoaWdo
V2F0ZXJNYXJrKTsKKyAgfQorCisgIGZvciAoY29uc3QgaGlnaFdhdGVyTWFyayBvZiBbTmFOLCAn
Zm9vJywge31dKSB7CisgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHsK
KyAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7fSwgeworICAgICAgICBzaXplKCkgeworICAgICAg
ICAgIHJldHVybiAxOworICAgICAgICB9LAorICAgICAgICBoaWdoV2F0ZXJNYXJrCisgICAgICB9
KTsKKyAgICB9LCAnY29uc3RydWN0aW9uIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciBmb3IgJyAr
IGhpZ2hXYXRlck1hcmspOworICB9CisKK30sICdSZWFkYWJsZSBzdHJlYW06IGludmFsaWQgc3Ry
YXRlZ3kuaGlnaFdhdGVyTWFyaycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0
IHByb21pc2VzID0gW107CisgIGZvciAoY29uc3Qgc2l6ZSBvZiBbTmFOLCAtSW5maW5pdHksIElu
ZmluaXR5LCAtMV0pIHsKKyAgICBsZXQgdGhlRXJyb3I7CisgICAgY29uc3QgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oCisgICAgICB7CisgICAgICAgIHN0YXJ0KGMpIHsKKyAgICAgICAgICB0cnkg
eworICAgICAgICAgICAgYy5lbnF1ZXVlKCdoaScpOworICAgICAgICAgICAgYXNzZXJ0X3VucmVh
Y2hlZCgnZW5xdWV1ZSBkaWRuXCd0IHRocm93Jyk7CisgICAgICAgICAgfSBjYXRjaCAoZXJyb3Ip
IHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXJyb3IubmFtZSwgJ1JhbmdlRXJyb3InLCAn
ZW5xdWV1ZSBzaG91bGQgdGhyb3cgYSBSYW5nZUVycm9yIGZvciAnICsgc2l6ZSk7CisgICAgICAg
ICAgICB0aGVFcnJvciA9IGVycm9yOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSwK
KyAgICAgIHsKKyAgICAgICAgc2l6ZSgpIHsKKyAgICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICAg
ICAgfSwKKyAgICAgICAgaGlnaFdhdGVyTWFyazogNQorICAgICAgfQorICAgICk7CisKKyAgICBw
cm9taXNlcy5wdXNoKHJzLmdldFJlYWRlcigpLmNsb3NlZC5jYXRjaChlID0+IHsKKyAgICAgIGFz
c2VydF9lcXVhbHMoZSwgdGhlRXJyb3IsICdjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBl
cnJvciBmb3IgJyArIHNpemUpOworICAgIH0pKTsKKyAgfQorCisgIHJldHVybiBQcm9taXNlLmFs
bChwcm9taXNlcyk7CisKK30sICdSZWFkYWJsZSBzdHJlYW06IGludmFsaWQgc3RyYXRlZ3kuc2l6
ZSByZXR1cm4gdmFsdWUnKTsKKworZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFk
LXVuZGVybHlpbmctc291cmNlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJs
eWluZy1zb3VyY2VzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOWNmY2E1Yjc2MGM0MTE5NDE1
MWU3ODYyZjg0ZDVhN2IwNmQxNWYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFk
LXVuZGVybHlpbmctc291cmNlcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0NiBAQAorCitQQVNT
IFVuZGVybHlpbmcgc291cmNlIHN0YXJ0OiB0aHJvd2luZyBnZXR0ZXIgCitQQVNTIFVuZGVybHlp
bmcgc291cmNlIHN0YXJ0OiB0aHJvd2luZyBtZXRob2QgCitQQVNTIFVuZGVybHlpbmcgc291cmNl
OiB0aHJvd2luZyBwdWxsIGdldHRlciAoaW5pdGlhbCBwdWxsKSAKK1BBU1MgVW5kZXJseWluZyBz
b3VyY2U6IHRocm93aW5nIHB1bGwgbWV0aG9kIChpbml0aWFsIHB1bGwpIAorUEFTUyBVbmRlcmx5
aW5nIHNvdXJjZSBwdWxsOiB0aHJvd2luZyBnZXR0ZXIgKHNlY29uZCBwdWxsKSAKK1BBU1MgVW5k
ZXJseWluZyBzb3VyY2UgcHVsbDogdGhyb3dpbmcgbWV0aG9kIChzZWNvbmQgcHVsbCkgCitQQVNT
IFVuZGVybHlpbmcgc291cmNlIGNhbmNlbDogdGhyb3dpbmcgZ2V0dGVyIAorUEFTUyBVbmRlcmx5
aW5nIHNvdXJjZSBjYW5jZWw6IHRocm93aW5nIG1ldGhvZCAKK1BBU1MgVW5kZXJseWluZyBzb3Vy
Y2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhbiBlbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5v
dCB0aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhIG5v
bi1lbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdyAKK1BBU1MgVW5kZXJseWlu
ZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhIGNsb3NlZCBzdHJlYW0gc2hvdWxkIHRocm93
IAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGFuIGVycm9yZWQg
c3RyZWFtIHNob3VsZCB0aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xv
c2UgdHdpY2Ugb24gYW4gZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUg
CitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGEgbm9uLWVt
cHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lIAorUEFTUyBVbmRlcmx5aW5n
IHNvdXJjZTogY2FsbGluZyBjbG9zZSBvbiBhbiBlbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxk
IG5vdCB0aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24gYSBu
b24tZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cgCitQQVNTIFVuZGVybHlp
bmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIGFmdGVyIGVycm9yIHNob3VsZCB0aHJvdyAKK1BBU1Mg
VW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgdHdpY2Ugc2hvdWxkIHRocm93IHRoZSBz
ZWNvbmQgdGltZSAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYWZ0ZXIg
Y2xvc2Ugc2hvdWxkIHRocm93IAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJv
ciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBmcm9tIHN0YXJ0IHNob3VsZCBjYXVz
ZSB0aGUgc3RyZWFtIHRvIGVycm9yIHdpdGggdGhlIGZpcnN0IGVycm9yIAorUEFTUyBVbmRlcmx5
aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhbmQgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlz
ZSBmcm9tIHB1bGwgc2hvdWxkIGNhdXNlIHRoZSBzdHJlYW0gdG8gZXJyb3Igd2l0aCB0aGUgZmly
c3QgZXJyb3IgCitGQUlMIExvYWQgYmFkLXVuZGVybHlpbmctc291cmNlcy5qcyB3aXRoIFNoYXJl
ZFdvcmtlciBhc3NlcnRfdW5yZWFjaGVkOiBTaGFyZWRXb3JrZXIgaXMgdW5hdmFpbGFibGUgUmVh
Y2hlZCB1bnJlYWNoYWJsZSBjb2RlCitGQUlMIFVudGl0bGVkIHVuZGVmaW5lZCBpcyBub3QgYW4g
b2JqZWN0IChldmFsdWF0aW5nICduYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdpc3RyYXRp
b24nKQorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dpbmcgZ2V0dGVyIAorUEFT
UyBVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dpbmcgbWV0aG9kIAorUEFTUyBVbmRlcmx5
aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBnZXR0ZXIgKGluaXRpYWwgcHVsbCkgCitQQVNTIFVu
ZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIG1ldGhvZCAoaW5pdGlhbCBwdWxsKSAKK1BB
U1MgVW5kZXJseWluZyBzb3VyY2UgcHVsbDogdGhyb3dpbmcgZ2V0dGVyIChzZWNvbmQgcHVsbCkg
CitQQVNTIFVuZGVybHlpbmcgc291cmNlIHB1bGw6IHRocm93aW5nIG1ldGhvZCAoc2Vjb25kIHB1
bGwpIAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBjYW5jZWw6IHRocm93aW5nIGdldHRlciAKK1BB
U1MgVW5kZXJseWluZyBzb3VyY2UgY2FuY2VsOiB0aHJvd2luZyBtZXRob2QgCitQQVNTIFVuZGVy
bHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYW4gZW1wdHkgY2FuY2VsZWQgc3RyZWFt
IHNob3VsZCBub3QgdGhyb3cgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVl
dWUgb24gYSBub24tZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cgCitQQVNT
IFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYSBjbG9zZWQgc3RyZWFtIHNo
b3VsZCB0aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBh
biBlcnJvcmVkIHN0cmVhbSBzaG91bGQgdGhyb3cgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBj
YWxsaW5nIGNsb3NlIHR3aWNlIG9uIGFuIGVtcHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNl
Y29uZCB0aW1lIAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSB0d2ljZSBv
biBhIG5vbi1lbXB0eSBzdHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGltZSAKK1BBU1Mg
VW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24gYW4gZW1wdHkgY2FuY2VsZWQgc3Ry
ZWFtIHNob3VsZCBub3QgdGhyb3cgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNs
b3NlIG9uIGEgbm9uLWVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93IAorUEFT
UyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBhZnRlciBlcnJvciBzaG91bGQgdGhy
b3cgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9yIHR3aWNlIHNob3VsZCB0
aHJvdyB0aGUgc2Vjb25kIHRpbWUgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVy
cm9yIGFmdGVyIGNsb3NlIHNob3VsZCB0aHJvdyAKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNh
bGxpbmcgZXJyb3IgYW5kIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgZnJvbSBzdGFydCBz
aG91bGQgY2F1c2UgdGhlIHN0cmVhbSB0byBlcnJvciB3aXRoIHRoZSBmaXJzdCBlcnJvciAKK1BB
U1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYW5kIHJldHVybmluZyBhIHJlamVj
dGVkIHByb21pc2UgZnJvbSBwdWxsIHNob3VsZCBjYXVzZSB0aGUgc3RyZWFtIHRvIGVycm9yIHdp
dGggdGhlIGZpcnN0IGVycm9yIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJs
eWluZy1zb3VyY2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZWNiMTFmZWFiMTJjNDc2YzQ3MWZkMmRjNWRiZmIzMGQ5ZDdkZmI1Ngot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuaHRt
bApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvdGVz
dC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC1p
bml0aWFsaXplci5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSJiYWQtdW5kZXJseWluZy1z
b3VyY2VzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7Cit3b3JrZXJfdGVz
dCgnYmFkLXVuZGVybHlpbmctc291cmNlcy5qcycpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVu
ZGVybHlpbmctc291cmNlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMmZkMGZkYzkyOTlkNWQ1ZGU0ZjU2Mjhk
ZDE5ZDU5ZmQyOTMwMGRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYmFkLXVuZGVy
bHlpbmctc291cmNlcy5qcwpAQCAtMCwwICsxLDM4MyBAQAorJ3VzZSBzdHJpY3QnOworCitpZiAo
c2VsZi5pbXBvcnRTY3JpcHRzKSB7CisgIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcycpOworfQorCisKK3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHRoZUVycm9y
ID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKKworICBhc3NlcnRfdGhyb3dzKHRoZUVy
cm9yLCAoKSA9PiB7CisgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgIGdldCBzdGFydCgp
IHsKKyAgICAgICAgdGhyb3cgdGhlRXJyb3I7CisgICAgICB9CisgICAgfSk7CisgIH0sICdjb25z
dHJ1Y3RpbmcgdGhlIHN0cmVhbSBzaG91bGQgcmUtdGhyb3cgdGhlIGVycm9yJyk7CisKK30sICdV
bmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dpbmcgZ2V0dGVyJyk7CisKKwordGVzdCgoKSA9
PiB7CisKKyAgY29uc3QgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwor
CisgIGFzc2VydF90aHJvd3ModGhlRXJyb3IsICgpID0+IHsKKyAgICBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgICAgc3RhcnQoKSB7CisgICAgICAgIHRocm93IHRoZUVycm9yOworICAgICAgfQor
ICAgIH0pOworICB9LCAnY29uc3RydWN0aW5nIHRoZSBzdHJlYW0gc2hvdWxkIHJlLXRocm93IHRo
ZSBlcnJvcicpOworCit9LCAnVW5kZXJseWluZyBzb3VyY2Ugc3RhcnQ6IHRocm93aW5nIG1ldGhv
ZCcpOworCisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9IG5ldyBF
cnJvcignYSB1bmlxdWUgc3RyaW5nJyk7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKKyAgICBnZXQgcHVsbCgpIHsKKyAgICAgIHRocm93IHRoZUVycm9yOworICAgIH0KKyAgfSk7
CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJvciwgcnMuZ2V0UmVhZGVyKCku
Y2xvc2VkKTsKKworfSwgJ1VuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIGdldHRlciAo
aW5pdGlhbCBwdWxsKScpOworCisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCB0aGVF
cnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7CisgIGNvbnN0IHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKCkgeworICAgICAgdGhyb3cgdGhlRXJyb3I7CisgICAg
fQorICB9KTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCBycy5nZXRS
ZWFkZXIoKS5jbG9zZWQpOworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwg
bWV0aG9kIChpbml0aWFsIHB1bGwpJyk7CisKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNv
bnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKKworICBsZXQgY291
bnRlciA9IDA7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBnZXQgcHVs
bCgpIHsKKyAgICAgICsrY291bnRlcjsKKyAgICAgIGlmIChjb3VudGVyID09PSAxKSB7CisgICAg
ICAgIHJldHVybiBjID0+IGMuZW5xdWV1ZSgnYScpOworICAgICAgfQorCisgICAgICB0aHJvdyB0
aGVFcnJvcjsKKyAgICB9CisgIH0pOworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsK
KworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsK
KyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2Ug
fSwgJ3RoZSBjaHVuayByZWFkIHNob3VsZCBiZSBjb3JyZWN0Jyk7CisgICAgfSksCisgICAgcHJv
bWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIuY2xvc2VkKQorICBdKTsKKworfSwgJ1Vu
ZGVybHlpbmcgc291cmNlIHB1bGw6IHRocm93aW5nIGdldHRlciAoc2Vjb25kIHB1bGwpJyk7CisK
KworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdh
IHVuaXF1ZSBzdHJpbmcnKTsKKworICBsZXQgY291bnRlciA9IDA7CisgIGNvbnN0IHJzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKGMpIHsKKyAgICAgICsrY291bnRlcjsKKyAgICAg
IGlmIChjb3VudGVyID09PSAxKSB7CisgICAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAgICBy
ZXR1cm47CisgICAgICB9CisKKyAgICAgIHRocm93IHRoZUVycm9yOworICAgIH0KKyAgfSk7Cisg
IGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIHJldHVybiBQcm9taXNlLmFsbChb
CisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVh
bHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAndGhlIGNodW5rIHJlYWQgc2hvdWxk
IGJlIGNvcnJlY3QnKTsKKyAgICB9KSwKKyAgICBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3Is
IHJlYWRlci5jbG9zZWQpCisgIF0pOworCit9LCAnVW5kZXJseWluZyBzb3VyY2UgcHVsbDogdGhy
b3dpbmcgbWV0aG9kIChzZWNvbmQgcHVsbCknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisg
IGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKKyAgY29uc3Qg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIGdldCBjYW5jZWwoKSB7CisgICAgICB0aHJv
dyB0aGVFcnJvcjsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwg
dGhlRXJyb3IsIHJzLmNhbmNlbCgpKTsKKworfSwgJ1VuZGVybHlpbmcgc291cmNlIGNhbmNlbDog
dGhyb3dpbmcgZ2V0dGVyJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCB0aGVF
cnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7CisgIGNvbnN0IHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKKyAgICBjYW5jZWwoKSB7CisgICAgICB0aHJvdyB0aGVFcnJvcjsKKyAg
ICB9CisgIH0pOworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJzLmNh
bmNlbCgpKTsKKworfSwgJ1VuZGVybHlpbmcgc291cmNlIGNhbmNlbDogdGhyb3dpbmcgbWV0aG9k
Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9s
bGVyID0gYzsKKyAgICB9CisgIH0pOworCisgIHJzLmNhbmNlbCgpOworICBjb250cm9sbGVyLmVu
cXVldWUoJ2EnKTsgLy8gQ2FsbGluZyBlbnF1ZXVlIGFmdGVyIGNhbmNlbGluZyBzaG91bGQgbm90
IHRocm93IGFueXRoaW5nLgorCisgIHJldHVybiBycy5nZXRSZWFkZXIoKS5jbG9zZWQ7CisKK30s
ICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGFuIGVtcHR5IGNhbmNlbGVk
IHN0cmVhbSBzaG91bGQgbm90IHRocm93Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAg
bGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBz
dGFydChjKSB7CisgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICAgIGMuZW5xdWV1ZSgnYicpOwor
ICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKworICBycy5jYW5jZWwoKTsKKyAg
Y29udHJvbGxlci5lbnF1ZXVlKCdjJyk7IC8vIENhbGxpbmcgZW5xdWV1ZSBhZnRlciBjYW5jZWxp
bmcgc2hvdWxkIG5vdCB0aHJvdyBhbnl0aGluZy4KKworICByZXR1cm4gcnMuZ2V0UmVhZGVyKCku
Y2xvc2VkOworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZW5xdWV1ZSBvbiBhIG5v
bi1lbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdycpOworCitwcm9taXNlX3Rl
c3QoKCkgPT4geworCisgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMp
IHsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigp
LCAoKSA9PiBjLmVucXVldWUoJ2EnKSwgJ2NhbGwgdG8gZW5xdWV1ZSBzaG91bGQgdGhyb3cgYSBU
eXBlRXJyb3InKTsKKyAgICB9CisgIH0pLmdldFJlYWRlcigpLmNsb3NlZDsKKworfSwgJ1VuZGVy
bHlpbmcgc291cmNlOiBjYWxsaW5nIGVucXVldWUgb24gYSBjbG9zZWQgc3RyZWFtIHNob3VsZCB0
aHJvdycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgdGhlRXJyb3IgPSBuZXcg
RXJyb3IoJ2JvbycpOworICBjb25zdCBjbG9zZWQgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAg
IHN0YXJ0KGMpIHsKKyAgICAgIGMuZXJyb3IodGhlRXJyb3IpOworICAgICAgYXNzZXJ0X3Rocm93
cyh0aGVFcnJvciwgKCkgPT4gYy5lbnF1ZXVlKCdhJyksICdjYWxsIHRvIGVucXVldWUgc2hvdWxk
IHRocm93IHRoZSBlcnJvcicpOworICAgIH0KKyAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOworCisg
IHJldHVybiBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIGNsb3NlZCk7CisKK30sICdVbmRl
cmx5aW5nIHNvdXJjZTogY2FsbGluZyBlbnF1ZXVlIG9uIGFuIGVycm9yZWQgc3RyZWFtIHNob3Vs
ZCB0aHJvdycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIHJldHVybiBuZXcgUmVhZGFi
bGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICAgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjLmNsb3NlKCksICdzZWNvbmQgY2FsbCB0
byBjbG9zZSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKKyAgICB9CisgIH0pLmdldFJlYWRl
cigpLmNsb3NlZDsKKworfSwgJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNl
IG9uIGFuIGVtcHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lJyk7CisKK3By
b21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisgIGxldCBy
ZWFkQ2FsbGVkID0gZmFsc2U7CisgIGNvbnN0IHJlYWRlciA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgICBjLmNsb3NlKCk7
CisgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gYy5jbG9zZSgpLCAn
c2Vjb25kIGNhbGwgdG8gY2xvc2Ugc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7CisgICAgICBz
dGFydENhbGxlZCA9IHRydWU7CisgICAgfQorICB9KS5nZXRSZWFkZXIoKTsKKworICByZXR1cm4g
UHJvbWlzZS5hbGwoWworICAgIHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKKyAgICAgIGFzc2Vy
dF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3JlYWQoKSBz
aG91bGQgcmVhZCB0aGUgZW5xdWV1ZWQgY2h1bmsnKTsKKyAgICAgIHJlYWRDYWxsZWQgPSB0cnVl
OworICAgIH0pLAorICAgIHJlYWRlci5jbG9zZWQudGhlbigoKSA9PiB7CisgICAgICBhc3NlcnRf
dHJ1ZShzdGFydENhbGxlZCk7CisgICAgICBhc3NlcnRfdHJ1ZShyZWFkQ2FsbGVkKTsKKyAgICB9
KQorICBdKTsKKworfSwgJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9u
IGEgbm9uLWVtcHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lJyk7CisKK3By
b21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGxldCBzdGFydENhbGxl
ZCA9IGZhbHNlOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQo
YykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICBzdGFydENhbGxlZCA9IHRydWU7Cisg
ICAgfQorICB9KTsKKworICBycy5jYW5jZWwoKTsKKyAgY29udHJvbGxlci5jbG9zZSgpOyAvLyBD
YWxsaW5nIGNsb3NlIGFmdGVyIGNhbmNlbGluZyBzaG91bGQgbm90IHRocm93IGFueXRoaW5nLgor
CisgIHJldHVybiBycy5nZXRSZWFkZXIoKS5jbG9zZWQudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0
X3RydWUoc3RhcnRDYWxsZWQpOworICB9KTsKKworfSwgJ1VuZGVybHlpbmcgc291cmNlOiBjYWxs
aW5nIGNsb3NlIG9uIGFuIGVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93Jyk7
CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGxldCBzdGFy
dENhbGxlZCA9IGZhbHNlOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAg
c3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICBjLmVucXVldWUoJ2EnKTsK
KyAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKKyAgICB9CisgIH0pOworCisgIHJzLmNhbmNlbCgp
OworICBjb250cm9sbGVyLmNsb3NlKCk7IC8vIENhbGxpbmcgY2xvc2UgYWZ0ZXIgY2FuY2VsaW5n
IHNob3VsZCBub3QgdGhyb3cgYW55dGhpbmcuCisKKyAgcmV0dXJuIHJzLmdldFJlYWRlcigpLmNs
b3NlZC50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7CisgIH0pOwor
Cit9LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24gYSBub24tZW1wdHkgY2Fu
Y2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsK
KworICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJvcignYm9vJyk7CisgIGxldCBzdGFydENhbGxl
ZCA9IGZhbHNlOworCisgIGNvbnN0IGNsb3NlZCA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAg
c3RhcnQoYykgeworICAgICAgYy5lcnJvcih0aGVFcnJvcik7CisgICAgICBhc3NlcnRfdGhyb3dz
KG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gYy5jbG9zZSgpLCAnY2FsbCB0byBjbG9zZSBzaG91bGQg
dGhyb3cgYSBUeXBlRXJyb3InKTsKKyAgICAgIHN0YXJ0Q2FsbGVkID0gdHJ1ZTsKKyAgICB9Cisg
IH0pLmdldFJlYWRlcigpLmNsb3NlZDsKKworICByZXR1cm4gY2xvc2VkLmNhdGNoKGUgPT4gewor
ICAgIGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKKyAgICBhc3NlcnRfZXF1YWxzKGUsIHRoZUVy
cm9yLCAnY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKKyAgfSk7CisKK30s
ICdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBhZnRlciBlcnJvciBzaG91bGQgdGhy
b3cnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9IG5ldyBF
cnJvcignYm9vJyk7CisgIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOworCisgIGNvbnN0IGNsb3Nl
ZCA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lcnJvcih0
aGVFcnJvcik7CisgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gYy5l
cnJvcigpLCAnc2Vjb25kIGNhbGwgdG8gZXJyb3Igc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7
CisgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgfQorICB9KS5nZXRSZWFkZXIoKS5jbG9z
ZWQ7CisKKyAgcmV0dXJuIGNsb3NlZC5jYXRjaChlID0+IHsKKyAgICBhc3NlcnRfdHJ1ZShzdGFy
dENhbGxlZCk7CisgICAgYXNzZXJ0X2VxdWFscyhlLCB0aGVFcnJvciwgJ2Nsb3NlZCBzaG91bGQg
cmVqZWN0IHdpdGggdGhlIGVycm9yJyk7CisgIH0pOworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6
IGNhbGxpbmcgZXJyb3IgdHdpY2Ugc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGltZScpOworCitw
cm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBzdGFydENhbGxlZCA9IGZhbHNlOworCisgIGNv
bnN0IGNsb3NlZCA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAg
Yy5jbG9zZSgpOworICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IGMu
ZXJyb3IoKSwgJ3NlY29uZCBjYWxsIHRvIGVycm9yIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicp
OworICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOworICAgIH0KKyAgfSkuZ2V0UmVhZGVyKCkuY2xv
c2VkOworCisgIHJldHVybiBjbG9zZWQudGhlbigoKSA9PiBhc3NlcnRfdHJ1ZShzdGFydENhbGxl
ZCkpOworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYWZ0ZXIgY2xvc2Ug
c2hvdWxkIHRocm93Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHN0YXJ0Q2Fs
bGVkID0gZmFsc2U7CisgIGNvbnN0IGZpcnN0RXJyb3IgPSBuZXcgRXJyb3IoJzEnKTsKKyAgY29u
c3Qgc2Vjb25kRXJyb3IgPSBuZXcgRXJyb3IoJzInKTsKKworICBjb25zdCBjbG9zZWQgPSBuZXcg
UmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZXJyb3IoZmlyc3RFcnJv
cik7CisgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgICByZXR1cm4gUHJvbWlzZS5yZWpl
Y3Qoc2Vjb25kRXJyb3IpOworICAgIH0KKyAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOworCisgIHJl
dHVybiBjbG9zZWQuY2F0Y2goZSA9PiB7CisgICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOwor
ICAgIGFzc2VydF9lcXVhbHMoZSwgZmlyc3RFcnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdp
dGggdGhlIGZpcnN0IGVycm9yJyk7CisgIH0pOworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6IGNh
bGxpbmcgZXJyb3IgYW5kIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgZnJvbSBzdGFydCBz
aG91bGQgY2F1c2UgdGhlIHN0cmVhbSB0byBlcnJvciAnICsKKyAgICd3aXRoIHRoZSBmaXJzdCBl
cnJvcicpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBzdGFydENhbGxlZCA9IGZh
bHNlOworICBjb25zdCBmaXJzdEVycm9yID0gbmV3IEVycm9yKCcxJyk7CisgIGNvbnN0IHNlY29u
ZEVycm9yID0gbmV3IEVycm9yKCcyJyk7CisKKyAgY29uc3QgY2xvc2VkID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKKyAgICBwdWxsKGMpIHsKKyAgICAgIGMuZXJyb3IoZmlyc3RFcnJvcik7CisgICAg
ICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoc2Vjb25k
RXJyb3IpOworICAgIH0KKyAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOworCisgIHJldHVybiBjbG9z
ZWQuY2F0Y2goZSA9PiB7CisgICAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOworICAgIGFzc2Vy
dF9lcXVhbHMoZSwgZmlyc3RFcnJvciwgJ2Nsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGZp
cnN0IGVycm9yJyk7CisgIH0pOworCit9LCAnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJy
b3IgYW5kIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgZnJvbSBwdWxsIHNob3VsZCBjYXVz
ZSB0aGUgc3RyZWFtIHRvIGVycm9yICcgKworICAgJ3dpdGggdGhlIGZpcnN0IGVycm9yJyk7CisK
K2RvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3
NmUwNjg2YWZjYWViYzkzZjJlNDgxZTBmMTU4Mjk3ZjUzNzExMWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3MtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzQgQEAK
KworUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBpbmRp
cmVjdGx5IAorUEFTUyBDYW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgY29uc3Ry
dWN0b3IgaW5kaXJlY3RseSAKK1BBU1MgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmNhbmNlbCBl
bmZvcmNlcyBhIGJyYW5kIGNoZWNrIAorUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuZ2V0
UmVhZGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgCitQQVNTIFJlYWRhYmxlU3RyZWFtLnByb3Rv
dHlwZS50ZWUgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKK1BBU1MgUmVhZGFibGVTdHJlYW1SZWFk
ZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjayBvbiBpdHMgYXJndW1lbnQgCitQQVNTIFJlYWRhYmxl
U3RyZWFtUmVhZGVyLnByb3RvdHlwZS5jbG9zZWQgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKK1BB
U1MgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBhIGJyYW5k
IGNoZWNrIAorUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVhZCBlbmZvcmNl
cyBhIGJyYW5kIGNoZWNrIAorUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVs
ZWFzZUxvY2sgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKK1BBU1MgUmVhZGFibGVTdHJlYW1Db250
cm9sbGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50IAorUEFTUyBSZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXIgY2FuJ3QgYmUgZ2l2ZW4gYSBmdWxseS1jb25zdHJ1Y3RlZCBS
ZWFkYWJsZVN0cmVhbSAKK1BBU1MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5j
bG9zZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAorUEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIucHJvdG90eXBlLmVucXVldWUgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKK1BBU1MgUmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5lcnJvciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNr
IAorRkFJTCBMb2FkIGJyYW5kLWNoZWNrcy5qcyB3aXRoIFNoYXJlZFdvcmtlciBhc3NlcnRfdW5y
ZWFjaGVkOiBTaGFyZWRXb3JrZXIgaXMgdW5hdmFpbGFibGUgUmVhY2hlZCB1bnJlYWNoYWJsZSBj
b2RlCitGQUlMIFVudGl0bGVkIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5n
ICduYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdpc3RyYXRpb24nKQorUEFTUyBDYW4gZ2V0
IHRoZSBSZWFkYWJsZVN0cmVhbVJlYWRlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5IAorUEFTUyBD
YW4gZ2V0IHRoZSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgY29uc3RydWN0b3IgaW5kaXJlY3Rs
eSAKK1BBU1MgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBhIGJyYW5k
IGNoZWNrIAorUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuZ2V0UmVhZGVyIGVuZm9yY2Vz
IGEgYnJhbmQgY2hlY2sgCitQQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS50ZWUgZW5mb3Jj
ZXMgYSBicmFuZCBjaGVjayAKK1BBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIgZW5mb3JjZXMgYSBi
cmFuZCBjaGVjayBvbiBpdHMgYXJndW1lbnQgCitQQVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnBy
b3RvdHlwZS5jbG9zZWQgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKK1BBU1MgUmVhZGFibGVTdHJl
YW1SZWFkZXIucHJvdG90eXBlLmNhbmNlbCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAorUEFTUyBS
ZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVhZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNr
IAorUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUucmVsZWFzZUxvY2sgZW5mb3Jj
ZXMgYSBicmFuZCBjaGVjayAKK1BBU1MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIGVuZm9yY2Vz
IGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50IAorUEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXIgY2FuJ3QgYmUgZ2l2ZW4gYSBmdWxseS1jb25zdHJ1Y3RlZCBSZWFkYWJsZVN0cmVhbSAK
K1BBU1MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS5jbG9zZSBlbmZvcmNlcyBh
IGJyYW5kIGNoZWNrIAorUEFTUyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLmVu
cXVldWUgZW5mb3JjZXMgYSBicmFuZCBjaGVjayAKK1BBU1MgUmVhZGFibGVTdHJlYW1Db250cm9s
bGVyLnByb3RvdHlwZS5lcnJvciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrIAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3MuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNr
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjlkZmVkMTIzZDc2ZGI4N2Y3YjMyMDE5Y2MxNjNiMzM0MmYxYTJk
OGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9icmFuZC1jaGVja3MuaHRtbApAQCAt
MCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvdGVzdC1oZWxw
ZXJzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC1pbml0aWFs
aXplci5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iYnJhbmQtY2hlY2tzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CisndXNlIHN0cmljdCc7Cit3b3JrZXJfdGVzdCgnYnJhbmQtY2hlY2tzLmpzJyk7
Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5qcyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL2JyYW5kLWNoZWNrcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMjU1M2NmOTJmNTJmZDZkYzBl
NzIzYmFmNmY3M2Q3M2VlYjhmNWYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvYnJh
bmQtY2hlY2tzLmpzCkBAIC0wLDAgKzEsMTUxIEBACisndXNlIHN0cmljdCc7CisKK2lmIChzZWxm
LmltcG9ydFNjcmlwdHMpIHsKKyAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvdGVz
dC11dGlscy5qcycpOworICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMnKTsKK30KKworbGV0IFJlYWRhYmxlU3RyZWFtUmVhZGVyOworbGV0IFJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlcjsKKwordGVzdCgoKSA9PiB7CisKKyAgLy8gSXQncyBub3QgZXhwb3NlZCBn
bG9iYWxseSwgYnV0IHdlIHRlc3QgYSBmZXcgb2YgaXRzIHByb3BlcnRpZXMgaGVyZS4KKyAgUmVh
ZGFibGVTdHJlYW1SZWFkZXIgPSAobmV3IFJlYWRhYmxlU3RyZWFtKCkpLmdldFJlYWRlcigpLmNv
bnN0cnVjdG9yOworCit9LCAnQ2FuIGdldCB0aGUgUmVhZGFibGVTdHJlYW1SZWFkZXIgY29uc3Ry
dWN0b3IgaW5kaXJlY3RseScpOworCit0ZXN0KCgpID0+IHsKKworICAvLyBJdCdzIG5vdCBleHBv
c2VkIGdsb2JhbGx5LCBidXQgd2UgdGVzdCBhIGZldyBvZiBpdHMgcHJvcGVydGllcyBoZXJlLgor
ICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIFJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlciA9IGMuY29uc3RydWN0b3I7CisgICAgfQorICB9KTsKKworfSwgJ0NhbiBn
ZXQgdGhlIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5Jyk7
CisKK2Z1bmN0aW9uIGZha2VSZWFkYWJsZVN0cmVhbSgpIHsKKyAgcmV0dXJuIHsKKyAgICBjYW5j
ZWwoKSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsgfSwKKyAgICBnZXRSZWFkZXIoKSB7IHJl
dHVybiBuZXcgUmVhZGFibGVTdHJlYW1SZWFkZXIobmV3IFJlYWRhYmxlU3RyZWFtKCkpOyB9LAor
ICAgIHBpcGVUaHJvdWdoKG9iaikgeyByZXR1cm4gb2JqLnJlYWRhYmxlOyB9LAorICAgIHBpcGVU
bygpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOyB9LAorICAgIHRlZSgpIHsgcmV0dXJuIFty
ZWFsUmVhZGFibGVTdHJlYW0oKSwgcmVhbFJlYWRhYmxlU3RyZWFtKCldOyB9CisgIH07Cit9CisK
K2Z1bmN0aW9uIHJlYWxSZWFkYWJsZVN0cmVhbSgpIHsKKyAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0
cmVhbSgpOworfQorCitmdW5jdGlvbiBmYWtlUmVhZGFibGVTdHJlYW1SZWFkZXIoKSB7CisgIHJl
dHVybiB7CisgICAgZ2V0IGNsb3NlZCgpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOyB9LAor
ICAgIGNhbmNlbCgpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOyB9LAorICAgIHJlYWQoKSB7
IHJldHVybiBQcm9taXNlLnJlc29sdmUoeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0p
OyB9LAorICAgIHJlbGVhc2VMb2NrKCkgeyByZXR1cm47IH0KKyAgfTsKK30KKworZnVuY3Rpb24g
ZmFrZVJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcigpIHsKKyAgcmV0dXJuIHsKKyAgICBjbG9zZSgp
IHsgfSwKKyAgICBlbnF1ZXVlKCkgeyB9LAorICAgIGVycm9yKCkgeyB9CisgIH07Cit9CisKK3By
b21pc2VfdGVzdCh0ID0+IHsKKworICByZXR1cm4gbWV0aG9kUmVqZWN0cyh0LCBSZWFkYWJsZVN0
cmVhbS5wcm90b3R5cGUsICdjYW5jZWwnLCBmYWtlUmVhZGFibGVTdHJlYW0oKSk7CisKK30sICdS
ZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUuY2FuY2VsIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsK
KwordGVzdCgoKSA9PiB7CisKKyAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtLnByb3RvdHlw
ZSwgJ2dldFJlYWRlcicsIGZha2VSZWFkYWJsZVN0cmVhbSgpKTsKKworfSwgJ1JlYWRhYmxlU3Ry
ZWFtLnByb3RvdHlwZS5nZXRSZWFkZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjaycpOworCit0ZXN0
KCgpID0+IHsKKworICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLCAndGVl
JywgZmFrZVJlYWRhYmxlU3RyZWFtKCkpOworCit9LCAnUmVhZGFibGVTdHJlYW0ucHJvdG90eXBl
LnRlZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVTdHJlYW1SZWFkZXIo
ZmFrZVJlYWRhYmxlU3RyZWFtKCkpLAorICAgICAgICAgICAgICAgICdDb25zdHJ1Y3RpbmcgYSBS
ZWFkYWJsZVN0cmVhbVJlYWRlciBzaG91bGQgdGhyb3cnKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFt
UmVhZGVyIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2sgb24gaXRzIGFyZ3VtZW50Jyk7CisKK3Byb21p
c2VfdGVzdCh0ID0+IHsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIGdldHRlclJlamVj
dHModCwgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLCAnY2xvc2VkJywgZmFrZVJlYWRh
YmxlU3RyZWFtUmVhZGVyKCkpLAorICAgIGdldHRlclJlamVjdHModCwgUmVhZGFibGVTdHJlYW1S
ZWFkZXIucHJvdG90eXBlLCAnY2xvc2VkJywgcmVhbFJlYWRhYmxlU3RyZWFtKCkpCisgIF0pOwor
Cit9LCAnUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLmNsb3NlZCBlbmZvcmNlcyBhIGJy
YW5kIGNoZWNrJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICByZXR1cm4gUHJvbWlzZS5h
bGwoWworICAgIG1ldGhvZFJlamVjdHModCwgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBl
LCAnY2FuY2VsJywgZmFrZVJlYWRhYmxlU3RyZWFtUmVhZGVyKCkpLAorICAgIG1ldGhvZFJlamVj
dHModCwgUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLCAnY2FuY2VsJywgcmVhbFJlYWRh
YmxlU3RyZWFtKCkpCisgIF0pOworCit9LCAnUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBl
LmNhbmNlbCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsK
KworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIG1ldGhvZFJlamVjdHModCwgUmVhZGFibGVT
dHJlYW1SZWFkZXIucHJvdG90eXBlLCAncmVhZCcsIGZha2VSZWFkYWJsZVN0cmVhbVJlYWRlcigp
KSwKKyAgICBtZXRob2RSZWplY3RzKHQsIFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZSwg
J3JlYWQnLCByZWFsUmVhZGFibGVTdHJlYW0oKSkKKyAgXSk7CisKK30sICdSZWFkYWJsZVN0cmVh
bVJlYWRlci5wcm90b3R5cGUucmVhZCBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7CisKK3Rlc3Qo
KCkgPT4geworCisgIG1ldGhvZFRocm93cyhSZWFkYWJsZVN0cmVhbVJlYWRlci5wcm90b3R5cGUs
ICdyZWxlYXNlTG9jaycsIGZha2VSZWFkYWJsZVN0cmVhbVJlYWRlcigpKTsKKyAgbWV0aG9kVGhy
b3dzKFJlYWRhYmxlU3RyZWFtUmVhZGVyLnByb3RvdHlwZSwgJ3JlbGVhc2VMb2NrJywgcmVhbFJl
YWRhYmxlU3RyZWFtKCkpOworCit9LCAnUmVhZGFibGVTdHJlYW1SZWFkZXIucHJvdG90eXBlLnJl
bGVhc2VMb2NrIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKKwordGVzdCgoKSA9PiB7CisKKyAg
YXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXIoZmFrZVJlYWRhYmxlU3RyZWFtKCkpLAorICAgICAgICAgICAgICAgICdDb25zdHJ1
Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgc2hvdWxkIHRocm93Jyk7CisKK30sICdS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgZW5mb3JjZXMgYSBicmFuZCBjaGVjayBvbiBpdHMgYXJn
dW1lbnQnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
KCksICgpID0+IG5ldyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIocmVhbFJlYWRhYmxlU3RyZWFt
KCkpLAorICAgICAgICAgICAgICAgICdDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXIgc2hvdWxkIHRocm93Jyk7CisKK30sICdSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgY2Fu
XCd0IGJlIGdpdmVuIGEgZnVsbHktY29uc3RydWN0ZWQgUmVhZGFibGVTdHJlYW0nKTsKKwordGVz
dCgoKSA9PiB7CisKKyAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5wcm90
b3R5cGUsICdjbG9zZScsIGZha2VSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIoKSk7CisKK30sICdS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLmNsb3NlIGVuZm9yY2VzIGEgYnJhbmQg
Y2hlY2snKTsKKwordGVzdCgoKSA9PiB7CisKKyAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFt
Q29udHJvbGxlci5wcm90b3R5cGUsICdlbnF1ZXVlJywgZmFrZVJlYWRhYmxlU3RyZWFtQ29udHJv
bGxlcigpKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5wcm90b3R5cGUuZW5xdWV1
ZSBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7CisKK3Rlc3QoKCkgPT4geworCisgIG1ldGhvZFRo
cm93cyhSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIucHJvdG90eXBlLCAnZXJyb3InLCBmYWtlUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyKCkpOworCit9LCAnUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
LnByb3RvdHlwZS5lcnJvciBlbmZvcmNlcyBhIGJyYW5kIGNoZWNrJyk7CisKK2RvbmUoKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NhbmNlbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9j
YW5jZWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5OTRiM2I5NDZlMjEzMDEzMzY2ODZmZDgw
NGM3M2FhYTJkMTJjZTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjQgQEAKKworUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxs
YXRpb246IGludGVncmF0aW9uIHRlc3Qgb24gYW4gaW5maW5pdGUgc3RyZWFtIGRlcml2ZWQgZnJv
bSBhIHJhbmRvbSBwdXNoIHNvdXJjZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9u
OiBjYW5jZWwocmVhc29uKSBzaG91bGQgcGFzcyB0aHJvdWdoIHRoZSBnaXZlbiByZWFzb24gdG8g
dGhlIHVuZGVybHlpbmcgc291cmNlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246
IGNhbmNlbCgpIG9uIGEgbG9ja2VkIHN0cmVhbSBzaG91bGQgZmFpbCBhbmQgbm90IGNhbGwgdGhl
IHVuZGVybHlpbmcgc291cmNlIGNhbmNlbCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0
aW9uOiBzaG91bGQgZnVsZmlsbCBwcm9taXNlIHdoZW4gY2FuY2VsIGNhbGxiYWNrIHdlbnQgZmlu
ZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiByZXR1cm5pbmcgYSB2YWx1ZSBm
cm9tIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBzaG91bGQgbm90IGFmZmVjdCB0aGUg
ZnVsZmlsbG1lbnQgdmFsdWUgb2YgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdz
IGNhbmNlbCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBzaG91bGQgcmVqZWN0
IHByb21pc2Ugd2hlbiBjYW5jZWwgY2FsbGJhY2sgcmFpc2VzIGFuIGV4Y2VwdGlvbiAKK1BBU1Mg
UmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2UncyBj
YW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0
aGUgc3RyZWFtJ3MgY2FuY2VsIHNob3VsZCBmdWxmaWxsIHdoZW4gdGhhdCBvbmUgZG9lcyAoMSkg
CitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVuZGVybHlpbmcgc291
cmNlJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJu
ZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBzaG91bGQgZnVsZmlsbCB3aGVuIHRoYXQgb25lIGRv
ZXMgKDIpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlmIHRoZSB1bmRlcmx5
aW5nIHNvdXJjZSdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRoZSBwcm9taXNl
IHJldHVybmVkIGJ5IHRoZSBzdHJlYW0ncyBjYW5jZWwgc2hvdWxkIHJlamVjdCB3aGVuIHRoYXQg
b25lIGRvZXMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsbGluZyBi
ZWZvcmUgc3RhcnQgZmluaXNoZXMgc2hvdWxkIHByZXZlbnQgcHVsbCgpIGZyb20gYmVpbmcgY2Fs
bGVkIAorRkFJTCBMb2FkIGNhbmNlbC5qcyB3aXRoIFNoYXJlZFdvcmtlciBhc3NlcnRfdW5yZWFj
aGVkOiBTaGFyZWRXb3JrZXIgaXMgdW5hdmFpbGFibGUgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2Rl
CitGQUlMIFVudGl0bGVkIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdu
YXZpZ2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdpc3RyYXRpb24nKQorUEFTUyBSZWFkYWJsZVN0
cmVhbSBjYW5jZWxsYXRpb246IGludGVncmF0aW9uIHRlc3Qgb24gYW4gaW5maW5pdGUgc3RyZWFt
IGRlcml2ZWQgZnJvbSBhIHJhbmRvbSBwdXNoIHNvdXJjZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0g
Y2FuY2VsbGF0aW9uOiBjYW5jZWwocmVhc29uKSBzaG91bGQgcGFzcyB0aHJvdWdoIHRoZSBnaXZl
biByZWFzb24gdG8gdGhlIHVuZGVybHlpbmcgc291cmNlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBj
YW5jZWxsYXRpb246IGNhbmNlbCgpIG9uIGEgbG9ja2VkIHN0cmVhbSBzaG91bGQgZmFpbCBhbmQg
bm90IGNhbGwgdGhlIHVuZGVybHlpbmcgc291cmNlIGNhbmNlbCAKK1BBU1MgUmVhZGFibGVTdHJl
YW0gY2FuY2VsbGF0aW9uOiBzaG91bGQgZnVsZmlsbCBwcm9taXNlIHdoZW4gY2FuY2VsIGNhbGxi
YWNrIHdlbnQgZmluZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiByZXR1cm5p
bmcgYSB2YWx1ZSBmcm9tIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBzaG91bGQgbm90
IGFmZmVjdCB0aGUgZnVsZmlsbG1lbnQgdmFsdWUgb2YgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkg
dGhlIHN0cmVhbSdzIGNhbmNlbCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBz
aG91bGQgcmVqZWN0IHByb21pc2Ugd2hlbiBjYW5jZWwgY2FsbGJhY2sgcmFpc2VzIGFuIGV4Y2Vw
dGlvbiAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWlu
ZyBzb3VyY2UncyBjYW5jZWwgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlLCB0aGUgcHJvbWlzZSBy
ZXR1cm5lZCBieSB0aGUgc3RyZWFtJ3MgY2FuY2VsIHNob3VsZCBmdWxmaWxsIHdoZW4gdGhhdCBv
bmUgZG9lcyAoMSkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhlIHVu
ZGVybHlpbmcgc291cmNlJ3MgY2FuY2VsIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHBy
b21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBzaG91bGQgZnVsZmlsbCB3aGVu
IHRoYXQgb25lIGRvZXMgKDIpIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGlm
IHRoZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2Us
IHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW0ncyBjYW5jZWwgc2hvdWxkIHJlamVj
dCB3aGVuIHRoYXQgb25lIGRvZXMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjog
Y2FuY2VsbGluZyBiZWZvcmUgc3RhcnQgZmluaXNoZXMgc2hvdWxkIHByZXZlbnQgcHVsbCgpIGZy
b20gYmVpbmcgY2FsbGVkIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW1zL2NhbmNlbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3Njc0MjlmMTcwMjkyMzZkYzRi
NDEwOGQ0NTQ0NTBjMDdlYzZhNGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5j
ZWwuaHRtbApAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vycy9yZXNvdXJj
ZXMvdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
dGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Jz
LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJjYW5jZWwuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KKyd1c2Ugc3RyaWN0JzsKK3dvcmtlcl90ZXN0KCdjYW5jZWwuanMnKTsKKzwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2FuY2VsLmpzIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvY2Fu
Y2VsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY1MDE0YzJjOTRkMjcxZTMxOGMwZWNjYjJjZjgwM2E2MDI1M2Ex
ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jYW5jZWwuanMKQEAgLTAsMCArMSwy
NDIgQEAKKyd1c2Ugc3RyaWN0JzsKKworaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgeworICBzZWxm
LmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzJyk7CisgIHNlbGYuaW1w
b3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzJyk7CisgIHNlbGYuaW1wb3J0U2Ny
aXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOworfQorCitwcm9taXNlX3Rlc3QoKCkg
PT4geworCisgIGNvbnN0IHJhbmRvbVNvdXJjZSA9IG5ldyBSYW5kb21QdXNoU291cmNlKCk7CisK
KyAgbGV0IGNhbmNlbGxhdGlvbkZpbmlzaGVkID0gZmFsc2U7CisgIGNvbnN0IHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICByYW5kb21Tb3VyY2Uub25kYXRh
ID0gYy5lbnF1ZXVlLmJpbmQoYyk7CisgICAgICByYW5kb21Tb3VyY2Uub25lbmQgPSBjLmNsb3Nl
LmJpbmQoYyk7CisgICAgICByYW5kb21Tb3VyY2Uub25lcnJvciA9IGMuZXJyb3IuYmluZChjKTsK
KyAgICB9LAorCisgICAgcHVsbCgpIHsKKyAgICAgIHJhbmRvbVNvdXJjZS5yZWFkU3RhcnQoKTsK
KyAgICB9LAorCisgICAgY2FuY2VsKCkgeworICAgICAgcmFuZG9tU291cmNlLnJlYWRTdG9wKCk7
CisgICAgICByYW5kb21Tb3VyY2Uub25lbmQoKTsKKworICAgICAgcmV0dXJuIG5ldyBQcm9taXNl
KHJlc29sdmUgPT4geworICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICBjYW5j
ZWxsYXRpb25GaW5pc2hlZCA9IHRydWU7CisgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9
LCAxKTsKKyAgICAgIH0pOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0
UmVhZGVyKCk7CisKKyAgLy8gV2UgY2FsbCBkZWxheSBtdWx0aXBsZSB0aW1lcyB0byBhdm9pZCBj
YW5jZWxsaW5nIHRvbyBlYXJseSBmb3IgdGhlCisgIC8vIHNvdXJjZSB0byBlbnF1ZXVlIGF0IGxl
YXN0IG9uZSBjaHVuay4KKyAgY29uc3QgY2FuY2VsID0gZGVsYXkoNSkudGhlbigoKSA9PiBkZWxh
eSg1KSkudGhlbigoKSA9PiBkZWxheSg1KSkudGhlbigoKSA9PiB7CisgICAgbGV0IGNhbmNlbFBy
b21pc2UgPSByZWFkZXIuY2FuY2VsKCk7CisgICAgYXNzZXJ0X2ZhbHNlKGNhbmNlbGxhdGlvbkZp
bmlzaGVkLCAnY2FuY2VsbGF0aW9uIGluIHNvdXJjZSBzaG91bGQgaGFwcGVuIGxhdGVyJyk7Cisg
ICAgcmV0dXJuIGNhbmNlbFByb21pc2U7CisgIH0pCisKKyAgcmV0dXJuIHJlYWRhYmxlU3RyZWFt
VG9BcnJheShycywgcmVhZGVyKS50aGVuKGNodW5rcyA9PiB7CisgICAgYXNzZXJ0X2dyZWF0ZXJf
dGhhbihjaHVua3MubGVuZ3RoLCAwLCAnYXQgbGVhc3Qgb25lIGNodW5rIHNob3VsZCBiZSByZWFk
Jyk7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaHVua3MubGVuZ3RoOyBpKyspIHsKKyAgICAg
IGFzc2VydF9lcXVhbHMoY2h1bmtzW2ldLmxlbmd0aCwgMTI4LCAnY2h1bmsgJyArIGkgKyAnIHNo
b3VsZCBoYXZlIDEyOCBieXRlcycpOworICAgIH0KKyAgICByZXR1cm4gY2FuY2VsOworICB9KS50
aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfdHJ1ZShjYW5jZWxsYXRpb25GaW5pc2hlZCwgJ2l0IHJl
dHVybnMgYSBwcm9taXNlIHRoYXQgaXMgZnVsZmlsbGVkIHdoZW4gdGhlIGNhbmNlbGxhdGlvbiBm
aW5pc2hlcycpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaW50
ZWdyYXRpb24gdGVzdCBvbiBhbiBpbmZpbml0ZSBzdHJlYW0gZGVyaXZlZCBmcm9tIGEgcmFuZG9t
IHB1c2ggc291cmNlJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGxldCByZWNvcmRlZFJlYXNvbjsK
KyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIGNhbmNlbChyZWFzb24pIHsK
KyAgICAgIHJlY29yZGVkUmVhc29uID0gcmVhc29uOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qg
cGFzc2VkUmVhc29uID0gbmV3IEVycm9yKCdTb3JyeSwgaXQganVzdCB3YXNuXCd0IG1lYW50IHRv
IGJlLicpOworICBycy5jYW5jZWwocGFzc2VkUmVhc29uKTsKKworICBhc3NlcnRfZXF1YWxzKHJl
Y29yZGVkUmVhc29uLCBwYXNzZWRSZWFzb24sCisgICAgJ3RoZSBlcnJvciBwYXNzZWQgdG8gdGhl
IHVuZGVybHlpbmcgc291cmNlXCdzIGNhbmNlbCBtZXRob2Qgc2hvdWxkIGVxdWFsIHRoZSBvbmUg
cGFzc2VkIHRvIHRoZSBzdHJlYW1cJ3MgY2FuY2VsJyk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBj
YW5jZWxsYXRpb246IGNhbmNlbChyZWFzb24pIHNob3VsZCBwYXNzIHRocm91Z2ggdGhlIGdpdmVu
IHJlYXNvbiB0byB0aGUgdW5kZXJseWluZyBzb3VyY2UnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+
IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgewor
ICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgICBjLmNsb3NlKCk7CisgICAgfSwKKyAgICBjYW5j
ZWwoKSB7CisgICAgICBhc3NlcnRfdW5yZWFjaGVkKCd1bmRlcmx5aW5nIHNvdXJjZSBjYW5jZWwo
KSBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQnKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0
IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIHJldHVybiBycy5jYW5jZWwoKS50aGVuKCgp
ID0+IHsKKyAgICBhc3NlcnRfdW5yZWFjaGVkKCdjYW5jZWwoKSBzaG91bGQgYmUgcmVqZWN0ZWQn
KTsKKyAgfSwgZSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhlLm5hbWUsICdUeXBlRXJyb3InLCAn
Y2FuY2VsKCkgc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggYSBUeXBlRXJyb3InKTsKKyAgfSkudGhl
bigoKSA9PiB7CisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgIH0pLnRoZW4ocmVzdWx0ID0+
IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdhJywgZG9uZTog
ZmFsc2UgfSwgJ3JlYWQoKSBzaG91bGQgc3RpbGwgd29yayBhZnRlciB0aGUgYXR0ZW1wdGVkIGNh
bmNlbCcpOworICAgIHJldHVybiByZWFkZXIuY2xvc2VkOworICB9KTsKKworfSwgJ1JlYWRhYmxl
U3RyZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsKCkgb24gYSBsb2NrZWQgc3RyZWFtIHNob3VsZCBm
YWlsIGFuZCBub3QgY2FsbCB0aGUgdW5kZXJseWluZyBzb3VyY2UgY2FuY2VsJyk7CisKK3Byb21p
c2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IGNhbmNlbFJlY2VpdmVkID0gZmFsc2U7CisgIGNvbnN0
IGNhbmNlbFJlYXNvbiA9IG5ldyBFcnJvcignSSBhbSB0aXJlZCBvZiB0aGlzIHN0cmVhbSwgSSBw
cmVmZXIgdG8gY2FuY2VsIGl0Jyk7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
KyAgICBjYW5jZWwocmVhc29uKSB7CisgICAgICBjYW5jZWxSZWNlaXZlZCA9IHRydWU7CisgICAg
ICBhc3NlcnRfZXF1YWxzKHJlYXNvbiwgY2FuY2VsUmVhc29uLCAnY2FuY2VsbGF0aW9uIHJlYXNv
biBnaXZlbiB0byB0aGUgdW5kZXJseWluZyBzb3VyY2Ugc2hvdWxkIGJlIGVxdWFsIHRvIHRoZSBv
bmUgcGFzc2VkJyk7CisgICAgfQorICB9KTsKKworICByZXR1cm4gcnMuY2FuY2VsKGNhbmNlbFJl
YXNvbikudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X3RydWUoY2FuY2VsUmVjZWl2ZWQpOworICB9
KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogc2hvdWxkIGZ1bGZpbGwgcHJv
bWlzZSB3aGVuIGNhbmNlbCBjYWxsYmFjayB3ZW50IGZpbmUnKTsKKworcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgY2FuY2VsKCkg
eworICAgICAgcmV0dXJuICdIZWxsbyc7CisgICAgfQorICB9KTsKKworICByZXR1cm4gcnMuY2Fu
Y2VsKCkudGhlbih2ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ2NhbmNl
bCgpIHJldHVybiB2YWx1ZSBzaG91bGQgYmUgZnVsZmlsbGVkIHdpdGggdW5kZWZpbmVkJyk7Cisg
IH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiByZXR1cm5pbmcgYSB2YWx1
ZSBmcm9tIHRoZSB1bmRlcmx5aW5nIHNvdXJjZVwncyBjYW5jZWwgc2hvdWxkIG5vdCBhZmZlY3Qg
dGhlIGZ1bGZpbGxtZW50IHZhbHVlIG9mIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJl
YW1cJ3MgY2FuY2VsJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgY29uc3QgdGhyb3du
RXJyb3IgPSBuZXcgRXJyb3IoJ3Rlc3QnKTsKKyAgbGV0IGNhbmNlbENhbGxlZCA9IGZhbHNlOwor
CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBjYW5jZWwoKSB7CisgICAg
ICBjYW5jZWxDYWxsZWQgPSB0cnVlOworICAgICAgdGhyb3cgdGhyb3duRXJyb3I7CisgICAgfQor
ICB9KTsKKworICByZXR1cm4gcnMuY2FuY2VsKCd0ZXN0JykudGhlbigoKSA9PiB7CisgICAgYXNz
ZXJ0X3VucmVhY2hlZCgnY2FuY2VsIHNob3VsZCByZWplY3QnKTsKKyAgfSwgZSA9PiB7CisgICAg
YXNzZXJ0X3RydWUoY2FuY2VsQ2FsbGVkKTsKKyAgICBhc3NlcnRfZXF1YWxzKGUsIHRocm93bkVy
cm9yKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IHNob3VsZCBy
ZWplY3QgcHJvbWlzZSB3aGVuIGNhbmNlbCBjYWxsYmFjayByYWlzZXMgYW4gZXhjZXB0aW9uJyk7
CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgY29uc3QgY2FuY2VsUmVhc29uID0gbmV3IEVy
cm9yKCd0ZXN0Jyk7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIGNh
bmNlbChlcnJvcikgeworICAgICAgYXNzZXJ0X2VxdWFscyhlcnJvciwgY2FuY2VsUmVhc29uKTsK
KyAgICAgIHJldHVybiBkZWxheSgxKTsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBycy5jYW5j
ZWwoY2FuY2VsUmVhc29uKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYg
dGhlIHVuZGVybHlpbmcgc291cmNlXCdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2Us
IHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW1cJ3MgY2FuY2VsIHNob3VsZCBmdWxm
aWxsIHdoZW4gdGhhdCBvbmUgZG9lcyAoMSknKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKwor
ICBsZXQgcmVzb2x2ZVNvdXJjZUNhbmNlbFByb21pc2U7CisgIGxldCBzb3VyY2VDYW5jZWxQcm9t
aXNlSGFzRnVsZmlsbGVkID0gZmFsc2U7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgIGNhbmNlbCgpIHsKKyAgICAgIGNvbnN0IHNvdXJjZUNhbmNlbFByb21pc2UgPSBu
ZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmVTb3VyY2VDYW5jZWxQcm9taXNlID0gcmVzb2x2
ZSk7CisKKyAgICAgIHNvdXJjZUNhbmNlbFByb21pc2UudGhlbigoKSA9PiB7CisgICAgICAgIHNv
dXJjZUNhbmNlbFByb21pc2VIYXNGdWxmaWxsZWQgPSB0cnVlOworICAgICAgfSk7CisKKyAgICAg
IHJldHVybiBzb3VyY2VDYW5jZWxQcm9taXNlOworICAgIH0KKyAgfSk7CisKKyAgc2V0VGltZW91
dCgoKSA9PiByZXNvbHZlU291cmNlQ2FuY2VsUHJvbWlzZSgnSGVsbG8nKSwgMSk7CisKKyAgcmV0
dXJuIHJzLmNhbmNlbCgpLnRoZW4odmFsdWUgPT4geworICAgIGFzc2VydF90cnVlKHNvdXJjZUNh
bmNlbFByb21pc2VIYXNGdWxmaWxsZWQsICdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIGJl
IGZ1bGZpbGxlZCBvbmx5IGFmdGVyIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSB1bmRlcmx5
aW5nIHNvdXJjZVwncyBjYW5jZWwnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmlu
ZWQsICdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIGZ1bGZpbGxlZCB3aXRoIHVuZGVm
aW5lZCcpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaWYgdGhl
IHVuZGVybHlpbmcgc291cmNlXCdzIGNhbmNlbCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UsIHRo
ZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW1cJ3MgY2FuY2VsIHNob3VsZCBmdWxmaWxs
IHdoZW4gdGhhdCBvbmUgZG9lcyAoMiknKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBs
ZXQgcmVqZWN0U291cmNlQ2FuY2VsUHJvbWlzZTsKKyAgbGV0IHNvdXJjZUNhbmNlbFByb21pc2VI
YXNSZWplY3RlZCA9IGZhbHNlOworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
KyAgICBjYW5jZWwoKSB7CisgICAgICBjb25zdCBzb3VyY2VDYW5jZWxQcm9taXNlID0gbmV3IFBy
b21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gcmVqZWN0U291cmNlQ2FuY2VsUHJvbWlzZSA9IHJl
amVjdCk7CisKKyAgICAgIHNvdXJjZUNhbmNlbFByb21pc2UuY2F0Y2goKCkgPT4geworICAgICAg
ICBzb3VyY2VDYW5jZWxQcm9taXNlSGFzUmVqZWN0ZWQgPSB0cnVlOworICAgICAgfSk7CisKKyAg
ICAgIHJldHVybiBzb3VyY2VDYW5jZWxQcm9taXNlOworICAgIH0KKyAgfSk7CisKKyAgY29uc3Qg
ZXJyb3JJbkNhbmNlbCA9IG5ldyBFcnJvcignU29ycnksIGl0IGp1c3Qgd2FzblwndCBtZWFudCB0
byBiZS4nKTsKKworICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdFNvdXJjZUNhbmNlbFByb21pc2Uo
ZXJyb3JJbkNhbmNlbCksIDEpOworCisgIHJldHVybiBycy5jYW5jZWwoKS50aGVuKCgpID0+IHsK
KyAgICBhc3NlcnRfdW5yZWFjaGVkKCdjYW5jZWwoKSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIHJl
amVjdGVkJyk7CisgIH0sIHIgPT4geworICAgIGFzc2VydF90cnVlKHNvdXJjZUNhbmNlbFByb21p
c2VIYXNSZWplY3RlZCwgJ2NhbmNlbCgpIHJldHVybiB2YWx1ZSBzaG91bGQgYmUgcmVqZWN0ZWQg
b25seSBhZnRlciB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgdW5kZXJseWluZyBzb3VyY2Vc
J3MgY2FuY2VsJyk7CisgICAgYXNzZXJ0X2VxdWFscyhyLCBlcnJvckluQ2FuY2VsLCAnY2FuY2Vs
KCkgcmV0dXJuIHZhbHVlIHNob3VsZCBiZSByZWplY3RlZCB3aXRoIHRoZSB1bmRlcmx5aW5nIHNv
dXJjZVwncyByZWplY3Rpb24gcmVhc29uJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0g
Y2FuY2VsbGF0aW9uOiBpZiB0aGUgdW5kZXJseWluZyBzb3VyY2VcJ3MgY2FuY2VsIG1ldGhvZCBy
ZXR1cm5zIGEgcHJvbWlzZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbVwncyBj
YW5jZWwgc2hvdWxkIHJlamVjdCB3aGVuIHRoYXQgb25lIGRvZXMnKTsKKworcHJvbWlzZV90ZXN0
KCgpID0+IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQo
KSB7CisgICAgICByZXR1cm4gbmV3IFByb21pc2UoKCkgPT4ge30pOworICAgIH0sCisgICAgcHVs
bCgpIHsKKyAgICAgIGFzc2VydF91bnJlYWNoZWQoJ3B1bGwgc2hvdWxkIG5vdCBoYXZlIGJlZW4g
Y2FsbGVkJyk7CisgICAgfQorICB9KTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoW3JzLmNhbmNl
bCgpLCBycy5nZXRSZWFkZXIoKS5jbG9zZWRdKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIGNhbmNl
bGxhdGlvbjogY2FuY2VsbGluZyBiZWZvcmUgc3RhcnQgZmluaXNoZXMgc2hvdWxkIHByZXZlbnQg
cHVsbCgpIGZyb20gYmVpbmcgY2FsbGVkJyk7CisKK2RvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmE0ZTFkZjk5MWMxNzc4ZDRjZTNjMTliOWExNzRlNjc3NzFhODg2Nwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50
ZWdyYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKKworUEFTUyBDYW4gY29uc3Ry
dWN0IGEgcmVhZGFibGUgc3RyZWFtIHdpdGggYSB2YWxpZCBDb3VudFF1ZXVpbmdTdHJhdGVneSAK
K1BBU1MgQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIncyBkZXNp
cmVkU2l6ZSBwcm9wZXJ0eSAoSFdNID0gMCkgCitQQVNTIENvcnJlY3RseSBnb3Zlcm5zIGEgUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyJ3MgZGVzaXJlZFNpemUgcHJvcGVydHkgKEhXTSA9IDEpIAor
UEFTUyBDb3JyZWN0bHkgZ292ZXJucyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcidzIGRlc2ly
ZWRTaXplIHByb3BlcnR5IChIV00gPSA0KSAKK0ZBSUwgTG9hZCBjb3VudC1xdWV1aW5nLXN0cmF0
ZWd5LWludGVncmF0aW9uLmpzIHdpdGggU2hhcmVkV29ya2VyIGFzc2VydF91bnJlYWNoZWQ6IFNo
YXJlZFdvcmtlciBpcyB1bmF2YWlsYWJsZSBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK0ZBSUwg
VW50aXRsZWQgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ25hdmlnYXRv
ci5zZXJ2aWNlV29ya2VyLmdldFJlZ2lzdHJhdGlvbicpCitQQVNTIENhbiBjb25zdHJ1Y3QgYSBy
ZWFkYWJsZSBzdHJlYW0gd2l0aCBhIHZhbGlkIENvdW50UXVldWluZ1N0cmF0ZWd5IAorUEFTUyBD
b3JyZWN0bHkgZ292ZXJucyBhIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcidzIGRlc2lyZWRTaXpl
IHByb3BlcnR5IChIV00gPSAwKSAKK1BBU1MgQ29ycmVjdGx5IGdvdmVybnMgYSBSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXIncyBkZXNpcmVkU2l6ZSBwcm9wZXJ0eSAoSFdNID0gMSkgCitQQVNTIENv
cnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyJ3MgZGVzaXJlZFNpemUg
cHJvcGVydHkgKEhXTSA9IDQpIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1
aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5n
LXN0cmF0ZWd5LWludGVncmF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmMzODE2NmMzMDM1ODg4NjVh
ZDliNDRkYTFhOTg5OWMxZmM3NmQ2NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2Nv
dW50LXF1ZXVpbmctc3RyYXRlZ3ktaW50ZWdyYXRpb24uaHRtbApAQCAtMCwwICsxLDEyIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3Jp
cHQ+CisKKzxzY3JpcHQgc3JjPSJjb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7Cit3b3JrZXJfdGVzdCgnY291bnQt
cXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5qcycpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtcy9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWludGVncmF0aW9uLmpzIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mYjlhMWFhMmJhNjMxZWRiYjlkZTE4M2YxMDY2ZTYzYTM5Mjc3ZmNkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbXMvY291bnQtcXVldWluZy1zdHJhdGVneS1pbnRlZ3JhdGlvbi5qcwpA
QCAtMCwwICsxLDIxMyBAQAorJ3VzZSBzdHJpY3QnOworCitpZiAoc2VsZi5pbXBvcnRTY3JpcHRz
KSB7CisgIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOwor
fQorCit0ZXN0KCgpID0+IHsKKworICBuZXcgUmVhZGFibGVTdHJlYW0oe30sIG5ldyBDb3VudFF1
ZXVpbmdTdHJhdGVneSh7IGhpZ2hXYXRlck1hcms6IDQgfSkpOworCit9LCAnQ2FuIGNvbnN0cnVj
dCBhIHJlYWRhYmxlIHN0cmVhbSB3aXRoIGEgdmFsaWQgQ291bnRRdWV1aW5nU3RyYXRlZ3knKTsK
KworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMg
PSBuZXcgUmVhZGFibGVTdHJlYW0oCisgICAgeworICAgICAgc3RhcnQoYykgeworICAgICAgICBj
b250cm9sbGVyID0gYzsKKyAgICAgIH0KKyAgICB9LAorICAgIG5ldyBDb3VudFF1ZXVpbmdTdHJh
dGVneSh7IGhpZ2hXYXRlck1hcms6IDAgfSkKKyAgKTsKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0
UmVhZGVyKCk7CisKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAn
MCByZWFkcywgMCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDAnKTsKKyAgY29udHJv
bGxlci5lbnF1ZXVlKCdhJyk7CisgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6
ZSwgLTEsICcwIHJlYWRzLCAxIGVucXVldWU6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMScpOwor
ICBjb250cm9sbGVyLmVucXVldWUoJ2InKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRl
c2lyZWRTaXplLCAtMiwgJzAgcmVhZHMsIDIgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBi
ZSAtMicpOworICBjb250cm9sbGVyLmVucXVldWUoJ2MnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250
cm9sbGVyLmRlc2lyZWRTaXplLCAtMywgJzAgcmVhZHMsIDMgZW5xdWV1ZXM6IGRlc2lyZWRTaXpl
IHNob3VsZCBiZSAtMycpOworICBjb250cm9sbGVyLmVucXVldWUoJ2QnKTsKKyAgYXNzZXJ0X2Vx
dWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtNCwgJzAgcmVhZHMsIDQgZW5xdWV1ZXM6IGRl
c2lyZWRTaXplIHNob3VsZCBiZSAtNCcpOworCisgIHJldHVybiByZWFkZXIucmVhZCgpCisgICAg
LnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2
YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJzFz
dCByZWFkIGdpdmVzIGJhY2sgdGhlIDFzdCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRh
aW5zIDMgY2h1bmtzKScpOworICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgICAgfSkKKyAg
ICAudGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7
IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAn
Mm5kIHJlYWQgZ2l2ZXMgYmFjayB0aGUgMm5kIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29u
dGFpbnMgMiBjaHVua3MpJyk7CisgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgICB9KQor
ICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQs
IHsgdmFsdWU6ICdjJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICczcmQgcmVhZCBnaXZlcyBiYWNrIHRoZSAzcmQgY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBj
b250YWlucyAxIGNodW5rKScpOworCisgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVz
aXJlZFNpemUsIC0xLCAnMyByZWFkcywgNCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJl
IC0xJyk7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2UnKTsKKyAgICAgIGFzc2VydF9lcXVh
bHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTIsICczIHJlYWRzLCA1IGVucXVldWVzOiBkZXNp
cmVkU2l6ZSBzaG91bGQgYmUgLTInKTsKKworICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7Cisg
ICAgfSkKKyAgICAudGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMo
cmVzdWx0LCB7IHZhbHVlOiAnZCcsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnNHRoIHJlYWQgZ2l2ZXMgYmFjayB0aGUgNHRoIGNodW5rIGVucXVldWVkIChxdWV1
ZSBub3cgY29udGFpbnMgMSBjaHVua3MpJyk7CisgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsK
KworICAgIH0pLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJl
c3VsdCwgeyB2YWx1ZTogJ2UnLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJzV0aCByZWFkIGdpdmVzIGJhY2sgdGhlIDV0aCBjaHVuayBlbnF1ZXVlZCAocXVldWUg
bm93IGNvbnRhaW5zIDAgY2h1bmtzKScpOworCisgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xs
ZXIuZGVzaXJlZFNpemUsIDAsICc1IHJlYWRzLCA1IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91
bGQgYmUgMCcpOworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdmJyk7CisgICAgICBhc3NlcnRf
ZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnNSByZWFkcywgNiBlbnF1ZXVlczog
ZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7CisgICAgICBjb250cm9sbGVyLmVucXVldWUoJ2cn
KTsKKyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgLTIsICc1IHJl
YWRzLCA3IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTInKTsKKyAgICB9KTsKKwor
fSwgJ0NvcnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyXCdzIGRlc2ly
ZWRTaXplIHByb3BlcnR5IChIV00gPSAwKScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisg
IGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgKKyAgICB7
CisgICAgICBzdGFydChjKSB7CisgICAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgfQorICAg
IH0sCisgICAgbmV3IENvdW50UXVldWluZ1N0cmF0ZWd5KHsgaGlnaFdhdGVyTWFyazogMSB9KQor
ICApOworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICBhc3NlcnRfZXF1YWxz
KGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEsICcwIHJlYWRzLCAwIGVucXVldWVzOiBkZXNpcmVk
U2l6ZSBzaG91bGQgYmUgMScpOworICBjb250cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgYXNzZXJ0
X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnMCByZWFkcywgMSBlbnF1ZXVlOiBk
ZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCcpOworICBjb250cm9sbGVyLmVucXVldWUoJ2InKTsKKyAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzAgcmVhZHMsIDIgZW5x
dWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMScpOworICBjb250cm9sbGVyLmVucXVldWUo
J2MnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMiwgJzAgcmVh
ZHMsIDMgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMicpOworICBjb250cm9sbGVy
LmVucXVldWUoJ2QnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAt
MywgJzAgcmVhZHMsIDQgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMycpOworCisg
IHJldHVybiByZWFkZXIucmVhZCgpCisgICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2Vy
dF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJzFzdCByZWFkIGdpdmVzIGJhY2sgdGhlIDFzdCBjaHVu
ayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDMgY2h1bmtzKScpOworICAgICAgcmV0dXJu
IHJlYWRlci5yZWFkKCk7CisgICAgfSkKKyAgICAudGhlbihyZXN1bHQgPT4geworICAgICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnMm5kIHJlYWQgZ2l2ZXMgYmFjayB0aGUgMm5kIGNo
dW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMiBjaHVua3MpJyk7CisgICAgICByZXR1
cm4gcmVhZGVyLnJlYWQoKTsKKyAgICB9KQorICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBh
c3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6ICdjJywgZG9uZTogZmFsc2UgfSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICczcmQgcmVhZCBnaXZlcyBiYWNrIHRoZSAzcmQg
Y2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBjb250YWlucyAxIGNodW5rKScpOworCisgICAgICBh
c3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICczIHJlYWRzLCA0IGVucXVl
dWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMCcpOworICAgICAgY29udHJvbGxlci5lbnF1ZXVl
KCdlJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAn
MyByZWFkcywgNSBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7CisKKyAgICAg
IHJldHVybiByZWFkZXIucmVhZCgpOworICAgIH0pCisgICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAg
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2QnLCBkb25lOiBmYWxz
ZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJzR0aCByZWFkIGdpdmVzIGJhY2sgdGhl
IDR0aCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93IGNvbnRhaW5zIDEgY2h1bmtzKScpOworICAg
ICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgICAgfSkKKyAgICAudGhlbihyZXN1bHQgPT4gewor
ICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiAnZScsIGRvbmU6IGZh
bHNlIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnNXRoIHJlYWQgZ2l2ZXMgYmFjayB0
aGUgNXRoIGNodW5rIGVucXVldWVkIChxdWV1ZSBub3cgY29udGFpbnMgMCBjaHVua3MpJyk7CisK
KyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJzUgcmVhZHMs
IDUgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAxJyk7CisgICAgICBjb250cm9sbGVy
LmVucXVldWUoJ2YnKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6
ZSwgMCwgJzUgcmVhZHMsIDYgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAwJyk7Cisg
ICAgICBjb250cm9sbGVyLmVucXVldWUoJ2cnKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJv
bGxlci5kZXNpcmVkU2l6ZSwgLTEsICc1IHJlYWRzLCA3IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBz
aG91bGQgYmUgLTEnKTsKKyAgICB9KTsKKworfSwgJ0NvcnJlY3RseSBnb3Zlcm5zIGEgUmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyXCdzIGRlc2lyZWRTaXplIHByb3BlcnR5IChIV00gPSAxKScpOwor
Citwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSgKKyAgICB7CisgICAgICBzdGFydChjKSB7CisgICAgICAgIGNv
bnRyb2xsZXIgPSBjOworICAgICAgfQorICAgIH0sCisgICAgbmV3IENvdW50UXVldWluZ1N0cmF0
ZWd5KHsgaGlnaFdhdGVyTWFyazogNCB9KQorICApOworICBjb25zdCByZWFkZXIgPSBycy5nZXRS
ZWFkZXIoKTsKKworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDQsICcw
IHJlYWRzLCAwIGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgNCcpOworICBjb250cm9s
bGVyLmVucXVldWUoJ2EnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXpl
LCAzLCAnMCByZWFkcywgMSBlbnF1ZXVlOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMycpOworICBj
b250cm9sbGVyLmVucXVldWUoJ2InKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2ly
ZWRTaXplLCAyLCAnMCByZWFkcywgMiBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxkIGJlIDIn
KTsKKyAgY29udHJvbGxlci5lbnF1ZXVlKCdjJyk7CisgIGFzc2VydF9lcXVhbHMoY29udHJvbGxl
ci5kZXNpcmVkU2l6ZSwgMSwgJzAgcmVhZHMsIDMgZW5xdWV1ZXM6IGRlc2lyZWRTaXplIHNob3Vs
ZCBiZSAxJyk7CisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnZCcpOworICBhc3NlcnRfZXF1YWxzKGNv
bnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICcwIHJlYWRzLCA0IGVucXVldWVzOiBkZXNpcmVkU2l6
ZSBzaG91bGQgYmUgMCcpOworICBjb250cm9sbGVyLmVucXVldWUoJ2UnKTsKKyAgYXNzZXJ0X2Vx
dWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzAgcmVhZHMsIDUgZW5xdWV1ZXM6IGRl
c2lyZWRTaXplIHNob3VsZCBiZSAtMScpOworICBjb250cm9sbGVyLmVucXVldWUoJ2YnKTsKKyAg
YXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMiwgJzAgcmVhZHMsIDYgZW5x
dWV1ZXM6IGRlc2lyZWRTaXplIHNob3VsZCBiZSAtMicpOworCisKKyAgcmVhZGVyLnJlYWQoKQor
ICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQs
IHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICcxc3QgcmVhZCBnaXZlcyBiYWNrIHRoZSAxc3QgY2h1bmsgZW5xdWV1ZWQgKHF1ZXVlIG5vdyBj
b250YWlucyA1IGNodW5rcyknKTsKKyAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICAgIH0p
CisgICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3Vs
dCwgeyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJzJuZCByZWFkIGdpdmVzIGJhY2sgdGhlIDJuZCBjaHVuayBlbnF1ZXVlZCAocXVldWUgbm93
IGNvbnRhaW5zIDQgY2h1bmtzKScpOworCisgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIu
ZGVzaXJlZFNpemUsIDAsICcyIHJlYWRzLCA2IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQg
YmUgMCcpOworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdnJyk7CisgICAgICBhc3NlcnRfZXF1
YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIC0xLCAnMiByZWFkcywgNyBlbnF1ZXVlczogZGVz
aXJlZFNpemUgc2hvdWxkIGJlIC0xJyk7CisKKyAgICAgIHJldHVybiByZWFkZXIucmVhZCgpOwor
ICAgIH0pCisgICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxz
KHJlc3VsdCwgeyB2YWx1ZTogJ2MnLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJzNyZCByZWFkIGdpdmVzIGJhY2sgdGhlIDNyZCBjaHVuayBlbnF1ZXVlZCAocXVl
dWUgbm93IGNvbnRhaW5zIDQgY2h1bmtzKScpOworICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7
CisgICAgfSkKKyAgICAudGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVh
bHMocmVzdWx0LCB7IHZhbHVlOiAnZCcsIGRvbmU6IGZhbHNlIH0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnNHRoIHJlYWQgZ2l2ZXMgYmFjayB0aGUgNHRoIGNodW5rIGVucXVldWVkIChx
dWV1ZSBub3cgY29udGFpbnMgMyBjaHVua3MpJyk7CisgICAgICByZXR1cm4gcmVhZGVyLnJlYWQo
KTsKKyAgICB9KQorICAgIC50aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2Vx
dWFscyhyZXN1bHQsIHsgdmFsdWU6ICdlJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICc1dGggcmVhZCBnaXZlcyBiYWNrIHRoZSA1dGggY2h1bmsgZW5xdWV1ZWQg
KHF1ZXVlIG5vdyBjb250YWlucyAyIGNodW5rcyknKTsKKyAgICAgIHJldHVybiByZWFkZXIucmVh
ZCgpOworICAgIH0pCisgICAgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3Rf
ZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2YnLCBkb25lOiBmYWxzZSB9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJzZ0aCByZWFkIGdpdmVzIGJhY2sgdGhlIDZ0aCBjaHVuayBlbnF1ZXVl
ZCAocXVldWUgbm93IGNvbnRhaW5zIDAgY2h1bmtzKScpOworCisgICAgICBhc3NlcnRfZXF1YWxz
KGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDMsICc2IHJlYWRzLCA3IGVucXVldWVzOiBkZXNpcmVk
U2l6ZSBzaG91bGQgYmUgMycpOworICAgICAgY29udHJvbGxlci5lbnF1ZXVlKCdoJyk7CisgICAg
ICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDIsICc2IHJlYWRzLCA4IGVu
cXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMicpOworICAgICAgY29udHJvbGxlci5lbnF1
ZXVlKCdpJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDEs
ICc2IHJlYWRzLCA5IGVucXVldWVzOiBkZXNpcmVkU2l6ZSBzaG91bGQgYmUgMScpOworICAgICAg
Y29udHJvbGxlci5lbnF1ZXVlKCdqJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIu
ZGVzaXJlZFNpemUsIDAsICc2IHJlYWRzLCAxMCBlbnF1ZXVlczogZGVzaXJlZFNpemUgc2hvdWxk
IGJlIDAnKTsKKyAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnaycpOworICAgICAgYXNzZXJ0X2Vx
dWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAtMSwgJzYgcmVhZHMsIDExIGVucXVldWVzOiBk
ZXNpcmVkU2l6ZSBzaG91bGQgYmUgLTEnKTsKKyAgICB9KTsKKworfSwgJ0NvcnJlY3RseSBnb3Zl
cm5zIGEgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyXCdzIGRlc2lyZWRTaXplIHByb3BlcnR5IChI
V00gPSA0KScpOworCitkb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNv
bGxlY3Rpb24tMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24t
MS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmI2NTJiODUyZjA3ZTVhYmM1NmY1MjEwNWFjYzE4
NjA1ZGNiODMxOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVj
dGlvbi0xLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKKworUEFTUyBSZWFkYWJsZVN0cmVh
bUNvbnRyb2xsZXIgbWV0aG9kcyBzaG91bGQgY29udGludWUgd29ya2luZyBwcm9wZXJseSB3aGVu
IHNjcmlwdHMgbG9zZSB0aGVpciByZWZlcmVuY2UgdG8gdGhlIHJlYWRhYmxlIHN0cmVhbSAKK1BB
U1MgUmVhZGFibGVTdHJlYW0gY2xvc2VkIHByb21pc2Ugc2hvdWxkIGZ1bGZpbGwgZXZlbiBpZiB0
aGUgc3RyZWFtIGFuZCByZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9zdCAKK1BBU1MgUmVhZGFi
bGVTdHJlYW0gY2xvc2VkIHByb21pc2Ugc2hvdWxkIHJlamVjdCBldmVuIGlmIHN0cmVhbSBhbmQg
cmVhZGVyIEpTIHJlZmVyZW5jZXMgYXJlIGxvc3QgCitQQVNTIEdhcmJhZ2UtY29sbGVjdGluZyBh
IFJlYWRhYmxlU3RyZWFtUmVhZGVyIHNob3VsZCBub3QgdW5sb2NrIGl0cyBzdHJlYW0gCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi0xLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24tMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyNjA1NTJlYTBlMjcx
NWQ4ZDQ5Yjg3N2I0NmNiZDA5ZWFlN2Q0OWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9nYXJiYWdlLWNvbGxlY3Rpb24tMS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIj48L3NjcmlwdD4KKworPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwhLS0gRmls
ZSB0byBiZSByZW1vdmVkIG9uY2UgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjQzNiBpcyByZXNvbHZlZCAtLT4KKzxzY3JpcHQgc3JjPSJnYXJiYWdlLWNvbGxlY3Rp
b24uanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0
aW9uLTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLTItZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1N2QwY2NkNzc5MzVlOGQyN2U3ZWFiYWZkNjAxZWUxY2Nh
MzY3YTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24t
Mi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgUmVhZGFibGVTdHJlYW1Db250
cm9sbGVyIG1ldGhvZHMgc2hvdWxkIGNvbnRpbnVlIHdvcmtpbmcgcHJvcGVybHkgd2hlbiBzY3Jp
cHRzIGxvc2UgdGhlaXIgcmVmZXJlbmNlIHRvIHRoZSByZWFkYWJsZSBzdHJlYW0gCitQQVNTIFJl
YWRhYmxlU3RyZWFtIGNsb3NlZCBwcm9taXNlIHNob3VsZCBmdWxmaWxsIGV2ZW4gaWYgdGhlIHN0
cmVhbSBhbmQgcmVhZGVyIEpTIHJlZmVyZW5jZXMgYXJlIGxvc3QgCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi0yLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdl
LWNvbGxlY3Rpb24tMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiZTNhNGUxZjY4Yzg5ZjcxODJlM2NhMDRk
ODUxMGUzMWFiMGUwMWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNv
bGxlY3Rpb24tMi5odG1sCkBAIC0wLDAgKzEsNDggQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXJz
L3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzwhLS0gRmlsZSB0byBiZSByZW1v
dmVkIG9uY2UgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjQzNiBp
cyByZXNvbHZlZCAtLT4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7CisKK3Byb21pc2VfdGVzdCgo
KSA9PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAg
c3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKworICBnYXJi
YWdlQ29sbGVjdCgpOworCisgIHJldHVybiBkZWxheSg1MCkudGhlbigoKSA9PiB7CisgICAgY29u
dHJvbGxlci5jbG9zZSgpOworICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9
PiBjb250cm9sbGVyLmNsb3NlKCksICdjbG9zZSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IgdGhl
IHNlY29uZCB0aW1lJyk7CisgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+
IGNvbnRyb2xsZXIuZXJyb3IoKSwgJ2Vycm9yIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciBvbiBh
IGNsb3NlZCBzdHJlYW0nKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIg
bWV0aG9kcyBzaG91bGQgY29udGludWUgd29ya2luZyBwcm9wZXJseSB3aGVuIHNjcmlwdHMgbG9z
ZSB0aGVpciByZWZlcmVuY2UgdG8gdGhlICcgKworICAgJ3JlYWRhYmxlIHN0cmVhbScpOworCitw
cm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBjb250cm9sbGVyOworCisgIGNvbnN0IGNsb3Nl
ZFByb21pc2UgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNv
bnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOworCisgIGdhcmJh
Z2VDb2xsZWN0KCk7CisKKyAgcmV0dXJuIGRlbGF5KDUwKS50aGVuKCgpID0+IGNvbnRyb2xsZXIu
Y2xvc2UoKSkudGhlbigoKSA9PiBjbG9zZWRQcm9taXNlKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFt
IGNsb3NlZCBwcm9taXNlIHNob3VsZCBmdWxmaWxsIGV2ZW4gaWYgdGhlIHN0cmVhbSBhbmQgcmVh
ZGVyIEpTIHJlZmVyZW5jZXMgYXJlIGxvc3QnKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbXMvZ2FyYmFnZS1jb2xsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dh
cmJhZ2UtY29sbGVjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmUxYzMzMDA5NmJkY2Uy
YjA5NTBhZjlkNTdkNjU2MzE2YTFkOTI0MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2dhcmJhZ2UtY29sbGVjdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDM3OiBUZXN0cyBhcmUgcnVubmluZyB3aXRob3V0IHRoZSBhYmlsaXR5
IHRvIGRvIG1hbnVhbCBnYXJiYWdlIGNvbGxlY3Rpb24uIFRoZXkgd2lsbCBzdGlsbCB3b3JrLCBi
dXQgY292ZXJhZ2Ugd2lsbCBiZSBzdWJvcHRpbWFsLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDM3
OiBUZXN0cyBhcmUgcnVubmluZyB3aXRob3V0IHRoZSBhYmlsaXR5IHRvIGRvIG1hbnVhbCBnYXJi
YWdlIGNvbGxlY3Rpb24uIFRoZXkgd2lsbCBzdGlsbCB3b3JrLCBidXQgY292ZXJhZ2Ugd2lsbCBi
ZSBzdWJvcHRpbWFsLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDM3OiBUZXN0cyBhcmUgcnVubmlu
ZyB3aXRob3V0IHRoZSBhYmlsaXR5IHRvIGRvIG1hbnVhbCBnYXJiYWdlIGNvbGxlY3Rpb24uIFRo
ZXkgd2lsbCBzdGlsbCB3b3JrLCBidXQgY292ZXJhZ2Ugd2lsbCBiZSBzdWJvcHRpbWFsLgorQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDM3OiBUZXN0cyBhcmUgcnVubmluZyB3aXRob3V0IHRoZSBhYmls
aXR5IHRvIGRvIG1hbnVhbCBnYXJiYWdlIGNvbGxlY3Rpb24uIFRoZXkgd2lsbCBzdGlsbCB3b3Jr
LCBidXQgY292ZXJhZ2Ugd2lsbCBiZSBzdWJvcHRpbWFsLgorCitQQVNTIFJlYWRhYmxlU3RyZWFt
Q29udHJvbGxlciBtZXRob2RzIHNob3VsZCBjb250aW51ZSB3b3JraW5nIHByb3Blcmx5IHdoZW4g
c2NyaXB0cyBsb3NlIHRoZWlyIHJlZmVyZW5jZSB0byB0aGUgcmVhZGFibGUgc3RyZWFtIAorUEFT
UyBSZWFkYWJsZVN0cmVhbSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgZnVsZmlsbCBldmVuIGlmIHRo
ZSBzdHJlYW0gYW5kIHJlYWRlciBKUyByZWZlcmVuY2VzIGFyZSBsb3N0IAorUEFTUyBSZWFkYWJs
ZVN0cmVhbSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgcmVqZWN0IGV2ZW4gaWYgc3RyZWFtIGFuZCBy
ZWFkZXIgSlMgcmVmZXJlbmNlcyBhcmUgbG9zdCAKK1BBU1MgR2FyYmFnZS1jb2xsZWN0aW5nIGEg
UmVhZGFibGVTdHJlYW1SZWFkZXIgc2hvdWxkIG5vdCB1bmxvY2sgaXRzIHN0cmVhbSAKK0ZBSUwg
TG9hZCBnYXJiYWdlLWNvbGxlY3Rpb24uanMgd2l0aCBTaGFyZWRXb3JrZXIgYXNzZXJ0X3VucmVh
Y2hlZDogU2hhcmVkV29ya2VyIGlzIHVuYXZhaWxhYmxlIFJlYWNoZWQgdW5yZWFjaGFibGUgY29k
ZQorRkFJTCBVbnRpdGxlZCB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAn
bmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuZ2V0UmVnaXN0cmF0aW9uJykKK1BBU1MgUmVhZGFibGVT
dHJlYW1Db250cm9sbGVyIG1ldGhvZHMgc2hvdWxkIGNvbnRpbnVlIHdvcmtpbmcgcHJvcGVybHkg
d2hlbiBzY3JpcHRzIGxvc2UgdGhlaXIgcmVmZXJlbmNlIHRvIHRoZSByZWFkYWJsZSBzdHJlYW0g
CitQQVNTIFJlYWRhYmxlU3RyZWFtIGNsb3NlZCBwcm9taXNlIHNob3VsZCBmdWxmaWxsIGV2ZW4g
aWYgdGhlIHN0cmVhbSBhbmQgcmVhZGVyIEpTIHJlZmVyZW5jZXMgYXJlIGxvc3QgCitQQVNTIFJl
YWRhYmxlU3RyZWFtIGNsb3NlZCBwcm9taXNlIHNob3VsZCByZWplY3QgZXZlbiBpZiBzdHJlYW0g
YW5kIHJlYWRlciBKUyByZWZlcmVuY2VzIGFyZSBsb3N0IAorUEFTUyBHYXJiYWdlLWNvbGxlY3Rp
bmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBzaG91bGQgbm90IHVubG9jayBpdHMgc3RyZWFtIAor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nYXJiYWdlLWNvbGxlY3Rpb24uaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzOGVkMjA1MzRjMjA2
NWQ1N2FmZjJjZjRhODRjNjdhOTU4ZGEyNGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy9nYXJiYWdlLWNvbGxlY3Rpb24uaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2Vycy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3JpcHQ+CisKKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iZ2FyYmFnZS1jb2xsZWN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisndXNlIHN0cmlj
dCc7Cit3b3JrZXJfdGVzdCgnZ2FyYmFnZS1jb2xsZWN0aW9uLmpzJyk7Cis8L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dhcmJhZ2UtY29sbGVjdGlvbi5qcyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1z
L2dhcmJhZ2UtY29sbGVjdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYjAwYzk0NmJiYjUyYjIzZWY2ZWQ4
ZmNkMzQwZGI5MGZlMzlkZTgxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2FyYmFn
ZS1jb2xsZWN0aW9uLmpzCkBAIC0wLDAgKzEsNzUgQEAKKyd1c2Ugc3RyaWN0JzsKKworaWYgKHNl
bGYuaW1wb3J0U2NyaXB0cykgeworICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy90
ZXN0LXV0aWxzLmpzJyk7CisgIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcycpOworfQorCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBjb250cm9sbGVy
OworICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xs
ZXIgPSBjOworICAgIH0KKyAgfSk7CisKKyAgZ2FyYmFnZUNvbGxlY3QoKTsKKworICByZXR1cm4g
ZGVsYXkoNTApLnRoZW4oKCkgPT4geworICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gY29udHJvbGxlci5jbG9zZSgpLCAnY2xv
c2Ugc2hvdWxkIHRocm93IGEgVHlwZUVycm9yIHRoZSBzZWNvbmQgdGltZScpOworICAgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjb250cm9sbGVyLmVycm9yKCksICdlcnJv
ciBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3Igb24gYSBjbG9zZWQgc3RyZWFtJyk7CisgIH0pOwor
Cit9LCAnUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIG1ldGhvZHMgc2hvdWxkIGNvbnRpbnVlIHdv
cmtpbmcgcHJvcGVybHkgd2hlbiBzY3JpcHRzIGxvc2UgdGhlaXIgcmVmZXJlbmNlIHRvIHRoZSAn
ICsKKyAgICdyZWFkYWJsZSBzdHJlYW0nKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBs
ZXQgY29udHJvbGxlcjsKKworICBjb25zdCBjbG9zZWRQcm9taXNlID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0p
LmdldFJlYWRlcigpLmNsb3NlZDsKKworICBnYXJiYWdlQ29sbGVjdCgpOworCisgIHJldHVybiBk
ZWxheSg1MCkudGhlbigoKSA9PiBjb250cm9sbGVyLmNsb3NlKCkpLnRoZW4oKCkgPT4gY2xvc2Vk
UHJvbWlzZSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgZnVs
ZmlsbCBldmVuIGlmIHRoZSBzdHJlYW0gYW5kIHJlYWRlciBKUyByZWZlcmVuY2VzIGFyZSBsb3N0
Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9IG5ldyBFcnJv
cignYm9vJyk7CisgIGxldCBjb250cm9sbGVyOworCisgIGNvbnN0IGNsb3NlZFByb21pc2UgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBj
OworICAgIH0KKyAgfSkuZ2V0UmVhZGVyKCkuY2xvc2VkOworCisgIGdhcmJhZ2VDb2xsZWN0KCk7
CisKKyAgcmV0dXJuIGRlbGF5KDUwKS50aGVuKCgpID0+IGNvbnRyb2xsZXIuZXJyb3IodGhlRXJy
b3IpKQorICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gcHJvbWlzZV9yZWplY3RzKHQsIHRo
ZUVycm9yLCBjbG9zZWRQcm9taXNlKSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBjbG9zZWQgcHJv
bWlzZSBzaG91bGQgcmVqZWN0IGV2ZW4gaWYgc3RyZWFtIGFuZCByZWFkZXIgSlMgcmVmZXJlbmNl
cyBhcmUgbG9zdCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHt9KTsKKworICBycy5nZXRSZWFkZXIoKTsKKworICBnYXJiYWdlQ29s
bGVjdCgpOworCisgIHJldHVybiBkZWxheSg1MCkudGhlbigoKSA9PiBhc3NlcnRfdGhyb3dzKG5l
dyBUeXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksCisgICAgJ29sZCByZWFkZXIgc2hv
dWxkIHN0aWxsIGJlIGxvY2tpbmcgdGhlIHN0cmVhbSBldmVuIGFmdGVyIGdhcmJhZ2UgY29sbGVj
dGlvbicpKTsKKworfSwgJ0dhcmJhZ2UtY29sbGVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVy
IHNob3VsZCBub3QgdW5sb2NrIGl0cyBzdHJlYW0nKTsKKworZG9uZSgpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvZ2VuZXJhbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFsLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDg1MmI1NThlZGQ4YzJmOTY5ZGE3MjQ3YmVlY2I0Mzdi
NTQ5MGI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvZ2VuZXJhbC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw3MCBAQAorCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNhbiBiZSBjb25zdHJ1
Y3RlZCB3aXRoIG5vIGVycm9ycyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2FuJ3QgYmUgY29uc3Ry
dWN0ZWQgd2l0aCBnYXJiYWdlIAorRkFJTCBSZWFkYWJsZVN0cmVhbSBpbnN0YW5jZXMgc2hvdWxk
IGhhdmUgdGhlIGNvcnJlY3QgbGlzdCBvZiBwcm9wZXJ0aWVzIGFzc2VydF9mYWxzZTogbWV0aG9k
IHNob3VsZCBiZSBub24tZW51bWVyYWJsZSBleHBlY3RlZCBmYWxzZSBnb3QgdHJ1ZQorUEFTUyBS
ZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZm9yIG5vbi1mdW5jdGlvbiBz
dGFydCBhcmd1bWVudHMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbiBnZXQg
aW5pdGlhbCBnYXJiYWdlIGFzIGNhbmNlbCBhcmd1bWVudCAKK1BBU1MgUmVhZGFibGVTdHJlYW0g
Y29uc3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgcHVsbCBhcmd1bWVudCAKK0ZB
SUwgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBwcm9wZXIg
cGFyYW1ldGVycyBhc3NlcnRfZmFsc2U6IGNsb3NlIHNob3VsZCBiZSBub24tZW51bWVyYWJsZSBl
eHBlY3RlZCBmYWxzZSBnb3QgdHJ1ZQorUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBjb250cm9s
bGVyIHBhcmFtZXRlciBzaG91bGQgYmUgZXh0ZW5zaWJsZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0g
c2hvdWxkIGJlIGFibGUgdG8gY2FsbCBzdGFydCBtZXRob2Qgd2l0aGluIHByb3RvdHlwZSBjaGFp
biBvZiBpdHMgc291cmNlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJs
ZSB0byByZXR1cm4gYSBwcm9taXNlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQg
YmUgYWJsZSB0byByZXR1cm4gYSBwcm9taXNlIGFuZCByZWplY3QgaXQgCitQQVNTIFJlYWRhYmxl
U3RyZWFtIHNob3VsZCBiZSBhYmxlIHRvIGVucXVldWUgZGlmZmVyZW50IG9iamVjdHMuIAorUEFT
UyBSZWFkYWJsZVN0cmVhbTogaWYgcHVsbCByZWplY3RzLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0
cmVhbSAKK1BBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNlIHVw
b24gc3RhcnRpbmcgdGhlIHN0cmVhbSAKK1BBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxs
IHB1bGwgd2hlbiB0cnlpbmcgdG8gcmVhZCBmcm9tIGEgc3RhcnRlZCwgZW1wdHkgc3RyZWFtIAor
UEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2Ugb24gYSBub24t
ZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBiZWZvcmUgc3RhcnQgZnVsZmlsbHMgCitQQVNTIFJlYWRh
YmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxsIHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBzdHJl
YW0gcmVhZCBmcm9tIGFmdGVyIHN0YXJ0IGZ1bGZpbGxzIAorUEFTUyBSZWFkYWJsZVN0cmVhbTog
c2hvdWxkIGNhbGwgcHVsbCBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmss
IGlmIG5vdCBkcmFpbmluZyAKK1BBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBw
dWxsKCkgaW4gcmVhY3Rpb24gdG8gcmVhZCgpaW5nIHRoZSBsYXN0IGNodW5rLCBpZiBkcmFpbmlu
ZyAKK1BBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIHVudGlsIHRoZSBw
cmV2aW91cyBwdWxsIGNhbGwncyBwcm9taXNlIGZ1bGZpbGxzIAorUEFTUyBSZWFkYWJsZVN0cmVh
bTogc2hvdWxkIHB1bGwgYWZ0ZXIgc3RhcnQsIGFuZCBhZnRlciBldmVyeSByZWFkIAorUEFTUyBS
ZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgYWZ0ZXIgc3RhcnQgaWYgdGhlIHN0
cmVhbSBpcyBub3cgY2xvc2VkIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVs
bCBhZnRlciBlbnF1ZXVlaW5nIGZyb20gaW5zaWRlIHB1bGwgKHdpdGggbm8gcmVhZCByZXF1ZXN0
cyksIGlmIHN0cmF0ZWd5IGFsbG93cyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gcHVsbCBzaG91bGQg
YmUgYWJsZSB0byBjbG9zZSBhIHN0cmVhbS4gCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBlbnF1ZXVl
IHNob3VsZCB0aHJvdyB3aGVuIHRoZSBzdHJlYW0gaXMgcmVhZGFibGUgYnV0IGRyYWluaW5nIAor
UEFTUyBSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgd2hlbiB0aGUgc3RyZWFt
IGlzIGNsb3NlZCAKK1BBU1MgUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHRo
ZSBzdG9yZWQgZXJyb3Igd2hlbiB0aGUgc3RyZWFtIGlzIGVycm9yZWQgCitQQVNTIFJlYWRhYmxl
U3RyZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRob2RzIGFzIG1ldGhvZHMg
CitQQVNTIFJlYWRhYmxlU3RyZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNo
b3VsZCBnaXZlIGRlc2lyZWRTaXplIG9mIDEgdG8gc3RhcnQsIGRlY3JlYXNpbmcgYnkgMSBwZXIg
ZW5xdWV1ZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3Ry
YXRlZ3kgc2hvdWxkIGNvbnRpbnVlIGdpdmluZyBkZXNpcmVkU2l6ZSBvZiAxIGlmIHRoZSBjaHVu
a3MgYXJlIHJlYWQgaW1tZWRpYXRlbHkgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9u
IHRlc3Q6IGFkYXB0aW5nIGEgcmFuZG9tIHB1c2ggc291cmNlIAorUEFTUyBSZWFkYWJsZVN0cmVh
bSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHN5bmMgcHVsbCBzb3VyY2UgCitQQVNTIFJl
YWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGFuIGFzeW5jIHB1bGwgc291
cmNlIAorRkFJTCBMb2FkIGdlbmVyYWwuanMgd2l0aCBTaGFyZWRXb3JrZXIgYXNzZXJ0X3VucmVh
Y2hlZDogU2hhcmVkV29ya2VyIGlzIHVuYXZhaWxhYmxlIFJlYWNoZWQgdW5yZWFjaGFibGUgY29k
ZQorRkFJTCBVbnRpdGxlZCB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAn
bmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuZ2V0UmVnaXN0cmF0aW9uJykKK1BBU1MgUmVhZGFibGVT
dHJlYW0gY2FuIGJlIGNvbnN0cnVjdGVkIHdpdGggbm8gZXJyb3JzIAorUEFTUyBSZWFkYWJsZVN0
cmVhbSBjYW4ndCBiZSBjb25zdHJ1Y3RlZCB3aXRoIGdhcmJhZ2UgCitGQUlMIFJlYWRhYmxlU3Ry
ZWFtIGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3BlcnRpZXMg
YXNzZXJ0X2ZhbHNlOiBtZXRob2Qgc2hvdWxkIGJlIG5vbi1lbnVtZXJhYmxlIGV4cGVjdGVkIGZh
bHNlIGdvdCB0cnVlCitQQVNTIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHNob3VsZCB0aHJv
dyBmb3Igbm9uLWZ1bmN0aW9uIHN0YXJ0IGFyZ3VtZW50cyAKK1BBU1MgUmVhZGFibGVTdHJlYW0g
Y29uc3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgY2FuY2VsIGFyZ3VtZW50IAor
UEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBh
cyBwdWxsIGFyZ3VtZW50IAorRkFJTCBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgY2Fs
bGVkIHdpdGggdGhlIHByb3BlciBwYXJhbWV0ZXJzIGFzc2VydF9mYWxzZTogY2xvc2Ugc2hvdWxk
IGJlIG5vbi1lbnVtZXJhYmxlIGV4cGVjdGVkIGZhbHNlIGdvdCB0cnVlCitQQVNTIFJlYWRhYmxl
U3RyZWFtIHN0YXJ0IGNvbnRyb2xsZXIgcGFyYW1ldGVyIHNob3VsZCBiZSBleHRlbnNpYmxlIAor
UEFTUyBSZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBjYWxsIHN0YXJ0IG1ldGhvZCB3
aXRoaW4gcHJvdG90eXBlIGNoYWluIG9mIGl0cyBzb3VyY2UgCitQQVNTIFJlYWRhYmxlU3RyZWFt
IHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgCitQQVNTIFJlYWRhYmxl
U3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJlamVj
dCBpdCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gc2hvdWxkIGJlIGFibGUgdG8gZW5xdWV1ZSBkaWZm
ZXJlbnQgb2JqZWN0cy4gCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBpZiBwdWxsIHJlamVjdHMsIGl0
IHNob3VsZCBlcnJvciB0aGUgc3RyZWFtIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9u
bHkgY2FsbCBwdWxsIG9uY2UgdXBvbiBzdGFydGluZyB0aGUgc3RyZWFtIAorUEFTUyBSZWFkYWJs
ZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCB3aGVuIHRyeWluZyB0byByZWFkIGZyb20gYSBzdGFy
dGVkLCBlbXB0eSBzdHJlYW0gCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgb25seSBjYWxs
IHB1bGwgb25jZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gcmVhZCBmcm9tIGJlZm9yZSBzdGFydCBm
dWxmaWxscyAKK1BBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBvbmx5IGNhbGwgcHVsbCBvbmNl
IG9uIGEgbm9uLWVtcHR5IHN0cmVhbSByZWFkIGZyb20gYWZ0ZXIgc3RhcnQgZnVsZmlsbHMgCitQ
QVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxsIGluIHJlYWN0aW9uIHRvIHJlYWQo
KWluZyB0aGUgbGFzdCBjaHVuaywgaWYgbm90IGRyYWluaW5nIAorUEFTUyBSZWFkYWJsZVN0cmVh
bTogc2hvdWxkIG5vdCBjYWxsIHB1bGwoKSBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxh
c3QgY2h1bmssIGlmIGRyYWluaW5nIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBj
YWxsIHB1bGwgdW50aWwgdGhlIHByZXZpb3VzIHB1bGwgY2FsbCdzIHByb21pc2UgZnVsZmlsbHMg
CitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgcHVsbCBhZnRlciBzdGFydCwgYW5kIGFmdGVy
IGV2ZXJ5IHJlYWQgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCBh
ZnRlciBzdGFydCBpZiB0aGUgc3RyZWFtIGlzIG5vdyBjbG9zZWQgCitQQVNTIFJlYWRhYmxlU3Ry
ZWFtOiBzaG91bGQgY2FsbCBwdWxsIGFmdGVyIGVucXVldWVpbmcgZnJvbSBpbnNpZGUgcHVsbCAo
d2l0aCBubyByZWFkIHJlcXVlc3RzKSwgaWYgc3RyYXRlZ3kgYWxsb3dzIAorUEFTUyBSZWFkYWJs
ZVN0cmVhbSBwdWxsIHNob3VsZCBiZSBhYmxlIHRvIGNsb3NlIGEgc3RyZWFtLiAKK1BBU1MgUmVh
ZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyByZWFk
YWJsZSBidXQgZHJhaW5pbmcgCitQQVNTIFJlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0
aHJvdyB3aGVuIHRoZSBzdHJlYW0gaXMgY2xvc2VkIAorUEFTUyBSZWFkYWJsZVN0cmVhbTogZW5x
dWV1ZSBzaG91bGQgdGhyb3cgdGhlIHN0b3JlZCBlcnJvciB3aGVuIHRoZSBzdHJlYW0gaXMgZXJy
b3JlZCAKK1BBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHVuZGVybHlpbmcgc291cmNl
IG1ldGhvZHMgYXMgbWV0aG9kcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhl
IGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGdpdmUgZGVzaXJlZFNpemUgb2YgMSB0byBzdGFydCwg
ZGVjcmVhc2luZyBieSAxIHBlciBlbnF1ZXVlIAorUEFTUyBSZWFkYWJsZVN0cmVhbSBzdHJhdGVn
aWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91bGQgY29udGludWUgZ2l2aW5nIGRlc2lyZWRT
aXplIG9mIDEgaWYgdGhlIGNodW5rcyBhcmUgcmVhZCBpbW1lZGlhdGVseSAKK1BBU1MgUmVhZGFi
bGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYSByYW5kb20gcHVzaCBzb3VyY2Ug
CitQQVNTIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgc3luYyBw
dWxsIHNvdXJjZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRp
bmcgYW4gYXN5bmMgcHVsbCBzb3VyY2UgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVy
YWwuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNTI0MWZmZThm
MDcyZmJmZDVmNjc2YzA2OWYxNTRiNDI5YjAxNDZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvZ2VuZXJhbC5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3Jr
ZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvcnMtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImdlbmVyYWwuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD4KKyd1c2Ugc3RyaWN0JzsKK3dvcmtlcl90ZXN0KCdnZW5lcmFs
LmpzJyk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL2dlbmVyYWwuanMgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9nZW5lcmFsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0ZDFhNGE2Y2E0MDNjZGY0ZDU0NGI1
MGZiNmUxMjY2NTM2ZmI3M2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9nZW5lcmFs
LmpzCkBAIC0wLDAgKzEsODMxIEBACisndXNlIHN0cmljdCc7CisKK2lmIChzZWxmLmltcG9ydFNj
cmlwdHMpIHsKKyAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvdGVzdC11dGlscy5q
cycpOworICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9ycy11dGlscy5qcycpOwor
ICBzZWxmLmltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnKTsKK30KKwor
dGVzdCgoKSA9PiB7CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKCk7IC8vIFJlYWRhYmxlU3RyZWFt
IGNvbnN0cnVjdGVkIHdpdGggbm8gcGFyYW1ldGVycworICBuZXcgUmVhZGFibGVTdHJlYW0oeyB9
KTsgLy8gUmVhZGFibGVTdHJlYW0gY29uc3RydWN0ZWQgd2l0aCBhbiBlbXB0eSBvYmplY3QgYXMg
cGFyYW1ldGVyCisgIG5ldyBSZWFkYWJsZVN0cmVhbSh1bmRlZmluZWQpOyAvLyBSZWFkYWJsZVN0
cmVhbSBjb25zdHJ1Y3RlZCB3aXRoIHVuZGVmaW5lZCBhcyBwYXJhbWV0ZXIKKworICBsZXQgeDsK
KyAgbmV3IFJlYWRhYmxlU3RyZWFtKHgpOyAvLyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RlZCB3
aXRoIGFuIHVuZGVmaW5lZCB2YXJpYWJsZSBhcyBwYXJhbWV0ZXIKKworfSwgJ1JlYWRhYmxlU3Ry
ZWFtIGNhbiBiZSBjb25zdHJ1Y3RlZCB3aXRoIG5vIGVycm9ycycpOworCit0ZXN0KCgpID0+IHsK
KworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3Ry
ZWFtKG51bGwpLCAnY29uc3RydWN0b3Igc2hvdWxkIHRocm93IHdoZW4gdGhlIHNvdXJjZSBpcyBu
dWxsJyk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBjYW5cJ3QgYmUgY29uc3RydWN0ZWQgd2l0aCBn
YXJiYWdlJyk7CisKK3Rlc3QoKCkgPT4geworCisgIGNvbnN0IG1ldGhvZHMgPSBbJ2NhbmNlbCcs
ICdjb25zdHJ1Y3RvcicsICdnZXRSZWFkZXInLCAncGlwZVRocm91Z2gnLCAncGlwZVRvJywgJ3Rl
ZSddOworICBjb25zdCBwcm9wZXJ0aWVzID0gbWV0aG9kcy5jb25jYXQoWydsb2NrZWQnXSkuc29y
dCgpOworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIGNvbnN0IHByb3Rv
ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHJzKTsKKworICBhc3NlcnRfYXJyYXlfZXF1YWxzKE9i
amVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvKS5zb3J0KCksIHByb3BlcnRpZXMsICdzaG91
bGQgaGF2ZSBhbGwgdGhlIGNvcnJlY3QgbWV0aG9kcycpOworCisgIGZvciAoY29uc3QgbSBvZiBt
ZXRob2RzKSB7CisgICAgY29uc3QgcHJvcERlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKHByb3RvLCBtKTsKKyAgICBhc3NlcnRfZmFsc2UocHJvcERlc2MuZW51bWVyYWJsZSwg
J21ldGhvZCBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUnKTsKKyAgICBhc3NlcnRfdHJ1ZShwcm9w
RGVzYy5jb25maWd1cmFibGUsICdtZXRob2Qgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZScpOworICAg
IGFzc2VydF90cnVlKHByb3BEZXNjLndyaXRhYmxlLCAnbWV0aG9kIHNob3VsZCBiZSB3cml0YWJs
ZScpOworICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJzW21dLCAnZnVuY3Rpb24nLCAnbWV0aG9k
IHNob3VsZCBiZSBhIGZ1bmN0aW9uJyk7CisgIH0KKworICBjb25zdCBsb2NrZWRQcm9wRGVzYyA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sICdsb2NrZWQnKTsKKyAgYXNz
ZXJ0X2ZhbHNlKGxvY2tlZFByb3BEZXNjLmVudW1lcmFibGUsICdsb2NrZWQgc2hvdWxkIGJlIG5v
bi1lbnVtZXJhYmxlJyk7CisgIGFzc2VydF9lcXVhbHMobG9ja2VkUHJvcERlc2Mud3JpdGFibGUs
IHVuZGVmaW5lZCwgJ2xvY2tlZCBzaG91bGQgbm90IGJlIGEgZGF0YSBwcm9wZXJ0eScpOworICBh
c3NlcnRfZXF1YWxzKHR5cGVvZiBsb2NrZWRQcm9wRGVzYy5nZXQsICdmdW5jdGlvbicsICdsb2Nr
ZWQgc2hvdWxkIGhhdmUgYSBnZXR0ZXInKTsKKyAgYXNzZXJ0X2VxdWFscyhsb2NrZWRQcm9wRGVz
Yy5zZXQsIHVuZGVmaW5lZCwgJ2xvY2tlZCBzaG91bGQgbm90IGhhdmUgYSBzZXR0ZXInKTsKKyAg
YXNzZXJ0X3RydWUobG9ja2VkUHJvcERlc2MuY29uZmlndXJhYmxlLCAnbG9ja2VkIHNob3VsZCBi
ZSBjb25maWd1cmFibGUnKTsKKworICBhc3NlcnRfZXF1YWxzKHJzLmNhbmNlbC5sZW5ndGgsIDEs
ICdjYW5jZWwgc2hvdWxkIGhhdmUgMSBwYXJhbWV0ZXInKTsKKyAgYXNzZXJ0X2VxdWFscyhycy5j
b25zdHJ1Y3Rvci5sZW5ndGgsIDAsICdjb25zdHJ1Y3RvciBzaG91bGQgaGF2ZSBubyBwYXJhbWV0
ZXJzJyk7CisgIGFzc2VydF9lcXVhbHMocnMuZ2V0UmVhZGVyLmxlbmd0aCwgMCwgJ2dldFJlYWRl
ciBzaG91bGQgaGF2ZSBubyBwYXJhbWV0ZXJzJyk7CisgIGFzc2VydF9lcXVhbHMocnMucGlwZVRo
cm91Z2gubGVuZ3RoLCAyLCAncGlwZVRocm91Z2ggc2hvdWxkIGhhdmUgMiBwYXJhbWV0ZXJzJyk7
CisgIGFzc2VydF9lcXVhbHMocnMucGlwZVRvLmxlbmd0aCwgMSwgJ3BpcGVUbyBzaG91bGQgaGF2
ZSAxIHBhcmFtZXRlcicpOworICBhc3NlcnRfZXF1YWxzKHJzLnRlZS5sZW5ndGgsIDAsICd0ZWUg
c2hvdWxkIGhhdmUgbm8gcGFyYW1ldGVycycpOworCit9LCAnUmVhZGFibGVTdHJlYW0gaW5zdGFu
Y2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxpc3Qgb2YgcHJvcGVydGllcycpOworCit0ZXN0
KCgpID0+IHsKKworICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4geworICAg
IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHN0YXJ0OiAncG90YXRvJyB9KTsKKyAgfSwgJ2NvbnN0cnVj
dG9yIHNob3VsZCB0aHJvdyB3aGVuIHN0YXJ0IGlzIG5vdCBhIGZ1bmN0aW9uJyk7CisKK30sICdS
ZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZm9yIG5vbi1mdW5jdGlvbiBz
dGFydCBhcmd1bWVudHMnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFt
KHsgY2FuY2VsOiAnMicgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4g
Z2V0IGluaXRpYWwgZ2FyYmFnZSBhcyBjYW5jZWwgYXJndW1lbnQnKTsKKwordGVzdCgoKSA9PiB7
CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKHsgcHVsbDogeyB9IH0pOworCit9LCAnUmVhZGFibGVT
dHJlYW0gY29uc3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgcHVsbCBhcmd1bWVu
dCcpOworCit0ZXN0KCgpID0+IHsKKworICBsZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKKworICBj
b25zdCBzb3VyY2UgPSB7CisgICAgc3RhcnQoY29udHJvbGxlcikgeworICAgICAgYXNzZXJ0X2Vx
dWFscyh0aGlzLCBzb3VyY2UsICdzb3VyY2UgaXMgdGhpcyBkdXJpbmcgc3RhcnQnKTsKKworICAg
ICAgY29uc3QgbWV0aG9kcyA9IFsnY2xvc2UnLCAnZW5xdWV1ZScsICdlcnJvcicsICdjb25zdHJ1
Y3RvciddOworICAgICAgY29uc3QgcHJvcGVydGllcyA9IFsnZGVzaXJlZFNpemUnXS5jb25jYXQo
bWV0aG9kcykuc29ydCgpOworICAgICAgY29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBl
T2YoY29udHJvbGxlcik7CisKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoT2JqZWN0LmdldE93
blByb3BlcnR5TmFtZXMocHJvdG8pLnNvcnQoKSwgcHJvcGVydGllcywKKyAgICAgICAgJ3RoZSBj
b250cm9sbGVyIHNob3VsZCBoYXZlIHRoZSByaWdodCBwcm9wZXJ0aWVzJyk7CisKKyAgICAgIGZv
ciAoY29uc3QgbSBvZiBtZXRob2RzKSB7CisgICAgICAgIGNvbnN0IHByb3BEZXNjID0gT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgbSk7CisgICAgICAgIGFzc2VydF9lcXVh
bHModHlwZW9mIGNvbnRyb2xsZXJbbV0sICdmdW5jdGlvbicsIGBzaG91bGQgaGF2ZSBhICR7bX0g
bWV0aG9kYCk7CisgICAgICAgIGFzc2VydF9mYWxzZShwcm9wRGVzYy5lbnVtZXJhYmxlLCBtICsg
JyBzaG91bGQgYmUgbm9uLWVudW1lcmFibGUnKTsKKyAgICAgICAgYXNzZXJ0X3RydWUocHJvcERl
c2MuY29uZmlndXJhYmxlLCBtICsgJyBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7CisgICAgICAg
IGFzc2VydF90cnVlKHByb3BEZXNjLndyaXRhYmxlLCBtICsgJyBzaG91bGQgYmUgd3JpdGFibGUn
KTsKKyAgICAgIH0KKworICAgICAgY29uc3QgZGVzaXJlZFNpemVQcm9wRGVzYyA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sICdkZXNpcmVkU2l6ZScpOworICAgICAgYXNz
ZXJ0X2ZhbHNlKGRlc2lyZWRTaXplUHJvcERlc2MuZW51bWVyYWJsZSwgJ2Rlc2lyZWRTaXplIHNo
b3VsZCBiZSBub24tZW51bWVyYWJsZScpOworICAgICAgYXNzZXJ0X2VxdWFscyhkZXNpcmVkU2l6
ZVByb3BEZXNjLndyaXRhYmxlLCB1bmRlZmluZWQsICdkZXNpcmVkU2l6ZSBzaG91bGQgbm90IGJl
IGEgZGF0YSBwcm9wZXJ0eScpOworICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgZGVzaXJlZFNp
emVQcm9wRGVzYy5nZXQsICdmdW5jdGlvbicsICdkZXNpcmVkU2l6ZSBzaG91bGQgaGF2ZSBhIGdl
dHRlcicpOworICAgICAgYXNzZXJ0X2VxdWFscyhkZXNpcmVkU2l6ZVByb3BEZXNjLnNldCwgdW5k
ZWZpbmVkLCAnZGVzaXJlZFNpemUgc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyJyk7CisgICAgICBh
c3NlcnRfdHJ1ZShkZXNpcmVkU2l6ZVByb3BEZXNjLmNvbmZpZ3VyYWJsZSwgJ2Rlc2lyZWRTaXpl
IHNob3VsZCBiZSBjb25maWd1cmFibGUnKTsKKworICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9s
bGVyLmNsb3NlLmxlbmd0aCwgMCwgJ2Nsb3NlIHNob3VsZCBoYXZlIG5vIHBhcmFtZXRlcnMnKTsK
KyAgICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5jb25zdHJ1Y3Rvci5sZW5ndGgsIDEsICdj
b25zdHJ1Y3RvciBzaG91bGQgaGF2ZSAxIHBhcmFtZXRlcicpOworICAgICAgYXNzZXJ0X2VxdWFs
cyhjb250cm9sbGVyLmVucXVldWUubGVuZ3RoLCAxLCAnZW5xdWV1ZSBzaG91bGQgaGF2ZSAxIHBh
cmFtZXRlcicpOworICAgICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmVycm9yLmxlbmd0aCwg
MSwgJ2Vycm9yIHNob3VsZCBoYXZlIDEgcGFyYW1ldGVyJyk7CisKKyAgICAgIHN0YXJ0Q2FsbGVk
ID0gdHJ1ZTsKKyAgICB9CisgIH07CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKHNvdXJjZSk7Cisg
IGFzc2VydF90cnVlKHN0YXJ0Q2FsbGVkKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0IHNo
b3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgcHJvcGVyIHBhcmFtZXRlcnMnKTsKKwordGVzdCgoKSA9
PiB7CisKKyAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisgIGNvbnN0IHNvdXJjZSA9IHsKKyAg
ICBzdGFydChjb250cm9sbGVyKSB7CisgICAgICBjb25zdCBwcm9wZXJ0aWVzID0gWydjbG9zZScs
ICdjb25zdHJ1Y3RvcicsICdkZXNpcmVkU2l6ZScsICdlbnF1ZXVlJywgJ2Vycm9yJ107CisgICAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE9iamVjdC5n
ZXRQcm90b3R5cGVPZihjb250cm9sbGVyKSkuc29ydCgpLCBwcm9wZXJ0aWVzLAorICAgICAgICAn
cHJvdG90eXBlIHNob3VsZCBoYXZlIHRoZSByaWdodCBwcm9wZXJ0aWVzJyk7CisKKyAgICAgIGNv
bnRyb2xsZXIudGVzdCA9ICcnOworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhPYmplY3QuZ2V0
T3duUHJvcGVydHlOYW1lcyhPYmplY3QuZ2V0UHJvdG90eXBlT2YoY29udHJvbGxlcikpLnNvcnQo
KSwgcHJvcGVydGllcywKKyAgICAgICAgJ3Byb3RvdHlwZSBzaG91bGQgc3RpbGwgaGF2ZSB0aGUg
cmlnaHQgcHJvcGVydGllcycpOworICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoT2JqZWN0LmdldE93
blByb3BlcnR5TmFtZXMoY29udHJvbGxlcikuaW5kZXhPZigndGVzdCcpLCAtMSwKKyAgICAgICAg
JyJ0ZXN0IiBzaG91bGQgYmUgYSBwcm9wZXJ0eSBvZiB0aGUgY29udHJvbGxlcicpOworCisgICAg
ICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgfQorICB9OworCisgIG5ldyBSZWFkYWJsZVN0cmVh
bShzb3VyY2UpOworICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7CisKK30sICdSZWFkYWJsZVN0
cmVhbSBzdGFydCBjb250cm9sbGVyIHBhcmFtZXRlciBzaG91bGQgYmUgZXh0ZW5zaWJsZScpOwor
Citwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGZ1bmN0aW9uIFNpbXBsZVN0cmVhbVNvdXJjZSgp
IHt9CisgIGxldCByZXNvbHZlOworICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UociA9PiBy
ZXNvbHZlID0gcik7CisgIFNpbXBsZVN0cmVhbVNvdXJjZS5wcm90b3R5cGUgPSB7CisgICAgc3Rh
cnQ6IHJlc29sdmUKKyAgfTsKKworICBuZXcgUmVhZGFibGVTdHJlYW0obmV3IFNpbXBsZVN0cmVh
bVNvdXJjZSgpKTsKKyAgcmV0dXJuIHByb21pc2U7CisKK30sICdSZWFkYWJsZVN0cmVhbSBzaG91
bGQgYmUgYWJsZSB0byBjYWxsIHN0YXJ0IG1ldGhvZCB3aXRoaW4gcHJvdG90eXBlIGNoYWluIG9m
IGl0cyBzb3VyY2UnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IG5l
dyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgcmV0dXJuIGRlbGF5KDUp
LnRoZW4oKCkgPT4geworICAgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICAgICAgYy5jbG9zZSgp
OworICAgICAgfSk7CisgICAgfQorICB9KTsKKworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFk
ZXIoKTsKKyAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKKyAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICd2YWx1ZSByZWFkIHNo
b3VsZCBiZSB0aGUgb25lIGVucXVldWVkJyk7CisgICAgcmV0dXJuIHJlYWRlci5jbG9zZWQ7Cisg
IH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJu
IGEgcHJvbWlzZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHRoZUVycm9y
ID0gbmV3IEVycm9yKCdyZWplY3RlZCEnKTsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oeworICAgIHN0YXJ0KCkgeworICAgICAgcmV0dXJuIGRlbGF5KDEpLnRoZW4oKCkgPT4geyB0
aHJvdyB0aGVFcnJvcjsgfSk7CisgICAgfQorICB9KTsKKworICByZXR1cm4gcnMuZ2V0UmVhZGVy
KCkuY2xvc2VkLnRoZW4oKCkgPT4geworICAgIGFzc2VydF91bnJlYWNoZWQoJ2Nsb3NlZCBwcm9t
aXNlIHNob3VsZCBiZSByZWplY3RlZCcpOworICB9LCBlID0+IHsKKyAgICBhc3NlcnRfZXF1YWxz
KGUsIHRoZUVycm9yLCAncHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgc2FtZSBl
cnJvcicpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxl
IHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJlamVjdCBpdCcpOworCitwcm9taXNlX3Rlc3QoKCkg
PT4geworCisgIGNvbnN0IG9iamVjdHMgPSBbCisgICAgeyBwb3RhdG86ICdHaXZlIG1lIG1vcmUh
JyB9LAorICAgICd0ZXN0JywKKyAgICAxCisgIF07CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGZvciAoY29uc3QgbyBvZiBvYmplY3Rz
KSB7CisgICAgICAgIGMuZW5xdWV1ZShvKTsKKyAgICAgIH0KKyAgICAgIGMuY2xvc2UoKTsKKyAg
ICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIHJldHVy
biBQcm9taXNlLmFsbChbcmVhZGVyLnJlYWQoKSwgcmVhZGVyLnJlYWQoKSwgcmVhZGVyLnJlYWQo
KSwgcmVhZGVyLmNsb3NlZF0pLnRoZW4ociA9PiB7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMo
clswXSwgeyB2YWx1ZTogb2JqZWN0c1swXSwgZG9uZTogZmFsc2UgfSwgJ3ZhbHVlIHJlYWQgc2hv
dWxkIGJlIHRoZSBvbmUgZW5xdWV1ZWQnKTsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyWzFd
LCB7IHZhbHVlOiBvYmplY3RzWzFdLCBkb25lOiBmYWxzZSB9LCAndmFsdWUgcmVhZCBzaG91bGQg
YmUgdGhlIG9uZSBlbnF1ZXVlZCcpOworICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJbMl0sIHsg
dmFsdWU6IG9iamVjdHNbMl0sIGRvbmU6IGZhbHNlIH0sICd2YWx1ZSByZWFkIHNob3VsZCBiZSB0
aGUgb25lIGVucXVldWVkJyk7CisgIH0pOworCit9LCAnUmVhZGFibGVTdHJlYW0gc2hvdWxkIGJl
IGFibGUgdG8gZW5xdWV1ZSBkaWZmZXJlbnQgb2JqZWN0cy4nKTsKKworcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKworICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcigncHVsbCBmYWlsdXJlJyk7CisgIGNv
bnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBwdWxsKCkgeworICAgICAgcmV0dXJu
IFByb21pc2UucmVqZWN0KGVycm9yKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRlciA9
IHJzLmdldFJlYWRlcigpOworCisgIGxldCBjbG9zZWQgPSBmYWxzZTsKKyAgbGV0IHJlYWQgPSBm
YWxzZTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHJlYWRlci5jbG9zZWQudGhlbigo
KSA9PiB7CisgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdjbG9zZWQgc2hvdWxkIGJlIHJlamVjdGVk
Jyk7CisgICAgfSwgZSA9PiB7CisgICAgICBjbG9zZWQgPSB0cnVlOworICAgICAgYXNzZXJ0X3Ry
dWUocmVhZCk7CisgICAgICBhc3NlcnRfZXF1YWxzKGUsIGVycm9yLCAnY2xvc2VkIHNob3VsZCBi
ZSByZWplY3RlZCB3aXRoIHRoZSB0aHJvd24gZXJyb3InKTsKKyAgICB9KSwKKyAgICByZWFkZXIu
cmVhZCgpLnRoZW4oKCkgPT4geworICAgICAgYXNzZXJ0X3VucmVhY2hlZCgncmVhZCgpIHNob3Vs
ZCBiZSByZWplY3RlZCcpOworICAgIH0sIGUgPT4geworICAgICAgcmVhZCA9IHRydWU7CisgICAg
ICBhc3NlcnRfZmFsc2UoY2xvc2VkKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoZSwgZXJyb3IsICdy
ZWFkKCkgc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdGhlIHRocm93biBlcnJvcicpOworICAgIH0p
CisgIF0pOworCit9LCAnUmVhZGFibGVTdHJlYW06IGlmIHB1bGwgcmVqZWN0cywgaXQgc2hvdWxk
IGVycm9yIHRoZSBzdHJlYW0nKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgcHVs
bENvdW50ID0gMDsKKyAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7CisK
KyAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydCgpIHsKKyAgICAgIHJldHVybiBzdGFy
dFByb21pc2U7CisgICAgfSwKKyAgICBwdWxsKCkgeworICAgICAgcHVsbENvdW50Kys7CisgICAg
fQorICB9KTsKKworICByZXR1cm4gc3RhcnRQcm9taXNlLnRoZW4oKCkgPT4geworICAgIGFzc2Vy
dF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2FsbGVkIG9uY2Ugc3RhcnQg
ZmluaXNoZXMnKTsKKyAgICByZXR1cm4gZGVsYXkoMTApOworICB9KS50aGVuKCgpID0+IHsKKyAg
ICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFj
dGx5IG9uY2UnKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2Fs
bCBwdWxsIG9uY2UgdXBvbiBzdGFydGluZyB0aGUgc3RyZWFtJyk7CisKK3Byb21pc2VfdGVzdCgo
KSA9PiB7CisKKyAgbGV0IHB1bGxDb3VudCA9IDA7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oeworICAgIHB1bGwoYykgeworICAgICAgLy8gRG9uJ3QgZW5xdWV1ZSBpbW1lZGlh
dGVseSBhZnRlciBzdGFydC4gV2Ugd2FudCB0aGUgc3RyZWFtIHRvIGJlIGVtcHR5IHdoZW4gd2Ug
Y2FsbCAucmVhZCgpIG9uIGl0LgorICAgICAgaWYgKHB1bGxDb3VudCA+IDApIHsKKyAgICAgICAg
Yy5lbnF1ZXVlKHB1bGxDb3VudCk7CisgICAgICB9CisgICAgICArK3B1bGxDb3VudDsKKyAgICB9
CisgIH0pOworCisgIHJldHVybiBkZWxheSgxKS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1
YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBvbmNlIHN0YXJ0IGZpbmlz
aGVzJyk7CisKKyAgICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKyAgICBjb25zdCBy
ZWFkID0gcmVhZGVyLnJlYWQoKTsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMiwgJ3B1
bGwgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIHJlYWQgaXMgY2FsbGVkJyk7CisgICAgcmV0dXJuIHJl
YWQ7CisgIH0pLnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwg
MywgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBhZ2FpbiBpbiByZWFjdGlvbiB0byBjYWxsaW5nIHJl
YWQnKTsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IDEsIGRvbmU6
IGZhbHNlIH0sICd0aGUgcmVzdWx0IHJlYWQgc2hvdWxkIGJlIHRoZSBvbmUgZW5xdWV1ZWQnKTsK
KyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCB3aGVuIHRyeWlu
ZyB0byByZWFkIGZyb20gYSBzdGFydGVkLCBlbXB0eSBzdHJlYW0nKTsKKworcHJvbWlzZV90ZXN0
KCgpID0+IHsKKworICBsZXQgcHVsbENvdW50ID0gMDsKKyAgY29uc3Qgc3RhcnRQcm9taXNlID0g
UHJvbWlzZS5yZXNvbHZlKCk7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewor
ICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAgcmV0dXJuIHN0YXJ0
UHJvbWlzZTsKKyAgICB9LAorICAgIHB1bGwoKSB7CisgICAgICBwdWxsQ291bnQrKzsKKyAgICB9
CisgIH0pOworCisgIGNvbnN0IHJlYWQgPSBycy5nZXRSZWFkZXIoKS5yZWFkKCk7CisgIGFzc2Vy
dF9lcXVhbHMocHVsbENvdW50LCAwLCAnY2FsbGluZyByZWFkKCkgc2hvdWxkIG5vdCBjYXVzZSBw
dWxsIHRvIGJlIGNhbGxlZCB5ZXQnKTsKKworICByZXR1cm4gc3RhcnRQcm9taXNlLnRoZW4oKCkg
PT4geworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgYmUgY2Fs
bGVkIG9uY2Ugc3RhcnQgZmluaXNoZXMnKTsKKyAgICByZXR1cm4gcmVhZDsKKyAgfSkudGhlbihy
ID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZh
bHNlIH0sICdmaXJzdCByZWFkKCkgc2hvdWxkIHJldHVybiBmaXJzdCBjaHVuaycpOworICAgIGFz
c2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxs
ZWQgYWdhaW4nKTsKKyAgICByZXR1cm4gZGVsYXkoMTApOworICB9KS50aGVuKCgpID0+IHsKKyAg
ICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFj
dGx5IG9uY2UnKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2Fs
bCBwdWxsIG9uY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBiZWZvcmUgc3RhcnQg
ZnVsZmlsbHMnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBsZXQgcHVsbENvdW50ID0g
MDsKKyAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7CisKKyAgY29uc3Qg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1
ZSgnYScpOworICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKKyAgICB9LAorICAgIHB1bGwoKSB7
CisgICAgICBwdWxsQ291bnQrKzsKKyAgICB9CisgIH0pOworCisgIHJldHVybiBzdGFydFByb21p
c2UudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDAsICdwdWxsIHNo
b3VsZCBub3QgYmUgY2FsbGVkIG9uY2Ugc3RhcnQgZmluaXNoZXMsIHNpbmNlIHRoZSBxdWV1ZSBp
cyBmdWxsJyk7CisKKyAgICBjb25zdCByZWFkID0gcnMuZ2V0UmVhZGVyKCkucmVhZCgpOworICAg
IGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAnY2FsbGluZyByZWFkKCkgc2hvdWxkIGNhdXNl
IHB1bGwgdG8gYmUgY2FsbGVkIGltbWVkaWF0ZWx5Jyk7CisgICAgcmV0dXJuIHJlYWQ7CisgIH0p
LnRoZW4ociA9PiB7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBk
b25lOiBmYWxzZSB9LCAnZmlyc3QgcmVhZCgpIHNob3VsZCByZXR1cm4gZmlyc3QgY2h1bmsnKTsK
KyAgICByZXR1cm4gZGVsYXkoMTApOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1
YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IG9uY2UnKTsK
KyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG9ubHkgY2FsbCBwdWxsIG9uY2Ug
b24gYSBub24tZW1wdHkgc3RyZWFtIHJlYWQgZnJvbSBhZnRlciBzdGFydCBmdWxmaWxscycpOwor
Citwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBwdWxsQ291bnQgPSAwOworICBsZXQgY29u
dHJvbGxlcjsKKyAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7CisKKyAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNv
bnRyb2xsZXIgPSBjOworICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKKyAgICB9LAorICAgIHB1
bGwoKSB7CisgICAgICArK3B1bGxDb3VudDsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRl
ciA9IHJzLmdldFJlYWRlcigpOworICByZXR1cm4gc3RhcnRQcm9taXNlLnRoZW4oKCkgPT4gewor
ICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNh
bGxlZCBvbmNlIGJ5IHRoZSB0aW1lIHRoZSBzdHJlYW0gc3RhcnRzJyk7CisKKyAgICBjb250cm9s
bGVyLmVucXVldWUoJ2EnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwg
c2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkIGFnYWluIGFmdGVyIGVucXVldWUnKTsKKworICAg
IHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1
YWxzKHB1bGxDb3VudCwgMiwgJ3B1bGwgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgYWdhaW4gYWZ0
ZXIgcmVhZCcpOworCisgICAgcmV0dXJuIGRlbGF5KDEwKTsKKyAgfSkudGhlbigoKSA9PiB7Cisg
ICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDIsICdwdWxsIHNob3VsZCBiZSBjYWxsZWQgZXhh
Y3RseSB0d2ljZScpOworICB9KTsKK30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVs
bCBpbiByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIG5vdCBkcmFpbmlu
ZycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBwdWxsQ291bnQgPSAwOworICBs
ZXQgY29udHJvbGxlcjsKKyAgY29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7
CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAg
ICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKKyAgICB9LAor
ICAgIHB1bGwoKSB7CisgICAgICArK3B1bGxDb3VudDsKKyAgICB9CisgIH0pOworCisgIGNvbnN0
IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIHJldHVybiBzdGFydFByb21pc2UudGhlbigo
KSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhwdWxsQ291bnQsIDEsICdwdWxsIHNob3VsZCBoYXZl
IGJlZW4gY2FsbGVkIG9uY2UgYnkgdGhlIHRpbWUgdGhlIHN0cmVhbSBzdGFydHMnKTsKKworICAg
IGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAx
LCAncHVsbCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQgYWdhaW4gYWZ0ZXIgZW5xdWV1ZScp
OworCisgICAgY29udHJvbGxlci5jbG9zZSgpOworCisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7
CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMocHVsbENvdW50LCAxLCAncHVs
bCBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQgYSBzZWNvbmQgdGltZSBhZnRlciByZWFkJyk7
CisKKyAgICByZXR1cm4gZGVsYXkoMTApOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRf
ZXF1YWxzKHB1bGxDb3VudCwgMSwgJ3B1bGwgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IG9uY2Un
KTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwoKSBp
biByZWFjdGlvbiB0byByZWFkKClpbmcgdGhlIGxhc3QgY2h1bmssIGlmIGRyYWluaW5nJyk7CisK
K3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHJlc29sdmU7CisgIGxldCByZXR1cm5lZFBy
b21pc2U7CisgIGxldCB0aW1lc0NhbGxlZCA9IDA7CisgIGNvbnN0IHN0YXJ0UHJvbWlzZSA9IFBy
b21pc2UucmVzb2x2ZSgpOworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAg
ICBzdGFydCgpIHsKKyAgICAgIHJldHVybiBzdGFydFByb21pc2U7CisgICAgfSwKKyAgICBwdWxs
KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgrK3RpbWVzQ2FsbGVkKTsKKyAgICAgIHJldHVybmVkUHJv
bWlzZSA9IG5ldyBQcm9taXNlKHIgPT4gcmVzb2x2ZSA9IHIpOworICAgICAgcmV0dXJuIHJldHVy
bmVkUHJvbWlzZTsKKyAgICB9CisgIH0pOworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIo
KTsKKworICByZXR1cm4gc3RhcnRQcm9taXNlLnRoZW4oKCkgPT4geworICAgIHJldHVybiByZWFk
ZXIucmVhZCgpOworICB9KS50aGVuKHJlc3VsdDEgPT4geworICAgIGFzc2VydF9lcXVhbHModGlt
ZXNDYWxsZWQsIDEsCisgICAgICAncHVsbCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlIGFm
dGVyIHN0YXJ0LCBidXQgbm90IHlldCBoYXZlIGJlZW4gY2FsbGVkIGEgc2Vjb25kIHRpbWUnKTsK
KyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQxLCB7IHZhbHVlOiAxLCBkb25lOiBmYWxz
ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggdGhlIGVucXVldWVkIHZhbHVlJyk7CisK
KyAgICByZXR1cm4gZGVsYXkoMTApOworICB9KS50aGVuKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1
YWxzKHRpbWVzQ2FsbGVkLCAxLCAnYWZ0ZXIgMTAgbXMsIHB1bGwgc2hvdWxkIHN0aWxsIG9ubHkg
aGF2ZSBiZWVuIGNhbGxlZCBvbmNlJyk7CisKKyAgICByZXNvbHZlKCk7CisgICAgcmV0dXJuIHJl
dHVybmVkUHJvbWlzZTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyh0aW1l
c0NhbGxlZCwgMiwKKyAgICAgICdhZnRlciB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSBwdWxsIGlz
IGZ1bGZpbGxlZCwgcHVsbCBzaG91bGQgYmUgY2FsbGVkIGEgc2Vjb25kIHRpbWUnKTsKKyAgfSk7
CisKK30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50aWwgdGhlIHBy
ZXZpb3VzIHB1bGwgY2FsbFwncyBwcm9taXNlIGZ1bGZpbGxzJyk7CisKK3Byb21pc2VfdGVzdCgo
KSA9PiB7CisKKyAgbGV0IHRpbWVzQ2FsbGVkID0gMDsKKyAgY29uc3Qgc3RhcnRQcm9taXNlID0g
UHJvbWlzZS5yZXNvbHZlKCk7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oCisg
ICAgeworICAgICAgc3RhcnQoYykgeworICAgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICAgICAg
Yy5lbnF1ZXVlKCdiJyk7CisgICAgICAgIGMuZW5xdWV1ZSgnYycpOworICAgICAgICByZXR1cm4g
c3RhcnRQcm9taXNlOworICAgICAgfSwKKyAgICAgIHB1bGwoKSB7CisgICAgICAgICsrdGltZXND
YWxsZWQ7CisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICBzaXplKCkgeworICAgICAgICBy
ZXR1cm4gMTsKKyAgICAgIH0sCisgICAgICBoaWdoV2F0ZXJNYXJrOiBJbmZpbml0eQorICAgIH0K
KyAgKTsKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgcmV0dXJuIHN0YXJ0
UHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQoKTsKKyAgfSkudGhl
bihyZXN1bHQxID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQxLCB7IHZhbHVl
OiAnYScsIGRvbmU6IGZhbHNlIH0sICdmaXJzdCBjaHVuayBzaG91bGQgYmUgYXMgZXhwZWN0ZWQn
KTsKKworICAgIHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50aGVuKHJlc3VsdDIgPT4gewor
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdDIsIHsgdmFsdWU6ICdiJywgZG9uZTogZmFs
c2UgfSwgJ3NlY29uZCBjaHVuayBzaG91bGQgYmUgYXMgZXhwZWN0ZWQnKTsKKworICAgIHJldHVy
biByZWFkZXIucmVhZCgpOworICB9KS50aGVuKHJlc3VsdDMgPT4geworICAgIGFzc2VydF9vYmpl
Y3RfZXF1YWxzKHJlc3VsdDMsIHsgdmFsdWU6ICdjJywgZG9uZTogZmFsc2UgfSwgJ3RoaXJkIGNo
dW5rIHNob3VsZCBiZSBhcyBleHBlY3RlZCcpOworCisgICAgcmV0dXJuIGRlbGF5KDEwKTsKKyAg
fSkudGhlbigoKSA9PiB7CisgICAgLy8gT25jZSBmb3IgYWZ0ZXIgc3RhcnQsIGFuZCBvbmNlIGZv
ciBldmVyeSByZWFkLgorICAgIGFzc2VydF9lcXVhbHModGltZXNDYWxsZWQsIDQsICdwdWxsKCkg
c2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IGZvdXIgdGltZXMnKTsKKyAgfSk7CisKK30sICdSZWFk
YWJsZVN0cmVhbTogc2hvdWxkIHB1bGwgYWZ0ZXIgc3RhcnQsIGFuZCBhZnRlciBldmVyeSByZWFk
Jyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHRpbWVzQ2FsbGVkID0gMDsKKyAg
Y29uc3Qgc3RhcnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7CisKKyAgY29uc3QgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZW5xdWV1ZSgnYScp
OworICAgICAgYy5jbG9zZSgpOworICAgICAgcmV0dXJuIHN0YXJ0UHJvbWlzZTsKKyAgICB9LAor
ICAgIHB1bGwoKSB7CisgICAgICArK3RpbWVzQ2FsbGVkOworICAgIH0KKyAgfSk7CisKKyAgY29u
c3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisgIHJldHVybiBzdGFydFByb21pc2UudGhlbigo
KSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyh0aW1lc0NhbGxlZCwgMCwgJ2FmdGVyIHN0YXJ0IGZp
bmlzaGVzLCBwdWxsIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCcpOworCisgICAgcmV0dXJu
IHJlYWRlci5yZWFkKCk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHModGlt
ZXNDYWxsZWQsIDAsICdyZWFkaW5nIHNob3VsZCBub3QgaGF2ZSB0cmlnZ2VyZWQgYSBwdWxsIGNh
bGwnKTsKKworICAgIHJldHVybiByZWFkZXIuY2xvc2VkOworICB9KS50aGVuKCgpID0+IHsKKyAg
ICBhc3NlcnRfZXF1YWxzKHRpbWVzQ2FsbGVkLCAwLCAnc3RyZWFtIHNob3VsZCBoYXZlIGNsb3Nl
ZCB3aXRoIHN0aWxsIG5vIGNhbGxzIHRvIHB1bGwnKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0
cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgYWZ0ZXIgc3RhcnQgaWYgdGhlIHN0cmVhbSBpcyBu
b3cgY2xvc2VkJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgbGV0IHRpbWVzQ2FsbGVk
ID0gMDsKKyAgbGV0IHJlc29sdmU7CisgIGNvbnN0IHJlYWR5ID0gbmV3IFByb21pc2UociA9PiBy
ZXNvbHZlID0gcik7CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKAorICAgIHsKKyAgICAgIHN0YXJ0
KCkge30sCisgICAgICBwdWxsKGMpIHsKKyAgICAgICAgYy5lbnF1ZXVlKCsrdGltZXNDYWxsZWQp
OworCisgICAgICAgIGlmICh0aW1lc0NhbGxlZCA9PT0gNCkgeworICAgICAgICAgIHJlc29sdmUo
KTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgc2l6ZSgpIHsKKyAg
ICAgICAgcmV0dXJuIDE7CisgICAgICB9LAorICAgICAgaGlnaFdhdGVyTWFyazogNAorICAgIH0K
KyAgKTsKKworICByZXR1cm4gcmVhZHkudGhlbigoKSA9PiB7CisgICAgLy8gYWZ0ZXIgc3RhcnQ6
IHNpemUgPSAwLCBwdWxsKCkKKyAgICAvLyBhZnRlciBlbnF1ZXVlKDEpOiBzaXplID0gMSwgcHVs
bCgpCisgICAgLy8gYWZ0ZXIgZW5xdWV1ZSgyKTogc2l6ZSA9IDIsIHB1bGwoKQorICAgIC8vIGFm
dGVyIGVucXVldWUoMyk6IHNpemUgPSAzLCBwdWxsKCkKKyAgICAvLyBhZnRlciBlbnF1ZXVlKDQp
OiBzaXplID0gNCwgZG8gbm90IHB1bGwKKyAgICBhc3NlcnRfZXF1YWxzKHRpbWVzQ2FsbGVkLCA0
LCAncHVsbCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGZvdXIgdGltZXMnKTsKKyAgfSk7CisK
K30sICdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgcHVsbCBhZnRlciBlbnF1ZXVlaW5nIGZy
b20gaW5zaWRlIHB1bGwgKHdpdGggbm8gcmVhZCByZXF1ZXN0cyksIGlmIHN0cmF0ZWd5IGFsbG93
cycpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBwdWxsQ2FsbGVkID0gZmFsc2U7
CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHB1bGwoYykgeworICAg
ICAgcHVsbENhbGxlZCA9IHRydWU7CisgICAgICBjLmNsb3NlKCk7CisgICAgfQorICB9KTsKKwor
ICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKyAgcmV0dXJuIHJlYWRlci5jbG9zZWQu
dGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X3RydWUocHVsbENhbGxlZCk7CisgIH0pOworCit9LCAn
UmVhZGFibGVTdHJlYW0gcHVsbCBzaG91bGQgYmUgYWJsZSB0byBjbG9zZSBhIHN0cmVhbS4nKTsK
KwordGVzdCgoKSA9PiB7CisKKyAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisKKyAgbmV3IFJl
YWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBhc3NlcnRfZXF1YWxzKGMuZW5x
dWV1ZSgnYScpLCB1bmRlZmluZWQsICd0aGUgZmlyc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHVu
ZGVmaW5lZCcpOworICAgICAgYy5jbG9zZSgpOworCisgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IoKSwgKCkgPT4gYy5lbnF1ZXVlKCdiJyksICdlbnF1ZXVlIGFmdGVyIGNsb3NlIHNo
b3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOworICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOworICAg
IH0KKyAgfSk7CisKKyAgYXNzZXJ0X3RydWUoc3RhcnRDYWxsZWQpOworCit9LCAnUmVhZGFibGVT
dHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyByZWFkYWJsZSBi
dXQgZHJhaW5pbmcnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFs
c2U7CisKKyAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmNs
b3NlKCk7CisKKyAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjLmVu
cXVldWUoJ2EnKSwgJ2VucXVldWUgYWZ0ZXIgY2xvc2Ugc2hvdWxkIHRocm93IGEgVHlwZUVycm9y
Jyk7CisgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAgfQorICB9KTsKKworICBhc3NlcnRf
dHJ1ZShzdGFydENhbGxlZCk7CisKK30sICdSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQg
dGhyb3cgd2hlbiB0aGUgc3RyZWFtIGlzIGNsb3NlZCcpOworCit0ZXN0KCgpID0+IHsKKworICBs
ZXQgc3RhcnRDYWxsZWQgPSBmYWxzZTsKKyAgY29uc3QgZXhwZWN0ZWRFcnJvciA9IG5ldyBFcnJv
cignaSBhbSBzYWQnKTsKKworICBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsK
KyAgICAgIGMuZXJyb3IoZXhwZWN0ZWRFcnJvcik7CisKKyAgICAgIGFzc2VydF90aHJvd3MoZXhw
ZWN0ZWRFcnJvciwgKCkgPT4gYy5lbnF1ZXVlKCdhJyksICdlbnF1ZXVlIGFmdGVyIGVycm9yIHNo
b3VsZCB0aHJvdyB0aGF0IGVycm9yJyk7CisgICAgICBzdGFydENhbGxlZCA9IHRydWU7CisgICAg
fQorICB9KTsKKworICBhc3NlcnRfdHJ1ZShzdGFydENhbGxlZCk7CisKK30sICdSZWFkYWJsZVN0
cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgdGhlIHN0b3JlZCBlcnJvciB3aGVuIHRoZSBzdHJl
YW0gaXMgZXJyb3JlZCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBzdGFydENh
bGxlZCA9IDA7CisgIGxldCBwdWxsQ2FsbGVkID0gMDsKKyAgbGV0IGNhbmNlbENhbGxlZCA9IDA7
CisKKyAgLyogZXNsaW50LWRpc2FibGUgbm8tdXNlLWJlZm9yZS1kZWZpbmUgKi8KKyAgY2xhc3Mg
U291cmNlIHsKKyAgICBzdGFydChjKSB7CisgICAgICBzdGFydENhbGxlZCsrOworICAgICAgYXNz
ZXJ0X2VxdWFscyh0aGlzLCB0aGVTb3VyY2UsICdzdGFydCgpIHNob3VsZCBiZSBjYWxsZWQgd2l0
aCB0aGUgY29ycmVjdCB0aGlzJyk7CisgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICB9CisKKyAg
ICBwdWxsKCkgeworICAgICAgcHVsbENhbGxlZCsrOworICAgICAgYXNzZXJ0X2VxdWFscyh0aGlz
LCB0aGVTb3VyY2UsICdwdWxsKCkgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBjb3JyZWN0IHRo
aXMnKTsKKyAgICB9CisKKyAgICBjYW5jZWwoKSB7CisgICAgICBjYW5jZWxDYWxsZWQrKzsKKyAg
ICAgIGFzc2VydF9lcXVhbHModGhpcywgdGhlU291cmNlLCAnY2FuY2VsKCkgc2hvdWxkIGJlIGNh
bGxlZCB3aXRoIHRoZSBjb3JyZWN0IHRoaXMnKTsKKyAgICB9CisgIH0KKyAgLyogZXNsaW50LWVu
YWJsZSBuby11c2UtYmVmb3JlLWRlZmluZSAqLworCisgIGNvbnN0IHRoZVNvdXJjZSA9IG5ldyBT
b3VyY2UoKTsKKyAgdGhlU291cmNlLmRlYnVnTmFtZSA9ICd0aGUgc291cmNlIG9iamVjdCBwYXNz
ZWQgdG8gdGhlIGNvbnN0cnVjdG9yJzsgLy8gbWFrZXMgdGVzdCBmYWlsdXJlcyBlYXNpZXIgdG8g
ZGlhZ25vc2UKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh0aGVTb3VyY2UpOwor
ICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICByZXR1cm4gcmVhZGVyLnJlYWQo
KS50aGVuKCgpID0+IHsKKyAgICByZWFkZXIucmVsZWFzZUxvY2soKTsKKyAgICBycy5jYW5jZWwo
KTsKKyAgICBhc3NlcnRfZXF1YWxzKHN0YXJ0Q2FsbGVkLCAxKTsKKyAgICBhc3NlcnRfZXF1YWxz
KHB1bGxDYWxsZWQsIDEpOworICAgIGFzc2VydF9lcXVhbHMoY2FuY2VsQ2FsbGVkLCAxKTsKKyAg
ICByZXR1cm4gcnMuZ2V0UmVhZGVyKCkuY2xvc2VkOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3Ry
ZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRob2RzIGFzIG1ldGhvZHMnKTsK
KwordGVzdCgoKSA9PiB7CisKKyAgbGV0IHN0YXJ0Q2FsbGVkID0gZmFsc2U7CisgIG5ldyBSZWFk
YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYXNzZXJ0X2VxdWFscyhjLmRlc2ly
ZWRTaXplLCAxKTsKKyAgICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAgYXNzZXJ0X2VxdWFscyhj
LmRlc2lyZWRTaXplLCAwKTsKKyAgICAgIGMuZW5xdWV1ZSgnYicpOworICAgICAgYXNzZXJ0X2Vx
dWFscyhjLmRlc2lyZWRTaXplLCAtMSk7CisgICAgICBjLmVucXVldWUoJ2MnKTsKKyAgICAgIGFz
c2VydF9lcXVhbHMoYy5kZXNpcmVkU2l6ZSwgLTIpOworICAgICAgYy5lbnF1ZXVlKCdkJyk7Cisg
ICAgICBhc3NlcnRfZXF1YWxzKGMuZGVzaXJlZFNpemUsIC0zKTsKKyAgICAgIGMuZW5xdWV1ZSgn
ZScpOworICAgICAgc3RhcnRDYWxsZWQgPSB0cnVlOworICAgIH0KKyAgfSk7CisKKyAgYXNzZXJ0
X3RydWUoc3RhcnRDYWxsZWQpOworCit9LCAnUmVhZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhl
IGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGdpdmUgZGVzaXJlZFNpemUgb2YgMSB0byBzdGFydCwg
ZGVjcmVhc2luZyBieSAxIHBlciBlbnF1ZXVlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisK
KyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAg
ICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworICBjb25z
dCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIu
ZGVzaXJlZFNpemUsIDEsICdkZXNpcmVkU2l6ZSBzaG91bGQgc3RhcnQgYXQgMScpOworICBjb250
cm9sbGVyLmVucXVldWUoJ2EnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRT
aXplLCAwLCAnZGVzaXJlZFNpemUgc2hvdWxkIGRlY3JlYXNlIHRvIDAgYWZ0ZXIgZmlyc3QgZW5x
dWV1ZScpOworCisgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4ocmVzdWx0MSA9PiB7CisgICAg
YXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MSwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9
LCAnZmlyc3QgY2h1bmsgcmVhZCBzaG91bGQgYmUgY29ycmVjdCcpOworCisgICAgYXNzZXJ0X2Vx
dWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAxLCAnZGVzaXJlZFNpemUgc2hvdWxkIGdvIHVw
IHRvIDEgYWZ0ZXIgdGhlIGZpcnN0IHJlYWQnKTsKKyAgICBjb250cm9sbGVyLmVucXVldWUoJ2In
KTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnRyb2xsZXIuZGVzaXJlZFNpemUsIDAsICdkZXNpcmVk
U2l6ZSBzaG91bGQgZ28gZG93biB0byAwIGFmdGVyIHRoZSBzZWNvbmQgZW5xdWV1ZScpOworCisg
ICAgcmV0dXJuIHJlYWRlci5yZWFkKCk7CisgIH0pLnRoZW4ocmVzdWx0MiA9PiB7CisgICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0MiwgeyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LCAn
c2Vjb25kIGNodW5rIHJlYWQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKworICAgIGFzc2VydF9lcXVh
bHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBnbyB1cCB0
byAxIGFmdGVyIHRoZSBzZWNvbmQgcmVhZCcpOworICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYycp
OworICAgIGFzc2VydF9lcXVhbHMoY29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMCwgJ2Rlc2lyZWRT
aXplIHNob3VsZCBnbyBkb3duIHRvIDAgYWZ0ZXIgdGhlIHRoaXJkIGVucXVldWUnKTsKKworICAg
IHJldHVybiByZWFkZXIucmVhZCgpOworICB9KS50aGVuKHJlc3VsdDMgPT4geworICAgIGFzc2Vy
dF9vYmplY3RfZXF1YWxzKHJlc3VsdDMsIHsgdmFsdWU6ICdjJywgZG9uZTogZmFsc2UgfSwgJ3Ro
aXJkIGNodW5rIHJlYWQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKworICAgIGFzc2VydF9lcXVhbHMo
Y29udHJvbGxlci5kZXNpcmVkU2l6ZSwgMSwgJ2Rlc2lyZWRTaXplIHNob3VsZCBnbyB1cCB0byAx
IGFmdGVyIHRoZSB0aGlyZCByZWFkJyk7CisgICAgY29udHJvbGxlci5lbnF1ZXVlKCdkJyk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhjb250cm9sbGVyLmRlc2lyZWRTaXplLCAwLCAnZGVzaXJlZFNpemUg
c2hvdWxkIGdvIGRvd24gdG8gMCBhZnRlciB0aGUgZm91cnRoIGVucXVldWUnKTsKKyAgfSk7CisK
K30sICdSZWFkYWJsZVN0cmVhbSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91
bGQgY29udGludWUgZ2l2aW5nIGRlc2lyZWRTaXplIG9mIDEgaWYgdGhlIGNodW5rcyBhcmUgcmVh
ZCBpbW1lZGlhdGVseScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgcmFuZG9t
U291cmNlID0gbmV3IFJhbmRvbVB1c2hTb3VyY2UoOCk7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGFzc2VydF9lcXVhbHModHlwZW9m
IGMsICdvYmplY3QnLCAnYyBzaG91bGQgYmUgYW4gb2JqZWN0IGluIHN0YXJ0Jyk7CisgICAgICBh
c3NlcnRfZXF1YWxzKHR5cGVvZiBjLmVucXVldWUsICdmdW5jdGlvbicsICdlbnF1ZXVlIHNob3Vs
ZCBiZSBhIGZ1bmN0aW9uIGluIHN0YXJ0Jyk7CisgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBj
LmNsb3NlLCAnZnVuY3Rpb24nLCAnY2xvc2Ugc2hvdWxkIGJlIGEgZnVuY3Rpb24gaW4gc3RhcnQn
KTsKKyAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGMuZXJyb3IsICdmdW5jdGlvbicsICdlcnJv
ciBzaG91bGQgYmUgYSBmdW5jdGlvbiBpbiBzdGFydCcpOworCisgICAgICByYW5kb21Tb3VyY2Uu
b25kYXRhID0gdC5zdGVwX2Z1bmMoY2h1bmsgPT4geworICAgICAgICBpZiAoIWMuZW5xdWV1ZShj
aHVuaykgPD0gMCkgeworICAgICAgICAgIHJhbmRvbVNvdXJjZS5yZWFkU3RvcCgpOworICAgICAg
ICB9CisgICAgICB9KTsKKworICAgICAgcmFuZG9tU291cmNlLm9uZW5kID0gYy5jbG9zZS5iaW5k
KGMpOworICAgICAgcmFuZG9tU291cmNlLm9uZXJyb3IgPSBjLmVycm9yLmJpbmQoYyk7CisgICAg
fSwKKworICAgIHB1bGwoYykgeworICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgYywgJ29iamVj
dCcsICdjIHNob3VsZCBiZSBhbiBvYmplY3QgaW4gcHVsbCcpOworICAgICAgYXNzZXJ0X2VxdWFs
cyh0eXBlb2YgYy5lbnF1ZXVlLCAnZnVuY3Rpb24nLCAnZW5xdWV1ZSBzaG91bGQgYmUgYSBmdW5j
dGlvbiBpbiBwdWxsJyk7CisgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBjLmNsb3NlLCAnZnVu
Y3Rpb24nLCAnY2xvc2Ugc2hvdWxkIGJlIGEgZnVuY3Rpb24gaW4gcHVsbCcpOworCisgICAgICBy
YW5kb21Tb3VyY2UucmVhZFN0YXJ0KCk7CisgICAgfQorICB9KTsKKworICByZXR1cm4gcmVhZGFi
bGVTdHJlYW1Ub0FycmF5KHJzKS50aGVuKGNodW5rcyA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhj
aHVua3MubGVuZ3RoLCA4LCAnOCBjaHVua3Mgc2hvdWxkIGJlIHJlYWQnKTsKKyAgICBmb3IgKGNv
bnN0IGNodW5rIG9mIGNodW5rcykgeworICAgICAgYXNzZXJ0X2VxdWFscyhjaHVuay5sZW5ndGgs
IDEyOCwgJ2NodW5rIHNob3VsZCBoYXZlIDEyOCBieXRlcycpOworICAgIH0KKyAgfSk7CisKK30s
ICdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHJhbmRvbSBwdXNo
IHNvdXJjZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHJzID0gc2VxdWVu
dGlhbFJlYWRhYmxlU3RyZWFtKDEwKTsKKworICByZXR1cm4gcmVhZGFibGVTdHJlYW1Ub0FycmF5
KHJzKS50aGVuKGNodW5rcyA9PiB7CisgICAgYXNzZXJ0X3RydWUocnMuc291cmNlLmNsb3NlZCwg
J3NvdXJjZSBzaG91bGQgYmUgY2xvc2VkIGFmdGVyIGFsbCBjaHVua3MgYXJlIHJlYWQnKTsKKyAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rcywgWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDks
IDEwXSwgJ3RoZSBleHBlY3RlZCAxMCBjaHVua3Mgc2hvdWxkIGJlIHJlYWQnKTsKKyAgfSk7CisK
K30sICdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHN5bmMgcHVs
bCBzb3VyY2UnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IHNlcXVl
bnRpYWxSZWFkYWJsZVN0cmVhbSgxMCwgeyBhc3luYzogdHJ1ZSB9KTsKKworICByZXR1cm4gcmVh
ZGFibGVTdHJlYW1Ub0FycmF5KHJzKS50aGVuKGNodW5rcyA9PiB7CisgICAgYXNzZXJ0X3RydWUo
cnMuc291cmNlLmNsb3NlZCwgJ3NvdXJjZSBzaG91bGQgYmUgY2xvc2VkIGFmdGVyIGFsbCBjaHVu
a3MgYXJlIHJlYWQnKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNodW5rcywgWzEsIDIsIDMs
IDQsIDUsIDYsIDcsIDgsIDksIDEwXSwgJ3RoZSBleHBlY3RlZCAxMCBjaHVua3Mgc2hvdWxkIGJl
IHJlYWQnKTsKKyAgfSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBh
ZGFwdGluZyBhbiBhc3luYyBwdWxsIHNvdXJjZScpOworCitkb25lKCk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy9waXBlLXRocm91Z2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcGlwZS10
aHJvdWdoLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZTE4N2EyYzM5NWNmYTY0MjAzNTY5MGM3
NzFjZmY5NjAyMTllMDg3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcGlwZS10aHJv
dWdoLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACisKK1BBU1MgUmVhZGFibGVTdHJlYW0u
cHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3VsZCB3b3JrIGdlbmVyaWNhbGx5IG9uIGl0cyB0aGlz
IGFuZCBpdHMgYXJndW1lbnRzIAorUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRo
cm91Z2ggc2hvdWxkIHRocm93IHdoZW4gaXRzIGZpcnN0IGFyZ3VtZW50IGlzIG5vdCBjb252ZXJ0
aWJsZSB0byBhbiBvYmplY3QgCitQQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhy
b3VnaCBzaG91bGQgdGhyb3cgd2hlbiAidGhpcyIgaGFzIG5vIHBpcGVUbyBtZXRob2QgCitQQVNT
IFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCBzaG91bGQgcmV0aHJvdyBlcnJv
cnMgZnJvbSBhY2Nlc3NpbmcgcGlwZVRvLCByZWFkYWJsZSwgb3Igd3JpdGFibGUgCitQQVNTIFJl
YWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCBzaG91bGQgd29yayB3aXRoIG1pc3Np
bmcgcmVhZGFibGUsIHdyaXRhYmxlLCBvciBvcHRpb25zIAorRkFJTCBMb2FkIHBpcGUtdGhyb3Vn
aC5qcyB3aXRoIFNoYXJlZFdvcmtlciBhc3NlcnRfdW5yZWFjaGVkOiBTaGFyZWRXb3JrZXIgaXMg
dW5hdmFpbGFibGUgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCitGQUlMIFVudGl0bGVkIHVuZGVm
aW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICduYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5nZXRSZWdpc3RyYXRpb24nKQorUEFTUyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRo
cm91Z2ggc2hvdWxkIHdvcmsgZ2VuZXJpY2FsbHkgb24gaXRzIHRoaXMgYW5kIGl0cyBhcmd1bWVu
dHMgCitQQVNTIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCBzaG91bGQgdGhy
b3cgd2hlbiBpdHMgZmlyc3QgYXJndW1lbnQgaXMgbm90IGNvbnZlcnRpYmxlIHRvIGFuIG9iamVj
dCAKK1BBU1MgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3VsZCB0aHJv
dyB3aGVuICJ0aGlzIiBoYXMgbm8gcGlwZVRvIG1ldGhvZCAKK1BBU1MgUmVhZGFibGVTdHJlYW0u
cHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3VsZCByZXRocm93IGVycm9ycyBmcm9tIGFjY2Vzc2lu
ZyBwaXBlVG8sIHJlYWRhYmxlLCBvciB3cml0YWJsZSAKK1BBU1MgUmVhZGFibGVTdHJlYW0ucHJv
dG90eXBlLnBpcGVUaHJvdWdoIHNob3VsZCB3b3JrIHdpdGggbWlzc2luZyByZWFkYWJsZSwgd3Jp
dGFibGUsIG9yIG9wdGlvbnMgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3BpcGUtdGhyb3Vn
aC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbXMvcGlwZS10aHJvdWdoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjJkOThk
NDVhZjQ2ZjI1ZmUwNjI2MjEwZDhmYTE5MTVjYzY0NWNmNgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL3BpcGUtdGhyb3VnaC5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIj48L3NjcmlwdD4KKworPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJwaXBlLXRocm91Z2guanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyd1c2Ugc3RyaWN0JzsK
K3dvcmtlcl90ZXN0KCdwaXBlLXRocm91Z2guanMnKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbXMvcGlwZS10aHJvdWdoLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcGlwZS10aHJvdWdoLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQ5ODg5MjhlNzhiMThlNzNhZjQ0ZWNmNDlkZDFlNGFmODFiNmIzZWYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9waXBlLXRocm91Z2guanMKQEAgLTAsMCArMSwx
MDggQEAKKyd1c2Ugc3RyaWN0JzsKKworaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgeworICBzZWxm
LmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzJyk7CisgIHNlbGYuaW1w
b3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOworfQorCit0ZXN0KCgpID0+
IHsKKworICBsZXQgcGlwZVRvQXJndW1lbnRzOworICBjb25zdCB0aGlzVmFsdWUgPSB7CisgICAg
cGlwZVRvKCkgeworICAgICAgcGlwZVRvQXJndW1lbnRzID0gYXJndW1lbnRzOworICAgIH0KKyAg
fTsKKworICBjb25zdCBpbnB1dCA9IHsgcmVhZGFibGU6IHt9LCB3cml0YWJsZToge30gfTsKKyAg
Y29uc3Qgb3B0aW9ucyA9IHt9OworICBjb25zdCByZXN1bHQgPSBSZWFkYWJsZVN0cmVhbS5wcm90
b3R5cGUucGlwZVRocm91Z2guY2FsbCh0aGlzVmFsdWUsIGlucHV0LCBvcHRpb25zKTsKKworICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHBpcGVUb0FyZ3VtZW50cywgW2lucHV0LndyaXRhYmxlLCBvcHRp
b25zXSwKKyAgICAnY29ycmVjdCBhcmd1bWVudHMgc2hvdWxkIGJlIHBhc3NlZCB0byB0aGlzVmFs
dWUucGlwZVRvJyk7CisgIGFzc2VydF9lcXVhbHMocmVzdWx0LCBpbnB1dC5yZWFkYWJsZSwgJ3Jl
dHVybiB2YWx1ZSBzaG91bGQgYmUgdGhlIHBhc3NlZCByZWFkYWJsZSBwcm9wZXJ0eScpOworCit9
LCAnUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3VsZCB3b3JrIGdlbmVy
aWNhbGx5IG9uIGl0cyB0aGlzIGFuZCBpdHMgYXJndW1lbnRzJyk7CisKK3Rlc3QoKCkgPT4gewor
CisgIGNvbnN0IHRoaXNWYWx1ZSA9IHsKKyAgICBwaXBlVG8oKSB7CisgICAgICBhc3NlcnRfdW5y
ZWFjaGVkKCdwaXBlVG8gc2hvdWxkIG5vdCBiZSBjYWxsZWQnKTsKKyAgICB9CisgIH07CisKKyAg
bWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ3BpcGVUaHJvdWdoJywgdGhp
c1ZhbHVlLCBbdW5kZWZpbmVkLCB7fV0pOworICBtZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW0u
cHJvdG90eXBlLCAncGlwZVRocm91Z2gnLCB0aGlzVmFsdWUsIFtudWxsLCB7fV0pOworCit9LCAn
UmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoIHNob3VsZCB0aHJvdyB3aGVuIGl0
cyBmaXJzdCBhcmd1bWVudCBpcyBub3QgY29udmVydGlibGUgdG8gYW4gb2JqZWN0Jyk7CisKK3Rl
c3QoKCkgPT4geworCisgIGNvbnN0IGFyZ3MgPSBbeyByZWFkYWJsZToge30sIHdyaXRhYmxlOiB7
fSB9LCB7fV07CisKKyAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZSwgJ3Bp
cGVUaHJvdWdoJywgdW5kZWZpbmVkLCBhcmdzKTsKKyAgbWV0aG9kVGhyb3dzKFJlYWRhYmxlU3Ry
ZWFtLnByb3RvdHlwZSwgJ3BpcGVUaHJvdWdoJywgbnVsbCwgYXJncyk7CisgIG1ldGhvZFRocm93
cyhSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUsICdwaXBlVGhyb3VnaCcsIDEsIGFyZ3MpOworICBt
ZXRob2RUaHJvd3MoUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLCAncGlwZVRocm91Z2gnLCB7IHBp
cGVUbzogJ3Rlc3QnIH0sIGFyZ3MpOworCit9LCAnUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBp
cGVUaHJvdWdoIHNob3VsZCB0aHJvdyB3aGVuICJ0aGlzIiBoYXMgbm8gcGlwZVRvIG1ldGhvZCcp
OworCit0ZXN0KCgpID0+IHsKKyAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ3BvdGF0bycpOwor
CisgIGNvbnN0IHRocm93aW5nUGlwZVRvID0geworICAgIGdldCBwaXBlVG8oKSB7CisgICAgICB0
aHJvdyBlcnJvcjsKKyAgICB9CisgIH07CisgIGFzc2VydF90aHJvd3MoZXJyb3IsCisgICAgKCkg
PT4gUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoLmNhbGwodGhyb3dpbmdQaXBl
VG8sIHsgcmVhZGFibGU6IHsgfSwgd3JpdGFibGU6IHsgfSB9LCB7fSksCisgICAgJ3BpcGVUaHJv
dWdoIHNob3VsZCByZXRocm93IHRoZSBlcnJvciB0aHJvd24gYnkgcGlwZVRvJyk7CisKKyAgY29u
c3QgdGhpc1ZhbHVlID0geworICAgIHBpcGVUbygpIHsKKyAgICAgIGFzc2VydF91bnJlYWNoZWQo
J3BpcGVUbyBzaG91bGQgbm90IGJlIGNhbGxlZCcpOworICAgIH0KKyAgfTsKKworICBjb25zdCB0
aHJvd2luZ1dyaXRhYmxlID0geworICAgIHJlYWRhYmxlOiB7fSwKKyAgICBnZXQgd3JpdGFibGUo
KSB7CisgICAgICB0aHJvdyBlcnJvcjsKKyAgICB9CisgIH07CisgIGFzc2VydF90aHJvd3MoZXJy
b3IsCisgICAgKCkgPT4gUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoLmNhbGwo
dGhpc1ZhbHVlLCB0aHJvd2luZ1dyaXRhYmxlLCB7fSksCisgICAgJ3BpcGVUaHJvdWdoIHNob3Vs
ZCByZXRocm93IHRoZSBlcnJvciB0aHJvd24gYnkgdGhlIHdyaXRhYmxlIGdldHRlcicpOworCisg
IGNvbnN0IHRocm93aW5nUmVhZGFibGUgPSB7CisgICAgZ2V0IHJlYWRhYmxlKCkgeworICAgICAg
dGhyb3cgZXJyb3I7CisgICAgfSwKKyAgICB3cml0YWJsZToge30KKyAgfTsKKyAgYXNzZXJ0X3Ro
cm93cyhlcnJvciwKKyAgICAoKSA9PiBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91
Z2guY2FsbCh0aGlzVmFsdWUsIHRocm93aW5nUmVhZGFibGUsIHt9KSwKKyAgICAncGlwZVRocm91
Z2ggc2hvdWxkIHJldGhyb3cgdGhlIGVycm9yIHRocm93biBieSB0aGUgcmVhZGFibGUgZ2V0dGVy
Jyk7CisKK30sICdSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2ggc2hvdWxkIHJl
dGhyb3cgZXJyb3JzIGZyb20gYWNjZXNzaW5nIHBpcGVUbywgcmVhZGFibGUsIG9yIHdyaXRhYmxl
Jyk7CisKK3Rlc3QoKCkgPT4geworCisgIGxldCBjb3VudCA9IDA7CisgIGNvbnN0IHRoaXNWYWx1
ZSA9IHsKKyAgICBwaXBlVG8oKSB7CisgICAgICArK2NvdW50OworICAgIH0KKyAgfTsKKworICBS
ZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2guY2FsbCh0aGlzVmFsdWUsIHsgcmVh
ZGFibGU6IHt9LCB3cml0YWJsZToge30gfSk7CisgIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5w
aXBlVGhyb3VnaC5jYWxsKHRoaXNWYWx1ZSwgeyByZWFkYWJsZToge30gfSwge30pOworICBSZWFk
YWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2guY2FsbCh0aGlzVmFsdWUsIHsgd3JpdGFi
bGU6IHt9IH0sIHt9KTsKKworICBhc3NlcnRfZXF1YWxzKGNvdW50LCAzLCAncGlwZVRvIHdhcyBj
YWxsZWQgMyB0aW1lcycpOworCit9LCAnUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJv
dWdoIHNob3VsZCB3b3JrIHdpdGggbWlzc2luZyByZWFkYWJsZSwgd3JpdGFibGUsIG9yIG9wdGlv
bnMnKTsKKworZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFt
LXJlYWRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVy
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjAzODJiNjgyODYwYWRmNDY1Zjk2NTkxNTM0NGY0
M2M0YTM0ZDU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbXMvcmVhZGFibGUtc3RyZWFt
LXJlYWRlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1NiBAQAorCitQQVNTIENhbiBnZXQgdGhl
IFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9yIGluZGlyZWN0bHkgCitQQVNTIFJlYWRh
YmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9yIHNob3VsZCBnZXQgYSBSZWFkYWJsZVN0cmVhbSBv
YmplY3QgYXMgYXJndW1lbnQgCitGQUlMIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGluc3RhbmNlcyBz
aG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9mIHByb3BlcnRpZXMgYXNzZXJ0X2VxdWFsczog
bWV0aG9kIHNob3VsZCBiZSBub24tZW51bWVyYWJsZSBleHBlY3RlZCBmYWxzZSBidXQgZ290IHRy
dWUKK1BBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHNob3VsZCBhbHdheXMgcmV0dXJu
IHRoZSBzYW1lIHByb21pc2Ugb2JqZWN0IAorUEFTUyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0
cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkg
bG9ja2VkICh2aWEgZGlyZWN0IGNvbnN0cnVjdGlvbikgCitQQVNTIEdldHRpbmcgYSBSZWFkYWJs
ZVN0cmVhbVJlYWRlciB2aWEgZ2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMg
YWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3QgY29uc3RydWN0aW9uKSAKK1BBU1MgQ29uc3RydWN0
aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZhaWwgaWYgdGhlIHN0
cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGdldFJlYWRlcikgCitQQVNTIEdldHRpbmcgYSBS
ZWFkYWJsZVN0cmVhbVJlYWRlciB2aWEgZ2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBzdHJl
YW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBnZXRSZWFkZXIpIAorUEFTUyBDb25zdHJ1Y3Rpbmcg
YSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUgT0sgaWYgdGhlIHN0cmVh
bSBpcyBjbG9zZWQgCitQQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRp
cmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlzIGVycm9yZWQgCitQQVNTIFJlYWRp
bmcgZnJvbSBhIHJlYWRlciBmb3IgYW4gZW1wdHkgc3RyZWFtIHdpbGwgd2FpdCB1bnRpbCBhIGNo
dW5rIGlzIGF2YWlsYWJsZSAKK1BBU1MgY2FuY2VsKCkgb24gYSByZWFkZXIgZG9lcyBub3QgcmVs
ZWFzZSB0aGUgcmVhZGVyIAorUEFTUyBjbG9zZWQgc2hvdWxkIGJlIGZ1bGZpbGxlZCBhZnRlciBz
dHJlYW0gaXMgY2xvc2VkICguY2xvc2VkIGFjY2VzcyBiZWZvcmUgYWNxdWlyaW5nKSAKK1BBU1Mg
Y2xvc2VkIHNob3VsZCBiZSByZWplY3RlZCBhZnRlciByZWFkZXIgcmVsZWFzZXMgaXRzIGxvY2sg
KG11bHRpcGxlIHN0cmVhbSBsb2NrcykgCitQQVNTIE11bHRpcGxlIHJlYWRlcnMgY2FuIGFjY2Vz
cyB0aGUgc3RyZWFtIGluIHNlcXVlbmNlIAorUEFTUyBDYW5ub3QgdXNlIGFuIGFscmVhZHktcmVs
ZWFzZWQgcmVhZGVyIHRvIHVubG9jayBhIHN0cmVhbSBhZ2FpbiAKK1BBU1MgY2FuY2VsKCkgb24g
YSByZWxlYXNlZCByZWFkZXIgaXMgYSBuby1vcCBhbmQgZG9lcyBub3QgcGFzcyB0aHJvdWdoIAor
UEFTUyBHZXR0aW5nIGEgc2Vjb25kIHJlYWRlciBhZnRlciBlcnJvcmluZyB0aGUgc3RyZWFtIGFu
ZCByZWxlYXNpbmcgdGhlIHJlYWRlciBzaG91bGQgc3VjY2VlZCAKK1BBU1MgUmVhZGFibGVTdHJl
YW1SZWFkZXIgY2xvc2VkIHByb21pc2Ugc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdW5kZWZpbmVk
IGlmIHRoYXQgaXMgdGhlIGVycm9yIAorUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlcjogaWYgc3Rh
cnQgcmVqZWN0cyB3aXRoIG5vIHBhcmFtZXRlciwgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0g
d2l0aCBhbiB1bmRlZmluZWQgZXJyb3IgCitQQVNTIEVycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0g
YWZ0ZXIgY2hlY2tpbmcgY2xvc2VkIHNob3VsZCByZWplY3QgUmVhZGFibGVTdHJlYW1SZWFkZXIg
Y2xvc2VkIHByb21pc2UgCitQQVNTIEVycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gYmVmb3JlIGNo
ZWNraW5nIGNsb3NlZCBzaG91bGQgcmVqZWN0IFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBw
cm9taXNlIAorUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgc3RyZWFtIHRoYXQgZ2V0cyBjbG9zZWQg
CitQQVNTIFJlYWRpbmcgdHdpY2Ugb24gYSBjbG9zZWQgc3RyZWFtIAorUEFTUyBSZWFkaW5nIHR3
aWNlIG9uIGFuIGVycm9yZWQgc3RyZWFtIAorUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgc3RyZWFt
IHRoYXQgZ2V0cyBlcnJvcmVkIAorRkFJTCBMb2FkIHJlYWRhYmxlLXN0cmVhbS1yZWFkZXIuanMg
d2l0aCBTaGFyZWRXb3JrZXIgYXNzZXJ0X3VucmVhY2hlZDogU2hhcmVkV29ya2VyIGlzIHVuYXZh
aWxhYmxlIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBVbnRpdGxlZCB1bmRlZmluZWQg
aXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuZ2V0
UmVnaXN0cmF0aW9uJykKK1BBU1MgQ2FuIGdldCB0aGUgUmVhZGFibGVTdHJlYW1SZWFkZXIgY29u
c3RydWN0b3IgaW5kaXJlY3RseSAKK1BBU1MgUmVhZGFibGVTdHJlYW1SZWFkZXIgY29uc3RydWN0
b3Igc2hvdWxkIGdldCBhIFJlYWRhYmxlU3RyZWFtIG9iamVjdCBhcyBhcmd1bWVudCAKK0ZBSUwg
UmVhZGFibGVTdHJlYW1SZWFkZXIgaW5zdGFuY2VzIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IGxp
c3Qgb2YgcHJvcGVydGllcyBhc3NlcnRfZXF1YWxzOiBtZXRob2Qgc2hvdWxkIGJlIG5vbi1lbnVt
ZXJhYmxlIGV4cGVjdGVkIGZhbHNlIGJ1dCBnb3QgdHJ1ZQorUEFTUyBSZWFkYWJsZVN0cmVhbVJl
YWRlciBjbG9zZWQgc2hvdWxkIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgcHJvbWlzZSBvYmplY3Qg
CitQQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3Vs
ZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3QgY29uc3Ry
dWN0aW9uKSAKK1BBU1MgR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHZpYSBnZXRSZWFk
ZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVj
dCBjb25zdHJ1Y3Rpb24pIAorUEFTUyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRl
ciBkaXJlY3RseSBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2
aWEgZ2V0UmVhZGVyKSAKK1BBU1MgR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHZpYSBn
ZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlh
IGdldFJlYWRlcikgCitQQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRp
cmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCAKK1BBU1MgQ29uc3Ry
dWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRo
ZSBzdHJlYW0gaXMgZXJyb3JlZCAKK1BBU1MgUmVhZGluZyBmcm9tIGEgcmVhZGVyIGZvciBhbiBl
bXB0eSBzdHJlYW0gd2lsbCB3YWl0IHVudGlsIGEgY2h1bmsgaXMgYXZhaWxhYmxlIAorUEFTUyBj
YW5jZWwoKSBvbiBhIHJlYWRlciBkb2VzIG5vdCByZWxlYXNlIHRoZSByZWFkZXIgCitQQVNTIGNs
b3NlZCBzaG91bGQgYmUgZnVsZmlsbGVkIGFmdGVyIHN0cmVhbSBpcyBjbG9zZWQgKC5jbG9zZWQg
YWNjZXNzIGJlZm9yZSBhY3F1aXJpbmcpIAorUEFTUyBjbG9zZWQgc2hvdWxkIGJlIHJlamVjdGVk
IGFmdGVyIHJlYWRlciByZWxlYXNlcyBpdHMgbG9jayAobXVsdGlwbGUgc3RyZWFtIGxvY2tzKSAK
K1BBU1MgTXVsdGlwbGUgcmVhZGVycyBjYW4gYWNjZXNzIHRoZSBzdHJlYW0gaW4gc2VxdWVuY2Ug
CitQQVNTIENhbm5vdCB1c2UgYW4gYWxyZWFkeS1yZWxlYXNlZCByZWFkZXIgdG8gdW5sb2NrIGEg
c3RyZWFtIGFnYWluIAorUEFTUyBjYW5jZWwoKSBvbiBhIHJlbGVhc2VkIHJlYWRlciBpcyBhIG5v
LW9wIGFuZCBkb2VzIG5vdCBwYXNzIHRocm91Z2ggCitQQVNTIEdldHRpbmcgYSBzZWNvbmQgcmVh
ZGVyIGFmdGVyIGVycm9yaW5nIHRoZSBzdHJlYW0gYW5kIHJlbGVhc2luZyB0aGUgcmVhZGVyIHNo
b3VsZCBzdWNjZWVkIAorUEFTUyBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgcHJvbWlzZSBz
aG91bGQgYmUgcmVqZWN0ZWQgd2l0aCB1bmRlZmluZWQgaWYgdGhhdCBpcyB0aGUgZXJyb3IgCitQ
QVNTIFJlYWRhYmxlU3RyZWFtUmVhZGVyOiBpZiBzdGFydCByZWplY3RzIHdpdGggbm8gcGFyYW1l
dGVyLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSB3aXRoIGFuIHVuZGVmaW5lZCBlcnJvciAK
K1BBU1MgRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBhZnRlciBjaGVja2luZyBjbG9zZWQgc2hv
dWxkIHJlamVjdCBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgcHJvbWlzZSAKK1BBU1MgRXJy
b3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBiZWZvcmUgY2hlY2tpbmcgY2xvc2VkIHNob3VsZCByZWpl
Y3QgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2VkIHByb21pc2UgCitQQVNTIFJlYWRpbmcgdHdp
Y2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGNsb3NlZCAKK1BBU1MgUmVhZGluZyB0d2ljZSBvbiBh
IGNsb3NlZCBzdHJlYW0gCitQQVNTIFJlYWRpbmcgdHdpY2Ugb24gYW4gZXJyb3JlZCBzdHJlYW0g
CitQQVNTIFJlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGVycm9yZWQgCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZjBkYjExZDFi
YzRlODNjM2Y1MzhmNDdlNjY3YzczNWFiNDBjOGY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9D
VFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtl
cnMvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy90ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzIj48L3NjcmlwdD4K
KworPHNjcmlwdCBzcmM9InJlYWRhYmxlLXN0cmVhbS1yZWFkZXIuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD4KKyd1c2Ugc3RyaWN0JzsKK3dvcmtlcl90ZXN0KCdyZWFkYWJsZS1zdHJlYW0tcmVhZGVy
LmpzJyk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bS1yZWFkZXIuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjFkNWJjMTMwMDRmOGEzNTdmYzVlODI1MjJmM2JkMzA5ZjEzMTFiOWEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmpzCkBAIC0wLDAg
KzEsNDg1IEBACisndXNlIHN0cmljdCc7CisKK2lmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKKyAg
c2VsZi5pbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvcnMtdXRpbHMuanMnKTsKKyAgc2VsZi5p
bXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7Cit9CisKK2xldCBSZWFk
YWJsZVN0cmVhbVJlYWRlcjsKKwordGVzdCgoKSA9PiB7CisKKyAgLy8gSXQncyBub3QgZXhwb3Nl
ZCBnbG9iYWxseSwgYnV0IHdlIHRlc3QgYSBmZXcgb2YgaXRzIHByb3BlcnRpZXMgaGVyZS4KKyAg
UmVhZGFibGVTdHJlYW1SZWFkZXIgPSAobmV3IFJlYWRhYmxlU3RyZWFtKCkpLmdldFJlYWRlcigp
LmNvbnN0cnVjdG9yOworCit9LCAnQ2FuIGdldCB0aGUgUmVhZGFibGVTdHJlYW1SZWFkZXIgY29u
c3RydWN0b3IgaW5kaXJlY3RseScpOworCit0ZXN0KCgpID0+IHsKKworICBhc3NlcnRfdGhyb3dz
KG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKCdwb3RhdG8n
KSk7CisgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBuZXcgUmVhZGFibGVT
dHJlYW1SZWFkZXIoe30pKTsKKyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+
IG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcigpKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtUmVhZGVy
IGNvbnN0cnVjdG9yIHNob3VsZCBnZXQgYSBSZWFkYWJsZVN0cmVhbSBvYmplY3QgYXMgYXJndW1l
bnQnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgbWV0aG9kcyA9IFsnY2FuY2VsJywgJ2Nv
bnN0cnVjdG9yJywgJ3JlYWQnLCAncmVsZWFzZUxvY2snXTsKKyAgY29uc3QgcHJvcGVydGllcyA9
IG1ldGhvZHMuY29uY2F0KFsnY2xvc2VkJ10pLnNvcnQoKTsKKworICBjb25zdCByc1JlYWRlciA9
IG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihuZXcgUmVhZGFibGVTdHJlYW0oKSk7CisgIGNvbnN0
IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHJzUmVhZGVyKTsKKworICBhc3NlcnRfYXJy
YXlfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvKS5zb3J0KCksIHByb3Bl
cnRpZXMpOworCisgIGZvciAoY29uc3QgbSBvZiBtZXRob2RzKSB7CisgICAgY29uc3QgcHJvcERl
c2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBtKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKHByb3BEZXNjLmVudW1lcmFibGUsIGZhbHNlLCAnbWV0aG9kIHNob3VsZCBiZSBu
b24tZW51bWVyYWJsZScpOworICAgIGFzc2VydF9lcXVhbHMocHJvcERlc2MuY29uZmlndXJhYmxl
LCB0cnVlLCAnbWV0aG9kIHNob3VsZCBiZSBjb25maWd1cmFibGUnKTsKKyAgICBhc3NlcnRfZXF1
YWxzKHByb3BEZXNjLndyaXRhYmxlLCB0cnVlLCAnbWV0aG9kIHNob3VsZCBiZSB3cml0YWJsZScp
OworICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJzUmVhZGVyW21dLCAnZnVuY3Rpb24nLCAnc2hv
dWxkIGhhdmUgYmUgYSBtZXRob2QnKTsKKyAgfQorCisgIGNvbnN0IGNsb3NlZFByb3BEZXNjID0g
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgJ2Nsb3NlZCcpOworICBhc3Nl
cnRfZXF1YWxzKGNsb3NlZFByb3BEZXNjLmVudW1lcmFibGUsIGZhbHNlLCAnY2xvc2VkIHNob3Vs
ZCBiZSBub24tZW51bWVyYWJsZScpOworICBhc3NlcnRfZXF1YWxzKGNsb3NlZFByb3BEZXNjLmNv
bmZpZ3VyYWJsZSwgdHJ1ZSwgJ2Nsb3NlZCBzaG91bGQgYmUgY29uZmlndXJhYmxlJyk7CisgIGFz
c2VydF9ub3RfZXF1YWxzKGNsb3NlZFByb3BEZXNjLmdldCwgdW5kZWZpbmVkLCAnY2xvc2VkIHNo
b3VsZCBoYXZlIGEgZ2V0dGVyJyk7CisgIGFzc2VydF9lcXVhbHMoY2xvc2VkUHJvcERlc2Muc2V0
LCB1bmRlZmluZWQsICdjbG9zZWQgc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyJyk7CisKKyAgYXNz
ZXJ0X2VxdWFscyhyc1JlYWRlci5jYW5jZWwubGVuZ3RoLCAxLCAnY2FuY2VsIGhhcyAxIHBhcmFt
ZXRlcicpOworICBhc3NlcnRfbm90X2VxdWFscyhyc1JlYWRlci5jbG9zZWQsIHVuZGVmaW5lZCwg
J2hhcyBhIG5vbi11bmRlZmluZWQgY2xvc2VkIHByb3BlcnR5Jyk7CisgIGFzc2VydF9lcXVhbHMo
dHlwZW9mIHJzUmVhZGVyLmNsb3NlZC50aGVuLCAnZnVuY3Rpb24nLCAnY2xvc2VkIHByb3BlcnR5
IGlzIHRoZW5hYmxlJyk7CisgIGFzc2VydF9lcXVhbHModHlwZW9mIHJzUmVhZGVyLmNvbnN0cnVj
dG9yLCAnZnVuY3Rpb24nLCAnaGFzIGEgY29uc3RydWN0b3IgbWV0aG9kJyk7CisgIGFzc2VydF9l
cXVhbHMocnNSZWFkZXIuY29uc3RydWN0b3IubGVuZ3RoLCAxLCAnY29uc3RydWN0b3IgaGFzIDEg
cGFyYW1ldGVyJyk7CisgIGFzc2VydF9lcXVhbHModHlwZW9mIHJzUmVhZGVyLnJlYWQsICdmdW5j
dGlvbicsICdoYXMgYSBnZXRSZWFkZXIgbWV0aG9kJyk7CisgIGFzc2VydF9lcXVhbHMocnNSZWFk
ZXIucmVhZC5sZW5ndGgsIDAsICdyZWFkIGhhcyBubyBwYXJhbWV0ZXJzJyk7CisgIGFzc2VydF9l
cXVhbHModHlwZW9mIHJzUmVhZGVyLnJlbGVhc2VMb2NrLCAnZnVuY3Rpb24nLCAnaGFzIGEgcmVs
ZWFzZUxvY2sgbWV0aG9kJyk7CisgIGFzc2VydF9lcXVhbHMocnNSZWFkZXIucmVsZWFzZUxvY2su
bGVuZ3RoLCAwLCAncmVsZWFzZUxvY2sgaGFzIG5vIHBhcmFtZXRlcnMnKTsKKworfSwgJ1JlYWRh
YmxlU3RyZWFtUmVhZGVyIGluc3RhbmNlcyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBsaXN0IG9m
IHByb3BlcnRpZXMnKTsKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgcnNSZWFkZXIgPSBuZXcg
UmVhZGFibGVTdHJlYW1SZWFkZXIobmV3IFJlYWRhYmxlU3RyZWFtKCkpOworICBhc3NlcnRfZXF1
YWxzKHJzUmVhZGVyLmNsb3NlZCwgcnNSZWFkZXIuY2xvc2VkLCAnY2xvc2VkIHNob3VsZCByZXR1
cm4gdGhlIHNhbWUgcHJvbWlzZScpOworCit9LCAnUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2Vk
IHNob3VsZCBhbHdheXMgcmV0dXJuIHRoZSBzYW1lIHByb21pc2Ugb2JqZWN0Jyk7CisKK3Rlc3Qo
KCkgPT4geworCisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgIG5ldyBSZWFk
YWJsZVN0cmVhbVJlYWRlcihycyk7IC8vIENvbnN0cnVjdGluZyBkaXJlY3RseSB0aGUgZmlyc3Qg
dGltZSBzaG91bGQgYmUgZmluZS4KKyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgp
ID0+IG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihycyksCisgICAgICAgICAgICAgICAgJ2NvbnN0
cnVjdGluZyBkaXJlY3RseSB0aGUgc2Vjb25kIHRpbWUgc2hvdWxkIGZhaWwnKTsKKworfSwgJ0Nv
bnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBmYWlsIGlm
IHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZpYSBkaXJlY3QgJyArCisgICAnY29uc3Ry
dWN0aW9uKScpOworCit0ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSgpOworICBuZXcgUmVhZGFibGVTdHJlYW1SZWFkZXIocnMpOyAvLyBDb25zdHJ1Y3Rpbmcg
ZGlyZWN0bHkgc2hvdWxkIGJlIGZpbmUuCisgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigp
LCAoKSA9PiBycy5nZXRSZWFkZXIoKSwgJ2dldFJlYWRlcigpIHNob3VsZCBmYWlsJyk7CisKK30s
ICdHZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgdmlhIGdldFJlYWRlciBzaG91bGQgZmFp
bCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0ICcgKworICAgJ2Nv
bnN0cnVjdGlvbiknKTsKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oKTsKKyAgcnMuZ2V0UmVhZGVyKCk7IC8vIGdldFJlYWRlcigpIHNob3VsZCBiZSBm
aW5lLgorICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbmV3IFJlYWRhYmxl
U3RyZWFtUmVhZGVyKHJzKSwgJ2NvbnN0cnVjdGluZyBkaXJlY3RseSBzaG91bGQgZmFpbCcpOwor
Cit9LCAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxk
IGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGdldFJlYWRlciknKTsK
KwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAg
cnMuZ2V0UmVhZGVyKCk7IC8vIGdldFJlYWRlcigpIHNob3VsZCBiZSBmaW5lLgorICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksICdnZXRSZWFkZXIo
KSBzaG91bGQgZmFpbCcpOworCit9LCAnR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHZp
YSBnZXRSZWFkZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAo
dmlhIGdldFJlYWRlciknKTsKKwordGVzdCgoKSA9PiB7CisKKyAgY29uc3QgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICB9Cisg
IH0pOworCisgIG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihycyk7IC8vIENvbnN0cnVjdGluZyBk
aXJlY3RseSBzaG91bGQgbm90IHRocm93LgorCit9LCAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVT
dHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgY2xvc2Vk
Jyk7CisKK3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHRoZUVycm9yID0gbmV3IEVycm9yKCdkb25c
J3Qgc2F5IGkgZGlkblwndCB3YXJuIHlhJyk7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVycm9yKHRoZUVycm9yKTsKKyAgICB9Cisg
IH0pOworCisgIG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihycyk7IC8vIENvbnN0cnVjdGluZyBk
aXJlY3RseSBzaG91bGQgbm90IHRocm93LgorCit9LCAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVT
dHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgZXJyb3Jl
ZCcpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxldCBjb250cm9sbGVyOworICBjb25z
dCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJv
bGxlciA9IGM7CisgICAgfQorICB9KTsKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7
CisKKyAgY29uc3QgcHJvbWlzZSA9IHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQgPT4geworICAg
IGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9
LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggdGhlIGVucXVldWVkIGNodW5rJyk7CisgIH0p
OworCisgIGNvbnRyb2xsZXIuZW5xdWV1ZSgnYScpOworICByZXR1cm4gcHJvbWlzZTsKKworfSwg
J1JlYWRpbmcgZnJvbSBhIHJlYWRlciBmb3IgYW4gZW1wdHkgc3RyZWFtIHdpbGwgd2FpdCB1bnRp
bCBhIGNodW5rIGlzIGF2YWlsYWJsZScpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxl
dCBjYW5jZWxDYWxsZWQgPSBmYWxzZTsKKyAgY29uc3QgcGFzc2VkUmVhc29uID0gbmV3IEVycm9y
KCdpdCB3YXNuXCd0IHRoZSByaWdodCB0aW1lLCBzb3JyeScpOworICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7CisgICAgY2FuY2VsKHJlYXNvbikgeworICAgICAgYXNzZXJ0X3RydWUo
cnMubG9ja2VkLCAndGhlIHN0cmVhbSBzaG91bGQgc3RpbGwgYmUgbG9ja2VkJyk7CisgICAgICBh
c3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gcnMuZ2V0UmVhZGVyKCksICdzaG91
bGQgbm90IGJlIGFibGUgdG8gZ2V0IGFub3RoZXIgcmVhZGVyJyk7CisgICAgICBhc3NlcnRfZXF1
YWxzKHJlYXNvbiwgcGFzc2VkUmVhc29uLCAndGhlIGNhbmNlbGxhdGlvbiByZWFzb24gaXMgcGFz
c2VkIHRocm91Z2ggdG8gdGhlIHVuZGVybHlpbmcgc291cmNlJyk7CisgICAgICBjYW5jZWxDYWxs
ZWQgPSB0cnVlOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVy
KCk7CisgIHJldHVybiByZWFkZXIuY2FuY2VsKHBhc3NlZFJlYXNvbikudGhlbigoKSA9PiBhc3Nl
cnRfdHJ1ZShjYW5jZWxDYWxsZWQpKTsKKworfSwgJ2NhbmNlbCgpIG9uIGEgcmVhZGVyIGRvZXMg
bm90IHJlbGVhc2UgdGhlIHJlYWRlcicpOworCitwcm9taXNlX3Rlc3QoKCkgPT4geworCisgIGxl
dCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3Rh
cnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAgfQorICB9KTsKKworICBjb25zdCBy
ZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKyAgY29uc3QgcHJvbWlzZSA9IHJlYWRlci5jbG9zZWQ7
CisKKyAgY29udHJvbGxlci5jbG9zZSgpOworICByZXR1cm4gcHJvbWlzZTsKKworfSwgJ2Nsb3Nl
ZCBzaG91bGQgYmUgZnVsZmlsbGVkIGFmdGVyIHN0cmVhbSBpcyBjbG9zZWQgKC5jbG9zZWQgYWNj
ZXNzIGJlZm9yZSBhY3F1aXJpbmcpJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBsZXQg
Y29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0
KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcmVh
ZGVyMSA9IHJzLmdldFJlYWRlcigpOworCisgIHJlYWRlcjEucmVsZWFzZUxvY2soKTsKKworICBj
b25zdCByZWFkZXIyID0gcnMuZ2V0UmVhZGVyKCk7CisgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKwor
ICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVy
cm9yKCksIHJlYWRlcjEuY2xvc2VkKSwKKyAgICByZWFkZXIyLmNsb3NlZAorICBdKTsKKworfSwg
J2Nsb3NlZCBzaG91bGQgYmUgcmVqZWN0ZWQgYWZ0ZXIgcmVhZGVyIHJlbGVhc2VzIGl0cyBsb2Nr
IChtdWx0aXBsZSBzdHJlYW0gbG9ja3MpJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisKKyAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMu
ZW5xdWV1ZSgnYScpOworICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgICBjLmNsb3NlKCk7Cisg
ICAgfQorICB9KTsKKworICBjb25zdCByZWFkZXIxID0gcnMuZ2V0UmVhZGVyKCk7CisgIGNvbnN0
IHByb21pc2UxID0gcmVhZGVyMS5yZWFkKCkudGhlbihyID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0
X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNlIH0sICdyZWFkaW5nIHRoZSBmaXJz
dCBjaHVuayBmcm9tIHJlYWRlcjEgd29ya3MnKTsKKyAgfSk7CisgIHJlYWRlcjEucmVsZWFzZUxv
Y2soKTsKKworICBjb25zdCByZWFkZXIyID0gcnMuZ2V0UmVhZGVyKCk7CisgIGNvbnN0IHByb21p
c2UyID0gcmVhZGVyMi5yZWFkKCkudGhlbihyID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFs
cyhyLCB7IHZhbHVlOiAnYicsIGRvbmU6IGZhbHNlIH0sICdyZWFkaW5nIHRoZSBzZWNvbmQgY2h1
bmsgZnJvbSByZWFkZXIyIHdvcmtzJyk7CisgIH0pOworICByZWFkZXIyLnJlbGVhc2VMb2NrKCk7
CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFtwcm9taXNlMSwgcHJvbWlzZTJdKTsKKworfSwgJ011
bHRpcGxlIHJlYWRlcnMgY2FuIGFjY2VzcyB0aGUgc3RyZWFtIGluIHNlcXVlbmNlJyk7CisKK3By
b21pc2VfdGVzdCgoKSA9PiB7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAg
ICBzdGFydChjKSB7CisgICAgICBjLmVucXVldWUoJ2EnKTsKKyAgICB9CisgIH0pOworCisgIGNv
bnN0IHJlYWRlcjEgPSBycy5nZXRSZWFkZXIoKTsKKyAgcmVhZGVyMS5yZWxlYXNlTG9jaygpOwor
CisgIGNvbnN0IHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKKworICAvLyBTaG91bGQgYmUgYSBu
by1vcAorICByZWFkZXIxLnJlbGVhc2VMb2NrKCk7CisKKyAgcmV0dXJuIHJlYWRlcjIucmVhZCgp
LnRoZW4ocmVzdWx0ID0+IHsKKyAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFs
dWU6ICdhJywgZG9uZTogZmFsc2UgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAncmVhZCgp
IHNob3VsZCBzdGlsbCB3b3JrIG9uIHJlYWRlcjIgZXZlbiBhZnRlciByZWFkZXIxIGlzIHJlbGVh
c2VkJyk7CisgIH0pOworCit9LCAnQ2Fubm90IHVzZSBhbiBhbHJlYWR5LXJlbGVhc2VkIHJlYWRl
ciB0byB1bmxvY2sgYSBzdHJlYW0gYWdhaW4nKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisg
IGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBj
LmVucXVldWUoJ2EnKTsKKyAgICB9LAorICAgIGNhbmNlbCgpIHsKKyAgICAgIGFzc2VydF91bnJl
YWNoZWQoJ3VuZGVybHlpbmcgc291cmNlIGNhbmNlbCBzaG91bGQgbm90IGJlIGNhbGxlZCcpOwor
ICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisgIHJlYWRl
ci5yZWxlYXNlTG9jaygpOworICBjb25zdCBjYW5jZWxQcm9taXNlID0gcmVhZGVyLmNhbmNlbCgp
OworCisgIGNvbnN0IHJlYWRlcjIgPSBycy5nZXRSZWFkZXIoKTsKKyAgY29uc3QgcmVhZFByb21p
c2UgPSByZWFkZXIyLnJlYWQoKS50aGVuKHIgPT4geworICAgIGFzc2VydF9vYmplY3RfZXF1YWxz
KHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ2EgbmV3IHJlYWRlciBzaG91bGQgYmUg
YWJsZSB0byByZWFkIGEgY2h1bmsnKTsKKyAgfSk7CisKKyAgcmV0dXJuIFByb21pc2UuYWxsKFsK
KyAgICBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLCBjYW5jZWxQcm9taXNlKSwK
KyAgICByZWFkUHJvbWlzZQorICBdKTsKKworfSwgJ2NhbmNlbCgpIG9uIGEgcmVsZWFzZWQgcmVh
ZGVyIGlzIGEgbm8tb3AgYW5kIGRvZXMgbm90IHBhc3MgdGhyb3VnaCcpOworCitwcm9taXNlX3Rl
c3QodCA9PiB7CisKKyAgY29uc3QgcHJvbWlzZUFzc2VydHMgPSBbXTsKKworICBsZXQgY29udHJv
bGxlcjsKKyAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICd1bmlxdWUgZXJyb3InIH07CisgIGNv
bnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250
cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IHJlYWRlcjEgPSBycy5nZXRSZWFk
ZXIoKTsKKworICBwcm9taXNlQXNzZXJ0cy5wdXNoKAorICAgIHByb21pc2VfcmVqZWN0cyh0LCB0
aGVFcnJvciwgcmVhZGVyMS5jbG9zZWQpLAorICAgIHByb21pc2VfcmVqZWN0cyh0LCB0aGVFcnJv
ciwgcmVhZGVyMS5yZWFkKCkpCisgICk7CisKKyAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
KCksICgpID0+IHJzLmdldFJlYWRlcigpLCAndHJ5aW5nIHRvIGdldCBhbm90aGVyIHJlYWRlciBi
ZWZvcmUgZXJyb3Jpbmcgc2hvdWxkIHRocm93Jyk7CisKKyAgY29udHJvbGxlci5lcnJvcih0aGVF
cnJvcik7CisKKyAgcmVhZGVyMS5yZWxlYXNlTG9jaygpOworCisgIGNvbnN0IHJlYWRlcjIgPSBy
cy5nZXRSZWFkZXIoKTsKKworICBwcm9taXNlQXNzZXJ0cy5wdXNoKAorICAgIHByb21pc2VfcmVq
ZWN0cyh0LCB0aGVFcnJvciwgcmVhZGVyMi5jbG9zZWQpLAorICAgIHByb21pc2VfcmVqZWN0cyh0
LCB0aGVFcnJvciwgcmVhZGVyMi5yZWFkKCkpCisgICk7CisKKyAgcmV0dXJuIFByb21pc2UuYWxs
KHByb21pc2VBc3NlcnRzKTsKKworfSwgJ0dldHRpbmcgYSBzZWNvbmQgcmVhZGVyIGFmdGVyIGVy
cm9yaW5nIHRoZSBzdHJlYW0gYW5kIHJlbGVhc2luZyB0aGUgcmVhZGVyIHNob3VsZCBzdWNjZWVk
Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3Qg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xs
ZXIgPSBjOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgcHJvbWlzZSA9IHJzLmdldFJlYWRlcigp
LmNsb3NlZC50aGVuKAorICAgIHQudW5yZWFjaGVkX2Z1bmMoJ2Nsb3NlZCBwcm9taXNlIHNob3Vs
ZCBub3QgYmUgZnVsZmlsbGVkIHdoZW4gc3RyZWFtIGlzIGVycm9yZWQnKSwKKyAgICBlcnIgPT4g
eworICAgICAgYXNzZXJ0X2VxdWFscyhlcnIsIHVuZGVmaW5lZCwgJ3Bhc3NlZCBlcnJvciBzaG91
bGQgYmUgdW5kZWZpbmVkIGFzIGl0IHdhcycpOworICAgIH0KKyAgKTsKKworICBjb250cm9sbGVy
LmVycm9yKCk7CisgIHJldHVybiBwcm9taXNlOworCit9LCAnUmVhZGFibGVTdHJlYW1SZWFkZXIg
Y2xvc2VkIHByb21pc2Ugc2hvdWxkIGJlIHJlamVjdGVkIHdpdGggdW5kZWZpbmVkIGlmIHRoYXQg
aXMgdGhlIGVycm9yJyk7CisKKworcHJvbWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydCgpIHsKKyAgICAgIHJldHVybiBQcm9taXNl
LnJlamVjdCgpOworICAgIH0KKyAgfSk7CisKKyAgcmV0dXJuIHJzLmdldFJlYWRlcigpLnJlYWQo
KS50aGVuKAorICAgIHQudW5yZWFjaGVkX2Z1bmMoJ3JlYWQgcHJvbWlzZSBzaG91bGQgbm90IGJl
IGZ1bGZpbGxlZCB3aGVuIHN0cmVhbSBpcyBlcnJvcmVkJyksCisgICAgZXJyID0+IHsKKyAgICAg
IGFzc2VydF9lcXVhbHMoZXJyLCB1bmRlZmluZWQsICdwYXNzZWQgZXJyb3Igc2hvdWxkIGJlIHVu
ZGVmaW5lZCBhcyBpdCB3YXMnKTsKKyAgICB9CisgICk7CisKK30sICdSZWFkYWJsZVN0cmVhbVJl
YWRlcjogaWYgc3RhcnQgcmVqZWN0cyB3aXRoIG5vIHBhcmFtZXRlciwgaXQgc2hvdWxkIGVycm9y
IHRoZSBzdHJlYW0gd2l0aCBhbiB1bmRlZmluZWQgZXJyb3InKTsKKworcHJvbWlzZV90ZXN0KHQg
PT4geworCisgIGNvbnN0IHRoZUVycm9yID0geyBuYW1lOiAndW5pcXVlIHN0cmluZycgfTsKKyAg
bGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBz
dGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisgIGNvbnN0
IHByb21pc2UgPSBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJzLmdldFJlYWRlcigpLmNs
b3NlZCk7CisKKyAgY29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7CisgIHJldHVybiBwcm9taXNl
OworCit9LCAnRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBhZnRlciBjaGVja2luZyBjbG9zZWQg
c2hvdWxkIHJlamVjdCBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZWQgcHJvbWlzZScpOworCitw
cm9taXNlX3Rlc3QodCA9PiB7CisKKyAgY29uc3QgdGhlRXJyb3IgPSB7IG5hbWU6ICd1bmlxdWUg
c3RyaW5nJyB9OworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVT
dHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAg
fSk7CisKKyAgY29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7CisKKyAgLy8gTGV0J3MgY2FsbCBn
ZXRSZWFkZXIgdHdpY2UgZm9yIGV4dHJhIHRlc3QgY292ZXJhZ2Ugb2YgdGhpcyBjb2RlIHBhdGgu
CisgIHJzLmdldFJlYWRlcigpLnJlbGVhc2VMb2NrKCk7CisKKyAgcmV0dXJuIHByb21pc2VfcmVq
ZWN0cyh0LCB0aGVFcnJvciwgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkKTsKKworfSwgJ0Vycm9yaW5n
IGEgUmVhZGFibGVTdHJlYW0gYmVmb3JlIGNoZWNraW5nIGNsb3NlZCBzaG91bGQgcmVqZWN0IFJl
YWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlZCBwcm9taXNlJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9
PiB7CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFt
KHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOwor
ICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICBjb25zdCBwcm9taXNlID0gUHJv
bWlzZS5hbGwoWworICAgIHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQgPT4geworICAgICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUg
fSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIGNsb3NlICgxKScpOworICAgIH0pLAorICAg
IHJlYWRlci5yZWFkKCkudGhlbihyZXN1bHQgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVh
bHMocmVzdWx0LCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwgJ3JlYWQoKSBzaG91
bGQgZnVsZmlsbCB3aXRoIGNsb3NlICgyKScpOworICAgIH0pLAorICAgIHJlYWRlci5jbG9zZWQK
KyAgXSk7CisKKyAgY29udHJvbGxlci5jbG9zZSgpOworICByZXR1cm4gcHJvbWlzZTsKKworfSwg
J1JlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGNsb3NlZCcpOworCitwcm9taXNl
X3Rlc3QoKCkgPT4geworCisgIGxldCBjb250cm9sbGVyOworICBjb25zdCBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9IGM7CisgICAg
fQorICB9KTsKKworICBjb250cm9sbGVyLmNsb3NlKCk7CisgIGNvbnN0IHJlYWRlciA9IHJzLmdl
dFJlYWRlcigpOworCisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgcmVhZGVyLnJlYWQoKS50
aGVuKHJlc3VsdCA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFs
dWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGgg
Y2xvc2UgKDEpJyk7CisgICAgfSksCisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHJlc3VsdCA9PiB7
CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwg
ZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2UgKDIpJyk7Cisg
ICAgfSksCisgICAgcmVhZGVyLmNsb3NlZAorICBdKTsKKworfSwgJ1JlYWRpbmcgdHdpY2Ugb24g
YSBjbG9zZWQgc3RyZWFtJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKworICBsZXQgY29udHJv
bGxlcjsKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsK
KyAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgIH0KKyAgfSk7CisKKyAgY29uc3QgbXlFcnJvciA9
IHsgbmFtZTogJ21hc2hlZCBwb3RhdG9lcycgfTsKKyAgY29udHJvbGxlci5lcnJvcihteUVycm9y
KTsKKworICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICByZXR1cm4gUHJvbWlz
ZS5hbGwoWworICAgIHByb21pc2VfcmVqZWN0cyh0LCBteUVycm9yLCByZWFkZXIucmVhZCgpKSwK
KyAgICBwcm9taXNlX3JlamVjdHModCwgbXlFcnJvciwgcmVhZGVyLnJlYWQoKSksCisgICAgcHJv
bWlzZV9yZWplY3RzKHQsIG15RXJyb3IsIHJlYWRlci5jbG9zZWQpCisgIF0pOworCit9LCAnUmVh
ZGluZyB0d2ljZSBvbiBhbiBlcnJvcmVkIHN0cmVhbScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7
CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
KyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisg
IGNvbnN0IG15RXJyb3IgPSB7IG5hbWU6ICdtYXNoZWQgcG90YXRvZXMnIH07CisgIGNvbnN0IHJl
YWRlciA9IHJzLmdldFJlYWRlcigpOworCisgIGNvbnN0IHByb21pc2UgPSBQcm9taXNlLmFsbChb
CisgICAgcHJvbWlzZV9yZWplY3RzKHQsIG15RXJyb3IsIHJlYWRlci5yZWFkKCkpLAorICAgIHBy
b21pc2VfcmVqZWN0cyh0LCBteUVycm9yLCByZWFkZXIucmVhZCgpKSwKKyAgICBwcm9taXNlX3Jl
amVjdHModCwgbXlFcnJvciwgcmVhZGVyLmNsb3NlZCkKKyAgXSk7CisKKyAgY29udHJvbGxlci5l
cnJvcihteUVycm9yKTsKKyAgcmV0dXJuIHByb21pc2U7CisKK30sICdSZWFkaW5nIHR3aWNlIG9u
IGEgc3RyZWFtIHRoYXQgZ2V0cyBlcnJvcmVkJyk7CisKK2RvbmUoKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW1zL3RlZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjY2YmQxOTkxY2FjMjA4ZmU0YTY1YjlkMGFjYjA3OGNmMGZmYzUzOWMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MjQgQEAKKworUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHJzLnRlZSgpIHJldHVybnMgYW4g
YXJyYXkgb2YgdHdvIFJlYWRhYmxlU3RyZWFtcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5n
OiBzaG91bGQgYmUgYWJsZSB0byByZWFkIG9uZSBicmFuY2ggdG8gdGhlIGVuZCB3aXRob3V0IGFm
ZmVjdGluZyB0aGUgb3RoZXIgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogdmFsdWVzIHNo
b3VsZCBiZSBlcXVhbCBhY3Jvc3MgZWFjaCBicmFuY2ggCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRl
ZWluZzogZXJyb3JzIGluIHRoZSBzb3VyY2Ugc2hvdWxkIHByb3BhZ2F0ZSB0byBib3RoIGJyYW5j
aGVzIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBicmFuY2gxIHNob3Vs
ZCBub3QgaW1wYWN0IGJyYW5jaDIgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2FuY2Vs
aW5nIGJyYW5jaDIgc2hvdWxkIG5vdCBpbXBhY3QgYnJhbmNoMiAKK1BBU1MgUmVhZGFibGVTdHJl
YW0gdGVlaW5nOiBjYW5jZWxpbmcgYm90aCBicmFuY2hlcyBzaG91bGQgYWdncmVnYXRlIHRoZSBj
YW5jZWwgcmVhc29ucyBpbnRvIGFuIGFycmF5IAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6
IGZhaWxpbmcgdG8gY2FuY2VsIHRoZSBvcmlnaW5hbCBzdHJlYW0gc2hvdWxkIGNhdXNlIGNhbmNl
bCgpIHRvIHJlamVjdCBvbiBicmFuY2hlcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBj
bG9zaW5nIHRoZSBvcmlnaW5hbCBzaG91bGQgaW1tZWRpYXRlbHkgY2xvc2UgdGhlIGJyYW5jaGVz
IAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGVycm9yaW5nIHRoZSBvcmlnaW5hbCBzaG91
bGQgaW1tZWRpYXRlbHkgZXJyb3IgdGhlIGJyYW5jaGVzIAorRkFJTCBMb2FkIHRlZS5qcyB3aXRo
IFNoYXJlZFdvcmtlciBhc3NlcnRfdW5yZWFjaGVkOiBTaGFyZWRXb3JrZXIgaXMgdW5hdmFpbGFi
bGUgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCitGQUlMIFVudGl0bGVkIHVuZGVmaW5lZCBpcyBu
b3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICduYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdp
c3RyYXRpb24nKQorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHJzLnRlZSgpIHJldHVybnMg
YW4gYXJyYXkgb2YgdHdvIFJlYWRhYmxlU3RyZWFtcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVl
aW5nOiBzaG91bGQgYmUgYWJsZSB0byByZWFkIG9uZSBicmFuY2ggdG8gdGhlIGVuZCB3aXRob3V0
IGFmZmVjdGluZyB0aGUgb3RoZXIgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogdmFsdWVz
IHNob3VsZCBiZSBlcXVhbCBhY3Jvc3MgZWFjaCBicmFuY2ggCitQQVNTIFJlYWRhYmxlU3RyZWFt
IHRlZWluZzogZXJyb3JzIGluIHRoZSBzb3VyY2Ugc2hvdWxkIHByb3BhZ2F0ZSB0byBib3RoIGJy
YW5jaGVzIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBicmFuY2gxIHNo
b3VsZCBub3QgaW1wYWN0IGJyYW5jaDIgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHRlZWluZzogY2Fu
Y2VsaW5nIGJyYW5jaDIgc2hvdWxkIG5vdCBpbXBhY3QgYnJhbmNoMiAKK1BBU1MgUmVhZGFibGVT
dHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYm90aCBicmFuY2hlcyBzaG91bGQgYWdncmVnYXRlIHRo
ZSBjYW5jZWwgcmVhc29ucyBpbnRvIGFuIGFycmF5IAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVp
bmc6IGZhaWxpbmcgdG8gY2FuY2VsIHRoZSBvcmlnaW5hbCBzdHJlYW0gc2hvdWxkIGNhdXNlIGNh
bmNlbCgpIHRvIHJlamVjdCBvbiBicmFuY2hlcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gdGVlaW5n
OiBjbG9zaW5nIHRoZSBvcmlnaW5hbCBzaG91bGQgaW1tZWRpYXRlbHkgY2xvc2UgdGhlIGJyYW5j
aGVzIAorUEFTUyBSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGVycm9yaW5nIHRoZSBvcmlnaW5hbCBz
aG91bGQgaW1tZWRpYXRlbHkgZXJyb3IgdGhlIGJyYW5jaGVzIAorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtcy90ZWUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyYzg0
N2I4MTE3OGFkMGM1MGJhYWMwOWQ3YjFjZGM2ODgyOTMyZDEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy90ZWUuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29y
a2Vycy9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvcnMtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InRlZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOword29ya2VyX3Rlc3QoJ3RlZS5q
cycpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZWUuanMgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtcy90ZWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDg1ZjJhZjdhYjVjZTRmZmI2OWM5NWY4YThiZTU0ZGZh
MWUyZWQwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlZS5qcwpAQCAtMCwwICsx
LDI1NCBAQAorJ3VzZSBzdHJpY3QnOworCitpZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7CisgIHNl
bGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3JzLXV0aWxzLmpzJyk7CisgIHNlbGYuaW1w
b3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpOworfQorCit0ZXN0KCgpID0+
IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICBjb25zdCByZXN1bHQg
PSBycy50ZWUoKTsKKworICBhc3NlcnRfdHJ1ZShBcnJheS5pc0FycmF5KHJlc3VsdCksICdyZXR1
cm4gdmFsdWUgc2hvdWxkIGJlIGFuIGFycmF5Jyk7CisgIGFzc2VydF9lcXVhbHMocmVzdWx0Lmxl
bmd0aCwgMiwgJ2FycmF5IHNob3VsZCBoYXZlIGxlbmd0aCAyJyk7CisgIGFzc2VydF9lcXVhbHMo
cmVzdWx0WzBdLmNvbnN0cnVjdG9yLCBSZWFkYWJsZVN0cmVhbSwgJzB0aCBlbGVtZW50IHNob3Vs
ZCBiZSBhIFJlYWRhYmxlU3RyZWFtJyk7CisgIGFzc2VydF9lcXVhbHMocmVzdWx0WzFdLmNvbnN0
cnVjdG9yLCBSZWFkYWJsZVN0cmVhbSwgJzFzdCBlbGVtZW50IHNob3VsZCBiZSBhIFJlYWRhYmxl
U3RyZWFtJyk7CisKK30sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHJzLnRlZSgpIHJldHVybnMg
YW4gYXJyYXkgb2YgdHdvIFJlYWRhYmxlU3RyZWFtcycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7
CisKKyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAg
ICAgIGMuZW5xdWV1ZSgnYScpOworICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgICBjLmNsb3Nl
KCk7CisgICAgfQorICB9KTsKKworICBjb25zdCBicmFuY2ggPSBycy50ZWUoKTsKKyAgY29uc3Qg
YnJhbmNoMSA9IGJyYW5jaFswXTsKKyAgY29uc3QgYnJhbmNoMiA9IGJyYW5jaFsxXTsKKyAgY29u
c3QgcmVhZGVyMSA9IGJyYW5jaDEuZ2V0UmVhZGVyKCk7CisgIGNvbnN0IHJlYWRlcjIgPSBicmFu
Y2gyLmdldFJlYWRlcigpOworCisgIHJlYWRlcjIuY2xvc2VkLnRoZW4odC51bnJlYWNoZWRfZnVu
YygnYnJhbmNoMiBzaG91bGQgbm90IGJlIGNsb3NlZCcpKTsKKworICByZXR1cm4gUHJvbWlzZS5h
bGwoWworICAgIHJlYWRlcjEuY2xvc2VkLAorICAgIHJlYWRlcjEucmVhZCgpLnRoZW4ociA9PiB7
CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiAnYScsIGRvbmU6IGZhbHNl
IH0sICdmaXJzdCBjaHVuayBmcm9tIGJyYW5jaDEgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKyAgICB9
KSwKKyAgICByZWFkZXIxLnJlYWQoKS50aGVuKHIgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9l
cXVhbHMociwgeyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LCAnc2Vjb25kIGNodW5rIGZyb20g
YnJhbmNoMSBzaG91bGQgYmUgY29ycmVjdCcpOworICAgIH0pLAorICAgIHJlYWRlcjEucmVhZCgp
LnRoZW4ociA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiB1bmRl
ZmluZWQsIGRvbmU6IHRydWUgfSwgJ3RoaXJkIHJlYWQoKSBmcm9tIGJyYW5jaDEgc2hvdWxkIGJl
IGRvbmUnKTsKKyAgICB9KSwKKyAgICByZWFkZXIyLnJlYWQoKS50aGVuKHIgPT4geworICAgICAg
YXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogJ2EnLCBkb25lOiBmYWxzZSB9LCAnZmly
c3QgY2h1bmsgZnJvbSBicmFuY2gyIHNob3VsZCBiZSBjb3JyZWN0Jyk7CisgICAgfSkKKyAgXSk7
CisKK30sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IHNob3VsZCBiZSBhYmxlIHRvIHJlYWQgb25l
IGJyYW5jaCB0byB0aGUgZW5kIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBvdGhlcicpOworCitwcm9t
aXNlX3Rlc3QoKCkgPT4geworCisgIGNvbnN0IHRoZU9iamVjdCA9IHsgdGhlOiAndGVzdCBvYmpl
Y3QnIH07CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7
CisgICAgICBjLmVucXVldWUodGhlT2JqZWN0KTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IGJy
YW5jaCA9IHJzLnRlZSgpOworICBjb25zdCBicmFuY2gxID0gYnJhbmNoWzBdOworICBjb25zdCBi
cmFuY2gyID0gYnJhbmNoWzFdOworICBjb25zdCByZWFkZXIxID0gYnJhbmNoMS5nZXRSZWFkZXIo
KTsKKyAgY29uc3QgcmVhZGVyMiA9IGJyYW5jaDIuZ2V0UmVhZGVyKCk7CisKKyAgcmV0dXJuIFBy
b21pc2UuYWxsKFtyZWFkZXIxLnJlYWQoKSwgcmVhZGVyMi5yZWFkKCldKS50aGVuKHZhbHVlcyA9
PiB7CisgICAgYXNzZXJ0X29iamVjdF9lcXVhbHModmFsdWVzWzBdLCB2YWx1ZXNbMV0sICd0aGUg
dmFsdWVzIHNob3VsZCBiZSBlcXVhbCcpOworICB9KTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIHRl
ZWluZzogdmFsdWVzIHNob3VsZCBiZSBlcXVhbCBhY3Jvc3MgZWFjaCBicmFuY2gnKTsKKworcHJv
bWlzZV90ZXN0KHQgPT4geworCisgIGNvbnN0IHRoZUVycm9yID0geyBuYW1lOiAnYm9vIScgfTsK
KyAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAg
IGMuZW5xdWV1ZSgnYScpOworICAgICAgYy5lbnF1ZXVlKCdiJyk7CisgICAgfSwKKyAgICBwdWxs
KCkgeworICAgICAgdGhyb3cgdGhlRXJyb3I7CisgICAgfQorICB9KTsKKworICBjb25zdCBicmFu
Y2hlcyA9IHJzLnRlZSgpOworICBjb25zdCByZWFkZXIxID0gYnJhbmNoZXNbMF0uZ2V0UmVhZGVy
KCk7CisgIGNvbnN0IHJlYWRlcjIgPSBicmFuY2hlc1sxXS5nZXRSZWFkZXIoKTsKKworICByZWFk
ZXIxLmxhYmVsID0gJ3JlYWRlcjEnOworICByZWFkZXIyLmxhYmVsID0gJ3JlYWRlcjInOworCisg
IHJldHVybiBQcm9taXNlLmFsbChbCisgICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCBy
ZWFkZXIxLmNsb3NlZCksCisgICAgcHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIy
LmNsb3NlZCksCisgICAgcmVhZGVyMS5yZWFkKCkudGhlbihyID0+IHsKKyAgICAgIGFzc2VydF9v
YmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6ICdhJywgZG9uZTogZmFsc2UgfSwgJ3Nob3VsZCBiZSBh
YmxlIHRvIHJlYWQgdGhlIGZpcnN0IGNodW5rIGluIGJyYW5jaDEnKTsKKyAgICB9KSwKKyAgICBy
ZWFkZXIxLnJlYWQoKS50aGVuKHIgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwg
eyB2YWx1ZTogJ2InLCBkb25lOiBmYWxzZSB9LCAnc2hvdWxkIGJlIGFibGUgdG8gcmVhZCB0aGUg
c2Vjb25kIGNodW5rIGluIGJyYW5jaDEnKTsKKworICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0
cyh0LCB0aGVFcnJvciwgcmVhZGVyMi5yZWFkKCkpOworICAgIH0pCisgICAgLnRoZW4oKCkgPT4g
cHJvbWlzZV9yZWplY3RzKHQsIHRoZUVycm9yLCByZWFkZXIxLnJlYWQoKSkpCisgIF0pOworCit9
LCAnUmVhZGFibGVTdHJlYW0gdGVlaW5nOiBlcnJvcnMgaW4gdGhlIHNvdXJjZSBzaG91bGQgcHJv
cGFnYXRlIHRvIGJvdGggYnJhbmNoZXMnKTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBj
b25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5l
bnF1ZXVlKCdhJyk7CisgICAgICBjLmVucXVldWUoJ2InKTsKKyAgICAgIGMuY2xvc2UoKTsKKyAg
ICB9CisgIH0pOworCisgIGNvbnN0IGJyYW5jaGVzID0gcnMudGVlKCk7CisgIGNvbnN0IGJyYW5j
aDEgPSBicmFuY2hlc1swXTsKKyAgY29uc3QgYnJhbmNoMiA9IGJyYW5jaGVzWzFdOworICBicmFu
Y2gxLmNhbmNlbCgpOworCisgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgcmVhZGFibGVTdHJl
YW1Ub0FycmF5KGJyYW5jaDEpLnRoZW4oY2h1bmtzID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMoY2h1bmtzLCBbXSwgJ2JyYW5jaDEgc2hvdWxkIGhhdmUgbm8gY2h1bmtzJyk7CisgICAg
fSksCisgICAgcmVhZGFibGVTdHJlYW1Ub0FycmF5KGJyYW5jaDIpLnRoZW4oY2h1bmtzID0+IHsK
KyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbJ2EnLCAnYiddLCAnYnJhbmNoMiBz
aG91bGQgaGF2ZSB0d28gY2h1bmtzJyk7CisgICAgfSkKKyAgXSk7CisKK30sICdSZWFkYWJsZVN0
cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBicmFuY2gxIHNob3VsZCBub3QgaW1wYWN0IGJyYW5jaDIn
KTsKKworcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgYy5lbnF1ZXVlKCdhJyk7CisgICAgICBjLmVu
cXVldWUoJ2InKTsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICB9CisgIH0pOworCisgIGNvbnN0IGJy
YW5jaGVzID0gcnMudGVlKCk7CisgIGNvbnN0IGJyYW5jaDEgPSBicmFuY2hlc1swXTsKKyAgY29u
c3QgYnJhbmNoMiA9IGJyYW5jaGVzWzFdOworICBicmFuY2gyLmNhbmNlbCgpOworCisgIHJldHVy
biBQcm9taXNlLmFsbChbCisgICAgcmVhZGFibGVTdHJlYW1Ub0FycmF5KGJyYW5jaDEpLnRoZW4o
Y2h1bmtzID0+IHsKKyAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2h1bmtzLCBbJ2EnLCAnYidd
LCAnYnJhbmNoMSBzaG91bGQgaGF2ZSB0d28gY2h1bmtzJyk7CisgICAgfSksCisgICAgcmVhZGFi
bGVTdHJlYW1Ub0FycmF5KGJyYW5jaDIpLnRoZW4oY2h1bmtzID0+IHsKKyAgICAgIGFzc2VydF9h
cnJheV9lcXVhbHMoY2h1bmtzLCBbXSwgJ2JyYW5jaDIgc2hvdWxkIGhhdmUgbm8gY2h1bmtzJyk7
CisgICAgfSkKKyAgXSk7CisKK30sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGNhbmNlbGluZyBi
cmFuY2gyIHNob3VsZCBub3QgaW1wYWN0IGJyYW5jaDInKTsKKworcHJvbWlzZV90ZXN0KCgpID0+
IHsKKworICBjb25zdCByZWFzb24xID0gbmV3IEVycm9yKCdXZVwncmUgd2FudGVkIG1lbi4nKTsK
KyAgY29uc3QgcmVhc29uMiA9IG5ldyBFcnJvcignSSBoYXZlIHRoZSBkZWF0aCBzZW50ZW5jZSBv
biB0d2VsdmUgc3lzdGVtcy4nKTsKKworICBsZXQgcmVzb2x2ZTsKKyAgY29uc3QgcHJvbWlzZSA9
IG5ldyBQcm9taXNlKHIgPT4gcmVzb2x2ZSA9IHIpOworICBjb25zdCBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisgICAgY2FuY2VsKHJlYXNvbikgeworICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhyZWFzb24sIFtyZWFzb24xLCByZWFzb24yXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
J3RoZSBjYW5jZWwgcmVhc29uIHNob3VsZCBiZSBhbiBhcnJheSBjb250YWluaW5nIHRob3NlIGZy
b20gdGhlIGJyYW5jaGVzJyk7CisgICAgICByZXNvbHZlKCk7CisgICAgfQorICB9KTsKKworICBj
b25zdCBicmFuY2ggPSBycy50ZWUoKTsKKyAgY29uc3QgYnJhbmNoMSA9IGJyYW5jaFswXTsKKyAg
Y29uc3QgYnJhbmNoMiA9IGJyYW5jaFsxXTsKKyAgYnJhbmNoMS5jYW5jZWwocmVhc29uMSk7Cisg
IGJyYW5jaDIuY2FuY2VsKHJlYXNvbjIpOworCisgIHJldHVybiBwcm9taXNlOworCit9LCAnUmVh
ZGFibGVTdHJlYW0gdGVlaW5nOiBjYW5jZWxpbmcgYm90aCBicmFuY2hlcyBzaG91bGQgYWdncmVn
YXRlIHRoZSBjYW5jZWwgcmVhc29ucyBpbnRvIGFuIGFycmF5Jyk7CisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKworICBjb25zdCB0aGVFcnJvciA9IHsgbmFtZTogJ0lcJ2xsIGJlIGNhcmVmdWwuJyB9
OworICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgY2FuY2VsKCkgeworICAg
ICAgdGhyb3cgdGhlRXJyb3I7CisgICAgfQorICB9KTsKKworICBjb25zdCBicmFuY2ggPSBycy50
ZWUoKTsKKyAgY29uc3QgYnJhbmNoMSA9IGJyYW5jaFswXTsKKyAgY29uc3QgYnJhbmNoMiA9IGJy
YW5jaFsxXTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgIHByb21pc2VfcmVqZWN0cyh0
LCB0aGVFcnJvciwgYnJhbmNoMS5jYW5jZWwoKSksCisgICAgcHJvbWlzZV9yZWplY3RzKHQsIHRo
ZUVycm9yLCBicmFuY2gyLmNhbmNlbCgpKQorICBdKTsKKworfSwgJ1JlYWRhYmxlU3RyZWFtIHRl
ZWluZzogZmFpbGluZyB0byBjYW5jZWwgdGhlIG9yaWdpbmFsIHN0cmVhbSBzaG91bGQgY2F1c2Ug
Y2FuY2VsKCkgdG8gcmVqZWN0IG9uIGJyYW5jaGVzJyk7CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7
CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
KyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisg
IGNvbnN0IGJyYW5jaGVzID0gcnMudGVlKCk7CisgIGNvbnN0IHJlYWRlcjEgPSBicmFuY2hlc1sw
XS5nZXRSZWFkZXIoKTsKKyAgY29uc3QgcmVhZGVyMiA9IGJyYW5jaGVzWzFdLmdldFJlYWRlcigp
OworCisgIGNvbnN0IHByb21pc2UgPSBQcm9taXNlLmFsbChbcmVhZGVyMS5jbG9zZWQsIHJlYWRl
cjIuY2xvc2VkXSk7CisKKyAgY29udHJvbGxlci5jbG9zZSgpOworICByZXR1cm4gcHJvbWlzZTsK
KworfSwgJ1JlYWRhYmxlU3RyZWFtIHRlZWluZzogY2xvc2luZyB0aGUgb3JpZ2luYWwgc2hvdWxk
IGltbWVkaWF0ZWx5IGNsb3NlIHRoZSBicmFuY2hlcycpOworCitwcm9taXNlX3Rlc3QodCA9PiB7
CisKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsK
KyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworCisg
IGNvbnN0IGJyYW5jaGVzID0gcnMudGVlKCk7CisgIGNvbnN0IHJlYWRlcjEgPSBicmFuY2hlc1sw
XS5nZXRSZWFkZXIoKTsKKyAgY29uc3QgcmVhZGVyMiA9IGJyYW5jaGVzWzFdLmdldFJlYWRlcigp
OworCisgIGNvbnN0IHRoZUVycm9yID0geyBuYW1lOiAnYm9vIScgfTsKKyAgY29uc3QgcHJvbWlz
ZSA9IFByb21pc2UuYWxsKFsKKyAgICBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJlYWRl
cjEuY2xvc2VkKSwKKyAgICBwcm9taXNlX3JlamVjdHModCwgdGhlRXJyb3IsIHJlYWRlcjIuY2xv
c2VkKQorICBdKTsKKworICBjb250cm9sbGVyLmVycm9yKHRoZUVycm9yKTsKKyAgcmV0dXJuIHBy
b21pc2U7CisKK30sICdSZWFkYWJsZVN0cmVhbSB0ZWVpbmc6IGVycm9yaW5nIHRoZSBvcmlnaW5h
bCBzaG91bGQgaW1tZWRpYXRlbHkgZXJyb3IgdGhlIGJyYW5jaGVzJyk7CisKK2RvbmUoKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3Ry
ZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFt
cy90ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5OTdiZDJhZmRhYmJmMjY3N2E0
YzQ3MzQ1NWVjNjlmMDIzN2NiNGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZW1w
bGF0ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTc0IEBACisKK1BBU1MgUnVubmluZyB0ZW1w
bGF0ZWRSU0VtcHR5IHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5KSAKK1BBU1MgaW5zdGFuY2Vz
IGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBhbmQgcHJvcGVydGllcyAKK1BBU1MgUnVubmluZyB0
ZW1wbGF0ZWRSU0VtcHR5UmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXIg
CitQQVNTIGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMg
CitQQVNTIGxvY2tlZCBzaG91bGQgYmUgdHJ1ZSAKK1BBU1MgcmVhZCgpIHNob3VsZCBuZXZlciBz
ZXR0bGUgCitQQVNTIHR3byByZWFkKClzIHNob3VsZCBib3RoIG5ldmVyIHNldHRsZSAKK1BBU1Mg
cmVhZCgpIHNob3VsZCByZXR1cm4gZGlzdGluY3QgcHJvbWlzZXMgZWFjaCB0aW1lIAorUEFTUyBn
ZXRSZWFkZXIoKSBhZ2FpbiBvbiB0aGUgc3RyZWFtIHNob3VsZCBmYWlsIAorUEFTUyByZWxlYXNp
bmcgdGhlIGxvY2sgd2l0aCBwZW5kaW5nIHJlYWQgcmVxdWVzdHMgc2hvdWxkIHRocm93IGJ1dCB0
aGUgcmVhZCByZXF1ZXN0cyBzaG91bGQgc3RheSBwZW5kaW5nIAorUEFTUyByZWxlYXNpbmcgdGhl
IGxvY2sgc2hvdWxkIGNhdXNlIGZ1cnRoZXIgcmVhZCgpIGNhbGxzIHRvIHJlamVjdCB3aXRoIGEg
VHlwZUVycm9yIAorUEFTUyByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCBj
YWxscyB0byByZWplY3Qgd2l0aCBhIFR5cGVFcnJvciAKK1BBU1MgcmVsZWFzaW5nIHRoZSBsb2Nr
IHNob3VsZCBjYXVzZSBsb2NrZWQgdG8gYmVjb21lIGZhbHNlIAorUEFTUyBjYW5jZWxpbmcgdmlh
IHRoZSByZWFkZXIgc2hvdWxkIGNhdXNlIHRoZSByZWFkZXIgdG8gYWN0IGNsb3NlZCAKK1BBU1Mg
Y2FuY2VsaW5nIHZpYSB0aGUgc3RyZWFtIHNob3VsZCBmYWlsIAorUEFTUyBSdW5uaW5nIHRlbXBs
YXRlZFJTQ2xvc2VkIHdpdGggUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBzdGFy
dCkgCitQQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJv
bWlzZSBlYWNoIHRpbWUgCitQQVNTIGxvY2tlZCBzaG91bGQgYmUgZmFsc2UgCitQQVNTIGdldFJl
YWRlcigpIHNob3VsZCBiZSBPSyAKK1BBU1Mgc2hvdWxkIGJlIGFibGUgdG8gYWNxdWlyZSBtdWx0
aXBsZSByZWFkZXJzIGlmIHRoZXkgYXJlIHJlbGVhc2VkIGluIHN1Y2Nlc3Npb24gCitQQVNTIHNo
b3VsZCBub3QgYmUgYWJsZSB0byBhY3F1aXJlIGEgc2Vjb25kIHJlYWRlciBpZiB3ZSBkb24ndCBy
ZWxlYXNlIHRoZSBmaXJzdCBvbmUgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFk
ZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUgZ2V0dGluZyByZWFk
ZXIpIAorUEFTUyByZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQs
IGRvbmU6IHRydWUgfSAKK1BBU1MgcmVhZCgpIG11bHRpcGxlIHRpbWVzIHNob3VsZCBmdWxmaWxs
IHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCitQQVNTIHJlYWQoKSBzaG91
bGQgd29yayB3aGVuIHVzZWQgd2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZpbGwgY2FsbGJhY2sg
CitQQVNTIGNsb3NlZCBzaG91bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCAKK1BBU1MgcmVsZWFz
aW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRl
bnRpdHkgCitQQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQg
cHJvbWlzZSBlYWNoIHRpbWUgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIg
d2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBhZnRlciBnZXR0aW5nIHJlYWRlcikg
CitQQVNTIHJlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9u
ZTogdHJ1ZSB9IAorUEFTUyByZWFkKCkgbXVsdGlwbGUgdGltZXMgc2hvdWxkIGZ1bGZpbGwgd2l0
aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKK1BBU1MgcmVhZCgpIHNob3VsZCB3
b3JrIHdoZW4gdXNlZCB3aXRoaW4gYW5vdGhlciByZWFkKCkgZnVsZmlsbCBjYWxsYmFjayAKK1BB
U1MgY2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkIAorUEFTUyByZWxlYXNpbmcg
dGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0
eSAKK1BBU1MgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9t
aXNlIGVhY2ggdGltZSAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZCB3aXRoIFJlYWRh
YmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbmNlbCkgCitQQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1
cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgCitQQVNTIGxvY2tlZCBz
aG91bGQgYmUgZmFsc2UgCitQQVNTIGdldFJlYWRlcigpIHNob3VsZCBiZSBPSyAKK1BBU1Mgc2hv
dWxkIGJlIGFibGUgdG8gYWNxdWlyZSBtdWx0aXBsZSByZWFkZXJzIGlmIHRoZXkgYXJlIHJlbGVh
c2VkIGluIHN1Y2Nlc3Npb24gCitQQVNTIHNob3VsZCBub3QgYmUgYWJsZSB0byBhY3F1aXJlIGEg
c2Vjb25kIHJlYWRlciBpZiB3ZSBkb24ndCByZWxlYXNlIHRoZSBmaXJzdCBvbmUgCitQQVNTIFJ1
bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIg
KGNsb3NlZCB2aWEgY2FuY2VsIGFmdGVyIGdldHRpbmcgcmVhZGVyKSAKK1BBU1MgcmVhZCgpIHNo
b3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCitQQVNT
IHJlYWQoKSBtdWx0aXBsZSB0aW1lcyBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVm
aW5lZCwgZG9uZTogdHJ1ZSB9IAorUEFTUyByZWFkKCkgc2hvdWxkIHdvcmsgd2hlbiB1c2VkIHdp
dGhpbiBhbm90aGVyIHJlYWQoKSBmdWxmaWxsIGNhbGxiYWNrIAorUEFTUyBjbG9zZWQgc2hvdWxk
IGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQgCitQQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQg
Y2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IAorUEFTUyBjYW5jZWwo
KSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIAor
UEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJv
cmVkIHZpYSBjYWxsIGluIHN0YXJ0KSAKK1BBU1MgZ2V0UmVhZGVyKCkgc2hvdWxkIHJldHVybiBh
IHJlYWRlciB0aGF0IGFjdHMgZXJyb3JlZCAKK1BBU1MgcmVhZCgpIHR3aWNlIHNob3VsZCBnaXZl
IHRoZSBlcnJvciBlYWNoIHRpbWUgCitQQVNTIGxvY2tlZCBzaG91bGQgYmUgZmFsc2UgCitQQVNT
IFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHkgd2l0aCBSZWFkYWJsZVN0cmVhbSAo
ZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCkgCitQQVNTIHNob3VsZCBiZSBhYmxlIHRvIG9idGFp
biBhIHNlY29uZCByZWFkZXIsIHdpdGggdGhlIGNvcnJlY3QgY2xvc2VkIHByb21pc2UgCitQQVNT
IHNob3VsZCBub3QgYmUgYWJsZSB0byBvYnRhaW4gYWRkaXRpb25hbCByZWFkZXJzIGlmIHdlIGRv
bid0IHJlbGVhc2UgdGhlIGZpcnN0IGxvY2sgCitQQVNTIGNhbmNlbCgpIHNob3VsZCByZXR1cm4g
YSBkaXN0aW5jdCByZWplY3RlZCBwcm9taXNlIGVhY2ggdGltZSAKK1BBU1MgcmVhZGVyIGNhbmNl
bCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCByZWplY3RlZCBwcm9taXNlIGVhY2ggdGltZSAK
K1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJy
b3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgCitQQVNTIGdl
dFJlYWRlcigpIHNob3VsZCByZXR1cm4gYSByZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQgCitQQVNT
IHJlYWQoKSB0d2ljZSBzaG91bGQgZ2l2ZSB0aGUgZXJyb3IgZWFjaCB0aW1lIAorUEFTUyBsb2Nr
ZWQgc2hvdWxkIGJlIGZhbHNlIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRl
ciB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBw
cm9taXNlIGluIHN0YXJ0KSByZWFkZXIgCitQQVNTIGNsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGgg
dGhlIGVycm9yIAorUEFTUyByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0
byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eSAKK1BBU1MgcmVhZCgpIHNob3VsZCByZWplY3Qg
d2l0aCB0aGUgZXJyb3IgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyIHdp
dGggUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGJlZm9yZSBnZXR0aW5nIHJlYWRlcikg
CitQQVNTIGNsb3NlZCBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAorUEFTUyByZWxlYXNp
bmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBpZGVu
dGl0eSAKK1BBU1MgcmVhZCgpIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCitQQVNTIFJ1
bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gcmVhZGVy
IChlcnJvcmVkIGFmdGVyIGdldHRpbmcgcmVhZGVyKSAKK1BBU1MgY2xvc2VkIHNob3VsZCByZWpl
Y3Qgd2l0aCB0aGUgZXJyb3IgCitQQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2Ug
Y2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IAorUEFTUyByZWFkKCkgc2hvdWxk
IHJlamVjdCB3aXRoIHRoZSBlcnJvciAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU1R3b0NodW5r
c09wZW5SZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgc3Rp
bGwgb3BlbikgcmVhZGVyIAorUEFTUyBjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRp
bmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MgKHNlcXVlbnRpYWwpIAorUEFTUyBj
YWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUg
Ym90aCBjaHVua3MgKG5lc3RlZCkgCitQQVNTIHJlYWQoKSBzaG91bGQgcmV0dXJuIGRpc3RpbmN0
IHByb21pc2VzIGVhY2ggdGltZSAKK1BBU1MgY2FuY2VsKCkgYWZ0ZXIgYSByZWFkKCkgc2hvdWxk
IHN0aWxsIGdpdmUgdGhhdCBzaW5nbGUgcmVhZCByZXN1bHQgCitQQVNTIFJ1bm5pbmcgdGVtcGxh
dGVkUlNUd29DaHVua3NDbG9zZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5r
cyBlbnF1ZXVlZCwgdGhlbiBjbG9zZWQpIHJlYWRlciAKK1BBU1MgdGhpcmQgcmVhZCgpLCB3aXRo
b3V0IHdhaXRpbmcsIHNob3VsZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9
IChzZXF1ZW50aWFsKSAKK1BBU1MgdGhpcmQgcmVhZCgpLCB3aXRob3V0IHdhaXRpbmcsIHNob3Vs
ZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IChuZXN0ZWQpIAorUEFTUyBk
cmFpbmluZyB0aGUgc3RyZWFtIHZpYSByZWFkKCkgc2hvdWxkIGNhdXNlIHRoZSByZWFkZXIgY2xv
c2VkIHByb21pc2UgdG8gZnVsZmlsbCwgYnV0IGxvY2tlZCBzdGF5cyB0cnVlIAorUEFTUyByZWxl
YXNpbmcgdGhlIGxvY2sgYWZ0ZXIgdGhlIHN0cmVhbSBpcyBjbG9zZWQgc2hvdWxkIGNhdXNlIGxv
Y2tlZCB0byBiZWNvbWUgZmFsc2UgCitQQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1
c2UgZnVydGhlciByZWFkKCkgY2FsbHMgdG8gcmVqZWN0IHdpdGggYSBUeXBlRXJyb3IgCitQQVNT
IHJlYWRlcidzIGNsb3NlZCBwcm9wZXJ0eSBhbHdheXMgcmV0dXJucyB0aGUgc2FtZSBwcm9taXNl
IAorRkFJTCBMb2FkIHRlbXBsYXRlZC5qcyB3aXRoIFNoYXJlZFdvcmtlciBhc3NlcnRfdW5yZWFj
aGVkOiBTaGFyZWRXb3JrZXIgaXMgdW5hdmFpbGFibGUgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2Rl
CitGQUlMIFVudGl0bGVkIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdu
YXZpZ2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdpc3RyYXRpb24nKQorUEFTUyBSdW5uaW5nIHRl
bXBsYXRlZFJTRW1wdHkgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIAorUEFTUyBpbnN0YW5j
ZXMgaGF2ZSB0aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIAorUEFTUyBSdW5uaW5n
IHRlbXBsYXRlZFJTRW1wdHlSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpIHJlYWRl
ciAKK1BBU1MgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBhbmQgcHJvcGVydGll
cyAKK1BBU1MgbG9ja2VkIHNob3VsZCBiZSB0cnVlIAorUEFTUyByZWFkKCkgc2hvdWxkIG5ldmVy
IHNldHRsZSAKK1BBU1MgdHdvIHJlYWQoKXMgc2hvdWxkIGJvdGggbmV2ZXIgc2V0dGxlIAorUEFT
UyByZWFkKCkgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcyBlYWNoIHRpbWUgCitQQVNT
IGdldFJlYWRlcigpIGFnYWluIG9uIHRoZSBzdHJlYW0gc2hvdWxkIGZhaWwgCitQQVNTIHJlbGVh
c2luZyB0aGUgbG9jayB3aXRoIHBlbmRpbmcgcmVhZCByZXF1ZXN0cyBzaG91bGQgdGhyb3cgYnV0
IHRoZSByZWFkIHJlcXVlc3RzIHNob3VsZCBzdGF5IHBlbmRpbmcgCitQQVNTIHJlbGVhc2luZyB0
aGUgbG9jayBzaG91bGQgY2F1c2UgZnVydGhlciByZWFkKCkgY2FsbHMgdG8gcmVqZWN0IHdpdGgg
YSBUeXBlRXJyb3IgCitQQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2Vk
IGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yIAorUEFTUyByZWxlYXNpbmcgdGhlIGxv
Y2sgc2hvdWxkIGNhdXNlIGxvY2tlZCB0byBiZWNvbWUgZmFsc2UgCitQQVNTIGNhbmNlbGluZyB2
aWEgdGhlIHJlYWRlciBzaG91bGQgY2F1c2UgdGhlIHJlYWRlciB0byBhY3QgY2xvc2VkIAorUEFT
UyBjYW5jZWxpbmcgdmlhIHRoZSBzdHJlYW0gc2hvdWxkIGZhaWwgCitQQVNTIFJ1bm5pbmcgdGVt
cGxhdGVkUlNDbG9zZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxsIGluIHN0
YXJ0KSAKK1BBU1MgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBw
cm9taXNlIGVhY2ggdGltZSAKK1BBU1MgbG9ja2VkIHNob3VsZCBiZSBmYWxzZSAKK1BBU1MgZ2V0
UmVhZGVyKCkgc2hvdWxkIGJlIE9LIAorUEFTUyBzaG91bGQgYmUgYWJsZSB0byBhY3F1aXJlIG11
bHRpcGxlIHJlYWRlcnMgaWYgdGhleSBhcmUgcmVsZWFzZWQgaW4gc3VjY2Vzc2lvbiAKK1BBU1Mg
c2hvdWxkIG5vdCBiZSBhYmxlIHRvIGFjcXVpcmUgYSBzZWNvbmQgcmVhZGVyIGlmIHdlIGRvbid0
IHJlbGVhc2UgdGhlIGZpcnN0IG9uZSAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJl
YWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGJlZm9yZSBnZXR0aW5nIHJl
YWRlcikgCitQQVNTIHJlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5l
ZCwgZG9uZTogdHJ1ZSB9IAorUEFTUyByZWFkKCkgbXVsdGlwbGUgdGltZXMgc2hvdWxkIGZ1bGZp
bGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKK1BBU1MgcmVhZCgpIHNo
b3VsZCB3b3JrIHdoZW4gdXNlZCB3aXRoaW4gYW5vdGhlciByZWFkKCkgZnVsZmlsbCBjYWxsYmFj
ayAKK1BBU1MgY2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkIAorUEFTUyByZWxl
YXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBp
ZGVudGl0eSAKK1BBU1MgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxl
ZCBwcm9taXNlIGVhY2ggdGltZSAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRl
ciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRlciAoY2xvc2VkIGFmdGVyIGdldHRpbmcgcmVhZGVy
KSAKK1BBU1MgcmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBk
b25lOiB0cnVlIH0gCitQQVNTIHJlYWQoKSBtdWx0aXBsZSB0aW1lcyBzaG91bGQgZnVsZmlsbCB3
aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAorUEFTUyByZWFkKCkgc2hvdWxk
IHdvcmsgd2hlbiB1c2VkIHdpdGhpbiBhbm90aGVyIHJlYWQoKSBmdWxmaWxsIGNhbGxiYWNrIAor
UEFTUyBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQgCitQQVNTIHJlbGVhc2lu
ZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50
aXR5IAorUEFTUyBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHBy
b21pc2UgZWFjaCB0aW1lIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkIHdpdGggUmVh
ZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKSAKK1BBU1MgY2FuY2VsKCkgc2hvdWxkIHJl
dHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZSAKK1BBU1MgbG9ja2Vk
IHNob3VsZCBiZSBmYWxzZSAKK1BBU1MgZ2V0UmVhZGVyKCkgc2hvdWxkIGJlIE9LIAorUEFTUyBz
aG91bGQgYmUgYWJsZSB0byBhY3F1aXJlIG11bHRpcGxlIHJlYWRlcnMgaWYgdGhleSBhcmUgcmVs
ZWFzZWQgaW4gc3VjY2Vzc2lvbiAKK1BBU1Mgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGFjcXVpcmUg
YSBzZWNvbmQgcmVhZGVyIGlmIHdlIGRvbid0IHJlbGVhc2UgdGhlIGZpcnN0IG9uZSAKK1BBU1Mg
UnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIHJlYWRl
ciAoY2xvc2VkIHZpYSBjYW5jZWwgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpIAorUEFTUyByZWFkKCkg
c2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKK1BB
U1MgcmVhZCgpIG11bHRpcGxlIHRpbWVzIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5k
ZWZpbmVkLCBkb25lOiB0cnVlIH0gCitQQVNTIHJlYWQoKSBzaG91bGQgd29yayB3aGVuIHVzZWQg
d2l0aGluIGFub3RoZXIgcmVhZCgpIGZ1bGZpbGwgY2FsbGJhY2sgCitQQVNTIGNsb3NlZCBzaG91
bGQgZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCAKK1BBU1MgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3Vs
ZCBjYXVzZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkgCitQQVNTIGNhbmNl
bCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUg
CitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkIHdpdGggUmVhZGFibGVTdHJlYW0gKGVy
cm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpIAorUEFTUyBnZXRSZWFkZXIoKSBzaG91bGQgcmV0dXJu
IGEgcmVhZGVyIHRoYXQgYWN0cyBlcnJvcmVkIAorUEFTUyByZWFkKCkgdHdpY2Ugc2hvdWxkIGdp
dmUgdGhlIGVycm9yIGVhY2ggdGltZSAKK1BBU1MgbG9ja2VkIHNob3VsZCBiZSBmYWxzZSAKK1BB
U1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRTeW5jT25seSB3aXRoIFJlYWRhYmxlU3RyZWFt
IChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KSAKK1BBU1Mgc2hvdWxkIGJlIGFibGUgdG8gb2J0
YWluIGEgc2Vjb25kIHJlYWRlciwgd2l0aCB0aGUgY29ycmVjdCBjbG9zZWQgcHJvbWlzZSAKK1BB
U1Mgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIG9idGFpbiBhZGRpdGlvbmFsIHJlYWRlcnMgaWYgd2Ug
ZG9uJ3QgcmVsZWFzZSB0aGUgZmlyc3QgbG9jayAKK1BBU1MgY2FuY2VsKCkgc2hvdWxkIHJldHVy
biBhIGRpc3RpbmN0IHJlamVjdGVkIHByb21pc2UgZWFjaCB0aW1lIAorUEFTUyByZWFkZXIgY2Fu
Y2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IHJlamVjdGVkIHByb21pc2UgZWFjaCB0aW1l
IAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChl
cnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KSAKK1BBU1Mg
Z2V0UmVhZGVyKCkgc2hvdWxkIHJldHVybiBhIHJlYWRlciB0aGF0IGFjdHMgZXJyb3JlZCAKK1BB
U1MgcmVhZCgpIHR3aWNlIHNob3VsZCBnaXZlIHRoZSBlcnJvciBlYWNoIHRpbWUgCitQQVNTIGxv
Y2tlZCBzaG91bGQgYmUgZmFsc2UgCitQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkUmVh
ZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVk
IHByb21pc2UgaW4gc3RhcnQpIHJlYWRlciAKK1BBU1MgY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0
aCB0aGUgZXJyb3IgCitQQVNTIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2Vk
IHRvIHJlamVjdCBhbmQgY2hhbmdlIGlkZW50aXR5IAorUEFTUyByZWFkKCkgc2hvdWxkIHJlamVj
dCB3aXRoIHRoZSBlcnJvciAKK1BBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIg
d2l0aCBSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQgYmVmb3JlIGdldHRpbmcgcmVhZGVy
KSAKK1BBU1MgY2xvc2VkIHNob3VsZCByZWplY3Qgd2l0aCB0aGUgZXJyb3IgCitQQVNTIHJlbGVh
c2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIHJlamVjdCBhbmQgY2hhbmdlIGlk
ZW50aXR5IAorUEFTUyByZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciAKK1BBU1Mg
UnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSByZWFk
ZXIgKGVycm9yZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpIAorUEFTUyBjbG9zZWQgc2hvdWxkIHJl
amVjdCB3aXRoIHRoZSBlcnJvciAKK1BBU1MgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVz
ZSBjbG9zZWQgdG8gcmVqZWN0IGFuZCBjaGFuZ2UgaWRlbnRpdHkgCitQQVNTIHJlYWQoKSBzaG91
bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIAorUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTVHdvQ2h1
bmtzT3BlblJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCBz
dGlsbCBvcGVuKSByZWFkZXIgCitQQVNTIGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2Fp
dGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNodW5rcyAoc2VxdWVudGlhbCkgCitQQVNT
IGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2FpdGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2
ZSBib3RoIGNodW5rcyAobmVzdGVkKSAKK1BBU1MgcmVhZCgpIHNob3VsZCByZXR1cm4gZGlzdGlu
Y3QgcHJvbWlzZXMgZWFjaCB0aW1lIAorUEFTUyBjYW5jZWwoKSBhZnRlciBhIHJlYWQoKSBzaG91
bGQgc3RpbGwgZ2l2ZSB0aGF0IHNpbmdsZSByZWFkIHJlc3VsdCAKK1BBU1MgUnVubmluZyB0ZW1w
bGF0ZWRSU1R3b0NodW5rc0Nsb3NlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1
bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkgcmVhZGVyIAorUEFTUyB0aGlyZCByZWFkKCksIHdp
dGhvdXQgd2FpdGluZywgc2hvdWxkIGdpdmUgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVl
IH0gKHNlcXVlbnRpYWwpIAorUEFTUyB0aGlyZCByZWFkKCksIHdpdGhvdXQgd2FpdGluZywgc2hv
dWxkIGdpdmUgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gKG5lc3RlZCkgCitQQVNT
IGRyYWluaW5nIHRoZSBzdHJlYW0gdmlhIHJlYWQoKSBzaG91bGQgY2F1c2UgdGhlIHJlYWRlciBj
bG9zZWQgcHJvbWlzZSB0byBmdWxmaWxsLCBidXQgbG9ja2VkIHN0YXlzIHRydWUgCitQQVNTIHJl
bGVhc2luZyB0aGUgbG9jayBhZnRlciB0aGUgc3RyZWFtIGlzIGNsb3NlZCBzaG91bGQgY2F1c2Ug
bG9ja2VkIHRvIGJlY29tZSBmYWxzZSAKK1BBU1MgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBj
YXVzZSBmdXJ0aGVyIHJlYWQoKSBjYWxscyB0byByZWplY3Qgd2l0aCBhIFR5cGVFcnJvciAKK1BB
U1MgcmVhZGVyJ3MgY2xvc2VkIHByb3BlcnR5IGFsd2F5cyByZXR1cm5zIHRoZSBzYW1lIHByb21p
c2UgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bXMvdGVtcGxhdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTVjNmE2YWNhZWZiNWRhYzU4Yjk1ZjIyODEx
MDMyZTlhYmE2MmFmYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBsYXRlZC5o
dG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy90
ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0
LWluaXRpYWxpemVyLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcnMtdGVz
dC10ZW1wbGF0ZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InRlbXBsYXRlZC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOword29ya2VyX3Rlc3QoJ3RlbXBsYXRlZC5q
cycpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtcy90ZW1wbGF0ZWQuanMgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtcy90ZW1wbGF0ZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmRiMDQyOTk5NGQ0NTNkYmZjZDJl
ODM0N2U2ZmE3ZWZkZjIwYmM0ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW1zL3RlbXBs
YXRlZC5qcwpAQCAtMCwwICsxLDE0OCBAQAorJ3VzZSBzdHJpY3QnOworCitpZiAoc2VsZi5pbXBv
cnRTY3JpcHRzKSB7CisgIHNlbGYuaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcycpOworICBzZWxmLmltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpz
Jyk7CisgIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL3JzLXRlc3QtdGVtcGxhdGVz
LmpzJyk7Cit9CisKKy8vIFJ1biB0aGUgcmVhZGFibGUgc3RyZWFtIHRlc3QgdGVtcGxhdGVzIGFn
YWluc3QgcmVhZGFibGUgc3RyZWFtcyBjcmVhdGVkIGRpcmVjdGx5IHVzaW5nIHRoZSBjb25zdHJ1
Y3RvcgorCitjb25zdCB0aGVFcnJvciA9IHsgbmFtZTogJ2JvbyEnIH07Citjb25zdCBjaHVua3Mg
PSBbJ2EnLCAnYiddOworCit0ZW1wbGF0ZWRSU0VtcHR5KCdSZWFkYWJsZVN0cmVhbSAoZW1wdHkp
JywgKCkgPT4geworICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKCk7Cit9KTsKKwordGVtcGxh
dGVkUlNFbXB0eVJlYWRlcignUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXInLCAoKSA9PiB7
CisgIHJldHVybiBzdHJlYW1BbmREZWZhdWx0UmVhZGVyKG5ldyBSZWFkYWJsZVN0cmVhbSgpKTsK
K30pOworCit0ZW1wbGF0ZWRSU0Nsb3NlZCgnUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2Fs
bCBpbiBzdGFydCknLCAoKSA9PiB7CisgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oeworICAg
IHN0YXJ0KGMpIHsKKyAgICAgIGMuY2xvc2UoKTsKKyAgICB9CisgIH0pOworfSk7CisKK3RlbXBs
YXRlZFJTQ2xvc2VkUmVhZGVyKCdSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGNsb3NlZCBiZWZvcmUg
Z2V0dGluZyByZWFkZXIpJywgKCkgPT4geworICBsZXQgY29udHJvbGxlcjsKKyAgY29uc3Qgc3Ry
ZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjb250cm9s
bGVyID0gYzsKKyAgICB9CisgIH0pOworICBjb250cm9sbGVyLmNsb3NlKCk7CisgIGNvbnN0IHJl
c3VsdCA9IHN0cmVhbUFuZERlZmF1bHRSZWFkZXIoc3RyZWFtKTsKKyAgcmV0dXJuIHJlc3VsdDsK
K30pOworCit0ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlcignUmVhZGFibGVTdHJlYW0gcmVhZGVyIChj
bG9zZWQgYWZ0ZXIgZ2V0dGluZyByZWFkZXIpJywgKCkgPT4geworICBsZXQgY29udHJvbGxlcjsK
KyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7Cisg
ICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pOworICBjb25zdCByZXN1bHQgPSBzdHJl
YW1BbmREZWZhdWx0UmVhZGVyKHN0cmVhbSk7CisgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgcmV0
dXJuIHJlc3VsdDsKK30pOworCit0ZW1wbGF0ZWRSU0Nsb3NlZCgnUmVhZGFibGVTdHJlYW0gKGNs
b3NlZCB2aWEgY2FuY2VsKScsICgpID0+IHsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxl
U3RyZWFtKCk7CisgIHN0cmVhbS5jYW5jZWwoKTsKKyAgcmV0dXJuIHN0cmVhbTsKK30pOworCit0
ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlcignUmVhZGFibGVTdHJlYW0gcmVhZGVyIChjbG9zZWQgdmlh
IGNhbmNlbCBhZnRlciBnZXR0aW5nIHJlYWRlciknLCAoKSA9PiB7CisgIGNvbnN0IHN0cmVhbSA9
IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICBjb25zdCByZXN1bHQgPSBzdHJlYW1BbmREZWZhdWx0
UmVhZGVyKHN0cmVhbSk7CisgIHJlc3VsdC5yZWFkZXIuY2FuY2VsKCk7CisgIHJldHVybiByZXN1
bHQ7Cit9KTsKKwordGVtcGxhdGVkUlNFcnJvcmVkKCdSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2
aWEgY2FsbCBpbiBzdGFydCknLCAoKSA9PiB7CisgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0o
eworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZXJyb3IodGhlRXJyb3IpOworICAgIH0KKyAgfSk7
Cit9LCB0aGVFcnJvcik7CisKK3RlbXBsYXRlZFJTRXJyb3JlZFN5bmNPbmx5KCdSZWFkYWJsZVN0
cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCknLCAoKSA9PiB7CisgIHJldHVybiBuZXcg
UmVhZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KGMpIHsKKyAgICAgIGMuZXJyb3IodGhlRXJyb3Ip
OworICAgIH0KKyAgfSk7Cit9LCB0aGVFcnJvcik7CisKK3RlbXBsYXRlZFJTRXJyb3JlZCgnUmVh
ZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4g
c3RhcnQpJywgKCkgPT4geworICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFy
dCgpIHsKKyAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh0aGVFcnJvcik7CisgICAgfQorICB9
KTsKK30sIHRoZUVycm9yKTsKKwordGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyKCdSZWFkYWJsZVN0
cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkg
cmVhZGVyJywgKCkgPT4geworICByZXR1cm4gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihuZXcgUmVh
ZGFibGVTdHJlYW0oeworICAgIHN0YXJ0KCkgeworICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0
KHRoZUVycm9yKTsKKyAgICB9CisgIH0pKTsKK30sIHRoZUVycm9yKTsKKwordGVtcGxhdGVkUlNF
cnJvcmVkUmVhZGVyKCdSZWFkYWJsZVN0cmVhbSByZWFkZXIgKGVycm9yZWQgYmVmb3JlIGdldHRp
bmcgcmVhZGVyKScsICgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHN0cmVhbSA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgc3RhcnQoYykgeworICAgICAgY29udHJvbGxlciA9
IGM7CisgICAgfQorICB9KTsKKyAgY29udHJvbGxlci5lcnJvcih0aGVFcnJvcik7CisgIHJldHVy
biBzdHJlYW1BbmREZWZhdWx0UmVhZGVyKHN0cmVhbSk7Cit9LCB0aGVFcnJvcik7CisKK3RlbXBs
YXRlZFJTRXJyb3JlZFJlYWRlcignUmVhZGFibGVTdHJlYW0gcmVhZGVyIChlcnJvcmVkIGFmdGVy
IGdldHRpbmcgcmVhZGVyKScsICgpID0+IHsKKyAgbGV0IGNvbnRyb2xsZXI7CisgIGNvbnN0IHJl
c3VsdCA9IHN0cmVhbUFuZERlZmF1bHRSZWFkZXIobmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBz
dGFydChjKSB7CisgICAgICBjb250cm9sbGVyID0gYzsKKyAgICB9CisgIH0pKTsKKyAgY29udHJv
bGxlci5lcnJvcih0aGVFcnJvcik7CisgIHJldHVybiByZXN1bHQ7Cit9LCB0aGVFcnJvcik7CisK
K3RlbXBsYXRlZFJTVHdvQ2h1bmtzT3BlblJlYWRlcignUmVhZGFibGVTdHJlYW0gKHR3byBjaHVu
a3MgZW5xdWV1ZWQsIHN0aWxsIG9wZW4pIHJlYWRlcicsICgpID0+IHsKKyAgcmV0dXJuIHN0cmVh
bUFuZERlZmF1bHRSZWFkZXIobmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7Cisg
ICAgICBjLmVucXVldWUoY2h1bmtzWzBdKTsKKyAgICAgIGMuZW5xdWV1ZShjaHVua3NbMV0pOwor
ICAgIH0KKyAgfSkpOworfSwgY2h1bmtzKTsKKwordGVtcGxhdGVkUlNUd29DaHVua3NDbG9zZWRS
ZWFkZXIoJ1JlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkg
cmVhZGVyJywgKCkgPT4geworICBsZXQgZG9DbG9zZTsKKyAgY29uc3Qgc3RyZWFtID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKKyAgICBzdGFydChjKSB7CisgICAgICBjLmVucXVldWUoY2h1bmtzWzBd
KTsKKyAgICAgIGMuZW5xdWV1ZShjaHVua3NbMV0pOworICAgICAgZG9DbG9zZSA9IGMuY2xvc2Uu
YmluZChjKTsKKyAgICB9CisgIH0pOworICBjb25zdCByZXN1bHQgPSBzdHJlYW1BbmREZWZhdWx0
UmVhZGVyKHN0cmVhbSk7CisgIGRvQ2xvc2UoKTsKKyAgcmV0dXJuIHJlc3VsdDsKK30sIGNodW5r
cyk7CisKK2Z1bmN0aW9uIHN0cmVhbUFuZERlZmF1bHRSZWFkZXIoc3RyZWFtKSB7CisgIHJldHVy
biB7IHN0cmVhbSwgcmVhZGVyOiBzdHJlYW0uZ2V0UmVhZGVyKCkgfTsKK30KKworZG9uZSgpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
dHJlYW1zL3Jlc291cmNlcy9ycy10ZXN0LXRlbXBsYXRlcy5qcyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZXNvdXJjZXMvcnMtdGVzdC10ZW1w
bGF0ZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODUyYjU2NWQ5MDQyZTcxNzgwZDE2NGNhMjE2YTg3NGZjMDk5
YmM4ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZXNvdXJjZXMvcnMtdGVzdC10ZW1wbGF0ZXMuanMKQEAgLTAs
MCArMSw2MjQgQEAKKyd1c2Ugc3RyaWN0JzsKKworLy8gVGhlc2UgdGVzdHMgY2FuIGJlIHJ1biBh
Z2FpbnN0IGFueSByZWFkYWJsZSBzdHJlYW0gcHJvZHVjZWQgYnkgdGhlIHdlYiBwbGF0Zm9ybSB0
aGF0IG1lZXRzIHRoZSBnaXZlbiBkZXNjcmlwdGlvbnMuCisvLyBGb3IgcmVhZGFibGUgc3RyZWFt
IHRlc3RzLCB0aGUgZmFjdG9yeSBzaG91bGQgcmV0dXJuIHRoZSBzdHJlYW0uIEZvciByZWFkZXIg
dGVzdHMsIHRoZSBmYWN0b3J5IHNob3VsZCByZXR1cm4gYQorLy8geyBzdHJlYW0sIHJlYWRlciB9
IG9iamVjdC4gKFlvdSBjYW4gdXNlIHRoaXMgdG8gdmFyeSB0aGUgdGltZSBhdCB3aGljaCB5b3Ug
YWNxdWlyZSBhIHJlYWRlci4pCisKK3NlbGYudGVtcGxhdGVkUlNFbXB0eSA9IChsYWJlbCwgZmFj
dG9yeSkgPT4geworICB0ZXN0KCgpID0+IHt9LCAnUnVubmluZyB0ZW1wbGF0ZWRSU0VtcHR5IHdp
dGggJyArIGxhYmVsKTsKKworICB0ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHJzID0gZmFjdG9y
eSgpOworCisgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcnMubG9ja2VkLCAnYm9vbGVhbicsICdo
YXMgYSBib29sZWFuIGxvY2tlZCBnZXR0ZXInKTsKKyAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBy
cy5jYW5jZWwsICdmdW5jdGlvbicsICdoYXMgYSBjYW5jZWwgbWV0aG9kJyk7CisgICAgYXNzZXJ0
X2VxdWFscyh0eXBlb2YgcnMuZ2V0UmVhZGVyLCAnZnVuY3Rpb24nLCAnaGFzIGEgZ2V0UmVhZGVy
IG1ldGhvZCcpOworICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJzLnBpcGVUaHJvdWdoLCAnZnVu
Y3Rpb24nLCAnaGFzIGEgcGlwZVRocm91Z2ggbWV0aG9kJyk7CisgICAgYXNzZXJ0X2VxdWFscyh0
eXBlb2YgcnMucGlwZVRvLCAnZnVuY3Rpb24nLCAnaGFzIGEgcGlwZVRvIG1ldGhvZCcpOworICAg
IGFzc2VydF9lcXVhbHModHlwZW9mIHJzLnRlZSwgJ2Z1bmN0aW9uJywgJ2hhcyBhIHRlZSBtZXRo
b2QnKTsKKworICB9LCAnaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBhbmQgcHJv
cGVydGllcycpOworfTsKKworc2VsZi50ZW1wbGF0ZWRSU0Nsb3NlZCA9IChsYWJlbCwgZmFjdG9y
eSkgPT4geworICB0ZXN0KCgpID0+IHt9LCAnUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZCB3aXRo
ICcgKyBsYWJlbCk7CisKKyAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHJzID0g
ZmFjdG9yeSgpOworICAgIGNvbnN0IGNhbmNlbFByb21pc2UxID0gcnMuY2FuY2VsKCk7CisgICAg
Y29uc3QgY2FuY2VsUHJvbWlzZTIgPSBycy5jYW5jZWwoKTsKKworICAgIGFzc2VydF9ub3RfZXF1
YWxzKGNhbmNlbFByb21pc2UxLCBjYW5jZWxQcm9taXNlMiwgJ2NhbmNlbCgpIGNhbGxzIHNob3Vs
ZCByZXR1cm4gZGlzdGluY3QgcHJvbWlzZXMnKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChb
CisgICAgICBjYW5jZWxQcm9taXNlMS50aGVuKHYgPT4gYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmlu
ZWQsICdmaXJzdCBjYW5jZWwoKSBjYWxsIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJykp
LAorICAgICAgY2FuY2VsUHJvbWlzZTIudGhlbih2ID0+IGFzc2VydF9lcXVhbHModiwgdW5kZWZp
bmVkLCAnc2Vjb25kIGNhbmNlbCgpIGNhbGwgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQn
KSkKKyAgICBdKTsKKworICB9LCAnY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1
bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZScpOworCisgIHRlc3QoKCkgPT4geworCisgICAgY29u
c3QgcnMgPSBmYWN0b3J5KCk7CisgICAgYXNzZXJ0X2ZhbHNlKHJzLmxvY2tlZCwgJ2xvY2tlZCBn
ZXR0ZXIgc2hvdWxkIHJldHVybiBmYWxzZScpOworCisgIH0sICdsb2NrZWQgc2hvdWxkIGJlIGZh
bHNlJyk7CisKKyAgdGVzdCgoKSA9PiB7CisKKyAgICBjb25zdCBycyA9IGZhY3RvcnkoKTsKKyAg
ICBycy5nZXRSZWFkZXIoKTsgLy8gZ2V0UmVhZGVyKCkgc2hvdWxkIG5vdCB0aHJvdy4KKworICB9
LCAnZ2V0UmVhZGVyKCkgc2hvdWxkIGJlIE9LJyk7CisKKyAgdGVzdCgoKSA9PiB7CisKKyAgICBj
b25zdCBycyA9IGZhY3RvcnkoKTsKKworICAgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigp
OworICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOworCisgICAgY29uc3QgcmVhZGVyMiA9IHJzLmdl
dFJlYWRlcigpOyAvLyBHZXR0aW5nIGEgc2Vjb25kIHJlYWRlciBzaG91bGQgbm90IHRocm93Lgor
ICAgIHJlYWRlcjIucmVsZWFzZUxvY2soKTsKKworICAgIHJzLmdldFJlYWRlcigpOyAvLyBHZXR0
aW5nIGEgdGhpcmQgcmVhZGVyIHNob3VsZCBub3QgdGhyb3cuCisKKyAgfSwgJ3Nob3VsZCBiZSBh
YmxlIHRvIGFjcXVpcmUgbXVsdGlwbGUgcmVhZGVycyBpZiB0aGV5IGFyZSByZWxlYXNlZCBpbiBz
dWNjZXNzaW9uJyk7CisKKyAgdGVzdCgoKSA9PiB7CisKKyAgICBjb25zdCBycyA9IGZhY3Rvcnko
KTsKKworICAgIHJzLmdldFJlYWRlcigpOworCisgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCksICgpID0+IHJzLmdldFJlYWRlcigpLCAnZ2V0dGluZyBhIHNlY29uZCByZWFkZXIgc2hv
dWxkIHRocm93Jyk7CisgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJz
LmdldFJlYWRlcigpLCAnZ2V0dGluZyBhIHRoaXJkIHJlYWRlciBzaG91bGQgdGhyb3cnKTsKKwor
ICB9LCAnc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGFjcXVpcmUgYSBzZWNvbmQgcmVhZGVyIGlmIHdl
IGRvblwndCByZWxlYXNlIHRoZSBmaXJzdCBvbmUnKTsKK307CisKK3NlbGYudGVtcGxhdGVkUlNF
cnJvcmVkID0gKGxhYmVsLCBmYWN0b3J5LCBlcnJvcikgPT4geworICB0ZXN0KCgpID0+IHt9LCAn
UnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWQgd2l0aCAnICsgbGFiZWwpOworCisgIHByb21pc2Vf
dGVzdCh0ID0+IHsKKworICAgIGNvbnN0IHJzID0gZmFjdG9yeSgpOworICAgIGNvbnN0IHJlYWRl
ciA9IHJzLmdldFJlYWRlcigpOworCisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHBy
b21pc2VfcmVqZWN0cyh0LCBlcnJvciwgcmVhZGVyLmNsb3NlZCksCisgICAgICBwcm9taXNlX3Jl
amVjdHModCwgZXJyb3IsIHJlYWRlci5yZWFkKCkpCisgICAgXSk7CisKKyAgfSwgJ2dldFJlYWRl
cigpIHNob3VsZCByZXR1cm4gYSByZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQnKTsKKworICBwcm9t
aXNlX3Rlc3QodCA9PiB7CisKKyAgICBjb25zdCBycyA9IGZhY3RvcnkoKTsKKyAgICBjb25zdCBy
ZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAg
ICBwcm9taXNlX3JlamVjdHModCwgZXJyb3IsIHJlYWRlci5yZWFkKCkpLAorICAgICAgcHJvbWlz
ZV9yZWplY3RzKHQsIGVycm9yLCByZWFkZXIucmVhZCgpKSwKKyAgICAgIHByb21pc2VfcmVqZWN0
cyh0LCBlcnJvciwgcmVhZGVyLmNsb3NlZCkKKyAgICBdKTsKKworICB9LCAncmVhZCgpIHR3aWNl
IHNob3VsZCBnaXZlIHRoZSBlcnJvciBlYWNoIHRpbWUnKTsKKworICB0ZXN0KCgpID0+IHsKKyAg
ICBjb25zdCBycyA9IGZhY3RvcnkoKTsKKworICAgIGFzc2VydF9mYWxzZShycy5sb2NrZWQsICds
b2NrZWQgZ2V0dGVyIHNob3VsZCByZXR1cm4gZmFsc2UnKTsKKyAgfSwgJ2xvY2tlZCBzaG91bGQg
YmUgZmFsc2UnKTsKK307CisKK3NlbGYudGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHkgPSAobGFi
ZWwsIGZhY3RvcnksIGVycm9yKSA9PiB7CisgIHRlc3QoKCkgPT4ge30sICdSdW5uaW5nIHRlbXBs
YXRlZFJTRXJyb3JlZFN5bmNPbmx5IHdpdGggJyArIGxhYmVsKTsKKworICBwcm9taXNlX3Rlc3Qo
dCA9PiB7CisKKyAgICBjb25zdCBycyA9IGZhY3RvcnkoKTsKKyAgICBycy5nZXRSZWFkZXIoKS5y
ZWxlYXNlTG9jaygpOworICAgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcigpOyAvLyBDYWxs
aW5nIGdldFJlYWRlcigpIHR3aWNlIGRvZXMgbm90IHRocm93ICh0aGUgc3RyZWFtIGlzIG5vdCBs
b2NrZWQpLgorCisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvciwgcmVhZGVyLmNs
b3NlZCk7CisKKyAgfSwgJ3Nob3VsZCBiZSBhYmxlIHRvIG9idGFpbiBhIHNlY29uZCByZWFkZXIs
IHdpdGggdGhlIGNvcnJlY3QgY2xvc2VkIHByb21pc2UnKTsKKworICB0ZXN0KCgpID0+IHsKKwor
ICAgIGNvbnN0IHJzID0gZmFjdG9yeSgpOworICAgIHJzLmdldFJlYWRlcigpOworCisgICAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJzLmdldFJlYWRlcigpLCAnZ2V0dGlu
ZyBhIHNlY29uZCByZWFkZXIgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yJyk7CisgICAgYXNzZXJ0
X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHJzLmdldFJlYWRlcigpLCAnZ2V0dGluZyBh
IHRoaXJkIHJlYWRlciBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsKKworICB9LCAnc2hvdWxk
IG5vdCBiZSBhYmxlIHRvIG9idGFpbiBhZGRpdGlvbmFsIHJlYWRlcnMgaWYgd2UgZG9uXCd0IHJl
bGVhc2UgdGhlIGZpcnN0IGxvY2snKTsKKworICBwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgICBj
b25zdCBycyA9IGZhY3RvcnkoKTsKKyAgICBjb25zdCBjYW5jZWxQcm9taXNlMSA9IHJzLmNhbmNl
bCgpOworICAgIGNvbnN0IGNhbmNlbFByb21pc2UyID0gcnMuY2FuY2VsKCk7CisKKyAgICBhc3Nl
cnRfbm90X2VxdWFscyhjYW5jZWxQcm9taXNlMSwgY2FuY2VsUHJvbWlzZTIsICdjYW5jZWwoKSBj
YWxscyBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzJyk7CisKKyAgICByZXR1cm4gUHJv
bWlzZS5hbGwoWworICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yLCBjYW5jZWxQcm9taXNl
MSksCisgICAgICBwcm9taXNlX3JlamVjdHModCwgZXJyb3IsIGNhbmNlbFByb21pc2UyKQorICAg
IF0pOworCisgIH0sICdjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQg
cHJvbWlzZSBlYWNoIHRpbWUnKTsKKworICBwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgICBjb25z
dCBycyA9IGZhY3RvcnkoKTsKKyAgICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKyAg
ICBjb25zdCBjYW5jZWxQcm9taXNlMSA9IHJlYWRlci5jYW5jZWwoKTsKKyAgICBjb25zdCBjYW5j
ZWxQcm9taXNlMiA9IHJlYWRlci5jYW5jZWwoKTsKKworICAgIGFzc2VydF9ub3RfZXF1YWxzKGNh
bmNlbFByb21pc2UxLCBjYW5jZWxQcm9taXNlMiwgJ2NhbmNlbCgpIGNhbGxzIHNob3VsZCByZXR1
cm4gZGlzdGluY3QgcHJvbWlzZXMnKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAg
ICBwcm9taXNlX3JlamVjdHModCwgZXJyb3IsIGNhbmNlbFByb21pc2UxKSwKKyAgICAgIHByb21p
c2VfcmVqZWN0cyh0LCBlcnJvciwgY2FuY2VsUHJvbWlzZTIpCisgICAgXSk7CisKKyAgfSwgJ3Jl
YWRlciBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBl
YWNoIHRpbWUnKTsKK307CisKK3NlbGYudGVtcGxhdGVkUlNFbXB0eVJlYWRlciA9IChsYWJlbCwg
ZmFjdG9yeSkgPT4geworICB0ZXN0KCgpID0+IHt9LCAnUnVubmluZyB0ZW1wbGF0ZWRSU0VtcHR5
UmVhZGVyIHdpdGggJyArIGxhYmVsKTsKKworICB0ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHJl
YWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7CisKKyAgICBhc3NlcnRfdHJ1ZSgnY2xvc2VkJyBpbiBy
ZWFkZXIsICdoYXMgYSBjbG9zZWQgcHJvcGVydHknKTsKKyAgICBhc3NlcnRfZXF1YWxzKHR5cGVv
ZiByZWFkZXIuY2xvc2VkLnRoZW4sICdmdW5jdGlvbicsICdjbG9zZWQgcHJvcGVydHkgaXMgdGhl
bmFibGUnKTsKKworICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHJlYWRlci5jYW5jZWwsICdmdW5j
dGlvbicsICdoYXMgYSBjYW5jZWwgbWV0aG9kJyk7CisgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2Yg
cmVhZGVyLnJlYWQsICdmdW5jdGlvbicsICdoYXMgYSByZWFkIG1ldGhvZCcpOworICAgIGFzc2Vy
dF9lcXVhbHModHlwZW9mIHJlYWRlci5yZWxlYXNlTG9jaywgJ2Z1bmN0aW9uJywgJ2hhcyBhIHJl
bGVhc2VMb2NrIG1ldGhvZCcpOworCisgIH0sICdpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBt
ZXRob2RzIGFuZCBwcm9wZXJ0aWVzJyk7CisKKyAgdGVzdCgoKSA9PiB7CisKKyAgICBjb25zdCBz
dHJlYW0gPSBmYWN0b3J5KCkuc3RyZWFtOworCisgICAgYXNzZXJ0X3RydWUoc3RyZWFtLmxvY2tl
ZCwgJ2xvY2tlZCBnZXR0ZXIgc2hvdWxkIHJldHVybiB0cnVlJyk7CisKKyAgfSwgJ2xvY2tlZCBz
aG91bGQgYmUgdHJ1ZScpOworCisgIHByb21pc2VfdGVzdCh0ID0+IHsKKworICAgIGNvbnN0IHJl
YWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7CisKKyAgICByZWFkZXIucmVhZCgpLnRoZW4oCisgICAg
ICB0LnVucmVhY2hlZF9mdW5jKCdyZWFkKCkgc2hvdWxkIG5vdCBmdWxmaWxsJyksCisgICAgICB0
LnVucmVhY2hlZF9mdW5jKCdyZWFkKCkgc2hvdWxkIG5vdCByZWplY3QnKQorICAgICk7CisKKyAg
ICByZXR1cm4gZGVsYXkoNTAwKTsKKworICB9LCAncmVhZCgpIHNob3VsZCBuZXZlciBzZXR0bGUn
KTsKKworICBwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5
KCkucmVhZGVyOworCisgICAgcmVhZGVyLnJlYWQoKS50aGVuKAorICAgICAgdC51bnJlYWNoZWRf
ZnVuYygncmVhZCgpIHNob3VsZCBub3QgZnVsZmlsbCcpLAorICAgICAgdC51bnJlYWNoZWRfZnVu
YygncmVhZCgpIHNob3VsZCBub3QgcmVqZWN0JykKKyAgICApOworCisgICAgcmVhZGVyLnJlYWQo
KS50aGVuKAorICAgICAgdC51bnJlYWNoZWRfZnVuYygncmVhZCgpIHNob3VsZCBub3QgZnVsZmls
bCcpLAorICAgICAgdC51bnJlYWNoZWRfZnVuYygncmVhZCgpIHNob3VsZCBub3QgcmVqZWN0JykK
KyAgICApOworCisgICAgcmV0dXJuIGRlbGF5KDUwMCk7CisKKyAgfSwgJ3R3byByZWFkKClzIHNo
b3VsZCBib3RoIG5ldmVyIHNldHRsZScpOworCisgIHRlc3QoKCkgPT4geworCisgICAgY29uc3Qg
cmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKKyAgICBhc3NlcnRfbm90X2VxdWFscyhyZWFkZXIu
cmVhZCgpLCByZWFkZXIucmVhZCgpLCAndGhlIHByb21pc2VzIHJldHVybmVkIHNob3VsZCBiZSBk
aXN0aW5jdCcpOworCisgIH0sICdyZWFkKCkgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNl
cyBlYWNoIHRpbWUnKTsKKworICB0ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHN0cmVhbSA9IGZh
Y3RvcnkoKS5zdHJlYW07CisgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+
IHN0cmVhbS5nZXRSZWFkZXIoKSwgJ3N0cmVhbS5nZXRSZWFkZXIoKSBzaG91bGQgdGhyb3cgYSBU
eXBlRXJyb3InKTsKKworICB9LCAnZ2V0UmVhZGVyKCkgYWdhaW4gb24gdGhlIHN0cmVhbSBzaG91
bGQgZmFpbCcpOworCisgIHByb21pc2VfdGVzdCh0ID0+IHsKKworICAgIGNvbnN0IHN0cmVhbUFu
ZFJlYWRlciA9IGZhY3RvcnkoKTsKKyAgICBjb25zdCBzdHJlYW0gPSBzdHJlYW1BbmRSZWFkZXIu
c3RyZWFtOworICAgIGNvbnN0IHJlYWRlciA9IHN0cmVhbUFuZFJlYWRlci5yZWFkZXI7CisKKyAg
ICByZWFkZXIucmVhZCgpLnRoZW4oCisgICAgICB0LnVucmVhY2hlZF9mdW5jKCdmaXJzdCByZWFk
KCkgc2hvdWxkIG5vdCBmdWxmaWxsJyksCisgICAgICB0LnVucmVhY2hlZF9mdW5jKCdmaXJzdCBy
ZWFkKCkgc2hvdWxkIG5vdCByZWplY3QnKQorICAgICk7CisKKyAgICByZWFkZXIucmVhZCgpLnRo
ZW4oCisgICAgICB0LnVucmVhY2hlZF9mdW5jKCdzZWNvbmQgcmVhZCgpIHNob3VsZCBub3QgZnVs
ZmlsbCcpLAorICAgICAgdC51bnJlYWNoZWRfZnVuYygnc2Vjb25kIHJlYWQoKSBzaG91bGQgbm90
IHJlamVjdCcpCisgICAgKTsKKworICAgIHJlYWRlci5jbG9zZWQudGhlbigKKyAgICAgIHQudW5y
ZWFjaGVkX2Z1bmMoJ2Nsb3NlZCBzaG91bGQgbm90IGZ1bGZpbGwnKSwKKyAgICAgIHQudW5yZWFj
aGVkX2Z1bmMoJ2Nsb3NlZCBzaG91bGQgbm90IHJlamVjdCcpCisgICAgKTsKKworICAgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiByZWFkZXIucmVsZWFzZUxvY2soKSwgJ3Jl
bGVhc2VMb2NrIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOworCisgICAgYXNzZXJ0X3RydWUo
c3RyZWFtLmxvY2tlZCwgJ3RoZSBzdHJlYW0gc2hvdWxkIHN0aWxsIGJlIGxvY2tlZCcpOworCisg
ICAgcmV0dXJuIGRlbGF5KDUwMCk7CisKKyAgfSwgJ3JlbGVhc2luZyB0aGUgbG9jayB3aXRoIHBl
bmRpbmcgcmVhZCByZXF1ZXN0cyBzaG91bGQgdGhyb3cgYnV0IHRoZSByZWFkIHJlcXVlc3RzIHNo
b3VsZCBzdGF5IHBlbmRpbmcnKTsKKworICBwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgICBjb25z
dCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOworICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOwor
CisgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBuZXcg
VHlwZUVycm9yKCksIHJlYWRlci5yZWFkKCkpLAorICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIG5l
dyBUeXBlRXJyb3IoKSwgcmVhZGVyLnJlYWQoKSkKKyAgICBdKTsKKworICB9LCAncmVsZWFzaW5n
IHRoZSBsb2NrIHNob3VsZCBjYXVzZSBmdXJ0aGVyIHJlYWQoKSBjYWxscyB0byByZWplY3Qgd2l0
aCBhIFR5cGVFcnJvcicpOworCisgIHByb21pc2VfdGVzdCh0ID0+IHsKKworICAgIGNvbnN0IHJl
YWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7CisKKyAgICBjb25zdCBjbG9zZWRCZWZvcmUgPSByZWFk
ZXIuY2xvc2VkOworICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOworICAgIGNvbnN0IGNsb3NlZEFm
dGVyID0gcmVhZGVyLmNsb3NlZDsKKworICAgIGFzc2VydF9lcXVhbHMoY2xvc2VkQmVmb3JlLCBj
bG9zZWRBZnRlciwgJ3RoZSBjbG9zZWQgcHJvbWlzZSBzaG91bGQgbm90IGNoYW5nZSBpZGVudGl0
eScpOworCisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIGNs
b3NlZEJlZm9yZSk7CisKKyAgfSwgJ3JlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xv
c2VkIGNhbGxzIHRvIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yJyk7CisKKyAgdGVzdCgoKSA9PiB7
CisKKyAgICBjb25zdCBzdHJlYW1BbmRSZWFkZXIgPSBmYWN0b3J5KCk7CisgICAgY29uc3Qgc3Ry
ZWFtID0gc3RyZWFtQW5kUmVhZGVyLnN0cmVhbTsKKyAgICBjb25zdCByZWFkZXIgPSBzdHJlYW1B
bmRSZWFkZXIucmVhZGVyOworCisgICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7CisgICAgYXNzZXJ0
X2ZhbHNlKHN0cmVhbS5sb2NrZWQsICdsb2NrZWQgZ2V0dGVyIHNob3VsZCByZXR1cm4gZmFsc2Un
KTsKKworICB9LCAncmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBsb2NrZWQgdG8gYmVj
b21lIGZhbHNlJyk7CisKKyAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHJlYWRl
ciA9IGZhY3RvcnkoKS5yZWFkZXI7CisgICAgcmVhZGVyLmNhbmNlbCgpOworCisgICAgcmV0dXJu
IHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIs
IHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpaW5nIGZyb20gdGhlIHJl
YWRlciBzaG91bGQgZ2l2ZSBhIGRvbmUgcmVzdWx0Jyk7CisgICAgfSk7CisKKyAgfSwgJ2NhbmNl
bGluZyB2aWEgdGhlIHJlYWRlciBzaG91bGQgY2F1c2UgdGhlIHJlYWRlciB0byBhY3QgY2xvc2Vk
Jyk7CisKKyAgcHJvbWlzZV90ZXN0KHQgPT4geworCisgICAgY29uc3Qgc3RyZWFtID0gZmFjdG9y
eSgpLnN0cmVhbTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3Io
KSwgc3RyZWFtLmNhbmNlbCgpKTsKKworICB9LCAnY2FuY2VsaW5nIHZpYSB0aGUgc3RyZWFtIHNo
b3VsZCBmYWlsJyk7Cit9OworCitzZWxmLnRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyID0gKGxhYmVs
LCBmYWN0b3J5KSA9PiB7CisgIHRlc3QoKCkgPT4ge30sICdSdW5uaW5nIHRlbXBsYXRlZFJTQ2xv
c2VkUmVhZGVyIHdpdGggJyArIGxhYmVsKTsKKworICBwcm9taXNlX3Rlc3QoKCkgPT4geworCisg
ICAgY29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKKworICAgIHJldHVybiByZWFkZXIu
cmVhZCgpLnRoZW4odiA9PiB7CisgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyh2LCB7IHZhbHVl
OiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCBjb3JyZWN0
bHknKTsKKyAgICB9KTsKKworICB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1
ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0nKTsKKworICBwcm9taXNlX3Rlc3QoKCkgPT4gewor
CisgICAgY29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKKworICAgIHJldHVybiBQcm9t
aXNlLmFsbChbCisgICAgICByZWFkZXIucmVhZCgpLnRoZW4odiA9PiB7CisgICAgICAgIGFzc2Vy
dF9vYmplY3RfZXF1YWxzKHYsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVh
ZCgpIHNob3VsZCBmdWxmaWxsIGNvcnJlY3RseScpOworICAgICAgfSksCisgICAgICByZWFkZXIu
cmVhZCgpLnRoZW4odiA9PiB7CisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHYsIHsgdmFs
dWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIGNvcnJl
Y3RseScpOworICAgICAgfSkKKyAgICBdKTsKKworICB9LCAncmVhZCgpIG11bHRpcGxlIHRpbWVz
IHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0nKTsK
KworICBwcm9taXNlX3Rlc3QoKCkgPT4geworCisgICAgY29uc3QgcmVhZGVyID0gZmFjdG9yeSgp
LnJlYWRlcjsKKworICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4oKCkgPT4gcmVhZGVyLnJl
YWQoKSkudGhlbih2ID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHYsIHsgdmFsdWU6
IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIGNvcnJlY3Rs
eScpOworICAgIH0pOworCisgIH0sICdyZWFkKCkgc2hvdWxkIHdvcmsgd2hlbiB1c2VkIHdpdGhp
biBhbm90aGVyIHJlYWQoKSBmdWxmaWxsIGNhbGxiYWNrJyk7CisKKyAgcHJvbWlzZV90ZXN0KCgp
ID0+IHsKKworICAgIGNvbnN0IHJlYWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7CisKKyAgICByZXR1
cm4gcmVhZGVyLmNsb3NlZC50aGVuKHYgPT4gYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdy
ZWFkZXIgY2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJykpOworCisgIH0sICdj
bG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKTsKKworICBwcm9taXNlX3Rlc3Qo
dCA9PiB7CisKKyAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOworCisgICAgY29u
c3QgY2xvc2VkQmVmb3JlID0gcmVhZGVyLmNsb3NlZDsKKyAgICByZWFkZXIucmVsZWFzZUxvY2so
KTsKKyAgICBjb25zdCBjbG9zZWRBZnRlciA9IHJlYWRlci5jbG9zZWQ7CisKKyAgICBhc3NlcnRf
bm90X2VxdWFscyhjbG9zZWRCZWZvcmUsIGNsb3NlZEFmdGVyLCAndGhlIGNsb3NlZCBwcm9taXNl
IHNob3VsZCBjaGFuZ2UgaWRlbnRpdHknKTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbCisg
ICAgICBjbG9zZWRCZWZvcmUudGhlbih2ID0+IGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAn
cmVhZGVyLmNsb3NlZCBhY3F1aXJlZCBiZWZvcmUgcmVsZWFzZSBzaG91bGQgZnVsZmlsbCcpKSwK
KyAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIGNsb3NlZEFmdGVyKQor
ICAgIF0pOworCisgIH0sICdyZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0
byByZWplY3QgYW5kIGNoYW5nZSBpZGVudGl0eScpOworCisgIHByb21pc2VfdGVzdCgoKSA9PiB7
CisKKyAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOworICAgIGNvbnN0IGNhbmNl
bFByb21pc2UxID0gcmVhZGVyLmNhbmNlbCgpOworICAgIGNvbnN0IGNhbmNlbFByb21pc2UyID0g
cmVhZGVyLmNhbmNlbCgpOworICAgIGNvbnN0IGNsb3NlZFJlYWRlclByb21pc2UgPSByZWFkZXIu
Y2xvc2VkOworCisgICAgYXNzZXJ0X25vdF9lcXVhbHMoY2FuY2VsUHJvbWlzZTEsIGNhbmNlbFBy
b21pc2UyLCAnY2FuY2VsKCkgY2FsbHMgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcycp
OworICAgIGFzc2VydF9ub3RfZXF1YWxzKGNhbmNlbFByb21pc2UxLCBjbG9zZWRSZWFkZXJQcm9t
aXNlLCAnY2FuY2VsKCkgcHJvbWlzZSAxIHNob3VsZCBiZSBkaXN0aW5jdCBmcm9tIHJlYWRlci5j
bG9zZWQnKTsKKyAgICBhc3NlcnRfbm90X2VxdWFscyhjYW5jZWxQcm9taXNlMiwgY2xvc2VkUmVh
ZGVyUHJvbWlzZSwgJ2NhbmNlbCgpIHByb21pc2UgMiBzaG91bGQgYmUgZGlzdGluY3QgZnJvbSBy
ZWFkZXIuY2xvc2VkJyk7CisKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgY2FuY2Vs
UHJvbWlzZTEudGhlbih2ID0+IGFzc2VydF9lcXVhbHModiwgdW5kZWZpbmVkLCAnZmlyc3QgY2Fu
Y2VsKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKSksCisgICAgICBjYW5jZWxQcm9t
aXNlMi50aGVuKHYgPT4gYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQsICdzZWNvbmQgY2FuY2Vs
KCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQnKSkKKyAgICBdKTsKKworICB9LCAnY2Fu
Y2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGlt
ZScpOworfTsKKworc2VsZi50ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIgPSAobGFiZWwsIGZhY3Rv
cnksIGVycm9yKSA9PiB7CisgIHRlc3QoKCkgPT4ge30sICdSdW5uaW5nIHRlbXBsYXRlZFJTRXJy
b3JlZFJlYWRlciB3aXRoICcgKyBsYWJlbCk7CisKKyAgcHJvbWlzZV90ZXN0KHQgPT4geworCisg
ICAgY29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKKyAgICByZXR1cm4gcHJvbWlzZV9y
ZWplY3RzKHQsIGVycm9yLCByZWFkZXIuY2xvc2VkKTsKKworICB9LCAnY2xvc2VkIHNob3VsZCBy
ZWplY3Qgd2l0aCB0aGUgZXJyb3InKTsKKworICBwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgICBj
b25zdCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOworICAgIGNvbnN0IGNsb3NlZEJlZm9yZSA9
IHJlYWRlci5jbG9zZWQ7CisKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHQsIGVycm9yLCBj
bG9zZWRCZWZvcmUpLnRoZW4oKCkgPT4geworICAgICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7CisK
KyAgICAgIGNvbnN0IGNsb3NlZEFmdGVyID0gcmVhZGVyLmNsb3NlZDsKKyAgICAgIGFzc2VydF9u
b3RfZXF1YWxzKGNsb3NlZEJlZm9yZSwgY2xvc2VkQWZ0ZXIsICd0aGUgY2xvc2VkIHByb21pc2Ug
c2hvdWxkIGNoYW5nZSBpZGVudGl0eScpOworCisgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3Rz
KHQsIG5ldyBUeXBlRXJyb3IoKSwgY2xvc2VkQWZ0ZXIpOworICAgIH0pOworCisgIH0sICdyZWxl
YXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byByZWplY3QgYW5kIGNoYW5nZSBp
ZGVudGl0eScpOworCisgIHByb21pc2VfdGVzdCh0ID0+IHsKKworICAgIGNvbnN0IHJlYWRlciA9
IGZhY3RvcnkoKS5yZWFkZXI7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBlcnJvciwg
cmVhZGVyLnJlYWQoKSk7CisKKyAgfSwgJ3JlYWQoKSBzaG91bGQgcmVqZWN0IHdpdGggdGhlIGVy
cm9yJyk7Cit9OworCitzZWxmLnRlbXBsYXRlZFJTVHdvQ2h1bmtzT3BlblJlYWRlciA9IChsYWJl
bCwgZmFjdG9yeSwgY2h1bmtzKSA9PiB7CisgIHRlc3QoKCkgPT4ge30sICdSdW5uaW5nIHRlbXBs
YXRlZFJTVHdvQ2h1bmtzT3BlblJlYWRlciB3aXRoICcgKyBsYWJlbCk7CisKKyAgcHJvbWlzZV90
ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHJlYWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7CisKKyAg
ICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4gewor
ICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiBjaHVua3NbMF0sIGRvbmU6
IGZhbHNlIH0sICdmaXJzdCByZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKyAgICAgIH0pLAor
ICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKHIgPT4geworICAgICAgICBhc3NlcnRfb2JqZWN0X2Vx
dWFscyhyLCB7IHZhbHVlOiBjaHVua3NbMV0sIGRvbmU6IGZhbHNlIH0sICdzZWNvbmQgcmVzdWx0
IHNob3VsZCBiZSBjb3JyZWN0Jyk7CisgICAgICB9KQorICAgIF0pOworCisgIH0sICdjYWxsaW5n
IHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBj
aHVua3MgKHNlcXVlbnRpYWwpJyk7CisKKyAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICAgIGNv
bnN0IHJlYWRlciA9IGZhY3RvcnkoKS5yZWFkZXI7CisKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQo
KS50aGVuKHIgPT4geworICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMociwgeyB2YWx1ZTogY2h1
bmtzWzBdLCBkb25lOiBmYWxzZSB9LCAnZmlyc3QgcmVzdWx0IHNob3VsZCBiZSBjb3JyZWN0Jyk7
CisKKyAgICAgIHJldHVybiByZWFkZXIucmVhZCgpLnRoZW4ocjIgPT4geworICAgICAgICBhc3Nl
cnRfb2JqZWN0X2VxdWFscyhyMiwgeyB2YWx1ZTogY2h1bmtzWzFdLCBkb25lOiBmYWxzZSB9LCAn
c2Vjb25kIHJlc3VsdCBzaG91bGQgYmUgY29ycmVjdCcpOworICAgICAgfSk7CisgICAgfSk7CisK
KyAgfSwgJ2NhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2FpdGluZyB3aWxsIGV2ZW50dWFs
bHkgZ2l2ZSBib3RoIGNodW5rcyAobmVzdGVkKScpOworCisgIHRlc3QoKCkgPT4geworCisgICAg
Y29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKKyAgICBhc3NlcnRfbm90X2VxdWFscyhy
ZWFkZXIucmVhZCgpLCByZWFkZXIucmVhZCgpLCAndGhlIHByb21pc2VzIHJldHVybmVkIHNob3Vs
ZCBiZSBkaXN0aW5jdCcpOworCisgIH0sICdyZWFkKCkgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBw
cm9taXNlcyBlYWNoIHRpbWUnKTsKKworICBwcm9taXNlX3Rlc3QoKCkgPT4geworCisgICAgY29u
c3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKKworICAgIGNvbnN0IHByb21pc2UxID0gcmVh
ZGVyLmNsb3NlZC50aGVuKHYgPT4geworICAgICAgYXNzZXJ0X2VxdWFscyh2LCB1bmRlZmluZWQs
ICdyZWFkZXIgY2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkJyk7CisgICAgfSk7
CisKKyAgICBjb25zdCBwcm9taXNlMiA9IHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKKyAgICAg
IGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IGNodW5rc1swXSwgZG9uZTogZmFsc2Ug
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9taXNlIHJldHVybmVkIGJlZm9yZSBj
YW5jZWxsYXRpb24gc2hvdWxkIGZ1bGZpbGwgd2l0aCBhIGNodW5rJyk7CisgICAgfSk7CisKKyAg
ICByZWFkZXIuY2FuY2VsKCk7CisKKyAgICBjb25zdCBwcm9taXNlMyA9IHJlYWRlci5yZWFkKCku
dGhlbihyID0+IHsKKyAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IHVuZGVm
aW5lZCwgZG9uZTogdHJ1ZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb21pc2Ug
cmV0dXJuZWQgYWZ0ZXIgY2FuY2VsbGF0aW9uIHNob3VsZCBmdWxmaWxsIHdpdGggYW4gZW5kLW9m
LXN0cmVhbSBzaWduYWwnKTsKKyAgICB9KTsKKworICAgIHJldHVybiBQcm9taXNlLmFsbChbcHJv
bWlzZTEsIHByb21pc2UyLCBwcm9taXNlM10pOworCisgIH0sICdjYW5jZWwoKSBhZnRlciBhIHJl
YWQoKSBzaG91bGQgc3RpbGwgZ2l2ZSB0aGF0IHNpbmdsZSByZWFkIHJlc3VsdCcpOworfTsKKwor
c2VsZi50ZW1wbGF0ZWRSU1R3b0NodW5rc0Nsb3NlZFJlYWRlciA9IGZ1bmN0aW9uIChsYWJlbCwg
ZmFjdG9yeSwgY2h1bmtzKSB7CisgIHRlc3QoKCkgPT4ge30sICdSdW5uaW5nIHRlbXBsYXRlZFJT
VHdvQ2h1bmtzQ2xvc2VkUmVhZGVyIHdpdGggJyArIGxhYmVsKTsKKworICBwcm9taXNlX3Rlc3Qo
KCkgPT4geworCisgICAgY29uc3QgcmVhZGVyID0gZmFjdG9yeSgpLnJlYWRlcjsKKworICAgIHJl
dHVybiBQcm9taXNlLmFsbChbCisgICAgICByZWFkZXIucmVhZCgpLnRoZW4ociA9PiB7CisgICAg
ICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IGNodW5rc1swXSwgZG9uZTogZmFs
c2UgfSwgJ2ZpcnN0IHJlc3VsdCBzaG91bGQgYmUgY29ycmVjdCcpOworICAgICAgfSksCisgICAg
ICByZWFkZXIucmVhZCgpLnRoZW4ociA9PiB7CisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxz
KHIsIHsgdmFsdWU6IGNodW5rc1sxXSwgZG9uZTogZmFsc2UgfSwgJ3NlY29uZCByZXN1bHQgc2hv
dWxkIGJlIGNvcnJlY3QnKTsKKyAgICAgIH0pLAorICAgICAgcmVhZGVyLnJlYWQoKS50aGVuKHIg
PT4geworICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyLCB7IHZhbHVlOiB1bmRlZmluZWQs
IGRvbmU6IHRydWUgfSwgJ3RoaXJkIHJlc3VsdCBzaG91bGQgYmUgY29ycmVjdCcpOworICAgICAg
fSkKKyAgICBdKTsKKworICB9LCAndGhpcmQgcmVhZCgpLCB3aXRob3V0IHdhaXRpbmcsIHNob3Vs
ZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IChzZXF1ZW50aWFsKScpOwor
CisgIHByb21pc2VfdGVzdCgoKSA9PiB7CisKKyAgICBjb25zdCByZWFkZXIgPSBmYWN0b3J5KCku
cmVhZGVyOworCisgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihyID0+IHsKKyAgICAgIGFz
c2VydF9vYmplY3RfZXF1YWxzKHIsIHsgdmFsdWU6IGNodW5rc1swXSwgZG9uZTogZmFsc2UgfSwg
J2ZpcnN0IHJlc3VsdCBzaG91bGQgYmUgY29ycmVjdCcpOworCisgICAgICByZXR1cm4gcmVhZGVy
LnJlYWQoKS50aGVuKHIyID0+IHsKKyAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocjIsIHsg
dmFsdWU6IGNodW5rc1sxXSwgZG9uZTogZmFsc2UgfSwgJ3NlY29uZCByZXN1bHQgc2hvdWxkIGJl
IGNvcnJlY3QnKTsKKworICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKHIzID0+IHsK
KyAgICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyMywgeyB2YWx1ZTogdW5kZWZpbmVkLCBk
b25lOiB0cnVlIH0sICd0aGlyZCByZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3QnKTsKKyAgICAgICAg
fSk7CisgICAgICB9KTsKKyAgICB9KTsKKworICB9LCAndGhpcmQgcmVhZCgpLCB3aXRob3V0IHdh
aXRpbmcsIHNob3VsZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IChuZXN0
ZWQpJyk7CisKKyAgcHJvbWlzZV90ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHN0cmVhbUFuZFJl
YWRlciA9IGZhY3RvcnkoKTsKKyAgICBjb25zdCBzdHJlYW0gPSBzdHJlYW1BbmRSZWFkZXIuc3Ry
ZWFtOworICAgIGNvbnN0IHJlYWRlciA9IHN0cmVhbUFuZFJlYWRlci5yZWFkZXI7CisKKyAgICBh
c3NlcnRfdHJ1ZShzdHJlYW0ubG9ja2VkLCAnc3RyZWFtIHNob3VsZCBzdGFydCBsb2NrZWQnKTsK
KworICAgIGNvbnN0IHByb21pc2UgPSByZWFkZXIuY2xvc2VkLnRoZW4odiA9PiB7CisgICAgICBh
c3NlcnRfZXF1YWxzKHYsIHVuZGVmaW5lZCwgJ3JlYWRlciBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwg
d2l0aCB1bmRlZmluZWQnKTsKKyAgICAgIGFzc2VydF90cnVlKHN0cmVhbS5sb2NrZWQsICdzdHJl
YW0gc2hvdWxkIHJlbWFpbiBsb2NrZWQnKTsKKyAgICB9KTsKKworICAgIHJlYWRlci5yZWFkKCk7
CisgICAgcmVhZGVyLnJlYWQoKTsKKworICAgIHJldHVybiBwcm9taXNlOworCisgIH0sICdkcmFp
bmluZyB0aGUgc3RyZWFtIHZpYSByZWFkKCkgc2hvdWxkIGNhdXNlIHRoZSByZWFkZXIgY2xvc2Vk
IHByb21pc2UgdG8gZnVsZmlsbCwgYnV0IGxvY2tlZCBzdGF5cyB0cnVlJyk7CisKKyAgcHJvbWlz
ZV90ZXN0KCgpID0+IHsKKworICAgIGNvbnN0IHN0cmVhbUFuZFJlYWRlciA9IGZhY3RvcnkoKTsK
KyAgICBjb25zdCBzdHJlYW0gPSBzdHJlYW1BbmRSZWFkZXIuc3RyZWFtOworICAgIGNvbnN0IHJl
YWRlciA9IHN0cmVhbUFuZFJlYWRlci5yZWFkZXI7CisKKyAgICBjb25zdCBwcm9taXNlID0gcmVh
ZGVyLmNsb3NlZC50aGVuKCgpID0+IHsKKyAgICAgIGFzc2VydF90cnVlKHN0cmVhbS5sb2NrZWQs
ICd0aGUgc3RyZWFtIHNob3VsZCBzdGFydCBsb2NrZWQnKTsKKyAgICAgIHJlYWRlci5yZWxlYXNl
TG9jaygpOyAvLyBSZWxlYXNpbmcgdGhlIGxvY2sgYWZ0ZXIgcmVhZGVyIGNsb3NlZCBzaG91bGQg
bm90IHRocm93LgorICAgICAgYXNzZXJ0X2ZhbHNlKHN0cmVhbS5sb2NrZWQsICd0aGUgc3RyZWFt
IHNob3VsZCBlbmQgdW5sb2NrZWQnKTsKKyAgICB9KTsKKworICAgIHJlYWRlci5yZWFkKCk7Cisg
ICAgcmVhZGVyLnJlYWQoKTsKKworICAgIHJldHVybiBwcm9taXNlOworCisgIH0sICdyZWxlYXNp
bmcgdGhlIGxvY2sgYWZ0ZXIgdGhlIHN0cmVhbSBpcyBjbG9zZWQgc2hvdWxkIGNhdXNlIGxvY2tl
ZCB0byBiZWNvbWUgZmFsc2UnKTsKKworICBwcm9taXNlX3Rlc3QodCA9PiB7CisKKyAgICBjb25z
dCByZWFkZXIgPSBmYWN0b3J5KCkucmVhZGVyOworCisgICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7
CisKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIG5l
dyBUeXBlRXJyb3IoKSwgcmVhZGVyLnJlYWQoKSksCisgICAgICBwcm9taXNlX3JlamVjdHModCwg
bmV3IFR5cGVFcnJvcigpLCByZWFkZXIucmVhZCgpKSwKKyAgICAgIHByb21pc2VfcmVqZWN0cyh0
LCBuZXcgVHlwZUVycm9yKCksIHJlYWRlci5yZWFkKCkpCisgICAgXSk7CisKKyAgfSwgJ3JlbGVh
c2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgZnVydGhlciByZWFkKCkgY2FsbHMgdG8gcmVqZWN0
IHdpdGggYSBUeXBlRXJyb3InKTsKKworICBwcm9taXNlX3Rlc3QoKCkgPT4geworCisgICAgY29u
c3Qgc3RyZWFtQW5kUmVhZGVyID0gZmFjdG9yeSgpOworICAgIGNvbnN0IHN0cmVhbSA9IHN0cmVh
bUFuZFJlYWRlci5zdHJlYW07CisgICAgY29uc3QgcmVhZGVyID0gc3RyZWFtQW5kUmVhZGVyLnJl
YWRlcjsKKworICAgIGNvbnN0IHJlYWRlckNsb3NlZCA9IHJlYWRlci5jbG9zZWQ7CisKKyAgICBh
c3NlcnRfZXF1YWxzKHJlYWRlci5jbG9zZWQsIHJlYWRlckNsb3NlZCwgJ2FjY2Vzc2luZyByZWFk
ZXIuY2xvc2VkIHR3aWNlIGluIHN1Y2Nlc3Npb24gZ2l2ZXMgdGhlIHNhbWUgdmFsdWUnKTsKKwor
ICAgIGNvbnN0IHByb21pc2UgPSByZWFkZXIucmVhZCgpLnRoZW4oKCkgPT4geworICAgICAgYXNz
ZXJ0X2VxdWFscyhyZWFkZXIuY2xvc2VkLCByZWFkZXJDbG9zZWQsICdyZWFkZXIuY2xvc2VkIGlz
IHRoZSBzYW1lIGFmdGVyIHJlYWQoKSBmdWxmaWxscycpOworCisgICAgICByZWFkZXIucmVsZWFz
ZUxvY2soKTsKKworICAgICAgYXNzZXJ0X2VxdWFscyhyZWFkZXIuY2xvc2VkLCByZWFkZXJDbG9z
ZWQsICdyZWFkZXIuY2xvc2VkIGlzIHRoZSBzYW1lIGFmdGVyIHJlbGVhc2luZyB0aGUgbG9jaycp
OworCisgICAgICBjb25zdCBuZXdSZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7CisgICAgICBy
ZXR1cm4gbmV3UmVhZGVyLnJlYWQoKTsKKyAgICB9KTsKKworICAgIGFzc2VydF9lcXVhbHMocmVh
ZGVyLmNsb3NlZCwgcmVhZGVyQ2xvc2VkLCAncmVhZGVyLmNsb3NlZCBpcyB0aGUgc2FtZSBhZnRl
ciBjYWxsaW5nIHJlYWQoKScpOworCisgICAgcmV0dXJuIHByb21pc2U7CisKKyAgfSwgJ3JlYWRl
clwncyBjbG9zZWQgcHJvcGVydHkgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUgcHJvbWlzZScpOwor
fTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc3RyZWFtcy9yZXNvdXJjZXMvcnMtdXRpbHMuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0cmVhbXMvcmVzb3VyY2VzL3JzLXV0aWxzLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBmMzIyMmUyM2NhYjdhMGE2ZDYxNzcxMTZjOTllZDkwZGY5NTc5NzcKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N0
cmVhbXMvcmVzb3VyY2VzL3JzLXV0aWxzLmpzCkBAIC0wLDAgKzEsMTg1IEBACisndXNlIHN0cmlj
dCc7CisoZnVuY3Rpb24gKCkgeworCisgIGNsYXNzIFJhbmRvbVB1c2hTb3VyY2UgeworICAgIGNv
bnN0cnVjdG9yKHRvUHVzaCkgeworICAgICAgdGhpcy5wdXNoZWQgPSAwOworICAgICAgdGhpcy50
b1B1c2ggPSB0b1B1c2g7CisgICAgICB0aGlzLnN0YXJ0ZWQgPSBmYWxzZTsKKyAgICAgIHRoaXMu
cGF1c2VkID0gZmFsc2U7CisgICAgICB0aGlzLmNsb3NlZCA9IGZhbHNlOworCisgICAgICB0aGlz
Ll9pbnRlcnZhbEhhbmRsZSA9IG51bGw7CisgICAgfQorCisgICAgcmVhZFN0YXJ0KCkgeworICAg
ICAgaWYgKHRoaXMuY2xvc2VkKSB7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKworICAgICAg
aWYgKCF0aGlzLnN0YXJ0ZWQpIHsKKyAgICAgICAgdGhpcy5faW50ZXJ2YWxIYW5kbGUgPSBzZXRJ
bnRlcnZhbCh3cml0ZUNodW5rLCAyKTsKKyAgICAgICAgdGhpcy5zdGFydGVkID0gdHJ1ZTsKKyAg
ICAgIH0KKworICAgICAgaWYgKHRoaXMucGF1c2VkKSB7CisgICAgICAgIHRoaXMuX2ludGVydmFs
SGFuZGxlID0gc2V0SW50ZXJ2YWwod3JpdGVDaHVuaywgMik7CisgICAgICAgIHRoaXMucGF1c2Vk
ID0gZmFsc2U7CisgICAgICB9CisKKyAgICAgIGNvbnN0IHNvdXJjZSA9IHRoaXM7CisgICAgICBm
dW5jdGlvbiB3cml0ZUNodW5rKCkgeworICAgICAgICBpZiAoc291cmNlLnBhdXNlZCkgeworICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHNvdXJjZS5wdXNoZWQrKzsKKwor
ICAgICAgICBpZiAoc291cmNlLnRvUHVzaCA+IDAgJiYgc291cmNlLnB1c2hlZCA+IHNvdXJjZS50
b1B1c2gpIHsKKyAgICAgICAgICBpZiAoc291cmNlLl9pbnRlcnZhbEhhbmRsZSkgeworICAgICAg
ICAgICAgY2xlYXJJbnRlcnZhbChzb3VyY2UuX2ludGVydmFsSGFuZGxlKTsKKyAgICAgICAgICAg
IHNvdXJjZS5faW50ZXJ2YWxIYW5kbGUgPSB1bmRlZmluZWQ7CisgICAgICAgICAgfQorICAgICAg
ICAgIHNvdXJjZS5jbG9zZWQgPSB0cnVlOworICAgICAgICAgIHNvdXJjZS5vbmVuZCgpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgIHNvdXJjZS5vbmRhdGEocmFuZG9tQ2h1bmsoMTI4KSk7
CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgICByZWFkU3RvcCgpIHsKKyAgICAgIGlm
ICh0aGlzLnBhdXNlZCkgeworICAgICAgICByZXR1cm47CisgICAgICB9CisKKyAgICAgIGlmICh0
aGlzLnN0YXJ0ZWQpIHsKKyAgICAgICAgdGhpcy5wYXVzZWQgPSB0cnVlOworICAgICAgICBjbGVh
ckludGVydmFsKHRoaXMuX2ludGVydmFsSGFuZGxlKTsKKyAgICAgICAgdGhpcy5faW50ZXJ2YWxI
YW5kbGUgPSB1bmRlZmluZWQ7CisgICAgICB9IGVsc2UgeworICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ0NhblwndCBwYXVzZSByZWFkaW5nIGFuIHVuc3RhcnRlZCBzb3VyY2UuJyk7CisgICAgICB9
CisgICAgfQorICB9CisKKyAgZnVuY3Rpb24gcmFuZG9tQ2h1bmsoc2l6ZSkgeworICAgIGxldCBj
aHVuayA9ICcnOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAg
IC8vIEFkZCBhIHJhbmRvbSBjaGFyYWN0ZXIgZnJvbSB0aGUgYmFzaWMgcHJpbnRhYmxlIEFTQ0lJ
IHNldC4KKyAgICAgIGNodW5rICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoTWF0aC5yb3VuZChNYXRo
LnJhbmRvbSgpICogODQpICsgMzIpOworICAgIH0KKworICAgIHJldHVybiBjaHVuazsKKyAgfQor
CisgIGZ1bmN0aW9uIHJlYWRhYmxlU3RyZWFtVG9BcnJheShyZWFkYWJsZSwgcmVhZGVyKSB7Cisg
ICAgaWYgKHJlYWRlciA9PT0gdW5kZWZpbmVkKSB7CisgICAgICByZWFkZXIgPSByZWFkYWJsZS5n
ZXRSZWFkZXIoKTsKKyAgICB9CisKKyAgICBjb25zdCBjaHVua3MgPSBbXTsKKworICAgIHJldHVy
biBwdW1wKCk7CisKKyAgICBmdW5jdGlvbiBwdW1wKCkgeworICAgICAgcmV0dXJuIHJlYWRlci5y
ZWFkKCkudGhlbihyZXN1bHQgPT4geworICAgICAgICBpZiAocmVzdWx0LmRvbmUpIHsKKyAgICAg
ICAgICByZXR1cm4gY2h1bmtzOworICAgICAgICB9CisKKyAgICAgICAgY2h1bmtzLnB1c2gocmVz
dWx0LnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHB1bXAoKTsKKyAgICAgIH0pOworICAgIH0KKyAg
fQorCisgIGNsYXNzIFNlcXVlbnRpYWxQdWxsU291cmNlIHsKKyAgICBjb25zdHJ1Y3RvcihsaW1p
dCwgb3B0aW9ucykgeworICAgICAgY29uc3QgYXN5bmMgPSBvcHRpb25zICYmIG9wdGlvbnMuYXN5
bmM7CisKKyAgICAgIHRoaXMuY3VycmVudCA9IDA7CisgICAgICB0aGlzLmxpbWl0ID0gbGltaXQ7
CisgICAgICB0aGlzLm9wZW5lZCA9IGZhbHNlOworICAgICAgdGhpcy5jbG9zZWQgPSBmYWxzZTsK
KworICAgICAgdGhpcy5fZXhlYyA9IGYgPT4gZigpOworICAgICAgaWYgKGFzeW5jKSB7CisgICAg
ICAgIHRoaXMuX2V4ZWMgPSBmID0+IHNldFRpbWVvdXQoZiwgMCk7CisgICAgICB9CisgICAgfQor
CisgICAgb3BlbihjYikgeworICAgICAgdGhpcy5fZXhlYygoKSA9PiB7CisgICAgICAgIHRoaXMu
b3BlbmVkID0gdHJ1ZTsKKyAgICAgICAgY2IoKTsKKyAgICAgIH0pOworICAgIH0KKworICAgIHJl
YWQoY2IpIHsKKyAgICAgIHRoaXMuX2V4ZWMoKCkgPT4geworICAgICAgICBpZiAoKyt0aGlzLmN1
cnJlbnQgPD0gdGhpcy5saW1pdCkgeworICAgICAgICAgIGNiKG51bGwsIGZhbHNlLCB0aGlzLmN1
cnJlbnQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGNiKG51bGwsIHRydWUsIG51bGwp
OworICAgICAgICB9CisgICAgICB9KTsKKyAgICB9CisKKyAgICBjbG9zZShjYikgeworICAgICAg
dGhpcy5fZXhlYygoKSA9PiB7CisgICAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTsKKyAgICAgICAg
Y2IoKTsKKyAgICAgIH0pOworICAgIH0KKyAgfQorCisgIGZ1bmN0aW9uIHNlcXVlbnRpYWxSZWFk
YWJsZVN0cmVhbShsaW1pdCwgb3B0aW9ucykgeworICAgIGNvbnN0IHNlcXVlbnRpYWxTb3VyY2Ug
PSBuZXcgU2VxdWVudGlhbFB1bGxTb3VyY2UobGltaXQsIG9wdGlvbnMpOworCisgICAgY29uc3Qg
c3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgIHN0YXJ0KCkgeworICAgICAgICBy
ZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgIHNlcXVl
bnRpYWxTb3VyY2Uub3BlbihlcnIgPT4geworICAgICAgICAgICAgaWYgKGVycikgeworICAgICAg
ICAgICAgICByZWplY3QoZXJyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlc29sdmUo
KTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICB9LAorCisgICAgICBwdWxsKGMp
IHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAg
ICAgICAgICBzZXF1ZW50aWFsU291cmNlLnJlYWQoKGVyciwgZG9uZSwgY2h1bmspID0+IHsKKyAg
ICAgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgICAgcmVqZWN0KGVycik7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKGRvbmUpIHsKKyAgICAgICAgICAgICAgc2VxdWVudGlhbFNvdXJjZS5j
bG9zZShlcnIyID0+IHsKKyAgICAgICAgICAgICAgICBpZiAoZXJyMikgeworICAgICAgICAgICAg
ICAgICAgcmVqZWN0KGVycjIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBj
LmNsb3NlKCk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIGMuZW5xdWV1ZShjaHVuayk7Cisg
ICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9KTsKKyAg
ICAgICAgfSk7CisgICAgICB9CisgICAgfSk7CisKKyAgICBzdHJlYW0uc291cmNlID0gc2VxdWVu
dGlhbFNvdXJjZTsKKworICAgIHJldHVybiBzdHJlYW07CisgIH0KKworCisgIHNlbGYuUmFuZG9t
UHVzaFNvdXJjZSA9IFJhbmRvbVB1c2hTb3VyY2U7CisgIHNlbGYucmVhZGFibGVTdHJlYW1Ub0Fy
cmF5ID0gcmVhZGFibGVTdHJlYW1Ub0FycmF5OworICBzZWxmLnNlcXVlbnRpYWxSZWFkYWJsZVN0
cmVhbSA9IHNlcXVlbnRpYWxSZWFkYWJsZVN0cmVhbTsKKworfSgpKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZXNvdXJj
ZXMvdGVzdC1pbml0aWFsaXplci5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc3RyZWFtcy9yZXNvdXJjZXMvdGVzdC1pbml0aWFsaXplci5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kNmVkNGE3YWFiNTQxZThlNWNmZWVjNDA0MjAzMjg5MjQzMDE0N2IxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zdHJl
YW1zL3Jlc291cmNlcy90ZXN0LWluaXRpYWxpemVyLmpzCkBAIC0wLDAgKzEsMTQgQEAKKyd1c2Ug
c3RyaWN0JzsKKworZnVuY3Rpb24gd29ya2VyX3Rlc3QoZmlsZSkgeworICBmZXRjaF90ZXN0c19m
cm9tX3dvcmtlcihuZXcgV29ya2VyKGZpbGUpKTsKKyAgaWYgKHR5cGVvZiBTaGFyZWRXb3JrZXIg
PT09ICdmdW5jdGlvbicpIHsKKyAgICBmZXRjaF90ZXN0c19mcm9tX3dvcmtlcihuZXcgU2hhcmVk
V29ya2VyKGZpbGUpKTsKKyAgfSBlbHNlIHsKKyAgICB0ZXN0KCgpID0+IHsKKyAgICAgIGFzc2Vy
dF91bnJlYWNoZWQoJ1NoYXJlZFdvcmtlciBpcyB1bmF2YWlsYWJsZScpOworICAgIH0sICdMb2Fk
ICcgKyBmaWxlICsgJyB3aXRoIFNoYXJlZFdvcmtlcicpOworICB9CisgIHNlcnZpY2Vfd29ya2Vy
X3Rlc3QoZmlsZSk7Cit9CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZXNvdXJjZXMvdGVzdC11dGlscy5qcyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3RyZWFtcy9yZXNvdXJjZXMv
dGVzdC11dGlscy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYzQ3ODk4YTYwOGU5M2Q1ZTU2NjRkMDE3NjA3YjRm
NDcwOWY1MzcwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zdHJlYW1zL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzCkBAIC0wLDAg
KzEsNDMgQEAKKyd1c2Ugc3RyaWN0JzsKKworc2VsZi5nZXR0ZXJSZWplY3RzID0gKHQsIG9iaiwg
Z2V0dGVyTmFtZSwgdGFyZ2V0KSA9PiB7CisgIGNvbnN0IGdldHRlciA9IE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBnZXR0ZXJOYW1lKS5nZXQ7CisKKyAgcmV0dXJuIHByb21p
c2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIGdldHRlci5jYWxsKHRhcmdldCkpOworfTsK
Kworc2VsZi5tZXRob2RSZWplY3RzID0gKHQsIG9iaiwgbWV0aG9kTmFtZSwgdGFyZ2V0KSA9PiB7
CisgIGNvbnN0IG1ldGhvZCA9IG9ialttZXRob2ROYW1lXTsKKworICByZXR1cm4gcHJvbWlzZV9y
ZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgbWV0aG9kLmNhbGwodGFyZ2V0KSk7Cit9OworCitz
ZWxmLmdldHRlclRocm93cyA9IChvYmosIGdldHRlck5hbWUsIHRhcmdldCkgPT4geworICBjb25z
dCBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwgZ2V0dGVyTmFt
ZSkuZ2V0OworCisgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBnZXR0ZXIu
Y2FsbCh0YXJnZXQpLCBnZXR0ZXJOYW1lICsgJyBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3InKTsK
K307CisKK3NlbGYubWV0aG9kVGhyb3dzID0gKG9iaiwgbWV0aG9kTmFtZSwgdGFyZ2V0LCBhcmdz
KSA9PiB7CisgIGNvbnN0IG1ldGhvZCA9IG9ialttZXRob2ROYW1lXTsKKworICBhc3NlcnRfdGhy
b3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gbWV0aG9kLmFwcGx5KHRhcmdldCwgYXJncyksIG1l
dGhvZE5hbWUgKyAnIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicpOworfTsKKworc2VsZi5nYXJi
YWdlQ29sbGVjdCA9ICgpID0+IHsKKyAgaWYgKHNlbGYuZ2MpIHsKKyAgICAvLyBVc2UgLS1leHBv
c2VfZ2MgZm9yIFY4IChhbmQgTm9kZS5qcykKKyAgICAvLyBFeHBvc2VkIGluIFNwaWRlck1vbmtl
eSBzaGVsbCBhcyB3ZWxsCisgICAgc2VsZi5nYygpOworICB9IGVsc2UgaWYgKHNlbGYuR0NDb250
cm9sbGVyKSB7CisgICAgLy8gUHJlc2VudCBpbiBzb21lIFdlYktpdCBkZXZlbG9wbWVudCBlbnZp
cm9ubWVudHMKKyAgICBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOworICB9IGVsc2UgeworICAgIC8q
IGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi8KKyAgICBjb25zb2xlLndhcm4oJ1Rlc3RzIGFy
ZSBydW5uaW5nIHdpdGhvdXQgdGhlIGFiaWxpdHkgdG8gZG8gbWFudWFsIGdhcmJhZ2UgY29sbGVj
dGlvbi4gVGhleSB3aWxsIHN0aWxsIHdvcmssIGJ1dCAnICsKKyAgICAgICdjb3ZlcmFnZSB3aWxs
IGJlIHN1Ym9wdGltYWwuJyk7CisgICAgLyogZXNsaW50LWVuYWJsZSBuby1jb25zb2xlICovCisg
IH0KK307CisKK3NlbGYuZGVsYXkgPSBtcyA9PiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHN0ZXBf
dGltZW91dChyZXNvbHZlLCBtcykpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>