<?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>76166</bug_id>
          
          <creation_ts>2012-01-12 04:10:31 -0800</creation_ts>
          <short_desc>[WK2][GTK] FullScreen signals</short_desc>
          <delta_ts>2012-04-10 00:41:04 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>75553</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>534731</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-12 04:10:31 -0800</bug_when>
    <thetext>We need a entering-fullscreen and a leaving-fullscreen signal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534733</commentid>
    <comment_count>1</comment_count>
      <attachid>122211</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-12 04:14:52 -0800</bug_when>
    <thetext>Created attachment 122211
Fullscreen Signals</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534734</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-12 04:18:24 -0800</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>534777</commentid>
    <comment_count>3</comment_count>
      <attachid>122227</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-12 06:16:13 -0800</bug_when>
    <thetext>Created attachment 122227
Fullscreen Signals</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546047</commentid>
    <comment_count>4</comment_count>
      <attachid>124730</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-31 07:41:45 -0800</bug_when>
    <thetext>Created attachment 124730
FullScreen signals</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546048</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-31 07:44:35 -0800</bug_when>
    <thetext>Attachment 124730 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
From git://git.webkit.org/WebKit
   2366cac..7140fe4  master     -&gt; origin/master
Partial-rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc ...
Currently at 106359 = 2366cac6c66ce637903152f5fc58cd98b5686950
r106360 = 7140fe4a50c1f3a4ce373c6fcee4f0968c84e929
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Applying: Fix compilation errors on build-webkit --debug --no-workers on mac.
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging LayoutTests/platform/qt/Skipped
CONFLICT (content): Merge conflict in LayoutTests/platform/qt/Skipped
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 Fix compilation errors on build-webkit --debug --no-workers on mac.

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546483</commentid>
    <comment_count>6</comment_count>
      <attachid>124730</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-01-31 14:10:44 -0800</bug_when>
    <thetext>Comment on attachment 124730
FullScreen signals

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:645
&gt; +    signals[ENTERING_FULLSCREEN] =
&gt; +            g_signal_new(&quot;entering-fullscreen&quot;,
&gt; +                         G_TYPE_FROM_CLASS(webViewClass),
&gt; +                         G_SIGNAL_RUN_LAST,
&gt; +                         G_STRUCT_OFFSET(WebKitWebViewClass, entering_fullscreen),
&gt; +                         g_signal_accumulator_first_wins, 0,
&gt; +                         webkit_marshal_BOOLEAN__VOID,
&gt; +                         G_TYPE_BOOLEAN, 0);
&gt; +

I guess you gave up on doing this asynchronously?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:143
&gt;      gboolean   (* decide_policy)  (WebKitWebView             *web_view,
&gt;                                     WebKitPolicyDecision      *decision,
&gt;                                     WebKitPolicyDecisionType  type);
&gt; +    gboolean   (* entering_fullscreen)  (WebKitWebView  *web_view);
&gt; +    gboolean   (* leaving_fullscreen)  (WebKitWebView  *web_view);

Please keep these aligned.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:292
&gt; +    static gboolean enteringFullScreen(WebKitWebView*, UIClientTest* test)
&gt; +    {
&gt; +        if (test-&gt;m_fullScreenAllowed) {
&gt; +            test-&gt;m_webViewEvents.append(EnteringFullScreen);
&gt; +            g_timeout_add(200, (GSourceFunc) emitKeyStroke, test);
&gt; +        } else {
&gt; +            gtk_widget_destroy(gtk_widget_get_toplevel(GTK_WIDGET(test-&gt;m_webView)));
&gt; +            g_main_loop_quit(test-&gt;m_mainLoop);
&gt; +        }
&gt; +        return test-&gt;m_fullScreenAllowed;
&gt; +    }
&gt; +
&gt; +    static gboolean leavingFullScreen(WebKitWebView*, UIClientTest* test)
&gt; +    {
&gt; +        test-&gt;m_webViewEvents.append(LeavingFullScreen);
&gt; +        gtk_widget_destroy(gtk_widget_get_toplevel(GTK_WIDGET(test-&gt;m_webView)));
&gt; +        g_main_loop_quit(test-&gt;m_mainLoop);
&gt; +        return TRUE;
&gt; +    }

You should subclass this fixture instead of just adding on to it. Why do you destroy the WebView here? The test fixture cleans up the WebView.  Please do not use C style casts. 

You should be careful to keep the knowedge of the fixture internal to the fixture. If the fixture needs to call emitKeyStroke, then emitKeyStroke should be a static method of the fixture. Why do you call g_timeout_add instead of something like g_idle_add? 200 milliseconds seems like a long time to wait.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:335
&gt; +    // create and send the event

Comments should be complete sentences that start with a capital letter and end with a period.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:336
&gt; +    GdkEvent* pressEvent = gdk_event_new(GDK_KEY_PRESS);

You should use GOwnPtr to hold the pressEven.t

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:347
&gt; +    GdkKeymapKey* keys;

You should use GOwnPtr here.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:354
&gt; +    GdkEvent* releaseEvent = gdk_event_copy(pressEvent);

You should use GOwnPtr here too.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:386
&gt; +                   &quot;function thunk() {&quot;
&gt; +                   &quot;    document.removeEventListener(eventName, thunk, false);&quot;
&gt; +                   &quot;    document.documentElement.webkitRequestFullScreen();&quot;
&gt; +                   &quot;}&quot;
&gt; +                   &quot;document.addEventListener(eventName, thunk, false);&quot;

Just use an anonymous function inline.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:390
&gt; +    GtkWidget* window;
&gt; +    window = gtk_window_new(GTK_WINDOW_POPUP);

This should be one line.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:394
&gt; +    g_timeout_add(100, (GSourceFunc) emitKeyStroke, test);

C++ style cast.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:425
&gt; +    test-&gt;loadHtml(&quot;&lt;html&gt;&lt;body&gt;&quot;
&gt; +                   &quot;&lt;script&gt;&quot;
&gt; +                   &quot;var eventName = &apos;keypress&apos;;&quot;
&gt; +                   &quot;function thunk() {&quot;
&gt; +                   &quot;    document.removeEventListener(eventName, thunk, false);&quot;
&gt; +                   &quot;    document.documentElement.webkitRequestFullScreen();&quot;
&gt; +                   &quot;}&quot;
&gt; +                   &quot;document.addEventListener(eventName, thunk, false);&quot;
&gt; +                   &quot;&lt;/script&gt;&lt;/body&gt;&lt;/html&gt;&quot;, 0);
&gt; +
&gt; +    GtkWidget* window;
&gt; +    window = gtk_window_new(GTK_WINDOW_POPUP);
&gt; +    gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(test-&gt;m_webView));
&gt; +
&gt; +    gtk_widget_show_all(window);
&gt; +    g_timeout_add(100, (GSourceFunc) emitKeyStroke, test);
&gt; +
&gt; +    test-&gt;waitUntilMainLoopFinishes();

It seems like this is very similar to the code above. Can you refactor it so that it&apos;s shared?

&gt; Source/WebKit2/UIProcess/gtk/FullScreenWindowController.cpp:78
&gt; +    gboolean returnValue;
&gt; +    g_signal_emit_by_name(WEBKIT_WEB_VIEW(m_webViewBase.get()), &quot;entering-fullscreen&quot;, &amp;returnValue);
&gt; +    if (!returnValue)
&gt; +        return;
&gt; +
&gt;      this-&gt;fullScreenManagerProxy()-&gt;willEnterFullScreen();
&gt;      this-&gt;fullScreenManagerProxy()-&gt;beginEnterFullScreenAnimation(10);

A WebKitWebViewBase is not a WebKitWebView when you are using the C API. Perhaps we should only implement this default behavior when using GObject API. I think it makes sense to put the default behavior in the virtual method that you add above. This way, extending the WebView and chaining up works properly.

&gt; Tools/MiniBrowser/gtk/BrowserWindow.c:225
&gt; +static gboolean webViewFullscreenMessageWindowClose(GtkWidget *dialog)
&gt; +{
&gt; +    if (GTK_IS_WIDGET (dialog))
&gt; +        g_signal_emit_by_name (GTK_DIALOG (dialog), &quot;close&quot;);
&gt; +    return FALSE;
&gt; +}

You are using Gnome coding style in this file. check-webkit-style should catch all of these errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547039</commentid>
    <comment_count>7</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-01 06:07:00 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 124730 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=124730&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:645
&gt; &gt; +    signals[ENTERING_FULLSCREEN] =
&gt; &gt; +            g_signal_new(&quot;entering-fullscreen&quot;,
&gt; &gt; +                         G_TYPE_FROM_CLASS(webViewClass),
&gt; &gt; +                         G_SIGNAL_RUN_LAST,
&gt; &gt; +                         G_STRUCT_OFFSET(WebKitWebViewClass, entering_fullscreen),
&gt; &gt; +                         g_signal_accumulator_first_wins, 0,
&gt; &gt; +                         webkit_marshal_BOOLEAN__VOID,
&gt; &gt; +                         G_TYPE_BOOLEAN, 0);
&gt; &gt; +
&gt; 
&gt; I guess you gave up on doing this asynchronously?
&gt; 

I never did. I think it actually works, when testing in the MiniLauncher the popup asynchronously waits for user-input. What makes you think this signal is not set up as expected?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547072</commentid>
    <comment_count>8</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-01 07:26:10 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 124730 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=124730&amp;action=review
&gt; 
&gt; 
&gt; You should subclass this fixture instead of just adding on to it.

Seriously? Why don&apos;t the other tests of this file subclass the fixture then?

&gt; Why do you destroy the WebView here?

Because in the case where fullscreen is blocked the leavingFullScreen() is not called.

&gt; The test fixture cleans up the WebView.  Please do not use C style casts. 
&gt; 

Ok.

&gt; You should be careful to keep the knowedge of the fixture internal to the fixture. If the fixture needs to call emitKeyStroke, then emitKeyStroke should be a static method of the fixture.

Ok.

&gt; Why do you call g_timeout_add instead of something like g_idle_add? 200 milliseconds seems like a long time to wait.
&gt; 

Right.


[...]

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:425
&gt; &gt; +    test-&gt;loadHtml(&quot;&lt;html&gt;&lt;body&gt;&quot;
&gt; &gt; +                   &quot;&lt;script&gt;&quot;
&gt; &gt; +                   &quot;var eventName = &apos;keypress&apos;;&quot;
&gt; &gt; +                   &quot;function thunk() {&quot;
&gt; &gt; +                   &quot;    document.removeEventListener(eventName, thunk, false);&quot;
&gt; &gt; +                   &quot;    document.documentElement.webkitRequestFullScreen();&quot;
&gt; &gt; +                   &quot;}&quot;
&gt; &gt; +                   &quot;document.addEventListener(eventName, thunk, false);&quot;
&gt; &gt; +                   &quot;&lt;/script&gt;&lt;/body&gt;&lt;/html&gt;&quot;, 0);
&gt; &gt; +
&gt; &gt; +    GtkWidget* window;
&gt; &gt; +    window = gtk_window_new(GTK_WINDOW_POPUP);
&gt; &gt; +    gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(test-&gt;m_webView));
&gt; &gt; +
&gt; &gt; +    gtk_widget_show_all(window);
&gt; &gt; +    g_timeout_add(100, (GSourceFunc) emitKeyStroke, test);
&gt; &gt; +
&gt; &gt; +    test-&gt;waitUntilMainLoopFinishes();
&gt; 
&gt; It seems like this is very similar to the code above. Can you refactor it so that it&apos;s shared?
&gt; 

Yes. I will add a Test::addWithData(const char* suiteName, const char* testName, void (*testFunc)(ClassName*, const void*), gconstpointer data) then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547095</commentid>
    <comment_count>9</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-02-01 08:32:33 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Seriously? Why don&apos;t the other tests of this file subclass the fixture then?

In this case the test fixture is the UIClient test fixture.  I think it&apos;s important not to bloat the fixtures with information about all the different types of tests, so I suggested creating a new fixture. At the very least, I think it deserves a rename, since fullscreen support isn&apos;t part of the UIClient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547208</commentid>
    <comment_count>10</comment_count>
      <attachid>124971</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-01 10:55:18 -0800</bug_when>
    <thetext>Created attachment 124971
FullScreen signals</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565435</commentid>
    <comment_count>11</comment_count>
      <attachid>124971</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-27 00:37:04 -0800</bug_when>
    <thetext>Comment on attachment 124971
FullScreen signals

Moving out of review queue, this patch needs a refactoring after Jer&apos;s patches for mac port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576123</commentid>
    <comment_count>12</comment_count>
      <attachid>131323</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-12 08:04:37 -0700</bug_when>
    <thetext>Created attachment 131323
FullScreen signals</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578253</commentid>
    <comment_count>13</comment_count>
      <attachid>131323</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-03-14 01:53:58 -0700</bug_when>
    <thetext>Comment on attachment 131323
FullScreen signals

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

Ideally, there would be a WKFullscreenClient in the C API that we would implement in WebKitWebView to emit our signals. But for some reason there isn&apos;t, so the solution, I think, could be to use an internal private GObject in the API layer, used by the WebKitWebViewBase to notify the WebKitWebView about enter/leave fullscreen.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:67
&gt; +    ENTERING_FULLSCREEN,
&gt; +    LEAVING_FULLSCREEN,

I would call these ENTER and LEAVE, since you can control whether to enter/leave fullscreen. Other signal names use the same pattern.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:680
&gt; +     * signal is not handled the WebView will proceed to full screen

the #WebKitWebView

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:690
&gt; +     * Since: 1.9.0

Don&apos;t use Since tags in WebKit2 code, there&apos;s no previous versions.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:706
&gt; +     * Emitted when the WebView is about to restore its top level

the #WebKitWebView

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:714
&gt; +     * Since: 1.9.0

Same here.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:889
&gt; +gboolean webkitWebViewEnteringFullScreen(WebKitWebView* webView)
&gt; +{
&gt; +    return FALSE;
&gt; +}
&gt; +
&gt; +gboolean webkitWebViewLeavingFullScreen(WebKitWebView* webView)
&gt; +{
&gt; +    return FALSE;
&gt; +}

The default behaviour of true_handled is returning FALSE, so we don&apos;t need these default impl.

&gt; Source/WebKit2/UIProcess/gtk/FullScreenWindowController.cpp:74
&gt; +    gboolean returnValue;
&gt; +    g_signal_emit_by_name(WEBKIT_WEB_VIEW(m_webViewBase), &quot;entering-fullscreen&quot;, &amp;returnValue);
&gt; +    if (returnValue)
&gt; +        return;

This is API of WebKitWebView, not WebKitWebViewBase, that would produce a critical warning at run time when using the C API. Out of the API layer, WebKitWebView shouldn&apos;t be used, that&apos;s why we have the separation.

&gt; Source/WebKit2/UIProcess/gtk/FullScreenWindowController.cpp:95
&gt; +    gboolean returnValue;
&gt; +    g_signal_emit_by_name(WEBKIT_WEB_VIEW(m_webViewBase), &quot;leaving-fullscreen&quot;, &amp;returnValue);
&gt; +    if (returnValue)
&gt; +        return;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580555</commentid>
    <comment_count>14</comment_count>
      <attachid>131323</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-16 08:59:25 -0700</bug_when>
    <thetext>Comment on attachment 131323
FullScreen signals

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

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:67
&gt;&gt; +    LEAVING_FULLSCREEN,
&gt; 
&gt; I would call these ENTER and LEAVE, since you can control whether to enter/leave fullscreen. Other signal names use the same pattern.

Hrmm this API was discussed in the mailing list, no one complained on this name and I implemented it for WebKit1... So... Do we want to remain consistent here or not? I don&apos;t mind changing this now but it feels late already (IMHO).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580557</commentid>
    <comment_count>15</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-16 09:01:01 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 131323 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=131323&amp;action=review
&gt; 
&gt; Ideally, there would be a WKFullscreenClient in the C API that we would implement in WebKitWebView to emit our signals. But for some reason there isn&apos;t, so the solution, I think, could be to use an internal private GObject in the API layer, used by the WebKitWebViewBase to notify the WebKitWebView about enter/leave fullscreen.
&gt; 

Hummm ok... :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581748</commentid>
    <comment_count>16</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-03-19 07:05:25 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 131323 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=131323&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:67
&gt; &gt;&gt; +    LEAVING_FULLSCREEN,
&gt; &gt; 
&gt; &gt; I would call these ENTER and LEAVE, since you can control whether to enter/leave fullscreen. Other signal names use the same pattern.
&gt; 
&gt; Hrmm this API was discussed in the mailing list, no one complained on this name and I implemented it for WebKit1... So... Do we want to remain consistent here or not? I don&apos;t mind changing this now but it feels late already (IMHO).

In WebKit1 there are other signals using that approach like WebKitWebView::hovering-over-link or WebKitWebView::resource-request-starting. The ing form sounds more like a notification, not something that you can control or avoid. In this case enter/leave fullscreen signals are not just a notification that something is going to happen, you can use them to avoid it to happen or even provide your own implementation. In WebKit2 we usually use the past for notification about things that already happened (load-changed, load-failed, mouse-target-changed, print-request) and imperative for signals that you can block or provide your own implementation (create, close, decide-policy). That&apos;s why I thought it would be better to use enter/leave instead of entering/leaving in WebKit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594560</commentid>
    <comment_count>17</comment_count>
      <attachid>135344</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-03 09:35:07 -0700</bug_when>
    <thetext>Created attachment 135344
New patch

Phil asked me to rework his patch, so here is a new version. It adds a new WKFullScreenClientGtk, specific to the GTK port, so that the code is the same than any other clients. I&apos;ve left the minoborwser part our for a following patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597321</commentid>
    <comment_count>18</comment_count>
      <attachid>135344</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-04-06 06:09:34 -0700</bug_when>
    <thetext>Comment on attachment 135344
New patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599077</commentid>
    <comment_count>19</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-10 00:41:04 -0700</bug_when>
    <thetext>Committed r113697: &lt;http://trac.webkit.org/changeset/113697&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122211</attachid>
            <date>2012-01-12 04:14:52 -0800</date>
            <delta_ts>2012-01-12 06:16:13 -0800</delta_ts>
            <desc>Fullscreen Signals</desc>
            <filename>Fullscreen-Signals.patch</filename>
            <type>text/plain</type>
            <size>22330</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAwOGZlOTcxYWVhOTIwOWQ0YjZmZDllYjYyN2UzZWU4ZWMwYzhhYzYwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDEwIEphbiAyMDEyIDEwOjIwOjI4ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
