<?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>171306</bug_id>
          
          <creation_ts>2017-04-25 18:24:15 -0700</creation_ts>
          <short_desc>Speedometer: Update the vanilla JavaScript TodoMVC implem to a more recent version</short_desc>
          <delta_ts>2017-05-11 19:53:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>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>
          
          <blocked>170513</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Addy Osmani">addyo</reporter>
          <assigned_to name="Addy Osmani">addyo</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>lforschler</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1301383</commentid>
    <comment_count>0</comment_count>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-04-25 18:24:15 -0700</bug_when>
    <thetext>As part of Speedometer 2.0 (https://bugs.webkit.org/show_bug.cgi?id=170513), the vanilla JavaScript implementation of TodoMVC needs to be updated to a more recent version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301585</commentid>
    <comment_count>1</comment_count>
      <attachid>308247</attachid>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-04-26 08:12:13 -0700</bug_when>
    <thetext>Created attachment 308247
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306579</commentid>
    <comment_count>2</comment_count>
      <attachid>308247</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-05-09 14:38:59 -0700</bug_when>
    <thetext>Comment on attachment 308247
Patch

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

&gt; PerformanceTests/ChangeLog:7
&gt; +        Update vanilla JS TodoMVC implementation to the latest.

Please add a blank line above this.

&gt; PerformanceTests/ChangeLog:95
&gt; +        (html,):

Please remove these per-rule comments since we&apos;re just importing a file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307633</commentid>
    <comment_count>3</comment_count>
      <attachid>309834</attachid>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-05-11 17:37:28 -0700</bug_when>
    <thetext>Created attachment 309834
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307634</commentid>
    <comment_count>4</comment_count>
    <who name="Addy Osmani">addyo</who>
    <bug_when>2017-05-11 17:40:26 -0700</bug_when>
    <thetext>Added a line above and removed per-rule comments. PTAL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307708</commentid>
    <comment_count>5</comment_count>
      <attachid>309834</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-05-11 19:53:58 -0700</bug_when>
    <thetext>Comment on attachment 309834
Patch

Clearing flags on attachment: 309834

Committed r216719: &lt;http://trac.webkit.org/changeset/216719&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307709</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-05-11 19:53:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308247</attachid>
            <date>2017-04-26 08:12:13 -0700</date>
            <delta_ts>2017-05-11 17:37:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171306-20170426081212.patch</filename>
            <type>text/plain</type>
            <size>101014</size>
            <attacher name="Addy Osmani">addyo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NjgzCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGVjNDZiZjNlOGFh
MmIyMTYyMjE3ZWMxNDJiMGMzOWQwYTk5ZGFlZmMuLmM5ZTIzZTc2ZGE4NGNmYjcyOTZhZjkzNDIz
N2I5M2E5YmQzMGI0Y2MgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTg4IEBACisyMDE3LTA0
LTI2ICBBZGR5IE9zbWFuaSAgPGFkZHlvc21hbmlAZ21haWwuY29tPgorCisgICAgICAgIFNwZWVk
b21ldGVyOiBVcGRhdGUgdGhlIHZhbmlsbGEgSmF2YVNjcmlwdCBUb2RvTVZDIGltcGxlbSB0byBh
IG1vcmUgcmVjZW50IHZlcnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MTMwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorICAgICAgICBVcGRhdGUgdmFuaWxsYSBKUyBUb2RvTVZDIGltcGxlbWVudGF0aW9uIHRvIHRo
ZSBsYXRlc3QuCisKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5p
bGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9ib3dlci5qc29uOiBSZW1vdmVkLgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2Jv
d2VyX2NvbXBvbmVudHMvdG9kb212Yy1jb21tb24vYmFzZS5jc3M6IFJlbW92ZWQuCisgICAgICAg
ICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxh
anMvYm93ZXJfY29tcG9uZW50cy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzOiBSZW1vdmVkLgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFu
aWxsYWpzL2Jvd2VyX2NvbXBvbmVudHMvdG9kb212Yy1jb21tb24vYmcucG5nOiBSZW1vdmVkLgor
ICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMv
dmFuaWxsYWpzL2luZGV4Lmh0bWw6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvYXBwLmpzOgorICAgICAgICAoVG9k
byk6CisgICAgICAgIChzZXRWaWV3KToKKyAgICAgICAgKGxvb2t1cElkKTogRGVsZXRlZC4KKyAg
ICAgICAgKHRhcmdldC5jbGFzc05hbWUuaW5kZXhPZik6IERlbGV0ZWQuCisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMv
Y29udHJvbGxlci5qczoKKyAgICAgICAgKENvbnRyb2xsZXIpOgorICAgICAgICAoQ29udHJvbGxl
ci5wcm90b3R5cGUuc2V0Vmlldyk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5zaG93
QWxsKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnNob3dBY3RpdmUpOgorICAgICAg
ICAoQ29udHJvbGxlci5wcm90b3R5cGUuc2hvd0NvbXBsZXRlZCk6CisgICAgICAgIChDb250cm9s
bGVyLnByb3RvdHlwZS5hZGRJdGVtKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmVk
aXRJdGVtKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmVkaXRJdGVtU2F2ZSk6Cisg
ICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5lZGl0SXRlbUNhbmNlbCk6CisgICAgICAgIChD
b250cm9sbGVyLnByb3RvdHlwZS5yZW1vdmVJdGVtKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJv
dG90eXBlLnJlbW92ZUNvbXBsZXRlZEl0ZW1zKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90
eXBlLnRvZ2dsZUNvbXBsZXRlKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnRvZ2ds
ZUFsbCk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5fdXBkYXRlQ291bnQpOgorICAg
ICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuX2ZpbHRlcik6CisgICAgICAgIChDb250cm9sbGVy
LnByb3RvdHlwZS5fdXBkYXRlRmlsdGVyU3RhdGUpOgorICAgICAgICAob25TYXZlSGFuZGxlcik6
IERlbGV0ZWQuCisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5fdG9nZ2xlRnJhbWUpOiBE
ZWxldGVkLgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuX2dldEN1cnJlbnRQYWdlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxh
LWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy9oZWxwZXJzLmpzOgorICAgICAgICAod2luZG93LnFzKToK
KyAgICAgICAgKHdpbmRvdy5xc2EpOgorICAgICAgICAod2luZG93Lm9uKToKKyAgICAgICAgKHdp
bmRvdy5kZWxlZ2F0ZSk6CisgICAgICAgICh3aW5kb3cucGFyZW50KToKKyAgICAgICAgKE9iamVj
dC5wcm90b3R5cGUuZWFjaCk6IERlbGV0ZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvbW9kZWwuanM6CisgICAg
ICAgIChNb2RlbCk6CisgICAgICAgIChNb2RlbC5wcm90b3R5cGUuY3JlYXRlKToKKyAgICAgICAg
KE1vZGVsLnByb3RvdHlwZS5yZWFkKToKKyAgICAgICAgKE1vZGVsLnByb3RvdHlwZS51cGRhdGUp
OgorICAgICAgICAoTW9kZWwucHJvdG90eXBlLnJlbW92ZSk6CisgICAgICAgIChNb2RlbC5wcm90
b3R5cGUucmVtb3ZlQWxsKToKKyAgICAgICAgKE1vZGVsLnByb3RvdHlwZS5nZXRDb3VudCk6Cisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92
YW5pbGxhanMvanMvc3RvcmUuanM6CisgICAgICAgIChTdG9yZS5wcm90b3R5cGUuZmluZCk6Cisg
ICAgICAgIChTdG9yZS5wcm90b3R5cGUuZmluZEFsbCk6CisgICAgICAgIChTdG9yZS5wcm90b3R5
cGUuc2F2ZSk6CisgICAgICAgIChTdG9yZS5wcm90b3R5cGUucmVtb3ZlKToKKyAgICAgICAgKFN0
b3JlLnByb3RvdHlwZS5kcm9wKToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy90ZW1wbGF0ZS5qczogQWRkZWQuCisg
ICAgICAgIChlc2NhcGVIdG1sQ2hhcik6CisgICAgICAgIChlc2NhcGUpOgorICAgICAgICAoVGVt
cGxhdGUpOgorICAgICAgICAoVGVtcGxhdGUucHJvdG90eXBlLnNob3cpOgorICAgICAgICAoVGVt
cGxhdGUucHJvdG90eXBlLml0ZW1Db3VudGVyKToKKyAgICAgICAgKFRlbXBsYXRlLnByb3RvdHlw
ZS5jbGVhckNvbXBsZXRlZEJ1dHRvbik6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvdmlldy5qczoKKyAgICAgICAg
KFZpZXcpOgorICAgICAgICAoVmlldy5wcm90b3R5cGUuX3JlbW92ZUl0ZW0pOgorICAgICAgICAo
Vmlldy5wcm90b3R5cGUuX2NsZWFyQ29tcGxldGVkQnV0dG9uKToKKyAgICAgICAgKFZpZXcucHJv
dG90eXBlLl9zZXRGaWx0ZXIpOgorICAgICAgICAoVmlldy5wcm90b3R5cGUuX2VsZW1lbnRDb21w
bGV0ZSk6CisgICAgICAgIChWaWV3LnByb3RvdHlwZS5fZWRpdEl0ZW0pOgorICAgICAgICAoVmll
dy5wcm90b3R5cGUuX2VkaXRJdGVtRG9uZSk6CisgICAgICAgICh2aWV3Q29tbWFuZHMuc2hvd0Vu
dHJpZXMpOgorICAgICAgICAodmlld0NvbW1hbmRzLnJlbW92ZUl0ZW0pOgorICAgICAgICAodmll
d0NvbW1hbmRzLnVwZGF0ZUVsZW1lbnRDb3VudCk6CisgICAgICAgICh2aWV3Q29tbWFuZHMuY2xl
YXJDb21wbGV0ZWRCdXR0b24pOgorICAgICAgICAodmlld0NvbW1hbmRzLmNvbnRlbnRCbG9ja1Zp
c2liaWxpdHkpOgorICAgICAgICAodmlld0NvbW1hbmRzLnRvZ2dsZUFsbCk6CisgICAgICAgICh2
aWV3Q29tbWFuZHMuc2V0RmlsdGVyKToKKyAgICAgICAgKHZpZXdDb21tYW5kcy5jbGVhck5ld1Rv
ZG8pOgorICAgICAgICAodmlld0NvbW1hbmRzLmVsZW1lbnRDb21wbGV0ZSk6CisgICAgICAgICh2
aWV3Q29tbWFuZHMuZWRpdEl0ZW0pOgorICAgICAgICAodmlld0NvbW1hbmRzLmVkaXRJdGVtRG9u
ZSk6CisgICAgICAgIChWaWV3LnByb3RvdHlwZS5yZW5kZXIpOgorICAgICAgICAoVmlldy5wcm90
b3R5cGUuX2l0ZW1JZCk6CisgICAgICAgIChWaWV3LnByb3RvdHlwZS5fYmluZEl0ZW1FZGl0RG9u
ZSk6CisgICAgICAgIChWaWV3LnByb3RvdHlwZS5fYmluZEl0ZW1FZGl0Q2FuY2VsKToKKyAgICAg
ICAgKFZpZXcucHJvdG90eXBlLmJpbmQpOgorICAgICAgICAoVmlldy5wcm90b3R5cGUuc2hvdyk6
IERlbGV0ZWQuCisgICAgICAgIChWaWV3LnByb3RvdHlwZS5pdGVtQ291bnRlcik6IERlbGV0ZWQu
CisgICAgICAgIChWaWV3LnByb3RvdHlwZS5jbGVhckNvbXBsZXRlZEJ1dHRvbik6IERlbGV0ZWQu
CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxl
cy92YW5pbGxhanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3M6IEFkZGVk
LgorICAgICAgICAoaHRtbCwpOgorICAgICAgICAoYnV0dG9uKToKKyAgICAgICAgKGJvZHkpOgor
ICAgICAgICAoYnV0dG9uLCk6CisgICAgICAgICguaGlkZGVuKToKKyAgICAgICAgKC50b2RvYXBw
KToKKyAgICAgICAgKC50b2RvYXBwIGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyKToK
KyAgICAgICAgKC50b2RvYXBwIGlucHV0OjotbW96LXBsYWNlaG9sZGVyKToKKyAgICAgICAgKC50
b2RvYXBwIGlucHV0OjppbnB1dC1wbGFjZWhvbGRlcik6CisgICAgICAgICgudG9kb2FwcCBoMSk6
CisgICAgICAgICgubmV3LXRvZG8sKToKKyAgICAgICAgKC5uZXctdG9kbyk6CisgICAgICAgICgu
bWFpbik6CisgICAgICAgIChsYWJlbFtmb3I9J3RvZ2dsZS1hbGwnXSk6CisgICAgICAgICgudG9n
Z2xlLWFsbCk6CisgICAgICAgICgudG9nZ2xlLWFsbDpiZWZvcmUpOgorICAgICAgICAoLnRvZ2ds
ZS1hbGw6Y2hlY2tlZDpiZWZvcmUpOgorICAgICAgICAoLnRvZG8tbGlzdCk6CisgICAgICAgICgu
dG9kby1saXN0IGxpKToKKyAgICAgICAgKC50b2RvLWxpc3QgbGk6bGFzdC1jaGlsZCk6CisgICAg
ICAgICgudG9kby1saXN0IGxpLmVkaXRpbmcpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaS5lZGl0
aW5nIC5lZGl0KToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkuZWRpdGluZyAudmlldyk6CisgICAg
ICAgICgudG9kby1saXN0IGxpIC50b2dnbGUpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaSAudG9n
Z2xlOmFmdGVyKToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkgLnRvZ2dsZTpjaGVja2VkOmFmdGVy
KToKKyAgICAgICAgKC50b2RvLWxpc3QgbGkgbGFiZWwpOgorICAgICAgICAoLnRvZG8tbGlzdCBs
aS5jb21wbGV0ZWQgbGFiZWwpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaSAuZGVzdHJveSk6Cisg
ICAgICAgICgudG9kby1saXN0IGxpIC5kZXN0cm95OmhvdmVyKToKKyAgICAgICAgKC50b2RvLWxp
c3QgbGkgLmRlc3Ryb3k6YWZ0ZXIpOgorICAgICAgICAoLnRvZG8tbGlzdCBsaTpob3ZlciAuZGVz
dHJveSk6CisgICAgICAgICgudG9kby1saXN0IGxpIC5lZGl0KToKKyAgICAgICAgKC50b2RvLWxp
c3QgbGkuZWRpdGluZzpsYXN0LWNoaWxkKToKKyAgICAgICAgKC5mb290ZXIpOgorICAgICAgICAo
LmZvb3RlcjpiZWZvcmUpOgorICAgICAgICAoLnRvZG8tY291bnQpOgorICAgICAgICAoLnRvZG8t
Y291bnQgc3Ryb25nKToKKyAgICAgICAgKC5maWx0ZXJzKToKKyAgICAgICAgKC5maWx0ZXJzIGxp
KToKKyAgICAgICAgKC5maWx0ZXJzIGxpIGEpOgorICAgICAgICAoLmZpbHRlcnMgbGkgYS5zZWxl
Y3RlZCwpOgorICAgICAgICAoLmZpbHRlcnMgbGkgYS5zZWxlY3RlZCk6CisgICAgICAgICguY2xl
YXItY29tcGxldGVkLCk6CisgICAgICAgICguY2xlYXItY29tcGxldGVkOmhvdmVyKToKKyAgICAg
ICAgKC5pbmZvKToKKyAgICAgICAgKC5pbmZvIHApOgorICAgICAgICAoLmluZm8gYSk6CisgICAg
ICAgICguaW5mbyBhOmhvdmVyKToKKyAgICAgICAgKEBtZWRpYSBzY3JlZW4gYW5kICgtd2Via2l0
LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MCkpOgorICAgICAgICAoLnRvZ2dsZS1hbGwsKToKKyAg
ICAgICAgKEBtZWRpYSAobWF4LXdpZHRoOiA0MzBweCkpOgorICAgICAgICAqIFNwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL25vZGVfbW9kdWxl
cy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzczogQWRkZWQuCisgICAgICAgIChocik6CisgICAgICAg
ICgubGVhcm4gYSk6CisgICAgICAgICgubGVhcm4gYTpob3Zlcik6CisgICAgICAgICgubGVhcm4g
aDMsKToKKyAgICAgICAgKC5sZWFybiBoMyk6CisgICAgICAgICgubGVhcm4gaDQpOgorICAgICAg
ICAoLmxlYXJuIGg1KToKKyAgICAgICAgKC5sZWFybiB1bCk6CisgICAgICAgICgubGVhcm4gbGkp
OgorICAgICAgICAoLmxlYXJuIHApOgorICAgICAgICAoI2lzc3VlLWNvdW50KToKKyAgICAgICAg
KC5xdW90ZSk6CisgICAgICAgICgucXVvdGUgcCk6CisgICAgICAgICgucXVvdGUgcDpiZWZvcmUp
OgorICAgICAgICAoLnF1b3RlIHA6YWZ0ZXIpOgorICAgICAgICAoLnF1b3RlIGZvb3Rlcik6Cisg
ICAgICAgICgucXVvdGUgZm9vdGVyIGltZyk6CisgICAgICAgICgucXVvdGUgZm9vdGVyIGEpOgor
ICAgICAgICAoLnNwZWVjaC1idWJibGUpOgorICAgICAgICAoLnNwZWVjaC1idWJibGU6YWZ0ZXIp
OgorICAgICAgICAoLmxlYXJuLWJhciA+IC5sZWFybik6CisgICAgICAgIChAbWVkaWEgKG1pbi13
aWR0aDogODk5cHgpKToKKyAgICAgICAgKC5sZWFybi1iYXIpOgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL25vZGVfbW9k
dWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzOiBBZGRlZC4KKyAgICAgICAgKF8uZGVmYXVsdHMp
OgorICAgICAgICAodGVtcGxhdGUpOgorICAgICAgICAoZXNjYXBlci5fLnRlbXBsYXRlKToKKyAg
ICAgICAgKF8pOgorICAgICAgICAobG9jYXRpb24uaG9zdG5hbWUuc3RyaW5nX2FwcGVhcmVkX2hl
cmUuaS5yLmkucik6CisgICAgICAgIChyZWRpcmVjdCk6CisgICAgICAgIChmaW5kUm9vdCk6Cisg
ICAgICAgICh4aHIub25sb2FkKToKKyAgICAgICAgKGdldEZpbGUpOgorICAgICAgICAoTGVhcm4p
OgorICAgICAgICAoTGVhcm4ucHJvdG90eXBlLmFwcGVuZCk6CisgICAgICAgIChMZWFybi5wcm90
b3R5cGUuZmV0Y2hJc3N1ZUNvdW50KToKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9wYWNrYWdlLmpzb246IEFkZGVkLgor
CiAyMDE3LTA0LTIxICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
U2ltcGxlIGxpbmUgbGF5b3V0OiBBZGQgcGVyZm9ybWFuY2UgdGVzdCB0byBtZWFzdXJlIG1pZC13
b3JkIGxpbmUgYnJlYWtpbmcgd2l0aCBsb25nIHRleHQuCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFu
aWxsYWpzL2Jvd2VyLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2Jvd2VyLmpzb24KZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4ZTNiY2VlMGM2ZWUwNmNmZWVmZmQ0OWZkZTNjODA3NzJh
OTcxNzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1w
bGVzL3ZhbmlsbGFqcy9ib3dlci5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi17
Ci0gICAgIm5hbWUiOiAidG9kb212Yy12YW5pbGxhanMiLAotICAgICJ2ZXJzaW9uIjogIjAuMC4w
IiwKLSAgICAiZGVwZW5kZW5jaWVzIjogewotICAgICJ0b2RvbXZjLWNvbW1vbiI6ICJ+MC4xLjQi
Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9ib3dlcl9jb21wb25lbnRz
L3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9ib3dlcl9jb21wb25l
bnRzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA3MzdjZDljYzhjN2UwN2U0NjkxZDRlZTFiYWE3MDJlNDk5M2NhMjFhLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvYm93ZXJf
Y29tcG9uZW50cy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcworKysgL2Rldi9udWxsCkBAIC0xLDU1
NCArMCwwIEBACi1odG1sLAotYm9keSB7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDA7
Ci19Ci0KLWJ1dHRvbiB7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDA7Ci0gICAgYm9y
ZGVyOiAwOwotICAgIGJhY2tncm91bmQ6IG5vbmU7Ci0gICAgZm9udC1zaXplOiAxMDAlOwotICAg
IHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKLSAgICBmb250LWZhbWlseTogaW5oZXJpdDsKLSAg
ICBjb2xvcjogaW5oZXJpdDsKLSAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgLyot
bW96LWFwcGVhcmFuY2U6IG5vbmU7Ki8KLSAgICAtbXMtYXBwZWFyYW5jZTogbm9uZTsKLSAgICAt
by1hcHBlYXJhbmNlOiBub25lOwotICAgIGFwcGVhcmFuY2U6IG5vbmU7Ci19Ci0KLWJvZHkgewot
ICAgIGZvbnQ6IDE0cHggJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1z
ZXJpZjsKLSAgICBsaW5lLWhlaWdodDogMS40ZW07Ci0gICAgYmFja2dyb3VuZDogI2VhZWFlYSB1
cmwoJ2JnLnBuZycpOwotICAgIGNvbG9yOiAjNGQ0ZDRkOwotICAgIHdpZHRoOiA1NTBweDsKLSAg
ICBtYXJnaW46IDAgYXV0bzsKLSAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNl
ZDsKLSAgICAtbW96LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKLSAgICAtbXMtZm9udC1z
bW9vdGhpbmc6IGFudGlhbGlhc2VkOwotICAgIC1vLWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNl
ZDsKLSAgICBmb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci19Ci0KLSN0b2RvYXBwIHsKLSAg
ICBiYWNrZ3JvdW5kOiAjZmZmOwotICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwg
MC45KTsKLSAgICBtYXJnaW46IDEzMHB4IDAgNDBweCAwOwotICAgIGJvcmRlcjogMXB4IHNvbGlk
ICNjY2M7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIGJvcmRlci10b3AtbGVmdC1yYWRp
dXM6IDJweDsKLSAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMnB4OwotICAgIGJveC1zaGFk
b3c6IDAgMnB4IDZweCAwIHJnYmEoMCwgMCwgMCwgMC4yKSwKLSAgICAwIDI1cHggNTBweCAwIHJn
YmEoMCwgMCwgMCwgMC4xNSk7Ci19Ci0KLSN0b2RvYXBwOmJlZm9yZSB7Ci0gICAgY29udGVudDog
Jyc7Ci0gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZjVkNmQ2OwotICAgIGJvcmRlci1yaWdo
dDogMXB4IHNvbGlkICNmNWQ2ZDY7Ci0gICAgd2lkdGg6IDJweDsKLSAgICBwb3NpdGlvbjogYWJz
b2x1dGU7Ci0gICAgdG9wOiAwOwotICAgIGxlZnQ6IDQwcHg7Ci0gICAgaGVpZ2h0OiAxMDAlOwot
fQotCi0jdG9kb2FwcCBpbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7Ci0gICAgZm9u
dC1zdHlsZTogaXRhbGljOwotfQotCi0jdG9kb2FwcCBpbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7
Ci0gICAgZm9udC1zdHlsZTogaXRhbGljOwotICAgIGNvbG9yOiAjYTlhOWE5OwotfQotCi0jdG9k
b2FwcCBoMSB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogLTEyMHB4OwotICAg
IHdpZHRoOiAxMDAlOwotICAgIGZvbnQtc2l6ZTogNzBweDsKLSAgICBmb250LXdlaWdodDogYm9s
ZDsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgY29sb3I6ICNiM2IzYjM7Ci0gICAgY29s
b3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTsKLSAgICB0ZXh0LXNoYWRvdzogLTFweCAtMXB4
IHJnYmEoMCwgMCwgMCwgMC4yKTsKLSAgICAtd2Via2l0LXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6
ZUxlZ2liaWxpdHk7Ci0gICAgLW1vei10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5
OwotICAgIC1tcy10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OwotICAgIC1vLXRl
eHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7Ci0gICAgdGV4dC1yZW5kZXJpbmc6IG9w
dGltaXplTGVnaWJpbGl0eTsKLX0KLQotI2hlYWRlciB7Ci0gICAgcGFkZGluZy10b3A6IDE1cHg7
Ci0gICAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDsKLX0KLQotI2hlYWRlcjpiZWZvcmUgewotICAg
IGNvbnRlbnQ6ICcnOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IDA7Ci0gICAg
cmlnaHQ6IDA7Ci0gICAgbGVmdDogMDsKLSAgICBoZWlnaHQ6IDE1cHg7Ci0gICAgei1pbmRleDog
MjsKLSAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzZjNjE1YzsKLSAgICBiYWNrZ3JvdW5k
OiAjOGQ3ZDc3OwotICAgIGJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0
IHRvcCwgbGVmdCBib3R0b20sIGZyb20ocmdiYSgxMzIsIDExMCwgMTAwLCAwLjgpKSx0byhyZ2Jh
KDEwMSwgODQsIDc2LCAwLjgpKSk7Ci0gICAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3Jh
ZGllbnQodG9wLCByZ2JhKDEzMiwgMTEwLCAxMDAsIDAuOCksIHJnYmEoMTAxLCA4NCwgNzYsIDAu
OCkpOwotICAgIGJhY2tncm91bmQ6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgcmdiYSgxMzIs
IDExMCwgMTAwLCAwLjgpLCByZ2JhKDEwMSwgODQsIDc2LCAwLjgpKTsKLSAgICBiYWNrZ3JvdW5k
OiAtby1saW5lYXItZ3JhZGllbnQodG9wLCByZ2JhKDEzMiwgMTEwLCAxMDAsIDAuOCksIHJnYmEo
MTAxLCA4NCwgNzYsIDAuOCkpOwotICAgIGJhY2tncm91bmQ6IC1tcy1saW5lYXItZ3JhZGllbnQo
dG9wLCByZ2JhKDEzMiwgMTEwLCAxMDAsIDAuOCksIHJnYmEoMTAxLCA4NCwgNzYsIDAuOCkpOwot
ICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0b3AsIHJnYmEoMTMyLCAxMTAsIDEwMCwg
MC44KSwgcmdiYSgxMDEsIDg0LCA3NiwgMC44KSk7Ci0gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1
czogMXB4OwotICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAxcHg7Ci19Ci0KLSNuZXctdG9k
bywKLS5lZGl0IHsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgbWFyZ2luOiAwOwotICAg
IHdpZHRoOiAxMDAlOwotICAgIGZvbnQtc2l6ZTogMjRweDsKLSAgICBmb250LWZhbWlseTogaW5o
ZXJpdDsKLSAgICBsaW5lLWhlaWdodDogMS40ZW07Ci0gICAgYm9yZGVyOiAwOwotICAgIG91dGxp
bmU6IG5vbmU7Ci0gICAgY29sb3I6IGluaGVyaXQ7Ci0gICAgcGFkZGluZzogNnB4OwotICAgIGJv
cmRlcjogMXB4IHNvbGlkICM5OTk7Ci0gICAgYm94LXNoYWRvdzogaW5zZXQgMCAtMXB4IDVweCAw
IHJnYmEoMCwgMCwgMCwgMC4yKTsKLSAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7
Ci0gICAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94OwotICAgIC1tcy1ib3gtc2l6aW5nOiBi
b3JkZXItYm94OwotICAgIC1vLWJveC1zaXppbmc6IGJvcmRlci1ib3g7Ci0gICAgYm94LXNpemlu
ZzogYm9yZGVyLWJveDsKLSAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsK
LSAgICAtbW96LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKLSAgICAtbXMtZm9udC1zbW9v
dGhpbmc6IGFudGlhbGlhc2VkOwotICAgIC1vLWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsK
LSAgICBmb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci19Ci0KLSNuZXctdG9kbyB7Ci0gICAg
cGFkZGluZzogMTZweCAxNnB4IDE2cHggNjBweDsKLSAgICBib3JkZXI6IG5vbmU7Ci0gICAgYmFj
a2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjAyKTsKLSAgICB6LWluZGV4OiAyOwotICAgIGJveC1z
aGFkb3c6IG5vbmU7Ci19Ci0KLSNtYWluIHsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAg
ei1pbmRleDogMjsKLSAgICBib3JkZXItdG9wOiAxcHggZG90dGVkICNhZGFkYWQ7Ci19Ci0KLWxh
YmVsW2Zvcj0ndG9nZ2xlLWFsbCddIHsKLSAgICBkaXNwbGF5OiBub25lOwotfQotCi0jdG9nZ2xl
LWFsbCB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogLTQycHg7Ci0gICAgbGVm
dDogLTRweDsKLSAgICB3aWR0aDogNDBweDsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAg
Ym9yZGVyOiBub25lOyAvKiBNb2JpbGUgU2FmYXJpICovCi19Ci0KLSN0b2dnbGUtYWxsOmJlZm9y
ZSB7Ci0gICAgY29udGVudDogJ8K7JzsKLSAgICBmb250LXNpemU6IDI4cHg7Ci0gICAgY29sb3I6
ICNkOWQ5ZDk7Ci0gICAgcGFkZGluZzogMCAyNXB4IDdweDsKLX0KLQotI3RvZ2dsZS1hbGw6Y2hl
Y2tlZDpiZWZvcmUgewotICAgIGNvbG9yOiAjNzM3MzczOwotfQotCi0jdG9kby1saXN0IHsKLSAg
ICBtYXJnaW46IDA7Ci0gICAgcGFkZGluZzogMDsKLSAgICBsaXN0LXN0eWxlOiBub25lOwotfQot
Ci0jdG9kby1saXN0IGxpIHsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgZm9udC1zaXpl
OiAyNHB4OwotICAgIGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQgI2NjYzsKLX0KLQotI3RvZG8t
bGlzdCBsaTpsYXN0LWNoaWxkIHsKLSAgICBib3JkZXItYm90dG9tOiBub25lOwotfQotCi0jdG9k
by1saXN0IGxpLmVkaXRpbmcgewotICAgIGJvcmRlci1ib3R0b206IG5vbmU7Ci0gICAgcGFkZGlu
ZzogMDsKLX0KLQotI3RvZG8tbGlzdCBsaS5lZGl0aW5nIC5lZGl0IHsKLSAgICBkaXNwbGF5OiBi
bG9jazsKLSAgICB3aWR0aDogNTA2cHg7Ci0gICAgcGFkZGluZzogMTNweCAxN3B4IDEycHggMTdw
eDsKLSAgICBtYXJnaW46IDAgMCAwIDQzcHg7Ci19Ci0KLSN0b2RvLWxpc3QgbGkuZWRpdGluZyAu
dmlldyB7Ci0gICAgZGlzcGxheTogbm9uZTsKLX0KLQotI3RvZG8tbGlzdCBsaSAudG9nZ2xlIHsK
LSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgd2lkdGg6IDQwcHg7Ci0gICAgLyogYXV0bywg
c2luY2Ugbm9uLVdlYktpdCBicm93c2VycyBkb2Vzbid0IHN1cHBvcnQgaW5wdXQgc3R5bGluZyAq
LwotICAgIGhlaWdodDogYXV0bzsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAw
OwotICAgIGJvdHRvbTogMDsKLSAgICBtYXJnaW46IGF1dG8gMDsKLSAgICBib3JkZXI6IG5vbmU7
IC8qIE1vYmlsZSBTYWZhcmkgKi8KLSAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Ci0gICAg
LyotbW96LWFwcGVhcmFuY2U6IG5vbmU7Ki8KLSAgICAtbXMtYXBwZWFyYW5jZTogbm9uZTsKLSAg
ICAtby1hcHBlYXJhbmNlOiBub25lOwotICAgIGFwcGVhcmFuY2U6IG5vbmU7Ci19Ci0KLSN0b2Rv
LWxpc3QgbGkgLnRvZ2dsZTphZnRlciB7Ci0gICAgY29udGVudDogJ+KclCc7Ci0gICAgbGluZS1o
ZWlnaHQ6IDQzcHg7IC8qIDQwICsgYSBjb3VwbGUgb2YgcGl4ZWxzIHZpc3VhbCBhZGp1c3RtZW50
ICovCi0gICAgZm9udC1zaXplOiAyMHB4OwotICAgIGNvbG9yOiAjZDlkOWQ5OwotICAgIHRleHQt
c2hhZG93OiAwIC0xcHggMCAjYmZiZmJmOwotfQotCi0jdG9kby1saXN0IGxpIC50b2dnbGU6Y2hl
Y2tlZDphZnRlciB7Ci0gICAgY29sb3I6ICM4NWFkYTc7Ci0gICAgdGV4dC1zaGFkb3c6IDAgMXB4
IDAgIzY2OTk5MTsKLSAgICBib3R0b206IDFweDsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci19
Ci0KLSN0b2RvLWxpc3QgbGkgbGFiZWwgewotICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7Ci0g
ICAgcGFkZGluZzogMTVweDsKLSAgICBtYXJnaW4tbGVmdDogNDVweDsKLSAgICBkaXNwbGF5OiBi
bG9jazsKLSAgICBsaW5lLWhlaWdodDogMS4yOwotICAgIC13ZWJraXQtdHJhbnNpdGlvbjogY29s
b3IgMC40czsKLSAgICAtbW96LXRyYW5zaXRpb246IGNvbG9yIDAuNHM7Ci0gICAgLW1zLXRyYW5z
aXRpb246IGNvbG9yIDAuNHM7Ci0gICAgLW8tdHJhbnNpdGlvbjogY29sb3IgMC40czsKLSAgICB0
cmFuc2l0aW9uOiBjb2xvciAwLjRzOwotfQotCi0jdG9kby1saXN0IGxpLmNvbXBsZXRlZCBsYWJl
bCB7Ci0gICAgY29sb3I6ICNhOWE5YTk7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91
Z2g7Ci19Ci0KLSN0b2RvLWxpc3QgbGkgLmRlc3Ryb3kgewotICAgIGRpc3BsYXk6IG5vbmU7Ci0g
ICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogMDsKLSAgICByaWdodDogMTBweDsKLSAg
ICBib3R0b206IDA7Ci0gICAgd2lkdGg6IDQwcHg7Ci0gICAgaGVpZ2h0OiA0MHB4OwotICAgIG1h
cmdpbjogYXV0byAwOwotICAgIGZvbnQtc2l6ZTogMjJweDsKLSAgICBjb2xvcjogI2E4OGE4YTsK
LSAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjJzOwotICAgIC1tb3otdHJhbnNpdGlvbjog
YWxsIDAuMnM7Ci0gICAgLW1zLXRyYW5zaXRpb246IGFsbCAwLjJzOwotICAgIC1vLXRyYW5zaXRp
b246IGFsbCAwLjJzOwotICAgIHRyYW5zaXRpb246IGFsbCAwLjJzOwotfQotCi0jdG9kby1saXN0
IGxpIC5kZXN0cm95OmhvdmVyIHsKLSAgICB0ZXh0LXNoYWRvdzogMCAwIDFweCAjMDAwLAotICAg
ICAwIDAgMTBweCByZ2JhKDE5OSwgMTA3LCAxMDcsIDAuOCk7Ci0gICAgLXdlYmtpdC10cmFuc2Zv
cm06IHNjYWxlKDEuMyk7Ci0gICAgLW1vei10cmFuc2Zvcm06IHNjYWxlKDEuMyk7Ci0gICAgLW1z
LXRyYW5zZm9ybTogc2NhbGUoMS4zKTsKLSAgICAtby10cmFuc2Zvcm06IHNjYWxlKDEuMyk7Ci0g
ICAgdHJhbnNmb3JtOiBzY2FsZSgxLjMpOwotfQotCi0jdG9kby1saXN0IGxpIC5kZXN0cm95OmFm
dGVyIHsKLSAgICBjb250ZW50OiAn4pyWJzsKLX0KLQotI3RvZG8tbGlzdCBsaTpob3ZlciAuZGVz
dHJveSB7Ci0gICAgZGlzcGxheTogYmxvY2s7Ci19Ci0KLSN0b2RvLWxpc3QgbGkgLmVkaXQgewot
ICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0KLSN0b2RvLWxpc3QgbGkuZWRpdGluZzpsYXN0LWNoaWxk
IHsKLSAgICBtYXJnaW4tYm90dG9tOiAtMXB4OwotfQotCi0jZm9vdGVyIHsKLSAgICBjb2xvcjog
Izc3NzsKLSAgICBwYWRkaW5nOiAwIDE1cHg7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAg
IHJpZ2h0OiAwOwotICAgIGJvdHRvbTogLTMxcHg7Ci0gICAgbGVmdDogMDsKLSAgICBoZWlnaHQ6
IDIwcHg7Ci0gICAgei1pbmRleDogMTsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci19Ci0KLSNm
b290ZXI6YmVmb3JlIHsKLSAgICBjb250ZW50OiAnJzsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7
Ci0gICAgcmlnaHQ6IDA7Ci0gICAgYm90dG9tOiAzMXB4OwotICAgIGxlZnQ6IDA7Ci0gICAgaGVp
Z2h0OiA1MHB4OwotICAgIHotaW5kZXg6IC0xOwotICAgIGJveC1zaGFkb3c6IDAgMXB4IDFweCBy
Z2JhKDAsIDAsIDAsIDAuMyksCi0gICAgMCA2cHggMCAtM3B4IHJnYmEoMjU1LCAyNTUsIDI1NSwg
MC44KSwKLSAgICAwIDdweCAxcHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMyksCi0gICAgMCA0M3B4
IDAgLTZweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCksCi0gICAgMCA0NHB4IDJweCAtNnB4IHJn
YmEoMCwgMCwgMCwgMC4yKTsKLX0KLQotI3RvZG8tY291bnQgewotICAgIGZsb2F0OiBsZWZ0Owot
ICAgIHRleHQtYWxpZ246IGxlZnQ7Ci19Ci0KLSNmaWx0ZXJzIHsKLSAgICBtYXJnaW46IDA7Ci0g
ICAgcGFkZGluZzogMDsKLSAgICBsaXN0LXN0eWxlOiBub25lOwotICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKLSAgICByaWdodDogMDsKLSAgICBsZWZ0OiAwOwotfQotCi0jZmlsdGVycyBsaSB7Ci0g
ICAgZGlzcGxheTogaW5saW5lOwotfQotCi0jZmlsdGVycyBsaSBhIHsKLSAgICBjb2xvcjogIzgz
NzU2ZjsKLSAgICBtYXJnaW46IDJweDsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci19Ci0K
LSNmaWx0ZXJzIGxpIGEuc2VsZWN0ZWQgewotICAgIGZvbnQtd2VpZ2h0OiBib2xkOwotfQotCi0j
Y2xlYXItY29tcGxldGVkIHsKLSAgICBmbG9hdDogcmlnaHQ7Ci0gICAgcG9zaXRpb246IHJlbGF0
aXZlOwotICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsK
LSAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMSk7Ci0gICAgZm9udC1zaXplOiAxMXB4
OwotICAgIHBhZGRpbmc6IDAgMTBweDsKLSAgICBib3JkZXItcmFkaXVzOiAzcHg7Ci0gICAgYm94
LXNoYWRvdzogMCAtMXB4IDAgMCByZ2JhKDAsIDAsIDAsIDAuMik7Ci19Ci0KLSNjbGVhci1jb21w
bGV0ZWQ6aG92ZXIgewotICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4xNSk7Ci0gICAg
Ym94LXNoYWRvdzogMCAtMXB4IDAgMCByZ2JhKDAsIDAsIDAsIDAuMyk7Ci19Ci0KLSNpbmZvIHsK
LSAgICBtYXJnaW46IDY1cHggYXV0byAwOwotICAgIGNvbG9yOiAjYTZhNmE2OwotICAgIGZvbnQt
c2l6ZTogMTJweDsKLSAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUs
IDAuNyk7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotfQotCi0jaW5mbyBhIHsKLSAgICBjb2xv
cjogaW5oZXJpdDsKLX0KLQotLyoKLSAgICBIYWNrIHRvIHJlbW92ZSBiYWNrZ3JvdW5kIGZyb20g
TW9iaWxlIFNhZmFyaS4KLSAgICBDYW4ndCB1c2UgaXQgZ2xvYmFsbHkgc2luY2UgaXQgZGVzdHJv
eXMgY2hlY2tib3hlcyBpbiBGaXJlZm94IGFuZCBPcGVyYQotKi8KLUBtZWRpYSBzY3JlZW4gYW5k
ICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MCkgewotICAgICN0b2dnbGUtYWxsLAot
ICAgICN0b2RvLWxpc3QgbGkgLnRvZ2dsZSB7Ci0gICAgYmFja2dyb3VuZDogbm9uZTsKLSAgICB9
Ci0KLSAgICAjdG9kby1saXN0IGxpIC50b2dnbGUgewotICAgIGhlaWdodDogNDBweDsKLSAgICB9
Ci0KLSAgICAjdG9nZ2xlLWFsbCB7Ci0gICAgdG9wOiAtNTZweDsKLSAgICBsZWZ0OiAtMTVweDsK
LSAgICB3aWR0aDogNjVweDsKLSAgICBoZWlnaHQ6IDQxcHg7Ci0gICAgLXdlYmtpdC10cmFuc2Zv
cm06IHJvdGF0ZSg5MGRlZyk7Ci0gICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwotICAgIC13
ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKLSAgICBhcHBlYXJhbmNlOiBub25lOwotICAgIH0KLX0K
LQotLmhpZGRlbnsKLSAgICBkaXNwbGF5Om5vbmU7Ci19Ci0KLWhyIHsKLSAgICBtYXJnaW46IDIw
cHggMDsKLSAgICBib3JkZXI6IDA7Ci0gICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCAjQzVDNUM1
OwotICAgIGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgI0Y3RjdGNzsKLX0KLQotLmxlYXJuIGEg
ewotICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwot
ICAgIGNvbG9yOiAjYjgzZjQ1OwotfQotCi0ubGVhcm4gYTpob3ZlciB7Ci0gICAgdGV4dC1kZWNv
cmF0aW9uOiB1bmRlcmxpbmU7Ci0gICAgY29sb3I6ICM3ODdlN2U7Ci19Ci0KLS5sZWFybiBoMywK
LS5sZWFybiBoNCwKLS5sZWFybiBoNSB7Ci0gICAgbWFyZ2luOiAxMHB4IDA7Ci0gICAgZm9udC13
ZWlnaHQ6IDUwMDsKLSAgICBsaW5lLWhlaWdodDogMS4yOwotICAgIGNvbG9yOiAjMDAwOwotfQot
Ci0ubGVhcm4gaDMgewotICAgIGZvbnQtc2l6ZTogMjRweDsKLX0KLQotLmxlYXJuIGg0IHsKLSAg
ICBmb250LXNpemU6IDE4cHg7Ci19Ci0KLS5sZWFybiBoNSB7Ci0gICAgbWFyZ2luLWJvdHRvbTog
MDsKLSAgICBmb250LXNpemU6IDE0cHg7Ci19Ci0KLS5sZWFybiB1bCB7Ci0gICAgcGFkZGluZzog
MDsKLSAgICBtYXJnaW46IDAgMCAzMHB4IDI1cHg7Ci19Ci0KLS5sZWFybiBsaSB7Ci0gICAgbGlu
ZS1oZWlnaHQ6IDIwcHg7Ci19Ci0KLS5sZWFybiBwIHsKLSAgICBmb250LXNpemU6IDE1cHg7Ci0g
ICAgZm9udC13ZWlnaHQ6IDMwMDsKLSAgICBsaW5lLWhlaWdodDogMS4zOwotICAgIG1hcmdpbi10
b3A6IDA7Ci0gICAgbWFyZ2luLWJvdHRvbTogMDsKLX0KLQotLnF1b3RlIHsKLSAgICBib3JkZXI6
IG5vbmU7Ci0gICAgbWFyZ2luOiAyMHB4IDAgNjBweCAwOwotfQotCi0ucXVvdGUgcCB7Ci0gICAg
Zm9udC1zdHlsZTogaXRhbGljOwotfQotCi0ucXVvdGUgcDpiZWZvcmUgewotICAgIGNvbnRlbnQ6
ICfigJwnOwotICAgIGZvbnQtc2l6ZTogNTBweDsKLSAgICBvcGFjaXR5OiAuMTU7Ci0gICAgcG9z
aXRpb246IGFic29sdXRlOwotICAgIHRvcDogLTIwcHg7Ci0gICAgbGVmdDogM3B4OwotfQotCi0u
cXVvdGUgcDphZnRlciB7Ci0gICAgY29udGVudDogJ+KAnSc7Ci0gICAgZm9udC1zaXplOiA1MHB4
OwotICAgIG9wYWNpdHk6IC4xNTsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgYm90dG9t
OiAtNDJweDsKLSAgICByaWdodDogM3B4OwotfQotCi0ucXVvdGUgZm9vdGVyIHsKLSAgICBwb3Np
dGlvbjogYWJzb2x1dGU7Ci0gICAgYm90dG9tOiAtNDBweDsKLSAgICByaWdodDogMDsKLX0KLQot
LnF1b3RlIGZvb3RlciBpbWcgewotICAgIGJvcmRlci1yYWRpdXM6IDNweDsKLX0KLQotLnF1b3Rl
IGZvb3RlciBhIHsKLSAgICBtYXJnaW4tbGVmdDogNXB4OwotICAgIHZlcnRpY2FsLWFsaWduOiBt
aWRkbGU7Ci19Ci0KLS5zcGVlY2gtYnViYmxlIHsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0g
ICAgcGFkZGluZzogMTBweDsKLSAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIC4wNCk7Ci0g
ICAgYm9yZGVyLXJhZGl1czogNXB4OwotfQotCi0uc3BlZWNoLWJ1YmJsZTphZnRlciB7Ci0gICAg
Y29udGVudDogJyc7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogMTAwJTsKLSAg
ICByaWdodDogMzBweDsKLSAgICBib3JkZXI6IDEzcHggc29saWQgdHJhbnNwYXJlbnQ7Ci0gICAg
Ym9yZGVyLXRvcC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMDQpOwotfQotCi0vKipib2R5Ki8ubGVh
cm4tYmFyID4gLmxlYXJuIHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgd2lkdGg6IDI3
MnB4OwotICAgIHRvcDogOHB4OwotICAgIGxlZnQ6IC0zMDBweDsKLSAgICBwYWRkaW5nOiAxMHB4
OwotICAgIGJvcmRlci1yYWRpdXM6IDVweDsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1
NSwgMjU1LCAyNTUsIC42KTsKLSAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBsZWZ0OwotICAgIHRy
YW5zaXRpb24tZHVyYXRpb246IDUwMG1zOwotfQotCi1AbWVkaWEgKG1pbi13aWR0aDogODk5cHgp
IHsKLSAgICAvKipib2R5Ki8ubGVhcm4tYmFyIHsKLSAgICB3aWR0aDogYXV0bzsKLSAgICBtYXJn
aW46IDAgMCAwIDMwMHB4OwotICAgIH0KLSAgICAvKipib2R5Ki8ubGVhcm4tYmFyID4gLmxlYXJu
IHsKLSAgICBsZWZ0OiA4cHg7Ci0gICAgfQotICAgIC8qKmJvZHkqLy5sZWFybi1iYXIgI3RvZG9h
cHAgewotICAgIHdpZHRoOiA1NTBweDsKLSAgICBtYXJnaW46IDEzMHB4IGF1dG8gNDBweCBhdXRv
OwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvYm93ZXJfY29tcG9uZW50
cy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9ib3dlcl9jb21wb25l
bnRzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGY5YmY0MjQwZmFkOWE5YzExOTRjODE1ODZkYzI5MTZiZWMxY2NhNzguLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9ib3dlcl9j
b21wb25lbnRzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyMDkg
KzAsMCBAQAotKGZ1bmN0aW9uICgpIHsKLSAgICAndXNlIHN0cmljdCc7Ci0KLSAgICAvLyBVbmRl
cnNjb3JlJ3MgVGVtcGxhdGUgTW9kdWxlCi0gICAgLy8gQ291cnRlc3kgb2YgdW5kZXJzY29yZWpz
Lm9yZwotICAgIHZhciBfID0gKGZ1bmN0aW9uIChfKSB7Ci0gICAgXy5kZWZhdWx0cyA9IGZ1bmN0
aW9uIChvYmplY3QpIHsKLSAgICBpZiAoIW9iamVjdCkgewotICAgIHJldHVybiBvYmplY3Q7Ci0g
ICAgfQotICAgIGZvciAodmFyIGFyZ3NJbmRleCA9IDEsIGFyZ3NMZW5ndGggPSBhcmd1bWVudHMu
bGVuZ3RoOyBhcmdzSW5kZXggPCBhcmdzTGVuZ3RoOyBhcmdzSW5kZXgrKykgewotICAgIHZhciBp
dGVyYWJsZSA9IGFyZ3VtZW50c1thcmdzSW5kZXhdOwotICAgIGlmIChpdGVyYWJsZSkgewotICAg
IGZvciAodmFyIGtleSBpbiBpdGVyYWJsZSkgewotICAgIGlmIChvYmplY3Rba2V5XSA9PSBudWxs
KSB7Ci0gICAgb2JqZWN0W2tleV0gPSBpdGVyYWJsZVtrZXldOwotICAgIH0KLSAgICB9Ci0gICAg
fQotICAgIH0KLSAgICByZXR1cm4gb2JqZWN0OwotICAgIH0KLQotICAgIC8vIEJ5IGRlZmF1bHQs
IFVuZGVyc2NvcmUgdXNlcyBFUkItc3R5bGUgdGVtcGxhdGUgZGVsaW1pdGVycywgY2hhbmdlIHRo
ZQotICAgIC8vIGZvbGxvd2luZyB0ZW1wbGF0ZSBzZXR0aW5ncyB0byB1c2UgYWx0ZXJuYXRpdmUg
ZGVsaW1pdGVycy4KLSAgICBfLnRlbXBsYXRlU2V0dGluZ3MgPSB7Ci0gICAgZXZhbHVhdGUgICAg
OiAvPCUoW1xzXFNdKz8pJT4vZywKLSAgICBpbnRlcnBvbGF0ZSA6IC88JT0oW1xzXFNdKz8pJT4v
ZywKLSAgICBlc2NhcGUgICAgICA6IC88JS0oW1xzXFNdKz8pJT4vZwotICAgIH07Ci0KLSAgICAv
LyBXaGVuIGN1c3RvbWl6aW5nIGB0ZW1wbGF0ZVNldHRpbmdzYCwgaWYgeW91IGRvbid0IHdhbnQg
dG8gZGVmaW5lIGFuCi0gICAgLy8gaW50ZXJwb2xhdGlvbiwgZXZhbHVhdGlvbiBvciBlc2NhcGlu
ZyByZWdleCwgd2UgbmVlZCBvbmUgdGhhdCBpcwotICAgIC8vIGd1YXJhbnRlZWQgbm90IHRvIG1h
dGNoLgotICAgIHZhciBub01hdGNoID0gLyguKV4vOwotCi0gICAgLy8gQ2VydGFpbiBjaGFyYWN0
ZXJzIG5lZWQgdG8gYmUgZXNjYXBlZCBzbyB0aGF0IHRoZXkgY2FuIGJlIHB1dCBpbnRvIGEKLSAg
ICAvLyBzdHJpbmcgbGl0ZXJhbC4KLSAgICB2YXIgZXNjYXBlcyA9IHsKLSAgICAiJyI6ICAgICAg
IiciLAotICAgICdcXCc6ICAgICAnXFwnLAotICAgICdccic6ICAgICAncicsCi0gICAgJ1xuJzog
ICAgICduJywKLSAgICAnXHQnOiAgICAgJ3QnLAotICAgICdcdTIwMjgnOiAndTIwMjgnLAotICAg
ICdcdTIwMjknOiAndTIwMjknCi0gICAgfTsKLQotICAgIHZhciBlc2NhcGVyID0gL1xcfCd8XHJ8
XG58XHR8XHUyMDI4fFx1MjAyOS9nOwotCi0gICAgLy8gSmF2YVNjcmlwdCBtaWNyby10ZW1wbGF0
aW5nLCBzaW1pbGFyIHRvIEpvaG4gUmVzaWcncyBpbXBsZW1lbnRhdGlvbi4KLSAgICAvLyBVbmRl
cnNjb3JlIHRlbXBsYXRpbmcgaGFuZGxlcyBhcmJpdHJhcnkgZGVsaW1pdGVycywgcHJlc2VydmVz
IHdoaXRlc3BhY2UsCi0gICAgLy8gYW5kIGNvcnJlY3RseSBlc2NhcGVzIHF1b3RlcyB3aXRoaW4g
aW50ZXJwb2xhdGVkIGNvZGUuCi0gICAgXy50ZW1wbGF0ZSA9IGZ1bmN0aW9uKHRleHQsIGRhdGEs
IHNldHRpbmdzKSB7Ci0gICAgdmFyIHJlbmRlcjsKLSAgICBzZXR0aW5ncyA9IF8uZGVmYXVsdHMo
e30sIHNldHRpbmdzLCBfLnRlbXBsYXRlU2V0dGluZ3MpOwotCi0gICAgLy8gQ29tYmluZSBkZWxp
bWl0ZXJzIGludG8gb25lIHJlZ3VsYXIgZXhwcmVzc2lvbiB2aWEgYWx0ZXJuYXRpb24uCi0gICAg
dmFyIG1hdGNoZXIgPSBuZXcgUmVnRXhwKFsKLSAgICAoc2V0dGluZ3MuZXNjYXBlIHx8IG5vTWF0
Y2gpLnNvdXJjZSwKLSAgICAoc2V0dGluZ3MuaW50ZXJwb2xhdGUgfHwgbm9NYXRjaCkuc291cmNl
LAotICAgIChzZXR0aW5ncy5ldmFsdWF0ZSB8fCBub01hdGNoKS5zb3VyY2UKLSAgICBdLmpvaW4o
J3wnKSArICd8JCcsICdnJyk7Ci0KLSAgICAvLyBDb21waWxlIHRoZSB0ZW1wbGF0ZSBzb3VyY2Us
IGVzY2FwaW5nIHN0cmluZyBsaXRlcmFscyBhcHByb3ByaWF0ZWx5LgotICAgIHZhciBpbmRleCA9
IDA7Ci0gICAgdmFyIHNvdXJjZSA9ICJfX3ArPSciOwotICAgIHRleHQucmVwbGFjZShtYXRjaGVy
LCBmdW5jdGlvbihtYXRjaCwgZXNjYXBlLCBpbnRlcnBvbGF0ZSwgZXZhbHVhdGUsIG9mZnNldCkg
ewotICAgIHNvdXJjZSArPSB0ZXh0LnNsaWNlKGluZGV4LCBvZmZzZXQpCi0gICAgLnJlcGxhY2Uo
ZXNjYXBlciwgZnVuY3Rpb24obWF0Y2gpIHsgcmV0dXJuICdcXCcgKyBlc2NhcGVzW21hdGNoXTsg
fSk7Ci0KLSAgICBpZiAoZXNjYXBlKSB7Ci0gICAgc291cmNlICs9ICInK1xuKChfX3Q9KCIgKyBl
c2NhcGUgKyAiKSk9PW51bGw/Jyc6Xy5lc2NhcGUoX190KSkrXG4nIjsKLSAgICB9Ci0gICAgaWYg
KGludGVycG9sYXRlKSB7Ci0gICAgc291cmNlICs9ICInK1xuKChfX3Q9KCIgKyBpbnRlcnBvbGF0
ZSArICIpKT09bnVsbD8nJzpfX3QpK1xuJyI7Ci0gICAgfQotICAgIGlmIChldmFsdWF0ZSkgewot
ICAgIHNvdXJjZSArPSAiJztcbiIgKyBldmFsdWF0ZSArICJcbl9fcCs9JyI7Ci0gICAgfQotICAg
IGluZGV4ID0gb2Zmc2V0ICsgbWF0Y2gubGVuZ3RoOwotICAgIHJldHVybiBtYXRjaDsKLSAgICB9
KTsKLSAgICBzb3VyY2UgKz0gIic7XG4iOwotCi0gICAgLy8gSWYgYSB2YXJpYWJsZSBpcyBub3Qg
c3BlY2lmaWVkLCBwbGFjZSBkYXRhIHZhbHVlcyBpbiBsb2NhbCBzY29wZS4KLSAgICBpZiAoIXNl
dHRpbmdzLnZhcmlhYmxlKSBzb3VyY2UgPSAnd2l0aChvYmp8fHt9KXtcbicgKyBzb3VyY2UgKyAn
fVxuJzsKLQotICAgIHNvdXJjZSA9ICJ2YXIgX190LF9fcD0nJyxfX2o9QXJyYXkucHJvdG90eXBl
LmpvaW4sIiArCi0gICAgInByaW50PWZ1bmN0aW9uKCl7X19wKz1fX2ouY2FsbChhcmd1bWVudHMs
JycpO307XG4iICsKLSAgICBzb3VyY2UgKyAicmV0dXJuIF9fcDtcbiI7Ci0KLSAgICB0cnkgewot
ICAgIHJlbmRlciA9IG5ldyBGdW5jdGlvbihzZXR0aW5ncy52YXJpYWJsZSB8fCAnb2JqJywgJ18n
LCBzb3VyY2UpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICBlLnNvdXJjZSA9IHNvdXJjZTsKLSAg
ICB0aHJvdyBlOwotICAgIH0KLQotICAgIGlmIChkYXRhKSByZXR1cm4gcmVuZGVyKGRhdGEsIF8p
OwotICAgIHZhciB0ZW1wbGF0ZSA9IGZ1bmN0aW9uKGRhdGEpIHsKLSAgICByZXR1cm4gcmVuZGVy
LmNhbGwodGhpcywgZGF0YSwgXyk7Ci0gICAgfTsKLQotICAgIC8vIFByb3ZpZGUgdGhlIGNvbXBp
bGVkIGZ1bmN0aW9uIHNvdXJjZSBhcyBhIGNvbnZlbmllbmNlIGZvciBwcmVjb21waWxhdGlvbi4K
LSAgICB0ZW1wbGF0ZS5zb3VyY2UgPSAnZnVuY3Rpb24oJyArIChzZXR0aW5ncy52YXJpYWJsZSB8
fCAnb2JqJykgKyAnKXtcbicgKyBzb3VyY2UgKyAnfSc7Ci0KLSAgICByZXR1cm4gdGVtcGxhdGU7
Ci0gICAgfTsKLQotICAgIHJldHVybiBfOwotICAgIH0pKHt9KTsKLQotICAgIGlmIChsb2NhdGlv
bi5ob3N0bmFtZSA9PT0gJ3RvZG9tdmMuY29tJykgewotICAgIHdpbmRvdy5fZ2FxID0gW1snX3Nl
dEFjY291bnQnLCdVQS0zMTA4MTA2Mi0xJ10sWydfdHJhY2tQYWdldmlldyddXTsoZnVuY3Rpb24o
ZCx0KXt2YXIgZz1kLmNyZWF0ZUVsZW1lbnQodCkscz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKHQp
WzBdO2cuc3JjPScvL3d3dy5nb29nbGUtYW5hbHl0aWNzLmNvbS9nYS5qcyc7cy5wYXJlbnROb2Rl
Lmluc2VydEJlZm9yZShnLHMpfShkb2N1bWVudCwnc2NyaXB0JykpOwotICAgIH0KLQotICAgIGZ1
bmN0aW9uIHJlZGlyZWN0KCkgewotICAgIGlmIChsb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ3Rhc3Rl
anMuZ2l0aHViLmlvJykgewotICAgIGxvY2F0aW9uLmhyZWYgPSBsb2NhdGlvbi5ocmVmLnJlcGxh
Y2UoJ3Rhc3RlanMuZ2l0aHViLmlvL3RvZG9tdmMnLCAndG9kb212Yy5jb20nKTsKLSAgICB9Ci0g
ICAgfQotCi0gICAgZnVuY3Rpb24gZmluZFJvb3QoKSB7Ci0gICAgdmFyIGJhc2U7Ci0KLSAgICBb
L2xhYnMvLCAvXHcqLWV4YW1wbGVzL10uZm9yRWFjaChmdW5jdGlvbiAoaHJlZikgewotICAgIHZh
ciBtYXRjaCA9IGxvY2F0aW9uLmhyZWYubWF0Y2goaHJlZik7Ci0KLSAgICBpZiAoIWJhc2UgJiYg
bWF0Y2gpIHsKLSAgICBiYXNlID0gbG9jYXRpb24uaHJlZi5pbmRleE9mKG1hdGNoKTsKLSAgICB9
Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gbG9jYXRpb24uaHJlZi5zdWJzdHIoMCwgYmFzZSk7Ci0g
ICAgfQotCi0gICAgZnVuY3Rpb24gZ2V0RmlsZShmaWxlLCBjYWxsYmFjaykgewotICAgIGlmICgh
bG9jYXRpb24uaG9zdCkgewotICAgIHJldHVybiBjb25zb2xlLmluZm8oJ01pc3MgdGhlIGluZm8g
YmFyPyBSdW4gVG9kb01WQyBmcm9tIGEgc2VydmVyIHRvIGF2b2lkIGEgY3Jvc3Mtb3JpZ2luIGVy
cm9yLicpOwotICAgIH0KLQotICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLQot
ICAgIHhoci5vcGVuKCdHRVQnLCBmaW5kUm9vdCgpICsgZmlsZSwgdHJ1ZSk7Ci0gICAgeGhyLnNl
bmQoKTsKLQotICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgaWYgKHhoci5zdGF0
dXMgPT09IDIwMCAmJiBjYWxsYmFjaykgewotICAgIGNhbGxiYWNrKHhoci5yZXNwb25zZVRleHQp
OwotICAgIH0KLSAgICB9OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIExlYXJuKGxlYXJuSlNPTiwg
Y29uZmlnKSB7Ci0gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIExlYXJuKSkgewotICAgIHJldHVy
biBuZXcgTGVhcm4obGVhcm5KU09OLCBjb25maWcpOwotICAgIH0KLQotICAgIHZhciB0ZW1wbGF0
ZSwgZnJhbWV3b3JrOwotCi0gICAgaWYgKHR5cGVvZiBsZWFybkpTT04gIT09ICdvYmplY3QnKSB7
Ci0gICAgdHJ5IHsKLSAgICBsZWFybkpTT04gPSBKU09OLnBhcnNlKGxlYXJuSlNPTik7Ci0gICAg
fSBjYXRjaCAoZSkgewotICAgIHJldHVybjsKLSAgICB9Ci0gICAgfQotCi0gICAgaWYgKGNvbmZp
ZykgewotICAgIHRlbXBsYXRlID0gY29uZmlnLnRlbXBsYXRlOwotICAgIGZyYW1ld29yayA9IGNv
bmZpZy5mcmFtZXdvcms7Ci0gICAgfQotCi0gICAgaWYgKCF0ZW1wbGF0ZSAmJiBsZWFybkpTT04u
dGVtcGxhdGVzKSB7Ci0gICAgdGVtcGxhdGUgPSBsZWFybkpTT04udGVtcGxhdGVzLnRvZG9tdmM7
Ci0gICAgfQotCi0gICAgaWYgKCFmcmFtZXdvcmsgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcign
W2RhdGEtZnJhbWV3b3JrXScpKSB7Ci0gICAgZnJhbWV3b3JrID0gZG9jdW1lbnQucXVlcnlTZWxl
Y3RvcignW2RhdGEtZnJhbWV3b3JrXScpLmdldEF0dHJpYnV0ZSgnZGF0YS1mcmFtZXdvcmsnKTsK
LSAgICB9Ci0KLQotICAgIGlmICh0ZW1wbGF0ZSAmJiBsZWFybkpTT05bZnJhbWV3b3JrXSkgewot
ICAgIHRoaXMuZnJhbWV3b3JrSlNPTiA9IGxlYXJuSlNPTltmcmFtZXdvcmtdOwotICAgIHRoaXMu
dGVtcGxhdGUgPSB0ZW1wbGF0ZTsKLQotICAgIHRoaXMuYXBwZW5kKCk7Ci0gICAgfQotICAgIH0K
LQotICAgIExlYXJuLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgdmFyIGFz
aWRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYXNpZGUnKTsKLSAgICBhc2lkZS5pbm5lckhU
TUwgPSBfLnRlbXBsYXRlKHRoaXMudGVtcGxhdGUsIHRoaXMuZnJhbWV3b3JrSlNPTik7Ci0gICAg
YXNpZGUuY2xhc3NOYW1lID0gJ2xlYXJuJzsKLQotICAgIC8vIExvY2FsaXplIGRlbW8gbGlua3MK
LSAgICB2YXIgZGVtb0xpbmtzID0gYXNpZGUucXVlcnlTZWxlY3RvckFsbCgnLmRlbW8tbGluaycp
OwotICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZGVtb0xpbmtzLCBmdW5jdGlvbiAo
ZGVtb0xpbmspIHsKLSAgICBkZW1vTGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBmaW5kUm9vdCgp
ICsgZGVtb0xpbmsuZ2V0QXR0cmlidXRlKCdocmVmJykpOwotICAgIH0pOwotCi0gICAgZG9jdW1l
bnQuYm9keS5jbGFzc05hbWUgPSAoZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIGxlYXJuLWJh
cicpLnRyaW0oKTsKLSAgICBkb2N1bWVudC5ib2R5Lmluc2VydEFkamFjZW50SFRNTCgnYWZ0ZXJC
ZWdpbicsIGFzaWRlLm91dGVySFRNTCk7Ci0gICAgfTsKLQotICAgIHJlZGlyZWN0KCk7Ci0gICAg
Z2V0RmlsZSgnbGVhcm4uanNvbicsIExlYXJuKTsKLX0pKCk7CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMv
dmFuaWxsYWpzL2Jvd2VyX2NvbXBvbmVudHMvdG9kb212Yy1jb21tb24vYmcucG5nIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVz
L3ZhbmlsbGFqcy9ib3dlcl9jb21wb25lbnRzL3RvZG9tdmMtY29tbW9uL2JnLnBuZwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjJhNzYwMDgyNWVlMTFmMjE4NDllZDQ3NTQ5OWM3ZDFl
Y2JjYzg3MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMApHSVQgYmlu
YXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJhbCAyMTI2CnpjbVYtVTIoa0J4
UCk8aDszS3xMazAwMGUxTkpMVHEwMDNrRjAwM2tIMHt7UjM0VUIhcTAwMDBDUCl0LXM/KFhqRQp6
Pis5eWA9SEs3bnQ9fjN0MDAwTzVOa2w8WmN3VGp1KFE0dn43S1dFVyNZbT9sS192O1RtfCFGYylA
TndFbm10c2gKenghT356ODFKVDNwRnNtPm09MDRoVmFfbFhsX2JtPStNOz1lSTwlJHJPMnRhYHN1
aCpTciNQT3cqP2FkcSFPIUNWCnoqMCZiKXJrQ0NFVikxbkl1aUxCbnRVSC1NSkk7JnFZZ3p8ZEBO
aG5uX2FiaTJnYHB1NE5BTVZpZDNoUyU/cXV6fgp6amxKZih4OGNqPFBHY2puKkorYXsmSDVwKm41
JDVlMz88S0NjP28wNm1Bc05TYmdQV08/UHojQ3puPCE9ez57VlMKelVWRVAxbXNnOWBeT0ZVaFNP
NXJ0WEhoUmx5VTJpPjYkQlQ9Z2xHYHtKbGN0R0hyd1JJbSk2QnV1NjVqTFFuXkg4Cnp2bDlsWnFV
QkErJXF2TTVYQyt5WUBtZkEoWUJ+WFA9ZXw2PHslJF5lVThucks/djJjY2JASm9tNUNHPnJLQUw3
Sgp6cGxIRUlhdlZwfDBwMSZtIUdgVGk/PDdpWjt9QEc3I1opfUttJTIhRkhuUTAqJj9QTFIpRyFI
QWFIZ1UjY3wkZHoKenBqIzBIbWVhZEllPmAjKT1Kamtie0I9RktuVTNwYy0mWUBqX2o2KGg0WX4r
VXE8UFUzNkM7NWI9TV5GYD1wMWRJCnprPENRT1BOYTc+IV5KPUxIdW54MXhpNFFYSy1ZeyZNb1Q4
a3k2VmI5Y3xXaG5Pd0Z+Yz0zek95OGFna3RsaVM2Iwp6YCM4RmA5SClEPWJtazlCNU1uVyZfciMp
ZiRjKzskTFNyLUBeQW44ZGhjfklxdXV2PmpPSzdwdzdMSjsmWDBpMUMKekdNc0hkUDFPc0BueSQk
aiE+WEFpaSU3YnA1az5gcHlOQSF+ZXBiKSgpcDl6UjRZbDZ6PVV9e0NJZGgxeihGcEFvCnpRSVch
OzB6cEN5QzQqN1lMa1pDT0BjdWwwUl8memdoc0E4RWspeiU8IXAtYnZzc3BsWVkyfVA7IXY0Q1lq
OWttRgp6YjBiTl9tNFYqZl5ZWk1vYjIoajNwS2p+N3YjWnRrcz1Jbyt7c3UlV2l1a2RKSCRiP2Za
a2lBPVBZXzNPaERCa28KeihMVFFIWSZGXl4yaEctWWAqWjkzdmJ+Yz8qKEpjaERqVGZDcz96Um0q
YCpOKlYtJD0/UXF0aG5Tcio/T1Mzc2pLCnpvPF9VXmZ7fmFnNjB1bD5qTnBLYTkye0BOSCtTc3RY
JUB9eEIqSmshbH1QWjFjQ2xJbnN+fTVeIVJuY1VrKnJtQQp6JVNJVmd0NThFUXhMSitPaUZxPHl1
NGVPRHw5THQzZE5zZWZ4T3VxKUQmJF8lajBEZ3FDeTFnemN8dFREMyptZWUKens9JXw8YGB9X0h5
cGhPdXs7KXhrUmcrUW5IQ0MzVGYra3NwcVY2KnxRSy1SY3FEfTQ+S2tCdXdxdXlaTFVwfGdyCnpQ
VWJVYkZiQnJQZDF4T2BeQypyLWkzcDkqRiMoT0JoITRXeUBhQyYqIXxPfEdYY2pEQSZZaEZ7O2NE
NypvKEdTXgp6QHBRU0U3KXhfODE9UXlqZTYqTFEjVFh1LTcobztTOHUzdHBEQTxTZ2NLY0tPcG1B
Oz1IQlpTQE9GVEBfWE92eHEKeipOfDNLTHl0Z3pINkdVJiZVb2M0WnprNGx1bTNQezk/ZnBJNCtR
R1BKK3Y2YDFsZlJxM0xjUyooTSpXSyt8YiVPCnplJHo+MF9kZGolaG1Dc3BlWGRoWVJ9LWk5QT1D
YEVvQ2hVWXVIfl54ITkrfCYoUGdiKj5Dazw9OWp8KSpAeHlmVAp6cFAjK0t0PH0zOWJ8M1dsNGZ4
VCgrRz9hSD5nR15kQE1FYVVPSlJmeTU1VHRGSTdeWSlWdU1VPTdQcDB5NTVqU34KeitUSilpZ015
cnFrWDt3VThqNjhpSUR0cUpZaFNfRDNfT2VtLUBnNm1lX1JmaVF9dVRfSy1BLTlxRyV9Z2szRTlj
CnohOGBLZ3NNTlhtKWJlbG9QZk1xbCp8JiRNPjFxYGkhY1kpUkZZbmpOWXUqZ1N2QDhYZWJWNyV9
eFlMPjYpR0pQSgp6SnBBN0szMWxjSnVJRktTdy17eDRGWDBLMkF6KX5YZzxgc091JDR8XjxNQzdA
K3hid3hzR2dUdkpJQUxqUHs2OEwKejhBWXVTR1MwR1VnazZXYHY0VztSeSp1b0VUbnVsUGl8NTcz
JWx2Klp4dyN2NnlVUV5NT2ZjcFQjVjhSSURWIyNOCnpEMWArQWVtc09oKXdiV0RFeFZjZnBLeilq
eVY9PH4mWlhQZzZjfFpERTdVNGJrPERePi0oXlhKWDRZem9pTlJ2TAp6eXVZN34yNnctUF5adyU2
Rn1zaEJ3VjIkMDJjOFJzU1V5NmRNOTJkaUNBeGlYM0lVcXNxNWlnNj5VXyFWeSpxNSQKemptfTE2
dEpyK1FaJlQ/SGtrcGVJd1ZYLXIxRUk9QCVabHQ7Njx0d0g4NklEPmcqbWomRSFBKSklZ1hKPXg2
dSNsCnpjS0VQPmJ4NHJxViprYEJCclokTXFqdHtUc0hjeFVIPjspaUFLfUIoS2lsYSZWRCViPzZt
Jl4wV0s0XiZFWk5BSQp6OEFNWXNfJSREJXxNK0ArY1FxTC1oaTR5Rz5oKmp3ZGlpIVcxe31wPlpo
d0ZZdF80U3Uxa2pZOTxiQVpqen45ZWsKel9EaWFyK0FmSkZQXzlAeW1VbyRLVz48LTVgISRWTk9J
MXkoRURTSDRXcENpakVfPmFsIU50PV5lVkVSI3VKMT1iCno7QldGMklneUY1TGV4Vit5ZWMkS2lu
O0FpQG15bztHPnpKJmpyZFcjZWNYaElacGg1T1lxd19QRWZjRjU2PE8xOQp6TCk4ciFLTSgpaWYw
YEA/VzQoSmRjKTdXb1BHXiY9JDx6VXNNK0hDV2FrQ14zdFp4aytQalFHfUI+WjU8WjZWeHcKekJA
SHJWJCZsfkBUYWo3MHBjZXtpU3VSTHNVY3pEWV81VG5EcThQeV9RM3doYEQ4ITRqSzt2RmRSUCtR
MD16SnkqCnp6dVdkJSFhaUBEe3wqSjxJO09EJmklbHtKcC04KlB1M1ZHTFdpeWs2diNYbVFxd2At
KyVlJHxDSncqQGA1emIzPAp6RX16IztrUmhMJnE1UERHNkBtbSokPlp1X1paRSNxM01jK04mMU9e
N2hvaDlRUjdgK0wkY0JQNXBxRz1mcUEwdWgKelVCdWtheFRGbUgpPHxYYnZwMmM9SFNiTmtwWHc3
M2E1bHY3ViRqYjkyI3laMTQxQCRYP0Z9SnQ4Z0lVN1dtNm05Cno/ZV87O3pzbm02YExaZVA+VD0k
KUtyPlo/a3IqVW1GcVI3engwQzZeYm1jc2NAMUFHdHdfck5IPi1YbSRkKnxRPAp6biYxTG4wdTc9
bCZJTHM+JUNrSnBgRGlHOUYxOHg0TmUrbGc8I2k/ZTdqTCV4OzRablJrTl5NeDA3KnFvTTZOPCQK
RWYoPjBOITJrZE4KCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2luZGV4Lmh0bWwgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhh
bXBsZXMvdmFuaWxsYWpzL2luZGV4Lmh0bWwKaW5kZXggNDc3YjliZjU4MGQ5MmQ2OWEwNjQ3MzZj
ZDY1MjIxZTk2NzVjYjhjZS4uNmQ5NDRjNGY4ODZmYWQzNDgwZmRkZjNmMmEwYWRmNmNlYjJkMTky
MyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9pbmRleC5odG1sCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92
YW5pbGxhanMvaW5kZXguaHRtbApAQCAtMSw1MyArMSw1MSBAQAogPCFkb2N0eXBlIGh0bWw+CiA8
aHRtbCBsYW5nPSJlbiIgZGF0YS1mcmFtZXdvcms9ImphdmFzY3JpcHQiPgogICAgIDxoZWFkPgot
ICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICA8bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNv
bXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2UiPgotICAgIDx0aXRsZT5WYW5pbGxhSlMg4oCiIFRv
ZG9NVkM8L3RpdGxlPgotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iYm93ZXJfY29t
cG9uZW50cy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcyI+CisgICAgICAgIDxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKyAgICAgICAgPHRpdGxlPlZhbmlsbGFKUyDigKIgVG9kb01WQzwvdGl0bGU+Cisg
ICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ibm9kZV9tb2R1bGVzL3RvZG9tdmMt
Y29tbW9uL2Jhc2UuY3NzIj4KKyAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJu
b2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzcyI+CiAgICAgPC9oZWFkPgogICAg
IDxib2R5PgotICAgIDxzZWN0aW9uIGlkPSJ0b2RvYXBwIj4KLSAgICA8aGVhZGVyIGlkPSJoZWFk
ZXIiPgotICAgIDxoMT50b2RvczwvaDE+Ci0gICAgPGlucHV0IGlkPSJuZXctdG9kbyIgcGxhY2Vo
b2xkZXI9IldoYXQgbmVlZHMgdG8gYmUgZG9uZT8iIGF1dG9mb2N1cz4KLSAgICA8L2hlYWRlcj4K
LSAgICA8c2VjdGlvbiBpZD0ibWFpbiI+Ci0gICAgPGlucHV0IGlkPSJ0b2dnbGUtYWxsIiB0eXBl
PSJjaGVja2JveCI+Ci0gICAgPGxhYmVsIGZvcj0idG9nZ2xlLWFsbCI+TWFyayBhbGwgYXMgY29t
cGxldGU8L2xhYmVsPgotICAgIDx1bCBpZD0idG9kby1saXN0Ij48L3VsPgotICAgIDwvc2VjdGlv
bj4KLSAgICA8Zm9vdGVyIGlkPSJmb290ZXIiPgotICAgIDxzcGFuIGlkPSJ0b2RvLWNvdW50Ij48
L3NwYW4+Ci0gICAgPHVsIGlkPSJmaWx0ZXJzIj4KLSAgICA8bGk+Ci0gICAgPGEgaHJlZj0iIy8i
PkFsbDwvYT4KLSAgICA8L2xpPgotICAgIDxsaT4KLSAgICA8YSBocmVmPSIjL2FjdGl2ZSI+QWN0
aXZlPC9hPgotICAgIDwvbGk+Ci0gICAgPGxpPgotICAgIDxhIGhyZWY9IiMvY29tcGxldGVkIj5D
b21wbGV0ZWQ8L2E+Ci0gICAgPC9saT4KLSAgICA8L3VsPgotICAgIDxidXR0b24gaWQ9ImNsZWFy
LWNvbXBsZXRlZCI+Q2xlYXIgY29tcGxldGVkPC9idXR0b24+Ci0gICAgPC9mb290ZXI+Ci0gICAg
PC9zZWN0aW9uPgotICAgIDxmb290ZXIgaWQ9ImluZm8iPgotICAgIDxwPkRvdWJsZS1jbGljayB0
byBlZGl0IGEgdG9kbzwvcD4KLSAgICA8cD5DcmVhdGVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly90d2l0
dGVyLmNvbS9vc2NhcmdvZHNvbiI+T3NjYXIgR29kc29uPC9hPjwvcD4KLSAgICA8cD5QYXJ0IG9m
IDxhIGhyZWY9Imh0dHA6Ly90b2RvbXZjLmNvbSI+VG9kb01WQzwvYT48L3A+Ci0gICAgPC9mb290
ZXI+Ci0gICAgPHNjcmlwdCBzcmM9ImJvd2VyX2NvbXBvbmVudHMvdG9kb212Yy1jb21tb24vYmFz
ZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdD4KLSAgICAvLyBCb290c3RyYXAgYXBwIGRhdGEK
LSAgICB3aW5kb3cuYXBwID0ge307Ci0gICAgPC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Impz
L2hlbHBlcnMuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJqcy9zdG9yZS5qcyI+PC9z
Y3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9ImpzL21vZGVsLmpzIj48L3NjcmlwdD4KLSAgICA8c2Ny
aXB0IHNyYz0ianMvdmlldy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9ImpzL2NvbnRy
b2xsZXIuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJqcy9hcHAuanMiPjwvc2NyaXB0
PgorICAgICAgICA8c2VjdGlvbiBjbGFzcz0idG9kb2FwcCI+CisgICAgICAgICAgICA8aGVhZGVy
IGNsYXNzPSJoZWFkZXIiPgorICAgICAgICAgICAgICAgIDxoMT50b2RvczwvaDE+CisgICAgICAg
ICAgICAgICAgPGlucHV0IGNsYXNzPSJuZXctdG9kbyIgcGxhY2Vob2xkZXI9IldoYXQgbmVlZHMg
dG8gYmUgZG9uZT8iIGF1dG9mb2N1cz4KKyAgICAgICAgICAgIDwvaGVhZGVyPgorICAgICAgICAg
ICAgPHNlY3Rpb24gY2xhc3M9Im1haW4iPgorICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0i
dG9nZ2xlLWFsbCIgdHlwZT0iY2hlY2tib3giPgorICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9
InRvZ2dsZS1hbGwiPk1hcmsgYWxsIGFzIGNvbXBsZXRlPC9sYWJlbD4KKyAgICAgICAgICAgICAg
ICA8dWwgY2xhc3M9InRvZG8tbGlzdCI+PC91bD4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAg
ICAgICAgICAgIDxmb290ZXIgY2xhc3M9ImZvb3RlciI+CisgICAgICAgICAgICAgICAgPHNwYW4g
Y2xhc3M9InRvZG8tY291bnQiPjwvc3Bhbj4KKyAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImZp
bHRlcnMiPgorICAgICAgICAgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAgICAgICAgICAg
ICA8YSBocmVmPSIjLyIgY2xhc3M9InNlbGVjdGVkIj5BbGw8L2E+CisgICAgICAgICAgICAgICAg
ICAgIDwvbGk+CisgICAgICAgICAgICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgICAgICAgICAg
ICAgIDxhIGhyZWY9IiMvYWN0aXZlIj5BY3RpdmU8L2E+CisgICAgICAgICAgICAgICAgICAgIDwv
bGk+CisgICAgICAgICAgICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxh
IGhyZWY9IiMvY29tcGxldGVkIj5Db21wbGV0ZWQ8L2E+CisgICAgICAgICAgICAgICAgICAgIDwv
bGk+CisgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNz
PSJjbGVhci1jb21wbGV0ZWQiPkNsZWFyIGNvbXBsZXRlZDwvYnV0dG9uPgorICAgICAgICAgICAg
PC9mb290ZXI+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPGZvb3RlciBjbGFzcz0iaW5m
byI+CisgICAgICAgICAgICA8cD5Eb3VibGUtY2xpY2sgdG8gZWRpdCBhIHRvZG88L3A+CisgICAg
ICAgICAgICA8cD5TcGVlZG9tZXRlciB2ZXJzaW9uIGJ5IDxhIGhyZWY9Imh0dHA6Ly90d2l0dGVy
LmNvbS9hZGR5b3NtYW5pIj5BZGR5IE9zbWFuaTwvcD4KKyAgICAgICAgICAgIDxwPlBhcnRzIGJ5
IDxhIGhyZWY9Imh0dHA6Ly90d2l0dGVyLmNvbS9vc2NhcmdvZHNvbiI+T3NjYXIgR29kc29uPC9h
PjwvcD4KKyAgICAgICAgICAgIDxwPlJlZmFjdG9yZWQgYnkgPGEgaHJlZj0iaHR0cHM6Ly9naXRo
dWIuY29tL2NidXJnbWVyIj5DaHJpc3RvcGggQnVyZ21lcjwvYT48L3A+CisgICAgICAgICAgICA8
cD5QYXJ0IG9mIDxhIGhyZWY9Imh0dHA6Ly90b2RvbXZjLmNvbSI+VG9kb01WQzwvYT48L3A+Cisg
ICAgICAgIDwvZm9vdGVyPgorICAgICAgICA8c2NyaXB0IHNyYz0ianMvaGVscGVycy5qcyI+PC9z
Y3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJqcy9zdG9yZS5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSJqcy9tb2RlbC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQg
c3JjPSJqcy90ZW1wbGF0ZS5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJqcy92
aWV3LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9ImpzL2NvbnRyb2xsZXIuanMi
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0ianMvYXBwLmpzIj48L3NjcmlwdD4KICAg
ICA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL2FwcC5q
cyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxs
YS1leGFtcGxlcy92YW5pbGxhanMvanMvYXBwLmpzCmluZGV4IDI4OGU1OWJkOGUwN2RmZWU5Yzkw
NGU0MDU3NWY5N2JkMjlmMDdmYjUuLjMwMWNmOWZlYWU0ODU1MmU2N2Q4MDc4YWU5ZmEzNzE3NGQ0
YzM4ZDQgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvYXBwLmpzCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxl
cy92YW5pbGxhanMvanMvYXBwLmpzCkBAIC0xLDQgKzEsNCBAQAotLypnbG9iYWwgU3RvcmUsIE1v
ZGVsLCBWaWV3LCBDb250cm9sbGVyLCAkJCAqLworLypnbG9iYWwgYXBwLCAkb24gKi8KIChmdW5j
dGlvbiAoKSB7CiAgICAgJ3VzZSBzdHJpY3QnOwogCkBAIC04LDY3ICs4LDE4IEBACiAgICAgICog
QHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgeW91ciBuZXcgdG8gZG8gbGlzdC4KICAg
ICAgKi8KICAgICBmdW5jdGlvbiBUb2RvKG5hbWUpIHsKLSAgICB0aGlzLnN0b3JhZ2UgPSBuZXcg
YXBwLlN0b3JlKG5hbWUpOwotICAgIHRoaXMubW9kZWwgPSBuZXcgYXBwLk1vZGVsKHRoaXMuc3Rv
cmFnZSk7Ci0gICAgdGhpcy52aWV3ID0gbmV3IGFwcC5WaWV3KCk7Ci0gICAgdGhpcy5jb250cm9s
bGVyID0gbmV3IGFwcC5Db250cm9sbGVyKHRoaXMubW9kZWwsIHRoaXMudmlldyk7CisgICAgICAg
IHRoaXMuc3RvcmFnZSA9IG5ldyBhcHAuU3RvcmUobmFtZSk7CisgICAgICAgIHRoaXMubW9kZWwg
PSBuZXcgYXBwLk1vZGVsKHRoaXMuc3RvcmFnZSk7CisgICAgICAgIHRoaXMudGVtcGxhdGUgPSBu
ZXcgYXBwLlRlbXBsYXRlKCk7CisgICAgICAgIHRoaXMudmlldyA9IG5ldyBhcHAuVmlldyh0aGlz
LnRlbXBsYXRlKTsKKyAgICAgICAgdGhpcy5jb250cm9sbGVyID0gbmV3IGFwcC5Db250cm9sbGVy
KHRoaXMubW9kZWwsIHRoaXMudmlldyk7CiAgICAgfQogCiAgICAgdmFyIHRvZG8gPSBuZXcgVG9k
bygndG9kb3MtdmFuaWxsYWpzJyk7CiAKLSAgICB3aW5kb3cudG9kbyA9IHRvZG87IC8vIEJlbmNo
bWFyayBtb2RpZmljYXRpb247IEV4cG9zZSB0b2RvIHNvIHRoYXQgd2UgY2FuIGNhbGwgbWV0aG9k
cyBvbiBpdC4KLQotICAgIC8qKgotICAgICAqIEZpbmRzIHRoZSBtb2RlbCBJRCBvZiB0aGUgY2xp
Y2tlZCBET00gZWxlbWVudAotICAgICAqCi0gICAgICogQHBhcmFtIHtvYmplY3R9IHRhcmdldCBU
aGUgc3RhcnRpbmcgcG9pbnQgaW4gdGhlIERPTSBmb3IgaXQgdG8gdHJ5IHRvIGZpbmQKLSAgICAg
KiB0aGUgSUQgb2YgdGhlIG1vZGVsLgotICAgICAqLwotICAgIGZ1bmN0aW9uIGxvb2t1cElkKHRh
cmdldCkgewotICAgIHZhciBsb29rdXAgPSB0YXJnZXQ7Ci0KLSAgICB3aGlsZSAobG9va3VwLm5v
ZGVOYW1lICE9PSAnTEknKSB7Ci0gICAgbG9va3VwID0gbG9va3VwLnBhcmVudE5vZGU7CisgICAg
ZnVuY3Rpb24gc2V0VmlldygpIHsKKyAgICAgICAgdG9kby5jb250cm9sbGVyLnNldFZpZXcoZG9j
dW1lbnQubG9jYXRpb24uaGFzaCk7CiAgICAgfQotCi0gICAgcmV0dXJuIGxvb2t1cC5kYXRhc2V0
LmlkOwotICAgIH0KLQotICAgIC8vIFdoZW4gdGhlIGVudGVyIGtleSBpcyBwcmVzc2VkIGZpcmUg
dGhlIGFkZEl0ZW0gbWV0aG9kLgotICAgICQkKCcjbmV3LXRvZG8nKS5hZGRFdmVudExpc3RlbmVy
KCdrZXlwcmVzcycsIGZ1bmN0aW9uIChlKSB7Ci0gICAgdG9kby5jb250cm9sbGVyLmFkZEl0ZW0o
ZSk7Ci0gICAgfSk7Ci0KLSAgICAvLyBBIGRlbGVnYXRpb24gZXZlbnQuIFdpbGwgY2hlY2sgd2hh
dCBpdGVtIHdhcyBjbGlja2VkIHdoZW5ldmVyIHlvdSBjbGljayBvbiBhbnkKLSAgICAvLyBwYXJ0
IG9mIGEgbGlzdCBpdGVtLgotICAgICQkKCcjdG9kby1saXN0JykuYWRkRXZlbnRMaXN0ZW5lcign
Y2xpY2snLCBmdW5jdGlvbiAoZSkgewotICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldDsKLQotICAg
IC8vIElmIHlvdSBjbGljayBhIGRlc3Ryb3kgYnV0dG9uCi0gICAgaWYgKHRhcmdldC5jbGFzc05h
bWUuaW5kZXhPZignZGVzdHJveScpID4gLTEpIHsKLSAgICB0b2RvLmNvbnRyb2xsZXIucmVtb3Zl
SXRlbShsb29rdXBJZCh0YXJnZXQpKTsKLSAgICB9Ci0KLSAgICAvLyBJZiB5b3UgY2xpY2sgdGhl
IGNoZWNrbWFyawotICAgIGlmICh0YXJnZXQuY2xhc3NOYW1lLmluZGV4T2YoJ3RvZ2dsZScpID4g
LTEpIHsKLSAgICB0b2RvLmNvbnRyb2xsZXIudG9nZ2xlQ29tcGxldGUobG9va3VwSWQodGFyZ2V0
KSwgdGFyZ2V0KTsKLSAgICB9Ci0KLSAgICB9KTsKLQotICAgICQkKCcjdG9kby1saXN0JykuYWRk
RXZlbnRMaXN0ZW5lcignZGJsY2xpY2snLCBmdW5jdGlvbiAoZSkgewotICAgIHZhciB0YXJnZXQg
PSBlLnRhcmdldDsKLQotICAgIGlmICh0YXJnZXQubm9kZU5hbWUgPT09ICdMQUJFTCcpIHsKLSAg
ICB0b2RvLmNvbnRyb2xsZXIuZWRpdEl0ZW0obG9va3VwSWQodGFyZ2V0KSwgdGFyZ2V0KTsKLSAg
ICB9Ci0gICAgfSk7Ci0KLSAgICAkJCgnI3RvZ2dsZS1hbGwnKS5hZGRFdmVudExpc3RlbmVyKCdj
bGljaycsIGZ1bmN0aW9uIChlKSB7Ci0gICAgdG9kby5jb250cm9sbGVyLnRvZ2dsZUFsbChlKTsK
LSAgICB9KTsKLQotICAgICQkKCcjY2xlYXItY29tcGxldGVkJykuYWRkRXZlbnRMaXN0ZW5lcign
Y2xpY2snLCBmdW5jdGlvbiAoKSB7Ci0gICAgdG9kby5jb250cm9sbGVyLnJlbW92ZUNvbXBsZXRl
ZEl0ZW1zKCk7Ci0gICAgfSk7CisgICAgJG9uKHdpbmRvdywgJ2xvYWQnLCBzZXRWaWV3KTsKKyAg
ICAkb24od2luZG93LCAnaGFzaGNoYW5nZScsIHNldFZpZXcpOwogfSkoKTsKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1l
eGFtcGxlcy92YW5pbGxhanMvanMvY29udHJvbGxlci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMv
Y29udHJvbGxlci5qcwppbmRleCBlM2EwZDZjODFlMDIwMjdkZWFmNTdiNDc2NzRkZmZlOWMyMDNk
MGM4Li4wZmJjNjJhODllNjVlYjdiODE0MDdiY2JkMTdjZmIwMjdiNGNlNjg3IDEwMDY0NAotLS0g
YS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEt
ZXhhbXBsZXMvdmFuaWxsYWpzL2pzL2NvbnRyb2xsZXIuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFq
cy9qcy9jb250cm9sbGVyLmpzCkBAIC0xLDQgKzEsMyBAQAotLypnbG9iYWwgJCQsICQgKi8KIChm
dW5jdGlvbiAod2luZG93KSB7CiAgICAgJ3VzZSBzdHJpY3QnOwogCkBAIC02LDE1MiArNSwxNDAg
QEAKICAgICAgKiBUYWtlcyBhIG1vZGVsIGFuZCB2aWV3IGFuZCBhY3RzIGFzIHRoZSBjb250cm9s
bGVyIGJldHdlZW4gdGhlbQogICAgICAqCiAgICAgICogQGNvbnN0cnVjdG9yCi0gICAgICogQHBh
cmFtIHtvYmplY3R9IG1vZGVsIFRoZSBtb2RlbCBjb25zdHJ1Y3RvcgotICAgICAqIEBwYXJhbSB7
b2JqZWN0fSB2aWV3IFRoZSB2aWV3IGNvbnN0cnVjdG9yCisgICAgICogQHBhcmFtIHtvYmplY3R9
IG1vZGVsIFRoZSBtb2RlbCBpbnN0YW5jZQorICAgICAqIEBwYXJhbSB7b2JqZWN0fSB2aWV3IFRo
ZSB2aWV3IGluc3RhbmNlCiAgICAgICovCiAgICAgZnVuY3Rpb24gQ29udHJvbGxlcihtb2RlbCwg
dmlldykgewotICAgIHRoaXMubW9kZWwgPSBtb2RlbDsKLSAgICB0aGlzLnZpZXcgPSB2aWV3Owot
Ci0gICAgdGhpcy5FTlRFUl9LRVkgPSAxMzsKLSAgICB0aGlzLkVTQ0FQRV9LRVkgPSAyNzsKLQot
ICAgIHRoaXMuJG1haW4gPSAkJCgnI21haW4nKTsKLSAgICB0aGlzLiR0b2dnbGVBbGwgPSAkJCgn
I3RvZ2dsZS1hbGwnKTsKLSAgICB0aGlzLiR0b2RvTGlzdCA9ICQkKCcjdG9kby1saXN0Jyk7Ci0g
ICAgdGhpcy4kdG9kb0l0ZW1Db3VudGVyID0gJCQoJyN0b2RvLWNvdW50Jyk7Ci0gICAgdGhpcy4k
Y2xlYXJDb21wbGV0ZWQgPSAkJCgnI2NsZWFyLWNvbXBsZXRlZCcpOwotICAgIHRoaXMuJGZvb3Rl
ciA9ICQkKCcjZm9vdGVyJyk7Ci0KLSAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcs
IGZ1bmN0aW9uICgpIHsKLSAgICB0aGlzLl91cGRhdGVGaWx0ZXJTdGF0ZSgpOwotICAgIH0uYmlu
ZCh0aGlzKSk7Ci0KLSAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignaGFzaGNoYW5nZScsIGZ1
bmN0aW9uICgpIHsKLSAgICB0aGlzLl91cGRhdGVGaWx0ZXJTdGF0ZSgpOwotICAgIH0uYmluZCh0
aGlzKSk7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgc2VsZi5tb2RlbCA9IG1v
ZGVsOworICAgICAgICBzZWxmLnZpZXcgPSB2aWV3OworCisgICAgICAgIHNlbGYudmlldy5iaW5k
KCduZXdUb2RvJywgZnVuY3Rpb24gKHRpdGxlKSB7CisgICAgICAgICAgICBzZWxmLmFkZEl0ZW0o
dGl0bGUpOworICAgICAgICB9KTsKKworICAgICAgICBzZWxmLnZpZXcuYmluZCgnaXRlbUVkaXQn
LCBmdW5jdGlvbiAoaXRlbSkgeworICAgICAgICAgICAgc2VsZi5lZGl0SXRlbShpdGVtLmlkKTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgc2VsZi52aWV3LmJpbmQoJ2l0ZW1FZGl0RG9uZScsIGZ1
bmN0aW9uIChpdGVtKSB7CisgICAgICAgICAgICBzZWxmLmVkaXRJdGVtU2F2ZShpdGVtLmlkLCBp
dGVtLnRpdGxlKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc2VsZi52aWV3LmJpbmQoJ2l0ZW1F
ZGl0Q2FuY2VsJywgZnVuY3Rpb24gKGl0ZW0pIHsKKyAgICAgICAgICAgIHNlbGYuZWRpdEl0ZW1D
YW5jZWwoaXRlbS5pZCk7CisgICAgICAgIH0pOworCisgICAgICAgIHNlbGYudmlldy5iaW5kKCdp
dGVtUmVtb3ZlJywgZnVuY3Rpb24gKGl0ZW0pIHsKKyAgICAgICAgICAgIHNlbGYucmVtb3ZlSXRl
bShpdGVtLmlkKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc2VsZi52aWV3LmJpbmQoJ2l0ZW1U
b2dnbGUnLCBmdW5jdGlvbiAoaXRlbSkgeworICAgICAgICAgICAgc2VsZi50b2dnbGVDb21wbGV0
ZShpdGVtLmlkLCBpdGVtLmNvbXBsZXRlZCk7CisgICAgICAgIH0pOworCisgICAgICAgIHNlbGYu
dmlldy5iaW5kKCdyZW1vdmVDb21wbGV0ZWQnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBz
ZWxmLnJlbW92ZUNvbXBsZXRlZEl0ZW1zKCk7CisgICAgICAgIH0pOworCisgICAgICAgIHNlbGYu
dmlldy5iaW5kKCd0b2dnbGVBbGwnLCBmdW5jdGlvbiAoc3RhdHVzKSB7CisgICAgICAgICAgICBz
ZWxmLnRvZ2dsZUFsbChzdGF0dXMuY29tcGxldGVkKTsKKyAgICAgICAgfSk7CiAgICAgfQogCiAg
ICAgLyoqCisgICAgICogTG9hZHMgYW5kIGluaXRpYWxpc2VzIHRoZSB2aWV3CisgICAgICoKKyAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gJycgfCAnYWN0aXZlJyB8ICdjb21wbGV0ZWQnCisgICAgICov
CisgICAgQ29udHJvbGxlci5wcm90b3R5cGUuc2V0VmlldyA9IGZ1bmN0aW9uIChsb2NhdGlvbkhh
c2gpIHsKKyAgICAgICAgdmFyIHJvdXRlID0gbG9jYXRpb25IYXNoLnNwbGl0KCcvJylbMV07Cisg
ICAgICAgIHZhciBwYWdlID0gcm91dGUgfHwgJyc7CisgICAgICAgIHRoaXMuX3VwZGF0ZUZpbHRl
clN0YXRlKHBhZ2UpOworICAgIH07CisKKyAgICAvKioKICAgICAgKiBBbiBldmVudCB0byBmaXJl
IG9uIGxvYWQuIFdpbGwgZ2V0IGFsbCBpdGVtcyBhbmQgZGlzcGxheSB0aGVtIGluIHRoZQogICAg
ICAqIHRvZG8tbGlzdAogICAgICAqLwogICAgIENvbnRyb2xsZXIucHJvdG90eXBlLnNob3dBbGwg
PSBmdW5jdGlvbiAoKSB7Ci0gICAgdGhpcy5tb2RlbC5yZWFkKGZ1bmN0aW9uIChkYXRhKSB7Ci0g
ICAgdGhpcy4kdG9kb0xpc3QuaW5uZXJIVE1MID0gdGhpcy52aWV3LnNob3coZGF0YSk7Ci0gICAg
fS5iaW5kKHRoaXMpKTsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICBzZWxmLm1v
ZGVsLnJlYWQoZnVuY3Rpb24gKGRhdGEpIHsKKyAgICAgICAgICAgIHNlbGYudmlldy5yZW5kZXIo
J3Nob3dFbnRyaWVzJywgZGF0YSk7CisgICAgICAgIH0pOwogICAgIH07CiAKICAgICAvKioKICAg
ICAgKiBSZW5kZXJzIGFsbCBhY3RpdmUgdGFza3MKICAgICAgKi8KICAgICBDb250cm9sbGVyLnBy
b3RvdHlwZS5zaG93QWN0aXZlID0gZnVuY3Rpb24gKCkgewotICAgIHRoaXMubW9kZWwucmVhZCh7
IGNvbXBsZXRlZDogMCB9LCBmdW5jdGlvbiAoZGF0YSkgewotICAgIHRoaXMuJHRvZG9MaXN0Lmlu
bmVySFRNTCA9IHRoaXMudmlldy5zaG93KGRhdGEpOwotICAgIH0uYmluZCh0aGlzKSk7CisgICAg
ICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgc2VsZi5tb2RlbC5yZWFkKHsgY29tcGxldGVk
OiBmYWxzZSB9LCBmdW5jdGlvbiAoZGF0YSkgeworICAgICAgICAgICAgc2VsZi52aWV3LnJlbmRl
cignc2hvd0VudHJpZXMnLCBkYXRhKTsKKyAgICAgICAgfSk7CiAgICAgfTsKIAogICAgIC8qKgog
ICAgICAqIFJlbmRlcnMgYWxsIGNvbXBsZXRlZCB0YXNrcwogICAgICAqLwogICAgIENvbnRyb2xs
ZXIucHJvdG90eXBlLnNob3dDb21wbGV0ZWQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgdGhpcy5tb2Rl
bC5yZWFkKHsgY29tcGxldGVkOiAxIH0sIGZ1bmN0aW9uIChkYXRhKSB7Ci0gICAgdGhpcy4kdG9k
b0xpc3QuaW5uZXJIVE1MID0gdGhpcy52aWV3LnNob3coZGF0YSk7Ci0gICAgfS5iaW5kKHRoaXMp
KTsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICBzZWxmLm1vZGVsLnJlYWQoeyBj
b21wbGV0ZWQ6IHRydWUgfSwgZnVuY3Rpb24gKGRhdGEpIHsKKyAgICAgICAgICAgIHNlbGYudmll
dy5yZW5kZXIoJ3Nob3dFbnRyaWVzJywgZGF0YSk7CisgICAgICAgIH0pOwogICAgIH07CiAKICAg
ICAvKioKICAgICAgKiBBbiBldmVudCB0byBmaXJlIHdoZW5ldmVyIHlvdSB3YW50IHRvIGFkZCBh
biBpdGVtLiBTaW1wbHkgcGFzcyBpbiB0aGUgZXZlbnQKICAgICAgKiBvYmplY3QgYW5kIGl0J2xs
IGhhbmRsZSB0aGUgRE9NIGluc2VydGlvbiBhbmQgc2F2aW5nIG9mIHRoZSBuZXcgaXRlbS4KLSAg
ICAgKgotICAgICAqIEBwYXJhbSB7b2JqZWN0fSBlIFRoZSBldmVudCBvYmplY3QKICAgICAgKi8K
LSAgICBDb250cm9sbGVyLnByb3RvdHlwZS5hZGRJdGVtID0gZnVuY3Rpb24gKGUpIHsKLSAgICB2
YXIgaW5wdXQgPSAkJCgnI25ldy10b2RvJyk7Ci0gICAgdmFyIHRpdGxlID0gdGl0bGUgfHwgJyc7
CisgICAgQ29udHJvbGxlci5wcm90b3R5cGUuYWRkSXRlbSA9IGZ1bmN0aW9uICh0aXRsZSkgewor
ICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAKLSAgICBpZiAoZS5rZXlDb2RlID09PSB0aGlzLkVO
VEVSX0tFWSkgewotICAgIGlmIChlLnRhcmdldC52YWx1ZS50cmltKCkgPT09ICcnKSB7Ci0gICAg
cmV0dXJuOwotICAgIH0KLQotICAgIHRoaXMubW9kZWwuY3JlYXRlKGUudGFyZ2V0LnZhbHVlLCBm
dW5jdGlvbiAoZGF0YSkgewotICAgIGlucHV0LnZhbHVlID0gJyc7Ci0gICAgdGhpcy5fZmlsdGVy
KHRydWUpOwotICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgfQorICAgICAgICBpZiAodGl0bGUudHJp
bSgpID09PSAnJykgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKKyAgICAgICAg
c2VsZi5tb2RlbC5jcmVhdGUodGl0bGUsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHNlbGYu
dmlldy5yZW5kZXIoJ2NsZWFyTmV3VG9kbycpOworICAgICAgICAgICAgc2VsZi5fZmlsdGVyKHRy
dWUpOworICAgICAgICB9KTsKICAgICB9OwogCi0gICAgLyoqCi0gICAgICogSGlkZXMgdGhlIGxh
YmVsIHRleHQgYW5kIGNyZWF0ZXMgYW4gaW5wdXQgdG8gZWRpdCB0aGUgdGl0bGUgb2YgdGhlIGl0
ZW0uCi0gICAgICogV2hlbiB5b3UgaGl0IGVudGVyIG9yIGJsdXIgb3V0IG9mIHRoZSBpbnB1dCBp
dCBzYXZlcyBpdCBhbmTCoHVwZGF0ZXMgdGhlIFVJCi0gICAgICogd2l0aCB0aGUgbmV3IG5hbWUu
Ci0gICAgICoKLSAgICAgKiBAcGFyYW0ge251bWJlcn0gaWQgVGhlIGlkIG9mIHRoZSBpdGVtIHRv
IGVkaXQKLSAgICAgKiBAcGFyYW0ge29iamVjdH0gbGFiZWwgVGhlIGxhYmVsIHlvdSB3YW50IHRv
IGVkaXQgdGhlIHRleHQgb2YKKyAgICAvKgorICAgICAqIFRyaWdnZXJzIHRoZSBpdGVtIGVkaXRp
bmcgbW9kZS4KICAgICAgKi8KLSAgICBDb250cm9sbGVyLnByb3RvdHlwZS5lZGl0SXRlbSA9IGZ1
bmN0aW9uIChpZCwgbGFiZWwpIHsKLSAgICB2YXIgbGkgPSAgbGFiZWw7Ci0KLSAgICAvLyBUaGlz
IGZpbmRzIHRoZSA8bGFiZWw+J3MgcGFyZW50IDxsaT4KLSAgICB3aGlsZSAobGkubm9kZU5hbWUg
IT09ICdMSScpIHsKLSAgICBsaSA9IGxpLnBhcmVudE5vZGU7Ci0gICAgfQotCi0gICAgdmFyIG9u
U2F2ZUhhbmRsZXIgPSBmdW5jdGlvbiAoKSB7Ci0gICAgdmFyIHZhbHVlID0gaW5wdXQudmFsdWUu
dHJpbSgpOwotICAgIHZhciBkaXNjYXJkaW5nID0gaW5wdXQuZGF0YXNldC5kaXNjYXJkOwotCi0g
ICAgaWYgKHZhbHVlLmxlbmd0aCAmJiAhZGlzY2FyZGluZykgewotICAgIHRoaXMubW9kZWwudXBk
YXRlKGlkLCB7IHRpdGxlOiBpbnB1dC52YWx1ZSB9KTsKLQotICAgIC8vIEluc3RlYWQgb2YgcmUt
cmVuZGVyaW5nIHRoZSB3aG9sZSB2aWV3IGp1c3QgdXBkYXRlCi0gICAgLy8gdGhpcyBwaWVjZSBv
ZiBpdAotICAgIGxhYmVsLmlubmVySFRNTCA9IHZhbHVlOwotICAgIH0gZWxzZSBpZiAodmFsdWUu
bGVuZ3RoID09PSAwKSB7Ci0gICAgLy8gTm8gdmFsdWUgd2FzIGVudGVyZWQgaW4gdGhlIGlucHV0
LiBXZSdsbCByZW1vdmUgdGhlIHRvZG8gaXRlbS4KLSAgICB0aGlzLnJlbW92ZUl0ZW0oaWQpOwot
ICAgIH0KLQotICAgIC8vIFJlbW92ZSB0aGUgaW5wdXQgc2luY2Ugd2Ugbm8gbG9uZ2VyIG5lZWQg
aXQKLSAgICAvLyBMZXNzIERPTSBtZWFucyBmYXN0ZXIgcmVuZGVyaW5nCi0gICAgbGkucmVtb3Zl
Q2hpbGQoaW5wdXQpOwotCi0gICAgLy8gUmVtb3ZlIHRoZSBlZGl0aW5nIGNsYXNzCi0gICAgbGku
Y2xhc3NOYW1lID0gbGkuY2xhc3NOYW1lLnJlcGxhY2UoJ2VkaXRpbmcnLCAnJyk7Ci0gICAgfS5i
aW5kKHRoaXMpOwotCi0gICAgLy8gQXBwZW5kIHRoZSBlZGl0aW5nIGNsYXNzCi0gICAgbGkuY2xh
c3NOYW1lID0gbGkuY2xhc3NOYW1lICsgJyBlZGl0aW5nJzsKLQotICAgIHZhciBpbnB1dCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7Ci0gICAgaW5wdXQuY2xhc3NOYW1lID0gJ2Vk
aXQnOwotCi0gICAgLy8gR2V0IHRoZSBpbm5lckhUTUwgb2YgdGhlIGxhYmVsIGluc3RlYWQgb2Yg
cmVxdWVzdGluZyB0aGUgZGF0YSBmcm9tIHRoZQotICAgIC8vIE9STS4gSWYgdGhpcyB3ZXJlIGEg
cmVhbCBEQiB0aGlzIHdvdWxkIHNhdmUgYSBsb3Qgb2YgdGltZSBhbmQgd291bGQgYXZvaWQKLSAg
ICAvLyBhIHNwaW5uZXIgZ2lmLgotICAgIGlucHV0LnZhbHVlID0gbGFiZWwuaW5uZXJIVE1MOwot
Ci0gICAgbGkuYXBwZW5kQ2hpbGQoaW5wdXQpOwotCi0gICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5l
cignYmx1cicsIG9uU2F2ZUhhbmRsZXIpOwotCi0gICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcign
a2V5cHJlc3MnLCBmdW5jdGlvbiAoZSkgewotICAgIGlmIChlLmtleUNvZGUgPT09IHRoaXMuRU5U
RVJfS0VZKSB7Ci0gICAgLy8gUmVtb3ZlIHRoZSBjdXJzb3IgZnJvbSB0aGUgaW5wdXQgd2hlbiB5
b3UgaGl0IGVudGVyIGp1c3QgbGlrZSBpZiBpdAotICAgIC8vIHdlcmUgYSByZWFsIGZvcm0KLSAg
ICBpbnB1dC5ibHVyKCk7Ci0gICAgfQorICAgIENvbnRyb2xsZXIucHJvdG90eXBlLmVkaXRJdGVt
ID0gZnVuY3Rpb24gKGlkKSB7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgc2Vs
Zi5tb2RlbC5yZWFkKGlkLCBmdW5jdGlvbiAoZGF0YSkgeworICAgICAgICAgICAgc2VsZi52aWV3
LnJlbmRlcignZWRpdEl0ZW0nLCB7aWQ6IGlkLCB0aXRsZTogZGF0YVswXS50aXRsZX0pOworICAg
ICAgICB9KTsKKyAgICB9OwogCi0gICAgaWYgKGUua2V5Q29kZSA9PT0gdGhpcy5FU0NBUEVfS0VZ
KSB7Ci0gICAgLy8gRGlzY2FyZCB0aGUgY2hhbmdlcwotICAgIGlucHV0LmRhdGFzZXQuZGlzY2Fy
ZCA9IHRydWU7Ci0gICAgaW5wdXQuYmx1cigpOwotICAgIH0KLSAgICB9LmJpbmQodGhpcykpOwor
ICAgIC8qCisgICAgICogRmluaXNoZXMgdGhlIGl0ZW0gZWRpdGluZyBtb2RlIHN1Y2Nlc3NmdWxs
eS4KKyAgICAgKi8KKyAgICBDb250cm9sbGVyLnByb3RvdHlwZS5lZGl0SXRlbVNhdmUgPSBmdW5j
dGlvbiAoaWQsIHRpdGxlKSB7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgdGl0
bGUgPSB0aXRsZS50cmltKCk7CisKKyAgICAgICAgaWYgKHRpdGxlLmxlbmd0aCAhPT0gMCkgewor
ICAgICAgICAgICAgc2VsZi5tb2RlbC51cGRhdGUoaWQsIHt0aXRsZTogdGl0bGV9LCBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgc2VsZi52aWV3LnJlbmRlcignZWRpdEl0ZW1Eb25lJywg
e2lkOiBpZCwgdGl0bGU6IHRpdGxlfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHNlbGYucmVtb3ZlSXRlbShpZCk7CisgICAgICAgIH0KKyAgICB9Owog
Ci0gICAgaW5wdXQuZm9jdXMoKTsKKyAgICAvKgorICAgICAqIENhbmNlbHMgdGhlIGl0ZW0gZWRp
dGluZyBtb2RlLgorICAgICAqLworICAgIENvbnRyb2xsZXIucHJvdG90eXBlLmVkaXRJdGVtQ2Fu
Y2VsID0gZnVuY3Rpb24gKGlkKSB7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAg
c2VsZi5tb2RlbC5yZWFkKGlkLCBmdW5jdGlvbiAoZGF0YSkgeworICAgICAgICAgICAgc2VsZi52
aWV3LnJlbmRlcignZWRpdEl0ZW1Eb25lJywge2lkOiBpZCwgdGl0bGU6IGRhdGFbMF0udGl0bGV9
KTsKKyAgICAgICAgfSk7CiAgICAgfTsKIAogICAgIC8qKgpAQCAtMTYyLDI0ICsxNDksMjYgQEAK
ICAgICAgKiBzdG9yYWdlCiAgICAgICovCiAgICAgQ29udHJvbGxlci5wcm90b3R5cGUucmVtb3Zl
SXRlbSA9IGZ1bmN0aW9uIChpZCkgewotICAgIHRoaXMubW9kZWwucmVtb3ZlKGlkLCBmdW5jdGlv
biAoKSB7Ci0gICAgdGhpcy4kdG9kb0xpc3QucmVtb3ZlQ2hpbGQoJCQoJ1tkYXRhLWlkPSInICsg
aWQgKyAnIl0nKSk7Ci0gICAgfS5iaW5kKHRoaXMpKTsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlz
OworICAgICAgICBzZWxmLm1vZGVsLnJlbW92ZShpZCwgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgc2VsZi52aWV3LnJlbmRlcigncmVtb3ZlSXRlbScsIGlkKTsKKyAgICAgICAgfSk7CiAKLSAg
ICB0aGlzLl9maWx0ZXIoKTsKKyAgICAgICAgc2VsZi5fZmlsdGVyKCk7CiAgICAgfTsKIAogICAg
IC8qKgogICAgICAqIFdpbGwgcmVtb3ZlIGFsbCBjb21wbGV0ZWQgaXRlbXMgZnJvbSB0aGUgRE9N
IGFuZCBzdG9yYWdlLgogICAgICAqLwogICAgIENvbnRyb2xsZXIucHJvdG90eXBlLnJlbW92ZUNv
bXBsZXRlZEl0ZW1zID0gZnVuY3Rpb24gKCkgewotICAgIHRoaXMubW9kZWwucmVhZCh7IGNvbXBs
ZXRlZDogMSB9LCBmdW5jdGlvbiAoZGF0YSkgewotICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbiAo
aXRlbSkgewotICAgIHRoaXMucmVtb3ZlSXRlbShpdGVtLmlkKTsKLSAgICB9LmJpbmQodGhpcykp
OwotICAgIH0uYmluZCh0aGlzKSk7Ci0KLSAgICB0aGlzLl9maWx0ZXIoKTsKKyAgICAgICAgdmFy
IHNlbGYgPSB0aGlzOworICAgICAgICBzZWxmLm1vZGVsLnJlYWQoeyBjb21wbGV0ZWQ6IHRydWUg
fSwgZnVuY3Rpb24gKGRhdGEpIHsKKyAgICAgICAgICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbiAo
aXRlbSkgeworICAgICAgICAgICAgICAgIHNlbGYucmVtb3ZlSXRlbShpdGVtLmlkKTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBzZWxmLl9maWx0ZXIoKTsKICAgICB9
OwogCiAgICAgLyoqCkBAIC0xOTEsNDggKzE4MCwzMyBAQAogICAgICAqICAgICAgICAgICAgICAg
ICAgICAgICAgICBvciBub3QKICAgICAgKiBAcGFyYW0ge2Jvb2xlYW58dW5kZWZpbmVkfSBzaWxl
bnQgUHJldmVudCByZS1maWx0ZXJpbmcgdGhlIHRvZG8gaXRlbXMKICAgICAgKi8KLSAgICBDb250
cm9sbGVyLnByb3RvdHlwZS50b2dnbGVDb21wbGV0ZSA9IGZ1bmN0aW9uIChpZCwgY2hlY2tib3gs
IHNpbGVudCkgewotICAgIHZhciBjb21wbGV0ZWQgPSBjaGVja2JveC5jaGVja2VkID8gMSA6IDA7
Ci0KLSAgICB0aGlzLm1vZGVsLnVwZGF0ZShpZCwgeyBjb21wbGV0ZWQ6IGNvbXBsZXRlZCB9LCBm
dW5jdGlvbiAoKSB7Ci0gICAgdmFyIGxpc3RJdGVtID0gJCQoJ1tkYXRhLWlkPSInICsgaWQgKyAn
Il0nKTsKLQotICAgIGlmICghbGlzdEl0ZW0pIHsKLSAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
bGlzdEl0ZW0uY2xhc3NOYW1lID0gY29tcGxldGVkID8gJ2NvbXBsZXRlZCcgOiAnJzsKLQotICAg
IC8vIEluIGNhc2UgaXQgd2FzIHRvZ2dsZWQgZnJvbSBhbiBldmVudCBhbmQgbm90IGJ5IGNsaWNr
aW5nIHRoZSBjaGVja2JveAotICAgIGxpc3RJdGVtLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykuY2hl
Y2tlZCA9IGNvbXBsZXRlZDsKLSAgICB9KTsKLQotICAgIGlmICghc2lsZW50KSB7Ci0gICAgdGhp
cy5fZmlsdGVyKCk7Ci0gICAgfQorICAgIENvbnRyb2xsZXIucHJvdG90eXBlLnRvZ2dsZUNvbXBs
ZXRlID0gZnVuY3Rpb24gKGlkLCBjb21wbGV0ZWQsIHNpbGVudCkgeworICAgICAgICB2YXIgc2Vs
ZiA9IHRoaXM7CisgICAgICAgIHNlbGYubW9kZWwudXBkYXRlKGlkLCB7IGNvbXBsZXRlZDogY29t
cGxldGVkIH0sIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHNlbGYudmlldy5yZW5kZXIoJ2Vs
ZW1lbnRDb21wbGV0ZScsIHsKKyAgICAgICAgICAgICAgICBpZDogaWQsCisgICAgICAgICAgICAg
ICAgY29tcGxldGVkOiBjb21wbGV0ZWQKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKwor
ICAgICAgICBpZiAoIXNpbGVudCkgeworICAgICAgICAgICAgc2VsZi5fZmlsdGVyKCk7CisgICAg
ICAgIH0KICAgICB9OwogCiAgICAgLyoqCi0gICAgICogV2lsbCB0b2dnbGUgQUxMIGNoZWNrYm94
ZSdzIG9uL29mZiBzdGF0ZSBhbmQgY29tcGxldGVuZXNzIG9mIG1vZGVscy4KKyAgICAgKiBXaWxs
IHRvZ2dsZSBBTEwgY2hlY2tib3hlcycgb24vb2ZmIHN0YXRlIGFuZCBjb21wbGV0ZW5lc3Mgb2Yg
bW9kZWxzLgogICAgICAqIEp1c3QgcGFzcyBpbiB0aGUgZXZlbnQgb2JqZWN0LgotICAgICAqCi0g
ICAgICogQHBhcmFtIHtvYmplY3R9IGUgVGhlIGV2ZW50IG9iamVjdAogICAgICAqLwotICAgIENv
bnRyb2xsZXIucHJvdG90eXBlLnRvZ2dsZUFsbCA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgdmFyIGNv
bXBsZXRlZCA9IGUudGFyZ2V0LmNoZWNrZWQgPyAxIDogMDsKLSAgICB2YXIgcXVlcnkgPSAwOwot
Ci0gICAgaWYgKGNvbXBsZXRlZCA9PT0gMCkgewotICAgIHF1ZXJ5ID0gMTsKLSAgICB9Ci0KLSAg
ICB0aGlzLm1vZGVsLnJlYWQoeyBjb21wbGV0ZWQ6IHF1ZXJ5IH0sIGZ1bmN0aW9uIChkYXRhKSB7
Ci0gICAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7Ci0gICAgdGhpcy50b2dnbGVDb21w
bGV0ZShpdGVtLmlkLCBlLnRhcmdldCwgdHJ1ZSk7Ci0gICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9
LmJpbmQodGhpcykpOwotCi0gICAgdGhpcy5fZmlsdGVyKCk7CisgICAgQ29udHJvbGxlci5wcm90
b3R5cGUudG9nZ2xlQWxsID0gZnVuY3Rpb24gKGNvbXBsZXRlZCkgeworICAgICAgICB2YXIgc2Vs
ZiA9IHRoaXM7CisgICAgICAgIHNlbGYubW9kZWwucmVhZCh7IGNvbXBsZXRlZDogIWNvbXBsZXRl
ZCB9LCBmdW5jdGlvbiAoZGF0YSkgeworICAgICAgICAgICAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9u
IChpdGVtKSB7CisgICAgICAgICAgICAgICAgc2VsZi50b2dnbGVDb21wbGV0ZShpdGVtLmlkLCBj
b21wbGV0ZWQsIHRydWUpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAg
IHNlbGYuX2ZpbHRlcigpOwogICAgIH07CiAKICAgICAvKioKQEAgLTI0MCwzNyArMjE0LDE3IEBA
CiAgICAgICogbnVtYmVyIG9mIHRvZG9zLgogICAgICAqLwogICAgIENvbnRyb2xsZXIucHJvdG90
eXBlLl91cGRhdGVDb3VudCA9IGZ1bmN0aW9uICgpIHsKLSAgICB2YXIgdG9kb3MgPSB0aGlzLm1v
ZGVsLmdldENvdW50KCk7Ci0KLSAgICB0aGlzLiR0b2RvSXRlbUNvdW50ZXIuaW5uZXJIVE1MID0g
dGhpcy52aWV3Lml0ZW1Db3VudGVyKHRvZG9zLmFjdGl2ZSk7Ci0KLSAgICB0aGlzLiRjbGVhckNv
bXBsZXRlZC5pbm5lckhUTUwgPSB0aGlzLnZpZXcuY2xlYXJDb21wbGV0ZWRCdXR0b24odG9kb3Mu
Y29tcGxldGVkKTsKLSAgICB0aGlzLiRjbGVhckNvbXBsZXRlZC5zdHlsZS5kaXNwbGF5ID0gdG9k
b3MuY29tcGxldGVkID4gMCA/ICdibG9jaycgOiAnbm9uZSc7Ci0KLSAgICB0aGlzLiR0b2dnbGVB
bGwuY2hlY2tlZCA9IHRvZG9zLmNvbXBsZXRlZCA9PT0gdG9kb3MudG90YWw7Ci0KLSAgICB0aGlz
Ll90b2dnbGVGcmFtZSh0b2Rvcyk7Ci0gICAgfTsKLQotICAgIC8qKgotICAgICAqIFRoZSBtYWlu
IGJvZHkgYW5kIGZvb3RlciBlbGVtZW50cyBzaG91bGQgbm90IGJlIHZpc2libGUgd2hlbiB0aGVy
ZSBhcmUgbm8KLSAgICAgKiB0b2RvcyBsZWZ0LgotICAgICAqCi0gICAgICogQHBhcmFtIHtvYmpl
Y3R9IHRvZG9zIENvbnRhaW5zIGEgY291bnQgb2YgYWxsIHRvZG9zLCBhbmQgdGhlaXIgc3RhdHVz
ZXMuCi0gICAgICovCi0gICAgQ29udHJvbGxlci5wcm90b3R5cGUuX3RvZ2dsZUZyYW1lID0gZnVu
Y3Rpb24gKHRvZG9zKSB7Ci0gICAgdmFyIGZyYW1lRGlzcGxheSA9IHRoaXMuJG1haW4uc3R5bGUu
ZGlzcGxheTsKLSAgICB2YXIgZnJhbWVWaXNpYmxlID0gZnJhbWVEaXNwbGF5ID09PSAnYmxvY2sn
IHx8IGZyYW1lRGlzcGxheSA9PT0gJyc7Ci0KLSAgICBpZiAodG9kb3MudG90YWwgPT09IDAgJiYg
ZnJhbWVWaXNpYmxlKSB7Ci0gICAgdGhpcy4kbWFpbi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwot
ICAgIHRoaXMuJGZvb3Rlci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwotICAgIH0KLQotICAgIGlm
ICh0b2Rvcy50b3RhbCA+IDAgJiYgIWZyYW1lVmlzaWJsZSkgewotICAgIHRoaXMuJG1haW4uc3R5
bGUuZGlzcGxheSA9ICdibG9jayc7Ci0gICAgdGhpcy4kZm9vdGVyLnN0eWxlLmRpc3BsYXkgPSAn
YmxvY2snOwotICAgIH0KKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICBzZWxmLm1v
ZGVsLmdldENvdW50KGZ1bmN0aW9uICh0b2RvcykgeworICAgICAgICAgICAgc2VsZi52aWV3LnJl
bmRlcigndXBkYXRlRWxlbWVudENvdW50JywgdG9kb3MuYWN0aXZlKTsKKyAgICAgICAgICAgIHNl
bGYudmlldy5yZW5kZXIoJ2NsZWFyQ29tcGxldGVkQnV0dG9uJywgeworICAgICAgICAgICAgICAg
IGNvbXBsZXRlZDogdG9kb3MuY29tcGxldGVkLAorICAgICAgICAgICAgICAgIHZpc2libGU6IHRv
ZG9zLmNvbXBsZXRlZCA+IDAKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBzZWxmLnZp
ZXcucmVuZGVyKCd0b2dnbGVBbGwnLCB7Y2hlY2tlZDogdG9kb3MuY29tcGxldGVkID09PSB0b2Rv
cy50b3RhbH0pOworICAgICAgICAgICAgc2VsZi52aWV3LnJlbmRlcignY29udGVudEJsb2NrVmlz
aWJpbGl0eScsIHt2aXNpYmxlOiB0b2Rvcy50b3RhbCA+IDB9KTsKKyAgICAgICAgfSk7CiAgICAg
fTsKIAogICAgIC8qKgpAQCAtMjc4LDUzICsyMzIsMzkgQEAKICAgICAgKiBAcGFyYW0ge2Jvb2xl
YW58dW5kZWZpbmVkfSBmb3JjZSAgZm9yY2VzIGEgcmUtcGFpbnRpbmcgb2YgdG9kbyBpdGVtcy4K
ICAgICAgKi8KICAgICBDb250cm9sbGVyLnByb3RvdHlwZS5fZmlsdGVyID0gZnVuY3Rpb24gKGZv
cmNlKSB7Ci0gICAgdmFyIGFjdGl2ZVJvdXRlID0gdGhpcy5fYWN0aXZlUm91dGUuY2hhckF0KDAp
LnRvVXBwZXJDYXNlKCkgKyB0aGlzLl9hY3RpdmVSb3V0ZS5zdWJzdHIoMSk7CisgICAgICAgIHZh
ciBhY3RpdmVSb3V0ZSA9IHRoaXMuX2FjdGl2ZVJvdXRlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgp
ICsgdGhpcy5fYWN0aXZlUm91dGUuc3Vic3RyKDEpOwogCi0gICAgLy8gVXBkYXRlIHRoZSBlbGVt
ZW50cyBvbiB0aGUgcGFnZSwgd2hpY2ggY2hhbmdlIHdpdGggZWFjaCBjb21wbGV0ZWQgdG9kbwot
ICAgIHRoaXMuX3VwZGF0ZUNvdW50KCk7CisgICAgICAgIC8vIFVwZGF0ZSB0aGUgZWxlbWVudHMg
b24gdGhlIHBhZ2UsIHdoaWNoIGNoYW5nZSB3aXRoIGVhY2ggY29tcGxldGVkIHRvZG8KKyAgICAg
ICAgdGhpcy5fdXBkYXRlQ291bnQoKTsKIAotICAgIC8vIElmIHRoZSBsYXN0IGFjdGl2ZSByb3V0
ZSBpc24ndCAiQWxsIiwgb3Igd2UncmUgc3dpdGNoaW5nIHJvdXRlcywgd2UKLSAgICAvLyByZS1j
cmVhdGUgdGhlIHRvZG8gaXRlbSBlbGVtZW50cywgY2FsbGluZzoKLSAgICAvLyAgIHRoaXMuc2hv
d1tBbGx8QWN0aXZlfENvbXBsZXRlZF0oKTsKLSAgICBpZiAoZm9yY2UgfHwgdGhpcy5fbGFzdEFj
dGl2ZVJvdXRlICE9PSAnQWxsJyB8fCB0aGlzLl9sYXN0QWN0aXZlUm91dGUgIT09IGFjdGl2ZVJv
dXRlKSB7Ci0gICAgdGhpc1snc2hvdycgKyBhY3RpdmVSb3V0ZV0oKTsKLSAgICB9CisgICAgICAg
IC8vIElmIHRoZSBsYXN0IGFjdGl2ZSByb3V0ZSBpc24ndCAiQWxsIiwgb3Igd2UncmUgc3dpdGNo
aW5nIHJvdXRlcywgd2UKKyAgICAgICAgLy8gcmUtY3JlYXRlIHRoZSB0b2RvIGl0ZW0gZWxlbWVu
dHMsIGNhbGxpbmc6CisgICAgICAgIC8vICAgdGhpcy5zaG93W0FsbHxBY3RpdmV8Q29tcGxldGVk
XSgpOworICAgICAgICBpZiAoZm9yY2UgfHwgdGhpcy5fbGFzdEFjdGl2ZVJvdXRlICE9PSAnQWxs
JyB8fCB0aGlzLl9sYXN0QWN0aXZlUm91dGUgIT09IGFjdGl2ZVJvdXRlKSB7CisgICAgICAgICAg
ICB0aGlzWydzaG93JyArIGFjdGl2ZVJvdXRlXSgpOworICAgICAgICB9CiAKLSAgICB0aGlzLl9s
YXN0QWN0aXZlUm91dGUgPSBhY3RpdmVSb3V0ZTsKKyAgICAgICAgdGhpcy5fbGFzdEFjdGl2ZVJv
dXRlID0gYWN0aXZlUm91dGU7CiAgICAgfTsKIAogICAgIC8qKgogICAgICAqIFNpbXBseSB1cGRh
dGVzIHRoZSBmaWx0ZXIgbmF2J3Mgc2VsZWN0ZWQgc3RhdGVzCiAgICAgICovCi0gICAgQ29udHJv
bGxlci5wcm90b3R5cGUuX3VwZGF0ZUZpbHRlclN0YXRlID0gZnVuY3Rpb24gKCkgewotICAgIHZh
ciBjdXJyZW50UGFnZSA9IHRoaXMuX2dldEN1cnJlbnRQYWdlKCkgfHwgJyc7Ci0KLSAgICAvLyBT
dG9yZSBhIHJlZmVyZW5jZSB0byB0aGUgYWN0aXZlIHJvdXRlLCBhbGxvd2luZyB1cyB0byByZS1m
aWx0ZXIgdG9kbwotICAgIC8vIGl0ZW1zIGFzIHRoZXkgYXJlIG1hcmtlZCBjb21wbGV0ZSBvciBp
bmNvbXBsZXRlLgotICAgIHRoaXMuX2FjdGl2ZVJvdXRlID0gY3VycmVudFBhZ2U7Ci0KLSAgICBp
ZiAoY3VycmVudFBhZ2UgPT09ICcnKSB7Ci0gICAgdGhpcy5fYWN0aXZlUm91dGUgPSAnQWxsJzsK
LSAgICB9CisgICAgQ29udHJvbGxlci5wcm90b3R5cGUuX3VwZGF0ZUZpbHRlclN0YXRlID0gZnVu
Y3Rpb24gKGN1cnJlbnRQYWdlKSB7CisgICAgICAgIC8vIFN0b3JlIGEgcmVmZXJlbmNlIHRvIHRo
ZSBhY3RpdmUgcm91dGUsIGFsbG93aW5nIHVzIHRvIHJlLWZpbHRlciB0b2RvCisgICAgICAgIC8v
IGl0ZW1zIGFzIHRoZXkgYXJlIG1hcmtlZCBjb21wbGV0ZSBvciBpbmNvbXBsZXRlLgorICAgICAg
ICB0aGlzLl9hY3RpdmVSb3V0ZSA9IGN1cnJlbnRQYWdlOwogCi0gICAgdGhpcy5fZmlsdGVyKCk7
CisgICAgICAgIGlmIChjdXJyZW50UGFnZSA9PT0gJycpIHsKKyAgICAgICAgICAgIHRoaXMuX2Fj
dGl2ZVJvdXRlID0gJ0FsbCc7CisgICAgICAgIH0KIAotICAgIC8vIFJlbW92ZSBhbGwgb3RoZXIg
c2VsZWN0ZWQgc3RhdGVzLiBXZSBsb29wIHRocm91Z2ggYWxsIG9mIHRoZW0gaW4gY2FzZSB0aGUK
LSAgICAvLyBVSSBnZXRzIGluIGEgZnVua3kgc3RhdGUgd2l0aCB0d28gc2VsZWN0ZWQuCi0gICAg
JCgnI2ZpbHRlcnMgLnNlbGVjdGVkJykuZWFjaChmdW5jdGlvbiAoaXRlbSkgewotICAgIGl0ZW0u
Y2xhc3NOYW1lID0gJyc7Ci0gICAgfSk7CisgICAgICAgIHRoaXMuX2ZpbHRlcigpOwogCi0gICAg
JCQoJyNmaWx0ZXJzIFtocmVmPSIjLycgKyBjdXJyZW50UGFnZSArICciXScpLmNsYXNzTmFtZSA9
ICdzZWxlY3RlZCc7Ci0gICAgfTsKLQotICAgIC8qKgotICAgICAqIEEgZ2V0dGVyIGZvciBnZXR0
aW5nIHRoZSBjdXJyZW50IHBhZ2UKLSAgICAgKi8KLSAgICBDb250cm9sbGVyLnByb3RvdHlwZS5f
Z2V0Q3VycmVudFBhZ2UgPSBmdW5jdGlvbiAoKSB7Ci0gICAgcmV0dXJuIGRvY3VtZW50LmxvY2F0
aW9uLmhhc2guc3BsaXQoJy8nKVsxXTsKKyAgICAgICAgdGhpcy52aWV3LnJlbmRlcignc2V0Rmls
dGVyJywgY3VycmVudFBhZ2UpOwogICAgIH07CiAKICAgICAvLyBFeHBvcnQgdG8gd2luZG93Cisg
ICAgd2luZG93LmFwcCA9IHdpbmRvdy5hcHAgfHwge307CiAgICAgd2luZG93LmFwcC5Db250cm9s
bGVyID0gQ29udHJvbGxlcjsKIH0pKHdpbmRvdyk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxs
YWpzL2pzL2hlbHBlcnMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL2hlbHBlcnMuanMKaW5kZXgg
NThhMGU5ZmUzMjU3OGE5Njg1N2ZlOWI5NGRhZTNhZGYzZjZmNWU5Ni4uMmFmOTU2ZjA2NGQ4ODE4
ZGZjNWYxNTkxZGM2NjdjMWJhODZmZDEwYyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9q
cy9oZWxwZXJzLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvaGVscGVycy5qcwpAQCAtMSwx
NyArMSw1MiBAQAorLypnbG9iYWwgTm9kZUxpc3QgKi8KIChmdW5jdGlvbiAod2luZG93KSB7CiAg
ICAgJ3VzZSBzdHJpY3QnOwogCi0gICAgLy8gQ2FjaGUgdGhlIHF1ZXJ5U2VsZWN0b3IvQWxsIGZv
ciBlYXNpZXIgYW5kIGZhc3RlciByZXVzZQotICAgIHdpbmRvdy4kID0gZG9jdW1lbnQucXVlcnlT
ZWxlY3RvckFsbC5iaW5kKGRvY3VtZW50KTsKLSAgICB3aW5kb3cuJCQgPSBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yLmJpbmQoZG9jdW1lbnQpOwotCi0gICAgLy8gQWxsb3cgZm9yIGxvb3Bpbmcgb24g
T2JqZWN0cyBieSBjaGFpbmluZzoKLSAgICAvLyAkKCcuZm9vJykuZWFjaChmdW5jdGlvbiAoKSB7
fSkKLSAgICBPYmplY3QucHJvdG90eXBlLmVhY2ggPSBmdW5jdGlvbiAoY2FsbGJhY2spIHsKLSAg
ICBmb3IgKHZhciB4IGluIHRoaXMpIHsKLSAgICBpZiAodGhpcy5oYXNPd25Qcm9wZXJ0eSh4KSkg
ewotICAgIGNhbGxiYWNrLmNhbGwodGhpcywgdGhpc1t4XSk7Ci0gICAgfQotICAgIH0KKyAgICAv
LyBHZXQgZWxlbWVudChzKSBieSBDU1Mgc2VsZWN0b3I6CisgICAgd2luZG93LnFzID0gZnVuY3Rp
b24gKHNlbGVjdG9yLCBzY29wZSkgeworICAgICAgICByZXR1cm4gKHNjb3BlIHx8IGRvY3VtZW50
KS5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsKICAgICB9OworICAgIHdpbmRvdy5xc2EgPSBmdW5j
dGlvbiAoc2VsZWN0b3IsIHNjb3BlKSB7CisgICAgICAgIHJldHVybiAoc2NvcGUgfHwgZG9jdW1l
bnQpLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpOworICAgIH07CisKKyAgICAvLyBhZGRFdmVu
dExpc3RlbmVyIHdyYXBwZXI6CisgICAgd2luZG93LiRvbiA9IGZ1bmN0aW9uICh0YXJnZXQsIHR5
cGUsIGNhbGxiYWNrLCB1c2VDYXB0dXJlKSB7CisgICAgICAgIHRhcmdldC5hZGRFdmVudExpc3Rl
bmVyKHR5cGUsIGNhbGxiYWNrLCAhIXVzZUNhcHR1cmUpOworICAgIH07CisKKyAgICAvLyBBdHRh
Y2ggYSBoYW5kbGVyIHRvIGV2ZW50IGZvciBhbGwgZWxlbWVudHMgdGhhdCBtYXRjaCB0aGUgc2Vs
ZWN0b3IsCisgICAgLy8gbm93IG9yIGluIHRoZSBmdXR1cmUsIGJhc2VkIG9uIGEgcm9vdCBlbGVt
ZW50CisgICAgd2luZG93LiRkZWxlZ2F0ZSA9IGZ1bmN0aW9uICh0YXJnZXQsIHNlbGVjdG9yLCB0
eXBlLCBoYW5kbGVyKSB7CisgICAgICAgIGZ1bmN0aW9uIGRpc3BhdGNoRXZlbnQoZXZlbnQpIHsK
KyAgICAgICAgICAgIHZhciB0YXJnZXRFbGVtZW50ID0gZXZlbnQudGFyZ2V0OworICAgICAgICAg
ICAgdmFyIHBvdGVudGlhbEVsZW1lbnRzID0gd2luZG93LnFzYShzZWxlY3RvciwgdGFyZ2V0KTsK
KyAgICAgICAgICAgIHZhciBoYXNNYXRjaCA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwo
cG90ZW50aWFsRWxlbWVudHMsIHRhcmdldEVsZW1lbnQpID49IDA7CisKKyAgICAgICAgICAgIGlm
IChoYXNNYXRjaCkgeworICAgICAgICAgICAgICAgIGhhbmRsZXIuY2FsbCh0YXJnZXRFbGVtZW50
LCBldmVudCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBodHRwczov
L2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9FdmVudHMvYmx1cgorICAgICAg
ICB2YXIgdXNlQ2FwdHVyZSA9IHR5cGUgPT09ICdibHVyJyB8fCB0eXBlID09PSAnZm9jdXMnOwor
CisgICAgICAgIHdpbmRvdy4kb24odGFyZ2V0LCB0eXBlLCBkaXNwYXRjaEV2ZW50LCB1c2VDYXB0
dXJlKTsKKyAgICB9OworCisgICAgLy8gRmluZCB0aGUgZWxlbWVudCdzIHBhcmVudCB3aXRoIHRo
ZSBnaXZlbiB0YWcgbmFtZToKKyAgICAvLyAkcGFyZW50KHFzKCdhJyksICdkaXYnKTsKKyAgICB3
aW5kb3cuJHBhcmVudCA9IGZ1bmN0aW9uIChlbGVtZW50LCB0YWdOYW1lKSB7CisgICAgICAgIGlm
ICghZWxlbWVudC5wYXJlbnROb2RlKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGVsZW1lbnQucGFyZW50Tm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09
IHRhZ05hbWUudG9Mb3dlckNhc2UoKSkgeworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQucGFy
ZW50Tm9kZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gd2luZG93LiRwYXJlbnQoZWxlbWVu
dC5wYXJlbnROb2RlLCB0YWdOYW1lKTsKKyAgICB9OworCisgICAgLy8gQWxsb3cgZm9yIGxvb3Bp
bmcgb24gbm9kZXMgYnkgY2hhaW5pbmc6CisgICAgLy8gcXNhKCcuZm9vJykuZm9yRWFjaChmdW5j
dGlvbiAoKSB7fSkKKyAgICBOb2RlTGlzdC5wcm90b3R5cGUuZm9yRWFjaCA9IEFycmF5LnByb3Rv
dHlwZS5mb3JFYWNoOwogfSkod2luZG93KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMv
anMvbW9kZWwuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL21vZGVsLmpzCmluZGV4IGUwMTQ2NzQ2
NWUxNjk5YmIzNTRjOTNlMWYyMDg2MGUwODU1MTU2MWIuLmQ4YTczMTkxZDJjMmRmNWIyMzcyM2Fh
YTQxMzM5ZGI4ZGJhNzliNGYgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvbW9kZWwu
anMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92
YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy9tb2RlbC5qcwpAQCAtOCw3ICs4LDcgQEAKICAg
ICAgKiBAcGFyYW0ge29iamVjdH0gc3RvcmFnZSBBIHJlZmVyZW5jZSB0byB0aGUgY2xpZW50IHNp
ZGUgc3RvcmFnZSBjbGFzcwogICAgICAqLwogICAgIGZ1bmN0aW9uIE1vZGVsKHN0b3JhZ2UpIHsK
LSAgICB0aGlzLnN0b3JhZ2UgPSBzdG9yYWdlOworICAgICAgICB0aGlzLnN0b3JhZ2UgPSBzdG9y
YWdlOwogICAgIH0KIAogICAgIC8qKgpAQCAtMTgsMTUgKzE4LDE1IEBACiAgICAgICogQHBhcmFt
IHtmdW5jdGlvbn0gW2NhbGxiYWNrXSBUaGUgY2FsbGJhY2sgdG8gZmlyZSBhZnRlciB0aGUgbW9k
ZWwgaXMgY3JlYXRlZAogICAgICAqLwogICAgIE1vZGVsLnByb3RvdHlwZS5jcmVhdGUgPSBmdW5j
dGlvbiAodGl0bGUsIGNhbGxiYWNrKSB7Ci0gICAgdGl0bGUgPSB0aXRsZSB8fCAnJzsKLSAgICBj
YWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9OworICAgICAgICB0aXRsZSA9IHRp
dGxlIHx8ICcnOworICAgICAgICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9
OwogCi0gICAgdmFyIG5ld0l0ZW0gPSB7Ci0gICAgdGl0bGU6IHRpdGxlLnRyaW0oKSwKLSAgICBj
b21wbGV0ZWQ6IDAKLSAgICB9OworICAgICAgICB2YXIgbmV3SXRlbSA9IHsKKyAgICAgICAgICAg
IHRpdGxlOiB0aXRsZS50cmltKCksCisgICAgICAgICAgICBjb21wbGV0ZWQ6IGZhbHNlCisgICAg
ICAgIH07CiAKLSAgICB0aGlzLnN0b3JhZ2Uuc2F2ZShuZXdJdGVtLCBjYWxsYmFjayk7CisgICAg
ICAgIHRoaXMuc3RvcmFnZS5zYXZlKG5ld0l0ZW0sIGNhbGxiYWNrKTsKICAgICB9OwogCiAgICAg
LyoqCkBAIC00NSwxNyArNDUsMTggQEAKICAgICAgKiBtb2RlbC5yZWFkKHsgZm9vOiAnYmFyJywg
aGVsbG86ICd3b3JsZCcgfSk7CiAgICAgICovCiAgICAgTW9kZWwucHJvdG90eXBlLnJlYWQgPSBm
dW5jdGlvbiAocXVlcnksIGNhbGxiYWNrKSB7Ci0gICAgdmFyIHF1ZXJ5VHlwZSA9IHR5cGVvZiBx
dWVyeTsKLSAgICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9OworICAgICAg
ICB2YXIgcXVlcnlUeXBlID0gdHlwZW9mIHF1ZXJ5OworICAgICAgICBjYWxsYmFjayA9IGNhbGxi
YWNrIHx8IGZ1bmN0aW9uICgpIHt9OwogCi0gICAgaWYgKHF1ZXJ5VHlwZSA9PT0gJ2Z1bmN0aW9u
JykgewotICAgIGNhbGxiYWNrID0gcXVlcnk7Ci0gICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5maW5k
QWxsKGNhbGxiYWNrKTsKLSAgICB9IGVsc2UgaWYgKHF1ZXJ5VHlwZSA9PT0gJ3N0cmluZycgfHwg
cXVlcnlUeXBlID09PSAnbnVtYmVyJykgewotICAgIHRoaXMuc3RvcmFnZS5maW5kKHsgaWQ6IHF1
ZXJ5IH0sIGNhbGxiYWNrKTsKLSAgICB9IGVsc2UgewotICAgIHRoaXMuc3RvcmFnZS5maW5kKHF1
ZXJ5LCBjYWxsYmFjayk7Ci0gICAgfQorICAgICAgICBpZiAocXVlcnlUeXBlID09PSAnZnVuY3Rp
b24nKSB7CisgICAgICAgICAgICBjYWxsYmFjayA9IHF1ZXJ5OworICAgICAgICAgICAgcmV0dXJu
IHRoaXMuc3RvcmFnZS5maW5kQWxsKGNhbGxiYWNrKTsKKyAgICAgICAgfSBlbHNlIGlmIChxdWVy
eVR5cGUgPT09ICdzdHJpbmcnIHx8IHF1ZXJ5VHlwZSA9PT0gJ251bWJlcicpIHsKKyAgICAgICAg
ICAgIHF1ZXJ5ID0gcGFyc2VJbnQocXVlcnksIDEwKTsKKyAgICAgICAgICAgIHRoaXMuc3RvcmFn
ZS5maW5kKHsgaWQ6IHF1ZXJ5IH0sIGNhbGxiYWNrKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHRoaXMuc3RvcmFnZS5maW5kKHF1ZXJ5LCBjYWxsYmFjayk7CisgICAgICAgIH0KICAg
ICB9OwogCiAgICAgLyoqCkBAIC02Nyw3ICs2OCw3IEBACiAgICAgICogQHBhcmFtIHtmdW5jdGlv
bn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiB0aGUgdXBkYXRlIGlzIGNvbXBs
ZXRlLgogICAgICAqLwogICAgIE1vZGVsLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoaWQs
IGRhdGEsIGNhbGxiYWNrKSB7Ci0gICAgdGhpcy5zdG9yYWdlLnNhdmUoaWQsIGRhdGEsIGNhbGxi
YWNrKTsKKyAgICAgICAgdGhpcy5zdG9yYWdlLnNhdmUoZGF0YSwgY2FsbGJhY2ssIGlkKTsKICAg
ICB9OwogCiAgICAgLyoqCkBAIC03Nyw3ICs3OCw3IEBACiAgICAgICogQHBhcmFtIHtmdW5jdGlv
bn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiB0aGUgcmVtb3ZhbCBpcyBjb21w
bGV0ZS4KICAgICAgKi8KICAgICBNb2RlbC5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKGlk
LCBjYWxsYmFjaykgewotICAgIHRoaXMuc3RvcmFnZS5yZW1vdmUoaWQsIGNhbGxiYWNrKTsKKyAg
ICAgICAgdGhpcy5zdG9yYWdlLnJlbW92ZShpZCwgY2FsbGJhY2spOwogICAgIH07CiAKICAgICAv
KioKQEAgLTg2LDM0ICs4NywzNCBAQAogICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNr
IFRoZSBjYWxsYmFjayB0byBmaXJlIHdoZW4gdGhlIHN0b3JhZ2UgaXMgd2lwZWQuCiAgICAgICov
CiAgICAgTW9kZWwucHJvdG90eXBlLnJlbW92ZUFsbCA9IGZ1bmN0aW9uIChjYWxsYmFjaykgewot
ICAgIHRoaXMuc3RvcmFnZS5kcm9wKGNhbGxiYWNrKTsKKyAgICAgICAgdGhpcy5zdG9yYWdlLmRy
b3AoY2FsbGJhY2spOwogICAgIH07CiAKICAgICAvKioKICAgICAgKiBSZXR1cm5zIGEgY291bnQg
b2YgYWxsIHRvZG9zCiAgICAgICovCi0gICAgTW9kZWwucHJvdG90eXBlLmdldENvdW50ID0gZnVu
Y3Rpb24gKCkgewotICAgIHZhciB0b2RvcyA9IHsKLSAgICBhY3RpdmU6IDAsCi0gICAgY29tcGxl
dGVkOiAwLAotICAgIHRvdGFsOiAwCi0gICAgfTsKLQotICAgIHRoaXMuc3RvcmFnZS5maW5kQWxs
KGZ1bmN0aW9uIChkYXRhKSB7Ci0gICAgZGF0YS5lYWNoKGZ1bmN0aW9uICh0b2RvKSB7Ci0gICAg
aWYgKHRvZG8uY29tcGxldGVkID09PSAxKSB7Ci0gICAgdG9kb3MuY29tcGxldGVkKys7Ci0gICAg
fSBlbHNlIHsKLSAgICB0b2Rvcy5hY3RpdmUrKzsKLSAgICB9CisgICAgTW9kZWwucHJvdG90eXBl
LmdldENvdW50ID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7CisgICAgICAgIHZhciB0b2RvcyA9IHsK
KyAgICAgICAgICAgIGFjdGl2ZTogMCwKKyAgICAgICAgICAgIGNvbXBsZXRlZDogMCwKKyAgICAg
ICAgICAgIHRvdGFsOiAwCisgICAgICAgIH07CiAKLSAgICB0b2Rvcy50b3RhbCsrOwotICAgIH0p
OwotICAgIH0pOworICAgICAgICB0aGlzLnN0b3JhZ2UuZmluZEFsbChmdW5jdGlvbiAoZGF0YSkg
eworICAgICAgICAgICAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uICh0b2RvKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHRvZG8uY29tcGxldGVkKSB7CisgICAgICAgICAgICAgICAgICAgIHRvZG9zLmNv
bXBsZXRlZCsrOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IHRvZG9zLmFjdGl2ZSsrOworICAgICAgICAgICAgICAgIH0KIAotICAgIHJldHVybiB0b2RvczsK
KyAgICAgICAgICAgICAgICB0b2Rvcy50b3RhbCsrOworICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICBjYWxsYmFjayh0b2Rvcyk7CisgICAgICAgIH0pOwogICAgIH07CiAKICAgICAvLyBFeHBv
cnQgdG8gd2luZG93CisgICAgd2luZG93LmFwcCA9IHdpbmRvdy5hcHAgfHwge307CiAgICAgd2lu
ZG93LmFwcC5Nb2RlbCA9IE1vZGVsOwogfSkod2luZG93KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92
YW5pbGxhanMvanMvc3RvcmUuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL3N0b3JlLmpzCmluZGV4
IDlhN2RhMGQ5YmI3N2FhNDFhM2Q4ZTlmZThiYzc2MzZkNjcwYWIxYTcuLmZlNjgyYzg4ZjhhNGU3
NTRkMDg2NzczYzUxZGQ1OWMzMmJiM2YzNzggMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMv
anMvc3RvcmUuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy9zdG9yZS5qcwpAQCAtMiw4ICsy
LDcgQEAKIChmdW5jdGlvbiAod2luZG93KSB7CiAgICAgJ3VzZSBzdHJpY3QnOwogCi0gICAgdmFy
IGxvY2FsU3RvcmFnZSA9IHt9OyAvLyBCZW5jaG1hcmsgbW9kaWZpY2F0aW9uOiBBdm9pZCBkaXNr
IGFjY2Vzcy4KLQorICAgIHZhciBNZW1vcnlTdG9yYWdlID0ge307CiAgICAgLyoqCiAgICAgICog
Q3JlYXRlcyBhIG5ldyBjbGllbnQgc2lkZSBzdG9yYWdlIG9iamVjdCBhbmQgd2lsbCBjcmVhdGUg
YW4gZW1wdHkKICAgICAgKiBjb2xsZWN0aW9uIGlmIG5vIGNvbGxlY3Rpb24gYWxyZWFkeSBleGlz
dHMuCkBAIC0xMywyMiArMTIsMTkgQEAKICAgICAgKiByZWFsIGxpZmUgeW91IHByb2JhYmx5IHdv
dWxkIGJlIG1ha2luZyBBSkFYIGNhbGxzCiAgICAgICovCiAgICAgZnVuY3Rpb24gU3RvcmUobmFt
ZSwgY2FsbGJhY2spIHsKLSAgICB2YXIgZGF0YTsKLSAgICB2YXIgZGJOYW1lOwotCi0gICAgY2Fs
bGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbiAoKSB7fTsKKyAgICAgICAgY2FsbGJhY2sgPSBj
YWxsYmFjayB8fCBmdW5jdGlvbiAoKSB7fTsKIAotICAgIGRiTmFtZSA9IHRoaXMuX2RiTmFtZSA9
IG5hbWU7CisgICAgICAgIHRoaXMuX2RiTmFtZSA9IG5hbWU7CiAKLSAgICBpZiAoIWxvY2FsU3Rv
cmFnZVtkYk5hbWVdKSB7Ci0gICAgZGF0YSA9IHsKLSAgICB0b2RvczogW10KLSAgICB9OworICAg
ICAgICBpZiAoIU1lbW9yeVN0b3JhZ2VbbmFtZV0pIHsKKyAgICAgICAgICAgIHZhciBkYXRhID0g
eworICAgICAgICAgICAgICAgIHRvZG9zOiBbXQorICAgICAgICAgICAgfTsKIAotICAgIGxvY2Fs
U3RvcmFnZVtkYk5hbWVdID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7Ci0gICAgfQorICAgICAgICAg
ICAgTWVtb3J5U3RvcmFnZVtuYW1lXSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpOworICAgICAgICB9
CiAKLSAgICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlW2RiTmFt
ZV0pKTsKKyAgICAgICAgY2FsbGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKE1lbW9yeVN0b3Jh
Z2VbbmFtZV0pKTsKICAgICB9CiAKICAgICAvKioKQEAgLTQ1LDE3ICs0MSwyMCBAQAogICAgICAq
IH0pOwogICAgICAqLwogICAgIFN0b3JlLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24gKHF1ZXJ5
LCBjYWxsYmFjaykgewotICAgIGlmICghY2FsbGJhY2spIHsKLSAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgdmFyIHRvZG9zID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VbdGhpcy5fZGJOYW1lXSku
dG9kb3M7Ci0KLSAgICBjYWxsYmFjay5jYWxsKHRoaXMsIHRvZG9zLmZpbHRlcihmdW5jdGlvbiAo
dG9kbykgewotICAgIGZvciAodmFyIHEgaW4gcXVlcnkpIHsKLSAgICByZXR1cm4gcXVlcnlbcV0g
PT09IHRvZG9bcV07Ci0gICAgfQotICAgIH0pKTsKKyAgICAgICAgaWYgKCFjYWxsYmFjaykgewor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHRvZG9zID0gSlNP
Ti5wYXJzZShNZW1vcnlTdG9yYWdlW3RoaXMuX2RiTmFtZV0pLnRvZG9zOworCisgICAgICAgIGNh
bGxiYWNrLmNhbGwodGhpcywgdG9kb3MuZmlsdGVyKGZ1bmN0aW9uICh0b2RvKSB7CisgICAgICAg
ICAgICBmb3IgKHZhciBxIGluIHF1ZXJ5KSB7CisgICAgICAgICAgICAgICAgaWYgKHF1ZXJ5W3Fd
ICE9PSB0b2RvW3FdKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfSkpOwogICAgIH07CiAKICAgICAvKioKQEAgLTY0LDQ4ICs2Myw0NSBAQAogICAgICAq
IEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIHVwb24gcmV0
cmlldmluZyBkYXRhCiAgICAgICovCiAgICAgU3RvcmUucHJvdG90eXBlLmZpbmRBbGwgPSBmdW5j
dGlvbiAoY2FsbGJhY2spIHsKLSAgICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgp
IHt9OwotICAgIGNhbGxiYWNrLmNhbGwodGhpcywgSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VbdGhp
cy5fZGJOYW1lXSkudG9kb3MpOworICAgICAgICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0
aW9uICgpIHt9OworICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UoTWVtb3J5
U3RvcmFnZVt0aGlzLl9kYk5hbWVdKS50b2Rvcyk7CiAgICAgfTsKIAogICAgIC8qKgogICAgICAq
IFdpbGwgc2F2ZSB0aGUgZ2l2ZW4gZGF0YSB0byB0aGUgREIuIElmIG5vIGl0ZW0gZXhpc3RzIGl0
IHdpbGwgY3JlYXRlIGEgbmV3CiAgICAgICogaXRlbSwgb3RoZXJ3aXNlIGl0J2xsIHNpbXBseSB1
cGRhdGUgYW4gZXhpc3RpbmcgaXRlbSdzIHByb3BlcnRpZXMKICAgICAgKgotICAgICAqIEBwYXJh
bSB7bnVtYmVyfSBpZCBBbiBvcHRpb25hbCBwYXJhbSB0byBlbnRlciBhbiBJRCBvZiBhbiBpdGVt
IHRvIHVwZGF0ZQotICAgICAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhIFRoZSBkYXRhIHRvIHNhdmUg
YmFjayBpbnRvIHRoZSBEQgorICAgICAqIEBwYXJhbSB7b2JqZWN0fSB1cGRhdGVEYXRhIFRoZSBk
YXRhIHRvIHNhdmUgYmFjayBpbnRvIHRoZSBEQgogICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNh
bGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIGFmdGVyIHNhdmluZworICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBpZCBBbiBvcHRpb25hbCBwYXJhbSB0byBlbnRlciBhbiBJRCBvZiBhbiBpdGVtIHRv
IHVwZGF0ZQogICAgICAqLwotICAgIFN0b3JlLnByb3RvdHlwZS5zYXZlID0gZnVuY3Rpb24gKGlk
LCB1cGRhdGVEYXRhLCBjYWxsYmFjaykgewotICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShsb2Nh
bFN0b3JhZ2VbdGhpcy5fZGJOYW1lXSk7Ci0gICAgdmFyIHRvZG9zID0gZGF0YS50b2RvczsKLQot
ICAgIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24gKCkge307Ci0KLSAgICAvLyBJZiBh
biBJRCB3YXMgYWN0dWFsbHkgZ2l2ZW4sIGZpbmQgdGhlIGl0ZW0gYW5kIHVwZGF0ZSBlYWNoIHBy
b3BlcnR5Ci0gICAgaWYgKHR5cGVvZiBpZCAhPT0gJ29iamVjdCcpIHsKLSAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHRvZG9zLmxlbmd0aDsgaSsrKSB7Ci0gICAgaWYgKHRvZG9zW2ldLmlkID09IGlk
KSB7Ci0gICAgZm9yICh2YXIgeCBpbiB1cGRhdGVEYXRhKSB7Ci0gICAgdG9kb3NbaV1beF0gPSB1
cGRhdGVEYXRhW3hdOwotICAgIH0KLSAgICB9Ci0gICAgfQotCi0gICAgbG9jYWxTdG9yYWdlW3Ro
aXMuX2RiTmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKTsKLSAgICBjYWxsYmFjay5jYWxsKHRo
aXMsIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlW3RoaXMuX2RiTmFtZV0pLnRvZG9zKTsKLSAgICB9
IGVsc2UgewotICAgIGNhbGxiYWNrID0gdXBkYXRlRGF0YTsKLQotICAgIHVwZGF0ZURhdGEgPSBp
ZDsKLQotICAgIC8vIEdlbmVyYXRlIGFuIElECi0gICAgdXBkYXRlRGF0YS5pZCA9IG5ldyBEYXRl
KCkuZ2V0VGltZSgpOwotCi0gICAgdG9kb3MucHVzaCh1cGRhdGVEYXRhKTsKLSAgICBsb2NhbFN0
b3JhZ2VbdGhpcy5fZGJOYW1lXSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpOwotICAgIGNhbGxiYWNr
LmNhbGwodGhpcywgW3VwZGF0ZURhdGFdKTsKLSAgICB9CisgICAgU3RvcmUucHJvdG90eXBlLnNh
dmUgPSBmdW5jdGlvbiAodXBkYXRlRGF0YSwgY2FsbGJhY2ssIGlkKSB7CisgICAgICAgIHZhciBk
YXRhID0gSlNPTi5wYXJzZShNZW1vcnlTdG9yYWdlW3RoaXMuX2RiTmFtZV0pOworICAgICAgICB2
YXIgdG9kb3MgPSBkYXRhLnRvZG9zOworCisgICAgICAgIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwg
ZnVuY3Rpb24gKCkge307CisKKyAgICAgICAgLy8gSWYgYW4gSUQgd2FzIGFjdHVhbGx5IGdpdmVu
LCBmaW5kIHRoZSBpdGVtIGFuZCB1cGRhdGUgZWFjaCBwcm9wZXJ0eQorICAgICAgICBpZiAoaWQp
IHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9kb3MubGVuZ3RoOyBpKyspIHsK
KyAgICAgICAgICAgICAgICBpZiAodG9kb3NbaV0uaWQgPT09IGlkKSB7CisgICAgICAgICAgICAg
ICAgICAgIGZvciAodmFyIGtleSBpbiB1cGRhdGVEYXRhKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICB0b2Rvc1tpXVtrZXldID0gdXBkYXRlRGF0YVtrZXldOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgTWVtb3J5U3RvcmFnZVt0aGlzLl9kYk5hbWVdID0gSlNP
Ti5zdHJpbmdpZnkoZGF0YSk7CisgICAgICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXMsIHRvZG9z
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEdlbmVyYXRlIGFuIElECisgICAg
ICAgICAgICB1cGRhdGVEYXRhLmlkID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7CisKKyAgICAgICAg
ICAgIHRvZG9zLnB1c2godXBkYXRlRGF0YSk7CisgICAgICAgICAgICBNZW1vcnlTdG9yYWdlW3Ro
aXMuX2RiTmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKTsKKyAgICAgICAgICAgIGNhbGxiYWNr
LmNhbGwodGhpcywgW3VwZGF0ZURhdGFdKTsKKyAgICAgICAgfQogICAgIH07CiAKICAgICAvKioK
QEAgLTExNSwxOCArMTExLDE4IEBACiAgICAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sg
VGhlIGNhbGxiYWNrIHRvIGZpcmUgYWZ0ZXIgc2F2aW5nCiAgICAgICovCiAgICAgU3RvcmUucHJv
dG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChpZCwgY2FsbGJhY2spIHsKLSAgICB2YXIgZGF0YSA9
IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlW3RoaXMuX2RiTmFtZV0pOwotICAgIHZhciB0b2RvcyA9
IGRhdGEudG9kb3M7Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRvZG9zLmxlbmd0aDsgaSsr
KSB7Ci0gICAgaWYgKHRvZG9zW2ldLmlkID09IGlkKSB7Ci0gICAgdG9kb3Muc3BsaWNlKGksIDEp
OwotICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0KLSAgICBsb2NhbFN0b3JhZ2VbdGhpcy5fZGJO
YW1lXSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpOwotICAgIGNhbGxiYWNrLmNhbGwodGhpcywgSlNP
Ti5wYXJzZShsb2NhbFN0b3JhZ2VbdGhpcy5fZGJOYW1lXSkudG9kb3MpOworICAgICAgICB2YXIg
ZGF0YSA9IEpTT04ucGFyc2UoTWVtb3J5U3RvcmFnZVt0aGlzLl9kYk5hbWVdKTsKKyAgICAgICAg
dmFyIHRvZG9zID0gZGF0YS50b2RvczsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRv
ZG9zLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAodG9kb3NbaV0uaWQgPT0gaWQpIHsK
KyAgICAgICAgICAgICAgICB0b2Rvcy5zcGxpY2UoaSwgMSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBNZW1vcnlTdG9yYWdlW3Ro
aXMuX2RiTmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKTsKKyAgICAgICAgY2FsbGJhY2suY2Fs
bCh0aGlzLCB0b2Rvcyk7CiAgICAgfTsKIAogICAgIC8qKgpAQCAtMTM1LDEwICsxMzEsMTIgQEAK
ICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSBh
ZnRlciBkcm9wcGluZyB0aGUgZGF0YQogICAgICAqLwogICAgIFN0b3JlLnByb3RvdHlwZS5kcm9w
ID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7Ci0gICAgbG9jYWxTdG9yYWdlW3RoaXMuX2RiTmFtZV0g
PSBKU09OLnN0cmluZ2lmeSh7dG9kb3M6IFtdfSk7Ci0gICAgY2FsbGJhY2suY2FsbCh0aGlzLCBK
U09OLnBhcnNlKGxvY2FsU3RvcmFnZVt0aGlzLl9kYk5hbWVdKS50b2Rvcyk7CisgICAgICAgIHZh
ciBkYXRhID0ge3RvZG9zOiBbXX07CisgICAgICAgIE1lbW9yeVN0b3JhZ2VbdGhpcy5fZGJOYW1l
XSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpOworICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXMsIGRh
dGEudG9kb3MpOwogICAgIH07CiAKICAgICAvLyBFeHBvcnQgdG8gd2luZG93CisgICAgd2luZG93
LmFwcCA9IHdpbmRvdy5hcHAgfHwge307CiAgICAgd2luZG93LmFwcC5TdG9yZSA9IFN0b3JlOwog
fSkod2luZG93KTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvdGVtcGxhdGUuanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEt
ZXhhbXBsZXMvdmFuaWxsYWpzL2pzL3RlbXBsYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzNzI0YzY1Mjk1
MmI1NTdiYjYyMWNhMGJhMGRiYTA1ZmQ1Zjk4MDAKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMv
dmFuaWxsYWpzL2pzL3RlbXBsYXRlLmpzCkBAIC0wLDAgKzEsMTE0IEBACisvKmpzaGludCBsYXhi
cmVhazp0cnVlICovCisoZnVuY3Rpb24gKHdpbmRvdykgeworICAgICd1c2Ugc3RyaWN0JzsKKwor
ICAgIHZhciBodG1sRXNjYXBlcyA9IHsKKyAgICAgICAgJyYnOiAnJmFtcDsnLAorICAgICAgICAn
PCc6ICcmbHQ7JywKKyAgICAgICAgJz4nOiAnJmd0OycsCisgICAgICAgICciJzogJyZxdW90Oycs
CisgICAgICAgICdcJyc6ICcmI3gyNzsnLAorICAgICAgICAnYCc6ICcmI3g2MDsnCisgICAgfTsK
KworICAgIHZhciBlc2NhcGVIdG1sQ2hhciA9IGZ1bmN0aW9uIChjaHIpIHsKKyAgICAgICAgcmV0
dXJuIGh0bWxFc2NhcGVzW2Nocl07CisgICAgfTsKKworICAgIHZhciByZVVuZXNjYXBlZEh0bWwg
PSAvWyY8PiInYF0vZzsKKyAgICB2YXIgcmVIYXNVbmVzY2FwZWRIdG1sID0gbmV3IFJlZ0V4cChy
ZVVuZXNjYXBlZEh0bWwuc291cmNlKTsKKworICAgIHZhciBlc2NhcGUgPSBmdW5jdGlvbiAoc3Ry
aW5nKSB7CisgICAgICAgIHJldHVybiAoc3RyaW5nICYmIHJlSGFzVW5lc2NhcGVkSHRtbC50ZXN0
KHN0cmluZykpCisgICAgICAgICAgICA/IHN0cmluZy5yZXBsYWNlKHJlVW5lc2NhcGVkSHRtbCwg
ZXNjYXBlSHRtbENoYXIpCisgICAgICAgICAgICA6IHN0cmluZzsKKyAgICB9OworCisgICAgLyoq
CisgICAgICogU2V0cyB1cCBkZWZhdWx0cyBmb3IgYWxsIHRoZSBUZW1wbGF0ZSBtZXRob2RzIHN1
Y2ggYXMgYSBkZWZhdWx0IHRlbXBsYXRlCisgICAgICoKKyAgICAgKiBAY29uc3RydWN0b3IKKyAg
ICAgKi8KKyAgICBmdW5jdGlvbiBUZW1wbGF0ZSgpIHsKKyAgICAgICAgdGhpcy5kZWZhdWx0VGVt
cGxhdGUKKyAgICAgICAgPSAgICAnPGxpIGRhdGEtaWQ9Int7aWR9fSIgY2xhc3M9Int7Y29tcGxl
dGVkfX0iPicKKyAgICAgICAgKyAgICAgICAgJzxkaXYgY2xhc3M9InZpZXciPicKKyAgICAgICAg
KyAgICAgICAgICAgICc8aW5wdXQgY2xhc3M9InRvZ2dsZSIgdHlwZT0iY2hlY2tib3giIHt7Y2hl
Y2tlZH19PicKKyAgICAgICAgKyAgICAgICAgICAgICc8bGFiZWw+e3t0aXRsZX19PC9sYWJlbD4n
CisgICAgICAgICsgICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iZGVzdHJveSI+PC9idXR0b24+
JworICAgICAgICArICAgICAgICAnPC9kaXY+JworICAgICAgICArICAgICc8L2xpPic7CisgICAg
fQorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhbiA8bGk+IEhUTUwgc3RyaW5nIGFuZCByZXR1
cm5zIGl0IGZvciBwbGFjZW1lbnQgaW4geW91ciBhcHAuCisgICAgICoKKyAgICAgKiBOT1RFOiBJ
biByZWFsIGxpZmUgeW91IHNob3VsZCBiZSB1c2luZyBhIHRlbXBsYXRpbmcgZW5naW5lIHN1Y2gg
YXMgTXVzdGFjaGUKKyAgICAgKiBvciBIYW5kbGViYXJzLCBob3dldmVyLCB0aGlzIGlzIGEgdmFu
aWxsYSBKUyBleGFtcGxlLgorICAgICAqCisgICAgICogQHBhcmFtIHtvYmplY3R9IGRhdGEgVGhl
IG9iamVjdCBjb250YWluaW5nIGtleXMgeW91IHdhbnQgdG8gZmluZCBpbiB0aGUKKyAgICAgKiAg
ICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZSB0byByZXBsYWNlLgorICAgICAqIEByZXR1cm5z
IHtzdHJpbmd9IEhUTUwgU3RyaW5nIG9mIGFuIDxsaT4gZWxlbWVudAorICAgICAqCisgICAgICog
QGV4YW1wbGUKKyAgICAgKiB2aWV3LnNob3coeworICAgICAqICAgIGlkOiAxLAorICAgICAqICAg
IHRpdGxlOiAiSGVsbG8gV29ybGQiLAorICAgICAqICAgIGNvbXBsZXRlZDogMCwKKyAgICAgKiB9
KTsKKyAgICAgKi8KKyAgICBUZW1wbGF0ZS5wcm90b3R5cGUuc2hvdyA9IGZ1bmN0aW9uIChkYXRh
KSB7CisgICAgICAgIHZhciBpLCBsOworICAgICAgICB2YXIgdmlldyA9ICcnOworCisgICAgICAg
IGZvciAoaSA9IDAsIGwgPSBkYXRhLmxlbmd0aDsgaSA8IGw7IGkrKykgeworICAgICAgICAgICAg
dmFyIHRlbXBsYXRlID0gdGhpcy5kZWZhdWx0VGVtcGxhdGU7CisgICAgICAgICAgICB2YXIgY29t
cGxldGVkID0gJyc7CisgICAgICAgICAgICB2YXIgY2hlY2tlZCA9ICcnOworCisgICAgICAgICAg
ICBpZiAoZGF0YVtpXS5jb21wbGV0ZWQpIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0ZWQgPSAn
Y29tcGxldGVkJzsKKyAgICAgICAgICAgICAgICBjaGVja2VkID0gJ2NoZWNrZWQnOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7aWR9
fScsIGRhdGFbaV0uaWQpOworICAgICAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNl
KCd7e3RpdGxlfX0nLCBlc2NhcGUoZGF0YVtpXS50aXRsZSkpOworICAgICAgICAgICAgdGVtcGxh
dGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKCd7e2NvbXBsZXRlZH19JywgY29tcGxldGVkKTsKKyAgICAg
ICAgICAgIHRlbXBsYXRlID0gdGVtcGxhdGUucmVwbGFjZSgne3tjaGVja2VkfX0nLCBjaGVja2Vk
KTsKKworICAgICAgICAgICAgdmlldyA9IHZpZXcgKyB0ZW1wbGF0ZTsKKyAgICAgICAgfQorCisg
ICAgICAgIHJldHVybiB2aWV3OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBEaXNwbGF5cyBh
IGNvdW50ZXIgb2YgaG93IG1hbnkgdG8gZG9zIGFyZSBsZWZ0IHRvIGNvbXBsZXRlCisgICAgICoK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gYWN0aXZlVG9kb3MgVGhlIG51bWJlciBvZiBhY3RpdmUg
dG9kb3MuCisgICAgICogQHJldHVybnMge3N0cmluZ30gU3RyaW5nIGNvbnRhaW5pbmcgdGhlIGNv
dW50CisgICAgICovCisgICAgVGVtcGxhdGUucHJvdG90eXBlLml0ZW1Db3VudGVyID0gZnVuY3Rp
b24gKGFjdGl2ZVRvZG9zKSB7CisgICAgICAgIHZhciBwbHVyYWwgPSBhY3RpdmVUb2RvcyA9PT0g
MSA/ICcnIDogJ3MnOworCisgICAgICAgIHJldHVybiAnPHN0cm9uZz4nICsgYWN0aXZlVG9kb3Mg
KyAnPC9zdHJvbmc+IGl0ZW0nICsgcGx1cmFsICsgJyBsZWZ0JzsKKyAgICB9OworCisgICAgLyoq
CisgICAgICogVXBkYXRlcyB0aGUgdGV4dCB3aXRoaW4gdGhlICJDbGVhciBjb21wbGV0ZWQiIGJ1
dHRvbgorICAgICAqCisgICAgICogQHBhcmFtICB7W3R5cGVdfSBjb21wbGV0ZWRUb2RvcyBUaGUg
bnVtYmVyIG9mIGNvbXBsZXRlZCB0b2Rvcy4KKyAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBTdHJp
bmcgY29udGFpbmluZyB0aGUgY291bnQKKyAgICAgKi8KKyAgICBUZW1wbGF0ZS5wcm90b3R5cGUu
Y2xlYXJDb21wbGV0ZWRCdXR0b24gPSBmdW5jdGlvbiAoY29tcGxldGVkVG9kb3MpIHsKKyAgICAg
ICAgaWYgKGNvbXBsZXRlZFRvZG9zID4gMCkgeworICAgICAgICAgICAgcmV0dXJuICdDbGVhciBj
b21wbGV0ZWQnOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuICcnOworICAg
ICAgICB9CisgICAgfTsKKworICAgIC8vIEV4cG9ydCB0byB3aW5kb3cKKyAgICB3aW5kb3cuYXBw
ID0gd2luZG93LmFwcCB8fCB7fTsKKyAgICB3aW5kb3cuYXBwLlRlbXBsYXRlID0gVGVtcGxhdGU7
Cit9KSh3aW5kb3cpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy92aWV3LmpzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4
YW1wbGVzL3ZhbmlsbGFqcy9qcy92aWV3LmpzCmluZGV4IGQ4MmIwOTgyN2ZmNDQzYTA2NDY4ZTUz
NWIyYTRjM2NiYjMzNDMxYTIuLjY4ZGU4MzA1MTM2ZDE4YzkwYmQ2MGE2N2RiYjVmNTQzNWE3MTEy
ZGIgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvdmlldy5qcworKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMv
dmFuaWxsYWpzL2pzL3ZpZXcuanMKQEAgLTEsOTEgKzEsMjE5IEBACi0vKmpzaGludCBsYXhicmVh
azp0cnVlICovCisvKmdsb2JhbCBxcywgcXNhLCAkb24sICRwYXJlbnQsICRkZWxlZ2F0ZSAqLwor
CiAoZnVuY3Rpb24gKHdpbmRvdykgewogICAgICd1c2Ugc3RyaWN0JzsKIAogICAgIC8qKgotICAg
ICAqIFNldHMgdXAgZGVmYXVsdHMgZm9yIGFsbCB0aGUgVmlldyBtZXRob2RzIHN1Y2ggYXMgYSBk
ZWZhdWx0IHRlbXBsYXRlCi0gICAgICoKLSAgICAgKiBAY29uc3RydWN0b3IKLSAgICAgKi8KLSAg
ICBmdW5jdGlvbiBWaWV3KCkgewotICAgIHRoaXMuZGVmYXVsdFRlbXBsYXRlCi0gICAgPSAgICAn
PGxpIGRhdGEtaWQ9Int7aWR9fSIgY2xhc3M9Int7Y29tcGxldGVkfX0iPicKLSAgICArICAgICAg
ICAnPGRpdiBjbGFzcz0idmlldyI+JwotICAgICsgICAgICAgICAgICAnPGlucHV0IGNsYXNzPSJ0
b2dnbGUiIHR5cGU9ImNoZWNrYm94IiB7e2NoZWNrZWR9fT4nCi0gICAgKyAgICAgICAgICAgICc8
bGFiZWw+e3t0aXRsZX19PC9sYWJlbD4nCi0gICAgKyAgICAgICAgICAgICc8YnV0dG9uIGNsYXNz
PSJkZXN0cm95Ij48L2J1dHRvbj4nCi0gICAgKyAgICAgICAgJzwvZGl2PicKLSAgICArICAgICc8
L2xpPic7Ci0gICAgfQorICAgICAgICAgKiBWaWV3IHRoYXQgYWJzdHJhY3RzIGF3YXkgdGhlIGJy
b3dzZXIncyBET00gY29tcGxldGVseS4KKyAgICAgICAgICogSXQgaGFzIHR3byBzaW1wbGUgZW50
cnkgcG9pbnRzOgorICAgICAgICAgKgorICAgICAgICAgKiAgIC0gYmluZChldmVudE5hbWUsIGhh
bmRsZXIpCisgICAgICAgICAqICAgICBUYWtlcyBhIHRvZG8gYXBwbGljYXRpb24gZXZlbnQgYW5k
IHJlZ2lzdGVycyB0aGUgaGFuZGxlcgorICAgICAgICAgKiAgIC0gcmVuZGVyKGNvbW1hbmQsIHBh
cmFtZXRlck9iamVjdCkKKyAgICAgICAgICogICAgIFJlbmRlcnMgdGhlIGdpdmVuIGNvbW1hbmQg
d2l0aCB0aGUgb3B0aW9ucworICAgICAgICAgKi8KKyAgICBmdW5jdGlvbiBWaWV3KHRlbXBsYXRl
KSB7CisgICAgICAgIHRoaXMudGVtcGxhdGUgPSB0ZW1wbGF0ZTsKIAotICAgIC8qKgotICAgICAq
IENyZWF0ZXMgYW4gPGxpPiBIVE1MIHN0cmluZyBhbmQgcmV0dXJucyBpdCBmb3IgcGxhY2VtZW50
IGluIHlvdXIgYXBwLgotICAgICAqCi0gICAgICogTk9URTogSW4gcmVhbCBsaWZlIHlvdSBzaG91
bGQgYmUgdXNpbmcgYSB0ZW1wbGF0aW5nIGVuZ2luZSBzdWNoIGFzIE11c3RhY2hlCi0gICAgICog
b3IgSGFuZGxlYmFycywgaG93ZXZlciwgdGhpcyBpcyBhIHZhbmlsbGEgSlMgZXhhbXBsZS4KLSAg
ICAgKgotICAgICAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhIFRoZSBvYmplY3QgY29udGFpbmluZyBr
ZXlzIHlvdSB3YW50IHRvIGZpbmQgaW4gdGhlCi0gICAgICogICAgICAgICAgICAgICAgICAgICAg
dGVtcGxhdGUgdG8gcmVwbGFjZS4KLSAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBIVE1MIFN0cmlu
ZyBvZiBhbiA8bGk+IGVsZW1lbnQKLSAgICAgKgotICAgICAqIEBleGFtcGxlCi0gICAgICogdmll
dy5zaG93KHsKLSAgICAgKiAgICBpZDogMSwKLSAgICAgKiAgICB0aXRsZTogIkhlbGxvIFdvcmxk
IiwKLSAgICAgKiAgICBjb21wbGV0ZWQ6IDAsCi0gICAgICogfSk7Ci0gICAgICovCi0gICAgVmll
dy5wcm90b3R5cGUuc2hvdyA9IGZ1bmN0aW9uIChkYXRhKSB7Ci0gICAgdmFyIGksIGw7Ci0gICAg
dmFyIHZpZXcgPSAnJzsKLQotICAgIGZvciAoaSA9IDAsIGwgPSBkYXRhLmxlbmd0aDsgaSA8IGw7
IGkrKykgewotICAgIHZhciB0ZW1wbGF0ZSA9IHRoaXMuZGVmYXVsdFRlbXBsYXRlOwotICAgIHZh
ciBjb21wbGV0ZWQgPSAnJzsKLSAgICB2YXIgY2hlY2tlZCA9ICcnOwotCi0gICAgaWYgKGRhdGFb
aV0uY29tcGxldGVkID09PSAxKSB7Ci0gICAgY29tcGxldGVkID0gJ2NvbXBsZXRlZCc7Ci0gICAg
Y2hlY2tlZCA9ICdjaGVja2VkJzsKKyAgICAgICAgdGhpcy5FTlRFUl9LRVkgPSAxMzsKKyAgICAg
ICAgdGhpcy5FU0NBUEVfS0VZID0gMjc7CisKKyAgICAgICAgdGhpcy4kdG9kb0xpc3QgPSBxcygn
LnRvZG8tbGlzdCcpOworICAgICAgICB0aGlzLiR0b2RvSXRlbUNvdW50ZXIgPSBxcygnLnRvZG8t
Y291bnQnKTsKKyAgICAgICAgdGhpcy4kY2xlYXJDb21wbGV0ZWQgPSBxcygnLmNsZWFyLWNvbXBs
ZXRlZCcpOworICAgICAgICB0aGlzLiRtYWluID0gcXMoJy5tYWluJyk7CisgICAgICAgIHRoaXMu
JGZvb3RlciA9IHFzKCcuZm9vdGVyJyk7CisgICAgICAgIHRoaXMuJHRvZ2dsZUFsbCA9IHFzKCcu
dG9nZ2xlLWFsbCcpOworICAgICAgICB0aGlzLiRuZXdUb2RvID0gcXMoJy5uZXctdG9kbycpOwog
ICAgIH0KIAotICAgIHRlbXBsYXRlID0gdGVtcGxhdGUucmVwbGFjZSgne3tpZH19JywgZGF0YVtp
XS5pZCk7Ci0gICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKCd7e3RpdGxlfX0nLCBkYXRh
W2ldLnRpdGxlKTsKLSAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7Y29tcGxldGVk
fX0nLCBjb21wbGV0ZWQpOwotICAgIHRlbXBsYXRlID0gdGVtcGxhdGUucmVwbGFjZSgne3tjaGVj
a2VkfX0nLCBjaGVja2VkKTsKKyAgICBWaWV3LnByb3RvdHlwZS5fcmVtb3ZlSXRlbSA9IGZ1bmN0
aW9uIChpZCkgeworICAgICAgICB2YXIgZWxlbSA9IHFzKCdbZGF0YS1pZD0iJyArIGlkICsgJyJd
Jyk7CiAKLSAgICB2aWV3ID0gdmlldyArIHRlbXBsYXRlOwotICAgIH0KKyAgICAgICAgaWYgKGVs
ZW0pIHsKKyAgICAgICAgICAgIHRoaXMuJHRvZG9MaXN0LnJlbW92ZUNoaWxkKGVsZW0pOworICAg
ICAgICB9CisgICAgfTsKIAotICAgIHJldHVybiB2aWV3OworICAgIFZpZXcucHJvdG90eXBlLl9j
bGVhckNvbXBsZXRlZEJ1dHRvbiA9IGZ1bmN0aW9uIChjb21wbGV0ZWRDb3VudCwgdmlzaWJsZSkg
eworICAgICAgICB0aGlzLiRjbGVhckNvbXBsZXRlZC5pbm5lckhUTUwgPSB0aGlzLnRlbXBsYXRl
LmNsZWFyQ29tcGxldGVkQnV0dG9uKGNvbXBsZXRlZENvdW50KTsKKyAgICAgICAgdGhpcy4kY2xl
YXJDb21wbGV0ZWQuc3R5bGUuZGlzcGxheSA9IHZpc2libGUgPyAnYmxvY2snIDogJ25vbmUnOwog
ICAgIH07CiAKLSAgICAvKioKLSAgICAgKiBEaXNwbGF5cyBhIGNvdW50ZXIgb2YgaG93IG1hbnkg
dG8gZG9zIGFyZSBsZWZ0IHRvIGNvbXBsZXRlCi0gICAgICoKLSAgICAgKiBAcGFyYW0ge251bWJl
cn0gYWN0aXZlVG9kb3MgVGhlIG51bWJlciBvZiBhY3RpdmUgdG9kb3MuCi0gICAgICogQHJldHVy
bnMge3N0cmluZ30gU3RyaW5nIGNvbnRhaW5pbmcgdGhlIGNvdW50Ci0gICAgICovCi0gICAgVmll
dy5wcm90b3R5cGUuaXRlbUNvdW50ZXIgPSBmdW5jdGlvbiAoYWN0aXZlVG9kb3MpIHsKLSAgICB2
YXIgcGx1cmFsID0gYWN0aXZlVG9kb3MgPT09IDEgPyAnJyA6ICdzJzsKLQotICAgIHJldHVybiAn
PHN0cm9uZz4nICsgYWN0aXZlVG9kb3MgKyAnPC9zdHJvbmc+IGl0ZW0nICsgcGx1cmFsICsgJyBs
ZWZ0JzsKKyAgICBWaWV3LnByb3RvdHlwZS5fc2V0RmlsdGVyID0gZnVuY3Rpb24gKGN1cnJlbnRQ
YWdlKSB7CisgICAgICAgIHFzKCcuZmlsdGVycyAuc2VsZWN0ZWQnKS5jbGFzc05hbWUgPSAnJzsK
KyAgICAgICAgcXMoJy5maWx0ZXJzIFtocmVmPSIjLycgKyBjdXJyZW50UGFnZSArICciXScpLmNs
YXNzTmFtZSA9ICdzZWxlY3RlZCc7CiAgICAgfTsKIAotICAgIC8qKgotICAgICAqIFVwZGF0ZXMg
dGhlIHRleHQgd2l0aGluIHRoZSAiQ2xlYXIgY29tcGxldGVkIiBidXR0b24KLSAgICAgKgotICAg
ICAqIEBwYXJhbSAge1t0eXBlXX0gY29tcGxldGVkVG9kb3MgVGhlIG51bWJlciBvZiBjb21wbGV0
ZWQgdG9kb3MuCi0gICAgICogQHJldHVybnMge3N0cmluZ30gU3RyaW5nIGNvbnRhaW5pbmcgdGhl
IGNvdW50Ci0gICAgICovCi0gICAgVmlldy5wcm90b3R5cGUuY2xlYXJDb21wbGV0ZWRCdXR0b24g
PSBmdW5jdGlvbiAoY29tcGxldGVkVG9kb3MpIHsKLSAgICBpZiAoY29tcGxldGVkVG9kb3MgPiAw
KSB7Ci0gICAgcmV0dXJuICdDbGVhciBjb21wbGV0ZWQgKCcgKyBjb21wbGV0ZWRUb2RvcyArICcp
JzsKLSAgICB9IGVsc2UgewotICAgIHJldHVybiAnJzsKLSAgICB9CisgICAgVmlldy5wcm90b3R5
cGUuX2VsZW1lbnRDb21wbGV0ZSA9IGZ1bmN0aW9uIChpZCwgY29tcGxldGVkKSB7CisgICAgICAg
IHZhciBsaXN0SXRlbSA9IHFzKCdbZGF0YS1pZD0iJyArIGlkICsgJyJdJyk7CisKKyAgICAgICAg
aWYgKCFsaXN0SXRlbSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgbGlzdEl0ZW0uY2xhc3NOYW1lID0gY29tcGxldGVkID8gJ2NvbXBsZXRlZCcgOiAnJzsKKwor
ICAgICAgICAvLyBJbiBjYXNlIGl0IHdhcyB0b2dnbGVkIGZyb20gYW4gZXZlbnQgYW5kIG5vdCBi
eSBjbGlja2luZyB0aGUgY2hlY2tib3gKKyAgICAgICAgcXMoJ2lucHV0JywgbGlzdEl0ZW0pLmNo
ZWNrZWQgPSBjb21wbGV0ZWQ7CisgICAgfTsKKworICAgIFZpZXcucHJvdG90eXBlLl9lZGl0SXRl
bSA9IGZ1bmN0aW9uIChpZCwgdGl0bGUpIHsKKyAgICAgICAgdmFyIGxpc3RJdGVtID0gcXMoJ1tk
YXRhLWlkPSInICsgaWQgKyAnIl0nKTsKKworICAgICAgICBpZiAoIWxpc3RJdGVtKSB7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBsaXN0SXRlbS5jbGFzc05hbWUg
PSBsaXN0SXRlbS5jbGFzc05hbWUgKyAnIGVkaXRpbmcnOworCisgICAgICAgIHZhciBpbnB1dCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CisgICAgICAgIGlucHV0LmNsYXNzTmFt
ZSA9ICdlZGl0JzsKKworICAgICAgICBsaXN0SXRlbS5hcHBlbmRDaGlsZChpbnB1dCk7CisgICAg
ICAgIGlucHV0LmZvY3VzKCk7CisgICAgICAgIGlucHV0LnZhbHVlID0gdGl0bGU7CisgICAgfTsK
KworICAgIFZpZXcucHJvdG90eXBlLl9lZGl0SXRlbURvbmUgPSBmdW5jdGlvbiAoaWQsIHRpdGxl
KSB7CisgICAgICAgIHZhciBsaXN0SXRlbSA9IHFzKCdbZGF0YS1pZD0iJyArIGlkICsgJyJdJyk7
CisKKyAgICAgICAgaWYgKCFsaXN0SXRlbSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgdmFyIGlucHV0ID0gcXMoJ2lucHV0LmVkaXQnLCBsaXN0SXRlbSk7Cisg
ICAgICAgIGxpc3RJdGVtLnJlbW92ZUNoaWxkKGlucHV0KTsKKworICAgICAgICBsaXN0SXRlbS5j
bGFzc05hbWUgPSBsaXN0SXRlbS5jbGFzc05hbWUucmVwbGFjZSgnZWRpdGluZycsICcnKTsKKwor
ICAgICAgICBxc2EoJ2xhYmVsJywgbGlzdEl0ZW0pLmZvckVhY2goZnVuY3Rpb24gKGxhYmVsKSB7
CisgICAgICAgICAgICBsYWJlbC50ZXh0Q29udGVudCA9IHRpdGxlOworICAgICAgICB9KTsKKyAg
ICB9OworCisgICAgVmlldy5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKHZpZXdDbWQsIHBh
cmFtZXRlcikgeworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgIHZhciB2aWV3Q29t
bWFuZHMgPSB7CisgICAgICAgICAgICBzaG93RW50cmllczogZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgIHNlbGYuJHRvZG9MaXN0LmlubmVySFRNTCA9IHNlbGYudGVtcGxhdGUuc2hvdyhw
YXJhbWV0ZXIpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHJlbW92ZUl0ZW06IGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICBzZWxmLl9yZW1vdmVJdGVtKHBhcmFtZXRlcik7Cisg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgdXBkYXRlRWxlbWVudENvdW50OiBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgc2VsZi4kdG9kb0l0ZW1Db3VudGVyLmlubmVySFRNTCA9IHNl
bGYudGVtcGxhdGUuaXRlbUNvdW50ZXIocGFyYW1ldGVyKTsKKyAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICBjbGVhckNvbXBsZXRlZEJ1dHRvbjogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgIHNlbGYuX2NsZWFyQ29tcGxldGVkQnV0dG9uKHBhcmFtZXRlci5jb21wbGV0ZWQsIHBhcmFt
ZXRlci52aXNpYmxlKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBjb250ZW50QmxvY2tW
aXNpYmlsaXR5OiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgc2VsZi4kbWFpbi5zdHls
ZS5kaXNwbGF5ID0gc2VsZi4kZm9vdGVyLnN0eWxlLmRpc3BsYXkgPSBwYXJhbWV0ZXIudmlzaWJs
ZSA/ICdibG9jaycgOiAnbm9uZSc7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgdG9nZ2xl
QWxsOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgc2VsZi4kdG9nZ2xlQWxsLmNoZWNr
ZWQgPSBwYXJhbWV0ZXIuY2hlY2tlZDsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBzZXRG
aWx0ZXI6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBzZWxmLl9zZXRGaWx0ZXIocGFy
YW1ldGVyKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBjbGVhck5ld1RvZG86IGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICBzZWxmLiRuZXdUb2RvLnZhbHVlID0gJyc7CisgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgZWxlbWVudENvbXBsZXRlOiBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgc2VsZi5fZWxlbWVudENvbXBsZXRlKHBhcmFtZXRlci5pZCwgcGFyYW1l
dGVyLmNvbXBsZXRlZCk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZWRpdEl0ZW06IGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBzZWxmLl9lZGl0SXRlbShwYXJhbWV0ZXIuaWQs
IHBhcmFtZXRlci50aXRsZSk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZWRpdEl0ZW1E
b25lOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgc2VsZi5fZWRpdEl0ZW1Eb25lKHBh
cmFtZXRlci5pZCwgcGFyYW1ldGVyLnRpdGxlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsK
KworICAgICAgICB2aWV3Q29tbWFuZHNbdmlld0NtZF0oKTsKKyAgICB9OworCisgICAgVmlldy5w
cm90b3R5cGUuX2l0ZW1JZCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgIHZhciBsaSA9
ICRwYXJlbnQoZWxlbWVudCwgJ2xpJyk7CisgICAgICAgIHJldHVybiBwYXJzZUludChsaS5kYXRh
c2V0LmlkLCAxMCk7CisgICAgfTsKKworICAgIFZpZXcucHJvdG90eXBlLl9iaW5kSXRlbUVkaXRE
b25lID0gZnVuY3Rpb24gKGhhbmRsZXIpIHsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAg
ICAgICAkZGVsZWdhdGUoc2VsZi4kdG9kb0xpc3QsICdsaSAuZWRpdCcsICdibHVyJywgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgaWYgKCF0aGlzLmRhdGFzZXQuaXNjYW5jZWxlZCkgeworICAg
ICAgICAgICAgICAgIGhhbmRsZXIoeworICAgICAgICAgICAgICAgICAgICBpZDogc2VsZi5faXRl
bUlkKHRoaXMpLAorICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy52YWx1ZQorICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKworICAgICAgICAkZGVs
ZWdhdGUoc2VsZi4kdG9kb0xpc3QsICdsaSAuZWRpdCcsICdrZXlwcmVzcycsIGZ1bmN0aW9uIChl
dmVudCkgeworICAgICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IHNlbGYuRU5URVJfS0VZ
KSB7CisgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBjdXJzb3IgZnJvbSB0aGUgaW5wdXQg
d2hlbiB5b3UgaGl0IGVudGVyIGp1c3QgbGlrZSBpZiBpdAorICAgICAgICAgICAgICAgIC8vIHdl
cmUgYSByZWFsIGZvcm0KKyAgICAgICAgICAgICAgICB0aGlzLmJsdXIoKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSk7CisgICAgfTsKKworICAgIFZpZXcucHJvdG90eXBlLl9iaW5kSXRlbUVk
aXRDYW5jZWwgPSBmdW5jdGlvbiAoaGFuZGxlcikgeworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7
CisgICAgICAgICRkZWxlZ2F0ZShzZWxmLiR0b2RvTGlzdCwgJ2xpIC5lZGl0JywgJ2tleXVwJywg
ZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gc2Vs
Zi5FU0NBUEVfS0VZKSB7CisgICAgICAgICAgICAgICAgdGhpcy5kYXRhc2V0LmlzY2FuY2VsZWQg
PSB0cnVlOworICAgICAgICAgICAgICAgIHRoaXMuYmx1cigpOworCisgICAgICAgICAgICAgICAg
aGFuZGxlcih7aWQ6IHNlbGYuX2l0ZW1JZCh0aGlzKX0pOworICAgICAgICAgICAgfQorICAgICAg
ICB9KTsKKyAgICB9OworCisgICAgVmlldy5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChldmVu
dCwgaGFuZGxlcikgeworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgIGlmIChldmVu
dCA9PT0gJ25ld1RvZG8nKSB7CisgICAgICAgICAgICAkb24oc2VsZi4kbmV3VG9kbywgJ2NoYW5n
ZScsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVyKHNlbGYuJG5ld1RvZG8u
dmFsdWUpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgfSBlbHNlIGlmIChldmVudCA9PT0g
J3JlbW92ZUNvbXBsZXRlZCcpIHsKKyAgICAgICAgICAgICRvbihzZWxmLiRjbGVhckNvbXBsZXRl
ZCwgJ2NsaWNrJywgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGhhbmRsZXIoKTsKKyAg
ICAgICAgICAgIH0pOworCisgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICd0b2dnbGVBbGwn
KSB7CisgICAgICAgICAgICAkb24oc2VsZi4kdG9nZ2xlQWxsLCAnY2xpY2snLCBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgaGFuZGxlcih7Y29tcGxldGVkOiB0aGlzLmNoZWNrZWR9KTsK
KyAgICAgICAgICAgIH0pOworCisgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdpdGVtRWRp
dCcpIHsKKyAgICAgICAgICAgICRkZWxlZ2F0ZShzZWxmLiR0b2RvTGlzdCwgJ2xpIGxhYmVsJywg
J2RibGNsaWNrJywgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGhhbmRsZXIoe2lkOiBz
ZWxmLl9pdGVtSWQodGhpcyl9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgIH0gZWxzZSBp
ZiAoZXZlbnQgPT09ICdpdGVtUmVtb3ZlJykgeworICAgICAgICAgICAgJGRlbGVnYXRlKHNlbGYu
JHRvZG9MaXN0LCAnLmRlc3Ryb3knLCAnY2xpY2snLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgaGFuZGxlcih7aWQ6IHNlbGYuX2l0ZW1JZCh0aGlzKX0pOworICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1Ub2dnbGUnKSB7CisgICAgICAg
ICAgICAkZGVsZWdhdGUoc2VsZi4kdG9kb0xpc3QsICcudG9nZ2xlJywgJ2NsaWNrJywgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgIGhhbmRsZXIoeworICAgICAgICAgICAgICAgICAgICBp
ZDogc2VsZi5faXRlbUlkKHRoaXMpLAorICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWQ6IHRo
aXMuY2hlY2tlZAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1FZGl0RG9uZScpIHsKKyAgICAgICAgICAgIHNl
bGYuX2JpbmRJdGVtRWRpdERvbmUoaGFuZGxlcik7CisKKyAgICAgICAgfSBlbHNlIGlmIChldmVu
dCA9PT0gJ2l0ZW1FZGl0Q2FuY2VsJykgeworICAgICAgICAgICAgc2VsZi5fYmluZEl0ZW1FZGl0
Q2FuY2VsKGhhbmRsZXIpOworICAgICAgICB9CiAgICAgfTsKIAogICAgIC8vIEV4cG9ydCB0byB3
aW5kb3cKKyAgICB3aW5kb3cuYXBwID0gd2luZG93LmFwcCB8fCB7fTsKICAgICB3aW5kb3cuYXBw
LlZpZXcgPSBWaWV3OwotfSkod2luZG93KTsKK30od2luZG93KSk7CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBs
ZXMvdmFuaWxsYWpzL25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvaW5kZXguY3NzIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1w
bGVzL3ZhbmlsbGFqcy9ub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3NzL2luZGV4LmNzcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yMmFiOWUyY2FkNzY5NjZkZWI4YmU0MmU5NzdjNDMwMjQxYzQzNDc3Ci0tLSAvZGV2
L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9ub2RlX21vZHVsZXMvdG9kb212Yy1hcHAtY3Nz
L2luZGV4LmNzcwpAQCAtMCwwICsxLDM3OCBAQAoraHRtbCwKK2JvZHkgeworICAgIG1hcmdpbjog
MDsKKyAgICBwYWRkaW5nOiAwOworfQorCitidXR0b24geworICAgIG1hcmdpbjogMDsKKyAgICBw
YWRkaW5nOiAwOworICAgIGJvcmRlcjogMDsKKyAgICBiYWNrZ3JvdW5kOiBub25lOworICAgIGZv
bnQtc2l6ZTogMTAwJTsKKyAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7CisgICAgZm9udC1m
YW1pbHk6IGluaGVyaXQ7CisgICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7CisgICAgY29sb3I6IGlu
aGVyaXQ7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOworICAgIGFwcGVhcmFuY2U6IG5v
bmU7CisgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CisgICAgLW1vei1m
b250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CisgICAgZm9udC1zbW9vdGhpbmc6IGFudGlhbGlh
c2VkOworfQorCitib2R5IHsKKyAgICBmb250OiAxNHB4ICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZl
dGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7CisgICAgbGluZS1oZWlnaHQ6IDEuNGVtOworICAgIGJh
Y2tncm91bmQ6ICNmNWY1ZjU7CisgICAgY29sb3I6ICM0ZDRkNGQ7CisgICAgbWluLXdpZHRoOiAy
MzBweDsKKyAgICBtYXgtd2lkdGg6IDU1MHB4OworICAgIG1hcmdpbjogMCBhdXRvOworICAgIC13
ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOworICAgIC1tb3otZm9udC1zbW9vdGhp
bmc6IGFudGlhbGlhc2VkOworICAgIGZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKyAgICBm
b250LXdlaWdodDogMzAwOworfQorCitidXR0b24sCitpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsK
KyAgICBvdXRsaW5lOiBub25lOworfQorCisuaGlkZGVuIHsKKyAgICBkaXNwbGF5OiBub25lOwor
fQorCisudG9kb2FwcCB7CisgICAgYmFja2dyb3VuZDogI2ZmZjsKKyAgICBtYXJnaW46IDEzMHB4
IDAgNDBweCAwOworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBib3gtc2hhZG93OiAwIDJw
eCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMiksCisgICAgICAgICAgICAgICAgMCAyNXB4IDUwcHgg
MCByZ2JhKDAsIDAsIDAsIDAuMSk7Cit9CisKKy50b2RvYXBwIGlucHV0Ojotd2Via2l0LWlucHV0
LXBsYWNlaG9sZGVyIHsKKyAgICBmb250LXN0eWxlOiBpdGFsaWM7CisgICAgZm9udC13ZWlnaHQ6
IDMwMDsKKyAgICBjb2xvcjogI2U2ZTZlNjsKK30KKworLnRvZG9hcHAgaW5wdXQ6Oi1tb3otcGxh
Y2Vob2xkZXIgeworICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKKyAgICBmb250LXdlaWdodDogMzAw
OworICAgIGNvbG9yOiAjZTZlNmU2OworfQorCisudG9kb2FwcCBpbnB1dDo6aW5wdXQtcGxhY2Vo
b2xkZXIgeworICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKKyAgICBmb250LXdlaWdodDogMzAwOwor
ICAgIGNvbG9yOiAjZTZlNmU2OworfQorCisudG9kb2FwcCBoMSB7CisgICAgcG9zaXRpb246IGFi
c29sdXRlOworICAgIHRvcDogLTE1NXB4OworICAgIHdpZHRoOiAxMDAlOworICAgIGZvbnQtc2l6
ZTogMTAwcHg7CisgICAgZm9udC13ZWlnaHQ6IDEwMDsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7
CisgICAgY29sb3I6IHJnYmEoMTc1LCA0NywgNDcsIDAuMTUpOworICAgIC13ZWJraXQtdGV4dC1y
ZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKKyAgICAtbW96LXRleHQtcmVuZGVyaW5nOiBv
cHRpbWl6ZUxlZ2liaWxpdHk7CisgICAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0
eTsKK30KKworLm5ldy10b2RvLAorLmVkaXQgeworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAg
ICBtYXJnaW46IDA7CisgICAgd2lkdGg6IDEwMCU7CisgICAgZm9udC1zaXplOiAyNHB4OworICAg
IGZvbnQtZmFtaWx5OiBpbmhlcml0OworICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0OworICAgIGxp
bmUtaGVpZ2h0OiAxLjRlbTsKKyAgICBib3JkZXI6IDA7CisgICAgb3V0bGluZTogbm9uZTsKKyAg
ICBjb2xvcjogaW5oZXJpdDsKKyAgICBwYWRkaW5nOiA2cHg7CisgICAgYm9yZGVyOiAxcHggc29s
aWQgIzk5OTsKKyAgICBib3gtc2hhZG93OiBpbnNldCAwIC0xcHggNXB4IDAgcmdiYSgwLCAwLCAw
LCAwLjIpOworICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgICAgLXdlYmtpdC1mb250LXNt
b290aGluZzogYW50aWFsaWFzZWQ7CisgICAgLW1vei1mb250LXNtb290aGluZzogYW50aWFsaWFz
ZWQ7CisgICAgZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOworfQorCisubmV3LXRvZG8gewor
ICAgIHBhZGRpbmc6IDE2cHggMTZweCAxNnB4IDYwcHg7CisgICAgYm9yZGVyOiBub25lOworICAg
IGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4wMDMpOworICAgIGJveC1zaGFkb3c6IGluc2V0
IDAgLTJweCAxcHggcmdiYSgwLDAsMCwwLjAzKTsKK30KKworLm1haW4geworICAgIHBvc2l0aW9u
OiByZWxhdGl2ZTsKKyAgICB6LWluZGV4OiAyOworICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAj
ZTZlNmU2OworfQorCitsYWJlbFtmb3I9J3RvZ2dsZS1hbGwnXSB7CisgICAgZGlzcGxheTogbm9u
ZTsKK30KKworLnRvZ2dsZS1hbGwgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6
IC01NXB4OworICAgIGxlZnQ6IC0xMnB4OworICAgIHdpZHRoOiA2MHB4OworICAgIGhlaWdodDog
MzRweDsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgYm9yZGVyOiBub25lOyAvKiBNb2Jp
bGUgU2FmYXJpICovCit9CisKKy50b2dnbGUtYWxsOmJlZm9yZSB7CisgICAgY29udGVudDogJ+Kd
ryc7CisgICAgZm9udC1zaXplOiAyMnB4OworICAgIGNvbG9yOiAjZTZlNmU2OworICAgIHBhZGRp
bmc6IDEwcHggMjdweCAxMHB4IDI3cHg7Cit9CisKKy50b2dnbGUtYWxsOmNoZWNrZWQ6YmVmb3Jl
IHsKKyAgICBjb2xvcjogIzczNzM3MzsKK30KKworLnRvZG8tbGlzdCB7CisgICAgbWFyZ2luOiAw
OworICAgIHBhZGRpbmc6IDA7CisgICAgbGlzdC1zdHlsZTogbm9uZTsKK30KKworLnRvZG8tbGlz
dCBsaSB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIGZvbnQtc2l6ZTogMjRweDsKKyAg
ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VkZWRlZDsKK30KKworLnRvZG8tbGlzdCBsaTps
YXN0LWNoaWxkIHsKKyAgICBib3JkZXItYm90dG9tOiBub25lOworfQorCisudG9kby1saXN0IGxp
LmVkaXRpbmcgeworICAgIGJvcmRlci1ib3R0b206IG5vbmU7CisgICAgcGFkZGluZzogMDsKK30K
KworLnRvZG8tbGlzdCBsaS5lZGl0aW5nIC5lZGl0IHsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAg
ICB3aWR0aDogNTA2cHg7CisgICAgcGFkZGluZzogMTNweCAxN3B4IDEycHggMTdweDsKKyAgICBt
YXJnaW46IDAgMCAwIDQzcHg7Cit9CisKKy50b2RvLWxpc3QgbGkuZWRpdGluZyAudmlldyB7Cisg
ICAgZGlzcGxheTogbm9uZTsKK30KKworLnRvZG8tbGlzdCBsaSAudG9nZ2xlIHsKKyAgICB0ZXh0
LWFsaWduOiBjZW50ZXI7CisgICAgd2lkdGg6IDQwcHg7CisgICAgLyogYXV0bywgc2luY2Ugbm9u
LVdlYktpdCBicm93c2VycyBkb2Vzbid0IHN1cHBvcnQgaW5wdXQgc3R5bGluZyAqLworICAgIGhl
aWdodDogYXV0bzsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAwOworICAgIGJv
dHRvbTogMDsKKyAgICBtYXJnaW46IGF1dG8gMDsKKyAgICBib3JkZXI6IG5vbmU7IC8qIE1vYmls
ZSBTYWZhcmkgKi8KKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CisgICAgYXBwZWFyYW5j
ZTogbm9uZTsKK30KKworLnRvZG8tbGlzdCBsaSAudG9nZ2xlOmFmdGVyIHsKKyAgICBjb250ZW50
OiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9Ii0xMCAtMTggMTAw
IDEzNSI+PGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
I2VkZWRlZCIgc3Ryb2tlLXdpZHRoPSIzIi8+PC9zdmc+Jyk7Cit9CisKKy50b2RvLWxpc3QgbGkg
LnRvZ2dsZTpjaGVja2VkOmFmdGVyIHsKKyAgICBjb250ZW50OiB1cmwoJ2RhdGE6aW1hZ2Uvc3Zn
K3htbDt1dGY4LDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0i
NDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9Ii0xMCAtMTggMTAwIDEzNSI+PGNpcmNsZSBjeD0iNTAi
IGN5PSI1MCIgcj0iNTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2JkZGFkNSIgc3Ryb2tlLXdpZHRo
PSIzIi8+PHBhdGggZmlsbD0iIzVkYzJhZiIgZD0iTTcyIDI1TDQyIDcxIDI3IDU2bC00IDQgMjAg
MjAgMzQtNTJ6Ii8+PC9zdmc+Jyk7Cit9CisKKy50b2RvLWxpc3QgbGkgbGFiZWwgeworICAgIHdo
aXRlLXNwYWNlOiBwcmUtbGluZTsKKyAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7CisgICAgcGFk
ZGluZzogMTVweCA2MHB4IDE1cHggMTVweDsKKyAgICBtYXJnaW4tbGVmdDogNDVweDsKKyAgICBk
aXNwbGF5OiBibG9jazsKKyAgICBsaW5lLWhlaWdodDogMS4yOworICAgIHRyYW5zaXRpb246IGNv
bG9yIDAuNHM7Cit9CisKKy50b2RvLWxpc3QgbGkuY29tcGxldGVkIGxhYmVsIHsKKyAgICBjb2xv
cjogI2Q5ZDlkOTsKKyAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsKK30KKworLnRv
ZG8tbGlzdCBsaSAuZGVzdHJveSB7CisgICAgZGlzcGxheTogbm9uZTsKKyAgICBwb3NpdGlvbjog
YWJzb2x1dGU7CisgICAgdG9wOiAwOworICAgIHJpZ2h0OiAxMHB4OworICAgIGJvdHRvbTogMDsK
KyAgICB3aWR0aDogNDBweDsKKyAgICBoZWlnaHQ6IDQwcHg7CisgICAgbWFyZ2luOiBhdXRvIDA7
CisgICAgZm9udC1zaXplOiAzMHB4OworICAgIGNvbG9yOiAjY2M5YTlhOworICAgIG1hcmdpbi1i
b3R0b206IDExcHg7CisgICAgdHJhbnNpdGlvbjogY29sb3IgMC4ycyBlYXNlLW91dDsKK30KKwor
LnRvZG8tbGlzdCBsaSAuZGVzdHJveTpob3ZlciB7CisgICAgY29sb3I6ICNhZjViNWU7Cit9CisK
Ky50b2RvLWxpc3QgbGkgLmRlc3Ryb3k6YWZ0ZXIgeworICAgIGNvbnRlbnQ6ICfDlyc7Cit9CisK
Ky50b2RvLWxpc3QgbGk6aG92ZXIgLmRlc3Ryb3kgeworICAgIGRpc3BsYXk6IGJsb2NrOworfQor
CisudG9kby1saXN0IGxpIC5lZGl0IHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisudG9kby1s
aXN0IGxpLmVkaXRpbmc6bGFzdC1jaGlsZCB7CisgICAgbWFyZ2luLWJvdHRvbTogLTFweDsKK30K
KworLmZvb3RlciB7CisgICAgY29sb3I6ICM3Nzc7CisgICAgcGFkZGluZzogMTBweCAxNXB4Owor
ICAgIGhlaWdodDogMjBweDsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgYm9yZGVyLXRv
cDogMXB4IHNvbGlkICNlNmU2ZTY7Cit9CisKKy5mb290ZXI6YmVmb3JlIHsKKyAgICBjb250ZW50
OiAnJzsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgcmlnaHQ6IDA7CisgICAgYm90dG9t
OiAwOworICAgIGxlZnQ6IDA7CisgICAgaGVpZ2h0OiA1MHB4OworICAgIG92ZXJmbG93OiBoaWRk
ZW47CisgICAgYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwKKyAgICAg
ICAgICAgICAgICAwIDhweCAwIC0zcHggI2Y2ZjZmNiwKKyAgICAgICAgICAgICAgICAwIDlweCAx
cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksCisgICAgICAgICAgICAgICAgMCAxNnB4IDAgLTZw
eCAjZjZmNmY2LAorICAgICAgICAgICAgICAgIDAgMTdweCAycHggLTZweCByZ2JhKDAsIDAsIDAs
IDAuMik7Cit9CisKKy50b2RvLWNvdW50IHsKKyAgICBmbG9hdDogbGVmdDsKKyAgICB0ZXh0LWFs
aWduOiBsZWZ0OworfQorCisudG9kby1jb3VudCBzdHJvbmcgeworICAgIGZvbnQtd2VpZ2h0OiAz
MDA7Cit9CisKKy5maWx0ZXJzIHsKKyAgICBtYXJnaW46IDA7CisgICAgcGFkZGluZzogMDsKKyAg
ICBsaXN0LXN0eWxlOiBub25lOworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICByaWdodDog
MDsKKyAgICBsZWZ0OiAwOworfQorCisuZmlsdGVycyBsaSB7CisgICAgZGlzcGxheTogaW5saW5l
OworfQorCisuZmlsdGVycyBsaSBhIHsKKyAgICBjb2xvcjogaW5oZXJpdDsKKyAgICBtYXJnaW46
IDNweDsKKyAgICBwYWRkaW5nOiAzcHggN3B4OworICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsK
KyAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKKyAgICBib3JkZXItcmFkaXVzOiAz
cHg7Cit9CisKKy5maWx0ZXJzIGxpIGEuc2VsZWN0ZWQsCisuZmlsdGVycyBsaSBhOmhvdmVyIHsK
KyAgICBib3JkZXItY29sb3I6IHJnYmEoMTc1LCA0NywgNDcsIDAuMSk7Cit9CisKKy5maWx0ZXJz
IGxpIGEuc2VsZWN0ZWQgeworICAgIGJvcmRlci1jb2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4y
KTsKK30KKworLmNsZWFyLWNvbXBsZXRlZCwKK2h0bWwgLmNsZWFyLWNvbXBsZXRlZDphY3RpdmUg
eworICAgIGZsb2F0OiByaWdodDsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgbGluZS1o
ZWlnaHQ6IDIwcHg7CisgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworICAgIGN1cnNvcjogcG9p
bnRlcjsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9CisKKy5jbGVhci1jb21wbGV0ZWQ6aG92
ZXIgeworICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworfQorCisuaW5mbyB7CisgICAg
bWFyZ2luOiA2NXB4IGF1dG8gMDsKKyAgICBjb2xvcjogI2JmYmZiZjsKKyAgICBmb250LXNpemU6
IDEwcHg7CisgICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUp
OworICAgIHRleHQtYWxpZ246IGNlbnRlcjsKK30KKworLmluZm8gcCB7CisgICAgbGluZS1oZWln
aHQ6IDE7Cit9CisKKy5pbmZvIGEgeworICAgIGNvbG9yOiBpbmhlcml0OworICAgIHRleHQtZGVj
b3JhdGlvbjogbm9uZTsKKyAgICBmb250LXdlaWdodDogNDAwOworfQorCisuaW5mbyBhOmhvdmVy
IHsKKyAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKK30KKworLyoKKyAgICBIYWNrIHRv
IHJlbW92ZSBiYWNrZ3JvdW5kIGZyb20gTW9iaWxlIFNhZmFyaS4KKyAgICBDYW4ndCB1c2UgaXQg
Z2xvYmFsbHkgc2luY2UgaXQgZGVzdHJveXMgY2hlY2tib3hlcyBpbiBGaXJlZm94CisqLworQG1l
ZGlhIHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzowKSB7CisgICAg
LnRvZ2dsZS1hbGwsCisgICAgLnRvZG8tbGlzdCBsaSAudG9nZ2xlIHsKKyAgICAgICAgYmFja2dy
b3VuZDogbm9uZTsKKyAgICB9CisKKyAgICAudG9kby1saXN0IGxpIC50b2dnbGUgeworICAgICAg
ICBoZWlnaHQ6IDQwcHg7CisgICAgfQorCisgICAgLnRvZ2dsZS1hbGwgeworICAgICAgICAtd2Vi
a2l0LXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKKyAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUo
OTBkZWcpOworICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CisgICAgICAgIGFwcGVh
cmFuY2U6IG5vbmU7CisgICAgfQorfQorCitAbWVkaWEgKG1heC13aWR0aDogNDMwcHgpIHsKKyAg
ICAuZm9vdGVyIHsKKyAgICAgICAgaGVpZ2h0OiA1MHB4OworICAgIH0KKworICAgIC5maWx0ZXJz
IHsKKyAgICAgICAgYm90dG9tOiAxMHB4OworICAgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92
YW5pbGxhanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3Zh
bmlsbGFqcy9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5jc3MKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGQyNWQzYzg0YWM2YzZhZWYyNmI5NjgzYTJiYzEwYzYxZjk2MGM4ZgotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxs
YS1leGFtcGxlcy92YW5pbGxhanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3Nz
CkBAIC0wLDAgKzEsMTQxIEBACitociB7CisgICAgbWFyZ2luOiAyMHB4IDA7CisgICAgYm9yZGVy
OiAwOworICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgI2M1YzVjNTsKKyAgICBib3JkZXItYm90
dG9tOiAxcHggZGFzaGVkICNmN2Y3Zjc7Cit9CisKKy5sZWFybiBhIHsKKyAgICBmb250LXdlaWdo
dDogbm9ybWFsOworICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKKyAgICBjb2xvcjogI2I4M2Y0
NTsKK30KKworLmxlYXJuIGE6aG92ZXIgeworICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5l
OworICAgIGNvbG9yOiAjNzg3ZTdlOworfQorCisubGVhcm4gaDMsCisubGVhcm4gaDQsCisubGVh
cm4gaDUgeworICAgIG1hcmdpbjogMTBweCAwOworICAgIGZvbnQtd2VpZ2h0OiA1MDA7CisgICAg
bGluZS1oZWlnaHQ6IDEuMjsKKyAgICBjb2xvcjogIzAwMDsKK30KKworLmxlYXJuIGgzIHsKKyAg
ICBmb250LXNpemU6IDI0cHg7Cit9CisKKy5sZWFybiBoNCB7CisgICAgZm9udC1zaXplOiAxOHB4
OworfQorCisubGVhcm4gaDUgeworICAgIG1hcmdpbi1ib3R0b206IDA7CisgICAgZm9udC1zaXpl
OiAxNHB4OworfQorCisubGVhcm4gdWwgeworICAgIHBhZGRpbmc6IDA7CisgICAgbWFyZ2luOiAw
IDAgMzBweCAyNXB4OworfQorCisubGVhcm4gbGkgeworICAgIGxpbmUtaGVpZ2h0OiAyMHB4Owor
fQorCisubGVhcm4gcCB7CisgICAgZm9udC1zaXplOiAxNXB4OworICAgIGZvbnQtd2VpZ2h0OiAz
MDA7CisgICAgbGluZS1oZWlnaHQ6IDEuMzsKKyAgICBtYXJnaW4tdG9wOiAwOworICAgIG1hcmdp
bi1ib3R0b206IDA7Cit9CisKKyNpc3N1ZS1jb3VudCB7CisgICAgZGlzcGxheTogbm9uZTsKK30K
KworLnF1b3RlIHsKKyAgICBib3JkZXI6IG5vbmU7CisgICAgbWFyZ2luOiAyMHB4IDAgNjBweCAw
OworfQorCisucXVvdGUgcCB7CisgICAgZm9udC1zdHlsZTogaXRhbGljOworfQorCisucXVvdGUg
cDpiZWZvcmUgeworICAgIGNvbnRlbnQ6ICfigJwnOworICAgIGZvbnQtc2l6ZTogNTBweDsKKyAg
ICBvcGFjaXR5OiAuMTU7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogLTIwcHg7
CisgICAgbGVmdDogM3B4OworfQorCisucXVvdGUgcDphZnRlciB7CisgICAgY29udGVudDogJ+KA
nSc7CisgICAgZm9udC1zaXplOiA1MHB4OworICAgIG9wYWNpdHk6IC4xNTsKKyAgICBwb3NpdGlv
bjogYWJzb2x1dGU7CisgICAgYm90dG9tOiAtNDJweDsKKyAgICByaWdodDogM3B4OworfQorCisu
cXVvdGUgZm9vdGVyIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgYm90dG9tOiAtNDBw
eDsKKyAgICByaWdodDogMDsKK30KKworLnF1b3RlIGZvb3RlciBpbWcgeworICAgIGJvcmRlci1y
YWRpdXM6IDNweDsKK30KKworLnF1b3RlIGZvb3RlciBhIHsKKyAgICBtYXJnaW4tbGVmdDogNXB4
OworICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cit9CisKKy5zcGVlY2gtYnViYmxlIHsKKyAg
ICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgcGFkZGluZzogMTBweDsKKyAgICBiYWNrZ3JvdW5k
OiByZ2JhKDAsIDAsIDAsIC4wNCk7CisgICAgYm9yZGVyLXJhZGl1czogNXB4OworfQorCisuc3Bl
ZWNoLWJ1YmJsZTphZnRlciB7CisgICAgY29udGVudDogJyc7CisgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgIHRvcDogMTAwJTsKKyAgICByaWdodDogMzBweDsKKyAgICBib3JkZXI6IDEzcHgg
c29saWQgdHJhbnNwYXJlbnQ7CisgICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgwLCAwLCAwLCAu
MDQpOworfQorCisubGVhcm4tYmFyID4gLmxlYXJuIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CisgICAgd2lkdGg6IDI3MnB4OworICAgIHRvcDogOHB4OworICAgIGxlZnQ6IC0zMDBweDsKKyAg
ICBwYWRkaW5nOiAxMHB4OworICAgIGJvcmRlci1yYWRpdXM6IDVweDsKKyAgICBiYWNrZ3JvdW5k
LWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC42KTsKKyAgICB0cmFuc2l0aW9uLXByb3BlcnR5
OiBsZWZ0OworICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDUwMG1zOworfQorCitAbWVkaWEgKG1p
bi13aWR0aDogODk5cHgpIHsKKyAgICAubGVhcm4tYmFyIHsKKyAgICAgICAgd2lkdGg6IGF1dG87
CisgICAgICAgIHBhZGRpbmctbGVmdDogMzAwcHg7CisgICAgfQorCisgICAgLmxlYXJuLWJhciA+
IC5sZWFybiB7CisgICAgICAgIGxlZnQ6IDhweDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBs
ZXMvdmFuaWxsYWpzL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVz
L3ZhbmlsbGFqcy9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44MWUwMDZiYzUwMmRkYzRjNzRmNDdiZDEzYTgzOTIyNzdmODMwZGI4Ci0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5p
bGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5q
cwpAQCAtMCwwICsxLDI0OSBAQAorLyogZ2xvYmFsIF8gKi8KKyhmdW5jdGlvbiAoKSB7CisgICAg
J3VzZSBzdHJpY3QnOworCisgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqLworICAgIC8vIFVu
ZGVyc2NvcmUncyBUZW1wbGF0ZSBNb2R1bGUKKyAgICAvLyBDb3VydGVzeSBvZiB1bmRlcnNjb3Jl
anMub3JnCisgICAgdmFyIF8gPSAoZnVuY3Rpb24gKF8pIHsKKyAgICAgICAgXy5kZWZhdWx0cyA9
IGZ1bmN0aW9uIChvYmplY3QpIHsKKyAgICAgICAgICAgIGlmICghb2JqZWN0KSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZvciAo
dmFyIGFyZ3NJbmRleCA9IDEsIGFyZ3NMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOyBhcmdzSW5k
ZXggPCBhcmdzTGVuZ3RoOyBhcmdzSW5kZXgrKykgeworICAgICAgICAgICAgICAgIHZhciBpdGVy
YWJsZSA9IGFyZ3VtZW50c1thcmdzSW5kZXhdOworICAgICAgICAgICAgICAgIGlmIChpdGVyYWJs
ZSkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gaXRlcmFibGUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmplY3Rba2V5XSA9PSBudWxsKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb2JqZWN0W2tleV0gPSBpdGVyYWJsZVtrZXldOworICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIEJ5IGRlZmF1bHQsIFVuZGVyc2NvcmUgdXNlcyBFUkItc3R5bGUgdGVt
cGxhdGUgZGVsaW1pdGVycywgY2hhbmdlIHRoZQorICAgICAgICAvLyBmb2xsb3dpbmcgdGVtcGxh
dGUgc2V0dGluZ3MgdG8gdXNlIGFsdGVybmF0aXZlIGRlbGltaXRlcnMuCisgICAgICAgIF8udGVt
cGxhdGVTZXR0aW5ncyA9IHsKKyAgICAgICAgICAgIGV2YWx1YXRlICAgIDogLzwlKFtcc1xTXSs/
KSU+L2csCisgICAgICAgICAgICBpbnRlcnBvbGF0ZSA6IC88JT0oW1xzXFNdKz8pJT4vZywKKyAg
ICAgICAgICAgIGVzY2FwZSAgICAgIDogLzwlLShbXHNcU10rPyklPi9nCisgICAgICAgIH07CisK
KyAgICAgICAgLy8gV2hlbiBjdXN0b21pemluZyBgdGVtcGxhdGVTZXR0aW5nc2AsIGlmIHlvdSBk
b24ndCB3YW50IHRvIGRlZmluZSBhbgorICAgICAgICAvLyBpbnRlcnBvbGF0aW9uLCBldmFsdWF0
aW9uIG9yIGVzY2FwaW5nIHJlZ2V4LCB3ZSBuZWVkIG9uZSB0aGF0IGlzCisgICAgICAgIC8vIGd1
YXJhbnRlZWQgbm90IHRvIG1hdGNoLgorICAgICAgICB2YXIgbm9NYXRjaCA9IC8oLileLzsKKwor
ICAgICAgICAvLyBDZXJ0YWluIGNoYXJhY3RlcnMgbmVlZCB0byBiZSBlc2NhcGVkIHNvIHRoYXQg
dGhleSBjYW4gYmUgcHV0IGludG8gYQorICAgICAgICAvLyBzdHJpbmcgbGl0ZXJhbC4KKyAgICAg
ICAgdmFyIGVzY2FwZXMgPSB7CisgICAgICAgICAgICAiJyI6ICAgICAgIiciLAorICAgICAgICAg
ICAgJ1xcJzogICAgICdcXCcsCisgICAgICAgICAgICAnXHInOiAgICAgJ3InLAorICAgICAgICAg
ICAgJ1xuJzogICAgICduJywKKyAgICAgICAgICAgICdcdCc6ICAgICAndCcsCisgICAgICAgICAg
ICAnXHUyMDI4JzogJ3UyMDI4JywKKyAgICAgICAgICAgICdcdTIwMjknOiAndTIwMjknCisgICAg
ICAgIH07CisKKyAgICAgICAgdmFyIGVzY2FwZXIgPSAvXFx8J3xccnxcbnxcdHxcdTIwMjh8XHUy
MDI5L2c7CisKKyAgICAgICAgLy8gSmF2YVNjcmlwdCBtaWNyby10ZW1wbGF0aW5nLCBzaW1pbGFy
IHRvIEpvaG4gUmVzaWcncyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgLy8gVW5kZXJzY29yZSB0
ZW1wbGF0aW5nIGhhbmRsZXMgYXJiaXRyYXJ5IGRlbGltaXRlcnMsIHByZXNlcnZlcyB3aGl0ZXNw
YWNlLAorICAgICAgICAvLyBhbmQgY29ycmVjdGx5IGVzY2FwZXMgcXVvdGVzIHdpdGhpbiBpbnRl
cnBvbGF0ZWQgY29kZS4KKyAgICAgICAgXy50ZW1wbGF0ZSA9IGZ1bmN0aW9uKHRleHQsIGRhdGEs
IHNldHRpbmdzKSB7CisgICAgICAgICAgICB2YXIgcmVuZGVyOworICAgICAgICAgICAgc2V0dGlu
Z3MgPSBfLmRlZmF1bHRzKHt9LCBzZXR0aW5ncywgXy50ZW1wbGF0ZVNldHRpbmdzKTsKKworICAg
ICAgICAgICAgLy8gQ29tYmluZSBkZWxpbWl0ZXJzIGludG8gb25lIHJlZ3VsYXIgZXhwcmVzc2lv
biB2aWEgYWx0ZXJuYXRpb24uCisgICAgICAgICAgICB2YXIgbWF0Y2hlciA9IG5ldyBSZWdFeHAo
WworICAgICAgICAgICAgICAgIChzZXR0aW5ncy5lc2NhcGUgfHwgbm9NYXRjaCkuc291cmNlLAor
ICAgICAgICAgICAgICAgIChzZXR0aW5ncy5pbnRlcnBvbGF0ZSB8fCBub01hdGNoKS5zb3VyY2Us
CisgICAgICAgICAgICAgICAgKHNldHRpbmdzLmV2YWx1YXRlIHx8IG5vTWF0Y2gpLnNvdXJjZQor
ICAgICAgICAgICAgXS5qb2luKCd8JykgKyAnfCQnLCAnZycpOworCisgICAgICAgICAgICAvLyBD
b21waWxlIHRoZSB0ZW1wbGF0ZSBzb3VyY2UsIGVzY2FwaW5nIHN0cmluZyBsaXRlcmFscyBhcHBy
b3ByaWF0ZWx5LgorICAgICAgICAgICAgdmFyIGluZGV4ID0gMDsKKyAgICAgICAgICAgIHZhciBz
b3VyY2UgPSAiX19wKz0nIjsKKyAgICAgICAgICAgIHRleHQucmVwbGFjZShtYXRjaGVyLCBmdW5j
dGlvbihtYXRjaCwgZXNjYXBlLCBpbnRlcnBvbGF0ZSwgZXZhbHVhdGUsIG9mZnNldCkgeworICAg
ICAgICAgICAgICAgIHNvdXJjZSArPSB0ZXh0LnNsaWNlKGluZGV4LCBvZmZzZXQpCisgICAgICAg
ICAgICAgICAgICAgIC5yZXBsYWNlKGVzY2FwZXIsIGZ1bmN0aW9uKG1hdGNoKSB7IHJldHVybiAn
XFwnICsgZXNjYXBlc1ttYXRjaF07IH0pOworCisgICAgICAgICAgICAgICAgaWYgKGVzY2FwZSkg
eworICAgICAgICAgICAgICAgICAgICBzb3VyY2UgKz0gIicrXG4oKF9fdD0oIiArIGVzY2FwZSAr
ICIpKT09bnVsbD8nJzpfLmVzY2FwZShfX3QpKStcbiciOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBpZiAoaW50ZXJwb2xhdGUpIHsKKyAgICAgICAgICAgICAgICAgICAgc291
cmNlICs9ICInK1xuKChfX3Q9KCIgKyBpbnRlcnBvbGF0ZSArICIpKT09bnVsbD8nJzpfX3QpK1xu
JyI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChldmFsdWF0ZSkgewor
ICAgICAgICAgICAgICAgICAgICBzb3VyY2UgKz0gIic7XG4iICsgZXZhbHVhdGUgKyAiXG5fX3Ar
PSciOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpbmRleCA9IG9mZnNldCAr
IG1hdGNoLmxlbmd0aDsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIHNvdXJjZSArPSAiJztcbiI7CisKKyAgICAgICAgICAgIC8vIElm
IGEgdmFyaWFibGUgaXMgbm90IHNwZWNpZmllZCwgcGxhY2UgZGF0YSB2YWx1ZXMgaW4gbG9jYWwg
c2NvcGUuCisgICAgICAgICAgICBpZiAoIXNldHRpbmdzLnZhcmlhYmxlKSBzb3VyY2UgPSAnd2l0
aChvYmp8fHt9KXtcbicgKyBzb3VyY2UgKyAnfVxuJzsKKworICAgICAgICAgICAgc291cmNlID0g
InZhciBfX3QsX19wPScnLF9faj1BcnJheS5wcm90b3R5cGUuam9pbiwiICsKKyAgICAgICAgICAg
ICAgICAicHJpbnQ9ZnVuY3Rpb24oKXtfX3ArPV9fai5jYWxsKGFyZ3VtZW50cywnJyk7fTtcbiIg
KworICAgICAgICAgICAgICAgIHNvdXJjZSArICJyZXR1cm4gX19wO1xuIjsKKworICAgICAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgICAgICByZW5kZXIgPSBuZXcgRnVuY3Rpb24oc2V0dGluZ3Mu
dmFyaWFibGUgfHwgJ29iaicsICdfJywgc291cmNlKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgICAgICAgICBlLnNvdXJjZSA9IHNvdXJjZTsKKyAgICAgICAgICAgICAgICB0
aHJvdyBlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZGF0YSkgcmV0dXJuIHJl
bmRlcihkYXRhLCBfKTsKKyAgICAgICAgICAgIHZhciB0ZW1wbGF0ZSA9IGZ1bmN0aW9uKGRhdGEp
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyLmNhbGwodGhpcywgZGF0YSwgXyk7Cisg
ICAgICAgICAgICB9OworCisgICAgICAgICAgICAvLyBQcm92aWRlIHRoZSBjb21waWxlZCBmdW5j
dGlvbiBzb3VyY2UgYXMgYSBjb252ZW5pZW5jZSBmb3IgcHJlY29tcGlsYXRpb24uCisgICAgICAg
ICAgICB0ZW1wbGF0ZS5zb3VyY2UgPSAnZnVuY3Rpb24oJyArIChzZXR0aW5ncy52YXJpYWJsZSB8
fCAnb2JqJykgKyAnKXtcbicgKyBzb3VyY2UgKyAnfSc7CisKKyAgICAgICAgICAgIHJldHVybiB0
ZW1wbGF0ZTsKKyAgICAgICAgfTsKKworICAgICAgICByZXR1cm4gXzsKKyAgICB9KSh7fSk7CisK
KyAgICBpZiAobG9jYXRpb24uaG9zdG5hbWUgPT09ICd0b2RvbXZjLmNvbScpIHsKKyAgICAgICAg
KGZ1bmN0aW9uKGkscyxvLGcscixhLG0pe2lbJ0dvb2dsZUFuYWx5dGljc09iamVjdCddPXI7aVty
XT1pW3JdfHxmdW5jdGlvbigpeworICAgICAgICAoaVtyXS5xPWlbcl0ucXx8W10pLnB1c2goYXJn
dW1lbnRzKX0saVtyXS5sPTEqbmV3IERhdGUoKTthPXMuY3JlYXRlRWxlbWVudChvKSwKKyAgICAg
ICAgbT1zLmdldEVsZW1lbnRzQnlUYWdOYW1lKG8pWzBdO2EuYXN5bmM9MTthLnNyYz1nO20ucGFy
ZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxtKQorICAgICAgICB9KSh3aW5kb3csZG9jdW1lbnQsJ3Nj
cmlwdCcsJ2h0dHBzOi8vd3d3Lmdvb2dsZS1hbmFseXRpY3MuY29tL2FuYWx5dGljcy5qcycsJ2dh
Jyk7CisgICAgICAgIGdhKCdjcmVhdGUnLCAnVUEtMzEwODEwNjItMScsICdhdXRvJyk7CisgICAg
ICAgIGdhKCdzZW5kJywgJ3BhZ2V2aWV3Jyk7CisgICAgfQorICAgIC8qIGpzaGludCBpZ25vcmU6
ZW5kICovCisKKyAgICBmdW5jdGlvbiByZWRpcmVjdCgpIHsKKyAgICAgICAgaWYgKGxvY2F0aW9u
Lmhvc3RuYW1lID09PSAndGFzdGVqcy5naXRodWIuaW8nKSB7CisgICAgICAgICAgICBsb2NhdGlv
bi5ocmVmID0gbG9jYXRpb24uaHJlZi5yZXBsYWNlKCd0YXN0ZWpzLmdpdGh1Yi5pby90b2RvbXZj
JywgJ3RvZG9tdmMuY29tJyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5k
Um9vdCgpIHsKKyAgICAgICAgdmFyIGJhc2UgPSBsb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2V4YW1w
bGVzLycpOworICAgICAgICByZXR1cm4gbG9jYXRpb24uaHJlZi5zdWJzdHIoMCwgYmFzZSk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gZ2V0RmlsZShmaWxlLCBjYWxsYmFjaykgeworICAgICAgICBp
ZiAoIWxvY2F0aW9uLmhvc3QpIHsKKyAgICAgICAgICAgIHJldHVybiBjb25zb2xlLmluZm8oJ01p
c3MgdGhlIGluZm8gYmFyPyBSdW4gVG9kb01WQyBmcm9tIGEgc2VydmVyIHRvIGF2b2lkIGEgY3Jv
c3Mtb3JpZ2luIGVycm9yLicpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHhociA9IG5ldyBY
TUxIdHRwUmVxdWVzdCgpOworCisgICAgICAgIHhoci5vcGVuKCdHRVQnLCBmaW5kUm9vdCgpICsg
ZmlsZSwgdHJ1ZSk7CisgICAgICAgIHhoci5zZW5kKCk7CisKKyAgICAgICAgeGhyLm9ubG9hZCA9
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzID09PSAyMDAgJiYgY2Fs
bGJhY2spIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayh4aHIucmVzcG9uc2VUZXh0KTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBMZWFybihsZWFy
bkpTT04sIGNvbmZpZykgeworICAgICAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgTGVhcm4pKSB7
CisgICAgICAgICAgICByZXR1cm4gbmV3IExlYXJuKGxlYXJuSlNPTiwgY29uZmlnKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHZhciB0ZW1wbGF0ZSwgZnJhbWV3b3JrOworCisgICAgICAgIGlmICh0
eXBlb2YgbGVhcm5KU09OICE9PSAnb2JqZWN0JykgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgICAgICBsZWFybkpTT04gPSBKU09OLnBhcnNlKGxlYXJuSlNPTik7CisgICAgICAgICAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvbmZpZykgeworICAgICAgICAgICAgdGVtcGxhdGUg
PSBjb25maWcudGVtcGxhdGU7CisgICAgICAgICAgICBmcmFtZXdvcmsgPSBjb25maWcuZnJhbWV3
b3JrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0ZW1wbGF0ZSAmJiBsZWFybkpTT04udGVt
cGxhdGVzKSB7CisgICAgICAgICAgICB0ZW1wbGF0ZSA9IGxlYXJuSlNPTi50ZW1wbGF0ZXMudG9k
b212YzsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghZnJhbWV3b3JrICYmIGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoJ1tkYXRhLWZyYW1ld29ya10nKSkgeworICAgICAgICAgICAgZnJhbWV3b3Jr
ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtZnJhbWV3b3JrXScpLmRhdGFzZXQuZnJh
bWV3b3JrOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy50ZW1wbGF0ZSA9IHRlbXBsYXRlOwor
CisgICAgICAgIGlmIChsZWFybkpTT04uYmFja2VuZCkgeworICAgICAgICAgICAgdGhpcy5mcmFt
ZXdvcmtKU09OID0gbGVhcm5KU09OLmJhY2tlbmQ7CisgICAgICAgICAgICB0aGlzLmZyYW1ld29y
a0pTT04uaXNzdWVMYWJlbCA9IGZyYW1ld29yazsKKyAgICAgICAgICAgIHRoaXMuYXBwZW5kKHsK
KyAgICAgICAgICAgICAgICBiYWNrZW5kOiB0cnVlCisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSBlbHNlIGlmIChsZWFybkpTT05bZnJhbWV3b3JrXSkgeworICAgICAgICAgICAgdGhpcy5mcmFt
ZXdvcmtKU09OID0gbGVhcm5KU09OW2ZyYW1ld29ya107CisgICAgICAgICAgICB0aGlzLmZyYW1l
d29ya0pTT04uaXNzdWVMYWJlbCA9IGZyYW1ld29yazsKKyAgICAgICAgICAgIHRoaXMuYXBwZW5k
KCk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLmZldGNoSXNzdWVDb3VudCgpOworICAgIH0K
KworICAgIExlYXJuLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiAob3B0cykgeworICAgICAg
ICB2YXIgYXNpZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhc2lkZScpOworICAgICAgICBh
c2lkZS5pbm5lckhUTUwgPSBfLnRlbXBsYXRlKHRoaXMudGVtcGxhdGUsIHRoaXMuZnJhbWV3b3Jr
SlNPTik7CisgICAgICAgIGFzaWRlLmNsYXNzTmFtZSA9ICdsZWFybic7CisKKyAgICAgICAgaWYg
KG9wdHMgJiYgb3B0cy5iYWNrZW5kKSB7CisgICAgICAgICAgICAvLyBSZW1vdmUgZGVtbyBsaW5r
CisgICAgICAgICAgICB2YXIgc291cmNlTGlua3MgPSBhc2lkZS5xdWVyeVNlbGVjdG9yKCcuc291
cmNlLWxpbmtzJyk7CisgICAgICAgICAgICB2YXIgaGVhZGluZyA9IHNvdXJjZUxpbmtzLmZpcnN0
RWxlbWVudENoaWxkOworICAgICAgICAgICAgdmFyIHNvdXJjZUxpbmsgPSBzb3VyY2VMaW5rcy5s
YXN0RWxlbWVudENoaWxkOworICAgICAgICAgICAgLy8gQ29ycmVjdCBsaW5rIHBhdGgKKyAgICAg
ICAgICAgIHZhciBocmVmID0gc291cmNlTGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKTsKKyAgICAg
ICAgICAgIHNvdXJjZUxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgaHJlZi5zdWJzdHIoaHJlZi5s
YXN0SW5kZXhPZignaHR0cCcpKSk7CisgICAgICAgICAgICBzb3VyY2VMaW5rcy5pbm5lckhUTUwg
PSBoZWFkaW5nLm91dGVySFRNTCArIHNvdXJjZUxpbmsub3V0ZXJIVE1MOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgLy8gTG9jYWxpemUgZGVtbyBsaW5rcworICAgICAgICAgICAgdmFy
IGRlbW9MaW5rcyA9IGFzaWRlLnF1ZXJ5U2VsZWN0b3JBbGwoJy5kZW1vLWxpbmsnKTsKKyAgICAg
ICAgICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZGVtb0xpbmtzLCBmdW5jdGlvbiAo
ZGVtb0xpbmspIHsKKyAgICAgICAgICAgICAgICBpZiAoZGVtb0xpbmsuZ2V0QXR0cmlidXRlKCdo
cmVmJykuc3Vic3RyKDAsIDQpICE9PSAnaHR0cCcpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVt
b0xpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgZmluZFJvb3QoKSArIGRlbW9MaW5rLmdldEF0dHJp
YnV0ZSgnaHJlZicpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gKGRvY3VtZW50LmJvZHku
Y2xhc3NOYW1lICsgJyBsZWFybi1iYXInKS50cmltKCk7CisgICAgICAgIGRvY3VtZW50LmJvZHku
aW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlckJlZ2luJywgYXNpZGUub3V0ZXJIVE1MKTsKKyAgICB9
OworCisgICAgTGVhcm4ucHJvdG90eXBlLmZldGNoSXNzdWVDb3VudCA9IGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgdmFyIGlzc3VlTGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpc3N1ZS1j
b3VudC1saW5rJyk7CisgICAgICAgIGlmIChpc3N1ZUxpbmspIHsKKyAgICAgICAgICAgIHZhciB1
cmwgPSBpc3N1ZUxpbmsuaHJlZi5yZXBsYWNlKCdodHRwczovL2dpdGh1Yi5jb20nLCAnaHR0cHM6
Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcycpOworICAgICAgICAgICAgdmFyIHhociA9IG5ldyBYTUxI
dHRwUmVxdWVzdCgpOworICAgICAgICAgICAgeGhyLm9wZW4oJ0dFVCcsIHVybCwgdHJ1ZSk7Cisg
ICAgICAgICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAgICAgICB2
YXIgcGFyc2VkUmVzcG9uc2UgPSBKU09OLnBhcnNlKGUudGFyZ2V0LnJlc3BvbnNlVGV4dCk7Cisg
ICAgICAgICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlIGluc3RhbmNlb2YgQXJyYXkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgdmFyIGNvdW50ID0gcGFyc2VkUmVzcG9uc2UubGVuZ3RoOworICAg
ICAgICAgICAgICAgICAgICBpZiAoY291bnQgIT09IDApIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlzc3VlTGluay5pbm5lckhUTUwgPSAnVGhpcyBhcHAgaGFzICcgKyBjb3VudCArICcgb3Bl
biBpc3N1ZXMnOworICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2lzc3VlLWNvdW50Jykuc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUnOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
IHhoci5zZW5kKCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgcmVkaXJlY3QoKTsKKyAgICBn
ZXRGaWxlKCdsZWFybi5qc29uJywgTGVhcm4pOworfSkoKTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92
YW5pbGxhanMvcGFja2FnZS5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9wYWNrYWdlLmpzb24KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNThjNWE4MDYzZDlkYTA5ZWU1YjVjYjJlMjczMzFkZTZiNzMzMGEyZAotLS0gL2Rl
di9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvcGFja2FnZS5qc29uCkBAIC0wLDAgKzEsMTAg
QEAKK3sKKyAgInByaXZhdGUiOiB0cnVlLAorICAiZGVwZW5kZW5jaWVzIjogeworICAgICJ0b2Rv
bXZjLWNvbW1vbiI6ICJeMS4wLjEiLAorICAgICJ0b2RvbXZjLWFwcC1jc3MiOiAiXjIuMC4xIgor
ICB9LAorICAiZGV2RGVwZW5kZW5jaWVzIjogeworICAgICJqYXNtaW5lLWNvcmUiOiAiXjIuMC4w
IgorICB9Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309834</attachid>
            <date>2017-05-11 17:37:28 -0700</date>
            <delta_ts>2017-05-11 19:53:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171306-20170511173727.patch</filename>
            <type>text/plain</type>
            <size>95721</size>
            <attacher name="Addy Osmani">addyo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NjgzCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGVjNDZiZjNlOGFh
MmIyMTYyMjE3ZWMxNDJiMGMzOWQwYTk5ZGFlZmMuLjkzNjUyZTAzMmM2ZmYyZTE3NTJjMzEzODkz
MzU5ZjkwNGViMGI1YjQgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTctMDUt
MTEgIEFkZHkgT3NtYW5pICA8YWRkeW9zbWFuaUBnbWFpbC5jb20+CisKKyAgICAgICAgU3BlZWRv
bWV0ZXI6IFVwZGF0ZSB0aGUgdmFuaWxsYSBKYXZhU2NyaXB0IFRvZG9NVkMgaW1wbGVtIHRvIGEg
bW9yZSByZWNlbnQgdmVyc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTcxMzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIHZhbmlsbGEgSlMgVG9kb01WQyBpbXBsZW1lbnRhdGlvbiB0byB0
aGUgbGF0ZXN0LgorCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFu
aWxsYS1leGFtcGxlcy92YW5pbGxhanMvYm93ZXIuanNvbjogUmVtb3ZlZC4KKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9i
b3dlcl9jb21wb25lbnRzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzOiBSZW1vdmVkLgorICAgICAg
ICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxs
YWpzL2Jvd2VyX2NvbXBvbmVudHMvdG9kb212Yy1jb21tb24vYmFzZS5qczogUmVtb3ZlZC4KKyAg
ICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3Zh
bmlsbGFqcy9ib3dlcl9jb21wb25lbnRzL3RvZG9tdmMtY29tbW9uL2JnLnBuZzogUmVtb3ZlZC4K
KyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVz
L3ZhbmlsbGFqcy9pbmRleC5odG1sOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL2FwcC5qczoKKyAgICAgICAgKiBT
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9q
cy9jb250cm9sbGVyLmpzOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL2hlbHBlcnMuanM6CisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMv
bW9kZWwuanM6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxs
YS1leGFtcGxlcy92YW5pbGxhanMvanMvc3RvcmUuanM6CisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvdGVtcGxhdGUu
anM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zhbmls
bGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL3ZpZXcuanM6CisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvbm9kZV9tb2R1bGVz
L3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3M6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL25vZGVfbW9kdWxl
cy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzczogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvbm9kZV9tb2R1bGVz
L3RvZG9tdmMtY29tbW9uL2Jhc2UuanM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL3BhY2thZ2UuanNvbjog
QWRkZWQuCisKIDIwMTctMDQtMjEgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBTaW1wbGUgbGluZSBsYXlvdXQ6IEFkZCBwZXJmb3JtYW5jZSB0ZXN0IHRvIG1lYXN1
cmUgbWlkLXdvcmQgbGluZSBicmVha2luZyB3aXRoIGxvbmcgdGV4dC4KZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFt
cGxlcy92YW5pbGxhanMvYm93ZXIuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvYm93ZXIuanNvbgpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDhlM2JjZWUwYzZlZTA2Y2ZlZWZmZDQ5ZmRl
M2M4MDc3MmE5NzE3OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zhbmls
bGEtZXhhbXBsZXMvdmFuaWxsYWpzL2Jvd2VyLmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSw3ICsw
LDAgQEAKLXsKLSAgICAibmFtZSI6ICJ0b2RvbXZjLXZhbmlsbGFqcyIsCi0gICAgInZlcnNpb24i
OiAiMC4wLjAiLAotICAgICJkZXBlbmRlbmNpZXMiOiB7Ci0gICAgInRvZG9tdmMtY29tbW9uIjog
In4wLjEuNCIKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2Jvd2VyX2Nv
bXBvbmVudHMvdG9kb212Yy1jb21tb24vYmFzZS5jc3MgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2Jvd2Vy
X2NvbXBvbmVudHMvdG9kb212Yy1jb21tb24vYmFzZS5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDczN2NkOWNjOGM3ZTA3ZTQ2OTFkNGVlMWJhYTcwMmU0OTkzY2EyMWEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFq
cy9ib3dlcl9jb21wb25lbnRzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzCisrKyAvZGV2L251bGwK
QEAgLTEsNTU0ICswLDAgQEAKLWh0bWwsCi1ib2R5IHsKLSAgICBtYXJnaW46IDA7Ci0gICAgcGFk
ZGluZzogMDsKLX0KLQotYnV0dG9uIHsKLSAgICBtYXJnaW46IDA7Ci0gICAgcGFkZGluZzogMDsK
LSAgICBib3JkZXI6IDA7Ci0gICAgYmFja2dyb3VuZDogbm9uZTsKLSAgICBmb250LXNpemU6IDEw
MCU7Ci0gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOwotICAgIGZvbnQtZmFtaWx5OiBpbmhl
cml0OwotICAgIGNvbG9yOiBpbmhlcml0OwotICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsK
LSAgICAvKi1tb3otYXBwZWFyYW5jZTogbm9uZTsqLwotICAgIC1tcy1hcHBlYXJhbmNlOiBub25l
OwotICAgIC1vLWFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgYXBwZWFyYW5jZTogbm9uZTsKLX0KLQot
Ym9keSB7Ci0gICAgZm9udDogMTRweCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFs
LCBzYW5zLXNlcmlmOwotICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTsKLSAgICBiYWNrZ3JvdW5kOiAj
ZWFlYWVhIHVybCgnYmcucG5nJyk7Ci0gICAgY29sb3I6ICM0ZDRkNGQ7Ci0gICAgd2lkdGg6IDU1
MHB4OwotICAgIG1hcmdpbjogMCBhdXRvOwotICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFu
dGlhbGlhc2VkOwotICAgIC1tb3otZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwotICAgIC1t
cy1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgLW8tZm9udC1zbW9vdGhpbmc6IGFu
dGlhbGlhc2VkOwotICAgIGZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKLX0KLQotI3RvZG9h
cHAgewotICAgIGJhY2tncm91bmQ6ICNmZmY7Ci0gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1
NSwgMjU1LCAwLjkpOwotICAgIG1hcmdpbjogMTMwcHggMCA0MHB4IDA7Ci0gICAgYm9yZGVyOiAx
cHggc29saWQgI2NjYzsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgYm9yZGVyLXRvcC1s
ZWZ0LXJhZGl1czogMnB4OwotICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAycHg7Ci0gICAg
Ym94LXNoYWRvdzogMCAycHggNnB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpLAotICAgIDAgMjVweCA1
MHB4IDAgcmdiYSgwLCAwLCAwLCAwLjE1KTsKLX0KLQotI3RvZG9hcHA6YmVmb3JlIHsKLSAgICBj
b250ZW50OiAnJzsKLSAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNmNWQ2ZDY7Ci0gICAgYm9y
ZGVyLXJpZ2h0OiAxcHggc29saWQgI2Y1ZDZkNjsKLSAgICB3aWR0aDogMnB4OwotICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IDA7Ci0gICAgbGVmdDogNDBweDsKLSAgICBoZWlnaHQ6
IDEwMCU7Ci19Ci0KLSN0b2RvYXBwIGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsK
LSAgICBmb250LXN0eWxlOiBpdGFsaWM7Ci19Ci0KLSN0b2RvYXBwIGlucHV0OjotbW96LXBsYWNl
aG9sZGVyIHsKLSAgICBmb250LXN0eWxlOiBpdGFsaWM7Ci0gICAgY29sb3I6ICNhOWE5YTk7Ci19
Ci0KLSN0b2RvYXBwIGgxIHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAtMTIw
cHg7Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgZm9udC1zaXplOiA3MHB4OwotICAgIGZvbnQtd2Vp
Z2h0OiBib2xkOwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgICBjb2xvcjogI2IzYjNiMzsK
LSAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpOwotICAgIHRleHQtc2hhZG93OiAt
MXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpOwotICAgIC13ZWJraXQtdGV4dC1yZW5kZXJpbmc6
IG9wdGltaXplTGVnaWJpbGl0eTsKLSAgICAtbW96LXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxl
Z2liaWxpdHk7Ci0gICAgLW1zLXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7Ci0g
ICAgLW8tdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKLSAgICB0ZXh0LXJlbmRl
cmluZzogb3B0aW1pemVMZWdpYmlsaXR5OwotfQotCi0jaGVhZGVyIHsKLSAgICBwYWRkaW5nLXRv
cDogMTVweDsKLSAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0OwotfQotCi0jaGVhZGVyOmJlZm9y
ZSB7Ci0gICAgY29udGVudDogJyc7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDog
MDsKLSAgICByaWdodDogMDsKLSAgICBsZWZ0OiAwOwotICAgIGhlaWdodDogMTVweDsKLSAgICB6
LWluZGV4OiAyOwotICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjNmM2MTVjOwotICAgIGJh
Y2tncm91bmQ6ICM4ZDdkNzc7Ci0gICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5l
YXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbShyZ2JhKDEzMiwgMTEwLCAxMDAsIDAuOCkp
LHRvKHJnYmEoMTAxLCA4NCwgNzYsIDAuOCkpKTsKLSAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWxp
bmVhci1ncmFkaWVudCh0b3AsIHJnYmEoMTMyLCAxMTAsIDEwMCwgMC44KSwgcmdiYSgxMDEsIDg0
LCA3NiwgMC44KSk7Ci0gICAgYmFja2dyb3VuZDogLW1vei1saW5lYXItZ3JhZGllbnQodG9wLCBy
Z2JhKDEzMiwgMTEwLCAxMDAsIDAuOCksIHJnYmEoMTAxLCA4NCwgNzYsIDAuOCkpOwotICAgIGJh
Y2tncm91bmQ6IC1vLWxpbmVhci1ncmFkaWVudCh0b3AsIHJnYmEoMTMyLCAxMTAsIDEwMCwgMC44
KSwgcmdiYSgxMDEsIDg0LCA3NiwgMC44KSk7Ci0gICAgYmFja2dyb3VuZDogLW1zLWxpbmVhci1n
cmFkaWVudCh0b3AsIHJnYmEoMTMyLCAxMTAsIDEwMCwgMC44KSwgcmdiYSgxMDEsIDg0LCA3Niwg
MC44KSk7Ci0gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvcCwgcmdiYSgxMzIsIDEx
MCwgMTAwLCAwLjgpLCByZ2JhKDEwMSwgODQsIDc2LCAwLjgpKTsKLSAgICBib3JkZXItdG9wLWxl
ZnQtcmFkaXVzOiAxcHg7Ci0gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDFweDsKLX0KLQot
I25ldy10b2RvLAotLmVkaXQgewotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBtYXJnaW46
IDA7Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgZm9udC1zaXplOiAyNHB4OwotICAgIGZvbnQtZmFt
aWx5OiBpbmhlcml0OwotICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTsKLSAgICBib3JkZXI6IDA7Ci0g
ICAgb3V0bGluZTogbm9uZTsKLSAgICBjb2xvcjogaW5oZXJpdDsKLSAgICBwYWRkaW5nOiA2cHg7
Ci0gICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTsKLSAgICBib3gtc2hhZG93OiBpbnNldCAwIC0x
cHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpOwotICAgIC13ZWJraXQtYm94LXNpemluZzogYm9y
ZGVyLWJveDsKLSAgICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7Ci0gICAgLW1zLWJveC1z
aXppbmc6IGJvcmRlci1ib3g7Ci0gICAgLW8tYm94LXNpemluZzogYm9yZGVyLWJveDsKLSAgICBi
b3gtc2l6aW5nOiBib3JkZXItYm94OwotICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlh
bGlhc2VkOwotICAgIC1tb3otZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwotICAgIC1tcy1m
b250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Ci0gICAgLW8tZm9udC1zbW9vdGhpbmc6IGFudGlh
bGlhc2VkOwotICAgIGZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKLX0KLQotI25ldy10b2Rv
IHsKLSAgICBwYWRkaW5nOiAxNnB4IDE2cHggMTZweCA2MHB4OwotICAgIGJvcmRlcjogbm9uZTsK
LSAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMDIpOwotICAgIHotaW5kZXg6IDI7Ci0g
ICAgYm94LXNoYWRvdzogbm9uZTsKLX0KLQotI21haW4gewotICAgIHBvc2l0aW9uOiByZWxhdGl2
ZTsKLSAgICB6LWluZGV4OiAyOwotICAgIGJvcmRlci10b3A6IDFweCBkb3R0ZWQgI2FkYWRhZDsK
LX0KLQotbGFiZWxbZm9yPSd0b2dnbGUtYWxsJ10gewotICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0K
LSN0b2dnbGUtYWxsIHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAtNDJweDsK
LSAgICBsZWZ0OiAtNHB4OwotICAgIHdpZHRoOiA0MHB4OwotICAgIHRleHQtYWxpZ246IGNlbnRl
cjsKLSAgICBib3JkZXI6IG5vbmU7IC8qIE1vYmlsZSBTYWZhcmkgKi8KLX0KLQotI3RvZ2dsZS1h
bGw6YmVmb3JlIHsKLSAgICBjb250ZW50OiAnwrsnOwotICAgIGZvbnQtc2l6ZTogMjhweDsKLSAg
ICBjb2xvcjogI2Q5ZDlkOTsKLSAgICBwYWRkaW5nOiAwIDI1cHggN3B4OwotfQotCi0jdG9nZ2xl
LWFsbDpjaGVja2VkOmJlZm9yZSB7Ci0gICAgY29sb3I6ICM3MzczNzM7Ci19Ci0KLSN0b2RvLWxp
c3QgewotICAgIG1hcmdpbjogMDsKLSAgICBwYWRkaW5nOiAwOwotICAgIGxpc3Qtc3R5bGU6IG5v
bmU7Ci19Ci0KLSN0b2RvLWxpc3QgbGkgewotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBm
b250LXNpemU6IDI0cHg7Ci0gICAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZCAjY2NjOwotfQot
Ci0jdG9kby1saXN0IGxpOmxhc3QtY2hpbGQgewotICAgIGJvcmRlci1ib3R0b206IG5vbmU7Ci19
Ci0KLSN0b2RvLWxpc3QgbGkuZWRpdGluZyB7Ci0gICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKLSAg
ICBwYWRkaW5nOiAwOwotfQotCi0jdG9kby1saXN0IGxpLmVkaXRpbmcgLmVkaXQgewotICAgIGRp
c3BsYXk6IGJsb2NrOwotICAgIHdpZHRoOiA1MDZweDsKLSAgICBwYWRkaW5nOiAxM3B4IDE3cHgg
MTJweCAxN3B4OwotICAgIG1hcmdpbjogMCAwIDAgNDNweDsKLX0KLQotI3RvZG8tbGlzdCBsaS5l
ZGl0aW5nIC52aWV3IHsKLSAgICBkaXNwbGF5OiBub25lOwotfQotCi0jdG9kby1saXN0IGxpIC50
b2dnbGUgewotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgICB3aWR0aDogNDBweDsKLSAgICAv
KiBhdXRvLCBzaW5jZSBub24tV2ViS2l0IGJyb3dzZXJzIGRvZXNuJ3Qgc3VwcG9ydCBpbnB1dCBz
dHlsaW5nICovCi0gICAgaGVpZ2h0OiBhdXRvOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAg
ICB0b3A6IDA7Ci0gICAgYm90dG9tOiAwOwotICAgIG1hcmdpbjogYXV0byAwOwotICAgIGJvcmRl
cjogbm9uZTsgLyogTW9iaWxlIFNhZmFyaSAqLwotICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9u
ZTsKLSAgICAvKi1tb3otYXBwZWFyYW5jZTogbm9uZTsqLwotICAgIC1tcy1hcHBlYXJhbmNlOiBu
b25lOwotICAgIC1vLWFwcGVhcmFuY2U6IG5vbmU7Ci0gICAgYXBwZWFyYW5jZTogbm9uZTsKLX0K
LQotI3RvZG8tbGlzdCBsaSAudG9nZ2xlOmFmdGVyIHsKLSAgICBjb250ZW50OiAn4pyUJzsKLSAg
ICBsaW5lLWhlaWdodDogNDNweDsgLyogNDAgKyBhIGNvdXBsZSBvZiBwaXhlbHMgdmlzdWFsIGFk
anVzdG1lbnQgKi8KLSAgICBmb250LXNpemU6IDIwcHg7Ci0gICAgY29sb3I6ICNkOWQ5ZDk7Ci0g
ICAgdGV4dC1zaGFkb3c6IDAgLTFweCAwICNiZmJmYmY7Ci19Ci0KLSN0b2RvLWxpc3QgbGkgLnRv
Z2dsZTpjaGVja2VkOmFmdGVyIHsKLSAgICBjb2xvcjogIzg1YWRhNzsKLSAgICB0ZXh0LXNoYWRv
dzogMCAxcHggMCAjNjY5OTkxOwotICAgIGJvdHRvbTogMXB4OwotICAgIHBvc2l0aW9uOiByZWxh
dGl2ZTsKLX0KLQotI3RvZG8tbGlzdCBsaSBsYWJlbCB7Ci0gICAgd29yZC1icmVhazogYnJlYWst
d29yZDsKLSAgICBwYWRkaW5nOiAxNXB4OwotICAgIG1hcmdpbi1sZWZ0OiA0NXB4OwotICAgIGRp
c3BsYXk6IGJsb2NrOwotICAgIGxpbmUtaGVpZ2h0OiAxLjI7Ci0gICAgLXdlYmtpdC10cmFuc2l0
aW9uOiBjb2xvciAwLjRzOwotICAgIC1tb3otdHJhbnNpdGlvbjogY29sb3IgMC40czsKLSAgICAt
bXMtdHJhbnNpdGlvbjogY29sb3IgMC40czsKLSAgICAtby10cmFuc2l0aW9uOiBjb2xvciAwLjRz
OwotICAgIHRyYW5zaXRpb246IGNvbG9yIDAuNHM7Ci19Ci0KLSN0b2RvLWxpc3QgbGkuY29tcGxl
dGVkIGxhYmVsIHsKLSAgICBjb2xvcjogI2E5YTlhOTsKLSAgICB0ZXh0LWRlY29yYXRpb246IGxp
bmUtdGhyb3VnaDsKLX0KLQotI3RvZG8tbGlzdCBsaSAuZGVzdHJveSB7Ci0gICAgZGlzcGxheTog
bm9uZTsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAwOwotICAgIHJpZ2h0OiAx
MHB4OwotICAgIGJvdHRvbTogMDsKLSAgICB3aWR0aDogNDBweDsKLSAgICBoZWlnaHQ6IDQwcHg7
Ci0gICAgbWFyZ2luOiBhdXRvIDA7Ci0gICAgZm9udC1zaXplOiAyMnB4OwotICAgIGNvbG9yOiAj
YTg4YThhOwotICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuMnM7Ci0gICAgLW1vei10cmFu
c2l0aW9uOiBhbGwgMC4yczsKLSAgICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuMnM7Ci0gICAgLW8t
dHJhbnNpdGlvbjogYWxsIDAuMnM7Ci0gICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7Ci19Ci0KLSN0
b2RvLWxpc3QgbGkgLmRlc3Ryb3k6aG92ZXIgewotICAgIHRleHQtc2hhZG93OiAwIDAgMXB4ICMw
MDAsCi0gICAgIDAgMCAxMHB4IHJnYmEoMTk5LCAxMDcsIDEwNywgMC44KTsKLSAgICAtd2Via2l0
LXRyYW5zZm9ybTogc2NhbGUoMS4zKTsKLSAgICAtbW96LXRyYW5zZm9ybTogc2NhbGUoMS4zKTsK
LSAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxLjMpOwotICAgIC1vLXRyYW5zZm9ybTogc2NhbGUo
MS4zKTsKLSAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMyk7Ci19Ci0KLSN0b2RvLWxpc3QgbGkgLmRl
c3Ryb3k6YWZ0ZXIgewotICAgIGNvbnRlbnQ6ICfinJYnOwotfQotCi0jdG9kby1saXN0IGxpOmhv
dmVyIC5kZXN0cm95IHsKLSAgICBkaXNwbGF5OiBibG9jazsKLX0KLQotI3RvZG8tbGlzdCBsaSAu
ZWRpdCB7Ci0gICAgZGlzcGxheTogbm9uZTsKLX0KLQotI3RvZG8tbGlzdCBsaS5lZGl0aW5nOmxh
c3QtY2hpbGQgewotICAgIG1hcmdpbi1ib3R0b206IC0xcHg7Ci19Ci0KLSNmb290ZXIgewotICAg
IGNvbG9yOiAjNzc3OwotICAgIHBhZGRpbmc6IDAgMTVweDsKLSAgICBwb3NpdGlvbjogYWJzb2x1
dGU7Ci0gICAgcmlnaHQ6IDA7Ci0gICAgYm90dG9tOiAtMzFweDsKLSAgICBsZWZ0OiAwOwotICAg
IGhlaWdodDogMjBweDsKLSAgICB6LWluZGV4OiAxOwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsK
LX0KLQotI2Zvb3RlcjpiZWZvcmUgewotICAgIGNvbnRlbnQ6ICcnOwotICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKLSAgICByaWdodDogMDsKLSAgICBib3R0b206IDMxcHg7Ci0gICAgbGVmdDogMDsK
LSAgICBoZWlnaHQ6IDUwcHg7Ci0gICAgei1pbmRleDogLTE7Ci0gICAgYm94LXNoYWRvdzogMCAx
cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4zKSwKLSAgICAwIDZweCAwIC0zcHggcmdiYSgyNTUsIDI1
NSwgMjU1LCAwLjgpLAotICAgIDAgN3B4IDFweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4zKSwKLSAg
ICAwIDQzcHggMCAtNnB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KSwKLSAgICAwIDQ0cHggMnB4
IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpOwotfQotCi0jdG9kby1jb3VudCB7Ci0gICAgZmxvYXQ6
IGxlZnQ7Ci0gICAgdGV4dC1hbGlnbjogbGVmdDsKLX0KLQotI2ZpbHRlcnMgewotICAgIG1hcmdp
bjogMDsKLSAgICBwYWRkaW5nOiAwOwotICAgIGxpc3Qtc3R5bGU6IG5vbmU7Ci0gICAgcG9zaXRp
b246IGFic29sdXRlOwotICAgIHJpZ2h0OiAwOwotICAgIGxlZnQ6IDA7Ci19Ci0KLSNmaWx0ZXJz
IGxpIHsKLSAgICBkaXNwbGF5OiBpbmxpbmU7Ci19Ci0KLSNmaWx0ZXJzIGxpIGEgewotICAgIGNv
bG9yOiAjODM3NTZmOwotICAgIG1hcmdpbjogMnB4OwotICAgIHRleHQtZGVjb3JhdGlvbjogbm9u
ZTsKLX0KLQotI2ZpbHRlcnMgbGkgYS5zZWxlY3RlZCB7Ci0gICAgZm9udC13ZWlnaHQ6IGJvbGQ7
Ci19Ci0KLSNjbGVhci1jb21wbGV0ZWQgewotICAgIGZsb2F0OiByaWdodDsKLSAgICBwb3NpdGlv
bjogcmVsYXRpdmU7Ci0gICAgbGluZS1oZWlnaHQ6IDIwcHg7Ci0gICAgdGV4dC1kZWNvcmF0aW9u
OiBub25lOwotICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4xKTsKLSAgICBmb250LXNp
emU6IDExcHg7Ci0gICAgcGFkZGluZzogMCAxMHB4OwotICAgIGJvcmRlci1yYWRpdXM6IDNweDsK
LSAgICBib3gtc2hhZG93OiAwIC0xcHggMCAwIHJnYmEoMCwgMCwgMCwgMC4yKTsKLX0KLQotI2Ns
ZWFyLWNvbXBsZXRlZDpob3ZlciB7Ci0gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjE1
KTsKLSAgICBib3gtc2hhZG93OiAwIC0xcHggMCAwIHJnYmEoMCwgMCwgMCwgMC4zKTsKLX0KLQot
I2luZm8gewotICAgIG1hcmdpbjogNjVweCBhdXRvIDA7Ci0gICAgY29sb3I6ICNhNmE2YTY7Ci0g
ICAgZm9udC1zaXplOiAxMnB4OwotICAgIHRleHQtc2hhZG93OiAwIDFweCAwIHJnYmEoMjU1LCAy
NTUsIDI1NSwgMC43KTsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci19Ci0KLSNpbmZvIGEgewot
ICAgIGNvbG9yOiBpbmhlcml0OwotfQotCi0vKgotICAgIEhhY2sgdG8gcmVtb3ZlIGJhY2tncm91
bmQgZnJvbSBNb2JpbGUgU2FmYXJpLgotICAgIENhbid0IHVzZSBpdCBnbG9iYWxseSBzaW5jZSBp
dCBkZXN0cm95cyBjaGVja2JveGVzIGluIEZpcmVmb3ggYW5kIE9wZXJhCi0qLwotQG1lZGlhIHNj
cmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzowKSB7Ci0gICAgI3RvZ2ds
ZS1hbGwsCi0gICAgI3RvZG8tbGlzdCBsaSAudG9nZ2xlIHsKLSAgICBiYWNrZ3JvdW5kOiBub25l
OwotICAgIH0KLQotICAgICN0b2RvLWxpc3QgbGkgLnRvZ2dsZSB7Ci0gICAgaGVpZ2h0OiA0MHB4
OwotICAgIH0KLQotICAgICN0b2dnbGUtYWxsIHsKLSAgICB0b3A6IC01NnB4OwotICAgIGxlZnQ6
IC0xNXB4OwotICAgIHdpZHRoOiA2NXB4OwotICAgIGhlaWdodDogNDFweDsKLSAgICAtd2Via2l0
LXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKLSAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7
Ci0gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwotICAgIGFwcGVhcmFuY2U6IG5vbmU7Ci0g
ICAgfQotfQotCi0uaGlkZGVuewotICAgIGRpc3BsYXk6bm9uZTsKLX0KLQotaHIgewotICAgIG1h
cmdpbjogMjBweCAwOwotICAgIGJvcmRlcjogMDsKLSAgICBib3JkZXItdG9wOiAxcHggZGFzaGVk
ICNDNUM1QzU7Ci0gICAgYm9yZGVyLWJvdHRvbTogMXB4IGRhc2hlZCAjRjdGN0Y3OwotfQotCi0u
bGVhcm4gYSB7Ci0gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKLSAgICB0ZXh0LWRlY29yYXRpb246
IG5vbmU7Ci0gICAgY29sb3I6ICNiODNmNDU7Ci19Ci0KLS5sZWFybiBhOmhvdmVyIHsKLSAgICB0
ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKLSAgICBjb2xvcjogIzc4N2U3ZTsKLX0KLQotLmxl
YXJuIGgzLAotLmxlYXJuIGg0LAotLmxlYXJuIGg1IHsKLSAgICBtYXJnaW46IDEwcHggMDsKLSAg
ICBmb250LXdlaWdodDogNTAwOwotICAgIGxpbmUtaGVpZ2h0OiAxLjI7Ci0gICAgY29sb3I6ICMw
MDA7Ci19Ci0KLS5sZWFybiBoMyB7Ci0gICAgZm9udC1zaXplOiAyNHB4OwotfQotCi0ubGVhcm4g
aDQgewotICAgIGZvbnQtc2l6ZTogMThweDsKLX0KLQotLmxlYXJuIGg1IHsKLSAgICBtYXJnaW4t
Ym90dG9tOiAwOwotICAgIGZvbnQtc2l6ZTogMTRweDsKLX0KLQotLmxlYXJuIHVsIHsKLSAgICBw
YWRkaW5nOiAwOwotICAgIG1hcmdpbjogMCAwIDMwcHggMjVweDsKLX0KLQotLmxlYXJuIGxpIHsK
LSAgICBsaW5lLWhlaWdodDogMjBweDsKLX0KLQotLmxlYXJuIHAgewotICAgIGZvbnQtc2l6ZTog
MTVweDsKLSAgICBmb250LXdlaWdodDogMzAwOwotICAgIGxpbmUtaGVpZ2h0OiAxLjM7Ci0gICAg
bWFyZ2luLXRvcDogMDsKLSAgICBtYXJnaW4tYm90dG9tOiAwOwotfQotCi0ucXVvdGUgewotICAg
IGJvcmRlcjogbm9uZTsKLSAgICBtYXJnaW46IDIwcHggMCA2MHB4IDA7Ci19Ci0KLS5xdW90ZSBw
IHsKLSAgICBmb250LXN0eWxlOiBpdGFsaWM7Ci19Ci0KLS5xdW90ZSBwOmJlZm9yZSB7Ci0gICAg
Y29udGVudDogJ+KAnCc7Ci0gICAgZm9udC1zaXplOiA1MHB4OwotICAgIG9wYWNpdHk6IC4xNTsK
LSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAtMjBweDsKLSAgICBsZWZ0OiAzcHg7
Ci19Ci0KLS5xdW90ZSBwOmFmdGVyIHsKLSAgICBjb250ZW50OiAn4oCdJzsKLSAgICBmb250LXNp
emU6IDUwcHg7Ci0gICAgb3BhY2l0eTogLjE1OwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAg
ICBib3R0b206IC00MnB4OwotICAgIHJpZ2h0OiAzcHg7Ci19Ci0KLS5xdW90ZSBmb290ZXIgewot
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICBib3R0b206IC00MHB4OwotICAgIHJpZ2h0OiAw
OwotfQotCi0ucXVvdGUgZm9vdGVyIGltZyB7Ci0gICAgYm9yZGVyLXJhZGl1czogM3B4OwotfQot
Ci0ucXVvdGUgZm9vdGVyIGEgewotICAgIG1hcmdpbi1sZWZ0OiA1cHg7Ci0gICAgdmVydGljYWwt
YWxpZ246IG1pZGRsZTsKLX0KLQotLnNwZWVjaC1idWJibGUgewotICAgIHBvc2l0aW9uOiByZWxh
dGl2ZTsKLSAgICBwYWRkaW5nOiAxMHB4OwotICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwg
LjA0KTsKLSAgICBib3JkZXItcmFkaXVzOiA1cHg7Ci19Ci0KLS5zcGVlY2gtYnViYmxlOmFmdGVy
IHsKLSAgICBjb250ZW50OiAnJzsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAx
MDAlOwotICAgIHJpZ2h0OiAzMHB4OwotICAgIGJvcmRlcjogMTNweCBzb2xpZCB0cmFuc3BhcmVu
dDsKLSAgICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4wNCk7Ci19Ci0KLS8qKmJv
ZHkqLy5sZWFybi1iYXIgPiAubGVhcm4gewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB3
aWR0aDogMjcycHg7Ci0gICAgdG9wOiA4cHg7Ci0gICAgbGVmdDogLTMwMHB4OwotICAgIHBhZGRp
bmc6IDEwcHg7Ci0gICAgYm9yZGVyLXJhZGl1czogNXB4OwotICAgIGJhY2tncm91bmQtY29sb3I6
IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjYpOwotICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGxlZnQ7
Ci0gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogNTAwbXM7Ci19Ci0KLUBtZWRpYSAobWluLXdpZHRo
OiA4OTlweCkgewotICAgIC8qKmJvZHkqLy5sZWFybi1iYXIgewotICAgIHdpZHRoOiBhdXRvOwot
ICAgIG1hcmdpbjogMCAwIDAgMzAwcHg7Ci0gICAgfQotICAgIC8qKmJvZHkqLy5sZWFybi1iYXIg
PiAubGVhcm4gewotICAgIGxlZnQ6IDhweDsKLSAgICB9Ci0gICAgLyoqYm9keSovLmxlYXJuLWJh
ciAjdG9kb2FwcCB7Ci0gICAgd2lkdGg6IDU1MHB4OwotICAgIG1hcmdpbjogMTMwcHggYXV0byA0
MHB4IGF1dG87Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9ib3dlcl9j
b21wb25lbnRzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2Jvd2Vy
X2NvbXBvbmVudHMvdG9kb212Yy1jb21tb24vYmFzZS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZjliZjQyNDBmYWQ5YTljMTE5NGM4MTU4NmRjMjkxNmJlYzFjY2E3OC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpz
L2Jvd2VyX2NvbXBvbmVudHMvdG9kb212Yy1jb21tb24vYmFzZS5qcworKysgL2Rldi9udWxsCkBA
IC0xLDIwOSArMCwwIEBACi0oZnVuY3Rpb24gKCkgewotICAgICd1c2Ugc3RyaWN0JzsKLQotICAg
IC8vIFVuZGVyc2NvcmUncyBUZW1wbGF0ZSBNb2R1bGUKLSAgICAvLyBDb3VydGVzeSBvZiB1bmRl
cnNjb3JlanMub3JnCi0gICAgdmFyIF8gPSAoZnVuY3Rpb24gKF8pIHsKLSAgICBfLmRlZmF1bHRz
ID0gZnVuY3Rpb24gKG9iamVjdCkgewotICAgIGlmICghb2JqZWN0KSB7Ci0gICAgcmV0dXJuIG9i
amVjdDsKLSAgICB9Ci0gICAgZm9yICh2YXIgYXJnc0luZGV4ID0gMSwgYXJnc0xlbmd0aCA9IGFy
Z3VtZW50cy5sZW5ndGg7IGFyZ3NJbmRleCA8IGFyZ3NMZW5ndGg7IGFyZ3NJbmRleCsrKSB7Ci0g
ICAgdmFyIGl0ZXJhYmxlID0gYXJndW1lbnRzW2FyZ3NJbmRleF07Ci0gICAgaWYgKGl0ZXJhYmxl
KSB7Ci0gICAgZm9yICh2YXIga2V5IGluIGl0ZXJhYmxlKSB7Ci0gICAgaWYgKG9iamVjdFtrZXld
ID09IG51bGwpIHsKLSAgICBvYmplY3Rba2V5XSA9IGl0ZXJhYmxlW2tleV07Ci0gICAgfQotICAg
IH0KLSAgICB9Ci0gICAgfQotICAgIHJldHVybiBvYmplY3Q7Ci0gICAgfQotCi0gICAgLy8gQnkg
ZGVmYXVsdCwgVW5kZXJzY29yZSB1c2VzIEVSQi1zdHlsZSB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLCBj
aGFuZ2UgdGhlCi0gICAgLy8gZm9sbG93aW5nIHRlbXBsYXRlIHNldHRpbmdzIHRvIHVzZSBhbHRl
cm5hdGl2ZSBkZWxpbWl0ZXJzLgotICAgIF8udGVtcGxhdGVTZXR0aW5ncyA9IHsKLSAgICBldmFs
dWF0ZSAgICA6IC88JShbXHNcU10rPyklPi9nLAotICAgIGludGVycG9sYXRlIDogLzwlPShbXHNc
U10rPyklPi9nLAotICAgIGVzY2FwZSAgICAgIDogLzwlLShbXHNcU10rPyklPi9nCi0gICAgfTsK
LQotICAgIC8vIFdoZW4gY3VzdG9taXppbmcgYHRlbXBsYXRlU2V0dGluZ3NgLCBpZiB5b3UgZG9u
J3Qgd2FudCB0byBkZWZpbmUgYW4KLSAgICAvLyBpbnRlcnBvbGF0aW9uLCBldmFsdWF0aW9uIG9y
IGVzY2FwaW5nIHJlZ2V4LCB3ZSBuZWVkIG9uZSB0aGF0IGlzCi0gICAgLy8gZ3VhcmFudGVlZCBu
b3QgdG8gbWF0Y2guCi0gICAgdmFyIG5vTWF0Y2ggPSAvKC4pXi87Ci0KLSAgICAvLyBDZXJ0YWlu
IGNoYXJhY3RlcnMgbmVlZCB0byBiZSBlc2NhcGVkIHNvIHRoYXQgdGhleSBjYW4gYmUgcHV0IGlu
dG8gYQotICAgIC8vIHN0cmluZyBsaXRlcmFsLgotICAgIHZhciBlc2NhcGVzID0gewotICAgICIn
IjogICAgICAiJyIsCi0gICAgJ1xcJzogICAgICdcXCcsCi0gICAgJ1xyJzogICAgICdyJywKLSAg
ICAnXG4nOiAgICAgJ24nLAotICAgICdcdCc6ICAgICAndCcsCi0gICAgJ1x1MjAyOCc6ICd1MjAy
OCcsCi0gICAgJ1x1MjAyOSc6ICd1MjAyOScKLSAgICB9OwotCi0gICAgdmFyIGVzY2FwZXIgPSAv
XFx8J3xccnxcbnxcdHxcdTIwMjh8XHUyMDI5L2c7Ci0KLSAgICAvLyBKYXZhU2NyaXB0IG1pY3Jv
LXRlbXBsYXRpbmcsIHNpbWlsYXIgdG8gSm9obiBSZXNpZydzIGltcGxlbWVudGF0aW9uLgotICAg
IC8vIFVuZGVyc2NvcmUgdGVtcGxhdGluZyBoYW5kbGVzIGFyYml0cmFyeSBkZWxpbWl0ZXJzLCBw
cmVzZXJ2ZXMgd2hpdGVzcGFjZSwKLSAgICAvLyBhbmQgY29ycmVjdGx5IGVzY2FwZXMgcXVvdGVz
IHdpdGhpbiBpbnRlcnBvbGF0ZWQgY29kZS4KLSAgICBfLnRlbXBsYXRlID0gZnVuY3Rpb24odGV4
dCwgZGF0YSwgc2V0dGluZ3MpIHsKLSAgICB2YXIgcmVuZGVyOwotICAgIHNldHRpbmdzID0gXy5k
ZWZhdWx0cyh7fSwgc2V0dGluZ3MsIF8udGVtcGxhdGVTZXR0aW5ncyk7Ci0KLSAgICAvLyBDb21i
aW5lIGRlbGltaXRlcnMgaW50byBvbmUgcmVndWxhciBleHByZXNzaW9uIHZpYSBhbHRlcm5hdGlv
bi4KLSAgICB2YXIgbWF0Y2hlciA9IG5ldyBSZWdFeHAoWwotICAgIChzZXR0aW5ncy5lc2NhcGUg
fHwgbm9NYXRjaCkuc291cmNlLAotICAgIChzZXR0aW5ncy5pbnRlcnBvbGF0ZSB8fCBub01hdGNo
KS5zb3VyY2UsCi0gICAgKHNldHRpbmdzLmV2YWx1YXRlIHx8IG5vTWF0Y2gpLnNvdXJjZQotICAg
IF0uam9pbignfCcpICsgJ3wkJywgJ2cnKTsKLQotICAgIC8vIENvbXBpbGUgdGhlIHRlbXBsYXRl
IHNvdXJjZSwgZXNjYXBpbmcgc3RyaW5nIGxpdGVyYWxzIGFwcHJvcHJpYXRlbHkuCi0gICAgdmFy
IGluZGV4ID0gMDsKLSAgICB2YXIgc291cmNlID0gIl9fcCs9JyI7Ci0gICAgdGV4dC5yZXBsYWNl
KG1hdGNoZXIsIGZ1bmN0aW9uKG1hdGNoLCBlc2NhcGUsIGludGVycG9sYXRlLCBldmFsdWF0ZSwg
b2Zmc2V0KSB7Ci0gICAgc291cmNlICs9IHRleHQuc2xpY2UoaW5kZXgsIG9mZnNldCkKLSAgICAu
cmVwbGFjZShlc2NhcGVyLCBmdW5jdGlvbihtYXRjaCkgeyByZXR1cm4gJ1xcJyArIGVzY2FwZXNb
bWF0Y2hdOyB9KTsKLQotICAgIGlmIChlc2NhcGUpIHsKLSAgICBzb3VyY2UgKz0gIicrXG4oKF9f
dD0oIiArIGVzY2FwZSArICIpKT09bnVsbD8nJzpfLmVzY2FwZShfX3QpKStcbiciOwotICAgIH0K
LSAgICBpZiAoaW50ZXJwb2xhdGUpIHsKLSAgICBzb3VyY2UgKz0gIicrXG4oKF9fdD0oIiArIGlu
dGVycG9sYXRlICsgIikpPT1udWxsPycnOl9fdCkrXG4nIjsKLSAgICB9Ci0gICAgaWYgKGV2YWx1
YXRlKSB7Ci0gICAgc291cmNlICs9ICInO1xuIiArIGV2YWx1YXRlICsgIlxuX19wKz0nIjsKLSAg
ICB9Ci0gICAgaW5kZXggPSBvZmZzZXQgKyBtYXRjaC5sZW5ndGg7Ci0gICAgcmV0dXJuIG1hdGNo
OwotICAgIH0pOwotICAgIHNvdXJjZSArPSAiJztcbiI7Ci0KLSAgICAvLyBJZiBhIHZhcmlhYmxl
IGlzIG5vdCBzcGVjaWZpZWQsIHBsYWNlIGRhdGEgdmFsdWVzIGluIGxvY2FsIHNjb3BlLgotICAg
IGlmICghc2V0dGluZ3MudmFyaWFibGUpIHNvdXJjZSA9ICd3aXRoKG9ianx8e30pe1xuJyArIHNv
dXJjZSArICd9XG4nOwotCi0gICAgc291cmNlID0gInZhciBfX3QsX19wPScnLF9faj1BcnJheS5w
cm90b3R5cGUuam9pbiwiICsKLSAgICAicHJpbnQ9ZnVuY3Rpb24oKXtfX3ArPV9fai5jYWxsKGFy
Z3VtZW50cywnJyk7fTtcbiIgKwotICAgIHNvdXJjZSArICJyZXR1cm4gX19wO1xuIjsKLQotICAg
IHRyeSB7Ci0gICAgcmVuZGVyID0gbmV3IEZ1bmN0aW9uKHNldHRpbmdzLnZhcmlhYmxlIHx8ICdv
YmonLCAnXycsIHNvdXJjZSk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgIGUuc291cmNlID0gc291
cmNlOwotICAgIHRocm93IGU7Ci0gICAgfQotCi0gICAgaWYgKGRhdGEpIHJldHVybiByZW5kZXIo
ZGF0YSwgXyk7Ci0gICAgdmFyIHRlbXBsYXRlID0gZnVuY3Rpb24oZGF0YSkgewotICAgIHJldHVy
biByZW5kZXIuY2FsbCh0aGlzLCBkYXRhLCBfKTsKLSAgICB9OwotCi0gICAgLy8gUHJvdmlkZSB0
aGUgY29tcGlsZWQgZnVuY3Rpb24gc291cmNlIGFzIGEgY29udmVuaWVuY2UgZm9yIHByZWNvbXBp
bGF0aW9uLgotICAgIHRlbXBsYXRlLnNvdXJjZSA9ICdmdW5jdGlvbignICsgKHNldHRpbmdzLnZh
cmlhYmxlIHx8ICdvYmonKSArICcpe1xuJyArIHNvdXJjZSArICd9JzsKLQotICAgIHJldHVybiB0
ZW1wbGF0ZTsKLSAgICB9OwotCi0gICAgcmV0dXJuIF87Ci0gICAgfSkoe30pOwotCi0gICAgaWYg
KGxvY2F0aW9uLmhvc3RuYW1lID09PSAndG9kb212Yy5jb20nKSB7Ci0gICAgd2luZG93Ll9nYXEg
PSBbWydfc2V0QWNjb3VudCcsJ1VBLTMxMDgxMDYyLTEnXSxbJ190cmFja1BhZ2V2aWV3J11dOyhm
dW5jdGlvbihkLHQpe3ZhciBnPWQuY3JlYXRlRWxlbWVudCh0KSxzPWQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUodClbMF07Zy5zcmM9Jy8vd3d3Lmdvb2dsZS1hbmFseXRpY3MuY29tL2dhLmpzJztzLnBh
cmVudE5vZGUuaW5zZXJ0QmVmb3JlKGcscyl9KGRvY3VtZW50LCdzY3JpcHQnKSk7Ci0gICAgfQot
Ci0gICAgZnVuY3Rpb24gcmVkaXJlY3QoKSB7Ci0gICAgaWYgKGxvY2F0aW9uLmhvc3RuYW1lID09
PSAndGFzdGVqcy5naXRodWIuaW8nKSB7Ci0gICAgbG9jYXRpb24uaHJlZiA9IGxvY2F0aW9uLmhy
ZWYucmVwbGFjZSgndGFzdGVqcy5naXRodWIuaW8vdG9kb212YycsICd0b2RvbXZjLmNvbScpOwot
ICAgIH0KLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBmaW5kUm9vdCgpIHsKLSAgICB2YXIgYmFzZTsK
LQotICAgIFsvbGFicy8sIC9cdyotZXhhbXBsZXMvXS5mb3JFYWNoKGZ1bmN0aW9uIChocmVmKSB7
Ci0gICAgdmFyIG1hdGNoID0gbG9jYXRpb24uaHJlZi5tYXRjaChocmVmKTsKLQotICAgIGlmICgh
YmFzZSAmJiBtYXRjaCkgewotICAgIGJhc2UgPSBsb2NhdGlvbi5ocmVmLmluZGV4T2YobWF0Y2gp
OwotICAgIH0KLSAgICB9KTsKLQotICAgIHJldHVybiBsb2NhdGlvbi5ocmVmLnN1YnN0cigwLCBi
YXNlKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBnZXRGaWxlKGZpbGUsIGNhbGxiYWNrKSB7Ci0g
ICAgaWYgKCFsb2NhdGlvbi5ob3N0KSB7Ci0gICAgcmV0dXJuIGNvbnNvbGUuaW5mbygnTWlzcyB0
aGUgaW5mbyBiYXI/IFJ1biBUb2RvTVZDIGZyb20gYSBzZXJ2ZXIgdG8gYXZvaWQgYSBjcm9zcy1v
cmlnaW4gZXJyb3IuJyk7Ci0gICAgfQotCi0gICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVz
dCgpOwotCi0gICAgeGhyLm9wZW4oJ0dFVCcsIGZpbmRSb290KCkgKyBmaWxlLCB0cnVlKTsKLSAg
ICB4aHIuc2VuZCgpOwotCi0gICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKLSAgICBpZiAo
eGhyLnN0YXR1cyA9PT0gMjAwICYmIGNhbGxiYWNrKSB7Ci0gICAgY2FsbGJhY2soeGhyLnJlc3Bv
bnNlVGV4dCk7Ci0gICAgfQotICAgIH07Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gTGVhcm4obGVh
cm5KU09OLCBjb25maWcpIHsKLSAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgTGVhcm4pKSB7Ci0g
ICAgcmV0dXJuIG5ldyBMZWFybihsZWFybkpTT04sIGNvbmZpZyk7Ci0gICAgfQotCi0gICAgdmFy
IHRlbXBsYXRlLCBmcmFtZXdvcms7Ci0KLSAgICBpZiAodHlwZW9mIGxlYXJuSlNPTiAhPT0gJ29i
amVjdCcpIHsKLSAgICB0cnkgewotICAgIGxlYXJuSlNPTiA9IEpTT04ucGFyc2UobGVhcm5KU09O
KTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgcmV0dXJuOwotICAgIH0KLSAgICB9Ci0KLSAgICBp
ZiAoY29uZmlnKSB7Ci0gICAgdGVtcGxhdGUgPSBjb25maWcudGVtcGxhdGU7Ci0gICAgZnJhbWV3
b3JrID0gY29uZmlnLmZyYW1ld29yazsKLSAgICB9Ci0KLSAgICBpZiAoIXRlbXBsYXRlICYmIGxl
YXJuSlNPTi50ZW1wbGF0ZXMpIHsKLSAgICB0ZW1wbGF0ZSA9IGxlYXJuSlNPTi50ZW1wbGF0ZXMu
dG9kb212YzsKLSAgICB9Ci0KLSAgICBpZiAoIWZyYW1ld29yayAmJiBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCdbZGF0YS1mcmFtZXdvcmtdJykpIHsKLSAgICBmcmFtZXdvcmsgPSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCdbZGF0YS1mcmFtZXdvcmtdJykuZ2V0QXR0cmlidXRlKCdkYXRhLWZyYW1l
d29yaycpOwotICAgIH0KLQotCi0gICAgaWYgKHRlbXBsYXRlICYmIGxlYXJuSlNPTltmcmFtZXdv
cmtdKSB7Ci0gICAgdGhpcy5mcmFtZXdvcmtKU09OID0gbGVhcm5KU09OW2ZyYW1ld29ya107Ci0g
ICAgdGhpcy50ZW1wbGF0ZSA9IHRlbXBsYXRlOwotCi0gICAgdGhpcy5hcHBlbmQoKTsKLSAgICB9
Ci0gICAgfQotCi0gICAgTGVhcm4ucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uICgpIHsKLSAg
ICB2YXIgYXNpZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhc2lkZScpOwotICAgIGFzaWRl
LmlubmVySFRNTCA9IF8udGVtcGxhdGUodGhpcy50ZW1wbGF0ZSwgdGhpcy5mcmFtZXdvcmtKU09O
KTsKLSAgICBhc2lkZS5jbGFzc05hbWUgPSAnbGVhcm4nOwotCi0gICAgLy8gTG9jYWxpemUgZGVt
byBsaW5rcwotICAgIHZhciBkZW1vTGlua3MgPSBhc2lkZS5xdWVyeVNlbGVjdG9yQWxsKCcuZGVt
by1saW5rJyk7Ci0gICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChkZW1vTGlua3MsIGZ1
bmN0aW9uIChkZW1vTGluaykgewotICAgIGRlbW9MaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIGZp
bmRSb290KCkgKyBkZW1vTGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSk7Ci0gICAgfSk7Ci0KLSAg
ICBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9IChkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSArICcg
bGVhcm4tYmFyJykudHJpbSgpOwotICAgIGRvY3VtZW50LmJvZHkuaW5zZXJ0QWRqYWNlbnRIVE1M
KCdhZnRlckJlZ2luJywgYXNpZGUub3V0ZXJIVE1MKTsKLSAgICB9OwotCi0gICAgcmVkaXJlY3Qo
KTsKLSAgICBnZXRGaWxlKCdsZWFybi5qc29uJywgTGVhcm4pOwotfSkoKTsKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1l
eGFtcGxlcy92YW5pbGxhanMvYm93ZXJfY29tcG9uZW50cy90b2RvbXZjLWNvbW1vbi9iZy5wbmcg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEt
ZXhhbXBsZXMvdmFuaWxsYWpzL2Jvd2VyX2NvbXBvbmVudHMvdG9kb212Yy1jb21tb24vYmcucG5n
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMmE3NjAwODI1ZWUxMWYyMTg0OWVkNDc1
NDk5YzdkMWVjYmNjODcwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFsIDIxMjYKemNt
Vi1VMihrQnhQKTxoOzNLfExrMDAwZTFOSkxUcTAwM2tGMDAza0gwe3tSMzRVQiFxMDAwMENQKXQt
cz8oWGpFCno+Kzl5YD1ISzdudD1+M3QwMDBPNU5rbDxaY3dUanUoUTR2fjdLV0VXI1ltP2xLX3Y7
VG18IUZjKUBOd0VubXRzaAp6eCFPfno4MUpUM3BGc20+bT0wNGhWYV9sWGxfYm09K007PWVJPCUk
ck8ydGFgc3VoKlNyI1BPdyo/YWRxIU8hQ1YKeiowJmIpcmtDQ0VWKTFuSXVpTEJudFVILU1KSTsm
cVlnenxkQE5obm5fYWJpMmdgcHU0TkFNVmlkM2hTJT9xdXp+CnpqbEpmKHg4Y2o8UEdjam4qSith
eyZINXAqbjUkNWUzPzxLQ2M/bzA2bUFzTlNiZ1BXTz9QeiNDem48IT17PntWUwp6VVZFUDFtc2c5
YF5PRlVoU081cnRYSGhSbHlVMmk+NiRCVD1nbEdge0psY3RHSHJ3UkltKTZCdXU2NWpMUW5eSDgK
enZsOWxacVVCQSslcXZNNVhDK3lZQG1mQShZQn5YUD1lfDY8eyUkXmVVOG5ySz92MmNjYkBKb201
Q0c+cktBTDdKCnpwbEhFSWF2VnB8MHAxJm0hR2BUaT88N2laO31ARzcjWil9S20lMiFGSG5RMCom
P1BMUilHIUhBYUhnVSNjfCRkegp6cGojMEhtZWFkSWU+YCMpPUpqa2J7Qj1GS25VM3BjLSZZQGpf
ajYoaDRZfitVcTxQVTM2Qzs1Yj1NXkZgPXAxZEkKems8Q1FPUE5hNz4hXko9TEh1bngxeGk0UVhL
LVl7Jk1vVDhreTZWYjljfFdobk93Rn5jPTN6T3k4YWdrdGxpUzYjCnpgIzhGYDlIKUQ9Ym1rOUI1
TW5XJl9yIylmJGMrOyRMU3ItQF5BbjhkaGN+SXF1dXY+ak9LN3B3N0xKOyZYMGkxQwp6R01zSGRQ
MU9zQG55JCRqIT5YQWlpJTdicDVrPmBweU5BIX5lcGIpKClwOXpSNFlsNno9VX17Q0lkaDF6KEZw
QW8KelFJVyE7MHpwQ3lDNCo3WUxrWkNPQGN1bDBSXyZ6Z2hzQThFayl6JTwhcC1idnNzcGxZWTJ9
UDshdjRDWWo5a21GCnpiMGJOX200VipmXllaTW9iMihqM3BLan43diNadGtzPUlvK3tzdSVXaXVr
ZEpIJGI/ZlpraUE9UFlfM09oREJrbwp6KExUUUhZJkZeXjJoRy1ZYCpaOTN2Yn5jPyooSmNoRGpU
ZkNzP3pSbSpgKk4qVi0kPT9RcXRoblNyKj9PUzNzaksKem88X1VeZnt+YWc2MHVsPmpOcEthOTJ7
QE5IK1NzdFglQH14QipKayFsfVBaMWNDbEluc359NV4hUm5jVWsqcm1BCnolU0lWZ3Q1OEVReExK
K09pRnE8eXU0ZU9EfDlMdDNkTnNlZnhPdXEpRCYkXyVqMERncUN5MWd6Y3x0VEQzKm1lZQp6ez0l
fDxgYH1fSHlwaE91ezspeGtSZytRbkhDQzNUZitrc3BxVjYqfFFLLVJjcUR9ND5La0J1d3F1eVpM
VXB8Z3IKelBVYlViRmJCclBkMXhPYF5DKnItaTNwOSpGIyhPQmghNFd5QGFDJiohfE98R1hjakRB
JlloRns7Y0Q3Km8oR1NeCnpAcFFTRTcpeF84MT1ReWplNipMUSNUWHUtNyhvO1M4dTN0cERBPFNn
Y0tjS09wbUE7PUhCWlNAT0ZUQF9YT3Z4cQp6Kk58M0tMeXRnekg2R1UmJlVvYzRaems0bHVtM1B7
OT9mcEk0K1FHUEordjZgMWxmUnEzTGNTKihNKldLK3xiJU8KemUkej4wX2RkaiVobUNzcGVYZGhZ
Un0taTlBPUNgRW9DaFVZdUh+XnghOSt8JihQZ2IqPkNrPD05anwpKkB4eWZUCnpwUCMrS3Q8fTM5
YnwzV2w0ZnhUKCtHP2FIPmdHXmRATUVhVU9KUmZ5NTVUdEZJN15ZKVZ1TVU9N1BwMHk1NWpTfgp6
K1RKKWlnTXlycWtYO3dVOGo2OGlJRHRxSlloU19EM19PZW0tQGc2bWVfUmZpUX11VF9LLUEtOXFH
JX1nazNFOWMKeiE4YEtnc01OWG0pYmVsb1BmTXFsKnwmJE0+MXFgaSFjWSlSRlluak5ZdSpnU3ZA
OFhlYlY3JX14WUw+NilHSlBKCnpKcEE3SzMxbGNKdUlGS1N3LXt4NEZYMEsyQXopflhnPGBzT3Uk
NHxePE1DN0AreGJ3eHNHZ1R2SklBTGpQezY4TAp6OEFZdVNHUzBHVWdrNldgdjRXO1J5KnVvRVRu
dWxQaXw1NzMlbHYqWnh3I3Y2eVVRXk1PZmNwVCNWOFJJRFYjI04KekQxYCtBZW1zT2gpd2JXREV4
VmNmcEt6KWp5Vj08fiZaWFBnNmN8WkRFN1U0Yms8RF4+LSheWEpYNFl6b2lOUnZMCnp5dVk3fjI2
dy1QXlp3JTZGfXNoQndWMiQwMmM4UnNTVXk2ZE05MmRpQ0F4aVgzSVVxc3E1aWc2PlVfIVZ5KnE1
JAp6am19MTZ0SnIrUVomVD9Ia2twZUl3VlgtcjFFST1AJVpsdDs2PHR3SDg2SUQ+ZyptaiZFIUEp
KSVnWEo9eDZ1I2wKemNLRVA+Yng0cnFWKmtgQkJyWiRNcWp0e1RzSGN4VUg+OylpQUt9QihLaWxh
JlZEJWI/Nm0mXjBXSzReJkVaTkFJCno4QU1Zc18lJEQlfE0rQCtjUXFMLWhpNHlHPmgqandkaWkh
VzF7fXA+Wmh3Rll0XzRTdTFralk5PGJBWmp6fjllawp6X0RpYXIrQWZKRlBfOUB5bVVvJEtXPjwt
NWAhJFZOT0kxeShFRFNINFdwQ2lqRV8+YWwhTnQ9XmVWRVIjdUoxPWIKejtCV0YySWd5RjVMZXhW
K3llYyRLaW47QWlAbXlvO0c+ekomanJkVyNlY1hoSVpwaDVPWXF3X1BFZmNGNTY8TzE5CnpMKThy
IUtNKClpZjBgQD9XNChKZGMpN1dvUEdeJj0kPHpVc00rSENXYWtDXjN0WnhrK1BqUUd9Qj5aNTxa
NlZ4dwp6QkBIclYkJmx+QFRhajcwcGNle2lTdVJMc1VjekRZXzVUbkRxOFB5X1Ezd2hgRDghNGpL
O3ZGZFJQK1EwPXpKeSoKenp1V2QlIWFpQER7fCpKPEk7T0QmaSVse0pwLTgqUHUzVkdMV2l5azZ2
I1htUXF3YC0rJWUkfENKdypAYDV6YjM8CnpFfXojO2tSaEwmcTVQREc2QG1tKiQ+WnVfWlpFI3Ez
TWMrTiYxT143aG9oOVFSN2ArTCRjQlA1cHFHPWZxQTB1aAp6VUJ1a2F4VEZtSCk8fFhidnAyYz1I
U2JOa3BYdzczYTVsdjdWJGpiOTIjeVoxNDFAJFg/Rn1KdDhnSVU3V202bTkKej9lXzs7enNubTZg
TFplUD5UPSQpS3I+Wj9rcipVbUZxUjd6eDBDNl5ibWNzY0AxQUd0d19yTkg+LVhtJGQqfFE8Cnpu
JjFMbjB1Nz1sJklMcz4lQ2tKcGBEaUc5RjE4eDROZStsZzwjaT9lN2pMJXg7NFpuUmtOXk14MDcq
cW9NNk48JApFZig+ME4hMmtkTgoKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvaW5kZXgu
aHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFu
aWxsYS1leGFtcGxlcy92YW5pbGxhanMvaW5kZXguaHRtbAppbmRleCA0NzdiOWJmNTgwZDkyZDY5
YTA2NDczNmNkNjUyMjFlOTY3NWNiOGNlLi42ZDk0NGM0Zjg4NmZhZDM0ODBmZGRmM2YyYTBhZGY2
Y2ViMmQxOTIzIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2luZGV4Lmh0bWwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4
YW1wbGVzL3ZhbmlsbGFqcy9pbmRleC5odG1sCkBAIC0xLDUzICsxLDUxIEBACiA8IWRvY3R5cGUg
aHRtbD4KIDxodG1sIGxhbmc9ImVuIiBkYXRhLWZyYW1ld29yaz0iamF2YXNjcmlwdCI+CiAgICAg
PGhlYWQ+Ci0gICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgotICAgIDxtZXRhIGh0dHAtZXF1aXY9
IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSI+Ci0gICAgPHRpdGxlPlZhbmlsbGFK
UyDigKIgVG9kb01WQzwvdGl0bGU+Ci0gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJi
b3dlcl9jb21wb25lbnRzL3RvZG9tdmMtY29tbW9uL2Jhc2UuY3NzIj4KKyAgICAgICAgPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorICAgICAgICA8dGl0bGU+VmFuaWxsYUpTIOKAoiBUb2RvTVZDPC90
aXRsZT4KKyAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJub2RlX21vZHVsZXMv
dG9kb212Yy1jb21tb24vYmFzZS5jc3MiPgorICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Im5vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvaW5kZXguY3NzIj4KICAgICA8L2hl
YWQ+CiAgICAgPGJvZHk+Ci0gICAgPHNlY3Rpb24gaWQ9InRvZG9hcHAiPgotICAgIDxoZWFkZXIg
aWQ9ImhlYWRlciI+Ci0gICAgPGgxPnRvZG9zPC9oMT4KLSAgICA8aW5wdXQgaWQ9Im5ldy10b2Rv
IiBwbGFjZWhvbGRlcj0iV2hhdCBuZWVkcyB0byBiZSBkb25lPyIgYXV0b2ZvY3VzPgotICAgIDwv
aGVhZGVyPgotICAgIDxzZWN0aW9uIGlkPSJtYWluIj4KLSAgICA8aW5wdXQgaWQ9InRvZ2dsZS1h
bGwiIHR5cGU9ImNoZWNrYm94Ij4KLSAgICA8bGFiZWwgZm9yPSJ0b2dnbGUtYWxsIj5NYXJrIGFs
bCBhcyBjb21wbGV0ZTwvbGFiZWw+Ci0gICAgPHVsIGlkPSJ0b2RvLWxpc3QiPjwvdWw+Ci0gICAg
PC9zZWN0aW9uPgotICAgIDxmb290ZXIgaWQ9ImZvb3RlciI+Ci0gICAgPHNwYW4gaWQ9InRvZG8t
Y291bnQiPjwvc3Bhbj4KLSAgICA8dWwgaWQ9ImZpbHRlcnMiPgotICAgIDxsaT4KLSAgICA8YSBo
cmVmPSIjLyI+QWxsPC9hPgotICAgIDwvbGk+Ci0gICAgPGxpPgotICAgIDxhIGhyZWY9IiMvYWN0
aXZlIj5BY3RpdmU8L2E+Ci0gICAgPC9saT4KLSAgICA8bGk+Ci0gICAgPGEgaHJlZj0iIy9jb21w
bGV0ZWQiPkNvbXBsZXRlZDwvYT4KLSAgICA8L2xpPgotICAgIDwvdWw+Ci0gICAgPGJ1dHRvbiBp
ZD0iY2xlYXItY29tcGxldGVkIj5DbGVhciBjb21wbGV0ZWQ8L2J1dHRvbj4KLSAgICA8L2Zvb3Rl
cj4KLSAgICA8L3NlY3Rpb24+Ci0gICAgPGZvb3RlciBpZD0iaW5mbyI+Ci0gICAgPHA+RG91Ymxl
LWNsaWNrIHRvIGVkaXQgYSB0b2RvPC9wPgotICAgIDxwPkNyZWF0ZWQgYnkgPGEgaHJlZj0iaHR0
cDovL3R3aXR0ZXIuY29tL29zY2FyZ29kc29uIj5Pc2NhciBHb2Rzb248L2E+PC9wPgotICAgIDxw
PlBhcnQgb2YgPGEgaHJlZj0iaHR0cDovL3RvZG9tdmMuY29tIj5Ub2RvTVZDPC9hPjwvcD4KLSAg
ICA8L2Zvb3Rlcj4KLSAgICA8c2NyaXB0IHNyYz0iYm93ZXJfY29tcG9uZW50cy90b2RvbXZjLWNv
bW1vbi9iYXNlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0PgotICAgIC8vIEJvb3RzdHJhcCBh
cHAgZGF0YQotICAgIHdpbmRvdy5hcHAgPSB7fTsKLSAgICA8L3NjcmlwdD4KLSAgICA8c2NyaXB0
IHNyYz0ianMvaGVscGVycy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9ImpzL3N0b3Jl
LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0ianMvbW9kZWwuanMiPjwvc2NyaXB0Pgot
ICAgIDxzY3JpcHQgc3JjPSJqcy92aWV3LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0i
anMvY29udHJvbGxlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9ImpzL2FwcC5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJ0b2RvYXBwIj4KKyAgICAgICAgICAg
IDxoZWFkZXIgY2xhc3M9ImhlYWRlciI+CisgICAgICAgICAgICAgICAgPGgxPnRvZG9zPC9oMT4K
KyAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9Im5ldy10b2RvIiBwbGFjZWhvbGRlcj0iV2hh
dCBuZWVkcyB0byBiZSBkb25lPyIgYXV0b2ZvY3VzPgorICAgICAgICAgICAgPC9oZWFkZXI+Cisg
ICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ibWFpbiI+CisgICAgICAgICAgICAgICAgPGlucHV0
IGNsYXNzPSJ0b2dnbGUtYWxsIiB0eXBlPSJjaGVja2JveCI+CisgICAgICAgICAgICAgICAgPGxh
YmVsIGZvcj0idG9nZ2xlLWFsbCI+TWFyayBhbGwgYXMgY29tcGxldGU8L2xhYmVsPgorICAgICAg
ICAgICAgICAgIDx1bCBjbGFzcz0idG9kby1saXN0Ij48L3VsPgorICAgICAgICAgICAgPC9zZWN0
aW9uPgorICAgICAgICAgICAgPGZvb3RlciBjbGFzcz0iZm9vdGVyIj4KKyAgICAgICAgICAgICAg
ICA8c3BhbiBjbGFzcz0idG9kby1jb3VudCI+PC9zcGFuPgorICAgICAgICAgICAgICAgIDx1bCBj
bGFzcz0iZmlsdGVycyI+CisgICAgICAgICAgICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgICAg
ICAgICAgICAgIDxhIGhyZWY9IiMvIiBjbGFzcz0ic2VsZWN0ZWQiPkFsbDwvYT4KKyAgICAgICAg
ICAgICAgICAgICAgPC9saT4KKyAgICAgICAgICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAg
ICAgICAgICAgICAgPGEgaHJlZj0iIy9hY3RpdmUiPkFjdGl2ZTwvYT4KKyAgICAgICAgICAgICAg
ICAgICAgPC9saT4KKyAgICAgICAgICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAgICAgICAg
ICAgICAgPGEgaHJlZj0iIy9jb21wbGV0ZWQiPkNvbXBsZXRlZDwvYT4KKyAgICAgICAgICAgICAg
ICAgICAgPC9saT4KKyAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgIDxidXR0
b24gY2xhc3M9ImNsZWFyLWNvbXBsZXRlZCI+Q2xlYXIgY29tcGxldGVkPC9idXR0b24+CisgICAg
ICAgICAgICA8L2Zvb3Rlcj4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8Zm9vdGVyIGNs
YXNzPSJpbmZvIj4KKyAgICAgICAgICAgIDxwPkRvdWJsZS1jbGljayB0byBlZGl0IGEgdG9kbzwv
cD4KKyAgICAgICAgICAgIDxwPlNwZWVkb21ldGVyIHZlcnNpb24gYnkgPGEgaHJlZj0iaHR0cDov
L3R3aXR0ZXIuY29tL2FkZHlvc21hbmkiPkFkZHkgT3NtYW5pPC9wPgorICAgICAgICAgICAgPHA+
UGFydHMgYnkgPGEgaHJlZj0iaHR0cDovL3R3aXR0ZXIuY29tL29zY2FyZ29kc29uIj5Pc2NhciBH
b2Rzb248L2E+PC9wPgorICAgICAgICAgICAgPHA+UmVmYWN0b3JlZCBieSA8YSBocmVmPSJodHRw
czovL2dpdGh1Yi5jb20vY2J1cmdtZXIiPkNocmlzdG9waCBCdXJnbWVyPC9hPjwvcD4KKyAgICAg
ICAgICAgIDxwPlBhcnQgb2YgPGEgaHJlZj0iaHR0cDovL3RvZG9tdmMuY29tIj5Ub2RvTVZDPC9h
PjwvcD4KKyAgICAgICAgPC9mb290ZXI+CisgICAgICAgIDxzY3JpcHQgc3JjPSJqcy9oZWxwZXJz
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9ImpzL3N0b3JlLmpzIj48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdCBzcmM9ImpzL21vZGVsLmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdCBzcmM9ImpzL3RlbXBsYXRlLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBz
cmM9ImpzL3ZpZXcuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0ianMvY29udHJv
bGxlci5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJqcy9hcHAuanMiPjwvc2Ny
aXB0PgogICAgIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMv
anMvYXBwLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy9hcHAuanMKaW5kZXggMjg4ZTU5YmQ4ZTA3
ZGZlZTljOTA0ZTQwNTc1Zjk3YmQyOWYwN2ZiNS4uMzAxY2Y5ZmVhZTQ4NTUyZTY3ZDgwNzhhZTlm
YTM3MTc0ZDRjMzhkNCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy9hcHAuanMKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxh
LWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy9hcHAuanMKQEAgLTEsNCArMSw0IEBACi0vKmdsb2JhbCBT
dG9yZSwgTW9kZWwsIFZpZXcsIENvbnRyb2xsZXIsICQkICovCisvKmdsb2JhbCBhcHAsICRvbiAq
LwogKGZ1bmN0aW9uICgpIHsKICAgICAndXNlIHN0cmljdCc7CiAKQEAgLTgsNjcgKzgsMTggQEAK
ICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiB5b3VyIG5ldyB0byBkbyBs
aXN0LgogICAgICAqLwogICAgIGZ1bmN0aW9uIFRvZG8obmFtZSkgewotICAgIHRoaXMuc3RvcmFn
ZSA9IG5ldyBhcHAuU3RvcmUobmFtZSk7Ci0gICAgdGhpcy5tb2RlbCA9IG5ldyBhcHAuTW9kZWwo
dGhpcy5zdG9yYWdlKTsKLSAgICB0aGlzLnZpZXcgPSBuZXcgYXBwLlZpZXcoKTsKLSAgICB0aGlz
LmNvbnRyb2xsZXIgPSBuZXcgYXBwLkNvbnRyb2xsZXIodGhpcy5tb2RlbCwgdGhpcy52aWV3KTsK
KyAgICAgICAgdGhpcy5zdG9yYWdlID0gbmV3IGFwcC5TdG9yZShuYW1lKTsKKyAgICAgICAgdGhp
cy5tb2RlbCA9IG5ldyBhcHAuTW9kZWwodGhpcy5zdG9yYWdlKTsKKyAgICAgICAgdGhpcy50ZW1w
bGF0ZSA9IG5ldyBhcHAuVGVtcGxhdGUoKTsKKyAgICAgICAgdGhpcy52aWV3ID0gbmV3IGFwcC5W
aWV3KHRoaXMudGVtcGxhdGUpOworICAgICAgICB0aGlzLmNvbnRyb2xsZXIgPSBuZXcgYXBwLkNv
bnRyb2xsZXIodGhpcy5tb2RlbCwgdGhpcy52aWV3KTsKICAgICB9CiAKICAgICB2YXIgdG9kbyA9
IG5ldyBUb2RvKCd0b2Rvcy12YW5pbGxhanMnKTsKIAotICAgIHdpbmRvdy50b2RvID0gdG9kbzsg
Ly8gQmVuY2htYXJrIG1vZGlmaWNhdGlvbjsgRXhwb3NlIHRvZG8gc28gdGhhdCB3ZSBjYW4gY2Fs
bCBtZXRob2RzIG9uIGl0LgotCi0gICAgLyoqCi0gICAgICogRmluZHMgdGhlIG1vZGVsIElEIG9m
IHRoZSBjbGlja2VkIERPTSBlbGVtZW50Ci0gICAgICoKLSAgICAgKiBAcGFyYW0ge29iamVjdH0g
dGFyZ2V0IFRoZSBzdGFydGluZyBwb2ludCBpbiB0aGUgRE9NIGZvciBpdCB0byB0cnkgdG8gZmlu
ZAotICAgICAqIHRoZSBJRCBvZiB0aGUgbW9kZWwuCi0gICAgICovCi0gICAgZnVuY3Rpb24gbG9v
a3VwSWQodGFyZ2V0KSB7Ci0gICAgdmFyIGxvb2t1cCA9IHRhcmdldDsKLQotICAgIHdoaWxlIChs
b29rdXAubm9kZU5hbWUgIT09ICdMSScpIHsKLSAgICBsb29rdXAgPSBsb29rdXAucGFyZW50Tm9k
ZTsKKyAgICBmdW5jdGlvbiBzZXRWaWV3KCkgeworICAgICAgICB0b2RvLmNvbnRyb2xsZXIuc2V0
Vmlldyhkb2N1bWVudC5sb2NhdGlvbi5oYXNoKTsKICAgICB9Ci0KLSAgICByZXR1cm4gbG9va3Vw
LmRhdGFzZXQuaWQ7Ci0gICAgfQotCi0gICAgLy8gV2hlbiB0aGUgZW50ZXIga2V5IGlzIHByZXNz
ZWQgZmlyZSB0aGUgYWRkSXRlbSBtZXRob2QuCi0gICAgJCQoJyNuZXctdG9kbycpLmFkZEV2ZW50
TGlzdGVuZXIoJ2tleXByZXNzJywgZnVuY3Rpb24gKGUpIHsKLSAgICB0b2RvLmNvbnRyb2xsZXIu
YWRkSXRlbShlKTsKLSAgICB9KTsKLQotICAgIC8vIEEgZGVsZWdhdGlvbiBldmVudC4gV2lsbCBj
aGVjayB3aGF0IGl0ZW0gd2FzIGNsaWNrZWQgd2hlbmV2ZXIgeW91IGNsaWNrIG9uIGFueQotICAg
IC8vIHBhcnQgb2YgYSBsaXN0IGl0ZW0uCi0gICAgJCQoJyN0b2RvLWxpc3QnKS5hZGRFdmVudExp
c3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7Ci0gICAgdmFyIHRhcmdldCA9IGUudGFyZ2V0
OwotCi0gICAgLy8gSWYgeW91IGNsaWNrIGEgZGVzdHJveSBidXR0b24KLSAgICBpZiAodGFyZ2V0
LmNsYXNzTmFtZS5pbmRleE9mKCdkZXN0cm95JykgPiAtMSkgewotICAgIHRvZG8uY29udHJvbGxl
ci5yZW1vdmVJdGVtKGxvb2t1cElkKHRhcmdldCkpOwotICAgIH0KLQotICAgIC8vIElmIHlvdSBj
bGljayB0aGUgY2hlY2ttYXJrCi0gICAgaWYgKHRhcmdldC5jbGFzc05hbWUuaW5kZXhPZigndG9n
Z2xlJykgPiAtMSkgewotICAgIHRvZG8uY29udHJvbGxlci50b2dnbGVDb21wbGV0ZShsb29rdXBJ
ZCh0YXJnZXQpLCB0YXJnZXQpOwotICAgIH0KLQotICAgIH0pOwotCi0gICAgJCQoJyN0b2RvLWxp
c3QnKS5hZGRFdmVudExpc3RlbmVyKCdkYmxjbGljaycsIGZ1bmN0aW9uIChlKSB7Ci0gICAgdmFy
IHRhcmdldCA9IGUudGFyZ2V0OwotCi0gICAgaWYgKHRhcmdldC5ub2RlTmFtZSA9PT0gJ0xBQkVM
JykgewotICAgIHRvZG8uY29udHJvbGxlci5lZGl0SXRlbShsb29rdXBJZCh0YXJnZXQpLCB0YXJn
ZXQpOwotICAgIH0KLSAgICB9KTsKLQotICAgICQkKCcjdG9nZ2xlLWFsbCcpLmFkZEV2ZW50TGlz
dGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHsKLSAgICB0b2RvLmNvbnRyb2xsZXIudG9nZ2xl
QWxsKGUpOwotICAgIH0pOwotCi0gICAgJCQoJyNjbGVhci1jb21wbGV0ZWQnKS5hZGRFdmVudExp
c3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKLSAgICB0b2RvLmNvbnRyb2xsZXIucmVtb3Zl
Q29tcGxldGVkSXRlbXMoKTsKLSAgICB9KTsKKyAgICAkb24od2luZG93LCAnbG9hZCcsIHNldFZp
ZXcpOworICAgICRvbih3aW5kb3csICdoYXNoY2hhbmdlJywgc2V0Vmlldyk7CiB9KSgpOwpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92
YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy9jb250cm9sbGVyLmpzIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3Zhbmls
bGFqcy9qcy9jb250cm9sbGVyLmpzCmluZGV4IGUzYTBkNmM4MWUwMjAyN2RlYWY1N2I0NzY3NGRm
ZmU5YzIwM2QwYzguLjBmYmM2MmE4OWU2NWViN2I4MTQwN2JjYmQxN2NmYjAyN2I0Y2U2ODcgMTAw
NjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
dmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvY29udHJvbGxlci5qcworKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMv
dmFuaWxsYWpzL2pzL2NvbnRyb2xsZXIuanMKQEAgLTEsNCArMSwzIEBACi0vKmdsb2JhbCAkJCwg
JCAqLwogKGZ1bmN0aW9uICh3aW5kb3cpIHsKICAgICAndXNlIHN0cmljdCc7CiAKQEAgLTYsMTUy
ICs1LDE0MCBAQAogICAgICAqIFRha2VzIGEgbW9kZWwgYW5kIHZpZXcgYW5kIGFjdHMgYXMgdGhl
IGNvbnRyb2xsZXIgYmV0d2VlbiB0aGVtCiAgICAgICoKICAgICAgKiBAY29uc3RydWN0b3IKLSAg
ICAgKiBAcGFyYW0ge29iamVjdH0gbW9kZWwgVGhlIG1vZGVsIGNvbnN0cnVjdG9yCi0gICAgICog
QHBhcmFtIHtvYmplY3R9IHZpZXcgVGhlIHZpZXcgY29uc3RydWN0b3IKKyAgICAgKiBAcGFyYW0g
e29iamVjdH0gbW9kZWwgVGhlIG1vZGVsIGluc3RhbmNlCisgICAgICogQHBhcmFtIHtvYmplY3R9
IHZpZXcgVGhlIHZpZXcgaW5zdGFuY2UKICAgICAgKi8KICAgICBmdW5jdGlvbiBDb250cm9sbGVy
KG1vZGVsLCB2aWV3KSB7Ci0gICAgdGhpcy5tb2RlbCA9IG1vZGVsOwotICAgIHRoaXMudmlldyA9
IHZpZXc7Ci0KLSAgICB0aGlzLkVOVEVSX0tFWSA9IDEzOwotICAgIHRoaXMuRVNDQVBFX0tFWSA9
IDI3OwotCi0gICAgdGhpcy4kbWFpbiA9ICQkKCcjbWFpbicpOwotICAgIHRoaXMuJHRvZ2dsZUFs
bCA9ICQkKCcjdG9nZ2xlLWFsbCcpOwotICAgIHRoaXMuJHRvZG9MaXN0ID0gJCQoJyN0b2RvLWxp
c3QnKTsKLSAgICB0aGlzLiR0b2RvSXRlbUNvdW50ZXIgPSAkJCgnI3RvZG8tY291bnQnKTsKLSAg
ICB0aGlzLiRjbGVhckNvbXBsZXRlZCA9ICQkKCcjY2xlYXItY29tcGxldGVkJyk7Ci0gICAgdGhp
cy4kZm9vdGVyID0gJCQoJyNmb290ZXInKTsKLQotICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVy
KCdsb2FkJywgZnVuY3Rpb24gKCkgewotICAgIHRoaXMuX3VwZGF0ZUZpbHRlclN0YXRlKCk7Ci0g
ICAgfS5iaW5kKHRoaXMpKTsKLQotICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdoYXNoY2hh
bmdlJywgZnVuY3Rpb24gKCkgewotICAgIHRoaXMuX3VwZGF0ZUZpbHRlclN0YXRlKCk7Ci0gICAg
fS5iaW5kKHRoaXMpKTsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICBzZWxmLm1v
ZGVsID0gbW9kZWw7CisgICAgICAgIHNlbGYudmlldyA9IHZpZXc7CisKKyAgICAgICAgc2VsZi52
aWV3LmJpbmQoJ25ld1RvZG8nLCBmdW5jdGlvbiAodGl0bGUpIHsKKyAgICAgICAgICAgIHNlbGYu
YWRkSXRlbSh0aXRsZSk7CisgICAgICAgIH0pOworCisgICAgICAgIHNlbGYudmlldy5iaW5kKCdp
dGVtRWRpdCcsIGZ1bmN0aW9uIChpdGVtKSB7CisgICAgICAgICAgICBzZWxmLmVkaXRJdGVtKGl0
ZW0uaWQpOworICAgICAgICB9KTsKKworICAgICAgICBzZWxmLnZpZXcuYmluZCgnaXRlbUVkaXRE
b25lJywgZnVuY3Rpb24gKGl0ZW0pIHsKKyAgICAgICAgICAgIHNlbGYuZWRpdEl0ZW1TYXZlKGl0
ZW0uaWQsIGl0ZW0udGl0bGUpOworICAgICAgICB9KTsKKworICAgICAgICBzZWxmLnZpZXcuYmlu
ZCgnaXRlbUVkaXRDYW5jZWwnLCBmdW5jdGlvbiAoaXRlbSkgeworICAgICAgICAgICAgc2VsZi5l
ZGl0SXRlbUNhbmNlbChpdGVtLmlkKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc2VsZi52aWV3
LmJpbmQoJ2l0ZW1SZW1vdmUnLCBmdW5jdGlvbiAoaXRlbSkgeworICAgICAgICAgICAgc2VsZi5y
ZW1vdmVJdGVtKGl0ZW0uaWQpOworICAgICAgICB9KTsKKworICAgICAgICBzZWxmLnZpZXcuYmlu
ZCgnaXRlbVRvZ2dsZScsIGZ1bmN0aW9uIChpdGVtKSB7CisgICAgICAgICAgICBzZWxmLnRvZ2ds
ZUNvbXBsZXRlKGl0ZW0uaWQsIGl0ZW0uY29tcGxldGVkKTsKKyAgICAgICAgfSk7CisKKyAgICAg
ICAgc2VsZi52aWV3LmJpbmQoJ3JlbW92ZUNvbXBsZXRlZCcsIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgIHNlbGYucmVtb3ZlQ29tcGxldGVkSXRlbXMoKTsKKyAgICAgICAgfSk7CisKKyAgICAg
ICAgc2VsZi52aWV3LmJpbmQoJ3RvZ2dsZUFsbCcsIGZ1bmN0aW9uIChzdGF0dXMpIHsKKyAgICAg
ICAgICAgIHNlbGYudG9nZ2xlQWxsKHN0YXR1cy5jb21wbGV0ZWQpOworICAgICAgICB9KTsKICAg
ICB9CiAKICAgICAvKioKKyAgICAgKiBMb2FkcyBhbmQgaW5pdGlhbGlzZXMgdGhlIHZpZXcKKyAg
ICAgKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSAnJyB8ICdhY3RpdmUnIHwgJ2NvbXBsZXRlZCcK
KyAgICAgKi8KKyAgICBDb250cm9sbGVyLnByb3RvdHlwZS5zZXRWaWV3ID0gZnVuY3Rpb24gKGxv
Y2F0aW9uSGFzaCkgeworICAgICAgICB2YXIgcm91dGUgPSBsb2NhdGlvbkhhc2guc3BsaXQoJy8n
KVsxXTsKKyAgICAgICAgdmFyIHBhZ2UgPSByb3V0ZSB8fCAnJzsKKyAgICAgICAgdGhpcy5fdXBk
YXRlRmlsdGVyU3RhdGUocGFnZSk7CisgICAgfTsKKworICAgIC8qKgogICAgICAqIEFuIGV2ZW50
IHRvIGZpcmUgb24gbG9hZC4gV2lsbCBnZXQgYWxsIGl0ZW1zIGFuZCBkaXNwbGF5IHRoZW0gaW4g
dGhlCiAgICAgICogdG9kby1saXN0CiAgICAgICovCiAgICAgQ29udHJvbGxlci5wcm90b3R5cGUu
c2hvd0FsbCA9IGZ1bmN0aW9uICgpIHsKLSAgICB0aGlzLm1vZGVsLnJlYWQoZnVuY3Rpb24gKGRh
dGEpIHsKLSAgICB0aGlzLiR0b2RvTGlzdC5pbm5lckhUTUwgPSB0aGlzLnZpZXcuc2hvdyhkYXRh
KTsKLSAgICB9LmJpbmQodGhpcykpOworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAg
IHNlbGYubW9kZWwucmVhZChmdW5jdGlvbiAoZGF0YSkgeworICAgICAgICAgICAgc2VsZi52aWV3
LnJlbmRlcignc2hvd0VudHJpZXMnLCBkYXRhKTsKKyAgICAgICAgfSk7CiAgICAgfTsKIAogICAg
IC8qKgogICAgICAqIFJlbmRlcnMgYWxsIGFjdGl2ZSB0YXNrcwogICAgICAqLwogICAgIENvbnRy
b2xsZXIucHJvdG90eXBlLnNob3dBY3RpdmUgPSBmdW5jdGlvbiAoKSB7Ci0gICAgdGhpcy5tb2Rl
bC5yZWFkKHsgY29tcGxldGVkOiAwIH0sIGZ1bmN0aW9uIChkYXRhKSB7Ci0gICAgdGhpcy4kdG9k
b0xpc3QuaW5uZXJIVE1MID0gdGhpcy52aWV3LnNob3coZGF0YSk7Ci0gICAgfS5iaW5kKHRoaXMp
KTsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICBzZWxmLm1vZGVsLnJlYWQoeyBj
b21wbGV0ZWQ6IGZhbHNlIH0sIGZ1bmN0aW9uIChkYXRhKSB7CisgICAgICAgICAgICBzZWxmLnZp
ZXcucmVuZGVyKCdzaG93RW50cmllcycsIGRhdGEpOworICAgICAgICB9KTsKICAgICB9OwogCiAg
ICAgLyoqCiAgICAgICogUmVuZGVycyBhbGwgY29tcGxldGVkIHRhc2tzCiAgICAgICovCiAgICAg
Q29udHJvbGxlci5wcm90b3R5cGUuc2hvd0NvbXBsZXRlZCA9IGZ1bmN0aW9uICgpIHsKLSAgICB0
aGlzLm1vZGVsLnJlYWQoeyBjb21wbGV0ZWQ6IDEgfSwgZnVuY3Rpb24gKGRhdGEpIHsKLSAgICB0
aGlzLiR0b2RvTGlzdC5pbm5lckhUTUwgPSB0aGlzLnZpZXcuc2hvdyhkYXRhKTsKLSAgICB9LmJp
bmQodGhpcykpOworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgIHNlbGYubW9kZWwu
cmVhZCh7IGNvbXBsZXRlZDogdHJ1ZSB9LCBmdW5jdGlvbiAoZGF0YSkgeworICAgICAgICAgICAg
c2VsZi52aWV3LnJlbmRlcignc2hvd0VudHJpZXMnLCBkYXRhKTsKKyAgICAgICAgfSk7CiAgICAg
fTsKIAogICAgIC8qKgogICAgICAqIEFuIGV2ZW50IHRvIGZpcmUgd2hlbmV2ZXIgeW91IHdhbnQg
dG8gYWRkIGFuIGl0ZW0uIFNpbXBseSBwYXNzIGluIHRoZSBldmVudAogICAgICAqIG9iamVjdCBh
bmQgaXQnbGwgaGFuZGxlIHRoZSBET00gaW5zZXJ0aW9uIGFuZCBzYXZpbmcgb2YgdGhlIG5ldyBp
dGVtLgotICAgICAqCi0gICAgICogQHBhcmFtIHtvYmplY3R9IGUgVGhlIGV2ZW50IG9iamVjdAog
ICAgICAqLwotICAgIENvbnRyb2xsZXIucHJvdG90eXBlLmFkZEl0ZW0gPSBmdW5jdGlvbiAoZSkg
ewotICAgIHZhciBpbnB1dCA9ICQkKCcjbmV3LXRvZG8nKTsKLSAgICB2YXIgdGl0bGUgPSB0aXRs
ZSB8fCAnJzsKKyAgICBDb250cm9sbGVyLnByb3RvdHlwZS5hZGRJdGVtID0gZnVuY3Rpb24gKHRp
dGxlKSB7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKIAotICAgIGlmIChlLmtleUNvZGUgPT09
IHRoaXMuRU5URVJfS0VZKSB7Ci0gICAgaWYgKGUudGFyZ2V0LnZhbHVlLnRyaW0oKSA9PT0gJycp
IHsKLSAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdGhpcy5tb2RlbC5jcmVhdGUoZS50YXJnZXQu
dmFsdWUsIGZ1bmN0aW9uIChkYXRhKSB7Ci0gICAgaW5wdXQudmFsdWUgPSAnJzsKLSAgICB0aGlz
Ll9maWx0ZXIodHJ1ZSk7Ci0gICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9CisgICAgICAgIGlmICh0
aXRsZS50cmltKCkgPT09ICcnKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAor
ICAgICAgICBzZWxmLm1vZGVsLmNyZWF0ZSh0aXRsZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgc2VsZi52aWV3LnJlbmRlcignY2xlYXJOZXdUb2RvJyk7CisgICAgICAgICAgICBzZWxmLl9m
aWx0ZXIodHJ1ZSk7CisgICAgICAgIH0pOwogICAgIH07CiAKLSAgICAvKioKLSAgICAgKiBIaWRl
cyB0aGUgbGFiZWwgdGV4dCBhbmQgY3JlYXRlcyBhbiBpbnB1dCB0byBlZGl0IHRoZSB0aXRsZSBv
ZiB0aGUgaXRlbS4KLSAgICAgKiBXaGVuIHlvdSBoaXQgZW50ZXIgb3IgYmx1ciBvdXQgb2YgdGhl
IGlucHV0IGl0IHNhdmVzIGl0IGFuZMKgdXBkYXRlcyB0aGUgVUkKLSAgICAgKiB3aXRoIHRoZSBu
ZXcgbmFtZS4KLSAgICAgKgotICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpZCBUaGUgaWQgb2YgdGhl
IGl0ZW0gdG8gZWRpdAotICAgICAqIEBwYXJhbSB7b2JqZWN0fSBsYWJlbCBUaGUgbGFiZWwgeW91
IHdhbnQgdG8gZWRpdCB0aGUgdGV4dCBvZgorICAgIC8qCisgICAgICogVHJpZ2dlcnMgdGhlIGl0
ZW0gZWRpdGluZyBtb2RlLgogICAgICAqLwotICAgIENvbnRyb2xsZXIucHJvdG90eXBlLmVkaXRJ
dGVtID0gZnVuY3Rpb24gKGlkLCBsYWJlbCkgewotICAgIHZhciBsaSA9ICBsYWJlbDsKLQotICAg
IC8vIFRoaXMgZmluZHMgdGhlIDxsYWJlbD4ncyBwYXJlbnQgPGxpPgotICAgIHdoaWxlIChsaS5u
b2RlTmFtZSAhPT0gJ0xJJykgewotICAgIGxpID0gbGkucGFyZW50Tm9kZTsKLSAgICB9Ci0KLSAg
ICB2YXIgb25TYXZlSGFuZGxlciA9IGZ1bmN0aW9uICgpIHsKLSAgICB2YXIgdmFsdWUgPSBpbnB1
dC52YWx1ZS50cmltKCk7Ci0gICAgdmFyIGRpc2NhcmRpbmcgPSBpbnB1dC5kYXRhc2V0LmRpc2Nh
cmQ7Ci0KLSAgICBpZiAodmFsdWUubGVuZ3RoICYmICFkaXNjYXJkaW5nKSB7Ci0gICAgdGhpcy5t
b2RlbC51cGRhdGUoaWQsIHsgdGl0bGU6IGlucHV0LnZhbHVlIH0pOwotCi0gICAgLy8gSW5zdGVh
ZCBvZiByZS1yZW5kZXJpbmcgdGhlIHdob2xlIHZpZXcganVzdCB1cGRhdGUKLSAgICAvLyB0aGlz
IHBpZWNlIG9mIGl0Ci0gICAgbGFiZWwuaW5uZXJIVE1MID0gdmFsdWU7Ci0gICAgfSBlbHNlIGlm
ICh2YWx1ZS5sZW5ndGggPT09IDApIHsKLSAgICAvLyBObyB2YWx1ZSB3YXMgZW50ZXJlZCBpbiB0
aGUgaW5wdXQuIFdlJ2xsIHJlbW92ZSB0aGUgdG9kbyBpdGVtLgotICAgIHRoaXMucmVtb3ZlSXRl
bShpZCk7Ci0gICAgfQotCi0gICAgLy8gUmVtb3ZlIHRoZSBpbnB1dCBzaW5jZSB3ZSBubyBsb25n
ZXIgbmVlZCBpdAotICAgIC8vIExlc3MgRE9NIG1lYW5zIGZhc3RlciByZW5kZXJpbmcKLSAgICBs
aS5yZW1vdmVDaGlsZChpbnB1dCk7Ci0KLSAgICAvLyBSZW1vdmUgdGhlIGVkaXRpbmcgY2xhc3MK
LSAgICBsaS5jbGFzc05hbWUgPSBsaS5jbGFzc05hbWUucmVwbGFjZSgnZWRpdGluZycsICcnKTsK
LSAgICB9LmJpbmQodGhpcyk7Ci0KLSAgICAvLyBBcHBlbmQgdGhlIGVkaXRpbmcgY2xhc3MKLSAg
ICBsaS5jbGFzc05hbWUgPSBsaS5jbGFzc05hbWUgKyAnIGVkaXRpbmcnOwotCi0gICAgdmFyIGlu
cHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKLSAgICBpbnB1dC5jbGFzc05h
bWUgPSAnZWRpdCc7Ci0KLSAgICAvLyBHZXQgdGhlIGlubmVySFRNTCBvZiB0aGUgbGFiZWwgaW5z
dGVhZCBvZiByZXF1ZXN0aW5nIHRoZSBkYXRhIGZyb20gdGhlCi0gICAgLy8gT1JNLiBJZiB0aGlz
IHdlcmUgYSByZWFsIERCIHRoaXMgd291bGQgc2F2ZSBhIGxvdCBvZiB0aW1lIGFuZCB3b3VsZCBh
dm9pZAotICAgIC8vIGEgc3Bpbm5lciBnaWYuCi0gICAgaW5wdXQudmFsdWUgPSBsYWJlbC5pbm5l
ckhUTUw7Ci0KLSAgICBsaS5hcHBlbmRDaGlsZChpbnB1dCk7Ci0KLSAgICBpbnB1dC5hZGRFdmVu
dExpc3RlbmVyKCdibHVyJywgb25TYXZlSGFuZGxlcik7Ci0KLSAgICBpbnB1dC5hZGRFdmVudExp
c3RlbmVyKCdrZXlwcmVzcycsIGZ1bmN0aW9uIChlKSB7Ci0gICAgaWYgKGUua2V5Q29kZSA9PT0g
dGhpcy5FTlRFUl9LRVkpIHsKLSAgICAvLyBSZW1vdmUgdGhlIGN1cnNvciBmcm9tIHRoZSBpbnB1
dCB3aGVuIHlvdSBoaXQgZW50ZXIganVzdCBsaWtlIGlmIGl0Ci0gICAgLy8gd2VyZSBhIHJlYWwg
Zm9ybQotICAgIGlucHV0LmJsdXIoKTsKLSAgICB9CisgICAgQ29udHJvbGxlci5wcm90b3R5cGUu
ZWRpdEl0ZW0gPSBmdW5jdGlvbiAoaWQpIHsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAg
ICAgICBzZWxmLm1vZGVsLnJlYWQoaWQsIGZ1bmN0aW9uIChkYXRhKSB7CisgICAgICAgICAgICBz
ZWxmLnZpZXcucmVuZGVyKCdlZGl0SXRlbScsIHtpZDogaWQsIHRpdGxlOiBkYXRhWzBdLnRpdGxl
fSk7CisgICAgICAgIH0pOworICAgIH07CiAKLSAgICBpZiAoZS5rZXlDb2RlID09PSB0aGlzLkVT
Q0FQRV9LRVkpIHsKLSAgICAvLyBEaXNjYXJkIHRoZSBjaGFuZ2VzCi0gICAgaW5wdXQuZGF0YXNl
dC5kaXNjYXJkID0gdHJ1ZTsKLSAgICBpbnB1dC5ibHVyKCk7Ci0gICAgfQotICAgIH0uYmluZCh0
aGlzKSk7CisgICAgLyoKKyAgICAgKiBGaW5pc2hlcyB0aGUgaXRlbSBlZGl0aW5nIG1vZGUgc3Vj
Y2Vzc2Z1bGx5LgorICAgICAqLworICAgIENvbnRyb2xsZXIucHJvdG90eXBlLmVkaXRJdGVtU2F2
ZSA9IGZ1bmN0aW9uIChpZCwgdGl0bGUpIHsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAg
ICAgICB0aXRsZSA9IHRpdGxlLnRyaW0oKTsKKworICAgICAgICBpZiAodGl0bGUubGVuZ3RoICE9
PSAwKSB7CisgICAgICAgICAgICBzZWxmLm1vZGVsLnVwZGF0ZShpZCwge3RpdGxlOiB0aXRsZX0s
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBzZWxmLnZpZXcucmVuZGVyKCdlZGl0SXRl
bURvbmUnLCB7aWQ6IGlkLCB0aXRsZTogdGl0bGV9KTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgc2VsZi5yZW1vdmVJdGVtKGlkKTsKKyAgICAgICAgfQor
ICAgIH07CiAKLSAgICBpbnB1dC5mb2N1cygpOworICAgIC8qCisgICAgICogQ2FuY2VscyB0aGUg
aXRlbSBlZGl0aW5nIG1vZGUuCisgICAgICovCisgICAgQ29udHJvbGxlci5wcm90b3R5cGUuZWRp
dEl0ZW1DYW5jZWwgPSBmdW5jdGlvbiAoaWQpIHsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwor
ICAgICAgICBzZWxmLm1vZGVsLnJlYWQoaWQsIGZ1bmN0aW9uIChkYXRhKSB7CisgICAgICAgICAg
ICBzZWxmLnZpZXcucmVuZGVyKCdlZGl0SXRlbURvbmUnLCB7aWQ6IGlkLCB0aXRsZTogZGF0YVsw
XS50aXRsZX0pOworICAgICAgICB9KTsKICAgICB9OwogCiAgICAgLyoqCkBAIC0xNjIsMjQgKzE0
OSwyNiBAQAogICAgICAqIHN0b3JhZ2UKICAgICAgKi8KICAgICBDb250cm9sbGVyLnByb3RvdHlw
ZS5yZW1vdmVJdGVtID0gZnVuY3Rpb24gKGlkKSB7Ci0gICAgdGhpcy5tb2RlbC5yZW1vdmUoaWQs
IGZ1bmN0aW9uICgpIHsKLSAgICB0aGlzLiR0b2RvTGlzdC5yZW1vdmVDaGlsZCgkJCgnW2RhdGEt
aWQ9IicgKyBpZCArICciXScpKTsKLSAgICB9LmJpbmQodGhpcykpOworICAgICAgICB2YXIgc2Vs
ZiA9IHRoaXM7CisgICAgICAgIHNlbGYubW9kZWwucmVtb3ZlKGlkLCBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICBzZWxmLnZpZXcucmVuZGVyKCdyZW1vdmVJdGVtJywgaWQpOworICAgICAgICB9
KTsKIAotICAgIHRoaXMuX2ZpbHRlcigpOworICAgICAgICBzZWxmLl9maWx0ZXIoKTsKICAgICB9
OwogCiAgICAgLyoqCiAgICAgICogV2lsbCByZW1vdmUgYWxsIGNvbXBsZXRlZCBpdGVtcyBmcm9t
IHRoZSBET00gYW5kIHN0b3JhZ2UuCiAgICAgICovCiAgICAgQ29udHJvbGxlci5wcm90b3R5cGUu
cmVtb3ZlQ29tcGxldGVkSXRlbXMgPSBmdW5jdGlvbiAoKSB7Ci0gICAgdGhpcy5tb2RlbC5yZWFk
KHsgY29tcGxldGVkOiAxIH0sIGZ1bmN0aW9uIChkYXRhKSB7Ci0gICAgZGF0YS5mb3JFYWNoKGZ1
bmN0aW9uIChpdGVtKSB7Ci0gICAgdGhpcy5yZW1vdmVJdGVtKGl0ZW0uaWQpOwotICAgIH0uYmlu
ZCh0aGlzKSk7Ci0gICAgfS5iaW5kKHRoaXMpKTsKLQotICAgIHRoaXMuX2ZpbHRlcigpOworICAg
ICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgIHNlbGYubW9kZWwucmVhZCh7IGNvbXBsZXRl
ZDogdHJ1ZSB9LCBmdW5jdGlvbiAoZGF0YSkgeworICAgICAgICAgICAgZGF0YS5mb3JFYWNoKGZ1
bmN0aW9uIChpdGVtKSB7CisgICAgICAgICAgICAgICAgc2VsZi5yZW1vdmVJdGVtKGl0ZW0uaWQp
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIHNlbGYuX2ZpbHRlcigp
OwogICAgIH07CiAKICAgICAvKioKQEAgLTE5MSw0OCArMTgwLDMzIEBACiAgICAgICogICAgICAg
ICAgICAgICAgICAgICAgICAgIG9yIG5vdAogICAgICAqIEBwYXJhbSB7Ym9vbGVhbnx1bmRlZmlu
ZWR9IHNpbGVudCBQcmV2ZW50IHJlLWZpbHRlcmluZyB0aGUgdG9kbyBpdGVtcwogICAgICAqLwot
ICAgIENvbnRyb2xsZXIucHJvdG90eXBlLnRvZ2dsZUNvbXBsZXRlID0gZnVuY3Rpb24gKGlkLCBj
aGVja2JveCwgc2lsZW50KSB7Ci0gICAgdmFyIGNvbXBsZXRlZCA9IGNoZWNrYm94LmNoZWNrZWQg
PyAxIDogMDsKLQotICAgIHRoaXMubW9kZWwudXBkYXRlKGlkLCB7IGNvbXBsZXRlZDogY29tcGxl
dGVkIH0sIGZ1bmN0aW9uICgpIHsKLSAgICB2YXIgbGlzdEl0ZW0gPSAkJCgnW2RhdGEtaWQ9Iicg
KyBpZCArICciXScpOwotCi0gICAgaWYgKCFsaXN0SXRlbSkgewotICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBsaXN0SXRlbS5jbGFzc05hbWUgPSBjb21wbGV0ZWQgPyAnY29tcGxldGVkJyA6ICcn
OwotCi0gICAgLy8gSW4gY2FzZSBpdCB3YXMgdG9nZ2xlZCBmcm9tIGFuIGV2ZW50IGFuZCBub3Qg
YnkgY2xpY2tpbmcgdGhlIGNoZWNrYm94Ci0gICAgbGlzdEl0ZW0ucXVlcnlTZWxlY3RvcignaW5w
dXQnKS5jaGVja2VkID0gY29tcGxldGVkOwotICAgIH0pOwotCi0gICAgaWYgKCFzaWxlbnQpIHsK
LSAgICB0aGlzLl9maWx0ZXIoKTsKLSAgICB9CisgICAgQ29udHJvbGxlci5wcm90b3R5cGUudG9n
Z2xlQ29tcGxldGUgPSBmdW5jdGlvbiAoaWQsIGNvbXBsZXRlZCwgc2lsZW50KSB7CisgICAgICAg
IHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgc2VsZi5tb2RlbC51cGRhdGUoaWQsIHsgY29tcGxl
dGVkOiBjb21wbGV0ZWQgfSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgc2VsZi52aWV3LnJl
bmRlcignZWxlbWVudENvbXBsZXRlJywgeworICAgICAgICAgICAgICAgIGlkOiBpZCwKKyAgICAg
ICAgICAgICAgICBjb21wbGV0ZWQ6IGNvbXBsZXRlZAorICAgICAgICAgICAgfSk7CisgICAgICAg
IH0pOworCisgICAgICAgIGlmICghc2lsZW50KSB7CisgICAgICAgICAgICBzZWxmLl9maWx0ZXIo
KTsKKyAgICAgICAgfQogICAgIH07CiAKICAgICAvKioKLSAgICAgKiBXaWxsIHRvZ2dsZSBBTEwg
Y2hlY2tib3hlJ3Mgb24vb2ZmIHN0YXRlIGFuZCBjb21wbGV0ZW5lc3Mgb2YgbW9kZWxzLgorICAg
ICAqIFdpbGwgdG9nZ2xlIEFMTCBjaGVja2JveGVzJyBvbi9vZmYgc3RhdGUgYW5kIGNvbXBsZXRl
bmVzcyBvZiBtb2RlbHMuCiAgICAgICogSnVzdCBwYXNzIGluIHRoZSBldmVudCBvYmplY3QuCi0g
ICAgICoKLSAgICAgKiBAcGFyYW0ge29iamVjdH0gZSBUaGUgZXZlbnQgb2JqZWN0CiAgICAgICov
Ci0gICAgQ29udHJvbGxlci5wcm90b3R5cGUudG9nZ2xlQWxsID0gZnVuY3Rpb24gKGUpIHsKLSAg
ICB2YXIgY29tcGxldGVkID0gZS50YXJnZXQuY2hlY2tlZCA/IDEgOiAwOwotICAgIHZhciBxdWVy
eSA9IDA7Ci0KLSAgICBpZiAoY29tcGxldGVkID09PSAwKSB7Ci0gICAgcXVlcnkgPSAxOwotICAg
IH0KLQotICAgIHRoaXMubW9kZWwucmVhZCh7IGNvbXBsZXRlZDogcXVlcnkgfSwgZnVuY3Rpb24g
KGRhdGEpIHsKLSAgICBkYXRhLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKLSAgICB0aGlzLnRv
Z2dsZUNvbXBsZXRlKGl0ZW0uaWQsIGUudGFyZ2V0LCB0cnVlKTsKLSAgICB9LmJpbmQodGhpcykp
OwotICAgIH0uYmluZCh0aGlzKSk7Ci0KLSAgICB0aGlzLl9maWx0ZXIoKTsKKyAgICBDb250cm9s
bGVyLnByb3RvdHlwZS50b2dnbGVBbGwgPSBmdW5jdGlvbiAoY29tcGxldGVkKSB7CisgICAgICAg
IHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgc2VsZi5tb2RlbC5yZWFkKHsgY29tcGxldGVkOiAh
Y29tcGxldGVkIH0sIGZ1bmN0aW9uIChkYXRhKSB7CisgICAgICAgICAgICBkYXRhLmZvckVhY2go
ZnVuY3Rpb24gKGl0ZW0pIHsKKyAgICAgICAgICAgICAgICBzZWxmLnRvZ2dsZUNvbXBsZXRlKGl0
ZW0uaWQsIGNvbXBsZXRlZCwgdHJ1ZSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgc2VsZi5fZmlsdGVyKCk7CiAgICAgfTsKIAogICAgIC8qKgpAQCAtMjQwLDM3ICsy
MTQsMTcgQEAKICAgICAgKiBudW1iZXIgb2YgdG9kb3MuCiAgICAgICovCiAgICAgQ29udHJvbGxl
ci5wcm90b3R5cGUuX3VwZGF0ZUNvdW50ID0gZnVuY3Rpb24gKCkgewotICAgIHZhciB0b2RvcyA9
IHRoaXMubW9kZWwuZ2V0Q291bnQoKTsKLQotICAgIHRoaXMuJHRvZG9JdGVtQ291bnRlci5pbm5l
ckhUTUwgPSB0aGlzLnZpZXcuaXRlbUNvdW50ZXIodG9kb3MuYWN0aXZlKTsKLQotICAgIHRoaXMu
JGNsZWFyQ29tcGxldGVkLmlubmVySFRNTCA9IHRoaXMudmlldy5jbGVhckNvbXBsZXRlZEJ1dHRv
bih0b2Rvcy5jb21wbGV0ZWQpOwotICAgIHRoaXMuJGNsZWFyQ29tcGxldGVkLnN0eWxlLmRpc3Bs
YXkgPSB0b2Rvcy5jb21wbGV0ZWQgPiAwID8gJ2Jsb2NrJyA6ICdub25lJzsKLQotICAgIHRoaXMu
JHRvZ2dsZUFsbC5jaGVja2VkID0gdG9kb3MuY29tcGxldGVkID09PSB0b2Rvcy50b3RhbDsKLQot
ICAgIHRoaXMuX3RvZ2dsZUZyYW1lKHRvZG9zKTsKLSAgICB9OwotCi0gICAgLyoqCi0gICAgICog
VGhlIG1haW4gYm9keSBhbmQgZm9vdGVyIGVsZW1lbnRzIHNob3VsZCBub3QgYmUgdmlzaWJsZSB3
aGVuIHRoZXJlIGFyZSBubwotICAgICAqIHRvZG9zIGxlZnQuCi0gICAgICoKLSAgICAgKiBAcGFy
YW0ge29iamVjdH0gdG9kb3MgQ29udGFpbnMgYSBjb3VudCBvZiBhbGwgdG9kb3MsIGFuZCB0aGVp
ciBzdGF0dXNlcy4KLSAgICAgKi8KLSAgICBDb250cm9sbGVyLnByb3RvdHlwZS5fdG9nZ2xlRnJh
bWUgPSBmdW5jdGlvbiAodG9kb3MpIHsKLSAgICB2YXIgZnJhbWVEaXNwbGF5ID0gdGhpcy4kbWFp
bi5zdHlsZS5kaXNwbGF5OwotICAgIHZhciBmcmFtZVZpc2libGUgPSBmcmFtZURpc3BsYXkgPT09
ICdibG9jaycgfHwgZnJhbWVEaXNwbGF5ID09PSAnJzsKLQotICAgIGlmICh0b2Rvcy50b3RhbCA9
PT0gMCAmJiBmcmFtZVZpc2libGUpIHsKLSAgICB0aGlzLiRtYWluLnN0eWxlLmRpc3BsYXkgPSAn
bm9uZSc7Ci0gICAgdGhpcy4kZm9vdGVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7Ci0gICAgfQot
Ci0gICAgaWYgKHRvZG9zLnRvdGFsID4gMCAmJiAhZnJhbWVWaXNpYmxlKSB7Ci0gICAgdGhpcy4k
bWFpbi5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKLSAgICB0aGlzLiRmb290ZXIuc3R5bGUuZGlz
cGxheSA9ICdibG9jayc7Ci0gICAgfQorICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAg
IHNlbGYubW9kZWwuZ2V0Q291bnQoZnVuY3Rpb24gKHRvZG9zKSB7CisgICAgICAgICAgICBzZWxm
LnZpZXcucmVuZGVyKCd1cGRhdGVFbGVtZW50Q291bnQnLCB0b2Rvcy5hY3RpdmUpOworICAgICAg
ICAgICAgc2VsZi52aWV3LnJlbmRlcignY2xlYXJDb21wbGV0ZWRCdXR0b24nLCB7CisgICAgICAg
ICAgICAgICAgY29tcGxldGVkOiB0b2Rvcy5jb21wbGV0ZWQsCisgICAgICAgICAgICAgICAgdmlz
aWJsZTogdG9kb3MuY29tcGxldGVkID4gMAorICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAg
IHNlbGYudmlldy5yZW5kZXIoJ3RvZ2dsZUFsbCcsIHtjaGVja2VkOiB0b2Rvcy5jb21wbGV0ZWQg
PT09IHRvZG9zLnRvdGFsfSk7CisgICAgICAgICAgICBzZWxmLnZpZXcucmVuZGVyKCdjb250ZW50
QmxvY2tWaXNpYmlsaXR5Jywge3Zpc2libGU6IHRvZG9zLnRvdGFsID4gMH0pOworICAgICAgICB9
KTsKICAgICB9OwogCiAgICAgLyoqCkBAIC0yNzgsNTMgKzIzMiwzOSBAQAogICAgICAqIEBwYXJh
bSB7Ym9vbGVhbnx1bmRlZmluZWR9IGZvcmNlICBmb3JjZXMgYSByZS1wYWludGluZyBvZiB0b2Rv
IGl0ZW1zLgogICAgICAqLwogICAgIENvbnRyb2xsZXIucHJvdG90eXBlLl9maWx0ZXIgPSBmdW5j
dGlvbiAoZm9yY2UpIHsKLSAgICB2YXIgYWN0aXZlUm91dGUgPSB0aGlzLl9hY3RpdmVSb3V0ZS5j
aGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHRoaXMuX2FjdGl2ZVJvdXRlLnN1YnN0cigxKTsKKyAg
ICAgICAgdmFyIGFjdGl2ZVJvdXRlID0gdGhpcy5fYWN0aXZlUm91dGUuY2hhckF0KDApLnRvVXBw
ZXJDYXNlKCkgKyB0aGlzLl9hY3RpdmVSb3V0ZS5zdWJzdHIoMSk7CiAKLSAgICAvLyBVcGRhdGUg
dGhlIGVsZW1lbnRzIG9uIHRoZSBwYWdlLCB3aGljaCBjaGFuZ2Ugd2l0aCBlYWNoIGNvbXBsZXRl
ZCB0b2RvCi0gICAgdGhpcy5fdXBkYXRlQ291bnQoKTsKKyAgICAgICAgLy8gVXBkYXRlIHRoZSBl
bGVtZW50cyBvbiB0aGUgcGFnZSwgd2hpY2ggY2hhbmdlIHdpdGggZWFjaCBjb21wbGV0ZWQgdG9k
bworICAgICAgICB0aGlzLl91cGRhdGVDb3VudCgpOwogCi0gICAgLy8gSWYgdGhlIGxhc3QgYWN0
aXZlIHJvdXRlIGlzbid0ICJBbGwiLCBvciB3ZSdyZSBzd2l0Y2hpbmcgcm91dGVzLCB3ZQotICAg
IC8vIHJlLWNyZWF0ZSB0aGUgdG9kbyBpdGVtIGVsZW1lbnRzLCBjYWxsaW5nOgotICAgIC8vICAg
dGhpcy5zaG93W0FsbHxBY3RpdmV8Q29tcGxldGVkXSgpOwotICAgIGlmIChmb3JjZSB8fCB0aGlz
Ll9sYXN0QWN0aXZlUm91dGUgIT09ICdBbGwnIHx8IHRoaXMuX2xhc3RBY3RpdmVSb3V0ZSAhPT0g
YWN0aXZlUm91dGUpIHsKLSAgICB0aGlzWydzaG93JyArIGFjdGl2ZVJvdXRlXSgpOwotICAgIH0K
KyAgICAgICAgLy8gSWYgdGhlIGxhc3QgYWN0aXZlIHJvdXRlIGlzbid0ICJBbGwiLCBvciB3ZSdy
ZSBzd2l0Y2hpbmcgcm91dGVzLCB3ZQorICAgICAgICAvLyByZS1jcmVhdGUgdGhlIHRvZG8gaXRl
bSBlbGVtZW50cywgY2FsbGluZzoKKyAgICAgICAgLy8gICB0aGlzLnNob3dbQWxsfEFjdGl2ZXxD
b21wbGV0ZWRdKCk7CisgICAgICAgIGlmIChmb3JjZSB8fCB0aGlzLl9sYXN0QWN0aXZlUm91dGUg
IT09ICdBbGwnIHx8IHRoaXMuX2xhc3RBY3RpdmVSb3V0ZSAhPT0gYWN0aXZlUm91dGUpIHsKKyAg
ICAgICAgICAgIHRoaXNbJ3Nob3cnICsgYWN0aXZlUm91dGVdKCk7CisgICAgICAgIH0KIAotICAg
IHRoaXMuX2xhc3RBY3RpdmVSb3V0ZSA9IGFjdGl2ZVJvdXRlOworICAgICAgICB0aGlzLl9sYXN0
QWN0aXZlUm91dGUgPSBhY3RpdmVSb3V0ZTsKICAgICB9OwogCiAgICAgLyoqCiAgICAgICogU2lt
cGx5IHVwZGF0ZXMgdGhlIGZpbHRlciBuYXYncyBzZWxlY3RlZCBzdGF0ZXMKICAgICAgKi8KLSAg
ICBDb250cm9sbGVyLnByb3RvdHlwZS5fdXBkYXRlRmlsdGVyU3RhdGUgPSBmdW5jdGlvbiAoKSB7
Ci0gICAgdmFyIGN1cnJlbnRQYWdlID0gdGhpcy5fZ2V0Q3VycmVudFBhZ2UoKSB8fCAnJzsKLQot
ICAgIC8vIFN0b3JlIGEgcmVmZXJlbmNlIHRvIHRoZSBhY3RpdmUgcm91dGUsIGFsbG93aW5nIHVz
IHRvIHJlLWZpbHRlciB0b2RvCi0gICAgLy8gaXRlbXMgYXMgdGhleSBhcmUgbWFya2VkIGNvbXBs
ZXRlIG9yIGluY29tcGxldGUuCi0gICAgdGhpcy5fYWN0aXZlUm91dGUgPSBjdXJyZW50UGFnZTsK
LQotICAgIGlmIChjdXJyZW50UGFnZSA9PT0gJycpIHsKLSAgICB0aGlzLl9hY3RpdmVSb3V0ZSA9
ICdBbGwnOwotICAgIH0KKyAgICBDb250cm9sbGVyLnByb3RvdHlwZS5fdXBkYXRlRmlsdGVyU3Rh
dGUgPSBmdW5jdGlvbiAoY3VycmVudFBhZ2UpIHsKKyAgICAgICAgLy8gU3RvcmUgYSByZWZlcmVu
Y2UgdG8gdGhlIGFjdGl2ZSByb3V0ZSwgYWxsb3dpbmcgdXMgdG8gcmUtZmlsdGVyIHRvZG8KKyAg
ICAgICAgLy8gaXRlbXMgYXMgdGhleSBhcmUgbWFya2VkIGNvbXBsZXRlIG9yIGluY29tcGxldGUu
CisgICAgICAgIHRoaXMuX2FjdGl2ZVJvdXRlID0gY3VycmVudFBhZ2U7CiAKLSAgICB0aGlzLl9m
aWx0ZXIoKTsKKyAgICAgICAgaWYgKGN1cnJlbnRQYWdlID09PSAnJykgeworICAgICAgICAgICAg
dGhpcy5fYWN0aXZlUm91dGUgPSAnQWxsJzsKKyAgICAgICAgfQogCi0gICAgLy8gUmVtb3ZlIGFs
bCBvdGhlciBzZWxlY3RlZCBzdGF0ZXMuIFdlIGxvb3AgdGhyb3VnaCBhbGwgb2YgdGhlbSBpbiBj
YXNlIHRoZQotICAgIC8vIFVJIGdldHMgaW4gYSBmdW5reSBzdGF0ZSB3aXRoIHR3byBzZWxlY3Rl
ZC4KLSAgICAkKCcjZmlsdGVycyAuc2VsZWN0ZWQnKS5lYWNoKGZ1bmN0aW9uIChpdGVtKSB7Ci0g
ICAgaXRlbS5jbGFzc05hbWUgPSAnJzsKLSAgICB9KTsKKyAgICAgICAgdGhpcy5fZmlsdGVyKCk7
CiAKLSAgICAkJCgnI2ZpbHRlcnMgW2hyZWY9IiMvJyArIGN1cnJlbnRQYWdlICsgJyJdJykuY2xh
c3NOYW1lID0gJ3NlbGVjdGVkJzsKLSAgICB9OwotCi0gICAgLyoqCi0gICAgICogQSBnZXR0ZXIg
Zm9yIGdldHRpbmcgdGhlIGN1cnJlbnQgcGFnZQotICAgICAqLwotICAgIENvbnRyb2xsZXIucHJv
dG90eXBlLl9nZXRDdXJyZW50UGFnZSA9IGZ1bmN0aW9uICgpIHsKLSAgICByZXR1cm4gZG9jdW1l
bnQubG9jYXRpb24uaGFzaC5zcGxpdCgnLycpWzFdOworICAgICAgICB0aGlzLnZpZXcucmVuZGVy
KCdzZXRGaWx0ZXInLCBjdXJyZW50UGFnZSk7CiAgICAgfTsKIAogICAgIC8vIEV4cG9ydCB0byB3
aW5kb3cKKyAgICB3aW5kb3cuYXBwID0gd2luZG93LmFwcCB8fCB7fTsKICAgICB3aW5kb3cuYXBw
LkNvbnRyb2xsZXIgPSBDb250cm9sbGVyOwogfSkod2luZG93KTsKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxl
cy92YW5pbGxhanMvanMvaGVscGVycy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvaGVscGVycy5q
cwppbmRleCA1OGEwZTlmZTMyNTc4YTk2ODU3ZmU5Yjk0ZGFlM2FkZjNmNmY1ZTk2Li4yYWY5NTZm
MDY0ZDg4MThkZmM1ZjE1OTFkYzY2N2MxYmE4NmZkMTBjIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFu
aWxsYWpzL2pzL2hlbHBlcnMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy9oZWxwZXJzLmpz
CkBAIC0xLDE3ICsxLDUyIEBACisvKmdsb2JhbCBOb2RlTGlzdCAqLwogKGZ1bmN0aW9uICh3aW5k
b3cpIHsKICAgICAndXNlIHN0cmljdCc7CiAKLSAgICAvLyBDYWNoZSB0aGUgcXVlcnlTZWxlY3Rv
ci9BbGwgZm9yIGVhc2llciBhbmQgZmFzdGVyIHJldXNlCi0gICAgd2luZG93LiQgPSBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yQWxsLmJpbmQoZG9jdW1lbnQpOwotICAgIHdpbmRvdy4kJCA9IGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IuYmluZChkb2N1bWVudCk7Ci0KLSAgICAvLyBBbGxvdyBmb3IgbG9v
cGluZyBvbiBPYmplY3RzIGJ5IGNoYWluaW5nOgotICAgIC8vICQoJy5mb28nKS5lYWNoKGZ1bmN0
aW9uICgpIHt9KQotICAgIE9iamVjdC5wcm90b3R5cGUuZWFjaCA9IGZ1bmN0aW9uIChjYWxsYmFj
aykgewotICAgIGZvciAodmFyIHggaW4gdGhpcykgewotICAgIGlmICh0aGlzLmhhc093blByb3Bl
cnR5KHgpKSB7Ci0gICAgY2FsbGJhY2suY2FsbCh0aGlzLCB0aGlzW3hdKTsKLSAgICB9Ci0gICAg
fQorICAgIC8vIEdldCBlbGVtZW50KHMpIGJ5IENTUyBzZWxlY3RvcjoKKyAgICB3aW5kb3cucXMg
PSBmdW5jdGlvbiAoc2VsZWN0b3IsIHNjb3BlKSB7CisgICAgICAgIHJldHVybiAoc2NvcGUgfHwg
ZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpOwogICAgIH07CisgICAgd2luZG93LnFz
YSA9IGZ1bmN0aW9uIChzZWxlY3Rvciwgc2NvcGUpIHsKKyAgICAgICAgcmV0dXJuIChzY29wZSB8
fCBkb2N1bWVudCkucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CisgICAgfTsKKworICAgIC8v
IGFkZEV2ZW50TGlzdGVuZXIgd3JhcHBlcjoKKyAgICB3aW5kb3cuJG9uID0gZnVuY3Rpb24gKHRh
cmdldCwgdHlwZSwgY2FsbGJhY2ssIHVzZUNhcHR1cmUpIHsKKyAgICAgICAgdGFyZ2V0LmFkZEV2
ZW50TGlzdGVuZXIodHlwZSwgY2FsbGJhY2ssICEhdXNlQ2FwdHVyZSk7CisgICAgfTsKKworICAg
IC8vIEF0dGFjaCBhIGhhbmRsZXIgdG8gZXZlbnQgZm9yIGFsbCBlbGVtZW50cyB0aGF0IG1hdGNo
IHRoZSBzZWxlY3RvciwKKyAgICAvLyBub3cgb3IgaW4gdGhlIGZ1dHVyZSwgYmFzZWQgb24gYSBy
b290IGVsZW1lbnQKKyAgICB3aW5kb3cuJGRlbGVnYXRlID0gZnVuY3Rpb24gKHRhcmdldCwgc2Vs
ZWN0b3IsIHR5cGUsIGhhbmRsZXIpIHsKKyAgICAgICAgZnVuY3Rpb24gZGlzcGF0Y2hFdmVudChl
dmVudCkgeworICAgICAgICAgICAgdmFyIHRhcmdldEVsZW1lbnQgPSBldmVudC50YXJnZXQ7Cisg
ICAgICAgICAgICB2YXIgcG90ZW50aWFsRWxlbWVudHMgPSB3aW5kb3cucXNhKHNlbGVjdG9yLCB0
YXJnZXQpOworICAgICAgICAgICAgdmFyIGhhc01hdGNoID0gQXJyYXkucHJvdG90eXBlLmluZGV4
T2YuY2FsbChwb3RlbnRpYWxFbGVtZW50cywgdGFyZ2V0RWxlbWVudCkgPj0gMDsKKworICAgICAg
ICAgICAgaWYgKGhhc01hdGNoKSB7CisgICAgICAgICAgICAgICAgaGFuZGxlci5jYWxsKHRhcmdl
dEVsZW1lbnQsIGV2ZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8v
IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0V2ZW50cy9ibHVy
CisgICAgICAgIHZhciB1c2VDYXB0dXJlID0gdHlwZSA9PT0gJ2JsdXInIHx8IHR5cGUgPT09ICdm
b2N1cyc7CisKKyAgICAgICAgd2luZG93LiRvbih0YXJnZXQsIHR5cGUsIGRpc3BhdGNoRXZlbnQs
IHVzZUNhcHR1cmUpOworICAgIH07CisKKyAgICAvLyBGaW5kIHRoZSBlbGVtZW50J3MgcGFyZW50
IHdpdGggdGhlIGdpdmVuIHRhZyBuYW1lOgorICAgIC8vICRwYXJlbnQocXMoJ2EnKSwgJ2Rpdicp
OworICAgIHdpbmRvdy4kcGFyZW50ID0gZnVuY3Rpb24gKGVsZW1lbnQsIHRhZ05hbWUpIHsKKyAg
ICAgICAgaWYgKCFlbGVtZW50LnBhcmVudE5vZGUpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoZWxlbWVudC5wYXJlbnROb2RlLnRhZ05hbWUudG9Mb3dlckNh
c2UoKSA9PT0gdGFnTmFtZS50b0xvd2VyQ2FzZSgpKSB7CisgICAgICAgICAgICByZXR1cm4gZWxl
bWVudC5wYXJlbnROb2RlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB3aW5kb3cuJHBhcmVu
dChlbGVtZW50LnBhcmVudE5vZGUsIHRhZ05hbWUpOworICAgIH07CisKKyAgICAvLyBBbGxvdyBm
b3IgbG9vcGluZyBvbiBub2RlcyBieSBjaGFpbmluZzoKKyAgICAvLyBxc2EoJy5mb28nKS5mb3JF
YWNoKGZ1bmN0aW9uICgpIHt9KQorICAgIE5vZGVMaXN0LnByb3RvdHlwZS5mb3JFYWNoID0gQXJy
YXkucHJvdG90eXBlLmZvckVhY2g7CiB9KSh3aW5kb3cpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3Zh
bmlsbGFqcy9qcy9tb2RlbC5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvbW9kZWwuanMKaW5kZXgg
ZTAxNDY3NDY1ZTE2OTliYjM1NGM5M2UxZjIwODYwZTA4NTUxNTYxYi4uZDhhNzMxOTFkMmMyZGY1
YjIzNzIzYWFhNDEzMzlkYjhkYmE3OWI0ZiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9q
cy9tb2RlbC5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL21vZGVsLmpzCkBAIC04LDcgKzgs
NyBAQAogICAgICAqIEBwYXJhbSB7b2JqZWN0fSBzdG9yYWdlIEEgcmVmZXJlbmNlIHRvIHRoZSBj
bGllbnQgc2lkZSBzdG9yYWdlIGNsYXNzCiAgICAgICovCiAgICAgZnVuY3Rpb24gTW9kZWwoc3Rv
cmFnZSkgewotICAgIHRoaXMuc3RvcmFnZSA9IHN0b3JhZ2U7CisgICAgICAgIHRoaXMuc3RvcmFn
ZSA9IHN0b3JhZ2U7CiAgICAgfQogCiAgICAgLyoqCkBAIC0xOCwxNSArMTgsMTUgQEAKICAgICAg
KiBAcGFyYW0ge2Z1bmN0aW9ufSBbY2FsbGJhY2tdIFRoZSBjYWxsYmFjayB0byBmaXJlIGFmdGVy
IHRoZSBtb2RlbCBpcyBjcmVhdGVkCiAgICAgICovCiAgICAgTW9kZWwucHJvdG90eXBlLmNyZWF0
ZSA9IGZ1bmN0aW9uICh0aXRsZSwgY2FsbGJhY2spIHsKLSAgICB0aXRsZSA9IHRpdGxlIHx8ICcn
OwotICAgIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24gKCkge307CisgICAgICAgIHRp
dGxlID0gdGl0bGUgfHwgJyc7CisgICAgICAgIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rp
b24gKCkge307CiAKLSAgICB2YXIgbmV3SXRlbSA9IHsKLSAgICB0aXRsZTogdGl0bGUudHJpbSgp
LAotICAgIGNvbXBsZXRlZDogMAotICAgIH07CisgICAgICAgIHZhciBuZXdJdGVtID0geworICAg
ICAgICAgICAgdGl0bGU6IHRpdGxlLnRyaW0oKSwKKyAgICAgICAgICAgIGNvbXBsZXRlZDogZmFs
c2UKKyAgICAgICAgfTsKIAotICAgIHRoaXMuc3RvcmFnZS5zYXZlKG5ld0l0ZW0sIGNhbGxiYWNr
KTsKKyAgICAgICAgdGhpcy5zdG9yYWdlLnNhdmUobmV3SXRlbSwgY2FsbGJhY2spOwogICAgIH07
CiAKICAgICAvKioKQEAgLTQ1LDE3ICs0NSwxOCBAQAogICAgICAqIG1vZGVsLnJlYWQoeyBmb286
ICdiYXInLCBoZWxsbzogJ3dvcmxkJyB9KTsKICAgICAgKi8KICAgICBNb2RlbC5wcm90b3R5cGUu
cmVhZCA9IGZ1bmN0aW9uIChxdWVyeSwgY2FsbGJhY2spIHsKLSAgICB2YXIgcXVlcnlUeXBlID0g
dHlwZW9mIHF1ZXJ5OwotICAgIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24gKCkge307
CisgICAgICAgIHZhciBxdWVyeVR5cGUgPSB0eXBlb2YgcXVlcnk7CisgICAgICAgIGNhbGxiYWNr
ID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24gKCkge307CiAKLSAgICBpZiAocXVlcnlUeXBlID09PSAn
ZnVuY3Rpb24nKSB7Ci0gICAgY2FsbGJhY2sgPSBxdWVyeTsKLSAgICByZXR1cm4gdGhpcy5zdG9y
YWdlLmZpbmRBbGwoY2FsbGJhY2spOwotICAgIH0gZWxzZSBpZiAocXVlcnlUeXBlID09PSAnc3Ry
aW5nJyB8fCBxdWVyeVR5cGUgPT09ICdudW1iZXInKSB7Ci0gICAgdGhpcy5zdG9yYWdlLmZpbmQo
eyBpZDogcXVlcnkgfSwgY2FsbGJhY2spOwotICAgIH0gZWxzZSB7Ci0gICAgdGhpcy5zdG9yYWdl
LmZpbmQocXVlcnksIGNhbGxiYWNrKTsKLSAgICB9CisgICAgICAgIGlmIChxdWVyeVR5cGUgPT09
ICdmdW5jdGlvbicpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrID0gcXVlcnk7CisgICAgICAgICAg
ICByZXR1cm4gdGhpcy5zdG9yYWdlLmZpbmRBbGwoY2FsbGJhY2spOworICAgICAgICB9IGVsc2Ug
aWYgKHF1ZXJ5VHlwZSA9PT0gJ3N0cmluZycgfHwgcXVlcnlUeXBlID09PSAnbnVtYmVyJykgewor
ICAgICAgICAgICAgcXVlcnkgPSBwYXJzZUludChxdWVyeSwgMTApOworICAgICAgICAgICAgdGhp
cy5zdG9yYWdlLmZpbmQoeyBpZDogcXVlcnkgfSwgY2FsbGJhY2spOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgdGhpcy5zdG9yYWdlLmZpbmQocXVlcnksIGNhbGxiYWNrKTsKKyAgICAg
ICAgfQogICAgIH07CiAKICAgICAvKioKQEAgLTY3LDcgKzY4LDcgQEAKICAgICAgKiBAcGFyYW0g
e2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIHRoZSB1cGRhdGUg
aXMgY29tcGxldGUuCiAgICAgICovCiAgICAgTW9kZWwucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0
aW9uIChpZCwgZGF0YSwgY2FsbGJhY2spIHsKLSAgICB0aGlzLnN0b3JhZ2Uuc2F2ZShpZCwgZGF0
YSwgY2FsbGJhY2spOworICAgICAgICB0aGlzLnN0b3JhZ2Uuc2F2ZShkYXRhLCBjYWxsYmFjaywg
aWQpOwogICAgIH07CiAKICAgICAvKioKQEAgLTc3LDcgKzc4LDcgQEAKICAgICAgKiBAcGFyYW0g
e2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIHRoZSByZW1vdmFs
IGlzIGNvbXBsZXRlLgogICAgICAqLwogICAgIE1vZGVsLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5j
dGlvbiAoaWQsIGNhbGxiYWNrKSB7Ci0gICAgdGhpcy5zdG9yYWdlLnJlbW92ZShpZCwgY2FsbGJh
Y2spOworICAgICAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlKGlkLCBjYWxsYmFjayk7CiAgICAgfTsK
IAogICAgIC8qKgpAQCAtODYsMzQgKzg3LDM0IEBACiAgICAgICogQHBhcmFtIHtmdW5jdGlvbn0g
Y2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiB0aGUgc3RvcmFnZSBpcyB3aXBlZC4K
ICAgICAgKi8KICAgICBNb2RlbC5wcm90b3R5cGUucmVtb3ZlQWxsID0gZnVuY3Rpb24gKGNhbGxi
YWNrKSB7Ci0gICAgdGhpcy5zdG9yYWdlLmRyb3AoY2FsbGJhY2spOworICAgICAgICB0aGlzLnN0
b3JhZ2UuZHJvcChjYWxsYmFjayk7CiAgICAgfTsKIAogICAgIC8qKgogICAgICAqIFJldHVybnMg
YSBjb3VudCBvZiBhbGwgdG9kb3MKICAgICAgKi8KLSAgICBNb2RlbC5wcm90b3R5cGUuZ2V0Q291
bnQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgdmFyIHRvZG9zID0gewotICAgIGFjdGl2ZTogMCwKLSAg
ICBjb21wbGV0ZWQ6IDAsCi0gICAgdG90YWw6IDAKLSAgICB9OwotCi0gICAgdGhpcy5zdG9yYWdl
LmZpbmRBbGwoZnVuY3Rpb24gKGRhdGEpIHsKLSAgICBkYXRhLmVhY2goZnVuY3Rpb24gKHRvZG8p
IHsKLSAgICBpZiAodG9kby5jb21wbGV0ZWQgPT09IDEpIHsKLSAgICB0b2Rvcy5jb21wbGV0ZWQr
KzsKLSAgICB9IGVsc2UgewotICAgIHRvZG9zLmFjdGl2ZSsrOwotICAgIH0KKyAgICBNb2RlbC5w
cm90b3R5cGUuZ2V0Q291bnQgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHsKKyAgICAgICAgdmFyIHRv
ZG9zID0geworICAgICAgICAgICAgYWN0aXZlOiAwLAorICAgICAgICAgICAgY29tcGxldGVkOiAw
LAorICAgICAgICAgICAgdG90YWw6IDAKKyAgICAgICAgfTsKIAotICAgIHRvZG9zLnRvdGFsKys7
Ci0gICAgfSk7Ci0gICAgfSk7CisgICAgICAgIHRoaXMuc3RvcmFnZS5maW5kQWxsKGZ1bmN0aW9u
IChkYXRhKSB7CisgICAgICAgICAgICBkYXRhLmZvckVhY2goZnVuY3Rpb24gKHRvZG8pIHsKKyAg
ICAgICAgICAgICAgICBpZiAodG9kby5jb21wbGV0ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAg
dG9kb3MuY29tcGxldGVkKys7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgdG9kb3MuYWN0aXZlKys7CisgICAgICAgICAgICAgICAgfQogCi0gICAgcmV0dXJu
IHRvZG9zOworICAgICAgICAgICAgICAgIHRvZG9zLnRvdGFsKys7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIGNhbGxiYWNrKHRvZG9zKTsKKyAgICAgICAgfSk7CiAgICAgfTsKIAogICAg
IC8vIEV4cG9ydCB0byB3aW5kb3cKKyAgICB3aW5kb3cuYXBwID0gd2luZG93LmFwcCB8fCB7fTsK
ICAgICB3aW5kb3cuYXBwLk1vZGVsID0gTW9kZWw7CiB9KSh3aW5kb3cpOwpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4
YW1wbGVzL3ZhbmlsbGFqcy9qcy9zdG9yZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvc3RvcmUu
anMKaW5kZXggOWE3ZGEwZDliYjc3YWE0MWEzZDhlOWZlOGJjNzYzNmQ2NzBhYjFhNy4uZmU2ODJj
ODhmOGE0ZTc1NGQwODY3NzNjNTFkZDU5YzMyYmIzZjM3OCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3Zh
bmlsbGFqcy9qcy9zdG9yZS5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL3N0b3JlLmpzCkBA
IC0yLDggKzIsNyBAQAogKGZ1bmN0aW9uICh3aW5kb3cpIHsKICAgICAndXNlIHN0cmljdCc7CiAK
LSAgICB2YXIgbG9jYWxTdG9yYWdlID0ge307IC8vIEJlbmNobWFyayBtb2RpZmljYXRpb246IEF2
b2lkIGRpc2sgYWNjZXNzLgotCisgICAgdmFyIE1lbW9yeVN0b3JhZ2UgPSB7fTsKICAgICAvKioK
ICAgICAgKiBDcmVhdGVzIGEgbmV3IGNsaWVudCBzaWRlIHN0b3JhZ2Ugb2JqZWN0IGFuZCB3aWxs
IGNyZWF0ZSBhbiBlbXB0eQogICAgICAqIGNvbGxlY3Rpb24gaWYgbm8gY29sbGVjdGlvbiBhbHJl
YWR5IGV4aXN0cy4KQEAgLTEzLDIyICsxMiwxOSBAQAogICAgICAqIHJlYWwgbGlmZSB5b3UgcHJv
YmFibHkgd291bGQgYmUgbWFraW5nIEFKQVggY2FsbHMKICAgICAgKi8KICAgICBmdW5jdGlvbiBT
dG9yZShuYW1lLCBjYWxsYmFjaykgewotICAgIHZhciBkYXRhOwotICAgIHZhciBkYk5hbWU7Ci0K
LSAgICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9OworICAgICAgICBjYWxs
YmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9OwogCi0gICAgZGJOYW1lID0gdGhpcy5f
ZGJOYW1lID0gbmFtZTsKKyAgICAgICAgdGhpcy5fZGJOYW1lID0gbmFtZTsKIAotICAgIGlmICgh
bG9jYWxTdG9yYWdlW2RiTmFtZV0pIHsKLSAgICBkYXRhID0gewotICAgIHRvZG9zOiBbXQotICAg
IH07CisgICAgICAgIGlmICghTWVtb3J5U3RvcmFnZVtuYW1lXSkgeworICAgICAgICAgICAgdmFy
IGRhdGEgPSB7CisgICAgICAgICAgICAgICAgdG9kb3M6IFtdCisgICAgICAgICAgICB9OwogCi0g
ICAgbG9jYWxTdG9yYWdlW2RiTmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKTsKLSAgICB9Cisg
ICAgICAgICAgICBNZW1vcnlTdG9yYWdlW25hbWVdID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7Cisg
ICAgICAgIH0KIAotICAgIGNhbGxiYWNrLmNhbGwodGhpcywgSlNPTi5wYXJzZShsb2NhbFN0b3Jh
Z2VbZGJOYW1lXSkpOworICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UoTWVt
b3J5U3RvcmFnZVtuYW1lXSkpOwogICAgIH0KIAogICAgIC8qKgpAQCAtNDUsMTcgKzQxLDIwIEBA
CiAgICAgICogfSk7CiAgICAgICovCiAgICAgU3RvcmUucHJvdG90eXBlLmZpbmQgPSBmdW5jdGlv
biAocXVlcnksIGNhbGxiYWNrKSB7Ci0gICAgaWYgKCFjYWxsYmFjaykgewotICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICB2YXIgdG9kb3MgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZVt0aGlzLl9k
Yk5hbWVdKS50b2RvczsKLQotICAgIGNhbGxiYWNrLmNhbGwodGhpcywgdG9kb3MuZmlsdGVyKGZ1
bmN0aW9uICh0b2RvKSB7Ci0gICAgZm9yICh2YXIgcSBpbiBxdWVyeSkgewotICAgIHJldHVybiBx
dWVyeVtxXSA9PT0gdG9kb1txXTsKLSAgICB9Ci0gICAgfSkpOworICAgICAgICBpZiAoIWNhbGxi
YWNrKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2YXIgdG9k
b3MgPSBKU09OLnBhcnNlKE1lbW9yeVN0b3JhZ2VbdGhpcy5fZGJOYW1lXSkudG9kb3M7CisKKyAg
ICAgICAgY2FsbGJhY2suY2FsbCh0aGlzLCB0b2Rvcy5maWx0ZXIoZnVuY3Rpb24gKHRvZG8pIHsK
KyAgICAgICAgICAgIGZvciAodmFyIHEgaW4gcXVlcnkpIHsKKyAgICAgICAgICAgICAgICBpZiAo
cXVlcnlbcV0gIT09IHRvZG9bcV0pIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9KSk7CiAgICAgfTsKIAogICAgIC8qKgpAQCAtNjQsNDggKzYzLDQ1IEBA
CiAgICAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUg
dXBvbiByZXRyaWV2aW5nIGRhdGEKICAgICAgKi8KICAgICBTdG9yZS5wcm90b3R5cGUuZmluZEFs
bCA9IGZ1bmN0aW9uIChjYWxsYmFjaykgewotICAgIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVu
Y3Rpb24gKCkge307Ci0gICAgY2FsbGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKGxvY2FsU3Rv
cmFnZVt0aGlzLl9kYk5hbWVdKS50b2Rvcyk7CisgICAgICAgIGNhbGxiYWNrID0gY2FsbGJhY2sg
fHwgZnVuY3Rpb24gKCkge307CisgICAgICAgIGNhbGxiYWNrLmNhbGwodGhpcywgSlNPTi5wYXJz
ZShNZW1vcnlTdG9yYWdlW3RoaXMuX2RiTmFtZV0pLnRvZG9zKTsKICAgICB9OwogCiAgICAgLyoq
CiAgICAgICogV2lsbCBzYXZlIHRoZSBnaXZlbiBkYXRhIHRvIHRoZSBEQi4gSWYgbm8gaXRlbSBl
eGlzdHMgaXQgd2lsbCBjcmVhdGUgYSBuZXcKICAgICAgKiBpdGVtLCBvdGhlcndpc2UgaXQnbGwg
c2ltcGx5IHVwZGF0ZSBhbiBleGlzdGluZyBpdGVtJ3MgcHJvcGVydGllcwogICAgICAqCi0gICAg
ICogQHBhcmFtIHtudW1iZXJ9IGlkIEFuIG9wdGlvbmFsIHBhcmFtIHRvIGVudGVyIGFuIElEIG9m
IGFuIGl0ZW0gdG8gdXBkYXRlCi0gICAgICogQHBhcmFtIHtvYmplY3R9IGRhdGEgVGhlIGRhdGEg
dG8gc2F2ZSBiYWNrIGludG8gdGhlIERCCisgICAgICogQHBhcmFtIHtvYmplY3R9IHVwZGF0ZURh
dGEgVGhlIGRhdGEgdG8gc2F2ZSBiYWNrIGludG8gdGhlIERCCiAgICAgICogQHBhcmFtIHtmdW5j
dGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgYWZ0ZXIgc2F2aW5nCisgICAgICog
QHBhcmFtIHtudW1iZXJ9IGlkIEFuIG9wdGlvbmFsIHBhcmFtIHRvIGVudGVyIGFuIElEIG9mIGFu
IGl0ZW0gdG8gdXBkYXRlCiAgICAgICovCi0gICAgU3RvcmUucHJvdG90eXBlLnNhdmUgPSBmdW5j
dGlvbiAoaWQsIHVwZGF0ZURhdGEsIGNhbGxiYWNrKSB7Ci0gICAgdmFyIGRhdGEgPSBKU09OLnBh
cnNlKGxvY2FsU3RvcmFnZVt0aGlzLl9kYk5hbWVdKTsKLSAgICB2YXIgdG9kb3MgPSBkYXRhLnRv
ZG9zOwotCi0gICAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbiAoKSB7fTsKLQotICAg
IC8vIElmIGFuIElEIHdhcyBhY3R1YWxseSBnaXZlbiwgZmluZCB0aGUgaXRlbSBhbmQgdXBkYXRl
IGVhY2ggcHJvcGVydHkKLSAgICBpZiAodHlwZW9mIGlkICE9PSAnb2JqZWN0JykgewotICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgdG9kb3MubGVuZ3RoOyBpKyspIHsKLSAgICBpZiAodG9kb3NbaV0u
aWQgPT0gaWQpIHsKLSAgICBmb3IgKHZhciB4IGluIHVwZGF0ZURhdGEpIHsKLSAgICB0b2Rvc1tp
XVt4XSA9IHVwZGF0ZURhdGFbeF07Ci0gICAgfQotICAgIH0KLSAgICB9Ci0KLSAgICBsb2NhbFN0
b3JhZ2VbdGhpcy5fZGJOYW1lXSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpOwotICAgIGNhbGxiYWNr
LmNhbGwodGhpcywgSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VbdGhpcy5fZGJOYW1lXSkudG9kb3Mp
OwotICAgIH0gZWxzZSB7Ci0gICAgY2FsbGJhY2sgPSB1cGRhdGVEYXRhOwotCi0gICAgdXBkYXRl
RGF0YSA9IGlkOwotCi0gICAgLy8gR2VuZXJhdGUgYW4gSUQKLSAgICB1cGRhdGVEYXRhLmlkID0g
bmV3IERhdGUoKS5nZXRUaW1lKCk7Ci0KLSAgICB0b2Rvcy5wdXNoKHVwZGF0ZURhdGEpOwotICAg
IGxvY2FsU3RvcmFnZVt0aGlzLl9kYk5hbWVdID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7Ci0gICAg
Y2FsbGJhY2suY2FsbCh0aGlzLCBbdXBkYXRlRGF0YV0pOwotICAgIH0KKyAgICBTdG9yZS5wcm90
b3R5cGUuc2F2ZSA9IGZ1bmN0aW9uICh1cGRhdGVEYXRhLCBjYWxsYmFjaywgaWQpIHsKKyAgICAg
ICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKE1lbW9yeVN0b3JhZ2VbdGhpcy5fZGJOYW1lXSk7Cisg
ICAgICAgIHZhciB0b2RvcyA9IGRhdGEudG9kb3M7CisKKyAgICAgICAgY2FsbGJhY2sgPSBjYWxs
YmFjayB8fCBmdW5jdGlvbiAoKSB7fTsKKworICAgICAgICAvLyBJZiBhbiBJRCB3YXMgYWN0dWFs
bHkgZ2l2ZW4sIGZpbmQgdGhlIGl0ZW0gYW5kIHVwZGF0ZSBlYWNoIHByb3BlcnR5CisgICAgICAg
IGlmIChpZCkgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2Rvcy5sZW5ndGg7
IGkrKykgeworICAgICAgICAgICAgICAgIGlmICh0b2Rvc1tpXS5pZCA9PT0gaWQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHVwZGF0ZURhdGEpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRvZG9zW2ldW2tleV0gPSB1cGRhdGVEYXRhW2tleV07CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBNZW1vcnlTdG9yYWdlW3RoaXMuX2RiTmFt
ZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKTsKKyAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwodGhp
cywgdG9kb3MpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gR2VuZXJhdGUgYW4g
SUQKKyAgICAgICAgICAgIHVwZGF0ZURhdGEuaWQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKKwor
ICAgICAgICAgICAgdG9kb3MucHVzaCh1cGRhdGVEYXRhKTsKKyAgICAgICAgICAgIE1lbW9yeVN0
b3JhZ2VbdGhpcy5fZGJOYW1lXSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpOworICAgICAgICAgICAg
Y2FsbGJhY2suY2FsbCh0aGlzLCBbdXBkYXRlRGF0YV0pOworICAgICAgICB9CiAgICAgfTsKIAog
ICAgIC8qKgpAQCAtMTE1LDE4ICsxMTEsMTggQEAKICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBj
YWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSBhZnRlciBzYXZpbmcKICAgICAgKi8KICAgICBT
dG9yZS5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKGlkLCBjYWxsYmFjaykgewotICAgIHZh
ciBkYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VbdGhpcy5fZGJOYW1lXSk7Ci0gICAgdmFy
IHRvZG9zID0gZGF0YS50b2RvczsKLQotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9kb3MubGVu
Z3RoOyBpKyspIHsKLSAgICBpZiAodG9kb3NbaV0uaWQgPT0gaWQpIHsKLSAgICB0b2Rvcy5zcGxp
Y2UoaSwgMSk7Ci0gICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLQotICAgIGxvY2FsU3RvcmFnZVt0
aGlzLl9kYk5hbWVdID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7Ci0gICAgY2FsbGJhY2suY2FsbCh0
aGlzLCBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZVt0aGlzLl9kYk5hbWVdKS50b2Rvcyk7CisgICAg
ICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShNZW1vcnlTdG9yYWdlW3RoaXMuX2RiTmFtZV0pOwor
ICAgICAgICB2YXIgdG9kb3MgPSBkYXRhLnRvZG9zOworCisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgdG9kb3MubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGlmICh0b2Rvc1tpXS5pZCA9
PSBpZCkgeworICAgICAgICAgICAgICAgIHRvZG9zLnNwbGljZShpLCAxKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIE1lbW9yeVN0
b3JhZ2VbdGhpcy5fZGJOYW1lXSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpOworICAgICAgICBjYWxs
YmFjay5jYWxsKHRoaXMsIHRvZG9zKTsKICAgICB9OwogCiAgICAgLyoqCkBAIC0xMzUsMTAgKzEz
MSwxMiBAQAogICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0
byBmaXJlIGFmdGVyIGRyb3BwaW5nIHRoZSBkYXRhCiAgICAgICovCiAgICAgU3RvcmUucHJvdG90
eXBlLmRyb3AgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHsKLSAgICBsb2NhbFN0b3JhZ2VbdGhpcy5f
ZGJOYW1lXSA9IEpTT04uc3RyaW5naWZ5KHt0b2RvczogW119KTsKLSAgICBjYWxsYmFjay5jYWxs
KHRoaXMsIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlW3RoaXMuX2RiTmFtZV0pLnRvZG9zKTsKKyAg
ICAgICAgdmFyIGRhdGEgPSB7dG9kb3M6IFtdfTsKKyAgICAgICAgTWVtb3J5U3RvcmFnZVt0aGlz
Ll9kYk5hbWVdID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7CisgICAgICAgIGNhbGxiYWNrLmNhbGwo
dGhpcywgZGF0YS50b2Rvcyk7CiAgICAgfTsKIAogICAgIC8vIEV4cG9ydCB0byB3aW5kb3cKKyAg
ICB3aW5kb3cuYXBwID0gd2luZG93LmFwcCB8fCB7fTsKICAgICB3aW5kb3cuYXBwLlN0b3JlID0g
U3RvcmU7CiB9KSh3aW5kb3cpOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy90ZW1w
bGF0ZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
dmFuaWxsYS1leGFtcGxlcy92YW5pbGxhanMvanMvdGVtcGxhdGUuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM3
MjRjNjUyOTUyYjU1N2JiNjIxY2EwYmEwZGJhMDVmZDVmOTgwMAotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1l
eGFtcGxlcy92YW5pbGxhanMvanMvdGVtcGxhdGUuanMKQEAgLTAsMCArMSwxMTQgQEAKKy8qanNo
aW50IGxheGJyZWFrOnRydWUgKi8KKyhmdW5jdGlvbiAod2luZG93KSB7CisgICAgJ3VzZSBzdHJp
Y3QnOworCisgICAgdmFyIGh0bWxFc2NhcGVzID0geworICAgICAgICAnJic6ICcmYW1wOycsCisg
ICAgICAgICc8JzogJyZsdDsnLAorICAgICAgICAnPic6ICcmZ3Q7JywKKyAgICAgICAgJyInOiAn
JnF1b3Q7JywKKyAgICAgICAgJ1wnJzogJyYjeDI3OycsCisgICAgICAgICdgJzogJyYjeDYwOycK
KyAgICB9OworCisgICAgdmFyIGVzY2FwZUh0bWxDaGFyID0gZnVuY3Rpb24gKGNocikgeworICAg
ICAgICByZXR1cm4gaHRtbEVzY2FwZXNbY2hyXTsKKyAgICB9OworCisgICAgdmFyIHJlVW5lc2Nh
cGVkSHRtbCA9IC9bJjw+IidgXS9nOworICAgIHZhciByZUhhc1VuZXNjYXBlZEh0bWwgPSBuZXcg
UmVnRXhwKHJlVW5lc2NhcGVkSHRtbC5zb3VyY2UpOworCisgICAgdmFyIGVzY2FwZSA9IGZ1bmN0
aW9uIChzdHJpbmcpIHsKKyAgICAgICAgcmV0dXJuIChzdHJpbmcgJiYgcmVIYXNVbmVzY2FwZWRI
dG1sLnRlc3Qoc3RyaW5nKSkKKyAgICAgICAgICAgID8gc3RyaW5nLnJlcGxhY2UocmVVbmVzY2Fw
ZWRIdG1sLCBlc2NhcGVIdG1sQ2hhcikKKyAgICAgICAgICAgIDogc3RyaW5nOworICAgIH07CisK
KyAgICAvKioKKyAgICAgKiBTZXRzIHVwIGRlZmF1bHRzIGZvciBhbGwgdGhlIFRlbXBsYXRlIG1l
dGhvZHMgc3VjaCBhcyBhIGRlZmF1bHQgdGVtcGxhdGUKKyAgICAgKgorICAgICAqIEBjb25zdHJ1
Y3RvcgorICAgICAqLworICAgIGZ1bmN0aW9uIFRlbXBsYXRlKCkgeworICAgICAgICB0aGlzLmRl
ZmF1bHRUZW1wbGF0ZQorICAgICAgICA9ICAgICc8bGkgZGF0YS1pZD0ie3tpZH19IiBjbGFzcz0i
e3tjb21wbGV0ZWR9fSI+JworICAgICAgICArICAgICAgICAnPGRpdiBjbGFzcz0idmlldyI+Jwor
ICAgICAgICArICAgICAgICAgICAgJzxpbnB1dCBjbGFzcz0idG9nZ2xlIiB0eXBlPSJjaGVja2Jv
eCIge3tjaGVja2VkfX0+JworICAgICAgICArICAgICAgICAgICAgJzxsYWJlbD57e3RpdGxlfX08
L2xhYmVsPicKKyAgICAgICAgKyAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJkZXN0cm95Ij48
L2J1dHRvbj4nCisgICAgICAgICsgICAgICAgICc8L2Rpdj4nCisgICAgICAgICsgICAgJzwvbGk+
JzsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGFuIDxsaT4gSFRNTCBzdHJpbmcg
YW5kIHJldHVybnMgaXQgZm9yIHBsYWNlbWVudCBpbiB5b3VyIGFwcC4KKyAgICAgKgorICAgICAq
IE5PVEU6IEluIHJlYWwgbGlmZSB5b3Ugc2hvdWxkIGJlIHVzaW5nIGEgdGVtcGxhdGluZyBlbmdp
bmUgc3VjaCBhcyBNdXN0YWNoZQorICAgICAqIG9yIEhhbmRsZWJhcnMsIGhvd2V2ZXIsIHRoaXMg
aXMgYSB2YW5pbGxhIEpTIGV4YW1wbGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0ge29iamVjdH0g
ZGF0YSBUaGUgb2JqZWN0IGNvbnRhaW5pbmcga2V5cyB5b3Ugd2FudCB0byBmaW5kIGluIHRoZQor
ICAgICAqICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlIHRvIHJlcGxhY2UuCisgICAgICog
QHJldHVybnMge3N0cmluZ30gSFRNTCBTdHJpbmcgb2YgYW4gPGxpPiBlbGVtZW50CisgICAgICoK
KyAgICAgKiBAZXhhbXBsZQorICAgICAqIHZpZXcuc2hvdyh7CisgICAgICogICAgaWQ6IDEsCisg
ICAgICogICAgdGl0bGU6ICJIZWxsbyBXb3JsZCIsCisgICAgICogICAgY29tcGxldGVkOiAwLAor
ICAgICAqIH0pOworICAgICAqLworICAgIFRlbXBsYXRlLnByb3RvdHlwZS5zaG93ID0gZnVuY3Rp
b24gKGRhdGEpIHsKKyAgICAgICAgdmFyIGksIGw7CisgICAgICAgIHZhciB2aWV3ID0gJyc7CisK
KyAgICAgICAgZm9yIChpID0gMCwgbCA9IGRhdGEubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CisgICAg
ICAgICAgICB2YXIgdGVtcGxhdGUgPSB0aGlzLmRlZmF1bHRUZW1wbGF0ZTsKKyAgICAgICAgICAg
IHZhciBjb21wbGV0ZWQgPSAnJzsKKyAgICAgICAgICAgIHZhciBjaGVja2VkID0gJyc7CisKKyAg
ICAgICAgICAgIGlmIChkYXRhW2ldLmNvbXBsZXRlZCkgeworICAgICAgICAgICAgICAgIGNvbXBs
ZXRlZCA9ICdjb21wbGV0ZWQnOworICAgICAgICAgICAgICAgIGNoZWNrZWQgPSAnY2hlY2tlZCc7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRlbXBsYXRlID0gdGVtcGxhdGUucmVwbGFj
ZSgne3tpZH19JywgZGF0YVtpXS5pZCk7CisgICAgICAgICAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRl
LnJlcGxhY2UoJ3t7dGl0bGV9fScsIGVzY2FwZShkYXRhW2ldLnRpdGxlKSk7CisgICAgICAgICAg
ICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7Y29tcGxldGVkfX0nLCBjb21wbGV0ZWQp
OworICAgICAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKCd7e2NoZWNrZWR9fScs
IGNoZWNrZWQpOworCisgICAgICAgICAgICB2aWV3ID0gdmlldyArIHRlbXBsYXRlOworICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIHZpZXc7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIERp
c3BsYXlzIGEgY291bnRlciBvZiBob3cgbWFueSB0byBkb3MgYXJlIGxlZnQgdG8gY29tcGxldGUK
KyAgICAgKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBhY3RpdmVUb2RvcyBUaGUgbnVtYmVyIG9m
IGFjdGl2ZSB0b2Rvcy4KKyAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBTdHJpbmcgY29udGFpbmlu
ZyB0aGUgY291bnQKKyAgICAgKi8KKyAgICBUZW1wbGF0ZS5wcm90b3R5cGUuaXRlbUNvdW50ZXIg
PSBmdW5jdGlvbiAoYWN0aXZlVG9kb3MpIHsKKyAgICAgICAgdmFyIHBsdXJhbCA9IGFjdGl2ZVRv
ZG9zID09PSAxID8gJycgOiAncyc7CisKKyAgICAgICAgcmV0dXJuICc8c3Ryb25nPicgKyBhY3Rp
dmVUb2RvcyArICc8L3N0cm9uZz4gaXRlbScgKyBwbHVyYWwgKyAnIGxlZnQnOworICAgIH07CisK
KyAgICAvKioKKyAgICAgKiBVcGRhdGVzIHRoZSB0ZXh0IHdpdGhpbiB0aGUgIkNsZWFyIGNvbXBs
ZXRlZCIgYnV0dG9uCisgICAgICoKKyAgICAgKiBAcGFyYW0gIHtbdHlwZV19IGNvbXBsZXRlZFRv
ZG9zIFRoZSBudW1iZXIgb2YgY29tcGxldGVkIHRvZG9zLgorICAgICAqIEByZXR1cm5zIHtzdHJp
bmd9IFN0cmluZyBjb250YWluaW5nIHRoZSBjb3VudAorICAgICAqLworICAgIFRlbXBsYXRlLnBy
b3RvdHlwZS5jbGVhckNvbXBsZXRlZEJ1dHRvbiA9IGZ1bmN0aW9uIChjb21wbGV0ZWRUb2Rvcykg
eworICAgICAgICBpZiAoY29tcGxldGVkVG9kb3MgPiAwKSB7CisgICAgICAgICAgICByZXR1cm4g
J0NsZWFyIGNvbXBsZXRlZCc7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4g
Jyc7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLy8gRXhwb3J0IHRvIHdpbmRvdworICAgIHdp
bmRvdy5hcHAgPSB3aW5kb3cuYXBwIHx8IHt9OworICAgIHdpbmRvdy5hcHAuVGVtcGxhdGUgPSBU
ZW1wbGF0ZTsKK30pKHdpbmRvdyk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL3Zp
ZXcuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zh
bmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL2pzL3ZpZXcuanMKaW5kZXggZDgyYjA5ODI3ZmY0NDNh
MDY0NjhlNTM1YjJhNGMzY2JiMzM0MzFhMi4uNjhkZTgzMDUxMzZkMThjOTBiZDYwYTY3ZGJiNWY1
NDM1YTcxMTJkYiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9qcy92aWV3LmpzCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1l
eGFtcGxlcy92YW5pbGxhanMvanMvdmlldy5qcwpAQCAtMSw5MSArMSwyMTkgQEAKLS8qanNoaW50
IGxheGJyZWFrOnRydWUgKi8KKy8qZ2xvYmFsIHFzLCBxc2EsICRvbiwgJHBhcmVudCwgJGRlbGVn
YXRlICovCisKIChmdW5jdGlvbiAod2luZG93KSB7CiAgICAgJ3VzZSBzdHJpY3QnOwogCiAgICAg
LyoqCi0gICAgICogU2V0cyB1cCBkZWZhdWx0cyBmb3IgYWxsIHRoZSBWaWV3IG1ldGhvZHMgc3Vj
aCBhcyBhIGRlZmF1bHQgdGVtcGxhdGUKLSAgICAgKgotICAgICAqIEBjb25zdHJ1Y3RvcgotICAg
ICAqLwotICAgIGZ1bmN0aW9uIFZpZXcoKSB7Ci0gICAgdGhpcy5kZWZhdWx0VGVtcGxhdGUKLSAg
ICA9ICAgICc8bGkgZGF0YS1pZD0ie3tpZH19IiBjbGFzcz0ie3tjb21wbGV0ZWR9fSI+JwotICAg
ICsgICAgICAgICc8ZGl2IGNsYXNzPSJ2aWV3Ij4nCi0gICAgKyAgICAgICAgICAgICc8aW5wdXQg
Y2xhc3M9InRvZ2dsZSIgdHlwZT0iY2hlY2tib3giIHt7Y2hlY2tlZH19PicKLSAgICArICAgICAg
ICAgICAgJzxsYWJlbD57e3RpdGxlfX08L2xhYmVsPicKLSAgICArICAgICAgICAgICAgJzxidXR0
b24gY2xhc3M9ImRlc3Ryb3kiPjwvYnV0dG9uPicKLSAgICArICAgICAgICAnPC9kaXY+JwotICAg
ICsgICAgJzwvbGk+JzsKLSAgICB9CisgICAgICAgICAqIFZpZXcgdGhhdCBhYnN0cmFjdHMgYXdh
eSB0aGUgYnJvd3NlcidzIERPTSBjb21wbGV0ZWx5LgorICAgICAgICAgKiBJdCBoYXMgdHdvIHNp
bXBsZSBlbnRyeSBwb2ludHM6CisgICAgICAgICAqCisgICAgICAgICAqICAgLSBiaW5kKGV2ZW50
TmFtZSwgaGFuZGxlcikKKyAgICAgICAgICogICAgIFRha2VzIGEgdG9kbyBhcHBsaWNhdGlvbiBl
dmVudCBhbmQgcmVnaXN0ZXJzIHRoZSBoYW5kbGVyCisgICAgICAgICAqICAgLSByZW5kZXIoY29t
bWFuZCwgcGFyYW1ldGVyT2JqZWN0KQorICAgICAgICAgKiAgICAgUmVuZGVycyB0aGUgZ2l2ZW4g
Y29tbWFuZCB3aXRoIHRoZSBvcHRpb25zCisgICAgICAgICAqLworICAgIGZ1bmN0aW9uIFZpZXco
dGVtcGxhdGUpIHsKKyAgICAgICAgdGhpcy50ZW1wbGF0ZSA9IHRlbXBsYXRlOwogCi0gICAgLyoq
Ci0gICAgICogQ3JlYXRlcyBhbiA8bGk+IEhUTUwgc3RyaW5nIGFuZCByZXR1cm5zIGl0IGZvciBw
bGFjZW1lbnQgaW4geW91ciBhcHAuCi0gICAgICoKLSAgICAgKiBOT1RFOiBJbiByZWFsIGxpZmUg
eW91IHNob3VsZCBiZSB1c2luZyBhIHRlbXBsYXRpbmcgZW5naW5lIHN1Y2ggYXMgTXVzdGFjaGUK
LSAgICAgKiBvciBIYW5kbGViYXJzLCBob3dldmVyLCB0aGlzIGlzIGEgdmFuaWxsYSBKUyBleGFt
cGxlLgotICAgICAqCi0gICAgICogQHBhcmFtIHtvYmplY3R9IGRhdGEgVGhlIG9iamVjdCBjb250
YWluaW5nIGtleXMgeW91IHdhbnQgdG8gZmluZCBpbiB0aGUKLSAgICAgKiAgICAgICAgICAgICAg
ICAgICAgICB0ZW1wbGF0ZSB0byByZXBsYWNlLgotICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IEhU
TUwgU3RyaW5nIG9mIGFuIDxsaT4gZWxlbWVudAotICAgICAqCi0gICAgICogQGV4YW1wbGUKLSAg
ICAgKiB2aWV3LnNob3coewotICAgICAqICAgIGlkOiAxLAotICAgICAqICAgIHRpdGxlOiAiSGVs
bG8gV29ybGQiLAotICAgICAqICAgIGNvbXBsZXRlZDogMCwKLSAgICAgKiB9KTsKLSAgICAgKi8K
LSAgICBWaWV3LnByb3RvdHlwZS5zaG93ID0gZnVuY3Rpb24gKGRhdGEpIHsKLSAgICB2YXIgaSwg
bDsKLSAgICB2YXIgdmlldyA9ICcnOwotCi0gICAgZm9yIChpID0gMCwgbCA9IGRhdGEubGVuZ3Ro
OyBpIDwgbDsgaSsrKSB7Ci0gICAgdmFyIHRlbXBsYXRlID0gdGhpcy5kZWZhdWx0VGVtcGxhdGU7
Ci0gICAgdmFyIGNvbXBsZXRlZCA9ICcnOwotICAgIHZhciBjaGVja2VkID0gJyc7Ci0KLSAgICBp
ZiAoZGF0YVtpXS5jb21wbGV0ZWQgPT09IDEpIHsKLSAgICBjb21wbGV0ZWQgPSAnY29tcGxldGVk
JzsKLSAgICBjaGVja2VkID0gJ2NoZWNrZWQnOworICAgICAgICB0aGlzLkVOVEVSX0tFWSA9IDEz
OworICAgICAgICB0aGlzLkVTQ0FQRV9LRVkgPSAyNzsKKworICAgICAgICB0aGlzLiR0b2RvTGlz
dCA9IHFzKCcudG9kby1saXN0Jyk7CisgICAgICAgIHRoaXMuJHRvZG9JdGVtQ291bnRlciA9IHFz
KCcudG9kby1jb3VudCcpOworICAgICAgICB0aGlzLiRjbGVhckNvbXBsZXRlZCA9IHFzKCcuY2xl
YXItY29tcGxldGVkJyk7CisgICAgICAgIHRoaXMuJG1haW4gPSBxcygnLm1haW4nKTsKKyAgICAg
ICAgdGhpcy4kZm9vdGVyID0gcXMoJy5mb290ZXInKTsKKyAgICAgICAgdGhpcy4kdG9nZ2xlQWxs
ID0gcXMoJy50b2dnbGUtYWxsJyk7CisgICAgICAgIHRoaXMuJG5ld1RvZG8gPSBxcygnLm5ldy10
b2RvJyk7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKCd7e2lkfX0n
LCBkYXRhW2ldLmlkKTsKLSAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7dGl0bGV9
fScsIGRhdGFbaV0udGl0bGUpOwotICAgIHRlbXBsYXRlID0gdGVtcGxhdGUucmVwbGFjZSgne3tj
b21wbGV0ZWR9fScsIGNvbXBsZXRlZCk7Ci0gICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNl
KCd7e2NoZWNrZWR9fScsIGNoZWNrZWQpOworICAgIFZpZXcucHJvdG90eXBlLl9yZW1vdmVJdGVt
ID0gZnVuY3Rpb24gKGlkKSB7CisgICAgICAgIHZhciBlbGVtID0gcXMoJ1tkYXRhLWlkPSInICsg
aWQgKyAnIl0nKTsKIAotICAgIHZpZXcgPSB2aWV3ICsgdGVtcGxhdGU7Ci0gICAgfQorICAgICAg
ICBpZiAoZWxlbSkgeworICAgICAgICAgICAgdGhpcy4kdG9kb0xpc3QucmVtb3ZlQ2hpbGQoZWxl
bSk7CisgICAgICAgIH0KKyAgICB9OwogCi0gICAgcmV0dXJuIHZpZXc7CisgICAgVmlldy5wcm90
b3R5cGUuX2NsZWFyQ29tcGxldGVkQnV0dG9uID0gZnVuY3Rpb24gKGNvbXBsZXRlZENvdW50LCB2
aXNpYmxlKSB7CisgICAgICAgIHRoaXMuJGNsZWFyQ29tcGxldGVkLmlubmVySFRNTCA9IHRoaXMu
dGVtcGxhdGUuY2xlYXJDb21wbGV0ZWRCdXR0b24oY29tcGxldGVkQ291bnQpOworICAgICAgICB0
aGlzLiRjbGVhckNvbXBsZXRlZC5zdHlsZS5kaXNwbGF5ID0gdmlzaWJsZSA/ICdibG9jaycgOiAn
bm9uZSc7CiAgICAgfTsKIAotICAgIC8qKgotICAgICAqIERpc3BsYXlzIGEgY291bnRlciBvZiBo
b3cgbWFueSB0byBkb3MgYXJlIGxlZnQgdG8gY29tcGxldGUKLSAgICAgKgotICAgICAqIEBwYXJh
bSB7bnVtYmVyfSBhY3RpdmVUb2RvcyBUaGUgbnVtYmVyIG9mIGFjdGl2ZSB0b2Rvcy4KLSAgICAg
KiBAcmV0dXJucyB7c3RyaW5nfSBTdHJpbmcgY29udGFpbmluZyB0aGUgY291bnQKLSAgICAgKi8K
LSAgICBWaWV3LnByb3RvdHlwZS5pdGVtQ291bnRlciA9IGZ1bmN0aW9uIChhY3RpdmVUb2Rvcykg
ewotICAgIHZhciBwbHVyYWwgPSBhY3RpdmVUb2RvcyA9PT0gMSA/ICcnIDogJ3MnOwotCi0gICAg
cmV0dXJuICc8c3Ryb25nPicgKyBhY3RpdmVUb2RvcyArICc8L3N0cm9uZz4gaXRlbScgKyBwbHVy
YWwgKyAnIGxlZnQnOworICAgIFZpZXcucHJvdG90eXBlLl9zZXRGaWx0ZXIgPSBmdW5jdGlvbiAo
Y3VycmVudFBhZ2UpIHsKKyAgICAgICAgcXMoJy5maWx0ZXJzIC5zZWxlY3RlZCcpLmNsYXNzTmFt
ZSA9ICcnOworICAgICAgICBxcygnLmZpbHRlcnMgW2hyZWY9IiMvJyArIGN1cnJlbnRQYWdlICsg
JyJdJykuY2xhc3NOYW1lID0gJ3NlbGVjdGVkJzsKICAgICB9OwogCi0gICAgLyoqCi0gICAgICog
VXBkYXRlcyB0aGUgdGV4dCB3aXRoaW4gdGhlICJDbGVhciBjb21wbGV0ZWQiIGJ1dHRvbgotICAg
ICAqCi0gICAgICogQHBhcmFtICB7W3R5cGVdfSBjb21wbGV0ZWRUb2RvcyBUaGUgbnVtYmVyIG9m
IGNvbXBsZXRlZCB0b2Rvcy4KLSAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBTdHJpbmcgY29udGFp
bmluZyB0aGUgY291bnQKLSAgICAgKi8KLSAgICBWaWV3LnByb3RvdHlwZS5jbGVhckNvbXBsZXRl
ZEJ1dHRvbiA9IGZ1bmN0aW9uIChjb21wbGV0ZWRUb2RvcykgewotICAgIGlmIChjb21wbGV0ZWRU
b2RvcyA+IDApIHsKLSAgICByZXR1cm4gJ0NsZWFyIGNvbXBsZXRlZCAoJyArIGNvbXBsZXRlZFRv
ZG9zICsgJyknOwotICAgIH0gZWxzZSB7Ci0gICAgcmV0dXJuICcnOwotICAgIH0KKyAgICBWaWV3
LnByb3RvdHlwZS5fZWxlbWVudENvbXBsZXRlID0gZnVuY3Rpb24gKGlkLCBjb21wbGV0ZWQpIHsK
KyAgICAgICAgdmFyIGxpc3RJdGVtID0gcXMoJ1tkYXRhLWlkPSInICsgaWQgKyAnIl0nKTsKKwor
ICAgICAgICBpZiAoIWxpc3RJdGVtKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBsaXN0SXRlbS5jbGFzc05hbWUgPSBjb21wbGV0ZWQgPyAnY29tcGxldGVkJyA6
ICcnOworCisgICAgICAgIC8vIEluIGNhc2UgaXQgd2FzIHRvZ2dsZWQgZnJvbSBhbiBldmVudCBh
bmQgbm90IGJ5IGNsaWNraW5nIHRoZSBjaGVja2JveAorICAgICAgICBxcygnaW5wdXQnLCBsaXN0
SXRlbSkuY2hlY2tlZCA9IGNvbXBsZXRlZDsKKyAgICB9OworCisgICAgVmlldy5wcm90b3R5cGUu
X2VkaXRJdGVtID0gZnVuY3Rpb24gKGlkLCB0aXRsZSkgeworICAgICAgICB2YXIgbGlzdEl0ZW0g
PSBxcygnW2RhdGEtaWQ9IicgKyBpZCArICciXScpOworCisgICAgICAgIGlmICghbGlzdEl0ZW0p
IHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGxpc3RJdGVtLmNs
YXNzTmFtZSA9IGxpc3RJdGVtLmNsYXNzTmFtZSArICcgZWRpdGluZyc7CisKKyAgICAgICAgdmFy
IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKKyAgICAgICAgaW5wdXQu
Y2xhc3NOYW1lID0gJ2VkaXQnOworCisgICAgICAgIGxpc3RJdGVtLmFwcGVuZENoaWxkKGlucHV0
KTsKKyAgICAgICAgaW5wdXQuZm9jdXMoKTsKKyAgICAgICAgaW5wdXQudmFsdWUgPSB0aXRsZTsK
KyAgICB9OworCisgICAgVmlldy5wcm90b3R5cGUuX2VkaXRJdGVtRG9uZSA9IGZ1bmN0aW9uIChp
ZCwgdGl0bGUpIHsKKyAgICAgICAgdmFyIGxpc3RJdGVtID0gcXMoJ1tkYXRhLWlkPSInICsgaWQg
KyAnIl0nKTsKKworICAgICAgICBpZiAoIWxpc3RJdGVtKSB7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICB2YXIgaW5wdXQgPSBxcygnaW5wdXQuZWRpdCcsIGxpc3RJ
dGVtKTsKKyAgICAgICAgbGlzdEl0ZW0ucmVtb3ZlQ2hpbGQoaW5wdXQpOworCisgICAgICAgIGxp
c3RJdGVtLmNsYXNzTmFtZSA9IGxpc3RJdGVtLmNsYXNzTmFtZS5yZXBsYWNlKCdlZGl0aW5nJywg
JycpOworCisgICAgICAgIHFzYSgnbGFiZWwnLCBsaXN0SXRlbSkuZm9yRWFjaChmdW5jdGlvbiAo
bGFiZWwpIHsKKyAgICAgICAgICAgIGxhYmVsLnRleHRDb250ZW50ID0gdGl0bGU7CisgICAgICAg
IH0pOworICAgIH07CisKKyAgICBWaWV3LnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAodmll
d0NtZCwgcGFyYW1ldGVyKSB7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgdmFy
IHZpZXdDb21tYW5kcyA9IHsKKyAgICAgICAgICAgIHNob3dFbnRyaWVzOiBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgc2VsZi4kdG9kb0xpc3QuaW5uZXJIVE1MID0gc2VsZi50ZW1wbGF0
ZS5zaG93KHBhcmFtZXRlcik7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgcmVtb3ZlSXRl
bTogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHNlbGYuX3JlbW92ZUl0ZW0ocGFyYW1l
dGVyKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB1cGRhdGVFbGVtZW50Q291bnQ6IGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBzZWxmLiR0b2RvSXRlbUNvdW50ZXIuaW5uZXJI
VE1MID0gc2VsZi50ZW1wbGF0ZS5pdGVtQ291bnRlcihwYXJhbWV0ZXIpOworICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgIGNsZWFyQ29tcGxldGVkQnV0dG9uOiBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgc2VsZi5fY2xlYXJDb21wbGV0ZWRCdXR0b24ocGFyYW1ldGVyLmNvbXBsZXRl
ZCwgcGFyYW1ldGVyLnZpc2libGUpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGNvbnRl
bnRCbG9ja1Zpc2liaWxpdHk6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBzZWxmLiRt
YWluLnN0eWxlLmRpc3BsYXkgPSBzZWxmLiRmb290ZXIuc3R5bGUuZGlzcGxheSA9IHBhcmFtZXRl
ci52aXNpYmxlID8gJ2Jsb2NrJyA6ICdub25lJzsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICB0b2dnbGVBbGw6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBzZWxmLiR0b2dnbGVB
bGwuY2hlY2tlZCA9IHBhcmFtZXRlci5jaGVja2VkOworICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgIHNldEZpbHRlcjogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHNlbGYuX3NldEZp
bHRlcihwYXJhbWV0ZXIpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGNsZWFyTmV3VG9k
bzogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHNlbGYuJG5ld1RvZG8udmFsdWUgPSAn
JzsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBlbGVtZW50Q29tcGxldGU6IGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICBzZWxmLl9lbGVtZW50Q29tcGxldGUocGFyYW1ldGVyLmlk
LCBwYXJhbWV0ZXIuY29tcGxldGVkKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBlZGl0
SXRlbTogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHNlbGYuX2VkaXRJdGVtKHBhcmFt
ZXRlci5pZCwgcGFyYW1ldGVyLnRpdGxlKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBl
ZGl0SXRlbURvbmU6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBzZWxmLl9lZGl0SXRl
bURvbmUocGFyYW1ldGVyLmlkLCBwYXJhbWV0ZXIudGl0bGUpOworICAgICAgICAgICAgfQorICAg
ICAgICB9OworCisgICAgICAgIHZpZXdDb21tYW5kc1t2aWV3Q21kXSgpOworICAgIH07CisKKyAg
ICBWaWV3LnByb3RvdHlwZS5faXRlbUlkID0gZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAg
dmFyIGxpID0gJHBhcmVudChlbGVtZW50LCAnbGknKTsKKyAgICAgICAgcmV0dXJuIHBhcnNlSW50
KGxpLmRhdGFzZXQuaWQsIDEwKTsKKyAgICB9OworCisgICAgVmlldy5wcm90b3R5cGUuX2JpbmRJ
dGVtRWRpdERvbmUgPSBmdW5jdGlvbiAoaGFuZGxlcikgeworICAgICAgICB2YXIgc2VsZiA9IHRo
aXM7CisgICAgICAgICRkZWxlZ2F0ZShzZWxmLiR0b2RvTGlzdCwgJ2xpIC5lZGl0JywgJ2JsdXIn
LCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBpZiAoIXRoaXMuZGF0YXNldC5pc2NhbmNlbGVk
KSB7CisgICAgICAgICAgICAgICAgaGFuZGxlcih7CisgICAgICAgICAgICAgICAgICAgIGlkOiBz
ZWxmLl9pdGVtSWQodGhpcyksCisgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLnZhbHVl
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworCisgICAg
ICAgICRkZWxlZ2F0ZShzZWxmLiR0b2RvTGlzdCwgJ2xpIC5lZGl0JywgJ2tleXByZXNzJywgZnVu
Y3Rpb24gKGV2ZW50KSB7CisgICAgICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gc2VsZi5F
TlRFUl9LRVkpIHsKKyAgICAgICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGN1cnNvciBmcm9tIHRo
ZSBpbnB1dCB3aGVuIHlvdSBoaXQgZW50ZXIganVzdCBsaWtlIGlmIGl0CisgICAgICAgICAgICAg
ICAgLy8gd2VyZSBhIHJlYWwgZm9ybQorICAgICAgICAgICAgICAgIHRoaXMuYmx1cigpOworICAg
ICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9OworCisgICAgVmlldy5wcm90b3R5cGUuX2Jp
bmRJdGVtRWRpdENhbmNlbCA9IGZ1bmN0aW9uIChoYW5kbGVyKSB7CisgICAgICAgIHZhciBzZWxm
ID0gdGhpczsKKyAgICAgICAgJGRlbGVnYXRlKHNlbGYuJHRvZG9MaXN0LCAnbGkgLmVkaXQnLCAn
a2V5dXAnLCBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgICAgIGlmIChldmVudC5rZXlDb2Rl
ID09PSBzZWxmLkVTQ0FQRV9LRVkpIHsKKyAgICAgICAgICAgICAgICB0aGlzLmRhdGFzZXQuaXNj
YW5jZWxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgdGhpcy5ibHVyKCk7CisKKyAgICAgICAg
ICAgICAgICBoYW5kbGVyKHtpZDogc2VsZi5faXRlbUlkKHRoaXMpfSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0pOworICAgIH07CisKKyAgICBWaWV3LnByb3RvdHlwZS5iaW5kID0gZnVuY3Rp
b24gKGV2ZW50LCBoYW5kbGVyKSB7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAg
aWYgKGV2ZW50ID09PSAnbmV3VG9kbycpIHsKKyAgICAgICAgICAgICRvbihzZWxmLiRuZXdUb2Rv
LCAnY2hhbmdlJywgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGhhbmRsZXIoc2VsZi4k
bmV3VG9kby52YWx1ZSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICB9IGVsc2UgaWYgKGV2
ZW50ID09PSAncmVtb3ZlQ29tcGxldGVkJykgeworICAgICAgICAgICAgJG9uKHNlbGYuJGNsZWFy
Q29tcGxldGVkLCAnY2xpY2snLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgaGFuZGxl
cigpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ3Rv
Z2dsZUFsbCcpIHsKKyAgICAgICAgICAgICRvbihzZWxmLiR0b2dnbGVBbGwsICdjbGljaycsIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVyKHtjb21wbGV0ZWQ6IHRoaXMuY2hl
Y2tlZH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgfSBlbHNlIGlmIChldmVudCA9PT0g
J2l0ZW1FZGl0JykgeworICAgICAgICAgICAgJGRlbGVnYXRlKHNlbGYuJHRvZG9MaXN0LCAnbGkg
bGFiZWwnLCAnZGJsY2xpY2snLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgaGFuZGxl
cih7aWQ6IHNlbGYuX2l0ZW1JZCh0aGlzKX0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
fSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1SZW1vdmUnKSB7CisgICAgICAgICAgICAkZGVsZWdh
dGUoc2VsZi4kdG9kb0xpc3QsICcuZGVzdHJveScsICdjbGljaycsIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICBoYW5kbGVyKHtpZDogc2VsZi5faXRlbUlkKHRoaXMpfSk7CisgICAgICAg
ICAgICB9KTsKKworICAgICAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAnaXRlbVRvZ2dsZScpIHsK
KyAgICAgICAgICAgICRkZWxlZ2F0ZShzZWxmLiR0b2RvTGlzdCwgJy50b2dnbGUnLCAnY2xpY2sn
LCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgaGFuZGxlcih7CisgICAgICAgICAgICAg
ICAgICAgIGlkOiBzZWxmLl9pdGVtSWQodGhpcyksCisgICAgICAgICAgICAgICAgICAgIGNvbXBs
ZXRlZDogdGhpcy5jaGVja2VkCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsK
KworICAgICAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAnaXRlbUVkaXREb25lJykgeworICAgICAg
ICAgICAgc2VsZi5fYmluZEl0ZW1FZGl0RG9uZShoYW5kbGVyKTsKKworICAgICAgICB9IGVsc2Ug
aWYgKGV2ZW50ID09PSAnaXRlbUVkaXRDYW5jZWwnKSB7CisgICAgICAgICAgICBzZWxmLl9iaW5k
SXRlbUVkaXRDYW5jZWwoaGFuZGxlcik7CisgICAgICAgIH0KICAgICB9OwogCiAgICAgLy8gRXhw
b3J0IHRvIHdpbmRvdworICAgIHdpbmRvdy5hcHAgPSB3aW5kb3cuYXBwIHx8IHt9OwogICAgIHdp
bmRvdy5hcHAuVmlldyA9IFZpZXc7Ci19KSh3aW5kb3cpOworfSh3aW5kb3cpKTsKZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxs
YS1leGFtcGxlcy92YW5pbGxhanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5j
c3MgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zhbmls
bGEtZXhhbXBsZXMvdmFuaWxsYWpzL25vZGVfbW9kdWxlcy90b2RvbXZjLWFwcC1jc3MvaW5kZXgu
Y3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIyYWI5ZTJjYWQ3Njk2NmRlYjhiZTQyZTk3N2M0MzAyNDFjNDM0NzcK
LS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL25vZGVfbW9kdWxlcy90b2RvbXZj
LWFwcC1jc3MvaW5kZXguY3NzCkBAIC0wLDAgKzEsMzc4IEBACitodG1sLAorYm9keSB7CisgICAg
bWFyZ2luOiAwOworICAgIHBhZGRpbmc6IDA7Cit9CisKK2J1dHRvbiB7CisgICAgbWFyZ2luOiAw
OworICAgIHBhZGRpbmc6IDA7CisgICAgYm9yZGVyOiAwOworICAgIGJhY2tncm91bmQ6IG5vbmU7
CisgICAgZm9udC1zaXplOiAxMDAlOworICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKKyAg
ICBmb250LWZhbWlseTogaW5oZXJpdDsKKyAgICBmb250LXdlaWdodDogaW5oZXJpdDsKKyAgICBj
b2xvcjogaW5oZXJpdDsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CisgICAgYXBwZWFy
YW5jZTogbm9uZTsKKyAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKyAg
ICAtbW96LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKyAgICBmb250LXNtb290aGluZzog
YW50aWFsaWFzZWQ7Cit9CisKK2JvZHkgeworICAgIGZvbnQ6IDE0cHggJ0hlbHZldGljYSBOZXVl
JywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsKKyAgICBsaW5lLWhlaWdodDogMS40ZW07
CisgICAgYmFja2dyb3VuZDogI2Y1ZjVmNTsKKyAgICBjb2xvcjogIzRkNGQ0ZDsKKyAgICBtaW4t
d2lkdGg6IDIzMHB4OworICAgIG1heC13aWR0aDogNTUwcHg7CisgICAgbWFyZ2luOiAwIGF1dG87
CisgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CisgICAgLW1vei1mb250
LXNtb290aGluZzogYW50aWFsaWFzZWQ7CisgICAgZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2Vk
OworICAgIGZvbnQtd2VpZ2h0OiAzMDA7Cit9CisKK2J1dHRvbiwKK2lucHV0W3R5cGU9ImNoZWNr
Ym94Il0geworICAgIG91dGxpbmU6IG5vbmU7Cit9CisKKy5oaWRkZW4geworICAgIGRpc3BsYXk6
IG5vbmU7Cit9CisKKy50b2RvYXBwIHsKKyAgICBiYWNrZ3JvdW5kOiAjZmZmOworICAgIG1hcmdp
bjogMTMwcHggMCA0MHB4IDA7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIGJveC1zaGFk
b3c6IDAgMnB4IDRweCAwIHJnYmEoMCwgMCwgMCwgMC4yKSwKKyAgICAgICAgICAgICAgICAwIDI1
cHggNTBweCAwIHJnYmEoMCwgMCwgMCwgMC4xKTsKK30KKworLnRvZG9hcHAgaW5wdXQ6Oi13ZWJr
aXQtaW5wdXQtcGxhY2Vob2xkZXIgeworICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKKyAgICBmb250
LXdlaWdodDogMzAwOworICAgIGNvbG9yOiAjZTZlNmU2OworfQorCisudG9kb2FwcCBpbnB1dDo6
LW1vei1wbGFjZWhvbGRlciB7CisgICAgZm9udC1zdHlsZTogaXRhbGljOworICAgIGZvbnQtd2Vp
Z2h0OiAzMDA7CisgICAgY29sb3I6ICNlNmU2ZTY7Cit9CisKKy50b2RvYXBwIGlucHV0OjppbnB1
dC1wbGFjZWhvbGRlciB7CisgICAgZm9udC1zdHlsZTogaXRhbGljOworICAgIGZvbnQtd2VpZ2h0
OiAzMDA7CisgICAgY29sb3I6ICNlNmU2ZTY7Cit9CisKKy50b2RvYXBwIGgxIHsKKyAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAtMTU1cHg7CisgICAgd2lkdGg6IDEwMCU7CisgICAg
Zm9udC1zaXplOiAxMDBweDsKKyAgICBmb250LXdlaWdodDogMTAwOworICAgIHRleHQtYWxpZ246
IGNlbnRlcjsKKyAgICBjb2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4xNSk7CisgICAgLXdlYmtp
dC10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OworICAgIC1tb3otdGV4dC1yZW5k
ZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKKyAgICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVM
ZWdpYmlsaXR5OworfQorCisubmV3LXRvZG8sCisuZWRpdCB7CisgICAgcG9zaXRpb246IHJlbGF0
aXZlOworICAgIG1hcmdpbjogMDsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBmb250LXNpemU6IDI0
cHg7CisgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CisgICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7
CisgICAgbGluZS1oZWlnaHQ6IDEuNGVtOworICAgIGJvcmRlcjogMDsKKyAgICBvdXRsaW5lOiBu
b25lOworICAgIGNvbG9yOiBpbmhlcml0OworICAgIHBhZGRpbmc6IDZweDsKKyAgICBib3JkZXI6
IDFweCBzb2xpZCAjOTk5OworICAgIGJveC1zaGFkb3c6IGluc2V0IDAgLTFweCA1cHggMCByZ2Jh
KDAsIDAsIDAsIDAuMik7CisgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKKyAgICAtd2Via2l0
LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKyAgICAtbW96LWZvbnQtc21vb3RoaW5nOiBh
bnRpYWxpYXNlZDsKKyAgICBmb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Cit9CisKKy5uZXct
dG9kbyB7CisgICAgcGFkZGluZzogMTZweCAxNnB4IDE2cHggNjBweDsKKyAgICBib3JkZXI6IG5v
bmU7CisgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjAwMyk7CisgICAgYm94LXNoYWRv
dzogaW5zZXQgMCAtMnB4IDFweCByZ2JhKDAsMCwwLDAuMDMpOworfQorCisubWFpbiB7CisgICAg
cG9zaXRpb246IHJlbGF0aXZlOworICAgIHotaW5kZXg6IDI7CisgICAgYm9yZGVyLXRvcDogMXB4
IHNvbGlkICNlNmU2ZTY7Cit9CisKK2xhYmVsW2Zvcj0ndG9nZ2xlLWFsbCddIHsKKyAgICBkaXNw
bGF5OiBub25lOworfQorCisudG9nZ2xlLWFsbCB7CisgICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgIHRvcDogLTU1cHg7CisgICAgbGVmdDogLTEycHg7CisgICAgd2lkdGg6IDYwcHg7CisgICAg
aGVpZ2h0OiAzNHB4OworICAgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgICBib3JkZXI6IG5vbmU7
IC8qIE1vYmlsZSBTYWZhcmkgKi8KK30KKworLnRvZ2dsZS1hbGw6YmVmb3JlIHsKKyAgICBjb250
ZW50OiAn4p2vJzsKKyAgICBmb250LXNpemU6IDIycHg7CisgICAgY29sb3I6ICNlNmU2ZTY7Cisg
ICAgcGFkZGluZzogMTBweCAyN3B4IDEwcHggMjdweDsKK30KKworLnRvZ2dsZS1hbGw6Y2hlY2tl
ZDpiZWZvcmUgeworICAgIGNvbG9yOiAjNzM3MzczOworfQorCisudG9kby1saXN0IHsKKyAgICBt
YXJnaW46IDA7CisgICAgcGFkZGluZzogMDsKKyAgICBsaXN0LXN0eWxlOiBub25lOworfQorCisu
dG9kby1saXN0IGxpIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgZm9udC1zaXplOiAy
NHB4OworICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWRlZGVkOworfQorCisudG9kby1s
aXN0IGxpOmxhc3QtY2hpbGQgeworICAgIGJvcmRlci1ib3R0b206IG5vbmU7Cit9CisKKy50b2Rv
LWxpc3QgbGkuZWRpdGluZyB7CisgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKKyAgICBwYWRkaW5n
OiAwOworfQorCisudG9kby1saXN0IGxpLmVkaXRpbmcgLmVkaXQgeworICAgIGRpc3BsYXk6IGJs
b2NrOworICAgIHdpZHRoOiA1MDZweDsKKyAgICBwYWRkaW5nOiAxM3B4IDE3cHggMTJweCAxN3B4
OworICAgIG1hcmdpbjogMCAwIDAgNDNweDsKK30KKworLnRvZG8tbGlzdCBsaS5lZGl0aW5nIC52
aWV3IHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisudG9kby1saXN0IGxpIC50b2dnbGUgewor
ICAgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgICB3aWR0aDogNDBweDsKKyAgICAvKiBhdXRvLCBz
aW5jZSBub24tV2ViS2l0IGJyb3dzZXJzIGRvZXNuJ3Qgc3VwcG9ydCBpbnB1dCBzdHlsaW5nICov
CisgICAgaGVpZ2h0OiBhdXRvOworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7
CisgICAgYm90dG9tOiAwOworICAgIG1hcmdpbjogYXV0byAwOworICAgIGJvcmRlcjogbm9uZTsg
LyogTW9iaWxlIFNhZmFyaSAqLworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKKyAgICBh
cHBlYXJhbmNlOiBub25lOworfQorCisudG9kby1saXN0IGxpIC50b2dnbGU6YWZ0ZXIgeworICAg
IGNvbnRlbnQ6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iLTEw
IC0xOCAxMDAgMTM1Ij48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI1MCIgZmlsbD0ibm9uZSIg
c3Ryb2tlPSIjZWRlZGVkIiBzdHJva2Utd2lkdGg9IjMiLz48L3N2Zz4nKTsKK30KKworLnRvZG8t
bGlzdCBsaSAudG9nZ2xlOmNoZWNrZWQ6YWZ0ZXIgeworICAgIGNvbnRlbnQ6IHVybCgnZGF0YTpp
bWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iLTEwIC0xOCAxMDAgMTM1Ij48Y2lyY2xl
IGN4PSI1MCIgY3k9IjUwIiByPSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYmRkYWQ1IiBzdHJv
a2Utd2lkdGg9IjMiLz48cGF0aCBmaWxsPSIjNWRjMmFmIiBkPSJNNzIgMjVMNDIgNzEgMjcgNTZs
LTQgNCAyMCAyMCAzNC01MnoiLz48L3N2Zz4nKTsKK30KKworLnRvZG8tbGlzdCBsaSBsYWJlbCB7
CisgICAgd2hpdGUtc3BhY2U6IHByZS1saW5lOworICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDsK
KyAgICBwYWRkaW5nOiAxNXB4IDYwcHggMTVweCAxNXB4OworICAgIG1hcmdpbi1sZWZ0OiA0NXB4
OworICAgIGRpc3BsYXk6IGJsb2NrOworICAgIGxpbmUtaGVpZ2h0OiAxLjI7CisgICAgdHJhbnNp
dGlvbjogY29sb3IgMC40czsKK30KKworLnRvZG8tbGlzdCBsaS5jb21wbGV0ZWQgbGFiZWwgewor
ICAgIGNvbG9yOiAjZDlkOWQ5OworICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoOwor
fQorCisudG9kby1saXN0IGxpIC5kZXN0cm95IHsKKyAgICBkaXNwbGF5OiBub25lOworICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgcmlnaHQ6IDEwcHg7CisgICAgYm90
dG9tOiAwOworICAgIHdpZHRoOiA0MHB4OworICAgIGhlaWdodDogNDBweDsKKyAgICBtYXJnaW46
IGF1dG8gMDsKKyAgICBmb250LXNpemU6IDMwcHg7CisgICAgY29sb3I6ICNjYzlhOWE7CisgICAg
bWFyZ2luLWJvdHRvbTogMTFweDsKKyAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzIGVhc2Utb3V0
OworfQorCisudG9kby1saXN0IGxpIC5kZXN0cm95OmhvdmVyIHsKKyAgICBjb2xvcjogI2FmNWI1
ZTsKK30KKworLnRvZG8tbGlzdCBsaSAuZGVzdHJveTphZnRlciB7CisgICAgY29udGVudDogJ8OX
JzsKK30KKworLnRvZG8tbGlzdCBsaTpob3ZlciAuZGVzdHJveSB7CisgICAgZGlzcGxheTogYmxv
Y2s7Cit9CisKKy50b2RvLWxpc3QgbGkgLmVkaXQgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisK
Ky50b2RvLWxpc3QgbGkuZWRpdGluZzpsYXN0LWNoaWxkIHsKKyAgICBtYXJnaW4tYm90dG9tOiAt
MXB4OworfQorCisuZm9vdGVyIHsKKyAgICBjb2xvcjogIzc3NzsKKyAgICBwYWRkaW5nOiAxMHB4
IDE1cHg7CisgICAgaGVpZ2h0OiAyMHB4OworICAgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgICBi
b3JkZXItdG9wOiAxcHggc29saWQgI2U2ZTZlNjsKK30KKworLmZvb3RlcjpiZWZvcmUgeworICAg
IGNvbnRlbnQ6ICcnOworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICByaWdodDogMDsKKyAg
ICBib3R0b206IDA7CisgICAgbGVmdDogMDsKKyAgICBoZWlnaHQ6IDUwcHg7CisgICAgb3ZlcmZs
b3c6IGhpZGRlbjsKKyAgICBib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjIp
LAorICAgICAgICAgICAgICAgIDAgOHB4IDAgLTNweCAjZjZmNmY2LAorICAgICAgICAgICAgICAg
IDAgOXB4IDFweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwKKyAgICAgICAgICAgICAgICAwIDE2
cHggMCAtNnB4ICNmNmY2ZjYsCisgICAgICAgICAgICAgICAgMCAxN3B4IDJweCAtNnB4IHJnYmEo
MCwgMCwgMCwgMC4yKTsKK30KKworLnRvZG8tY291bnQgeworICAgIGZsb2F0OiBsZWZ0OworICAg
IHRleHQtYWxpZ246IGxlZnQ7Cit9CisKKy50b2RvLWNvdW50IHN0cm9uZyB7CisgICAgZm9udC13
ZWlnaHQ6IDMwMDsKK30KKworLmZpbHRlcnMgeworICAgIG1hcmdpbjogMDsKKyAgICBwYWRkaW5n
OiAwOworICAgIGxpc3Qtc3R5bGU6IG5vbmU7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAg
IHJpZ2h0OiAwOworICAgIGxlZnQ6IDA7Cit9CisKKy5maWx0ZXJzIGxpIHsKKyAgICBkaXNwbGF5
OiBpbmxpbmU7Cit9CisKKy5maWx0ZXJzIGxpIGEgeworICAgIGNvbG9yOiBpbmhlcml0OworICAg
IG1hcmdpbjogM3B4OworICAgIHBhZGRpbmc6IDNweCA3cHg7CisgICAgdGV4dC1kZWNvcmF0aW9u
OiBub25lOworICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OworICAgIGJvcmRlci1y
YWRpdXM6IDNweDsKK30KKworLmZpbHRlcnMgbGkgYS5zZWxlY3RlZCwKKy5maWx0ZXJzIGxpIGE6
aG92ZXIgeworICAgIGJvcmRlci1jb2xvcjogcmdiYSgxNzUsIDQ3LCA0NywgMC4xKTsKK30KKwor
LmZpbHRlcnMgbGkgYS5zZWxlY3RlZCB7CisgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDE3NSwgNDcs
IDQ3LCAwLjIpOworfQorCisuY2xlYXItY29tcGxldGVkLAoraHRtbCAuY2xlYXItY29tcGxldGVk
OmFjdGl2ZSB7CisgICAgZmxvYXQ6IHJpZ2h0OworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAg
ICBsaW5lLWhlaWdodDogMjBweDsKKyAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CisgICAgY3Vy
c29yOiBwb2ludGVyOworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKK30KKworLmNsZWFyLWNvbXBs
ZXRlZDpob3ZlciB7CisgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cit9CisKKy5pbmZv
IHsKKyAgICBtYXJnaW46IDY1cHggYXV0byAwOworICAgIGNvbG9yOiAjYmZiZmJmOworICAgIGZv
bnQtc2l6ZTogMTBweDsKKyAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAy
NTUsIDAuNSk7CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworfQorCisuaW5mbyBwIHsKKyAgICBs
aW5lLWhlaWdodDogMTsKK30KKworLmluZm8gYSB7CisgICAgY29sb3I6IGluaGVyaXQ7CisgICAg
dGV4dC1kZWNvcmF0aW9uOiBub25lOworICAgIGZvbnQtd2VpZ2h0OiA0MDA7Cit9CisKKy5pbmZv
IGE6aG92ZXIgeworICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworfQorCisvKgorICAg
IEhhY2sgdG8gcmVtb3ZlIGJhY2tncm91bmQgZnJvbSBNb2JpbGUgU2FmYXJpLgorICAgIENhbid0
IHVzZSBpdCBnbG9iYWxseSBzaW5jZSBpdCBkZXN0cm95cyBjaGVja2JveGVzIGluIEZpcmVmb3gK
KyovCitAbWVkaWEgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjAp
IHsKKyAgICAudG9nZ2xlLWFsbCwKKyAgICAudG9kby1saXN0IGxpIC50b2dnbGUgeworICAgICAg
ICBiYWNrZ3JvdW5kOiBub25lOworICAgIH0KKworICAgIC50b2RvLWxpc3QgbGkgLnRvZ2dsZSB7
CisgICAgICAgIGhlaWdodDogNDBweDsKKyAgICB9CisKKyAgICAudG9nZ2xlLWFsbCB7CisgICAg
ICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOworICAgICAgICB0cmFuc2Zvcm06
IHJvdGF0ZSg5MGRlZyk7CisgICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKKyAgICAg
ICAgYXBwZWFyYW5jZTogbm9uZTsKKyAgICB9Cit9CisKK0BtZWRpYSAobWF4LXdpZHRoOiA0MzBw
eCkgeworICAgIC5mb290ZXIgeworICAgICAgICBoZWlnaHQ6IDUwcHg7CisgICAgfQorCisgICAg
LmZpbHRlcnMgeworICAgICAgICBib3R0b206IDEwcHg7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4
YW1wbGVzL3ZhbmlsbGFqcy9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24vYmFzZS5jc3MgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhh
bXBsZXMvdmFuaWxsYWpzL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmNzcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZDI1ZDNjODRhYzZjNmFlZjI2Yjk2ODNhMmJjMTBjNjFmOTYwYzhmCi0tLSAvZGV2
L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9ub2RlX21vZHVsZXMvdG9kb212Yy1jb21tb24v
YmFzZS5jc3MKQEAgLTAsMCArMSwxNDEgQEAKK2hyIHsKKyAgICBtYXJnaW46IDIwcHggMDsKKyAg
ICBib3JkZXI6IDA7CisgICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCAjYzVjNWM1OworICAgIGJv
cmRlci1ib3R0b206IDFweCBkYXNoZWQgI2Y3ZjdmNzsKK30KKworLmxlYXJuIGEgeworICAgIGZv
bnQtd2VpZ2h0OiBub3JtYWw7CisgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworICAgIGNvbG9y
OiAjYjgzZjQ1OworfQorCisubGVhcm4gYTpob3ZlciB7CisgICAgdGV4dC1kZWNvcmF0aW9uOiB1
bmRlcmxpbmU7CisgICAgY29sb3I6ICM3ODdlN2U7Cit9CisKKy5sZWFybiBoMywKKy5sZWFybiBo
NCwKKy5sZWFybiBoNSB7CisgICAgbWFyZ2luOiAxMHB4IDA7CisgICAgZm9udC13ZWlnaHQ6IDUw
MDsKKyAgICBsaW5lLWhlaWdodDogMS4yOworICAgIGNvbG9yOiAjMDAwOworfQorCisubGVhcm4g
aDMgeworICAgIGZvbnQtc2l6ZTogMjRweDsKK30KKworLmxlYXJuIGg0IHsKKyAgICBmb250LXNp
emU6IDE4cHg7Cit9CisKKy5sZWFybiBoNSB7CisgICAgbWFyZ2luLWJvdHRvbTogMDsKKyAgICBm
b250LXNpemU6IDE0cHg7Cit9CisKKy5sZWFybiB1bCB7CisgICAgcGFkZGluZzogMDsKKyAgICBt
YXJnaW46IDAgMCAzMHB4IDI1cHg7Cit9CisKKy5sZWFybiBsaSB7CisgICAgbGluZS1oZWlnaHQ6
IDIwcHg7Cit9CisKKy5sZWFybiBwIHsKKyAgICBmb250LXNpemU6IDE1cHg7CisgICAgZm9udC13
ZWlnaHQ6IDMwMDsKKyAgICBsaW5lLWhlaWdodDogMS4zOworICAgIG1hcmdpbi10b3A6IDA7Cisg
ICAgbWFyZ2luLWJvdHRvbTogMDsKK30KKworI2lzc3VlLWNvdW50IHsKKyAgICBkaXNwbGF5OiBu
b25lOworfQorCisucXVvdGUgeworICAgIGJvcmRlcjogbm9uZTsKKyAgICBtYXJnaW46IDIwcHgg
MCA2MHB4IDA7Cit9CisKKy5xdW90ZSBwIHsKKyAgICBmb250LXN0eWxlOiBpdGFsaWM7Cit9CisK
Ky5xdW90ZSBwOmJlZm9yZSB7CisgICAgY29udGVudDogJ+KAnCc7CisgICAgZm9udC1zaXplOiA1
MHB4OworICAgIG9wYWNpdHk6IC4xNTsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9w
OiAtMjBweDsKKyAgICBsZWZ0OiAzcHg7Cit9CisKKy5xdW90ZSBwOmFmdGVyIHsKKyAgICBjb250
ZW50OiAn4oCdJzsKKyAgICBmb250LXNpemU6IDUwcHg7CisgICAgb3BhY2l0eTogLjE1OworICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBib3R0b206IC00MnB4OworICAgIHJpZ2h0OiAzcHg7
Cit9CisKKy5xdW90ZSBmb290ZXIgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBib3R0
b206IC00MHB4OworICAgIHJpZ2h0OiAwOworfQorCisucXVvdGUgZm9vdGVyIGltZyB7CisgICAg
Ym9yZGVyLXJhZGl1czogM3B4OworfQorCisucXVvdGUgZm9vdGVyIGEgeworICAgIG1hcmdpbi1s
ZWZ0OiA1cHg7CisgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKK30KKworLnNwZWVjaC1idWJi
bGUgeworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBwYWRkaW5nOiAxMHB4OworICAgIGJh
Y2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgLjA0KTsKKyAgICBib3JkZXItcmFkaXVzOiA1cHg7Cit9
CisKKy5zcGVlY2gtYnViYmxlOmFmdGVyIHsKKyAgICBjb250ZW50OiAnJzsKKyAgICBwb3NpdGlv
bjogYWJzb2x1dGU7CisgICAgdG9wOiAxMDAlOworICAgIHJpZ2h0OiAzMHB4OworICAgIGJvcmRl
cjogMTNweCBzb2xpZCB0cmFuc3BhcmVudDsKKyAgICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAs
IDAsIDAsIC4wNCk7Cit9CisKKy5sZWFybi1iYXIgPiAubGVhcm4geworICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKKyAgICB3aWR0aDogMjcycHg7CisgICAgdG9wOiA4cHg7CisgICAgbGVmdDogLTMw
MHB4OworICAgIHBhZGRpbmc6IDEwcHg7CisgICAgYm9yZGVyLXJhZGl1czogNXB4OworICAgIGJh
Y2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjYpOworICAgIHRyYW5zaXRpb24t
cHJvcGVydHk6IGxlZnQ7CisgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogNTAwbXM7Cit9CisKK0Bt
ZWRpYSAobWluLXdpZHRoOiA4OTlweCkgeworICAgIC5sZWFybi1iYXIgeworICAgICAgICB3aWR0
aDogYXV0bzsKKyAgICAgICAgcGFkZGluZy1sZWZ0OiAzMDBweDsKKyAgICB9CisKKyAgICAubGVh
cm4tYmFyID4gLmxlYXJuIHsKKyAgICAgICAgbGVmdDogOHB4OworICAgIH0KK30KZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxs
YS1leGFtcGxlcy92YW5pbGxhanMvbm9kZV9tb2R1bGVzL3RvZG9tdmMtY29tbW9uL2Jhc2UuanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEt
ZXhhbXBsZXMvdmFuaWxsYWpzL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9iYXNlLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjgxZTAwNmJjNTAyZGRjNGM3NGY0N2JkMTNhODM5MjI3N2Y4MzBkYjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL25vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1v
bi9iYXNlLmpzCkBAIC0wLDAgKzEsMjQ5IEBACisvKiBnbG9iYWwgXyAqLworKGZ1bmN0aW9uICgp
IHsKKyAgICAndXNlIHN0cmljdCc7CisKKyAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovCisg
ICAgLy8gVW5kZXJzY29yZSdzIFRlbXBsYXRlIE1vZHVsZQorICAgIC8vIENvdXJ0ZXN5IG9mIHVu
ZGVyc2NvcmVqcy5vcmcKKyAgICB2YXIgXyA9IChmdW5jdGlvbiAoXykgeworICAgICAgICBfLmRl
ZmF1bHRzID0gZnVuY3Rpb24gKG9iamVjdCkgeworICAgICAgICAgICAgaWYgKCFvYmplY3QpIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0OworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZm9yICh2YXIgYXJnc0luZGV4ID0gMSwgYXJnc0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7
IGFyZ3NJbmRleCA8IGFyZ3NMZW5ndGg7IGFyZ3NJbmRleCsrKSB7CisgICAgICAgICAgICAgICAg
dmFyIGl0ZXJhYmxlID0gYXJndW1lbnRzW2FyZ3NJbmRleF07CisgICAgICAgICAgICAgICAgaWYg
KGl0ZXJhYmxlKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBpdGVyYWJs
ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iamVjdFtrZXldID09IG51bGwpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Rba2V5XSA9IGl0ZXJhYmxlW2tleV07
CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gb2JqZWN0Owor
ICAgICAgICB9CisKKyAgICAgICAgLy8gQnkgZGVmYXVsdCwgVW5kZXJzY29yZSB1c2VzIEVSQi1z
dHlsZSB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLCBjaGFuZ2UgdGhlCisgICAgICAgIC8vIGZvbGxvd2lu
ZyB0ZW1wbGF0ZSBzZXR0aW5ncyB0byB1c2UgYWx0ZXJuYXRpdmUgZGVsaW1pdGVycy4KKyAgICAg
ICAgXy50ZW1wbGF0ZVNldHRpbmdzID0geworICAgICAgICAgICAgZXZhbHVhdGUgICAgOiAvPCUo
W1xzXFNdKz8pJT4vZywKKyAgICAgICAgICAgIGludGVycG9sYXRlIDogLzwlPShbXHNcU10rPykl
Pi9nLAorICAgICAgICAgICAgZXNjYXBlICAgICAgOiAvPCUtKFtcc1xTXSs/KSU+L2cKKyAgICAg
ICAgfTsKKworICAgICAgICAvLyBXaGVuIGN1c3RvbWl6aW5nIGB0ZW1wbGF0ZVNldHRpbmdzYCwg
aWYgeW91IGRvbid0IHdhbnQgdG8gZGVmaW5lIGFuCisgICAgICAgIC8vIGludGVycG9sYXRpb24s
IGV2YWx1YXRpb24gb3IgZXNjYXBpbmcgcmVnZXgsIHdlIG5lZWQgb25lIHRoYXQgaXMKKyAgICAg
ICAgLy8gZ3VhcmFudGVlZCBub3QgdG8gbWF0Y2guCisgICAgICAgIHZhciBub01hdGNoID0gLygu
KV4vOworCisgICAgICAgIC8vIENlcnRhaW4gY2hhcmFjdGVycyBuZWVkIHRvIGJlIGVzY2FwZWQg
c28gdGhhdCB0aGV5IGNhbiBiZSBwdXQgaW50byBhCisgICAgICAgIC8vIHN0cmluZyBsaXRlcmFs
LgorICAgICAgICB2YXIgZXNjYXBlcyA9IHsKKyAgICAgICAgICAgICInIjogICAgICAiJyIsCisg
ICAgICAgICAgICAnXFwnOiAgICAgJ1xcJywKKyAgICAgICAgICAgICdccic6ICAgICAncicsCisg
ICAgICAgICAgICAnXG4nOiAgICAgJ24nLAorICAgICAgICAgICAgJ1x0JzogICAgICd0JywKKyAg
ICAgICAgICAgICdcdTIwMjgnOiAndTIwMjgnLAorICAgICAgICAgICAgJ1x1MjAyOSc6ICd1MjAy
OScKKyAgICAgICAgfTsKKworICAgICAgICB2YXIgZXNjYXBlciA9IC9cXHwnfFxyfFxufFx0fFx1
MjAyOHxcdTIwMjkvZzsKKworICAgICAgICAvLyBKYXZhU2NyaXB0IG1pY3JvLXRlbXBsYXRpbmcs
IHNpbWlsYXIgdG8gSm9obiBSZXNpZydzIGltcGxlbWVudGF0aW9uLgorICAgICAgICAvLyBVbmRl
cnNjb3JlIHRlbXBsYXRpbmcgaGFuZGxlcyBhcmJpdHJhcnkgZGVsaW1pdGVycywgcHJlc2VydmVz
IHdoaXRlc3BhY2UsCisgICAgICAgIC8vIGFuZCBjb3JyZWN0bHkgZXNjYXBlcyBxdW90ZXMgd2l0
aGluIGludGVycG9sYXRlZCBjb2RlLgorICAgICAgICBfLnRlbXBsYXRlID0gZnVuY3Rpb24odGV4
dCwgZGF0YSwgc2V0dGluZ3MpIHsKKyAgICAgICAgICAgIHZhciByZW5kZXI7CisgICAgICAgICAg
ICBzZXR0aW5ncyA9IF8uZGVmYXVsdHMoe30sIHNldHRpbmdzLCBfLnRlbXBsYXRlU2V0dGluZ3Mp
OworCisgICAgICAgICAgICAvLyBDb21iaW5lIGRlbGltaXRlcnMgaW50byBvbmUgcmVndWxhciBl
eHByZXNzaW9uIHZpYSBhbHRlcm5hdGlvbi4KKyAgICAgICAgICAgIHZhciBtYXRjaGVyID0gbmV3
IFJlZ0V4cChbCisgICAgICAgICAgICAgICAgKHNldHRpbmdzLmVzY2FwZSB8fCBub01hdGNoKS5z
b3VyY2UsCisgICAgICAgICAgICAgICAgKHNldHRpbmdzLmludGVycG9sYXRlIHx8IG5vTWF0Y2gp
LnNvdXJjZSwKKyAgICAgICAgICAgICAgICAoc2V0dGluZ3MuZXZhbHVhdGUgfHwgbm9NYXRjaCku
c291cmNlCisgICAgICAgICAgICBdLmpvaW4oJ3wnKSArICd8JCcsICdnJyk7CisKKyAgICAgICAg
ICAgIC8vIENvbXBpbGUgdGhlIHRlbXBsYXRlIHNvdXJjZSwgZXNjYXBpbmcgc3RyaW5nIGxpdGVy
YWxzIGFwcHJvcHJpYXRlbHkuCisgICAgICAgICAgICB2YXIgaW5kZXggPSAwOworICAgICAgICAg
ICAgdmFyIHNvdXJjZSA9ICJfX3ArPSciOworICAgICAgICAgICAgdGV4dC5yZXBsYWNlKG1hdGNo
ZXIsIGZ1bmN0aW9uKG1hdGNoLCBlc2NhcGUsIGludGVycG9sYXRlLCBldmFsdWF0ZSwgb2Zmc2V0
KSB7CisgICAgICAgICAgICAgICAgc291cmNlICs9IHRleHQuc2xpY2UoaW5kZXgsIG9mZnNldCkK
KyAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoZXNjYXBlciwgZnVuY3Rpb24obWF0Y2gpIHsg
cmV0dXJuICdcXCcgKyBlc2NhcGVzW21hdGNoXTsgfSk7CisKKyAgICAgICAgICAgICAgICBpZiAo
ZXNjYXBlKSB7CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSArPSAiJytcbigoX190PSgiICsg
ZXNjYXBlICsgIikpPT1udWxsPycnOl8uZXNjYXBlKF9fdCkpK1xuJyI7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGlmIChpbnRlcnBvbGF0ZSkgeworICAgICAgICAgICAgICAg
ICAgICBzb3VyY2UgKz0gIicrXG4oKF9fdD0oIiArIGludGVycG9sYXRlICsgIikpPT1udWxsPycn
Ol9fdCkrXG4nIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGV2YWx1
YXRlKSB7CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSArPSAiJztcbiIgKyBldmFsdWF0ZSAr
ICJcbl9fcCs9JyI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGluZGV4ID0g
b2Zmc2V0ICsgbWF0Y2gubGVuZ3RoOworICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaDsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgc291cmNlICs9ICInO1xuIjsKKworICAgICAgICAg
ICAgLy8gSWYgYSB2YXJpYWJsZSBpcyBub3Qgc3BlY2lmaWVkLCBwbGFjZSBkYXRhIHZhbHVlcyBp
biBsb2NhbCBzY29wZS4KKyAgICAgICAgICAgIGlmICghc2V0dGluZ3MudmFyaWFibGUpIHNvdXJj
ZSA9ICd3aXRoKG9ianx8e30pe1xuJyArIHNvdXJjZSArICd9XG4nOworCisgICAgICAgICAgICBz
b3VyY2UgPSAidmFyIF9fdCxfX3A9JycsX19qPUFycmF5LnByb3RvdHlwZS5qb2luLCIgKworICAg
ICAgICAgICAgICAgICJwcmludD1mdW5jdGlvbigpe19fcCs9X19qLmNhbGwoYXJndW1lbnRzLCcn
KTt9O1xuIiArCisgICAgICAgICAgICAgICAgc291cmNlICsgInJldHVybiBfX3A7XG4iOworCisg
ICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHJlbmRlciA9IG5ldyBGdW5jdGlvbihz
ZXR0aW5ncy52YXJpYWJsZSB8fCAnb2JqJywgJ18nLCBzb3VyY2UpOworICAgICAgICAgICAgfSBj
YXRjaCAoZSkgeworICAgICAgICAgICAgICAgIGUuc291cmNlID0gc291cmNlOworICAgICAgICAg
ICAgICAgIHRocm93IGU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChkYXRhKSBy
ZXR1cm4gcmVuZGVyKGRhdGEsIF8pOworICAgICAgICAgICAgdmFyIHRlbXBsYXRlID0gZnVuY3Rp
b24oZGF0YSkgeworICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXIuY2FsbCh0aGlzLCBkYXRh
LCBfKTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIC8vIFByb3ZpZGUgdGhlIGNvbXBp
bGVkIGZ1bmN0aW9uIHNvdXJjZSBhcyBhIGNvbnZlbmllbmNlIGZvciBwcmVjb21waWxhdGlvbi4K
KyAgICAgICAgICAgIHRlbXBsYXRlLnNvdXJjZSA9ICdmdW5jdGlvbignICsgKHNldHRpbmdzLnZh
cmlhYmxlIHx8ICdvYmonKSArICcpe1xuJyArIHNvdXJjZSArICd9JzsKKworICAgICAgICAgICAg
cmV0dXJuIHRlbXBsYXRlOworICAgICAgICB9OworCisgICAgICAgIHJldHVybiBfOworICAgIH0p
KHt9KTsKKworICAgIGlmIChsb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ3RvZG9tdmMuY29tJykgewor
ICAgICAgICAoZnVuY3Rpb24oaSxzLG8sZyxyLGEsbSl7aVsnR29vZ2xlQW5hbHl0aWNzT2JqZWN0
J109cjtpW3JdPWlbcl18fGZ1bmN0aW9uKCl7CisgICAgICAgIChpW3JdLnE9aVtyXS5xfHxbXSku
cHVzaChhcmd1bWVudHMpfSxpW3JdLmw9MSpuZXcgRGF0ZSgpO2E9cy5jcmVhdGVFbGVtZW50KG8p
LAorICAgICAgICBtPXMuZ2V0RWxlbWVudHNCeVRhZ05hbWUobylbMF07YS5hc3luYz0xO2Euc3Jj
PWc7bS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLG0pCisgICAgICAgIH0pKHdpbmRvdyxkb2N1
bWVudCwnc2NyaXB0JywnaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0aWNz
LmpzJywnZ2EnKTsKKyAgICAgICAgZ2EoJ2NyZWF0ZScsICdVQS0zMTA4MTA2Mi0xJywgJ2F1dG8n
KTsKKyAgICAgICAgZ2EoJ3NlbmQnLCAncGFnZXZpZXcnKTsKKyAgICB9CisgICAgLyoganNoaW50
IGlnbm9yZTplbmQgKi8KKworICAgIGZ1bmN0aW9uIHJlZGlyZWN0KCkgeworICAgICAgICBpZiAo
bG9jYXRpb24uaG9zdG5hbWUgPT09ICd0YXN0ZWpzLmdpdGh1Yi5pbycpIHsKKyAgICAgICAgICAg
IGxvY2F0aW9uLmhyZWYgPSBsb2NhdGlvbi5ocmVmLnJlcGxhY2UoJ3Rhc3RlanMuZ2l0aHViLmlv
L3RvZG9tdmMnLCAndG9kb212Yy5jb20nKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0
aW9uIGZpbmRSb290KCkgeworICAgICAgICB2YXIgYmFzZSA9IGxvY2F0aW9uLmhyZWYuaW5kZXhP
ZignZXhhbXBsZXMvJyk7CisgICAgICAgIHJldHVybiBsb2NhdGlvbi5ocmVmLnN1YnN0cigwLCBi
YXNlKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBnZXRGaWxlKGZpbGUsIGNhbGxiYWNrKSB7Cisg
ICAgICAgIGlmICghbG9jYXRpb24uaG9zdCkgeworICAgICAgICAgICAgcmV0dXJuIGNvbnNvbGUu
aW5mbygnTWlzcyB0aGUgaW5mbyBiYXI/IFJ1biBUb2RvTVZDIGZyb20gYSBzZXJ2ZXIgdG8gYXZv
aWQgYSBjcm9zcy1vcmlnaW4gZXJyb3IuJyk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgeGhy
ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisKKyAgICAgICAgeGhyLm9wZW4oJ0dFVCcsIGZpbmRS
b290KCkgKyBmaWxlLCB0cnVlKTsKKyAgICAgICAgeGhyLnNlbmQoKTsKKworICAgICAgICB4aHIu
b25sb2FkID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIw
MCAmJiBjYWxsYmFjaykgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHhoci5yZXNwb25zZVRl
eHQpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKworICAgIGZ1bmN0aW9uIExl
YXJuKGxlYXJuSlNPTiwgY29uZmlnKSB7CisgICAgICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBM
ZWFybikpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgTGVhcm4obGVhcm5KU09OLCBjb25maWcp
OworICAgICAgICB9CisKKyAgICAgICAgdmFyIHRlbXBsYXRlLCBmcmFtZXdvcms7CisKKyAgICAg
ICAgaWYgKHR5cGVvZiBsZWFybkpTT04gIT09ICdvYmplY3QnKSB7CisgICAgICAgICAgICB0cnkg
eworICAgICAgICAgICAgICAgIGxlYXJuSlNPTiA9IEpTT04ucGFyc2UobGVhcm5KU09OKTsKKyAg
ICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29uZmlnKSB7CisgICAgICAgICAgICB0
ZW1wbGF0ZSA9IGNvbmZpZy50ZW1wbGF0ZTsKKyAgICAgICAgICAgIGZyYW1ld29yayA9IGNvbmZp
Zy5mcmFtZXdvcms7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRlbXBsYXRlICYmIGxlYXJu
SlNPTi50ZW1wbGF0ZXMpIHsKKyAgICAgICAgICAgIHRlbXBsYXRlID0gbGVhcm5KU09OLnRlbXBs
YXRlcy50b2RvbXZjOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFmcmFtZXdvcmsgJiYgZG9j
dW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtZnJhbWV3b3JrXScpKSB7CisgICAgICAgICAgICBm
cmFtZXdvcmsgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1mcmFtZXdvcmtdJykuZGF0
YXNldC5mcmFtZXdvcms7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLnRlbXBsYXRlID0gdGVt
cGxhdGU7CisKKyAgICAgICAgaWYgKGxlYXJuSlNPTi5iYWNrZW5kKSB7CisgICAgICAgICAgICB0
aGlzLmZyYW1ld29ya0pTT04gPSBsZWFybkpTT04uYmFja2VuZDsKKyAgICAgICAgICAgIHRoaXMu
ZnJhbWV3b3JrSlNPTi5pc3N1ZUxhYmVsID0gZnJhbWV3b3JrOworICAgICAgICAgICAgdGhpcy5h
cHBlbmQoeworICAgICAgICAgICAgICAgIGJhY2tlbmQ6IHRydWUKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9IGVsc2UgaWYgKGxlYXJuSlNPTltmcmFtZXdvcmtdKSB7CisgICAgICAgICAgICB0
aGlzLmZyYW1ld29ya0pTT04gPSBsZWFybkpTT05bZnJhbWV3b3JrXTsKKyAgICAgICAgICAgIHRo
aXMuZnJhbWV3b3JrSlNPTi5pc3N1ZUxhYmVsID0gZnJhbWV3b3JrOworICAgICAgICAgICAgdGhp
cy5hcHBlbmQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuZmV0Y2hJc3N1ZUNvdW50KCk7
CisgICAgfQorCisgICAgTGVhcm4ucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uIChvcHRzKSB7
CisgICAgICAgIHZhciBhc2lkZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2FzaWRlJyk7Cisg
ICAgICAgIGFzaWRlLmlubmVySFRNTCA9IF8udGVtcGxhdGUodGhpcy50ZW1wbGF0ZSwgdGhpcy5m
cmFtZXdvcmtKU09OKTsKKyAgICAgICAgYXNpZGUuY2xhc3NOYW1lID0gJ2xlYXJuJzsKKworICAg
ICAgICBpZiAob3B0cyAmJiBvcHRzLmJhY2tlbmQpIHsKKyAgICAgICAgICAgIC8vIFJlbW92ZSBk
ZW1vIGxpbmsKKyAgICAgICAgICAgIHZhciBzb3VyY2VMaW5rcyA9IGFzaWRlLnF1ZXJ5U2VsZWN0
b3IoJy5zb3VyY2UtbGlua3MnKTsKKyAgICAgICAgICAgIHZhciBoZWFkaW5nID0gc291cmNlTGlu
a3MuZmlyc3RFbGVtZW50Q2hpbGQ7CisgICAgICAgICAgICB2YXIgc291cmNlTGluayA9IHNvdXJj
ZUxpbmtzLmxhc3RFbGVtZW50Q2hpbGQ7CisgICAgICAgICAgICAvLyBDb3JyZWN0IGxpbmsgcGF0
aAorICAgICAgICAgICAgdmFyIGhyZWYgPSBzb3VyY2VMaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicp
OworICAgICAgICAgICAgc291cmNlTGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBocmVmLnN1YnN0
cihocmVmLmxhc3RJbmRleE9mKCdodHRwJykpKTsKKyAgICAgICAgICAgIHNvdXJjZUxpbmtzLmlu
bmVySFRNTCA9IGhlYWRpbmcub3V0ZXJIVE1MICsgc291cmNlTGluay5vdXRlckhUTUw7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBMb2NhbGl6ZSBkZW1vIGxpbmtzCisgICAgICAg
ICAgICB2YXIgZGVtb0xpbmtzID0gYXNpZGUucXVlcnlTZWxlY3RvckFsbCgnLmRlbW8tbGluaycp
OworICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChkZW1vTGlua3MsIGZ1
bmN0aW9uIChkZW1vTGluaykgeworICAgICAgICAgICAgICAgIGlmIChkZW1vTGluay5nZXRBdHRy
aWJ1dGUoJ2hyZWYnKS5zdWJzdHIoMCwgNCkgIT09ICdodHRwJykgeworICAgICAgICAgICAgICAg
ICAgICBkZW1vTGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBmaW5kUm9vdCgpICsgZGVtb0xpbmsu
Z2V0QXR0cmlidXRlKCdocmVmJykpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0p
OworICAgICAgICB9CisKKyAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSAoZG9jdW1l
bnQuYm9keS5jbGFzc05hbWUgKyAnIGxlYXJuLWJhcicpLnRyaW0oKTsKKyAgICAgICAgZG9jdW1l
bnQuYm9keS5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyQmVnaW4nLCBhc2lkZS5vdXRlckhUTUwp
OworICAgIH07CisKKyAgICBMZWFybi5wcm90b3R5cGUuZmV0Y2hJc3N1ZUNvdW50ID0gZnVuY3Rp
b24gKCkgeworICAgICAgICB2YXIgaXNzdWVMaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2lzc3VlLWNvdW50LWxpbmsnKTsKKyAgICAgICAgaWYgKGlzc3VlTGluaykgeworICAgICAgICAg
ICAgdmFyIHVybCA9IGlzc3VlTGluay5ocmVmLnJlcGxhY2UoJ2h0dHBzOi8vZ2l0aHViLmNvbScs
ICdodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zJyk7CisgICAgICAgICAgICB2YXIgeGhyID0g
bmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgICAgICAgICB4aHIub3BlbignR0VUJywgdXJsLCB0
cnVlKTsKKyAgICAgICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoZSkgeworICAgICAgICAg
ICAgICAgIHZhciBwYXJzZWRSZXNwb25zZSA9IEpTT04ucGFyc2UoZS50YXJnZXQucmVzcG9uc2VU
ZXh0KTsKKyAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2UgaW5zdGFuY2VvZiBBcnJh
eSkgeworICAgICAgICAgICAgICAgICAgICB2YXIgY291bnQgPSBwYXJzZWRSZXNwb25zZS5sZW5n
dGg7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCAhPT0gMCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgaXNzdWVMaW5rLmlubmVySFRNTCA9ICdUaGlzIGFwcCBoYXMgJyArIGNvdW50
ICsgJyBvcGVuIGlzc3Vlcyc7CisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnaXNzdWUtY291bnQnKS5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZSc7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworICAg
ICAgICAgICAgeGhyLnNlbmQoKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICByZWRpcmVjdCgp
OworICAgIGdldEZpbGUoJ2xlYXJuLmpzb24nLCBMZWFybik7Cit9KSgpOwpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4
YW1wbGVzL3ZhbmlsbGFqcy9wYWNrYWdlLmpzb24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvdmFuaWxsYWpzL3BhY2thZ2Uu
anNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41OGM1YTgwNjNkOWRhMDllZTViNWNiMmUyNzMzMWRlNmI3MzMwYTJk
Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9wYWNrYWdlLmpzb24KQEAgLTAs
MCArMSwxMCBAQAoreworICAicHJpdmF0ZSI6IHRydWUsCisgICJkZXBlbmRlbmNpZXMiOiB7Cisg
ICAgInRvZG9tdmMtY29tbW9uIjogIl4xLjAuMSIsCisgICAgInRvZG9tdmMtYXBwLWNzcyI6ICJe
Mi4wLjEiCisgIH0sCisgICJkZXZEZXBlbmRlbmNpZXMiOiB7CisgICAgImphc21pbmUtY29yZSI6
ICJeMi4wLjAiCisgIH0KK30K
</data>

          </attachment>
      

    </bug>

</bugzilla>