<?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>84306</bug_id>
          
          <creation_ts>2012-04-18 17:47:00 -0700</creation_ts>
          <short_desc>[Qt][WK2] Fixed layers are shaking when zoom level is not 1.0 due to a rounding error.</short_desc>
          <delta_ts>2012-04-30 18:10:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yael">yael</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>jturcotte</cc>
    
    <cc>menard</cc>
    
    <cc>noam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>605265</commentid>
    <comment_count>0</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-04-18 17:47:00 -0700</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605266</commentid>
    <comment_count>1</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-04-18 17:48:28 -0700</bug_when>
    <thetext>A patch is coming soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610612</commentid>
    <comment_count>2</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-04-26 07:54:03 -0700</bug_when>
    <thetext>There are 2 issues here:
1. When we zoom, the width and height of visibleContentsRect are not constant, and can change if we cross the integer boundaries.
2. The parent transform that is calculated in TextureMapperLayer::computeTransformsRecursive has a rounding error.
I have a patch that needs some cleanup. I will upload it once it is ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610677</commentid>
    <comment_count>3</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-04-26 09:20:31 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; There are 2 issues here:
&gt; 1. When we zoom, the width and height of visibleContentsRect are not constant, and can change if we cross the integer boundaries.
I meant to say when we scroll after we zoom.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610798</commentid>
    <comment_count>4</comment_count>
      <attachid>139036</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-04-26 12:04:30 -0700</bug_when>
    <thetext>Created attachment 139036
Patch.

When zooming, we need to be careful about how to convert the visible rect from float to int. Using toAlignedRect can produce inconsistent width and height when we are scrolling. This patch carefully modifies each piece of the visible rect, to avoid such rounding errors. In addition, the TransformMatrix we use for painting, needs to be adjusted for the same rounding error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610804</commentid>
    <comment_count>5</comment_count>
      <attachid>139036</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-04-26 12:11:39 -0700</bug_when>
    <thetext>Comment on attachment 139036
Patch.

why does visibleContentsRect need to have a consistent with and height? You only apply the rounding adjustment to x and y anyway.
Seems like you&apos;re solving two problems in this patch, one of which is not actually a problem :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610810</commentid>
    <comment_count>6</comment_count>
      <attachid>139036</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-04-26 12:19:28 -0700</bug_when>
    <thetext>Comment on attachment 139036
Patch.

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

&gt; Source/WebKit2/UIProcess/WebLayerTreeRenderer.cpp:108
&gt; +void WebLayerTreeRenderer::paintToCurrentGLContext(const TransformationMatrix&amp; transformationMatrix, float opacity, const FloatRect&amp; clipRect, TextureMapper::PaintFlags PaintFlags)
&gt;  {
&gt; +    TransformationMatrix matrix = transformationMatrix;

Why not keep matrix and name the new one newMatrix or so, that would follow the style elsewehre

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:551
&gt; +    // We cannot use toAlignedRect() because it produces inconsistent width and height.

QRectF::toAlignedRect() to be more precise

// We avoid using QRectF::toAlignedRect() as it produces incon...

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:556
&gt; +    result.setWidth(floor(result.width()));
&gt; +    result.setHeight(floor(result.height()));
&gt; +    result.moveLeft(floor(result.x()));
&gt; +    result.moveTop(floor(result.y()));
&gt; +    return result;

So now it is basically a QRect? What is the advantage of returning a QRectF which is basically a QRect and then later (look below) converting it to a IntRect?

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:601
&gt; +    webPageProxy-&gt;drawingArea()-&gt;setVisibleContentsRect(IntRect(IntPoint(), IntSize(viewportSize.width(), viewportSize.height())), 1, FloatPoint());

Maybe it would be nicer to create an IntRect and call setWidth etc... or maybe there is a better ctor.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:788
&gt; +    const QRectF visibleRect(visibleContentsRect());

What is the point in converting this to QRectF and then later converting it to IntRect, I assume it is already a FloatRect

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h:127
&gt; +    QRectF visibleContentsRect() const;

Ah, it is not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610836</commentid>
    <comment_count>7</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-04-26 12:43:30 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 139036 [details])
&gt; why does visibleContentsRect need to have a consistent with and height? You only apply the rounding adjustment to x and y anyway.
&gt; Seems like you&apos;re solving two problems in this patch, one of which is not actually a problem :)

Consider the css to be 
#myelement { position: fixed; right: 5px; } 
This element will be jumping back and forth as the width changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610846</commentid>
    <comment_count>8</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-04-26 12:48:09 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Consider the css to be 
&gt; #myelement { position: fixed; right: 5px; } 
&gt; This element will be jumping back and forth as the width changes.

Ah, right, since we&apos;re using the setFixedVisibleContentsRect thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610847</commentid>
    <comment_count>9</comment_count>
      <attachid>139036</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-04-26 12:48:28 -0700</bug_when>
    <thetext>Comment on attachment 139036
Patch.

See comments from Kenneth.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610851</commentid>
    <comment_count>10</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-04-26 12:53:47 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 139036 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=139036&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebLayerTreeRenderer.cpp:108
