<?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>130969</bug_id>
          
          <creation_ts>2014-03-31 07:54:01 -0700</creation_ts>
          <short_desc>[EFL] Composite all layers into one evas_object using TextureMapper.</short_desc>
          <delta_ts>2014-04-30 04:39:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Linux</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>
          
          <blocked>79766</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hyowon Kim">hw1008.kim</reporter>
          <assigned_to name="Hyowon Kim">hw1008.kim</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>995865</commentid>
    <comment_count>0</comment_count>
    <who name="Hyowon Kim">hw1008.kim</who>
    <bug_when>2014-03-31 07:54:01 -0700</bug_when>
    <thetext>The EFL port uses two evas_objects to render the entire webpage: backing_store and compositingObject. 
backing_store is used to paint a non-composited layer with ewk functions, 
whereas compositingObject is used to paint other layers with TextureMapper.
We need to integrate these separated painting paths.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995869</commentid>
    <comment_count>1</comment_count>
      <attachid>228179</attachid>
    <who name="Hyowon Kim">hw1008.kim</who>
    <bug_when>2014-03-31 08:15:58 -0700</bug_when>
    <thetext>Created attachment 228179
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996028</commentid>
    <comment_count>2</comment_count>
      <attachid>228179</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-03-31 15:35:00 -0700</bug_when>
    <thetext>Comment on attachment 228179
Patch

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

Thanks, I really wait this.

&gt; Source/WebKit/efl/WebCoreSupport/AcceleratedCompositingContextEfl.cpp:49
&gt; +    // FIXME: falling back to software mode
&gt; +    ASSERT(m_evasGLContext);

I am not sure whether it is better to cut the software mode first and push back in another bug.

We normally use software mode in EWebLauncher and elm_web as a default.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:-276
&gt;          size_t count;
&gt;          size_t allocated;
&gt;      } repaints;
&gt; -    WTF::Vector&lt;WebCore::IntRect&gt; m_rectsToScroll;
&gt; -    WTF::Vector&lt;WebCore::IntSize&gt; m_scrollOffsets;

Can we remove repaints too?

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:873
&gt; +    Ewk_View_Private_Data* priv = static_cast&lt;Ewk_View_Private_Data*&gt;(data);
&gt; +    priv-&gt;acceleratedCompositingContext-&gt;flushAndRenderLayers();

We can just pass acceleratedCompositingContext.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:938
&gt; +    if (!priv-&gt;acceleratedCompositingContext) {
&gt; +        ERR(&quot;Could not create accelerated compositing context.&quot;);
&gt; +        return;
&gt; +    }

Unnecessary check routine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996576</commentid>
    <comment_count>3</comment_count>
      <attachid>228359</attachid>
    <who name="Hyowon Kim">hw1008.kim</who>
    <bug_when>2014-04-01 20:22:32 -0700</bug_when>
    <thetext>Created attachment 228359
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996579</commentid>
    <comment_count>4</comment_count>
      <attachid>228359</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-04-01 20:42:20 -0700</bug_when>
    <thetext>Comment on attachment 228359
Patch

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

&gt; Source/WebKit/efl/WebCoreSupport/AcceleratedCompositingContextEfl.cpp:40
&gt; +    , m_rootCompositingLayer(0)

nullptr

&gt; Source/WebKit/efl/WebCoreSupport/AcceleratedCompositingContextEfl.cpp:42
&gt; +    , m_isAccelerated(true)

Nit, after setting false as a default, we can turn on it at 52 line.
It reduces one if statment.

&gt; Source/WebKit/efl/WebCoreSupport/AcceleratedCompositingContextEfl.cpp:76
&gt; +        return true;
&gt; +    m_viewSize = size;

Empty line here.

By the way, should we return boolean?

&gt; Source/WebKit/efl/WebCoreSupport/AcceleratedCompositingContextEfl.cpp:181
&gt;  void AcceleratedCompositingContext::attachRootGraphicsLayer(GraphicsLayer* rootLayer)
&gt;  {

From now, this is not to attach root graphics layer.

How about changing method name properly?

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:870
&gt; +void _ewk_view_accelerated_compositing_cb(void* data, Evas_Object*)

static ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996595</commentid>
    <comment_count>5</comment_count>
    <who name="Hyowon Kim">hw1008.kim</who>
    <bug_when>2014-04-01 23:26:02 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 228179 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=228179&amp;action=review
&gt; 
&gt; Thanks, I really wait this.
&gt; 
&gt; &gt; Source/WebKit/efl/WebCoreSupport/AcceleratedCompositingContextEfl.cpp:49
&gt; &gt; +    // FIXME: falling back to software mode
&gt; &gt; +    ASSERT(m_evasGLContext);
&gt; 
&gt; I am not sure whether it is better to cut the software mode first and push back in another bug.
&gt; 
&gt; We normally use software mode in EWebLauncher and elm_web as a default.

Done. I&apos;ve added the fall back to software mode.

&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:-276
&gt; &gt;          size_t count;
&gt; &gt;          size_t allocated;
&gt; &gt;      } repaints;
&gt; &gt; -    WTF::Vector&lt;WebCore::IntRect&gt; m_rectsToScroll;
&gt; &gt; -    WTF::Vector&lt;WebCore::IntSize&gt; m_scrollOffsets;
&gt; 
&gt; Can we remove repaints too?

Yes, but to avoid making the patch size bigger, let&apos;s handle that in a new bug later.

&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:873
&gt; &gt; +    Ewk_View_Private_Data* priv = static_cast&lt;Ewk_View_Private_Data*&gt;(data);
&gt; &gt; +    priv-&gt;acceleratedCompositingContext-&gt;flushAndRenderLayers();
&gt; 
&gt; We can just pass acceleratedCompositingContext.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:938
&gt; &gt; +    if (!priv-&gt;acceleratedCompositingContext) {
&gt; &gt; +        ERR(&quot;Could not create accelerated compositing context.&quot;);
&gt; &gt; +        return;
&gt; &gt; +    }
&gt; 
&gt; Unnecessary check routine.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996596</commentid>
    <comment_count>6</comment_count>
      <attachid>228366</attachid>
    <who name="Hyowon Kim">hw1008.kim</who>
    <bug_when>2014-04-01 23:29:38 -0700</bug_when>
    <thetext>Created attachment 228366
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996599</commentid>
    <comment_count>7</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-04-01 23:39:25 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=228366) [details]
&gt; Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996613</commentid>
    <comment_count>8</comment_count>
    <who name="Hyowon Kim">hw1008.kim</who>
    <bug_when>2014-04-02 00:11:47 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 228359 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=228359&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/efl/WebCoreSupport/AcceleratedCompositingContextEfl.cpp:40
&gt; &gt; +    , m_rootCompositingLayer(0)
&gt; 
&gt; nullptr

Done.

&gt; &gt; Source/WebKit/efl/WebCoreSupport/AcceleratedCompositingContextEfl.cpp:42
&gt; &gt; +    , m_isAccelerated(true)
&gt; 
&gt; Nit, after setting false as a default, we can turn on it at 52 line.
&gt; It reduces one if statment.
&gt; 
&gt; &gt; Source/WebKit/efl/WebCoreSupport/AcceleratedCompositingContextEfl.cpp:76
&gt; &gt; +        return true;
&gt; &gt; +    m_viewSize = size;
&gt; 
&gt; Empty line here.
&gt; 
&gt; By the way, should we return boolean?

The caller was not checking the return value, so I replaced bool with void and added some error logs.