RnVsbHNjcmVlbiBTaWduYWxzCgotLS0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAzMSArKysrKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgfCAgIDY2ICsrKysrKysrKysrCiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggICB8ICAgIDIgKwogLi4uL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmggICAgICAgfCAgICAyICsKIC4u
Li9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAgIHwgIDEyNCAr
KysrKysrKysrKysrKysrKysrLQogLi4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0
Mm1hcnNoYWwubGlzdCAgfCAgICAxICsKIC4uLi9VSVByb2Nlc3MvZ3RrL0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyLmNwcCAgIHwgICAgOCArKwogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE5ICsrKwogVG9vbHMvTWluaUJyb3dzZXIvZ3Rr
L0Jyb3dzZXJXaW5kb3cuYyAgICAgICAgICAgICAgfCAgIDUyICsrKysrKysrLQogOSBmaWxlcyBj
aGFuZ2VkLCAzMDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
MjY2ZWU0OC4uN2I5OWRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTAxLTEy
ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbV0sy
XVtHVEtdIEZ1bGxTY3JlZW4gc2lnbmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzYxNjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRlZCBlbnRlcmluZy1mdWxsc2NyZWVuIGFuZCBsZWF2aW5nLWZ1
bGxzY3JlZW4gc2lnbmFscywgbWVhbnQgdG8KKyAgICAgICAgYmUgdXNlZCBieSB0aGUgdXNlciBh
Z2VudCB0byBiZSBub3RpZmllZCB3aGVuIGFuIGVsZW1lbnQgcmVxdWVzdHMKKyAgICAgICAgZnVs
bCBzY3JlZW4gZGlzcGxheSBhbmQgd2hlbiB0aGUgZnVsbCBzY3JlZW4gZGlzcGxheSBpcyB0byBi
ZQorICAgICAgICBkaXNhYmxlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQpOgorICAg
ICAgICAod2Via2l0V2ViVmlld0VudGVyaW5nRnVsbFNjcmVlbik6CisgICAgICAgICh3ZWJraXRX
ZWJWaWV3TGVhdmluZ0Z1bGxTY3JlZW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRX
ZWJWaWV3LmNwcDoKKyAgICAgICAgKFdpbmRvd1Byb3BlcnRpZXM6OmVudGVyaW5nRnVsbFNjcmVl
bik6CisgICAgICAgIChXaW5kb3dQcm9wZXJ0aWVzOjpsZWF2aW5nRnVsbFNjcmVlbik6CisgICAg
ICAgIChXaW5kb3dQcm9wZXJ0aWVzOjpVSUNsaWVudFRlc3QpOgorICAgICAgICAoZW1pdEtleVN0
cm9rZSk6CisgICAgICAgICh0ZXN0V2ViVmlld0Z1bGxTY3JlZW4pOgorICAgICAgICAodGVzdFdl
YlZpZXdGdWxsU2NyZWVuQmxvY2tlZCk6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJtYXJzaGFsLmxpc3Q6CisgICAgICAgICogVUlQcm9j
ZXNzL2d0ay9GdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5jcHA6CisgICAgICAgIChGdWxsU2Ny
ZWVuV2luZG93Q29udHJvbGxlcjo6ZW50ZXJGdWxsU2NyZWVuKToKKyAgICAgICAgKEZ1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVyOjpleGl0RnVsbFNjcmVlbik6CisKIDIwMTItMDEtMDUgIFBoaWxp
cHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dLMl0g
SW5pdGlhbCBGdWxsU2NyZWVuIHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZmQyYmI1MS4uZDg2ODU4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5j
cHAKQEAgLTU4LDYgKzU4LDkgQEAgZW51bSB7CiAgICAgU0NSSVBUX0NPTkZJUk0sCiAgICAgU0NS
SVBUX1BST01QVCwKIAorICAgIEVOVEVSSU5HX0ZVTExTQ1JFRU4sCisgICAgTEVBVklOR19GVUxM
U0NSRUVOLAorCiAgICAgTEFTVF9TSUdOQUwKIH07CiAKQEAgLTI1OSw2ICsyNjIsOCBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdl
YlZpZXdDbGFzcykKICAgICB3ZWJWaWV3Q2xhc3MtPnNjcmlwdF9hbGVydCA9IHdlYmtpdFdlYlZp
ZXdTY3JpcHRBbGVydDsKICAgICB3ZWJWaWV3Q2xhc3MtPnNjcmlwdF9jb25maXJtID0gd2Via2l0
V2ViVmlld1NjcmlwdENvbmZpcm07CiAgICAgd2ViVmlld0NsYXNzLT5zY3JpcHRfcHJvbXB0ID0g
d2Via2l0V2ViVmlld1NjcmlwdFByb21wdDsKKyAgICB3ZWJWaWV3Q2xhc3MtPmVudGVyaW5nX2Z1
bGxzY3JlZW4gPSB3ZWJraXRXZWJWaWV3RW50ZXJpbmdGdWxsU2NyZWVuOworICAgIHdlYlZpZXdD
bGFzcy0+bGVhdmluZ19mdWxsc2NyZWVuID0gd2Via2l0V2ViVmlld0xlYXZpbmdGdWxsU2NyZWVu
OwogCiAgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKHdlYlZpZXdDbGFzcywgc2l6ZW9mKFdl
YktpdFdlYlZpZXdQcml2YXRlKSk7CiAKQEAgLTU1Nyw2ICs1NjIsNTMgQEAgc3RhdGljIHZvaWQg
d2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xh
c3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgR19UWVBFX1NUUklORywgR19UWVBFX1NUUklORywgR19UWVBFX1BP
SU5URVIpOwogCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6ZW50ZXJpbmctZnVsbHNj
cmVlbjoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUg
c2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiBKYXZhU2NyaXB0
IGNvZGUgY2FsbHMKKyAgICAgKiA8ZnVuY3Rpb24+ZWxlbWVudC53ZWJraXRSZXF1ZXN0RnVsbFNj
cmVlbjwvZnVuY3Rpb24+LiBJZiB0aGUKKyAgICAgKiBzaWduYWwgaXMgbm90IGhhbmRsZWQgdGhl
IFdlYlZpZXcgd2lsbCBwcm9jZWVkIHRvIGZ1bGwgc2NyZWVuCisgICAgICogaXRzIHRvcCBsZXZl
bCB3aW5kb3cuIFRoaXMgc2lnbmFsIGNhbiBiZSB1c2VkIGJ5IGNsaWVudCBjb2RlIHRvCisgICAg
ICogcmVxdWVzdCBwZXJtaXNzaW9uIHRvIHRoZSB1c2VyIHByaW9yIGRvaW5nIHRoZSBmdWxsIHNj
cmVlbgorICAgICAqIHRyYW5zaXRpb24gYW5kIGV2ZW50dWFsbHkgcHJlcGFyZSB0aGUgdG9wLWxl
dmVsIHdpbmRvdworICAgICAqIChlLmcuIGhpZGUgc29tZSB3aWRnZXRzIHRoYXQgd291bGQgb3Ro
ZXJ3aXNlIGJlIHBhcnQgb2YgdGhlCisgICAgICogZnVsbCBzY3JlZW4gd2luZG93KS4KKworICAg
ICAqIFJldHVybnM6ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMgZnJvbSBiZWluZyBpbnZv
a2VkIGZvciB0aGUgZXZlbnQuCisgICAgICogICAgJUZBTFNFIHRvIGJsb2NrIHRoZSBldmVudC4K
KyAgICAgKi8KKyAgICBzaWduYWxzW0VOVEVSSU5HX0ZVTExTQ1JFRU5dID0KKyAgICAgICAgICAg
IGdfc2lnbmFsX25ldygiZW50ZXJpbmctZnVsbHNjcmVlbiIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHX1NU
UlVDVF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNzLCBlbnRlcmluZ19mdWxsc2NyZWVuKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl9maXJzdF93aW5zLCAw
LAorICAgICAgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX1ZPSUQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDApOworCisKKyAgICAv
KioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OjpsZWF2aW5nLWZ1bGxzY3JlZW46CisgICAgICogQHdl
Yl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVk
CisgICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIFdlYlZpZXcgaXMgYWJvdXQgdG8gcmVz
dG9yZSBpdHMgdG9wIGxldmVsCisgICAgICogd2luZG93IG91dCBvZiBpdHMgZnVsbCBzY3JlZW4g
c3RhdGUuIFRoaXMgc2lnbmFsIGNhbiBiZSB1c2VkIGJ5CisgICAgICogY2xpZW50IGNvZGUgdG8g
cmVzdG9yZSB3aWRnZXRzIGhpZGRlbiBkdXJpbmcgdGhlCisgICAgICogZW50ZXJpbmctZnVsbHNj
cmVlbiBzdGFnZSBmb3IgaW5zdGFuY2UuCisKKyAgICAgKiBSZXR1cm5zOiAlVFJVRSB0byBzdG9w
IG90aGVyIGhhbmRsZXJzIGZyb20gYmVpbmcgaW52b2tlZCBmb3IgdGhlIGV2ZW50LgorICAgICAq
ICAgICVGQUxTRSB0byBwcm9wYWdhdGUgdGhlIGV2ZW50IGZ1cnRoZXIuCisgICAgICovCisgICAg
c2lnbmFsc1tMRUFWSU5HX0ZVTExTQ1JFRU5dID0KKyAgICAgICAgICAgIGdfc2lnbmFsX25ldygi
bGVhdmluZy1mdWxsc2NyZWVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfRlJP
TV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdfU0lHTkFM
X1JVTl9MQVNULAorICAgICAgICAgICAgICAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJL
aXRXZWJWaWV3Q2xhc3MsIGxlYXZpbmdfZnVsbHNjcmVlbiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfZmlyc3Rfd2lucywgMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19WT0lELAorICAgICAgICAgICAgICAg
ICAgICAgICAgIEdfVFlQRV9CT09MRUFOLCAwKTsKKwogfQogCiB2b2lkIHdlYmtpdFdlYlZpZXdM
b2FkQ2hhbmdlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZlbnQgbG9hZEV2
ZW50KQpAQCAtNjYyLDYgKzcxNCwyMCBAQCBXS1N0cmluZ1JlZiB3ZWJraXRXZWJWaWV3UnVuSmF2
YVNjcmlwdFByb21wdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBDU3RyaQogICAgIHJl
dHVybiB0ZXh0ID8gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodGV4dC5nZXQoKSkgOiAw
OwogfQogCitnYm9vbGVhbiB3ZWJraXRXZWJWaWV3RW50ZXJpbmdGdWxsU2NyZWVuKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7CisgICAgZ19zaWdu
YWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0VOVEVSSU5HX0ZVTExTQ1JFRU5dLCAwLCAmcmV0dXJu
VmFsdWUpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworZ2Jvb2xlYW4gd2Via2l0V2Vi
Vmlld0xlYXZpbmdGdWxsU2NyZWVuKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ2Jv
b2xlYW4gcmV0dXJuVmFsdWU7CisgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0xF
QVZJTkdfRlVMTFNDUkVFTl0sIDAsICZyZXR1cm5WYWx1ZSk7CisgICAgcmV0dXJuIHJldHVyblZh
bHVlOworfQorCiAvKioKICAqIHdlYmtpdF93ZWJfdmlld19uZXc6CiAgKgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IGEyNWM0Mzgu
LjJkNmZmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmgKQEAgLTEwMSw2ICsxMDEsOCBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFz
cyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICpt
ZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAg
ICAqZGVmYXVsdF90ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY2hh
ciAgICAgICAgICoqdGV4dCk7CisgICAgZ2Jvb2xlYW4gICAoKiBlbnRlcmluZ19mdWxsc2NyZWVu
KSAgKFdlYktpdFdlYlZpZXcgICp3ZWJfdmlldyk7CisgICAgZ2Jvb2xlYW4gICAoKiBsZWF2aW5n
X2Z1bGxzY3JlZW4pICAoV2ViS2l0V2ViVmlldyAgKndlYl92aWV3KTsKIAogICAgIC8qIFBhZGRp
bmcgZm9yIGZ1dHVyZSBleHBhbnNpb24gKi8KICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDAp
ICh2b2lkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDVjODE2MWEuLmE5NTk0MjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZh
dGUuaApAQCAtNDIsNSArNDIsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdDbG9zZVBhZ2UoV2ViS2l0
V2ViVmlldyopOwogdm9pZCB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdEFsZXJ0KFdlYktpdFdl
YlZpZXcqLCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlKTsKIGJvb2wgd2Via2l0V2ViVmlld1J1bkph
dmFTY3JpcHRDb25maXJtKFdlYktpdFdlYlZpZXcqLCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlKTsK
IFdLU3RyaW5nUmVmIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0UHJvbXB0KFdlYktpdFdlYlZp
ZXcqLCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBDU3RyaW5nJiBkZWZhdWx0VGV4dCk7
CitnYm9vbGVhbiB3ZWJraXRXZWJWaWV3RW50ZXJpbmdGdWxsU2NyZWVuKFdlYktpdFdlYlZpZXcq
KTsKK2dib29sZWFuIHdlYmtpdFdlYlZpZXdMZWF2aW5nRnVsbFNjcmVlbihXZWJLaXRXZWJWaWV3
Kik7CiAKICNlbmRpZiAvLyBXZWJLaXRXZWJWaWV3UHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmll
dy5jcHAKaW5kZXggMTYzNzVlZC4uMzUzMjc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApA
QCAtMjIsNiArMjIsOCBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNp
bmNsdWRlIDxnZGsvZ2RrLmg+CisjaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KIAogc3RhdGlj
IHZvaWQgdGVzdFdlYlZpZXdEZWZhdWx0Q29udGV4dChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKIHsKQEAgLTg3LDExICs4OSwxNCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1Jl
cGxhY2VDb250ZW50KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfbWFp
bl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKIH0KIAorCiBzdGF0aWMgY29uc3QgY2hhciog
a0FsZXJ0RGlhbG9nTWVzc2FnZSA9ICJXZWJLaXRHVEsrIGFsZXJ0IGRpYWxvZyBtZXNzYWdlIjsK
IHN0YXRpYyBjb25zdCBjaGFyKiBrQ29uZmlybURpYWxvZ01lc3NhZ2UgPSAiV2ViS2l0R1RLKyBj
b25maXJtIGRpYWxvZyBtZXNzYWdlIjsKIHN0YXRpYyBjb25zdCBjaGFyKiBrUHJvbXB0RGlhbG9n
TWVzc2FnZSA9ICJXZWJLaXRHVEsrIHByb21wdCBkaWFsb2cgbWVzc2FnZSI7CiBzdGF0aWMgY29u
c3QgY2hhcioga1Byb21wdERpYWxvZ1JldHVybmVkVGV4dCA9ICJXZWJLaXRHVEsrIHByb21wdCBk
aWFsb2cgcmV0dXJuZWQgdGV4dCI7CiAKK3N0YXRpYyBnYm9vbGVhbiBlbWl0S2V5U3Ryb2tlKGdw
b2ludGVyIGRhdGEpOworCiBjbGFzcyBVSUNsaWVudFRlc3Q6IHB1YmxpYyBXZWJWaWV3VGVzdCB7
CiBwdWJsaWM6CiAgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShVSUNsaWVudFRlc3QpOwpAQCAt
OTksNyArMTA0LDkgQEAgcHVibGljOgogICAgIGVudW0gV2ViVmlld0V2ZW50cyB7CiAgICAgICAg
IENyZWF0ZSwKICAgICAgICAgUmVhZHlUb1Nob3csCi0gICAgICAgIENsb3NlCisgICAgICAgIENs
b3NlLAorICAgICAgICBFbnRlcmluZ0Z1bGxTY3JlZW4sCisgICAgICAgIExlYXZpbmdGdWxsU2Ny
ZWVuCiAgICAgfTsKIAogICAgIGVudW0gU2NyaXB0VHlwZSB7CkBAIC0yNjMsMTUgKzI3MCwzOSBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBUUlVFOwogICAgIH0KIAorCisgICAgc3RhdGljIGdi
b29sZWFuIGVudGVyaW5nRnVsbFNjcmVlbihXZWJLaXRXZWJWaWV3KiwgVUlDbGllbnRUZXN0KiB0
ZXN0KQorICAgIHsKKyAgICAgICAgaWYgKHRlc3QtPm1fZnVsbFNjcmVlbkFsbG93ZWQpIHsKKyAg
ICAgICAgICAgIHRlc3QtPm1fd2ViVmlld0V2ZW50cy5hcHBlbmQoRW50ZXJpbmdGdWxsU2NyZWVu
KTsKKyAgICAgICAgICAgIGdfdGltZW91dF9hZGQoMjAwLCAoR1NvdXJjZUZ1bmMpIGVtaXRLZXlT
dHJva2UsIHRlc3QpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZ3RrX3dpZGdldF9k
ZXN0cm95KGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQodGVzdC0+bV93ZWJWaWV3
KSkpOworICAgICAgICAgICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29wKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gdGVzdC0+bV9mdWxsU2NyZWVuQWxsb3dlZDsKKyAgICB9
CisKKyAgICBzdGF0aWMgZ2Jvb2xlYW4gbGVhdmluZ0Z1bGxTY3JlZW4oV2ViS2l0V2ViVmlldyos
IFVJQ2xpZW50VGVzdCogdGVzdCkKKyAgICB7CisgICAgICAgIHRlc3QtPm1fd2ViVmlld0V2ZW50
cy5hcHBlbmQoTGVhdmluZ0Z1bGxTY3JlZW4pOworICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3ko
Z3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVCh0ZXN0LT5tX3dlYlZpZXcpKSk7Cisg
ICAgICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7CisgICAgICAgIHJldHVy
biBUUlVFOworICAgIH0KKwogICAgIFVJQ2xpZW50VGVzdCgpCiAgICAgICAgIDogbV9zY3JpcHRU
eXBlKEFsZXJ0KQogICAgICAgICAsIG1fc2NyaXB0RGlhbG9nQ29uZmlybWVkKHRydWUpCiAgICAg
ewogICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93
c19hdXRvbWF0aWNhbGx5KHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3MobV93ZWJWaWV3KSwg
VFJVRSk7CisgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2Z1bGxzY3JlZW4od2Vi
a2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyhtX3dlYlZpZXcpLCBUUlVFKTsKICAgICAgICAgZ19z
aWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJjcmVhdGUiLCBHX0NBTExCQUNLKHZpZXdDcmVhdGUp
LCB0aGlzKTsKICAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJzY3JpcHQtYWxl
cnQiLCBHX0NBTExCQUNLKHNjcmlwdEFsZXJ0KSwgdGhpcyk7CiAgICAgICAgIGdfc2lnbmFsX2Nv
bm5lY3QobV93ZWJWaWV3LCAic2NyaXB0LWNvbmZpcm0iLCBHX0NBTExCQUNLKHNjcmlwdENvbmZp
cm0pLCB0aGlzKTsKICAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJzY3JpcHQt
cHJvbXB0IiwgR19DQUxMQkFDSyhzY3JpcHRQcm9tcHQpLCB0aGlzKTsKKyAgICAgICAgZ19zaWdu
YWxfY29ubmVjdChtX3dlYlZpZXcsICJlbnRlcmluZy1mdWxsc2NyZWVuIiwgR19DQUxMQkFDSyhl
bnRlcmluZ0Z1bGxTY3JlZW4pLCB0aGlzKTsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX3dl
YlZpZXcsICJsZWF2aW5nLWZ1bGxzY3JlZW4iLCBHX0NBTExCQUNLKGxlYXZpbmdGdWxsU2NyZWVu
KSwgdGhpcyk7CiAgICAgfQogCiAgICAgflVJQ2xpZW50VGVzdCgpCkBAIC0yOTQsOCArMzI1LDQy
IEBAIHB1YmxpYzoKICAgICBib29sIG1fc2NyaXB0RGlhbG9nQ29uZmlybWVkOwogICAgIFdpbmRv
d1Byb3BlcnRpZXMgbV93aW5kb3dQcm9wZXJ0aWVzOwogICAgIEhhc2hTZXQ8V1RGOjpTdHJpbmc+
IG1fd2luZG93UHJvcGVydGllc0NoYW5nZWQ7CisgICAgYm9vbCBtX2Z1bGxTY3JlZW5BbGxvd2Vk
OwogfTsKIAorc3RhdGljIGdib29sZWFuIGVtaXRLZXlTdHJva2UoZ3BvaW50ZXIgZGF0YSkKK3sK
KyAgICBVSUNsaWVudFRlc3QqIHRlc3QgPSAoVUlDbGllbnRUZXN0KikgZGF0YTsKKworICAgIC8v
IGNyZWF0ZSBhbmQgc2VuZCB0aGUgZXZlbnQKKyAgICBHZGtFdmVudCogcHJlc3NFdmVudCA9IGdk
a19ldmVudF9uZXcoR0RLX0tFWV9QUkVTUyk7CisgICAgcHJlc3NFdmVudC0+a2V5LmtleXZhbCA9
IEdES19LRVlfZjsKKyAgICBHZGtXaW5kb3cqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRv
dyhHVEtfV0lER0VUKHRlc3QtPm1fd2ViVmlldykpOworICAgIHByZXNzRXZlbnQtPmtleS53aW5k
b3cgPSB3aW5kb3c7CisgICAgZ19vYmplY3RfcmVmKHByZXNzRXZlbnQtPmtleS53aW5kb3cpOwor
CisgICAgR2RrRGV2aWNlTWFuYWdlciogbWFuYWdlciA9IGdka19kaXNwbGF5X2dldF9kZXZpY2Vf
bWFuYWdlcihnZGtfd2luZG93X2dldF9kaXNwbGF5KHdpbmRvdykpOworICAgIGdka19ldmVudF9z
ZXRfZGV2aWNlKHByZXNzRXZlbnQsIGdka19kZXZpY2VfbWFuYWdlcl9nZXRfY2xpZW50X3BvaW50
ZXIobWFuYWdlcikpOworCisgICAgLy8gV2hlbiBzeW50aGVzaXppbmcgYW4gZXZlbnQsIGFuIGlu
dmFsaWQgaGFyZHdhcmVfa2V5Y29kZSB2YWx1ZQorICAgIC8vIGNhbiBjYXVzZSBpdCB0byBiZSBi
YWRseSBwcm9jZXNzZWQgYnkgR3RrKy4KKyAgICBHZGtLZXltYXBLZXkqIGtleXM7CisgICAgZ2lu
dCBuX2tleXM7CisgICAgaWYgKGdka19rZXltYXBfZ2V0X2VudHJpZXNfZm9yX2tleXZhbChnZGtf
a2V5bWFwX2dldF9kZWZhdWx0KCksIEdES19LRVlfZiwgJmtleXMsICZuX2tleXMpKSB7CisgICAg
ICAgIHByZXNzRXZlbnQtPmtleS5oYXJkd2FyZV9rZXljb2RlID0ga2V5c1swXS5rZXljb2RlOwor
ICAgICAgICBnX2ZyZWUoa2V5cyk7CisgICAgfQorCisgICAgR2RrRXZlbnQqIHJlbGVhc2VFdmVu
dCA9IGdka19ldmVudF9jb3B5KHByZXNzRXZlbnQpOworICAgIGd0a19tYWluX2RvX2V2ZW50KHBy
ZXNzRXZlbnQpOworICAgIGdka19ldmVudF9mcmVlKHByZXNzRXZlbnQpOworICAgIHJlbGVhc2VF
dmVudC0+a2V5LnR5cGUgPSBHREtfS0VZX1JFTEVBU0U7CisgICAgZ3RrX21haW5fZG9fZXZlbnQo
cmVsZWFzZUV2ZW50KTsKKyAgICBnZGtfZXZlbnRfZnJlZShyZWxlYXNlRXZlbnQpOworCisgICAg
cmV0dXJuIEZBTFNFOworfQorCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0NyZWF0ZVJlYWR5Q2xv
c2UoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIHRlc3QtPmxvYWRI
dG1sKCI8aHRtbD48Ym9keSBvbkxvYWQ9XCJ3aW5kb3cub3BlbigpLmNsb3NlKCk7XCI+PC9odG1s
PiIsIDApOwpAQCAtMzA4LDYgKzM3Myw2MSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0NyZWF0
ZVJlYWR5Q2xvc2UoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNz
ZXJ0X2NtcGludChldmVudHNbMl0sID09LCBVSUNsaWVudFRlc3Q6OkNsb3NlKTsKIH0KIAorc3Rh
dGljIHZvaWQgdGVzdFdlYlZpZXdGdWxsU2NyZWVuKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKK3sKKyAgICB0ZXN0LT5tX2Z1bGxTY3JlZW5BbGxvd2VkID0gVFJVRTsKKyAgICB0
ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGJvZHk+IgorICAgICAgICAgICAgICAgICAgICI8c2NyaXB0
PiIKKyAgICAgICAgICAgICAgICAgICAidmFyIGV2ZW50TmFtZSA9ICdrZXlwcmVzcyc7IgorICAg
ICAgICAgICAgICAgICAgICJmdW5jdGlvbiB0aHVuaygpIHsiCisgICAgICAgICAgICAgICAgICAg
IiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdGh1bmssIGZhbHNl
KTsiCisgICAgICAgICAgICAgICAgICAgIiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQud2Vi
a2l0UmVxdWVzdEZ1bGxTY3JlZW4oKTsiCisgICAgICAgICAgICAgICAgICAgIn0iCisgICAgICAg
ICAgICAgICAgICAgImRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aHVuaywg
ZmFsc2UpOyIKKyAgICAgICAgICAgICAgICAgICAiPC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4iLCAw
KTsKKworICAgIEd0a1dpZGdldCogd2luZG93OworICAgIHdpbmRvdyA9IGd0a193aW5kb3dfbmV3
KEdUS19XSU5ET1dfUE9QVVApOworICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIo
d2luZG93KSwgR1RLX1dJREdFVCh0ZXN0LT5tX3dlYlZpZXcpKTsKKworICAgIGd0a193aWRnZXRf
c2hvd19hbGwod2luZG93KTsKKyAgICBnX3RpbWVvdXRfYWRkKDEwMCwgKEdTb3VyY2VGdW5jKSBl
bWl0S2V5U3Ryb2tlLCB0ZXN0KTsKKworICAgIHRlc3QtPndhaXRVbnRpbE1haW5Mb29wRmluaXNo
ZXMoKTsKKworICAgIFZlY3RvcjxVSUNsaWVudFRlc3Q6OldlYlZpZXdFdmVudHM+JiBldmVudHMg
PSB0ZXN0LT5tX3dlYlZpZXdFdmVudHM7CisgICAgZ19hc3NlcnRfY21waW50KGV2ZW50cy5zaXpl
KCksID09LCAyKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzBdLCA9PSwgVUlDbGllbnRU
ZXN0OjpFbnRlcmluZ0Z1bGxTY3JlZW4pOworICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbMV0s
ID09LCBVSUNsaWVudFRlc3Q6OkxlYXZpbmdGdWxsU2NyZWVuKTsKK30KKworCitzdGF0aWMgdm9p
ZCB0ZXN0V2ViVmlld0Z1bGxTY3JlZW5CbG9ja2VkKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKK3sKKyAgICB0ZXN0LT5tX2Z1bGxTY3JlZW5BbGxvd2VkID0gRkFMU0U7CisgICAg
dGVzdC0+bG9hZEh0bWwoIjxodG1sPjxib2R5PiIKKyAgICAgICAgICAgICAgICAgICAiPHNjcmlw
dD4iCisgICAgICAgICAgICAgICAgICAgInZhciBldmVudE5hbWUgPSAna2V5cHJlc3MnOyIKKyAg
ICAgICAgICAgICAgICAgICAiZnVuY3Rpb24gdGh1bmsoKSB7IgorICAgICAgICAgICAgICAgICAg
ICIgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIHRodW5rLCBmYWxz
ZSk7IgorICAgICAgICAgICAgICAgICAgICIgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lndl
YmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7IgorICAgICAgICAgICAgICAgICAgICJ9IgorICAgICAg
ICAgICAgICAgICAgICJkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdGh1bmss
IGZhbHNlKTsiCisgICAgICAgICAgICAgICAgICAgIjwvc2NyaXB0PjwvYm9keT48L2h0bWw+Iiwg
MCk7CisKKyAgICBHdGtXaWRnZXQqIHdpbmRvdzsKKyAgICB3aW5kb3cgPSBndGtfd2luZG93X25l
dyhHVEtfV0lORE9XX1BPUFVQKTsKKyAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVS
KHdpbmRvdyksIEdUS19XSURHRVQodGVzdC0+bV93ZWJWaWV3KSk7CisKKyAgICBndGtfd2lkZ2V0
X3Nob3dfYWxsKHdpbmRvdyk7CisgICAgZ190aW1lb3V0X2FkZCgxMDAsIChHU291cmNlRnVuYykg
ZW1pdEtleVN0cm9rZSwgdGVzdCk7CisKKyAgICB0ZXN0LT53YWl0VW50aWxNYWluTG9vcEZpbmlz
aGVzKCk7CisKKyAgICBWZWN0b3I8VUlDbGllbnRUZXN0OjpXZWJWaWV3RXZlbnRzPiYgZXZlbnRz
ID0gdGVzdC0+bV93ZWJWaWV3RXZlbnRzOworICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6
ZSgpLCA9PSwgMCk7Cit9CisKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3SmF2YVNjcmlwdERpYWxv
Z3MoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBodG1sT25Mb2FkRm9ybWF0ID0gIjxodG1sPjxib2R5IG9uTG9hZD1cIiVzXCI+PC9i
b2R5PjwvaHRtbD4iOwpAQCAtMzcyLDYgKzQ5Miw4IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBX
ZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInJlcGxhY2UtY29udGVudCIsIHRlc3RX
ZWJWaWV3UmVwbGFjZUNvbnRlbnQpOwogICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJW
aWV3IiwgImNyZWF0ZS1yZWFkeS1jbG9zZSIsIHRlc3RXZWJWaWV3Q3JlYXRlUmVhZHlDbG9zZSk7
CiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiamF2YXNjcmlwdC1kaWFs
b2dzIiwgdGVzdFdlYlZpZXdKYXZhU2NyaXB0RGlhbG9ncyk7CisgICAgVUlDbGllbnRUZXN0Ojph
ZGQoIldlYktpdFdlYlZpZXciLCAiZnVsbHNjcmVlbiIsIHRlc3RXZWJWaWV3RnVsbFNjcmVlbik7
CisgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiZnVsbHNjcmVlbi1ibG9j
a2VkIiwgdGVzdFdlYlZpZXdGdWxsU2NyZWVuQmxvY2tlZCk7CiAgICAgVUlDbGllbnRUZXN0Ojph
ZGQoIldlYktpdFdlYlZpZXciLCAid2luZG93LXByb3BlcnRpZXMiLCB0ZXN0V2ViVmlld1dpbmRv
d1Byb3BlcnRpZXMpOwogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiem9v
bS1sZXZlbCIsIHRlc3RXZWJWaWV3Wm9vbUxldmVsKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJtYXJzaGFsLmxpc3QgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5saXN0CmluZGV4IDg5YzI1MGUu
LmI3ODdkMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dl
YmtpdDJtYXJzaGFsLmxpc3QKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
d2Via2l0Mm1hcnNoYWwubGlzdApAQCAtMiw2ICsyLDcgQEAgQk9PTEVBTjpFTlVNLFNUUklORyxQ
T0lOVEVSCiBCT09MRUFOOlNUUklORwogQk9PTEVBTjpTVFJJTkcsUE9JTlRFUgogQk9PTEVBTjpT
VFJJTkcsU1RSSU5HLFBPSU5URVIKK0JPT0xFQU46Vk9JRAogT0JKRUNUOlZPSUQKIFZPSUQ6RU5V
TQogVk9JRDpPQkpFQ1QsUE9JTlRFUgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2d0ay9GdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmNwcAppbmRleCBmOTVhZDQw
Li44NDc0MmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0Z1bGxT
Y3JlZW5XaW5kb3dDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3RrL0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmNwcApAQCAtNzUsNiArNzUsMTEgQEAgdm9p
ZCBGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcjo6ZW50ZXJGdWxsU2NyZWVuKCkKICAgICBpZiAo
bV9mdWxsU2NyZWVuRW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCisgICAgZ2Jvb2xlYW4gcmV0
dXJuVmFsdWU7CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKFdFQktJVF9XRUJfVklFVyhtX3dl
YlZpZXdCYXNlLmdldCgpKSwgImVudGVyaW5nLWZ1bGxzY3JlZW4iLCAmcmV0dXJuVmFsdWUpOwor
ICAgIGlmICghcmV0dXJuVmFsdWUpCisgICAgICAgIHJldHVybjsKKwogICAgIHRoaXMtPmZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHkoKS0+d2lsbEVudGVyRnVsbFNjcmVlbigpOwogICAgIHRoaXMtPmZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHkoKS0+YmVnaW5FbnRlckZ1bGxTY3JlZW5BbmltYXRpb24oMTAp
OwogCkBAIC05Miw2ICs5Nyw5IEBAIHZvaWQgRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXI6OmV4
aXRGdWxsU2NyZWVuKCkKICAgICBpZiAoIW1fZnVsbFNjcmVlbkVuYWJsZWQpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIGdib29sZWFuIHJldHVyblZhbHVlOworICAgIGdfc2lnbmFsX2VtaXRfYnlf
bmFtZShXRUJLSVRfV0VCX1ZJRVcobV93ZWJWaWV3QmFzZS5nZXQoKSksICJsZWF2aW5nLWZ1bGxz
Y3JlZW4iLCAmcmV0dXJuVmFsdWUpOworCiAgICAgR3RrV2lkZ2V0KiB0b3BMZXZlbFdpbmRvdyA9
IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQobV93ZWJWaWV3QmFzZS5nZXQoKSkp
OwogICAgIGlmIChndGtfd2lkZ2V0X2lzX3RvcGxldmVsKHRvcExldmVsV2luZG93KSkKICAgICAg
ICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHRvcExldmVsV2luZG93LCBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihvbkZ1bGxzY3JlZW5HdGtLZXlQcmVzc0V2ZW50KSwgdGhp
cyk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
NmQ0YTk3Mi4uYmQ1NzhiNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTAxLTEyICBQaGlsaXBwZSBOb3JtYW5k
ICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbV0syXVtHVEtdIEZ1bGxTY3JlZW4g
c2lnbmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzYxNjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
c2UgdGhlIHR3byBuZXcgZW50ZXJpbmcvbGVhdmluZyBmdWxsc2NyZWVuIHNpZ25hbHMgdG8gaGlk
ZS9zaG93CisgICAgICAgIHRoZSBVUkwgYmFyIGFuZCBhc2sgdGhlIHVzZXIncyBwZXJtaXNzaW9u
IGJlZm9yZSBlbnRlcmluZworICAgICAgICBmdWxsc2NyZWVuLgorCisgICAgICAgICogTWluaUJy
b3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYzoKKyAgICAgICAgKHdlYlZpZXdGdWxsc2NyZWVuTWVz
c2FnZVdpbmRvd0Nsb3NlKToKKyAgICAgICAgKHdlYlZpZXdXaW5kb3dTdGF0ZUV2ZW50KToKKyAg
ICAgICAgKHdlYlZpZXdFbnRlcmluZ0Z1bGxTY3JlZW4pOgorICAgICAgICAod2ViVmlld0xlYXZp
bmdGdWxsU2NyZWVuKToKKyAgICAgICAgKHdlYlZpZXdDcmVhdGUpOgorICAgICAgICAoYnJvd3Nl
cldpbmRvd0NvbnN0cnVjdGVkKToKKwogMjAxMi0wMS0xMSAgVG9ueSBDaGFuZyAgPHRvbnlAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIERvbid0IHJlbW92ZSAwIGJ5dGUgZmlsZXMgd2hlbiBydW5u
aW5nIGJ1aWxkLXdlYmtpdCAtLWNocm9taXVtCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nl
ci9ndGsvQnJvd3NlcldpbmRvdy5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5k
b3cuYwppbmRleCBlMDRhYjBiLi4wMjJhYzJkIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nl
ci9ndGsvQnJvd3NlcldpbmRvdy5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2Vy
V2luZG93LmMKQEAgLTQ1LDcgKzQ1LDYgQEAgc3RydWN0IF9Ccm93c2VyV2luZG93IHsKICAgICBH
dGtXaWRnZXQgKnN0YXR1c0xhYmVsOwogICAgIEd0a1dpZGdldCAqc2V0dGluZ3NEaWFsb2c7CiAg
ICAgV2ViS2l0V2ViVmlldyAqd2ViVmlldzsKLQogfTsKIAogc3RydWN0IF9Ccm93c2VyV2luZG93
Q2xhc3MgewpAQCAtMjE4LDYgKzIxNyw1MyBAQCBzdGF0aWMgdm9pZCB3ZWJWaWV3UmVhZHlUb1No
b3coV2ViS2l0V2ViVmlldyAqd2ViVmlldywgQnJvd3NlcldpbmRvdyAqd2luZG93KQogICAgIGd0
a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKHdpbmRvdykpOwogfQogCitzdGF0aWMgZ2Jvb2xlYW4g
d2ViVmlld0Z1bGxzY3JlZW5NZXNzYWdlV2luZG93Q2xvc2UoR3RrV2lkZ2V0ICpkaWFsb2cpCit7
CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lIChHVEtfRElBTE9HKGRpYWxvZyksICJjbG9zZSIp
OworICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYlZpZXdXaW5kb3dT
dGF0ZUV2ZW50KEd0a1dpZGdldCAqd2lkZ2V0LCBHZGtFdmVudFdpbmRvd1N0YXRlICpldmVudCwg
QnJvd3NlcldpbmRvdyAqd2luZG93KQoreworICAgIGlmIChldmVudC0+bmV3X3dpbmRvd19zdGF0
ZSAmIEdES19XSU5ET1dfU1RBVEVfRlVMTFNDUkVFTikgeworICAgICAgICBjb25zdCBnY2hhciAq
dXJpID0gd2Via2l0X3dlYl92aWV3X2dldF91cmkgKHdpbmRvdy0+d2ViVmlldyk7CisgICAgICAg
IEd0a1dpZGdldCogZGlhbG9nID0gZ3RrX21lc3NhZ2VfZGlhbG9nX25ldyAoR1RLX1dJTkRPVyh3
aW5kb3cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdUS19ESUFMT0dfTU9EQUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR1RLX01FU1NBR0VfSU5GTywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfQlVUVE9OU19DTE9TRSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMgaXMgbm93
IGZ1bGwgc2NyZWVuLiBQcmVzcyBFU0Mgb3IgZiB0byBleGl0LiIsIHVyaSk7CisgICAgICAgIGdf
dGltZW91dF9hZGQgKDIwMDAsIChHU291cmNlRnVuYykgd2ViVmlld0Z1bGxzY3JlZW5NZXNzYWdl
V2luZG93Q2xvc2UsIGRpYWxvZyk7CisgICAgICAgIGd0a19kaWFsb2dfcnVuIChHVEtfRElBTE9H
IChkaWFsb2cpKTsKKyAgICAgICAgZ3RrX3dpZGdldF9kZXN0cm95IChkaWFsb2cpOworICAgIH0K
KyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYlZpZXdFbnRlcmluZ0Z1
bGxTY3JlZW4oV2ViS2l0V2ViVmlldyAqd2ViVmlldywgQnJvd3NlcldpbmRvdyAqd2luZG93KQor
eworICAgIGNvbnN0IGdjaGFyICp1cmkgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSAod2luZG93
LT53ZWJWaWV3KTsKKyAgICBHdGtXaWRnZXQqIGRpYWxvZyA9IGd0a19tZXNzYWdlX2RpYWxvZ19u
ZXcgKEdUS19XSU5ET1cod2luZG93KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdUS19ESUFMT0dfTU9EQUwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfTUVTU0FHRV9JTkZPLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX0JVVFRPTlNfWUVTX05PLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFsbG93IGZ1
bGwgc2NyZWVuIGRpc3BsYXkgb2YgJXMgPyIsIHVyaSk7CisgICAgZ2ludCByZXN1bHQgPSBndGtf
ZGlhbG9nX3J1biAoR1RLX0RJQUxPRyAoZGlhbG9nKSk7CisgICAgZ3RrX3dpZGdldF9kZXN0cm95
IChkaWFsb2cpOworICAgIGlmIChyZXN1bHQgPT0gR1RLX1JFU1BPTlNFX1lFUykgeworICAgICAg
ICBnX3NpZ25hbF9jb25uZWN0KEdUS19XSURHRVQod2luZG93KSwgIndpbmRvdy1zdGF0ZS1ldmVu
dCIsIEdfQ0FMTEJBQ0sod2ViVmlld1dpbmRvd1N0YXRlRXZlbnQpLCB3aW5kb3cpOworICAgICAg
ICBndGtfd2lkZ2V0X2hpZGUgKHdpbmRvdy0+dG9vbGJhcik7CisgICAgICAgIHJldHVybiBUUlVF
OworICAgIH0KKyAgICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3
TGVhdmluZ0Z1bGxTY3JlZW4oV2ViS2l0V2ViVmlldyAqd2ViVmlldywgQnJvd3NlcldpbmRvdyAq
d2luZG93KQoreworICAgIGd0a193aWRnZXRfc2hvdyh3aW5kb3ctPnRvb2xiYXIpOworICAgIGdf
c2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhHVEtfV0lER0VUKHdpbmRvdyksIEdf
Q0FMTEJBQ0sod2ViVmlld1dpbmRvd1N0YXRlRXZlbnQpLCB3aW5kb3cpOworICAgIHJldHVybiBU
UlVFOworfQorCiBzdGF0aWMgR3RrV2lkZ2V0ICp3ZWJWaWV3Q3JlYXRlKFdlYktpdFdlYlZpZXcg
KndlYlZpZXcsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykKIHsKICAgICBXZWJLaXRXZWJWaWV3ICpu
ZXdXZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9jb250
ZXh0KHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh3ZWJWaWV3KSkpOwpAQCAtMjI2LDYgKzI3
Miw4IEBAIHN0YXRpYyBHdGtXaWRnZXQgKndlYlZpZXdDcmVhdGUoV2ViS2l0V2ViVmlldyAqd2Vi
VmlldywgQnJvd3NlcldpbmRvdyAqd2luZG93KQogICAgIEd0a1dpZGdldCAqbmV3V2luZG93ID0g
YnJvd3Nlcl93aW5kb3dfbmV3KG5ld1dlYlZpZXcpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QobmV3
V2ViVmlldywgInJlYWR5LXRvLXNob3ciLCBHX0NBTExCQUNLKHdlYlZpZXdSZWFkeVRvU2hvdyks
IG5ld1dpbmRvdyk7CiAgICAgZ19zaWduYWxfY29ubmVjdChuZXdXZWJWaWV3LCAiY2xvc2UiLCBH
X0NBTExCQUNLKHdlYlZpZXdDbG9zZSksIG5ld1dpbmRvdyk7CisgICAgZ19zaWduYWxfY29ubmVj
dChuZXdXZWJWaWV3LCAiZW50ZXJpbmctZnVsbHNjcmVlbiIsIEdfQ0FMTEJBQ0sod2ViVmlld0Vu
dGVyaW5nRnVsbFNjcmVlbiksIG5ld1dpbmRvdyk7CisgICAgZ19zaWduYWxfY29ubmVjdChuZXdX
ZWJWaWV3LCAibGVhdmluZy1mdWxsc2NyZWVuIiwgR19DQUxMQkFDSyh3ZWJWaWV3TGVhdmluZ0Z1
bGxTY3JlZW4pLCBuZXdXaW5kb3cpOwogICAgIHJldHVybiBHVEtfV0lER0VUKG5ld1dlYlZpZXcp
OwogfQogCkBAIC0zMzMsNiArMzgxLDggQEAgc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd0NvbnN0
cnVjdGVkKEdPYmplY3QgKmdPYmplY3QpCiAgICAgZ19zaWduYWxfY29ubmVjdCh3aW5kb3ctPndl
YlZpZXcsICJub3RpZnk6OnRpdGxlIiwgR19DQUxMQkFDSyh3ZWJWaWV3VGl0bGVDaGFuZ2VkKSwg
d2luZG93KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdpbmRvdy0+d2ViVmlldywgImNyZWF0ZSIs
IEdfQ0FMTEJBQ0sod2ViVmlld0NyZWF0ZSksIHdpbmRvdyk7CiAgICAgZ19zaWduYWxfY29ubmVj
dCh3aW5kb3ctPndlYlZpZXcsICJsb2FkLWZhaWxlZCIsIEdfQ0FMTEJBQ0sod2ViVmlld0xvYWRG
YWlsZWQpLCB3aW5kb3cpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2luZG93LT53ZWJWaWV3LCAi
ZW50ZXJpbmctZnVsbHNjcmVlbiIsIEdfQ0FMTEJBQ0sod2ViVmlld0VudGVyaW5nRnVsbFNjcmVl
biksIHdpbmRvdyk7CisgICAgZ19zaWduYWxfY29ubmVjdCh3aW5kb3ctPndlYlZpZXcsICJsZWF2
aW5nLWZ1bGxzY3JlZW4iLCBHX0NBTExCQUNLKHdlYlZpZXdMZWF2aW5nRnVsbFNjcmVlbiksIHdp
bmRvdyk7CiAKICAgICBXZWJLaXRCYWNrRm9yd2FyZExpc3QgKmJhY2tGb3J3YWRsaXN0ID0gd2Vi
a2l0X3dlYl92aWV3X2dldF9iYWNrX2ZvcndhcmRfbGlzdCh3aW5kb3ctPndlYlZpZXcpOwogICAg
IGdfc2lnbmFsX2Nvbm5lY3QoYmFja0ZvcndhZGxpc3QsICJjaGFuZ2VkIiwgR19DQUxMQkFDSyhi
YWNrRm9yd2FkbGlzdENoYW5nZWQpLCB3aW5kb3cpOwotLSAKMS43LjguMw==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122227</attachid>
            <date>2012-01-12 06:16:13 -0800</date>
            <delta_ts>2012-01-31 07:41:45 -0800</delta_ts>
            <desc>Fullscreen Signals</desc>
            <filename>Fullscreen-Signals.patch</filename>
            <type>text/plain</type>
            <size>22525</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAxN2Q1ZGMxNmU5MTQyOGY4ZWFkNDg1OGE4ZjA3ZTlmYzJmYzc1NzdhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDEwIEphbiAyMDEyIDEwOjIwOjI4ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
