<?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>34251</bug_id>
          
          <creation_ts>2010-01-28 02:47:27 -0800</creation_ts>
          <short_desc>Web Inspector: [REGRESSION] Search doesn&apos;t continue highlighting elements on hitting &apos;Enter&apos; key</short_desc>
          <delta_ts>2010-02-15 02:34:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>185403</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-01-28 02:47:27 -0800</bug_when>
    <thetext>1. Navigate to http://www.google.com
2. Right click on the webpage and select Inspect element
3. Type &quot;google&quot; in the search box
4. Hit Enter a couple of times

What is the expected output? 
On second hit of enter key, search should move to the second element

What do you see instead?
It selects the first element code

http://code.google.com/p/chromium/issues/detail?id=33114</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190329</commentid>
    <comment_count>1</comment_count>
      <attachid>48727</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-02-14 09:34:35 -0800</bug_when>
    <thetext>Created attachment 48727
[PATCH] Proposed change.

Search on elements panel still has node granularity, so this change will highlight all occurrences of the search query within the node. I added FIXME for this and some other stuff. It is anyway better than what is now on ToT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190342</commentid>
    <comment_count>2</comment_count>
      <attachid>48727</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2010-02-14 13:04:51 -0800</bug_when>
    <thetext>Comment on attachment 48727
[PATCH] Proposed change.

What happens if a matched node is updated (attribute changes, etc) during a search? Then canceling will revert the changes with originalInnerHTML.

Also node updates will blow away highlights for that node.

Maybe instead of doing innerHTML swizzling thins highlighting/unhighlighting should happen in updateTille so changes to the DOM will work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190344</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-02-14 13:28:07 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 48727 [details])
&gt; What happens if a matched node is updated (attribute changes, etc) during a
&gt; search? Then canceling will revert the changes with originalInnerHTML.
&gt; Also node updates will blow away highlights for that node.
&gt; 
&gt; Maybe instead of doing innerHTML swizzling thins highlighting/unhighlighting
&gt; should happen in updateTille so changes to the DOM will work.

Heh. You are right - for a moment I thought that treeItem is going to be entirely re-created, but now I see that only title is being rebuilt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190348</commentid>
    <comment_count>4</comment_count>
      <attachid>48733</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-02-14 14:01:11 -0800</bug_when>
    <thetext>Created attachment 48733
[PATCH] Now setting highlight in updateTitle.

Changes to attributes are now handled properly. Changes to text nodes are processed as remove/add though. As a result, newly created nodes are absent in the searchResults array even if they contain matching text. But that is a general issue that has been there for all the times. The right solution would be to restart search from the current occurrence in case of changes to dom.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190351</commentid>
    <comment_count>5</comment_count>
      <attachid>48733</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2010-02-14 14:22:06 -0800</bug_when>
    <thetext>Comment on attachment 48733
[PATCH] Now setting highlight in updateTitle.

I think it should be _highlightSearchResults and highlightSearchResults? Since they highlight multiple matches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190410</commentid>
    <comment_count>6</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-02-15 02:34:57 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 48733 [details])
&gt; I think it should be _highlightSearchResults and highlightSearchResults? Since
&gt; they highlight multiple matches.

Done.

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/inspector/front-end/ElementsPanel.js
	M	WebCore/inspector/front-end/ElementsTreeOutline.js
	M	WebCore/inspector/front-end/InjectedScript.js
	M	WebCore/inspector/front-end/SourceFrame.js
	M	WebCore/inspector/front-end/TextViewer.js
	M	WebCore/inspector/front-end/textViewer.css
	M	WebCore/inspector/front-end/utilities.js
Committed r54770</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48727</attachid>
            <date>2010-02-14 09:34:35 -0800</date>
            <delta_ts>2010-02-14 14:01:11 -0800</delta_ts>
            <desc>[PATCH] Proposed change.</desc>
            <filename>search_highlight</filename>
            <type>text/plain</type>
            <size>14390</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
