<?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>97202</bug_id>
          
          <creation_ts>2012-09-20 05:32:53 -0700</creation_ts>
          <short_desc>[GTK] Implement ViewState methods in PageClientImpl in WebKit2</short_desc>
          <delta_ts>2012-09-21 09:50:27 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>724444</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-09-20 05:32:53 -0700</bug_when>
    <thetext>PageClientImpl::isViewWindowActive(), PageClientImpl::isViewFocused(), PageClientImpl::isViewVisible() and PageClientImpl::isViewInWindow() are all unimplemented and always return true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724449</commentid>
    <comment_count>1</comment_count>
      <attachid>164898</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-09-20 05:47:33 -0700</bug_when>
    <thetext>Created attachment 164898
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724451</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-20 05:50:25 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724875</commentid>
    <comment_count>3</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-09-20 14:35:16 -0700</bug_when>
    <thetext>Does this allow us to unskip some tests? I notice that it changes WebKitTestRunner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724894</commentid>
    <comment_count>4</comment_count>
      <attachid>164898</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-09-20 14:54:56 -0700</bug_when>
    <thetext>Comment on attachment 164898
Patch

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

This looks good to me, though changes to the test harness suggest that this will allow us to unskip tests or change results somehow.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:100
&gt; +    gulong toplevelResizeGripVisibilityID;
&gt; +    gulong toplevelFocusInEventID;
&gt; +    gulong toplevelFocusOutEventID;

Maybe just unsigned long here?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:120
&gt; +static void webkitWebViewBaseNotifyResizerSizeForWindow(WebKitWebViewBase* webViewBase)

I guess you can remove the &quot;ForWindow&quot; from the name since you are no longer passing it.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:254
&gt; +    if (widgetIsOnscreenToplevelWindow(toplevel))
&gt; +        webkitWebViewBaseSetToplevelOnScreenWindow(webView, GTK_WINDOW(toplevel));

Are there situations where a window can be realized already inside a toplevel window, without set_parent being called?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:743
&gt; +    if (widgetIsOnscreenToplevelWindow(toplevel))
&gt; +        webkitWebViewBaseSetToplevelOnScreenWindow(webViewBase, GTK_WINDOW(toplevel));
&gt; +    else
&gt; +        webkitWebViewBaseSetToplevelOnScreenWindow(webViewBase, 0);

If you like, this could just be:

webkitWebViewBaseSetToplevelOnScreenWindow(webViewBase, widgetIsOnscreenToplevelWindow(toplevel) ? GTK_WINDOW(toplevel) :  0);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725201</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-09-20 23:49:01 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 164898 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=164898&amp;action=review
&gt; 
&gt; This looks good to me, though changes to the test harness suggest that this will allow us to unskip tests or change results somehow.

The changes in the tests is because this patch broke several tests. Current code always returns true for isFocused, isInwindow, etc. some tests move the focus to the view and then check that the view is focused calling isFocused() and of course it was always true. Others check isInActiveWindow() with the same situation, etc. We have PlatformWebView::focus() unimplemented in this moment because our view is always focused from the API POV. With the patch all view state flags are correctly updated and we need to implement PlatformWebView::focus() to focus the view programatically. This fixed all the tests that were failing because isFocused or isInActiveWindow returned false. I&apos;ll try again with the skipped to tests to check if any of them pass now.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:100
&gt; &gt; +    gulong toplevelResizeGripVisibilityID;
&gt; &gt; +    gulong toplevelFocusInEventID;
&gt; &gt; +    gulong toplevelFocusOutEventID;
&gt; 
&gt; Maybe just unsigned long here?

g_signal_connect returns a gulong.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:120
&gt; &gt; +static void webkitWebViewBaseNotifyResizerSizeForWindow(WebKitWebViewBase* webViewBase)
&gt; 
&gt; I guess you can remove the &quot;ForWindow&quot; from the name since you are no longer passing it.

Ok.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:254
&gt; &gt; +    if (widgetIsOnscreenToplevelWindow(toplevel))
&gt; &gt; +        webkitWebViewBaseSetToplevelOnScreenWindow(webView, GTK_WINDOW(toplevel));
&gt; 
&gt; Are there situations where a window can be realized already inside a toplevel window, without set_parent being called?

A widget must be inside a toplevel to be realized, so parent_set has always been called when the widget is realized.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:743
&gt; &gt; +    if (widgetIsOnscreenToplevelWindow(toplevel))
&gt; &gt; +        webkitWebViewBaseSetToplevelOnScreenWindow(webViewBase, GTK_WINDOW(toplevel));
&gt; &gt; +    else
&gt; &gt; +        webkitWebViewBaseSetToplevelOnScreenWindow(webViewBase, 0);
&gt; 
&gt; If you like, this could just be:
&gt; 
&gt; webkitWebViewBaseSetToplevelOnScreenWindow(webViewBase, widgetIsOnscreenToplevelWindow(toplevel) ? GTK_WINDOW(toplevel) :  0);

I thought about it, but I thought the explicit if was clearer in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725375</commentid>
    <comment_count>6</comment_count>
      <attachid>165107</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-09-21 03:26:35 -0700</bug_when>
    <thetext>Created attachment 165107
Updated patch according to review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725525</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-09-21 08:18:11 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:100
&gt; &gt; &gt; +    gulong toplevelResizeGripVisibilityID;
&gt; &gt; &gt; +    gulong toplevelFocusInEventID;
&gt; &gt; &gt; +    gulong toplevelFocusOutEventID;
&gt; &gt; 
&gt; &gt; Maybe just unsigned long here?
&gt;
&gt; g_signal_connect returns a gulong.

gulong is always typedeffed to unsigned long, so we could avoid the use of simple GLib typedefs here.

&gt; &gt; Are there situations where a window can be realized already inside a toplevel window, without set_parent being called?
&gt; 
&gt; A widget must be inside a toplevel to be realized, so parent_set has always been called when the widget is realized.

I suppose you must call webkitWebViewBaseSetToplevelOnScreenWindow here because parent_set may be called before the widget has a toplevel window. Would it be possible to remove the call in parent_set and simply use the one here, in realize? It seems the only problem would be if a widget can change toplevel windows without being realized and unrealized. Surely that&apos;s not possible?

The reason I&apos;m not sure about using parent_set is that it may not necessarily indicate that the toplevel window of the widget has changed, so perhaps it&apos;s not a good time to detect that change. Coupled with the check here, it seems redundant, but perhaps I&apos;m missing a particular situation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725548</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-09-21 08:56:41 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #5)
&gt; &gt; &gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:100
&gt; &gt; &gt; &gt; +    gulong toplevelResizeGripVisibilityID;
&gt; &gt; &gt; &gt; +    gulong toplevelFocusInEventID;
&gt; &gt; &gt; &gt; +    gulong toplevelFocusOutEventID;
&gt; &gt; &gt; 
&gt; &gt; &gt; Maybe just unsigned long here?
&gt; &gt;
&gt; &gt; g_signal_connect returns a gulong.
&gt; 
&gt; gulong is always typedeffed to unsigned long, so we could avoid the use of simple GLib typedefs here.
&gt; 
&gt; &gt; &gt; Are there situations where a window can be realized already inside a toplevel window, without set_parent being called?
&gt; &gt; 
&gt; &gt; A widget must be inside a toplevel to be realized, so parent_set has always been called when the widget is realized.
&gt; 
&gt; I suppose you must call webkitWebViewBaseSetToplevelOnScreenWindow here because parent_set may be called before the widget has a toplevel window. Would it be possible to remove the call in parent_set and simply use the one here, in realize? It seems the only problem would be if a widget can change toplevel windows without being realized and unrealized. Surely that&apos;s not possible?

Yes, it&apos;s not possible.

&gt; 
&gt; The reason I&apos;m not sure about using parent_set is that it may not necessarily indicate that the toplevel window of the widget has changed, so perhaps it&apos;s not a good time to detect that change. Coupled with the check here, it seems redundant, but perhaps I&apos;m missing a particular situation.

No no, you are right, we can use parent-set only to detect when a widget is reparented to disconnect all the signals and clear the window, and set the new window only when the widget is realized to make sure we use the real toplevel window.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725552</commentid>
    <comment_count>9</comment_count>
      <attachid>165143</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-09-21 09:03:51 -0700</bug_when>
    <thetext>Created attachment 165143
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725586</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-09-21 09:50:27 -0700</bug_when>
    <thetext>Committed r129238: &lt;http://trac.webkit.org/changeset/129238&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164898</attachid>
            <date>2012-09-20 05:47:33 -0700</date>
            <delta_ts>2012-09-21 03:26:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-view-state.diff</filename>
            <type>text/plain</type>
            <size>24667</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA3YTg4ZTUxLi5mMjU2MmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzEg
QEAKKzIwMTItMDktMjAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBWaWV3U3RhdGUgbWV0aG9kcyBpbiBQYWdlQ2xp
ZW50SW1wbCBpbiBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NzIwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudCBpc1ZpZXdXaW5kb3dBY3RpdmUoKSwgaXNWaWV3Rm9jdXNlZCgp
LCBpc1ZpZXdWaXNpYmxlKCkKKyAgICAgICAgYW5kIGlzVmlld0luV2luZG93KCkgaW4gUGFnZUNs
aWVudEltcGwuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBBZGQgbmV3IGZpbGVz
IHRvIGNvbXBpbGF0aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9ndGsvV0tWaWV3LmNw
cDoKKyAgICAgICAgKFdLVmlld1NldEZvY3VzKTogTmV3IHByaXZhdGUgbWV0aG9kIHVzZWQgYnkg
V1RSIHRvIGZvY3VzIHRoZQorICAgICAgICBXZWJWaWV3LgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9ndGsvV0tWaWV3UHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBs
Ojppc1ZpZXdXaW5kb3dBY3RpdmUpOiBSZXR1cm4KKyAgICAgICAgd2Via2l0V2ViVmlld0Jhc2VJ
c0luV2luZG93QWN0aXZlKCkuCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1Zp
ZXdGb2N1c2VkKTogUmV0dXJuCisgICAgICAgIHdlYmtpdFdlYlZpZXdCYXNlSXNGb2N1c2VkKCku
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdWaXNpYmxlKTogUmV0dXJu
CisgICAgICAgIHdlYmtpdFdlYlZpZXdCYXNlSXNWaXNpYmxlKCkuCisgICAgICAgIChXZWJLaXQ6
OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdJbldpbmRvdyk6IFJldHVybgorICAgICAgICB3ZWJraXRX
ZWJWaWV3QmFzZUlzSW5XaW5kb3coKS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZU5vdGlmeVJlc2l6
ZXJTaXplRm9yV2luZG93KTogVXBkYXRlZCB0byBub3QKKyAgICAgICAgcmVjZWl2ZSB0aGUgd2lu
ZG93IGFzIHBhcmFtZXRlciBzaW5jZSBpdCdzIG5vdyBzYXZlZCBpbiB0aGUKKyAgICAgICAgaW5z
dGFuY2Ugc3RydWN0LgorICAgICAgICAodG9wbGV2ZWxXaW5kb3dSZXNpemVHcmlwVmlzaWJpbGl0
eUNoYW5nZWQpOiBVcGRhdGUgdG8KKyAgICAgICAgd2Via2l0V2ViVmlld0Jhc2VOb3RpZnlSZXNp
emVyU2l6ZUZvcldpbmRvdygpIEFQSSBjaGFuZ2UuCisgICAgICAgICh0b3BsZXZlbFdpbmRvd0Zv
Y3VzSW5FdmVudCk6IFVwZGF0ZSBWaWV3V2luZG93SXNBY3RpdmUgZmxhZyBhbmQKKyAgICAgICAg
bm90aWZ5IHRoZSBXZWJQYWdlUHJveHkgaWYgaXQgY2hhbmdlZC4KKyAgICAgICAgKHRvcGxldmVs
V2luZG93Rm9jdXNPdXRFdmVudCk6IERpdHRvLgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VT
ZXRUb3BsZXZlbE9uU2NyZWVuV2luZG93KTogU2V0IHRoZSB0b3BsZXZlbAorICAgICAgICBvbi1z
Y3JlZW4gd2luZG93IHdoZXJlIHRoZSB2aWV3IGlzIGN1cnJlbnRseSBhZGRlZCBhbmQgbm90aWZ5
CisgICAgICAgIFdlYlBhZ2VQcm94eSBpZiBpdCBjaGFuZ2VkLgorICAgICAgICAod2Via2l0V2Vi
Vmlld0Jhc2VSZWFsaXplKTogQ2FsbAorICAgICAgICB3ZWJraXRXZWJWaWV3QmFzZVNldFRvcGxl
dmVsT25TY3JlZW5XaW5kb3coKSBpZiB0aGUgdmlldyBoYXMgYmVlbgorICAgICAgICBhZGRlZCB0
byBhbiBvbi1zY3JlZW4gd2luZG93LgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VGaW5hbGl6
ZSk6IFJlc2V0IHRoZSB0b3BsZXZlbCBvbi1zY3JlZW4gd2luZG93CisgICAgICAgIHRvIG1ha2Ug
c3VyZSBhbGwgc2lnbmFscyBhcmUgZGlzY29ubmVjdGVkIHdoZW4gdGhlIHZpZXcgaXMKKyAgICAg
ICAgZGVzdHJveWVkLgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Jhc2VfaW5pdCk6IFJlbW92
ZSB1bm5lZWRlZCBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgKHJlc2l6ZVdlYktpdFdlYlZpZXdC
YXNlRnJvbUFsbG9jYXRpb24pOiBVcGRhdGUgdG8KKyAgICAgICAgd2Via2l0V2ViVmlld0Jhc2VO
b3RpZnlSZXNpemVyU2l6ZUZvcldpbmRvdygpIEFQSSBjaGFuZ2UuCisgICAgICAgICh3ZWJraXRX
ZWJWaWV3QmFzZU1hcCk6IFVwZGF0ZSBWaWV3SXNWaXNpYmxlIGZsYWcgYW5kIG5vdGlmeQorICAg
ICAgICBXZWJQYWdlUHJveHkgaWYgaXQgY2hhbmdlZC4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdC
YXNlVW5tYXApOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlRm9jdXNJbkV2ZW50
KTogQ2FsbCB3ZWJraXRXZWJWaWV3QmFzZVNldEZvY3VzKCkKKyAgICAgICAgcGFzc2luZyB0cnVl
IHRvIGZvY3VzIHRoZSB2aWV3LgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VGb2N1c091dEV2
ZW50KTogQ2FsbCB3ZWJraXRXZWJWaWV3QmFzZVNldEZvY3VzKCkKKyAgICAgICAgcGFzc2luZyBm
YWxzZSB0byB1bmZvY3VzIHRoZSB2aWV3LgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VQYXJl
bnRTZXQpOiBVcGRhdGUgdGhlIHRvcGxldmVsIG9uLXNjcmVlbiB3aW5kb3cKKyAgICAgICAgaWYg
dGhlIHZpZXcgaXMgcmUtcGFyZW50ZWQuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfYmFzZV9j
bGFzc19pbml0KTogQWRkIGltcGxlbWVudGF0aW9ucyBmb3IgbWFwIGFuZAorICAgICAgICBwYXJl
bnQtc2V0IHZpcnR1YWwgZnVuY3Rpb25zLgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VTZXRG
b2N1cyk6IFVwZGF0ZSB0aGUgVmlld0lzRm9jdXNlZCBhbmQgbm90aWZ5CisgICAgICAgIFdlYlBh
Z2VQcm94eSBpZiBpdCBjaGFuZ2VkLgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VJc0luV2lu
ZG93QWN0aXZlKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlSXNGb2N1c2VkKToKKyAgICAg
ICAgKHdlYmtpdFdlYlZpZXdCYXNlSXNWaXNpYmxlKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdC
YXNlSXNJbldpbmRvdyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d0Jhc2VQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdl
YktpdFdlYlZpZXcuY3BwOgorICAgICAgICAodGVzdFdlYlZpZXdNb3VzZVRhcmdldCk6IFVzZSBh
IEdUS19XSU5ET1dfVE9QTEVWRUwgaW5zdGVhZCBvZgorICAgICAgICBQT1BVUCBmb3IgdGhpcyB0
ZXN0IHRvIG1ha2Ugc3VyZSB0aGUgdmlldyByZWNlaXZlcyBmb2N1cyBjaGFuZ2UKKyAgICAgICAg
ZXZlbnRzLgorCiAyMDEyLTA5LTE5ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBBZGQgQVBJIHRvIGdldC9zZXQgdGhlIHNlY3VyaXR5
IHBvbGljeSBvZiBhIGdpdmVuIFVSSSBzY2hlbWUgdG8gV2ViS2l0MiBHVEsrCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGQzZTFlMy4uYzAxNjRh
YyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDEyLTA5LTIwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBJbXBsZW1lbnQgVmlld1N0YXRlIG1ldGhvZHMg
aW4gUGFnZUNsaWVudEltcGwgaW4gV2ViS2l0MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcyMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZ3RrL1BsYXRmb3JtV2ViVmll
d0d0ay5jcHA6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6Zm9jdXMpOiBGb2N1cyB0
aGUgdmlldy4KKwogMjAxMi0wOS0xOSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVt
ZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIEVGTCdzIERSVCBkb2VzIG5vdCBzdXBwb3J0
IG92ZXJyaWRpbmcgJ1dlYktpdENTU1JlZ2lvbnNFbmFibGVkJyBwcmVmZXJlbmNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYktpdDIv
R05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA0MWQzMTFkLi42ZWNiMmRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmxpc3QuYW0KQEAgLTUxMSw2ICs1MTEsNyBAQCB3ZWJraXQyX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tJbnNwZWN0b3JDbGllbnRH
dGsuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1ZpZXcuY3BwIFwK
IAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5oIFwKKwlTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlld1ByaXZhdGUuaCBcCiAJU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tBUElDYXN0U291cC5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS0NvbnRleHRTb3VwLmNwcCBcCiAJU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250ZXh0U291cC5oIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tWaWV3LmNwcAppbmRleCAwOTI5MTQ0Li4zZTY5
YTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1ZpZXcuY3Bw
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiV0tWaWV3LmgiCiAKICNpbmNsdWRlICJXS0FQ
SUNhc3QuaCIKKyNpbmNsdWRlICJXS1ZpZXdQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2Vi
Vmlld0Jhc2VQcml2YXRlLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC00NCw0ICs0
NSw3IEBAIFdLUGFnZVJlZiBXS1ZpZXdHZXRQYWdlKFdLVmlld1JlZiB2aWV3UmVmKQogICAgIHJl
dHVybiB0b0FQSSh3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UodG9JbXBsKHZpZXdSZWYpKSk7CiB9
CiAKLQordm9pZCBXS1ZpZXdTZXRGb2N1cyhXS1ZpZXdSZWYgdmlld1JlZiwgYm9vbCBmb2N1c2Vk
KQoreworICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0Rm9jdXModG9JbXBsKHZpZXdSZWYpLCBmb2N1
c2VkKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsv
V0tWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1Zp
ZXdQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmMxYjJkMQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tW
aWV3UHJpdmF0ZS5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
SWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS1ZpZXdQcml2YXRlX2gKKyNkZWZpbmUg
V0tWaWV3UHJpdmF0ZV9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYg
X19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCB2b2lkIFdLVmll
d1NldEZvY3VzKFdLVmlld1JlZiB2aWV3UmVmLCBib29sIGZvY3VzZWQpOworCisjaWZkZWYgX19j
cGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tWaWV3UHJpdmF0ZV9oICovCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAK
aW5kZXggYTFmNWQ5Ni4uZDQyYjhiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtOTgsMjYgKzk4LDIyIEBAIFdlYkNv
cmU6OkludFNpemUgUGFnZUNsaWVudEltcGw6OnZpZXdTaXplKCkKIAogYm9vbCBQYWdlQ2xpZW50
SW1wbDo6aXNWaWV3V2luZG93QWN0aXZlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IHJldHVybiB0cnVlOworICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFzZUlzSW5XaW5kb3dBY3Rp
dmUoV0VCS0lUX1dFQl9WSUVXX0JBU0UobV92aWV3V2lkZ2V0KSk7CiB9CiAKIGJvb2wgUGFnZUNs
aWVudEltcGw6OmlzVmlld0ZvY3VzZWQoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
cmV0dXJuIHRydWU7CisgICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNlSXNGb2N1c2VkKFdFQktJ
VF9XRUJfVklFV19CQVNFKG1fdmlld1dpZGdldCkpOwogfQogCiBib29sIFBhZ2VDbGllbnRJbXBs
Ojppc1ZpZXdWaXNpYmxlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiB0
cnVlOworICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFzZUlzVmlzaWJsZShXRUJLSVRfV0VCX1ZJ
RVdfQkFTRShtX3ZpZXdXaWRnZXQpKTsKIH0KIAogYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3
SW5XaW5kb3coKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIHRydWU7Cisg
ICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNlSXNJbldpbmRvdyhXRUJLSVRfV0VCX1ZJRVdfQkFT
RShtX3ZpZXdXaWRnZXQpKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudElt
cGw6OnByb2Nlc3NEaWRDcmFzaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggMjNiMDJmNi4uOTBlMDlkMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdCYXNlLmNwcApAQCAtNzksNyArNzksNiBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZSB7CiAgICAgV2ViS2l0V2ViVmlld0NoaWxkcmVuTWFwIGNoaWxkcmVuOwogICAgIE93
blB0cjxQYWdlQ2xpZW50SW1wbD4gcGFnZUNsaWVudDsKICAgICBSZWZQdHI8V2ViUGFnZVByb3h5
PiBwYWdlUHJveHk7Ci0gICAgYm9vbCBpc1BhZ2VBY3RpdmU7CiAgICAgYm9vbCBzaG91bGRGb3J3
YXJkTmV4dEtleUV2ZW50OwogICAgIEdSZWZQdHI8R3RrSU1Db250ZXh0PiBpbUNvbnRleHQ7CiAg
ICAgR3RrQ2xpY2tDb3VudGVyIGNsaWNrQ291bnRlcjsKQEAgLTk1LDYgKzk0LDE2IEBAIHN0cnVj
dCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlIHsKICAgICBHT3duUHRyPEdka0V2ZW50PiBjb250
ZXh0TWVudUV2ZW50OwogICAgIFdlYkNvbnRleHRNZW51UHJveHlHdGsqIGFjdGl2ZUNvbnRleHRN
ZW51UHJveHk7CiAKKyAgICBHdGtXaW5kb3cqIHRvcGxldmVsT25TY3JlZW5XaW5kb3c7CisgICAg
Z3Vsb25nIHRvcGxldmVsUmVzaXplR3JpcFZpc2liaWxpdHlJRDsKKyAgICBndWxvbmcgdG9wbGV2
ZWxGb2N1c0luRXZlbnRJRDsKKyAgICBndWxvbmcgdG9wbGV2ZWxGb2N1c091dEV2ZW50SUQ7CisK
KyAgICAvLyBWaWV3IFN0YXRlLgorICAgIGJvb2wgaXNJbldpbmRvd0FjdGl2ZSA6IDE7CisgICAg
Ym9vbCBpc0ZvY3VzZWQgOiAxOworICAgIGJvb2wgaXNWaXNpYmxlIDogMTsKKwogI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKICAgICBib29sIGZ1bGxTY3JlZW5Nb2RlQWN0aXZlOwogICAgIFdl
YkZ1bGxTY3JlZW5DbGllbnRHdGsgZnVsbFNjcmVlbkNsaWVudDsKQEAgLTEwOCwzMCArMTE3LDkz
IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlIHsKIAogR19ERUZJTkVfVFlQRShX
ZWJLaXRXZWJWaWV3QmFzZSwgd2Via2l0X3dlYl92aWV3X2Jhc2UsIEdUS19UWVBFX0NPTlRBSU5F
UikKIAotc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VOb3RpZnlSZXNpemVyU2l6ZUZvcldp
bmRvdyhXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIEd0a1dpbmRvdyogd2luZG93KQor
c3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VOb3RpZnlSZXNpemVyU2l6ZUZvcldpbmRvdyhX
ZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCiB7CisgICAgV2ViS2l0V2ViVmlld0Jhc2VQ
cml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7CisgICAgaWYgKCFwcml2LT50b3BsZXZl
bE9uU2NyZWVuV2luZG93KQorICAgICAgICByZXR1cm47CisKICAgICBnYm9vbGVhbiByZXNpemVy
VmlzaWJsZTsKLSAgICBnX29iamVjdF9nZXQoR19PQkpFQ1Qod2luZG93KSwgInJlc2l6ZS1ncmlw
LXZpc2libGUiLCAmcmVzaXplclZpc2libGUsIE5VTEwpOworICAgIGdfb2JqZWN0X2dldChHX09C
SkVDVChwcml2LT50b3BsZXZlbE9uU2NyZWVuV2luZG93KSwgInJlc2l6ZS1ncmlwLXZpc2libGUi
LCAmcmVzaXplclZpc2libGUsIE5VTEwpOwogCiAgICAgSW50U2l6ZSByZXNpemVyU2l6ZTsKICAg
ICBpZiAocmVzaXplclZpc2libGUpIHsKICAgICAgICAgR2RrUmVjdGFuZ2xlIHJlc2l6ZXJSZWN0
OwotICAgICAgICBndGtfd2luZG93X2dldF9yZXNpemVfZ3JpcF9hcmVhKHdpbmRvdywgJnJlc2l6
ZXJSZWN0KTsKKyAgICAgICAgZ3RrX3dpbmRvd19nZXRfcmVzaXplX2dyaXBfYXJlYShwcml2LT50
b3BsZXZlbE9uU2NyZWVuV2luZG93LCAmcmVzaXplclJlY3QpOwogICAgICAgICBHZGtSZWN0YW5n
bGUgYWxsb2NhdGlvbjsKICAgICAgICAgZ3RrX3dpZGdldF9nZXRfYWxsb2NhdGlvbihHVEtfV0lE
R0VUKHdlYlZpZXdCYXNlKSwgJmFsbG9jYXRpb24pOwogICAgICAgICBpZiAoZ2RrX3JlY3Rhbmds
ZV9pbnRlcnNlY3QoJnJlc2l6ZXJSZWN0LCAmYWxsb2NhdGlvbiwgMCkpCiAgICAgICAgICAgICBy
ZXNpemVyU2l6ZSA9IEludFNpemUocmVzaXplclJlY3Qud2lkdGgsIHJlc2l6ZXJSZWN0LmhlaWdo
dCk7CiAgICAgfQogCi0gICAgaWYgKHJlc2l6ZXJTaXplICE9IHdlYlZpZXdCYXNlLT5wcml2LT5y
ZXNpemVyU2l6ZSkgewotICAgICAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+cmVzaXplclNpemUgPSBy
ZXNpemVyU2l6ZTsKLSAgICAgICAgd2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94eS0+c2V0V2lu
ZG93UmVzaXplclNpemUocmVzaXplclNpemUpOworICAgIGlmIChyZXNpemVyU2l6ZSAhPSBwcml2
LT5yZXNpemVyU2l6ZSkgeworICAgICAgICBwcml2LT5yZXNpemVyU2l6ZSA9IHJlc2l6ZXJTaXpl
OworICAgICAgICBwcml2LT5wYWdlUHJveHktPnNldFdpbmRvd1Jlc2l6ZXJTaXplKHJlc2l6ZXJT
aXplKTsKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIHRvcGxldmVsV2luZG93UmVzaXplR3JpcFZp
c2liaWxpdHlDaGFuZ2VkKEdPYmplY3QqIG9iamVjdCwgR1BhcmFtU3BlYyosIFdlYktpdFdlYlZp
ZXdCYXNlKiB3ZWJWaWV3QmFzZSkKK3N0YXRpYyB2b2lkIHRvcGxldmVsV2luZG93UmVzaXplR3Jp
cFZpc2liaWxpdHlDaGFuZ2VkKEdPYmplY3QqLCBHUGFyYW1TcGVjKiwgV2ViS2l0V2ViVmlld0Jh
c2UqIHdlYlZpZXdCYXNlKQogewotICAgIHdlYmtpdFdlYlZpZXdCYXNlTm90aWZ5UmVzaXplclNp
emVGb3JXaW5kb3cod2ViVmlld0Jhc2UsIEdUS19XSU5ET1cob2JqZWN0KSk7CisgICAgd2Via2l0
V2ViVmlld0Jhc2VOb3RpZnlSZXNpemVyU2l6ZUZvcldpbmRvdyh3ZWJWaWV3QmFzZSk7Cit9CisK
K3N0YXRpYyBnYm9vbGVhbiB0b3BsZXZlbFdpbmRvd0ZvY3VzSW5FdmVudChHdGtXaWRnZXQqIHdp
ZGdldCwgR2RrRXZlbnRGb2N1cyosIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkKK3sK
KyAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsK
KyAgICBpZiAoIXByaXYtPmlzSW5XaW5kb3dBY3RpdmUpIHsKKyAgICAgICAgcHJpdi0+aXNJbldp
bmRvd0FjdGl2ZSA9IHRydWU7CisgICAgICAgIHByaXYtPnBhZ2VQcm94eS0+dmlld1N0YXRlRGlk
Q2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld1dpbmRvd0lzQWN0aXZlKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB0b3BsZXZlbFdpbmRvd0ZvY3VzT3V0
RXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50Rm9jdXMqLCBXZWJLaXRXZWJWaWV3QmFz
ZSogd2ViVmlld0Jhc2UpCit7CisgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0g
d2ViVmlld0Jhc2UtPnByaXY7CisgICAgaWYgKHByaXYtPmlzSW5XaW5kb3dBY3RpdmUpIHsKKyAg
ICAgICAgcHJpdi0+aXNJbldpbmRvd0FjdGl2ZSA9IGZhbHNlOworICAgICAgICBwcml2LT5wYWdl
UHJveHktPnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdXaW5kb3dJc0FjdGl2
ZSk7CisgICAgfQorCisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRX
ZWJWaWV3QmFzZVNldFRvcGxldmVsT25TY3JlZW5XaW5kb3coV2ViS2l0V2ViVmlld0Jhc2UqIHdl
YlZpZXdCYXNlLCBHdGtXaW5kb3cqIHdpbmRvdykKK3sKKyAgICBXZWJLaXRXZWJWaWV3QmFzZVBy
aXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsKKyAgICBpZiAocHJpdi0+dG9wbGV2ZWxP
blNjcmVlbldpbmRvdyA9PSB3aW5kb3cpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChwcml2
LT50b3BsZXZlbFJlc2l6ZUdyaXBWaXNpYmlsaXR5SUQpIHsKKyAgICAgICAgZ19zaWduYWxfaGFu
ZGxlcl9kaXNjb25uZWN0KHByaXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3csIHByaXYtPnRvcGxl
dmVsUmVzaXplR3JpcFZpc2liaWxpdHlJRCk7CisgICAgICAgIHByaXYtPnRvcGxldmVsUmVzaXpl
R3JpcFZpc2liaWxpdHlJRCA9IDA7CisgICAgfQorICAgIGlmIChwcml2LT50b3BsZXZlbEZvY3Vz
SW5FdmVudElEKSB7CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChwcml2LT50
b3BsZXZlbE9uU2NyZWVuV2luZG93LCBwcml2LT50b3BsZXZlbEZvY3VzSW5FdmVudElEKTsKKyAg
ICAgICAgcHJpdi0+dG9wbGV2ZWxGb2N1c0luRXZlbnRJRCA9IDA7CisgICAgfQorICAgIGlmIChw
cml2LT50b3BsZXZlbEZvY3VzT3V0RXZlbnRJRCkgeworICAgICAgICBnX3NpZ25hbF9oYW5kbGVy
X2Rpc2Nvbm5lY3QocHJpdi0+dG9wbGV2ZWxPblNjcmVlbldpbmRvdywgcHJpdi0+dG9wbGV2ZWxG
b2N1c091dEV2ZW50SUQpOworICAgICAgICBwcml2LT50b3BsZXZlbEZvY3VzT3V0RXZlbnRJRCA9
IDA7CisgICAgfQorCisgICAgcHJpdi0+dG9wbGV2ZWxPblNjcmVlbldpbmRvdyA9IHdpbmRvdzsK
KyAgICBwcml2LT5wYWdlUHJveHktPnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZp
ZXdJc0luV2luZG93KTsKKyAgICBpZiAoIXByaXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3cpCisg
ICAgICAgIHJldHVybjsKKworICAgIHdlYmtpdFdlYlZpZXdCYXNlTm90aWZ5UmVzaXplclNpemVG
b3JXaW5kb3cod2ViVmlld0Jhc2UpOworCisgICAgcHJpdi0+dG9wbGV2ZWxSZXNpemVHcmlwVmlz
aWJpbGl0eUlEID0KKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChwcml2LT50b3BsZXZlbE9uU2Ny
ZWVuV2luZG93LCAibm90aWZ5OjpyZXNpemUtZ3JpcC12aXNpYmxlIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBHX0NBTExCQUNLKHRvcGxldmVsV2luZG93UmVzaXplR3JpcFZpc2liaWxpdHlD
aGFuZ2VkKSwgd2ViVmlld0Jhc2UpOworICAgIHByaXYtPnRvcGxldmVsRm9jdXNJbkV2ZW50SUQg
PQorICAgICAgICBnX3NpZ25hbF9jb25uZWN0KHByaXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3cs
ICJmb2N1cy1pbi1ldmVudCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyh0
b3BsZXZlbFdpbmRvd0ZvY3VzSW5FdmVudCksIHdlYlZpZXdCYXNlKTsKKyAgICBwcml2LT50b3Bs
ZXZlbEZvY3VzT3V0RXZlbnRJRCA9CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QocHJpdi0+dG9w
bGV2ZWxPblNjcmVlbldpbmRvdywgImZvY3VzLW91dC1ldmVudCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgR19DQUxMQkFDSyh0b3BsZXZlbFdpbmRvd0ZvY3VzT3V0RXZlbnQpLCB3ZWJWaWV3
QmFzZSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlUmVhbGl6ZShHdGtXaWRn
ZXQqIHdpZGdldCkKQEAgLTE3OCwxMSArMjUwLDggQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmll
d0Jhc2VSZWFsaXplKEd0a1dpZGdldCogd2lkZ2V0KQogICAgIGd0a19pbV9jb250ZXh0X3NldF9j
bGllbnRfd2luZG93KHByaXYtPmltQ29udGV4dC5nZXQoKSwgd2luZG93KTsKIAogICAgIEd0a1dp
ZGdldCogdG9wbGV2ZWwgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbCh3aWRnZXQpOwotICAgIGlm
ICh3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3codG9wbGV2ZWwpKSB7Ci0gICAgICAgIHdl
YmtpdFdlYlZpZXdCYXNlTm90aWZ5UmVzaXplclNpemVGb3JXaW5kb3cod2ViVmlldywgR1RLX1dJ
TkRPVyh0b3BsZXZlbCkpOwotICAgICAgICBnX3NpZ25hbF9jb25uZWN0KHRvcGxldmVsLCAibm90
aWZ5OjpyZXNpemUtZ3JpcC12aXNpYmxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBHX0NB
TExCQUNLKHRvcGxldmVsV2luZG93UmVzaXplR3JpcFZpc2liaWxpdHlDaGFuZ2VkKSwgd2ViVmll
dyk7Ci0gICAgfQorICAgIGlmICh3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3codG9wbGV2
ZWwpKQorICAgICAgICB3ZWJraXRXZWJWaWV3QmFzZVNldFRvcGxldmVsT25TY3JlZW5XaW5kb3co
d2ViVmlldywgR1RLX1dJTkRPVyh0b3BsZXZlbCkpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRX
ZWJWaWV3QmFzZUNvbnRhaW5lckFkZChHdGtDb250YWluZXIqIGNvbnRhaW5lciwgR3RrV2lkZ2V0
KiB3aWRnZXQpCkBAIC0yNTEsOSArMzIwLDEyIEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VDaGls
ZE1vdmVSZXNpemUoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXcsIEd0a1dpZGdldCogY2hpCiBz
dGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUZpbmFsaXplKEdPYmplY3QqIGdvYmplY3QpCiB7
CiAgICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlID0gV0VCS0lUX1dFQl9W
SUVXX0JBU0UoZ29iamVjdCk7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94
eS0+Y2xvc2UoKTsKKyAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJraXRX
ZWJWaWV3QmFzZS0+cHJpdjsKKyAgICBwcml2LT5wYWdlUHJveHktPmNsb3NlKCk7CisKKyAgICB3
ZWJraXRXZWJWaWV3QmFzZVNldFRvcGxldmVsT25TY3JlZW5XaW5kb3cod2Via2l0V2ViVmlld0Jh
c2UsIDApOwogCi0gICAgd2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPn5XZWJLaXRXZWJWaWV3QmFz
ZVByaXZhdGUoKTsKKyAgICBwcml2LT5+V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKCk7CiAgICAg
R19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl92aWV3X2Jhc2VfcGFyZW50X2NsYXNzKS0+ZmluYWxp
emUoZ29iamVjdCk7CiB9CiAKQEAgLTI2Myw3ICszMzUsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX3ZpZXdfYmFzZV9pbml0KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkK
ICAgICB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdiA9IHByaXY7CiAgICAgbmV3IChwcml2KSBXZWJL
aXRXZWJWaWV3QmFzZVByaXZhdGUoKTsKIAotICAgIHByaXYtPmlzUGFnZUFjdGl2ZSA9IFRSVUU7
CiAgICAgcHJpdi0+c2hvdWxkRm9yd2FyZE5leHRLZXlFdmVudCA9IEZBTFNFOwogCiAgICAgR3Rr
V2lkZ2V0KiB2aWV3V2lkZ2V0ID0gR1RLX1dJREdFVCh3ZWJraXRXZWJWaWV3QmFzZSk7CkBAIC0z
NjYsOSArNDM3LDcgQEAgc3RhdGljIHZvaWQgcmVzaXplV2ViS2l0V2ViVmlld0Jhc2VGcm9tQWxs
b2NhdGlvbihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UKICAgICBpZiAocHJpdi0+cGFn
ZVByb3h5LT5kcmF3aW5nQXJlYSgpKQogICAgICAgICBwcml2LT5wYWdlUHJveHktPmRyYXdpbmdB
cmVhKCktPnNldFNpemUodmlld1JlY3Quc2l6ZSgpLCBJbnRTaXplKCkpOwogCi0gICAgR3RrV2lk
Z2V0KiB0b3BsZXZlbCA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQod2ViVmll
d0Jhc2UpKTsKLSAgICBpZiAod2lkZ2V0SXNPbnNjcmVlblRvcGxldmVsV2luZG93KHRvcGxldmVs
KSkKLSAgICAgICAgd2Via2l0V2ViVmlld0Jhc2VOb3RpZnlSZXNpemVyU2l6ZUZvcldpbmRvdyh3
ZWJWaWV3QmFzZSwgR1RLX1dJTkRPVyh0b3BsZXZlbCkpOworICAgIHdlYmtpdFdlYlZpZXdCYXNl
Tm90aWZ5UmVzaXplclNpemVGb3JXaW5kb3cod2ViVmlld0Jhc2UpOwogfQogCiBzdGF0aWMgdm9p
ZCB3ZWJraXRXZWJWaWV3QmFzZVNpemVBbGxvY2F0ZShHdGtXaWRnZXQqIHdpZGdldCwgR3RrQWxs
b2NhdGlvbiogYWxsb2NhdGlvbikKQEAgLTM5MiwyOCArNDYxLDM3IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdCYXNlTWFwKEd0a1dpZGdldCogd2lkZ2V0KQogICAgIEdUS19XSURHRVRfQ0xB
U1Mod2Via2l0X3dlYl92aWV3X2Jhc2VfcGFyZW50X2NsYXNzKS0+bWFwKHdpZGdldCk7CiAKICAg
ICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3
aWRnZXQpOwotICAgIGlmICghd2ViVmlld0Jhc2UtPnByaXYtPm5lZWRzUmVzaXplT25NYXApCisg
ICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7Cisg
ICAgaWYgKCFwcml2LT5pc1Zpc2libGUpIHsKKyAgICAgICAgcHJpdi0+aXNWaXNpYmxlID0gdHJ1
ZTsKKyAgICAgICAgcHJpdi0+cGFnZVByb3h5LT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVBy
b3h5OjpWaWV3SXNWaXNpYmxlKTsKKyAgICB9CisKKyAgICBpZiAoIXByaXYtPm5lZWRzUmVzaXpl
T25NYXApCiAgICAgICAgIHJldHVybjsKIAogICAgIEd0a0FsbG9jYXRpb24gYWxsb2NhdGlvbjsK
ICAgICBndGtfd2lkZ2V0X2dldF9hbGxvY2F0aW9uKHdpZGdldCwgJmFsbG9jYXRpb24pOwogICAg
IHJlc2l6ZVdlYktpdFdlYlZpZXdCYXNlRnJvbUFsbG9jYXRpb24od2ViVmlld0Jhc2UsICZhbGxv
Y2F0aW9uLCB0cnVlIC8qIHNpemVDaGFuZ2VkICovKTsKLSAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+
bmVlZHNSZXNpemVPbk1hcCA9IGZhbHNlOworICAgIHByaXYtPm5lZWRzUmVzaXplT25NYXAgPSBm
YWxzZTsKIH0KIAotc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlRm9jdXNJbkV2ZW50
KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEZvY3VzKiBldmVudCkKK3N0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdCYXNlVW5tYXAoR3RrV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgV2ViS2l0V2Vi
Vmlld0Jhc2UqIHdlYlZpZXdCYXNlID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0KTsKLSAg
ICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsKKyAg
ICBHVEtfV0lER0VUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19iYXNlX3BhcmVudF9jbGFzcyktPnVu
bWFwKHdpZGdldCk7CiAKLSAgICBHdGtXaWRnZXQqIHRvcGxldmVsID0gZ3RrX3dpZGdldF9nZXRf
dG9wbGV2ZWwod2lkZ2V0KTsKLSAgICBpZiAod2lkZ2V0SXNPbnNjcmVlblRvcGxldmVsV2luZG93
KHRvcGxldmVsKSAmJiBndGtfd2luZG93X2hhc190b3BsZXZlbF9mb2N1cyhHVEtfV0lORE9XKHRv
cGxldmVsKSkpIHsKLSAgICAgICAgZ3RrX2ltX2NvbnRleHRfZm9jdXNfaW4ocHJpdi0+aW1Db250
ZXh0LmdldCgpKTsKLSAgICAgICAgaWYgKCFwcml2LT5pc1BhZ2VBY3RpdmUpIHsKLSAgICAgICAg
ICAgIHByaXYtPmlzUGFnZUFjdGl2ZSA9IFRSVUU7Ci0gICAgICAgICAgICBwcml2LT5wYWdlUHJv
eHktPnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdXaW5kb3dJc0FjdGl2ZSk7
Ci0gICAgICAgIH0KKyAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSBXRUJLSVRf
V0VCX1ZJRVdfQkFTRSh3aWRnZXQpLT5wcml2OworICAgIGlmIChwcml2LT5pc1Zpc2libGUpIHsK
KyAgICAgICAgcHJpdi0+aXNWaXNpYmxlID0gZmFsc2U7CisgICAgICAgIHByaXYtPnBhZ2VQcm94
eS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld0lzVmlzaWJsZSk7CiAgICAg
fQorfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VGb2N1c0luRXZlbnQoR3Rr
V2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50Rm9jdXMqIGV2ZW50KQoreworICAgIFdlYktpdFdlYlZp
ZXdCYXNlKiB3ZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCk7CisgICAg
d2Via2l0V2ViVmlld0Jhc2VTZXRGb2N1cyh3ZWJWaWV3QmFzZSwgdHJ1ZSk7CisgICAgZ3RrX2lt
X2NvbnRleHRfZm9jdXNfaW4od2ViVmlld0Jhc2UtPnByaXYtPmltQ29udGV4dC5nZXQoKSk7CiAK
ICAgICByZXR1cm4gR1RLX1dJREdFVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfYmFzZV9wYXJlbnRf
Y2xhc3MpLT5mb2N1c19pbl9ldmVudCh3aWRnZXQsIGV2ZW50KTsKIH0KQEAgLTQyMSwxMiArNDk5
LDggQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlRm9jdXNJbkV2ZW50KEd0a1dp
ZGdldCogd2lkZ2V0LCBHZGtFdmVudEZvY3VzKgogc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZp
ZXdCYXNlRm9jdXNPdXRFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRGb2N1cyogZXZl
bnQpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlID0gV0VCS0lUX1dFQl9W
SUVXX0JBU0Uod2lkZ2V0KTsKLSAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3
ZWJWaWV3QmFzZS0+cHJpdjsKLQotICAgIHByaXYtPmlzUGFnZUFjdGl2ZSA9IEZBTFNFOwotICAg
IHByaXYtPnBhZ2VQcm94eS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld1dp
bmRvd0lzQWN0aXZlKTsKLSAgICBpZiAocHJpdi0+aW1Db250ZXh0KQotICAgICAgICBndGtfaW1f
Y29udGV4dF9mb2N1c19vdXQocHJpdi0+aW1Db250ZXh0LmdldCgpKTsKKyAgICB3ZWJraXRXZWJW
aWV3QmFzZVNldEZvY3VzKHdlYlZpZXdCYXNlLCBmYWxzZSk7CisgICAgZ3RrX2ltX2NvbnRleHRf
Zm9jdXNfb3V0KHdlYlZpZXdCYXNlLT5wcml2LT5pbUNvbnRleHQuZ2V0KCkpOwogCiAgICAgcmV0
dXJuIEdUS19XSURHRVRfQ0xBU1Mod2Via2l0X3dlYl92aWV3X2Jhc2VfcGFyZW50X2NsYXNzKS0+
Zm9jdXNfb3V0X2V2ZW50KHdpZGdldCwgZXZlbnQpOwogfQpAQCAtNjU0LDYgKzcyOCwyMSBAQCBz
dGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VEcmFnRHJvcChHdGtXaWRnZXQqIHdpZGdl
dCwgR2RrRHJhZ0NvbnRleHQqIGNvbgogICAgIHJldHVybiBUUlVFOwogfQogCitzdGF0aWMgdm9p
ZCB3ZWJraXRXZWJWaWV3QmFzZVBhcmVudFNldChHdGtXaWRnZXQqIHdpZGdldCwgR3RrV2lkZ2V0
KiBvbGRQYXJlbnQpCit7CisgICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlID0gV0VC
S0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0KTsKKyAgICBpZiAoIWd0a193aWRnZXRfZ2V0X3BhcmVu
dCh3aWRnZXQpKSB7CisgICAgICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9wbGV2ZWxPblNjcmVl
bldpbmRvdyh3ZWJWaWV3QmFzZSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBH
dGtXaWRnZXQqIHRvcGxldmVsID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwod2lkZ2V0KTsKKyAg
ICBpZiAod2lkZ2V0SXNPbnNjcmVlblRvcGxldmVsV2luZG93KHRvcGxldmVsKSkKKyAgICAgICAg
d2Via2l0V2ViVmlld0Jhc2VTZXRUb3BsZXZlbE9uU2NyZWVuV2luZG93KHdlYlZpZXdCYXNlLCBH
VEtfV0lORE9XKHRvcGxldmVsKSk7CisgICAgZWxzZQorICAgICAgICB3ZWJraXRXZWJWaWV3QmFz
ZVNldFRvcGxldmVsT25TY3JlZW5XaW5kb3cod2ViVmlld0Jhc2UsIDApOworfQorCiBzdGF0aWMg
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfYmFzZV9jbGFzc19pbml0KFdlYktpdFdlYlZpZXdCYXNlQ2xh
c3MqIHdlYmtpdFdlYlZpZXdCYXNlQ2xhc3MpCiB7CiAgICAgR3RrV2lkZ2V0Q2xhc3MqIHdpZGdl
dENsYXNzID0gR1RLX1dJREdFVF9DTEFTUyh3ZWJraXRXZWJWaWV3QmFzZUNsYXNzKTsKQEAgLTY2
MSw2ICs3NTAsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfYmFzZV9jbGFzc19pbml0
KFdlYktpdFdlYlZpZXdCYXNlQ2xhc3MqIHdlYmtpdFdlYlZpZQogICAgIHdpZGdldENsYXNzLT5k
cmF3ID0gd2Via2l0V2ViVmlld0Jhc2VEcmF3OwogICAgIHdpZGdldENsYXNzLT5zaXplX2FsbG9j
YXRlID0gd2Via2l0V2ViVmlld0Jhc2VTaXplQWxsb2NhdGU7CiAgICAgd2lkZ2V0Q2xhc3MtPm1h
cCA9IHdlYmtpdFdlYlZpZXdCYXNlTWFwOworICAgIHdpZGdldENsYXNzLT51bm1hcCA9IHdlYmtp
dFdlYlZpZXdCYXNlVW5tYXA7CiAgICAgd2lkZ2V0Q2xhc3MtPmZvY3VzX2luX2V2ZW50ID0gd2Vi
a2l0V2ViVmlld0Jhc2VGb2N1c0luRXZlbnQ7CiAgICAgd2lkZ2V0Q2xhc3MtPmZvY3VzX291dF9l
dmVudCA9IHdlYmtpdFdlYlZpZXdCYXNlRm9jdXNPdXRFdmVudDsKICAgICB3aWRnZXRDbGFzcy0+
a2V5X3ByZXNzX2V2ZW50ID0gd2Via2l0V2ViVmlld0Jhc2VLZXlQcmVzc0V2ZW50OwpAQCAtNjc3
LDYgKzc2Nyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19iYXNlX2NsYXNzX2luaXQo
V2ViS2l0V2ViVmlld0Jhc2VDbGFzcyogd2Via2l0V2ViVmllCiAgICAgd2lkZ2V0Q2xhc3MtPmRy
YWdfZHJvcCA9IHdlYmtpdFdlYlZpZXdCYXNlRHJhZ0Ryb3A7CiAgICAgd2lkZ2V0Q2xhc3MtPmRy
YWdfZGF0YV9yZWNlaXZlZCA9IHdlYmtpdFdlYlZpZXdCYXNlRHJhZ0RhdGFSZWNlaXZlZDsKICAg
ICB3aWRnZXRDbGFzcy0+Z2V0X2FjY2Vzc2libGUgPSB3ZWJraXRXZWJWaWV3QmFzZUdldEFjY2Vz
c2libGU7CisgICAgd2lkZ2V0Q2xhc3MtPnBhcmVudF9zZXQgPSB3ZWJraXRXZWJWaWV3QmFzZVBh
cmVudFNldDsKIAogICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xB
U1Mod2Via2l0V2ViVmlld0Jhc2VDbGFzcyk7CiAgICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9
IHdlYmtpdFdlYlZpZXdCYXNlRmluYWxpemU7CkBAIC04NzgsMyArOTY5LDQ0IEBAIHZvaWQgd2Vi
a2l0V2ViVmlld0Jhc2VRdWV1ZURyYXdPZkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRzKFdl
YktpdFdlYlZpZXdCYXNlCiAgICAgZ190aW1lb3V0X2FkZCgxMDAwIC8gNjAsIHJlaW50ZXJwcmV0
X2Nhc3Q8R1NvdXJjZUZ1bmM+KHF1ZXVlQW5vdGhlckRyYXdPZkFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdSZXN1bHRzKSwgd2ViVmlld0Jhc2VQb2ludGVyKTsKIH0KICNlbmRpZgorCit2b2lkIHdlYmtp
dFdlYlZpZXdCYXNlU2V0Rm9jdXMoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBib29s
IGZvY3VzZWQpCit7CisgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmll
d0Jhc2UtPnByaXY7CisgICAgaWYgKHByaXYtPmlzRm9jdXNlZCA9PSBmb2N1c2VkKQorICAgICAg
ICByZXR1cm47CisKKyAgICB1bnNpZ25lZCB2aWV3U3RhdGVGbGFncyA9IFdlYlBhZ2VQcm94eTo6
Vmlld0lzRm9jdXNlZDsKKyAgICBwcml2LT5pc0ZvY3VzZWQgPSBmb2N1c2VkOworCisgICAgLy8g
SWYgdGhlIHZpZXcgaGFzIHJlY2VpdmVkIHRoZSBmb2N1cyBhbmQgdGhlIHdpbmRvdyBpcyBub3Qg
YWN0aXZlCisgICAgLy8gbWFyayB0aGUgY3VycmVudCB3aW5kb3cgYXMgYWN0aXZlIG5vdy4gVGhp
cyBjYW4gaGFwcGVuIGlmIHRoZQorICAgIC8vIHRvcGxldmVsIHdpbmRvdyBpcyBhIEdUS19XSU5E
T1dfUE9QVVAgYW5kIHRoZSBmb2N1cyBoYXMgYmVlbgorICAgIC8vIHNldCBwcm9ncmFtYXRpY2Fs
bHkgbGlrZSBXZWJLaXRUZXN0UnVubmVyIGRvZXMsIGJlY2F1c2UgUE9QVVAKKyAgICAvLyBjYW4n
dCBiZSBmb2N1c2VkLgorICAgIGlmIChwcml2LT5pc0ZvY3VzZWQgJiYgIXByaXYtPmlzSW5XaW5k
b3dBY3RpdmUpIHsKKyAgICAgICAgcHJpdi0+aXNJbldpbmRvd0FjdGl2ZSA9IHRydWU7CisgICAg
ICAgIHZpZXdTdGF0ZUZsYWdzIHw9IFdlYlBhZ2VQcm94eTo6Vmlld1dpbmRvd0lzQWN0aXZlOwor
ICAgIH0KKyAgICBwcml2LT5wYWdlUHJveHktPnZpZXdTdGF0ZURpZENoYW5nZSh2aWV3U3RhdGVG
bGFncyk7Cit9CisKK2Jvb2wgd2Via2l0V2ViVmlld0Jhc2VJc0luV2luZG93QWN0aXZlKFdlYktp
dFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkKK3sKKyAgICByZXR1cm4gd2ViVmlld0Jhc2UtPnBy
aXYtPmlzSW5XaW5kb3dBY3RpdmU7Cit9CisKK2Jvb2wgd2Via2l0V2ViVmlld0Jhc2VJc0ZvY3Vz
ZWQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlKQoreworICAgIHJldHVybiB3ZWJWaWV3
QmFzZS0+cHJpdi0+aXNGb2N1c2VkOworfQorCitib29sIHdlYmtpdFdlYlZpZXdCYXNlSXNWaXNp
YmxlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkKK3sKKyAgICByZXR1cm4gd2ViVmll
d0Jhc2UtPnByaXYtPmlzVmlzaWJsZTsKK30KKworYm9vbCB3ZWJraXRXZWJWaWV3QmFzZUlzSW5X
aW5kb3coV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlKQoreworICAgIHJldHVybiB3ZWJW
aWV3QmFzZS0+cHJpdi0+dG9wbGV2ZWxPblNjcmVlbldpbmRvdzsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2
YXRlLmgKaW5kZXggMDMxZTVkNS4uOGQwZjg2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKQEAg
LTU2LDQgKzU2LDEwIEBAIEdka0V2ZW50KiB3ZWJraXRXZWJWaWV3QmFzZVRha2VDb250ZXh0TWVu
dUV2ZW50KFdlYktpdFdlYlZpZXdCYXNlKik7CiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlUXVldWVE
cmF3T2ZBY2NlbGVyYXRlZENvbXBvc2l0aW5nUmVzdWx0cyhXZWJLaXRXZWJWaWV3QmFzZSopOwog
I2VuZGlmCiAKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRGb2N1cyhXZWJLaXRXZWJWaWV3QmFz
ZSosIGJvb2wgZm9jdXNlZCk7Citib29sIHdlYmtpdFdlYlZpZXdCYXNlSXNJbldpbmRvd0FjdGl2
ZShXZWJLaXRXZWJWaWV3QmFzZSopOworYm9vbCB3ZWJraXRXZWJWaWV3QmFzZUlzRm9jdXNlZChX
ZWJLaXRXZWJWaWV3QmFzZSopOworYm9vbCB3ZWJraXRXZWJWaWV3QmFzZUlzVmlzaWJsZShXZWJL
aXRXZWJWaWV3QmFzZSopOworYm9vbCB3ZWJraXRXZWJWaWV3QmFzZUlzSW5XaW5kb3coV2ViS2l0
V2ViVmlld0Jhc2UqKTsKKwogI2VuZGlmIC8vIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2Vi
S2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9U
ZXN0V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggY2M2N2M1ZC4uMDJlODEzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJL
aXRXZWJWaWV3LmNwcApAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3
V2luZG93UHJvcGVydGllcyhVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAKIHN0
YXRpYyB2b2lkIHRlc3RXZWJWaWV3TW91c2VUYXJnZXQoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQogewotICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZCgp
OworICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZChHVEtfV0lORE9XX1RP
UExFVkVMKTsKIAogICAgIGNvbnN0IGNoYXIqIGxpbmtzSG92ZXJlZEhUTUwgPQogICAgICAgICAi
PGh0bWw+PGJvZHk+IgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvUGxh
dGZvcm1XZWJWaWV3R3RrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1BsYXRmb3Jt
V2ViVmlld0d0ay5jcHAKaW5kZXggYWZlNGE1Ni4uZjE2MTVkNCAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3BwCkBAIC0yOCw2ICsyOCw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCiAK
KyNpbmNsdWRlIDxXZWJLaXQyL1dLVmlld1ByaXZhdGUuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+
CiAKIG5hbWVzcGFjZSBXVFIgewpAQCAtNzAsNiArNzEsOCBAQCBXS1BhZ2VSZWYgUGxhdGZvcm1X
ZWJWaWV3OjpwYWdlKCkKIAogdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmZvY3VzKCkKIHsKKyAgICBX
S1ZpZXdTZXRGb2N1cyhtX3ZpZXcsIHRydWUpOworICAgIHNldFdpbmRvd0lzS2V5KHRydWUpOwog
fQogCiBXS1JlY3QgUGxhdGZvcm1XZWJWaWV3Ojp3aW5kb3dGcmFtZSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165107</attachid>
            <date>2012-09-21 03:26:35 -0700</date>
            <delta_ts>2012-09-21 09:03:51 -0700</delta_ts>
            <desc>Updated patch according to review comments</desc>
            <filename>wk2-view-state2.diff</filename>
            <type>text/plain</type>
            <size>24435</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBjOGM4NWU2Li5mMTQxZWY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcw
IEBACisyMDEyLTA5LTIxICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1RLXSBJbXBsZW1lbnQgVmlld1N0YXRlIG1ldGhvZHMgaW4gUGFnZUNs
aWVudEltcGwgaW4gV2ViS2l0MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTcyMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbXBsZW1lbnQgaXNWaWV3V2luZG93QWN0aXZlKCksIGlzVmlld0ZvY3VzZWQo
KSwgaXNWaWV3VmlzaWJsZSgpCisgICAgICAgIGFuZCBpc1ZpZXdJbldpbmRvdygpIGluIFBhZ2VD
bGllbnRJbXBsLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogQWRkIG5ldyBmaWxl
cyB0byBjb21waWxhdGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5j
cHA6CisgICAgICAgIChXS1ZpZXdTZXRGb2N1cyk6IE5ldyBwcml2YXRlIG1ldGhvZCB1c2VkIGJ5
IFdUUiB0byBmb2N1cyB0aGUKKyAgICAgICAgV2ViVmlldy4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvZ3RrL1dLVmlld1ByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bDo6aXNWaWV3V2luZG93QWN0aXZlKTogUmV0dXJuCisgICAgICAgIHdlYmtpdFdlYlZpZXdCYXNl
SXNJbldpbmRvd0FjdGl2ZSgpLgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6aXNW
aWV3Rm9jdXNlZCk6IFJldHVybgorICAgICAgICB3ZWJraXRXZWJWaWV3QmFzZUlzRm9jdXNlZCgp
LgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6aXNWaWV3VmlzaWJsZSk6IFJldHVy
bgorICAgICAgICB3ZWJraXRXZWJWaWV3QmFzZUlzVmlzaWJsZSgpLgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbDo6aXNWaWV3SW5XaW5kb3cpOiBSZXR1cm4KKyAgICAgICAgd2Via2l0
V2ViVmlld0Jhc2VJc0luV2luZG93KCkuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VOb3RpZnlSZXNp
emVyU2l6ZSk6IFVwZGF0ZWQgdG8gbm90IHJlY2VpdmUgdGhlCisgICAgICAgIHdpbmRvdyBhcyBw
YXJhbWV0ZXIgc2luY2UgaXQncyBub3cgc2F2ZWQgaW4gdGhlIGluc3RhbmNlIHN0cnVjdC4KKyAg
ICAgICAgKHRvcGxldmVsV2luZG93UmVzaXplR3JpcFZpc2liaWxpdHlDaGFuZ2VkKTogVXBkYXRl
IHRvCisgICAgICAgIHdlYmtpdFdlYlZpZXdCYXNlTm90aWZ5UmVzaXplclNpemUoKSBBUEkgY2hh
bmdlLgorICAgICAgICAodG9wbGV2ZWxXaW5kb3dGb2N1c0luRXZlbnQpOiBVcGRhdGUgVmlld1dp
bmRvd0lzQWN0aXZlIGZsYWcgYW5kCisgICAgICAgIG5vdGlmeSB0aGUgV2ViUGFnZVByb3h5IGlm
IGl0IGNoYW5nZWQuCisgICAgICAgICh0b3BsZXZlbFdpbmRvd0ZvY3VzT3V0RXZlbnQpOiBEaXR0
by4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9wbGV2ZWxPblNjcmVlbldpbmRvdyk6
IFNldCB0aGUgdG9wbGV2ZWwKKyAgICAgICAgb24tc2NyZWVuIHdpbmRvdyB3aGVyZSB0aGUgdmll
dyBpcyBjdXJyZW50bHkgYWRkZWQgYW5kIG5vdGlmeQorICAgICAgICBXZWJQYWdlUHJveHkgaWYg
aXQgY2hhbmdlZC4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlUmVhbGl6ZSk6IENhbGwKKyAg
ICAgICAgd2Via2l0V2ViVmlld0Jhc2VTZXRUb3BsZXZlbE9uU2NyZWVuV2luZG93KCkgaWYgdGhl
IHZpZXcgaGFzIGJlZW4KKyAgICAgICAgYWRkZWQgdG8gYW4gb24tc2NyZWVuIHdpbmRvdy4KKyAg
ICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlRmluYWxpemUpOiBSZXNldCB0aGUgdG9wbGV2ZWwgb24t
c2NyZWVuIHdpbmRvdworICAgICAgICB0byBtYWtlIHN1cmUgYWxsIHNpZ25hbHMgYXJlIGRpc2Nv
bm5lY3RlZCB3aGVuIHRoZSB2aWV3IGlzCisgICAgICAgIGRlc3Ryb3llZC4KKyAgICAgICAgKHdl
YmtpdF93ZWJfdmlld19iYXNlX2luaXQpOiBSZW1vdmUgdW5uZWVkZWQgaW5pdGlhbGl6YXRpb24u
CisgICAgICAgIChyZXNpemVXZWJLaXRXZWJWaWV3QmFzZUZyb21BbGxvY2F0aW9uKTogVXBkYXRl
IHRvCisgICAgICAgIHdlYmtpdFdlYlZpZXdCYXNlTm90aWZ5UmVzaXplclNpemUoKSBBUEkgY2hh
bmdlLgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VNYXApOiBVcGRhdGUgVmlld0lzVmlzaWJs
ZSBmbGFnIGFuZCBub3RpZnkKKyAgICAgICAgV2ViUGFnZVByb3h5IGlmIGl0IGNoYW5nZWQuCisg
ICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVVubWFwKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRX
ZWJWaWV3QmFzZUZvY3VzSW5FdmVudCk6IENhbGwgd2Via2l0V2ViVmlld0Jhc2VTZXRGb2N1cygp
CisgICAgICAgIHBhc3NpbmcgdHJ1ZSB0byBmb2N1cyB0aGUgdmlldy4KKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdCYXNlRm9jdXNPdXRFdmVudCk6IENhbGwgd2Via2l0V2ViVmlld0Jhc2VTZXRGb2N1
cygpCisgICAgICAgIHBhc3NpbmcgZmFsc2UgdG8gdW5mb2N1cyB0aGUgdmlldy4KKyAgICAgICAg
KHdlYmtpdFdlYlZpZXdCYXNlUGFyZW50U2V0KTogVXBkYXRlIHRoZSB0b3BsZXZlbCBvbi1zY3Jl
ZW4gd2luZG93CisgICAgICAgIGlmIHRoZSB2aWV3IGlzIHJlLXBhcmVudGVkLgorICAgICAgICAo
d2Via2l0X3dlYl92aWV3X2Jhc2VfY2xhc3NfaW5pdCk6IEFkZCBpbXBsZW1lbnRhdGlvbnMgZm9y
IG1hcCBhbmQKKyAgICAgICAgcGFyZW50LXNldCB2aXJ0dWFsIGZ1bmN0aW9ucy4KKyAgICAgICAg
KHdlYmtpdFdlYlZpZXdCYXNlU2V0Rm9jdXMpOiBVcGRhdGUgdGhlIFZpZXdJc0ZvY3VzZWQgYW5k
IG5vdGlmeQorICAgICAgICBXZWJQYWdlUHJveHkgaWYgaXQgY2hhbmdlZC4KKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdCYXNlSXNJbldpbmRvd0FjdGl2ZSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3
QmFzZUlzRm9jdXNlZCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUlzVmlzaWJsZSk6Cisg
ICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUlzSW5XaW5kb3cpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHRlc3RXZWJW
aWV3TW91c2VUYXJnZXQpOiBVc2UgYSBHVEtfV0lORE9XX1RPUExFVkVMIGluc3RlYWQgb2YKKyAg
ICAgICAgUE9QVVAgZm9yIHRoaXMgdGVzdCB0byBtYWtlIHN1cmUgdGhlIHZpZXcgcmVjZWl2ZXMg
Zm9jdXMgY2hhbmdlCisgICAgICAgIGV2ZW50cy4KKwogMjAxMi0wOS0yMCAgRXVubWkgTGVlICA8
ZXVubWkxNS5sZWVAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBBZGQgQVBJIHRv
IGZlZWQgdG91Y2ggZXZlbnQuCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggZWY2OWMxNS4uMDE2NzQ1MCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA5LTIxICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RL
XSBJbXBsZW1lbnQgVmlld1N0YXRlIG1ldGhvZHMgaW4gUGFnZUNsaWVudEltcGwgaW4gV2ViS2l0
MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcyMDIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHA6CisgICAgICAgIChXVFI6OlBs
YXRmb3JtV2ViVmlldzo6Zm9jdXMpOiBGb2N1cyB0aGUgdmlldy4KKwogMjAxMi0wOS0yMCAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBDb21tZW50IG91
dCBhIGZhaWxpbmcgd2Via2l0cHkgdW5pdCB0ZXN0IHVudGlsIERpcmsgY2FuIGZpeCBpdC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDQxZDMxMWQuLjZlY2IyZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYktp
dDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNTExLDYgKzUxMSw3IEBAIHdlYmtpdDJfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS0luc3BlY3RvckNs
aWVudEd0ay5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5j
cHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tWaWV3LmggXAorCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tWaWV3UHJpdmF0ZS5oIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS0FQSUNhc3RTb3VwLmggXAogCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29udGV4dFNvdXAuY3BwIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS0NvbnRleHRTb3VwLmggXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1ZpZXcuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1ZpZXcuY3BwCmluZGV4IDA5MjkxNDQu
LjNlNjlhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsv
V0tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmll
dy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJXS1ZpZXcuaCIKIAogI2luY2x1ZGUg
IldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLVmlld1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJL
aXRXZWJWaWV3QmFzZVByaXZhdGUuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTQ0
LDQgKzQ1LDcgQEAgV0tQYWdlUmVmIFdLVmlld0dldFBhZ2UoV0tWaWV3UmVmIHZpZXdSZWYpCiAg
ICAgcmV0dXJuIHRvQVBJKHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZSh0b0ltcGwodmlld1JlZikp
KTsKIH0KIAotCit2b2lkIFdLVmlld1NldEZvY3VzKFdLVmlld1JlZiB2aWV3UmVmLCBib29sIGZv
Y3VzZWQpCit7CisgICAgd2Via2l0V2ViVmlld0Jhc2VTZXRGb2N1cyh0b0ltcGwodmlld1JlZiks
IGZvY3VzZWQpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L2d0ay9XS1ZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3Rr
L1dLVmlld1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzFi
MmQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0
ay9XS1ZpZXdQcml2YXRlLmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLVmlld1ByaXZhdGVfaAorI2Rl
ZmluZSBXS1ZpZXdQcml2YXRlX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNp
ZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIHZvaWQg
V0tWaWV3U2V0Rm9jdXMoV0tWaWV3UmVmIHZpZXdSZWYsIGJvb2wgZm9jdXNlZCk7CisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS1ZpZXdQcml2YXRlX2ggKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBs
LmNwcAppbmRleCBhMWY1ZDk2Li5kNDJiOGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCkBAIC05OCwyNiArOTgsMjIgQEAg
V2ViQ29yZTo6SW50U2l6ZSBQYWdlQ2xpZW50SW1wbDo6dmlld1NpemUoKQogCiBib29sIFBhZ2VD
bGllbnRJbXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNlSXNJbldpbmRv
d0FjdGl2ZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpKTsKIH0KIAogYm9vbCBQ
YWdlQ2xpZW50SW1wbDo6aXNWaWV3Rm9jdXNlZCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gd2Via2l0V2ViVmlld0Jhc2VJc0ZvY3VzZWQo
V0VCS0lUX1dFQl9WSUVXX0JBU0UobV92aWV3V2lkZ2V0KSk7CiB9CiAKIGJvb2wgUGFnZUNsaWVu
dEltcGw6OmlzVmlld1Zpc2libGUoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0
dXJuIHRydWU7CisgICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNlSXNWaXNpYmxlKFdFQktJVF9X
RUJfVklFV19CQVNFKG1fdmlld1dpZGdldCkpOwogfQogCiBib29sIFBhZ2VDbGllbnRJbXBsOjpp
c1ZpZXdJbldpbmRvdygpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gdHJ1
ZTsKKyAgICByZXR1cm4gd2Via2l0V2ViVmlld0Jhc2VJc0luV2luZG93KFdFQktJVF9XRUJfVklF
V19CQVNFKG1fdmlld1dpZGdldCkpOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xp
ZW50SW1wbDo6cHJvY2Vzc0RpZENyYXNoKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCAyM2IwMmY2Li40YzUy
YzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwCkBAIC03OSw3ICs3OSw2IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmll
d0Jhc2VQcml2YXRlIHsKICAgICBXZWJLaXRXZWJWaWV3Q2hpbGRyZW5NYXAgY2hpbGRyZW47CiAg
ICAgT3duUHRyPFBhZ2VDbGllbnRJbXBsPiBwYWdlQ2xpZW50OwogICAgIFJlZlB0cjxXZWJQYWdl
UHJveHk+IHBhZ2VQcm94eTsKLSAgICBib29sIGlzUGFnZUFjdGl2ZTsKICAgICBib29sIHNob3Vs
ZEZvcndhcmROZXh0S2V5RXZlbnQ7CiAgICAgR1JlZlB0cjxHdGtJTUNvbnRleHQ+IGltQ29udGV4
dDsKICAgICBHdGtDbGlja0NvdW50ZXIgY2xpY2tDb3VudGVyOwpAQCAtOTUsNiArOTQsMTYgQEAg
c3RydWN0IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewogICAgIEdPd25QdHI8R2RrRXZlbnQ+
IGNvbnRleHRNZW51RXZlbnQ7CiAgICAgV2ViQ29udGV4dE1lbnVQcm94eUd0ayogYWN0aXZlQ29u
dGV4dE1lbnVQcm94eTsKIAorICAgIEd0a1dpbmRvdyogdG9wbGV2ZWxPblNjcmVlbldpbmRvdzsK
KyAgICBndWxvbmcgdG9wbGV2ZWxSZXNpemVHcmlwVmlzaWJpbGl0eUlEOworICAgIGd1bG9uZyB0
b3BsZXZlbEZvY3VzSW5FdmVudElEOworICAgIGd1bG9uZyB0b3BsZXZlbEZvY3VzT3V0RXZlbnRJ
RDsKKworICAgIC8vIFZpZXcgU3RhdGUuCisgICAgYm9vbCBpc0luV2luZG93QWN0aXZlIDogMTsK
KyAgICBib29sIGlzRm9jdXNlZCA6IDE7CisgICAgYm9vbCBpc1Zpc2libGUgOiAxOworCiAjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGJvb2wgZnVsbFNjcmVlbk1vZGVBY3RpdmU7CiAg
ICAgV2ViRnVsbFNjcmVlbkNsaWVudEd0ayBmdWxsU2NyZWVuQ2xpZW50OwpAQCAtMTA4LDMwICsx
MTcsOTMgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewogCiBHX0RFRklORV9U
WVBFKFdlYktpdFdlYlZpZXdCYXNlLCB3ZWJraXRfd2ViX3ZpZXdfYmFzZSwgR1RLX1RZUEVfQ09O
VEFJTkVSKQogCi1zdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZU5vdGlmeVJlc2l6ZXJTaXpl
Rm9yV2luZG93KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgR3RrV2luZG93KiB3aW5k
b3cpCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZU5vdGlmeVJlc2l6ZXJTaXplKFdlYktp
dFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkKIHsKKyAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZh
dGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsKKyAgICBpZiAoIXByaXYtPnRvcGxldmVsT25T
Y3JlZW5XaW5kb3cpCisgICAgICAgIHJldHVybjsKKwogICAgIGdib29sZWFuIHJlc2l6ZXJWaXNp
YmxlOwotICAgIGdfb2JqZWN0X2dldChHX09CSkVDVCh3aW5kb3cpLCAicmVzaXplLWdyaXAtdmlz
aWJsZSIsICZyZXNpemVyVmlzaWJsZSwgTlVMTCk7CisgICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNU
KHByaXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3cpLCAicmVzaXplLWdyaXAtdmlzaWJsZSIsICZy
ZXNpemVyVmlzaWJsZSwgTlVMTCk7CiAKICAgICBJbnRTaXplIHJlc2l6ZXJTaXplOwogICAgIGlm
IChyZXNpemVyVmlzaWJsZSkgewogICAgICAgICBHZGtSZWN0YW5nbGUgcmVzaXplclJlY3Q7Ci0g
ICAgICAgIGd0a193aW5kb3dfZ2V0X3Jlc2l6ZV9ncmlwX2FyZWEod2luZG93LCAmcmVzaXplclJl
Y3QpOworICAgICAgICBndGtfd2luZG93X2dldF9yZXNpemVfZ3JpcF9hcmVhKHByaXYtPnRvcGxl
dmVsT25TY3JlZW5XaW5kb3csICZyZXNpemVyUmVjdCk7CiAgICAgICAgIEdka1JlY3RhbmdsZSBh
bGxvY2F0aW9uOwogICAgICAgICBndGtfd2lkZ2V0X2dldF9hbGxvY2F0aW9uKEdUS19XSURHRVQo
d2ViVmlld0Jhc2UpLCAmYWxsb2NhdGlvbik7CiAgICAgICAgIGlmIChnZGtfcmVjdGFuZ2xlX2lu
dGVyc2VjdCgmcmVzaXplclJlY3QsICZhbGxvY2F0aW9uLCAwKSkKICAgICAgICAgICAgIHJlc2l6
ZXJTaXplID0gSW50U2l6ZShyZXNpemVyUmVjdC53aWR0aCwgcmVzaXplclJlY3QuaGVpZ2h0KTsK
ICAgICB9CiAKLSAgICBpZiAocmVzaXplclNpemUgIT0gd2ViVmlld0Jhc2UtPnByaXYtPnJlc2l6
ZXJTaXplKSB7Ci0gICAgICAgIHdlYlZpZXdCYXNlLT5wcml2LT5yZXNpemVyU2l6ZSA9IHJlc2l6
ZXJTaXplOwotICAgICAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5LT5zZXRXaW5kb3dS
ZXNpemVyU2l6ZShyZXNpemVyU2l6ZSk7CisgICAgaWYgKHJlc2l6ZXJTaXplICE9IHByaXYtPnJl
c2l6ZXJTaXplKSB7CisgICAgICAgIHByaXYtPnJlc2l6ZXJTaXplID0gcmVzaXplclNpemU7Cisg
ICAgICAgIHByaXYtPnBhZ2VQcm94eS0+c2V0V2luZG93UmVzaXplclNpemUocmVzaXplclNpemUp
OworICAgIH0KK30KKworc3RhdGljIHZvaWQgdG9wbGV2ZWxXaW5kb3dSZXNpemVHcmlwVmlzaWJp
bGl0eUNoYW5nZWQoR09iamVjdCosIEdQYXJhbVNwZWMqLCBXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
Vmlld0Jhc2UpCit7CisgICAgd2Via2l0V2ViVmlld0Jhc2VOb3RpZnlSZXNpemVyU2l6ZSh3ZWJW
aWV3QmFzZSk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB0b3BsZXZlbFdpbmRvd0ZvY3VzSW5FdmVu
dChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRGb2N1cyosIFdlYktpdFdlYlZpZXdCYXNlKiB3
ZWJWaWV3QmFzZSkKK3sKKyAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJW
aWV3QmFzZS0+cHJpdjsKKyAgICBpZiAoIXByaXYtPmlzSW5XaW5kb3dBY3RpdmUpIHsKKyAgICAg
ICAgcHJpdi0+aXNJbldpbmRvd0FjdGl2ZSA9IHRydWU7CisgICAgICAgIHByaXYtPnBhZ2VQcm94
eS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld1dpbmRvd0lzQWN0aXZlKTsK
KyAgICB9CisKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB0b3BsZXZl
bFdpbmRvd0ZvY3VzT3V0RXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50Rm9jdXMqLCBX
ZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCit7CisgICAgV2ViS2l0V2ViVmlld0Jhc2VQ
cml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7CisgICAgaWYgKHByaXYtPmlzSW5XaW5k
b3dBY3RpdmUpIHsKKyAgICAgICAgcHJpdi0+aXNJbldpbmRvd0FjdGl2ZSA9IGZhbHNlOworICAg
ICAgICBwcml2LT5wYWdlUHJveHktPnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZp
ZXdXaW5kb3dJc0FjdGl2ZSk7CiAgICAgfQorCisgICAgcmV0dXJuIEZBTFNFOwogfQogCi1zdGF0
aWMgdm9pZCB0b3BsZXZlbFdpbmRvd1Jlc2l6ZUdyaXBWaXNpYmlsaXR5Q2hhbmdlZChHT2JqZWN0
KiBvYmplY3QsIEdQYXJhbVNwZWMqLCBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCitz
dGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldFRvcGxldmVsT25TY3JlZW5XaW5kb3coV2Vi
S2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBHdGtXaW5kb3cqIHdpbmRvdykKIHsKLSAgICB3
ZWJraXRXZWJWaWV3QmFzZU5vdGlmeVJlc2l6ZXJTaXplRm9yV2luZG93KHdlYlZpZXdCYXNlLCBH
VEtfV0lORE9XKG9iamVjdCkpOworICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9
IHdlYlZpZXdCYXNlLT5wcml2OworICAgIGlmIChwcml2LT50b3BsZXZlbE9uU2NyZWVuV2luZG93
ID09IHdpbmRvdykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHByaXYtPnRvcGxldmVsUmVz
aXplR3JpcFZpc2liaWxpdHlJRCkgeworICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5l
Y3QocHJpdi0+dG9wbGV2ZWxPblNjcmVlbldpbmRvdywgcHJpdi0+dG9wbGV2ZWxSZXNpemVHcmlw
VmlzaWJpbGl0eUlEKTsKKyAgICAgICAgcHJpdi0+dG9wbGV2ZWxSZXNpemVHcmlwVmlzaWJpbGl0
eUlEID0gMDsKKyAgICB9CisgICAgaWYgKHByaXYtPnRvcGxldmVsRm9jdXNJbkV2ZW50SUQpIHsK
KyAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KHByaXYtPnRvcGxldmVsT25TY3Jl
ZW5XaW5kb3csIHByaXYtPnRvcGxldmVsRm9jdXNJbkV2ZW50SUQpOworICAgICAgICBwcml2LT50
b3BsZXZlbEZvY3VzSW5FdmVudElEID0gMDsKKyAgICB9CisgICAgaWYgKHByaXYtPnRvcGxldmVs
Rm9jdXNPdXRFdmVudElEKSB7CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChw
cml2LT50b3BsZXZlbE9uU2NyZWVuV2luZG93LCBwcml2LT50b3BsZXZlbEZvY3VzT3V0RXZlbnRJ
RCk7CisgICAgICAgIHByaXYtPnRvcGxldmVsRm9jdXNPdXRFdmVudElEID0gMDsKKyAgICB9CisK
KyAgICBwcml2LT50b3BsZXZlbE9uU2NyZWVuV2luZG93ID0gd2luZG93OworICAgIHByaXYtPnBh
Z2VQcm94eS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld0lzSW5XaW5kb3cp
OworICAgIGlmICghcHJpdi0+dG9wbGV2ZWxPblNjcmVlbldpbmRvdykKKyAgICAgICAgcmV0dXJu
OworCisgICAgd2Via2l0V2ViVmlld0Jhc2VOb3RpZnlSZXNpemVyU2l6ZSh3ZWJWaWV3QmFzZSk7
CisKKyAgICBwcml2LT50b3BsZXZlbFJlc2l6ZUdyaXBWaXNpYmlsaXR5SUQgPQorICAgICAgICBn
X3NpZ25hbF9jb25uZWN0KHByaXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3csICJub3RpZnk6OnJl
c2l6ZS1ncmlwLXZpc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0so
dG9wbGV2ZWxXaW5kb3dSZXNpemVHcmlwVmlzaWJpbGl0eUNoYW5nZWQpLCB3ZWJWaWV3QmFzZSk7
CisgICAgcHJpdi0+dG9wbGV2ZWxGb2N1c0luRXZlbnRJRCA9CisgICAgICAgIGdfc2lnbmFsX2Nv
bm5lY3QocHJpdi0+dG9wbGV2ZWxPblNjcmVlbldpbmRvdywgImZvY3VzLWluLWV2ZW50IiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLKHRvcGxldmVsV2luZG93Rm9jdXNJbkV2
ZW50KSwgd2ViVmlld0Jhc2UpOworICAgIHByaXYtPnRvcGxldmVsRm9jdXNPdXRFdmVudElEID0K
KyAgICAgICAgZ19zaWduYWxfY29ubmVjdChwcml2LT50b3BsZXZlbE9uU2NyZWVuV2luZG93LCAi
Zm9jdXMtb3V0LWV2ZW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLKHRv
cGxldmVsV2luZG93Rm9jdXNPdXRFdmVudCksIHdlYlZpZXdCYXNlKTsKIH0KIAogc3RhdGljIHZv
aWQgd2Via2l0V2ViVmlld0Jhc2VSZWFsaXplKEd0a1dpZGdldCogd2lkZ2V0KQpAQCAtMTc4LDEx
ICsyNTAsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVJlYWxpemUoR3RrV2lkZ2V0
KiB3aWRnZXQpCiAgICAgZ3RrX2ltX2NvbnRleHRfc2V0X2NsaWVudF93aW5kb3cocHJpdi0+aW1D
b250ZXh0LmdldCgpLCB3aW5kb3cpOwogCiAgICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9IGd0a193
aWRnZXRfZ2V0X3RvcGxldmVsKHdpZGdldCk7Ci0gICAgaWYgKHdpZGdldElzT25zY3JlZW5Ub3Bs
ZXZlbFdpbmRvdyh0b3BsZXZlbCkpIHsKLSAgICAgICAgd2Via2l0V2ViVmlld0Jhc2VOb3RpZnlS
ZXNpemVyU2l6ZUZvcldpbmRvdyh3ZWJWaWV3LCBHVEtfV0lORE9XKHRvcGxldmVsKSk7Ci0gICAg
ICAgIGdfc2lnbmFsX2Nvbm5lY3QodG9wbGV2ZWwsICJub3RpZnk6OnJlc2l6ZS1ncmlwLXZpc2li
bGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sodG9wbGV2ZWxXaW5kb3dS
ZXNpemVHcmlwVmlzaWJpbGl0eUNoYW5nZWQpLCB3ZWJWaWV3KTsKLSAgICB9CisgICAgaWYgKHdp
ZGdldElzT25zY3JlZW5Ub3BsZXZlbFdpbmRvdyh0b3BsZXZlbCkpCisgICAgICAgIHdlYmtpdFdl
YlZpZXdCYXNlU2V0VG9wbGV2ZWxPblNjcmVlbldpbmRvdyh3ZWJWaWV3LCBHVEtfV0lORE9XKHRv
cGxldmVsKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ29udGFpbmVyQWRk
KEd0a0NvbnRhaW5lciogY29udGFpbmVyLCBHdGtXaWRnZXQqIHdpZGdldCkKQEAgLTI1MSw5ICsz
MjAsMTIgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNoaWxkTW92ZVJlc2l6ZShXZWJLaXRXZWJW
aWV3QmFzZSogd2ViVmlldywgR3RrV2lkZ2V0KiBjaGkKIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZp
ZXdCYXNlRmluYWxpemUoR09iamVjdCogZ29iamVjdCkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFz
ZSogd2Via2l0V2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRShnb2JqZWN0KTsKLSAg
ICB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5LT5jbG9zZSgpOworICAgIFdlYktp
dFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2OworICAg
IHByaXYtPnBhZ2VQcm94eS0+Y2xvc2UoKTsKIAotICAgIHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2
LT5+V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKCk7CisgICAgd2Via2l0V2ViVmlld0Jhc2VTZXRU
b3BsZXZlbE9uU2NyZWVuV2luZG93KHdlYmtpdFdlYlZpZXdCYXNlLCAwKTsKKworICAgIHByaXYt
Pn5XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUoKTsKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRf
d2ViX3ZpZXdfYmFzZV9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShnb2JqZWN0KTsKIH0KIApAQCAt
MjYzLDcgKzMzNSw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19iYXNlX2luaXQoV2Vi
S2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQogICAgIHdlYmtpdFdlYlZpZXdCYXNl
LT5wcml2ID0gcHJpdjsKICAgICBuZXcgKHByaXYpIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSgp
OwogCi0gICAgcHJpdi0+aXNQYWdlQWN0aXZlID0gVFJVRTsKICAgICBwcml2LT5zaG91bGRGb3J3
YXJkTmV4dEtleUV2ZW50ID0gRkFMU0U7CiAKICAgICBHdGtXaWRnZXQqIHZpZXdXaWRnZXQgPSBH
VEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNlKTsKQEAgLTM2Niw5ICs0MzcsNyBAQCBzdGF0aWMg
dm9pZCByZXNpemVXZWJLaXRXZWJWaWV3QmFzZUZyb21BbGxvY2F0aW9uKFdlYktpdFdlYlZpZXdC
YXNlKiB3ZWJWaWV3QmFzZQogICAgIGlmIChwcml2LT5wYWdlUHJveHktPmRyYXdpbmdBcmVhKCkp
CiAgICAgICAgIHByaXYtPnBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKS0+c2V0U2l6ZSh2aWV3UmVj
dC5zaXplKCksIEludFNpemUoKSk7CiAKLSAgICBHdGtXaWRnZXQqIHRvcGxldmVsID0gZ3RrX3dp
ZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSkpOwotICAgIGlmICh3aWRn
ZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3codG9wbGV2ZWwpKQotICAgICAgICB3ZWJraXRXZWJW
aWV3QmFzZU5vdGlmeVJlc2l6ZXJTaXplRm9yV2luZG93KHdlYlZpZXdCYXNlLCBHVEtfV0lORE9X
KHRvcGxldmVsKSk7CisgICAgd2Via2l0V2ViVmlld0Jhc2VOb3RpZnlSZXNpemVyU2l6ZSh3ZWJW
aWV3QmFzZSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2l6ZUFsbG9jYXRl
KEd0a1dpZGdldCogd2lkZ2V0LCBHdGtBbGxvY2F0aW9uKiBhbGxvY2F0aW9uKQpAQCAtMzkyLDI4
ICs0NjEsMzcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VNYXAoR3RrV2lkZ2V0KiB3
aWRnZXQpCiAgICAgR1RLX1dJREdFVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfYmFzZV9wYXJlbnRf
Y2xhc3MpLT5tYXAod2lkZ2V0KTsKIAogICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFz
ZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCk7Ci0gICAgaWYgKCF3ZWJWaWV3QmFzZS0+
cHJpdi0+bmVlZHNSZXNpemVPbk1hcCkKKyAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHBy
aXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsKKyAgICBpZiAoIXByaXYtPmlzVmlzaWJsZSkgeworICAg
ICAgICBwcml2LT5pc1Zpc2libGUgPSB0cnVlOworICAgICAgICBwcml2LT5wYWdlUHJveHktPnZp
ZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdJc1Zpc2libGUpOworICAgIH0KKwor
ICAgIGlmICghcHJpdi0+bmVlZHNSZXNpemVPbk1hcCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
R3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uOwogICAgIGd0a193aWRnZXRfZ2V0X2FsbG9jYXRpb24o
d2lkZ2V0LCAmYWxsb2NhdGlvbik7CiAgICAgcmVzaXplV2ViS2l0V2ViVmlld0Jhc2VGcm9tQWxs
b2NhdGlvbih3ZWJWaWV3QmFzZSwgJmFsbG9jYXRpb24sIHRydWUgLyogc2l6ZUNoYW5nZWQgKi8p
OwotICAgIHdlYlZpZXdCYXNlLT5wcml2LT5uZWVkc1Jlc2l6ZU9uTWFwID0gZmFsc2U7CisgICAg
cHJpdi0+bmVlZHNSZXNpemVPbk1hcCA9IGZhbHNlOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gd2Vi
a2l0V2ViVmlld0Jhc2VGb2N1c0luRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50Rm9j
dXMqIGV2ZW50KQorc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VVbm1hcChHdGtXaWRnZXQq
IHdpZGdldCkKIHsKLSAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRf
V0VCX1ZJRVdfQkFTRSh3aWRnZXQpOwotICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJp
diA9IHdlYlZpZXdCYXNlLT5wcml2OworICAgIEdUS19XSURHRVRfQ0xBU1Mod2Via2l0X3dlYl92
aWV3X2Jhc2VfcGFyZW50X2NsYXNzKS0+dW5tYXAod2lkZ2V0KTsKIAotICAgIEd0a1dpZGdldCog
dG9wbGV2ZWwgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbCh3aWRnZXQpOwotICAgIGlmICh3aWRn
ZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3codG9wbGV2ZWwpICYmIGd0a193aW5kb3dfaGFzX3Rv
cGxldmVsX2ZvY3VzKEdUS19XSU5ET1codG9wbGV2ZWwpKSkgewotICAgICAgICBndGtfaW1fY29u
dGV4dF9mb2N1c19pbihwcml2LT5pbUNvbnRleHQuZ2V0KCkpOwotICAgICAgICBpZiAoIXByaXYt
PmlzUGFnZUFjdGl2ZSkgewotICAgICAgICAgICAgcHJpdi0+aXNQYWdlQWN0aXZlID0gVFJVRTsK
LSAgICAgICAgICAgIHByaXYtPnBhZ2VQcm94eS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQ
cm94eTo6Vmlld1dpbmRvd0lzQWN0aXZlKTsKLSAgICAgICAgfQorICAgIFdlYktpdFdlYlZpZXdC
YXNlUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCktPnByaXY7Cisg
ICAgaWYgKHByaXYtPmlzVmlzaWJsZSkgeworICAgICAgICBwcml2LT5pc1Zpc2libGUgPSBmYWxz
ZTsKKyAgICAgICAgcHJpdi0+cGFnZVByb3h5LT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVBy
b3h5OjpWaWV3SXNWaXNpYmxlKTsKICAgICB9Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRX
ZWJWaWV3QmFzZUZvY3VzSW5FdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRGb2N1cyog
ZXZlbnQpCit7CisgICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlID0gV0VCS0lUX1dF
Ql9WSUVXX0JBU0Uod2lkZ2V0KTsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZVNldEZvY3VzKHdlYlZp
ZXdCYXNlLCB0cnVlKTsKKyAgICBndGtfaW1fY29udGV4dF9mb2N1c19pbih3ZWJWaWV3QmFzZS0+
cHJpdi0+aW1Db250ZXh0LmdldCgpKTsKIAogICAgIHJldHVybiBHVEtfV0lER0VUX0NMQVNTKHdl
YmtpdF93ZWJfdmlld19iYXNlX3BhcmVudF9jbGFzcyktPmZvY3VzX2luX2V2ZW50KHdpZGdldCwg
ZXZlbnQpOwogfQpAQCAtNDIxLDEyICs0OTksOCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2Vi
Vmlld0Jhc2VGb2N1c0luRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50Rm9jdXMqCiBz
dGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VGb2N1c091dEV2ZW50KEd0a1dpZGdldCog
d2lkZ2V0LCBHZGtFdmVudEZvY3VzKiBldmVudCkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSog
d2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpOwotICAgIFdlYktpdFdl
YlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwotCi0gICAgcHJpdi0+
aXNQYWdlQWN0aXZlID0gRkFMU0U7Ci0gICAgcHJpdi0+cGFnZVByb3h5LT52aWV3U3RhdGVEaWRD
aGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3V2luZG93SXNBY3RpdmUpOwotICAgIGlmIChwcml2LT5p
bUNvbnRleHQpCi0gICAgICAgIGd0a19pbV9jb250ZXh0X2ZvY3VzX291dChwcml2LT5pbUNvbnRl
eHQuZ2V0KCkpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0Rm9jdXMod2ViVmlld0Jhc2UsIGZh
bHNlKTsKKyAgICBndGtfaW1fY29udGV4dF9mb2N1c19vdXQod2ViVmlld0Jhc2UtPnByaXYtPmlt
Q29udGV4dC5nZXQoKSk7CiAKICAgICByZXR1cm4gR1RLX1dJREdFVF9DTEFTUyh3ZWJraXRfd2Vi
X3ZpZXdfYmFzZV9wYXJlbnRfY2xhc3MpLT5mb2N1c19vdXRfZXZlbnQod2lkZ2V0LCBldmVudCk7
CiB9CkBAIC02NTQsNiArNzI4LDE4IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3QmFz
ZURyYWdEcm9wKEd0a1dpZGdldCogd2lkZ2V0LCBHZGtEcmFnQ29udGV4dCogY29uCiAgICAgcmV0
dXJuIFRSVUU7CiB9CiAKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlUGFyZW50U2V0KEd0
a1dpZGdldCogd2lkZ2V0LCBHdGtXaWRnZXQqIG9sZFBhcmVudCkKK3sKKyAgICBXZWJLaXRXZWJW
aWV3QmFzZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpOworICAg
IGlmICghZ3RrX3dpZGdldF9nZXRfcGFyZW50KHdpZGdldCkpIHsKKyAgICAgICAgd2Via2l0V2Vi
Vmlld0Jhc2VTZXRUb3BsZXZlbE9uU2NyZWVuV2luZG93KHdlYlZpZXdCYXNlLCAwKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIEd0a1dpZGdldCogdG9wbGV2ZWwgPSBndGtfd2lkZ2V0
X2dldF90b3BsZXZlbCh3aWRnZXQpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9wbGV2ZWxP
blNjcmVlbldpbmRvdyh3ZWJWaWV3QmFzZSwgd2lkZ2V0SXNPbnNjcmVlblRvcGxldmVsV2luZG93
KHRvcGxldmVsKSA/IEdUS19XSU5ET1codG9wbGV2ZWwpIDogMCk7Cit9CisKIHN0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfdmlld19iYXNlX2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0Jhc2VDbGFzcyog
d2Via2l0V2ViVmlld0Jhc2VDbGFzcykKIHsKICAgICBHdGtXaWRnZXRDbGFzcyogd2lkZ2V0Q2xh
c3MgPSBHVEtfV0lER0VUX0NMQVNTKHdlYmtpdFdlYlZpZXdCYXNlQ2xhc3MpOwpAQCAtNjYxLDYg
Kzc0Nyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19iYXNlX2NsYXNzX2luaXQoV2Vi
S2l0V2ViVmlld0Jhc2VDbGFzcyogd2Via2l0V2ViVmllCiAgICAgd2lkZ2V0Q2xhc3MtPmRyYXcg
PSB3ZWJraXRXZWJWaWV3QmFzZURyYXc7CiAgICAgd2lkZ2V0Q2xhc3MtPnNpemVfYWxsb2NhdGUg
PSB3ZWJraXRXZWJWaWV3QmFzZVNpemVBbGxvY2F0ZTsKICAgICB3aWRnZXRDbGFzcy0+bWFwID0g
d2Via2l0V2ViVmlld0Jhc2VNYXA7CisgICAgd2lkZ2V0Q2xhc3MtPnVubWFwID0gd2Via2l0V2Vi
Vmlld0Jhc2VVbm1hcDsKICAgICB3aWRnZXRDbGFzcy0+Zm9jdXNfaW5fZXZlbnQgPSB3ZWJraXRX
ZWJWaWV3QmFzZUZvY3VzSW5FdmVudDsKICAgICB3aWRnZXRDbGFzcy0+Zm9jdXNfb3V0X2V2ZW50
ID0gd2Via2l0V2ViVmlld0Jhc2VGb2N1c091dEV2ZW50OwogICAgIHdpZGdldENsYXNzLT5rZXlf
cHJlc3NfZXZlbnQgPSB3ZWJraXRXZWJWaWV3QmFzZUtleVByZXNzRXZlbnQ7CkBAIC02NzcsNiAr
NzY0LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Jhc2VfY2xhc3NfaW5pdChXZWJL
aXRXZWJWaWV3QmFzZUNsYXNzKiB3ZWJraXRXZWJWaWUKICAgICB3aWRnZXRDbGFzcy0+ZHJhZ19k
cm9wID0gd2Via2l0V2ViVmlld0Jhc2VEcmFnRHJvcDsKICAgICB3aWRnZXRDbGFzcy0+ZHJhZ19k
YXRhX3JlY2VpdmVkID0gd2Via2l0V2ViVmlld0Jhc2VEcmFnRGF0YVJlY2VpdmVkOwogICAgIHdp
ZGdldENsYXNzLT5nZXRfYWNjZXNzaWJsZSA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0QWNjZXNzaWJs
ZTsKKyAgICB3aWRnZXRDbGFzcy0+cGFyZW50X3NldCA9IHdlYmtpdFdlYlZpZXdCYXNlUGFyZW50
U2V0OwogCiAgICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyh3
ZWJraXRXZWJWaWV3QmFzZUNsYXNzKTsKICAgICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Vi
a2l0V2ViVmlld0Jhc2VGaW5hbGl6ZTsKQEAgLTg3OCwzICs5NjYsNDQgQEAgdm9pZCB3ZWJraXRX
ZWJWaWV3QmFzZVF1ZXVlRHJhd09mQWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHMoV2ViS2l0
V2ViVmlld0Jhc2UKICAgICBnX3RpbWVvdXRfYWRkKDEwMDAgLyA2MCwgcmVpbnRlcnByZXRfY2Fz
dDxHU291cmNlRnVuYz4ocXVldWVBbm90aGVyRHJhd09mQWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jl
c3VsdHMpLCB3ZWJWaWV3QmFzZVBvaW50ZXIpOwogfQogI2VuZGlmCisKK3ZvaWQgd2Via2l0V2Vi
Vmlld0Jhc2VTZXRGb2N1cyhXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIGJvb2wgZm9j
dXNlZCkKK3sKKyAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFz
ZS0+cHJpdjsKKyAgICBpZiAocHJpdi0+aXNGb2N1c2VkID09IGZvY3VzZWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIHVuc2lnbmVkIHZpZXdTdGF0ZUZsYWdzID0gV2ViUGFnZVByb3h5OjpWaWV3
SXNGb2N1c2VkOworICAgIHByaXYtPmlzRm9jdXNlZCA9IGZvY3VzZWQ7CisKKyAgICAvLyBJZiB0
aGUgdmlldyBoYXMgcmVjZWl2ZWQgdGhlIGZvY3VzIGFuZCB0aGUgd2luZG93IGlzIG5vdCBhY3Rp
dmUKKyAgICAvLyBtYXJrIHRoZSBjdXJyZW50IHdpbmRvdyBhcyBhY3RpdmUgbm93LiBUaGlzIGNh
biBoYXBwZW4gaWYgdGhlCisgICAgLy8gdG9wbGV2ZWwgd2luZG93IGlzIGEgR1RLX1dJTkRPV19Q
T1BVUCBhbmQgdGhlIGZvY3VzIGhhcyBiZWVuCisgICAgLy8gc2V0IHByb2dyYW1hdGljYWxseSBs
aWtlIFdlYktpdFRlc3RSdW5uZXIgZG9lcywgYmVjYXVzZSBQT1BVUAorICAgIC8vIGNhbid0IGJl
IGZvY3VzZWQuCisgICAgaWYgKHByaXYtPmlzRm9jdXNlZCAmJiAhcHJpdi0+aXNJbldpbmRvd0Fj
dGl2ZSkgeworICAgICAgICBwcml2LT5pc0luV2luZG93QWN0aXZlID0gdHJ1ZTsKKyAgICAgICAg
dmlld1N0YXRlRmxhZ3MgfD0gV2ViUGFnZVByb3h5OjpWaWV3V2luZG93SXNBY3RpdmU7CisgICAg
fQorICAgIHByaXYtPnBhZ2VQcm94eS0+dmlld1N0YXRlRGlkQ2hhbmdlKHZpZXdTdGF0ZUZsYWdz
KTsKK30KKworYm9vbCB3ZWJraXRXZWJWaWV3QmFzZUlzSW5XaW5kb3dBY3RpdmUoV2ViS2l0V2Vi
Vmlld0Jhc2UqIHdlYlZpZXdCYXNlKQoreworICAgIHJldHVybiB3ZWJWaWV3QmFzZS0+cHJpdi0+
aXNJbldpbmRvd0FjdGl2ZTsKK30KKworYm9vbCB3ZWJraXRXZWJWaWV3QmFzZUlzRm9jdXNlZChX
ZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCit7CisgICAgcmV0dXJuIHdlYlZpZXdCYXNl
LT5wcml2LT5pc0ZvY3VzZWQ7Cit9CisKK2Jvb2wgd2Via2l0V2ViVmlld0Jhc2VJc1Zpc2libGUo
V2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlKQoreworICAgIHJldHVybiB3ZWJWaWV3QmFz
ZS0+cHJpdi0+aXNWaXNpYmxlOworfQorCitib29sIHdlYmtpdFdlYlZpZXdCYXNlSXNJbldpbmRv
dyhXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCit7CisgICAgcmV0dXJuIHdlYlZpZXdC
YXNlLT5wcml2LT50b3BsZXZlbE9uU2NyZWVuV2luZG93OworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUu
aAppbmRleCAwMzFlNWQ1Li44ZDBmODY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaApAQCAtNTYs
NCArNTYsMTAgQEAgR2RrRXZlbnQqIHdlYmtpdFdlYlZpZXdCYXNlVGFrZUNvbnRleHRNZW51RXZl
bnQoV2ViS2l0V2ViVmlld0Jhc2UqKTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VRdWV1ZURyYXdP
ZkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRzKFdlYktpdFdlYlZpZXdCYXNlKik7CiAjZW5k
aWYKIAordm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldEZvY3VzKFdlYktpdFdlYlZpZXdCYXNlKiwg
Ym9vbCBmb2N1c2VkKTsKK2Jvb2wgd2Via2l0V2ViVmlld0Jhc2VJc0luV2luZG93QWN0aXZlKFdl
YktpdFdlYlZpZXdCYXNlKik7Citib29sIHdlYmtpdFdlYlZpZXdCYXNlSXNGb2N1c2VkKFdlYktp
dFdlYlZpZXdCYXNlKik7Citib29sIHdlYmtpdFdlYlZpZXdCYXNlSXNWaXNpYmxlKFdlYktpdFdl
YlZpZXdCYXNlKik7Citib29sIHdlYmtpdFdlYlZpZXdCYXNlSXNJbldpbmRvdyhXZWJLaXRXZWJW
aWV3QmFzZSopOworCiAjZW5kaWYgLy8gV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRX
ZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RX
ZWJLaXRXZWJWaWV3LmNwcAppbmRleCBjYzY3YzVkLi4wMmU4MTM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdl
YlZpZXcuY3BwCkBAIC00NjQsNyArNDY0LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdXaW5k
b3dQcm9wZXJ0aWVzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogc3RhdGlj
IHZvaWQgdGVzdFdlYlZpZXdNb3VzZVRhcmdldChVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCiB7Ci0gICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKCk7Cisg
ICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKEdUS19XSU5ET1dfVE9QTEVW
RUwpOwogCiAgICAgY29uc3QgY2hhciogbGlua3NIb3ZlcmVkSFRNTCA9CiAgICAgICAgICI8aHRt
bD48Ym9keT4iCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9QbGF0Zm9y
bVdlYlZpZXdHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvUGxhdGZvcm1XZWJW
aWV3R3RrLmNwcAppbmRleCBhZmU0YTU2Li5mMTYxNWQ0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKIAorI2lu
Y2x1ZGUgPFdlYktpdDIvV0tWaWV3UHJpdmF0ZS5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KIAog
bmFtZXNwYWNlIFdUUiB7CkBAIC03MCw2ICs3MSw4IEBAIFdLUGFnZVJlZiBQbGF0Zm9ybVdlYlZp
ZXc6OnBhZ2UoKQogCiB2b2lkIFBsYXRmb3JtV2ViVmlldzo6Zm9jdXMoKQogeworICAgIFdLVmll
d1NldEZvY3VzKG1fdmlldywgdHJ1ZSk7CisgICAgc2V0V2luZG93SXNLZXkodHJ1ZSk7CiB9CiAK
IFdLUmVjdCBQbGF0Zm9ybVdlYlZpZXc6OndpbmRvd0ZyYW1lKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165143</attachid>
            <date>2012-09-21 09:03:51 -0700</date>
            <delta_ts>2012-09-21 09:43:44 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-view-state3.diff</filename>
            <type>text/plain</type>
            <size>24282</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA5ZDRhYmE4Li4xYjZiZGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNzIg
QEAKIDIwMTItMDktMjEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBWaWV3U3RhdGUgbWV0aG9kcyBpbiBQYWdlQ2xp
ZW50SW1wbCBpbiBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NzIwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudCBpc1ZpZXdXaW5kb3dBY3RpdmUoKSwgaXNWaWV3Rm9jdXNlZCgp
LCBpc1ZpZXdWaXNpYmxlKCkKKyAgICAgICAgYW5kIGlzVmlld0luV2luZG93KCkgaW4gUGFnZUNs
aWVudEltcGwuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBBZGQgbmV3IGZpbGVz
IHRvIGNvbXBpbGF0aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9ndGsvV0tWaWV3LmNw
cDoKKyAgICAgICAgKFdLVmlld1NldEZvY3VzKTogTmV3IHByaXZhdGUgbWV0aG9kIHVzZWQgYnkg
V1RSIHRvIGZvY3VzIHRoZQorICAgICAgICBXZWJWaWV3LgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9ndGsvV0tWaWV3UHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBs
Ojppc1ZpZXdXaW5kb3dBY3RpdmUpOiBSZXR1cm4KKyAgICAgICAgd2Via2l0V2ViVmlld0Jhc2VJ
c0luV2luZG93QWN0aXZlKCkuCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1Zp
ZXdGb2N1c2VkKTogUmV0dXJuCisgICAgICAgIHdlYmtpdFdlYlZpZXdCYXNlSXNGb2N1c2VkKCku
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdWaXNpYmxlKTogUmV0dXJu
CisgICAgICAgIHdlYmtpdFdlYlZpZXdCYXNlSXNWaXNpYmxlKCkuCisgICAgICAgIChXZWJLaXQ6
OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdJbldpbmRvdyk6IFJldHVybgorICAgICAgICB3ZWJraXRX
ZWJWaWV3QmFzZUlzSW5XaW5kb3coKS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZU5vdGlmeVJlc2l6
ZXJTaXplKTogVXBkYXRlZCB0byBub3QgcmVjZWl2ZSB0aGUKKyAgICAgICAgd2luZG93IGFzIHBh
cmFtZXRlciBzaW5jZSBpdCdzIG5vdyBzYXZlZCBpbiB0aGUgaW5zdGFuY2Ugc3RydWN0LgorICAg
ICAgICAodG9wbGV2ZWxXaW5kb3dSZXNpemVHcmlwVmlzaWJpbGl0eUNoYW5nZWQpOiBVcGRhdGUg
dG8KKyAgICAgICAgd2Via2l0V2ViVmlld0Jhc2VOb3RpZnlSZXNpemVyU2l6ZSgpIEFQSSBjaGFu
Z2UuCisgICAgICAgICh0b3BsZXZlbFdpbmRvd0ZvY3VzSW5FdmVudCk6IFVwZGF0ZSBWaWV3V2lu
ZG93SXNBY3RpdmUgZmxhZyBhbmQKKyAgICAgICAgbm90aWZ5IHRoZSBXZWJQYWdlUHJveHkgaWYg
aXQgY2hhbmdlZC4KKyAgICAgICAgKHRvcGxldmVsV2luZG93Rm9jdXNPdXRFdmVudCk6IERpdHRv
LgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VTZXRUb3BsZXZlbE9uU2NyZWVuV2luZG93KTog
U2V0IHRoZSB0b3BsZXZlbAorICAgICAgICBvbi1zY3JlZW4gd2luZG93IHdoZXJlIHRoZSB2aWV3
IGlzIGN1cnJlbnRseSBhZGRlZCBhbmQgbm90aWZ5CisgICAgICAgIFdlYlBhZ2VQcm94eSBpZiBp
dCBjaGFuZ2VkLgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VSZWFsaXplKTogQ2FsbAorICAg
ICAgICB3ZWJraXRXZWJWaWV3QmFzZVNldFRvcGxldmVsT25TY3JlZW5XaW5kb3coKSBpZiB0aGUg
dmlldyBoYXMgYmVlbgorICAgICAgICBhZGRlZCB0byBhbiBvbi1zY3JlZW4gd2luZG93LgorICAg
ICAgICAod2Via2l0V2ViVmlld0Jhc2VGaW5hbGl6ZSk6IFJlc2V0IHRoZSB0b3BsZXZlbCBvbi1z
Y3JlZW4gd2luZG93CisgICAgICAgIHRvIG1ha2Ugc3VyZSBhbGwgc2lnbmFscyBhcmUgZGlzY29u
bmVjdGVkIHdoZW4gdGhlIHZpZXcgaXMKKyAgICAgICAgZGVzdHJveWVkLgorICAgICAgICAod2Vi
a2l0X3dlYl92aWV3X2Jhc2VfaW5pdCk6IFJlbW92ZSB1bm5lZWRlZCBpbml0aWFsaXphdGlvbi4K
KyAgICAgICAgKHJlc2l6ZVdlYktpdFdlYlZpZXdCYXNlRnJvbUFsbG9jYXRpb24pOiBVcGRhdGUg
dG8KKyAgICAgICAgd2Via2l0V2ViVmlld0Jhc2VOb3RpZnlSZXNpemVyU2l6ZSgpIEFQSSBjaGFu
Z2UuCisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZU1hcCk6IFVwZGF0ZSBWaWV3SXNWaXNpYmxl
IGZsYWcgYW5kIG5vdGlmeQorICAgICAgICBXZWJQYWdlUHJveHkgaWYgaXQgY2hhbmdlZC4KKyAg
ICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlVW5tYXApOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdFdl
YlZpZXdCYXNlRm9jdXNJbkV2ZW50KTogQ2FsbCB3ZWJraXRXZWJWaWV3QmFzZVNldEZvY3VzKCkK
KyAgICAgICAgcGFzc2luZyB0cnVlIHRvIGZvY3VzIHRoZSB2aWV3LgorICAgICAgICAod2Via2l0
V2ViVmlld0Jhc2VGb2N1c091dEV2ZW50KTogQ2FsbCB3ZWJraXRXZWJWaWV3QmFzZVNldEZvY3Vz
KCkKKyAgICAgICAgcGFzc2luZyBmYWxzZSB0byB1bmZvY3VzIHRoZSB2aWV3LgorICAgICAgICAo
d2Via2l0V2ViVmlld0Jhc2VQYXJlbnRTZXQpOiBSZXNldCB0aGUgdG9wbGV2ZWwgb24tc2NyZWVu
IHdpbmRvdworICAgICAgICBpZiB0aGUgdmlldyBpcyByZS1wYXJlbnRlZC4KKyAgICAgICAgKHdl
YmtpdF93ZWJfdmlld19iYXNlX2NsYXNzX2luaXQpOiBBZGQgaW1wbGVtZW50YXRpb25zIGZvciBt
YXAgYW5kCisgICAgICAgIHBhcmVudC1zZXQgdmlydHVhbCBmdW5jdGlvbnMuCisgICAgICAgICh3
ZWJraXRXZWJWaWV3QmFzZVNldEZvY3VzKTogVXBkYXRlIHRoZSBWaWV3SXNGb2N1c2VkIGFuZCBu
b3RpZnkKKyAgICAgICAgV2ViUGFnZVByb3h5IGlmIGl0IGNoYW5nZWQuCisgICAgICAgICh3ZWJr
aXRXZWJWaWV3QmFzZUlzSW5XaW5kb3dBY3RpdmUpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jh
c2VJc0ZvY3VzZWQpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VJc1Zpc2libGUpOgorICAg
ICAgICAod2Via2l0V2ViVmlld0Jhc2VJc0luV2luZG93KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh0ZXN0V2ViVmll
d01vdXNlVGFyZ2V0KTogVXNlIGEgR1RLX1dJTkRPV19UT1BMRVZFTCBpbnN0ZWFkIG9mCisgICAg
ICAgIFBPUFVQIGZvciB0aGlzIHRlc3QgdG8gbWFrZSBzdXJlIHRoZSB2aWV3IHJlY2VpdmVzIGZv
Y3VzIGNoYW5nZQorICAgICAgICBldmVudHMuCisKKzIwMTItMDktMjEgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCiAgICAgICAgIFtHVEtdIEFkZCBXZWJLaXRX
ZWJWaWV3OmlzLWxvYWRpbmcgcHJvcGVydHkgdG8gV2ViS2l0MiBHVEsrIEFQSQogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczMzAKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU4MjM1M2EuLjRjOTQy
NTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxMi0wOS0yMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IFZpZXdTdGF0ZSBtZXRob2Rz
IGluIFBhZ2VDbGllbnRJbXBsIGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MjAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2d0ay9QbGF0Zm9ybVdlYlZp
ZXdHdGsuY3BwOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OmZvY3VzKTogRm9jdXMg
dGhlIHZpZXcuCisKIDIwMTItMDktMjAgIFBldGVyIEJldmVybG9vICA8cGV0ZXJAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIExldmVyYWdlIENocm9taXVtJ3MgY29kZSB0byBzZXQgdXAgRklGT3Mg
Zm9yIENocm9taXVtIEFuZHJvaWQgbGF5b3V0IHRlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlz
dC5hbQppbmRleCA0MWQzMTFkLi42ZWNiMmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KQEAgLTUxMSw2ICs1MTEsNyBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tJbnNwZWN0b3JDbGllbnRHdGsuaCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1ZpZXcuY3BwIFwKIAlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvZ3RrL1dLVmlld1ByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL3NvdXAvV0tBUElDYXN0U291cC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0Mvc291cC9XS0NvbnRleHRTb3VwLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL3NvdXAvV0tDb250ZXh0U291cC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9ndGsvV0tWaWV3LmNwcAppbmRleCAwOTI5MTQ0Li4zZTY5YTk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1ZpZXcuY3BwCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSAiV0tWaWV3LmgiCiAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNs
dWRlICJXS1ZpZXdQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRl
LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC00NCw0ICs0NSw3IEBAIFdLUGFnZVJl
ZiBXS1ZpZXdHZXRQYWdlKFdLVmlld1JlZiB2aWV3UmVmKQogICAgIHJldHVybiB0b0FQSSh3ZWJr
aXRXZWJWaWV3QmFzZUdldFBhZ2UodG9JbXBsKHZpZXdSZWYpKSk7CiB9CiAKLQordm9pZCBXS1Zp
ZXdTZXRGb2N1cyhXS1ZpZXdSZWYgdmlld1JlZiwgYm9vbCBmb2N1c2VkKQoreworICAgIHdlYmtp
dFdlYlZpZXdCYXNlU2V0Rm9jdXModG9JbXBsKHZpZXdSZWYpLCBmb2N1c2VkKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tWaWV3UHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1ZpZXdQcml2YXRlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmMxYjJkMQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tWaWV3UHJpdmF0ZS5oCkBA
IC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXS1ZpZXdQcml2YXRlX2gKKyNkZWZpbmUgV0tWaWV3UHJpdmF0ZV9o
CisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4
dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCB2b2lkIFdLVmlld1NldEZvY3VzKFdLVmll
d1JlZiB2aWV3UmVmLCBib29sIGZvY3VzZWQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNl
bmRpZgorCisjZW5kaWYgLyogV0tWaWV3UHJpdmF0ZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggYTFmNWQ5Ni4u
ZDQyYjhiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFn
ZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1Bh
Z2VDbGllbnRJbXBsLmNwcApAQCAtOTgsMjYgKzk4LDIyIEBAIFdlYkNvcmU6OkludFNpemUgUGFn
ZUNsaWVudEltcGw6OnZpZXdTaXplKCkKIAogYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3V2lu
ZG93QWN0aXZlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiB0cnVlOwor
ICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFzZUlzSW5XaW5kb3dBY3RpdmUoV0VCS0lUX1dFQl9W
SUVXX0JBU0UobV92aWV3V2lkZ2V0KSk7CiB9CiAKIGJvb2wgUGFnZUNsaWVudEltcGw6OmlzVmll
d0ZvY3VzZWQoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIHRydWU7Cisg
ICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNlSXNGb2N1c2VkKFdFQktJVF9XRUJfVklFV19CQVNF
KG1fdmlld1dpZGdldCkpOwogfQogCiBib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdWaXNpYmxl
KCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVy
biB3ZWJraXRXZWJWaWV3QmFzZUlzVmlzaWJsZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdX
aWRnZXQpKTsKIH0KIAogYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3SW5XaW5kb3coKQogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIHdlYmtp
dFdlYlZpZXdCYXNlSXNJbldpbmRvdyhXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQp
KTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGw6OnByb2Nlc3NEaWRD
cmFzaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggMjNiMDJmNi4uNTMzOGUyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApA
QCAtNzksNyArNzksNiBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSB7CiAgICAg
V2ViS2l0V2ViVmlld0NoaWxkcmVuTWFwIGNoaWxkcmVuOwogICAgIE93blB0cjxQYWdlQ2xpZW50
SW1wbD4gcGFnZUNsaWVudDsKICAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBwYWdlUHJveHk7Ci0g
ICAgYm9vbCBpc1BhZ2VBY3RpdmU7CiAgICAgYm9vbCBzaG91bGRGb3J3YXJkTmV4dEtleUV2ZW50
OwogICAgIEdSZWZQdHI8R3RrSU1Db250ZXh0PiBpbUNvbnRleHQ7CiAgICAgR3RrQ2xpY2tDb3Vu
dGVyIGNsaWNrQ291bnRlcjsKQEAgLTk1LDYgKzk0LDE2IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmll
d0Jhc2VQcml2YXRlIHsKICAgICBHT3duUHRyPEdka0V2ZW50PiBjb250ZXh0TWVudUV2ZW50Owog
ICAgIFdlYkNvbnRleHRNZW51UHJveHlHdGsqIGFjdGl2ZUNvbnRleHRNZW51UHJveHk7CiAKKyAg
ICBHdGtXaW5kb3cqIHRvcGxldmVsT25TY3JlZW5XaW5kb3c7CisgICAgdW5zaWduZWQgbG9uZyB0
b3BsZXZlbFJlc2l6ZUdyaXBWaXNpYmlsaXR5SUQ7CisgICAgdW5zaWduZWQgbG9uZyB0b3BsZXZl
bEZvY3VzSW5FdmVudElEOworICAgIHVuc2lnbmVkIGxvbmcgdG9wbGV2ZWxGb2N1c091dEV2ZW50
SUQ7CisKKyAgICAvLyBWaWV3IFN0YXRlLgorICAgIGJvb2wgaXNJbldpbmRvd0FjdGl2ZSA6IDE7
CisgICAgYm9vbCBpc0ZvY3VzZWQgOiAxOworICAgIGJvb2wgaXNWaXNpYmxlIDogMTsKKwogI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBib29sIGZ1bGxTY3JlZW5Nb2RlQWN0aXZlOwog
ICAgIFdlYkZ1bGxTY3JlZW5DbGllbnRHdGsgZnVsbFNjcmVlbkNsaWVudDsKQEAgLTEwOCwzMCAr
MTE3LDkzIEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlIHsKIAogR19ERUZJTkVf
VFlQRShXZWJLaXRXZWJWaWV3QmFzZSwgd2Via2l0X3dlYl92aWV3X2Jhc2UsIEdUS19UWVBFX0NP
TlRBSU5FUikKIAotc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VOb3RpZnlSZXNpemVyU2l6
ZUZvcldpbmRvdyhXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIEd0a1dpbmRvdyogd2lu
ZG93KQorc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VOb3RpZnlSZXNpemVyU2l6ZShXZWJL
aXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCiB7CisgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2
YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7CisgICAgaWYgKCFwcml2LT50b3BsZXZlbE9u
U2NyZWVuV2luZG93KQorICAgICAgICByZXR1cm47CisKICAgICBnYm9vbGVhbiByZXNpemVyVmlz
aWJsZTsKLSAgICBnX29iamVjdF9nZXQoR19PQkpFQ1Qod2luZG93KSwgInJlc2l6ZS1ncmlwLXZp
c2libGUiLCAmcmVzaXplclZpc2libGUsIE5VTEwpOworICAgIGdfb2JqZWN0X2dldChHX09CSkVD
VChwcml2LT50b3BsZXZlbE9uU2NyZWVuV2luZG93KSwgInJlc2l6ZS1ncmlwLXZpc2libGUiLCAm
cmVzaXplclZpc2libGUsIE5VTEwpOwogCiAgICAgSW50U2l6ZSByZXNpemVyU2l6ZTsKICAgICBp
ZiAocmVzaXplclZpc2libGUpIHsKICAgICAgICAgR2RrUmVjdGFuZ2xlIHJlc2l6ZXJSZWN0Owot
ICAgICAgICBndGtfd2luZG93X2dldF9yZXNpemVfZ3JpcF9hcmVhKHdpbmRvdywgJnJlc2l6ZXJS
ZWN0KTsKKyAgICAgICAgZ3RrX3dpbmRvd19nZXRfcmVzaXplX2dyaXBfYXJlYShwcml2LT50b3Bs
ZXZlbE9uU2NyZWVuV2luZG93LCAmcmVzaXplclJlY3QpOwogICAgICAgICBHZGtSZWN0YW5nbGUg
YWxsb2NhdGlvbjsKICAgICAgICAgZ3RrX3dpZGdldF9nZXRfYWxsb2NhdGlvbihHVEtfV0lER0VU
KHdlYlZpZXdCYXNlKSwgJmFsbG9jYXRpb24pOwogICAgICAgICBpZiAoZ2RrX3JlY3RhbmdsZV9p
bnRlcnNlY3QoJnJlc2l6ZXJSZWN0LCAmYWxsb2NhdGlvbiwgMCkpCiAgICAgICAgICAgICByZXNp
emVyU2l6ZSA9IEludFNpemUocmVzaXplclJlY3Qud2lkdGgsIHJlc2l6ZXJSZWN0LmhlaWdodCk7
CiAgICAgfQogCi0gICAgaWYgKHJlc2l6ZXJTaXplICE9IHdlYlZpZXdCYXNlLT5wcml2LT5yZXNp
emVyU2l6ZSkgewotICAgICAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+cmVzaXplclNpemUgPSByZXNp
emVyU2l6ZTsKLSAgICAgICAgd2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94eS0+c2V0V2luZG93
UmVzaXplclNpemUocmVzaXplclNpemUpOworICAgIGlmIChyZXNpemVyU2l6ZSAhPSBwcml2LT5y
ZXNpemVyU2l6ZSkgeworICAgICAgICBwcml2LT5yZXNpemVyU2l6ZSA9IHJlc2l6ZXJTaXplOwor
ICAgICAgICBwcml2LT5wYWdlUHJveHktPnNldFdpbmRvd1Jlc2l6ZXJTaXplKHJlc2l6ZXJTaXpl
KTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHRvcGxldmVsV2luZG93UmVzaXplR3JpcFZpc2li
aWxpdHlDaGFuZ2VkKEdPYmplY3QqLCBHUGFyYW1TcGVjKiwgV2ViS2l0V2ViVmlld0Jhc2UqIHdl
YlZpZXdCYXNlKQoreworICAgIHdlYmtpdFdlYlZpZXdCYXNlTm90aWZ5UmVzaXplclNpemUod2Vi
Vmlld0Jhc2UpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gdG9wbGV2ZWxXaW5kb3dGb2N1c0luRXZl
bnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50Rm9jdXMqLCBXZWJLaXRXZWJWaWV3QmFzZSog
d2ViVmlld0Jhc2UpCit7CisgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2Vi
Vmlld0Jhc2UtPnByaXY7CisgICAgaWYgKCFwcml2LT5pc0luV2luZG93QWN0aXZlKSB7CisgICAg
ICAgIHByaXYtPmlzSW5XaW5kb3dBY3RpdmUgPSB0cnVlOworICAgICAgICBwcml2LT5wYWdlUHJv
eHktPnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdXaW5kb3dJc0FjdGl2ZSk7
CisgICAgfQorCisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gdG9wbGV2
ZWxXaW5kb3dGb2N1c091dEV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEZvY3VzKiwg
V2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlKQoreworICAgIFdlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OworICAgIGlmIChwcml2LT5pc0luV2lu
ZG93QWN0aXZlKSB7CisgICAgICAgIHByaXYtPmlzSW5XaW5kb3dBY3RpdmUgPSBmYWxzZTsKKyAg
ICAgICAgcHJpdi0+cGFnZVByb3h5LT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpW
aWV3V2luZG93SXNBY3RpdmUpOwogICAgIH0KKworICAgIHJldHVybiBGQUxTRTsKIH0KIAotc3Rh
dGljIHZvaWQgdG9wbGV2ZWxXaW5kb3dSZXNpemVHcmlwVmlzaWJpbGl0eUNoYW5nZWQoR09iamVj
dCogb2JqZWN0LCBHUGFyYW1TcGVjKiwgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlKQor
c3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRUb3BsZXZlbE9uU2NyZWVuV2luZG93KFdl
YktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgR3RrV2luZG93KiB3aW5kb3cpCiB7Ci0gICAg
d2Via2l0V2ViVmlld0Jhc2VOb3RpZnlSZXNpemVyU2l6ZUZvcldpbmRvdyh3ZWJWaWV3QmFzZSwg
R1RLX1dJTkRPVyhvYmplY3QpKTsKKyAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYg
PSB3ZWJWaWV3QmFzZS0+cHJpdjsKKyAgICBpZiAocHJpdi0+dG9wbGV2ZWxPblNjcmVlbldpbmRv
dyA9PSB3aW5kb3cpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChwcml2LT50b3BsZXZlbFJl
c2l6ZUdyaXBWaXNpYmlsaXR5SUQpIHsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25u
ZWN0KHByaXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3csIHByaXYtPnRvcGxldmVsUmVzaXplR3Jp
cFZpc2liaWxpdHlJRCk7CisgICAgICAgIHByaXYtPnRvcGxldmVsUmVzaXplR3JpcFZpc2liaWxp
dHlJRCA9IDA7CisgICAgfQorICAgIGlmIChwcml2LT50b3BsZXZlbEZvY3VzSW5FdmVudElEKSB7
CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChwcml2LT50b3BsZXZlbE9uU2Ny
ZWVuV2luZG93LCBwcml2LT50b3BsZXZlbEZvY3VzSW5FdmVudElEKTsKKyAgICAgICAgcHJpdi0+
dG9wbGV2ZWxGb2N1c0luRXZlbnRJRCA9IDA7CisgICAgfQorICAgIGlmIChwcml2LT50b3BsZXZl
bEZvY3VzT3V0RXZlbnRJRCkgeworICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3Qo
cHJpdi0+dG9wbGV2ZWxPblNjcmVlbldpbmRvdywgcHJpdi0+dG9wbGV2ZWxGb2N1c091dEV2ZW50
SUQpOworICAgICAgICBwcml2LT50b3BsZXZlbEZvY3VzT3V0RXZlbnRJRCA9IDA7CisgICAgfQor
CisgICAgcHJpdi0+dG9wbGV2ZWxPblNjcmVlbldpbmRvdyA9IHdpbmRvdzsKKyAgICBwcml2LT5w
YWdlUHJveHktPnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdJc0luV2luZG93
KTsKKyAgICBpZiAoIXByaXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3cpCisgICAgICAgIHJldHVy
bjsKKworICAgIHdlYmtpdFdlYlZpZXdCYXNlTm90aWZ5UmVzaXplclNpemUod2ViVmlld0Jhc2Up
OworCisgICAgcHJpdi0+dG9wbGV2ZWxSZXNpemVHcmlwVmlzaWJpbGl0eUlEID0KKyAgICAgICAg
Z19zaWduYWxfY29ubmVjdChwcml2LT50b3BsZXZlbE9uU2NyZWVuV2luZG93LCAibm90aWZ5Ojpy
ZXNpemUtZ3JpcC12aXNpYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNL
KHRvcGxldmVsV2luZG93UmVzaXplR3JpcFZpc2liaWxpdHlDaGFuZ2VkKSwgd2ViVmlld0Jhc2Up
OworICAgIHByaXYtPnRvcGxldmVsRm9jdXNJbkV2ZW50SUQgPQorICAgICAgICBnX3NpZ25hbF9j
b25uZWN0KHByaXYtPnRvcGxldmVsT25TY3JlZW5XaW5kb3csICJmb2N1cy1pbi1ldmVudCIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyh0b3BsZXZlbFdpbmRvd0ZvY3VzSW5F
dmVudCksIHdlYlZpZXdCYXNlKTsKKyAgICBwcml2LT50b3BsZXZlbEZvY3VzT3V0RXZlbnRJRCA9
CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QocHJpdi0+dG9wbGV2ZWxPblNjcmVlbldpbmRvdywg
ImZvY3VzLW91dC1ldmVudCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyh0
b3BsZXZlbFdpbmRvd0ZvY3VzT3V0RXZlbnQpLCB3ZWJWaWV3QmFzZSk7CiB9CiAKIHN0YXRpYyB2
b2lkIHdlYmtpdFdlYlZpZXdCYXNlUmVhbGl6ZShHdGtXaWRnZXQqIHdpZGdldCkKQEAgLTE3OCwx
MSArMjUwLDggQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VSZWFsaXplKEd0a1dpZGdl
dCogd2lkZ2V0KQogICAgIGd0a19pbV9jb250ZXh0X3NldF9jbGllbnRfd2luZG93KHByaXYtPmlt
Q29udGV4dC5nZXQoKSwgd2luZG93KTsKIAogICAgIEd0a1dpZGdldCogdG9wbGV2ZWwgPSBndGtf
d2lkZ2V0X2dldF90b3BsZXZlbCh3aWRnZXQpOwotICAgIGlmICh3aWRnZXRJc09uc2NyZWVuVG9w
bGV2ZWxXaW5kb3codG9wbGV2ZWwpKSB7Ci0gICAgICAgIHdlYmtpdFdlYlZpZXdCYXNlTm90aWZ5
UmVzaXplclNpemVGb3JXaW5kb3cod2ViVmlldywgR1RLX1dJTkRPVyh0b3BsZXZlbCkpOwotICAg
ICAgICBnX3NpZ25hbF9jb25uZWN0KHRvcGxldmVsLCAibm90aWZ5OjpyZXNpemUtZ3JpcC12aXNp
YmxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLKHRvcGxldmVsV2luZG93
UmVzaXplR3JpcFZpc2liaWxpdHlDaGFuZ2VkKSwgd2ViVmlldyk7Ci0gICAgfQorICAgIGlmICh3
aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3codG9wbGV2ZWwpKQorICAgICAgICB3ZWJraXRX
ZWJWaWV3QmFzZVNldFRvcGxldmVsT25TY3JlZW5XaW5kb3cod2ViVmlldywgR1RLX1dJTkRPVyh0
b3BsZXZlbCkpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNvbnRhaW5lckFk
ZChHdGtDb250YWluZXIqIGNvbnRhaW5lciwgR3RrV2lkZ2V0KiB3aWRnZXQpCkBAIC0yNTEsOSAr
MzIwLDEyIEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VDaGlsZE1vdmVSZXNpemUoV2ViS2l0V2Vi
Vmlld0Jhc2UqIHdlYlZpZXcsIEd0a1dpZGdldCogY2hpCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJW
aWV3QmFzZUZpbmFsaXplKEdPYmplY3QqIGdvYmplY3QpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jh
c2UqIHdlYmtpdFdlYlZpZXdCYXNlID0gV0VCS0lUX1dFQl9WSUVXX0JBU0UoZ29iamVjdCk7Ci0g
ICAgd2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94eS0+Y2xvc2UoKTsKKyAgICBXZWJL
aXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdjsKKyAg
ICBwcml2LT5wYWdlUHJveHktPmNsb3NlKCk7CisKKyAgICB3ZWJraXRXZWJWaWV3QmFzZVNldFRv
cGxldmVsT25TY3JlZW5XaW5kb3cod2Via2l0V2ViVmlld0Jhc2UsIDApOwogCi0gICAgd2Via2l0
V2ViVmlld0Jhc2UtPnByaXYtPn5XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUoKTsKKyAgICBwcml2
LT5+V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKCk7CiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0
X3dlYl92aWV3X2Jhc2VfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUoZ29iamVjdCk7CiB9CiAKQEAg
LTI2Myw3ICszMzUsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfYmFzZV9pbml0KFdl
YktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkKICAgICB3ZWJraXRXZWJWaWV3QmFz
ZS0+cHJpdiA9IHByaXY7CiAgICAgbmV3IChwcml2KSBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUo
KTsKIAotICAgIHByaXYtPmlzUGFnZUFjdGl2ZSA9IFRSVUU7CiAgICAgcHJpdi0+c2hvdWxkRm9y
d2FyZE5leHRLZXlFdmVudCA9IEZBTFNFOwogCiAgICAgR3RrV2lkZ2V0KiB2aWV3V2lkZ2V0ID0g
R1RLX1dJREdFVCh3ZWJraXRXZWJWaWV3QmFzZSk7CkBAIC0zNjYsOSArNDM3LDcgQEAgc3RhdGlj
IHZvaWQgcmVzaXplV2ViS2l0V2ViVmlld0Jhc2VGcm9tQWxsb2NhdGlvbihXZWJLaXRXZWJWaWV3
QmFzZSogd2ViVmlld0Jhc2UKICAgICBpZiAocHJpdi0+cGFnZVByb3h5LT5kcmF3aW5nQXJlYSgp
KQogICAgICAgICBwcml2LT5wYWdlUHJveHktPmRyYXdpbmdBcmVhKCktPnNldFNpemUodmlld1Jl
Y3Quc2l6ZSgpLCBJbnRTaXplKCkpOwogCi0gICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9IGd0a193
aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQod2ViVmlld0Jhc2UpKTsKLSAgICBpZiAod2lk
Z2V0SXNPbnNjcmVlblRvcGxldmVsV2luZG93KHRvcGxldmVsKSkKLSAgICAgICAgd2Via2l0V2Vi
Vmlld0Jhc2VOb3RpZnlSZXNpemVyU2l6ZUZvcldpbmRvdyh3ZWJWaWV3QmFzZSwgR1RLX1dJTkRP
Vyh0b3BsZXZlbCkpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlTm90aWZ5UmVzaXplclNpemUod2Vi
Vmlld0Jhc2UpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNpemVBbGxvY2F0
ZShHdGtXaWRnZXQqIHdpZGdldCwgR3RrQWxsb2NhdGlvbiogYWxsb2NhdGlvbikKQEAgLTM5Miwy
OCArNDYxLDM3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlTWFwKEd0a1dpZGdldCog
d2lkZ2V0KQogICAgIEdUS19XSURHRVRfQ0xBU1Mod2Via2l0X3dlYl92aWV3X2Jhc2VfcGFyZW50
X2NsYXNzKS0+bWFwKHdpZGdldCk7CiAKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jh
c2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpOwotICAgIGlmICghd2ViVmlld0Jhc2Ut
PnByaXYtPm5lZWRzUmVzaXplT25NYXApCisgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBw
cml2ID0gd2ViVmlld0Jhc2UtPnByaXY7CisgICAgaWYgKCFwcml2LT5pc1Zpc2libGUpIHsKKyAg
ICAgICAgcHJpdi0+aXNWaXNpYmxlID0gdHJ1ZTsKKyAgICAgICAgcHJpdi0+cGFnZVByb3h5LT52
aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3SXNWaXNpYmxlKTsKKyAgICB9CisK
KyAgICBpZiAoIXByaXYtPm5lZWRzUmVzaXplT25NYXApCiAgICAgICAgIHJldHVybjsKIAogICAg
IEd0a0FsbG9jYXRpb24gYWxsb2NhdGlvbjsKICAgICBndGtfd2lkZ2V0X2dldF9hbGxvY2F0aW9u
KHdpZGdldCwgJmFsbG9jYXRpb24pOwogICAgIHJlc2l6ZVdlYktpdFdlYlZpZXdCYXNlRnJvbUFs
bG9jYXRpb24od2ViVmlld0Jhc2UsICZhbGxvY2F0aW9uLCB0cnVlIC8qIHNpemVDaGFuZ2VkICov
KTsKLSAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+bmVlZHNSZXNpemVPbk1hcCA9IGZhbHNlOworICAg
IHByaXYtPm5lZWRzUmVzaXplT25NYXAgPSBmYWxzZTsKIH0KIAotc3RhdGljIGdib29sZWFuIHdl
YmtpdFdlYlZpZXdCYXNlRm9jdXNJbkV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEZv
Y3VzKiBldmVudCkKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlVW5tYXAoR3RrV2lkZ2V0
KiB3aWRnZXQpCiB7Ci0gICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlID0gV0VCS0lU
X1dFQl9WSUVXX0JBU0Uod2lkZ2V0KTsKLSAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHBy
aXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsKKyAgICBHVEtfV0lER0VUX0NMQVNTKHdlYmtpdF93ZWJf
dmlld19iYXNlX3BhcmVudF9jbGFzcyktPnVubWFwKHdpZGdldCk7CiAKLSAgICBHdGtXaWRnZXQq
IHRvcGxldmVsID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwod2lkZ2V0KTsKLSAgICBpZiAod2lk
Z2V0SXNPbnNjcmVlblRvcGxldmVsV2luZG93KHRvcGxldmVsKSAmJiBndGtfd2luZG93X2hhc190
b3BsZXZlbF9mb2N1cyhHVEtfV0lORE9XKHRvcGxldmVsKSkpIHsKLSAgICAgICAgZ3RrX2ltX2Nv
bnRleHRfZm9jdXNfaW4ocHJpdi0+aW1Db250ZXh0LmdldCgpKTsKLSAgICAgICAgaWYgKCFwcml2
LT5pc1BhZ2VBY3RpdmUpIHsKLSAgICAgICAgICAgIHByaXYtPmlzUGFnZUFjdGl2ZSA9IFRSVUU7
Ci0gICAgICAgICAgICBwcml2LT5wYWdlUHJveHktPnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdl
UHJveHk6OlZpZXdXaW5kb3dJc0FjdGl2ZSk7Ci0gICAgICAgIH0KKyAgICBXZWJLaXRXZWJWaWV3
QmFzZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpLT5wcml2Owor
ICAgIGlmIChwcml2LT5pc1Zpc2libGUpIHsKKyAgICAgICAgcHJpdi0+aXNWaXNpYmxlID0gZmFs
c2U7CisgICAgICAgIHByaXYtPnBhZ2VQcm94eS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQ
cm94eTo6Vmlld0lzVmlzaWJsZSk7CiAgICAgfQorfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0
V2ViVmlld0Jhc2VGb2N1c0luRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50Rm9jdXMq
IGV2ZW50KQoreworICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSA9IFdFQktJVF9X
RUJfVklFV19CQVNFKHdpZGdldCk7CisgICAgd2Via2l0V2ViVmlld0Jhc2VTZXRGb2N1cyh3ZWJW
aWV3QmFzZSwgdHJ1ZSk7CisgICAgZ3RrX2ltX2NvbnRleHRfZm9jdXNfaW4od2ViVmlld0Jhc2Ut
PnByaXYtPmltQ29udGV4dC5nZXQoKSk7CiAKICAgICByZXR1cm4gR1RLX1dJREdFVF9DTEFTUyh3
ZWJraXRfd2ViX3ZpZXdfYmFzZV9wYXJlbnRfY2xhc3MpLT5mb2N1c19pbl9ldmVudCh3aWRnZXQs
IGV2ZW50KTsKIH0KQEAgLTQyMSwxMiArNDk5LDggQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdFdl
YlZpZXdCYXNlRm9jdXNJbkV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEZvY3VzKgog
c3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlRm9jdXNPdXRFdmVudChHdGtXaWRnZXQq
IHdpZGdldCwgR2RrRXZlbnRGb2N1cyogZXZlbnQpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2Uq
IHdlYlZpZXdCYXNlID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0KTsKLSAgICBXZWJLaXRX
ZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsKLQotICAgIHByaXYt
PmlzUGFnZUFjdGl2ZSA9IEZBTFNFOwotICAgIHByaXYtPnBhZ2VQcm94eS0+dmlld1N0YXRlRGlk
Q2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld1dpbmRvd0lzQWN0aXZlKTsKLSAgICBpZiAocHJpdi0+
aW1Db250ZXh0KQotICAgICAgICBndGtfaW1fY29udGV4dF9mb2N1c19vdXQocHJpdi0+aW1Db250
ZXh0LmdldCgpKTsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZVNldEZvY3VzKHdlYlZpZXdCYXNlLCBm
YWxzZSk7CisgICAgZ3RrX2ltX2NvbnRleHRfZm9jdXNfb3V0KHdlYlZpZXdCYXNlLT5wcml2LT5p
bUNvbnRleHQuZ2V0KCkpOwogCiAgICAgcmV0dXJuIEdUS19XSURHRVRfQ0xBU1Mod2Via2l0X3dl
Yl92aWV3X2Jhc2VfcGFyZW50X2NsYXNzKS0+Zm9jdXNfb3V0X2V2ZW50KHdpZGdldCwgZXZlbnQp
OwogfQpAQCAtNjU0LDYgKzcyOCwxMyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jh
c2VEcmFnRHJvcChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRHJhZ0NvbnRleHQqIGNvbgogICAgIHJl
dHVybiBUUlVFOwogfQogCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVBhcmVudFNldChH
dGtXaWRnZXQqIHdpZGdldCwgR3RrV2lkZ2V0KiBvbGRQYXJlbnQpCit7CisgICAgaWYgKCFndGtf
d2lkZ2V0X2dldF9wYXJlbnQod2lkZ2V0KSkKKyAgICAgICAgd2Via2l0V2ViVmlld0Jhc2VTZXRU
b3BsZXZlbE9uU2NyZWVuV2luZG93KFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCksIDApOwor
Cit9CisKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19iYXNlX2NsYXNzX2luaXQoV2ViS2l0
V2ViVmlld0Jhc2VDbGFzcyogd2Via2l0V2ViVmlld0Jhc2VDbGFzcykKIHsKICAgICBHdGtXaWRn
ZXRDbGFzcyogd2lkZ2V0Q2xhc3MgPSBHVEtfV0lER0VUX0NMQVNTKHdlYmtpdFdlYlZpZXdCYXNl
Q2xhc3MpOwpAQCAtNjYxLDYgKzc0Miw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19i
YXNlX2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0Jhc2VDbGFzcyogd2Via2l0V2ViVmllCiAgICAg
d2lkZ2V0Q2xhc3MtPmRyYXcgPSB3ZWJraXRXZWJWaWV3QmFzZURyYXc7CiAgICAgd2lkZ2V0Q2xh
c3MtPnNpemVfYWxsb2NhdGUgPSB3ZWJraXRXZWJWaWV3QmFzZVNpemVBbGxvY2F0ZTsKICAgICB3
aWRnZXRDbGFzcy0+bWFwID0gd2Via2l0V2ViVmlld0Jhc2VNYXA7CisgICAgd2lkZ2V0Q2xhc3Mt
PnVubWFwID0gd2Via2l0V2ViVmlld0Jhc2VVbm1hcDsKICAgICB3aWRnZXRDbGFzcy0+Zm9jdXNf
aW5fZXZlbnQgPSB3ZWJraXRXZWJWaWV3QmFzZUZvY3VzSW5FdmVudDsKICAgICB3aWRnZXRDbGFz
cy0+Zm9jdXNfb3V0X2V2ZW50ID0gd2Via2l0V2ViVmlld0Jhc2VGb2N1c091dEV2ZW50OwogICAg
IHdpZGdldENsYXNzLT5rZXlfcHJlc3NfZXZlbnQgPSB3ZWJraXRXZWJWaWV3QmFzZUtleVByZXNz
RXZlbnQ7CkBAIC02NzcsNiArNzU5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Jh
c2VfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3QmFzZUNsYXNzKiB3ZWJraXRXZWJWaWUKICAgICB3
aWRnZXRDbGFzcy0+ZHJhZ19kcm9wID0gd2Via2l0V2ViVmlld0Jhc2VEcmFnRHJvcDsKICAgICB3
aWRnZXRDbGFzcy0+ZHJhZ19kYXRhX3JlY2VpdmVkID0gd2Via2l0V2ViVmlld0Jhc2VEcmFnRGF0
YVJlY2VpdmVkOwogICAgIHdpZGdldENsYXNzLT5nZXRfYWNjZXNzaWJsZSA9IHdlYmtpdFdlYlZp
ZXdCYXNlR2V0QWNjZXNzaWJsZTsKKyAgICB3aWRnZXRDbGFzcy0+cGFyZW50X3NldCA9IHdlYmtp
dFdlYlZpZXdCYXNlUGFyZW50U2V0OwogCiAgICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3Mg
PSBHX09CSkVDVF9DTEFTUyh3ZWJraXRXZWJWaWV3QmFzZUNsYXNzKTsKICAgICBnb2JqZWN0Q2xh
c3MtPmZpbmFsaXplID0gd2Via2l0V2ViVmlld0Jhc2VGaW5hbGl6ZTsKQEAgLTg3OCwzICs5NjEs
NDQgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVF1ZXVlRHJhd09mQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ1Jlc3VsdHMoV2ViS2l0V2ViVmlld0Jhc2UKICAgICBnX3RpbWVvdXRfYWRkKDEwMDAgLyA2
MCwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4ocXVldWVBbm90aGVyRHJhd09mQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHMpLCB3ZWJWaWV3QmFzZVBvaW50ZXIpOwogfQogI2VuZGlm
CisKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRGb2N1cyhXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
Vmlld0Jhc2UsIGJvb2wgZm9jdXNlZCkKK3sKKyAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUq
IHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsKKyAgICBpZiAocHJpdi0+aXNGb2N1c2VkID09IGZv
Y3VzZWQpCisgICAgICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIHZpZXdTdGF0ZUZsYWdzID0g
V2ViUGFnZVByb3h5OjpWaWV3SXNGb2N1c2VkOworICAgIHByaXYtPmlzRm9jdXNlZCA9IGZvY3Vz
ZWQ7CisKKyAgICAvLyBJZiB0aGUgdmlldyBoYXMgcmVjZWl2ZWQgdGhlIGZvY3VzIGFuZCB0aGUg
d2luZG93IGlzIG5vdCBhY3RpdmUKKyAgICAvLyBtYXJrIHRoZSBjdXJyZW50IHdpbmRvdyBhcyBh
Y3RpdmUgbm93LiBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlCisgICAgLy8gdG9wbGV2ZWwgd2luZG93
IGlzIGEgR1RLX1dJTkRPV19QT1BVUCBhbmQgdGhlIGZvY3VzIGhhcyBiZWVuCisgICAgLy8gc2V0
IHByb2dyYW1hdGljYWxseSBsaWtlIFdlYktpdFRlc3RSdW5uZXIgZG9lcywgYmVjYXVzZSBQT1BV
UAorICAgIC8vIGNhbid0IGJlIGZvY3VzZWQuCisgICAgaWYgKHByaXYtPmlzRm9jdXNlZCAmJiAh
cHJpdi0+aXNJbldpbmRvd0FjdGl2ZSkgeworICAgICAgICBwcml2LT5pc0luV2luZG93QWN0aXZl
ID0gdHJ1ZTsKKyAgICAgICAgdmlld1N0YXRlRmxhZ3MgfD0gV2ViUGFnZVByb3h5OjpWaWV3V2lu
ZG93SXNBY3RpdmU7CisgICAgfQorICAgIHByaXYtPnBhZ2VQcm94eS0+dmlld1N0YXRlRGlkQ2hh
bmdlKHZpZXdTdGF0ZUZsYWdzKTsKK30KKworYm9vbCB3ZWJraXRXZWJWaWV3QmFzZUlzSW5XaW5k
b3dBY3RpdmUoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlKQoreworICAgIHJldHVybiB3
ZWJWaWV3QmFzZS0+cHJpdi0+aXNJbldpbmRvd0FjdGl2ZTsKK30KKworYm9vbCB3ZWJraXRXZWJW
aWV3QmFzZUlzRm9jdXNlZChXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCit7CisgICAg
cmV0dXJuIHdlYlZpZXdCYXNlLT5wcml2LT5pc0ZvY3VzZWQ7Cit9CisKK2Jvb2wgd2Via2l0V2Vi
Vmlld0Jhc2VJc1Zpc2libGUoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlKQoreworICAg
IHJldHVybiB3ZWJWaWV3QmFzZS0+cHJpdi0+aXNWaXNpYmxlOworfQorCitib29sIHdlYmtpdFdl
YlZpZXdCYXNlSXNJbldpbmRvdyhXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCit7Cisg
ICAgcmV0dXJuIHdlYlZpZXdCYXNlLT5wcml2LT50b3BsZXZlbE9uU2NyZWVuV2luZG93OworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d0Jhc2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3QmFzZVByaXZhdGUuaAppbmRleCAwMzFlNWQ1Li44ZDBmODY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZVByaXZhdGUuaApAQCAtNTYsNCArNTYsMTAgQEAgR2RrRXZlbnQqIHdlYmtpdFdlYlZpZXdCYXNl
VGFrZUNvbnRleHRNZW51RXZlbnQoV2ViS2l0V2ViVmlld0Jhc2UqKTsKIHZvaWQgd2Via2l0V2Vi
Vmlld0Jhc2VRdWV1ZURyYXdPZkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRzKFdlYktpdFdl
YlZpZXdCYXNlKik7CiAjZW5kaWYKIAordm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldEZvY3VzKFdl
YktpdFdlYlZpZXdCYXNlKiwgYm9vbCBmb2N1c2VkKTsKK2Jvb2wgd2Via2l0V2ViVmlld0Jhc2VJ
c0luV2luZG93QWN0aXZlKFdlYktpdFdlYlZpZXdCYXNlKik7Citib29sIHdlYmtpdFdlYlZpZXdC
YXNlSXNGb2N1c2VkKFdlYktpdFdlYlZpZXdCYXNlKik7Citib29sIHdlYmtpdFdlYlZpZXdCYXNl
SXNWaXNpYmxlKFdlYktpdFdlYlZpZXdCYXNlKik7Citib29sIHdlYmtpdFdlYlZpZXdCYXNlSXNJ
bldpbmRvdyhXZWJLaXRXZWJWaWV3QmFzZSopOworCiAjZW5kaWYgLy8gV2ViS2l0V2ViVmlld0Jh
c2VQcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAppbmRleCBjYzY3YzVkLi4wMmU4MTM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0
V2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
dGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCkBAIC00NjQsNyArNDY0LDcgQEAgc3RhdGljIHZv
aWQgdGVzdFdlYlZpZXdXaW5kb3dQcm9wZXJ0aWVzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKIAogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdNb3VzZVRhcmdldChVSUNsaWVudFRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2Fp
dFVudGlsTWFwcGVkKCk7CisgICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVk
KEdUS19XSU5ET1dfVE9QTEVWRUwpOwogCiAgICAgY29uc3QgY2hhciogbGlua3NIb3ZlcmVkSFRN
TCA9CiAgICAgICAgICI8aHRtbD48Ym9keT4iCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcAppbmRleCBhZmU0YTU2Li5mMTYxNWQ0IDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHAK
QEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVdlYlZpZXcuaCIKIAorI2luY2x1ZGUgPFdlYktpdDIvV0tWaWV3UHJpdmF0ZS5oPgogI2luY2x1
ZGUgPGd0ay9ndGsuaD4KIAogbmFtZXNwYWNlIFdUUiB7CkBAIC03MCw2ICs3MSw4IEBAIFdLUGFn
ZVJlZiBQbGF0Zm9ybVdlYlZpZXc6OnBhZ2UoKQogCiB2b2lkIFBsYXRmb3JtV2ViVmlldzo6Zm9j
dXMoKQogeworICAgIFdLVmlld1NldEZvY3VzKG1fdmlldywgdHJ1ZSk7CisgICAgc2V0V2luZG93
SXNLZXkodHJ1ZSk7CiB9CiAKIFdLUmVjdCBQbGF0Zm9ybVdlYlZpZXc6OndpbmRvd0ZyYW1lKCkK
</data>
<flag name="review"
          id="177110"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>