RnVsbHNjcmVlbiBTaWduYWxzCgotLS0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAzMSArKysrKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgfCAgIDY2ICsrKysrKysrKysrCiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggICB8ICAgIDIgKwogLi4uL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmggICAgICAgfCAgICAyICsKIC4u
Li9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAgIHwgIDEyNCAr
KysrKysrKysrKysrKysrKysrLQogLi4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0
Mm1hcnNoYWwubGlzdCAgfCAgICAxICsKIC4uLi9VSVByb2Nlc3MvZ3RrL0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyLmNwcCAgIHwgICAgOCArKwogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE5ICsrKwogVG9vbHMvTWluaUJyb3dzZXIvZ3Rr
L0Jyb3dzZXJXaW5kb3cuYyAgICAgICAgICAgICAgfCAgIDU0ICsrKysrKysrKy0KIDkgZmlsZXMg
Y2hhbmdlZCwgMzA1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IGQxYWY1NzcuLjUxMDNmNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMi0wMS0x
MiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dL
Ml1bR1RLXSBGdWxsU2NyZWVuIHNpZ25hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc2MTY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkZWQgZW50ZXJpbmctZnVsbHNjcmVlbiBhbmQgbGVhdmluZy1m
dWxsc2NyZWVuIHNpZ25hbHMsIG1lYW50IHRvCisgICAgICAgIGJlIHVzZWQgYnkgdGhlIHVzZXIg
YWdlbnQgdG8gYmUgbm90aWZpZWQgd2hlbiBhbiBlbGVtZW50IHJlcXVlc3RzCisgICAgICAgIGZ1
bGwgc2NyZWVuIGRpc3BsYXkgYW5kIHdoZW4gdGhlIGZ1bGwgc2NyZWVuIGRpc3BsYXkgaXMgdG8g
YmUKKyAgICAgICAgZGlzYWJsZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAg
ICAgICAgKHdlYmtpdFdlYlZpZXdFbnRlcmluZ0Z1bGxTY3JlZW4pOgorICAgICAgICAod2Via2l0
V2ViVmlld0xlYXZpbmdGdWxsU2NyZWVuKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0
V2ViVmlldy5jcHA6CisgICAgICAgIChXaW5kb3dQcm9wZXJ0aWVzOjplbnRlcmluZ0Z1bGxTY3Jl
ZW4pOgorICAgICAgICAoV2luZG93UHJvcGVydGllczo6bGVhdmluZ0Z1bGxTY3JlZW4pOgorICAg
ICAgICAoV2luZG93UHJvcGVydGllczo6VUlDbGllbnRUZXN0KToKKyAgICAgICAgKGVtaXRLZXlT
dHJva2UpOgorICAgICAgICAodGVzdFdlYlZpZXdGdWxsU2NyZWVuKToKKyAgICAgICAgKHRlc3RX
ZWJWaWV3RnVsbFNjcmVlbkJsb2NrZWQpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5saXN0OgorICAgICAgICAqIFVJUHJv
Y2Vzcy9ndGsvRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoRnVsbFNj
cmVlbldpbmRvd0NvbnRyb2xsZXI6OmVudGVyRnVsbFNjcmVlbik6CisgICAgICAgIChGdWxsU2Ny
ZWVuV2luZG93Q29udHJvbGxlcjo6ZXhpdEZ1bGxTY3JlZW4pOgorCiAyMDEyLTAxLTA1ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXSzJd
IEluaXRpYWwgRnVsbFNjcmVlbiBzdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IGZkMmJiNTEuLmQ4Njg1OGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
Y3BwCkBAIC01OCw2ICs1OCw5IEBAIGVudW0gewogICAgIFNDUklQVF9DT05GSVJNLAogICAgIFND
UklQVF9QUk9NUFQsCiAKKyAgICBFTlRFUklOR19GVUxMU0NSRUVOLAorICAgIExFQVZJTkdfRlVM
TFNDUkVFTiwKKwogICAgIExBU1RfU0lHTkFMCiB9OwogCkBAIC0yNTksNiArMjYyLDggQEAgc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3
ZWJWaWV3Q2xhc3MpCiAgICAgd2ViVmlld0NsYXNzLT5zY3JpcHRfYWxlcnQgPSB3ZWJraXRXZWJW
aWV3U2NyaXB0QWxlcnQ7CiAgICAgd2ViVmlld0NsYXNzLT5zY3JpcHRfY29uZmlybSA9IHdlYmtp
dFdlYlZpZXdTY3JpcHRDb25maXJtOwogICAgIHdlYlZpZXdDbGFzcy0+c2NyaXB0X3Byb21wdCA9
IHdlYmtpdFdlYlZpZXdTY3JpcHRQcm9tcHQ7CisgICAgd2ViVmlld0NsYXNzLT5lbnRlcmluZ19m
dWxsc2NyZWVuID0gd2Via2l0V2ViVmlld0VudGVyaW5nRnVsbFNjcmVlbjsKKyAgICB3ZWJWaWV3
Q2xhc3MtPmxlYXZpbmdfZnVsbHNjcmVlbiA9IHdlYmtpdFdlYlZpZXdMZWF2aW5nRnVsbFNjcmVl
bjsKIAogICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZSh3ZWJWaWV3Q2xhc3MsIHNpemVvZihX
ZWJLaXRXZWJWaWV3UHJpdmF0ZSkpOwogCkBAIC01NTcsNiArNTYyLDUzIEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0Ns
YXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOLCAzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgIEdfVFlQRV9TVFJJTkcsIEdfVFlQRV9TVFJJTkcsIEdfVFlQRV9Q
T0lOVEVSKTsKIAorICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OmVudGVyaW5nLWZ1bGxz
Y3JlZW46CisgICAgICogQHdlYl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgb24gd2hpY2ggdGhl
IHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gSmF2YVNjcmlw
dCBjb2RlIGNhbGxzCisgICAgICogPGZ1bmN0aW9uPmVsZW1lbnQud2Via2l0UmVxdWVzdEZ1bGxT
Y3JlZW48L2Z1bmN0aW9uPi4gSWYgdGhlCisgICAgICogc2lnbmFsIGlzIG5vdCBoYW5kbGVkIHRo
ZSBXZWJWaWV3IHdpbGwgcHJvY2VlZCB0byBmdWxsIHNjcmVlbgorICAgICAqIGl0cyB0b3AgbGV2
ZWwgd2luZG93LiBUaGlzIHNpZ25hbCBjYW4gYmUgdXNlZCBieSBjbGllbnQgY29kZSB0bworICAg
ICAqIHJlcXVlc3QgcGVybWlzc2lvbiB0byB0aGUgdXNlciBwcmlvciBkb2luZyB0aGUgZnVsbCBz
Y3JlZW4KKyAgICAgKiB0cmFuc2l0aW9uIGFuZCBldmVudHVhbGx5IHByZXBhcmUgdGhlIHRvcC1s
ZXZlbCB3aW5kb3cKKyAgICAgKiAoZS5nLiBoaWRlIHNvbWUgd2lkZ2V0cyB0aGF0IHdvdWxkIG90
aGVyd2lzZSBiZSBwYXJ0IG9mIHRoZQorICAgICAqIGZ1bGwgc2NyZWVuIHdpbmRvdykuCisKKyAg
ICAgKiBSZXR1cm5zOiAlVFJVRSB0byBzdG9wIG90aGVyIGhhbmRsZXJzIGZyb20gYmVpbmcgaW52
b2tlZCBmb3IgdGhlIGV2ZW50LgorICAgICAqICAgICVGQUxTRSB0byBibG9jayB0aGUgZXZlbnQu
CisgICAgICovCisgICAgc2lnbmFsc1tFTlRFUklOR19GVUxMU0NSRUVOXSA9CisgICAgICAgICAg
ICBnX3NpZ25hbF9uZXcoImVudGVyaW5nLWZ1bGxzY3JlZW4iLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgR19T
VFJVQ1RfT0ZGU0VUKFdlYktpdFdlYlZpZXdDbGFzcywgZW50ZXJpbmdfZnVsbHNjcmVlbiksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfZmlyc3Rfd2lucywg
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19WT0lE
LAorICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOLCAwKTsKKworCisgICAg
LyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6bGVhdmluZy1mdWxsc2NyZWVuOgorICAgICAqIEB3
ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRl
ZAorICAgICAqCisgICAgICogRW1pdHRlZCB3aGVuIHRoZSBXZWJWaWV3IGlzIGFib3V0IHRvIHJl
c3RvcmUgaXRzIHRvcCBsZXZlbAorICAgICAqIHdpbmRvdyBvdXQgb2YgaXRzIGZ1bGwgc2NyZWVu
IHN0YXRlLiBUaGlzIHNpZ25hbCBjYW4gYmUgdXNlZCBieQorICAgICAqIGNsaWVudCBjb2RlIHRv
IHJlc3RvcmUgd2lkZ2V0cyBoaWRkZW4gZHVyaW5nIHRoZQorICAgICAqIGVudGVyaW5nLWZ1bGxz
Y3JlZW4gc3RhZ2UgZm9yIGluc3RhbmNlLgorCisgICAgICogUmV0dXJuczogJVRSVUUgdG8gc3Rv
cCBvdGhlciBoYW5kbGVycyBmcm9tIGJlaW5nIGludm9rZWQgZm9yIHRoZSBldmVudC4KKyAgICAg
KiAgICAlRkFMU0UgdG8gcHJvcGFnYXRlIHRoZSBldmVudCBmdXJ0aGVyLgorICAgICAqLworICAg
IHNpZ25hbHNbTEVBVklOR19GVUxMU0NSRUVOXSA9CisgICAgICAgICAgICBnX3NpZ25hbF9uZXco
ImxlYXZpbmctZnVsbHNjcmVlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0ZS
T01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHX1NJR05B
TF9SVU5fTEFTVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2Vi
S2l0V2ViVmlld0NsYXNzLCBsZWF2aW5nX2Z1bGxzY3JlZW4pLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9yX2ZpcnN0X3dpbnMsIDAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fVk9JRCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMCk7CisKIH0KIAogdm9pZCB3ZWJraXRXZWJWaWV3
TG9hZENoYW5nZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRF
dmVudCkKQEAgLTY2Miw2ICs3MTQsMjAgQEAgV0tTdHJpbmdSZWYgd2Via2l0V2ViVmlld1J1bkph
dmFTY3JpcHRQcm9tcHQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgQ1N0cmkKICAgICBy
ZXR1cm4gdGV4dCA/IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHRleHQuZ2V0KCkpIDog
MDsKIH0KIAorZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0VudGVyaW5nRnVsbFNjcmVlbihXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGdib29sZWFuIHJldHVyblZhbHVlOworICAgIGdfc2ln
bmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tFTlRFUklOR19GVUxMU0NSRUVOXSwgMCwgJnJldHVy
blZhbHVlKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK2dib29sZWFuIHdlYmtpdFdl
YlZpZXdMZWF2aW5nRnVsbFNjcmVlbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGdi
b29sZWFuIHJldHVyblZhbHVlOworICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tM
RUFWSU5HX0ZVTExTQ1JFRU5dLCAwLCAmcmV0dXJuVmFsdWUpOworICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKK30KKwogLyoqCiAgKiB3ZWJraXRfd2ViX3ZpZXdfbmV3OgogICoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCBhMjVjNDM4
Li4yZDZmZmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlldy5oCkBAIC0xMDEsNiArMTAxLDggQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xh
c3MgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAq
bWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIg
ICAgKmRlZmF1bHRfdGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2No
YXIgICAgICAgICAqKnRleHQpOworICAgIGdib29sZWFuICAgKCogZW50ZXJpbmdfZnVsbHNjcmVl
bikgIChXZWJLaXRXZWJWaWV3ICAqd2ViX3ZpZXcpOworICAgIGdib29sZWFuICAgKCogbGVhdmlu
Z19mdWxsc2NyZWVuKSAgKFdlYktpdFdlYlZpZXcgICp3ZWJfdmlldyk7CiAKICAgICAvKiBQYWRk
aW5nIGZvciBmdXR1cmUgZXhwYW5zaW9uICovCiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQw
KSAodm9pZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlld1ByaXZhdGUuaAppbmRleCA1YzgxNjFhLi5hOTU5NDI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2
YXRlLmgKQEAgLTQyLDUgKzQyLDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3Q2xvc2VQYWdlKFdlYktp
dFdlYlZpZXcqKTsKIHZvaWQgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRBbGVydChXZWJLaXRX
ZWJWaWV3KiwgY29uc3QgQ1N0cmluZyYgbWVzc2FnZSk7CiBib29sIHdlYmtpdFdlYlZpZXdSdW5K
YXZhU2NyaXB0Q29uZmlybShXZWJLaXRXZWJWaWV3KiwgY29uc3QgQ1N0cmluZyYgbWVzc2FnZSk7
CiBXS1N0cmluZ1JlZiB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdFByb21wdChXZWJLaXRXZWJW
aWV3KiwgY29uc3QgQ1N0cmluZyYgbWVzc2FnZSwgY29uc3QgQ1N0cmluZyYgZGVmYXVsdFRleHQp
OworZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0VudGVyaW5nRnVsbFNjcmVlbihXZWJLaXRXZWJWaWV3
Kik7CitnYm9vbGVhbiB3ZWJraXRXZWJWaWV3TGVhdmluZ0Z1bGxTY3JlZW4oV2ViS2l0V2ViVmll
dyopOwogCiAjZW5kaWYgLy8gV2ViS2l0V2ViVmlld1ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZp
ZXcuY3BwCmluZGV4IDE2Mzc1ZWQuLjM1MzI3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAK
QEAgLTIyLDYgKzIyLDggQEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Cisj
aW5jbHVkZSA8Z2RrL2dkay5oPgorI2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CiAKIHN0YXRp
YyB2b2lkIHRlc3RXZWJWaWV3RGVmYXVsdENvbnRleHQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiB7CkBAIC04NywxMSArODksMTQgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdS
ZXBsYWNlQ29udGVudChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX21h
aW5fbG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7CiB9CiAKKwogc3RhdGljIGNvbnN0IGNoYXIq
IGtBbGVydERpYWxvZ01lc3NhZ2UgPSAiV2ViS2l0R1RLKyBhbGVydCBkaWFsb2cgbWVzc2FnZSI7
CiBzdGF0aWMgY29uc3QgY2hhcioga0NvbmZpcm1EaWFsb2dNZXNzYWdlID0gIldlYktpdEdUSysg
Y29uZmlybSBkaWFsb2cgbWVzc2FnZSI7CiBzdGF0aWMgY29uc3QgY2hhcioga1Byb21wdERpYWxv
Z01lc3NhZ2UgPSAiV2ViS2l0R1RLKyBwcm9tcHQgZGlhbG9nIG1lc3NhZ2UiOwogc3RhdGljIGNv
bnN0IGNoYXIqIGtQcm9tcHREaWFsb2dSZXR1cm5lZFRleHQgPSAiV2ViS2l0R1RLKyBwcm9tcHQg
ZGlhbG9nIHJldHVybmVkIHRleHQiOwogCitzdGF0aWMgZ2Jvb2xlYW4gZW1pdEtleVN0cm9rZShn
cG9pbnRlciBkYXRhKTsKKwogY2xhc3MgVUlDbGllbnRUZXN0OiBwdWJsaWMgV2ViVmlld1Rlc3Qg
ewogcHVibGljOgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoVUlDbGllbnRUZXN0KTsKQEAg
LTk5LDcgKzEwNCw5IEBAIHB1YmxpYzoKICAgICBlbnVtIFdlYlZpZXdFdmVudHMgewogICAgICAg
ICBDcmVhdGUsCiAgICAgICAgIFJlYWR5VG9TaG93LAotICAgICAgICBDbG9zZQorICAgICAgICBD
bG9zZSwKKyAgICAgICAgRW50ZXJpbmdGdWxsU2NyZWVuLAorICAgICAgICBMZWF2aW5nRnVsbFNj
cmVlbgogICAgIH07CiAKICAgICBlbnVtIFNjcmlwdFR5cGUgewpAQCAtMjYzLDE1ICsyNzAsMzkg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gVFJVRTsKICAgICB9CiAKKworICAgIHN0YXRpYyBn
Ym9vbGVhbiBlbnRlcmluZ0Z1bGxTY3JlZW4oV2ViS2l0V2ViVmlldyosIFVJQ2xpZW50VGVzdCog
dGVzdCkKKyAgICB7CisgICAgICAgIGlmICh0ZXN0LT5tX2Z1bGxTY3JlZW5BbGxvd2VkKSB7Cisg
ICAgICAgICAgICB0ZXN0LT5tX3dlYlZpZXdFdmVudHMuYXBwZW5kKEVudGVyaW5nRnVsbFNjcmVl
bik7CisgICAgICAgICAgICBnX3RpbWVvdXRfYWRkKDIwMCwgKEdTb3VyY2VGdW5jKSBlbWl0S2V5
U3Ryb2tlLCB0ZXN0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGd0a193aWRnZXRf
ZGVzdHJveShndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKHRlc3QtPm1fd2ViVmll
dykpKTsKKyAgICAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRlc3QtPm1fZnVsbFNjcmVlbkFsbG93ZWQ7CisgICAg
fQorCisgICAgc3RhdGljIGdib29sZWFuIGxlYXZpbmdGdWxsU2NyZWVuKFdlYktpdFdlYlZpZXcq
LCBVSUNsaWVudFRlc3QqIHRlc3QpCisgICAgeworICAgICAgICB0ZXN0LT5tX3dlYlZpZXdFdmVu
dHMuYXBwZW5kKExlYXZpbmdGdWxsU2NyZWVuKTsKKyAgICAgICAgZ3RrX3dpZGdldF9kZXN0cm95
KGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQodGVzdC0+bV93ZWJWaWV3KSkpOwor
ICAgICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOworICAgICAgICByZXR1
cm4gVFJVRTsKKyAgICB9CisKICAgICBVSUNsaWVudFRlc3QoKQogICAgICAgICA6IG1fc2NyaXB0
VHlwZShBbGVydCkKICAgICAgICAgLCBtX3NjcmlwdERpYWxvZ0NvbmZpcm1lZCh0cnVlKQogICAg
IHsKICAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRv
d3NfYXV0b21hdGljYWxseSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKG1fd2ViVmlldyks
IFRSVUUpOworICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9mdWxsc2NyZWVuKHdl
YmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3MobV93ZWJWaWV3KSwgVFJVRSk7CiAgICAgICAgIGdf
c2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAiY3JlYXRlIiwgR19DQUxMQkFDSyh2aWV3Q3JlYXRl
KSwgdGhpcyk7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAic2NyaXB0LWFs
ZXJ0IiwgR19DQUxMQkFDSyhzY3JpcHRBbGVydCksIHRoaXMpOwogICAgICAgICBnX3NpZ25hbF9j
b25uZWN0KG1fd2ViVmlldywgInNjcmlwdC1jb25maXJtIiwgR19DQUxMQkFDSyhzY3JpcHRDb25m
aXJtKSwgdGhpcyk7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAic2NyaXB0
LXByb21wdCIsIEdfQ0FMTEJBQ0soc2NyaXB0UHJvbXB0KSwgdGhpcyk7CisgICAgICAgIGdfc2ln
bmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAiZW50ZXJpbmctZnVsbHNjcmVlbiIsIEdfQ0FMTEJBQ0so
ZW50ZXJpbmdGdWxsU2NyZWVuKSwgdGhpcyk7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93
ZWJWaWV3LCAibGVhdmluZy1mdWxsc2NyZWVuIiwgR19DQUxMQkFDSyhsZWF2aW5nRnVsbFNjcmVl
biksIHRoaXMpOwogICAgIH0KIAogICAgIH5VSUNsaWVudFRlc3QoKQpAQCAtMjk0LDggKzMyNSw0
MiBAQCBwdWJsaWM6CiAgICAgYm9vbCBtX3NjcmlwdERpYWxvZ0NvbmZpcm1lZDsKICAgICBXaW5k
b3dQcm9wZXJ0aWVzIG1fd2luZG93UHJvcGVydGllczsKICAgICBIYXNoU2V0PFdURjo6U3RyaW5n
PiBtX3dpbmRvd1Byb3BlcnRpZXNDaGFuZ2VkOworICAgIGJvb2wgbV9mdWxsU2NyZWVuQWxsb3dl
ZDsKIH07CiAKK3N0YXRpYyBnYm9vbGVhbiBlbWl0S2V5U3Ryb2tlKGdwb2ludGVyIGRhdGEpCit7
CisgICAgVUlDbGllbnRUZXN0KiB0ZXN0ID0gKFVJQ2xpZW50VGVzdCopIGRhdGE7CisKKyAgICAv
LyBjcmVhdGUgYW5kIHNlbmQgdGhlIGV2ZW50CisgICAgR2RrRXZlbnQqIHByZXNzRXZlbnQgPSBn
ZGtfZXZlbnRfbmV3KEdES19LRVlfUFJFU1MpOworICAgIHByZXNzRXZlbnQtPmtleS5rZXl2YWwg
PSBHREtfS0VZX2Y7CisgICAgR2RrV2luZG93KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5k
b3coR1RLX1dJREdFVCh0ZXN0LT5tX3dlYlZpZXcpKTsKKyAgICBwcmVzc0V2ZW50LT5rZXkud2lu
ZG93ID0gd2luZG93OworICAgIGdfb2JqZWN0X3JlZihwcmVzc0V2ZW50LT5rZXkud2luZG93KTsK
KworICAgIEdka0RldmljZU1hbmFnZXIqIG1hbmFnZXIgPSBnZGtfZGlzcGxheV9nZXRfZGV2aWNl
X21hbmFnZXIoZ2RrX3dpbmRvd19nZXRfZGlzcGxheSh3aW5kb3cpKTsKKyAgICBnZGtfZXZlbnRf
c2V0X2RldmljZShwcmVzc0V2ZW50LCBnZGtfZGV2aWNlX21hbmFnZXJfZ2V0X2NsaWVudF9wb2lu
dGVyKG1hbmFnZXIpKTsKKworICAgIC8vIFdoZW4gc3ludGhlc2l6aW5nIGFuIGV2ZW50LCBhbiBp
bnZhbGlkIGhhcmR3YXJlX2tleWNvZGUgdmFsdWUKKyAgICAvLyBjYW4gY2F1c2UgaXQgdG8gYmUg
YmFkbHkgcHJvY2Vzc2VkIGJ5IEd0aysuCisgICAgR2RrS2V5bWFwS2V5KiBrZXlzOworICAgIGdp
bnQgbl9rZXlzOworICAgIGlmIChnZGtfa2V5bWFwX2dldF9lbnRyaWVzX2Zvcl9rZXl2YWwoZ2Rr
X2tleW1hcF9nZXRfZGVmYXVsdCgpLCBHREtfS0VZX2YsICZrZXlzLCAmbl9rZXlzKSkgeworICAg
ICAgICBwcmVzc0V2ZW50LT5rZXkuaGFyZHdhcmVfa2V5Y29kZSA9IGtleXNbMF0ua2V5Y29kZTsK
KyAgICAgICAgZ19mcmVlKGtleXMpOworICAgIH0KKworICAgIEdka0V2ZW50KiByZWxlYXNlRXZl
bnQgPSBnZGtfZXZlbnRfY29weShwcmVzc0V2ZW50KTsKKyAgICBndGtfbWFpbl9kb19ldmVudChw
cmVzc0V2ZW50KTsKKyAgICBnZGtfZXZlbnRfZnJlZShwcmVzc0V2ZW50KTsKKyAgICByZWxlYXNl
RXZlbnQtPmtleS50eXBlID0gR0RLX0tFWV9SRUxFQVNFOworICAgIGd0a19tYWluX2RvX2V2ZW50
KHJlbGVhc2VFdmVudCk7CisgICAgZ2RrX2V2ZW50X2ZyZWUocmVsZWFzZUV2ZW50KTsKKworICAg
IHJldHVybiBGQUxTRTsKK30KKwogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdDcmVhdGVSZWFkeUNs
b3NlKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICB0ZXN0LT5sb2Fk
SHRtbCgiPGh0bWw+PGJvZHkgb25Mb2FkPVwid2luZG93Lm9wZW4oKS5jbG9zZSgpO1wiPjwvaHRt
bD4iLCAwKTsKQEAgLTMwOCw2ICszNzMsNjEgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdDcmVh
dGVSZWFkeUNsb3NlKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fz
c2VydF9jbXBpbnQoZXZlbnRzWzJdLCA9PSwgVUlDbGllbnRUZXN0OjpDbG9zZSk7CiB9CiAKK3N0
YXRpYyB2b2lkIHRlc3RXZWJWaWV3RnVsbFNjcmVlbihVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCit7CisgICAgdGVzdC0+bV9mdWxsU2NyZWVuQWxsb3dlZCA9IFRSVUU7CisgICAg
dGVzdC0+bG9hZEh0bWwoIjxodG1sPjxib2R5PiIKKyAgICAgICAgICAgICAgICAgICAiPHNjcmlw
dD4iCisgICAgICAgICAgICAgICAgICAgInZhciBldmVudE5hbWUgPSAna2V5cHJlc3MnOyIKKyAg
ICAgICAgICAgICAgICAgICAiZnVuY3Rpb24gdGh1bmsoKSB7IgorICAgICAgICAgICAgICAgICAg
ICIgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIHRodW5rLCBmYWxz
ZSk7IgorICAgICAgICAgICAgICAgICAgICIgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lndl
YmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7IgorICAgICAgICAgICAgICAgICAgICJ9IgorICAgICAg
ICAgICAgICAgICAgICJkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdGh1bmss
IGZhbHNlKTsiCisgICAgICAgICAgICAgICAgICAgIjwvc2NyaXB0PjwvYm9keT48L2h0bWw+Iiwg
MCk7CisKKyAgICBHdGtXaWRnZXQqIHdpbmRvdzsKKyAgICB3aW5kb3cgPSBndGtfd2luZG93X25l
dyhHVEtfV0lORE9XX1BPUFVQKTsKKyAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVS
KHdpbmRvdyksIEdUS19XSURHRVQodGVzdC0+bV93ZWJWaWV3KSk7CisKKyAgICBndGtfd2lkZ2V0
X3Nob3dfYWxsKHdpbmRvdyk7CisgICAgZ190aW1lb3V0X2FkZCgxMDAsIChHU291cmNlRnVuYykg
ZW1pdEtleVN0cm9rZSwgdGVzdCk7CisKKyAgICB0ZXN0LT53YWl0VW50aWxNYWluTG9vcEZpbmlz
aGVzKCk7CisKKyAgICBWZWN0b3I8VUlDbGllbnRUZXN0OjpXZWJWaWV3RXZlbnRzPiYgZXZlbnRz
ID0gdGVzdC0+bV93ZWJWaWV3RXZlbnRzOworICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6
ZSgpLCA9PSwgMik7CisgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1swXSwgPT0sIFVJQ2xpZW50
VGVzdDo6RW50ZXJpbmdGdWxsU2NyZWVuKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzFd
LCA9PSwgVUlDbGllbnRUZXN0OjpMZWF2aW5nRnVsbFNjcmVlbik7Cit9CisKKworc3RhdGljIHZv
aWQgdGVzdFdlYlZpZXdGdWxsU2NyZWVuQmxvY2tlZChVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCit7CisgICAgdGVzdC0+bV9mdWxsU2NyZWVuQWxsb3dlZCA9IEZBTFNFOworICAg
IHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9keT4iCisgICAgICAgICAgICAgICAgICAgIjxzY3Jp
cHQ+IgorICAgICAgICAgICAgICAgICAgICJ2YXIgZXZlbnROYW1lID0gJ2tleXByZXNzJzsiCisg
ICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIHRodW5rKCkgeyIKKyAgICAgICAgICAgICAgICAg
ICAiICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aHVuaywgZmFs
c2UpOyIKKyAgICAgICAgICAgICAgICAgICAiICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC53
ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpOyIKKyAgICAgICAgICAgICAgICAgICAifSIKKyAgICAg
ICAgICAgICAgICAgICAiZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIHRodW5r
LCBmYWxzZSk7IgorICAgICAgICAgICAgICAgICAgICI8L3NjcmlwdD48L2JvZHk+PC9odG1sPiIs
IDApOworCisgICAgR3RrV2lkZ2V0KiB3aW5kb3c7CisgICAgd2luZG93ID0gZ3RrX3dpbmRvd19u
ZXcoR1RLX1dJTkRPV19QT1BVUCk7CisgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5F
Uih3aW5kb3cpLCBHVEtfV0lER0VUKHRlc3QtPm1fd2ViVmlldykpOworCisgICAgZ3RrX3dpZGdl
dF9zaG93X2FsbCh3aW5kb3cpOworICAgIGdfdGltZW91dF9hZGQoMTAwLCAoR1NvdXJjZUZ1bmMp
IGVtaXRLZXlTdHJva2UsIHRlc3QpOworCisgICAgdGVzdC0+d2FpdFVudGlsTWFpbkxvb3BGaW5p
c2hlcygpOworCisgICAgVmVjdG9yPFVJQ2xpZW50VGVzdDo6V2ViVmlld0V2ZW50cz4mIGV2ZW50
cyA9IHRlc3QtPm1fd2ViVmlld0V2ZW50czsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzLnNp
emUoKSwgPT0sIDApOworfQorCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0phdmFTY3JpcHREaWFs
b2dzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICBzdGF0aWMgY29u
c3QgY2hhciogaHRtbE9uTG9hZEZvcm1hdCA9ICI8aHRtbD48Ym9keSBvbkxvYWQ9XCIlc1wiPjwv
Ym9keT48L2h0bWw+IjsKQEAgLTM3Miw2ICs0OTIsOCBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAg
V2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJyZXBsYWNlLWNvbnRlbnQiLCB0ZXN0
V2ViVmlld1JlcGxhY2VDb250ZW50KTsKICAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2Vi
VmlldyIsICJjcmVhdGUtcmVhZHktY2xvc2UiLCB0ZXN0V2ViVmlld0NyZWF0ZVJlYWR5Q2xvc2Up
OwogICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImphdmFzY3JpcHQtZGlh
bG9ncyIsIHRlc3RXZWJWaWV3SmF2YVNjcmlwdERpYWxvZ3MpOworICAgIFVJQ2xpZW50VGVzdDo6
YWRkKCJXZWJLaXRXZWJWaWV3IiwgImZ1bGxzY3JlZW4iLCB0ZXN0V2ViVmlld0Z1bGxTY3JlZW4p
OworICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImZ1bGxzY3JlZW4tYmxv
Y2tlZCIsIHRlc3RXZWJWaWV3RnVsbFNjcmVlbkJsb2NrZWQpOwogICAgIFVJQ2xpZW50VGVzdDo6
YWRkKCJXZWJLaXRXZWJWaWV3IiwgIndpbmRvdy1wcm9wZXJ0aWVzIiwgdGVzdFdlYlZpZXdXaW5k
b3dQcm9wZXJ0aWVzKTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInpv
b20tbGV2ZWwiLCB0ZXN0V2ViVmlld1pvb21MZXZlbCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5saXN0IGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mm1hcnNoYWwubGlzdAppbmRleCA4OWMyNTBl
Li5iNzg3ZDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93
ZWJraXQybWFyc2hhbC5saXN0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3dlYmtpdDJtYXJzaGFsLmxpc3QKQEAgLTIsNiArMiw3IEBAIEJPT0xFQU46RU5VTSxTVFJJTkcs
UE9JTlRFUgogQk9PTEVBTjpTVFJJTkcKIEJPT0xFQU46U1RSSU5HLFBPSU5URVIKIEJPT0xFQU46
U1RSSU5HLFNUUklORyxQT0lOVEVSCitCT09MRUFOOlZPSUQKIE9CSkVDVDpWT0lECiBWT0lEOkVO
VU0KIFZPSUQ6T0JKRUNULFBPSU5URVIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9ndGsvRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9GdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5jcHAKaW5kZXggZjk1YWQ0
MC4uODQ3NDJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9GdWxs
U2NyZWVuV2luZG93Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9GdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5jcHAKQEAgLTc1LDYgKzc1LDExIEBAIHZv
aWQgRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXI6OmVudGVyRnVsbFNjcmVlbigpCiAgICAgaWYg
KG1fZnVsbFNjcmVlbkVuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAorICAgIGdib29sZWFuIHJl
dHVyblZhbHVlOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShXRUJLSVRfV0VCX1ZJRVcobV93
ZWJWaWV3QmFzZS5nZXQoKSksICJlbnRlcmluZy1mdWxsc2NyZWVuIiwgJnJldHVyblZhbHVlKTsK
KyAgICBpZiAoIXJldHVyblZhbHVlKQorICAgICAgICByZXR1cm47CisKICAgICB0aGlzLT5mdWxs
U2NyZWVuTWFuYWdlclByb3h5KCktPndpbGxFbnRlckZ1bGxTY3JlZW4oKTsKICAgICB0aGlzLT5m
dWxsU2NyZWVuTWFuYWdlclByb3h5KCktPmJlZ2luRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uKDEw
KTsKIApAQCAtOTIsNiArOTcsOSBAQCB2b2lkIEZ1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyOjpl
eGl0RnVsbFNjcmVlbigpCiAgICAgaWYgKCFtX2Z1bGxTY3JlZW5FbmFibGVkKQogICAgICAgICBy
ZXR1cm47CiAKKyAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKKyAgICBnX3NpZ25hbF9lbWl0X2J5
X25hbWUoV0VCS0lUX1dFQl9WSUVXKG1fd2ViVmlld0Jhc2UuZ2V0KCkpLCAibGVhdmluZy1mdWxs
c2NyZWVuIiwgJnJldHVyblZhbHVlKTsKKwogICAgIEd0a1dpZGdldCogdG9wTGV2ZWxXaW5kb3cg
PSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKG1fd2ViVmlld0Jhc2UuZ2V0KCkp
KTsKICAgICBpZiAoZ3RrX3dpZGdldF9pc190b3BsZXZlbCh0b3BMZXZlbFdpbmRvdykpCiAgICAg
ICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyh0b3BMZXZlbFdpbmRvdywg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob25GdWxsc2NyZWVuR3RrS2V5UHJlc3NFdmVudCksIHRo
aXMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDRjOTI5YmQuLjJjMWJhY2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0wMS0xMiAgUGhpbGlwcGUgTm9ybWFu
ZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dLMl1bR1RLXSBGdWxsU2NyZWVu
IHNpZ25hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc2MTY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXNlIHRoZSB0d28gbmV3IGVudGVyaW5nL2xlYXZpbmcgZnVsbHNjcmVlbiBzaWduYWxzIHRvIGhp
ZGUvc2hvdworICAgICAgICB0aGUgVVJMIGJhciBhbmQgYXNrIHRoZSB1c2VyJ3MgcGVybWlzc2lv
biBiZWZvcmUgZW50ZXJpbmcKKyAgICAgICAgZnVsbHNjcmVlbi4KKworICAgICAgICAqIE1pbmlC
cm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmM6CisgICAgICAgICh3ZWJWaWV3RnVsbHNjcmVlbk1l
c3NhZ2VXaW5kb3dDbG9zZSk6CisgICAgICAgICh3ZWJWaWV3V2luZG93U3RhdGVFdmVudCk6Cisg
ICAgICAgICh3ZWJWaWV3RW50ZXJpbmdGdWxsU2NyZWVuKToKKyAgICAgICAgKHdlYlZpZXdMZWF2
aW5nRnVsbFNjcmVlbik6CisgICAgICAgICh3ZWJWaWV3Q3JlYXRlKToKKyAgICAgICAgKGJyb3dz
ZXJXaW5kb3dDb25zdHJ1Y3RlZCk6CisKIDIwMTItMDEtMTIgIFZzZXZvbG9kIFZsYXNvdiAgPHZz
ZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViS2l0VGVzdFJ1bm5lciBzaG91bGQgbm90
IHByaW50IGNvbnNvbGUgbWVzc2FnZSBsaW5lIG51bWJlciB3aGVuIGl0IGlzIGVxdWFsIHRvIHpl
cm8uCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jIGIv
VG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYwppbmRleCBlMDRhYjBiLi5hNjE3
NjQ3IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCisr
KyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKQEAgLTQ1LDcgKzQ1LDYg
QEAgc3RydWN0IF9Ccm93c2VyV2luZG93IHsKICAgICBHdGtXaWRnZXQgKnN0YXR1c0xhYmVsOwog
ICAgIEd0a1dpZGdldCAqc2V0dGluZ3NEaWFsb2c7CiAgICAgV2ViS2l0V2ViVmlldyAqd2ViVmll
dzsKLQogfTsKIAogc3RydWN0IF9Ccm93c2VyV2luZG93Q2xhc3MgewpAQCAtMjE4LDYgKzIxNyw1
NSBAQCBzdGF0aWMgdm9pZCB3ZWJWaWV3UmVhZHlUb1Nob3coV2ViS2l0V2ViVmlldyAqd2ViVmll
dywgQnJvd3NlcldpbmRvdyAqd2luZG93KQogICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VU
KHdpbmRvdykpOwogfQogCitzdGF0aWMgZ2Jvb2xlYW4gd2ViVmlld0Z1bGxzY3JlZW5NZXNzYWdl
V2luZG93Q2xvc2UoR3RrV2lkZ2V0ICpkaWFsb2cpCit7CisgICAgaWYgKEdUS19JU19XSURHRVQg
KGRpYWxvZykpCisgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSAoR1RLX0RJQUxPRyAoZGlh
bG9nKSwgImNsb3NlIik7CisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4g
d2ViVmlld1dpbmRvd1N0YXRlRXZlbnQoR3RrV2lkZ2V0ICp3aWRnZXQsIEdka0V2ZW50V2luZG93
U3RhdGUgKmV2ZW50LCBCcm93c2VyV2luZG93ICp3aW5kb3cpCit7CisgICAgaWYgKGV2ZW50LT5u
ZXdfd2luZG93X3N0YXRlICYgR0RLX1dJTkRPV19TVEFURV9GVUxMU0NSRUVOKSB7CisgICAgICAg
IGNvbnN0IGdjaGFyICp1cmkgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSAod2luZG93LT53ZWJW
aWV3KTsKKyAgICAgICAgR3RrV2lkZ2V0ICpkaWFsb2cgPSBndGtfbWVzc2FnZV9kaWFsb2dfbmV3
IChHVEtfV0lORE9XICh3aW5kb3cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdUS19ESUFMT0dfTU9EQUwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX01FU1NBR0VfSU5GTywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfQlVUVE9O
U19DTE9TRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiJXMgaXMgbm93IGZ1bGwgc2NyZWVuLiBQcmVzcyBFU0Mgb3IgZiB0byBleGl0LiIsIHVy
aSk7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZCAoZGlhbG9nLCAicmVzcG9uc2Ui
LCBHX0NBTExCQUNLIChndGtfd2lkZ2V0X2Rlc3Ryb3kpLCBkaWFsb2cpOworICAgICAgICBnX3Rp
bWVvdXRfYWRkICgxNTAwLCAoR1NvdXJjZUZ1bmMpIHdlYlZpZXdGdWxsc2NyZWVuTWVzc2FnZVdp
bmRvd0Nsb3NlLCBkaWFsb2cpOworICAgICAgICBndGtfZGlhbG9nX3J1biAoR1RLX0RJQUxPRyAo
ZGlhbG9nKSk7CisgICAgfQorICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4g
d2ViVmlld0VudGVyaW5nRnVsbFNjcmVlbihXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBCcm93c2Vy
V2luZG93ICp3aW5kb3cpCit7CisgICAgY29uc3QgZ2NoYXIgKnVyaSA9IHdlYmtpdF93ZWJfdmll
d19nZXRfdXJpICh3aW5kb3ctPndlYlZpZXcpOworICAgIEd0a1dpZGdldCogZGlhbG9nID0gZ3Rr
X21lc3NhZ2VfZGlhbG9nX25ldyAoR1RLX1dJTkRPVyAod2luZG93KSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19ESUFMT0dfTU9EQUwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfTUVTU0FHRV9J
TkZPLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RL
X0JVVFRPTlNfWUVTX05PLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkFsbG93IGZ1bGwgc2NyZWVuIGRpc3BsYXkgb2YgJXMgPyIsIHVyaSk7CisgICAg
Z2ludCByZXN1bHQgPSBndGtfZGlhbG9nX3J1biAoR1RLX0RJQUxPRyAoZGlhbG9nKSk7CisgICAg
aWYgKHJlc3VsdCA9PSBHVEtfUkVTUE9OU0VfWUVTKSB7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5l
Y3QoR1RLX1dJREdFVCAod2luZG93KSwgIndpbmRvdy1zdGF0ZS1ldmVudCIsIEdfQ0FMTEJBQ0so
d2ViVmlld1dpbmRvd1N0YXRlRXZlbnQpLCB3aW5kb3cpOworICAgICAgICBndGtfd2lkZ2V0X2hp
ZGUgKHdpbmRvdy0+dG9vbGJhcik7CisgICAgICAgIGd0a193aWRnZXRfZGVzdHJveShHVEtfV0lE
R0VUIChkaWFsb2cpKTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorICAgIGd0a193aWRn
ZXRfZGVzdHJveShHVEtfV0lER0VUIChkaWFsb2cpKTsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisK
K3N0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3TGVhdmluZ0Z1bGxTY3JlZW4oV2ViS2l0V2ViVmlldyAq
d2ViVmlldywgQnJvd3NlcldpbmRvdyAqd2luZG93KQoreworICAgIGd0a193aWRnZXRfc2hvdyh3
aW5kb3ctPnRvb2xiYXIpOworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVu
YyhHVEtfV0lER0VUKHdpbmRvdyksIEdfQ0FMTEJBQ0sod2ViVmlld1dpbmRvd1N0YXRlRXZlbnQp
LCB3aW5kb3cpOworICAgIHJldHVybiBUUlVFOworfQorCiBzdGF0aWMgR3RrV2lkZ2V0ICp3ZWJW
aWV3Q3JlYXRlKFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykK
IHsKICAgICBXZWJLaXRXZWJWaWV3ICpuZXdXZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtp
dF93ZWJfdmlld19uZXdfd2l0aF9jb250ZXh0KHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh3
ZWJWaWV3KSkpOwpAQCAtMjI2LDYgKzI3NCw4IEBAIHN0YXRpYyBHdGtXaWRnZXQgKndlYlZpZXdD
cmVhdGUoV2ViS2l0V2ViVmlldyAqd2ViVmlldywgQnJvd3NlcldpbmRvdyAqd2luZG93KQogICAg
IEd0a1dpZGdldCAqbmV3V2luZG93ID0gYnJvd3Nlcl93aW5kb3dfbmV3KG5ld1dlYlZpZXcpOwog
ICAgIGdfc2lnbmFsX2Nvbm5lY3QobmV3V2ViVmlldywgInJlYWR5LXRvLXNob3ciLCBHX0NBTExC
QUNLKHdlYlZpZXdSZWFkeVRvU2hvdyksIG5ld1dpbmRvdyk7CiAgICAgZ19zaWduYWxfY29ubmVj
dChuZXdXZWJWaWV3LCAiY2xvc2UiLCBHX0NBTExCQUNLKHdlYlZpZXdDbG9zZSksIG5ld1dpbmRv
dyk7CisgICAgZ19zaWduYWxfY29ubmVjdChuZXdXZWJWaWV3LCAiZW50ZXJpbmctZnVsbHNjcmVl
biIsIEdfQ0FMTEJBQ0sod2ViVmlld0VudGVyaW5nRnVsbFNjcmVlbiksIG5ld1dpbmRvdyk7Cisg
ICAgZ19zaWduYWxfY29ubmVjdChuZXdXZWJWaWV3LCAibGVhdmluZy1mdWxsc2NyZWVuIiwgR19D
QUxMQkFDSyh3ZWJWaWV3TGVhdmluZ0Z1bGxTY3JlZW4pLCBuZXdXaW5kb3cpOwogICAgIHJldHVy
biBHVEtfV0lER0VUKG5ld1dlYlZpZXcpOwogfQogCkBAIC0zMzMsNiArMzgzLDggQEAgc3RhdGlj
IHZvaWQgYnJvd3NlcldpbmRvd0NvbnN0cnVjdGVkKEdPYmplY3QgKmdPYmplY3QpCiAgICAgZ19z
aWduYWxfY29ubmVjdCh3aW5kb3ctPndlYlZpZXcsICJub3RpZnk6OnRpdGxlIiwgR19DQUxMQkFD
Syh3ZWJWaWV3VGl0bGVDaGFuZ2VkKSwgd2luZG93KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdp
bmRvdy0+d2ViVmlldywgImNyZWF0ZSIsIEdfQ0FMTEJBQ0sod2ViVmlld0NyZWF0ZSksIHdpbmRv
dyk7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3aW5kb3ctPndlYlZpZXcsICJsb2FkLWZhaWxlZCIs
IEdfQ0FMTEJBQ0sod2ViVmlld0xvYWRGYWlsZWQpLCB3aW5kb3cpOworICAgIGdfc2lnbmFsX2Nv
bm5lY3Qod2luZG93LT53ZWJWaWV3LCAiZW50ZXJpbmctZnVsbHNjcmVlbiIsIEdfQ0FMTEJBQ0so
d2ViVmlld0VudGVyaW5nRnVsbFNjcmVlbiksIHdpbmRvdyk7CisgICAgZ19zaWduYWxfY29ubmVj
dCh3aW5kb3ctPndlYlZpZXcsICJsZWF2aW5nLWZ1bGxzY3JlZW4iLCBHX0NBTExCQUNLKHdlYlZp
ZXdMZWF2aW5nRnVsbFNjcmVlbiksIHdpbmRvdyk7CiAKICAgICBXZWJLaXRCYWNrRm9yd2FyZExp
c3QgKmJhY2tGb3J3YWRsaXN0ID0gd2Via2l0X3dlYl92aWV3X2dldF9iYWNrX2ZvcndhcmRfbGlz
dCh3aW5kb3ctPndlYlZpZXcpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QoYmFja0ZvcndhZGxpc3Qs
ICJjaGFuZ2VkIiwgR19DQUxMQkFDSyhiYWNrRm9yd2FkbGlzdENoYW5nZWQpLCB3aW5kb3cpOwot
LSAKMS43LjguMw==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124730</attachid>
            <date>2012-01-31 07:41:45 -0800</date>
            <delta_ts>2012-02-01 10:55:18 -0800</delta_ts>
            <desc>FullScreen signals</desc>
            <filename>FullScreen-signals.patch</filename>
            <type>text/plain</type>
            <size>22224</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAxYTBlZmViZTQzZTI5NDEwY2UxOThhNTk1OTk3OGM4YmI1ZDlhZGU3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDMxIEphbiAyMDEyIDE2OjQxOjQ2ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