N2JkODE4Ni4uMDJkNmY1NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wMi0xNCAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBoaWdobGlnaHQgYWN0dWFsIHNlYXJj
aCBtYXRjaCBpbiBlbGVtZW50cyBwYW5lbC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQyNTEKKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvRWxlbWVudHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVs
LnByb3RvdHlwZS5zZWFyY2hDYW5jZWxlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVu
dHNQYW5lbC5wcm90b3R5cGUucGVyZm9ybVNlYXJjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RWxlbWVudHNQYW5lbC5wcm90b3R5cGUuYWRkTm9kZXNUb1NlYXJjaFJlc3VsdCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUuanVtcFRvTmV4dFNlYXJjaFJl
c3VsdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUuanVt
cFRvUHJldmlvdXNTZWFyY2hSZXN1bHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRz
UGFuZWwucHJvdG90eXBlLl9oaWdobGlnaHRDdXJyZW50U2VhcmNoUmVzdWx0KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5faGlkZVNlYXJjaEhpZ2hsaWdo
dHMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHQuanM6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuZmluZFNlYXJjaE1hdGNoZXMpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGV4dFZpZXdlci5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UZXh0Vmlld2VyLnByb3RvdHlwZS5fcGFpbnRMaW5lKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL3RleHRWaWV3ZXIuY3NzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvdXRpbGl0aWVzLmpzOgorICAgICAgICAoKToKKwogMjAxMC0wMi0xMyAgUGF2ZWwgRmVs
ZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW1v
dGh5IEhhdGNoZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxl
bWVudHNQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVs
LmpzCmluZGV4IGU4MzlhNjAuLmExZmUwYjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9FbGVtZW50c1BhbmVsLmpzCkBAIC0yNDUsMTMgKzI0NSw4IEBAIFdlYkluc3BlY3Rvci5F
bGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIHNlYXJjaENhbmNlbGVkOiBmdW5jdGlv
bigpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fc2VhcmNoUmVzdWx0cykgewotICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aDsgKytpKSB7
Ci0gICAgICAgICAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gdGhpcy50cmVlT3V0bGluZS5maW5k
VHJlZUVsZW1lbnQodGhpcy5fc2VhcmNoUmVzdWx0c1tpXSk7Ci0gICAgICAgICAgICAgICAgaWYg
KHRyZWVFbGVtZW50KQotICAgICAgICAgICAgICAgICAgICB0cmVlRWxlbWVudC5oaWdobGlnaHRl
ZCA9IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIGRlbGV0ZSB0aGlz
Ll9zZWFyY2hRdWVyeTsKKyAgICAgICAgdGhpcy5faGlkZVNlYXJjaEhpZ2hsaWdodHMoKTsKIAog
ICAgICAgICBXZWJJbnNwZWN0b3IudXBkYXRlU2VhcmNoTWF0Y2hlc0NvdW50KDAsIHRoaXMpOwog
CkBAIC0yNjAsNyArMjU1LDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBl
ID0gewogICAgICAgICBJbmplY3RlZFNjcmlwdEFjY2Vzcy5nZXREZWZhdWx0KCkuc2VhcmNoQ2Fu
Y2VsZWQoZnVuY3Rpb24oKSB7fSk7CiAgICAgfSwKIAotICAgIHBlcmZvcm1TZWFyY2g6IGZ1bmN0
aW9uKHF1ZXJ5KQorICAgIHBlcmZvcm1TZWFyY2g6IGZ1bmN0aW9uKHF1ZXJ5LCBmb3JjZVNlYXJj
aCkKICAgICB7CiAgICAgICAgIC8vIENhbGwgc2VhcmNoQ2FuY2VsZWQgc2luY2UgaXQgd2lsbCBy
ZXNldCBldmVyeXRoaW5nIHdlIG5lZWQgYmVmb3JlIGRvaW5nIGEgbmV3IHNlYXJjaC4KICAgICAg
ICAgdGhpcy5zZWFyY2hDYW5jZWxlZCgpOwpAQCAtMjcxLDggKzI2Niw5IEBAIFdlYkluc3BlY3Rv
ci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl91cGRhdGVkTWF0
Y2hDb3VudE9uY2UgPSBmYWxzZTsKICAgICAgICAgdGhpcy5fbWF0Y2hlc0NvdW50VXBkYXRlVGlt
ZW91dCA9IG51bGw7CisgICAgICAgIHRoaXMuX3NlYXJjaFF1ZXJ5ID0gcXVlcnk7CiAKLSAgICAg
ICAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0RGVmYXVsdCgpLnBlcmZvcm1TZWFyY2god2hpdGVz
cGFjZVRyaW1tZWRRdWVyeSwgZnVuY3Rpb24oKSB7fSk7CisgICAgICAgIEluamVjdGVkU2NyaXB0
QWNjZXNzLmdldERlZmF1bHQoKS5wZXJmb3JtU2VhcmNoKHdoaXRlc3BhY2VUcmltbWVkUXVlcnks
IGZvcmNlU2VhcmNoLCBmdW5jdGlvbigpIHt9KTsKICAgICB9LAogCiAgICAgX3VwZGF0ZU1hdGNo
ZXNDb3VudDogZnVuY3Rpb24oKQpAQCAtMzA0LDI1ICszMDAsMTAgQEAgV2ViSW5zcGVjdG9yLkVs
ZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKCFub2RlKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBpZiAoIXRoaXMuX3NlYXJjaFJlc3Vs
dHMubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdElu
ZGV4ID0gMDsKLQotICAgICAgICAgICAgICAgIC8vIE9ubHkgY2hhbmdlIHRoZSBmb2N1c2VkRE9N
Tm9kZSBpZiB0aGUgc2VhcmNoIHdhcyBtYW51YWxseSBwZXJmb3JtZWQsIGJlY2F1c2UKLSAgICAg
ICAgICAgICAgICAvLyB0aGUgc2VhcmNoIG1heSBoYXZlIGJlZW4gcGVyZm9ybWVkIHByb2dyYW1t
YXRpY2FsbHkgYW5kIHdlIHdvdWxkbid0IHdhbnQgdG8KLSAgICAgICAgICAgICAgICAvLyBjaGFu
Z2UgdGhlIGN1cnJlbnQgZm9jdXNlZERPTU5vZGUuCi0gICAgICAgICAgICAgICAgaWYgKFdlYklu
c3BlY3Rvci5jdXJyZW50Rm9jdXNFbGVtZW50ID09PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
c2VhcmNoIikpCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNlZERPTU5vZGUgPSBub2Rl
OwotICAgICAgICAgICAgfQotCisgICAgICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0
SW5kZXggPSAwOwogICAgICAgICAgICAgdGhpcy5fc2VhcmNoUmVzdWx0cy5wdXNoKG5vZGUpOwot
Ci0gICAgICAgICAgICAvLyBIaWdobGlnaHQgdGhlIHRyZWUgZWxlbWVudCB0byBzaG93IGl0IG1h
dGNoZWQgdGhlIHNlYXJjaC4KLSAgICAgICAgICAgIC8vIEZJWE1FOiBoaWdobGlnaHQgdGhlIHN1
YnN0cmluZ3MgaW4gdGV4dCBub2RlcyBhbmQgYXR0cmlidXRlcy4KLSAgICAgICAgICAgIHZhciB0
cmVlRWxlbWVudCA9IHRoaXMudHJlZU91dGxpbmUuZmluZFRyZWVFbGVtZW50KG5vZGUpOwotICAg
ICAgICAgICAgaWYgKHRyZWVFbGVtZW50KQotICAgICAgICAgICAgICAgIHRyZWVFbGVtZW50Lmhp
Z2hsaWdodGVkID0gdHJ1ZTsKICAgICAgICAgfQotCisgICAgICAgIHRoaXMuX2hpZ2hsaWdodEN1
cnJlbnRTZWFyY2hSZXN1bHQoKTsKICAgICAgICAgdGhpcy5fdXBkYXRlTWF0Y2hlc0NvdW50U29v
bigpOwogICAgIH0sCiAKQEAgLTMzMCwxOCArMzExLDU2IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50
c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fc2VhcmNoUmVz
dWx0cyB8fCAhdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgpCiAgICAgICAgICAgICByZXR1cm47
CisKICAgICAgICAgaWYgKCsrdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID49IHRoaXMu
X3NlYXJjaFJlc3VsdHMubGVuZ3RoKQogICAgICAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJl
c3VsdEluZGV4ID0gMDsKLSAgICAgICAgdGhpcy5mb2N1c2VkRE9NTm9kZSA9IHRoaXMuX3NlYXJj
aFJlc3VsdHNbdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4XTsKKyAgICAgICAgdGhpcy5f
aGlnaGxpZ2h0Q3VycmVudFNlYXJjaFJlc3VsdCgpOwogICAgIH0sCiAKICAgICBqdW1wVG9QcmV2
aW91c1NlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9z
ZWFyY2hSZXN1bHRzIHx8ICF0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCkKICAgICAgICAgICAg
IHJldHVybjsKKwogICAgICAgICBpZiAoLS10aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXgg
PCAwKQogICAgICAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID0gKHRoaXMu
X3NlYXJjaFJlc3VsdHMubGVuZ3RoIC0gMSk7Ci0gICAgICAgIHRoaXMuZm9jdXNlZERPTU5vZGUg
PSB0aGlzLl9zZWFyY2hSZXN1bHRzW3RoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleF07Cisg
ICAgICAgIHRoaXMuX2hpZ2hsaWdodEN1cnJlbnRTZWFyY2hSZXN1bHQoKTsKKyAgICB9LAorCisg
ICAgX2hpZ2hsaWdodEN1cnJlbnRTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHRoaXMuX2hpZGVTZWFyY2hIaWdobGlnaHRzKCk7CisgICAgICAgIHZhciBub2RlID0gdGhp
cy5fc2VhcmNoUmVzdWx0c1t0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXhdOworICAgICAg
ICB2YXIgdHJlZUVsZW1lbnQgPSB0aGlzLnRyZWVPdXRsaW5lLmZpbmRUcmVlRWxlbWVudChub2Rl
KTsKKyAgICAgICAgaWYgKHRyZWVFbGVtZW50KSB7CisgICAgICAgICAgICB2YXIgdGl0bGUgPSB0
cmVlRWxlbWVudC5saXN0SXRlbUVsZW1lbnQ7CisgICAgICAgICAgICB2YXIgdGV4dCA9IHRpdGxl
LnRleHRDb250ZW50OworICAgICAgICAgICAgdmFyIHJlZ2V4T2JqZWN0ID0gY3JlYXRlU2VhcmNo
UmVnZXgodGhpcy5fc2VhcmNoUXVlcnkpOworICAgICAgICAgICAgdGl0bGUub3JpZ2luYWxJbm5l
ckhUTUwgPSB0aXRsZS5pbm5lckhUTUw7CisKKyAgICAgICAgICAgIHZhciBvZmZzZXQgPSAwOwor
ICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIHZhciBtYXRjaCA9IHJlZ2V4T2JqZWN0
LmV4ZWModGV4dCk7CisgICAgICAgICAgICAgICAgaWYgKG1hdGNoKSB7CisgICAgICAgICAgICAg
ICAgICAgIGhpZ2hsaWdodFNlYXJjaFJlc3VsdCh0aXRsZSwgb2Zmc2V0ICsgbWF0Y2guaW5kZXgs
IG1hdGNoWzBdLmxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBtYXRjaC5p
bmRleCArIDE7CisgICAgICAgICAgICAgICAgICAgIHRleHQgPSB0ZXh0LnN1YnN0cmluZyhtYXRj
aC5pbmRleCArIDEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gd2hpbGUgKG1h
dGNoKQorICAgICAgICAgICAgdHJlZUVsZW1lbnQucmV2ZWFsKCk7CisgICAgICAgIH0KKyAgICB9
LAorCisgICAgX2hpZGVTZWFyY2hIaWdobGlnaHRzOiBmdW5jdGlvbihub2RlKQorICAgIHsKKyAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IHRoaXMuX3NlYXJjaFJlc3VsdHMgJiYgaSA8IHRoaXMuX3Nl
YXJjaFJlc3VsdHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBub2RlID0gdGhpcy5f
c2VhcmNoUmVzdWx0c1tpXTsKKyAgICAgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IHRoaXMudHJl
ZU91dGxpbmUuZmluZFRyZWVFbGVtZW50KG5vZGUpOworICAgICAgICAgICAgaWYgKHRyZWVFbGVt
ZW50ICYmIHRyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5vcmlnaW5hbElubmVySFRNTCkgewor
ICAgICAgICAgICAgICAgIHRyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5pbm5lckhUTUwgPSB0
cmVlRWxlbWVudC5saXN0SXRlbUVsZW1lbnQub3JpZ2luYWxJbm5lckhUTUw7CisgICAgICAgICAg
ICAgICAgZGVsZXRlIHRyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5vcmlnaW5hbElubmVySFRN
TDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0sCiAKICAgICByZW5hbWVTZWxlY3Rv
cjogZnVuY3Rpb24ob2xkSWRlbnRpZmllciwgbmV3SWRlbnRpZmllciwgb2xkU2VsZWN0b3IsIG5l
d1NlbGVjdG9yKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVj
dGVkU2NyaXB0LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0
LmpzCmluZGV4IDk1ODY3YzQuLjMzMzU3MTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvSW5qZWN0ZWRTY3JpcHQuanMKQEAgLTY3Nyw2ICs2NzcsMTIgQEAgSW5qZWN0ZWRTY3Jp
cHQuYWRkSW5zcGVjdGVkTm9kZSA9IGZ1bmN0aW9uKG5vZGVJZCkKIAogSW5qZWN0ZWRTY3JpcHQu
cGVyZm9ybVNlYXJjaCA9IGZ1bmN0aW9uKHdoaXRlc3BhY2VUcmltbWVkUXVlcnkpCiB7CisgICAg
Ly8gRklYTUU6IEZldyB0aGluZ3MgYXJlIG1pc3NpbmcgaGVyZToKKyAgICAvLyAxKSBTZWFyY2gg
d29ya3Mgd2l0aCBub2RlIGdyYW51bGFyaXR5IC0gbnVtYmVyIG9mIG1hdGNoZXMgd2l0aGluIG5v
ZGUgaXMgbm90IGNhbGN1bGF0ZWQuCisgICAgLy8gMikgU2VhcmNoIGRvZXMgbm90IHdvcmsgb3V0
c2lkZSBtYWluIGRvY3VtZW50cycgZG9tYWluIC0gd2UgbmVlZCB0byB1c2Ugc3BlY2lmaWMgSW5q
ZWN0ZWRTY3JpcHQgaW5zdGFuY2VzCisgICAgLy8gICAgZm9yIG90aGVyIGRvbWFpbnMuCisgICAg
Ly8gMykgVGhlcmUgaXMgbm8gbmVlZCB0byBwdXNoIGFsbCBzZWFyY2ggcmVzdWx0cyB0byB0aGUg
ZnJvbnQtZW5kIGF0IGEgdGltZSwgcHVzaGluZyBuZXh0IC8gcHJldmlvdXMgcmVzdWx0CisgICAg
Ly8gICAgaXMgc3VmZmljaWVudC4KICAgICB2YXIgdGFnTmFtZVF1ZXJ5ID0gd2hpdGVzcGFjZVRy
aW1tZWRRdWVyeTsKICAgICB2YXIgYXR0cmlidXRlTmFtZVF1ZXJ5ID0gd2hpdGVzcGFjZVRyaW1t
ZWRRdWVyeTsKICAgICB2YXIgc3RhcnRUYWdGb3VuZCA9ICh0YWdOYW1lUXVlcnkuaW5kZXhPZigi
PCIpID09PSAwKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3Vy
Y2VGcmFtZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcwpp
bmRleCAzNDMxN2EzLi41MWM5ZjRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU291cmNlRnJhbWUuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Nv
dXJjZUZyYW1lLmpzCkBAIC0xOTYsMTQgKzE5Niw3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFt
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciByYW5nZXMgPSBbXTsKIAogICAgICAgICAvLyBG
aXJzdCBkbyBjYXNlLWluc2Vuc2l0aXZlIHNlYXJjaC4KLSAgICAgICAgdmFyIHJlZ2V4ID0gIiI7
Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVlcnkubGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgICAgIHZhciBjaGFyID0gcXVlcnkuY2hhckF0KGkpOwotICAgICAgICAgICAgaWYgKGNoYXIg
PT09ICJdIikKLSAgICAgICAgICAgICAgICBjaGFyID0gIlxcXSI7Ci0gICAgICAgICAgICByZWdl
eCArPSAiWyIgKyBjaGFyICsgIl0iOwotICAgICAgICB9Ci0gICAgICAgIHZhciByZWdleE9iamVj
dCA9IG5ldyBSZWdFeHAocmVnZXgsICJpIik7CisgICAgICAgIHZhciByZWdleE9iamVjdCA9IGNy
ZWF0ZVNlYXJjaFJlZ2V4KHF1ZXJ5KTsKICAgICAgICAgdGhpcy5fY29sbGVjdFJlZ2V4TWF0Y2hl
cyhyZWdleE9iamVjdCwgcmFuZ2VzKTsKIAogICAgICAgICAvLyBUaGVuIHRyeSByZWdleCBzZWFy
Y2ggaWYgdXNlciBrbm93cyB0aGUgLyAvIGhpbnQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvVGV4dFZpZXdlci5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9UZXh0Vmlld2VyLmpzCmluZGV4IDdhOTc0OWQuLjAxZDhkNDUgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0Vmlld2VyLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9UZXh0Vmlld2VyLmpzCkBAIC0zMjcsNyArMzI3LDcgQEAgV2ViSW5zcGVj
dG9yLlRleHRWaWV3ZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICghaGlnaGxpZ2h0ZXJT
dGF0ZSkgewogICAgICAgICAgICAgaWYgKHRoaXMuX3JhbmdlVG9NYXJrICYmIHRoaXMuX3Jhbmdl
VG9NYXJrLnN0YXJ0TGluZSA9PT0gbGluZU51bWJlcikKLSAgICAgICAgICAgICAgICB0aGlzLl9t
YXJrUmFuZ2UoZWxlbWVudCwgbGluZSwgdGhpcy5fcmFuZ2VUb01hcmsuc3RhcnRDb2x1bW4sIHRo
aXMuX3JhbmdlVG9NYXJrLmVuZENvbHVtbik7CisgICAgICAgICAgICAgICAgaGlnaGxpZ2h0U2Vh
cmNoUmVzdWx0KGVsZW1lbnQsIHRoaXMuX3JhbmdlVG9NYXJrLnN0YXJ0Q29sdW1uLCB0aGlzLl9y
YW5nZVRvTWFyay5lbmRDb2x1bW4gLSB0aGlzLl9yYW5nZVRvTWFyay5zdGFydENvbHVtbik7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMzU2LDcgKzM1Niw3IEBAIFdlYklu
c3BlY3Rvci5UZXh0Vmlld2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHBsYWluVGV4dFN0
YXJ0ICE9PSAtMSkKICAgICAgICAgICAgIHRoaXMuX2FwcGVuZFRleHROb2RlKGVsZW1lbnQsIGxp
bmUuc3Vic3RyaW5nKHBsYWluVGV4dFN0YXJ0LCBsaW5lLmxlbmd0aCkpOwogICAgICAgICBpZiAo
dGhpcy5fcmFuZ2VUb01hcmsgJiYgdGhpcy5fcmFuZ2VUb01hcmsuc3RhcnRMaW5lID09PSBsaW5l
TnVtYmVyKQotICAgICAgICAgICAgdGhpcy5fbWFya1JhbmdlKGVsZW1lbnQsIGxpbmUsIHRoaXMu
X3JhbmdlVG9NYXJrLnN0YXJ0Q29sdW1uLCB0aGlzLl9yYW5nZVRvTWFyay5lbmRDb2x1bW4pOwor
ICAgICAgICAgICAgaGlnaGxpZ2h0U2VhcmNoUmVzdWx0KGVsZW1lbnQsIHRoaXMuX3JhbmdlVG9N
YXJrLnN0YXJ0Q29sdW1uLCB0aGlzLl9yYW5nZVRvTWFyay5lbmRDb2x1bW4gLSB0aGlzLl9yYW5n
ZVRvTWFyay5zdGFydENvbHVtbik7CiAgICAgICAgIGlmIChsaW5lUm93LmRlY29yYXRpb25zRWxl
bWVudCkKICAgICAgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQobGluZVJvdy5kZWNvcmF0aW9u
c0VsZW1lbnQpOwogICAgIH0sCkBAIC01MzEsNDggKzUzMSw2IEBAIFdlYkluc3BlY3Rvci5UZXh0
Vmlld2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5jb21wbGV0
ZVVSTCh0aGlzLl91cmwsIGhyZWZWYWx1ZSk7CiAgICAgfSwKIAotICAgIF9tYXJrUmFuZ2U6IGZ1
bmN0aW9uKGVsZW1lbnQsIGxpbmVUZXh0LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQotICAgIHsK
LSAgICAgICAgdmFyIG1hcmtOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwot
ICAgICAgICBtYXJrTm9kZS5jbGFzc05hbWUgPSAid2Via2l0LW1hcmt1cCI7Ci0gICAgICAgIG1h
cmtOb2RlLnRleHRDb250ZW50ID0gbGluZVRleHQuc3Vic3RyaW5nKHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQpOwotCi0gICAgICAgIHZhciBtYXJrTGVuZ3RoID0gZW5kT2Zmc2V0IC0gc3RhcnRPZmZz
ZXQ7Ci0gICAgICAgIHZhciBib3VuZGFyeSA9IGVsZW1lbnQucmFuZ2VCb3VuZGFyeUZvck9mZnNl
dChzdGFydE9mZnNldCk7Ci0gICAgICAgIHZhciB0ZXh0Tm9kZSA9IGJvdW5kYXJ5LmNvbnRhaW5l
cjsKLSAgICAgICAgdmFyIHRleHQgPSB0ZXh0Tm9kZS50ZXh0Q29udGVudDsKLQotICAgICAgICBp
ZiAoYm91bmRhcnkub2Zmc2V0ICsgbWFya0xlbmd0aCA8IHRleHQubGVuZ3RoKSB7Ci0gICAgICAg
ICAgICAvLyBTZWxlY3Rpb24gYmVsb25nIHRvIGEgc2luZ2xlIHNwbGl0IG1vZGUuCi0gICAgICAg
ICAgICB0ZXh0Tm9kZS50ZXh0Q29udGVudCA9IHRleHQuc3Vic3RyaW5nKGJvdW5kYXJ5Lm9mZnNl
dCArIG1hcmtMZW5ndGgpOwotICAgICAgICAgICAgdGV4dE5vZGUucGFyZW50RWxlbWVudC5pbnNl
cnRCZWZvcmUobWFya05vZGUsIHRleHROb2RlKTsKLSAgICAgICAgICAgIHZhciBwcmVmaXhOb2Rl
ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dC5zdWJzdHJpbmcoMCwgYm91bmRhcnkub2Zm
c2V0KSk7Ci0gICAgICAgICAgICB0ZXh0Tm9kZS5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZShw
cmVmaXhOb2RlLCBtYXJrTm9kZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICB2YXIgcGFyZW50RWxlbWVudCA9IHRleHROb2RlLnBhcmVudEVsZW1lbnQ7Ci0gICAg
ICAgIHZhciBhbmNob3JFbGVtZW50ID0gdGV4dE5vZGUubmV4dFNpYmxpbmc7Ci0KLSAgICAgICAg
bWFya0xlbmd0aCAtPSB0ZXh0Lmxlbmd0aCAtIGJvdW5kYXJ5Lm9mZnNldDsKLSAgICAgICAgdGV4
dE5vZGUudGV4dENvbnRlbnQgPSB0ZXh0LnN1YnN0cmluZygwLCBib3VuZGFyeS5vZmZzZXQpOwot
ICAgICAgICB0ZXh0Tm9kZSA9IHRleHROb2RlLnRyYXZlcnNlTmV4dFRleHROb2RlKGVsZW1lbnQp
OwotCi0gICAgICAgIHdoaWxlICh0ZXh0Tm9kZSkgewotICAgICAgICAgICAgdmFyIHRleHQgPSB0
ZXh0Tm9kZS50ZXh0Q29udGVudDsKLSAgICAgICAgICAgIGlmIChtYXJrTGVuZ3RoIDwgdGV4dC5s
ZW5ndGgpIHsKLSAgICAgICAgICAgICAgICB0ZXh0Tm9kZS50ZXh0Q29udGVudCA9IHRleHQuc3Vi
c3RyaW5nKG1hcmtMZW5ndGgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBtYXJrTGVuZ3RoIC09IHRleHQubGVuZ3RoOwotICAgICAgICAgICAg
dGV4dE5vZGUudGV4dENvbnRlbnQgPSAiIjsKLSAgICAgICAgICAgIHRleHROb2RlID0gdGV4dE5v
ZGUudHJhdmVyc2VOZXh0VGV4dE5vZGUoZWxlbWVudCk7Ci0gICAgICAgIH0KLQotICAgICAgICBw
YXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZShtYXJrTm9kZSwgYW5jaG9yRWxlbWVudCk7Ci0gICAg
fSwKLQogICAgIHJlc2l6ZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5fcmVwYWlu
dEFsbCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RleHRWaWV3
ZXIuY3NzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RleHRWaWV3ZXIuY3NzCmluZGV4
IGFmMDc5YmMuLjM4NmE5ZDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC90ZXh0Vmlld2VyLmNzcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdGV4dFZp
ZXdlci5jc3MKQEAgLTEzMCwxMyArMTMwLDE0IEBACiAgICAgb3V0bGluZTogMXB4IHNvbGlkIHJn
Yig2NCwgMTE1LCAyNDQpOwogfQogCi0ud2Via2l0LW1hcmt1cCB7Cisud2Via2l0LXNlYXJjaC1y
ZXN1bHQgewogICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNHB4OwotICAgIHBhZGRpbmc6IDJw
eCAxcHggMnB4IDNweDsKLSAgICBtYXJnaW4tbGVmdDogLTRweDsKLSAgICBtYXJnaW4tdG9wOiAt
MnB4OworICAgIHBhZGRpbmc6IDJweCAycHggMnB4IDNweDsKKyAgICBtYXJnaW46IC0ycHggLTJw
eCAtMnB4IC0zcHg7CisgICAgb3BhY2l0eTogMC44OwogICAgIC13ZWJraXQtYm94LXNoYWRvdzog
cmdiYSgwLCAwLCAwLCAuNSkgM3B4IDNweCA0cHg7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdi
KDI0MSwgMjM0LCAwKTsKKyAgICBjb2xvcjogYmxhY2s7CiB9CiAKIC53ZWJraXQtaGlnaGxpZ2h0
ZWQtbGluZSAud2Via2l0LWxpbmUtY29udGVudCB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L3V0aWxpdGllcy5qcwppbmRleCA2MGQzYjQ1Li4wODc3YTJjIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC91dGlsaXRpZXMuanMKQEAgLTg1MCwzICs4NTAsNTkgQEAgZnVuY3Rpb24gaXNF
bnRlcktleShldmVudCkgewogICAgIC8vIENoZWNrIGlmIGluIElNRS4KICAgICByZXR1cm4gZXZl
bnQua2V5Q29kZSAhPT0gMjI5ICYmIGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJFbnRlciI7CiB9
CisKKworZnVuY3Rpb24gaGlnaGxpZ2h0U2VhcmNoUmVzdWx0KGVsZW1lbnQsIG9mZnNldCwgbGVu
Z3RoKQoreworICAgIHZhciBsaW5lVGV4dCA9IGVsZW1lbnQudGV4dENvbnRlbnQ7CisgICAgdmFy
IGVuZE9mZnNldCA9IG9mZnNldCArIGxlbmd0aDsKKyAgICB2YXIgaGlnaGxpZ2h0Tm9kZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICBoaWdobGlnaHROb2RlLmNsYXNzTmFt
ZSA9ICJ3ZWJraXQtc2VhcmNoLXJlc3VsdCI7CisgICAgaGlnaGxpZ2h0Tm9kZS50ZXh0Q29udGVu
dCA9IGxpbmVUZXh0LnN1YnN0cmluZyhvZmZzZXQsIGVuZE9mZnNldCk7CisKKyAgICB2YXIgYm91
bmRhcnkgPSBlbGVtZW50LnJhbmdlQm91bmRhcnlGb3JPZmZzZXQob2Zmc2V0KTsKKyAgICB2YXIg
dGV4dE5vZGUgPSBib3VuZGFyeS5jb250YWluZXI7CisgICAgdmFyIHRleHQgPSB0ZXh0Tm9kZS50
ZXh0Q29udGVudDsKKworICAgIGlmIChib3VuZGFyeS5vZmZzZXQgKyBsZW5ndGggPCB0ZXh0Lmxl
bmd0aCkgeworICAgICAgICAvLyBTZWxlY3Rpb24gYmVsb25nIHRvIGEgc2luZ2xlIHNwbGl0IG1v
ZGUuCisgICAgICAgIHRleHROb2RlLnRleHRDb250ZW50ID0gdGV4dC5zdWJzdHJpbmcoYm91bmRh
cnkub2Zmc2V0ICsgbGVuZ3RoKTsKKyAgICAgICAgdGV4dE5vZGUucGFyZW50RWxlbWVudC5pbnNl
cnRCZWZvcmUoaGlnaGxpZ2h0Tm9kZSwgdGV4dE5vZGUpOworICAgICAgICB2YXIgcHJlZml4Tm9k
ZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQuc3Vic3RyaW5nKDAsIGJvdW5kYXJ5Lm9m
ZnNldCkpOworICAgICAgICB0ZXh0Tm9kZS5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZShwcmVm
aXhOb2RlLCBoaWdobGlnaHROb2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZh
ciBwYXJlbnRFbGVtZW50ID0gdGV4dE5vZGUucGFyZW50RWxlbWVudDsKKyAgICB2YXIgYW5jaG9y
RWxlbWVudCA9IHRleHROb2RlLm5leHRTaWJsaW5nOworCisgICAgbGVuZ3RoIC09IHRleHQubGVu
Z3RoIC0gYm91bmRhcnkub2Zmc2V0OworICAgIHRleHROb2RlLnRleHRDb250ZW50ID0gdGV4dC5z
dWJzdHJpbmcoMCwgYm91bmRhcnkub2Zmc2V0KTsKKyAgICB0ZXh0Tm9kZSA9IHRleHROb2RlLnRy
YXZlcnNlTmV4dFRleHROb2RlKGVsZW1lbnQpOworCisgICAgd2hpbGUgKHRleHROb2RlKSB7Cisg
ICAgICAgIHZhciB0ZXh0ID0gdGV4dE5vZGUudGV4dENvbnRlbnQ7CisgICAgICAgIGlmIChsZW5n
dGggPCB0ZXh0Lmxlbmd0aCkgeworICAgICAgICAgICAgdGV4dE5vZGUudGV4dENvbnRlbnQgPSB0
ZXh0LnN1YnN0cmluZyhsZW5ndGgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwor
ICAgICAgICBsZW5ndGggLT0gdGV4dC5sZW5ndGg7CisgICAgICAgIHRleHROb2RlLnRleHRDb250
ZW50ID0gIiI7CisgICAgICAgIHRleHROb2RlID0gdGV4dE5vZGUudHJhdmVyc2VOZXh0VGV4dE5v
ZGUoZWxlbWVudCk7CisgICAgfQorCisgICAgcGFyZW50RWxlbWVudC5pbnNlcnRCZWZvcmUoaGln
aGxpZ2h0Tm9kZSwgYW5jaG9yRWxlbWVudCk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVNlYXJjaFJl
Z2V4KHF1ZXJ5KQoreworICAgIHZhciByZWdleCA9ICIiOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgcXVlcnkubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIGNoYXIgPSBxdWVyeS5jaGFyQXQo
aSk7CisgICAgICAgIGlmIChjaGFyID09PSAiXSIpCisgICAgICAgICAgICBjaGFyID0gIlxcXSI7
CisgICAgICAgIHJlZ2V4ICs9ICJbIiArIGNoYXIgKyAiXSI7CisgICAgfQorICAgIHJldHVybiBu
ZXcgUmVnRXhwKHJlZ2V4LCAiaSIpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48733</attachid>
            <date>2010-02-14 14:01:11 -0800</date>
            <delta_ts>2010-02-14 14:22:05 -0800</delta_ts>
            <desc>[PATCH] Now setting highlight in updateTitle.</desc>
            <filename>search_highlight</filename>
            <type>text/plain</type>
            <size>15801</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
