<?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>86612</bug_id>
          
          <creation_ts>2012-05-16 05:38:38 -0700</creation_ts>
          <short_desc>Web Inspector: rename ProfileView.js to CPUProfileView.js</short_desc>
          <delta_ts>2012-05-16 06:16:15 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>625312</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-16 05:38:38 -0700</bug_when>
    <thetext>The file contains CPU profile view implementation and should have proper name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625314</commentid>
    <comment_count>1</comment_count>
      <attachid>142229</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-16 05:40:15 -0700</bug_when>
    <thetext>Created attachment 142229
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625324</commentid>
    <comment_count>2</comment_count>
      <attachid>142229</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-05-16 05:46:35 -0700</bug_when>
    <thetext>Comment on attachment 142229
Patch

Attachment 142229 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12716232</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625339</commentid>
    <comment_count>3</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-16 06:16:15 -0700</bug_when>
    <thetext>Committed r117272: &lt;http://trac.webkit.org/changeset/117272&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142229</attachid>
            <date>2012-05-16 05:40:15 -0700</date>
            <delta_ts>2012-05-16 05:46:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86612-20120516164012.patch</filename>
            <type>text/plain</type>
            <size>60374</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3MjY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDM2YTljZTczNjNkYWI2
YmY0YTdmYjM5ZGM0YjE1MjYzMmUyMmY3OS4uOTE4MmZkNmQwNTE2OTFmOTBjMDk1YWQwYmMyM2Q4
ODg5OGIzMDY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEyLTA1LTE2ICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHJlbmFtZSBQcm9maWxlVmlldy5qcyB0byBDUFVQcm9maWxlVmlldy5qcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY2MTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWVkIFByb2ZpbGVWaWV3
LmpzIHRvIENQVVByb2ZpbGVWaWV3LmpzIHRvIG1hdGNoIHRoZSBmaWxlIGNvbnRlbnQuCisKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2o6CisgICAgICAgICogaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5OgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ1BVUHJvZmlsZVZpZXcuanM6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVWaWV3LmpzLgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVWaWV3LnByb2ZpbGVDYWxsYmFjayk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVZpZXcucHJvdG90eXBlLmdldCBzdGF0dXNCYXJJdGVt
cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVZpZXcucHJvdG90eXBlLmdldCBw
cm9maWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVmlldy5wcm90b3R5cGUu
c2V0IHByb2ZpbGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVWaWV3LnByb3Rv
dHlwZS5nZXQgYm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5DUFVQcm9maWxlVmlldy5wcm90b3R5cGUuZ2V0IHRvcERvd25Qcm9maWxlRGF0YUdyaWRU
cmVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVmlldy5wcm90b3R5cGUuZ2V0
IGN1cnJlbnRUcmVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVmlldy5wcm90
b3R5cGUuc2V0IGN1cnJlbnRUcmVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DUFVQcm9maWxl
Vmlldy5wcm90b3R5cGUud2lsbEhpZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNQVVByb2Zp
bGVWaWV3LnByb3RvdHlwZS5yZWZyZXNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DUFVQcm9m
aWxlVmlldy5wcm90b3R5cGUucmVmcmVzaFZpc2libGVEYXRhKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5DUFVQcm9maWxlVmlldy5wcm90b3R5cGUucmVmcmVzaFNob3dBc1BlcmNlbnRzKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVmlldy5wcm90b3R5cGUuc2VhcmNoQ2FuY2Vs
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVWaWV3LnByb3RvdHlwZS5wZXJm
b3JtU2VhcmNoLm1hdGNoZXNRdWVyeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1BVUHJvZmls
ZVZpZXcucHJvdG90eXBlLnBlcmZvcm1TZWFyY2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNQ
VVByb2ZpbGVWaWV3LnByb3RvdHlwZS5qdW1wVG9GaXJzdFNlYXJjaFJlc3VsdCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVZpZXcucHJvdG90eXBlLmp1bXBUb0xhc3RTZWFyY2hS
ZXN1bHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVWaWV3LnByb3RvdHlwZS5q
dW1wVG9OZXh0U2VhcmNoUmVzdWx0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DUFVQcm9maWxl
Vmlldy5wcm90b3R5cGUuanVtcFRvUHJldmlvdXNTZWFyY2hSZXN1bHQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNQVVByb2ZpbGVWaWV3LnByb3RvdHlwZS5zaG93aW5nRmlyc3RTZWFyY2hSZXN1
bHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVWaWV3LnByb3RvdHlwZS5zaG93
aW5nTGFzdFNlYXJjaFJlc3VsdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVZp
ZXcucHJvdG90eXBlLl9qdW1wVG9TZWFyY2hSZXN1bHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNQVVByb2ZpbGVWaWV3LnByb3RvdHlwZS5fY2hhbmdlVmlldy5zZXQgZWxzZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVZpZXcucHJvdG90eXBlLl9mb2N1c0NsaWNrZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVWaWV3LnByb3RvdHlwZS5fZXhjbHVkZUNs
aWNrZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVWaWV3LnByb3RvdHlwZS5f
cmVzZXRDbGlja2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVmlldy5wcm90
b3R5cGUuX2RhdGFHcmlkTm9kZVNlbGVjdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DUFVQ
cm9maWxlVmlldy5wcm90b3R5cGUuX2RhdGFHcmlkTm9kZURlc2VsZWN0ZWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVWaWV3LnByb3RvdHlwZS5fc29ydFByb2ZpbGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVWaWV3LnByb3RvdHlwZS5fYXNzaWduUGFyZW50
c0luUHJvZmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlLnByb3RvdHlwZS5nZXQgYnV0dG9uVG9v
bHRpcCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUucHJvdG90eXBlLmJ1
dHRvbkNsaWNrZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlLnByb3Rv
dHlwZS5nZXQgdHJlZUl0ZW1UaXRsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1BVUHJvZmls
ZVR5cGUucHJvdG90eXBlLmdldCBkZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q1BVUHJvZmlsZVR5cGUucHJvdG90eXBlLmlzUmVjb3JkaW5nUHJvZmlsZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUucHJvdG90eXBlLnN0YXJ0UmVjb3JkaW5nUHJvZmls
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUucHJvdG90eXBlLnN0b3BS
ZWNvcmRpbmdQcm9maWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5w
cm90b3R5cGUuc2V0UmVjb3JkaW5nUHJvZmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1BV
UHJvZmlsZVR5cGUucHJvdG90eXBlLmNyZWF0ZVNpZGViYXJUcmVlRWxlbWVudEZvclByb2ZpbGUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlLnByb3RvdHlwZS5jcmVhdGVW
aWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5wcm90b3R5cGUuY3Jl
YXRlVGVtcG9yYXJ5UHJvZmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5
cGUucHJvdG90eXBlLmNyZWF0ZVByb2ZpbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvSGVhcFNuYXBzaG90Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RWaWV3LnByb3RvdHlwZS5wZXJmb3JtU2VhcmNoLm1hdGNoZXNCeU5hbWUpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5odG1sOgorCiAyMDEyLTA1LTE2ICBLZWlzaGkgSGF0dG9yaSAgPGtl
aXNoaUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQWRkIFdlYktpdCBBUEkgdG8g
YWNjZXNzIGlubmVyIHRleHQgdmFsdWUgb2YgaW5wdXQgZWxlbWVudApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IGYwYjcwYjI5MzdkODY0OWU4ODJjNDAxYzI3MzczNTBiYTYzMDMxNjMuLmY5ZWFjMzdjZDRh
YzUwNDlkMzJkYWRjNTYyNDZlODJlNmEzNzUxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTYzNjMs
NiArNjM2Myw3IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Db29raWVJdGVt
c1ZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQ29va2llUGFyc2Vy
LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZXNUYWJsZS5qcycs
CisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9DUFVQcm9maWxlVmlldy5qcycsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NDb21wbGV0aW9ucy5qcycsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NLZXl3b3JkQ29tcGxldGlvbnMuanMnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5q
cycsCkBAIC02NDQyLDcgKzY0NDMsNiBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvUHJvZmlsZURhdGFHcmlkVHJlZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9Qcm9maWxlTGF1bmNoZXJWaWV3LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvUHJvZmlsZVZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvUHJv
cGVydGllc1NlY3Rpb24uanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvUHJv
cGVydGllc1NpZGViYXJQYW5lLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5k
L1Jhd1NvdXJjZUNvZGUuanMnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagppbmRleCAyMDNjMzU3MTVlNjJiNjUzYWE1Yzc5NDg0MTM2OTUyODVjODFkZmQy
Li42YzEwMGU5NjlkYTQ4MDBkZDFhYWUwOWIxYjNmNWI0YmY1MzEyZTZmIDEwMDc1NQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzQyMDUsNiArNzQyMDUs
MTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcQ1BVUHJvZmlsZVZpZXcuanMiCisJCQkJCT4KKwkJCQk8
L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQt
ZW5kXENTU0NvbXBsZXRpb25zLmpzIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtNzQ1ODksMTAg
Kzc0NTkzLDYgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQotCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcUHJvZmlsZVZpZXcuanMiCi0JCQkJCT4KLQkJ
CQk8L0ZpbGU+Ci0JCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJv
bnQtZW5kXFByb3BlcnRpZXNTZWN0aW9uLmpzIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5IGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CmluZGV4IDJmZWVhNjc1
ZGI3NjNkMDkxNzkwZDZkYzc2N2Q0MzBiYzFjNjg1NGUuLjNhZTk2OWExYWM5MWQ2ZGJkZGYxMjA3
ZjY5ODlhN2I2MjAwNjFiN2YgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9j
b21waWxlLWZyb250LWVuZC5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGls
ZS1mcm9udC1lbmQucHkKQEAgLTI5Myw2ICsyOTMsNyBAQCBtb2R1bGVzID0gWwogICAgICAgICAi
ZGVwZW5kZW5jaWVzIjogWyJjb21wb25lbnRzIl0sCiAgICAgICAgICJzb3VyY2VzIjogWwogICAg
ICAgICAgICAgIkJvdHRvbVVwUHJvZmlsZURhdGFHcmlkVHJlZS5qcyIsCisgICAgICAgICAgICAi
Q1BVUHJvZmlsZVZpZXcuanMiLAogICAgICAgICAgICAgIkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcu
anMiLAogICAgICAgICAgICAgIkhlYXBTbmFwc2hvdC5qcyIsCiAgICAgICAgICAgICAiSGVhcFNu
YXBzaG90RGF0YUdyaWRzLmpzIiwKQEAgLTMwNSw3ICszMDYsNiBAQCBtb2R1bGVzID0gWwogICAg
ICAgICAgICAgIlByb2ZpbGVEYXRhR3JpZFRyZWUuanMiLAogICAgICAgICAgICAgIlByb2ZpbGVz
UGFuZWwuanMiLAogICAgICAgICAgICAgIlByb2ZpbGVMYXVuY2hlclZpZXcuanMiLAotICAgICAg
ICAgICAgIlByb2ZpbGVWaWV3LmpzIiwKICAgICAgICAgICAgICJUb3BEb3duUHJvZmlsZURhdGFH
cmlkVHJlZS5qcyIsCiAgICAgICAgIF0KICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DUFVQcm9maWxlVmlldy5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvQ1BVUHJvZmlsZVZpZXcuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjJjZDVj
MTQ1MTA0ZTVjYWRlM2FiYWY0ZTE2OGMzMjI3YWUwMGVmZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1BVUHJvZmlsZVZpZXcuanMKQEAgLTAs
MCArMSw2NDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5WaWV3fQor
ICovCitXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVZpZXcgPSBmdW5jdGlvbihwcm9maWxlKQorewor
ICAgIFdlYkluc3BlY3Rvci5WaWV3LmNhbGwodGhpcyk7CisKKyAgICB0aGlzLmVsZW1lbnQuYWRk
U3R5bGVDbGFzcygicHJvZmlsZS12aWV3Iik7CisgICAgCisgICAgdGhpcy5zaG93U2VsZlRpbWVB
c1BlcmNlbnQgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY3JlYXRlU2V0dGluZygiY3B1UHJvZmls
ZXJTaG93U2VsZlRpbWVBc1BlcmNlbnQiLCB0cnVlKTsKKyAgICB0aGlzLnNob3dUb3RhbFRpbWVB
c1BlcmNlbnQgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY3JlYXRlU2V0dGluZygiY3B1UHJvZmls
ZXJTaG93VG90YWxUaW1lQXNQZXJjZW50IiwgdHJ1ZSk7CisgICAgdGhpcy5zaG93QXZlcmFnZVRp
bWVBc1BlcmNlbnQgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY3JlYXRlU2V0dGluZygiY3B1UHJv
ZmlsZXJTaG93QXZlcmFnZVRpbWVBc1BlcmNlbnQiLCB0cnVlKTsKKyAgICB0aGlzLl92aWV3VHlw
ZSA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jcmVhdGVTZXR0aW5nKCJjcHVQcm9maWxlclZpZXci
LCBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVZpZXcuX1R5cGVIZWF2eSk7CisKKyAgICB2YXIgY29s
dW1ucyA9IHsgInNlbGYiOiB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlbGYiKSwg
d2lkdGg6ICI3MnB4Iiwgc29ydDogImRlc2NlbmRpbmciLCBzb3J0YWJsZTogdHJ1ZSB9LAorICAg
ICAgICAgICAgICAgICAgICAidG90YWwiOiB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlRvdGFsIiksIHdpZHRoOiAiNzJweCIsIHNvcnRhYmxlOiB0cnVlIH0sCisgICAgICAgICAgICAg
ICAgICAgICJhdmVyYWdlIjogeyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBdmVyYWdl
IiksIHdpZHRoOiAiNzJweCIsIHNvcnRhYmxlOiB0cnVlIH0sCisgICAgICAgICAgICAgICAgICAg
ICJjYWxscyI6IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2FsbHMiKSwgd2lkdGg6
ICI1NHB4Iiwgc29ydGFibGU6IHRydWUgfSwKKyAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9u
IjogeyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGdW5jdGlvbiIpLCBkaXNjbG9zdXJl
OiB0cnVlLCBzb3J0YWJsZTogdHJ1ZSB9IH07CisKKyAgICBpZiAoQ2FwYWJpbGl0aWVzLnNhbXBs
aW5nQ1BVUHJvZmlsZXIpIHsKKyAgICAgICAgZGVsZXRlIGNvbHVtbnMuYXZlcmFnZTsKKyAgICAg
ICAgZGVsZXRlIGNvbHVtbnMuY2FsbHM7CisgICAgfQorCisgICAgdGhpcy5kYXRhR3JpZCA9IG5l
dyBXZWJJbnNwZWN0b3IuRGF0YUdyaWQoY29sdW1ucyk7CisgICAgdGhpcy5kYXRhR3JpZC5hZGRF
dmVudExpc3RlbmVyKCJzb3J0aW5nIGNoYW5nZWQiLCB0aGlzLl9zb3J0UHJvZmlsZSwgdGhpcyk7
CisgICAgdGhpcy5kYXRhR3JpZC5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIs
IHRoaXMuX21vdXNlRG93bkluRGF0YUdyaWQuYmluZCh0aGlzKSwgdHJ1ZSk7CisgICAgdGhpcy5k
YXRhR3JpZC5zaG93KHRoaXMuZWxlbWVudCk7CisKKyAgICB0aGlzLnZpZXdTZWxlY3RFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VsZWN0Iik7CisgICAgdGhpcy52aWV3U2VsZWN0
RWxlbWVudC5jbGFzc05hbWUgPSAic3RhdHVzLWJhci1pdGVtIjsKKyAgICB0aGlzLnZpZXdTZWxl
Y3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMuX2NoYW5nZVZpZXcuYmlu
ZCh0aGlzKSwgZmFsc2UpOworCisgICAgdmFyIGhlYXZ5Vmlld09wdGlvbiA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoIm9wdGlvbiIpOworICAgIGhlYXZ5Vmlld09wdGlvbi5sYWJlbCA9IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiSGVhdnkgKEJvdHRvbSBVcCkiKTsKKyAgICB2YXIgdHJlZVZpZXdP
cHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKKyAgICB0cmVlVmlld09w
dGlvbi5sYWJlbCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVHJlZSAoVG9wIERvd24pIik7Cisg
ICAgdGhpcy52aWV3U2VsZWN0RWxlbWVudC5hcHBlbmRDaGlsZChoZWF2eVZpZXdPcHRpb24pOwor
ICAgIHRoaXMudmlld1NlbGVjdEVsZW1lbnQuYXBwZW5kQ2hpbGQodHJlZVZpZXdPcHRpb24pOwor
ICAgIHRoaXMudmlld1NlbGVjdEVsZW1lbnQuc2VsZWN0ZWRJbmRleCA9IHRoaXMuX3ZpZXdUeXBl
LmdldCgpID09PSBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVZpZXcuX1R5cGVIZWF2eSA/IDAgOiAx
OworCisgICAgdGhpcy5wZXJjZW50QnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJC
dXR0b24oIiIsICJwZXJjZW50LXRpbWUtc3RhdHVzLWJhci1pdGVtIik7CisgICAgdGhpcy5wZXJj
ZW50QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fcGVyY2VudENsaWNrZWQs
IHRoaXMpOworCisgICAgdGhpcy5mb2N1c0J1dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVz
QmFyQnV0dG9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRm9jdXMgc2VsZWN0ZWQgZnVuY3Rpb24u
IiksICJmb2N1cy1wcm9maWxlLW5vZGUtc3RhdHVzLWJhci1pdGVtIik7CisgICAgdGhpcy5mb2N1
c0J1dHRvbi5kaXNhYmxlZCA9IHRydWU7CisgICAgdGhpcy5mb2N1c0J1dHRvbi5hZGRFdmVudExp
c3RlbmVyKCJjbGljayIsIHRoaXMuX2ZvY3VzQ2xpY2tlZCwgdGhpcyk7CisKKyAgICB0aGlzLmV4
Y2x1ZGVCdXR0b24gPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRvbihXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkV4Y2x1ZGUgc2VsZWN0ZWQgZnVuY3Rpb24uIiksICJleGNsdWRlLXByb2Zp
bGUtbm9kZS1zdGF0dXMtYmFyLWl0ZW0iKTsKKyAgICB0aGlzLmV4Y2x1ZGVCdXR0b24uZGlzYWJs
ZWQgPSB0cnVlOworICAgIHRoaXMuZXhjbHVkZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGlj
ayIsIHRoaXMuX2V4Y2x1ZGVDbGlja2VkLCB0aGlzKTsKKworICAgIHRoaXMucmVzZXRCdXR0b24g
PSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlJlc3RvcmUgYWxsIGZ1bmN0aW9ucy4iKSwgInJlc2V0LXByb2ZpbGUtc3RhdHVzLWJhci1pdGVt
Iik7CisgICAgdGhpcy5yZXNldEJ1dHRvbi52aXNpYmxlID0gZmFsc2U7CisgICAgdGhpcy5yZXNl
dEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3Jlc2V0Q2xpY2tlZCwgdGhp
cyk7CisKKyAgICB0aGlzLnByb2ZpbGUgPSBwcm9maWxlOworCisgICAgZnVuY3Rpb24gcHJvZmls
ZUNhbGxiYWNrKGVycm9yLCBwcm9maWxlKQorICAgIHsKKyAgICAgICAgaWYgKGVycm9yKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghcHJvZmlsZS5oZWFkKSB7CisgICAgICAg
ICAgICAvLyBQcm9maWxpbmcgd2FzIHRlbnRhdGl2ZWx5IHRlcm1pbmF0ZWQgd2l0aCB0aGUgIkNs
ZWFyIGFsbCBwcm9maWxlcy4iIGJ1dHRvbi4KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICB0aGlzLnByb2ZpbGUuaGVhZCA9IHByb2ZpbGUuaGVhZDsKKyAgICAgICAgdGhp
cy5fYXNzaWduUGFyZW50c0luUHJvZmlsZSgpOworICAgICAgICB0aGlzLl9jaGFuZ2VWaWV3KCk7
CisgICAgICAgIHRoaXMuX3VwZGF0ZVBlcmNlbnRCdXR0b24oKTsKKyAgICB9CisKKyAgICB0aGlz
Ll9saW5raWZpZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkxpbmtpZmllcihuZXcgV2ViSW5zcGVjdG9y
LkxpbmtpZmllci5EZWZhdWx0Rm9ybWF0dGVyKDMwKSk7CisKKyAgICBQcm9maWxlckFnZW50Lmdl
dFByb2ZpbGUodGhpcy5wcm9maWxlLnR5cGVJZCwgdGhpcy5wcm9maWxlLnVpZCwgcHJvZmlsZUNh
bGxiYWNrLmJpbmQodGhpcykpOworfQorCitXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVZpZXcuX1R5
cGVUcmVlID0gIlRyZWUiOworV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVWaWV3Ll9UeXBlSGVhdnkg
PSAiSGVhdnkiOworCitXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVZpZXcucHJvdG90eXBlID0gewor
ICAgIGdldCBzdGF0dXNCYXJJdGVtcygpCisgICAgeworICAgICAgICByZXR1cm4gW3RoaXMudmll
d1NlbGVjdEVsZW1lbnQsIHRoaXMucGVyY2VudEJ1dHRvbi5lbGVtZW50LCB0aGlzLmZvY3VzQnV0
dG9uLmVsZW1lbnQsIHRoaXMuZXhjbHVkZUJ1dHRvbi5lbGVtZW50LCB0aGlzLnJlc2V0QnV0dG9u
LmVsZW1lbnRdOworICAgIH0sCisKKyAgICBnZXQgcHJvZmlsZSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5fcHJvZmlsZTsKKyAgICB9LAorCisgICAgc2V0IHByb2ZpbGUocHJvZmlsZSkK
KyAgICB7CisgICAgICAgIHRoaXMuX3Byb2ZpbGUgPSBwcm9maWxlOworICAgIH0sCisKKyAgICBn
ZXQgYm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlKCkKKyAgICB7CisgICAgICAgIGlmICghdGhp
cy5fYm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlKSB7CisgICAgICAgICAgICBpZiAodGhpcy5w
cm9maWxlLmJvdHRvbVVwSGVhZCkKKyAgICAgICAgICAgICAgICB0aGlzLl9ib3R0b21VcFByb2Zp
bGVEYXRhR3JpZFRyZWUgPSBuZXcgV2ViSW5zcGVjdG9yLlRvcERvd25Qcm9maWxlRGF0YUdyaWRU
cmVlKHRoaXMsIHRoaXMucHJvZmlsZS5ib3R0b21VcEhlYWQpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRoaXMuX2JvdHRvbVVwUHJvZmlsZURhdGFHcmlkVHJlZSA9IG5ldyBX
ZWJJbnNwZWN0b3IuQm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlKHRoaXMsIHRoaXMucHJvZmls
ZS5oZWFkKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGhpcy5fYm90dG9tVXBQcm9maWxl
RGF0YUdyaWRUcmVlOworICAgIH0sCisKKyAgICBnZXQgdG9wRG93blByb2ZpbGVEYXRhR3JpZFRy
ZWUoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl90b3BEb3duUHJvZmlsZURhdGFHcmlkVHJl
ZSkKKyAgICAgICAgICAgIHRoaXMuX3RvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlID0gbmV3IFdl
Ykluc3BlY3Rvci5Ub3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZSh0aGlzLCB0aGlzLnByb2ZpbGUu
aGVhZCk7CisgICAgICAgIHJldHVybiB0aGlzLl90b3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZTsK
KyAgICB9LAorCisgICAgZ2V0IGN1cnJlbnRUcmVlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLl9jdXJyZW50VHJlZTsKKyAgICB9LAorCisgICAgc2V0IGN1cnJlbnRUcmVlKHRyZWUpCisg
ICAgeworICAgICAgICB0aGlzLl9jdXJyZW50VHJlZSA9IHRyZWU7CisgICAgICAgIHRoaXMucmVm
cmVzaCgpOworICAgIH0sCisKKyAgICB3aWxsSGlkZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID0gLTE7CisgICAgfSwKKworICAgIHJl
ZnJlc2g6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBzZWxlY3RlZFByb2ZpbGVOb2Rl
ID0gdGhpcy5kYXRhR3JpZC5zZWxlY3RlZE5vZGUgPyB0aGlzLmRhdGFHcmlkLnNlbGVjdGVkTm9k
ZS5wcm9maWxlTm9kZSA6IG51bGw7CisKKyAgICAgICAgdGhpcy5kYXRhR3JpZC5yb290Tm9kZSgp
LnJlbW92ZUNoaWxkcmVuKCk7CisKKyAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5wcm9maWxl
RGF0YUdyaWRUcmVlLmNoaWxkcmVuOworICAgICAgICB2YXIgY291bnQgPSBjaGlsZHJlbi5sZW5n
dGg7CisKKyAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4
KQorICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5yb290Tm9kZSgpLmFwcGVuZENoaWxkKGNoaWxk
cmVuW2luZGV4XSk7CisKKyAgICAgICAgaWYgKHNlbGVjdGVkUHJvZmlsZU5vZGUpCisgICAgICAg
ICAgICBzZWxlY3RlZFByb2ZpbGVOb2RlLnNlbGVjdGVkID0gdHJ1ZTsKKyAgICB9LAorCisgICAg
cmVmcmVzaFZpc2libGVEYXRhOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgY2hpbGQg
PSB0aGlzLmRhdGFHcmlkLmNoaWxkcmVuWzBdOworICAgICAgICB3aGlsZSAoY2hpbGQpIHsKKyAg
ICAgICAgICAgIGNoaWxkLnJlZnJlc2goKTsKKyAgICAgICAgICAgIGNoaWxkID0gY2hpbGQudHJh
dmVyc2VOZXh0Tm9kZShmYWxzZSwgbnVsbCwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9LAorCisg
ICAgcmVmcmVzaFNob3dBc1BlcmNlbnRzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlz
Ll91cGRhdGVQZXJjZW50QnV0dG9uKCk7CisgICAgICAgIHRoaXMucmVmcmVzaFZpc2libGVEYXRh
KCk7CisgICAgfSwKKworICAgIHNlYXJjaENhbmNlbGVkOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICBpZiAodGhpcy5fc2VhcmNoUmVzdWx0cykgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAg
ICAgdmFyIHByb2ZpbGVOb2RlID0gdGhpcy5fc2VhcmNoUmVzdWx0c1tpXS5wcm9maWxlTm9kZTsK
KworICAgICAgICAgICAgICAgIGRlbGV0ZSBwcm9maWxlTm9kZS5fc2VhcmNoTWF0Y2hlZFNlbGZD
b2x1bW47CisgICAgICAgICAgICAgICAgZGVsZXRlIHByb2ZpbGVOb2RlLl9zZWFyY2hNYXRjaGVk
VG90YWxDb2x1bW47CisgICAgICAgICAgICAgICAgZGVsZXRlIHByb2ZpbGVOb2RlLl9zZWFyY2hN
YXRjaGVkQ2FsbHNDb2x1bW47CisgICAgICAgICAgICAgICAgZGVsZXRlIHByb2ZpbGVOb2RlLl9z
ZWFyY2hNYXRjaGVkRnVuY3Rpb25Db2x1bW47CisKKyAgICAgICAgICAgICAgICBwcm9maWxlTm9k
ZS5yZWZyZXNoKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBkZWxldGUg
dGhpcy5fc2VhcmNoRmluaXNoZWRDYWxsYmFjazsKKyAgICAgICAgdGhpcy5fY3VycmVudFNlYXJj
aFJlc3VsdEluZGV4ID0gLTE7CisgICAgICAgIHRoaXMuX3NlYXJjaFJlc3VsdHMgPSBbXTsKKyAg
ICB9LAorCisgICAgcGVyZm9ybVNlYXJjaDogZnVuY3Rpb24ocXVlcnksIGZpbmlzaGVkQ2FsbGJh
Y2spCisgICAgeworICAgICAgICAvLyBDYWxsIHNlYXJjaENhbmNlbGVkIHNpbmNlIGl0IHdpbGwg
cmVzZXQgZXZlcnl0aGluZyB3ZSBuZWVkIGJlZm9yZSBkb2luZyBhIG5ldyBzZWFyY2guCisgICAg
ICAgIHRoaXMuc2VhcmNoQ2FuY2VsZWQoKTsKKworICAgICAgICBxdWVyeSA9IHF1ZXJ5LnRyaW0o
KTsKKworICAgICAgICBpZiAoIXF1ZXJ5Lmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICB0aGlzLl9zZWFyY2hGaW5pc2hlZENhbGxiYWNrID0gZmluaXNoZWRDYWxsYmFjazsK
KworICAgICAgICB2YXIgZ3JlYXRlclRoYW4gPSAocXVlcnkuc3RhcnRzV2l0aCgiPiIpKTsKKyAg
ICAgICAgdmFyIGxlc3NUaGFuID0gKHF1ZXJ5LnN0YXJ0c1dpdGgoIjwiKSk7CisgICAgICAgIHZh
ciBlcXVhbFRvID0gKHF1ZXJ5LnN0YXJ0c1dpdGgoIj0iKSB8fCAoKGdyZWF0ZXJUaGFuIHx8IGxl
c3NUaGFuKSAmJiBxdWVyeS5pbmRleE9mKCI9IikgPT09IDEpKTsKKyAgICAgICAgdmFyIHBlcmNl
bnRVbml0cyA9IChxdWVyeS5sYXN0SW5kZXhPZigiJSIpID09PSAocXVlcnkubGVuZ3RoIC0gMSkp
OworICAgICAgICB2YXIgbWlsbGlzZWNvbmRzVW5pdHMgPSAocXVlcnkubGVuZ3RoID4gMiAmJiBx
dWVyeS5sYXN0SW5kZXhPZigibXMiKSA9PT0gKHF1ZXJ5Lmxlbmd0aCAtIDIpKTsKKyAgICAgICAg
dmFyIHNlY29uZHNVbml0cyA9ICghbWlsbGlzZWNvbmRzVW5pdHMgJiYgcXVlcnkubGFzdEluZGV4
T2YoInMiKSA9PT0gKHF1ZXJ5Lmxlbmd0aCAtIDEpKTsKKworICAgICAgICB2YXIgcXVlcnlOdW1i
ZXIgPSBwYXJzZUZsb2F0KHF1ZXJ5KTsKKyAgICAgICAgaWYgKGdyZWF0ZXJUaGFuIHx8IGxlc3NU
aGFuIHx8IGVxdWFsVG8pIHsKKyAgICAgICAgICAgIGlmIChlcXVhbFRvICYmIChncmVhdGVyVGhh
biB8fCBsZXNzVGhhbikpCisgICAgICAgICAgICAgICAgcXVlcnlOdW1iZXIgPSBwYXJzZUZsb2F0
KHF1ZXJ5LnN1YnN0cmluZygyKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
cXVlcnlOdW1iZXIgPSBwYXJzZUZsb2F0KHF1ZXJ5LnN1YnN0cmluZygxKSk7CisgICAgICAgIH0K
KworICAgICAgICB2YXIgcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMgPSAoc2Vjb25kc1VuaXRzID8g
KHF1ZXJ5TnVtYmVyICogMTAwMCkgOiBxdWVyeU51bWJlcik7CisKKyAgICAgICAgLy8gTWFrZSBl
cXVhbFRvIGltcGxpY2l0bHkgdHJ1ZSBpZiBpdCB3YXNuJ3Qgc3BlY2lmaWVkIHRoZXJlIGlzIG5v
IG90aGVyIG9wZXJhdG9yLgorICAgICAgICBpZiAoIWlzTmFOKHF1ZXJ5TnVtYmVyKSAmJiAhKGdy
ZWF0ZXJUaGFuIHx8IGxlc3NUaGFuKSkKKyAgICAgICAgICAgIGVxdWFsVG8gPSB0cnVlOworCisg
ICAgICAgIGZ1bmN0aW9uIG1hdGNoZXNRdWVyeSgvKlByb2ZpbGVEYXRhR3JpZE5vZGUqLyBwcm9m
aWxlRGF0YUdyaWROb2RlKQorICAgICAgICB7CisgICAgICAgICAgICBkZWxldGUgcHJvZmlsZURh
dGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZFNlbGZDb2x1bW47CisgICAgICAgICAgICBkZWxldGUg
cHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZFRvdGFsQ29sdW1uOworICAgICAgICAg
ICAgZGVsZXRlIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRBdmVyYWdlQ29sdW1u
OworICAgICAgICAgICAgZGVsZXRlIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRD
YWxsc0NvbHVtbjsKKyAgICAgICAgICAgIGRlbGV0ZSBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFy
Y2hNYXRjaGVkRnVuY3Rpb25Db2x1bW47CisKKyAgICAgICAgICAgIGlmIChwZXJjZW50VW5pdHMp
IHsKKyAgICAgICAgICAgICAgICBpZiAobGVzc1RoYW4pIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUuc2VsZlBlcmNlbnQgPCBxdWVyeU51bWJlcikKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRTZWxm
Q29sdW1uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5v
ZGUudG90YWxQZXJjZW50IDwgcXVlcnlOdW1iZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBw
cm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1bW4gPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5hdmVyYWdlUGVyY2VudCA8
IHF1ZXJ5TnVtYmVyTWlsbGlzZWNvbmRzKQorICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmls
ZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZEF2ZXJhZ2VDb2x1bW4gPSB0cnVlOworICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoZ3JlYXRlclRoYW4pIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUuc2VsZlBlcmNlbnQgPiBxdWVyeU51bWJlcikKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRTZWxm
Q29sdW1uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5v
ZGUudG90YWxQZXJjZW50ID4gcXVlcnlOdW1iZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBw
cm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1bW4gPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5hdmVyYWdlUGVyY2VudCA8
IHF1ZXJ5TnVtYmVyTWlsbGlzZWNvbmRzKQorICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmls
ZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZEF2ZXJhZ2VDb2x1bW4gPSB0cnVlOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChlcXVhbFRvKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLnNlbGZQZXJjZW50ID09IHF1ZXJ5TnVt
YmVyKQorICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNo
TWF0Y2hlZFNlbGZDb2x1bW4gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmls
ZURhdGFHcmlkTm9kZS50b3RhbFBlcmNlbnQgPT0gcXVlcnlOdW1iZXIpCisgICAgICAgICAgICAg
ICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1bW4g
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5hdmVy
YWdlUGVyY2VudCA8IHF1ZXJ5TnVtYmVyTWlsbGlzZWNvbmRzKQorICAgICAgICAgICAgICAgICAg
ICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZEF2ZXJhZ2VDb2x1bW4gPSB0
cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAobWlsbGlzZWNv
bmRzVW5pdHMgfHwgc2Vjb25kc1VuaXRzKSB7CisgICAgICAgICAgICAgICAgaWYgKGxlc3NUaGFu
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLnNlbGZUaW1l
IDwgcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMpCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9m
aWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkU2VsZkNvbHVtbiA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLnRvdGFsVGltZSA8IHF1ZXJ5TnVt
YmVyTWlsbGlzZWNvbmRzKQorICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlk
Tm9kZS5fc2VhcmNoTWF0Y2hlZFRvdGFsQ29sdW1uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUuYXZlcmFnZVRpbWUgPCBxdWVyeU51bWJlck1pbGxp
c2Vjb25kcykKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3Nl
YXJjaE1hdGNoZWRBdmVyYWdlQ29sdW1uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKGdyZWF0ZXJUaGFuKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxlRGF0YUdy
aWROb2RlLnNlbGZUaW1lID4gcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMpCisgICAgICAgICAgICAg
ICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkU2VsZkNvbHVtbiA9
IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLnRvdGFs
VGltZSA+IHF1ZXJ5TnVtYmVyTWlsbGlzZWNvbmRzKQorICAgICAgICAgICAgICAgICAgICAgICAg
cHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZFRvdGFsQ29sdW1uID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUuYXZlcmFnZVRpbWUgPiBx
dWVyeU51bWJlck1pbGxpc2Vjb25kcykKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVE
YXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRBdmVyYWdlQ29sdW1uID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoZXF1YWxUbykgeworICAgICAgICAgICAg
ICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5zZWxmVGltZSA9PSBxdWVyeU51bWJlck1p
bGxpc2Vjb25kcykKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUu
X3NlYXJjaE1hdGNoZWRTZWxmQ29sdW1uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KHByb2ZpbGVEYXRhR3JpZE5vZGUudG90YWxUaW1lID09IHF1ZXJ5TnVtYmVyTWlsbGlzZWNvbmRz
KQorICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0
Y2hlZFRvdGFsQ29sdW1uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVE
YXRhR3JpZE5vZGUuYXZlcmFnZVRpbWUgPT0gcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMpCisgICAg
ICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkQXZl
cmFnZUNvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBpZiAoZXF1YWxUbyAmJiBwcm9maWxlRGF0YUdyaWROb2RlLm51
bWJlck9mQ2FsbHMgPT0gcXVlcnlOdW1iZXIpCisgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVE
YXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRDYWxsc0NvbHVtbiA9IHRydWU7CisgICAgICAgICAg
ICAgICAgaWYgKGdyZWF0ZXJUaGFuICYmIHByb2ZpbGVEYXRhR3JpZE5vZGUubnVtYmVyT2ZDYWxs
cyA+IHF1ZXJ5TnVtYmVyKQorICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2Rl
Ll9zZWFyY2hNYXRjaGVkQ2FsbHNDb2x1bW4gPSB0cnVlOworICAgICAgICAgICAgICAgIGlmIChs
ZXNzVGhhbiAmJiBwcm9maWxlRGF0YUdyaWROb2RlLm51bWJlck9mQ2FsbHMgPCBxdWVyeU51bWJl
cikKKyAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hl
ZENhbGxzQ29sdW1uID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHBy
b2ZpbGVEYXRhR3JpZE5vZGUuZnVuY3Rpb25OYW1lLmhhc1N1YnN0cmluZyhxdWVyeSwgdHJ1ZSkg
fHwgcHJvZmlsZURhdGFHcmlkTm9kZS51cmwuaGFzU3Vic3RyaW5nKHF1ZXJ5LCB0cnVlKSkKKyAg
ICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkRnVuY3Rpb25D
b2x1bW4gPSB0cnVlOworCisgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5fc2Vh
cmNoTWF0Y2hlZFNlbGZDb2x1bW4gfHwKKyAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWRO
b2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1bW4gfHwKKyAgICAgICAgICAgICAgICBwcm9maWxl
RGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkQXZlcmFnZUNvbHVtbiB8fAorICAgICAgICAgICAg
ICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRDYWxsc0NvbHVtbiB8fAorICAg
ICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRGdW5jdGlvbkNv
bHVtbikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2Rl
LnJlZnJlc2goKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGN1
cnJlbnQgPSB0aGlzLnByb2ZpbGVEYXRhR3JpZFRyZWUuY2hpbGRyZW5bMF07CisKKyAgICAgICAg
d2hpbGUgKGN1cnJlbnQpIHsKKyAgICAgICAgICAgIGlmIChtYXRjaGVzUXVlcnkoY3VycmVudCkp
IHsKKyAgICAgICAgICAgICAgICB0aGlzLl9zZWFyY2hSZXN1bHRzLnB1c2goeyBwcm9maWxlTm9k
ZTogY3VycmVudCB9KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY3VycmVudCA9IGN1
cnJlbnQudHJhdmVyc2VOZXh0Tm9kZShmYWxzZSwgbnVsbCwgZmFsc2UpOworICAgICAgICB9CisK
KyAgICAgICAgZmluaXNoZWRDYWxsYmFjayh0aGlzLCB0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0
aCk7CisgICAgfSwKKworICAgIGp1bXBUb0ZpcnN0U2VhcmNoUmVzdWx0OiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICBpZiAoIXRoaXMuX3NlYXJjaFJlc3VsdHMgfHwgIXRoaXMuX3NlYXJjaFJl
c3VsdHMubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl9jdXJyZW50
U2VhcmNoUmVzdWx0SW5kZXggPSAwOworICAgICAgICB0aGlzLl9qdW1wVG9TZWFyY2hSZXN1bHQo
dGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4KTsKKyAgICB9LAorCisgICAganVtcFRvTGFz
dFNlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9zZWFy
Y2hSZXN1bHRzIHx8ICF0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID0gKHRoaXMuX3Nl
YXJjaFJlc3VsdHMubGVuZ3RoIC0gMSk7CisgICAgICAgIHRoaXMuX2p1bXBUb1NlYXJjaFJlc3Vs
dCh0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXgpOworICAgIH0sCisKKyAgICBqdW1wVG9O
ZXh0U2VhcmNoUmVzdWx0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3Nl
YXJjaFJlc3VsdHMgfHwgIXRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBpZiAoKyt0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPj0g
dGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgpCisgICAgICAgICAgICB0aGlzLl9jdXJyZW50U2Vh
cmNoUmVzdWx0SW5kZXggPSAwOworICAgICAgICB0aGlzLl9qdW1wVG9TZWFyY2hSZXN1bHQodGhp
cy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4KTsKKyAgICB9LAorCisgICAganVtcFRvUHJldmlv
dXNTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fc2Vh
cmNoUmVzdWx0cyB8fCAhdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIGlmICgtLXRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA8IDAp
CisgICAgICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPSAodGhpcy5fc2Vh
cmNoUmVzdWx0cy5sZW5ndGggLSAxKTsKKyAgICAgICAgdGhpcy5fanVtcFRvU2VhcmNoUmVzdWx0
KHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCk7CisgICAgfSwKKworICAgIHNob3dpbmdG
aXJzdFNlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuICh0aGlz
Ll9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPT09IDApOworICAgIH0sCisKKyAgICBzaG93aW5n
TGFzdFNlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuICh0aGlz
Ll9zZWFyY2hSZXN1bHRzICYmIHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9PT0gKHRo
aXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoIC0gMSkpOworICAgIH0sCisKKyAgICBfanVtcFRvU2Vh
cmNoUmVzdWx0OiBmdW5jdGlvbihpbmRleCkKKyAgICB7CisgICAgICAgIHZhciBzZWFyY2hSZXN1
bHQgPSB0aGlzLl9zZWFyY2hSZXN1bHRzW2luZGV4XTsKKyAgICAgICAgaWYgKCFzZWFyY2hSZXN1
bHQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIHByb2ZpbGVOb2RlID0gc2Vh
cmNoUmVzdWx0LnByb2ZpbGVOb2RlOworICAgICAgICBwcm9maWxlTm9kZS5yZXZlYWxBbmRTZWxl
Y3QoKTsKKyAgICB9LAorCisgICAgX2NoYW5nZVZpZXc6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIGlmICghdGhpcy5wcm9maWxlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlm
ICh0aGlzLnZpZXdTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXggPT0gMSkgeworICAgICAgICAg
ICAgdGhpcy5wcm9maWxlRGF0YUdyaWRUcmVlID0gdGhpcy50b3BEb3duUHJvZmlsZURhdGFHcmlk
VHJlZTsKKyAgICAgICAgICAgIHRoaXMuX3NvcnRQcm9maWxlKCk7CisgICAgICAgICAgICB0aGlz
Ll92aWV3VHlwZS5zZXQoV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVWaWV3Ll9UeXBlVHJlZSk7Cisg
ICAgICAgIH0gZWxzZSBpZiAodGhpcy52aWV3U2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4ID09
IDApIHsKKyAgICAgICAgICAgIHRoaXMucHJvZmlsZURhdGFHcmlkVHJlZSA9IHRoaXMuYm90dG9t
VXBQcm9maWxlRGF0YUdyaWRUcmVlOworICAgICAgICAgICAgdGhpcy5fc29ydFByb2ZpbGUoKTsK
KyAgICAgICAgICAgIHRoaXMuX3ZpZXdUeXBlLnNldChXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVZp
ZXcuX1R5cGVIZWF2eSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRoaXMuY3VycmVudFF1
ZXJ5IHx8ICF0aGlzLl9zZWFyY2hGaW5pc2hlZENhbGxiYWNrIHx8ICF0aGlzLl9zZWFyY2hSZXN1
bHRzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIFRoZSBjdXJyZW50IHNlYXJj
aCBuZWVkcyB0byBiZSBwZXJmb3JtZWQgYWdhaW4uIEZpcnN0IG5lZ2F0ZSBvdXQgcHJldmlvdXMg
bWF0Y2gKKyAgICAgICAgLy8gY291bnQgYnkgY2FsbGluZyB0aGUgc2VhcmNoIGZpbmlzaGVkIGNh
bGxiYWNrIHdpdGggYSBuZWdhdGl2ZSBudW1iZXIgb2YgbWF0Y2hlcy4KKyAgICAgICAgLy8gVGhl
biBwZXJmb3JtIHRoZSBzZWFyY2ggYWdhaW4gdGhlIHdpdGggc2FtZSBxdWVyeSBhbmQgY2FsbGJh
Y2suCisgICAgICAgIHRoaXMuX3NlYXJjaEZpbmlzaGVkQ2FsbGJhY2sodGhpcywgLXRoaXMuX3Nl
YXJjaFJlc3VsdHMubGVuZ3RoKTsKKyAgICAgICAgdGhpcy5wZXJmb3JtU2VhcmNoKHRoaXMuY3Vy
cmVudFF1ZXJ5LCB0aGlzLl9zZWFyY2hGaW5pc2hlZENhbGxiYWNrKTsKKyAgICB9LAorCisgICAg
X3BlcmNlbnRDbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBjdXJy
ZW50U3RhdGUgPSB0aGlzLnNob3dTZWxmVGltZUFzUGVyY2VudC5nZXQoKSAmJiB0aGlzLnNob3dU
b3RhbFRpbWVBc1BlcmNlbnQuZ2V0KCkgJiYgdGhpcy5zaG93QXZlcmFnZVRpbWVBc1BlcmNlbnQu
Z2V0KCk7CisgICAgICAgIHRoaXMuc2hvd1NlbGZUaW1lQXNQZXJjZW50LnNldCghY3VycmVudFN0
YXRlKTsKKyAgICAgICAgdGhpcy5zaG93VG90YWxUaW1lQXNQZXJjZW50LnNldCghY3VycmVudFN0
YXRlKTsKKyAgICAgICAgdGhpcy5zaG93QXZlcmFnZVRpbWVBc1BlcmNlbnQuc2V0KCFjdXJyZW50
U3RhdGUpOworICAgICAgICB0aGlzLnJlZnJlc2hTaG93QXNQZXJjZW50cygpOworICAgIH0sCisK
KyAgICBfdXBkYXRlUGVyY2VudEJ1dHRvbjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYg
KHRoaXMuc2hvd1NlbGZUaW1lQXNQZXJjZW50LmdldCgpICYmIHRoaXMuc2hvd1RvdGFsVGltZUFz
UGVyY2VudC5nZXQoKSAmJiB0aGlzLnNob3dBdmVyYWdlVGltZUFzUGVyY2VudC5nZXQoKSkgewor
ICAgICAgICAgICAgdGhpcy5wZXJjZW50QnV0dG9uLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTaG93IGFic29sdXRlIHRvdGFsIGFuZCBzZWxmIHRpbWVzLiIpOworICAgICAgICAgICAg
dGhpcy5wZXJjZW50QnV0dG9uLnRvZ2dsZWQgPSB0cnVlOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgdGhpcy5wZXJjZW50QnV0dG9uLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJTaG93IHRvdGFsIGFuZCBzZWxmIHRpbWVzIGFzIHBlcmNlbnRhZ2VzLiIpOworICAgICAgICAg
ICAgdGhpcy5wZXJjZW50QnV0dG9uLnRvZ2dsZWQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0s
CisKKyAgICBfZm9jdXNDbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlm
ICghdGhpcy5kYXRhR3JpZC5zZWxlY3RlZE5vZGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgdGhpcy5yZXNldEJ1dHRvbi52aXNpYmxlID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5wcm9m
aWxlRGF0YUdyaWRUcmVlLmZvY3VzKHRoaXMuZGF0YUdyaWQuc2VsZWN0ZWROb2RlKTsKKyAgICAg
ICAgdGhpcy5yZWZyZXNoKCk7CisgICAgICAgIHRoaXMucmVmcmVzaFZpc2libGVEYXRhKCk7Cisg
ICAgfSwKKworICAgIF9leGNsdWRlQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAg
ICAgICB2YXIgc2VsZWN0ZWROb2RlID0gdGhpcy5kYXRhR3JpZC5zZWxlY3RlZE5vZGUKKworICAg
ICAgICBpZiAoIXNlbGVjdGVkTm9kZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBz
ZWxlY3RlZE5vZGUuZGVzZWxlY3QoKTsKKworICAgICAgICB0aGlzLnJlc2V0QnV0dG9uLnZpc2li
bGUgPSB0cnVlOworICAgICAgICB0aGlzLnByb2ZpbGVEYXRhR3JpZFRyZWUuZXhjbHVkZShzZWxl
Y3RlZE5vZGUpOworICAgICAgICB0aGlzLnJlZnJlc2goKTsKKyAgICAgICAgdGhpcy5yZWZyZXNo
VmlzaWJsZURhdGEoKTsKKyAgICB9LAorCisgICAgX3Jlc2V0Q2xpY2tlZDogZnVuY3Rpb24oZXZl
bnQpCisgICAgeworICAgICAgICB0aGlzLnJlc2V0QnV0dG9uLnZpc2libGUgPSBmYWxzZTsKKyAg
ICAgICAgdGhpcy5wcm9maWxlRGF0YUdyaWRUcmVlLnJlc3RvcmUoKTsKKyAgICAgICAgdGhpcy5f
bGlua2lmaWVyLnJlc2V0KCk7CisgICAgICAgIHRoaXMucmVmcmVzaCgpOworICAgICAgICB0aGlz
LnJlZnJlc2hWaXNpYmxlRGF0YSgpOworICAgIH0sCisKKyAgICBfZGF0YUdyaWROb2RlU2VsZWN0
ZWQ6IGZ1bmN0aW9uKG5vZGUpCisgICAgeworICAgICAgICB0aGlzLmZvY3VzQnV0dG9uLmRpc2Fi
bGVkID0gZmFsc2U7CisgICAgICAgIHRoaXMuZXhjbHVkZUJ1dHRvbi5kaXNhYmxlZCA9IGZhbHNl
OworICAgIH0sCisKKyAgICBfZGF0YUdyaWROb2RlRGVzZWxlY3RlZDogZnVuY3Rpb24obm9kZSkK
KyAgICB7CisgICAgICAgIHRoaXMuZm9jdXNCdXR0b24uZGlzYWJsZWQgPSB0cnVlOworICAgICAg
ICB0aGlzLmV4Y2x1ZGVCdXR0b24uZGlzYWJsZWQgPSB0cnVlOworICAgIH0sCisKKyAgICBfc29y
dFByb2ZpbGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBzb3J0QXNjZW5kaW5nID0g
dGhpcy5kYXRhR3JpZC5zb3J0T3JkZXIgPT09ICJhc2NlbmRpbmciOworICAgICAgICB2YXIgc29y
dENvbHVtbklkZW50aWZpZXIgPSB0aGlzLmRhdGFHcmlkLnNvcnRDb2x1bW5JZGVudGlmaWVyOwor
ICAgICAgICB2YXIgc29ydFByb3BlcnR5ID0geworICAgICAgICAgICAgICAgICJhdmVyYWdlIjog
ImF2ZXJhZ2VUaW1lIiwKKyAgICAgICAgICAgICAgICAic2VsZiI6ICJzZWxmVGltZSIsCisgICAg
ICAgICAgICAgICAgInRvdGFsIjogInRvdGFsVGltZSIsCisgICAgICAgICAgICAgICAgImNhbGxz
IjogIm51bWJlck9mQ2FsbHMiLAorICAgICAgICAgICAgICAgICJmdW5jdGlvbiI6ICJmdW5jdGlv
bk5hbWUiCisgICAgICAgICAgICB9W3NvcnRDb2x1bW5JZGVudGlmaWVyXTsKKworICAgICAgICB0
aGlzLnByb2ZpbGVEYXRhR3JpZFRyZWUuc29ydChXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlk
VHJlZS5wcm9wZXJ0eUNvbXBhcmF0b3Ioc29ydFByb3BlcnR5LCBzb3J0QXNjZW5kaW5nKSk7CisK
KyAgICAgICAgdGhpcy5yZWZyZXNoKCk7CisgICAgfSwKKworICAgIF9tb3VzZURvd25JbkRhdGFH
cmlkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmIChldmVudC5kZXRhaWwgPCAy
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBjZWxsID0gZXZlbnQudGFyZ2V0
LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9kZU5hbWUoInRkIik7CisgICAgICAgIGlmICghY2Vs
bCB8fCAoIWNlbGwuaGFzU3R5bGVDbGFzcygidG90YWwtY29sdW1uIikgJiYgIWNlbGwuaGFzU3R5
bGVDbGFzcygic2VsZi1jb2x1bW4iKSAmJiAhY2VsbC5oYXNTdHlsZUNsYXNzKCJhdmVyYWdlLWNv
bHVtbiIpKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoY2VsbC5oYXNTdHls
ZUNsYXNzKCJ0b3RhbC1jb2x1bW4iKSkKKyAgICAgICAgICAgIHRoaXMuc2hvd1RvdGFsVGltZUFz
UGVyY2VudC5zZXQoIXRoaXMuc2hvd1RvdGFsVGltZUFzUGVyY2VudC5nZXQoKSk7CisgICAgICAg
IGVsc2UgaWYgKGNlbGwuaGFzU3R5bGVDbGFzcygic2VsZi1jb2x1bW4iKSkKKyAgICAgICAgICAg
IHRoaXMuc2hvd1NlbGZUaW1lQXNQZXJjZW50LnNldCghdGhpcy5zaG93U2VsZlRpbWVBc1BlcmNl
bnQuZ2V0KCkpOworICAgICAgICBlbHNlIGlmIChjZWxsLmhhc1N0eWxlQ2xhc3MoImF2ZXJhZ2Ut
Y29sdW1uIikpCisgICAgICAgICAgICB0aGlzLnNob3dBdmVyYWdlVGltZUFzUGVyY2VudC5zZXQo
IXRoaXMuc2hvd0F2ZXJhZ2VUaW1lQXNQZXJjZW50LmdldCgpKTsKKworICAgICAgICB0aGlzLnJl
ZnJlc2hTaG93QXNQZXJjZW50cygpOworCisgICAgICAgIGV2ZW50LmNvbnN1bWUodHJ1ZSk7Cisg
ICAgfSwKKworICAgIF9hc3NpZ25QYXJlbnRzSW5Qcm9maWxlOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICB2YXIgaGVhZCA9IHRoaXMucHJvZmlsZS5oZWFkOworICAgICAgICBoZWFkLnBhcmVu
dCA9IG51bGw7CisgICAgICAgIGhlYWQuaGVhZCA9IG51bGw7CisgICAgICAgIHZhciBub2Rlc1Rv
VHJhdmVyc2UgPSBbIHsgcGFyZW50OiBoZWFkLCBjaGlsZHJlbjogaGVhZC5jaGlsZHJlbiB9IF07
CisgICAgICAgIHdoaWxlIChub2Rlc1RvVHJhdmVyc2UubGVuZ3RoID4gMCkgeworICAgICAgICAg
ICAgdmFyIHBhaXIgPSBub2Rlc1RvVHJhdmVyc2Uuc2hpZnQoKTsKKyAgICAgICAgICAgIHZhciBw
YXJlbnQgPSBwYWlyLnBhcmVudDsKKyAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IHBhaXIuY2hp
bGRyZW47CisgICAgICAgICAgICB2YXIgbGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoOworICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAg
IGNoaWxkcmVuW2ldLmhlYWQgPSBoZWFkOworICAgICAgICAgICAgICAgIGNoaWxkcmVuW2ldLnBh
cmVudCA9IHBhcmVudDsKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGRyZW5baV0uY2hpbGRyZW4u
bGVuZ3RoID4gMCkKKyAgICAgICAgICAgICAgICAgICAgbm9kZXNUb1RyYXZlcnNlLnB1c2goeyBw
YXJlbnQ6IGNoaWxkcmVuW2ldLCBjaGlsZHJlbjogY2hpbGRyZW5baV0uY2hpbGRyZW4gfSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5DUFVQcm9m
aWxlVmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBl
OworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5Qcm9m
aWxlVHlwZX0KKyAqLworV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlID0gZnVuY3Rpb24oKQor
eworICAgIFdlYkluc3BlY3Rvci5Qcm9maWxlVHlwZS5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5D
UFVQcm9maWxlVHlwZS5UeXBlSWQsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sbGVjdCBKYXZh
U2NyaXB0IENQVSBQcm9maWxlIikpOworICAgIHRoaXMuX3JlY29yZGluZyA9IGZhbHNlOworICAg
IFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5pbnN0YW5jZSA9IHRoaXM7Cit9CisKK1dlYklu
c3BlY3Rvci5DUFVQcm9maWxlVHlwZS5UeXBlSWQgPSAiQ1BVIjsKKworV2ViSW5zcGVjdG9yLkNQ
VVByb2ZpbGVUeXBlLnByb3RvdHlwZSA9IHsKKyAgICBnZXQgYnV0dG9uVG9vbHRpcCgpCisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy5fcmVjb3JkaW5nID8gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJTdG9wIENQVSBwcm9maWxpbmcuIikgOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXJ0IENQ
VSBwcm9maWxpbmcuIik7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBvdmVycmlkZQorICAg
ICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgYnV0dG9uQ2xpY2tlZDogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3JlY29yZGluZykgeworICAgICAgICAgICAg
dGhpcy5zdG9wUmVjb3JkaW5nUHJvZmlsZSgpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLm5l
dHdvcmtNYW5hZ2VyLmVuYWJsZVJlc291cmNlVHJhY2tpbmcoKTsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5uZXR3
b3JrTWFuYWdlci5kaXNhYmxlUmVzb3VyY2VUcmFja2luZygpOworICAgICAgICAgICAgdGhpcy5z
dGFydFJlY29yZGluZ1Byb2ZpbGUoKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgfSwKKworICAgIGdldCB0cmVlSXRlbVRpdGxlKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNQVSBQUk9GSUxFUyIpOworICAgIH0sCisKKyAg
ICBnZXQgZGVzY3JpcHRpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiQ1BVIHByb2ZpbGVzIHNob3cgd2hlcmUgdGhlIGV4ZWN1dGlvbiB0aW1lIGlzIHNw
ZW50IGluIHlvdXIgcGFnZSdzIEphdmFTY3JpcHQgZnVuY3Rpb25zLiIpOworICAgIH0sCisKKyAg
ICBpc1JlY29yZGluZ1Byb2ZpbGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLl9yZWNvcmRpbmc7CisgICAgfSwKKworICAgIHN0YXJ0UmVjb3JkaW5nUHJvZmlsZTogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVjb3JkaW5nID0gdHJ1ZTsKKyAgICAgICAg
V2ViSW5zcGVjdG9yLnVzZXJNZXRyaWNzLlByb2ZpbGVzQ1BVUHJvZmlsZVRha2VuLnJlY29yZCgp
OworICAgICAgICBQcm9maWxlckFnZW50LnN0YXJ0KCk7CisgICAgfSwKKworICAgIHN0b3BSZWNv
cmRpbmdQcm9maWxlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9yZWNvcmRpbmcg
PSBmYWxzZTsKKyAgICAgICAgUHJvZmlsZXJBZ2VudC5zdG9wKCk7CisgICAgfSwKKworICAgIHNl
dFJlY29yZGluZ1Byb2ZpbGU6IGZ1bmN0aW9uKGlzUHJvZmlsaW5nKQorICAgIHsKKyAgICAgICAg
dGhpcy5fcmVjb3JkaW5nID0gaXNQcm9maWxpbmc7CisgICAgfSwKKworICAgIGNyZWF0ZVNpZGVi
YXJUcmVlRWxlbWVudEZvclByb2ZpbGU6IGZ1bmN0aW9uKHByb2ZpbGUpCisgICAgeworICAgICAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9maWxlU2lkZWJhclRyZWVFbGVtZW50KHByb2Zp
bGUsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUHJvZmlsZSAlZCIpLCAicHJvZmlsZS1zaWRlYmFy
LXRyZWUtaXRlbSIpOworICAgIH0sCisKKyAgICBjcmVhdGVWaWV3OiBmdW5jdGlvbihwcm9maWxl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVZpZXco
cHJvZmlsZSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBvdmVycmlkZQorICAgICAqIEBw
YXJhbSB7c3RyaW5nPX0gdGl0bGUKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuUHJvZmls
ZUhlYWRlcn0KKyAgICAgKi8KKyAgICBjcmVhdGVUZW1wb3JhcnlQcm9maWxlOiBmdW5jdGlvbih0
aXRsZSkKKyAgICB7CisgICAgICAgIHRpdGxlID0gdGl0bGUgfHwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJSZWNvcmRpbmdcdTIwMjYiKTsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3Iu
UHJvZmlsZUhlYWRlcihXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUuVHlwZUlkLCB0aXRsZSk7
CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBvdmVycmlkZQorICAgICAqIEBwYXJhbSB7UHJv
ZmlsZXJBZ2VudC5Qcm9maWxlSGVhZGVyfSBwcm9maWxlCisgICAgICogQHJldHVybiB7V2ViSW5z
cGVjdG9yLlByb2ZpbGVIZWFkZXJ9CisgICAgICovCisgICAgY3JlYXRlUHJvZmlsZTogZnVuY3Rp
b24ocHJvZmlsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlByb2Zp
bGVIZWFkZXIocHJvZmlsZS50eXBlSWQsIHByb2ZpbGUudGl0bGUsIHByb2ZpbGUudWlkKTsKKyAg
ICB9Cit9CisKK1dlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5wcm90b3R5cGUuX19wcm90b19f
ID0gV2ViSW5zcGVjdG9yLlByb2ZpbGVUeXBlLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5qcwppbmRleCA4
OTMzNGEwMzJhYjIyM2QyZmE1NmNhOTMyM2IxMjBmZGFmZTk2NmE3Li43ZDg3ODYyNWRhNDJkODAx
MTVjNDJhYTYwN2U1ZTlkY2NlMDk2NWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RWaWV3LmpzCkBAIC0yNDUsNyArMjQ1LDcg
QEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0
aGlzLl9zZWFyY2hGaW5pc2hlZENhbGxiYWNrID0gZmluaXNoZWRDYWxsYmFjazsKIAogICAgICAg
ICBmdW5jdGlvbiBtYXRjaGVzQnlOYW1lKGdyaWROb2RlKSB7Ci0gICAgICAgICAgICByZXR1cm4g
KCJuYW1lIiBpbiBncmlkTm9kZSkgJiYgZ3JpZE5vZGUubmFtZS5oYXNTdWJzdHJpbmcocXVlcnks
IHRydWUpOworICAgICAgICAgICAgcmV0dXJuICgiX25hbWUiIGluIGdyaWROb2RlKSAmJiBncmlk
Tm9kZS5fbmFtZS5oYXNTdWJzdHJpbmcocXVlcnksIHRydWUpOwogICAgICAgICB9CiAKICAgICAg
ICAgZnVuY3Rpb24gbWF0Y2hlc0J5SWQoZ3JpZE5vZGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVWaWV3LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBlNGQ3NDFiNDRjOTkwMDU5MjE0YWViZWYzOWY3OGNhMGZlNjY0NzkyLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanMKKysrIC9kZXYvbnVsbApAQCAtMSw2
NDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LS8vIEZJWE1FOiBSZW5hbWUgdGhlIGZpbGUuCi0KLS8qKgotICogQGNvbnN0cnVjdG9yCi0gKiBA
ZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlZpZXd9Ci0gKi8KLVdlYkluc3BlY3Rvci5DUFVQcm9maWxl
VmlldyA9IGZ1bmN0aW9uKHByb2ZpbGUpCi17Ci0gICAgV2ViSW5zcGVjdG9yLlZpZXcuY2FsbCh0
aGlzKTsKLQotICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJwcm9maWxlLXZpZXciKTsK
LSAgICAKLSAgICB0aGlzLnNob3dTZWxmVGltZUFzUGVyY2VudCA9IFdlYkluc3BlY3Rvci5zZXR0
aW5ncy5jcmVhdGVTZXR0aW5nKCJjcHVQcm9maWxlclNob3dTZWxmVGltZUFzUGVyY2VudCIsIHRy
dWUpOwotICAgIHRoaXMuc2hvd1RvdGFsVGltZUFzUGVyY2VudCA9IFdlYkluc3BlY3Rvci5zZXR0
aW5ncy5jcmVhdGVTZXR0aW5nKCJjcHVQcm9maWxlclNob3dUb3RhbFRpbWVBc1BlcmNlbnQiLCB0
cnVlKTsKLSAgICB0aGlzLnNob3dBdmVyYWdlVGltZUFzUGVyY2VudCA9IFdlYkluc3BlY3Rvci5z
ZXR0aW5ncy5jcmVhdGVTZXR0aW5nKCJjcHVQcm9maWxlclNob3dBdmVyYWdlVGltZUFzUGVyY2Vu
dCIsIHRydWUpOwotICAgIHRoaXMuX3ZpZXdUeXBlID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNy
ZWF0ZVNldHRpbmcoImNwdVByb2ZpbGVyVmlldyIsIFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVmll
dy5fVHlwZUhlYXZ5KTsKLQotICAgIHZhciBjb2x1bW5zID0geyAic2VsZiI6IHsgdGl0bGU6IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiU2VsZiIpLCB3aWR0aDogIjcycHgiLCBzb3J0OiAiZGVzY2Vu
ZGluZyIsIHNvcnRhYmxlOiB0cnVlIH0sCi0gICAgICAgICAgICAgICAgICAgICJ0b3RhbCI6IHsg
dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVG90YWwiKSwgd2lkdGg6ICI3MnB4Iiwgc29y
dGFibGU6IHRydWUgfSwKLSAgICAgICAgICAgICAgICAgICAgImF2ZXJhZ2UiOiB7IHRpdGxlOiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkF2ZXJhZ2UiKSwgd2lkdGg6ICI3MnB4Iiwgc29ydGFibGU6
IHRydWUgfSwKLSAgICAgICAgICAgICAgICAgICAgImNhbGxzIjogeyB0aXRsZTogV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJDYWxscyIpLCB3aWR0aDogIjU0cHgiLCBzb3J0YWJsZTogdHJ1ZSB9LAot
ICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24iOiB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkZ1bmN0aW9uIiksIGRpc2Nsb3N1cmU6IHRydWUsIHNvcnRhYmxlOiB0cnVlIH0gfTsK
LQotICAgIGlmIChDYXBhYmlsaXRpZXMuc2FtcGxpbmdDUFVQcm9maWxlcikgewotICAgICAgICBk
ZWxldGUgY29sdW1ucy5hdmVyYWdlOwotICAgICAgICBkZWxldGUgY29sdW1ucy5jYWxsczsKLSAg
ICB9Ci0KLSAgICB0aGlzLmRhdGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZChjb2x1
bW5zKTsKLSAgICB0aGlzLmRhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoInNvcnRpbmcgY2hhbmdl
ZCIsIHRoaXMuX3NvcnRQcm9maWxlLCB0aGlzKTsKLSAgICB0aGlzLmRhdGFHcmlkLmVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fbW91c2VEb3duSW5EYXRhR3JpZC5i
aW5kKHRoaXMpLCB0cnVlKTsKLSAgICB0aGlzLmRhdGFHcmlkLnNob3codGhpcy5lbGVtZW50KTsK
LQotICAgIHRoaXMudmlld1NlbGVjdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJz
ZWxlY3QiKTsKLSAgICB0aGlzLnZpZXdTZWxlY3RFbGVtZW50LmNsYXNzTmFtZSA9ICJzdGF0dXMt
YmFyLWl0ZW0iOwotICAgIHRoaXMudmlld1NlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
Y2hhbmdlIiwgdGhpcy5fY2hhbmdlVmlldy5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0KLSAgICB2YXIg
aGVhdnlWaWV3T3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7Ci0gICAg
aGVhdnlWaWV3T3B0aW9uLmxhYmVsID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIZWF2eSAoQm90
dG9tIFVwKSIpOwotICAgIHZhciB0cmVlVmlld09wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoIm9wdGlvbiIpOwotICAgIHRyZWVWaWV3T3B0aW9uLmxhYmVsID0gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJUcmVlIChUb3AgRG93bikiKTsKLSAgICB0aGlzLnZpZXdTZWxlY3RFbGVtZW50LmFw
cGVuZENoaWxkKGhlYXZ5Vmlld09wdGlvbik7Ci0gICAgdGhpcy52aWV3U2VsZWN0RWxlbWVudC5h
cHBlbmRDaGlsZCh0cmVlVmlld09wdGlvbik7Ci0gICAgdGhpcy52aWV3U2VsZWN0RWxlbWVudC5z
ZWxlY3RlZEluZGV4ID0gdGhpcy5fdmlld1R5cGUuZ2V0KCkgPT09IFdlYkluc3BlY3Rvci5DUFVQ
cm9maWxlVmlldy5fVHlwZUhlYXZ5ID8gMCA6IDE7Ci0KLSAgICB0aGlzLnBlcmNlbnRCdXR0b24g
PSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRvbigiIiwgInBlcmNlbnQtdGltZS1zdGF0
dXMtYmFyLWl0ZW0iKTsKLSAgICB0aGlzLnBlcmNlbnRCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigi
Y2xpY2siLCB0aGlzLl9wZXJjZW50Q2xpY2tlZCwgdGhpcyk7Ci0KLSAgICB0aGlzLmZvY3VzQnV0
dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJGb2N1cyBzZWxlY3RlZCBmdW5jdGlvbi4iKSwgImZvY3VzLXByb2ZpbGUtbm9kZS1zdGF0
dXMtYmFyLWl0ZW0iKTsKLSAgICB0aGlzLmZvY3VzQnV0dG9uLmRpc2FibGVkID0gdHJ1ZTsKLSAg
ICB0aGlzLmZvY3VzQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fZm9jdXND
bGlja2VkLCB0aGlzKTsKLQotICAgIHRoaXMuZXhjbHVkZUJ1dHRvbiA9IG5ldyBXZWJJbnNwZWN0
b3IuU3RhdHVzQmFyQnV0dG9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRXhjbHVkZSBzZWxlY3Rl
ZCBmdW5jdGlvbi4iKSwgImV4Y2x1ZGUtcHJvZmlsZS1ub2RlLXN0YXR1cy1iYXItaXRlbSIpOwot
ICAgIHRoaXMuZXhjbHVkZUJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7Ci0gICAgdGhpcy5leGNsdWRl
QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fZXhjbHVkZUNsaWNrZWQsIHRo
aXMpOwotCi0gICAgdGhpcy5yZXNldEJ1dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVzQmFy
QnV0dG9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzdG9yZSBhbGwgZnVuY3Rpb25zLiIpLCAi
cmVzZXQtcHJvZmlsZS1zdGF0dXMtYmFyLWl0ZW0iKTsKLSAgICB0aGlzLnJlc2V0QnV0dG9uLnZp
c2libGUgPSBmYWxzZTsKLSAgICB0aGlzLnJlc2V0QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNs
aWNrIiwgdGhpcy5fcmVzZXRDbGlja2VkLCB0aGlzKTsKLQotICAgIHRoaXMucHJvZmlsZSA9IHBy
b2ZpbGU7Ci0KLSAgICBmdW5jdGlvbiBwcm9maWxlQ2FsbGJhY2soZXJyb3IsIHByb2ZpbGUpCi0g
ICAgewotICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
aWYgKCFwcm9maWxlLmhlYWQpIHsKLSAgICAgICAgICAgIC8vIFByb2ZpbGluZyB3YXMgdGVudGF0
aXZlbHkgdGVybWluYXRlZCB3aXRoIHRoZSAiQ2xlYXIgYWxsIHByb2ZpbGVzLiIgYnV0dG9uLgot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIHRoaXMucHJvZmlsZS5oZWFk
ID0gcHJvZmlsZS5oZWFkOwotICAgICAgICB0aGlzLl9hc3NpZ25QYXJlbnRzSW5Qcm9maWxlKCk7
Ci0gICAgICAgIHRoaXMuX2NoYW5nZVZpZXcoKTsKLSAgICAgICAgdGhpcy5fdXBkYXRlUGVyY2Vu
dEJ1dHRvbigpOwotICAgIH0KLQotICAgIHRoaXMuX2xpbmtpZmllciA9IG5ldyBXZWJJbnNwZWN0
b3IuTGlua2lmaWVyKG5ldyBXZWJJbnNwZWN0b3IuTGlua2lmaWVyLkRlZmF1bHRGb3JtYXR0ZXIo
MzApKTsKLQotICAgIFByb2ZpbGVyQWdlbnQuZ2V0UHJvZmlsZSh0aGlzLnByb2ZpbGUudHlwZUlk
LCB0aGlzLnByb2ZpbGUudWlkLCBwcm9maWxlQ2FsbGJhY2suYmluZCh0aGlzKSk7Ci19Ci0KLVdl
Ykluc3BlY3Rvci5DUFVQcm9maWxlVmlldy5fVHlwZVRyZWUgPSAiVHJlZSI7Ci1XZWJJbnNwZWN0
b3IuQ1BVUHJvZmlsZVZpZXcuX1R5cGVIZWF2eSA9ICJIZWF2eSI7Ci0KLVdlYkluc3BlY3Rvci5D
UFVQcm9maWxlVmlldy5wcm90b3R5cGUgPSB7Ci0gICAgZ2V0IHN0YXR1c0Jhckl0ZW1zKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBbdGhpcy52aWV3U2VsZWN0RWxlbWVudCwgdGhpcy5wZXJjZW50
QnV0dG9uLmVsZW1lbnQsIHRoaXMuZm9jdXNCdXR0b24uZWxlbWVudCwgdGhpcy5leGNsdWRlQnV0
dG9uLmVsZW1lbnQsIHRoaXMucmVzZXRCdXR0b24uZWxlbWVudF07Ci0gICAgfSwKLQotICAgIGdl
dCBwcm9maWxlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9wcm9maWxlOwotICAgIH0s
Ci0KLSAgICBzZXQgcHJvZmlsZShwcm9maWxlKQotICAgIHsKLSAgICAgICAgdGhpcy5fcHJvZmls
ZSA9IHByb2ZpbGU7Ci0gICAgfSwKLQotICAgIGdldCBib3R0b21VcFByb2ZpbGVEYXRhR3JpZFRy
ZWUoKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9ib3R0b21VcFByb2ZpbGVEYXRhR3JpZFRy
ZWUpIHsKLSAgICAgICAgICAgIGlmICh0aGlzLnByb2ZpbGUuYm90dG9tVXBIZWFkKQotICAgICAg
ICAgICAgICAgIHRoaXMuX2JvdHRvbVVwUHJvZmlsZURhdGFHcmlkVHJlZSA9IG5ldyBXZWJJbnNw
ZWN0b3IuVG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUodGhpcywgdGhpcy5wcm9maWxlLmJvdHRv
bVVwSGVhZCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy5fYm90dG9t
VXBQcm9maWxlRGF0YUdyaWRUcmVlID0gbmV3IFdlYkluc3BlY3Rvci5Cb3R0b21VcFByb2ZpbGVE
YXRhR3JpZFRyZWUodGhpcywgdGhpcy5wcm9maWxlLmhlYWQpOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiB0aGlzLl9ib3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWU7Ci0gICAgfSwKLQotICAg
IGdldCB0b3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZSgpCi0gICAgewotICAgICAgICBpZiAoIXRo
aXMuX3RvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlKQotICAgICAgICAgICAgdGhpcy5fdG9wRG93
blByb2ZpbGVEYXRhR3JpZFRyZWUgPSBuZXcgV2ViSW5zcGVjdG9yLlRvcERvd25Qcm9maWxlRGF0
YUdyaWRUcmVlKHRoaXMsIHRoaXMucHJvZmlsZS5oZWFkKTsKLSAgICAgICAgcmV0dXJuIHRoaXMu
X3RvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlOwotICAgIH0sCi0KLSAgICBnZXQgY3VycmVudFRy
ZWUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRUcmVlOwotICAgIH0sCi0K
LSAgICBzZXQgY3VycmVudFRyZWUodHJlZSkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2N1cnJlbnRU
cmVlID0gdHJlZTsKLSAgICAgICAgdGhpcy5yZWZyZXNoKCk7Ci0gICAgfSwKLQotICAgIHdpbGxI
aWRlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0
SW5kZXggPSAtMTsKLSAgICB9LAotCi0gICAgcmVmcmVzaDogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgdmFyIHNlbGVjdGVkUHJvZmlsZU5vZGUgPSB0aGlzLmRhdGFHcmlkLnNlbGVjdGVkTm9k
ZSA/IHRoaXMuZGF0YUdyaWQuc2VsZWN0ZWROb2RlLnByb2ZpbGVOb2RlIDogbnVsbDsKLQotICAg
ICAgICB0aGlzLmRhdGFHcmlkLnJvb3ROb2RlKCkucmVtb3ZlQ2hpbGRyZW4oKTsKLQotICAgICAg
ICB2YXIgY2hpbGRyZW4gPSB0aGlzLnByb2ZpbGVEYXRhR3JpZFRyZWUuY2hpbGRyZW47Ci0gICAg
ICAgIHZhciBjb3VudCA9IGNoaWxkcmVuLmxlbmd0aDsKLQotICAgICAgICBmb3IgKHZhciBpbmRl
eCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpCi0gICAgICAgICAgICB0aGlzLmRhdGFHcmlk
LnJvb3ROb2RlKCkuYXBwZW5kQ2hpbGQoY2hpbGRyZW5baW5kZXhdKTsKLQotICAgICAgICBpZiAo
c2VsZWN0ZWRQcm9maWxlTm9kZSkKLSAgICAgICAgICAgIHNlbGVjdGVkUHJvZmlsZU5vZGUuc2Vs
ZWN0ZWQgPSB0cnVlOwotICAgIH0sCi0KLSAgICByZWZyZXNoVmlzaWJsZURhdGE6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIHZhciBjaGlsZCA9IHRoaXMuZGF0YUdyaWQuY2hpbGRyZW5bMF07
Ci0gICAgICAgIHdoaWxlIChjaGlsZCkgewotICAgICAgICAgICAgY2hpbGQucmVmcmVzaCgpOwot
ICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC50cmF2ZXJzZU5leHROb2RlKGZhbHNlLCBudWxsLCB0
cnVlKTsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICByZWZyZXNoU2hvd0FzUGVyY2VudHM6IGZ1
bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZVBlcmNlbnRCdXR0b24oKTsKLSAg
ICAgICAgdGhpcy5yZWZyZXNoVmlzaWJsZURhdGEoKTsKLSAgICB9LAotCi0gICAgc2VhcmNoQ2Fu
Y2VsZWQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9zZWFyY2hSZXN1bHRz
KSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NlYXJjaFJlc3VsdHMu
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICB2YXIgcHJvZmlsZU5vZGUgPSB0aGlzLl9z
ZWFyY2hSZXN1bHRzW2ldLnByb2ZpbGVOb2RlOwotCi0gICAgICAgICAgICAgICAgZGVsZXRlIHBy
b2ZpbGVOb2RlLl9zZWFyY2hNYXRjaGVkU2VsZkNvbHVtbjsKLSAgICAgICAgICAgICAgICBkZWxl
dGUgcHJvZmlsZU5vZGUuX3NlYXJjaE1hdGNoZWRUb3RhbENvbHVtbjsKLSAgICAgICAgICAgICAg
ICBkZWxldGUgcHJvZmlsZU5vZGUuX3NlYXJjaE1hdGNoZWRDYWxsc0NvbHVtbjsKLSAgICAgICAg
ICAgICAgICBkZWxldGUgcHJvZmlsZU5vZGUuX3NlYXJjaE1hdGNoZWRGdW5jdGlvbkNvbHVtbjsK
LQotICAgICAgICAgICAgICAgIHByb2ZpbGVOb2RlLnJlZnJlc2goKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotCi0gICAgICAgIGRlbGV0ZSB0aGlzLl9zZWFyY2hGaW5pc2hlZENhbGxiYWNr
OwotICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPSAtMTsKLSAgICAgICAg
dGhpcy5fc2VhcmNoUmVzdWx0cyA9IFtdOwotICAgIH0sCi0KLSAgICBwZXJmb3JtU2VhcmNoOiBm
dW5jdGlvbihxdWVyeSwgZmluaXNoZWRDYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIC8vIENhbGwg
c2VhcmNoQ2FuY2VsZWQgc2luY2UgaXQgd2lsbCByZXNldCBldmVyeXRoaW5nIHdlIG5lZWQgYmVm
b3JlIGRvaW5nIGEgbmV3IHNlYXJjaC4KLSAgICAgICAgdGhpcy5zZWFyY2hDYW5jZWxlZCgpOwot
Ci0gICAgICAgIHF1ZXJ5ID0gcXVlcnkudHJpbSgpOwotCi0gICAgICAgIGlmICghcXVlcnkubGVu
Z3RoKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX3NlYXJjaEZpbmlzaGVk
Q2FsbGJhY2sgPSBmaW5pc2hlZENhbGxiYWNrOwotCi0gICAgICAgIHZhciBncmVhdGVyVGhhbiA9
IChxdWVyeS5zdGFydHNXaXRoKCI+IikpOwotICAgICAgICB2YXIgbGVzc1RoYW4gPSAocXVlcnku
c3RhcnRzV2l0aCgiPCIpKTsKLSAgICAgICAgdmFyIGVxdWFsVG8gPSAocXVlcnkuc3RhcnRzV2l0
aCgiPSIpIHx8ICgoZ3JlYXRlclRoYW4gfHwgbGVzc1RoYW4pICYmIHF1ZXJ5LmluZGV4T2YoIj0i
KSA9PT0gMSkpOwotICAgICAgICB2YXIgcGVyY2VudFVuaXRzID0gKHF1ZXJ5Lmxhc3RJbmRleE9m
KCIlIikgPT09IChxdWVyeS5sZW5ndGggLSAxKSk7Ci0gICAgICAgIHZhciBtaWxsaXNlY29uZHNV
bml0cyA9IChxdWVyeS5sZW5ndGggPiAyICYmIHF1ZXJ5Lmxhc3RJbmRleE9mKCJtcyIpID09PSAo
cXVlcnkubGVuZ3RoIC0gMikpOwotICAgICAgICB2YXIgc2Vjb25kc1VuaXRzID0gKCFtaWxsaXNl
Y29uZHNVbml0cyAmJiBxdWVyeS5sYXN0SW5kZXhPZigicyIpID09PSAocXVlcnkubGVuZ3RoIC0g
MSkpOwotCi0gICAgICAgIHZhciBxdWVyeU51bWJlciA9IHBhcnNlRmxvYXQocXVlcnkpOwotICAg
ICAgICBpZiAoZ3JlYXRlclRoYW4gfHwgbGVzc1RoYW4gfHwgZXF1YWxUbykgewotICAgICAgICAg
ICAgaWYgKGVxdWFsVG8gJiYgKGdyZWF0ZXJUaGFuIHx8IGxlc3NUaGFuKSkKLSAgICAgICAgICAg
ICAgICBxdWVyeU51bWJlciA9IHBhcnNlRmxvYXQocXVlcnkuc3Vic3RyaW5nKDIpKTsKLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBxdWVyeU51bWJlciA9IHBhcnNlRmxvYXQocXVl
cnkuc3Vic3RyaW5nKDEpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBxdWVyeU51bWJlck1p
bGxpc2Vjb25kcyA9IChzZWNvbmRzVW5pdHMgPyAocXVlcnlOdW1iZXIgKiAxMDAwKSA6IHF1ZXJ5
TnVtYmVyKTsKLQotICAgICAgICAvLyBNYWtlIGVxdWFsVG8gaW1wbGljaXRseSB0cnVlIGlmIGl0
IHdhc24ndCBzcGVjaWZpZWQgdGhlcmUgaXMgbm8gb3RoZXIgb3BlcmF0b3IuCi0gICAgICAgIGlm
ICghaXNOYU4ocXVlcnlOdW1iZXIpICYmICEoZ3JlYXRlclRoYW4gfHwgbGVzc1RoYW4pKQotICAg
ICAgICAgICAgZXF1YWxUbyA9IHRydWU7Ci0KLSAgICAgICAgZnVuY3Rpb24gbWF0Y2hlc1F1ZXJ5
KC8qUHJvZmlsZURhdGFHcmlkTm9kZSovIHByb2ZpbGVEYXRhR3JpZE5vZGUpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGRlbGV0ZSBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkU2Vs
ZkNvbHVtbjsKLSAgICAgICAgICAgIGRlbGV0ZSBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hN
YXRjaGVkVG90YWxDb2x1bW47Ci0gICAgICAgICAgICBkZWxldGUgcHJvZmlsZURhdGFHcmlkTm9k
ZS5fc2VhcmNoTWF0Y2hlZEF2ZXJhZ2VDb2x1bW47Ci0gICAgICAgICAgICBkZWxldGUgcHJvZmls
ZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZENhbGxzQ29sdW1uOwotICAgICAgICAgICAgZGVs
ZXRlIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRGdW5jdGlvbkNvbHVtbjsKLQot
ICAgICAgICAgICAgaWYgKHBlcmNlbnRVbml0cykgewotICAgICAgICAgICAgICAgIGlmIChsZXNz
VGhhbikgewotICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5zZWxm
UGVyY2VudCA8IHF1ZXJ5TnVtYmVyKQotICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURh
dGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZFNlbGZDb2x1bW4gPSB0cnVlOwotICAgICAgICAgICAg
ICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS50b3RhbFBlcmNlbnQgPCBxdWVyeU51bWJl
cikKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1h
dGNoZWRUb3RhbENvbHVtbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxl
RGF0YUdyaWROb2RlLmF2ZXJhZ2VQZXJjZW50IDwgcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVk
QXZlcmFnZUNvbHVtbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChncmVhdGVy
VGhhbikgewotICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5zZWxm
UGVyY2VudCA+IHF1ZXJ5TnVtYmVyKQotICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURh
dGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZFNlbGZDb2x1bW4gPSB0cnVlOwotICAgICAgICAgICAg
ICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS50b3RhbFBlcmNlbnQgPiBxdWVyeU51bWJl
cikKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1h
dGNoZWRUb3RhbENvbHVtbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxl
RGF0YUdyaWROb2RlLmF2ZXJhZ2VQZXJjZW50IDwgcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVk
QXZlcmFnZUNvbHVtbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgaWYgKGVxdWFsVG8pIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRhR3Jp
ZE5vZGUuc2VsZlBlcmNlbnQgPT0gcXVlcnlOdW1iZXIpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkU2VsZkNvbHVtbiA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLnRvdGFsUGVyY2VudCA9
PSBxdWVyeU51bWJlcikKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5v
ZGUuX3NlYXJjaE1hdGNoZWRUb3RhbENvbHVtbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChwcm9maWxlRGF0YUdyaWROb2RlLmF2ZXJhZ2VQZXJjZW50IDwgcXVlcnlOdW1iZXJNaWxs
aXNlY29uZHMpCi0gICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9z
ZWFyY2hNYXRjaGVkQXZlcmFnZUNvbHVtbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfSBlbHNlIGlmIChtaWxsaXNlY29uZHNVbml0cyB8fCBzZWNvbmRzVW5pdHMpIHsK
LSAgICAgICAgICAgICAgICBpZiAobGVzc1RoYW4pIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KHByb2ZpbGVEYXRhR3JpZE5vZGUuc2VsZlRpbWUgPCBxdWVyeU51bWJlck1pbGxpc2Vjb25kcykK
LSAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNo
ZWRTZWxmQ29sdW1uID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRh
R3JpZE5vZGUudG90YWxUaW1lIDwgcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1
bW4gPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5h
dmVyYWdlVGltZSA8IHF1ZXJ5TnVtYmVyTWlsbGlzZWNvbmRzKQotICAgICAgICAgICAgICAgICAg
ICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZEF2ZXJhZ2VDb2x1bW4gPSB0
cnVlOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZ3JlYXRlclRoYW4pIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUuc2VsZlRpbWUgPiBxdWVyeU51bWJl
ck1pbGxpc2Vjb25kcykKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5v
ZGUuX3NlYXJjaE1hdGNoZWRTZWxmQ29sdW1uID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUudG90YWxUaW1lID4gcXVlcnlOdW1iZXJNaWxsaXNlY29u
ZHMpCi0gICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hN
YXRjaGVkVG90YWxDb2x1bW4gPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmls
ZURhdGFHcmlkTm9kZS5hdmVyYWdlVGltZSA+IHF1ZXJ5TnVtYmVyTWlsbGlzZWNvbmRzKQotICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZEF2
ZXJhZ2VDb2x1bW4gPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
IGlmIChlcXVhbFRvKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxlRGF0YUdyaWRO
b2RlLnNlbGZUaW1lID09IHF1ZXJ5TnVtYmVyTWlsbGlzZWNvbmRzKQotICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZFNlbGZDb2x1bW4gPSB0
cnVlOwotICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS50b3RhbFRp
bWUgPT0gcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMpCi0gICAgICAgICAgICAgICAgICAgICAgICBw
cm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1bW4gPSB0cnVlOwotICAg
ICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5hdmVyYWdlVGltZSA9PSBx
dWVyeU51bWJlck1pbGxpc2Vjb25kcykKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVE
YXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRBdmVyYWdlQ29sdW1uID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChlcXVh
bFRvICYmIHByb2ZpbGVEYXRhR3JpZE5vZGUubnVtYmVyT2ZDYWxscyA9PSBxdWVyeU51bWJlcikK
LSAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZENh
bGxzQ29sdW1uID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBpZiAoZ3JlYXRlclRoYW4gJiYgcHJv
ZmlsZURhdGFHcmlkTm9kZS5udW1iZXJPZkNhbGxzID4gcXVlcnlOdW1iZXIpCi0gICAgICAgICAg
ICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRDYWxsc0NvbHVtbiA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgaWYgKGxlc3NUaGFuICYmIHByb2ZpbGVEYXRhR3JpZE5v
ZGUubnVtYmVyT2ZDYWxscyA8IHF1ZXJ5TnVtYmVyKQotICAgICAgICAgICAgICAgICAgICBwcm9m
aWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkQ2FsbHNDb2x1bW4gPSB0cnVlOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5mdW5jdGlvbk5h
bWUuaGFzU3Vic3RyaW5nKHF1ZXJ5LCB0cnVlKSB8fCBwcm9maWxlRGF0YUdyaWROb2RlLnVybC5o
YXNTdWJzdHJpbmcocXVlcnksIHRydWUpKQotICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3Jp
ZE5vZGUuX3NlYXJjaE1hdGNoZWRGdW5jdGlvbkNvbHVtbiA9IHRydWU7Ci0KLSAgICAgICAgICAg
IGlmIChwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkU2VsZkNvbHVtbiB8fAotICAg
ICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRUb3RhbENvbHVt
biB8fAotICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRB
dmVyYWdlQ29sdW1uIHx8Ci0gICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2Vh
cmNoTWF0Y2hlZENhbGxzQ29sdW1uIHx8Ci0gICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlk
Tm9kZS5fc2VhcmNoTWF0Y2hlZEZ1bmN0aW9uQ29sdW1uKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUucmVmcmVzaCgpOwotICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgY3VycmVudCA9IHRoaXMucHJvZmlsZURhdGFHcmlk
VHJlZS5jaGlsZHJlblswXTsKLQotICAgICAgICB3aGlsZSAoY3VycmVudCkgewotICAgICAgICAg
ICAgaWYgKG1hdGNoZXNRdWVyeShjdXJyZW50KSkgewotICAgICAgICAgICAgICAgIHRoaXMuX3Nl
YXJjaFJlc3VsdHMucHVzaCh7IHByb2ZpbGVOb2RlOiBjdXJyZW50IH0pOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC50cmF2ZXJzZU5leHROb2RlKGZhbHNl
LCBudWxsLCBmYWxzZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmaW5pc2hlZENhbGxiYWNrKHRo
aXMsIHRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoKTsKLSAgICB9LAotCi0gICAganVtcFRvRmly
c3RTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fc2Vh
cmNoUmVzdWx0cyB8fCAhdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9IDA7Ci0gICAg
ICAgIHRoaXMuX2p1bXBUb1NlYXJjaFJlc3VsdCh0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5k
ZXgpOwotICAgIH0sCi0KLSAgICBqdW1wVG9MYXN0U2VhcmNoUmVzdWx0OiBmdW5jdGlvbigpCi0g
ICAgewotICAgICAgICBpZiAoIXRoaXMuX3NlYXJjaFJlc3VsdHMgfHwgIXRoaXMuX3NlYXJjaFJl
c3VsdHMubGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLl9jdXJyZW50
U2VhcmNoUmVzdWx0SW5kZXggPSAodGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGggLSAxKTsKLSAg
ICAgICAgdGhpcy5fanVtcFRvU2VhcmNoUmVzdWx0KHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJ
bmRleCk7Ci0gICAgfSwKLQotICAgIGp1bXBUb05leHRTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fc2VhcmNoUmVzdWx0cyB8fCAhdGhpcy5fc2VhcmNo
UmVzdWx0cy5sZW5ndGgpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICgrK3RoaXMu
X2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA+PSB0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCkK
LSAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9IDA7Ci0gICAgICAg
IHRoaXMuX2p1bXBUb1NlYXJjaFJlc3VsdCh0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXgp
OwotICAgIH0sCi0KLSAgICBqdW1wVG9QcmV2aW91c1NlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9zZWFyY2hSZXN1bHRzIHx8ICF0aGlzLl9zZWFyY2hS
ZXN1bHRzLmxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKC0tdGhpcy5f
Y3VycmVudFNlYXJjaFJlc3VsdEluZGV4IDwgMCkKLSAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRT
ZWFyY2hSZXN1bHRJbmRleCA9ICh0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCAtIDEpOwotICAg
ICAgICB0aGlzLl9qdW1wVG9TZWFyY2hSZXN1bHQodGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdElu
ZGV4KTsKLSAgICB9LAotCi0gICAgc2hvd2luZ0ZpcnN0U2VhcmNoUmVzdWx0OiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICByZXR1cm4gKHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9
PT0gMCk7Ci0gICAgfSwKLQotICAgIHNob3dpbmdMYXN0U2VhcmNoUmVzdWx0OiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICByZXR1cm4gKHRoaXMuX3NlYXJjaFJlc3VsdHMgJiYgdGhpcy5fY3Vy
cmVudFNlYXJjaFJlc3VsdEluZGV4ID09PSAodGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGggLSAx
KSk7Ci0gICAgfSwKLQotICAgIF9qdW1wVG9TZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKGluZGV4KQot
ICAgIHsKLSAgICAgICAgdmFyIHNlYXJjaFJlc3VsdCA9IHRoaXMuX3NlYXJjaFJlc3VsdHNbaW5k
ZXhdOwotICAgICAgICBpZiAoIXNlYXJjaFJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICB2YXIgcHJvZmlsZU5vZGUgPSBzZWFyY2hSZXN1bHQucHJvZmlsZU5vZGU7Ci0gICAg
ICAgIHByb2ZpbGVOb2RlLnJldmVhbEFuZFNlbGVjdCgpOwotICAgIH0sCi0KLSAgICBfY2hhbmdl
VmlldzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLnByb2ZpbGUpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHRoaXMudmlld1NlbGVjdEVsZW1lbnQuc2Vs
ZWN0ZWRJbmRleCA9PSAxKSB7Ci0gICAgICAgICAgICB0aGlzLnByb2ZpbGVEYXRhR3JpZFRyZWUg
PSB0aGlzLnRvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlOwotICAgICAgICAgICAgdGhpcy5fc29y
dFByb2ZpbGUoKTsKLSAgICAgICAgICAgIHRoaXMuX3ZpZXdUeXBlLnNldChXZWJJbnNwZWN0b3Iu
Q1BVUHJvZmlsZVZpZXcuX1R5cGVUcmVlKTsKLSAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZpZXdT
ZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXggPT0gMCkgewotICAgICAgICAgICAgdGhpcy5wcm9m
aWxlRGF0YUdyaWRUcmVlID0gdGhpcy5ib3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWU7Ci0gICAg
ICAgICAgICB0aGlzLl9zb3J0UHJvZmlsZSgpOwotICAgICAgICAgICAgdGhpcy5fdmlld1R5cGUu
c2V0KFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVmlldy5fVHlwZUhlYXZ5KTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmICghdGhpcy5jdXJyZW50UXVlcnkgfHwgIXRoaXMuX3NlYXJjaEZpbmlzaGVk
Q2FsbGJhY2sgfHwgIXRoaXMuX3NlYXJjaFJlc3VsdHMpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgLy8gVGhlIGN1cnJlbnQgc2VhcmNoIG5lZWRzIHRvIGJlIHBlcmZvcm1lZCBhZ2Fp
bi4gRmlyc3QgbmVnYXRlIG91dCBwcmV2aW91cyBtYXRjaAotICAgICAgICAvLyBjb3VudCBieSBj
YWxsaW5nIHRoZSBzZWFyY2ggZmluaXNoZWQgY2FsbGJhY2sgd2l0aCBhIG5lZ2F0aXZlIG51bWJl
ciBvZiBtYXRjaGVzLgotICAgICAgICAvLyBUaGVuIHBlcmZvcm0gdGhlIHNlYXJjaCBhZ2FpbiB0
aGUgd2l0aCBzYW1lIHF1ZXJ5IGFuZCBjYWxsYmFjay4KLSAgICAgICAgdGhpcy5fc2VhcmNoRmlu
aXNoZWRDYWxsYmFjayh0aGlzLCAtdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgpOwotICAgICAg
ICB0aGlzLnBlcmZvcm1TZWFyY2godGhpcy5jdXJyZW50UXVlcnksIHRoaXMuX3NlYXJjaEZpbmlz
aGVkQ2FsbGJhY2spOwotICAgIH0sCi0KLSAgICBfcGVyY2VudENsaWNrZWQ6IGZ1bmN0aW9uKGV2
ZW50KQotICAgIHsKLSAgICAgICAgdmFyIGN1cnJlbnRTdGF0ZSA9IHRoaXMuc2hvd1NlbGZUaW1l
QXNQZXJjZW50LmdldCgpICYmIHRoaXMuc2hvd1RvdGFsVGltZUFzUGVyY2VudC5nZXQoKSAmJiB0
aGlzLnNob3dBdmVyYWdlVGltZUFzUGVyY2VudC5nZXQoKTsKLSAgICAgICAgdGhpcy5zaG93U2Vs
ZlRpbWVBc1BlcmNlbnQuc2V0KCFjdXJyZW50U3RhdGUpOwotICAgICAgICB0aGlzLnNob3dUb3Rh
bFRpbWVBc1BlcmNlbnQuc2V0KCFjdXJyZW50U3RhdGUpOwotICAgICAgICB0aGlzLnNob3dBdmVy
YWdlVGltZUFzUGVyY2VudC5zZXQoIWN1cnJlbnRTdGF0ZSk7Ci0gICAgICAgIHRoaXMucmVmcmVz
aFNob3dBc1BlcmNlbnRzKCk7Ci0gICAgfSwKLQotICAgIF91cGRhdGVQZXJjZW50QnV0dG9uOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAodGhpcy5zaG93U2VsZlRpbWVBc1BlcmNlbnQu
Z2V0KCkgJiYgdGhpcy5zaG93VG90YWxUaW1lQXNQZXJjZW50LmdldCgpICYmIHRoaXMuc2hvd0F2
ZXJhZ2VUaW1lQXNQZXJjZW50LmdldCgpKSB7Ci0gICAgICAgICAgICB0aGlzLnBlcmNlbnRCdXR0
b24udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgYWJzb2x1dGUgdG90YWwgYW5k
IHNlbGYgdGltZXMuIik7Ci0gICAgICAgICAgICB0aGlzLnBlcmNlbnRCdXR0b24udG9nZ2xlZCA9
IHRydWU7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0aGlzLnBlcmNlbnRCdXR0b24u
dGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgdG90YWwgYW5kIHNlbGYgdGltZXMg
YXMgcGVyY2VudGFnZXMuIik7Ci0gICAgICAgICAgICB0aGlzLnBlcmNlbnRCdXR0b24udG9nZ2xl
ZCA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIF9mb2N1c0NsaWNrZWQ6IGZ1bmN0
aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmRhdGFHcmlkLnNlbGVjdGVkTm9k
ZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLnJlc2V0QnV0dG9uLnZpc2li
bGUgPSB0cnVlOwotICAgICAgICB0aGlzLnByb2ZpbGVEYXRhR3JpZFRyZWUuZm9jdXModGhpcy5k
YXRhR3JpZC5zZWxlY3RlZE5vZGUpOwotICAgICAgICB0aGlzLnJlZnJlc2goKTsKLSAgICAgICAg
dGhpcy5yZWZyZXNoVmlzaWJsZURhdGEoKTsKLSAgICB9LAotCi0gICAgX2V4Y2x1ZGVDbGlja2Vk
OiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHZhciBzZWxlY3RlZE5vZGUgPSB0aGlz
LmRhdGFHcmlkLnNlbGVjdGVkTm9kZQotCi0gICAgICAgIGlmICghc2VsZWN0ZWROb2RlKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHNlbGVjdGVkTm9kZS5kZXNlbGVjdCgpOwotCi0g
ICAgICAgIHRoaXMucmVzZXRCdXR0b24udmlzaWJsZSA9IHRydWU7Ci0gICAgICAgIHRoaXMucHJv
ZmlsZURhdGFHcmlkVHJlZS5leGNsdWRlKHNlbGVjdGVkTm9kZSk7Ci0gICAgICAgIHRoaXMucmVm
cmVzaCgpOwotICAgICAgICB0aGlzLnJlZnJlc2hWaXNpYmxlRGF0YSgpOwotICAgIH0sCi0KLSAg
ICBfcmVzZXRDbGlja2VkOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMucmVz
ZXRCdXR0b24udmlzaWJsZSA9IGZhbHNlOwotICAgICAgICB0aGlzLnByb2ZpbGVEYXRhR3JpZFRy
ZWUucmVzdG9yZSgpOwotICAgICAgICB0aGlzLl9saW5raWZpZXIucmVzZXQoKTsKLSAgICAgICAg
dGhpcy5yZWZyZXNoKCk7Ci0gICAgICAgIHRoaXMucmVmcmVzaFZpc2libGVEYXRhKCk7Ci0gICAg
fSwKLQotICAgIF9kYXRhR3JpZE5vZGVTZWxlY3RlZDogZnVuY3Rpb24obm9kZSkKLSAgICB7Ci0g
ICAgICAgIHRoaXMuZm9jdXNCdXR0b24uZGlzYWJsZWQgPSBmYWxzZTsKLSAgICAgICAgdGhpcy5l
eGNsdWRlQnV0dG9uLmRpc2FibGVkID0gZmFsc2U7Ci0gICAgfSwKLQotICAgIF9kYXRhR3JpZE5v
ZGVEZXNlbGVjdGVkOiBmdW5jdGlvbihub2RlKQotICAgIHsKLSAgICAgICAgdGhpcy5mb2N1c0J1
dHRvbi5kaXNhYmxlZCA9IHRydWU7Ci0gICAgICAgIHRoaXMuZXhjbHVkZUJ1dHRvbi5kaXNhYmxl
ZCA9IHRydWU7Ci0gICAgfSwKLQotICAgIF9zb3J0UHJvZmlsZTogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgdmFyIHNvcnRBc2NlbmRpbmcgPSB0aGlzLmRhdGFHcmlkLnNvcnRPcmRlciA9PT0g
ImFzY2VuZGluZyI7Ci0gICAgICAgIHZhciBzb3J0Q29sdW1uSWRlbnRpZmllciA9IHRoaXMuZGF0
YUdyaWQuc29ydENvbHVtbklkZW50aWZpZXI7Ci0gICAgICAgIHZhciBzb3J0UHJvcGVydHkgPSB7
Ci0gICAgICAgICAgICAgICAgImF2ZXJhZ2UiOiAiYXZlcmFnZVRpbWUiLAotICAgICAgICAgICAg
ICAgICJzZWxmIjogInNlbGZUaW1lIiwKLSAgICAgICAgICAgICAgICAidG90YWwiOiAidG90YWxU
aW1lIiwKLSAgICAgICAgICAgICAgICAiY2FsbHMiOiAibnVtYmVyT2ZDYWxscyIsCi0gICAgICAg
ICAgICAgICAgImZ1bmN0aW9uIjogImZ1bmN0aW9uTmFtZSIKLSAgICAgICAgICAgIH1bc29ydENv
bHVtbklkZW50aWZpZXJdOwotCi0gICAgICAgIHRoaXMucHJvZmlsZURhdGFHcmlkVHJlZS5zb3J0
KFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWRUcmVlLnByb3BlcnR5Q29tcGFyYXRvcihzb3J0
UHJvcGVydHksIHNvcnRBc2NlbmRpbmcpKTsKLQotICAgICAgICB0aGlzLnJlZnJlc2goKTsKLSAg
ICB9LAotCi0gICAgX21vdXNlRG93bkluRGF0YUdyaWQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsK
LSAgICAgICAgaWYgKGV2ZW50LmRldGFpbCA8IDIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgdmFyIGNlbGwgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhOb2Rl
TmFtZSgidGQiKTsKLSAgICAgICAgaWYgKCFjZWxsIHx8ICghY2VsbC5oYXNTdHlsZUNsYXNzKCJ0
b3RhbC1jb2x1bW4iKSAmJiAhY2VsbC5oYXNTdHlsZUNsYXNzKCJzZWxmLWNvbHVtbiIpICYmICFj
ZWxsLmhhc1N0eWxlQ2xhc3MoImF2ZXJhZ2UtY29sdW1uIikpKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIGlmIChjZWxsLmhhc1N0eWxlQ2xhc3MoInRvdGFsLWNvbHVtbiIpKQotICAg
ICAgICAgICAgdGhpcy5zaG93VG90YWxUaW1lQXNQZXJjZW50LnNldCghdGhpcy5zaG93VG90YWxU
aW1lQXNQZXJjZW50LmdldCgpKTsKLSAgICAgICAgZWxzZSBpZiAoY2VsbC5oYXNTdHlsZUNsYXNz
KCJzZWxmLWNvbHVtbiIpKQotICAgICAgICAgICAgdGhpcy5zaG93U2VsZlRpbWVBc1BlcmNlbnQu
c2V0KCF0aGlzLnNob3dTZWxmVGltZUFzUGVyY2VudC5nZXQoKSk7Ci0gICAgICAgIGVsc2UgaWYg
KGNlbGwuaGFzU3R5bGVDbGFzcygiYXZlcmFnZS1jb2x1bW4iKSkKLSAgICAgICAgICAgIHRoaXMu
c2hvd0F2ZXJhZ2VUaW1lQXNQZXJjZW50LnNldCghdGhpcy5zaG93QXZlcmFnZVRpbWVBc1BlcmNl
bnQuZ2V0KCkpOwotCi0gICAgICAgIHRoaXMucmVmcmVzaFNob3dBc1BlcmNlbnRzKCk7Ci0KLSAg
ICAgICAgZXZlbnQuY29uc3VtZSh0cnVlKTsKLSAgICB9LAotCi0gICAgX2Fzc2lnblBhcmVudHNJ
blByb2ZpbGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBoZWFkID0gdGhpcy5wcm9m
aWxlLmhlYWQ7Ci0gICAgICAgIGhlYWQucGFyZW50ID0gbnVsbDsKLSAgICAgICAgaGVhZC5oZWFk
ID0gbnVsbDsKLSAgICAgICAgdmFyIG5vZGVzVG9UcmF2ZXJzZSA9IFsgeyBwYXJlbnQ6IGhlYWQs
IGNoaWxkcmVuOiBoZWFkLmNoaWxkcmVuIH0gXTsKLSAgICAgICAgd2hpbGUgKG5vZGVzVG9UcmF2
ZXJzZS5sZW5ndGggPiAwKSB7Ci0gICAgICAgICAgICB2YXIgcGFpciA9IG5vZGVzVG9UcmF2ZXJz
ZS5zaGlmdCgpOwotICAgICAgICAgICAgdmFyIHBhcmVudCA9IHBhaXIucGFyZW50OwotICAgICAg
ICAgICAgdmFyIGNoaWxkcmVuID0gcGFpci5jaGlsZHJlbjsKLSAgICAgICAgICAgIHZhciBsZW5n
dGggPSBjaGlsZHJlbi5sZW5ndGg7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgY2hpbGRyZW5baV0uaGVhZCA9IGhlYWQ7Ci0g
ICAgICAgICAgICAgICAgY2hpbGRyZW5baV0ucGFyZW50ID0gcGFyZW50OwotICAgICAgICAgICAg
ICAgIGlmIChjaGlsZHJlbltpXS5jaGlsZHJlbi5sZW5ndGggPiAwKQotICAgICAgICAgICAgICAg
ICAgICBub2Rlc1RvVHJhdmVyc2UucHVzaCh7IHBhcmVudDogY2hpbGRyZW5baV0sIGNoaWxkcmVu
OiBjaGlsZHJlbltpXS5jaGlsZHJlbiB9KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLX0KLQotV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVWaWV3LnByb3RvdHlwZS5fX3Byb3RvX18g
PSBXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGU7Ci0KLS8qKgotICogQGNvbnN0cnVjdG9yCi0g
KiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlByb2ZpbGVUeXBlfQotICovCi1XZWJJbnNwZWN0b3Iu
Q1BVUHJvZmlsZVR5cGUgPSBmdW5jdGlvbigpCi17Ci0gICAgV2ViSW5zcGVjdG9yLlByb2ZpbGVU
eXBlLmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlLlR5cGVJZCwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJDb2xsZWN0IEphdmFTY3JpcHQgQ1BVIFByb2ZpbGUiKSk7Ci0gICAg
dGhpcy5fcmVjb3JkaW5nID0gZmFsc2U7Ci0gICAgV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBl
Lmluc3RhbmNlID0gdGhpczsKLX0KLQotV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlLlR5cGVJ
ZCA9ICJDUFUiOwotCi1XZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUucHJvdG90eXBlID0gewot
ICAgIGdldCBidXR0b25Ub29sdGlwKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9yZWNv
cmRpbmcgPyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0b3AgQ1BVIHByb2ZpbGluZy4iKSA6IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiU3RhcnQgQ1BVIHByb2ZpbGluZy4iKTsKLSAgICB9LAotCi0g
ICAgLyoqCi0gICAgICogQG92ZXJyaWRlCi0gICAgICogQHJldHVybiB7Ym9vbGVhbn0KLSAgICAg
Ki8KLSAgICBidXR0b25DbGlja2VkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAodGhp
cy5fcmVjb3JkaW5nKSB7Ci0gICAgICAgICAgICB0aGlzLnN0b3BSZWNvcmRpbmdQcm9maWxlKCk7
Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IubmV0d29ya01hbmFnZXIuZW5hYmxlUmVzb3VyY2VU
cmFja2luZygpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLmRpc2FibGVSZXNvdXJjZVRy
YWNraW5nKCk7Ci0gICAgICAgICAgICB0aGlzLnN0YXJ0UmVjb3JkaW5nUHJvZmlsZSgpOwotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgZ2V0IHRyZWVJ
dGVtVGl0bGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
Q1BVIFBST0ZJTEVTIik7Ci0gICAgfSwKLQotICAgIGdldCBkZXNjcmlwdGlvbigpCi0gICAgewot
ICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDUFUgcHJvZmlsZXMgc2hvdyB3
aGVyZSB0aGUgZXhlY3V0aW9uIHRpbWUgaXMgc3BlbnQgaW4geW91ciBwYWdlJ3MgSmF2YVNjcmlw
dCBmdW5jdGlvbnMuIik7Ci0gICAgfSwKLQotICAgIGlzUmVjb3JkaW5nUHJvZmlsZTogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3JlY29yZGluZzsKLSAgICB9LAotCi0g
ICAgc3RhcnRSZWNvcmRpbmdQcm9maWxlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlz
Ll9yZWNvcmRpbmcgPSB0cnVlOwotICAgICAgICBXZWJJbnNwZWN0b3IudXNlck1ldHJpY3MuUHJv
ZmlsZXNDUFVQcm9maWxlVGFrZW4ucmVjb3JkKCk7Ci0gICAgICAgIFByb2ZpbGVyQWdlbnQuc3Rh
cnQoKTsKLSAgICB9LAotCi0gICAgc3RvcFJlY29yZGluZ1Byb2ZpbGU6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIHRoaXMuX3JlY29yZGluZyA9IGZhbHNlOwotICAgICAgICBQcm9maWxlckFn
ZW50LnN0b3AoKTsKLSAgICB9LAotCi0gICAgc2V0UmVjb3JkaW5nUHJvZmlsZTogZnVuY3Rpb24o
aXNQcm9maWxpbmcpCi0gICAgewotICAgICAgICB0aGlzLl9yZWNvcmRpbmcgPSBpc1Byb2ZpbGlu
ZzsKLSAgICB9LAotCi0gICAgY3JlYXRlU2lkZWJhclRyZWVFbGVtZW50Rm9yUHJvZmlsZTogZnVu
Y3Rpb24ocHJvZmlsZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlBy
b2ZpbGVTaWRlYmFyVHJlZUVsZW1lbnQocHJvZmlsZSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQ
cm9maWxlICVkIiksICJwcm9maWxlLXNpZGViYXItdHJlZS1pdGVtIik7Ci0gICAgfSwKLQotICAg
IGNyZWF0ZVZpZXc6IGZ1bmN0aW9uKHByb2ZpbGUpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3
IFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVmlldyhwcm9maWxlKTsKLSAgICB9LAotCi0gICAgLyoq
Ci0gICAgICogQG92ZXJyaWRlCi0gICAgICogQHBhcmFtIHtzdHJpbmc9fSB0aXRsZQotICAgICAq
IEByZXR1cm4ge1dlYkluc3BlY3Rvci5Qcm9maWxlSGVhZGVyfQotICAgICAqLwotICAgIGNyZWF0
ZVRlbXBvcmFyeVByb2ZpbGU6IGZ1bmN0aW9uKHRpdGxlKQotICAgIHsKLSAgICAgICAgdGl0bGUg
PSB0aXRsZSB8fCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY29yZGluZ1x1MjAyNiIpOwotICAg
ICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9maWxlSGVhZGVyKFdlYkluc3BlY3Rvci5D
UFVQcm9maWxlVHlwZS5UeXBlSWQsIHRpdGxlKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICog
QG92ZXJyaWRlCi0gICAgICogQHBhcmFtIHtQcm9maWxlckFnZW50LlByb2ZpbGVIZWFkZXJ9IHBy
b2ZpbGUKLSAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuUHJvZmlsZUhlYWRlcn0KLSAgICAg
Ki8KLSAgICBjcmVhdGVQcm9maWxlOiBmdW5jdGlvbihwcm9maWxlKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUHJvZmlsZUhlYWRlcihwcm9maWxlLnR5cGVJZCwgcHJv
ZmlsZS50aXRsZSwgcHJvZmlsZS51aWQpOwotICAgIH0KLX0KLQotV2ViSW5zcGVjdG9yLkNQVVBy
b2ZpbGVUeXBlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGUu
cHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9XZWJLaXQucXJjIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQu
cXJjCmluZGV4IDRjYTJjYjI2NWYwYTI2OWMwYWQ0MmQxMzA5N2JmZGYwYWRiOGUwNDAuLjk1MDBl
OGFiOTUyNWNmNDRhNzQyZjQ2M2Q3NTk4OWJlYzhkZjE0MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKQEAgLTI3LDYgKzI3LDcgQEAKICAgICA8
ZmlsZT5Db29raWVJdGVtc1ZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+Q29va2llUGFyc2VyLmpz
PC9maWxlPgogICAgIDxmaWxlPkNvb2tpZXNUYWJsZS5qczwvZmlsZT4KKyAgICA8ZmlsZT5DUFVQ
cm9maWxlVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5DU1NDb21wbGV0aW9ucy5qczwvZmlsZT4K
ICAgICA8ZmlsZT5DU1NLZXl3b3JkQ29tcGxldGlvbnMuanM8L2ZpbGU+CiAgICAgPGZpbGU+Q1NT
U2VsZWN0b3JQcm9maWxlVmlldy5qczwvZmlsZT4KQEAgLTEwNiw3ICsxMDcsNiBAQAogICAgIDxm
aWxlPlByb2ZpbGVEYXRhR3JpZFRyZWUuanM8L2ZpbGU+CiAgICAgPGZpbGU+UHJvZmlsZUxhdW5j
aGVyVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5Qcm9maWxlc1BhbmVsLmpzPC9maWxlPgotICAg
IDxmaWxlPlByb2ZpbGVWaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPlByb3BlcnRpZXNTZWN0aW9u
LmpzPC9maWxlPgogICAgIDxmaWxlPlByb3BlcnRpZXNTaWRlYmFyUGFuZS5qczwvZmlsZT4KICAg
ICA8ZmlsZT5SYXdTb3VyY2VDb2RlLmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggN2VlNzBiZDgyNzA4MjdhYTBh
MWFkZDM2ZTMwMDEzNjM3YTVmNTJmYS4uNDk0MmFiYjY5NzYxZTc0NGZiNzI0OWU0YzJhZTMxZDIw
NDE3NDYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuaHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5odG1sCkBAIC0xNjYsNyArMTY2LDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJQcm9maWxlRGF0YUdyaWRUcmVlLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJCb3R0b21VcFByb2Zp
bGVEYXRhR3JpZFRyZWUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9IlRvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlLmpzIj48L3NjcmlwdD4KLSAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJQcm9maWxlVmlldy5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQ1BVUHJvZmls
ZVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9IkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkhlYXBTbmFwc2hvdC5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iSGVhcFNuYXBzaG90UHJveHkuanMi
Pjwvc2NyaXB0Pgo=
</data>
<flag name="review"
          id="148498"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="148501"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
      

    </bug>

</bugzilla>