RnVsbFNjcmVlbiBzaWduYWxzCgotLS0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAzMSArKysrKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgfCAgIDY4ICsrKysrKysrKysrCiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggICB8ICAgIDIgKwogLi4uL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmggICAgICAgfCAgICAzICstCiAu
Li4vVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwICB8ICAxMjQg
KysrKysrKysrKysrKysrKysrKy0KIC4uLi9VSVByb2Nlc3MvZ3RrL0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyLmNwcCAgIHwgICAgOCArKwogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgIDE5ICsrKwogVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jy
b3dzZXJXaW5kb3cuYyAgICAgICAgICAgICAgfCAgIDU0ICsrKysrKysrKy0KIDggZmlsZXMgY2hh
bmdlZCwgMzA2IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDE0
NDg2MTUuLmQ5MDA4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzNiBAQAogMjAxMi0wMS0zMSAg
UGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW1dLMl1b
R1RLXSBGdWxsU2NyZWVuIHNpZ25hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc2MTY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkZWQgZW50ZXJpbmctZnVsbHNjcmVlbiBhbmQgbGVhdmluZy1mdWxs
c2NyZWVuIHNpZ25hbHMsIG1lYW50IHRvCisgICAgICAgIGJlIHVzZWQgYnkgdGhlIHVzZXIgYWdl
bnQgdG8gYmUgbm90aWZpZWQgd2hlbiBhbiBlbGVtZW50IHJlcXVlc3RzCisgICAgICAgIGZ1bGwg
c2NyZWVuIGRpc3BsYXkgYW5kIHdoZW4gdGhlIGZ1bGwgc2NyZWVuIGRpc3BsYXkgaXMgdG8gYmUK
KyAgICAgICAgZGlzYWJsZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAg
ICAgKHdlYmtpdFdlYlZpZXdFbnRlcmluZ0Z1bGxTY3JlZW4pOgorICAgICAgICAod2Via2l0V2Vi
Vmlld0xlYXZpbmdGdWxsU2NyZWVuKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1By
aXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2Vi
Vmlldy5jcHA6CisgICAgICAgIChXaW5kb3dQcm9wZXJ0aWVzOjplbnRlcmluZ0Z1bGxTY3JlZW4p
OgorICAgICAgICAoV2luZG93UHJvcGVydGllczo6bGVhdmluZ0Z1bGxTY3JlZW4pOgorICAgICAg
ICAoV2luZG93UHJvcGVydGllczo6VUlDbGllbnRUZXN0KToKKyAgICAgICAgKGVtaXRLZXlTdHJv
a2UpOgorICAgICAgICAodGVzdFdlYlZpZXdGdWxsU2NyZWVuKToKKyAgICAgICAgKHRlc3RXZWJW
aWV3RnVsbFNjcmVlbkJsb2NrZWQpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5saXN0OgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoRnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXI6OmVudGVyRnVsbFNjcmVlbik6CisgICAgICAgIChGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlcjo6ZXhpdEZ1bGxTY3JlZW4pOgorCisyMDEyLTAxLTMxICBQaGlsaXBw
ZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKwogICAgICAgICBbR1RLXVtXSzJdIElu
aXRpYWwgRnVsbFNjcmVlbiBzdXBwb3J0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NTU1MwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IGU4YmNhZWUuLjM5NzIzMjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3Bw
CkBAIC01OCw2ICs1OCw5IEBAIGVudW0gewogCiAgICAgREVDSURFX1BPTElDWSwKIAorICAgIEVO
VEVSSU5HX0ZVTExTQ1JFRU4sCisgICAgTEVBVklOR19GVUxMU0NSRUVOLAorCiAgICAgTEFTVF9T
SUdOQUwKIH07CiAKQEAgLTI1NCw2ICsyNTcsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3Zp
ZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICB3ZWJW
aWV3Q2xhc3MtPnNjcmlwdF9jb25maXJtID0gd2Via2l0V2ViVmlld1NjcmlwdENvbmZpcm07CiAg
ICAgd2ViVmlld0NsYXNzLT5zY3JpcHRfcHJvbXB0ID0gd2Via2l0V2ViVmlld1NjcmlwdFByb21w
dDsKICAgICB3ZWJWaWV3Q2xhc3MtPmRlY2lkZV9wb2xpY3kgPSB3ZWJraXRXZWJWaWV3RGVjaWRl
UG9saWN5OworICAgIHdlYlZpZXdDbGFzcy0+ZW50ZXJpbmdfZnVsbHNjcmVlbiA9IHdlYmtpdFdl
YlZpZXdFbnRlcmluZ0Z1bGxTY3JlZW47CisgICAgd2ViVmlld0NsYXNzLT5sZWF2aW5nX2Z1bGxz
Y3JlZW4gPSB3ZWJraXRXZWJWaWV3TGVhdmluZ0Z1bGxTY3JlZW47CiAKICAgICBnX3R5cGVfY2xh
c3NfYWRkX3ByaXZhdGUod2ViVmlld0NsYXNzLCBzaXplb2YoV2ViS2l0V2ViVmlld1ByaXZhdGUp
KTsKIApAQCAtNjEyLDYgKzYxNyw1NSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xh
c3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgICAgICAgICAg
ICAgICAgIEdfVFlQRV9CT09MRUFOLCAyLCAvKiBudW1iZXIgb2YgcGFyYW1ldGVycyAqLwogICAg
ICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZUEVfUE9MSUNZX0RFQ0lTSU9OLAogICAgICAgICAg
ICAgICAgICAgICAgV0VCS0lUX1RZUEVfUE9MSUNZX0RFQ0lTSU9OX1RZUEUpOworCisgICAgLyoq
CisgICAgICogV2ViS2l0V2ViVmlldzo6ZW50ZXJpbmctZnVsbHNjcmVlbjoKKyAgICAgKiBAd2Vi
X3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQK
KyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiBKYXZhU2NyaXB0IGNvZGUgY2FsbHMKKyAgICAg
KiA8ZnVuY3Rpb24+ZWxlbWVudC53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbjwvZnVuY3Rpb24+LiBJ
ZiB0aGUKKyAgICAgKiBzaWduYWwgaXMgbm90IGhhbmRsZWQgdGhlIFdlYlZpZXcgd2lsbCBwcm9j
ZWVkIHRvIGZ1bGwgc2NyZWVuCisgICAgICogaXRzIHRvcCBsZXZlbCB3aW5kb3cuIFRoaXMgc2ln
bmFsIGNhbiBiZSB1c2VkIGJ5IGNsaWVudCBjb2RlIHRvCisgICAgICogcmVxdWVzdCBwZXJtaXNz
aW9uIHRvIHRoZSB1c2VyIHByaW9yIGRvaW5nIHRoZSBmdWxsIHNjcmVlbgorICAgICAqIHRyYW5z
aXRpb24gYW5kIGV2ZW50dWFsbHkgcHJlcGFyZSB0aGUgdG9wLWxldmVsIHdpbmRvdworICAgICAq
IChlLmcuIGhpZGUgc29tZSB3aWRnZXRzIHRoYXQgd291bGQgb3RoZXJ3aXNlIGJlIHBhcnQgb2Yg
dGhlCisgICAgICogZnVsbCBzY3JlZW4gd2luZG93KS4KKworICAgICAqIFJldHVybnM6ICVUUlVF
IHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMgZnJvbSBiZWluZyBpbnZva2VkIGZvciB0aGUgZXZlbnQu
CisgICAgICogICAgJUZBTFNFIHRvIGJsb2NrIHRoZSBldmVudC4KKyAgICAgKi8KKyAgICBzaWdu
YWxzW0VOVEVSSU5HX0ZVTExTQ1JFRU5dID0KKyAgICAgICAgICAgIGdfc2lnbmFsX25ldygiZW50
ZXJpbmctZnVsbHNjcmVlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0ZST01f
Q0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHX1NJR05BTF9S
VU5fTEFTVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0
V2ViVmlld0NsYXNzLCBlbnRlcmluZ19mdWxsc2NyZWVuKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl9maXJzdF93aW5zLCAwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX1ZPSUQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDApOworCisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRX
ZWJWaWV3OjpsZWF2aW5nLWZ1bGxzY3JlZW46CisgICAgICogQHdlYl92aWV3OiB0aGUgI1dlYktp
dFdlYlZpZXcgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICoKKyAgICAgKiBF
bWl0dGVkIHdoZW4gdGhlIFdlYlZpZXcgaXMgYWJvdXQgdG8gcmVzdG9yZSBpdHMgdG9wIGxldmVs
CisgICAgICogd2luZG93IG91dCBvZiBpdHMgZnVsbCBzY3JlZW4gc3RhdGUuIFRoaXMgc2lnbmFs
IGNhbiBiZSB1c2VkIGJ5CisgICAgICogY2xpZW50IGNvZGUgdG8gcmVzdG9yZSB3aWRnZXRzIGhp
ZGRlbiBkdXJpbmcgdGhlCisgICAgICogZW50ZXJpbmctZnVsbHNjcmVlbiBzdGFnZSBmb3IgaW5z
dGFuY2UuCisKKyAgICAgKiBSZXR1cm5zOiAlVFJVRSB0byBzdG9wIG90aGVyIGhhbmRsZXJzIGZy
b20gYmVpbmcgaW52b2tlZCBmb3IgdGhlIGV2ZW50LgorICAgICAqICAgICVGQUxTRSB0byBwcm9w
YWdhdGUgdGhlIGV2ZW50IGZ1cnRoZXIuCisgICAgICovCisgICAgc2lnbmFsc1tMRUFWSU5HX0ZV
TExTQ1JFRU5dID0KKyAgICAgICAgICAgIGdfc2lnbmFsX25ldygibGVhdmluZy1mdWxsc2NyZWVu
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xh
c3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAg
ICAgICAgICAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIGxl
YXZpbmdfZnVsbHNjcmVlbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgZ19zaWduYWxfYWNj
dW11bGF0b3JfZmlyc3Rfd2lucywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJraXRf
bWFyc2hhbF9CT09MRUFOX19WT0lELAorICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9C
T09MRUFOLCAwKTsKKworCiB9CiAKIHZvaWQgd2Via2l0V2ViVmlld0xvYWRDaGFuZ2VkKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdExvYWRFdmVudCBsb2FkRXZlbnQpCkBAIC03MjMsNiAr
Nzc3LDIwIEBAIHZvaWQgd2Via2l0V2ViVmlld01ha2VQb2xpY3lEZWNpc2lvbihXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3LCBXZWJLaXRQb2xpY3lEZWNpc2lvCiAgICAgZ19zaWduYWxfZW1pdCh3ZWJW
aWV3LCBzaWduYWxzW0RFQ0lERV9QT0xJQ1ldLCAwLCBkZWNpc2lvbiwgdHlwZSwgJnJldHVyblZh
bHVlKTsKIH0KIAorZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0VudGVyaW5nRnVsbFNjcmVlbihXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGdib29sZWFuIHJldHVyblZhbHVlOworICAgIGdf
c2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tFTlRFUklOR19GVUxMU0NSRUVOXSwgMCwgJnJl
dHVyblZhbHVlKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK2dib29sZWFuIHdlYmtp
dFdlYlZpZXdMZWF2aW5nRnVsbFNjcmVlbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAg
IGdib29sZWFuIHJldHVyblZhbHVlOworICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFs
c1tMRUFWSU5HX0ZVTExTQ1JFRU5dLCAwLCAmcmV0dXJuVmFsdWUpOworICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKK30KKwogLyoqCiAgKiB3ZWJraXRfd2ViX3ZpZXdfbmV3OgogICoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCA2OTdm
Y2RjLi5mOThiZDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5oCkBAIC0xMzksNiArMTM5LDggQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3
Q2xhc3MgewogICAgIGdib29sZWFuICAgKCogZGVjaWRlX3BvbGljeSkgIChXZWJLaXRXZWJWaWV3
ICAgICAgICAgICAgICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViS2l0UG9saWN5RGVjaXNpb24gICAgICAqZGVjaXNpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdFBvbGljeURlY2lzaW9uVHlwZSAgdHlwZSk7CisgICAg
Z2Jvb2xlYW4gICAoKiBlbnRlcmluZ19mdWxsc2NyZWVuKSAgKFdlYktpdFdlYlZpZXcgICp3ZWJf
dmlldyk7CisgICAgZ2Jvb2xlYW4gICAoKiBsZWF2aW5nX2Z1bGxzY3JlZW4pICAoV2ViS2l0V2Vi
VmlldyAgKndlYl92aWV3KTsKIAogICAgIC8qIFBhZGRpbmcgZm9yIGZ1dHVyZSBleHBhbnNpb24g
Ki8KICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCmlu
ZGV4IDY2Mzg2ZDAuLmI4NjM4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaApAQCAtNDMsNSArNDMsNiBAQCB2
b2lkIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0QWxlcnQoV2ViS2l0V2ViVmlldyosIGNvbnN0
IENTdHJpbmcmIG1lc3NhZ2UpOwogYm9vbCB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdENvbmZp
cm0oV2ViS2l0V2ViVmlldyosIGNvbnN0IENTdHJpbmcmIG1lc3NhZ2UpOwogV0tTdHJpbmdSZWYg
d2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRQcm9tcHQoV2ViS2l0V2ViVmlldyosIGNvbnN0IENT
dHJpbmcmIG1lc3NhZ2UsIGNvbnN0IENTdHJpbmcmIGRlZmF1bHRUZXh0KTsKIHZvaWQgd2Via2l0
V2ViVmlld01ha2VQb2xpY3lEZWNpc2lvbihXZWJLaXRXZWJWaWV3KiwgV2ViS2l0UG9saWN5RGVj
aXNpb25UeXBlLCBXZWJLaXRQb2xpY3lEZWNpc2lvbiopOwotCitnYm9vbGVhbiB3ZWJraXRXZWJW
aWV3RW50ZXJpbmdGdWxsU2NyZWVuKFdlYktpdFdlYlZpZXcqKTsKK2dib29sZWFuIHdlYmtpdFdl
YlZpZXdMZWF2aW5nRnVsbFNjcmVlbihXZWJLaXRXZWJWaWV3Kik7CiAjZW5kaWYgLy8gV2ViS2l0
V2ViVmlld1ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IDE2Mzc1ZWQuLjM1
MzI3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3Rz
L1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKQEAgLTIyLDYgKzIyLDggQEAKICNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8Z2RrL2dkay5oPgorI2lu
Y2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RGVmYXVs
dENvbnRleHQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CkBAIC04NywxMSAr
ODksMTQgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdSZXBsYWNlQ29udGVudChXZWJWaWV3VGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWlu
TG9vcCk7CiB9CiAKKwogc3RhdGljIGNvbnN0IGNoYXIqIGtBbGVydERpYWxvZ01lc3NhZ2UgPSAi
V2ViS2l0R1RLKyBhbGVydCBkaWFsb2cgbWVzc2FnZSI7CiBzdGF0aWMgY29uc3QgY2hhcioga0Nv
bmZpcm1EaWFsb2dNZXNzYWdlID0gIldlYktpdEdUSysgY29uZmlybSBkaWFsb2cgbWVzc2FnZSI7
CiBzdGF0aWMgY29uc3QgY2hhcioga1Byb21wdERpYWxvZ01lc3NhZ2UgPSAiV2ViS2l0R1RLKyBw
cm9tcHQgZGlhbG9nIG1lc3NhZ2UiOwogc3RhdGljIGNvbnN0IGNoYXIqIGtQcm9tcHREaWFsb2dS
ZXR1cm5lZFRleHQgPSAiV2ViS2l0R1RLKyBwcm9tcHQgZGlhbG9nIHJldHVybmVkIHRleHQiOwog
CitzdGF0aWMgZ2Jvb2xlYW4gZW1pdEtleVN0cm9rZShncG9pbnRlciBkYXRhKTsKKwogY2xhc3Mg
VUlDbGllbnRUZXN0OiBwdWJsaWMgV2ViVmlld1Rlc3QgewogcHVibGljOgogICAgIE1BS0VfR0xJ
Ql9URVNUX0ZJWFRVUkUoVUlDbGllbnRUZXN0KTsKQEAgLTk5LDcgKzEwNCw5IEBAIHB1YmxpYzoK
ICAgICBlbnVtIFdlYlZpZXdFdmVudHMgewogICAgICAgICBDcmVhdGUsCiAgICAgICAgIFJlYWR5
VG9TaG93LAotICAgICAgICBDbG9zZQorICAgICAgICBDbG9zZSwKKyAgICAgICAgRW50ZXJpbmdG
dWxsU2NyZWVuLAorICAgICAgICBMZWF2aW5nRnVsbFNjcmVlbgogICAgIH07CiAKICAgICBlbnVt
IFNjcmlwdFR5cGUgewpAQCAtMjYzLDE1ICsyNzAsMzkgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gVFJVRTsKICAgICB9CiAKKworICAgIHN0YXRpYyBnYm9vbGVhbiBlbnRlcmluZ0Z1bGxTY3Jl
ZW4oV2ViS2l0V2ViVmlldyosIFVJQ2xpZW50VGVzdCogdGVzdCkKKyAgICB7CisgICAgICAgIGlm
ICh0ZXN0LT5tX2Z1bGxTY3JlZW5BbGxvd2VkKSB7CisgICAgICAgICAgICB0ZXN0LT5tX3dlYlZp
ZXdFdmVudHMuYXBwZW5kKEVudGVyaW5nRnVsbFNjcmVlbik7CisgICAgICAgICAgICBnX3RpbWVv
dXRfYWRkKDIwMCwgKEdTb3VyY2VGdW5jKSBlbWl0S2V5U3Ryb2tlLCB0ZXN0KTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIGd0a193aWRnZXRfZGVzdHJveShndGtfd2lkZ2V0X2dldF90
b3BsZXZlbChHVEtfV0lER0VUKHRlc3QtPm1fd2ViVmlldykpKTsKKyAgICAgICAgICAgIGdfbWFp
bl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IHRlc3QtPm1fZnVsbFNjcmVlbkFsbG93ZWQ7CisgICAgfQorCisgICAgc3RhdGljIGdib29sZWFu
IGxlYXZpbmdGdWxsU2NyZWVuKFdlYktpdFdlYlZpZXcqLCBVSUNsaWVudFRlc3QqIHRlc3QpCisg
ICAgeworICAgICAgICB0ZXN0LT5tX3dlYlZpZXdFdmVudHMuYXBwZW5kKExlYXZpbmdGdWxsU2Ny
ZWVuKTsKKyAgICAgICAgZ3RrX3dpZGdldF9kZXN0cm95KGd0a193aWRnZXRfZ2V0X3RvcGxldmVs
KEdUS19XSURHRVQodGVzdC0+bV93ZWJWaWV3KSkpOworICAgICAgICBnX21haW5fbG9vcF9xdWl0
KHRlc3QtPm1fbWFpbkxvb3ApOworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKICAgICBV
SUNsaWVudFRlc3QoKQogICAgICAgICA6IG1fc2NyaXB0VHlwZShBbGVydCkKICAgICAgICAgLCBt
X3NjcmlwdERpYWxvZ0NvbmZpcm1lZCh0cnVlKQogICAgIHsKICAgICAgICAgd2Via2l0X3NldHRp
bmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSh3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3NldHRpbmdzKG1fd2ViVmlldyksIFRSVUUpOworICAgICAgICB3ZWJraXRf
c2V0dGluZ3Nfc2V0X2VuYWJsZV9mdWxsc2NyZWVuKHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGlu
Z3MobV93ZWJWaWV3KSwgVFJVRSk7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3
LCAiY3JlYXRlIiwgR19DQUxMQkFDSyh2aWV3Q3JlYXRlKSwgdGhpcyk7CiAgICAgICAgIGdfc2ln
bmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAic2NyaXB0LWFsZXJ0IiwgR19DQUxMQkFDSyhzY3JpcHRB
bGVydCksIHRoaXMpOwogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgInNjcmlw
dC1jb25maXJtIiwgR19DQUxMQkFDSyhzY3JpcHRDb25maXJtKSwgdGhpcyk7CiAgICAgICAgIGdf
c2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAic2NyaXB0LXByb21wdCIsIEdfQ0FMTEJBQ0soc2Ny
aXB0UHJvbXB0KSwgdGhpcyk7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAi
ZW50ZXJpbmctZnVsbHNjcmVlbiIsIEdfQ0FMTEJBQ0soZW50ZXJpbmdGdWxsU2NyZWVuKSwgdGhp
cyk7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAibGVhdmluZy1mdWxsc2Ny
ZWVuIiwgR19DQUxMQkFDSyhsZWF2aW5nRnVsbFNjcmVlbiksIHRoaXMpOwogICAgIH0KIAogICAg
IH5VSUNsaWVudFRlc3QoKQpAQCAtMjk0LDggKzMyNSw0MiBAQCBwdWJsaWM6CiAgICAgYm9vbCBt
X3NjcmlwdERpYWxvZ0NvbmZpcm1lZDsKICAgICBXaW5kb3dQcm9wZXJ0aWVzIG1fd2luZG93UHJv
cGVydGllczsKICAgICBIYXNoU2V0PFdURjo6U3RyaW5nPiBtX3dpbmRvd1Byb3BlcnRpZXNDaGFu
Z2VkOworICAgIGJvb2wgbV9mdWxsU2NyZWVuQWxsb3dlZDsKIH07CiAKK3N0YXRpYyBnYm9vbGVh
biBlbWl0S2V5U3Ryb2tlKGdwb2ludGVyIGRhdGEpCit7CisgICAgVUlDbGllbnRUZXN0KiB0ZXN0
ID0gKFVJQ2xpZW50VGVzdCopIGRhdGE7CisKKyAgICAvLyBjcmVhdGUgYW5kIHNlbmQgdGhlIGV2
ZW50CisgICAgR2RrRXZlbnQqIHByZXNzRXZlbnQgPSBnZGtfZXZlbnRfbmV3KEdES19LRVlfUFJF
U1MpOworICAgIHByZXNzRXZlbnQtPmtleS5rZXl2YWwgPSBHREtfS0VZX2Y7CisgICAgR2RrV2lu
ZG93KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3coR1RLX1dJREdFVCh0ZXN0LT5tX3dl
YlZpZXcpKTsKKyAgICBwcmVzc0V2ZW50LT5rZXkud2luZG93ID0gd2luZG93OworICAgIGdfb2Jq
ZWN0X3JlZihwcmVzc0V2ZW50LT5rZXkud2luZG93KTsKKworICAgIEdka0RldmljZU1hbmFnZXIq
IG1hbmFnZXIgPSBnZGtfZGlzcGxheV9nZXRfZGV2aWNlX21hbmFnZXIoZ2RrX3dpbmRvd19nZXRf
ZGlzcGxheSh3aW5kb3cpKTsKKyAgICBnZGtfZXZlbnRfc2V0X2RldmljZShwcmVzc0V2ZW50LCBn
ZGtfZGV2aWNlX21hbmFnZXJfZ2V0X2NsaWVudF9wb2ludGVyKG1hbmFnZXIpKTsKKworICAgIC8v
IFdoZW4gc3ludGhlc2l6aW5nIGFuIGV2ZW50LCBhbiBpbnZhbGlkIGhhcmR3YXJlX2tleWNvZGUg
dmFsdWUKKyAgICAvLyBjYW4gY2F1c2UgaXQgdG8gYmUgYmFkbHkgcHJvY2Vzc2VkIGJ5IEd0aysu
CisgICAgR2RrS2V5bWFwS2V5KiBrZXlzOworICAgIGdpbnQgbl9rZXlzOworICAgIGlmIChnZGtf
a2V5bWFwX2dldF9lbnRyaWVzX2Zvcl9rZXl2YWwoZ2RrX2tleW1hcF9nZXRfZGVmYXVsdCgpLCBH
REtfS0VZX2YsICZrZXlzLCAmbl9rZXlzKSkgeworICAgICAgICBwcmVzc0V2ZW50LT5rZXkuaGFy
ZHdhcmVfa2V5Y29kZSA9IGtleXNbMF0ua2V5Y29kZTsKKyAgICAgICAgZ19mcmVlKGtleXMpOwor
ICAgIH0KKworICAgIEdka0V2ZW50KiByZWxlYXNlRXZlbnQgPSBnZGtfZXZlbnRfY29weShwcmVz
c0V2ZW50KTsKKyAgICBndGtfbWFpbl9kb19ldmVudChwcmVzc0V2ZW50KTsKKyAgICBnZGtfZXZl
bnRfZnJlZShwcmVzc0V2ZW50KTsKKyAgICByZWxlYXNlRXZlbnQtPmtleS50eXBlID0gR0RLX0tF
WV9SRUxFQVNFOworICAgIGd0a19tYWluX2RvX2V2ZW50KHJlbGVhc2VFdmVudCk7CisgICAgZ2Rr
X2V2ZW50X2ZyZWUocmVsZWFzZUV2ZW50KTsKKworICAgIHJldHVybiBGQUxTRTsKK30KKwogc3Rh
dGljIHZvaWQgdGVzdFdlYlZpZXdDcmVhdGVSZWFkeUNsb3NlKFVJQ2xpZW50VGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKIHsKICAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGJvZHkgb25Mb2Fk
PVwid2luZG93Lm9wZW4oKS5jbG9zZSgpO1wiPjwvaHRtbD4iLCAwKTsKQEAgLTMwOCw2ICszNzMs
NjEgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdDcmVhdGVSZWFkeUNsb3NlKFVJQ2xpZW50VGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzJdLCA9
PSwgVUlDbGllbnRUZXN0OjpDbG9zZSk7CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RnVs
bFNjcmVlbihVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgdGVzdC0+
bV9mdWxsU2NyZWVuQWxsb3dlZCA9IFRSVUU7CisgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxi
b2R5PiIKKyAgICAgICAgICAgICAgICAgICAiPHNjcmlwdD4iCisgICAgICAgICAgICAgICAgICAg
InZhciBldmVudE5hbWUgPSAna2V5cHJlc3MnOyIKKyAgICAgICAgICAgICAgICAgICAiZnVuY3Rp
b24gdGh1bmsoKSB7IgorICAgICAgICAgICAgICAgICAgICIgICAgZG9jdW1lbnQucmVtb3ZlRXZl
bnRMaXN0ZW5lcihldmVudE5hbWUsIHRodW5rLCBmYWxzZSk7IgorICAgICAgICAgICAgICAgICAg
ICIgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7
IgorICAgICAgICAgICAgICAgICAgICJ9IgorICAgICAgICAgICAgICAgICAgICJkb2N1bWVudC5h
ZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdGh1bmssIGZhbHNlKTsiCisgICAgICAgICAgICAg
ICAgICAgIjwvc2NyaXB0PjwvYm9keT48L2h0bWw+IiwgMCk7CisKKyAgICBHdGtXaWRnZXQqIHdp
bmRvdzsKKyAgICB3aW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1BPUFVQKTsKKyAg
ICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIEdUS19XSURHRVQodGVz
dC0+bV93ZWJWaWV3KSk7CisKKyAgICBndGtfd2lkZ2V0X3Nob3dfYWxsKHdpbmRvdyk7CisgICAg
Z190aW1lb3V0X2FkZCgxMDAsIChHU291cmNlRnVuYykgZW1pdEtleVN0cm9rZSwgdGVzdCk7CisK
KyAgICB0ZXN0LT53YWl0VW50aWxNYWluTG9vcEZpbmlzaGVzKCk7CisKKyAgICBWZWN0b3I8VUlD
bGllbnRUZXN0OjpXZWJWaWV3RXZlbnRzPiYgZXZlbnRzID0gdGVzdC0+bV93ZWJWaWV3RXZlbnRz
OworICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgpLCA9PSwgMik7CisgICAgZ19hc3Nl
cnRfY21waW50KGV2ZW50c1swXSwgPT0sIFVJQ2xpZW50VGVzdDo6RW50ZXJpbmdGdWxsU2NyZWVu
KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzFdLCA9PSwgVUlDbGllbnRUZXN0OjpMZWF2
aW5nRnVsbFNjcmVlbik7Cit9CisKKworc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdGdWxsU2NyZWVu
QmxvY2tlZChVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgdGVzdC0+
bV9mdWxsU2NyZWVuQWxsb3dlZCA9IEZBTFNFOworICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48
Ym9keT4iCisgICAgICAgICAgICAgICAgICAgIjxzY3JpcHQ+IgorICAgICAgICAgICAgICAgICAg
ICJ2YXIgZXZlbnROYW1lID0gJ2tleXByZXNzJzsiCisgICAgICAgICAgICAgICAgICAgImZ1bmN0
aW9uIHRodW5rKCkgeyIKKyAgICAgICAgICAgICAgICAgICAiICAgIGRvY3VtZW50LnJlbW92ZUV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aHVuaywgZmFsc2UpOyIKKyAgICAgICAgICAgICAgICAg
ICAiICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigp
OyIKKyAgICAgICAgICAgICAgICAgICAifSIKKyAgICAgICAgICAgICAgICAgICAiZG9jdW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIHRodW5rLCBmYWxzZSk7IgorICAgICAgICAgICAg
ICAgICAgICI8L3NjcmlwdD48L2JvZHk+PC9odG1sPiIsIDApOworCisgICAgR3RrV2lkZ2V0KiB3
aW5kb3c7CisgICAgd2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19QT1BVUCk7Cisg
ICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCBHVEtfV0lER0VUKHRl
c3QtPm1fd2ViVmlldykpOworCisgICAgZ3RrX3dpZGdldF9zaG93X2FsbCh3aW5kb3cpOworICAg
IGdfdGltZW91dF9hZGQoMTAwLCAoR1NvdXJjZUZ1bmMpIGVtaXRLZXlTdHJva2UsIHRlc3QpOwor
CisgICAgdGVzdC0+d2FpdFVudGlsTWFpbkxvb3BGaW5pc2hlcygpOworCisgICAgVmVjdG9yPFVJ
Q2xpZW50VGVzdDo6V2ViVmlld0V2ZW50cz4mIGV2ZW50cyA9IHRlc3QtPm1fd2ViVmlld0V2ZW50
czsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzLnNpemUoKSwgPT0sIDApOworfQorCiBzdGF0
aWMgdm9pZCB0ZXN0V2ViVmlld0phdmFTY3JpcHREaWFsb2dzKFVJQ2xpZW50VGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKIHsKICAgICBzdGF0aWMgY29uc3QgY2hhciogaHRtbE9uTG9hZEZvcm1h
dCA9ICI8aHRtbD48Ym9keSBvbkxvYWQ9XCIlc1wiPjwvYm9keT48L2h0bWw+IjsKQEAgLTM3Miw2
ICs0OTIsOCBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0
V2ViVmlldyIsICJyZXBsYWNlLWNvbnRlbnQiLCB0ZXN0V2ViVmlld1JlcGxhY2VDb250ZW50KTsK
ICAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJjcmVhdGUtcmVhZHktY2xv
c2UiLCB0ZXN0V2ViVmlld0NyZWF0ZVJlYWR5Q2xvc2UpOwogICAgIFVJQ2xpZW50VGVzdDo6YWRk
KCJXZWJLaXRXZWJWaWV3IiwgImphdmFzY3JpcHQtZGlhbG9ncyIsIHRlc3RXZWJWaWV3SmF2YVNj
cmlwdERpYWxvZ3MpOworICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImZ1
bGxzY3JlZW4iLCB0ZXN0V2ViVmlld0Z1bGxTY3JlZW4pOworICAgIFVJQ2xpZW50VGVzdDo6YWRk
KCJXZWJLaXRXZWJWaWV3IiwgImZ1bGxzY3JlZW4tYmxvY2tlZCIsIHRlc3RXZWJWaWV3RnVsbFNj
cmVlbkJsb2NrZWQpOwogICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgIndp
bmRvdy1wcm9wZXJ0aWVzIiwgdGVzdFdlYlZpZXdXaW5kb3dQcm9wZXJ0aWVzKTsKICAgICBXZWJW
aWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInpvb20tbGV2ZWwiLCB0ZXN0V2ViVmlld1pv
b21MZXZlbCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9n
dGsvRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuY3BwCmluZGV4IGVlZWZiMGQuLjhlMzI3NGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvRnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvRnVsbFNj
cmVlbldpbmRvd0NvbnRyb2xsZXIuY3BwCkBAIC02OSw2ICs2OSwxMSBAQCB2b2lkIEZ1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVyOjplbnRlckZ1bGxTY3JlZW4oKQogICAgIGlmIChtX2Z1bGxTY3Jl
ZW5FbmFibGVkKQogICAgICAgICByZXR1cm47CiAKKyAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsK
KyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUoV0VCS0lUX1dFQl9WSUVXKG1fd2ViVmlld0Jhc2Uu
Z2V0KCkpLCAiZW50ZXJpbmctZnVsbHNjcmVlbiIsICZyZXR1cm5WYWx1ZSk7CisgICAgaWYgKCFy
ZXR1cm5WYWx1ZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgdGhpcy0+ZnVsbFNjcmVlbk1hbmFn
ZXJQcm94eSgpLT53aWxsRW50ZXJGdWxsU2NyZWVuKCk7CiAgICAgdGhpcy0+ZnVsbFNjcmVlbk1h
bmFnZXJQcm94eSgpLT5iZWdpbkVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbigxMCk7CiAKQEAgLTg2
LDYgKzkxLDkgQEAgdm9pZCBGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcjo6ZXhpdEZ1bGxTY3Jl
ZW4oKQogICAgIGlmICghbV9mdWxsU2NyZWVuRW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCisg
ICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKFdFQktJ
VF9XRUJfVklFVyhtX3dlYlZpZXdCYXNlLmdldCgpKSwgImxlYXZpbmctZnVsbHNjcmVlbiIsICZy
ZXR1cm5WYWx1ZSk7CisKICAgICBHdGtXaWRnZXQqIHRvcExldmVsV2luZG93ID0gZ3RrX3dpZGdl
dF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVChtX3dlYlZpZXdCYXNlLmdldCgpKSk7CiAgICAgaWYg
KGd0a193aWRnZXRfaXNfdG9wbGV2ZWwodG9wTGV2ZWxXaW5kb3cpKQogICAgICAgICBnX3NpZ25h
bF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmModG9wTGV2ZWxXaW5kb3csIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KG9uRnVsbHNjcmVlbkd0a0tleVByZXNzRXZlbnQpLCB0aGlzKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkN2E5MDk3Li5h
Zjc5NmYxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMDEtMzEgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFu
ZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXSzJdW0dUS10gRnVsbFNjcmVlbiBzaWduYWxzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjE2NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSB0aGUgdHdv
IG5ldyBlbnRlcmluZy9sZWF2aW5nIGZ1bGxzY3JlZW4gc2lnbmFscyB0byBoaWRlL3Nob3cKKyAg
ICAgICAgdGhlIFVSTCBiYXIgYW5kIGFzayB0aGUgdXNlcidzIHBlcm1pc3Npb24gYmVmb3JlIGVu
dGVyaW5nCisgICAgICAgIGZ1bGxzY3JlZW4uCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsv
QnJvd3NlcldpbmRvdy5jOgorICAgICAgICAod2ViVmlld0Z1bGxzY3JlZW5NZXNzYWdlV2luZG93
Q2xvc2UpOgorICAgICAgICAod2ViVmlld1dpbmRvd1N0YXRlRXZlbnQpOgorICAgICAgICAod2Vi
Vmlld0VudGVyaW5nRnVsbFNjcmVlbik6CisgICAgICAgICh3ZWJWaWV3TGVhdmluZ0Z1bGxTY3Jl
ZW4pOgorICAgICAgICAod2ViVmlld0NyZWF0ZSk6CisgICAgICAgIChicm93c2VyV2luZG93Q29u
c3RydWN0ZWQpOgorCiAyMDEyLTAxLTMxICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJj
b3R0ZUBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBNaW5pQnJvd3NlcjogU2hvdyB0b3VjaCBt
b2NraW5nIGluZGljYXRvcnMgb25seSB3aGVuIEN0cmwgaXMgaGVsZCBkb3duLgpkaWZmIC0tZ2l0
IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYyBiL1Rvb2xzL01pbmlCcm93
c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKaW5kZXggZTA0YWIwYi4uYTYxNzY0NyAxMDA2NDQKLS0t
IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYworKysgYi9Ub29scy9NaW5p
QnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCkBAIC00NSw3ICs0NSw2IEBAIHN0cnVjdCBfQnJv
d3NlcldpbmRvdyB7CiAgICAgR3RrV2lkZ2V0ICpzdGF0dXNMYWJlbDsKICAgICBHdGtXaWRnZXQg
KnNldHRpbmdzRGlhbG9nOwogICAgIFdlYktpdFdlYlZpZXcgKndlYlZpZXc7Ci0KIH07CiAKIHN0
cnVjdCBfQnJvd3NlcldpbmRvd0NsYXNzIHsKQEAgLTIxOCw2ICsyMTcsNTUgQEAgc3RhdGljIHZv
aWQgd2ViVmlld1JlYWR5VG9TaG93KFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIEJyb3dzZXJXaW5k
b3cgKndpbmRvdykKICAgICBndGtfd2lkZ2V0X3Nob3coR1RLX1dJREdFVCh3aW5kb3cpKTsKIH0K
IAorc3RhdGljIGdib29sZWFuIHdlYlZpZXdGdWxsc2NyZWVuTWVzc2FnZVdpbmRvd0Nsb3NlKEd0
a1dpZGdldCAqZGlhbG9nKQoreworICAgIGlmIChHVEtfSVNfV0lER0VUIChkaWFsb2cpKQorICAg
ICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUgKEdUS19ESUFMT0cgKGRpYWxvZyksICJjbG9zZSIp
OworICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYlZpZXdXaW5kb3dT
dGF0ZUV2ZW50KEd0a1dpZGdldCAqd2lkZ2V0LCBHZGtFdmVudFdpbmRvd1N0YXRlICpldmVudCwg
QnJvd3NlcldpbmRvdyAqd2luZG93KQoreworICAgIGlmIChldmVudC0+bmV3X3dpbmRvd19zdGF0
ZSAmIEdES19XSU5ET1dfU1RBVEVfRlVMTFNDUkVFTikgeworICAgICAgICBjb25zdCBnY2hhciAq
dXJpID0gd2Via2l0X3dlYl92aWV3X2dldF91cmkgKHdpbmRvdy0+d2ViVmlldyk7CisgICAgICAg
IEd0a1dpZGdldCAqZGlhbG9nID0gZ3RrX21lc3NhZ2VfZGlhbG9nX25ldyAoR1RLX1dJTkRPVyAo
d2luZG93KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHVEtfRElBTE9HX01PREFMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdUS19NRVNTQUdFX0lORk8sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX0JVVFRPTlNfQ0xPU0UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIGlzIG5v
dyBmdWxsIHNjcmVlbi4gUHJlc3MgRVNDIG9yIGYgdG8gZXhpdC4iLCB1cmkpOworICAgICAgICBn
X3NpZ25hbF9jb25uZWN0X3N3YXBwZWQgKGRpYWxvZywgInJlc3BvbnNlIiwgR19DQUxMQkFDSyAo
Z3RrX3dpZGdldF9kZXN0cm95KSwgZGlhbG9nKTsKKyAgICAgICAgZ190aW1lb3V0X2FkZCAoMTUw
MCwgKEdTb3VyY2VGdW5jKSB3ZWJWaWV3RnVsbHNjcmVlbk1lc3NhZ2VXaW5kb3dDbG9zZSwgZGlh
bG9nKTsKKyAgICAgICAgZ3RrX2RpYWxvZ19ydW4gKEdUS19ESUFMT0cgKGRpYWxvZykpOworICAg
IH0KKyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYlZpZXdFbnRlcmlu
Z0Z1bGxTY3JlZW4oV2ViS2l0V2ViVmlldyAqd2ViVmlldywgQnJvd3NlcldpbmRvdyAqd2luZG93
KQoreworICAgIGNvbnN0IGdjaGFyICp1cmkgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSAod2lu
ZG93LT53ZWJWaWV3KTsKKyAgICBHdGtXaWRnZXQqIGRpYWxvZyA9IGd0a19tZXNzYWdlX2RpYWxv
Z19uZXcgKEdUS19XSU5ET1cgKHdpbmRvdyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHVEtfRElBTE9HX01PREFMLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX01FU1NBR0VfSU5GTywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19CVVRUT05TX1lFU19O
TywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBbGxv
dyBmdWxsIHNjcmVlbiBkaXNwbGF5IG9mICVzID8iLCB1cmkpOworICAgIGdpbnQgcmVzdWx0ID0g
Z3RrX2RpYWxvZ19ydW4gKEdUS19ESUFMT0cgKGRpYWxvZykpOworICAgIGlmIChyZXN1bHQgPT0g
R1RLX1JFU1BPTlNFX1lFUykgeworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KEdUS19XSURHRVQg
KHdpbmRvdyksICJ3aW5kb3ctc3RhdGUtZXZlbnQiLCBHX0NBTExCQUNLKHdlYlZpZXdXaW5kb3dT
dGF0ZUV2ZW50KSwgd2luZG93KTsKKyAgICAgICAgZ3RrX3dpZGdldF9oaWRlICh3aW5kb3ctPnRv
b2xiYXIpOworICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3koR1RLX1dJREdFVCAoZGlhbG9nKSk7
CisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKyAgICBndGtfd2lkZ2V0X2Rlc3Ryb3koR1RL
X1dJREdFVCAoZGlhbG9nKSk7CisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgZ2Jvb2xl
YW4gd2ViVmlld0xlYXZpbmdGdWxsU2NyZWVuKFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIEJyb3dz
ZXJXaW5kb3cgKndpbmRvdykKK3sKKyAgICBndGtfd2lkZ2V0X3Nob3cod2luZG93LT50b29sYmFy
KTsKKyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMoR1RLX1dJREdFVCh3
aW5kb3cpLCBHX0NBTExCQUNLKHdlYlZpZXdXaW5kb3dTdGF0ZUV2ZW50KSwgd2luZG93KTsKKyAg
ICByZXR1cm4gVFJVRTsKK30KKwogc3RhdGljIEd0a1dpZGdldCAqd2ViVmlld0NyZWF0ZShXZWJL
aXRXZWJWaWV3ICp3ZWJWaWV3LCBCcm93c2VyV2luZG93ICp3aW5kb3cpCiB7CiAgICAgV2ViS2l0
V2ViVmlldyAqbmV3V2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3
X3dpdGhfY29udGV4dCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQod2ViVmlldykpKTsKQEAg
LTIyNiw2ICsyNzQsOCBAQCBzdGF0aWMgR3RrV2lkZ2V0ICp3ZWJWaWV3Q3JlYXRlKFdlYktpdFdl
YlZpZXcgKndlYlZpZXcsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykKICAgICBHdGtXaWRnZXQgKm5l
d1dpbmRvdyA9IGJyb3dzZXJfd2luZG93X25ldyhuZXdXZWJWaWV3KTsKICAgICBnX3NpZ25hbF9j
b25uZWN0KG5ld1dlYlZpZXcsICJyZWFkeS10by1zaG93IiwgR19DQUxMQkFDSyh3ZWJWaWV3UmVh
ZHlUb1Nob3cpLCBuZXdXaW5kb3cpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QobmV3V2ViVmlldywg
ImNsb3NlIiwgR19DQUxMQkFDSyh3ZWJWaWV3Q2xvc2UpLCBuZXdXaW5kb3cpOworICAgIGdfc2ln
bmFsX2Nvbm5lY3QobmV3V2ViVmlldywgImVudGVyaW5nLWZ1bGxzY3JlZW4iLCBHX0NBTExCQUNL
KHdlYlZpZXdFbnRlcmluZ0Z1bGxTY3JlZW4pLCBuZXdXaW5kb3cpOworICAgIGdfc2lnbmFsX2Nv
bm5lY3QobmV3V2ViVmlldywgImxlYXZpbmctZnVsbHNjcmVlbiIsIEdfQ0FMTEJBQ0sod2ViVmll
d0xlYXZpbmdGdWxsU2NyZWVuKSwgbmV3V2luZG93KTsKICAgICByZXR1cm4gR1RLX1dJREdFVChu
ZXdXZWJWaWV3KTsKIH0KIApAQCAtMzMzLDYgKzM4Myw4IEBAIHN0YXRpYyB2b2lkIGJyb3dzZXJX
aW5kb3dDb25zdHJ1Y3RlZChHT2JqZWN0ICpnT2JqZWN0KQogICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
d2luZG93LT53ZWJWaWV3LCAibm90aWZ5Ojp0aXRsZSIsIEdfQ0FMTEJBQ0sod2ViVmlld1RpdGxl
Q2hhbmdlZCksIHdpbmRvdyk7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3aW5kb3ctPndlYlZpZXcs
ICJjcmVhdGUiLCBHX0NBTExCQUNLKHdlYlZpZXdDcmVhdGUpLCB3aW5kb3cpOwogICAgIGdfc2ln
bmFsX2Nvbm5lY3Qod2luZG93LT53ZWJWaWV3LCAibG9hZC1mYWlsZWQiLCBHX0NBTExCQUNLKHdl
YlZpZXdMb2FkRmFpbGVkKSwgd2luZG93KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHdpbmRvdy0+
d2ViVmlldywgImVudGVyaW5nLWZ1bGxzY3JlZW4iLCBHX0NBTExCQUNLKHdlYlZpZXdFbnRlcmlu
Z0Z1bGxTY3JlZW4pLCB3aW5kb3cpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2luZG93LT53ZWJW
aWV3LCAibGVhdmluZy1mdWxsc2NyZWVuIiwgR19DQUxMQkFDSyh3ZWJWaWV3TGVhdmluZ0Z1bGxT
Y3JlZW4pLCB3aW5kb3cpOwogCiAgICAgV2ViS2l0QmFja0ZvcndhcmRMaXN0ICpiYWNrRm9yd2Fk
bGlzdCA9IHdlYmtpdF93ZWJfdmlld19nZXRfYmFja19mb3J3YXJkX2xpc3Qod2luZG93LT53ZWJW
aWV3KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KGJhY2tGb3J3YWRsaXN0LCAiY2hhbmdlZCIsIEdf
Q0FMTEJBQ0soYmFja0ZvcndhZGxpc3RDaGFuZ2VkKSwgd2luZG93KTsKLS0gCjEuNy45
</data>
<flag name="review"
          id="126061"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124971</attachid>
            <date>2012-02-01 10:55:18 -0800</date>
            <delta_ts>2012-03-12 08:04:37 -0700</delta_ts>
            <desc>FullScreen signals</desc>
            <filename>FullScreen-signals.patch</filename>
            <type>text/plain</type>
            <size>25583</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA4MjdlN2VmYTcwZDcyMjRmNDJiOGIyMjAwZDBmMTVkODM2NzBiM2IzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDMxIEphbiAyMDEyIDE2OjQxOjQ2ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
