<?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>31629</bug_id>
          
          <creation_ts>2009-11-18 07:50:23 -0800</creation_ts>
          <short_desc>Web Inspector: Prevent styles information from being queries twice for each update, get rid of metrics and properties sidebars&apos; flickering.</short_desc>
          <delta_ts>2009-11-18 10:27:03 -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>164567</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-18 07:50:23 -0800</bug_when>
    <thetext>This makes styles and metrics panes aware of each other, but results in a solid performance improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164569</commentid>
    <comment_count>1</comment_count>
      <attachid>43434</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-18 07:51:34 -0800</bug_when>
    <thetext>Created attachment 43434
[PATCH] proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164572</commentid>
    <comment_count>2</comment_count>
      <attachid>43434</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-11-18 08:13:02 -0800</bug_when>
    <thetext>Comment on attachment 43434
[PATCH] proposed fix

I have some small nits.

&gt; +        Web Inspector: Prevent styles information from being queries twice
&gt; +        for each update, get rid of metrics and properties sidebars&apos; flickering.

typo: s/queries/queried/;

&gt;              if (name === &quot;content&quot;) {
&gt; -                var width = style.width.replace(/px$/, &quot;&quot;);
&gt; +                var width = computedStyle.width.replace(/px$/, &quot;&quot;);

This is my first time coming across this code. Is the width coming from computedStyle guaranteed to be &quot;px&quot;? That seems the case from the older code. This might be a good spot to add a comment. If it is not just &quot;px&quot; then using something like parseInt(..., 10) would strip any unit suffix (em, px, etc.). However, this isn&apos;t really a candidate for optimization so it could just be left alone.

&gt; +
&gt; +        // Update slave metrics pane too.
&gt; +        this._metricsPane.update(node);
&gt; +    },
&gt; +
&gt; +    set metricsPane(metricsPane)
&gt; +    {
&gt; +        this._metricsPane = metricsPane;
&gt;      },

These are the only mentions of _metricsPane. If a metricsPane has not been set then the above line would fail (as there is no check if this._metricsPane exists). Obviously that will never be the case because there is only one StylesSidebarPane =/. Being the last line in the method a silent fail wouldn&apos;t be too harmful. Still, I think it would be safer to pass the metricsPane into the constructor, or do an if check before calling update on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164585</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-18 08:38:55 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; 
&gt; typo: s/queries/queried/;
&gt; 

Fixed.

&gt; &gt;              if (name === &quot;content&quot;) {
&gt; &gt; -                var width = style.width.replace(/px$/, &quot;&quot;);
&gt; &gt; +                var width = computedStyle.width.replace(/px$/, &quot;&quot;);
&gt; 
&gt; This is my first time coming across this code. Is the width coming from
&gt; computedStyle guaranteed to be &quot;px&quot;? That seems the case from the older code.
&gt; This might be a good spot to add a comment. If it is not just &quot;px&quot; then using
&gt; something like parseInt(..., 10) would strip any unit suffix (em, px, etc.).
&gt; However, this isn&apos;t really a candidate for optimization so it could just be
&gt; left alone.
&gt; 

Yeah, it is px.

&gt; &gt; +
&gt; &gt; +        // Update slave metrics pane too.
&gt; &gt; +        this._metricsPane.update(node);
&gt; &gt; +    },
&gt; &gt; +
&gt; &gt; +    set metricsPane(metricsPane)
&gt; &gt; +    {
&gt; &gt; +        this._metricsPane = metricsPane;
&gt; &gt;      },
&gt; 
&gt; These are the only mentions of _metricsPane. If a metricsPane has not been set
&gt; then the above line would fail (as there is no check if this._metricsPane
&gt; exists). Obviously that will never be the case because there is only one
&gt; StylesSidebarPane =/. Being the last line in the method a silent fail wouldn&apos;t
&gt; be too harmful. Still, I think it would be safer to pass the metricsPane into
&gt; the constructor, or do an if check before calling update on it.

I agree and that is what i did to MetricsPane. The thing is that dependency is bi-directional :( and I can&apos;t pass both into the constructors. I don&apos;t want a check here, since having no metricsPane means that we are in the illegal app state. I&apos;d much more appreciate real time exception with console entry in this case...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164604</commentid>
    <comment_count>4</comment_count>
      <attachid>43434</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-11-18 09:45:04 -0800</bug_when>
    <thetext>Comment on attachment 43434
[PATCH] proposed fix


&gt; +                 var height = computedStyle.height.replace(/px$/, &quot;&quot;);

Joe might be on to something, we could use parseInt() here and it would be faster than the RegEx.


&gt; -        body.removeChildren();
&gt; -
&gt; -        this.sections = [];
&gt; -
&gt; -        if (!node)
&gt; +        if (!node) {
&gt; +            body.removeChildren();
&gt; +            this.sections = [];
&gt;              return;
&gt; +        }

Why do we not always need to remove the children and sections? Does later code handle them existing?


&gt;          }
&gt; -
&gt;          InjectedScriptAccess.getStyles(node.id, !Preferences.showUserAgentStyles, callback);

I prefer blank lines in places like this. Can you keep it?

I don&apos;t clearly see where this prevents two style queries. Wouldn&apos;t it be better to have the ElementsPanel broker these updates so there isn&apos;t a bi-directional dependency?

