<?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>47772</bug_id>
          
          <creation_ts>2010-10-16 08:23:26 -0700</creation_ts>
          <short_desc>Web Inspector: brush up URL parsing on the front-end.</short_desc>
          <delta_ts>2010-10-18 02:19:29 -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>1</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>295136</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-10-16 08:23:26 -0700</bug_when>
    <thetext>1. We should not be doing match[2] all over the code to extract the domain
2. We currently rely on backend to calculate host, port, lastPathComponent and such, but they can areally be cracked on the front-end side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295143</commentid>
    <comment_count>1</comment_count>
      <attachid>70958</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-10-16 09:16:32 -0700</bug_when>
    <thetext>Created attachment 70958
[PATCH] Proposed change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295145</commentid>
    <comment_count>2</comment_count>
      <attachid>70959</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-10-16 09:31:41 -0700</bug_when>
    <thetext>Created attachment 70959
[PATCH] Same with layout tests not using old regex.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295401</commentid>
    <comment_count>3</comment_count>
      <attachid>70959</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-10-18 02:00:51 -0700</bug_when>
    <thetext>Comment on attachment 70959
[PATCH] Same with layout tests not using old regex.

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

&gt; WebCore/inspector/front-end/utilities.js:396
&gt; +String.prototype.asParsedURL = function()

I&apos;d rather make it a function, not a method.

&gt; WebCore/inspector/front-end/utilities.js:413
&gt; +    return result;

You may want to cache result on the String object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295402</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-10-18 02:19:29 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	LayoutTests/inspector/elements-panel-rewrite-href.html
	M	WebCore/ChangeLog
	M	WebCore/inspector/InspectorResource.cpp
	M	WebCore/inspector/front-end/AuditRules.js
	M	WebCore/inspector/front-end/CookieItemsView.js
	M	WebCore/inspector/front-end/DOMAgent.js
	M	WebCore/inspector/front-end/Resource.js
	M	WebCore/inspector/front-end/ResourceCategory.js
	M	WebCore/inspector/front-end/ResourceView.js
	M	WebCore/inspector/front-end/inspector.js
	M	WebCore/inspector/front-end/utilities.js
Committed r69947</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70958</attachid>
            <date>2010-10-16 09:16:32 -0700</date>
            <delta_ts>2010-10-16 09:31:41 -0700</delta_ts>
            <desc>[PATCH] Proposed change.</desc>
            <filename>url_parse</filename>
            <type>text/plain</type>
            <size>19613</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YjM1Yzg1Ni4uNzY4NGEwMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMC0xMC0xNiAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBicnVzaCB1cCBVUkwgcGFyc2luZyBv