RnVsbFNjcmVlbiBzaWduYWxzCgotLS0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAzMSArKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIHwgICA2OCArKysrKysrKysrKysKIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCAgIHwgICA0OCArKysrKy0t
LS0KIC4uLi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oICAgICAgIHwg
ICAgMyArLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdE1haW4u
aCAgfCAgICA1ICsKIC4uLi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmll
dy5jcHAgIHwgIDEwOCArKysrKysrKysrKysrKysrKysrLQogLi4uL1VJUHJvY2Vzcy9ndGsvRnVs
bFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuY3BwICAgfCAgICA4ICsrCiBTb3VyY2UvYXV0b3Rvb2xz
L3N5bWJvbHMuZmlsdGVyICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogVG9vbHMvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE5ICsrKysKIFRvb2xz
L01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMgICAgICAgICAgICAgIHwgICA1NyArKysr
KysrKysrLQogMTAgZmlsZXMgY2hhbmdlZCwgMzIxIGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCBlYmJlMWNhLi42NTBjNTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUg
KzEsMzYgQEAKIDIwMTItMDEtMzEgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEu
Y29tPgogCisgICAgICAgIFtXSzJdW0dUS10gRnVsbFNjcmVlbiBzaWduYWxzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjE2NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGVudGVyaW5nLWZ1bGxz
Y3JlZW4gYW5kIGxlYXZpbmctZnVsbHNjcmVlbiBzaWduYWxzLCBtZWFudCB0bworICAgICAgICBi
ZSB1c2VkIGJ5IHRoZSB1c2VyIGFnZW50IHRvIGJlIG5vdGlmaWVkIHdoZW4gYW4gZWxlbWVudCBy
ZXF1ZXN0cworICAgICAgICBmdWxsIHNjcmVlbiBkaXNwbGF5IGFuZCB3aGVuIHRoZSBmdWxsIHNj
cmVlbiBkaXNwbGF5IGlzIHRvIGJlCisgICAgICAgIGRpc2FibGVkLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3Zp
ZXdfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3RW50ZXJpbmdGdWxsU2NyZWVu
KToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdMZWF2aW5nRnVsbFNjcmVlbik6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAoV2luZG93UHJvcGVydGll
czo6ZW50ZXJpbmdGdWxsU2NyZWVuKToKKyAgICAgICAgKFdpbmRvd1Byb3BlcnRpZXM6OmxlYXZp
bmdGdWxsU2NyZWVuKToKKyAgICAgICAgKFdpbmRvd1Byb3BlcnRpZXM6OlVJQ2xpZW50VGVzdCk6
CisgICAgICAgIChlbWl0S2V5U3Ryb2tlKToKKyAgICAgICAgKHRlc3RXZWJWaWV3RnVsbFNjcmVl
bik6CisgICAgICAgICh0ZXN0V2ViVmlld0Z1bGxTY3JlZW5CbG9ja2VkKToKKyAgICAgICAgKGJl
Zm9yZUFsbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mm1hcnNoYWwubGlz
dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKEZ1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyOjplbnRlckZ1bGxTY3JlZW4p
OgorICAgICAgICAoRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXI6OmV4aXRGdWxsU2NyZWVuKToK
KworMjAxMi0wMS0zMSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisK
ICAgICAgICAgW0dUS11bV0syXSBJbml0aWFsIEZ1bGxTY3JlZW4gc3VwcG9ydAogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1NTMKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCBl
OGJjYWVlLi4zOTcyMzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtNTgsNiArNTgsOSBAQCBlbnVtIHsKIAogICAgIERF
Q0lERV9QT0xJQ1ksCiAKKyAgICBFTlRFUklOR19GVUxMU0NSRUVOLAorICAgIExFQVZJTkdfRlVM
TFNDUkVFTiwKKwogICAgIExBU1RfU0lHTkFMCiB9OwogCkBAIC0yNTQsNiArMjU3LDggQEAgc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3
ZWJWaWV3Q2xhc3MpCiAgICAgd2ViVmlld0NsYXNzLT5zY3JpcHRfY29uZmlybSA9IHdlYmtpdFdl
YlZpZXdTY3JpcHRDb25maXJtOwogICAgIHdlYlZpZXdDbGFzcy0+c2NyaXB0X3Byb21wdCA9IHdl
YmtpdFdlYlZpZXdTY3JpcHRQcm9tcHQ7CiAgICAgd2ViVmlld0NsYXNzLT5kZWNpZGVfcG9saWN5
ID0gd2Via2l0V2ViVmlld0RlY2lkZVBvbGljeTsKKyAgICB3ZWJWaWV3Q2xhc3MtPmVudGVyaW5n
X2Z1bGxzY3JlZW4gPSB3ZWJraXRXZWJWaWV3RW50ZXJpbmdGdWxsU2NyZWVuOworICAgIHdlYlZp
ZXdDbGFzcy0+bGVhdmluZ19mdWxsc2NyZWVuID0gd2Via2l0V2ViVmlld0xlYXZpbmdGdWxsU2Ny
ZWVuOwogCiAgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKHdlYlZpZXdDbGFzcywgc2l6ZW9m
KFdlYktpdFdlYlZpZXdQcml2YXRlKSk7CiAKQEAgLTYxMiw2ICs2MTcsNTUgQEAgc3RhdGljIHZv
aWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3
Q2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMiwgLyogbnVtYmVy
IG9mIHBhcmFtZXRlcnMgKi8KICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX1BPTElD
WV9ERUNJU0lPTiwKICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX1BPTElDWV9ERUNJ
U0lPTl9UWVBFKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OmVudGVyaW5nLWZ1
bGxzY3JlZW46CisgICAgICogQHdlYl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgb24gd2hpY2gg
dGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gSmF2YVNj
cmlwdCBjb2RlIGNhbGxzCisgICAgICogPGZ1bmN0aW9uPmVsZW1lbnQud2Via2l0UmVxdWVzdEZ1
bGxTY3JlZW48L2Z1bmN0aW9uPi4gSWYgdGhlCisgICAgICogc2lnbmFsIGlzIG5vdCBoYW5kbGVk
IHRoZSBXZWJWaWV3IHdpbGwgcHJvY2VlZCB0byBmdWxsIHNjcmVlbgorICAgICAqIGl0cyB0b3Ag
bGV2ZWwgd2luZG93LiBUaGlzIHNpZ25hbCBjYW4gYmUgdXNlZCBieSBjbGllbnQgY29kZSB0bwor
ICAgICAqIHJlcXVlc3QgcGVybWlzc2lvbiB0byB0aGUgdXNlciBwcmlvciBkb2luZyB0aGUgZnVs
bCBzY3JlZW4KKyAgICAgKiB0cmFuc2l0aW9uIGFuZCBldmVudHVhbGx5IHByZXBhcmUgdGhlIHRv
cC1sZXZlbCB3aW5kb3cKKyAgICAgKiAoZS5nLiBoaWRlIHNvbWUgd2lkZ2V0cyB0aGF0IHdvdWxk
IG90aGVyd2lzZSBiZSBwYXJ0IG9mIHRoZQorICAgICAqIGZ1bGwgc2NyZWVuIHdpbmRvdykuCisK
KyAgICAgKiBSZXR1cm5zOiAlVFJVRSB0byBzdG9wIG90aGVyIGhhbmRsZXJzIGZyb20gYmVpbmcg
aW52b2tlZCBmb3IgdGhlIGV2ZW50LgorICAgICAqICAgICVGQUxTRSB0byBibG9jayB0aGUgZXZl
bnQuCisgICAgICovCisgICAgc2lnbmFsc1tFTlRFUklOR19GVUxMU0NSRUVOXSA9CisgICAgICAg
ICAgICBnX3NpZ25hbF9uZXcoImVudGVyaW5nLWZ1bGxzY3JlZW4iLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
R19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYlZpZXdDbGFzcywgZW50ZXJpbmdfZnVsbHNjcmVlbiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfZmlyc3Rfd2lu
cywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19W
T0lELAorICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOLCAwKTsKKworCisg
ICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6bGVhdmluZy1mdWxsc2NyZWVuOgorICAgICAq
IEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1p
dHRlZAorICAgICAqCisgICAgICogRW1pdHRlZCB3aGVuIHRoZSBXZWJWaWV3IGlzIGFib3V0IHRv
IHJlc3RvcmUgaXRzIHRvcCBsZXZlbAorICAgICAqIHdpbmRvdyBvdXQgb2YgaXRzIGZ1bGwgc2Ny
ZWVuIHN0YXRlLiBUaGlzIHNpZ25hbCBjYW4gYmUgdXNlZCBieQorICAgICAqIGNsaWVudCBjb2Rl
IHRvIHJlc3RvcmUgd2lkZ2V0cyBoaWRkZW4gZHVyaW5nIHRoZQorICAgICAqIGVudGVyaW5nLWZ1
bGxzY3JlZW4gc3RhZ2UgZm9yIGluc3RhbmNlLgorCisgICAgICogUmV0dXJuczogJVRSVUUgdG8g
c3RvcCBvdGhlciBoYW5kbGVycyBmcm9tIGJlaW5nIGludm9rZWQgZm9yIHRoZSBldmVudC4KKyAg
ICAgKiAgICAlRkFMU0UgdG8gcHJvcGFnYXRlIHRoZSBldmVudCBmdXJ0aGVyLgorICAgICAqLwor
ICAgIHNpZ25hbHNbTEVBVklOR19GVUxMU0NSRUVOXSA9CisgICAgICAgICAgICBnX3NpZ25hbF9u
ZXcoImxlYXZpbmctZnVsbHNjcmVlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBF
X0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHX1NJ
R05BTF9SVU5fTEFTVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQo
V2ViS2l0V2ViVmlld0NsYXNzLCBsZWF2aW5nX2Z1bGxzY3JlZW4pLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9yX2ZpcnN0X3dpbnMsIDAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fVk9JRCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMCk7CisKKwogfQogCiB2b2lkIHdlYmtpdFdl
YlZpZXdMb2FkQ2hhbmdlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZlbnQg
bG9hZEV2ZW50KQpAQCAtNzIzLDYgKzc3NywyMCBAQCB2b2lkIHdlYmtpdFdlYlZpZXdNYWtlUG9s
aWN5RGVjaXNpb24oV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0UG9saWN5RGVjaXNpbwog
ICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tERUNJREVfUE9MSUNZXSwgMCwgZGVj
aXNpb24sIHR5cGUsICZyZXR1cm5WYWx1ZSk7CiB9CiAKK2dib29sZWFuIHdlYmtpdFdlYlZpZXdF
bnRlcmluZ0Z1bGxTY3JlZW4oV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBnYm9vbGVh
biByZXR1cm5WYWx1ZTsKKyAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbRU5URVJJ
TkdfRlVMTFNDUkVFTl0sIDAsICZyZXR1cm5WYWx1ZSk7CisgICAgcmV0dXJuIHJldHVyblZhbHVl
OworfQorCitnYm9vbGVhbiB3ZWJraXRXZWJWaWV3TGVhdmluZ0Z1bGxTY3JlZW4oV2ViS2l0V2Vi
Vmlldyogd2ViVmlldykKK3sKKyAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKKyAgICBnX3NpZ25h
bF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbTEVBVklOR19GVUxMU0NSRUVOXSwgMCwgJnJldHVyblZh
bHVlKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKIC8qKgogICogd2Via2l0X3dlYl92
aWV3X25ldzoKICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmgKaW5kZXggNjk3ZmNkYy4uN2I3NjBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaApAQCAtMTE2LDI5ICsxMTYsMzEg
QEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3IHsKIHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIHsK
ICAgICBXZWJLaXRXZWJWaWV3QmFzZUNsYXNzIHBhcmVudDsKIAotICAgIHZvaWQgICAgICAgKCog
bG9hZF9jaGFuZ2VkKSAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0TG9hZEV2ZW50ICAgICAgICAg
ICAgbG9hZF9ldmVudCk7Ci0gICAgZ2Jvb2xlYW4gICAoKiBsb2FkX2ZhaWxlZCkgICAgKFdlYktp
dFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJLaXRMb2FkRXZlbnQgICAgICAgICAgICBsb2FkX2V2ZW50LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICpm
YWlsaW5nX3VyaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAg
ICAgICAgICAgICAgICAgICAqZXJyb3IpOwotCi0gICAgR3RrV2lkZ2V0ICooKiBjcmVhdGUpICAg
ICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKLSAgICB2b2lkICAg
ICAgICgqIHJlYWR5X3RvX3Nob3cpICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3Zp
ZXcpOwotICAgIHZvaWQgICAgICAgKCogY2xvc2UpICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAg
ICAgICAgICAgICp3ZWJfdmlldyk7Ci0KLSAgICBnYm9vbGVhbiAgICgqIHNjcmlwdF9hbGVydCkg
ICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgKm1lc3NhZ2UpOwot
ICAgIGdib29sZWFuICAgKCogc2NyaXB0X2NvbmZpcm0pIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
ICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2NoYXIgICAgICAgICAgICAgICAqbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICAqY29uZmlybWVkKTsKLSAgICBnYm9v
bGVhbiAgICgqIHNjcmlwdF9wcm9tcHQpICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2Vi
X3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAg
ICAgICAgICAgICAgKm1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgKmRlZmF1bHRfdGV4dCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2NoYXIgICAgICAgICAgICAgICAgICAgICoqdGV4dCk7Ci0g
ICAgZ2Jvb2xlYW4gICAoKiBkZWNpZGVfcG9saWN5KSAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQ
b2xpY3lEZWNpc2lvbiAgICAgICpkZWNpc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV2ViS2l0UG9saWN5RGVjaXNpb25UeXBlICB0eXBlKTsKKyAgICB2b2lkICAgICAg
ICgqIGxvYWRfY2hhbmdlZCkgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJf
dmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRMb2Fk
RXZlbnQgICAgICAgICAgICBsb2FkX2V2ZW50KTsKKyAgICBnYm9vbGVhbiAgICgqIGxvYWRfZmFp
bGVkKSAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRMb2FkRXZlbnQgICAgICAg
ICAgICBsb2FkX2V2ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgKmZhaWxpbmdfdXJpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAgICAgICAgKmVycm9y
KTsKKworICAgIEd0a1dpZGdldCAqKCogY3JlYXRlKSAgICAgICAgICAgICAgKFdlYktpdFdlYlZp
ZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKKyAgICB2b2lkICAgICAgICgqIHJlYWR5X3RvX3No
b3cpICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CisgICAgdm9p
ZCAgICAgICAoKiBjbG9zZSkgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAg
ICAqd2ViX3ZpZXcpOworCisgICAgZ2Jvb2xlYW4gICAoKiBzY3JpcHRfYWxlcnQpICAgICAgICAo
V2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAqbWVzc2FnZSk7
CisgICAgZ2Jvb2xlYW4gICAoKiBzY3JpcHRfY29uZmlybSkgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAqbWVzc2FnZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICAgICpjb25m
aXJtZWQpOworICAgIGdib29sZWFuICAgKCogc2NyaXB0X3Byb21wdCkgICAgICAgKFdlYktpdFdl
YlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgKm1lc3NhZ2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAg
ICAqZGVmYXVsdF90ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdjaGFyICAgICAgICAgICAgICAgICAgICAqKnRleHQpOworICAgIGdib29sZWFuICAgKCogZGVj
aWRlX3BvbGljeSkgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFBvbGljeURlY2lz
aW9uICAgICAgKmRlY2lzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYktpdFBvbGljeURlY2lzaW9uVHlwZSAgdHlwZSk7CisgICAgZ2Jvb2xlYW4gICAoKiBl
bnRlcmluZ19mdWxsc2NyZWVuKSAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcp
OworICAgIGdib29sZWFuICAgKCogbGVhdmluZ19mdWxsc2NyZWVuKSAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgKndlYl92aWV3KTsKIAogICAgIC8qIFBhZGRpbmcgZm9yIGZ1dHVyZSBleHBh
bnNpb24gKi8KICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0
ZS5oCmluZGV4IDY2Mzg2ZDAuLmI4NjM4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaApAQCAtNDMsNSArNDMs
NiBAQCB2b2lkIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0QWxlcnQoV2ViS2l0V2ViVmlldyos
IGNvbnN0IENTdHJpbmcmIG1lc3NhZ2UpOwogYm9vbCB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlw
dENvbmZpcm0oV2ViS2l0V2ViVmlldyosIGNvbnN0IENTdHJpbmcmIG1lc3NhZ2UpOwogV0tTdHJp
bmdSZWYgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRQcm9tcHQoV2ViS2l0V2ViVmlldyosIGNv
bnN0IENTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IENTdHJpbmcmIGRlZmF1bHRUZXh0KTsKIHZvaWQg
d2Via2l0V2ViVmlld01ha2VQb2xpY3lEZWNpc2lvbihXZWJLaXRXZWJWaWV3KiwgV2ViS2l0UG9s
aWN5RGVjaXNpb25UeXBlLCBXZWJLaXRQb2xpY3lEZWNpc2lvbiopOwotCitnYm9vbGVhbiB3ZWJr
aXRXZWJWaWV3RW50ZXJpbmdGdWxsU2NyZWVuKFdlYktpdFdlYlZpZXcqKTsKK2dib29sZWFuIHdl
YmtpdFdlYlZpZXdMZWF2aW5nRnVsbFNjcmVlbihXZWJLaXRXZWJWaWV3Kik7CiAjZW5kaWYgLy8g
V2ViS2l0V2ViVmlld1ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvdGVzdHMvVGVzdE1haW4uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3Rlc3RzL1Rlc3RNYWluLmgKaW5kZXggNjMxMDk2YS4uMDVhMzNlZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdE1haW4uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0TWFpbi5oCkBAIC0z
Nyw2ICszNywxMSBAQAogICAgIHsgXAogICAgICAgICBHT3duUHRyPGdjaGFyPiB0ZXN0UGF0aChn
X3N0cmR1cF9wcmludGYoIi93ZWJraXQyLyVzLyVzIiwgc3VpdGVOYW1lLCB0ZXN0TmFtZSkpOyBc
CiAgICAgICAgIGdfdGVzdF9hZGQodGVzdFBhdGguZ2V0KCksIENsYXNzTmFtZSwgMCwgQ2xhc3NO
YW1lOjpzZXRVcCwgdGVzdEZ1bmMsIENsYXNzTmFtZTo6dGVhckRvd24pOyBcCisgICAgfSBcCisg
ICAgc3RhdGljIHZvaWQgYWRkV2l0aERhdGEoY29uc3QgY2hhciogc3VpdGVOYW1lLCBjb25zdCBj
aGFyKiB0ZXN0TmFtZSwgdm9pZCAoKnRlc3RGdW5jKShDbGFzc05hbWUqLCBjb25zdCB2b2lkKiks
IGdjb25zdHBvaW50ZXIgZGF0YSkgXAorICAgIHsgXAorICAgICAgICBHT3duUHRyPGdjaGFyPiB0
ZXN0UGF0aChnX3N0cmR1cF9wcmludGYoIi93ZWJraXQyLyVzLyVzIiwgc3VpdGVOYW1lLCB0ZXN0
TmFtZSkpOyBcCisgICAgICAgIGdfdGVzdF9hZGQodGVzdFBhdGguZ2V0KCksIENsYXNzTmFtZSwg
ZGF0YSwgQ2xhc3NOYW1lOjpzZXRVcCwgdGVzdEZ1bmMsIENsYXNzTmFtZTo6dGVhckRvd24pOyBc
CiAgICAgfQogCiBjbGFzcyBUZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggMTYzNzVl
ZC4uNjA1M2I4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
dGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtMjIsNiArMjIsOSBAQAog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDxnZGsvZ2RrLmg+
CisjaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dPd25QdHJH
dGsuaD4KIAogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdEZWZhdWx0Q29udGV4dChXZWJWaWV3VGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKQEAgLTg3LDYgKzkwLDcgQEAgc3RhdGljIHZvaWQg
dGVzdFdlYlZpZXdSZXBsYWNlQ29udGVudChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKICAgICBnX21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7CiB9CiAKKwogc3RhdGlj
IGNvbnN0IGNoYXIqIGtBbGVydERpYWxvZ01lc3NhZ2UgPSAiV2ViS2l0R1RLKyBhbGVydCBkaWFs
b2cgbWVzc2FnZSI7CiBzdGF0aWMgY29uc3QgY2hhcioga0NvbmZpcm1EaWFsb2dNZXNzYWdlID0g
IldlYktpdEdUSysgY29uZmlybSBkaWFsb2cgbWVzc2FnZSI7CiBzdGF0aWMgY29uc3QgY2hhciog
a1Byb21wdERpYWxvZ01lc3NhZ2UgPSAiV2ViS2l0R1RLKyBwcm9tcHQgZGlhbG9nIG1lc3NhZ2Ui
OwpAQCAtOTksNyArMTAzLDcgQEAgcHVibGljOgogICAgIGVudW0gV2ViVmlld0V2ZW50cyB7CiAg
ICAgICAgIENyZWF0ZSwKICAgICAgICAgUmVhZHlUb1Nob3csCi0gICAgICAgIENsb3NlCisgICAg
ICAgIENsb3NlLAogICAgIH07CiAKICAgICBlbnVtIFNjcmlwdFR5cGUgewpAQCAtMjYzLDYgKzI2
Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFRSVUU7CiAgICAgfQogCisKICAgICBVSUNs
aWVudFRlc3QoKQogICAgICAgICA6IG1fc2NyaXB0VHlwZShBbGVydCkKICAgICAgICAgLCBtX3Nj
cmlwdERpYWxvZ0NvbmZpcm1lZCh0cnVlKQpAQCAtMjk2LDYgKzMwMSw3NSBAQCBwdWJsaWM6CiAg
ICAgSGFzaFNldDxXVEY6OlN0cmluZz4gbV93aW5kb3dQcm9wZXJ0aWVzQ2hhbmdlZDsKIH07CiAK
K2NsYXNzIFVJRnVsbFNjcmVlbkNsaWVudFRlc3Q6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CitwdWJs
aWM6CisgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShVSUZ1bGxTY3JlZW5DbGllbnRUZXN0KTsK
KworICAgIGVudW0gV2ViVmlld0V2ZW50cyB7CisgICAgICAgIEVudGVyaW5nRnVsbFNjcmVlbiwK
KyAgICAgICAgTGVhdmluZ0Z1bGxTY3JlZW4KKyAgICB9OworCisgICAgc3RhdGljIGdib29sZWFu
IGVtaXRLZXlTdHJva2UoZ3BvaW50ZXIgZGF0YSkKKyAgICB7CisgICAgICAgIFVJRnVsbFNjcmVl
bkNsaWVudFRlc3QqIHRlc3QgPSByZWludGVycHJldF9jYXN0PFVJRnVsbFNjcmVlbkNsaWVudFRl
c3QqPihkYXRhKTsKKworICAgICAgICAvLyBDcmVhdGUgYW5kIHNlbmQgdGhlIGV2ZW50LgorICAg
ICAgICBHT3duUHRyPEdka0V2ZW50PiBwcmVzc0V2ZW50KGdka19ldmVudF9uZXcoR0RLX0tFWV9Q
UkVTUykpOworICAgICAgICBwcmVzc0V2ZW50LT5rZXkua2V5dmFsID0gR0RLX0tFWV9mOworICAg
ICAgICBHZGtXaW5kb3cqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhHVEtfV0lER0VU
KHRlc3QtPm1fd2ViVmlldykpOworICAgICAgICBwcmVzc0V2ZW50LT5rZXkud2luZG93ID0gd2lu
ZG93OworICAgICAgICBnX29iamVjdF9yZWYocHJlc3NFdmVudC0+a2V5LndpbmRvdyk7CisKKyAg
ICAgICAgR2RrRGV2aWNlTWFuYWdlciogbWFuYWdlciA9IGdka19kaXNwbGF5X2dldF9kZXZpY2Vf
bWFuYWdlcihnZGtfd2luZG93X2dldF9kaXNwbGF5KHdpbmRvdykpOworICAgICAgICBnZGtfZXZl
bnRfc2V0X2RldmljZShwcmVzc0V2ZW50LmdldCgpLCBnZGtfZGV2aWNlX21hbmFnZXJfZ2V0X2Ns
aWVudF9wb2ludGVyKG1hbmFnZXIpKTsKKworICAgICAgICAvLyBXaGVuIHN5bnRoZXNpemluZyBh
biBldmVudCwgYW4gaW52YWxpZCBoYXJkd2FyZV9rZXljb2RlIHZhbHVlCisgICAgICAgIC8vIGNh
biBjYXVzZSBpdCB0byBiZSBiYWRseSBwcm9jZXNzZWQgYnkgR3RrKy4KKyAgICAgICAgR093blB0
cjxHZGtLZXltYXBLZXk+IGtleXM7CisgICAgICAgIGdpbnQgbl9rZXlzOworICAgICAgICBpZiAo
Z2RrX2tleW1hcF9nZXRfZW50cmllc19mb3Jfa2V5dmFsKGdka19rZXltYXBfZ2V0X2RlZmF1bHQo
KSwgR0RLX0tFWV9mLCAma2V5cy5vdXRQdHIoKSwgJm5fa2V5cykpCisgICAgICAgICAgICBwcmVz
c0V2ZW50LT5rZXkuaGFyZHdhcmVfa2V5Y29kZSA9IGtleXMuZ2V0KClbMF0ua2V5Y29kZTsKKwor
ICAgICAgICBHT3duUHRyPEdka0V2ZW50PiByZWxlYXNlRXZlbnQoZ2RrX2V2ZW50X2NvcHkocHJl
c3NFdmVudC5nZXQoKSkpOworICAgICAgICBndGtfbWFpbl9kb19ldmVudChwcmVzc0V2ZW50Lmdl
dCgpKTsKKyAgICAgICAgcmVsZWFzZUV2ZW50LT5rZXkudHlwZSA9IEdES19LRVlfUkVMRUFTRTsK
KyAgICAgICAgZ3RrX21haW5fZG9fZXZlbnQocmVsZWFzZUV2ZW50LmdldCgpKTsKKworICAgICAg
ICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgc3RhdGljIGdib29sZWFuIGVudGVyaW5nRnVs
bFNjcmVlbihXZWJLaXRXZWJWaWV3KiwgVUlGdWxsU2NyZWVuQ2xpZW50VGVzdCogdGVzdCkKKyAg
ICB7CisgICAgICAgIGlmICh0ZXN0LT5tX2Z1bGxTY3JlZW5BbGxvd2VkKSB7CisgICAgICAgICAg
ICB0ZXN0LT5tX3dlYlZpZXdFdmVudHMuYXBwZW5kKEVudGVyaW5nRnVsbFNjcmVlbik7CisgICAg
ICAgICAgICBnX2lkbGVfYWRkKHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KHRlc3QtPmVt
aXRLZXlTdHJva2UpLCB0ZXN0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGVzdC0+bV9m
dWxsU2NyZWVuQWxsb3dlZDsKKyAgICB9CisKKyAgICBzdGF0aWMgZ2Jvb2xlYW4gbGVhdmluZ0Z1
bGxTY3JlZW4oV2ViS2l0V2ViVmlldyosIFVJRnVsbFNjcmVlbkNsaWVudFRlc3QqIHRlc3QpCisg
ICAgeworICAgICAgICB0ZXN0LT5tX3dlYlZpZXdFdmVudHMuYXBwZW5kKExlYXZpbmdGdWxsU2Ny
ZWVuKTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgVUlGdWxsU2NyZWVuQ2xp
ZW50VGVzdCgpCisgICAgeworICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9mdWxs
c2NyZWVuKHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3MobV93ZWJWaWV3KSwgVFJVRSk7Cisg
ICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAiZW50ZXJpbmctZnVsbHNjcmVlbiIs
IEdfQ0FMTEJBQ0soZW50ZXJpbmdGdWxsU2NyZWVuKSwgdGhpcyk7CisgICAgICAgIGdfc2lnbmFs
X2Nvbm5lY3QobV93ZWJWaWV3LCAibGVhdmluZy1mdWxsc2NyZWVuIiwgR19DQUxMQkFDSyhsZWF2
aW5nRnVsbFNjcmVlbiksIHRoaXMpOworICAgIH0KKworICAgIH5VSUZ1bGxTY3JlZW5DbGllbnRU
ZXN0KCkKKyAgICB7CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfbWF0Y2hl
ZChtX3dlYlZpZXcsIEdfU0lHTkFMX01BVENIX0RBVEEsIDAsIDAsIDAsIDAsIHRoaXMpOworICAg
IH0KKworICAgIFZlY3RvcjxXZWJWaWV3RXZlbnRzPiBtX3dlYlZpZXdFdmVudHM7CisgICAgYm9v
bCBtX2Z1bGxTY3JlZW5BbGxvd2VkOworfTsKKwogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdDcmVh
dGVSZWFkeUNsb3NlKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICB0
ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGJvZHkgb25Mb2FkPVwid2luZG93Lm9wZW4oKS5jbG9zZSgp
O1wiPjwvaHRtbD4iLCAwKTsKQEAgLTM2NCw2ICs0MzgsMzYgQEAgc3RhdGljIHZvaWQgdGVzdFdl
YlZpZXdab29tTGV2ZWwoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19h
c3NlcnRfY21wZmxvYXQod2Via2l0X3dlYl92aWV3X2dldF96b29tX2xldmVsKHRlc3QtPm1fd2Vi
VmlldyksID09LCAyLjUpOwogfQogCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0Z1bGxTY3JlZW4o
VUlGdWxsU2NyZWVuQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlciBkYXRhKQoreworICAg
IHRlc3QtPm1fZnVsbFNjcmVlbkFsbG93ZWQgPSBHUE9JTlRFUl9UT19JTlQoZGF0YSk7CisgICAg
dGVzdC0+bG9hZEh0bWwoIjxodG1sPjxib2R5PiIKKyAgICAgICAgICAgICAgICAgICAiPHNjcmlw
dD4iCisgICAgICAgICAgICAgICAgICAgInZhciBldmVudE5hbWUgPSAna2V5cHJlc3MnOyIKKyAg
ICAgICAgICAgICAgICAgICAiZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGZ1
bmN0aW9uICgpIHsiCisgICAgICAgICAgICAgICAgICAgIiAgICBkb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKTsiCisgICAgICAgICAgICAgICAgICAgIn0s
IGZhbHNlKTsiCisgICAgICAgICAgICAgICAgICAgIjwvc2NyaXB0PjwvYm9keT48L2h0bWw+Iiwg
MCk7CisKKyAgICBHdGtXaWRnZXQqIHdpbmRvdyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1df
UE9QVVApOworICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgR1RL
X1dJREdFVCh0ZXN0LT5tX3dlYlZpZXcpKTsKKworICAgIGd0a193aWRnZXRfc2hvd19hbGwod2lu
ZG93KTsKKyAgICBnX3RpbWVvdXRfYWRkKDUwLCByZWludGVycHJldF9jYXN0PEdTb3VyY2VGdW5j
Pih0ZXN0LT5lbWl0S2V5U3Ryb2tlKSwgdGVzdCk7CisKKyAgICB0ZXN0LT53YWl0KDEpOworICAg
IGd0a193aWRnZXRfZGVzdHJveSh3aW5kb3cpOworCisgICAgVmVjdG9yPFVJRnVsbFNjcmVlbkNs
aWVudFRlc3Q6OldlYlZpZXdFdmVudHM+JiBldmVudHMgPSB0ZXN0LT5tX3dlYlZpZXdFdmVudHM7
CisKKyAgICBpZiAodGVzdC0+bV9mdWxsU2NyZWVuQWxsb3dlZCkgeworICAgICAgICBnX2Fzc2Vy
dF9jbXBpbnQoZXZlbnRzLnNpemUoKSwgPT0sIDIpOworICAgICAgICBnX2Fzc2VydF9jbXBpbnQo
ZXZlbnRzWzBdLCA9PSwgVUlGdWxsU2NyZWVuQ2xpZW50VGVzdDo6RW50ZXJpbmdGdWxsU2NyZWVu
KTsKKyAgICAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1sxXSwgPT0sIFVJRnVsbFNjcmVlbkNs
aWVudFRlc3Q6OkxlYXZpbmdGdWxsU2NyZWVuKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZ19hc3Nl
cnRfY21waW50KGV2ZW50cy5zaXplKCksID09LCAwKTsKK30KKwogdm9pZCBiZWZvcmVBbGwoKQog
ewogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiZGVmYXVsdC1jb250ZXh0
IiwgdGVzdFdlYlZpZXdEZWZhdWx0Q29udGV4dCk7CkBAIC0zNzQsNiArNDc4LDggQEAgdm9pZCBi
ZWZvcmVBbGwoKQogICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImphdmFz
Y3JpcHQtZGlhbG9ncyIsIHRlc3RXZWJWaWV3SmF2YVNjcmlwdERpYWxvZ3MpOwogICAgIFVJQ2xp
ZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgIndpbmRvdy1wcm9wZXJ0aWVzIiwgdGVzdFdl
YlZpZXdXaW5kb3dQcm9wZXJ0aWVzKTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJW
aWV3IiwgInpvb20tbGV2ZWwiLCB0ZXN0V2ViVmlld1pvb21MZXZlbCk7CisgICAgVUlGdWxsU2Ny
ZWVuQ2xpZW50VGVzdDo6YWRkV2l0aERhdGEoIldlYktpdFdlYlZpZXciLCAiZnVsbHNjcmVlbiIs
IHRlc3RXZWJWaWV3RnVsbFNjcmVlbiwgR0lOVF9UT19QT0lOVEVSKDEpKTsKKyAgICBVSUZ1bGxT
Y3JlZW5DbGllbnRUZXN0OjphZGRXaXRoRGF0YSgiV2ViS2l0V2ViVmlldyIsICJmdWxsc2NyZWVu
LWJsb2NrZWQiLCB0ZXN0V2ViVmlld0Z1bGxTY3JlZW4sIEdJTlRfVE9fUE9JTlRFUigwKSk7CiB9
CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9GdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3RrL0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmNwcAppbmRleCA1OTVlMzBhLi41
NDYyZWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmNwcApAQCAtNjgsNiArNjgsMTEgQEAgdm9pZCBG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlcjo6ZW50ZXJGdWxsU2NyZWVuKCkKICAgICBpZiAobV9m
dWxsU2NyZWVuRW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCisgICAgZ2Jvb2xlYW4gcmV0dXJu
VmFsdWU7CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKFdFQktJVF9XRUJfVklFVyhtX3dlYlZp
ZXdCYXNlLmdldCgpKSwgImVudGVyaW5nLWZ1bGxzY3JlZW4iLCAmcmV0dXJuVmFsdWUpOworICAg
IGlmICghcmV0dXJuVmFsdWUpCisgICAgICAgIHJldHVybjsKKwogICAgIHRoaXMtPmZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHkoKS0+d2lsbEVudGVyRnVsbFNjcmVlbigpOwogICAgIHRoaXMtPmZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHkoKS0+YmVnaW5FbnRlckZ1bGxTY3JlZW5BbmltYXRpb24oMTApOwog
CkBAIC04NSw2ICs5MCw5IEBAIHZvaWQgRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXI6OmV4aXRG
dWxsU2NyZWVuKCkKICAgICBpZiAoIW1fZnVsbFNjcmVlbkVuYWJsZWQpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIGdib29sZWFuIHJldHVyblZhbHVlOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFt
ZShXRUJLSVRfV0VCX1ZJRVcobV93ZWJWaWV3QmFzZS5nZXQoKSksICJsZWF2aW5nLWZ1bGxzY3Jl
ZW4iLCAmcmV0dXJuVmFsdWUpOworCiAgICAgR3RrV2lkZ2V0KiB0b3BMZXZlbFdpbmRvdyA9IGd0
a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQobV93ZWJWaWV3QmFzZS5nZXQoKSkpOwog
ICAgIGlmIChndGtfd2lkZ2V0X2lzX3RvcGxldmVsKHRvcExldmVsV2luZG93KSkKICAgICAgICAg
Z19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHRvcExldmVsV2luZG93LCByZWlu
dGVycHJldF9jYXN0PHZvaWQqPihvbkZ1bGxzY3JlZW5HdGtLZXlQcmVzc0V2ZW50KSwgdGhpcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1
dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCAxOTU0MDkyLi5iOWQ4MTY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMv
c3ltYm9scy5maWx0ZXIKQEAgLTksNiArOSw3IEBAIF9aTjNXVEYxNmZhc3RaZXJvZWRNYWxsb2NF
bTsKIF9aTjNXVEYyMGZhc3RNYWxsb2NTdGF0aXN0aWNzRXY7CiBfWk4zV1RGOGZhc3RGcmVlRVB2
OwogX1pOM1dURjEzZnJlZU93bmVkR1B0ckk3X0dFcnJvckVFdlBUXzsKK19aTjNXVEYxM2ZyZWVP
d25lZEdQdHJJOV9HZGtFdmVudEVFdlBUXzsKIF9aTjNXVEY4SW50ZXJuYWwyMWZhc3RNYWxsb2NN
YXRjaEZhaWxlZEVQdjsKIF9aTjNXVEYzTUQ1OGFkZEJ5dGVzKjsKIF9aTjNXVEYzTUQ1OGNoZWNr
c3VtKjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCAwYmFhYWZiLi4xZTk2NmVkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMDEtMzEgIFBoaWxpcHBlIE5vcm1h
bmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXSzJdW0dUS10gRnVsbFNjcmVl
biBzaWduYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NjE2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSB0aGUgdHdvIG5ldyBlbnRlcmluZy9sZWF2aW5nIGZ1bGxzY3JlZW4gc2lnbmFscyB0byBo
aWRlL3Nob3cKKyAgICAgICAgdGhlIFVSTCBiYXIgYW5kIGFzayB0aGUgdXNlcidzIHBlcm1pc3Np
b24gYmVmb3JlIGVudGVyaW5nCisgICAgICAgIGZ1bGxzY3JlZW4uCisKKyAgICAgICAgKiBNaW5p
QnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jOgorICAgICAgICAod2ViVmlld0Z1bGxzY3JlZW5N
ZXNzYWdlV2luZG93Q2xvc2UpOgorICAgICAgICAod2ViVmlld1dpbmRvd1N0YXRlRXZlbnQpOgor
ICAgICAgICAod2ViVmlld0VudGVyaW5nRnVsbFNjcmVlbik6CisgICAgICAgICh3ZWJWaWV3TGVh
dmluZ0Z1bGxTY3JlZW4pOgorICAgICAgICAod2ViVmlld0NyZWF0ZSk6CisgICAgICAgIChicm93
c2VyV2luZG93Q29uc3RydWN0ZWQpOgorCiAyMDEyLTAyLTAxICBOw6FuZG9yIEh1c3prYSAgPGh1
c3prYS5uYW5kb3JAc3R1ZC51LXN6ZWdlZC5odT4KIAogICAgICAgICBbUXRdIEF1dG9tYXRpYyBj
bGVhbiBidWlsZCBmZWF0dXJlIGFsd2F5cyBkbyBjbGVhbiBidWlsZCB3aXRoIC0tbm8td2Via2l0
MgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYyBiL1Rv
b2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKaW5kZXggZTA0YWIwYi4uMzI0Mjdl
MyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYworKysg
Yi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCkBAIC0yNiw2ICsyNiw3IEBA
CiAgKi8KIAogI2luY2x1ZGUgIkJyb3dzZXJXaW5kb3cuaCIKKwogI2luY2x1ZGUgIkJyb3dzZXJT
ZXR0aW5nc0RpYWxvZy5oIgogCiBlbnVtIHsKQEAgLTQ1LDcgKzQ2LDYgQEAgc3RydWN0IF9Ccm93
c2VyV2luZG93IHsKICAgICBHdGtXaWRnZXQgKnN0YXR1c0xhYmVsOwogICAgIEd0a1dpZGdldCAq
c2V0dGluZ3NEaWFsb2c7CiAgICAgV2ViS2l0V2ViVmlldyAqd2ViVmlldzsKLQogfTsKIAogc3Ry
dWN0IF9Ccm93c2VyV2luZG93Q2xhc3MgewpAQCAtMjE4LDYgKzIxOCw1NSBAQCBzdGF0aWMgdm9p
ZCB3ZWJWaWV3UmVhZHlUb1Nob3coV2ViS2l0V2ViVmlldyAqd2ViVmlldywgQnJvd3NlcldpbmRv
dyAqd2luZG93KQogICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKHdpbmRvdykpOwogfQog
CitzdGF0aWMgZ2Jvb2xlYW4gd2ViVmlld0Z1bGxzY3JlZW5NZXNzYWdlV2luZG93Q2xvc2UoR3Rr
V2lkZ2V0KiBkaWFsb2cpCit7CisgICAgaWYgKEdUS19JU19XSURHRVQoZGlhbG9nKSkKKyAgICAg
ICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKEdUS19ESUFMT0coZGlhbG9nKSwgImNsb3NlIik7Cisg
ICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2ViVmlld1dpbmRvd1N0YXRl
RXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50V2luZG93U3RhdGUqIGV2ZW50LCBCcm93
c2VyV2luZG93KiB3aW5kb3cpCit7CisgICAgaWYgKGV2ZW50LT5uZXdfd2luZG93X3N0YXRlICYg
R0RLX1dJTkRPV19TVEFURV9GVUxMU0NSRUVOKSB7CisgICAgICAgIGNvbnN0IGdjaGFyICp1cmkg
PSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh3aW5kb3ctPndlYlZpZXcpOworICAgICAgICBHdGtX
aWRnZXQgKmRpYWxvZyA9IGd0a19tZXNzYWdlX2RpYWxvZ19uZXcoR1RLX1dJTkRPVyh3aW5kb3cp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RL
X0RJQUxPR19NT0RBTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdUS19NRVNTQUdFX0lORk8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHVEtfQlVUVE9OU19DTE9TRSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyBpcyBub3cgZnVsbCBzY3Jl
ZW4uIFByZXNzIEVTQyBvciBmIHRvIGV4aXQuIiwgdXJpKTsKKyAgICAgICAgZ19zaWduYWxfY29u
bmVjdF9zd2FwcGVkKGRpYWxvZywgInJlc3BvbnNlIiwgR19DQUxMQkFDSyhndGtfd2lkZ2V0X2Rl
c3Ryb3kpLCBkaWFsb2cpOworICAgICAgICBnX3RpbWVvdXRfYWRkKDE1MDAsIChHU291cmNlRnVu
Yykgd2ViVmlld0Z1bGxzY3JlZW5NZXNzYWdlV2luZG93Q2xvc2UsIGRpYWxvZyk7CisgICAgICAg
IGd0a19kaWFsb2dfcnVuKEdUS19ESUFMT0coZGlhbG9nKSk7CisgICAgfQorICAgIHJldHVybiBU
UlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2ViVmlld0VudGVyaW5nRnVsbFNjcmVlbihXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3LCBCcm93c2VyV2luZG93KiB3aW5kb3cpCit7CisgICAgY29uc3Qg
Z2NoYXIgKnVyaSA9IHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHdpbmRvdy0+d2ViVmlldyk7Cisg
ICAgR3RrV2lkZ2V0ICpkaWFsb2cgPSBndGtfbWVzc2FnZV9kaWFsb2dfbmV3KEdUS19XSU5ET1co
d2luZG93KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R1RLX0RJQUxPR19NT0RBTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR1RLX01FU1NBR0VfSU5GTywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR1RLX0JVVFRPTlNfWUVTX05PLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWxsb3cgZnVsbCBzY3JlZW4gZGlzcGxheSBv
ZiAlcyA/IiwgdXJpKTsKKyAgICBnaW50IHJlc3VsdCA9IGd0a19kaWFsb2dfcnVuKEdUS19ESUFM
T0coZGlhbG9nKSk7CisgICAgaWYgKHJlc3VsdCA9PSBHVEtfUkVTUE9OU0VfWUVTKSB7CisgICAg
ICAgIGdfc2lnbmFsX2Nvbm5lY3QoR1RLX1dJREdFVCh3aW5kb3cpLCAid2luZG93LXN0YXRlLWV2
ZW50IiwgR19DQUxMQkFDSyh3ZWJWaWV3V2luZG93U3RhdGVFdmVudCksIHdpbmRvdyk7CisgICAg
ICAgIGd0a193aWRnZXRfaGlkZSh3aW5kb3ctPnRvb2xiYXIpOworICAgICAgICBndGtfd2lkZ2V0
X2Rlc3Ryb3koR1RLX1dJREdFVChkaWFsb2cpKTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAg
fQorICAgIGd0a193aWRnZXRfZGVzdHJveShHVEtfV0lER0VUKGRpYWxvZykpOworICAgIHJldHVy
biBGQUxTRTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYlZpZXdMZWF2aW5nRnVsbFNjcmVlbihX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBCcm93c2VyV2luZG93KiB3aW5kb3cpCit7CisgICAgZ3Rr
X3dpZGdldF9zaG93KHdpbmRvdy0+dG9vbGJhcik7CisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlz
Y29ubmVjdF9ieV9mdW5jKEdUS19XSURHRVQod2luZG93KSwgR19DQUxMQkFDSyh3ZWJWaWV3V2lu
ZG93U3RhdGVFdmVudCksIHdpbmRvdyk7CisgICAgcmV0dXJuIFRSVUU7Cit9CisKIHN0YXRpYyBH
dGtXaWRnZXQgKndlYlZpZXdDcmVhdGUoV2ViS2l0V2ViVmlldyAqd2ViVmlldywgQnJvd3Nlcldp
bmRvdyAqd2luZG93KQogewogICAgIFdlYktpdFdlYlZpZXcgKm5ld1dlYlZpZXcgPSBXRUJLSVRf
V0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQod2Via2l0X3dlYl92aWV3
X2dldF9jb250ZXh0KHdlYlZpZXcpKSk7CkBAIC0yMjYsNiArMjc1LDggQEAgc3RhdGljIEd0a1dp
ZGdldCAqd2ViVmlld0NyZWF0ZShXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBCcm93c2VyV2luZG93
ICp3aW5kb3cpCiAgICAgR3RrV2lkZ2V0ICpuZXdXaW5kb3cgPSBicm93c2VyX3dpbmRvd19uZXco
bmV3V2ViVmlldyk7CiAgICAgZ19zaWduYWxfY29ubmVjdChuZXdXZWJWaWV3LCAicmVhZHktdG8t
c2hvdyIsIEdfQ0FMTEJBQ0sod2ViVmlld1JlYWR5VG9TaG93KSwgbmV3V2luZG93KTsKICAgICBn
X3NpZ25hbF9jb25uZWN0KG5ld1dlYlZpZXcsICJjbG9zZSIsIEdfQ0FMTEJBQ0sod2ViVmlld0Ns
b3NlKSwgbmV3V2luZG93KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG5ld1dlYlZpZXcsICJlbnRl
cmluZy1mdWxsc2NyZWVuIiwgR19DQUxMQkFDSyh3ZWJWaWV3RW50ZXJpbmdGdWxsU2NyZWVuKSwg
bmV3V2luZG93KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG5ld1dlYlZpZXcsICJsZWF2aW5nLWZ1
bGxzY3JlZW4iLCBHX0NBTExCQUNLKHdlYlZpZXdMZWF2aW5nRnVsbFNjcmVlbiksIG5ld1dpbmRv
dyk7CiAgICAgcmV0dXJuIEdUS19XSURHRVQobmV3V2ViVmlldyk7CiB9CiAKQEAgLTI1OCw3ICsz
MDksNyBAQCBzdGF0aWMgdm9pZCBicm93c2VyV2luZG93R2V0UHJvcGVydHkoR09iamVjdCAqb2Jq
ZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSAqdmFsdQogCiBzdGF0aWMgdm9pZCBicm93c2VyV2lu
ZG93U2V0UHJvcGVydHkoR09iamVjdCAqb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1
ZSAqdmFsdWUsIEdQYXJhbVNwZWMgKnBzcGVjKQogewotICAgIEJyb3dzZXJXaW5kb3cqIHdpbmRv
dyA9IEJST1dTRVJfV0lORE9XKG9iamVjdCk7CisgICAgQnJvd3NlcldpbmRvdyAqd2luZG93ID0g
QlJPV1NFUl9XSU5ET1cob2JqZWN0KTsKIAogICAgIHN3aXRjaCAocHJvcElkKSB7CiAgICAgY2Fz
ZSBQUk9QX1ZJRVc6CkBAIC0zMzMsNiArMzg0LDggQEAgc3RhdGljIHZvaWQgYnJvd3NlcldpbmRv
d0NvbnN0cnVjdGVkKEdPYmplY3QgKmdPYmplY3QpCiAgICAgZ19zaWduYWxfY29ubmVjdCh3aW5k
b3ctPndlYlZpZXcsICJub3RpZnk6OnRpdGxlIiwgR19DQUxMQkFDSyh3ZWJWaWV3VGl0bGVDaGFu
Z2VkKSwgd2luZG93KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdpbmRvdy0+d2ViVmlldywgImNy
ZWF0ZSIsIEdfQ0FMTEJBQ0sod2ViVmlld0NyZWF0ZSksIHdpbmRvdyk7CiAgICAgZ19zaWduYWxf
Y29ubmVjdCh3aW5kb3ctPndlYlZpZXcsICJsb2FkLWZhaWxlZCIsIEdfQ0FMTEJBQ0sod2ViVmll
d0xvYWRGYWlsZWQpLCB3aW5kb3cpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2luZG93LT53ZWJW
aWV3LCAiZW50ZXJpbmctZnVsbHNjcmVlbiIsIEdfQ0FMTEJBQ0sod2ViVmlld0VudGVyaW5nRnVs
bFNjcmVlbiksIHdpbmRvdyk7CisgICAgZ19zaWduYWxfY29ubmVjdCh3aW5kb3ctPndlYlZpZXcs
ICJsZWF2aW5nLWZ1bGxzY3JlZW4iLCBHX0NBTExCQUNLKHdlYlZpZXdMZWF2aW5nRnVsbFNjcmVl
biksIHdpbmRvdyk7CiAKICAgICBXZWJLaXRCYWNrRm9yd2FyZExpc3QgKmJhY2tGb3J3YWRsaXN0
ID0gd2Via2l0X3dlYl92aWV3X2dldF9iYWNrX2ZvcndhcmRfbGlzdCh3aW5kb3ctPndlYlZpZXcp
OwogICAgIGdfc2lnbmFsX2Nvbm5lY3QoYmFja0ZvcndhZGxpc3QsICJjaGFuZ2VkIiwgR19DQUxM
QkFDSyhiYWNrRm9yd2FkbGlzdENoYW5nZWQpLCB3aW5kb3cpOwotLSAKMS43Ljk=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131323</attachid>
            <date>2012-03-12 08:04:37 -0700</date>
            <delta_ts>2012-03-17 04:36:06 -0700</delta_ts>
            <desc>FullScreen signals</desc>
            <filename>FullScreen-signals.patch</filename>
            <type>text/plain</type>
            <size>22493</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBhZDA2ZjY4NDZlODY0M2ZlNzlmNmU4YTg3NjZhZGEyYzE1NDM0OTNiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDMxIEphbiAyMDEyIDE2OjQxOjQ2ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