&gt; &gt; Source/WebKit/efl/WebCoreSupport/AcceleratedCompositingContextEfl.cpp:181
&gt; &gt;  void AcceleratedCompositingContext::attachRootGraphicsLayer(GraphicsLayer* rootLayer)
&gt; &gt;  {
&gt; 
&gt; From now, this is not to attach root graphics layer.
&gt; 
&gt; How about changing method name properly?

I found out some unnecessary code from your comment.
We will not create a dummy root, m_rootLayer, instead m_rootLayer is set as an actual compositing root layer.

&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:870
&gt; &gt; +void _ewk_view_accelerated_compositing_cb(void* data, Evas_Object*)
&gt; 
&gt; static ?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996614</commentid>
    <comment_count>9</comment_count>
    <who name="Hyowon Kim">hw1008.kim</who>
    <bug_when>2014-04-02 00:12:26 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Created an attachment (id=228366) [details] [details]
&gt; &gt; Patch
&gt; 
&gt; LGTM

Thanks for your review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996619</commentid>
    <comment_count>10</comment_count>
      <attachid>228366</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-04-02 00:33:22 -0700</bug_when>
    <thetext>Comment on attachment 228366
Patch

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

&gt; Source/WebKit/efl/WebCoreSupport/AcceleratedCompositingContextEfl.cpp:57
&gt; +        m_isAccelerated = false;

Looks wrong indentation.

&gt; Source/WebKit/efl/WebCoreSupport/AcceleratedCompositingContextEfl.cpp:74
&gt; +    m_viewSize = size;

Is there any problem to update *m_viewSize* with *size* when m_isAccelerated is false ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996621</commentid>
    <comment_count>11</comment_count>
    <who name="Hyowon Kim">hw1008.kim</who>
    <bug_when>2014-04-02 00:54:40 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 228366 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=228366&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/efl/WebCoreSupport/AcceleratedCompositingContextEfl.cpp:57
&gt; &gt; +        m_isAccelerated = false;
&gt; 
&gt; Looks wrong indentation.

It looks correct.

&gt; &gt; Source/WebKit/efl/WebCoreSupport/AcceleratedCompositingContextEfl.cpp:74
&gt; &gt; +    m_viewSize = size;
&gt; 
&gt; Is there any problem to update *m_viewSize* with *size* when m_isAccelerated is false ?

No. m_viewSize is used to keep webview size regardless of acceleration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996622</commentid>
    <comment_count>12</comment_count>
      <attachid>228366</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-04-02 00:57:08 -0700</bug_when>
    <thetext>Comment on attachment 228366
Patch

Ok, LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996642</commentid>
    <comment_count>13</comment_count>
      <attachid>228366</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-02 02:24:48 -0700</bug_when>
    <thetext>Comment on attachment 228366
Patch

Clearing flags on attachment: 228366

Committed r166637: &lt;http://trac.webkit.org/changeset/166637&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996643</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-02 02:24:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228179</attachid>
            <date>2014-03-31 08:15:58 -0700</date>
            <delta_ts>2014-04-01 20:22:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130969-20140401001536.patch</filename>
            <type>text/plain</type>
            <size>33865</size>
            <attacher name="Hyowon Kim">hw1008.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2Mjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggYTVhNWU2OTk4
NThhY2IzN2UyYzhkNmUzMmM3MWVhYWE2NWJlZjZkMy4uYjQ4YWEyYzAwNWE0ZmZlN2M5NmZiYzky
NjVjY2RjZjg0YzkwYzZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE0
LTAzLTMxICBIeW93b24gS2ltICA8aHcxMDA4LmtpbUBzYW1zdW5nLmNvbT4KKworICAgICAgICBb
RUZMXSBDb21wb3NpdGUgYWxsIGxheWVycyBpbnRvIG9uZSBldmFzX29iamVjdCB1c2luZyBUZXh0
dXJlTWFwcGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMwOTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIEVGTCBwb3J0IHVzZXMgdHdvIGV2YXNfb2JqZWN0cyB0byByZW5kZXIgdGhlIGVudGly
ZSB3ZWJwYWdlOiBiYWNraW5nX3N0b3JlIGFuZCBjb21wb3NpdGluZ09iamVjdC4gCisgICAgICAg
IGJhY2tpbmdfc3RvcmUgaXMgdXNlZCB0byBwYWludCBhIG5vbi1jb21wb3NpdGVkIGxheWVyIHdp
dGggZXdrIGZ1bmN0aW9ucywgCisgICAgICAgIHdoZXJlYXMgY29tcG9zaXRpbmdPYmplY3QgaXMg
dXNlZCB0byBwYWludCBvdGhlciBsYXllcnMgd2l0aCBUZXh0dXJlTWFwcGVyLgorICAgICAgICBU
aGVzZSBldmFzX29iamVjdHMgYXJlIGV2ZW50dWFsbHkgY29tcG9zaXRlZCBpbnRvIHRoZSB3aW5k
b3cgYnVmZmVyIGJ5IEV2YXMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtb3ZlcyB0byB1c2Ugb25s
eSBvbmUgZXZhc19vYmplY3QgYnkgaW50ZWdyYXRpbmcgdGhlc2UgdHdvIGV2YXNfb2JqZWN0cywK
KyAgICAgICAgYW5kIG1ha2VzIHRoYXQgVGV4dHVyZU1hcHBlciBoYW5kbGVzIGFsbCByZW5kZXJp
bmcgcGF0aHMgbGlrZSBXZWJLaXQyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojp+QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQ6OnJlc2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dDo6Zmx1c2hBbmRSZW5kZXJMYXllcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmZsdXNoUGVuZGluZ0xheWVyQ2hh
bmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6
Y29tcG9zaXRlTGF5ZXJzVG9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0OjphdHRhY2hSb290R3JhcGhpY3NMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6aW5pdGlhbGl6ZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6Y2Fu
Q29tcG9zaXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dEVmbC5oOgorICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Cisg
ICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgorICAgICAgICAoX2V3a192aWV3X2FjY2VsZXJh
dGVkX2NvbXBvc2l0aW5nX2NiKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9hZGQpOgorICAg
ICAgICAoX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRf
Y2FsY3VsYXRlKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9zaG93KToKKyAgICAgICAgKF9l
d2tfdmlld19zbWFydF9oaWRlKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9mbHVzaCk6Cisg
ICAgICAgIChfZXdrX3ZpZXdfc21hcnRfem9vbV93ZWFrX3NldCk6CisgICAgICAgIChfZXdrX3Zp
ZXdfc21hcnRfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdf
YmdfY29sb3Jfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3Njcm9sbCk6CisgICAgICAgIChld2tf
dmlld19yb290X2dyYXBoaWNzX2xheWVyX3NldCk6CisgICAgICAgIChld2tfdmlld19tYXJrX2Zv
cl9zeW5jKToKKyAgICAgICAgKF9ld2tfdmlld19zY3JvbGxzX2ZsdXNoKTogRGVsZXRlZC4KKyAg
ICAgICAgKF9ld2tfdmlld19zY3JvbGxfcHJvY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChfZXdr
X3ZpZXdfc21hcnRfc2Nyb2xsc19wcm9jZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKF9ld2tfdmll
d19zbWFydF9yZXBhaW50c19wcm9jZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKGV3a192aWV3X3Nj
cm9sbHNfcHJvY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChfZXdrX3ZpZXdfYWNjZWxlcmF0ZWRf
Y29tcG9zaXRpbmdfY29udGV4dF9jcmVhdGVfaWZfbmVlZGVkKTogRGVsZXRlZC4KKyAgICAgICAg
KF9ld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19vYmplY3RfY3JlYXRlX2lmX25lZWRl
ZCk6IERlbGV0ZWQuCisgICAgICAgICogZXdrL2V3a192aWV3Lmg6CisKIDIwMTQtMDMtMjMgIEh5
b3dvbiBLaW0gIDxodzEwMDgua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIE1vdmUgYWxsIEVG
TCB0eXBlZGVmcyBpbnRvIEVmbFR5cGVkZWZzLmguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dEVmbC5jcHAKaW5kZXggZWZkNzI1YmY2NWEyNDBkZDdlODRhNmFmMWY0ZjQ4M2U0ZjRj
YTU2Ny4uNDZkYzMzZTk3MTRmZDY5NGZjMWJkZGNiYmZjMDNlMzI3YWE3MTFlOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0RWZsLmNwcApAQCAtMzUsMzUgKzM1LDI2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dChFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3Qq
IGNvbXBvc2l0aW5nT2JqZWN0KQogICAgIDogbV92aWV3KGV3a1ZpZXcpCiAgICAgLCBtX2NvbXBv
c2l0aW5nT2JqZWN0KGNvbXBvc2l0aW5nT2JqZWN0KQorICAgICwgbV9yb290Q29tcG9zaXRpbmdM
YXllcigwKQogICAgICwgbV9zeW5jVGltZXIodGhpcywgJkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0OjpzeW5jTGF5ZXJzKQogewogICAgIEFTU0VSVChtX3ZpZXcpOwogICAgIEFTU0VSVCht
X2NvbXBvc2l0aW5nT2JqZWN0KTsKLX0KLQotQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6
On5BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCgpCi17Ci19CiAKLWJvb2wgQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmluaXRpYWxpemUoKQotewogICAgIG1fZXZhc0dMID0gRWZs
VW5pcXVlUHRyPEV2YXNfR0w+KGV2YXNfZ2xfbmV3KGV2YXNfb2JqZWN0X2V2YXNfZ2V0KG1fdmll
dykpKTsKLSAgICBpZiAoIW1fZXZhc0dMKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBt
X2V2YXNHTENvbnRleHQgPSBFdmFzR0xDb250ZXh0OjpjcmVhdGUobV9ldmFzR0wuZ2V0KCkpOwot
ICAgIGlmICghbV9ldmFzR0xDb250ZXh0KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KG1fZXZhc0dMKQorICAgICAgICBtX2V2YXNHTENvbnRleHQgPSBFdmFzR0xDb250ZXh0OjpjcmVh
dGUobV9ldmFzR0wuZ2V0KCkpOwogCi0gICAgRXZhc19Db29yZCB3aWR0aCA9IDA7Ci0gICAgRXZh
c19Db29yZCBoZWlnaHQgPSAwOwotICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChtX3ZpZXcs
IDAsIDAsICZ3aWR0aCwgJmhlaWdodCk7CisgICAgLy8gRklYTUU6IGZhbGxpbmcgYmFjayB0byBz
b2Z0d2FyZSBtb2RlCisgICAgQVNTRVJUKG1fZXZhc0dMQ29udGV4dCk7CiAKLSAgICBJbnRTaXpl
IHdlYlZpZXdTaXplKHdpZHRoLCBoZWlnaHQpOwotICAgIGlmICh3ZWJWaWV3U2l6ZS5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX3Jvb3RMYXllciA9IEdyYXBoaWNzTGF5
ZXI6OmNyZWF0ZSgwLCAwKTsKKyAgICBtX3Jvb3RMYXllci0+c2V0RHJhd3NDb250ZW50KGZhbHNl
KTsKKyAgICBtX3Jvb3RMYXllci0+c2V0U2l6ZShJbnRTaXplKDEsIDEpKTsKK30KIAotICAgIHJl
dHVybiByZXNpemUod2ViVmlld1NpemUpOworQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6
On5BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCgpCit7CiB9CiAKIHZvaWQgQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnN5bmNMYXllcnMoVGltZXI8QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQ+KikKQEAgLTg4LDQ3ICs3OSw0NSBAQCBib29sIEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0OjpyZXNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBFdmFzX05hdGl2
ZV9TdXJmYWNlIG5hdGl2ZVN1cmZhY2U7CiAgICAgZXZhc19nbF9uYXRpdmVfc3VyZmFjZV9nZXQo
bV9ldmFzR0wuZ2V0KCksIG1fZXZhc0dMU3VyZmFjZS0+c3VyZmFjZSgpLCAmbmF0aXZlU3VyZmFj
ZSk7CiAgICAgZXZhc19vYmplY3RfaW1hZ2VfbmF0aXZlX3N1cmZhY2Vfc2V0KG1fY29tcG9zaXRp
bmdPYmplY3QsICZuYXRpdmVTdXJmYWNlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KIAotYm9vbCBB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6Y2FuQ29tcG9zaXRlKCkKLXsKLSAgICByZXR1
cm4gbV9yb290R3JhcGhpY3NMYXllciAmJiBtX3RleHR1cmVNYXBwZXI7CisgICAgaWYgKCFldmFz
X2dsX21ha2VfY3VycmVudChtX2V2YXNHTC5nZXQoKSwgbV9ldmFzR0xTdXJmYWNlLT5zdXJmYWNl
KCksIG1fZXZhc0dMQ29udGV4dC0+Y29udGV4dCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgZXZhc19nbF9hcGlfZ2V0KG1fZXZhc0dMLmdldCgpKS0+Z2xWaWV3cG9ydCgwLCAwLCBz
aXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgIGV2YXNfZ2xfYXBpX2dldChtX2V2YXNH
TC5nZXQoKSktPmdsQ2xlYXJDb2xvcigxLCAxLCAxLCAxKTsKKyAgICBldmFzX2dsX2FwaV9nZXQo
bV9ldmFzR0wuZ2V0KCkpLT5nbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAgIHJldHVy
biB0cnVlOwogfQogCiB2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpmbHVzaEFu
ZFJlbmRlckxheWVycygpCiB7Ci0gICAgaWYgKCFjYW5Db21wb3NpdGUoKSkKLSAgICAgICAgcmV0
dXJuOwotCiAgICAgTWFpbkZyYW1lJiBmcmFtZSA9IEVXS1ByaXZhdGU6OmNvcmVQYWdlKG1fdmll
dyktPm1haW5GcmFtZSgpOwogICAgIGlmICghZnJhbWUuY29udGVudFJlbmRlcmVyKCkgfHwgIWZy
YW1lLnZpZXcoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGZyYW1lLnZpZXcoKS0+dXBkYXRlTGF5
b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOwogCi0gICAgaWYgKCFjYW5Db21wb3NpdGUo
KSkKKyAgICBpZiAoIWZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoIWV2YXNfZ2xfbWFrZV9jdXJyZW50KG1fZXZhc0dMLmdldCgpLCBtX2V2YXNH
TFN1cmZhY2UtPnN1cmZhY2UoKSwgbV9ldmFzR0xDb250ZXh0LT5jb250ZXh0KCkpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoIWZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpKQotICAgICAg
ICByZXR1cm47Ci0KICAgICBjb21wb3NpdGVMYXllcnNUb0NvbnRleHQoKTsKLQotICAgIGlmICh0
b1RleHR1cmVNYXBwZXJMYXllcihtX3Jvb3RHcmFwaGljc0xheWVyLmdldCgpKS0+ZGVzY2VuZGFu
dHNPclNlbGZIYXZlUnVubmluZ0FuaW1hdGlvbnMoKSAmJiAhbV9zeW5jVGltZXIuaXNBY3RpdmUo
KSkKLSAgICAgICAgbV9zeW5jVGltZXIuc3RhcnRPbmVTaG90KDEgLyBjb21wb3NpdGluZ0ZyYW1l
UmF0ZSk7CiB9CiAKIGJvb2wgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmZsdXNoUGVu
ZGluZ0xheWVyQ2hhbmdlcygpCiB7Ci0gICAgbV9yb290R3JhcGhpY3NMYXllci0+Zmx1c2hDb21w
b3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOworICAgIG1fcm9vdExheWVyLT5mbHVzaENv
bXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCk7CiAgICAgcmV0dXJuIEVXS1ByaXZhdGU6
OmNvcmVQYWdlKG1fdmlldyktPm1haW5GcmFtZSgpLnZpZXcoKS0+Zmx1c2hDb21wb3NpdGluZ1N0
YXRlSW5jbHVkaW5nU3ViZnJhbWVzKCk7CiB9CiAKIHZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQ6OmNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dCgpCiB7CisgICAgaWYgKCFtX3RleHR1
cmVNYXBwZXIpIHsKKyAgICAgICAgbV90ZXh0dXJlTWFwcGVyID0gVGV4dHVyZU1hcHBlcjo6Y3Jl
YXRlKFRleHR1cmVNYXBwZXI6Ok9wZW5HTE1vZGUpOworICAgICAgICBzdGF0aWNfY2FzdDxUZXh0
dXJlTWFwcGVyR0wqPihtX3RleHR1cmVNYXBwZXIuZ2V0KCkpLT5zZXRFbmFibGVFZGdlRGlzdGFu
Y2VBbnRpYWxpYXNpbmcodHJ1ZSk7CisgICAgfQorCiAgICAgRXZhc19Db29yZCB3aWR0aCA9IDA7
CiAgICAgRXZhc19Db29yZCBoZWlnaHQgPSAwOwogICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dl
dChtX3ZpZXcsIDAsIDAsICZ3aWR0aCwgJmhlaWdodCk7CkBAIC0xMzYsMzUgKzEyNSwzMiBAQCB2
b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpjb21wb3NpdGVMYXllcnNUb0NvbnRl
eHQoKQogICAgIGV2YXNfZ2xfYXBpX2dldChtX2V2YXNHTC5nZXQoKSktPmdsVmlld3BvcnQoMCwg
MCwgd2lkdGgsIGhlaWdodCk7CiAgICAgZXZhc19nbF9hcGlfZ2V0KG1fZXZhc0dMLmdldCgpKS0+
Z2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKIAorICAgIFRleHR1cmVNYXBwZXJMYXllciog
Y3VycmVudFJvb3RMYXllciA9IHRvVGV4dHVyZU1hcHBlckxheWVyKG1fcm9vdExheWVyLmdldCgp
KTsKKyAgICBpZiAoIWN1cnJlbnRSb290TGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGN1
cnJlbnRSb290TGF5ZXItPnNldFRleHR1cmVNYXBwZXIobV90ZXh0dXJlTWFwcGVyLmdldCgpKTsK
KyAgICBjdXJyZW50Um9vdExheWVyLT5hcHBseUFuaW1hdGlvbnNSZWN1cnNpdmVseSgpOworCiAg
ICAgbV90ZXh0dXJlTWFwcGVyLT5iZWdpblBhaW50aW5nKCk7CiAgICAgbV90ZXh0dXJlTWFwcGVy
LT5iZWdpbkNsaXAoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgRmxvYXRSZWN0KDAsIDAsIHdpZHRo
LCBoZWlnaHQpKTsKLSAgICB0b1RleHR1cmVNYXBwZXJMYXllcihtX3Jvb3RHcmFwaGljc0xheWVy
LmdldCgpKS0+cGFpbnQoKTsKKyAgICBjdXJyZW50Um9vdExheWVyLT5wYWludCgpOwogICAgIG1f
ZnBzQ291bnRlci51cGRhdGVGUFNBbmREaXNwbGF5KG1fdGV4dHVyZU1hcHBlci5nZXQoKSk7CiAg
ICAgbV90ZXh0dXJlTWFwcGVyLT5lbmRDbGlwKCk7CiAgICAgbV90ZXh0dXJlTWFwcGVyLT5lbmRQ
YWludGluZygpOworCisgICAgaWYgKGN1cnJlbnRSb290TGF5ZXItPmRlc2NlbmRhbnRzT3JTZWxm
SGF2ZVJ1bm5pbmdBbmltYXRpb25zKCkgJiYgIW1fc3luY1RpbWVyLmlzQWN0aXZlKCkpCisgICAg
ICAgIG1fc3luY1RpbWVyLnN0YXJ0T25lU2hvdCgxIC8gY29tcG9zaXRpbmdGcmFtZVJhdGUpOwog
fQogCiB2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjphdHRhY2hSb290R3JhcGhp
Y3NMYXllcihHcmFwaGljc0xheWVyKiByb290TGF5ZXIpCiB7Ci0gICAgaWYgKCFyb290TGF5ZXIp
IHsKLSAgICAgICAgbV9yb290R3JhcGhpY3NMYXllciA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoIW1fdGV4dHVyZU1hcHBlcikgewotICAgICAgICBldmFzX2ds
X21ha2VfY3VycmVudChtX2V2YXNHTC5nZXQoKSwgbV9ldmFzR0xTdXJmYWNlLT5zdXJmYWNlKCks
IG1fZXZhc0dMQ29udGV4dC0+Y29udGV4dCgpKTsKLSAgICAgICAgbV90ZXh0dXJlTWFwcGVyID0g
VGV4dHVyZU1hcHBlckdMOjpjcmVhdGUoKTsKLSAgICB9Ci0KLSAgICBtX3Jvb3RHcmFwaGljc0xh
eWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKDAsIDApOwotICAgIG1fcm9vdEdyYXBoaWNzTGF5
ZXItPmFkZENoaWxkKHJvb3RMYXllcik7Ci0gICAgbV9yb290R3JhcGhpY3NMYXllci0+c2V0RHJh
d3NDb250ZW50KGZhbHNlKTsKLSAgICBtX3Jvb3RHcmFwaGljc0xheWVyLT5zZXRNYXNrc1RvQm91
bmRzKGZhbHNlKTsKLSAgICBtX3Jvb3RHcmFwaGljc0xheWVyLT5zZXRTaXplKEludFNpemUoMSwg
MSkpOwotCi0gICAgdG9UZXh0dXJlTWFwcGVyTGF5ZXIobV9yb290R3JhcGhpY3NMYXllci5nZXQo
KSktPnNldFRleHR1cmVNYXBwZXIobV90ZXh0dXJlTWFwcGVyLmdldCgpKTsKKyAgICBpZiAobV9y
b290Q29tcG9zaXRpbmdMYXllcikKKyAgICAgICAgbV9yb290Q29tcG9zaXRpbmdMYXllci0+cmVt
b3ZlRnJvbVBhcmVudCgpOwogCi0gICAgbV9yb290R3JhcGhpY3NMYXllci0+Zmx1c2hDb21wb3Np
dGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOworICAgIG1fcm9vdENvbXBvc2l0aW5nTGF5ZXIg
PSByb290TGF5ZXI7CisgICAgaWYgKG1fcm9vdENvbXBvc2l0aW5nTGF5ZXIpCisgICAgICAgIG1f
cm9vdExheWVyLT5hZGRDaGlsZEF0SW5kZXgobV9yb290Q29tcG9zaXRpbmdMYXllciwgMCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0RWZsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dEVmbC5oCmluZGV4IDQ4M2M4OWY4YjYyNzQ1YWEyZWMxMDUzZjVmZDU4YTUwNzIyYmI0OWUuLjhl
NjM5MmYxYjE4ODUxZmQzYzQ0N2M2ZDMwZTUxMjdkMzBkZGVkMDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHRFZmwuaApAQCAtNDIsMTcgKzQyLDEzIEBAIHB1YmxpYzoKICAgICBB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dChFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19P
YmplY3QqIGNvbXBvc2l0aW5nT2JqZWN0KTsKICAgICB+QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHQoKTsKIAotICAgIGJvb2wgaW5pdGlhbGl6ZSgpOwotCiAgICAgYm9vbCByZXNpemUoY29u
c3QgSW50U2l6ZSYpOwogICAgIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NM
YXllciogcm9vdExheWVyKTsKIAogICAgIHZvaWQgZmx1c2hBbmRSZW5kZXJMYXllcnMoKTsKICAg
ICBib29sIGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpOwotICAgIHZvaWQgY29tcG9zaXRlTGF5
ZXJzVG9Db250ZXh0KCk7Ci0KLSAgICBib29sIGNhbkNvbXBvc2l0ZSgpOwogCisgICAgdm9pZCBj
b21wb3NpdGVMYXllcnNUb0NvbnRleHQoKTsKICAgICB2b2lkIHN5bmNMYXllcnMoVGltZXI8QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+Kik7CiAKIHByaXZhdGU6CkBAIC02MCw3ICs1Niw4
IEBAIHByaXZhdGU6CiAgICAgRXZhc19PYmplY3QqIG1fY29tcG9zaXRpbmdPYmplY3Q7CiAKICAg
ICBPd25QdHI8VGV4dHVyZU1hcHBlcj4gbV90ZXh0dXJlTWFwcGVyOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxHcmFwaGljc0xheWVyPiBtX3Jvb3RHcmFwaGljc0xheWVyOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxHcmFwaGljc0xheWVyPiBtX3Jvb3RMYXllcjsKKyAgICBHcmFwaGljc0xheWVyKiBtX3Jv
b3RDb21wb3NpdGluZ0xheWVyOwogICAgIFRpbWVyPEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0PiBtX3N5bmNUaW1lcjsKIAogICAgIEVmbFVuaXF1ZVB0cjxFdmFzX0dMPiBtX2V2YXNHTDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCmluZGV4IDU3NjU0NTg1NmMxY2M3YjEyNGQ5MzJm
NjQwNTEyZmUwYzRhZTNlNjcuLjMwZDFiNDlkZDAxMjk0MTg5ZmExMjZiNmM0MDZkN2FmMjRkOGE4
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApAQCAtMjU1LDggKzI1NSw2IEBAIHN0
cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBXZWJDb3JlOjpWaWV3cG9ydEFyZ3Vt
ZW50cyB2aWV3cG9ydEFyZ3VtZW50czsKICAgICBFd2tfSGlzdG9yeSogaGlzdG9yeTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+IGFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OwotICAgIGJvb2wgaXNDb21wb3NpdGluZ0FjdGl2
ZTsKLSAgICBSZWZQdHI8RXZhc19PYmplY3Q+IGNvbXBvc2l0aW5nT2JqZWN0OwogI2lmIEVOQUJM
RShJTlBVVF9UWVBFX0NPTE9SKQogICAgIFdlYkNvcmU6OkNvbG9yQ2hvb3NlckNsaWVudCogY29s
b3JDaG9vc2VyQ2xpZW50OwogI2VuZGlmCkBAIC0yNzIsOCArMjcwLDYgQEAgc3RydWN0IF9Fd2tf
Vmlld19Qcml2YXRlX0RhdGEgewogICAgICAgICBzaXplX3QgY291bnQ7CiAgICAgICAgIHNpemVf
dCBhbGxvY2F0ZWQ7CiAgICAgfSByZXBhaW50czsKLSAgICBXVEY6OlZlY3RvcjxXZWJDb3JlOjpJ
bnRSZWN0PiBtX3JlY3RzVG9TY3JvbGw7Ci0gICAgV1RGOjpWZWN0b3I8V2ViQ29yZTo6SW50U2l6
ZT4gbV9zY3JvbGxPZmZzZXRzOwogICAgIHVuc2lnbmVkIGludCBpbWg7IC8qKjwgaW5wdXQgbWV0
aG9kIGhpbnRzICovCiAgICAgc3RydWN0IHsKICAgICAgICAgYm9vbCB2aWV3Q2xlYXJlZCA6IDE7
CkBAIC00NzIsMTIgKzQ2OCw2IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19yZXBhaW50c19mbHVz
aChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYpCiAgICAgX2V3a192aWV3X3JlcGFpbnRzX3Jl
c2l6ZShwcml2LCBld2tWaWV3UmVwYWludHNTaXplTWF4aW11bUZyZWUpOwogfQogCi1zdGF0aWMg
dm9pZCBfZXdrX3ZpZXdfc2Nyb2xsc19mbHVzaChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYp
Ci17Ci0gICAgcHJpdi0+bV9zY3JvbGxPZmZzZXRzLmNsZWFyKCk7Ci0gICAgcHJpdi0+bV9yZWN0
c1RvU2Nyb2xsLmNsZWFyKCk7Ci19Ci0KIC8vIERlZmF1bHQgRXZlbnQgSGFuZGxpbmcgLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogc3RhdGljIEVpbmFfQm9v
bCBfZXdrX3ZpZXdfc21hcnRfZm9jdXNfaW4oRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRh
KQogewpAQCAtNzQ3LDYgKzczNyw3IEBAIHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9l
d2tfdmlld19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiAjZW5kaWYK
ICAgICBwYWdlU2V0dGluZ3Muc2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWQodHJ1
ZSk7CiAgICAgcGFnZVNldHRpbmdzLnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKHRy
dWUpOworICAgIHBhZ2VTZXR0aW5ncy5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKICAg
ICBjaGFyKiBkZWJ1Z1Zpc3VhbHNFbnZpcm9ubWVudCA9IGdldGVudigiV0VCS0lUX1NIT1dfQ09N
UE9TSVRJTkdfREVCVUdfVklTVUFMUyIpOwogICAgIGJvb2wgc2hvd0RlYnVnVmlzdWFscyA9IGRl
YnVnVmlzdWFsc0Vudmlyb25tZW50ICYmICFzdHJjbXAoZGVidWdWaXN1YWxzRW52aXJvbm1lbnQs
ICIxIik7CiAgICAgcGFnZVNldHRpbmdzLnNldFNob3dEZWJ1Z0JvcmRlcnMoc2hvd0RlYnVnVmlz
dWFscyk7CkBAIC04MzQsOCArODI1LDYgQEAgc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSog
X2V3a192aWV3X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKICAgICBw
cml2LT5jb250ZXh0TWVudSA9IDA7CiAjZW5kaWYKIAotICAgIHByaXYtPmlzQ29tcG9zaXRpbmdB
Y3RpdmUgPSBmYWxzZTsKLQogICAgIHJldHVybiBwcml2OwogfQogCkBAIC04NzgsNiArODY3LDEy
IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19wcml2X2RlbChFd2tfVmlld19Qcml2YXRlX0RhdGEq
IHByaXYpCiAgICAgZGVsZXRlIHByaXY7CiB9CiAKK3ZvaWQgX2V3a192aWV3X2FjY2VsZXJhdGVk
X2NvbXBvc2l0aW5nX2NiKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KikKK3sKKyAgICBFd2tfVmll
d19Qcml2YXRlX0RhdGEqIHByaXYgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19Qcml2YXRlX0RhdGEq
PihkYXRhKTsKKyAgICBwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+Zmx1c2hB
bmRSZW5kZXJMYXllcnMoKTsKK30KKwogc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2FkZChF
dmFzX09iamVjdCogZXdrVmlldykKIHsKICAgICBjb25zdCBFdmFzX1NtYXJ0KiBzbWFydCA9IGV2
YXNfb2JqZWN0X3NtYXJ0X3NtYXJ0X2dldChld2tWaWV3KTsKQEAgLTkxMCw4ICs5MDUsOCBAQCBz
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogCiAg
ICAgRVdLX1ZJRVdfUFJJVl9HRVQoc21hcnREYXRhLCBwcml2KTsKIAotICAgIHNtYXJ0RGF0YS0+
YmFja2luZ19zdG9yZSA9IGV2YXNfb2JqZWN0X2ltYWdlX2FkZChzbWFydERhdGEtPmJhc2UuZXZh
cyk7Ci0gICAgaWYgKEVJTkFfVU5MSUtFTFkoIXNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSkpIHsK
KyAgICBzbWFydERhdGEtPmltYWdlID0gZXZhc19vYmplY3RfaW1hZ2VfYWRkKHNtYXJ0RGF0YS0+
YmFzZS5ldmFzKTsKKyAgICBpZiAoRUlOQV9VTkxJS0VMWSghc21hcnREYXRhLT5pbWFnZSkpIHsK
ICAgICAgICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIGJhY2tpbmcgc3RvcmUgb2JqZWN0LiIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtOTE5LDE5ICs5MTQsMjkgQEAgc3RhdGljIHZvaWQg
X2V3a192aWV3X3NtYXJ0X2FkZChFdmFzX09iamVjdCogZXdrVmlldykKICAgICBjb25zdCBFY29y
ZV9FdmFzKiBlY29yZUV2YXMgPSBlY29yZV9ldmFzX2Vjb3JlX2V2YXNfZ2V0KHNtYXJ0RGF0YS0+
YmFzZS5ldmFzKTsKICAgICBjb25zdCBjaGFyKiBlbmdpbmUgPSBlY29yZV9ldmFzX2VuZ2luZV9u
YW1lX2dldChlY29yZUV2YXMpOwogICAgIGlmICghc3RybmNtcChlbmdpbmUsICJvcGVuZ2xfeDEx
Iiwgc3RybGVuKCJvcGVuZ2xfeDExIikpKQotICAgICAgICBldmFzX29iamVjdF9pbWFnZV9jb250
ZW50X2hpbnRfc2V0KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgRVZBU19JTUFHRV9DT05URU5U
X0hJTlRfRFlOQU1JQyk7CisgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2NvbnRlbnRfaGludF9z
ZXQoc21hcnREYXRhLT5pbWFnZSwgRVZBU19JTUFHRV9DT05URU5UX0hJTlRfRFlOQU1JQyk7CiAK
LSAgICBldmFzX29iamVjdF9pbWFnZV9hbHBoYV9zZXQoc21hcnREYXRhLT5iYWNraW5nX3N0b3Jl
LCBmYWxzZSk7Ci0gICAgZXZhc19vYmplY3RfaW1hZ2Vfc21vb3RoX3NjYWxlX3NldChzbWFydERh
dGEtPmJhY2tpbmdfc3RvcmUsIHNtYXJ0RGF0YS0+em9vbV93ZWFrX3Ntb290aF9zY2FsZSk7Ci0g
ICAgZXZhc19vYmplY3RfcGFzc19ldmVudHNfc2V0KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwg
dHJ1ZSk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfbWVtYmVyX2FkZChzbWFydERhdGEtPmJhY2tp
bmdfc3RvcmUsIGV3a1ZpZXcpOwotICAgIGV2YXNfb2JqZWN0X3Nob3coc21hcnREYXRhLT5iYWNr
aW5nX3N0b3JlKTsKKyAgICBldmFzX29iamVjdF9pbWFnZV9hbHBoYV9zZXQoc21hcnREYXRhLT5p
bWFnZSwgZmFsc2UpOworICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxlZF9zZXQoc21hcnREYXRh
LT5pbWFnZSwgdHJ1ZSk7CisgICAgZXZhc19vYmplY3RfaW1hZ2Vfc21vb3RoX3NjYWxlX3NldChz
bWFydERhdGEtPmltYWdlLCBzbWFydERhdGEtPnpvb21fd2Vha19zbW9vdGhfc2NhbGUpOworICAg
IGV2YXNfb2JqZWN0X3Bhc3NfZXZlbnRzX3NldChzbWFydERhdGEtPmltYWdlLCB0cnVlKTsKKyAg
ICBldmFzX29iamVjdF9zbWFydF9tZW1iZXJfYWRkKHNtYXJ0RGF0YS0+aW1hZ2UsIGV3a1ZpZXcp
OworICAgIGV2YXNfb2JqZWN0X3Nob3coc21hcnREYXRhLT5pbWFnZSk7CisKKyAgICAvLyBTZXQg
dGhlIHBpeGVsIGdldCBjYWxsYmFjay4KKyAgICBldmFzX29iamVjdF9pbWFnZV9waXhlbHNfZ2V0
X2NhbGxiYWNrX3NldChzbWFydERhdGEtPmltYWdlLCBfZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29t
cG9zaXRpbmdfY2IsIHByaXYpOwogCiAgICAgc21hcnREYXRhLT5ldmVudHNfcmVjdCA9IGV2YXNf
b2JqZWN0X3JlY3RhbmdsZV9hZGQoc21hcnREYXRhLT5iYXNlLmV2YXMpOwogICAgIGV2YXNfb2Jq
ZWN0X2NvbG9yX3NldChzbWFydERhdGEtPmV2ZW50c19yZWN0LCAwLCAwLCAwLCAwKTsKICAgICBl
dmFzX29iamVjdF9zbWFydF9tZW1iZXJfYWRkKHNtYXJ0RGF0YS0+ZXZlbnRzX3JlY3QsIGV3a1Zp
ZXcpOwogICAgIGV2YXNfb2JqZWN0X3Nob3coc21hcnREYXRhLT5ldmVudHNfcmVjdCk7CiAKKyAg
ICBwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+KGV3a1ZpZXcsIHNtYXJ0RGF0
YS0+aW1hZ2UpOworICAgIGlmICghcHJpdi0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQp
IHsKKyAgICAgICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5n
IGNvbnRleHQuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBzbWFydERhdGEtPm1h
aW5fZnJhbWUgPSBld2tfZnJhbWVfYWRkKHNtYXJ0RGF0YS0+YmFzZS5ldmFzKTsKICAgICBpZiAo
IXNtYXJ0RGF0YS0+bWFpbl9mcmFtZSkgewogICAgICAgICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUg
bWFpbiBmcmFtZSBvYmplY3QuIik7CkBAIC05ODEsMzQgKzk4NiwxNCBAQCBzdGF0aWMgdm9pZCBf
ZXdrX3ZpZXdfc21hcnRfcmVzaXplKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX0Nvb3JkIHdp
ZHRoLCBFdmFzXwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHBy
aXYpOwogCiAgICAgLy8gdGhlc2Ugc2hvdWxkIGJlIHF1ZXVlZCBhbmQgcHJvY2Vzc2VkIGluIGNh
bGN1bGF0ZSBhcyB3ZWxsIQotICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShzbWFydERhdGEtPmJhY2tp
bmdfc3RvcmUsIHdpZHRoLCBoZWlnaHQpOwotICAgIGV2YXNfb2JqZWN0X2ltYWdlX3NpemVfc2V0
KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgd2lkdGgsIGhlaWdodCk7Ci0KLSAgICBpZiAocHJp
di0+Y29tcG9zaXRpbmdPYmplY3QpIHsKLSAgICAgICAgZXZhc19vYmplY3RfcmVzaXplKHByaXYt
PmNvbXBvc2l0aW5nT2JqZWN0LmdldCgpLCB3aWR0aCwgaGVpZ2h0KTsKLSAgICAgICAgZXZhc19v
YmplY3RfaW1hZ2Vfc2l6ZV9zZXQocHJpdi0+Y29tcG9zaXRpbmdPYmplY3QuZ2V0KCksIHdpZHRo
LCBoZWlnaHQpOwotICAgICAgICBldmFzX29iamVjdF9pbWFnZV9maWxsX3NldChwcml2LT5jb21w
b3NpdGluZ09iamVjdC5nZXQoKSwgMCwgMCwgd2lkdGgsIGhlaWdodCk7CisgICAgZXZhc19vYmpl
Y3RfcmVzaXplKHNtYXJ0RGF0YS0+aW1hZ2UsIHdpZHRoLCBoZWlnaHQpOworICAgIGV2YXNfb2Jq
ZWN0X2ltYWdlX3NpemVfc2V0KHNtYXJ0RGF0YS0+aW1hZ2UsIHdpZHRoLCBoZWlnaHQpOworICAg
IGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxfc2V0KHNtYXJ0RGF0YS0+aW1hZ2UsIDAsIDAsIHdpZHRo
LCBoZWlnaHQpOwogCi0gICAgICAgIGlmIChwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dCkKLSAgICAgICAgICAgIHByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5y
ZXNpemUoV2ViQ29yZTo6SW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7Ci0gICAgfQorICAgIHByaXYt
PmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5yZXNpemUoV2ViQ29yZTo6SW50U2l6ZSh3
aWR0aCwgaGVpZ2h0KSk7CiAKICAgICBzbWFydERhdGEtPmNoYW5nZWQuc2l6ZSA9IHRydWU7CiAg
ICAgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoc21hcnREYXRhKTsKLQotICAgIGlmIChzbWFydERh
dGEtPmFuaW1hdGVkX3pvb20uem9vbS5jdXJyZW50IDwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46OmVwc2lsb24oKSkgewotICAgICAgICBFdmFzX09iamVjdCogY2xpcCA9IGV2YXNfb2JqZWN0
X2NsaXBfZ2V0KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSk7Ci0gICAgICAgIEV2YXNfQ29vcmQg
eCwgeSwgY29udGVudFdpZHRoLCBjb250ZW50SGVpZ2h0OwotICAgICAgICBldmFzX29iamVjdF9p
bWFnZV9maWxsX3NldChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsIDAsIDAsIHdpZHRoLCBoZWln
aHQpOwotICAgICAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQoc21hcnREYXRhLT5iYWNraW5n
X3N0b3JlLCAmeCwgJnksIDAsIDApOwotICAgICAgICBldmFzX29iamVjdF9tb3ZlKGNsaXAsIHgs
IHkpOwotICAgICAgICBld2tfZnJhbWVfY29udGVudHNfc2l6ZV9nZXQoc21hcnREYXRhLT5tYWlu
X2ZyYW1lLCAmY29udGVudFdpZHRoLCAmY29udGVudEhlaWdodCk7Ci0gICAgICAgIGlmICh3aWR0
aCA+IGNvbnRlbnRXaWR0aCkKLSAgICAgICAgICAgIHdpZHRoID0gY29udGVudFdpZHRoOwotICAg
ICAgICBpZiAoaGVpZ2h0ID4gY29udGVudEhlaWdodCkKLSAgICAgICAgICAgIGhlaWdodCA9IGNv
bnRlbnRIZWlnaHQ7Ci0gICAgICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShjbGlwLCB3aWR0aCwgaGVp
Z2h0KTsKLSAgICB9CiB9CiAKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9tb3ZlKEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBFdmFzX0Nvb3JkIC8qeCovLCBFdmFzX0Nvb3JkIC8qeSovKQpAQCAt
MTA1MywxNzMgKzEwMzgsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3X3NjcmVlbl9t
b3ZlKHVpbnQzMl90KiBpbWFnZSwgc2l6ZV90IGRlc3RpbmF0aW9uWCwgcwogICAgIH0KIH0KIAot
c3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld19zY3JvbGxfcHJvY2VzcyhFd2tfVmlld19TbWFy
dF9EYXRhKiBzbWFydERhdGEsIHZvaWQqIHBpeGVscywgRXZhc19Db29yZCB3aWR0aCwgRXZhc19D
b29yZCBoZWlnaHQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbE9mZnNldCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgcmVjdFRvU2Nyb2xsKQotewotICAgIGludCBzY3JvbGxYID0gcmVj
dFRvU2Nyb2xsLngoKTsKLSAgICBpbnQgc2Nyb2xsWSA9IHJlY3RUb1Njcm9sbC55KCk7Ci0gICAg
aW50IHNjcm9sbFdpZHRoID0gcmVjdFRvU2Nyb2xsLndpZHRoKCk7Ci0gICAgaW50IHNjcm9sbEhl
aWdodCA9IHJlY3RUb1Njcm9sbC5oZWlnaHQoKTsKLQotICAgIGlmIChhYnMoc2Nyb2xsT2Zmc2V0
LndpZHRoKCkpID49IHNjcm9sbFdpZHRoIHx8IGFicyhzY3JvbGxPZmZzZXQuaGVpZ2h0KCkpID49
IHNjcm9sbEhlaWdodCkgewotICAgICAgICBld2tfdmlld19yZXBhaW50X2FkZChzbWFydERhdGEt
Pl9wcml2LCBzY3JvbGxYLCBzY3JvbGxZLCBzY3JvbGxXaWR0aCwgc2Nyb2xsSGVpZ2h0KTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChzY3JvbGxYIDwgMCkgewotICAgICAgICBz
Y3JvbGxXaWR0aCArPSBzY3JvbGxYOwotICAgICAgICBzY3JvbGxYID0gMDsKLSAgICB9Ci0gICAg
aWYgKHNjcm9sbFkgPCAwKSB7Ci0gICAgICAgIHNjcm9sbEhlaWdodCArPSBzY3JvbGxZOwotICAg
ICAgICBzY3JvbGxZID0gMDsKLSAgICB9Ci0KLSAgICBpZiAoc2Nyb2xsWCArIHNjcm9sbFdpZHRo
ID4gd2lkdGgpCi0gICAgICAgIHNjcm9sbFdpZHRoID0gd2lkdGggLSBzY3JvbGxYOwotICAgIGlm
IChzY3JvbGxZICsgc2Nyb2xsSGVpZ2h0ID4gaGVpZ2h0KQotICAgICAgICBzY3JvbGxIZWlnaHQg
PSBoZWlnaHQgLSBzY3JvbGxZOwotCi0gICAgaWYgKHNjcm9sbFdpZHRoIDw9IDAgfHwgc2Nyb2xs
SGVpZ2h0IDw9IDApCi0gICAgICAgIHJldHVybjsKLQotICAgIGludCBzb3VyY2VYID0gc2Nyb2xs
T2Zmc2V0LndpZHRoKCkgPCAwID8gYWJzKHNjcm9sbE9mZnNldC53aWR0aCgpKSA6IDA7Ci0gICAg
aW50IHNvdXJjZVkgPSBzY3JvbGxPZmZzZXQuaGVpZ2h0KCkgPCAwID8gYWJzKHNjcm9sbE9mZnNl
dC5oZWlnaHQoKSkgOiAwOwotICAgIGludCBkZXN0aW5hdGlvblggPSBzY3JvbGxPZmZzZXQud2lk
dGgoKSA8IDAgPyAwIDogc2Nyb2xsT2Zmc2V0LndpZHRoKCk7Ci0gICAgaW50IGRlc3RpbmF0aW9u
WSA9IHNjcm9sbE9mZnNldC5oZWlnaHQoKSA8IDAgPyAwIDogc2Nyb2xsT2Zmc2V0LmhlaWdodCgp
OwotICAgIGludCBjb3B5V2lkdGggPSBzY3JvbGxXaWR0aCAtIGFicyhzY3JvbGxPZmZzZXQud2lk
dGgoKSk7Ci0gICAgaW50IGNvcHlIZWlnaHQgPSBzY3JvbGxIZWlnaHQgLSBhYnMoc2Nyb2xsT2Zm
c2V0LmhlaWdodCgpKTsKLSAgICBpZiAoc2Nyb2xsT2Zmc2V0LndpZHRoKCkgfHwgc2Nyb2xsT2Zm
c2V0LmhlaWdodCgpKSB7Ci0gICAgICAgIF9ld2tfdmlld19zY3JlZW5fbW92ZShzdGF0aWNfY2Fz
dDx1aW50MzJfdCo+KHBpeGVscyksIGRlc3RpbmF0aW9uWCwgZGVzdGluYXRpb25ZLCBzb3VyY2VY
LCBzb3VyY2VZLCBjb3B5V2lkdGgsIGNvcHlIZWlnaHQsIHdpZHRoKTsKLSAgICAgICAgZXZhc19v
YmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRkKHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgZGVz
dGluYXRpb25YLCBkZXN0aW5hdGlvblksIGNvcHlXaWR0aCwgY29weUhlaWdodCk7Ci0gICAgfQot
Ci0gICAgRWluYV9SZWN0YW5nbGUgdmVydGljYWxVcGRhdGU7Ci0gICAgdmVydGljYWxVcGRhdGUu
eCA9IGRlc3RpbmF0aW9uWCA/IDAgOiBjb3B5V2lkdGggLSAxOwotICAgIHZlcnRpY2FsVXBkYXRl
LnkgPSAwOwotICAgIHZlcnRpY2FsVXBkYXRlLncgPSBhYnMoc2Nyb2xsT2Zmc2V0LndpZHRoKCkp
OwotICAgIHZlcnRpY2FsVXBkYXRlLmggPSBzY3JvbGxIZWlnaHQ7Ci0gICAgaWYgKHZlcnRpY2Fs
VXBkYXRlLncgJiYgdmVydGljYWxVcGRhdGUuaCkKLSAgICAgICAgZXdrX3ZpZXdfcmVwYWludF9h
ZGQoc21hcnREYXRhLT5fcHJpdiwgdmVydGljYWxVcGRhdGUueCwgdmVydGljYWxVcGRhdGUueSwg
dmVydGljYWxVcGRhdGUudywgdmVydGljYWxVcGRhdGUuaCk7Ci0KLSAgICBFaW5hX1JlY3Rhbmds
ZSBob3Jpem9udGFsVXBkYXRlOwotICAgIGhvcml6b250YWxVcGRhdGUueCA9IGRlc3RpbmF0aW9u
WDsKLSAgICBob3Jpem9udGFsVXBkYXRlLnkgPSBkZXN0aW5hdGlvblkgPyAwIDogY29weUhlaWdo
dCAtIDE7Ci0gICAgaG9yaXpvbnRhbFVwZGF0ZS53ID0gY29weVdpZHRoOwotICAgIGhvcml6b250
YWxVcGRhdGUuaCA9IGFicyhzY3JvbGxPZmZzZXQuaGVpZ2h0KCkpOwotICAgIGlmIChob3Jpem9u
dGFsVXBkYXRlLncgJiYgaG9yaXpvbnRhbFVwZGF0ZS5oKQotICAgICAgICBld2tfdmlld19yZXBh
aW50X2FkZChzbWFydERhdGEtPl9wcml2LCBob3Jpem9udGFsVXBkYXRlLngsIGhvcml6b250YWxV
cGRhdGUueSwgaG9yaXpvbnRhbFVwZGF0ZS53LCBob3Jpem9udGFsVXBkYXRlLmgpOwotfQotCi1z
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfc2Nyb2xsc19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNtYXJ0RGF0YSkKLXsKLSAgICBFdmFzX0Nvb3JkIGltYWdlV2lkdGgsIGltYWdlSGVp
Z2h0OwotICAgIGNvbnN0IFdURjo6VmVjdG9yPFdlYkNvcmU6OkludFNpemU+JiBzY3JvbGxPZmZz
ZXRzID0gc21hcnREYXRhLT5fcHJpdi0+bV9zY3JvbGxPZmZzZXRzOwotICAgIGNvbnN0IFdURjo6
VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiByZWN0c1RvU2Nyb2xsID0gc21hcnREYXRhLT5fcHJp
di0+bV9yZWN0c1RvU2Nyb2xsOwotCi0gICAgaWYgKCFzY3JvbGxPZmZzZXRzLnNpemUoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZXZhc19vYmplY3RfaW1hZ2Vfc2l6ZV9nZXQoc21hcnREYXRh
LT5iYWNraW5nX3N0b3JlLCAmaW1hZ2VXaWR0aCwgJmltYWdlSGVpZ2h0KTsKLQotICAgIFdlYkNv
cmU6OkludFJlY3QgcmVjdFRvU2Nyb2xsKDAsIDAsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0KTsK
LSAgICBXZWJDb3JlOjpJbnRTaXplIHNjcm9sbE9mZnNldDsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNjcm9sbE9mZnNldHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgcmVjdFRvU2Nyb2xs
LmludGVyc2VjdChyZWN0c1RvU2Nyb2xsW2ldKTsKLSAgICAgICAgc2Nyb2xsT2Zmc2V0ICs9IHNj
cm9sbE9mZnNldHNbaV07Ci0gICAgfQotCi0gICAgaWYgKHNjcm9sbE9mZnNldC5pc1plcm8oKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgdm9pZCogcGl4ZWxzID0gZXZhc19vYmplY3RfaW1hZ2Vf
ZGF0YV9nZXQoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCAxKTsKLSAgICBfZXdrX3ZpZXdfc2Ny
b2xsX3Byb2Nlc3Moc21hcnREYXRhLCBwaXhlbHMsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0LCBz
Y3JvbGxPZmZzZXQsIHJlY3RUb1Njcm9sbCk7Ci0KLSAgICBldmFzX29iamVjdF9pbWFnZV9kYXRh
X3NldChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsIHBpeGVscyk7Ci0KLSAgICByZXR1cm47Ci19
Ci0KLXN0YXRpYyBib29sIF9ld2tfdmlld19zbWFydF9yZXBhaW50c19wcm9jZXNzKEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKLXsKLSAgICBFV0tfVklFV19QUklWX0dFVChzbWFydERh
dGEsIHByaXYpOwotCi0gICAgaWYgKHNtYXJ0RGF0YS0+YW5pbWF0ZWRfem9vbS56b29tLmN1cnJl
bnQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6ZXBzaWxvbigpKSB7Ci0gICAgICAgIEV2
YXNfT2JqZWN0KiBjbGlwID0gZXZhc19vYmplY3RfY2xpcF9nZXQoc21hcnREYXRhLT5iYWNraW5n
X3N0b3JlKTsKLQotICAgICAgICAvLyByZXNldCBlZmZlY3RzIG9mIHpvb21fd2Vha19zZXQoKQot
ICAgICAgICBldmFzX29iamVjdF9pbWFnZV9maWxsX3NldChzbWFydERhdGEtPmJhY2tpbmdfc3Rv
cmUsIDAsIDAsIHNtYXJ0RGF0YS0+dmlldy53LCBzbWFydERhdGEtPnZpZXcuaCk7Ci0gICAgICAg
IGV2YXNfb2JqZWN0X21vdmUoY2xpcCwgc21hcnREYXRhLT52aWV3LngsIHNtYXJ0RGF0YS0+dmll
dy55KTsKLQotICAgICAgICBFdmFzX0Nvb3JkIHdpZHRoID0gc21hcnREYXRhLT52aWV3Lnc7Ci0g
ICAgICAgIEV2YXNfQ29vcmQgaGVpZ2h0ID0gc21hcnREYXRhLT52aWV3Lmg7Ci0KLSAgICAgICAg
RXZhc19Db29yZCBjZW50ZXJXaWR0aCwgY2VudGVySGVpZ2h0OwotICAgICAgICBld2tfZnJhbWVf
Y29udGVudHNfc2l6ZV9nZXQoc21hcnREYXRhLT5tYWluX2ZyYW1lLCAmY2VudGVyV2lkdGgsICZj
ZW50ZXJIZWlnaHQpOwotICAgICAgICBpZiAod2lkdGggPiBjZW50ZXJXaWR0aCkKLSAgICAgICAg
ICAgIHdpZHRoID0gY2VudGVyV2lkdGg7Ci0KLSAgICAgICAgaWYgKGhlaWdodCA+IGNlbnRlckhl
aWdodCkKLSAgICAgICAgICAgIGhlaWdodCA9IGNlbnRlckhlaWdodDsKLQotICAgICAgICBldmFz
X29iamVjdF9yZXNpemUoY2xpcCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgfQotCi0gICAgRXZhc19D
b29yZCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodDsKLSAgICBldmFzX29iamVjdF9pbWFnZV9zaXpl
X2dldChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsICZpbWFnZVdpZHRoLCAmaW1hZ2VIZWlnaHQp
OwotCi0gICAgRWluYV9UaWxlciogdGlsZXIgPSBlaW5hX3RpbGVyX25ldyhpbWFnZVdpZHRoLCBp
bWFnZUhlaWdodCk7Ci0gICAgaWYgKCF0aWxlcikgewotICAgICAgICBFUlIoImNvdWxkIG5vdCBj
cmVhdGUgdGlsZXIgJWR4JWQiLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCk7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBld2tfdmlld19sYXlvdXRfaWZfbmVlZGVkX3JlY3Vy
c2l2ZShwcml2KTsKLQotICAgIHNpemVfdCBjb3VudDsKLSAgICBjb25zdCBFaW5hX1JlY3Rhbmds
ZSogcGFpbnRSZXF1ZXN0ID0gZXdrX3ZpZXdfcmVwYWludHNfcG9wKHByaXYsICZjb3VudCk7Ci0g
ICAgY29uc3QgRWluYV9SZWN0YW5nbGUqIHBhaW50UmVxdWVzdEVuZCA9IHBhaW50UmVxdWVzdCAr
IGNvdW50OwotICAgIGZvciAoOyBwYWludFJlcXVlc3QgPCBwYWludFJlcXVlc3RFbmQ7IHBhaW50
UmVxdWVzdCsrKQotICAgICAgICBlaW5hX3RpbGVyX3JlY3RfYWRkKHRpbGVyLCBwYWludFJlcXVl
c3QpOwotCi0gICAgRWluYV9JdGVyYXRvciogaXRlcmF0b3IgPSBlaW5hX3RpbGVyX2l0ZXJhdG9y
X25ldyh0aWxlcik7Ci0gICAgaWYgKCFpdGVyYXRvcikgewotICAgICAgICBFUlIoImNvdWxkIG5v
dCBnZXQgaXRlcmF0b3IgZm9yIHRpbGVyIik7Ci0gICAgICAgIGVpbmFfdGlsZXJfZnJlZSh0aWxl
cik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSNpZiBVU0UoVElMRURfQkFDS0lO
R19TVE9SRSkKLSAgICBpZiAocHJpdi0+cGFnZS0+bWFpbkZyYW1lKCkudGlsZWRCYWNraW5nU3Rv
cmUoKSkKLSAgICAgICAgcHJpdi0+cGFnZS0+bWFpbkZyYW1lKCkudGlsZWRCYWNraW5nU3RvcmUo
KS0+Y292ZXJXaXRoVGlsZXNJZk5lZWRlZCgpOwotI2VuZGlmCi0KLSAgICBFd2tfUGFpbnRfQ29u
dGV4dCogY29udGV4dCA9IGV3a19wYWludF9jb250ZXh0X2Zyb21faW1hZ2VfbmV3KHNtYXJ0RGF0
YS0+YmFja2luZ19zdG9yZSk7Ci0gICAgZXdrX3BhaW50X2NvbnRleHRfc2F2ZShjb250ZXh0KTsK
LQotICAgIEVpbmFfUmVjdGFuZ2xlKiByZWN0OwotICAgIEVJTkFfSVRFUkFUT1JfRk9SRUFDSChp
dGVyYXRvciwgcmVjdCkgewotICAgICAgICBld2tfdmlld19wYWludChzbWFydERhdGEtPl9wcml2
LCBjb250ZXh0LCByZWN0KTsKLSAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRhdGVf
YWRkKHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgcmVjdC0+eCwgcmVjdC0+eSwgcmVjdC0+dywg
cmVjdC0+aCk7Ci0gICAgfQotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBXZWJDb3JlOjpQ
YWdlKiBwYWdlID0gRVdLUHJpdmF0ZTo6Y29yZVBhZ2Uoc21hcnREYXRhLT5zZWxmKTsKLSAgICBp
ZiAocGFnZSkgewotICAgICAgICBXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyJiBjb250cm9s
bGVyID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpOwotICAgICAgICBpZiAoY29udHJvbGxl
ci5oaWdobGlnaHRlZE5vZGUoKSkKLSAgICAgICAgICAgIGNvbnRyb2xsZXIuZHJhd0hpZ2hsaWdo
dCgqY29udGV4dC0+Z3JhcGhpY0NvbnRleHQpOwotICAgIH0KLSNlbmRpZgotCi0gICAgZXdrX3Bh
aW50X2NvbnRleHRfcmVzdG9yZShjb250ZXh0KTsKLSAgICBld2tfcGFpbnRfY29udGV4dF9mcmVl
KGNvbnRleHQpOwotCi0gICAgZWluYV90aWxlcl9mcmVlKHRpbGVyKTsKLSAgICBlaW5hX2l0ZXJh
dG9yX2ZyZWUoaXRlcmF0b3IpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHN0YXRpYyB2b2lk
IF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7CiAgICAg
RVdLX1ZJRVdfU0RfR0VUKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CkBAIC0xMjU4LDcgKzEwNzYsNyBA
QCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2JqZWN0KiBld2tW
aWV3KQogCiAgICAgaWYgKHNtYXJ0RGF0YS0+Y2hhbmdlZC5wb3NpdGlvbiAmJiAoKHggIT0gc21h
cnREYXRhLT52aWV3LngpIHx8ICh5ICE9IHNtYXJ0RGF0YS0+dmlldy55KSkpIHsKICAgICAgICAg
ZXZhc19vYmplY3RfbW92ZShzbWFydERhdGEtPm1haW5fZnJhbWUsIHgsIHkpOwotICAgICAgICBl
dmFzX29iamVjdF9tb3ZlKHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgeCwgeSk7CisgICAgICAg
IGV2YXNfb2JqZWN0X21vdmUoc21hcnREYXRhLT5pbWFnZSwgeCwgeSk7CiAgICAgICAgIGV2YXNf
b2JqZWN0X21vdmUoc21hcnREYXRhLT5ldmVudHNfcmVjdCwgeCwgeSk7CiAgICAgICAgIHNtYXJ0
RGF0YS0+Y2hhbmdlZC5mcmFtZV9yZWN0ID0gdHJ1ZTsKICAgICAgICAgc21hcnREYXRhLT52aWV3
LnggPSB4OwpAQCAtMTI2NiwxMiArMTA4NCw2IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFy
dF9jYWxjdWxhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgfQogICAgIHNtYXJ0RGF0YS0+
Y2hhbmdlZC5wb3NpdGlvbiA9IGZhbHNlOwogCi0gICAgX2V3a192aWV3X3NtYXJ0X3Njcm9sbHNf
cHJvY2VzcyhzbWFydERhdGEpOwotICAgIF9ld2tfdmlld19zY3JvbGxzX2ZsdXNoKHByaXYpOwot
Ci0gICAgaWYgKCFfZXdrX3ZpZXdfc21hcnRfcmVwYWludHNfcHJvY2VzcyhzbWFydERhdGEpKQot
ICAgICAgICBFUlIoImZhaWxlZCB0byBwcm9jZXNzIHJlcGFpbnRzLiIpOwotCiAgICAgaWYgKHNt
YXJ0RGF0YS0+Y2hhbmdlZC5mcmFtZV9yZWN0KSB7CiAgICAgICAgIHByaXYtPnBhZ2UtPm1haW5G
cmFtZSgpLnZpZXcoKS0+ZnJhbWVSZWN0c0NoYW5nZWQoKTsKICAgICAgICAgc21hcnREYXRhLT5j
aGFuZ2VkLmZyYW1lX3JlY3QgPSBmYWxzZTsKQEAgLTEyODUsMTAgKzEwOTcsNyBAQCBzdGF0aWMg
dm9pZCBfZXdrX3ZpZXdfc21hcnRfc2hvdyhFdmFzX09iamVjdCogZXdrVmlldykKIAogICAgIGlm
IChldmFzX29iamVjdF9jbGlwZWVzX2dldChzbWFydERhdGEtPmJhc2UuY2xpcHBlcikpCiAgICAg
ICAgIGV2YXNfb2JqZWN0X3Nob3coc21hcnREYXRhLT5iYXNlLmNsaXBwZXIpOwotICAgIGV2YXNf
b2JqZWN0X3Nob3coc21hcnREYXRhLT5iYWNraW5nX3N0b3JlKTsKLQotICAgIGlmIChwcml2LT5p
c0NvbXBvc2l0aW5nQWN0aXZlKQotICAgICAgICBldmFzX29iamVjdF9zaG93KHByaXYtPmNvbXBv
c2l0aW5nT2JqZWN0LmdldCgpKTsKKyAgICBldmFzX29iamVjdF9zaG93KHNtYXJ0RGF0YS0+aW1h
Z2UpOwogfQogCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfaGlkZShFdmFzX09iamVjdCog
ZXdrVmlldykKQEAgLTEyOTcsMTAgKzExMDYsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21h
cnRfaGlkZShFdmFzX09iamVjdCogZXdrVmlldykKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc21hcnREYXRhLCBwcml2KTsKIAogICAgIGV2YXNfb2JqZWN0X2hpZGUoc21hcnREYXRh
LT5iYXNlLmNsaXBwZXIpOwotICAgIGV2YXNfb2JqZWN0X2hpZGUoc21hcnREYXRhLT5iYWNraW5n
X3N0b3JlKTsKLQotICAgIGlmIChwcml2LT5pc0NvbXBvc2l0aW5nQWN0aXZlKQotICAgICAgICBl
dmFzX29iamVjdF9oaWRlKHByaXYtPmNvbXBvc2l0aW5nT2JqZWN0LmdldCgpKTsKKyAgICBldmFz
X29iamVjdF9oaWRlKHNtYXJ0RGF0YS0+aW1hZ2UpOwogfQogCiBzdGF0aWMgRWluYV9Cb29sIF9l
d2tfdmlld19zbWFydF9jb250ZW50c19yZXNpemUoRXdrX1ZpZXdfU21hcnRfRGF0YSosIGludCAv
KndpZHRoKi8sIGludCAvKmhlaWdodCovKQpAQCAtMTM0MCw3ICsxMTQ2LDYgQEAgc3RhdGljIHZv
aWQgX2V3a192aWV3X3NtYXJ0X2ZsdXNoKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkK
IHsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKICAg
ICBfZXdrX3ZpZXdfcmVwYWludHNfZmx1c2gocHJpdik7Ci0gICAgX2V3a192aWV3X3Njcm9sbHNf
Zmx1c2gocHJpdik7CiB9CiAKIHN0YXRpYyB2b2lkIF9ld2tfdmlld196b29tX2FuaW1hdGVkX21h
cmtfc3RvcChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCkBAIC0xMzgxLDcgKzExODYs
NyBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF96b29tX3dlYWtfc2V0KEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgZgogICAgIEV2YXNfQ29vcmQgdyA9IHNtYXJ0RGF0
YS0+dmlldy53ICogc2NhbGU7CiAgICAgRXZhc19Db29yZCBoID0gc21hcnREYXRhLT52aWV3Lmgg
KiBzY2FsZTsKICAgICBFdmFzX0Nvb3JkIGRlbHRhWCwgZGVsdGFZLCBjb250ZW50V2lkdGgsIGNv
bnRlbnRIZWlnaHQ7Ci0gICAgRXZhc19PYmplY3QqIGNsaXAgPSBldmFzX29iamVjdF9jbGlwX2dl
dChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUpOworICAgIEV2YXNfT2JqZWN0KiBjbGlwID0gZXZh
c19vYmplY3RfY2xpcF9nZXQoc21hcnREYXRhLT5pbWFnZSk7CiAKICAgICBld2tfZnJhbWVfY29u
dGVudHNfc2l6ZV9nZXQoc21hcnREYXRhLT5tYWluX2ZyYW1lLCAmY29udGVudFdpZHRoLCAmY29u
dGVudEhlaWdodCk7CiAgICAgaWYgKHNtYXJ0RGF0YS0+dmlldy53ID4gMCAmJiBzbWFydERhdGEt
PnZpZXcuaCA+IDApIHsKQEAgLTEzOTIsNyArMTE5Nyw3IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3
a192aWV3X3NtYXJ0X3pvb21fd2Vha19zZXQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRh
LCBmCiAgICAgICAgIGRlbHRhWSA9IDA7CiAgICAgfQogCi0gICAgZXZhc19vYmplY3RfaW1hZ2Vf
ZmlsbF9zZXQoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCBjZW50ZXJYICsgZGVsdGFYLCBjZW50
ZXJZICsgZGVsdGFZLCB3LCBoKTsKKyAgICBldmFzX29iamVjdF9pbWFnZV9maWxsX3NldChzbWFy
dERhdGEtPmltYWdlLCBjZW50ZXJYICsgZGVsdGFYLCBjZW50ZXJZICsgZGVsdGFZLCB3LCBoKTsK
IAogICAgIGlmIChzbWFydERhdGEtPnZpZXcudyA+IDAgJiYgc21hcnREYXRhLT52aWV3LmggPiAw
KSB7CiAgICAgICAgIGRlbHRhWCA9ICgoc21hcnREYXRhLT52aWV3LncgLSB3KSAqIGNlbnRlclgp
IC8gc21hcnREYXRhLT52aWV3Lnc7CkBAIC0xNDE0LDcgKzEyMTksNyBAQCBzdGF0aWMgRWluYV9C
b29sIF9ld2tfdmlld19zbWFydF96b29tX3dlYWtfc2V0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNt
YXJ0RGF0YSwgZgogCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfem9vbV93ZWFrX3Ntb290
aF9zY2FsZV9zZXQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBFaW5hX0Jvb2wgc21v
b3RoX3NjYWxlKQogewotICAgIGV2YXNfb2JqZWN0X2ltYWdlX3Ntb290aF9zY2FsZV9zZXQoc21h
cnREYXRhLT5iYWNraW5nX3N0b3JlLCBzbW9vdGhfc2NhbGUpOworICAgIGV2YXNfb2JqZWN0X2lt
YWdlX3Ntb290aF9zY2FsZV9zZXQoc21hcnREYXRhLT5pbWFnZSwgc21vb3RoX3NjYWxlKTsKIH0K
IAogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfem9vbV9hbmltYXRvcl9jYih2b2lkKiBkYXRh
KQpAQCAtMTY5OCw3ICsxNTAzLDcgQEAgdm9pZCBld2tfdmlld19iZ19jb2xvcl9zZXQoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIGludCByZWQsIGludCBncmVlbiwgaW50IGJsdWUsIGkKICAgICBzbWFy
dERhdGEtPmJnX2NvbG9yLmIgPSBibHVlOwogICAgIHNtYXJ0RGF0YS0+YmdfY29sb3IuYSA9IGFs
cGhhOwogCi0gICAgZXZhc19vYmplY3RfaW1hZ2VfYWxwaGFfc2V0KHNtYXJ0RGF0YS0+YmFja2lu
Z19zdG9yZSwgYWxwaGEgPCAyNTUpOworICAgIGV2YXNfb2JqZWN0X2ltYWdlX2FscGhhX3NldChz
bWFydERhdGEtPmltYWdlLCBhbHBoYSA8IDI1NSk7CiAKICAgICBXZWJDb3JlOjpGcmFtZVZpZXcq
IHZpZXcgPSBzbWFydERhdGEtPl9wcml2LT5wYWdlLT5tYWluRnJhbWUoKS52aWV3KCk7CiAgICAg
aWYgKHZpZXcpIHsKQEAgLTI5MzksMTUgKzI3NDQsNiBAQCB2b2lkIGV3a192aWV3X2xheW91dF9p
Zl9uZWVkZWRfcmVjdXJzaXZlKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdikKICAgICB2aWV3
LT51cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7CiB9CiAKLXZvaWQgZXdr
X3ZpZXdfc2Nyb2xsc19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKLXsK
LSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEpOwotICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOwotCi0gICAgX2V3a192aWV3X3Nt
YXJ0X3Njcm9sbHNfcHJvY2VzcyhzbWFydERhdGEpOwotICAgIF9ld2tfdmlld19zY3JvbGxzX2Zs
dXNoKHByaXYpOwotfQotCiAvKiBpbnRlcm5hbCBtZXRob2RzICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKioKICAqIEBpbnRlcm5hbApAQCAt
Mzc0MywxNSArMzUzOSw3IEBAIHZvaWQgZXdrX3ZpZXdfc2Nyb2xsKEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBkZWx0YSwgY29uc3QKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CiAKLSAgICBwcml2LT5tX3JlY3RzVG9TY3Jv
bGwuYXBwZW5kKHJlY3RUb1Njcm9sbCk7Ci0gICAgcHJpdi0+bV9zY3JvbGxPZmZzZXRzLmFwcGVu
ZChkZWx0YSk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByaXYtPnJlcGFpbnRzLmNv
dW50OyArK2kpIHsKLSAgICAgICAgcHJpdi0+cmVwYWludHMuYXJyYXlbaV0ueCArPSBkZWx0YS53
aWR0aCgpOwotICAgICAgICBwcml2LT5yZXBhaW50cy5hcnJheVtpXS55ICs9IGRlbHRhLmhlaWdo
dCgpOwotICAgIH0KLQotICAgIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNtYXJ0RGF0YSk7Cisg
ICAgZXdrX3ZpZXdfbWFya19mb3Jfc3luYyhld2tWaWV3KTsKIH0KIAogLyoqCkBAIC00NjI2LDc5
ICs0NDE0LDEyIEBAIHZvaWQgZXdrX3ZpZXdfaW5zcGVjdG9yX3ZpZXdfc2V0KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBFdmFzX09iamVjdCogaW5zcGVjdG9yVmllCiAjZW5kaWYKIH0KIAotdm9pZCBf
ZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfY2Iodm9pZCogZGF0YSwgRXZhc19PYmpl
Y3QqKQotewotICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiA9IHN0YXRpY19jYXN0PEV3
a19WaWV3X1ByaXZhdGVfRGF0YSo+KGRhdGEpOwotCi0gICAgaWYgKHByaXYtPmlzQ29tcG9zaXRp
bmdBY3RpdmUpCi0gICAgICAgIHByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5m
bHVzaEFuZFJlbmRlckxheWVycygpOwotfQotCi1ib29sIF9ld2tfdmlld19hY2NlbGVyYXRlZF9j
b21wb3NpdGluZ19jb250ZXh0X2NyZWF0ZV9pZl9uZWVkZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcp
Ci17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZh
bHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBm
YWxzZSk7Ci0KLSAgICBpZiAoIXByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KSB7
Ci0gICAgICAgIHByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0ID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dD4oZXdrVmlldywg
cHJpdi0+Y29tcG9zaXRpbmdPYmplY3QuZ2V0KCkpOwotICAgICAgICBpZiAoIXByaXYtPmFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5pbml0aWFsaXplKCkpIHsKLSAgICAgICAgICAgIHBy
aXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0ID0gbnVsbHB0cjsKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
dm9pZCBfZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfb2JqZWN0X2NyZWF0ZV9pZl9u
ZWVkZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzbWFydERhdGEsIHByaXYpOwotCi0gICAgaWYgKCFwcml2LT5jb21wb3NpdGluZ09iamVjdCkg
ewotICAgICAgICBwcml2LT5jb21wb3NpdGluZ09iamVjdCA9IGFkb3B0UmVmKGV2YXNfb2JqZWN0
X2ltYWdlX2FkZChzbWFydERhdGEtPmJhc2UuZXZhcykpOwotCi0gICAgICAgIGV2YXNfb2JqZWN0
X3Bhc3NfZXZlbnRzX3NldChwcml2LT5jb21wb3NpdGluZ09iamVjdC5nZXQoKSwgdHJ1ZSk7IC8v
IEp1c3QgZm9yIHJlbmRlcmluZywgaWdub3JlIGV2ZW50cy4KLSAgICAgICAgZXZhc19vYmplY3Rf
aW1hZ2VfYWxwaGFfc2V0KHByaXYtPmNvbXBvc2l0aW5nT2JqZWN0LmdldCgpLCB0cnVlKTsKLSAg
ICAgICAgZXZhc19vYmplY3RfaW1hZ2VfY29udGVudF9oaW50X3NldChwcml2LT5jb21wb3NpdGlu
Z09iamVjdC5nZXQoKSwgRVZBU19JTUFHRV9DT05URU5UX0hJTlRfRFlOQU1JQyk7Ci0KLSAgICAg
ICAgLy8gU2V0IHRoZSBwaXhlbCBnZXQgY2FsbGJhY2suCi0gICAgICAgIGV2YXNfb2JqZWN0X2lt
YWdlX3BpeGVsc19nZXRfY2FsbGJhY2tfc2V0KHByaXYtPmNvbXBvc2l0aW5nT2JqZWN0LmdldCgp
LCBfZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfY2IsIHByaXYpOwotCi0gICAgICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X21lbWJlcl9hZGQocHJpdi0+Y29tcG9zaXRpbmdPYmplY3QuZ2V0
KCksIGV3a1ZpZXcpOwotICAgIH0KLQotICAgIGV2YXNfb2JqZWN0X2ltYWdlX3NpemVfc2V0KHBy
aXYtPmNvbXBvc2l0aW5nT2JqZWN0LmdldCgpLCBzbWFydERhdGEtPnZpZXcudywgc21hcnREYXRh
LT52aWV3LmgpOwotICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxfc2V0KHByaXYtPmNvbXBvc2l0
aW5nT2JqZWN0LmdldCgpLCAwLCAwLCBzbWFydERhdGEtPnZpZXcudywgc21hcnREYXRhLT52aWV3
LmgpOwotCi0gICAgZXZhc19vYmplY3RfbW92ZShwcml2LT5jb21wb3NpdGluZ09iamVjdC5nZXQo
KSwgc21hcnREYXRhLT52aWV3LngsIHNtYXJ0RGF0YS0+dmlldy55KTsKLSAgICBldmFzX29iamVj
dF9yZXNpemUocHJpdi0+Y29tcG9zaXRpbmdPYmplY3QuZ2V0KCksIHNtYXJ0RGF0YS0+dmlldy53
LCBzbWFydERhdGEtPnZpZXcuaCk7Ci0gICAgZXZhc19vYmplY3RfaGlkZShwcml2LT5jb21wb3Np
dGluZ09iamVjdC5nZXQoKSk7Ci19Ci0KIHZvaWQgZXdrX3ZpZXdfcm9vdF9ncmFwaGljc19sYXll
cl9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIHJvb3RM
YXllcikKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0
YSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CiAK
LSAgICBib29sIGFjdGl2ZSA9ICEhcm9vdExheWVyOwotICAgIGlmIChwcml2LT5pc0NvbXBvc2l0
aW5nQWN0aXZlID09IGFjdGl2ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcHJpdi0+aXNDb21w
b3NpdGluZ0FjdGl2ZSA9IGFjdGl2ZTsKLQotICAgIGlmIChwcml2LT5pc0NvbXBvc2l0aW5nQWN0
aXZlKSB7Ci0gICAgICAgIF9ld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19vYmplY3Rf
Y3JlYXRlX2lmX25lZWRlZChld2tWaWV3KTsKLSAgICAgICAgaWYgKF9ld2tfdmlld19hY2NlbGVy
YXRlZF9jb21wb3NpdGluZ19jb250ZXh0X2NyZWF0ZV9pZl9uZWVkZWQoZXdrVmlldykpCi0gICAg
ICAgICAgICBldmFzX29iamVjdF9zaG93KHByaXYtPmNvbXBvc2l0aW5nT2JqZWN0LmdldCgpKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgcHJpdi0+aXNDb21wb3NpdGluZ0FjdGl2ZSA9IGZh
bHNlOwotICAgIH0KLQotICAgIGlmICghcHJpdi0+aXNDb21wb3NpdGluZ0FjdGl2ZSkKLSAgICAg
ICAgZXZhc19vYmplY3RfaGlkZShwcml2LT5jb21wb3NpdGluZ09iamVjdC5nZXQoKSk7Ci0KLSAg
ICBpZiAocHJpdi0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCi0gICAgICAgIHByaXYt
PmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5hdHRhY2hSb290R3JhcGhpY3NMYXllcihy
b290TGF5ZXIpOworICAgIHByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5hdHRh
Y2hSb290R3JhcGhpY3NMYXllcihyb290TGF5ZXIpOwogfQogCiB2b2lkIGV3a192aWV3X21hcmtf
Zm9yX3N5bmMoRXZhc19PYmplY3QqIGV3a1ZpZXcpCkBAIC00NzA4LDcgKzQ0MjksNyBAQCB2b2lk
IGV3a192aWV3X21hcmtfZm9yX3N5bmMoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAKICAgICAvLyBN
YXJrIHRoZSBpbWFnZSBhcyAiZGlydHkiIG1lYW5pbmcgaXQgbmVlZHMgYW4gdXBkYXRlIG5leHQg
dGltZSBldmFzIHJlbmRlcnMuCiAgICAgLy8gSXQgd2lsbCBjYWxsIHRoZSBwaXhlbCBnZXQgY2Fs
bGJhY2sgdGhlbi4KLSAgICBldmFzX29iamVjdF9pbWFnZV9waXhlbHNfZGlydHlfc2V0KHByaXYt
PmNvbXBvc2l0aW5nT2JqZWN0LmdldCgpLCB0cnVlKTsKKyAgICBldmFzX29iamVjdF9pbWFnZV9w
aXhlbHNfZGlydHlfc2V0KHNtYXJ0RGF0YS0+aW1hZ2UsIHRydWUpOwogfQogCiB2b2lkIGV3a192
aWV3X2N1cnNvcl9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IFdlYkNvcmU6OkN1cnNv
ciYgY3Vyc29yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAppbmRleCAzZWVkNDczNmU0YWFjNTg3
ZDc2MDM3ODNjODE1YmMzZTk2YTBlNjgyLi40OWIxOGYyYWY5MGQ1ODU0Mjk5OWM3MTFjNzAzNzkx
ODc4OGExNGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaApAQCAtMzcwLDcgKzM3MCw3IEBA
IHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSB7CiAgICAgY29uc3QgRXdrX1ZpZXdfU21hcnRf
Q2xhc3MgKmFwaTsgLyoqPCBSZWZlcmVuY2UgdG8gY2FzdGVkIGNsYXNzIGluc3RhbmNlLiAqLwog
ICAgIEV2YXNfT2JqZWN0ICpzZWxmOyAvKio8IFJlZmVyZW5jZSB0byBvd25lciBvYmplY3QuICov
CiAgICAgRXZhc19PYmplY3QgKm1haW5fZnJhbWU7IC8qKjwgUmVmZXJlbmNlIHRvIG1haW4gZnJh
bWUgb2JqZWN0LiAqLwotICAgIEV2YXNfT2JqZWN0ICpiYWNraW5nX3N0b3JlOyAvKio8IFJlZmVy
ZW5jZSB0byBiYWNraW5nIHN0b3JlLiAqLworICAgIEV2YXNfT2JqZWN0ICppbWFnZTsgLyoqPCBS
ZWZlcmVuY2UgdG8gZXZhc19vYmplY3RfaW1hZ2UgZm9yIGRyYXdpbmcgd2ViIGNvbnRlbnQgKi8K
ICAgICBFdmFzX09iamVjdCAqZXZlbnRzX3JlY3Q7IC8qKjwgVGhlIHJlY3RhbmdsZSB0aGF0IHJl
Y2VpdmVzIG1vdXNlIGV2ZW50cy4gKi8KICAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEgKl9wcml2
OyAvKio8IFNob3VsZCBAYiBuZXZlciBiZSBhY2Nlc3NlZCwgYysrIHN0dWZmLiAqLwogICAgIHN0
cnVjdCB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228359</attachid>
            <date>2014-04-01 20:22:32 -0700</date>
            <delta_ts>2014-04-01 23:29:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130969-20140402122212.patch</filename>
            <type>text/plain</type>
            <size>35768</size>
            <attacher name="Hyowon Kim">hw1008.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2NDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggYTVhNWU2OTk4
NThhY2IzN2UyYzhkNmUzMmM3MWVhYWE2NWJlZjZkMy4uYzA4MDc4MmZhZDllMWU5ZGFkYzBhOWUy
NTYxYzk0ZjI2NWQ3YzIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE0
LTA0LTAxICBIeW93b24gS2ltICA8aHcxMDA4LmtpbUBzYW1zdW5nLmNvbT4KKworICAgICAgICBb
RUZMXSBDb21wb3NpdGUgYWxsIGxheWVycyBpbnRvIG9uZSBldmFzX29iamVjdCB1c2luZyBUZXh0
dXJlTWFwcGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMwOTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIEVGTCBwb3J0IHVzZXMgdHdvIGV2YXNfb2JqZWN0cyB0byByZW5kZXIgdGhlIGVudGly
ZSB3ZWJwYWdlOiBiYWNraW5nX3N0b3JlIGFuZCBjb21wb3NpdGluZ09iamVjdC4KKyAgICAgICAg
YmFja2luZ19zdG9yZSBpcyB1c2VkIHRvIHBhaW50IGEgbm9uLWNvbXBvc2l0ZWQgbGF5ZXIgd2l0
aCBld2sgZnVuY3Rpb25zLAorICAgICAgICB3aGVyZWFzIGNvbXBvc2l0aW5nT2JqZWN0IGlzIHVz
ZWQgdG8gcGFpbnQgb3RoZXIgbGF5ZXJzIHdpdGggVGV4dHVyZU1hcHBlci4KKyAgICAgICAgVGhl
c2UgZXZhc19vYmplY3RzIGFyZSBldmVudHVhbGx5IGNvbXBvc2l0ZWQgaW50byB0aGUgd2luZG93
IGJ1ZmZlciBieSBFdmFzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMgdG8gdXNlIG9ubHkg
b25lIGV2YXNfb2JqZWN0IGJ5IGludGVncmF0aW5nIHRoZXNlIHR3byBldmFzX29iamVjdHMsCisg
ICAgICAgIGFuZCBtYWtlcyB0aGF0IFRleHR1cmVNYXBwZXIgaGFuZGxlcyBhbGwgcmVuZGVyaW5n
IHBhdGhzIGxpa2UgV2ViS2l0Mi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6fkFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0OjpyZXNpemUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQ6OmZsdXNoQW5kUmVuZGVyTGF5ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpmbHVzaFBlbmRpbmdMYXllckNoYW5n
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnBh
aW50VG9HcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQ6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpjb21wb3NpdGVMYXllcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmF0dGFjaFJvb3RH
cmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0Ojppbml0aWFsaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0OjpjYW5Db21wb3NpdGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmNvbXBvc2l0ZUxheWVyc1Rv
Q29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHRFZmwuaDoKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAg
ICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKyAgICAgICAgKF9ld2tfdmlld19hY2NlbGVyYXRl
ZF9jb21wb3NpdGluZ19jYik6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfYWRkKToKKyAgICAg
ICAgKF9ld2tfdmlld19zbWFydF9yZXNpemUpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2Nh
bGN1bGF0ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfc2hvdyk6CisgICAgICAgIChfZXdr
X3ZpZXdfc21hcnRfaGlkZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfZmx1c2gpOgorICAg
ICAgICAoX2V3a192aWV3X3NtYXJ0X3pvb21fd2Vha19zZXQpOgorICAgICAgICAoX2V3a192aWV3
X3NtYXJ0X3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0KToKKyAgICAgICAgKGV3a192aWV3X2Jn
X2NvbG9yX3NldCk6CisgICAgICAgIChld2tfdmlld19zY3JvbGwpOgorICAgICAgICAoZXdrX3Zp
ZXdfcm9vdF9ncmFwaGljc19sYXllcl9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfbWFya19mb3Jf
c3luYyk6CisgICAgICAgIChfZXdrX3ZpZXdfc2Nyb2xsc19mbHVzaCk6IERlbGV0ZWQuCisgICAg
ICAgIChfZXdrX3ZpZXdfc2Nyb2xsX3Byb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAoX2V3a192
aWV3X3NtYXJ0X3Njcm9sbHNfcHJvY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChfZXdrX3ZpZXdf
c21hcnRfcmVwYWludHNfcHJvY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChld2tfdmlld19zY3Jv
bGxzX3Byb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAoX2V3a192aWV3X2FjY2VsZXJhdGVkX2Nv
bXBvc2l0aW5nX2NvbnRleHRfY3JlYXRlX2lmX25lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgIChf
ZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfb2JqZWN0X2NyZWF0ZV9pZl9uZWVkZWQp
OiBEZWxldGVkLgorICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgorCiAyMDE0LTAzLTIzICBIeW93
b24gS2ltICA8aHcxMDA4LmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBNb3ZlIGFsbCBFRkwg
dHlwZWRlZnMgaW50byBFZmxUeXBlZGVmcy5oLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuY3BwIGIv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHRFZmwuY3BwCmluZGV4IGVmZDcyNWJmNjVhMjQwZGQ3ZTg0YTZhZjFmNGY0ODNlNGY0Y2E1
NjcuLjdjMjAzYTMzMWJhYjU4MzQ5OWJmZWUwZWQ4Y2VmMTJjMDAyYzEzNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9BY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHAKQEAgLTIyLDggKzIyLDEwIEBACiAjaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogCiAjaW5jbHVkZSAiQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHRFZmwuaCIKKyNpbmNsdWRlICJDYWlyb1V0aWxpdGllc0VmbC5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
R0wuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyTGF5ZXIuaCIKICNpbmNsdWRlICJld2tfdmll
d19wcml2YXRlLmgiCkBAIC0zNSwzNSArMzcsMzEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogY29tcG9zaXRpbmdPYmplY3QpCiAg
ICAgOiBtX3ZpZXcoZXdrVmlldykKICAgICAsIG1fY29tcG9zaXRpbmdPYmplY3QoY29tcG9zaXRp
bmdPYmplY3QpCisgICAgLCBtX3Jvb3RDb21wb3NpdGluZ0xheWVyKDApCiAgICAgLCBtX3N5bmNU
aW1lcih0aGlzLCAmQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnN5bmNMYXllcnMpCisg
ICAgLCBtX2lzQWNjZWxlcmF0ZWQodHJ1ZSkKIHsKICAgICBBU1NFUlQobV92aWV3KTsKICAgICBB
U1NFUlQobV9jb21wb3NpdGluZ09iamVjdCk7Ci19Ci0KLUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0Ojp+QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQoKQotewotfQogCi1ib29sIEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojppbml0aWFsaXplKCkKLXsKLSAgICBtX2V2YXNH
TCA9IEVmbFVuaXF1ZVB0cjxFdmFzX0dMPihldmFzX2dsX25ldyhldmFzX29iamVjdF9ldmFzX2dl
dChtX3ZpZXcpKSk7Ci0gICAgaWYgKCFtX2V2YXNHTCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIEV2YXMqIGV2YXMgPSBldmFzX29iamVjdF9ldmFzX2dldChtX3ZpZXcpOworICAgIGNvbnN0
IGNoYXIqIGVuZ2luZSA9IGVjb3JlX2V2YXNfZW5naW5lX25hbWVfZ2V0KGVjb3JlX2V2YXNfZWNv
cmVfZXZhc19nZXQoZXZhcykpOworICAgIGlmICghc3RybmNtcChlbmdpbmUsICJvcGVuZ2xfeDEx
Iiwgc3RybGVuKCJvcGVuZ2xfeDExIikpKSB7CisgICAgICAgIG1fZXZhc0dMID0gRWZsVW5pcXVl
UHRyPEV2YXNfR0w+KGV2YXNfZ2xfbmV3KGV2YXNfb2JqZWN0X2V2YXNfZ2V0KG1fdmlldykpKTsK
KyAgICAgICAgaWYgKG1fZXZhc0dMKQorICAgICAgICAgICAgbV9ldmFzR0xDb250ZXh0ID0gRXZh
c0dMQ29udGV4dDo6Y3JlYXRlKG1fZXZhc0dMLmdldCgpKTsKKyAgICB9CiAKLSAgICBtX2V2YXNH
TENvbnRleHQgPSBFdmFzR0xDb250ZXh0OjpjcmVhdGUobV9ldmFzR0wuZ2V0KCkpOwogICAgIGlm
ICghbV9ldmFzR0xDb250ZXh0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBFdmFzX0Nv
b3JkIHdpZHRoID0gMDsKLSAgICBFdmFzX0Nvb3JkIGhlaWdodCA9IDA7Ci0gICAgZXZhc19vYmpl
Y3RfZ2VvbWV0cnlfZ2V0KG1fdmlldywgMCwgMCwgJndpZHRoLCAmaGVpZ2h0KTsKKyAgICAgICAg
bV9pc0FjY2VsZXJhdGVkID0gZmFsc2U7CiAKLSAgICBJbnRTaXplIHdlYlZpZXdTaXplKHdpZHRo
LCBoZWlnaHQpOwotICAgIGlmICh3ZWJWaWV3U2l6ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBtX3Jvb3RMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZSgwLCAwKTsK
KyAgICBtX3Jvb3RMYXllci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKKyAgICBtX3Jvb3RMYXll
ci0+c2V0U2l6ZShJbnRTaXplKDEsIDEpKTsKK30KIAotICAgIHJldHVybiByZXNpemUod2ViVmll
d1NpemUpOworQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6On5BY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dCgpCit7CiB9CiAKIHZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQ6OnN5bmNMYXllcnMoVGltZXI8QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+KikKQEAg
LTczLDYgKzcxLDEzIEBAIHZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnN5bmNM
YXllcnMoVGltZXI8QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRlCiAKIGJvb2wgQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnJlc2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogeworICAg
IGlmIChtX3ZpZXdTaXplID09IHNpemUpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIG1fdmll
d1NpemUgPSBzaXplOworCisgICAgaWYgKCFtX2lzQWNjZWxlcmF0ZWQpCisgICAgICAgIHJldHVy
biB0cnVlOworCiAgICAgc3RhdGljIEV2YXNfR0xfQ29uZmlnIGV2YXNHTENvbmZpZyA9IHsKICAg
ICAgICAgRVZBU19HTF9SR0JBXzg4ODgsCiAgICAgICAgIEVWQVNfR0xfREVQVEhfQklUXzgsCkBA
IC04OCw4MyArOTMsOTggQEAgYm9vbCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6cmVz
aXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgRXZhc19OYXRpdmVfU3VyZmFjZSBuYXRpdmVT
dXJmYWNlOwogICAgIGV2YXNfZ2xfbmF0aXZlX3N1cmZhY2VfZ2V0KG1fZXZhc0dMLmdldCgpLCBt
X2V2YXNHTFN1cmZhY2UtPnN1cmZhY2UoKSwgJm5hdGl2ZVN1cmZhY2UpOwogICAgIGV2YXNfb2Jq
ZWN0X2ltYWdlX25hdGl2ZV9zdXJmYWNlX3NldChtX2NvbXBvc2l0aW5nT2JqZWN0LCAmbmF0aXZl
U3VyZmFjZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19CiAKLWJvb2wgQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQ6OmNhbkNvbXBvc2l0ZSgpCi17Ci0gICAgcmV0dXJuIG1fcm9vdEdyYXBoaWNz
TGF5ZXIgJiYgbV90ZXh0dXJlTWFwcGVyOworICAgIGlmICghZXZhc19nbF9tYWtlX2N1cnJlbnQo
bV9ldmFzR0wuZ2V0KCksIG1fZXZhc0dMU3VyZmFjZS0+c3VyZmFjZSgpLCBtX2V2YXNHTENvbnRl
eHQtPmNvbnRleHQoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGV2YXNfZ2xfYXBp
X2dldChtX2V2YXNHTC5nZXQoKSktPmdsVmlld3BvcnQoMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXpl
LmhlaWdodCgpKTsKKyAgICBldmFzX2dsX2FwaV9nZXQobV9ldmFzR0wuZ2V0KCkpLT5nbENsZWFy
Q29sb3IoMSwgMSwgMSwgMSk7CisgICAgZXZhc19nbF9hcGlfZ2V0KG1fZXZhc0dMLmdldCgpKS0+
Z2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9p
ZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6Zmx1c2hBbmRSZW5kZXJMYXllcnMoKQog
ewotICAgIGlmICghY2FuQ29tcG9zaXRlKCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIE1haW5G
cmFtZSYgZnJhbWUgPSBFV0tQcml2YXRlOjpjb3JlUGFnZShtX3ZpZXcpLT5tYWluRnJhbWUoKTsK
ICAgICBpZiAoIWZyYW1lLmNvbnRlbnRSZW5kZXJlcigpIHx8ICFmcmFtZS52aWV3KCkpCiAgICAg
ICAgIHJldHVybjsKICAgICBmcmFtZS52aWV3KCktPnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVk
ZWRSZWN1cnNpdmUoKTsKIAotICAgIGlmICghY2FuQ29tcG9zaXRlKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGlmICghZXZhc19nbF9tYWtlX2N1cnJlbnQobV9ldmFzR0wuZ2V0KCksIG1fZXZh
c0dMU3VyZmFjZS0+c3VyZmFjZSgpLCBtX2V2YXNHTENvbnRleHQtPmNvbnRleHQoKSkpCi0gICAg
ICAgIHJldHVybjsKLQogICAgIGlmICghZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dCgpOwotCi0gICAgaWYg
KHRvVGV4dHVyZU1hcHBlckxheWVyKG1fcm9vdEdyYXBoaWNzTGF5ZXIuZ2V0KCkpLT5kZXNjZW5k
YW50c09yU2VsZkhhdmVSdW5uaW5nQW5pbWF0aW9ucygpICYmICFtX3N5bmNUaW1lci5pc0FjdGl2
ZSgpKQotICAgICAgICBtX3N5bmNUaW1lci5zdGFydE9uZVNob3QoMSAvIGNvbXBvc2l0aW5nRnJh
bWVSYXRlKTsKKyAgICBpZiAobV9pc0FjY2VsZXJhdGVkKQorICAgICAgICBwYWludFRvQ3VycmVu
dEdMQ29udGV4dCgpOworICAgIGVsc2UKKyAgICAgICAgcGFpbnRUb0dyYXBoaWNzQ29udGV4dCgp
OwogfQogCiBib29sIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpmbHVzaFBlbmRpbmdM
YXllckNoYW5nZXMoKQogewotICAgIG1fcm9vdEdyYXBoaWNzTGF5ZXItPmZsdXNoQ29tcG9zaXRp
bmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKKyAgICBtX3Jvb3RMYXllci0+Zmx1c2hDb21wb3Np
dGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOwogICAgIHJldHVybiBFV0tQcml2YXRlOjpjb3Jl
UGFnZShtX3ZpZXcpLT5tYWluRnJhbWUoKS52aWV3KCktPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUlu
Y2x1ZGluZ1N1YmZyYW1lcygpOwogfQogCi12b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0Ojpjb21wb3NpdGVMYXllcnNUb0NvbnRleHQoKQordm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dDo6cGFpbnRUb0dyYXBoaWNzQ29udGV4dCgpCiB7Ci0gICAgRXZhc19Db29yZCB3
aWR0aCA9IDA7Ci0gICAgRXZhc19Db29yZCBoZWlnaHQgPSAwOwotICAgIGV2YXNfb2JqZWN0X2dl
b21ldHJ5X2dldChtX3ZpZXcsIDAsIDAsICZ3aWR0aCwgJmhlaWdodCk7CisgICAgaWYgKCFtX3Rl
eHR1cmVNYXBwZXIpCisgICAgICAgIG1fdGV4dHVyZU1hcHBlciA9IFRleHR1cmVNYXBwZXI6OmNy
ZWF0ZShUZXh0dXJlTWFwcGVyOjpTb2Z0d2FyZU1vZGUpOworCisgICAgUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4gc3VyZmFjZSA9IGNyZWF0ZVN1cmZhY2VGb3JJbWFnZShtX2NvbXBvc2l0aW5nT2Jq
ZWN0KTsKKyAgICBpZiAoIXN1cmZhY2UpCisgICAgICAgIHJldHVybjsKKworICAgIFBsYXRmb3Jt
Q29udGV4dENhaXJvIHBsYXRmb3JtQ29udGV4dChjYWlyb19jcmVhdGUoc3VyZmFjZS5nZXQoKSkp
OworICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KCZwbGF0Zm9ybUNvbnRleHQpOworICAgIG1f
dGV4dHVyZU1hcHBlci0+c2V0R3JhcGhpY3NDb250ZXh0KCZjb250ZXh0KTsKKworICAgIGNvbXBv
c2l0ZUxheWVycygpOworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpw
YWludFRvQ3VycmVudEdMQ29udGV4dCgpCit7CisgICAgaWYgKCFtX3RleHR1cmVNYXBwZXIpIHsK
KyAgICAgICAgbV90ZXh0dXJlTWFwcGVyID0gVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKFRleHR1cmVN
YXBwZXI6Ok9wZW5HTE1vZGUpOworICAgICAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wq
PihtX3RleHR1cmVNYXBwZXIuZ2V0KCkpLT5zZXRFbmFibGVFZGdlRGlzdGFuY2VBbnRpYWxpYXNp
bmcodHJ1ZSk7CisgICAgfQorCisgICAgaWYgKCFldmFzX2dsX21ha2VfY3VycmVudChtX2V2YXNH
TC5nZXQoKSwgbV9ldmFzR0xTdXJmYWNlLT5zdXJmYWNlKCksIG1fZXZhc0dMQ29udGV4dC0+Y29u
dGV4dCgpKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgZXZhc19nbF9hcGlfZ2V0KG1fZXZhc0dM
LmdldCgpKS0+Z2xWaWV3cG9ydCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBldmFzX2dsX2Fw
aV9nZXQobV9ldmFzR0wuZ2V0KCkpLT5nbFZpZXdwb3J0KDAsIDAsIG1fdmlld1NpemUud2lkdGgo
KSwgbV92aWV3U2l6ZS5oZWlnaHQoKSk7CiAgICAgZXZhc19nbF9hcGlfZ2V0KG1fZXZhc0dMLmdl
dCgpKS0+Z2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKIAorICAgIGNvbXBvc2l0ZUxheWVy
cygpOworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpjb21wb3NpdGVM
YXllcnMoKQoreworICAgIFRleHR1cmVNYXBwZXJMYXllciogY3VycmVudFJvb3RMYXllciA9IHRv
VGV4dHVyZU1hcHBlckxheWVyKG1fcm9vdExheWVyLmdldCgpKTsKKyAgICBpZiAoIWN1cnJlbnRS
b290TGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGN1cnJlbnRSb290TGF5ZXItPnNldFRl
eHR1cmVNYXBwZXIobV90ZXh0dXJlTWFwcGVyLmdldCgpKTsKKyAgICBjdXJyZW50Um9vdExheWVy
LT5hcHBseUFuaW1hdGlvbnNSZWN1cnNpdmVseSgpOworCiAgICAgbV90ZXh0dXJlTWFwcGVyLT5i
ZWdpblBhaW50aW5nKCk7Ci0gICAgbV90ZXh0dXJlTWFwcGVyLT5iZWdpbkNsaXAoVHJhbnNmb3Jt
YXRpb25NYXRyaXgoKSwgRmxvYXRSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpKTsKLSAgICB0b1Rl
eHR1cmVNYXBwZXJMYXllcihtX3Jvb3RHcmFwaGljc0xheWVyLmdldCgpKS0+cGFpbnQoKTsKKyAg
ICBtX3RleHR1cmVNYXBwZXItPmJlZ2luQ2xpcChUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBGbG9h
dFJlY3QoRmxvYXRQb2ludCgpLCBtX3ZpZXdTaXplKSk7CisgICAgY3VycmVudFJvb3RMYXllci0+
cGFpbnQoKTsKICAgICBtX2Zwc0NvdW50ZXIudXBkYXRlRlBTQW5kRGlzcGxheShtX3RleHR1cmVN
YXBwZXIuZ2V0KCkpOwogICAgIG1fdGV4dHVyZU1hcHBlci0+ZW5kQ2xpcCgpOwogICAgIG1fdGV4
dHVyZU1hcHBlci0+ZW5kUGFpbnRpbmcoKTsKKworICAgIGlmIChjdXJyZW50Um9vdExheWVyLT5k
ZXNjZW5kYW50c09yU2VsZkhhdmVSdW5uaW5nQW5pbWF0aW9ucygpICYmICFtX3N5bmNUaW1lci5p
c0FjdGl2ZSgpKQorICAgICAgICBtX3N5bmNUaW1lci5zdGFydE9uZVNob3QoMSAvIGNvbXBvc2l0
aW5nRnJhbWVSYXRlKTsKIH0KIAogdm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6
YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllciogcm9vdExheWVyKQogewotICAg
IGlmICghcm9vdExheWVyKSB7Ci0gICAgICAgIG1fcm9vdEdyYXBoaWNzTGF5ZXIgPSBudWxscHRy
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFtX3RleHR1cmVNYXBwZXIpIHsK
LSAgICAgICAgZXZhc19nbF9tYWtlX2N1cnJlbnQobV9ldmFzR0wuZ2V0KCksIG1fZXZhc0dMU3Vy
ZmFjZS0+c3VyZmFjZSgpLCBtX2V2YXNHTENvbnRleHQtPmNvbnRleHQoKSk7Ci0gICAgICAgIG1f
dGV4dHVyZU1hcHBlciA9IFRleHR1cmVNYXBwZXJHTDo6Y3JlYXRlKCk7Ci0gICAgfQotCi0gICAg
bV9yb290R3JhcGhpY3NMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZSgwLCAwKTsKLSAgICBt
X3Jvb3RHcmFwaGljc0xheWVyLT5hZGRDaGlsZChyb290TGF5ZXIpOwotICAgIG1fcm9vdEdyYXBo
aWNzTGF5ZXItPnNldERyYXdzQ29udGVudChmYWxzZSk7Ci0gICAgbV9yb290R3JhcGhpY3NMYXll
ci0+c2V0TWFza3NUb0JvdW5kcyhmYWxzZSk7Ci0gICAgbV9yb290R3JhcGhpY3NMYXllci0+c2V0
U2l6ZShJbnRTaXplKDEsIDEpKTsKLQotICAgIHRvVGV4dHVyZU1hcHBlckxheWVyKG1fcm9vdEdy
YXBoaWNzTGF5ZXIuZ2V0KCkpLT5zZXRUZXh0dXJlTWFwcGVyKG1fdGV4dHVyZU1hcHBlci5nZXQo
KSk7CisgICAgaWYgKG1fcm9vdENvbXBvc2l0aW5nTGF5ZXIpCisgICAgICAgIG1fcm9vdENvbXBv
c2l0aW5nTGF5ZXItPnJlbW92ZUZyb21QYXJlbnQoKTsKIAotICAgIG1fcm9vdEdyYXBoaWNzTGF5
ZXItPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKKyAgICBtX3Jvb3RD
b21wb3NpdGluZ0xheWVyID0gcm9vdExheWVyOworICAgIGlmIChtX3Jvb3RDb21wb3NpdGluZ0xh
eWVyKQorICAgICAgICBtX3Jvb3RMYXllci0+YWRkQ2hpbGRBdEluZGV4KG1fcm9vdENvbXBvc2l0
aW5nTGF5ZXIsIDApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHRFZmwuaAppbmRleCA0ODNjODlmOGI2Mjc0NWFhMmVjMTA1M2Y1ZmQ1
OGE1MDcyMmJiNDllLi4xNDQ4Mjk2MTJjNzI1N2I0MjAwMDlkMTcwYjg0OGE4YWRhM2RhNGE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0RWZsLmgKQEAgLTQyLDI1ICs0MiwyNCBA
QCBwdWJsaWM6CiAgICAgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIEV2YXNfT2JqZWN0KiBjb21wb3NpdGluZ09iamVjdCk7CiAgICAgfkFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0KCk7CiAKLSAgICBib29sIGluaXRpYWxpemUoKTsKLQogICAg
IGJvb2wgcmVzaXplKGNvbnN0IEludFNpemUmKTsKICAgICB2b2lkIGF0dGFjaFJvb3RHcmFwaGlj
c0xheWVyKEdyYXBoaWNzTGF5ZXIqIHJvb3RMYXllcik7Ci0KICAgICB2b2lkIGZsdXNoQW5kUmVu
ZGVyTGF5ZXJzKCk7Ci0gICAgYm9vbCBmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKTsKLSAgICB2
b2lkIGNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dCgpOwogCi0gICAgYm9vbCBjYW5Db21wb3NpdGUo
KTsKK3ByaXZhdGU6CisgICAgdm9pZCBwYWludFRvR3JhcGhpY3NDb250ZXh0KCk7CisgICAgdm9p
ZCBwYWludFRvQ3VycmVudEdMQ29udGV4dCgpOworICAgIHZvaWQgY29tcG9zaXRlTGF5ZXJzKCk7
CiAKKyAgICBib29sIGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpOwogICAgIHZvaWQgc3luY0xh
eWVycyhUaW1lcjxBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dD4qKTsKIAotcHJpdmF0ZToK
ICAgICBFdmFzX09iamVjdCogbV92aWV3OwogICAgIEV2YXNfT2JqZWN0KiBtX2NvbXBvc2l0aW5n
T2JqZWN0OwogCiAgICAgT3duUHRyPFRleHR1cmVNYXBwZXI+IG1fdGV4dHVyZU1hcHBlcjsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NMYXllcj4gbV9yb290R3JhcGhpY3NMYXllcjsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NMYXllcj4gbV9yb290TGF5ZXI7CisgICAgR3JhcGhp
Y3NMYXllciogbV9yb290Q29tcG9zaXRpbmdMYXllcjsKICAgICBUaW1lcjxBY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dD4gbV9zeW5jVGltZXI7CiAKICAgICBFZmxVbmlxdWVQdHI8RXZhc19H
TD4gbV9ldmFzR0w7CkBAIC02OCw2ICs2Nyw5IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEV2YXNHTFN1cmZhY2U+IG1fZXZhc0dMU3VyZmFjZTsKIAogICAgIFRleHR1cmVNYXBwZXJG
UFNDb3VudGVyIG1fZnBzQ291bnRlcjsKKworICAgIEludFNpemUgbV92aWV3U2l6ZTsKKyAgICBi
b29sIG1faXNBY2NlbGVyYXRlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXcuY3BwCmluZGV4IDU3NjU0NTg1NmMxY2M3YjEyNGQ5MzJmNjQwNTEy
ZmUwYzRhZTNlNjcuLjNiMDA3NTliNjJmZWM1ZTA2ODc1ZWM1NzI4ODRhMTk5MjFkNzI5YzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApAQCAtMjU1LDggKzI1NSw2IEBAIHN0cnVjdCBf
RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyB2
aWV3cG9ydEFyZ3VtZW50czsKICAgICBFd2tfSGlzdG9yeSogaGlzdG9yeTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+IGFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0OwotICAgIGJvb2wgaXNDb21wb3NpdGluZ0FjdGl2ZTsKLSAg
ICBSZWZQdHI8RXZhc19PYmplY3Q+IGNvbXBvc2l0aW5nT2JqZWN0OwogI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQogICAgIFdlYkNvcmU6OkNvbG9yQ2hvb3NlckNsaWVudCogY29sb3JDaG9v
c2VyQ2xpZW50OwogI2VuZGlmCkBAIC0yNzIsOCArMjcwLDYgQEAgc3RydWN0IF9Fd2tfVmlld19Q
cml2YXRlX0RhdGEgewogICAgICAgICBzaXplX3QgY291bnQ7CiAgICAgICAgIHNpemVfdCBhbGxv
Y2F0ZWQ7CiAgICAgfSByZXBhaW50czsKLSAgICBXVEY6OlZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0
PiBtX3JlY3RzVG9TY3JvbGw7Ci0gICAgV1RGOjpWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4gbV9z
Y3JvbGxPZmZzZXRzOwogICAgIHVuc2lnbmVkIGludCBpbWg7IC8qKjwgaW5wdXQgbWV0aG9kIGhp
bnRzICovCiAgICAgc3RydWN0IHsKICAgICAgICAgYm9vbCB2aWV3Q2xlYXJlZCA6IDE7CkBAIC00
NzIsMTIgKzQ2OCw2IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19yZXBhaW50c19mbHVzaChFd2tf
Vmlld19Qcml2YXRlX0RhdGEqIHByaXYpCiAgICAgX2V3a192aWV3X3JlcGFpbnRzX3Jlc2l6ZShw
cml2LCBld2tWaWV3UmVwYWludHNTaXplTWF4aW11bUZyZWUpOwogfQogCi1zdGF0aWMgdm9pZCBf
ZXdrX3ZpZXdfc2Nyb2xsc19mbHVzaChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYpCi17Ci0g
ICAgcHJpdi0+bV9zY3JvbGxPZmZzZXRzLmNsZWFyKCk7Ci0gICAgcHJpdi0+bV9yZWN0c1RvU2Ny
b2xsLmNsZWFyKCk7Ci19Ci0KIC8vIERlZmF1bHQgRXZlbnQgSGFuZGxpbmcgLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogc3RhdGljIEVpbmFfQm9vbCBfZXdr
X3ZpZXdfc21hcnRfZm9jdXNfaW4oRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogewpA
QCAtNzQ3LDYgKzczNyw3IEBAIHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmll
d19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiAjZW5kaWYKICAgICBw
YWdlU2V0dGluZ3Muc2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWQodHJ1ZSk7CiAg
ICAgcGFnZVNldHRpbmdzLnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKHRydWUpOwor
ICAgIHBhZ2VTZXR0aW5ncy5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKICAgICBjaGFy
KiBkZWJ1Z1Zpc3VhbHNFbnZpcm9ubWVudCA9IGdldGVudigiV0VCS0lUX1NIT1dfQ09NUE9TSVRJ
TkdfREVCVUdfVklTVUFMUyIpOwogICAgIGJvb2wgc2hvd0RlYnVnVmlzdWFscyA9IGRlYnVnVmlz
dWFsc0Vudmlyb25tZW50ICYmICFzdHJjbXAoZGVidWdWaXN1YWxzRW52aXJvbm1lbnQsICIxIik7
CiAgICAgcGFnZVNldHRpbmdzLnNldFNob3dEZWJ1Z0JvcmRlcnMoc2hvd0RlYnVnVmlzdWFscyk7
CkBAIC04MzQsOCArODI1LDYgQEAgc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192
aWV3X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKICAgICBwcml2LT5j
b250ZXh0TWVudSA9IDA7CiAjZW5kaWYKIAotICAgIHByaXYtPmlzQ29tcG9zaXRpbmdBY3RpdmUg
PSBmYWxzZTsKLQogICAgIHJldHVybiBwcml2OwogfQogCkBAIC04NzgsNiArODY3LDExIEBAIHN0
YXRpYyB2b2lkIF9ld2tfdmlld19wcml2X2RlbChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYp
CiAgICAgZGVsZXRlIHByaXY7CiB9CiAKK3ZvaWQgX2V3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBv
c2l0aW5nX2NiKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KikKK3sKKyAgICBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCo+KGRhdGEpLT5mbHVzaEFuZFJl
bmRlckxheWVycygpOworfQorCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXNf
T2JqZWN0KiBld2tWaWV3KQogewogICAgIGNvbnN0IEV2YXNfU21hcnQqIHNtYXJ0ID0gZXZhc19v
YmplY3Rfc21hcnRfc21hcnRfZ2V0KGV3a1ZpZXcpOwpAQCAtOTEwLDIyICs5MDQsMjMgQEAgc3Rh
dGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2FkZChFdmFzX09iamVjdCogZXdrVmlldykKIAogICAg
IEVXS19WSUVXX1BSSVZfR0VUKHNtYXJ0RGF0YSwgcHJpdik7CiAKLSAgICBzbWFydERhdGEtPmJh
Y2tpbmdfc3RvcmUgPSBldmFzX29iamVjdF9pbWFnZV9hZGQoc21hcnREYXRhLT5iYXNlLmV2YXMp
OwotICAgIGlmIChFSU5BX1VOTElLRUxZKCFzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUpKSB7Cisg
ICAgc21hcnREYXRhLT5pbWFnZSA9IGV2YXNfb2JqZWN0X2ltYWdlX2FkZChzbWFydERhdGEtPmJh
c2UuZXZhcyk7CisgICAgaWYgKEVJTkFfVU5MSUtFTFkoIXNtYXJ0RGF0YS0+aW1hZ2UpKSB7CiAg
ICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0ZSBiYWNraW5nIHN0b3JlIG9iamVjdC4iKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnN0IEVjb3JlX0V2YXMqIGVjb3JlRXZhcyA9
IGVjb3JlX2V2YXNfZWNvcmVfZXZhc19nZXQoc21hcnREYXRhLT5iYXNlLmV2YXMpOwotICAgIGNv
bnN0IGNoYXIqIGVuZ2luZSA9IGVjb3JlX2V2YXNfZW5naW5lX25hbWVfZ2V0KGVjb3JlRXZhcyk7
Ci0gICAgaWYgKCFzdHJuY21wKGVuZ2luZSwgIm9wZW5nbF94MTEiLCBzdHJsZW4oIm9wZW5nbF94
MTEiKSkpCi0gICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2NvbnRlbnRfaGludF9zZXQoc21hcnRE
YXRhLT5iYWNraW5nX3N0b3JlLCBFVkFTX0lNQUdFX0NPTlRFTlRfSElOVF9EWU5BTUlDKTsKKyAg
ICBldmFzX29iamVjdF9pbWFnZV9hbHBoYV9zZXQoc21hcnREYXRhLT5pbWFnZSwgZmFsc2UpOwor
ICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxlZF9zZXQoc21hcnREYXRhLT5pbWFnZSwgdHJ1ZSk7
CisgICAgZXZhc19vYmplY3RfaW1hZ2Vfc21vb3RoX3NjYWxlX3NldChzbWFydERhdGEtPmltYWdl
LCBzbWFydERhdGEtPnpvb21fd2Vha19zbW9vdGhfc2NhbGUpOworICAgIGV2YXNfb2JqZWN0X3Bh
c3NfZXZlbnRzX3NldChzbWFydERhdGEtPmltYWdlLCB0cnVlKTsKKyAgICBldmFzX29iamVjdF9z
bWFydF9tZW1iZXJfYWRkKHNtYXJ0RGF0YS0+aW1hZ2UsIGV3a1ZpZXcpOworICAgIGV2YXNfb2Jq
ZWN0X3Nob3coc21hcnREYXRhLT5pbWFnZSk7CiAKLSAgICBldmFzX29iamVjdF9pbWFnZV9hbHBo
YV9zZXQoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCBmYWxzZSk7Ci0gICAgZXZhc19vYmplY3Rf
aW1hZ2Vfc21vb3RoX3NjYWxlX3NldChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsIHNtYXJ0RGF0
YS0+em9vbV93ZWFrX3Ntb290aF9zY2FsZSk7Ci0gICAgZXZhc19vYmplY3RfcGFzc19ldmVudHNf
c2V0KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgdHJ1ZSk7Ci0gICAgZXZhc19vYmplY3Rfc21h
cnRfbWVtYmVyX2FkZChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsIGV3a1ZpZXcpOwotICAgIGV2
YXNfb2JqZWN0X3Nob3coc21hcnREYXRhLT5iYWNraW5nX3N0b3JlKTsKKyAgICBwcml2LT5hY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+KGV3a1ZpZXcsIHNtYXJ0RGF0YS0+aW1hZ2UpOwor
CisgICAgLy8gU2V0IHRoZSBwaXhlbCBnZXQgY2FsbGJhY2suCisgICAgZXZhc19vYmplY3RfaW1h
Z2VfcGl4ZWxzX2dldF9jYWxsYmFja19zZXQoc21hcnREYXRhLT5pbWFnZSwgX2V3a192aWV3X2Fj
Y2VsZXJhdGVkX2NvbXBvc2l0aW5nX2NiLCBwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dC5nZXQoKSk7CiAKICAgICBzbWFydERhdGEtPmV2ZW50c19yZWN0ID0gZXZhc19vYmplY3Rf
cmVjdGFuZ2xlX2FkZChzbWFydERhdGEtPmJhc2UuZXZhcyk7CiAgICAgZXZhc19vYmplY3RfY29s
b3Jfc2V0KHNtYXJ0RGF0YS0+ZXZlbnRzX3JlY3QsIDAsIDAsIDAsIDApOwpAQCAtOTgxLDM0ICs5
NzYsMTQgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZShFdmFzX09iamVjdCog
ZXdrVmlldywgRXZhc19Db29yZCB3aWR0aCwgRXZhc18KICAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKIAogICAgIC8vIHRoZXNlIHNob3VsZCBiZSBxdWV1
ZWQgYW5kIHByb2Nlc3NlZCBpbiBjYWxjdWxhdGUgYXMgd2VsbCEKLSAgICBldmFzX29iamVjdF9y
ZXNpemUoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCB3aWR0aCwgaGVpZ2h0KTsKLSAgICBldmFz
X29iamVjdF9pbWFnZV9zaXplX3NldChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsIHdpZHRoLCBo
ZWlnaHQpOwotCi0gICAgaWYgKHByaXYtPmNvbXBvc2l0aW5nT2JqZWN0KSB7Ci0gICAgICAgIGV2
YXNfb2JqZWN0X3Jlc2l6ZShwcml2LT5jb21wb3NpdGluZ09iamVjdC5nZXQoKSwgd2lkdGgsIGhl
aWdodCk7Ci0gICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX3NpemVfc2V0KHByaXYtPmNvbXBvc2l0
aW5nT2JqZWN0LmdldCgpLCB3aWR0aCwgaGVpZ2h0KTsKLSAgICAgICAgZXZhc19vYmplY3RfaW1h
Z2VfZmlsbF9zZXQocHJpdi0+Y29tcG9zaXRpbmdPYmplY3QuZ2V0KCksIDAsIDAsIHdpZHRoLCBo
ZWlnaHQpOworICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShzbWFydERhdGEtPmltYWdlLCB3aWR0aCwg
aGVpZ2h0KTsKKyAgICBldmFzX29iamVjdF9pbWFnZV9zaXplX3NldChzbWFydERhdGEtPmltYWdl
LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBldmFzX29iamVjdF9pbWFnZV9maWxsX3NldChzbWFydERh
dGEtPmltYWdlLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKIAotICAgICAgICBpZiAocHJpdi0+YWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCi0gICAgICAgICAgICBwcml2LT5hY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dC0+cmVzaXplKFdlYkNvcmU6OkludFNpemUod2lkdGgsIGhlaWdo
dCkpOwotICAgIH0KKyAgICBwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+cmVz
aXplKFdlYkNvcmU6OkludFNpemUod2lkdGgsIGhlaWdodCkpOwogCiAgICAgc21hcnREYXRhLT5j
aGFuZ2VkLnNpemUgPSB0cnVlOwogICAgIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNtYXJ0RGF0
YSk7Ci0KLSAgICBpZiAoc21hcnREYXRhLT5hbmltYXRlZF96b29tLnpvb20uY3VycmVudCA8IHN0
ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjplcHNpbG9uKCkpIHsKLSAgICAgICAgRXZhc19PYmpl
Y3QqIGNsaXAgPSBldmFzX29iamVjdF9jbGlwX2dldChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUp
OwotICAgICAgICBFdmFzX0Nvb3JkIHgsIHksIGNvbnRlbnRXaWR0aCwgY29udGVudEhlaWdodDsK
LSAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZmlsbF9zZXQoc21hcnREYXRhLT5iYWNraW5nX3N0
b3JlLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKLSAgICAgICAgZXZhc19vYmplY3RfZ2VvbWV0cnlf
Z2V0KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgJngsICZ5LCAwLCAwKTsKLSAgICAgICAgZXZh
c19vYmplY3RfbW92ZShjbGlwLCB4LCB5KTsKLSAgICAgICAgZXdrX2ZyYW1lX2NvbnRlbnRzX3Np
emVfZ2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgJmNvbnRlbnRXaWR0aCwgJmNvbnRlbnRIZWln
aHQpOwotICAgICAgICBpZiAod2lkdGggPiBjb250ZW50V2lkdGgpCi0gICAgICAgICAgICB3aWR0
aCA9IGNvbnRlbnRXaWR0aDsKLSAgICAgICAgaWYgKGhlaWdodCA+IGNvbnRlbnRIZWlnaHQpCi0g
ICAgICAgICAgICBoZWlnaHQgPSBjb250ZW50SGVpZ2h0OwotICAgICAgICBldmFzX29iamVjdF9y
ZXNpemUoY2xpcCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgfQogfQogCiBzdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfc21hcnRfbW92ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19Db29yZCAvKngqLywg
RXZhc19Db29yZCAvKnkqLykKQEAgLTEwNTMsMTczICsxMDI4LDYgQEAgc3RhdGljIGlubGluZSB2
b2lkIF9ld2tfdmlld19zY3JlZW5fbW92ZSh1aW50MzJfdCogaW1hZ2UsIHNpemVfdCBkZXN0aW5h
dGlvblgsIHMKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfc2Nyb2xs
X3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCB2b2lkKiBwaXhlbHMsIEV2
YXNfQ29vcmQgd2lkdGgsIEV2YXNfQ29vcmQgaGVpZ2h0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBzY3JvbGxPZmZzZXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3RUb1Njcm9sbCkKLXsK
LSAgICBpbnQgc2Nyb2xsWCA9IHJlY3RUb1Njcm9sbC54KCk7Ci0gICAgaW50IHNjcm9sbFkgPSBy
ZWN0VG9TY3JvbGwueSgpOwotICAgIGludCBzY3JvbGxXaWR0aCA9IHJlY3RUb1Njcm9sbC53aWR0
aCgpOwotICAgIGludCBzY3JvbGxIZWlnaHQgPSByZWN0VG9TY3JvbGwuaGVpZ2h0KCk7Ci0KLSAg
ICBpZiAoYWJzKHNjcm9sbE9mZnNldC53aWR0aCgpKSA+PSBzY3JvbGxXaWR0aCB8fCBhYnMoc2Ny
b2xsT2Zmc2V0LmhlaWdodCgpKSA+PSBzY3JvbGxIZWlnaHQpIHsKLSAgICAgICAgZXdrX3ZpZXdf
cmVwYWludF9hZGQoc21hcnREYXRhLT5fcHJpdiwgc2Nyb2xsWCwgc2Nyb2xsWSwgc2Nyb2xsV2lk
dGgsIHNjcm9sbEhlaWdodCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoc2Ny
b2xsWCA8IDApIHsKLSAgICAgICAgc2Nyb2xsV2lkdGggKz0gc2Nyb2xsWDsKLSAgICAgICAgc2Ny
b2xsWCA9IDA7Ci0gICAgfQotICAgIGlmIChzY3JvbGxZIDwgMCkgewotICAgICAgICBzY3JvbGxI
ZWlnaHQgKz0gc2Nyb2xsWTsKLSAgICAgICAgc2Nyb2xsWSA9IDA7Ci0gICAgfQotCi0gICAgaWYg
KHNjcm9sbFggKyBzY3JvbGxXaWR0aCA+IHdpZHRoKQotICAgICAgICBzY3JvbGxXaWR0aCA9IHdp
ZHRoIC0gc2Nyb2xsWDsKLSAgICBpZiAoc2Nyb2xsWSArIHNjcm9sbEhlaWdodCA+IGhlaWdodCkK
LSAgICAgICAgc2Nyb2xsSGVpZ2h0ID0gaGVpZ2h0IC0gc2Nyb2xsWTsKLQotICAgIGlmIChzY3Jv
bGxXaWR0aCA8PSAwIHx8IHNjcm9sbEhlaWdodCA8PSAwKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpbnQgc291cmNlWCA9IHNjcm9sbE9mZnNldC53aWR0aCgpIDwgMCA/IGFicyhzY3JvbGxPZmZz
ZXQud2lkdGgoKSkgOiAwOwotICAgIGludCBzb3VyY2VZID0gc2Nyb2xsT2Zmc2V0LmhlaWdodCgp
IDwgMCA/IGFicyhzY3JvbGxPZmZzZXQuaGVpZ2h0KCkpIDogMDsKLSAgICBpbnQgZGVzdGluYXRp
b25YID0gc2Nyb2xsT2Zmc2V0LndpZHRoKCkgPCAwID8gMCA6IHNjcm9sbE9mZnNldC53aWR0aCgp
OwotICAgIGludCBkZXN0aW5hdGlvblkgPSBzY3JvbGxPZmZzZXQuaGVpZ2h0KCkgPCAwID8gMCA6
IHNjcm9sbE9mZnNldC5oZWlnaHQoKTsKLSAgICBpbnQgY29weVdpZHRoID0gc2Nyb2xsV2lkdGgg
LSBhYnMoc2Nyb2xsT2Zmc2V0LndpZHRoKCkpOwotICAgIGludCBjb3B5SGVpZ2h0ID0gc2Nyb2xs
SGVpZ2h0IC0gYWJzKHNjcm9sbE9mZnNldC5oZWlnaHQoKSk7Ci0gICAgaWYgKHNjcm9sbE9mZnNl
dC53aWR0aCgpIHx8IHNjcm9sbE9mZnNldC5oZWlnaHQoKSkgewotICAgICAgICBfZXdrX3ZpZXdf
c2NyZWVuX21vdmUoc3RhdGljX2Nhc3Q8dWludDMyX3QqPihwaXhlbHMpLCBkZXN0aW5hdGlvblgs
IGRlc3RpbmF0aW9uWSwgc291cmNlWCwgc291cmNlWSwgY29weVdpZHRoLCBjb3B5SGVpZ2h0LCB3
aWR0aCk7Ci0gICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZChzbWFydERh
dGEtPmJhY2tpbmdfc3RvcmUsIGRlc3RpbmF0aW9uWCwgZGVzdGluYXRpb25ZLCBjb3B5V2lkdGgs
IGNvcHlIZWlnaHQpOwotICAgIH0KLQotICAgIEVpbmFfUmVjdGFuZ2xlIHZlcnRpY2FsVXBkYXRl
OwotICAgIHZlcnRpY2FsVXBkYXRlLnggPSBkZXN0aW5hdGlvblggPyAwIDogY29weVdpZHRoIC0g
MTsKLSAgICB2ZXJ0aWNhbFVwZGF0ZS55ID0gMDsKLSAgICB2ZXJ0aWNhbFVwZGF0ZS53ID0gYWJz
KHNjcm9sbE9mZnNldC53aWR0aCgpKTsKLSAgICB2ZXJ0aWNhbFVwZGF0ZS5oID0gc2Nyb2xsSGVp
Z2h0OwotICAgIGlmICh2ZXJ0aWNhbFVwZGF0ZS53ICYmIHZlcnRpY2FsVXBkYXRlLmgpCi0gICAg
ICAgIGV3a192aWV3X3JlcGFpbnRfYWRkKHNtYXJ0RGF0YS0+X3ByaXYsIHZlcnRpY2FsVXBkYXRl
LngsIHZlcnRpY2FsVXBkYXRlLnksIHZlcnRpY2FsVXBkYXRlLncsIHZlcnRpY2FsVXBkYXRlLmgp
OwotCi0gICAgRWluYV9SZWN0YW5nbGUgaG9yaXpvbnRhbFVwZGF0ZTsKLSAgICBob3Jpem9udGFs
VXBkYXRlLnggPSBkZXN0aW5hdGlvblg7Ci0gICAgaG9yaXpvbnRhbFVwZGF0ZS55ID0gZGVzdGlu
YXRpb25ZID8gMCA6IGNvcHlIZWlnaHQgLSAxOwotICAgIGhvcml6b250YWxVcGRhdGUudyA9IGNv
cHlXaWR0aDsKLSAgICBob3Jpem9udGFsVXBkYXRlLmggPSBhYnMoc2Nyb2xsT2Zmc2V0LmhlaWdo
dCgpKTsKLSAgICBpZiAoaG9yaXpvbnRhbFVwZGF0ZS53ICYmIGhvcml6b250YWxVcGRhdGUuaCkK
LSAgICAgICAgZXdrX3ZpZXdfcmVwYWludF9hZGQoc21hcnREYXRhLT5fcHJpdiwgaG9yaXpvbnRh
bFVwZGF0ZS54LCBob3Jpem9udGFsVXBkYXRlLnksIGhvcml6b250YWxVcGRhdGUudywgaG9yaXpv
bnRhbFVwZGF0ZS5oKTsKLX0KLQotc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3Njcm9sbHNf
cHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCi17Ci0gICAgRXZhc19Db29y
ZCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodDsKLSAgICBjb25zdCBXVEY6OlZlY3RvcjxXZWJDb3Jl
OjpJbnRTaXplPiYgc2Nyb2xsT2Zmc2V0cyA9IHNtYXJ0RGF0YS0+X3ByaXYtPm1fc2Nyb2xsT2Zm
c2V0czsKLSAgICBjb25zdCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcmVjdHNUb1Nj
cm9sbCA9IHNtYXJ0RGF0YS0+X3ByaXYtPm1fcmVjdHNUb1Njcm9sbDsKLQotICAgIGlmICghc2Ny
b2xsT2Zmc2V0cy5zaXplKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGV2YXNfb2JqZWN0X2lt
YWdlX3NpemVfZ2V0KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgJmltYWdlV2lkdGgsICZpbWFn
ZUhlaWdodCk7Ci0KLSAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3RUb1Njcm9sbCgwLCAwLCBpbWFn
ZVdpZHRoLCBpbWFnZUhlaWdodCk7Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSBzY3JvbGxPZmZzZXQ7
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzY3JvbGxPZmZzZXRzLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgIHJlY3RUb1Njcm9sbC5pbnRlcnNlY3QocmVjdHNUb1Njcm9sbFtpXSk7Ci0gICAg
ICAgIHNjcm9sbE9mZnNldCArPSBzY3JvbGxPZmZzZXRzW2ldOwotICAgIH0KLQotICAgIGlmIChz
Y3JvbGxPZmZzZXQuaXNaZXJvKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHZvaWQqIHBpeGVs
cyA9IGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfZ2V0KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwg
MSk7Ci0gICAgX2V3a192aWV3X3Njcm9sbF9wcm9jZXNzKHNtYXJ0RGF0YSwgcGl4ZWxzLCBpbWFn
ZVdpZHRoLCBpbWFnZUhlaWdodCwgc2Nyb2xsT2Zmc2V0LCByZWN0VG9TY3JvbGwpOwotCi0gICAg
ZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9zZXQoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCBwaXhl
bHMpOwotCi0gICAgcmV0dXJuOwotfQotCi1zdGF0aWMgYm9vbCBfZXdrX3ZpZXdfc21hcnRfcmVw
YWludHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCi17Ci0gICAgRVdL
X1ZJRVdfUFJJVl9HRVQoc21hcnREYXRhLCBwcml2KTsKLQotICAgIGlmIChzbWFydERhdGEtPmFu
aW1hdGVkX3pvb20uem9vbS5jdXJyZW50IDwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmVw
c2lsb24oKSkgewotICAgICAgICBFdmFzX09iamVjdCogY2xpcCA9IGV2YXNfb2JqZWN0X2NsaXBf
Z2V0KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSk7Ci0KLSAgICAgICAgLy8gcmVzZXQgZWZmZWN0
cyBvZiB6b29tX3dlYWtfc2V0KCkKLSAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZmlsbF9zZXQo
c21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCAwLCAwLCBzbWFydERhdGEtPnZpZXcudywgc21hcnRE
YXRhLT52aWV3LmgpOwotICAgICAgICBldmFzX29iamVjdF9tb3ZlKGNsaXAsIHNtYXJ0RGF0YS0+
dmlldy54LCBzbWFydERhdGEtPnZpZXcueSk7Ci0KLSAgICAgICAgRXZhc19Db29yZCB3aWR0aCA9
IHNtYXJ0RGF0YS0+dmlldy53OwotICAgICAgICBFdmFzX0Nvb3JkIGhlaWdodCA9IHNtYXJ0RGF0
YS0+dmlldy5oOwotCi0gICAgICAgIEV2YXNfQ29vcmQgY2VudGVyV2lkdGgsIGNlbnRlckhlaWdo
dDsKLSAgICAgICAgZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVfZ2V0KHNtYXJ0RGF0YS0+bWFpbl9m
cmFtZSwgJmNlbnRlcldpZHRoLCAmY2VudGVySGVpZ2h0KTsKLSAgICAgICAgaWYgKHdpZHRoID4g
Y2VudGVyV2lkdGgpCi0gICAgICAgICAgICB3aWR0aCA9IGNlbnRlcldpZHRoOwotCi0gICAgICAg
IGlmIChoZWlnaHQgPiBjZW50ZXJIZWlnaHQpCi0gICAgICAgICAgICBoZWlnaHQgPSBjZW50ZXJI
ZWlnaHQ7Ci0KLSAgICAgICAgZXZhc19vYmplY3RfcmVzaXplKGNsaXAsIHdpZHRoLCBoZWlnaHQp
OwotICAgIH0KLQotICAgIEV2YXNfQ29vcmQgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQ7Ci0gICAg
ZXZhc19vYmplY3RfaW1hZ2Vfc2l6ZV9nZXQoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCAmaW1h
Z2VXaWR0aCwgJmltYWdlSGVpZ2h0KTsKLQotICAgIEVpbmFfVGlsZXIqIHRpbGVyID0gZWluYV90
aWxlcl9uZXcoaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpOwotICAgIGlmICghdGlsZXIpIHsKLSAg
ICAgICAgRVJSKCJjb3VsZCBub3QgY3JlYXRlIHRpbGVyICVkeCVkIiwgaW1hZ2VXaWR0aCwgaW1h
Z2VIZWlnaHQpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgZXdrX3ZpZXdf
bGF5b3V0X2lmX25lZWRlZF9yZWN1cnNpdmUocHJpdik7Ci0KLSAgICBzaXplX3QgY291bnQ7Ci0g
ICAgY29uc3QgRWluYV9SZWN0YW5nbGUqIHBhaW50UmVxdWVzdCA9IGV3a192aWV3X3JlcGFpbnRz
X3BvcChwcml2LCAmY291bnQpOwotICAgIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBwYWludFJlcXVl
c3RFbmQgPSBwYWludFJlcXVlc3QgKyBjb3VudDsKLSAgICBmb3IgKDsgcGFpbnRSZXF1ZXN0IDwg
cGFpbnRSZXF1ZXN0RW5kOyBwYWludFJlcXVlc3QrKykKLSAgICAgICAgZWluYV90aWxlcl9yZWN0
X2FkZCh0aWxlciwgcGFpbnRSZXF1ZXN0KTsKLQotICAgIEVpbmFfSXRlcmF0b3IqIGl0ZXJhdG9y
ID0gZWluYV90aWxlcl9pdGVyYXRvcl9uZXcodGlsZXIpOwotICAgIGlmICghaXRlcmF0b3IpIHsK
LSAgICAgICAgRVJSKCJjb3VsZCBub3QgZ2V0IGl0ZXJhdG9yIGZvciB0aWxlciIpOwotICAgICAg
ICBlaW5hX3RpbGVyX2ZyZWUodGlsZXIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgaWYgKHByaXYtPnBhZ2UtPm1haW5G
cmFtZSgpLnRpbGVkQmFja2luZ1N0b3JlKCkpCi0gICAgICAgIHByaXYtPnBhZ2UtPm1haW5GcmFt
ZSgpLnRpbGVkQmFja2luZ1N0b3JlKCktPmNvdmVyV2l0aFRpbGVzSWZOZWVkZWQoKTsKLSNlbmRp
ZgotCi0gICAgRXdrX1BhaW50X0NvbnRleHQqIGNvbnRleHQgPSBld2tfcGFpbnRfY29udGV4dF9m
cm9tX2ltYWdlX25ldyhzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUpOwotICAgIGV3a19wYWludF9j
b250ZXh0X3NhdmUoY29udGV4dCk7Ci0KLSAgICBFaW5hX1JlY3RhbmdsZSogcmVjdDsKLSAgICBF
SU5BX0lURVJBVE9SX0ZPUkVBQ0goaXRlcmF0b3IsIHJlY3QpIHsKLSAgICAgICAgZXdrX3ZpZXdf
cGFpbnQoc21hcnREYXRhLT5fcHJpdiwgY29udGV4dCwgcmVjdCk7Ci0gICAgICAgIGV2YXNfb2Jq
ZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsIHJlY3Qt
PngsIHJlY3QtPnksIHJlY3QtPncsIHJlY3QtPmgpOwotICAgIH0KLQotI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCi0gICAgV2ViQ29yZTo6UGFnZSogcGFnZSA9IEVXS1ByaXZhdGU6OmNvcmVQYWdlKHNt
YXJ0RGF0YS0+c2VsZik7Ci0gICAgaWYgKHBhZ2UpIHsKLSAgICAgICAgV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlciYgY29udHJvbGxlciA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKTsK
LSAgICAgICAgaWYgKGNvbnRyb2xsZXIuaGlnaGxpZ2h0ZWROb2RlKCkpCi0gICAgICAgICAgICBj
b250cm9sbGVyLmRyYXdIaWdobGlnaHQoKmNvbnRleHQtPmdyYXBoaWNDb250ZXh0KTsKLSAgICB9
Ci0jZW5kaWYKLQotICAgIGV3a19wYWludF9jb250ZXh0X3Jlc3RvcmUoY29udGV4dCk7Ci0gICAg
ZXdrX3BhaW50X2NvbnRleHRfZnJlZShjb250ZXh0KTsKLQotICAgIGVpbmFfdGlsZXJfZnJlZSh0
aWxlcik7Ci0gICAgZWluYV9pdGVyYXRvcl9mcmVlKGl0ZXJhdG9yKTsKLQotICAgIHJldHVybiB0
cnVlOwotfQotCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQogewogICAgIEVXS19WSUVXX1NEX0dFVChld2tWaWV3LCBzbWFydERhdGEp
OwpAQCAtMTI1OCw3ICsxMDY2LDcgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2NhbGN1
bGF0ZShFdmFzX09iamVjdCogZXdrVmlldykKIAogICAgIGlmIChzbWFydERhdGEtPmNoYW5nZWQu
cG9zaXRpb24gJiYgKCh4ICE9IHNtYXJ0RGF0YS0+dmlldy54KSB8fCAoeSAhPSBzbWFydERhdGEt
PnZpZXcueSkpKSB7CiAgICAgICAgIGV2YXNfb2JqZWN0X21vdmUoc21hcnREYXRhLT5tYWluX2Zy
YW1lLCB4LCB5KTsKLSAgICAgICAgZXZhc19vYmplY3RfbW92ZShzbWFydERhdGEtPmJhY2tpbmdf
c3RvcmUsIHgsIHkpOworICAgICAgICBldmFzX29iamVjdF9tb3ZlKHNtYXJ0RGF0YS0+aW1hZ2Us
IHgsIHkpOwogICAgICAgICBldmFzX29iamVjdF9tb3ZlKHNtYXJ0RGF0YS0+ZXZlbnRzX3JlY3Qs
IHgsIHkpOwogICAgICAgICBzbWFydERhdGEtPmNoYW5nZWQuZnJhbWVfcmVjdCA9IHRydWU7CiAg
ICAgICAgIHNtYXJ0RGF0YS0+dmlldy54ID0geDsKQEAgLTEyNjYsMTIgKzEwNzQsNiBAQCBzdGF0
aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQog
ICAgIH0KICAgICBzbWFydERhdGEtPmNoYW5nZWQucG9zaXRpb24gPSBmYWxzZTsKIAotICAgIF9l
d2tfdmlld19zbWFydF9zY3JvbGxzX3Byb2Nlc3Moc21hcnREYXRhKTsKLSAgICBfZXdrX3ZpZXdf
c2Nyb2xsc19mbHVzaChwcml2KTsKLQotICAgIGlmICghX2V3a192aWV3X3NtYXJ0X3JlcGFpbnRz
X3Byb2Nlc3Moc21hcnREYXRhKSkKLSAgICAgICAgRVJSKCJmYWlsZWQgdG8gcHJvY2VzcyByZXBh
aW50cy4iKTsKLQogICAgIGlmIChzbWFydERhdGEtPmNoYW5nZWQuZnJhbWVfcmVjdCkgewogICAg
ICAgICBwcml2LT5wYWdlLT5tYWluRnJhbWUoKS52aWV3KCktPmZyYW1lUmVjdHNDaGFuZ2VkKCk7
CiAgICAgICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5mcmFtZV9yZWN0ID0gZmFsc2U7CkBAIC0xMjg1
LDEwICsxMDg3LDcgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3Nob3coRXZhc19PYmpl
Y3QqIGV3a1ZpZXcpCiAKICAgICBpZiAoZXZhc19vYmplY3RfY2xpcGVlc19nZXQoc21hcnREYXRh
LT5iYXNlLmNsaXBwZXIpKQogICAgICAgICBldmFzX29iamVjdF9zaG93KHNtYXJ0RGF0YS0+YmFz
ZS5jbGlwcGVyKTsKLSAgICBldmFzX29iamVjdF9zaG93KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9y
ZSk7Ci0KLSAgICBpZiAocHJpdi0+aXNDb21wb3NpdGluZ0FjdGl2ZSkKLSAgICAgICAgZXZhc19v
YmplY3Rfc2hvdyhwcml2LT5jb21wb3NpdGluZ09iamVjdC5nZXQoKSk7CisgICAgZXZhc19vYmpl
Y3Rfc2hvdyhzbWFydERhdGEtPmltYWdlKTsKIH0KIAogc3RhdGljIHZvaWQgX2V3a192aWV3X3Nt
YXJ0X2hpZGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpCkBAIC0xMjk3LDEwICsxMDk2LDcgQEAgc3Rh
dGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2hpZGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CiAKICAgICBldmFz
X29iamVjdF9oaWRlKHNtYXJ0RGF0YS0+YmFzZS5jbGlwcGVyKTsKLSAgICBldmFzX29iamVjdF9o
aWRlKHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSk7Ci0KLSAgICBpZiAocHJpdi0+aXNDb21wb3Np
dGluZ0FjdGl2ZSkKLSAgICAgICAgZXZhc19vYmplY3RfaGlkZShwcml2LT5jb21wb3NpdGluZ09i
amVjdC5nZXQoKSk7CisgICAgZXZhc19vYmplY3RfaGlkZShzbWFydERhdGEtPmltYWdlKTsKIH0K
IAogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfY29udGVudHNfcmVzaXplKEV3a19W
aWV3X1NtYXJ0X0RhdGEqLCBpbnQgLyp3aWR0aCovLCBpbnQgLypoZWlnaHQqLykKQEAgLTEzNDAs
NyArMTEzNiw2IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9mbHVzaChFd2tfVmlld19T
bWFydF9EYXRhKiBzbWFydERhdGEpCiB7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgcHJpdik7CiAgICAgX2V3a192aWV3X3JlcGFpbnRzX2ZsdXNoKHByaXYpOwot
ICAgIF9ld2tfdmlld19zY3JvbGxzX2ZsdXNoKHByaXYpOwogfQogCiBzdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0b3AoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnRE
YXRhKQpAQCAtMTM4MSw3ICsxMTc2LDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21h
cnRfem9vbV93ZWFrX3NldChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGYKICAgICBF
dmFzX0Nvb3JkIHcgPSBzbWFydERhdGEtPnZpZXcudyAqIHNjYWxlOwogICAgIEV2YXNfQ29vcmQg
aCA9IHNtYXJ0RGF0YS0+dmlldy5oICogc2NhbGU7CiAgICAgRXZhc19Db29yZCBkZWx0YVgsIGRl
bHRhWSwgY29udGVudFdpZHRoLCBjb250ZW50SGVpZ2h0OwotICAgIEV2YXNfT2JqZWN0KiBjbGlw
ID0gZXZhc19vYmplY3RfY2xpcF9nZXQoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlKTsKKyAgICBF
dmFzX09iamVjdCogY2xpcCA9IGV2YXNfb2JqZWN0X2NsaXBfZ2V0KHNtYXJ0RGF0YS0+aW1hZ2Up
OwogCiAgICAgZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVfZ2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFt
ZSwgJmNvbnRlbnRXaWR0aCwgJmNvbnRlbnRIZWlnaHQpOwogICAgIGlmIChzbWFydERhdGEtPnZp
ZXcudyA+IDAgJiYgc21hcnREYXRhLT52aWV3LmggPiAwKSB7CkBAIC0xMzkyLDcgKzExODcsNyBA
QCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF96b29tX3dlYWtfc2V0KEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgZgogICAgICAgICBkZWx0YVkgPSAwOwogICAgIH0KIAot
ICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxfc2V0KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwg
Y2VudGVyWCArIGRlbHRhWCwgY2VudGVyWSArIGRlbHRhWSwgdywgaCk7CisgICAgZXZhc19vYmpl
Y3RfaW1hZ2VfZmlsbF9zZXQoc21hcnREYXRhLT5pbWFnZSwgY2VudGVyWCArIGRlbHRhWCwgY2Vu
dGVyWSArIGRlbHRhWSwgdywgaCk7CiAKICAgICBpZiAoc21hcnREYXRhLT52aWV3LncgPiAwICYm
IHNtYXJ0RGF0YS0+dmlldy5oID4gMCkgewogICAgICAgICBkZWx0YVggPSAoKHNtYXJ0RGF0YS0+
dmlldy53IC0gdykgKiBjZW50ZXJYKSAvIHNtYXJ0RGF0YS0+dmlldy53OwpAQCAtMTQxNCw3ICsx
MjA5LDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfem9vbV93ZWFrX3NldChF
d2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGYKIAogc3RhdGljIHZvaWQgX2V3a192aWV3
X3NtYXJ0X3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNt
YXJ0RGF0YSwgRWluYV9Cb29sIHNtb290aF9zY2FsZSkKIHsKLSAgICBldmFzX29iamVjdF9pbWFn
ZV9zbW9vdGhfc2NhbGVfc2V0KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgc21vb3RoX3NjYWxl
KTsKKyAgICBldmFzX29iamVjdF9pbWFnZV9zbW9vdGhfc2NhbGVfc2V0KHNtYXJ0RGF0YS0+aW1h
Z2UsIHNtb290aF9zY2FsZSk7CiB9CiAKIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3pvb21f
YW5pbWF0b3JfY2Iodm9pZCogZGF0YSkKQEAgLTE2OTgsNyArMTQ5Myw3IEBAIHZvaWQgZXdrX3Zp
ZXdfYmdfY29sb3Jfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQgcmVkLCBpbnQgZ3JlZW4s
IGludCBibHVlLCBpCiAgICAgc21hcnREYXRhLT5iZ19jb2xvci5iID0gYmx1ZTsKICAgICBzbWFy
dERhdGEtPmJnX2NvbG9yLmEgPSBhbHBoYTsKIAotICAgIGV2YXNfb2JqZWN0X2ltYWdlX2FscGhh
X3NldChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsIGFscGhhIDwgMjU1KTsKKyAgICBldmFzX29i
amVjdF9pbWFnZV9hbHBoYV9zZXQoc21hcnREYXRhLT5pbWFnZSwgYWxwaGEgPCAyNTUpOwogCiAg
ICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gc21hcnREYXRhLT5fcHJpdi0+cGFnZS0+bWFp
bkZyYW1lKCkudmlldygpOwogICAgIGlmICh2aWV3KSB7CkBAIC0yOTM5LDE1ICsyNzM0LDYgQEAg
dm9pZCBld2tfdmlld19sYXlvdXRfaWZfbmVlZGVkX3JlY3Vyc2l2ZShFd2tfVmlld19Qcml2YXRl
X0RhdGEqIHByaXYpCiAgICAgdmlldy0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vy
c2l2ZSgpOwogfQogCi12b2lkIGV3a192aWV3X3Njcm9sbHNfcHJvY2VzcyhFd2tfVmlld19TbWFy
dF9EYXRhKiBzbWFydERhdGEpCi17Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21h
cnREYXRhKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2
KTsKLQotICAgIF9ld2tfdmlld19zbWFydF9zY3JvbGxzX3Byb2Nlc3Moc21hcnREYXRhKTsKLSAg
ICBfZXdrX3ZpZXdfc2Nyb2xsc19mbHVzaChwcml2KTsKLX0KLQogLyogaW50ZXJuYWwgbWV0aG9k
cyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwog
LyoqCiAgKiBAaW50ZXJuYWwKQEAgLTM3NDMsMTUgKzM1MjksNyBAQCB2b2lkIGV3a192aWV3X3Nj
cm9sbChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgZGVsdGEs
IGNvbnN0CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEp
OwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOwogCi0g
ICAgcHJpdi0+bV9yZWN0c1RvU2Nyb2xsLmFwcGVuZChyZWN0VG9TY3JvbGwpOwotICAgIHByaXYt
Pm1fc2Nyb2xsT2Zmc2V0cy5hcHBlbmQoZGVsdGEpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBwcml2LT5yZXBhaW50cy5jb3VudDsgKytpKSB7Ci0gICAgICAgIHByaXYtPnJlcGFpbnRz
LmFycmF5W2ldLnggKz0gZGVsdGEud2lkdGgoKTsKLSAgICAgICAgcHJpdi0+cmVwYWludHMuYXJy
YXlbaV0ueSArPSBkZWx0YS5oZWlnaHQoKTsKLSAgICB9Ci0KLSAgICBfZXdrX3ZpZXdfc21hcnRf
Y2hhbmdlZChzbWFydERhdGEpOworICAgIGV3a192aWV3X21hcmtfZm9yX3N5bmMoZXdrVmlldyk7
CiB9CiAKIC8qKgpAQCAtNDYyNiw3OSArNDQwNCwxMiBAQCB2b2lkIGV3a192aWV3X2luc3BlY3Rv
cl92aWV3X3NldChFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGluc3BlY3RvclZp
ZQogI2VuZGlmCiB9CiAKLXZvaWQgX2V3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX2Ni
KHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KikKLXsKLSAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEq
IHByaXYgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19Qcml2YXRlX0RhdGEqPihkYXRhKTsKLQotICAg
IGlmIChwcml2LT5pc0NvbXBvc2l0aW5nQWN0aXZlKQotICAgICAgICBwcml2LT5hY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dC0+Zmx1c2hBbmRSZW5kZXJMYXllcnMoKTsKLX0KLQotYm9vbCBf
ZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfY29udGV4dF9jcmVhdGVfaWZfbmVlZGVk
KEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
ZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotCi0gICAgaWYgKCFwcml2LT5hY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dCkgewotICAgICAgICBwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQ+KGV3a1ZpZXcsIHByaXYtPmNvbXBvc2l0aW5nT2JqZWN0LmdldCgpKTsKLSAg
ICAgICAgaWYgKCFwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+aW5pdGlhbGl6
ZSgpKSB7Ci0gICAgICAgICAgICBwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCA9
IG51bGxwdHI7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgX2V3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0
aW5nX29iamVjdF9jcmVhdGVfaWZfbmVlZGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKLSAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKLQotICAgIGlmICghcHJp
di0+Y29tcG9zaXRpbmdPYmplY3QpIHsKLSAgICAgICAgcHJpdi0+Y29tcG9zaXRpbmdPYmplY3Qg
PSBhZG9wdFJlZihldmFzX29iamVjdF9pbWFnZV9hZGQoc21hcnREYXRhLT5iYXNlLmV2YXMpKTsK
LQotICAgICAgICBldmFzX29iamVjdF9wYXNzX2V2ZW50c19zZXQocHJpdi0+Y29tcG9zaXRpbmdP
YmplY3QuZ2V0KCksIHRydWUpOyAvLyBKdXN0IGZvciByZW5kZXJpbmcsIGlnbm9yZSBldmVudHMu
Ci0gICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2FscGhhX3NldChwcml2LT5jb21wb3NpdGluZ09i
amVjdC5nZXQoKSwgdHJ1ZSk7Ci0gICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2NvbnRlbnRfaGlu
dF9zZXQocHJpdi0+Y29tcG9zaXRpbmdPYmplY3QuZ2V0KCksIEVWQVNfSU1BR0VfQ09OVEVOVF9I
SU5UX0RZTkFNSUMpOwotCi0gICAgICAgIC8vIFNldCB0aGUgcGl4ZWwgZ2V0IGNhbGxiYWNrLgot
ICAgICAgICBldmFzX29iamVjdF9pbWFnZV9waXhlbHNfZ2V0X2NhbGxiYWNrX3NldChwcml2LT5j
b21wb3NpdGluZ09iamVjdC5nZXQoKSwgX2V3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5n
X2NiLCBwcml2KTsKLQotICAgICAgICBldmFzX29iamVjdF9zbWFydF9tZW1iZXJfYWRkKHByaXYt
PmNvbXBvc2l0aW5nT2JqZWN0LmdldCgpLCBld2tWaWV3KTsKLSAgICB9Ci0KLSAgICBldmFzX29i
amVjdF9pbWFnZV9zaXplX3NldChwcml2LT5jb21wb3NpdGluZ09iamVjdC5nZXQoKSwgc21hcnRE
YXRhLT52aWV3LncsIHNtYXJ0RGF0YS0+dmlldy5oKTsKLSAgICBldmFzX29iamVjdF9pbWFnZV9m
aWxsX3NldChwcml2LT5jb21wb3NpdGluZ09iamVjdC5nZXQoKSwgMCwgMCwgc21hcnREYXRhLT52
aWV3LncsIHNtYXJ0RGF0YS0+dmlldy5oKTsKLQotICAgIGV2YXNfb2JqZWN0X21vdmUocHJpdi0+
Y29tcG9zaXRpbmdPYmplY3QuZ2V0KCksIHNtYXJ0RGF0YS0+dmlldy54LCBzbWFydERhdGEtPnZp
ZXcueSk7Ci0gICAgZXZhc19vYmplY3RfcmVzaXplKHByaXYtPmNvbXBvc2l0aW5nT2JqZWN0Lmdl
dCgpLCBzbWFydERhdGEtPnZpZXcudywgc21hcnREYXRhLT52aWV3LmgpOwotICAgIGV2YXNfb2Jq
ZWN0X2hpZGUocHJpdi0+Y29tcG9zaXRpbmdPYmplY3QuZ2V0KCkpOwotfQotCiB2b2lkIGV3a192
aWV3X3Jvb3RfZ3JhcGhpY3NfbGF5ZXJfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJDb3Jl
OjpHcmFwaGljc0xheWVyKiByb290TGF5ZXIpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzbWFydERhdGEsIHByaXYpOwogCi0gICAgYm9vbCBhY3RpdmUgPSAhIXJvb3RMYXllcjsKLSAg
ICBpZiAocHJpdi0+aXNDb21wb3NpdGluZ0FjdGl2ZSA9PSBhY3RpdmUpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIHByaXYtPmlzQ29tcG9zaXRpbmdBY3RpdmUgPSBhY3RpdmU7Ci0KLSAgICBpZiAo
cHJpdi0+aXNDb21wb3NpdGluZ0FjdGl2ZSkgewotICAgICAgICBfZXdrX3ZpZXdfYWNjZWxlcmF0
ZWRfY29tcG9zaXRpbmdfb2JqZWN0X2NyZWF0ZV9pZl9uZWVkZWQoZXdrVmlldyk7Ci0gICAgICAg
IGlmIChfZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfY29udGV4dF9jcmVhdGVfaWZf
bmVlZGVkKGV3a1ZpZXcpKQotICAgICAgICAgICAgZXZhc19vYmplY3Rfc2hvdyhwcml2LT5jb21w
b3NpdGluZ09iamVjdC5nZXQoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByaXYtPmlz
Q29tcG9zaXRpbmdBY3RpdmUgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoIXByaXYtPmlzQ29t
cG9zaXRpbmdBY3RpdmUpCi0gICAgICAgIGV2YXNfb2JqZWN0X2hpZGUocHJpdi0+Y29tcG9zaXRp
bmdPYmplY3QuZ2V0KCkpOwotCi0gICAgaWYgKHByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0KQotICAgICAgICBwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+YXR0
YWNoUm9vdEdyYXBoaWNzTGF5ZXIocm9vdExheWVyKTsKKyAgICBwcml2LT5hY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dC0+YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIocm9vdExheWVyKTsKIH0K
IAogdm9pZCBld2tfdmlld19tYXJrX2Zvcl9zeW5jKEV2YXNfT2JqZWN0KiBld2tWaWV3KQpAQCAt
NDcwOCw3ICs0NDE5LDcgQEAgdm9pZCBld2tfdmlld19tYXJrX2Zvcl9zeW5jKEV2YXNfT2JqZWN0
KiBld2tWaWV3KQogCiAgICAgLy8gTWFyayB0aGUgaW1hZ2UgYXMgImRpcnR5IiBtZWFuaW5nIGl0
IG5lZWRzIGFuIHVwZGF0ZSBuZXh0IHRpbWUgZXZhcyByZW5kZXJzLgogICAgIC8vIEl0IHdpbGwg
Y2FsbCB0aGUgcGl4ZWwgZ2V0IGNhbGxiYWNrIHRoZW4uCi0gICAgZXZhc19vYmplY3RfaW1hZ2Vf
cGl4ZWxzX2RpcnR5X3NldChwcml2LT5jb21wb3NpdGluZ09iamVjdC5nZXQoKSwgdHJ1ZSk7Cisg
ICAgZXZhc19vYmplY3RfaW1hZ2VfcGl4ZWxzX2RpcnR5X3NldChzbWFydERhdGEtPmltYWdlLCB0
cnVlKTsKIH0KIAogdm9pZCBld2tfdmlld19jdXJzb3Jfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBjb25zdCBXZWJDb3JlOjpDdXJzb3ImIGN1cnNvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgK
aW5kZXggM2VlZDQ3MzZlNGFhYzU4N2Q3NjAzNzgzYzgxNWJjM2U5NmEwZTY4Mi4uNDliMThmMmFm
OTBkNTg1NDI5OTljNzExYzcwMzc5MTg3ODhhMTRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3
LmgKQEAgLTM3MCw3ICszNzAsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0RhdGEgewogICAg
IGNvbnN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzICphcGk7IC8qKjwgUmVmZXJlbmNlIHRvIGNhc3Rl
ZCBjbGFzcyBpbnN0YW5jZS4gKi8KICAgICBFdmFzX09iamVjdCAqc2VsZjsgLyoqPCBSZWZlcmVu
Y2UgdG8gb3duZXIgb2JqZWN0LiAqLwogICAgIEV2YXNfT2JqZWN0ICptYWluX2ZyYW1lOyAvKio8
IFJlZmVyZW5jZSB0byBtYWluIGZyYW1lIG9iamVjdC4gKi8KLSAgICBFdmFzX09iamVjdCAqYmFj
a2luZ19zdG9yZTsgLyoqPCBSZWZlcmVuY2UgdG8gYmFja2luZyBzdG9yZS4gKi8KKyAgICBFdmFz
X09iamVjdCAqaW1hZ2U7IC8qKjwgUmVmZXJlbmNlIHRvIGV2YXNfb2JqZWN0X2ltYWdlIGZvciBk
cmF3aW5nIHdlYiBjb250ZW50ICovCiAgICAgRXZhc19PYmplY3QgKmV2ZW50c19yZWN0OyAvKio8
IFRoZSByZWN0YW5nbGUgdGhhdCByZWNlaXZlcyBtb3VzZSBldmVudHMuICovCiAgICAgRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhICpfcHJpdjsgLyoqPCBTaG91bGQgQGIgbmV2ZXIgYmUgYWNjZXNzZWQs
IGMrKyBzdHVmZi4gKi8KICAgICBzdHJ1Y3Qgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228366</attachid>
            <date>2014-04-01 23:29:38 -0700</date>
            <delta_ts>2014-04-02 02:24:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130969-20140402152906.patch</filename>
            <type>text/plain</type>
            <size>36233</size>
            <attacher name="Hyowon Kim">hw1008.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2NDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggYTVhNWU2OTk4
NThhY2IzN2UyYzhkNmUzMmM3MWVhYWE2NWJlZjZkMy4uMDU2ZjcxZGM1NTJhMmYxMGYzN2MxMTUz
ZTNmNGZhMDc0MDkyOTllMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE0
LTA0LTAxICBIeW93b24gS2ltICA8aHcxMDA4LmtpbUBzYW1zdW5nLmNvbT4KKworICAgICAgICBb
RUZMXSBDb21wb3NpdGUgYWxsIGxheWVycyBpbnRvIG9uZSBldmFzX29iamVjdCB1c2luZyBUZXh0
dXJlTWFwcGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMwOTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIEVGTCBwb3J0IHVzZXMgdHdvIGV2YXNfb2JqZWN0cyB0byByZW5kZXIgdGhlIGVudGly
ZSB3ZWJwYWdlOiBiYWNraW5nX3N0b3JlIGFuZCBjb21wb3NpdGluZ09iamVjdC4KKyAgICAgICAg
YmFja2luZ19zdG9yZSBpcyB1c2VkIHRvIHBhaW50IGEgbm9uLWNvbXBvc2l0ZWQgbGF5ZXIgd2l0
aCBld2sgZnVuY3Rpb25zLAorICAgICAgICB3aGVyZWFzIGNvbXBvc2l0aW5nT2JqZWN0IGlzIHVz
ZWQgdG8gcGFpbnQgb3RoZXIgbGF5ZXJzIHdpdGggVGV4dHVyZU1hcHBlci4KKyAgICAgICAgVGhl
c2UgZXZhc19vYmplY3RzIGFyZSBldmVudHVhbGx5IGNvbXBvc2l0ZWQgaW50byB0aGUgd2luZG93
IGJ1ZmZlciBieSBFdmFzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMgdG8gdXNlIG9ubHkg
b25lIGV2YXNfb2JqZWN0IGJ5IGludGVncmF0aW5nIHRoZXNlIHR3byBldmFzX29iamVjdHMsCisg
ICAgICAgIGFuZCBtYWtlcyB0aGF0IFRleHR1cmVNYXBwZXIgaGFuZGxlcyBhbGwgcmVuZGVyaW5n
IHBhdGhzIGxpa2UgV2ViS2l0Mi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6fkFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0OjpyZXNpemUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQ6OmZsdXNoQW5kUmVuZGVyTGF5ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpmbHVzaFBlbmRpbmdMYXllckNoYW5n
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnBh
aW50VG9HcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQ6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpjb21wb3NpdGVMYXllcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmluaXRpYWxpemUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQ6OmNhbkNvbXBvc2l0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dDo6Y29tcG9zaXRlTGF5ZXJzVG9Db250ZXh0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjphdHRhY2hS
b290R3JhcGhpY3NMYXllcik6IERlbGV0ZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzZXRSb290R3JhcGhpY3NMYXllcik6CisgICAgICAg
ICogZXdrL2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6CisgICAg
ICAgIChfZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfY2IpOgorICAgICAgICAoX2V3
a192aWV3X3NtYXJ0X2FkZCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfcmVzaXplKToKKyAg
ICAgICAgKF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGUpOgorICAgICAgICAoX2V3a192aWV3X3Nt
YXJ0X3Nob3cpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2hpZGUpOgorICAgICAgICAoX2V3
a192aWV3X3NtYXJ0X2ZsdXNoKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF96b29tX3dlYWtf
c2V0KToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF96b29tX3dlYWtfc21vb3RoX3NjYWxlX3Nl
dCk6CisgICAgICAgIChld2tfdmlld19iZ19jb2xvcl9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdf
c2Nyb2xsKToKKyAgICAgICAgKGV3a192aWV3X3Jvb3RfZ3JhcGhpY3NfbGF5ZXJfc2V0KToKKyAg
ICAgICAgKGV3a192aWV3X21hcmtfZm9yX3N5bmMpOgorICAgICAgICAoX2V3a192aWV3X3Njcm9s
bHNfZmx1c2gpOiBEZWxldGVkLgorICAgICAgICAoX2V3a192aWV3X3Njcm9sbF9wcm9jZXNzKTog
RGVsZXRlZC4KKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9zY3JvbGxzX3Byb2Nlc3MpOiBEZWxl
dGVkLgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MpOiBEZWxldGVk
LgorICAgICAgICAoZXdrX3ZpZXdfc2Nyb2xsc19wcm9jZXNzKTogRGVsZXRlZC4KKyAgICAgICAg
KF9ld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19jb250ZXh0X2NyZWF0ZV9pZl9uZWVk
ZWQpOiBEZWxldGVkLgorICAgICAgICAoX2V3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5n
X29iamVjdF9jcmVhdGVfaWZfbmVlZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBld2svZXdrX3Zp
ZXcuaDoKKwogMjAxNC0wMy0yMyAgSHlvd29uIEtpbSAgPGh3MTAwOC5raW1Ac2Ftc3VuZy5jb20+
CiAKICAgICAgICAgTW92ZSBhbGwgRUZMIHR5cGVkZWZzIGludG8gRWZsVHlwZWRlZnMuaC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0RWZsLmNwcAppbmRleCBlZmQ3MjViZjY1YTI0
MGRkN2U4NGE2YWYxZjRmNDgzZTRmNGNhNTY3Li41NmVkOGNlMzg3ZjQ1NjhkNjE3ZTk0MjJlYmYy
ZGUyMWMyZjY4ZDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuY3Bw
CkBAIC0yMiwxMCArMjIsMTMgQEAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAKICNpbmNs
dWRlICJBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEVmbC5oIgorI2luY2x1ZGUgIkNhaXJv
VXRpbGl0aWVzRWZsLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCIK
ICNpbmNsdWRlICJNYWluRnJhbWUuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5o
IgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJM
YXllci5oIgorI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJp
dmF0ZS5oIgogCiBjb25zdCBkb3VibGUgY29tcG9zaXRpbmdGcmFtZVJhdGUgPSA2MDsKQEAgLTM1
LDM1ICszOCwyNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBBY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIEV2YXNfT2JqZWN0KiBjb21wb3NpdGluZ09iamVjdCkKICAgICA6IG1fdmlldyhld2tWaWV3
KQogICAgICwgbV9jb21wb3NpdGluZ09iamVjdChjb21wb3NpdGluZ09iamVjdCkKKyAgICAsIG1f
cm9vdExheWVyKG51bGxwdHIpCiAgICAgLCBtX3N5bmNUaW1lcih0aGlzLCAmQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQ6OnN5bmNMYXllcnMpCisgICAgLCBtX2lzQWNjZWxlcmF0ZWQodHJ1
ZSkKIHsKICAgICBBU1NFUlQobV92aWV3KTsKICAgICBBU1NFUlQobV9jb21wb3NpdGluZ09iamVj
dCk7Ci19Ci0KLUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojp+QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQoKQotewotfQogCi1ib29sIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0Ojppbml0aWFsaXplKCkKLXsKLSAgICBtX2V2YXNHTCA9IEVmbFVuaXF1ZVB0cjxFdmFzX0dM
PihldmFzX2dsX25ldyhldmFzX29iamVjdF9ldmFzX2dldChtX3ZpZXcpKSk7Ci0gICAgaWYgKCFt
X2V2YXNHTCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEV2YXMqIGV2YXMgPSBldmFzX29i
amVjdF9ldmFzX2dldChtX3ZpZXcpOworICAgIGNvbnN0IGNoYXIqIGVuZ2luZSA9IGVjb3JlX2V2
YXNfZW5naW5lX25hbWVfZ2V0KGVjb3JlX2V2YXNfZWNvcmVfZXZhc19nZXQoZXZhcykpOworICAg
IGlmICghc3RybmNtcChlbmdpbmUsICJvcGVuZ2xfeDExIiwgc3RybGVuKCJvcGVuZ2xfeDExIikp
KSB7CisgICAgICAgIG1fZXZhc0dMID0gRWZsVW5pcXVlUHRyPEV2YXNfR0w+KGV2YXNfZ2xfbmV3
KGV2YXNfb2JqZWN0X2V2YXNfZ2V0KG1fdmlldykpKTsKKyAgICAgICAgaWYgKG1fZXZhc0dMKQor
ICAgICAgICAgICAgbV9ldmFzR0xDb250ZXh0ID0gRXZhc0dMQ29udGV4dDo6Y3JlYXRlKG1fZXZh
c0dMLmdldCgpKTsKKyAgICB9CiAKLSAgICBtX2V2YXNHTENvbnRleHQgPSBFdmFzR0xDb250ZXh0
OjpjcmVhdGUobV9ldmFzR0wuZ2V0KCkpOwogICAgIGlmICghbV9ldmFzR0xDb250ZXh0KQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBFdmFzX0Nvb3JkIHdpZHRoID0gMDsKLSAgICBFdmFz
X0Nvb3JkIGhlaWdodCA9IDA7Ci0gICAgZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0KG1fdmlldywg
MCwgMCwgJndpZHRoLCAmaGVpZ2h0KTsKLQotICAgIEludFNpemUgd2ViVmlld1NpemUod2lkdGgs
IGhlaWdodCk7Ci0gICAgaWYgKHdlYlZpZXdTaXplLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBtX2lzQWNjZWxlcmF0ZWQgPSBmYWxzZTsKK30KIAotICAgIHJldHVy
biByZXNpemUod2ViVmlld1NpemUpOworQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6On5B
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCgpCit7CiB9CiAKIHZvaWQgQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQ6OnN5bmNMYXllcnMoVGltZXI8QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQ+KikKQEAgLTcxLDggKzY2LDE2IEBAIHZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQ6OnN5bmNMYXllcnMoVGltZXI8QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRlCiAg
ICAgZXdrX3ZpZXdfbWFya19mb3Jfc3luYyhtX3ZpZXcpOwogfQogCi1ib29sIEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0OjpyZXNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3ZvaWQgQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnJlc2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQog
eworICAgIGlmIChtX3ZpZXdTaXplID09IHNpemUpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
dmlld1NpemUgPSBzaXplOworCisgICAgaWYgKCFtX2lzQWNjZWxlcmF0ZWQpCisgICAgICAgIHJl
dHVybjsKKwogICAgIHN0YXRpYyBFdmFzX0dMX0NvbmZpZyBldmFzR0xDb25maWcgPSB7CiAgICAg
ICAgIEVWQVNfR0xfUkdCQV84ODg4LAogICAgICAgICBFVkFTX0dMX0RFUFRIX0JJVF84LApAQCAt
ODIsODkgKzg1LDEwMCBAQCBib29sIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpyZXNp
emUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICB9OwogCiAgICAgbV9ldmFzR0xTdXJmYWNlID0g
RXZhc0dMU3VyZmFjZTo6Y3JlYXRlKG1fZXZhc0dMLmdldCgpLCAmZXZhc0dMQ29uZmlnLCBzaXpl
KTsKLSAgICBpZiAoIW1fZXZhc0dMU3VyZmFjZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmICghbV9ldmFzR0xTdXJmYWNlKSB7CisgICAgICAgIEVSUigiRmFpbGVkIHRvIGNyZWF0ZSBh
IEV2YXNHTFN1cmZhY2UuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBFdmFzX05h
dGl2ZV9TdXJmYWNlIG5hdGl2ZVN1cmZhY2U7CiAgICAgZXZhc19nbF9uYXRpdmVfc3VyZmFjZV9n
ZXQobV9ldmFzR0wuZ2V0KCksIG1fZXZhc0dMU3VyZmFjZS0+c3VyZmFjZSgpLCAmbmF0aXZlU3Vy
ZmFjZSk7CiAgICAgZXZhc19vYmplY3RfaW1hZ2VfbmF0aXZlX3N1cmZhY2Vfc2V0KG1fY29tcG9z
aXRpbmdPYmplY3QsICZuYXRpdmVTdXJmYWNlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KIAotYm9v
bCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6Y2FuQ29tcG9zaXRlKCkKLXsKLSAgICBy
ZXR1cm4gbV9yb290R3JhcGhpY3NMYXllciAmJiBtX3RleHR1cmVNYXBwZXI7CisgICAgaWYgKCFl
dmFzX2dsX21ha2VfY3VycmVudChtX2V2YXNHTC5nZXQoKSwgbV9ldmFzR0xTdXJmYWNlLT5zdXJm
YWNlKCksIG1fZXZhc0dMQ29udGV4dC0+Y29udGV4dCgpKSkgeworICAgICAgICBFUlIoIkZhaWxl
ZCB0byBldmFzX2dsX21ha2VfY3VycmVudC4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGV2YXNfZ2xfYXBpX2dldChtX2V2YXNHTC5nZXQoKSktPmdsVmlld3BvcnQoMCwgMCwgc2l6
ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKKyAgICBldmFzX2dsX2FwaV9nZXQobV9ldmFzR0wu
Z2V0KCkpLT5nbENsZWFyQ29sb3IoMSwgMSwgMSwgMSk7CisgICAgZXZhc19nbF9hcGlfZ2V0KG1f
ZXZhc0dMLmdldCgpKS0+Z2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKIH0KIAogdm9pZCBB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6Zmx1c2hBbmRSZW5kZXJMYXllcnMoKQogewot
ICAgIGlmICghY2FuQ29tcG9zaXRlKCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIE1haW5GcmFt
ZSYgZnJhbWUgPSBFV0tQcml2YXRlOjpjb3JlUGFnZShtX3ZpZXcpLT5tYWluRnJhbWUoKTsKICAg
ICBpZiAoIWZyYW1lLmNvbnRlbnRSZW5kZXJlcigpIHx8ICFmcmFtZS52aWV3KCkpCiAgICAgICAg
IHJldHVybjsKICAgICBmcmFtZS52aWV3KCktPnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRS
ZWN1cnNpdmUoKTsKIAotICAgIGlmICghY2FuQ29tcG9zaXRlKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGlmICghZXZhc19nbF9tYWtlX2N1cnJlbnQobV9ldmFzR0wuZ2V0KCksIG1fZXZhc0dM
U3VyZmFjZS0+c3VyZmFjZSgpLCBtX2V2YXNHTENvbnRleHQtPmNvbnRleHQoKSkpCi0gICAgICAg
IHJldHVybjsKLQogICAgIGlmICghZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dCgpOwotCi0gICAgaWYgKHRv
VGV4dHVyZU1hcHBlckxheWVyKG1fcm9vdEdyYXBoaWNzTGF5ZXIuZ2V0KCkpLT5kZXNjZW5kYW50
c09yU2VsZkhhdmVSdW5uaW5nQW5pbWF0aW9ucygpICYmICFtX3N5bmNUaW1lci5pc0FjdGl2ZSgp
KQotICAgICAgICBtX3N5bmNUaW1lci5zdGFydE9uZVNob3QoMSAvIGNvbXBvc2l0aW5nRnJhbWVS
YXRlKTsKKyAgICBpZiAobV9pc0FjY2VsZXJhdGVkKQorICAgICAgICBwYWludFRvQ3VycmVudEdM
Q29udGV4dCgpOworICAgIGVsc2UKKyAgICAgICAgcGFpbnRUb0dyYXBoaWNzQ29udGV4dCgpOwog
fQogCiBib29sIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpmbHVzaFBlbmRpbmdMYXll
ckNoYW5nZXMoKQogewotICAgIG1fcm9vdEdyYXBoaWNzTGF5ZXItPmZsdXNoQ29tcG9zaXRpbmdT
dGF0ZUZvclRoaXNMYXllck9ubHkoKTsKKyAgICBpZiAoIW1fcm9vdExheWVyKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBtX3Jvb3RMYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9y
VGhpc0xheWVyT25seSgpOwogICAgIHJldHVybiBFV0tQcml2YXRlOjpjb3JlUGFnZShtX3ZpZXcp
LT5tYWluRnJhbWUoKS52aWV3KCktPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUluY2x1ZGluZ1N1YmZy
YW1lcygpOwogfQogCi12b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpjb21wb3Np
dGVMYXllcnNUb0NvbnRleHQoKQordm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6
cGFpbnRUb0dyYXBoaWNzQ29udGV4dCgpCiB7Ci0gICAgRXZhc19Db29yZCB3aWR0aCA9IDA7Ci0g
ICAgRXZhc19Db29yZCBoZWlnaHQgPSAwOwotICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldCht
X3ZpZXcsIDAsIDAsICZ3aWR0aCwgJmhlaWdodCk7CisgICAgaWYgKCFtX3RleHR1cmVNYXBwZXIp
CisgICAgICAgIG1fdGV4dHVyZU1hcHBlciA9IFRleHR1cmVNYXBwZXI6OmNyZWF0ZShUZXh0dXJl
TWFwcGVyOjpTb2Z0d2FyZU1vZGUpOwogCi0gICAgZXZhc19nbF9hcGlfZ2V0KG1fZXZhc0dMLmdl
dCgpKS0+Z2xWaWV3cG9ydCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKLSAgICBldmFzX2dsX2FwaV9n
ZXQobV9ldmFzR0wuZ2V0KCkpLT5nbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAgIFJl
ZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBjcmVhdGVTdXJmYWNlRm9ySW1hZ2UobV9j
b21wb3NpdGluZ09iamVjdCk7CisgICAgaWYgKCFzdXJmYWNlKQorICAgICAgICByZXR1cm47CiAK
LSAgICBtX3RleHR1cmVNYXBwZXItPmJlZ2luUGFpbnRpbmcoKTsKLSAgICBtX3RleHR1cmVNYXBw
ZXItPmJlZ2luQ2xpcChUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBGbG9hdFJlY3QoMCwgMCwgd2lk
dGgsIGhlaWdodCkpOwotICAgIHRvVGV4dHVyZU1hcHBlckxheWVyKG1fcm9vdEdyYXBoaWNzTGF5
ZXIuZ2V0KCkpLT5wYWludCgpOwotICAgIG1fZnBzQ291bnRlci51cGRhdGVGUFNBbmREaXNwbGF5
KG1fdGV4dHVyZU1hcHBlci5nZXQoKSk7Ci0gICAgbV90ZXh0dXJlTWFwcGVyLT5lbmRDbGlwKCk7
Ci0gICAgbV90ZXh0dXJlTWFwcGVyLT5lbmRQYWludGluZygpOworICAgIFBsYXRmb3JtQ29udGV4
dENhaXJvIHBsYXRmb3JtQ29udGV4dChjYWlyb19jcmVhdGUoc3VyZmFjZS5nZXQoKSkpOworICAg
IEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KCZwbGF0Zm9ybUNvbnRleHQpOworICAgIG1fdGV4dHVy
ZU1hcHBlci0+c2V0R3JhcGhpY3NDb250ZXh0KCZjb250ZXh0KTsKKworICAgIGNvbXBvc2l0ZUxh
eWVycygpOwogfQogCi12b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjphdHRhY2hS
b290R3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyKiByb290TGF5ZXIpCit2b2lkIEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0OjpwYWludFRvQ3VycmVudEdMQ29udGV4dCgpCiB7Ci0gICAg
aWYgKCFyb290TGF5ZXIpIHsKLSAgICAgICAgbV9yb290R3JhcGhpY3NMYXllciA9IG51bGxwdHI7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBpZiAoIW1fdGV4dHVyZU1hcHBlcikgewot
ICAgICAgICBldmFzX2dsX21ha2VfY3VycmVudChtX2V2YXNHTC5nZXQoKSwgbV9ldmFzR0xTdXJm
YWNlLT5zdXJmYWNlKCksIG1fZXZhc0dMQ29udGV4dC0+Y29udGV4dCgpKTsKLSAgICAgICAgbV90
ZXh0dXJlTWFwcGVyID0gVGV4dHVyZU1hcHBlckdMOjpjcmVhdGUoKTsKKyAgICAgICAgbV90ZXh0
dXJlTWFwcGVyID0gVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKFRleHR1cmVNYXBwZXI6Ok9wZW5HTE1v
ZGUpOworICAgICAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPihtX3RleHR1cmVNYXBw
ZXIuZ2V0KCkpLT5zZXRFbmFibGVFZGdlRGlzdGFuY2VBbnRpYWxpYXNpbmcodHJ1ZSk7CiAgICAg
fQogCi0gICAgbV9yb290R3JhcGhpY3NMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZSgwLCAw
KTsKLSAgICBtX3Jvb3RHcmFwaGljc0xheWVyLT5hZGRDaGlsZChyb290TGF5ZXIpOwotICAgIG1f
cm9vdEdyYXBoaWNzTGF5ZXItPnNldERyYXdzQ29udGVudChmYWxzZSk7Ci0gICAgbV9yb290R3Jh
cGhpY3NMYXllci0+c2V0TWFza3NUb0JvdW5kcyhmYWxzZSk7Ci0gICAgbV9yb290R3JhcGhpY3NM
YXllci0+c2V0U2l6ZShJbnRTaXplKDEsIDEpKTsKKyAgICBpZiAoIWV2YXNfZ2xfbWFrZV9jdXJy
ZW50KG1fZXZhc0dMLmdldCgpLCBtX2V2YXNHTFN1cmZhY2UtPnN1cmZhY2UoKSwgbV9ldmFzR0xD
b250ZXh0LT5jb250ZXh0KCkpKQorICAgICAgICByZXR1cm47CisKKyAgICBldmFzX2dsX2FwaV9n
ZXQobV9ldmFzR0wuZ2V0KCkpLT5nbFZpZXdwb3J0KDAsIDAsIG1fdmlld1NpemUud2lkdGgoKSwg
bV92aWV3U2l6ZS5oZWlnaHQoKSk7CisgICAgZXZhc19nbF9hcGlfZ2V0KG1fZXZhc0dMLmdldCgp
KS0+Z2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAgIGNvbXBvc2l0ZUxheWVycygp
OworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpjb21wb3NpdGVMYXll
cnMoKQoreworICAgIFRleHR1cmVNYXBwZXJMYXllciogY3VycmVudFJvb3RMYXllciA9IHRvVGV4
dHVyZU1hcHBlckxheWVyKG1fcm9vdExheWVyKTsKKyAgICBpZiAoIWN1cnJlbnRSb290TGF5ZXIp
CisgICAgICAgIHJldHVybjsKIAotICAgIHRvVGV4dHVyZU1hcHBlckxheWVyKG1fcm9vdEdyYXBo
aWNzTGF5ZXIuZ2V0KCkpLT5zZXRUZXh0dXJlTWFwcGVyKG1fdGV4dHVyZU1hcHBlci5nZXQoKSk7
CisgICAgY3VycmVudFJvb3RMYXllci0+c2V0VGV4dHVyZU1hcHBlcihtX3RleHR1cmVNYXBwZXIu
Z2V0KCkpOworICAgIGN1cnJlbnRSb290TGF5ZXItPmFwcGx5QW5pbWF0aW9uc1JlY3Vyc2l2ZWx5
KCk7CisKKyAgICBtX3RleHR1cmVNYXBwZXItPmJlZ2luUGFpbnRpbmcoKTsKKyAgICBtX3RleHR1
cmVNYXBwZXItPmJlZ2luQ2xpcChUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBGbG9hdFJlY3QoRmxv
YXRQb2ludCgpLCBtX3ZpZXdTaXplKSk7CisgICAgY3VycmVudFJvb3RMYXllci0+cGFpbnQoKTsK
KyAgICBtX2Zwc0NvdW50ZXIudXBkYXRlRlBTQW5kRGlzcGxheShtX3RleHR1cmVNYXBwZXIuZ2V0
KCkpOworICAgIG1fdGV4dHVyZU1hcHBlci0+ZW5kQ2xpcCgpOworICAgIG1fdGV4dHVyZU1hcHBl
ci0+ZW5kUGFpbnRpbmcoKTsKIAotICAgIG1fcm9vdEdyYXBoaWNzTGF5ZXItPmZsdXNoQ29tcG9z
aXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKKyAgICBpZiAoY3VycmVudFJvb3RMYXllci0+
ZGVzY2VuZGFudHNPclNlbGZIYXZlUnVubmluZ0FuaW1hdGlvbnMoKSAmJiAhbV9zeW5jVGltZXIu
aXNBY3RpdmUoKSkKKyAgICAgICAgbV9zeW5jVGltZXIuc3RhcnRPbmVTaG90KDEgLyBjb21wb3Np
dGluZ0ZyYW1lUmF0ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dEVmbC5oCmluZGV4IDQ4M2M4OWY4YjYyNzQ1YWEyZWMxMDUzZjVm
ZDU4YTUwNzIyYmI0OWUuLjkzYjllYTQ5MjczMzJiMDI3YTdiZmY2Y2YzYWRhODFhYmI4ZDdjMTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRFZmwuaApAQCAtNDIsMjUgKzQyLDIz
IEBAIHB1YmxpYzoKICAgICBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dChFdmFzX09iamVj
dCogZXdrVmlldywgRXZhc19PYmplY3QqIGNvbXBvc2l0aW5nT2JqZWN0KTsKICAgICB+QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQoKTsKIAotICAgIGJvb2wgaW5pdGlhbGl6ZSgpOwotCi0g
ICAgYm9vbCByZXNpemUoY29uc3QgSW50U2l6ZSYpOwotICAgIHZvaWQgYXR0YWNoUm9vdEdyYXBo
aWNzTGF5ZXIoR3JhcGhpY3NMYXllciogcm9vdExheWVyKTsKLQorICAgIHZvaWQgc2V0Um9vdEdy
YXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllciogcm9vdExheWVyKSB7IG1fcm9vdExheWVyID0gcm9v
dExheWVyOyB9CisgICAgdm9pZCByZXNpemUoY29uc3QgSW50U2l6ZSYpOwogICAgIHZvaWQgZmx1
c2hBbmRSZW5kZXJMYXllcnMoKTsKLSAgICBib29sIGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygp
OwotICAgIHZvaWQgY29tcG9zaXRlTGF5ZXJzVG9Db250ZXh0KCk7CiAKLSAgICBib29sIGNhbkNv
bXBvc2l0ZSgpOworcHJpdmF0ZToKKyAgICB2b2lkIHBhaW50VG9HcmFwaGljc0NvbnRleHQoKTsK
KyAgICB2b2lkIHBhaW50VG9DdXJyZW50R0xDb250ZXh0KCk7CisgICAgdm9pZCBjb21wb3NpdGVM
YXllcnMoKTsKIAorICAgIGJvb2wgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCk7CiAgICAgdm9p
ZCBzeW5jTGF5ZXJzKFRpbWVyPEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0PiopOwogCi1w
cml2YXRlOgogICAgIEV2YXNfT2JqZWN0KiBtX3ZpZXc7CiAgICAgRXZhc19PYmplY3QqIG1fY29t
cG9zaXRpbmdPYmplY3Q7CiAKICAgICBPd25QdHI8VGV4dHVyZU1hcHBlcj4gbV90ZXh0dXJlTWFw
cGVyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0xheWVyPiBtX3Jvb3RHcmFwaGljc0xh
eWVyOworICAgIEdyYXBoaWNzTGF5ZXIqIG1fcm9vdExheWVyOwogICAgIFRpbWVyPEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0PiBtX3N5bmNUaW1lcjsKIAogICAgIEVmbFVuaXF1ZVB0cjxF
dmFzX0dMPiBtX2V2YXNHTDsKQEAgLTY4LDYgKzY2LDkgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RXZhc0dMU3VyZmFjZT4gbV9ldmFzR0xTdXJmYWNlOwogCiAgICAgVGV4dHVyZU1h
cHBlckZQU0NvdW50ZXIgbV9mcHNDb3VudGVyOworCisgICAgSW50U2l6ZSBtX3ZpZXdTaXplOwor
ICAgIGJvb2wgbV9pc0FjY2VsZXJhdGVkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXggNTc2NTQ1ODU2YzFjYzdiMTI0ZDkzMmY2
NDA1MTJmZTBjNGFlM2U2Ny4uYmE5NTFkYmI0N2U2MTBkYTg3ZjNlZGI0MzkwZmZmY2M1MTlkMmM1
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC0yNTUsOCArMjU1LDYgQEAgc3Ry
dWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogICAgIFdlYkNvcmU6OlZpZXdwb3J0QXJndW1l
bnRzIHZpZXdwb3J0QXJndW1lbnRzOwogICAgIEV3a19IaXN0b3J5KiBoaXN0b3J5OwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dD4gYWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ7Ci0gICAgYm9vbCBpc0NvbXBvc2l0aW5nQWN0aXZl
OwotICAgIFJlZlB0cjxFdmFzX09iamVjdD4gY29tcG9zaXRpbmdPYmplY3Q7CiAjaWYgRU5BQkxF
KElOUFVUX1RZUEVfQ09MT1IpCiAgICAgV2ViQ29yZTo6Q29sb3JDaG9vc2VyQ2xpZW50KiBjb2xv
ckNob29zZXJDbGllbnQ7CiAjZW5kaWYKQEAgLTI3Miw4ICsyNzAsNiBAQCBzdHJ1Y3QgX0V3a19W
aWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgICAgIHNpemVfdCBjb3VudDsKICAgICAgICAgc2l6ZV90
IGFsbG9jYXRlZDsKICAgICB9IHJlcGFpbnRzOwotICAgIFdURjo6VmVjdG9yPFdlYkNvcmU6Oklu
dFJlY3Q+IG1fcmVjdHNUb1Njcm9sbDsKLSAgICBXVEY6OlZlY3RvcjxXZWJDb3JlOjpJbnRTaXpl
PiBtX3Njcm9sbE9mZnNldHM7CiAgICAgdW5zaWduZWQgaW50IGltaDsgLyoqPCBpbnB1dCBtZXRo
b2QgaGludHMgKi8KICAgICBzdHJ1Y3QgewogICAgICAgICBib29sIHZpZXdDbGVhcmVkIDogMTsK
QEAgLTQ3MiwxMiArNDY4LDYgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3JlcGFpbnRzX2ZsdXNo
KEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdikKICAgICBfZXdrX3ZpZXdfcmVwYWludHNfcmVz
aXplKHByaXYsIGV3a1ZpZXdSZXBhaW50c1NpemVNYXhpbXVtRnJlZSk7CiB9CiAKLXN0YXRpYyB2
b2lkIF9ld2tfdmlld19zY3JvbGxzX2ZsdXNoKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdikK
LXsKLSAgICBwcml2LT5tX3Njcm9sbE9mZnNldHMuY2xlYXIoKTsKLSAgICBwcml2LT5tX3JlY3Rz
VG9TY3JvbGwuY2xlYXIoKTsKLX0KLQogLy8gRGVmYXVsdCBFdmVudCBIYW5kbGluZyAvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiBzdGF0aWMgRWluYV9Cb29s
IF9ld2tfdmlld19zbWFydF9mb2N1c19pbihFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEp
CiB7CkBAIC03NDcsNiArNzM3LDcgQEAgc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3
a192aWV3X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKICNlbmRpZgog
ICAgIHBhZ2VTZXR0aW5ncy5zZXRJbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5hYmxlZCh0cnVl
KTsKICAgICBwYWdlU2V0dGluZ3Muc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQodHJ1
ZSk7CisgICAgcGFnZVNldHRpbmdzLnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRydWUpOwogICAg
IGNoYXIqIGRlYnVnVmlzdWFsc0Vudmlyb25tZW50ID0gZ2V0ZW52KCJXRUJLSVRfU0hPV19DT01Q
T1NJVElOR19ERUJVR19WSVNVQUxTIik7CiAgICAgYm9vbCBzaG93RGVidWdWaXN1YWxzID0gZGVi
dWdWaXN1YWxzRW52aXJvbm1lbnQgJiYgIXN0cmNtcChkZWJ1Z1Zpc3VhbHNFbnZpcm9ubWVudCwg
IjEiKTsKICAgICBwYWdlU2V0dGluZ3Muc2V0U2hvd0RlYnVnQm9yZGVycyhzaG93RGVidWdWaXN1
YWxzKTsKQEAgLTgzNCw4ICs4MjUsNiBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBf
ZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogICAgIHBy
aXYtPmNvbnRleHRNZW51ID0gMDsKICNlbmRpZgogCi0gICAgcHJpdi0+aXNDb21wb3NpdGluZ0Fj
dGl2ZSA9IGZhbHNlOwotCiAgICAgcmV0dXJuIHByaXY7CiB9CiAKQEAgLTg3OCw2ICs4NjcsMTEg
QEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3ByaXZfZGVsKEV3a19WaWV3X1ByaXZhdGVfRGF0YSog
cHJpdikKICAgICBkZWxldGUgcHJpdjsKIH0KIAorc3RhdGljIHZvaWQgX2V3a192aWV3X2FjY2Vs
ZXJhdGVkX2NvbXBvc2l0aW5nX2NiKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KikKK3sKKyAgICBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCo+KGRhdGEp
LT5mbHVzaEFuZFJlbmRlckxheWVycygpOworfQorCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21h
cnRfYWRkKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewogICAgIGNvbnN0IEV2YXNfU21hcnQqIHNt
YXJ0ID0gZXZhc19vYmplY3Rfc21hcnRfc21hcnRfZ2V0KGV3a1ZpZXcpOwpAQCAtOTEwLDIyICs5
MDQsMjMgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2FkZChFdmFzX09iamVjdCogZXdr
VmlldykKIAogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNtYXJ0RGF0YSwgcHJpdik7CiAKLSAgICBz
bWFydERhdGEtPmJhY2tpbmdfc3RvcmUgPSBldmFzX29iamVjdF9pbWFnZV9hZGQoc21hcnREYXRh
LT5iYXNlLmV2YXMpOwotICAgIGlmIChFSU5BX1VOTElLRUxZKCFzbWFydERhdGEtPmJhY2tpbmdf
c3RvcmUpKSB7CisgICAgc21hcnREYXRhLT5pbWFnZSA9IGV2YXNfb2JqZWN0X2ltYWdlX2FkZChz
bWFydERhdGEtPmJhc2UuZXZhcyk7CisgICAgaWYgKEVJTkFfVU5MSUtFTFkoIXNtYXJ0RGF0YS0+
aW1hZ2UpKSB7CiAgICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0ZSBiYWNraW5nIHN0b3JlIG9i
amVjdC4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnN0IEVjb3JlX0V2YXMq
IGVjb3JlRXZhcyA9IGVjb3JlX2V2YXNfZWNvcmVfZXZhc19nZXQoc21hcnREYXRhLT5iYXNlLmV2
YXMpOwotICAgIGNvbnN0IGNoYXIqIGVuZ2luZSA9IGVjb3JlX2V2YXNfZW5naW5lX25hbWVfZ2V0
KGVjb3JlRXZhcyk7Ci0gICAgaWYgKCFzdHJuY21wKGVuZ2luZSwgIm9wZW5nbF94MTEiLCBzdHJs
ZW4oIm9wZW5nbF94MTEiKSkpCi0gICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2NvbnRlbnRfaGlu
dF9zZXQoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCBFVkFTX0lNQUdFX0NPTlRFTlRfSElOVF9E
WU5BTUlDKTsKKyAgICBldmFzX29iamVjdF9pbWFnZV9hbHBoYV9zZXQoc21hcnREYXRhLT5pbWFn
ZSwgZmFsc2UpOworICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxlZF9zZXQoc21hcnREYXRhLT5p
bWFnZSwgdHJ1ZSk7CisgICAgZXZhc19vYmplY3RfaW1hZ2Vfc21vb3RoX3NjYWxlX3NldChzbWFy
dERhdGEtPmltYWdlLCBzbWFydERhdGEtPnpvb21fd2Vha19zbW9vdGhfc2NhbGUpOworICAgIGV2
YXNfb2JqZWN0X3Bhc3NfZXZlbnRzX3NldChzbWFydERhdGEtPmltYWdlLCB0cnVlKTsKKyAgICBl
dmFzX29iamVjdF9zbWFydF9tZW1iZXJfYWRkKHNtYXJ0RGF0YS0+aW1hZ2UsIGV3a1ZpZXcpOwor
ICAgIGV2YXNfb2JqZWN0X3Nob3coc21hcnREYXRhLT5pbWFnZSk7CisKKyAgICBwcml2LT5hY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+KGV3a1ZpZXcsIHNtYXJ0RGF0YS0+aW1hZ2UpOwog
Ci0gICAgZXZhc19vYmplY3RfaW1hZ2VfYWxwaGFfc2V0KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9y
ZSwgZmFsc2UpOwotICAgIGV2YXNfb2JqZWN0X2ltYWdlX3Ntb290aF9zY2FsZV9zZXQoc21hcnRE
YXRhLT5iYWNraW5nX3N0b3JlLCBzbWFydERhdGEtPnpvb21fd2Vha19zbW9vdGhfc2NhbGUpOwot
ICAgIGV2YXNfb2JqZWN0X3Bhc3NfZXZlbnRzX3NldChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUs
IHRydWUpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X21lbWJlcl9hZGQoc21hcnREYXRhLT5iYWNr
aW5nX3N0b3JlLCBld2tWaWV3KTsKLSAgICBldmFzX29iamVjdF9zaG93KHNtYXJ0RGF0YS0+YmFj
a2luZ19zdG9yZSk7CisgICAgLy8gU2V0IHRoZSBwaXhlbCBnZXQgY2FsbGJhY2suCisgICAgZXZh
c19vYmplY3RfaW1hZ2VfcGl4ZWxzX2dldF9jYWxsYmFja19zZXQoc21hcnREYXRhLT5pbWFnZSwg
X2V3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX2NiLCBwcml2LT5hY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dC5nZXQoKSk7CiAKICAgICBzbWFydERhdGEtPmV2ZW50c19yZWN0ID0g
ZXZhc19vYmplY3RfcmVjdGFuZ2xlX2FkZChzbWFydERhdGEtPmJhc2UuZXZhcyk7CiAgICAgZXZh
c19vYmplY3RfY29sb3Jfc2V0KHNtYXJ0RGF0YS0+ZXZlbnRzX3JlY3QsIDAsIDAsIDAsIDApOwpA
QCAtOTgxLDM0ICs5NzYsMTQgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZShF
dmFzX09iamVjdCogZXdrVmlldywgRXZhc19Db29yZCB3aWR0aCwgRXZhc18KICAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKIAogICAgIC8vIHRoZXNlIHNo
b3VsZCBiZSBxdWV1ZWQgYW5kIHByb2Nlc3NlZCBpbiBjYWxjdWxhdGUgYXMgd2VsbCEKLSAgICBl
dmFzX29iamVjdF9yZXNpemUoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCB3aWR0aCwgaGVpZ2h0
KTsKLSAgICBldmFzX29iamVjdF9pbWFnZV9zaXplX3NldChzbWFydERhdGEtPmJhY2tpbmdfc3Rv
cmUsIHdpZHRoLCBoZWlnaHQpOworICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShzbWFydERhdGEtPmlt
YWdlLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBldmFzX29iamVjdF9pbWFnZV9zaXplX3NldChzbWFy
dERhdGEtPmltYWdlLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBldmFzX29iamVjdF9pbWFnZV9maWxs
X3NldChzbWFydERhdGEtPmltYWdlLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKIAotICAgIGlmIChw
cml2LT5jb21wb3NpdGluZ09iamVjdCkgewotICAgICAgICBldmFzX29iamVjdF9yZXNpemUocHJp
di0+Y29tcG9zaXRpbmdPYmplY3QuZ2V0KCksIHdpZHRoLCBoZWlnaHQpOwotICAgICAgICBldmFz
X29iamVjdF9pbWFnZV9zaXplX3NldChwcml2LT5jb21wb3NpdGluZ09iamVjdC5nZXQoKSwgd2lk
dGgsIGhlaWdodCk7Ci0gICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxfc2V0KHByaXYtPmNv
bXBvc2l0aW5nT2JqZWN0LmdldCgpLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKLQotICAgICAgICBp
ZiAocHJpdi0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCi0gICAgICAgICAgICBwcml2
LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+cmVzaXplKFdlYkNvcmU6OkludFNpemUo
d2lkdGgsIGhlaWdodCkpOwotICAgIH0KKyAgICBwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dC0+cmVzaXplKFdlYkNvcmU6OkludFNpemUod2lkdGgsIGhlaWdodCkpOwogCiAgICAg
c21hcnREYXRhLT5jaGFuZ2VkLnNpemUgPSB0cnVlOwogICAgIF9ld2tfdmlld19zbWFydF9jaGFu
Z2VkKHNtYXJ0RGF0YSk7Ci0KLSAgICBpZiAoc21hcnREYXRhLT5hbmltYXRlZF96b29tLnpvb20u
Y3VycmVudCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjplcHNpbG9uKCkpIHsKLSAgICAg
ICAgRXZhc19PYmplY3QqIGNsaXAgPSBldmFzX29iamVjdF9jbGlwX2dldChzbWFydERhdGEtPmJh
Y2tpbmdfc3RvcmUpOwotICAgICAgICBFdmFzX0Nvb3JkIHgsIHksIGNvbnRlbnRXaWR0aCwgY29u
dGVudEhlaWdodDsKLSAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZmlsbF9zZXQoc21hcnREYXRh
LT5iYWNraW5nX3N0b3JlLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKLSAgICAgICAgZXZhc19vYmpl
Y3RfZ2VvbWV0cnlfZ2V0KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgJngsICZ5LCAwLCAwKTsK
LSAgICAgICAgZXZhc19vYmplY3RfbW92ZShjbGlwLCB4LCB5KTsKLSAgICAgICAgZXdrX2ZyYW1l
X2NvbnRlbnRzX3NpemVfZ2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgJmNvbnRlbnRXaWR0aCwg
JmNvbnRlbnRIZWlnaHQpOwotICAgICAgICBpZiAod2lkdGggPiBjb250ZW50V2lkdGgpCi0gICAg
ICAgICAgICB3aWR0aCA9IGNvbnRlbnRXaWR0aDsKLSAgICAgICAgaWYgKGhlaWdodCA+IGNvbnRl
bnRIZWlnaHQpCi0gICAgICAgICAgICBoZWlnaHQgPSBjb250ZW50SGVpZ2h0OwotICAgICAgICBl
dmFzX29iamVjdF9yZXNpemUoY2xpcCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgfQogfQogCiBzdGF0
aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfbW92ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19D
b29yZCAvKngqLywgRXZhc19Db29yZCAvKnkqLykKQEAgLTEwNTMsMTczICsxMDI4LDYgQEAgc3Rh
dGljIGlubGluZSB2b2lkIF9ld2tfdmlld19zY3JlZW5fbW92ZSh1aW50MzJfdCogaW1hZ2UsIHNp
emVfdCBkZXN0aW5hdGlvblgsIHMKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBfZXdr
X3ZpZXdfc2Nyb2xsX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCB2b2lk
KiBwaXhlbHMsIEV2YXNfQ29vcmQgd2lkdGgsIEV2YXNfQ29vcmQgaGVpZ2h0LCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBzY3JvbGxPZmZzZXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3RU
b1Njcm9sbCkKLXsKLSAgICBpbnQgc2Nyb2xsWCA9IHJlY3RUb1Njcm9sbC54KCk7Ci0gICAgaW50
IHNjcm9sbFkgPSByZWN0VG9TY3JvbGwueSgpOwotICAgIGludCBzY3JvbGxXaWR0aCA9IHJlY3RU
b1Njcm9sbC53aWR0aCgpOwotICAgIGludCBzY3JvbGxIZWlnaHQgPSByZWN0VG9TY3JvbGwuaGVp
Z2h0KCk7Ci0KLSAgICBpZiAoYWJzKHNjcm9sbE9mZnNldC53aWR0aCgpKSA+PSBzY3JvbGxXaWR0
aCB8fCBhYnMoc2Nyb2xsT2Zmc2V0LmhlaWdodCgpKSA+PSBzY3JvbGxIZWlnaHQpIHsKLSAgICAg
ICAgZXdrX3ZpZXdfcmVwYWludF9hZGQoc21hcnREYXRhLT5fcHJpdiwgc2Nyb2xsWCwgc2Nyb2xs
WSwgc2Nyb2xsV2lkdGgsIHNjcm9sbEhlaWdodCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoc2Nyb2xsWCA8IDApIHsKLSAgICAgICAgc2Nyb2xsV2lkdGggKz0gc2Nyb2xsWDsK
LSAgICAgICAgc2Nyb2xsWCA9IDA7Ci0gICAgfQotICAgIGlmIChzY3JvbGxZIDwgMCkgewotICAg
ICAgICBzY3JvbGxIZWlnaHQgKz0gc2Nyb2xsWTsKLSAgICAgICAgc2Nyb2xsWSA9IDA7Ci0gICAg
fQotCi0gICAgaWYgKHNjcm9sbFggKyBzY3JvbGxXaWR0aCA+IHdpZHRoKQotICAgICAgICBzY3Jv
bGxXaWR0aCA9IHdpZHRoIC0gc2Nyb2xsWDsKLSAgICBpZiAoc2Nyb2xsWSArIHNjcm9sbEhlaWdo
dCA+IGhlaWdodCkKLSAgICAgICAgc2Nyb2xsSGVpZ2h0ID0gaGVpZ2h0IC0gc2Nyb2xsWTsKLQot
ICAgIGlmIChzY3JvbGxXaWR0aCA8PSAwIHx8IHNjcm9sbEhlaWdodCA8PSAwKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpbnQgc291cmNlWCA9IHNjcm9sbE9mZnNldC53aWR0aCgpIDwgMCA/IGFi
cyhzY3JvbGxPZmZzZXQud2lkdGgoKSkgOiAwOwotICAgIGludCBzb3VyY2VZID0gc2Nyb2xsT2Zm
c2V0LmhlaWdodCgpIDwgMCA/IGFicyhzY3JvbGxPZmZzZXQuaGVpZ2h0KCkpIDogMDsKLSAgICBp
bnQgZGVzdGluYXRpb25YID0gc2Nyb2xsT2Zmc2V0LndpZHRoKCkgPCAwID8gMCA6IHNjcm9sbE9m
ZnNldC53aWR0aCgpOwotICAgIGludCBkZXN0aW5hdGlvblkgPSBzY3JvbGxPZmZzZXQuaGVpZ2h0
KCkgPCAwID8gMCA6IHNjcm9sbE9mZnNldC5oZWlnaHQoKTsKLSAgICBpbnQgY29weVdpZHRoID0g
c2Nyb2xsV2lkdGggLSBhYnMoc2Nyb2xsT2Zmc2V0LndpZHRoKCkpOwotICAgIGludCBjb3B5SGVp
Z2h0ID0gc2Nyb2xsSGVpZ2h0IC0gYWJzKHNjcm9sbE9mZnNldC5oZWlnaHQoKSk7Ci0gICAgaWYg
KHNjcm9sbE9mZnNldC53aWR0aCgpIHx8IHNjcm9sbE9mZnNldC5oZWlnaHQoKSkgewotICAgICAg
ICBfZXdrX3ZpZXdfc2NyZWVuX21vdmUoc3RhdGljX2Nhc3Q8dWludDMyX3QqPihwaXhlbHMpLCBk
ZXN0aW5hdGlvblgsIGRlc3RpbmF0aW9uWSwgc291cmNlWCwgc291cmNlWSwgY29weVdpZHRoLCBj
b3B5SGVpZ2h0LCB3aWR0aCk7Ci0gICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRl
X2FkZChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsIGRlc3RpbmF0aW9uWCwgZGVzdGluYXRpb25Z
LCBjb3B5V2lkdGgsIGNvcHlIZWlnaHQpOwotICAgIH0KLQotICAgIEVpbmFfUmVjdGFuZ2xlIHZl
cnRpY2FsVXBkYXRlOwotICAgIHZlcnRpY2FsVXBkYXRlLnggPSBkZXN0aW5hdGlvblggPyAwIDog
Y29weVdpZHRoIC0gMTsKLSAgICB2ZXJ0aWNhbFVwZGF0ZS55ID0gMDsKLSAgICB2ZXJ0aWNhbFVw
ZGF0ZS53ID0gYWJzKHNjcm9sbE9mZnNldC53aWR0aCgpKTsKLSAgICB2ZXJ0aWNhbFVwZGF0ZS5o
ID0gc2Nyb2xsSGVpZ2h0OwotICAgIGlmICh2ZXJ0aWNhbFVwZGF0ZS53ICYmIHZlcnRpY2FsVXBk
YXRlLmgpCi0gICAgICAgIGV3a192aWV3X3JlcGFpbnRfYWRkKHNtYXJ0RGF0YS0+X3ByaXYsIHZl
cnRpY2FsVXBkYXRlLngsIHZlcnRpY2FsVXBkYXRlLnksIHZlcnRpY2FsVXBkYXRlLncsIHZlcnRp
Y2FsVXBkYXRlLmgpOwotCi0gICAgRWluYV9SZWN0YW5nbGUgaG9yaXpvbnRhbFVwZGF0ZTsKLSAg
ICBob3Jpem9udGFsVXBkYXRlLnggPSBkZXN0aW5hdGlvblg7Ci0gICAgaG9yaXpvbnRhbFVwZGF0
ZS55ID0gZGVzdGluYXRpb25ZID8gMCA6IGNvcHlIZWlnaHQgLSAxOwotICAgIGhvcml6b250YWxV
cGRhdGUudyA9IGNvcHlXaWR0aDsKLSAgICBob3Jpem9udGFsVXBkYXRlLmggPSBhYnMoc2Nyb2xs
T2Zmc2V0LmhlaWdodCgpKTsKLSAgICBpZiAoaG9yaXpvbnRhbFVwZGF0ZS53ICYmIGhvcml6b250
YWxVcGRhdGUuaCkKLSAgICAgICAgZXdrX3ZpZXdfcmVwYWludF9hZGQoc21hcnREYXRhLT5fcHJp
diwgaG9yaXpvbnRhbFVwZGF0ZS54LCBob3Jpem9udGFsVXBkYXRlLnksIGhvcml6b250YWxVcGRh
dGUudywgaG9yaXpvbnRhbFVwZGF0ZS5oKTsKLX0KLQotc3RhdGljIHZvaWQgX2V3a192aWV3X3Nt
YXJ0X3Njcm9sbHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCi17Ci0g
ICAgRXZhc19Db29yZCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodDsKLSAgICBjb25zdCBXVEY6OlZl
Y3RvcjxXZWJDb3JlOjpJbnRTaXplPiYgc2Nyb2xsT2Zmc2V0cyA9IHNtYXJ0RGF0YS0+X3ByaXYt
Pm1fc2Nyb2xsT2Zmc2V0czsKLSAgICBjb25zdCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0
PiYgcmVjdHNUb1Njcm9sbCA9IHNtYXJ0RGF0YS0+X3ByaXYtPm1fcmVjdHNUb1Njcm9sbDsKLQot
ICAgIGlmICghc2Nyb2xsT2Zmc2V0cy5zaXplKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGV2
YXNfb2JqZWN0X2ltYWdlX3NpemVfZ2V0KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgJmltYWdl
V2lkdGgsICZpbWFnZUhlaWdodCk7Ci0KLSAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3RUb1Njcm9s
bCgwLCAwLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCk7Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSBz
Y3JvbGxPZmZzZXQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzY3JvbGxPZmZzZXRzLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgIHJlY3RUb1Njcm9sbC5pbnRlcnNlY3QocmVjdHNUb1Njcm9s
bFtpXSk7Ci0gICAgICAgIHNjcm9sbE9mZnNldCArPSBzY3JvbGxPZmZzZXRzW2ldOwotICAgIH0K
LQotICAgIGlmIChzY3JvbGxPZmZzZXQuaXNaZXJvKCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IHZvaWQqIHBpeGVscyA9IGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfZ2V0KHNtYXJ0RGF0YS0+YmFj
a2luZ19zdG9yZSwgMSk7Ci0gICAgX2V3a192aWV3X3Njcm9sbF9wcm9jZXNzKHNtYXJ0RGF0YSwg
cGl4ZWxzLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCwgc2Nyb2xsT2Zmc2V0LCByZWN0VG9TY3Jv
bGwpOwotCi0gICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9zZXQoc21hcnREYXRhLT5iYWNraW5n
X3N0b3JlLCBwaXhlbHMpOwotCi0gICAgcmV0dXJuOwotfQotCi1zdGF0aWMgYm9vbCBfZXdrX3Zp
ZXdfc21hcnRfcmVwYWludHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEp
Ci17Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVQoc21hcnREYXRhLCBwcml2KTsKLQotICAgIGlmIChz
bWFydERhdGEtPmFuaW1hdGVkX3pvb20uem9vbS5jdXJyZW50IDwgc3RkOjpudW1lcmljX2xpbWl0
czxmbG9hdD46OmVwc2lsb24oKSkgewotICAgICAgICBFdmFzX09iamVjdCogY2xpcCA9IGV2YXNf
b2JqZWN0X2NsaXBfZ2V0KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSk7Ci0KLSAgICAgICAgLy8g
cmVzZXQgZWZmZWN0cyBvZiB6b29tX3dlYWtfc2V0KCkKLSAgICAgICAgZXZhc19vYmplY3RfaW1h
Z2VfZmlsbF9zZXQoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCAwLCAwLCBzbWFydERhdGEtPnZp
ZXcudywgc21hcnREYXRhLT52aWV3LmgpOwotICAgICAgICBldmFzX29iamVjdF9tb3ZlKGNsaXAs
IHNtYXJ0RGF0YS0+dmlldy54LCBzbWFydERhdGEtPnZpZXcueSk7Ci0KLSAgICAgICAgRXZhc19D
b29yZCB3aWR0aCA9IHNtYXJ0RGF0YS0+dmlldy53OwotICAgICAgICBFdmFzX0Nvb3JkIGhlaWdo
dCA9IHNtYXJ0RGF0YS0+dmlldy5oOwotCi0gICAgICAgIEV2YXNfQ29vcmQgY2VudGVyV2lkdGgs
IGNlbnRlckhlaWdodDsKLSAgICAgICAgZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVfZ2V0KHNtYXJ0
RGF0YS0+bWFpbl9mcmFtZSwgJmNlbnRlcldpZHRoLCAmY2VudGVySGVpZ2h0KTsKLSAgICAgICAg
aWYgKHdpZHRoID4gY2VudGVyV2lkdGgpCi0gICAgICAgICAgICB3aWR0aCA9IGNlbnRlcldpZHRo
OwotCi0gICAgICAgIGlmIChoZWlnaHQgPiBjZW50ZXJIZWlnaHQpCi0gICAgICAgICAgICBoZWln
aHQgPSBjZW50ZXJIZWlnaHQ7Ci0KLSAgICAgICAgZXZhc19vYmplY3RfcmVzaXplKGNsaXAsIHdp
ZHRoLCBoZWlnaHQpOwotICAgIH0KLQotICAgIEV2YXNfQ29vcmQgaW1hZ2VXaWR0aCwgaW1hZ2VI
ZWlnaHQ7Ci0gICAgZXZhc19vYmplY3RfaW1hZ2Vfc2l6ZV9nZXQoc21hcnREYXRhLT5iYWNraW5n
X3N0b3JlLCAmaW1hZ2VXaWR0aCwgJmltYWdlSGVpZ2h0KTsKLQotICAgIEVpbmFfVGlsZXIqIHRp
bGVyID0gZWluYV90aWxlcl9uZXcoaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpOwotICAgIGlmICgh
dGlsZXIpIHsKLSAgICAgICAgRVJSKCJjb3VsZCBub3QgY3JlYXRlIHRpbGVyICVkeCVkIiwgaW1h
Z2VXaWR0aCwgaW1hZ2VIZWlnaHQpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0g
ICAgZXdrX3ZpZXdfbGF5b3V0X2lmX25lZWRlZF9yZWN1cnNpdmUocHJpdik7Ci0KLSAgICBzaXpl
X3QgY291bnQ7Ci0gICAgY29uc3QgRWluYV9SZWN0YW5nbGUqIHBhaW50UmVxdWVzdCA9IGV3a192
aWV3X3JlcGFpbnRzX3BvcChwcml2LCAmY291bnQpOwotICAgIGNvbnN0IEVpbmFfUmVjdGFuZ2xl
KiBwYWludFJlcXVlc3RFbmQgPSBwYWludFJlcXVlc3QgKyBjb3VudDsKLSAgICBmb3IgKDsgcGFp
bnRSZXF1ZXN0IDwgcGFpbnRSZXF1ZXN0RW5kOyBwYWludFJlcXVlc3QrKykKLSAgICAgICAgZWlu
YV90aWxlcl9yZWN0X2FkZCh0aWxlciwgcGFpbnRSZXF1ZXN0KTsKLQotICAgIEVpbmFfSXRlcmF0
b3IqIGl0ZXJhdG9yID0gZWluYV90aWxlcl9pdGVyYXRvcl9uZXcodGlsZXIpOwotICAgIGlmICgh
aXRlcmF0b3IpIHsKLSAgICAgICAgRVJSKCJjb3VsZCBub3QgZ2V0IGl0ZXJhdG9yIGZvciB0aWxl
ciIpOwotICAgICAgICBlaW5hX3RpbGVyX2ZyZWUodGlsZXIpOwotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgaWYgKHByaXYt
PnBhZ2UtPm1haW5GcmFtZSgpLnRpbGVkQmFja2luZ1N0b3JlKCkpCi0gICAgICAgIHByaXYtPnBh
Z2UtPm1haW5GcmFtZSgpLnRpbGVkQmFja2luZ1N0b3JlKCktPmNvdmVyV2l0aFRpbGVzSWZOZWVk
ZWQoKTsKLSNlbmRpZgotCi0gICAgRXdrX1BhaW50X0NvbnRleHQqIGNvbnRleHQgPSBld2tfcGFp
bnRfY29udGV4dF9mcm9tX2ltYWdlX25ldyhzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUpOwotICAg
IGV3a19wYWludF9jb250ZXh0X3NhdmUoY29udGV4dCk7Ci0KLSAgICBFaW5hX1JlY3RhbmdsZSog
cmVjdDsKLSAgICBFSU5BX0lURVJBVE9SX0ZPUkVBQ0goaXRlcmF0b3IsIHJlY3QpIHsKLSAgICAg
ICAgZXdrX3ZpZXdfcGFpbnQoc21hcnREYXRhLT5fcHJpdiwgY29udGV4dCwgcmVjdCk7Ci0gICAg
ICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZChzbWFydERhdGEtPmJhY2tpbmdf
c3RvcmUsIHJlY3QtPngsIHJlY3QtPnksIHJlY3QtPncsIHJlY3QtPmgpOwotICAgIH0KLQotI2lm
IEVOQUJMRShJTlNQRUNUT1IpCi0gICAgV2ViQ29yZTo6UGFnZSogcGFnZSA9IEVXS1ByaXZhdGU6
OmNvcmVQYWdlKHNtYXJ0RGF0YS0+c2VsZik7Ci0gICAgaWYgKHBhZ2UpIHsKLSAgICAgICAgV2Vi
Q29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciYgY29udHJvbGxlciA9IHBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKTsKLSAgICAgICAgaWYgKGNvbnRyb2xsZXIuaGlnaGxpZ2h0ZWROb2RlKCkpCi0g
ICAgICAgICAgICBjb250cm9sbGVyLmRyYXdIaWdobGlnaHQoKmNvbnRleHQtPmdyYXBoaWNDb250
ZXh0KTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGV3a19wYWludF9jb250ZXh0X3Jlc3RvcmUoY29u
dGV4dCk7Ci0gICAgZXdrX3BhaW50X2NvbnRleHRfZnJlZShjb250ZXh0KTsKLQotICAgIGVpbmFf
dGlsZXJfZnJlZSh0aWxlcik7Ci0gICAgZWluYV9pdGVyYXRvcl9mcmVlKGl0ZXJhdG9yKTsKLQot
ICAgIHJldHVybiB0cnVlOwotfQotCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3Vs
YXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewogICAgIEVXS19WSUVXX1NEX0dFVChld2tWaWV3
LCBzbWFydERhdGEpOwpAQCAtMTI1OCw3ICsxMDY2LDcgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3
X3NtYXJ0X2NhbGN1bGF0ZShFdmFzX09iamVjdCogZXdrVmlldykKIAogICAgIGlmIChzbWFydERh
dGEtPmNoYW5nZWQucG9zaXRpb24gJiYgKCh4ICE9IHNtYXJ0RGF0YS0+dmlldy54KSB8fCAoeSAh
PSBzbWFydERhdGEtPnZpZXcueSkpKSB7CiAgICAgICAgIGV2YXNfb2JqZWN0X21vdmUoc21hcnRE
YXRhLT5tYWluX2ZyYW1lLCB4LCB5KTsKLSAgICAgICAgZXZhc19vYmplY3RfbW92ZShzbWFydERh
dGEtPmJhY2tpbmdfc3RvcmUsIHgsIHkpOworICAgICAgICBldmFzX29iamVjdF9tb3ZlKHNtYXJ0
RGF0YS0+aW1hZ2UsIHgsIHkpOwogICAgICAgICBldmFzX29iamVjdF9tb3ZlKHNtYXJ0RGF0YS0+
ZXZlbnRzX3JlY3QsIHgsIHkpOwogICAgICAgICBzbWFydERhdGEtPmNoYW5nZWQuZnJhbWVfcmVj
dCA9IHRydWU7CiAgICAgICAgIHNtYXJ0RGF0YS0+dmlldy54ID0geDsKQEAgLTEyNjYsMTIgKzEw
NzQsNiBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2JqZWN0
KiBld2tWaWV3KQogICAgIH0KICAgICBzbWFydERhdGEtPmNoYW5nZWQucG9zaXRpb24gPSBmYWxz
ZTsKIAotICAgIF9ld2tfdmlld19zbWFydF9zY3JvbGxzX3Byb2Nlc3Moc21hcnREYXRhKTsKLSAg
ICBfZXdrX3ZpZXdfc2Nyb2xsc19mbHVzaChwcml2KTsKLQotICAgIGlmICghX2V3a192aWV3X3Nt
YXJ0X3JlcGFpbnRzX3Byb2Nlc3Moc21hcnREYXRhKSkKLSAgICAgICAgRVJSKCJmYWlsZWQgdG8g
cHJvY2VzcyByZXBhaW50cy4iKTsKLQogICAgIGlmIChzbWFydERhdGEtPmNoYW5nZWQuZnJhbWVf
cmVjdCkgewogICAgICAgICBwcml2LT5wYWdlLT5tYWluRnJhbWUoKS52aWV3KCktPmZyYW1lUmVj
dHNDaGFuZ2VkKCk7CiAgICAgICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5mcmFtZV9yZWN0ID0gZmFs
c2U7CkBAIC0xMjg1LDEwICsxMDg3LDcgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3No
b3coRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAKICAgICBpZiAoZXZhc19vYmplY3RfY2xpcGVlc19n
ZXQoc21hcnREYXRhLT5iYXNlLmNsaXBwZXIpKQogICAgICAgICBldmFzX29iamVjdF9zaG93KHNt
YXJ0RGF0YS0+YmFzZS5jbGlwcGVyKTsKLSAgICBldmFzX29iamVjdF9zaG93KHNtYXJ0RGF0YS0+
YmFja2luZ19zdG9yZSk7Ci0KLSAgICBpZiAocHJpdi0+aXNDb21wb3NpdGluZ0FjdGl2ZSkKLSAg
ICAgICAgZXZhc19vYmplY3Rfc2hvdyhwcml2LT5jb21wb3NpdGluZ09iamVjdC5nZXQoKSk7Cisg
ICAgZXZhc19vYmplY3Rfc2hvdyhzbWFydERhdGEtPmltYWdlKTsKIH0KIAogc3RhdGljIHZvaWQg
X2V3a192aWV3X3NtYXJ0X2hpZGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpCkBAIC0xMjk3LDEwICsx
MDk2LDcgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2hpZGUoRXZhc19PYmplY3QqIGV3
a1ZpZXcpCiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7
CiAKICAgICBldmFzX29iamVjdF9oaWRlKHNtYXJ0RGF0YS0+YmFzZS5jbGlwcGVyKTsKLSAgICBl
dmFzX29iamVjdF9oaWRlKHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSk7Ci0KLSAgICBpZiAocHJp
di0+aXNDb21wb3NpdGluZ0FjdGl2ZSkKLSAgICAgICAgZXZhc19vYmplY3RfaGlkZShwcml2LT5j
b21wb3NpdGluZ09iamVjdC5nZXQoKSk7CisgICAgZXZhc19vYmplY3RfaGlkZShzbWFydERhdGEt
PmltYWdlKTsKIH0KIAogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfY29udGVudHNf
cmVzaXplKEV3a19WaWV3X1NtYXJ0X0RhdGEqLCBpbnQgLyp3aWR0aCovLCBpbnQgLypoZWlnaHQq
LykKQEAgLTEzNDAsNyArMTEzNiw2IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9mbHVz
aChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiB7CiAgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CiAgICAgX2V3a192aWV3X3JlcGFpbnRzX2Zs
dXNoKHByaXYpOwotICAgIF9ld2tfdmlld19zY3JvbGxzX2ZsdXNoKHByaXYpOwogfQogCiBzdGF0
aWMgdm9pZCBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0b3AoRXdrX1ZpZXdfU21hcnRf
RGF0YSogc21hcnREYXRhKQpAQCAtMTM4MSw3ICsxMTc2LDcgQEAgc3RhdGljIEVpbmFfQm9vbCBf
ZXdrX3ZpZXdfc21hcnRfem9vbV93ZWFrX3NldChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERh
dGEsIGYKICAgICBFdmFzX0Nvb3JkIHcgPSBzbWFydERhdGEtPnZpZXcudyAqIHNjYWxlOwogICAg
IEV2YXNfQ29vcmQgaCA9IHNtYXJ0RGF0YS0+dmlldy5oICogc2NhbGU7CiAgICAgRXZhc19Db29y
ZCBkZWx0YVgsIGRlbHRhWSwgY29udGVudFdpZHRoLCBjb250ZW50SGVpZ2h0OwotICAgIEV2YXNf
T2JqZWN0KiBjbGlwID0gZXZhc19vYmplY3RfY2xpcF9nZXQoc21hcnREYXRhLT5iYWNraW5nX3N0
b3JlKTsKKyAgICBFdmFzX09iamVjdCogY2xpcCA9IGV2YXNfb2JqZWN0X2NsaXBfZ2V0KHNtYXJ0
RGF0YS0+aW1hZ2UpOwogCiAgICAgZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVfZ2V0KHNtYXJ0RGF0
YS0+bWFpbl9mcmFtZSwgJmNvbnRlbnRXaWR0aCwgJmNvbnRlbnRIZWlnaHQpOwogICAgIGlmIChz
bWFydERhdGEtPnZpZXcudyA+IDAgJiYgc21hcnREYXRhLT52aWV3LmggPiAwKSB7CkBAIC0xMzky
LDcgKzExODcsNyBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF96b29tX3dlYWtf
c2V0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgZgogICAgICAgICBkZWx0YVkgPSAw
OwogICAgIH0KIAotICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxfc2V0KHNtYXJ0RGF0YS0+YmFj
a2luZ19zdG9yZSwgY2VudGVyWCArIGRlbHRhWCwgY2VudGVyWSArIGRlbHRhWSwgdywgaCk7Cisg
ICAgZXZhc19vYmplY3RfaW1hZ2VfZmlsbF9zZXQoc21hcnREYXRhLT5pbWFnZSwgY2VudGVyWCAr
IGRlbHRhWCwgY2VudGVyWSArIGRlbHRhWSwgdywgaCk7CiAKICAgICBpZiAoc21hcnREYXRhLT52
aWV3LncgPiAwICYmIHNtYXJ0RGF0YS0+dmlldy5oID4gMCkgewogICAgICAgICBkZWx0YVggPSAo
KHNtYXJ0RGF0YS0+dmlldy53IC0gdykgKiBjZW50ZXJYKSAvIHNtYXJ0RGF0YS0+dmlldy53OwpA
QCAtMTQxNCw3ICsxMjA5LDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfem9v
bV93ZWFrX3NldChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGYKIAogc3RhdGljIHZv
aWQgX2V3a192aWV3X3NtYXJ0X3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0KEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNtYXJ0RGF0YSwgRWluYV9Cb29sIHNtb290aF9zY2FsZSkKIHsKLSAgICBldmFz
X29iamVjdF9pbWFnZV9zbW9vdGhfc2NhbGVfc2V0KHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwg
c21vb3RoX3NjYWxlKTsKKyAgICBldmFzX29iamVjdF9pbWFnZV9zbW9vdGhfc2NhbGVfc2V0KHNt
YXJ0RGF0YS0+aW1hZ2UsIHNtb290aF9zY2FsZSk7CiB9CiAKIHN0YXRpYyBFaW5hX0Jvb2wgX2V3
a192aWV3X3pvb21fYW5pbWF0b3JfY2Iodm9pZCogZGF0YSkKQEAgLTE2OTgsNyArMTQ5Myw3IEBA
IHZvaWQgZXdrX3ZpZXdfYmdfY29sb3Jfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQgcmVk
LCBpbnQgZ3JlZW4sIGludCBibHVlLCBpCiAgICAgc21hcnREYXRhLT5iZ19jb2xvci5iID0gYmx1
ZTsKICAgICBzbWFydERhdGEtPmJnX2NvbG9yLmEgPSBhbHBoYTsKIAotICAgIGV2YXNfb2JqZWN0
X2ltYWdlX2FscGhhX3NldChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsIGFscGhhIDwgMjU1KTsK
KyAgICBldmFzX29iamVjdF9pbWFnZV9hbHBoYV9zZXQoc21hcnREYXRhLT5pbWFnZSwgYWxwaGEg
PCAyNTUpOwogCiAgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gc21hcnREYXRhLT5fcHJp
di0+cGFnZS0+bWFpbkZyYW1lKCkudmlldygpOwogICAgIGlmICh2aWV3KSB7CkBAIC0yOTM5LDE1
ICsyNzM0LDYgQEAgdm9pZCBld2tfdmlld19sYXlvdXRfaWZfbmVlZGVkX3JlY3Vyc2l2ZShFd2tf
Vmlld19Qcml2YXRlX0RhdGEqIHByaXYpCiAgICAgdmlldy0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJ
Zk5lZWRlZFJlY3Vyc2l2ZSgpOwogfQogCi12b2lkIGV3a192aWV3X3Njcm9sbHNfcHJvY2VzcyhF
d2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCi17Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk4oc21hcnREYXRhKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21h
cnREYXRhLCBwcml2KTsKLQotICAgIF9ld2tfdmlld19zbWFydF9zY3JvbGxzX3Byb2Nlc3Moc21h
cnREYXRhKTsKLSAgICBfZXdrX3ZpZXdfc2Nyb2xsc19mbHVzaChwcml2KTsKLX0KLQogLyogaW50
ZXJuYWwgbWV0aG9kcyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqLwogLyoqCiAgKiBAaW50ZXJuYWwKQEAgLTM3NDMsMTUgKzM1MjksNyBAQCB2b2lk
IGV3a192aWV3X3Njcm9sbChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgZGVsdGEsIGNvbnN0CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzbWFydERhdGEpOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEs
IHByaXYpOwogCi0gICAgcHJpdi0+bV9yZWN0c1RvU2Nyb2xsLmFwcGVuZChyZWN0VG9TY3JvbGwp
OwotICAgIHByaXYtPm1fc2Nyb2xsT2Zmc2V0cy5hcHBlbmQoZGVsdGEpOwotCi0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBwcml2LT5yZXBhaW50cy5jb3VudDsgKytpKSB7Ci0gICAgICAgIHBy
aXYtPnJlcGFpbnRzLmFycmF5W2ldLnggKz0gZGVsdGEud2lkdGgoKTsKLSAgICAgICAgcHJpdi0+
cmVwYWludHMuYXJyYXlbaV0ueSArPSBkZWx0YS5oZWlnaHQoKTsKLSAgICB9Ci0KLSAgICBfZXdr
X3ZpZXdfc21hcnRfY2hhbmdlZChzbWFydERhdGEpOworICAgIGV3a192aWV3X21hcmtfZm9yX3N5
bmMoZXdrVmlldyk7CiB9CiAKIC8qKgpAQCAtNDYyNiw3OSArNDQwNCwxMiBAQCB2b2lkIGV3a192
aWV3X2luc3BlY3Rvcl92aWV3X3NldChFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3Qq
IGluc3BlY3RvclZpZQogI2VuZGlmCiB9CiAKLXZvaWQgX2V3a192aWV3X2FjY2VsZXJhdGVkX2Nv
bXBvc2l0aW5nX2NiKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KikKLXsKLSAgICBFd2tfVmlld19Q
cml2YXRlX0RhdGEqIHByaXYgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19Qcml2YXRlX0RhdGEqPihk
YXRhKTsKLQotICAgIGlmIChwcml2LT5pc0NvbXBvc2l0aW5nQWN0aXZlKQotICAgICAgICBwcml2
LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+Zmx1c2hBbmRSZW5kZXJMYXllcnMoKTsK
LX0KLQotYm9vbCBfZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfY29udGV4dF9jcmVh
dGVfaWZfbmVlZGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotCi0gICAgaWYgKCFwcml2
LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkgewotICAgICAgICBwcml2LT5hY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+KGV3a1ZpZXcsIHByaXYtPmNvbXBvc2l0aW5nT2JqZWN0
LmdldCgpKTsKLSAgICAgICAgaWYgKCFwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dC0+aW5pdGlhbGl6ZSgpKSB7Ci0gICAgICAgICAgICBwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dCA9IG51bGxwdHI7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgX2V3a192aWV3X2FjY2VsZXJh
dGVkX2NvbXBvc2l0aW5nX29iamVjdF9jcmVhdGVfaWZfbmVlZGVkKEV2YXNfT2JqZWN0KiBld2tW
aWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRh
KTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKLQot
ICAgIGlmICghcHJpdi0+Y29tcG9zaXRpbmdPYmplY3QpIHsKLSAgICAgICAgcHJpdi0+Y29tcG9z
aXRpbmdPYmplY3QgPSBhZG9wdFJlZihldmFzX29iamVjdF9pbWFnZV9hZGQoc21hcnREYXRhLT5i
YXNlLmV2YXMpKTsKLQotICAgICAgICBldmFzX29iamVjdF9wYXNzX2V2ZW50c19zZXQocHJpdi0+
Y29tcG9zaXRpbmdPYmplY3QuZ2V0KCksIHRydWUpOyAvLyBKdXN0IGZvciByZW5kZXJpbmcsIGln
bm9yZSBldmVudHMuCi0gICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2FscGhhX3NldChwcml2LT5j
b21wb3NpdGluZ09iamVjdC5nZXQoKSwgdHJ1ZSk7Ci0gICAgICAgIGV2YXNfb2JqZWN0X2ltYWdl
X2NvbnRlbnRfaGludF9zZXQocHJpdi0+Y29tcG9zaXRpbmdPYmplY3QuZ2V0KCksIEVWQVNfSU1B
R0VfQ09OVEVOVF9ISU5UX0RZTkFNSUMpOwotCi0gICAgICAgIC8vIFNldCB0aGUgcGl4ZWwgZ2V0
IGNhbGxiYWNrLgotICAgICAgICBldmFzX29iamVjdF9pbWFnZV9waXhlbHNfZ2V0X2NhbGxiYWNr
X3NldChwcml2LT5jb21wb3NpdGluZ09iamVjdC5nZXQoKSwgX2V3a192aWV3X2FjY2VsZXJhdGVk
X2NvbXBvc2l0aW5nX2NiLCBwcml2KTsKLQotICAgICAgICBldmFzX29iamVjdF9zbWFydF9tZW1i
ZXJfYWRkKHByaXYtPmNvbXBvc2l0aW5nT2JqZWN0LmdldCgpLCBld2tWaWV3KTsKLSAgICB9Ci0K
LSAgICBldmFzX29iamVjdF9pbWFnZV9zaXplX3NldChwcml2LT5jb21wb3NpdGluZ09iamVjdC5n
ZXQoKSwgc21hcnREYXRhLT52aWV3LncsIHNtYXJ0RGF0YS0+dmlldy5oKTsKLSAgICBldmFzX29i
amVjdF9pbWFnZV9maWxsX3NldChwcml2LT5jb21wb3NpdGluZ09iamVjdC5nZXQoKSwgMCwgMCwg
c21hcnREYXRhLT52aWV3LncsIHNtYXJ0RGF0YS0+dmlldy5oKTsKLQotICAgIGV2YXNfb2JqZWN0
X21vdmUocHJpdi0+Y29tcG9zaXRpbmdPYmplY3QuZ2V0KCksIHNtYXJ0RGF0YS0+dmlldy54LCBz
bWFydERhdGEtPnZpZXcueSk7Ci0gICAgZXZhc19vYmplY3RfcmVzaXplKHByaXYtPmNvbXBvc2l0
aW5nT2JqZWN0LmdldCgpLCBzbWFydERhdGEtPnZpZXcudywgc21hcnREYXRhLT52aWV3LmgpOwot
ICAgIGV2YXNfb2JqZWN0X2hpZGUocHJpdi0+Y29tcG9zaXRpbmdPYmplY3QuZ2V0KCkpOwotfQot
CiB2b2lkIGV3a192aWV3X3Jvb3RfZ3JhcGhpY3NfbGF5ZXJfc2V0KEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiByb290TGF5ZXIpCiB7CiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwogICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOwogCi0gICAgYm9vbCBhY3RpdmUgPSAhIXJv
b3RMYXllcjsKLSAgICBpZiAocHJpdi0+aXNDb21wb3NpdGluZ0FjdGl2ZSA9PSBhY3RpdmUpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIHByaXYtPmlzQ29tcG9zaXRpbmdBY3RpdmUgPSBhY3RpdmU7
Ci0KLSAgICBpZiAocHJpdi0+aXNDb21wb3NpdGluZ0FjdGl2ZSkgewotICAgICAgICBfZXdrX3Zp
ZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfb2JqZWN0X2NyZWF0ZV9pZl9uZWVkZWQoZXdrVmll
dyk7Ci0gICAgICAgIGlmIChfZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfY29udGV4
dF9jcmVhdGVfaWZfbmVlZGVkKGV3a1ZpZXcpKQotICAgICAgICAgICAgZXZhc19vYmplY3Rfc2hv
dyhwcml2LT5jb21wb3NpdGluZ09iamVjdC5nZXQoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHByaXYtPmlzQ29tcG9zaXRpbmdBY3RpdmUgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAo
IXByaXYtPmlzQ29tcG9zaXRpbmdBY3RpdmUpCi0gICAgICAgIGV2YXNfb2JqZWN0X2hpZGUocHJp
di0+Y29tcG9zaXRpbmdPYmplY3QuZ2V0KCkpOwotCi0gICAgaWYgKHByaXYtPmFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0KQotICAgICAgICBwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dC0+YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIocm9vdExheWVyKTsKKyAgICBwcml2LT5h
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+c2V0Um9vdEdyYXBoaWNzTGF5ZXIocm9vdExh
eWVyKTsKIH0KIAogdm9pZCBld2tfdmlld19tYXJrX2Zvcl9zeW5jKEV2YXNfT2JqZWN0KiBld2tW
aWV3KQpAQCAtNDcwOCw3ICs0NDE5LDcgQEAgdm9pZCBld2tfdmlld19tYXJrX2Zvcl9zeW5jKEV2
YXNfT2JqZWN0KiBld2tWaWV3KQogCiAgICAgLy8gTWFyayB0aGUgaW1hZ2UgYXMgImRpcnR5IiBt
ZWFuaW5nIGl0IG5lZWRzIGFuIHVwZGF0ZSBuZXh0IHRpbWUgZXZhcyByZW5kZXJzLgogICAgIC8v
IEl0IHdpbGwgY2FsbCB0aGUgcGl4ZWwgZ2V0IGNhbGxiYWNrIHRoZW4uCi0gICAgZXZhc19vYmpl
Y3RfaW1hZ2VfcGl4ZWxzX2RpcnR5X3NldChwcml2LT5jb21wb3NpdGluZ09iamVjdC5nZXQoKSwg
dHJ1ZSk7CisgICAgZXZhc19vYmplY3RfaW1hZ2VfcGl4ZWxzX2RpcnR5X3NldChzbWFydERhdGEt
PmltYWdlLCB0cnVlKTsKIH0KIAogdm9pZCBld2tfdmlld19jdXJzb3Jfc2V0KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBjb25zdCBXZWJDb3JlOjpDdXJzb3ImIGN1cnNvcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a192aWV3LmgKaW5kZXggM2VlZDQ3MzZlNGFhYzU4N2Q3NjAzNzgzYzgxNWJjM2U5NmEwZTY4Mi4u
NDliMThmMmFmOTBkNTg1NDI5OTljNzExYzcwMzc5MTg3ODhhMTRhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a192aWV3LmgKQEAgLTM3MCw3ICszNzAsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0Rh
dGEgewogICAgIGNvbnN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzICphcGk7IC8qKjwgUmVmZXJlbmNl
IHRvIGNhc3RlZCBjbGFzcyBpbnN0YW5jZS4gKi8KICAgICBFdmFzX09iamVjdCAqc2VsZjsgLyoq
PCBSZWZlcmVuY2UgdG8gb3duZXIgb2JqZWN0LiAqLwogICAgIEV2YXNfT2JqZWN0ICptYWluX2Zy
YW1lOyAvKio8IFJlZmVyZW5jZSB0byBtYWluIGZyYW1lIG9iamVjdC4gKi8KLSAgICBFdmFzX09i
amVjdCAqYmFja2luZ19zdG9yZTsgLyoqPCBSZWZlcmVuY2UgdG8gYmFja2luZyBzdG9yZS4gKi8K
KyAgICBFdmFzX09iamVjdCAqaW1hZ2U7IC8qKjwgUmVmZXJlbmNlIHRvIGV2YXNfb2JqZWN0X2lt
YWdlIGZvciBkcmF3aW5nIHdlYiBjb250ZW50ICovCiAgICAgRXZhc19PYmplY3QgKmV2ZW50c19y
ZWN0OyAvKio8IFRoZSByZWN0YW5nbGUgdGhhdCByZWNlaXZlcyBtb3VzZSBldmVudHMuICovCiAg
ICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhICpfcHJpdjsgLyoqPCBTaG91bGQgQGIgbmV2ZXIgYmUg
YWNjZXNzZWQsIGMrKyBzdHVmZi4gKi8KICAgICBzdHJ1Y3Qgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>