N2JkODE4Ni4uMDJkNmY1NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wMi0xNCAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBoaWdobGlnaHQgYWN0dWFsIHNlYXJj
aCBtYXRjaCBpbiBlbGVtZW50cyBwYW5lbC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQyNTEKKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvRWxlbWVudHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVs
LnByb3RvdHlwZS5zZWFyY2hDYW5jZWxlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVu
dHNQYW5lbC5wcm90b3R5cGUucGVyZm9ybVNlYXJjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RWxlbWVudHNQYW5lbC5wcm90b3R5cGUuYWRkTm9kZXNUb1NlYXJjaFJlc3VsdCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUuanVtcFRvTmV4dFNlYXJjaFJl
c3VsdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUuanVt
cFRvUHJldmlvdXNTZWFyY2hSZXN1bHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRz
UGFuZWwucHJvdG90eXBlLl9oaWdobGlnaHRDdXJyZW50U2VhcmNoUmVzdWx0KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5faGlkZVNlYXJjaEhpZ2hsaWdo
dHMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHQuanM6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuZmluZFNlYXJjaE1hdGNoZXMpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGV4dFZpZXdlci5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UZXh0Vmlld2VyLnByb3RvdHlwZS5fcGFpbnRMaW5lKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL3RleHRWaWV3ZXIuY3NzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvdXRpbGl0aWVzLmpzOgorICAgICAgICAoKToKKwogMjAxMC0wMi0xMyAgUGF2ZWwgRmVs
ZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW1v
dGh5IEhhdGNoZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxl
bWVudHNQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVs
LmpzCmluZGV4IGU4MzlhNjAuLmRkYWFkZjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9FbGVtZW50c1BhbmVsLmpzCkBAIC0yNDUsMTMgKzI0NSw4IEBAIFdlYkluc3BlY3Rvci5F
bGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIHNlYXJjaENhbmNlbGVkOiBmdW5jdGlv
bigpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fc2VhcmNoUmVzdWx0cykgewotICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aDsgKytpKSB7
Ci0gICAgICAgICAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gdGhpcy50cmVlT3V0bGluZS5maW5k
VHJlZUVsZW1lbnQodGhpcy5fc2VhcmNoUmVzdWx0c1tpXSk7Ci0gICAgICAgICAgICAgICAgaWYg
KHRyZWVFbGVtZW50KQotICAgICAgICAgICAgICAgICAgICB0cmVlRWxlbWVudC5oaWdobGlnaHRl
ZCA9IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIGRlbGV0ZSB0aGlz
Ll9zZWFyY2hRdWVyeTsKKyAgICAgICAgdGhpcy5faGlkZVNlYXJjaEhpZ2hsaWdodHMoKTsKIAog
ICAgICAgICBXZWJJbnNwZWN0b3IudXBkYXRlU2VhcmNoTWF0Y2hlc0NvdW50KDAsIHRoaXMpOwog
CkBAIC0yNzEsNiArMjY2LDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBl
ID0gewogCiAgICAgICAgIHRoaXMuX3VwZGF0ZWRNYXRjaENvdW50T25jZSA9IGZhbHNlOwogICAg
ICAgICB0aGlzLl9tYXRjaGVzQ291bnRVcGRhdGVUaW1lb3V0ID0gbnVsbDsKKyAgICAgICAgdGhp
cy5fc2VhcmNoUXVlcnkgPSBxdWVyeTsKIAogICAgICAgICBJbmplY3RlZFNjcmlwdEFjY2Vzcy5n
ZXREZWZhdWx0KCkucGVyZm9ybVNlYXJjaCh3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LCBmdW5jdGlv
bigpIHt9KTsKICAgICB9LApAQCAtMzA0LDI1ICszMDAsMTAgQEAgV2ViSW5zcGVjdG9yLkVsZW1l
bnRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKCFub2RlKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBpZiAoIXRoaXMuX3NlYXJjaFJlc3VsdHMu
bGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4
ID0gMDsKLQotICAgICAgICAgICAgICAgIC8vIE9ubHkgY2hhbmdlIHRoZSBmb2N1c2VkRE9NTm9k
ZSBpZiB0aGUgc2VhcmNoIHdhcyBtYW51YWxseSBwZXJmb3JtZWQsIGJlY2F1c2UKLSAgICAgICAg
ICAgICAgICAvLyB0aGUgc2VhcmNoIG1heSBoYXZlIGJlZW4gcGVyZm9ybWVkIHByb2dyYW1tYXRp
Y2FsbHkgYW5kIHdlIHdvdWxkbid0IHdhbnQgdG8KLSAgICAgICAgICAgICAgICAvLyBjaGFuZ2Ug
dGhlIGN1cnJlbnQgZm9jdXNlZERPTU5vZGUuCi0gICAgICAgICAgICAgICAgaWYgKFdlYkluc3Bl
Y3Rvci5jdXJyZW50Rm9jdXNFbGVtZW50ID09PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2Vh
cmNoIikpCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNlZERPTU5vZGUgPSBub2RlOwot
ICAgICAgICAgICAgfQotCisgICAgICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5k
ZXggPSAwOwogICAgICAgICAgICAgdGhpcy5fc2VhcmNoUmVzdWx0cy5wdXNoKG5vZGUpOwotCi0g
ICAgICAgICAgICAvLyBIaWdobGlnaHQgdGhlIHRyZWUgZWxlbWVudCB0byBzaG93IGl0IG1hdGNo
ZWQgdGhlIHNlYXJjaC4KLSAgICAgICAgICAgIC8vIEZJWE1FOiBoaWdobGlnaHQgdGhlIHN1YnN0
cmluZ3MgaW4gdGV4dCBub2RlcyBhbmQgYXR0cmlidXRlcy4KLSAgICAgICAgICAgIHZhciB0cmVl
RWxlbWVudCA9IHRoaXMudHJlZU91dGxpbmUuZmluZFRyZWVFbGVtZW50KG5vZGUpOwotICAgICAg
ICAgICAgaWYgKHRyZWVFbGVtZW50KQotICAgICAgICAgICAgICAgIHRyZWVFbGVtZW50LmhpZ2hs
aWdodGVkID0gdHJ1ZTsKICAgICAgICAgfQotCisgICAgICAgIHRoaXMuX2hpZ2hsaWdodEN1cnJl
bnRTZWFyY2hSZXN1bHQoKTsKICAgICAgICAgdGhpcy5fdXBkYXRlTWF0Y2hlc0NvdW50U29vbigp
OwogICAgIH0sCiAKQEAgLTMzMCwxOCArMzExLDQxIEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1Bh
bmVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fc2VhcmNoUmVzdWx0
cyB8fCAhdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgpCiAgICAgICAgICAgICByZXR1cm47CisK
ICAgICAgICAgaWYgKCsrdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID49IHRoaXMuX3Nl
YXJjaFJlc3VsdHMubGVuZ3RoKQogICAgICAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3Vs
dEluZGV4ID0gMDsKLSAgICAgICAgdGhpcy5mb2N1c2VkRE9NTm9kZSA9IHRoaXMuX3NlYXJjaFJl
c3VsdHNbdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4XTsKKyAgICAgICAgdGhpcy5faGln
aGxpZ2h0Q3VycmVudFNlYXJjaFJlc3VsdCgpOwogICAgIH0sCiAKICAgICBqdW1wVG9QcmV2aW91
c1NlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9zZWFy
Y2hSZXN1bHRzIHx8ICF0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCkKICAgICAgICAgICAgIHJl
dHVybjsKKwogICAgICAgICBpZiAoLS10aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPCAw
KQogICAgICAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID0gKHRoaXMuX3Nl
YXJjaFJlc3VsdHMubGVuZ3RoIC0gMSk7Ci0gICAgICAgIHRoaXMuZm9jdXNlZERPTU5vZGUgPSB0
aGlzLl9zZWFyY2hSZXN1bHRzW3RoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleF07CisgICAg
ICAgIHRoaXMuX2hpZ2hsaWdodEN1cnJlbnRTZWFyY2hSZXN1bHQoKTsKKyAgICB9LAorCisgICAg
X2hpZ2hsaWdodEN1cnJlbnRTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IHRoaXMuX2hpZGVTZWFyY2hIaWdobGlnaHRzKCk7CisgICAgICAgIHZhciBub2RlID0gdGhpcy5f
c2VhcmNoUmVzdWx0c1t0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXhdOworICAgICAgICB2
YXIgdHJlZUVsZW1lbnQgPSB0aGlzLnRyZWVPdXRsaW5lLmZpbmRUcmVlRWxlbWVudChub2RlKTsK
KyAgICAgICAgaWYgKHRyZWVFbGVtZW50KSB7CisgICAgICAgICAgICB0cmVlRWxlbWVudC5oaWdo
bGlnaHRTZWFyY2hSZXN1bHQodGhpcy5fc2VhcmNoUXVlcnkpOworICAgICAgICAgICAgdHJlZUVs
ZW1lbnQucmV2ZWFsKCk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgX2hpZGVTZWFyY2hIaWdo
bGlnaHRzOiBmdW5jdGlvbihub2RlKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IHRo
aXMuX3NlYXJjaFJlc3VsdHMgJiYgaSA8IHRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgICAgIHZhciBub2RlID0gdGhpcy5fc2VhcmNoUmVzdWx0c1tpXTsKKyAgICAg
ICAgICAgIHZhciB0cmVlRWxlbWVudCA9IHRoaXMudHJlZU91dGxpbmUuZmluZFRyZWVFbGVtZW50
KG5vZGUpOworICAgICAgICAgICAgaWYgKHRyZWVFbGVtZW50KQorICAgICAgICAgICAgICAgIHRy
ZWVFbGVtZW50LmhpZ2hsaWdodFNlYXJjaFJlc3VsdChudWxsKTsKKyAgICAgICAgfQogICAgIH0s
CiAKICAgICByZW5hbWVTZWxlY3RvcjogZnVuY3Rpb24ob2xkSWRlbnRpZmllciwgbmV3SWRlbnRp
Zmllciwgb2xkU2VsZWN0b3IsIG5ld1NlbGVjdG9yKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwppbmRleCA0YThkYWUwLi4yY2MxZmM0
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0
bGluZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0
bGluZS5qcwpAQCAtMjk2LDI3ICsyOTYsMTcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVs
ZW1lbnQgPSBmdW5jdGlvbihub2RlKQogCiAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3Qu
bm9kZVR5cGUgPT0gTm9kZS5FTEVNRU5UX05PREUpCiAgICAgICAgIHRoaXMuX2NhbkFkZEF0dHJp
YnV0ZXMgPSB0cnVlOworICAgIHRoaXMuX3NlYXJjaFF1ZXJ5ID0gbnVsbDsKIH0KIAogV2ViSW5z
cGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGdldCBoaWdobGln
aHRlZCgpCisgICAgaGlnaGxpZ2h0U2VhcmNoUmVzdWx0OiBmdW5jdGlvbihzZWFyY2hRdWVyeSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9oaWdobGlnaHRlZDsKLSAgICB9LAotCi0gICAg
c2V0IGhpZ2hsaWdodGVkKHgpCi0gICAgewotICAgICAgICBpZiAodGhpcy5faGlnaGxpZ2h0ZWQg
PT09IHgpCisgICAgICAgIGlmICh0aGlzLl9zZWFyY2hRdWVyeSA9PT0gc2VhcmNoUXVlcnkpCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5faGlnaGxpZ2h0ZWQgPSB4OwotCi0g
ICAgICAgIGlmICh0aGlzLmxpc3RJdGVtRWxlbWVudCkgewotICAgICAgICAgICAgaWYgKHgpCi0g
ICAgICAgICAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuYWRkU3R5bGVDbGFzcygiaGlnaGxp
Z2h0ZWQiKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLmxpc3RJdGVt
RWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJoaWdobGlnaHRlZCIpOwotICAgICAgICB9CisgICAg
ICAgIHRoaXMuX3NlYXJjaFF1ZXJ5ID0gc2VhcmNoUXVlcnk7CisgICAgICAgIHRoaXMudXBkYXRl
VGl0bGUoKTsKICAgICB9LAogCiAgICAgZ2V0IGhvdmVyZWQoKQpAQCAtMzg2LDkgKzM3Niw2IEBA
IFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICB7CiAg
ICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIs
IHRoaXMub25tb3VzZWRvd24uYmluZCh0aGlzKSwgZmFsc2UpOwogCi0gICAgICAgIGlmICh0aGlz
Ll9oaWdobGlnaHRlZCkKLSAgICAgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LmFkZFN0eWxl
Q2xhc3MoImhpZ2hsaWdodGVkIik7Ci0KICAgICAgICAgaWYgKHRoaXMuX2hvdmVyZWQpIHsKICAg
ICAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uKCk7CiAgICAgICAgICAgICB0aGlzLmxpc3RJ
dGVtRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJob3ZlcmVkIik7CkBAIC04ODQsNiArODcxLDcgQEAg
V2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgZGVsZXRlIHNlbGYuc2VsZWN0aW9uRWxlbWVudDsKICAgICAgICAgICAgIHNlbGYudXBkYXRl
U2VsZWN0aW9uKCk7CiAgICAgICAgICAgICBzZWxmLl9wcmV2ZW50Rm9sbG93aW5nTGlua3NPbkRv
dWJsZUNsaWNrKCk7CisgICAgICAgICAgICBzZWxmLl9oaWdobGlnaHRTZWFyY2hSZXN1bHQoKTsK
ICAgICAgICAgfTsKIAogICAgICAgICAvLyBUT0RPOiBSZXBsYWNlIHdpdGggSW5qZWN0ZWRTY3Jp
cHRBY2Nlc3MuZ2V0QmFzaWNQcm9wZXJ0aWVzKG9iaiwgW25hbWVzXSkuCkBAIC0xMDc3LDYgKzEw
NjUsMjMgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewog
ICAgIF9jb3B5SFRNTDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgSW5zcGVjdG9yQmFja2Vu
ZC5jb3B5Tm9kZSh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmlkKTsKKyAgICB9LAorCisgICAgX2hp
Z2hsaWdodFNlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlz
Ll9zZWFyY2hRdWVyeSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdmFyIHRleHQgPSB0
aGlzLmxpc3RJdGVtRWxlbWVudC50ZXh0Q29udGVudDsKKyAgICAgICAgdmFyIHJlZ2V4T2JqZWN0
ID0gY3JlYXRlU2VhcmNoUmVnZXgodGhpcy5fc2VhcmNoUXVlcnkpOworCisgICAgICAgIHZhciBv
ZmZzZXQgPSAwOworICAgICAgICB2YXIgbWF0Y2ggPSByZWdleE9iamVjdC5leGVjKHRleHQpOwor
ICAgICAgICB3aGlsZSAobWF0Y2gpIHsKKyAgICAgICAgICAgIGhpZ2hsaWdodFNlYXJjaFJlc3Vs
dCh0aGlzLmxpc3RJdGVtRWxlbWVudCwgb2Zmc2V0ICsgbWF0Y2guaW5kZXgsIG1hdGNoWzBdLmxl
bmd0aCk7CisgICAgICAgICAgICBvZmZzZXQgKz0gbWF0Y2guaW5kZXggKyAxOworICAgICAgICAg
ICAgdGV4dCA9IHRleHQuc3Vic3RyaW5nKG1hdGNoLmluZGV4ICsgMSk7CisgICAgICAgICAgICBt
YXRjaCA9IHJlZ2V4T2JqZWN0LmV4ZWModGV4dCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdC5qcyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdC5qcwppbmRleCA5NTg2
N2M0Li4zMzM1NzEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5q
ZWN0ZWRTY3JpcHQuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVk
U2NyaXB0LmpzCkBAIC02NzcsNiArNjc3LDEyIEBAIEluamVjdGVkU2NyaXB0LmFkZEluc3BlY3Rl
ZE5vZGUgPSBmdW5jdGlvbihub2RlSWQpCiAKIEluamVjdGVkU2NyaXB0LnBlcmZvcm1TZWFyY2gg
PSBmdW5jdGlvbih3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5KQogeworICAgIC8vIEZJWE1FOiBGZXcg
dGhpbmdzIGFyZSBtaXNzaW5nIGhlcmU6CisgICAgLy8gMSkgU2VhcmNoIHdvcmtzIHdpdGggbm9k
ZSBncmFudWxhcml0eSAtIG51bWJlciBvZiBtYXRjaGVzIHdpdGhpbiBub2RlIGlzIG5vdCBjYWxj
dWxhdGVkLgorICAgIC8vIDIpIFNlYXJjaCBkb2VzIG5vdCB3b3JrIG91dHNpZGUgbWFpbiBkb2N1
bWVudHMnIGRvbWFpbiAtIHdlIG5lZWQgdG8gdXNlIHNwZWNpZmljIEluamVjdGVkU2NyaXB0IGlu
c3RhbmNlcworICAgIC8vICAgIGZvciBvdGhlciBkb21haW5zLgorICAgIC8vIDMpIFRoZXJlIGlz
IG5vIG5lZWQgdG8gcHVzaCBhbGwgc2VhcmNoIHJlc3VsdHMgdG8gdGhlIGZyb250LWVuZCBhdCBh
IHRpbWUsIHB1c2hpbmcgbmV4dCAvIHByZXZpb3VzIHJlc3VsdAorICAgIC8vICAgIGlzIHN1ZmZp
Y2llbnQuCiAgICAgdmFyIHRhZ05hbWVRdWVyeSA9IHdoaXRlc3BhY2VUcmltbWVkUXVlcnk7CiAg
ICAgdmFyIGF0dHJpYnV0ZU5hbWVRdWVyeSA9IHdoaXRlc3BhY2VUcmltbWVkUXVlcnk7CiAgICAg
dmFyIHN0YXJ0VGFnRm91bmQgPSAodGFnTmFtZVF1ZXJ5LmluZGV4T2YoIjwiKSA9PT0gMCk7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMKaW5kZXggMzQzMTdhMy4u
NTFjOWY0YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZy
YW1lLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcwpA
QCAtMTk2LDE0ICsxOTYsNyBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlID0g
ewogICAgICAgICB2YXIgcmFuZ2VzID0gW107CiAKICAgICAgICAgLy8gRmlyc3QgZG8gY2FzZS1p
bnNlbnNpdGl2ZSBzZWFyY2guCi0gICAgICAgIHZhciByZWdleCA9ICIiOwotICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHF1ZXJ5Lmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgY2hh
ciA9IHF1ZXJ5LmNoYXJBdChpKTsKLSAgICAgICAgICAgIGlmIChjaGFyID09PSAiXSIpCi0gICAg
ICAgICAgICAgICAgY2hhciA9ICJcXF0iOwotICAgICAgICAgICAgcmVnZXggKz0gIlsiICsgY2hh
ciArICJdIjsKLSAgICAgICAgfQotICAgICAgICB2YXIgcmVnZXhPYmplY3QgPSBuZXcgUmVnRXhw
KHJlZ2V4LCAiaSIpOworICAgICAgICB2YXIgcmVnZXhPYmplY3QgPSBjcmVhdGVTZWFyY2hSZWdl
eChxdWVyeSk7CiAgICAgICAgIHRoaXMuX2NvbGxlY3RSZWdleE1hdGNoZXMocmVnZXhPYmplY3Qs
IHJhbmdlcyk7CiAKICAgICAgICAgLy8gVGhlbiB0cnkgcmVnZXggc2VhcmNoIGlmIHVzZXIga25v
d3MgdGhlIC8gLyBoaW50LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1RleHRWaWV3ZXIuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dFZpZXdlci5q
cwppbmRleCA3YTk3NDlkLi4wMWQ4ZDQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvVGV4dFZpZXdlci5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
VGV4dFZpZXdlci5qcwpAQCAtMzI3LDcgKzMyNyw3IEBAIFdlYkluc3BlY3Rvci5UZXh0Vmlld2Vy
LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoIWhpZ2hsaWdodGVyU3RhdGUpIHsKICAgICAg
ICAgICAgIGlmICh0aGlzLl9yYW5nZVRvTWFyayAmJiB0aGlzLl9yYW5nZVRvTWFyay5zdGFydExp
bmUgPT09IGxpbmVOdW1iZXIpCi0gICAgICAgICAgICAgICAgdGhpcy5fbWFya1JhbmdlKGVsZW1l
bnQsIGxpbmUsIHRoaXMuX3JhbmdlVG9NYXJrLnN0YXJ0Q29sdW1uLCB0aGlzLl9yYW5nZVRvTWFy
ay5lbmRDb2x1bW4pOworICAgICAgICAgICAgICAgIGhpZ2hsaWdodFNlYXJjaFJlc3VsdChlbGVt
ZW50LCB0aGlzLl9yYW5nZVRvTWFyay5zdGFydENvbHVtbiwgdGhpcy5fcmFuZ2VUb01hcmsuZW5k
Q29sdW1uIC0gdGhpcy5fcmFuZ2VUb01hcmsuc3RhcnRDb2x1bW4pOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKQEAgLTM1Niw3ICszNTYsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dFZp
ZXdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmIChwbGFpblRleHRTdGFydCAhPT0gLTEpCiAg
ICAgICAgICAgICB0aGlzLl9hcHBlbmRUZXh0Tm9kZShlbGVtZW50LCBsaW5lLnN1YnN0cmluZyhw
bGFpblRleHRTdGFydCwgbGluZS5sZW5ndGgpKTsKICAgICAgICAgaWYgKHRoaXMuX3JhbmdlVG9N
YXJrICYmIHRoaXMuX3JhbmdlVG9NYXJrLnN0YXJ0TGluZSA9PT0gbGluZU51bWJlcikKLSAgICAg
ICAgICAgIHRoaXMuX21hcmtSYW5nZShlbGVtZW50LCBsaW5lLCB0aGlzLl9yYW5nZVRvTWFyay5z
dGFydENvbHVtbiwgdGhpcy5fcmFuZ2VUb01hcmsuZW5kQ29sdW1uKTsKKyAgICAgICAgICAgIGhp
Z2hsaWdodFNlYXJjaFJlc3VsdChlbGVtZW50LCB0aGlzLl9yYW5nZVRvTWFyay5zdGFydENvbHVt
biwgdGhpcy5fcmFuZ2VUb01hcmsuZW5kQ29sdW1uIC0gdGhpcy5fcmFuZ2VUb01hcmsuc3RhcnRD
b2x1bW4pOwogICAgICAgICBpZiAobGluZVJvdy5kZWNvcmF0aW9uc0VsZW1lbnQpCiAgICAgICAg
ICAgICBlbGVtZW50LmFwcGVuZENoaWxkKGxpbmVSb3cuZGVjb3JhdGlvbnNFbGVtZW50KTsKICAg
ICB9LApAQCAtNTMxLDQ4ICs1MzEsNiBAQCBXZWJJbnNwZWN0b3IuVGV4dFZpZXdlci5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuY29tcGxldGVVUkwodGhpcy5fdXJs
LCBocmVmVmFsdWUpOwogICAgIH0sCiAKLSAgICBfbWFya1JhbmdlOiBmdW5jdGlvbihlbGVtZW50
LCBsaW5lVGV4dCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKLSAgICB7Ci0gICAgICAgIHZhciBt
YXJrTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICAgICAgbWFya05v
ZGUuY2xhc3NOYW1lID0gIndlYmtpdC1tYXJrdXAiOwotICAgICAgICBtYXJrTm9kZS50ZXh0Q29u
dGVudCA9IGxpbmVUZXh0LnN1YnN0cmluZyhzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKLQotICAg
ICAgICB2YXIgbWFya0xlbmd0aCA9IGVuZE9mZnNldCAtIHN0YXJ0T2Zmc2V0OwotICAgICAgICB2
YXIgYm91bmRhcnkgPSBlbGVtZW50LnJhbmdlQm91bmRhcnlGb3JPZmZzZXQoc3RhcnRPZmZzZXQp
OwotICAgICAgICB2YXIgdGV4dE5vZGUgPSBib3VuZGFyeS5jb250YWluZXI7Ci0gICAgICAgIHZh
ciB0ZXh0ID0gdGV4dE5vZGUudGV4dENvbnRlbnQ7Ci0KLSAgICAgICAgaWYgKGJvdW5kYXJ5Lm9m
ZnNldCArIG1hcmtMZW5ndGggPCB0ZXh0Lmxlbmd0aCkgewotICAgICAgICAgICAgLy8gU2VsZWN0
aW9uIGJlbG9uZyB0byBhIHNpbmdsZSBzcGxpdCBtb2RlLgotICAgICAgICAgICAgdGV4dE5vZGUu
dGV4dENvbnRlbnQgPSB0ZXh0LnN1YnN0cmluZyhib3VuZGFyeS5vZmZzZXQgKyBtYXJrTGVuZ3Ro
KTsKLSAgICAgICAgICAgIHRleHROb2RlLnBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKG1hcmtO
b2RlLCB0ZXh0Tm9kZSk7Ci0gICAgICAgICAgICB2YXIgcHJlZml4Tm9kZSA9IGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKHRleHQuc3Vic3RyaW5nKDAsIGJvdW5kYXJ5Lm9mZnNldCkpOwotICAgICAg
ICAgICAgdGV4dE5vZGUucGFyZW50RWxlbWVudC5pbnNlcnRCZWZvcmUocHJlZml4Tm9kZSwgbWFy
a05vZGUpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHBh
cmVudEVsZW1lbnQgPSB0ZXh0Tm9kZS5wYXJlbnRFbGVtZW50OwotICAgICAgICB2YXIgYW5jaG9y
RWxlbWVudCA9IHRleHROb2RlLm5leHRTaWJsaW5nOwotCi0gICAgICAgIG1hcmtMZW5ndGggLT0g
dGV4dC5sZW5ndGggLSBib3VuZGFyeS5vZmZzZXQ7Ci0gICAgICAgIHRleHROb2RlLnRleHRDb250
ZW50ID0gdGV4dC5zdWJzdHJpbmcoMCwgYm91bmRhcnkub2Zmc2V0KTsKLSAgICAgICAgdGV4dE5v
ZGUgPSB0ZXh0Tm9kZS50cmF2ZXJzZU5leHRUZXh0Tm9kZShlbGVtZW50KTsKLQotICAgICAgICB3
aGlsZSAodGV4dE5vZGUpIHsKLSAgICAgICAgICAgIHZhciB0ZXh0ID0gdGV4dE5vZGUudGV4dENv
bnRlbnQ7Ci0gICAgICAgICAgICBpZiAobWFya0xlbmd0aCA8IHRleHQubGVuZ3RoKSB7Ci0gICAg
ICAgICAgICAgICAgdGV4dE5vZGUudGV4dENvbnRlbnQgPSB0ZXh0LnN1YnN0cmluZyhtYXJrTGVu
Z3RoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgbWFya0xlbmd0aCAtPSB0ZXh0Lmxlbmd0aDsKLSAgICAgICAgICAgIHRleHROb2RlLnRleHRD
b250ZW50ID0gIiI7Ci0gICAgICAgICAgICB0ZXh0Tm9kZSA9IHRleHROb2RlLnRyYXZlcnNlTmV4
dFRleHROb2RlKGVsZW1lbnQpOwotICAgICAgICB9Ci0KLSAgICAgICAgcGFyZW50RWxlbWVudC5p
bnNlcnRCZWZvcmUobWFya05vZGUsIGFuY2hvckVsZW1lbnQpOwotICAgIH0sCi0KICAgICByZXNp
emU6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3JlcGFpbnRBbGwoKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0Vmlld2VyLmNzcyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0Vmlld2VyLmNzcwppbmRleCBhZjA3OWJjLi4zODZh
OWQ3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdGV4dFZpZXdlci5j
c3MKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RleHRWaWV3ZXIuY3NzCkBAIC0x
MzAsMTMgKzEzMCwxNCBAQAogICAgIG91dGxpbmU6IDFweCBzb2xpZCByZ2IoNjQsIDExNSwgMjQ0
KTsKIH0KIAotLndlYmtpdC1tYXJrdXAgeworLndlYmtpdC1zZWFyY2gtcmVzdWx0IHsKICAgICAt
d2Via2l0LWJvcmRlci1yYWRpdXM6IDRweDsKLSAgICBwYWRkaW5nOiAycHggMXB4IDJweCAzcHg7
Ci0gICAgbWFyZ2luLWxlZnQ6IC00cHg7Ci0gICAgbWFyZ2luLXRvcDogLTJweDsKKyAgICBwYWRk
aW5nOiAycHggMnB4IDJweCAzcHg7CisgICAgbWFyZ2luOiAtMnB4IC0ycHggLTJweCAtM3B4Owor
ICAgIG9wYWNpdHk6IDAuODsKICAgICAtd2Via2l0LWJveC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwg
LjUpIDNweCAzcHggNHB4OwogICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyNDEsIDIzNCwgMCk7
CisgICAgY29sb3I6IGJsYWNrOwogfQogCiAud2Via2l0LWhpZ2hsaWdodGVkLWxpbmUgLndlYmtp
dC1saW5lLWNvbnRlbnQgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L3V0aWxpdGllcy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMK
aW5kZXggNjBkM2I0NS4uMDg3N2EyYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL3V0aWxpdGllcy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdXRp
bGl0aWVzLmpzCkBAIC04NTAsMyArODUwLDU5IEBAIGZ1bmN0aW9uIGlzRW50ZXJLZXkoZXZlbnQp
IHsKICAgICAvLyBDaGVjayBpZiBpbiBJTUUuCiAgICAgcmV0dXJuIGV2ZW50LmtleUNvZGUgIT09
IDIyOSAmJiBldmVudC5rZXlJZGVudGlmaWVyID09PSAiRW50ZXIiOwogfQorCisKK2Z1bmN0aW9u
IGhpZ2hsaWdodFNlYXJjaFJlc3VsdChlbGVtZW50LCBvZmZzZXQsIGxlbmd0aCkKK3sKKyAgICB2
YXIgbGluZVRleHQgPSBlbGVtZW50LnRleHRDb250ZW50OworICAgIHZhciBlbmRPZmZzZXQgPSBv
ZmZzZXQgKyBsZW5ndGg7CisgICAgdmFyIGhpZ2hsaWdodE5vZGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJzcGFuIik7CisgICAgaGlnaGxpZ2h0Tm9kZS5jbGFzc05hbWUgPSAid2Via2l0LXNl
YXJjaC1yZXN1bHQiOworICAgIGhpZ2hsaWdodE5vZGUudGV4dENvbnRlbnQgPSBsaW5lVGV4dC5z
dWJzdHJpbmcob2Zmc2V0LCBlbmRPZmZzZXQpOworCisgICAgdmFyIGJvdW5kYXJ5ID0gZWxlbWVu
dC5yYW5nZUJvdW5kYXJ5Rm9yT2Zmc2V0KG9mZnNldCk7CisgICAgdmFyIHRleHROb2RlID0gYm91
bmRhcnkuY29udGFpbmVyOworICAgIHZhciB0ZXh0ID0gdGV4dE5vZGUudGV4dENvbnRlbnQ7CisK
KyAgICBpZiAoYm91bmRhcnkub2Zmc2V0ICsgbGVuZ3RoIDwgdGV4dC5sZW5ndGgpIHsKKyAgICAg
ICAgLy8gU2VsZWN0aW9uIGJlbG9uZyB0byBhIHNpbmdsZSBzcGxpdCBtb2RlLgorICAgICAgICB0
ZXh0Tm9kZS50ZXh0Q29udGVudCA9IHRleHQuc3Vic3RyaW5nKGJvdW5kYXJ5Lm9mZnNldCArIGxl
bmd0aCk7CisgICAgICAgIHRleHROb2RlLnBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKGhpZ2hs
aWdodE5vZGUsIHRleHROb2RlKTsKKyAgICAgICAgdmFyIHByZWZpeE5vZGUgPSBkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSh0ZXh0LnN1YnN0cmluZygwLCBib3VuZGFyeS5vZmZzZXQpKTsKKyAgICAg
ICAgdGV4dE5vZGUucGFyZW50RWxlbWVudC5pbnNlcnRCZWZvcmUocHJlZml4Tm9kZSwgaGlnaGxp
Z2h0Tm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgcGFyZW50RWxlbWVu
dCA9IHRleHROb2RlLnBhcmVudEVsZW1lbnQ7CisgICAgdmFyIGFuY2hvckVsZW1lbnQgPSB0ZXh0
Tm9kZS5uZXh0U2libGluZzsKKworICAgIGxlbmd0aCAtPSB0ZXh0Lmxlbmd0aCAtIGJvdW5kYXJ5
Lm9mZnNldDsKKyAgICB0ZXh0Tm9kZS50ZXh0Q29udGVudCA9IHRleHQuc3Vic3RyaW5nKDAsIGJv
dW5kYXJ5Lm9mZnNldCk7CisgICAgdGV4dE5vZGUgPSB0ZXh0Tm9kZS50cmF2ZXJzZU5leHRUZXh0
Tm9kZShlbGVtZW50KTsKKworICAgIHdoaWxlICh0ZXh0Tm9kZSkgeworICAgICAgICB2YXIgdGV4
dCA9IHRleHROb2RlLnRleHRDb250ZW50OworICAgICAgICBpZiAobGVuZ3RoIDwgdGV4dC5sZW5n
dGgpIHsKKyAgICAgICAgICAgIHRleHROb2RlLnRleHRDb250ZW50ID0gdGV4dC5zdWJzdHJpbmco
bGVuZ3RoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgbGVuZ3Ro
IC09IHRleHQubGVuZ3RoOworICAgICAgICB0ZXh0Tm9kZS50ZXh0Q29udGVudCA9ICIiOworICAg
ICAgICB0ZXh0Tm9kZSA9IHRleHROb2RlLnRyYXZlcnNlTmV4dFRleHROb2RlKGVsZW1lbnQpOwor
ICAgIH0KKworICAgIHBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKGhpZ2hsaWdodE5vZGUsIGFu
Y2hvckVsZW1lbnQpOworfQorCitmdW5jdGlvbiBjcmVhdGVTZWFyY2hSZWdleChxdWVyeSkKK3sK
KyAgICB2YXIgcmVnZXggPSAiIjsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXJ5Lmxlbmd0
aDsgKytpKSB7CisgICAgICAgIHZhciBjaGFyID0gcXVlcnkuY2hhckF0KGkpOworICAgICAgICBp
ZiAoY2hhciA9PT0gIl0iKQorICAgICAgICAgICAgY2hhciA9ICJcXF0iOworICAgICAgICByZWdl
eCArPSAiWyIgKyBjaGFyICsgIl0iOworICAgIH0KKyAgICByZXR1cm4gbmV3IFJlZ0V4cChyZWdl
eCwgImkiKTsKK30K
</data>
<flag name="review"
          id="31457"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>