RnVsbFNjcmVlbiBzaWduYWxzCgotLS0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAzMSArKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIHwgICA2NiArKysrKysrKysrKysKIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCAgIHwgICAgMiArCiAuLi4v
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaCAgICAgICB8ICAgIDMgKy0K
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RNYWluLmggIHwgICAg
NSArCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwICB8
ICAxMDggKysrKysrKysrKysrKysrKysrKy0KIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3dlYmtpdDJtYXJzaGFsLmxpc3QgIHwgICAgMSArCiAuLi4vVUlQcm9jZXNzL2d0ay9GdWxsU2Ny
ZWVuV2luZG93Q29udHJvbGxlci5jcHAgICB8ICAgMTAgKysKIFRvb2xzL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxOSArKysrCiBUb29scy9NaW5pQnJv
d3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jICAgICAgICAgICAgICB8ICAgNTcgKysrKysrKysrKy0K
IDEwIGZpbGVzIGNoYW5nZWQsIDI5OCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCBjM2E1NTIzLi5iYWUyYjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzYgQEAK
IDIwMTItMDEtMzEgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCisg
ICAgICAgIFtXSzJdW0dUS10gRnVsbFNjcmVlbiBzaWduYWxzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjE2NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGVudGVyaW5nLWZ1bGxzY3JlZW4gYW5k
IGxlYXZpbmctZnVsbHNjcmVlbiBzaWduYWxzLCBtZWFudCB0bworICAgICAgICBiZSB1c2VkIGJ5
IHRoZSB1c2VyIGFnZW50IHRvIGJlIG5vdGlmaWVkIHdoZW4gYW4gZWxlbWVudCByZXF1ZXN0cwor
ICAgICAgICBmdWxsIHNjcmVlbiBkaXNwbGF5IGFuZCB3aGVuIHRoZSBmdWxsIHNjcmVlbiBkaXNw
bGF5IGlzIHRvIGJlCisgICAgICAgIGRpc2FibGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3Nf
aW5pdCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3RW50ZXJpbmdGdWxsU2NyZWVuKToKKyAgICAg
ICAgKHdlYmtpdFdlYlZpZXdMZWF2aW5nRnVsbFNjcmVlbik6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMv
VGVzdFdlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAoV2luZG93UHJvcGVydGllczo6ZW50ZXJp
bmdGdWxsU2NyZWVuKToKKyAgICAgICAgKFdpbmRvd1Byb3BlcnRpZXM6OmxlYXZpbmdGdWxsU2Ny
ZWVuKToKKyAgICAgICAgKFdpbmRvd1Byb3BlcnRpZXM6OlVJQ2xpZW50VGVzdCk6CisgICAgICAg
IChlbWl0S2V5U3Ryb2tlKToKKyAgICAgICAgKHRlc3RXZWJWaWV3RnVsbFNjcmVlbik6CisgICAg
ICAgICh0ZXN0V2ViVmlld0Z1bGxTY3JlZW5CbG9ja2VkKToKKyAgICAgICAgKGJlZm9yZUFsbCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mm1hcnNoYWwubGlzdDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZ3RrL0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKEZ1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyOjplbnRlckZ1bGxTY3JlZW4pOgorICAgICAg
ICAoRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXI6OmV4aXRGdWxsU2NyZWVuKToKKworMjAxMi0w
MS0zMSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKICAgICAgICAg
W0dUS11bV0syXSBJbml0aWFsIEZ1bGxTY3JlZW4gc3VwcG9ydAogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1NTMKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCA0ZjE3ZDQ2Li4z
MjlhMDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmNwcApAQCAtNjMsNiArNjMsOCBAQCBlbnVtIHsKICAgICBNT1VTRV9UQVJHRVRf
Q0hBTkdFRCwKIAogICAgIFBSSU5UX1JFUVVFU1RFRCwKKyAgICBFTlRFUklOR19GVUxMU0NSRUVO
LAorICAgIExFQVZJTkdfRlVMTFNDUkVFTiwKIAogICAgIExBU1RfU0lHTkFMCiB9OwpAQCAtMjkw
LDYgKzI5Miw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktp
dFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgIHdlYlZpZXdDbGFzcy0+Y3JlYXRlID0g
d2Via2l0V2ViVmlld0NyZWF0ZTsKICAgICB3ZWJWaWV3Q2xhc3MtPnNjcmlwdF9kaWFsb2cgPSB3
ZWJraXRXZWJWaWV3U2NyaXB0RGlhbG9nOwogICAgIHdlYlZpZXdDbGFzcy0+ZGVjaWRlX3BvbGlj
eSA9IHdlYmtpdFdlYlZpZXdEZWNpZGVQb2xpY3k7CisgICAgd2ViVmlld0NsYXNzLT5lbnRlcmlu
Z19mdWxsc2NyZWVuID0gd2Via2l0V2ViVmlld0VudGVyaW5nRnVsbFNjcmVlbjsKKyAgICB3ZWJW
aWV3Q2xhc3MtPmxlYXZpbmdfZnVsbHNjcmVlbiA9IHdlYmtpdFdlYlZpZXdMZWF2aW5nRnVsbFNj
cmVlbjsKIAogICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZSh3ZWJWaWV3Q2xhc3MsIHNpemVv
ZihXZWJLaXRXZWJWaWV3UHJpdmF0ZSkpOwogCkBAIC02NjYsNiArNjcwLDU4IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmll
d0NsYXNzKQogICAgICAgICAgICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fT0JK
RUNULAogICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDEsCiAgICAgICAgICAg
ICAgICAgICAgICBXRUJLSVRfVFlQRV9QUklOVF9PUEVSQVRJT04pOworCisgICAgLyoqCisgICAg
ICogV2ViS2l0V2ViVmlldzo6ZW50ZXJpbmctZnVsbHNjcmVlbjoKKyAgICAgKiBAd2ViX3ZpZXc6
IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQuCisgICAg
ICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gSmF2YVNjcmlwdCBjb2RlIGNhbGxzCisgICAgICogPGZ1
bmN0aW9uPmVsZW1lbnQud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW48L2Z1bmN0aW9uPi4gSWYgdGhl
CisgICAgICogc2lnbmFsIGlzIG5vdCBoYW5kbGVkIHRoZSBXZWJWaWV3IHdpbGwgcHJvY2VlZCB0
byBmdWxsIHNjcmVlbgorICAgICAqIGl0cyB0b3AgbGV2ZWwgd2luZG93LiBUaGlzIHNpZ25hbCBj
YW4gYmUgdXNlZCBieSBjbGllbnQgY29kZSB0bworICAgICAqIHJlcXVlc3QgcGVybWlzc2lvbiB0
byB0aGUgdXNlciBwcmlvciBkb2luZyB0aGUgZnVsbCBzY3JlZW4KKyAgICAgKiB0cmFuc2l0aW9u
IGFuZCBldmVudHVhbGx5IHByZXBhcmUgdGhlIHRvcC1sZXZlbCB3aW5kb3cKKyAgICAgKiAoZS5n
LiBoaWRlIHNvbWUgd2lkZ2V0cyB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZSBwYXJ0IG9mIHRoZQor
ICAgICAqIGZ1bGwgc2NyZWVuIHdpbmRvdykuCisgICAgICoKKyAgICAgKiBSZXR1cm5zOiAlVFJV
RSB0byBzdG9wIG90aGVyIGhhbmRsZXJzIGZyb20gYmVpbmcgaW52b2tlZCBmb3IgdGhlIGV2ZW50
LgorICAgICAqICAgICVGQUxTRSB0byBjb250aW51ZSBlbWlzc2lvbiBvZiB0aGUgZXZlbnQuCisg
ICAgICoKKyAgICAgKiBTaW5jZTogMS45LjAKKyAgICAgKi8KKyAgICBzaWduYWxzW0VOVEVSSU5H
X0ZVTExTQ1JFRU5dID0KKyAgICAgICAgICAgIGdfc2lnbmFsX25ldygiZW50ZXJpbmctZnVsbHNj
cmVlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmll
d0NsYXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNz
LCBlbnRlcmluZ19mdWxsc2NyZWVuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBnX3NpZ25h
bF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAg
d2Via2l0X21hcnNoYWxfQk9PTEVBTl9fVk9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBH
X1RZUEVfQk9PTEVBTiwgMCk7CisKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6Omxl
YXZpbmctZnVsbHNjcmVlbjoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBv
biB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQuCisgICAgICoKKyAgICAgKiBFbWl0dGVkIHdo
ZW4gdGhlIFdlYlZpZXcgaXMgYWJvdXQgdG8gcmVzdG9yZSBpdHMgdG9wIGxldmVsCisgICAgICog
d2luZG93IG91dCBvZiBpdHMgZnVsbCBzY3JlZW4gc3RhdGUuIFRoaXMgc2lnbmFsIGNhbiBiZSB1
c2VkIGJ5CisgICAgICogY2xpZW50IGNvZGUgdG8gcmVzdG9yZSB3aWRnZXRzIGhpZGRlbiBkdXJp
bmcgdGhlCisgICAgICogZW50ZXJpbmctZnVsbHNjcmVlbiBzdGFnZSBmb3IgaW5zdGFuY2UuCisg
ICAgICoKKyAgICAgKiBSZXR1cm5zOiAlVFJVRSB0byBzdG9wIG90aGVyIGhhbmRsZXJzIGZyb20g
YmVpbmcgaW52b2tlZCBmb3IgdGhlIGV2ZW50LgorICAgICAqICAgICVGQUxTRSB0byBjb250aW51
ZSBlbWlzc2lvbiBvZiB0aGUgZXZlbnQuCisgICAgICoKKyAgICAgKiBTaW5jZTogMS45LjAKKyAg
ICAgKi8KKyAgICBzaWduYWxzW0xFQVZJTkdfRlVMTFNDUkVFTl0gPQorICAgICAgICAgICAgZ19z
aWduYWxfbmV3KCJsZWF2aW5nLWZ1bGxzY3JlZW4iLAorICAgICAgICAgICAgICAgICAgICAgICAg
IEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgR19TVFJVQ1Rf
T0ZGU0VUKFdlYktpdFdlYlZpZXdDbGFzcywgbGVhdmluZ19mdWxsc2NyZWVuKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIDAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fVk9JRCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMCk7CisKIH0KIAogc3RhdGlj
IGJvb2wgdXBkYXRlUmVwbGFjZUNvbnRlbnRTdGF0dXMoV2ViS2l0V2ViVmlldyogd2ViVmlldywg
V2ViS2l0TG9hZEV2ZW50IGxvYWRFdmVudCkKQEAgLTgyMiw2ICs4NzgsMTYgQEAgdm9pZCB3ZWJr
aXRXZWJWaWV3UHJpbnRGcmFtZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXS0ZyYW1lUmVmIHdr
RnJhbWUpCiAgICAgZ19zaWduYWxfY29ubmVjdChwcmludE9wZXJhdGlvbi5sZWFrUmVmKCksICJm
aW5pc2hlZCIsIEdfQ0FMTEJBQ0soZ19vYmplY3RfdW5yZWYpLCAwKTsKIH0KIAorZ2Jvb2xlYW4g
d2Via2l0V2ViVmlld0VudGVyaW5nRnVsbFNjcmVlbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQor
eworICAgIHJldHVybiBGQUxTRTsKK30KKworZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0xlYXZpbmdG
dWxsU2NyZWVuKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgcmV0dXJuIEZBTFNFOwor
fQorCiAvKioKICAqIHdlYmtpdF93ZWJfdmlld19uZXc6CiAgKgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IGZiNGM0OGEuLmFiMGE3
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3LmgKQEAgLTE0Myw2ICsxNDMsOCBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAg
ICAgICAgICAgIG1vZGlmaWVycyk7CiAgICAgZ2Jvb2xlYW4gICAoKiBwcmludF9yZXF1ZXN0ZWQp
ICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQcmludE9wZXJhdGlvbiAgICAgICpw
cmludF9vcGVyYXRpb24pOworICAgIGdib29sZWFuICAgKCogZW50ZXJpbmdfZnVsbHNjcmVlbikg
IChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CisgICAgZ2Jvb2xlYW4gICAo
KiBsZWF2aW5nX2Z1bGxzY3JlZW4pICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92
aWV3KTsKIAogICAgIC8qIFBhZGRpbmcgZm9yIGZ1dHVyZSBleHBhbnNpb24gKi8KICAgICB2b2lk
ICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGFkOGFiMjAu
Ljk3NmEyYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaApAQCAtNDUsNSArNDUsNiBAQCBXS1N0cmluZ1JlZiB3
ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdFByb21wdChXZWJLaXRXZWJWaWV3KiwgY29uc3QgQ1N0
cmluZyYgbWVzcwogdm9pZCB3ZWJraXRXZWJWaWV3TWFrZVBvbGljeURlY2lzaW9uKFdlYktpdFdl
YlZpZXcqLCBXZWJLaXRQb2xpY3lEZWNpc2lvblR5cGUsIFdlYktpdFBvbGljeURlY2lzaW9uKik7
CiB2b2lkIHdlYmtpdFdlYlZpZXdNb3VzZVRhcmdldENoYW5nZWQoV2ViS2l0V2ViVmlldyosIFdL
SGl0VGVzdFJlc3VsdFJlZiwgdW5zaWduZWQgbW9kaWZpZXJzKTsKIHZvaWQgd2Via2l0V2ViVmll
d1ByaW50RnJhbWUoV2ViS2l0V2ViVmlldyosIFdLRnJhbWVSZWYpOwotCitnYm9vbGVhbiB3ZWJr
aXRXZWJWaWV3RW50ZXJpbmdGdWxsU2NyZWVuKFdlYktpdFdlYlZpZXcqKTsKK2dib29sZWFuIHdl
YmtpdFdlYlZpZXdMZWF2aW5nRnVsbFNjcmVlbihXZWJLaXRXZWJWaWV3Kik7CiAjZW5kaWYgLy8g
V2ViS2l0V2ViVmlld1ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvdGVzdHMvVGVzdE1haW4uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3Rlc3RzL1Rlc3RNYWluLmgKaW5kZXggMzlhMjAwMC4uYWMzOTFhYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdE1haW4uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0TWFpbi5oCkBAIC0z
Nyw2ICszNywxMSBAQAogICAgIHsgXAogICAgICAgICBHT3duUHRyPGdjaGFyPiB0ZXN0UGF0aChn
X3N0cmR1cF9wcmludGYoIi93ZWJraXQyLyVzLyVzIiwgc3VpdGVOYW1lLCB0ZXN0TmFtZSkpOyBc
CiAgICAgICAgIGdfdGVzdF9hZGQodGVzdFBhdGguZ2V0KCksIENsYXNzTmFtZSwgMCwgQ2xhc3NO
YW1lOjpzZXRVcCwgdGVzdEZ1bmMsIENsYXNzTmFtZTo6dGVhckRvd24pOyBcCisgICAgfSBcCisg
ICAgc3RhdGljIHZvaWQgYWRkV2l0aERhdGEoY29uc3QgY2hhciogc3VpdGVOYW1lLCBjb25zdCBj
aGFyKiB0ZXN0TmFtZSwgdm9pZCAoKnRlc3RGdW5jKShDbGFzc05hbWUqLCBjb25zdCB2b2lkKiks
IGdjb25zdHBvaW50ZXIgZGF0YSkgXAorICAgIHsgXAorICAgICAgICBHT3duUHRyPGdjaGFyPiB0
ZXN0UGF0aChnX3N0cmR1cF9wcmludGYoIi93ZWJraXQyLyVzLyVzIiwgc3VpdGVOYW1lLCB0ZXN0
TmFtZSkpOyBcCisgICAgICAgIGdfdGVzdF9hZGQodGVzdFBhdGguZ2V0KCksIENsYXNzTmFtZSwg
ZGF0YSwgQ2xhc3NOYW1lOjpzZXRVcCwgdGVzdEZ1bmMsIENsYXNzTmFtZTo6dGVhckRvd24pOyBc
CiAgICAgfQogCiBjbGFzcyBUZXN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAppbmRleCBiZmVk
YTE2Li44NGY5MzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCkBAIC0yMiw2ICsyMiw5IEBA
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPGdkay9nZGsu
aD4KKyNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR093blB0
ckd0ay5oPgogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0RlZmF1bHRDb250ZXh0KFdlYlZpZXdU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewpAQCAtODksNiArOTIsNyBAQCBzdGF0aWMgdm9p
ZCB0ZXN0V2ViVmlld1JlcGxhY2VDb250ZW50KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2lu
dGVyKQogICAgIHRlc3QtPndhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCJDb250ZW50IFJlcGxhY2Vk
Iik7CiB9CiAKKwogc3RhdGljIGNvbnN0IGNoYXIqIGtBbGVydERpYWxvZ01lc3NhZ2UgPSAiV2Vi
S2l0R1RLKyBhbGVydCBkaWFsb2cgbWVzc2FnZSI7CiBzdGF0aWMgY29uc3QgY2hhcioga0NvbmZp
cm1EaWFsb2dNZXNzYWdlID0gIldlYktpdEdUSysgY29uZmlybSBkaWFsb2cgbWVzc2FnZSI7CiBz
dGF0aWMgY29uc3QgY2hhcioga1Byb21wdERpYWxvZ01lc3NhZ2UgPSAiV2ViS2l0R1RLKyBwcm9t
cHQgZGlhbG9nIG1lc3NhZ2UiOwpAQCAtMTAxLDcgKzEwNSw3IEBAIHB1YmxpYzoKICAgICBlbnVt
IFdlYlZpZXdFdmVudHMgewogICAgICAgICBDcmVhdGUsCiAgICAgICAgIFJlYWR5VG9TaG93LAot
ICAgICAgICBDbG9zZQorICAgICAgICBDbG9zZSwKICAgICB9OwogCiAgICAgY2xhc3MgV2luZG93
UHJvcGVydGllcyB7CkBAIC0yNzgsNiArMjgyLDcgQEAgcHVibGljOgogICAgICAgICBnX21haW5f
bG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOwogICAgIH0KIAorCiAgICAgVUlDbGllbnRUZXN0
KCkKICAgICAgICAgOiBtX3NjcmlwdERpYWxvZ1R5cGUoV0VCS0lUX1NDUklQVF9ESUFMT0dfQUxF
UlQpCiAgICAgICAgICwgbV9zY3JpcHREaWFsb2dDb25maXJtZWQodHJ1ZSkKQEAgLTMyMCw2ICsz
MjUsNzUgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGludCBtX21vdXNlVGFyZ2V0TW9kaWZpZXJz
OwogfTsKIAorY2xhc3MgVUlGdWxsU2NyZWVuQ2xpZW50VGVzdDogcHVibGljIFdlYlZpZXdUZXN0
IHsKK3B1YmxpYzoKKyAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKFVJRnVsbFNjcmVlbkNsaWVu
dFRlc3QpOworCisgICAgZW51bSBXZWJWaWV3RXZlbnRzIHsKKyAgICAgICAgRW50ZXJpbmdGdWxs
U2NyZWVuLAorICAgICAgICBMZWF2aW5nRnVsbFNjcmVlbgorICAgIH07CisKKyAgICBzdGF0aWMg
Z2Jvb2xlYW4gZW1pdEtleVN0cm9rZShncG9pbnRlciBkYXRhKQorICAgIHsKKyAgICAgICAgVUlG
dWxsU2NyZWVuQ2xpZW50VGVzdCogdGVzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VUlGdWxsU2NyZWVu
Q2xpZW50VGVzdCo+KGRhdGEpOworCisgICAgICAgIC8vIENyZWF0ZSBhbmQgc2VuZCB0aGUgZXZl
bnQuCisgICAgICAgIEdPd25QdHI8R2RrRXZlbnQ+IHByZXNzRXZlbnQoZ2RrX2V2ZW50X25ldyhH
REtfS0VZX1BSRVNTKSk7CisgICAgICAgIHByZXNzRXZlbnQtPmtleS5rZXl2YWwgPSBHREtfS0VZ
X2Y7CisgICAgICAgIEdka1dpbmRvdyogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KEdU
S19XSURHRVQodGVzdC0+bV93ZWJWaWV3KSk7CisgICAgICAgIHByZXNzRXZlbnQtPmtleS53aW5k
b3cgPSB3aW5kb3c7CisgICAgICAgIGdfb2JqZWN0X3JlZihwcmVzc0V2ZW50LT5rZXkud2luZG93
KTsKKworICAgICAgICBHZGtEZXZpY2VNYW5hZ2VyKiBtYW5hZ2VyID0gZ2RrX2Rpc3BsYXlfZ2V0
X2RldmljZV9tYW5hZ2VyKGdka193aW5kb3dfZ2V0X2Rpc3BsYXkod2luZG93KSk7CisgICAgICAg
IGdka19ldmVudF9zZXRfZGV2aWNlKHByZXNzRXZlbnQuZ2V0KCksIGdka19kZXZpY2VfbWFuYWdl
cl9nZXRfY2xpZW50X3BvaW50ZXIobWFuYWdlcikpOworCisgICAgICAgIC8vIFdoZW4gc3ludGhl
c2l6aW5nIGFuIGV2ZW50LCBhbiBpbnZhbGlkIGhhcmR3YXJlX2tleWNvZGUgdmFsdWUKKyAgICAg
ICAgLy8gY2FuIGNhdXNlIGl0IHRvIGJlIGJhZGx5IHByb2Nlc3NlZCBieSBHdGsrLgorICAgICAg
ICBHT3duUHRyPEdka0tleW1hcEtleT4ga2V5czsKKyAgICAgICAgZ2ludCBuX2tleXM7CisgICAg
ICAgIGlmIChnZGtfa2V5bWFwX2dldF9lbnRyaWVzX2Zvcl9rZXl2YWwoZ2RrX2tleW1hcF9nZXRf
ZGVmYXVsdCgpLCBHREtfS0VZX2YsICZrZXlzLm91dFB0cigpLCAmbl9rZXlzKSkKKyAgICAgICAg
ICAgIHByZXNzRXZlbnQtPmtleS5oYXJkd2FyZV9rZXljb2RlID0ga2V5cy5nZXQoKVswXS5rZXlj
b2RlOworCisgICAgICAgIEdPd25QdHI8R2RrRXZlbnQ+IHJlbGVhc2VFdmVudChnZGtfZXZlbnRf
Y29weShwcmVzc0V2ZW50LmdldCgpKSk7CisgICAgICAgIGd0a19tYWluX2RvX2V2ZW50KHByZXNz
RXZlbnQuZ2V0KCkpOworICAgICAgICByZWxlYXNlRXZlbnQtPmtleS50eXBlID0gR0RLX0tFWV9S
RUxFQVNFOworICAgICAgICBndGtfbWFpbl9kb19ldmVudChyZWxlYXNlRXZlbnQuZ2V0KCkpOwor
CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBzdGF0aWMgZ2Jvb2xlYW4gZW50
ZXJpbmdGdWxsU2NyZWVuKFdlYktpdFdlYlZpZXcqLCBVSUZ1bGxTY3JlZW5DbGllbnRUZXN0KiB0
ZXN0KQorICAgIHsKKyAgICAgICAgaWYgKCF0ZXN0LT5tX2Z1bGxTY3JlZW5CbG9ja2VkKSB7Cisg
ICAgICAgICAgICB0ZXN0LT5tX3dlYlZpZXdFdmVudHMuYXBwZW5kKEVudGVyaW5nRnVsbFNjcmVl
bik7CisgICAgICAgICAgICBnX2lkbGVfYWRkKHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+
KHRlc3QtPmVtaXRLZXlTdHJva2UpLCB0ZXN0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
dGVzdC0+bV9mdWxsU2NyZWVuQmxvY2tlZDsKKyAgICB9CisKKyAgICBzdGF0aWMgZ2Jvb2xlYW4g
bGVhdmluZ0Z1bGxTY3JlZW4oV2ViS2l0V2ViVmlldyosIFVJRnVsbFNjcmVlbkNsaWVudFRlc3Qq
IHRlc3QpCisgICAgeworICAgICAgICB0ZXN0LT5tX3dlYlZpZXdFdmVudHMuYXBwZW5kKExlYXZp
bmdGdWxsU2NyZWVuKTsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIFVJRnVs
bFNjcmVlbkNsaWVudFRlc3QoKQorICAgIHsKKyAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9l
bmFibGVfZnVsbHNjcmVlbih3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKG1fd2ViVmlldyks
IFRSVUUpOworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgImVudGVyaW5nLWZ1
bGxzY3JlZW4iLCBHX0NBTExCQUNLKGVudGVyaW5nRnVsbFNjcmVlbiksIHRoaXMpOworICAgICAg
ICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgImxlYXZpbmctZnVsbHNjcmVlbiIsIEdfQ0FM
TEJBQ0sobGVhdmluZ0Z1bGxTY3JlZW4pLCB0aGlzKTsKKyAgICB9CisKKyAgICB+VUlGdWxsU2Ny
ZWVuQ2xpZW50VGVzdCgpCisgICAgeworICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25u
ZWN0X21hdGNoZWQobV93ZWJWaWV3LCBHX1NJR05BTF9NQVRDSF9EQVRBLCAwLCAwLCAwLCAwLCB0
aGlzKTsKKyAgICB9CisKKyAgICBWZWN0b3I8V2ViVmlld0V2ZW50cz4gbV93ZWJWaWV3RXZlbnRz
OworICAgIGJvb2wgbV9mdWxsU2NyZWVuQmxvY2tlZDsKK307CisKIHN0YXRpYyB2b2lkIHRlc3RX
ZWJWaWV3Q3JlYXRlUmVhZHlDbG9zZShVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
CiB7CiAgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxib2R5IG9uTG9hZD1cIndpbmRvdy5vcGVu
KCkuY2xvc2UoKTtcIj48L2h0bWw+IiwgMCk7CkBAIC00NTIsNiArNTI2LDM2IEBAIHN0YXRpYyB2
b2lkIHRlc3RXZWJWaWV3Wm9vbUxldmVsKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQogICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHdlYmtpdF93ZWJfdmlld19nZXRfem9vbV9sZXZlbCh0
ZXN0LT5tX3dlYlZpZXcpLCA9PSwgMi41KTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdG
dWxsU2NyZWVuKFVJRnVsbFNjcmVlbkNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIgZGF0
YSkKK3sKKyAgICB0ZXN0LT5tX2Z1bGxTY3JlZW5CbG9ja2VkID0gR1BPSU5URVJfVE9fSU5UKGRh
dGEpOworICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9keT4iCisgICAgICAgICAgICAgICAg
ICAgIjxzY3JpcHQ+IgorICAgICAgICAgICAgICAgICAgICJ2YXIgZXZlbnROYW1lID0gJ2tleXBy
ZXNzJzsiCisgICAgICAgICAgICAgICAgICAgImRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lLCBmdW5jdGlvbiAoKSB7IgorICAgICAgICAgICAgICAgICAgICIgICAgZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50LndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7IgorICAgICAgICAgICAg
ICAgICAgICJ9LCBmYWxzZSk7IgorICAgICAgICAgICAgICAgICAgICI8L3NjcmlwdD48L2JvZHk+
PC9odG1sPiIsIDApOworCisgICAgR3RrV2lkZ2V0KiB3aW5kb3cgPSBndGtfd2luZG93X25ldyhH
VEtfV0lORE9XX1BPUFVQKTsKKyAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdp
bmRvdyksIEdUS19XSURHRVQodGVzdC0+bV93ZWJWaWV3KSk7CisKKyAgICBndGtfd2lkZ2V0X3No
b3dfYWxsKHdpbmRvdyk7CisgICAgZ190aW1lb3V0X2FkZCg1MCwgcmVpbnRlcnByZXRfY2FzdDxH
U291cmNlRnVuYz4odGVzdC0+ZW1pdEtleVN0cm9rZSksIHRlc3QpOworCisgICAgdGVzdC0+d2Fp
dCgxKTsKKyAgICBndGtfd2lkZ2V0X2Rlc3Ryb3kod2luZG93KTsKKworICAgIFZlY3RvcjxVSUZ1
bGxTY3JlZW5DbGllbnRUZXN0OjpXZWJWaWV3RXZlbnRzPiYgZXZlbnRzID0gdGVzdC0+bV93ZWJW
aWV3RXZlbnRzOworCisgICAgaWYgKCF0ZXN0LT5tX2Z1bGxTY3JlZW5CbG9ja2VkKSB7CisgICAg
ICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgpLCA9PSwgMik7CisgICAgICAgIGdfYXNz
ZXJ0X2NtcGludChldmVudHNbMF0sID09LCBVSUZ1bGxTY3JlZW5DbGllbnRUZXN0OjpFbnRlcmlu
Z0Z1bGxTY3JlZW4pOworICAgICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzFdLCA9PSwgVUlG
dWxsU2NyZWVuQ2xpZW50VGVzdDo6TGVhdmluZ0Z1bGxTY3JlZW4pOworICAgIH0gZWxzZQorICAg
ICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzLnNpemUoKSwgPT0sIDApOworfQorCiB2b2lkIGJl
Zm9yZUFsbCgpCiB7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJkZWZh
dWx0LWNvbnRleHQiLCB0ZXN0V2ViVmlld0RlZmF1bHRDb250ZXh0KTsKQEAgLTQ2Myw2ICs1Njcs
OCBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZp
ZXciLCAid2luZG93LXByb3BlcnRpZXMiLCB0ZXN0V2ViVmlld1dpbmRvd1Byb3BlcnRpZXMpOwog
ICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgIm1vdXNlLXRhcmdldCIsIHRl
c3RXZWJWaWV3TW91c2VUYXJnZXQpOwogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZp
ZXciLCAiem9vbS1sZXZlbCIsIHRlc3RXZWJWaWV3Wm9vbUxldmVsKTsKKyAgICBVSUZ1bGxTY3Jl
ZW5DbGllbnRUZXN0OjphZGRXaXRoRGF0YSgiV2ViS2l0V2ViVmlldyIsICJmdWxsc2NyZWVuIiwg
dGVzdFdlYlZpZXdGdWxsU2NyZWVuLCBHSU5UX1RPX1BPSU5URVIoMCkpOworICAgIFVJRnVsbFNj
cmVlbkNsaWVudFRlc3Q6OmFkZFdpdGhEYXRhKCJXZWJLaXRXZWJWaWV3IiwgImZ1bGxzY3JlZW4t
YmxvY2tlZCIsIHRlc3RXZWJWaWV3RnVsbFNjcmVlbiwgR0lOVF9UT19QT0lOVEVSKDEpKTsKIH0K
IAogdm9pZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay93ZWJraXQybWFyc2hhbC5saXN0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvd2Via2l0Mm1hcnNoYWwubGlzdAppbmRleCA1ZjczNTYwLi5mODE4ZDNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5saXN0
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJtYXJzaGFsLmxp
c3QKQEAgLTMsNiArMyw3IEBAIEJPT0xFQU46RU5VTSxTVFJJTkcsUE9JTlRFUgogQk9PTEVBTjpP
QkpFQ1QKIEJPT0xFQU46T0JKRUNULEVOVU0KIEJPT0xFQU46U1RSSU5HCitCT09MRUFOOlZPSUQK
IE9CSkVDVDpWT0lECiBWT0lEOk9CSkVDVCxVSU5UCiBWT0lEOk9CSkVDVCxQT0lOVEVSCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0Z1bGxTY3JlZW5XaW5kb3dDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvRnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXIuY3BwCmluZGV4IGFmZGI3OGMuLjdmMzQyMGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXIuY3BwCkBAIC02OCw2ICs2OCwxMSBAQCB2b2lkIEZ1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
OjplbnRlckZ1bGxTY3JlZW4oKQogICAgIGlmIChtX2Z1bGxTY3JlZW5FbmFibGVkKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKKyAgICBnX3NpZ25hbF9lbWl0
X2J5X25hbWUoV0VCS0lUX1dFQl9WSUVXKG1fd2ViVmlld0Jhc2UpLCAiZW50ZXJpbmctZnVsbHNj
cmVlbiIsICZyZXR1cm5WYWx1ZSk7CisgICAgaWYgKHJldHVyblZhbHVlKQorICAgICAgICByZXR1
cm47CisKICAgICB0aGlzLT5mdWxsU2NyZWVuTWFuYWdlclByb3h5KCktPndpbGxFbnRlckZ1bGxT
Y3JlZW4oKTsKIAogICAgIEd0a1dpZGdldCogdG9wTGV2ZWxXaW5kb3cgPSBndGtfd2lkZ2V0X2dl
dF90b3BsZXZlbChHVEtfV0lER0VUKG1fd2ViVmlld0Jhc2UpKTsKQEAgLTg0LDYgKzg5LDExIEBA
IHZvaWQgRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXI6OmV4aXRGdWxsU2NyZWVuKCkKICAgICBp
ZiAoIW1fZnVsbFNjcmVlbkVuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAorICAgIGdib29sZWFu
IHJldHVyblZhbHVlOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShXRUJLSVRfV0VCX1ZJRVco
bV93ZWJWaWV3QmFzZSksICJsZWF2aW5nLWZ1bGxzY3JlZW4iLCAmcmV0dXJuVmFsdWUpOworICAg
IGlmIChyZXR1cm5WYWx1ZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgR3RrV2lkZ2V0KiB0b3BM
ZXZlbFdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQobV93ZWJWaWV3
QmFzZSkpOwogICAgIGlmIChXZWJDb3JlOjp3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3co
dG9wTGV2ZWxXaW5kb3cpKQogICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5
X2Z1bmModG9wTGV2ZWxXaW5kb3csIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9uRnVsbHNjcmVl
bkd0a0tleVByZXNzRXZlbnQpLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjZjJlZGZmLi44MWY0ODQxIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTIt
MDEtMzEgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtXSzJdW0dUS10gRnVsbFNjcmVlbiBzaWduYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjE2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVzZSB0aGUgdHdvIG5ldyBlbnRlcmluZy9sZWF2aW5nIGZ1
bGxzY3JlZW4gc2lnbmFscyB0byBoaWRlL3Nob3cKKyAgICAgICAgdGhlIFVSTCBiYXIgYW5kIGFz
ayB0aGUgdXNlcidzIHBlcm1pc3Npb24gYmVmb3JlIGVudGVyaW5nCisgICAgICAgIGZ1bGxzY3Jl
ZW4uCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jOgorICAgICAg
ICAod2ViVmlld0Z1bGxzY3JlZW5NZXNzYWdlV2luZG93Q2xvc2UpOgorICAgICAgICAod2ViVmll
d1dpbmRvd1N0YXRlRXZlbnQpOgorICAgICAgICAod2ViVmlld0VudGVyaW5nRnVsbFNjcmVlbik6
CisgICAgICAgICh3ZWJWaWV3TGVhdmluZ0Z1bGxTY3JlZW4pOgorICAgICAgICAod2ViVmlld0Ny
ZWF0ZSk6CisgICAgICAgIChicm93c2VyV2luZG93Q29uc3RydWN0ZWQpOgorCiAyMDEyLTAzLTEy
ICBNaW5nIFhpZSAgPG14aWVAcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gYnVpbGQt
d2Via2l0IGRvZXNuJ3QgcmVjb2duaXplICItLWNtYWtlYXJnIiBmb3IgdGhlIEJsYWNrQmVycnkg
cG9ydApkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYyBi
L1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKaW5kZXggNzQ1MTg0NC4uNWM1
NjM2YSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYwor
KysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCkBAIC0yNiw2ICsyNiw3
IEBACiAgKi8KIAogI2luY2x1ZGUgIkJyb3dzZXJXaW5kb3cuaCIKKwogI2luY2x1ZGUgIkJyb3dz
ZXJTZXR0aW5nc0RpYWxvZy5oIgogCiBlbnVtIHsKQEAgLTQ3LDcgKzQ4LDYgQEAgc3RydWN0IF9C
cm93c2VyV2luZG93IHsKICAgICBHdGtXaWRnZXQgKnN0YXR1c0xhYmVsOwogICAgIEd0a1dpZGdl
dCAqc2V0dGluZ3NEaWFsb2c7CiAgICAgV2ViS2l0V2ViVmlldyAqd2ViVmlldzsKLQogfTsKIAog
c3RydWN0IF9Ccm93c2VyV2luZG93Q2xhc3MgewpAQCAtMjI1LDYgKzIyNSw1NSBAQCBzdGF0aWMg
dm9pZCB3ZWJWaWV3UmVhZHlUb1Nob3coV2ViS2l0V2ViVmlldyAqd2ViVmlldywgQnJvd3Nlcldp
bmRvdyAqd2luZG93KQogICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKHdpbmRvdykpOwog
fQogCitzdGF0aWMgZ2Jvb2xlYW4gd2ViVmlld0Z1bGxzY3JlZW5NZXNzYWdlV2luZG93Q2xvc2Uo
R3RrV2lkZ2V0KiBkaWFsb2cpCit7CisgICAgaWYgKEdUS19JU19XSURHRVQoZGlhbG9nKSkKKyAg
ICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKEdUS19ESUFMT0coZGlhbG9nKSwgImNsb3NlIik7
CisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2ViVmlld1dpbmRvd1N0
YXRlRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50V2luZG93U3RhdGUqIGV2ZW50LCBC
cm93c2VyV2luZG93KiB3aW5kb3cpCit7CisgICAgaWYgKGV2ZW50LT5uZXdfd2luZG93X3N0YXRl
ICYgR0RLX1dJTkRPV19TVEFURV9GVUxMU0NSRUVOKSB7CisgICAgICAgIGNvbnN0IGdjaGFyICp1
cmkgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh3aW5kb3ctPndlYlZpZXcpOworICAgICAgICBH
dGtXaWRnZXQgKmRpYWxvZyA9IGd0a19tZXNzYWdlX2RpYWxvZ19uZXcoR1RLX1dJTkRPVyh3aW5k
b3cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R1RLX0RJQUxPR19NT0RBTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdUS19NRVNTQUdFX0lORk8sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfQlVUVE9OU19DTE9TRSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyBpcyBub3cgZnVsbCBz
Y3JlZW4uIFByZXNzIEVTQyBvciBmIHRvIGV4aXQuIiwgdXJpKTsKKyAgICAgICAgZ19zaWduYWxf
Y29ubmVjdF9zd2FwcGVkKGRpYWxvZywgInJlc3BvbnNlIiwgR19DQUxMQkFDSyhndGtfd2lkZ2V0
X2Rlc3Ryb3kpLCBkaWFsb2cpOworICAgICAgICBnX3RpbWVvdXRfYWRkKDE1MDAsIChHU291cmNl
RnVuYykgd2ViVmlld0Z1bGxzY3JlZW5NZXNzYWdlV2luZG93Q2xvc2UsIGRpYWxvZyk7CisgICAg
ICAgIGd0a19kaWFsb2dfcnVuKEdUS19ESUFMT0coZGlhbG9nKSk7CisgICAgfQorICAgIHJldHVy
biBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2ViVmlld0VudGVyaW5nRnVsbFNjcmVlbihX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBCcm93c2VyV2luZG93KiB3aW5kb3cpCit7CisgICAgY29u
c3QgZ2NoYXIgKnVyaSA9IHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHdpbmRvdy0+d2ViVmlldyk7
CisgICAgR3RrV2lkZ2V0ICpkaWFsb2cgPSBndGtfbWVzc2FnZV9kaWFsb2dfbmV3KEdUS19XSU5E
T1cod2luZG93KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR1RLX0RJQUxPR19NT0RBTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR1RLX01FU1NBR0VfSU5GTywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR1RLX0JVVFRPTlNfWUVTX05PLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWxsb3cgZnVsbCBzY3JlZW4gZGlzcGxh
eSBvZiAlcyA/IiwgdXJpKTsKKyAgICBnaW50IHJlc3VsdCA9IGd0a19kaWFsb2dfcnVuKEdUS19E
SUFMT0coZGlhbG9nKSk7CisgICAgaWYgKHJlc3VsdCA9PSBHVEtfUkVTUE9OU0VfWUVTKSB7Cisg
ICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QoR1RLX1dJREdFVCh3aW5kb3cpLCAid2luZG93LXN0YXRl
LWV2ZW50IiwgR19DQUxMQkFDSyh3ZWJWaWV3V2luZG93U3RhdGVFdmVudCksIHdpbmRvdyk7Cisg
ICAgICAgIGd0a193aWRnZXRfaGlkZSh3aW5kb3ctPnRvb2xiYXIpOworICAgICAgICBndGtfd2lk
Z2V0X2Rlc3Ryb3koR1RLX1dJREdFVChkaWFsb2cpKTsKKyAgICAgICAgcmV0dXJuIEZBTFNFOwor
ICAgIH0KKyAgICBndGtfd2lkZ2V0X2Rlc3Ryb3koR1RLX1dJREdFVChkaWFsb2cpKTsKKyAgICBy
ZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYlZpZXdMZWF2aW5nRnVsbFNjcmVl
bihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBCcm93c2VyV2luZG93KiB3aW5kb3cpCit7CisgICAg
Z3RrX3dpZGdldF9zaG93KHdpbmRvdy0+dG9vbGJhcik7CisgICAgZ19zaWduYWxfaGFuZGxlcnNf
ZGlzY29ubmVjdF9ieV9mdW5jKEdUS19XSURHRVQod2luZG93KSwgR19DQUxMQkFDSyh3ZWJWaWV3
V2luZG93U3RhdGVFdmVudCksIHdpbmRvdyk7CisgICAgcmV0dXJuIEZBTFNFOworfQorCiBzdGF0
aWMgR3RrV2lkZ2V0ICp3ZWJWaWV3Q3JlYXRlKFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIEJyb3dz
ZXJXaW5kb3cgKndpbmRvdykKIHsKICAgICBXZWJLaXRXZWJWaWV3ICpuZXdXZWJWaWV3ID0gV0VC
S0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9jb250ZXh0KHdlYmtpdF93ZWJf
dmlld19nZXRfY29udGV4dCh3ZWJWaWV3KSkpOwpAQCAtMjMzLDYgKzI4Miw4IEBAIHN0YXRpYyBH
dGtXaWRnZXQgKndlYlZpZXdDcmVhdGUoV2ViS2l0V2ViVmlldyAqd2ViVmlldywgQnJvd3Nlcldp
bmRvdyAqd2luZG93KQogICAgIEd0a1dpZGdldCAqbmV3V2luZG93ID0gYnJvd3Nlcl93aW5kb3df
bmV3KG5ld1dlYlZpZXcpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QobmV3V2ViVmlldywgInJlYWR5
LXRvLXNob3ciLCBHX0NBTExCQUNLKHdlYlZpZXdSZWFkeVRvU2hvdyksIG5ld1dpbmRvdyk7CiAg
ICAgZ19zaWduYWxfY29ubmVjdChuZXdXZWJWaWV3LCAiY2xvc2UiLCBHX0NBTExCQUNLKHdlYlZp
ZXdDbG9zZSksIG5ld1dpbmRvdyk7CisgICAgZ19zaWduYWxfY29ubmVjdChuZXdXZWJWaWV3LCAi
ZW50ZXJpbmctZnVsbHNjcmVlbiIsIEdfQ0FMTEJBQ0sod2ViVmlld0VudGVyaW5nRnVsbFNjcmVl
biksIG5ld1dpbmRvdyk7CisgICAgZ19zaWduYWxfY29ubmVjdChuZXdXZWJWaWV3LCAibGVhdmlu
Zy1mdWxsc2NyZWVuIiwgR19DQUxMQkFDSyh3ZWJWaWV3TGVhdmluZ0Z1bGxTY3JlZW4pLCBuZXdX
aW5kb3cpOwogICAgIHJldHVybiBHVEtfV0lER0VUKG5ld1dlYlZpZXcpOwogfQogCkBAIC0zMjks
NyArMzgwLDcgQEAgc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd0dldFByb3BlcnR5KEdPYmplY3Qg
Km9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUgKnZhbHUKIAogc3RhdGljIHZvaWQgYnJvd3Nl
cldpbmRvd1NldFByb3BlcnR5KEdPYmplY3QgKm9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBH
VmFsdWUgKnZhbHVlLCBHUGFyYW1TcGVjICpwc3BlYykKIHsKLSAgICBCcm93c2VyV2luZG93KiB3
aW5kb3cgPSBCUk9XU0VSX1dJTkRPVyhvYmplY3QpOworICAgIEJyb3dzZXJXaW5kb3cgKndpbmRv
dyA9IEJST1dTRVJfV0lORE9XKG9iamVjdCk7CiAKICAgICBzd2l0Y2ggKHByb3BJZCkgewogICAg
IGNhc2UgUFJPUF9WSUVXOgpAQCAtNDIxLDYgKzQ3Miw4IEBAIHN0YXRpYyB2b2lkIGJyb3dzZXJX
aW5kb3dDb25zdHJ1Y3RlZChHT2JqZWN0ICpnT2JqZWN0KQogICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
d2luZG93LT53ZWJWaWV3LCAiZGVjaWRlLXBvbGljeSIsIEdfQ0FMTEJBQ0sod2ViVmlld0RlY2lk
ZVBvbGljeSksIHdpbmRvdyk7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3aW5kb3ctPndlYlZpZXcs
ICJtb3VzZS10YXJnZXQtY2hhbmdlZCIsIEdfQ0FMTEJBQ0sod2ViVmlld01vdXNlVGFyZ2V0Q2hh
bmdlZCksIHdpbmRvdyk7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3aW5kb3ctPndlYlZpZXcsICJu
b3RpZnk6Onpvb20tbGV2ZWwiLCBHX0NBTExCQUNLKHdlYlZpZXdab29tTGV2ZWxDaGFuZ2VkKSwg
d2luZG93KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHdpbmRvdy0+d2ViVmlldywgImVudGVyaW5n
LWZ1bGxzY3JlZW4iLCBHX0NBTExCQUNLKHdlYlZpZXdFbnRlcmluZ0Z1bGxTY3JlZW4pLCB3aW5k
b3cpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2luZG93LT53ZWJWaWV3LCAibGVhdmluZy1mdWxs
c2NyZWVuIiwgR19DQUxMQkFDSyh3ZWJWaWV3TGVhdmluZ0Z1bGxTY3JlZW4pLCB3aW5kb3cpOwog
CiAgICAgV2ViS2l0QmFja0ZvcndhcmRMaXN0ICpiYWNrRm9yd2FkbGlzdCA9IHdlYmtpdF93ZWJf
dmlld19nZXRfYmFja19mb3J3YXJkX2xpc3Qod2luZG93LT53ZWJWaWV3KTsKICAgICBnX3NpZ25h
bF9jb25uZWN0KGJhY2tGb3J3YWRsaXN0LCAiY2hhbmdlZCIsIEdfQ0FMTEJBQ0soYmFja0Zvcndh
ZGxpc3RDaGFuZ2VkKSwgd2luZG93KTsKLS0gCjEuNy45LjE=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135344</attachid>
            <date>2012-04-03 09:35:07 -0700</date>
            <delta_ts>2012-04-06 06:09:34 -0700</delta_ts>
            <desc>New patch</desc>
            <filename>wk2-fullscreen-signals.diff</filename>
            <type>text/plain</type>
            <size>33043</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkMDg1MWZmLi5lM2RjNjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcg
