<?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>100674</bug_id>
          
          <creation_ts>2012-10-29 07:55:37 -0700</creation_ts>
          <short_desc>[EFL][WK2] Allow using ACCELERATED_COMPOSITING without COORDINATED_GRAPHICS</short_desc>
          <delta_ts>2012-11-09 10:03:47 -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>WebKit EFL</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>cdumez</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>753451</commentid>
    <comment_count>0</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-10-29 07:55:37 -0700</bug_when>
    <thetext>This mode is needed for running the layout tests.
In Qt port, there is a &quot;--desktop&quot; mode that is used for running layout tests. EFL port needs a similar mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755610</commentid>
    <comment_count>1</comment_count>
      <attachid>171718</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-10-31 14:14:24 -0700</bug_when>
    <thetext>Created attachment 171718
Patch

Make a distinction between calling ewk_view_base_add and ewk_view_smart_add.
Calling ewk_view_base_add creates a desktop style view, that does not support
fixed layout size, while calling ewk_view_smart_add does support fixed layout size.
As a result, WebKitTestRunner and the inspector window do not support fixed layout size, while MiniBrowser does. This change allows many DumpAsText layout tests to pass without modification, when AC is enabled.

I chose to make this distinction, to avoid adding a new public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755612</commentid>
    <comment_count>2</comment_count>
      <attachid>171718</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-31 14:18:38 -0700</bug_when>
    <thetext>Comment on attachment 171718
Patch

I would like to wait with landing anything like this. I am trying to do some changes so that our code is more correct. I am looking at it with Noam&apos;s help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755626</commentid>
    <comment_count>3</comment_count>
      <attachid>171721</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-10-31 14:29:53 -0700</bug_when>
    <thetext>Created attachment 171721
Patch

Rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755637</commentid>
    <comment_count>4</comment_count>
      <attachid>171723</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-10-31 14:42:00 -0700</bug_when>
    <thetext>Created attachment 171723
Patch

Third time is a charm :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755643</commentid>
    <comment_count>5</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-10-31 14:50:08 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 171718 [details])
&gt; I would like to wait with landing anything like this. I am trying to do some changes so that our code is more correct. I am looking at it with Noam&apos;s help.

Do you have a bug ID ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755782</commentid>
    <comment_count>6</comment_count>
      <attachid>171751</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-10-31 18:32:00 -0700</bug_when>
    <thetext>Created attachment 171751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756040</commentid>
    <comment_count>7</comment_count>
      <attachid>171718</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-11-01 03:25:09 -0700</bug_when>
    <thetext>Comment on attachment 171718
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:549
&gt; -static inline Evas_Object* createEwkView(Evas* canvas, Evas_Smart* smart, PassRefPtr&lt;Ewk_Context&gt; context, WKPageGroupRef pageGroupRef = 0)
&gt; +static inline Evas_Object* createEwkView(Evas* canvas, Evas_Smart* smart, PassRefPtr&lt;Ewk_Context&gt; context, WKPageGroupRef pageGroupRef = 0, bool desktopMode = false)

I hate us calling this desktop mode. The desktop is changing...

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:577
&gt; +    return createEwkView(canvas, createEwkViewSmartClass(), Ewk_Context::create(contextRef), pageGroupRef, true);

an enum would be a lot nicer

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:130
&gt; +    if (!desktopMode)
&gt; +        m_pageViewportController = adoptPtr(new PageViewportController(m_pageProxy.get(), m_pageViewportControllerClient.get()));
&gt;      m_pageProxy-&gt;pageGroup()-&gt;preferences()-&gt;setAcceleratedCompositingEnabled(true);
&gt;      m_pageProxy-&gt;pageGroup()-&gt;preferences()-&gt;setForceCompositingMode(true);
&gt; +    if (m_pageViewportController)
&gt; +        m_pageProxy-&gt;setUseFixedLayout(true);

why not do the useFixedLayout further up? do avoid an additional if

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:321
&gt;  void EwkViewImpl::informLoadCommitted()
&gt;  {
&gt; -    m_pageViewportController-&gt;didCommitLoad();
&gt; +    if (m_pageViewportController)
&gt; +        m_pageViewportController-&gt;didCommitLoad();
&gt; +    else
&gt; +        m_pageViewportControllerClient-&gt;didChangeVisibleContents();
&gt;  }

This is weird and confusing. I am not saying it is wrong, but this code just looks really confusing

&gt; Source/WebKit2/UIProcess/efl/PageViewportControllerClientEfl.cpp:105
&gt; +    if (!m_pageViewportController) {
&gt; +        FloatRect mapRectToWebContent = FloatRect(m_scrollPosition, m_viewportSize);
&gt; +        mapRectToWebContent.scale(1 / m_scaleFactor);
&gt; +        drawingArea()-&gt;layerTreeCoordinatorProxy()-&gt;setContentsSize(WebCore::FloatSize(size.width(), size.height()));
&gt; +    }

can&apos;t you uuse the new toWebContents.mapRect( .. ) ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756050</commentid>
    <comment_count>8</comment_count>
      <attachid>171751</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-11-01 03:46:09 -0700</bug_when>
    <thetext>Comment on attachment 171751
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:96
&gt; +EwkViewImpl::EwkViewImpl(Evas_Object* view, PassRefPtr&lt;Ewk_Context&gt; context, PassRefPtr&lt;WebPageGroup&gt; pageGroup, bool desktopMode)

don&apos;t like custom flags, we need to think of it in OOP way and either have another instance of view impl class or encapsulate the behavioural difference in some strategy class.

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:130
&gt; +        m_pageProxy-&gt;setUseFixedLayout(true);

maybe put it under the same if (!desktopMode) ?

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:327
&gt; +    if (m_pageViewportController)

this should be avoided, need some design decision like I said in first comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756231</commentid>
    <comment_count>9</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-11-01 07:34:20 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 171718 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171718&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:549
&gt; &gt; -static inline Evas_Object* createEwkView(Evas* canvas, Evas_Smart* smart, PassRefPtr&lt;Ewk_Context&gt; context, WKPageGroupRef pageGroupRef = 0)
&gt; &gt; +static inline Evas_Object* createEwkView(Evas* canvas, Evas_Smart* smart, PassRefPtr&lt;Ewk_Context&gt; context, WKPageGroupRef pageGroupRef = 0, bool desktopMode = false)
&gt; 
&gt; I hate us calling this desktop mode. The desktop is changing...
&gt; 
That is what Qt port is using. Do you have a suggestion for another name?

&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:577
&gt; &gt; +    return createEwkView(canvas, createEwkViewSmartClass(), Ewk_Context::create(contextRef), pageGroupRef, true);
&gt; 
&gt; an enum would be a lot nicer
&gt; 
ok
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:130
&gt; &gt; +    if (!desktopMode)
&gt; &gt; +        m_pageViewportController = adoptPtr(new PageViewportController(m_pageProxy.get(), m_pageViewportControllerClient.get()));
&gt; &gt;      m_pageProxy-&gt;pageGroup()-&gt;preferences()-&gt;setAcceleratedCompositingEnabled(true);
&gt; &gt;      m_pageProxy-&gt;pageGroup()-&gt;preferences()-&gt;setForceCompositingMode(true);
&gt; &gt; +    if (m_pageViewportController)
&gt; &gt; +        m_pageProxy-&gt;setUseFixedLayout(true);
&gt; 
&gt; why not do the useFixedLayout further up? do avoid an additional if
&gt; 
ok
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:321
&gt; &gt;  void EwkViewImpl::informLoadCommitted()
&gt; &gt;  {
&gt; &gt; -    m_pageViewportController-&gt;didCommitLoad();
&gt; &gt; +    if (m_pageViewportController)
&gt; &gt; +        m_pageViewportController-&gt;didCommitLoad();
&gt; &gt; +    else
&gt; &gt; +        m_pageViewportControllerClient-&gt;didChangeVisibleContents();
&gt; &gt;  }
&gt; 
&gt; This is weird and confusing. I am not saying it is wrong, but this code just looks really confusing
&gt; 
I agree. I did not want to add a new API or another class before I hear other opinions, but now I know that people prefer a second class.

&gt; &gt; Source/WebKit2/UIProcess/efl/PageViewportControllerClientEfl.cpp:105
&gt; &gt; +    if (!m_pageViewportController) {
&gt; &gt; +        FloatRect mapRectToWebContent = FloatRect(m_scrollPosition, m_viewportSize);
&gt; &gt; +        mapRectToWebContent.scale(1 / m_scaleFactor);
&gt; &gt; +        drawingArea()-&gt;layerTreeCoordinatorProxy()-&gt;setContentsSize(WebCore::FloatSize(size.width(), size.height()));
&gt; &gt; +    }
&gt; 
&gt; can&apos;t you uuse the new toWebContents.mapRect( .. ) ?
ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756247</commentid>
    <comment_count>10</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-11-01 07:55:03 -0700</bug_when>
    <thetext>Qt also uses private classes ending in *Flickable and *Legacy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756262</commentid>
    <comment_count>11</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-11-01 08:18:33 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Qt also uses private classes ending in *Flickable and *Legacy
ok, I can rename the new class EwkViewImplLegacy .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756281</commentid>
    <comment_count>12</comment_count>
      <attachid>171751</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-11-01 08:33:28 -0700</bug_when>
    <thetext>Comment on attachment 171751
Patch

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

&gt; Source/WebKit2/ChangeLog:10
&gt; +        Calling ewk_view_base_add creates a desktop style view, that does not support
&gt; +        fixed layout size, while calling ewk_view_smart_add does support fixed layout size.

If then, can I know how we can disable fixed layout size when using ewk_view_smart_add ?

ewk_view_smart_add is an API that inherit ewk_view on application side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756308</commentid>
    <comment_count>13</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-11-01 08:53:24 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 171751 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171751&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:10
&gt; &gt; +        Calling ewk_view_base_add creates a desktop style view, that does not support
&gt; &gt; +        fixed layout size, while calling ewk_view_smart_add does support fixed layout size.
&gt; 
&gt; If then, can I know how we can disable fixed layout size when using ewk_view_smart_add ?
&gt; 
&gt; ewk_view_smart_add is an API that inherit ewk_view on application side.

ewk_view_base_add is a public API. Applications that need to disable fixed layout size can use that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756343</commentid>
    <comment_count>14</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-11-01 09:34:07 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; (From update of attachment 171751 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171751&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/ChangeLog:10
&gt; &gt; &gt; +        Calling ewk_view_base_add creates a desktop style view, that does not support
&gt; &gt; &gt; +        fixed layout size, while calling ewk_view_smart_add does support fixed layout size.
&gt; &gt; 
&gt; &gt; If then, can I know how we can disable fixed layout size when using ewk_view_smart_add ?
&gt; &gt; 
&gt; &gt; ewk_view_smart_add is an API that inherit ewk_view on application side.
&gt; 
&gt; ewk_view_base_add is a public API. Applications that need to disable fixed layout size can use that.
Or we can turn this into a setting instead of the separation I proposed in my patch. Do you have a preference?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756725</commentid>
    <comment_count>15</comment_count>
      <attachid>171953</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-11-01 16:41:54 -0700</bug_when>
    <thetext>Created attachment 171953
Patch

Created a new class for legacy mode, but tried to share as much code as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756881</commentid>
    <comment_count>16</comment_count>
      <attachid>171953</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-01 21:56:41 -0700</bug_when>
    <thetext>Comment on attachment 171953
Patch

Attachment 171953 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14692678

New failing tests:
fast/repaint/fixed-table-overflow-zindex.html
fast/repaint/scroll-fixed-reflected-layer.html
fast/repaint/fixed-scale.html
fast/repaint/fixed-tranformed.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757047</commentid>
    <comment_count>17</comment_count>
      <attachid>171953</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-11-02 03:20:17 -0700</bug_when>
    <thetext>Comment on attachment 171953
Patch

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

Think it&apos;s worth creating PageClientImplLegacy rather than EwkViewImplLegacy

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:334
&gt; +{

Does the view really need to have all these methods, seems the place of this functionality is inside page client

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:187
&gt; +    virtual float scaleFactor() { return m_pageViewportControllerClient-&gt;scaleFactor(); }

should be const

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:188
&gt; +    virtual WebCore::IntPoint scrollPosition() { return m_pageViewportControllerClient-&gt;scrollPosition(); }

same here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757103</commentid>
    <comment_count>18</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-11-02 04:54:40 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 171953 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171953&amp;action=review
&gt; 
&gt; Think it&apos;s worth creating PageClientImplLegacy rather than EwkViewImplLegacy
&gt; 
I don&apos;t agree on that one :) At a high level, being a legacy mode or fixed layout mode is an attribute of the view, not of the page client.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:334
&gt; &gt; +{
&gt; 
&gt; Does the view really need to have all these methods, seems the place of this functionality is inside page client
&gt; 
It Qt port, these methods go all the way up to QQuickWebView asnd QQuickWebPage. In my first implementation, I took a shortcut.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:187
&gt; &gt; +    virtual float scaleFactor() { return m_pageViewportControllerClient-&gt;scaleFactor(); }
&gt; 
&gt; should be const
&gt; 
ok

&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:188
&gt; &gt; +    virtual WebCore::IntPoint scrollPosition() { return m_pageViewportControllerClient-&gt;scrollPosition(); }
&gt; 
&gt; same here
ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757110</commentid>
    <comment_count>19</comment_count>
      <attachid>172044</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-11-02 05:02:28 -0700</bug_when>
    <thetext>Created attachment 172044
Patch

Added const, as requested in comment #17.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757111</commentid>
    <comment_count>20</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-11-02 05:03:27 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 171953 [details])
&gt; Attachment 171953 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/14692678
&gt; 
&gt; New failing tests:
&gt; fast/repaint/fixed-table-overflow-zindex.html
&gt; fast/repaint/scroll-fixed-reflected-layer.html
&gt; fast/repaint/fixed-scale.html
&gt; fast/repaint/fixed-tranformed.html

I don&apos;t see how this is related to my patch. I only modified EFL code in WK2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757112</commentid>
    <comment_count>21</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-11-02 05:08:11 -0700</bug_when>
    <thetext>Well the page client (client of the page) is actually symbolising the view; that is what it was invented for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757146</commentid>
    <comment_count>22</comment_count>
      <attachid>172044</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-02 06:42:19 -0700</bug_when>
    <thetext>Comment on attachment 172044
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:161
&gt; +void EwkViewImpl::initialize()

I don&apos;t really like this initialize() method. We were trying to get rid of this initialization in several steps in separate functions.
I guess this could be solved by having a base class shared by EwkViewImplLegacy and EwkViewImpl. This code would then move to the EwkViewImpl constructor.

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:250
&gt; +    IntPoint scrollPosition = this-&gt;scrollPosition();

I would remove the &quot;this-&gt;&quot;, we don&apos;t usually use it explicitely

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:251
&gt; +    float scaleFactor = this-&gt;scaleFactor();

Ditto.

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:187
&gt; +    virtual const float scaleFactor() { return m_pageViewportControllerClient-&gt;scaleFactor(); }

should probably be a const method, not const return value.

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:188
&gt; +    virtual const WebCore::IntPoint scrollPosition() { return m_pageViewportControllerClient-&gt;scrollPosition(); }

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757586</commentid>
    <comment_count>23</comment_count>
      <attachid>172138</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-11-02 14:27:59 -0700</bug_when>
    <thetext>Created attachment 172138
Patch

Address comments in this bug and on IRC.
Instead of 2 EwkView classes, created 3 PageClient classes: base class, legacy class and fixed layout class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757595</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-02 14:31:05 -0700</bug_when>
    <thetext>Attachment 172138 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:93:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:94:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:95:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:96:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 4 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>757605</commentid>
    <comment_count>25</comment_count>
      <attachid>172142</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-11-02 14:38:25 -0700</bug_when>
    <thetext>Created attachment 172142
Patch

Fix style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757617</commentid>
    <comment_count>26</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-02 14:43:56 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=172138&amp;action=review

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:133
&gt; +        m_pageProxy-&gt;setUseFixedLayout(true);

m_pageProxy-&gt;setUseFixedLayout(mode == FixedLayoutMode);  on 1 line?

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:187
&gt; +    WebCore::IntPoint scrollPosition() const { return m_scrollPosition; }

You could return a const reference here.

&gt; Source/WebKit2/UIProcess/efl/PageClientImplFixedLayout.cpp:51
&gt; +void PageClientImplFixedLayout::initialize()

Now that we have 3 classes, why do we still need this initialise() method? Why can&apos;t we move this code to the constructor?

&gt; Source/WebKit2/UIProcess/efl/PageClientImplFixedLayout.h:49
&gt; +

extra line here.

&gt; Source/WebKit2/UIProcess/efl/PageViewportControllerClientEfl.cpp:89
&gt; +    m_viewImpl-&gt;setScrollPosition(IntPoint(contentsPoint.x(), contentsPoint.y()));

We could store IntPoint(contentsPoint.x(), contentsPoint.y()) in a variable to construct it once instead of twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757621</commentid>
    <comment_count>27</comment_count>
      <attachid>172142</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-02 14:51:10 -0700</bug_when>
    <thetext>Comment on attachment 172142
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:93
&gt; +    typedef enum {

I don&apos;t believe you need a typedef in C++, enum WindowMode { would suffice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757629</commentid>
    <comment_count>28</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-11-02 14:55:15 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=172138&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:133
&gt; &gt; +        m_pageProxy-&gt;setUseFixedLayout(true);
&gt; 
&gt; m_pageProxy-&gt;setUseFixedLayout(mode == FixedLayoutMode);  on 1 line?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:187
&gt; &gt; +    WebCore::IntPoint scrollPosition() const { return m_scrollPosition; }
&gt; 
&gt; You could return a const reference here.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/efl/PageClientImplFixedLayout.cpp:51
&gt; &gt; +void PageClientImplFixedLayout::initialize()
&gt; 
&gt; Now that we have 3 classes, why do we still need this initialise() method? Why can&apos;t we move this code to the constructor?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/efl/PageClientImplFixedLayout.h:49
&gt; &gt; +
&gt; 
&gt; extra line here.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/efl/PageViewportControllerClientEfl.cpp:89
&gt; &gt; +    m_viewImpl-&gt;setScrollPosition(IntPoint(contentsPoint.x(), contentsPoint.y()));
&gt; 
&gt; We could store IntPoint(contentsPoint.x(), contentsPoint.y()) in a variable to construct it once instead of twice.

These are all small nits that can be fixed before landing.
I added a comment in the code explaining why we need the initialize method

    // PageClientImpl is created before WebPageProxy, but PageViewportController
    // is created after WebPageProxy, so it cannot be created in the constuctor 
    // of PageClientImpl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757654</commentid>
    <comment_count>29</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-02 15:13:55 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #26)
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=172138&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:133
&gt; &gt; &gt; +        m_pageProxy-&gt;setUseFixedLayout(true);
&gt; &gt; 
&gt; &gt; m_pageProxy-&gt;setUseFixedLayout(mode == FixedLayoutMode);  on 1 line?
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:187
&gt; &gt; &gt; +    WebCore::IntPoint scrollPosition() const { return m_scrollPosition; }
&gt; &gt; 
&gt; &gt; You could return a const reference here.
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/efl/PageClientImplFixedLayout.cpp:51
&gt; &gt; &gt; +void PageClientImplFixedLayout::initialize()
&gt; &gt; 
&gt; &gt; Now that we have 3 classes, why do we still need this initialise() method? Why can&apos;t we move this code to the constructor?
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/efl/PageClientImplFixedLayout.h:49
&gt; &gt; &gt; +
&gt; &gt; 
&gt; &gt; extra line here.
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/efl/PageViewportControllerClientEfl.cpp:89
&gt; &gt; &gt; +    m_viewImpl-&gt;setScrollPosition(IntPoint(contentsPoint.x(), contentsPoint.y()));
&gt; &gt; 
&gt; &gt; We could store IntPoint(contentsPoint.x(), contentsPoint.y()) in a variable to construct it once instead of twice.
&gt; 
&gt; These are all small nits that can be fixed before landing.
&gt; I added a comment in the code explaining why we need the initialize method
&gt; 
&gt;     // PageClientImpl is created before WebPageProxy, but PageViewportController
&gt;     // is created after WebPageProxy, so it cannot be created in the constuctor 
&gt;     // of PageClientImpl.

Yes, I missed the comment, sorry. Ok then. We could have an empty implementation for initialize() in the base class (instead of making it pure virtual) so that we don&apos;t need to override the method in the legacy class, right?

Besides the small nits, this new patch looks good to me. I have no problem with this new approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757801</commentid>
    <comment_count>30</comment_count>
      <attachid>172142</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-02 17:47:17 -0700</bug_when>
    <thetext>Comment on attachment 172142
Patch

Attachment 172142 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14696855</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757860</commentid>
    <comment_count>31</comment_count>
      <attachid>172196</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-11-02 19:45:24 -0700</bug_when>
    <thetext>Created attachment 172196
Patch

Fix the build and address comment #26 and comment #27.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757861</commentid>
    <comment_count>32</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-11-02 19:48:51 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=172138&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:133
&gt; &gt; +        m_pageProxy-&gt;setUseFixedLayout(true);
&gt; 
&gt; m_pageProxy-&gt;setUseFixedLayout(mode == FixedLayoutMode);  on 1 line?
&gt; 
That will trigger calling  setUseFixedLayout(false) needlessly.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:187
&gt; &gt; +    WebCore::IntPoint scrollPosition() const { return m_scrollPosition; }
&gt; 
&gt; You could return a const reference here.
&gt; 
ok
&gt; &gt; Source/WebKit2/UIProcess/efl/PageClientImplFixedLayout.cpp:51
&gt; &gt; +void PageClientImplFixedLayout::initialize()
&gt; 
&gt; Now that we have 3 classes, why do we still need this initialise() method? Why can&apos;t we move this code to the constructor?
&gt; 
ok
&gt; &gt; Source/WebKit2/UIProcess/efl/PageClientImplFixedLayout.h:49
&gt; &gt; +
&gt; 
&gt; extra line here.
&gt; 
ok
&gt; &gt; Source/WebKit2/UIProcess/efl/PageViewportControllerClientEfl.cpp:89
&gt; &gt; +    m_viewImpl-&gt;setScrollPosition(IntPoint(contentsPoint.x(), contentsPoint.y()));
&gt; 
&gt; We could store IntPoint(contentsPoint.x(), contentsPoint.y()) in a variable to construct it once instead of twice.
I was told before not to create this kind of temporary variables. I wonder if there is something in the coding style about that. (Did it anyways :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757863</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-02 19:51:32 -0700</bug_when>
    <thetext>Attachment 172196 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/UIProcess/efl/PageClientImpl.h:42:  Missing space inside { }.  [whitespace/braces] [5]
Total errors found: 1 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>757947</commentid>
    <comment_count>34</comment_count>
      <attachid>172196</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-11-03 05:02:09 -0700</bug_when>
    <thetext>Comment on attachment 172196
Patch

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

looks much nicer for me, thank you!

&gt;&gt; Source/WebKit2/UIProcess/efl/PageClientImpl.h:42
&gt;&gt; +    virtual void initialize() {};
&gt; 
&gt; Missing space inside { }.  [whitespace/braces] [5]

We could do without initialize() function if m_pageViewportController is initialized lazily.

&gt; Source/WebKit2/UIProcess/efl/PageClientImplLegacy.h:45
&gt; +

extra line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757968</commentid>
    <comment_count>35</comment_count>
      <attachid>172196</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-11-03 09:36:22 -0700</bug_when>
    <thetext>Comment on attachment 172196
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:95
&gt; +        FixedLayoutMode

I really wish we could find a better name. You can easily use fixed layout without delegating scrolling, handing interaction on the ui side etc.

It all boils down to having touch as a first citizen, which requires non-blocking interaction and handing interaction and painting out of process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757980</commentid>
    <comment_count>36</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-03 11:50:55 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; (In reply to comment #26)
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=172138&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:133
&gt; &gt; &gt; +        m_pageProxy-&gt;setUseFixedLayout(true);
&gt; &gt; 
&gt; &gt; m_pageProxy-&gt;setUseFixedLayout(mode == FixedLayoutMode);  on 1 line?
&gt; &gt; 
&gt; That will trigger calling  setUseFixedLayout(false) needlessly.

True but I thought it would be more robust not to rely on what the default value is. Without this, the code gets broken easily if someone makes fixed layout the default. Anyway, this is minor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758019</commentid>
    <comment_count>37</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-11-03 16:05:21 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; (From update of attachment 172196 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=172196&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:95
&gt; &gt; +        FixedLayoutMode
&gt; 
&gt; I really wish we could find a better name. You can easily use fixed layout without delegating scrolling, handing interaction on the ui side etc.
&gt; 
&gt; It all boils down to having touch as a first citizen, which requires non-blocking interaction and handing interaction and painting out of process.

Do you have a suggestion for a name? If not, we can rename it in a separate patch. This is not a public API, after all :)
The functionality this patch is adding is really about fixed layout vs. non fixed layout and it is not about touch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758020</commentid>
    <comment_count>38</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-11-03 16:05:48 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; (In reply to comment #32)
&gt; &gt; (In reply to comment #26)
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=172138&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:133
&gt; &gt; &gt; &gt; +        m_pageProxy-&gt;setUseFixedLayout(true);
&gt; &gt; &gt; 
&gt; &gt; &gt; m_pageProxy-&gt;setUseFixedLayout(mode == FixedLayoutMode);  on 1 line?
&gt; &gt; &gt; 
&gt; &gt; That will trigger calling  setUseFixedLayout(false) needlessly.
&gt; 
&gt; True but I thought it would be more robust not to rely on what the default value is. Without this, the code gets broken easily if someone makes fixed layout the default. Anyway, this is minor.
We don&apos;t normally do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758143</commentid>
    <comment_count>39</comment_count>
      <attachid>172247</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-11-04 14:20:43 -0800</bug_when>
    <thetext>Created attachment 172247
Patch

Remove the &quot;initialize&quot; method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758157</commentid>
    <comment_count>40</comment_count>
      <attachid>172247</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-11-04 15:58:14 -0800</bug_when>
    <thetext>Comment on attachment 172247
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:97
&gt; +    enum WindowMode {
&gt; +        LegacyMode,
&gt; +        FixedLayoutMode
&gt; +    };

I don&apos;t like this but :) better suggestions are hard to come by,

I think it is a kind of behavior (that is a good generic term joining rendering strategy, UI-side interaction, etc) and that it is related to the *view* not the *window*

enum ViewBehavior {
    LegacyBehavior,
    TouchOptimized
}

&gt; Source/WebKit2/UIProcess/efl/PageClientImplFixedLayout.h:37
&gt; +class PageClientImplFixedLayout : public PageClientImpl {

If this is the default, why not just call it PageClientImpl or PageClientDefaultImpl.

Hmm, it is indeed split.

I suggest

PageClientBase.cpp (as it is not a full implementation)
PageClientLegacyImpl.cpp
PageClientDefaultImpl.cpp

&gt; Source/WebKit2/UIProcess/efl/PageClientImplFixedLayout.h:43
&gt; +    static PassOwnPtr&lt;PageClientImpl&gt; create(EwkViewImpl* viewImpl)
&gt; +    {
&gt; +        return adoptPtr(new PageClientImplFixedLayout(viewImpl));
&gt; +    }
&gt; +    virtual ~PageClientImplFixedLayout();

I would add a newline after ctor and dtor

&gt; Source/WebKit2/UIProcess/efl/PageClientImplFixedLayout.h:54
&gt; +#if USE(TILED_BACKING_STORE)
&gt; +    virtual void pageDidRequestScroll(const WebCore::IntPoint&amp;);
&gt; +#endif
&gt; +    virtual void didChangeContentsSize(const WebCore::IntSize&amp;);
&gt; +#if USE(TILED_BACKING_STORE)

WHy not reorder? avoid all those ifs!

&gt; Source/WebKit2/UIProcess/efl/PageClientImplLegacy.cpp:45
&gt; +PageClientImplLegacy::~PageClientImplLegacy()
&gt; +{
&gt; +}

Why it this not just done in the header? We don&apos;t care about API/ABI breakage

&gt; Source/WebKit2/UIProcess/efl/PageClientImplLegacy.cpp:72
&gt; +void PageClientImplLegacy::didChangeContentsSize(const WebCore::IntSize&amp; size)
&gt; +{
&gt; +#if USE(TILED_BACKING_STORE)
&gt; +    m_viewImpl-&gt;page()-&gt;drawingArea()-&gt;layerTreeCoordinatorProxy()-&gt;setContentsSize(FloatSize(size.width(), size.height()));
&gt; +    m_viewImpl-&gt;update();
&gt; +#else
&gt; +    m_viewImpl-&gt;informContentsSizeChange(size);
&gt; +#endif
&gt; +}

Do here it is hard to see if the upper part also ends up informing the client of the content size change. A comment could clarify that, like informContentSizeChanged called as a result of setContentsSize or so

&gt; Source/WebKit2/UIProcess/efl/PageClientImplLegacy.h:41
&gt; +public:
&gt; +    static PassOwnPtr&lt;PageClientImpl&gt; create(EwkViewImpl* viewImpl)
&gt; +    {
&gt; +        return adoptPtr(new PageClientImplLegacy(viewImpl));
&gt; +    }
&gt; +    virtual ~PageClientImplLegacy();
&gt; +    virtual void didCommitLoad();

newline after dtor

&gt; Source/WebKit2/UIProcess/efl/PageViewportControllerClientEfl.cpp:88
&gt;  void PageViewportControllerClientEfl::setViewportPosition(const WebCore::FloatPoint&amp; contentsPoint)
&gt;  {
&gt; -    setVisibleContentsRect(IntPoint(contentsPoint.x(), contentsPoint.y()), m_scaleFactor, FloatPoint());
&gt; +    IntPoint viewportPosition(contentsPoint.x(), contentsPoint.y());

so not a contents*Point* is a viewport*Position*. Why are they not both called *Position ?

Why is contents pos equal to viewport pos? This is a bit confusing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758436</commentid>
    <comment_count>41</comment_count>
      <attachid>172247</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-11-05 05:09:28 -0800</bug_when>
    <thetext>Comment on attachment 172247
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:97
&gt;&gt; +    };
&gt; 
&gt; I don&apos;t like this but :) better suggestions are hard to come by,
&gt; 
&gt; I think it is a kind of behavior (that is a good generic term joining rendering strategy, UI-side interaction, etc) and that it is related to the *view* not the *window*
&gt; 
&gt; enum ViewBehavior {
&gt;     LegacyBehavior,
&gt;     TouchOptimized
&gt; }

As we intensively use Legacy/Default terminology, think it&apos;s worth naming the enum as 
ViewBehavior { Legacy,  Default } 

and follow this terminology everywhere else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758445</commentid>
    <comment_count>42</comment_count>
      <attachid>172320</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-11-05 05:27:25 -0800</bug_when>
    <thetext>Created attachment 172320
Patch

Address comment #40 and comment #41.
Please note that &quot;svn mv&quot; put 2 copies of the files PageClientBase.cpp and PageClientBase.h into the patch. One is exact copy of the PageClientImpl.* and the second copy is my modifications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758478</commentid>
    <comment_count>43</comment_count>
      <attachid>172320</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-05 06:22:59 -0800</bug_when>
    <thetext>Comment on attachment 172320
Patch

Clearing flags on attachment: 172320

Committed r133464: &lt;http://trac.webkit.org/changeset/133464&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758479</commentid>
    <comment_count>44</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-05 06:23:06 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759119</commentid>
    <comment_count>45</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-11-05 18:12:07 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; (From update of attachment 171751 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171751&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/ChangeLog:10
&gt; &gt; &gt; +        Calling ewk_view_base_add creates a desktop style view, that does not support
&gt; &gt; &gt; +        fixed layout size, while calling ewk_view_smart_add does support fixed layout size.
&gt; &gt; 
&gt; &gt; If then, can I know how we can disable fixed layout size when using ewk_view_smart_add ?
&gt; &gt; 
&gt; &gt; ewk_view_smart_add is an API that inherit ewk_view on application side.
&gt; 
&gt; ewk_view_base_add is a public API. Applications that need to disable fixed layout size can use that.

Sorry for the late answer.
I am so busy because of internal works.

But so sad, ewk_view_base_add is not a public API.
And applications can not access WKContextRef and WKPageGroupRef.

When I get enough time to contribute, I will try to check it more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759134</commentid>
    <comment_count>46</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-11-05 18:30:21 -0800</bug_when>
    <thetext>(In reply to comment #45)
&gt; (In reply to comment #13)
&gt; &gt; (In reply to comment #12)
&gt; &gt; &gt; (From update of attachment 171751 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171751&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit2/ChangeLog:10
&gt; &gt; &gt; &gt; +        Calling ewk_view_base_add creates a desktop style view, that does not support
&gt; &gt; &gt; &gt; +        fixed layout size, while calling ewk_view_smart_add does support fixed layout size.
&gt; &gt; &gt; 
&gt; &gt; &gt; If then, can I know how we can disable fixed layout size when using ewk_view_smart_add ?
&gt; &gt; &gt; 
&gt; &gt; &gt; ewk_view_smart_add is an API that inherit ewk_view on application side.
&gt; &gt; 
&gt; &gt; ewk_view_base_add is a public API. Applications that need to disable fixed layout size can use that.
&gt; 
&gt; Sorry for the late answer.
&gt; I am so busy because of internal works.
&gt; 
&gt; But so sad, ewk_view_base_add is not a public API.
&gt; And applications can not access WKContextRef and WKPageGroupRef.
&gt; 
&gt; When I get enough time to contribute, I will try to check it more.
My apologies. ewk_view_base_add is not a public API, however it is called by WKViewCreate, which is a public API. If that is not a viable solution, then we should create a new public API, how about ewk_view_legacy_add ?
Is it required to be able to switch behaviors at runtime? currently, we need to specify the behavior before the view is created.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761121</commentid>
    <comment_count>47</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-11-07 15:42:34 -0800</bug_when>
    <thetext>(In reply to comment #46)
&gt; (In reply to comment #45)
&gt; &gt; (In reply to comment #13)
&gt; &gt; &gt; (In reply to comment #12)
&gt; &gt; &gt; &gt; (From update of attachment 171751 [details] [details] [details] [details])
&gt; &gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171751&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Source/WebKit2/ChangeLog:10
&gt; &gt; &gt; &gt; &gt; +        Calling ewk_view_base_add creates a desktop style view, that does not support
&gt; &gt; &gt; &gt; &gt; +        fixed layout size, while calling ewk_view_smart_add does support fixed layout size.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; If then, can I know how we can disable fixed layout size when using ewk_view_smart_add ?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; ewk_view_smart_add is an API that inherit ewk_view on application side.
&gt; &gt; &gt; 
&gt; &gt; &gt; ewk_view_base_add is a public API. Applications that need to disable fixed layout size can use that.
&gt; &gt; 
&gt; &gt; Sorry for the late answer.
&gt; &gt; I am so busy because of internal works.
&gt; &gt; 
&gt; &gt; But so sad, ewk_view_base_add is not a public API.
&gt; &gt; And applications can not access WKContextRef and WKPageGroupRef.
&gt; &gt; 
&gt; &gt; When I get enough time to contribute, I will try to check it more.
&gt; My apologies. ewk_view_base_add is not a public API, however it is called by WKViewCreate, which is a public API. If that is not a viable solution, then we should create a new public API, how about ewk_view_legacy_add ?
&gt; Is it required to be able to switch behaviors at runtime? currently, we need to specify the behavior before the view is created.

ewk_view_legacy_add looks not good idea.
If we really need new API, I hope that we add a flag and APIs in ewk_context such as ewk_context_behavior_set.
What do you think about it?

Anyway, I think that I need to learn why we should separate PageClient first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761178</commentid>
    <comment_count>48</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-11-07 16:51:43 -0800</bug_when>
    <thetext>(In reply to comment #47)
&gt; (In reply to comment #46)
&gt; &gt; (In reply to comment #45)
&gt; &gt; &gt; (In reply to comment #13)
&gt; &gt; &gt; &gt; (In reply to comment #12)
&gt; &gt; &gt; &gt; &gt; (From update of attachment 171751 [details] [details] [details] [details] [details])
&gt; &gt; &gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171751&amp;action=review
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; Source/WebKit2/ChangeLog:10
&gt; &gt; &gt; &gt; &gt; &gt; +        Calling ewk_view_base_add creates a desktop style view, that does not support
&gt; &gt; &gt; &gt; &gt; &gt; +        fixed layout size, while calling ewk_view_smart_add does support fixed layout size.
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; If then, can I know how we can disable fixed layout size when using ewk_view_smart_add ?
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; ewk_view_smart_add is an API that inherit ewk_view on application side.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; ewk_view_base_add is a public API. Applications that need to disable fixed layout size can use that.
&gt; &gt; &gt; 
&gt; &gt; &gt; Sorry for the late answer.
&gt; &gt; &gt; I am so busy because of internal works.
&gt; &gt; &gt; 
&gt; &gt; &gt; But so sad, ewk_view_base_add is not a public API.
&gt; &gt; &gt; And applications can not access WKContextRef and WKPageGroupRef.
&gt; &gt; &gt; 
&gt; &gt; &gt; When I get enough time to contribute, I will try to check it more.
&gt; &gt; My apologies. ewk_view_base_add is not a public API, however it is called by WKViewCreate, which is a public API. If that is not a viable solution, then we should create a new public API, how about ewk_view_legacy_add ?
&gt; &gt; Is it required to be able to switch behaviors at runtime? currently, we need to specify the behavior before the view is created.
&gt; 
&gt; ewk_view_legacy_add looks not good idea.
&gt; If we really need new API, I hope that we add a flag and APIs in ewk_context such as ewk_context_behavior_set.
&gt; What do you think about it?
Sure, that will work too.
&gt; 
&gt; Anyway, I think that I need to learn why we should separate PageClient first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763120</commentid>
    <comment_count>49</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-11-09 10:03:47 -0800</bug_when>
    <thetext>(In reply to comment #48)
&gt; (In reply to comment #47)
&gt; &gt; (In reply to comment #46)
&gt; &gt; &gt; (In reply to comment #45)
&gt; &gt; &gt; &gt; (In reply to comment #13)
&gt; &gt; &gt; &gt; &gt; (In reply to comment #12)
&gt; &gt; &gt; &gt; &gt; &gt; (From update of attachment 171751 [details] [details] [details] [details] [details] [details])
&gt; &gt; &gt; &gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171751&amp;action=review
&gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; &gt; Source/WebKit2/ChangeLog:10
&gt; &gt; &gt; &gt; &gt; &gt; &gt; +        Calling ewk_view_base_add creates a desktop style view, that does not support
&gt; &gt; &gt; &gt; &gt; &gt; &gt; +        fixed layout size, while calling ewk_view_smart_add does support fixed layout size.
&gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; If then, can I know how we can disable fixed layout size when using ewk_view_smart_add ?
&gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; ewk_view_smart_add is an API that inherit ewk_view on application side.
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; ewk_view_base_add is a public API. Applications that need to disable fixed layout size can use that.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Sorry for the late answer.
&gt; &gt; &gt; &gt; I am so busy because of internal works.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; But so sad, ewk_view_base_add is not a public API.
&gt; &gt; &gt; &gt; And applications can not access WKContextRef and WKPageGroupRef.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; When I get enough time to contribute, I will try to check it more.
&gt; &gt; &gt; My apologies. ewk_view_base_add is not a public API, however it is called by WKViewCreate, which is a public API. If that is not a viable solution, then we should create a new public API, how about ewk_view_legacy_add ?
&gt; &gt; &gt; Is it required to be able to switch behaviors at runtime? currently, we need to specify the behavior before the view is created.
&gt; &gt; 
&gt; &gt; ewk_view_legacy_add looks not good idea.
&gt; &gt; If we really need new API, I hope that we add a flag and APIs in ewk_context such as ewk_context_behavior_set.
&gt; &gt; What do you think about it?
&gt; Sure, that will work too.
&gt; &gt; 
&gt; &gt; Anyway, I think that I need to learn why we should separate PageClient first.

Perhaps the new setting in http://trac.webkit.org/changeset/133761 is what you need?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171718</attachid>
            <date>2012-10-31 14:14:24 -0700</date>
            <delta_ts>2012-11-01 03:25:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>100674.patch</filename>
            <type>text/plain</type>
            <size>16517</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAJ
KHJldmlzaW9uIDEzMzA0NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ2LDcgKzU0Niw3IEBACiAgICAgcmV0dXJu
IHNtYXJ0OwogfQogCi1zdGF0aWMgaW5saW5lIEV2YXNfT2JqZWN0KiBjcmVhdGVFd2tWaWV3KEV2
YXMqIGNhbnZhcywgRXZhc19TbWFydCogc21hcnQsIFBhc3NSZWZQdHI8RXdrX0NvbnRleHQ+IGNv
bnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiA9IDApCitzdGF0aWMgaW5saW5lIEV2
YXNfT2JqZWN0KiBjcmVhdGVFd2tWaWV3KEV2YXMqIGNhbnZhcywgRXZhc19TbWFydCogc21hcnQs
IFBhc3NSZWZQdHI8RXdrX0NvbnRleHQ+IGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91
cFJlZiA9IDAsIGJvb2wgZGVza3RvcE1vZGUgPSBmYWxzZSkKIHsKICAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoY2FudmFzLCAwKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoc21hcnQsIDApOwpAQCAtNTYzLDcgKzU2Myw3IEBACiAKICAgICBBU1NFUlQoIXNt
YXJ0RGF0YS0+cHJpdik7CiAgICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwID0gcGFn
ZUdyb3VwUmVmID8gdG9JbXBsKHBhZ2VHcm91cFJlZikgOiBXZWJQYWdlR3JvdXA6OmNyZWF0ZSgp
OwotICAgIHNtYXJ0RGF0YS0+cHJpdiA9IG5ldyBFd2tWaWV3SW1wbChld2tWaWV3LCBjb250ZXh0
LCBwYWdlR3JvdXApOworICAgIHNtYXJ0RGF0YS0+cHJpdiA9IG5ldyBFd2tWaWV3SW1wbChld2tW
aWV3LCBjb250ZXh0LCBwYWdlR3JvdXAsIGRlc2t0b3BNb2RlKTsKIAogICAgIHJldHVybiBld2tW
aWV3OwogfQpAQCAtNTc0LDcgKzU3NCw3IEBACiAgKi8KIEV2YXNfT2JqZWN0KiBld2tfdmlld19i
YXNlX2FkZChFdmFzKiBjYW52YXMsIFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91
cFJlZiBwYWdlR3JvdXBSZWYpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUV3a1ZpZXcoY2FudmFzLCBj
cmVhdGVFd2tWaWV3U21hcnRDbGFzcygpLCBFd2tfQ29udGV4dDo6Y3JlYXRlKGNvbnRleHRSZWYp
LCBwYWdlR3JvdXBSZWYpOworICAgIHJldHVybiBjcmVhdGVFd2tWaWV3KGNhbnZhcywgY3JlYXRl
RXdrVmlld1NtYXJ0Q2xhc3MoKSwgRXdrX0NvbnRleHQ6OmNyZWF0ZShjb250ZXh0UmVmKSwgcGFn
ZUdyb3VwUmVmLCB0cnVlKTsKIH0KIAogRXZhc19PYmplY3QqIGV3a192aWV3X3NtYXJ0X2FkZChF
dmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0LCBFd2tfQ29udGV4dCogY29udGV4dCkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAko
cmV2aXNpb24gMTMzMDQ1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdr
Vmlld0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsOCArNjMsMTAgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIENvbG9yOwogY2xhc3MgQ3Vyc29yOworY2xhc3MgSW50UG9pbnQ7CiBj
bGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKK2NsYXNzIFZpZXdwb3J0QXR0cmlidXRlczsK
IH0KIAogY2xhc3MgRXdrX0JhY2tfRm9yd2FyZF9MaXN0OwpAQCAtOTEsNyArOTMsNyBAQAogCiBj
bGFzcyBFd2tWaWV3SW1wbCB7CiBwdWJsaWM6Ci0gICAgRXdrVmlld0ltcGwoRXZhc19PYmplY3Qq
IHZpZXcsIFBhc3NSZWZQdHI8RXdrX0NvbnRleHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8V2ViS2l0
OjpXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCk7CisgICAgRXdrVmlld0ltcGwoRXZhc19PYmplY3Qq
IHZpZXcsIFBhc3NSZWZQdHI8RXdrX0NvbnRleHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8V2ViS2l0
OjpXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCwgYm9vbCBkZXNrdG9wTW9kZSk7CiAgICAgfkV3a1Zp
ZXdJbXBsKCk7CiAKICAgICBzdGF0aWMgRXdrVmlld0ltcGwqIGZyb21FdmFzT2JqZWN0KGNvbnN0
IEV2YXNfT2JqZWN0KiB2aWV3KTsKQEAgLTE2OCw2ICsxNzAsMTEgQEAKIAogI2lmIFVTRShUSUxF
RF9CQUNLSU5HX1NUT1JFKQogICAgIHZvaWQgaW5mb3JtTG9hZENvbW1pdHRlZCgpOworICAgIHZv
aWQgZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0
cmlidXRlcyYgYXR0cik7CisgICAgdm9pZCBwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgcG9zaXRpb24pOworICAgIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXpl
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpOworICAgIHZvaWQgZGlkUmVuZGVyRnJhbWUo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBjb3ZlcmVkUmVjdCk7CisgICAgdm9pZCBwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHko
KTsKICNlbmRpZgogICAgIHZvaWQgaW5mb3JtQ29udGVudHNTaXplQ2hhbmdlKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIHNpemUpOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbmZvcm1EYXRhYmFz
ZVF1b3RhUmVhY2hlZChjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBk
aXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90YSwgdW5zaWduZWQgbG9u
ZyBsb25nIGN1cnJlbnRPcmlnaW5Vc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnREYXRh
YmFzZVVzYWdlLCB1bnNpZ25lZCBsb25nIGxvbmcgZXhwZWN0ZWRVc2FnZSk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCShyZXZp
c2lvbiAxMzMwNDUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3
SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDcgQEAKICAgICByZXR1cm4gcGFn
ZVZpZXdNYXAoKS5nZXQocGFnZSk7CiB9CiAKLUV3a1ZpZXdJbXBsOjpFd2tWaWV3SW1wbChFdmFz
X09iamVjdCogdmlldywgUGFzc1JlZlB0cjxFd2tfQ29udGV4dD4gY29udGV4dCwgUGFzc1JlZlB0
cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCkKK0V3a1ZpZXdJbXBsOjpFd2tWaWV3SW1wbChFdmFz
X09iamVjdCogdmlldywgUGFzc1JlZlB0cjxFd2tfQ29udGV4dD4gY29udGV4dCwgUGFzc1JlZlB0
cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCwgYm9vbCBkZXNrdG9wTW9kZSkKICAgICA6IG1fdmll
dyh2aWV3KQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3BhZ2VDbGllbnQoUGFn
ZUNsaWVudEltcGw6OmNyZWF0ZSh0aGlzKSkKQEAgLTEwNyw3ICsxMDcsNiBAQAogICAgICwgbV9i
YWNrRm9yd2FyZExpc3QoRXdrX0JhY2tfRm9yd2FyZF9MaXN0OjpjcmVhdGUodG9BUEkobV9wYWdl
UHJveHktPmJhY2tGb3J3YXJkTGlzdCgpKSkpCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUp
CiAgICAgLCBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQoUGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQotICAgICwgbV9wYWdlVmlld3BvcnRDb250cm9s
bGVyKGFkb3B0UHRyKG5ldyBQYWdlVmlld3BvcnRDb250cm9sbGVyKG1fcGFnZVByb3h5LmdldCgp
LCBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQuZ2V0KCkpKSkKICNlbmRpZgogICAgICwg
bV9zZXR0aW5ncyhFd2tfU2V0dGluZ3M6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fY3Vyc29yR3Jv
dXAoMCkKQEAgLTEyMywyMCArMTIyLDIyIEBACiAgICAgQVNTRVJUKG1fcGFnZVByb3h5KTsKIAog
I2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyAgICBpZiAoIWRlc2t0b3BNb2RlKQorICAg
ICAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgUGFnZVZpZXdwb3J0
Q29udHJvbGxlcihtX3BhZ2VQcm94eS5nZXQoKSwgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xp
ZW50LmdldCgpKSk7CiAgICAgbV9wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygp
LT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCh0cnVlKTsKICAgICBtX3BhZ2VQcm94
eS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCktPnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRy
dWUpOworICAgIGlmIChtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIpCisgICAgICAgIG1fcGFnZVBy
b3h5LT5zZXRVc2VGaXhlZExheW91dCh0cnVlKTsKKwogI2lmIEVOQUJMRShXRUJHTCkKICAgICBt
X3BhZ2VQcm94eS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCktPnNldFdlYkdMRW5hYmxlZCh0
cnVlKTsKICNlbmRpZgotICAgIG1fcGFnZVByb3h5LT5zZXRVc2VGaXhlZExheW91dCh0cnVlKTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGRlc2t0b3BNb2RlKTsKICNlbmRpZgogCiAgICAgbV9w
YWdlUHJveHktPmluaXRpYWxpemVXZWJQYWdlKCk7CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19T
VE9SRSkKLSAgICBtX3BhZ2VDbGllbnQtPnNldFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIobV9wYWdl
Vmlld3BvcnRDb250cm9sbGVyLmdldCgpKTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQogICAgIG1fcGFnZVByb3h5LT5mdWxsU2NyZWVuTWFuYWdlcigpLT5zZXRXZWJWaWV3
KG1fdmlldyk7CiAgICAgbV9wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5z
ZXRGdWxsU2NyZWVuRW5hYmxlZCh0cnVlKTsKQEAgLTMxMyw4ICszMTQsNTEgQEAKICNpZiBVU0Uo
VElMRURfQkFDS0lOR19TVE9SRSkKIHZvaWQgRXdrVmlld0ltcGw6OmluZm9ybUxvYWRDb21taXR0
ZWQoKQogewotICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ29tbWl0TG9hZCgpOwor
ICAgIGlmIChtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIpCisgICAgICAgIG1fcGFnZVZpZXdwb3J0
Q29udHJvbGxlci0+ZGlkQ29tbWl0TG9hZCgpOworICAgIGVsc2UKKyAgICAgICAgbV9wYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50LT5kaWRDaGFuZ2VWaXNpYmxlQ29udGVudHMoKTsKIH0KKwor
dm9pZCBFd2tWaWV3SW1wbDo6ZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKGNvbnN0IFZpZXdw
b3J0QXR0cmlidXRlcyYgYXR0cikKK3sKKyAgICBpZiAobV9wYWdlVmlld3BvcnRDb250cm9sbGVy
KQorICAgICAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPmRpZENoYW5nZVZpZXdwb3J0QXR0
cmlidXRlcyhhdHRyKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudC0+ZGlkQ2hhbmdlVmlzaWJsZUNvbnRlbnRzKCk7Cit9CisKK3ZvaWQgRXdrVmlld0lt
cGw6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IEludFBvaW50JiBwb3NpdGlvbikKK3sKKyAg
ICBpZiAobV9wYWdlVmlld3BvcnRDb250cm9sbGVyKQorICAgICAgICBtX3BhZ2VWaWV3cG9ydENv
bnRyb2xsZXItPnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKHBvc2l0aW9uKTsKKyAgICBlbHNlCisgICAg
ICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC0+ZGlkQ2hhbmdlVmlzaWJsZUNvbnRl
bnRzKCk7Cit9CisKK3ZvaWQgRXdrVmlld0ltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25z
dCBJbnRTaXplJiBzaXplKQoreworICAgIGlmIChtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIpCisg
ICAgICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlQ29udGVudHNTaXplKHNp
emUpOworICAgIGVsc2UKKyAgICAgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LT5k
aWRDaGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7Cit9CisKK3ZvaWQgRXdrVmlld0ltcGw6OmRpZFJl
bmRlckZyYW1lKGNvbnN0IEludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29uc3QgSW50UmVjdCYgY292
ZXJlZFJlY3QpCit7CisgICAgaWYgKG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcikKKyAgICAgICAg
bV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRSZW5kZXJGcmFtZShjb250ZW50c1NpemUsIGNv
dmVyZWRSZWN0KTsKKyAgICBlbHNlCisgICAgICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudC0+ZGlkQ2hhbmdlVmlzaWJsZUNvbnRlbnRzKCk7Cit9CisKK3ZvaWQgRXdrVmlld0ltcGw6
OnBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpCit7CisgICAgaWYgKG1fcGFnZVZpZXdwb3J0
Q29udHJvbGxlcikKKyAgICAgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5wYWdlVHJhbnNp
dGlvblZpZXdwb3J0UmVhZHkoKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGFnZVZpZXdwb3J0Q29u
dHJvbGxlckNsaWVudC0+ZGlkQ2hhbmdlVmlzaWJsZUNvbnRlbnRzKCk7Cit9CiAjZW5kaWYKIAog
SW50U2l6ZSBFd2tWaWV3SW1wbDo6c2l6ZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbC5oCShyZXZpc2lvbiAxMzMwNDUpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDggKzM0LDYgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFBhZ2VW
aWV3cG9ydENvbnRyb2xsZXI7Ci0KIGNsYXNzIFBhZ2VDbGllbnRJbXBsIDogcHVibGljIFBhZ2VD
bGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFBhZ2VDbGllbnRJbXBsPiBj
cmVhdGUoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQpAQCAtNDUsOSArNDMsNiBAQAogICAgIH5QYWdl
Q2xpZW50SW1wbCgpOwogCiAgICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsKCkgY29uc3Q7Ci0jaWYg
VVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgdm9pZCBzZXRQYWdlVmlld3BvcnRDb250cm9s
bGVyKFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIqIGNvbnRyb2xsZXIpIHsgbV9wYWdlVmlld3BvcnRD
b250cm9sbGVyID0gY29udHJvbGxlcjsgfQotI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgUGFnZUNsaWVudEltcGwoRXdrVmlld0ltcGwqKTsKQEAgLTEyOSw5ICsxMjQsNiBAQAogcHJp
dmF0ZToKICAgICBFd2tWaWV3SW1wbCogbV92aWV3SW1wbDsKICAgICBEZWZhdWx0VW5kb0NvbnRy
b2xsZXIgbV91bmRvQ29udHJvbGxlcjsKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAg
ICBQYWdlVmlld3BvcnRDb250cm9sbGVyKiBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXI7Ci0jZW5k
aWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRFZmwuY3BwCShyZXZpc2lvbiAxMzMwNDUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NywxOSArNzcsMzIgQEAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVm
bDo6dXBkYXRlVmlld3BvcnRTaXplKGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKIHsKICAg
ICBtX3ZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKLSAgICBtX3ZpZXdJbXBsLT5wYWdlKCkt
PnNldFZpZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUpOwotICAgIG1fcGFnZVZpZXdwb3J0Q29udHJv
bGxlci0+ZGlkQ2hhbmdlVmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7CisgICAgaWYgKG1fcGFn
ZVZpZXdwb3J0Q29udHJvbGxlcikKKyAgICAgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5k
aWRDaGFuZ2VWaWV3cG9ydFNpemUodmlld3BvcnRTaXplKTsKKyAgICBlbHNlCisgICAgICAgIHNl
dFZpc2libGVDb250ZW50c1JlY3QobV9zY3JvbGxQb3NpdGlvbiwgbV9zY2FsZUZhY3RvciwgRmxv
YXRQb2ludCgpKTsKIH0KIAogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpz
ZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEludFBvaW50JiBuZXdTY3JvbGxQb3NpdGlvbiwg
ZmxvYXQgbmV3U2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQmIC8qdHJhamVjdG9yeSovKQogewogICAg
IG1fc2NhbGVGYWN0b3IgPSBuZXdTY2FsZTsKICAgICBtX3Njcm9sbFBvc2l0aW9uID0gbmV3U2Ny
b2xsUG9zaXRpb247Ci0gICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRDaGFuZ2VDb250
ZW50c1Zpc2liaWxpdHkobV9zY3JvbGxQb3NpdGlvbiwgbV9zY2FsZUZhY3RvciwgRmxvYXRQb2lu
dCgpKTsKKyAgICBpZiAobV9wYWdlVmlld3BvcnRDb250cm9sbGVyKQorICAgICAgICBtX3BhZ2VW
aWV3cG9ydENvbnRyb2xsZXItPmRpZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eShtX3Njcm9sbFBv
c2l0aW9uLCBtX3NjYWxlRmFjdG9yLCBGbG9hdFBvaW50KCkpOworICAgIGVsc2UgeworICAgICAg
ICBGbG9hdFJlY3QgbWFwUmVjdFRvV2ViQ29udGVudCA9IEZsb2F0UmVjdChuZXdTY3JvbGxQb3Np
dGlvbiwgbV92aWV3cG9ydFNpemUpOworICAgICAgICBtYXBSZWN0VG9XZWJDb250ZW50LnNjYWxl
KDEgLyBtX3NjYWxlRmFjdG9yKTsKKyAgICAgICAgZHJhd2luZ0FyZWEoKS0+c2V0VmlzaWJsZUNv
bnRlbnRzUmVjdChlbmNsb3NpbmdJbnRSZWN0KG1hcFJlY3RUb1dlYkNvbnRlbnQpLCBtX3NjYWxl
RmFjdG9yLCBGbG9hdFBvaW50KCkpOworICAgIH0KIH0KIAogdm9pZCBQYWdlVmlld3BvcnRDb250
cm9sbGVyQ2xpZW50RWZsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgc2l6ZSkKIHsKKyAgICBpZiAoIW1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcikgeworICAg
ICAgICBGbG9hdFJlY3QgbWFwUmVjdFRvV2ViQ29udGVudCA9IEZsb2F0UmVjdChtX3Njcm9sbFBv
c2l0aW9uLCBtX3ZpZXdwb3J0U2l6ZSk7CisgICAgICAgIG1hcFJlY3RUb1dlYkNvbnRlbnQuc2Nh
bGUoMSAvIG1fc2NhbGVGYWN0b3IpOworICAgICAgICBkcmF3aW5nQXJlYSgpLT5sYXllclRyZWVD
b29yZGluYXRvclByb3h5KCktPnNldENvbnRlbnRzU2l6ZShXZWJDb3JlOjpGbG9hdFNpemUoc2l6
ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7CisgICAgfQogICAgIG1fY29udGVudHNTaXplID0g
c2l6ZTsKICAgICBJbnRSZWN0IHJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIG1fdmlld3BvcnRT
aXplKTsKICAgICBtX3ZpZXdJbXBsLT5yZWRyYXdSZWdpb24ocmVjdCk7CkBAIC0xMDksNiArMTIy
LDcgQEAKIAogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaWRSZXN1bWVD
b250ZW50KCkKIHsKKyAgICBBU1NFUlQobV9wYWdlVmlld3BvcnRDb250cm9sbGVyKTsKICAgICBt
X3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPmRpZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eShtX3Nj
cm9sbFBvc2l0aW9uLCBtX3NjYWxlRmFjdG9yKTsKIH0KIApAQCAtMTIwLDYgKzEzNCw3IEBACiAK
IHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdlVmlld3BvcnRB
dHRyaWJ1dGVzKCkKIHsKKyAgICBBU1NFUlQobV9wYWdlVmlld3BvcnRDb250cm9sbGVyKTsKIH0K
IAogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpzZXRDb250cm9sbGVyKFBh
Z2VWaWV3cG9ydENvbnRyb2xsZXIqIHBhZ2VWaWV3cG9ydENvbnRyb2xsZXIpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAkocmV2aXNp
b24gMTMzMDQ1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1w
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDEwICs0NCw2IEBACiAjaW5jbHVkZSAiZXdrX3By
aXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmlldy5oIgogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdf
U1RPUkUpCi0jaW5jbHVkZSAiUGFnZVZpZXdwb3J0Q29udHJvbGxlci5oIgotI2VuZGlmCi0KIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIEV3a1ZpZXdDYWxsYmFja3M7
CiAKQEAgLTE2OSw3ICsxNjUsNyBAQAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlVmll
d3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYgYXR0cikK
IHsKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICBtX3BhZ2VWaWV3cG9ydENvbnRy
b2xsZXItPmRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcyhhdHRyKTsKKyAgICBtX3ZpZXdJbXBs
LT5kaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMoYXR0cik7CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShhdHRyKTsKICNlbmRpZgpAQCAtMzI5LDE0ICszMjUsMTQgQEAKICNpZiBVU0UoVElMRURf
QkFDS0lOR19TVE9SRSkKIHZvaWQgUGFnZUNsaWVudEltcGw6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xs
KGNvbnN0IEludFBvaW50JiBwb3NpdGlvbikKIHsKLSAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXItPnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKHBvc2l0aW9uKTsKKyAgICBtX3ZpZXdJbXBsLT5wYWdl
RGlkUmVxdWVzdFNjcm9sbChwb3NpdGlvbik7CiB9CiAjZW5kaWYKIAogdm9pZCBQYWdlQ2xpZW50
SW1wbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUp
CiB7CiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgbV9wYWdlVmlld3BvcnRDb250
cm9sbGVyLT5kaWRDaGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7CisgICAgbV92aWV3SW1wbC0+ZGlk
Q2hhbmdlQ29udGVudHNTaXplKHNpemUpOwogI2Vsc2UKICAgICBtX3ZpZXdJbXBsLT5pbmZvcm1D
b250ZW50c1NpemVDaGFuZ2Uoc2l6ZSk7CiAjZW5kaWYKQEAgLTM0NSwxMiArMzQxLDEyIEBACiAj
aWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRSZW5k
ZXJGcmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KQogewotICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxl
ci0+ZGlkUmVuZGVyRnJhbWUoY29udGVudHNTaXplLCBjb3ZlcmVkUmVjdCk7CisgICAgbV92aWV3
SW1wbC0+ZGlkUmVuZGVyRnJhbWUoY29udGVudHNTaXplLCBjb3ZlcmVkUmVjdCk7CiB9CiAKIHZv
aWQgUGFnZUNsaWVudEltcGw6OnBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpCiB7Ci0gICAg
bV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5wYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKTsK
KyAgICBtX3ZpZXdJbXBsLT5wYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKTsKIH0KICNlbmRp
ZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNw
cAkocmV2aXNpb24gMTMzMDQ1KQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vZWZsL1dvcmtR
dWV1ZUVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw2ICsxNzAsNyBAQAogCiB2b2lkIFdv
cmtRdWV1ZTo6c2VuZE1lc3NhZ2VUb1RocmVhZChjb25zdCBjaGFyKiBtZXNzYWdlKQogeworICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtX3NlbmRNZXNzYWdlVG9UaHJlYWRMb2NrKTsKICAgICBpZiAo
d3JpdGUobV93cml0ZVRvUGlwZURlc2NyaXB0b3IsIG1lc3NhZ2UsIHRocmVhZE1lc3NhZ2VTaXpl
KSA9PSAtMSkKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gd2FrZSB1cCBXb3JrUXVldWUg
VGhyZWFkIik7CiB9CkBAIC0yMTIsOCArMjEzLDEwIEBACiAKIHZvaWQgV29ya1F1ZXVlOjpkaXNw
YXRjaChjb25zdCBGdW5jdGlvbjx2b2lkKCk+JiBmdW5jdGlvbikKIHsKLSAgICBNdXRleExvY2tl
ciBsb2NrZXIobV93b3JrSXRlbVF1ZXVlTG9jayk7Ci0gICAgbV93b3JrSXRlbVF1ZXVlLmFwcGVu
ZChmdW5jdGlvbik7CisgICAgeworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV93b3JrSXRl
bVF1ZXVlTG9jayk7CisgICAgICAgIG1fd29ya0l0ZW1RdWV1ZS5hcHBlbmQoZnVuY3Rpb24pOwor
ICAgIH0KICAgICBzZW5kTWVzc2FnZVRvVGhyZWFkKHdha3VwVGhyZWFkTWVzc2FnZSk7CiB9CiAK
QEAgLTIyMiwxMSArMjI1LDEzIEBACiAgICAgaWYgKGRlbGF5IDwgMCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGltZXJXb3JrSXRlbXNMb2NrKTsKLSAgICBP
d25QdHI8VGltZXJXb3JrSXRlbT4gdGltZXJXb3JrSXRlbSA9IFRpbWVyV29ya0l0ZW06OmNyZWF0
ZShmdW5jdGlvbiwgY3VycmVudFRpbWUoKSArIGRlbGF5KTsKLSAgICBpZiAoIXRpbWVyV29ya0l0
ZW0pCi0gICAgICAgIHJldHVybjsKKyAgICB7CisgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlciht
X3RpbWVyV29ya0l0ZW1zTG9jayk7CisgICAgICAgIE93blB0cjxUaW1lcldvcmtJdGVtPiB0aW1l
cldvcmtJdGVtID0gVGltZXJXb3JrSXRlbTo6Y3JlYXRlKGZ1bmN0aW9uLCBjdXJyZW50VGltZSgp
ICsgZGVsYXkpOworICAgICAgICBpZiAoIXRpbWVyV29ya0l0ZW0pCisgICAgICAgICAgICByZXR1
cm47CiAKLSAgICBpbnNlcnRUaW1lcldvcmtJdGVtKHRpbWVyV29ya0l0ZW0ucmVsZWFzZSgpKTsK
KyAgICAgICAgaW5zZXJ0VGltZXJXb3JrSXRlbSh0aW1lcldvcmtJdGVtLnJlbGVhc2UoKSk7Cisg
ICAgfQogICAgIHNlbmRNZXNzYWdlVG9UaHJlYWQod2FrdXBUaHJlYWRNZXNzYWdlKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oCShyZXZpc2lvbiAxMzMwNDUpCisrKyBT
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjE3
LDYgKzIxNyw4IEBACiAgICAgVmVjdG9yPE93blB0cjxUaW1lcldvcmtJdGVtPiA+IG1fdGltZXJX
b3JrSXRlbXM7CiAgICAgTXV0ZXggbV90aW1lcldvcmtJdGVtc0xvY2s7CiAKKyAgICBNdXRleCBt
X3NlbmRNZXNzYWdlVG9UaHJlYWRMb2NrOworCiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvVGhyZWFk
KGNvbnN0IGNoYXIqKTsKICAgICBzdGF0aWMgdm9pZCogd29ya1F1ZXVlVGhyZWFkKFdvcmtRdWV1
ZSopOwogICAgIHZvaWQgcGVyZm9ybVdvcmsoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEz
MzA2MykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQ3IEBACisyMDEyLTEwLTMxICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNv
bT4KKworICAgICAgICBbRUZMXVtXSzJdIEFsbG93IHVzaW5nIEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HIHdpdGhvdXQgQ09PUkRJTkFURURfR1JBUEhJQ1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDY3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgYSBkaXN0aW5jdGlvbiBiZXR3ZWVuIGNhbGxp
bmcgZXdrX3ZpZXdfYmFzZV9hZGQgYW5kIGV3a192aWV3X3NtYXJ0X2FkZC4KKyAgICAgICAgQ2Fs
bGluZyBld2tfdmlld19iYXNlX2FkZCBjcmVhdGVzIGEgZGVza3RvcCBzdHlsZSB2aWV3LCB0aGF0
IGRvZXMgbm90IHN1cHBvcnQKKyAgICAgICAgZml4ZWQgbGF5b3V0IHNpemUsIHdoaWxlIGNhbGxp
bmcgZXdrX3ZpZXdfc21hcnRfYWRkIGRvZXMgc3VwcG9ydCBmaXhlZCBsYXlvdXQgc2l6ZS4KKyAg
ICAgICAgQXMgYSByZXN1bHQsIFdlYktpdFRlc3RSdW5uZXIgYW5kIHRoZSBpbnNwZWN0b3Igd2lu
ZG93IGRvIG5vdCBzdXBwb3J0CisgICAgICAgIGZpeGVkIGxheW91dCBzaXplLCB3aGlsZSBNaW5p
QnJvd3NlciBkb2VzLiBUaGlzIGNoYW5nZSBhbGxvd3MgbWFueSBEdW1wQXNUZXh0CisgICAgICAg
IGxheW91dCB0ZXN0cyB0byBwYXNzIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCB3aGVuIEFDIGlzIGVu
YWJsZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHA6Cisg
ICAgICAgIChFd2tWaWV3SW1wbDo6RXdrVmlld0ltcGwpOgorICAgICAgICAoRXdrVmlld0ltcGw6
OmluZm9ybUxvYWRDb21taXR0ZWQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmRpZENoYW5nZVZp
ZXdwb3J0QXR0cmlidXRlcyk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6cGFnZURpZFJlcXVlc3RT
Y3JvbGwpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSk6Cisg
ICAgICAgIChFd2tWaWV3SW1wbDo6ZGlkUmVuZGVyRnJhbWUpOgorICAgICAgICAoRXdrVmlld0lt
cGw6OnBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRXdrVmll
d0ltcGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAg
ICAgKGNyZWF0ZUV3a1ZpZXcpOgorICAgICAgICAoZXdrX3ZpZXdfYmFzZV9hZGQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGw6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKToKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRSZW5kZXJGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OlBhZ2VDbGllbnRJbXBsOjpwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChQYWdlQ2xpZW50SW1wbCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlVmlld3Bv
cnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0
Q29udHJvbGxlckNsaWVudEVmbDo6dXBkYXRlVmlld3BvcnRTaXplKToKKyAgICAgICAgKFdlYktp
dDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVj
dCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRp
ZENoYW5nZUNvbnRlbnRzU2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRy
b2xsZXJDbGllbnRFZmw6OmRpZFJlc3VtZUNvbnRlbnQpOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMp
OgorCiAyMDEyLTEwLTMxICBKZXNzZSB2YW4gZGVuIEtpZWJvb20gIDxqZXNzZXZka0Bnbm9tZS5v
cmc+CiAKICAgICAgICAgRW5hYmxlIHdlYmtpdDIgaW50cm9zcGVjdGlvbgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171721</attachid>
            <date>2012-10-31 14:29:53 -0700</date>
            <delta_ts>2012-10-31 14:42:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>100674.patch</filename>
            <type>text/plain</type>
            <size>14277</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAkocmV2aXNpb24gMTMzMDc1KQorKysgVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsOSArNjMsMTEg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbG9yOwogY2xhc3MgQ3Vyc29yOworY2xh
c3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFJlZ2lv
bjsKK2NsYXNzIFZpZXdwb3J0QXR0cmlidXRlczsKIH0KIAogY2xhc3MgRXdrX0JhY2tfRm9yd2Fy
ZF9MaXN0OwpAQCAtOTIsNyArOTQsNyBAQAogCiBjbGFzcyBFd2tWaWV3SW1wbCB7CiBwdWJsaWM6
Ci0gICAgRXdrVmlld0ltcGwoRXZhc19PYmplY3QqIHZpZXcsIFBhc3NSZWZQdHI8RXdrX0NvbnRl
eHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8V2ViS2l0OjpXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCk7
CisgICAgRXdrVmlld0ltcGwoRXZhc19PYmplY3QqIHZpZXcsIFBhc3NSZWZQdHI8RXdrX0NvbnRl
eHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8V2ViS2l0OjpXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCwg
Ym9vbCBkZXNrdG9wTW9kZSk7CiAgICAgfkV3a1ZpZXdJbXBsKCk7CiAKICAgICBzdGF0aWMgRXdr
Vmlld0ltcGwqIGZyb21FdmFzT2JqZWN0KGNvbnN0IEV2YXNfT2JqZWN0KiB2aWV3KTsKQEAgLTE2
OSw2ICsxNzEsMTEgQEAKIAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIHZvaWQg
aW5mb3JtTG9hZENvbW1pdHRlZCgpOworICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1
dGVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYgYXR0cik7CisgICAgdm9pZCBw
YWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24pOwor
ICAgIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNp
emUpOworICAgIHZvaWQgZGlkUmVuZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29u
dGVudHNTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjb3ZlcmVkUmVjdCk7CisgICAgdm9p
ZCBwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKTsKICNlbmRpZgogICAgIHZvaWQgaW5mb3Jt
Q29udGVudHNTaXplQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpOwogICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyBpbmZvcm1EYXRhYmFzZVF1b3RhUmVhY2hlZChjb25zdCBTdHJpbmcm
IGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBs
b25nIGN1cnJlbnRRdW90YSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRPcmlnaW5Vc2FnZSwg
dW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1bnNpZ25lZCBsb25nIGxv
bmcgZXhwZWN0ZWRVc2FnZSk7CkluZGV4OiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCShyZXZp
c2lvbiAxMzMwNzUpCisrKyBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTkzLDcgKzkzLDcgQEAKICAgICByZXR1cm4gcGFnZVZpZXdNYXAoKS5nZXQo
cGFnZSk7CiB9CiAKLUV3a1ZpZXdJbXBsOjpFd2tWaWV3SW1wbChFdmFzX09iamVjdCogdmlldywg
UGFzc1JlZlB0cjxFd2tfQ29udGV4dD4gY29udGV4dCwgUGFzc1JlZlB0cjxXZWJQYWdlR3JvdXA+
IHBhZ2VHcm91cCkKK0V3a1ZpZXdJbXBsOjpFd2tWaWV3SW1wbChFdmFzX09iamVjdCogdmlldywg
UGFzc1JlZlB0cjxFd2tfQ29udGV4dD4gY29udGV4dCwgUGFzc1JlZlB0cjxXZWJQYWdlR3JvdXA+
IHBhZ2VHcm91cCwgYm9vbCBkZXNrdG9wTW9kZSkKICAgICA6IG1fdmlldyh2aWV3KQogICAgICwg
bV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3BhZ2VDbGllbnQoUGFnZUNsaWVudEltcGw6OmNy
ZWF0ZSh0aGlzKSkKQEAgLTEwNyw3ICsxMDcsNiBAQAogICAgICwgbV9iYWNrRm9yd2FyZExpc3Qo
RXdrX0JhY2tfRm9yd2FyZF9MaXN0OjpjcmVhdGUodG9BUEkobV9wYWdlUHJveHktPmJhY2tGb3J3
YXJkTGlzdCgpKSkpCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgLCBtX3BhZ2VW
aWV3cG9ydENvbnRyb2xsZXJDbGllbnQoUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6
Y3JlYXRlKHRoaXMpKQotICAgICwgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyKGFkb3B0UHRyKG5l
dyBQYWdlVmlld3BvcnRDb250cm9sbGVyKG1fcGFnZVByb3h5LmdldCgpLCBtX3BhZ2VWaWV3cG9y
dENvbnRyb2xsZXJDbGllbnQuZ2V0KCkpKSkKICNlbmRpZgogICAgICwgbV9zZXR0aW5ncyhFd2tf
U2V0dGluZ3M6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fY3Vyc29yR3JvdXAoMCkKQEAgLTEyMywy
MCArMTIyLDIyIEBACiAgICAgQVNTRVJUKG1fcGFnZVByb3h5KTsKIAogI2lmIFVTRShDT09SRElO
QVRFRF9HUkFQSElDUykKKyAgICBpZiAoIWRlc2t0b3BNb2RlKQorICAgICAgICBtX3BhZ2VWaWV3
cG9ydENvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgUGFnZVZpZXdwb3J0Q29udHJvbGxlcihtX3Bh
Z2VQcm94eS5nZXQoKSwgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LmdldCgpKSk7CiAg
ICAgbV9wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nRW5hYmxlZCh0cnVlKTsKICAgICBtX3BhZ2VQcm94eS0+cGFnZUdyb3VwKCkt
PnByZWZlcmVuY2VzKCktPnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRydWUpOworICAgIGlmICht
X3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIpCisgICAgICAgIG1fcGFnZVByb3h5LT5zZXRVc2VGaXhl
ZExheW91dCh0cnVlKTsKKwogI2lmIEVOQUJMRShXRUJHTCkKICAgICBtX3BhZ2VQcm94eS0+cGFn
ZUdyb3VwKCktPnByZWZlcmVuY2VzKCktPnNldFdlYkdMRW5hYmxlZCh0cnVlKTsKICNlbmRpZgot
ICAgIG1fcGFnZVByb3h5LT5zZXRVc2VGaXhlZExheW91dCh0cnVlKTsKKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKGRlc2t0b3BNb2RlKTsKICNlbmRpZgogCiAgICAgbV9wYWdlUHJveHktPmluaXRp
YWxpemVXZWJQYWdlKCk7CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICBtX3Bh
Z2VDbGllbnQtPnNldFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIobV9wYWdlVmlld3BvcnRDb250cm9s
bGVyLmdldCgpKTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIG1f
cGFnZVByb3h5LT5mdWxsU2NyZWVuTWFuYWdlcigpLT5zZXRXZWJWaWV3KG1fdmlldyk7CiAgICAg
bV9wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRGdWxsU2NyZWVuRW5h
YmxlZCh0cnVlKTsKQEAgLTMxNSw4ICszMTYsNTEgQEAKICNpZiBVU0UoVElMRURfQkFDS0lOR19T
VE9SRSkKIHZvaWQgRXdrVmlld0ltcGw6OmluZm9ybUxvYWRDb21taXR0ZWQoKQogewotICAgIG1f
cGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ29tbWl0TG9hZCgpOworICAgIGlmIChtX3BhZ2VW
aWV3cG9ydENvbnRyb2xsZXIpCisgICAgICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlk
Q29tbWl0TG9hZCgpOworICAgIGVsc2UKKyAgICAgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVy
Q2xpZW50LT5kaWRDaGFuZ2VWaXNpYmxlQ29udGVudHMoKTsKIH0KKwordm9pZCBFd2tWaWV3SW1w
bDo6ZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKGNvbnN0IFZpZXdwb3J0QXR0cmlidXRlcyYg
YXR0cikKK3sKKyAgICBpZiAobV9wYWdlVmlld3BvcnRDb250cm9sbGVyKQorICAgICAgICBtX3Bh
Z2VWaWV3cG9ydENvbnRyb2xsZXItPmRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcyhhdHRyKTsK
KyAgICBlbHNlCisgICAgICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC0+ZGlkQ2hh
bmdlVmlzaWJsZUNvbnRlbnRzKCk7Cit9CisKK3ZvaWQgRXdrVmlld0ltcGw6OnBhZ2VEaWRSZXF1
ZXN0U2Nyb2xsKGNvbnN0IEludFBvaW50JiBwb3NpdGlvbikKK3sKKyAgICBpZiAobV9wYWdlVmll
d3BvcnRDb250cm9sbGVyKQorICAgICAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPnBhZ2VE
aWRSZXF1ZXN0U2Nyb2xsKHBvc2l0aW9uKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudC0+ZGlkQ2hhbmdlVmlzaWJsZUNvbnRlbnRzKCk7Cit9CisKK3Zv
aWQgRXdrVmlld0ltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBJbnRTaXplJiBzaXpl
KQoreworICAgIGlmIChtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIpCisgICAgICAgIG1fcGFnZVZp
ZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlQ29udGVudHNTaXplKHNpemUpOworICAgIGVsc2UK
KyAgICAgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LT5kaWRDaGFuZ2VDb250ZW50
c1NpemUoc2l6ZSk7Cit9CisKK3ZvaWQgRXdrVmlld0ltcGw6OmRpZFJlbmRlckZyYW1lKGNvbnN0
IEludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29uc3QgSW50UmVjdCYgY292ZXJlZFJlY3QpCit7Cisg
ICAgaWYgKG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcikKKyAgICAgICAgbV9wYWdlVmlld3BvcnRD
b250cm9sbGVyLT5kaWRSZW5kZXJGcmFtZShjb250ZW50c1NpemUsIGNvdmVyZWRSZWN0KTsKKyAg
ICBlbHNlCisgICAgICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC0+ZGlkQ2hhbmdl
VmlzaWJsZUNvbnRlbnRzKCk7Cit9CisKK3ZvaWQgRXdrVmlld0ltcGw6OnBhZ2VUcmFuc2l0aW9u
Vmlld3BvcnRSZWFkeSgpCit7CisgICAgaWYgKG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcikKKyAg
ICAgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5wYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVh
ZHkoKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC0+
ZGlkQ2hhbmdlVmlzaWJsZUNvbnRlbnRzKCk7Cit9CiAjZW5kaWYKIAogSW50U2l6ZSBFd2tWaWV3
SW1wbDo6c2l6ZSgpIGNvbnN0CkluZGV4OiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCShyZXZpc2lvbiAx
MzMwNzUpCisrKyBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU0Niw3ICs1NDYsNyBAQAogICAgIHJldHVybiBzbWFydDsKIH0KIAotc3RhdGljIGlubGlu
ZSBFdmFzX09iamVjdCogY3JlYXRlRXdrVmlldyhFdmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNt
YXJ0LCBQYXNzUmVmUHRyPEV3a19Db250ZXh0PiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdl
R3JvdXBSZWYgPSAwKQorc3RhdGljIGlubGluZSBFdmFzX09iamVjdCogY3JlYXRlRXdrVmlldyhF
dmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0LCBQYXNzUmVmUHRyPEV3a19Db250ZXh0PiBj
b250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYgPSAwLCBib29sIGRlc2t0b3BNb2Rl
ID0gZmFsc2UpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNhbnZhcywg
MCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0LCAwKTsKQEAgLTU2
Myw3ICs1NjMsNyBAQAogCiAgICAgQVNTRVJUKCFzbWFydERhdGEtPnByaXYpOwogICAgIFJlZlB0
cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCA9IHBhZ2VHcm91cFJlZiA/IHRvSW1wbChwYWdlR3Jv
dXBSZWYpIDogV2ViUGFnZUdyb3VwOjpjcmVhdGUoKTsKLSAgICBzbWFydERhdGEtPnByaXYgPSBu
ZXcgRXdrVmlld0ltcGwoZXdrVmlldywgY29udGV4dCwgcGFnZUdyb3VwKTsKKyAgICBzbWFydERh
dGEtPnByaXYgPSBuZXcgRXdrVmlld0ltcGwoZXdrVmlldywgY29udGV4dCwgcGFnZUdyb3VwLCBk
ZXNrdG9wTW9kZSk7CiAKICAgICByZXR1cm4gZXdrVmlldzsKIH0KQEAgLTU3NCw3ICs1NzQsNyBA
QAogICovCiBFdmFzX09iamVjdCogZXdrX3ZpZXdfYmFzZV9hZGQoRXZhcyogY2FudmFzLCBXS0Nv
bnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQogewotICAg
IHJldHVybiBjcmVhdGVFd2tWaWV3KGNhbnZhcywgY3JlYXRlRXdrVmlld1NtYXJ0Q2xhc3MoKSwg
RXdrX0NvbnRleHQ6OmNyZWF0ZShjb250ZXh0UmVmKSwgcGFnZUdyb3VwUmVmKTsKKyAgICByZXR1
cm4gY3JlYXRlRXdrVmlldyhjYW52YXMsIGNyZWF0ZUV3a1ZpZXdTbWFydENsYXNzKCksIEV3a19D
b250ZXh0OjpjcmVhdGUoY29udGV4dFJlZiksIHBhZ2VHcm91cFJlZiwgdHJ1ZSk7CiB9CiAKIEV2
YXNfT2JqZWN0KiBld2tfdmlld19zbWFydF9hZGQoRXZhcyogY2FudmFzLCBFdmFzX1NtYXJ0KiBz
bWFydCwgRXdrX0NvbnRleHQqIGNvbnRleHQpCkluZGV4OiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGll
bnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbC5oCShy
ZXZpc2lvbiAxMzMwNzUpCisrKyBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDggKzM0LDYgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNz
IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI7Ci0KIGNsYXNzIFBhZ2VDbGllbnRJbXBsIDogcHVibGlj
IFBhZ2VDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFBhZ2VDbGllbnRJ
bXBsPiBjcmVhdGUoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQpAQCAtNDUsOSArNDMsNiBAQAogICAg
IH5QYWdlQ2xpZW50SW1wbCgpOwogCiAgICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsKCkgY29uc3Q7
Ci0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgdm9pZCBzZXRQYWdlVmlld3BvcnRD
b250cm9sbGVyKFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIqIGNvbnRyb2xsZXIpIHsgbV9wYWdlVmll
d3BvcnRDb250cm9sbGVyID0gY29udHJvbGxlcjsgfQotI2VuZGlmCiAKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgUGFnZUNsaWVudEltcGwoRXdrVmlld0ltcGwqKTsKQEAgLTEyOSw5ICsxMjQsNiBA
QAogcHJpdmF0ZToKICAgICBFd2tWaWV3SW1wbCogbV92aWV3SW1wbDsKICAgICBEZWZhdWx0VW5k
b0NvbnRyb2xsZXIgbV91bmRvQ29udHJvbGxlcjsKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9S
RSkKLSAgICBQYWdlVmlld3BvcnRDb250cm9sbGVyKiBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXI7
Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogVUlQcm9jZXNzL2Vm
bC9QYWdlQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVUlQcm9jZXNzL2VmbC9QYWdlQ2xp
ZW50SW1wbC5jcHAJKHJldmlzaW9uIDEzMzA3NSkKKysrIFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVu
dEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMCArNDQsNiBAQAogI2luY2x1ZGUgImV3
a19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKIAotI2lmIFVTRShUSUxFRF9CQUNL
SU5HX1NUT1JFKQotI2luY2x1ZGUgIlBhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaCIKLSNlbmRpZgot
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBFd2tWaWV3Q2FsbGJh
Y2tzOwogCkBAIC0xNjksNyArMTY1LDcgQEAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENoYW5n
ZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmIGF0
dHIpCiB7CiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgbV9wYWdlVmlld3BvcnRD
b250cm9sbGVyLT5kaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMoYXR0cik7CisgICAgbV92aWV3
SW1wbC0+ZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKGF0dHIpOwogI2Vsc2UKICAgICBVTlVT
RURfUEFSQU0oYXR0cik7CiAjZW5kaWYKQEAgLTMyOSwxNCArMzI1LDE0IEBACiAjaWYgVVNFKFRJ
TEVEX0JBQ0tJTkdfU1RPUkUpCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwYWdlRGlkUmVxdWVzdFNj
cm9sbChjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCiB7Ci0gICAgbV9wYWdlVmlld3BvcnRDb250
cm9sbGVyLT5wYWdlRGlkUmVxdWVzdFNjcm9sbChwb3NpdGlvbik7CisgICAgbV92aWV3SW1wbC0+
cGFnZURpZFJlcXVlc3RTY3JvbGwocG9zaXRpb24pOwogfQogI2VuZGlmCiAKIHZvaWQgUGFnZUNs
aWVudEltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBz
aXplKQogewogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAgIG1fcGFnZVZpZXdwb3J0
Q29udHJvbGxlci0+ZGlkQ2hhbmdlQ29udGVudHNTaXplKHNpemUpOworICAgIG1fdmlld0ltcGwt
PmRpZENoYW5nZUNvbnRlbnRzU2l6ZShzaXplKTsKICNlbHNlCiAgICAgbV92aWV3SW1wbC0+aW5m
b3JtQ29udGVudHNTaXplQ2hhbmdlKHNpemUpOwogI2VuZGlmCkBAIC0zNDUsMTIgKzM0MSwxMiBA
QAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlk
UmVuZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBjb3ZlcmVkUmVjdCkKIHsKLSAgICBtX3BhZ2VWaWV3cG9ydENvbnRy
b2xsZXItPmRpZFJlbmRlckZyYW1lKGNvbnRlbnRzU2l6ZSwgY292ZXJlZFJlY3QpOworICAgIG1f
dmlld0ltcGwtPmRpZFJlbmRlckZyYW1lKGNvbnRlbnRzU2l6ZSwgY292ZXJlZFJlY3QpOwogfQog
CiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKQogewot
ICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5
KCk7CisgICAgbV92aWV3SW1wbC0+cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCk7CiB9CiAj
ZW5kaWYKIApJbmRleDogVUlQcm9jZXNzL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBVSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnRFZmwuY3BwCShyZXZpc2lvbiAxMzMwNzUpCisrKyBVSVByb2Nlc3MvZWZsL1BhZ2VW
aWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NywxOSAr
NzcsMzIgQEAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6dXBkYXRlVmll
d3BvcnRTaXplKGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKIHsKICAgICBtX3ZpZXdwb3J0
U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKLSAgICBtX3ZpZXdJbXBsLT5wYWdlKCktPnNldFZpZXdwb3J0
U2l6ZSh2aWV3cG9ydFNpemUpOwotICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hh
bmdlVmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7CisgICAgaWYgKG1fcGFnZVZpZXdwb3J0Q29u
dHJvbGxlcikKKyAgICAgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRDaGFuZ2VWaWV3
cG9ydFNpemUodmlld3BvcnRTaXplKTsKKyAgICBlbHNlCisgICAgICAgIHNldFZpc2libGVDb250
ZW50c1JlY3QobV9zY3JvbGxQb3NpdGlvbiwgbV9zY2FsZUZhY3RvciwgRmxvYXRQb2ludCgpKTsK
IH0KIAogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpzZXRWaXNpYmxlQ29u
dGVudHNSZWN0KGNvbnN0IEludFBvaW50JiBuZXdTY3JvbGxQb3NpdGlvbiwgZmxvYXQgbmV3U2Nh
bGUsIGNvbnN0IEZsb2F0UG9pbnQmIC8qdHJhamVjdG9yeSovKQogewogICAgIG1fc2NhbGVGYWN0
b3IgPSBuZXdTY2FsZTsKICAgICBtX3Njcm9sbFBvc2l0aW9uID0gbmV3U2Nyb2xsUG9zaXRpb247
Ci0gICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRDaGFuZ2VDb250ZW50c1Zpc2liaWxp
dHkobV9zY3JvbGxQb3NpdGlvbiwgbV9zY2FsZUZhY3RvciwgRmxvYXRQb2ludCgpKTsKKyAgICBp
ZiAobV9wYWdlVmlld3BvcnRDb250cm9sbGVyKQorICAgICAgICBtX3BhZ2VWaWV3cG9ydENvbnRy
b2xsZXItPmRpZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eShtX3Njcm9sbFBvc2l0aW9uLCBtX3Nj
YWxlRmFjdG9yLCBGbG9hdFBvaW50KCkpOworICAgIGVsc2UgeworICAgICAgICBGbG9hdFJlY3Qg
bWFwUmVjdFRvV2ViQ29udGVudCA9IEZsb2F0UmVjdChuZXdTY3JvbGxQb3NpdGlvbiwgbV92aWV3
cG9ydFNpemUpOworICAgICAgICBtYXBSZWN0VG9XZWJDb250ZW50LnNjYWxlKDEgLyBtX3NjYWxl
RmFjdG9yKTsKKyAgICAgICAgZHJhd2luZ0FyZWEoKS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChl
bmNsb3NpbmdJbnRSZWN0KG1hcFJlY3RUb1dlYkNvbnRlbnQpLCBtX3NjYWxlRmFjdG9yLCBGbG9h
dFBvaW50KCkpOworICAgIH0KIH0KIAogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
RWZsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkK
IHsKKyAgICBpZiAoIW1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcikgeworICAgICAgICBGbG9hdFJl
Y3QgbWFwUmVjdFRvV2ViQ29udGVudCA9IEZsb2F0UmVjdChtX3Njcm9sbFBvc2l0aW9uLCBtX3Zp
ZXdwb3J0U2l6ZSk7CisgICAgICAgIG1hcFJlY3RUb1dlYkNvbnRlbnQuc2NhbGUoMSAvIG1fc2Nh
bGVGYWN0b3IpOworICAgICAgICBkcmF3aW5nQXJlYSgpLT5sYXllclRyZWVDb29yZGluYXRvclBy
b3h5KCktPnNldENvbnRlbnRzU2l6ZShXZWJDb3JlOjpGbG9hdFNpemUoc2l6ZS53aWR0aCgpLCBz
aXplLmhlaWdodCgpKSk7CisgICAgfQogICAgIG1fY29udGVudHNTaXplID0gc2l6ZTsKICAgICBJ
bnRSZWN0IHJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIG1fdmlld3BvcnRTaXplKTsKICAgICBt
X3ZpZXdJbXBsLT5yZWRyYXdSZWdpb24ocmVjdCk7CkBAIC0xMDksNiArMTIyLDcgQEAKIAogdm9p
ZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaWRSZXN1bWVDb250ZW50KCkKIHsK
KyAgICBBU1NFUlQobV9wYWdlVmlld3BvcnRDb250cm9sbGVyKTsKICAgICBtX3BhZ2VWaWV3cG9y
dENvbnRyb2xsZXItPmRpZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eShtX3Njcm9sbFBvc2l0aW9u
LCBtX3NjYWxlRmFjdG9yKTsKIH0KIApAQCAtMTIwLDYgKzEzNCw3IEBACiAKIHZvaWQgUGFnZVZp
ZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKCkK
IHsKKyAgICBBU1NFUlQobV9wYWdlVmlld3BvcnRDb250cm9sbGVyKTsKIH0KIAogdm9pZCBQYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpzZXRDb250cm9sbGVyKFBhZ2VWaWV3cG9ydENv
bnRyb2xsZXIqIHBhZ2VWaWV3cG9ydENvbnRyb2xsZXIpCkluZGV4OiBDaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzMwNzUpCisrKyBDaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw0NyBAQAorMjAxMi0xMC0zMSAgWWFlbCBBaGFyb24gIDx5YWVs
LmFoYXJvbkBpbnRlbC5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBBbGxvdyB1c2luZyBBQ0NF
TEVSQVRFRF9DT01QT1NJVElORyB3aXRob3V0IENPT1JESU5BVEVEX0dSQVBISUNTCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA2NzQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIGEgZGlzdGluY3Rp
b24gYmV0d2VlbiBjYWxsaW5nIGV3a192aWV3X2Jhc2VfYWRkIGFuZCBld2tfdmlld19zbWFydF9h
ZGQuCisgICAgICAgIENhbGxpbmcgZXdrX3ZpZXdfYmFzZV9hZGQgY3JlYXRlcyBhIGRlc2t0b3Ag
c3R5bGUgdmlldywgdGhhdCBkb2VzIG5vdCBzdXBwb3J0CisgICAgICAgIGZpeGVkIGxheW91dCBz
aXplLCB3aGlsZSBjYWxsaW5nIGV3a192aWV3X3NtYXJ0X2FkZCBkb2VzIHN1cHBvcnQgZml4ZWQg
bGF5b3V0IHNpemUuCisgICAgICAgIEFzIGEgcmVzdWx0LCBXZWJLaXRUZXN0UnVubmVyIGFuZCB0
aGUgaW5zcGVjdG9yIHdpbmRvdyBkbyBub3Qgc3VwcG9ydAorICAgICAgICBmaXhlZCBsYXlvdXQg
c2l6ZSwgd2hpbGUgTWluaUJyb3dzZXIgZG9lcy4gVGhpcyBjaGFuZ2UgYWxsb3dzIG1hbnkgRHVt
cEFzVGV4dAorICAgICAgICBsYXlvdXQgdGVzdHMgdG8gcGFzcyB3aXRob3V0IG1vZGlmaWNhdGlv
biwgd2hlbiBBQyBpcyBlbmFibGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdr
Vmlld0ltcGwuY3BwOgorICAgICAgICAoRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKToKKyAgICAg
ICAgKEV3a1ZpZXdJbXBsOjppbmZvcm1Mb2FkQ29tbWl0dGVkKToKKyAgICAgICAgKEV3a1ZpZXdJ
bXBsOjpkaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMpOgorICAgICAgICAoRXdrVmlld0ltcGw6
OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpkaWRDaGFuZ2VD
b250ZW50c1NpemUpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmRpZFJlbmRlckZyYW1lKToKKyAg
ICAgICAgKEV3a1ZpZXdJbXBsOjpwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKEV3a1ZpZXdJbXBsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dmlldy5jcHA6CisgICAgICAgIChjcmVhdGVFd2tWaWV3KToKKyAgICAgICAgKGV3a192aWV3X2Jh
c2VfYWRkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGll
cyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpwYWdlRGlkUmVxdWVzdFNjcm9s
bCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VDb250ZW50c1Np
emUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlkUmVuZGVyRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJl
YWR5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoUGFnZUNsaWVudEltcGwpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnVwZGF0ZVZpZXdwb3J0U2l6ZSk6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNldFZp
c2libGVDb250ZW50c1JlY3QpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9s
bGVyQ2xpZW50RWZsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUpOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaWRSZXN1bWVDb250ZW50KToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdlVmll
d3BvcnRBdHRyaWJ1dGVzKToKKwogMjAxMi0xMC0zMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIENvbnZlcnQgdGhlIHJlc3Qgb2YgdGhlIGVuY29kZXJzIHRvIHRha2Ug
dGhlIGVuY29kZXIgYXMgYSByZWZlcmVuY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171723</attachid>
            <date>2012-10-31 14:42:00 -0700</date>
            <delta_ts>2012-10-31 18:32:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>100674.patch</filename>
            <type>text/plain</type>
            <size>14277</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEzMzA3
OCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTEw
LTMxICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KKworICAgICAgICBbRUZM
XVtXSzJdIEFsbG93IHVzaW5nIEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HIHdpdGhvdXQgQ09PUkRJ
TkFURURfR1JBUEhJQ1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMDY3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1ha2UgYSBkaXN0aW5jdGlvbiBiZXR3ZWVuIGNhbGxpbmcgZXdrX3ZpZXdfYmFzZV9h
ZGQgYW5kIGV3a192aWV3X3NtYXJ0X2FkZC4KKyAgICAgICAgQ2FsbGluZyBld2tfdmlld19iYXNl
X2FkZCBjcmVhdGVzIGEgZGVza3RvcCBzdHlsZSB2aWV3LCB0aGF0IGRvZXMgbm90IHN1cHBvcnQK
KyAgICAgICAgZml4ZWQgbGF5b3V0IHNpemUsIHdoaWxlIGNhbGxpbmcgZXdrX3ZpZXdfc21hcnRf
YWRkIGRvZXMgc3VwcG9ydCBmaXhlZCBsYXlvdXQgc2l6ZS4KKyAgICAgICAgQXMgYSByZXN1bHQs
IFdlYktpdFRlc3RSdW5uZXIgYW5kIHRoZSBpbnNwZWN0b3Igd2luZG93IGRvIG5vdCBzdXBwb3J0
CisgICAgICAgIGZpeGVkIGxheW91dCBzaXplLCB3aGlsZSBNaW5pQnJvd3NlciBkb2VzLiBUaGlz
IGNoYW5nZSBhbGxvd3MgbWFueSBEdW1wQXNUZXh0CisgICAgICAgIGxheW91dCB0ZXN0cyB0byBw
YXNzIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCB3aGVuIEFDIGlzIGVuYWJsZWQuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHA6CisgICAgICAgIChFd2tWaWV3SW1w
bDo6RXdrVmlld0ltcGwpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmluZm9ybUxvYWRDb21taXR0
ZWQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcyk6
CisgICAgICAgIChFd2tWaWV3SW1wbDo6cGFnZURpZFJlcXVlc3RTY3JvbGwpOgorICAgICAgICAo
RXdrVmlld0ltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSk6CisgICAgICAgIChFd2tWaWV3SW1w
bDo6ZGlkUmVuZGVyRnJhbWUpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnBhZ2VUcmFuc2l0aW9u
Vmlld3BvcnRSZWFkeSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRXdrVmlld0ltcGwpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKGNyZWF0ZUV3a1ZpZXcp
OgorICAgICAgICAoZXdrX3ZpZXdfYmFzZV9hZGQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwv
UGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlk
Q2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsOjpkaWRSZW5kZXJGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpw
YWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFn
ZUNsaWVudEltcGwuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChQYWdlQ2xpZW50SW1w
bCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVm
bDo6dXBkYXRlVmlld3BvcnRTaXplKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29u
dHJvbGxlckNsaWVudEVmbDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRpZENoYW5nZUNvbnRlbnRzU2l6
ZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRp
ZFJlc3VtZUNvbnRlbnQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVy
Q2xpZW50RWZsOjpkaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMpOgorCiAyMDEyLTEwLTMxICBT
YW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ29udmVydCB0aGUgcmVzdCBv
ZiB0aGUgZW5jb2RlcnMgdG8gdGFrZSB0aGUgZW5jb2RlciBhcyBhIHJlZmVyZW5jZQpJbmRleDog
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmNwcAkocmV2aXNpb24gMTMzMDc4KQorKysgVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDYsNyArNTQ2LDcgQEAKICAgICBy
ZXR1cm4gc21hcnQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgRXZhc19PYmplY3QqIGNyZWF0ZUV3a1Zp
ZXcoRXZhcyogY2FudmFzLCBFdmFzX1NtYXJ0KiBzbWFydCwgUGFzc1JlZlB0cjxFd2tfQ29udGV4
dD4gY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmID0gMCkKK3N0YXRpYyBpbmxp
bmUgRXZhc19PYmplY3QqIGNyZWF0ZUV3a1ZpZXcoRXZhcyogY2FudmFzLCBFdmFzX1NtYXJ0KiBz
bWFydCwgUGFzc1JlZlB0cjxFd2tfQ29udGV4dD4gY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFn
ZUdyb3VwUmVmID0gMCwgYm9vbCBkZXNrdG9wTW9kZSA9IGZhbHNlKQogewogICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChjYW52YXMsIDApOwogICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChzbWFydCwgMCk7CkBAIC01NjMsNyArNTYzLDcgQEAKIAogICAgIEFTU0VS
VCghc21hcnREYXRhLT5wcml2KTsKICAgICBSZWZQdHI8V2ViUGFnZUdyb3VwPiBwYWdlR3JvdXAg
PSBwYWdlR3JvdXBSZWYgPyB0b0ltcGwocGFnZUdyb3VwUmVmKSA6IFdlYlBhZ2VHcm91cDo6Y3Jl
YXRlKCk7Ci0gICAgc21hcnREYXRhLT5wcml2ID0gbmV3IEV3a1ZpZXdJbXBsKGV3a1ZpZXcsIGNv
bnRleHQsIHBhZ2VHcm91cCk7CisgICAgc21hcnREYXRhLT5wcml2ID0gbmV3IEV3a1ZpZXdJbXBs
KGV3a1ZpZXcsIGNvbnRleHQsIHBhZ2VHcm91cCwgZGVza3RvcE1vZGUpOwogCiAgICAgcmV0dXJu
IGV3a1ZpZXc7CiB9CkBAIC01NzQsNyArNTc0LDcgQEAKICAqLwogRXZhc19PYmplY3QqIGV3a192
aWV3X2Jhc2VfYWRkKEV2YXMqIGNhbnZhcywgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFn
ZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKIHsKLSAgICByZXR1cm4gY3JlYXRlRXdrVmlldyhjYW52
YXMsIGNyZWF0ZUV3a1ZpZXdTbWFydENsYXNzKCksIEV3a19Db250ZXh0OjpjcmVhdGUoY29udGV4
dFJlZiksIHBhZ2VHcm91cFJlZik7CisgICAgcmV0dXJuIGNyZWF0ZUV3a1ZpZXcoY2FudmFzLCBj
cmVhdGVFd2tWaWV3U21hcnRDbGFzcygpLCBFd2tfQ29udGV4dDo6Y3JlYXRlKGNvbnRleHRSZWYp
LCBwYWdlR3JvdXBSZWYsIHRydWUpOwogfQogCiBFdmFzX09iamVjdCogZXdrX3ZpZXdfc21hcnRf
YWRkKEV2YXMqIGNhbnZhcywgRXZhc19TbWFydCogc21hcnQsIEV3a19Db250ZXh0KiBjb250ZXh0
KQpJbmRleDogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAkocmV2aXNpb24gMTMzMDc4KQorKysg
VUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3
ICs5Myw3IEBACiAgICAgcmV0dXJuIHBhZ2VWaWV3TWFwKCkuZ2V0KHBhZ2UpOwogfQogCi1Fd2tW
aWV3SW1wbDo6RXdrVmlld0ltcGwoRXZhc19PYmplY3QqIHZpZXcsIFBhc3NSZWZQdHI8RXdrX0Nv
bnRleHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8V2ViUGFnZUdyb3VwPiBwYWdlR3JvdXApCitFd2tW
aWV3SW1wbDo6RXdrVmlld0ltcGwoRXZhc19PYmplY3QqIHZpZXcsIFBhc3NSZWZQdHI8RXdrX0Nv
bnRleHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8V2ViUGFnZUdyb3VwPiBwYWdlR3JvdXAsIGJvb2wg
ZGVza3RvcE1vZGUpCiAgICAgOiBtX3ZpZXcodmlldykKICAgICAsIG1fY29udGV4dChjb250ZXh0
KQogICAgICwgbV9wYWdlQ2xpZW50KFBhZ2VDbGllbnRJbXBsOjpjcmVhdGUodGhpcykpCkBAIC0x
MDcsNyArMTA3LDYgQEAKICAgICAsIG1fYmFja0ZvcndhcmRMaXN0KEV3a19CYWNrX0ZvcndhcmRf
TGlzdDo6Y3JlYXRlKHRvQVBJKG1fcGFnZVByb3h5LT5iYWNrRm9yd2FyZExpc3QoKSkpKQogI2lm
IFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgICwgbV9wYWdlVmlld3BvcnRDb250cm9sbGVy
Q2xpZW50KFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKLSAg
ICAsIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcihhZG9wdFB0cihuZXcgUGFnZVZpZXdwb3J0Q29u
dHJvbGxlcihtX3BhZ2VQcm94eS5nZXQoKSwgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
LmdldCgpKSkpCiAjZW5kaWYKICAgICAsIG1fc2V0dGluZ3MoRXdrX1NldHRpbmdzOjpjcmVhdGUo
dGhpcykpCiAgICAgLCBtX2N1cnNvckdyb3VwKDApCkBAIC0xMjMsMjAgKzEyMiwyMiBAQAogICAg
IEFTU0VSVChtX3BhZ2VQcm94eSk7CiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisg
ICAgaWYgKCFkZXNrdG9wTW9kZSkKKyAgICAgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyID0g
YWRvcHRQdHIobmV3IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIobV9wYWdlUHJveHkuZ2V0KCksIG1f
cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC5nZXQoKSkpOwogICAgIG1fcGFnZVByb3h5LT5w
YWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJs
ZWQodHJ1ZSk7CiAgICAgbV9wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5z
ZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKKyAgICBpZiAobV9wYWdlVmlld3BvcnRDb250
cm9sbGVyKQorICAgICAgICBtX3BhZ2VQcm94eS0+c2V0VXNlRml4ZWRMYXlvdXQodHJ1ZSk7CisK
ICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgbV9wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJl
bmNlcygpLT5zZXRXZWJHTEVuYWJsZWQodHJ1ZSk7CiAjZW5kaWYKLSAgICBtX3BhZ2VQcm94eS0+
c2V0VXNlRml4ZWRMYXlvdXQodHJ1ZSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShkZXNrdG9w
TW9kZSk7CiAjZW5kaWYKIAogICAgIG1fcGFnZVByb3h5LT5pbml0aWFsaXplV2ViUGFnZSgpOwog
Ci0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgbV9wYWdlQ2xpZW50LT5zZXRQYWdl
Vmlld3BvcnRDb250cm9sbGVyKG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci5nZXQoKSk7Ci0jZW5k
aWYKLQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBtX3BhZ2VQcm94eS0+ZnVsbFNj
cmVlbk1hbmFnZXIoKS0+c2V0V2ViVmlldyhtX3ZpZXcpOwogICAgIG1fcGFnZVByb3h5LT5wYWdl
R3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0RnVsbFNjcmVlbkVuYWJsZWQodHJ1ZSk7CkBAIC0z
MTUsOCArMzE2LDUxIEBACiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiB2b2lkIEV3a1Zp
ZXdJbXBsOjppbmZvcm1Mb2FkQ29tbWl0dGVkKCkKIHsKLSAgICBtX3BhZ2VWaWV3cG9ydENvbnRy
b2xsZXItPmRpZENvbW1pdExvYWQoKTsKKyAgICBpZiAobV9wYWdlVmlld3BvcnRDb250cm9sbGVy
KQorICAgICAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPmRpZENvbW1pdExvYWQoKTsKKyAg
ICBlbHNlCisgICAgICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC0+ZGlkQ2hhbmdl
VmlzaWJsZUNvbnRlbnRzKCk7CiB9CisKK3ZvaWQgRXdrVmlld0ltcGw6OmRpZENoYW5nZVZpZXdw
b3J0QXR0cmlidXRlcyhjb25zdCBWaWV3cG9ydEF0dHJpYnV0ZXMmIGF0dHIpCit7CisgICAgaWYg
KG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcikKKyAgICAgICAgbV9wYWdlVmlld3BvcnRDb250cm9s
bGVyLT5kaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMoYXR0cik7CisgICAgZWxzZQorICAgICAg
ICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQtPmRpZENoYW5nZVZpc2libGVDb250ZW50
cygpOworfQorCit2b2lkIEV3a1ZpZXdJbXBsOjpwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBJ
bnRQb2ludCYgcG9zaXRpb24pCit7CisgICAgaWYgKG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcikK
KyAgICAgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5wYWdlRGlkUmVxdWVzdFNjcm9sbChw
b3NpdGlvbik7CisgICAgZWxzZQorICAgICAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnQtPmRpZENoYW5nZVZpc2libGVDb250ZW50cygpOworfQorCit2b2lkIEV3a1ZpZXdJbXBsOjpk
aWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBpZiAobV9w
YWdlVmlld3BvcnRDb250cm9sbGVyKQorICAgICAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIt
PmRpZENoYW5nZUNvbnRlbnRzU2l6ZShzaXplKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGFnZVZp
ZXdwb3J0Q29udHJvbGxlckNsaWVudC0+ZGlkQ2hhbmdlQ29udGVudHNTaXplKHNpemUpOworfQor
Cit2b2lkIEV3a1ZpZXdJbXBsOjpkaWRSZW5kZXJGcmFtZShjb25zdCBJbnRTaXplJiBjb250ZW50
c1NpemUsIGNvbnN0IEludFJlY3QmIGNvdmVyZWRSZWN0KQoreworICAgIGlmIChtX3BhZ2VWaWV3
cG9ydENvbnRyb2xsZXIpCisgICAgICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkUmVu
ZGVyRnJhbWUoY29udGVudHNTaXplLCBjb3ZlcmVkUmVjdCk7CisgICAgZWxzZQorICAgICAgICBt
X3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQtPmRpZENoYW5nZVZpc2libGVDb250ZW50cygp
OworfQorCit2b2lkIEV3a1ZpZXdJbXBsOjpwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKQor
eworICAgIGlmIChtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIpCisgICAgICAgIG1fcGFnZVZpZXdw
b3J0Q29udHJvbGxlci0+cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCk7CisgICAgZWxzZQor
ICAgICAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQtPmRpZENoYW5nZVZpc2libGVD
b250ZW50cygpOworfQogI2VuZGlmCiAKIEludFNpemUgRXdrVmlld0ltcGw6OnNpemUoKSBjb25z
dApJbmRleDogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBV
SVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCShyZXZpc2lvbiAxMzMwNzgpCisrKyBVSVBy
b2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw5ICs2Mywx
MSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29sb3I7CiBjbGFzcyBDdXJzb3I7Citj
bGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgUmVn
aW9uOworY2xhc3MgVmlld3BvcnRBdHRyaWJ1dGVzOwogfQogCiBjbGFzcyBFd2tfQmFja19Gb3J3
YXJkX0xpc3Q7CkBAIC05Miw3ICs5NCw3IEBACiAKIGNsYXNzIEV3a1ZpZXdJbXBsIHsKIHB1Ymxp
YzoKLSAgICBFd2tWaWV3SW1wbChFdmFzX09iamVjdCogdmlldywgUGFzc1JlZlB0cjxFd2tfQ29u
dGV4dD4gY29udGV4dCwgUGFzc1JlZlB0cjxXZWJLaXQ6OldlYlBhZ2VHcm91cD4gcGFnZUdyb3Vw
KTsKKyAgICBFd2tWaWV3SW1wbChFdmFzX09iamVjdCogdmlldywgUGFzc1JlZlB0cjxFd2tfQ29u
dGV4dD4gY29udGV4dCwgUGFzc1JlZlB0cjxXZWJLaXQ6OldlYlBhZ2VHcm91cD4gcGFnZUdyb3Vw
LCBib29sIGRlc2t0b3BNb2RlKTsKICAgICB+RXdrVmlld0ltcGwoKTsKIAogICAgIHN0YXRpYyBF
d2tWaWV3SW1wbCogZnJvbUV2YXNPYmplY3QoY29uc3QgRXZhc19PYmplY3QqIHZpZXcpOwpAQCAt
MTY5LDYgKzE3MSwxMSBAQAogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgdm9p
ZCBpbmZvcm1Mb2FkQ29tbWl0dGVkKCk7CisgICAgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydEF0dHJp
YnV0ZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJiBhdHRyKTsKKyAgICB2b2lk
IHBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbik7
CisgICAgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
c2l6ZSk7CisgICAgdm9pZCBkaWRSZW5kZXJGcmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBj
b250ZW50c1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KTsKKyAgICB2
b2lkIHBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpOwogI2VuZGlmCiAgICAgdm9pZCBpbmZv
cm1Db250ZW50c1NpemVDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSk7CiAgICAg
dW5zaWduZWQgbG9uZyBsb25nIGluZm9ybURhdGFiYXNlUXVvdGFSZWFjaGVkKGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25n
IGxvbmcgY3VycmVudFF1b3RhLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudE9yaWdpblVzYWdl
LCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVuc2lnbmVkIGxvbmcg
bG9uZyBleHBlY3RlZFVzYWdlKTsKSW5kZXg6IFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmgJKHJldmlzaW9u
IDEzMzA3OCkKKysrIFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGwuaAkod29ya2luZyBjb3B5
KQpAQCAtMzQsOCArMzQsNiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgUGFnZVZp
ZXdwb3J0Q29udHJvbGxlcjsKLQogY2xhc3MgUGFnZUNsaWVudEltcGwgOiBwdWJsaWMgUGFnZUNs
aWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8UGFnZUNsaWVudEltcGw+IGNy
ZWF0ZShFd2tWaWV3SW1wbCogdmlld0ltcGwpCkBAIC00NSw5ICs0Myw2IEBACiAgICAgflBhZ2VD
bGllbnRJbXBsKCk7CiAKICAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwoKSBjb25zdDsKLSNpZiBV
U0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICB2b2lkIHNldFBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXIoUGFnZVZpZXdwb3J0Q29udHJvbGxlciogY29udHJvbGxlcikgeyBtX3BhZ2VWaWV3cG9ydENv
bnRyb2xsZXIgPSBjb250cm9sbGVyOyB9Ci0jZW5kaWYKIAogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBQYWdlQ2xpZW50SW1wbChFd2tWaWV3SW1wbCopOwpAQCAtMTI5LDkgKzEyNCw2IEBACiBwcml2
YXRlOgogICAgIEV3a1ZpZXdJbXBsKiBtX3ZpZXdJbXBsOwogICAgIERlZmF1bHRVbmRvQ29udHJv
bGxlciBtX3VuZG9Db250cm9sbGVyOwotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAg
IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIqIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcjsKLSNlbmRp
ZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBVSVByb2Nlc3MvZWZsL1BhZ2VW
aWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFVJUHJvY2Vzcy9l
ZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5jcHAJKHJldmlzaW9uIDEzMzA3OCkK
KysrIFVJUHJvY2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc3LDE5ICs3NywzMiBAQAogdm9pZCBQYWdlVmlld3BvcnRDb250cm9s
bGVyQ2xpZW50RWZsOjp1cGRhdGVWaWV3cG9ydFNpemUoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRT
aXplKQogewogICAgIG1fdmlld3BvcnRTaXplID0gdmlld3BvcnRTaXplOwotICAgIG1fdmlld0lt
cGwtPnBhZ2UoKS0+c2V0Vmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7Ci0gICAgbV9wYWdlVmll
d3BvcnRDb250cm9sbGVyLT5kaWRDaGFuZ2VWaWV3cG9ydFNpemUodmlld3BvcnRTaXplKTsKKyAg
ICBpZiAobV9wYWdlVmlld3BvcnRDb250cm9sbGVyKQorICAgICAgICBtX3BhZ2VWaWV3cG9ydENv
bnRyb2xsZXItPmRpZENoYW5nZVZpZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUpOworICAgIGVsc2UK
KyAgICAgICAgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChtX3Njcm9sbFBvc2l0aW9uLCBtX3NjYWxl
RmFjdG9yLCBGbG9hdFBvaW50KCkpOwogfQogCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRFZmw6OnNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgSW50UG9pbnQmIG5ld1Njcm9s
bFBvc2l0aW9uLCBmbG9hdCBuZXdTY2FsZSwgY29uc3QgRmxvYXRQb2ludCYgLyp0cmFqZWN0b3J5
Ki8pCiB7CiAgICAgbV9zY2FsZUZhY3RvciA9IG5ld1NjYWxlOwogICAgIG1fc2Nyb2xsUG9zaXRp
b24gPSBuZXdTY3JvbGxQb3NpdGlvbjsKLSAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPmRp
ZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eShtX3Njcm9sbFBvc2l0aW9uLCBtX3NjYWxlRmFjdG9y
LCBGbG9hdFBvaW50KCkpOworICAgIGlmIChtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIpCisgICAg
ICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlQ29udGVudHNWaXNpYmlsaXR5
KG1fc2Nyb2xsUG9zaXRpb24sIG1fc2NhbGVGYWN0b3IsIEZsb2F0UG9pbnQoKSk7CisgICAgZWxz
ZSB7CisgICAgICAgIEZsb2F0UmVjdCBtYXBSZWN0VG9XZWJDb250ZW50ID0gRmxvYXRSZWN0KG5l
d1Njcm9sbFBvc2l0aW9uLCBtX3ZpZXdwb3J0U2l6ZSk7CisgICAgICAgIG1hcFJlY3RUb1dlYkNv
bnRlbnQuc2NhbGUoMSAvIG1fc2NhbGVGYWN0b3IpOworICAgICAgICBkcmF3aW5nQXJlYSgpLT5z
ZXRWaXNpYmxlQ29udGVudHNSZWN0KGVuY2xvc2luZ0ludFJlY3QobWFwUmVjdFRvV2ViQ29udGVu
dCksIG1fc2NhbGVGYWN0b3IsIEZsb2F0UG9pbnQoKSk7CisgICAgfQogfQogCiB2b2lkIFBhZ2VW
aWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBzaXplKQogeworICAgIGlmICghbV9wYWdlVmlld3BvcnRDb250cm9s
bGVyKSB7CisgICAgICAgIEZsb2F0UmVjdCBtYXBSZWN0VG9XZWJDb250ZW50ID0gRmxvYXRSZWN0
KG1fc2Nyb2xsUG9zaXRpb24sIG1fdmlld3BvcnRTaXplKTsKKyAgICAgICAgbWFwUmVjdFRvV2Vi
Q29udGVudC5zY2FsZSgxIC8gbV9zY2FsZUZhY3Rvcik7CisgICAgICAgIGRyYXdpbmdBcmVhKCkt
PmxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkoKS0+c2V0Q29udGVudHNTaXplKFdlYkNvcmU6OkZs
b2F0U2l6ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKKyAgICB9CiAgICAgbV9jb250
ZW50c1NpemUgPSBzaXplOwogICAgIEludFJlY3QgcmVjdCA9IEludFJlY3QoSW50UG9pbnQoKSwg
bV92aWV3cG9ydFNpemUpOwogICAgIG1fdmlld0ltcGwtPnJlZHJhd1JlZ2lvbihyZWN0KTsKQEAg
LTEwOSw2ICsxMjIsNyBAQAogCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6
OmRpZFJlc3VtZUNvbnRlbnQoKQogeworICAgIEFTU0VSVChtX3BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXIpOwogICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlQ29udGVudHNWaXNp
YmlsaXR5KG1fc2Nyb2xsUG9zaXRpb24sIG1fc2NhbGVGYWN0b3IpOwogfQogCkBAIC0xMjAsNiAr
MTM0LDcgQEAKIAogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaWRDaGFu
Z2VWaWV3cG9ydEF0dHJpYnV0ZXMoKQogeworICAgIEFTU0VSVChtX3BhZ2VWaWV3cG9ydENvbnRy
b2xsZXIpOwogfQogCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNldENv
bnRyb2xsZXIoUGFnZVZpZXdwb3J0Q29udHJvbGxlciogcGFnZVZpZXdwb3J0Q29udHJvbGxlcikK
SW5kZXg6IFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFVJ
UHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGwuY3BwCShyZXZpc2lvbiAxMzMwNzgpCisrKyBVSVBy
b2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTAgKzQ0
LDYgQEAKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3LmgiCiAK
LSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSNpbmNsdWRlICJQYWdlVmlld3BvcnRDb250
cm9sbGVyLmgiCi0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1l
c3BhY2UgRXdrVmlld0NhbGxiYWNrczsKIApAQCAtMTY5LDcgKzE2NSw3IEBACiB2b2lkIFBhZ2VD
bGllbnRJbXBsOjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmll
d3BvcnRBdHRyaWJ1dGVzJiBhdHRyKQogewogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQot
ICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVz
KGF0dHIpOworICAgIG1fdmlld0ltcGwtPmRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcyhhdHRy
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGF0dHIpOwogI2VuZGlmCkBAIC0zMjksMTQgKzMy
NSwxNCBAQAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogdm9pZCBQYWdlQ2xpZW50SW1w
bDo6cGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uKQogewotICAg
IG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+cGFnZURpZFJlcXVlc3RTY3JvbGwocG9zaXRpb24p
OworICAgIG1fdmlld0ltcGwtPnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKHBvc2l0aW9uKTsKIH0KICNl
bmRpZgogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKIHsKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkK
LSAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPmRpZENoYW5nZUNvbnRlbnRzU2l6ZShzaXpl
KTsKKyAgICBtX3ZpZXdJbXBsLT5kaWRDaGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7CiAjZWxzZQog
ICAgIG1fdmlld0ltcGwtPmluZm9ybUNvbnRlbnRzU2l6ZUNoYW5nZShzaXplKTsKICNlbmRpZgpA
QCAtMzQ1LDEyICszNDEsMTIgQEAKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKIHZvaWQg
UGFnZUNsaWVudEltcGw6OmRpZFJlbmRlckZyYW1lKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNv
bnRlbnRzU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY292ZXJlZFJlY3QpCiB7Ci0gICAg
bV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRSZW5kZXJGcmFtZShjb250ZW50c1NpemUsIGNv
dmVyZWRSZWN0KTsKKyAgICBtX3ZpZXdJbXBsLT5kaWRSZW5kZXJGcmFtZShjb250ZW50c1NpemUs
IGNvdmVyZWRSZWN0KTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6cGFnZVRyYW5zaXRpb25W
aWV3cG9ydFJlYWR5KCkKIHsKLSAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPnBhZ2VUcmFu
c2l0aW9uVmlld3BvcnRSZWFkeSgpOworICAgIG1fdmlld0ltcGwtPnBhZ2VUcmFuc2l0aW9uVmll
d3BvcnRSZWFkeSgpOwogfQogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171751</attachid>
            <date>2012-10-31 18:32:00 -0700</date>
            <delta_ts>2012-11-01 16:41:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>100674.patch</filename>
            <type>text/plain</type>
            <size>14592</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwu
aAkocmV2aXNpb24gMTMzMDc4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RXdrVmlld0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsOSArNjMsMTEgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIENvbG9yOwogY2xhc3MgQ3Vyc29yOworY2xhc3MgSW50UG9pbnQ7
CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFJlZ2lvbjsKK2NsYXNzIFZp
ZXdwb3J0QXR0cmlidXRlczsKIH0KIAogY2xhc3MgRXdrX0JhY2tfRm9yd2FyZF9MaXN0OwpAQCAt
OTIsNyArOTQsNyBAQAogCiBjbGFzcyBFd2tWaWV3SW1wbCB7CiBwdWJsaWM6Ci0gICAgRXdrVmll
d0ltcGwoRXZhc19PYmplY3QqIHZpZXcsIFBhc3NSZWZQdHI8RXdrX0NvbnRleHQ+IGNvbnRleHQs
IFBhc3NSZWZQdHI8V2ViS2l0OjpXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCk7CisgICAgRXdrVmll
d0ltcGwoRXZhc19PYmplY3QqIHZpZXcsIFBhc3NSZWZQdHI8RXdrX0NvbnRleHQ+IGNvbnRleHQs
IFBhc3NSZWZQdHI8V2ViS2l0OjpXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCwgYm9vbCBkZXNrdG9w
TW9kZSk7CiAgICAgfkV3a1ZpZXdJbXBsKCk7CiAKICAgICBzdGF0aWMgRXdrVmlld0ltcGwqIGZy
b21FdmFzT2JqZWN0KGNvbnN0IEV2YXNfT2JqZWN0KiB2aWV3KTsKQEAgLTE2OSw2ICsxNzEsMTEg
QEAKIAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIHZvaWQgaW5mb3JtTG9hZENv
bW1pdHRlZCgpOworICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKGNvbnN0IFdl
YkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYgYXR0cik7CisgICAgdm9pZCBwYWdlRGlkUmVxdWVz
dFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24pOworICAgIHZvaWQgZGlk
Q2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpOworICAgIHZv
aWQgZGlkUmVuZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjb3ZlcmVkUmVjdCk7CisgICAgdm9pZCBwYWdlVHJhbnNp
dGlvblZpZXdwb3J0UmVhZHkoKTsKICNlbmRpZgogICAgIHZvaWQgaW5mb3JtQ29udGVudHNTaXpl
Q2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpOwogICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyBpbmZvcm1EYXRhYmFzZVF1b3RhUmVhY2hlZChjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFt
ZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRR
dW90YSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRPcmlnaW5Vc2FnZSwgdW5zaWduZWQgbG9u
ZyBsb25nIGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1bnNpZ25lZCBsb25nIGxvbmcgZXhwZWN0ZWRV
c2FnZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1w
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdr
Vmlld0ltcGwuY3BwCShyZXZpc2lvbiAxMzMwNzgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDcg
QEAKICAgICByZXR1cm4gcGFnZVZpZXdNYXAoKS5nZXQocGFnZSk7CiB9CiAKLUV3a1ZpZXdJbXBs
OjpFd2tWaWV3SW1wbChFdmFzX09iamVjdCogdmlldywgUGFzc1JlZlB0cjxFd2tfQ29udGV4dD4g
Y29udGV4dCwgUGFzc1JlZlB0cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCkKK0V3a1ZpZXdJbXBs
OjpFd2tWaWV3SW1wbChFdmFzX09iamVjdCogdmlldywgUGFzc1JlZlB0cjxFd2tfQ29udGV4dD4g
Y29udGV4dCwgUGFzc1JlZlB0cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCwgYm9vbCBkZXNrdG9w
TW9kZSkKICAgICA6IG1fdmlldyh2aWV3KQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAg
LCBtX3BhZ2VDbGllbnQoUGFnZUNsaWVudEltcGw6OmNyZWF0ZSh0aGlzKSkKQEAgLTEwNyw3ICsx
MDcsNiBAQAogICAgICwgbV9iYWNrRm9yd2FyZExpc3QoRXdrX0JhY2tfRm9yd2FyZF9MaXN0Ojpj
cmVhdGUodG9BUEkobV9wYWdlUHJveHktPmJhY2tGb3J3YXJkTGlzdCgpKSkpCiAjaWYgVVNFKFRJ
TEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgLCBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQo
UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQotICAgICwgbV9w
YWdlVmlld3BvcnRDb250cm9sbGVyKGFkb3B0UHRyKG5ldyBQYWdlVmlld3BvcnRDb250cm9sbGVy
KG1fcGFnZVByb3h5LmdldCgpLCBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQuZ2V0KCkp
KSkKICNlbmRpZgogICAgICwgbV9zZXR0aW5ncyhFd2tfU2V0dGluZ3M6OmNyZWF0ZSh0aGlzKSkK
ICAgICAsIG1fY3Vyc29yR3JvdXAoMCkKQEAgLTEyMywyMCArMTIyLDIyIEBACiAgICAgQVNTRVJU
KG1fcGFnZVByb3h5KTsKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyAgICBpZiAo
IWRlc2t0b3BNb2RlKQorICAgICAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIgPSBhZG9wdFB0
cihuZXcgUGFnZVZpZXdwb3J0Q29udHJvbGxlcihtX3BhZ2VQcm94eS5nZXQoKSwgbV9wYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50LmdldCgpKSk7CiAgICAgbV9wYWdlUHJveHktPnBhZ2VHcm91
cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCh0cnVl
KTsKICAgICBtX3BhZ2VQcm94eS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCktPnNldEZvcmNl
Q29tcG9zaXRpbmdNb2RlKHRydWUpOworICAgIGlmIChtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIp
CisgICAgICAgIG1fcGFnZVByb3h5LT5zZXRVc2VGaXhlZExheW91dCh0cnVlKTsKKwogI2lmIEVO
QUJMRShXRUJHTCkKICAgICBtX3BhZ2VQcm94eS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCkt
PnNldFdlYkdMRW5hYmxlZCh0cnVlKTsKICNlbmRpZgotICAgIG1fcGFnZVByb3h5LT5zZXRVc2VG
aXhlZExheW91dCh0cnVlKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGRlc2t0b3BNb2RlKTsK
ICNlbmRpZgogCiAgICAgbV9wYWdlUHJveHktPmluaXRpYWxpemVXZWJQYWdlKCk7CiAKLSNpZiBV
U0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICBtX3BhZ2VDbGllbnQtPnNldFBhZ2VWaWV3cG9y
dENvbnRyb2xsZXIobV9wYWdlVmlld3BvcnRDb250cm9sbGVyLmdldCgpKTsKLSNlbmRpZgotCiAj
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIG1fcGFnZVByb3h5LT5mdWxsU2NyZWVuTWFu
YWdlcigpLT5zZXRXZWJWaWV3KG1fdmlldyk7CiAgICAgbV9wYWdlUHJveHktPnBhZ2VHcm91cCgp
LT5wcmVmZXJlbmNlcygpLT5zZXRGdWxsU2NyZWVuRW5hYmxlZCh0cnVlKTsKQEAgLTMxNSw4ICsz
MTYsNTEgQEAKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKIHZvaWQgRXdrVmlld0ltcGw6
OmluZm9ybUxvYWRDb21taXR0ZWQoKQogewotICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+
ZGlkQ29tbWl0TG9hZCgpOworICAgIGlmIChtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIpCisgICAg
ICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ29tbWl0TG9hZCgpOworICAgIGVsc2UK
KyAgICAgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LT5kaWRDaGFuZ2VWaXNpYmxl
Q29udGVudHMoKTsKIH0KKwordm9pZCBFd2tWaWV3SW1wbDo6ZGlkQ2hhbmdlVmlld3BvcnRBdHRy
aWJ1dGVzKGNvbnN0IFZpZXdwb3J0QXR0cmlidXRlcyYgYXR0cikKK3sKKyAgICBpZiAobV9wYWdl
Vmlld3BvcnRDb250cm9sbGVyKQorICAgICAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPmRp
ZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcyhhdHRyKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC0+ZGlkQ2hhbmdlVmlzaWJsZUNvbnRlbnRzKCk7Cit9
CisKK3ZvaWQgRXdrVmlld0ltcGw6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IEludFBvaW50
JiBwb3NpdGlvbikKK3sKKyAgICBpZiAobV9wYWdlVmlld3BvcnRDb250cm9sbGVyKQorICAgICAg
ICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKHBvc2l0aW9u
KTsKKyAgICBlbHNlCisgICAgICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC0+ZGlk
Q2hhbmdlVmlzaWJsZUNvbnRlbnRzKCk7Cit9CisKK3ZvaWQgRXdrVmlld0ltcGw6OmRpZENoYW5n
ZUNvbnRlbnRzU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIGlmIChtX3BhZ2VWaWV3
cG9ydENvbnRyb2xsZXIpCisgICAgICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hh
bmdlQ29udGVudHNTaXplKHNpemUpOworICAgIGVsc2UKKyAgICAgICAgbV9wYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50LT5kaWRDaGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7Cit9CisKK3ZvaWQg
RXdrVmlld0ltcGw6OmRpZFJlbmRlckZyYW1lKGNvbnN0IEludFNpemUmIGNvbnRlbnRzU2l6ZSwg
Y29uc3QgSW50UmVjdCYgY292ZXJlZFJlY3QpCit7CisgICAgaWYgKG1fcGFnZVZpZXdwb3J0Q29u
dHJvbGxlcikKKyAgICAgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRSZW5kZXJGcmFt
ZShjb250ZW50c1NpemUsIGNvdmVyZWRSZWN0KTsKKyAgICBlbHNlCisgICAgICAgIG1fcGFnZVZp
ZXdwb3J0Q29udHJvbGxlckNsaWVudC0+ZGlkQ2hhbmdlVmlzaWJsZUNvbnRlbnRzKCk7Cit9CisK
K3ZvaWQgRXdrVmlld0ltcGw6OnBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpCit7CisgICAg
aWYgKG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcikKKyAgICAgICAgbV9wYWdlVmlld3BvcnRDb250
cm9sbGVyLT5wYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKTsKKyAgICBlbHNlCisgICAgICAg
IG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC0+ZGlkQ2hhbmdlVmlzaWJsZUNvbnRlbnRz
KCk7Cit9CiAjZW5kaWYKIAogSW50U2l6ZSBFd2tWaWV3SW1wbDo6c2l6ZSgpIGNvbnN0CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCShyZXZp
c2lvbiAxMzMwNzgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0Niw3ICs1NDYsNyBAQAogICAgIHJldHVybiBzbWFy
dDsKIH0KIAotc3RhdGljIGlubGluZSBFdmFzX09iamVjdCogY3JlYXRlRXdrVmlldyhFdmFzKiBj
YW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0LCBQYXNzUmVmUHRyPEV3a19Db250ZXh0PiBjb250ZXh0
LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYgPSAwKQorc3RhdGljIGlubGluZSBFdmFzX09i
amVjdCogY3JlYXRlRXdrVmlldyhFdmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0LCBQYXNz
UmVmUHRyPEV3a19Db250ZXh0PiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYg
PSAwLCBib29sIGRlc2t0b3BNb2RlID0gZmFsc2UpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKGNhbnZhcywgMCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHNtYXJ0LCAwKTsKQEAgLTU2Myw3ICs1NjMsNyBAQAogCiAgICAgQVNTRVJUKCFzbWFydERh
dGEtPnByaXYpOwogICAgIFJlZlB0cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCA9IHBhZ2VHcm91
cFJlZiA/IHRvSW1wbChwYWdlR3JvdXBSZWYpIDogV2ViUGFnZUdyb3VwOjpjcmVhdGUoKTsKLSAg
ICBzbWFydERhdGEtPnByaXYgPSBuZXcgRXdrVmlld0ltcGwoZXdrVmlldywgY29udGV4dCwgcGFn
ZUdyb3VwKTsKKyAgICBzbWFydERhdGEtPnByaXYgPSBuZXcgRXdrVmlld0ltcGwoZXdrVmlldywg
Y29udGV4dCwgcGFnZUdyb3VwLCBkZXNrdG9wTW9kZSk7CiAKICAgICByZXR1cm4gZXdrVmlldzsK
IH0KQEAgLTU3NCw3ICs1NzQsNyBAQAogICovCiBFdmFzX09iamVjdCogZXdrX3ZpZXdfYmFzZV9h
ZGQoRXZhcyogY2FudmFzLCBXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYg
cGFnZUdyb3VwUmVmKQogewotICAgIHJldHVybiBjcmVhdGVFd2tWaWV3KGNhbnZhcywgY3JlYXRl
RXdrVmlld1NtYXJ0Q2xhc3MoKSwgRXdrX0NvbnRleHQ6OmNyZWF0ZShjb250ZXh0UmVmKSwgcGFn
ZUdyb3VwUmVmKTsKKyAgICByZXR1cm4gY3JlYXRlRXdrVmlldyhjYW52YXMsIGNyZWF0ZUV3a1Zp
ZXdTbWFydENsYXNzKCksIEV3a19Db250ZXh0OjpjcmVhdGUoY29udGV4dFJlZiksIHBhZ2VHcm91
cFJlZiwgdHJ1ZSk7CiB9CiAKIEV2YXNfT2JqZWN0KiBld2tfdmlld19zbWFydF9hZGQoRXZhcyog
Y2FudmFzLCBFdmFzX1NtYXJ0KiBzbWFydCwgRXdrX0NvbnRleHQqIGNvbnRleHQpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAkocmV2
aXNpb24gMTMzMDc4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50
SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDEwICs0NCw2IEBACiAjaW5jbHVkZSAiZXdr
X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmlldy5oIgogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJ
TkdfU1RPUkUpCi0jaW5jbHVkZSAiUGFnZVZpZXdwb3J0Q29udHJvbGxlci5oIgotI2VuZGlmCi0K
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIEV3a1ZpZXdDYWxsYmFj
a3M7CiAKQEAgLTE2OSw3ICsxNjUsNyBAQAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdl
Vmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYgYXR0
cikKIHsKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICBtX3BhZ2VWaWV3cG9ydENv
bnRyb2xsZXItPmRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcyhhdHRyKTsKKyAgICBtX3ZpZXdJ
bXBsLT5kaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMoYXR0cik7CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShhdHRyKTsKICNlbmRpZgpAQCAtMzI5LDE0ICszMjUsMTQgQEAKICNpZiBVU0UoVElM
RURfQkFDS0lOR19TVE9SRSkKIHZvaWQgUGFnZUNsaWVudEltcGw6OnBhZ2VEaWRSZXF1ZXN0U2Ny
b2xsKGNvbnN0IEludFBvaW50JiBwb3NpdGlvbikKIHsKLSAgICBtX3BhZ2VWaWV3cG9ydENvbnRy
b2xsZXItPnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKHBvc2l0aW9uKTsKKyAgICBtX3ZpZXdJbXBsLT5w
YWdlRGlkUmVxdWVzdFNjcm9sbChwb3NpdGlvbik7CiB9CiAjZW5kaWYKIAogdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNp
emUpCiB7CiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgbV9wYWdlVmlld3BvcnRD
b250cm9sbGVyLT5kaWRDaGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7CisgICAgbV92aWV3SW1wbC0+
ZGlkQ2hhbmdlQ29udGVudHNTaXplKHNpemUpOwogI2Vsc2UKICAgICBtX3ZpZXdJbXBsLT5pbmZv
cm1Db250ZW50c1NpemVDaGFuZ2Uoc2l6ZSk7CiAjZW5kaWYKQEAgLTM0NSwxMiArMzQxLDEyIEBA
CiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRS
ZW5kZXJGcmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KQogewotICAgIG1fcGFnZVZpZXdwb3J0Q29udHJv
bGxlci0+ZGlkUmVuZGVyRnJhbWUoY29udGVudHNTaXplLCBjb3ZlcmVkUmVjdCk7CisgICAgbV92
aWV3SW1wbC0+ZGlkUmVuZGVyRnJhbWUoY29udGVudHNTaXplLCBjb3ZlcmVkUmVjdCk7CiB9CiAK
IHZvaWQgUGFnZUNsaWVudEltcGw6OnBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpCiB7Ci0g
ICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5wYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHko
KTsKKyAgICBtX3ZpZXdJbXBsLT5wYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKTsKIH0KICNl
bmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENv
bnRyb2xsZXJDbGllbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5jcHAJKHJldmlzaW9uIDEz
MzA3OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDE5ICs3NywzMiBAQAogdm9p
ZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjp1cGRhdGVWaWV3cG9ydFNpemUoY29u
c3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQogewogICAgIG1fdmlld3BvcnRTaXplID0gdmlld3Bv
cnRTaXplOwotICAgIG1fdmlld0ltcGwtPnBhZ2UoKS0+c2V0Vmlld3BvcnRTaXplKHZpZXdwb3J0
U2l6ZSk7Ci0gICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRDaGFuZ2VWaWV3cG9ydFNp
emUodmlld3BvcnRTaXplKTsKKyAgICBpZiAobV9wYWdlVmlld3BvcnRDb250cm9sbGVyKQorICAg
ICAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPmRpZENoYW5nZVZpZXdwb3J0U2l6ZSh2aWV3
cG9ydFNpemUpOworICAgIGVsc2UKKyAgICAgICAgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChtX3Nj
cm9sbFBvc2l0aW9uLCBtX3NjYWxlRmFjdG9yLCBGbG9hdFBvaW50KCkpOwogfQogCiB2b2lkIFBh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNldFZpc2libGVDb250ZW50c1JlY3QoY29u
c3QgSW50UG9pbnQmIG5ld1Njcm9sbFBvc2l0aW9uLCBmbG9hdCBuZXdTY2FsZSwgY29uc3QgRmxv
YXRQb2ludCYgLyp0cmFqZWN0b3J5Ki8pCiB7CiAgICAgbV9zY2FsZUZhY3RvciA9IG5ld1NjYWxl
OwogICAgIG1fc2Nyb2xsUG9zaXRpb24gPSBuZXdTY3JvbGxQb3NpdGlvbjsKLSAgICBtX3BhZ2VW
aWV3cG9ydENvbnRyb2xsZXItPmRpZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eShtX3Njcm9sbFBv
c2l0aW9uLCBtX3NjYWxlRmFjdG9yLCBGbG9hdFBvaW50KCkpOworICAgIGlmIChtX3BhZ2VWaWV3
cG9ydENvbnRyb2xsZXIpCisgICAgICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hh
bmdlQ29udGVudHNWaXNpYmlsaXR5KG1fc2Nyb2xsUG9zaXRpb24sIG1fc2NhbGVGYWN0b3IsIEZs
b2F0UG9pbnQoKSk7CisgICAgZWxzZSB7CisgICAgICAgIEZsb2F0UmVjdCBtYXBSZWN0VG9XZWJD
b250ZW50ID0gRmxvYXRSZWN0KG5ld1Njcm9sbFBvc2l0aW9uLCBtX3ZpZXdwb3J0U2l6ZSk7Cisg
ICAgICAgIG1hcFJlY3RUb1dlYkNvbnRlbnQuc2NhbGUoMSAvIG1fc2NhbGVGYWN0b3IpOworICAg
ICAgICBkcmF3aW5nQXJlYSgpLT5zZXRWaXNpYmxlQ29udGVudHNSZWN0KGVuY2xvc2luZ0ludFJl
Y3QobWFwUmVjdFRvV2ViQ29udGVudCksIG1fc2NhbGVGYWN0b3IsIEZsb2F0UG9pbnQoKSk7Cisg
ICAgfQogfQogCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRpZENoYW5n
ZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQogeworICAgIGlmICgh
bV9wYWdlVmlld3BvcnRDb250cm9sbGVyKSB7CisgICAgICAgIEZsb2F0UmVjdCBtYXBSZWN0VG9X
ZWJDb250ZW50ID0gRmxvYXRSZWN0KG1fc2Nyb2xsUG9zaXRpb24sIG1fdmlld3BvcnRTaXplKTsK
KyAgICAgICAgbWFwUmVjdFRvV2ViQ29udGVudC5zY2FsZSgxIC8gbV9zY2FsZUZhY3Rvcik7Cisg
ICAgICAgIGRyYXdpbmdBcmVhKCktPmxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkoKS0+c2V0Q29u
dGVudHNTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkp
KTsKKyAgICB9CiAgICAgbV9jb250ZW50c1NpemUgPSBzaXplOwogICAgIEludFJlY3QgcmVjdCA9
IEludFJlY3QoSW50UG9pbnQoKSwgbV92aWV3cG9ydFNpemUpOwogICAgIG1fdmlld0ltcGwtPnJl
ZHJhd1JlZ2lvbihyZWN0KTsKQEAgLTEwOSw2ICsxMjIsNyBAQAogCiB2b2lkIFBhZ2VWaWV3cG9y
dENvbnRyb2xsZXJDbGllbnRFZmw6OmRpZFJlc3VtZUNvbnRlbnQoKQogeworICAgIEFTU0VSVCht
X3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIpOwogICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+
ZGlkQ2hhbmdlQ29udGVudHNWaXNpYmlsaXR5KG1fc2Nyb2xsUG9zaXRpb24sIG1fc2NhbGVGYWN0
b3IpOwogfQogCkBAIC0xMjAsNiArMTM0LDcgQEAKIAogdm9pZCBQYWdlVmlld3BvcnRDb250cm9s
bGVyQ2xpZW50RWZsOjpkaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMoKQogeworICAgIEFTU0VS
VChtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIpOwogfQogCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRy
b2xsZXJDbGllbnRFZmw6OnNldENvbnRyb2xsZXIoUGFnZVZpZXdwb3J0Q29udHJvbGxlciogcGFn
ZVZpZXdwb3J0Q29udHJvbGxlcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
UGFnZUNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1BhZ2VDbGllbnRJbXBsLmgJKHJldmlzaW9uIDEzMzA3OCkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCAr
MzQsNiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgUGFnZVZpZXdwb3J0Q29udHJv
bGxlcjsKLQogY2xhc3MgUGFnZUNsaWVudEltcGwgOiBwdWJsaWMgUGFnZUNsaWVudCB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8UGFnZUNsaWVudEltcGw+IGNyZWF0ZShFd2tWaWV3
SW1wbCogdmlld0ltcGwpCkBAIC00NSw5ICs0Myw2IEBACiAgICAgflBhZ2VDbGllbnRJbXBsKCk7
CiAKICAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwoKSBjb25zdDsKLSNpZiBVU0UoVElMRURfQkFD
S0lOR19TVE9SRSkKLSAgICB2b2lkIHNldFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIoUGFnZVZpZXdw
b3J0Q29udHJvbGxlciogY29udHJvbGxlcikgeyBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIgPSBj
b250cm9sbGVyOyB9Ci0jZW5kaWYKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBQYWdlQ2xpZW50
SW1wbChFd2tWaWV3SW1wbCopOwpAQCAtMTI5LDkgKzEyNCw2IEBACiBwcml2YXRlOgogICAgIEV3
a1ZpZXdJbXBsKiBtX3ZpZXdJbXBsOwogICAgIERlZmF1bHRVbmRvQ29udHJvbGxlciBtX3VuZG9D
b250cm9sbGVyOwotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAgIFBhZ2VWaWV3cG9y
dENvbnRyb2xsZXIqIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcjsKLSNlbmRpZgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzMwNzgpCisrKyBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NyBAQAor
MjAxMi0xMC0zMSAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBpbnRlbC5jb20+CisKKyAgICAg
ICAgW0VGTF1bV0syXSBBbGxvdyB1c2luZyBBQ0NFTEVSQVRFRF9DT01QT1NJVElORyB3aXRob3V0
IENPT1JESU5BVEVEX0dSQVBISUNTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDA2NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNYWtlIGEgZGlzdGluY3Rpb24gYmV0d2VlbiBjYWxsaW5nIGV3a192aWV3
X2Jhc2VfYWRkIGFuZCBld2tfdmlld19zbWFydF9hZGQuCisgICAgICAgIENhbGxpbmcgZXdrX3Zp
ZXdfYmFzZV9hZGQgY3JlYXRlcyBhIGRlc2t0b3Agc3R5bGUgdmlldywgdGhhdCBkb2VzIG5vdCBz
dXBwb3J0CisgICAgICAgIGZpeGVkIGxheW91dCBzaXplLCB3aGlsZSBjYWxsaW5nIGV3a192aWV3
X3NtYXJ0X2FkZCBkb2VzIHN1cHBvcnQgZml4ZWQgbGF5b3V0IHNpemUuCisgICAgICAgIEFzIGEg
cmVzdWx0LCBXZWJLaXRUZXN0UnVubmVyIGFuZCB0aGUgaW5zcGVjdG9yIHdpbmRvdyBkbyBub3Qg
c3VwcG9ydAorICAgICAgICBmaXhlZCBsYXlvdXQgc2l6ZSwgd2hpbGUgTWluaUJyb3dzZXIgZG9l
cy4gVGhpcyBjaGFuZ2UgYWxsb3dzIG1hbnkgRHVtcEFzVGV4dAorICAgICAgICBsYXlvdXQgdGVz
dHMgdG8gcGFzcyB3aXRob3V0IG1vZGlmaWNhdGlvbiwgd2hlbiBBQyBpcyBlbmFibGVkLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwOgorICAgICAgICAoRXdr
Vmlld0ltcGw6OkV3a1ZpZXdJbXBsKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjppbmZvcm1Mb2Fk
Q29tbWl0dGVkKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpkaWRDaGFuZ2VWaWV3cG9ydEF0dHJp
YnV0ZXMpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKToKKyAg
ICAgICAgKEV3a1ZpZXdJbXBsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUpOgorICAgICAgICAoRXdr
Vmlld0ltcGw6OmRpZFJlbmRlckZyYW1lKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpwYWdlVHJh
bnNpdGlvblZpZXdwb3J0UmVhZHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXdJbXBsLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChjcmVhdGVF
d2tWaWV3KToKKyAgICAgICAgKGV3a192aWV3X2Jhc2VfYWRkKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsOjpwYWdlRGlkUmVxdWVzdFNjcm9sbCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUpOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Q2xpZW50SW1wbDo6ZGlkUmVuZGVyRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50
SW1wbDo6cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
ZWZsL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoUGFnZUNs
aWVudEltcGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRFZmw6OnVwZGF0ZVZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3
cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNldFZpc2libGVDb250ZW50c1JlY3QpOgorICAgICAg
ICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaWRDaGFuZ2VDb250
ZW50c1NpemUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
RWZsOjpkaWRSZXN1bWVDb250ZW50KToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29u
dHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKToKKwogMjAxMi0x
MC0zMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIENvbnZlcnQgdGhl
IHJlc3Qgb2YgdGhlIGVuY29kZXJzIHRvIHRha2UgdGhlIGVuY29kZXIgYXMgYSByZWZlcmVuY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171953</attachid>
            <date>2012-11-01 16:41:54 -0700</date>
            <delta_ts>2012-11-02 05:02:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>100674.patch</filename>
            <type>text/plain</type>
            <size>23023</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMzIyOSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBACisyMDEyLTExLTAxICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFsbG93
IHVzaW5nIEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HIHdpdGhvdXQgQ09PUkRJTkFURURfR1JBUEhJ
Q1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDY3
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ug
YSBkaXN0aW5jdGlvbiBiZXR3ZWVuIGNhbGxpbmcgZXdrX3ZpZXdfYmFzZV9hZGQgYW5kIGV3a192
aWV3X3NtYXJ0X2FkZC4KKyAgICAgICAgQ2FsbGluZyBld2tfdmlld19iYXNlX2FkZCBjcmVhdGVz
IGEgZGVza3RvcCBzdHlsZSB2aWV3LCB0aGF0IGRvZXMgbm90IHN1cHBvcnQKKyAgICAgICAgZml4
ZWQgbGF5b3V0IHNpemUsIHdoaWxlIGNhbGxpbmcgZXdrX3ZpZXdfc21hcnRfYWRkIGRvZXMgc3Vw
cG9ydCBmaXhlZCBsYXlvdXQgc2l6ZS4KKyAgICAgICAgQXMgYSByZXN1bHQsIFdlYktpdFRlc3RS
dW5uZXIgYW5kIHRoZSBpbnNwZWN0b3Igd2luZG93IGRvIG5vdCBzdXBwb3J0CisgICAgICAgIGZp
eGVkIGxheW91dCBzaXplLCB3aGlsZSBNaW5pQnJvd3NlciBkb2VzLiBUaGlzIGNoYW5nZSBhbGxv
d3MgbWFueSBEdW1wQXNUZXh0CisgICAgICAgIGxheW91dCB0ZXN0cyB0byBwYXNzIHdpdGhvdXQg
bW9kaWZpY2F0aW9uLCB3aGVuIEFDIGlzIGVuYWJsZWQuCisKKworICAgICAgICAqIFBsYXRmb3Jt
RWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcDoK
KyAgICAgICAgKEV3a1ZpZXdJbXBsOjpFd2tWaWV3SW1wbCk6CisgICAgICAgIChFd2tWaWV3SW1w
bDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6ZGlzcGxheVRpbWVyRmlyZWQp
OgorICAgICAgICAoRXdrVmlld0ltcGw6OmluZm9ybUxvYWRDb21taXR0ZWQpOgorICAgICAgICAo
RXdrVmlld0ltcGw6OmRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcyk6CisgICAgICAgIChFd2tW
aWV3SW1wbDo6cGFnZURpZFJlcXVlc3RTY3JvbGwpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmRp
ZENoYW5nZUNvbnRlbnRzU2l6ZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6ZGlkUmVuZGVyRnJh
bWUpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSk6
CisgICAgICAgIChFd2tWaWV3SW1wbDo6dXBkYXRlVmlld3BvcnRTaXplKToKKyAgICAgICAgKEV3
a1ZpZXdJbXBsOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChFd2tWaWV3SW1wbCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6c2NhbGVGYWN0b3IpOgor
ICAgICAgICAoRXdrVmlld0ltcGw6OnNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3SW1wbExlZ2FjeS5jcHA6IEFkZGVkLgorICAgICAgICAoRXdrVmll
d0ltcGxMZWdhY3k6OkV3a1ZpZXdJbXBsTGVnYWN5KToKKyAgICAgICAgKEV3a1ZpZXdJbXBsTGVn
YWN5OjppbmZvcm1Mb2FkQ29tbWl0dGVkKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsTGVnYWN5Ojpk
aWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMpOgorICAgICAgICAoRXdrVmlld0ltcGxMZWdhY3k6
OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsTGVnYWN5OjpkaWRD
aGFuZ2VDb250ZW50c1NpemUpOgorICAgICAgICAoRXdrVmlld0ltcGxMZWdhY3k6OmRpZFJlbmRl
ckZyYW1lKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsTGVnYWN5OjpwYWdlVHJhbnNpdGlvblZpZXdw
b3J0UmVhZHkpOgorICAgICAgICAoRXdrVmlld0ltcGxMZWdhY3k6OnVwZGF0ZVZpZXdwb3J0U2l6
ZSk6CisgICAgICAgIChFd2tWaWV3SW1wbExlZ2FjeTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGxMZWdhY3kuaDogQWRkZWQuCisgICAgICAgIChF
d2tWaWV3SW1wbExlZ2FjeSk6CisgICAgICAgIChFd2tWaWV3SW1wbExlZ2FjeTo6c2NhbGVGYWN0
b3IpOgorICAgICAgICAoRXdrVmlld0ltcGxMZWdhY3k6OnNjcm9sbFBvc2l0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgICh0b1dlYkNvbnRl
bnRUcmFuc2Zvcm0pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZSk6CisgICAg
ICAgIChjcmVhdGVFd2tWaWV3KToKKyAgICAgICAgKGV3a192aWV3X2Jhc2VfYWRkKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyk6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpwYWdlRGlkUmVxdWVzdFNjcm9sbCk6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUpOgorICAgICAgICAo
V2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlkUmVuZGVyRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbDo6cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoUGFnZUNsaWVudEltcGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9y
dENvbnRyb2xsZXJDbGllbnRFZmw6OnVwZGF0ZVZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNldFZpc2libGVDb250ZW50c1Jl
Y3QpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpk
aWRDaGFuZ2VDb250ZW50c1NpemUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250
cm9sbGVyQ2xpZW50RWZsOjpkaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMpOgorCiAyMDEyLTEx
LTAxICBBbGV4YW5kcnUgQ2hpY3VsaXRhICA8YWNoaWN1QGFkb2JlLmNvbT4KIAogICAgICAgICBb
Q1NTIFNoYWRlcnNdIE1vdmUgTWVzaEJveFR5cGUgb3V0IG9mIEN1c3RvbUZpbHRlck9wZXJhdGlv
bgpJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UJKHJldmlzaW9uIDEzMzE3MikKKysrIFNv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0
Miw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9z
b3VwL1dLU291cFJlcXVlc3RNYW5hZ2VyLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvRXdr
Vmlld0ltcGwuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGxMZWdhY3kuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvRXZhc0dMQ29udGV4dC5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL2VmbC9FdmFzR0xTdXJmYWNlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNr
X2ZvcndhcmRfbGlzdC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0V3a1ZpZXdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDEzMzE3MikKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTA3LDEwICsxMDcsNiBAQCBFd2tWaWV3SW1wbDo6RXdrVmlld0ltcGwoRXZhc19PYmplY3QqIHZp
CiAgICAgLCBtX2ZpbmRDbGllbnQoRmluZENsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQogICAgICwg
bV9mb3JtQ2xpZW50KEZvcm1DbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fYmFja0Zv
cndhcmRMaXN0KEV3a19CYWNrX0ZvcndhcmRfTGlzdDo6Y3JlYXRlKHRvQVBJKG1fcGFnZVByb3h5
LT5iYWNrRm9yd2FyZExpc3QoKSkpKQotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAg
ICwgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50KFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKLSAgICAsIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcihh
ZG9wdFB0cihuZXcgUGFnZVZpZXdwb3J0Q29udHJvbGxlcihtX3BhZ2VQcm94eS5nZXQoKSwgbV9w
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LmdldCgpKSkpCi0jZW5kaWYKICAgICAsIG1fc2V0
dGluZ3MoRXdrX1NldHRpbmdzOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2N1cnNvckdyb3VwKDAp
CiAgICAgLCBtX21vdXNlRXZlbnRzRW5hYmxlZChmYWxzZSkKQEAgLTEzMCwxNSArMTI2LDEwIEBA
IEV3a1ZpZXdJbXBsOjpFd2tWaWV3SW1wbChFdmFzX09iamVjdCogdmkKICNpZiBFTkFCTEUoV0VC
R0wpCiAgICAgbV9wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRXZWJH
TEVuYWJsZWQodHJ1ZSk7CiAjZW5kaWYKLSAgICBtX3BhZ2VQcm94eS0+c2V0VXNlRml4ZWRMYXlv
dXQodHJ1ZSk7CiAjZW5kaWYKIAogICAgIG1fcGFnZVByb3h5LT5pbml0aWFsaXplV2ViUGFnZSgp
OwogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgbV9wYWdlQ2xpZW50LT5zZXRQ
YWdlVmlld3BvcnRDb250cm9sbGVyKG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci5nZXQoKSk7Ci0j
ZW5kaWYKLQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBtX3BhZ2VQcm94eS0+ZnVs
bFNjcmVlbk1hbmFnZXIoKS0+c2V0V2ViVmlldyhtX3ZpZXcpOwogICAgIG1fcGFnZVByb3h5LT5w
YWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0RnVsbFNjcmVlbkVuYWJsZWQodHJ1ZSk7CkBA
IC0xNjcsNiArMTU4LDE1IEBAIEV3a1ZpZXdJbXBsOjp+RXdrVmlld0ltcGwoKQogICAgIEV3a1Zp
ZXdJbXBsOjpyZW1vdmVGcm9tUGFnZVZpZXdNYXAodGhpcyk7CiB9CiAKK3ZvaWQgRXdrVmlld0lt
cGw6OmluaXRpYWxpemUoKQoreworI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorICAgIG1f
cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudCA9IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnRFZmw6OmNyZWF0ZSh0aGlzKTsKKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIgPSBhZG9w
dFB0cihuZXcgUGFnZVZpZXdwb3J0Q29udHJvbGxlcihtX3BhZ2VQcm94eS5nZXQoKSwgbV9wYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50LmdldCgpKSk7CisgICAgbV9wYWdlUHJveHktPnNldFVz
ZUZpeGVkTGF5b3V0KHRydWUpOworI2VuZGlmCit9CisKIEV3a19WaWV3X1NtYXJ0X0RhdGEqIEV3
a1ZpZXdJbXBsOjpzbWFydERhdGEoKQogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxFd2tfVmll
d19TbWFydF9EYXRhKj4oZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQobV92aWV3KSk7CkBAIC0y
NDcsOCArMjQ3LDggQEAgdm9pZCBFd2tWaWV3SW1wbDo6ZGlzcGxheVRpbWVyRmlyZWQoVGltZQog
ICAgIC8vIFdlIGFyZSBzdXBwb3NlZCB0byBjbGlwIHRvIHRoZSBhY3R1YWwgdmlld3BvcnQsIG5v
dGhpbmcgbGVzcy4KICAgICBJbnRSZWN0IHZpZXdwb3J0KHNkLT52aWV3LngsIHNkLT52aWV3Lnks
IHNkLT52aWV3LncsIHNkLT52aWV3LmgpOwogCi0gICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24g
PSBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQtPnNjcm9sbFBvc2l0aW9uKCk7Ci0gICAg
ZmxvYXQgc2NhbGVGYWN0b3IgPSBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQtPnNjYWxl
RmFjdG9yKCk7CisgICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSB0aGlzLT5zY3JvbGxQb3Np
dGlvbigpOworICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gdGhpcy0+c2NhbGVGYWN0b3IoKTsKIAog
ICAgIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeDsKICAgICBtYXRyaXgudHJh
bnNsYXRlKHZpZXdwb3J0LngoKSwgdmlld3BvcnQueSgpKTsKQEAgLTMyNiw4ICszMjYsNDYgQEAg
dm9pZCBFd2tWaWV3SW1wbDo6c2V0SW1hZ2VEYXRhKHZvaWQqIGltYQogI2lmIFVTRShUSUxFRF9C
QUNLSU5HX1NUT1JFKQogdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtTG9hZENvbW1pdHRlZCgpCiB7
CisgICAgQVNTRVJUKG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcik7CiAgICAgbV9wYWdlVmlld3Bv
cnRDb250cm9sbGVyLT5kaWRDb21taXRMb2FkKCk7CiB9CisKK3ZvaWQgRXdrVmlld0ltcGw6OmRp
ZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcyhjb25zdCBWaWV3cG9ydEF0dHJpYnV0ZXMmIGF0dHIp
Cit7CisgICAgQVNTRVJUKG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcik7CisgICAgbV9wYWdlVmll
d3BvcnRDb250cm9sbGVyLT5kaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMoYXR0cik7Cit9CisK
K3ZvaWQgRXdrVmlld0ltcGw6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IEludFBvaW50JiBw
b3NpdGlvbikKK3sKKyAgICBBU1NFUlQobV9wYWdlVmlld3BvcnRDb250cm9sbGVyKTsKKyAgICBt
X3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKHBvc2l0aW9uKTsK
K30KKwordm9pZCBFd2tWaWV3SW1wbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IEludFNp
emUmIHNpemUpCit7CisgICAgQVNTRVJUKG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcik7CisgICAg
bV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRDaGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7Cit9
CisKK3ZvaWQgRXdrVmlld0ltcGw6OmRpZFJlbmRlckZyYW1lKGNvbnN0IEludFNpemUmIGNvbnRl
bnRzU2l6ZSwgY29uc3QgSW50UmVjdCYgY292ZXJlZFJlY3QpCit7CisgICAgQVNTRVJUKG1fcGFn
ZVZpZXdwb3J0Q29udHJvbGxlcik7CisgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRS
ZW5kZXJGcmFtZShjb250ZW50c1NpemUsIGNvdmVyZWRSZWN0KTsKK30KKwordm9pZCBFd2tWaWV3
SW1wbDo6cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCkKK3sKKyAgICBBU1NFUlQobV9wYWdl
Vmlld3BvcnRDb250cm9sbGVyKTsKKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPnBhZ2VU
cmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpOworfQorCit2b2lkIEV3a1ZpZXdJbXBsOjp1cGRhdGVW
aWV3cG9ydFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmlld3BvcnRTaXplKQoreworICAg
IEFTU0VSVChtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQpOworICAgIG1fcGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudC0+dXBkYXRlVmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7Cit9
CisKICNlbmRpZgogCiBJbnRTaXplIEV3a1ZpZXdJbXBsOjpzaXplKCkgY29uc3QKQEAgLTUxNSw3
ICs1NTMsNyBAQCBib29sIEV3a1ZpZXdJbXBsOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnQtPnNldFJlbmRlcmVyQWN0aXZlKHRydWUpOworICAgIHBhZ2UoKS0+ZHJhd2luZ0FyZWEo
KS0+bGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eSgpLT5sYXllclRyZWVSZW5kZXJlcigpLT5zZXRB
Y3RpdmUodHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAkocmV2aXNpb24gMTMzMTcyKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBFd2tWaWV3SW1wbF9oCiAKICNpbmNs
dWRlICJFd2tWaWV3Q2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiUGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudEVmbC5oIgogI2luY2x1ZGUgIlJlZlB0ckVmbC5oIgogI2luY2x1ZGUgIldLRWluYVNo
YXJlZFN0cmluZy5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCkBAIC02NSw2ICs2Niw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbG9yOwogY2xhc3MgQ3Vyc29yOwogY2xhc3Mg
SW50U2l6ZTsKK2NsYXNzIFZpZXdwb3J0QXR0cmlidXRlczsKIH0KIAogY2xhc3MgRXdrX0JhY2tf
Rm9yd2FyZF9MaXN0OwpAQCAtOTIsNyArOTQsNyBAQCB0eXBlZGVmIHN0cnVjdCBFd2tfVmlld19T
bWFydF9EYXRhIEV3a19WCiBjbGFzcyBFd2tWaWV3SW1wbCB7CiBwdWJsaWM6CiAgICAgRXdrVmll
d0ltcGwoRXZhc19PYmplY3QqIHZpZXcsIFBhc3NSZWZQdHI8RXdrX0NvbnRleHQ+IGNvbnRleHQs
IFBhc3NSZWZQdHI8V2ViS2l0OjpXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCk7Ci0gICAgfkV3a1Zp
ZXdJbXBsKCk7CisgICAgdmlydHVhbCB+RXdrVmlld0ltcGwoKTsKIAogICAgIHN0YXRpYyBFd2tW
aWV3SW1wbCogZnJvbUV2YXNPYmplY3QoY29uc3QgRXZhc19PYmplY3QqIHZpZXcpOwogCkBAIC0x
NjgsNyArMTcwLDEzIEBAIHB1YmxpYzoKICAgICB9CiAKICNpZiBVU0UoVElMRURfQkFDS0lOR19T
VE9SRSkKLSAgICB2b2lkIGluZm9ybUxvYWRDb21taXR0ZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
aW5mb3JtTG9hZENvbW1pdHRlZCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9y
dEF0dHJpYnV0ZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJiBhdHRyKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIHBvc2l0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZW5kZXJG
cmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGNvdmVyZWRSZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZVRyYW5zaXRpb25W
aWV3cG9ydFJlYWR5KCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZpZXdwb3J0U2l6ZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiB2aWV3cG9ydFNpemUpOwogI2VuZGlmCiAgICAgdm9pZCBpbmZv
cm1Db250ZW50c1NpemVDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSk7CiAgICAg
dW5zaWduZWQgbG9uZyBsb25nIGluZm9ybURhdGFiYXNlUXVvdGFSZWFjaGVkKGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25n
IGxvbmcgY3VycmVudFF1b3RhLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudE9yaWdpblVzYWdl
LCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVuc2lnbmVkIGxvbmcg
bG9uZyBleHBlY3RlZFVzYWdlKTsKQEAgLTE3Niw2ICsxODQsOCBAQCBwdWJsaWM6CiAjaWYgVVNF
KFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVy
Q2xpZW50RWZsKiBwYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50KCkgeyByZXR1cm4gbV9wYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50LmdldCgpOyB9CiAgICAgV2ViS2l0OjpQYWdlVmlld3Bv
cnRDb250cm9sbGVyKiBwYWdlVmlld3BvcnRDb250cm9sbGVyKCkgeyByZXR1cm4gbV9wYWdlVmll
d3BvcnRDb250cm9sbGVyLmdldCgpOyB9CisgICAgdmlydHVhbCBmbG9hdCBzY2FsZUZhY3Rvcigp
IHsgcmV0dXJuIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC0+c2NhbGVGYWN0b3IoKTsg
fQorICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSB7IHJldHVy
biBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQtPnNjcm9sbFBvc2l0aW9uKCk7IH0KICNl
bmRpZgogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBFdmFzX0dMKiBldmFz
R0woKSB7IHJldHVybiBtX2V2YXNHTC5nZXQoKTsgfQpAQCAtMTg2LDggKzE5Niw5IEBAIHB1Ymxp
YzoKIAogICAgIC8vIEZJWE1FOiBuZWVkcyByZWZhY3RvcmluZyAoc3BsaXQgY2FsbGJhY2sgaW52
b2tlKQogICAgIHZvaWQgaW5mb3JtVVJMQ2hhbmdlKCk7CisgICAgdmlydHVhbCB2b2lkIGluaXRp
YWxpemUoKTsKIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgICBpbmxpbmUgRXdrX1ZpZXdfU21h
cnRfRGF0YSogc21hcnREYXRhKCk7CiAgICAgdm9pZCBkaXNwbGF5VGltZXJGaXJlZChXZWJDb3Jl
OjpUaW1lcjxFd2tWaWV3SW1wbD4qKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRXdrVmlld0ltcGxMZWdhY3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsTGVnYWN5LmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsTGVnYWN5LmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAgIENvcHlyaWdodCAoQykgMjAx
MSBTYW1zdW5nIEVsZWN0cm9uaWNzCisgICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9y
YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkV3a1ZpZXdJbXBsTGVnYWN5LmgiCisKKyNpbmNsdWRlICJMYXllclRyZWVDb29yZGlu
YXRvclByb3h5LmgiCisjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCisjaW5jbHVkZSAiZXdrX2Nv
bnRleHRfcHJpdmF0ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CisKK0V3a1ZpZXdJbXBsTGVnYWN5OjpFd2tWaWV3SW1wbExlZ2FjeShFdmFz
X09iamVjdCogdmlldywgUGFzc1JlZlB0cjxFd2tfQ29udGV4dD4gY29udGV4dCwgUGFzc1JlZlB0
cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCkKKyAgICA6IEV3a1ZpZXdJbXBsKHZpZXcsIGNvbnRl
eHQsIHBhZ2VHcm91cCkKKyAgICAsIG1fc2NhbGVGYWN0b3IoMSkKK3sKK30KKworI2lmIFVTRShU
SUxFRF9CQUNLSU5HX1NUT1JFKQordm9pZCBFd2tWaWV3SW1wbExlZ2FjeTo6aW5mb3JtTG9hZENv
bW1pdHRlZCgpCit7CisgICAgdXBkYXRlKCk7Cit9CisKK3ZvaWQgRXdrVmlld0ltcGxMZWdhY3k6
OmRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcyhjb25zdCBWaWV3cG9ydEF0dHJpYnV0ZXMmKQor
eworICAgIHVwZGF0ZSgpOworfQorCit2b2lkIEV3a1ZpZXdJbXBsTGVnYWN5OjpwYWdlRGlkUmVx
dWVzdFNjcm9sbChjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCit7CisgICAgbV9zY3JvbGxQb3Np
dGlvbiA9IHBvc2l0aW9uOworICAgIHVwZGF0ZSgpOworfQorCit2b2lkIEV3a1ZpZXdJbXBsTGVn
YWN5OjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBw
YWdlKCktPmRyYXdpbmdBcmVhKCktPmxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkoKS0+c2V0Q29u
dGVudHNTaXplKEZsb2F0U2l6ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKKyAgICB1
cGRhdGUoKTsKK30KKwordm9pZCBFd2tWaWV3SW1wbExlZ2FjeTo6ZGlkUmVuZGVyRnJhbWUoY29u
c3QgSW50U2l6ZSYsIGNvbnN0IEludFJlY3QmKQoreworICAgIHVwZGF0ZSgpOworfQorCit2b2lk
IEV3a1ZpZXdJbXBsTGVnYWN5OjpwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKQoreworICAg
IHVwZGF0ZSgpOworfQorCit2b2lkIEV3a1ZpZXdJbXBsTGVnYWN5Ojp1cGRhdGVWaWV3cG9ydFNp
emUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmlld3BvcnRTaXplKQoreworICAgIHBhZ2UoKS0+
ZHJhd2luZ0FyZWEoKS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChJbnRSZWN0KG1fc2Nyb2xsUG9z
aXRpb24sIHZpZXdwb3J0U2l6ZSksIG1fc2NhbGVGYWN0b3IsIEZsb2F0UG9pbnQoKSk7Cit9CisK
KyNlbmRpZgorCit2b2lkIEV3a1ZpZXdJbXBsTGVnYWN5Ojppbml0aWFsaXplKCkKK3sKK30KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsTGVnYWN5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0lt
cGxMZWdhY3kuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL0V3a1ZpZXdJbXBsTGVnYWN5LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDkgQEAKKy8q
CisgICBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICAgQ29weXJpZ2h0
IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNp
Zm5kZWYgRXdrVmlld0ltcGxMZWdhY3lfaAorI2RlZmluZSBFd2tWaWV3SW1wbExlZ2FjeV9oCisK
KyNpbmNsdWRlICJFd2tWaWV3SW1wbC5oIgorCitjbGFzcyBFd2tWaWV3SW1wbExlZ2FjeSA6IHB1
YmxpYyBFd2tWaWV3SW1wbCB7CitwdWJsaWM6CisgICAgRXdrVmlld0ltcGxMZWdhY3koRXZhc19P
YmplY3QqIHZpZXcsIFBhc3NSZWZQdHI8RXdrX0NvbnRleHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8
V2ViS2l0OjpXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCk7CisKKyNpZiBVU0UoVElMRURfQkFDS0lO
R19TVE9SRSkKKyAgICB2aXJ0dWFsIHZvaWQgaW5mb3JtTG9hZENvbW1pdHRlZCgpOworICAgIHZp
cnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMoY29uc3QgV2ViQ29yZTo6Vmll
d3BvcnRBdHRyaWJ1dGVzJiBhdHRyKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFJlcXVlc3RT
Y3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZW5kZXJGcmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBj
b250ZW50c1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KTsKKyAgICB2
aXJ0dWFsIHZvaWQgcGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCk7CisgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVZpZXdwb3J0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB2aWV3cG9ydFNp
emUpOworICAgIHZpcnR1YWwgZmxvYXQgc2NhbGVGYWN0b3IoKSB7IHJldHVybiBtX3NjYWxlRmFj
dG9yOyB9CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBzY3JvbGxQb3NpdGlvbigpIHsg
cmV0dXJuIG1fc2Nyb2xsUG9zaXRpb247IH0KKyNlbmRpZgorICAgIHZvaWQgaW5mb3JtQ29udGVu
dHNTaXplQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpOworICAgIHZpcnR1YWwg
dm9pZCBpbml0aWFsaXplKCk7CisKK3ByaXZhdGU6CisgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9z
Y3JvbGxQb3NpdGlvbjsKKyAgICBmbG9hdCBtX3NjYWxlRmFjdG9yOworfTsKKworI2VuZGlmIC8v
IEV3a1ZpZXdJbXBsTGVnYWN5X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5jcHAJKHJldmlzaW9uIDEzMzE3MikKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiAr
MjIsNyBAQAogI2luY2x1ZGUgImV3a192aWV3LmgiCiAKICNpbmNsdWRlICJFd2tWaWV3SW1wbC5o
IgorI2luY2x1ZGUgIkV3a1ZpZXdJbXBsTGVnYWN5LmgiCiAjaW5jbHVkZSAiRmluZENsaWVudEVm
bC5oIgogI2luY2x1ZGUgIkZvcm1DbGllbnRFZmwuaCIKICNpbmNsdWRlICJJbnB1dE1ldGhvZENv
bnRleHRFZmwuaCIKQEAgLTIwNCw5ICsyMDUsOSBAQCBzdGF0aWMgQWZmaW5lVHJhbnNmb3JtIHRv
V2ViQ29udGVudFRyYW5zCiAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgtc21hcnREYXRhLT52aWV3
LngsIC1zbWFydERhdGEtPnZpZXcueSk7CiAKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkK
LSAgICBJbnRQb2ludCBzY3JvbGxQb3MgPSBpbXBsLT5wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xp
ZW50KCktPnNjcm9sbFBvc2l0aW9uKCk7CisgICAgSW50UG9pbnQgc2Nyb2xsUG9zID0gaW1wbC0+
c2Nyb2xsUG9zaXRpb24oKTsKICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKHNjcm9sbFBvcy54KCks
IHNjcm9sbFBvcy55KCkpOwotICAgIHRyYW5zZm9ybS5zY2FsZSgxIC8gaW1wbC0+cGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudCgpLT5zY2FsZUZhY3RvcigpKTsKKyAgICB0cmFuc2Zvcm0uc2Nh
bGUoMSAvIGltcGwtPnNjYWxlRmFjdG9yKCkpOwogI2VuZGlmCiAKICAgICByZXR1cm4gdHJhbnNm
b3JtOwpAQCAtNDM2LDggKzQzNyw4IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jYWxj
dWxhdGUoRXYKICAgICAgICAgICAgIGltcGwtPmNyZWF0ZUdMU3VyZmFjZShJbnRTaXplKHdpZHRo
LCBoZWlnaHQpKTsKICAgICAgICAgfQogI2VuZGlmCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTKQotICAgICAgICBpbXBsLT5wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50KCktPnVwZGF0
ZVZpZXdwb3J0U2l6ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKKyNpZiBVU0UoVElMRURfQkFD
S0lOR19TVE9SRSkKKyAgICAgICAgaW1wbC0+dXBkYXRlVmlld3BvcnRTaXplKEludFNpemUod2lk
dGgsIGhlaWdodCkpOwogI2VuZGlmCiAgICAgfQogfQpAQCAtNTM4LDcgKzUzOSwxMiBAQCBzdGF0
aWMgaW5saW5lIEV2YXNfU21hcnQqIGNyZWF0ZUV3a1ZpZXdTCiAgICAgcmV0dXJuIHNtYXJ0Owog
fQogCi1zdGF0aWMgaW5saW5lIEV2YXNfT2JqZWN0KiBjcmVhdGVFd2tWaWV3KEV2YXMqIGNhbnZh
cywgRXZhc19TbWFydCogc21hcnQsIFBhc3NSZWZQdHI8RXdrX0NvbnRleHQ+IGNvbnRleHQsIFdL
UGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiA9IDApCit0eXBlZGVmIGVudW0geworICAgIExlZ2Fj
eU1vZGUsCisgICAgRml4ZWRMYXlvdXRNb2RlCit9IFdpbmRvd01vZGU7CisKK3N0YXRpYyBpbmxp
bmUgRXZhc19PYmplY3QqIGNyZWF0ZUV3a1ZpZXcoRXZhcyogY2FudmFzLCBFdmFzX1NtYXJ0KiBz
bWFydCwgUGFzc1JlZlB0cjxFd2tfQ29udGV4dD4gY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFn
ZUdyb3VwUmVmID0gMCwgV2luZG93TW9kZSBtb2RlID0gRml4ZWRMYXlvdXRNb2RlKQogewogICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjYW52YXMsIDApOwogICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydCwgMCk7CkBAIC01NTUsOCArNTYxLDExIEBAIHN0
YXRpYyBpbmxpbmUgRXZhc19PYmplY3QqIGNyZWF0ZUV3a1ZpZXcKIAogICAgIEFTU0VSVCghc21h
cnREYXRhLT5wcml2KTsKICAgICBSZWZQdHI8V2ViUGFnZUdyb3VwPiBwYWdlR3JvdXAgPSBwYWdl
R3JvdXBSZWYgPyB0b0ltcGwocGFnZUdyb3VwUmVmKSA6IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKCk7
Ci0gICAgc21hcnREYXRhLT5wcml2ID0gbmV3IEV3a1ZpZXdJbXBsKGV3a1ZpZXcsIGNvbnRleHQs
IHBhZ2VHcm91cCk7Ci0KKyAgICBpZiAobW9kZSA9PSBMZWdhY3lNb2RlKQorICAgICAgICBzbWFy
dERhdGEtPnByaXYgPSBuZXcgRXdrVmlld0ltcGxMZWdhY3koZXdrVmlldywgY29udGV4dCwgcGFn
ZUdyb3VwKTsKKyAgICBlbHNlCisgICAgICAgIHNtYXJ0RGF0YS0+cHJpdiA9IG5ldyBFd2tWaWV3
SW1wbChld2tWaWV3LCBjb250ZXh0LCBwYWdlR3JvdXApOworICAgIHNtYXJ0RGF0YS0+cHJpdi0+
aW5pdGlhbGl6ZSgpOwogICAgIHJldHVybiBld2tWaWV3OwogfQogCkBAIC01NjYsNyArNTc1LDcg
QEAgc3RhdGljIGlubGluZSBFdmFzX09iamVjdCogY3JlYXRlRXdrVmlldwogICovCiBFdmFzX09i
amVjdCogZXdrX3ZpZXdfYmFzZV9hZGQoRXZhcyogY2FudmFzLCBXS0NvbnRleHRSZWYgY29udGV4
dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQogewotICAgIHJldHVybiBjcmVhdGVF
d2tWaWV3KGNhbnZhcywgY3JlYXRlRXdrVmlld1NtYXJ0Q2xhc3MoKSwgRXdrX0NvbnRleHQ6OmNy
ZWF0ZShjb250ZXh0UmVmKSwgcGFnZUdyb3VwUmVmKTsKKyAgICByZXR1cm4gY3JlYXRlRXdrVmll
dyhjYW52YXMsIGNyZWF0ZUV3a1ZpZXdTbWFydENsYXNzKCksIEV3a19Db250ZXh0OjpjcmVhdGUo
Y29udGV4dFJlZiksIHBhZ2VHcm91cFJlZiwgTGVnYWN5TW9kZSk7CiB9CiAKIEV2YXNfT2JqZWN0
KiBld2tfdmlld19zbWFydF9hZGQoRXZhcyogY2FudmFzLCBFdmFzX1NtYXJ0KiBzbWFydCwgRXdr
X0NvbnRleHQqIGNvbnRleHQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Bh
Z2VDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gMTMzMTcyKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDEwICs0NCw2IEBACiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmll
dy5oIgogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0jaW5jbHVkZSAiUGFnZVZpZXdw
b3J0Q29udHJvbGxlci5oIgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNp
bmcgbmFtZXNwYWNlIEV3a1ZpZXdDYWxsYmFja3M7CiAKQEAgLTE2OSw3ICsxNjUsNyBAQCB2b2lk
IFBhZ2VDbGllbnRJbXBsOjpzZXRDdXJzb3JIaWRkZW5VbnRpCiB2b2lkIFBhZ2VDbGllbnRJbXBs
OjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRy
aWJ1dGVzJiBhdHRyKQogewogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAgIG1fcGFn
ZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKGF0dHIpOwor
ICAgIG1fdmlld0ltcGwtPmRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcyhhdHRyKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKGF0dHIpOwogI2VuZGlmCkBAIC0zMjksMTQgKzMyNSwxNCBAQCB2
b2lkIFBhZ2VDbGllbnRJbXBsOjpoYW5kbGVEb3dubG9hZFJlcXVlCiAjaWYgVVNFKFRJTEVEX0JB
Q0tJTkdfU1RPUkUpCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwYWdlRGlkUmVxdWVzdFNjcm9sbChj
b25zdCBJbnRQb2ludCYgcG9zaXRpb24pCiB7Ci0gICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVy
LT5wYWdlRGlkUmVxdWVzdFNjcm9sbChwb3NpdGlvbik7CisgICAgbV92aWV3SW1wbC0+cGFnZURp
ZFJlcXVlc3RTY3JvbGwocG9zaXRpb24pOwogfQogI2VuZGlmCiAKIHZvaWQgUGFnZUNsaWVudElt
cGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQog
ewogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAgIG1fcGFnZVZpZXdwb3J0Q29udHJv
bGxlci0+ZGlkQ2hhbmdlQ29udGVudHNTaXplKHNpemUpOworICAgIG1fdmlld0ltcGwtPmRpZENo
YW5nZUNvbnRlbnRzU2l6ZShzaXplKTsKICNlbHNlCiAgICAgbV92aWV3SW1wbC0+aW5mb3JtQ29u
dGVudHNTaXplQ2hhbmdlKHNpemUpOwogI2VuZGlmCkBAIC0zNDUsMTIgKzM0MSwxMiBAQCB2b2lk
IFBhZ2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VDb250ZW50c1NpCiAjaWYgVVNFKFRJTEVEX0JBQ0tJ
TkdfU1RPUkUpCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRSZW5kZXJGcmFtZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNvdmVy
ZWRSZWN0KQogewotICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkUmVuZGVyRnJhbWUo
Y29udGVudHNTaXplLCBjb3ZlcmVkUmVjdCk7CisgICAgbV92aWV3SW1wbC0+ZGlkUmVuZGVyRnJh
bWUoY29udGVudHNTaXplLCBjb3ZlcmVkUmVjdCk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6
OnBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpCiB7Ci0gICAgbV9wYWdlVmlld3BvcnRDb250
cm9sbGVyLT5wYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKTsKKyAgICBtX3ZpZXdJbXBsLT5w
YWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbC5oCShyZXZpc2lvbiAxMzMx
NzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDYgQEAgY2xhc3MgRXdrVmlld0ltcGw7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1jbGFzcyBQYWdlVmlld3BvcnRDb250cm9sbGVyOwotCiBjbGFzcyBQ
YWdlQ2xpZW50SW1wbCA6IHB1YmxpYyBQYWdlQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc093blB0cjxQYWdlQ2xpZW50SW1wbD4gY3JlYXRlKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkK
QEAgLTQ1LDkgKzQzLDYgQEAgcHVibGljOgogICAgIH5QYWdlQ2xpZW50SW1wbCgpOwogCiAgICAg
RXdrVmlld0ltcGwqIHZpZXdJbXBsKCkgY29uc3Q7Ci0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RP
UkUpCi0gICAgdm9pZCBzZXRQYWdlVmlld3BvcnRDb250cm9sbGVyKFBhZ2VWaWV3cG9ydENvbnRy
b2xsZXIqIGNvbnRyb2xsZXIpIHsgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyID0gY29udHJvbGxl
cjsgfQotI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgUGFnZUNsaWVudEltcGwoRXdr
Vmlld0ltcGwqKTsKQEAgLTEyOSw5ICsxMjQsNiBAQCBwcml2YXRlOgogcHJpdmF0ZToKICAgICBF
d2tWaWV3SW1wbCogbV92aWV3SW1wbDsKICAgICBEZWZhdWx0VW5kb0NvbnRyb2xsZXIgbV91bmRv
Q29udHJvbGxlcjsKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICBQYWdlVmlld3Bv
cnRDb250cm9sbGVyKiBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXI7Ci0jZW5kaWYKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Q
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3Bw
CShyZXZpc2lvbiAxMzMxNzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VW
aWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2
NCw2IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2UKIHZvaWQgUGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6dXBkYXRlVmlld3BvcnRTaXplKGNvbnN0IElu
dFNpemUmIHZpZXdwb3J0U2l6ZSkKIHsKICAgICBtX3ZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6
ZTsKLSAgICBtX3ZpZXdJbXBsLT5wYWdlKCktPnNldFZpZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUp
OwogCiAgICAgQVNTRVJUKG1fY29udHJvbGxlcik7CiAgICAgbV9jb250cm9sbGVyLT5kaWRDaGFu
Z2VWaWV3cG9ydFNpemUodmlld3BvcnRTaXplKTsKQEAgLTEwOSw2ICsxMDgsNyBAQCB2b2lkIFBh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRpCiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29u
dHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKCkKIHsKKyAgICBB
U1NFUlQobV9jb250cm9sbGVyKTsKIH0KIAogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xp
ZW50RWZsOjpzZXRDb250cm9sbGVyKFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIqIGNvbnRyb2xsZXIp
CkluZGV4OiBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQkocmV2aXNpb24gMTMzMTcyKQorKysgU291cmNlL2Nt
YWtlL09wdGlvbnNFZmwuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw2ICsxNzQsOCBAQCBF
TkRJRiAoKQogCiBTRVQoQ1BBQ0tfU09VUkNFX0dFTkVSQVRPUiBUQloyKQogCitTRVQoQ01BS0Vf
Q19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtTzAiKQorCiBJRiAoV1RGX1VTRV9USUxFRF9CQUNL
SU5HX1NUT1JFKQogICBTRVQoV1RGX1VTRV9BQ0NFTEVSQVRFRF9DT01QT1NJVElORyAxKQogICBB
RERfREVGSU5JVElPTlMoLURXVEZfVVNFX0FDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HPTEpCg==
</data>
<flag name="commit-queue"
          id="186129"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172044</attachid>
            <date>2012-11-02 05:02:28 -0700</date>
            <delta_ts>2012-11-02 14:27:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>100674.patch</filename>
            <type>text/plain</type>
            <size>22597</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMzIyOSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBACisyMDEyLTExLTAxICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFsbG93
IHVzaW5nIEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HIHdpdGhvdXQgQ09PUkRJTkFURURfR1JBUEhJ
Q1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDY3
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ug
YSBkaXN0aW5jdGlvbiBiZXR3ZWVuIGNhbGxpbmcgZXdrX3ZpZXdfYmFzZV9hZGQgYW5kIGV3a192
aWV3X3NtYXJ0X2FkZC4KKyAgICAgICAgQ2FsbGluZyBld2tfdmlld19iYXNlX2FkZCBjcmVhdGVz
IGEgZGVza3RvcCBzdHlsZSB2aWV3LCB0aGF0IGRvZXMgbm90IHN1cHBvcnQKKyAgICAgICAgZml4
ZWQgbGF5b3V0IHNpemUsIHdoaWxlIGNhbGxpbmcgZXdrX3ZpZXdfc21hcnRfYWRkIGRvZXMgc3Vw
cG9ydCBmaXhlZCBsYXlvdXQgc2l6ZS4KKyAgICAgICAgQXMgYSByZXN1bHQsIFdlYktpdFRlc3RS
dW5uZXIgYW5kIHRoZSBpbnNwZWN0b3Igd2luZG93IGRvIG5vdCBzdXBwb3J0CisgICAgICAgIGZp
eGVkIGxheW91dCBzaXplLCB3aGlsZSBNaW5pQnJvd3NlciBkb2VzLiBUaGlzIGNoYW5nZSBhbGxv
d3MgbWFueSBEdW1wQXNUZXh0CisgICAgICAgIGxheW91dCB0ZXN0cyB0byBwYXNzIHdpdGhvdXQg
bW9kaWZpY2F0aW9uLCB3aGVuIEFDIGlzIGVuYWJsZWQuCisKKworICAgICAgICAqIFBsYXRmb3Jt
RWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcDoK
KyAgICAgICAgKEV3a1ZpZXdJbXBsOjpFd2tWaWV3SW1wbCk6CisgICAgICAgIChFd2tWaWV3SW1w
bDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6ZGlzcGxheVRpbWVyRmlyZWQp
OgorICAgICAgICAoRXdrVmlld0ltcGw6OmluZm9ybUxvYWRDb21taXR0ZWQpOgorICAgICAgICAo
RXdrVmlld0ltcGw6OmRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcyk6CisgICAgICAgIChFd2tW
aWV3SW1wbDo6cGFnZURpZFJlcXVlc3RTY3JvbGwpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmRp
ZENoYW5nZUNvbnRlbnRzU2l6ZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6ZGlkUmVuZGVyRnJh
bWUpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSk6
CisgICAgICAgIChFd2tWaWV3SW1wbDo6dXBkYXRlVmlld3BvcnRTaXplKToKKyAgICAgICAgKEV3
a1ZpZXdJbXBsOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChFd2tWaWV3SW1wbCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6c2NhbGVGYWN0b3IpOgor
ICAgICAgICAoRXdrVmlld0ltcGw6OnNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3SW1wbExlZ2FjeS5jcHA6IEFkZGVkLgorICAgICAgICAoRXdrVmll
d0ltcGxMZWdhY3k6OkV3a1ZpZXdJbXBsTGVnYWN5KToKKyAgICAgICAgKEV3a1ZpZXdJbXBsTGVn
YWN5OjppbmZvcm1Mb2FkQ29tbWl0dGVkKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsTGVnYWN5Ojpk
aWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMpOgorICAgICAgICAoRXdrVmlld0ltcGxMZWdhY3k6
OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsTGVnYWN5OjpkaWRD
aGFuZ2VDb250ZW50c1NpemUpOgorICAgICAgICAoRXdrVmlld0ltcGxMZWdhY3k6OmRpZFJlbmRl
ckZyYW1lKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsTGVnYWN5OjpwYWdlVHJhbnNpdGlvblZpZXdw
b3J0UmVhZHkpOgorICAgICAgICAoRXdrVmlld0ltcGxMZWdhY3k6OnVwZGF0ZVZpZXdwb3J0U2l6
ZSk6CisgICAgICAgIChFd2tWaWV3SW1wbExlZ2FjeTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGxMZWdhY3kuaDogQWRkZWQuCisgICAgICAgIChF
d2tWaWV3SW1wbExlZ2FjeSk6CisgICAgICAgIChFd2tWaWV3SW1wbExlZ2FjeTo6c2NhbGVGYWN0
b3IpOgorICAgICAgICAoRXdrVmlld0ltcGxMZWdhY3k6OnNjcm9sbFBvc2l0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgICh0b1dlYkNvbnRl
bnRUcmFuc2Zvcm0pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZSk6CisgICAg
ICAgIChjcmVhdGVFd2tWaWV3KToKKyAgICAgICAgKGV3a192aWV3X2Jhc2VfYWRkKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyk6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpwYWdlRGlkUmVxdWVzdFNjcm9sbCk6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUpOgorICAgICAgICAo
V2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlkUmVuZGVyRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbDo6cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoUGFnZUNsaWVudEltcGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9y
dENvbnRyb2xsZXJDbGllbnRFZmw6OnVwZGF0ZVZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNldFZpc2libGVDb250ZW50c1Jl
Y3QpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpk
aWRDaGFuZ2VDb250ZW50c1NpemUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250
cm9sbGVyQ2xpZW50RWZsOjpkaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMpOgorCiAyMDEyLTEx
LTAxICBBbGV4YW5kcnUgQ2hpY3VsaXRhICA8YWNoaWN1QGFkb2JlLmNvbT4KIAogICAgICAgICBb
Q1NTIFNoYWRlcnNdIE1vdmUgTWVzaEJveFR5cGUgb3V0IG9mIEN1c3RvbUZpbHRlck9wZXJhdGlv
bgpJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UJKHJldmlzaW9uIDEzMzE3MikKKysrIFNv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0
Miw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9z
b3VwL1dLU291cFJlcXVlc3RNYW5hZ2VyLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvRXdr
Vmlld0ltcGwuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGxMZWdhY3kuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvRXZhc0dMQ29udGV4dC5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL2VmbC9FdmFzR0xTdXJmYWNlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNr
X2ZvcndhcmRfbGlzdC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0V3a1ZpZXdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDEzMzE3MikKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTA3LDEwICsxMDcsNiBAQCBFd2tWaWV3SW1wbDo6RXdrVmlld0ltcGwoRXZhc19PYmplY3QqIHZp
CiAgICAgLCBtX2ZpbmRDbGllbnQoRmluZENsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQogICAgICwg
bV9mb3JtQ2xpZW50KEZvcm1DbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fYmFja0Zv
cndhcmRMaXN0KEV3a19CYWNrX0ZvcndhcmRfTGlzdDo6Y3JlYXRlKHRvQVBJKG1fcGFnZVByb3h5
LT5iYWNrRm9yd2FyZExpc3QoKSkpKQotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAg
ICwgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50KFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKLSAgICAsIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcihh
ZG9wdFB0cihuZXcgUGFnZVZpZXdwb3J0Q29udHJvbGxlcihtX3BhZ2VQcm94eS5nZXQoKSwgbV9w
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LmdldCgpKSkpCi0jZW5kaWYKICAgICAsIG1fc2V0
dGluZ3MoRXdrX1NldHRpbmdzOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2N1cnNvckdyb3VwKDAp
CiAgICAgLCBtX21vdXNlRXZlbnRzRW5hYmxlZChmYWxzZSkKQEAgLTEzMCwxNSArMTI2LDEwIEBA
IEV3a1ZpZXdJbXBsOjpFd2tWaWV3SW1wbChFdmFzX09iamVjdCogdmkKICNpZiBFTkFCTEUoV0VC
R0wpCiAgICAgbV9wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRXZWJH
TEVuYWJsZWQodHJ1ZSk7CiAjZW5kaWYKLSAgICBtX3BhZ2VQcm94eS0+c2V0VXNlRml4ZWRMYXlv
dXQodHJ1ZSk7CiAjZW5kaWYKIAogICAgIG1fcGFnZVByb3h5LT5pbml0aWFsaXplV2ViUGFnZSgp
OwogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgbV9wYWdlQ2xpZW50LT5zZXRQ
YWdlVmlld3BvcnRDb250cm9sbGVyKG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci5nZXQoKSk7Ci0j
ZW5kaWYKLQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBtX3BhZ2VQcm94eS0+ZnVs
bFNjcmVlbk1hbmFnZXIoKS0+c2V0V2ViVmlldyhtX3ZpZXcpOwogICAgIG1fcGFnZVByb3h5LT5w
YWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0RnVsbFNjcmVlbkVuYWJsZWQodHJ1ZSk7CkBA
IC0xNjcsNiArMTU4LDE1IEBAIEV3a1ZpZXdJbXBsOjp+RXdrVmlld0ltcGwoKQogICAgIEV3a1Zp
ZXdJbXBsOjpyZW1vdmVGcm9tUGFnZVZpZXdNYXAodGhpcyk7CiB9CiAKK3ZvaWQgRXdrVmlld0lt
cGw6OmluaXRpYWxpemUoKQoreworI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorICAgIG1f
cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudCA9IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnRFZmw6OmNyZWF0ZSh0aGlzKTsKKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIgPSBhZG9w
dFB0cihuZXcgUGFnZVZpZXdwb3J0Q29udHJvbGxlcihtX3BhZ2VQcm94eS5nZXQoKSwgbV9wYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50LmdldCgpKSk7CisgICAgbV9wYWdlUHJveHktPnNldFVz
ZUZpeGVkTGF5b3V0KHRydWUpOworI2VuZGlmCit9CisKIEV3a19WaWV3X1NtYXJ0X0RhdGEqIEV3
a1ZpZXdJbXBsOjpzbWFydERhdGEoKQogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxFd2tfVmll
d19TbWFydF9EYXRhKj4oZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQobV92aWV3KSk7CkBAIC0y
NDcsOCArMjQ3LDggQEAgdm9pZCBFd2tWaWV3SW1wbDo6ZGlzcGxheVRpbWVyRmlyZWQoVGltZQog
ICAgIC8vIFdlIGFyZSBzdXBwb3NlZCB0byBjbGlwIHRvIHRoZSBhY3R1YWwgdmlld3BvcnQsIG5v
dGhpbmcgbGVzcy4KICAgICBJbnRSZWN0IHZpZXdwb3J0KHNkLT52aWV3LngsIHNkLT52aWV3Lnks
IHNkLT52aWV3LncsIHNkLT52aWV3LmgpOwogCi0gICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24g
PSBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQtPnNjcm9sbFBvc2l0aW9uKCk7Ci0gICAg
ZmxvYXQgc2NhbGVGYWN0b3IgPSBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQtPnNjYWxl
RmFjdG9yKCk7CisgICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSB0aGlzLT5zY3JvbGxQb3Np
dGlvbigpOworICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gdGhpcy0+c2NhbGVGYWN0b3IoKTsKIAog
ICAgIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeDsKICAgICBtYXRyaXgudHJh
bnNsYXRlKHZpZXdwb3J0LngoKSwgdmlld3BvcnQueSgpKTsKQEAgLTMyNiw4ICszMjYsNDYgQEAg
dm9pZCBFd2tWaWV3SW1wbDo6c2V0SW1hZ2VEYXRhKHZvaWQqIGltYQogI2lmIFVTRShUSUxFRF9C
QUNLSU5HX1NUT1JFKQogdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtTG9hZENvbW1pdHRlZCgpCiB7
CisgICAgQVNTRVJUKG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcik7CiAgICAgbV9wYWdlVmlld3Bv
cnRDb250cm9sbGVyLT5kaWRDb21taXRMb2FkKCk7CiB9CisKK3ZvaWQgRXdrVmlld0ltcGw6OmRp
ZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcyhjb25zdCBWaWV3cG9ydEF0dHJpYnV0ZXMmIGF0dHIp
Cit7CisgICAgQVNTRVJUKG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcik7CisgICAgbV9wYWdlVmll
d3BvcnRDb250cm9sbGVyLT5kaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMoYXR0cik7Cit9CisK
K3ZvaWQgRXdrVmlld0ltcGw6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IEludFBvaW50JiBw
b3NpdGlvbikKK3sKKyAgICBBU1NFUlQobV9wYWdlVmlld3BvcnRDb250cm9sbGVyKTsKKyAgICBt
X3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKHBvc2l0aW9uKTsK
K30KKwordm9pZCBFd2tWaWV3SW1wbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IEludFNp
emUmIHNpemUpCit7CisgICAgQVNTRVJUKG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcik7CisgICAg
bV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRDaGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7Cit9
CisKK3ZvaWQgRXdrVmlld0ltcGw6OmRpZFJlbmRlckZyYW1lKGNvbnN0IEludFNpemUmIGNvbnRl
bnRzU2l6ZSwgY29uc3QgSW50UmVjdCYgY292ZXJlZFJlY3QpCit7CisgICAgQVNTRVJUKG1fcGFn
ZVZpZXdwb3J0Q29udHJvbGxlcik7CisgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRS
ZW5kZXJGcmFtZShjb250ZW50c1NpemUsIGNvdmVyZWRSZWN0KTsKK30KKwordm9pZCBFd2tWaWV3
SW1wbDo6cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCkKK3sKKyAgICBBU1NFUlQobV9wYWdl
Vmlld3BvcnRDb250cm9sbGVyKTsKKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPnBhZ2VU
cmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpOworfQorCit2b2lkIEV3a1ZpZXdJbXBsOjp1cGRhdGVW
aWV3cG9ydFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmlld3BvcnRTaXplKQoreworICAg
IEFTU0VSVChtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQpOworICAgIG1fcGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudC0+dXBkYXRlVmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7Cit9
CisKICNlbmRpZgogCiBJbnRTaXplIEV3a1ZpZXdJbXBsOjpzaXplKCkgY29uc3QKQEAgLTUxNSw3
ICs1NTMsNyBAQCBib29sIEV3a1ZpZXdJbXBsOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnQtPnNldFJlbmRlcmVyQWN0aXZlKHRydWUpOworICAgIHBhZ2UoKS0+ZHJhd2luZ0FyZWEo
KS0+bGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eSgpLT5sYXllclRyZWVSZW5kZXJlcigpLT5zZXRB
Y3RpdmUodHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAkocmV2aXNpb24gMTMzMTcyKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBFd2tWaWV3SW1wbF9oCiAKICNpbmNs
dWRlICJFd2tWaWV3Q2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiUGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudEVmbC5oIgogI2luY2x1ZGUgIlJlZlB0ckVmbC5oIgogI2luY2x1ZGUgIldLRWluYVNo
YXJlZFN0cmluZy5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCkBAIC02NSw2ICs2Niw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbG9yOwogY2xhc3MgQ3Vyc29yOwogY2xhc3Mg
SW50U2l6ZTsKK2NsYXNzIFZpZXdwb3J0QXR0cmlidXRlczsKIH0KIAogY2xhc3MgRXdrX0JhY2tf
Rm9yd2FyZF9MaXN0OwpAQCAtOTIsNyArOTQsNyBAQCB0eXBlZGVmIHN0cnVjdCBFd2tfVmlld19T
bWFydF9EYXRhIEV3a19WCiBjbGFzcyBFd2tWaWV3SW1wbCB7CiBwdWJsaWM6CiAgICAgRXdrVmll
d0ltcGwoRXZhc19PYmplY3QqIHZpZXcsIFBhc3NSZWZQdHI8RXdrX0NvbnRleHQ+IGNvbnRleHQs
IFBhc3NSZWZQdHI8V2ViS2l0OjpXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCk7Ci0gICAgfkV3a1Zp
ZXdJbXBsKCk7CisgICAgdmlydHVhbCB+RXdrVmlld0ltcGwoKTsKIAogICAgIHN0YXRpYyBFd2tW
aWV3SW1wbCogZnJvbUV2YXNPYmplY3QoY29uc3QgRXZhc19PYmplY3QqIHZpZXcpOwogCkBAIC0x
NjgsNyArMTcwLDEzIEBAIHB1YmxpYzoKICAgICB9CiAKICNpZiBVU0UoVElMRURfQkFDS0lOR19T
VE9SRSkKLSAgICB2b2lkIGluZm9ybUxvYWRDb21taXR0ZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
aW5mb3JtTG9hZENvbW1pdHRlZCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9y
dEF0dHJpYnV0ZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJiBhdHRyKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIHBvc2l0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZW5kZXJG
cmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGNvdmVyZWRSZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZVRyYW5zaXRpb25W
aWV3cG9ydFJlYWR5KCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZpZXdwb3J0U2l6ZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiB2aWV3cG9ydFNpemUpOwogI2VuZGlmCiAgICAgdm9pZCBpbmZv
cm1Db250ZW50c1NpemVDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSk7CiAgICAg
dW5zaWduZWQgbG9uZyBsb25nIGluZm9ybURhdGFiYXNlUXVvdGFSZWFjaGVkKGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25n
IGxvbmcgY3VycmVudFF1b3RhLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudE9yaWdpblVzYWdl
LCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVuc2lnbmVkIGxvbmcg
bG9uZyBleHBlY3RlZFVzYWdlKTsKQEAgLTE3Niw2ICsxODQsOCBAQCBwdWJsaWM6CiAjaWYgVVNF
KFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVy
Q2xpZW50RWZsKiBwYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50KCkgeyByZXR1cm4gbV9wYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50LmdldCgpOyB9CiAgICAgV2ViS2l0OjpQYWdlVmlld3Bv
cnRDb250cm9sbGVyKiBwYWdlVmlld3BvcnRDb250cm9sbGVyKCkgeyByZXR1cm4gbV9wYWdlVmll
d3BvcnRDb250cm9sbGVyLmdldCgpOyB9CisgICAgdmlydHVhbCBjb25zdCBmbG9hdCBzY2FsZUZh
Y3RvcigpIHsgcmV0dXJuIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC0+c2NhbGVGYWN0
b3IoKTsgfQorICAgIHZpcnR1YWwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgc2Nyb2xsUG9zaXRp
b24oKSB7IHJldHVybiBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQtPnNjcm9sbFBvc2l0
aW9uKCk7IH0KICNlbmRpZgogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBF
dmFzX0dMKiBldmFzR0woKSB7IHJldHVybiBtX2V2YXNHTC5nZXQoKTsgfQpAQCAtMTg2LDggKzE5
Niw5IEBAIHB1YmxpYzoKIAogICAgIC8vIEZJWE1FOiBuZWVkcyByZWZhY3RvcmluZyAoc3BsaXQg
Y2FsbGJhY2sgaW52b2tlKQogICAgIHZvaWQgaW5mb3JtVVJMQ2hhbmdlKCk7CisgICAgdmlydHVh
bCB2b2lkIGluaXRpYWxpemUoKTsKIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgICBpbmxpbmUg
RXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKCk7CiAgICAgdm9pZCBkaXNwbGF5VGltZXJG
aXJlZChXZWJDb3JlOjpUaW1lcjxFd2tWaWV3SW1wbD4qKTsKIApJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGxMZWdhY3kuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsTGVnYWN5LmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJ
bXBsTGVnYWN5LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAgIENvcHly
aWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisgICBDb3B5cmlnaHQgKEMpIDIwMTIg
SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkV3a1ZpZXdJbXBsTGVnYWN5LmgiCisKKyNpbmNsdWRlICJMYXll
clRyZWVDb29yZGluYXRvclByb3h5LmgiCisjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCisjaW5j
bHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
K3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK0V3a1ZpZXdJbXBsTGVnYWN5OjpFd2tWaWV3SW1w
bExlZ2FjeShFdmFzX09iamVjdCogdmlldywgUGFzc1JlZlB0cjxFd2tfQ29udGV4dD4gY29udGV4
dCwgUGFzc1JlZlB0cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCkKKyAgICA6IEV3a1ZpZXdJbXBs
KHZpZXcsIGNvbnRleHQsIHBhZ2VHcm91cCkKKyAgICAsIG1fc2NhbGVGYWN0b3IoMSkKK3sKK30K
KworI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQordm9pZCBFd2tWaWV3SW1wbExlZ2FjeTo6
aW5mb3JtTG9hZENvbW1pdHRlZCgpCit7CisgICAgdXBkYXRlKCk7Cit9CisKK3ZvaWQgRXdrVmll
d0ltcGxMZWdhY3k6OmRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcyhjb25zdCBWaWV3cG9ydEF0
dHJpYnV0ZXMmKQoreworICAgIHVwZGF0ZSgpOworfQorCit2b2lkIEV3a1ZpZXdJbXBsTGVnYWN5
OjpwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCit7CisgICAg
bV9zY3JvbGxQb3NpdGlvbiA9IHBvc2l0aW9uOworICAgIHVwZGF0ZSgpOworfQorCit2b2lkIEV3
a1ZpZXdJbXBsTGVnYWN5OjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSkKK3sKKyAgICBwYWdlKCktPmRyYXdpbmdBcmVhKCktPmxheWVyVHJlZUNvb3JkaW5hdG9yUHJv
eHkoKS0+c2V0Q29udGVudHNTaXplKEZsb2F0U2l6ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0
KCkpKTsKKyAgICB1cGRhdGUoKTsKK30KKwordm9pZCBFd2tWaWV3SW1wbExlZ2FjeTo6ZGlkUmVu
ZGVyRnJhbWUoY29uc3QgSW50U2l6ZSYsIGNvbnN0IEludFJlY3QmKQoreworICAgIHVwZGF0ZSgp
OworfQorCit2b2lkIEV3a1ZpZXdJbXBsTGVnYWN5OjpwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVh
ZHkoKQoreworICAgIHVwZGF0ZSgpOworfQorCit2b2lkIEV3a1ZpZXdJbXBsTGVnYWN5Ojp1cGRh
dGVWaWV3cG9ydFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmlld3BvcnRTaXplKQorewor
ICAgIHBhZ2UoKS0+ZHJhd2luZ0FyZWEoKS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChJbnRSZWN0
KG1fc2Nyb2xsUG9zaXRpb24sIHZpZXdwb3J0U2l6ZSksIG1fc2NhbGVGYWN0b3IsIEZsb2F0UG9p
bnQoKSk7Cit9CisKKyNlbmRpZgorCit2b2lkIEV3a1ZpZXdJbXBsTGVnYWN5Ojppbml0aWFsaXpl
KCkKK3sKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJ
bXBsTGVnYWN5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvRXdrVmlld0ltcGxMZWdhY3kuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsTGVnYWN5LmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNDkgQEAKKy8qCisgICBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcwor
ICAgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyovCisKKyNpZm5kZWYgRXdrVmlld0ltcGxMZWdhY3lfaAorI2RlZmluZSBFd2tWaWV3SW1w
bExlZ2FjeV9oCisKKyNpbmNsdWRlICJFd2tWaWV3SW1wbC5oIgorCitjbGFzcyBFd2tWaWV3SW1w
bExlZ2FjeSA6IHB1YmxpYyBFd2tWaWV3SW1wbCB7CitwdWJsaWM6CisgICAgRXdrVmlld0ltcGxM
ZWdhY3koRXZhc19PYmplY3QqIHZpZXcsIFBhc3NSZWZQdHI8RXdrX0NvbnRleHQ+IGNvbnRleHQs
IFBhc3NSZWZQdHI8V2ViS2l0OjpXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCk7CisKKyNpZiBVU0Uo
VElMRURfQkFDS0lOR19TVE9SRSkKKyAgICB2aXJ0dWFsIHZvaWQgaW5mb3JtTG9hZENvbW1pdHRl
ZCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMoY29uc3Qg
V2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJiBhdHRyKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFn
ZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIHNpemUpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZW5kZXJGcmFtZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNvdmVyZWRS
ZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCk7Cisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZpZXdwb3J0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiB2aWV3cG9ydFNpemUpOworICAgIHZpcnR1YWwgY29uc3QgZmxvYXQgc2NhbGVGYWN0b3IoKSB7
IHJldHVybiBtX3NjYWxlRmFjdG9yOyB9CisgICAgdmlydHVhbCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCBzY3JvbGxQb3NpdGlvbigpIHsgcmV0dXJuIG1fc2Nyb2xsUG9zaXRpb247IH0KKyNlbmRp
ZgorICAgIHZvaWQgaW5mb3JtQ29udGVudHNTaXplQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIHNpemUpOworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCk7CisKK3ByaXZhdGU6Cisg
ICAgV2ViQ29yZTo6SW50UG9pbnQgbV9zY3JvbGxQb3NpdGlvbjsKKyAgICBmbG9hdCBtX3NjYWxl
RmFjdG9yOworfTsKKworI2VuZGlmIC8vIEV3a1ZpZXdJbXBsTGVnYWN5X2gKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAJKHJldmlzaW9uIDEz
MzE3MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgImV3a192aWV3LmgiCiAK
ICNpbmNsdWRlICJFd2tWaWV3SW1wbC5oIgorI2luY2x1ZGUgIkV3a1ZpZXdJbXBsTGVnYWN5Lmgi
CiAjaW5jbHVkZSAiRmluZENsaWVudEVmbC5oIgogI2luY2x1ZGUgIkZvcm1DbGllbnRFZmwuaCIK
ICNpbmNsdWRlICJJbnB1dE1ldGhvZENvbnRleHRFZmwuaCIKQEAgLTIwNCw5ICsyMDUsOSBAQCBz
dGF0aWMgQWZmaW5lVHJhbnNmb3JtIHRvV2ViQ29udGVudFRyYW5zCiAgICAgdHJhbnNmb3JtLnRy
YW5zbGF0ZSgtc21hcnREYXRhLT52aWV3LngsIC1zbWFydERhdGEtPnZpZXcueSk7CiAKICNpZiBV
U0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICBJbnRQb2ludCBzY3JvbGxQb3MgPSBpbXBsLT5w
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50KCktPnNjcm9sbFBvc2l0aW9uKCk7CisgICAgSW50
UG9pbnQgc2Nyb2xsUG9zID0gaW1wbC0+c2Nyb2xsUG9zaXRpb24oKTsKICAgICB0cmFuc2Zvcm0u
dHJhbnNsYXRlKHNjcm9sbFBvcy54KCksIHNjcm9sbFBvcy55KCkpOwotICAgIHRyYW5zZm9ybS5z
Y2FsZSgxIC8gaW1wbC0+cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudCgpLT5zY2FsZUZhY3Rv
cigpKTsKKyAgICB0cmFuc2Zvcm0uc2NhbGUoMSAvIGltcGwtPnNjYWxlRmFjdG9yKCkpOwogI2Vu
ZGlmCiAKICAgICByZXR1cm4gdHJhbnNmb3JtOwpAQCAtNDM2LDggKzQzNyw4IEBAIHN0YXRpYyB2
b2lkIF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGUoRXYKICAgICAgICAgICAgIGltcGwtPmNyZWF0
ZUdMU3VyZmFjZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKICAgICAgICAgfQogI2VuZGlmCi0j
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgICAgICBpbXBsLT5wYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50KCktPnVwZGF0ZVZpZXdwb3J0U2l6ZShJbnRTaXplKHdpZHRoLCBoZWln
aHQpKTsKKyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyAgICAgICAgaW1wbC0+dXBkYXRl
Vmlld3BvcnRTaXplKEludFNpemUod2lkdGgsIGhlaWdodCkpOwogI2VuZGlmCiAgICAgfQogfQpA
QCAtNTM4LDcgKzUzOSwxMiBAQCBzdGF0aWMgaW5saW5lIEV2YXNfU21hcnQqIGNyZWF0ZUV3a1Zp
ZXdTCiAgICAgcmV0dXJuIHNtYXJ0OwogfQogCi1zdGF0aWMgaW5saW5lIEV2YXNfT2JqZWN0KiBj
cmVhdGVFd2tWaWV3KEV2YXMqIGNhbnZhcywgRXZhc19TbWFydCogc21hcnQsIFBhc3NSZWZQdHI8
RXdrX0NvbnRleHQ+IGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiA9IDApCit0
eXBlZGVmIGVudW0geworICAgIExlZ2FjeU1vZGUsCisgICAgRml4ZWRMYXlvdXRNb2RlCit9IFdp
bmRvd01vZGU7CisKK3N0YXRpYyBpbmxpbmUgRXZhc19PYmplY3QqIGNyZWF0ZUV3a1ZpZXcoRXZh
cyogY2FudmFzLCBFdmFzX1NtYXJ0KiBzbWFydCwgUGFzc1JlZlB0cjxFd2tfQ29udGV4dD4gY29u
dGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmID0gMCwgV2luZG93TW9kZSBtb2RlID0g
Rml4ZWRMYXlvdXRNb2RlKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChj
YW52YXMsIDApOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydCwgMCk7
CkBAIC01NTUsOCArNTYxLDExIEBAIHN0YXRpYyBpbmxpbmUgRXZhc19PYmplY3QqIGNyZWF0ZUV3
a1ZpZXcKIAogICAgIEFTU0VSVCghc21hcnREYXRhLT5wcml2KTsKICAgICBSZWZQdHI8V2ViUGFn
ZUdyb3VwPiBwYWdlR3JvdXAgPSBwYWdlR3JvdXBSZWYgPyB0b0ltcGwocGFnZUdyb3VwUmVmKSA6
IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKCk7Ci0gICAgc21hcnREYXRhLT5wcml2ID0gbmV3IEV3a1Zp
ZXdJbXBsKGV3a1ZpZXcsIGNvbnRleHQsIHBhZ2VHcm91cCk7Ci0KKyAgICBpZiAobW9kZSA9PSBM
ZWdhY3lNb2RlKQorICAgICAgICBzbWFydERhdGEtPnByaXYgPSBuZXcgRXdrVmlld0ltcGxMZWdh
Y3koZXdrVmlldywgY29udGV4dCwgcGFnZUdyb3VwKTsKKyAgICBlbHNlCisgICAgICAgIHNtYXJ0
RGF0YS0+cHJpdiA9IG5ldyBFd2tWaWV3SW1wbChld2tWaWV3LCBjb250ZXh0LCBwYWdlR3JvdXAp
OworICAgIHNtYXJ0RGF0YS0+cHJpdi0+aW5pdGlhbGl6ZSgpOwogICAgIHJldHVybiBld2tWaWV3
OwogfQogCkBAIC01NjYsNyArNTc1LDcgQEAgc3RhdGljIGlubGluZSBFdmFzX09iamVjdCogY3Jl
YXRlRXdrVmlldwogICovCiBFdmFzX09iamVjdCogZXdrX3ZpZXdfYmFzZV9hZGQoRXZhcyogY2Fu
dmFzLCBXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVm
KQogewotICAgIHJldHVybiBjcmVhdGVFd2tWaWV3KGNhbnZhcywgY3JlYXRlRXdrVmlld1NtYXJ0
Q2xhc3MoKSwgRXdrX0NvbnRleHQ6OmNyZWF0ZShjb250ZXh0UmVmKSwgcGFnZUdyb3VwUmVmKTsK
KyAgICByZXR1cm4gY3JlYXRlRXdrVmlldyhjYW52YXMsIGNyZWF0ZUV3a1ZpZXdTbWFydENsYXNz
KCksIEV3a19Db250ZXh0OjpjcmVhdGUoY29udGV4dFJlZiksIHBhZ2VHcm91cFJlZiwgTGVnYWN5
TW9kZSk7CiB9CiAKIEV2YXNfT2JqZWN0KiBld2tfdmlld19zbWFydF9hZGQoRXZhcyogY2FudmFz
LCBFdmFzX1NtYXJ0KiBzbWFydCwgRXdrX0NvbnRleHQqIGNvbnRleHQpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAkocmV2aXNpb24g
MTMzMTcyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDEwICs0NCw2IEBACiAjaW5jbHVkZSAiZXdrX3ByaXZh
dGUuaCIKICNpbmNsdWRlICJld2tfdmlldy5oIgogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RP
UkUpCi0jaW5jbHVkZSAiUGFnZVZpZXdwb3J0Q29udHJvbGxlci5oIgotI2VuZGlmCi0KIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIEV3a1ZpZXdDYWxsYmFja3M7CiAK
QEAgLTE2OSw3ICsxNjUsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRDdXJzb3JIaWRkZW5V
bnRpCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29u
c3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJiBhdHRyKQogewogI2lmIFVTRShUSUxFRF9C
QUNLSU5HX1NUT1JFKQotICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlVmll
d3BvcnRBdHRyaWJ1dGVzKGF0dHIpOworICAgIG1fdmlld0ltcGwtPmRpZENoYW5nZVZpZXdwb3J0
QXR0cmlidXRlcyhhdHRyKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGF0dHIpOwogI2VuZGlm
CkBAIC0zMjksMTQgKzMyNSwxNCBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpoYW5kbGVEb3dubG9h
ZFJlcXVlCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiB2b2lkIFBhZ2VDbGllbnRJbXBs
OjpwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCiB7Ci0gICAg
bV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5wYWdlRGlkUmVxdWVzdFNjcm9sbChwb3NpdGlvbik7
CisgICAgbV92aWV3SW1wbC0+cGFnZURpZFJlcXVlc3RTY3JvbGwocG9zaXRpb24pOwogfQogI2Vu
ZGlmCiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBzaXplKQogewogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQot
ICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlQ29udGVudHNTaXplKHNpemUp
OworICAgIG1fdmlld0ltcGwtPmRpZENoYW5nZUNvbnRlbnRzU2l6ZShzaXplKTsKICNlbHNlCiAg
ICAgbV92aWV3SW1wbC0+aW5mb3JtQ29udGVudHNTaXplQ2hhbmdlKHNpemUpOwogI2VuZGlmCkBA
IC0zNDUsMTIgKzM0MSwxMiBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VDb250ZW50
c1NpCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpk
aWRSZW5kZXJGcmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KQogewotICAgIG1fcGFnZVZpZXdwb3J0Q29u
dHJvbGxlci0+ZGlkUmVuZGVyRnJhbWUoY29udGVudHNTaXplLCBjb3ZlcmVkUmVjdCk7CisgICAg
bV92aWV3SW1wbC0+ZGlkUmVuZGVyRnJhbWUoY29udGVudHNTaXplLCBjb3ZlcmVkUmVjdCk7CiB9
CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpCiB7
Ci0gICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5wYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVh
ZHkoKTsKKyAgICBtX3ZpZXdJbXBsLT5wYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKTsKIH0K
ICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJ
bXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xp
ZW50SW1wbC5oCShyZXZpc2lvbiAxMzMxNzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1BhZ2VDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDYgQEAgY2xh
c3MgRXdrVmlld0ltcGw7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBQYWdlVmlld3Bv
cnRDb250cm9sbGVyOwotCiBjbGFzcyBQYWdlQ2xpZW50SW1wbCA6IHB1YmxpYyBQYWdlQ2xpZW50
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxQYWdlQ2xpZW50SW1wbD4gY3JlYXRl
KEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkKQEAgLTQ1LDkgKzQzLDYgQEAgcHVibGljOgogICAgIH5Q
YWdlQ2xpZW50SW1wbCgpOwogCiAgICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsKCkgY29uc3Q7Ci0j
aWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgdm9pZCBzZXRQYWdlVmlld3BvcnRDb250
cm9sbGVyKFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIqIGNvbnRyb2xsZXIpIHsgbV9wYWdlVmlld3Bv
cnRDb250cm9sbGVyID0gY29udHJvbGxlcjsgfQotI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgUGFnZUNsaWVudEltcGwoRXdrVmlld0ltcGwqKTsKQEAgLTEyOSw5ICsxMjQsNiBAQCBw
cml2YXRlOgogcHJpdmF0ZToKICAgICBFd2tWaWV3SW1wbCogbV92aWV3SW1wbDsKICAgICBEZWZh
dWx0VW5kb0NvbnRyb2xsZXIgbV91bmRvQ29udHJvbGxlcjsKLSNpZiBVU0UoVElMRURfQkFDS0lO
R19TVE9SRSkKLSAgICBQYWdlVmlld3BvcnRDb250cm9sbGVyKiBtX3BhZ2VWaWV3cG9ydENvbnRy
b2xsZXI7Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9y
dENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCShyZXZpc2lvbiAxMzMxNzIpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw2IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudEVmbDo6c2UKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6dXBk
YXRlVmlld3BvcnRTaXplKGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKIHsKICAgICBtX3Zp
ZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKLSAgICBtX3ZpZXdJbXBsLT5wYWdlKCktPnNldFZp
ZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUpOwogCiAgICAgQVNTRVJUKG1fY29udHJvbGxlcik7CiAg
ICAgbV9jb250cm9sbGVyLT5kaWRDaGFuZ2VWaWV3cG9ydFNpemUodmlld3BvcnRTaXplKTsKQEAg
LTEwOSw2ICsxMDgsNyBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRp
CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdlVmlld3Bv
cnRBdHRyaWJ1dGVzKCkKIHsKKyAgICBBU1NFUlQobV9jb250cm9sbGVyKTsKIH0KIAogdm9pZCBQ
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpzZXRDb250cm9sbGVyKFBhZ2VWaWV3cG9y
dENvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172138</attachid>
            <date>2012-11-02 14:27:59 -0700</date>
            <delta_ts>2012-11-02 14:38:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>100674.patch</filename>
            <type>text/plain</type>
            <size>33508</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMzM0MykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBACisyMDEyLTExLTAyICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFsbG93
IHVzaW5nIEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HIHdpdGhvdXQgQ09PUkRJTkFURURfR1JBUEhJ
Q1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDY3
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ug
YSBkaXN0aW5jdGlvbiBiZXR3ZWVuIGNhbGxpbmcgZXdrX3ZpZXdfYmFzZV9hZGQgYW5kIGV3a192
aWV3X3NtYXJ0X2FkZC4KKyAgICAgICAgQ2FsbGluZyBld2tfdmlld19iYXNlX2FkZCBjcmVhdGVz
IGEgZGVza3RvcCBzdHlsZSB2aWV3LCB0aGF0IGRvZXMgbm90IHN1cHBvcnQKKyAgICAgICAgZml4
ZWQgbGF5b3V0IHNpemUsIHdoaWxlIGNhbGxpbmcgZXdrX3ZpZXdfc21hcnRfYWRkIGRvZXMgc3Vw
cG9ydCBmaXhlZCBsYXlvdXQgc2l6ZS4KKyAgICAgICAgQXMgYSByZXN1bHQsIFdlYktpdFRlc3RS
dW5uZXIgYW5kIHRoZSBpbnNwZWN0b3Igd2luZG93IGRvIG5vdCBzdXBwb3J0CisgICAgICAgIGZp
eGVkIGxheW91dCBzaXplLCB3aGlsZSBNaW5pQnJvd3NlciBkb2VzLiBUaGlzIGNoYW5nZSBhbGxv
d3MgbWFueSBEdW1wQXNUZXh0CisgICAgICAgIGxheW91dCB0ZXN0cyB0byBwYXNzIHdpdGhvdXQg
bW9kaWZpY2F0aW9uLCB3aGVuIEFDIGlzIGVuYWJsZWQuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVm
bC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHA6Cisg
ICAgICAgIChFd2tWaWV3SW1wbDo6RXdrVmlld0ltcGwpOgorICAgICAgICAoRXdrVmlld0ltcGw6
OmRpc3BsYXlUaW1lckZpcmVkKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjppbmZvcm1Mb2FkQ29t
bWl0dGVkKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjppbmZvcm1Db250ZW50c1NpemVDaGFuZ2Up
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmg6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoRXdrVmlld0ltcGwpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnBh
Z2VDbGllbnQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnNldFNjYWxlRmFjdG9yKToKKyAgICAg
ICAgKEV3a1ZpZXdJbXBsOjpzY2FsZUZhY3Rvcik6CisgICAgICAgIChFd2tWaWV3SW1wbDo6c2V0
U2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoRXdrVmlld0ltcGw6OnNjcm9sbFBvc2l0aW9uKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgICh0b1dl
YkNvbnRlbnRUcmFuc2Zvcm0pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZSk6
CisgICAgICAgIChjcmVhdGVFd2tWaWV3KToKKyAgICAgICAgKGV3a192aWV3X2Jhc2VfYWRkKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpoYW5kbGVEb3dubG9hZFJl
cXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGwuaDoKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChQYWdlQ2xpZW50SW1wbCk6CisgICAgICAgICogVUlQcm9j
ZXNzL2VmbC9QYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0LmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0OjpQYWdl
Q2xpZW50SW1wbEZpeGVkTGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGxG
aXhlZExheW91dDo6flBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQpOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGxGaXhlZExheW91dDo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQ6OnVwZGF0ZVZpZXdwb3J0U2l6ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQ6OmRpZENoYW5nZVZpZXdw
b3J0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsRml4ZWRMYXlv
dXQ6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsRml4ZWRMYXlvdXQ6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGxGaXhlZExheW91dDo6ZGlkUmVuZGVyRnJhbWUpOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0OjpwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVh
ZHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGxGaXhlZExheW91dC5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChQYWdlQ2xpZW50SW1wbEZpeGVk
TGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGxGaXhlZExheW91dDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsTGVnYWN5LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bExlZ2FjeTo6UGFnZUNsaWVudEltcGxMZWdhY3kpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xp
ZW50SW1wbExlZ2FjeTo6flBhZ2VDbGllbnRJbXBsTGVnYWN5KToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGxMZWdhY3k6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Q2xpZW50SW1wbExlZ2FjeTo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsTGVnYWN5Ojp1cGRhdGVWaWV3cG9ydFNpemUpOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbExlZ2FjeTo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGxMZWdhY3k6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSk6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsTGVnYWN5OjpwYWdlRGlkUmVxdWVzdFNj
cm9sbCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsTGVnYWN5OjpkaWRSZW5kZXJG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsTGVnYWN5OjpwYWdlVHJhbnNp
dGlvblZpZXdwb3J0UmVhZHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudElt
cGxMZWdhY3kuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoUGFnZUNsaWVu
dEltcGxMZWdhY3kpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbExlZ2FjeTo6Y3Jl
YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnRFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
RWZsOjp1cGRhdGVWaWV3cG9ydFNpemUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50RWZsOjpzZXRWaWV3cG9ydFBvc2l0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2V0Q29udGVudHNTY2FsZSk6CisK
IDIwMTItMTEtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgYSBQbHVnaW5JbmFjdGl2ZSBwbHVnLWluIHVuYXZhaWxhYmlsaXR5IHJlYXNvbgpJ
bmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UJKHJldmlzaW9uIDEzMzMzMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4Myw4
IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9lZmwvSW5wdXRN
ZXRob2RDb250ZXh0RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvTmV0d29ya0luZm9Qcm92aWRl
ci5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAorICAgIFVJUHJvY2Vz
cy9lZmwvUGFnZUNsaWVudEltcGxMZWdhY3kuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9QYWdlQ2xp
ZW50SW1wbEZpeGVkTGF5b3V0LmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRF
ZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9QYWdlUG9saWN5Q2xpZW50RWZsLmNwcAogICAgIFVJ
UHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZsLmNwcApJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAkocmV2aXNpb24gMTMzMzMwKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCwxMSArMjgsMTEgQEAKICNpbmNsdWRlICJMYXllclRyZWVDb29yZGlu
YXRvclByb3h5LmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlUmVuZGVyZXIuaCIKICNpbmNsdWRlICJQ
YWdlQ2xpZW50SW1wbC5oIgorI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQuaCIK
KyNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbExlZ2FjeS5oIgogI2luY2x1ZGUgIlBhZ2VMb2FkQ2xp
ZW50RWZsLmgiCiAjaW5jbHVkZSAiUGFnZVBvbGljeUNsaWVudEVmbC5oIgogI2luY2x1ZGUgIlBh
Z2VVSUNsaWVudEVmbC5oIgotI2luY2x1ZGUgIlBhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaCIKLSNp
bmNsdWRlICJQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VMb2FkQ2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJX
ZWJDb250ZXh0LmgiCkBAIC05NSwxMCArOTUsMTAgQEAgY29uc3QgRXZhc19PYmplY3QqIEV3a1Zp
ZXdJbXBsOjp2aWV3RnJvbQogICAgIHJldHVybiBwYWdlVmlld01hcCgpLmdldChwYWdlKTsKIH0K
IAotRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKEV2YXNfT2JqZWN0KiB2aWV3LCBQYXNzUmVmUHRy
PEV3a19Db250ZXh0PiBjb250ZXh0LCBQYXNzUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3Vw
KQorRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKEV2YXNfT2JqZWN0KiB2aWV3LCBQYXNzUmVmUHRy
PEV3a19Db250ZXh0PiBjb250ZXh0LCBQYXNzUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3Vw
LCBXaW5kb3dNb2RlIG1vZGUpCiAgICAgOiBtX3ZpZXcodmlldykKICAgICAsIG1fY29udGV4dChj
b250ZXh0KQotICAgICwgbV9wYWdlQ2xpZW50KFBhZ2VDbGllbnRJbXBsOjpjcmVhdGUodGhpcykp
CisgICAgLCBtX3BhZ2VDbGllbnQobW9kZSA9PSBGaXhlZExheW91dE1vZGUgPyBQYWdlQ2xpZW50
SW1wbEZpeGVkTGF5b3V0OjpjcmVhdGUodGhpcykgOiBQYWdlQ2xpZW50SW1wbExlZ2FjeTo6Y3Jl
YXRlKHRoaXMpKQogICAgICwgbV9wYWdlUHJveHkodG9JbXBsKG1fY29udGV4dC0+d2tDb250ZXh0
KCkpLT5jcmVhdGVXZWJQYWdlKG1fcGFnZUNsaWVudC5nZXQoKSwgcGFnZUdyb3VwLmdldCgpKSkK
ICAgICAsIG1fcGFnZUxvYWRDbGllbnQoUGFnZUxvYWRDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkK
ICAgICAsIG1fcGFnZVBvbGljeUNsaWVudChQYWdlUG9saWN5Q2xpZW50RWZsOjpjcmVhdGUodGhp
cykpCkBAIC0xMDgsOCArMTA4LDcgQEAgRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKEV2YXNfT2Jq
ZWN0KiB2aQogICAgICwgbV9mb3JtQ2xpZW50KEZvcm1DbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkK
ICAgICAsIG1fYmFja0ZvcndhcmRMaXN0KEV3a19CYWNrX0ZvcndhcmRfTGlzdDo6Y3JlYXRlKHRv
QVBJKG1fcGFnZVByb3h5LT5iYWNrRm9yd2FyZExpc3QoKSkpKQogI2lmIFVTRShUSUxFRF9CQUNL
SU5HX1NUT1JFKQotICAgICwgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50KFBhZ2VWaWV3
cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKLSAgICAsIG1fcGFnZVZpZXdw
b3J0Q29udHJvbGxlcihhZG9wdFB0cihuZXcgUGFnZVZpZXdwb3J0Q29udHJvbGxlcihtX3BhZ2VQ
cm94eS5nZXQoKSwgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LmdldCgpKSkpCisgICAg
LCBtX3NjYWxlRmFjdG9yKDEpCiAjZW5kaWYKICAgICAsIG1fc2V0dGluZ3MoRXdrX1NldHRpbmdz
OjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2N1cnNvckdyb3VwKDApCkBAIC0xMzAsMTUgKzEyOSwx
MyBAQCBFd2tWaWV3SW1wbDo6RXdrVmlld0ltcGwoRXZhc19PYmplY3QqIHZpCiAjaWYgRU5BQkxF
KFdFQkdMKQogICAgIG1fcGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0
V2ViR0xFbmFibGVkKHRydWUpOwogI2VuZGlmCi0gICAgbV9wYWdlUHJveHktPnNldFVzZUZpeGVk
TGF5b3V0KHRydWUpOworICAgIGlmIChtb2RlID09IEZpeGVkTGF5b3V0TW9kZSkKKyAgICAgICAg
bV9wYWdlUHJveHktPnNldFVzZUZpeGVkTGF5b3V0KHRydWUpOwogI2VuZGlmCiAKKyAgICBtX3Bh
Z2VDbGllbnQtPmluaXRpYWxpemUoKTsKICAgICBtX3BhZ2VQcm94eS0+aW5pdGlhbGl6ZVdlYlBh
Z2UoKTsKIAotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAgIG1fcGFnZUNsaWVudC0+
c2V0UGFnZVZpZXdwb3J0Q29udHJvbGxlcihtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuZ2V0KCkp
OwotI2VuZGlmCi0KICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgbV9wYWdlUHJveHkt
PmZ1bGxTY3JlZW5NYW5hZ2VyKCktPnNldFdlYlZpZXcobV92aWV3KTsKICAgICBtX3BhZ2VQcm94
eS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCktPnNldEZ1bGxTY3JlZW5FbmFibGVkKHRydWUp
OwpAQCAtMjQ5LDEzICsyNDYsMTAgQEAgdm9pZCBFd2tWaWV3SW1wbDo6ZGlzcGxheVRpbWVyRmly
ZWQoVGltZQogICAgIC8vIFdlIGFyZSBzdXBwb3NlZCB0byBjbGlwIHRvIHRoZSBhY3R1YWwgdmll
d3BvcnQsIG5vdGhpbmcgbGVzcy4KICAgICBJbnRSZWN0IHZpZXdwb3J0KHNkLT52aWV3LngsIHNk
LT52aWV3LnksIHNkLT52aWV3LncsIHNkLT52aWV3LmgpOwogCi0gICAgSW50UG9pbnQgc2Nyb2xs
UG9zaXRpb24gPSBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQtPnNjcm9sbFBvc2l0aW9u
KCk7Ci0gICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnQtPnNjYWxlRmFjdG9yKCk7Ci0KICAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCBt
YXRyaXg7CiAgICAgbWF0cml4LnRyYW5zbGF0ZSh2aWV3cG9ydC54KCksIHZpZXdwb3J0LnkoKSk7
Ci0gICAgbWF0cml4LnNjYWxlKHNjYWxlRmFjdG9yKTsKLSAgICBtYXRyaXgudHJhbnNsYXRlKC1z
Y3JvbGxQb3NpdGlvbi54KCksIC1zY3JvbGxQb3NpdGlvbi55KCkpOworICAgIG1hdHJpeC5zY2Fs
ZShtX3NjYWxlRmFjdG9yKTsKKyAgICBtYXRyaXgudHJhbnNsYXRlKC1tX3Njcm9sbFBvc2l0aW9u
LngoKSwgLW1fc2Nyb2xsUG9zaXRpb24ueSgpKTsKIAogICAgIExheWVyVHJlZVJlbmRlcmVyKiBy
ZW5kZXJlciA9IHBhZ2UoKS0+ZHJhd2luZ0FyZWEoKS0+bGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94
eSgpLT5sYXllclRyZWVSZW5kZXJlcigpOwogICAgIHJlbmRlcmVyLT5zZXRBY3RpdmUodHJ1ZSk7
CkBAIC0zMjgsNyArMzIyLDcgQEAgdm9pZCBFd2tWaWV3SW1wbDo6c2V0SW1hZ2VEYXRhKHZvaWQq
IGltYQogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogdm9pZCBFd2tWaWV3SW1wbDo6aW5m
b3JtTG9hZENvbW1pdHRlZCgpCiB7Ci0gICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRD
b21taXRMb2FkKCk7CisgICAgbV9wYWdlQ2xpZW50LT5kaWRDb21taXRMb2FkKCk7CiB9CiAjZW5k
aWYKIApAQCAtNTE3LDcgKzUxMSw3IEBAIGJvb2wgRXdrVmlld0ltcGw6OmVudGVyQWNjZWxlcmF0
ZWRDb21wb3MKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIG1fcGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudC0+c2V0UmVuZGVyZXJBY3RpdmUodHJ1ZSk7CisgICAgcGFnZSgp
LT5kcmF3aW5nQXJlYSgpLT5sYXllclRyZWVDb29yZGluYXRvclByb3h5KCktPmxheWVyVHJlZVJl
bmRlcmVyKCktPnNldEFjdGl2ZSh0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTc2
LDcgKzU3MCw3IEBAIHZvaWQgRXdrVmlld0ltcGw6OmRpc21pc3NDb2xvclBpY2tlcigpCiB2b2lk
IEV3a1ZpZXdJbXBsOjppbmZvcm1Db250ZW50c1NpemVDaGFuZ2UoY29uc3QgSW50U2l6ZSYgc2l6
ZSkKIHsKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgbV9wYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50LT5kaWRDaGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7CisgICAgbV9wYWdl
Q2xpZW50LT5kaWRDaGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShzaXplKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvRXdrVmlld0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9Fd2tWaWV3SW1wbC5oCShyZXZpc2lvbiAxMzMzMzApCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw4
ICs1Miw2IEBAIGNsYXNzIFBhZ2VDbGllbnRJbXBsOwogY2xhc3MgUGFnZUxvYWRDbGllbnRFZmw7
CiBjbGFzcyBQYWdlUG9saWN5Q2xpZW50RWZsOwogY2xhc3MgUGFnZVVJQ2xpZW50RWZsOwotY2xh
c3MgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDsKLWNsYXNzIFBhZ2VWaWV3cG9ydENv
bnRyb2xsZXI7CiBjbGFzcyBSZXNvdXJjZUxvYWRDbGllbnRFZmw7CiBjbGFzcyBXZWJQYWdlR3Jv
dXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7CkBAIC05MSw3ICs4OSwxMyBAQCB0eXBlZGVmIHN0cnVj
dCBFd2tfVmlld19TbWFydF9EYXRhIEV3a19WCiAKIGNsYXNzIEV3a1ZpZXdJbXBsIHsKIHB1Ymxp
YzoKLSAgICBFd2tWaWV3SW1wbChFdmFzX09iamVjdCogdmlldywgUGFzc1JlZlB0cjxFd2tfQ29u
dGV4dD4gY29udGV4dCwgUGFzc1JlZlB0cjxXZWJLaXQ6OldlYlBhZ2VHcm91cD4gcGFnZUdyb3Vw
KTsKKworCXR5cGVkZWYgZW51bSB7CisJCUxlZ2FjeU1vZGUsCisJCUZpeGVkTGF5b3V0TW9kZQor
CX0gV2luZG93TW9kZTsKKworICAgIEV3a1ZpZXdJbXBsKEV2YXNfT2JqZWN0KiB2aWV3LCBQYXNz
UmVmUHRyPEV3a19Db250ZXh0PiBjb250ZXh0LCBQYXNzUmVmUHRyPFdlYktpdDo6V2ViUGFnZUdy
b3VwPiBwYWdlR3JvdXAsIFdpbmRvd01vZGUpOwogICAgIH5Fd2tWaWV3SW1wbCgpOwogCiAgICAg
c3RhdGljIEV3a1ZpZXdJbXBsKiBmcm9tRXZhc09iamVjdChjb25zdCBFdmFzX09iamVjdCogdmll
dyk7CkBAIC0xNzQsOCArMTc4LDEzIEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBsb25nIGxvbmcg
aW5mb3JtRGF0YWJhc2VRdW90YVJlYWNoZWQoY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNv
bnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGEs
IHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50T3JpZ2luVXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9u
ZyBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGV4cGVjdGVkVXNhZ2Up
OwogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgV2ViS2l0OjpQYWdlVmlld3Bv
cnRDb250cm9sbGVyQ2xpZW50RWZsKiBwYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50KCkgeyBy
ZXR1cm4gbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LmdldCgpOyB9Ci0gICAgV2ViS2l0
OjpQYWdlVmlld3BvcnRDb250cm9sbGVyKiBwYWdlVmlld3BvcnRDb250cm9sbGVyKCkgeyByZXR1
cm4gbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLmdldCgpOyB9CisgICAgV2ViS2l0OjpQYWdlQ2xp
ZW50SW1wbCogcGFnZUNsaWVudCgpIHsgcmV0dXJuIG1fcGFnZUNsaWVudC5nZXQoKTsgfQorCisg
ICAgdm9pZCBzZXRTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvcikgeyBtX3NjYWxlRmFjdG9y
ID0gc2NhbGVGYWN0b3I7IH0KKyAgICBmbG9hdCBzY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJu
IG1fc2NhbGVGYWN0b3I7IH0KKworICAgIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oV2ViQ29yZTo6
SW50UG9pbnQgcG9zaXRpb24pIHsgbV9zY3JvbGxQb3NpdGlvbiA9IHBvc2l0aW9uOyB9CisgICAg
V2ViQ29yZTo6SW50UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Njcm9s
bFBvc2l0aW9uOyB9CiAjZW5kaWYKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAg
ICAgRXZhc19HTCogZXZhc0dMKCkgeyByZXR1cm4gbV9ldmFzR0wuZ2V0KCk7IH0KQEAgLTIyMiw4
ICsyMzEsOCBAQCBwcml2YXRlOgogICAgIE93blB0cjxXZWJLaXQ6OkZvcm1DbGllbnRFZmw+IG1f
Zm9ybUNsaWVudDsKICAgICBPd25QdHI8RXdrX0JhY2tfRm9yd2FyZF9MaXN0PiBtX2JhY2tGb3J3
YXJkTGlzdDsKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICBPd25QdHI8V2ViS2l0
OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsPiBtX3BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnQ7Ci0gICAgT3duUHRyPFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlcj4gbV9w
YWdlVmlld3BvcnRDb250cm9sbGVyOworICAgIGZsb2F0IG1fc2NhbGVGYWN0b3I7CisgICAgV2Vi
Q29yZTo6SW50UG9pbnQgbV9zY3JvbGxQb3NpdGlvbjsKICNlbmRpZgogICAgIE93blB0cjxFd2tf
U2V0dGluZ3M+IG1fc2V0dGluZ3M7CiAgICAgY29uc3QgY2hhciogbV9jdXJzb3JHcm91cDsgLy8g
VGhpcyBpcyBhbiBhZGRyZXNzLCBkbyBub3QgZnJlZSBpdCBvciB1c2UgV0tFaW5hU2hhcmVkU3Ry
aW5nLgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmNwcAkocmV2aXNpb24gMTMzMzMwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsOSArMjAyLDkgQEAgc3RhdGlj
IEFmZmluZVRyYW5zZm9ybSB0b1dlYkNvbnRlbnRUcmFucwogICAgIEVXS19WSUVXX0lNUExfR0VU
X0JZX1NEX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIHRyYW5zZm9ybSk7CiAKICNpZiBVU0Uo
VElMRURfQkFDS0lOR19TVE9SRSkKLSAgICBJbnRQb2ludCBzY3JvbGxQb3MgPSBpbXBsLT5wYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50KCktPnNjcm9sbFBvc2l0aW9uKCk7CisgICAgSW50UG9p
bnQgc2Nyb2xsUG9zID0gaW1wbC0+c2Nyb2xsUG9zaXRpb24oKTsKICAgICB0cmFuc2Zvcm0udHJh
bnNsYXRlKHNjcm9sbFBvcy54KCksIHNjcm9sbFBvcy55KCkpOwotICAgIHRyYW5zZm9ybS5zY2Fs
ZSgxIC8gaW1wbC0+cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudCgpLT5zY2FsZUZhY3Rvcigp
KTsKKyAgICB0cmFuc2Zvcm0uc2NhbGUoMSAvIGltcGwtPnNjYWxlRmFjdG9yKCkpOwogI2VuZGlm
CiAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgtc21hcnREYXRhLT52aWV3LngsIC1zbWFydERhdGEt
PnZpZXcueSk7CiAKQEAgLTQzNSw4ICs0MzUsOCBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21h
cnRfY2FsY3VsYXRlKEV2CiAgICAgICAgICAgICBpbXBsLT5jcmVhdGVHTFN1cmZhY2UoSW50U2l6
ZSh3aWR0aCwgaGVpZ2h0KSk7CiAgICAgICAgIH0KICNlbmRpZgotI2lmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKLSAgICAgICAgaW1wbC0+cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudCgp
LT51cGRhdGVWaWV3cG9ydFNpemUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7CisjaWYgVVNFKFRJ
TEVEX0JBQ0tJTkdfU1RPUkUpCisgICAgICAgIGltcGwtPnBhZ2VDbGllbnQoKS0+dXBkYXRlVmll
d3BvcnRTaXplKEludFNpemUod2lkdGgsIGhlaWdodCkpOwogI2VuZGlmCiAgICAgfQogfQpAQCAt
NTM3LDcgKzUzNyw3IEBAIHN0YXRpYyBpbmxpbmUgRXZhc19TbWFydCogY3JlYXRlRXdrVmlld1MK
ICAgICByZXR1cm4gc21hcnQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgRXZhc19PYmplY3QqIGNyZWF0
ZUV3a1ZpZXcoRXZhcyogY2FudmFzLCBFdmFzX1NtYXJ0KiBzbWFydCwgUGFzc1JlZlB0cjxFd2tf
Q29udGV4dD4gY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmID0gMCkKK3N0YXRp
YyBpbmxpbmUgRXZhc19PYmplY3QqIGNyZWF0ZUV3a1ZpZXcoRXZhcyogY2FudmFzLCBFdmFzX1Nt
YXJ0KiBzbWFydCwgUGFzc1JlZlB0cjxFd2tfQ29udGV4dD4gY29udGV4dCwgV0tQYWdlR3JvdXBS
ZWYgcGFnZUdyb3VwUmVmID0gMCwgRXdrVmlld0ltcGw6OldpbmRvd01vZGUgbW9kZSA9IEV3a1Zp
ZXdJbXBsOjpGaXhlZExheW91dE1vZGUpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKGNhbnZhcywgMCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNt
YXJ0LCAwKTsKQEAgLTU1NCw4ICs1NTQsNyBAQCBzdGF0aWMgaW5saW5lIEV2YXNfT2JqZWN0KiBj
cmVhdGVFd2tWaWV3CiAKICAgICBBU1NFUlQoIXNtYXJ0RGF0YS0+cHJpdik7CiAgICAgUmVmUHRy
PFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwID0gcGFnZUdyb3VwUmVmID8gdG9JbXBsKHBhZ2VHcm91
cFJlZikgOiBXZWJQYWdlR3JvdXA6OmNyZWF0ZSgpOwotICAgIHNtYXJ0RGF0YS0+cHJpdiA9IG5l
dyBFd2tWaWV3SW1wbChld2tWaWV3LCBjb250ZXh0LCBwYWdlR3JvdXApOwotCisgICAgc21hcnRE
YXRhLT5wcml2ID0gbmV3IEV3a1ZpZXdJbXBsKGV3a1ZpZXcsIGNvbnRleHQsIHBhZ2VHcm91cCwg
bW9kZSk7CiAgICAgcmV0dXJuIGV3a1ZpZXc7CiB9CiAKQEAgLTU2NSw3ICs1NjQsNyBAQCBzdGF0
aWMgaW5saW5lIEV2YXNfT2JqZWN0KiBjcmVhdGVFd2tWaWV3CiAgKi8KIEV2YXNfT2JqZWN0KiBl
d2tfdmlld19iYXNlX2FkZChFdmFzKiBjYW52YXMsIFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBX
S1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUV3a1ZpZXco
Y2FudmFzLCBjcmVhdGVFd2tWaWV3U21hcnRDbGFzcygpLCBFd2tfQ29udGV4dDo6Y3JlYXRlKGNv
bnRleHRSZWYpLCBwYWdlR3JvdXBSZWYpOworICAgIHJldHVybiBjcmVhdGVFd2tWaWV3KGNhbnZh
cywgY3JlYXRlRXdrVmlld1NtYXJ0Q2xhc3MoKSwgRXdrX0NvbnRleHQ6OmNyZWF0ZShjb250ZXh0
UmVmKSwgcGFnZUdyb3VwUmVmLCBFd2tWaWV3SW1wbDo6TGVnYWN5TW9kZSk7CiB9CiAKIEV2YXNf
T2JqZWN0KiBld2tfdmlld19zbWFydF9hZGQoRXZhcyogY2FudmFzLCBFdmFzX1NtYXJ0KiBzbWFy
dCwgRXdrX0NvbnRleHQqIGNvbnRleHQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gMTMzMzMwKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDEwICs0NCw2IEBACiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlICJl
d2tfdmlldy5oIgogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0jaW5jbHVkZSAiUGFn
ZVZpZXdwb3J0Q29udHJvbGxlci5oIgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogdXNpbmcgbmFtZXNwYWNlIEV3a1ZpZXdDYWxsYmFja3M7CiAKQEAgLTE2NiwxNSArMTYyLDYg
QEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0Q3Vyc29ySGlkZGVuVW50aQogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENoYW5nZVZpZXdwb3J0UHJv
cGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmIGF0dHIpCi17Ci0jaWYg
VVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5k
aWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMoYXR0cik7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJB
TShhdHRyKTsKLSNlbmRpZgotfQotCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpyZWdpc3RlckVkaXRD
b21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4gY29tbWFuZCwgV2ViUGFnZVBy
b3h5OjpVbmRvT3JSZWRvIHVuZG9PclJlZG8pCiB7CiAgICAgbV91bmRvQ29udHJvbGxlci5yZWdp
c3RlckVkaXRDb21tYW5kKGNvbW1hbmQsIHVuZG9PclJlZG8pOwpAQCAtMzI2LDMyICszMTMsNCBA
QCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpoYW5kbGVEb3dubG9hZFJlcXVlCiAgICAgY29udGV4dC0+
ZG93bmxvYWRNYW5hZ2VyKCktPnJlZ2lzdGVyRG93bmxvYWQoZG93bmxvYWQsIG1fdmlld0ltcGwp
OwogfQogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi12b2lkIFBhZ2VDbGllbnRJbXBs
OjpwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCi17Ci0gICAg
bV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5wYWdlRGlkUmVxdWVzdFNjcm9sbChwb3NpdGlvbik7
Ci19Ci0jZW5kaWYKLQotdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXpl
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpCi17Ci0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdf
U1RPUkUpCi0gICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRDaGFuZ2VDb250ZW50c1Np
emUoc2l6ZSk7Ci0jZWxzZQotICAgIG1fdmlld0ltcGwtPmluZm9ybUNvbnRlbnRzU2l6ZUNoYW5n
ZShzaXplKTsKLSNlbmRpZgotfQotCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi12b2lk
IFBhZ2VDbGllbnRJbXBsOjpkaWRSZW5kZXJGcmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBj
b250ZW50c1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KQotewotICAg
IG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkUmVuZGVyRnJhbWUoY29udGVudHNTaXplLCBj
b3ZlcmVkUmVjdCk7Ci19Ci0KLXZvaWQgUGFnZUNsaWVudEltcGw6OnBhZ2VUcmFuc2l0aW9uVmll
d3BvcnRSZWFkeSgpCi17Ci0gICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5wYWdlVHJhbnNp
dGlvblZpZXdwb3J0UmVhZHkoKTsKLX0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmgJ
KHJldmlzaW9uIDEzMzMzMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNs
aWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMjIgKzM0LDE5IEBAIGNsYXNzIEV3a1Zp
ZXdJbXBsOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgUGFnZVZpZXdwb3J0Q29udHJv
bGxlcjsKLQogY2xhc3MgUGFnZUNsaWVudEltcGwgOiBwdWJsaWMgUGFnZUNsaWVudCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8UGFnZUNsaWVudEltcGw+IGNyZWF0ZShFd2tWaWV3
SW1wbCogdmlld0ltcGwpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBhZ2VD
bGllbnRJbXBsKHZpZXdJbXBsKSk7Ci0gICAgfQotICAgIH5QYWdlQ2xpZW50SW1wbCgpOworICAg
IHZpcnR1YWwgflBhZ2VDbGllbnRJbXBsKCk7CisKKyAgICAvLyBDYWxsZWQgZnJvbSB0aGUgdmll
dworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBk
aWRDb21taXRMb2FkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWV3cG9ydFNpemUo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdl
Q29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSA9IDA7CiAKICAgICBFd2tWaWV3
SW1wbCogdmlld0ltcGwoKSBjb25zdDsKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAg
ICB2b2lkIHNldFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIoUGFnZVZpZXdwb3J0Q29udHJvbGxlciog
Y29udHJvbGxlcikgeyBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIgPSBjb250cm9sbGVyOyB9Ci0j
ZW5kaWYKIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgICBleHBsaWNpdCBQYWdlQ2xpZW50SW1w
bChFd2tWaWV3SW1wbCopOwogCiAgICAgLy8gUGFnZUNsaWVudApAQCAtNzEsNyArNjgsNyBAQCBw
cml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJz
b3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGJv
b2wpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3Qg
V2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJik7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5n
ZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmKSA9
IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdl
YkVkaXRDb21tYW5kUHJveHk+LCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pOwogICAgIHZpcnR1
YWwgdm9pZCBjbGVhckFsbEVkaXRDb21tYW5kcygpOwpAQCAtMTE2LDIyICsxMTMsMTQgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY291bnRTdHJpbmdNYXRjaGVzSW5DdXN0b21SZXByZXNl
bnRhdGlvbihjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQpOwogCiAjaWYgVVNF
KFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgdmlydHVhbCB2b2lkIHBhZ2VEaWRSZXF1ZXN0U2Ny
b2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7Ci0jZW5kaWYKLQotICAgIHZpcnR1YWwgdm9p
ZCBkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwotCi0jaWYg
VVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlbmRlckZyYW1l
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgY292ZXJlZFJlY3QpOwotICAgIHZpcnR1YWwgdm9pZCBwYWdlVHJhbnNpdGlvblZpZXdw
b3J0UmVhZHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlbmRlckZyYW1l
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgY292ZXJlZFJlY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZVRyYW5zaXRpb25W
aWV3cG9ydFJlYWR5KCkgPSAwOwogI2VuZGlmCiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAg
RXdrVmlld0ltcGwqIG1fdmlld0ltcGw7CiAgICAgRGVmYXVsdFVuZG9Db250cm9sbGVyIG1fdW5k
b0NvbnRyb2xsZXI7Ci0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgUGFnZVZpZXdw
b3J0Q29udHJvbGxlciogbV9wYWdlVmlld3BvcnRDb250cm9sbGVyOwotI2VuZGlmCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
UGFnZUNsaWVudEltcGxGaXhlZExheW91dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0LmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGxGaXhlZExh
eW91dC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAgIENvcHlyaWdodCAoQykgMjAxMiBJbnRl
bCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQuaCIKKworI2lu
Y2x1ZGUgIkV3a1ZpZXdJbXBsLmgiCisKKyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNp
bmNsdWRlICJQYWdlVmlld3BvcnRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiUGFnZVZpZXdwb3J0
Q29udHJvbGxlckNsaWVudEVmbC5oIgorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwordXNpbmcgbmFtZXNwYWNlIEV3a1ZpZXdDYWxsYmFja3M7CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitQYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0OjpQYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0
KEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkKKyAgICA6IFBhZ2VDbGllbnRJbXBsKHZpZXdJbXBsKQor
eworfQorCitQYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0Ojp+UGFnZUNsaWVudEltcGxGaXhlZExh
eW91dCgpCit7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGxGaXhlZExheW91dDo6aW5pdGlhbGl6
ZSgpCit7CisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisgICAgLy8gUGFnZUNsaWVudElt
cGwgaXMgY3JlYXRlZCBiZWZvcmUgV2ViUGFnZVByb3h5LCBidXQgUGFnZVZpZXdwb3J0Q29udHJv
bGxlcgorICAgIC8vIGlzIGNyZWF0ZWQgYWZ0ZXIgV2ViUGFnZVByb3h5LCBzbyBpdCBjYW5ub3Qg
YmUgY3JlYXRlZCBpbiB0aGUgY29uc3R1Y3RvciAKKyAgICAvLyBvZiBQYWdlQ2xpZW50SW1wbC4K
KyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQgPSBQYWdlVmlld3BvcnRDb250cm9s
bGVyQ2xpZW50RWZsOjpjcmVhdGUobV92aWV3SW1wbCk7CisgICAgbV9wYWdlVmlld3BvcnRDb250
cm9sbGVyID0gYWRvcHRQdHIobmV3IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIobV92aWV3SW1wbC0+
cGFnZSgpLCBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQuZ2V0KCkpKTsKKyNlbmRpZgor
fQorCit2b2lkIFBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQ6OmRpZENvbW1pdExvYWQoKQorewor
ICAgIEFTU0VSVChtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIpOworICAgIG1fcGFnZVZpZXdwb3J0
Q29udHJvbGxlci0+ZGlkQ29tbWl0TG9hZCgpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsRml4
ZWRMYXlvdXQ6OnVwZGF0ZVZpZXdwb3J0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXpl
KQoreworICAgIEFTU0VSVChtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQpOworICAgIG1f
cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC0+dXBkYXRlVmlld3BvcnRTaXplKHNpemUpOwor
fQorCit2b2lkIFBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQ6OmRpZENoYW5nZVZpZXdwb3J0UHJv
cGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmIGF0dHIpCit7CisjaWYg
VVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisgICAgQVNTRVJUKG1fcGFnZVZpZXdwb3J0Q29udHJv
bGxlcik7CisgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRDaGFuZ2VWaWV3cG9ydEF0
dHJpYnV0ZXMoYXR0cik7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShhdHRyKTsKKyNlbmRpZgor
fQorCit2b2lkIFBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQ6OmRpZENoYW5nZUNvbnRlbnRzU2l6
ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQoreworI2lmIFVTRShUSUxFRF9CQUNLSU5H
X1NUT1JFKQorICAgIEFTU0VSVChtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIpOworICAgIG1fcGFn
ZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlQ29udGVudHNTaXplKHNpemUpOworI2Vsc2UK
KyAgICBtX3ZpZXdJbXBsLT5pbmZvcm1Db250ZW50c1NpemVDaGFuZ2Uoc2l6ZSk7CisjZW5kaWYK
K30KKworI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQordm9pZCBQYWdlQ2xpZW50SW1wbEZp
eGVkTGF5b3V0OjpwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBJbnRQb2ludCYgcG9zaXRpb24p
Cit7CisgICAgQVNTRVJUKG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcik7CisgICAgbV9wYWdlVmll
d3BvcnRDb250cm9sbGVyLT5wYWdlRGlkUmVxdWVzdFNjcm9sbChwb3NpdGlvbik7Cit9CisKK3Zv
aWQgUGFnZUNsaWVudEltcGxGaXhlZExheW91dDo6ZGlkUmVuZGVyRnJhbWUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjb3ZlcmVk
UmVjdCkKK3sKKyAgICBBU1NFUlQobV9wYWdlVmlld3BvcnRDb250cm9sbGVyKTsKKyAgICBtX3Bh
Z2VWaWV3cG9ydENvbnRyb2xsZXItPmRpZFJlbmRlckZyYW1lKGNvbnRlbnRzU2l6ZSwgY292ZXJl
ZFJlY3QpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQ6OnBhZ2VUcmFuc2l0
aW9uVmlld3BvcnRSZWFkeSgpCit7CisgICAgQVNTRVJUKG1fcGFnZVZpZXdwb3J0Q29udHJvbGxl
cik7CisgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5wYWdlVHJhbnNpdGlvblZpZXdwb3J0
UmVhZHkoKTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGxGaXhlZExheW91dC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGxGaXhl
ZExheW91dC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Q
YWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICAgQ29weXJp
Z2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXRfaAorI2RlZmluZSBQYWdl
Q2xpZW50SW1wbEZpeGVkTGF5b3V0X2gKKworI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQYWdlVmlld3BvcnRDb250cm9sbGVyOworY2xh
c3MgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDsKKworY2xhc3MgUGFnZUNsaWVudElt
cGxGaXhlZExheW91dCA6IHB1YmxpYyBQYWdlQ2xpZW50SW1wbCB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NPd25QdHI8UGFnZUNsaWVudEltcGw+IGNyZWF0ZShFd2tWaWV3SW1wbCogdmlld0lt
cGwpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBhZ2VDbGllbnRJbXBsRml4
ZWRMYXlvdXQodmlld0ltcGwpKTsKKyAgICB9CisgICAgdmlydHVhbCB+UGFnZUNsaWVudEltcGxG
aXhlZExheW91dCgpOworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCk7CisgICAgdmlydHVh
bCB2b2lkIGRpZENvbW1pdExvYWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVmlld3BvcnRT
aXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKKworcHJpdmF0ZToKKworICAgIGV4cGxpY2l0
IFBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQoRXdrVmlld0ltcGwqKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0
cmlidXRlcyYpOworI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorICAgIHZpcnR1YWwgdm9p
ZCBwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworI2VuZGlm
CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJik7CisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisgICAgdmlydHVhbCB2b2lk
IGRpZFJlbmRlckZyYW1lKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgY292ZXJlZFJlY3QpOworICAgIHZpcnR1YWwgdm9pZCBwYWdl
VHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKTsKKworICAgIE93blB0cjxXZWJLaXQ6OlBhZ2VWaWV3
cG9ydENvbnRyb2xsZXJDbGllbnRFZmw+IG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudDsK
KyAgICBPd25QdHI8V2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyPiBtX3BhZ2VWaWV3cG9y
dENvbnRyb2xsZXI7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gUGFnZUNsaWVudEltcGxGaXhlZExheW91dF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsTGVnYWN5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsTGVnYWN5LmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGxMZWdh
Y3kuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAgIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBD
b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsTGVnYWN5LmgiCisKKyNpbmNsdWRlICJF
d2tWaWV3SW1wbC5oIgorI2luY2x1ZGUgIkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaCIKKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgRXdrVmlld0NhbGxiYWNr
czsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1BhZ2VDbGllbnRJbXBsTGVnYWN5OjpQYWdlQ2xp
ZW50SW1wbExlZ2FjeShFd2tWaWV3SW1wbCogdmlld0ltcGwpCisgICAgOiBQYWdlQ2xpZW50SW1w
bCh2aWV3SW1wbCkKK3sKK30KKworUGFnZUNsaWVudEltcGxMZWdhY3k6On5QYWdlQ2xpZW50SW1w
bExlZ2FjeSgpCit7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGxMZWdhY3k6OmluaXRpYWxpemUo
KQoreworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsTGVnYWN5OjpkaWRDb21taXRMb2FkKCkKK3sK
KyAgICBtX3ZpZXdJbXBsLT51cGRhdGUoKTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbExlZ2Fj
eTo6dXBkYXRlVmlld3BvcnRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpCit7Cisg
ICAgbV92aWV3SW1wbC0+cGFnZSgpLT5kcmF3aW5nQXJlYSgpLT5zZXRWaXNpYmxlQ29udGVudHNS
ZWN0KEludFJlY3QobV92aWV3SW1wbC0+c2Nyb2xsUG9zaXRpb24oKSwgc2l6ZSksIG1fdmlld0lt
cGwtPnNjYWxlRmFjdG9yKCksIEZsb2F0UG9pbnQoKSk7Cit9CisKK3ZvaWQgUGFnZUNsaWVudElt
cGxMZWdhY3k6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3
cG9ydEF0dHJpYnV0ZXMmKQoreworICAgIG1fdmlld0ltcGwtPnVwZGF0ZSgpOworfQorCit2b2lk
IFBhZ2VDbGllbnRJbXBsTGVnYWN5OjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgc2l6ZSkKK3sKKyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyAgICBt
X3ZpZXdJbXBsLT5wYWdlKCktPmRyYXdpbmdBcmVhKCktPmxheWVyVHJlZUNvb3JkaW5hdG9yUHJv
eHkoKS0+c2V0Q29udGVudHNTaXplKEZsb2F0U2l6ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0
KCkpKTsKKyAgICBtX3ZpZXdJbXBsLT51cGRhdGUoKTsKKyNlbHNlCisgICAgbV92aWV3SW1wbC0+
aW5mb3JtQ29udGVudHNTaXplQ2hhbmdlKHNpemUpOworI2VuZGlmCit9CisKKyNpZiBVU0UoVElM
RURfQkFDS0lOR19TVE9SRSkKK3ZvaWQgUGFnZUNsaWVudEltcGxMZWdhY3k6OnBhZ2VEaWRSZXF1
ZXN0U2Nyb2xsKGNvbnN0IEludFBvaW50JiBwb3NpdGlvbikKK3sKKyAgICBtX3ZpZXdJbXBsLT5z
ZXRTY3JvbGxQb3NpdGlvbihwb3NpdGlvbik7CisgICAgbV92aWV3SW1wbC0+dXBkYXRlKCk7Cit9
CisKK3ZvaWQgUGFnZUNsaWVudEltcGxMZWdhY3k6OmRpZFJlbmRlckZyYW1lKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikKK3sKKyAgICBtX3ZpZXdJbXBs
LT51cGRhdGUoKTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbExlZ2FjeTo6cGFnZVRyYW5zaXRp
b25WaWV3cG9ydFJlYWR5KCkKK3sKKyAgICBtX3ZpZXdJbXBsLT51cGRhdGUoKTsKK30KKyNlbmRp
ZgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvUGFnZUNsaWVudEltcGxMZWdhY3kuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsTGVnYWN5LmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsTGVnYWN5LmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3Vu
ZyBFbGVjdHJvbmljcworICAgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBhZ2VDbGllbnRJbXBsTGVn
YWN5X2gKKyNkZWZpbmUgUGFnZUNsaWVudEltcGxMZWdhY3lfaAorCisjaW5jbHVkZSAiUGFnZUNs
aWVudEltcGwuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBhZ2VDbGllbnRJbXBs
TGVnYWN5IDogcHVibGljIFBhZ2VDbGllbnRJbXBsIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c093blB0cjxQYWdlQ2xpZW50SW1wbD4gY3JlYXRlKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUGFnZUNsaWVudEltcGxMZWdhY3kodmll
d0ltcGwpKTsKKyAgICB9CisgICAgdmlydHVhbCB+UGFnZUNsaWVudEltcGxMZWdhY3koKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZSgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRM
b2FkKCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZpZXdwb3J0U2l6ZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJik7CisKK3ByaXZhdGU6CisKKyAgICBleHBsaWNpdCBQYWdlQ2xpZW50SW1wbExl
Z2FjeShFd2tWaWV3SW1wbCopOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFBy
b3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJik7CisjaWYgVVNFKFRJ
TEVEX0JBQ0tJTkdfU1RPUkUpCisgICAgdmlydHVhbCB2b2lkIHBhZ2VEaWRSZXF1ZXN0U2Nyb2xs
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisjZW5kaWYKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKKyNpZiBVU0UoVElM
RURfQkFDS0lOR19TVE9SRSkKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVuZGVyRnJhbWUoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBj
b3ZlcmVkUmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFk
eSgpOworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBh
Z2VDbGllbnRJbXBsTGVnYWN5X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNw
cAkocmV2aXNpb24gMTMzMzMwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyAr
NjQsNiBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNlCiB2b2lkIFBh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnVwZGF0ZVZpZXdwb3J0U2l6ZShjb25zdCBJ
bnRTaXplJiB2aWV3cG9ydFNpemUpCiB7CiAgICAgbV92aWV3cG9ydFNpemUgPSB2aWV3cG9ydFNp
emU7Ci0gICAgbV92aWV3SW1wbC0+cGFnZSgpLT5zZXRWaWV3cG9ydFNpemUodmlld3BvcnRTaXpl
KTsKIAogICAgIEFTU0VSVChtX2NvbnRyb2xsZXIpOwogICAgIG1fY29udHJvbGxlci0+ZGlkQ2hh
bmdlVmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7CkBAIC04NywxMyArODYsMTcgQEAgdm9pZCBQ
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaQogdm9pZCBQYWdlVmlld3BvcnRDb250
cm9sbGVyQ2xpZW50RWZsOjpzZXRWaWV3cG9ydFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmIGNvbnRlbnRzUG9pbnQpCiB7CiAgICAgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChJbnRQ
b2ludChjb250ZW50c1BvaW50LngoKSwgY29udGVudHNQb2ludC55KCkpLCBtX3NjYWxlRmFjdG9y
LCBGbG9hdFBvaW50KCkpOworICAgIG1fdmlld0ltcGwtPnNldFNjcm9sbFBvc2l0aW9uKEludFBv
aW50KGNvbnRlbnRzUG9pbnQueCgpLCBjb250ZW50c1BvaW50LnkoKSkpOwogfQogCiB2b2lkIFBh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNldENvbnRlbnRzU2NhbGUoZmxvYXQgbmV3
U2NhbGUsIGJvb2wgdHJlYXRBc0luaXRpYWxWYWx1ZSkKIHsKLSAgICBpZiAodHJlYXRBc0luaXRp
YWxWYWx1ZSkKKyAgICBpZiAodHJlYXRBc0luaXRpYWxWYWx1ZSkgewogICAgICAgICBtX3Njcm9s
bFBvc2l0aW9uID0gSW50UG9pbnQoKTsKKyAgICAgICAgbV92aWV3SW1wbC0+c2V0U2Nyb2xsUG9z
aXRpb24oSW50UG9pbnQoKSk7CisgICAgfQogICAgIG1fc2NhbGVGYWN0b3IgPSBuZXdTY2FsZTsK
KyAgICBtX3ZpZXdJbXBsLT5zZXRTY2FsZUZhY3RvcihuZXdTY2FsZSk7CiB9CiAKIHZvaWQgUGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkUmVzdW1lQ29udGVudCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172142</attachid>
            <date>2012-11-02 14:38:25 -0700</date>
            <delta_ts>2012-11-02 19:45:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>100674.patch</filename>
            <type>text/plain</type>
            <size>33526</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMzM0MykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBACisyMDEyLTExLTAyICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFsbG93
IHVzaW5nIEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HIHdpdGhvdXQgQ09PUkRJTkFURURfR1JBUEhJ
Q1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDY3
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ug
YSBkaXN0aW5jdGlvbiBiZXR3ZWVuIGNhbGxpbmcgZXdrX3ZpZXdfYmFzZV9hZGQgYW5kIGV3a192
aWV3X3NtYXJ0X2FkZC4KKyAgICAgICAgQ2FsbGluZyBld2tfdmlld19iYXNlX2FkZCBjcmVhdGVz
IGEgZGVza3RvcCBzdHlsZSB2aWV3LCB0aGF0IGRvZXMgbm90IHN1cHBvcnQKKyAgICAgICAgZml4
ZWQgbGF5b3V0IHNpemUsIHdoaWxlIGNhbGxpbmcgZXdrX3ZpZXdfc21hcnRfYWRkIGRvZXMgc3Vw
cG9ydCBmaXhlZCBsYXlvdXQgc2l6ZS4KKyAgICAgICAgQXMgYSByZXN1bHQsIFdlYktpdFRlc3RS
dW5uZXIgYW5kIHRoZSBpbnNwZWN0b3Igd2luZG93IGRvIG5vdCBzdXBwb3J0CisgICAgICAgIGZp
eGVkIGxheW91dCBzaXplLCB3aGlsZSBNaW5pQnJvd3NlciBkb2VzLiBUaGlzIGNoYW5nZSBhbGxv
d3MgbWFueSBEdW1wQXNUZXh0CisgICAgICAgIGxheW91dCB0ZXN0cyB0byBwYXNzIHdpdGhvdXQg
bW9kaWZpY2F0aW9uLCB3aGVuIEFDIGlzIGVuYWJsZWQuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVm
bC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHA6Cisg
ICAgICAgIChFd2tWaWV3SW1wbDo6RXdrVmlld0ltcGwpOgorICAgICAgICAoRXdrVmlld0ltcGw6
OmRpc3BsYXlUaW1lckZpcmVkKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjppbmZvcm1Mb2FkQ29t
bWl0dGVkKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjppbmZvcm1Db250ZW50c1NpemVDaGFuZ2Up
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmg6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoRXdrVmlld0ltcGwpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnBh
Z2VDbGllbnQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnNldFNjYWxlRmFjdG9yKToKKyAgICAg
ICAgKEV3a1ZpZXdJbXBsOjpzY2FsZUZhY3Rvcik6CisgICAgICAgIChFd2tWaWV3SW1wbDo6c2V0
U2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoRXdrVmlld0ltcGw6OnNjcm9sbFBvc2l0aW9uKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgICh0b1dl
YkNvbnRlbnRUcmFuc2Zvcm0pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZSk6
CisgICAgICAgIChjcmVhdGVFd2tWaWV3KToKKyAgICAgICAgKGV3a192aWV3X2Jhc2VfYWRkKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpoYW5kbGVEb3dubG9hZFJl
cXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGwuaDoKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChQYWdlQ2xpZW50SW1wbCk6CisgICAgICAgICogVUlQcm9j
ZXNzL2VmbC9QYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0LmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0OjpQYWdl
Q2xpZW50SW1wbEZpeGVkTGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGxG
aXhlZExheW91dDo6flBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQpOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGxGaXhlZExheW91dDo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQ6OnVwZGF0ZVZpZXdwb3J0U2l6ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQ6OmRpZENoYW5nZVZpZXdw
b3J0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsRml4ZWRMYXlv
dXQ6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsRml4ZWRMYXlvdXQ6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGxGaXhlZExheW91dDo6ZGlkUmVuZGVyRnJhbWUpOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0OjpwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVh
ZHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGxGaXhlZExheW91dC5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChQYWdlQ2xpZW50SW1wbEZpeGVk
TGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGxGaXhlZExheW91dDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsTGVnYWN5LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bExlZ2FjeTo6UGFnZUNsaWVudEltcGxMZWdhY3kpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xp
ZW50SW1wbExlZ2FjeTo6flBhZ2VDbGllbnRJbXBsTGVnYWN5KToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGxMZWdhY3k6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Q2xpZW50SW1wbExlZ2FjeTo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsTGVnYWN5Ojp1cGRhdGVWaWV3cG9ydFNpemUpOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbExlZ2FjeTo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGxMZWdhY3k6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSk6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsTGVnYWN5OjpwYWdlRGlkUmVxdWVzdFNj
cm9sbCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsTGVnYWN5OjpkaWRSZW5kZXJG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsTGVnYWN5OjpwYWdlVHJhbnNp
dGlvblZpZXdwb3J0UmVhZHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudElt
cGxMZWdhY3kuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoUGFnZUNsaWVu
dEltcGxMZWdhY3kpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbExlZ2FjeTo6Y3Jl
YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnRFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
RWZsOjp1cGRhdGVWaWV3cG9ydFNpemUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50RWZsOjpzZXRWaWV3cG9ydFBvc2l0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2V0Q29udGVudHNTY2FsZSk6CisK
IDIwMTItMTEtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgYSBQbHVnaW5JbmFjdGl2ZSBwbHVnLWluIHVuYXZhaWxhYmlsaXR5IHJlYXNvbgpJ
bmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UJKHJldmlzaW9uIDEzMzMzMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4Myw4
IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9lZmwvSW5wdXRN
ZXRob2RDb250ZXh0RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvTmV0d29ya0luZm9Qcm92aWRl
ci5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAorICAgIFVJUHJvY2Vz
cy9lZmwvUGFnZUNsaWVudEltcGxMZWdhY3kuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9QYWdlQ2xp
ZW50SW1wbEZpeGVkTGF5b3V0LmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRF
ZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9QYWdlUG9saWN5Q2xpZW50RWZsLmNwcAogICAgIFVJ
UHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZsLmNwcApJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAkocmV2aXNpb24gMTMzMzMwKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCwxMSArMjgsMTEgQEAKICNpbmNsdWRlICJMYXllclRyZWVDb29yZGlu
YXRvclByb3h5LmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlUmVuZGVyZXIuaCIKICNpbmNsdWRlICJQ
YWdlQ2xpZW50SW1wbC5oIgorI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQuaCIK
KyNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbExlZ2FjeS5oIgogI2luY2x1ZGUgIlBhZ2VMb2FkQ2xp
ZW50RWZsLmgiCiAjaW5jbHVkZSAiUGFnZVBvbGljeUNsaWVudEVmbC5oIgogI2luY2x1ZGUgIlBh
Z2VVSUNsaWVudEVmbC5oIgotI2luY2x1ZGUgIlBhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaCIKLSNp
bmNsdWRlICJQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VMb2FkQ2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJX
ZWJDb250ZXh0LmgiCkBAIC05NSwxMCArOTUsMTAgQEAgY29uc3QgRXZhc19PYmplY3QqIEV3a1Zp
ZXdJbXBsOjp2aWV3RnJvbQogICAgIHJldHVybiBwYWdlVmlld01hcCgpLmdldChwYWdlKTsKIH0K
IAotRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKEV2YXNfT2JqZWN0KiB2aWV3LCBQYXNzUmVmUHRy
PEV3a19Db250ZXh0PiBjb250ZXh0LCBQYXNzUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3Vw
KQorRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKEV2YXNfT2JqZWN0KiB2aWV3LCBQYXNzUmVmUHRy
PEV3a19Db250ZXh0PiBjb250ZXh0LCBQYXNzUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3Vw
LCBXaW5kb3dNb2RlIG1vZGUpCiAgICAgOiBtX3ZpZXcodmlldykKICAgICAsIG1fY29udGV4dChj
b250ZXh0KQotICAgICwgbV9wYWdlQ2xpZW50KFBhZ2VDbGllbnRJbXBsOjpjcmVhdGUodGhpcykp
CisgICAgLCBtX3BhZ2VDbGllbnQobW9kZSA9PSBGaXhlZExheW91dE1vZGUgPyBQYWdlQ2xpZW50
SW1wbEZpeGVkTGF5b3V0OjpjcmVhdGUodGhpcykgOiBQYWdlQ2xpZW50SW1wbExlZ2FjeTo6Y3Jl
YXRlKHRoaXMpKQogICAgICwgbV9wYWdlUHJveHkodG9JbXBsKG1fY29udGV4dC0+d2tDb250ZXh0
KCkpLT5jcmVhdGVXZWJQYWdlKG1fcGFnZUNsaWVudC5nZXQoKSwgcGFnZUdyb3VwLmdldCgpKSkK
ICAgICAsIG1fcGFnZUxvYWRDbGllbnQoUGFnZUxvYWRDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkK
ICAgICAsIG1fcGFnZVBvbGljeUNsaWVudChQYWdlUG9saWN5Q2xpZW50RWZsOjpjcmVhdGUodGhp
cykpCkBAIC0xMDgsOCArMTA4LDcgQEAgRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKEV2YXNfT2Jq
ZWN0KiB2aQogICAgICwgbV9mb3JtQ2xpZW50KEZvcm1DbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkK
ICAgICAsIG1fYmFja0ZvcndhcmRMaXN0KEV3a19CYWNrX0ZvcndhcmRfTGlzdDo6Y3JlYXRlKHRv
QVBJKG1fcGFnZVByb3h5LT5iYWNrRm9yd2FyZExpc3QoKSkpKQogI2lmIFVTRShUSUxFRF9CQUNL
SU5HX1NUT1JFKQotICAgICwgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50KFBhZ2VWaWV3
cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKLSAgICAsIG1fcGFnZVZpZXdw
b3J0Q29udHJvbGxlcihhZG9wdFB0cihuZXcgUGFnZVZpZXdwb3J0Q29udHJvbGxlcihtX3BhZ2VQ
cm94eS5nZXQoKSwgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LmdldCgpKSkpCisgICAg
LCBtX3NjYWxlRmFjdG9yKDEpCiAjZW5kaWYKICAgICAsIG1fc2V0dGluZ3MoRXdrX1NldHRpbmdz
OjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2N1cnNvckdyb3VwKDApCkBAIC0xMzAsMTUgKzEyOSwx
MyBAQCBFd2tWaWV3SW1wbDo6RXdrVmlld0ltcGwoRXZhc19PYmplY3QqIHZpCiAjaWYgRU5BQkxF
KFdFQkdMKQogICAgIG1fcGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0
V2ViR0xFbmFibGVkKHRydWUpOwogI2VuZGlmCi0gICAgbV9wYWdlUHJveHktPnNldFVzZUZpeGVk
TGF5b3V0KHRydWUpOworICAgIGlmIChtb2RlID09IEZpeGVkTGF5b3V0TW9kZSkKKyAgICAgICAg
bV9wYWdlUHJveHktPnNldFVzZUZpeGVkTGF5b3V0KHRydWUpOwogI2VuZGlmCiAKKyAgICBtX3Bh
Z2VDbGllbnQtPmluaXRpYWxpemUoKTsKICAgICBtX3BhZ2VQcm94eS0+aW5pdGlhbGl6ZVdlYlBh
Z2UoKTsKIAotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAgIG1fcGFnZUNsaWVudC0+
c2V0UGFnZVZpZXdwb3J0Q29udHJvbGxlcihtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuZ2V0KCkp
OwotI2VuZGlmCi0KICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgbV9wYWdlUHJveHkt
PmZ1bGxTY3JlZW5NYW5hZ2VyKCktPnNldFdlYlZpZXcobV92aWV3KTsKICAgICBtX3BhZ2VQcm94
eS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCktPnNldEZ1bGxTY3JlZW5FbmFibGVkKHRydWUp
OwpAQCAtMjQ5LDEzICsyNDYsMTAgQEAgdm9pZCBFd2tWaWV3SW1wbDo6ZGlzcGxheVRpbWVyRmly
ZWQoVGltZQogICAgIC8vIFdlIGFyZSBzdXBwb3NlZCB0byBjbGlwIHRvIHRoZSBhY3R1YWwgdmll
d3BvcnQsIG5vdGhpbmcgbGVzcy4KICAgICBJbnRSZWN0IHZpZXdwb3J0KHNkLT52aWV3LngsIHNk
LT52aWV3LnksIHNkLT52aWV3LncsIHNkLT52aWV3LmgpOwogCi0gICAgSW50UG9pbnQgc2Nyb2xs
UG9zaXRpb24gPSBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQtPnNjcm9sbFBvc2l0aW9u
KCk7Ci0gICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnQtPnNjYWxlRmFjdG9yKCk7Ci0KICAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCBt
YXRyaXg7CiAgICAgbWF0cml4LnRyYW5zbGF0ZSh2aWV3cG9ydC54KCksIHZpZXdwb3J0LnkoKSk7
Ci0gICAgbWF0cml4LnNjYWxlKHNjYWxlRmFjdG9yKTsKLSAgICBtYXRyaXgudHJhbnNsYXRlKC1z
Y3JvbGxQb3NpdGlvbi54KCksIC1zY3JvbGxQb3NpdGlvbi55KCkpOworICAgIG1hdHJpeC5zY2Fs
ZShtX3NjYWxlRmFjdG9yKTsKKyAgICBtYXRyaXgudHJhbnNsYXRlKC1tX3Njcm9sbFBvc2l0aW9u
LngoKSwgLW1fc2Nyb2xsUG9zaXRpb24ueSgpKTsKIAogICAgIExheWVyVHJlZVJlbmRlcmVyKiBy
ZW5kZXJlciA9IHBhZ2UoKS0+ZHJhd2luZ0FyZWEoKS0+bGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94
eSgpLT5sYXllclRyZWVSZW5kZXJlcigpOwogICAgIHJlbmRlcmVyLT5zZXRBY3RpdmUodHJ1ZSk7
CkBAIC0zMjgsNyArMzIyLDcgQEAgdm9pZCBFd2tWaWV3SW1wbDo6c2V0SW1hZ2VEYXRhKHZvaWQq
IGltYQogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogdm9pZCBFd2tWaWV3SW1wbDo6aW5m
b3JtTG9hZENvbW1pdHRlZCgpCiB7Ci0gICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRD
b21taXRMb2FkKCk7CisgICAgbV9wYWdlQ2xpZW50LT5kaWRDb21taXRMb2FkKCk7CiB9CiAjZW5k
aWYKIApAQCAtNTE3LDcgKzUxMSw3IEBAIGJvb2wgRXdrVmlld0ltcGw6OmVudGVyQWNjZWxlcmF0
ZWRDb21wb3MKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIG1fcGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudC0+c2V0UmVuZGVyZXJBY3RpdmUodHJ1ZSk7CisgICAgcGFnZSgp
LT5kcmF3aW5nQXJlYSgpLT5sYXllclRyZWVDb29yZGluYXRvclByb3h5KCktPmxheWVyVHJlZVJl
bmRlcmVyKCktPnNldEFjdGl2ZSh0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTc2
LDcgKzU3MCw3IEBAIHZvaWQgRXdrVmlld0ltcGw6OmRpc21pc3NDb2xvclBpY2tlcigpCiB2b2lk
IEV3a1ZpZXdJbXBsOjppbmZvcm1Db250ZW50c1NpemVDaGFuZ2UoY29uc3QgSW50U2l6ZSYgc2l6
ZSkKIHsKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgbV9wYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50LT5kaWRDaGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7CisgICAgbV9wYWdl
Q2xpZW50LT5kaWRDaGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShzaXplKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvRXdrVmlld0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9Fd2tWaWV3SW1wbC5oCShyZXZpc2lvbiAxMzMzMzApCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw4
ICs1Miw2IEBAIGNsYXNzIFBhZ2VDbGllbnRJbXBsOwogY2xhc3MgUGFnZUxvYWRDbGllbnRFZmw7
CiBjbGFzcyBQYWdlUG9saWN5Q2xpZW50RWZsOwogY2xhc3MgUGFnZVVJQ2xpZW50RWZsOwotY2xh
c3MgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDsKLWNsYXNzIFBhZ2VWaWV3cG9ydENv
bnRyb2xsZXI7CiBjbGFzcyBSZXNvdXJjZUxvYWRDbGllbnRFZmw7CiBjbGFzcyBXZWJQYWdlR3Jv
dXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7CkBAIC05MSw3ICs4OSwxMyBAQCB0eXBlZGVmIHN0cnVj
dCBFd2tfVmlld19TbWFydF9EYXRhIEV3a19WCiAKIGNsYXNzIEV3a1ZpZXdJbXBsIHsKIHB1Ymxp
YzoKLSAgICBFd2tWaWV3SW1wbChFdmFzX09iamVjdCogdmlldywgUGFzc1JlZlB0cjxFd2tfQ29u
dGV4dD4gY29udGV4dCwgUGFzc1JlZlB0cjxXZWJLaXQ6OldlYlBhZ2VHcm91cD4gcGFnZUdyb3Vw
KTsKKworICAgIHR5cGVkZWYgZW51bSB7CisgICAgICAgIExlZ2FjeU1vZGUsCisgICAgICAgIEZp
eGVkTGF5b3V0TW9kZQorICAgIH0gV2luZG93TW9kZTsKKworICAgIEV3a1ZpZXdJbXBsKEV2YXNf
T2JqZWN0KiB2aWV3LCBQYXNzUmVmUHRyPEV3a19Db250ZXh0PiBjb250ZXh0LCBQYXNzUmVmUHRy
PFdlYktpdDo6V2ViUGFnZUdyb3VwPiBwYWdlR3JvdXAsIFdpbmRvd01vZGUpOwogICAgIH5Fd2tW
aWV3SW1wbCgpOwogCiAgICAgc3RhdGljIEV3a1ZpZXdJbXBsKiBmcm9tRXZhc09iamVjdChjb25z
dCBFdmFzX09iamVjdCogdmlldyk7CkBAIC0xNzQsOCArMTc4LDEzIEBAIHB1YmxpYzoKICAgICB1
bnNpZ25lZCBsb25nIGxvbmcgaW5mb3JtRGF0YWJhc2VRdW90YVJlYWNoZWQoY29uc3QgU3RyaW5n
JiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcg
bG9uZyBjdXJyZW50UXVvdGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50T3JpZ2luVXNhZ2Us
IHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdW5zaWduZWQgbG9uZyBs
b25nIGV4cGVjdGVkVXNhZ2UpOwogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAg
V2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsKiBwYWdlVmlld3BvcnRDb250
cm9sbGVyQ2xpZW50KCkgeyByZXR1cm4gbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50Lmdl
dCgpOyB9Ci0gICAgV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyKiBwYWdlVmlld3BvcnRD
b250cm9sbGVyKCkgeyByZXR1cm4gbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLmdldCgpOyB9Cisg
ICAgV2ViS2l0OjpQYWdlQ2xpZW50SW1wbCogcGFnZUNsaWVudCgpIHsgcmV0dXJuIG1fcGFnZUNs
aWVudC5nZXQoKTsgfQorCisgICAgdm9pZCBzZXRTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3Rv
cikgeyBtX3NjYWxlRmFjdG9yID0gc2NhbGVGYWN0b3I7IH0KKyAgICBmbG9hdCBzY2FsZUZhY3Rv
cigpIGNvbnN0IHsgcmV0dXJuIG1fc2NhbGVGYWN0b3I7IH0KKworICAgIHZvaWQgc2V0U2Nyb2xs
UG9zaXRpb24oV2ViQ29yZTo6SW50UG9pbnQgcG9zaXRpb24pIHsgbV9zY3JvbGxQb3NpdGlvbiA9
IHBvc2l0aW9uOyB9CisgICAgV2ViQ29yZTo6SW50UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25z
dCB7IHJldHVybiBtX3Njcm9sbFBvc2l0aW9uOyB9CiAjZW5kaWYKICNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCiAgICAgRXZhc19HTCogZXZhc0dMKCkgeyByZXR1cm4gbV9ldmFzR0wu
Z2V0KCk7IH0KQEAgLTIyMiw4ICsyMzEsOCBAQCBwcml2YXRlOgogICAgIE93blB0cjxXZWJLaXQ6
OkZvcm1DbGllbnRFZmw+IG1fZm9ybUNsaWVudDsKICAgICBPd25QdHI8RXdrX0JhY2tfRm9yd2Fy
ZF9MaXN0PiBtX2JhY2tGb3J3YXJkTGlzdDsKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkK
LSAgICBPd25QdHI8V2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsPiBtX3Bh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQ7Ci0gICAgT3duUHRyPFdlYktpdDo6UGFnZVZpZXdw
b3J0Q29udHJvbGxlcj4gbV9wYWdlVmlld3BvcnRDb250cm9sbGVyOworICAgIGZsb2F0IG1fc2Nh
bGVGYWN0b3I7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9zY3JvbGxQb3NpdGlvbjsKICNlbmRp
ZgogICAgIE93blB0cjxFd2tfU2V0dGluZ3M+IG1fc2V0dGluZ3M7CiAgICAgY29uc3QgY2hhciog
bV9jdXJzb3JHcm91cDsgLy8gVGhpcyBpcyBhbiBhZGRyZXNzLCBkbyBub3QgZnJlZSBpdCBvciB1
c2UgV0tFaW5hU2hhcmVkU3RyaW5nLgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3LmNwcAkocmV2aXNpb24gMTMzMzMwKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIs
OSArMjAyLDkgQEAgc3RhdGljIEFmZmluZVRyYW5zZm9ybSB0b1dlYkNvbnRlbnRUcmFucwogICAg
IEVXS19WSUVXX0lNUExfR0VUX0JZX1NEX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIHRyYW5z
Zm9ybSk7CiAKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICBJbnRQb2ludCBzY3Jv
bGxQb3MgPSBpbXBsLT5wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50KCktPnNjcm9sbFBvc2l0
aW9uKCk7CisgICAgSW50UG9pbnQgc2Nyb2xsUG9zID0gaW1wbC0+c2Nyb2xsUG9zaXRpb24oKTsK
ICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKHNjcm9sbFBvcy54KCksIHNjcm9sbFBvcy55KCkpOwot
ICAgIHRyYW5zZm9ybS5zY2FsZSgxIC8gaW1wbC0+cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVu
dCgpLT5zY2FsZUZhY3RvcigpKTsKKyAgICB0cmFuc2Zvcm0uc2NhbGUoMSAvIGltcGwtPnNjYWxl
RmFjdG9yKCkpOwogI2VuZGlmCiAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgtc21hcnREYXRhLT52
aWV3LngsIC1zbWFydERhdGEtPnZpZXcueSk7CiAKQEAgLTQzNSw4ICs0MzUsOCBAQCBzdGF0aWMg
dm9pZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2CiAgICAgICAgICAgICBpbXBsLT5jcmVh
dGVHTFN1cmZhY2UoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7CiAgICAgICAgIH0KICNlbmRpZgot
I2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLSAgICAgICAgaW1wbC0+cGFnZVZpZXdwb3J0
Q29udHJvbGxlckNsaWVudCgpLT51cGRhdGVWaWV3cG9ydFNpemUoSW50U2l6ZSh3aWR0aCwgaGVp
Z2h0KSk7CisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisgICAgICAgIGltcGwtPnBhZ2VD
bGllbnQoKS0+dXBkYXRlVmlld3BvcnRTaXplKEludFNpemUod2lkdGgsIGhlaWdodCkpOwogI2Vu
ZGlmCiAgICAgfQogfQpAQCAtNTM3LDcgKzUzNyw3IEBAIHN0YXRpYyBpbmxpbmUgRXZhc19TbWFy
dCogY3JlYXRlRXdrVmlld1MKICAgICByZXR1cm4gc21hcnQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
RXZhc19PYmplY3QqIGNyZWF0ZUV3a1ZpZXcoRXZhcyogY2FudmFzLCBFdmFzX1NtYXJ0KiBzbWFy
dCwgUGFzc1JlZlB0cjxFd2tfQ29udGV4dD4gY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdy
b3VwUmVmID0gMCkKK3N0YXRpYyBpbmxpbmUgRXZhc19PYmplY3QqIGNyZWF0ZUV3a1ZpZXcoRXZh
cyogY2FudmFzLCBFdmFzX1NtYXJ0KiBzbWFydCwgUGFzc1JlZlB0cjxFd2tfQ29udGV4dD4gY29u
dGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmID0gMCwgRXdrVmlld0ltcGw6OldpbmRv
d01vZGUgbW9kZSA9IEV3a1ZpZXdJbXBsOjpGaXhlZExheW91dE1vZGUpCiB7CiAgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNhbnZhcywgMCk7CiAgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKHNtYXJ0LCAwKTsKQEAgLTU1NCw4ICs1NTQsNyBAQCBzdGF0aWMgaW5s
aW5lIEV2YXNfT2JqZWN0KiBjcmVhdGVFd2tWaWV3CiAKICAgICBBU1NFUlQoIXNtYXJ0RGF0YS0+
cHJpdik7CiAgICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwID0gcGFnZUdyb3VwUmVm
ID8gdG9JbXBsKHBhZ2VHcm91cFJlZikgOiBXZWJQYWdlR3JvdXA6OmNyZWF0ZSgpOwotICAgIHNt
YXJ0RGF0YS0+cHJpdiA9IG5ldyBFd2tWaWV3SW1wbChld2tWaWV3LCBjb250ZXh0LCBwYWdlR3Jv
dXApOwotCisgICAgc21hcnREYXRhLT5wcml2ID0gbmV3IEV3a1ZpZXdJbXBsKGV3a1ZpZXcsIGNv
bnRleHQsIHBhZ2VHcm91cCwgbW9kZSk7CiAgICAgcmV0dXJuIGV3a1ZpZXc7CiB9CiAKQEAgLTU2
NSw3ICs1NjQsNyBAQCBzdGF0aWMgaW5saW5lIEV2YXNfT2JqZWN0KiBjcmVhdGVFd2tWaWV3CiAg
Ki8KIEV2YXNfT2JqZWN0KiBld2tfdmlld19iYXNlX2FkZChFdmFzKiBjYW52YXMsIFdLQ29udGV4
dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCiB7Ci0gICAgcmV0
dXJuIGNyZWF0ZUV3a1ZpZXcoY2FudmFzLCBjcmVhdGVFd2tWaWV3U21hcnRDbGFzcygpLCBFd2tf
Q29udGV4dDo6Y3JlYXRlKGNvbnRleHRSZWYpLCBwYWdlR3JvdXBSZWYpOworICAgIHJldHVybiBj
cmVhdGVFd2tWaWV3KGNhbnZhcywgY3JlYXRlRXdrVmlld1NtYXJ0Q2xhc3MoKSwgRXdrX0NvbnRl
eHQ6OmNyZWF0ZShjb250ZXh0UmVmKSwgcGFnZUdyb3VwUmVmLCBFd2tWaWV3SW1wbDo6TGVnYWN5
TW9kZSk7CiB9CiAKIEV2YXNfT2JqZWN0KiBld2tfdmlld19zbWFydF9hZGQoRXZhcyogY2FudmFz
LCBFdmFzX1NtYXJ0KiBzbWFydCwgRXdrX0NvbnRleHQqIGNvbnRleHQpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAkocmV2aXNpb24g
MTMzMzMwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDEwICs0NCw2IEBACiAjaW5jbHVkZSAiZXdrX3ByaXZh
dGUuaCIKICNpbmNsdWRlICJld2tfdmlldy5oIgogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RP
UkUpCi0jaW5jbHVkZSAiUGFnZVZpZXdwb3J0Q29udHJvbGxlci5oIgotI2VuZGlmCi0KIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIEV3a1ZpZXdDYWxsYmFja3M7CiAK
QEAgLTE2NiwxNSArMTYyLDYgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0Q3Vyc29ySGlkZGVu
VW50aQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OmRp
ZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0
ZXMmIGF0dHIpCi17Ci0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgbV9wYWdlVmll
d3BvcnRDb250cm9sbGVyLT5kaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMoYXR0cik7Ci0jZWxz
ZQotICAgIFVOVVNFRF9QQVJBTShhdHRyKTsKLSNlbmRpZgotfQotCiB2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpyZWdpc3RlckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4g
Y29tbWFuZCwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvIHVuZG9PclJlZG8pCiB7CiAgICAgbV91
bmRvQ29udHJvbGxlci5yZWdpc3RlckVkaXRDb21tYW5kKGNvbW1hbmQsIHVuZG9PclJlZG8pOwpA
QCAtMzI2LDMyICszMTMsNCBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpoYW5kbGVEb3dubG9hZFJl
cXVlCiAgICAgY29udGV4dC0+ZG93bmxvYWRNYW5hZ2VyKCktPnJlZ2lzdGVyRG93bmxvYWQoZG93
bmxvYWQsIG1fdmlld0ltcGwpOwogfQogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi12
b2lkIFBhZ2VDbGllbnRJbXBsOjpwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBJbnRQb2ludCYg
cG9zaXRpb24pCi17Ci0gICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5wYWdlRGlkUmVxdWVz
dFNjcm9sbChwb3NpdGlvbik7Ci19Ci0jZW5kaWYKLQotdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlk
Q2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpCi17Ci0jaWYg
VVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5k
aWRDaGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7Ci0jZWxzZQotICAgIG1fdmlld0ltcGwtPmluZm9y
bUNvbnRlbnRzU2l6ZUNoYW5nZShzaXplKTsKLSNlbmRpZgotfQotCi0jaWYgVVNFKFRJTEVEX0JB
Q0tJTkdfU1RPUkUpCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRSZW5kZXJGcmFtZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNv
dmVyZWRSZWN0KQotewotICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkUmVuZGVyRnJh
bWUoY29udGVudHNTaXplLCBjb3ZlcmVkUmVjdCk7Ci19Ci0KLXZvaWQgUGFnZUNsaWVudEltcGw6
OnBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpCi17Ci0gICAgbV9wYWdlVmlld3BvcnRDb250
cm9sbGVyLT5wYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKTsKLX0KLSNlbmRpZgotCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFn
ZUNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1BhZ2VDbGllbnRJbXBsLmgJKHJldmlzaW9uIDEzMzMzMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMjIgKzM0
LDE5IEBAIGNsYXNzIEV3a1ZpZXdJbXBsOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3Mg
UGFnZVZpZXdwb3J0Q29udHJvbGxlcjsKLQogY2xhc3MgUGFnZUNsaWVudEltcGwgOiBwdWJsaWMg
UGFnZUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8UGFnZUNsaWVudElt
cGw+IGNyZWF0ZShFd2tWaWV3SW1wbCogdmlld0ltcGwpCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IFBhZ2VDbGllbnRJbXBsKHZpZXdJbXBsKSk7Ci0gICAgfQotICAgIH5QYWdl
Q2xpZW50SW1wbCgpOworICAgIHZpcnR1YWwgflBhZ2VDbGllbnRJbXBsKCk7CisKKyAgICAvLyBD
YWxsZWQgZnJvbSB0aGUgdmlldworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRMb2FkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVWaWV3cG9ydFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSA9
IDA7CiAKICAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwoKSBjb25zdDsKLSNpZiBVU0UoVElMRURf
QkFDS0lOR19TVE9SRSkKLSAgICB2b2lkIHNldFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIoUGFnZVZp
ZXdwb3J0Q29udHJvbGxlciogY29udHJvbGxlcikgeyBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIg
PSBjb250cm9sbGVyOyB9Ci0jZW5kaWYKIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgICBleHBs
aWNpdCBQYWdlQ2xpZW50SW1wbChFd2tWaWV3SW1wbCopOwogCiAgICAgLy8gUGFnZUNsaWVudApA
QCAtNzEsNyArNjgsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvcihj
b25zdCBXZWJDb3JlOjpDdXJzb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29ySGlkZGVu
VW50aWxNb3VzZU1vdmVzKGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9y
dFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJik7CisgICAgdmly
dHVhbCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3
cG9ydEF0dHJpYnV0ZXMmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJFZGl0Q29t
bWFuZChQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+LCBXZWJQYWdlUHJveHk6OlVuZG9P
clJlZG8pOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckFsbEVkaXRDb21tYW5kcygpOwpAQCAtMTE2
LDIyICsxMTMsMTQgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY291bnRTdHJpbmdNYXRj
aGVzSW5DdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5z
aWduZWQpOwogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgdmlydHVhbCB2b2lk
IHBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7Ci0jZW5kaWYK
LQotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYpOwotCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgdmlydHVhbCB2
b2lkIGRpZFJlbmRlckZyYW1lKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNvbnRlbnRzU2l6ZSwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY292ZXJlZFJlY3QpOwotICAgIHZpcnR1YWwgdm9pZCBw
YWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFJl
cXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGRpZFJlbmRlckZyYW1lKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNvbnRlbnRzU2l6ZSwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY292ZXJlZFJlY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCkgPSAwOwogI2VuZGlmCiAKLXByaXZhdGU6
Citwcm90ZWN0ZWQ6CiAgICAgRXdrVmlld0ltcGwqIG1fdmlld0ltcGw7CiAgICAgRGVmYXVsdFVu
ZG9Db250cm9sbGVyIG1fdW5kb0NvbnRyb2xsZXI7Ci0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RP
UkUpCi0gICAgUGFnZVZpZXdwb3J0Q29udHJvbGxlciogbV9wYWdlVmlld3BvcnRDb250cm9sbGVy
OwotI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGxGaXhlZExheW91dC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbEZpeGVkTGF5
b3V0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFn
ZUNsaWVudEltcGxGaXhlZExheW91dC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAgIENvcHly
aWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsRml4
ZWRMYXlvdXQuaCIKKworI2luY2x1ZGUgIkV3a1ZpZXdJbXBsLmgiCisKKyNpZiBVU0UoVElMRURf
QkFDS0lOR19TVE9SRSkKKyNpbmNsdWRlICJQYWdlVmlld3BvcnRDb250cm9sbGVyLmgiCisjaW5j
bHVkZSAiUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5oIgorI2VuZGlmCisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIEV3a1ZpZXdDYWxsYmFja3M7CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitQYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0OjpQYWdlQ2xp
ZW50SW1wbEZpeGVkTGF5b3V0KEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkKKyAgICA6IFBhZ2VDbGll
bnRJbXBsKHZpZXdJbXBsKQoreworfQorCitQYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0Ojp+UGFn
ZUNsaWVudEltcGxGaXhlZExheW91dCgpCit7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGxGaXhl
ZExheW91dDo6aW5pdGlhbGl6ZSgpCit7CisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisg
ICAgLy8gUGFnZUNsaWVudEltcGwgaXMgY3JlYXRlZCBiZWZvcmUgV2ViUGFnZVByb3h5LCBidXQg
UGFnZVZpZXdwb3J0Q29udHJvbGxlcgorICAgIC8vIGlzIGNyZWF0ZWQgYWZ0ZXIgV2ViUGFnZVBy
b3h5LCBzbyBpdCBjYW5ub3QgYmUgY3JlYXRlZCBpbiB0aGUgY29uc3R1Y3RvciAKKyAgICAvLyBv
ZiBQYWdlQ2xpZW50SW1wbC4KKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQgPSBQ
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpjcmVhdGUobV92aWV3SW1wbCk7CisgICAg
bV9wYWdlVmlld3BvcnRDb250cm9sbGVyID0gYWRvcHRQdHIobmV3IFBhZ2VWaWV3cG9ydENvbnRy
b2xsZXIobV92aWV3SW1wbC0+cGFnZSgpLCBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQu
Z2V0KCkpKTsKKyNlbmRpZgorfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQ6OmRp
ZENvbW1pdExvYWQoKQoreworICAgIEFTU0VSVChtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIpOwor
ICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ29tbWl0TG9hZCgpOworfQorCit2b2lk
IFBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQ6OnVwZGF0ZVZpZXdwb3J0U2l6ZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBzaXplKQoreworICAgIEFTU0VSVChtX3BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnQpOworICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC0+dXBkYXRlVmll
d3BvcnRTaXplKHNpemUpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQ6OmRp
ZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0
ZXMmIGF0dHIpCit7CisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisgICAgQVNTRVJUKG1f
cGFnZVZpZXdwb3J0Q29udHJvbGxlcik7CisgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5k
aWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMoYXR0cik7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShhdHRyKTsKKyNlbmRpZgorfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQ6OmRp
ZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQoreworI2lm
IFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorICAgIEFTU0VSVChtX3BhZ2VWaWV3cG9ydENvbnRy
b2xsZXIpOworICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlQ29udGVudHNT
aXplKHNpemUpOworI2Vsc2UKKyAgICBtX3ZpZXdJbXBsLT5pbmZvcm1Db250ZW50c1NpemVDaGFu
Z2Uoc2l6ZSk7CisjZW5kaWYKK30KKworI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQordm9p
ZCBQYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0OjpwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBJ
bnRQb2ludCYgcG9zaXRpb24pCit7CisgICAgQVNTRVJUKG1fcGFnZVZpZXdwb3J0Q29udHJvbGxl
cik7CisgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5wYWdlRGlkUmVxdWVzdFNjcm9sbChw
b3NpdGlvbik7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGxGaXhlZExheW91dDo6ZGlkUmVuZGVy
RnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBjb3ZlcmVkUmVjdCkKK3sKKyAgICBBU1NFUlQobV9wYWdlVmlld3BvcnRDb250
cm9sbGVyKTsKKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPmRpZFJlbmRlckZyYW1lKGNv
bnRlbnRzU2l6ZSwgY292ZXJlZFJlY3QpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsRml4ZWRM
YXlvdXQ6OnBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpCit7CisgICAgQVNTRVJUKG1fcGFn
ZVZpZXdwb3J0Q29udHJvbGxlcik7CisgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5wYWdl
VHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGxG
aXhlZExheW91dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
UGFnZUNsaWVudEltcGxGaXhlZExheW91dC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0LmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVj
dHJvbmljcworICAgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBhZ2VDbGllbnRJbXBsRml4ZWRMYXlv
dXRfaAorI2RlZmluZSBQYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0X2gKKworI2luY2x1ZGUgIlBh
Z2VDbGllbnRJbXBsLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQYWdlVmlld3Bv
cnRDb250cm9sbGVyOworY2xhc3MgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDsKKwor
Y2xhc3MgUGFnZUNsaWVudEltcGxGaXhlZExheW91dCA6IHB1YmxpYyBQYWdlQ2xpZW50SW1wbCB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8UGFnZUNsaWVudEltcGw+IGNyZWF0ZShF
d2tWaWV3SW1wbCogdmlld0ltcGwpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IFBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQodmlld0ltcGwpKTsKKyAgICB9CisgICAgdmlydHVh
bCB+UGFnZUNsaWVudEltcGxGaXhlZExheW91dCgpOworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFs
aXplKCk7CisgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdExvYWQoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlVmlld3BvcnRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKKworcHJpdmF0
ZToKKworICAgIGV4cGxpY2l0IFBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQoRXdrVmlld0ltcGwq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdl
YkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpOworI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JF
KQorICAgIHZpcnR1YWwgdm9pZCBwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYpOworI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUNvbnRlbnRzU2l6
ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUp
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlbmRlckZyYW1lKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IGNvbnRlbnRzU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY292ZXJlZFJlY3QpOworICAg
IHZpcnR1YWwgdm9pZCBwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKTsKKworICAgIE93blB0
cjxXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw+IG1fcGFnZVZpZXdwb3J0
Q29udHJvbGxlckNsaWVudDsKKyAgICBPd25QdHI8V2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9s
bGVyPiBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXI7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gUGFnZUNsaWVudEltcGxGaXhlZExheW91dF9oCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsTGVnYWN5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBs
TGVnYWN5LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
UGFnZUNsaWVudEltcGxMZWdhY3kuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAgIENvcHlyaWdo
dCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsTGVnYWN5
LmgiCisKKyNpbmNsdWRlICJFd2tWaWV3SW1wbC5oIgorI2luY2x1ZGUgIkxheWVyVHJlZUNvb3Jk
aW5hdG9yUHJveHkuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3Bh
Y2UgRXdrVmlld0NhbGxiYWNrczsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1BhZ2VDbGllbnRJ
bXBsTGVnYWN5OjpQYWdlQ2xpZW50SW1wbExlZ2FjeShFd2tWaWV3SW1wbCogdmlld0ltcGwpCisg
ICAgOiBQYWdlQ2xpZW50SW1wbCh2aWV3SW1wbCkKK3sKK30KKworUGFnZUNsaWVudEltcGxMZWdh
Y3k6On5QYWdlQ2xpZW50SW1wbExlZ2FjeSgpCit7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGxM
ZWdhY3k6OmluaXRpYWxpemUoKQoreworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsTGVnYWN5Ojpk
aWRDb21taXRMb2FkKCkKK3sKKyAgICBtX3ZpZXdJbXBsLT51cGRhdGUoKTsKK30KKwordm9pZCBQ
YWdlQ2xpZW50SW1wbExlZ2FjeTo6dXBkYXRlVmlld3BvcnRTaXplKGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIHNpemUpCit7CisgICAgbV92aWV3SW1wbC0+cGFnZSgpLT5kcmF3aW5nQXJlYSgpLT5z
ZXRWaXNpYmxlQ29udGVudHNSZWN0KEludFJlY3QobV92aWV3SW1wbC0+c2Nyb2xsUG9zaXRpb24o
KSwgc2l6ZSksIG1fdmlld0ltcGwtPnNjYWxlRmFjdG9yKCksIEZsb2F0UG9pbnQoKSk7Cit9CisK
K3ZvaWQgUGFnZUNsaWVudEltcGxMZWdhY3k6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhj
b25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmKQoreworICAgIG1fdmlld0ltcGwtPnVw
ZGF0ZSgpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsTGVnYWN5OjpkaWRDaGFuZ2VDb250ZW50
c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKK3sKKyNpZiBVU0UoVElMRURfQkFD
S0lOR19TVE9SRSkKKyAgICBtX3ZpZXdJbXBsLT5wYWdlKCktPmRyYXdpbmdBcmVhKCktPmxheWVy
VHJlZUNvb3JkaW5hdG9yUHJveHkoKS0+c2V0Q29udGVudHNTaXplKEZsb2F0U2l6ZShzaXplLndp
ZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKKyAgICBtX3ZpZXdJbXBsLT51cGRhdGUoKTsKKyNlbHNl
CisgICAgbV92aWV3SW1wbC0+aW5mb3JtQ29udGVudHNTaXplQ2hhbmdlKHNpemUpOworI2VuZGlm
Cit9CisKKyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKK3ZvaWQgUGFnZUNsaWVudEltcGxM
ZWdhY3k6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IEludFBvaW50JiBwb3NpdGlvbikKK3sK
KyAgICBtX3ZpZXdJbXBsLT5zZXRTY3JvbGxQb3NpdGlvbihwb3NpdGlvbik7CisgICAgbV92aWV3
SW1wbC0+dXBkYXRlKCk7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGxMZWdhY3k6OmRpZFJlbmRl
ckZyYW1lKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikK
K3sKKyAgICBtX3ZpZXdJbXBsLT51cGRhdGUoKTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbExl
Z2FjeTo6cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCkKK3sKKyAgICBtX3ZpZXdJbXBsLT51
cGRhdGUoKTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGxMZWdhY3kuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsTGVnYWN5LmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJ
bXBsTGVnYWN5LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICAgQ29weXJpZ2h0IChDKSAyMDEyIElu
dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFBhZ2VDbGllbnRJbXBsTGVnYWN5X2gKKyNkZWZpbmUgUGFnZUNsaWVudEltcGxMZWdhY3lfaAor
CisjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFBhZ2VDbGllbnRJbXBsTGVnYWN5IDogcHVibGljIFBhZ2VDbGllbnRJbXBsIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxQYWdlQ2xpZW50SW1wbD4gY3JlYXRlKEV3a1ZpZXdJ
bXBsKiB2aWV3SW1wbCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUGFnZUNs
aWVudEltcGxMZWdhY3kodmlld0ltcGwpKTsKKyAgICB9CisgICAgdmlydHVhbCB+UGFnZUNsaWVu
dEltcGxMZWdhY3koKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZSgpOworICAgIHZpcnR1
YWwgdm9pZCBkaWRDb21taXRMb2FkKCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZpZXdwb3J0
U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CisKK3ByaXZhdGU6CisKKyAgICBleHBsaWNp
dCBQYWdlQ2xpZW50SW1wbExlZ2FjeShFd2tWaWV3SW1wbCopOworICAgIHZpcnR1YWwgdm9pZCBk
aWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1
dGVzJik7CisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisgICAgdmlydHVhbCB2b2lkIHBh
Z2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisjZW5kaWYKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmKTsKKyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVuZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBjb3ZlcmVkUmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhZ2VUcmFu
c2l0aW9uVmlld3BvcnRSZWFkeSgpOworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIFBhZ2VDbGllbnRJbXBsTGVnYWN5X2gKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVmlld3BvcnRDb250
cm9sbGVyQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gMTMzMzMwKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjQsNyArNjQsNiBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnRFZmw6OnNlCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnVwZGF0ZVZp
ZXdwb3J0U2l6ZShjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCiB7CiAgICAgbV92aWV3cG9y
dFNpemUgPSB2aWV3cG9ydFNpemU7Ci0gICAgbV92aWV3SW1wbC0+cGFnZSgpLT5zZXRWaWV3cG9y
dFNpemUodmlld3BvcnRTaXplKTsKIAogICAgIEFTU0VSVChtX2NvbnRyb2xsZXIpOwogICAgIG1f
Y29udHJvbGxlci0+ZGlkQ2hhbmdlVmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7CkBAIC04Nywx
MyArODYsMTcgQEAgdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaQogdm9p
ZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpzZXRWaWV3cG9ydFBvc2l0aW9uKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGNvbnRlbnRzUG9pbnQpCiB7CiAgICAgc2V0VmlzaWJs
ZUNvbnRlbnRzUmVjdChJbnRQb2ludChjb250ZW50c1BvaW50LngoKSwgY29udGVudHNQb2ludC55
KCkpLCBtX3NjYWxlRmFjdG9yLCBGbG9hdFBvaW50KCkpOworICAgIG1fdmlld0ltcGwtPnNldFNj
cm9sbFBvc2l0aW9uKEludFBvaW50KGNvbnRlbnRzUG9pbnQueCgpLCBjb250ZW50c1BvaW50Lnko
KSkpOwogfQogCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNldENvbnRl
bnRzU2NhbGUoZmxvYXQgbmV3U2NhbGUsIGJvb2wgdHJlYXRBc0luaXRpYWxWYWx1ZSkKIHsKLSAg
ICBpZiAodHJlYXRBc0luaXRpYWxWYWx1ZSkKKyAgICBpZiAodHJlYXRBc0luaXRpYWxWYWx1ZSkg
ewogICAgICAgICBtX3Njcm9sbFBvc2l0aW9uID0gSW50UG9pbnQoKTsKKyAgICAgICAgbV92aWV3
SW1wbC0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoKSk7CisgICAgfQogICAgIG1fc2NhbGVG
YWN0b3IgPSBuZXdTY2FsZTsKKyAgICBtX3ZpZXdJbXBsLT5zZXRTY2FsZUZhY3RvcihuZXdTY2Fs
ZSk7CiB9CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkUmVzdW1l
Q29udGVudCgpCg==
</data>
<flag name="commit-queue"
          id="186391"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172196</attachid>
            <date>2012-11-02 19:45:24 -0700</date>
            <delta_ts>2012-11-04 14:20:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>100674.patch</filename>
            <type>text/plain</type>
            <size>33980</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMzM0MykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBACisyMDEyLTExLTAyICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFsbG93
IHVzaW5nIEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HIHdpdGhvdXQgQ09PUkRJTkFURURfR1JBUEhJ
Q1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDY3
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ug
YSBkaXN0aW5jdGlvbiBiZXR3ZWVuIGNhbGxpbmcgZXdrX3ZpZXdfYmFzZV9hZGQgYW5kIGV3a192
aWV3X3NtYXJ0X2FkZC4KKyAgICAgICAgQ2FsbGluZyBld2tfdmlld19iYXNlX2FkZCBjcmVhdGVz
IGEgZGVza3RvcCBzdHlsZSB2aWV3LCB0aGF0IGRvZXMgbm90IHN1cHBvcnQKKyAgICAgICAgZml4
ZWQgbGF5b3V0IHNpemUsIHdoaWxlIGNhbGxpbmcgZXdrX3ZpZXdfc21hcnRfYWRkIGRvZXMgc3Vw
cG9ydCBmaXhlZCBsYXlvdXQgc2l6ZS4KKyAgICAgICAgQXMgYSByZXN1bHQsIFdlYktpdFRlc3RS
dW5uZXIgYW5kIHRoZSBpbnNwZWN0b3Igd2luZG93IGRvIG5vdCBzdXBwb3J0CisgICAgICAgIGZp
eGVkIGxheW91dCBzaXplLCB3aGlsZSBNaW5pQnJvd3NlciBkb2VzLiBUaGlzIGNoYW5nZSBhbGxv
d3MgbWFueSBEdW1wQXNUZXh0CisgICAgICAgIGxheW91dCB0ZXN0cyB0byBwYXNzIHdpdGhvdXQg
bW9kaWZpY2F0aW9uLCB3aGVuIEFDIGlzIGVuYWJsZWQuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVm
bC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHA6Cisg
ICAgICAgIChFd2tWaWV3SW1wbDo6RXdrVmlld0ltcGwpOgorICAgICAgICAoRXdrVmlld0ltcGw6
OmRpc3BsYXlUaW1lckZpcmVkKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjppbmZvcm1Mb2FkQ29t
bWl0dGVkKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjppbmZvcm1Db250ZW50c1NpemVDaGFuZ2Up
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmg6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoRXdrVmlld0ltcGwpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnBh
Z2VDbGllbnQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnNldFNjYWxlRmFjdG9yKToKKyAgICAg
ICAgKEV3a1ZpZXdJbXBsOjpzY2FsZUZhY3Rvcik6CisgICAgICAgIChFd2tWaWV3SW1wbDo6c2V0
U2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoRXdrVmlld0ltcGw6OnNjcm9sbFBvc2l0aW9uKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgICh0b1dl
YkNvbnRlbnRUcmFuc2Zvcm0pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZSk6
CisgICAgICAgIChjcmVhdGVFd2tWaWV3KToKKyAgICAgICAgKGV3a192aWV3X2Jhc2VfYWRkKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpoYW5kbGVEb3dubG9hZFJl
cXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGwuaDoKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChQYWdlQ2xpZW50SW1wbCk6CisgICAgICAgICogVUlQcm9j
ZXNzL2VmbC9QYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0LmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0OjpQYWdl
Q2xpZW50SW1wbEZpeGVkTGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGxG
aXhlZExheW91dDo6flBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQpOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGxGaXhlZExheW91dDo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQ6OnVwZGF0ZVZpZXdwb3J0U2l6ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQ6OmRpZENoYW5nZVZpZXdw
b3J0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsRml4ZWRMYXlv
dXQ6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsRml4ZWRMYXlvdXQ6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGxGaXhlZExheW91dDo6ZGlkUmVuZGVyRnJhbWUpOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0OjpwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVh
ZHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGxGaXhlZExheW91dC5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChQYWdlQ2xpZW50SW1wbEZpeGVk
TGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGxGaXhlZExheW91dDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsTGVnYWN5LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bExlZ2FjeTo6UGFnZUNsaWVudEltcGxMZWdhY3kpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xp
ZW50SW1wbExlZ2FjeTo6flBhZ2VDbGllbnRJbXBsTGVnYWN5KToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGxMZWdhY3k6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Q2xpZW50SW1wbExlZ2FjeTo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsTGVnYWN5Ojp1cGRhdGVWaWV3cG9ydFNpemUpOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbExlZ2FjeTo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGxMZWdhY3k6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSk6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsTGVnYWN5OjpwYWdlRGlkUmVxdWVzdFNj
cm9sbCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsTGVnYWN5OjpkaWRSZW5kZXJG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsTGVnYWN5OjpwYWdlVHJhbnNp
dGlvblZpZXdwb3J0UmVhZHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudElt
cGxMZWdhY3kuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoUGFnZUNsaWVu
dEltcGxMZWdhY3kpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbExlZ2FjeTo6Y3Jl
YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnRFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
RWZsOjp1cGRhdGVWaWV3cG9ydFNpemUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50RWZsOjpzZXRWaWV3cG9ydFBvc2l0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2V0Q29udGVudHNTY2FsZSk6CisK
IDIwMTItMTEtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgYSBQbHVnaW5JbmFjdGl2ZSBwbHVnLWluIHVuYXZhaWxhYmlsaXR5IHJlYXNvbgpJ
bmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UJKHJldmlzaW9uIDEzMzMzMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4Myw4
IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9lZmwvSW5wdXRN
ZXRob2RDb250ZXh0RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvTmV0d29ya0luZm9Qcm92aWRl
ci5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAorICAgIFVJUHJvY2Vz
cy9lZmwvUGFnZUNsaWVudEltcGxMZWdhY3kuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9QYWdlQ2xp
ZW50SW1wbEZpeGVkTGF5b3V0LmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRF
ZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9QYWdlUG9saWN5Q2xpZW50RWZsLmNwcAogICAgIFVJ
UHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZsLmNwcApJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAkocmV2aXNpb24gMTMzMzMwKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCwxMSArMjgsMTEgQEAKICNpbmNsdWRlICJMYXllclRyZWVDb29yZGlu
YXRvclByb3h5LmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlUmVuZGVyZXIuaCIKICNpbmNsdWRlICJQ
YWdlQ2xpZW50SW1wbC5oIgorI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQuaCIK
KyNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbExlZ2FjeS5oIgogI2luY2x1ZGUgIlBhZ2VMb2FkQ2xp
ZW50RWZsLmgiCiAjaW5jbHVkZSAiUGFnZVBvbGljeUNsaWVudEVmbC5oIgogI2luY2x1ZGUgIlBh
Z2VVSUNsaWVudEVmbC5oIgotI2luY2x1ZGUgIlBhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaCIKLSNp
bmNsdWRlICJQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VMb2FkQ2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJX
ZWJDb250ZXh0LmgiCkBAIC05NSwxMCArOTUsMTAgQEAgY29uc3QgRXZhc19PYmplY3QqIEV3a1Zp
ZXdJbXBsOjp2aWV3RnJvbQogICAgIHJldHVybiBwYWdlVmlld01hcCgpLmdldChwYWdlKTsKIH0K
IAotRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKEV2YXNfT2JqZWN0KiB2aWV3LCBQYXNzUmVmUHRy
PEV3a19Db250ZXh0PiBjb250ZXh0LCBQYXNzUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3Vw
KQorRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKEV2YXNfT2JqZWN0KiB2aWV3LCBQYXNzUmVmUHRy
PEV3a19Db250ZXh0PiBjb250ZXh0LCBQYXNzUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3Vw
LCBXaW5kb3dNb2RlIG1vZGUpCiAgICAgOiBtX3ZpZXcodmlldykKICAgICAsIG1fY29udGV4dChj
b250ZXh0KQotICAgICwgbV9wYWdlQ2xpZW50KFBhZ2VDbGllbnRJbXBsOjpjcmVhdGUodGhpcykp
CisgICAgLCBtX3BhZ2VDbGllbnQobW9kZSA9PSBGaXhlZExheW91dE1vZGUgPyBQYWdlQ2xpZW50
SW1wbEZpeGVkTGF5b3V0OjpjcmVhdGUodGhpcykgOiBQYWdlQ2xpZW50SW1wbExlZ2FjeTo6Y3Jl
YXRlKHRoaXMpKQogICAgICwgbV9wYWdlUHJveHkodG9JbXBsKG1fY29udGV4dC0+d2tDb250ZXh0
KCkpLT5jcmVhdGVXZWJQYWdlKG1fcGFnZUNsaWVudC5nZXQoKSwgcGFnZUdyb3VwLmdldCgpKSkK
ICAgICAsIG1fcGFnZUxvYWRDbGllbnQoUGFnZUxvYWRDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkK
ICAgICAsIG1fcGFnZVBvbGljeUNsaWVudChQYWdlUG9saWN5Q2xpZW50RWZsOjpjcmVhdGUodGhp
cykpCkBAIC0xMDgsOCArMTA4LDcgQEAgRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKEV2YXNfT2Jq
ZWN0KiB2aQogICAgICwgbV9mb3JtQ2xpZW50KEZvcm1DbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkK
ICAgICAsIG1fYmFja0ZvcndhcmRMaXN0KEV3a19CYWNrX0ZvcndhcmRfTGlzdDo6Y3JlYXRlKHRv
QVBJKG1fcGFnZVByb3h5LT5iYWNrRm9yd2FyZExpc3QoKSkpKQogI2lmIFVTRShUSUxFRF9CQUNL
SU5HX1NUT1JFKQotICAgICwgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50KFBhZ2VWaWV3
cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKLSAgICAsIG1fcGFnZVZpZXdw
b3J0Q29udHJvbGxlcihhZG9wdFB0cihuZXcgUGFnZVZpZXdwb3J0Q29udHJvbGxlcihtX3BhZ2VQ
cm94eS5nZXQoKSwgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LmdldCgpKSkpCisgICAg
LCBtX3NjYWxlRmFjdG9yKDEpCiAjZW5kaWYKICAgICAsIG1fc2V0dGluZ3MoRXdrX1NldHRpbmdz
OjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2N1cnNvckdyb3VwKDApCkBAIC0xMzAsMTUgKzEyOSwx
MyBAQCBFd2tWaWV3SW1wbDo6RXdrVmlld0ltcGwoRXZhc19PYmplY3QqIHZpCiAjaWYgRU5BQkxF
KFdFQkdMKQogICAgIG1fcGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0
V2ViR0xFbmFibGVkKHRydWUpOwogI2VuZGlmCi0gICAgbV9wYWdlUHJveHktPnNldFVzZUZpeGVk
TGF5b3V0KHRydWUpOworICAgIGlmIChtb2RlID09IEZpeGVkTGF5b3V0TW9kZSkKKyAgICAgICAg
bV9wYWdlUHJveHktPnNldFVzZUZpeGVkTGF5b3V0KHRydWUpOwogI2VuZGlmCiAKKyAgICBtX3Bh
Z2VDbGllbnQtPmluaXRpYWxpemUoKTsKICAgICBtX3BhZ2VQcm94eS0+aW5pdGlhbGl6ZVdlYlBh
Z2UoKTsKIAotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAgIG1fcGFnZUNsaWVudC0+
c2V0UGFnZVZpZXdwb3J0Q29udHJvbGxlcihtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuZ2V0KCkp
OwotI2VuZGlmCi0KICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgbV9wYWdlUHJveHkt
PmZ1bGxTY3JlZW5NYW5hZ2VyKCktPnNldFdlYlZpZXcobV92aWV3KTsKICAgICBtX3BhZ2VQcm94
eS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCktPnNldEZ1bGxTY3JlZW5FbmFibGVkKHRydWUp
OwpAQCAtMjQ5LDEzICsyNDYsMTAgQEAgdm9pZCBFd2tWaWV3SW1wbDo6ZGlzcGxheVRpbWVyRmly
ZWQoVGltZQogICAgIC8vIFdlIGFyZSBzdXBwb3NlZCB0byBjbGlwIHRvIHRoZSBhY3R1YWwgdmll
d3BvcnQsIG5vdGhpbmcgbGVzcy4KICAgICBJbnRSZWN0IHZpZXdwb3J0KHNkLT52aWV3LngsIHNk
LT52aWV3LnksIHNkLT52aWV3LncsIHNkLT52aWV3LmgpOwogCi0gICAgSW50UG9pbnQgc2Nyb2xs
UG9zaXRpb24gPSBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQtPnNjcm9sbFBvc2l0aW9u
KCk7Ci0gICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnQtPnNjYWxlRmFjdG9yKCk7Ci0KICAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCBt
YXRyaXg7CiAgICAgbWF0cml4LnRyYW5zbGF0ZSh2aWV3cG9ydC54KCksIHZpZXdwb3J0LnkoKSk7
Ci0gICAgbWF0cml4LnNjYWxlKHNjYWxlRmFjdG9yKTsKLSAgICBtYXRyaXgudHJhbnNsYXRlKC1z
Y3JvbGxQb3NpdGlvbi54KCksIC1zY3JvbGxQb3NpdGlvbi55KCkpOworICAgIG1hdHJpeC5zY2Fs
ZShtX3NjYWxlRmFjdG9yKTsKKyAgICBtYXRyaXgudHJhbnNsYXRlKC1tX3Njcm9sbFBvc2l0aW9u
LngoKSwgLW1fc2Nyb2xsUG9zaXRpb24ueSgpKTsKIAogICAgIExheWVyVHJlZVJlbmRlcmVyKiBy
ZW5kZXJlciA9IHBhZ2UoKS0+ZHJhd2luZ0FyZWEoKS0+bGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94
eSgpLT5sYXllclRyZWVSZW5kZXJlcigpOwogICAgIHJlbmRlcmVyLT5zZXRBY3RpdmUodHJ1ZSk7
CkBAIC0zMjgsNyArMzIyLDcgQEAgdm9pZCBFd2tWaWV3SW1wbDo6c2V0SW1hZ2VEYXRhKHZvaWQq
IGltYQogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogdm9pZCBFd2tWaWV3SW1wbDo6aW5m
b3JtTG9hZENvbW1pdHRlZCgpCiB7Ci0gICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRD
b21taXRMb2FkKCk7CisgICAgbV9wYWdlQ2xpZW50LT5kaWRDb21taXRMb2FkKCk7CiB9CiAjZW5k
aWYKIApAQCAtNTE3LDcgKzUxMSw3IEBAIGJvb2wgRXdrVmlld0ltcGw6OmVudGVyQWNjZWxlcmF0
ZWRDb21wb3MKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIG1fcGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudC0+c2V0UmVuZGVyZXJBY3RpdmUodHJ1ZSk7CisgICAgcGFnZSgp
LT5kcmF3aW5nQXJlYSgpLT5sYXllclRyZWVDb29yZGluYXRvclByb3h5KCktPmxheWVyVHJlZVJl
bmRlcmVyKCktPnNldEFjdGl2ZSh0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTc2
LDcgKzU3MCw3IEBAIHZvaWQgRXdrVmlld0ltcGw6OmRpc21pc3NDb2xvclBpY2tlcigpCiB2b2lk
IEV3a1ZpZXdJbXBsOjppbmZvcm1Db250ZW50c1NpemVDaGFuZ2UoY29uc3QgSW50U2l6ZSYgc2l6
ZSkKIHsKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgbV9wYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50LT5kaWRDaGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7CisgICAgbV9wYWdl
Q2xpZW50LT5kaWRDaGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShzaXplKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvRXdrVmlld0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9Fd2tWaWV3SW1wbC5oCShyZXZpc2lvbiAxMzMzMzApCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw4
ICs1Miw2IEBAIGNsYXNzIFBhZ2VDbGllbnRJbXBsOwogY2xhc3MgUGFnZUxvYWRDbGllbnRFZmw7
CiBjbGFzcyBQYWdlUG9saWN5Q2xpZW50RWZsOwogY2xhc3MgUGFnZVVJQ2xpZW50RWZsOwotY2xh
c3MgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDsKLWNsYXNzIFBhZ2VWaWV3cG9ydENv
bnRyb2xsZXI7CiBjbGFzcyBSZXNvdXJjZUxvYWRDbGllbnRFZmw7CiBjbGFzcyBXZWJQYWdlR3Jv
dXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7CkBAIC05MSw3ICs4OSwxMyBAQCB0eXBlZGVmIHN0cnVj
dCBFd2tfVmlld19TbWFydF9EYXRhIEV3a19WCiAKIGNsYXNzIEV3a1ZpZXdJbXBsIHsKIHB1Ymxp
YzoKLSAgICBFd2tWaWV3SW1wbChFdmFzX09iamVjdCogdmlldywgUGFzc1JlZlB0cjxFd2tfQ29u
dGV4dD4gY29udGV4dCwgUGFzc1JlZlB0cjxXZWJLaXQ6OldlYlBhZ2VHcm91cD4gcGFnZUdyb3Vw
KTsKKworICAgIGVudW0gV2luZG93TW9kZSB7CisgICAgICAgIExlZ2FjeU1vZGUsCisgICAgICAg
IEZpeGVkTGF5b3V0TW9kZQorICAgIH07CisKKyAgICBFd2tWaWV3SW1wbChFdmFzX09iamVjdCog
dmlldywgUGFzc1JlZlB0cjxFd2tfQ29udGV4dD4gY29udGV4dCwgUGFzc1JlZlB0cjxXZWJLaXQ6
OldlYlBhZ2VHcm91cD4gcGFnZUdyb3VwLCBXaW5kb3dNb2RlKTsKICAgICB+RXdrVmlld0ltcGwo
KTsKIAogICAgIHN0YXRpYyBFd2tWaWV3SW1wbCogZnJvbUV2YXNPYmplY3QoY29uc3QgRXZhc19P
YmplY3QqIHZpZXcpOwpAQCAtMTc0LDggKzE3OCwxMyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQg
bG9uZyBsb25nIGluZm9ybURhdGFiYXNlUXVvdGFSZWFjaGVkKGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGxvbmcgY3Vy
cmVudFF1b3RhLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudE9yaWdpblVzYWdlLCB1bnNpZ25l
ZCBsb25nIGxvbmcgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBleHBl
Y3RlZFVzYWdlKTsKIAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAgIFdlYktpdDo6
UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbCogcGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudCgpIHsgcmV0dXJuIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC5nZXQoKTsgfQot
ICAgIFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlciogcGFnZVZpZXdwb3J0Q29udHJvbGxl
cigpIHsgcmV0dXJuIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci5nZXQoKTsgfQorICAgIFdlYktp
dDo6UGFnZUNsaWVudEltcGwqIHBhZ2VDbGllbnQoKSB7IHJldHVybiBtX3BhZ2VDbGllbnQuZ2V0
KCk7IH0KKworICAgIHZvaWQgc2V0U2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IpIHsgbV9z
Y2FsZUZhY3RvciA9IHNjYWxlRmFjdG9yOyB9CisgICAgZmxvYXQgc2NhbGVGYWN0b3IoKSBjb25z
dCB7IHJldHVybiBtX3NjYWxlRmFjdG9yOyB9CisKKyAgICB2b2lkIHNldFNjcm9sbFBvc2l0aW9u
KFdlYkNvcmU6OkludFBvaW50IHBvc2l0aW9uKSB7IG1fc2Nyb2xsUG9zaXRpb24gPSBwb3NpdGlv
bjsgfQorICAgIGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9zY3JvbGxQb3NpdGlvbjsgfQogI2VuZGlmCiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQogICAgIEV2YXNfR0wqIGV2YXNHTCgpIHsgcmV0dXJuIG1fZXZhc0dMLmdl
dCgpOyB9CkBAIC0yMjIsOCArMjMxLDggQEAgcHJpdmF0ZToKICAgICBPd25QdHI8V2ViS2l0OjpG
b3JtQ2xpZW50RWZsPiBtX2Zvcm1DbGllbnQ7CiAgICAgT3duUHRyPEV3a19CYWNrX0ZvcndhcmRf
TGlzdD4gbV9iYWNrRm9yd2FyZExpc3Q7CiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0g
ICAgT3duUHRyPFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbD4gbV9wYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50OwotICAgIE93blB0cjxXZWJLaXQ6OlBhZ2VWaWV3cG9y
dENvbnRyb2xsZXI+IG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcjsKKyAgICBmbG9hdCBtX3NjYWxl
RmFjdG9yOworICAgIFdlYkNvcmU6OkludFBvaW50IG1fc2Nyb2xsUG9zaXRpb247CiAjZW5kaWYK
ICAgICBPd25QdHI8RXdrX1NldHRpbmdzPiBtX3NldHRpbmdzOwogICAgIGNvbnN0IGNoYXIqIG1f
Y3Vyc29yR3JvdXA7IC8vIFRoaXMgaXMgYW4gYWRkcmVzcywgZG8gbm90IGZyZWUgaXQgb3IgdXNl
IFdLRWluYVNoYXJlZFN0cmluZy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5jcHAJKHJldmlzaW9uIDEzMzMzMCkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAyLDkg
KzIwMiw5IEBAIHN0YXRpYyBBZmZpbmVUcmFuc2Zvcm0gdG9XZWJDb250ZW50VHJhbnMKICAgICBF
V0tfVklFV19JTVBMX0dFVF9CWV9TRF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCB0cmFuc2Zv
cm0pOwogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgSW50UG9pbnQgc2Nyb2xs
UG9zID0gaW1wbC0+cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudCgpLT5zY3JvbGxQb3NpdGlv
bigpOworICAgIEludFBvaW50IHNjcm9sbFBvcyA9IGltcGwtPnNjcm9sbFBvc2l0aW9uKCk7CiAg
ICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShzY3JvbGxQb3MueCgpLCBzY3JvbGxQb3MueSgpKTsKLSAg
ICB0cmFuc2Zvcm0uc2NhbGUoMSAvIGltcGwtPnBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQo
KS0+c2NhbGVGYWN0b3IoKSk7CisgICAgdHJhbnNmb3JtLnNjYWxlKDEgLyBpbXBsLT5zY2FsZUZh
Y3RvcigpKTsKICNlbmRpZgogICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLXNtYXJ0RGF0YS0+dmll
dy54LCAtc21hcnREYXRhLT52aWV3LnkpOwogCkBAIC00MzUsOCArNDM1LDggQEAgc3RhdGljIHZv
aWQgX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZShFdgogICAgICAgICAgICAgaW1wbC0+Y3JlYXRl
R0xTdXJmYWNlKEludFNpemUod2lkdGgsIGhlaWdodCkpOwogICAgICAgICB9CiAjZW5kaWYKLSNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgICAgIGltcGwtPnBhZ2VWaWV3cG9ydENv
bnRyb2xsZXJDbGllbnQoKS0+dXBkYXRlVmlld3BvcnRTaXplKEludFNpemUod2lkdGgsIGhlaWdo
dCkpOworI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorICAgICAgICBpbXBsLT5wYWdlQ2xp
ZW50KCktPnVwZGF0ZVZpZXdwb3J0U2l6ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKICNlbmRp
ZgogICAgIH0KIH0KQEAgLTUzNyw3ICs1MzcsNyBAQCBzdGF0aWMgaW5saW5lIEV2YXNfU21hcnQq
IGNyZWF0ZUV3a1ZpZXdTCiAgICAgcmV0dXJuIHNtYXJ0OwogfQogCi1zdGF0aWMgaW5saW5lIEV2
YXNfT2JqZWN0KiBjcmVhdGVFd2tWaWV3KEV2YXMqIGNhbnZhcywgRXZhc19TbWFydCogc21hcnQs
IFBhc3NSZWZQdHI8RXdrX0NvbnRleHQ+IGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91
cFJlZiA9IDApCitzdGF0aWMgaW5saW5lIEV2YXNfT2JqZWN0KiBjcmVhdGVFd2tWaWV3KEV2YXMq
IGNhbnZhcywgRXZhc19TbWFydCogc21hcnQsIFBhc3NSZWZQdHI8RXdrX0NvbnRleHQ+IGNvbnRl
eHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiA9IDAsIEV3a1ZpZXdJbXBsOjpXaW5kb3dN
b2RlIG1vZGUgPSBFd2tWaWV3SW1wbDo6Rml4ZWRMYXlvdXRNb2RlKQogewogICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChjYW52YXMsIDApOwogICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChzbWFydCwgMCk7CkBAIC01NTQsOCArNTU0LDcgQEAgc3RhdGljIGlubGlu
ZSBFdmFzX09iamVjdCogY3JlYXRlRXdrVmlldwogCiAgICAgQVNTRVJUKCFzbWFydERhdGEtPnBy
aXYpOwogICAgIFJlZlB0cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCA9IHBhZ2VHcm91cFJlZiA/
IHRvSW1wbChwYWdlR3JvdXBSZWYpIDogV2ViUGFnZUdyb3VwOjpjcmVhdGUoKTsKLSAgICBzbWFy
dERhdGEtPnByaXYgPSBuZXcgRXdrVmlld0ltcGwoZXdrVmlldywgY29udGV4dCwgcGFnZUdyb3Vw
KTsKLQorICAgIHNtYXJ0RGF0YS0+cHJpdiA9IG5ldyBFd2tWaWV3SW1wbChld2tWaWV3LCBjb250
ZXh0LCBwYWdlR3JvdXAsIG1vZGUpOwogICAgIHJldHVybiBld2tWaWV3OwogfQogCkBAIC01NjUs
NyArNTY0LDcgQEAgc3RhdGljIGlubGluZSBFdmFzX09iamVjdCogY3JlYXRlRXdrVmlldwogICov
CiBFdmFzX09iamVjdCogZXdrX3ZpZXdfYmFzZV9hZGQoRXZhcyogY2FudmFzLCBXS0NvbnRleHRS
ZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQogewotICAgIHJldHVy
biBjcmVhdGVFd2tWaWV3KGNhbnZhcywgY3JlYXRlRXdrVmlld1NtYXJ0Q2xhc3MoKSwgRXdrX0Nv
bnRleHQ6OmNyZWF0ZShjb250ZXh0UmVmKSwgcGFnZUdyb3VwUmVmKTsKKyAgICByZXR1cm4gY3Jl
YXRlRXdrVmlldyhjYW52YXMsIGNyZWF0ZUV3a1ZpZXdTbWFydENsYXNzKCksIEV3a19Db250ZXh0
OjpjcmVhdGUoY29udGV4dFJlZiksIHBhZ2VHcm91cFJlZiwgRXdrVmlld0ltcGw6OkxlZ2FjeU1v
ZGUpOwogfQogCiBFdmFzX09iamVjdCogZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXMqIGNhbnZhcywg
RXZhc19TbWFydCogc21hcnQsIEV3a19Db250ZXh0KiBjb250ZXh0KQpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDEz
MzMzMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMCArNDQsNiBAQAogI2luY2x1ZGUgImV3a19wcml2YXRl
LmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKIAotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JF
KQotI2luY2x1ZGUgIlBhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaCIKLSNlbmRpZgotCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBFd2tWaWV3Q2FsbGJhY2tzOwogCkBA
IC0xNjYsMTUgKzE2Miw2IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldEN1cnNvckhpZGRlblVu
dGkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRD
aGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVz
JiBhdHRyKQotewotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAgIG1fcGFnZVZpZXdw
b3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKGF0dHIpOwotI2Vsc2UK
LSAgICBVTlVTRURfUEFSQU0oYXR0cik7Ci0jZW5kaWYKLX0KLQogdm9pZCBQYWdlQ2xpZW50SW1w
bDo6cmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+IGNv
bW1hbmQsIFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyB1bmRvT3JSZWRvKQogewogICAgIG1fdW5k
b0NvbnRyb2xsZXIucmVnaXN0ZXJFZGl0Q29tbWFuZChjb21tYW5kLCB1bmRvT3JSZWRvKTsKQEAg
LTMyNiwzMiArMzEzLDQgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6aGFuZGxlRG93bmxvYWRSZXF1
ZQogICAgIGNvbnRleHQtPmRvd25sb2FkTWFuYWdlcigpLT5yZWdpc3RlckRvd25sb2FkKGRvd25s
b2FkLCBtX3ZpZXdJbXBsKTsKIH0KIAotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotdm9p
ZCBQYWdlQ2xpZW50SW1wbDo6cGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgSW50UG9pbnQmIHBv
c2l0aW9uKQotewotICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+cGFnZURpZFJlcXVlc3RT
Y3JvbGwocG9zaXRpb24pOwotfQotI2VuZGlmCi0KLXZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENo
YW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQotewotI2lmIFVT
RShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlk
Q2hhbmdlQ29udGVudHNTaXplKHNpemUpOwotI2Vsc2UKLSAgICBtX3ZpZXdJbXBsLT5pbmZvcm1D
b250ZW50c1NpemVDaGFuZ2Uoc2l6ZSk7Ci0jZW5kaWYKLX0KLQotI2lmIFVTRShUSUxFRF9CQUNL
SU5HX1NUT1JFKQotdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkUmVuZGVyRnJhbWUoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjb3Zl
cmVkUmVjdCkKLXsKLSAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPmRpZFJlbmRlckZyYW1l
KGNvbnRlbnRzU2l6ZSwgY292ZXJlZFJlY3QpOwotfQotCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpw
YWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKQotewotICAgIG1fcGFnZVZpZXdwb3J0Q29udHJv
bGxlci0+cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCk7Ci19Ci0jZW5kaWYKLQogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VD
bGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Q
YWdlQ2xpZW50SW1wbC5oCShyZXZpc2lvbiAxMzMzMzApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDIyICszNCwx
OSBAQCBjbGFzcyBFd2tWaWV3SW1wbDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFBh
Z2VWaWV3cG9ydENvbnRyb2xsZXI7Ci0KIGNsYXNzIFBhZ2VDbGllbnRJbXBsIDogcHVibGljIFBh
Z2VDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFBhZ2VDbGllbnRJbXBs
PiBjcmVhdGUoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBQYWdlQ2xpZW50SW1wbCh2aWV3SW1wbCkpOwotICAgIH0KLSAgICB+UGFnZUNs
aWVudEltcGwoKTsKKyAgICB2aXJ0dWFsIH5QYWdlQ2xpZW50SW1wbCgpOworCisgICAgLy8gQ2Fs
bGVkIGZyb20gdGhlIHZpZXcKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZSgpIHt9OworICAg
IHZpcnR1YWwgdm9pZCBkaWRDb21taXRMb2FkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVWaWV3cG9ydFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSA9IDA7
CiAKICAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwoKSBjb25zdDsKLSNpZiBVU0UoVElMRURfQkFD
S0lOR19TVE9SRSkKLSAgICB2b2lkIHNldFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIoUGFnZVZpZXdw
b3J0Q29udHJvbGxlciogY29udHJvbGxlcikgeyBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIgPSBj
b250cm9sbGVyOyB9Ci0jZW5kaWYKIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgICBleHBsaWNp
dCBQYWdlQ2xpZW50SW1wbChFd2tWaWV3SW1wbCopOwogCiAgICAgLy8gUGFnZUNsaWVudApAQCAt
NzEsNyArNjgsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvcihjb25z
dCBXZWJDb3JlOjpDdXJzb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29ySGlkZGVuVW50
aWxNb3VzZU1vdmVzKGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFBy
b3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJik7CisgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9y
dEF0dHJpYnV0ZXMmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJFZGl0Q29tbWFu
ZChQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+LCBXZWJQYWdlUHJveHk6OlVuZG9PclJl
ZG8pOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckFsbEVkaXRDb21tYW5kcygpOwpAQCAtMTE2LDIy
ICsxMTMsMTQgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY291bnRTdHJpbmdNYXRjaGVz
SW5DdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWdu
ZWQpOwogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgdmlydHVhbCB2b2lkIHBh
Z2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7Ci0jZW5kaWYKLQot
ICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYpOwotCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgdmlydHVhbCB2b2lk
IGRpZFJlbmRlckZyYW1lKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgY292ZXJlZFJlY3QpOwotICAgIHZpcnR1YWwgdm9pZCBwYWdl
VHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFJlcXVl
c3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRpZFJlbmRlckZyYW1lKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgY292ZXJlZFJlY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCkgPSAwOwogI2VuZGlmCiAKLXByaXZhdGU6Citw
cm90ZWN0ZWQ6CiAgICAgRXdrVmlld0ltcGwqIG1fdmlld0ltcGw7CiAgICAgRGVmYXVsdFVuZG9D
b250cm9sbGVyIG1fdW5kb0NvbnRyb2xsZXI7Ci0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUp
Ci0gICAgUGFnZVZpZXdwb3J0Q29udHJvbGxlciogbV9wYWdlVmlld3BvcnRDb250cm9sbGVyOwot
I2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGxGaXhlZExheW91dC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNs
aWVudEltcGxGaXhlZExheW91dC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAgIENvcHlyaWdo
dCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsRml4ZWRM
YXlvdXQuaCIKKworI2luY2x1ZGUgIkV3a1ZpZXdJbXBsLmgiCisKKyNpZiBVU0UoVElMRURfQkFD
S0lOR19TVE9SRSkKKyNpbmNsdWRlICJQYWdlVmlld3BvcnRDb250cm9sbGVyLmgiCisjaW5jbHVk
ZSAiUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5oIgorI2VuZGlmCisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIEV3a1ZpZXdDYWxsYmFja3M7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitQYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0OjpQYWdlQ2xpZW50
SW1wbEZpeGVkTGF5b3V0KEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkKKyAgICA6IFBhZ2VDbGllbnRJ
bXBsKHZpZXdJbXBsKQoreworfQorCitQYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0Ojp+UGFnZUNs
aWVudEltcGxGaXhlZExheW91dCgpCit7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGxGaXhlZExh
eW91dDo6aW5pdGlhbGl6ZSgpCit7CisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisgICAg
Ly8gUGFnZUNsaWVudEltcGwgaXMgY3JlYXRlZCBiZWZvcmUgV2ViUGFnZVByb3h5LCBidXQgUGFn
ZVZpZXdwb3J0Q29udHJvbGxlcgorICAgIC8vIGlzIGNyZWF0ZWQgYWZ0ZXIgV2ViUGFnZVByb3h5
LCBzbyBpdCBjYW5ub3QgYmUgY3JlYXRlZCBpbiB0aGUgY29uc3R1Y3RvciAKKyAgICAvLyBvZiBQ
YWdlQ2xpZW50SW1wbC4KKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQgPSBQYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpjcmVhdGUobV92aWV3SW1wbCk7CisgICAgbV9w
YWdlVmlld3BvcnRDb250cm9sbGVyID0gYWRvcHRQdHIobmV3IFBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXIobV92aWV3SW1wbC0+cGFnZSgpLCBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQuZ2V0
KCkpKTsKKyNlbmRpZgorfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQ6OmRpZENv
bW1pdExvYWQoKQoreworI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorICAgIEFTU0VSVCht
X3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIpOworICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+
ZGlkQ29tbWl0TG9hZCgpOworI2VuZGlmCit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGxGaXhlZExh
eW91dDo6dXBkYXRlVmlld3BvcnRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpCit7
CisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisgICAgQVNTRVJUKG1fcGFnZVZpZXdwb3J0
Q29udHJvbGxlckNsaWVudCk7CisgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LT51
cGRhdGVWaWV3cG9ydFNpemUoc2l6ZSk7CisjZW5kaWYKK30KKwordm9pZCBQYWdlQ2xpZW50SW1w
bEZpeGVkTGF5b3V0OjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6
Vmlld3BvcnRBdHRyaWJ1dGVzJiBhdHRyKQoreworI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JF
KQorICAgIEFTU0VSVChtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIpOworICAgIG1fcGFnZVZpZXdw
b3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKGF0dHIpOworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oYXR0cik7CisjZW5kaWYKK30KKwordm9pZCBQYWdlQ2xpZW50SW1w
bEZpeGVkTGF5b3V0OjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgc2l6ZSkKK3sKKyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyAgICBBU1NFUlQobV9w
YWdlVmlld3BvcnRDb250cm9sbGVyKTsKKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPmRp
ZENoYW5nZUNvbnRlbnRzU2l6ZShzaXplKTsKKyNlbHNlCisgICAgbV92aWV3SW1wbC0+aW5mb3Jt
Q29udGVudHNTaXplQ2hhbmdlKHNpemUpOworI2VuZGlmCit9CisKKyNpZiBVU0UoVElMRURfQkFD
S0lOR19TVE9SRSkKK3ZvaWQgUGFnZUNsaWVudEltcGxGaXhlZExheW91dDo6cGFnZURpZFJlcXVl
c3RTY3JvbGwoY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uKQoreworICAgIEFTU0VSVChtX3BhZ2VW
aWV3cG9ydENvbnRyb2xsZXIpOworICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+cGFnZURp
ZFJlcXVlc3RTY3JvbGwocG9zaXRpb24pOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsRml4ZWRM
YXlvdXQ6OmRpZFJlbmRlckZyYW1lKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNvbnRlbnRzU2l6
ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY292ZXJlZFJlY3QpCit7CisgICAgQVNTRVJUKG1f
cGFnZVZpZXdwb3J0Q29udHJvbGxlcik7CisgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5k
aWRSZW5kZXJGcmFtZShjb250ZW50c1NpemUsIGNvdmVyZWRSZWN0KTsKK30KKwordm9pZCBQYWdl
Q2xpZW50SW1wbEZpeGVkTGF5b3V0OjpwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKQorewor
ICAgIEFTU0VSVChtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIpOworICAgIG1fcGFnZVZpZXdwb3J0
Q29udHJvbGxlci0+cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCk7Cit9CisjZW5kaWYKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1BhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGxGaXhlZExheW91
dC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAgIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jw
b3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQYWdlQ2xp
ZW50SW1wbEZpeGVkTGF5b3V0X2gKKyNkZWZpbmUgUGFnZUNsaWVudEltcGxGaXhlZExheW91dF9o
CisKKyNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjsKK2NsYXNzIFBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnRFZmw7CisKK2NsYXNzIFBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQgOiBwdWJsaWMg
UGFnZUNsaWVudEltcGwgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFBhZ2VDbGll
bnRJbXBsPiBjcmVhdGUoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBQYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0KHZpZXdJbXBsKSk7Cisg
ICAgfQorICAgIHZpcnR1YWwgflBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgaW5pdGlhbGl6ZSgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRMb2FkKCk7
CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZpZXdwb3J0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRT
aXplJik7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgUGFnZUNsaWVudEltcGxGaXhlZExheW91
dChFd2tWaWV3SW1wbCopOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3Bl
cnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJik7CisjaWYgVVNFKFRJTEVE
X0JBQ0tJTkdfU1RPUkUpCisgICAgdmlydHVhbCB2b2lkIHBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisjZW5kaWYKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hh
bmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKKyNpZiBVU0UoVElMRURf
QkFDS0lOR19TVE9SRSkKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVuZGVyRnJhbWUoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjb3Zl
cmVkUmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgp
OworCisgICAgT3duUHRyPFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbD4g
bV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50OworICAgIE93blB0cjxXZWJLaXQ6OlBhZ2VW
aWV3cG9ydENvbnRyb2xsZXI+IG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcjsKKyNlbmRpZgorfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQYWdlQ2xpZW50SW1wbEZpeGVk
TGF5b3V0X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudElt
cGxMZWdhY3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
UGFnZUNsaWVudEltcGxMZWdhY3kuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbExlZ2FjeS5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmlj
cworICAgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGFnZUNs
aWVudEltcGxMZWdhY3kuaCIKKworI2luY2x1ZGUgIkV3a1ZpZXdJbXBsLmgiCisjaW5jbHVkZSAi
TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
K3VzaW5nIG5hbWVzcGFjZSBFd2tWaWV3Q2FsbGJhY2tzOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworUGFnZUNsaWVudEltcGxMZWdhY3k6OlBhZ2VDbGllbnRJbXBsTGVnYWN5KEV3a1ZpZXdJbXBs
KiB2aWV3SW1wbCkKKyAgICA6IFBhZ2VDbGllbnRJbXBsKHZpZXdJbXBsKQoreworfQorCitQYWdl
Q2xpZW50SW1wbExlZ2FjeTo6flBhZ2VDbGllbnRJbXBsTGVnYWN5KCkKK3sKK30KKwordm9pZCBQ
YWdlQ2xpZW50SW1wbExlZ2FjeTo6ZGlkQ29tbWl0TG9hZCgpCit7CisgICAgbV92aWV3SW1wbC0+
dXBkYXRlKCk7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGxMZWdhY3k6OnVwZGF0ZVZpZXdwb3J0
U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQoreworI2lmIFVTRShUSUxFRF9CQUNL
SU5HX1NUT1JFKQorICAgIG1fdmlld0ltcGwtPnBhZ2UoKS0+ZHJhd2luZ0FyZWEoKS0+c2V0Vmlz
aWJsZUNvbnRlbnRzUmVjdChJbnRSZWN0KG1fdmlld0ltcGwtPnNjcm9sbFBvc2l0aW9uKCksIHNp
emUpLCBtX3ZpZXdJbXBsLT5zY2FsZUZhY3RvcigpLCBGbG9hdFBvaW50KCkpOworI2VuZGlmCit9
CisKK3ZvaWQgUGFnZUNsaWVudEltcGxMZWdhY3k6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGll
cyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmKQoreworICAgIG1fdmlld0ltcGwt
PnVwZGF0ZSgpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsTGVnYWN5OjpkaWRDaGFuZ2VDb250
ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKK3sKKyNpZiBVU0UoVElMRURf
QkFDS0lOR19TVE9SRSkKKyAgICBtX3ZpZXdJbXBsLT5wYWdlKCktPmRyYXdpbmdBcmVhKCktPmxh
eWVyVHJlZUNvb3JkaW5hdG9yUHJveHkoKS0+c2V0Q29udGVudHNTaXplKEZsb2F0U2l6ZShzaXpl
LndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKKyAgICBtX3ZpZXdJbXBsLT51cGRhdGUoKTsKKyNl
bHNlCisgICAgbV92aWV3SW1wbC0+aW5mb3JtQ29udGVudHNTaXplQ2hhbmdlKHNpemUpOworI2Vu
ZGlmCit9CisKKyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKK3ZvaWQgUGFnZUNsaWVudElt
cGxMZWdhY3k6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IEludFBvaW50JiBwb3NpdGlvbikK
K3sKKyAgICBtX3ZpZXdJbXBsLT5zZXRTY3JvbGxQb3NpdGlvbihwb3NpdGlvbik7CisgICAgbV92
aWV3SW1wbC0+dXBkYXRlKCk7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGxMZWdhY3k6OmRpZFJl
bmRlckZyYW1lKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JikKK3sKKyAgICBtX3ZpZXdJbXBsLT51cGRhdGUoKTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1w
bExlZ2FjeTo6cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCkKK3sKKyAgICBtX3ZpZXdJbXBs
LT51cGRhdGUoKTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGxMZWdhY3kuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsTGVnYWN5
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGll
bnRJbXBsTGVnYWN5LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICAgQ29weXJpZ2h0IChDKSAyMDEy
IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFBhZ2VDbGllbnRJbXBsTGVnYWN5X2gKKyNkZWZpbmUgUGFnZUNsaWVudEltcGxMZWdhY3lf
aAorCisjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFBhZ2VDbGllbnRJbXBsTGVnYWN5IDogcHVibGljIFBhZ2VDbGllbnRJbXBsIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxQYWdlQ2xpZW50SW1wbD4gY3JlYXRlKEV3a1Zp
ZXdJbXBsKiB2aWV3SW1wbCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUGFn
ZUNsaWVudEltcGxMZWdhY3kodmlld0ltcGwpKTsKKyAgICB9CisgICAgdmlydHVhbCB+UGFnZUNs
aWVudEltcGxMZWdhY3koKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TG9hZCgpOworICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVWaWV3cG9ydFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYp
OworCitwcml2YXRlOgorCisgICAgZXhwbGljaXQgUGFnZUNsaWVudEltcGxMZWdhY3koRXdrVmll
d0ltcGwqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNv
bnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpOworI2lmIFVTRShUSUxFRF9CQUNLSU5H
X1NUT1JFKQorICAgIHZpcnR1YWwgdm9pZCBwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYpOworI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUNvbnRl
bnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdf
U1RPUkUpCisgICAgdmlydHVhbCB2b2lkIGRpZFJlbmRlckZyYW1lKGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIGNvbnRlbnRzU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY292ZXJlZFJlY3Qp
OworICAgIHZpcnR1YWwgdm9pZCBwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKTsKKyNlbmRp
ZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQYWdlQ2xpZW50SW1w
bExlZ2FjeV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9y
dENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5jcHAJKHJldmlzaW9u
IDEzMzMzMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29u
dHJvbGxlckNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDYgQEAgdm9p
ZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpzZQogdm9pZCBQYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50RWZsOjp1cGRhdGVWaWV3cG9ydFNpemUoY29uc3QgSW50U2l6ZSYgdmll
d3BvcnRTaXplKQogewogICAgIG1fdmlld3BvcnRTaXplID0gdmlld3BvcnRTaXplOwotICAgIG1f
dmlld0ltcGwtPnBhZ2UoKS0+c2V0Vmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7CiAKICAgICBB
U1NFUlQobV9jb250cm9sbGVyKTsKICAgICBtX2NvbnRyb2xsZXItPmRpZENoYW5nZVZpZXdwb3J0
U2l6ZSh2aWV3cG9ydFNpemUpOwpAQCAtNzksMjEgKzc4LDI2IEBAIHZvaWQgUGFnZVZpZXdwb3J0
Q29udHJvbGxlckNsaWVudEVmbDo6c2UKICAgICBtX2NvbnRyb2xsZXItPmRpZENoYW5nZUNvbnRl
bnRzVmlzaWJpbGl0eShtX3Njcm9sbFBvc2l0aW9uLCBtX3NjYWxlRmFjdG9yLCB0cmFqZWN0b3J5
KTsKIH0KIAotdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaWRDaGFuZ2VD
b250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKK3ZvaWQgUGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmKQogewogICAgIG1fdmlld0ltcGwtPnVwZGF0ZSgpOwogfQogCiB2b2lkIFBh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNldFZpZXdwb3J0UG9zaXRpb24oY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYgY29udGVudHNQb2ludCkKIHsKLSAgICBzZXRWaXNpYmxlQ29u
dGVudHNSZWN0KEludFBvaW50KGNvbnRlbnRzUG9pbnQueCgpLCBjb250ZW50c1BvaW50LnkoKSks
IG1fc2NhbGVGYWN0b3IsIEZsb2F0UG9pbnQoKSk7CisgICAgSW50UG9pbnQgdmlld3BvcnRQb3Np
dGlvbihjb250ZW50c1BvaW50LngoKSwgY29udGVudHNQb2ludC55KCkpOworICAgIHNldFZpc2li
bGVDb250ZW50c1JlY3Qodmlld3BvcnRQb3NpdGlvbiwgbV9zY2FsZUZhY3RvciwgRmxvYXRQb2lu
dCgpKTsKKyAgICBtX3ZpZXdJbXBsLT5zZXRTY3JvbGxQb3NpdGlvbih2aWV3cG9ydFBvc2l0aW9u
KTsKIH0KIAogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpzZXRDb250ZW50
c1NjYWxlKGZsb2F0IG5ld1NjYWxlLCBib29sIHRyZWF0QXNJbml0aWFsVmFsdWUpCiB7Ci0gICAg
aWYgKHRyZWF0QXNJbml0aWFsVmFsdWUpCisgICAgaWYgKHRyZWF0QXNJbml0aWFsVmFsdWUpIHsK
ICAgICAgICAgbV9zY3JvbGxQb3NpdGlvbiA9IEludFBvaW50KCk7CisgICAgICAgIG1fdmlld0lt
cGwtPnNldFNjcm9sbFBvc2l0aW9uKEludFBvaW50KCkpOworICAgIH0KICAgICBtX3NjYWxlRmFj
dG9yID0gbmV3U2NhbGU7CisgICAgbV92aWV3SW1wbC0+c2V0U2NhbGVGYWN0b3IobmV3U2NhbGUp
OwogfQogCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRpZFJlc3VtZUNv
bnRlbnQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172247</attachid>
            <date>2012-11-04 14:20:43 -0800</date>
            <delta_ts>2012-11-05 05:27:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>100674.patch</filename>
            <type>text/plain</type>
            <size>32679</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMzQyNCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc4IEBACisyMDEyLTExLTA0ICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFsbG93
IHVzaW5nIEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HIHdpdGhvdXQgQ09PUkRJTkFURURfR1JBUEhJ
Q1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDY3
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ug
YSBkaXN0aW5jdGlvbiBiZXR3ZWVuIGNhbGxpbmcgZXdrX3ZpZXdfYmFzZV9hZGQgYW5kIGV3a192
aWV3X3NtYXJ0X2FkZC4KKyAgICAgICAgQ2FsbGluZyBld2tfdmlld19iYXNlX2FkZCBjcmVhdGVz
IGEgZGVza3RvcCBzdHlsZSB2aWV3LCB0aGF0IGRvZXMgbm90IHN1cHBvcnQKKyAgICAgICAgZml4
ZWQgbGF5b3V0IHNpemUsIHdoaWxlIGNhbGxpbmcgZXdrX3ZpZXdfc21hcnRfYWRkIGRvZXMgc3Vw
cG9ydCBmaXhlZCBsYXlvdXQgc2l6ZS4KKyAgICAgICAgQXMgYSByZXN1bHQsIFdlYktpdFRlc3RS
dW5uZXIgYW5kIHRoZSBpbnNwZWN0b3Igd2luZG93IGRvIG5vdCBzdXBwb3J0CisgICAgICAgIGZp
eGVkIGxheW91dCBzaXplLCB3aGlsZSBNaW5pQnJvd3NlciBkb2VzLiBUaGlzIGNoYW5nZSBhbGxv
d3MgbWFueSBEdW1wQXNUZXh0CisgICAgICAgIGxheW91dCB0ZXN0cyB0byBwYXNzIHdpdGhvdXQg
bW9kaWZpY2F0aW9uLCB3aGVuIEFDIGlzIGVuYWJsZWQuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVm
bC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHA6Cisg
ICAgICAgIChFd2tWaWV3SW1wbDo6RXdrVmlld0ltcGwpOgorICAgICAgICAoRXdrVmlld0ltcGw6
OmRpc3BsYXlUaW1lckZpcmVkKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjppbmZvcm1Mb2FkQ29t
bWl0dGVkKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjppbmZvcm1Db250ZW50c1NpemVDaGFuZ2Up
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmg6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoRXdrVmlld0ltcGwpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnBh
Z2VDbGllbnQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnNldFNjYWxlRmFjdG9yKToKKyAgICAg
ICAgKEV3a1ZpZXdJbXBsOjpzY2FsZUZhY3Rvcik6CisgICAgICAgIChFd2tWaWV3SW1wbDo6c2V0
U2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoRXdrVmlld0ltcGw6OnNjcm9sbFBvc2l0aW9uKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgICh0b1dl
YkNvbnRlbnRUcmFuc2Zvcm0pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZSk6
CisgICAgICAgIChjcmVhdGVFd2tWaWV3KToKKyAgICAgICAgKGV3a192aWV3X2Jhc2VfYWRkKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpoYW5kbGVEb3dubG9hZFJl
cXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGwuaDoKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChQYWdlQ2xpZW50SW1wbCk6CisgICAgICAgICogVUlQcm9j
ZXNzL2VmbC9QYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0LmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0OjpQYWdl
Q2xpZW50SW1wbEZpeGVkTGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGxG
aXhlZExheW91dDo6flBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQpOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0OjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGxGaXhlZExheW91dDo6dXBkYXRlVmlld3BvcnRTaXplKToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGxGaXhlZExheW91dDo6ZGlkQ2hhbmdlVmlld3Bv
cnRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGxGaXhlZExheW91
dDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGxGaXhlZExheW91dDo6cGFnZURpZFJlcXVlc3RTY3JvbGwpOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0OjpkaWRSZW5kZXJGcmFtZSk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQ6OnBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFk
eSk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0Lmg6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFBhZ2VDbGllbnRJbXBsRml4ZWRM
YXlvdXQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0OjpjcmVh
dGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGxMZWdhY3kuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBs
TGVnYWN5OjpQYWdlQ2xpZW50SW1wbExlZ2FjeSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGll
bnRJbXBsTGVnYWN5Ojp+UGFnZUNsaWVudEltcGxMZWdhY3kpOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbExlZ2FjeTo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsTGVnYWN5Ojp1cGRhdGVWaWV3cG9ydFNpemUpOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbExlZ2FjeTo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGxMZWdhY3k6OmRpZENoYW5nZUNvbnRlbnRzU2l6
ZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsTGVnYWN5OjpwYWdlRGlkUmVxdWVz
dFNjcm9sbCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsTGVnYWN5OjpkaWRSZW5k
ZXJGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsTGVnYWN5OjpwYWdlVHJh
bnNpdGlvblZpZXdwb3J0UmVhZHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVu
dEltcGxMZWdhY3kuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoUGFnZUNs
aWVudEltcGxMZWdhY3kpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbExlZ2FjeTo6
Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xp
ZW50RWZsOjp1cGRhdGVWaWV3cG9ydFNpemUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3Bv
cnRDb250cm9sbGVyQ2xpZW50RWZsOjpzZXRWaWV3cG9ydFBvc2l0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2V0Q29udGVudHNTY2FsZSk6
CisKIDIwMTItMTEtMDIgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFtFRkxdIFVuaWZ5IHRyYW5zZm9ybXMgaW4gV0syCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQkocmV2aXNpb24gMTMzNDI0KQorKysgU291cmNlL1dlYktp
dDIvUGxhdGZvcm1FZmwuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDggQEAgTElT
VChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL2VmbC9JbnB1dE1ldGhvZENv
bnRleHRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9OZXR3b3JrSW5mb1Byb3ZpZGVyLmNwcAog
ICAgIFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9Q
YWdlQ2xpZW50SW1wbExlZ2FjeS5jcHAKKyAgICBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBs
Rml4ZWRMYXlvdXQuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9QYWdlTG9hZENsaWVudEVmbC5jcHAK
ICAgICBVSVByb2Nlc3MvZWZsL1BhZ2VQb2xpY3lDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNz
L2VmbC9QYWdlVUlDbGllbnRFZmwuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCShyZXZpc2lvbiAxMzM0MjQpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDExICsyOCwxMSBAQAogI2luY2x1ZGUgIkxheWVyVHJlZUNvb3JkaW5hdG9yUHJv
eHkuaCIKICNpbmNsdWRlICJMYXllclRyZWVSZW5kZXJlci5oIgogI2luY2x1ZGUgIlBhZ2VDbGll
bnRJbXBsLmgiCisjaW5jbHVkZSAiUGFnZUNsaWVudEltcGxGaXhlZExheW91dC5oIgorI2luY2x1
ZGUgIlBhZ2VDbGllbnRJbXBsTGVnYWN5LmgiCiAjaW5jbHVkZSAiUGFnZUxvYWRDbGllbnRFZmwu
aCIKICNpbmNsdWRlICJQYWdlUG9saWN5Q2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiUGFnZVVJQ2xp
ZW50RWZsLmgiCi0jaW5jbHVkZSAiUGFnZVZpZXdwb3J0Q29udHJvbGxlci5oIgotI2luY2x1ZGUg
IlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxv
YWRDbGllbnRFZmwuaCIKICNpbmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1ZGUgIldlYkNvbnRl
eHQuaCIKQEAgLTk2LDEwICs5NiwxMCBAQCBjb25zdCBFdmFzX09iamVjdCogRXdrVmlld0ltcGw6
OnZpZXdGcm9tCiAgICAgcmV0dXJuIHBhZ2VWaWV3TWFwKCkuZ2V0KHBhZ2UpOwogfQogCi1Fd2tW
aWV3SW1wbDo6RXdrVmlld0ltcGwoRXZhc19PYmplY3QqIHZpZXcsIFBhc3NSZWZQdHI8RXdrX0Nv
bnRleHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8V2ViUGFnZUdyb3VwPiBwYWdlR3JvdXApCitFd2tW
aWV3SW1wbDo6RXdrVmlld0ltcGwoRXZhc19PYmplY3QqIHZpZXcsIFBhc3NSZWZQdHI8RXdrX0Nv
bnRleHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8V2ViUGFnZUdyb3VwPiBwYWdlR3JvdXAsIFdpbmRv
d01vZGUgbW9kZSkKICAgICA6IG1fdmlldyh2aWV3KQogICAgICwgbV9jb250ZXh0KGNvbnRleHQp
Ci0gICAgLCBtX3BhZ2VDbGllbnQoUGFnZUNsaWVudEltcGw6OmNyZWF0ZSh0aGlzKSkKKyAgICAs
IG1fcGFnZUNsaWVudChtb2RlID09IEZpeGVkTGF5b3V0TW9kZSA/IFBhZ2VDbGllbnRJbXBsRml4
ZWRMYXlvdXQ6OmNyZWF0ZSh0aGlzKSA6IFBhZ2VDbGllbnRJbXBsTGVnYWN5OjpjcmVhdGUodGhp
cykpCiAgICAgLCBtX3BhZ2VQcm94eSh0b0ltcGwobV9jb250ZXh0LT53a0NvbnRleHQoKSktPmNy
ZWF0ZVdlYlBhZ2UobV9wYWdlQ2xpZW50LmdldCgpLCBwYWdlR3JvdXAuZ2V0KCkpKQogICAgICwg
bV9wYWdlTG9hZENsaWVudChQYWdlTG9hZENsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQogICAgICwg
bV9wYWdlUG9saWN5Q2xpZW50KFBhZ2VQb2xpY3lDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKQEAg
LTEwOSw4ICsxMDksNyBAQCBFd2tWaWV3SW1wbDo6RXdrVmlld0ltcGwoRXZhc19PYmplY3QqIHZp
CiAgICAgLCBtX2Zvcm1DbGllbnQoRm9ybUNsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQogICAgICwg
bV9iYWNrRm9yd2FyZExpc3QoRXdrX0JhY2tfRm9yd2FyZF9MaXN0OjpjcmVhdGUodG9BUEkobV9w
YWdlUHJveHktPmJhY2tGb3J3YXJkTGlzdCgpKSkpCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RP
UkUpCi0gICAgLCBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQoUGFnZVZpZXdwb3J0Q29u
dHJvbGxlckNsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQotICAgICwgbV9wYWdlVmlld3BvcnRDb250
cm9sbGVyKGFkb3B0UHRyKG5ldyBQYWdlVmlld3BvcnRDb250cm9sbGVyKG1fcGFnZVByb3h5Lmdl
dCgpLCBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQuZ2V0KCkpKSkKKyAgICAsIG1fc2Nh
bGVGYWN0b3IoMSkKICNlbmRpZgogICAgICwgbV9zZXR0aW5ncyhFd2tfU2V0dGluZ3M6OmNyZWF0
ZSh0aGlzKSkKICAgICAsIG1fY3Vyc29yR3JvdXAoMCkKQEAgLTEzMSwxNSArMTMwLDEyIEBAIEV3
a1ZpZXdJbXBsOjpFd2tWaWV3SW1wbChFdmFzX09iamVjdCogdmkKICNpZiBFTkFCTEUoV0VCR0wp
CiAgICAgbV9wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRXZWJHTEVu
YWJsZWQodHJ1ZSk7CiAjZW5kaWYKLSAgICBtX3BhZ2VQcm94eS0+c2V0VXNlRml4ZWRMYXlvdXQo
dHJ1ZSk7CisgICAgaWYgKG1vZGUgPT0gRml4ZWRMYXlvdXRNb2RlKQorICAgICAgICBtX3BhZ2VQ
cm94eS0+c2V0VXNlRml4ZWRMYXlvdXQodHJ1ZSk7CiAjZW5kaWYKIAogICAgIG1fcGFnZVByb3h5
LT5pbml0aWFsaXplV2ViUGFnZSgpOwogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0g
ICAgbV9wYWdlQ2xpZW50LT5zZXRQYWdlVmlld3BvcnRDb250cm9sbGVyKG1fcGFnZVZpZXdwb3J0
Q29udHJvbGxlci5nZXQoKSk7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
ICAgICBtX3BhZ2VQcm94eS0+ZnVsbFNjcmVlbk1hbmFnZXIoKS0+c2V0V2ViVmlldyhtX3ZpZXcp
OwogICAgIG1fcGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0RnVsbFNj
cmVlbkVuYWJsZWQodHJ1ZSk7CkBAIC0yNDUsOSArMjQxLDggQEAgQWZmaW5lVHJhbnNmb3JtIEV3
a1ZpZXdJbXBsOjp0cmFuc2Zvcm1GcgogICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CiAK
ICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICBJbnRQb2ludCBzY3JvbGxQb3MgPSBw
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50KCktPnNjcm9sbFBvc2l0aW9uKCk7Ci0gICAgdHJh
bnNmb3JtLnRyYW5zbGF0ZShzY3JvbGxQb3MueCgpLCBzY3JvbGxQb3MueSgpKTsKLSAgICB0cmFu
c2Zvcm0uc2NhbGUoMSAvIHBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQoKS0+c2NhbGVGYWN0
b3IoKSk7CisgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShtX3Njcm9sbFBvc2l0aW9uLngoKSwgbV9z
Y3JvbGxQb3NpdGlvbi55KCkpOworICAgIHRyYW5zZm9ybS5zY2FsZSgxIC8gbV9zY2FsZUZhY3Rv
cik7CiAjZW5kaWYKIAogICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7
CkBAIC0zNzAsNyArMzY1LDcgQEAgdm9pZCBFd2tWaWV3SW1wbDo6c2V0SW1hZ2VEYXRhKHZvaWQq
IGltYQogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogdm9pZCBFd2tWaWV3SW1wbDo6aW5m
b3JtTG9hZENvbW1pdHRlZCgpCiB7Ci0gICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRD
b21taXRMb2FkKCk7CisgICAgbV9wYWdlQ2xpZW50LT5kaWRDb21taXRMb2FkKCk7CiB9CiAjZW5k
aWYKIApAQCAtNTU5LDcgKzU1NCw3IEBAIGJvb2wgRXdrVmlld0ltcGw6OmVudGVyQWNjZWxlcmF0
ZWRDb21wb3MKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIG1fcGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudC0+c2V0UmVuZGVyZXJBY3RpdmUodHJ1ZSk7CisgICAgcGFnZSgp
LT5kcmF3aW5nQXJlYSgpLT5sYXllclRyZWVDb29yZGluYXRvclByb3h5KCktPmxheWVyVHJlZVJl
bmRlcmVyKCktPnNldEFjdGl2ZSh0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjE4
LDcgKzYxMyw3IEBAIHZvaWQgRXdrVmlld0ltcGw6OmRpc21pc3NDb2xvclBpY2tlcigpCiB2b2lk
IEV3a1ZpZXdJbXBsOjppbmZvcm1Db250ZW50c1NpemVDaGFuZ2UoY29uc3QgSW50U2l6ZSYgc2l6
ZSkKIHsKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgbV9wYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50LT5kaWRDaGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7CisgICAgbV9wYWdl
Q2xpZW50LT5kaWRDaGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShzaXplKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvRXdrVmlld0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9Fd2tWaWV3SW1wbC5oCShyZXZpc2lvbiAxMzM0MjQpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw4
ICs1Miw2IEBAIGNsYXNzIFBhZ2VDbGllbnRJbXBsOwogY2xhc3MgUGFnZUxvYWRDbGllbnRFZmw7
CiBjbGFzcyBQYWdlUG9saWN5Q2xpZW50RWZsOwogY2xhc3MgUGFnZVVJQ2xpZW50RWZsOwotY2xh
c3MgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDsKLWNsYXNzIFBhZ2VWaWV3cG9ydENv
bnRyb2xsZXI7CiBjbGFzcyBSZXNvdXJjZUxvYWRDbGllbnRFZmw7CiBjbGFzcyBXZWJQYWdlR3Jv
dXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7CkBAIC05Miw3ICs5MCwxMyBAQCB0eXBlZGVmIHN0cnVj
dCBFd2tfVmlld19TbWFydF9EYXRhIEV3a19WCiAKIGNsYXNzIEV3a1ZpZXdJbXBsIHsKIHB1Ymxp
YzoKLSAgICBFd2tWaWV3SW1wbChFdmFzX09iamVjdCogdmlldywgUGFzc1JlZlB0cjxFd2tfQ29u
dGV4dD4gY29udGV4dCwgUGFzc1JlZlB0cjxXZWJLaXQ6OldlYlBhZ2VHcm91cD4gcGFnZUdyb3Vw
KTsKKworICAgIGVudW0gV2luZG93TW9kZSB7CisgICAgICAgIExlZ2FjeU1vZGUsCisgICAgICAg
IEZpeGVkTGF5b3V0TW9kZQorICAgIH07CisKKyAgICBFd2tWaWV3SW1wbChFdmFzX09iamVjdCog
dmlldywgUGFzc1JlZlB0cjxFd2tfQ29udGV4dD4gY29udGV4dCwgUGFzc1JlZlB0cjxXZWJLaXQ6
OldlYlBhZ2VHcm91cD4gcGFnZUdyb3VwLCBXaW5kb3dNb2RlKTsKICAgICB+RXdrVmlld0ltcGwo
KTsKIAogICAgIHN0YXRpYyBFd2tWaWV3SW1wbCogZnJvbUV2YXNPYmplY3QoY29uc3QgRXZhc19P
YmplY3QqIHZpZXcpOwpAQCAtMTc5LDggKzE4MywxMyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQg
bG9uZyBsb25nIGluZm9ybURhdGFiYXNlUXVvdGFSZWFjaGVkKGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGxvbmcgY3Vy
cmVudFF1b3RhLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudE9yaWdpblVzYWdlLCB1bnNpZ25l
ZCBsb25nIGxvbmcgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBleHBl
Y3RlZFVzYWdlKTsKIAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAgIFdlYktpdDo6
UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbCogcGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC5nZXQo
KTsgfQotICAgIFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlciogcGFnZVZpZXdwb3J0Q29u
dHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci5nZXQoKTsg
fQorICAgIFdlYktpdDo6UGFnZUNsaWVudEltcGwqIHBhZ2VDbGllbnQoKSB7IHJldHVybiBtX3Bh
Z2VDbGllbnQuZ2V0KCk7IH0KKworICAgIHZvaWQgc2V0U2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVG
YWN0b3IpIHsgbV9zY2FsZUZhY3RvciA9IHNjYWxlRmFjdG9yOyB9CisgICAgZmxvYXQgc2NhbGVG
YWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlRmFjdG9yOyB9CisKKyAgICB2b2lkIHNldFNj
cm9sbFBvc2l0aW9uKFdlYkNvcmU6OkludFBvaW50IHBvc2l0aW9uKSB7IG1fc2Nyb2xsUG9zaXRp
b24gPSBwb3NpdGlvbjsgfQorICAgIGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHNjcm9sbFBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxQb3NpdGlvbjsgfQogI2VuZGlmCiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIEV2YXNfR0wqIGV2YXNHTCgpIHsgcmV0dXJu
IG1fZXZhc0dMLmdldCgpOyB9CkBAIC0yMjcsOCArMjM2LDggQEAgcHJpdmF0ZToKICAgICBPd25Q
dHI8V2ViS2l0OjpGb3JtQ2xpZW50RWZsPiBtX2Zvcm1DbGllbnQ7CiAgICAgT3duUHRyPEV3a19C
YWNrX0ZvcndhcmRfTGlzdD4gbV9iYWNrRm9yd2FyZExpc3Q7CiAjaWYgVVNFKFRJTEVEX0JBQ0tJ
TkdfU1RPUkUpCi0gICAgT3duUHRyPFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVu
dEVmbD4gbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50OwotICAgIE93blB0cjxXZWJLaXQ6
OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI+IG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcjsKKyAgICBm
bG9hdCBtX3NjYWxlRmFjdG9yOworICAgIFdlYkNvcmU6OkludFBvaW50IG1fc2Nyb2xsUG9zaXRp
b247CiAjZW5kaWYKICAgICBPd25QdHI8RXdrX1NldHRpbmdzPiBtX3NldHRpbmdzOwogICAgIGNv
bnN0IGNoYXIqIG1fY3Vyc29yR3JvdXA7IC8vIFRoaXMgaXMgYW4gYWRkcmVzcywgZG8gbm90IGZy
ZWUgaXQgb3IgdXNlIFdLRWluYVNoYXJlZFN0cmluZy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAJKHJldmlzaW9uIDEzMzQyNCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzkyLDggKzM5Miw4IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jYWxjdWxh
dGUoRXYKICAgICAgICAgICAgIGltcGwtPmNyZWF0ZUdMU3VyZmFjZShJbnRTaXplKHdpZHRoLCBo
ZWlnaHQpKTsKICAgICAgICAgfQogI2VuZGlmCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KQotICAgICAgICBpbXBsLT5wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50KCktPnVwZGF0ZVZp
ZXdwb3J0U2l6ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKKyNpZiBVU0UoVElMRURfQkFDS0lO
R19TVE9SRSkKKyAgICAgICAgaW1wbC0+cGFnZUNsaWVudCgpLT51cGRhdGVWaWV3cG9ydFNpemUo
SW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7CiAjZW5kaWYKICAgICB9CiB9CkBAIC00OTQsNyArNDk0
LDcgQEAgc3RhdGljIGlubGluZSBFdmFzX1NtYXJ0KiBjcmVhdGVFd2tWaWV3UwogICAgIHJldHVy
biBzbWFydDsKIH0KIAotc3RhdGljIGlubGluZSBFdmFzX09iamVjdCogY3JlYXRlRXdrVmlldyhF
dmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0LCBQYXNzUmVmUHRyPEV3a19Db250ZXh0PiBj
b250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYgPSAwKQorc3RhdGljIGlubGluZSBF
dmFzX09iamVjdCogY3JlYXRlRXdrVmlldyhFdmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0
LCBQYXNzUmVmUHRyPEV3a19Db250ZXh0PiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3Jv
dXBSZWYgPSAwLCBFd2tWaWV3SW1wbDo6V2luZG93TW9kZSBtb2RlID0gRXdrVmlld0ltcGw6OkZp
eGVkTGF5b3V0TW9kZSkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY2Fu
dmFzLCAwKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnQsIDApOwpA
QCAtNTExLDggKzUxMSw3IEBAIHN0YXRpYyBpbmxpbmUgRXZhc19PYmplY3QqIGNyZWF0ZUV3a1Zp
ZXcKIAogICAgIEFTU0VSVCghc21hcnREYXRhLT5wcml2KTsKICAgICBSZWZQdHI8V2ViUGFnZUdy
b3VwPiBwYWdlR3JvdXAgPSBwYWdlR3JvdXBSZWYgPyB0b0ltcGwocGFnZUdyb3VwUmVmKSA6IFdl
YlBhZ2VHcm91cDo6Y3JlYXRlKCk7Ci0gICAgc21hcnREYXRhLT5wcml2ID0gbmV3IEV3a1ZpZXdJ
bXBsKGV3a1ZpZXcsIGNvbnRleHQsIHBhZ2VHcm91cCk7Ci0KKyAgICBzbWFydERhdGEtPnByaXYg
PSBuZXcgRXdrVmlld0ltcGwoZXdrVmlldywgY29udGV4dCwgcGFnZUdyb3VwLCBtb2RlKTsKICAg
ICByZXR1cm4gZXdrVmlldzsKIH0KIApAQCAtNTIyLDcgKzUyMSw3IEBAIHN0YXRpYyBpbmxpbmUg
RXZhc19PYmplY3QqIGNyZWF0ZUV3a1ZpZXcKICAqLwogRXZhc19PYmplY3QqIGV3a192aWV3X2Jh
c2VfYWRkKEV2YXMqIGNhbnZhcywgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3Vw
UmVmIHBhZ2VHcm91cFJlZikKIHsKLSAgICByZXR1cm4gY3JlYXRlRXdrVmlldyhjYW52YXMsIGNy
ZWF0ZUV3a1ZpZXdTbWFydENsYXNzKCksIEV3a19Db250ZXh0OjpjcmVhdGUoY29udGV4dFJlZiks
IHBhZ2VHcm91cFJlZik7CisgICAgcmV0dXJuIGNyZWF0ZUV3a1ZpZXcoY2FudmFzLCBjcmVhdGVF
d2tWaWV3U21hcnRDbGFzcygpLCBFd2tfQ29udGV4dDo6Y3JlYXRlKGNvbnRleHRSZWYpLCBwYWdl
R3JvdXBSZWYsIEV3a1ZpZXdJbXBsOjpMZWdhY3lNb2RlKTsKIH0KIAogRXZhc19PYmplY3QqIGV3
a192aWV3X3NtYXJ0X2FkZChFdmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0LCBFd2tfQ29u
dGV4dCogY29udGV4dCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNs
aWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
UGFnZUNsaWVudEltcGwuY3BwCShyZXZpc2lvbiAxMzM0MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTAg
KzQ0LDYgQEAKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3Lmgi
CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSNpbmNsdWRlICJQYWdlVmlld3BvcnRD
b250cm9sbGVyLmgiCi0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBu
YW1lc3BhY2UgRXdrVmlld0NhbGxiYWNrczsKIApAQCAtMTY2LDE1ICsxNjIsNiBAQCB2b2lkIFBh
Z2VDbGllbnRJbXBsOjpzZXRDdXJzb3JIaWRkZW5VbnRpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNv
bnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYgYXR0cikKLXsKLSNpZiBVU0UoVElMRURf
QkFDS0lOR19TVE9SRSkKLSAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPmRpZENoYW5nZVZp
ZXdwb3J0QXR0cmlidXRlcyhhdHRyKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGF0dHIpOwot
I2VuZGlmCi19Ci0KIHZvaWQgUGFnZUNsaWVudEltcGw6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUGFz
c1JlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiBjb21tYW5kLCBXZWJQYWdlUHJveHk6OlVuZG9P
clJlZG8gdW5kb09yUmVkbykKIHsKICAgICBtX3VuZG9Db250cm9sbGVyLnJlZ2lzdGVyRWRpdENv
bW1hbmQoY29tbWFuZCwgdW5kb09yUmVkbyk7CkBAIC0zMjYsMzIgKzMxMyw0IEBAIHZvaWQgUGFn
ZUNsaWVudEltcGw6OmhhbmRsZURvd25sb2FkUmVxdWUKICAgICBjb250ZXh0LT5kb3dubG9hZE1h
bmFnZXIoKS0+cmVnaXN0ZXJEb3dubG9hZChkb3dubG9hZCwgbV92aWV3SW1wbCk7CiB9CiAKLSNp
ZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLXZvaWQgUGFnZUNsaWVudEltcGw6OnBhZ2VEaWRS
ZXF1ZXN0U2Nyb2xsKGNvbnN0IEludFBvaW50JiBwb3NpdGlvbikKLXsKLSAgICBtX3BhZ2VWaWV3
cG9ydENvbnRyb2xsZXItPnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKHBvc2l0aW9uKTsKLX0KLSNlbmRp
ZgotCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgc2l6ZSkKLXsKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAg
ICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPmRpZENoYW5nZUNvbnRlbnRzU2l6ZShzaXplKTsK
LSNlbHNlCi0gICAgbV92aWV3SW1wbC0+aW5mb3JtQ29udGVudHNTaXplQ2hhbmdlKHNpemUpOwot
I2VuZGlmCi19Ci0KLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLXZvaWQgUGFnZUNsaWVu
dEltcGw6OmRpZFJlbmRlckZyYW1lKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNvbnRlbnRzU2l6
ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY292ZXJlZFJlY3QpCi17Ci0gICAgbV9wYWdlVmll
d3BvcnRDb250cm9sbGVyLT5kaWRSZW5kZXJGcmFtZShjb250ZW50c1NpemUsIGNvdmVyZWRSZWN0
KTsKLX0KLQotdm9pZCBQYWdlQ2xpZW50SW1wbDo6cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5
KCkKLXsKLSAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPnBhZ2VUcmFuc2l0aW9uVmlld3Bv
cnRSZWFkeSgpOwotfQotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGwuaAkocmV2aXNpb24g
MTMzNDI0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCwyMiArMzQsMTggQEAgY2xhc3MgRXdrVmlld0ltcGw7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBQYWdlVmlld3BvcnRDb250cm9sbGVyOwotCiBj
bGFzcyBQYWdlQ2xpZW50SW1wbCA6IHB1YmxpYyBQYWdlQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc093blB0cjxQYWdlQ2xpZW50SW1wbD4gY3JlYXRlKEV3a1ZpZXdJbXBsKiB2aWV3
SW1wbCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUGFnZUNsaWVudEltcGwo
dmlld0ltcGwpKTsKLSAgICB9Ci0gICAgflBhZ2VDbGllbnRJbXBsKCk7CisgICAgdmlydHVhbCB+
UGFnZUNsaWVudEltcGwoKTsKKworICAgIC8vIENhbGxlZCBmcm9tIHRoZSB2aWV3CisgICAgdmly
dHVhbCB2b2lkIGRpZENvbW1pdExvYWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZp
ZXdwb3J0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpID0gMDsKIAog
ICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCgpIGNvbnN0OwotI2lmIFVTRShUSUxFRF9CQUNLSU5H
X1NUT1JFKQotICAgIHZvaWQgc2V0UGFnZVZpZXdwb3J0Q29udHJvbGxlcihQYWdlVmlld3BvcnRD
b250cm9sbGVyKiBjb250cm9sbGVyKSB7IG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlciA9IGNvbnRy
b2xsZXI7IH0KLSNlbmRpZgogCi1wcml2YXRlOgorcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFBh
Z2VDbGllbnRJbXBsKEV3a1ZpZXdJbXBsKik7CiAKICAgICAvLyBQYWdlQ2xpZW50CkBAIC03MSw3
ICs2Nyw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdl
YkNvcmU6OkN1cnNvciYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRpbE1v
dXNlTW92ZXMoYm9vbCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVy
dGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0
cmlidXRlcyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckVkaXRDb21tYW5kKFBh
c3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4sIFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyk7
CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQWxsRWRpdENvbW1hbmRzKCk7CkBAIC0xMTYsMjIgKzEx
MiwxNCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjb3VudFN0cmluZ01hdGNoZXNJbkN1
c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCk7
CiAKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICB2aXJ0dWFsIHZvaWQgcGFnZURp
ZFJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKLSNlbmRpZgotCi0gICAg
dmlydHVhbCB2b2lkIGRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
Jik7Ci0KLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVuZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBjb3ZlcmVkUmVjdCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhZ2VUcmFu
c2l0aW9uVmlld3BvcnRSZWFkeSgpOworICAgIHZpcnR1YWwgdm9pZCBwYWdlRGlkUmVxdWVzdFNj
cm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVuZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBjb3ZlcmVkUmVjdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWdl
VHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKSA9IDA7CiAjZW5kaWYKIAotcHJpdmF0ZToKK3Byb3Rl
Y3RlZDoKICAgICBFd2tWaWV3SW1wbCogbV92aWV3SW1wbDsKICAgICBEZWZhdWx0VW5kb0NvbnRy
b2xsZXIgbV91bmRvQ29udHJvbGxlcjsKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAg
ICBQYWdlVmlld3BvcnRDb250cm9sbGVyKiBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXI7Ci0jZW5k
aWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50
SW1wbEZpeGVkTGF5b3V0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICAgQ29weXJpZ2h0IChD
KSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGFnZUNsaWVudEltcGxGaXhlZExheW91
dC5oIgorCisjaW5jbHVkZSAiRXdrVmlld0ltcGwuaCIKKworI2lmIFVTRShUSUxFRF9CQUNLSU5H
X1NUT1JFKQorI2luY2x1ZGUgIlBhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJQ
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmgiCisjZW5kaWYKKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgRXdrVmlld0NhbGxiYWNrczsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1BhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQ6OlBhZ2VDbGllbnRJbXBs
Rml4ZWRMYXlvdXQoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQorICAgIDogUGFnZUNsaWVudEltcGwo
dmlld0ltcGwpCit7Cit9CisKK1BhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQ6On5QYWdlQ2xpZW50
SW1wbEZpeGVkTGF5b3V0KCkKK3sKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0
OjpkaWRDb21taXRMb2FkKCkKK3sKKyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyAgICBB
U1NFUlQobV9wYWdlVmlld3BvcnRDb250cm9sbGVyKTsKKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRy
b2xsZXItPmRpZENvbW1pdExvYWQoKTsKKyNlbmRpZgorfQorCit2b2lkIFBhZ2VDbGllbnRJbXBs
Rml4ZWRMYXlvdXQ6OnVwZGF0ZVZpZXdwb3J0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBz
aXplKQoreworI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorICAgIGlmICghbV9wYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50KSB7CisgICAgICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudCA9IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmNyZWF0ZShtX3ZpZXdJ
bXBsKTsKKyAgICAgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyID0gYWRvcHRQdHIobmV3IFBh
Z2VWaWV3cG9ydENvbnRyb2xsZXIobV92aWV3SW1wbC0+cGFnZSgpLCBtX3BhZ2VWaWV3cG9ydENv
bnRyb2xsZXJDbGllbnQuZ2V0KCkpKTsKKyAgICB9CisgICAgbV9wYWdlVmlld3BvcnRDb250cm9s
bGVyQ2xpZW50LT51cGRhdGVWaWV3cG9ydFNpemUoc2l6ZSk7CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTShzaXplKTsKKyNlbmRpZgorfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQ6
OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJp
YnV0ZXMmIGF0dHIpCit7CisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisgICAgQVNTRVJU
KG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcik7CisgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVy
LT5kaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMoYXR0cik7CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTShhdHRyKTsKKyNlbmRpZgorfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQ6
OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQorewor
I2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorICAgIEFTU0VSVChtX3BhZ2VWaWV3cG9ydENv
bnRyb2xsZXIpOworICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlQ29udGVu
dHNTaXplKHNpemUpOworI2Vsc2UKKyAgICBtX3ZpZXdJbXBsLT5pbmZvcm1Db250ZW50c1NpemVD
aGFuZ2Uoc2l6ZSk7CisjZW5kaWYKK30KKworI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQor
dm9pZCBQYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0OjpwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25z
dCBJbnRQb2ludCYgcG9zaXRpb24pCit7CisgICAgQVNTRVJUKG1fcGFnZVZpZXdwb3J0Q29udHJv
bGxlcik7CisgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5wYWdlRGlkUmVxdWVzdFNjcm9s
bChwb3NpdGlvbik7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGxGaXhlZExheW91dDo6ZGlkUmVu
ZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBjb3ZlcmVkUmVjdCkKK3sKKyAgICBBU1NFUlQobV9wYWdlVmlld3BvcnRD
b250cm9sbGVyKTsKKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPmRpZFJlbmRlckZyYW1l
KGNvbnRlbnRzU2l6ZSwgY292ZXJlZFJlY3QpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsRml4
ZWRMYXlvdXQ6OnBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpCit7CisgICAgQVNTRVJUKG1f
cGFnZVZpZXdwb3J0Q29udHJvbGxlcik7CisgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5w
YWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudElt
cGxGaXhlZExheW91dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvUGFnZUNsaWVudEltcGxGaXhlZExheW91dC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0LmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBF
bGVjdHJvbmljcworICAgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBhZ2VDbGllbnRJbXBsRml4ZWRM
YXlvdXRfaAorI2RlZmluZSBQYWdlQ2xpZW50SW1wbEZpeGVkTGF5b3V0X2gKKworI2luY2x1ZGUg
IlBhZ2VDbGllbnRJbXBsLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQYWdlVmll
d3BvcnRDb250cm9sbGVyOworY2xhc3MgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDsK
KworY2xhc3MgUGFnZUNsaWVudEltcGxGaXhlZExheW91dCA6IHB1YmxpYyBQYWdlQ2xpZW50SW1w
bCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8UGFnZUNsaWVudEltcGw+IGNyZWF0
ZShFd2tWaWV3SW1wbCogdmlld0ltcGwpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFBhZ2VDbGllbnRJbXBsRml4ZWRMYXlvdXQodmlld0ltcGwpKTsKKyAgICB9CisgICAgdmly
dHVhbCB+UGFnZUNsaWVudEltcGxGaXhlZExheW91dCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRD
b21taXRMb2FkKCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZpZXdwb3J0U2l6ZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJik7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgUGFnZUNsaWVudElt
cGxGaXhlZExheW91dChFd2tWaWV3SW1wbCopOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VW
aWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJik7Cisj
aWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisgICAgdmlydHVhbCB2b2lkIHBhZ2VEaWRSZXF1
ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisjZW5kaWYKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKKyNp
ZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVuZGVyRnJh
bWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBjb3ZlcmVkUmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhZ2VUcmFuc2l0aW9uVmll
d3BvcnRSZWFkeSgpOworCisgICAgT3duUHRyPFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudEVmbD4gbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50OworICAgIE93blB0cjxX
ZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI+IG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcjsK
KyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQYWdlQ2xp
ZW50SW1wbEZpeGVkTGF5b3V0X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
UGFnZUNsaWVudEltcGxMZWdhY3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGxMZWdhY3kuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbExlZ2FjeS5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3Vu
ZyBFbGVjdHJvbmljcworICAgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUGFnZUNsaWVudEltcGxMZWdhY3kuaCIKKworI2luY2x1ZGUgIkV3a1ZpZXdJbXBsLmgi
CisjaW5jbHVkZSAiTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBFd2tWaWV3Q2FsbGJhY2tzOworCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworUGFnZUNsaWVudEltcGxMZWdhY3k6OlBhZ2VDbGllbnRJbXBsTGVnYWN5
KEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkKKyAgICA6IFBhZ2VDbGllbnRJbXBsKHZpZXdJbXBsKQor
eworfQorCitQYWdlQ2xpZW50SW1wbExlZ2FjeTo6flBhZ2VDbGllbnRJbXBsTGVnYWN5KCkKK3sK
K30KKwordm9pZCBQYWdlQ2xpZW50SW1wbExlZ2FjeTo6ZGlkQ29tbWl0TG9hZCgpCit7CisgICAg
bV92aWV3SW1wbC0+dXBkYXRlKCk7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGxMZWdhY3k6OnVw
ZGF0ZVZpZXdwb3J0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQoreworI2lmIFVT
RShUSUxFRF9CQUNLSU5HX1NUT1JFKQorICAgIG1fdmlld0ltcGwtPnBhZ2UoKS0+ZHJhd2luZ0Fy
ZWEoKS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChJbnRSZWN0KG1fdmlld0ltcGwtPnNjcm9sbFBv
c2l0aW9uKCksIHNpemUpLCBtX3ZpZXdJbXBsLT5zY2FsZUZhY3RvcigpLCBGbG9hdFBvaW50KCkp
OworI2VuZGlmCit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGxMZWdhY3k6OmRpZENoYW5nZVZpZXdw
b3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmKQoreworICAg
IG1fdmlld0ltcGwtPnVwZGF0ZSgpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsTGVnYWN5Ojpk
aWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKK3sKKyNp
ZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyAgICBtX3ZpZXdJbXBsLT5wYWdlKCktPmRyYXdp
bmdBcmVhKCktPmxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkoKS0+c2V0Q29udGVudHNTaXplKEZs
b2F0U2l6ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKKyAgICBtX3ZpZXdJbXBsLT51
cGRhdGUoKTsKKyNlbHNlCisgICAgbV92aWV3SW1wbC0+aW5mb3JtQ29udGVudHNTaXplQ2hhbmdl
KHNpemUpOworI2VuZGlmCit9CisKKyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKK3ZvaWQg
UGFnZUNsaWVudEltcGxMZWdhY3k6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IEludFBvaW50
JiBwb3NpdGlvbikKK3sKKyAgICBtX3ZpZXdJbXBsLT5zZXRTY3JvbGxQb3NpdGlvbihwb3NpdGlv
bik7CisgICAgbV92aWV3SW1wbC0+dXBkYXRlKCk7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGxM
ZWdhY3k6OmRpZFJlbmRlckZyYW1lKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JikKK3sKKyAgICBtX3ZpZXdJbXBsLT51cGRhdGUoKTsKK30KKwordm9pZCBQ
YWdlQ2xpZW50SW1wbExlZ2FjeTo6cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCkKK3sKKyAg
ICBtX3ZpZXdJbXBsLT51cGRhdGUoKTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGxMZWdh
Y3kuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGll
bnRJbXBsTGVnYWN5LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1BhZ2VDbGllbnRJbXBsTGVnYWN5LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICAgQ29weXJp
Z2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFBhZ2VDbGllbnRJbXBsTGVnYWN5X2gKKyNkZWZpbmUgUGFnZUNsaWVu
dEltcGxMZWdhY3lfaAorCisjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFBhZ2VDbGllbnRJbXBsTGVnYWN5IDogcHVibGljIFBhZ2VDbGll
bnRJbXBsIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxQYWdlQ2xpZW50SW1wbD4g
Y3JlYXRlKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgUGFnZUNsaWVudEltcGxMZWdhY3kodmlld0ltcGwpKTsKKyAgICB9CisgICAgdmly
dHVhbCB+UGFnZUNsaWVudEltcGxMZWdhY3koKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0
TG9hZCgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWV3cG9ydFNpemUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFBhZ2VDbGllbnRJbXBsTGVn
YWN5KEV3a1ZpZXdJbXBsKik7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJv
cGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmKTsKKyNpZiBVU0UoVElM
RURfQkFDS0lOR19TVE9SRSkKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFJlcXVlc3RTY3JvbGwo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBkaWRD
aGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOworI2lmIFVTRShUSUxF
RF9CQUNLSU5HX1NUT1JFKQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZW5kZXJGcmFtZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNv
dmVyZWRSZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5
KCk7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUGFn
ZUNsaWVudEltcGxMZWdhY3lfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Q
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3Bw
CShyZXZpc2lvbiAxMzM0MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VW
aWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2
NCw2IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2UKIHZvaWQgUGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6dXBkYXRlVmlld3BvcnRTaXplKGNvbnN0IElu
dFNpemUmIHZpZXdwb3J0U2l6ZSkKIHsKICAgICBtX3ZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6
ZTsKLSAgICBtX3ZpZXdJbXBsLT5wYWdlKCktPnNldFZpZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUp
OwogCiAgICAgQVNTRVJUKG1fY29udHJvbGxlcik7CiAgICAgbV9jb250cm9sbGVyLT5kaWRDaGFu
Z2VWaWV3cG9ydFNpemUodmlld3BvcnRTaXplKTsKQEAgLTc5LDIxICs3OCwyNiBAQCB2b2lkIFBh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNlCiAgICAgbV9jb250cm9sbGVyLT5kaWRD
aGFuZ2VDb250ZW50c1Zpc2liaWxpdHkobV9zY3JvbGxQb3NpdGlvbiwgbV9zY2FsZUZhY3Rvciwg
dHJhamVjdG9yeSk7CiB9CiAKLXZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6
ZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpCit2b2lk
IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShj
b25zdCBXZWJDb3JlOjpJbnRTaXplJikKIHsKICAgICBtX3ZpZXdJbXBsLT51cGRhdGUoKTsKIH0K
IAogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpzZXRWaWV3cG9ydFBvc2l0
aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGNvbnRlbnRzUG9pbnQpCiB7Ci0gICAgc2V0
VmlzaWJsZUNvbnRlbnRzUmVjdChJbnRQb2ludChjb250ZW50c1BvaW50LngoKSwgY29udGVudHNQ
b2ludC55KCkpLCBtX3NjYWxlRmFjdG9yLCBGbG9hdFBvaW50KCkpOworICAgIEludFBvaW50IHZp
ZXdwb3J0UG9zaXRpb24oY29udGVudHNQb2ludC54KCksIGNvbnRlbnRzUG9pbnQueSgpKTsKKyAg
ICBzZXRWaXNpYmxlQ29udGVudHNSZWN0KHZpZXdwb3J0UG9zaXRpb24sIG1fc2NhbGVGYWN0b3Is
IEZsb2F0UG9pbnQoKSk7CisgICAgbV92aWV3SW1wbC0+c2V0U2Nyb2xsUG9zaXRpb24odmlld3Bv
cnRQb3NpdGlvbik7CiB9CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6
c2V0Q29udGVudHNTY2FsZShmbG9hdCBuZXdTY2FsZSwgYm9vbCB0cmVhdEFzSW5pdGlhbFZhbHVl
KQogewotICAgIGlmICh0cmVhdEFzSW5pdGlhbFZhbHVlKQorICAgIGlmICh0cmVhdEFzSW5pdGlh
bFZhbHVlKSB7CiAgICAgICAgIG1fc2Nyb2xsUG9zaXRpb24gPSBJbnRQb2ludCgpOworICAgICAg
ICBtX3ZpZXdJbXBsLT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCgpKTsKKyAgICB9CiAgICAg
bV9zY2FsZUZhY3RvciA9IG5ld1NjYWxlOworICAgIG1fdmlld0ltcGwtPnNldFNjYWxlRmFjdG9y
KG5ld1NjYWxlKTsKIH0KIAogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpk
aWRSZXN1bWVDb250ZW50KCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172320</attachid>
            <date>2012-11-05 05:27:25 -0800</date>
            <delta_ts>2012-11-05 06:22:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>100674.patch</filename>
            <type>text/plain</type>
            <size>77859</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMzQ1NykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyNSBAQAorMjAxMi0xMS0wNSAgWWFlbCBB
aGFyb24gIDx5YWVsLmFoYXJvbkBpbnRlbC5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBBbGxv
dyB1c2luZyBBQ0NFTEVSQVRFRF9DT01QT1NJVElORyB3aXRob3V0IENPT1JESU5BVEVEX0dSQVBI
SUNTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA2
NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtl
IGEgZGlzdGluY3Rpb24gYmV0d2VlbiBjYWxsaW5nIGV3a192aWV3X2Jhc2VfYWRkIGFuZCBld2tf
dmlld19zbWFydF9hZGQuCisgICAgICAgIENhbGxpbmcgZXdrX3ZpZXdfYmFzZV9hZGQgY3JlYXRl
cyBhIGRlc2t0b3Agc3R5bGUgdmlldywgdGhhdCBkb2VzIG5vdCBzdXBwb3J0CisgICAgICAgIGZp
eGVkIGxheW91dCBzaXplLCB3aGlsZSBjYWxsaW5nIGV3a192aWV3X3NtYXJ0X2FkZCBkb2VzIHN1
cHBvcnQgZml4ZWQgbGF5b3V0IHNpemUuCisgICAgICAgIEFzIGEgcmVzdWx0LCBXZWJLaXRUZXN0
UnVubmVyIGFuZCB0aGUgaW5zcGVjdG9yIHdpbmRvdyBkbyBub3Qgc3VwcG9ydAorICAgICAgICBm
aXhlZCBsYXlvdXQgc2l6ZSwgd2hpbGUgTWluaUJyb3dzZXIgZG9lcy4gVGhpcyBjaGFuZ2UgYWxs
b3dzIG1hbnkgRHVtcEFzVGV4dAorICAgICAgICBsYXlvdXQgdGVzdHMgdG8gcGFzcyB3aXRob3V0
IG1vZGlmaWNhdGlvbiwgd2hlbiBBQyBpcyBlbmFibGVkLgorCisgICAgICAgICogUGxhdGZvcm1F
ZmwuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwOgor
ICAgICAgICAoRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKToKKyAgICAgICAgKEV3a1ZpZXdJbXBs
Ojp0cmFuc2Zvcm1Gcm9tU2NlbmUpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmluZm9ybUxvYWRD
b21taXR0ZWQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ01vZGUpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmluZm9ybUNvbnRlbnRzU2l6ZUNoYW5n
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaDoKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChFd2tWaWV3SW1wbCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6
cGFnZUNsaWVudCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6c2V0U2NhbGVGYWN0b3IpOgorICAg
ICAgICAoRXdrVmlld0ltcGw6OnNjYWxlRmFjdG9yKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpz
ZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChFd2tWaWV3SW1wbDo6c2Nyb2xsUG9zaXRpb24p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9l
d2tfdmlld19zbWFydF9jYWxjdWxhdGUpOgorICAgICAgICAoY3JlYXRlRXdrVmlldyk6CisgICAg
ICAgIChld2tfdmlld19iYXNlX2FkZCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlQ2xp
ZW50QmFzZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFn
ZUNsaWVudEltcGwuY3BwLgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50QmFzZTo6UGFnZUNs
aWVudEJhc2UpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50QmFzZTo6flBhZ2VDbGllbnRC
YXNlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEJhc2U6OnZpZXdJbXBsKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEJhc2U6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50QmFzZTo6c2V0Vmlld05lZWRzRGlzcGxheSk6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRCYXNlOjpkaXNwbGF5Vmlldyk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRCYXNlOjpzY3JvbGxWaWV3KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEJhc2U6OnZpZXdTaXplKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEJhc2U6Omlz
Vmlld1dpbmRvd0FjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRCYXNlOjppc1Zp
ZXdGb2N1c2VkKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEJhc2U6OmlzVmlld1Zpc2li
bGUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50QmFzZTo6aXNWaWV3SW5XaW5kb3cpOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50QmFzZTo6cHJvY2Vzc0RpZENyYXNoKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEJhc2U6OmRpZFJlbGF1bmNoUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VDbGllbnRCYXNlOjpwYWdlQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEJhc2U6OnRvb2xUaXBDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEJhc2U6OnNldEN1cnNvcik6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRCYXNlOjpz
ZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xp
ZW50QmFzZTo6cmVnaXN0ZXJFZGl0Q29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGll
bnRCYXNlOjpjbGVhckFsbEVkaXRDb21tYW5kcyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGll
bnRCYXNlOjpjYW5VbmRvUmVkbyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRCYXNlOjpl
eGVjdXRlVW5kb1JlZG8pOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50QmFzZTo6Y29udmVy
dFRvRGV2aWNlU3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50QmFzZTo6Y29udmVy
dFRvVXNlclNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEJhc2U6OnNjcmVlblRv
V2luZG93KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEJhc2U6OndpbmRvd1RvU2NyZWVu
KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEJhc2U6OmRvbmVXaXRoS2V5RXZlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50QmFzZTo6ZG9uZVdpdGhUb3VjaEV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEJhc2U6OmNyZWF0ZVBvcHVwTWVudVByb3h5KToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEJhc2U6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50QmFzZTo6Y3JlYXRlQ29sb3JDaG9vc2VyUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50QmFzZTo6c2V0RmluZEluZGljYXRvcik6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRCYXNlOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEJhc2U6OmV4aXRBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRCYXNlOjp1cGRh
dGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGll
bnRCYXNlOjpkaWRDaGFuZ2VTY3JvbGxiYXJzRm9yTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEJhc2U6OmRpZENvbW1pdExvYWRGb3JNYWluRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpQYWdlQ2xpZW50QmFzZTo6ZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21SZXBy
ZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRCYXNlOjpjdXN0b21SZXBy
ZXNlbnRhdGlvblpvb21GYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50QmFzZTo6
c2V0Q3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yKToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEJhc2U6OmZsYXNoQmFja2luZ1N0b3JlVXBkYXRlcyk6CisgICAgICAgIChXZWJLaXQ6
OlBhZ2VDbGllbnRCYXNlOjpmaW5kU3RyaW5nSW5DdXN0b21SZXByZXNlbnRhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRCYXNlOjpjb3VudFN0cmluZ01hdGNoZXNJbkN1c3RvbVJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEJhc2U6OnVwZGF0ZVRl
eHRJbnB1dFN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEJhc2U6OmhhbmRsZURv
d25sb2FkUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBs
LmguCisgICAgICAgIChQYWdlQ2xpZW50QmFzZSk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9Q
YWdlQ2xpZW50RGVmYXVsdEltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VDbGllbnREZWZhdWx0SW1wbDo6UGFnZUNsaWVudERlZmF1bHRJbXBs
KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudERlZmF1bHRJbXBsOjpkaWRDb21taXRMb2Fk
KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudERlZmF1bHRJbXBsOjp1cGRhdGVWaWV3cG9y
dFNpemUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50RGVmYXVsdEltcGw6OmRpZENoYW5n
ZVZpZXdwb3J0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnREZWZhdWx0
SW1wbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVu
dERlZmF1bHRJbXBsOjpwYWdlRGlkUmVxdWVzdFNjcm9sbCk6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnREZWZhdWx0SW1wbDo6ZGlkUmVuZGVyRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50RGVmYXVsdEltcGw6OnBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSk6CisgICAg
ICAgICogVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50RGVmYXVsdEltcGwuaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoUGFnZUNsaWVudERlZmF1bHRJbXBsKToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudERlZmF1bHRJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50RGVmYXVsdEltcGw6On5QYWdlQ2xpZW50RGVmYXVsdEltcGwpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGwuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvZWZsL1BhZ2VDbGllbnRMZWdhY3lJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50TGVnYWN5SW1wbDo6UGFnZUNsaWVudExl
Z2FjeUltcGwpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50TGVnYWN5SW1wbDo6ZGlkQ29t
bWl0TG9hZCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRMZWdhY3lJbXBsOjp1cGRhdGVW
aWV3cG9ydFNpemUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50TGVnYWN5SW1wbDo6ZGlk
Q2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudExl
Z2FjeUltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VD
bGllbnRMZWdhY3lJbXBsOjpwYWdlRGlkUmVxdWVzdFNjcm9sbCk6CisgICAgICAgIChXZWJLaXQ6
OlBhZ2VDbGllbnRMZWdhY3lJbXBsOjpkaWRSZW5kZXJGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OlBhZ2VDbGllbnRMZWdhY3lJbXBsOjpwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUltcGwuaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoUGFnZUNsaWVudExlZ2FjeUltcGwpOgorICAgICAgICAo
V2ViS2l0OjpQYWdlQ2xpZW50TGVnYWN5SW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudExlZ2FjeUltcGw6On5QYWdlQ2xpZW50TGVnYWN5SW1wbCk6CisgICAgICAgICog
VUlQcm9jZXNzL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6dXBkYXRlVmlld3Bv
cnRTaXplKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVm
bDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0
Q29udHJvbGxlckNsaWVudEVmbDo6c2V0Vmlld3BvcnRQb3NpdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNldENvbnRlbnRzU2NhbGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2aWV3V2lkZ2V0KToKKwogMjAxMi0xMS0wNSAgTWlraGFp
bCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KIAogICAgICAgICBb
RUZMXVtXSzJdIE1ha2UgRXdrX1VybF9SZXF1ZXN0LCBFd2tfVXJsX1Jlc3BvbnNlLCBFd2tfTmF2
aWdhdGlvbl9EYXRhICBFd2tfT2JqZWN0cwpJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm1F
ZmwuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UJ
KHJldmlzaW9uIDEzMzQ1NykKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCSh3
b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw5IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNF
UwogICAgIFVJUHJvY2Vzcy9lZmwvRm9ybUNsaWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZs
L0lucHV0TWV0aG9kQ29udGV4dEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL05ldHdvcmtJbmZv
UHJvdmlkZXIuY3BwCi0gICAgVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKKyAgICBV
SVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRCYXNlLmNwcAorICAgIFVJUHJvY2Vzcy9lZmwvUGFnZUNs
aWVudExlZ2FjeUltcGwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50RGVmYXVsdElt
cGwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9QYWdlTG9hZENsaWVudEVmbC5jcHAKICAgICBVSVBy
b2Nlc3MvZWZsL1BhZ2VQb2xpY3lDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9QYWdl
VUlDbGllbnRFZmwuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlld0ltcGwuY3BwCShyZXZpc2lvbiAxMzM0NTcpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDEyICsyNywxMiBAQAogI2luY2x1ZGUgIklucHV0TWV0aG9kQ29udGV4dEVmbC5oIgogI2luY2x1
ZGUgIkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaCIKICNpbmNsdWRlICJMYXllclRyZWVSZW5k
ZXJlci5oIgotI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCisjaW5jbHVkZSAiUGFnZUNsaWVu
dEJhc2UuaCIKKyNpbmNsdWRlICJQYWdlQ2xpZW50RGVmYXVsdEltcGwuaCIKKyNpbmNsdWRlICJQ
YWdlQ2xpZW50TGVnYWN5SW1wbC5oIgogI2luY2x1ZGUgIlBhZ2VMb2FkQ2xpZW50RWZsLmgiCiAj
aW5jbHVkZSAiUGFnZVBvbGljeUNsaWVudEVmbC5oIgogI2luY2x1ZGUgIlBhZ2VVSUNsaWVudEVm
bC5oIgotI2luY2x1ZGUgIlBhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJQYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkQ2xp
ZW50RWZsLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0Lmgi
CkBAIC05NiwxMCArOTYsMTAgQEAgY29uc3QgRXZhc19PYmplY3QqIEV3a1ZpZXdJbXBsOjp2aWV3
RnJvbQogICAgIHJldHVybiBwYWdlVmlld01hcCgpLmdldChwYWdlKTsKIH0KIAotRXdrVmlld0lt
cGw6OkV3a1ZpZXdJbXBsKEV2YXNfT2JqZWN0KiB2aWV3LCBQYXNzUmVmUHRyPEV3a19Db250ZXh0
PiBjb250ZXh0LCBQYXNzUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwKQorRXdrVmlld0lt
cGw6OkV3a1ZpZXdJbXBsKEV2YXNfT2JqZWN0KiB2aWV3LCBQYXNzUmVmUHRyPEV3a19Db250ZXh0
PiBjb250ZXh0LCBQYXNzUmVmUHRyPFdlYlBhZ2VHcm91cD4gcGFnZUdyb3VwLCBWaWV3QmVoYXZp
b3IgYmVoYXZpb3IpCiAgICAgOiBtX3ZpZXcodmlldykKICAgICAsIG1fY29udGV4dChjb250ZXh0
KQotICAgICwgbV9wYWdlQ2xpZW50KFBhZ2VDbGllbnRJbXBsOjpjcmVhdGUodGhpcykpCisgICAg
LCBtX3BhZ2VDbGllbnQoYmVoYXZpb3IgPT0gRGVmYXVsdEJlaGF2aW9yID8gUGFnZUNsaWVudERl
ZmF1bHRJbXBsOjpjcmVhdGUodGhpcykgOiBQYWdlQ2xpZW50TGVnYWN5SW1wbDo6Y3JlYXRlKHRo
aXMpKQogICAgICwgbV9wYWdlUHJveHkodG9JbXBsKG1fY29udGV4dC0+d2tDb250ZXh0KCkpLT5j
cmVhdGVXZWJQYWdlKG1fcGFnZUNsaWVudC5nZXQoKSwgcGFnZUdyb3VwLmdldCgpKSkKICAgICAs
IG1fcGFnZUxvYWRDbGllbnQoUGFnZUxvYWRDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKICAgICAs
IG1fcGFnZVBvbGljeUNsaWVudChQYWdlUG9saWN5Q2xpZW50RWZsOjpjcmVhdGUodGhpcykpCkBA
IC0xMDksOCArMTA5LDcgQEAgRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKEV2YXNfT2JqZWN0KiB2
aQogICAgICwgbV9mb3JtQ2xpZW50KEZvcm1DbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKICAgICAs
IG1fYmFja0ZvcndhcmRMaXN0KEV3a19CYWNrX0ZvcndhcmRfTGlzdDo6Y3JlYXRlKHRvQVBJKG1f
cGFnZVByb3h5LT5iYWNrRm9yd2FyZExpc3QoKSkpKQogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NU
T1JFKQotICAgICwgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50KFBhZ2VWaWV3cG9ydENv
bnRyb2xsZXJDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKLSAgICAsIG1fcGFnZVZpZXdwb3J0Q29u
dHJvbGxlcihhZG9wdFB0cihuZXcgUGFnZVZpZXdwb3J0Q29udHJvbGxlcihtX3BhZ2VQcm94eS5n
ZXQoKSwgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LmdldCgpKSkpCisgICAgLCBtX3Nj
YWxlRmFjdG9yKDEpCiAjZW5kaWYKICAgICAsIG1fc2V0dGluZ3MoRXdrX1NldHRpbmdzOjpjcmVh
dGUodGhpcykpCiAgICAgLCBtX2N1cnNvckdyb3VwKDApCkBAIC0xMzEsMTUgKzEzMCwxMiBAQCBF
d2tWaWV3SW1wbDo6RXdrVmlld0ltcGwoRXZhc19PYmplY3QqIHZpCiAjaWYgRU5BQkxFKFdFQkdM
KQogICAgIG1fcGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0V2ViR0xF
bmFibGVkKHRydWUpOwogI2VuZGlmCi0gICAgbV9wYWdlUHJveHktPnNldFVzZUZpeGVkTGF5b3V0
KHRydWUpOworICAgIGlmIChiZWhhdmlvciA9PSBEZWZhdWx0QmVoYXZpb3IpCisgICAgICAgIG1f
cGFnZVByb3h5LT5zZXRVc2VGaXhlZExheW91dCh0cnVlKTsKICNlbmRpZgogCiAgICAgbV9wYWdl
UHJveHktPmluaXRpYWxpemVXZWJQYWdlKCk7CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9S
RSkKLSAgICBtX3BhZ2VDbGllbnQtPnNldFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIobV9wYWdlVmll
d3BvcnRDb250cm9sbGVyLmdldCgpKTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQogICAgIG1fcGFnZVByb3h5LT5mdWxsU2NyZWVuTWFuYWdlcigpLT5zZXRXZWJWaWV3KG1f
dmlldyk7CiAgICAgbV9wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRG
dWxsU2NyZWVuRW5hYmxlZCh0cnVlKTsKQEAgLTI0NSw5ICsyNDEsOCBAQCBBZmZpbmVUcmFuc2Zv
cm0gRXdrVmlld0ltcGw6OnRyYW5zZm9ybUZyCiAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9y
bTsKIAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAgIEludFBvaW50IHNjcm9sbFBv
cyA9IHBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQoKS0+c2Nyb2xsUG9zaXRpb24oKTsKLSAg
ICB0cmFuc2Zvcm0udHJhbnNsYXRlKHNjcm9sbFBvcy54KCksIHNjcm9sbFBvcy55KCkpOwotICAg
IHRyYW5zZm9ybS5zY2FsZSgxIC8gcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudCgpLT5zY2Fs
ZUZhY3RvcigpKTsKKyAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKG1fc2Nyb2xsUG9zaXRpb24ueCgp
LCBtX3Njcm9sbFBvc2l0aW9uLnkoKSk7CisgICAgdHJhbnNmb3JtLnNjYWxlKDEgLyBtX3NjYWxl
RmFjdG9yKTsKICNlbmRpZgogCiAgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzbWFydERh
dGEoKTsKQEAgLTM3MCw3ICszNjUsNyBAQCB2b2lkIEV3a1ZpZXdJbXBsOjpzZXRJbWFnZURhdGEo
dm9pZCogaW1hCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiB2b2lkIEV3a1ZpZXdJbXBs
OjppbmZvcm1Mb2FkQ29tbWl0dGVkKCkKIHsKLSAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIt
PmRpZENvbW1pdExvYWQoKTsKKyAgICBtX3BhZ2VDbGllbnQtPmRpZENvbW1pdExvYWQoKTsKIH0K
ICNlbmRpZgogCkBAIC01NTksNyArNTU0LDcgQEAgYm9vbCBFd2tWaWV3SW1wbDo6ZW50ZXJBY2Nl
bGVyYXRlZENvbXBvcwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgbV9wYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50LT5zZXRSZW5kZXJlckFjdGl2ZSh0cnVlKTsKKyAgICBw
YWdlKCktPmRyYXdpbmdBcmVhKCktPmxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkoKS0+bGF5ZXJU
cmVlUmVuZGVyZXIoKS0+c2V0QWN0aXZlKHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBA
IC02MTgsNyArNjEzLDcgQEAgdm9pZCBFd2tWaWV3SW1wbDo6ZGlzbWlzc0NvbG9yUGlja2VyKCkK
IHZvaWQgRXdrVmlld0ltcGw6OmluZm9ybUNvbnRlbnRzU2l6ZUNoYW5nZShjb25zdCBJbnRTaXpl
JiBzaXplKQogewogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLSAgICBtX3BhZ2VWaWV3
cG9ydENvbnRyb2xsZXJDbGllbnQtPmRpZENoYW5nZUNvbnRlbnRzU2l6ZShzaXplKTsKKyAgICBt
X3BhZ2VDbGllbnQtPmRpZENoYW5nZUNvbnRlbnRzU2l6ZShzaXplKTsKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKHNpemUpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9Fd2tWaWV3SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgJKHJldmlzaW9uIDEzMzQ1NykKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDEyICs0OCwxMCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIEZpbmRDbGllbnRFZmw7
CiBjbGFzcyBGb3JtQ2xpZW50RWZsOwogY2xhc3MgSW5wdXRNZXRob2RDb250ZXh0RWZsOwotY2xh
c3MgUGFnZUNsaWVudEltcGw7CitjbGFzcyBQYWdlQ2xpZW50QmFzZTsKIGNsYXNzIFBhZ2VMb2Fk
Q2xpZW50RWZsOwogY2xhc3MgUGFnZVBvbGljeUNsaWVudEVmbDsKIGNsYXNzIFBhZ2VVSUNsaWVu
dEVmbDsKLWNsYXNzIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw7Ci1jbGFzcyBQYWdl
Vmlld3BvcnRDb250cm9sbGVyOwogY2xhc3MgUmVzb3VyY2VMb2FkQ2xpZW50RWZsOwogY2xhc3Mg
V2ViUGFnZUdyb3VwOwogY2xhc3MgV2ViUGFnZVByb3h5OwpAQCAtOTAsNyArODgsMTIgQEAgdHlw
ZWRlZiBzdHJ1Y3QgRXdrX1ZpZXdfU21hcnRfRGF0YSBFd2tfVgogCiBjbGFzcyBFd2tWaWV3SW1w
bCB7CiBwdWJsaWM6Ci0gICAgRXdrVmlld0ltcGwoRXZhc19PYmplY3QqIHZpZXcsIFBhc3NSZWZQ
dHI8RXdrX0NvbnRleHQ+IGNvbnRleHQsIFBhc3NSZWZQdHI8V2ViS2l0OjpXZWJQYWdlR3JvdXA+
IHBhZ2VHcm91cCk7CisKKyAgICBlbnVtIFZpZXdCZWhhdmlvciB7CisgICAgICAgIExlZ2FjeUJl
aGF2aW9yLAorICAgICAgICBEZWZhdWx0QmVoYXZpb3IKKyAgICB9OworICAgIEV3a1ZpZXdJbXBs
KEV2YXNfT2JqZWN0KiB2aWV3LCBQYXNzUmVmUHRyPEV3a19Db250ZXh0PiBjb250ZXh0LCBQYXNz
UmVmUHRyPFdlYktpdDo6V2ViUGFnZUdyb3VwPiBwYWdlR3JvdXAsIFZpZXdCZWhhdmlvcik7CiAg
ICAgfkV3a1ZpZXdJbXBsKCk7CiAKICAgICBzdGF0aWMgRXdrVmlld0ltcGwqIGZyb21FdmFzT2Jq
ZWN0KGNvbnN0IEV2YXNfT2JqZWN0KiB2aWV3KTsKQEAgLTE3Nyw4ICsxODAsMTMgQEAgcHVibGlj
OgogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbmZvcm1EYXRhYmFzZVF1b3RhUmVhY2hlZChjb25z
dCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWdu
ZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90YSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRPcmln
aW5Vc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1bnNpZ25l
ZCBsb25nIGxvbmcgZXhwZWN0ZWRVc2FnZSk7CiAKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9S
RSkKLSAgICBXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwqIHBhZ2VWaWV3
cG9ydENvbnRyb2xsZXJDbGllbnQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VWaWV3cG9ydENvbnRy
b2xsZXJDbGllbnQuZ2V0KCk7IH0KLSAgICBXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXIq
IHBhZ2VWaWV3cG9ydENvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VWaWV3cG9ydENv
bnRyb2xsZXIuZ2V0KCk7IH0KKyAgICBXZWJLaXQ6OlBhZ2VDbGllbnRCYXNlKiBwYWdlQ2xpZW50
KCkgeyByZXR1cm4gbV9wYWdlQ2xpZW50LmdldCgpOyB9CisKKyAgICB2b2lkIHNldFNjYWxlRmFj
dG9yKGZsb2F0IHNjYWxlRmFjdG9yKSB7IG1fc2NhbGVGYWN0b3IgPSBzY2FsZUZhY3RvcjsgfQor
ICAgIGZsb2F0IHNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9zY2FsZUZhY3RvcjsgfQor
CisgICAgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihXZWJDb3JlOjpJbnRQb2ludCBwb3NpdGlvbikg
eyBtX3Njcm9sbFBvc2l0aW9uID0gcG9zaXRpb247IH0KKyAgICBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsUG9zaXRpb247IH0K
ICNlbmRpZgogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBFdmFzX0dMKiBl
dmFzR0woKSB7IHJldHVybiBtX2V2YXNHTC5nZXQoKTsgfQpAQCAtMjE1LDcgKzIyMyw3IEBAIHBy
aXZhdGU6CiAgICAgT3duUHRyPFdlYktpdDo6RXZhc0dMQ29udGV4dD4gbV9ldmFzR0xDb250ZXh0
OwogICAgIE93blB0cjxXZWJLaXQ6OkV2YXNHTFN1cmZhY2U+IG1fZXZhc0dMU3VyZmFjZTsKICNl
bmRpZgotICAgIE93blB0cjxXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsPiBtX3BhZ2VDbGllbnQ7Cisg
ICAgT3duUHRyPFdlYktpdDo6UGFnZUNsaWVudEJhc2U+IG1fcGFnZUNsaWVudDsKICAgICBSZWZQ
dHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IG1fcGFnZVByb3h5OwogICAgIE93blB0cjxXZWJLaXQ6
OlBhZ2VMb2FkQ2xpZW50RWZsPiBtX3BhZ2VMb2FkQ2xpZW50OwogICAgIE93blB0cjxXZWJLaXQ6
OlBhZ2VQb2xpY3lDbGllbnRFZmw+IG1fcGFnZVBvbGljeUNsaWVudDsKQEAgLTIyNSw4ICsyMzMs
OCBAQCBwcml2YXRlOgogICAgIE93blB0cjxXZWJLaXQ6OkZvcm1DbGllbnRFZmw+IG1fZm9ybUNs
aWVudDsKICAgICBPd25QdHI8RXdrX0JhY2tfRm9yd2FyZF9MaXN0PiBtX2JhY2tGb3J3YXJkTGlz
dDsKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICBPd25QdHI8V2ViS2l0OjpQYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsPiBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnQ7Ci0gICAgT3duUHRyPFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlcj4gbV9wYWdlVmll
d3BvcnRDb250cm9sbGVyOworICAgIGZsb2F0IG1fc2NhbGVGYWN0b3I7CisgICAgV2ViQ29yZTo6
SW50UG9pbnQgbV9zY3JvbGxQb3NpdGlvbjsKICNlbmRpZgogICAgIE93blB0cjxFd2tfU2V0dGlu
Z3M+IG1fc2V0dGluZ3M7CiAgICAgY29uc3QgY2hhciogbV9jdXJzb3JHcm91cDsgLy8gVGhpcyBp
cyBhbiBhZGRyZXNzLCBkbyBub3QgZnJlZSBpdCBvciB1c2UgV0tFaW5hU2hhcmVkU3RyaW5nLgpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAko
cmV2aXNpb24gMTMzNDU3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYk1vdXNlRXZlbnQuaCIK
ICNpbmNsdWRlICJOYXRpdmVXZWJXaGVlbEV2ZW50LmgiCi0jaW5jbHVkZSAiUGFnZUNsaWVudElt
cGwuaCIKKyNpbmNsdWRlICJQYWdlQ2xpZW50QmFzZS5oIgogI2luY2x1ZGUgIlBhZ2VMb2FkQ2xp
ZW50RWZsLmgiCiAjaW5jbHVkZSAiUGFnZVBvbGljeUNsaWVudEVmbC5oIgogI2luY2x1ZGUgIlBh
Z2VVSUNsaWVudEVmbC5oIgpAQCAtMzkyLDggKzM5Miw4IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmll
d19zbWFydF9jYWxjdWxhdGUoRXYKICAgICAgICAgICAgIGltcGwtPmNyZWF0ZUdMU3VyZmFjZShJ
bnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKICAgICAgICAgfQogI2VuZGlmCi0jaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQotICAgICAgICBpbXBsLT5wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xp
ZW50KCktPnVwZGF0ZVZpZXdwb3J0U2l6ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKKyNpZiBV
U0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyAgICAgICAgaW1wbC0+cGFnZUNsaWVudCgpLT51cGRh
dGVWaWV3cG9ydFNpemUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7CiAjZW5kaWYKICAgICB9CiB9
CkBAIC00OTQsNyArNDk0LDcgQEAgc3RhdGljIGlubGluZSBFdmFzX1NtYXJ0KiBjcmVhdGVFd2tW
aWV3UwogICAgIHJldHVybiBzbWFydDsKIH0KIAotc3RhdGljIGlubGluZSBFdmFzX09iamVjdCog
Y3JlYXRlRXdrVmlldyhFdmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0LCBQYXNzUmVmUHRy
PEV3a19Db250ZXh0PiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYgPSAwKQor
c3RhdGljIGlubGluZSBFdmFzX09iamVjdCogY3JlYXRlRXdrVmlldyhFdmFzKiBjYW52YXMsIEV2
YXNfU21hcnQqIHNtYXJ0LCBQYXNzUmVmUHRyPEV3a19Db250ZXh0PiBjb250ZXh0LCBXS1BhZ2VH
cm91cFJlZiBwYWdlR3JvdXBSZWYgPSAwLCBFd2tWaWV3SW1wbDo6Vmlld0JlaGF2aW9yIGJlaGF2
aW9yID0gRXdrVmlld0ltcGw6OkRlZmF1bHRCZWhhdmlvcikKIHsKICAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoY2FudmFzLCAwKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoc21hcnQsIDApOwpAQCAtNTExLDggKzUxMSw3IEBAIHN0YXRpYyBpbmxpbmUgRXZh
c19PYmplY3QqIGNyZWF0ZUV3a1ZpZXcKIAogICAgIEFTU0VSVCghc21hcnREYXRhLT5wcml2KTsK
ICAgICBSZWZQdHI8V2ViUGFnZUdyb3VwPiBwYWdlR3JvdXAgPSBwYWdlR3JvdXBSZWYgPyB0b0lt
cGwocGFnZUdyb3VwUmVmKSA6IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKCk7Ci0gICAgc21hcnREYXRh
LT5wcml2ID0gbmV3IEV3a1ZpZXdJbXBsKGV3a1ZpZXcsIGNvbnRleHQsIHBhZ2VHcm91cCk7Ci0K
KyAgICBzbWFydERhdGEtPnByaXYgPSBuZXcgRXdrVmlld0ltcGwoZXdrVmlldywgY29udGV4dCwg
cGFnZUdyb3VwLCBiZWhhdmlvcik7CiAgICAgcmV0dXJuIGV3a1ZpZXc7CiB9CiAKQEAgLTUyMiw3
ICs1MjEsNyBAQCBzdGF0aWMgaW5saW5lIEV2YXNfT2JqZWN0KiBjcmVhdGVFd2tWaWV3CiAgKi8K
IEV2YXNfT2JqZWN0KiBld2tfdmlld19iYXNlX2FkZChFdmFzKiBjYW52YXMsIFdLQ29udGV4dFJl
ZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCiB7Ci0gICAgcmV0dXJu
IGNyZWF0ZUV3a1ZpZXcoY2FudmFzLCBjcmVhdGVFd2tWaWV3U21hcnRDbGFzcygpLCBFd2tfQ29u
dGV4dDo6Y3JlYXRlKGNvbnRleHRSZWYpLCBwYWdlR3JvdXBSZWYpOworICAgIHJldHVybiBjcmVh
dGVFd2tWaWV3KGNhbnZhcywgY3JlYXRlRXdrVmlld1NtYXJ0Q2xhc3MoKSwgRXdrX0NvbnRleHQ6
OmNyZWF0ZShjb250ZXh0UmVmKSwgcGFnZUdyb3VwUmVmLCBFd2tWaWV3SW1wbDo6TGVnYWN5QmVo
YXZpb3IpOwogfQogCiBFdmFzX09iamVjdCogZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXMqIGNhbnZh
cywgRXZhc19TbWFydCogc21hcnQsIEV3a19Db250ZXh0KiBjb250ZXh0KQpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5jcHAJKHJldmlzaW9u
IDEzMzQyNCkJKGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1w
bC5jcHA6MTMzNDI0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50
QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNTcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIKKworI2luY2x1ZGUgIkRyYXdpbmdB
cmVhUHJveHlJbXBsLmgiCisjaW5jbHVkZSAiRXdrVmlld0ltcGwuaCIKKyNpbmNsdWRlICJJbnB1
dE1ldGhvZENvbnRleHRFZmwuaCIKKyNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50Lmgi
CisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisj
aW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgorI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5o
IgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5
RWZsLmgiCisjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKKyNpbmNsdWRlICJld2tfY29udGV4
dC5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfZG93
bmxvYWRfam9iLmgiCisjaW5jbHVkZSAiZXdrX2Rvd25sb2FkX2pvYl9wcml2YXRlLmgiCisjaW5j
bHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdmlldy5oIgorCisjaWYgVVNFKFRJ
TEVEX0JBQ0tJTkdfU1RPUkUpCisjaW5jbHVkZSAiUGFnZVZpZXdwb3J0Q29udHJvbGxlci5oIgor
I2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIEV3a1Zp
ZXdDYWxsYmFja3M7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYWdlQ2xpZW50SW1wbDo6UGFn
ZUNsaWVudEltcGwoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQorICAgIDogbV92aWV3SW1wbCh2aWV3
SW1wbCkKK3sKK30KKworUGFnZUNsaWVudEltcGw6On5QYWdlQ2xpZW50SW1wbCgpCit7Cit9CisK
K0V3a1ZpZXdJbXBsKiBQYWdlQ2xpZW50SW1wbDo6dmlld0ltcGwoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3ZpZXdJbXBsOworfQorCisvLyBQYWdlQ2xpZW50CitQYXNzT3duUHRyPERyYXdpbmdB
cmVhUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KCkKK3sKKyAg
ICByZXR1cm4gRHJhd2luZ0FyZWFQcm94eUltcGw6OmNyZWF0ZShtX3ZpZXdJbXBsLT5wYWdlKCkp
OworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHJlY3QpCit7CisgICAgbV92aWV3SW1wbC0+dXBkYXRlKHJlY3QpOwor
fQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaXNwbGF5VmlldygpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2Nyb2xsVmlldyhjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJikKK3sKKyAg
ICBzZXRWaWV3TmVlZHNEaXNwbGF5KHNjcm9sbFJlY3QpOworfQorCitXZWJDb3JlOjpJbnRTaXpl
IFBhZ2VDbGllbnRJbXBsOjp2aWV3U2l6ZSgpCit7CisgICAgcmV0dXJuIG1fdmlld0ltcGwtPnNp
emUoKTsKK30KKworYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3V2luZG93QWN0aXZlKCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFBhZ2VD
bGllbnRJbXBsOjppc1ZpZXdGb2N1c2VkKCkKK3sKKyAgICByZXR1cm4gbV92aWV3SW1wbC0+aXNG
b2N1c2VkKCk7Cit9CisKK2Jvb2wgUGFnZUNsaWVudEltcGw6OmlzVmlld1Zpc2libGUoKQorewor
ICAgIHJldHVybiBtX3ZpZXdJbXBsLT5pc1Zpc2libGUoKTsKK30KKworYm9vbCBQYWdlQ2xpZW50
SW1wbDo6aXNWaWV3SW5XaW5kb3coKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnByb2Nlc3NEaWRDcmFzaCgpCit7
CisgICAgLy8gQ2hlY2sgaWYgbG9hZGluZyB3YXMgb25nb2luZywgd2hlbiB3ZWIgcHJvY2VzcyBj
cmFzaGVkLgorICAgIGRvdWJsZSBsb2FkUHJvZ3Jlc3MgPSBld2tfdmlld19sb2FkX3Byb2dyZXNz
X2dldChtX3ZpZXdJbXBsLT52aWV3KCkpOworICAgIGlmIChsb2FkUHJvZ3Jlc3MgPj0gMCAmJiBs
b2FkUHJvZ3Jlc3MgPCAxKSB7CisgICAgICAgIGxvYWRQcm9ncmVzcyA9IDE7CisgICAgICAgIG1f
dmlld0ltcGwtPnNtYXJ0Q2FsbGJhY2s8TG9hZFByb2dyZXNzPigpLmNhbGwoJmxvYWRQcm9ncmVz
cyk7CisgICAgfQorCisgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CisgICAgbV92aWV3SW1wbC0+
c21hcnRDYWxsYmFjazxXZWJQcm9jZXNzQ3Jhc2hlZD4oKS5jYWxsKCZoYW5kbGVkKTsKKworICAg
IGlmICghaGFuZGxlZCkgeworICAgICAgICBDU3RyaW5nIHVybCA9IG1fdmlld0ltcGwtPnBhZ2Uo
KS0+dXJsQXRQcm9jZXNzRXhpdCgpLnV0ZjgoKTsKKyAgICAgICAgV0FSTigiV0FSTklORzogVGhl
IHdlYiBwcm9jZXNzIGV4cGVyaWVuY2VkIGEgY3Jhc2ggb24gJyVzJy5cbiIsIHVybC5kYXRhKCkp
OworCisgICAgICAgIC8vIERpc3BsYXkgYW4gZXJyb3IgcGFnZQorICAgICAgICBld2tfdmlld19o
dG1sX3N0cmluZ19sb2FkKG1fdmlld0ltcGwtPnZpZXcoKSwgIlRoZSB3ZWIgcHJvY2VzcyBoYXMg
Y3Jhc2hlZC4iLCAwLCB1cmwuZGF0YSgpKTsKKyAgICB9Cit9CisKK3ZvaWQgUGFnZUNsaWVudElt
cGw6OmRpZFJlbGF1bmNoUHJvY2VzcygpCit7CisgICAgY29uc3QgY2hhciogdGhlbWVQYXRoID0g
bV92aWV3SW1wbC0+dGhlbWVQYXRoKCk7CisgICAgaWYgKHRoZW1lUGF0aCkKKyAgICAgICAgbV92
aWV3SW1wbC0+cGFnZSgpLT5zZXRUaGVtZVBhdGgodGhlbWVQYXRoKTsKK30KKwordm9pZCBQYWdl
Q2xpZW50SW1wbDo6cGFnZUNsb3NlZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBQYWdlQ2xpZW50SW1wbDo6dG9vbFRpcENoYW5nZWQoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBuZXdUb29sVGlwKQoreworICAgIGlmIChuZXdUb29sVGlwLmlzRW1wdHkoKSkKKyAg
ICAgICAgbV92aWV3SW1wbC0+c21hcnRDYWxsYmFjazxUb29sdGlwVGV4dFVuc2V0PigpLmNhbGwo
KTsKKyAgICBlbHNlCisgICAgICAgIG1fdmlld0ltcGwtPnNtYXJ0Q2FsbGJhY2s8VG9vbHRpcFRl
eHRTZXQ+KCkuY2FsbChuZXdUb29sVGlwKTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0
Q3Vyc29yKGNvbnN0IEN1cnNvciYgY3Vyc29yKQoreworICAgIG1fdmlld0ltcGwtPnNldEN1cnNv
cihjdXJzb3IpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRDdXJzb3JIaWRkZW5VbnRp
bE1vdXNlTW92ZXMoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFBh
Z2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6
Vmlld3BvcnRBdHRyaWJ1dGVzJiBhdHRyKQoreworI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JF
KQorICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1
dGVzKGF0dHIpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oYXR0cik7CisjZW5kaWYKK30KKwor
dm9pZCBQYWdlQ2xpZW50SW1wbDo6cmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdlYkVk
aXRDb21tYW5kUHJveHk+IGNvbW1hbmQsIFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyB1bmRvT3JS
ZWRvKQoreworICAgIG1fdW5kb0NvbnRyb2xsZXIucmVnaXN0ZXJFZGl0Q29tbWFuZChjb21tYW5k
LCB1bmRvT3JSZWRvKTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6Y2xlYXJBbGxFZGl0Q29t
bWFuZHMoKQoreworICAgIG1fdW5kb0NvbnRyb2xsZXIuY2xlYXJBbGxFZGl0Q29tbWFuZHMoKTsK
K30KKworYm9vbCBQYWdlQ2xpZW50SW1wbDo6Y2FuVW5kb1JlZG8oV2ViUGFnZVByb3h5OjpVbmRv
T3JSZWRvIHVuZG9PclJlZG8pCit7CisgICAgcmV0dXJuIG1fdW5kb0NvbnRyb2xsZXIuY2FuVW5k
b1JlZG8odW5kb09yUmVkbyk7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmV4ZWN1dGVVbmRv
UmVkbyhXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8gdW5kb09yUmVkbykKK3sKKyAgICBtX3VuZG9D
b250cm9sbGVyLmV4ZWN1dGVVbmRvUmVkbyh1bmRvT3JSZWRvKTsKK30KKworRmxvYXRSZWN0IFBh
Z2VDbGllbnRJbXBsOjpjb252ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBGbG9hdFJlY3QmIHZpZXdS
ZWN0KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHZpZXdSZWN0OworfQor
CitGbG9hdFJlY3QgUGFnZUNsaWVudEltcGw6OmNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBGbG9h
dFJlY3QmIHZpZXdSZWN0KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHZp
ZXdSZWN0OworfQorCitJbnRQb2ludCBQYWdlQ2xpZW50SW1wbDo6c2NyZWVuVG9XaW5kb3coY29u
c3QgSW50UG9pbnQmIHBvaW50KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IHBvaW50OworfQorCitJbnRSZWN0IFBhZ2VDbGllbnRJbXBsOjp3aW5kb3dUb1NjcmVlbihjb25z
dCBJbnRSZWN0JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBJbnRSZWN0
KCk7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmRvbmVXaXRoS2V5RXZlbnQoY29uc3QgTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
KworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkb25lV2l0
aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYsIGJvb2wgLyp3YXNFdmVudEhh
bmRsZWQqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorI2VuZGlmCisKK1Bhc3NSZWZQ
dHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVQb3B1cE1lbnVQcm94
eShXZWJQYWdlUHJveHkqIHBhZ2UpCit7CisgICAgcmV0dXJuIFdlYlBvcHVwTWVudVByb3h5RWZs
OjpjcmVhdGUobV92aWV3SW1wbCwgcGFnZSk7Cit9CisKK1Bhc3NSZWZQdHI8V2ViQ29udGV4dE1l
bnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVBy
b3h5KikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCisjaWYg
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCitQYXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5
PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JDaG9vc2VyUHJveHkoV2ViUGFnZVByb3h5Kiwg
Y29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorI2VuZGlmCisKK3ZvaWQgUGFnZUNs
aWVudEltcGw6OnNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNhdG9yPiwgYm9v
bCwgYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCisjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZW50ZXJBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0JikKK3sKKyAgICBtX3ZpZXdJbXBs
LT5lbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCk7Cit9CisKK3ZvaWQgUGFnZUNsaWVu
dEltcGw6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCit7CisgICAgbV92aWV3SW1w
bC0+ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCk7Cit9CisKK3ZvaWQgUGFnZUNsaWVu
dEltcGw6OnVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNv
bnRleHQmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisjZW5kaWYgLy8gVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VTY3Jv
bGxiYXJzRm9yTWFpbkZyYW1lKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKGJvb2wpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkRmlu
aXNoTG9hZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCBjb25z
dCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Citkb3VibGUgUGFnZUNsaWVudEltcGw6OmN1c3RvbVJlcHJlc2VudGF0aW9uWm9vbUZhY3Rvcigp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBQYWdl
Q2xpZW50SW1wbDo6c2V0Q3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yKGRvdWJsZSkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpmbGFzaEJh
Y2tpbmdTdG9yZVVwZGF0ZXMoY29uc3QgVmVjdG9yPEludFJlY3Q+JikKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpmaW5kU3RyaW5nSW5DdXN0b21S
ZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6Y291bnRTdHJp
bmdNYXRjaGVzSW5DdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9u
cywgdW5zaWduZWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBQYWdlQ2xp
ZW50SW1wbDo6dXBkYXRlVGV4dElucHV0U3RhdGUoKQoreworICAgIElucHV0TWV0aG9kQ29udGV4
dEVmbCogaW5wdXRNZXRob2RDb250ZXh0ID0gbV92aWV3SW1wbC0+aW5wdXRNZXRob2RDb250ZXh0
KCk7CisgICAgaWYgKGlucHV0TWV0aG9kQ29udGV4dCkKKyAgICAgICAgaW5wdXRNZXRob2RDb250
ZXh0LT51cGRhdGVUZXh0SW5wdXRTdGF0ZSgpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpo
YW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSogZG93bmxvYWQpCit7CisgICAgRXdr
X0NvbnRleHQqIGNvbnRleHQgPSBtX3ZpZXdJbXBsLT5ld2tDb250ZXh0KCk7CisgICAgY29udGV4
dC0+ZG93bmxvYWRNYW5hZ2VyKCktPnJlZ2lzdGVyRG93bmxvYWQoZG93bmxvYWQsIG1fdmlld0lt
cGwpOworfQorCisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCit2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCit7Cisg
ICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5wYWdlRGlkUmVxdWVzdFNjcm9sbChwb3NpdGlv
bik7Cit9CisjZW5kaWYKKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlQ29udGVudHNT
aXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpCit7CisjaWYgVVNFKFRJTEVEX0JBQ0tJ
TkdfU1RPUkUpCisgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRDaGFuZ2VDb250ZW50
c1NpemUoc2l6ZSk7CisjZWxzZQorICAgIG1fdmlld0ltcGwtPmluZm9ybUNvbnRlbnRzU2l6ZUNo
YW5nZShzaXplKTsKKyNlbmRpZgorfQorCisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCit2
b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRSZW5kZXJGcmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBjb250ZW50c1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KQorewor
ICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkUmVuZGVyRnJhbWUoY29udGVudHNTaXpl
LCBjb3ZlcmVkUmVjdCk7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnBhZ2VUcmFuc2l0aW9u
Vmlld3BvcnRSZWFkeSgpCit7CisgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5wYWdlVHJh
bnNpdGlvblZpZXdwb3J0UmVhZHkoKTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEJhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEJh
c2UuY3BwCShyZXZpc2lvbiAxMzM0MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1BhZ2VDbGllbnRCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICov
CiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbC5oIgorI2lu
Y2x1ZGUgIlBhZ2VDbGllbnRCYXNlLmgiCiAKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5SW1w
bC5oIgogI2luY2x1ZGUgIkV3a1ZpZXdJbXBsLmgiCkBAIC00NCw3OCArNDQsNzQgQEAKICNpbmNs
dWRlICJld2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3LmgiCiAKLSNpZiBVU0UoVElM
RURfQkFDS0lOR19TVE9SRSkKLSNpbmNsdWRlICJQYWdlVmlld3BvcnRDb250cm9sbGVyLmgiCi0j
ZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgRXdrVmll
d0NhbGxiYWNrczsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhZ2VDbGllbnRJbXBsOjpQYWdl
Q2xpZW50SW1wbChFd2tWaWV3SW1wbCogdmlld0ltcGwpCitQYWdlQ2xpZW50QmFzZTo6UGFnZUNs
aWVudEJhc2UoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQogICAgIDogbV92aWV3SW1wbCh2aWV3SW1w
bCkKIHsKIH0KIAotUGFnZUNsaWVudEltcGw6On5QYWdlQ2xpZW50SW1wbCgpCitQYWdlQ2xpZW50
QmFzZTo6flBhZ2VDbGllbnRCYXNlKCkKIHsKIH0KIAotRXdrVmlld0ltcGwqIFBhZ2VDbGllbnRJ
bXBsOjp2aWV3SW1wbCgpIGNvbnN0CitFd2tWaWV3SW1wbCogUGFnZUNsaWVudEJhc2U6OnZpZXdJ
bXBsKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV92aWV3SW1wbDsKIH0KIAogLy8gUGFnZUNsaWVu
dAotUGFzc093blB0cjxEcmF3aW5nQXJlYVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJh
d2luZ0FyZWFQcm94eSgpCitQYXNzT3duUHRyPERyYXdpbmdBcmVhUHJveHk+IFBhZ2VDbGllbnRC
YXNlOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KCkKIHsKICAgICByZXR1cm4gRHJhd2luZ0FyZWFQ
cm94eUltcGw6OmNyZWF0ZShtX3ZpZXdJbXBsLT5wYWdlKCkpOwogfQogCi12b2lkIFBhZ2VDbGll
bnRJbXBsOjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3Qp
Cit2b2lkIFBhZ2VDbGllbnRCYXNlOjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIHJlY3QpCiB7CiAgICAgbV92aWV3SW1wbC0+dXBkYXRlKHJlY3QpOwogfQogCi12
b2lkIFBhZ2VDbGllbnRJbXBsOjpkaXNwbGF5VmlldygpCit2b2lkIFBhZ2VDbGllbnRCYXNlOjpk
aXNwbGF5VmlldygpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6c2Nyb2xsVmlldyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJikKK3ZvaWQgUGFnZUNsaWVudEJhc2U6OnNjcm9sbFZpZXco
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYpCiB7CiAgICAgc2V0Vmlld05lZWRzRGlzcGxheShzY3JvbGxSZWN0KTsKIH0KIAotV2ViQ29y
ZTo6SW50U2l6ZSBQYWdlQ2xpZW50SW1wbDo6dmlld1NpemUoKQorV2ViQ29yZTo6SW50U2l6ZSBQ
YWdlQ2xpZW50QmFzZTo6dmlld1NpemUoKQogewogICAgIHJldHVybiBtX3ZpZXdJbXBsLT5zaXpl
KCk7CiB9CiAKLWJvb2wgUGFnZUNsaWVudEltcGw6OmlzVmlld1dpbmRvd0FjdGl2ZSgpCitib29s
IFBhZ2VDbGllbnRCYXNlOjppc1ZpZXdXaW5kb3dBY3RpdmUoKQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUGFnZUNsaWVudEltcGw6OmlzVmll
d0ZvY3VzZWQoKQorYm9vbCBQYWdlQ2xpZW50QmFzZTo6aXNWaWV3Rm9jdXNlZCgpCiB7CiAgICAg
cmV0dXJuIG1fdmlld0ltcGwtPmlzRm9jdXNlZCgpOwogfQogCi1ib29sIFBhZ2VDbGllbnRJbXBs
Ojppc1ZpZXdWaXNpYmxlKCkKK2Jvb2wgUGFnZUNsaWVudEJhc2U6OmlzVmlld1Zpc2libGUoKQog
ewogICAgIHJldHVybiBtX3ZpZXdJbXBsLT5pc1Zpc2libGUoKTsKIH0KIAotYm9vbCBQYWdlQ2xp
ZW50SW1wbDo6aXNWaWV3SW5XaW5kb3coKQorYm9vbCBQYWdlQ2xpZW50QmFzZTo6aXNWaWV3SW5X
aW5kb3coKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXZvaWQgUGFnZUNsaWVudEltcGw6OnByb2Nlc3NEaWRDcmFzaCgpCit2b2lkIFBhZ2VDbGllbnRC
YXNlOjpwcm9jZXNzRGlkQ3Jhc2goKQogewogICAgIC8vIENoZWNrIGlmIGxvYWRpbmcgd2FzIG9u
Z29pbmcsIHdoZW4gd2ViIHByb2Nlc3MgY3Jhc2hlZC4KICAgICBkb3VibGUgbG9hZFByb2dyZXNz
ID0gZXdrX3ZpZXdfbG9hZF9wcm9ncmVzc19nZXQobV92aWV3SW1wbC0+dmlldygpKTsKQEAgLTEz
NiwxOSArMTMyLDE5IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnByb2Nlc3NEaWRDcmFzaCgpCiAg
ICAgfQogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRSZWxhdW5jaFByb2Nlc3MoKQordm9p
ZCBQYWdlQ2xpZW50QmFzZTo6ZGlkUmVsYXVuY2hQcm9jZXNzKCkKIHsKICAgICBjb25zdCBjaGFy
KiB0aGVtZVBhdGggPSBtX3ZpZXdJbXBsLT50aGVtZVBhdGgoKTsKICAgICBpZiAodGhlbWVQYXRo
KQogICAgICAgICBtX3ZpZXdJbXBsLT5wYWdlKCktPnNldFRoZW1lUGF0aCh0aGVtZVBhdGgpOwog
fQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpwYWdlQ2xvc2VkKCkKK3ZvaWQgUGFnZUNsaWVudEJh
c2U6OnBhZ2VDbG9zZWQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUGFn
ZUNsaWVudEltcGw6OnRvb2xUaXBDaGFuZ2VkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYg
bmV3VG9vbFRpcCkKK3ZvaWQgUGFnZUNsaWVudEJhc2U6OnRvb2xUaXBDaGFuZ2VkKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYgbmV3VG9vbFRpcCkKIHsKICAgICBpZiAobmV3VG9vbFRpcC5p
c0VtcHR5KCkpCiAgICAgICAgIG1fdmlld0ltcGwtPnNtYXJ0Q2FsbGJhY2s8VG9vbHRpcFRleHRV
bnNldD4oKS5jYWxsKCk7CkBAIC0xNTYsMjAyICsxNTIsMTY1IEBAIHZvaWQgUGFnZUNsaWVudElt
cGw6OnRvb2xUaXBDaGFuZ2VkKGNvbnMKICAgICAgICAgbV92aWV3SW1wbC0+c21hcnRDYWxsYmFj
azxUb29sdGlwVGV4dFNldD4oKS5jYWxsKG5ld1Rvb2xUaXApOwogfQogCi12b2lkIFBhZ2VDbGll
bnRJbXBsOjpzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJiBjdXJzb3IpCit2b2lkIFBhZ2VDbGllbnRC
YXNlOjpzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJiBjdXJzb3IpCiB7CiAgICAgbV92aWV3SW1wbC0+
c2V0Q3Vyc29yKGN1cnNvcik7CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OnNldEN1cnNvckhp
ZGRlblVudGlsTW91c2VNb3Zlcyhib29sKQordm9pZCBQYWdlQ2xpZW50QmFzZTo6c2V0Q3Vyc29y
SGlkZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0
IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYgYXR0cikKLXsKLSNpZiBVU0UoVElMRURfQkFD
S0lOR19TVE9SRSkKLSAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPmRpZENoYW5nZVZpZXdw
b3J0QXR0cmlidXRlcyhhdHRyKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGF0dHIpOwotI2Vu
ZGlmCi19Ci0KLXZvaWQgUGFnZUNsaWVudEltcGw6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1Jl
ZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiBjb21tYW5kLCBXZWJQYWdlUHJveHk6OlVuZG9PclJl
ZG8gdW5kb09yUmVkbykKK3ZvaWQgUGFnZUNsaWVudEJhc2U6OnJlZ2lzdGVyRWRpdENvbW1hbmQo
UGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiBjb21tYW5kLCBXZWJQYWdlUHJveHk6OlVu
ZG9PclJlZG8gdW5kb09yUmVkbykKIHsKICAgICBtX3VuZG9Db250cm9sbGVyLnJlZ2lzdGVyRWRp
dENvbW1hbmQoY29tbWFuZCwgdW5kb09yUmVkbyk7CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6
OmNsZWFyQWxsRWRpdENvbW1hbmRzKCkKK3ZvaWQgUGFnZUNsaWVudEJhc2U6OmNsZWFyQWxsRWRp
dENvbW1hbmRzKCkKIHsKICAgICBtX3VuZG9Db250cm9sbGVyLmNsZWFyQWxsRWRpdENvbW1hbmRz
KCk7CiB9CiAKLWJvb2wgUGFnZUNsaWVudEltcGw6OmNhblVuZG9SZWRvKFdlYlBhZ2VQcm94eTo6
VW5kb09yUmVkbyB1bmRvT3JSZWRvKQorYm9vbCBQYWdlQ2xpZW50QmFzZTo6Y2FuVW5kb1JlZG8o
V2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvIHVuZG9PclJlZG8pCiB7CiAgICAgcmV0dXJuIG1fdW5k
b0NvbnRyb2xsZXIuY2FuVW5kb1JlZG8odW5kb09yUmVkbyk7CiB9CiAKLXZvaWQgUGFnZUNsaWVu
dEltcGw6OmV4ZWN1dGVVbmRvUmVkbyhXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8gdW5kb09yUmVk
bykKK3ZvaWQgUGFnZUNsaWVudEJhc2U6OmV4ZWN1dGVVbmRvUmVkbyhXZWJQYWdlUHJveHk6OlVu
ZG9PclJlZG8gdW5kb09yUmVkbykKIHsKICAgICBtX3VuZG9Db250cm9sbGVyLmV4ZWN1dGVVbmRv
UmVkbyh1bmRvT3JSZWRvKTsKIH0KIAotRmxvYXRSZWN0IFBhZ2VDbGllbnRJbXBsOjpjb252ZXJ0
VG9EZXZpY2VTcGFjZShjb25zdCBGbG9hdFJlY3QmIHZpZXdSZWN0KQorRmxvYXRSZWN0IFBhZ2VD
bGllbnRCYXNlOjpjb252ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBGbG9hdFJlY3QmIHZpZXdSZWN0
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIHZpZXdSZWN0OwogfQogCi1G
bG9hdFJlY3QgUGFnZUNsaWVudEltcGw6OmNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBGbG9hdFJl
Y3QmIHZpZXdSZWN0KQorRmxvYXRSZWN0IFBhZ2VDbGllbnRCYXNlOjpjb252ZXJ0VG9Vc2VyU3Bh
Y2UoY29uc3QgRmxvYXRSZWN0JiB2aWV3UmVjdCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
ICAgIHJldHVybiB2aWV3UmVjdDsKIH0KIAotSW50UG9pbnQgUGFnZUNsaWVudEltcGw6OnNjcmVl
blRvV2luZG93KGNvbnN0IEludFBvaW50JiBwb2ludCkKK0ludFBvaW50IFBhZ2VDbGllbnRCYXNl
OjpzY3JlZW5Ub1dpbmRvdyhjb25zdCBJbnRQb2ludCYgcG9pbnQpCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKICAgICByZXR1cm4gcG9pbnQ7CiB9CiAKLUludFJlY3QgUGFnZUNsaWVudEltcGw6
OndpbmRvd1RvU2NyZWVuKGNvbnN0IEludFJlY3QmKQorSW50UmVjdCBQYWdlQ2xpZW50QmFzZTo6
d2luZG93VG9TY3JlZW4oY29uc3QgSW50UmVjdCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
ICAgICByZXR1cm4gSW50UmVjdCgpOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpkb25lV2l0
aEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sKQordm9pZCBQYWdl
Q2xpZW50QmFzZTo6ZG9uZVdpdGhLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50
JiwgYm9vbCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCiAjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKLXZvaWQgUGFnZUNsaWVudEltcGw6OmRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBO
YXRpdmVXZWJUb3VjaEV2ZW50JiwgYm9vbCAvKndhc0V2ZW50SGFuZGxlZCovKQordm9pZCBQYWdl
Q2xpZW50QmFzZTo6ZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQm
LCBib29sIC8qd2FzRXZlbnRIYW5kbGVkKi8pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
ICNlbmRpZgogCi1QYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6
Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KiBwYWdlKQorUGFzc1JlZlB0cjxXZWJQ
b3B1cE1lbnVQcm94eT4gUGFnZUNsaWVudEJhc2U6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBh
Z2VQcm94eSogcGFnZSkKIHsKICAgICByZXR1cm4gV2ViUG9wdXBNZW51UHJveHlFZmw6OmNyZWF0
ZShtX3ZpZXdJbXBsLCBwYWdlKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5
PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQor
UGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50QmFzZTo6Y3JlYXRlQ29u
dGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAg
ICAgcmV0dXJuIDA7CiB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLVBhc3NSZWZQ
dHI8V2ViQ29sb3JDaG9vc2VyUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvckNob29z
ZXJQcm94eShXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKQorUGFzc1JlZlB0cjxXZWJDb2xvckNob29zZXJQcm94eT4gUGFnZUNsaWVu
dEJhc2U6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNv
cmU6OkNvbG9yJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKICAgICByZXR1cm4gMDsKIH0KICNlbmRpZgogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpz
ZXRGaW5kSW5kaWNhdG9yKFBhc3NSZWZQdHI8RmluZEluZGljYXRvcj4sIGJvb2wsIGJvb2wpCit2
b2lkIFBhZ2VDbGllbnRCYXNlOjpzZXRGaW5kSW5kaWNhdG9yKFBhc3NSZWZQdHI8RmluZEluZGlj
YXRvcj4sIGJvb2wsIGJvb2wpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLXZvaWQgUGFnZUNsaWVudEltcGw6OmVudGVyQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpCit2b2lkIFBh
Z2VDbGllbnRCYXNlOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVy
VHJlZUNvbnRleHQmKQogewogICAgIG1fdmlld0ltcGwtPmVudGVyQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ01vZGUoKTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZXhpdEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlKCkKK3ZvaWQgUGFnZUNsaWVudEJhc2U6OmV4aXRBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZSgpCiB7CiAgICAgbV92aWV3SW1wbC0+ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKCk7CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OnVwZGF0ZUFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKQordm9pZCBQYWdlQ2xpZW50QmFz
ZTo6dXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4
dCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENoYW5nZVNjcm9sbGJh
cnNGb3JNYWluRnJhbWUoKSBjb25zdAordm9pZCBQYWdlQ2xpZW50QmFzZTo6ZGlkQ2hhbmdlU2Ny
b2xsYmFyc0Zvck1haW5GcmFtZSgpIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZShib29sKQor
dm9pZCBQYWdlQ2xpZW50QmFzZTo6ZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZShib29sKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OmRpZEZpbmlz
aExvYWRpbmdEYXRhRm9yQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiwgY29uc3Qg
Q29yZUlQQzo6RGF0YVJlZmVyZW5jZSYpCit2b2lkIFBhZ2VDbGllbnRCYXNlOjpkaWRGaW5pc2hM
b2FkaW5nRGF0YUZvckN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYsIGNvbnN0IENv
cmVJUEM6OkRhdGFSZWZlcmVuY2UmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLWRv
dWJsZSBQYWdlQ2xpZW50SW1wbDo6Y3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yKCkKK2Rv
dWJsZSBQYWdlQ2xpZW50QmFzZTo6Y3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yKCkKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAwOwogfQogCi12b2lkIFBhZ2VDbGll
bnRJbXBsOjpzZXRDdXN0b21SZXByZXNlbnRhdGlvblpvb21GYWN0b3IoZG91YmxlKQordm9pZCBQ
YWdlQ2xpZW50QmFzZTo6c2V0Q3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yKGRvdWJsZSkK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpmbGFz
aEJhY2tpbmdTdG9yZVVwZGF0ZXMoY29uc3QgVmVjdG9yPEludFJlY3Q+JikKK3ZvaWQgUGFnZUNs
aWVudEJhc2U6OmZsYXNoQmFja2luZ1N0b3JlVXBkYXRlcyhjb25zdCBWZWN0b3I8SW50UmVjdD4m
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OmZp
bmRTdHJpbmdJbkN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25z
LCB1bnNpZ25lZCkKK3ZvaWQgUGFnZUNsaWVudEJhc2U6OmZpbmRTdHJpbmdJbkN1c3RvbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCkKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpjb3VudFN0cmluZ01h
dGNoZXNJbkN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1
bnNpZ25lZCkKK3ZvaWQgUGFnZUNsaWVudEJhc2U6OmNvdW50U3RyaW5nTWF0Y2hlc0luQ3VzdG9t
UmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OnVwZGF0ZVRl
eHRJbnB1dFN0YXRlKCkKK3ZvaWQgUGFnZUNsaWVudEJhc2U6OnVwZGF0ZVRleHRJbnB1dFN0YXRl
KCkKIHsKICAgICBJbnB1dE1ldGhvZENvbnRleHRFZmwqIGlucHV0TWV0aG9kQ29udGV4dCA9IG1f
dmlld0ltcGwtPmlucHV0TWV0aG9kQ29udGV4dCgpOwogICAgIGlmIChpbnB1dE1ldGhvZENvbnRl
eHQpCiAgICAgICAgIGlucHV0TWV0aG9kQ29udGV4dC0+dXBkYXRlVGV4dElucHV0U3RhdGUoKTsK
IH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6aGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2Fk
UHJveHkqIGRvd25sb2FkKQordm9pZCBQYWdlQ2xpZW50QmFzZTo6aGFuZGxlRG93bmxvYWRSZXF1
ZXN0KERvd25sb2FkUHJveHkqIGRvd25sb2FkKQogewogICAgIEV3a19Db250ZXh0KiBjb250ZXh0
ID0gbV92aWV3SW1wbC0+ZXdrQ29udGV4dCgpOwogICAgIGNvbnRleHQtPmRvd25sb2FkTWFuYWdl
cigpLT5yZWdpc3RlckRvd25sb2FkKGRvd25sb2FkLCBtX3ZpZXdJbXBsKTsKIH0KIAotI2lmIFVT
RShUSUxFRF9CQUNLSU5HX1NUT1JFKQotdm9pZCBQYWdlQ2xpZW50SW1wbDo6cGFnZURpZFJlcXVl
c3RTY3JvbGwoY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uKQotewotICAgIG1fcGFnZVZpZXdwb3J0
Q29udHJvbGxlci0+cGFnZURpZFJlcXVlc3RTY3JvbGwocG9zaXRpb24pOwotfQotI2VuZGlmCi0K
LXZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBzaXplKQotewotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAgIG1f
cGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlQ29udGVudHNTaXplKHNpemUpOwotI2Vs
c2UKLSAgICBtX3ZpZXdJbXBsLT5pbmZvcm1Db250ZW50c1NpemVDaGFuZ2Uoc2l6ZSk7Ci0jZW5k
aWYKLX0KLQotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotdm9pZCBQYWdlQ2xpZW50SW1w
bDo6ZGlkUmVuZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjb3ZlcmVkUmVjdCkKLXsKLSAgICBtX3BhZ2VWaWV3cG9y
dENvbnRyb2xsZXItPmRpZFJlbmRlckZyYW1lKGNvbnRlbnRzU2l6ZSwgY292ZXJlZFJlY3QpOwot
fQotCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKQot
ewotICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJl
YWR5KCk7Ci19Ci0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRCYXNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5oCShyZXZpc2lvbiAxMzM0
MjQpCShmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGwuaDox
MzM0MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRCYXNlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBhZ2VDbGllbnRJbXBs
X2gKKyNkZWZpbmUgUGFnZUNsaWVudEltcGxfaAorCisjaW5jbHVkZSAiRGVmYXVsdFVuZG9Db250
cm9sbGVyLmgiCisjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgorI2luY2x1ZGUgPEV2YXMuaD4KKwor
Y2xhc3MgRXdrVmlld0ltcGw7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQYWdlVmll
d3BvcnRDb250cm9sbGVyOworCitjbGFzcyBQYWdlQ2xpZW50SW1wbCA6IHB1YmxpYyBQYWdlQ2xp
ZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxQYWdlQ2xpZW50SW1wbD4gY3Jl
YXRlKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgUGFnZUNsaWVudEltcGwodmlld0ltcGwpKTsKKyAgICB9CisgICAgflBhZ2VDbGllbnRJ
bXBsKCk7CisKKyAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwoKSBjb25zdDsKKyNpZiBVU0UoVElM
RURfQkFDS0lOR19TVE9SRSkKKyAgICB2b2lkIHNldFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIoUGFn
ZVZpZXdwb3J0Q29udHJvbGxlciogY29udHJvbGxlcikgeyBtX3BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXIgPSBjb250cm9sbGVyOyB9CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBQYWdl
Q2xpZW50SW1wbChFd2tWaWV3SW1wbCopOworCisgICAgLy8gUGFnZUNsaWVudAorICAgIHZpcnR1
YWwgUGFzc093blB0cjxEcmF3aW5nQXJlYVByb3h5PiBjcmVhdGVEcmF3aW5nQXJlYVByb3h5KCk7
CisgICAgdmlydHVhbCB2b2lkIHNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwbGF5VmlldygpOworICAgIHZpcnR1YWwgdm9p
ZCBzY3JvbGxWaWV3KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJik7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCk7CisgICAgdmly
dHVhbCBib29sIGlzVmlld1dpbmRvd0FjdGl2ZSgpOworICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdG
b2N1c2VkKCk7CisgICAgdmlydHVhbCBib29sIGlzVmlld1Zpc2libGUoKTsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNWaWV3SW5XaW5kb3coKTsKKworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ3Jh
c2goKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVsYXVuY2hQcm9jZXNzKCk7CisgICAgdmlydHVh
bCB2b2lkIHBhZ2VDbG9zZWQoKTsKKworICAgIHZpcnR1YWwgdm9pZCB0b29sVGlwQ2hhbmdlZChj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJz
b3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJik7CisgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvckhp
ZGRlblVudGlsTW91c2VNb3Zlcyhib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmll
d3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpOworCisg
ICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0cjxXZWJFZGl0Q29t
bWFuZFByb3h5PiwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKTsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2xlYXJBbGxFZGl0Q29tbWFuZHMoKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuVW5kb1JlZG8oV2Vi
UGFnZVByb3h5OjpVbmRvT3JSZWRvKTsKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVVuZG9SZWRv
KFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJl
Y3QgY29udmVydFRvRGV2aWNlU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CisgICAg
dmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvVXNlclNwYWNlKGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuVG9X
aW5kb3coY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Oklu
dFJlY3Qgd2luZG93VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworCisgICAgdm9p
ZCB1cGRhdGVUZXh0SW5wdXRTdGF0ZSgpOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVEb3dubG9h
ZFJlcXVlc3QoRG93bmxvYWRQcm94eSopOworCisgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoS2V5
RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wpOworI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCisgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBO
YXRpdmVXZWJUb3VjaEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpOworI2VuZGlmCisKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVBy
b3h5KFdlYlBhZ2VQcm94eSopOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVu
dVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopOworCisjaWYgRU5B
QkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbG9yQ2hv
b3NlclByb3h5PiBjcmVhdGVDb2xvckNob29zZXJQcm94eShXZWJQYWdlUHJveHkqLCBjb25zdCBX
ZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7Cisj
ZW5kaWYKKworICAgIHZpcnR1YWwgdm9pZCBzZXRGaW5kSW5kaWNhdG9yKFBhc3NSZWZQdHI8Rmlu
ZEluZGljYXRvcj4sIGJvb2wsIGJvb2wpOworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKKyAgICB2aXJ0dWFsIHZvaWQgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25z
dCBMYXllclRyZWVDb250ZXh0Jik7CisgICAgdmlydHVhbCB2b2lkIGV4aXRBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZSgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jik7CisjZW5kaWYKKworICAgIHZpcnR1
YWwgdm9pZCBkaWRDaGFuZ2VTY3JvbGxiYXJzRm9yTWFpbkZyYW1lKCkgY29uc3Q7CisKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZShib29sKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBT
dHJpbmcmLCBjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdmlydHVhbCBkb3Vi
bGUgY3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yKCk7CisgICAgdmlydHVhbCB2b2lkIHNl
dEN1c3RvbVJlcHJlc2VudGF0aW9uWm9vbUZhY3Rvcihkb3VibGUpOworCisgICAgdmlydHVhbCB2
b2lkIGZsYXNoQmFja2luZ1N0b3JlVXBkYXRlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVj
dD4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluZFN0cmluZ0luQ3VzdG9tUmVwcmVzZW50YXRpb24o
Y29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkKTsKKyAgICB2aXJ0dWFsIHZvaWQg
Y291bnRTdHJpbmdNYXRjaGVzSW5DdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCBG
aW5kT3B0aW9ucywgdW5zaWduZWQpOworCisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisg
ICAgdmlydHVhbCB2b2lkIHBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBv
aW50Jik7CisjZW5kaWYKKworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1NpemUo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOworCisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUp
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlbmRlckZyYW1lKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IGNvbnRlbnRzU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY292ZXJlZFJlY3QpOworICAg
IHZpcnR1YWwgdm9pZCBwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKTsKKyNlbmRpZgorCitw
cml2YXRlOgorICAgIEV3a1ZpZXdJbXBsKiBtX3ZpZXdJbXBsOworICAgIERlZmF1bHRVbmRvQ29u
dHJvbGxlciBtX3VuZG9Db250cm9sbGVyOworI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQor
ICAgIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIqIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcjsKKyNl
bmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQYWdlQ2xpZW50
SW1wbF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRCYXNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50
QmFzZS5oCShyZXZpc2lvbiAxMzM0MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1BhZ2VDbGllbnRCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDggQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFBhZ2VDbGllbnRJ
bXBsX2gKLSNkZWZpbmUgUGFnZUNsaWVudEltcGxfaAorI2lmbmRlZiBQYWdlQ2xpZW50QmFzZV9o
CisjZGVmaW5lIFBhZ2VDbGllbnRCYXNlX2gKIAogI2luY2x1ZGUgIkRlZmF1bHRVbmRvQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIKQEAgLTM0LDIzICszNCwxOSBAQCBjbGFz
cyBFd2tWaWV3SW1wbDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFBhZ2VWaWV3cG9y
dENvbnRyb2xsZXI7Ci0KLWNsYXNzIFBhZ2VDbGllbnRJbXBsIDogcHVibGljIFBhZ2VDbGllbnQg
eworY2xhc3MgUGFnZUNsaWVudEJhc2UgOiBwdWJsaWMgUGFnZUNsaWVudCB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NPd25QdHI8UGFnZUNsaWVudEltcGw+IGNyZWF0ZShFd2tWaWV3SW1wbCog
dmlld0ltcGwpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBhZ2VDbGllbnRJ
bXBsKHZpZXdJbXBsKSk7Ci0gICAgfQotICAgIH5QYWdlQ2xpZW50SW1wbCgpOworICAgIHZpcnR1
YWwgflBhZ2VDbGllbnRCYXNlKCk7CisKKyAgICAvLyBDYWxsZWQgZnJvbSB0aGUgdmlldworICAg
IHZpcnR1YWwgdm9pZCBkaWRDb21taXRMb2FkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVWaWV3cG9ydFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSA9IDA7
CiAKICAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwoKSBjb25zdDsKLSNpZiBVU0UoVElMRURfQkFD
S0lOR19TVE9SRSkKLSAgICB2b2lkIHNldFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIoUGFnZVZpZXdw
b3J0Q29udHJvbGxlciogY29udHJvbGxlcikgeyBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIgPSBj
b250cm9sbGVyOyB9Ci0jZW5kaWYKIAotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBQYWdlQ2xpZW50
SW1wbChFd2tWaWV3SW1wbCopOworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IFBhZ2VDbGllbnRC
YXNlKEV3a1ZpZXdJbXBsKik7CiAKICAgICAvLyBQYWdlQ2xpZW50CiAgICAgdmlydHVhbCBQYXNz
T3duUHRyPERyYXdpbmdBcmVhUHJveHk+IGNyZWF0ZURyYXdpbmdBcmVhUHJveHkoKTsKQEAgLTcx
LDcgKzY3LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJzb3IoY29uc3Qg
V2ViQ29yZTo6Q3Vyc29yJik7CiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvckhpZGRlblVudGls
TW91c2VNb3Zlcyhib29sKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9w
ZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpOworICAgIHZpcnR1YWwg
dm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRB
dHRyaWJ1dGVzJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRWRpdENvbW1hbmQo
UGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRv
KTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJBbGxFZGl0Q29tbWFuZHMoKTsKQEAgLTExNiwyNCAr
MTEyLDE2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNvdW50U3RyaW5nTWF0Y2hlc0lu
Q3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2lnbmVk
KTsKIAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAgIHZpcnR1YWwgdm9pZCBwYWdl
RGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwotI2VuZGlmCi0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmKTsKLQotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAgIHZpcnR1YWwgdm9pZCBk
aWRSZW5kZXJGcmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFnZVRy
YW5zaXRpb25WaWV3cG9ydFJlYWR5KCk7CisgICAgdmlydHVhbCB2b2lkIHBhZ2VEaWRSZXF1ZXN0
U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBk
aWRSZW5kZXJGcmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBh
Z2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpID0gMDsKICNlbmRpZgogCi1wcml2YXRlOgorcHJv
dGVjdGVkOgogICAgIEV3a1ZpZXdJbXBsKiBtX3ZpZXdJbXBsOwogICAgIERlZmF1bHRVbmRvQ29u
dHJvbGxlciBtX3VuZG9Db250cm9sbGVyOwotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQot
ICAgIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIqIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcjsKLSNl
bmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBQYWdlQ2xpZW50
SW1wbF9oCisjZW5kaWYgLy8gUGFnZUNsaWVudEJhc2VfaApJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50RGVmYXVsdEltcGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudERlZmF1bHRJbXBsLmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudERlZmF1
bHRJbXBsLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICAgQ29weXJpZ2h0IChDKSAyMDEyIElu
dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGFnZUNsaWVudERlZmF1bHRJbXBsLmgiCisKKyNpbmNs
dWRlICJFd2tWaWV3SW1wbC5oIgorCisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisjaW5j
bHVkZSAiUGFnZVZpZXdwb3J0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlBhZ2VWaWV3cG9ydENv
bnRyb2xsZXJDbGllbnRFZmwuaCIKKyNlbmRpZgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
K3VzaW5nIG5hbWVzcGFjZSBFd2tWaWV3Q2FsbGJhY2tzOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworUGFnZUNsaWVudERlZmF1bHRJbXBsOjpQYWdlQ2xpZW50RGVmYXVsdEltcGwoRXdrVmlld0lt
cGwqIHZpZXdJbXBsKQorICAgIDogUGFnZUNsaWVudEJhc2Uodmlld0ltcGwpCit7Cit9CisKK3Zv
aWQgUGFnZUNsaWVudERlZmF1bHRJbXBsOjpkaWRDb21taXRMb2FkKCkKK3sKKyNpZiBVU0UoVElM
RURfQkFDS0lOR19TVE9SRSkKKyAgICBBU1NFUlQobV9wYWdlVmlld3BvcnRDb250cm9sbGVyKTsK
KyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPmRpZENvbW1pdExvYWQoKTsKKyNlbmRpZgor
fQorCit2b2lkIFBhZ2VDbGllbnREZWZhdWx0SW1wbDo6dXBkYXRlVmlld3BvcnRTaXplKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIHNpemUpCit7CisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUp
CisgICAgaWYgKCFtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQpIHsKKyAgICAgICAgbV9w
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50ID0gUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVu
dEVmbDo6Y3JlYXRlKG1fdmlld0ltcGwpOworICAgICAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXIgPSBhZG9wdFB0cihuZXcgUGFnZVZpZXdwb3J0Q29udHJvbGxlcihtX3ZpZXdJbXBsLT5wYWdl
KCksIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC5nZXQoKSkpOworICAgIH0KKyAgICBt
X3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQtPnVwZGF0ZVZpZXdwb3J0U2l6ZShzaXplKTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNpemUpOworI2VuZGlmCit9CisKK3ZvaWQgUGFnZUNs
aWVudERlZmF1bHRJbXBsOjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29y
ZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJiBhdHRyKQoreworI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NU
T1JFKQorICAgIEFTU0VSVChtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIpOworICAgIG1fcGFnZVZp
ZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKGF0dHIpOworI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0oYXR0cik7CisjZW5kaWYKK30KKwordm9pZCBQYWdlQ2xpZW50
RGVmYXVsdEltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBzaXplKQoreworI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorICAgIEFTU0VSVChtX3Bh
Z2VWaWV3cG9ydENvbnRyb2xsZXIpOworICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlk
Q2hhbmdlQ29udGVudHNTaXplKHNpemUpOworI2Vsc2UKKyAgICBtX3ZpZXdJbXBsLT5pbmZvcm1D
b250ZW50c1NpemVDaGFuZ2Uoc2l6ZSk7CisjZW5kaWYKK30KKworI2lmIFVTRShUSUxFRF9CQUNL
SU5HX1NUT1JFKQordm9pZCBQYWdlQ2xpZW50RGVmYXVsdEltcGw6OnBhZ2VEaWRSZXF1ZXN0U2Ny
b2xsKGNvbnN0IEludFBvaW50JiBwb3NpdGlvbikKK3sKKyAgICBBU1NFUlQobV9wYWdlVmlld3Bv
cnRDb250cm9sbGVyKTsKKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPnBhZ2VEaWRSZXF1
ZXN0U2Nyb2xsKHBvc2l0aW9uKTsKK30KKwordm9pZCBQYWdlQ2xpZW50RGVmYXVsdEltcGw6OmRp
ZFJlbmRlckZyYW1lKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgY292ZXJlZFJlY3QpCit7CisgICAgQVNTRVJUKG1fcGFnZVZpZXdw
b3J0Q29udHJvbGxlcik7CisgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRSZW5kZXJG
cmFtZShjb250ZW50c1NpemUsIGNvdmVyZWRSZWN0KTsKK30KKwordm9pZCBQYWdlQ2xpZW50RGVm
YXVsdEltcGw6OnBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpCit7CisgICAgQVNTRVJUKG1f
cGFnZVZpZXdwb3J0Q29udHJvbGxlcik7CisgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5w
YWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudERl
ZmF1bHRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Q
YWdlQ2xpZW50RGVmYXVsdEltcGwuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvUGFnZUNsaWVudERlZmF1bHRJbXBsLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcwor
ICAgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBhZ2VDbGllbnREZWZhdWx0SW1wbF9oCisjZGVmaW5l
IFBhZ2VDbGllbnREZWZhdWx0SW1wbF9oCisKKyNpbmNsdWRlICJQYWdlQ2xpZW50QmFzZS5oIgor
I2luY2x1ZGUgIlBhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJQYWdlVmlld3Bv
cnRDb250cm9sbGVyQ2xpZW50RWZsLmgiCisKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFBhZ2VDbGllbnREZWZhdWx0SW1wbCA6IHB1YmxpYyBQYWdlQ2xpZW50QmFzZSB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NPd25QdHI8UGFnZUNsaWVudEJhc2U+IGNyZWF0ZShFd2tWaWV3SW1w
bCogdmlld0ltcGwpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBhZ2VDbGll
bnREZWZhdWx0SW1wbCh2aWV3SW1wbCkpOworICAgIH0KKworICAgIHZpcnR1YWwgflBhZ2VDbGll
bnREZWZhdWx0SW1wbCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdExvYWQoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVmlld3BvcnRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBQYWdlQ2xpZW50RGVmYXVsdEltcGwoRXdr
Vmlld0ltcGwqKTsKKworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRp
ZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJik7CisgICAgdmlydHVhbCB2b2lk
IGRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CisjaWYgVVNF
KFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisgICAgdmlydHVhbCB2b2lkIHBhZ2VEaWRSZXF1ZXN0U2Ny
b2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlbmRl
ckZyYW1lKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgY292ZXJlZFJlY3QpOworICAgIHZpcnR1YWwgdm9pZCBwYWdlVHJhbnNpdGlv
blZpZXdwb3J0UmVhZHkoKTsKKworICAgIE93blB0cjxXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRy
b2xsZXJDbGllbnRFZmw+IG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudDsKKyAgICBPd25Q
dHI8V2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyPiBtX3BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXI7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUGFn
ZUNsaWVudERlZmF1bHRJbXBsX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
UGFnZUNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvUGFnZUNsaWVudEltcGwuY3BwCShyZXZpc2lvbiAxMzM0NTcpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSwzNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9u
aWNzCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQYWdlQ2xpZW50
SW1wbC5oIgotCi0jaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eUltcGwuaCIKLSNpbmNsdWRlICJF
d2tWaWV3SW1wbC5oIgotI2luY2x1ZGUgIklucHV0TWV0aG9kQ29udGV4dEVmbC5oIgotI2luY2x1
ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgotI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKLSNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5
LmgiCi0jaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCi0jaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
Ci0jaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlFZmwuaCIKLSNpbmNsdWRlICJXZWJQcmVmZXJl
bmNlcy5oIgotI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCi0jaW5jbHVkZSAiZXdrX2NvbnRleHRf
cHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3a19kb3dubG9hZF9qb2IuaCIKLSNpbmNsdWRlICJld2tf
ZG93bmxvYWRfam9iX3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgotI2luY2x1
ZGUgImV3a192aWV3LmgiCi0KLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSNpbmNsdWRl
ICJQYWdlVmlld3BvcnRDb250cm9sbGVyLmgiCi0jZW5kaWYKLQotdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7Ci11c2luZyBuYW1lc3BhY2UgRXdrVmlld0NhbGxiYWNrczsKLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLVBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbChFd2tWaWV3SW1wbCogdmll
d0ltcGwpCi0gICAgOiBtX3ZpZXdJbXBsKHZpZXdJbXBsKQotewotfQotCi1QYWdlQ2xpZW50SW1w
bDo6flBhZ2VDbGllbnRJbXBsKCkKLXsKLX0KLQotRXdrVmlld0ltcGwqIFBhZ2VDbGllbnRJbXBs
Ojp2aWV3SW1wbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdmlld0ltcGw7Ci19Ci0KLS8vIFBh
Z2VDbGllbnQKLVBhc3NPd25QdHI8RHJhd2luZ0FyZWFQcm94eT4gUGFnZUNsaWVudEltcGw6OmNy
ZWF0ZURyYXdpbmdBcmVhUHJveHkoKQotewotICAgIHJldHVybiBEcmF3aW5nQXJlYVByb3h5SW1w
bDo6Y3JlYXRlKG1fdmlld0ltcGwtPnBhZ2UoKSk7Ci19Ci0KLXZvaWQgUGFnZUNsaWVudEltcGw6
OnNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKLXsKLSAg
ICBtX3ZpZXdJbXBsLT51cGRhdGUocmVjdCk7Ci19Ci0KLXZvaWQgUGFnZUNsaWVudEltcGw6OmRp
c3BsYXlWaWV3KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFBhZ2VDbGll
bnRJbXBsOjpzY3JvbGxWaWV3KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmKQotewotICAgIHNldFZpZXdOZWVkc0Rpc3BsYXkoc2Nyb2xs
UmVjdCk7Ci19Ci0KLVdlYkNvcmU6OkludFNpemUgUGFnZUNsaWVudEltcGw6OnZpZXdTaXplKCkK
LXsKLSAgICByZXR1cm4gbV92aWV3SW1wbC0+c2l6ZSgpOwotfQotCi1ib29sIFBhZ2VDbGllbnRJ
bXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgUGFnZUNsaWVudEltcGw6OmlzVmlld0ZvY3VzZWQoKQot
ewotICAgIHJldHVybiBtX3ZpZXdJbXBsLT5pc0ZvY3VzZWQoKTsKLX0KLQotYm9vbCBQYWdlQ2xp
ZW50SW1wbDo6aXNWaWV3VmlzaWJsZSgpCi17Ci0gICAgcmV0dXJuIG1fdmlld0ltcGwtPmlzVmlz
aWJsZSgpOwotfQotCi1ib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdJbldpbmRvdygpCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6cHJvY2Vzc0RpZENyYXNoKCkKLXsKLSAgICAvLyBDaGVjayBpZiBsb2FkaW5nIHdh
cyBvbmdvaW5nLCB3aGVuIHdlYiBwcm9jZXNzIGNyYXNoZWQuCi0gICAgZG91YmxlIGxvYWRQcm9n
cmVzcyA9IGV3a192aWV3X2xvYWRfcHJvZ3Jlc3NfZ2V0KG1fdmlld0ltcGwtPnZpZXcoKSk7Ci0g
ICAgaWYgKGxvYWRQcm9ncmVzcyA+PSAwICYmIGxvYWRQcm9ncmVzcyA8IDEpIHsKLSAgICAgICAg
bG9hZFByb2dyZXNzID0gMTsKLSAgICAgICAgbV92aWV3SW1wbC0+c21hcnRDYWxsYmFjazxMb2Fk
UHJvZ3Jlc3M+KCkuY2FsbCgmbG9hZFByb2dyZXNzKTsKLSAgICB9Ci0KLSAgICBib29sIGhhbmRs
ZWQgPSBmYWxzZTsKLSAgICBtX3ZpZXdJbXBsLT5zbWFydENhbGxiYWNrPFdlYlByb2Nlc3NDcmFz
aGVkPigpLmNhbGwoJmhhbmRsZWQpOwotCi0gICAgaWYgKCFoYW5kbGVkKSB7Ci0gICAgICAgIENT
dHJpbmcgdXJsID0gbV92aWV3SW1wbC0+cGFnZSgpLT51cmxBdFByb2Nlc3NFeGl0KCkudXRmOCgp
OwotICAgICAgICBXQVJOKCJXQVJOSU5HOiBUaGUgd2ViIHByb2Nlc3MgZXhwZXJpZW5jZWQgYSBj
cmFzaCBvbiAnJXMnLlxuIiwgdXJsLmRhdGEoKSk7Ci0KLSAgICAgICAgLy8gRGlzcGxheSBhbiBl
cnJvciBwYWdlCi0gICAgICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQobV92aWV3SW1wbC0+
dmlldygpLCAiVGhlIHdlYiBwcm9jZXNzIGhhcyBjcmFzaGVkLiIsIDAsIHVybC5kYXRhKCkpOwot
ICAgIH0KLX0KLQotdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkUmVsYXVuY2hQcm9jZXNzKCkKLXsK
LSAgICBjb25zdCBjaGFyKiB0aGVtZVBhdGggPSBtX3ZpZXdJbXBsLT50aGVtZVBhdGgoKTsKLSAg
ICBpZiAodGhlbWVQYXRoKQotICAgICAgICBtX3ZpZXdJbXBsLT5wYWdlKCktPnNldFRoZW1lUGF0
aCh0aGVtZVBhdGgpOwotfQotCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpwYWdlQ2xvc2VkKCkKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFBhZ2VDbGllbnRJbXBsOjp0b29sVGlw
Q2hhbmdlZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG5ld1Rvb2xUaXApCi17Ci0gICAg
aWYgKG5ld1Rvb2xUaXAuaXNFbXB0eSgpKQotICAgICAgICBtX3ZpZXdJbXBsLT5zbWFydENhbGxi
YWNrPFRvb2x0aXBUZXh0VW5zZXQ+KCkuY2FsbCgpOwotICAgIGVsc2UKLSAgICAgICAgbV92aWV3
SW1wbC0+c21hcnRDYWxsYmFjazxUb29sdGlwVGV4dFNldD4oKS5jYWxsKG5ld1Rvb2xUaXApOwot
fQotCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJiBjdXJzb3Ip
Ci17Ci0gICAgbV92aWV3SW1wbC0+c2V0Q3Vyc29yKGN1cnNvcik7Ci19Ci0KLXZvaWQgUGFnZUNs
aWVudEltcGw6OnNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyhib29sKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENoYW5nZVZpZXdw
b3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmIGF0dHIpCi17
Ci0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgbV9wYWdlVmlld3BvcnRDb250cm9s
bGVyLT5kaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMoYXR0cik7Ci0jZWxzZQotICAgIFVOVVNF
RF9QQVJBTShhdHRyKTsKLSNlbmRpZgotfQotCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpyZWdpc3Rl
ckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4gY29tbWFuZCwgV2Vi
UGFnZVByb3h5OjpVbmRvT3JSZWRvIHVuZG9PclJlZG8pCi17Ci0gICAgbV91bmRvQ29udHJvbGxl
ci5yZWdpc3RlckVkaXRDb21tYW5kKGNvbW1hbmQsIHVuZG9PclJlZG8pOwotfQotCi12b2lkIFBh
Z2VDbGllbnRJbXBsOjpjbGVhckFsbEVkaXRDb21tYW5kcygpCi17Ci0gICAgbV91bmRvQ29udHJv
bGxlci5jbGVhckFsbEVkaXRDb21tYW5kcygpOwotfQotCi1ib29sIFBhZ2VDbGllbnRJbXBsOjpj
YW5VbmRvUmVkbyhXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8gdW5kb09yUmVkbykKLXsKLSAgICBy
ZXR1cm4gbV91bmRvQ29udHJvbGxlci5jYW5VbmRvUmVkbyh1bmRvT3JSZWRvKTsKLX0KLQotdm9p
ZCBQYWdlQ2xpZW50SW1wbDo6ZXhlY3V0ZVVuZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5kb09yUmVk
byB1bmRvT3JSZWRvKQotewotICAgIG1fdW5kb0NvbnRyb2xsZXIuZXhlY3V0ZVVuZG9SZWRvKHVu
ZG9PclJlZG8pOwotfQotCi1GbG9hdFJlY3QgUGFnZUNsaWVudEltcGw6OmNvbnZlcnRUb0Rldmlj
ZVNwYWNlKGNvbnN0IEZsb2F0UmVjdCYgdmlld1JlY3QpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLSAgICByZXR1cm4gdmlld1JlY3Q7Ci19Ci0KLUZsb2F0UmVjdCBQYWdlQ2xpZW50SW1wbDo6
Y29udmVydFRvVXNlclNwYWNlKGNvbnN0IEZsb2F0UmVjdCYgdmlld1JlY3QpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gdmlld1JlY3Q7Ci19Ci0KLUludFBvaW50IFBhZ2VD
bGllbnRJbXBsOjpzY3JlZW5Ub1dpbmRvdyhjb25zdCBJbnRQb2ludCYgcG9pbnQpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gcG9pbnQ7Ci19Ci0KLUludFJlY3QgUGFnZUNs
aWVudEltcGw6OndpbmRvd1RvU2NyZWVuKGNvbnN0IEludFJlY3QmKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgcmV0dXJuIEludFJlY3QoKTsKLX0KLQotdm9pZCBQYWdlQ2xpZW50SW1w
bDo6ZG9uZVdpdGhLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCkK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
LXZvaWQgUGFnZUNsaWVudEltcGw6OmRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJU
b3VjaEV2ZW50JiwgYm9vbCAvKndhc0V2ZW50SGFuZGxlZCovKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0jZW5kaWYKLQotUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUGFnZUNs
aWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKLXsKLSAg
ICByZXR1cm4gV2ViUG9wdXBNZW51UHJveHlFZmw6OmNyZWF0ZShtX3ZpZXdJbXBsLCBwYWdlKTsK
LX0KLQotUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3Jl
YXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLVBh
c3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xv
ckNob29zZXJQcm94eShXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
IDA7Ci19Ci0jZW5kaWYKLQotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0RmluZEluZGljYXRvcihQ
YXNzUmVmUHRyPEZpbmRJbmRpY2F0b3I+LCBib29sLCBib29sKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi12b2lkIFBhZ2VD
bGllbnRJbXBsOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJl
ZUNvbnRleHQmKQotewotICAgIG1fdmlld0ltcGwtPmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGUoKTsKLX0KLQotdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZXhpdEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlKCkKLXsKLSAgICBtX3ZpZXdJbXBsLT5leGl0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGUoKTsKLX0KLQotdm9pZCBQYWdlQ2xpZW50SW1wbDo6dXBkYXRlQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLSNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0KLXZvaWQg
UGFnZUNsaWVudEltcGw6OmRpZENoYW5nZVNjcm9sbGJhcnNGb3JNYWluRnJhbWUoKSBjb25zdAot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENv
bW1pdExvYWRGb3JNYWluRnJhbWUoYm9vbCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
Ci12b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFN0cmluZyYsIGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLWRvdWJsZSBQYWdlQ2xpZW50SW1wbDo6Y3Vz
dG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIHJldHVybiAwOwotfQotCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRDdXN0b21SZXByZXNl
bnRhdGlvblpvb21GYWN0b3IoZG91YmxlKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0K
LXZvaWQgUGFnZUNsaWVudEltcGw6OmZsYXNoQmFja2luZ1N0b3JlVXBkYXRlcyhjb25zdCBWZWN0
b3I8SW50UmVjdD4mKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgUGFnZUNs
aWVudEltcGw6OmZpbmRTdHJpbmdJbkN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYs
IEZpbmRPcHRpb25zLCB1bnNpZ25lZCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12
b2lkIFBhZ2VDbGllbnRJbXBsOjpjb3VudFN0cmluZ01hdGNoZXNJbkN1c3RvbVJlcHJlc2VudGF0
aW9uKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCkKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi12b2lkIFBhZ2VDbGllbnRJbXBsOjp1cGRhdGVUZXh0SW5wdXRTdGF0
ZSgpCi17Ci0gICAgSW5wdXRNZXRob2RDb250ZXh0RWZsKiBpbnB1dE1ldGhvZENvbnRleHQgPSBt
X3ZpZXdJbXBsLT5pbnB1dE1ldGhvZENvbnRleHQoKTsKLSAgICBpZiAoaW5wdXRNZXRob2RDb250
ZXh0KQotICAgICAgICBpbnB1dE1ldGhvZENvbnRleHQtPnVwZGF0ZVRleHRJbnB1dFN0YXRlKCk7
Ci19Ci0KLXZvaWQgUGFnZUNsaWVudEltcGw6OmhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9h
ZFByb3h5KiBkb3dubG9hZCkKLXsKLSAgICBFd2tfQ29udGV4dCogY29udGV4dCA9IG1fdmlld0lt
cGwtPmV3a0NvbnRleHQoKTsKLSAgICBjb250ZXh0LT5kb3dubG9hZE1hbmFnZXIoKS0+cmVnaXN0
ZXJEb3dubG9hZChkb3dubG9hZCwgbV92aWV3SW1wbCk7Ci19Ci0KLSNpZiBVU0UoVElMRURfQkFD
S0lOR19TVE9SRSkKLXZvaWQgUGFnZUNsaWVudEltcGw6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNv
bnN0IEludFBvaW50JiBwb3NpdGlvbikKLXsKLSAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIt
PnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKHBvc2l0aW9uKTsKLX0KLSNlbmRpZgotCi12b2lkIFBhZ2VD
bGllbnRJbXBsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
c2l6ZSkKLXsKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICBtX3BhZ2VWaWV3cG9y
dENvbnRyb2xsZXItPmRpZENoYW5nZUNvbnRlbnRzU2l6ZShzaXplKTsKLSNlbHNlCi0gICAgbV92
aWV3SW1wbC0+aW5mb3JtQ29udGVudHNTaXplQ2hhbmdlKHNpemUpOwotI2VuZGlmCi19Ci0KLSNp
ZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLXZvaWQgUGFnZUNsaWVudEltcGw6OmRpZFJlbmRl
ckZyYW1lKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgY292ZXJlZFJlY3QpCi17Ci0gICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVy
LT5kaWRSZW5kZXJGcmFtZShjb250ZW50c1NpemUsIGNvdmVyZWRSZWN0KTsKLX0KLQotdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCkKLXsKLSAgICBtX3Bh
Z2VWaWV3cG9ydENvbnRyb2xsZXItPnBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpOwotfQot
I2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGwuaAkocmV2aXNpb24gMTMzNDU3KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDEzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxl
Y3Ryb25pY3MKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBQYWdlQ2xpZW50SW1wbF9oCi0jZGVmaW5lIFBh
Z2VDbGllbnRJbXBsX2gKLQotI2luY2x1ZGUgIkRlZmF1bHRVbmRvQ29udHJvbGxlci5oIgotI2lu
Y2x1ZGUgIlBhZ2VDbGllbnQuaCIKLSNpbmNsdWRlIDxFdmFzLmg+Ci0KLWNsYXNzIEV3a1ZpZXdJ
bXBsOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgUGFnZVZpZXdwb3J0Q29udHJvbGxl
cjsKLQotY2xhc3MgUGFnZUNsaWVudEltcGwgOiBwdWJsaWMgUGFnZUNsaWVudCB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8UGFnZUNsaWVudEltcGw+IGNyZWF0ZShFd2tWaWV3SW1w
bCogdmlld0ltcGwpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBhZ2VDbGll
bnRJbXBsKHZpZXdJbXBsKSk7Ci0gICAgfQotICAgIH5QYWdlQ2xpZW50SW1wbCgpOwotCi0gICAg
RXdrVmlld0ltcGwqIHZpZXdJbXBsKCkgY29uc3Q7Ci0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RP
UkUpCi0gICAgdm9pZCBzZXRQYWdlVmlld3BvcnRDb250cm9sbGVyKFBhZ2VWaWV3cG9ydENvbnRy
b2xsZXIqIGNvbnRyb2xsZXIpIHsgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyID0gY29udHJvbGxl
cjsgfQotI2VuZGlmCi0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgUGFnZUNsaWVudEltcGwoRXdr
Vmlld0ltcGwqKTsKLQotICAgIC8vIFBhZ2VDbGllbnQKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
RHJhd2luZ0FyZWFQcm94eT4gY3JlYXRlRHJhd2luZ0FyZWFQcm94eSgpOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlzcGxheVZpZXcoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVmlldyhj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwotICAgIHZp
cnR1YWwgV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZSgpOwotICAgIHZpcnR1YWwgYm9vbCBpc1Zp
ZXdXaW5kb3dBY3RpdmUoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3Rm9jdXNlZCgpOwotICAg
IHZpcnR1YWwgYm9vbCBpc1ZpZXdWaXNpYmxlKCk7Ci0gICAgdmlydHVhbCBib29sIGlzVmlld0lu
V2luZG93KCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKCk7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZFJlbGF1bmNoUHJvY2VzcygpOwotICAgIHZpcnR1YWwgdm9pZCBwYWdlQ2xv
c2VkKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgdG9vbFRpcENoYW5nZWQoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkNv
cmU6OkN1cnNvciYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNl
TW92ZXMoYm9vbCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGll
cyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmKTsKLQotICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3RlckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4sIFdl
YlBhZ2VQcm94eTo6VW5kb09yUmVkbyk7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyQWxsRWRpdENv
bW1hbmRzKCk7Ci0gICAgdmlydHVhbCBib29sIGNhblVuZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5k
b09yUmVkbyk7Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVVbmRvUmVkbyhXZWJQYWdlUHJveHk6
OlVuZG9PclJlZG8pOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb0Rl
dmljZVNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOwotICAgIHZpcnR1YWwgV2ViQ29y
ZTo6RmxvYXRSZWN0IGNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
KTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblRvV2luZG93KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50Jik7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHdpbmRvd1Rv
U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKLQotICAgIHZvaWQgdXBkYXRlVGV4dElu
cHV0U3RhdGUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25s
b2FkUHJveHkqKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aEtleUV2ZW50KGNvbnN0IE5h
dGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sKTsKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQot
ICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hF
dmVudCYsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKTsKLSNlbmRpZgotCi0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJv
eHkqKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRl
Q29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKTsKLQotI2lmIEVOQUJMRShJTlBVVF9UWVBF
X0NPTE9SKQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb2xvckNob29zZXJQcm94eT4gY3Jl
YXRlQ29sb3JDaG9vc2VyUHJveHkoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3Im
IGluaXRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwotI2VuZGlmCi0KLSAgICB2
aXJ0dWFsIHZvaWQgc2V0RmluZEluZGljYXRvcihQYXNzUmVmUHRyPEZpbmRJbmRpY2F0b3I+LCBi
b29sLCBib29sKTsKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgdmlydHVh
bCB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29u
dGV4dCYpOwotICAgIHZpcnR1YWwgdm9pZCBleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUo
KTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29u
c3QgTGF5ZXJUcmVlQ29udGV4dCYpOwotI2VuZGlmCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hh
bmdlU2Nyb2xsYmFyc0Zvck1haW5GcmFtZSgpIGNvbnN0OwotCi0gICAgdmlydHVhbCB2b2lkIGRp
ZENvbW1pdExvYWRGb3JNYWluRnJhbWUoYm9vbCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aExvYWRpbmdEYXRhRm9yQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiwgY29uc3Qg
Q29yZUlQQzo6RGF0YVJlZmVyZW5jZSYpOwotICAgIHZpcnR1YWwgZG91YmxlIGN1c3RvbVJlcHJl
c2VudGF0aW9uWm9vbUZhY3RvcigpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXN0b21SZXByZXNl
bnRhdGlvblpvb21GYWN0b3IoZG91YmxlKTsKLQotICAgIHZpcnR1YWwgdm9pZCBmbGFzaEJhY2tp
bmdTdG9yZVVwZGF0ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+Jik7Ci0gICAgdmly
dHVhbCB2b2lkIGZpbmRTdHJpbmdJbkN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYs
IEZpbmRPcHRpb25zLCB1bnNpZ25lZCk7Ci0gICAgdmlydHVhbCB2b2lkIGNvdW50U3RyaW5nTWF0
Y2hlc0luQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVu
c2lnbmVkKTsKLQotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAgIHZpcnR1YWwgdm9p
ZCBwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwotI2VuZGlm
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmKTsKLQotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAgIHZpcnR1YWwg
dm9pZCBkaWRSZW5kZXJGcmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KTsKLSAgICB2aXJ0dWFsIHZvaWQg
cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCk7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBF
d2tWaWV3SW1wbCogbV92aWV3SW1wbDsKLSAgICBEZWZhdWx0VW5kb0NvbnRyb2xsZXIgbV91bmRv
Q29udHJvbGxlcjsKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICBQYWdlVmlld3Bv
cnRDb250cm9sbGVyKiBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXI7Ci0jZW5kaWYKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gUGFnZUNsaWVudEltcGxfaApJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50TGVnYWN5SW1wbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50TGVnYWN5
SW1wbC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Bh
Z2VDbGllbnRMZWdhY3lJbXBsLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisgICBDb3B5cmlnaHQg
KEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQYWdlQ2xpZW50TGVnYWN5SW1wbC5o
IgorCisjaW5jbHVkZSAiRXdrVmlld0ltcGwuaCIKKyNpbmNsdWRlICJMYXllclRyZWVDb29yZGlu
YXRvclByb3h5LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNl
IEV3a1ZpZXdDYWxsYmFja3M7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYWdlQ2xpZW50TGVn
YWN5SW1wbDo6UGFnZUNsaWVudExlZ2FjeUltcGwoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQorICAg
IDogUGFnZUNsaWVudEJhc2Uodmlld0ltcGwpCit7Cit9CisKK3ZvaWQgUGFnZUNsaWVudExlZ2Fj
eUltcGw6OmRpZENvbW1pdExvYWQoKQoreworICAgIG1fdmlld0ltcGwtPnVwZGF0ZSgpOworfQor
Cit2b2lkIFBhZ2VDbGllbnRMZWdhY3lJbXBsOjp1cGRhdGVWaWV3cG9ydFNpemUoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgc2l6ZSkKK3sKKyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyAg
ICBtX3ZpZXdJbXBsLT5wYWdlKCktPmRyYXdpbmdBcmVhKCktPnNldFZpc2libGVDb250ZW50c1Jl
Y3QoSW50UmVjdChtX3ZpZXdJbXBsLT5zY3JvbGxQb3NpdGlvbigpLCBzaXplKSwgbV92aWV3SW1w
bC0+c2NhbGVGYWN0b3IoKSwgRmxvYXRQb2ludCgpKTsKKyNlbmRpZgorfQorCit2b2lkIFBhZ2VD
bGllbnRMZWdhY3lJbXBsOjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29y
ZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJikKK3sKKyAgICBtX3ZpZXdJbXBsLT51cGRhdGUoKTsKK30K
Kwordm9pZCBQYWdlQ2xpZW50TGVnYWN5SW1wbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIHNpemUpCit7CisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUp
CisgICAgLy8gbV92aWV3SW1wbC0+aW5mb3JtQ29udGVudFNpemVDaGFuZ2VkIHdpbGwgYmUgY2Fs
bGVkIGFzIGEgcmVzdWx0IG9mIHNldENvbnRlbnRzU2l6ZQorICAgIG1fdmlld0ltcGwtPnBhZ2Uo
KS0+ZHJhd2luZ0FyZWEoKS0+bGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eSgpLT5zZXRDb250ZW50
c1NpemUoRmxvYXRTaXplKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOworICAgIG1fdmll
d0ltcGwtPnVwZGF0ZSgpOworI2Vsc2UKKyAgICBtX3ZpZXdJbXBsLT5pbmZvcm1Db250ZW50c1Np
emVDaGFuZ2Uoc2l6ZSk7CisjZW5kaWYKK30KKworI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JF
KQordm9pZCBQYWdlQ2xpZW50TGVnYWN5SW1wbDo6cGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3Qg
SW50UG9pbnQmIHBvc2l0aW9uKQoreworICAgIG1fdmlld0ltcGwtPnNldFNjcm9sbFBvc2l0aW9u
KHBvc2l0aW9uKTsKKyAgICBtX3ZpZXdJbXBsLT51cGRhdGUoKTsKK30KKwordm9pZCBQYWdlQ2xp
ZW50TGVnYWN5SW1wbDo6ZGlkUmVuZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmKQoreworICAgIG1fdmlld0ltcGwtPnVwZGF0ZSgpOworfQor
Cit2b2lkIFBhZ2VDbGllbnRMZWdhY3lJbXBsOjpwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHko
KQoreworICAgIG1fdmlld0ltcGwtPnVwZGF0ZSgpOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50
TGVnYWN5SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
UGFnZUNsaWVudExlZ2FjeUltcGwuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUltcGwuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisg
ICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgUGFnZUNsaWVudExlZ2FjeUltcGxfaAorI2RlZmluZSBQ
YWdlQ2xpZW50TGVnYWN5SW1wbF9oCisKKyNpbmNsdWRlICJQYWdlQ2xpZW50QmFzZS5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUGFnZUNsaWVudExlZ2FjeUltcGwgOiBwdWJsaWMg
UGFnZUNsaWVudEJhc2UgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFBhZ2VDbGll
bnRCYXNlPiBjcmVhdGUoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBQYWdlQ2xpZW50TGVnYWN5SW1wbCh2aWV3SW1wbCkpOworICAgIH0K
KworICAgIHZpcnR1YWwgflBhZ2VDbGllbnRMZWdhY3lJbXBsKCkgeyB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkQ29tbWl0TG9hZCgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWV3cG9ydFNp
emUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFBh
Z2VDbGllbnRMZWdhY3lJbXBsKEV3a1ZpZXdJbXBsKik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRl
cyYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYpOworI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorICAgIHZpcnR1YWwg
dm9pZCBwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworICAg
IHZpcnR1YWwgdm9pZCBkaWRSZW5kZXJGcmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjb250
ZW50c1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCk7CisjZW5kaWYKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUGFnZUNsaWVudExlZ2FjeUltcGxfaApJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVy
Q2xpZW50RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCShyZXZpc2lvbiAxMzM0NTcpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw2IEBAIHZvaWQgUGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2UKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudEVmbDo6dXBkYXRlVmlld3BvcnRTaXplKGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkK
IHsKICAgICBtX3ZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKLSAgICBtX3ZpZXdJbXBsLT5w
YWdlKCktPnNldFZpZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUpOwogCiAgICAgQVNTRVJUKG1fY29u
dHJvbGxlcik7CiAgICAgbV9jb250cm9sbGVyLT5kaWRDaGFuZ2VWaWV3cG9ydFNpemUodmlld3Bv
cnRTaXplKTsKQEAgLTc5LDIxICs3OCwyNiBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRFZmw6OnNlCiAgICAgbV9jb250cm9sbGVyLT5kaWRDaGFuZ2VDb250ZW50c1Zpc2liaWxp
dHkobV9zY3JvbGxQb3NpdGlvbiwgbV9zY2FsZUZhY3RvciwgdHJhamVjdG9yeSk7CiB9CiAKLXZv
aWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXpl
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpCit2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnRFZmw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JikKIHsKICAgICBtX3ZpZXdJbXBsLT51cGRhdGUoKTsKIH0KIAogdm9pZCBQYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50RWZsOjpzZXRWaWV3cG9ydFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZs
b2F0UG9pbnQmIGNvbnRlbnRzUG9pbnQpCiB7Ci0gICAgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChJ
bnRQb2ludChjb250ZW50c1BvaW50LngoKSwgY29udGVudHNQb2ludC55KCkpLCBtX3NjYWxlRmFj
dG9yLCBGbG9hdFBvaW50KCkpOworICAgIEludFBvaW50IHBvc2l0aW9uKGNvbnRlbnRzUG9pbnQu
eCgpLCBjb250ZW50c1BvaW50LnkoKSk7CisgICAgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChwb3Np
dGlvbiwgbV9zY2FsZUZhY3RvciwgRmxvYXRQb2ludCgpKTsKKyAgICBtX3ZpZXdJbXBsLT5zZXRT
Y3JvbGxQb3NpdGlvbihwb3NpdGlvbik7CiB9CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudEVmbDo6c2V0Q29udGVudHNTY2FsZShmbG9hdCBuZXdTY2FsZSwgYm9vbCB0cmVhdEFz
SW5pdGlhbFZhbHVlKQogewotICAgIGlmICh0cmVhdEFzSW5pdGlhbFZhbHVlKQorICAgIGlmICh0
cmVhdEFzSW5pdGlhbFZhbHVlKSB7CiAgICAgICAgIG1fc2Nyb2xsUG9zaXRpb24gPSBJbnRQb2lu
dCgpOworICAgICAgICBtX3ZpZXdJbXBsLT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCgpKTsK
KyAgICB9CiAgICAgbV9zY2FsZUZhY3RvciA9IG5ld1NjYWxlOworICAgIG1fdmlld0ltcGwtPnNl
dFNjYWxlRmFjdG9yKG5ld1NjYWxlKTsKIH0KIAogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVy
Q2xpZW50RWZsOjpkaWRSZXN1bWVDb250ZW50KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVu
dEVmbC5oCShyZXZpc2lvbiAxMzM0NTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuaAkod29ya2luZyBjb3B5KQpAQCAtMjgs
NyArMjgsNyBAQAogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAKLSNpbmNsdWRlICJQ
YWdlQ2xpZW50SW1wbC5oIgorI2luY2x1ZGUgIlBhZ2VDbGllbnRCYXNlLmgiCiAjaW5jbHVkZSAi
UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQ
cm94eUVmbC5jcHAJKHJldmlzaW9uIDEzMzQ1NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBA
QAogI2luY2x1ZGUgIkV3a1ZpZXdJbXBsLmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViS2V5Ym9hcmRF
dmVudC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiUGFnZUNsaWVu
dEltcGwuaCIKKyNpbmNsdWRlICJQYWdlQ2xpZW50QmFzZS5oIgogI2luY2x1ZGUgIldlYktpdFZl
cnNpb24uaCIKICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUHJveHkuaCIKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIEV2YXNf
T2JqZWN0KiBXZWJQYWdlUHJveHk6OnZpZXdXaWRnZXQoKQogewotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxQYWdlQ2xpZW50SW1wbCo+KG1fcGFnZUNsaWVudCktPnZpZXdJbXBsKCktPnZpZXcoKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UGFnZUNsaWVudEJhc2UqPihtX3BhZ2VDbGllbnQpLT52
aWV3SW1wbCgpLT52aWV3KCk7CiB9CiAKIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0YW5kYXJkVXNl
ckFnZW50KGNvbnN0IFN0cmluZyYgLyphcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQqLykK
</data>

          </attachment>
      

    </bug>

</bugzilla>