&gt; &gt; +void WebLayerTreeRenderer::paintToCurrentGLContext(const TransformationMatrix&amp; transformationMatrix, float opacity, const FloatRect&amp; clipRect, TextureMapper::PaintFlags PaintFlags)
&gt; &gt;  {
&gt; &gt; +    TransformationMatrix matrix = transformationMatrix;
&gt; 
&gt; Why not keep matrix and name the new one newMatrix or so, that would follow the style elsewehre
&gt; 
ok
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:551
&gt; &gt; +    // We cannot use toAlignedRect() because it produces inconsistent width and height.
&gt; 
&gt; QRectF::toAlignedRect() to be more precise
&gt; 
&gt; // We avoid using QRectF::toAlignedRect() as it produces incon...
&gt; 
ok
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:556
&gt; &gt; +    result.setWidth(floor(result.width()));
&gt; &gt; +    result.setHeight(floor(result.height()));
&gt; &gt; +    result.moveLeft(floor(result.x()));
&gt; &gt; +    result.moveTop(floor(result.y()));
&gt; &gt; +    return result;
&gt; 
&gt; So now it is basically a QRect? What is the advantage of returning a QRectF which is basically a QRect and then later (look below) converting it to a IntRect?
&gt; 
I think you are right, I&apos;ll give it a try.
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:601
&gt; &gt; +    webPageProxy-&gt;drawingArea()-&gt;setVisibleContentsRect(IntRect(IntPoint(), IntSize(viewportSize.width(), viewportSize.height())), 1, FloatPoint());
&gt; 
&gt; Maybe it would be nicer to create an IntRect and call setWidth etc... or maybe there is a better ctor.
&gt; 
(0, 0, viewportSize.width(), viewportSize.height()) 

&gt; &gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:788
&gt; &gt; +    const QRectF visibleRect(visibleContentsRect());
&gt; 
&gt; What is the point in converting this to QRectF and then later converting it to IntRect, I assume it is already a FloatRect
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h:127
&gt; &gt; +    QRectF visibleContentsRect() const;
&gt; 
&gt; Ah, it is not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610860</commentid>
    <comment_count>11</comment_count>
      <attachid>139036</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-04-26 12:59:09 -0700</bug_when>
    <thetext>Comment on attachment 139036
Patch.

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

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:796
&gt; +    if (layerTreeHostProxy-&gt;layerTreeRenderer())
&gt; +        layerTreeHostProxy-&gt;layerTreeRenderer()-&gt;setRoundingAdjustment(FloatSize(accurateVisibleRect.x() - visibleRect.x() * scale, accurateVisibleRect.y() - visibleRect.y() * scale));

Are you sure this should happen in commitScale? Seems like it would cause a small flicker since the rounding adjustment is only needed a bit later, after the committed scale has been actually rendered in the web process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610954</commentid>
    <comment_count>12</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-04-26 14:02:13 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 139036 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=139036&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:796
&gt; &gt; +    if (layerTreeHostProxy-&gt;layerTreeRenderer())
&gt; &gt; +        layerTreeHostProxy-&gt;layerTreeRenderer()-&gt;setRoundingAdjustment(FloatSize(accurateVisibleRect.x() - visibleRect.x() * scale, accurateVisibleRect.y() - visibleRect.y() * scale));
&gt; 
&gt; Are you sure this should happen in commitScale? Seems like it would cause a small flicker since the rounding adjustment is only needed a bit later, after the committed scale has been actually rendered in the web process.

I did not notice flicker when committing the zoom. We do have to do this after zooming, or else it bits the purpose of aligning the visible content rect all the time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610956</commentid>
    <comment_count>13</comment_count>
      <attachid>139067</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-04-26 14:05:18 -0700</bug_when>
    <thetext>Created attachment 139067
Patch.

Address Kenneth&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611417</commentid>
    <comment_count>14</comment_count>
      <attachid>139067</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-04-27 06:00:13 -0700</bug_when>
    <thetext>Comment on attachment 139067
Patch.

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

&gt; Source/WebKit2/UIProcess/WebLayerTreeRenderer.cpp:111
&gt; +    TransformationMatrix newMatrix = matrix;
&gt; +    newMatrix.setM41(newMatrix.m41() + m_roundingAdjustment.width());
&gt; +    newMatrix.setM42(newMatrix.m42() + m_roundingAdjustment.height());
&gt; +

just use translate(m_roundingAdjustment)

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:793
&gt; +        layerTreeHostProxy-&gt;layerTreeRenderer()-&gt;setRoundingAdjustment(FloatSize(accurateVisibleRect.x() - visibleRect.x() * scale, accurateVisibleRect.y() - visibleRect.y() * scale));

This will create a flicker in certain situations.
LayerTreeRenderer updates the rounding adjustment here, but only updates the scroll position in didChangeScrollPosition. Those two values need to go in sync, e.g. by sending the rounding adjustment together with the trajectory, or something to that effect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611440</commentid>
    <comment_count>15</comment_count>
      <attachid>139067</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-04-27 06:34:58 -0700</bug_when>
    <thetext>Comment on attachment 139067
Patch.

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

Thread safety issues with this patch - calling WebLayerTreeRenderer functions from the main thread and renderer thread.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:553
&gt; +    QRect result(floor(mappedRect.x()), floor(mappedRect.y()), floor(mappedRect.width()), floor(mappedRect.height()));
&gt; +    return result;

return QRect(floor(mappedRect.x()), floor(mappedRect.y()), floor(mappedRect.width()), floor(mappedRect.height()));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611514</commentid>
    <comment_count>16</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-04-27 08:18:00 -0700</bug_when>
    <thetext>This feels like a brittle solution, I don&apos;t understand why
- We still send a rounded visible rect
- We calculate the error of the rounding and send it to the same destination in parallel
- Then we readjust the inaccurate visible rect with the accuracy adjustment.

Why not send a proper visible rect in the first place that uses floats?
Else I think we should just send a separate complete accurate visible rect instead of an adjustment of the error of the first one. This code is bound to break the moment that one of those two values is touched without making sure that they are synchronized (and we have no auto-test that covers this).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611561</commentid>
    <comment_count>17</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-04-27 09:10:12 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; This feels like a brittle solution, I don&apos;t understand why
&gt; - We still send a rounded visible rect
&gt; - We calculate the error of the rounding and send it to the same destination in parallel
&gt; - Then we readjust the inaccurate visible rect with the accuracy adjustment.
&gt; 
&gt; Why not send a proper visible rect in the first place that uses floats?
&gt; Else I think we should just send a separate complete accurate visible rect instead of an adjustment of the error of the first one. This code is bound to break the moment that one of those two values is touched without making sure that they are synchronized (and we have no auto-test that covers this).

I have to agree with Jocelyn on this. There must be a more robust solution</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611577</commentid>
    <comment_count>18</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-04-27 09:31:56 -0700</bug_when>
    <thetext>The simple answer to your concern is that we have to make absolutely _everything_ float. That includes backing store, visibleContentRect in webcore, etc.
This type of change will impact all ports and I highly doubt that it will be accepted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611580</commentid>
    <comment_count>19</comment_count>
      <attachid>139219</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-04-27 09:33:26 -0700</bug_when>
    <thetext>Created attachment 139219
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611588</commentid>
    <comment_count>20</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-04-27 09:37:15 -0700</bug_when>
    <thetext>With the latest version of the patch, everything is calculated and passed together. The chances of things getting out of sync are very slim.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611599</commentid>
    <comment_count>21</comment_count>
      <attachid>139219</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-04-27 09:49:56 -0700</bug_when>
    <thetext>Comment on attachment 139219
Patch.

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

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:787
&gt; +    QRectF accurateVisibleRect(q-&gt;boundingRect());
&gt; +    accurateVisibleRect.translate(contentPos());
&gt; +    drawingArea-&gt;setVisibleContentsRect(visibleRect, scale, trajectoryVector, FloatSize((accurateVisibleRect.x() - visibleRect.x() * scale) / scale, (accurateVisibleRect.y() - visibleRect.y() * scale) / scale));

How about sending a FloatRect visible rect directly to WebLayerTreeRenderer, and continue sending the rounded one to DrawingArea?
Plus the scale isn&apos;t needed in WebLayerTreeRenderer, m_contentsScale is unused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612262</commentid>
    <comment_count>22</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-04-28 06:36:17 -0700</bug_when>
    <thetext>Setting the adjustment in updatePaintNode is causing problems.

visibleContentsRect is not being updated during pinch zoom, so I cannot use it to calculate the adjustment during pinch zoom without hacking something. I need to either know that we are in the process of pinching, or do a lot of re-calculations in updatePaintNode.

Setting the adjustment in _q_contentViewportChanged does not require such hacks, because the adjustment does not change during pinch zoom.

Noam, Jocelyn, is it really important that we do it in updatePaintNode, and hack around the pinch issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612424</commentid>
    <comment_count>23</comment_count>
      <attachid>139400</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-04-29 05:42:33 -0700</bug_when>
    <thetext>Created attachment 139400
Patch.

Update patch after Friday&apos;s changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613003</commentid>
    <comment_count>24</comment_count>
      <attachid>139400</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-04-30 15:17:16 -0700</bug_when>
    <thetext>Comment on attachment 139400
Patch.

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

&gt; Source/WebKit2/UIProcess/DrawingAreaProxy.h:95
&gt; +    virtual void setVisibleContentsRect(const WebCore::IntRect&amp; visibleContentsRect, float scale, const WebCore::FloatPoint&amp; trajectoryVector, const WebCore::FloatPoint&amp; = WebCore::FloatPoint()) { }

you can name the parameter here

&gt; Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h:83
&gt; +    virtual void setVisibleContentsRect(const WebCore::IntRect&amp; visibleContentsRect, float scale, const WebCore::FloatPoint&amp; trajectory, const WebCore::FloatPoint&amp; = WebCore::FloatPoint());

Use parameter name

&gt; Source/WebKit2/UIProcess/LayerTreeHostProxy.cpp:132
&gt; +    dispatchUpdate(bind(&amp;WebLayerTreeRenderer::setVisibleContentsRect, m_renderer.get(), rect, scale, accurateVisibleContentPosition));

Content -&gt; Contents

&gt; Source/WebKit2/UIProcess/LayerTreeHostProxy.h:58
&gt; +    void setVisibleContentsRect(const WebCore::IntRect&amp;, float scale, const WebCore::FloatPoint&amp; trajectory, const WebCore::FloatPoint&amp; accurateVisibleContentPosition);

Content -&gt; Contents

&gt; Source/WebKit2/UIProcess/WebLayerTreeRenderer.cpp:113
&gt; +    newMatrix.translate(m_accurateVisibleContentPosition.x() / m_contentsScale - m_visibleContentsRect.x(), m_accurateVisibleContentPosition.y() / m_contentsScale - m_visibleContentsRect.y());

Add comment

&gt; Source/WebKit2/UIProcess/WebLayerTreeRenderer.cpp:163
&gt; +void WebLayerTreeRenderer::setVisibleContentsRect(const IntRect&amp; rect, float scale, const WebCore::FloatPoint&amp; accurateVisibleContentPosition)

Content -&gt; Contents

&gt; Source/WebKit2/UIProcess/WebLayerTreeRenderer.h:105
&gt; +    WebCore::FloatPoint m_accurateVisibleContentPosition;

Content -&gt; Contents</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613068</commentid>
    <comment_count>25</comment_count>
      <attachid>139546</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-04-30 16:49:08 -0700</bug_when>
    <thetext>Created attachment 139546
Patch.

Address comment #24.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613125</commentid>
    <comment_count>26</comment_count>
      <attachid>139546</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-30 18:09:52 -0700</bug_when>
    <thetext>Comment on attachment 139546
Patch.

Clearing flags on attachment: 139546

Committed r115696: &lt;http://trac.webkit.org/changeset/115696&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613126</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-30 18:10:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139036</attachid>
            <date>2012-04-26 12:04:30 -0700</date>
            <delta_ts>2012-04-26 14:05:18 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>84306.patch</filename>
            <type>text/plain</type>
            <size>7182</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNTMzNykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA0LTI2ICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdW1dLMl0gRml4ZWQg
bGF5ZXJzIGFyZSBzaGFraW5nIHdoZW4gem9vbSBsZXZlbCBpcyBub3QgMS4wIGR1ZSB0byBhIHJv
dW5kaW5nIGVycm9yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODQzMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXaGVuIHpvb21pbmcsIHdlIG5lZWQgdG8gYmUgY2FyZWZ1bCBhYm91dCBob3cgdG8gY29u
dmVydCB0aGUgdmlzaWJsZSByZWN0IGZyb20gZmxvYXQgdG8gaW50LgorICAgICAgICBVc2luZyB0
b0FsaWduZWRSZWN0IGNhbiBwcm9kdWNlIGluY29uc2lzdGVudCB3aWR0aCBhbmQgaGVpZ2h0IHdo
ZW4gd2UgYXJlIHNjcm9sbGluZy4KKyAgICAgICAgVGhpcyBwYXRjaCBjYXJlZnVsbHkgbW9kaWZp
ZXMgZWFjaCBwaWVjZSBvZiB0aGUgdmlzaWJsZSByZWN0LCB0byBhdm9pZCBzdWNoIHJvdW5kaW5n
IGVycm9ycy4KKyAgICAgICAgSW4gYWRkaXRpb24sIHRoZSBUcmFuc2Zvcm1NYXRyaXggd2UgdXNl
IGZvciBwYWludGluZywgbmVlZHMgdG8gYmUgYWRqdXN0ZWQgZm9yIHRoZSBzYW1lIHJvdW5kaW5n
IGVycm9yLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcDoK
KyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjp2aXNpYmxlQ29udGVudHNSZWN0KToKKyAg
ICAgICAgKFFRdWlja1dlYlZpZXdMZWdhY3lQcml2YXRlOjp1cGRhdGVWaWV3cG9ydFNpemUpOgor
ICAgICAgICAoUVF1aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6Ol9xX2NvbnRlbnRWaWV3cG9y
dENoYW5nZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3Au
aDoKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViTGF5ZXJUcmVlUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVS
ZW5kZXJlcjo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJMYXllclRyZWVSZW5kZXJlci5oOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVSZW5k
ZXJlcjo6c2V0Um91bmRpbmdBZGp1c3RtZW50KToKKyAgICAgICAgKFdlYkxheWVyVHJlZVJlbmRl
cmVyKToKKwogMjAxMi0wNC0yNSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAog
ICAgICAgICBQbGFjZWhvbGRlciB2aWV3IGlzIGltbWVkaWF0ZWx5IHJlbW92ZWQgZnJvbSBob3N0
aW5nIHdpbmRvdyB1cG9uIGVudGVyaW5nIGZ1bGwgc2NyZWVuLgpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCShyZXZpc2lvbiAx
MTUzMjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsOCArMTAzLDEyIEBAIFBhc3NPd25QdHI8R3JhcGhp
Y3NMYXllcj4gV2ViTGF5ZXJUcmVlUmUKICAgICByZXR1cm4gYWRvcHRQdHIobmV3TGF5ZXIpOwog
fQogCi12b2lkIFdlYkxheWVyVHJlZVJlbmRlcmVyOjpwYWludFRvQ3VycmVudEdMQ29udGV4dChj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBG
bG9hdFJlY3QmIGNsaXBSZWN0LCBUZXh0dXJlTWFwcGVyOjpQYWludEZsYWdzIFBhaW50RmxhZ3Mp
Cit2b2lkIFdlYkxheWVyVHJlZVJlbmRlcmVyOjpwYWludFRvQ3VycmVudEdMQ29udGV4dChjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtYXRpb25NYXRyaXgsIGZsb2F0IG9wYWNp
dHksIGNvbnN0IEZsb2F0UmVjdCYgY2xpcFJlY3QsIFRleHR1cmVNYXBwZXI6OlBhaW50RmxhZ3Mg
UGFpbnRGbGFncykKIHsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXggPSB0cmFuc2Zv
cm1hdGlvbk1hdHJpeDsKKyAgICBtYXRyaXguc2V0TTQxKG1hdHJpeC5tNDEoKSArIG1fcm91bmRp
bmdBZGp1c3RtZW50LndpZHRoKCkpOworICAgIG1hdHJpeC5zZXRNNDIobWF0cml4Lm00MigpICsg
bV9yb3VuZGluZ0FkanVzdG1lbnQuaGVpZ2h0KCkpOworCiAgICAgaWYgKCFtX3RleHR1cmVNYXBw
ZXIpCiAgICAgICAgIG1fdGV4dHVyZU1hcHBlciA9IFRleHR1cmVNYXBwZXI6OmNyZWF0ZShUZXh0
dXJlTWFwcGVyOjpPcGVuR0xNb2RlKTsKICAgICBBU1NFUlQobV90ZXh0dXJlTWFwcGVyLT5hY2Nl
bGVyYXRpb25Nb2RlKCkgPT0gVGV4dHVyZU1hcHBlcjo6T3BlbkdMTW9kZSk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuaAkocmV2aXNp
b24gMTE1MzI1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRl
cmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0Q29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwogICAgIHZvaWQgc2V0
VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgZmxvYXQgc2NhbGUp
OwogICAgIHZvaWQgZGlkQ2hhbmdlU2Nyb2xsUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIHBvc2l0aW9uKTsKKyAgICB2b2lkIHNldFJvdW5kaW5nQWRqdXN0bWVudChjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmIGFkanVzdG1lbnQpIHsgbV9yb3VuZGluZ0FkanVzdG1lbnQgPSBhZGp1
c3RtZW50OyB9CiAKICAgICB2b2lkIGRldGFjaCgpOwogICAgIHZvaWQgYXBwZW5kVXBkYXRlKGNv
bnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsKQEAgLTEzMyw2ICsxMzQsNyBAQCBwcml2YXRlOgogICAg
IFdlYkxheWVySUQgbV9yb290TGF5ZXJJRDsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBtX3JlbmRl
cmVkQ29udGVudHNTY3JvbGxQb3NpdGlvbjsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBtX3BlbmRp
bmdSZW5kZXJlZENvbnRlbnRzU2Nyb2xsUG9zaXRpb247CisgICAgV2ViQ29yZTo6RmxvYXRTaXpl
IG1fcm91bmRpbmdBZGp1c3RtZW50OwogICAgIGJvb2wgbV9pc0FjdGl2ZTsKIH07CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNw
cAkocmV2aXNpb24gMTE1MzI1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5j
bHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlJbXBsLmgi
CisjaW5jbHVkZSAiTGF5ZXJUcmVlSG9zdFByb3h5LmgiCiAjaW5jbHVkZSAiUXREaWFsb2dSdW5u
ZXIuaCIKICNpbmNsdWRlICJRdERvd25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIlF0Vmlld3Bv
cnRJbnRlcmFjdGlvbkVuZ2luZS5oIgpAQCAtMzMsNiArMzQsNyBAQAogI2luY2x1ZGUgIlF0V2Vi
UGFnZVBvbGljeUNsaWVudC5oIgogI2luY2x1ZGUgIlV0aWxzUXQuaCIKICNpbmNsdWRlICJXZWJC
YWNrRm9yd2FyZExpc3QuaCIKKyNpbmNsdWRlICJXZWJMYXllclRyZWVSZW5kZXJlci5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAKQEAg
LTU0MCwxMiArNTQyLDE4IEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OnNldENvbnRlbnRQ
b3MKICAgICBxLT5zZXRDb250ZW50WShwb3MueSgpKTsKIH0KIAotUVJlY3QgUVF1aWNrV2ViVmll
d1ByaXZhdGU6OnZpc2libGVDb250ZW50c1JlY3QoKSBjb25zdAorUVJlY3RGIFFRdWlja1dlYlZp
ZXdQcml2YXRlOjp2aXNpYmxlQ29udGVudHNSZWN0KCkgY29uc3QKIHsKICAgICBRX1EoY29uc3Qg
UVF1aWNrV2ViVmlldyk7CiAgICAgY29uc3QgUVJlY3RGIHZpc2libGVSZWN0KHEtPmJvdW5kaW5n
UmVjdCgpLmludGVyc2VjdGVkKHBhZ2VWaWV3LT5ib3VuZGluZ1JlY3QoKSkpOwogCi0gICAgcmV0
dXJuIHEtPm1hcFJlY3RUb1dlYkNvbnRlbnQodmlzaWJsZVJlY3QpLnRvQWxpZ25lZFJlY3QoKTsK
KyAgICBRUmVjdEYgcmVzdWx0KHEtPm1hcFJlY3RUb1dlYkNvbnRlbnQodmlzaWJsZVJlY3QpKTsK
KyAgICAvLyBXZSBjYW5ub3QgdXNlIHRvQWxpZ25lZFJlY3QoKSBiZWNhdXNlIGl0IHByb2R1Y2Vz
IGluY29uc2lzdGVudCB3aWR0aCBhbmQgaGVpZ2h0LgorICAgIHJlc3VsdC5zZXRXaWR0aChmbG9v
cihyZXN1bHQud2lkdGgoKSkpOworICAgIHJlc3VsdC5zZXRIZWlnaHQoZmxvb3IocmVzdWx0Lmhl
aWdodCgpKSk7CisgICAgcmVzdWx0Lm1vdmVMZWZ0KGZsb29yKHJlc3VsdC54KCkpKTsKKyAgICBy
ZXN1bHQubW92ZVRvcChmbG9vcihyZXN1bHQueSgpKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAogV2ViQ29yZTo6SW50U2l6ZSBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6dmlld1NpemUoKSBjb25z
dApAQCAtNTkwLDcgKzU5OCw3IEBAIHZvaWQgUVF1aWNrV2ViVmlld0xlZ2FjeVByaXZhdGU6OnVw
ZGF0ZVYKICAgICAvLyB3aGV0aGVyIGl0cyBmaXhlZCBvciBub3QuIFdlIHN0aWxsIG5lZWQgdG8g
dGVsbCB0aGUgZHJhd2luZyBhcmVhIHdoaWNoIHBhcnQgb2YgaXQKICAgICAvLyBoYXMgdG8gYmUg
cmVuZGVyZWQgb24gdGlsZXMsIGFuZCBpbiBkZXNrdG9wIG1vZGUgaXQncyBhbGwgb2YgaXQuCiAg
ICAgd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpLT5zZXRTaXplKHZpZXdwb3J0U2l6ZSwgSW50
U2l6ZSgpKTsKLSAgICB3ZWJQYWdlUHJveHktPmRyYXdpbmdBcmVhKCktPnNldFZpc2libGVDb250
ZW50c1JlY3QoSW50UmVjdChJbnRQb2ludCgpLCB2aWV3cG9ydFNpemUpLCAxLCBGbG9hdFBvaW50
KCkpOworICAgIHdlYlBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKS0+c2V0VmlzaWJsZUNvbnRlbnRz
UmVjdChJbnRSZWN0KEludFBvaW50KCksIEludFNpemUodmlld3BvcnRTaXplLndpZHRoKCksIHZp
ZXdwb3J0U2l6ZS5oZWlnaHQoKSkpLCAxLCBGbG9hdFBvaW50KCkpOwogfQogCiB2b2lkIFFRdWlj
a1dlYlZpZXdMZWdhY3lQcml2YXRlOjplbmFibGVNb3VzZUV2ZW50cygpCkBAIC03NzcsMTAgKzc4
NSwxNSBAQCB2b2lkIFFRdWlja1dlYlZpZXdGbGlja2FibGVQcml2YXRlOjpfcV9jCiAgICAgaWYg
KCFkcmF3aW5nQXJlYSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29uc3QgUVJlY3QgdmlzaWJs
ZVJlY3QodmlzaWJsZUNvbnRlbnRzUmVjdCgpKTsKKyAgICBjb25zdCBRUmVjdEYgdmlzaWJsZVJl
Y3QodmlzaWJsZUNvbnRlbnRzUmVjdCgpKTsKICAgICBmbG9hdCBzY2FsZSA9IHBhZ2VWaWV3LT5j
b250ZW50c1NjYWxlKCk7CiAKLSAgICBkcmF3aW5nQXJlYS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVj
dCh2aXNpYmxlUmVjdCwgc2NhbGUsIHRyYWplY3RvcnlWZWN0b3IpOworICAgIGRyYXdpbmdBcmVh
LT5zZXRWaXNpYmxlQ29udGVudHNSZWN0KEludFJlY3QodmlzaWJsZVJlY3QueCgpLCB2aXNpYmxl
UmVjdC55KCksIHZpc2libGVSZWN0LndpZHRoKCksIHZpc2libGVSZWN0LmhlaWdodCgpKSwgc2Nh
bGUsIHRyYWplY3RvcnlWZWN0b3IpOworICAgIFFSZWN0RiBhY2N1cmF0ZVZpc2libGVSZWN0KHEt
PmJvdW5kaW5nUmVjdCgpKTsKKyAgICBhY2N1cmF0ZVZpc2libGVSZWN0LnRyYW5zbGF0ZShjb250
ZW50UG9zKCkpOworICAgIExheWVyVHJlZUhvc3RQcm94eSogbGF5ZXJUcmVlSG9zdFByb3h5ID0g
ZHJhd2luZ0FyZWEtPmxheWVyVHJlZUhvc3RQcm94eSgpOworICAgIGlmIChsYXllclRyZWVIb3N0
UHJveHktPmxheWVyVHJlZVJlbmRlcmVyKCkpCisgICAgICAgIGxheWVyVHJlZUhvc3RQcm94eS0+
bGF5ZXJUcmVlUmVuZGVyZXIoKS0+c2V0Um91bmRpbmdBZGp1c3RtZW50KEZsb2F0U2l6ZShhY2N1
cmF0ZVZpc2libGVSZWN0LngoKSAtIHZpc2libGVSZWN0LngoKSAqIHNjYWxlLCBhY2N1cmF0ZVZp
c2libGVSZWN0LnkoKSAtIHZpc2libGVSZWN0LnkoKSAqIHNjYWxlKSk7CiB9CiAKIHZvaWQgUVF1
aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6Ol9xX3N1c3BlbmQoKQpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaAkocmV2
aXNpb24gMTE1MzI1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3
ZWJ2aWV3X3BfcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNyArMTI0LDcgQEAgcHVibGljOgog
ICAgIFFQb2ludEYgY29udGVudFBvcygpIGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGVudFBvcyhj
b25zdCBRUG9pbnRGJik7CiAKLSAgICBRUmVjdCB2aXNpYmxlQ29udGVudHNSZWN0KCkgY29uc3Q7
CisgICAgUVJlY3RGIHZpc2libGVDb250ZW50c1JlY3QoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0
RGlhbG9nQWN0aXZlKGJvb2wgYWN0aXZlKSB7IG1fZGlhbG9nQWN0aXZlID0gYWN0aXZlOyB9CiAK
</data>
<flag name="review"
          id="144576"
          type_id="1"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139067</attachid>
            <date>2012-04-26 14:05:18 -0700</date>
            <delta_ts>2012-04-27 09:33:26 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>84306.patch</filename>
            <type>text/plain</type>
            <size>5775</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNTM1MykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA0LTI2ICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdW1dLMl0gRml4ZWQg
bGF5ZXJzIGFyZSBzaGFraW5nIHdoZW4gem9vbSBsZXZlbCBpcyBub3QgMS4wIGR1ZSB0byBhIHJv
dW5kaW5nIGVycm9yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODQzMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXaGVuIHpvb21pbmcsIHdlIG5lZWQgdG8gYmUgY2FyZWZ1bCBhYm91dCBob3cgdG8gY29u
dmVydCB0aGUgdmlzaWJsZSByZWN0IGZyb20gZmxvYXQgdG8gaW50LgorICAgICAgICBVc2luZyB0
b0FsaWduZWRSZWN0IGNhbiBwcm9kdWNlIGluY29uc2lzdGVudCB3aWR0aCBhbmQgaGVpZ2h0IHdo
ZW4gd2UgYXJlIHNjcm9sbGluZy4KKyAgICAgICAgVGhpcyBwYXRjaCBjYXJlZnVsbHkgbW9kaWZp
ZXMgZWFjaCBwaWVjZSBvZiB0aGUgdmlzaWJsZSByZWN0LCB0byBhdm9pZCBzdWNoIHJvdW5kaW5n
IGVycm9ycy4KKyAgICAgICAgSW4gYWRkaXRpb24sIHRoZSBUcmFuc2Zvcm1NYXRyaXggd2UgdXNl
IGZvciBwYWludGluZywgbmVlZHMgdG8gYmUgYWRqdXN0ZWQgZm9yIHRoZSBzYW1lIHJvdW5kaW5n
IGVycm9yLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcDoK
KyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjp2aXNpYmxlQ29udGVudHNSZWN0KToKKyAg
ICAgICAgKFFRdWlja1dlYlZpZXdGbGlja2FibGVQcml2YXRlOjpfcV9jb250ZW50Vmlld3BvcnRD
aGFuZ2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVSZW5kZXJlcjo6cGFpbnRUb0N1cnJlbnRHTENv
bnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVSZW5kZXJlcjo6c2V0Um91bmRpbmdBZGp1c3RtZW50
KToKKyAgICAgICAgKFdlYkxheWVyVHJlZVJlbmRlcmVyKToKKwogMjAxMi0wNC0yNSAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBQbGFjZWhvbGRlciB2aWV3IGlz
IGltbWVkaWF0ZWx5IHJlbW92ZWQgZnJvbSBob3N0aW5nIHdpbmRvdyB1cG9uIGVudGVyaW5nIGZ1
bGwgc2NyZWVuLgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJl
bmRlcmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTGF5
ZXJUcmVlUmVuZGVyZXIuY3BwCShyZXZpc2lvbiAxMTUzMjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUs
NiArMTA1LDEwIEBAIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gV2ViTGF5ZXJUcmVlUmUKIAog
dm9pZCBXZWJMYXllclRyZWVSZW5kZXJlcjo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgRmxvYXRS
ZWN0JiBjbGlwUmVjdCwgVGV4dHVyZU1hcHBlcjo6UGFpbnRGbGFncyBQYWludEZsYWdzKQogewor
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG5ld01hdHJpeCA9IG1hdHJpeDsKKyAgICBuZXdNYXRy
aXguc2V0TTQxKG5ld01hdHJpeC5tNDEoKSArIG1fcm91bmRpbmdBZGp1c3RtZW50LndpZHRoKCkp
OworICAgIG5ld01hdHJpeC5zZXRNNDIobmV3TWF0cml4Lm00MigpICsgbV9yb3VuZGluZ0FkanVz
dG1lbnQuaGVpZ2h0KCkpOworCiAgICAgaWYgKCFtX3RleHR1cmVNYXBwZXIpCiAgICAgICAgIG1f
dGV4dHVyZU1hcHBlciA9IFRleHR1cmVNYXBwZXI6OmNyZWF0ZShUZXh0dXJlTWFwcGVyOjpPcGVu
R0xNb2RlKTsKICAgICBBU1NFUlQobV90ZXh0dXJlTWFwcGVyLT5hY2NlbGVyYXRpb25Nb2RlKCkg
PT0gVGV4dHVyZU1hcHBlcjo6T3BlbkdMTW9kZSk7CkBAIC0xMjQsOSArMTI4LDkgQEAgdm9pZCBX
ZWJMYXllclRyZWVSZW5kZXJlcjo6cGFpbnRUb0N1cnJlbgogICAgIG1fdGV4dHVyZU1hcHBlci0+
YmVnaW5QYWludGluZyhQYWludEZsYWdzKTsKICAgICBtX3RleHR1cmVNYXBwZXItPmJlZ2luQ2xp
cChUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjbGlwUmVjdCk7CiAKLSAgICBpZiAoY3VycmVudFJv
b3RMYXllci0+b3BhY2l0eSgpICE9IG9wYWNpdHkgfHwgY3VycmVudFJvb3RMYXllci0+dHJhbnNm
b3JtKCkgIT0gbWF0cml4KSB7CisgICAgaWYgKGN1cnJlbnRSb290TGF5ZXItPm9wYWNpdHkoKSAh
PSBvcGFjaXR5IHx8IGN1cnJlbnRSb290TGF5ZXItPnRyYW5zZm9ybSgpICE9IG5ld01hdHJpeCkg
ewogICAgICAgICBjdXJyZW50Um9vdExheWVyLT5zZXRPcGFjaXR5KG9wYWNpdHkpOwotICAgICAg
ICBjdXJyZW50Um9vdExheWVyLT5zZXRUcmFuc2Zvcm0obWF0cml4KTsKKyAgICAgICAgY3VycmVu
dFJvb3RMYXllci0+c2V0VHJhbnNmb3JtKG5ld01hdHJpeCk7CiAgICAgICAgIGN1cnJlbnRSb290
TGF5ZXItPnN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOwogICAgIH0KIApJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVy
LmgJKHJldmlzaW9uIDExNTMyNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMYXll
clRyZWVSZW5kZXJlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldENvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKICAg
ICB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGZs
b2F0IHNjYWxlKTsKICAgICB2b2lkIGRpZENoYW5nZVNjcm9sbFBvc2l0aW9uKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBwb3NpdGlvbik7CisgICAgdm9pZCBzZXRSb3VuZGluZ0FkanVzdG1lbnQo
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBhZGp1c3RtZW50KSB7IG1fcm91bmRpbmdBZGp1c3Rt
ZW50ID0gYWRqdXN0bWVudDsgfQogCiAgICAgdm9pZCBkZXRhY2goKTsKICAgICB2b2lkIGFwcGVu
ZFVwZGF0ZShjb25zdCBGdW5jdGlvbjx2b2lkKCk+Jik7CkBAIC0xMzMsNiArMTM0LDcgQEAgcHJp
dmF0ZToKICAgICBXZWJMYXllcklEIG1fcm9vdExheWVySUQ7CiAgICAgV2ViQ29yZTo6SW50UG9p
bnQgbV9yZW5kZXJlZENvbnRlbnRzU2Nyb2xsUG9zaXRpb247CiAgICAgV2ViQ29yZTo6SW50UG9p
bnQgbV9wZW5kaW5nUmVuZGVyZWRDb250ZW50c1Njcm9sbFBvc2l0aW9uOworICAgIFdlYkNvcmU6
OkZsb2F0U2l6ZSBtX3JvdW5kaW5nQWRqdXN0bWVudDsKICAgICBib29sIG1faXNBY3RpdmU7CiB9
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNr
d2Vidmlldy5jcHAJKHJldmlzaW9uIDExNTMyNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcg
QEAKIAogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVBy
b3h5SW1wbC5oIgorI2luY2x1ZGUgIkxheWVyVHJlZUhvc3RQcm94eS5oIgogI2luY2x1ZGUgIlF0
RGlhbG9nUnVubmVyLmgiCiAjaW5jbHVkZSAiUXREb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRl
ICJRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuaCIKQEAgLTMzLDYgKzM0LDcgQEAKICNpbmNs
dWRlICJRdFdlYlBhZ2VQb2xpY3lDbGllbnQuaCIKICNpbmNsdWRlICJVdGlsc1F0LmgiCiAjaW5j
bHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCisjaW5jbHVkZSAiV2ViTGF5ZXJUcmVlUmVuZGVy
ZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNl
cy5oIgogCkBAIC01NDUsNyArNTQ3LDEwIEBAIFFSZWN0IFFRdWlja1dlYlZpZXdQcml2YXRlOjp2
aXNpYmxlQ29udGUKICAgICBRX1EoY29uc3QgUVF1aWNrV2ViVmlldyk7CiAgICAgY29uc3QgUVJl
Y3RGIHZpc2libGVSZWN0KHEtPmJvdW5kaW5nUmVjdCgpLmludGVyc2VjdGVkKHBhZ2VWaWV3LT5i
b3VuZGluZ1JlY3QoKSkpOwogCi0gICAgcmV0dXJuIHEtPm1hcFJlY3RUb1dlYkNvbnRlbnQodmlz
aWJsZVJlY3QpLnRvQWxpZ25lZFJlY3QoKTsKKyAgICAvLyBXZSBhdm9pZCB1c2luZyB0b0FsaWdu
ZWRSZWN0KCkgYmVjYXVzZSBpdCBwcm9kdWNlcyBpbmNvbnNpc3RlbnQgd2lkdGggYW5kIGhlaWdo
dC4KKyAgICBRUmVjdEYgbWFwcGVkUmVjdChxLT5tYXBSZWN0VG9XZWJDb250ZW50KHZpc2libGVS
ZWN0KSk7CisgICAgUVJlY3QgcmVzdWx0KGZsb29yKG1hcHBlZFJlY3QueCgpKSwgZmxvb3IobWFw
cGVkUmVjdC55KCkpLCBmbG9vcihtYXBwZWRSZWN0LndpZHRoKCkpLCBmbG9vcihtYXBwZWRSZWN0
LmhlaWdodCgpKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogV2ViQ29yZTo6SW50U2l6ZSBR
UXVpY2tXZWJWaWV3UHJpdmF0ZTo6dmlld1NpemUoKSBjb25zdApAQCAtNzgxLDYgKzc4NiwxMSBA
QCB2b2lkIFFRdWlja1dlYlZpZXdGbGlja2FibGVQcml2YXRlOjpfcV9jCiAgICAgZmxvYXQgc2Nh
bGUgPSBwYWdlVmlldy0+Y29udGVudHNTY2FsZSgpOwogCiAgICAgZHJhd2luZ0FyZWEtPnNldFZp
c2libGVDb250ZW50c1JlY3QodmlzaWJsZVJlY3QsIHNjYWxlLCB0cmFqZWN0b3J5VmVjdG9yKTsK
KyAgICBRUmVjdEYgYWNjdXJhdGVWaXNpYmxlUmVjdChxLT5ib3VuZGluZ1JlY3QoKSk7CisgICAg
YWNjdXJhdGVWaXNpYmxlUmVjdC50cmFuc2xhdGUoY29udGVudFBvcygpKTsKKyAgICBMYXllclRy
ZWVIb3N0UHJveHkqIGxheWVyVHJlZUhvc3RQcm94eSA9IGRyYXdpbmdBcmVhLT5sYXllclRyZWVI
b3N0UHJveHkoKTsKKyAgICBpZiAobGF5ZXJUcmVlSG9zdFByb3h5LT5sYXllclRyZWVSZW5kZXJl
cigpKQorICAgICAgICBsYXllclRyZWVIb3N0UHJveHktPmxheWVyVHJlZVJlbmRlcmVyKCktPnNl
dFJvdW5kaW5nQWRqdXN0bWVudChGbG9hdFNpemUoYWNjdXJhdGVWaXNpYmxlUmVjdC54KCkgLSB2
aXNpYmxlUmVjdC54KCkgKiBzY2FsZSwgYWNjdXJhdGVWaXNpYmxlUmVjdC55KCkgLSB2aXNpYmxl
UmVjdC55KCkgKiBzY2FsZSkpOwogfQogCiB2b2lkIFFRdWlja1dlYlZpZXdGbGlja2FibGVQcml2
YXRlOjpfcV9zdXNwZW5kKCkK
</data>
<flag name="review"
          id="144621"
          type_id="1"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139219</attachid>
            <date>2012-04-27 09:33:26 -0700</date>
            <delta_ts>2012-04-29 05:42:33 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>84306.patch</filename>
            <type>text/plain</type>
            <size>11354</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNTQzNykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA0LTI3ICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdW1dLMl0gRml4ZWQg
bGF5ZXJzIGFyZSBzaGFraW5nIHdoZW4gem9vbSBsZXZlbCBpcyBub3QgMS4wIGR1ZSB0byBhIHJv
dW5kaW5nIGVycm9yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODQzMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXaGVuIHpvb21pbmcsIHdlIG5lZWQgdG8gYmUgY2FyZWZ1bCBhYm91dCBob3cgdG8gY29u
dmVydCB0aGUgdmlzaWJsZSByZWN0IGZyb20gZmxvYXQgdG8gaW50LgorICAgICAgICBVc2luZyB0
b0FsaWduZWRSZWN0IGNhbiBwcm9kdWNlIGluY29uc2lzdGVudCB3aWR0aCBhbmQgaGVpZ2h0IHdo
ZW4gd2UgYXJlIHNjcm9sbGluZy4KKyAgICAgICAgVGhpcyBwYXRjaCBjYXJlZnVsbHkgbW9kaWZp
ZXMgZWFjaCBwaWVjZSBvZiB0aGUgdmlzaWJsZSByZWN0LCB0byBhdm9pZCBzdWNoIHJvdW5kaW5n
IGVycm9ycy4KKyAgICAgICAgSW4gYWRkaXRpb24sIHRoZSBUcmFuc2Zvcm1NYXRyaXggd2UgdXNl
IGZvciBwYWludGluZywgbmVlZHMgdG8gYmUgYWRqdXN0ZWQgZm9yIHRoZSBzYW1lIHJvdW5kaW5n
IGVycm9yLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcDoK
KyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjp2aXNpYmxlQ29udGVudHNSZWN0KToKKyAg
ICAgICAgKFFRdWlja1dlYlZpZXdGbGlja2FibGVQcml2YXRlOjpfcV9jb250ZW50Vmlld3BvcnRD
aGFuZ2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oOgorICAgICAg
ICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpEcmF3aW5nQXJlYVByb3h5SW1wbDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmg6CisgICAgICAgIChEcmF3aW5n
QXJlYVByb3h5SW1wbCk6CisgICAgICAgICogVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RQcm94eTo6c2V0VmlzaWJsZUNvbnRl
bnRzUmVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5oOgorICAg
ICAgICAoTGF5ZXJUcmVlSG9zdFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTGF5ZXJU
cmVlUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVSZW5kZXJlcjo6
cGFpbnRUb0N1cnJlbnRHTENvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVS
ZW5kZXJlcjo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkxheWVyVHJlZVJlbmRlcmVyLmg6CisgICAgICAgIChXZWJMYXllclRyZWVSZW5kZXJlcik6CisK
IDIwMTItMDQtMjcgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgogCiAgICAg
ICAgIFtRdF1bV0syXSBzZXRWaXNpYmxlQ29udGVudHNSZWN0IGlzIG5vdCB0aHJlYWQgc2FmZQpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCShyZXZp
c2lvbiAxMTU0MjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJCYWNraW5n
U3RvcmUuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYUluZm8uaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0Zsb2F0U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSW50U2l6ZS5oPgogI2luY2x1ZGUgPHN0ZGludC5oPgpAQCAtOTIsNyArOTMsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IGNvbnRlbnRzUmVjdCgpIGNvbnN0
OwogICAgIHZpcnR1YWwgYm9vbCBpc0JhY2tpbmdTdG9yZVJlYWR5KCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIExheWVyVHJlZUhvc3RQcm94eSogbGF5ZXJUcmVlSG9zdFByb3h5KCkgY29u
c3QgeyByZXR1cm4gbV9sYXllclRyZWVIb3N0UHJveHkuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2aXNpYmxl
Q29udGVudHNSZWN0LCBmbG9hdCBzY2FsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgdHJh
amVjdG9yeVZlY3RvcikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVDb250ZW50c1Jl
Y3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdmlzaWJsZUNvbnRlbnRzUmVjdCwgZmxvYXQgc2Nh
bGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYgcm91bmRpbmdBZGp1c3RtZW50ID0gV2ViQ29yZTo6RmxvYXRTaXpl
KCkpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUaWxlRm9yTGF5ZXIoaW50IGxheWVySUQs
IGludCB0aWxlSUQsIGNvbnN0IFdlYktpdDo6VXBkYXRlSW5mbyYpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVUaWxlRm9yTGF5ZXIoaW50IGxheWVySUQsIGludCB0aWxlSUQsIGNvbnN0IFdl
YktpdDo6VXBkYXRlSW5mbyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVUaWxlRm9yTGF5
ZXIoaW50IGxheWVySUQsIGludCB0aWxlSUQpIHsgfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwCShyZXZpc2lvbiAxMTU0Mjcp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNTMsMTAgKzM1MywxMCBAQCB2b2lkIERyYXdpbmdBcmVhUHJveHlJ
bXBsOjpkaWRSZWNlaXZlTGF5CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdFByb3h5LT5kaWRSZWNl
aXZlTGF5ZXJUcmVlSG9zdFByb3h5TWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3Vt
ZW50cyk7CiB9CiAKLXZvaWQgRHJhd2luZ0FyZWFQcm94eUltcGw6OnNldFZpc2libGVDb250ZW50
c1JlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdmlzaWJsZUNvbnRlbnRzUmVjdCwgZmxvYXQg
c2NhbGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCit2b2lk
IERyYXdpbmdBcmVhUHJveHlJbXBsOjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIHZpc2libGVDb250ZW50c1JlY3QsIGZsb2F0IHNjYWxlLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmIHJvdW5kaW5nQWRqdXN0bWVudCkKIHsKICAgICBpZiAobV9sYXllclRyZWVIb3N0UHJveHkp
Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdFByb3h5LT5zZXRWaXNpYmxlQ29udGVudHNSZWN0KHZp
c2libGVDb250ZW50c1JlY3QsIHNjYWxlLCB0cmFqZWN0b3J5VmVjdG9yKTsKKyAgICAgICAgbV9s
YXllclRyZWVIb3N0UHJveHktPnNldFZpc2libGVDb250ZW50c1JlY3QodmlzaWJsZUNvbnRlbnRz
UmVjdCwgc2NhbGUsIHRyYWplY3RvcnlWZWN0b3IsIHJvdW5kaW5nQWRqdXN0bWVudCk7CiB9CiAK
ICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJ
bXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVh
UHJveHlJbXBsLmgJKHJldmlzaW9uIDExNTQyNykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBpc0luQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSBjb25z
dCB7IHJldHVybiAhbV9sYXllclRyZWVDb250ZXh0LmlzRW1wdHkoKTsgfQogCiAjaWYgVVNFKFVJ
X1NJREVfQ09NUE9TSVRJTkcpCi0gICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVDb250ZW50c1Jl
Y3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdmlzaWJsZUNvbnRlbnRzUmVjdCwgZmxvYXQgc2Nh
bGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHRyYWplY3RvcnkpOworICAgIHZpcnR1YWwg
dm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpc2li
bGVDb250ZW50c1JlY3QsIGZsb2F0IHNjYWxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB0
cmFqZWN0b3J5LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHJvdW5kaW5nQWRqdXN0bWVudCA9
IFdlYkNvcmU6OkZsb2F0U2l6ZSgpKTsKICAgICB2b2lkIGRpZFJlY2VpdmVMYXllclRyZWVIb3N0
UHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENv
cmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwogI2VuZGlmCiAjZWxzZQpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5jcHAJKHJldmlzaW9uIDEx
NTQyNykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXllclRyZWVIb3N0UHJveHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsOSArMTI3LDkgQEAgdm9pZCBMYXllclRyZWVIb3N0UHJv
eHk6OnNldENvbnRlbnRzU2l6ZQogICAgIG1fcmVuZGVyZXItPnNldENvbnRlbnRzU2l6ZShjb250
ZW50c1NpemUpOwogfQogCi12b2lkIExheWVyVHJlZUhvc3RQcm94eTo6c2V0VmlzaWJsZUNvbnRl
bnRzUmVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBmbG9hdCBzY2FsZSwgY29uc3QgRmxvYXRQb2lu
dCYgdHJhamVjdG9yeVZlY3RvcikKK3ZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRWaXNpYmxl
Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGZsb2F0IHNjYWxlLCBjb25zdCBGbG9h
dFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHJvdW5k
aW5nQWRqdXN0bWVudCkKIHsKLSAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZXZWJMYXllclRyZWVS
ZW5kZXJlcjo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCwgbV9yZW5kZXJlci5nZXQoKSwgcmVjdCwg
c2NhbGUpKTsKKyAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZXZWJMYXllclRyZWVSZW5kZXJlcjo6
c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCwgbV9yZW5kZXJlci5nZXQoKSwgcmVjdCwgc2NhbGUsIHJv
dW5kaW5nQWRqdXN0bWVudCkpOwogICAgIG1fZHJhd2luZ0FyZWFQcm94eS0+cGFnZSgpLT5wcm9j
ZXNzKCktPnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUhvc3Q6OlNldFZpc2libGVDb250ZW50c1Jl
Y3QocmVjdCwgc2NhbGUsIHRyYWplY3RvcnlWZWN0b3IpLCBtX2RyYXdpbmdBcmVhUHJveHktPnBh
Z2UoKS0+cGFnZUlEKCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5
ZXJUcmVlSG9zdFByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0xheWVyVHJlZUhvc3RQcm94eS5oCShyZXZpc2lvbiAxMTU0MjcpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcg
KzU1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7
CiAgICAgdm9pZCBwdXJnZUdMUmVzb3VyY2VzKCk7CiAgICAgdm9pZCBzZXRDb250ZW50c1NpemUo
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7Ci0gICAgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNS
ZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBmbG9hdCBzY2FsZSwgY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYgdHJhamVjdG9yeSk7CisgICAgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBmbG9hdCBzY2FsZSwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRQb2ludCYgdHJhamVjdG9yeSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiByb3VuZGluZ0Fk
anVzdG1lbnQpOwogICAgIHZvaWQgZGlkUmVuZGVyRnJhbWUoKTsKICAgICB2b2lkIGNyZWF0ZVRp
bGVGb3JMYXllcihpbnQgbGF5ZXJJRCwgaW50IHRpbGVJRCwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJik7CiAgICAgdm9pZCB1cGRhdGVUaWxlRm9yTGF5
ZXIoaW50IGxheWVySUQsIGludCB0aWxlSUQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25z
dCBTdXJmYWNlVXBkYXRlSW5mbyYpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkxheWVyVHJlZVJlbmRlcmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCShyZXZpc2lvbiAxMTU0MjcpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTAsNiArMTEwLDkgQEAgdm9pZCBXZWJMYXllclRyZWVSZW5kZXJlcjo6cGFpbnRU
b0N1cnJlbgogICAgIEFTU0VSVChtX3RleHR1cmVNYXBwZXItPmFjY2VsZXJhdGlvbk1vZGUoKSA9
PSBUZXh0dXJlTWFwcGVyOjpPcGVuR0xNb2RlKTsKIAogICAgIHN5bmNSZW1vdGVDb250ZW50KCk7
CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbmV3TWF0cml4ID0gbWF0cml4OworICAgIG5ld01h
dHJpeC50cmFuc2xhdGUobV9yb3VuZGluZ0FkanVzdG1lbnQud2lkdGgoKSwgbV9yb3VuZGluZ0Fk
anVzdG1lbnQuaGVpZ2h0KCkpOworCiAgICAgYWRqdXN0UG9zaXRpb25Gb3JGaXhlZExheWVycygp
OwogICAgIEdyYXBoaWNzTGF5ZXIqIGN1cnJlbnRSb290TGF5ZXIgPSByb290TGF5ZXIoKTsKICAg
ICBpZiAoIWN1cnJlbnRSb290TGF5ZXIpCkBAIC0xMjQsOSArMTI3LDkgQEAgdm9pZCBXZWJMYXll
clRyZWVSZW5kZXJlcjo6cGFpbnRUb0N1cnJlbgogICAgIG1fdGV4dHVyZU1hcHBlci0+YmVnaW5Q
YWludGluZyhQYWludEZsYWdzKTsKICAgICBtX3RleHR1cmVNYXBwZXItPmJlZ2luQ2xpcChUcmFu
c2Zvcm1hdGlvbk1hdHJpeCgpLCBjbGlwUmVjdCk7CiAKLSAgICBpZiAoY3VycmVudFJvb3RMYXll
ci0+b3BhY2l0eSgpICE9IG9wYWNpdHkgfHwgY3VycmVudFJvb3RMYXllci0+dHJhbnNmb3JtKCkg
IT0gbWF0cml4KSB7CisgICAgaWYgKGN1cnJlbnRSb290TGF5ZXItPm9wYWNpdHkoKSAhPSBvcGFj
aXR5IHx8IGN1cnJlbnRSb290TGF5ZXItPnRyYW5zZm9ybSgpICE9IG5ld01hdHJpeCkgewogICAg
ICAgICBjdXJyZW50Um9vdExheWVyLT5zZXRPcGFjaXR5KG9wYWNpdHkpOwotICAgICAgICBjdXJy
ZW50Um9vdExheWVyLT5zZXRUcmFuc2Zvcm0obWF0cml4KTsKKyAgICAgICAgY3VycmVudFJvb3RM
YXllci0+c2V0VHJhbnNmb3JtKG5ld01hdHJpeCk7CiAgICAgICAgIGN1cnJlbnRSb290TGF5ZXIt
PnN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOwogICAgIH0KIApAQCAtMTU5
LDEwICsxNjIsMTEgQEAgdm9pZCBXZWJMYXllclRyZWVSZW5kZXJlcjo6c2V0Q29udGVudHNTaQog
ICAgIG1fY29udGVudHNTaXplID0gY29udGVudHNTaXplOwogfQogCi12b2lkIFdlYkxheWVyVHJl
ZVJlbmRlcmVyOjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGZs
b2F0IHNjYWxlKQordm9pZCBXZWJMYXllclRyZWVSZW5kZXJlcjo6c2V0VmlzaWJsZUNvbnRlbnRz
UmVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBmbG9hdCBzY2FsZSwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiByb3VuZGluZ0FkanVzdG1lbnQpCiB7CiAgICAgbV92aXNpYmxlQ29udGVudHNSZWN0
ID0gcmVjdDsKICAgICBtX2NvbnRlbnRzU2NhbGUgPSBzY2FsZTsKKyAgICBtX3JvdW5kaW5nQWRq
dXN0bWVudCA9IHJvdW5kaW5nQWRqdXN0bWVudDsKIH0KIAogdm9pZCBXZWJMYXllclRyZWVSZW5k
ZXJlcjo6dXBkYXRlVmlld3BvcnQoKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkxheWVyVHJlZVJlbmRlcmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVyLmgJKHJldmlzaW9uIDExNTQyNykKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhaW50VG9HcmFwaGljc0NvbnRleHQo
QmFja2luZ1N0b3JlOjpQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCk7CiAgICAgdm9pZCBzeW5jUmVt
b3RlQ29udGVudCgpOwogICAgIHZvaWQgc2V0Q29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYpOwotICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiwgZmxvYXQgc2NhbGUpOworICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVj
dChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgZmxvYXQgc2NhbGUsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYgcm91bmRpbmdBZGp1c3RtZW50KTsKICAgICB2b2lkIGRpZENoYW5nZVNjcm9sbFBv
c2l0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbik7CiAKICAgICB2b2lkIGRl
dGFjaCgpOwpAQCAtMTMzLDYgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgV2ViTGF5ZXJJRCBtX3Jv
b3RMYXllcklEOwogICAgIFdlYkNvcmU6OkludFBvaW50IG1fcmVuZGVyZWRDb250ZW50c1Njcm9s
bFBvc2l0aW9uOwogICAgIFdlYkNvcmU6OkludFBvaW50IG1fcGVuZGluZ1JlbmRlcmVkQ29udGVu
dHNTY3JvbGxQb3NpdGlvbjsKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgbV9yb3VuZGluZ0FkanVz
dG1lbnQ7CiAgICAgYm9vbCBtX2lzQWN0aXZlOwogfTsKIApJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCShyZXZpc2lvbiAxMTU0
MjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NDUsNyArNTQ1LDkgQEAgUVJlY3QgUVF1aWNrV2ViVmlld1By
aXZhdGU6OnZpc2libGVDb250ZQogICAgIFFfUShjb25zdCBRUXVpY2tXZWJWaWV3KTsKICAgICBj
b25zdCBRUmVjdEYgdmlzaWJsZVJlY3QocS0+Ym91bmRpbmdSZWN0KCkuaW50ZXJzZWN0ZWQocGFn
ZVZpZXctPmJvdW5kaW5nUmVjdCgpKSk7CiAKLSAgICByZXR1cm4gcS0+bWFwUmVjdFRvV2ViQ29u
dGVudCh2aXNpYmxlUmVjdCkudG9BbGlnbmVkUmVjdCgpOworICAgIC8vIFdlIGF2b2lkIHVzaW5n
IHRvQWxpZ25lZFJlY3QoKSBiZWNhdXNlIGl0IHByb2R1Y2VzIGluY29uc2lzdGVudCB3aWR0aCBh
bmQgaGVpZ2h0LgorICAgIFFSZWN0RiBtYXBwZWRSZWN0KHEtPm1hcFJlY3RUb1dlYkNvbnRlbnQo
dmlzaWJsZVJlY3QpKTsKKyAgICByZXR1cm4gUVJlY3QoZmxvb3IobWFwcGVkUmVjdC54KCkpLCBm
bG9vcihtYXBwZWRSZWN0LnkoKSksIGZsb29yKG1hcHBlZFJlY3Qud2lkdGgoKSksIGZsb29yKG1h
cHBlZFJlY3QuaGVpZ2h0KCkpKTsKIH0KIAogV2ViQ29yZTo6SW50U2l6ZSBRUXVpY2tXZWJWaWV3
UHJpdmF0ZTo6dmlld1NpemUoKSBjb25zdApAQCAtNzgwLDcgKzc4Miw5IEBAIHZvaWQgUVF1aWNr
V2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6Ol9xX2MKICAgICBjb25zdCBRUmVjdCB2aXNpYmxlUmVj
dCh2aXNpYmxlQ29udGVudHNSZWN0KCkpOwogICAgIGZsb2F0IHNjYWxlID0gcGFnZVZpZXctPmNv
bnRlbnRzU2NhbGUoKTsKIAotICAgIGRyYXdpbmdBcmVhLT5zZXRWaXNpYmxlQ29udGVudHNSZWN0
KHZpc2libGVSZWN0LCBzY2FsZSwgdHJhamVjdG9yeVZlY3Rvcik7CisgICAgUVJlY3RGIGFjY3Vy
YXRlVmlzaWJsZVJlY3QocS0+Ym91bmRpbmdSZWN0KCkpOworICAgIGFjY3VyYXRlVmlzaWJsZVJl
Y3QudHJhbnNsYXRlKGNvbnRlbnRQb3MoKSk7CisgICAgZHJhd2luZ0FyZWEtPnNldFZpc2libGVD
b250ZW50c1JlY3QodmlzaWJsZVJlY3QsIHNjYWxlLCB0cmFqZWN0b3J5VmVjdG9yLCBGbG9hdFNp
emUoKGFjY3VyYXRlVmlzaWJsZVJlY3QueCgpIC0gdmlzaWJsZVJlY3QueCgpICogc2NhbGUpIC8g
c2NhbGUsIChhY2N1cmF0ZVZpc2libGVSZWN0LnkoKSAtIHZpc2libGVSZWN0LnkoKSAqIHNjYWxl
KSAvIHNjYWxlKSk7CiB9CiAKIHZvaWQgUVF1aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6Ol9x
X3N1c3BlbmQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139400</attachid>
            <date>2012-04-29 05:42:33 -0700</date>
            <delta_ts>2012-04-30 16:49:08 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>84306.patch</filename>
            <type>text/plain</type>
            <size>11820</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNTU5NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA0LTI5ICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdW1dLMl0gRml4ZWQg
bGF5ZXJzIGFyZSBzaGFraW5nIHdoZW4gem9vbSBsZXZlbCBpcyBub3QgMS4wIGR1ZSB0byBhIHJv
dW5kaW5nIGVycm9yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODQzMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXaGVuIHpvb21pbmcsIHdlIG5lZWQgdG8gYmUgY2FyZWZ1bCBhYm91dCBob3cgdG8gY29u
dmVydCB0aGUgdmlzaWJsZSByZWN0IGZyb20gZmxvYXQgdG8gaW50LgorICAgICAgICBVc2luZyB0
b0FsaWduZWRSZWN0IGNhbiBwcm9kdWNlIGluY29uc2lzdGVudCB3aWR0aCBhbmQgaGVpZ2h0IHdo
ZW4gd2UgYXJlIHNjcm9sbGluZy4KKyAgICAgICAgVGhpcyBwYXRjaCBjYXJlZnVsbHkgbW9kaWZp
ZXMgZWFjaCBwaWVjZSBvZiB0aGUgdmlzaWJsZSByZWN0LCB0byBhdm9pZCBzdWNoIHJvdW5kaW5n
IGVycm9ycy4KKyAgICAgICAgSW4gYWRkaXRpb24sIHRoZSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB3
ZSB1c2UgZm9yIHBhaW50aW5nLCBuZWVkcyB0byBiZSBhZGp1c3RlZCBmb3IgdGhlIHNhbWUgcm91
bmRpbmcgZXJyb3IuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcu
Y3BwOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OnZpc2libGVDb250ZW50c1JlY3Qp
OgorICAgICAgICAoUVF1aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6Ol9xX2NvbnRlbnRWaWV3
cG9ydENoYW5nZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eTo6c2V0
VmlzaWJsZUNvbnRlbnRzUmVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJv
eHlJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eUltcGw6OnNldFZp
c2libGVDb250ZW50c1JlY3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5
SW1wbC5oOgorICAgICAgICAoRHJhd2luZ0FyZWFQcm94eUltcGwpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9MYXllclRyZWVIb3N0UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVI
b3N0UHJveHk6OnNldFZpc2libGVDb250ZW50c1JlY3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9M
YXllclRyZWVIb3N0UHJveHkuaDoKKyAgICAgICAgKExheWVyVHJlZUhvc3RQcm94eSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnNldFZpc2libGVDb250ZW50c1JlY3Qp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5oOgorICAgICAgICAo
V2ViTGF5ZXJUcmVlUmVuZGVyZXIpOgorCiAyMDEyLTA0LTI4ICBZdXJ5IFNlbWlraGF0c2t5ICA8
eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEFkZGVkIG5ldyBleHBv
cnRlZCBzeW1ib2xzIGFmdGVyIHIxMTU1NTMuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvRHJhd2luZ0FyZWFQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgJKHJldmlzaW9uIDExNTU4NikKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYg
KzI5LDcgQEAKIAogI2luY2x1ZGUgIkJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIkRyYXdpbmdB
cmVhSW5mby5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRQb2ludC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgogI2luY2x1ZGUg
PHN0ZGludC5oPgpAQCAtNDcsNyArNDgsNiBAQCBuYW1lc3BhY2UgQ29yZUlQQyB7CiB9CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBGbG9hdFBvaW50OwogICAgIGNsYXNzIFRyYW5z
Zm9ybWF0aW9uTWF0cml4OwogfQogCkBAIC05Miw3ICs5Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFdlYkNvcmU6OkludFJlY3QgY29udGVudHNSZWN0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBi
b29sIGlzQmFja2luZ1N0b3JlUmVhZHkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgTGF5
ZXJUcmVlSG9zdFByb3h5KiBsYXllclRyZWVIb3N0UHJveHkoKSBjb25zdCB7IHJldHVybiBtX2xh
eWVyVHJlZUhvc3RQcm94eS5nZXQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29u
dGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpc2libGVDb250ZW50c1JlY3QsIGZs
b2F0IHNjYWxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiB2aXNpYmxlQ29udGVudHNSZWN0LCBmbG9hdCBzY2FsZSwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvciwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYgPSBXZWJDb3JlOjpGbG9hdFBvaW50KCkpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVU
aWxlRm9yTGF5ZXIoaW50IGxheWVySUQsIGludCB0aWxlSUQsIGNvbnN0IFdlYktpdDo6VXBkYXRl
SW5mbyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUaWxlRm9yTGF5ZXIoaW50IGxheWVy
SUQsIGludCB0aWxlSUQsIGNvbnN0IFdlYktpdDo6VXBkYXRlSW5mbyYpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVUaWxlRm9yTGF5ZXIoaW50IGxheWVySUQsIGludCB0aWxlSUQpIHsgfQpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUlt
cGwuY3BwCShyZXZpc2lvbiAxMTU1ODYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTMsMTAgKzM1MywxMCBA
QCB2b2lkIERyYXdpbmdBcmVhUHJveHlJbXBsOjpkaWRSZWNlaXZlTGF5CiAgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdFByb3h5LT5kaWRSZWNlaXZlTGF5ZXJUcmVlSG9zdFByb3h5TWVzc2FnZShjb25u
ZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cyk7CiB9CiAKLXZvaWQgRHJhd2luZ0FyZWFQcm94
eUltcGw6OnNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdmlz
aWJsZUNvbnRlbnRzUmVjdCwgZmxvYXQgc2NhbGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQm
IHRyYWplY3RvcnlWZWN0b3IpCit2b2lkIERyYXdpbmdBcmVhUHJveHlJbXBsOjpzZXRWaXNpYmxl
Q29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpc2libGVDb250ZW50c1JlY3Qs
IGZsb2F0IHNjYWxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9y
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBhY2N1cmF0ZVZpc2libGVDb250ZW50UG9zaXRp
b24pCiB7CiAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdFByb3h5KQotICAgICAgICBtX2xheWVyVHJl
ZUhvc3RQcm94eS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCh2aXNpYmxlQ29udGVudHNSZWN0LCBz
Y2FsZSwgdHJhamVjdG9yeVZlY3Rvcik7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdFByb3h5LT5z
ZXRWaXNpYmxlQ29udGVudHNSZWN0KHZpc2libGVDb250ZW50c1JlY3QsIHNjYWxlLCB0cmFqZWN0
b3J5VmVjdG9yLCBhY2N1cmF0ZVZpc2libGVDb250ZW50UG9zaXRpb24pOwogfQogCiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1w
bC5oCShyZXZpc2lvbiAxMTU1ODYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2lu
Z0FyZWFQcm94eUltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgaXNJbkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1
cm4gIW1fbGF5ZXJUcmVlQ29udGV4dC5pc0VtcHR5KCk7IH0KIAogI2lmIFVTRShVSV9TSURFX0NP
TVBPU0lUSU5HKQotICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIHZpc2libGVDb250ZW50c1JlY3QsIGZsb2F0IHNjYWxlLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2aXNpYmxlQ29udGVu
dHNSZWN0LCBmbG9hdCBzY2FsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgdHJhamVjdG9y
eSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgPSBXZWJDb3JlOjpGbG9hdFBvaW50KCkpOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZUxheWVyVHJlZUhvc3RQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7
CiAjZW5kaWYKICNlbHNlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJUcmVl
SG9zdFByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5
ZXJUcmVlSG9zdFByb3h5LmNwcAkocmV2aXNpb24gMTE1NTg2KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw5
ICsxMjcsOSBAQCB2b2lkIExheWVyVHJlZUhvc3RQcm94eTo6c2V0Q29udGVudHNTaXplCiAgICAg
bV9yZW5kZXJlci0+c2V0Q29udGVudHNTaXplKGNvbnRlbnRzU2l6ZSk7CiB9CiAKLXZvaWQgTGF5
ZXJUcmVlSG9zdFByb3h5OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHJl
Y3QsIGZsb2F0IHNjYWxlLCBjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQordm9p
ZCBMYXllclRyZWVIb3N0UHJveHk6OnNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgSW50UmVj
dCYgcmVjdCwgZmxvYXQgc2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3Is
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGFjY3VyYXRlVmlzaWJsZUNvbnRlbnRQb3NpdGlv
bikKIHsKLSAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZXZWJMYXllclRyZWVSZW5kZXJlcjo6c2V0
VmlzaWJsZUNvbnRlbnRzUmVjdCwgbV9yZW5kZXJlci5nZXQoKSwgcmVjdCwgc2NhbGUpKTsKKyAg
ICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZXZWJMYXllclRyZWVSZW5kZXJlcjo6c2V0VmlzaWJsZUNv
bnRlbnRzUmVjdCwgbV9yZW5kZXJlci5nZXQoKSwgcmVjdCwgc2NhbGUsIGFjY3VyYXRlVmlzaWJs
ZUNvbnRlbnRQb3NpdGlvbikpOwogICAgIG1fZHJhd2luZ0FyZWFQcm94eS0+cGFnZSgpLT5wcm9j
ZXNzKCktPnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUhvc3Q6OlNldFZpc2libGVDb250ZW50c1Jl
Y3QocmVjdCwgc2NhbGUsIHRyYWplY3RvcnlWZWN0b3IpLCBtX2RyYXdpbmdBcmVhUHJveHktPnBh
Z2UoKS0+cGFnZUlEKCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5
ZXJUcmVlSG9zdFByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0xheWVyVHJlZUhvc3RQcm94eS5oCShyZXZpc2lvbiAxMTU1ODYpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcg
KzU1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7
CiAgICAgdm9pZCBwdXJnZUdMUmVzb3VyY2VzKCk7CiAgICAgdm9pZCBzZXRDb250ZW50c1NpemUo
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7Ci0gICAgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNS
ZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBmbG9hdCBzY2FsZSwgY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYgdHJhamVjdG9yeSk7CisgICAgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBmbG9hdCBzY2FsZSwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRQb2ludCYgdHJhamVjdG9yeSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgYWNjdXJhdGVW
aXNpYmxlQ29udGVudFBvc2l0aW9uKTsKICAgICB2b2lkIGRpZFJlbmRlckZyYW1lKCk7CiAgICAg
dm9pZCBjcmVhdGVUaWxlRm9yTGF5ZXIoaW50IGxheWVySUQsIGludCB0aWxlSUQsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmLCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYpOwogICAgIHZvaWQgdXBk
YXRlVGlsZUZvckxheWVyKGludCBsYXllcklELCBpbnQgdGlsZUlELCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVyLmNwcAkocmV2aXNpb24gMTE1
NTg2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDYgKzEwOSw4IEBAIHZvaWQgV2ViTGF5ZXJUcmVlUmVu
ZGVyZXI6OnBhaW50VG9DdXJyZW4KICAgICAgICAgbV90ZXh0dXJlTWFwcGVyID0gVGV4dHVyZU1h
cHBlcjo6Y3JlYXRlKFRleHR1cmVNYXBwZXI6Ok9wZW5HTE1vZGUpOwogICAgIEFTU0VSVChtX3Rl
eHR1cmVNYXBwZXItPmFjY2VsZXJhdGlvbk1vZGUoKSA9PSBUZXh0dXJlTWFwcGVyOjpPcGVuR0xN
b2RlKTsKIAorICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG5ld01hdHJpeCA9IG1hdHJpeDsKKyAg
ICBuZXdNYXRyaXgudHJhbnNsYXRlKG1fYWNjdXJhdGVWaXNpYmxlQ29udGVudFBvc2l0aW9uLngo
KSAvIG1fY29udGVudHNTY2FsZSAtIG1fdmlzaWJsZUNvbnRlbnRzUmVjdC54KCksIG1fYWNjdXJh
dGVWaXNpYmxlQ29udGVudFBvc2l0aW9uLnkoKSAvIG1fY29udGVudHNTY2FsZSAtIG1fdmlzaWJs
ZUNvbnRlbnRzUmVjdC55KCkpOwogICAgIGFkanVzdFBvc2l0aW9uRm9yRml4ZWRMYXllcnMoKTsK
ICAgICBHcmFwaGljc0xheWVyKiBjdXJyZW50Um9vdExheWVyID0gcm9vdExheWVyKCk7CiAgICAg
aWYgKCFjdXJyZW50Um9vdExheWVyKQpAQCAtMTIzLDkgKzEyNSw5IEBAIHZvaWQgV2ViTGF5ZXJU
cmVlUmVuZGVyZXI6OnBhaW50VG9DdXJyZW4KICAgICBtX3RleHR1cmVNYXBwZXItPmJlZ2luUGFp
bnRpbmcoUGFpbnRGbGFncyk7CiAgICAgbV90ZXh0dXJlTWFwcGVyLT5iZWdpbkNsaXAoVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSwgY2xpcFJlY3QpOwogCi0gICAgaWYgKGN1cnJlbnRSb290TGF5ZXIt
Pm9wYWNpdHkoKSAhPSBvcGFjaXR5IHx8IGN1cnJlbnRSb290TGF5ZXItPnRyYW5zZm9ybSgpICE9
IG1hdHJpeCkgeworICAgIGlmIChjdXJyZW50Um9vdExheWVyLT5vcGFjaXR5KCkgIT0gb3BhY2l0
eSB8fCBjdXJyZW50Um9vdExheWVyLT50cmFuc2Zvcm0oKSAhPSBuZXdNYXRyaXgpIHsKICAgICAg
ICAgY3VycmVudFJvb3RMYXllci0+c2V0T3BhY2l0eShvcGFjaXR5KTsKLSAgICAgICAgY3VycmVu
dFJvb3RMYXllci0+c2V0VHJhbnNmb3JtKG1hdHJpeCk7CisgICAgICAgIGN1cnJlbnRSb290TGF5
ZXItPnNldFRyYW5zZm9ybShuZXdNYXRyaXgpOwogICAgICAgICBjdXJyZW50Um9vdExheWVyLT5z
eW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKICAgICB9CiAKQEAgLTE1OCwx
MCArMTYwLDExIEBAIHZvaWQgV2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnNldENvbnRlbnRzU2kKICAg
ICBtX2NvbnRlbnRzU2l6ZSA9IGNvbnRlbnRzU2l6ZTsKIH0KIAotdm9pZCBXZWJMYXllclRyZWVS
ZW5kZXJlcjo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBmbG9h
dCBzY2FsZSkKK3ZvaWQgV2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnNldFZpc2libGVDb250ZW50c1Jl
Y3QoY29uc3QgSW50UmVjdCYgcmVjdCwgZmxvYXQgc2NhbGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmIGFjY3VyYXRlVmlzaWJsZUNvbnRlbnRQb3NpdGlvbikKIHsKICAgICBtX3Zpc2libGVD
b250ZW50c1JlY3QgPSByZWN0OwogICAgIG1fY29udGVudHNTY2FsZSA9IHNjYWxlOworICAgIG1f
YWNjdXJhdGVWaXNpYmxlQ29udGVudFBvc2l0aW9uID0gYWNjdXJhdGVWaXNpYmxlQ29udGVudFBv
c2l0aW9uOwogfQogCiB2b2lkIFdlYkxheWVyVHJlZVJlbmRlcmVyOjp1cGRhdGVWaWV3cG9ydCgp
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVy
ZXIuaAkocmV2aXNpb24gMTE1NTg2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxh
eWVyVHJlZVJlbmRlcmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcGFpbnRUb0dyYXBoaWNzQ29udGV4dChCYWNraW5nU3RvcmU6OlBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0KTsKICAgICB2b2lkIHN5bmNSZW1vdGVDb250ZW50KCk7CiAgICAgdm9p
ZCBzZXRDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7Ci0gICAgdm9pZCBz
ZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBmbG9hdCBzY2Fs
ZSk7CisgICAgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmLCBmbG9hdCBzY2FsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgYWNjdXJhdGVWaXNp
YmxlQ29udGVudFBvc2l0aW9uKTsKICAgICB2b2lkIGRpZENoYW5nZVNjcm9sbFBvc2l0aW9uKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbik7CiAKICAgICB2b2lkIGRldGFjaCgpOwpA
QCAtMTAyLDYgKzEwMiw3IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFdlYkxheWVy
SUQsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqPiBMYXllck1hcDsKICAgICBXZWJDb3JlOjpGbG9h
dFNpemUgbV9jb250ZW50c1NpemU7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBtX3Zpc2libGVDb250
ZW50c1JlY3Q7CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX2FjY3VyYXRlVmlzaWJsZUNvbnRl
bnRQb3NpdGlvbjsKICAgICBmbG9hdCBtX2NvbnRlbnRzU2NhbGU7CiAKICAgICAvLyBSZW5kZXIg
cXVldWUgY2FuIGJlIGFjY2Vzc2VkIG9ueSBmcm9tIG1haW4gdGhyZWFkIG9yIHVwZGF0ZVBhaW50
Tm9kZSBjYWxsIHN0YWNrIQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCShyZXZpc2lvbiAxMTU1ODYpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NDUsNyArNTQ1LDkgQEAgUVJlY3QgUVF1aWNrV2ViVmlld1ByaXZhdGU6OnZpc2libGVDb250
ZQogICAgIFFfUShjb25zdCBRUXVpY2tXZWJWaWV3KTsKICAgICBjb25zdCBRUmVjdEYgdmlzaWJs
ZVJlY3QocS0+Ym91bmRpbmdSZWN0KCkuaW50ZXJzZWN0ZWQocGFnZVZpZXctPmJvdW5kaW5nUmVj
dCgpKSk7CiAKLSAgICByZXR1cm4gcS0+bWFwUmVjdFRvV2ViQ29udGVudCh2aXNpYmxlUmVjdCku
dG9BbGlnbmVkUmVjdCgpOworICAgIC8vIFdlIGF2b2lkIHVzaW5nIHRvQWxpZ25lZFJlY3QoKSBi
ZWNhdXNlIGl0IHByb2R1Y2VzIGluY29uc2lzdGVudCB3aWR0aCBhbmQgaGVpZ2h0LgorICAgIFFS
ZWN0RiBtYXBwZWRSZWN0KHEtPm1hcFJlY3RUb1dlYkNvbnRlbnQodmlzaWJsZVJlY3QpKTsKKyAg
ICByZXR1cm4gUVJlY3QoZmxvb3IobWFwcGVkUmVjdC54KCkpLCBmbG9vcihtYXBwZWRSZWN0Lnko
KSksIGZsb29yKG1hcHBlZFJlY3Qud2lkdGgoKSksIGZsb29yKG1hcHBlZFJlY3QuaGVpZ2h0KCkp
KTsKIH0KIAogV2ViQ29yZTo6SW50U2l6ZSBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6dmlld1NpemUo
KSBjb25zdApAQCAtNzgwLDcgKzc4Miw5IEBAIHZvaWQgUVF1aWNrV2ViVmlld0ZsaWNrYWJsZVBy
aXZhdGU6Ol9xX2MKICAgICBjb25zdCBRUmVjdCB2aXNpYmxlUmVjdCh2aXNpYmxlQ29udGVudHNS
ZWN0KCkpOwogICAgIGZsb2F0IHNjYWxlID0gcGFnZVZpZXctPmNvbnRlbnRzU2NhbGUoKTsKIAot
ICAgIGRyYXdpbmdBcmVhLT5zZXRWaXNpYmxlQ29udGVudHNSZWN0KHZpc2libGVSZWN0LCBzY2Fs
ZSwgdHJhamVjdG9yeVZlY3Rvcik7CisgICAgUVJlY3RGIGFjY3VyYXRlVmlzaWJsZVJlY3QocS0+
Ym91bmRpbmdSZWN0KCkpOworICAgIGFjY3VyYXRlVmlzaWJsZVJlY3QudHJhbnNsYXRlKGNvbnRl
bnRQb3MoKSk7CisgICAgZHJhd2luZ0FyZWEtPnNldFZpc2libGVDb250ZW50c1JlY3QodmlzaWJs
ZVJlY3QsIHNjYWxlLCB0cmFqZWN0b3J5VmVjdG9yLCBGbG9hdFBvaW50KGFjY3VyYXRlVmlzaWJs
ZVJlY3QueCgpLCBhY2N1cmF0ZVZpc2libGVSZWN0LnkoKSkpOwogCiAgICAgLy8gRW5zdXJlIHRo
YXQgdXBkYXRlUGFpbnROb2RlIGlzIGFsd2F5cyBjYWxsZWQgYmVmb3JlIHBhaW50aW5nLgogICAg
IHBhZ2VWaWV3LT51cGRhdGUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139546</attachid>
            <date>2012-04-30 16:49:08 -0700</date>
            <delta_ts>2012-04-30 18:09:52 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>84306.patch</filename>
            <type>text/plain</type>
            <size>12194</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNTU5NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA0LTI5ICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdW1dLMl0gRml4ZWQg
bGF5ZXJzIGFyZSBzaGFraW5nIHdoZW4gem9vbSBsZXZlbCBpcyBub3QgMS4wIGR1ZSB0byBhIHJv
dW5kaW5nIGVycm9yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODQzMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXaGVuIHpvb21pbmcsIHdlIG5lZWQgdG8gYmUgY2FyZWZ1bCBhYm91dCBob3cgdG8gY29u
dmVydCB0aGUgdmlzaWJsZSByZWN0IGZyb20gZmxvYXQgdG8gaW50LgorICAgICAgICBVc2luZyB0
b0FsaWduZWRSZWN0IGNhbiBwcm9kdWNlIGluY29uc2lzdGVudCB3aWR0aCBhbmQgaGVpZ2h0IHdo
ZW4gd2UgYXJlIHNjcm9sbGluZy4KKyAgICAgICAgVGhpcyBwYXRjaCBjYXJlZnVsbHkgbW9kaWZp
ZXMgZWFjaCBwaWVjZSBvZiB0aGUgdmlzaWJsZSByZWN0LCB0byBhdm9pZCBzdWNoIHJvdW5kaW5n
IGVycm9ycy4KKyAgICAgICAgSW4gYWRkaXRpb24sIHRoZSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB3
ZSB1c2UgZm9yIHBhaW50aW5nLCBuZWVkcyB0byBiZSBhZGp1c3RlZCBmb3IgdGhlIHNhbWUgcm91
bmRpbmcgZXJyb3IuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcu
Y3BwOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OnZpc2libGVDb250ZW50c1JlY3Qp
OgorICAgICAgICAoUVF1aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6Ol9xX2NvbnRlbnRWaWV3
cG9ydENoYW5nZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eTo6c2V0
VmlzaWJsZUNvbnRlbnRzUmVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJv
eHlJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eUltcGw6OnNldFZp
c2libGVDb250ZW50c1JlY3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5
SW1wbC5oOgorICAgICAgICAoRHJhd2luZ0FyZWFQcm94eUltcGwpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9MYXllclRyZWVIb3N0UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVI
b3N0UHJveHk6OnNldFZpc2libGVDb250ZW50c1JlY3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9M
YXllclRyZWVIb3N0UHJveHkuaDoKKyAgICAgICAgKExheWVyVHJlZUhvc3RQcm94eSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnNldFZpc2libGVDb250ZW50c1JlY3Qp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5oOgorICAgICAgICAo
V2ViTGF5ZXJUcmVlUmVuZGVyZXIpOgorCiAyMDEyLTA0LTI4ICBZdXJ5IFNlbWlraGF0c2t5ICA8
eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEFkZGVkIG5ldyBleHBv
cnRlZCBzeW1ib2xzIGFmdGVyIHIxMTU1NTMuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvRHJhd2luZ0FyZWFQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgJKHJldmlzaW9uIDExNTU4NikKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYg
KzI5LDcgQEAKIAogI2luY2x1ZGUgIkJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIkRyYXdpbmdB
cmVhSW5mby5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRQb2ludC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgogI2luY2x1ZGUg
PHN0ZGludC5oPgpAQCAtNDcsNyArNDgsNiBAQCBuYW1lc3BhY2UgQ29yZUlQQyB7CiB9CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBGbG9hdFBvaW50OwogICAgIGNsYXNzIFRyYW5z
Zm9ybWF0aW9uTWF0cml4OwogfQogCkBAIC05Miw3ICs5Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFdlYkNvcmU6OkludFJlY3QgY29udGVudHNSZWN0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBi
b29sIGlzQmFja2luZ1N0b3JlUmVhZHkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgTGF5
ZXJUcmVlSG9zdFByb3h5KiBsYXllclRyZWVIb3N0UHJveHkoKSBjb25zdCB7IHJldHVybiBtX2xh
eWVyVHJlZUhvc3RQcm94eS5nZXQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29u
dGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpc2libGVDb250ZW50c1JlY3QsIGZs
b2F0IHNjYWxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiB2aXNpYmxlQ29udGVudHNSZWN0LCBmbG9hdCBzY2FsZSwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvciwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYgYWNjdXJhdGVWaXNpYmxlQ29udGVudHNQb3NpdGlvbiA9IFdlYkNvcmU6OkZsb2F0UG9pbnQo
KSkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRpbGVGb3JMYXllcihpbnQgbGF5ZXJJRCwg
aW50IHRpbGVJRCwgY29uc3QgV2ViS2l0OjpVcGRhdGVJbmZvJikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVRpbGVGb3JMYXllcihpbnQgbGF5ZXJJRCwgaW50IHRpbGVJRCwgY29uc3QgV2Vi
S2l0OjpVcGRhdGVJbmZvJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVRpbGVGb3JMYXll
cihpbnQgbGF5ZXJJRCwgaW50IHRpbGVJRCkgeyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAJKHJldmlzaW9uIDExNTU4NikK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM1MywxMCArMzUzLDEwIEBAIHZvaWQgRHJhd2luZ0FyZWFQcm94eUlt
cGw6OmRpZFJlY2VpdmVMYXkKICAgICAgICAgbV9sYXllclRyZWVIb3N0UHJveHktPmRpZFJlY2Vp
dmVMYXllclRyZWVIb3N0UHJveHlNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1l
bnRzKTsKIH0KIAotdm9pZCBEcmF3aW5nQXJlYVByb3h5SW1wbDo6c2V0VmlzaWJsZUNvbnRlbnRz
UmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2aXNpYmxlQ29udGVudHNSZWN0LCBmbG9hdCBz
Y2FsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvcikKK3ZvaWQg
RHJhd2luZ0FyZWFQcm94eUltcGw6OnNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgdmlzaWJsZUNvbnRlbnRzUmVjdCwgZmxvYXQgc2NhbGUsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9p
bnQmIGFjY3VyYXRlVmlzaWJsZUNvbnRlbnRzUG9zaXRpb24pCiB7CiAgICAgaWYgKG1fbGF5ZXJU
cmVlSG9zdFByb3h5KQotICAgICAgICBtX2xheWVyVHJlZUhvc3RQcm94eS0+c2V0VmlzaWJsZUNv
bnRlbnRzUmVjdCh2aXNpYmxlQ29udGVudHNSZWN0LCBzY2FsZSwgdHJhamVjdG9yeVZlY3Rvcik7
CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdFByb3h5LT5zZXRWaXNpYmxlQ29udGVudHNSZWN0KHZp
c2libGVDb250ZW50c1JlY3QsIHNjYWxlLCB0cmFqZWN0b3J5VmVjdG9yLCBhY2N1cmF0ZVZpc2li
bGVDb250ZW50c1Bvc2l0aW9uKTsKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuaAkocmV2aXNpb24gMTE1NTg2KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzSW5BY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuICFtX2xheWVyVHJlZUNvbnRleHQu
aXNFbXB0eSgpOyB9CiAKICNpZiBVU0UoVUlfU0lERV9DT01QT1NJVElORykKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2aXNp
YmxlQ29udGVudHNSZWN0LCBmbG9hdCBzY2FsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYg
dHJhamVjdG9yeSk7CisgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgdmlzaWJsZUNvbnRlbnRzUmVjdCwgZmxvYXQgc2NhbGUsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHRyYWplY3RvcnksIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmIGFjY3VyYXRlVmlzaWJsZUNvbnRlbnRzUG9zaXRpb24gPSBXZWJDb3JlOjpGbG9hdFBv
aW50KCkpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUxheWVyVHJlZUhvc3RQcm94eU1lc3NhZ2UoQ29y
ZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyKik7CiAjZW5kaWYKICNlbHNlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TGF5ZXJUcmVlSG9zdFByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5LmNwcAkocmV2aXNpb24gMTE1NTg2KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyNyw5ICsxMjcsOSBAQCB2b2lkIExheWVyVHJlZUhvc3RQcm94eTo6c2V0Q29udGVudHNT
aXplCiAgICAgbV9yZW5kZXJlci0+c2V0Q29udGVudHNTaXplKGNvbnRlbnRzU2l6ZSk7CiB9CiAK
LXZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IElu
dFJlY3QmIHJlY3QsIGZsb2F0IHNjYWxlLCBjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVj
dG9yKQordm9pZCBMYXllclRyZWVIb3N0UHJveHk6OnNldFZpc2libGVDb250ZW50c1JlY3QoY29u
c3QgSW50UmVjdCYgcmVjdCwgZmxvYXQgc2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3Rv
cnlWZWN0b3IsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGFjY3VyYXRlVmlzaWJsZUNvbnRl
bnRzUG9zaXRpb24pCiB7Ci0gICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmV2ViTGF5ZXJUcmVlUmVu
ZGVyZXI6OnNldFZpc2libGVDb250ZW50c1JlY3QsIG1fcmVuZGVyZXIuZ2V0KCksIHJlY3QsIHNj
YWxlKSk7CisgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmV2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnNl
dFZpc2libGVDb250ZW50c1JlY3QsIG1fcmVuZGVyZXIuZ2V0KCksIHJlY3QsIHNjYWxlLCBhY2N1
cmF0ZVZpc2libGVDb250ZW50c1Bvc2l0aW9uKSk7CiAgICAgbV9kcmF3aW5nQXJlYVByb3h5LT5w
YWdlKCktPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlSG9zdDo6U2V0VmlzaWJs
ZUNvbnRlbnRzUmVjdChyZWN0LCBzY2FsZSwgdHJhamVjdG9yeVZlY3RvciksIG1fZHJhd2luZ0Fy
ZWFQcm94eS0+cGFnZSgpLT5wYWdlSUQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9MYXllclRyZWVIb3N0UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5LmgJKHJldmlzaW9uIDExNTU4NikKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXllclRyZWVIb3N0UHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShD
b3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVu
dERlY29kZXIqKTsKICAgICB2b2lkIHB1cmdlR0xSZXNvdXJjZXMoKTsKICAgICB2b2lkIHNldENv
bnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKLSAgICB2b2lkIHNldFZpc2li
bGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGZsb2F0IHNjYWxlLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5KTsKKyAgICB2b2lkIHNldFZpc2libGVD
b250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGZsb2F0IHNjYWxlLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5LCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
JiBhY2N1cmF0ZVZpc2libGVDb250ZW50c1Bvc2l0aW9uKTsKICAgICB2b2lkIGRpZFJlbmRlckZy
YW1lKCk7CiAgICAgdm9pZCBjcmVhdGVUaWxlRm9yTGF5ZXIoaW50IGxheWVySUQsIGludCB0aWxl
SUQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYpOwog
ICAgIHZvaWQgdXBkYXRlVGlsZUZvckxheWVyKGludCBsYXllcklELCBpbnQgdGlsZUlELCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVyLmNwcAko
cmV2aXNpb24gMTE1NTg2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxheWVyVHJl
ZVJlbmRlcmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDYgKzEwOSwxMiBAQCB2b2lkIFdl
YkxheWVyVHJlZVJlbmRlcmVyOjpwYWludFRvQ3VycmVuCiAgICAgICAgIG1fdGV4dHVyZU1hcHBl
ciA9IFRleHR1cmVNYXBwZXI6OmNyZWF0ZShUZXh0dXJlTWFwcGVyOjpPcGVuR0xNb2RlKTsKICAg
ICBBU1NFUlQobV90ZXh0dXJlTWFwcGVyLT5hY2NlbGVyYXRpb25Nb2RlKCkgPT0gVGV4dHVyZU1h
cHBlcjo6T3BlbkdMTW9kZSk7CiAKKyAgICAvLyBXZSBuZWVkIHRvIGNvbXBlbnNhdGUgZm9yIHRo
ZSByb3VuZGluZyBlcnJvciB0aGF0IGhhcHBlbnMgZHVlIHRvIG1fdmlzaWJsZUNvbnRlbnRzUmVj
dCBiZWluZworICAgIC8vIGludCBhbmQgbm90IGZsb2F0LiBXZSBkbyB0aGF0IGJ5IG1vdmluZyB0
aGUgVHJhbnNmb3JtYXRpb25NYXRyaXggYnkgdGhlIGRlbHRhIGJldHdlZW4gdGhlCisgICAgLy8g
cG9zaXRpb24gb2YgbV92aXNpYmxlQ29udGVudHNSZWN0IGFuZCB0aGUgcG9zaXRpb24gaXQgd291
bGQgaGF2ZSBpZiBpdCB3YXNuJ3Qgcm91bmRlZC4KKyAKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBuZXdNYXRyaXggPSBtYXRyaXg7CisgICAgbmV3TWF0cml4LnRyYW5zbGF0ZShtX2FjY3VyYXRl
VmlzaWJsZUNvbnRlbnRzUG9zaXRpb24ueCgpIC8gbV9jb250ZW50c1NjYWxlIC0gbV92aXNpYmxl
Q29udGVudHNSZWN0LngoKSwgbV9hY2N1cmF0ZVZpc2libGVDb250ZW50c1Bvc2l0aW9uLnkoKSAv
IG1fY29udGVudHNTY2FsZSAtIG1fdmlzaWJsZUNvbnRlbnRzUmVjdC55KCkpOwogICAgIGFkanVz
dFBvc2l0aW9uRm9yRml4ZWRMYXllcnMoKTsKICAgICBHcmFwaGljc0xheWVyKiBjdXJyZW50Um9v
dExheWVyID0gcm9vdExheWVyKCk7CiAgICAgaWYgKCFjdXJyZW50Um9vdExheWVyKQpAQCAtMTIz
LDkgKzEyOSw5IEBAIHZvaWQgV2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnBhaW50VG9DdXJyZW4KICAg
ICBtX3RleHR1cmVNYXBwZXItPmJlZ2luUGFpbnRpbmcoUGFpbnRGbGFncyk7CiAgICAgbV90ZXh0
dXJlTWFwcGVyLT5iZWdpbkNsaXAoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2xpcFJlY3QpOwog
Ci0gICAgaWYgKGN1cnJlbnRSb290TGF5ZXItPm9wYWNpdHkoKSAhPSBvcGFjaXR5IHx8IGN1cnJl
bnRSb290TGF5ZXItPnRyYW5zZm9ybSgpICE9IG1hdHJpeCkgeworICAgIGlmIChjdXJyZW50Um9v
dExheWVyLT5vcGFjaXR5KCkgIT0gb3BhY2l0eSB8fCBjdXJyZW50Um9vdExheWVyLT50cmFuc2Zv
cm0oKSAhPSBuZXdNYXRyaXgpIHsKICAgICAgICAgY3VycmVudFJvb3RMYXllci0+c2V0T3BhY2l0
eShvcGFjaXR5KTsKLSAgICAgICAgY3VycmVudFJvb3RMYXllci0+c2V0VHJhbnNmb3JtKG1hdHJp
eCk7CisgICAgICAgIGN1cnJlbnRSb290TGF5ZXItPnNldFRyYW5zZm9ybShuZXdNYXRyaXgpOwog
ICAgICAgICBjdXJyZW50Um9vdExheWVyLT5zeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXll
ck9ubHkoKTsKICAgICB9CiAKQEAgLTE1OCwxMCArMTY0LDExIEBAIHZvaWQgV2ViTGF5ZXJUcmVl
UmVuZGVyZXI6OnNldENvbnRlbnRzU2kKICAgICBtX2NvbnRlbnRzU2l6ZSA9IGNvbnRlbnRzU2l6
ZTsKIH0KIAotdm9pZCBXZWJMYXllclRyZWVSZW5kZXJlcjo6c2V0VmlzaWJsZUNvbnRlbnRzUmVj
dChjb25zdCBJbnRSZWN0JiByZWN0LCBmbG9hdCBzY2FsZSkKK3ZvaWQgV2ViTGF5ZXJUcmVlUmVu
ZGVyZXI6OnNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgZmxvYXQg
c2NhbGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGFjY3VyYXRlVmlzaWJsZUNvbnRlbnRz
UG9zaXRpb24pCiB7CiAgICAgbV92aXNpYmxlQ29udGVudHNSZWN0ID0gcmVjdDsKICAgICBtX2Nv
bnRlbnRzU2NhbGUgPSBzY2FsZTsKKyAgICBtX2FjY3VyYXRlVmlzaWJsZUNvbnRlbnRzUG9zaXRp
b24gPSBhY2N1cmF0ZVZpc2libGVDb250ZW50c1Bvc2l0aW9uOwogfQogCiB2b2lkIFdlYkxheWVy
VHJlZVJlbmRlcmVyOjp1cGRhdGVWaWV3cG9ydCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuaAkocmV2aXNpb24gMTE1NTg2KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcGFpbnRUb0dyYXBoaWNz
Q29udGV4dChCYWNraW5nU3RvcmU6OlBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KTsKICAgICB2b2lk
IHN5bmNSZW1vdGVDb250ZW50KCk7CiAgICAgdm9pZCBzZXRDb250ZW50c1NpemUoY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJik7Ci0gICAgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBmbG9hdCBzY2FsZSk7CisgICAgdm9pZCBzZXRWaXNpYmxlQ29u
dGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBmbG9hdCBzY2FsZSwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYgYWNjdXJhdGVWaXNpYmxlQ29udGVudHNQb3NpdGlvbik7CiAgICAg
dm9pZCBkaWRDaGFuZ2VTY3JvbGxQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9z
aXRpb24pOwogCiAgICAgdm9pZCBkZXRhY2goKTsKQEAgLTEwMiw2ICsxMDIsNyBAQCBwcml2YXRl
OgogICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJMYXllcklELCBXZWJDb3JlOjpHcmFwaGljc0xheWVy
Kj4gTGF5ZXJNYXA7CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fY29udGVudHNTaXplOwogICAg
IFdlYkNvcmU6OkludFJlY3QgbV92aXNpYmxlQ29udGVudHNSZWN0OworICAgIFdlYkNvcmU6OkZs
b2F0UG9pbnQgbV9hY2N1cmF0ZVZpc2libGVDb250ZW50c1Bvc2l0aW9uOwogICAgIGZsb2F0IG1f
Y29udGVudHNTY2FsZTsKIAogICAgIC8vIFJlbmRlciBxdWV1ZSBjYW4gYmUgYWNjZXNzZWQgb255
IGZyb20gbWFpbiB0aHJlYWQgb3IgdXBkYXRlUGFpbnROb2RlIGNhbGwgc3RhY2shCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAJ
KHJldmlzaW9uIDExNTU4NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1
aWNrd2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0NSw3ICs1NDUsOSBAQCBRUmVjdCBR
UXVpY2tXZWJWaWV3UHJpdmF0ZTo6dmlzaWJsZUNvbnRlCiAgICAgUV9RKGNvbnN0IFFRdWlja1dl
YlZpZXcpOwogICAgIGNvbnN0IFFSZWN0RiB2aXNpYmxlUmVjdChxLT5ib3VuZGluZ1JlY3QoKS5p
bnRlcnNlY3RlZChwYWdlVmlldy0+Ym91bmRpbmdSZWN0KCkpKTsKIAotICAgIHJldHVybiBxLT5t
YXBSZWN0VG9XZWJDb250ZW50KHZpc2libGVSZWN0KS50b0FsaWduZWRSZWN0KCk7CisgICAgLy8g
V2UgYXZvaWQgdXNpbmcgdG9BbGlnbmVkUmVjdCgpIGJlY2F1c2UgaXQgcHJvZHVjZXMgaW5jb25z
aXN0ZW50IHdpZHRoIGFuZCBoZWlnaHQuCisgICAgUVJlY3RGIG1hcHBlZFJlY3QocS0+bWFwUmVj
dFRvV2ViQ29udGVudCh2aXNpYmxlUmVjdCkpOworICAgIHJldHVybiBRUmVjdChmbG9vcihtYXBw
ZWRSZWN0LngoKSksIGZsb29yKG1hcHBlZFJlY3QueSgpKSwgZmxvb3IobWFwcGVkUmVjdC53aWR0
aCgpKSwgZmxvb3IobWFwcGVkUmVjdC5oZWlnaHQoKSkpOwogfQogCiBXZWJDb3JlOjpJbnRTaXpl
IFFRdWlja1dlYlZpZXdQcml2YXRlOjp2aWV3U2l6ZSgpIGNvbnN0CkBAIC03ODAsNyArNzgyLDkg
QEAgdm9pZCBRUXVpY2tXZWJWaWV3RmxpY2thYmxlUHJpdmF0ZTo6X3FfYwogICAgIGNvbnN0IFFS
ZWN0IHZpc2libGVSZWN0KHZpc2libGVDb250ZW50c1JlY3QoKSk7CiAgICAgZmxvYXQgc2NhbGUg
PSBwYWdlVmlldy0+Y29udGVudHNTY2FsZSgpOwogCi0gICAgZHJhd2luZ0FyZWEtPnNldFZpc2li
bGVDb250ZW50c1JlY3QodmlzaWJsZVJlY3QsIHNjYWxlLCB0cmFqZWN0b3J5VmVjdG9yKTsKKyAg
ICBRUmVjdEYgYWNjdXJhdGVWaXNpYmxlUmVjdChxLT5ib3VuZGluZ1JlY3QoKSk7CisgICAgYWNj
dXJhdGVWaXNpYmxlUmVjdC50cmFuc2xhdGUoY29udGVudFBvcygpKTsKKyAgICBkcmF3aW5nQXJl
YS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCh2aXNpYmxlUmVjdCwgc2NhbGUsIHRyYWplY3RvcnlW
ZWN0b3IsIEZsb2F0UG9pbnQoYWNjdXJhdGVWaXNpYmxlUmVjdC54KCksIGFjY3VyYXRlVmlzaWJs
ZVJlY3QueSgpKSk7CiAKICAgICAvLyBFbnN1cmUgdGhhdCB1cGRhdGVQYWludE5vZGUgaXMgYWx3
YXlzIGNhbGxlZCBiZWZvcmUgcGFpbnRpbmcuCiAgICAgcGFnZVZpZXctPnVwZGF0ZSgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>