QEAKKzIwMTItMDQtMDMgIFBoaWxpcHBlIE5vcm1hbmQgPHBub3JtYW5kQGlnYWxpYS5jb20+IGFu
ZCBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBb
V0syXVtHVEtdIEZ1bGxTY3JlZW4gc2lnbmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxNjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGQgbmV3IGZpbGVzIHRvIGNv
bXBpbGF0aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9ndGsvV0tGdWxsU2NyZWVuQ2xp
ZW50R3RrLmNwcDoKKyAgICAgICAgKFdLVmlld1NldEZ1bGxTY3JlZW5DbGllbnRHdGspOiBJbml0
aWFsaXplIFdlYktpdFdlYlZpZXdCYXNlCisgICAgICAgIGZ1bGxzY3JlZW4gY2xpZW50LgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9ndGsvV0tGdWxsU2NyZWVuQ2xpZW50R3RrLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RnVsbHNjcmVlbkNsaWVudC5jcHA6IEFkZGVk
LgorICAgICAgICAod2lsbEVudGVyRnVsbFNjcmVlbik6IENhbGwgd2Via2l0V2ViVmlld0VudGVy
RnVsbFNjcmVlbigpLgorICAgICAgICAod2lsbEV4aXRGdWxsU2NyZWVuKTogQ2FsbCB3ZWJraXRX
ZWJWaWV3TGVhdmVGdWxsU2NyZWVuKCkuCisgICAgICAgIChhdHRhY2hGdWxsU2NyZWVuQ2xpZW50
VG9WaWV3KTogSW5pdGlhbGl6ZSBGdWxsU2NyZWVuQ2xpZW50IGFkZGluZworICAgICAgICBpbXBs
ZW1lbnRhdGlvbnMgZm9yIHdpbGxFbnRlckZ1bGxTY3JlZW4gYW5kIHdpbGxFeGl0RnVsbFNjcmVl
biBjYWxsYmFja3MuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RnVsbHNjcmVl
bkNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2
YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6Cisg
ICAgICAgICh3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQpOiBBdHRhY2ggZnVsbHNjcmVlbiBjbGll
bnQgdG8gdmlldy4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KTogQWRkIFdl
YktpdFdlYlZpZXc6OmVudGVyLWZ1bGxzY3JlZW4KKyAgICAgICAgYW5kIFdlYktpdFdlYlZpZXc6
OmxlYXZlLWZ1bGxzY3JlZW4gc2lnbmFscy4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdFbnRlckZ1
bGxTY3JlZW4pOiBFbWl0CisgICAgICAgIFdlYktpdFdlYlZpZXc6OmVudGVyLWZ1bGxzY3JlZW4g
c2lnbmFsLgorICAgICAgICAod2Via2l0V2ViVmlld0xlYXZlRnVsbFNjcmVlbik6IEVtaXQKKyAg
ICAgICAgV2ViS2l0V2ViVmlldzo6bGVhdmUtZnVsbHNjcmVlbiBzaWduYWwuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNl
S2V5UHJlc3NFdmVudCk6IE9ubHkgcmV0dXJuIGVhcmx5IHdoZW4gbGVhdmluZworICAgICAgICBm
dWxsc2NyZWVuLCBvdGhlcndpc2UgbGV0IHRoZSB2aWV3IHByb2Nlc3MgdGhlIGtleSBwcmVzc2Vk
LgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VFbnRlckZ1bGxTY3JlZW4pOiBSZXR1cm4gZWFy
bHkgaWYKKyAgICAgICAgd2lsbEVudGVyRnVsbFNjcmVlbiBjYWxsYmFjayBpcyBoYW5kbGVkIGFu
ZCByZXR1cm5zIGZhbHNlLgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VFeGl0RnVsbFNjcmVl
bik6IFJldHVybiBlYXJseSBpZgorICAgICAgICB3aWxsRXhpdEZ1bGxTY3JlZW4gY2FsbGJhY2sg
aXMgaGFuZGxlZCBhbmQgcmV0dXJucyBmYWxzZS4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNl
SW5pdGlhbGl6ZUZ1bGxTY3JlZW5DbGllbnQpOiBJbml0aWFsaXplIHRoZQorICAgICAgICBmdWxs
c2NyZWVuIGNsaWVudC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRX
ZWJWaWV3LmNwcDoKKyAgICAgICAgKHRlc3RXZWJWaWV3RnVsbFNjcmVlbik6CisgICAgICAgIChi
ZWZvcmVBbGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlZpZXdUZXN0
LmNwcDoKKyAgICAgICAgKFdlYlZpZXdUZXN0OjprZXlTdHJva2UpOiBIZWxwZXIgZnVuY3Rpb24g
dG8gc3ludGhlc2l6ZSBrZXkKKyAgICAgICAgcHJlc3MvcmVsZWFzZSBldmVudHMuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5saXN0OgorICAgICAgICAqIFVJUHJvY2Vzcy9n
dGsvV2ViRnVsbFNjcmVlbkNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxT
Y3JlZW5DbGllbnRHdGs6OndpbGxFbnRlckZ1bGxTY3JlZW4pOiBDYWxsCisgICAgICAgIHdpbGxF
bnRlckZ1bGxTY3JlZW4gY2FsbGJhY2sgaWYgZGVmaW5lZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
RnVsbFNjcmVlbkNsaWVudEd0azo6d2lsbEV4aXRGdWxsU2NyZWVuKTogQ2FsbAorICAgICAgICB3
aWxsRXhpdEZ1bGxTY3JlZW4gY2FsbGJhY2sgaWYgZGVmaW5lZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvZ3RrL1dlYkZ1bGxTY3JlZW5DbGllbnRHdGsuaDoKKwogMjAxMi0wNC0wMiAgWmFsYW4gQnVq
dGFzICA8emJ1anRhc0BnbWFpbC5jb20+CiAKICAgICAgICAgW1F0XVtXSzJdIFNldCB2aWV3cG9y
dCBzaXplIGJhY2ssIHdoZW4gV2ViUHJvY2VzcyBpcyByZWxhdW5jaGVkLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmls
ZS5hbQppbmRleCA1ODhlNmE2Li4xMDYzYmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtMzMs
NiArMzMsNyBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BX
RUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0hFQQogCSQoV2ViS2l0MikvU2hhcmVkL0FQ
SS9jL1dLVVJMUmVzcG9uc2UuaCBcCiAJJChXZWJLaXQyKS9TaGFyZWQvQVBJL2MvV0tVc2VyQ29u
dGVudFVSTFBhdHRlcm4uaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLQVBJ
Q2FzdEd0ay5oIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tGdWxsU2NyZWVu
Q2xpZW50R3RrLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1ZpZXcuaCBc
CiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL0MvV2ViS2l0Mi5oIFwKIAkkKFdlYktpdDIpL1VJ
UHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaCBcCkBAIC00NjEsNiArNDYyLDggQEAgd2Via2l0Ml9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVXNlckNvbnRlbnRVUkxQYXR0
ZXJuLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJXaGVlbEV2ZW50LmNwcCBcCiAJU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS0FQSUNhc3RHdGsuaCBcCisJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS0Z1bGxTY3JlZW5DbGllbnRHdGsuY3BwIFwK
KwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLRnVsbFNjcmVlbkNsaWVudEd0
ay5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHAgXAog
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tWaWV3LmggXAogCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XZWJLaXQyLmggXApAQCAtNTU2LDYgKzU1OSw4IEBAIHdl
YmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0RWRpdGluZ0NvbW1hbmRzLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEVycm9yLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEVycm9yLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RnVs
bHNjcmVlbkNsaWVudC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdEZ1bGxzY3JlZW5DbGllbnQuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0SGl0VGVzdFJlc3VsdC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEhpdFRlc3RSZXN1bHQuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0SGl0VGVzdFJlc3VsdFByaXZhdGUuaCBcCkBAIC02NDUsNiArNjUwLDgg
QEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dl
YkNvbnRleHRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRl
eHRNZW51UHJveHlHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNv
bnRleHRNZW51UHJveHlHdGsuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJG
dWxsU2NyZWVuQ2xpZW50R3RrLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9X
ZWJGdWxsU2NyZWVuQ2xpZW50R3RrLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9ndGsvV2ViSW5zcGVjdG9yR3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9ndGsvV0tGdWxsU2NyZWVuQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tGdWxsU2NyZWVuQ2xpZW50R3RrLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjI5YTJiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS0Z1bGxTY3JlZW5DbGllbnRHdGsu
Y3BwCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMu
TC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLRnVsbFNjcmVl
bkNsaWVudEd0ay5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViS2l0
V2ViVmlld0Jhc2VQcml2YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3ZvaWQg
V0tWaWV3U2V0RnVsbFNjcmVlbkNsaWVudEd0ayhXS1ZpZXdSZWYgdmlld1JlZiwgY29uc3QgV0tG
dWxsU2NyZWVuQ2xpZW50R3RrKiB3a0NsaWVudCkKK3sKKyAgICB3ZWJraXRXZWJWaWV3QmFzZUlu
aXRpYWxpemVGdWxsU2NyZWVuQ2xpZW50KHRvSW1wbCh2aWV3UmVmKSwgd2tDbGllbnQpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS0Z1bGxTY3Jl
ZW5DbGllbnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tGdWxs
U2NyZWVuQ2xpZW50R3RrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThj
OTIxNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9n
dGsvV0tGdWxsU2NyZWVuQ2xpZW50R3RrLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLRnVsbFNjcmVl
bkNsaWVudEd0a19oCisjZGVmaW5lIFdLRnVsbFNjcmVlbkNsaWVudEd0a19oCisKKyNpbmNsdWRl
IDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgewor
I2VuZGlmCisKK3R5cGVkZWYgYm9vbCAoKldLRnVsbFNjcmVlbkNsaWVudEd0a1dpbGxFbnRlckZ1
bGxTY3JlZW5DYWxsYmFjaykoY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIGJvb2wg
KCpXS0Z1bGxTY3JlZW5DbGllbnRHdGtXaWxsRXhpdEZ1bGxTY3JlZW5DYWxsYmFjaykoY29uc3Qg
dm9pZCogY2xpZW50SW5mbyk7CisKK3N0cnVjdCBXS0Z1bGxTY3JlZW5DbGllbnRHdGsgeworICAg
IGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9u
OworICAgIGNvbnN0IHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
bGllbnRJbmZvOworICAgIFdLRnVsbFNjcmVlbkNsaWVudEd0a1dpbGxFbnRlckZ1bGxTY3JlZW5D
YWxsYmFjayB3aWxsRW50ZXJGdWxsU2NyZWVuOworICAgIFdLRnVsbFNjcmVlbkNsaWVudEd0a1dp
bGxFeGl0RnVsbFNjcmVlbkNhbGxiYWNrICB3aWxsRXhpdEZ1bGxTY3JlZW47Cit9OwordHlwZWRl
ZiBzdHJ1Y3QgV0tGdWxsU2NyZWVuQ2xpZW50R3RrIFdLRnVsbFNjcmVlbkNsaWVudEd0azsKKwor
ZW51bSB7IGtXS0Z1bGxTY3JlZW5DbGllbnRHdGtDdXJyZW50VmVyc2lvbiA9IDAgfTsKKworV0tf
RVhQT1JUIHZvaWQgV0tWaWV3U2V0RnVsbFNjcmVlbkNsaWVudEd0ayhXS1ZpZXdSZWYgdmlld1Jl
ZiwgY29uc3QgV0tGdWxsU2NyZWVuQ2xpZW50R3RrKiBjbGllbnQpOworCisjaWZkZWYgX19jcGx1
c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tGdWxsU2NyZWVuQ2xpZW50R3RrX2ggKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZ1bGxz
Y3JlZW5DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
RnVsbHNjcmVlbkNsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
NzViNTFlMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdEZ1bGxzY3JlZW5DbGllbnQuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldlYktpdEZ1bGxzY3JlZW5DbGllbnQuaCIKKworI2luY2x1ZGUgIldlYktpdFByaXZhdGUu
aCIKKyNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OworCitzdGF0aWMgYm9vbCB3aWxsRW50ZXJGdWxsU2NyZWVuKGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCit7CisgICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdFbnRlckZ1bGxTY3JlZW4oV0VC
S0lUX1dFQl9WSUVXKGNsaWVudEluZm8pKTsKK30KKworc3RhdGljIGJvb2wgd2lsbEV4aXRGdWxs
U2NyZWVuKGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgcmV0dXJuIHdlYmtpdFdlYlZp
ZXdMZWF2ZUZ1bGxTY3JlZW4oV0VCS0lUX1dFQl9WSUVXKGNsaWVudEluZm8pKTsKK30KKwordm9p
ZCBhdHRhY2hGdWxsU2NyZWVuQ2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7
CisgICAgV0tGdWxsU2NyZWVuQ2xpZW50R3RrIHdrRnVsbFNjcmVlbkNsaWVudCA9IHsKKyAgICAg
ICAga1dLRnVsbFNjcmVlbkNsaWVudEd0a0N1cnJlbnRWZXJzaW9uLAorICAgICAgICB3ZWJWaWV3
LCAvLyBjbGllbnRJbmZvCisgICAgICAgIHdpbGxFbnRlckZ1bGxTY3JlZW4sCisgICAgICAgIHdp
bGxFeGl0RnVsbFNjcmVlbgorICAgIH07CisgICAgV0tWaWV3U2V0RnVsbFNjcmVlbkNsaWVudEd0
ayh0b0FQSShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSksICZ3a0Z1bGxTY3JlZW5DbGll
bnQpOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRGdWxsc2NyZWVuQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRGdWxsc2NyZWVuQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMTg3YzA2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEZ1bGxzY3JlZW5DbGllbnQuaApAQCAtMCwwICsxLDI3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV2ViS2l0RnVsbHNjcmVl
bkNsaWVudF9oCisjZGVmaW5lIFdlYktpdEZ1bGxzY3JlZW5DbGllbnRfaAorCisjaW5jbHVkZSAi
V2ViS2l0V2ViVmlldy5oIgorCit2b2lkIGF0dGFjaEZ1bGxTY3JlZW5DbGllbnRUb1ZpZXcoV2Vi
S2l0V2ViVmlldyopOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFByaXZhdGUuaAppbmRleCBmNjM0ODBhLi40YjdlOWFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0FQSUNhc3QuaD4KICNpbmNsdWRlIDxXZWJL
aXQyL1dLRG93bmxvYWQuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLRmluZE9wdGlvbnMuaD4KKyNp
bmNsdWRlIDxXZWJLaXQyL1dLRnVsbFNjcmVlbkNsaWVudEd0ay5oPgogI2luY2x1ZGUgPFdlYktp
dDIvV0tSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCAxYjQzZWE1Li43
YTZjMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmNwcApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIldlYktpdEJhY2tGb3J3
YXJkTGlzdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRFbnVtVHlwZXMuaCIKICNpbmNsdWRl
ICJXZWJLaXRFcnJvci5oIgorI2luY2x1ZGUgIldlYktpdEZ1bGxzY3JlZW5DbGllbnQuaCIKICNp
bmNsdWRlICJXZWJLaXRIaXRUZXN0UmVzdWx0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdEph
dmFzY3JpcHRSZXN1bHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0TG9hZGVyQ2xpZW50Lmgi
CkBAIC03MCw2ICs3MSw5IEBAIGVudW0gewogCiAgICAgUkVTT1VSQ0VfTE9BRF9TVEFSVEVELAog
CisgICAgRU5URVJfRlVMTFNDUkVFTiwKKyAgICBMRUFWRV9GVUxMU0NSRUVOLAorCiAgICAgTEFT
VF9TSUdOQUwKIH07CiAKQEAgLTIxNyw2ICsyMjEsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJW
aWV3Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAgIGF0dGFjaFVJQ2xpZW50VG9WaWV3
KHdlYlZpZXcpOwogICAgIGF0dGFjaFBvbGljeUNsaWVudFRvUGFnZSh3ZWJWaWV3KTsKICAgICBh
dHRhY2hSZXNvdXJjZUxvYWRDbGllbnRUb1ZpZXcod2ViVmlldyk7CisgICAgYXR0YWNoRnVsbFNj
cmVlbkNsaWVudFRvVmlldyh3ZWJWaWV3KTsKIAogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdl
YmtpdFdlYlZpZXdCYXNlR2V0UGFnZSh3ZWJWaWV3QmFzZSk7CiAgICAgcHJpdi0+YmFja0Zvcndh
cmRMaXN0ID0gYWRvcHRHUmVmKHdlYmtpdEJhY2tGb3J3YXJkTGlzdENyZWF0ZShXS1BhZ2VHZXRC
YWNrRm9yd2FyZExpc3QodG9BUEkocGFnZSkpKSk7CkBAIC03MDYsNiArNzExLDUyIEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2Vi
Vmlld0NsYXNzKQogICAgICAgICAgICAgICAgICAgICAgR19UWVBFX05PTkUsIDIsCiAgICAgICAg
ICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfUkVTT1VSQ0UsCiAgICAgICAgICAgICAgICAg
ICAgICBXRUJLSVRfVFlQRV9VUklfUkVRVUVTVCk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRX
ZWJWaWV3OjplbnRlci1mdWxsc2NyZWVuOgorICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRX
ZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZC4KKyAgICAgKgorICAgICAqIEVt
aXR0ZWQgd2hlbiBKYXZhU2NyaXB0IGNvZGUgY2FsbHMKKyAgICAgKiA8ZnVuY3Rpb24+ZWxlbWVu
dC53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbjwvZnVuY3Rpb24+LiBJZiB0aGUKKyAgICAgKiBzaWdu
YWwgaXMgbm90IGhhbmRsZWQgdGhlICNXZWJLaXRXZWJWaWV3IHdpbGwgcHJvY2VlZCB0byBmdWxs
IHNjcmVlbgorICAgICAqIGl0cyB0b3AgbGV2ZWwgd2luZG93LiBUaGlzIHNpZ25hbCBjYW4gYmUg
dXNlZCBieSBjbGllbnQgY29kZSB0bworICAgICAqIHJlcXVlc3QgcGVybWlzc2lvbiB0byB0aGUg
dXNlciBwcmlvciBkb2luZyB0aGUgZnVsbCBzY3JlZW4KKyAgICAgKiB0cmFuc2l0aW9uIGFuZCBl
dmVudHVhbGx5IHByZXBhcmUgdGhlIHRvcC1sZXZlbCB3aW5kb3cKKyAgICAgKiAoZS5nLiBoaWRl
IHNvbWUgd2lkZ2V0cyB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZSBwYXJ0IG9mIHRoZQorICAgICAq
IGZ1bGwgc2NyZWVuIHdpbmRvdykuCisgICAgICoKKyAgICAgKiBSZXR1cm5zOiAlVFJVRSB0byBz
dG9wIG90aGVyIGhhbmRsZXJzIGZyb20gYmVpbmcgaW52b2tlZCBmb3IgdGhlIGV2ZW50LgorICAg
ICAqICAgICVGQUxTRSB0byBjb250aW51ZSBlbWlzc2lvbiBvZiB0aGUgZXZlbnQuCisgICAgICov
CisgICAgc2lnbmFsc1tFTlRFUl9GVUxMU0NSRUVOXSA9CisgICAgICAgIGdfc2lnbmFsX25ldygi
ZW50ZXItZnVsbHNjcmVlbiIsCisgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFT
Uyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1Qs
CisgICAgICAgICAgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNz
LCBlbnRlcl9mdWxsc2NyZWVuKSwKKyAgICAgICAgICAgICAgICAgICAgIGdfc2lnbmFsX2FjY3Vt
dWxhdG9yX3RydWVfaGFuZGxlZCwgMCwKKyAgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9tYXJz
aGFsX0JPT0xFQU5fX1ZPSUQsCisgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwg
MCk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OjpsZWF2ZS1mdWxsc2NyZWVuOgor
ICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwg
aXMgZW1pdHRlZC4KKyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgI1dlYktpdFdlYlZp
ZXcgaXMgYWJvdXQgdG8gcmVzdG9yZSBpdHMgdG9wIGxldmVsCisgICAgICogd2luZG93IG91dCBv
ZiBpdHMgZnVsbCBzY3JlZW4gc3RhdGUuIFRoaXMgc2lnbmFsIGNhbiBiZSB1c2VkIGJ5CisgICAg
ICogY2xpZW50IGNvZGUgdG8gcmVzdG9yZSB3aWRnZXRzIGhpZGRlbiBkdXJpbmcgdGhlCisgICAg
ICogI1dlYktpdFdlYlZpZXc6OmVudGVyLWZ1bGxzY3JlZW4gc3RhZ2UgZm9yIGluc3RhbmNlLgor
ICAgICAqCisgICAgICogUmV0dXJuczogJVRSVUUgdG8gc3RvcCBvdGhlciBoYW5kbGVycyBmcm9t
IGJlaW5nIGludm9rZWQgZm9yIHRoZSBldmVudC4KKyAgICAgKiAgICAlRkFMU0UgdG8gY29udGlu
dWUgZW1pc3Npb24gb2YgdGhlIGV2ZW50LgorICAgICAqLworICAgIHNpZ25hbHNbTEVBVkVfRlVM
TFNDUkVFTl0gPQorICAgICAgICBnX3NpZ25hbF9uZXcoImxlYXZlLWZ1bGxzY3JlZW4iLAorICAg
ICAgICAgICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAg
ICAgICAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAgICAgICAgICAgICAgICAg
R19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYlZpZXdDbGFzcywgbGVhdmVfZnVsbHNjcmVlbiksCisg
ICAgICAgICAgICAgICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIDAs
CisgICAgICAgICAgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19WT0lELAorICAg
ICAgICAgICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDApOwogfQogCiBzdGF0aWMgYm9vbCB1
cGRhdGVSZXBsYWNlQ29udGVudFN0YXR1cyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRM
b2FkRXZlbnQgbG9hZEV2ZW50KQpAQCAtODk5LDYgKzk1MCwyMCBAQCBXZWJLaXRXZWJSZXNvdXJj
ZSogd2Via2l0V2ViVmlld1Jlc291cmNlTG9hZEZpbmlzaGVkKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcsIHVpbgogICAgIHJldHVybiByZXNvdXJjZTsKIH0KIAorYm9vbCB3ZWJraXRXZWJWaWV3RW50
ZXJGdWxsU2NyZWVuKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ2Jvb2xlYW4gcmV0
dXJuVmFsdWU7CisgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0VOVEVSX0ZVTExT
Q1JFRU5dLCAwLCAmcmV0dXJuVmFsdWUpOworICAgIHJldHVybiAhcmV0dXJuVmFsdWU7Cit9CisK
K2Jvb2wgd2Via2l0V2ViVmlld0xlYXZlRnVsbFNjcmVlbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
KQoreworICAgIGdib29sZWFuIHJldHVyblZhbHVlOworICAgIGdfc2lnbmFsX2VtaXQod2ViVmll
dywgc2lnbmFsc1tMRUFWRV9GVUxMU0NSRUVOXSwgMCwgJnJldHVyblZhbHVlKTsKKyAgICByZXR1
cm4gIXJldHVyblZhbHVlOworfQorCiAvKioKICAqIHdlYmtpdF93ZWJfdmlld19uZXc6CiAgKgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmlu
ZGV4IDk5MmIyYzYuLmY1YzIxYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTE0OSw2ICsxNDksOCBAQCBzdHJ1Y3QgX1dlYktp
dFdlYlZpZXdDbGFzcyB7CiAgICAgdm9pZCAgICAgICAoKiByZXNvdXJjZV9sb2FkX3N0YXJ0ZWQp
IChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYlJlc291cmNlICAgICAgICAgKnJlc291
cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VVJJ
UmVxdWVzdCAgICAgICAgICAqcmVxdWVzdCk7CisgICAgZ2Jvb2xlYW4gICAoKiBlbnRlcl9mdWxs
c2NyZWVuKSAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CisgICAg
Z2Jvb2xlYW4gICAoKiBsZWF2ZV9mdWxsc2NyZWVuKSAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAg
ICAgICAgICp3ZWJfdmlldyk7CiAKICAgICAvKiBQYWRkaW5nIGZvciBmdXR1cmUgZXhwYW5zaW9u
ICovCiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQwKSAodm9pZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5k
ZXggZDY1ZWE5NC4uNTFmNWM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2lu
Y2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgogI2luY2x1
ZGUgIldlYkV2ZW50RmFjdG9yeS5oIgorI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5DbGllbnRHdGsu
aCIKICNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jh
c2VBY2Nlc3NpYmxlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgiCkBA
IC04MCw2ICs4MSw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlIHsKICAgICBi
b29sIG5lZWRzUmVzaXplT25NYXA7CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGJv
b2wgZnVsbFNjcmVlbk1vZGVBY3RpdmU7CisgICAgV2ViRnVsbFNjcmVlbkNsaWVudEd0ayBmdWxs
U2NyZWVuQ2xpZW50OwogI2VuZGlmCiB9OwogCkBAIC0yOTMsMTIgKzI5NSwxMCBAQCBzdGF0aWMg
Z2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VLZXlQcmVzc0V2ZW50KEd0a1dpZGdldCogd2lkZ2V0
LCBHZGtFdmVudEtleSogZQogICAgICAgICBjYXNlIEdES19LRVlfZjoKICAgICAgICAgY2FzZSBH
REtfS0VZX0Y6CiAgICAgICAgICAgICB3ZWJraXRXZWJWaWV3QmFzZUV4aXRGdWxsU2NyZWVuKHdl
YlZpZXdCYXNlKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIFRSVUU7
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotCi0gICAg
ICAgIHJldHVybiBUUlVFOwogICAgIH0KICNlbmRpZgogCkBAIC02MTMsOCArNjEzLDEwIEBAIHZv
aWQgd2Via2l0V2ViVmlld0Jhc2VFbnRlckZ1bGxTY3JlZW4oV2ViS2l0V2ViVmlld0Jhc2UqIHdl
YmtpdFdlYlZpZXdCYXNlKQogICAgIGlmIChwcml2LT5mdWxsU2NyZWVuTW9kZUFjdGl2ZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSogZnVsbFNjcmVl
bk1hbmFnZXJQcm94eSA9IHByaXYtPnBhZ2VQcm94eS0+ZnVsbFNjcmVlbk1hbmFnZXIoKTsKKyAg
ICBpZiAoIXByaXYtPmZ1bGxTY3JlZW5DbGllbnQud2lsbEVudGVyRnVsbFNjcmVlbigpKQorICAg
ICAgICByZXR1cm47CiAKKyAgICBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5KiBmdWxsU2NyZWVu
TWFuYWdlclByb3h5ID0gcHJpdi0+cGFnZVByb3h5LT5mdWxsU2NyZWVuTWFuYWdlcigpOwogICAg
IGZ1bGxTY3JlZW5NYW5hZ2VyUHJveHktPndpbGxFbnRlckZ1bGxTY3JlZW4oKTsKIAogICAgIEd0
a1dpZGdldCogdG9wTGV2ZWxXaW5kb3cgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lE
R0VUKHdlYmtpdFdlYlZpZXdCYXNlKSk7CkBAIC02MzIsNiArNjM0LDkgQEAgdm9pZCB3ZWJraXRX
ZWJWaWV3QmFzZUV4aXRGdWxsU2NyZWVuKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3
QmFzZSkKICAgICBpZiAoIXByaXYtPmZ1bGxTY3JlZW5Nb2RlQWN0aXZlKQogICAgICAgICByZXR1
cm47CiAKKyAgICBpZiAoIXByaXYtPmZ1bGxTY3JlZW5DbGllbnQud2lsbEV4aXRGdWxsU2NyZWVu
KCkpCisgICAgICAgIHJldHVybjsKKwogICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkqIGZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHkgPSBwcml2LT5wYWdlUHJveHktPmZ1bGxTY3JlZW5NYW5hZ2Vy
KCk7CiAgICAgZnVsbFNjcmVlbk1hbmFnZXJQcm94eS0+d2lsbEV4aXRGdWxsU2NyZWVuKCk7CiAK
QEAgLTY0MiwzICs2NDcsOCBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlRXhpdEZ1bGxTY3JlZW4o
V2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQogICAgIHByaXYtPmZ1bGxTY3Jl
ZW5Nb2RlQWN0aXZlID0gZmFsc2U7CiAjZW5kaWYKIH0KKwordm9pZCB3ZWJraXRXZWJWaWV3QmFz
ZUluaXRpYWxpemVGdWxsU2NyZWVuQ2xpZW50KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJW
aWV3QmFzZSwgY29uc3QgV0tGdWxsU2NyZWVuQ2xpZW50R3RrKiB3a0NsaWVudCkKK3sKKyAgICB3
ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+ZnVsbFNjcmVlbkNsaWVudC5pbml0aWFsaXplKHdrQ2xp
ZW50KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKaW5kZXggNzAyMDVmMS4uMjdmNWMxYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jh
c2VQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlld0Jhc2VQcml2YXRlLmgKQEAgLTI4LDMxICsyOCwyMSBAQAogI2lmbmRlZiBXZWJLaXRX
ZWJWaWV3QmFzZVByaXZhdGVfaAogI2RlZmluZSBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGVfaAog
CisjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNl
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCi0jaW5jbHVkZSA8V2ViS2l0Mi9XZWJLaXQy
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKLUdfQkVHSU5fREVDTFMKLQogV2ViS2l0
V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKFdlYkNvbnRleHQqLCBXZWJQYWdl
R3JvdXAqKTsKLQogR3RrSU1Db250ZXh0KiB3ZWJraXRXZWJWaWV3QmFzZUdldElNQ29udGV4dChX
ZWJLaXRXZWJWaWV3QmFzZSopOwotCiBXZWJQYWdlUHJveHkqIHdlYmtpdFdlYlZpZXdCYXNlR2V0
UGFnZShXZWJLaXRXZWJWaWV3QmFzZSopOwotCiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRl
V2ViUGFnZShXZWJLaXRXZWJWaWV3QmFzZSosIFdLQ29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYp
OwotCiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9vbHRpcFRleHQoV2ViS2l0V2ViVmlld0Jh
c2UqLCBjb25zdCBjaGFyKik7Ci0KIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VGb3J3YXJkTmV4dEtl
eUV2ZW50KFdlYktpdFdlYlZpZXdCYXNlKik7Ci0KIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTdGFy
dERyYWcoV2ViS2l0V2ViVmlld0Jhc2UqLCBjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYsIFBhc3NS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBkcmFnSW1hZ2UpOwotCiB2b2lkIHdlYmtpdFdlYlZpZXdC
YXNlRW50ZXJGdWxsU2NyZWVuKFdlYktpdFdlYlZpZXdCYXNlKik7CiB2b2lkIHdlYmtpdFdlYlZp
ZXdCYXNlRXhpdEZ1bGxTY3JlZW4oV2ViS2l0V2ViVmlld0Jhc2UqKTsKLQotR19FTkRfREVDTFMK
K3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VJbml0aWFsaXplRnVsbFNjcmVlbkNsaWVudChXZWJLaXRX
ZWJWaWV3QmFzZSosIGNvbnN0IFdLRnVsbFNjcmVlbkNsaWVudEd0ayopOwogCiAjZW5kaWYgLy8g
V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDczYzkzNTEuLjcw
ZDZkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlld1ByaXZhdGUuaApAQCAtNDksNSArNDksNyBAQCB2b2lkIHdlYmtpdFdlYlZp
ZXdSZXNvdXJjZUxvYWRTdGFydGVkKFdlYktpdFdlYlZpZXcqLCBXS0ZyYW1lUmVmLCB1aW50NjRf
dCByZXNvdQogV2ViS2l0V2ViUmVzb3VyY2UqIHdlYmtpdFdlYlZpZXdHZXRMb2FkaW5nV2ViUmVz
b3VyY2UoV2ViS2l0V2ViVmlldyosIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllcik7CiB2b2lk
IHdlYmtpdFdlYlZpZXdSZW1vdmVMb2FkaW5nV2ViUmVzb3VyY2UoV2ViS2l0V2ViVmlldyosIHVp
bnQ2NF90IHJlc291cmNlSWRlbnRpZmllcik7CiBXZWJLaXRXZWJSZXNvdXJjZSogd2Via2l0V2Vi
Vmlld1Jlc291cmNlTG9hZEZpbmlzaGVkKFdlYktpdFdlYlZpZXcqLCB1aW50NjRfdCByZXNvdXJj
ZUlkZW50aWZpZXIpOworYm9vbCB3ZWJraXRXZWJWaWV3RW50ZXJGdWxsU2NyZWVuKFdlYktpdFdl
YlZpZXcqKTsKK2Jvb2wgd2Via2l0V2ViVmlld0xlYXZlRnVsbFNjcmVlbihXZWJLaXRXZWJWaWV3
Kik7CiAKICNlbmRpZiAvLyBXZWJLaXRXZWJWaWV3UHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmll
dy5jcHAKaW5kZXggNzg3Nzk2Yy4uZjY5ZjUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApA
QCAtNTEyLDYgKzUxMiw3NyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1J1bkphdmFTY3JpcHQo
V2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfZXJyb3IoZXJy
b3IuZ2V0KCksIFdFQktJVF9KQVZBU0NSSVBUX0VSUk9SLCBXRUJLSVRfSkFWQVNDUklQVF9FUlJP
Ul9TQ1JJUFRfRkFJTEVEKTsKIH0KIAorY2xhc3MgRnVsbFNjcmVlbkNsaWVudFRlc3Q6IHB1Ymxp
YyBXZWJWaWV3VGVzdCB7CitwdWJsaWM6CisgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShGdWxs
U2NyZWVuQ2xpZW50VGVzdCk7CisKKyAgICBlbnVtIEZ1bGxTY3JlZW5FdmVudCB7CisgICAgICAg
IE5vbmUsCisgICAgICAgIEVudGVyLAorICAgICAgICBMZWF2ZQorICAgIH07CisKKyAgICBzdGF0
aWMgZ2Jvb2xlYW4gdmlld0VudGVyRnVsbFNjcmVlbkNhbGxiYWNrKFdlYktpdFdlYlZpZXcqLCBG
dWxsU2NyZWVuQ2xpZW50VGVzdCogdGVzdCkKKyAgICB7CisgICAgICAgIHRlc3QtPm1fZXZlbnQg
PSBFbnRlcjsKKyAgICAgICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29wKTsKKyAg
ICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIHN0YXRpYyBnYm9vbGVhbiB2aWV3TGVh
dmVGdWxsU2NyZWVuQ2FsbGJhY2soV2ViS2l0V2ViVmlldyosIEZ1bGxTY3JlZW5DbGllbnRUZXN0
KiB0ZXN0KQorICAgIHsKKyAgICAgICAgdGVzdC0+bV9ldmVudCA9IExlYXZlOworICAgICAgICBn
X21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOworICAgICAgICByZXR1cm4gRkFMU0U7
CisgICAgfQorCisgICAgRnVsbFNjcmVlbkNsaWVudFRlc3QoKQorICAgICAgICA6IG1fZXZlbnQo
Tm9uZSkKKyAgICB7CisgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2Z1bGxzY3Jl
ZW4od2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyhtX3dlYlZpZXcpLCBUUlVFKTsKKyAgICAg
ICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJlbnRlci1mdWxsc2NyZWVuIiwgR19DQUxM
QkFDSyh2aWV3RW50ZXJGdWxsU2NyZWVuQ2FsbGJhY2spLCB0aGlzKTsKKyAgICAgICAgZ19zaWdu
YWxfY29ubmVjdChtX3dlYlZpZXcsICJsZWF2ZS1mdWxsc2NyZWVuIiwgR19DQUxMQkFDSyh2aWV3
TGVhdmVGdWxsU2NyZWVuQ2FsbGJhY2spLCB0aGlzKTsKKyAgICB9CisKKyAgICB+RnVsbFNjcmVl
bkNsaWVudFRlc3QoKQorICAgIHsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVj
dF9tYXRjaGVkKG1fd2ViVmlldywgR19TSUdOQUxfTUFUQ0hfREFUQSwgMCwgMCwgMCwgMCwgdGhp
cyk7CisgICAgfQorCisgICAgdm9pZCByZXF1ZXN0RnVsbFNjcmVlbkFuZFdhaXRVbnRpbEVudGVy
ZWRGdWxsU2NyZWVuKCkKKyAgICB7CisgICAgICAgIG1fZXZlbnQgPSBOb25lOworICAgICAgICB3
ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQobV93ZWJWaWV3LCAiZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50LndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7IiwgMCwgMCk7CisgICAgICAgIGdf
bWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKKyAgICB9CisKKyAgICBzdGF0aWMgZ2Jvb2xlYW4g
bGVhdmVGdWxsU2NyZWVuSWRsZShGdWxsU2NyZWVuQ2xpZW50VGVzdCogdGVzdCkKKyAgICB7Cisg
ICAgICAgIHRlc3QtPmtleVN0cm9rZShHREtfS0VZX0VzY2FwZSk7CisgICAgICAgIHJldHVybiBG
QUxTRTsKKyAgICB9CisKKyAgICB2b2lkIGxlYXZlRnVsbFNjcmVlbkFuZFdhaXRVbnRpbExlZnRG
dWxsU2NyZWVuKCkKKyAgICB7CisgICAgICAgIG1fZXZlbnQgPSBOb25lOworICAgICAgICBnX2lk
bGVfYWRkKHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KGxlYXZlRnVsbFNjcmVlbklkbGUp
LCB0aGlzKTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgIH0KKwor
ICAgIEZ1bGxTY3JlZW5FdmVudCBtX2V2ZW50OworfTsKKworc3RhdGljIHZvaWQgdGVzdFdlYlZp
ZXdGdWxsU2NyZWVuKEZ1bGxTY3JlZW5DbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQor
eworICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZCgpOworICAgIHRlc3Qt
PmxvYWRIdG1sKCI8aHRtbD48Ym9keT5GdWxsU2NyZWVuIHRlc3Q8L2JvZHk+PC9odG1sPiIsIDAp
OworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIHRlc3QtPnJlcXVlc3RG
dWxsU2NyZWVuQW5kV2FpdFVudGlsRW50ZXJlZEZ1bGxTY3JlZW4oKTsKKyAgICBnX2Fzc2VydF9j
bXBpbnQodGVzdC0+bV9ldmVudCwgPT0sIEZ1bGxTY3JlZW5DbGllbnRUZXN0OjpFbnRlcik7Cisg
ICAgdGVzdC0+bGVhdmVGdWxsU2NyZWVuQW5kV2FpdFVudGlsTGVmdEZ1bGxTY3JlZW4oKTsKKyAg
ICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9ldmVudCwgPT0sIEZ1bGxTY3JlZW5DbGllbnRUZXN0
OjpMZWF2ZSk7Cit9CisKIHZvaWQgYmVmb3JlQWxsKCkKIHsKICAgICBXZWJWaWV3VGVzdDo6YWRk
KCJXZWJLaXRXZWJWaWV3IiwgImRlZmF1bHQtY29udGV4dCIsIHRlc3RXZWJWaWV3RGVmYXVsdENv
bnRleHQpOwpAQCAtNTI0LDYgKzU5NSw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBVSUNsaWVu
dFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJtb3VzZS10YXJnZXQiLCB0ZXN0V2ViVmlld01v
dXNlVGFyZ2V0KTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInpvb20t
bGV2ZWwiLCB0ZXN0V2ViVmlld1pvb21MZXZlbCk7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2Vi
S2l0V2ViVmlldyIsICJydW4tamF2YXNjcmlwdCIsIHRlc3RXZWJWaWV3UnVuSmF2YVNjcmlwdCk7
CisgICAgRnVsbFNjcmVlbkNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJmdWxsc2Ny
ZWVuIiwgdGVzdFdlYlZpZXdGdWxsU2NyZWVuKTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJWaWV3VGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJWaWV3VGVz
dC5jcHAKaW5kZXggMDlmOTdmNi4uZDNjNGZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlZpZXdUZXN0LmNwcApAQCAtMTk4LDYgKzE5
OCwzMiBAQCB2b2lkIFdlYlZpZXdUZXN0Ojptb3VzZU1vdmVUbyhpbnQgeCwgaW50IHksIHVuc2ln
bmVkIGludCBtb3VzZU1vZGlmaWVycykKICAgICBndGtfbWFpbl9kb19ldmVudChldmVudC5nZXQo
KSk7CiB9CiAKK3ZvaWQgV2ViVmlld1Rlc3Q6OmtleVN0cm9rZSh1bnNpZ25lZCBpbnQga2V5VmFs
LCB1bnNpZ25lZCBpbnQga2V5TW9kaWZpZXJzKQoreworICAgIGdfYXNzZXJ0KG1fcGFyZW50V2lu
ZG93KTsKKyAgICBHdGtXaWRnZXQqIHZpZXdXaWRnZXQgPSBHVEtfV0lER0VUKG1fd2ViVmlldyk7
CisgICAgZ19hc3NlcnQoZ3RrX3dpZGdldF9nZXRfcmVhbGl6ZWQodmlld1dpZGdldCkpOworCisg
ICAgR093blB0cjxHZGtFdmVudD4gZXZlbnQoZ2RrX2V2ZW50X25ldyhHREtfS0VZX1BSRVNTKSk7
CisgICAgZXZlbnQtPmtleS5rZXl2YWwgPSBrZXlWYWw7CisKKyAgICBldmVudC0+a2V5LnRpbWUg
PSBHREtfQ1VSUkVOVF9USU1FOworICAgIGV2ZW50LT5rZXkud2luZG93ID0gZ3RrX3dpZGdldF9n
ZXRfd2luZG93KHZpZXdXaWRnZXQpOworICAgIGdfb2JqZWN0X3JlZihldmVudC0+a2V5LndpbmRv
dyk7CisgICAgZ2RrX2V2ZW50X3NldF9kZXZpY2UoZXZlbnQuZ2V0KCksIGdka19kZXZpY2VfbWFu
YWdlcl9nZXRfY2xpZW50X3BvaW50ZXIoZ2RrX2Rpc3BsYXlfZ2V0X2RldmljZV9tYW5hZ2VyKGd0
a193aWRnZXRfZ2V0X2Rpc3BsYXkodmlld1dpZGdldCkpKSk7CisgICAgZXZlbnQtPmtleS5zdGF0
ZSA9IGtleU1vZGlmaWVyczsKKworICAgIC8vIFdoZW4gc3ludGhlc2l6aW5nIGFuIGV2ZW50LCBh
biBpbnZhbGlkIGhhcmR3YXJlX2tleWNvZGUgdmFsdWUgY2FuIGNhdXNlIGl0IHRvIGJlIGJhZGx5
IHByb2Nlc3NlZCBieSBHVEsrLgorICAgIEdPd25QdHI8R2RrS2V5bWFwS2V5PiBrZXlzOworICAg
IGludCBrZXlzQ291bnQ7CisgICAgaWYgKGdka19rZXltYXBfZ2V0X2VudHJpZXNfZm9yX2tleXZh
bChnZGtfa2V5bWFwX2dldF9kZWZhdWx0KCksIGtleVZhbCwgJmtleXMub3V0UHRyKCksICZrZXlz
Q291bnQpKQorICAgICAgICBldmVudC0+a2V5LmhhcmR3YXJlX2tleWNvZGUgPSBrZXlzLmdldCgp
WzBdLmtleWNvZGU7CisKKyAgICBndGtfbWFpbl9kb19ldmVudChldmVudC5nZXQoKSk7CisgICAg
ZXZlbnQtPmtleS50eXBlID0gR0RLX0tFWV9SRUxFQVNFOworICAgIGd0a19tYWluX2RvX2V2ZW50
KGV2ZW50LmdldCgpKTsKK30KKwogc3RhdGljIHZvaWQgcnVuSmF2YVNjcmlwdFJlYWR5Q2FsbGJh
Y2soR09iamVjdCosIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBXZWJWaWV3VGVzdCogdGVzdCkKIHsK
ICAgICB0ZXN0LT5tX2phdmFzY3JpcHRSZXN1bHQgPSB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFz
Y3JpcHRfZmluaXNoKHRlc3QtPm1fd2ViVmlldywgcmVzdWx0LCB0ZXN0LT5tX2phdmFzY3JpcHRF
cnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9XZWJWaWV3VGVzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMv
V2ViVmlld1Rlc3QuaAppbmRleCAzNGFmYjA0Li43MjMzY2NkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJWaWV3VGVzdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlZpZXdUZXN0LmgKQEAgLTQ3LDYg
KzQ3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVk
KCk7CiAKICAgICB2b2lkIG1vdXNlTW92ZVRvKGludCB4LCBpbnQgeSwgdW5zaWduZWQgaW50IG1v
dXNlTW9kaWZpZXJzID0gMCk7CisgICAgdm9pZCBrZXlTdHJva2UodW5zaWduZWQgaW50IGtleVZh
bCwgdW5zaWduZWQgaW50IGtleU1vZGlmaWVycyA9IDApOwogCiAgICAgV2ViS2l0SmF2YXNjcmlw
dFJlc3VsdCogcnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIqIGph
dmFzY3JpcHQsIEdFcnJvcioqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvd2Via2l0Mm1hcnNoYWwubGlzdCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3dlYmtpdDJtYXJzaGFsLmxpc3QKaW5kZXggNGU0NzJjZC4uZGUzMDMyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mm1hcnNoYWwu
bGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hh
bC5saXN0CkBAIC0zLDYgKzMsNyBAQCBCT09MRUFOOkVOVU0sU1RSSU5HLFBPSU5URVIKIEJPT0xF
QU46T0JKRUNUCiBCT09MRUFOOk9CSkVDVCxFTlVNCiBCT09MRUFOOlNUUklORworQk9PTEVBTjpW
T0lECiBPQkpFQ1Q6Vk9JRAogVk9JRDpPQkpFQ1QsVUlOVAogVk9JRDpPQkpFQ1QsT0JKRUNUCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkZ1bGxTY3JlZW5DbGll
bnRHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJGdWxsU2NyZWVuQ2xp
ZW50R3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTIyNDg1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJGdWxsU2Ny
ZWVuQ2xpZW50R3RrLmNwcApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXZWJGdWxsU2NyZWVuQ2xpZW50R3RrLmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNp
bmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Jvb2wg
V2ViRnVsbFNjcmVlbkNsaWVudEd0azo6d2lsbEVudGVyRnVsbFNjcmVlbigpCit7CisgICAgaWYg
KCFtX2NsaWVudC53aWxsRW50ZXJGdWxsU2NyZWVuKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIHJldHVybiBtX2NsaWVudC53aWxsRW50ZXJGdWxsU2NyZWVuKG1fY2xpZW50LmNsaWVudElu
Zm8pOworfQorCitib29sIFdlYkZ1bGxTY3JlZW5DbGllbnRHdGs6OndpbGxFeGl0RnVsbFNjcmVl
bigpCit7CisgICAgaWYgKCFtX2NsaWVudC53aWxsRXhpdEZ1bGxTY3JlZW4pCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgcmV0dXJuIG1fY2xpZW50LndpbGxFeGl0RnVsbFNjcmVlbihtX2Ns
aWVudC5jbGllbnRJbmZvKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkZ1bGxTY3JlZW5DbGllbnRHdGsuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViRnVsbFNjcmVlbkNsaWVudEd0ay5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzOTM3NjQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkZ1bGxTY3JlZW5DbGllbnRHdGsu
aApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViRnVsbFNjcmVlbkNsaWVudEd0a19oCisjZGVmaW5lIFdl
YkZ1bGxTY3JlZW5DbGllbnRHdGtfaAorCisjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCisjaW5jbHVk
ZSAiV0tGdWxsU2NyZWVuQ2xpZW50R3RrLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBBUElPYmplY3Q7CisKK2NsYXNzIFdlYkZ1bGxTY3JlZW5DbGllbnRHdGsgOiBwdWJsaWMgQVBJ
Q2xpZW50PFdLRnVsbFNjcmVlbkNsaWVudEd0aywga1dLRnVsbFNjcmVlbkNsaWVudEd0a0N1cnJl
bnRWZXJzaW9uPiB7CitwdWJsaWM6CisgICAgYm9vbCB3aWxsRW50ZXJGdWxsU2NyZWVuKCk7Cisg
ICAgYm9vbCB3aWxsRXhpdEZ1bGxTY3JlZW4oKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gV2ViRnVsbFNjcmVlbkNsaWVudEd0a19oCg==
</data>
<flag name="review"
          id="139822"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>