But seems fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164615</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-18 10:06:47 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 43434 [details])
&gt; 
&gt; &gt; +                 var height = computedStyle.height.replace(/px$/, &quot;&quot;);
&gt; 
&gt; Joe might be on to something, we could use parseInt() here and it would be
&gt; faster than the RegEx.
&gt; 

Ok. let me try that.

&gt; &gt; -        body.removeChildren();
&gt; &gt; -
&gt; &gt; -        this.sections = [];
&gt; &gt; -
&gt; &gt; -        if (!node)
&gt; &gt; +        if (!node) {
&gt; &gt; +            body.removeChildren();
&gt; &gt; +            this.sections = [];
&gt; &gt;              return;
&gt; &gt; +        }
&gt; 
&gt; Why do we not always need to remove the children and sections? Does later code
&gt; handle them existing?
&gt; 

Yes, this is only for the case when we navigate off the node that has data (comments, etc.). Later code handles it Ok.

&gt; 
&gt; &gt;          }
&gt; &gt; -
&gt; &gt;          InjectedScriptAccess.getStyles(node.id, !Preferences.showUserAgentStyles, callback);
&gt; 
&gt; I prefer blank lines in places like this. Can you keep it?
&gt; 

Ok.

&gt; I don&apos;t clearly see where this prevents two style queries. Wouldn&apos;t it be
&gt; better to have the ElementsPanel broker these updates so there isn&apos;t a
&gt; bi-directional dependency?
&gt; 
&gt; But seems fine.

Of course you are right and I should make ElementsPanel broker it. It was just me being lazy. This one prevents two queries since metrics panel does not do its own one anymore. Let me actually split this change into two: first would remove flickering and latter one will make elements panel manage the updates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164619</commentid>
    <comment_count>6</comment_count>
      <attachid>43439</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-18 10:18:32 -0800</bug_when>
    <thetext>Created attachment 43439
[PATCH] Flickering only fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164620</commentid>
    <comment_count>7</comment_count>
      <attachid>43439</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-11-18 10:20:37 -0800</bug_when>
    <thetext>Comment on attachment 43439
[PATCH] Flickering only fix.

Thanks for splitting this out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164625</commentid>
    <comment_count>8</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-18 10:27:03 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/inspector/front-end/MetricsSidebarPane.js
	M	WebCore/inspector/front-end/PropertiesSidebarPane.js
Committed r51121</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43434</attachid>
            <date>2009-11-18 07:51:34 -0800</date>
            <delta_ts>2009-11-18 10:18:32 -0800</delta_ts>
            <desc>[PATCH] proposed fix</desc>
            <filename>styles_update</filename>
            <type>text/plain</type>
            <size>12769</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NTg0NDBlOS4uZTMxM2IyMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAwOS0xMS0xOCAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5
IEhhdGNoZXIuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHJldmVudCBzdHlsZXMgaW5mb3Jt
YXRpb24gZnJvbSBiZWluZyBxdWVyaWVzIHR3aWNlCisgICAgICAgIGZvciBlYWNoIHVwZGF0ZSwg
Z2V0IHJpZCBvZiBtZXRyaWNzIGFuZCBwcm9wZXJ0aWVzIHNpZGViYXJzJyBmbGlja2VyaW5nLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTYyOQor
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwudGhpcy50cmVlT3V0bGluZS5mb2N1c2VkTm9k
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLl9zdHlsZXNQYW5lRWRpdGVk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS51cGRhdGVT
dHlsZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTWV0cmljc1NpZGViYXJQYW5l
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZS51cGRhdGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUuZWRpdGluZ0Nh
bmNlbGxlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3Rv
dHlwZS5lZGl0aW5nQ29tbWl0dGVkLmNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5N
ZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBlLmVkaXRpbmdDb21taXR0ZWQpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvUHJvcGVydGllc1NpZGViYXJQYW5lLmpzOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlLnVwZGF0ZS5jYWxsYmFjayk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlLnVwZGF0ZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlLl91cGRh
dGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZS5z
ZXQgbWV0cmljc1BhbmUpOgorCiAyMDA5LTExLTE4ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFt
aW4ucG91bGFpbkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21h
bm4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5l
bC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCmluZGV4
IDk1OWVlZWYuLjg0NGU1NTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9FbGVtZW50c1BhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVt
ZW50c1BhbmVsLmpzCkBAIC01NCw3ICs1NCw2IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVs
ID0gZnVuY3Rpb24oKQogICAgICAgICAgICB0aGlzLnBhbmVsLnNpZGViYXJQYW5lc1twYW5lXS5u
ZWVkc1VwZGF0ZSA9IHRydWU7CiAKICAgICAgICAgdGhpcy5wYW5lbC51cGRhdGVTdHlsZXModHJ1
ZSk7Ci0gICAgICAgIHRoaXMucGFuZWwudXBkYXRlTWV0cmljcygpOwogICAgICAgICB0aGlzLnBh
bmVsLnVwZGF0ZVByb3BlcnRpZXMoKTsKICAgICAgICAgdGhpcy5wYW5lbC51cGRhdGVFdmVudExp
c3RlbmVycygpOwogCkBAIC03NSwxMiArNzQsMTMgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFu
ZWwgPSBmdW5jdGlvbigpCiAKICAgICB0aGlzLnNpZGViYXJQYW5lcyA9IHt9OwogICAgIHRoaXMu
c2lkZWJhclBhbmVzLnN0eWxlcyA9IG5ldyBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUo
KTsKLSAgICB0aGlzLnNpZGViYXJQYW5lcy5tZXRyaWNzID0gbmV3IFdlYkluc3BlY3Rvci5NZXRy
aWNzU2lkZWJhclBhbmUoKTsKKyAgICB0aGlzLnNpZGViYXJQYW5lcy5tZXRyaWNzID0gbmV3IFdl
Ykluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUodGhpcy5zaWRlYmFyUGFuZXMuc3R5bGVzKTsK
KyAgICB0aGlzLnNpZGViYXJQYW5lcy5zdHlsZXMubWV0cmljc1BhbmUgPSB0aGlzLnNpZGViYXJQ
YW5lcy5tZXRyaWNzOwogICAgIHRoaXMuc2lkZWJhclBhbmVzLnByb3BlcnRpZXMgPSBuZXcgV2Vi
SW5zcGVjdG9yLlByb3BlcnRpZXNTaWRlYmFyUGFuZSgpOwogICAgIHRoaXMuc2lkZWJhclBhbmVz
LmV2ZW50TGlzdGVuZXJzID0gbmV3IFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1NpZGViYXJQ
YW5lKCk7CiAKICAgICB0aGlzLnNpZGViYXJQYW5lcy5zdHlsZXMub25leHBhbmQgPSB0aGlzLnVw
ZGF0ZVN0eWxlcy5iaW5kKHRoaXMpOwotICAgIHRoaXMuc2lkZWJhclBhbmVzLm1ldHJpY3Mub25l
eHBhbmQgPSB0aGlzLnVwZGF0ZU1ldHJpY3MuYmluZCh0aGlzKTsKKyAgICB0aGlzLnNpZGViYXJQ
YW5lcy5tZXRyaWNzLm9uZXhwYW5kID0gdGhpcy51cGRhdGVTdHlsZXMuYmluZCh0aGlzKTsKICAg
ICB0aGlzLnNpZGViYXJQYW5lcy5wcm9wZXJ0aWVzLm9uZXhwYW5kID0gdGhpcy51cGRhdGVQcm9w
ZXJ0aWVzLmJpbmQodGhpcyk7CiAgICAgdGhpcy5zaWRlYmFyUGFuZXMuZXZlbnRMaXN0ZW5lcnMu
b25leHBhbmQgPSB0aGlzLnVwZGF0ZUV2ZW50TGlzdGVuZXJzLmJpbmQodGhpcyk7CiAKQEAgLTg4
LDcgKzg4LDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwgPSBmdW5jdGlvbigpCiAKICAg
ICB0aGlzLnNpZGViYXJQYW5lcy5zdHlsZXMuYWRkRXZlbnRMaXN0ZW5lcigic3R5bGUgZWRpdGVk
IiwgdGhpcy5fc3R5bGVzUGFuZUVkaXRlZCwgdGhpcyk7CiAgICAgdGhpcy5zaWRlYmFyUGFuZXMu
c3R5bGVzLmFkZEV2ZW50TGlzdGVuZXIoInN0eWxlIHByb3BlcnR5IHRvZ2dsZWQiLCB0aGlzLl9z
dHlsZXNQYW5lRWRpdGVkLCB0aGlzKTsKLSAgICB0aGlzLnNpZGViYXJQYW5lcy5tZXRyaWNzLmFk
ZEV2ZW50TGlzdGVuZXIoIm1ldHJpY3MgZWRpdGVkIiwgdGhpcy5fbWV0cmljc1BhbmVFZGl0ZWQs
IHRoaXMpOworICAgIHRoaXMuc2lkZWJhclBhbmVzLm1ldHJpY3MuYWRkRXZlbnRMaXN0ZW5lcigi
bWV0cmljcyBlZGl0ZWQiLCB0aGlzLl9zdHlsZXNQYW5lRWRpdGVkLCB0aGlzKTsKIAogICAgIHRo
aXMuc2lkZWJhckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICB0
aGlzLnNpZGViYXJFbGVtZW50LmlkID0gImVsZW1lbnRzLXNpZGViYXIiOwpAQCAtNDk5LDEyICs0
OTksNiBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBf
c3R5bGVzUGFuZUVkaXRlZDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5zaWRlYmFy
UGFuZXMubWV0cmljcy5uZWVkc1VwZGF0ZSA9IHRydWU7Ci0gICAgICAgIHRoaXMudXBkYXRlTWV0
cmljcygpOwotICAgIH0sCi0KLSAgICBfbWV0cmljc1BhbmVFZGl0ZWQ6IGZ1bmN0aW9uKCkKLSAg
ICB7CiAgICAgICAgIHRoaXMuc2lkZWJhclBhbmVzLnN0eWxlcy5uZWVkc1VwZGF0ZSA9IHRydWU7
CiAgICAgICAgIHRoaXMudXBkYXRlU3R5bGVzKHRydWUpOwogICAgIH0sCkBAIC05NTksMjMgKzk1
MywxNCBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgdXBk
YXRlU3R5bGVzOiBmdW5jdGlvbihmb3JjZVVwZGF0ZSkKICAgICB7CiAgICAgICAgIHZhciBzdHls
ZXNTaWRlYmFyUGFuZSA9IHRoaXMuc2lkZWJhclBhbmVzLnN0eWxlczsKLSAgICAgICAgaWYgKCFz
dHlsZXNTaWRlYmFyUGFuZS5leHBhbmRlZCB8fCAhc3R5bGVzU2lkZWJhclBhbmUubmVlZHNVcGRh
dGUpCisgICAgICAgIHZhciBtZXRyaWNzU2lkZWJhclBhbmUgPSB0aGlzLnNpZGViYXJQYW5lcy5t
ZXRyaWNzOworICAgICAgICBpZiAoIShzdHlsZXNTaWRlYmFyUGFuZS5leHBhbmRlZCB8fCBtZXRy
aWNzU2lkZWJhclBhbmUuZXhwYW5kZWQpIHx8ICFzdHlsZXNTaWRlYmFyUGFuZS5uZWVkc1VwZGF0
ZSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBzdHlsZXNTaWRlYmFyUGFuZS51cGRh
dGUodGhpcy5mb2N1c2VkRE9NTm9kZSwgbnVsbCwgZm9yY2VVcGRhdGUpOwogICAgICAgICBzdHls
ZXNTaWRlYmFyUGFuZS5uZWVkc1VwZGF0ZSA9IGZhbHNlOwogICAgIH0sCiAKLSAgICB1cGRhdGVN
ZXRyaWNzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgbWV0cmljc1NpZGViYXJQYW5l
ID0gdGhpcy5zaWRlYmFyUGFuZXMubWV0cmljczsKLSAgICAgICAgaWYgKCFtZXRyaWNzU2lkZWJh
clBhbmUuZXhwYW5kZWQgfHwgIW1ldHJpY3NTaWRlYmFyUGFuZS5uZWVkc1VwZGF0ZSkKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBtZXRyaWNzU2lkZWJhclBhbmUudXBkYXRlKHRoaXMu
Zm9jdXNlZERPTU5vZGUpOwotICAgICAgICBtZXRyaWNzU2lkZWJhclBhbmUubmVlZHNVcGRhdGUg
PSBmYWxzZTsKLSAgICB9LAotCiAgICAgdXBkYXRlUHJvcGVydGllczogZnVuY3Rpb24oKQogICAg
IHsKICAgICAgICAgdmFyIHByb3BlcnRpZXNTaWRlYmFyUGFuZSA9IHRoaXMuc2lkZWJhclBhbmVz
LnByb3BlcnRpZXM7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTWV0
cmljc1NpZGViYXJQYW5lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL01ldHJpY3NT
aWRlYmFyUGFuZS5qcwppbmRleCBhMzM2NTNiLi43YjU3N2MyIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvTWV0cmljc1NpZGViYXJQYW5lLmpzCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanMKQEAgLTI2LDQ5ICsyNiwy
NCBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5l
ID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZSA9IGZ1bmN0aW9u
KHN0eWxlc1BhbmUpCiB7CiAgICAgV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lLmNhbGwodGhpcywg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJNZXRyaWNzIikpOwogICAgIHRoaXMuX2lubGluZVN0eWxl
SWQgPSBudWxsOworICAgIHRoaXMuX3N0eWxlc1BhbmUgPSBzdHlsZXNQYW5lOwogfQogCiBXZWJJ
bnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICB1cGRhdGU6IGZ1
bmN0aW9uKG5vZGUpCiAgICAgewotICAgICAgICB2YXIgYm9keSA9IHRoaXMuYm9keUVsZW1lbnQ7
Ci0KLSAgICAgICAgYm9keS5yZW1vdmVDaGlsZHJlbigpOwotCi0gICAgICAgIGlmIChub2RlKQot
ICAgICAgICAgICAgdGhpcy5ub2RlID0gbm9kZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
bm9kZSA9IHRoaXMubm9kZTsKLQotICAgICAgICBpZiAoIW5vZGUgfHwgIW5vZGUub3duZXJEb2N1
bWVudC5kZWZhdWx0VmlldykKKyAgICAgICAgaWYgKCFub2RlIHx8ICFub2RlLm93bmVyRG9jdW1l
bnQpIHsKKyAgICAgICAgICAgIHRoaXMuYm9keUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAgICAgIGlmIChub2RlLm5vZGVUeXBl
ICE9PSBOb2RlLkVMRU1FTlRfTk9ERSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2
YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgIHZhciBjYWxsYmFjayA9IGZ1bmN0aW9uKHN0eWxlUGF5
bG9hZCkgewotICAgICAgICAgICAgaWYgKCFzdHlsZVBheWxvYWQpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgdmFyIHN0eWxlID0gV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVj
bGFyYXRpb24ucGFyc2VTdHlsZShzdHlsZVBheWxvYWQpOwotICAgICAgICAgICAgc2VsZi5fdXBk
YXRlKG5vZGUsIGJvZHksIHN0eWxlKTsKLSAgICAgICAgfTsKLSAgICAgICAgSW5qZWN0ZWRTY3Jp
cHRBY2Nlc3MuZ2V0Q29tcHV0ZWRTdHlsZShub2RlLmlkLCBjYWxsYmFjayk7Ci0KLSAgICAgICAg
dmFyIGlubGluZVN0eWxlQ2FsbGJhY2sgPSBmdW5jdGlvbihzdHlsZVBheWxvYWQpIHsKLSAgICAg
ICAgICAgIGlmICghc3R5bGVQYXlsb2FkKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIHNlbGYuX2lubGluZVN0eWxlSWQgPSBzdHlsZVBheWxvYWQuaWQ7Ci0gICAgICAgIH07
Ci0gICAgICAgIEluamVjdGVkU2NyaXB0QWNjZXNzLmdldElubGluZVN0eWxlKG5vZGUuaWQsIGlu
bGluZVN0eWxlQ2FsbGJhY2spOwotICAgIH0sCisgICAgICAgIHZhciBjb21wdXRlZFN0eWxlID0g
bm9kZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUobm9kZSk7Cisg
ICAgICAgIHRoaXMuX2lubGluZVN0eWxlSWQgPSBub2RlLnN0eWxlLmlkOwogCi0gICAgX3VwZGF0
ZTogZnVuY3Rpb24obm9kZSwgYm9keSwgc3R5bGUpCi0gICAgewogICAgICAgICB2YXIgbWV0cmlj
c0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgbWV0cmlj
c0VsZW1lbnQuY2xhc3NOYW1lID0gIm1ldHJpY3MiOwogCkBAIC0xMjEsMjMgKzk2LDIzIEBAIFdl
Ykluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGJveGVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgbmFt
ZSA9IGJveGVzW2ldOwogCi0gICAgICAgICAgICBpZiAobmFtZSA9PT0gIm1hcmdpbiIgJiYgbm9N
YXJnaW5EaXNwbGF5VHlwZVtzdHlsZS5kaXNwbGF5XSkKKyAgICAgICAgICAgIGlmIChuYW1lID09
PSAibWFyZ2luIiAmJiBub01hcmdpbkRpc3BsYXlUeXBlW2NvbXB1dGVkU3R5bGUuZGlzcGxheV0p
CiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAobmFtZSA9PT0gInBh
ZGRpbmciICYmIG5vUGFkZGluZ0Rpc3BsYXlUeXBlW3N0eWxlLmRpc3BsYXldKQorICAgICAgICAg
ICAgaWYgKG5hbWUgPT09ICJwYWRkaW5nIiAmJiBub1BhZGRpbmdEaXNwbGF5VHlwZVtjb21wdXRl
ZFN0eWxlLmRpc3BsYXldKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
aWYgKG5hbWUgPT09ICJwb3NpdGlvbiIgJiYgbm9Qb3NpdGlvblR5cGVbc3R5bGUucG9zaXRpb25d
KQorICAgICAgICAgICAgaWYgKG5hbWUgPT09ICJwb3NpdGlvbiIgJiYgbm9Qb3NpdGlvblR5cGVb
Y29tcHV0ZWRTdHlsZS5wb3NpdGlvbl0pCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgICAgIHZhciBib3hFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CiAgICAgICAgICAgICBib3hFbGVtZW50LmNsYXNzTmFtZSA9IG5hbWU7CiAKICAgICAgICAgICAg
IGlmIChuYW1lID09PSAiY29udGVudCIpIHsKLSAgICAgICAgICAgICAgICB2YXIgd2lkdGggPSBz
dHlsZS53aWR0aC5yZXBsYWNlKC9weCQvLCAiIik7CisgICAgICAgICAgICAgICAgdmFyIHdpZHRo
ID0gY29tcHV0ZWRTdHlsZS53aWR0aC5yZXBsYWNlKC9weCQvLCAiIik7CiAgICAgICAgICAgICAg
ICAgdmFyIHdpZHRoRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAg
ICAgICAgICAgICAgICB3aWR0aEVsZW1lbnQudGV4dENvbnRlbnQgPSB3aWR0aDsKICAgICAgICAg
ICAgICAgICB3aWR0aEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZGJsY2xpY2siLCB0aGlzLnN0
YXJ0RWRpdGluZy5iaW5kKHRoaXMsIHdpZHRoRWxlbWVudCwgIndpZHRoIiwgIndpZHRoIiksIGZh
bHNlKTsKIAotICAgICAgICAgICAgICAgIHZhciBoZWlnaHQgPSBzdHlsZS5oZWlnaHQucmVwbGFj
ZSgvcHgkLywgIiIpOworICAgICAgICAgICAgICAgIHZhciBoZWlnaHQgPSBjb21wdXRlZFN0eWxl
LmhlaWdodC5yZXBsYWNlKC9weCQvLCAiIik7CiAgICAgICAgICAgICAgICAgdmFyIGhlaWdodEVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgICAgICAgICAg
aGVpZ2h0RWxlbWVudC50ZXh0Q29udGVudCA9IGhlaWdodDsKICAgICAgICAgICAgICAgICBoZWln
aHRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRibGNsaWNrIiwgdGhpcy5zdGFydEVkaXRpbmcu
YmluZCh0aGlzLCBoZWlnaHRFbGVtZW50LCAiaGVpZ2h0IiwgImhlaWdodCIpLCBmYWxzZSk7CkBA
IC0xNTMsMjMgKzEyOCwyNCBAQCBXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgICAgICBsYWJlbEVsZW1lbnQudGV4dENvbnRlbnQgPSBib3hM
YWJlbHNbaV07CiAgICAgICAgICAgICAgICAgYm94RWxlbWVudC5hcHBlbmRDaGlsZChsYWJlbEVs
ZW1lbnQpOwogCi0gICAgICAgICAgICAgICAgYm94RWxlbWVudC5hcHBlbmRDaGlsZChjcmVhdGVC
b3hQYXJ0RWxlbWVudC5jYWxsKHRoaXMsIHN0eWxlLCBuYW1lLCAidG9wIiwgc3VmZml4KSk7Cisg
ICAgICAgICAgICAgICAgYm94RWxlbWVudC5hcHBlbmRDaGlsZChjcmVhdGVCb3hQYXJ0RWxlbWVu
dC5jYWxsKHRoaXMsIGNvbXB1dGVkU3R5bGUsIG5hbWUsICJ0b3AiLCBzdWZmaXgpKTsKICAgICAg
ICAgICAgICAgICBib3hFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImJyIikpOwotICAgICAgICAgICAgICAgIGJveEVsZW1lbnQuYXBwZW5kQ2hpbGQoY3JlYXRlQm94
UGFydEVsZW1lbnQuY2FsbCh0aGlzLCBzdHlsZSwgbmFtZSwgImxlZnQiLCBzdWZmaXgpKTsKKyAg
ICAgICAgICAgICAgICBib3hFbGVtZW50LmFwcGVuZENoaWxkKGNyZWF0ZUJveFBhcnRFbGVtZW50
LmNhbGwodGhpcywgY29tcHV0ZWRTdHlsZSwgbmFtZSwgImxlZnQiLCBzdWZmaXgpKTsKIAogICAg
ICAgICAgICAgICAgIGlmIChwcmV2aW91c0JveCkKICAgICAgICAgICAgICAgICAgICAgYm94RWxl
bWVudC5hcHBlbmRDaGlsZChwcmV2aW91c0JveCk7CiAKLSAgICAgICAgICAgICAgICBib3hFbGVt
ZW50LmFwcGVuZENoaWxkKGNyZWF0ZUJveFBhcnRFbGVtZW50LmNhbGwodGhpcywgc3R5bGUsIG5h
bWUsICJyaWdodCIsIHN1ZmZpeCkpOworICAgICAgICAgICAgICAgIGJveEVsZW1lbnQuYXBwZW5k
Q2hpbGQoY3JlYXRlQm94UGFydEVsZW1lbnQuY2FsbCh0aGlzLCBjb21wdXRlZFN0eWxlLCBuYW1l
LCAicmlnaHQiLCBzdWZmaXgpKTsKICAgICAgICAgICAgICAgICBib3hFbGVtZW50LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIikpOwotICAgICAgICAgICAgICAgIGJveEVs
ZW1lbnQuYXBwZW5kQ2hpbGQoY3JlYXRlQm94UGFydEVsZW1lbnQuY2FsbCh0aGlzLCBzdHlsZSwg
bmFtZSwgImJvdHRvbSIsIHN1ZmZpeCkpOworICAgICAgICAgICAgICAgIGJveEVsZW1lbnQuYXBw
ZW5kQ2hpbGQoY3JlYXRlQm94UGFydEVsZW1lbnQuY2FsbCh0aGlzLCBjb21wdXRlZFN0eWxlLCBu
YW1lLCAiYm90dG9tIiwgc3VmZml4KSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHBy
ZXZpb3VzQm94ID0gYm94RWxlbWVudDsKICAgICAgICAgfQogCiAgICAgICAgIG1ldHJpY3NFbGVt
ZW50LmFwcGVuZENoaWxkKHByZXZpb3VzQm94KTsKLSAgICAgICAgYm9keS5hcHBlbmRDaGlsZCht
ZXRyaWNzRWxlbWVudCk7CisgICAgICAgIHRoaXMuYm9keUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4o
KTsKKyAgICAgICAgdGhpcy5ib2R5RWxlbWVudC5hcHBlbmRDaGlsZChtZXRyaWNzRWxlbWVudCk7
CiAgICAgfSwKIAogICAgIHN0YXJ0RWRpdGluZzogZnVuY3Rpb24odGFyZ2V0RWxlbWVudCwgYm94
LCBzdHlsZVByb3BlcnR5KQpAQCAtMTg0LDcgKzE2MCw3IEBAIFdlYkluc3BlY3Rvci5NZXRyaWNz
U2lkZWJhclBhbmUucHJvdG90eXBlID0gewogCiAgICAgZWRpdGluZ0NhbmNlbGxlZDogZnVuY3Rp
b24oZWxlbWVudCwgY29udGV4dCkKICAgICB7Ci0gICAgICAgIHRoaXMudXBkYXRlKCk7CisgICAg
ICAgIHRoaXMuX3N0eWxlc1BhbmUudXBkYXRlKCk7CiAgICAgfSwKIAogICAgIGVkaXRpbmdDb21t
aXR0ZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIHVzZXJJbnB1dCwgcHJldmlvdXNDb250ZW50LCBjb250
ZXh0KQpAQCAtMjA2LDcgKzE4Miw3IEBAIFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJtZXRy
aWNzIGVkaXRlZCIpOwotICAgICAgICAgICAgc2VsZi51cGRhdGUoKTsKKyAgICAgICAgICAgIHNl
bGYuX3N0eWxlc1BhbmUudXBkYXRlKCk7CiAgICAgICAgIH07CiAgICAgICAgIEluamVjdGVkU2Ny
aXB0QWNjZXNzLnNldFN0eWxlUHJvcGVydHkodGhpcy5faW5saW5lU3R5bGVJZCwgY29udGV4dC5z
dHlsZVByb3BlcnR5LCB1c2VySW5wdXQsIGNhbGxiYWNrKTsKICAgICB9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvcGVydGllc1NpZGViYXJQYW5lLmpzIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb3BlcnRpZXNTaWRlYmFyUGFuZS5qcwppbmRleCBl
YzA4MjEwLi5kODQ4NzRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
UHJvcGVydGllc1NpZGViYXJQYW5lLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Qcm9wZXJ0aWVzU2lkZWJhclBhbmUuanMKQEAgLTM2LDEyICszNiwxMSBAQCBXZWJJbnNwZWN0
b3IuUHJvcGVydGllc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZh
ciBib2R5ID0gdGhpcy5ib2R5RWxlbWVudDsKIAotICAgICAgICBib2R5LnJlbW92ZUNoaWxkcmVu
KCk7Ci0KLSAgICAgICAgdGhpcy5zZWN0aW9ucyA9IFtdOwotCi0gICAgICAgIGlmICghbm9kZSkK
KyAgICAgICAgaWYgKCFub2RlKSB7CisgICAgICAgICAgICBib2R5LnJlbW92ZUNoaWxkcmVuKCk7
CisgICAgICAgICAgICB0aGlzLnNlY3Rpb25zID0gW107CiAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KIAogICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgICAgIHZhciBjYWxsYmFj
ayA9IGZ1bmN0aW9uKHByb3RvdHlwZXMpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwppbmRleCBjYWYzYTUzLi40MzBjNGU1IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCkBAIC05
Nyw2ICs5Nyw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgIGlmICghbm9kZSkgewogICAgICAgICAgICAgYm9keS5yZW1vdmVDaGlsZHJlbigp
OwogICAgICAgICAgICAgdGhpcy5zZWN0aW9ucyA9IFtdOworICAgICAgICAgICAgdGhpcy5fbWV0
cmljc1BhbmUudXBkYXRlKG51bGwpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
QEAgLTEwOCw3ICsxMDksNiBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90
eXBlID0gewogICAgICAgICAgICAgbm9kZS5fc2V0U3R5bGVzKHN0eWxlcy5jb21wdXRlZFN0eWxl
LCBzdHlsZXMuaW5saW5lU3R5bGUsIHN0eWxlcy5zdHlsZUF0dHJpYnV0ZXMsIHN0eWxlcy5tYXRj
aGVkQ1NTUnVsZXMpOwogICAgICAgICAgICAgc2VsZi5fdXBkYXRlKHJlZnJlc2gsIGJvZHksIG5v
ZGUsIGVkaXRlZFNlY3Rpb24sIGZvcmNlVXBkYXRlKTsKICAgICAgICAgfQotCiAgICAgICAgIElu
amVjdGVkU2NyaXB0QWNjZXNzLmdldFN0eWxlcyhub2RlLmlkLCAhUHJlZmVyZW5jZXMuc2hvd1Vz
ZXJBZ2VudFN0eWxlcywgY2FsbGJhY2spOwogICAgIH0sCiAKQEAgLTMwOSw2ICszMDksMTQgQEAg
V2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
ICAgICB0aGlzLnNlY3Rpb25zLnB1c2goc2VjdGlvbik7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KKworICAgICAgICAvLyBVcGRhdGUgc2xhdmUgbWV0cmljcyBwYW5lIHRvby4KKyAgICAgICAg
dGhpcy5fbWV0cmljc1BhbmUudXBkYXRlKG5vZGUpOworICAgIH0sCisKKyAgICBzZXQgbWV0cmlj
c1BhbmUobWV0cmljc1BhbmUpCisgICAgeworICAgICAgICB0aGlzLl9tZXRyaWNzUGFuZSA9IG1l
dHJpY3NQYW5lOwogICAgIH0sCiAKICAgICBfY2hhbmdlU2V0dGluZzogZnVuY3Rpb24oZXZlbnQp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43439</attachid>
            <date>2009-11-18 10:18:32 -0800</date>
            <delta_ts>2009-11-18 10:20:36 -0800</delta_ts>
            <desc>[PATCH] Flickering only fix.</desc>
            <filename>flickering</filename>
            <type>text/plain</type>
            <size>3273</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGVhODc5ZC4uYWM1ZDk2NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNyBAQAogMjAwOS0xMS0xOCAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5
IEhhdGNoZXIuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogR2V0IHJpZCBvZiBtZXRyaWNzIGFu
ZCBwcm9wZXJ0aWVzIHNpZGViYXJzJworICAgICAgICBmbGlja2VyaW5nLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTYyOQorCisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanM6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9Qcm9wZXJ0aWVzU2lkZWJhclBhbmUuanM6CisKKzIwMDktMTEtMTgg
IFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgTm90IHJl
dmlld2VkLiBUb3VjaCBJbnNwZWN0b3JDb250cm9sbGVyIHNvIHRoYXQgZnJvbnRlbmQKICAgICAg
ICAgSlMgZmlsZXMgYXJlIGRlcGxveWVkIG9uIFdpbmRvd3MuCiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanMgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvTWV0cmljc1NpZGViYXJQYW5lLmpzCmluZGV4IGEzMzY1M2IuLmY1
ZTY3NTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lk
ZWJhclBhbmUuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL01ldHJpY3NTaWRl
YmFyUGFuZS5qcwpAQCAtMzUsMjcgKzM1LDIyIEBAIFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJh
clBhbmUgPSBmdW5jdGlvbigpCiBXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3Rv
dHlwZSA9IHsKICAgICB1cGRhdGU6IGZ1bmN0aW9uKG5vZGUpCiAgICAgewotICAgICAgICB2YXIg
Ym9keSA9IHRoaXMuYm9keUVsZW1lbnQ7Ci0KLSAgICAgICAgYm9keS5yZW1vdmVDaGlsZHJlbigp
OwotCiAgICAgICAgIGlmIChub2RlKQogICAgICAgICAgICAgdGhpcy5ub2RlID0gbm9kZTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgbm9kZSA9IHRoaXMubm9kZTsKIAotICAgICAgICBpZiAo
IW5vZGUgfHwgIW5vZGUub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSAhPT0gTm9kZS5FTEVNRU5UX05PREUp
CisgICAgICAgIGlmICghbm9kZSB8fCAhbm9kZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3IHx8
IG5vZGUubm9kZVR5cGUgIT09IE5vZGUuRUxFTUVOVF9OT0RFKSB7CisgICAgICAgICAgICB0aGlz
LmJvZHlFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KIAogICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgICAgIHZhciBjYWxsYmFjayA9
IGZ1bmN0aW9uKHN0eWxlUGF5bG9hZCkgewogICAgICAgICAgICAgaWYgKCFzdHlsZVBheWxvYWQp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgdmFyIHN0eWxlID0gV2ViSW5z
cGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24ucGFyc2VTdHlsZShzdHlsZVBheWxvYWQpOwotICAg
ICAgICAgICAgc2VsZi5fdXBkYXRlKG5vZGUsIGJvZHksIHN0eWxlKTsKKyAgICAgICAgICAgIHNl
bGYuX3VwZGF0ZShzdHlsZSk7CiAgICAgICAgIH07CiAgICAgICAgIEluamVjdGVkU2NyaXB0QWNj
ZXNzLmdldENvbXB1dGVkU3R5bGUobm9kZS5pZCwgY2FsbGJhY2spOwogCkBAIC02Nyw3ICs2Miw3
IEBAIFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAg
ICBJbmplY3RlZFNjcmlwdEFjY2Vzcy5nZXRJbmxpbmVTdHlsZShub2RlLmlkLCBpbmxpbmVTdHls
ZUNhbGxiYWNrKTsKICAgICB9LAogCi0gICAgX3VwZGF0ZTogZnVuY3Rpb24obm9kZSwgYm9keSwg
c3R5bGUpCisgICAgX3VwZGF0ZTogZnVuY3Rpb24oc3R5bGUpCiAgICAgewogICAgICAgICB2YXIg
bWV0cmljc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAg
bWV0cmljc0VsZW1lbnQuY2xhc3NOYW1lID0gIm1ldHJpY3MiOwpAQCAtMTY5LDcgKzE2NCw4IEBA
IFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICB9
CiAKICAgICAgICAgbWV0cmljc0VsZW1lbnQuYXBwZW5kQ2hpbGQocHJldmlvdXNCb3gpOwotICAg
ICAgICBib2R5LmFwcGVuZENoaWxkKG1ldHJpY3NFbGVtZW50KTsKKyAgICAgICAgdGhpcy5ib2R5
RWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOworICAgICAgICB0aGlzLmJvZHlFbGVtZW50LmFwcGVu
ZENoaWxkKG1ldHJpY3NFbGVtZW50KTsKICAgICB9LAogCiAgICAgc3RhcnRFZGl0aW5nOiBmdW5j
dGlvbih0YXJnZXRFbGVtZW50LCBib3gsIHN0eWxlUHJvcGVydHkpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvcGVydGllc1NpZGViYXJQYW5lLmpzIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb3BlcnRpZXNTaWRlYmFyUGFuZS5qcwppbmRleCBlYzA4
MjEwLi5kODQ4NzRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJv
cGVydGllc1NpZGViYXJQYW5lLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Q
cm9wZXJ0aWVzU2lkZWJhclBhbmUuanMKQEAgLTM2LDEyICszNiwxMSBAQCBXZWJJbnNwZWN0b3Iu
UHJvcGVydGllc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciBi
b2R5ID0gdGhpcy5ib2R5RWxlbWVudDsKIAotICAgICAgICBib2R5LnJlbW92ZUNoaWxkcmVuKCk7
Ci0KLSAgICAgICAgdGhpcy5zZWN0aW9ucyA9IFtdOwotCi0gICAgICAgIGlmICghbm9kZSkKKyAg
ICAgICAgaWYgKCFub2RlKSB7CisgICAgICAgICAgICBib2R5LnJlbW92ZUNoaWxkcmVuKCk7Cisg
ICAgICAgICAgICB0aGlzLnNlY3Rpb25zID0gW107CiAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KIAogICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgICAgIHZhciBjYWxsYmFjayA9
IGZ1bmN0aW9uKHByb3RvdHlwZXMpIHsK
</data>
<flag name="review"
          id="25145"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>