<?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>69068</bug_id>
          
          <creation_ts>2011-09-29 01:00:00 -0700</creation_ts>
          <short_desc>Web Inspector: split SourceFile.js into RawSourceCode.js and UISourceCodeContentProviders.js.</short_desc>
          <delta_ts>2011-09-29 01:47:26 -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="Pavel Podivilov">podivilov</reporter>
          <assigned_to name="Pavel Podivilov">podivilov</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>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>475300</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-09-29 01:00:00 -0700</bug_when>
    <thetext>Web Inspector: split SourceFile.js into RawSourceCode.js and UISourceCodeContentProviders.js.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475301</commentid>
    <comment_count>1</comment_count>
      <attachid>109133</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-09-29 01:00:57 -0700</bug_when>
    <thetext>Created attachment 109133
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475309</commentid>
    <comment_count>2</comment_count>
      <attachid>109133</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-09-29 01:14:47 -0700</bug_when>
    <thetext>Comment on attachment 109133
Patch

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

&gt; Source/WebCore/inspector/front-end/UISourceCodeContentProviders.js:1
&gt; +/*

The file name is a bit confusing, there is no mentioning of UISourceCode in the file, could you rename it to ContentProviders?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475315</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-09-29 01:47:26 -0700</bug_when>
    <thetext>Committed r96313: &lt;http://trac.webkit.org/changeset/96313&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109133</attachid>
            <date>2011-09-29 01:00:57 -0700</date>
            <delta_ts>2011-09-29 01:14:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69068-20110929120055.patch</filename>
            <type>text/plain</type>
            <size>35189</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYyMTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MTNiNDA4NGUxYTEyZmM3
YTkzNzViMWVmMmU3ODExZDkzZDQ4MDdiLi4xNjU2MTAyMTY1MzEyOGY1NGMzMzg0MTE1MzNjNjVi
ZjNhYWQ1MTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDktMjkgIFBhdmVs
IFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3Rvcjogc3BsaXQgU291cmNlRmlsZS5qcyBpbnRvIFJhd1NvdXJjZUNvZGUuanMgYW5kIFVJU291
cmNlQ29kZUNvbnRlbnRQcm92aWRlcnMuanMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02OTA2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmF3U291
cmNlQ29kZS5qczogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU291cmNlRmlsZS5qcy4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlKTog
TW92ZWQgZnJvbSBTb3VyY2VGaWxlLmpzLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlVJTG9jYXRp
b24pOiBNb3ZlZCBmcm9tIFNvdXJjZUZpbGUuanMuCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9VSVNvdXJjZUNvZGVDb250ZW50UHJvdmlkZXJzLmpzOiBBZGRlZC4gTW92ZWQgQ29udGVu
dFByb3ZpZGVyIGltcGxlbWVudGF0aW9ucyBmcm9tIFNvdXJjZUZpbGUuanMKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TY3JpcHRDb250ZW50UHJvdmlkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNjcmlwdENvbnRlbnRQcm92aWRlci5wcm90b3R5cGUucmVxdWVzdENvbnRlbnQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvbmNhdGVuYXRlZFNjcmlwdHNDb250ZW50UHJvdmlkZXIpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNvbmNhdGVuYXRlZFNjcmlwdHNDb250ZW50UHJvdmlkZXIucHJv
dG90eXBlLnJlcXVlc3RDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25jYXRlbmF0
ZWRTY3JpcHRzQ29udGVudFByb3ZpZGVyLnByb3RvdHlwZS5fY29uY2F0ZW5hdGVTY3JpcHRzQ29u
dGVudC5hcHBlbmRDaHVuayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uY2F0ZW5hdGVkU2Ny
aXB0c0NvbnRlbnRQcm92aWRlci5wcm90b3R5cGUuX2NvbmNhdGVuYXRlU2NyaXB0c0NvbnRlbnQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFByb3ZpZGVyKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRQcm92aWRlci5wcm90b3R5cGUucmVxdWVz
dENvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0YXRpY0NvbnRlbnRQcm92aWRlcik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3RhdGljQ29udGVudFByb3ZpZGVyLnByb3RvdHlwZS5y
ZXF1ZXN0Q29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJj
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWw6CisKIDIwMTEt
MDktMjggIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogUmVmYWN0b3Igc2VhcmNoaW5nIGluIGluc3BlY3RvciwgYWRkIHRlc3Qg
KGZpeGVkIG5vbiByZWdleCBzZWFyY2gpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDA0MjA0ZWE2YWJj
NmQ0NmIzZjBkNTEyNjdjZGRkNjlhMDFhYTU3MTcuLjRmZTEyYTAzZTI0ZGJlZGJlODFiNTI1NTlk
YjhjNGYyZTc3OWE2MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTYyODgsNiArNjI4OCw3IEBACiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlVmlldy5qcycsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9wZXJ0aWVzU2VjdGlvbi5qcycsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9wZXJ0aWVzU2lkZWJhclBhbmUuanMnLAorICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvUmF3U291cmNlQ29kZS5qcycsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9SZW1vdGVPYmplY3QuanMnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VDYXRlZ29yeS5qcycsCkBAIC02MzE2LDcgKzYzMTcsNiBAQAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvU2lkZWJhclRyZWVFbGVtZW50LmpzJywK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1NvZnRDb250ZXh0TWVudS5qcycsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VDU1NUb2tlbml6ZXIuanMnLAot
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRmlsZS5qcycsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcycsCiAgICAgICAgICAgICAn
aW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VIVE1MVG9rZW5pemVyLmpzJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUphdmFTY3JpcHRUb2tlbml6ZXIuanMnLApAQCAt
NjMzOCw2ICs2MzM4LDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1RvcERv
d25Qcm9maWxlRGF0YUdyaWRUcmVlLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL3RyZWVvdXRsaW5lLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1VJ
U291cmNlQ29kZS5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9VSVNvdXJj
ZUNvZGVDb250ZW50UHJvdmlkZXJzLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL1VzZXJNZXRyaWNzLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL3V0
aWxpdGllcy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9WaWV3LmpzJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggNWE5
ZGRhZmU1Yjg0ODcxMDUxYzA4Zjk2NjVhZTA5NGVlYzcwMGI4OC4uMmU1YmUxYmVlMzNiZWQ5Y2Yz
ZmRiYTYwYWY0M2E0YjViNWMxOTg2YSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKQEAgLTY5NDI5LDYgKzY5NDI5LDEwIEBACiAJCQkJCT4KIAkJCQk8
L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQt
ZW5kXFJhd1NvdXJjZUNvZGUuanMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFJlbW90ZU9iamVjdC5qcyIK
IAkJCQkJPgogCQkJCTwvRmlsZT4KQEAgLTY5NTQxLDEwICs2OTU0NSw2IEBACiAJCQkJCT4KIAkJ
CQk8L0ZpbGU+CiAJCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJv
bnQtZW5kXFNvdXJjZUZpbGUuanMiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUKIAkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFNvdXJjZUZyYW1lLmpzIgog
CQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtNjk2MzcsNiArNjk2MzcsMTAgQEAKIAkJCQkJPgogCQkJ
CTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9u
dC1lbmRcVUlTb3VyY2VDb2RlQ29udGVudFByb3ZpZGVycy5qcyIKKwkJCQkJPgorCQkJCTwvRmls
ZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRc
VXNlck1ldHJpY3MuanMiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jhd1NvdXJjZUNvZGUuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jhd1NvdXJjZUNvZGUuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDkx
ZGFjNGQxMTgyMDk2NDRhNzkxNWJlZTQ0YmMyZjgxN2U5ZWIwMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmF3U291cmNlQ29kZS5qcwpAQCAt
MCwwICsxLDI0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKy8vIFJhd1NvdXJjZUNvZGUgcmVwcmVzZW50cyBKYXZhU2NyaXB0IHJlc291
cmNlIG9yIEhUTUwgcmVzb3VyY2Ugd2l0aCBpbmxpbmVkIHNjcmlwdHMKKy8vIGFzIGl0IGNhbWUg
ZnJvbSBuZXR3b3JrLgorCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYklu
c3BlY3Rvci5PYmplY3R9CisgKi8KK1dlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlID0gZnVuY3Rp
b24oaWQsIHNjcmlwdCwgcmVzb3VyY2UsIGZvcm1hdHRlciwgZm9ybWF0dGVkKQoreworICAgIHRo
aXMuaWQgPSBpZDsKKyAgICB0aGlzLnVybCA9IHNjcmlwdC5zb3VyY2VVUkw7CisgICAgdGhpcy5p
c0NvbnRlbnRTY3JpcHQgPSBzY3JpcHQuaXNDb250ZW50U2NyaXB0OworICAgIHRoaXMuX3Njcmlw
dHMgPSBbc2NyaXB0XTsKKyAgICB0aGlzLl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXI7CisgICAgdGhp
cy5fZm9ybWF0dGVkID0gZm9ybWF0dGVkOworICAgIHRoaXMuX3Jlc291cmNlID0gcmVzb3VyY2U7
CisgICAgdGhpcy5tZXNzYWdlcyA9IFtdOworCisgICAgdGhpcy5fdXNlVGVtcG9yYXJ5Q29udGVu
dCA9IHRoaXMuX3Jlc291cmNlICYmICF0aGlzLl9yZXNvdXJjZS5maW5pc2hlZDsKKyAgICB0aGlz
Ll9oYXNOZXdTY3JpcHRzID0gdHJ1ZTsKKyAgICBpZiAoIXRoaXMuX3VzZVRlbXBvcmFyeUNvbnRl
bnQpCisgICAgICAgIHRoaXMuX3VwZGF0ZVNvdXJjZU1hcHBpbmcoKTsKKyAgICBlbHNlIGlmICh0
aGlzLl9yZXNvdXJjZSkKKyAgICAgICAgdGhpcy5fcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcigi
ZmluaXNoZWQiLCB0aGlzLl9yZXNvdXJjZUZpbmlzaGVkLmJpbmQodGhpcykpOworfQorCitXZWJJ
bnNwZWN0b3IuUmF3U291cmNlQ29kZS5FdmVudHMgPSB7CisgICAgU291cmNlTWFwcGluZ1VwZGF0
ZWQ6ICJzb3VyY2UtbWFwcGluZy11cGRhdGVkIgorfQorCitXZWJJbnNwZWN0b3IuUmF3U291cmNl
Q29kZS5wcm90b3R5cGUgPSB7CisgICAgYWRkU2NyaXB0OiBmdW5jdGlvbihzY3JpcHQpCisgICAg
eworICAgICAgICB0aGlzLl9zY3JpcHRzLnB1c2goc2NyaXB0KTsKKyAgICAgICAgdGhpcy5faGFz
TmV3U2NyaXB0cyA9IHRydWU7CisgICAgfSwKKworICAgIGdldCBzb3VyY2VNYXBwaW5nKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VNYXBwaW5nOworICAgIH0sCisKKyAgICBz
ZXRGb3JtYXR0ZWQ6IGZ1bmN0aW9uKGZvcm1hdHRlZCkKKyAgICB7CisgICAgICAgIGlmICh0aGlz
Ll9mb3JtYXR0ZWQgPT09IGZvcm1hdHRlZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
dGhpcy5fZm9ybWF0dGVkID0gZm9ybWF0dGVkOworICAgICAgICB0aGlzLl91cGRhdGVTb3VyY2VN
YXBwaW5nKCk7CisgICAgfSwKKworICAgIGNvbnRlbnRFZGl0ZWQ6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHRoaXMuX3VwZGF0ZVNvdXJjZU1hcHBpbmcoKTsKKyAgICB9LAorCisgICAgX3Jl
c291cmNlRmluaXNoZWQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3VzZVRlbXBv
cmFyeUNvbnRlbnQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fdXBkYXRlU291cmNlTWFwcGluZygp
OworICAgIH0sCisKKyAgICBfc2NyaXB0Rm9yUmF3TG9jYXRpb246IGZ1bmN0aW9uKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcikKKyAgICB7CisgICAgICAgIHZhciBjbG9zZXN0U2NyaXB0ID0gdGhp
cy5fc2NyaXB0c1swXTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCB0aGlzLl9zY3JpcHRz
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgc2NyaXB0ID0gdGhpcy5fc2NyaXB0c1tp
XTsKKyAgICAgICAgICAgIGlmIChzY3JpcHQubGluZU9mZnNldCA+IGxpbmVOdW1iZXIgfHwgKHNj
cmlwdC5saW5lT2Zmc2V0ID09PSBsaW5lTnVtYmVyICYmIHNjcmlwdC5jb2x1bW5PZmZzZXQgPiBj
b2x1bW5OdW1iZXIpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYg
KHNjcmlwdC5saW5lT2Zmc2V0ID4gY2xvc2VzdFNjcmlwdC5saW5lT2Zmc2V0IHx8CisgICAgICAg
ICAgICAgICAgKHNjcmlwdC5saW5lT2Zmc2V0ID09PSBjbG9zZXN0U2NyaXB0LmxpbmVPZmZzZXQg
JiYgc2NyaXB0LmNvbHVtbk9mZnNldCA+IGNsb3Nlc3RTY3JpcHQuY29sdW1uT2Zmc2V0KSkKKyAg
ICAgICAgICAgICAgICBjbG9zZXN0U2NyaXB0ID0gc2NyaXB0OworICAgICAgICB9CisgICAgICAg
IHJldHVybiBjbG9zZXN0U2NyaXB0OworICAgIH0sCisKKyAgICBmb3JjZVVwZGF0ZVNvdXJjZU1h
cHBpbmc6IGZ1bmN0aW9uKHNjcmlwdCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fdXNlVGVt
cG9yYXJ5Q29udGVudCB8fCAhdGhpcy5faGFzTmV3U2NyaXB0cykKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgdGhpcy5faGFzTmV3U2NyaXB0cyA9IGZhbHNlOworICAgICAgICB0aGlzLl91
cGRhdGVTb3VyY2VNYXBwaW5nKCk7CisgICAgfSwKKworICAgIF91cGRhdGVTb3VyY2VNYXBwaW5n
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5fdXBkYXRpbmdTb3VyY2VNYXBw
aW5nKSB7CisgICAgICAgICAgICB0aGlzLl91cGRhdGVOZWVkZWQgPSB0cnVlOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHRoaXMuX3VwZGF0aW5nU291cmNlTWFwcGlu
ZyA9IHRydWU7CisgICAgICAgIHRoaXMuX3VwZGF0ZU5lZWRlZCA9IGZhbHNlOworCisgICAgICAg
IHZhciBvcmlnaW5hbENvbnRlbnRQcm92aWRlciA9IHRoaXMuX2NyZWF0ZUNvbnRlbnRQcm92aWRl
cigpOworICAgICAgICB0aGlzLl9jcmVhdGVTb3VyY2VNYXBwaW5nKG9yaWdpbmFsQ29udGVudFBy
b3ZpZGVyLCBkaWRDcmVhdGVTb3VyY2VNYXBwaW5nLmJpbmQodGhpcykpOworCisgICAgICAgIGZ1
bmN0aW9uIGRpZENyZWF0ZVNvdXJjZU1hcHBpbmcoY29udGVudFByb3ZpZGVyLCBtYXBwaW5nKQor
ICAgICAgICB7CisgICAgICAgICAgICB0aGlzLl91cGRhdGluZ1NvdXJjZU1hcHBpbmcgPSBmYWxz
ZTsKKyAgICAgICAgICAgIGlmICghdGhpcy5fdXBkYXRlTmVlZGVkKQorICAgICAgICAgICAgICAg
IHRoaXMuX3NhdmVTb3VyY2VNYXBwaW5nKGNvbnRlbnRQcm92aWRlciwgbWFwcGluZyk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlU291cmNlTWFwcGluZygp
OworICAgICAgICB9CisgICAgfSwKKworICAgIF9jcmVhdGVDb250ZW50UHJvdmlkZXI6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9yZXNvdXJjZSAmJiB0aGlzLl9yZXNvdXJj
ZS5maW5pc2hlZCkKKyAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNl
Q29udGVudFByb3ZpZGVyKHRoaXMuX3Jlc291cmNlKTsKKyAgICAgICAgaWYgKHRoaXMuX3Njcmlw
dHMubGVuZ3RoID09PSAxICYmICF0aGlzLl9zY3JpcHRzWzBdLmxpbmVPZmZzZXQgJiYgIXRoaXMu
X3NjcmlwdHNbMF0uY29sdW1uT2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNw
ZWN0b3IuU2NyaXB0Q29udGVudFByb3ZpZGVyKHRoaXMuX3NjcmlwdHNbMF0pOworICAgICAgICBy
ZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Db25jYXRlbmF0ZWRTY3JpcHRzQ29udGVudFByb3ZpZGVy
KHRoaXMuX3NjcmlwdHMpOworICAgIH0sCisKKyAgICBfY3JlYXRlU291cmNlTWFwcGluZzogZnVu
Y3Rpb24ob3JpZ2luYWxDb250ZW50UHJvdmlkZXIsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAg
aWYgKCF0aGlzLl9mb3JtYXR0ZWQpIHsKKyAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSBu
ZXcgV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZSh0aGlzLmlkLCB0aGlzLnVybCwgdGhpcy5pc0Nv
bnRlbnRTY3JpcHQsIHRoaXMsIG9yaWdpbmFsQ29udGVudFByb3ZpZGVyKTsKKyAgICAgICAgICAg
IHZhciBzb3VyY2VNYXBwaW5nID0gbmV3IFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLlBsYWlu
U291cmNlTWFwcGluZyh0aGlzLCB1aVNvdXJjZUNvZGUpOworICAgICAgICAgICAgY2FsbGJhY2so
c291cmNlTWFwcGluZyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBkaWRSZXF1ZXN0Q29udGVudChtaW1lVHlwZSwgY29udGVudCkKKyAgICAgICAg
eworICAgICAgICAgICAgZnVuY3Rpb24gZGlkRm9ybWF0Q29udGVudChmb3JtYXR0ZWRDb250ZW50
LCBtYXBwaW5nKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBjb250ZW50UHJv
dmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXRpY0NvbnRlbnRQcm92aWRlcihtaW1lVHlwZSwg
Zm9ybWF0dGVkQ29udGVudCkKKyAgICAgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gbmV3
IFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGUoImRlb2JmdXNjYXRlZDoiICsgdGhpcy5pZCwgdGhp
cy51cmwsIHRoaXMuaXNDb250ZW50U2NyaXB0LCB0aGlzLCBjb250ZW50UHJvdmlkZXIpOworICAg
ICAgICAgICAgICAgIHZhciBzb3VyY2VNYXBwaW5nID0gbmV3IFdlYkluc3BlY3Rvci5SYXdTb3Vy
Y2VDb2RlLkZvcm1hdHRlZFNvdXJjZU1hcHBpbmcodGhpcywgdWlTb3VyY2VDb2RlLCBtYXBwaW5n
KTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhzb3VyY2VNYXBwaW5nKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHRoaXMuX2Zvcm1hdHRlci5mb3JtYXRDb250ZW50KG1pbWVUeXBlLCBj
b250ZW50LCBkaWRGb3JtYXRDb250ZW50LmJpbmQodGhpcykpOworICAgICAgICB9CisgICAgICAg
IG9yaWdpbmFsQ29udGVudFByb3ZpZGVyLnJlcXVlc3RDb250ZW50KGRpZFJlcXVlc3RDb250ZW50
LmJpbmQodGhpcykpOworICAgIH0sCisKKyAgICBfc2F2ZVNvdXJjZU1hcHBpbmc6IGZ1bmN0aW9u
KHNvdXJjZU1hcHBpbmcpCisgICAgeworICAgICAgICB2YXIgb2xkVUlTb3VyY2VDb2RlOworICAg
ICAgICBpZiAodGhpcy5fc291cmNlTWFwcGluZykKKyAgICAgICAgICAgIG9sZFVJU291cmNlQ29k
ZSA9IHRoaXMuX3NvdXJjZU1hcHBpbmcudWlTb3VyY2VDb2RlOworICAgICAgICB0aGlzLl9zb3Vy
Y2VNYXBwaW5nID0gc291cmNlTWFwcGluZzsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuRXZlbnRzLlNvdXJjZU1hcHBpbmdV
cGRhdGVkLCB7IG9sZFVJU291cmNlQ29kZTogb2xkVUlTb3VyY2VDb2RlIH0pOworICAgIH0KK30K
KworV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYklu
c3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworCisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKi8K
K1dlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLlBsYWluU291cmNlTWFwcGluZyA9IGZ1bmN0aW9u
KHJhd1NvdXJjZUNvZGUsIHVpU291cmNlQ29kZSkKK3sKKyAgICB0aGlzLl9yYXdTb3VyY2VDb2Rl
ID0gcmF3U291cmNlQ29kZTsKKyAgICB0aGlzLl91aVNvdXJjZUNvZGUgPSB1aVNvdXJjZUNvZGU7
Cit9CisKK1dlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLlBsYWluU291cmNlTWFwcGluZy5wcm90
b3R5cGUgPSB7CisgICAgcmF3TG9jYXRpb25Ub1VJTG9jYXRpb246IGZ1bmN0aW9uKHJhd0xvY2F0
aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbih0
aGlzLl91aVNvdXJjZUNvZGUsIHJhd0xvY2F0aW9uLmxpbmVOdW1iZXIsIHJhd0xvY2F0aW9uLmNv
bHVtbk51bWJlcik7CisgICAgfSwKKworICAgIHVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uOiBmdW5j
dGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCisgICAgeworICAgICAgICB2YXIgcmF3TG9j
YXRpb24gPSB7IGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcjogY29sdW1uTnVt
YmVyIH07CisgICAgICAgIHJhd0xvY2F0aW9uLnNjcmlwdElkID0gdGhpcy5fcmF3U291cmNlQ29k
ZS5fc2NyaXB0Rm9yUmF3TG9jYXRpb24ocmF3TG9jYXRpb24ubGluZU51bWJlciwgcmF3TG9jYXRp
b24uY29sdW1uTnVtYmVyKS5zY3JpcHRJZDsKKyAgICAgICAgcmV0dXJuIHJhd0xvY2F0aW9uOwor
ICAgIH0sCisKKyAgICBnZXQgdWlTb3VyY2VDb2RlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLl91aVNvdXJjZUNvZGU7CisgICAgfQorfQorCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICov
CitXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5Gb3JtYXR0ZWRTb3VyY2VNYXBwaW5nID0gZnVu
Y3Rpb24ocmF3U291cmNlQ29kZSwgdWlTb3VyY2VDb2RlLCBtYXBwaW5nKQoreworICAgIHRoaXMu
X3Jhd1NvdXJjZUNvZGUgPSByYXdTb3VyY2VDb2RlOworICAgIHRoaXMuX3VpU291cmNlQ29kZSA9
IHVpU291cmNlQ29kZTsKKyAgICB0aGlzLl9tYXBwaW5nID0gbWFwcGluZzsKK30KKworV2ViSW5z
cGVjdG9yLlJhd1NvdXJjZUNvZGUuRm9ybWF0dGVkU291cmNlTWFwcGluZy5wcm90b3R5cGUgPSB7
CisgICAgcmF3TG9jYXRpb25Ub1VJTG9jYXRpb246IGZ1bmN0aW9uKHJhd0xvY2F0aW9uKQorICAg
IHsKKyAgICAgICAgdmFyIGxvY2F0aW9uID0gdGhpcy5fbWFwcGluZy5vcmlnaW5hbFRvRm9ybWF0
dGVkKHJhd0xvY2F0aW9uKTsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVUlMb2Nh
dGlvbih0aGlzLl91aVNvdXJjZUNvZGUsIGxvY2F0aW9uLmxpbmVOdW1iZXIsIGxvY2F0aW9uLmNv
bHVtbk51bWJlcik7CisgICAgfSwKKworICAgIHVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uOiBmdW5j
dGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCisgICAgeworICAgICAgICB2YXIgcmF3TG9j
YXRpb24gPSB0aGlzLl9tYXBwaW5nLmZvcm1hdHRlZFRvT3JpZ2luYWwoeyBsaW5lTnVtYmVyOiBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXI6IGNvbHVtbk51bWJlciB9KTsKKyAgICAgICAgcmF3TG9j
YXRpb24uc2NyaXB0SWQgPSB0aGlzLl9yYXdTb3VyY2VDb2RlLl9zY3JpcHRGb3JSYXdMb2NhdGlv
bihyYXdMb2NhdGlvbi5saW5lTnVtYmVyLCByYXdMb2NhdGlvbi5jb2x1bW5OdW1iZXIpLnNjcmlw
dElkOworICAgICAgICByZXR1cm4gcmF3TG9jYXRpb247CisgICAgfSwKKworICAgIGdldCB1aVNv
dXJjZUNvZGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3VpU291cmNlQ29kZTsKKyAg
ICB9Cit9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKi8KK1dlYkluc3BlY3Rvci5VSUxvY2F0
aW9uID0gZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCit7
CisgICAgdGhpcy51aVNvdXJjZUNvZGUgPSB1aVNvdXJjZUNvZGU7CisgICAgdGhpcy5saW5lTnVt
YmVyID0gbGluZU51bWJlcjsKKyAgICB0aGlzLmNvbHVtbk51bWJlciA9IGNvbHVtbk51bWJlcjsK
K30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3Vy
Y2VGaWxlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGaWxl
LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjg3ODlkNzJlOGVkOTM0OGU2NTQz
ZDZlYTc1YTg0Y2ExNjMxZTRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRmlsZS5q
cworKysgL2Rldi9udWxsCkBAIC0xLDM4MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gUmF3U291cmNlQ29kZSByZXByZXNl
bnRzIEphdmFTY3JpcHQgcmVzb3VyY2Ugb3IgSFRNTCByZXNvdXJjZSB3aXRoIGlubGluZWQgc2Ny
aXB0cwotLy8gYXMgaXQgY2FtZSBmcm9tIG5ldHdvcmsuCi0KLS8qKgotICogQGNvbnN0cnVjdG9y
Ci0gKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLk9iamVjdH0KLSAqLwotV2ViSW5zcGVjdG9yLlJh
d1NvdXJjZUNvZGUgPSBmdW5jdGlvbihpZCwgc2NyaXB0LCByZXNvdXJjZSwgZm9ybWF0dGVyLCBm
b3JtYXR0ZWQpCi17Ci0gICAgdGhpcy5pZCA9IGlkOwotICAgIHRoaXMudXJsID0gc2NyaXB0LnNv
dXJjZVVSTDsKLSAgICB0aGlzLmlzQ29udGVudFNjcmlwdCA9IHNjcmlwdC5pc0NvbnRlbnRTY3Jp
cHQ7Ci0gICAgdGhpcy5fc2NyaXB0cyA9IFtzY3JpcHRdOwotICAgIHRoaXMuX2Zvcm1hdHRlciA9
IGZvcm1hdHRlcjsKLSAgICB0aGlzLl9mb3JtYXR0ZWQgPSBmb3JtYXR0ZWQ7Ci0gICAgdGhpcy5f
cmVzb3VyY2UgPSByZXNvdXJjZTsKLSAgICB0aGlzLm1lc3NhZ2VzID0gW107Ci0KLSAgICB0aGlz
Ll91c2VUZW1wb3JhcnlDb250ZW50ID0gdGhpcy5fcmVzb3VyY2UgJiYgIXRoaXMuX3Jlc291cmNl
LmZpbmlzaGVkOwotICAgIHRoaXMuX2hhc05ld1NjcmlwdHMgPSB0cnVlOwotICAgIGlmICghdGhp
cy5fdXNlVGVtcG9yYXJ5Q29udGVudCkKLSAgICAgICAgdGhpcy5fdXBkYXRlU291cmNlTWFwcGlu
ZygpOwotICAgIGVsc2UgaWYgKHRoaXMuX3Jlc291cmNlKQotICAgICAgICB0aGlzLl9yZXNvdXJj
ZS5hZGRFdmVudExpc3RlbmVyKCJmaW5pc2hlZCIsIHRoaXMuX3Jlc291cmNlRmluaXNoZWQuYmlu
ZCh0aGlzKSk7Ci19Ci0KLVdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkV2ZW50cyA9IHsKLSAg
ICBTb3VyY2VNYXBwaW5nVXBkYXRlZDogInNvdXJjZS1tYXBwaW5nLXVwZGF0ZWQiCi19Ci0KLVdl
Ykluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlwZSA9IHsKLSAgICBhZGRTY3JpcHQ6IGZ1
bmN0aW9uKHNjcmlwdCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3NjcmlwdHMucHVzaChzY3JpcHQp
OwotICAgICAgICB0aGlzLl9oYXNOZXdTY3JpcHRzID0gdHJ1ZTsKLSAgICB9LAotCi0gICAgZ2V0
IHNvdXJjZU1hcHBpbmcoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZU1hcHBp
bmc7Ci0gICAgfSwKLQotICAgIHNldEZvcm1hdHRlZDogZnVuY3Rpb24oZm9ybWF0dGVkKQotICAg
IHsKLSAgICAgICAgaWYgKHRoaXMuX2Zvcm1hdHRlZCA9PT0gZm9ybWF0dGVkKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB0aGlzLl9mb3JtYXR0ZWQgPSBmb3JtYXR0ZWQ7Ci0gICAgICAg
IHRoaXMuX3VwZGF0ZVNvdXJjZU1hcHBpbmcoKTsKLSAgICB9LAotCi0gICAgY29udGVudEVkaXRl
ZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fdXBkYXRlU291cmNlTWFwcGluZygp
OwotICAgIH0sCi0KLSAgICBfcmVzb3VyY2VGaW5pc2hlZDogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgdGhpcy5fdXNlVGVtcG9yYXJ5Q29udGVudCA9IGZhbHNlOwotICAgICAgICB0aGlzLl91
cGRhdGVTb3VyY2VNYXBwaW5nKCk7Ci0gICAgfSwKLQotICAgIF9zY3JpcHRGb3JSYXdMb2NhdGlv
bjogZnVuY3Rpb24obGluZU51bWJlciwgY29sdW1uTnVtYmVyKQotICAgIHsKLSAgICAgICAgdmFy
IGNsb3Nlc3RTY3JpcHQgPSB0aGlzLl9zY3JpcHRzWzBdOwotICAgICAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHRoaXMuX3NjcmlwdHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBzY3Jp
cHQgPSB0aGlzLl9zY3JpcHRzW2ldOwotICAgICAgICAgICAgaWYgKHNjcmlwdC5saW5lT2Zmc2V0
ID4gbGluZU51bWJlciB8fCAoc2NyaXB0LmxpbmVPZmZzZXQgPT09IGxpbmVOdW1iZXIgJiYgc2Ny
aXB0LmNvbHVtbk9mZnNldCA+IGNvbHVtbk51bWJlcikpCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICBpZiAoc2NyaXB0LmxpbmVPZmZzZXQgPiBjbG9zZXN0U2NyaXB0Lmxp
bmVPZmZzZXQgfHwKLSAgICAgICAgICAgICAgICAoc2NyaXB0LmxpbmVPZmZzZXQgPT09IGNsb3Nl
c3RTY3JpcHQubGluZU9mZnNldCAmJiBzY3JpcHQuY29sdW1uT2Zmc2V0ID4gY2xvc2VzdFNjcmlw
dC5jb2x1bW5PZmZzZXQpKQotICAgICAgICAgICAgICAgIGNsb3Nlc3RTY3JpcHQgPSBzY3JpcHQ7
Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGNsb3Nlc3RTY3JpcHQ7Ci0gICAgfSwKLQotICAg
IGZvcmNlVXBkYXRlU291cmNlTWFwcGluZzogZnVuY3Rpb24oc2NyaXB0KQotICAgIHsKLSAgICAg
ICAgaWYgKCF0aGlzLl91c2VUZW1wb3JhcnlDb250ZW50IHx8ICF0aGlzLl9oYXNOZXdTY3JpcHRz
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLl9oYXNOZXdTY3JpcHRzID0gZmFs
c2U7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZVNvdXJjZU1hcHBpbmcoKTsKLSAgICB9LAotCi0gICAg
X3VwZGF0ZVNvdXJjZU1hcHBpbmc6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlz
Ll91cGRhdGluZ1NvdXJjZU1hcHBpbmcpIHsKLSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU5lZWRl
ZCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5f
dXBkYXRpbmdTb3VyY2VNYXBwaW5nID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5fdXBkYXRlTmVlZGVk
ID0gZmFsc2U7Ci0KLSAgICAgICAgdmFyIG9yaWdpbmFsQ29udGVudFByb3ZpZGVyID0gdGhpcy5f
Y3JlYXRlQ29udGVudFByb3ZpZGVyKCk7Ci0gICAgICAgIHRoaXMuX2NyZWF0ZVNvdXJjZU1hcHBp
bmcob3JpZ2luYWxDb250ZW50UHJvdmlkZXIsIGRpZENyZWF0ZVNvdXJjZU1hcHBpbmcuYmluZCh0
aGlzKSk7Ci0KLSAgICAgICAgZnVuY3Rpb24gZGlkQ3JlYXRlU291cmNlTWFwcGluZyhjb250ZW50
UHJvdmlkZXIsIG1hcHBpbmcpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMuX3VwZGF0aW5n
U291cmNlTWFwcGluZyA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKCF0aGlzLl91cGRhdGVOZWVk
ZWQpCi0gICAgICAgICAgICAgICAgdGhpcy5fc2F2ZVNvdXJjZU1hcHBpbmcoY29udGVudFByb3Zp
ZGVyLCBtYXBwaW5nKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLl91
cGRhdGVTb3VyY2VNYXBwaW5nKCk7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgX2NyZWF0ZUNv
bnRlbnRQcm92aWRlcjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3Jlc291
cmNlICYmIHRoaXMuX3Jlc291cmNlLmZpbmlzaGVkKQotICAgICAgICAgICAgcmV0dXJuIG5ldyBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50UHJvdmlkZXIodGhpcy5fcmVzb3VyY2UpOwotICAg
ICAgICBpZiAodGhpcy5fc2NyaXB0cy5sZW5ndGggPT09IDEgJiYgIXRoaXMuX3NjcmlwdHNbMF0u
bGluZU9mZnNldCAmJiAhdGhpcy5fc2NyaXB0c1swXS5jb2x1bW5PZmZzZXQpCi0gICAgICAgICAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHRDb250ZW50UHJvdmlkZXIodGhpcy5fc2Ny
aXB0c1swXSk7Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNvbmNhdGVuYXRlZFNj
cmlwdHNDb250ZW50UHJvdmlkZXIodGhpcy5fc2NyaXB0cyk7Ci0gICAgfSwKLQotICAgIF9jcmVh
dGVTb3VyY2VNYXBwaW5nOiBmdW5jdGlvbihvcmlnaW5hbENvbnRlbnRQcm92aWRlciwgY2FsbGJh
Y2spCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX2Zvcm1hdHRlZCkgewotICAgICAgICAgICAg
dmFyIHVpU291cmNlQ29kZSA9IG5ldyBXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlKHRoaXMuaWQs
IHRoaXMudXJsLCB0aGlzLmlzQ29udGVudFNjcmlwdCwgdGhpcywgb3JpZ2luYWxDb250ZW50UHJv
dmlkZXIpOwotICAgICAgICAgICAgdmFyIHNvdXJjZU1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9y
LlJhd1NvdXJjZUNvZGUuUGxhaW5Tb3VyY2VNYXBwaW5nKHRoaXMsIHVpU291cmNlQ29kZSk7Ci0g
ICAgICAgICAgICBjYWxsYmFjayhzb3VyY2VNYXBwaW5nKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGRpZFJlcXVlc3RDb250ZW50KG1pbWVUeXBl
LCBjb250ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBmdW5jdGlvbiBkaWRGb3JtYXRDb250
ZW50KGZvcm1hdHRlZENvbnRlbnQsIG1hcHBpbmcpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgdmFyIGNvbnRlbnRQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdGljQ29udGVu
dFByb3ZpZGVyKG1pbWVUeXBlLCBmb3JtYXR0ZWRDb250ZW50KQotICAgICAgICAgICAgICAgIHZh
ciB1aVNvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZSgiZGVvYmZ1c2Nh
dGVkOiIgKyB0aGlzLmlkLCB0aGlzLnVybCwgdGhpcy5pc0NvbnRlbnRTY3JpcHQsIHRoaXMsIGNv
bnRlbnRQcm92aWRlcik7Ci0gICAgICAgICAgICAgICAgdmFyIHNvdXJjZU1hcHBpbmcgPSBuZXcg
V2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuRm9ybWF0dGVkU291cmNlTWFwcGluZyh0aGlzLCB1
aVNvdXJjZUNvZGUsIG1hcHBpbmcpOwotICAgICAgICAgICAgICAgIGNhbGxiYWNrKHNvdXJjZU1h
cHBpbmcpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhpcy5fZm9ybWF0dGVyLmZvcm1h
dENvbnRlbnQobWltZVR5cGUsIGNvbnRlbnQsIGRpZEZvcm1hdENvbnRlbnQuYmluZCh0aGlzKSk7
Ci0gICAgICAgIH0KLSAgICAgICAgb3JpZ2luYWxDb250ZW50UHJvdmlkZXIucmVxdWVzdENvbnRl
bnQoZGlkUmVxdWVzdENvbnRlbnQuYmluZCh0aGlzKSk7Ci0gICAgfSwKLQotICAgIF9zYXZlU291
cmNlTWFwcGluZzogZnVuY3Rpb24oc291cmNlTWFwcGluZykKLSAgICB7Ci0gICAgICAgIHZhciBv
bGRVSVNvdXJjZUNvZGU7Ci0gICAgICAgIGlmICh0aGlzLl9zb3VyY2VNYXBwaW5nKQotICAgICAg
ICAgICAgb2xkVUlTb3VyY2VDb2RlID0gdGhpcy5fc291cmNlTWFwcGluZy51aVNvdXJjZUNvZGU7
Ci0gICAgICAgIHRoaXMuX3NvdXJjZU1hcHBpbmcgPSBzb3VyY2VNYXBwaW5nOwotICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5F
dmVudHMuU291cmNlTWFwcGluZ1VwZGF0ZWQsIHsgb2xkVUlTb3VyY2VDb2RlOiBvbGRVSVNvdXJj
ZUNvZGUgfSk7Ci0gICAgfQotfQotCi1XZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5wcm90b3R5
cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7Ci0KLQotLyoqCi0g
KiBAY29uc3RydWN0b3IKLSAqLwotV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuUGxhaW5Tb3Vy
Y2VNYXBwaW5nID0gZnVuY3Rpb24ocmF3U291cmNlQ29kZSwgdWlTb3VyY2VDb2RlKQotewotICAg
IHRoaXMuX3Jhd1NvdXJjZUNvZGUgPSByYXdTb3VyY2VDb2RlOwotICAgIHRoaXMuX3VpU291cmNl
Q29kZSA9IHVpU291cmNlQ29kZTsKLX0KLQotV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuUGxh
aW5Tb3VyY2VNYXBwaW5nLnByb3RvdHlwZSA9IHsKLSAgICByYXdMb2NhdGlvblRvVUlMb2NhdGlv
bjogZnVuY3Rpb24ocmF3TG9jYXRpb24pCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IFdlYklu
c3BlY3Rvci5VSUxvY2F0aW9uKHRoaXMuX3VpU291cmNlQ29kZSwgcmF3TG9jYXRpb24ubGluZU51
bWJlciwgcmF3TG9jYXRpb24uY29sdW1uTnVtYmVyKTsKLSAgICB9LAotCi0gICAgdWlMb2NhdGlv
blRvUmF3TG9jYXRpb246IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKLSAgICB7
Ci0gICAgICAgIHZhciByYXdMb2NhdGlvbiA9IHsgbGluZU51bWJlcjogbGluZU51bWJlciwgY29s
dW1uTnVtYmVyOiBjb2x1bW5OdW1iZXIgfTsKLSAgICAgICAgcmF3TG9jYXRpb24uc2NyaXB0SWQg
PSB0aGlzLl9yYXdTb3VyY2VDb2RlLl9zY3JpcHRGb3JSYXdMb2NhdGlvbihyYXdMb2NhdGlvbi5s
aW5lTnVtYmVyLCByYXdMb2NhdGlvbi5jb2x1bW5OdW1iZXIpLnNjcmlwdElkOwotICAgICAgICBy
ZXR1cm4gcmF3TG9jYXRpb247Ci0gICAgfSwKLQotICAgIGdldCB1aVNvdXJjZUNvZGUoKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3VpU291cmNlQ29kZTsKLSAgICB9Ci19Ci0KLS8qKgot
ICogQGNvbnN0cnVjdG9yCi0gKi8KLVdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkZvcm1hdHRl
ZFNvdXJjZU1hcHBpbmcgPSBmdW5jdGlvbihyYXdTb3VyY2VDb2RlLCB1aVNvdXJjZUNvZGUsIG1h
cHBpbmcpCi17Ci0gICAgdGhpcy5fcmF3U291cmNlQ29kZSA9IHJhd1NvdXJjZUNvZGU7Ci0gICAg
dGhpcy5fdWlTb3VyY2VDb2RlID0gdWlTb3VyY2VDb2RlOwotICAgIHRoaXMuX21hcHBpbmcgPSBt
YXBwaW5nOwotfQotCi1XZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5Gb3JtYXR0ZWRTb3VyY2VN
YXBwaW5nLnByb3RvdHlwZSA9IHsKLSAgICByYXdMb2NhdGlvblRvVUlMb2NhdGlvbjogZnVuY3Rp
b24ocmF3TG9jYXRpb24pCi0gICAgewotICAgICAgICB2YXIgbG9jYXRpb24gPSB0aGlzLl9tYXBw
aW5nLm9yaWdpbmFsVG9Gb3JtYXR0ZWQocmF3TG9jYXRpb24pOwotICAgICAgICByZXR1cm4gbmV3
IFdlYkluc3BlY3Rvci5VSUxvY2F0aW9uKHRoaXMuX3VpU291cmNlQ29kZSwgbG9jYXRpb24ubGlu
ZU51bWJlciwgbG9jYXRpb24uY29sdW1uTnVtYmVyKTsKLSAgICB9LAotCi0gICAgdWlMb2NhdGlv
blRvUmF3TG9jYXRpb246IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKLSAgICB7
Ci0gICAgICAgIHZhciByYXdMb2NhdGlvbiA9IHRoaXMuX21hcHBpbmcuZm9ybWF0dGVkVG9Pcmln
aW5hbCh7IGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcjogY29sdW1uTnVtYmVy
IH0pOwotICAgICAgICByYXdMb2NhdGlvbi5zY3JpcHRJZCA9IHRoaXMuX3Jhd1NvdXJjZUNvZGUu
X3NjcmlwdEZvclJhd0xvY2F0aW9uKHJhd0xvY2F0aW9uLmxpbmVOdW1iZXIsIHJhd0xvY2F0aW9u
LmNvbHVtbk51bWJlcikuc2NyaXB0SWQ7Ci0gICAgICAgIHJldHVybiByYXdMb2NhdGlvbjsKLSAg
ICB9LAotCi0gICAgZ2V0IHVpU291cmNlQ29kZSgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhp
cy5fdWlTb3VyY2VDb2RlOwotICAgIH0KLX0KLQotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICov
Ci1XZWJJbnNwZWN0b3IuVUlMb2NhdGlvbiA9IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgbGluZU51
bWJlciwgY29sdW1uTnVtYmVyKQotewotICAgIHRoaXMudWlTb3VyY2VDb2RlID0gdWlTb3VyY2VD
b2RlOwotICAgIHRoaXMubGluZU51bWJlciA9IGxpbmVOdW1iZXI7Ci0gICAgdGhpcy5jb2x1bW5O
dW1iZXIgPSBjb2x1bW5OdW1iZXI7Ci19Ci0KLQotLyoqCi0gKiBAY29uc3RydWN0b3IKLSAqIEBp
bXBsZW1lbnRzIHtXZWJJbnNwZWN0b3IuQ29udGVudFByb3ZpZGVyfQotICovCi1XZWJJbnNwZWN0
b3IuU2NyaXB0Q29udGVudFByb3ZpZGVyID0gZnVuY3Rpb24oc2NyaXB0KQotewotICAgIHRoaXMu
X21pbWVUeXBlID0gInRleHQvamF2YXNjcmlwdCI7Ci0gICAgdGhpcy5fc2NyaXB0ID0gc2NyaXB0
OwotfTsKLQotV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRQcm92aWRlci5wcm90b3R5cGUgPSB7
Ci0gICAgcmVxdWVzdENvbnRlbnQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAg
ZnVuY3Rpb24gZGlkUmVxdWVzdFNvdXJjZShzb3VyY2UpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGNhbGxiYWNrKHRoaXMuX21pbWVUeXBlLCBzb3VyY2UpOwotICAgICAgICB9Ci0gICAgICAgIHRo
aXMuX3NjcmlwdC5yZXF1ZXN0U291cmNlKGRpZFJlcXVlc3RTb3VyY2UuYmluZCh0aGlzKSk7Ci0g
ICAgfQotfQotCi1XZWJJbnNwZWN0b3IuU2NyaXB0Q29udGVudFByb3ZpZGVyLnByb3RvdHlwZS5f
X3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQ29udGVudFByb3ZpZGVyLnByb3RvdHlwZTsKLQotLyoq
Ci0gKiBAY29uc3RydWN0b3IKLSAqIEBpbXBsZW1lbnRzIHtXZWJJbnNwZWN0b3IuQ29udGVudFBy
b3ZpZGVyfQotICovCi1XZWJJbnNwZWN0b3IuQ29uY2F0ZW5hdGVkU2NyaXB0c0NvbnRlbnRQcm92
aWRlciA9IGZ1bmN0aW9uKHNjcmlwdHMpCi17Ci0gICAgdGhpcy5fbWltZVR5cGUgPSAidGV4dC9o
dG1sIjsKLSAgICB0aGlzLl9zY3JpcHRzID0gc2NyaXB0czsKLX07Ci0KLVdlYkluc3BlY3Rvci5D
b25jYXRlbmF0ZWRTY3JpcHRzQ29udGVudFByb3ZpZGVyLnByb3RvdHlwZSA9IHsKLSAgIHJlcXVl
c3RDb250ZW50OiBmdW5jdGlvbihjYWxsYmFjaykKLSAgIHsKLSAgICAgICB2YXIgc2NyaXB0cyA9
IHRoaXMuX3NjcmlwdHMuc2xpY2UoKTsKLSAgICAgICBzY3JpcHRzLnNvcnQoZnVuY3Rpb24oeCwg
eSkgeyByZXR1cm4geC5saW5lT2Zmc2V0IC0geS5saW5lT2Zmc2V0IHx8IHguY29sdW1uT2Zmc2V0
IC0geS5jb2x1bW5PZmZzZXQ7IH0pOwotICAgICAgIHZhciBzb3VyY2VzID0gW107Ci0gICAgICAg
ZnVuY3Rpb24gZGlkUmVxdWVzdFNvdXJjZShzb3VyY2UpCi0gICAgICAgewotICAgICAgICAgICBz
b3VyY2VzLnB1c2goc291cmNlKTsKLSAgICAgICAgICAgaWYgKHNvdXJjZXMubGVuZ3RoID09IHNj
cmlwdHMubGVuZ3RoKQotICAgICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5fbWltZVR5cGUsIHRo
aXMuX2NvbmNhdGVuYXRlU2NyaXB0c0NvbnRlbnQoc2NyaXB0cywgc291cmNlcykpOwotICAgICAg
IH0KLSAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyArK2kpCi0gICAg
ICAgICAgIHNjcmlwdHNbaV0ucmVxdWVzdFNvdXJjZShkaWRSZXF1ZXN0U291cmNlLmJpbmQodGhp
cykpOwotICAgfSwKLQotICAgX2NvbmNhdGVuYXRlU2NyaXB0c0NvbnRlbnQ6IGZ1bmN0aW9uKHNj
cmlwdHMsIHNvdXJjZXMpCi0gICB7Ci0gICAgICAgdmFyIGNvbnRlbnQgPSAiIjsKLSAgICAgICB2
YXIgbGluZU51bWJlciA9IDA7Ci0gICAgICAgdmFyIGNvbHVtbk51bWJlciA9IDA7Ci0KLSAgICAg
ICBmdW5jdGlvbiBhcHBlbmRDaHVuayhjaHVuaykKLSAgICAgICB7Ci0gICAgICAgICAgIGNvbnRl
bnQgKz0gY2h1bms7Ci0gICAgICAgICAgIHZhciBsaW5lRW5kaW5ncyA9IGNodW5rLmxpbmVFbmRp
bmdzKCk7Ci0gICAgICAgICAgIHZhciBsaW5lQ291bnQgPSBsaW5lRW5kaW5ncy5sZW5ndGg7Ci0g
ICAgICAgICAgIGlmIChsaW5lQ291bnQgPT09IDEpCi0gICAgICAgICAgICAgICBjb2x1bW5OdW1i
ZXIgKz0gY2h1bmsubGVuZ3RoOwotICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgIGxp
bmVOdW1iZXIgKz0gbGluZUNvdW50IC0gMTsKLSAgICAgICAgICAgICAgIGNvbHVtbk51bWJlciA9
IGxpbmVFbmRpbmdzW2xpbmVDb3VudCAtIDFdIC0gbGluZUVuZGluZ3NbbGluZUNvdW50IC0gMl0g
LSAxOwotICAgICAgICAgICB9Ci0gICAgICAgfQotCi0gICAgICAgdmFyIHNjcmlwdE9wZW5UYWcg
PSAiPHNjcmlwdD4iOwotICAgICAgIHZhciBzY3JpcHRDbG9zZVRhZyA9ICI8L3NjcmlwdD4iOwot
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7ICsraSkgewotICAgICAg
ICAgICBpZiAobGluZU51bWJlciA+IHNjcmlwdHNbaV0ubGluZU9mZnNldCB8fCAobGluZU51bWJl
ciA9PT0gc2NyaXB0c1tpXS5saW5lT2Zmc2V0ICYmIGNvbHVtbk51bWJlciA+IHNjcmlwdHNbaV0u
Y29sdW1uT2Zmc2V0IC0gc2NyaXB0T3BlblRhZy5sZW5ndGgpKQotICAgICAgICAgICAgICAgY29u
dGludWU7Ci0KLSAgICAgICAgICAgLy8gRmlsbCB0aGUgZ2FwIHdpdGggd2hpdGVzcGFjZSBjaGFy
YWN0ZXJzLgotICAgICAgICAgICB3aGlsZSAobGluZU51bWJlciA8IHNjcmlwdHNbaV0ubGluZU9m
ZnNldCkKLSAgICAgICAgICAgICAgIGFwcGVuZENodW5rKCJcbiIpOwotICAgICAgICAgICB3aGls
ZSAoY29sdW1uTnVtYmVyIDwgc2NyaXB0c1tpXS5jb2x1bW5PZmZzZXQgLSBzY3JpcHRPcGVuVGFn
Lmxlbmd0aCkKLSAgICAgICAgICAgICAgIGFwcGVuZENodW5rKCIgIik7Ci0KLSAgICAgICAgICAg
Ly8gQWRkIHNjcmlwdCB0YWcuCi0gICAgICAgICAgIGFwcGVuZENodW5rKHNjcmlwdE9wZW5UYWcp
OwotICAgICAgICAgICBhcHBlbmRDaHVuayhzb3VyY2VzW2ldKTsKLSAgICAgICAgICAgYXBwZW5k
Q2h1bmsoc2NyaXB0Q2xvc2VUYWcpOwotICAgICAgIH0KLQotICAgICAgIHJldHVybiBjb250ZW50
OwotICAgfQotfQotCi1XZWJJbnNwZWN0b3IuQ29uY2F0ZW5hdGVkU2NyaXB0c0NvbnRlbnRQcm92
aWRlci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRQcm92aWRlci5w
cm90b3R5cGU7Ci0KLS8qKgotICogQGNvbnN0cnVjdG9yCi0gKiBAaW1wbGVtZW50cyB7V2ViSW5z
cGVjdG9yLkNvbnRlbnRQcm92aWRlcn0KLSAqLwotV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVu
dFByb3ZpZGVyID0gZnVuY3Rpb24ocmVzb3VyY2UpCi17Ci0gICAgdGhpcy5fbWltZVR5cGUgPSBy
ZXNvdXJjZS50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQgPyAidGV4
dC9qYXZhc2NyaXB0IiA6ICJ0ZXh0L2h0bWwiOwotICAgIHRoaXMuX3Jlc291cmNlID0gcmVzb3Vy
Y2U7Ci19OwotCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50UHJvdmlkZXIucHJvdG90eXBl
ID0gewotICAgIHJlcXVlc3RDb250ZW50OiBmdW5jdGlvbihjYWxsYmFjaykKLSAgICB7Ci0gICAg
ICAgIGZ1bmN0aW9uIGRpZFJlcXVlc3RDb250ZW50KGNvbnRlbnQpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGNhbGxiYWNrKHRoaXMuX21pbWVUeXBlLCBjb250ZW50KTsKLSAgICAgICAgfQotICAg
ICAgICB0aGlzLl9yZXNvdXJjZS5yZXF1ZXN0Q29udGVudChkaWRSZXF1ZXN0Q29udGVudC5iaW5k
KHRoaXMpKTsKLSAgICB9Ci19Ci0KLVdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRQcm92aWRl
ci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRQcm92aWRlci5wcm90
b3R5cGU7Ci0KLQotV2ViSW5zcGVjdG9yLlN0YXRpY0NvbnRlbnRQcm92aWRlciA9IGZ1bmN0aW9u
KG1pbWVUeXBlLCBjb250ZW50KQotewotICAgIHRoaXMuX21pbWVUeXBlID0gbWltZVR5cGU7Ci0g
ICAgdGhpcy5fY29udGVudCA9IGNvbnRlbnQ7Ci19OwotCi1XZWJJbnNwZWN0b3IuU3RhdGljQ29u
dGVudFByb3ZpZGVyLnByb3RvdHlwZSA9IHsKLSAgICByZXF1ZXN0Q29udGVudDogZnVuY3Rpb24o
Y2FsbGJhY2spCi0gICAgewotICAgICAgICBjYWxsYmFjayh0aGlzLl9taW1lVHlwZSwgdGhpcy5f
Y29udGVudCk7Ci0gICAgfQotfQotCi1XZWJJbnNwZWN0b3IuU3RhdGljQ29udGVudFByb3ZpZGVy
LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQ29udGVudFByb3ZpZGVyLnByb3Rv
dHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVUlT
b3VyY2VDb2RlQ29udGVudFByb3ZpZGVycy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvVUlTb3VyY2VDb2RlQ29udGVudFByb3ZpZGVycy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMGFk
ODhlZmVjYmU3NjFjNWU5MjNiN2Q2NzdmNDNkZDc4MGQ1NmI5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVNvdXJjZUNvZGVDb250ZW50UHJv
dmlkZXJzLmpzCkBAIC0wLDAgKzEsMTYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBpbXBs
ZW1lbnRzIHtXZWJJbnNwZWN0b3IuQ29udGVudFByb3ZpZGVyfQorICovCitXZWJJbnNwZWN0b3Iu
U2NyaXB0Q29udGVudFByb3ZpZGVyID0gZnVuY3Rpb24oc2NyaXB0KQoreworICAgIHRoaXMuX21p
bWVUeXBlID0gInRleHQvamF2YXNjcmlwdCI7CisgICAgdGhpcy5fc2NyaXB0ID0gc2NyaXB0Owor
fTsKKworV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRQcm92aWRlci5wcm90b3R5cGUgPSB7Cisg
ICAgcmVxdWVzdENvbnRlbnQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgZnVu
Y3Rpb24gZGlkUmVxdWVzdFNvdXJjZShzb3VyY2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNh
bGxiYWNrKHRoaXMuX21pbWVUeXBlLCBzb3VyY2UpOworICAgICAgICB9CisgICAgICAgIHRoaXMu
X3NjcmlwdC5yZXF1ZXN0U291cmNlKGRpZFJlcXVlc3RTb3VyY2UuYmluZCh0aGlzKSk7CisgICAg
fQorfQorCitXZWJJbnNwZWN0b3IuU2NyaXB0Q29udGVudFByb3ZpZGVyLnByb3RvdHlwZS5fX3By
b3RvX18gPSBXZWJJbnNwZWN0b3IuQ29udGVudFByb3ZpZGVyLnByb3RvdHlwZTsKKworLyoqCisg
KiBAY29uc3RydWN0b3IKKyAqIEBpbXBsZW1lbnRzIHtXZWJJbnNwZWN0b3IuQ29udGVudFByb3Zp
ZGVyfQorICovCitXZWJJbnNwZWN0b3IuQ29uY2F0ZW5hdGVkU2NyaXB0c0NvbnRlbnRQcm92aWRl
ciA9IGZ1bmN0aW9uKHNjcmlwdHMpCit7CisgICAgdGhpcy5fbWltZVR5cGUgPSAidGV4dC9odG1s
IjsKKyAgICB0aGlzLl9zY3JpcHRzID0gc2NyaXB0czsKK307CisKK1dlYkluc3BlY3Rvci5Db25j
YXRlbmF0ZWRTY3JpcHRzQ29udGVudFByb3ZpZGVyLnByb3RvdHlwZSA9IHsKKyAgIHJlcXVlc3RD
b250ZW50OiBmdW5jdGlvbihjYWxsYmFjaykKKyAgIHsKKyAgICAgICB2YXIgc2NyaXB0cyA9IHRo
aXMuX3NjcmlwdHMuc2xpY2UoKTsKKyAgICAgICBzY3JpcHRzLnNvcnQoZnVuY3Rpb24oeCwgeSkg
eyByZXR1cm4geC5saW5lT2Zmc2V0IC0geS5saW5lT2Zmc2V0IHx8IHguY29sdW1uT2Zmc2V0IC0g
eS5jb2x1bW5PZmZzZXQ7IH0pOworICAgICAgIHZhciBzb3VyY2VzID0gW107CisgICAgICAgZnVu
Y3Rpb24gZGlkUmVxdWVzdFNvdXJjZShzb3VyY2UpCisgICAgICAgeworICAgICAgICAgICBzb3Vy
Y2VzLnB1c2goc291cmNlKTsKKyAgICAgICAgICAgaWYgKHNvdXJjZXMubGVuZ3RoID09IHNjcmlw
dHMubGVuZ3RoKQorICAgICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5fbWltZVR5cGUsIHRoaXMu
X2NvbmNhdGVuYXRlU2NyaXB0c0NvbnRlbnQoc2NyaXB0cywgc291cmNlcykpOworICAgICAgIH0K
KyAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyArK2kpCisgICAgICAg
ICAgIHNjcmlwdHNbaV0ucmVxdWVzdFNvdXJjZShkaWRSZXF1ZXN0U291cmNlLmJpbmQodGhpcykp
OworICAgfSwKKworICAgX2NvbmNhdGVuYXRlU2NyaXB0c0NvbnRlbnQ6IGZ1bmN0aW9uKHNjcmlw
dHMsIHNvdXJjZXMpCisgICB7CisgICAgICAgdmFyIGNvbnRlbnQgPSAiIjsKKyAgICAgICB2YXIg
bGluZU51bWJlciA9IDA7CisgICAgICAgdmFyIGNvbHVtbk51bWJlciA9IDA7CisKKyAgICAgICBm
dW5jdGlvbiBhcHBlbmRDaHVuayhjaHVuaykKKyAgICAgICB7CisgICAgICAgICAgIGNvbnRlbnQg
Kz0gY2h1bms7CisgICAgICAgICAgIHZhciBsaW5lRW5kaW5ncyA9IGNodW5rLmxpbmVFbmRpbmdz
KCk7CisgICAgICAgICAgIHZhciBsaW5lQ291bnQgPSBsaW5lRW5kaW5ncy5sZW5ndGg7CisgICAg
ICAgICAgIGlmIChsaW5lQ291bnQgPT09IDEpCisgICAgICAgICAgICAgICBjb2x1bW5OdW1iZXIg
Kz0gY2h1bmsubGVuZ3RoOworICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgIGxpbmVO
dW1iZXIgKz0gbGluZUNvdW50IC0gMTsKKyAgICAgICAgICAgICAgIGNvbHVtbk51bWJlciA9IGxp
bmVFbmRpbmdzW2xpbmVDb3VudCAtIDFdIC0gbGluZUVuZGluZ3NbbGluZUNvdW50IC0gMl0gLSAx
OworICAgICAgICAgICB9CisgICAgICAgfQorCisgICAgICAgdmFyIHNjcmlwdE9wZW5UYWcgPSAi
PHNjcmlwdD4iOworICAgICAgIHZhciBzY3JpcHRDbG9zZVRhZyA9ICI8L3NjcmlwdD4iOworICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7ICsraSkgeworICAgICAgICAg
ICBpZiAobGluZU51bWJlciA+IHNjcmlwdHNbaV0ubGluZU9mZnNldCB8fCAobGluZU51bWJlciA9
PT0gc2NyaXB0c1tpXS5saW5lT2Zmc2V0ICYmIGNvbHVtbk51bWJlciA+IHNjcmlwdHNbaV0uY29s
dW1uT2Zmc2V0IC0gc2NyaXB0T3BlblRhZy5sZW5ndGgpKQorICAgICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgICAgLy8gRmlsbCB0aGUgZ2FwIHdpdGggd2hpdGVzcGFjZSBjaGFyYWN0
ZXJzLgorICAgICAgICAgICB3aGlsZSAobGluZU51bWJlciA8IHNjcmlwdHNbaV0ubGluZU9mZnNl
dCkKKyAgICAgICAgICAgICAgIGFwcGVuZENodW5rKCJcbiIpOworICAgICAgICAgICB3aGlsZSAo
Y29sdW1uTnVtYmVyIDwgc2NyaXB0c1tpXS5jb2x1bW5PZmZzZXQgLSBzY3JpcHRPcGVuVGFnLmxl
bmd0aCkKKyAgICAgICAgICAgICAgIGFwcGVuZENodW5rKCIgIik7CisKKyAgICAgICAgICAgLy8g
QWRkIHNjcmlwdCB0YWcuCisgICAgICAgICAgIGFwcGVuZENodW5rKHNjcmlwdE9wZW5UYWcpOwor
ICAgICAgICAgICBhcHBlbmRDaHVuayhzb3VyY2VzW2ldKTsKKyAgICAgICAgICAgYXBwZW5kQ2h1
bmsoc2NyaXB0Q2xvc2VUYWcpOworICAgICAgIH0KKworICAgICAgIHJldHVybiBjb250ZW50Owor
ICAgfQorfQorCitXZWJJbnNwZWN0b3IuQ29uY2F0ZW5hdGVkU2NyaXB0c0NvbnRlbnRQcm92aWRl
ci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRQcm92aWRlci5wcm90
b3R5cGU7CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAaW1wbGVtZW50cyB7V2ViSW5zcGVj
dG9yLkNvbnRlbnRQcm92aWRlcn0KKyAqLworV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFBy
b3ZpZGVyID0gZnVuY3Rpb24ocmVzb3VyY2UpCit7CisgICAgdGhpcy5fbWltZVR5cGUgPSByZXNv
dXJjZS50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQgPyAidGV4dC9q
YXZhc2NyaXB0IiA6ICJ0ZXh0L2h0bWwiOworICAgIHRoaXMuX3Jlc291cmNlID0gcmVzb3VyY2U7
Cit9OworCitXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50UHJvdmlkZXIucHJvdG90eXBlID0g
eworICAgIHJlcXVlc3RDb250ZW50OiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICB7CisgICAgICAg
IGZ1bmN0aW9uIGRpZFJlcXVlc3RDb250ZW50KGNvbnRlbnQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNhbGxiYWNrKHRoaXMuX21pbWVUeXBlLCBjb250ZW50KTsKKyAgICAgICAgfQorICAgICAg
ICB0aGlzLl9yZXNvdXJjZS5yZXF1ZXN0Q29udGVudChkaWRSZXF1ZXN0Q29udGVudC5iaW5kKHRo
aXMpKTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRQcm92aWRlci5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRQcm92aWRlci5wcm90b3R5
cGU7CisKKworV2ViSW5zcGVjdG9yLlN0YXRpY0NvbnRlbnRQcm92aWRlciA9IGZ1bmN0aW9uKG1p
bWVUeXBlLCBjb250ZW50KQoreworICAgIHRoaXMuX21pbWVUeXBlID0gbWltZVR5cGU7CisgICAg
dGhpcy5fY29udGVudCA9IGNvbnRlbnQ7Cit9OworCitXZWJJbnNwZWN0b3IuU3RhdGljQ29udGVu
dFByb3ZpZGVyLnByb3RvdHlwZSA9IHsKKyAgICByZXF1ZXN0Q29udGVudDogZnVuY3Rpb24oY2Fs
bGJhY2spCisgICAgeworICAgICAgICBjYWxsYmFjayh0aGlzLl9taW1lVHlwZSwgdGhpcy5fY29u
dGVudCk7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuU3RhdGljQ29udGVudFByb3ZpZGVyLnBy
b3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQ29udGVudFByb3ZpZGVyLnByb3RvdHlw
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0
LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwppbmRl
eCBkMjdhY2I1ZTM4MzhkN2RmNmU3YjRjYjYxMTRiOTI3Y2JhMWQ4MWZlLi5mNjNhMmFmNWE4MTEz
ZTgxZDQ0ZWUzMzI5NDM4MDllMTUzZTEwOWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC0zNSw3ICszNSw2IEBACiAgICAgPGZpbGU+RGF0
YUdyaWQuanM8L2ZpbGU+CiAgICAgPGZpbGU+RGVidWdnZXJNb2RlbC5qczwvZmlsZT4KICAgICA8
ZmlsZT5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzPC9maWxlPgotICAgIDxmaWxlPlNvdXJj
ZUZpbGUuanM8L2ZpbGU+CiAgICAgPGZpbGU+RE9NQWdlbnQuanM8L2ZpbGU+CiAgICAgPGZpbGU+
RE9NQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qczwvZmlsZT4KICAgICA8ZmlsZT5ET01TdG9yYWdl
LmpzPC9maWxlPgpAQCAtODYsNiArODUsNyBAQAogICAgIDxmaWxlPlByb2ZpbGVWaWV3LmpzPC9m
aWxlPgogICAgIDxmaWxlPlByb3BlcnRpZXNTZWN0aW9uLmpzPC9maWxlPgogICAgIDxmaWxlPlBy
b3BlcnRpZXNTaWRlYmFyUGFuZS5qczwvZmlsZT4KKyAgICA8ZmlsZT5SYXdTb3VyY2VDb2RlLmpz
PC9maWxlPgogICAgIDxmaWxlPlJlbW90ZU9iamVjdC5qczwvZmlsZT4KICAgICA8ZmlsZT5SZXNv
dXJjZS5qczwvZmlsZT4KICAgICA8ZmlsZT5SZXNvdXJjZUNhdGVnb3J5LmpzPC9maWxlPgpAQCAt
MTM0LDYgKzEzNCw3IEBACiAgICAgPGZpbGU+VG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUuanM8
L2ZpbGU+CiAgICAgPGZpbGU+dHJlZW91dGxpbmUuanM8L2ZpbGU+CiAgICAgPGZpbGU+VUlTb3Vy
Y2VDb2RlLmpzPC9maWxlPgorICAgIDxmaWxlPlVJU291cmNlQ29kZUNvbnRlbnRQcm92aWRlcnMu
anM8L2ZpbGU+CiAgICAgPGZpbGU+VXNlck1ldHJpY3MuanM8L2ZpbGU+CiAgICAgPGZpbGU+dXRp
bGl0aWVzLmpzPC9maWxlPgogICAgIDxmaWxlPlZpZXcuanM8L2ZpbGU+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCA0ODBkNmY1
NTllMDA2NWFjZDE0NTExNzkyYWFiYWI0MzcwZTQzMjcyLi40ZTJjOGRmMjE3OThkMWVkNzVlNDdi
ZjU0YzcwMzkxNGE3NDVlYjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKQEAgLTE2MCw3ICsxNjAsOCBAQCBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRlYnVnZ2VyUHJlc2VudGF0aW9u
TW9kZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9IkJyZWFrcG9pbnRNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSJVSVNvdXJjZUNvZGUuanMiPjwvc2NyaXB0PgotICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNvdXJjZUZpbGUuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlVJU291cmNlQ29kZUNvbnRl
bnRQcm92aWRlcnMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9IlJhd1NvdXJjZUNvZGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9IkNvbXBpbGVyU291cmNlTWFwcGluZy5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRE9NQWdlbnQuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlRpbWVsaW5l
QWdlbnQuanMiPjwvc2NyaXB0Pgo=
</data>
<flag name="review"
          id="106292"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>