<?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>110086</bug_id>
          
          <creation_ts>2013-02-18 01:12:44 -0800</creation_ts>
          <short_desc>Web Inspector: Extract FileSystemUtils from FileSystemProjectDelegate as IsolatedFileSystem class.</short_desc>
          <delta_ts>2013-02-18 04:58:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>1</everconfirmed>
          <reporter name="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Vsevolod Vlasov">vsevik</assigned_to>
          <cc>apavlov</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>835205</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-02-18 01:12:44 -0800</bug_when>
    <thetext>This is needed so that we can mock it for tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835219</commentid>
    <comment_count>1</comment_count>
      <attachid>188819</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-02-18 01:27:39 -0800</bug_when>
    <thetext>Created attachment 188819
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835260</commentid>
    <comment_count>2</comment_count>
      <attachid>188819</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-02-18 02:27:35 -0800</bug_when>
    <thetext>Comment on attachment 188819
Patch

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

&gt; Source/WebCore/inspector/front-end/WebKit.qrc:108
&gt;      &lt;file&gt;IsolatedFileSystemModel.js&lt;/file&gt;

Please rename to IsolatedFileSystemManager</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835357</commentid>
    <comment_count>3</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-02-18 04:58:00 -0800</bug_when>
    <thetext>Committed r143196: &lt;http://trac.webkit.org/changeset/143196&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188819</attachid>
            <date>2013-02-18 01:27:39 -0800</date>
            <delta_ts>2013-02-18 02:27:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110086-20130218132402.patch</filename>
            <type>text/plain</type>
            <size>27171</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWQ0MmViMDBkMTZiMWE1
