<?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>86594</bug_id>
          
          <creation_ts>2012-05-16 01:30:18 -0700</creation_ts>
          <short_desc>Web Inspector: rename DebuggerPresentationModel to DebuggerScriptMapping, make it private to ScriptsPanel.</short_desc>
          <delta_ts>2012-05-16 01:56:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</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>625119</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-05-16 01:30:18 -0700</bug_when>
    <thetext>This change completes the elimination of the presentation model.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625124</commentid>
    <comment_count>1</comment_count>
      <attachid>142190</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-05-16 01:32:45 -0700</bug_when>
    <thetext>Created attachment 142190
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625131</commentid>
    <comment_count>2</comment_count>
      <attachid>142190</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-05-16 01:37:45 -0700</bug_when>
    <thetext>Comment on attachment 142190
Patch

Attachment 142190 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12708478</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625149</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-05-16 01:56:15 -0700</bug_when>
    <thetext>Committed r117235: &lt;http://trac.webkit.org/changeset/117235&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142190</attachid>
            <date>2012-05-16 01:32:45 -0700</date>
            <delta_ts>2012-05-16 01:53:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86594-20120516123243.patch</filename>
            <type>text/plain</type>
            <size>45407</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3MjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjExODA2YTJiNTU1MDcy
YWEzZmM2NjA3NzI4YmVmM2EzZWI3M2ZiNi4uOTIzZDViMmJmZGE5OWZmZGYzNzA5Yjk0ZjU1MzRh
MzcwODk1NThhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTA1LTE2ICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHJlbmFtZSBEZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsIHRvIERlYnVnZ2VyU2NyaXB0TWFw
cGluZywgbWFrZSBpdCBwcml2YXRlIHRvIFNjcmlwdHNQYW5lbC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NTk0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgY29tcGxldGVzIHRoZSBl
bGltaW5hdGlvbiBvZiB0aGUgcHJlc2VudGF0aW9uIG1vZGVsLgorCisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAg
ICAqIGluc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0F1ZGl0Rm9ybWF0dGVycy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRp
dEZvcm1hdHRlcnMucmVzb3VyY2VMaW5rKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0RlYnVnZ2VyUmVzb3VyY2VCaW5kaW5nLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyUmVzb3VyY2VCaW5kaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclJlc291
cmNlQmluZGluZy5wcm90b3R5cGUuX3VpU291cmNlQ29kZUZvclJlc291cmNlKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyU2NyaXB0TWFwcGluZy5qczogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbC5qcy4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNjcmlwdE1hcHBpbmcp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2NyaXB0TWFwcGluZy5wcm90b3R5cGUu
X2hhbmRsZVVJU291cmNlQ29kZUxpc3RDaGFuZ2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL0ZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZy5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5PcGVuU2NyaXB0RGlhbG9nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PcGVuU2NyaXB0
RGlhbG9nLmluc3RhbGwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk9wZW5TY3JpcHREaWFsb2cu
X3Nob3cpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlwdFNvdXJjZUZy
YW1lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VGcmFtZSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9QcmVzZW50YXRpb25Db25zb2xlTWVzc2FnZUhl
bHBlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5QcmVzZW50YXRpb25Db25zb2xlTWVzc2Fn
ZUhlbHBlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQ29uc29sZU1lc3Nh
Z2VIZWxwZXIucHJvdG90eXBlLl9jb25zb2xlQ2xlYXJlZCk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0
c1BhbmVsLnByb3RvdHlwZS5fbG9hZFVJU291cmNlQ29kZXMpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX2NyZWF0ZVNvdXJjZUZyYW1lKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl90b2dnbGVGb3JtYXRTb3VyY2Up
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1NlYXJjaFNjb3BlLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNTZWFyY2hTY29wZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU2NyaXB0c1NlYXJjaFNjb3BlLnByb3RvdHlwZS5fc29ydGVkVUlTb3VyY2VDb2Rl
cyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9VSVNvdXJjZUNvZGUuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlUHJvamVjdCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVUlTb3VyY2VDb2RlUHJvamVjdC5wcm90b3R5cGUudWlTb3VyY2VDb2Rlcyk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuX2NyZWF0ZVBhbmVscyk6CisK
IDIwMTItMDUtMTYgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMTcwNTAuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
aW5kZXggOTIyMjM1ZjgwMTEwZTdiMTg3Y2YyMzZlOThlOWQ1YzdlYWFmMTcwOC4uZjBiNzBiMjkz
N2Q4NjQ5ZTg4MmM0MDFjMjczNzM1MGJhNjMwMzE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjM3
Miw4ICs2MzcyLDggQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNl
VGFibGVWaWV3LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFHcmlk
LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMn
LAotICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclJlc291
cmNlQmluZGluZy5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dl
clNjcmlwdE1hcHBpbmcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRGlh
bG9nLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzJywK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUJyZWFrcG9pbnRzU2lkZWJhclBh
bmUuanMnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpp
bmRleCAzYjI4MjE3MzliNWQ2MDc4ZjM3NWQwMDE5NWJkYmQwOWYzMGUzZTk3Li4yMDNjMzU3MTVl
NjJiNjUzYWE1Yzc5NDg0MTM2OTUyODVjODFkZmQyIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzQyNDUsMTEgKzc0MjQ1LDExIEBACiAJCQkJ
CT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0
b3JcZnJvbnQtZW5kXERlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanMiCisJCQkJCVJlbGF0aXZl
UGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxEZWJ1Z2dlclJlc291cmNlQmluZGluZy5qcyIK
IAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGlu
c3BlY3Rvclxmcm9udC1lbmRcRGVidWdnZXJSZXNvdXJjZUJpbmRpbmcuanMiCisJCQkJCVJlbGF0
aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxEZWJ1Z2dlclNjcmlwdE1hcHBpbmcuanMi
CiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weSBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9jb21waWxlLWZyb250LWVuZC5weQppbmRleCBjYTc0NWY0Yjk0NTllZTAwNjE3YWI5NTE5
MzI5Nzg1N2NmN2RjNWYyLi4yZmVlYTY3NWRiNzYzZDA5MTc5MGQ2ZGM3NjdkNDMwYmMxYzY4NTRl
IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQu
cHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CkBA
IC03Myw4ICs3Myw4IEBAIG1vZHVsZXMgPSBbCiAgICAgICAgICAgICAiRE9NQWdlbnQuanMiLAog
ICAgICAgICAgICAgIkRPTVN0b3JhZ2UuanMiLAogICAgICAgICAgICAgIkRlYnVnZ2VyTW9kZWwu
anMiLAotICAgICAgICAgICAgIkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanMiLAogICAgICAg
ICAgICAgIkRlYnVnZ2VyUmVzb3VyY2VCaW5kaW5nLmpzIiwKKyAgICAgICAgICAgICJEZWJ1Z2dl
clNjcmlwdE1hcHBpbmcuanMiLAogICAgICAgICAgICAgIkZpbGVNYW5hZ2VyLmpzIiwKICAgICAg
ICAgICAgICJIQVJFbnRyeS5qcyIsCiAgICAgICAgICAgICAiSW5kZXhlZERCTW9kZWwuanMiLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdEZvcm1h
dHRlcnMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0Rm9ybWF0
dGVycy5qcwppbmRleCA1ZjIwMzdiN2E3ZmFiODEyMmEyYWMyYjE2ZjNjOGY1YmU4NGJkYWExLi5k
YTU1YjU0M2ViOTE0OWI3MmQ5ZDkzMTJhMTcxYjc4NWNkMTRhZGU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0Rm9ybWF0dGVycy5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0Rm9ybWF0dGVycy5qcwpAQCAt
OTQsNyArOTQsNyBAQCBXZWJJbnNwZWN0b3IuQXVkaXRGb3JtYXR0ZXJzID0gewogCiAgICAgcmVz
b3VyY2VMaW5rOiBmdW5jdGlvbih1cmwsIGxpbmUpCiAgICAgewotICAgICAgICAvLyBGSVhNRTog
dXNlIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkxpbmtpZmllcgorICAg
ICAgICAvLyBGSVhNRTogdXNlIFdlYkluc3BlY3Rvci5MaW5raWZpZXIKICAgICAgICAgcmV0dXJu
IFdlYkluc3BlY3Rvci5saW5raWZ5UmVzb3VyY2VBc05vZGUodXJsLCBsaW5lLCAiY29uc29sZS1t
ZXNzYWdlLXVybCB3ZWJraXQtaHRtbC1yZXNvdXJjZS1saW5rIik7CiAgICAgfSwKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRh
dGlvbk1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dl
clByZXNlbnRhdGlvbk1vZGVsLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmJm
M2Y4NjZiNzE0MzMwNWIxMDE4YTNlODQzZmMyNDRkMzE2YTJkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcworKysgL2Rldi9udWxsCkBAIC0xLDEz
NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6
Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotLyoqCi0gKiBAY29uc3RydWN0b3IKLSAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3Iu
T2JqZWN0fQotICovCi1XZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbCA9IGZ1
bmN0aW9uKCkKLXsKLSAgICB0aGlzLl9tYXBwaW5ncyA9IFtdOwotICAKLSAgICB0aGlzLl9yZXNv
dXJjZU1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGluZygpOwot
ICAgIHRoaXMuX21hcHBpbmdzLnB1c2godGhpcy5fcmVzb3VyY2VNYXBwaW5nKTsKLSAgICB0aGlz
Ll9jb21waWxlck1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbXBpbGVyU2NyaXB0TWFwcGlu
ZygpOwotICAgIHRoaXMuX21hcHBpbmdzLnB1c2godGhpcy5fY29tcGlsZXJNYXBwaW5nKTsKLSAg
ICB0aGlzLl9zbmlwcGV0TWFwcGluZyA9IFdlYkluc3BlY3Rvci5zY3JpcHRTbmlwcGV0TW9kZWwu
c2NyaXB0TWFwcGluZzsKLSAgICB0aGlzLl9tYXBwaW5ncy5wdXNoKHRoaXMuX3NuaXBwZXRNYXBw
aW5nKTsKLSAgCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9tYXBwaW5ncy5sZW5ndGg7
ICsraSkKLSAgICAgICAgdGhpcy5fbWFwcGluZ3NbaV0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuU2NyaXB0TWFwcGluZy5FdmVudHMuVUlTb3VyY2VDb2RlTGlzdENoYW5nZWQsIHRoaXMu
X2hhbmRsZVVJU291cmNlQ29kZUxpc3RDaGFuZ2VkLCB0aGlzKTsKLQotICAgIFdlYkluc3BlY3Rv
ci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9k
ZWwuRXZlbnRzLlBhcnNlZFNjcmlwdFNvdXJjZSwgdGhpcy5fcGFyc2VkU2NyaXB0U291cmNlLCB0
aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5GYWlsZWRUb1BhcnNlU2NyaXB0U291cmNl
LCB0aGlzLl9wYXJzZWRTY3JpcHRTb3VyY2UsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci5kZWJ1
Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZl
bnRzLkdsb2JhbE9iamVjdENsZWFyZWQsIHRoaXMuX2RlYnVnZ2VyUmVzZXQsIHRoaXMpOwotfQot
Ci1XZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMgPSB7Ci0gICAg
VUlTb3VyY2VDb2RlQWRkZWQ6ICJzb3VyY2UtZmlsZS1hZGRlZCIsCi0gICAgVUlTb3VyY2VDb2Rl
UmVwbGFjZWQ6ICJzb3VyY2UtZmlsZS1yZXBsYWNlZCIsCi0gICAgVUlTb3VyY2VDb2RlUmVtb3Zl
ZDogInNvdXJjZS1maWxlLXJlbW92ZWQiCi19Ci0KLVdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5FdmVudH0gZXZlbnQKLSAgICAgKi8KLSAgICBfcGFyc2VkU2NyaXB0U291cmNlOiBm
dW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHZhciBzY3JpcHQgPSAvKiogQHR5cGUge1dl
Ykluc3BlY3Rvci5TY3JpcHR9ICovIGV2ZW50LmRhdGE7Ci0gICAgICAgIHZhciBtYXBwaW5nID0g
dGhpcy5fbWFwcGluZ0ZvclNjcmlwdChzY3JpcHQpOwotICAgICAgICBtYXBwaW5nLmFkZFNjcmlw
dChzY3JpcHQpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtBcnJheS48V2Vi
SW5zcGVjdG9yLlVJU291cmNlQ29kZT59Ci0gICAgICovCi0gICAgdWlTb3VyY2VDb2RlczogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIHJlc3VsdCA9IFtdOwotICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHRoaXMuX21hcHBpbmdzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2
YXIgdWlTb3VyY2VDb2RlTGlzdCA9IHRoaXMuX21hcHBpbmdzW2ldLnVpU291cmNlQ29kZUxpc3Qo
KTsKLSAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdWlTb3VyY2VDb2RlTGlzdC5sZW5n
dGg7ICsraikKLSAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh1aVNvdXJjZUNvZGVMaXN0W2pd
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0sCi0KLSAgICAvKioK
LSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKLSAgICAgKi8KLSAgICBf
aGFuZGxlVUlTb3VyY2VDb2RlTGlzdENoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAg
ICAgICAgdmFyIHJlbW92ZWRJdGVtcyA9IC8qKiBAdHlwZSB7QXJyYXkuPFdlYkluc3BlY3Rvci5V
SVNvdXJjZUNvZGU+fSAqLyBldmVudC5kYXRhWyJyZW1vdmVkSXRlbXMiXTsKLSAgICAgICAgdmFy
IGFkZGVkSXRlbXMgPSAvKiogQHR5cGUge0FycmF5LjxXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2Rl
Pn0gKi8gZXZlbnQuZGF0YVsiYWRkZWRJdGVtcyJdOwotCi0gICAgICAgIGlmICghcmVtb3ZlZEl0
ZW1zLmxlbmd0aCkgewotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhZGRlZEl0ZW1z
Lmxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5VSVNvdXJj
ZUNvZGVBZGRlZCwgYWRkZWRJdGVtc1tpXSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIWFkZGVkSXRl
bXMubGVuZ3RoKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFkZGVkSXRlbXMu
bGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLlVJU291cmNl
Q29kZVJlbW92ZWQsIHJlbW92ZWRJdGVtc1tpXSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICB2YXIgZXZlbnREYXRhID0geyB1aVNvdXJjZUNvZGVMaXN0OiBhZGRlZEl0ZW1zLCBvbGRV
SVNvdXJjZUNvZGVMaXN0OiByZW1vdmVkSXRlbXMgfTsKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVs
LkV2ZW50cy5VSVNvdXJjZUNvZGVSZXBsYWNlZCwgZXZlbnREYXRhKTsKLSAgICAgICAgfQotICAg
IH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TY3JpcHR9IHNjcmlw
dAotICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5TY3JpcHRNYXBwaW5nfQotICAgICAqLwot
ICAgIF9tYXBwaW5nRm9yU2NyaXB0OiBmdW5jdGlvbihzY3JpcHQpCi0gICAgewotICAgICAgICBp
ZiAoV2ViSW5zcGVjdG9yLmV4cGVyaW1lbnRzU2V0dGluZ3Muc25pcHBldHNTdXBwb3J0LmlzRW5h
YmxlZCgpKSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5fc25pcHBldE1hcHBpbmcgJiYgdGhpcy5f
c25pcHBldE1hcHBpbmcuc25pcHBldElkRm9yU291cmNlVVJMKHNjcmlwdC5zb3VyY2VVUkwpKQot
ICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9zbmlwcGV0TWFwcGluZzsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmIChXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc291cmNlTWFwc0VuYWJsZWQuZ2V0
KCkgJiYgc2NyaXB0LnNvdXJjZU1hcFVSTCkgewotICAgICAgICAgICAgaWYgKHRoaXMuX2NvbXBp
bGVyTWFwcGluZy5sb2FkU291cmNlTWFwRm9yU2NyaXB0KHNjcmlwdCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX2NvbXBpbGVyTWFwcGluZzsKLSAgICAgICAgfQotCi0gICAgICAgIHJl
dHVybiB0aGlzLl9yZXNvdXJjZU1hcHBpbmc7Ci0gICAgfSwKLQotICAgIF9kZWJ1Z2dlclJlc2V0
OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX21h
cHBpbmdzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgdGhpcy5fbWFwcGluZ3NbaV0ucmVzZXQo
KTsKLSAgICB9Ci19Ci0KLVdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnBy
b3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKLQotLyoq
Ci0gKiBAdHlwZSB7P1dlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsfQotICov
Ci1XZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbCA9IG51bGw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUmVzb3VyY2VC
aW5kaW5nLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclJl
c291cmNlQmluZGluZy5qcwppbmRleCA0OGFhODI0NDQ1MmVkNzhmZTVkMzI4OTkwYzA0Yjc1MWNl
ZWExMWIyLi45M2YyN2Y0ZWE1MmM1ZTk4ZjU5MjU4Y2EyN2IyYmI1ODc3MTEwOGIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUmVzb3VyY2VC
aW5kaW5nLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdn
ZXJSZXNvdXJjZUJpbmRpbmcuanMKQEAgLTMxLDkgKzMxLDExIEBACiAvKioKICAqIEBjb25zdHJ1
Y3RvcgogICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rvci5SZXNvdXJjZURvbWFpbk1vZGVsQmlu
ZGluZ30KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb2plY3R9IHVpU291
cmNlQ29kZVByb2plY3QKICAqLwotV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUmVzb3VyY2VCaW5kaW5n
ID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUmVzb3VyY2VCaW5kaW5nID0gZnVu
Y3Rpb24odWlTb3VyY2VDb2RlUHJvamVjdCkKIHsKKyAgICB0aGlzLl91aVNvdXJjZUNvZGVQcm9q
ZWN0ID0gdWlTb3VyY2VDb2RlUHJvamVjdDsKICAgICBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucmVn
aXN0ZXJEb21haW5Nb2RlbEJpbmRpbmcoV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU2NyaXB0
LCB0aGlzKTsKIH0KIApAQCAtNTgsNyArNjAsNyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJSZXNv
dXJjZUJpbmRpbmcuc2V0U2NyaXB0U291cmNlID0gZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBuZQog
ICAgIHZhciBzY3JpcHQgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRGb3JJZChy
YXdMb2NhdGlvbi5zY3JpcHRJZCk7CiAKICAgICAvKioKLSAgICAgKiBAdGhpcyB7V2ViSW5zcGVj
dG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWx9CisgICAgICogQHRoaXMge1dlYkluc3BlY3Rv
ci5EZWJ1Z2dlclJlc291cmNlQmluZGluZ30KICAgICAgKiBAcGFyYW0gez9Qcm90b2NvbC5FcnJv
cn0gZXJyb3IKICAgICAgKi8KICAgICBmdW5jdGlvbiBkaWRFZGl0U2NyaXB0U291cmNlKGVycm9y
KQpAQCAtMTEzLDcgKzExNSw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclJlc291cmNlQmluZGlu
Zy5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX3VpU291cmNlQ29kZUZvclJlc291cmNlOiBm
dW5jdGlvbihyZXNvdXJjZSkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGVzID0gV2Vi
SW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwudWlTb3VyY2VDb2RlcygpOworICAg
ICAgICB2YXIgdWlTb3VyY2VDb2RlcyA9IHRoaXMuX3VpU291cmNlQ29kZVByb2plY3QudWlTb3Vy
Y2VDb2RlcygpOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVpU291cmNlQ29kZXMubGVu
Z3RoOyArK2kpIHsKICAgICAgICAgICAgIGlmICh1aVNvdXJjZUNvZGVzW2ldLnVybCA9PT0gcmVz
b3VyY2UudXJsKQogICAgICAgICAgICAgICAgIHJldHVybiB1aVNvdXJjZUNvZGVzW2ldOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclNjcmlw
dE1hcHBpbmcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2Vy
U2NyaXB0TWFwcGluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZDIwYThlM2I5YWU1YjVhODc3ODI2ZWIyNDAw
OGNlNmExOGE0YTE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9EZWJ1Z2dlclNjcmlwdE1hcHBpbmcuanMKQEAgLTAsMCArMSwxMzIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioK
KyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5PYmplY3R9CisgKiBA
aW1wbGVtZW50cyB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb2plY3R9CisgKi8KK1dlYklu
c3BlY3Rvci5EZWJ1Z2dlclNjcmlwdE1hcHBpbmcgPSBmdW5jdGlvbigpCit7CisgICAgdGhpcy5f
bWFwcGluZ3MgPSBbXTsKKyAgCisgICAgdGhpcy5fcmVzb3VyY2VNYXBwaW5nID0gbmV3IFdlYklu
c3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcoKTsKKyAgICB0aGlzLl9tYXBwaW5ncy5wdXNo
KHRoaXMuX3Jlc291cmNlTWFwcGluZyk7CisgICAgdGhpcy5fY29tcGlsZXJNYXBwaW5nID0gbmV3
IFdlYkluc3BlY3Rvci5Db21waWxlclNjcmlwdE1hcHBpbmcoKTsKKyAgICB0aGlzLl9tYXBwaW5n
cy5wdXNoKHRoaXMuX2NvbXBpbGVyTWFwcGluZyk7CisgICAgdGhpcy5fc25pcHBldE1hcHBpbmcg
PSBXZWJJbnNwZWN0b3Iuc2NyaXB0U25pcHBldE1vZGVsLnNjcmlwdE1hcHBpbmc7CisgICAgdGhp
cy5fbWFwcGluZ3MucHVzaCh0aGlzLl9zbmlwcGV0TWFwcGluZyk7CisgIAorICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgdGhpcy5fbWFwcGluZ3MubGVuZ3RoOyArK2kpCisgICAgICAgIHRoaXMuX21h
cHBpbmdzW2ldLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmcuRXZl
bnRzLlVJU291cmNlQ29kZUxpc3RDaGFuZ2VkLCB0aGlzLl9oYW5kbGVVSVNvdXJjZUNvZGVMaXN0
Q2hhbmdlZCwgdGhpcyk7CisKKyAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5QYXJzZWRTY3JpcHRT
b3VyY2UsIHRoaXMuX3BhcnNlZFNjcmlwdFNvdXJjZSwgdGhpcyk7CisgICAgV2ViSW5zcGVjdG9y
LmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2Rl
bC5FdmVudHMuRmFpbGVkVG9QYXJzZVNjcmlwdFNvdXJjZSwgdGhpcy5fcGFyc2VkU2NyaXB0U291
cmNlLCB0aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5HbG9iYWxPYmplY3RDbGVhcmVk
LCB0aGlzLl9kZWJ1Z2dlclJlc2V0LCB0aGlzKTsKK30KKworV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
U2NyaXB0TWFwcGluZy5FdmVudHMgPSB7CisgICAgVUlTb3VyY2VDb2RlQWRkZWQ6ICJzb3VyY2Ut
ZmlsZS1hZGRlZCIsCisgICAgVUlTb3VyY2VDb2RlUmVwbGFjZWQ6ICJzb3VyY2UtZmlsZS1yZXBs
YWNlZCIsCisgICAgVUlTb3VyY2VDb2RlUmVtb3ZlZDogInNvdXJjZS1maWxlLXJlbW92ZWQiCit9
CisKK1dlYkluc3BlY3Rvci5EZWJ1Z2dlclNjcmlwdE1hcHBpbmcucHJvdG90eXBlID0geworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAorICAgICAqLwor
ICAgIF9wYXJzZWRTY3JpcHRTb3VyY2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAg
dmFyIHNjcmlwdCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlNjcmlwdH0gKi8gZXZlbnQuZGF0
YTsKKyAgICAgICAgdmFyIG1hcHBpbmcgPSB0aGlzLl9tYXBwaW5nRm9yU2NyaXB0KHNjcmlwdCk7
CisgICAgICAgIG1hcHBpbmcuYWRkU2NyaXB0KHNjcmlwdCk7CisgICAgfSwKKworICAgIC8qKgor
ICAgICAqIEByZXR1cm4ge0FycmF5LjxXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlPn0KKyAgICAg
Ki8KKyAgICB1aVNvdXJjZUNvZGVzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgcmVz
dWx0ID0gW107CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fbWFwcGluZ3MubGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGVMaXN0ID0gdGhpcy5fbWFw
cGluZ3NbaV0udWlTb3VyY2VDb2RlTGlzdCgpOworICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7
IGogPCB1aVNvdXJjZUNvZGVMaXN0Lmxlbmd0aDsgKytqKQorICAgICAgICAgICAgICAgIHJlc3Vs
dC5wdXNoKHVpU291cmNlQ29kZUxpc3Rbal0pOworICAgICAgICB9CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV2
ZW50fSBldmVudAorICAgICAqLworICAgIF9oYW5kbGVVSVNvdXJjZUNvZGVMaXN0Q2hhbmdlZDog
ZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgcmVtb3ZlZEl0ZW1zID0gLyoqIEB0
eXBlIHtBcnJheS48V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZT59ICovIGV2ZW50LmRhdGFbInJl
bW92ZWRJdGVtcyJdOworICAgICAgICB2YXIgYWRkZWRJdGVtcyA9IC8qKiBAdHlwZSB7QXJyYXku
PFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGU+fSAqLyBldmVudC5kYXRhWyJhZGRlZEl0ZW1zIl07
CisKKyAgICAgICAgaWYgKCFyZW1vdmVkSXRlbXMubGVuZ3RoKSB7CisgICAgICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGFkZGVkSXRlbXMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2NyaXB0
TWFwcGluZy5FdmVudHMuVUlTb3VyY2VDb2RlQWRkZWQsIGFkZGVkSXRlbXNbaV0pOworICAgICAg
ICB9IGVsc2UgaWYgKCFhZGRlZEl0ZW1zLmxlbmd0aCkgeworICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBhZGRlZEl0ZW1zLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIHRoaXMu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNjcmlwdE1hcHBp
bmcuRXZlbnRzLlVJU291cmNlQ29kZVJlbW92ZWQsIHJlbW92ZWRJdGVtc1tpXSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICB2YXIgZXZlbnREYXRhID0geyB1aVNvdXJjZUNvZGVMaXN0
OiBhZGRlZEl0ZW1zLCBvbGRVSVNvdXJjZUNvZGVMaXN0OiByZW1vdmVkSXRlbXMgfTsKKyAgICAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dl
clNjcmlwdE1hcHBpbmcuRXZlbnRzLlVJU291cmNlQ29kZVJlcGxhY2VkLCBldmVudERhdGEpOwor
ICAgICAgICB9CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlNjcmlwdH0gc2NyaXB0CisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBp
bmd9CisgICAgICovCisgICAgX21hcHBpbmdGb3JTY3JpcHQ6IGZ1bmN0aW9uKHNjcmlwdCkKKyAg
ICB7CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuZXhwZXJpbWVudHNTZXR0aW5ncy5zbmlwcGV0
c1N1cHBvcnQuaXNFbmFibGVkKCkpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9zbmlwcGV0TWFw
cGluZyAmJiB0aGlzLl9zbmlwcGV0TWFwcGluZy5zbmlwcGV0SWRGb3JTb3VyY2VVUkwoc2NyaXB0
LnNvdXJjZVVSTCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NuaXBwZXRNYXBwaW5n
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zb3VyY2VN
YXBzRW5hYmxlZC5nZXQoKSAmJiBzY3JpcHQuc291cmNlTWFwVVJMKSB7CisgICAgICAgICAgICBp
ZiAodGhpcy5fY29tcGlsZXJNYXBwaW5nLmxvYWRTb3VyY2VNYXBGb3JTY3JpcHQoc2NyaXB0KSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY29tcGlsZXJNYXBwaW5nOworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlTWFwcGluZzsKKyAgICB9LAorCisgICAg
X2RlYnVnZ2VyUmVzZXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgdGhpcy5fbWFwcGluZ3MubGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0aGlzLl9tYXBw
aW5nc1tpXS5yZXNldCgpOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2NyaXB0
TWFwcGluZy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5
cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbHRl
cmVkSXRlbVNlbGVjdGlvbkRpYWxvZy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRmlsdGVyZWRJdGVtU2VsZWN0aW9uRGlhbG9nLmpzCmluZGV4IDUxMWIwNWE2NDg0ODVj
ZWE3MzQzYmZiYzYyYTAyMzZkZjU0N2NkYTYuLjUxY2RlZDZiZmU1ZGU2YTdmZmQ2N2FhMGJmYzQw
ZDEyM2Q3ZTU3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRmlsdGVyZWRJdGVtU2VsZWN0aW9uRGlhbG9nLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRmlsdGVyZWRJdGVtU2VsZWN0aW9uRGlhbG9nLmpzCkBAIC02NTQs
MjMgKzY1NCwyMyBAQCBXZWJJbnNwZWN0b3IuT3BlblJlc291cmNlRGlhbG9nLnByb3RvdHlwZS5f
X3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU2VsZWN0aW9uRGlhbAogICogQGNvbnN0cnVjdG9yCiAg
KiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLk9wZW5SZXNvdXJjZURpYWxvZ30KICAqIEBwYXJhbSB7
V2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbH0gcGFuZWwKLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWx9IHByZXNlbnRhdGlvbk1vZGVsCisgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGVQcm9qZWN0fSB1aVNvdXJjZUNvZGVQcm9qZWN0CiAg
Ki8KLVdlYkluc3BlY3Rvci5PcGVuU2NyaXB0RGlhbG9nID0gZnVuY3Rpb24ocGFuZWwsIHByZXNl
bnRhdGlvbk1vZGVsKQorV2ViSW5zcGVjdG9yLk9wZW5TY3JpcHREaWFsb2cgPSBmdW5jdGlvbihw
YW5lbCwgdWlTb3VyY2VDb2RlUHJvamVjdCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuT3BlblJlc291
cmNlRGlhbG9nLmNhbGwodGhpcywgcHJlc2VudGF0aW9uTW9kZWwudWlTb3VyY2VDb2RlcygpKTsK
KyAgICBXZWJJbnNwZWN0b3IuT3BlblJlc291cmNlRGlhbG9nLmNhbGwodGhpcywgdWlTb3VyY2VD
b2RlUHJvamVjdC51aVNvdXJjZUNvZGVzKCkpOwogICAgIHRoaXMuX3BhbmVsID0gcGFuZWw7CiB9
CiAKIC8qKgogICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsfSBwYW5lbAotICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbH0gcHJlc2VudGF0
aW9uTW9kZWwKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb2plY3R9IHVp
U291cmNlQ29kZVByb2plY3QKICAqLwotV2ViSW5zcGVjdG9yLk9wZW5TY3JpcHREaWFsb2cuaW5z
dGFsbCA9IGZ1bmN0aW9uKHBhbmVsLCBwcmVzZW50YXRpb25Nb2RlbCwgcmVsYXRpdmVUb0VsZW1l
bnQpCitXZWJJbnNwZWN0b3IuT3BlblNjcmlwdERpYWxvZy5pbnN0YWxsID0gZnVuY3Rpb24ocGFu
ZWwsIHVpU291cmNlQ29kZVByb2plY3QsIHJlbGF0aXZlVG9FbGVtZW50KQogewogICAgIGZ1bmN0
aW9uIHNob3dPcGVuUmVzb3VyY2VEaWFsb2coKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9y
Lk9wZW5TY3JpcHREaWFsb2cuX3Nob3cocGFuZWwsIHByZXNlbnRhdGlvbk1vZGVsLCByZWxhdGl2
ZVRvRWxlbWVudCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5PcGVuU2NyaXB0RGlhbG9nLl9zaG93
KHBhbmVsLCB1aVNvdXJjZUNvZGVQcm9qZWN0LCByZWxhdGl2ZVRvRWxlbWVudCk7CiAgICAgfQog
CiAgICAgdmFyIG9wZW5SZXNvdXJjZVNob3J0Y3V0ID0gV2ViSW5zcGVjdG9yLk9wZW5SZXNvdXJj
ZURpYWxvZy5jcmVhdGVTaG9ydGN1dCgpOwpAQCAtNjc5LDE1ICs2NzksMTUgQEAgV2ViSW5zcGVj
dG9yLk9wZW5TY3JpcHREaWFsb2cuaW5zdGFsbCA9IGZ1bmN0aW9uKHBhbmVsLCBwcmVzZW50YXRp
b25Nb2RlbCwgcmVsYXQKIAogLyoqCiAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TY3JpcHRzUGFu
ZWx9IHBhbmVsCi0gKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsfSBwcmVzZW50YXRpb25Nb2RlbAorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VD
b2RlUHJvamVjdH0gdWlTb3VyY2VDb2RlUHJvamVjdAogICogQHBhcmFtIHtFbGVtZW50fSByZWxh
dGl2ZVRvRWxlbWVudAogICovCi1XZWJJbnNwZWN0b3IuT3BlblNjcmlwdERpYWxvZy5fc2hvdyA9
IGZ1bmN0aW9uKHBhbmVsLCBwcmVzZW50YXRpb25Nb2RlbCwgcmVsYXRpdmVUb0VsZW1lbnQpCitX
ZWJJbnNwZWN0b3IuT3BlblNjcmlwdERpYWxvZy5fc2hvdyA9IGZ1bmN0aW9uKHBhbmVsLCB1aVNv
dXJjZUNvZGVQcm9qZWN0LCByZWxhdGl2ZVRvRWxlbWVudCkKIHsKICAgICBpZiAoV2ViSW5zcGVj
dG9yLkRpYWxvZy5jdXJyZW50SW5zdGFuY2UoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdmFy
IGZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZyA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsdGVyZWRJ
dGVtU2VsZWN0aW9uRGlhbG9nKG5ldyBXZWJJbnNwZWN0b3IuT3BlblNjcmlwdERpYWxvZyhwYW5l
bCwgcHJlc2VudGF0aW9uTW9kZWwpKTsKKyAgICB2YXIgZmlsdGVyZWRJdGVtU2VsZWN0aW9uRGlh
bG9nID0gbmV3IFdlYkluc3BlY3Rvci5GaWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cobmV3IFdl
Ykluc3BlY3Rvci5PcGVuU2NyaXB0RGlhbG9nKHBhbmVsLCB1aVNvdXJjZUNvZGVQcm9qZWN0KSk7
CiAgICAgV2ViSW5zcGVjdG9yLkRpYWxvZy5zaG93KHJlbGF0aXZlVG9FbGVtZW50LCBmaWx0ZXJl
ZEl0ZW1TZWxlY3Rpb25EaWFsb2cpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRTb3VyY2VGcmFtZS5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlwdFNvdXJjZUZyYW1lLmpzCmluZGV4IGEz
OGE3MWRmN2FhZGFiZjYzZThhMWFiNzE2NTJjMjUyNzA0OGM1NjAuLjNjOTJiNDZhNGRiNDdmYzZl
MzI2ZDFlYzU1OTMwYmI5OTg1NTZkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvSmF2YVNjcmlwdFNvdXJjZUZyYW1lLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlwdFNvdXJjZUZyYW1lLmpzCkBAIC0zMiwx
MyArMzIsMTEgQEAKICAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5T
b3VyY2VGcmFtZX0KICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbH0gc2NyaXB0
c1BhbmVsCi0gKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVs
fSBtb2RlbAogICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNv
ZGUKICAqLwotV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VGcmFtZSA9IGZ1bmN0aW9uKHNj
cmlwdHNQYW5lbCwgbW9kZWwsIHVpU291cmNlQ29kZSkKK1dlYkluc3BlY3Rvci5KYXZhU2NyaXB0
U291cmNlRnJhbWUgPSBmdW5jdGlvbihzY3JpcHRzUGFuZWwsIHVpU291cmNlQ29kZSkKIHsKICAg
ICB0aGlzLl9zY3JpcHRzUGFuZWwgPSBzY3JpcHRzUGFuZWw7Ci0gICAgdGhpcy5fbW9kZWwgPSBt
b2RlbDsKICAgICB0aGlzLl9icmVha3BvaW50TWFuYWdlciA9IFdlYkluc3BlY3Rvci5icmVha3Bv
aW50TWFuYWdlcjsKICAgICB0aGlzLl91aVNvdXJjZUNvZGUgPSB1aVNvdXJjZUNvZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJlc2VudGF0aW9u
Q29uc29sZU1lc3NhZ2VIZWxwZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1ByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlSGVscGVyLmpzCmluZGV4IDlhNjg5NzIwODQ4
YWJiMWM4ZWNjMmI1ZTc3NWQzYmI4ZjU1ZWUyOTYuLjk0YTU3MmUyNGE2YzU3NDg3ZDc2NTBjZDI5
MGJiYTAzN2M4Mjc0ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VIZWxwZXIuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9QcmVzZW50YXRpb25Db25zb2xlTWVzc2FnZUhlbHBl
ci5qcwpAQCAtMzAsMTEgKzMwLDEzIEBACiAKIC8qKgogICogQGNvbnN0cnVjdG9yCisgKiBAcGFy
YW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGVQcm9qZWN0fSB1aVNvdXJjZUNvZGVQcm9qZWN0
CiAgKi8KLVdlYkluc3BlY3Rvci5QcmVzZW50YXRpb25Db25zb2xlTWVzc2FnZUhlbHBlciA9IGZ1
bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5QcmVzZW50YXRpb25Db25zb2xlTWVzc2FnZUhlbHBlciA9
IGZ1bmN0aW9uKHVpU291cmNlQ29kZVByb2plY3QpCiB7CiAgICAgdGhpcy5fcGVuZGluZ0NvbnNv
bGVNZXNzYWdlcyA9IHt9OwogICAgIHRoaXMuX3ByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlcyA9
IFtdOworICAgIHRoaXMuX3VpU291cmNlQ29kZVByb2plY3QgPSB1aVNvdXJjZUNvZGVQcm9qZWN0
OwogCiAgICAgV2ViSW5zcGVjdG9yLmNvbnNvbGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuQ29uc29sZU1vZGVsLkV2ZW50cy5NZXNzYWdlQWRkZWQsIHRoaXMuX2NvbnNvbGVNZXNzYWdl
QWRkZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5jb25zb2xlLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkNvbnNvbGVNb2RlbC5FdmVudHMuQ29uc29sZUNsZWFyZWQsIHRoaXMuX2Nv
bnNvbGVDbGVhcmVkLCB0aGlzKTsKQEAgLTExMyw3ICsxMTUsNyBAQCBXZWJJbnNwZWN0b3IuUHJl
c2VudGF0aW9uQ29uc29sZU1lc3NhZ2VIZWxwZXIucHJvdG90eXBlID0gewogICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHRoaXMuX3ByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlcy5sZW5ndGg7
ICsraSkKICAgICAgICAgICAgIHRoaXMuX3ByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlc1tpXS5k
aXNwb3NlKCk7CiAgICAgICAgIHRoaXMuX3ByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlcyA9IFtd
OwotICAgICAgICB2YXIgdWlTb3VyY2VDb2RlcyA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsLnVpU291cmNlQ29kZXMoKTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZXMg
PSB0aGlzLl91aVNvdXJjZUNvZGVQcm9qZWN0LnVpU291cmNlQ29kZXMoKTsKICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB1aVNvdXJjZUNvZGVzLmxlbmd0aDsgKytpKQogICAgICAgICAgICAg
dWlTb3VyY2VDb2Rlc1tpXS5jb25zb2xlTWVzc2FnZXNDbGVhcmVkKCk7CiAgICAgfSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKaW5k
ZXggOGI4MTMwMjM3MTlkMDhhMjQ0ZTUxYWZhZDkyODcwM2Q3ZmEwYzRhMC4uMTM4OGUxNzFhZDBj
MjVhYjZiNzRmNjgwOWE5ZGNjN2U3YjMyM2ZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKQEAgLTI4LDggKzI4LDkgQEAKICAq
IEBjb25zdHJ1Y3RvcgogICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rvci5UYWJiZWRFZGl0b3JD
b250YWluZXJEZWxlZ2F0ZX0KICAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuUGFuZWx9CisgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5EZWJ1Z2dlclNjcmlwdE1hcHBpbmc9fSBzY3JpcHRNYXBwaW5n
Rm9yVGVzdAogICovCi1XZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsID0gZnVuY3Rpb24ocHJlc2Vu
dGF0aW9uTW9kZWwpCitXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsID0gZnVuY3Rpb24oc2NyaXB0
TWFwcGluZ0ZvclRlc3QpCiB7CiAgICAgV2ViSW5zcGVjdG9yLlBhbmVsLmNhbGwodGhpcywgInNj
cmlwdHMiKTsKICAgICB0aGlzLnJlZ2lzdGVyUmVxdWlyZWRDU1MoInNjcmlwdHNQYW5lbC5jc3Mi
KTsKQEAgLTM3LDkgKzM4LDEwIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwgPSBmdW5jdGlv
bihwcmVzZW50YXRpb25Nb2RlbCkKICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MucGF1c2VPbkV4
Y2VwdGlvblN0YXRlU3RyaW5nID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNyZWF0ZVNldHRpbmco
InBhdXNlT25FeGNlcHRpb25TdGF0ZVN0cmluZyIsIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwu
UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZS5Eb250UGF1c2VPbkV4Y2VwdGlvbnMpOwogICAgIFdlYklu
c3BlY3Rvci5zZXR0aW5ncy5uYXZpZ2F0b3JXYXNPbmNlSGlkZGVuID0gV2ViSW5zcGVjdG9yLnNl
dHRpbmdzLmNyZWF0ZVNldHRpbmcoIm5hdmlnYXRvcldhc09uY2VIaWRkZW4iLCBmYWxzZSk7CiAg
ICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLmRlYnVnZ2VyU2lkZWJhckhpZGRlbiA9IFdlYkluc3Bl
Y3Rvci5zZXR0aW5ncy5jcmVhdGVTZXR0aW5nKCJkZWJ1Z2dlclNpZGViYXJIaWRkZW4iLCBmYWxz
ZSk7Ci0gICAgCi0gICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwgPSBwcmVzZW50YXRpb25Nb2Rl
bDsKLSAgICBuZXcgV2ViSW5zcGVjdG9yLlByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlSGVscGVy
KCk7CisKKyAgICB0aGlzLl9zY3JpcHRNYXBwaW5nID0gc2NyaXB0TWFwcGluZ0ZvclRlc3QgfHwg
bmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNjcmlwdE1hcHBpbmcoKTsKKyAgICBuZXcgV2ViSW5z
cGVjdG9yLlByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlSGVscGVyKHRoaXMuX3NjcmlwdE1hcHBp
bmcpOworICAgIG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJSZXNvdXJjZUJpbmRpbmcodGhpcy5f
c2NyaXB0TWFwcGluZyk7CiAKICAgICBmdW5jdGlvbiB2aWV3R2V0dGVyKCkKICAgICB7CkBAIC03
Nyw3ICs3OSw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwgPSBmdW5jdGlvbihwcmVzZW50
YXRpb25Nb2RlbCkKIAogICAgIHRoaXMuX2VkaXRvckNvbnRhaW5lciA9IG5ldyBXZWJJbnNwZWN0
b3IuVGFiYmVkRWRpdG9yQ29udGFpbmVyKHRoaXMsICJwcmV2aW91c2x5Vmlld2VkRmlsZXMiKTsK
ICAgICB0aGlzLl9lZGl0b3JDb250YWluZXIuc2hvdyh0aGlzLmVkaXRvclZpZXcubWFpbkVsZW1l
bnQpOwotICAgIFdlYkluc3BlY3Rvci5PcGVuU2NyaXB0RGlhbG9nLmluc3RhbGwodGhpcywgdGhp
cy5fcHJlc2VudGF0aW9uTW9kZWwsIHRoaXMuZWRpdG9yVmlldy5tYWluRWxlbWVudCk7CisgICAg
V2ViSW5zcGVjdG9yLk9wZW5TY3JpcHREaWFsb2cuaW5zdGFsbCh0aGlzLCB0aGlzLl9zY3JpcHRN
YXBwaW5nLCB0aGlzLmVkaXRvclZpZXcubWFpbkVsZW1lbnQpOwogCiAgICAgdGhpcy5fbmF2aWdh
dG9yQ29udHJvbGxlciA9IG5ldyBXZWJJbnNwZWN0b3IuTmF2aWdhdG9yT3ZlcmxheUNvbnRyb2xs
ZXIodGhpcywgdGhpcy5lZGl0b3JWaWV3LCB0aGlzLl9uYXZpZ2F0b3IudmlldywgdGhpcy5fZWRp
dG9yQ29udGFpbmVyLnZpZXcpOwogCkBAIC0xNjcsMTUgKzE2OSwxNSBAQCBXZWJJbnNwZWN0b3Iu
U2NyaXB0c1BhbmVsID0gZnVuY3Rpb24ocHJlc2VudGF0aW9uTW9kZWwpCiAgICAgV2ViSW5zcGVj
dG9yLmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJN
b2RlbC5FdmVudHMuR2xvYmFsT2JqZWN0Q2xlYXJlZCwgdGhpcy5fcmVzZXQuYmluZCh0aGlzLCBm
YWxzZSkpOwogICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkJyZWFrcG9pbnRzQWN0aXZlU3RhdGVD
aGFuZ2VkLCB0aGlzLl9icmVha3BvaW50c0FjdGl2ZVN0YXRlQ2hhbmdlZCwgdGhpcyk7CiAKLSAg
ICB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5VSVNvdXJjZUNvZGVBZGRlZCwgdGhpcy5f
aGFuZGxlVUlTb3VyY2VDb2RlQWRkZWQsIHRoaXMpOwotICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1v
ZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9k
ZWwuRXZlbnRzLlVJU291cmNlQ29kZVJlcGxhY2VkLCB0aGlzLl91aVNvdXJjZUNvZGVSZXBsYWNl
ZCwgdGhpcyk7Ci0gICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuVUlTb3VyY2VDb2Rl
UmVtb3ZlZCwgdGhpcy5fdWlTb3VyY2VDb2RlUmVtb3ZlZCwgdGhpcyk7CisgICAgdGhpcy5fc2Ny
aXB0TWFwcGluZy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNjcmlwdE1h
cHBpbmcuRXZlbnRzLlVJU291cmNlQ29kZUFkZGVkLCB0aGlzLl9oYW5kbGVVSVNvdXJjZUNvZGVB
ZGRlZCwgdGhpcyk7CisgICAgdGhpcy5fc2NyaXB0TWFwcGluZy5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlclNjcmlwdE1hcHBpbmcuRXZlbnRzLlVJU291cmNlQ29kZVJlcGxh
Y2VkLCB0aGlzLl91aVNvdXJjZUNvZGVSZXBsYWNlZCwgdGhpcyk7CisgICAgdGhpcy5fc2NyaXB0
TWFwcGluZy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNjcmlwdE1hcHBp
bmcuRXZlbnRzLlVJU291cmNlQ29kZVJlbW92ZWQsIHRoaXMuX3VpU291cmNlQ29kZVJlbW92ZWQs
IHRoaXMpOwogCiAgICAgdmFyIGVuYWJsZURlYnVnZ2VyID0gIUNhcGFiaWxpdGllcy5kZWJ1Z2dl
ckNhdXNlc1JlY29tcGlsYXRpb24gfHwgV2ViSW5zcGVjdG9yLnNldHRpbmdzLmRlYnVnZ2VyRW5h
YmxlZC5nZXQoKTsKICAgICBpZiAoZW5hYmxlRGVidWdnZXIpCiAgICAgICAgIFdlYkluc3BlY3Rv
ci5kZWJ1Z2dlck1vZGVsLmVuYWJsZURlYnVnZ2VyKCk7CiAKLSAgICBXZWJJbnNwZWN0b3IuYWR2
YW5jZWRTZWFyY2hDb250cm9sbGVyLnJlZ2lzdGVyU2VhcmNoU2NvcGUobmV3IFdlYkluc3BlY3Rv
ci5TY3JpcHRzU2VhcmNoU2NvcGUoKSk7CisgICAgV2ViSW5zcGVjdG9yLmFkdmFuY2VkU2VhcmNo
Q29udHJvbGxlci5yZWdpc3RlclNlYXJjaFNjb3BlKG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0c1Nl
YXJjaFNjb3BlKHRoaXMuX3NjcmlwdE1hcHBpbmcpKTsKIH0KIAogLy8gS2VlcCB0aGVzZSBpbiBz
eW5jIHdpdGggV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXIKQEAgLTIyOSw3ICsyMzEsNyBAQCBX
ZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIF9sb2FkVUlTb3Vy
Y2VDb2RlczogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdmFyIHVpU291cmNlQ29kZXMgPSB0
aGlzLl9wcmVzZW50YXRpb25Nb2RlbC51aVNvdXJjZUNvZGVzKCk7CisgICAgICAgIHZhciB1aVNv
dXJjZUNvZGVzID0gdGhpcy5fc2NyaXB0TWFwcGluZy51aVNvdXJjZUNvZGVzKCk7CiAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdWlTb3VyY2VDb2Rlcy5sZW5ndGg7ICsraSkKICAgICAgICAg
ICAgIHRoaXMuX3VpU291cmNlQ29kZUFkZGVkKHVpU291cmNlQ29kZXNbaV0pOwogICAgIH0sCkBA
IC00NTAsNyArNDUyLDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICovCiAgICAgX2NyZWF0ZVNvdXJjZUZyYW1lOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUp
CiAgICAgewotICAgICAgICB2YXIgc291cmNlRnJhbWUgPSBuZXcgV2ViSW5zcGVjdG9yLkphdmFT
Y3JpcHRTb3VyY2VGcmFtZSh0aGlzLCB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbCwgdWlTb3VyY2VD
b2RlKTsKKyAgICAgICAgdmFyIHNvdXJjZUZyYW1lID0gbmV3IFdlYkluc3BlY3Rvci5KYXZhU2Ny
aXB0U291cmNlRnJhbWUodGhpcywgdWlTb3VyY2VDb2RlKTsKIAogICAgICAgICBzb3VyY2VGcmFt
ZS5fdWlTb3VyY2VDb2RlID0gdWlTb3VyY2VDb2RlOwogICAgICAgICB0aGlzLl9zb3VyY2VGcmFt
ZXNCeVVJU291cmNlQ29kZS5wdXQodWlTb3VyY2VDb2RlLCBzb3VyY2VGcmFtZSk7CkBAIC00ODgs
NyArNDkwLDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
fSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50CisgICAgICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuRXZlbnR9IGV2ZW50CiAgICAgICovCiAgICAgX3VpU291cmNlQ29kZVJl
cGxhY2VkOiBmdW5jdGlvbihldmVudCkKICAgICB7CkBAIC05MTksNyArOTIxLDcgQEAgV2ViSW5z
cGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgX3RvZ2dsZUZvcm1hdFNvdXJj
ZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5fdG9nZ2xlRm9ybWF0U291cmNlQnV0
dG9uLnRvZ2dsZWQgPSAhdGhpcy5fdG9nZ2xlRm9ybWF0U291cmNlQnV0dG9uLnRvZ2dsZWQ7Ci0g
ICAgICAgIHZhciB1aVNvdXJjZUNvZGVzID0gdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwudWlTb3Vy
Y2VDb2RlcygpOworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlcyA9IHRoaXMuX3NjcmlwdE1hcHBp
bmcudWlTb3VyY2VDb2RlcygpOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVpU291cmNl
Q29kZXMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICB1aVNvdXJjZUNvZGVzW2ldLnNldEZvcm1h
dHRlZCh0aGlzLl90b2dnbGVGb3JtYXRTb3VyY2VCdXR0b24udG9nZ2xlZCk7CiAgICAgfSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1NlYXJj
aFNjb3BlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzU2Vh
cmNoU2NvcGUuanMKaW5kZXggMjI3NTk5YzQ3MGIxMzVlMjJiNzdjODc0YTEyNjJlM2U2YzdiZGU5
Ni4uOTZhMTdhNWViYmQyYWQ1OWU1YWIwY2FiODA1ZDNlOGEyNmVkNDYyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzU2VhcmNoU2NvcGUuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzU2VhcmNoU2Nv
cGUuanMKQEAgLTI5LDEyICsyOSwxNCBAQAogLyoqCiAgKiBAY29uc3RydWN0b3IKICAqIEBpbXBs
ZW1lbnRzIHtXZWJJbnNwZWN0b3IuU2VhcmNoU2NvcGV9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5VSVNvdXJjZUNvZGVQcm9qZWN0fSB1aVNvdXJjZUNvZGVQcm9qZWN0CiAgKi8KLVdlYkluc3Bl
Y3Rvci5TY3JpcHRzU2VhcmNoU2NvcGUgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuU2NyaXB0
c1NlYXJjaFNjb3BlID0gZnVuY3Rpb24odWlTb3VyY2VDb2RlUHJvamVjdCkKIHsKICAgICAvLyBG
SVhNRTogQWRkIHRpdGxlIG9uY2UgaXQgaXMgdXNlZCBieSBzZWFyY2ggY29udHJvbGxlci4KICAg
ICBXZWJJbnNwZWN0b3IuU2VhcmNoU2NvcGUuY2FsbCh0aGlzKQogICAgIHRoaXMuX3NlYXJjaElk
ID0gMDsKKyAgICB0aGlzLl91aVNvdXJjZUNvZGVQcm9qZWN0ID0gdWlTb3VyY2VDb2RlUHJvamVj
dDsKIH0KIAogV2ViSW5zcGVjdG9yLlNjcmlwdHNTZWFyY2hTY29wZS5wcm90b3R5cGUgPSB7CkBA
IC0xMTMsNyArMTE1LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNTZWFyY2hTY29wZS5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gYS51cmwubG9jYWxlQ29tcGFyZShiLnVybCk7ICAg
CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHZhciB1aVNvdXJjZUNvZGVzID0gV2ViSW5z
cGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwudWlTb3VyY2VDb2RlcygpOworICAgICAg
ICB2YXIgdWlTb3VyY2VDb2RlcyA9IHRoaXMuX3VpU291cmNlQ29kZVByb2plY3QudWlTb3VyY2VD
b2RlcygpOwogICAgICAgICAKICAgICAgICAgdWlTb3VyY2VDb2RlcyA9IHVpU291cmNlQ29kZXMu
ZmlsdGVyKGZpbHRlck91dEFub255bW91cyk7CiAgICAgICAgIHVpU291cmNlQ29kZXMuc29ydChj
b21wYXJhdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvVUlTb3VyY2VDb2RlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9V
SVNvdXJjZUNvZGUuanMKaW5kZXggMmQxYWUxODkyNGE5Yjc3NzdkNmMwNjYxOGM1ZTc4NzY0MzJh
MGYzOS4uZDBkYWEyYjMwMDQyNjhmZGNhZmRkNWZiMDUzZjliOTZhZjRlNmZiOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVNvdXJjZUNvZGUuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVNvdXJjZUNvZGUuanMKQEAg
LTIzMiwzICsyMzIsMTUgQEAgV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZS5wcm90b3R5cGUgPSB7
CiB9CiAKIFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdl
Ykluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworCisvKioKKyAqIEBpbnRlcmZhY2UKKyAqLwor
V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb2plY3QgPSBmdW5jdGlvbigpCit7Cit9CisKK1dl
Ykluc3BlY3Rvci5VSVNvdXJjZUNvZGVQcm9qZWN0LnByb3RvdHlwZSA9IHsKKyAgICAvKiogQHJl
dHVybiB7QXJyYXkuPFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGU+fSAqLyAKKyAgICB1aVNvdXJj
ZUNvZGVzOiBmdW5jdGlvbigpIHsgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9XZWJLaXQucXJjCmluZGV4IGNkYTcxNzcwMmNlMjJjMmIyMDAwYjRkMTY4N2VkOTg5
NTA4NzUyMDIuLjRjYTJjYjI2NWYwYTI2OWMwYWQ0MmQxMzA5N2JmZGYwYWRiOGUwNDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKQEAgLTM2LDgg
KzM2LDggQEAKICAgICA8ZmlsZT5EYXRhYmFzZVRhYmxlVmlldy5qczwvZmlsZT4KICAgICA8Zmls
ZT5EYXRhR3JpZC5qczwvZmlsZT4KICAgICA8ZmlsZT5EZWJ1Z2dlck1vZGVsLmpzPC9maWxlPgot
ICAgIDxmaWxlPkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanM8L2ZpbGU+CiAgICAgPGZpbGU+
RGVidWdnZXJSZXNvdXJjZUJpbmRpbmcuanM8L2ZpbGU+CisgICAgPGZpbGU+RGVidWdnZXJTY3Jp
cHRNYXBwaW5nLmpzPC9maWxlPgogICAgIDxmaWxlPkRpYWxvZy5qczwvZmlsZT4KICAgICA8Zmls
ZT5ET01BZ2VudC5qczwvZmlsZT4KICAgICA8ZmlsZT5ET01CcmVha3BvaW50c1NpZGViYXJQYW5l
LmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmh0bWwKaW5kZXggNTI5OTY4NzEwZTUxZGQwNzI5MjFiZDQ1NzlmYjM4MzlhYjg5NGRi
Zi4uN2VlNzBiZDgyNzA4MjdhYTBhMWFkZDM2ZTMwMDEzNjM3YTVmNTJmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC0xODAs
NyArMTgwLDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJVSVNvdXJjZUNvZGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IkphdmFTY3JpcHRTb3VyY2UuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkxpbmtpZmllci5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iRGVidWdnZXJTY3JpcHRNYXBwaW5nLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJEZWJ1Z2dlclJlc291cmNlQmluZGluZy5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUHJlc2VudGF0
aW9uQ29uc29sZU1lc3NhZ2VIZWxwZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9IkJyZWFrcG9pbnRNYW5hZ2VyLmpzIj48L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXgg
YTUwYzAwZmIxOWZjNmM5YmMxMzIzNTkwNDE2OWNlYmNjZmZhZDgyMS4uNDRjMDhmMTgxZTBjYjQy
ZmJiMWFmYjNmM2FmZGRhMzJkYjdhNDE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTM4LDcgKzM4LDcgQEAgdmFyIFdlYkluc3Bl
Y3RvciA9IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmluc3BlY3RvclZpZXcuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuSW5zcGVjdG9yVmlldy5FdmVudHMuUGFuZWxTZWxlY3RlZCwgdGhp
cy5fcGFuZWxTZWxlY3RlZCwgdGhpcyk7CiAKICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5Xb3Jr
ZXJNYW5hZ2VyLmlzV29ya2VyRnJvbnRlbmQoKSkgewotICAgICAgICAgICAgdGhpcy5wYW5lbHMu
c2NyaXB0cyA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsKHRoaXMuZGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbCk7CisgICAgICAgICAgICB0aGlzLnBhbmVscy5zY3JpcHRzID0gbmV3IFdl
Ykluc3BlY3Rvci5TY3JpcHRzUGFuZWwoKTsKICAgICAgICAgICAgIHRoaXMucGFuZWxzLnRpbWVs
aW5lID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsKCk7CiAgICAgICAgICAgICB0aGlz
LnBhbmVscy5wcm9maWxlcyA9IG5ldyBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbCgpOwogICAg
ICAgICAgICAgdGhpcy5wYW5lbHMuY29uc29sZSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZVBh
bmVsKCk7CkBAIC01Miw3ICs1Miw3IEBAIHZhciBXZWJJbnNwZWN0b3IgPSB7CiAgICAgICAgIGlm
IChoaWRkZW5QYW5lbHMuaW5kZXhPZigibmV0d29yayIpID09PSAtMSkKICAgICAgICAgICAgIHRo
aXMucGFuZWxzLm5ldHdvcmsgPSBuZXcgV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbCgpOwogICAg
ICAgICBpZiAoaGlkZGVuUGFuZWxzLmluZGV4T2YoInNjcmlwdHMiKSA9PT0gLTEpCi0gICAgICAg
ICAgICB0aGlzLnBhbmVscy5zY3JpcHRzID0gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwo
dGhpcy5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsKTsKKyAgICAgICAgICAgIHRoaXMucGFuZWxz
LnNjcmlwdHMgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbCgpOwogICAgICAgICBpZiAo
aGlkZGVuUGFuZWxzLmluZGV4T2YoInN0eWxlcyIpID09PSAtMSAmJiBXZWJJbnNwZWN0b3IuZXhw
ZXJpbWVudHNTZXR0aW5ncy5zaG93U3R5bGVzUGFuZWwuaXNFbmFibGVkKCkpCiAgICAgICAgICAg
ICB0aGlzLnBhbmVscy5zdHlsZXMgPSBuZXcgV2ViSW5zcGVjdG9yLlN0eWxlc1BhbmVsKCk7CiAg
ICAgICAgIGlmIChoaWRkZW5QYW5lbHMuaW5kZXhPZigidGltZWxpbmUiKSA9PT0gLTEpCkBAIC0z
ODIsOCArMzgyLDYgQEAgV2ViSW5zcGVjdG9yLl9kb0xvYWRlZERvbmVXaXRoQ2FwYWJpbGl0aWVz
ID0gZnVuY3Rpb24oKQogICAgIHRoaXMuZGVidWdnZXJNb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGVidWdnZXJNb2RlbCgpOwogICAgIHRoaXMuc2NyaXB0U25pcHBldE1vZGVsID0gbmV3IFdlYklu
c3BlY3Rvci5TY3JpcHRTbmlwcGV0TW9kZWwoKTsKICAgICB0aGlzLmJyZWFrcG9pbnRNYW5hZ2Vy
ID0gbmV3IFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlcihXZWJJbnNwZWN0b3Iuc2V0dGlu
Z3MuYnJlYWtwb2ludHMsIHRoaXMuZGVidWdnZXJNb2RlbCk7Ci0gICAgdGhpcy5kZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsKCk7Ci0gICAgbmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclJlc291cmNlQmluZGluZygpOwog
CiAgICAgdGhpcy5kcmF3ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkRyYXdlcigpOwogICAgIHRoaXMu
Y29uc29sZVZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3KFdlYkluc3BlY3Rvci5X
b3JrZXJNYW5hZ2VyLmlzV29ya2VyRnJvbnRlbmQoKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDIwY2VkYmEyODA2NzAw
MWE2Y2YyZWQ1NjU4MWI2OWE0OGM4NjM2Zi4uN2UxZWY4YmMxNzNiYjY5NmFkY2E0MDIyMjdmNDQz
YzkzMmE3N2RlMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA1LTE2ICBQYXZlbCBGZWxk
bWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJl
bmFtZSBEZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsIHRvIERlYnVnZ2VyU2NyaXB0TWFwcGluZywg
bWFrZSBpdCBwcml2YXRlIHRvIFNjcmlwdHNQYW5lbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9jb21waWxlci1z
Y3JpcHQtbWFwcGluZy5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyLXRlc3QuanM6CisgICAgICAgIChpbml0aWFsaXplX0RlYnVnZ2VyVGVzdCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2RlYnVnZ2VyL2xpbmtpZmllci5odG1sOgorICAgICAgICAqIGluc3BlY3Rv
ci9kZWJ1Z2dlci9zY3JpcHRzLXBhbmVsLmh0bWw6CisKIDIwMTItMDUtMTYgIE5pa29sYXMgWmlt
bWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAgICAgU1ZHIFRSZWYvVXNlIE5V
TEwgcHRyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb21w
aWxlci1zY3JpcHQtbWFwcGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvY29tcGlsZXItc2NyaXB0LW1hcHBpbmcuaHRtbAppbmRleCBhZjEzMGM5YWE0OWNlODU3M2Q1
MGM0ZTJjZmRkN2Q2NjVmNzkwMmQ3Li5kMjI1NjgyN2YzMmQyMTkyNmJlNmEwMWQ2ZjUxNzI3Njll
YWU0OWJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb21w
aWxlci1zY3JpcHQtbWFwcGluZy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2NvbXBpbGVyLXNjcmlwdC1tYXBwaW5nLmh0bWwKQEAgLTE5MiwxMyArMTkyLDEzIEBA
IGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0
dGluZ3Muc291cmNlTWFwc0VuYWJsZWQuc2V0KHRydWUpOwogICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLmRlYnVnZ2VyTW9kZWwuX3Jlc2V0KCk7Ci0gICAgICAgICAgICB2YXIgZGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2Rl
bCgpOwotICAgICAgICAgICAgZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5VSVNvdXJj
ZUNvZGVBZGRlZCwgdWlTb3VyY2VDb2RlQWRkZWQpOworICAgICAgICAgICAgdmFyIGRlYnVnZ2Vy
U2NyaXB0TWFwcGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJTY3JpcHRNYXBwaW5nKCk7
CisgICAgICAgICAgICBkZWJ1Z2dlclNjcmlwdE1hcHBpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuRGVidWdnZXJTY3JpcHRNYXBwaW5nLkV2ZW50cy5VSVNvdXJjZUNvZGVBZGRlZCwg
dWlTb3VyY2VDb2RlQWRkZWQpOwogCiAgICAgICAgICAgICB2YXIgc2NyaXB0ID0gSW5zcGVjdG9y
VGVzdC5jcmVhdGVTY3JpcHRNb2NrKCJjb21waWxlZC5qcyIsIDAsIDAsIHRydWUsICIiKTsKICAg
ICAgICAgICAgIHNjcmlwdC5zb3VyY2VNYXBVUkwgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL2lu
c3BlY3Rvci9yZXNvdXJjZXMvc291cmNlLW1hcC5qc29uXyI7CiAgICAgICAgICAgICBjb25zb2xl
LmVycm9yID0gZnVuY3Rpb24oKSB7fTsgLy8gRXJyb3IgbWVzc2FnZSBpcyBwbGF0Zm9ybSBkZXBl
bmRlbnQuCi0gICAgICAgICAgICBkZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLl9wYXJzZWRTY3Jp
cHRTb3VyY2Uoe2RhdGE6c2NyaXB0fSk7CisgICAgICAgICAgICBkZWJ1Z2dlclNjcmlwdE1hcHBp
bmcuX3BhcnNlZFNjcmlwdFNvdXJjZSh7ZGF0YTpzY3JpcHR9KTsKIAogICAgICAgICAgICAgZnVu
Y3Rpb24gdWlTb3VyY2VDb2RlQWRkZWQoZXZlbnQpCiAgICAgICAgICAgICB7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcwppbmRleCBiOWZm
ODJhMDJmOTU3YWE5NTdkYWM1ZjhlYmRjZmQyMzhjMzA2NmViLi5hYzM2MTEyZmFiZWNlZGMxZTIw
MDJjYmQ1MzBlMjM2YTYxNmRmZTAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMKQEAgLTE1NSw3ICsxNTUsNyBAQCBJbnNwZWN0b3JU
ZXN0Ll9yZXN1bWVkU2NyaXB0ID0gZnVuY3Rpb24oKQogCiBJbnNwZWN0b3JUZXN0LnNob3dTY3Jp
cHRTb3VyY2VPblNjcmlwdHNQYW5lbCA9IGZ1bmN0aW9uKHBhbmVsLCBzY3JpcHROYW1lLCBjYWxs
YmFjaykKIHsKLSAgICB2YXIgdWlTb3VyY2VDb2RlcyA9IHBhbmVsLl9wcmVzZW50YXRpb25Nb2Rl
bC51aVNvdXJjZUNvZGVzKCk7CisgICAgdmFyIHVpU291cmNlQ29kZXMgPSBwYW5lbC5fc2NyaXB0
TWFwcGluZy51aVNvdXJjZUNvZGVzKCk7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1aVNvdXJj
ZUNvZGVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgIGlmICh1aVNvdXJjZUNvZGVzW2ldLnBhcnNl
ZFVSTC5sYXN0UGF0aENvbXBvbmVudCA9PT0gc2NyaXB0TmFtZSkgewogICAgICAgICAgICAgcGFu
ZWwuc2hvd1VJU291cmNlQ29kZSh1aVNvdXJjZUNvZGVzW2ldKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9saW5raWZpZXIuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci9saW5raWZpZXIuaHRtbAppbmRleCA4NzU2Y2ZhMGNiYTNiMjA3NmM0
YmJkYzA2OTBmMjk5ZjlmZjhlMzRhLi4wYmEyM2M3ZjIxMGMwMzBiZTUxZGQyZDI3ZDZkZDk4M2Q3
MTM2NzA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbGlua2lm
aWVyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2xpbmtpZmllci5o
dG1sCkBAIC0zMyw3ICszMyw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGVz
ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwudWlTb3VyY2VDb2Rlcygp
OworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlcyA9IFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0
cy5fc2NyaXB0TWFwcGluZy51aVNvdXJjZUNvZGVzKCk7CiAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgdWlTb3VyY2VDb2Rlcy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgaWYgKHVpU291
cmNlQ29kZXNbaV0udXJsID09PSBXZWJJbnNwZWN0b3IuaW5zcGVjdGVkUGFnZVVSTCkgewogICAg
ICAgICAgICAgICAgIHVpU291cmNlQ29kZSA9IHVpU291cmNlQ29kZXNbaV07CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1wYW5lbC5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtcGFuZWwuaHRtbAppbmRleCAyYWIw
YzU1NzkyZDQ2MDZiNGM5MmZjOWU0M2NmMTNmMmFlNDE5OWExLi43NzQ5YjZkNTdiMmIzZDQ1Njk2
NzcxYTJiNmFmNWU4MmM1YTczZTI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvc2NyaXB0cy1wYW5lbC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9zY3JpcHRzLXBhbmVsLmh0bWwKQEAgLTE4LDcgKzE4LDcgQEAgZnVuY3Rpb24gdGVz
dCgpCiAgICAgICAgIHNldDogZnVuY3Rpb24oYnJlYWtwb2ludHMpIHsgcGVyc2lzdGVudEJyZWFr
cG9pbnRzID0gYnJlYWtwb2ludHM7IH0KICAgICB9OwogCi0gICAgZnVuY3Rpb24gY3JlYXRlRGVi
dWdnZXJQcmVzZW50YXRpb25Nb2RlbE1vY2soKQorICAgIGZ1bmN0aW9uIGNyZWF0ZURlYnVnZ2Vy
U2NyaXB0TWFwcGluZ01vY2soKQogICAgIHsKICAgICAgICAgdmFyIG1vZGVsID0gbmV3IFdlYklu
c3BlY3Rvci5PYmplY3QoKTsKICAgICAgICAgbW9kZWwuYnJlYWtwb2ludHNGb3JVSVNvdXJjZUNv
ZGUgPSBmdW5jdGlvbigpIHsgcmV0dXJuIFtdOyB9OwpAQCAtMjksNyArMjksNyBAQCBmdW5jdGlv
biB0ZXN0KCkKICAgICAgICAgbW9kZWwuX2FkZFVJU291cmNlQ29kZSA9IGZ1bmN0aW9uKHVpU291
cmNlQ29kZSkKICAgICAgICAgewogICAgICAgICAgICAgdWlTb3VyY2VDb2Rlcy5wdXNoKHVpU291
cmNlQ29kZSk7Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuVUlTb3VyY2VDb2RlQWRk
ZWQsIHVpU291cmNlQ29kZSk7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJTY3JpcHRNYXBwaW5nLkV2ZW50cy5VSVNvdXJjZUNv
ZGVBZGRlZCwgdWlTb3VyY2VDb2RlKTsKICAgICAgICAgfQogICAgICAgICBtb2RlbC5fcmVzZXQg
PSBmdW5jdGlvbihwcmVzZXJ2ZWRJdGVtcykKICAgICAgICAgewpAQCAtNDMsNyArNDMsNyBAQCBm
dW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmV3VUlTb3Vy
Y2VDb2RlTGlzdC5sZW5ndGg7ICsraSkKICAgICAgICAgICAgICAgdWlTb3VyY2VDb2Rlcy5wdXNo
KG5ld1VJU291cmNlQ29kZUxpc3RbaV0pOwogICAgICAgICAgICAgdmFyIGRhdGEgPSB7IG9sZFVJ
U291cmNlQ29kZUxpc3Q6IG9sZFVJU291cmNlQ29kZUxpc3QsIHVpU291cmNlQ29kZUxpc3Q6IG5l
d1VJU291cmNlQ29kZUxpc3QgfTsKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5VSVNv
dXJjZUNvZGVSZXBsYWNlZCwgZGF0YSk7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJTY3JpcHRNYXBwaW5nLkV2ZW50cy5VSVNv
dXJjZUNvZGVSZXBsYWNlZCwgZGF0YSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1vZGVs
OwogICAgIH0KQEAgLTYyLDIwICs2MiwyMCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICBJbnNwZWN0
b3JUZXN0LnJ1blRlc3RTdWl0ZShbCiAgICAgICAgIGZ1bmN0aW9uIHRlc3RJbml0aWFsTG9hZChu
ZXh0KQogICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgbW9kZWwgPSBjcmVhdGVEZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsTW9jaygpOworICAgICAgICAgICAgdmFyIG1hcHBpbmcgPSBjcmVhdGVE
ZWJ1Z2dlclNjcmlwdE1hcHBpbmdNb2NrKCk7CiAgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2Rl
ID0gY3JlYXRlVUlTb3VjZUNvZGUoImZvb2Jhci5qcyIpOwogICAgICAgICAgICAgdmFyIHVpU291
cmNlQ29kZUZvbyA9IGNyZWF0ZVVJU291Y2VDb2RlKCJmb28uanMiKTsKICAgICAgICAgICAgIHZh
ciB1aVNvdXJjZUNvZGVCYXIgPSBjcmVhdGVVSVNvdWNlQ29kZSgiYmFyLmpzIik7CiAgICAgICAg
ICAgICB2YXIgdWlTb3VyY2VDb2RlQmF6ID0gY3JlYXRlVUlTb3VjZUNvZGUoImJhei5qcyIpOwog
Ci0gICAgICAgICAgICBtb2RlbC5fYWRkVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7CisgICAg
ICAgICAgICBtYXBwaW5nLl9hZGRVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlKTsKIAotICAgICAg
ICAgICAgdmFyIHBhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwobW9kZWwpOwor
ICAgICAgICAgICAgdmFyIHBhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwobWFw
cGluZyk7CiAgICAgICAgICAgICBwYW5lbC5zaG93KCk7CiAKLSAgICAgICAgICAgIG1vZGVsLl9h
ZGRVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlRm9vKTsKLSAgICAgICAgICAgIG1vZGVsLl9hZGRV
SVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlQmFyKTsKLSAgICAgICAgICAgIG1vZGVsLl9hZGRVSVNv
dXJjZUNvZGUodWlTb3VyY2VDb2RlQmF6KTsKKyAgICAgICAgICAgIG1hcHBpbmcuX2FkZFVJU291
cmNlQ29kZSh1aVNvdXJjZUNvZGVGb28pOworICAgICAgICAgICAgbWFwcGluZy5fYWRkVUlTb3Vy
Y2VDb2RlKHVpU291cmNlQ29kZUJhcik7CisgICAgICAgICAgICBtYXBwaW5nLl9hZGRVSVNvdXJj
ZUNvZGUodWlTb3VyY2VDb2RlQmF6KTsKIAogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1w
U2NyaXB0c05hdmlnYXRvcihwYW5lbC5fbmF2aWdhdG9yKTsKIApAQCAtODgsMjEgKzg4LDIxIEBA
IGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAgIGZ1bmN0aW9uIHRlc3RSZXNldChuZXh0KQogICAg
ICAgICB7Ci0gICAgICAgICAgICB2YXIgbW9kZWwgPSBjcmVhdGVEZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsTW9jaygpOwotICAgICAgICAgICAgdmFyIHBhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5T
Y3JpcHRzUGFuZWwobW9kZWwpOworICAgICAgICAgICAgdmFyIG1hcHBpbmcgPSBjcmVhdGVEZWJ1
Z2dlclNjcmlwdE1hcHBpbmdNb2NrKCk7CisgICAgICAgICAgICB2YXIgcGFuZWwgPSBuZXcgV2Vi
SW5zcGVjdG9yLlNjcmlwdHNQYW5lbChtYXBwaW5nKTsKICAgICAgICAgICAgIHBhbmVsLnNob3co
KTsKIAogICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZUZvbyA9IGNyZWF0ZVVJU291Y2VDb2Rl
KCJmb28uanMiKTsKICAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGVCYXIgPSBjcmVhdGVVSVNv
dWNlQ29kZSgiYmFyLmpzIik7CiAgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlQmF6ID0gY3Jl
YXRlVUlTb3VjZUNvZGUoImJhei5qcyIpOwogCi0gICAgICAgICAgICBtb2RlbC5fYWRkVUlTb3Vy
Y2VDb2RlKHVpU291cmNlQ29kZUZvbyk7Ci0gICAgICAgICAgICBtb2RlbC5fYWRkVUlTb3VyY2VD
b2RlKHVpU291cmNlQ29kZUJhcik7Ci0gICAgICAgICAgICBtb2RlbC5fYWRkVUlTb3VyY2VDb2Rl
KHVpU291cmNlQ29kZUJheik7CisgICAgICAgICAgICBtYXBwaW5nLl9hZGRVSVNvdXJjZUNvZGUo
dWlTb3VyY2VDb2RlRm9vKTsKKyAgICAgICAgICAgIG1hcHBpbmcuX2FkZFVJU291cmNlQ29kZSh1
aVNvdXJjZUNvZGVCYXIpOworICAgICAgICAgICAgbWFwcGluZy5fYWRkVUlTb3VyY2VDb2RlKHVp
U291cmNlQ29kZUJheik7CiAKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNjcmlwdHNO
YXZpZ2F0b3IocGFuZWwuX25hdmlnYXRvcik7CiAKLSAgICAgICAgICAgIG1vZGVsLl9yZXNldChb
dWlTb3VyY2VDb2RlQmFyXSk7CisgICAgICAgICAgICBtYXBwaW5nLl9yZXNldChbdWlTb3VyY2VD
b2RlQmFyXSk7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTY3JpcHRzTmF2aWdhdG9y
KHBhbmVsLl9uYXZpZ2F0b3IpOwogCiAgICAgICAgICAgICBwYW5lbC5kZXRhY2goKTsKQEAgLTEx
MiwyMSArMTEyLDIxIEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAgIGZ1bmN0aW9uIHRlc3RT
b3VyY2VSZXBsYWNlZChuZXh0KQogICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgbW9kZWwgPSBj
cmVhdGVEZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsTW9jaygpOwotICAgICAgICAgICAgdmFyIHBh
bmVsID0gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwobW9kZWwpOworICAgICAgICAgICAg
dmFyIG1hcHBpbmcgPSBjcmVhdGVEZWJ1Z2dlclNjcmlwdE1hcHBpbmdNb2NrKCk7CisgICAgICAg
ICAgICB2YXIgcGFuZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbChtYXBwaW5nKTsK
ICAgICAgICAgICAgIHBhbmVsLnNob3coKTsKIAogICAgICAgICAgICAgdmFyIHVpU291cmNlQ29k
ZUZvbyA9IGNyZWF0ZVVJU291Y2VDb2RlKCJmb28uanMiKTsKLSAgICAgICAgICAgIG1vZGVsLl9h
ZGRVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlRm9vKTsKKyAgICAgICAgICAgIG1hcHBpbmcuX2Fk
ZFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGVGb28pOwogICAgICAgICAgICAgdmFyIGNvbXBpbGVk
U291cmNlQ29kZSA9IGNyZWF0ZVVJU291Y2VDb2RlKCJjb21waWxlZC5qcyIpOwotICAgICAgICAg
ICAgbW9kZWwuX2FkZFVJU291cmNlQ29kZShjb21waWxlZFNvdXJjZUNvZGUpOworICAgICAgICAg
ICAgbWFwcGluZy5fYWRkVUlTb3VyY2VDb2RlKGNvbXBpbGVkU291cmNlQ29kZSk7CiAKICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNjcmlwdHNOYXZpZ2F0b3IocGFuZWwuX25hdmlnYXRv
cik7CiAKICAgICAgICAgICAgIC8vIFBsdWcgY29tcGlsZXIgc291cmNlIG1hcHBpbmcuCiAgICAg
ICAgICAgICB2YXIgc291cmNlMVNvdXJjZUNvZGUgPSBjcmVhdGVVSVNvdWNlQ29kZSgic291cmNl
MS5qcyIpOwogICAgICAgICAgICAgdmFyIHNvdXJjZTJTb3VyY2VDb2RlID0gY3JlYXRlVUlTb3Vj
ZUNvZGUoInNvdXJjZTIuanMiKTsKLSAgICAgICAgICAgIG1vZGVsLl9yZXBsYWNlVUlTb3VyY2VD
b2RlcyhbY29tcGlsZWRTb3VyY2VDb2RlXSwgW3NvdXJjZTFTb3VyY2VDb2RlLCBzb3VyY2UyU291
cmNlQ29kZV0pOworICAgICAgICAgICAgbWFwcGluZy5fcmVwbGFjZVVJU291cmNlQ29kZXMoW2Nv
bXBpbGVkU291cmNlQ29kZV0sIFtzb3VyY2UxU291cmNlQ29kZSwgc291cmNlMlNvdXJjZUNvZGVd
KTsKIAogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU2NyaXB0c05hdmlnYXRvcihwYW5l
bC5fbmF2aWdhdG9yKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc2hvd1NjcmlwdFNvdXJj
ZU9uU2NyaXB0c1BhbmVsKHBhbmVsLCAic291cmNlMi5qcyIsIHN0ZXAyKTsKQEAgLTEzNyw3ICsx
MzcsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDMoKSB7
CiAgICAgICAgICAgICAgICAgLy8gVW5wbHVnIGNvbXBpbGVyIHNvdXJjZSBtYXBwaW5nLgotICAg
ICAgICAgICAgICAgIG1vZGVsLl9yZXBsYWNlVUlTb3VyY2VDb2Rlcyhbc291cmNlMVNvdXJjZUNv
ZGUsIHNvdXJjZTJTb3VyY2VDb2RlXSwgW2NvbXBpbGVkU291cmNlQ29kZV0pOworICAgICAgICAg
ICAgICAgIG1hcHBpbmcuX3JlcGxhY2VVSVNvdXJjZUNvZGVzKFtzb3VyY2UxU291cmNlQ29kZSwg
c291cmNlMlNvdXJjZUNvZGVdLCBbY29tcGlsZWRTb3VyY2VDb2RlXSk7CiAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5kdW1wU2NyaXB0c05hdmlnYXRvcihwYW5lbC5fbmF2aWdhdG9yKTsK
IAogICAgICAgICAgICAgICAgIHBhbmVsLmRldGFjaCgpOwo=
</data>
<flag name="review"
          id="148452"
          type_id="1"
          status="+"
          setter="vsevik"
    />
    <flag name="commit-queue"
          id="148456"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
      

    </bug>

</bugzilla>