biB0aGUgZnJvbnQtZW5kLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDc3NzIKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlU2NyaXB0T2Jq
ZWN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5nZXREb21haW5Ub1Jlc291cmNlc01hcCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5Db21iaW5lRXh0ZXJuYWxSZXNvdXJjZXNS
dWxlLnByb3RvdHlwZS5kb1J1bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5N
aW5pbWl6ZURuc0xvb2t1cHNSdWxlLnByb3RvdHlwZS5kb1J1bik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQXVkaXRSdWxlcy5QYXJhbGxlbGl6ZURvd25sb2FkUnVsZS5wcm90b3R5cGUuZG9SdW4p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuSW1hZ2VEaW1lbnNpb25zUnVsZS5w
cm90b3R5cGUuZG9SdW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuQ29va2ll
U2l6ZVJ1bGUucHJvdG90eXBlLnByb2Nlc3NDb29raWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5BdWRpdFJ1bGVzLlN0YXRpY0Nvb2tpZWxlc3NSdWxlLnByb3RvdHlwZS5wcm9jZXNzQ29va2ll
cyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db29raWVJdGVtc1ZpZXcuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ29va2llSXRlbXNWaWV3LnByb3RvdHlwZS5fZmlsdGVyQ29v
a2llc0ZvckRvbWFpbik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db29raWVzLmNvb2tpZU1hdGNoZXNSZXNvdXJjZVVS
TCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5SZXNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2Uu
cHJvdG90eXBlLnNldCB1cmwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3Rv
dHlwZS5nZXQgZGlzcGxheU5hbWUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVz
b3VyY2VDYXRlZ29yeS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZUNhdGVnb3J5
LnByb3RvdHlwZS5hZGRSZXNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5kb2N1bWVudENsaWNrLmZvbGxvd0xpbmspOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LmRvY3VtZW50Q2xpY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLnVwZGF0ZVJlc291cmNlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5saW5raWZ5U3RyaW5nQXNGcmFnbWVudCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IucmVzb3VyY2VVUkxGb3JSZWxhdGVkTm9kZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuY29tcGxldGVVUkwpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvdXRp
bGl0aWVzLmpzOgorICAgICAgICAoU3RyaW5nLnByb3RvdHlwZS5hc1BhcnNlZFVSTCk6CisKIDIw
MTAtMTAtMTUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5j
cHAKaW5kZXggNWVlNGE5NS4uNWE2Y2FhZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2UuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJl
c291cmNlLmNwcApAQCAtMjYyLDkgKzI2Miw2IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OnVw
ZGF0ZVNjcmlwdE9iamVjdChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiAgICAgICAgICAg
ICBtX2RvY3VtZW50VVJMID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgICAgIGpz
b25PYmplY3QtPnNldFN0cmluZygidXJsIiwgbV9yZXF1ZXN0VVJMLnN0cmluZygpKTsKICAgICAg
ICAganNvbk9iamVjdC0+c2V0U3RyaW5nKCJkb2N1bWVudFVSTCIsIG1fZG9jdW1lbnRVUkwuc3Ry
aW5nKCkpOwotICAgICAgICBqc29uT2JqZWN0LT5zZXRTdHJpbmcoImhvc3QiLCBtX3JlcXVlc3RV
UkwuaG9zdCgpKTsKLSAgICAgICAganNvbk9iamVjdC0+c2V0U3RyaW5nKCJwYXRoIiwgbV9yZXF1
ZXN0VVJMLnBhdGgoKSk7Ci0gICAgICAgIGpzb25PYmplY3QtPnNldFN0cmluZygibGFzdFBhdGhD
b21wb25lbnQiLCBtX3JlcXVlc3RVUkwubGFzdFBhdGhDb21wb25lbnQoKSk7CiAgICAgICAgIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlcXVlc3RIZWFkZXJzID0gYnVpbGRIZWFkZXJzT2JqZWN0
KG1fcmVxdWVzdEhlYWRlckZpZWxkcyk7CiAgICAgICAgIGpzb25PYmplY3QtPnNldE9iamVjdCgi
cmVxdWVzdEhlYWRlcnMiLCByZXF1ZXN0SGVhZGVycyk7CiAgICAgICAgIGpzb25PYmplY3QtPnNl
dEJvb2xlYW4oIm1haW5SZXNvdXJjZSIsIG1faXNNYWluUmVzb3VyY2UpOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMuanMgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQXVkaXRSdWxlcy5qcwppbmRleCBhNzJkZTU2Li5jZDlmMTNlIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSdWxlcy5qcworKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSdWxlcy5qcwpAQCAtNDIsMTcgKzQyLDE3
IEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNhY2hlYWJsZVJlc3BvbnNlQ29kZXMgPQogICAg
IDMwNDogdHJ1ZSAvLyBVbmRlcmx5aW5nIHJlc291cmNlIGlzIGNhY2hlYWJsZQogfQogCi1XZWJJ
bnNwZWN0b3IuQXVkaXRSdWxlcy5nZXREb21haW5Ub1Jlc291cmNlc01hcCA9IGZ1bmN0aW9uKHJl
c291cmNlcywgdHlwZXMsIHJlZ2V4cCwgbmVlZEZ1bGxSZXNvdXJjZXMpCitXZWJJbnNwZWN0b3Iu
QXVkaXRSdWxlcy5nZXREb21haW5Ub1Jlc291cmNlc01hcCA9IGZ1bmN0aW9uKHJlc291cmNlcywg
dHlwZXMsIG5lZWRGdWxsUmVzb3VyY2VzKQogewogICAgIHZhciBkb21haW5Ub1Jlc291cmNlc01h
cCA9IHt9OwogICAgIGZvciAodmFyIGkgPSAwLCBzaXplID0gcmVzb3VyY2VzLmxlbmd0aDsgaSA8
IHNpemU7ICsraSkgewogICAgICAgICB2YXIgcmVzb3VyY2UgPSByZXNvdXJjZXNbaV07CiAgICAg
ICAgIGlmICh0eXBlcyAmJiB0eXBlcy5pbmRleE9mKHJlc291cmNlLnR5cGUpID09PSAtMSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB2YXIgbWF0Y2ggPSByZXNvdXJjZS51cmwubWF0
Y2gocmVnZXhwKTsKLSAgICAgICAgaWYgKCFtYXRjaCkKKyAgICAgICAgdmFyIHBhcnNlZFVSTCA9
IHJlc291cmNlLnVybC5hc1BhcnNlZFVSTCgpOworICAgICAgICBpZiAoIXBhcnNlZFVSTCkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB2YXIgZG9tYWluID0gbWF0Y2hbMl07CisgICAg
ICAgIHZhciBkb21haW4gPSBwYXJzZWRVUkwuaG9zdDsKICAgICAgICAgdmFyIGRvbWFpblJlc291
cmNlcyA9IGRvbWFpblRvUmVzb3VyY2VzTWFwW2RvbWFpbl07CiAgICAgICAgIGlmIChkb21haW5S
ZXNvdXJjZXMgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgIGRvbWFpblJlc291cmNlcyA9IFtd
OwpAQCAtMTI4LDcgKzEyOCw3IEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNvbWJpbmVFeHRl
cm5hbFJlc291cmNlc1J1bGUgPSBmdW5jdGlvbihpZCwgbmFtZSwgdHlwZSwKIFdlYkluc3BlY3Rv
ci5BdWRpdFJ1bGVzLkNvbWJpbmVFeHRlcm5hbFJlc291cmNlc1J1bGUucHJvdG90eXBlID0gewog
ICAgIGRvUnVuOiBmdW5jdGlvbihyZXNvdXJjZXMsIHJlc3VsdCwgY2FsbGJhY2spCiAgICAgewot
ICAgICAgICB2YXIgZG9tYWluVG9SZXNvdXJjZXNNYXAgPSBXZWJJbnNwZWN0b3IuQXVkaXRSdWxl
cy5nZXREb21haW5Ub1Jlc291cmNlc01hcChyZXNvdXJjZXMsIFt0aGlzLl90eXBlXSwgV2ViSW5z
cGVjdG9yLlVSTFJlZ0V4cCk7CisgICAgICAgIHZhciBkb21haW5Ub1Jlc291cmNlc01hcCA9IFdl
Ykluc3BlY3Rvci5BdWRpdFJ1bGVzLmdldERvbWFpblRvUmVzb3VyY2VzTWFwKHJlc291cmNlcywg
W3RoaXMuX3R5cGVdKTsKICAgICAgICAgdmFyIHBlbmFsaXplZFJlc291cmNlQ291bnQgPSAwOwog
ICAgICAgICAvLyBUT0RPOiByZWZhY3RvciBhY2NvcmRpbmcgdG8gdGhlIGNob3NlbiBpMThuIGFw
cHJvYWNoCiAgICAgICAgIHZhciBzdW1tYXJ5ID0gcmVzdWx0LmFkZENoaWxkKCIiLCB0cnVlKTsK
QEAgLTE3NSwxNCArMTc1LDE0IEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLk1pbmltaXplRG5z
TG9va3Vwc1J1bGUucHJvdG90eXBlID0gewogICAgIGRvUnVuOiBmdW5jdGlvbihyZXNvdXJjZXMs
IHJlc3VsdCwgY2FsbGJhY2spCiAgICAgewogICAgICAgICB2YXIgc3VtbWFyeSA9IHJlc3VsdC5h
ZGRDaGlsZCgiIik7Ci0gICAgICAgIHZhciBkb21haW5Ub1Jlc291cmNlc01hcCA9IFdlYkluc3Bl
Y3Rvci5BdWRpdFJ1bGVzLmdldERvbWFpblRvUmVzb3VyY2VzTWFwKHJlc291cmNlcywgdW5kZWZp
bmVkLCBXZWJJbnNwZWN0b3IuVVJMUmVnRXhwKTsKKyAgICAgICAgdmFyIGRvbWFpblRvUmVzb3Vy
Y2VzTWFwID0gV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuZ2V0RG9tYWluVG9SZXNvdXJjZXNNYXAo
cmVzb3VyY2VzLCB1bmRlZmluZWQpOwogICAgICAgICBmb3IgKHZhciBkb21haW4gaW4gZG9tYWlu
VG9SZXNvdXJjZXNNYXApIHsKICAgICAgICAgICAgIGlmIChkb21haW5Ub1Jlc291cmNlc01hcFtk
b21haW5dLmxlbmd0aCA+IDEpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICB2YXIgbWF0Y2ggPSBkb21haW4ubWF0Y2goV2ViSW5zcGVjdG9yLlVSTFJlZ0V4cCk7Ci0gICAg
ICAgICAgICBpZiAoIW1hdGNoKQorICAgICAgICAgICAgdmFyIHBhcnNlZFVSTCA9IGRvbWFpbi5h
c1BhcnNlZFVSTCgpOworICAgICAgICAgICAgaWYgKCFwYXJzZWRVUkwpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAoIW1hdGNoWzJdLnNlYXJjaChXZWJJbnNwZWN0
b3IuQXVkaXRSdWxlcy5JUEFkZHJlc3NSZWdleHApKQorICAgICAgICAgICAgaWYgKCFwYXJzZWRV
UkwuaG9zdC5zZWFyY2goV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuSVBBZGRyZXNzUmVnZXhwKSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gYW4gSVAgYWRkcmVzcwogICAgICAgICAgICAg
c3VtbWFyeS5hZGRTbmlwcGV0KG1hdGNoWzJdKTsKICAgICAgICAgICAgIHJlc3VsdC52aW9sYXRp
b25Db3VudCsrOwpAQCAtMjIwLDcgKzIyMCw2IEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLlBh
cmFsbGVsaXplRG93bmxvYWRSdWxlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGRvbWFpblRv
UmVzb3VyY2VzTWFwID0gV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuZ2V0RG9tYWluVG9SZXNvdXJj
ZXNNYXAoCiAgICAgICAgICAgICByZXNvdXJjZXMsCiAgICAgICAgICAgICBbV2ViSW5zcGVjdG9y
LlJlc291cmNlLlR5cGUuU3R5bGVzaGVldCwgV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuSW1h
Z2VdLAotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlVSTFJlZ0V4cCwKICAgICAgICAgICAgIHRy
dWUpOwogCiAgICAgICAgIHZhciBob3N0cyA9IFtdOwpAQCAtNjQ3LDcgKzY0Niw3IEBAIFdlYklu
c3BlY3Rvci5BdWRpdFJ1bGVzLkltYWdlRGltZW5zaW9uc1J1bGUucHJvdG90eXBlID0gewogCiAg
ICAgICAgICAgICBjb25zdCBub2RlID0gV2ViSW5zcGVjdG9yLmRvbUFnZW50Lm5vZGVGb3JJZChp
bWFnZUlkKTsKICAgICAgICAgICAgIHZhciBzcmMgPSBub2RlLmdldEF0dHJpYnV0ZSgic3JjIik7
Ci0gICAgICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5VUkxSZWdFeHAudGVzdChzcmMpKSB7Cisg
ICAgICAgICAgICBpZiAoIXNyYy5hc1BhcnNlZFVSTCgpKSB7CiAgICAgICAgICAgICAgICAgZm9y
ICh2YXIgZnJhbWVPd25lckNhbmRpZGF0ZSA9IG5vZGU7IGZyYW1lT3duZXJDYW5kaWRhdGU7IGZy
YW1lT3duZXJDYW5kaWRhdGUgPSBmcmFtZU93bmVyQ2FuZGlkYXRlLnBhcmVudE5vZGUpIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKGZyYW1lT3duZXJDYW5kaWRhdGUuZG9jdW1lbnRVUkwpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb21wbGV0ZVNyYyA9IFdlYkluc3BlY3Rvci5j
b21wbGV0ZVVSTChmcmFtZU93bmVyQ2FuZGlkYXRlLmRvY3VtZW50VVJMLCBzcmMpOwpAQCAtOTM0
LDcgKzkzMyw2IEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNvb2tpZVNpemVSdWxlLnByb3Rv
dHlwZSA9IHsKIAogICAgICAgICB2YXIgZG9tYWluVG9SZXNvdXJjZXNNYXAgPSBXZWJJbnNwZWN0
b3IuQXVkaXRSdWxlcy5nZXREb21haW5Ub1Jlc291cmNlc01hcChyZXNvdXJjZXMsCiAgICAgICAg
ICAgICAgICAgbnVsbCwKLSAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuVVJMUmVnRXhwLAog
ICAgICAgICAgICAgICAgIHRydWUpOwogICAgICAgICB2YXIgbWF0Y2hpbmdSZXNvdXJjZURhdGEg
PSB7fTsKICAgICAgICAgdGhpcy5tYXBSZXNvdXJjZUNvb2tpZXMoZG9tYWluVG9SZXNvdXJjZXNN
YXAsIGFsbENvb2tpZXMsIGNvbGxlY3RvckNhbGxiYWNrLmJpbmQodGhpcykpOwpAQCAtOTk4LDcg
Kzk5Niw2IEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLlN0YXRpY0Nvb2tpZWxlc3NSdWxlLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGRvbWFpblRvUmVzb3VyY2VzTWFwID0gV2ViSW5zcGVj
dG9yLkF1ZGl0UnVsZXMuZ2V0RG9tYWluVG9SZXNvdXJjZXNNYXAocmVzb3VyY2VzLAogICAgICAg
ICAgICAgICAgIFtXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TdHlsZXNoZWV0LAogICAgICAg
ICAgICAgICAgICBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5JbWFnZV0sCi0gICAgICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLlVSTFJlZ0V4cCwKICAgICAgICAgICAgICAgICB0cnVlKTsKICAg
ICAgICAgdmFyIHRvdGFsU3RhdGljUmVzb3VyY2VzID0gMDsKICAgICAgICAgZm9yICh2YXIgZG9t
YWluIGluIGRvbWFpblRvUmVzb3VyY2VzTWFwKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0Nvb2tpZUl0ZW1zVmlldy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9Db29raWVJdGVtc1ZpZXcuanMKaW5kZXggMWJhZjRhNi4uODhjYmUwNSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZUl0ZW1zVmlldy5qcworKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29va2llSXRlbXNWaWV3LmpzCkBAIC0xMjIsOCAr
MTIyLDggQEAgV2ViSW5zcGVjdG9yLkNvb2tpZUl0ZW1zVmlldy5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgZm9yICh2YXIgaWQgaW4gV2ViSW5zcGVjdG9yLnJlc291cmNlcykgewogICAgICAgICAg
ICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLnJlc291cmNlc1tpZF07Ci0gICAgICAgICAg
ICB2YXIgbWF0Y2ggPSByZXNvdXJjZS5kb2N1bWVudFVSTC5tYXRjaChXZWJJbnNwZWN0b3IuR2Vu
ZXJpY1VSTFJlZ0V4cCk7Ci0gICAgICAgICAgICBpZiAobWF0Y2ggJiYgbWF0Y2hbMl0gPT09IHRo
aXMuX2Nvb2tpZURvbWFpbikKKyAgICAgICAgICAgIHZhciB1cmwgPSByZXNvdXJjZS5kb2N1bWVu
dFVSTC5hc1BhcnNlZFVSTCgpOworICAgICAgICAgICAgaWYgKHVybCAmJiB1cmwuaG9zdCA9PSB0
aGlzLl9jb29raWVEb21haW4pCiAgICAgICAgICAgICAgICAgcmVzb3VyY2VVUkxzRm9yRG9jdW1l
bnRVUkwucHVzaChyZXNvdXJjZS51cmwpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9ET01BZ2VudC5qcwppbmRleCBlOTk2MjRkLi41MTUzZmIxIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCkBAIC01MDAsMTcgKzUwMCwxMiBAQCBXZWJJbnNw
ZWN0b3IuQ29va2llcy5idWlsZENvb2tpZXNGcm9tU3RyaW5nID0gZnVuY3Rpb24ocmF3Q29va2ll
U3RyaW5nKQogCiBXZWJJbnNwZWN0b3IuQ29va2llcy5jb29raWVNYXRjaGVzUmVzb3VyY2VVUkwg
PSBmdW5jdGlvbihjb29raWUsIHJlc291cmNlVVJMKQogewotICAgIHZhciBtYXRjaCA9IHJlc291
cmNlVVJMLm1hdGNoKFdlYkluc3BlY3Rvci5HZW5lcmljVVJMUmVnRXhwKTsKLSAgICBpZiAoIW1h
dGNoKQorICAgIHZhciB1cmwgPSByZXNvdXJjZVVSTC5hc1BhcnNlZFVSTCgpOworICAgIGlmICgh
dXJsIHx8ICF0aGlzLmNvb2tpZURvbWFpbk1hdGNoZXNSZXNvdXJjZURvbWFpbihjb29raWUuZG9t
YWluLCB1cmwuaG9zdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAvLyBTZWUgV2ViSW5z
cGVjdG9yLlVSTFJlZ0V4cCBmb3IgZGVmaW5pdGlvbnMgb2YgdGhlIGdyb3VwIGluZGV4IGNvbnN0
YW50cy4KLSAgICBpZiAoIXRoaXMuY29va2llRG9tYWluTWF0Y2hlc1Jlc291cmNlRG9tYWluKGNv
b2tpZS5kb21haW4sIG1hdGNoWzJdKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHZhciBy
ZXNvdXJjZVBvcnQgPSBtYXRjaFszXSA/IG1hdGNoWzNdIDogdW5kZWZpbmVkOwotICAgIHZhciBy
ZXNvdXJjZVBhdGggPSBtYXRjaFs0XSA/IG1hdGNoWzRdIDogJy8nOwotICAgIHJldHVybiAocmVz
b3VyY2VQYXRoLmluZGV4T2YoY29va2llLnBhdGgpID09PSAwCi0gICAgICAgICYmICghY29va2ll
LnBvcnQgfHwgcmVzb3VyY2VQb3J0ID09IGNvb2tpZS5wb3J0KQotICAgICAgICAmJiAoIWNvb2tp
ZS5zZWN1cmUgfHwgbWF0Y2hbMV0udG9Mb3dlckNhc2UoKSA9PT0gJ2h0dHBzJykpOworICAgIHJl
dHVybiAodXJsLnBhdGguaW5kZXhPZihjb29raWUucGF0aCkgPT09IDAKKyAgICAgICAgJiYgKCFj
b29raWUucG9ydCB8fCB1cmwucG9ydCA9PSBjb29raWUucG9ydCkKKyAgICAgICAgJiYgKCFjb29r
aWUuc2VjdXJlIHx8IHVybC5zY2hlbWUgPT09ICJodHRwcyIpKTsKIH0KIAogV2ViSW5zcGVjdG9y
LkNvb2tpZXMuY29va2llRG9tYWluTWF0Y2hlc1Jlc291cmNlRG9tYWluID0gZnVuY3Rpb24oY29v
a2llRG9tYWluLCByZXNvdXJjZURvbWFpbikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9SZXNvdXJjZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNv
dXJjZS5qcwppbmRleCBlYTkwNTJkLi45YmJmOTBiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1Jlc291cmNlLmpzCkBAIC0yOSw3ICsyOSw3IEBACiBXZWJJbnNwZWN0b3IuUmVzb3VyY2Ug
PSBmdW5jdGlvbihpZGVudGlmaWVyLCB1cmwpCiB7CiAgICAgdGhpcy5pZGVudGlmaWVyID0gaWRl
bnRpZmllcjsKLSAgICB0aGlzLl91cmwgPSB1cmw7CisgICAgdGhpcy51cmwgPSB1cmw7CiAgICAg
dGhpcy5fc3RhcnRUaW1lID0gLTE7CiAgICAgdGhpcy5fZW5kVGltZSA9IC0xOwogICAgIHRoaXMu
X3JlcXVlc3RNZXRob2QgPSAiIjsKQEAgLTk3LDE0ICs5NywxOSBAQCBXZWJJbnNwZWN0b3IuUmVz
b3VyY2UucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5fdXJsID09PSB4KQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciBvbGRVUkwgPSB0aGlzLl91cmw7CiAgICAgICAg
IHRoaXMuX3VybCA9IHg7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9wYXJzZWRRdWVyeVBhcmFtZXRl
cnM7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbWFrZSB0aGUgV2ViSW5zcGVjdG9yIG9i
amVjdCBsaXN0ZW4gZm9yIHRoZSAidXJsIGNoYW5nZWQiIGV2ZW50LgotICAgICAgICAvLyBUaGVu
IHJlc291cmNlVVJMQ2hhbmdlZCBjYW4gYmUgcmVtb3ZlZC4KLSAgICAgICAgV2ViSW5zcGVjdG9y
LnJlc291cmNlVVJMQ2hhbmdlZCh0aGlzLCBvbGRVUkwpOwogCi0gICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKCJ1cmwgY2hhbmdlZCIpOworICAgICAgICB2YXIgcGFyc2VkVVJM
ID0geC5hc1BhcnNlZFVSTCgpOworICAgICAgICB0aGlzLmRvbWFpbiA9IHBhcnNlZFVSTCA/IHBh
cnNlZFVSTC5ob3N0IDogIiI7CisgICAgICAgIHRoaXMucGF0aCA9IHBhcnNlZFVSTCA/IHBhcnNl
ZFVSTC5wYXRoIDogIiI7CisgICAgICAgIHRoaXMubGFzdFBhdGhDb21wb25lbnQgPSAiIjsKKyAg
ICAgICAgaWYgKHBhcnNlZFVSTCAmJiBwYXJzZWRVUkwucGF0aCkgeworICAgICAgICAgICAgdmFy
IGxhc3RTbGFzaEluZGV4ID0gcGFyc2VkVVJMLnBhdGgubGFzdEluZGV4T2YoIi8iKTsKKyAgICAg
ICAgICAgIGlmIChsYXN0U2xhc2hJbmRleCAhPT0gLTEpCisgICAgICAgICAgICAgICAgdGhpcy5s
YXN0UGF0aENvbXBvbmVudCA9IHBhcnNlZFVSTC5wYXRoLnN1YnN0cmluZyhsYXN0U2xhc2hJbmRl
eCArIDEpOworICAgICAgICB9CisgICAgICAgIHRoaXMubGFzdFBhdGhDb21wb25lbnRMb3dlckNh
c2UgPSB0aGlzLmxhc3RQYXRoQ29tcG9uZW50LnRvTG93ZXJDYXNlKCk7CiAgICAgfSwKIAogICAg
IGdldCBkb2N1bWVudFVSTCgpCkBAIC0xMTksNDEgKzEyNCwxOCBAQCBXZWJJbnNwZWN0b3IuUmVz
b3VyY2UucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9kb2N1bWVudFVSTCA9IHg7CiAgICAg
fSwKIAotICAgIGdldCBkb21haW4oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2RvbWFp
bjsKLSAgICB9LAotCi0gICAgc2V0IGRvbWFpbih4KQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMu
X2RvbWFpbiA9PT0geCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5fZG9tYWlu
ID0geDsKLSAgICB9LAotCi0gICAgZ2V0IGxhc3RQYXRoQ29tcG9uZW50KCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLl9sYXN0UGF0aENvbXBvbmVudDsKLSAgICB9LAotCi0gICAgc2V0IGxh
c3RQYXRoQ29tcG9uZW50KHgpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fbGFzdFBhdGhDb21w
b25lbnQgPT09IHgpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMuX2xhc3RQYXRo
Q29tcG9uZW50ID0geDsKLSAgICAgICAgdGhpcy5fbGFzdFBhdGhDb21wb25lbnRMb3dlckNhc2Ug
PSB4ID8geC50b0xvd2VyQ2FzZSgpIDogbnVsbDsKLSAgICB9LAotCiAgICAgZ2V0IGRpc3BsYXlO
YW1lKCkKICAgICB7Ci0gICAgICAgIHZhciB0aXRsZSA9IHRoaXMubGFzdFBhdGhDb21wb25lbnQ7
Ci0gICAgICAgIGlmICghdGl0bGUpCi0gICAgICAgICAgICB0aXRsZSA9IHRoaXMuZGlzcGxheURv
bWFpbjsKLSAgICAgICAgaWYgKCF0aXRsZSAmJiB0aGlzLnVybCkKLSAgICAgICAgICAgIHRpdGxl
ID0gdGhpcy51cmwudHJpbVVSTChXZWJJbnNwZWN0b3IubWFpblJlc291cmNlID8gV2ViSW5zcGVj
dG9yLm1haW5SZXNvdXJjZS5kb21haW4gOiAiIik7Ci0gICAgICAgIGlmICh0aXRsZSA9PT0gIi8i
KQotICAgICAgICAgICAgdGl0bGUgPSB0aGlzLnVybDsKLSAgICAgICAgcmV0dXJuIHRpdGxlOwor
ICAgICAgICBpZiAodGhpcy5fZGlzcGxheU5hbWUpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5f
ZGlzcGxheU5hbWU7CisgICAgICAgIHRoaXMuX2Rpc3BsYXlOYW1lID0gdGhpcy5sYXN0UGF0aENv
bXBvbmVudDsKKyAgICAgICAgaWYgKCF0aGlzLl9kaXNwbGF5TmFtZSkKKyAgICAgICAgICAgIHRo
aXMuX2Rpc3BsYXlOYW1lID0gdGhpcy5kaXNwbGF5RG9tYWluOworICAgICAgICBpZiAoIXRoaXMu
X2Rpc3BsYXlOYW1lICYmIHRoaXMudXJsKQorICAgICAgICAgICAgdGhpcy5fZGlzcGxheU5hbWUg
PSB0aGlzLnVybC50cmltVVJMKFdlYkluc3BlY3Rvci5tYWluUmVzb3VyY2UgPyBXZWJJbnNwZWN0
b3IubWFpblJlc291cmNlLmRvbWFpbiA6ICIiKTsKKyAgICAgICAgaWYgKHRoaXMuX2Rpc3BsYXlO
YW1lID09PSAiLyIpCisgICAgICAgICAgICB0aGlzLl9kaXNwbGF5TmFtZSA9IHRoaXMudXJsOwor
ICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGxheU5hbWU7CiAgICAgfSwKIAogICAgIGdldCBkaXNw
bGF5RG9tYWluKCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNv
dXJjZUNhdGVnb3J5LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlQ2F0
ZWdvcnkuanMKaW5kZXggODRmMmNmOS4uN2Q5NWExZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlQ2F0ZWdvcnkuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlQ2F0ZWdvcnkuanMKQEAgLTQ3LDggKzQ3LDggQEAgV2ViSW5z
cGVjdG9yLlJlc291cmNlQ2F0ZWdvcnkucHJvdG90eXBlID0gewogICAgICAgICB2YXIgcmVzb3Vy
Y2VzTGVuZ3RoID0gdGhpcy5yZXNvdXJjZXMubGVuZ3RoOwogICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHJlc291cmNlc0xlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgYiA9IHRoaXMu
cmVzb3VyY2VzW2ldOwotICAgICAgICAgICAgaWYgKGEuX2xhc3RQYXRoQ29tcG9uZW50TG93ZXJD
YXNlICYmIGIuX2xhc3RQYXRoQ29tcG9uZW50TG93ZXJDYXNlKQotICAgICAgICAgICAgICAgIGlm
IChhLl9sYXN0UGF0aENvbXBvbmVudExvd2VyQ2FzZSA8IGIuX2xhc3RQYXRoQ29tcG9uZW50TG93
ZXJDYXNlKQorICAgICAgICAgICAgaWYgKGEubGFzdFBhdGhDb21wb25lbnRMb3dlckNhc2UgJiYg
Yi5sYXN0UGF0aENvbXBvbmVudExvd2VyQ2FzZSkKKyAgICAgICAgICAgICAgICBpZiAoYS5sYXN0
UGF0aENvbXBvbmVudExvd2VyQ2FzZSA8IGIubGFzdFBhdGhDb21wb25lbnRMb3dlckNhc2UpCiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZWxzZSBpZiAoYS5uYW1lICYm
IGIubmFtZSkKICAgICAgICAgICAgICAgICBpZiAoYS5uYW1lIDwgYi5uYW1lKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcuanMKaW5kZXggMWMyNTc0Zi4uODYyNTY5
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5q
cworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzCkBAIC05
OSw3ICs5OSw2IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcgPSBmdW5jdGlvbihyZXNvdXJj
ZSkKIAogICAgIHRoaXMuaGVhZGVyc1Zpc2libGUgPSB0cnVlOwogCi0gICAgcmVzb3VyY2UuYWRk
RXZlbnRMaXN0ZW5lcigidXJsIGNoYW5nZWQiLCB0aGlzLl9yZWZyZXNoVVJMLCB0aGlzKTsKICAg
ICByZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKCJyZXF1ZXN0SGVhZGVycyBjaGFuZ2VkIiwgdGhp
cy5fcmVmcmVzaFJlcXVlc3RIZWFkZXJzLCB0aGlzKTsKICAgICByZXNvdXJjZS5hZGRFdmVudExp
c3RlbmVyKCJyZXNwb25zZUhlYWRlcnMgY2hhbmdlZCIsIHRoaXMuX3JlZnJlc2hSZXNwb25zZUhl
YWRlcnMsIHRoaXMpOwogICAgIHJlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoImZpbmlzaGVkIiwg
dGhpcy5fcmVmcmVzaEhUVFBJbmZvcm1hdGlvbiwgdGhpcyk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCA4N2FlOGEzLi5hNmI0ODQ1IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTU2LDE1ICs1Niw2IEBAIHZhciBXZWJJ
bnNwZWN0b3IgPSB7CiAgICAgbWlzc2luZ0xvY2FsaXplZFN0cmluZ3M6IHt9LAogICAgIHBlbmRp
bmdEaXNwYXRjaGVzOiAwLAogCi0gICAgLy8gUmVnRXhwIGdyb3VwczoKLSAgICAvLyAxIC0gc2No
ZW1lCi0gICAgLy8gMiAtIGhvc3RuYW1lCi0gICAgLy8gMyAtID9wb3J0Ci0gICAgLy8gNCAtID9w
YXRoCi0gICAgLy8gNSAtID9mcmFnbWVudAotICAgIFVSTFJlZ0V4cDogL14oaHR0cFtzXT98Zmls
ZSk6XC9cLyhbXlwvOl0qKSg/OjooW1xkXSspKT8oPzooXC9bXiNdKikoPzojKC4qKSk/KT8kL2ks
Ci0gICAgR2VuZXJpY1VSTFJlZ0V4cDogL14oW146XSspOlwvXC8oW15cLzpdKikoPzo6KFtcZF0r
KSk/KD86KFwvW14jXSopKD86IyguKikpPyk/JC9pLAotCiAgICAgZ2V0IHBsYXRmb3JtKCkKICAg
ICB7CiAgICAgICAgIGlmICghKCJfcGxhdGZvcm0iIGluIHRoaXMpKQpAQCAtNzcwLDEwICs3NjEs
MTAgQEAgV2ViSW5zcGVjdG9yLmRvY3VtZW50Q2xpY2sgPSBmdW5jdGlvbihldmVudCkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGNvbnN0IHVybE1hdGNoID0gV2Vi
SW5zcGVjdG9yLkdlbmVyaWNVUkxSZWdFeHAuZXhlYyhhbmNob3IuaHJlZik7Ci0gICAgICAgIGlm
ICh1cmxNYXRjaCAmJiB1cmxNYXRjaFsxXSA9PT0gIndlYmtpdC1saW5rLWFjdGlvbiIpIHsKLSAg
ICAgICAgICAgIGlmICh1cmxNYXRjaFsyXSA9PT0gInNob3ctcGFuZWwiKSB7Ci0gICAgICAgICAg
ICAgICAgY29uc3QgcGFuZWwgPSB1cmxNYXRjaFs0XS5zdWJzdHJpbmcoMSk7CisgICAgICAgIHZh
ciBwYXJzZWRVUkwgPSBhbmNob3IuaHJlZi5hc1BhcnNlZFVSTCgpOworICAgICAgICBpZiAocGFy
c2VkVVJMICYmIHBhcnNlZFVSTC5zY2hlbWUgPT09ICJ3ZWJraXQtbGluay1hY3Rpb24iKSB7Cisg
ICAgICAgICAgICBpZiAocGFyc2VkVVJMLmhvc3QgPT09ICJzaG93LXBhbmVsIikgeworICAgICAg
ICAgICAgICAgIHZhciBwYW5lbCA9IHBhcnNlZFVSTC5wYXRoLnN1YnN0cmluZygxKTsKICAgICAg
ICAgICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVsc1twYW5lbF0pCiAgICAgICAgICAgICAg
ICAgICAgIFdlYkluc3BlY3Rvci5jdXJyZW50UGFuZWwgPSBXZWJJbnNwZWN0b3IucGFuZWxzW3Bh
bmVsXTsKICAgICAgICAgICAgIH0KQEAgLTEyMzQsOSArMTIyNSw2IEBAIFdlYkluc3BlY3Rvci51
cGRhdGVSZXNvdXJjZSA9IGZ1bmN0aW9uKHBheWxvYWQpCiAgICAgfQogCiAgICAgaWYgKHBheWxv
YWQuZGlkUmVxdWVzdENoYW5nZSkgewotICAgICAgICByZXNvdXJjZS5kb21haW4gPSBwYXlsb2Fk
Lmhvc3Q7Ci0gICAgICAgIHJlc291cmNlLnBhdGggPSBwYXlsb2FkLnBhdGg7Ci0gICAgICAgIHJl
c291cmNlLmxhc3RQYXRoQ29tcG9uZW50ID0gcGF5bG9hZC5sYXN0UGF0aENvbXBvbmVudDsKICAg
ICAgICAgcmVzb3VyY2UucmVxdWVzdEhlYWRlcnMgPSBwYXlsb2FkLnJlcXVlc3RIZWFkZXJzOwog
ICAgICAgICByZXNvdXJjZS5tYWluUmVzb3VyY2UgPSBwYXlsb2FkLm1haW5SZXNvdXJjZTsKICAg
ICAgICAgcmVzb3VyY2UucmVxdWVzdE1ldGhvZCA9IHBheWxvYWQucmVxdWVzdE1ldGhvZDsKQEAg
LTEyNDgsMTEgKzEyMzYsMTAgQEAgV2ViSW5zcGVjdG9yLnVwZGF0ZVJlc291cmNlID0gZnVuY3Rp
b24ocGF5bG9hZCkKICAgICAgICAgaWYgKHJlc291cmNlLm1haW5SZXNvdXJjZSkKICAgICAgICAg
ICAgIHRoaXMubWFpblJlc291cmNlID0gcmVzb3VyY2U7CiAKLSAgICAgICAgdmFyIG1hdGNoID0g
cGF5bG9hZC5kb2N1bWVudFVSTC5tYXRjaChXZWJJbnNwZWN0b3IuR2VuZXJpY1VSTFJlZ0V4cCk7
Ci0gICAgICAgIGlmIChtYXRjaCkgewotICAgICAgICAgICAgdmFyIHByb3RvY29sID0gbWF0Y2hb
MV0udG9Mb3dlckNhc2UoKTsKLSAgICAgICAgICAgIHRoaXMuX2FkZENvb2tpZURvbWFpbihtYXRj
aFsyXSk7Ci0gICAgICAgICAgICB0aGlzLl9hZGRBcHBDYWNoZURvbWFpbihtYXRjaFsyXSk7Cisg
ICAgICAgIHZhciBwYXJzZWRVUkwgPSBwYXlsb2FkLmRvY3VtZW50VVJMLmFzUGFyc2VkVVJMKCk7
CisgICAgICAgIGlmIChwYXJzZWRVUkwpIHsKKyAgICAgICAgICAgIHRoaXMuX2FkZENvb2tpZURv
bWFpbihwYXJzZWRVUkwuaG9zdCk7CisgICAgICAgICAgICB0aGlzLl9hZGRBcHBDYWNoZURvbWFp
bihwYXJzZWRVUkwuaG9zdCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE0OTksMTIgKzE0ODYs
NiBAQCBXZWJJbnNwZWN0b3IuaW5zcGVjdGVkVVJMQ2hhbmdlZCA9IGZ1bmN0aW9uKHVybCkKICAg
ICB0aGlzLmV4dGVuc2lvblNlcnZlci5ub3RpZnlJbnNwZWN0ZWRVUkxDaGFuZ2VkKCk7CiB9CiAK
LVdlYkluc3BlY3Rvci5yZXNvdXJjZVVSTENoYW5nZWQgPSBmdW5jdGlvbihyZXNvdXJjZSwgb2xk
VVJMKQotewotICAgIGRlbGV0ZSB0aGlzLnJlc291cmNlVVJMTWFwW29sZFVSTF07Ci0gICAgdGhp
cy5yZXNvdXJjZVVSTE1hcFtyZXNvdXJjZS51cmxdID0gcmVzb3VyY2U7Ci19Ci0KIFdlYkluc3Bl
Y3Rvci5kaWRDb21taXRMb2FkID0gZnVuY3Rpb24oKQogewogICAgIC8vIENsZWFudXAgZWxlbWVu
dHMgcGFuZWwgZWFybHkgb24gaW5zcGVjdGVkIHBhZ2UgcmVmcmVzaC4KQEAgLTE4MzgsOCArMTgx
OSw4IEBAIFdlYkluc3BlY3Rvci5yZXNvdXJjZVVSTEZvclJlbGF0ZWROb2RlID0gZnVuY3Rpb24o
bm9kZSwgdXJsKQogCiAgICAgLy8gZG9jdW1lbnRVUkwgbm90IGZvdW5kIG9yIGhhcyBiYWQgdmFs
dWUKICAgICBmb3IgKHZhciByZXNvdXJjZVVSTCBpbiBXZWJJbnNwZWN0b3IucmVzb3VyY2VVUkxN
YXApIHsKLSAgICAgICAgdmFyIG1hdGNoID0gcmVzb3VyY2VVUkwubWF0Y2goV2ViSW5zcGVjdG9y
LlVSTFJlZ0V4cCk7Ci0gICAgICAgIGlmIChtYXRjaCAmJiBtYXRjaFs0XSA9PT0gdXJsKQorICAg
ICAgICB2YXIgcGFyc2VkVVJMID0gcmVzb3VyY2VVUkwuYXNQYXJzZWRVUkwoKTsKKyAgICAgICAg
aWYgKHBhcnNlZFVSTCAmJiBwYXJzZWRVUkwucGF0aCA9PT0gdXJsKQogICAgICAgICAgICAgcmV0
dXJuIHJlc291cmNlVVJMOwogICAgIH0KICAgICByZXR1cm4gdXJsOwpAQCAtMTg0NywxNyArMTgy
OCwxNyBAQCBXZWJJbnNwZWN0b3IucmVzb3VyY2VVUkxGb3JSZWxhdGVkTm9kZSA9IGZ1bmN0aW9u
KG5vZGUsIHVybCkKIAogV2ViSW5zcGVjdG9yLmNvbXBsZXRlVVJMID0gZnVuY3Rpb24oYmFzZVVS
TCwgaHJlZikKIHsKLSAgICB2YXIgbWF0Y2ggPSBiYXNlVVJMLm1hdGNoKFdlYkluc3BlY3Rvci5V
UkxSZWdFeHApOwotICAgIGlmIChtYXRjaCkgeworICAgIHZhciBwYXJzZWRVUkwgPSBiYXNlVVJM
LmFzUGFyc2VkVVJMKCk7CisgICAgaWYgKHBhcnNlZFVSTCkgewogICAgICAgICB2YXIgcGF0aCA9
IGhyZWY7CiAgICAgICAgIGlmIChwYXRoLmNoYXJBdCgwKSAhPT0gIi8iKSB7Ci0gICAgICAgICAg
ICB2YXIgYmFzZVBhdGggPSBtYXRjaFs0XSB8fCAiLyI7CisgICAgICAgICAgICB2YXIgYmFzZVBh
dGggPSBwYXJzZWRVUkwucGF0aDsKICAgICAgICAgICAgIHBhdGggPSBiYXNlUGF0aC5zdWJzdHJp
bmcoMCwgYmFzZVBhdGgubGFzdEluZGV4T2YoIi8iKSkgKyAiLyIgKyBwYXRoOwogICAgICAgICB9
IGVsc2UgaWYgKHBhdGgubGVuZ3RoID4gMSAmJiBwYXRoLmNoYXJBdCgxKSA9PT0gIi8iKSB7CiAg
ICAgICAgICAgICAvLyBocmVmIHN0YXJ0cyB3aXRoICIvLyIgd2hpY2ggaXMgYSBmdWxsIFVSTCB3
aXRoIHRoZSBwcm90b2NvbCBkcm9wcGVkICh1c2UgdGhlIGJhc2VVUkwgcHJvdG9jb2wpLgotICAg
ICAgICAgICAgcmV0dXJuIG1hdGNoWzFdICsgIjoiICsgcGF0aDsKKyAgICAgICAgICAgIHJldHVy
biBwYXJzZWRVUkwuc2NoZW1lICsgIjoiICsgcGF0aDsKICAgICAgICAgfQotICAgICAgICByZXR1
cm4gbWF0Y2hbMV0gKyAiOi8vIiArIG1hdGNoWzJdICsgKG1hdGNoWzNdID8gKCI6IiArIG1hdGNo
WzNdKSA6ICIiKSArIHBhdGg7CisgICAgICAgIHJldHVybiBwYXJzZWRVUkwuc2NoZW1lICsgIjov
LyIgKyBwYXJzZWRVUkwuaG9zdCArIChwYXJzZWRVUkwucG9ydCA/ICgiOiIgKyBwYXJzZWRVUkwu
cG9ydCkgOiAiIikgKyBwYXRoOwogICAgIH0KICAgICByZXR1cm4gbnVsbDsKIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzCmluZGV4IDVlNDFkYTYuLjAzNmRjMTcgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcwpAQCAtMzkzLDYgKzM5Mywy
NiBAQCBTdHJpbmcucHJvdG90eXBlLmhhc1N1YnN0cmluZyA9IGZ1bmN0aW9uKHN0cmluZywgY2Fz
ZUluc2Vuc2l0aXZlKQogICAgIHJldHVybiB0aGlzLm1hdGNoKG5ldyBSZWdFeHAoc3RyaW5nLmVz
Y2FwZUZvclJlZ0V4cCgpLCAiaSIpKTsKIH0KIAorU3RyaW5nLnByb3RvdHlwZS5hc1BhcnNlZFVS
TCA9IGZ1bmN0aW9uKCkKK3sKKyAgICAvLyBSZWdFeHAgZ3JvdXBzOgorICAgIC8vIDEgLSBzY2hl
bWUKKyAgICAvLyAyIC0gaG9zdG5hbWUKKyAgICAvLyAzIC0gP3BvcnQKKyAgICAvLyA0IC0gP3Bh
dGgKKyAgICAvLyA1IC0gP2ZyYWdtZW50CisgICAgdmFyIG1hdGNoID0gdGhpcy5tYXRjaCgvXihb
XjpdKyk6XC9cLyhbXlwvOl0qKSg/OjooW1xkXSspKT8oPzooXC9bXiNdKikoPzojKC4qKSk/KT8k
L2kpOworICAgIGlmICghbWF0Y2gpCisgICAgICAgIHJldHVybiBudWxsOworICAgIHZhciByZXN1
bHQgPSB7fTsKKyAgICByZXN1bHQuc2NoZW1lID0gbWF0Y2hbMV0udG9Mb3dlckNhc2UoKTsKKyAg
ICByZXN1bHQuaG9zdCA9IG1hdGNoWzJdOworICAgIHJlc3VsdC5wb3J0ID0gbWF0Y2hbM107Cisg
ICAgcmVzdWx0LnBhdGggPSBtYXRjaFs0XSB8fCAiLyI7CisgICAgcmVzdWx0LmZyYWdtZW50ID0g
bWF0Y2hbNV07CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogU3RyaW5nLnByb3RvdHlwZS5lc2Nh
cGVDaGFyYWN0ZXJzID0gZnVuY3Rpb24oY2hhcnMpCiB7CiAgICAgdmFyIGZvdW5kQ2hhciA9IGZh
bHNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70959</attachid>
            <date>2010-10-16 09:31:41 -0700</date>
            <delta_ts>2010-10-18 02:00:51 -0700</delta_ts>
            <desc>[PATCH] Same with layout tests not using old regex.</desc>
            <filename>url_parse</filename>
            <type>text/plain</type>
            <size>20571</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1yZXdyaXRl
LWhyZWYuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1wYW5lbC1yZXdyaXRl
LWhyZWYuaHRtbAppbmRleCBhOTJhMzM3Li5mMTdjMzAwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtcmV3cml0ZS1ocmVmLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLXJld3JpdGUtaHJlZi5odG1sCkBAIC00Miwx
MCArNDIsMTAgQEAgZnVuY3Rpb24gZnJvbnRlbmRfdGVzdFJld3JpdGVIcmVmc0NvbnRpbnVhdGlv
bih0ZXN0Q29udHJvbGxlcikKICAgICAgICAgICAgICAgICBzZWdtZW50cy5wdXNoKCI8ZW1wdHk+
Iik7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB2YXIgbWF0Y2ggPSBocmVmLm1hdGNoKFdlYkluc3BlY3Rvci5VUkxSZWdFeHApOwotICAgICAg
ICAgICAgaWYgKCFtYXRjaCkKKyAgICAgICAgICAgIHZhciBwYXJzZWRVUkwgPSBocmVmLmFzUGFy
c2VkVVJMKCk7CisgICAgICAgICAgICBpZiAoIXBhcnNlZFVSTCkKICAgICAgICAgICAgICAgICB0
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCJGQUlMOiBubyBVUkwgbWF0Y2ggZm9yIDwiICsgaHJl
ZiArICI+Iik7Ci0gICAgICAgICAgICB2YXIgc3BsaXQgPSBtYXRjaFs0XS5zcGxpdCgiLyIpOwor
ICAgICAgICAgICAgdmFyIHNwbGl0ID0gcGFyc2VkVVJMLnBhdGguc3BsaXQoIi8iKTsKICAgICAg
ICAgICAgIGZvciAodmFyIGkgPSBzcGxpdC5sZW5ndGggLSAxLCBqID0gMDsgaiA8IDMgJiYgaSA+
PSAwOyAtLWksICsraikKICAgICAgICAgICAgICAgICBzZWdtZW50cy5wdXNoKHNwbGl0W2ldKTsK
ICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHNlZ21lbnRzLnJldmVyc2UoKSk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGIzNWM4NTYuLjc2
ODRhMDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTAtMTAtMTYgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1h
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogYnJ1c2ggdXAgVVJMIHBhcnNpbmcgb24gdGhlIGZyb250
LWVuZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3
NzcyCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVNjcmlwdE9iamVjdCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdFJ1bGVzLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkF1ZGl0UnVsZXMuZ2V0RG9tYWluVG9SZXNvdXJjZXNNYXApOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkF1ZGl0UnVsZXMuQ29tYmluZUV4dGVybmFsUmVzb3VyY2VzUnVsZS5wcm90b3R5
cGUuZG9SdW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuTWluaW1pemVEbnNM
b29rdXBzUnVsZS5wcm90b3R5cGUuZG9SdW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0
UnVsZXMuUGFyYWxsZWxpemVEb3dubG9hZFJ1bGUucHJvdG90eXBlLmRvUnVuKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkltYWdlRGltZW5zaW9uc1J1bGUucHJvdG90eXBlLmRv
UnVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNvb2tpZVNpemVSdWxlLnBy
b3RvdHlwZS5wcm9jZXNzQ29va2llcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSdWxl
cy5TdGF0aWNDb29raWVsZXNzUnVsZS5wcm90b3R5cGUucHJvY2Vzc0Nvb2tpZXMpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ29va2llSXRlbXNWaWV3LmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNvb2tpZUl0ZW1zVmlldy5wcm90b3R5cGUuX2ZpbHRlckNvb2tpZXNGb3JEb21h
aW4pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ29va2llcy5jb29raWVNYXRjaGVzUmVzb3VyY2VVUkwpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmVzb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5z
ZXQgdXJsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUuZ2V0IGRp
c3BsYXlOYW1lKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlQ2F0ZWdv
cnkuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VDYXRlZ29yeS5wcm90b3R5cGUu
YWRkUmVzb3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldyk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuZG9j
dW1lbnRDbGljay5mb2xsb3dMaW5rKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5kb2N1bWVudENs
aWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci51cGRhdGVSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IubGlua2lmeVN0cmluZ0FzRnJhZ21lbnQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLnJlc291cmNlVVJMRm9yUmVsYXRlZE5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmNv
bXBsZXRlVVJMKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qczoK
KyAgICAgICAgKFN0cmluZy5wcm90b3R5cGUuYXNQYXJzZWRVUkwpOgorCiAyMDEwLTEwLTE1ICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2UuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCmluZGV4IDVl
ZTRhOTUuLjVhNmNhYWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJl
c291cmNlLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAK
QEAgLTI2Miw5ICsyNjIsNiBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRP
YmplY3QoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQogICAgICAgICAgICAgbV9kb2N1bWVu
dFVSTCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgICAgICBqc29uT2JqZWN0LT5z
ZXRTdHJpbmcoInVybCIsIG1fcmVxdWVzdFVSTC5zdHJpbmcoKSk7CiAgICAgICAgIGpzb25PYmpl
Y3QtPnNldFN0cmluZygiZG9jdW1lbnRVUkwiLCBtX2RvY3VtZW50VVJMLnN0cmluZygpKTsKLSAg
ICAgICAganNvbk9iamVjdC0+c2V0U3RyaW5nKCJob3N0IiwgbV9yZXF1ZXN0VVJMLmhvc3QoKSk7
Ci0gICAgICAgIGpzb25PYmplY3QtPnNldFN0cmluZygicGF0aCIsIG1fcmVxdWVzdFVSTC5wYXRo
KCkpOwotICAgICAgICBqc29uT2JqZWN0LT5zZXRTdHJpbmcoImxhc3RQYXRoQ29tcG9uZW50Iiwg
bV9yZXF1ZXN0VVJMLmxhc3RQYXRoQ29tcG9uZW50KCkpOwogICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiByZXF1ZXN0SGVhZGVycyA9IGJ1aWxkSGVhZGVyc09iamVjdChtX3JlcXVlc3RI
ZWFkZXJGaWVsZHMpOwogICAgICAgICBqc29uT2JqZWN0LT5zZXRPYmplY3QoInJlcXVlc3RIZWFk
ZXJzIiwgcmVxdWVzdEhlYWRlcnMpOwogICAgICAgICBqc29uT2JqZWN0LT5zZXRCb29sZWFuKCJt
YWluUmVzb3VyY2UiLCBtX2lzTWFpblJlc291cmNlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9BdWRpdFJ1bGVzLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0F1ZGl0UnVsZXMuanMKaW5kZXggYTcyZGU1Ni4uY2Q5ZjEzZSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMuanMKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMuanMKQEAgLTQyLDE3ICs0MiwxNyBAQCBXZWJJbnNw
ZWN0b3IuQXVkaXRSdWxlcy5DYWNoZWFibGVSZXNwb25zZUNvZGVzID0KICAgICAzMDQ6IHRydWUg
Ly8gVW5kZXJseWluZyByZXNvdXJjZSBpcyBjYWNoZWFibGUKIH0KIAotV2ViSW5zcGVjdG9yLkF1
ZGl0UnVsZXMuZ2V0RG9tYWluVG9SZXNvdXJjZXNNYXAgPSBmdW5jdGlvbihyZXNvdXJjZXMsIHR5
cGVzLCByZWdleHAsIG5lZWRGdWxsUmVzb3VyY2VzKQorV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMu
Z2V0RG9tYWluVG9SZXNvdXJjZXNNYXAgPSBmdW5jdGlvbihyZXNvdXJjZXMsIHR5cGVzLCBuZWVk
RnVsbFJlc291cmNlcykKIHsKICAgICB2YXIgZG9tYWluVG9SZXNvdXJjZXNNYXAgPSB7fTsKICAg
ICBmb3IgKHZhciBpID0gMCwgc2l6ZSA9IHJlc291cmNlcy5sZW5ndGg7IGkgPCBzaXplOyArK2kp
IHsKICAgICAgICAgdmFyIHJlc291cmNlID0gcmVzb3VyY2VzW2ldOwogICAgICAgICBpZiAodHlw
ZXMgJiYgdHlwZXMuaW5kZXhPZihyZXNvdXJjZS50eXBlKSA9PT0gLTEpCiAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgdmFyIG1hdGNoID0gcmVzb3VyY2UudXJsLm1hdGNoKHJlZ2V4cCk7
Ci0gICAgICAgIGlmICghbWF0Y2gpCisgICAgICAgIHZhciBwYXJzZWRVUkwgPSByZXNvdXJjZS51
cmwuYXNQYXJzZWRVUkwoKTsKKyAgICAgICAgaWYgKCFwYXJzZWRVUkwpCiAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgdmFyIGRvbWFpbiA9IG1hdGNoWzJdOworICAgICAgICB2YXIgZG9t
YWluID0gcGFyc2VkVVJMLmhvc3Q7CiAgICAgICAgIHZhciBkb21haW5SZXNvdXJjZXMgPSBkb21h
aW5Ub1Jlc291cmNlc01hcFtkb21haW5dOwogICAgICAgICBpZiAoZG9tYWluUmVzb3VyY2VzID09
PSB1bmRlZmluZWQpIHsKICAgICAgICAgICBkb21haW5SZXNvdXJjZXMgPSBbXTsKQEAgLTEyOCw3
ICsxMjgsNyBAQCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5Db21iaW5lRXh0ZXJuYWxSZXNvdXJj
ZXNSdWxlID0gZnVuY3Rpb24oaWQsIG5hbWUsIHR5cGUsCiBXZWJJbnNwZWN0b3IuQXVkaXRSdWxl
cy5Db21iaW5lRXh0ZXJuYWxSZXNvdXJjZXNSdWxlLnByb3RvdHlwZSA9IHsKICAgICBkb1J1bjog
ZnVuY3Rpb24ocmVzb3VyY2VzLCByZXN1bHQsIGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgdmFy
IGRvbWFpblRvUmVzb3VyY2VzTWFwID0gV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuZ2V0RG9tYWlu
VG9SZXNvdXJjZXNNYXAocmVzb3VyY2VzLCBbdGhpcy5fdHlwZV0sIFdlYkluc3BlY3Rvci5VUkxS
ZWdFeHApOworICAgICAgICB2YXIgZG9tYWluVG9SZXNvdXJjZXNNYXAgPSBXZWJJbnNwZWN0b3Iu
QXVkaXRSdWxlcy5nZXREb21haW5Ub1Jlc291cmNlc01hcChyZXNvdXJjZXMsIFt0aGlzLl90eXBl
XSk7CiAgICAgICAgIHZhciBwZW5hbGl6ZWRSZXNvdXJjZUNvdW50ID0gMDsKICAgICAgICAgLy8g
VE9ETzogcmVmYWN0b3IgYWNjb3JkaW5nIHRvIHRoZSBjaG9zZW4gaTE4biBhcHByb2FjaAogICAg
ICAgICB2YXIgc3VtbWFyeSA9IHJlc3VsdC5hZGRDaGlsZCgiIiwgdHJ1ZSk7CkBAIC0xNzUsMTQg
KzE3NSwxNCBAQCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5NaW5pbWl6ZURuc0xvb2t1cHNSdWxl
LnByb3RvdHlwZSA9IHsKICAgICBkb1J1bjogZnVuY3Rpb24ocmVzb3VyY2VzLCByZXN1bHQsIGNh
bGxiYWNrKQogICAgIHsKICAgICAgICAgdmFyIHN1bW1hcnkgPSByZXN1bHQuYWRkQ2hpbGQoIiIp
OwotICAgICAgICB2YXIgZG9tYWluVG9SZXNvdXJjZXNNYXAgPSBXZWJJbnNwZWN0b3IuQXVkaXRS
dWxlcy5nZXREb21haW5Ub1Jlc291cmNlc01hcChyZXNvdXJjZXMsIHVuZGVmaW5lZCwgV2ViSW5z
cGVjdG9yLlVSTFJlZ0V4cCk7CisgICAgICAgIHZhciBkb21haW5Ub1Jlc291cmNlc01hcCA9IFdl
Ykluc3BlY3Rvci5BdWRpdFJ1bGVzLmdldERvbWFpblRvUmVzb3VyY2VzTWFwKHJlc291cmNlcywg
dW5kZWZpbmVkKTsKICAgICAgICAgZm9yICh2YXIgZG9tYWluIGluIGRvbWFpblRvUmVzb3VyY2Vz
TWFwKSB7CiAgICAgICAgICAgICBpZiAoZG9tYWluVG9SZXNvdXJjZXNNYXBbZG9tYWluXS5sZW5n
dGggPiAxKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgdmFyIG1hdGNo
ID0gZG9tYWluLm1hdGNoKFdlYkluc3BlY3Rvci5VUkxSZWdFeHApOwotICAgICAgICAgICAgaWYg
KCFtYXRjaCkKKyAgICAgICAgICAgIHZhciBwYXJzZWRVUkwgPSBkb21haW4uYXNQYXJzZWRVUkwo
KTsKKyAgICAgICAgICAgIGlmICghcGFyc2VkVVJMKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgaWYgKCFtYXRjaFsyXS5zZWFyY2goV2ViSW5zcGVjdG9yLkF1ZGl0UnVs
ZXMuSVBBZGRyZXNzUmVnZXhwKSkKKyAgICAgICAgICAgIGlmICghcGFyc2VkVVJMLmhvc3Quc2Vh
cmNoKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLklQQWRkcmVzc1JlZ2V4cCkpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7IC8vIGFuIElQIGFkZHJlc3MKICAgICAgICAgICAgIHN1bW1hcnkuYWRk
U25pcHBldChtYXRjaFsyXSk7CiAgICAgICAgICAgICByZXN1bHQudmlvbGF0aW9uQ291bnQrKzsK
QEAgLTIyMCw3ICsyMjAsNiBAQCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5QYXJhbGxlbGl6ZURv
d25sb2FkUnVsZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBkb21haW5Ub1Jlc291cmNlc01h
cCA9IFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLmdldERvbWFpblRvUmVzb3VyY2VzTWFwKAogICAg
ICAgICAgICAgcmVzb3VyY2VzLAogICAgICAgICAgICAgW1dlYkluc3BlY3Rvci5SZXNvdXJjZS5U
eXBlLlN0eWxlc2hlZXQsIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkltYWdlXSwKLSAgICAg
ICAgICAgIFdlYkluc3BlY3Rvci5VUkxSZWdFeHAsCiAgICAgICAgICAgICB0cnVlKTsKIAogICAg
ICAgICB2YXIgaG9zdHMgPSBbXTsKQEAgLTY0Nyw3ICs2NDYsNyBAQCBXZWJJbnNwZWN0b3IuQXVk
aXRSdWxlcy5JbWFnZURpbWVuc2lvbnNSdWxlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAgICAg
Y29uc3Qgbm9kZSA9IFdlYkluc3BlY3Rvci5kb21BZ2VudC5ub2RlRm9ySWQoaW1hZ2VJZCk7CiAg
ICAgICAgICAgICB2YXIgc3JjID0gbm9kZS5nZXRBdHRyaWJ1dGUoInNyYyIpOwotICAgICAgICAg
ICAgaWYgKCFXZWJJbnNwZWN0b3IuVVJMUmVnRXhwLnRlc3Qoc3JjKSkgeworICAgICAgICAgICAg
aWYgKCFzcmMuYXNQYXJzZWRVUkwoKSkgewogICAgICAgICAgICAgICAgIGZvciAodmFyIGZyYW1l
T3duZXJDYW5kaWRhdGUgPSBub2RlOyBmcmFtZU93bmVyQ2FuZGlkYXRlOyBmcmFtZU93bmVyQ2Fu
ZGlkYXRlID0gZnJhbWVPd25lckNhbmRpZGF0ZS5wYXJlbnROb2RlKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChmcmFtZU93bmVyQ2FuZGlkYXRlLmRvY3VtZW50VVJMKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgY29tcGxldGVTcmMgPSBXZWJJbnNwZWN0b3IuY29tcGxldGVVUkwo
ZnJhbWVPd25lckNhbmRpZGF0ZS5kb2N1bWVudFVSTCwgc3JjKTsKQEAgLTkzNCw3ICs5MzMsNiBA
QCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5Db29raWVTaXplUnVsZS5wcm90b3R5cGUgPSB7CiAK
ICAgICAgICAgdmFyIGRvbWFpblRvUmVzb3VyY2VzTWFwID0gV2ViSW5zcGVjdG9yLkF1ZGl0UnVs
ZXMuZ2V0RG9tYWluVG9SZXNvdXJjZXNNYXAocmVzb3VyY2VzLAogICAgICAgICAgICAgICAgIG51
bGwsCi0gICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlVSTFJlZ0V4cCwKICAgICAgICAgICAg
ICAgICB0cnVlKTsKICAgICAgICAgdmFyIG1hdGNoaW5nUmVzb3VyY2VEYXRhID0ge307CiAgICAg
ICAgIHRoaXMubWFwUmVzb3VyY2VDb29raWVzKGRvbWFpblRvUmVzb3VyY2VzTWFwLCBhbGxDb29r
aWVzLCBjb2xsZWN0b3JDYWxsYmFjay5iaW5kKHRoaXMpKTsKQEAgLTk5OCw3ICs5OTYsNiBAQCBX
ZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5TdGF0aWNDb29raWVsZXNzUnVsZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHZhciBkb21haW5Ub1Jlc291cmNlc01hcCA9IFdlYkluc3BlY3Rvci5BdWRpdFJ1
bGVzLmdldERvbWFpblRvUmVzb3VyY2VzTWFwKHJlc291cmNlcywKICAgICAgICAgICAgICAgICBb
V2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU3R5bGVzaGVldCwKICAgICAgICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuSW1hZ2VdLAotICAgICAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5VUkxSZWdFeHAsCiAgICAgICAgICAgICAgICAgdHJ1ZSk7CiAgICAgICAgIHZhciB0
b3RhbFN0YXRpY1Jlc291cmNlcyA9IDA7CiAgICAgICAgIGZvciAodmFyIGRvbWFpbiBpbiBkb21h
aW5Ub1Jlc291cmNlc01hcCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Db29raWVJdGVtc1ZpZXcuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29va2ll
SXRlbXNWaWV3LmpzCmluZGV4IDFiYWY0YTYuLjg4Y2JlMDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Db29raWVJdGVtc1ZpZXcuanMKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZUl0ZW1zVmlldy5qcwpAQCAtMTIyLDggKzEyMiw4IEBAIFdl
Ykluc3BlY3Rvci5Db29raWVJdGVtc1ZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIGZvciAo
dmFyIGlkIGluIFdlYkluc3BlY3Rvci5yZXNvdXJjZXMpIHsKICAgICAgICAgICAgIHZhciByZXNv
dXJjZSA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZXNbaWRdOwotICAgICAgICAgICAgdmFyIG1hdGNo
ID0gcmVzb3VyY2UuZG9jdW1lbnRVUkwubWF0Y2goV2ViSW5zcGVjdG9yLkdlbmVyaWNVUkxSZWdF
eHApOwotICAgICAgICAgICAgaWYgKG1hdGNoICYmIG1hdGNoWzJdID09PSB0aGlzLl9jb29raWVE
b21haW4pCisgICAgICAgICAgICB2YXIgdXJsID0gcmVzb3VyY2UuZG9jdW1lbnRVUkwuYXNQYXJz
ZWRVUkwoKTsKKyAgICAgICAgICAgIGlmICh1cmwgJiYgdXJsLmhvc3QgPT0gdGhpcy5fY29va2ll
RG9tYWluKQogICAgICAgICAgICAgICAgIHJlc291cmNlVVJMc0ZvckRvY3VtZW50VVJMLnB1c2go
cmVzb3VyY2UudXJsKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRE9NQWdlbnQuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9N
QWdlbnQuanMKaW5kZXggZTk5NjI0ZC4uNTE1M2ZiMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9ET01BZ2VudC5qcwpAQCAtNTAwLDE3ICs1MDAsMTIgQEAgV2ViSW5zcGVjdG9yLkNvb2tp
ZXMuYnVpbGRDb29raWVzRnJvbVN0cmluZyA9IGZ1bmN0aW9uKHJhd0Nvb2tpZVN0cmluZykKIAog
V2ViSW5zcGVjdG9yLkNvb2tpZXMuY29va2llTWF0Y2hlc1Jlc291cmNlVVJMID0gZnVuY3Rpb24o
Y29va2llLCByZXNvdXJjZVVSTCkKIHsKLSAgICB2YXIgbWF0Y2ggPSByZXNvdXJjZVVSTC5tYXRj
aChXZWJJbnNwZWN0b3IuR2VuZXJpY1VSTFJlZ0V4cCk7Ci0gICAgaWYgKCFtYXRjaCkKKyAgICB2
YXIgdXJsID0gcmVzb3VyY2VVUkwuYXNQYXJzZWRVUkwoKTsKKyAgICBpZiAoIXVybCB8fCAhdGhp
cy5jb29raWVEb21haW5NYXRjaGVzUmVzb3VyY2VEb21haW4oY29va2llLmRvbWFpbiwgdXJsLmhv
c3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgLy8gU2VlIFdlYkluc3BlY3Rvci5VUkxS
ZWdFeHAgZm9yIGRlZmluaXRpb25zIG9mIHRoZSBncm91cCBpbmRleCBjb25zdGFudHMuCi0gICAg
aWYgKCF0aGlzLmNvb2tpZURvbWFpbk1hdGNoZXNSZXNvdXJjZURvbWFpbihjb29raWUuZG9tYWlu
LCBtYXRjaFsyXSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB2YXIgcmVzb3VyY2VQb3J0
ID0gbWF0Y2hbM10gPyBtYXRjaFszXSA6IHVuZGVmaW5lZDsKLSAgICB2YXIgcmVzb3VyY2VQYXRo
ID0gbWF0Y2hbNF0gPyBtYXRjaFs0XSA6ICcvJzsKLSAgICByZXR1cm4gKHJlc291cmNlUGF0aC5p
bmRleE9mKGNvb2tpZS5wYXRoKSA9PT0gMAotICAgICAgICAmJiAoIWNvb2tpZS5wb3J0IHx8IHJl
c291cmNlUG9ydCA9PSBjb29raWUucG9ydCkKLSAgICAgICAgJiYgKCFjb29raWUuc2VjdXJlIHx8
IG1hdGNoWzFdLnRvTG93ZXJDYXNlKCkgPT09ICdodHRwcycpKTsKKyAgICByZXR1cm4gKHVybC5w
YXRoLmluZGV4T2YoY29va2llLnBhdGgpID09PSAwCisgICAgICAgICYmICghY29va2llLnBvcnQg
fHwgdXJsLnBvcnQgPT0gY29va2llLnBvcnQpCisgICAgICAgICYmICghY29va2llLnNlY3VyZSB8
fCB1cmwuc2NoZW1lID09PSAiaHR0cHMiKSk7CiB9CiAKIFdlYkluc3BlY3Rvci5Db29raWVzLmNv
b2tpZURvbWFpbk1hdGNoZXNSZXNvdXJjZURvbWFpbiA9IGZ1bmN0aW9uKGNvb2tpZURvbWFpbiwg
cmVzb3VyY2VEb21haW4pCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
UmVzb3VyY2UuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMKaW5k
ZXggZWE5MDUyZC4uOWJiZjkwYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1Jlc291cmNlLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZS5qcwpAQCAtMjksNyArMjksNyBAQAogV2ViSW5zcGVjdG9yLlJlc291cmNlID0gZnVuY3Rpb24o
aWRlbnRpZmllciwgdXJsKQogewogICAgIHRoaXMuaWRlbnRpZmllciA9IGlkZW50aWZpZXI7Ci0g
ICAgdGhpcy5fdXJsID0gdXJsOworICAgIHRoaXMudXJsID0gdXJsOwogICAgIHRoaXMuX3N0YXJ0
VGltZSA9IC0xOwogICAgIHRoaXMuX2VuZFRpbWUgPSAtMTsKICAgICB0aGlzLl9yZXF1ZXN0TWV0
aG9kID0gIiI7CkBAIC05NywxNCArOTcsMTkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgaWYgKHRoaXMuX3VybCA9PT0geCkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICB2YXIgb2xkVVJMID0gdGhpcy5fdXJsOwogICAgICAgICB0aGlzLl91cmwg
PSB4OwogICAgICAgICBkZWxldGUgdGhpcy5fcGFyc2VkUXVlcnlQYXJhbWV0ZXJzOwotICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIG1ha2UgdGhlIFdlYkluc3BlY3RvciBvYmplY3QgbGlzdGVu
IGZvciB0aGUgInVybCBjaGFuZ2VkIiBldmVudC4KLSAgICAgICAgLy8gVGhlbiByZXNvdXJjZVVS
TENoYW5nZWQgY2FuIGJlIHJlbW92ZWQuCi0gICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVVS
TENoYW5nZWQodGhpcywgb2xkVVJMKTsKIAotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycygidXJsIGNoYW5nZWQiKTsKKyAgICAgICAgdmFyIHBhcnNlZFVSTCA9IHguYXNQYXJz
ZWRVUkwoKTsKKyAgICAgICAgdGhpcy5kb21haW4gPSBwYXJzZWRVUkwgPyBwYXJzZWRVUkwuaG9z
dCA6ICIiOworICAgICAgICB0aGlzLnBhdGggPSBwYXJzZWRVUkwgPyBwYXJzZWRVUkwucGF0aCA6
ICIiOworICAgICAgICB0aGlzLmxhc3RQYXRoQ29tcG9uZW50ID0gIiI7CisgICAgICAgIGlmIChw
YXJzZWRVUkwgJiYgcGFyc2VkVVJMLnBhdGgpIHsKKyAgICAgICAgICAgIHZhciBsYXN0U2xhc2hJ
bmRleCA9IHBhcnNlZFVSTC5wYXRoLmxhc3RJbmRleE9mKCIvIik7CisgICAgICAgICAgICBpZiAo
bGFzdFNsYXNoSW5kZXggIT09IC0xKQorICAgICAgICAgICAgICAgIHRoaXMubGFzdFBhdGhDb21w
b25lbnQgPSBwYXJzZWRVUkwucGF0aC5zdWJzdHJpbmcobGFzdFNsYXNoSW5kZXggKyAxKTsKKyAg
ICAgICAgfQorICAgICAgICB0aGlzLmxhc3RQYXRoQ29tcG9uZW50TG93ZXJDYXNlID0gdGhpcy5s
YXN0UGF0aENvbXBvbmVudC50b0xvd2VyQ2FzZSgpOwogICAgIH0sCiAKICAgICBnZXQgZG9jdW1l
bnRVUkwoKQpAQCAtMTE5LDQxICsxMjQsMTggQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5fZG9jdW1lbnRVUkwgPSB4OwogICAgIH0sCiAKLSAgICBn
ZXQgZG9tYWluKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9kb21haW47Ci0gICAgfSwK
LQotICAgIHNldCBkb21haW4oeCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9kb21haW4gPT09
IHgpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMuX2RvbWFpbiA9IHg7Ci0gICAg
fSwKLQotICAgIGdldCBsYXN0UGF0aENvbXBvbmVudCgpCi0gICAgewotICAgICAgICByZXR1cm4g
dGhpcy5fbGFzdFBhdGhDb21wb25lbnQ7Ci0gICAgfSwKLQotICAgIHNldCBsYXN0UGF0aENvbXBv
bmVudCh4KQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2xhc3RQYXRoQ29tcG9uZW50ID09PSB4
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLl9sYXN0UGF0aENvbXBvbmVudCA9
IHg7Ci0gICAgICAgIHRoaXMuX2xhc3RQYXRoQ29tcG9uZW50TG93ZXJDYXNlID0geCA/IHgudG9M
b3dlckNhc2UoKSA6IG51bGw7Ci0gICAgfSwKLQogICAgIGdldCBkaXNwbGF5TmFtZSgpCiAgICAg
ewotICAgICAgICB2YXIgdGl0bGUgPSB0aGlzLmxhc3RQYXRoQ29tcG9uZW50OwotICAgICAgICBp
ZiAoIXRpdGxlKQotICAgICAgICAgICAgdGl0bGUgPSB0aGlzLmRpc3BsYXlEb21haW47Ci0gICAg
ICAgIGlmICghdGl0bGUgJiYgdGhpcy51cmwpCi0gICAgICAgICAgICB0aXRsZSA9IHRoaXMudXJs
LnRyaW1VUkwoV2ViSW5zcGVjdG9yLm1haW5SZXNvdXJjZSA/IFdlYkluc3BlY3Rvci5tYWluUmVz
b3VyY2UuZG9tYWluIDogIiIpOwotICAgICAgICBpZiAodGl0bGUgPT09ICIvIikKLSAgICAgICAg
ICAgIHRpdGxlID0gdGhpcy51cmw7Ci0gICAgICAgIHJldHVybiB0aXRsZTsKKyAgICAgICAgaWYg
KHRoaXMuX2Rpc3BsYXlOYW1lKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlOYW1l
OworICAgICAgICB0aGlzLl9kaXNwbGF5TmFtZSA9IHRoaXMubGFzdFBhdGhDb21wb25lbnQ7Cisg
ICAgICAgIGlmICghdGhpcy5fZGlzcGxheU5hbWUpCisgICAgICAgICAgICB0aGlzLl9kaXNwbGF5
TmFtZSA9IHRoaXMuZGlzcGxheURvbWFpbjsKKyAgICAgICAgaWYgKCF0aGlzLl9kaXNwbGF5TmFt
ZSAmJiB0aGlzLnVybCkKKyAgICAgICAgICAgIHRoaXMuX2Rpc3BsYXlOYW1lID0gdGhpcy51cmwu
dHJpbVVSTChXZWJJbnNwZWN0b3IubWFpblJlc291cmNlID8gV2ViSW5zcGVjdG9yLm1haW5SZXNv
dXJjZS5kb21haW4gOiAiIik7CisgICAgICAgIGlmICh0aGlzLl9kaXNwbGF5TmFtZSA9PT0gIi8i
KQorICAgICAgICAgICAgdGhpcy5fZGlzcGxheU5hbWUgPSB0aGlzLnVybDsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX2Rpc3BsYXlOYW1lOwogICAgIH0sCiAKICAgICBnZXQgZGlzcGxheURvbWFpbigp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VDYXRlZ29y
eS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZUNhdGVnb3J5LmpzCmlu
ZGV4IDg0ZjJjZjkuLjdkOTVhMWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZUNhdGVnb3J5LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9SZXNvdXJjZUNhdGVnb3J5LmpzCkBAIC00Nyw4ICs0Nyw4IEBAIFdlYkluc3BlY3Rvci5SZXNv
dXJjZUNhdGVnb3J5LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHJlc291cmNlc0xlbmd0aCA9
IHRoaXMucmVzb3VyY2VzLmxlbmd0aDsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXNv
dXJjZXNMZW5ndGg7ICsraSkgewogICAgICAgICAgICAgdmFyIGIgPSB0aGlzLnJlc291cmNlc1tp
XTsKLSAgICAgICAgICAgIGlmIChhLl9sYXN0UGF0aENvbXBvbmVudExvd2VyQ2FzZSAmJiBiLl9s
YXN0UGF0aENvbXBvbmVudExvd2VyQ2FzZSkKLSAgICAgICAgICAgICAgICBpZiAoYS5fbGFzdFBh
dGhDb21wb25lbnRMb3dlckNhc2UgPCBiLl9sYXN0UGF0aENvbXBvbmVudExvd2VyQ2FzZSkKKyAg
ICAgICAgICAgIGlmIChhLmxhc3RQYXRoQ29tcG9uZW50TG93ZXJDYXNlICYmIGIubGFzdFBhdGhD
b21wb25lbnRMb3dlckNhc2UpCisgICAgICAgICAgICAgICAgaWYgKGEubGFzdFBhdGhDb21wb25l
bnRMb3dlckNhc2UgPCBiLmxhc3RQYXRoQ29tcG9uZW50TG93ZXJDYXNlKQogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGVsc2UgaWYgKGEubmFtZSAmJiBiLm5hbWUpCiAg
ICAgICAgICAgICAgICAgaWYgKGEubmFtZSA8IGIubmFtZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzCmluZGV4IDFjMjU3NGYuLjg2MjU2OWYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcuanMKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcwpAQCAtOTksNyArOTksNiBA
QCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3ID0gZnVuY3Rpb24ocmVzb3VyY2UpCiAKICAgICB0
aGlzLmhlYWRlcnNWaXNpYmxlID0gdHJ1ZTsKIAotICAgIHJlc291cmNlLmFkZEV2ZW50TGlzdGVu
ZXIoInVybCBjaGFuZ2VkIiwgdGhpcy5fcmVmcmVzaFVSTCwgdGhpcyk7CiAgICAgcmVzb3VyY2Uu
YWRkRXZlbnRMaXN0ZW5lcigicmVxdWVzdEhlYWRlcnMgY2hhbmdlZCIsIHRoaXMuX3JlZnJlc2hS
ZXF1ZXN0SGVhZGVycywgdGhpcyk7CiAgICAgcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcigicmVz
cG9uc2VIZWFkZXJzIGNoYW5nZWQiLCB0aGlzLl9yZWZyZXNoUmVzcG9uc2VIZWFkZXJzLCB0aGlz
KTsKICAgICByZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKCJmaW5pc2hlZCIsIHRoaXMuX3JlZnJl
c2hIVFRQSW5mb3JtYXRpb24sIHRoaXMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuanMKaW5kZXggODdhZThhMy4uYTZiNDg0NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmpzCkBAIC01NiwxNSArNTYsNiBAQCB2YXIgV2ViSW5zcGVjdG9yID0g
ewogICAgIG1pc3NpbmdMb2NhbGl6ZWRTdHJpbmdzOiB7fSwKICAgICBwZW5kaW5nRGlzcGF0Y2hl
czogMCwKIAotICAgIC8vIFJlZ0V4cCBncm91cHM6Ci0gICAgLy8gMSAtIHNjaGVtZQotICAgIC8v
IDIgLSBob3N0bmFtZQotICAgIC8vIDMgLSA/cG9ydAotICAgIC8vIDQgLSA/cGF0aAotICAgIC8v
IDUgLSA/ZnJhZ21lbnQKLSAgICBVUkxSZWdFeHA6IC9eKGh0dHBbc10/fGZpbGUpOlwvXC8oW15c
LzpdKikoPzo6KFtcZF0rKSk/KD86KFwvW14jXSopKD86IyguKikpPyk/JC9pLAotICAgIEdlbmVy
aWNVUkxSZWdFeHA6IC9eKFteOl0rKTpcL1wvKFteXC86XSopKD86OihbXGRdKykpPyg/OihcL1te
I10qKSg/OiMoLiopKT8pPyQvaSwKLQogICAgIGdldCBwbGF0Zm9ybSgpCiAgICAgewogICAgICAg
ICBpZiAoISgiX3BsYXRmb3JtIiBpbiB0aGlzKSkKQEAgLTc3MCwxMCArNzYxLDEwIEBAIFdlYklu
c3BlY3Rvci5kb2N1bWVudENsaWNrID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICBjb25zdCB1cmxNYXRjaCA9IFdlYkluc3BlY3Rvci5H
ZW5lcmljVVJMUmVnRXhwLmV4ZWMoYW5jaG9yLmhyZWYpOwotICAgICAgICBpZiAodXJsTWF0Y2gg
JiYgdXJsTWF0Y2hbMV0gPT09ICJ3ZWJraXQtbGluay1hY3Rpb24iKSB7Ci0gICAgICAgICAgICBp
ZiAodXJsTWF0Y2hbMl0gPT09ICJzaG93LXBhbmVsIikgewotICAgICAgICAgICAgICAgIGNvbnN0
IHBhbmVsID0gdXJsTWF0Y2hbNF0uc3Vic3RyaW5nKDEpOworICAgICAgICB2YXIgcGFyc2VkVVJM
ID0gYW5jaG9yLmhyZWYuYXNQYXJzZWRVUkwoKTsKKyAgICAgICAgaWYgKHBhcnNlZFVSTCAmJiBw
YXJzZWRVUkwuc2NoZW1lID09PSAid2Via2l0LWxpbmstYWN0aW9uIikgeworICAgICAgICAgICAg
aWYgKHBhcnNlZFVSTC5ob3N0ID09PSAic2hvdy1wYW5lbCIpIHsKKyAgICAgICAgICAgICAgICB2
YXIgcGFuZWwgPSBwYXJzZWRVUkwucGF0aC5zdWJzdHJpbmcoMSk7CiAgICAgICAgICAgICAgICAg
aWYgKFdlYkluc3BlY3Rvci5wYW5lbHNbcGFuZWxdKQogICAgICAgICAgICAgICAgICAgICBXZWJJ
bnNwZWN0b3IuY3VycmVudFBhbmVsID0gV2ViSW5zcGVjdG9yLnBhbmVsc1twYW5lbF07CiAgICAg
ICAgICAgICB9CkBAIC0xMjM0LDkgKzEyMjUsNiBAQCBXZWJJbnNwZWN0b3IudXBkYXRlUmVzb3Vy
Y2UgPSBmdW5jdGlvbihwYXlsb2FkKQogICAgIH0KIAogICAgIGlmIChwYXlsb2FkLmRpZFJlcXVl
c3RDaGFuZ2UpIHsKLSAgICAgICAgcmVzb3VyY2UuZG9tYWluID0gcGF5bG9hZC5ob3N0OwotICAg
ICAgICByZXNvdXJjZS5wYXRoID0gcGF5bG9hZC5wYXRoOwotICAgICAgICByZXNvdXJjZS5sYXN0
UGF0aENvbXBvbmVudCA9IHBheWxvYWQubGFzdFBhdGhDb21wb25lbnQ7CiAgICAgICAgIHJlc291
cmNlLnJlcXVlc3RIZWFkZXJzID0gcGF5bG9hZC5yZXF1ZXN0SGVhZGVyczsKICAgICAgICAgcmVz
b3VyY2UubWFpblJlc291cmNlID0gcGF5bG9hZC5tYWluUmVzb3VyY2U7CiAgICAgICAgIHJlc291
cmNlLnJlcXVlc3RNZXRob2QgPSBwYXlsb2FkLnJlcXVlc3RNZXRob2Q7CkBAIC0xMjQ4LDExICsx
MjM2LDEwIEBAIFdlYkluc3BlY3Rvci51cGRhdGVSZXNvdXJjZSA9IGZ1bmN0aW9uKHBheWxvYWQp
CiAgICAgICAgIGlmIChyZXNvdXJjZS5tYWluUmVzb3VyY2UpCiAgICAgICAgICAgICB0aGlzLm1h
aW5SZXNvdXJjZSA9IHJlc291cmNlOwogCi0gICAgICAgIHZhciBtYXRjaCA9IHBheWxvYWQuZG9j
dW1lbnRVUkwubWF0Y2goV2ViSW5zcGVjdG9yLkdlbmVyaWNVUkxSZWdFeHApOwotICAgICAgICBp
ZiAobWF0Y2gpIHsKLSAgICAgICAgICAgIHZhciBwcm90b2NvbCA9IG1hdGNoWzFdLnRvTG93ZXJD
YXNlKCk7Ci0gICAgICAgICAgICB0aGlzLl9hZGRDb29raWVEb21haW4obWF0Y2hbMl0pOwotICAg
ICAgICAgICAgdGhpcy5fYWRkQXBwQ2FjaGVEb21haW4obWF0Y2hbMl0pOworICAgICAgICB2YXIg
cGFyc2VkVVJMID0gcGF5bG9hZC5kb2N1bWVudFVSTC5hc1BhcnNlZFVSTCgpOworICAgICAgICBp
ZiAocGFyc2VkVVJMKSB7CisgICAgICAgICAgICB0aGlzLl9hZGRDb29raWVEb21haW4ocGFyc2Vk
VVJMLmhvc3QpOworICAgICAgICAgICAgdGhpcy5fYWRkQXBwQ2FjaGVEb21haW4ocGFyc2VkVVJM
Lmhvc3QpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNDk5LDEyICsxNDg2LDYgQEAgV2ViSW5z
cGVjdG9yLmluc3BlY3RlZFVSTENoYW5nZWQgPSBmdW5jdGlvbih1cmwpCiAgICAgdGhpcy5leHRl
bnNpb25TZXJ2ZXIubm90aWZ5SW5zcGVjdGVkVVJMQ2hhbmdlZCgpOwogfQogCi1XZWJJbnNwZWN0
b3IucmVzb3VyY2VVUkxDaGFuZ2VkID0gZnVuY3Rpb24ocmVzb3VyY2UsIG9sZFVSTCkKLXsKLSAg
ICBkZWxldGUgdGhpcy5yZXNvdXJjZVVSTE1hcFtvbGRVUkxdOwotICAgIHRoaXMucmVzb3VyY2VV
UkxNYXBbcmVzb3VyY2UudXJsXSA9IHJlc291cmNlOwotfQotCiBXZWJJbnNwZWN0b3IuZGlkQ29t
bWl0TG9hZCA9IGZ1bmN0aW9uKCkKIHsKICAgICAvLyBDbGVhbnVwIGVsZW1lbnRzIHBhbmVsIGVh
cmx5IG9uIGluc3BlY3RlZCBwYWdlIHJlZnJlc2guCkBAIC0xODM4LDggKzE4MTksOCBAQCBXZWJJ
bnNwZWN0b3IucmVzb3VyY2VVUkxGb3JSZWxhdGVkTm9kZSA9IGZ1bmN0aW9uKG5vZGUsIHVybCkK
IAogICAgIC8vIGRvY3VtZW50VVJMIG5vdCBmb3VuZCBvciBoYXMgYmFkIHZhbHVlCiAgICAgZm9y
ICh2YXIgcmVzb3VyY2VVUkwgaW4gV2ViSW5zcGVjdG9yLnJlc291cmNlVVJMTWFwKSB7Ci0gICAg
ICAgIHZhciBtYXRjaCA9IHJlc291cmNlVVJMLm1hdGNoKFdlYkluc3BlY3Rvci5VUkxSZWdFeHAp
OwotICAgICAgICBpZiAobWF0Y2ggJiYgbWF0Y2hbNF0gPT09IHVybCkKKyAgICAgICAgdmFyIHBh
cnNlZFVSTCA9IHJlc291cmNlVVJMLmFzUGFyc2VkVVJMKCk7CisgICAgICAgIGlmIChwYXJzZWRV
UkwgJiYgcGFyc2VkVVJMLnBhdGggPT09IHVybCkKICAgICAgICAgICAgIHJldHVybiByZXNvdXJj
ZVVSTDsKICAgICB9CiAgICAgcmV0dXJuIHVybDsKQEAgLTE4NDcsMTcgKzE4MjgsMTcgQEAgV2Vi
SW5zcGVjdG9yLnJlc291cmNlVVJMRm9yUmVsYXRlZE5vZGUgPSBmdW5jdGlvbihub2RlLCB1cmwp
CiAKIFdlYkluc3BlY3Rvci5jb21wbGV0ZVVSTCA9IGZ1bmN0aW9uKGJhc2VVUkwsIGhyZWYpCiB7
Ci0gICAgdmFyIG1hdGNoID0gYmFzZVVSTC5tYXRjaChXZWJJbnNwZWN0b3IuVVJMUmVnRXhwKTsK
LSAgICBpZiAobWF0Y2gpIHsKKyAgICB2YXIgcGFyc2VkVVJMID0gYmFzZVVSTC5hc1BhcnNlZFVS
TCgpOworICAgIGlmIChwYXJzZWRVUkwpIHsKICAgICAgICAgdmFyIHBhdGggPSBocmVmOwogICAg
ICAgICBpZiAocGF0aC5jaGFyQXQoMCkgIT09ICIvIikgewotICAgICAgICAgICAgdmFyIGJhc2VQ
YXRoID0gbWF0Y2hbNF0gfHwgIi8iOworICAgICAgICAgICAgdmFyIGJhc2VQYXRoID0gcGFyc2Vk
VVJMLnBhdGg7CiAgICAgICAgICAgICBwYXRoID0gYmFzZVBhdGguc3Vic3RyaW5nKDAsIGJhc2VQ
YXRoLmxhc3RJbmRleE9mKCIvIikpICsgIi8iICsgcGF0aDsKICAgICAgICAgfSBlbHNlIGlmIChw
YXRoLmxlbmd0aCA+IDEgJiYgcGF0aC5jaGFyQXQoMSkgPT09ICIvIikgewogICAgICAgICAgICAg
Ly8gaHJlZiBzdGFydHMgd2l0aCAiLy8iIHdoaWNoIGlzIGEgZnVsbCBVUkwgd2l0aCB0aGUgcHJv
dG9jb2wgZHJvcHBlZCAodXNlIHRoZSBiYXNlVVJMIHByb3RvY29sKS4KLSAgICAgICAgICAgIHJl
dHVybiBtYXRjaFsxXSArICI6IiArIHBhdGg7CisgICAgICAgICAgICByZXR1cm4gcGFyc2VkVVJM
LnNjaGVtZSArICI6IiArIHBhdGg7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1hdGNoWzFd
ICsgIjovLyIgKyBtYXRjaFsyXSArIChtYXRjaFszXSA/ICgiOiIgKyBtYXRjaFszXSkgOiAiIikg
KyBwYXRoOworICAgICAgICByZXR1cm4gcGFyc2VkVVJMLnNjaGVtZSArICI6Ly8iICsgcGFyc2Vk
VVJMLmhvc3QgKyAocGFyc2VkVVJMLnBvcnQgPyAoIjoiICsgcGFyc2VkVVJMLnBvcnQpIDogIiIp
ICsgcGF0aDsKICAgICB9CiAgICAgcmV0dXJuIG51bGw7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL3V0aWxpdGllcy5qcwppbmRleCA1ZTQxZGE2Li4wMzZkYzE3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMKQEAgLTM5Myw2ICszOTMsMjYgQEAgU3RyaW5n
LnByb3RvdHlwZS5oYXNTdWJzdHJpbmcgPSBmdW5jdGlvbihzdHJpbmcsIGNhc2VJbnNlbnNpdGl2
ZSkKICAgICByZXR1cm4gdGhpcy5tYXRjaChuZXcgUmVnRXhwKHN0cmluZy5lc2NhcGVGb3JSZWdF
eHAoKSwgImkiKSk7CiB9CiAKK1N0cmluZy5wcm90b3R5cGUuYXNQYXJzZWRVUkwgPSBmdW5jdGlv
bigpCit7CisgICAgLy8gUmVnRXhwIGdyb3VwczoKKyAgICAvLyAxIC0gc2NoZW1lCisgICAgLy8g
MiAtIGhvc3RuYW1lCisgICAgLy8gMyAtID9wb3J0CisgICAgLy8gNCAtID9wYXRoCisgICAgLy8g
NSAtID9mcmFnbWVudAorICAgIHZhciBtYXRjaCA9IHRoaXMubWF0Y2goL14oW146XSspOlwvXC8o
W15cLzpdKikoPzo6KFtcZF0rKSk/KD86KFwvW14jXSopKD86IyguKikpPyk/JC9pKTsKKyAgICBp
ZiAoIW1hdGNoKQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB2YXIgcmVzdWx0ID0ge307Cisg
ICAgcmVzdWx0LnNjaGVtZSA9IG1hdGNoWzFdLnRvTG93ZXJDYXNlKCk7CisgICAgcmVzdWx0Lmhv
c3QgPSBtYXRjaFsyXTsKKyAgICByZXN1bHQucG9ydCA9IG1hdGNoWzNdOworICAgIHJlc3VsdC5w
YXRoID0gbWF0Y2hbNF0gfHwgIi8iOworICAgIHJlc3VsdC5mcmFnbWVudCA9IG1hdGNoWzVdOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKIFN0cmluZy5wcm90b3R5cGUuZXNjYXBlQ2hhcmFjdGVy
cyA9IGZ1bmN0aW9uKGNoYXJzKQogewogICAgIHZhciBmb3VuZENoYXIgPSBmYWxzZTsK
</data>
<flag name="review"
          id="60893"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>