NzlkZGNlOWMwY2UxNjhlM2RhZTY4ZmM2MC4uZjhiMjVlNGExMTg0MzA3MmMxMTQ2MDFmNTJiYzUy
ZWE2YTk3M2NiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUxIEBACiAyMDEzLTAyLTE4ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEV4dHJhY3QgRmlsZVN5c3RlbVV0aWxzIGZyb20gRmlsZVN5c3RlbVByb2plY3REZWxlZ2F0
ZSBhcyBJc29sYXRlZEZpbGVTeXN0ZW0gY2xhc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAwODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBFeHRyYWN0ZWQgSXNvbGF0ZWRGaWxlU3lzdGVtIGNsYXNz
IHRoYXQgY291bGQgYmUgbW9ja2VkIGZvciB0ZXN0cyBub3cuCisKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAg
ICogaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvRmlsZVN5c3RlbVByb2plY3REZWxlZ2F0ZS5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtUHJvamVjdERlbGVnYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5G
aWxlU3lzdGVtUHJvamVjdERlbGVnYXRlLnByb3RvdHlwZS5pZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbVByb2plY3REZWxlZ2F0ZS5wcm90b3R5cGUuZGlzcGxheU5hbWUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Qcm9qZWN0RGVsZWdhdGUucHJvdG90eXBl
LnNldEZpbGVDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUHJvamVj
dERlbGVnYXRlLnByb3RvdHlwZS5fcG9wdWxhdGUuZmlsZXNMb2FkZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1Qcm9qZWN0RGVsZWdhdGUucHJvdG90eXBlLl9wb3B1bGF0ZSk6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Jc29sYXRlZEZpbGVTeXN0ZW0uanM6IEFk
ZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLklzb2xhdGVkRmlsZVN5c3RlbSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlU3lzdGVtLmVycm9yTWVzc2FnZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlU3lzdGVtLnByb3RvdHlwZS5pZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlU3lzdGVtLnByb3RvdHlwZS5wYXRoKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVTeXN0ZW0ucHJvdG90eXBlLl9yZXF1ZXN0Rmls
ZVN5c3RlbSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlU3lzdGVtLnByb3Rv
dHlwZS5maWxlU3lzdGVtTG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Jc29sYXRlZEZp
bGVTeXN0ZW0ucHJvdG90eXBlLmlubmVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lklzb2xhdGVkRmlsZVN5c3RlbS5wcm90b3R5cGUucmVxdWVzdEZpbGVzUmVjdXJzaXZlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVTeXN0ZW0ucHJvdG90eXBlLmZpbGVFbnRy
eUxvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlU3lzdGVtLnByb3Rv
dHlwZS5maWxlTG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVTeXN0
ZW0ucHJvdG90eXBlLnJlYWRlckxvYWRFbmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLklzb2xh
dGVkRmlsZVN5c3RlbS5wcm90b3R5cGUuZXJyb3JIYW5kbGVyKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Jc29sYXRlZEZpbGVTeXN0ZW0ucHJvdG90eXBlLnJlcXVlc3RGaWxlQ29udGVudCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlU3lzdGVtLnByb3RvdHlwZS5maWxlV3Jp
dGVyQ3JlYXRlZC5maWxlVHJ1bmNhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Jc29sYXRl
ZEZpbGVTeXN0ZW0ucHJvdG90eXBlLmZpbGVXcml0ZXJDcmVhdGVkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Jc29sYXRlZEZpbGVTeXN0ZW0ucHJvdG90eXBlLndyaXRlckVuZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlU3lzdGVtLnByb3RvdHlwZS5zZXRGaWxlQ29udGVu
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlU3lzdGVtLnByb3RvdHlwZS4p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLklzb2xhdGVkRmlsZVN5c3RlbS5wcm90b3R5cGUudG9B
cnJheSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlU3lzdGVtLnByb3RvdHlw
ZS5fcmVhZERpcmVjdG9yeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlU3lz
dGVtLnByb3RvdHlwZS5fcmVxdWVzdEVudHJpZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvSXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
SXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlLl9pbm5lckFkZEZpbGVTeXN0ZW0pOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sOgorCisyMDEzLTAyLTE4ICBWc2V2b2xvZCBW
bGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJl
bW92ZSB1bnVzZWQgX2ZpbGVzIGZpZWxkIGluIEZpbGVTeXN0ZW1Qcm9qZWN0RGVsZWdhdGUKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDA4MgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKaW5kZXggNmQyOGExYzJkYTg0M2E3OGQ0YjM1MTcyMDE5NDRmY2ViYjlmYjhi
OC4uM2FiYTE1NDgxYjRmMzE1MTZjMDRhMWE3ZjQ3OTZmOTA0NWZhNTlmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQpAQCAtNTIzMiw2ICs1MjMyLDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL0luc3BlY3RvckZyb250ZW5kSG9zdFN0dWIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvSW5zcGVjdG9yVmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQv
SXNvbGF0ZWRGaWxlU3lzdGVtLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5k
L0lzb2xhdGVkRmlsZVN5c3RlbU1vZGVsLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL0phdmFTY3JpcHRGb3JtYXR0ZXIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9m
cm9udC1lbmQvanNkaWZmbGliLmpzJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKaW5kZXggMDk3NzBlMWE5YzM4N2VmNjU0ODFiYjZiNmM3ZjdhYTI2MzQ4
MmNjMC4uMGM0NzJjZWEzNDQyZWNhNDE5MzBlNTdiYTZmMjEwNTc4NTVjMGMzMiAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTc3NDQ2LDYgKzc3
NDQ2LDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXElzb2xhdGVkRmlsZVN5c3RlbS5qcyIKKwkJCQkJ
PgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rv
clxmcm9udC1lbmRcSXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwuanMiCiAJCQkJCT4KIAkJCQk8L0Zp
bGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1l
bmQucHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkKaW5k
ZXggYjY4NTM4YmNlZWYzMzQ3NDRhYzY0MmJjODhlYmM2ZDBkMzA5MGUzMC4uMjQwNDliYjJlZTgx
NWM3MTNjMDA1YmM2MzRjNDJhNmYwODQ2OTg5YiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9jb21waWxlLWZyb250LWVuZC5weQpAQCAtODUsNiArODUsNyBAQCBtb2R1bGVzID0gWwog
ICAgICAgICAgICAgIkluZGV4ZWREQk1vZGVsLmpzIiwKICAgICAgICAgICAgICJJbnNwZWN0b3JC
YWNrZW5kLmpzIiwKICAgICAgICAgICAgICJJc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbC5qcyIsCisg
ICAgICAgICAgICAiSXNvbGF0ZWRGaWxlU3lzdGVtLmpzIiwKICAgICAgICAgICAgICJMaW5raWZp
ZXIuanMiLAogICAgICAgICAgICAgIk5ldHdvcmtMb2cuanMiLAogICAgICAgICAgICAgIk5ldHdv
cmtVSVNvdXJjZUNvZGVQcm92aWRlci5qcyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Qcm9qZWN0RGVsZWdhdGUuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Qcm9qZWN0RGVsZWdhdGUuanMK
aW5kZXggYjQ0NTgwODcxYjc2YTRhMDRjM2Y5NjY0ZTY4MTcyMzEyNDQxNzhhYy4uOGE4NDIxNWE3
NmQ1MmY5OTAyYTA4MTRjMjBhOTlkNGMxNDFhYmM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtUHJvamVjdERlbGVnYXRlLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVByb2plY3REZWxl
Z2F0ZS5qcwpAQCAtMzIsMTUgKzMyLDExIEBACiAgKiBAY29uc3RydWN0b3IKICAqIEBpbXBsZW1l
bnRzIHtXZWJJbnNwZWN0b3IuUHJvamVjdERlbGVnYXRlfQogICogQGV4dGVuZHMge1dlYkluc3Bl
Y3Rvci5PYmplY3R9Ci0gKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVTeXN0ZW1N
b2RlbH0gaXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwKLSAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlU3lz
dGVtSWQKLSAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlU3lzdGVtUGF0aAorICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuSXNvbGF0ZWRGaWxlU3lzdGVtfSBpc29sYXRlZEZpbGVTeXN0ZW0KICAqLwotV2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1Qcm9qZWN0RGVsZWdhdGUgPSBmdW5jdGlvbihpc29sYXRlZEZp
bGVTeXN0ZW1Nb2RlbCwgZmlsZVN5c3RlbUlkLCBmaWxlU3lzdGVtUGF0aCkKK1dlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtUHJvamVjdERlbGVnYXRlID0gZnVuY3Rpb24oaXNvbGF0ZWRGaWxlU3lzdGVt
KQogewotICAgIHRoaXMuX2lzb2xhdGVkRmlsZVN5c3RlbU1vZGVsID0gaXNvbGF0ZWRGaWxlU3lz
dGVtTW9kZWw7Ci0gICAgdGhpcy5fZmlsZVN5c3RlbUlkID0gZmlsZVN5c3RlbUlkOwotICAgIHRo
aXMuX2ZpbGVTeXN0ZW1QYXRoID0gZmlsZVN5c3RlbVBhdGg7CisgICAgdGhpcy5fZmlsZVN5c3Rl
bSA9IGlzb2xhdGVkRmlsZVN5c3RlbTsKICAgICB0aGlzLl9wb3B1bGF0ZSgpOwogfQogCkBAIC01
Miw3ICs0OCw3IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUHJvamVjdERlbGVnYXRlLnByb3Rv
dHlwZSA9IHsKICAgICAgKi8KICAgICBpZDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMuX2ZpbGVTeXN0ZW1JZDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVTeXN0ZW0u
aWQoKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC02OCw3ICs2NCw3IEBAIFdlYkluc3BlY3Rvci5G
aWxlU3lzdGVtUHJvamVjdERlbGVnYXRlLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBkaXNw
bGF5TmFtZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVTeXN0
ZW1QYXRoLnN1YnN0cih0aGlzLl9maWxlU3lzdGVtUGF0aC5sYXN0SW5kZXhPZigiLyIpICsgMSk7
CisgICAgICAgIHJldHVybiB0aGlzLl9maWxlU3lzdGVtLnBhdGgoKS5zdWJzdHIodGhpcy5fZmls
ZVN5c3RlbS5wYXRoKCkubGFzdEluZGV4T2YoIi8iKSArIDEpOwogICAgIH0sCiAKICAgICAvKioK
QEAgLTg3LDcgKzgzLDcgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Qcm9qZWN0RGVsZWdhdGUu
cHJvdG90eXBlID0gewogICAgIHJlcXVlc3RGaWxlQ29udGVudDogZnVuY3Rpb24odXJpLCBjYWxs
YmFjaykKICAgICB7CiAgICAgICAgIHZhciBmaWxlUGF0aCA9IHRoaXMuX2ZpbGVQYXRoRm9yVVJJ
KHVyaSk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMucmVxdWVzdEZpbGVD
b250ZW50KHRoaXMuX2lzb2xhdGVkRmlsZVN5c3RlbU1vZGVsLCB0aGlzLl9maWxlU3lzdGVtUGF0
aCwgZmlsZVBhdGgsIGlubmVyQ2FsbGJhY2suYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2Zp
bGVTeXN0ZW0ucmVxdWVzdEZpbGVDb250ZW50KGZpbGVQYXRoLCBpbm5lckNhbGxiYWNrLmJpbmQo
dGhpcykpOwogICAgICAgICAKICAgICAgICAgLyoqCiAgICAgICAgICAqIEBwYXJhbSB7P3N0cmlu
Z30gY29udGVudApAQCAtMTA3LDcgKzEwMyw3IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUHJv
amVjdERlbGVnYXRlLnByb3RvdHlwZSA9IHsKICAgICBzZXRGaWxlQ29udGVudDogZnVuY3Rpb24o
dXJpLCBuZXdDb250ZW50LCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIHZhciBmaWxlUGF0aCA9
IHRoaXMuX2ZpbGVQYXRoRm9yVVJJKHVyaSk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5GaWxlU3lz
dGVtVXRpbHMuc2V0RmlsZUNvbnRlbnQodGhpcy5faXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwsIHRo
aXMuX2ZpbGVTeXN0ZW1QYXRoLCBmaWxlUGF0aCwgbmV3Q29udGVudCwgY2FsbGJhY2suYmluZCh0
aGlzLCAiIikpOworICAgICAgICB0aGlzLl9maWxlU3lzdGVtLnNldEZpbGVDb250ZW50KGZpbGVQ
YXRoLCBuZXdDb250ZW50LCBjYWxsYmFjay5iaW5kKHRoaXMsICIiKSk7CiAgICAgfSwKIAogICAg
IC8qKgpAQCAtMTU5LDcgKzE1NSw3IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUHJvamVjdERl
bGVnYXRlLnByb3RvdHlwZSA9IHsKIAogICAgIF9wb3B1bGF0ZTogZnVuY3Rpb24oKQogICAgIHsK
LSAgICAgICAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5yZXF1ZXN0RmlsZXNSZWN1cnNp
dmUodGhpcy5faXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwsIHRoaXMuX2ZpbGVTeXN0ZW1QYXRoLCAi
IiwgZmlsZXNMb2FkZWQuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW0ucmVx
dWVzdEZpbGVzUmVjdXJzaXZlKCIiLCBmaWxlc0xvYWRlZC5iaW5kKHRoaXMpKTsKIAogICAgICAg
ICBmdW5jdGlvbiBmaWxlc0xvYWRlZChmaWxlcykKICAgICAgICAgewpAQCAtMTY3LDcgKzE2Myw3
IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUHJvamVjdERlbGVnYXRlLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgICAgICB2YXIgdXJpID0gdGhpcy5pZCgpICsgZmlsZXNbaV07CiAgICAgICAg
ICAgICAgICAgdmFyIGNvbnRlbnRUeXBlID0gdGhpcy5fY29udGVudFR5cGVGb3JQYXRoKGZpbGVz
W2ldKTsKICAgICAgICAgICAgICAgICB2YXIgdXJsID0gV2ViSW5zcGVjdG9yLmZpbGVNYXBwaW5n
LnVybEZvclVSSSh1cmkpOwotICAgICAgICAgICAgICAgIHZhciBmaWxlRGVzY3JpcHRvciA9IG5l
dyBXZWJJbnNwZWN0b3IuRmlsZURlc2NyaXB0b3IodXJpLCAiZmlsZTovLyIgKyB0aGlzLl9maWxl
U3lzdGVtUGF0aCArIGZpbGVzW2ldLCB1cmwsIGNvbnRlbnRUeXBlLCB0cnVlKTsKKyAgICAgICAg
ICAgICAgICB2YXIgZmlsZURlc2NyaXB0b3IgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVEZXNjcmlw
dG9yKHVyaSwgImZpbGU6Ly8iICsgdGhpcy5fZmlsZVN5c3RlbS5wYXRoKCkgKyBmaWxlc1tpXSwg
dXJsLCBjb250ZW50VHlwZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgdGhpcy5fYWRkRmlsZShm
aWxlRGVzY3JpcHRvcik7CiAgICAgICAgICAgICB9IAogICAgICAgICB9CkBAIC0yMDEsMjU3ICsx
OTcsMyBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVByb2plY3REZWxlZ2F0ZS5wcm90b3R5cGUg
PSB7CiAgKiBAdHlwZSB7P1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtUHJvamVjdERlbGVnYXRlfQog
ICovCiBXZWJJbnNwZWN0b3IuZmlsZVN5c3RlbVByb2plY3REZWxlZ2F0ZSA9IG51bGw7Ci0KLS8q
KgotICogQGNvbnN0cnVjdG9yCi0gKi8KLVdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMgPSBm
dW5jdGlvbigpCi17Ci19Ci0KLVdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMuZXJyb3JNZXNz
YWdlID0gZnVuY3Rpb24oZXJyb3IpCi17Ci0gICAgdmFyIG1zZzsKLSAgICBzd2l0Y2ggKGVycm9y
LmNvZGUpIHsKLSAgICBjYXNlIEZpbGVFcnJvci5RVU9UQV9FWENFRURFRF9FUlI6Ci0gICAgICAg
IG1zZyA9ICJRVU9UQV9FWENFRURFRF9FUlIiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZp
bGVFcnJvci5OT1RfRk9VTkRfRVJSOgotICAgICAgICBtc2cgPSAiTk9UX0ZPVU5EX0VSUiI7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmlsZUVycm9yLlNFQ1VSSVRZX0VSUjoKLSAgICAgICAg
bXNnID0gIlNFQ1VSSVRZX0VSUiI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmlsZUVycm9y
LklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjoKLSAgICAgICAgbXNnID0gIklOVkFMSURfTU9ESUZJ
Q0FUSU9OX0VSUiI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmlsZUVycm9yLklOVkFMSURf
U1RBVEVfRVJSOgotICAgICAgICBtc2cgPSAiSU5WQUxJRF9TVEFURV9FUlIiOwotICAgICAgICBi
cmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBtc2cgPSAiVW5rbm93biBFcnJvciI7Ci0gICAg
ICAgIGJyZWFrOwotICAgIH07Ci0KLSAgICByZXR1cm4gIkZpbGUgc3lzdGVtIGVycm9yOiAiICsg
bXNnOwotfQotCi0vKioKLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLklzb2xhdGVkRmlsZVN5c3Rl
bU1vZGVsfSBpc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbAotICogQHBhcmFtIHtzdHJpbmd9IGZpbGVT
eXN0ZW1QYXRoCi0gKiBAcGFyYW0ge2Z1bmN0aW9uKERPTUZpbGVTeXN0ZW0pfSBjYWxsYmFjawot
ICovCi1XZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVV0aWxzLnJlcXVlc3RGaWxlU3lzdGVtID0gZnVu
Y3Rpb24oaXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwsIGZpbGVTeXN0ZW1QYXRoLCBjYWxsYmFjaykK
LXsKLSAgICBpc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbC5yZXF1ZXN0RE9NRmlsZVN5c3RlbShmaWxl
U3lzdGVtUGF0aCwgY2FsbGJhY2spOwotfQotCi0vKioKLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
Lklzb2xhdGVkRmlsZVN5c3RlbU1vZGVsfSBpc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbAotICogQHBh
cmFtIHtzdHJpbmd9IGZpbGVTeXN0ZW1QYXRoCi0gKiBAcGFyYW0ge3N0cmluZ30gcGF0aAotICog
QHBhcmFtIHtmdW5jdGlvbihBcnJheS48c3RyaW5nPil9IGNhbGxiYWNrCi0gKi8KLVdlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtVXRpbHMucmVxdWVzdEZpbGVzUmVjdXJzaXZlID0gZnVuY3Rpb24oaXNv
bGF0ZWRGaWxlU3lzdGVtTW9kZWwsIGZpbGVTeXN0ZW1QYXRoLCBwYXRoLCBjYWxsYmFjaykKLXsK
LSAgICBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVV0aWxzLnJlcXVlc3RGaWxlU3lzdGVtKGlzb2xh
dGVkRmlsZVN5c3RlbU1vZGVsLCBmaWxlU3lzdGVtUGF0aCwgZmlsZVN5c3RlbUxvYWRlZCk7Ci0K
LSAgICB2YXIgZmlsZVN5c3RlbTsKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0RPTUZpbGVTeXN0
ZW19IGZzCi0gICAgICovCi0gICAgZnVuY3Rpb24gZmlsZVN5c3RlbUxvYWRlZChmcykKLSAgICB7
Ci0gICAgICAgIGZpbGVTeXN0ZW0gPSBmczsKLSAgICAgICAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1VdGlscy5fcmVxdWVzdEVudHJpZXMoZmlsZVN5c3RlbSwgcGF0aCwgaW5uZXJDYWxsYmFjayk7
Ci0gICAgfQotCi0gICAgdmFyIHJlc3VsdCA9IFtdOwotICAgIHZhciBjYWxsYmFja3NMZWZ0ID0g
MTsKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0FycmF5LjxGaWxlRW50cnk+fSBlbnRyaWVzCi0g
ICAgICovCi0gICAgZnVuY3Rpb24gaW5uZXJDYWxsYmFjayhlbnRyaWVzKQotICAgIHsKLSAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAg
ICB2YXIgZW50cnkgPSBlbnRyaWVzW2ldOwotICAgICAgICAgICAgaWYgKCFlbnRyeS5pc0RpcmVj
dG9yeSkKLSAgICAgICAgICAgICAgICByZXN1bHQucHVzaChlbnRyeS5mdWxsUGF0aCk7Ci0gICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBjYWxsYmFja3NMZWZ0Kys7Ci0gICAgICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5fcmVxdWVzdEVudHJpZXMoZmls
ZVN5c3RlbSwgZW50cnkuZnVsbFBhdGgsIGlubmVyQ2FsbGJhY2spOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgICAgIGlmICghLS1jYWxsYmFja3NMZWZ0KQotICAgICAgICAgICAgY2Fs
bGJhY2socmVzdWx0KTsKLSAgICB9Ci19Ci0KLS8qKgotICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
SXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWx9IGlzb2xhdGVkRmlsZVN5c3RlbU1vZGVsCi0gKiBAcGFy
YW0ge3N0cmluZ30gZmlsZVN5c3RlbVBhdGgKLSAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoCi0gKiBA
cGFyYW0ge2Z1bmN0aW9uKD9zdHJpbmcpfSBjYWxsYmFjawotICovCi1XZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbVV0aWxzLnJlcXVlc3RGaWxlQ29udGVudCA9IGZ1bmN0aW9uKGlzb2xhdGVkRmlsZVN5
c3RlbU1vZGVsLCBmaWxlU3lzdGVtUGF0aCwgcGF0aCwgY2FsbGJhY2spCi17Ci0gICAgV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5yZXF1ZXN0RmlsZVN5c3RlbShpc29sYXRlZEZpbGVTeXN0
ZW1Nb2RlbCwgZmlsZVN5c3RlbVBhdGgsIGZpbGVTeXN0ZW1Mb2FkZWQpOwotCi0gICAgdmFyIGZp
bGVTeXN0ZW07Ci0gICAgCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtET01GaWxlU3lzdGVtfSBm
cwotICAgICAqLwotICAgIGZ1bmN0aW9uIGZpbGVTeXN0ZW1Mb2FkZWQoZnMpCi0gICAgewotICAg
ICAgICBmcy5yb290LmdldEZpbGUocGF0aCwgbnVsbCwgZmlsZUVudHJ5TG9hZGVkLCBlcnJvckhh
bmRsZXIpOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7RmlsZUVudHJ5fSBlbnRy
eQotICAgICAqLwotICAgIGZ1bmN0aW9uIGZpbGVFbnRyeUxvYWRlZChlbnRyeSkKLSAgICB7Ci0g
ICAgICAgIGVudHJ5LmZpbGUoZmlsZUxvYWRlZCwgZXJyb3JIYW5kbGVyKTsKLSAgICB9Ci0KLSAg
ICAvKioKLSAgICAgKiBAcGFyYW0geyFCbG9ifSBmaWxlCi0gICAgICovCi0gICAgZnVuY3Rpb24g
ZmlsZUxvYWRlZChmaWxlKQotICAgIHsKLSAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVh
ZGVyKCk7Ci0gICAgICAgIHJlYWRlci5vbmxvYWRlbmQgPSByZWFkZXJMb2FkRW5kOwotICAgICAg
ICByZWFkZXIucmVhZEFzVGV4dChmaWxlKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBAdGhp
cyB7RmlsZVJlYWRlcn0KLSAgICAgKi8KLSAgICBmdW5jdGlvbiByZWFkZXJMb2FkRW5kKCkKLSAg
ICB7Ci0gICAgICAgIGNhbGxiYWNrKC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAodGhpcy5yZXN1bHQp
KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBlcnJvckhhbmRsZXIoZXJyb3IpCi0gICAgewotICAg
ICAgICB2YXIgZXJyb3JNZXNzYWdlID0gV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1VdGlscy5lcnJv
ck1lc3NhZ2UoZXJyb3IpOwotICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yTWVzc2FnZSArICIg
d2hlbiBnZXR0aW5nIGNvbnRlbnQgZm9yIGZpbGUgJyIgKyAoZmlsZVN5c3RlbVBhdGggKyAiLyIg
KyBwYXRoKSArICInIik7Ci0gICAgICAgIGNhbGxiYWNrKG51bGwpOwotICAgIH0KLX0KLQotLyoq
Ci0gKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbH0gaXNvbGF0
ZWRGaWxlU3lzdGVtTW9kZWwKLSAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlU3lzdGVtUGF0aAotICog
QHBhcmFtIHtzdHJpbmd9IHBhdGgKLSAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50Ci0gKiBAcGFy
YW0ge2Z1bmN0aW9uKCl9IGNhbGxiYWNrCi0gKi8KLVdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRp
bHMuc2V0RmlsZUNvbnRlbnQgPSBmdW5jdGlvbihpc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbCwgZmls
ZVN5c3RlbVBhdGgsIHBhdGgsIGNvbnRlbnQsIGNhbGxiYWNrKQotewotICAgIFdlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtVXRpbHMucmVxdWVzdEZpbGVTeXN0ZW0oaXNvbGF0ZWRGaWxlU3lzdGVtTW9k
ZWwsIGZpbGVTeXN0ZW1QYXRoLCBmaWxlU3lzdGVtTG9hZGVkKTsKLQotICAgIHZhciBmaWxlU3lz
dGVtOwotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtET01GaWxlU3lzdGVtfSBmcwotICAgICAq
LwotICAgIGZ1bmN0aW9uIGZpbGVTeXN0ZW1Mb2FkZWQoZnMpCi0gICAgewotICAgICAgICBmcy5y
b290LmdldEZpbGUocGF0aCwgbnVsbCwgZmlsZUVudHJ5TG9hZGVkLCBlcnJvckhhbmRsZXIpOwot
ICAgIH0KLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7RmlsZUVudHJ5fSBlbnRyeQotICAgICAq
LwotICAgIGZ1bmN0aW9uIGZpbGVFbnRyeUxvYWRlZChlbnRyeSkKLSAgICB7Ci0gICAgICAgIGVu
dHJ5LmNyZWF0ZVdyaXRlcihmaWxlV3JpdGVyQ3JlYXRlZCwgZXJyb3JIYW5kbGVyKTsKLSAgICB9
Ci0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0ZpbGVXcml0ZXJ9IGZpbGVXcml0ZXIKLSAgICAg
Ki8KLSAgICBmdW5jdGlvbiBmaWxlV3JpdGVyQ3JlYXRlZChmaWxlV3JpdGVyKQotICAgIHsKLSAg
ICAgICAgZmlsZVdyaXRlci5vbmVycm9yID0gZXJyb3JIYW5kbGVyOwotICAgICAgICBmaWxlV3Jp
dGVyLm9ud3JpdGVlbmQgPSBmaWxlVHJ1bmNhdGVkOwotICAgICAgICBmaWxlV3JpdGVyLnRydW5j
YXRlKDApOwotCi0gICAgICAgIGZ1bmN0aW9uIGZpbGVUcnVuY2F0ZWQoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBmaWxlV3JpdGVyLm9ud3JpdGVlbmQgPSB3cml0ZXJFbmQ7Ci0gICAgICAgICAg
ICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtjb250ZW50XSwgeyB0eXBlOiAidGV4dC9wbGFpbiIgfSk7
Ci0gICAgICAgICAgICBmaWxlV3JpdGVyLndyaXRlKGJsb2IpOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgZnVuY3Rpb24gd3JpdGVyRW5kKCkKLSAgICB7Ci0gICAgICAgIGNhbGxiYWNrKCk7Ci0g
ICAgfQotCi0gICAgZnVuY3Rpb24gZXJyb3JIYW5kbGVyKGVycm9yKQotICAgIHsKLSAgICAgICAg
dmFyIGVycm9yTWVzc2FnZSA9IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMuZXJyb3JNZXNz
YWdlKGVycm9yKTsKLSAgICAgICAgY29uc29sZS5lcnJvcihlcnJvck1lc3NhZ2UgKyAiIHdoZW4g
c2V0dGluZyBjb250ZW50IGZvciBmaWxlICciICsgKGZpbGVTeXN0ZW1QYXRoICsgIi8iICsgcGF0
aCkgKyAiJyIpOwotICAgICAgICBjYWxsYmFjaygpOwotICAgIH0KLX0KLQotLyoqCi0gKiBAcGFy
YW0ge0RpcmVjdG9yeUVudHJ5fSBkaXJFbnRyeQotICogQHBhcmFtIHtmdW5jdGlvbihBcnJheS48
RmlsZUVudHJ5Pil9IGNhbGxiYWNrCi0gKi8KLVdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVXRpbHMu
X3JlYWREaXJlY3RvcnkgPSBmdW5jdGlvbihkaXJFbnRyeSwgY2FsbGJhY2spCi17Ci0gICAgdmFy
IGRpclJlYWRlciA9IGRpckVudHJ5LmNyZWF0ZVJlYWRlcigpOwotICAgIHZhciBlbnRyaWVzID0g
W107Ci0KLSAgICBmdW5jdGlvbiBpbm5lckNhbGxiYWNrKHJlc3VsdHMpCi0gICAgewotICAgICAg
ICBpZiAoIXJlc3VsdHMubGVuZ3RoKQotICAgICAgICAgICAgY2FsbGJhY2soZW50cmllcy5zb3J0
KCkpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGVudHJpZXMgPSBlbnRyaWVzLmNvbmNh
dCh0b0FycmF5KHJlc3VsdHMpKTsKLSAgICAgICAgICAgIGRpclJlYWRlci5yZWFkRW50cmllcyhp
bm5lckNhbGxiYWNrLCBlcnJvckhhbmRsZXIpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZnVu
Y3Rpb24gdG9BcnJheShsaXN0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlw
ZS5zbGljZS5jYWxsKGxpc3QgfHwgW10sIDApOwotICAgIH0gICAgCi0KLSAgICBkaXJSZWFkZXIu
cmVhZEVudHJpZXMoaW5uZXJDYWxsYmFjaywgZXJyb3JIYW5kbGVyKTsKLQotICAgIGZ1bmN0aW9u
IGVycm9ySGFuZGxlcihlcnJvcikKLSAgICB7Ci0gICAgICAgIHZhciBlcnJvck1lc3NhZ2UgPSBX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVV0aWxzLmVycm9yTWVzc2FnZShlcnJvcik7Ci0gICAgICAg
IGNvbnNvbGUuZXJyb3IoZXJyb3JNZXNzYWdlICsgIiB3aGVuIHJlYWRpbmcgZGlyZWN0b3J5ICci
ICsgZGlyRW50cnkuZnVsbFBhdGggKyAiJyIpOwotICAgICAgICBjYWxsYmFjayhbXSk7Ci0gICAg
fQotfQotCi0vKioKLSAqIEBwYXJhbSB7RE9NRmlsZVN5c3RlbX0gZmlsZVN5c3RlbQotICogQHBh
cmFtIHtzdHJpbmd9IHBhdGgKLSAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJyYXkuPEZpbGVFbnRyeT4p
fSBjYWxsYmFjawotICovCi1XZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVV0aWxzLl9yZXF1ZXN0RW50
cmllcyA9IGZ1bmN0aW9uKGZpbGVTeXN0ZW0sIHBhdGgsIGNhbGxiYWNrKQotewotICAgIGZpbGVT
eXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkocGF0aCwgbnVsbCwgaW5uZXJDYWxsYmFjaywgZXJyb3JI
YW5kbGVyKTsKLQotICAgIGZ1bmN0aW9uIGlubmVyQ2FsbGJhY2soZGlyRW50cnkpCi0gICAgewot
ICAgICAgICBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVV0aWxzLl9yZWFkRGlyZWN0b3J5KGRpckVu
dHJ5LCBjYWxsYmFjaykKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBlcnJvckhhbmRsZXIoZXJyb3Ip
Ci0gICAgewotICAgICAgICB2YXIgZXJyb3JNZXNzYWdlID0gV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1VdGlscy5lcnJvck1lc3NhZ2UoZXJyb3IpOwotICAgICAgICBjb25zb2xlLmVycm9yKGVycm9y
TWVzc2FnZSArICIgd2hlbiByZXF1ZXN0aW5nIGVudHJ5ICciICsgcGF0aCArICInIik7Ci0gICAg
ICAgIGNhbGxiYWNrKFtdKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0lzb2xhdGVkRmlsZVN5c3RlbS5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvSXNvbGF0ZWRGaWxlU3lzdGVtLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJh
M2FlODE4NDg4N2VjMTk4ZDdlMTkwMzNkNTBhYjU3YTNlYmQ4NzkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0lzb2xhdGVkRmlsZVN5c3RlbS5q
cwpAQCAtMCwwICsxLDI5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5Jc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbH0gbW9kZWwKKyAqIEBwYXJhbSB7c3RyaW5n
fSBpZAorICogQHBhcmFtIHtzdHJpbmd9IHBhdGgKKyAqLworV2ViSW5zcGVjdG9yLklzb2xhdGVk
RmlsZVN5c3RlbSA9IGZ1bmN0aW9uKG1vZGVsLCBpZCwgcGF0aCkKK3sKKyAgICB0aGlzLl9tb2Rl
bCA9IG1vZGVsOworICAgIHRoaXMuX2lkID0gaWQ7CisgICAgdGhpcy5fcGF0aCA9IHBhdGg7Cit9
CisKK1dlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVTeXN0ZW0uZXJyb3JNZXNzYWdlID0gZnVuY3Rp
b24oZXJyb3IpCit7CisgICAgdmFyIG1zZzsKKyAgICBzd2l0Y2ggKGVycm9yLmNvZGUpIHsKKyAg
ICBjYXNlIEZpbGVFcnJvci5RVU9UQV9FWENFRURFRF9FUlI6CisgICAgICAgIG1zZyA9ICJRVU9U
QV9FWENFRURFRF9FUlIiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZpbGVFcnJvci5OT1Rf
Rk9VTkRfRVJSOgorICAgICAgICBtc2cgPSAiTk9UX0ZPVU5EX0VSUiI7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgRmlsZUVycm9yLlNFQ1VSSVRZX0VSUjoKKyAgICAgICAgbXNnID0gIlNFQ1VS
SVRZX0VSUiI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsZUVycm9yLklOVkFMSURfTU9E
SUZJQ0FUSU9OX0VSUjoKKyAgICAgICAgbXNnID0gIklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUiI7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsZUVycm9yLklOVkFMSURfU1RBVEVfRVJSOgor
ICAgICAgICBtc2cgPSAiSU5WQUxJRF9TVEFURV9FUlIiOworICAgICAgICBicmVhazsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBtc2cgPSAiVW5rbm93biBFcnJvciI7CisgICAgICAgIGJyZWFrOwor
ICAgIH07CisKKyAgICByZXR1cm4gIkZpbGUgc3lzdGVtIGVycm9yOiAiICsgbXNnOworfQorCitX
ZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlU3lzdGVtLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAg
ICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgaWQ6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl9pZDsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJl
dHVybiB7c3RyaW5nfQorICAgICAqLworICAgIHBhdGg6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl9wYXRoOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e2Z1bmN0aW9uKERPTUZpbGVTeXN0ZW0pfSBjYWxsYmFjaworICAgICAqLworICAgIF9yZXF1ZXN0
RmlsZVN5c3RlbTogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgeworICAgICAgICB0aGlzLl9tb2Rl
bC5yZXF1ZXN0RE9NRmlsZVN5c3RlbSh0aGlzLl9wYXRoLCBjYWxsYmFjayk7CisgICAgfSwKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoCisgICAgICogQHBhcmFtIHtmdW5j
dGlvbihBcnJheS48c3RyaW5nPil9IGNhbGxiYWNrCisgICAgICovCisgICAgcmVxdWVzdEZpbGVz
UmVjdXJzaXZlOiBmdW5jdGlvbihwYXRoLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHRoaXMu
X3JlcXVlc3RGaWxlU3lzdGVtKGZpbGVTeXN0ZW1Mb2FkZWQuYmluZCh0aGlzKSk7CisKKyAgICAg
ICAgdmFyIGRvbUZpbGVTeXN0ZW07CisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0ge0RP
TUZpbGVTeXN0ZW19IGZzCisgICAgICAgICAqLworICAgICAgICBmdW5jdGlvbiBmaWxlU3lzdGVt
TG9hZGVkKGZzKQorICAgICAgICB7CisgICAgICAgICAgICBkb21GaWxlU3lzdGVtID0gZnM7Cisg
ICAgICAgICAgICB0aGlzLl9yZXF1ZXN0RW50cmllcyhkb21GaWxlU3lzdGVtLCBwYXRoLCBpbm5l
ckNhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHJlc3VsdCA9
IFtdOworICAgICAgICB2YXIgY2FsbGJhY2tzTGVmdCA9IDE7CisgICAgICAgIC8qKgorICAgICAg
ICAgKiBAcGFyYW0ge0FycmF5LjxGaWxlRW50cnk+fSBlbnRyaWVzCisgICAgICAgICAqLworICAg
ICAgICBmdW5jdGlvbiBpbm5lckNhbGxiYWNrKGVudHJpZXMpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7ICsraSkgeworICAgICAgICAg
ICAgICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaV07CisgICAgICAgICAgICAgICAgaWYgKCFlbnRy
eS5pc0RpcmVjdG9yeSkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZW50cnkuZnVs
bFBhdGgpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBjYWxs
YmFja3NMZWZ0Kys7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RFbnRyaWVzKGRv
bUZpbGVTeXN0ZW0sIGVudHJ5LmZ1bGxQYXRoLCBpbm5lckNhbGxiYWNrLmJpbmQodGhpcykpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghLS1jYWxs
YmFja3NMZWZ0KQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7CisgICAgICAgIH0K
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGgKKyAgICAgKiBA
cGFyYW0ge2Z1bmN0aW9uKD9zdHJpbmcpfSBjYWxsYmFjaworICAgICAqLworICAgIHJlcXVlc3RG
aWxlQ29udGVudDogZnVuY3Rpb24ocGF0aCwgY2FsbGJhY2spCisgICAgeworICAgICAgICB0aGlz
Ll9yZXF1ZXN0RmlsZVN5c3RlbShmaWxlU3lzdGVtTG9hZGVkLmJpbmQodGhpcykpOworCisgICAg
ICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0ge0RPTUZpbGVTeXN0ZW19IGRvbUZpbGVTeXN0ZW0K
KyAgICAgICAgICovCisgICAgICAgIGZ1bmN0aW9uIGZpbGVTeXN0ZW1Mb2FkZWQoZG9tRmlsZVN5
c3RlbSkKKyAgICAgICAgeworICAgICAgICAgICAgZG9tRmlsZVN5c3RlbS5yb290LmdldEZpbGUo
cGF0aCwgbnVsbCwgZmlsZUVudHJ5TG9hZGVkLCBlcnJvckhhbmRsZXIpOworICAgICAgICB9CisK
KyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSB7RmlsZUVudHJ5fSBlbnRyeQorICAgICAg
ICAgKi8KKyAgICAgICAgZnVuY3Rpb24gZmlsZUVudHJ5TG9hZGVkKGVudHJ5KQorICAgICAgICB7
CisgICAgICAgICAgICBlbnRyeS5maWxlKGZpbGVMb2FkZWQsIGVycm9ySGFuZGxlcik7CisgICAg
ICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogQHBhcmFtIHshQmxvYn0gZmlsZQorICAg
ICAgICAgKi8KKyAgICAgICAgZnVuY3Rpb24gZmlsZUxvYWRlZChmaWxlKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKKyAgICAgICAgICAgIHJl
YWRlci5vbmxvYWRlbmQgPSByZWFkZXJMb2FkRW5kOworICAgICAgICAgICAgcmVhZGVyLnJlYWRB
c1RleHQoZmlsZSk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogQHRoaXMg
e0ZpbGVSZWFkZXJ9CisgICAgICAgICAqLworICAgICAgICBmdW5jdGlvbiByZWFkZXJMb2FkRW5k
KCkKKyAgICAgICAgeworICAgICAgICAgICAgY2FsbGJhY2soLyoqIEB0eXBlIHtzdHJpbmd9ICov
ICh0aGlzLnJlc3VsdCkpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZXJyb3JIYW5k
bGVyKGVycm9yKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgZXJyb3JNZXNzYWdlID0gV2Vi
SW5zcGVjdG9yLklzb2xhdGVkRmlsZVN5c3RlbS5lcnJvck1lc3NhZ2UoZXJyb3IpOworICAgICAg
ICAgICAgY29uc29sZS5lcnJvcihlcnJvck1lc3NhZ2UgKyAiIHdoZW4gZ2V0dGluZyBjb250ZW50
IGZvciBmaWxlICciICsgKHRoaXMuX3BhdGggKyAiLyIgKyBwYXRoKSArICInIik7CisgICAgICAg
ICAgICBjYWxsYmFjayhudWxsKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge3N0cmluZ30gcGF0aAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50Cisg
ICAgICogQHBhcmFtIHtmdW5jdGlvbigpfSBjYWxsYmFjaworICAgICAqLworICAgIHNldEZpbGVD
b250ZW50OiBmdW5jdGlvbihwYXRoLCBjb250ZW50LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAg
IHRoaXMuX3JlcXVlc3RGaWxlU3lzdGVtKGZpbGVTeXN0ZW1Mb2FkZWQpOworCisgICAgICAgIC8q
KgorICAgICAgICAgKiBAcGFyYW0ge0RPTUZpbGVTeXN0ZW19IGRvbUZpbGVTeXN0ZW0KKyAgICAg
ICAgICovCisgICAgICAgIGZ1bmN0aW9uIGZpbGVTeXN0ZW1Mb2FkZWQoZG9tRmlsZVN5c3RlbSkK
KyAgICAgICAgeworICAgICAgICAgICAgZG9tRmlsZVN5c3RlbS5yb290LmdldEZpbGUocGF0aCwg
bnVsbCwgZmlsZUVudHJ5TG9hZGVkLCBlcnJvckhhbmRsZXIpOworICAgICAgICB9CisKKyAgICAg
ICAgLyoqCisgICAgICAgICAqIEBwYXJhbSB7RmlsZUVudHJ5fSBlbnRyeQorICAgICAgICAgKi8K
KyAgICAgICAgZnVuY3Rpb24gZmlsZUVudHJ5TG9hZGVkKGVudHJ5KQorICAgICAgICB7CisgICAg
ICAgICAgICBlbnRyeS5jcmVhdGVXcml0ZXIoZmlsZVdyaXRlckNyZWF0ZWQsIGVycm9ySGFuZGxl
cik7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogQHBhcmFtIHtGaWxlV3Jp
dGVyfSBmaWxlV3JpdGVyCisgICAgICAgICAqLworICAgICAgICBmdW5jdGlvbiBmaWxlV3JpdGVy
Q3JlYXRlZChmaWxlV3JpdGVyKQorICAgICAgICB7CisgICAgICAgICAgICBmaWxlV3JpdGVyLm9u
ZXJyb3IgPSBlcnJvckhhbmRsZXI7CisgICAgICAgICAgICBmaWxlV3JpdGVyLm9ud3JpdGVlbmQg
PSBmaWxlVHJ1bmNhdGVkOworICAgICAgICAgICAgZmlsZVdyaXRlci50cnVuY2F0ZSgwKTsKKwor
ICAgICAgICAgICAgZnVuY3Rpb24gZmlsZVRydW5jYXRlZCgpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgZmlsZVdyaXRlci5vbndyaXRlZW5kID0gd3JpdGVyRW5kOworICAgICAgICAg
ICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW2NvbnRlbnRdLCB7IHR5cGU6ICJ0ZXh0L3BsYWlu
IiB9KTsKKyAgICAgICAgICAgICAgICBmaWxlV3JpdGVyLndyaXRlKGJsb2IpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gd3JpdGVyRW5kKCkKKyAgICAgICAg
eworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGVycm9ySGFuZGxlcihlcnJvcikKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGVycm9yTWVz
c2FnZSA9IFdlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVTeXN0ZW0uZXJyb3JNZXNzYWdlKGVycm9y
KTsKKyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3JNZXNzYWdlICsgIiB3aGVuIHNldHRp
bmcgY29udGVudCBmb3IgZmlsZSAnIiArICh0aGlzLl9wYXRoICsgIi8iICsgcGF0aCkgKyAiJyIp
OworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge0RpcmVjdG9yeUVudHJ5fSBkaXJFbnRyeQorICAgICAqIEBwYXJhbSB7
ZnVuY3Rpb24oQXJyYXkuPEZpbGVFbnRyeT4pfSBjYWxsYmFjaworICAgICAqLworICAgIF9yZWFk
RGlyZWN0b3J5OiBmdW5jdGlvbihkaXJFbnRyeSwgY2FsbGJhY2spCisgICAgeworICAgICAgICB2
YXIgZGlyUmVhZGVyID0gZGlyRW50cnkuY3JlYXRlUmVhZGVyKCk7CisgICAgICAgIHZhciBlbnRy
aWVzID0gW107CisKKyAgICAgICAgZnVuY3Rpb24gaW5uZXJDYWxsYmFjayhyZXN1bHRzKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoIXJlc3VsdHMubGVuZ3RoKQorICAgICAgICAgICAgICAg
IGNhbGxiYWNrKGVudHJpZXMuc29ydCgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgIGVudHJpZXMgPSBlbnRyaWVzLmNvbmNhdCh0b0FycmF5KHJlc3VsdHMpKTsKKyAgICAg
ICAgICAgICAgICBkaXJSZWFkZXIucmVhZEVudHJpZXMoaW5uZXJDYWxsYmFjaywgZXJyb3JIYW5k
bGVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHRvQXJy
YXkobGlzdCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5z
bGljZS5jYWxsKGxpc3QgfHwgW10sIDApOworICAgICAgICB9ICAgIAorCisgICAgICAgIGRpclJl
YWRlci5yZWFkRW50cmllcyhpbm5lckNhbGxiYWNrLCBlcnJvckhhbmRsZXIpOworCisgICAgICAg
IGZ1bmN0aW9uIGVycm9ySGFuZGxlcihlcnJvcikKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGVycm9yTWVzc2FnZSA9IFdlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVTeXN0ZW0uZXJyb3JNZXNz
YWdlKGVycm9yKTsKKyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3JNZXNzYWdlICsgIiB3
aGVuIHJlYWRpbmcgZGlyZWN0b3J5ICciICsgZGlyRW50cnkuZnVsbFBhdGggKyAiJyIpOworICAg
ICAgICAgICAgY2FsbGJhY2soW10pOworICAgICAgICB9CisgICAgfSwKKworICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7RE9NRmlsZVN5c3RlbX0gZG9tRmlsZVN5c3RlbQorICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBwYXRoCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihBcnJheS48RmlsZUVudHJ5Pil9
IGNhbGxiYWNrCisgICAgICovCisgICAgX3JlcXVlc3RFbnRyaWVzOiBmdW5jdGlvbihkb21GaWxl
U3lzdGVtLCBwYXRoLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGRvbUZpbGVTeXN0ZW0ucm9v
dC5nZXREaXJlY3RvcnkocGF0aCwgbnVsbCwgaW5uZXJDYWxsYmFjay5iaW5kKHRoaXMpLCBlcnJv
ckhhbmRsZXIpOworCisgICAgICAgIGZ1bmN0aW9uIGlubmVyQ2FsbGJhY2soZGlyRW50cnkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMuX3JlYWREaXJlY3RvcnkoZGlyRW50cnksIGNhbGxi
YWNrKQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZXJyb3JIYW5kbGVyKGVycm9yKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgZXJyb3JNZXNzYWdlID0gV2ViSW5zcGVjdG9yLklz
b2xhdGVkRmlsZVN5c3RlbS5lcnJvck1lc3NhZ2UoZXJyb3IpOworICAgICAgICAgICAgY29uc29s
ZS5lcnJvcihlcnJvck1lc3NhZ2UgKyAiIHdoZW4gcmVxdWVzdGluZyBlbnRyeSAnIiArIHBhdGgg
KyAiJyIpOworICAgICAgICAgICAgY2FsbGJhY2soW10pOworICAgICAgICB9CisgICAgfQorfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Jc29sYXRlZEZp
bGVTeXN0ZW1Nb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSXNv
bGF0ZWRGaWxlU3lzdGVtTW9kZWwuanMKaW5kZXggOTk1ZGRmMjdhZWQyYTE2N2RjMzlkZDhhNjA1
ODI2OTg5Yjc2ZTc2NC4uZTQ0MjJlNTkwYTQwYTEwMjQ4YzgwZWMxMzMwNzJhMGJmOGEyMjU1OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Jc29sYXRlZEZp
bGVTeXN0ZW1Nb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0lzb2xhdGVkRmlsZVN5c3RlbU1vZGVsLmpzCkBAIC0xMDksNyArMTA5LDggQEAgV2ViSW5zcGVj
dG9yLklzb2xhdGVkRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5f
ZmlsZVN5c3RlbXNbZmlsZVN5c3RlbVBhdGhdID0gZmlsZVN5c3RlbTsKICAgICAgICAgdmFyIGZp
bGVTeXN0ZW1JZCA9IHRoaXMuX2ZpbGVTeXN0ZW1NYXBwaW5nLmFkZEZpbGVTeXN0ZW1NYXBwaW5n
KGZpbGVTeXN0ZW1QYXRoKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3dvcmtzcGFj
ZS5wcm9qZWN0KGZpbGVTeXN0ZW1JZCkpOwotICAgICAgICB0aGlzLl93b3Jrc3BhY2UuYWRkUHJv
amVjdChuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Qcm9qZWN0RGVsZWdhdGUodGhpcywgZmls
ZVN5c3RlbUlkLCBmaWxlU3lzdGVtUGF0aCkpOworICAgICAgICB2YXIgaXNvbGF0ZWRGaWxlU3lz
dGVtID0gbmV3IFdlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVTeXN0ZW0odGhpcywgZmlsZVN5c3Rl
bUlkLCBmaWxlU3lzdGVtUGF0aCk7CisgICAgICAgIHRoaXMuX3dvcmtzcGFjZS5hZGRQcm9qZWN0
KG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVByb2plY3REZWxlZ2F0ZShpc29sYXRlZEZpbGVT
eXN0ZW0pKTsKICAgICB9LAogCiAgICAgLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggNjJmYjc5NDYzOGZiMmYxYzRmNGEyNjJmMmZlYzNh
MmY5MGIxYzRkYS4uYTE0Zjg0YzMwOTFjZjg0MzRjMWYxMTJjYjE5NTdhNGYzZDNhZjg0YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpAQCAtMTA0
LDYgKzEwNCw3IEBACiAgICAgPGZpbGU+SW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qczwvZmls
ZT4KICAgICA8ZmlsZT5JbnNwZWN0b3JWaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPkpTSGVhcFNu
YXBzaG90LmpzPC9maWxlPgorICAgIDxmaWxlPklzb2xhdGVkRmlsZVN5c3RlbS5qczwvZmlsZT4K
ICAgICA8ZmlsZT5Jc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbC5qczwvZmlsZT4KICAgICA8ZmlsZT5K
YXZhU2NyaXB0Rm9ybWF0dGVyLmpzPC9maWxlPgogICAgIDxmaWxlPkphdmFTY3JpcHRTb3VyY2VG
cmFtZS5qczwvZmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5odG1sCmluZGV4IGM0NjQ5NTYyZTlmYzMyMTUzNWE2NGJmZGZlNDExYTE3ODdj
Yzc0ZTYuLjZiMTdjMjVmZGIwN2U3ZGNiNDI0ZDc4N2U2MTk5N2FlYmI5NzcxNmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbApAQCAt
MTQyLDYgKzE0Miw3IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iUHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VIZWxwZXIuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkZpbGVTeXN0ZW1Qcm9qZWN0
RGVsZWdhdGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBzcmM9IkZpbGVTeXN0ZW1NYXBwaW5nLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJJc29sYXRlZEZpbGVTeXN0ZW0uanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Iklzb2xhdGVkRmlsZVN5c3Rl
bU1vZGVsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJGaWxlTWFwcGluZy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIHNyYz0iV29ya3NwYWNlLmpzIj48L3NjcmlwdD4K
</data>
<flag name="review"
          id="209034"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>