<?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>72078</bug_id>
          
          <creation_ts>2011-11-10 17:26:40 -0800</creation_ts>
          <short_desc>[Chromium] Compositing with full sized fixed div causes heavy repaints</short_desc>
          <delta_ts>2012-02-10 09:39:29 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          <dependson>75018</dependson>
    
    <dependson>75632</dependson>
    
    <dependson>75637</dependson>
    
    <dependson>75638</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Simonsen">simonjam</reporter>
          <assigned_to name="Xianzhu Wang">wangxianzhu</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>epenner</cc>
    
    <cc>jamesr</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>klobag</cc>
    
    <cc>nduca</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>vangelis</cc>
    
    <cc>wangxianzhu</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>500435</commentid>
    <comment_count>0</comment_count>
      <attachid>114609</attachid>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2011-11-10 17:26:40 -0800</bug_when>
    <thetext>Created attachment 114609
Reduced test case

This is a reduced case from crosbug.com/21332, which is that techcrunch.com scrolls slowly on ChromeOS. There may be many problems, but at least one of them is that we&apos;re repainting every time the user scrolls. One of the troublemakers is a 100%x100% fixed div (#finalizer) that&apos;s causing a heavy repaint every time we scroll.

I&apos;ve attached a simple test case that demonstrates this. If you instrument the code, you&apos;ll see that we have to repaint every time you scroll, even though the bright green div isn&apos;t visible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500437</commentid>
    <comment_count>1</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-10 17:30:51 -0800</bug_when>
    <thetext>The paint rects are significantly smaller if the div is partially onscreen - for example add top:95%. Very strange.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525775</commentid>
    <comment_count>2</comment_count>
      <attachid>120232</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2011-12-21 16:05:02 -0800</bug_when>
    <thetext>Created attachment 120232
Test case with negative z-index

In my experiments, I must add a z-index CSS property with a negative value (like &apos;z-index: -100) to the #finalizer, does the issue occur.

Another experiment is to add &apos;top: 0px&apos; to #finalizer, then the finalizer will be just under the other contents of the body. It&apos;s reasonable to repaint in this case when scrolling. So the excessive repaint might be because WebKit thinks #finalizer is overlapping with the whole body.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527518</commentid>
    <comment_count>3</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2011-12-27 17:44:13 -0800</bug_when>
    <thetext>I believe the patch to https://bugs.webkit.org/show_bug.cgi?id=75018 should resolve this issue. My investigation showed that before that patch, all layers are reinitialized and repainted on very scroll because the scrollbar layers are recreated and added into the layers hierarchy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527521</commentid>
    <comment_count>4</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2011-12-27 18:04:38 -0800</bug_when>
    <thetext>Sorry for misleading. Just verified that https://bugs.webkit.org/show_bug.cgi?id=75018 make this issue better, but doesn&apos;t totally resolve this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529228</commentid>
    <comment_count>5</comment_count>
      <attachid>121032</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-01-03 18:31:21 -0800</bug_when>
    <thetext>Created attachment 121032
patch

Only verified on chromium-android, not on chromeos. Wondering if this CL could resolve the whole problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529230</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-03 18:33:10 -0800</bug_when>
    <thetext>Attachment 121032 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h:110:  The parameter name &quot;viewportSize&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h:176:  The parameter name &quot;viewportSize&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529241</commentid>
    <comment_count>7</comment_count>
      <attachid>121036</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-01-03 18:52:05 -0800</bug_when>
    <thetext>Created attachment 121036
patch v2 (fixed style issues)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529981</commentid>
    <comment_count>8</comment_count>
      <attachid>121036</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-04 20:54:27 -0800</bug_when>
    <thetext>Comment on attachment 121036
patch v2 (fixed style issues)

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

I&apos;m guessing the issue here is texture use that&apos;s higher than the reclaim limit but lower than the absolute limit, right?  Looks like this without this patch we&apos;re reducing to the reclaim limit on every frame, regardless of what&apos;s visible.

This change seems reasonable to me, although it&apos;s effectively making the reclaim limit much weaker. I think you definitely need tests for a subtle behavior change like this.

&gt; Source/WebKit/chromium/ChangeLog:12
&gt; +        No new tests as it doesn&apos;t change any functionality.

you definitely are changing functionality, so a test would be nice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530372</commentid>
    <comment_count>9</comment_count>
      <attachid>121036</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2012-01-05 10:05:35 -0800</bug_when>
    <thetext>Comment on attachment 121036
patch v2 (fixed style issues)

I think this is a reasonable change and more in the spirit of how the reclaim limit should be functioning. Its role is not to actively go and delete textures over the limit but only do so if we need to allocate a new texture.  

There is still a remaining issue that we don&apos;t actually protect textures that we already have and need for the current frame from being deleted. So if we are over the reclaim limit and we get a new layer, there is a good chance we&apos;ll go and delete a texture from another layer that&apos;s still needed if that other layer comes later in the hierarchy traversal.

Maybe what we should be doing instead is to first reserve all the existing textures that we need for the frame before we try to create new ones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530428</commentid>
    <comment_count>10</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-01-05 10:52:04 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 121036 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=121036&amp;action=review
&gt; 
&gt; I&apos;m guessing the issue here is texture use that&apos;s higher than the reclaim limit but lower than the absolute limit, right?

Yes.

&gt; This change seems reasonable to me, although it&apos;s effectively making the reclaim limit much weaker. I think you definitely need tests for a subtle behavior change like this.
&gt; 
&gt; &gt; Source/WebKit/chromium/ChangeLog:12
&gt; &gt; +        No new tests as it doesn&apos;t change any functionality.
&gt; 
&gt; you definitely are changing functionality, so a test would be nice

I&apos;ll add unit test for the patch.

As this bug has several reasons, and the patch just resolves one of them, I&apos;ll create separate bugs for each reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530430</commentid>
    <comment_count>11</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-01-05 10:53:44 -0800</bug_when>
    <thetext>Add bug 75018 as the depended bug as it used to be the main reason of this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530800</commentid>
    <comment_count>12</comment_count>
      <attachid>121036</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-01-05 17:09:04 -0800</bug_when>
    <thetext>Comment on attachment 121036
patch v2 (fixed style issues)

The updated patch will be in bug 75632.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554122</commentid>
    <comment_count>13</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-02-10 09:39:29 -0800</bug_when>
    <thetext>All depending bugs fixed. Closing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>114609</attachid>
            <date>2011-11-10 17:26:40 -0800</date>
            <delta_ts>2011-11-10 17:26:40 -0800</delta_ts>
            <desc>Reduced test case</desc>
            <filename>techcrunch_repaint_demo.html</filename>
            <type>text/html</type>
            <size>1366</size>
            <attacher name="James Simonsen">simonjam</attacher>
            
              <data encoding="base64">PGh0bWw+CiAgPGJvZHk+CiAgICA8ZGl2PgogICAgICA8cD4xCiAgICAgIDxwPjIKICAgICAgPHA+
MwogICAgICA8cD40CiAgICAgIDxwPjUKICAgICAgPHA+NgogICAgICA8cD43CiAgICAgIDxwPjgK
ICAgICAgPHA+OQogICAgICA8cD4xMAogICAgICA8cD4xMQogICAgICA8cD4xMgogICAgICA8cD4x
MwogICAgICA8cD4xNAogICAgICA8cD4xNQogICAgICA8cD4xNgogICAgICA8cD4xNwogICAgICA8
cD4xOAogICAgICA8cD4xOQogICAgICA8cD4yMAogICAgICA8cD4yMQogICAgICA8cD4yMgogICAg
ICA8cD4yMwogICAgICA8cD4yNAogICAgICA8cD4yNQogICAgICA8cD4yNgogICAgICA8cD4yNwog
ICAgICA8cD4yOAogICAgICA8cD4yOQogICAgICA8cD4zMAogICAgICA8cD4zMQogICAgICA8cD4z
MgogICAgICA8cD4zMwogICAgICA8cD4zNAogICAgICA8cD4zNQogICAgICA8cD4zNgogICAgICA8
cD4zNwogICAgICA8cD4zOAogICAgICA8cD4zOQogICAgICA8cD40MAogICAgICA8cD40MQogICAg
ICA8cD40MgogICAgICA8cD40MwogICAgICA8cD40NAogICAgICA8cD40NQogICAgICA8cD40Ngog
ICAgICA8cD40NwogICAgICA8cD40OAogICAgICA8cD40OQogICAgICA8cD41MAogICAgICA8cD41
MQogICAgICA8cD41MgogICAgICA8cD41MwogICAgICA8cD41NAogICAgICA8cD41NQogICAgICA8
cD41NgogICAgICA8cD41NwogICAgICA8cD41OAogICAgICA8cD41OQogICAgICA8cD42MAogICAg
ICA8cD42MQogICAgICA8cD42MgogICAgICA8cD42MwogICAgICA8cD42NAogICAgICA8cD42NQog
ICAgICA8cD42NgogICAgICA8cD42NwogICAgICA8cD42OAogICAgICA8cD42OQogICAgICA8cD43
MAogICAgICA8cD43MQogICAgICA8cD43MgogICAgICA8cD43MwogICAgICA8cD43NAogICAgICA8
cD43NQogICAgICA8cD43NgogICAgICA8cD43NwogICAgICA8cD43OAogICAgICA8cD43OQogICAg
ICA8cD44MAogICAgICA8cD44MQogICAgICA8cD44MgogICAgICA8cD44MwogICAgICA8cD44NAog
ICAgICA8cD44NQogICAgICA8cD44NgogICAgICA8cD44NwogICAgICA8cD44OAogICAgICA8cD44
OQogICAgICA8cD45MAogICAgICA8cD45MQogICAgICA8cD45MgogICAgICA8cD45MwogICAgICA8
cD45NAogICAgICA8cD45NQogICAgICA8cD45NgogICAgICA8cD45NwogICAgICA8cD45OAogICAg
ICA8cD45OQogICAgICA8cD4xMDAKICAgICAgPHA+MTAxCiAgICAgIDxwPjEwMgogICAgPC9kaXY+
CiAgICA8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kOiMwMGZmMDA7IGhlaWdodDogMTAwJTsgd2lkdGg6
IDEwMCU7IHBvc2l0aW9uOiBmaXhlZDsiPgogICAgPC9kaXY+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>120232</attachid>
            <date>2011-12-21 16:05:02 -0800</date>
            <delta_ts>2011-12-21 16:05:02 -0800</delta_ts>
            <desc>Test case with negative z-index</desc>
            <filename>scrollupdate.html</filename>
            <type>text/html</type>
            <size>1788</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">PGh0bWw+CiAgPGJvZHk+CiAgICA8ZGl2PgogICAgICA8cD4xCiAgICAgIDwvcD48cD4yCiAgICAg
IDwvcD48cD4zCiAgICAgIDwvcD48cD40CiAgICAgIDwvcD48cD41CiAgICAgIDwvcD48cD42CiAg
ICAgIDwvcD48cD43CiAgICAgIDwvcD48cD44CiAgICAgIDwvcD48cD45CiAgICAgIDwvcD48cD4x
MAogICAgICA8L3A+PHA+MTEKICAgICAgPC9wPjxwPjEyCiAgICAgIDwvcD48cD4xMwogICAgICA8
L3A+PHA+MTQKICAgICAgPC9wPjxwPjE1CiAgICAgIDwvcD48cD4xNgogICAgICA8L3A+PHA+MTcK
ICAgICAgPC9wPjxwPjE4CiAgICAgIDwvcD48cD4xOQogICAgICA8L3A+PHA+MjAKICAgICAgPC9w
PjxwPjIxCiAgICAgIDwvcD48cD4yMgogICAgICA8L3A+PHA+MjMKICAgICAgPC9wPjxwPjI0CiAg
ICAgIDwvcD48cD4yNQogICAgICA8L3A+PHA+MjYKICAgICAgPC9wPjxwPjI3CiAgICAgIDwvcD48
cD4yOAogICAgICA8L3A+PHA+MjkKICAgICAgPC9wPjxwPjMwCiAgICAgIDwvcD48cD4zMQogICAg
ICA8L3A+PHA+MzIKICAgICAgPC9wPjxwPjMzCiAgICAgIDwvcD48cD4zNAogICAgICA8L3A+PHA+
MzUKICAgICAgPC9wPjxwPjM2CiAgICAgIDwvcD48cD4zNwogICAgICA8L3A+PHA+MzgKICAgICAg
PC9wPjxwPjM5CiAgICAgIDwvcD48cD40MAogICAgICA8L3A+PHA+NDEKICAgICAgPC9wPjxwPjQy
CiAgICAgIDwvcD48cD40MwogICAgICA8L3A+PHA+NDQKICAgICAgPC9wPjxwPjQ1CiAgICAgIDwv
cD48cD40NgogICAgICA8L3A+PHA+NDcKICAgICAgPC9wPjxwPjQ4CiAgICAgIDwvcD48cD40OQog
ICAgICA8L3A+PHA+NTAKICAgICAgPC9wPjxwPjUxCiAgICAgIDwvcD48cD41MgogICAgICA8L3A+
PHA+NTMKICAgICAgPC9wPjxwPjU0CiAgICAgIDwvcD48cD41NQogICAgICA8L3A+PHA+NTYKICAg
ICAgPC9wPjxwPjU3CiAgICAgIDwvcD48cD41OAogICAgICA8L3A+PHA+NTkKICAgICAgPC9wPjxw
PjYwCiAgICAgIDwvcD48cD42MQogICAgICA8L3A+PHA+NjIKICAgICAgPC9wPjxwPjYzCiAgICAg
IDwvcD48cD42NAogICAgICA8L3A+PHA+NjUKICAgICAgPC9wPjxwPjY2CiAgICAgIDwvcD48cD42
NwogICAgICA8L3A+PHA+NjgKICAgICAgPC9wPjxwPjY5CiAgICAgIDwvcD48cD43MAogICAgICA8
L3A+PHA+NzEKICAgICAgPC9wPjxwPjcyCiAgICAgIDwvcD48cD43MwogICAgICA8L3A+PHA+NzQK
ICAgICAgPC9wPjxwPjc1CiAgICAgIDwvcD48cD43NgogICAgICA8L3A+PHA+NzcKICAgICAgPC9w
PjxwPjc4CiAgICAgIDwvcD48cD43OQogICAgICA8L3A+PHA+ODAKICAgICAgPC9wPjxwPjgxCiAg
ICAgIDwvcD48cD44MgogICAgICA8L3A+PHA+ODMKICAgICAgPC9wPjxwPjg0CiAgICAgIDwvcD48
cD44NQogICAgICA8L3A+PHA+ODYKICAgICAgPC9wPjxwPjg3CiAgICAgIDwvcD48cD44OAogICAg
ICA8L3A+PHA+ODkKICAgICAgPC9wPjxwPjkwCiAgICAgIDwvcD48cD45MQogICAgICA8L3A+PHA+
OTIKICAgICAgPC9wPjxwPjkzCiAgICAgIDwvcD48cD45NAogICAgICA8L3A+PHA+OTUKICAgICAg
PC9wPjxwPjk2CiAgICAgIDwvcD48cD45NwogICAgICA8L3A+PHA+OTgKICAgICAgPC9wPjxwPjk5
CiAgICAgIDwvcD48cD4xMDAKICAgICAgPC9wPjxwPjEwMQogICAgICA8L3A+PHA+MTAyCiAgICA8
L3A+PC9kaXY+CiAgICA8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kOiMwMGZmMDA7IGhlaWdodDogMTAw
JTsgd2lkdGg6IDEwMCU7IHBvc2l0aW9uOiBmaXhlZDsgei1pbmRleDogLTEwMCI+CiAgICA8L2Rp
dj4KICA8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121032</attachid>
            <date>2012-01-03 18:31:21 -0800</date>
            <delta_ts>2012-01-03 18:52:05 -0800</delta_ts>
            <desc>patch</desc>
            <filename>72078</filename>
            <type>text/plain</type>
            <size>13015</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzk5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDEyLTAxLTAzICBYaWFuemh1
IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQXZvaWQgdW5uZWNl
c3NhcnkgVGV4dHVyZU1hbmFnZXI6OnJlZHVjZU1lbW9yeVRvTGltaXQoKS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDc4CisKKyAgICAgICAgVW5u
ZWNlc3NhcnkgVGV4dHVyZU1hbmFnZXI6OnJlZHVjZU1lbW9yeVRvTGltaXQoKSB3aWxsIGNhdXNl
IHNvbWUgdGlsZQorICAgICAgICB0ZXh0dXJlcyB0aGF0IGFyZSByZXF1aXJlZCBzb29uIHRvIGJl
IHVubmVjZXNzYXJpbHkgcmVtb3ZlZC9yZXBsYWNlZCwKKyAgICAgICAgYW5kIGRlZ3JhZGUgcGVy
Zm9ybWFuY2UsIHNvbWV0aW1lcyBzaWduaWZpY2FudGx5LgorCisgICAgICAgIEZvciBleGFtcGxl
LCBDQ0xheWVyVHJlZUhvc3Q6OnNldFZpZXdwb3J0IHdpbGwgYmUgY2FsbGVkIGR1cmluZworICAg
ICAgICBzY3JvbGxpbmcuIFRoZSBvcmlnaW5hbCBjb2RlIHdvdWxkIGNhbGwgVGV4dHVyZU1hbmFn
ZXI6OnJlZHVjZU1lbW9yeVRvTGltaXQoKSwKKyAgICAgICAgY2F1c2luZyBzb21lIHRleHR1cmVz
IHVubmVjZXNzYXJpbHkgZGlzY2FyZGVkIGFuZCB0aGVuIHJlY3JlYXRlZAorICAgICAgICByZXBl
YXRlZGx5IGR1cmluZyBzY3JvbGxpbmcuCisKKyAgICAgICAgSXQncyBhbHNvIHVubmVjZXNzYXJ5
IHRvIGNhbGwgVGV4dHVyZU1hbmFnZXI6OnJlZHVjZU1lbW9yeVRvTGltaXQoKQorICAgICAgICBm
cm9tIFRleHR1cmVNYW5hZ2VyOjpzZXRQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKCkgYmVjYXVz
ZSB0aGUgbGltaXQKKyAgICAgICAgaXMgbm90IGEgaGFyZCBsaW1pdC4gVGhlIGNhbGxlcnMgc2hv
dWxkIGNhbGwgcmVkdWNlTWVtb3J5VG9MaW1pdCgpCisgICAgICAgIGV4cGxpY2l0bHkgaWYgaXQg
d2FudHMgaXQgd2hlbiBzZXR0aW5nIHRoZSBwcmVmZXJyZWQgbWVtb3J5IGxpbWl0LgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBh
cyBpdCBkb2Vzbid0IGNoYW5nZSBhbnkgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmZpbmlzaERyYXdpbmdGcmFtZSk6IENh
bGwgcmVkdWNlTWVtb3J5VG9MaW1pdCgpIGV4cGxpY2l0bHkKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFuYWdlcjo6c2V0UHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcyk6IFJlbW92ZWQgY2Fs
bCB0byByZWR1Y2VNZW1vcnlUb0xpbWl0KCkuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdDo6ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdDo6c2V0Vmlld3BvcnRTaXplKTogQ2hhbmdlZCBuYW1lIGZyb20gc2V0
Vmlld3BvcnQoKS4gQ2hlY2sgY2hhbmdlIG9mIHZpZXdwb3J0U2l6ZS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFZpZXdwb3J0U2l6ZSk6IENo
YW5nZWQgbmFtZSBmcm9tIHNldFZpZXdwb3J0KCkKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisKIDIwMTItMDEtMDMgIFdlaSBK
YW1lcyAgPGphbWVzLndlaUBpbnRlbC5jb20+CiAKICAgICAgICAgT3B0aW1pemUgQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlIHByb2Nlc3MgYnkgYXZvaWRpbmcgaW50ZXJwb2xhdGlvbiB3aGVuIHBpdGNo
UmF0ZT09MQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCShyZXZp
c2lvbiAxMDM5OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NzksMTEgKzY3
OSw5IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpmaW5pc2hEcmF3aW4KIAogICAgIHNp
emVfdCBjb250ZW50c01lbW9yeVVzZUJ5dGVzID0gbV9jb250ZW50c1RleHR1cmVBbGxvY2F0b3It
PmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpOwogICAgIHNpemVfdCByZWNsYWltTGltaXQgPSBUZXh0
dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpOwotICAgIGlmIChy
ZWNsYWltTGltaXQgPiBjb250ZW50c01lbW9yeVVzZUJ5dGVzKQotICAgICAgICBtX3JlbmRlclN1
cmZhY2VUZXh0dXJlTWFuYWdlci0+c2V0UHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcyhyZWNsYWlt
TGltaXQgLSBjb250ZW50c01lbW9yeVVzZUJ5dGVzKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcmVu
ZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT5zZXRQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKDAp
OwotCisgICAgc2l6ZV90IHByZWZlcnJlZExpbWl0ID0gcmVjbGFpbUxpbWl0ID4gY29udGVudHNN
ZW1vcnlVc2VCeXRlcyA/IHJlY2xhaW1MaW1pdCAtIGNvbnRlbnRzTWVtb3J5VXNlQnl0ZXMgOiAw
OworICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT5zZXRQcmVmZXJyZWRNZW1vcnlM
aW1pdEJ5dGVzKHByZWZlcnJlZExpbWl0KTsKKyAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFu
YWdlci0+cmVkdWNlTWVtb3J5VG9MaW1pdChwcmVmZXJyZWRMaW1pdCk7CiAgICAgbV9yZW5kZXJT
dXJmYWNlVGV4dHVyZU1hbmFnZXItPmRlbGV0ZUV2aWN0ZWRUZXh0dXJlcyhtX3JlbmRlclN1cmZh
Y2VUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKIAogICAgIGlmIChzZXR0aW5ncygpLmNvbXBvc2l0
ZU9mZnNjcmVlbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RleHR1cmVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAJKHJldmlzaW9uIDEwMzk5
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVN
YW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDcgKzExMiw2IEBAIHZvaWQgVGV4dHVy
ZU1hbmFnZXI6OnNldE1heE1lbW9yeUxpbWl0QnkKIAogdm9pZCBUZXh0dXJlTWFuYWdlcjo6c2V0
UHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcyhzaXplX3QgbWVtb3J5TGltaXRCeXRlcykKIHsKLSAg
ICByZWR1Y2VNZW1vcnlUb0xpbWl0KG1lbW9yeUxpbWl0Qnl0ZXMpOwogICAgIG1fcHJlZmVycmVk
TWVtb3J5TGltaXRCeXRlcyA9IG1lbW9yeUxpbWl0Qnl0ZXM7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcAkocmV2aXNpb24gMTAzOTk1KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpmaW5p
c2hDb21taXRPbkltcGwKICAgICBob3N0SW1wbC0+c2V0U291cmNlRnJhbWVOdW1iZXIoZnJhbWVO
dW1iZXIoKSk7CiAgICAgaG9zdEltcGwtPnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMobV9oYXZl
V2hlZWxFdmVudEhhbmRsZXJzKTsKICAgICBob3N0SW1wbC0+c2V0Wm9vbUFuaW1hdG9yVHJhbnNm
b3JtKG1fem9vbUFuaW1hdG9yVHJhbnNmb3JtKTsKLSAgICBob3N0SW1wbC0+c2V0Vmlld3BvcnQo
dmlld3BvcnRTaXplKCkpOworICAgIGhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUodmlld3BvcnRT
aXplKCkpOwogICAgIGhvc3RJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMocGFnZVNj
YWxlKCksIG1fbWluUGFnZVNjYWxlLCBtX21heFBhZ2VTY2FsZSk7CiAKICAgICBtX2ZyYW1lTnVt
YmVyKys7CkBAIC0yNTMsOCArMjUzLDExIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRSb290
TGF5ZXIoUGFzc1IKICAgICBzZXROZWVkc0NvbW1pdCgpOwogfQogCi12b2lkIENDTGF5ZXJUcmVl
SG9zdDo6c2V0Vmlld3BvcnQoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQordm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OnNldFZpZXdwb3J0U2l6ZShjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUp
CiB7CisgICAgaWYgKHZpZXdwb3J0U2l6ZSA9PSBtX3ZpZXdwb3J0U2l6ZSkKKyAgICAgICAgcmV0
dXJuOworCiAgICAgY29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5zZXRNYXhNZW1vcnlMaW1pdEJ5
dGVzKFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRlcyh2aWV3cG9ydFNpemUpKTsKICAgICBj
b250ZW50c1RleHR1cmVNYW5hZ2VyKCktPnNldFByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMoVGV4
dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSkpOwogICAgIG1fdmll
d3BvcnRTaXplID0gdmlld3BvcnRTaXplOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmgJKHJldmlzaW9uIDEwMzk5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsNyAr
MTczLDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25z
dCB7IHJldHVybiBtX3NldHRpbmdzOyB9CiAKLSAgICB2b2lkIHNldFZpZXdwb3J0KGNvbnN0IElu
dFNpemUmIHZpZXdwb3J0U2l6ZSk7CisgICAgdm9pZCBzZXRWaWV3cG9ydFNpemUoY29uc3QgSW50
U2l6ZSYgdmlld3BvcnRTaXplKTsKIAogICAgIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRTaXplOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCShyZXZpc2lvbiAxMDM5OTUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzUzLDcgKzM1Myw3IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0
SW1wbDo6aW5pdGlhbGl6ZUxheWUKICAgICByZXR1cm4gbV9sYXllclJlbmRlcmVyOwogfQogCi12
b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFZpZXdwb3J0KGNvbnN0IEludFNpemUmIHZpZXdw
b3J0U2l6ZSkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0Vmlld3BvcnRTaXplKGNvbnN0
IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKIHsKICAgICBpZiAodmlld3BvcnRTaXplID09IG1fdmll
d3BvcnRTaXplKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5oCShyZXZpc2lvbiAxMDM5OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgaW50IHNvdXJjZUZyYW1lTnVtYmVy
KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VGcmFtZU51bWJlcjsgfQogICAgIHZvaWQgc2V0U291
cmNlRnJhbWVOdW1iZXIoaW50IGZyYW1lTnVtYmVyKSB7IG1fc291cmNlRnJhbWVOdW1iZXIgPSBm
cmFtZU51bWJlcjsgfQogCi0gICAgdm9pZCBzZXRWaWV3cG9ydChjb25zdCBJbnRTaXplJiB2aWV3
cG9ydFNpemUpOworICAgIHZvaWQgc2V0Vmlld3BvcnRTaXplKGNvbnN0IEludFNpemUmIHZpZXdw
b3J0U2l6ZSk7CiAgICAgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKCkgY29uc3QgeyByZXR1
cm4gbV92aWV3cG9ydFNpemU7IH0KICAgICB2b2lkIHNldFpvb21BbmltYXRvclRyYW5zZm9ybShj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTAzOTk1KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wMS0wMyAgWGlhbnpodSBX
YW5nICA8d2FuZ3hpYW56aHVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEF2b2lkIHVubmVjZXNz
YXJ5IFRleHR1cmVNYW5hZ2VyOjpyZWR1Y2VNZW1vcnlUb0xpbWl0KCkuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjA3OAorCisgICAgICAgIE1haW4g
cGFydCBvZiB0aGUgY2hhbmdlIGlzIGluIFNvdXJjZS9XZWJDb3JlLiBIZXJlIGFyZSBvbmx5IGNo
YW5nZXMKKyAgICAgICAgYWNjb3JkaW5nIHRvIHRoZSBjaGFuZ2Ugb2YgbmFtZSBDQ0xheWVyVHJl
ZUhvc3Q6OnNldFZpZXdwb3J0KCkgdG8KKyAgICAgICAgQ0NMYXllclRyZWVIb3N0OjpzZXRWaWV3
cG9ydFNpemUoKS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgYXMgaXQgZG9lc24ndCBjaGFuZ2UgYW55IGZ1bmN0aW9uYWxpdHku
CisKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkxheWVyVHJlZVZpZXc6OnNldFZpZXdwb3J0U2l6ZSk6CisgICAgICAgICogc3JjL1dlYlZp
ZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnVwZGF0ZUxheWVyVHJl
ZVZpZXdwb3J0KToKKwogMjAxMi0wMS0wMyAgU2hhd24gU2luZ2ggIDxzaGF3bnNpbmdoQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFB1c2ggZHJhd3NDb250ZW50IGFuZCBjb250
ZW50c1Zpc2libGUgaW50byBhY2NlbGVyYXRlZCBjb21wb3NpdG9yCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcAkocmV2aXNpb24gMTAz
OTk1KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBXZWJMYXllclRyZWVWaWV3Ojpj
b21wb3NpdGUoKQogCiB2b2lkIFdlYkxheWVyVHJlZVZpZXc6OnNldFZpZXdwb3J0U2l6ZShjb25z
dCBXZWJTaXplJiB2aWV3cG9ydFNpemUpCiB7Ci0gICAgbV9wcml2YXRlLT5zZXRWaWV3cG9ydCh2
aWV3cG9ydFNpemUpOworICAgIG1fcHJpdmF0ZS0+c2V0Vmlld3BvcnRTaXplKHZpZXdwb3J0U2l6
ZSk7CiB9CiAKIFdlYlNpemUgV2ViTGF5ZXJUcmVlVmlldzo6dmlld3BvcnRTaXplKCkgY29uc3QK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHJldmlz
aW9uIDEwMzk5NSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzA3Miw3ICszMDcyLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
dXBkYXRlTGF5ZXJUcmVlVmlld3BvcgogICAgICAgICBsYXllckFkanVzdFggPSAtdmlldy0+Y29u
dGVudHNTaXplKCkud2lkdGgoKSArIHZpZXctPnZpc2libGVDb250ZW50UmVjdChmYWxzZSkud2lk
dGgoKTsKICAgICB9CiAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QtPnNldFZpZXdwb3J0
KHZpc2libGVSZWN0LnNpemUoKSwgdmlldy0+Y29udGVudHNTaXplKCksIHNjcm9sbCwgcGFnZVNj
YWxlRmFjdG9yKCksIGxheWVyQWRqdXN0WCk7Ci0gICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3
cG9ydCh2aXNpYmxlUmVjdC5zaXplKCkpOworICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3Bv
cnRTaXplKHZpc2libGVSZWN0LnNpemUoKSk7CiAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRQYWdl
U2NhbGUocGFnZVNjYWxlRmFjdG9yKCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAkocmV2
aXNpb24gMTAzOTk1KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMiw3ICsyMjIsNyBAQCBURVNU
X0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGJsZW5kaW5nCiAgICAgR3JhcGhpY3NDb250ZXh0
M0Q6OkF0dHJpYnV0ZXMgYXR0cnM7CiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250
ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9t
V2ViQ29udGV4dChhZG9wdFB0cihuZXcgQmxlbmRTdGF0ZVRyYWNrZXJDb250ZXh0KCkpLCBhdHRy
cywgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93LCBHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OkZvclVzZU9uVGhpc1RocmVhZCk7CiAgICAgbV9ob3N0SW1w
bC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCk7Ci0gICAgbV9ob3N0SW1wbC0+c2V0
Vmlld3BvcnQoSW50U2l6ZSgxMCwgMTApKTsKKyAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNp
emUoSW50U2l6ZSgxMCwgMTApKTsKIAogICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IEND
TGF5ZXJJbXBsOjpjcmVhdGUoMCk7CiAgICAgcm9vdC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2lu
dCgwLCAwKSk7CkBAIC0zMjEsNyArMzIxLDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LCByZXNoYXBlTgogICAgIFJlc2hhcGVUcmFja2VyQ29udGV4dCogcmVzaGFwZVRyYWNrZXIg
PSBuZXcgUmVzaGFwZVRyYWNrZXJDb250ZXh0KCk7CiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0Nv
bnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihyZXNoYXBlVHJhY2tlciksIGF0dHJzLCAwLCBH
cmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3csIEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6Rm9yVXNlT25UaGlzVGhyZWFkKTsKICAgICBtX2hvc3RJbXBsLT5pbml0
aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0KTsKLSAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9y
dChJbnRTaXplKDEwLCAxMCkpOworICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRT
aXplKDEwLCAxMCkpOwogCiAgICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gYWRvcHRSZWYo
bmV3IEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsKDEpKTsKICAgICByb290LT5zZXRBbmNob3JQb2lu
dChGbG9hdFBvaW50KDAsIDApKTsKQEAgLTM3MSw3ICszNzEsNyBAQCBURVNUX0YoQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QsIHBhcnRpYWxTCiAgICAgc2V0dGluZ3MucGFydGlhbFN3YXBFbmFibGVk
ID0gdHJ1ZTsKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbGF5ZXJUcmVlSG9zdElt
cGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIHRoaXMpOwogICAgIGxh
eWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0KTsKLSAgICBs
YXllclRyZWVIb3N0SW1wbC0+c2V0Vmlld3BvcnQoSW50U2l6ZSg1MDAsIDUwMCkpOworICAgIGxh
eWVyVHJlZUhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSg1MDAsIDUwMCkpOwogCiAg
ICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gYWRvcHRSZWYobmV3IEZha2VEcmF3YWJsZUND
TGF5ZXJJbXBsKDEpKTsKICAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkID0gYWRvcHRSZWYo
bmV3IEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsKDIpKTsKQEAgLTQxMiw3ICs0MTIsNyBAQCBURVNU
X0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHBhcnRpYWxTCiAgICAgLy8gTWFrZSBzdXJlIHRo
YXQgcGFydGlhbCBzd2FwIGlzIGNvbnN0cmFpbmVkIHRvIHRoZSB2aWV3cG9ydCBkaW1lbnNpb25z
CiAgICAgLy8gZXhwZWN0ZWQgZGFtYWdlIHJlY3Q6IEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwg
SW50U2l6ZSg1MDAsIDUwMCkpOwogICAgIC8vIGV4cGVjdGVkIHN3YXAgcmVjdDogZmxpcHBlZCBk
YW1hZ2UgcmVjdCwgYnV0IGFsc28gY2xhbXBlZCB0byB2aWV3cG9ydAotICAgIGxheWVyVHJlZUhv
c3RJbXBsLT5zZXRWaWV3cG9ydChJbnRTaXplKDEwLCAxMCkpOworICAgIGxheWVyVHJlZUhvc3RJ
bXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsKICAgICByb290LT5zZXRPcGFj
aXR5KDAuNyk7IC8vIHRoaXMgd2lsbCBkYW1hZ2UgZXZlcnl0aGluZwogICAgIGxheWVyVHJlZUhv
c3RJbXBsLT5kcmF3TGF5ZXJzKCk7CiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnN3YXBCdWZmZXJz
KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRl
c3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0VGVzdC5jcHAJKHJldmlzaW9uIDEwMzk5NSkKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
OSw3ICsxMDksNyBAQCBwdWJsaWM6CiAgICAgICAgIGxheWVyVHJlZUhvc3QtPnNldFJvb3RMYXll
cihyb290TGF5ZXIpOwogCiAgICAgICAgIC8vIExheWVyVHJlZUhvc3RJbXBsIHdvbid0IGRyYXcg
aWYgaXQgaGFzIDF4MSB2aWV3cG9ydC4KLSAgICAgICAgbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3Bv
cnQoSW50U2l6ZSgxLCAxKSk7CisgICAgICAgIGxheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6
ZShJbnRTaXplKDEsIDEpKTsKIAogICAgICAgICByZXR1cm4gbGF5ZXJUcmVlSG9zdC5yZWxlYXNl
KCk7CiAgICAgfQpAQCAtOTgyLDcgKzk4Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
YmVnaW5UZXN0KCkKICAgICB7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVy
KG1fdXBkYXRlQ2hlY2tMYXllcik7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3Bv
cnQoSW50U2l6ZSgxMCwgMTApKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9y
dFNpemUoSW50U2l6ZSgxMCwgMTApKTsKIAogICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01h
aW5UaHJlYWQoKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121036</attachid>
            <date>2012-01-03 18:52:05 -0800</date>
            <delta_ts>2012-01-05 17:09:04 -0800</delta_ts>
            <desc>patch v2 (fixed style issues)</desc>
            <filename>72078</filename>
            <type>text/plain</type>
            <size>13158</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzk5OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDEyLTAxLTAzICBYaWFuemh1
IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQXZvaWQgdW5uZWNl
c3NhcnkgVGV4dHVyZU1hbmFnZXI6OnJlZHVjZU1lbW9yeVRvTGltaXQoKS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDc4CisKKyAgICAgICAgVW5u
ZWNlc3NhcnkgVGV4dHVyZU1hbmFnZXI6OnJlZHVjZU1lbW9yeVRvTGltaXQoKSB3aWxsIGNhdXNl
IHNvbWUgdGlsZQorICAgICAgICB0ZXh0dXJlcyB0aGF0IGFyZSByZXF1aXJlZCBzb29uIHRvIGJl
IHVubmVjZXNzYXJpbHkgcmVtb3ZlZC9yZXBsYWNlZCwKKyAgICAgICAgYW5kIGRlZ3JhZGUgcGVy
Zm9ybWFuY2UsIHNvbWV0aW1lcyBzaWduaWZpY2FudGx5LgorCisgICAgICAgIEZvciBleGFtcGxl
LCBDQ0xheWVyVHJlZUhvc3Q6OnNldFZpZXdwb3J0IHdpbGwgYmUgY2FsbGVkIGR1cmluZworICAg
ICAgICBzY3JvbGxpbmcuIFRoZSBvcmlnaW5hbCBjb2RlIHdvdWxkIGNhbGwgVGV4dHVyZU1hbmFn
ZXI6OnJlZHVjZU1lbW9yeVRvTGltaXQoKSwKKyAgICAgICAgY2F1c2luZyBzb21lIHRleHR1cmVz
IHVubmVjZXNzYXJpbHkgZGlzY2FyZGVkIGFuZCB0aGVuIHJlY3JlYXRlZAorICAgICAgICByZXBl
YXRlZGx5IGR1cmluZyBzY3JvbGxpbmcuCisKKyAgICAgICAgSXQncyBhbHNvIHVubmVjZXNzYXJ5
IHRvIGNhbGwgVGV4dHVyZU1hbmFnZXI6OnJlZHVjZU1lbW9yeVRvTGltaXQoKQorICAgICAgICBm
cm9tIFRleHR1cmVNYW5hZ2VyOjpzZXRQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKCkgYmVjYXVz
ZSB0aGUgbGltaXQKKyAgICAgICAgaXMgbm90IGEgaGFyZCBsaW1pdC4gVGhlIGNhbGxlcnMgc2hv
dWxkIGNhbGwgcmVkdWNlTWVtb3J5VG9MaW1pdCgpCisgICAgICAgIGV4cGxpY2l0bHkgaWYgaXQg
d2FudHMgaXQgd2hlbiBzZXR0aW5nIHRoZSBwcmVmZXJyZWQgbWVtb3J5IGxpbWl0LgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBh
cyBpdCBkb2Vzbid0IGNoYW5nZSBhbnkgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmZpbmlzaERyYXdpbmdGcmFtZSk6IENh
bGwgcmVkdWNlTWVtb3J5VG9MaW1pdCgpIGV4cGxpY2l0bHkKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFuYWdlcjo6c2V0UHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcyk6IFJlbW92ZWQgY2Fs
bCB0byByZWR1Y2VNZW1vcnlUb0xpbWl0KCkuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdDo6ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdDo6c2V0Vmlld3BvcnRTaXplKTogQ2hhbmdlZCBuYW1lIGZyb20gc2V0
Vmlld3BvcnQoKS4gQ2hlY2sgY2hhbmdlIG9mIHZpZXdwb3J0U2l6ZS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFZpZXdwb3J0U2l6ZSk6IENo
YW5nZWQgbmFtZSBmcm9tIHNldFZpZXdwb3J0KCkKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisKIDIwMTItMDEtMDMgIEFkYW0g
QmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICB2aWV3LXNvdXJjZSBkb2Vzbid0
IGNvbG9yaXplIDwvc2NyaXB0PiBjb3JyZWN0bHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmNwcAkocmV2aXNpb24gMTAzOTk1KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjc5LDExICs2NzksOSBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
ZmluaXNoRHJhd2luCiAKICAgICBzaXplX3QgY29udGVudHNNZW1vcnlVc2VCeXRlcyA9IG1fY29u
dGVudHNUZXh0dXJlQWxsb2NhdG9yLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKTsKICAgICBzaXpl
X3QgcmVjbGFpbUxpbWl0ID0gVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdw
b3J0U2l6ZSgpKTsKLSAgICBpZiAocmVjbGFpbUxpbWl0ID4gY29udGVudHNNZW1vcnlVc2VCeXRl
cykKLSAgICAgICAgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXItPnNldFByZWZlcnJlZE1l
bW9yeUxpbWl0Qnl0ZXMocmVjbGFpbUxpbWl0IC0gY29udGVudHNNZW1vcnlVc2VCeXRlcyk7Ci0g
ICAgZWxzZQotICAgICAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci0+c2V0UHJlZmVy
cmVkTWVtb3J5TGltaXRCeXRlcygwKTsKLQorICAgIHNpemVfdCBwcmVmZXJyZWRMaW1pdCA9IHJl
Y2xhaW1MaW1pdCA+IGNvbnRlbnRzTWVtb3J5VXNlQnl0ZXMgPyByZWNsYWltTGltaXQgLSBjb250
ZW50c01lbW9yeVVzZUJ5dGVzIDogMDsKKyAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdl
ci0+c2V0UHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcyhwcmVmZXJyZWRMaW1pdCk7CisgICAgbV9y
ZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRvTGltaXQocHJlZmVycmVk
TGltaXQpOwogICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT5kZWxldGVFdmljdGVk
VGV4dHVyZXMobV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CiAKICAgICBp
ZiAoc2V0dGluZ3MoKS5jb21wb3NpdGVPZmZzY3JlZW4pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFn
ZXIuY3BwCShyZXZpc2lvbiAxMDM5OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMiw3
ICsxMTIsNiBAQCB2b2lkIFRleHR1cmVNYW5hZ2VyOjpzZXRNYXhNZW1vcnlMaW1pdEJ5CiAKIHZv
aWQgVGV4dHVyZU1hbmFnZXI6OnNldFByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMoc2l6ZV90IG1l
bW9yeUxpbWl0Qnl0ZXMpCiB7Ci0gICAgcmVkdWNlTWVtb3J5VG9MaW1pdChtZW1vcnlMaW1pdEJ5
dGVzKTsKICAgICBtX3ByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMgPSBtZW1vcnlMaW1pdEJ5dGVz
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAJKHJldmlzaW9uIDEw
Mzk5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6ZmluaXNoQ29tbWl0T25JbXBsCiAgICAgaG9zdEltcGwtPnNldFNv
dXJjZUZyYW1lTnVtYmVyKGZyYW1lTnVtYmVyKCkpOwogICAgIGhvc3RJbXBsLT5zZXRIYXZlV2hl
ZWxFdmVudEhhbmRsZXJzKG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyk7CiAgICAgaG9zdEltcGwt
PnNldFpvb21BbmltYXRvclRyYW5zZm9ybShtX3pvb21BbmltYXRvclRyYW5zZm9ybSk7Ci0gICAg
aG9zdEltcGwtPnNldFZpZXdwb3J0KHZpZXdwb3J0U2l6ZSgpKTsKKyAgICBob3N0SW1wbC0+c2V0
Vmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSgpKTsKICAgICBob3N0SW1wbC0+c2V0UGFnZVNjYWxl
RmFjdG9yQW5kTGltaXRzKHBhZ2VTY2FsZSgpLCBtX21pblBhZ2VTY2FsZSwgbV9tYXhQYWdlU2Nh
bGUpOwogCiAgICAgbV9mcmFtZU51bWJlcisrOwpAQCAtMjUzLDggKzI1MywxMSBAQCB2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6c2V0Um9vdExheWVyKFBhc3NSCiAgICAgc2V0TmVlZHNDb21taXQoKTsK
IH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldFZpZXdwb3J0KGNvbnN0IEludFNpemUmIHZp
ZXdwb3J0U2l6ZSkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRWaWV3cG9ydFNpemUoY29uc3Qg
SW50U2l6ZSYgdmlld3BvcnRTaXplKQogeworICAgIGlmICh2aWV3cG9ydFNpemUgPT0gbV92aWV3
cG9ydFNpemUpCisgICAgICAgIHJldHVybjsKKwogICAgIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIo
KS0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyhUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXMo
dmlld3BvcnRTaXplKSk7CiAgICAgY29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5zZXRQcmVmZXJy
ZWRNZW1vcnlMaW1pdEJ5dGVzKFRleHR1cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyh2aWV3
cG9ydFNpemUpKTsKICAgICBtX3ZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCShyZXZpc2lvbiAxMDM5OTUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMTczLDcgKzE3Myw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IENDU2V0
dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5nczsgfQogCi0gICAgdm9p
ZCBzZXRWaWV3cG9ydChjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpOworICAgIHZvaWQgc2V0
Vmlld3BvcnRTaXplKGNvbnN0IEludFNpemUmKTsKIAogICAgIGNvbnN0IEludFNpemUmIHZpZXdw
b3J0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRTaXplOyB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCShyZXZpc2lvbiAxMDM5OTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUzLDcgKzM1Myw3IEBAIGJvb2wgQ0NMYXll
clRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxheWUKICAgICByZXR1cm4gbV9sYXllclJlbmRlcmVy
OwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFZpZXdwb3J0KGNvbnN0IEludFNp
emUmIHZpZXdwb3J0U2l6ZSkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0Vmlld3BvcnRT
aXplKGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKIHsKICAgICBpZiAodmlld3BvcnRTaXpl
ID09IG1fdmlld3BvcnRTaXplKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5oCShyZXZpc2lvbiAxMDM5OTUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgaW50IHNvdXJjZUZy
YW1lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VGcmFtZU51bWJlcjsgfQogICAgIHZv
aWQgc2V0U291cmNlRnJhbWVOdW1iZXIoaW50IGZyYW1lTnVtYmVyKSB7IG1fc291cmNlRnJhbWVO
dW1iZXIgPSBmcmFtZU51bWJlcjsgfQogCi0gICAgdm9pZCBzZXRWaWV3cG9ydChjb25zdCBJbnRT
aXplJiB2aWV3cG9ydFNpemUpOworICAgIHZvaWQgc2V0Vmlld3BvcnRTaXplKGNvbnN0IEludFNp
emUmKTsKICAgICBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUoKSBjb25zdCB7IHJldHVybiBt
X3ZpZXdwb3J0U2l6ZTsgfQogICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMDM5OTkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAxLTAzICBYaWFuemh1IFdhbmcg
IDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQXZvaWQgdW5uZWNlc3Nhcnkg
VGV4dHVyZU1hbmFnZXI6OnJlZHVjZU1lbW9yeVRvTGltaXQoKS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDc4CisKKyAgICAgICAgTWFpbiBwYXJ0
IG9mIHRoZSBjaGFuZ2UgaXMgaW4gU291cmNlL1dlYkNvcmUuIEhlcmUgYXJlIG9ubHkgY2hhbmdl
cworICAgICAgICBhY2NvcmRpbmcgdG8gdGhlIGNoYW5nZSBvZiBuYW1lIENDTGF5ZXJUcmVlSG9z
dDo6c2V0Vmlld3BvcnQoKSB0bworICAgICAgICBDQ0xheWVyVHJlZUhvc3Q6OnNldFZpZXdwb3J0
U2l6ZSgpLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyBhcyBpdCBkb2Vzbid0IGNoYW5nZSBhbnkgZnVuY3Rpb25hbGl0eS4KKwor
ICAgICAgICAqIHNyYy9XZWJMYXllclRyZWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
TGF5ZXJUcmVlVmlldzo6c2V0Vmlld3BvcnRTaXplKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0lt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dXBkYXRlTGF5ZXJUcmVlVmll
d3BvcnQpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6VEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RU
ZXN0LmNwcDoKKyAgICAgICAgKFdURjo6TW9ja0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSk6CisgICAg
ICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlOjpiZWdpblRlc3QpOgor
CiAyMDEyLTAxLTAzICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbY2hyb21pdW1dIExvY2FsRmlsZVN5c3RlbUNocm9taXVtIG5lZWRzIHNvbWUgdGhyZWFkIHNh
ZmV0eSBmaXhlcy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJl
ZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxh
eWVyVHJlZVZpZXcuY3BwCShyZXZpc2lvbiAxMDM5OTUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEs
NyBAQCB2b2lkIFdlYkxheWVyVHJlZVZpZXc6OmNvbXBvc2l0ZSgpCiAKIHZvaWQgV2ViTGF5ZXJU
cmVlVmlldzo6c2V0Vmlld3BvcnRTaXplKGNvbnN0IFdlYlNpemUmIHZpZXdwb3J0U2l6ZSkKIHsK
LSAgICBtX3ByaXZhdGUtPnNldFZpZXdwb3J0KHZpZXdwb3J0U2l6ZSk7CisgICAgbV9wcml2YXRl
LT5zZXRWaWV3cG9ydFNpemUodmlld3BvcnRTaXplKTsKIH0KIAogV2ViU2l6ZSBXZWJMYXllclRy
ZWVWaWV3Ojp2aWV3cG9ydFNpemUoKSBjb25zdApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkocmV2aXNpb24gMTAzOTk1KQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDcyLDcg
KzMwNzIsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjp1cGRhdGVMYXllclRyZWVWaWV3cG9yCiAgICAg
ICAgIGxheWVyQWRqdXN0WCA9IC12aWV3LT5jb250ZW50c1NpemUoKS53aWR0aCgpICsgdmlldy0+
dmlzaWJsZUNvbnRlbnRSZWN0KGZhbHNlKS53aWR0aCgpOwogICAgIH0KICAgICBtX25vbkNvbXBv
c2l0ZWRDb250ZW50SG9zdC0+c2V0Vmlld3BvcnQodmlzaWJsZVJlY3Quc2l6ZSgpLCB2aWV3LT5j
b250ZW50c1NpemUoKSwgc2Nyb2xsLCBwYWdlU2NhbGVGYWN0b3IoKSwgbGF5ZXJBZGp1c3RYKTsK
LSAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0KHZpc2libGVSZWN0LnNpemUoKSk7Cisg
ICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUodmlzaWJsZVJlY3Quc2l6ZSgpKTsK
ICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFBhZ2VTY2FsZShwYWdlU2NhbGVGYWN0b3IoKSk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCShyZXZpc2lvbiAxMDM5OTUpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjIyLDcgKzIyMiw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwg
YmxlbmRpbmcKICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyczsKICAgICBS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBCbGVu
ZFN0YXRlVHJhY2tlckNvbnRleHQoKSksIGF0dHJzLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UmVu
ZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Rm9yVXNl
T25UaGlzVGhyZWFkKTsKICAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihj
b250ZXh0KTsKLSAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydChJbnRTaXplKDEwLCAxMCkpOwor
ICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOwogCiAgICAg
UmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgwKTsKICAgICBy
b290LT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKQEAgLTMyMSw3ICszMjEsNyBA
QCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHJlc2hhcGVOCiAgICAgUmVzaGFwZVRy
YWNrZXJDb250ZXh0KiByZXNoYXBlVHJhY2tlciA9IG5ldyBSZXNoYXBlVHJhY2tlckNvbnRleHQo
KTsKICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRy
KHJlc2hhcGVUcmFja2VyKSwgYXR0cnMsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJl
Y3RseVRvSG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpGb3JVc2VPblRoaXNU
aHJlYWQpOwogICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQp
OwotICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0KEludFNpemUoMTAsIDEwKSk7CisgICAgbV9o
b3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAsIDEwKSk7CiAKICAgICBSZWZQdHI8
Q0NMYXllckltcGw+IHJvb3QgPSBhZG9wdFJlZihuZXcgRmFrZURyYXdhYmxlQ0NMYXllckltcGwo
MSkpOwogICAgIHJvb3QtPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOwpAQCAtMzcx
LDcgKzM3MSw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcGFydGlhbFMKICAg
ICBzZXR0aW5ncy5wYXJ0aWFsU3dhcEVuYWJsZWQgPSB0cnVlOwogICAgIE93blB0cjxDQ0xheWVy
VHJlZUhvc3RJbXBsPiBsYXllclRyZWVIb3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNy
ZWF0ZShzZXR0aW5ncywgdGhpcyk7CiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVM
YXllclJlbmRlcmVyKGNvbnRleHQpOwotICAgIGxheWVyVHJlZUhvc3RJbXBsLT5zZXRWaWV3cG9y
dChJbnRTaXplKDUwMCwgNTAwKSk7CisgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpZXdwb3J0
U2l6ZShJbnRTaXplKDUwMCwgNTAwKSk7CiAKICAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3Qg
PSBhZG9wdFJlZihuZXcgRmFrZURyYXdhYmxlQ0NMYXllckltcGwoMSkpOwogICAgIFJlZlB0cjxD
Q0xheWVySW1wbD4gY2hpbGQgPSBhZG9wdFJlZihuZXcgRmFrZURyYXdhYmxlQ0NMYXllckltcGwo
MikpOwpAQCAtNDEyLDcgKzQxMiw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwg
cGFydGlhbFMKICAgICAvLyBNYWtlIHN1cmUgdGhhdCBwYXJ0aWFsIHN3YXAgaXMgY29uc3RyYWlu
ZWQgdG8gdGhlIHZpZXdwb3J0IGRpbWVuc2lvbnMKICAgICAvLyBleHBlY3RlZCBkYW1hZ2UgcmVj
dDogSW50UmVjdChJbnRQb2ludDo6emVybygpLCBJbnRTaXplKDUwMCwgNTAwKSk7CiAgICAgLy8g
ZXhwZWN0ZWQgc3dhcCByZWN0OiBmbGlwcGVkIGRhbWFnZSByZWN0LCBidXQgYWxzbyBjbGFtcGVk
IHRvIHZpZXdwb3J0Ci0gICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpZXdwb3J0KEludFNpemUo
MTAsIDEwKSk7CisgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXpl
KDEwLCAxMCkpOwogICAgIHJvb3QtPnNldE9wYWNpdHkoMC43KTsgLy8gdGhpcyB3aWxsIGRhbWFn
ZSBldmVyeXRoaW5nCiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXllcnMoKTsKICAgICBs
YXllclRyZWVIb3N0SW1wbC0+c3dhcEJ1ZmZlcnMoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAkocmV2aXNpb24g
MTAzOTk1KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RU
ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAKICAgICAgICAgLy8g
TGF5ZXJUcmVlSG9zdEltcGwgd29uJ3QgZHJhdyBpZiBpdCBoYXMgMXgxIHZpZXdwb3J0LgotICAg
ICAgICBsYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydChJbnRTaXplKDEsIDEpKTsKKyAgICAgICAg
bGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMSwgMSkpOwogCiAgICAgICAg
IHJldHVybiBsYXllclRyZWVIb3N0LnJlbGVhc2UoKTsKICAgICB9CkBAIC05ODIsNyArOTgyLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBiZWdpblRlc3QoKQogICAgIHsKICAgICAgICAg
bV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIobV91cGRhdGVDaGVja0xheWVyKTsKLSAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydChJbnRTaXplKDEwLCAxMCkpOworICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOwogCiAg
ICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOwogICAgIH0K
</data>
<flag name="review"
          id="121414"
          type_id="1"
          status="-"
          setter="jamesr"
    />
          </attachment>
      

    </bug>

</bugzilla>