<?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>137116</bug_id>
          
          <creation_ts>2014-09-25 04:41:54 -0700</creation_ts>
          <short_desc>[GTK] Add selection-changed signal to the WebKit2 API</short_desc>
          <delta_ts>2015-07-20 10:43:23 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tomas Popela">tpopela</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>mathstuf</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1037211</commentid>
    <comment_count>0</comment_count>
    <who name="Tomas Popela">tpopela</who>
    <bug_when>2014-09-25 04:41:54 -0700</bug_when>
    <thetext>The selection-changed signal is missing in WK2 (compared to WK1) API. It would be nice to have it there as it is needed for the successful port of Evolution composer from WK1 to WK2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037213</commentid>
    <comment_count>1</comment_count>
      <attachid>238655</attachid>
    <who name="Tomas Popela">tpopela</who>
    <bug_when>2014-09-25 04:53:49 -0700</bug_when>
    <thetext>Created attachment 238655
Patch

Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037214</commentid>
    <comment_count>2</comment_count>
      <attachid>238655</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-09-25 05:14:36 -0700</bug_when>
    <thetext>Comment on attachment 238655
Patch

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

Thanks for the patch, but new API should include a unit test.

&gt; Source/WebKit2/ChangeLog:9
&gt; +        Add the selection-changed signal into the WebKit2 GTK+ API. This
&gt; +        signal will be emitted everytime the selection in page is changed.

What&apos;s the use case? what does evo do when the selection changes?

&gt; Source/WebKit2/ChangeLog:14
&gt; +        * WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:
&gt; +        (didChangeSelection):
&gt; +        (webkit_web_page_class_init):
&gt; +        (webkitWebPageCreate):

Why do you need this in the web extensions API?

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:289
&gt; +     */

Since: 2.8

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:294
&gt; +        0, 0, 0,

0, nullptr, nullptr,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037215</commentid>
    <comment_count>3</comment_count>
    <who name="Tomas Popela">tpopela</who>
    <bug_when>2014-09-25 05:27:17 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; &gt; Source/WebKit2/ChangeLog:9
&gt; &gt; +        Add the selection-changed signal into the WebKit2 GTK+ API. This
&gt; &gt; +        signal will be emitted everytime the selection in page is changed.
&gt; 
&gt; What&apos;s the use case? what does evo do when the selection changes?
Basically the whole UI (all buttons regarding the formatting (ie. bold font, block format)) is operating on callback on this signal. So when user is moving with the caret through the content of the composer the UI is updated accordingly (it also applies situations where some content is selected).
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:14
&gt; &gt; +        * WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:
&gt; &gt; +        (didChangeSelection):
&gt; &gt; +        (webkit_web_page_class_init):
&gt; &gt; +        (webkitWebPageCreate):
&gt; 
&gt; Why do you need this in the web extensions API?

Hm it was mostly selfish decision (at least regarding to the Evolution) as we are doing various operations above DOM to get the actual state of content format (ie. is this paragraph indented, size of font, format of the block ..).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037219</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-09-25 05:45:07 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; &gt; Source/WebKit2/ChangeLog:9
&gt; &gt; &gt; +        Add the selection-changed signal into the WebKit2 GTK+ API. This
&gt; &gt; &gt; +        signal will be emitted everytime the selection in page is changed.
&gt; &gt; 
&gt; &gt; What&apos;s the use case? what does evo do when the selection changes?
&gt; Basically the whole UI (all buttons regarding the formatting (ie. bold font, block format)) is operating on callback on this signal. So when user is moving with the caret through the content of the composer the UI is updated accordingly (it also applies situations where some content is selected).

So, this sounds like you need that in the UI process then.

&gt; &gt; &gt; Source/WebKit2/ChangeLog:14
&gt; &gt; &gt; +        * WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:
&gt; &gt; &gt; +        (didChangeSelection):
&gt; &gt; &gt; +        (webkit_web_page_class_init):
&gt; &gt; &gt; +        (webkitWebPageCreate):
&gt; &gt; 
&gt; &gt; Why do you need this in the web extensions API?
&gt; 
&gt; Hm it was mostly selfish decision (at least regarding to the Evolution) as we are doing various operations above DOM to get the actual state of content format (ie. is this paragraph indented, size of font, format of the block ..).

Would it be possible to do the same by exposing the EditorState in the UI process API?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037220</commentid>
    <comment_count>5</comment_count>
    <who name="Tomas Popela">tpopela</who>
    <bug_when>2014-09-25 06:02:46 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; &gt; Source/WebKit2/ChangeLog:9
&gt; &gt; &gt; &gt; +        Add the selection-changed signal into the WebKit2 GTK+ API. This
&gt; &gt; &gt; &gt; +        signal will be emitted everytime the selection in page is changed.
&gt; &gt; &gt; 
&gt; &gt; &gt; What&apos;s the use case? what does evo do when the selection changes?
&gt; &gt; Basically the whole UI (all buttons regarding the formatting (ie. bold font, block format)) is operating on callback on this signal. So when user is moving with the caret through the content of the composer the UI is updated accordingly (it also applies situations where some content is selected).
&gt; 
&gt; So, this sounds like you need that in the UI process then.
OK, let&apos;s move it there. I will update the patch with previous recommendations.
&gt; 
&gt; &gt; &gt; &gt; Source/WebKit2/ChangeLog:14
&gt; &gt; &gt; &gt; +        * WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:
&gt; &gt; &gt; &gt; +        (didChangeSelection):
&gt; &gt; &gt; &gt; +        (webkit_web_page_class_init):
&gt; &gt; &gt; &gt; +        (webkitWebPageCreate):
&gt; &gt; &gt; 
&gt; &gt; &gt; Why do you need this in the web extensions API?
&gt; &gt; 
&gt; &gt; Hm it was mostly selfish decision (at least regarding to the Evolution) as we are doing various operations above DOM to get the actual state of content format (ie. is this paragraph indented, size of font, format of the block ..).
&gt; 
&gt; Would it be possible to do the same by exposing the EditorState in the UI process API?

For some things yes (font properties, ...) but for some not as some of them depend on other things (DOM structure, class names, ...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053760</commentid>
    <comment_count>6</comment_count>
    <who name="Tomas Popela">tpopela</who>
    <bug_when>2014-12-09 05:46:54 -0800</bug_when>
    <thetext>After talk with Carlos we deciced that we will indeed expose this API in WebProcess instead in UIProcess. Patch follows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053888</commentid>
    <comment_count>7</comment_count>
      <attachid>242949</attachid>
    <who name="Tomas Popela">tpopela</who>
    <bug_when>2014-12-09 11:35:50 -0800</bug_when>
    <thetext>Created attachment 242949
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054457</commentid>
    <comment_count>8</comment_count>
      <attachid>242949</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-12-11 03:54:07 -0800</bug_when>
    <thetext>Comment on attachment 242949
Patch

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

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:420
&gt; +    WKBundlePageEditorClientV0 editorClient = {
&gt; +        {
&gt; +            0, // version
&gt; +            page, // clientInfo
&gt; +        },
&gt; +        0, // shouldBeginEditing
&gt; +        0, // shouldEndEditing
&gt; +        0, // shouldInsertNode
&gt; +        0, // shouldInsertText
&gt; +        0, // shouldDeleteRange
&gt; +        0, // shouldChangeSelectedRange
&gt; +        0, // shouldApplyStyle
&gt; +        0, // didBeginEditing
&gt; +        0, // didEndEditing
&gt; +        0, // didChange
&gt; +        didChangeSelection
&gt; +    };
&gt; +    WKBundlePageSetEditorClient(toAPI(webPage), &amp;editorClient.base);

I wonder if it would be better to expose this as a WebKitWebEditor, and add the signals there, just in case we end up needing more of those calbacks exposed. The user would do webkit_web_page_get_editor, and connect to the signals there.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebExtensions.cpp:100
&gt; +    GUniquePtr&lt;char&gt; extensionBusName(g_strdup_printf(&quot;org.webkit.gtk.WebExtensionTest%u&quot;, Test::s_webExtensionID));
&gt; +    GRefPtr&lt;GDBusProxy&gt; proxy = adoptGRef(bus-&gt;createProxy(extensionBusName.get(),
&gt; +        &quot;/org/webkit/gtk/WebExtensionTest&quot;, &quot;org.webkit.gtk.WebExtensionTest&quot;, test-&gt;m_mainLoop));
&gt; +    GDBusConnection* connection = g_dbus_proxy_get_connection(proxy.get());
&gt; +    guint id = g_dbus_connection_signal_subscribe(connection,
&gt; +        0,
&gt; +        &quot;org.webkit.gtk.WebExtensionTest&quot;,
&gt; +        &quot;SelectionChanged&quot;,
&gt; +        &quot;/org/webkit/gtk/WebExtensionTest&quot;,
&gt; +        0,
&gt; +        G_DBUS_SIGNAL_FLAGS_NONE,
&gt; +        reinterpret_cast&lt;GDBusSignalCallback&gt;(selectionChangedCallback),
&gt; +        test,
&gt; +        0);
&gt; +    g_assert(id);

We can avoid all this now by using user script messages.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebExtensions.cpp:107
&gt; +    test-&gt;loadHtml(&quot;&lt;html&gt;&lt;body&gt;All work and no play make Jack a dull boy.&lt;/body&gt;&lt;/html&gt;&quot;, 0);
&gt; +    test-&gt;waitUntilLoadFinished();
&gt; +
&gt; +    webkit_web_view_execute_editing_command(test-&gt;m_webView, WEBKIT_EDITING_COMMAND_SELECT_ALL);
&gt; +
&gt; +    g_main_loop_run(test-&gt;m_mainLoop);

We could also tests that the signal is emitted again after clearing the selection, for example.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebExtensionTest.cpp:147
&gt; +    // FIXME: Too much code just to send a message, we need convenient custom API for this.
&gt; +    WebKitDOMDocument* document = webkit_web_page_get_dom_document(webPage);
&gt; +    WebKitDOMDOMWindow* window = webkit_dom_document_get_default_view(document);
&gt; +    if (WebKitDOMWebKitNamespace* webkit = webkit_dom_dom_window_get_webkit_namespace(window)) {
&gt; +        WebKitDOMUserMessageHandlersNamespace* messageHandlers = webkit_dom_webkit_namespace_get_message_handlers(webkit);
&gt; +        if (WebKitDOMUserMessageHandler* handler = webkit_dom_user_message_handlers_namespace_get_handler(messageHandlers, &quot;dom&quot;))
&gt; +            webkit_dom_user_message_handler_post_message(handler, &quot;SelectionChanged&quot;);
&gt; +    }
&gt; +
&gt; +    webkit_dom_dom_window_webkit_message_handlers_post_message(window, &quot;dom-convenience&quot;, &quot;SelectionChanged&quot;);

So, you are indeed using user script messages, but not connecting to the signal. I guess you copy-pasted. So, we now have the convenient api, so you could simply call webkit_dom_dom_window_webkit_message_handlers_post_message() with &quot;editor&quot; as message handler name. In the UI process part of the test, instead of doing all the dbus proxy, you can simply connect to &quot;script-message-received::editor&quot; of WebKitUserContentManager. With that we don&apos;t need the the dbus signal at all, and everything is simpler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054459</commentid>
    <comment_count>9</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-12-11 03:58:14 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; I wonder if it would be better to expose this as a WebKitWebEditor, and add
&gt; the signals there, just in case we end up needing more of those calbacks
&gt; exposed. The user would do webkit_web_page_get_editor, and connect to the
&gt; signals there.

I had roughly the same internal dialog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063352</commentid>
    <comment_count>10</comment_count>
      <attachid>245140</attachid>
    <who name="Tomas Popela">tpopela</who>
    <bug_when>2015-01-22 06:52:06 -0800</bug_when>
    <thetext>Created attachment 245140
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063361</commentid>
    <comment_count>11</comment_count>
      <attachid>245143</attachid>
    <who name="Tomas Popela">tpopela</who>
    <bug_when>2015-01-22 07:52:55 -0800</bug_when>
    <thetext>Created attachment 245143
WIP patch v2

Move the editor client into WebKitWebEditor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063651</commentid>
    <comment_count>12</comment_count>
      <attachid>245143</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-01-23 03:46:16 -0800</bug_when>
    <thetext>Comment on attachment 245143
WIP patch v2

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

The API looks good to me, we can add more signals to the Editor object in the future if needed without breaking the API. Gustavo? Martin?

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:31
&gt; +

We should add a doc section here explaining a bit what this class is.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:40
&gt; +    GRefPtr&lt;WebKitWebPage&gt; webkitWebPage;
&gt; +    WebPage* webPage;

Why do you need to keep a reference of WebKitWebPage and why do we need to keep a pointer to WebPage?. The WebKitWebPage is the one creating and destroying the editor, so the web page will be alive while the editor is alive.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:50
&gt; +     * WebKitWebPage::selection-changed:

WebKitWebPage -&gt; WebKitWebEditor

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:54
&gt; +     * This signal is emitted when the selection inside a #WebKitWebPage has been
&gt; +     * changed.

Is this emitted for every selection change in a WebView? or only selections in editable areas?

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:67
&gt; +static void didChangeSelection(WKBundlePageRef, WKStringRef /* notificationName */, const void *clientInfo)

const void *clientInfo -&gt; const void* clientInfo

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:72
&gt; +WebKitWebEditor* webkitWebEditorCreate(WebKitWebPage* webkitWebPage, WebPage* webPage)

Add a private method to WebKitWebPage to return its WebPage. That way here we would only receive the WebKitWebPage and we don&apos;t need to keep a pointer to the WebPage in the private struct.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:74
&gt; +    WebKitWebEditor* editor = WEBKIT_WEB_EDITOR(g_object_new(WEBKIT_TYPE_WEB_EDITOR, NULL));

nullptr instead of NULL

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:92
&gt; +        0, // shouldBeginEditing
&gt; +        0, // shouldEndEditing
&gt; +        0, // shouldInsertNode
&gt; +        0, // shouldInsertText
&gt; +        0, // shouldDeleteRange
&gt; +        0, // shouldChangeSelectedRange
&gt; +        0, // shouldApplyStyle
&gt; +        0, // didBeginEditing
&gt; +        0, // didEndEditing
&gt; +        0, // didChange

Use nullptr instead of 0 in all these.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:107
&gt; + * Returns: (transfer none): the #WebKitWebPage that can be used to access
&gt; + * the #WebKitDOMDocument currently loaded into it.

I would not mention #WebKitDOMDocument, this is just the page associated to the editor, that can be used for anything else apart from accessing the DOM.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.h:61
&gt; +WEBKIT_API GType
&gt; +webkit_web_editor_get_type                           (void);
&gt; +
&gt; +WEBKIT_API WebKitWebPage *
&gt; +webkit_web_editor_get_page                           (WebKitWebEditor *editor);

Remove all the extra spaces between function name and arguments

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:574
&gt; + * Returns the #WebPageEditor of a #WebKitWebPage.

Use Gets instead of Returns to avoid the double Returns

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:583
&gt; +    g_return_val_if_fail(WEBKIT_IS_WEB_PAGE(webPage), 0);

Use nullptr instead of 0

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:585
&gt; +    return webPage-&gt;priv-&gt;webEditor.get();

Maybe we could create the editor object on demand here. That way if it&apos;s not used by the application, the object will never be created.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.h:47
&gt; +/* Forward declarations */
&gt; +typedef struct _WebKitWebEditor      WebKitWebEditor;

You shouldn&apos;t need this, since you are including WebKitWebEditor.h.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitUserContentManager.cpp:375
&gt; +    test-&gt;loadHtml(&quot;&lt;html&gt;&lt;body&gt;All work and no play make Jack a dull boy.&lt;/body&gt;&lt;/html&gt;&quot;, 0);

nullptr instead of 0

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitUserContentManager.cpp:404
&gt; +    UserScriptMessageTest::add(&quot;WebKitWebEditor&quot;, &quot;selection-changed&quot;, testSelectionChangedSignal);

Why is this a user content manger test? This should be in TestEditor I guess, if we need to make UserScriptMessageTest available to other tests we can move it to the test lib

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebExtensionTest.cpp:244
&gt; +    WebKitWebEditor *webEditor = webkit_web_page_get_editor (webPage);

estra space between function name and (

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebExtensionTest.cpp:245
&gt; +    g_signal_connect(webEditor, &quot;selection-changed&quot;, G_CALLBACK(selectionChangedCallback), nullptr);

we could use webkit_web_page_get_editor(webPage) here directly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063655</commentid>
    <comment_count>13</comment_count>
    <who name="Tomas Popela">tpopela</who>
    <bug_when>2015-01-23 04:47:05 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:40
&gt; &gt; +    GRefPtr&lt;WebKitWebPage&gt; webkitWebPage;
&gt; &gt; +    WebPage* webPage;
&gt; 
&gt; Why do you need to keep a reference of WebKitWebPage and why do we need to
&gt; keep a pointer to WebPage?. The WebKitWebPage is the one creating and
&gt; destroying the editor, so the web page will be alive while the editor is
&gt; alive.

The WebPage will be removed as I will do the private method that you suggested. I mean to keep it for the future as I think that the stuff that we will be done in WebEditor will need to access the WebPage. For the WebKitWebPage I left it there to simplify the access to the DOM (as shown in the tests).
 
&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:54
&gt; &gt; +     * This signal is emitted when the selection inside a #WebKitWebPage has been
&gt; &gt; +     * changed.
&gt; 
&gt; Is this emitted for every selection change in a WebView? or only selections
&gt; in editable areas?
&gt;

For every selection change in a WebView.
 
&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.h:47
&gt; &gt; +/* Forward declarations */
&gt; &gt; +typedef struct _WebKitWebEditor      WebKitWebEditor;
&gt; 
&gt; You shouldn&apos;t need this, since you are including WebKitWebEditor.h.

I already tried it and:

In file included from ../../Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.h:29:0,
                 from ../../Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:21:
DerivedSources/ForwardingHeaders/webkit2gtk-webextension/webkit2/WebKitWebPage.h:74:40: error: ‘WebKitWebEditor’ does not name a type
 WEBKIT_API WebKitWebEditor *
 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitUserContentManager.cpp:404
&gt; &gt; +    UserScriptMessageTest::add(&quot;WebKitWebEditor&quot;, &quot;selection-changed&quot;, testSelectionChangedSignal);
&gt; 
&gt; Why is this a user content manger test? This should be in TestEditor I
&gt; guess, if we need to make UserScriptMessageTest available to other tests we
&gt; can move it to the test lib

I moved it here because the infrastructure for handlers is there. But doing it in separate module makes really sense (in TestEditor).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064193</commentid>
    <comment_count>14</comment_count>
      <attachid>245143</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2015-01-26 11:05:27 -0800</bug_when>
    <thetext>Comment on attachment 245143
WIP patch v2

API looks sensible to me. From what you said before, Tomas, you use this signal to watch cursor movement even, so I guess when you say it will be emitted for every selection change in webview you mean it will happen when: something is selected, something is deselected, cursor changes position?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064441</commentid>
    <comment_count>15</comment_count>
    <who name="Tomas Popela">tpopela</who>
    <bug_when>2015-01-26 23:23:25 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; Comment on attachment 245143 [details]
&gt; WIP patch v2
&gt; 
&gt; API looks sensible to me. From what you said before, Tomas, you use this
&gt; signal to watch cursor movement even, so I guess when you say it will be
&gt; emitted for every selection change in webview you mean it will happen when:
&gt; something is selected, something is deselected, cursor changes position?

Yes, that&apos;s exactly it. It is emitted when the selection in view is changed (cursor (caret) is just the special case of selection - the collapsed one).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095579</commentid>
    <comment_count>16</comment_count>
      <attachid>253314</attachid>
    <who name="Tomas Popela">tpopela</who>
    <bug_when>2015-05-18 02:18:44 -0700</bug_when>
    <thetext>Created attachment 253314
Patch

Patch with suggestions from comment #12, test is now a WebProcess test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095580</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-18 02:20:47 -0700</bug_when>
    <thetext>Attachment 253314 did not pass style-queue:


WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.h&quot;
ERROR: Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:27:  Alphabetical sorting problem.  [build/include_order] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/webkit-web-extension.h&quot;
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107035</commentid>
    <comment_count>18</comment_count>
      <attachid>253314</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-07-06 00:53:32 -0700</bug_when>
    <thetext>Comment on attachment 253314
Patch

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

Sorry for the delay reviewing this, I still have a few more comments.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:25
&gt; +#include &quot;WebKitWebPage.h&quot;

This is already included form WebKitWebPagePrivate.h, but also from WebKitWebEditor.h

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:27
&gt; +#include &quot;WebPage.h&quot;

And this should be included from WebKitWebPagePrivate.h

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:37
&gt; + * @Title: WebKitWebEditor
&gt; + *

Add See also: #WebKitWebPage

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:38
&gt; + * The #WebKitWebEditor provides access to various editing capabilities of

Do not use # in this particular case, as it creates a link to this section.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:41
&gt; + */

Since: 2.10

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:49
&gt; +    GRefPtr&lt;WebKitWebPage&gt; webPage;

Why do you need to keep a reference of WebKitWebPage?. The WebKitWebPage is the one creating and destroying the editor, so the web page will be alive while the editor is alive.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:63
&gt; +     * This signal is emitted when the selection inside a #WebKitWebPage has been
&gt; +     * changed.

I think we need to explain here what selection actually means, since it&apos;s not obvious that a cursor move triggers a selection change

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:115
&gt; +/**
&gt; + * webkit_web_editor_get_page:
&gt; + * @editor: a #WebKitWebEditor
&gt; + *
&gt; + * Gets the #WebKitWebPage that is associated with #WebKitWebEditor.
&gt; + *
&gt; + * Returns: (transfer none): the #WebKitWebPage that can be used to access
&gt; + * the #WebKitDOMDocument currently loaded into it.

If this is mainly useful for accessing the DOM, maybe it makes more sense to have webkit_web_editor_get_dom_document?

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:402
&gt; +    g_return_val_if_fail(WEBKIT_IS_WEB_PAGE(webPage), nullptr);

Do not use g_return macros in private API

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:473
&gt; +    page-&gt;priv-&gt;webEditor = nullptr;
&gt; +

This is not needed, the struct is already filled with 0 on allocation, and the GRefPtr initialized by the constructor.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:595
&gt; + * Gets the #WebPageEditor of a #WebKitWebPage.

#WebPageEditor -&gt; #WebKitWebEditor

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:598
&gt; + * Returns: (transfer none): the #WebKitWebEditor that can be used to access
&gt; + * editting properties of a @web_page

WebKitWebEditor is more about editor notifications than properties, no? Since this links to the editor section, I wouldn&apos;t mention anything, just that it returns the editor of the page

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/EditorTest.cpp:40
&gt; +        webkit_dom_document_exec_command(document, &quot;SelectAll&quot;, false, &quot;&quot;);
&gt; +        webkit_dom_document_exec_command(document, &quot;Unselect&quot;, false, &quot;&quot;);

I think we should test more cases, for example when caret cursor moved or text selection is extended.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/EditorTest.cpp:51
&gt; +            return retVal;

I don&apos;t think this is enough, if the signal was emitted when text was selected, but not when it was unselected, this would be true. We need to check the value after every selection change, and reset the variable before next test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109340</commentid>
    <comment_count>19</comment_count>
    <who name="Tomas Popela">tpopela</who>
    <bug_when>2015-07-14 01:34:33 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:115
&gt; &gt; +/**
&gt; &gt; + * webkit_web_editor_get_page:
&gt; &gt; + * @editor: a #WebKitWebEditor
&gt; &gt; + *
&gt; &gt; + * Gets the #WebKitWebPage that is associated with #WebKitWebEditor.
&gt; &gt; + *
&gt; &gt; + * Returns: (transfer none): the #WebKitWebPage that can be used to access
&gt; &gt; + * the #WebKitDOMDocument currently loaded into it.
&gt; 
&gt; If this is mainly useful for accessing the DOM, maybe it makes more sense to
&gt; have webkit_web_editor_get_dom_document?
&gt; 

As you wrote in #c12:

&gt; the page associated to the editor, that can be used for anything else apart from accessing the DOM

I would not do a special API just for accessing the DOM as for me it looks like some unnecessary and unwanted duplication. You are also closing the doors for accessing information that are in the WebKitWebPage (we really don&apos;t know what we will add there in the future) and I don&apos;t think we want to have getters for every interesting information in WebKitWebEditor&apos;s POV.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109623</commentid>
    <comment_count>20</comment_count>
      <attachid>256838</attachid>
    <who name="Tomas Popela">tpopela</who>
    <bug_when>2015-07-15 07:10:21 -0700</bug_when>
    <thetext>Created attachment 256838
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109625</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-15 07:13:02 -0700</bug_when>
    <thetext>Attachment 256838 did not pass style-queue:


WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.h&quot;
ERROR: Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:25:  Alphabetical sorting problem.  [build/include_order] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/webkit-web-extension.h&quot;
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110575</commentid>
    <comment_count>22</comment_count>
      <attachid>256838</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-07-20 00:26:23 -0700</bug_when>
    <thetext>Comment on attachment 256838
Patch

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

Patch looks good to me I only have a few comments about the test.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/EditorTest.cpp:34
&gt; +    static void selectionChangedCallback(WebKitWebEditor* editor, bool* retVal)

Remove the editor parameter as it&apos;s unsused. Or you can use connect_swapped and leave bool* retval only.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/EditorTest.cpp:36
&gt; +        *retVal = true;

This should be called returnValue, or something less generic like selectionChanged

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/EditorTest.cpp:42
&gt; +        WebKitDOMDocument* document = webkit_web_page_get_dom_document(page);
&gt; +

g_assert(WEBKIT_IS_DOM_DOCUMENT(document));

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/EditorTest.cpp:52
&gt; +        document = webkit_web_page_get_dom_document(page);

WebKitDOMDocument* document = webkit_web_page_get_dom_document(page);
g_assert(WEBKIT_IS_DOM_DOCUMENT(document));

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/EditorTest.cpp:54
&gt; +        domWindow = webkit_dom_document_get_default_view(document);
&gt; +        domSelection = webkit_dom_dom_window_get_selection(domWindow);

Same here, but in this case use GRefPtr&lt;&gt; foo = adoptGRef();

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/EditorTest.cpp:70
&gt; +        WebKitDOMDocument* document;
&gt; +        WebKitDOMDOMSelection* domSelection;
&gt; +        WebKitDOMDOMWindow* domWindow;
&gt; +
&gt; +        document = webkit_web_page_get_dom_document(page);
&gt; +        domWindow = webkit_dom_document_get_default_view(document);
&gt; +        domSelection = webkit_dom_dom_window_get_selection(domWindow);

Ditto.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/EditorTest.cpp:86
&gt; +        WebKitDOMDocument* document;
&gt; +        WebKitDOMDOMSelection* domSelection;
&gt; +        WebKitDOMDOMWindow* domWindow;
&gt; +
&gt; +        document = webkit_web_page_get_dom_document(page);
&gt; +        domWindow = webkit_dom_document_get_default_view(document);
&gt; +        domSelection = webkit_dom_dom_window_get_selection(domWindow);

Ditto.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/EditorTest.cpp:97
&gt; +        WebKitDOMDocument* document = webkit_web_page_get_dom_document(page);
&gt; +

g_assert(WEBKIT_IS_DOM_DOCUMENT(document));

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/EditorTest.cpp:104
&gt; +            bool retVal = false;

Same here, either use returnValue or something less generic.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/EditorTest.cpp:106
&gt; +            g_signal_connect(webkit_web_page_get_editor(page), &quot;selection-changed&quot;, G_CALLBACK(selectionChangedCallback), &amp;retVal);

Get the editor into a local variable and add g_assert(WEBKIT_IS_WEB_EDITOR(editor)); and also assertObjectIsDeletedWhenTestFinishes(G_OBJECT(editor));

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/EditorTest.cpp:110
&gt; +            if (!retVal)
&gt; +                return false;

Use asserts here, because this way we know which subtest failed.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/EditorTest.cpp:115
&gt; +            if (!retVal)
&gt; +                return false;

Ditto.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/EditorTest.cpp:120
&gt; +            if (!retVal)
&gt; +                return false;

Ditto.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/EditorTest.cpp:125
&gt; +            if (!retVal)
&gt; +                return false;

Ditto.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/EditorTest.cpp:130
&gt; +            if (!retVal)
&gt; +                return false;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110581</commentid>
    <comment_count>23</comment_count>
      <attachid>257081</attachid>
    <who name="Tomas Popela">tpopela</who>
    <bug_when>2015-07-20 01:20:40 -0700</bug_when>
    <thetext>Created attachment 257081
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110582</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-20 01:21:52 -0700</bug_when>
    <thetext>Attachment 257081 did not pass style-queue:


WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.h&quot;
ERROR: Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:25:  Alphabetical sorting problem.  [build/include_order] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/webkit-web-extension.h&quot;
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110583</commentid>
    <comment_count>25</comment_count>
      <attachid>257081</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-07-20 01:33:53 -0700</bug_when>
    <thetext>Comment on attachment 257081
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/EditorTest.cpp:51
&gt; +        GRefPtr&lt;WebKitDOMDOMWindow&gt; domWindow = adoptGRef(webkit_dom_document_get_default_view(document));

g_assert(WEBKIT_DOM_IS_DOM_WINDOW(domWindow.get()));

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/EditorTest.cpp:52
&gt; +        GRefPtr&lt;WebKitDOMDOMSelection&gt; domSelection = adoptGRef(webkit_dom_dom_window_get_selection(domWindow.get()));

And same here for the selection.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/EditorTest.cpp:62
&gt; +        GRefPtr&lt;WebKitDOMDOMWindow&gt; domWindow = adoptGRef(webkit_dom_document_get_default_view(document));
&gt; +        GRefPtr&lt;WebKitDOMDOMSelection&gt; domSelection = adoptGRef(webkit_dom_dom_window_get_selection(domWindow.get()));

Ditto.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/EditorTest.cpp:72
&gt; +        GRefPtr&lt;WebKitDOMDOMWindow&gt; domWindow = adoptGRef(webkit_dom_document_get_default_view(document));
&gt; +        GRefPtr&lt;WebKitDOMDOMSelection&gt; domSelection = adoptGRef(webkit_dom_dom_window_get_selection(domWindow.get()));

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110616</commentid>
    <comment_count>26</comment_count>
      <attachid>257093</attachid>
    <who name="Tomas Popela">tpopela</who>
    <bug_when>2015-07-20 07:50:29 -0700</bug_when>
    <thetext>Created attachment 257093
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110617</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-20 07:52:27 -0700</bug_when>
    <thetext>Attachment 257093 did not pass style-queue:


WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.h&quot;
ERROR: Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:25:  Alphabetical sorting problem.  [build/include_order] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/WebProcess/InjectedBundle/API/gtk/webkit-web-extension.h&quot;
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110650</commentid>
    <comment_count>28</comment_count>
      <attachid>257093</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-20 10:43:19 -0700</bug_when>
    <thetext>Comment on attachment 257093
Patch

Clearing flags on attachment: 257093

Committed r187024: &lt;http://trac.webkit.org/changeset/187024&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110651</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-20 10:43:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238655</attachid>
            <date>2014-09-25 04:53:49 -0700</date>
            <delta_ts>2014-12-09 11:35:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137116-20140925135347.patch</filename>
            <type>text/plain</type>
            <size>3540</size>
            <attacher name="Tomas Popela">tpopela</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczODcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZGU0NmNkZTQwOWRkNjU4
MmQ5ZTRiOTdiMWIzNmMyNzFlNzJkZWM3NS4uM2QyYzYwZjAwOTRkYTc0NjQ5MWE3NGIzMzgzNTYw
MTMzOThkODBiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE0LTA5LTI1ICBUb21h
cyBQb3BlbGEgIDx0cG9wZWxhQHJlZGhhdC5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIHNlbGVj
dGlvbi1jaGFuZ2VkIHNpZ25hbCB0byB0aGUgV2ViS2l0MiBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzExNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0aGUgc2VsZWN0aW9uLWNoYW5nZWQg
c2lnbmFsIGludG8gdGhlIFdlYktpdDIgR1RLKyBBUEkuIFRoaXMKKyAgICAgICAgc2lnbmFsIHdp
bGwgYmUgZW1pdHRlZCBldmVyeXRpbWUgdGhlIHNlbGVjdGlvbiBpbiBwYWdlIGlzIGNoYW5nZWQu
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2Vi
UGFnZS5jcHA6CisgICAgICAgIChkaWRDaGFuZ2VTZWxlY3Rpb24pOgorICAgICAgICAod2Via2l0
X3dlYl9wYWdlX2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0V2ViUGFnZUNyZWF0ZSk6CisK
IDIwMTQtMDktMjIgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAg
IFtDb2NvYV0gQWRkIFVJIGRlbGVnYXRlIGNhbGxiYWNrIHdoZW4gd2luZG93LmNsb3NlKCkgaXMg
Y2FsbGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAKaW5kZXggMzEwNGI0MzA3
OWViMWQ5ZmYxZjZhOGRkYTFlM2IyYzZjZWJmYTY2Yy4uZDkwYTc0MmVmMzMwNGJhNzAwZTNmNTE5
MDAyNmVhMzcyNzI4NzlkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcApA
QCAtNDgsNiArNDgsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogZW51bSB7CiAgICAg
RE9DVU1FTlRfTE9BREVELAorICAgIFNFTEVDVElPTl9DSEFOR0VELAogICAgIFNFTkRfUkVRVUVT
VCwKIAogICAgIExBU1RfU0lHTkFMCkBAIC0xMDcsNiArMTA4LDExIEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYlBhZ2VTZXRVUkkoV2ViS2l0V2ViUGFnZSogd2ViUGFnZSwgY29uc3QgQ1N0cmluZyYg
dXJpKQogICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVCh3ZWJQYWdlKSwgInVyaSIpOwogfQog
CitzdGF0aWMgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV0tCdW5kbGVQYWdlUmVmLCBXS1N0cmlu
Z1JlZiAvKiBub3RpZmljYXRpb25OYW1lICovLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQorewor
ICAgIGdfc2lnbmFsX2VtaXQoV0VCS0lUX1dFQl9QQUdFKGNsaWVudEluZm8pLCBzaWduYWxzW1NF
TEVDVElPTl9DSEFOR0VEXSwgMCk7Cit9CisKIHN0YXRpYyB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBX
S1R5cGVSZWYqLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQogewogICAgIGlmICghV0tCdW5kbGVG
cmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKQEAgLTI3NSw2ICsyODEsMjEgQEAgc3RhdGljIHZvaWQg
d2Via2l0X3dlYl9wYWdlX2NsYXNzX2luaXQoV2ViS2l0V2ViUGFnZUNsYXNzKiBrbGFzcykKICAg
ICAgICAgR19UWVBFX05PTkUsIDApOwogCiAgICAgLyoqCisgICAgICogV2ViS2l0V2ViUGFnZTo6
c2VsZWN0aW9uLWNoYW5nZWQ6CisgICAgICogQHdlYl9wYWdlOiB0aGUgI1dlYktpdFdlYlBhZ2Ug
b24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICoKKyAgICAgKiBUaGlzIHNpZ25h
bCBpcyBlbWl0dGVkIHdoZW4gdGhlIHNlbGVjdGlvbiBpbnNpZGUgYSAjV2ViS2l0V2ViUGFnZSBo
YXMgYmVlbgorICAgICAqIGNoYW5nZWQuCisgICAgICovCisgICAgc2lnbmFsc1tTRUxFQ1RJT05f
Q0hBTkdFRF0gPSBnX3NpZ25hbF9uZXcoCisgICAgICAgICJzZWxlY3Rpb24tY2hhbmdlZCIsCisg
ICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKGtsYXNzKSwKKyAgICAgICAgR19TSUdOQUxfUlVOX0xB
U1QsCisgICAgICAgIDAsIDAsIDAsCisgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9WT0lEX19W
T0lELAorICAgICAgICBHX1RZUEVfTk9ORSwgMCk7CisKKyAgICAvKioKICAgICAgKiBXZWJLaXRX
ZWJQYWdlOjpzZW5kLXJlcXVlc3Q6CiAgICAgICogQHdlYl9wYWdlOiB0aGUgI1dlYktpdFdlYlBh
Z2Ugb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCiAgICAgICogQHJlcXVlc3Q6IGEgI1dl
YktpdFVSSVJlcXVlc3QKQEAgLTMxMSw2ICszMzIsMjUgQEAgV2ViS2l0V2ViUGFnZSogd2Via2l0
V2ViUGFnZUNyZWF0ZShXZWJQYWdlKiB3ZWJQYWdlKQogICAgIFdlYktpdFdlYlBhZ2UqIHBhZ2Ug
PSBXRUJLSVRfV0VCX1BBR0UoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9QQUdFLCBOVUxM
KSk7CiAgICAgcGFnZS0+cHJpdi0+d2ViUGFnZSA9IHdlYlBhZ2U7CiAKKyAgICBXS0J1bmRsZVBh
Z2VFZGl0b3JDbGllbnRWMCBlZGl0b3JDbGllbnQgPSB7CisgICAgICAgIHsKKyAgICAgICAgICAg
IDAsIC8vIHZlcnNpb24KKyAgICAgICAgICAgIHBhZ2UsIC8vIGNsaWVudEluZm8KKyAgICAgICAg
fSwKKyAgICAgICAgMCwgLy8gc2hvdWxkQmVnaW5FZGl0aW5nCisgICAgICAgIDAsIC8vIHNob3Vs
ZEVuZEVkaXRpbmcKKyAgICAgICAgMCwgLy8gc2hvdWxkSW5zZXJ0Tm9kZQorICAgICAgICAwLCAv
LyBzaG91bGRJbnNlcnRUZXh0CisgICAgICAgIDAsIC8vIHNob3VsZERlbGV0ZVJhbmdlCisgICAg
ICAgIDAsIC8vIHNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UKKyAgICAgICAgMCwgLy8gc2hvdWxk
QXBwbHlTdHlsZQorICAgICAgICAwLCAvLyBkaWRCZWdpbkVkaXRpbmcKKyAgICAgICAgMCwgLy8g
ZGlkRW5kRWRpdGluZworICAgICAgICAwLCAvLyBkaWRDaGFuZ2UKKyAgICAgICAgZGlkQ2hhbmdl
U2VsZWN0aW9uCisgICAgfTsKKyAgICBXS0J1bmRsZVBhZ2VTZXRFZGl0b3JDbGllbnQodG9BUEko
d2ViUGFnZSksICZlZGl0b3JDbGllbnQuYmFzZSk7CisKICAgICBXS0J1bmRsZVBhZ2VMb2FkZXJD
bGllbnRWNyBsb2FkZXJDbGllbnQgPSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIDcsIC8vIHZl
cnNpb24K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242949</attachid>
            <date>2014-12-09 11:35:50 -0800</date>
            <delta_ts>2015-01-22 06:52:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137116-20141209203629.patch</filename>
            <type>text/plain</type>
            <size>10132</size>
            <attacher name="Tomas Popela">tpopela</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3MDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggM2M0OTc2NGY2OGIwNmM5
YzY0ZGIzMmE5ZjQzNmUwZGNiNTE3NTNlYi4uN2E5ZGIxMjAzOTc3MThkZGUzODIxZmQ3NWZmMmM1
ZTk2MGMwNDdiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE0LTEyLTA5ICBUb21h
cyBQb3BlbGEgIDx0cG9wZWxhQHJlZGhhdC5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIHNlbGVj
dGlvbi1jaGFuZ2VkIHNpZ25hbCB0byB0aGUgV2ViS2l0MiBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzExNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0aGUgc2VsZWN0aW9uLWNoYW5nZWQg
c2lnbmFsIGludG8gdGhlIFdlYktpdDIgR1RLKyBBUEkuIFRoaXMKKyAgICAgICAgc2lnbmFsIHdp
bGwgYmUgZW1pdHRlZCBldmVyeXRpbWUgdGhlIHNlbGVjdGlvbiBpbiBwYWdlIGlzIGNoYW5nZWQu
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2Vi
UGFnZS5jcHA6CisgICAgICAgIChkaWRDaGFuZ2VTZWxlY3Rpb24pOgorICAgICAgICAod2Via2l0
X3dlYl9wYWdlX2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0V2ViUGFnZUNyZWF0ZSk6CisK
IDIwMTQtMTItMDkgIFRpbmctV2VpIExhbiAgPGxhbnR3NDRAZ21haWwuY29tPgogCiAgICAgICAg
IFtHVEtdIExERkxBR1MgaXMgaWdub3JlZCB3aGVuIHJ1bm5pbmcgZy1pci1zY2FubmVyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
V2ViS2l0V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAKaW5kZXggNzczOWVmZTdhYWZhNmYzZDBmOGVi
M2Q2MWRiMDYzOTAyN2Y1ZjMyYy4uNTNhYjc5Y2I5ZGRmZWQxOTc1MjE2ZjQ1ZWZiNGE1ZGY0OGQ1
NmMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcApAQCAtNTUsNiArNTUs
NyBAQCBlbnVtIHsKICAgICBET0NVTUVOVF9MT0FERUQsCiAgICAgU0VORF9SRVFVRVNULAogICAg
IENPTlRFWFRfTUVOVSwKKyAgICBTRUxFQ1RJT05fQ0hBTkdFRCwKIAogICAgIExBU1RfU0lHTkFM
CiB9OwpAQCAtMTEzLDYgKzExNCwxMSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJQYWdlU2V0VVJJ
KFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UsIGNvbnN0IENTdHJpbmcmIHVyaSkKICAgICBnX29iamVj
dF9ub3RpZnkoR19PQkpFQ1Qod2ViUGFnZSksICJ1cmkiKTsKIH0KIAorc3RhdGljIHZvaWQgZGlk
Q2hhbmdlU2VsZWN0aW9uKFdLQnVuZGxlUGFnZVJlZiwgV0tTdHJpbmdSZWYgLyogbm90aWZpY2F0
aW9uTmFtZSAqLywgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAgICBnX3NpZ25hbF9lbWl0
KFdFQktJVF9XRUJfUEFHRShjbGllbnRJbmZvKSwgc2lnbmFsc1tTRUxFQ1RJT05fQ0hBTkdFRF0s
IDApOworfQorCiBzdGF0aWMgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdL
QnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmKiwgY29uc3Qg
dm9pZCAqY2xpZW50SW5mbykKIHsKICAgICBpZiAoIVdLQnVuZGxlRnJhbWVJc01haW5GcmFtZShm
cmFtZSkpCkBAIC0zMTEsNiArMzE3LDIzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfcGFnZV9j
bGFzc19pbml0KFdlYktpdFdlYlBhZ2VDbGFzcyoga2xhc3MpCiAgICAgICAgIEdfVFlQRV9OT05F
LCAwKTsKIAogICAgIC8qKgorICAgICAqIFdlYktpdFdlYlBhZ2U6OnNlbGVjdGlvbi1jaGFuZ2Vk
OgorICAgICAqIEB3ZWJfcGFnZTogdGhlICNXZWJLaXRXZWJQYWdlIG9uIHdoaWNoIHRoZSBzaWdu
YWwgaXMgZW1pdHRlZAorICAgICAqCisgICAgICogVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVu
IHRoZSBzZWxlY3Rpb24gaW5zaWRlIGEgI1dlYktpdFdlYlBhZ2UgaGFzIGJlZW4KKyAgICAgKiBj
aGFuZ2VkLgorICAgICAqCisgICAgICogU2luY2U6IDIuOAorICAgICAqLworICAgIHNpZ25hbHNb
U0VMRUNUSU9OX0NIQU5HRURdID0gZ19zaWduYWxfbmV3KAorICAgICAgICAic2VsZWN0aW9uLWNo
YW5nZWQiLAorICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyhrbGFzcyksCisgICAgICAgIEdfU0lH
TkFMX1JVTl9MQVNULAorICAgICAgICAwLCBudWxscHRyLCBudWxscHRyLAorICAgICAgICBnX2Nj
bG9zdXJlX21hcnNoYWxfVk9JRF9fVk9JRCwKKyAgICAgICAgR19UWVBFX05PTkUsIDApOworCisg
ICAgLyoqCiAgICAgICogV2ViS2l0V2ViUGFnZTo6c2VuZC1yZXF1ZXN0OgogICAgICAqIEB3ZWJf
cGFnZTogdGhlICNXZWJLaXRXZWJQYWdlIG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAog
ICAgICAqIEByZXF1ZXN0OiBhICNXZWJLaXRVUklSZXF1ZXN0CkBAIC0zNzcsNiArNDAwLDI1IEBA
IFdlYktpdFdlYlBhZ2UqIHdlYmtpdFdlYlBhZ2VDcmVhdGUoV2ViUGFnZSogd2ViUGFnZSkKICAg
ICBXZWJLaXRXZWJQYWdlKiBwYWdlID0gV0VCS0lUX1dFQl9QQUdFKGdfb2JqZWN0X25ldyhXRUJL
SVRfVFlQRV9XRUJfUEFHRSwgTlVMTCkpOwogICAgIHBhZ2UtPnByaXYtPndlYlBhZ2UgPSB3ZWJQ
YWdlOwogCisgICAgV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50VjAgZWRpdG9yQ2xpZW50ID0gewor
ICAgICAgICB7CisgICAgICAgICAgICAwLCAvLyB2ZXJzaW9uCisgICAgICAgICAgICBwYWdlLCAv
LyBjbGllbnRJbmZvCisgICAgICAgIH0sCisgICAgICAgIDAsIC8vIHNob3VsZEJlZ2luRWRpdGlu
ZworICAgICAgICAwLCAvLyBzaG91bGRFbmRFZGl0aW5nCisgICAgICAgIDAsIC8vIHNob3VsZElu
c2VydE5vZGUKKyAgICAgICAgMCwgLy8gc2hvdWxkSW5zZXJ0VGV4dAorICAgICAgICAwLCAvLyBz
aG91bGREZWxldGVSYW5nZQorICAgICAgICAwLCAvLyBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdl
CisgICAgICAgIDAsIC8vIHNob3VsZEFwcGx5U3R5bGUKKyAgICAgICAgMCwgLy8gZGlkQmVnaW5F
ZGl0aW5nCisgICAgICAgIDAsIC8vIGRpZEVuZEVkaXRpbmcKKyAgICAgICAgMCwgLy8gZGlkQ2hh
bmdlCisgICAgICAgIGRpZENoYW5nZVNlbGVjdGlvbgorICAgIH07CisgICAgV0tCdW5kbGVQYWdl
U2V0RWRpdG9yQ2xpZW50KHRvQVBJKHdlYlBhZ2UpLCAmZWRpdG9yQ2xpZW50LmJhc2UpOworCiAg
ICAgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjcgbG9hZGVyQ2xpZW50ID0gewogICAgICAgICB7
CiAgICAgICAgICAgICA3LCAvLyB2ZXJzaW9uCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzJhNTVjYWY1MGE5ZTNkMTg2MjA5MDI4YjRkODg4MmU2
ZmZiMDYzOS4uZTBmYjc5ZTA2NjYyYmNiMDZhYjg1YzI0NTJhMzA1ZDcyMmNjMGI3OCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
IEBACisyMDE0LTEyLTA5ICBUb21hcyBQb3BlbGEgIDx0cG9wZWxhQHJlZGhhdC5jb20+CisKKyAg
ICAgICAgW0dUS10gQWRkIHNlbGVjdGlvbi1jaGFuZ2VkIHNpZ25hbCB0byB0aGUgV2ViS2l0MiBB
UEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzEx
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0
ZXN0cyBmb3Igc2VsZWN0aW9uLWNoYW5nZWQgc2lnbmFsLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKHNl
bGVjdGlvbkNoYW5nZWRDYWxsYmFjayk6CisgICAgICAgICh0ZXN0U2VsZWN0aW9uQ2hhbmdlZFNp
Z25hbCk6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNwcDoKKyAgICAgICAgKGVtaXRTZWxlY3Rp
b25DaGFuZ2VkKToKKyAgICAgICAgKHNlbGVjdGlvbkNoYW5nZWRDYWxsYmFjayk6CisgICAgICAg
IChwYWdlQ3JlYXRlZENhbGxiYWNrKToKKwogMjAxNC0xMi0wOSAgSm9hbm1hcmllIERpZ2dzICA8
amRpZ2dzQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQnVtcCBtaW5pbXVtIHZlcnNpb24g
b2YgQVRLIHVzZWQgYnkgamhidWlsZCB0byBhdCBsZWFzdCAyLjE1LjIKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYkV4dGVuc2lvbnMu
Y3BwCmluZGV4IDc5MTEzYjFmOTZjYTg3M2Y1YmExNzBhMGIyYzliNjg0ODgwMjc1MGMuLjJlMTVk
YzVlODQzZDU1YzZhYjUzMTA3YjcwMTdmMDRjZTA0MmUzNmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJFeHRlbnNpb25zLmNw
cApAQCAtNzYsNiArNzYsMzkgQEAgc3RhdGljIHZvaWQgdGVzdERvY3VtZW50TG9hZGVkU2lnbmFs
KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfZGJ1c19jb25uZWN0aW9u
X3NpZ25hbF91bnN1YnNjcmliZShjb25uZWN0aW9uLCBpZCk7CiB9CiAKK3N0YXRpYyB2b2lkIHNl
bGVjdGlvbkNoYW5nZWRDYWxsYmFjayhHREJ1c0Nvbm5lY3Rpb24qLCBjb25zdCBjaGFyKiwgY29u
c3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgR1ZhcmlhbnQqLCBXZWJWaWV3VGVz
dCogdGVzdCkKK3sKKyAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOworfQor
CitzdGF0aWMgdm9pZCB0ZXN0U2VsZWN0aW9uQ2hhbmdlZFNpZ25hbChXZWJWaWV3VGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGV4dGVuc2lvbkJ1c05h
bWUoZ19zdHJkdXBfcHJpbnRmKCJvcmcud2Via2l0Lmd0ay5XZWJFeHRlbnNpb25UZXN0JXUiLCBU
ZXN0OjpzX3dlYkV4dGVuc2lvbklEKSk7CisgICAgR1JlZlB0cjxHREJ1c1Byb3h5PiBwcm94eSA9
IGFkb3B0R1JlZihidXMtPmNyZWF0ZVByb3h5KGV4dGVuc2lvbkJ1c05hbWUuZ2V0KCksCisgICAg
ICAgICIvb3JnL3dlYmtpdC9ndGsvV2ViRXh0ZW5zaW9uVGVzdCIsICJvcmcud2Via2l0Lmd0ay5X
ZWJFeHRlbnNpb25UZXN0IiwgdGVzdC0+bV9tYWluTG9vcCkpOworICAgIEdEQnVzQ29ubmVjdGlv
biogY29ubmVjdGlvbiA9IGdfZGJ1c19wcm94eV9nZXRfY29ubmVjdGlvbihwcm94eS5nZXQoKSk7
CisgICAgZ3VpbnQgaWQgPSBnX2RidXNfY29ubmVjdGlvbl9zaWduYWxfc3Vic2NyaWJlKGNvbm5l
Y3Rpb24sCisgICAgICAgIDAsCisgICAgICAgICJvcmcud2Via2l0Lmd0ay5XZWJFeHRlbnNpb25U
ZXN0IiwKKyAgICAgICAgIlNlbGVjdGlvbkNoYW5nZWQiLAorICAgICAgICAiL29yZy93ZWJraXQv
Z3RrL1dlYkV4dGVuc2lvblRlc3QiLAorICAgICAgICAwLAorICAgICAgICBHX0RCVVNfU0lHTkFM
X0ZMQUdTX05PTkUsCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0RCdXNTaWduYWxDYWxsYmFj
az4oc2VsZWN0aW9uQ2hhbmdlZENhbGxiYWNrKSwKKyAgICAgICAgdGVzdCwKKyAgICAgICAgMCk7
CisgICAgZ19hc3NlcnQoaWQpOworCisgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxib2R5PkFs
bCB3b3JrIGFuZCBubyBwbGF5IG1ha2UgSmFjayBhIGR1bGwgYm95LjwvYm9keT48L2h0bWw+Iiwg
MCk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICB3ZWJraXRfd2Vi
X3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQodGVzdC0+bV93ZWJWaWV3LCBXRUJLSVRfRURJ
VElOR19DT01NQU5EX1NFTEVDVF9BTEwpOworCisgICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1f
bWFpbkxvb3ApOworCisgICAgZ19kYnVzX2Nvbm5lY3Rpb25fc2lnbmFsX3Vuc3Vic2NyaWJlKGNv
bm5lY3Rpb24sIGlkKTsKK30KKwogc3RhdGljIGdib29sZWFuIHdlYlByb2Nlc3NDcmFzaGVkQ2Fs
bGJhY2soV2ViS2l0V2ViVmlldyosIFdlYlZpZXdUZXN0KiB0ZXN0KQogewogICAgIHRlc3QtPnF1
aXRNYWluTG9vcCgpOwpAQCAtMTg4LDYgKzIyMSw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBX
ZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgIndlYi1wcm9jZXNzLWNyYXNoZWQiLCB0
ZXN0V2ViS2l0V2ViVmlld1Byb2Nlc3NDcmFzaGVkKTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJX
ZWJLaXRXZWJFeHRlbnNpb24iLCAid2luZG93LW9iamVjdC1jbGVhcmVkIiwgdGVzdFdlYkV4dGVu
c2lvbldpbmRvd09iamVjdENsZWFyZWQpOwogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdl
YkV4dGVuc2lvbiIsICJpc29sYXRlZC13b3JsZCIsIHRlc3RXZWJFeHRlbnNpb25Jc29sYXRlZFdv
cmxkKTsKKyAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJFeHRlbnNpb24iLCAic2VsZWN0
aW9uLWNoYW5nZWQiLCB0ZXN0U2VsZWN0aW9uQ2hhbmdlZFNpZ25hbCk7CiB9CiAKIHZvaWQgYWZ0
ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3Rr
L1dlYkV4dGVuc2lvblRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
R3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwCmluZGV4IGZkMDk1OTZjZDkwMGQ2ZjU3ZjJkYjY0ZjZm
NmNiNjVmZmYxMDBkYTUuLmMwYjExOGE1YzM0NDM5YmFmMTA2MjAxOTU0N2MwMjRiNmFiNzQzNjgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRl
bnNpb25UZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
V2ViRXh0ZW5zaW9uVGVzdC5jcHAKQEAgLTU4LDYgKzU4LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIg
aW50cm9zcGVjdGlvblhNTFtdID0KICAgICAiICA8c2lnbmFsIG5hbWU9J1VSSUNoYW5nZWQnPiIK
ICAgICAiICAgPGFyZyB0eXBlPSdzJyBuYW1lPSd1cmknIGRpcmVjdGlvbj0nb3V0Jy8+IgogICAg
ICIgIDwvc2lnbmFsPiIKKyAgICAiICA8c2lnbmFsIG5hbWU9J1NlbGVjdGlvbkNoYW5nZWQnLz4i
CiAgICAgIiA8L2ludGVyZmFjZT4iCiAgICAgIjwvbm9kZT4iOwogCkBAIC02NSw2ICs2Niw3IEBA
IHN0YXRpYyBjb25zdCBjaGFyIGludHJvc3BlY3Rpb25YTUxbXSA9CiB0eXBlZGVmIGVudW0gewog
ICAgIERvY3VtZW50TG9hZGVkU2lnbmFsLAogICAgIFVSSUNoYW5nZWRTaWduYWwsCisgICAgU2Vs
ZWN0aW9uQ2hhbmdlZFNpZ25hbCwKIH0gRGVsYXllZFNpZ25hbFR5cGU7CiAKIHN0cnVjdCBEZWxh
eWVkU2lnbmFsIHsKQEAgLTExOCw2ICsxMjAsMzkgQEAgc3RhdGljIHZvaWQgZG9jdW1lbnRMb2Fk
ZWRDYWxsYmFjayhXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBXZWJLaXRXZWJFeHRlbnNpb24qIGUK
ICAgICAgICAgZGVsYXllZFNpZ25hbHNRdWV1ZS5hcHBlbmQoYWRvcHRQdHIobmV3IERlbGF5ZWRT
aWduYWwoRG9jdW1lbnRMb2FkZWRTaWduYWwpKSk7CiB9CiAKK3N0YXRpYyB2b2lkIGVtaXRTZWxl
Y3Rpb25DaGFuZ2VkKEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbikKK3sKKyAgICBib29sIG9r
ID0gZ19kYnVzX2Nvbm5lY3Rpb25fZW1pdF9zaWduYWwoCisgICAgICAgIGNvbm5lY3Rpb24sCisg
ICAgICAgIDAsCisgICAgICAgICIvb3JnL3dlYmtpdC9ndGsvV2ViRXh0ZW5zaW9uVGVzdCIsCisg
ICAgICAgICJvcmcud2Via2l0Lmd0ay5XZWJFeHRlbnNpb25UZXN0IiwKKyAgICAgICAgIlNlbGVj
dGlvbkNoYW5nZWQiLAorICAgICAgICAwLAorICAgICAgICAwKTsKKyAgICBnX2Fzc2VydChvayk7
Cit9CisKK3N0YXRpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWRDYWxsYmFjayhXZWJLaXRXZWJQYWdl
KiB3ZWJQYWdlLCBXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbikKK3sKKyAgICAvLyBGSVhN
RTogVG9vIG11Y2ggY29kZSBqdXN0IHRvIHNlbmQgYSBtZXNzYWdlLCB3ZSBuZWVkIGNvbnZlbmll
bnQgY3VzdG9tIEFQSSBmb3IgdGhpcy4KKyAgICBXZWJLaXRET01Eb2N1bWVudCogZG9jdW1lbnQg
PSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudCh3ZWJQYWdlKTsKKyAgICBXZWJLaXRE
T01ET01XaW5kb3cqIHdpbmRvdyA9IHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X2RlZmF1bHRfdmll
dyhkb2N1bWVudCk7CisgICAgaWYgKFdlYktpdERPTVdlYktpdE5hbWVzcGFjZSogd2Via2l0ID0g
d2Via2l0X2RvbV9kb21fd2luZG93X2dldF93ZWJraXRfbmFtZXNwYWNlKHdpbmRvdykpIHsKKyAg
ICAgICAgV2ViS2l0RE9NVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZSogbWVzc2FnZUhhbmRs
ZXJzID0gd2Via2l0X2RvbV93ZWJraXRfbmFtZXNwYWNlX2dldF9tZXNzYWdlX2hhbmRsZXJzKHdl
YmtpdCk7CisgICAgICAgIGlmIChXZWJLaXRET01Vc2VyTWVzc2FnZUhhbmRsZXIqIGhhbmRsZXIg
PSB3ZWJraXRfZG9tX3VzZXJfbWVzc2FnZV9oYW5kbGVyc19uYW1lc3BhY2VfZ2V0X2hhbmRsZXIo
bWVzc2FnZUhhbmRsZXJzLCAiZG9tIikpCisgICAgICAgICAgICB3ZWJraXRfZG9tX3VzZXJfbWVz
c2FnZV9oYW5kbGVyX3Bvc3RfbWVzc2FnZShoYW5kbGVyLCAiU2VsZWN0aW9uQ2hhbmdlZCIpOwor
ICAgIH0KKworICAgIHdlYmtpdF9kb21fZG9tX3dpbmRvd193ZWJraXRfbWVzc2FnZV9oYW5kbGVy
c19wb3N0X21lc3NhZ2Uod2luZG93LCAiZG9tLWNvbnZlbmllbmNlIiwgIlNlbGVjdGlvbkNoYW5n
ZWQiKTsKKworICAgIGdwb2ludGVyIGRhdGEgPSBnX29iamVjdF9nZXRfZGF0YShHX09CSkVDVChl
eHRlbnNpb24pLCAiZGJ1cy1jb25uZWN0aW9uIik7CisgICAgaWYgKGRhdGEpCisgICAgICAgIGVt
aXRTZWxlY3Rpb25DaGFuZ2VkKEdfREJVU19DT05ORUNUSU9OKGRhdGEpKTsKKyAgICBlbHNlCisg
ICAgICAgIGRlbGF5ZWRTaWduYWxzUXVldWUuYXBwZW5kKGFkb3B0UHRyKG5ldyBEZWxheWVkU2ln
bmFsKFNlbGVjdGlvbkNoYW5nZWRTaWduYWwpKSk7Cit9CisKIHN0YXRpYyB2b2lkIGVtaXRVUklD
aGFuZ2VkKEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgY2hhciogdXJpKQogewog
ICAgIGJvb2wgb2sgPSBnX2RidXNfY29ubmVjdGlvbl9lbWl0X3NpZ25hbCgKQEAgLTIzMSw2ICsy
NjYsNyBAQCBzdGF0aWMgdm9pZCBwYWdlQ3JlYXRlZENhbGxiYWNrKFdlYktpdFdlYkV4dGVuc2lv
biogZXh0ZW5zaW9uLCBXZWJLaXRXZWJQYWdlKiB3ZQogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2Vi
UGFnZSwgIm5vdGlmeTo6dXJpIiwgR19DQUxMQkFDSyh1cmlDaGFuZ2VkQ2FsbGJhY2spLCBleHRl
bnNpb24pOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViUGFnZSwgInNlbmQtcmVxdWVzdCIsIEdf
Q0FMTEJBQ0soc2VuZFJlcXVlc3RDYWxsYmFjayksIG51bGxwdHIpOwogICAgIGdfc2lnbmFsX2Nv
bm5lY3Qod2ViUGFnZSwgImNvbnRleHQtbWVudSIsIEdfQ0FMTEJBQ0soY29udGV4dE1lbnVDYWxs
YmFjayksIG51bGxwdHIpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViUGFnZSwgInNlbGVjdGlv
bi1jaGFuZ2VkIiwgR19DQUxMQkFDSyhzZWxlY3Rpb25DaGFuZ2VkQ2FsbGJhY2spLCBleHRlbnNp
b24pOwogfQogCiBzdGF0aWMgSlNWYWx1ZVJlZiBlY2hvQ2FsbGJhY2soSlNDb250ZXh0UmVmIGpz
Q29udGV4dCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmLCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiopCg==
</data>
<flag name="review"
          id="267801"
          type_id="1"
          status="-"
          setter="cgarcia"
    />
    <flag name="commit-queue"
          id="267802"
          type_id="3"
          status="-"
          setter="cgarcia"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245140</attachid>
            <date>2015-01-22 06:52:06 -0800</date>
            <delta_ts>2015-01-22 07:52:55 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>137116-wip.patch</filename>
            <type>text/plain</type>
            <size>18174</size>
            <attacher name="Tomas Popela">tpopela</attacher>
            
              <data encoding="base64">Y29tbWl0IGViNzIzYWI4NzA3MWUxMTYyNjFmNDJhMWNiOThkMWM2OTFiNzI4YTAKQXV0aG9yOiBU
b21hcyBQb3BlbGEgPHRwb3BlbGFAcmVkaGF0LmNvbT4KRGF0ZTogICBNb24gRGVjIDE1IDA5OjI5
OjMyIDIwMTQgKzAxMDAKCiAgICBXSVAKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGJh
YmUyN2QuLjE4ZWUyMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0yODcsNiArMjg3
LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0RnJhbWUuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFNjcmlwdFdvcmxkLmNwcAorICAgIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFZGl0b3IuY3BwCiAgICAgV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKICAgICBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViSGl0VGVzdFJlc3VsdC5jcHAKICAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAKQEAg
LTM4OCw2ICszODksNyBAQCBzZXQoV2ViS2l0MkdUS19JTlNUQUxMRURfSEVBREVSUwogc2V0KFdl
YktpdDJXZWJFeHRlbnNpb25fSU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVDJfRElSfS9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0RnJhbWUuaAogICAgICR7V0VC
S0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRTY3JpcHRX
b3JsZC5oCisgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL1dlYktpdFdlYkVkaXRvci5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5oCiAgICAgJHtXRUJLSVQyX0RJ
Un0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkhpdFRlc3RSZXN1
bHQuaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9XZWJLaXRXZWJQYWdlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CmluZGV4IDc0OWY4NTYu
LmJiYjVkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApAQCAtMTE2OSw2ICsxMTY5LDcg
QEAgd2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQKIHdlYmtpdF93ZWJfcGFnZV9nZXRf
aWQKIHdlYmtpdF93ZWJfcGFnZV9nZXRfdXJpCiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X21haW5fZnJh
bWUKK3dlYmtpdF93ZWJfcGFnZV9nZXRfZWRpdG9yCiAKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgog
V2ViS2l0V2ViUGFnZUNsYXNzCkBAIC0xMTg1LDYgKzExODYsMjUgQEAgd2Via2l0X3dlYl9wYWdl
X2dldF90eXBlCiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgorPEZJTEU+V2ViS2l0V2ViRWRpdG9y
PC9GSUxFPgorV2ViS2l0V2ViRWRpdG9yCit3ZWJraXRfd2ViX2VkaXRvcl9nZXRfcGFnZQorCis8
U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dlYktpdFdlYkVkaXRvckNsYXNzCitXRUJLSVRfVFlQRV9X
RUJfRURJVE9SCitXRUJLSVRfV0VCX0VESVRPUgorV0VCS0lUX0lTX1dFQl9FRElUT1IKK1dFQktJ
VF9XRUJfRURJVE9SX0NMQVNTCitXRUJLSVRfSVNfV0VCX0VESVRPUl9DTEFTUworV0VCS0lUX1dF
Ql9FRElUT1JfR0VUX0NMQVNTCisKKzxTVUJTRUNUSU9OIFByaXZhdGU+CitXZWJLaXRXZWJFZGl0
b3JQcml2YXRlCit3ZWJraXRfd2ViX2VkaXRvcl9nZXRfdHlwZQorPC9TRUNUSU9OPgorCis8U0VD
VElPTj4KIDxGSUxFPldlYktpdEZyYW1lPC9GSUxFPgogV2ViS2l0RnJhbWUKIHdlYmtpdF9mcmFt
ZV9pc19tYWluX2ZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFZGl0b3IuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3NGZkZmYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2Vi
S2l0V2ViRWRpdG9yLmNwcApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IFJlZCBIYXQgSW5jLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
LDEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdFdl
YkVkaXRvci5oIgorCisjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktp
dFdlYkVkaXRvclByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJQYWdlLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworZW51bSB7Cisg
ICAgU0VMRUNUSU9OX0NIQU5HRUQsCisKKyAgICBMQVNUX1NJR05BTAorfTsKKworc3RydWN0IF9X
ZWJLaXRXZWJFZGl0b3JQcml2YXRlIHsKKyAgICAgR1JlZlB0cjxXZWJLaXRXZWJQYWdlPiB3ZWJQ
YWdlOworfTsKKworc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9Owor
CitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0V2ViRWRpdG9yLCB3ZWJraXRfd2ViX2VkaXRvciwg
R19UWVBFX09CSkVDVCkKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9lZGl0b3JfY2xhc3NfaW5p
dChXZWJLaXRXZWJFZGl0b3JDbGFzcyoga2xhc3MpCit7CisgICAgLyoqCisgICAgICogV2ViS2l0
V2ViUGFnZTo6c2VsZWN0aW9uLWNoYW5nZWQ6CisgICAgICogQHdlYl9wYWdlOiB0aGUgI1dlYktp
dFdlYlBhZ2Ugb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICoKKyAgICAgKiBU
aGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gdGhlIHNlbGVjdGlvbiBpbnNpZGUgYSAjV2ViS2l0
V2ViUGFnZSBoYXMgYmVlbgorICAgICAqIGNoYW5nZWQuCisgICAgICoKKyAgICAgKiBTaW5jZTog
Mi44CisgICAgICovCisgICAgc2lnbmFsc1tTRUxFQ1RJT05fQ0hBTkdFRF0gPSBnX3NpZ25hbF9u
ZXcoCisgICAgICAgICJzZWxlY3Rpb24tY2hhbmdlZCIsCisgICAgICAgIEdfVFlQRV9GUk9NX0NM
QVNTKGtsYXNzKSwKKyAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgIDAsIG51bGxw
dHIsIG51bGxwdHIsCisgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9WT0lEX19WT0lELAorICAg
ICAgICBHX1RZUEVfTk9ORSwgMCk7Cit9CisKK1dlYktpdFdlYkVkaXRvciogd2Via2l0V2ViRWRp
dG9yQ3JlYXRlKFdlYktpdFdlYlBhZ2UqIHBhZ2UpCit7CisgICAgV2ViS2l0V2ViRWRpdG9yKiB3
ZWJFZGl0b3IgPSBXRUJLSVRfV0VCX0VESVRPUihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VC
X0VESVRPUiwgTlVMTCkpOworICAgIHdlYkVkaXRvci0+cHJpdi0+d2ViUGFnZSA9IHBhZ2U7Cisg
ICAgcmV0dXJuIHdlYkVkaXRvcjsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX2VkaXRvcl9nZXRf
cGFnZToKKyAqIEB3ZWJfcGFnZTogYSAjV2ViS2l0V2ViUGFnZQorICoKKyAqIFJldHVybnMgdGhl
ICNXZWJLaXRXZWJQYWdlIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoICNXZWJLaXRXZWJFZGl0b3Iu
CisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiB0aGUgI1dlYktpdFdlYlBhZ2UgdGhh
dCBjYW4gYmUgdXNlZCB0byBhY2Nlc3MKKyAqIHRoZSAjV2ViS2l0RE9NRG9jdW1lbnQgY3VycmVu
dGx5IGxvYWRlZCBpbnRvIGl0LgorICoKKyAqIFNpbmNlOiAyLjgKKyAqLworV2ViS2l0V2ViUGFn
ZSogd2Via2l0X3dlYl9lZGl0b3JfZ2V0X3BhZ2UoV2ViS2l0V2ViRWRpdG9yKiB3ZWJFZGl0b3Ip
Cit7CisgICAgcmV0dXJuIHdlYkVkaXRvci0+cHJpdi0+d2ViUGFnZS5nZXQoKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9X
ZWJLaXRXZWJFZGl0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9XZWJLaXRXZWJFZGl0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4xMTA1YTYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkVkaXRvci5oCkBAIC0wLDAgKzEs
NjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgUmVkIEhhdCBJbmMuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIsMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRlZmlu
ZWQoX19XRUJLSVRfV0VCX0VYVEVOU0lPTl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQy
X0NPTVBJTEFUSU9OKQorI2Vycm9yICJPbmx5IDx3ZWJraXQyL3dlYmtpdC13ZWItZXh0ZW5zaW9u
Lmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRX
ZWJFZGl0b3JfaAorI2RlZmluZSBXZWJLaXRXZWJFZGl0b3JfaAorCisjaW5jbHVkZSA8Z2xpYi1v
YmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KKyNpbmNsdWRlIDx3
ZWJraXQyL1dlYktpdFdlYlBhZ2UuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJ
VF9UWVBFX1dFQl9FRElUT1IgICAgICAgICAgICAgICAod2Via2l0X3dlYl9lZGl0b3JfZ2V0X3R5
cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9FRElUT1Iob2JqKSAgICAgICAgICAgICAgIChHX1RZ
UEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX0VESVRPUiwgV2Vi
S2l0V2ViRWRpdG9yKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9FRElUT1Iob2JqKSAgICAgICAg
ICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX0VE
SVRPUikpCisjZGVmaW5lIFdFQktJVF9XRUJfRURJVE9SX0NMQVNTKGtsYXNzKSAgICAgICAoR19U
WVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9FRElUT1IsIFdl
YktpdFdlYkVkaXRvckNsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9FRElUT1JfQ0xBU1Mo
a2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVf
V0VCX0VESVRPUikpCisjZGVmaW5lIFdFQktJVF9XRUJfRURJVE9SX0dFVF9DTEFTUyhvYmopICAg
ICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9FRElU
T1IsIFdlYktpdFdlYkVkaXRvckNsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkVk
aXRvciAgICAgICAgV2ViS2l0V2ViRWRpdG9yOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkVk
aXRvckNsYXNzICAgV2ViS2l0V2ViRWRpdG9yQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0
V2ViRWRpdG9yUHJpdmF0ZSBXZWJLaXRXZWJFZGl0b3JQcml2YXRlOworCisvKiBGb3J3YXJkIGRl
Y2xhcmF0aW9ucyAqLwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlBhZ2UgICAgICAgICAgV2Vi
S2l0V2ViUGFnZTsKKworc3RydWN0IF9XZWJLaXRXZWJFZGl0b3IgeworICAgIEdPYmplY3QgcGFy
ZW50OworCisgICAgV2ViS2l0V2ViRWRpdG9yUHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBf
V2ViS2l0V2ViRWRpdG9yQ2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9
OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfd2ViX2VkaXRvcl9nZXRfdHlwZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRXZWJQYWdlICoK
K3dlYmtpdF93ZWJfZWRpdG9yX2dldF9wYWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdl
YktpdFdlYkVkaXRvciAqZWRpdG9yKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8vIFdlYktp
dFdlYkVkaXRvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRWRpdG9yUHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkVkaXRvclByaXZh
dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODE1OWViCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL1dlYktpdFdlYkVkaXRvclByaXZhdGUuaApAQCAtMCwwICsxLDI4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IFJlZCBIYXQgSW5jLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktpdFdlYkVkaXRvclByaXZh
dGVfaAorI2RlZmluZSBXZWJLaXRXZWJFZGl0b3JQcml2YXRlX2gKKworI2luY2x1ZGUgIldlYktp
dFdlYkVkaXRvci5oIgorI2luY2x1ZGUgIldlYktpdFdlYlBhZ2UuaCIKKworV2ViS2l0V2ViRWRp
dG9yKiB3ZWJraXRXZWJFZGl0b3JDcmVhdGUoV2ViS2l0V2ViUGFnZSopOworCisjZW5kaWYgLy8g
V2ViS2l0V2ViRWRpdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcAppbmRl
eCA4MmY4YjM4Li4zOThiZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3Bw
CkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiV2ViS2l0U2NyaXB0V29ybGRQcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVxdWVzdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRV
UklSZXNwb25zZVByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJFZGl0b3JQcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViS2l0V2ViSGl0VGVzdFJlc3VsdFByaXZhdGUuaCIKICNpbmNsdWRlICJX
ZWJLaXRXZWJQYWdlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKQEAgLTY5LDYg
KzcwLDggQEAgc3RydWN0IF9XZWJLaXRXZWJQYWdlUHJpdmF0ZSB7CiAgICAgV2ViUGFnZSogd2Vi
UGFnZTsKIAogICAgIENTdHJpbmcgdXJpOworCisgICAgR1JlZlB0cjxXZWJLaXRXZWJFZGl0b3I+
IHdlYkVkaXRvcjsKIH07CiAKIHN0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsg
MCwgfTsKQEAgLTExMyw2ICsxMTYsMTMgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViUGFnZVNldFVS
SShXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBjb25zdCBDU3RyaW5nJiB1cmkpCiAgICAgZ19vYmpl
Y3Rfbm90aWZ5KEdfT0JKRUNUKHdlYlBhZ2UpLCAidXJpIik7CiB9CiAKK3N0YXRpYyB2b2lkIGRp
ZENoYW5nZVNlbGVjdGlvbihXS0J1bmRsZVBhZ2VSZWYsIFdLU3RyaW5nUmVmIC8qIG5vdGlmaWNh
dGlvbk5hbWUgKi8sIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCit7CisgICAgV2ViS2l0V2ViRWRp
dG9yICp3ZWJFZGl0b3IgPSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2VkaXRvcihXRUJLSVRfV0VCX1BB
R0UoY2xpZW50SW5mbykpOworCisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lICh3ZWJFZGl0b3Is
ICJzZWxlY3Rpb24tY2hhbmdlZCIpOworfQorCiBzdGF0aWMgdm9pZCBkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwg
V0tUeXBlUmVmKiwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKIHsKICAgICBpZiAoIVdLQnVuZGxl
RnJhbWVJc01haW5GcmFtZShmcmFtZSkpCkBAIC0yNzEsMTEgKzI4MSwyMSBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRXZWJQYWdlR2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQs
IEdWYWx1ZSogdmFsdQogICAgIH0KIH0KIAorc3RhdGljIHZvaWQgd2Via2l0V2ViUGFnZUNvbnN0
cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2Vi
X3BhZ2VfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQob2JqZWN0KTsKKworICAgIFdlYktpdFdl
YlBhZ2UqIHdlYlBhZ2UgPSBXRUJLSVRfV0VCX1BBR0Uob2JqZWN0KTsKKworICAgIHdlYlBhZ2Ut
PnByaXYtPndlYkVkaXRvciA9IGFkb3B0R1JlZih3ZWJraXRXZWJFZGl0b3JDcmVhdGUod2ViUGFn
ZSkpOworfQorCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3BhZ2VfY2xhc3NfaW5pdChXZWJLaXRX
ZWJQYWdlQ2xhc3MqIGtsYXNzKQogewogICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNzID0g
R19PQkpFQ1RfQ0xBU1Moa2xhc3MpOwogCiAgICAgZ09iamVjdENsYXNzLT5nZXRfcHJvcGVydHkg
PSB3ZWJraXRXZWJQYWdlR2V0UHJvcGVydHk7CisgICAgZ09iamVjdENsYXNzLT5jb25zdHJ1Y3Rl
ZCA9IHdlYmtpdFdlYlBhZ2VDb25zdHJ1Y3RlZDsKIAogICAgIC8qKgogICAgICAqIFdlYktpdFdl
YlBhZ2U6dXJpOgpAQCAtMzc3LDYgKzM5NywyNSBAQCBXZWJLaXRXZWJQYWdlKiB3ZWJraXRXZWJQ
YWdlQ3JlYXRlKFdlYlBhZ2UqIHdlYlBhZ2UpCiAgICAgV2ViS2l0V2ViUGFnZSogcGFnZSA9IFdF
QktJVF9XRUJfUEFHRShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1BBR0UsIE5VTEwpKTsK
ICAgICBwYWdlLT5wcml2LT53ZWJQYWdlID0gd2ViUGFnZTsKIAorICAgIFdLQnVuZGxlUGFnZUVk
aXRvckNsaWVudFYwIGVkaXRvckNsaWVudCA9IHsKKyAgICAgICAgeworICAgICAgICAgICAgMCwg
Ly8gdmVyc2lvbgorICAgICAgICAgICAgcGFnZSwgLy8gY2xpZW50SW5mbworICAgICAgICB9LAor
ICAgICAgICAwLCAvLyBzaG91bGRCZWdpbkVkaXRpbmcKKyAgICAgICAgMCwgLy8gc2hvdWxkRW5k
RWRpdGluZworICAgICAgICAwLCAvLyBzaG91bGRJbnNlcnROb2RlCisgICAgICAgIDAsIC8vIHNo
b3VsZEluc2VydFRleHQKKyAgICAgICAgMCwgLy8gc2hvdWxkRGVsZXRlUmFuZ2UKKyAgICAgICAg
MCwgLy8gc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZQorICAgICAgICAwLCAvLyBzaG91bGRBcHBs
eVN0eWxlCisgICAgICAgIDAsIC8vIGRpZEJlZ2luRWRpdGluZworICAgICAgICAwLCAvLyBkaWRF
bmRFZGl0aW5nCisgICAgICAgIDAsIC8vIGRpZENoYW5nZQorICAgICAgICBkaWRDaGFuZ2VTZWxl
Y3Rpb24KKyAgICB9OworICAgIFdLQnVuZGxlUGFnZVNldEVkaXRvckNsaWVudCh0b0FQSSh3ZWJQ
YWdlKSwgJmVkaXRvckNsaWVudC5iYXNlKTsKKwogICAgIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVu
dFY3IGxvYWRlckNsaWVudCA9IHsKICAgICAgICAgewogICAgICAgICAgICAgNywgLy8gdmVyc2lv
bgpAQCAtNTYxLDMgKzYwMCwyMSBAQCBXZWJLaXRGcmFtZSogd2Via2l0X3dlYl9wYWdlX2dldF9t
YWluX2ZyYW1lKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UpCiAKICAgICByZXR1cm4gd2Via2l0RnJh
bWVHZXRPckNyZWF0ZSh3ZWJQYWdlLT5wcml2LT53ZWJQYWdlLT5tYWluV2ViRnJhbWUoKSk7CiB9
CisKKy8qKgorICogd2Via2l0X3dlYl9wYWdlX2dldF9lZGl0b3I6CisgKiBAd2ViX3BhZ2U6IGEg
I1dlYktpdFdlYlBhZ2UKKyAqCisgKiBSZXR1cm5zIHRoZSAjV2ViUGFnZUVkaXRvciBvZiBhICNX
ZWJLaXRXZWJQYWdlLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogdGhlICNXZWJL
aXRXZWJFZGl0b3IgdGhhdCBjYW4gYmUgdXNlZCB0byBhY2Nlc3MKKyAqIGVkaXR0aW5nIHByb3Bl
cnRpZXMgb2YgYSBAd2ViX3BhZ2UKKyAqCisgKiBTaW5jZTogMi44CisgKi8KK1dlYktpdFdlYkVk
aXRvciogd2Via2l0X3dlYl9wYWdlX2dldF9lZGl0b3IoV2ViS2l0V2ViUGFnZSogd2ViUGFnZSkK
K3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1BBR0Uod2ViUGFnZSks
IDApOworCisgICAgcmV0dXJuIHdlYlBhZ2UtPnByaXYtPndlYkVkaXRvci5nZXQoKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9XZWJLaXRXZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5oCmluZGV4IDM3NDU1MjguLjAzM2IzY2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9X
ZWJLaXRXZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuaApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg
PGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CiAjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXRGcmFtZS5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2Vi
RWRpdG9yLmg+CiAjaW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRvbS5oPgogCiBHX0JFR0lOX0RF
Q0xTCkBAIC00Miw2ICs0Myw5IEBAIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJQYWdlICAgICAg
ICBXZWJLaXRXZWJQYWdlOwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlBhZ2VDbGFzcyAgIFdl
YktpdFdlYlBhZ2VDbGFzczsKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJQYWdlUHJpdmF0ZSBX
ZWJLaXRXZWJQYWdlUHJpdmF0ZTsKIAorLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8KK3R5cGVk
ZWYgc3RydWN0IF9XZWJLaXRXZWJFZGl0b3IgICAgICBXZWJLaXRXZWJFZGl0b3I7CisKIHN0cnVj
dCBfV2ViS2l0V2ViUGFnZSB7CiAgICAgR09iamVjdCBwYXJlbnQ7CiAKQEAgLTY3LDYgKzcxLDkg
QEAgd2Via2l0X3dlYl9wYWdlX2dldF91cmkgICAgICAgICAgKFdlYktpdFdlYlBhZ2UgKndlYl9w
YWdlKTsKIFdFQktJVF9BUEkgV2ViS2l0RnJhbWUgKgogd2Via2l0X3dlYl9wYWdlX2dldF9tYWlu
X2ZyYW1lICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKIAorV0VCS0lUX0FQSSBXZWJLaXRX
ZWJFZGl0b3IgKgord2Via2l0X3dlYl9wYWdlX2dldF9lZGl0b3IgICAgICAgKFdlYktpdFdlYlBh
Z2UgKndlYl9wYWdlKTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Via2l0LXdlYi1l
eHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay93ZWJraXQtd2ViLWV4dGVuc2lvbi5oCmluZGV4IDZmMTFiY2YuLjFjNzQ2ZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay93
ZWJraXQtd2ViLWV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay93ZWJraXQtd2ViLWV4dGVuc2lvbi5oCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVUklSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXRVUklSZXNwb25zZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VmVyc2lv
bi5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViRWRpdG9yLmg+CiAjaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXRXZWJFeHRlbnNpb24uaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkhp
dFRlc3RSZXN1bHQuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlBhZ2UuaD4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0VXNl
ckNvbnRlbnRNYW5hZ2VyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9UZXN0V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcAppbmRleCA5ZjQ5ZDFkLi41ZjBiZDhk
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdl
YktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCkBAIC0zNjgsNiAr
MzY4LDIyIEBAIHN0YXRpYyB2b2lkIHRlc3RVc2VyQ29udGVudE1hbmFnZXJTY3JpcHRNZXNzYWdl
RnJvbURPTUJpbmRpbmdzKFVzZXJTY3JpcHRNZXNzYWdlCiAgICAgdGVzdC0+dW5yZWdpc3Rlckhh
bmRsZXIoImRvbS1jb252ZW5pZW5jZSIpOwogfQogCitzdGF0aWMgdm9pZCB0ZXN0U2VsZWN0aW9u
Q2hhbmdlZFNpZ25hbChVc2VyU2NyaXB0TWVzc2FnZVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
Cit7CisgICAgZ19hc3NlcnQodGVzdC0+cmVnaXN0ZXJIYW5kbGVyKCJ3ZWItZWRpdG9yIikpOwor
CisgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxib2R5PkFsbCB3b3JrIGFuZCBubyBwbGF5IG1h
a2UgSmFjayBhIGR1bGwgYm95LjwvYm9keT48L2h0bWw+IiwgMCk7CisgICAgdGVzdC0+d2FpdFVu
dGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5n
X2NvbW1hbmQodGVzdC0+bV93ZWJWaWV3LCBXRUJLSVRfRURJVElOR19DT01NQU5EX1NFTEVDVF9B
TEwpOworICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0
LT53YWl0VW50aWxNZXNzYWdlUmVjZWl2ZWQoIndlYi1lZGl0b3IiKTsKKyAgICBnX2Fzc2VydChq
YXZhc2NyaXB0UmVzdWx0KTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHZhbHVlU3RyaW5nKFdlYlZp
ZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKKyAg
ICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAiU2VsZWN0aW9uQ2hhbmdl
ZCIpOworCisgICAgdGVzdC0+dW5yZWdpc3RlckhhbmRsZXIoIndlYi1lZGl0b3IiKTsKK30KKwog
c3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2Fn
ZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250
ZXh0KiwgZ3BvaW50ZXIpCiB7CiAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwg
U09VUF9TVEFUVVNfT0spOwpAQCAtMzg1LDYgKzQwMSw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAg
ICBVc2VyQ29udGVudE1hbmFnZXJUZXN0OjphZGQoIldlYktpdFVzZXJDb250ZW50TWFuYWdlciIs
ICJpbmplY3RlZC1zY3JpcHQiLCB0ZXN0VXNlckNvbnRlbnRNYW5hZ2VySW5qZWN0ZWRTY3JpcHQp
OwogICAgIFVzZXJTY3JpcHRNZXNzYWdlVGVzdDo6YWRkKCJXZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXIiLCAic2NyaXB0LW1lc3NhZ2UtcmVjZWl2ZWQiLCB0ZXN0VXNlckNvbnRlbnRNYW5hZ2VyU2Ny
aXB0TWVzc2FnZVJlY2VpdmVkKTsKICAgICBVc2VyU2NyaXB0TWVzc2FnZVRlc3Q6OmFkZCgiV2Vi
S2l0VXNlckNvbnRlbnRNYW5hZ2VyIiwgInNjcmlwdC1tZXNzYWdlLWZyb20tZG9tLWJpbmRpbmdz
IiwgdGVzdFVzZXJDb250ZW50TWFuYWdlclNjcmlwdE1lc3NhZ2VGcm9tRE9NQmluZGluZ3MpOwor
ICAgIFVzZXJTY3JpcHRNZXNzYWdlVGVzdDo6YWRkKCJXZWJLaXRXZWJFZGl0b3IiLCAic2VsZWN0
aW9uLWNoYW5nZWQiLCB0ZXN0U2VsZWN0aW9uQ2hhbmdlZFNpZ25hbCk7CiB9CiAKIHZvaWQgYWZ0
ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3Rr
L1dlYkV4dGVuc2lvblRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
R3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwCmluZGV4IGZkMDk1OTYuLjhhNTI0YzEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5z
aW9uVGVzdC5jcHAKQEAgLTIyNSwxMiArMjI1LDI0IEBAIHN0YXRpYyBnYm9vbGVhbiBjb250ZXh0
TWVudUNhbGxiYWNrKFdlYktpdFdlYlBhZ2UqIHBhZ2UsIFdlYktpdENvbnRleHRNZW51KiBtZW51
CiAgICAgcmV0dXJuIEZBTFNFOwogfQogCitzdGF0aWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkQ2Fs
bGJhY2soV2ViS2l0V2ViRWRpdG9yKiB3ZWJFZGl0b3IsIGdwb2ludGVyKQoreworICAgIFdlYktp
dFdlYlBhZ2UqIHdlYlBhZ2UgPSB3ZWJraXRfd2ViX2VkaXRvcl9nZXRfcGFnZSAod2ViRWRpdG9y
KTsKKyAgICBXZWJLaXRET01Eb2N1bWVudCogZG9jdW1lbnQgPSB3ZWJraXRfd2ViX3BhZ2VfZ2V0
X2RvbV9kb2N1bWVudCh3ZWJQYWdlKTsKKyAgICBXZWJLaXRET01ET01XaW5kb3cqIHdpbmRvdyA9
IHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X2RlZmF1bHRfdmlldyhkb2N1bWVudCk7CisKKyAgICB3
ZWJraXRfZG9tX2RvbV93aW5kb3dfd2Via2l0X21lc3NhZ2VfaGFuZGxlcnNfcG9zdF9tZXNzYWdl
KHdpbmRvdywgIndlYi1lZGl0b3IiLCAiU2VsZWN0aW9uQ2hhbmdlZCIpOworfQorCiBzdGF0aWMg
dm9pZCBwYWdlQ3JlYXRlZENhbGxiYWNrKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBX
ZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBncG9pbnRlcikKIHsKICAgICBnX3NpZ25hbF9jb25uZWN0
KHdlYlBhZ2UsICJkb2N1bWVudC1sb2FkZWQiLCBHX0NBTExCQUNLKGRvY3VtZW50TG9hZGVkQ2Fs
bGJhY2spLCBleHRlbnNpb24pOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViUGFnZSwgIm5vdGlm
eTo6dXJpIiwgR19DQUxMQkFDSyh1cmlDaGFuZ2VkQ2FsbGJhY2spLCBleHRlbnNpb24pOwogICAg
IGdfc2lnbmFsX2Nvbm5lY3Qod2ViUGFnZSwgInNlbmQtcmVxdWVzdCIsIEdfQ0FMTEJBQ0soc2Vu
ZFJlcXVlc3RDYWxsYmFjayksIG51bGxwdHIpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViUGFn
ZSwgImNvbnRleHQtbWVudSIsIEdfQ0FMTEJBQ0soY29udGV4dE1lbnVDYWxsYmFjayksIG51bGxw
dHIpOworCisgICAgV2ViS2l0V2ViRWRpdG9yICp3ZWJFZGl0b3IgPSB3ZWJraXRfd2ViX3BhZ2Vf
Z2V0X2VkaXRvciAod2ViUGFnZSk7CisgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJFZGl0b3IsICJz
ZWxlY3Rpb24tY2hhbmdlZCIsIEdfQ0FMTEJBQ0soc2VsZWN0aW9uQ2hhbmdlZENhbGxiYWNrKSwg
bnVsbHB0cik7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlUmVmIGVjaG9DYWxsYmFjayhKU0NvbnRleHRS
ZWYganNDb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245143</attachid>
            <date>2015-01-22 07:52:55 -0800</date>
            <delta_ts>2015-05-18 02:18:31 -0700</delta_ts>
            <desc>WIP patch v2</desc>
            <filename>137116-wip-v2.patch</filename>
            <type>text/plain</type>
            <size>17291</size>
            <attacher name="Tomas Popela">tpopela</attacher>
            
              <data encoding="base64">Y29tbWl0IDFmOTM2MDU1MmQyZTM4MDVhOTU3N2Y2ODU1ZTkzZWYxMjIyNmM5MWQKQXV0aG9yOiBU
b21hcyBQb3BlbGEgPHRwb3BlbGFAcmVkaGF0LmNvbT4KRGF0ZTogICBNb24gRGVjIDE1IDA5OjI5
OjMyIDIwMTQgKzAxMDAKCiAgICBXSVAKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGJh
YmUyN2QuLjE4ZWUyMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0yODcsNiArMjg3
LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0RnJhbWUuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFNjcmlwdFdvcmxkLmNwcAorICAgIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFZGl0b3IuY3BwCiAgICAgV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKICAgICBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViSGl0VGVzdFJlc3VsdC5jcHAKICAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAKQEAg
LTM4OCw2ICszODksNyBAQCBzZXQoV2ViS2l0MkdUS19JTlNUQUxMRURfSEVBREVSUwogc2V0KFdl
YktpdDJXZWJFeHRlbnNpb25fSU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVDJfRElSfS9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0RnJhbWUuaAogICAgICR7V0VC
S0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRTY3JpcHRX
b3JsZC5oCisgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL1dlYktpdFdlYkVkaXRvci5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5oCiAgICAgJHtXRUJLSVQyX0RJ
Un0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkhpdFRlc3RSZXN1
bHQuaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9XZWJLaXRXZWJQYWdlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CmluZGV4IDc0OWY4NTYu
LmJiYjVkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApAQCAtMTE2OSw2ICsxMTY5LDcg
QEAgd2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQKIHdlYmtpdF93ZWJfcGFnZV9nZXRf
aWQKIHdlYmtpdF93ZWJfcGFnZV9nZXRfdXJpCiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X21haW5fZnJh
bWUKK3dlYmtpdF93ZWJfcGFnZV9nZXRfZWRpdG9yCiAKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgog
V2ViS2l0V2ViUGFnZUNsYXNzCkBAIC0xMTg1LDYgKzExODYsMjUgQEAgd2Via2l0X3dlYl9wYWdl
X2dldF90eXBlCiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgorPEZJTEU+V2ViS2l0V2ViRWRpdG9y
PC9GSUxFPgorV2ViS2l0V2ViRWRpdG9yCit3ZWJraXRfd2ViX2VkaXRvcl9nZXRfcGFnZQorCis8
U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dlYktpdFdlYkVkaXRvckNsYXNzCitXRUJLSVRfVFlQRV9X
RUJfRURJVE9SCitXRUJLSVRfV0VCX0VESVRPUgorV0VCS0lUX0lTX1dFQl9FRElUT1IKK1dFQktJ
VF9XRUJfRURJVE9SX0NMQVNTCitXRUJLSVRfSVNfV0VCX0VESVRPUl9DTEFTUworV0VCS0lUX1dF
Ql9FRElUT1JfR0VUX0NMQVNTCisKKzxTVUJTRUNUSU9OIFByaXZhdGU+CitXZWJLaXRXZWJFZGl0
b3JQcml2YXRlCit3ZWJraXRfd2ViX2VkaXRvcl9nZXRfdHlwZQorPC9TRUNUSU9OPgorCis8U0VD
VElPTj4KIDxGSUxFPldlYktpdEZyYW1lPC9GSUxFPgogV2ViS2l0RnJhbWUKIHdlYmtpdF9mcmFt
ZV9pc19tYWluX2ZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFZGl0b3IuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5N2E4MWIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2Vi
S2l0V2ViRWRpdG9yLmNwcApAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBSZWQgSGF0IEluYy4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRX
ZWJFZGl0b3IuaCIKKworI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJL
aXRXZWJFZGl0b3JQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViUGFnZS5oIgorI2luY2x1
ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitlbnVtIHsKKyAgICBT
RUxFQ1RJT05fQ0hBTkdFRCwKKworICAgIExBU1RfU0lHTkFMCit9OworCitzdHJ1Y3QgX1dlYktp
dFdlYkVkaXRvclByaXZhdGUgeworICAgIEdSZWZQdHI8V2ViS2l0V2ViUGFnZT4gd2Via2l0V2Vi
UGFnZTsKKyAgICBXZWJQYWdlKiB3ZWJQYWdlOworfTsKKworc3RhdGljIGd1aW50IHNpZ25hbHNb
TEFTVF9TSUdOQUxdID0geyAwLCB9OworCitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0V2ViRWRp
dG9yLCB3ZWJraXRfd2ViX2VkaXRvciwgR19UWVBFX09CSkVDVCkKKworc3RhdGljIHZvaWQgd2Vi
a2l0X3dlYl9lZGl0b3JfY2xhc3NfaW5pdChXZWJLaXRXZWJFZGl0b3JDbGFzcyoga2xhc3MpCit7
CisgICAgLyoqCisgICAgICogV2ViS2l0V2ViUGFnZTo6c2VsZWN0aW9uLWNoYW5nZWQ6CisgICAg
ICogQHdlYl9wYWdlOiB0aGUgI1dlYktpdFdlYlBhZ2Ugb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBl
bWl0dGVkCisgICAgICoKKyAgICAgKiBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gdGhlIHNl
bGVjdGlvbiBpbnNpZGUgYSAjV2ViS2l0V2ViUGFnZSBoYXMgYmVlbgorICAgICAqIGNoYW5nZWQu
CisgICAgICoKKyAgICAgKiBTaW5jZTogMi44CisgICAgICovCisgICAgc2lnbmFsc1tTRUxFQ1RJ
T05fQ0hBTkdFRF0gPSBnX3NpZ25hbF9uZXcoCisgICAgICAgICJzZWxlY3Rpb24tY2hhbmdlZCIs
CisgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKGtsYXNzKSwKKyAgICAgICAgR19TSUdOQUxfUlVO
X0xBU1QsCisgICAgICAgIDAsIG51bGxwdHIsIG51bGxwdHIsCisgICAgICAgIGdfY2Nsb3N1cmVf
bWFyc2hhbF9WT0lEX19WT0lELAorICAgICAgICBHX1RZUEVfTk9ORSwgMCk7Cit9CisKK3N0YXRp
YyB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXS0J1bmRsZVBhZ2VSZWYsIFdLU3RyaW5nUmVmIC8q
IG5vdGlmaWNhdGlvbk5hbWUgKi8sIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCit7CisgICAgZ19z
aWduYWxfZW1pdChXRUJLSVRfV0VCX0VESVRPUihjbGllbnRJbmZvKSwgc2lnbmFsc1tTRUxFQ1RJ
T05fQ0hBTkdFRF0sIDApOworfQorCitXZWJLaXRXZWJFZGl0b3IqIHdlYmtpdFdlYkVkaXRvckNy
ZWF0ZShXZWJLaXRXZWJQYWdlKiB3ZWJraXRXZWJQYWdlLCBXZWJQYWdlKiB3ZWJQYWdlKQorewor
ICAgIFdlYktpdFdlYkVkaXRvciogZWRpdG9yID0gV0VCS0lUX1dFQl9FRElUT1IoZ19vYmplY3Rf
bmV3KFdFQktJVF9UWVBFX1dFQl9FRElUT1IsIE5VTEwpKTsKKyAgICBlZGl0b3ItPnByaXYtPndl
YmtpdFdlYlBhZ2UgPSB3ZWJraXRXZWJQYWdlOworICAgIGVkaXRvci0+cHJpdi0+d2ViUGFnZSA9
IHdlYlBhZ2U7CisKKyAgICBXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnRWMCBlZGl0b3JDbGllbnQg
PSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIDAsIC8vIHZlcnNpb24KKyAgICAgICAgICAgIGVk
aXRvciwgLy8gY2xpZW50SW5mbworICAgICAgICB9LAorICAgICAgICAwLCAvLyBzaG91bGRCZWdp
bkVkaXRpbmcKKyAgICAgICAgMCwgLy8gc2hvdWxkRW5kRWRpdGluZworICAgICAgICAwLCAvLyBz
aG91bGRJbnNlcnROb2RlCisgICAgICAgIDAsIC8vIHNob3VsZEluc2VydFRleHQKKyAgICAgICAg
MCwgLy8gc2hvdWxkRGVsZXRlUmFuZ2UKKyAgICAgICAgMCwgLy8gc2hvdWxkQ2hhbmdlU2VsZWN0
ZWRSYW5nZQorICAgICAgICAwLCAvLyBzaG91bGRBcHBseVN0eWxlCisgICAgICAgIDAsIC8vIGRp
ZEJlZ2luRWRpdGluZworICAgICAgICAwLCAvLyBkaWRFbmRFZGl0aW5nCisgICAgICAgIDAsIC8v
IGRpZENoYW5nZQorICAgICAgICBkaWRDaGFuZ2VTZWxlY3Rpb24KKyAgICB9OworICAgIFdLQnVu
ZGxlUGFnZVNldEVkaXRvckNsaWVudCh0b0FQSSh3ZWJQYWdlKSwgJmVkaXRvckNsaWVudC5iYXNl
KTsKKworICAgIHJldHVybiBlZGl0b3I7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9lZGl0b3Jf
Z2V0X3BhZ2U6CisgKiBAZWRpdG9yOiBhICNXZWJLaXRXZWJFZGl0b3IKKyAqCisgKiBSZXR1cm5z
IHRoZSAjV2ViS2l0V2ViUGFnZSB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCAjV2ViS2l0V2ViRWRp
dG9yLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogdGhlICNXZWJLaXRXZWJQYWdl
IHRoYXQgY2FuIGJlIHVzZWQgdG8gYWNjZXNzCisgKiB0aGUgI1dlYktpdERPTURvY3VtZW50IGN1
cnJlbnRseSBsb2FkZWQgaW50byBpdC4KKyAqCisgKiBTaW5jZTogMi44CisgKi8KK1dlYktpdFdl
YlBhZ2UqIHdlYmtpdF93ZWJfZWRpdG9yX2dldF9wYWdlKFdlYktpdFdlYkVkaXRvciogZWRpdG9y
KQoreworICAgIHJldHVybiBlZGl0b3ItPnByaXYtPndlYmtpdFdlYlBhZ2UuZ2V0KCk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvV2ViS2l0V2ViRWRpdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRWRpdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMTEwNWE2MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFZGl0b3IuaApAQCAtMCww
ICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFJlZCBIYXQgSW5jLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLDEgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmICFk
ZWZpbmVkKF9fV0VCS0lUX1dFQl9FWFRFTlNJT05fSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VC
S0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQtd2ViLWV4dGVu
c2lvbi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2Vi
S2l0V2ViRWRpdG9yX2gKKyNkZWZpbmUgV2ViS2l0V2ViRWRpdG9yX2gKKworI2luY2x1ZGUgPGds
aWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXRXZWJQYWdlLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBX
RUJLSVRfVFlQRV9XRUJfRURJVE9SICAgICAgICAgICAgICAgKHdlYmtpdF93ZWJfZWRpdG9yX2dl
dF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfRURJVE9SKG9iaikgICAgICAgICAgICAgICAo
R19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9FRElUT1Is
IFdlYktpdFdlYkVkaXRvcikpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfRURJVE9SKG9iaikgICAg
ICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX1dF
Ql9FRElUT1IpKQorI2RlZmluZSBXRUJLSVRfV0VCX0VESVRPUl9DTEFTUyhrbGFzcykgICAgICAg
KEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfRURJVE9S
LCBXZWJLaXRXZWJFZGl0b3JDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfRURJVE9SX0NM
QVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9U
WVBFX1dFQl9FRElUT1IpKQorI2RlZmluZSBXRUJLSVRfV0VCX0VESVRPUl9HRVRfQ0xBU1Mob2Jq
KSAgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9XRUJf
RURJVE9SLCBXZWJLaXRXZWJFZGl0b3JDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRX
ZWJFZGl0b3IgICAgICAgIFdlYktpdFdlYkVkaXRvcjsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRX
ZWJFZGl0b3JDbGFzcyAgIFdlYktpdFdlYkVkaXRvckNsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdFdlYkVkaXRvclByaXZhdGUgV2ViS2l0V2ViRWRpdG9yUHJpdmF0ZTsKKworLyogRm9yd2Fy
ZCBkZWNsYXJhdGlvbnMgKi8KK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJQYWdlICAgICAgICAg
IFdlYktpdFdlYlBhZ2U7CisKK3N0cnVjdCBfV2ViS2l0V2ViRWRpdG9yIHsKKyAgICBHT2JqZWN0
IHBhcmVudDsKKworICAgIFdlYktpdFdlYkVkaXRvclByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1
Y3QgX1dlYktpdFdlYkVkaXRvckNsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNz
OworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dlYl9lZGl0b3JfZ2V0X3R5cGUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0V2ViUGFn
ZSAqCit3ZWJraXRfd2ViX2VkaXRvcl9nZXRfcGFnZSAgICAgICAgICAgICAgICAgICAgICAgICAg
IChXZWJLaXRXZWJFZGl0b3IgKmVkaXRvcik7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvLyBX
ZWJLaXRXZWJFZGl0b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkVkaXRvclByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFZGl0b3JQ
cml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM1NTBiMwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9XZWJLaXRXZWJFZGl0b3JQcml2YXRlLmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBSZWQgSGF0IEluYy4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJLaXRXZWJFZGl0b3JQ
cml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0V2ViRWRpdG9yUHJpdmF0ZV9oCisKKyNpbmNsdWRlICJX
ZWJLaXRXZWJFZGl0b3IuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJQYWdlLmgiCisjaW5jbHVkZSAi
V2ViUGFnZS5oIgorCitXZWJLaXRXZWJFZGl0b3IqIHdlYmtpdFdlYkVkaXRvckNyZWF0ZShXZWJL
aXRXZWJQYWdlKiwgV2ViS2l0OjpXZWJQYWdlKik7CisKKyNlbmRpZiAvLyBXZWJLaXRXZWJFZGl0
b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwCmluZGV4IDgyZjhiMzguLmJl
MjdhYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbmNsdWRlICJXZWJLaXRTY3JpcHRXb3JsZFByaXZhdGUuaCIKICNpbmNsdWRlICJX
ZWJLaXRVUklSZXF1ZXN0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFVSSVJlc3BvbnNlUHJp
dmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFdlYkVkaXRvclByaXZhdGUuaCIKICNpbmNsdWRlICJX
ZWJLaXRXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlBhZ2VQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgpAQCAtNjksNiArNzAsOCBAQCBzdHJ1
Y3QgX1dlYktpdFdlYlBhZ2VQcml2YXRlIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlOwogCiAgICAg
Q1N0cmluZyB1cmk7CisKKyAgICBHUmVmUHRyPFdlYktpdFdlYkVkaXRvcj4gd2ViRWRpdG9yOwog
fTsKIAogc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwpAQCAtNDQ1
LDYgKzQ0OCw4IEBAIFdlYktpdFdlYlBhZ2UqIHdlYmtpdFdlYlBhZ2VDcmVhdGUoV2ViUGFnZSog
d2ViUGFnZSkKICAgICB9OwogICAgIFdLQnVuZGxlUGFnZVNldENvbnRleHRNZW51Q2xpZW50KHRv
QVBJKHdlYlBhZ2UpLCAmY29udGV4dE1lbnVDbGllbnQuYmFzZSk7CiAKKyAgICBwYWdlLT5wcml2
LT53ZWJFZGl0b3IgPSBhZG9wdEdSZWYod2Via2l0V2ViRWRpdG9yQ3JlYXRlKHBhZ2UsIHdlYlBh
Z2UpKTsKKwogICAgIHJldHVybiBwYWdlOwogfQogCkBAIC01NjEsMyArNTY2LDIxIEBAIFdlYktp
dEZyYW1lKiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X21haW5fZnJhbWUoV2ViS2l0V2ViUGFnZSogd2Vi
UGFnZSkKIAogICAgIHJldHVybiB3ZWJraXRGcmFtZUdldE9yQ3JlYXRlKHdlYlBhZ2UtPnByaXYt
PndlYlBhZ2UtPm1haW5XZWJGcmFtZSgpKTsKIH0KKworLyoqCisgKiB3ZWJraXRfd2ViX3BhZ2Vf
Z2V0X2VkaXRvcjoKKyAqIEB3ZWJfcGFnZTogYSAjV2ViS2l0V2ViUGFnZQorICoKKyAqIFJldHVy
bnMgdGhlICNXZWJQYWdlRWRpdG9yIG9mIGEgI1dlYktpdFdlYlBhZ2UuCisgKgorICogUmV0dXJu
czogKHRyYW5zZmVyIG5vbmUpOiB0aGUgI1dlYktpdFdlYkVkaXRvciB0aGF0IGNhbiBiZSB1c2Vk
IHRvIGFjY2VzcworICogZWRpdHRpbmcgcHJvcGVydGllcyBvZiBhIEB3ZWJfcGFnZQorICoKKyAq
IFNpbmNlOiAyLjgKKyAqLworV2ViS2l0V2ViRWRpdG9yKiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2Vk
aXRvcihXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9JU19XRUJfUEFHRSh3ZWJQYWdlKSwgMCk7CisKKyAgICByZXR1cm4gd2ViUGFnZS0+
cHJpdi0+d2ViRWRpdG9yLmdldCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmgK
aW5kZXggMzc0NTUyOC4uMDMzYjNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5o
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KICNpbmNsdWRlIDx3
ZWJraXQyL1dlYktpdERlZmluZXMuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEZyYW1lLmg+
CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJFZGl0b3IuaD4KICNpbmNsdWRlIDx3ZWJraXRk
b20vd2Via2l0ZG9tLmg+CiAKIEdfQkVHSU5fREVDTFMKQEAgLTQyLDYgKzQzLDkgQEAgdHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdFdlYlBhZ2UgICAgICAgIFdlYktpdFdlYlBhZ2U7CiB0eXBlZGVmIHN0
cnVjdCBfV2ViS2l0V2ViUGFnZUNsYXNzICAgV2ViS2l0V2ViUGFnZUNsYXNzOwogdHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdFdlYlBhZ2VQcml2YXRlIFdlYktpdFdlYlBhZ2VQcml2YXRlOwogCisvKiBG
b3J3YXJkIGRlY2xhcmF0aW9ucyAqLwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkVkaXRvciAg
ICAgIFdlYktpdFdlYkVkaXRvcjsKKwogc3RydWN0IF9XZWJLaXRXZWJQYWdlIHsKICAgICBHT2Jq
ZWN0IHBhcmVudDsKIApAQCAtNjcsNiArNzEsOSBAQCB3ZWJraXRfd2ViX3BhZ2VfZ2V0X3VyaSAg
ICAgICAgICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOwogV0VCS0lUX0FQSSBXZWJLaXRGcmFt
ZSAqCiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X21haW5fZnJhbWUgICAoV2ViS2l0V2ViUGFnZSAqd2Vi
X3BhZ2UpOwogCitXRUJLSVRfQVBJIFdlYktpdFdlYkVkaXRvciAqCit3ZWJraXRfd2ViX3BhZ2Vf
Z2V0X2VkaXRvciAgICAgICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOworCiBHX0VORF9ERUNM
UwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay93ZWJraXQtd2ViLWV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgK
aW5kZXggNmYxMWJjZi4uMWM3NDZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13
ZWItZXh0ZW5zaW9uLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktp
dFVSSVJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVSSVJlc3BvbnNlLmg+CiAj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRWZXJzaW9uLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXRXZWJFZGl0b3IuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkV4dGVuc2lvbi5oPgog
I2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViSGl0VGVzdFJlc3VsdC5oPgogI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0V2ViUGFnZS5oPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXIuY3BwCmluZGV4IDlmNDlkMWQuLjVmMGJkOGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFVzZXJD
b250ZW50TWFuYWdlci5jcHAKQEAgLTM2OCw2ICszNjgsMjIgQEAgc3RhdGljIHZvaWQgdGVzdFVz
ZXJDb250ZW50TWFuYWdlclNjcmlwdE1lc3NhZ2VGcm9tRE9NQmluZGluZ3MoVXNlclNjcmlwdE1l
c3NhZ2UKICAgICB0ZXN0LT51bnJlZ2lzdGVySGFuZGxlcigiZG9tLWNvbnZlbmllbmNlIik7CiB9
CiAKK3N0YXRpYyB2b2lkIHRlc3RTZWxlY3Rpb25DaGFuZ2VkU2lnbmFsKFVzZXJTY3JpcHRNZXNz
YWdlVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBnX2Fzc2VydCh0ZXN0LT5yZWdp
c3RlckhhbmRsZXIoIndlYi1lZGl0b3IiKSk7CisKKyAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+
PGJvZHk+QWxsIHdvcmsgYW5kIG5vIHBsYXkgbWFrZSBKYWNrIGEgZHVsbCBib3kuPC9ib2R5Pjwv
aHRtbD4iLCAwKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKworICAgIHdl
YmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZCh0ZXN0LT5tX3dlYlZpZXcsIFdF
QktJVF9FRElUSU5HX0NPTU1BTkRfU0VMRUNUX0FMTCk7CisgICAgV2ViS2l0SmF2YXNjcmlwdFJl
c3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPndhaXRVbnRpbE1lc3NhZ2VSZWNlaXZlZCgi
d2ViLWVkaXRvciIpOworICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOworICAgIEdVbmlx
dWVQdHI8Y2hhcj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NT
dHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmlu
Zy5nZXQoKSwgPT0sICJTZWxlY3Rpb25DaGFuZ2VkIik7CisKKyAgICB0ZXN0LT51bnJlZ2lzdGVy
SGFuZGxlcigid2ViLWVkaXRvciIpOworfQorCiBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhT
b3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBwYXRo
LCBHSGFzaFRhYmxlKiwgU291cENsaWVudENvbnRleHQqLCBncG9pbnRlcikKIHsKICAgICBzb3Vw
X21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7CkBAIC0zODUsNiAr
NDAxLDcgQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIFVzZXJDb250ZW50TWFuYWdlclRlc3Q6OmFk
ZCgiV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyIiwgImluamVjdGVkLXNjcmlwdCIsIHRlc3RVc2Vy
Q29udGVudE1hbmFnZXJJbmplY3RlZFNjcmlwdCk7CiAgICAgVXNlclNjcmlwdE1lc3NhZ2VUZXN0
OjphZGQoIldlYktpdFVzZXJDb250ZW50TWFuYWdlciIsICJzY3JpcHQtbWVzc2FnZS1yZWNlaXZl
ZCIsIHRlc3RVc2VyQ29udGVudE1hbmFnZXJTY3JpcHRNZXNzYWdlUmVjZWl2ZWQpOwogICAgIFVz
ZXJTY3JpcHRNZXNzYWdlVGVzdDo6YWRkKCJXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIiLCAic2Ny
aXB0LW1lc3NhZ2UtZnJvbS1kb20tYmluZGluZ3MiLCB0ZXN0VXNlckNvbnRlbnRNYW5hZ2VyU2Ny
aXB0TWVzc2FnZUZyb21ET01CaW5kaW5ncyk7CisgICAgVXNlclNjcmlwdE1lc3NhZ2VUZXN0Ojph
ZGQoIldlYktpdFdlYkVkaXRvciIsICJzZWxlY3Rpb24tY2hhbmdlZCIsIHRlc3RTZWxlY3Rpb25D
aGFuZ2VkU2lnbmFsKTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKaW5k
ZXggZmQwOTU5Ni4uOGE1MjRjMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNwcApAQCAtMjI1LDEyICsyMjUs
MjQgQEAgc3RhdGljIGdib29sZWFuIGNvbnRleHRNZW51Q2FsbGJhY2soV2ViS2l0V2ViUGFnZSog
cGFnZSwgV2ViS2l0Q29udGV4dE1lbnUqIG1lbnUKICAgICByZXR1cm4gRkFMU0U7CiB9CiAKK3N0
YXRpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWRDYWxsYmFjayhXZWJLaXRXZWJFZGl0b3IqIHdlYkVk
aXRvciwgZ3BvaW50ZXIpCit7CisgICAgV2ViS2l0V2ViUGFnZSogd2ViUGFnZSA9IHdlYmtpdF93
ZWJfZWRpdG9yX2dldF9wYWdlICh3ZWJFZGl0b3IpOworICAgIFdlYktpdERPTURvY3VtZW50KiBk
b2N1bWVudCA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50KHdlYlBhZ2UpOworICAg
IFdlYktpdERPTURPTVdpbmRvdyogd2luZG93ID0gd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZGVm
YXVsdF92aWV3KGRvY3VtZW50KTsKKworICAgIHdlYmtpdF9kb21fZG9tX3dpbmRvd193ZWJraXRf
bWVzc2FnZV9oYW5kbGVyc19wb3N0X21lc3NhZ2Uod2luZG93LCAid2ViLWVkaXRvciIsICJTZWxl
Y3Rpb25DaGFuZ2VkIik7Cit9CisKIHN0YXRpYyB2b2lkIHBhZ2VDcmVhdGVkQ2FsbGJhY2soV2Vi
S2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UsIGdwb2lu
dGVyKQogewogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViUGFnZSwgImRvY3VtZW50LWxvYWRlZCIs
IEdfQ0FMTEJBQ0soZG9jdW1lbnRMb2FkZWRDYWxsYmFjayksIGV4dGVuc2lvbik7CiAgICAgZ19z
aWduYWxfY29ubmVjdCh3ZWJQYWdlLCAibm90aWZ5Ojp1cmkiLCBHX0NBTExCQUNLKHVyaUNoYW5n
ZWRDYWxsYmFjayksIGV4dGVuc2lvbik7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJQYWdlLCAi
c2VuZC1yZXF1ZXN0IiwgR19DQUxMQkFDSyhzZW5kUmVxdWVzdENhbGxiYWNrKSwgbnVsbHB0cik7
CiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJQYWdlLCAiY29udGV4dC1tZW51IiwgR19DQUxMQkFD
Syhjb250ZXh0TWVudUNhbGxiYWNrKSwgbnVsbHB0cik7CisKKyAgICBXZWJLaXRXZWJFZGl0b3Ig
KndlYkVkaXRvciA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfZWRpdG9yICh3ZWJQYWdlKTsKKyAgICBn
X3NpZ25hbF9jb25uZWN0KHdlYkVkaXRvciwgInNlbGVjdGlvbi1jaGFuZ2VkIiwgR19DQUxMQkFD
SyhzZWxlY3Rpb25DaGFuZ2VkQ2FsbGJhY2spLCBudWxscHRyKTsKIH0KIAogc3RhdGljIEpTVmFs
dWVSZWYgZWNob0NhbGxiYWNrKEpTQ29udGV4dFJlZiBqc0NvbnRleHQsIEpTT2JqZWN0UmVmLCBK
U09iamVjdFJlZiwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1l
bnRzW10sIEpTVmFsdWVSZWYqKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253314</attachid>
            <date>2015-05-18 02:18:44 -0700</date>
            <delta_ts>2015-07-15 07:10:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137116-20150518111842.patch</filename>
            <type>text/plain</type>
            <size>23796</size>
            <attacher name="Tomas Popela">tpopela</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0Mjg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODU3MDQwYjQwMDZkYzEy
M2IyZGNhZWUyNzI2ZWYzODY0MTRhMzgzYy4uMWNhYTY1NTdhMjk0N2Y3N2QzNjBhOTRkYzNiNWZi
YjYzMDY1MmQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE1LTA1LTE4ICBUb21h
cyBQb3BlbGEgIDx0cG9wZWxhQHJlZGhhdC5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIHNlbGVj
dGlvbi1jaGFuZ2VkIHNpZ25hbCB0byB0aGUgV2ViS2l0MiBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzExNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBvYmplY3QgV2ViS2l0V2Vi
RWRpdG9yIHdoZXJlIHRoZSBlZGl0aW5nIGNhcGFiaWxpdGllcyBvZiBhCisgICAgICAgIFdlYlBh
Z2Ugd2lsbCBiZSBncm91cGVkIGFuZCBleHBvc2VkLiBBZGQgdGhlIHNlbGVjdGlvbi1jaGFuZ2Vk
IHNpZ25hbAorICAgICAgICB0aGVyZSAod2UgdXNlZCB0aGUgc2FtZSBuYW1lIGFzIGluIFdLMSBB
UEkpLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkVkaXRvci5jcHA6IEFkZGVk
LgorICAgICAgICAoZGlkQ2hhbmdlU2VsZWN0aW9uKToKKyAgICAgICAgKHdlYmtpdFdlYkVkaXRv
ckNyZWF0ZSk6CisgICAgICAgICh3ZWJraXRfd2ViX2VkaXRvcl9nZXRfcGFnZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkVkaXRvci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0
V2ViRWRpdG9yUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJQYWdl
R2V0UGFnZSk6CisgICAgICAgICh3ZWJraXRXZWJQYWdlQ3JlYXRlKToKKyAgICAgICAgKHdlYmtp
dF93ZWJfcGFnZV9nZXRfZWRpdG9yKToKKyAgICAgICAgKHdlYmtpdF93ZWJfcGFnZV9nZXRfbWFp
bl9mcmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL1dlYktpdFdlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZVByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Via2l0LXdlYi1leHRlbnNpb24uaDoKKwogMjAxNS0w
NS0xMyAgU3VuZ21hbm4gQ2hvICA8c3VuZ21hbm4uY2hvQG5hdmVyY29ycC5jb20+CiAKICAgICAg
ICAgTWlub3IgY2xlYW51cHMgdG8gUGx1Z2luUHJveHkuY3BwLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5j
bWFrZQppbmRleCA3OWI0MmIyMjAwN2RjNzExMGYzMDllZWUxZmM5NGNmOTA3ZDJjOTU0Li5jMTY3
MmU3OTgwN2EyNTU5ZmNkNjdiYWFlZjY4NGZhNTg3ZWE0MjNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdU
Sy5jbWFrZQpAQCAtMzAzLDYgKzMwMyw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwog
CiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdEZyYW1lLmNwcAog
ICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRTY3JpcHRXb3JsZC5j
cHAKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRWRpdG9y
LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRl
bnNpb24uY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdl
YkhpdFRlc3RSZXN1bHQuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L1dlYktpdFdlYlBhZ2UuY3BwCkBAIC00MDUsNiArNDA2LDcgQEAgc2V0KFdlYktpdDJHVEtfSU5T
VEFMTEVEX0hFQURFUlMKIHNldChXZWJLaXQyV2ViRXh0ZW5zaW9uX0lOU1RBTExFRF9IRUFERVJT
CiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dl
YktpdEZyYW1lLmgKICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvV2ViS2l0U2NyaXB0V29ybGQuaAorICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFZGl0b3IuaAogICAgICR7V0VCS0lU
Ml9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFeHRlbnNp
b24uaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9XZWJLaXRXZWJIaXRUZXN0UmVzdWx0LmgKICAgICAke1dFQktJVDJfRElSfS9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25z
LnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00
LjAtc2VjdGlvbnMudHh0CmluZGV4IGU1MDJiZDc5NDAwZmQ0YTNhOWFjOTkwMWQxMDFkMTk3ZmY2
ZDc4NWQuLjQ5YjQ2ODczZjRmZTZjNmM5NjVhNzVjNTJhNjQ4NzA2YWFkYmJkZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAt
c2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CkBAIC0xMTc0LDYgKzExNzQsNyBAQCB3ZWJraXRf
d2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudAogd2Via2l0X3dlYl9wYWdlX2dldF9pZAogd2Via2l0
X3dlYl9wYWdlX2dldF91cmkKIHdlYmtpdF93ZWJfcGFnZV9nZXRfbWFpbl9mcmFtZQord2Via2l0
X3dlYl9wYWdlX2dldF9lZGl0b3IKIAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRXZWJQ
YWdlQ2xhc3MKQEAgLTExOTAsNiArMTE5MSwyNSBAQCB3ZWJraXRfd2ViX3BhZ2VfZ2V0X3R5cGUK
IDwvU0VDVElPTj4KIAogPFNFQ1RJT04+Cis8RklMRT5XZWJLaXRXZWJFZGl0b3I8L0ZJTEU+CitX
ZWJLaXRXZWJFZGl0b3IKK3dlYmtpdF93ZWJfZWRpdG9yX2dldF9wYWdlCisKKzxTVUJTRUNUSU9O
IFN0YW5kYXJkPgorV2ViS2l0V2ViRWRpdG9yQ2xhc3MKK1dFQktJVF9UWVBFX1dFQl9FRElUT1IK
K1dFQktJVF9XRUJfRURJVE9SCitXRUJLSVRfSVNfV0VCX0VESVRPUgorV0VCS0lUX1dFQl9FRElU
T1JfQ0xBU1MKK1dFQktJVF9JU19XRUJfRURJVE9SX0NMQVNTCitXRUJLSVRfV0VCX0VESVRPUl9H
RVRfQ0xBU1MKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdFdlYkVkaXRvclByaXZhdGUK
K3dlYmtpdF93ZWJfZWRpdG9yX2dldF90eXBlCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgogPEZJ
TEU+V2ViS2l0RnJhbWU8L0ZJTEU+CiBXZWJLaXRGcmFtZQogd2Via2l0X2ZyYW1lX2lzX21haW5f
ZnJhbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9XZWJLaXRXZWJFZGl0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkVkaXRvci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzhlNWU5NmZiODc2MmIwYjVhNDVkNGM2YjA1NzM2YTI4OTBjOTI3YgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJL
aXRXZWJFZGl0b3IuY3BwCkBAIC0wLDAgKzEsMTIyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IFJlZCBIYXQgSW5jLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
LDEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdFdl
YkVkaXRvci5oIgorCisjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktp
dFdlYkVkaXRvclByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJQYWdlLmgiCisjaW5jbHVk
ZSAiV2ViS2l0V2ViUGFnZVByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVk
ZSAiV0tCdW5kbGVBUElDYXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRXZWJFZGl0b3IKKyAq
IEBTaG9ydF9kZXNjcmlwdGlvbjogQWNjZXNzIHRvIGVkaXRpbmcgY2FwYWJpbGl0aWVzIG9mIGEg
I1dlYktpdFdlYlBhZ2UKKyAqIEBUaXRsZTogV2ViS2l0V2ViRWRpdG9yCisgKgorICogVGhlICNX
ZWJLaXRXZWJFZGl0b3IgcHJvdmlkZXMgYWNjZXNzIHRvIHZhcmlvdXMgZWRpdGluZyBjYXBhYmls
aXRpZXMgb2YKKyAqIGEgI1dlYktpdFdlYlBhZ2Ugc3VjaCBhcyBhIHBvc3NpYmlsaXR5IHRvIHJl
YWN0IHRvIHRoZSBjdXJyZW50IHNlbGVjdGlvbiBpbgorICogI1dlYktpdFdlYlBhZ2UuCisgKi8K
K2VudW0geworICAgIFNFTEVDVElPTl9DSEFOR0VELAorCisgICAgTEFTVF9TSUdOQUwKK307CisK
K3N0cnVjdCBfV2ViS2l0V2ViRWRpdG9yUHJpdmF0ZSB7CisgICAgR1JlZlB0cjxXZWJLaXRXZWJQ
YWdlPiB3ZWJQYWdlOworfTsKKworc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0g
eyAwLCB9OworCitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0V2ViRWRpdG9yLCB3ZWJraXRfd2Vi
X2VkaXRvciwgR19UWVBFX09CSkVDVCkKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9lZGl0b3Jf
Y2xhc3NfaW5pdChXZWJLaXRXZWJFZGl0b3JDbGFzcyoga2xhc3MpCit7CisgICAgLyoqCisgICAg
ICogV2ViS2l0V2ViRWRpdG9yOjpzZWxlY3Rpb24tY2hhbmdlZDoKKyAgICAgKiBAZWRpdG9yOiB0
aGUgI1dlYktpdFdlYkVkaXRvciBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAg
KgorICAgICAqIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbiB0aGUgc2VsZWN0aW9uIGluc2lk
ZSBhICNXZWJLaXRXZWJQYWdlIGhhcyBiZWVuCisgICAgICogY2hhbmdlZC4KKyAgICAgKgorICAg
ICAqIFNpbmNlOiAyLjEwCisgICAgICovCisgICAgc2lnbmFsc1tTRUxFQ1RJT05fQ0hBTkdFRF0g
PSBnX3NpZ25hbF9uZXcoCisgICAgICAgICJzZWxlY3Rpb24tY2hhbmdlZCIsCisgICAgICAgIEdf
VFlQRV9GUk9NX0NMQVNTKGtsYXNzKSwKKyAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAg
ICAgIDAsIG51bGxwdHIsIG51bGxwdHIsCisgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9WT0lE
X19WT0lELAorICAgICAgICBHX1RZUEVfTk9ORSwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIGRpZENo
YW5nZVNlbGVjdGlvbihXS0J1bmRsZVBhZ2VSZWYsIFdLU3RyaW5nUmVmIC8qIG5vdGlmaWNhdGlv
bk5hbWUgKi8sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgZ19zaWduYWxfZW1pdChX
RUJLSVRfV0VCX0VESVRPUihjbGllbnRJbmZvKSwgc2lnbmFsc1tTRUxFQ1RJT05fQ0hBTkdFRF0s
IDApOworfQorCitXZWJLaXRXZWJFZGl0b3IqIHdlYmtpdFdlYkVkaXRvckNyZWF0ZShXZWJLaXRX
ZWJQYWdlKiB3ZWJQYWdlKQoreworICAgIFdlYktpdFdlYkVkaXRvciogZWRpdG9yID0gV0VCS0lU
X1dFQl9FRElUT1IoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9FRElUT1IsIG51bGxwdHIp
KTsKKyAgICBlZGl0b3ItPnByaXYtPndlYlBhZ2UgPSB3ZWJQYWdlOworCisgICAgV0tCdW5kbGVQ
YWdlRWRpdG9yQ2xpZW50VjAgZWRpdG9yQ2xpZW50ID0geworICAgICAgICB7CisgICAgICAgICAg
ICAwLCAvLyB2ZXJzaW9uCisgICAgICAgICAgICBlZGl0b3IsIC8vIGNsaWVudEluZm8KKyAgICAg
ICAgfSwKKyAgICAgICAgbnVsbHB0ciwgLy8gc2hvdWxkQmVnaW5FZGl0aW5nCisgICAgICAgIG51
bGxwdHIsIC8vIHNob3VsZEVuZEVkaXRpbmcKKyAgICAgICAgbnVsbHB0ciwgLy8gc2hvdWxkSW5z
ZXJ0Tm9kZQorICAgICAgICBudWxscHRyLCAvLyBzaG91bGRJbnNlcnRUZXh0CisgICAgICAgIG51
bGxwdHIsIC8vIHNob3VsZERlbGV0ZVJhbmdlCisgICAgICAgIG51bGxwdHIsIC8vIHNob3VsZENo
YW5nZVNlbGVjdGVkUmFuZ2UKKyAgICAgICAgbnVsbHB0ciwgLy8gc2hvdWxkQXBwbHlTdHlsZQor
ICAgICAgICBudWxscHRyLCAvLyBkaWRCZWdpbkVkaXRpbmcKKyAgICAgICAgbnVsbHB0ciwgLy8g
ZGlkRW5kRWRpdGluZworICAgICAgICBudWxscHRyLCAvLyBkaWRDaGFuZ2UKKyAgICAgICAgZGlk
Q2hhbmdlU2VsZWN0aW9uCisgICAgfTsKKyAgICBXS0J1bmRsZVBhZ2VTZXRFZGl0b3JDbGllbnQo
dG9BUEkod2Via2l0V2ViUGFnZUdldFBhZ2Uod2ViUGFnZSkpLCAmZWRpdG9yQ2xpZW50LmJhc2Up
OworCisgICAgcmV0dXJuIGVkaXRvcjsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX2VkaXRvcl9n
ZXRfcGFnZToKKyAqIEBlZGl0b3I6IGEgI1dlYktpdFdlYkVkaXRvcgorICoKKyAqIEdldHMgdGhl
ICNXZWJLaXRXZWJQYWdlIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoICNXZWJLaXRXZWJFZGl0b3Iu
CisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiB0aGUgI1dlYktpdFdlYlBhZ2UgdGhh
dCBjYW4gYmUgdXNlZCB0byBhY2Nlc3MKKyAqIHRoZSAjV2ViS2l0RE9NRG9jdW1lbnQgY3VycmVu
dGx5IGxvYWRlZCBpbnRvIGl0LgorICoKKyAqIFNpbmNlOiAyLjEwCisgKi8KK1dlYktpdFdlYlBh
Z2UqIHdlYmtpdF93ZWJfZWRpdG9yX2dldF9wYWdlKFdlYktpdFdlYkVkaXRvciogZWRpdG9yKQor
eworICAgIHJldHVybiBlZGl0b3ItPnByaXYtPndlYlBhZ2UuZ2V0KCk7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0
V2ViRWRpdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvV2ViS2l0V2ViRWRpdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNmZTlmMDA4MmFmNjkzYzJiNDdl
ZmE3ODM2MjNlMDQwNzRkNzhmMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFZGl0b3IuaApAQCAtMCww
ICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFJlZCBIYXQgSW5jLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLDEgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmICFk
ZWZpbmVkKF9fV0VCS0lUX1dFQl9FWFRFTlNJT05fSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VC
S0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQtd2ViLWV4dGVu
c2lvbi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2Vi
S2l0V2ViRWRpdG9yX2gKKyNkZWZpbmUgV2ViS2l0V2ViRWRpdG9yX2gKKworI2luY2x1ZGUgPGds
aWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXRXZWJQYWdlLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBX
RUJLSVRfVFlQRV9XRUJfRURJVE9SICAgICAgICAgICAgICAgKHdlYmtpdF93ZWJfZWRpdG9yX2dl
dF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfRURJVE9SKG9iaikgICAgICAgICAgICAgICAo
R19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9FRElUT1Is
IFdlYktpdFdlYkVkaXRvcikpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfRURJVE9SKG9iaikgICAg
ICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX1dF
Ql9FRElUT1IpKQorI2RlZmluZSBXRUJLSVRfV0VCX0VESVRPUl9DTEFTUyhrbGFzcykgICAgICAg
KEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfRURJVE9S
LCBXZWJLaXRXZWJFZGl0b3JDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfRURJVE9SX0NM
QVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9U
WVBFX1dFQl9FRElUT1IpKQorI2RlZmluZSBXRUJLSVRfV0VCX0VESVRPUl9HRVRfQ0xBU1Mob2Jq
KSAgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9XRUJf
RURJVE9SLCBXZWJLaXRXZWJFZGl0b3JDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRX
ZWJFZGl0b3IgICAgICAgIFdlYktpdFdlYkVkaXRvcjsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRX
ZWJFZGl0b3JDbGFzcyAgIFdlYktpdFdlYkVkaXRvckNsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdFdlYkVkaXRvclByaXZhdGUgV2ViS2l0V2ViRWRpdG9yUHJpdmF0ZTsKKworLyogRm9yd2Fy
ZCBkZWNsYXJhdGlvbnMgKi8KK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJQYWdlICAgICAgICAg
IFdlYktpdFdlYlBhZ2U7CisKK3N0cnVjdCBfV2ViS2l0V2ViRWRpdG9yIHsKKyAgICBHT2JqZWN0
IHBhcmVudDsKKworICAgIFdlYktpdFdlYkVkaXRvclByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1
Y3QgX1dlYktpdFdlYkVkaXRvckNsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNz
OworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dlYl9lZGl0b3JfZ2V0X3R5cGUgKHZv
aWQpOworCitXRUJLSVRfQVBJIFdlYktpdFdlYlBhZ2UgKgord2Via2l0X3dlYl9lZGl0b3JfZ2V0
X3BhZ2UgKFdlYktpdFdlYkVkaXRvciAqZWRpdG9yKTsKKworR19FTkRfREVDTFMKKworI2VuZGlm
IC8vIFdlYktpdFdlYkVkaXRvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRWRpdG9yUHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkVk
aXRvclByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODE1OWViMjA4MDNhMWVjMTkyNTBiZTlmMDc1ZTE2
MGRlYTFiYTMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkVkaXRvclByaXZhdGUuaApAQCAtMCwwICsx
LDI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFJlZCBIYXQgSW5jLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdl
YktpdFdlYkVkaXRvclByaXZhdGVfaAorI2RlZmluZSBXZWJLaXRXZWJFZGl0b3JQcml2YXRlX2gK
KworI2luY2x1ZGUgIldlYktpdFdlYkVkaXRvci5oIgorI2luY2x1ZGUgIldlYktpdFdlYlBhZ2Uu
aCIKKworV2ViS2l0V2ViRWRpdG9yKiB3ZWJraXRXZWJFZGl0b3JDcmVhdGUoV2ViS2l0V2ViUGFn
ZSopOworCisjZW5kaWYgLy8gV2ViS2l0V2ViRWRpdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJL
aXRXZWJQYWdlLmNwcAppbmRleCA3NDcyNjE4ZjhhODBmYjNkYjliY2MxZjA3NDg5MWExN2QwMTAy
ODhmLi5lOTM2NWUyNjVlM2FkZWRiMzMzOTVmZGYxNjI0ZjZkM2ZmMzYzOWE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0
V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAi
V2ViS2l0U2NyaXB0V29ybGRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVxdWVzdFBy
aXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVUklSZXNwb25zZVByaXZhdGUuaCIKKyNpbmNsdWRl
ICJXZWJLaXRXZWJFZGl0b3JQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViSGl0VGVzdFJl
c3VsdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJQYWdlUHJpdmF0ZS5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3MuaCIKQEAgLTcwLDYgKzcxLDggQEAgc3RydWN0IF9XZWJLaXRXZWJQYWdl
UHJpdmF0ZSB7CiAgICAgV2ViUGFnZSogd2ViUGFnZTsKIAogICAgIENTdHJpbmcgdXJpOworCisg
ICAgR1JlZlB0cjxXZWJLaXRXZWJFZGl0b3I+IHdlYkVkaXRvcjsKIH07CiAKIHN0YXRpYyBndWlu
dCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKQEAgLTM5NCw2ICszOTcsMTMgQEAgc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl9wYWdlX2NsYXNzX2luaXQoV2ViS2l0V2ViUGFnZUNsYXNzKiBr
bGFzcykKICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX0hJVF9URVNUX1JFU1VMVCk7CiB9CiAKK1dl
YlBhZ2UqIHdlYmtpdFdlYlBhZ2VHZXRQYWdlKFdlYktpdFdlYlBhZ2UgKndlYlBhZ2UpCit7Cisg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9QQUdFKHdlYlBhZ2UpLCBudWxs
cHRyKTsKKworICAgIHJldHVybiB3ZWJQYWdlLT5wcml2LT53ZWJQYWdlOworfQorCiBXZWJLaXRX
ZWJQYWdlKiB3ZWJraXRXZWJQYWdlQ3JlYXRlKFdlYlBhZ2UqIHdlYlBhZ2UpCiB7CiAgICAgV2Vi
S2l0V2ViUGFnZSogcGFnZSA9IFdFQktJVF9XRUJfUEFHRShnX29iamVjdF9uZXcoV0VCS0lUX1RZ
UEVfV0VCX1BBR0UsIE5VTEwpKTsKQEAgLTQ1OSw2ICs0NjksOCBAQCBXZWJLaXRXZWJQYWdlKiB3
ZWJraXRXZWJQYWdlQ3JlYXRlKFdlYlBhZ2UqIHdlYlBhZ2UpCiAKICAgICB3ZWJQYWdlLT5zZXRJ
bmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNvbnRl
eHRNZW51Q2xpZW50PihwYWdlKSk7CiAKKyAgICBwYWdlLT5wcml2LT53ZWJFZGl0b3IgPSBudWxs
cHRyOworCiAgICAgcmV0dXJuIHBhZ2U7CiB9CiAKQEAgLTU3NSwzICs1ODcsMjQgQEAgV2ViS2l0
RnJhbWUqIHdlYmtpdF93ZWJfcGFnZV9nZXRfbWFpbl9mcmFtZShXZWJLaXRXZWJQYWdlKiB3ZWJQ
YWdlKQogCiAgICAgcmV0dXJuIHdlYmtpdEZyYW1lR2V0T3JDcmVhdGUod2ViUGFnZS0+cHJpdi0+
d2ViUGFnZS0+bWFpbldlYkZyYW1lKCkpOwogfQorCisvKioKKyAqIHdlYmtpdF93ZWJfcGFnZV9n
ZXRfZWRpdG9yOgorICogQHdlYl9wYWdlOiBhICNXZWJLaXRXZWJQYWdlCisgKgorICogR2V0cyB0
aGUgI1dlYlBhZ2VFZGl0b3Igb2YgYSAjV2ViS2l0V2ViUGFnZS4KKyAqCisgKiBSZXR1cm5zOiAo
dHJhbnNmZXIgbm9uZSk6IHRoZSAjV2ViS2l0V2ViRWRpdG9yIHRoYXQgY2FuIGJlIHVzZWQgdG8g
YWNjZXNzCisgKiBlZGl0dGluZyBwcm9wZXJ0aWVzIG9mIGEgQHdlYl9wYWdlCisgKgorICogU2lu
Y2U6IDIuMTAKKyAqLworV2ViS2l0V2ViRWRpdG9yKiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2VkaXRv
cihXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9JU19XRUJfUEFHRSh3ZWJQYWdlKSwgbnVsbHB0cik7CisKKyAgICBpZiAoIXdlYlBhZ2Ut
PnByaXYtPndlYkVkaXRvcikKKyAgICAgICAgd2ViUGFnZS0+cHJpdi0+d2ViRWRpdG9yID0gYWRv
cHRHUmVmKHdlYmtpdFdlYkVkaXRvckNyZWF0ZSh3ZWJQYWdlKSk7CisKKyAgICByZXR1cm4gd2Vi
UGFnZS0+cHJpdi0+d2ViRWRpdG9yLmdldCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQ
YWdlLmgKaW5kZXggMzc0NTUyODZmNWYxOTlmNDY2ZDZhZWVhZjUyYTAxNDRkMTc4MWM0ZS4uMDMz
YjNjZDhiZjBiYjk0NmNhZDZkMDQwN2NlNGM3Nzg5OGU5NGM1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
V2ViS2l0V2ViUGFnZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSA8Z2xpYi1vYmplY3Qu
aD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KICNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdEZyYW1lLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJFZGl0b3IuaD4KICNp
bmNsdWRlIDx3ZWJraXRkb20vd2Via2l0ZG9tLmg+CiAKIEdfQkVHSU5fREVDTFMKQEAgLTQyLDYg
KzQzLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlBhZ2UgICAgICAgIFdlYktpdFdlYlBh
Z2U7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViUGFnZUNsYXNzICAgV2ViS2l0V2ViUGFnZUNs
YXNzOwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlBhZ2VQcml2YXRlIFdlYktpdFdlYlBhZ2VQ
cml2YXRlOwogCisvKiBGb3J3YXJkIGRlY2xhcmF0aW9ucyAqLwordHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdFdlYkVkaXRvciAgICAgIFdlYktpdFdlYkVkaXRvcjsKKwogc3RydWN0IF9XZWJLaXRXZWJQ
YWdlIHsKICAgICBHT2JqZWN0IHBhcmVudDsKIApAQCAtNjcsNiArNzEsOSBAQCB3ZWJraXRfd2Vi
X3BhZ2VfZ2V0X3VyaSAgICAgICAgICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOwogV0VCS0lU
X0FQSSBXZWJLaXRGcmFtZSAqCiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X21haW5fZnJhbWUgICAoV2Vi
S2l0V2ViUGFnZSAqd2ViX3BhZ2UpOwogCitXRUJLSVRfQVBJIFdlYktpdFdlYkVkaXRvciAqCit3
ZWJraXRfd2ViX3BhZ2VfZ2V0X2VkaXRvciAgICAgICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2Up
OworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlUHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdl
YlBhZ2VQcml2YXRlLmgKaW5kZXggNDZhOGQyNmM4MTljOTVjNzNmZWVlMzAyMWVkYmQyZTFlYTA4
MzEzOC4uOGRjZDQyYTlkYmMzMTRkNzg0YmFhZDM0YWM5ZTc4ZjZlZTk0Yzc4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktp
dFdlYlBhZ2VQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2VQcml2YXRlLmgKQEAgLTI2LDUgKzI2LDYgQEAK
IAogV2ViS2l0V2ViUGFnZSogd2Via2l0V2ViUGFnZUNyZWF0ZShXZWJLaXQ6OldlYlBhZ2UqKTsK
IHZvaWQgd2Via2l0V2ViUGFnZURpZFJlY2VpdmVNZXNzYWdlKFdlYktpdFdlYlBhZ2UqLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6OkRpY3Rpb25hcnkmIG1lc3NhZ2UpOworV2ViS2l0
OjpXZWJQYWdlKiB3ZWJraXRXZWJQYWdlR2V0UGFnZShXZWJLaXRXZWJQYWdlKik7CiAKICNlbmRp
ZiAvLyBXZWJLaXRXZWJQYWdlUHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Via2l0LXdlYi1leHRlbnNpb24uaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay93ZWJraXQt
d2ViLWV4dGVuc2lvbi5oCmluZGV4IDZmMTFiY2YyNjQ1YWU0ZWQ1NDBiMjYyNjA1YjJlZjYwOWM1
YmI1YzcuLjFjNzQ2ZGI1YmQ5NTQ2N2Q1Y2RhNGNmYzE4NzNjM2EwY2VkMGJkMzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay93ZWJr
aXQtd2ViLWV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay93ZWJraXQtd2ViLWV4dGVuc2lvbi5oCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVUklSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXRVUklSZXNwb25zZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VmVyc2lvbi5o
PgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViRWRpdG9yLmg+CiAjaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXRXZWJFeHRlbnNpb24uaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkhpdFRl
c3RSZXN1bHQuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlBhZ2UuaD4KZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxODU5NTNjY2E0Y2Jk
NWNmZDFhMjcxZGFkMDRhYjA2ZDkwMjU5YWNjLi41MGFiYTE3YjI1Zjg1Nzg4MzAxZTgzOWNlNDdl
NjdjZmFhN2U3ZWY1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTUtMDUtMTggIFRvbWFzIFBvcGVsYSAgPHRwb3Bl
bGFAcmVkaGF0LmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgc2VsZWN0aW9uLWNoYW5nZWQgc2ln
bmFsIHRvIHRoZSBXZWJLaXQyIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM3MTE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIGEgbmV3IFdlYlByb2Nlc3MgdGVzdCBUZXN0RWRpdG9yIHRoYXQg
aXMgdGVzdGluZyB0aGUgV2ViS2l0V2ViRWRpdG9yCisgICAgICAgIChuYW1lbHkgc2VsZWN0aW9u
LWNoYW5nZWQgc2lnbmFsKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJHdGsvRWRpdG9yVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0V2ViRWRpdG9yVGVz
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdFdlYkVkaXRvclRlc3Q6OnNlbGVjdGlvbkNoYW5n
ZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXRXZWJFZGl0b3JUZXN0Ojp0ZXN0U2VsZWN0aW9u
Q2hhbmdlZCk6CisgICAgICAgIChyZWdpc3RlclRlc3RzKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdEVkaXRvci5jcHA6IEFkZGVkLgorICAgICAgICAodGVz
dFdlYktpdFdlYkVkaXRvclNlbGVjdGlvbkNoYW5nZWQpOgorICAgICAgICAoYmVmb3JlQWxsKToK
KyAgICAgICAgKGFmdGVyQWxsKToKKwogMjAxNS0wNS0xMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4dCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4dAppbmRleCA3
MmVkNDVkMWM2YzUwZGVkZjU4ZGM1OGIyMDM0Yzg3ZTBiZGFkZjRmLi44MWJkMzU2ZWM0MWI4YTZi
OGI5YzFkMDM4ZDZhYjc5YWYwZjJhYjYyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlzdHMudHh0CkBAIC04Niw3ICs4Niw3IEBAIG1hY3Jv
KEFERF9XSzJfVEVTVCB0ZXN0X25hbWUpCiBlbmRtYWNybygpCiAKIEFERF9XSzJfVEVTVF9XRUJf
RVhURU5TSU9OKFdlYkV4dGVuc2lvblRlc3QgV2ViRXh0ZW5zaW9uVGVzdC5jcHApCi1BRERfV0sy
X1RFU1RfV0VCX0VYVEVOU0lPTihXZWJQcm9jZXNzVGVzdCBET01Ob2RlVGVzdC5jcHAgRE9NTm9k
ZUZpbHRlclRlc3QuY3BwIERPTVhQYXRoTlNSZXNvbHZlclRlc3QuY3BwIEZyYW1lVGVzdC5jcHAg
V2ViUHJvY2Vzc1Rlc3QuY3BwKQorQUREX1dLMl9URVNUX1dFQl9FWFRFTlNJT04oV2ViUHJvY2Vz
c1Rlc3QgRE9NTm9kZVRlc3QuY3BwIERPTU5vZGVGaWx0ZXJUZXN0LmNwcCBET01YUGF0aE5TUmVz
b2x2ZXJUZXN0LmNwcCBGcmFtZVRlc3QuY3BwIFdlYlByb2Nlc3NUZXN0LmNwcCBFZGl0b3JUZXN0
LmNwcCkKIAogQUREX1dLMl9URVNUKEluc3BlY3RvclRlc3RTZXJ2ZXIgSW5zcGVjdG9yVGVzdFNl
cnZlci5jcHApCiBBRERfV0syX1RFU1QoVGVzdEF1dGhlbnRpY2F0aW9uIFRlc3RBdXRoZW50aWNh
dGlvbi5jcHApCkBAIC0xMTYsNiArMTE2LDcgQEAgQUREX1dLMl9URVNUKFRlc3RXZWJWaWV3RWRp
dG9yIFRlc3RXZWJWaWV3RWRpdG9yLmNwcCkKIEFERF9XSzJfVEVTVChUZXN0V2ViS2l0V2ViQ29u
dGV4dCBUZXN0V2ViS2l0V2ViQ29udGV4dC5jcHApCiBBRERfV0syX1RFU1QoVGVzdFdlYktpdFdl
YlZpZXcgVGVzdFdlYktpdFdlYlZpZXcuY3BwKQogQUREX1dLMl9URVNUKFRlc3RXZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIgVGVzdFdlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHApCitBRERfV0sy
X1RFU1QoVGVzdEVkaXRvciBUZXN0RWRpdG9yLmNwcCkKIAogaWYgKEFUU1BJX0ZPVU5EKQogICAg
IEFERF9XSzJfVEVTVChBY2Nlc3NpYmlsaXR5VGVzdFNlcnZlciBBY2Nlc3NpYmlsaXR5VGVzdFNl
cnZlci5jcHApCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJH
dGsvRWRpdG9yVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
RWRpdG9yVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2RkOWI3ODJjYWM2MmM4NjMyNjk5YTYzOWM2NTcy
ZDViY2I0MTZkMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mkd0ay9FZGl0b3JUZXN0LmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IFJlZCBIYXQgSW5jLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRl
ICJXZWJQcm9jZXNzVGVzdC5oIgorI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0LXdlYi1leHRlbnNp
b24uaD4KKworY2xhc3MgV2ViS2l0V2ViRWRpdG9yVGVzdCA6IHB1YmxpYyBXZWJQcm9jZXNzVGVz
dCB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4g
Y3JlYXRlKCkgeyByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PihuZXcgV2Vi
S2l0V2ViRWRpdG9yVGVzdCgpKTsgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyB2b2lkIHNlbGVj
dGlvbkNoYW5nZWRDYWxsYmFjayhXZWJLaXRXZWJFZGl0b3IqIGVkaXRvciwgYm9vbCogcmV0VmFs
KQorICAgIHsKKyAgICAgICAgKnJldFZhbCA9IHRydWU7CisgICAgfQorCisgICAgdm9pZCB0ZXN0
U2VsZWN0aW9uQ2hhbmdlZChXZWJLaXRXZWJQYWdlKiBwYWdlKQorICAgIHsKKyAgICAgICAgV2Vi
S2l0RE9NRG9jdW1lbnQqIGRvY3VtZW50ID0gd2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1l
bnQocGFnZSk7CisKKyAgICAgICAgd2Via2l0X2RvbV9kb2N1bWVudF9leGVjX2NvbW1hbmQoZG9j
dW1lbnQsICJTZWxlY3RBbGwiLCBmYWxzZSwgIiIpOworICAgICAgICB3ZWJraXRfZG9tX2RvY3Vt
ZW50X2V4ZWNfY29tbWFuZChkb2N1bWVudCwgIlVuc2VsZWN0IiwgZmFsc2UsICIiKTsKKyAgICB9
CisKKyAgICBib29sIHJ1blRlc3QoY29uc3QgY2hhciogdGVzdE5hbWUsIFdlYktpdFdlYlBhZ2Uq
IHBhZ2UpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIXN0cmNtcCh0ZXN0TmFtZSwgInNl
bGVjdGlvbi1jaGFuZ2VkIikpIHsKKyAgICAgICAgICAgIGJvb2wgcmV0VmFsID0gZmFsc2U7CisK
KyAgICAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2Via2l0X3dlYl9wYWdlX2dldF9lZGl0b3Io
cGFnZSksICJzZWxlY3Rpb24tY2hhbmdlZCIsIEdfQ0FMTEJBQ0soc2VsZWN0aW9uQ2hhbmdlZENh
bGxiYWNrKSwgJnJldFZhbCk7CisgICAgICAgICAgICB0ZXN0U2VsZWN0aW9uQ2hhbmdlZChwYWdl
KTsKKworICAgICAgICAgICAgcmV0dXJuIHJldFZhbDsKKyAgICAgICAgfQorCisgICAgICAgIGdf
YXNzZXJ0X25vdF9yZWFjaGVkKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9Owor
CitzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fKChjb25zdHJ1Y3RvcikpIHJlZ2lzdGVyVGVzdHMo
KQoreworICAgIFJFR0lTVEVSX1RFU1QoV2ViS2l0V2ViRWRpdG9yVGVzdCwgIldlYktpdFdlYkVk
aXRvci9zZWxlY3Rpb24tY2hhbmdlZCIpOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RFZGl0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RFZGl0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjNDI5ZDRjMzgw
NGFjYjRmNmI3MWIwMjM4MjM2MDIwYzM3NDU4MzMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdEVkaXRvci5jcHAKQEAgLTAsMCArMSw0
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBSZWQgSGF0IEluYy4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2luY2x1ZGUgIldlYlZpZXdUZXN0LmgiCisjaW5jbHVkZSA8Z3RrL2d0ay5o
PgorI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0Mi5oPgorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0
V2ViRWRpdG9yU2VsZWN0aW9uQ2hhbmdlZChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKK3sKKyAgICBzdGF0aWMgY29uc3QgZ2NoYXIqIHRlc3RIVE1MID0gIjxodG1sPjxib2R5PkFs
bCB3b3JrIGFuZCBubyBwbGF5IG1ha2UgSmFjayBhIGR1bGwgYm95LjwvYm9keT48L2h0bWw+IjsK
KyAgICB0ZXN0LT5sb2FkSHRtbCh0ZXN0SFRNTCwgbnVsbHB0cik7CisgICAgdGVzdC0+d2FpdFVu
dGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICBnX2Fzc2VydCh0ZXN0LT5ydW5XZWJQcm9jZXNzVGVz
dCgiV2ViS2l0V2ViRWRpdG9yIiwgInNlbGVjdGlvbi1jaGFuZ2VkIikpOworfQorCit2b2lkIGJl
Zm9yZUFsbCgpCit7CisgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViRWRpdG9yIiwgInNl
bGVjdGlvbi1jaGFuZ2VkIiwgdGVzdFdlYktpdFdlYkVkaXRvclNlbGVjdGlvbkNoYW5nZWQpOwor
fQorCit2b2lkIGFmdGVyQWxsKCkKK3sKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256838</attachid>
            <date>2015-07-15 07:10:21 -0700</date>
            <delta_ts>2015-07-20 01:20:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137116-20150715160913.patch</filename>
            <type>text/plain</type>
            <size>26369</size>
            <attacher name="Tomas Popela">tpopela</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2NzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMzk1Yzc0NWQzOTZiYmE0
ZjgzOGQ5YWU3NmUwNDgzZWQwOWQ2MzI0My4uNThlYjEwNTgzZDk0OTI3ODVlNGVkOGNiNTAyYWU2
YWFjOGFmZTAzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE1LTA3LTE1ICBUb21h
cyBQb3BlbGEgIDx0cG9wZWxhQHJlZGhhdC5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIHNlbGVj
dGlvbi1jaGFuZ2VkIHNpZ25hbCB0byB0aGUgV2ViS2l0MiBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzExNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBvYmplY3QgV2ViS2l0V2Vi
RWRpdG9yIHdoZXJlIHRoZSBlZGl0aW5nIGNhcGFiaWxpdGllcyBvZiBhCisgICAgICAgIFdlYlBh
Z2Ugd2lsbCBiZSBncm91cGVkIGFuZCBleHBvc2VkLiBBZGQgdGhlIHNlbGVjdGlvbi1jaGFuZ2Vk
IHNpZ25hbAorICAgICAgICB0aGVyZSAod2UgdXNlZCB0aGUgc2FtZSBuYW1lIGFzIGluIFdLMSBB
UEkpLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkVkaXRvci5jcHA6IEFkZGVk
LgorICAgICAgICAoZGlkQ2hhbmdlU2VsZWN0aW9uKToKKyAgICAgICAgKHdlYmtpdFdlYkVkaXRv
ckNyZWF0ZSk6CisgICAgICAgICh3ZWJraXRfd2ViX2VkaXRvcl9nZXRfcGFnZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkVkaXRvci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0
V2ViRWRpdG9yUHJpdmF0ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZVByaXZhdGUuaC4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHA6Cisg
ICAgICAgICh3ZWJraXRXZWJQYWdlR2V0UGFnZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3BhZ2Vf
Z2V0X2VkaXRvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L1dlYktpdFdlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvV2ViS2l0V2ViUGFnZVByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvd2Via2l0LXdlYi1leHRlbnNpb24uaDoKKwogMjAxNS0wNy0xMSAg
TmlraXRhIFZhc2lseWV2ICA8bnZhc2lseWV2QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBJbnNwZWN0b3Igc2hvdWxkIGJlIGFibGUgdG8gYmUgZG9ja2VkIHRvIHRoZSBib3R0
b20gb2YgYSBuYXJyb3cgd2luZG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDQ2MTE4
M2JmZmZjZDAxNmM5NzdjMGMzMWY3YTQ0ODM4ZjJmMjg5NjIuLjAwNDRmNjVmNWYwYTRhODkzMGYw
ZmU0OGZkZDg2ZDA4MWRlMDgyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
R1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0zMDks
NiArMzA5LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0RnJhbWUuY3BwCiAgICAgV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFNjcmlwdFdvcmxkLmNwcAorICAgIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFZGl0b3IuY3BwCiAgICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKICAgICBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViSGl0VGVzdFJlc3VsdC5j
cHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5j
cHAKQEAgLTQxMSw2ICs0MTIsNyBAQCBzZXQoV2ViS2l0MkdUS19JTlNUQUxMRURfSEVBREVSUwog
c2V0KFdlYktpdDJXZWJFeHRlbnNpb25fSU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVDJf
RElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0RnJhbWUuaAogICAg
ICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRT
Y3JpcHRXb3JsZC5oCisgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL1dlYktpdFdlYkVkaXRvci5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5oCiAgICAgJHtXRUJL
SVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkhpdFRl
c3RSZXN1bHQuaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9XZWJLaXRXZWJQYWdlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQK
aW5kZXggY2Q4NzBhNTU5YjFiNzA3ZTdlYWM3MTE2MWM5NDZhNDQ5M2FhYThhZi4uNjdmYjNiMjI4
MzMyMzc5YWZmNjNiMjFlZThhOTU5YzVlZWY0YWNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1z
ZWN0aW9ucy50eHQKQEAgLTEyMDIsNiArMTIwMiw3IEBAIHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9t
X2RvY3VtZW50CiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2lkCiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X3Vy
aQogd2Via2l0X3dlYl9wYWdlX2dldF9tYWluX2ZyYW1lCit3ZWJraXRfd2ViX3BhZ2VfZ2V0X2Vk
aXRvcgogCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIFdlYktpdFdlYlBhZ2VDbGFzcwpAQCAtMTIx
OCw2ICsxMjE5LDI1IEBAIHdlYmtpdF93ZWJfcGFnZV9nZXRfdHlwZQogPC9TRUNUSU9OPgogCiA8
U0VDVElPTj4KKzxGSUxFPldlYktpdFdlYkVkaXRvcjwvRklMRT4KK1dlYktpdFdlYkVkaXRvcgor
d2Via2l0X3dlYl9lZGl0b3JfZ2V0X3BhZ2UKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXZWJL
aXRXZWJFZGl0b3JDbGFzcworV0VCS0lUX1RZUEVfV0VCX0VESVRPUgorV0VCS0lUX1dFQl9FRElU
T1IKK1dFQktJVF9JU19XRUJfRURJVE9SCitXRUJLSVRfV0VCX0VESVRPUl9DTEFTUworV0VCS0lU
X0lTX1dFQl9FRElUT1JfQ0xBU1MKK1dFQktJVF9XRUJfRURJVE9SX0dFVF9DTEFTUworCis8U1VC
U0VDVElPTiBQcml2YXRlPgorV2ViS2l0V2ViRWRpdG9yUHJpdmF0ZQord2Via2l0X3dlYl9lZGl0
b3JfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRGcmFtZTwv
RklMRT4KIFdlYktpdEZyYW1lCiB3ZWJraXRfZnJhbWVfaXNfbWFpbl9mcmFtZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktp
dFdlYkVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvV2ViS2l0V2ViRWRpdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTM2NTNkZTdmYTJkN2Fk
NzgzZjk4MTk4NzFhZGVlNTA3NzRmZjc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkVkaXRvci5jcHAK
QEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgUmVkIEhhdCBJbmMu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIsMSBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViRWRpdG9yLmgiCisKKyNp
bmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViRWRpdG9yUHJpdmF0
ZS5oIgorI2luY2x1ZGUgIldlYktpdFdlYlBhZ2VQcml2YXRlLmgiCisjaW5jbHVkZSAiV0tCdW5k
bGVBUElDYXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRXZWJFZGl0b3IKKyAqIEBTaG9ydF9k
ZXNjcmlwdGlvbjogQWNjZXNzIHRvIGVkaXRpbmcgY2FwYWJpbGl0aWVzIG9mIGEgI1dlYktpdFdl
YlBhZ2UKKyAqIEBUaXRsZTogV2ViS2l0V2ViRWRpdG9yCisgKiBAU2VlX2Fsc286ICNXZWJLaXRX
ZWJQYWdlCisgKgorICogVGhlIFdlYktpdFdlYkVkaXRvciBwcm92aWRlcyBhY2Nlc3MgdG8gdmFy
aW91cyBlZGl0aW5nIGNhcGFiaWxpdGllcyBvZgorICogYSAjV2ViS2l0V2ViUGFnZSBzdWNoIGFz
IGEgcG9zc2liaWxpdHkgdG8gcmVhY3QgdG8gdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGluCisgKiAj
V2ViS2l0V2ViUGFnZS4KKyAqCisgKiBTaW5jZTogMi4xMAorICovCitlbnVtIHsKKyAgICBTRUxF
Q1RJT05fQ0hBTkdFRCwKKworICAgIExBU1RfU0lHTkFMCit9OworCitzdHJ1Y3QgX1dlYktpdFdl
YkVkaXRvclByaXZhdGUgeworICAgIFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2U7Cit9OworCitzdGF0
aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CisKK1dFQktJVF9ERUZJTkVf
VFlQRShXZWJLaXRXZWJFZGl0b3IsIHdlYmtpdF93ZWJfZWRpdG9yLCBHX1RZUEVfT0JKRUNUKQor
CitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2VkaXRvcl9jbGFzc19pbml0KFdlYktpdFdlYkVkaXRv
ckNsYXNzKiBrbGFzcykKK3sKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJFZGl0b3I6OnNlbGVj
dGlvbi1jaGFuZ2VkOgorICAgICAqIEBlZGl0b3I6IHRoZSAjV2ViS2l0V2ViRWRpdG9yIG9uIHdo
aWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqCisgICAgICogVGhpcyBzaWduYWwgaXMg
ZW1pdHRlZCBmb3IgZXZlcnkgc2VsZWN0aW9uIGNoYW5nZSBpbnNpZGUgYSAjV2ViS2l0V2ViUGFn
ZQorICAgICAqIGFzIHdlbGwgYXMgZm9yIGV2ZXJ5IGNhcmV0IHBvc2l0aW9uIGNoYW5nZSBhcyB0
aGUgY2FyZXQgaXMgYSBjb2xsYXBzZWQKKyAgICAgKiBzZWxlY3Rpb24uCisgICAgICoKKyAgICAg
KiBTaW5jZTogMi4xMAorICAgICAqLworICAgIHNpZ25hbHNbU0VMRUNUSU9OX0NIQU5HRURdID0g
Z19zaWduYWxfbmV3KAorICAgICAgICAic2VsZWN0aW9uLWNoYW5nZWQiLAorICAgICAgICBHX1RZ
UEVfRlJPTV9DTEFTUyhrbGFzcyksCisgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAg
ICAwLCBudWxscHRyLCBudWxscHRyLAorICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9f
Vk9JRCwKKyAgICAgICAgR19UWVBFX05PTkUsIDApOworfQorCitzdGF0aWMgdm9pZCBkaWRDaGFu
Z2VTZWxlY3Rpb24oV0tCdW5kbGVQYWdlUmVmLCBXS1N0cmluZ1JlZiAvKiBub3RpZmljYXRpb25O
YW1lICovLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIGdfc2lnbmFsX2VtaXQoV0VC
S0lUX1dFQl9FRElUT1IoY2xpZW50SW5mbyksIHNpZ25hbHNbU0VMRUNUSU9OX0NIQU5HRURdLCAw
KTsKK30KKworV2ViS2l0V2ViRWRpdG9yKiB3ZWJraXRXZWJFZGl0b3JDcmVhdGUoV2ViS2l0V2Vi
UGFnZSogd2ViUGFnZSkKK3sKKyAgICBXZWJLaXRXZWJFZGl0b3IqIGVkaXRvciA9IFdFQktJVF9X
RUJfRURJVE9SKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfRURJVE9SLCBudWxscHRyKSk7
CisgICAgZWRpdG9yLT5wcml2LT53ZWJQYWdlID0gd2ViUGFnZTsKKworICAgIFdLQnVuZGxlUGFn
ZUVkaXRvckNsaWVudFYwIGVkaXRvckNsaWVudCA9IHsKKyAgICAgICAgeworICAgICAgICAgICAg
MCwgLy8gdmVyc2lvbgorICAgICAgICAgICAgZWRpdG9yLCAvLyBjbGllbnRJbmZvCisgICAgICAg
IH0sCisgICAgICAgIG51bGxwdHIsIC8vIHNob3VsZEJlZ2luRWRpdGluZworICAgICAgICBudWxs
cHRyLCAvLyBzaG91bGRFbmRFZGl0aW5nCisgICAgICAgIG51bGxwdHIsIC8vIHNob3VsZEluc2Vy
dE5vZGUKKyAgICAgICAgbnVsbHB0ciwgLy8gc2hvdWxkSW5zZXJ0VGV4dAorICAgICAgICBudWxs
cHRyLCAvLyBzaG91bGREZWxldGVSYW5nZQorICAgICAgICBudWxscHRyLCAvLyBzaG91bGRDaGFu
Z2VTZWxlY3RlZFJhbmdlCisgICAgICAgIG51bGxwdHIsIC8vIHNob3VsZEFwcGx5U3R5bGUKKyAg
ICAgICAgbnVsbHB0ciwgLy8gZGlkQmVnaW5FZGl0aW5nCisgICAgICAgIG51bGxwdHIsIC8vIGRp
ZEVuZEVkaXRpbmcKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkQ2hhbmdlCisgICAgICAgIGRpZENo
YW5nZVNlbGVjdGlvbgorICAgIH07CisgICAgV0tCdW5kbGVQYWdlU2V0RWRpdG9yQ2xpZW50KHRv
QVBJKHdlYmtpdFdlYlBhZ2VHZXRQYWdlKHdlYlBhZ2UpKSwgJmVkaXRvckNsaWVudC5iYXNlKTsK
KworICAgIHJldHVybiBlZGl0b3I7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9lZGl0b3JfZ2V0
X3BhZ2U6CisgKiBAZWRpdG9yOiBhICNXZWJLaXRXZWJFZGl0b3IKKyAqCisgKiBHZXRzIHRoZSAj
V2ViS2l0V2ViUGFnZSB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgI1dlYktpdFdlYkVkaXRv
ciB0aGF0IGNhbgorICogYmUgdXNlZCB0byBhY2Nlc3MgdGhlICNXZWJLaXRET01Eb2N1bWVudCBj
dXJyZW50bHkgbG9hZGVkIGludG8gaXQuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUp
OiB0aGUgYXNzb2NpYXRlZCAjV2ViS2l0V2ViUGFnZQorICoKKyAqIFNpbmNlOiAyLjEwCisgKi8K
K1dlYktpdFdlYlBhZ2UqIHdlYmtpdF93ZWJfZWRpdG9yX2dldF9wYWdlKFdlYktpdFdlYkVkaXRv
ciogZWRpdG9yKQoreworICAgIHJldHVybiBlZGl0b3ItPnByaXYtPndlYlBhZ2U7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
V2ViS2l0V2ViRWRpdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvV2ViS2l0V2ViRWRpdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNmZTlmMDA4MmFmNjkz
YzJiNDdlZmE3ODM2MjNlMDQwNzRkNzhmMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFZGl0b3IuaApA
QCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFJlZCBIYXQgSW5jLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLDEgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2lmICFkZWZpbmVkKF9fV0VCS0lUX1dFQl9FWFRFTlNJT05fSF9JTlNJREVfXykgJiYgIWRlZmlu
ZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQtd2Vi
LWV4dGVuc2lvbi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5k
ZWYgV2ViS2l0V2ViRWRpdG9yX2gKKyNkZWZpbmUgV2ViS2l0V2ViRWRpdG9yX2gKKworI2luY2x1
ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+Cisj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJQYWdlLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2Rl
ZmluZSBXRUJLSVRfVFlQRV9XRUJfRURJVE9SICAgICAgICAgICAgICAgKHdlYmtpdF93ZWJfZWRp
dG9yX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfRURJVE9SKG9iaikgICAgICAgICAg
ICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9F
RElUT1IsIFdlYktpdFdlYkVkaXRvcikpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfRURJVE9SKG9i
aikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9U
WVBFX1dFQl9FRElUT1IpKQorI2RlZmluZSBXRUJLSVRfV0VCX0VESVRPUl9DTEFTUyhrbGFzcykg
ICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJf
RURJVE9SLCBXZWJLaXRXZWJFZGl0b3JDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfRURJ
VE9SX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdF
QktJVF9UWVBFX1dFQl9FRElUT1IpKQorI2RlZmluZSBXRUJLSVRfV0VCX0VESVRPUl9HRVRfQ0xB
U1Mob2JqKSAgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQ
RV9XRUJfRURJVE9SLCBXZWJLaXRXZWJFZGl0b3JDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9X
ZWJLaXRXZWJFZGl0b3IgICAgICAgIFdlYktpdFdlYkVkaXRvcjsKK3R5cGVkZWYgc3RydWN0IF9X
ZWJLaXRXZWJFZGl0b3JDbGFzcyAgIFdlYktpdFdlYkVkaXRvckNsYXNzOwordHlwZWRlZiBzdHJ1
Y3QgX1dlYktpdFdlYkVkaXRvclByaXZhdGUgV2ViS2l0V2ViRWRpdG9yUHJpdmF0ZTsKKworLyog
Rm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8KK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJQYWdlICAg
ICAgICAgIFdlYktpdFdlYlBhZ2U7CisKK3N0cnVjdCBfV2ViS2l0V2ViRWRpdG9yIHsKKyAgICBH
T2JqZWN0IHBhcmVudDsKKworICAgIFdlYktpdFdlYkVkaXRvclByaXZhdGUgKnByaXY7Cit9Owor
CitzdHJ1Y3QgX1dlYktpdFdlYkVkaXRvckNsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50
X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dlYl9lZGl0b3JfZ2V0X3R5
cGUgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFdlYlBhZ2UgKgord2Via2l0X3dlYl9lZGl0
b3JfZ2V0X3BhZ2UgKFdlYktpdFdlYkVkaXRvciAqZWRpdG9yKTsKKworR19FTkRfREVDTFMKKwor
I2VuZGlmIC8vIFdlYktpdFdlYkVkaXRvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRWRpdG9yUHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktp
dFdlYkVkaXRvclByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODE1OWViMjA4MDNhMWVjMTkyNTBiZTlm
MDc1ZTE2MGRlYTFiYTMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkVkaXRvclByaXZhdGUuaApAQCAt
MCwwICsxLDI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFJlZCBIYXQgSW5jLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZu
ZGVmIFdlYktpdFdlYkVkaXRvclByaXZhdGVfaAorI2RlZmluZSBXZWJLaXRXZWJFZGl0b3JQcml2
YXRlX2gKKworI2luY2x1ZGUgIldlYktpdFdlYkVkaXRvci5oIgorI2luY2x1ZGUgIldlYktpdFdl
YlBhZ2UuaCIKKworV2ViS2l0V2ViRWRpdG9yKiB3ZWJraXRXZWJFZGl0b3JDcmVhdGUoV2ViS2l0
V2ViUGFnZSopOworCisjZW5kaWYgLy8gV2ViS2l0V2ViRWRpdG9yX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9XZWJLaXRXZWJQYWdlLmNwcAppbmRleCA3NDcyNjE4ZjhhODBmYjNkYjliY2MxZjA3NDg5MWEx
N2QwMTAyODhmLi4wOTMxY2JmMDA0NzYxOGVmZDBiYWYxMGY2YjU4NDVmMDliODJhYzIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
V2ViS2l0V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5j
bHVkZSAiV2ViS2l0U2NyaXB0V29ybGRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVx
dWVzdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVUklSZXNwb25zZVByaXZhdGUuaCIKKyNp
bmNsdWRlICJXZWJLaXRXZWJFZGl0b3JQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViSGl0
VGVzdFJlc3VsdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJQYWdlUHJpdmF0ZS5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKQEAgLTcwLDYgKzcxLDggQEAgc3RydWN0IF9XZWJLaXRX
ZWJQYWdlUHJpdmF0ZSB7CiAgICAgV2ViUGFnZSogd2ViUGFnZTsKIAogICAgIENTdHJpbmcgdXJp
OworCisgICAgR1JlZlB0cjxXZWJLaXRXZWJFZGl0b3I+IHdlYkVkaXRvcjsKIH07CiAKIHN0YXRp
YyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKQEAgLTM5NCw2ICszOTcsMTEg
QEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9wYWdlX2NsYXNzX2luaXQoV2ViS2l0V2ViUGFnZUNs
YXNzKiBrbGFzcykKICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX0hJVF9URVNUX1JFU1VMVCk7CiB9
CiAKK1dlYlBhZ2UqIHdlYmtpdFdlYlBhZ2VHZXRQYWdlKFdlYktpdFdlYlBhZ2UgKndlYlBhZ2Up
Cit7CisgICAgcmV0dXJuIHdlYlBhZ2UtPnByaXYtPndlYlBhZ2U7Cit9CisKIFdlYktpdFdlYlBh
Z2UqIHdlYmtpdFdlYlBhZ2VDcmVhdGUoV2ViUGFnZSogd2ViUGFnZSkKIHsKICAgICBXZWJLaXRX
ZWJQYWdlKiBwYWdlID0gV0VCS0lUX1dFQl9QQUdFKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9X
RUJfUEFHRSwgTlVMTCkpOwpAQCAtNTc1LDMgKzU4MywyMyBAQCBXZWJLaXRGcmFtZSogd2Via2l0
X3dlYl9wYWdlX2dldF9tYWluX2ZyYW1lKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UpCiAKICAgICBy
ZXR1cm4gd2Via2l0RnJhbWVHZXRPckNyZWF0ZSh3ZWJQYWdlLT5wcml2LT53ZWJQYWdlLT5tYWlu
V2ViRnJhbWUoKSk7CiB9CisKKy8qKgorICogd2Via2l0X3dlYl9wYWdlX2dldF9lZGl0b3I6Cisg
KiBAd2ViX3BhZ2U6IGEgI1dlYktpdFdlYlBhZ2UKKyAqCisgKiBHZXRzIHRoZSAjV2ViS2l0V2Vi
RWRpdG9yIG9mIGEgI1dlYktpdFdlYlBhZ2UuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5v
bmUpOiB0aGUgI1dlYktpdFdlYkVkaXRvcgorICoKKyAqIFNpbmNlOiAyLjEwCisgKi8KK1dlYktp
dFdlYkVkaXRvciogd2Via2l0X3dlYl9wYWdlX2dldF9lZGl0b3IoV2ViS2l0V2ViUGFnZSogd2Vi
UGFnZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1BBR0Uod2Vi
UGFnZSksIG51bGxwdHIpOworCisgICAgaWYgKCF3ZWJQYWdlLT5wcml2LT53ZWJFZGl0b3IpCisg
ICAgICAgIHdlYlBhZ2UtPnByaXYtPndlYkVkaXRvciA9IGFkb3B0R1JlZih3ZWJraXRXZWJFZGl0
b3JDcmVhdGUod2ViUGFnZSkpOworCisgICAgcmV0dXJuIHdlYlBhZ2UtPnByaXYtPndlYkVkaXRv
ci5nZXQoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5oCmluZGV4IDM3NDU1Mjg2
ZjVmMTk5ZjQ2NmQ2YWVlYWY1MmEwMTQ0ZDE3ODFjNGUuLjAzM2IzY2Q4YmYwYmI5NDZjYWQ2ZDA0
MDdjZTRjNzc4OThlOTRjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuaApAQCAt
MjcsNiArMjcsNyBAQAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXREZWZpbmVzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGcmFtZS5oPgorI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViRWRpdG9yLmg+CiAjaW5jbHVkZSA8d2Via2l0ZG9tL3dl
YmtpdGRvbS5oPgogCiBHX0JFR0lOX0RFQ0xTCkBAIC00Miw2ICs0Myw5IEBAIHR5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRXZWJQYWdlICAgICAgICBXZWJLaXRXZWJQYWdlOwogdHlwZWRlZiBzdHJ1Y3Qg
X1dlYktpdFdlYlBhZ2VDbGFzcyAgIFdlYktpdFdlYlBhZ2VDbGFzczsKIHR5cGVkZWYgc3RydWN0
IF9XZWJLaXRXZWJQYWdlUHJpdmF0ZSBXZWJLaXRXZWJQYWdlUHJpdmF0ZTsKIAorLyogRm9yd2Fy
ZCBkZWNsYXJhdGlvbnMgKi8KK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJFZGl0b3IgICAgICBX
ZWJLaXRXZWJFZGl0b3I7CisKIHN0cnVjdCBfV2ViS2l0V2ViUGFnZSB7CiAgICAgR09iamVjdCBw
YXJlbnQ7CiAKQEAgLTY3LDYgKzcxLDkgQEAgd2Via2l0X3dlYl9wYWdlX2dldF91cmkgICAgICAg
ICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKIFdFQktJVF9BUEkgV2ViS2l0RnJhbWUgKgog
d2Via2l0X3dlYl9wYWdlX2dldF9tYWluX2ZyYW1lICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdl
KTsKIAorV0VCS0lUX0FQSSBXZWJLaXRXZWJFZGl0b3IgKgord2Via2l0X3dlYl9wYWdlX2dldF9l
ZGl0b3IgICAgICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKKwogR19FTkRfREVDTFMKIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlUHJpdmF0ZS5oCmluZGV4
IDQ2YThkMjZjODE5Yzk1YzczZmVlZTMwMjFlZGJkMmUxZWEwODMxMzguLjhkY2Q0MmE5ZGJjMzE0
ZDc4NGJhYWQzNGFjOWU3OGY2ZWU5NGM3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlUHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJL
aXRXZWJQYWdlUHJpdmF0ZS5oCkBAIC0yNiw1ICsyNiw2IEBACiAKIFdlYktpdFdlYlBhZ2UqIHdl
YmtpdFdlYlBhZ2VDcmVhdGUoV2ViS2l0OjpXZWJQYWdlKik7CiB2b2lkIHdlYmtpdFdlYlBhZ2VE
aWRSZWNlaXZlTWVzc2FnZShXZWJLaXRXZWJQYWdlKiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFt
ZSwgQVBJOjpEaWN0aW9uYXJ5JiBtZXNzYWdlKTsKK1dlYktpdDo6V2ViUGFnZSogd2Via2l0V2Vi
UGFnZUdldFBhZ2UoV2ViS2l0V2ViUGFnZSopOwogCiAjZW5kaWYgLy8gV2ViS2l0V2ViUGFnZVBy
aXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Via2l0LXdlYi1leHRlbnNpb24uaAppbmRl
eCA2ZjExYmNmMjY0NWFlNGVkNTQwYjI2MjYwNWIyZWY2MDljNWJiNWM3Li4xYzc0NmRiNWJkOTU0
NjdkNWNkYTRjZmMxODczYzNhMGNlZDBiZDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Via2l0LXdlYi1leHRlbnNpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Vi
a2l0LXdlYi1leHRlbnNpb24uaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0VVJJUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VVJJUmVzcG9uc2Uu
aD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFZlcnNpb24uaD4KKyNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdFdlYkVkaXRvci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViRXh0ZW5zaW9u
Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJIaXRUZXN0UmVzdWx0Lmg+CiAjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXRXZWJQYWdlLmg+CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDBjOTc1YzUzNmY3ZDA0NjQzMmVkNTk4NTBmMmQxZmY5
ZmMzYzU0My4uZjU3OTA3ZTZmYzc4OWRmM2E1ZjE0NmY0N2E0Y2JiM2VkNmU3NTVhMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4
IEBACisyMDE1LTA3LTE1ICBUb21hcyBQb3BlbGEgIDx0cG9wZWxhQHJlZGhhdC5jb20+CisKKyAg
ICAgICAgW0dUS10gQWRkIHNlbGVjdGlvbi1jaGFuZ2VkIHNpZ25hbCB0byB0aGUgV2ViS2l0MiBB
UEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzEx
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBh
IG5ldyBXZWJQcm9jZXNzIHRlc3QgVGVzdEVkaXRvciB0aGF0IGlzIHRlc3RpbmcgdGhlIFdlYktp
dFdlYkVkaXRvcgorICAgICAgICAobmFtZWx5IHRoZSBzZWxlY3Rpb24tY2hhbmdlZCBzaWduYWwp
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9FZGl0b3JUZXN0
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXRXZWJFZGl0b3JUZXN0OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0V2ViRWRpdG9yVGVzdDo6c2VsZWN0aW9uQ2hhbmdlZENhbGxiYWNrKToKKyAg
ICAgICAgKFdlYktpdFdlYkVkaXRvclRlc3Q6OnRlc3RTZWxlY3Rpb25TZWxlY3RBbGwpOgorICAg
ICAgICAoV2ViS2l0V2ViRWRpdG9yVGVzdDo6dGVzdFNlbGVjdGlvbkNvbGxhcHNlKToKKyAgICAg
ICAgKFdlYktpdFdlYkVkaXRvclRlc3Q6OnRlc3RTZWxlY3Rpb25Nb2RpZnlNb3ZlKToKKyAgICAg
ICAgKFdlYktpdFdlYkVkaXRvclRlc3Q6OnRlc3RTZWxlY3Rpb25Nb2RpZnlFeHRlbmQpOgorICAg
ICAgICAoV2ViS2l0V2ViRWRpdG9yVGVzdDo6dGVzdFNlbGVjdGlvblVuc2VsZWN0KToKKyAgICAg
ICAgKHJlZ2lzdGVyVGVzdHMpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9UZXN0RWRpdG9yLmNwcDogQWRkZWQuCisgICAgICAgICh0ZXN0V2ViS2l0V2ViRWRpdG9y
U2VsZWN0aW9uQ2hhbmdlZCk6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAoYWZ0ZXJB
bGwpOgorCiAyMDE1LTA3LTEwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIFtNYWNdIFVuYWJsZSB0byBkaXNtaXNzIGNvbnRleHQgbWVudSBkdXJpbmcgdGVz
dCBydW5zCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
Q01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01h
a2VMaXN0cy50eHQKaW5kZXggNTAzNmQ0M2FlYmY4NmM3NzJkZjZkYmVmZDU4MmI0YTY4MDk1Y2U4
Ni4uMWJiZjUyZDljZmY1MDlhM2VjMWQ0ZDA4NDA1ZTI0ZjgyZDYxZGY1OCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlzdHMudHh0CisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4dApAQCAt
ODksNyArODksNyBAQCBtYWNybyhBRERfV0syX1RFU1QgdGVzdF9uYW1lKQogZW5kbWFjcm8oKQog
CiBBRERfV0syX1RFU1RfV0VCX0VYVEVOU0lPTihXZWJFeHRlbnNpb25UZXN0IFdlYkV4dGVuc2lv
blRlc3QuY3BwKQotQUREX1dLMl9URVNUX1dFQl9FWFRFTlNJT04oV2ViUHJvY2Vzc1Rlc3QgRE9N
Tm9kZVRlc3QuY3BwIERPTU5vZGVGaWx0ZXJUZXN0LmNwcCBET01YUGF0aE5TUmVzb2x2ZXJUZXN0
LmNwcCBGcmFtZVRlc3QuY3BwIFdlYlByb2Nlc3NUZXN0LmNwcCkKK0FERF9XSzJfVEVTVF9XRUJf
RVhURU5TSU9OKFdlYlByb2Nlc3NUZXN0IERPTU5vZGVUZXN0LmNwcCBET01Ob2RlRmlsdGVyVGVz
dC5jcHAgRE9NWFBhdGhOU1Jlc29sdmVyVGVzdC5jcHAgRnJhbWVUZXN0LmNwcCBXZWJQcm9jZXNz
VGVzdC5jcHAgRWRpdG9yVGVzdC5jcHApCiAKIEFERF9XSzJfVEVTVChJbnNwZWN0b3JUZXN0U2Vy
dmVyIEluc3BlY3RvclRlc3RTZXJ2ZXIuY3BwKQogQUREX1dLMl9URVNUKFRlc3RBdXRoZW50aWNh
dGlvbiBUZXN0QXV0aGVudGljYXRpb24uY3BwKQpAQCAtMTE5LDYgKzExOSw3IEBAIEFERF9XSzJf
VEVTVChUZXN0V2ViVmlld0VkaXRvciBUZXN0V2ViVmlld0VkaXRvci5jcHApCiBBRERfV0syX1RF
U1QoVGVzdFdlYktpdFdlYkNvbnRleHQgVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwKQogQUREX1dL
Ml9URVNUKFRlc3RXZWJLaXRXZWJWaWV3IFRlc3RXZWJLaXRXZWJWaWV3LmNwcCkKIEFERF9XSzJf
VEVTVChUZXN0V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyIFRlc3RXZWJLaXRVc2VyQ29udGVudE1h
bmFnZXIuY3BwKQorQUREX1dLMl9URVNUKFRlc3RFZGl0b3IgVGVzdEVkaXRvci5jcHApCiAKIGlm
IChBVFNQSV9GT1VORCkKICAgICBBRERfV0syX1RFU1QoQWNjZXNzaWJpbGl0eVRlc3RTZXJ2ZXIg
QWNjZXNzaWJpbGl0eVRlc3RTZXJ2ZXIuY3BwKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyR3RrL0VkaXRvclRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyR3RrL0VkaXRvclRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5NDI0NzYxODM5
OTg3N2M4MTYwMzk5NzYwOTcyY2Y0MjM0M2E4YWQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvRWRpdG9yVGVzdC5jcHAKQEAgLTAsMCArMSwx
NDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgUmVkIEhhdCBJbmMuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2luY2x1ZGUgIldlYlByb2Nlc3NUZXN0LmgiCisjaW5jbHVkZSA8d2Via2l0
Mi93ZWJraXQtd2ViLWV4dGVuc2lvbi5oPgorCisjZGVmaW5lIFdFQktJVF9ET01fVVNFX1VOU1RB
QkxFX0FQSQorI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01ET01TZWxlY3Rpb24uaD4KKyNp
bmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NRE9NV2luZG93VW5zdGFibGUuaD4KKworY2xhc3Mg
V2ViS2l0V2ViRWRpdG9yVGVzdCA6IHB1YmxpYyBXZWJQcm9jZXNzVGVzdCB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1
cm4gc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PihuZXcgV2ViS2l0V2ViRWRpdG9yVGVz
dCgpKTsgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWRDYWxs
YmFjayhXZWJLaXRXZWJFZGl0b3IqIGVkaXRvciwgYm9vbCogcmV0VmFsKQorICAgIHsKKyAgICAg
ICAgKnJldFZhbCA9IHRydWU7CisgICAgfQorCisgICAgdm9pZCB0ZXN0U2VsZWN0aW9uU2VsZWN0
QWxsKFdlYktpdFdlYlBhZ2UqIHBhZ2UpCisgICAgeworICAgICAgICBXZWJLaXRET01Eb2N1bWVu
dCogZG9jdW1lbnQgPSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudChwYWdlKTsKKwor
ICAgICAgICB3ZWJraXRfZG9tX2RvY3VtZW50X2V4ZWNfY29tbWFuZChkb2N1bWVudCwgIlNlbGVj
dEFsbCIsIGZhbHNlLCAiIik7CisgICAgfQorCisgICAgdm9pZCB0ZXN0U2VsZWN0aW9uQ29sbGFw
c2UoV2ViS2l0V2ViUGFnZSogcGFnZSkKKyAgICB7CisgICAgICAgIFdlYktpdERPTURvY3VtZW50
KiBkb2N1bWVudDsKKyAgICAgICAgV2ViS2l0RE9NRE9NU2VsZWN0aW9uKiBkb21TZWxlY3Rpb247
CisgICAgICAgIFdlYktpdERPTURPTVdpbmRvdyogZG9tV2luZG93OworCisgICAgICAgIGRvY3Vt
ZW50ID0gd2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQocGFnZSk7CisgICAgICAgIGRv
bVdpbmRvdyA9IHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X2RlZmF1bHRfdmlldyhkb2N1bWVudCk7
CisgICAgICAgIGRvbVNlbGVjdGlvbiA9IHdlYmtpdF9kb21fZG9tX3dpbmRvd19nZXRfc2VsZWN0
aW9uKGRvbVdpbmRvdyk7CisKKyAgICAgICAgd2Via2l0X2RvbV9kb21fc2VsZWN0aW9uX2NvbGxh
cHNlX3RvX3N0YXJ0KGRvbVNlbGVjdGlvbiwgbnVsbHB0cik7CisKKyAgICAgICAgZ19vYmplY3Rf
dW5yZWYoZG9tU2VsZWN0aW9uKTsKKyAgICAgICAgZ19vYmplY3RfdW5yZWYoZG9tV2luZG93KTsK
KyAgICB9CisKKyAgICB2b2lkIHRlc3RTZWxlY3Rpb25Nb2RpZnlNb3ZlKFdlYktpdFdlYlBhZ2Uq
IHBhZ2UpCisgICAgeworICAgICAgICBXZWJLaXRET01Eb2N1bWVudCogZG9jdW1lbnQ7CisgICAg
ICAgIFdlYktpdERPTURPTVNlbGVjdGlvbiogZG9tU2VsZWN0aW9uOworICAgICAgICBXZWJLaXRE
T01ET01XaW5kb3cqIGRvbVdpbmRvdzsKKworICAgICAgICBkb2N1bWVudCA9IHdlYmtpdF93ZWJf
cGFnZV9nZXRfZG9tX2RvY3VtZW50KHBhZ2UpOworICAgICAgICBkb21XaW5kb3cgPSB3ZWJraXRf
ZG9tX2RvY3VtZW50X2dldF9kZWZhdWx0X3ZpZXcoZG9jdW1lbnQpOworICAgICAgICBkb21TZWxl
Y3Rpb24gPSB3ZWJraXRfZG9tX2RvbV93aW5kb3dfZ2V0X3NlbGVjdGlvbihkb21XaW5kb3cpOwor
CisgICAgICAgIHdlYmtpdF9kb21fZG9tX3NlbGVjdGlvbl9tb2RpZnkoZG9tU2VsZWN0aW9uLCAi
bW92ZSIsICJmb3J3YXJkIiwgImNoYXJhY3RlciIpOworCisgICAgICAgIGdfb2JqZWN0X3VucmVm
KGRvbVNlbGVjdGlvbik7CisgICAgICAgIGdfb2JqZWN0X3VucmVmKGRvbVdpbmRvdyk7CisgICAg
fQorCisgICAgdm9pZCB0ZXN0U2VsZWN0aW9uTW9kaWZ5RXh0ZW5kKFdlYktpdFdlYlBhZ2UqIHBh
Z2UpCisgICAgeworICAgICAgICBXZWJLaXRET01Eb2N1bWVudCogZG9jdW1lbnQ7CisgICAgICAg
IFdlYktpdERPTURPTVNlbGVjdGlvbiogZG9tU2VsZWN0aW9uOworICAgICAgICBXZWJLaXRET01E
T01XaW5kb3cqIGRvbVdpbmRvdzsKKworICAgICAgICBkb2N1bWVudCA9IHdlYmtpdF93ZWJfcGFn
ZV9nZXRfZG9tX2RvY3VtZW50KHBhZ2UpOworICAgICAgICBkb21XaW5kb3cgPSB3ZWJraXRfZG9t
X2RvY3VtZW50X2dldF9kZWZhdWx0X3ZpZXcoZG9jdW1lbnQpOworICAgICAgICBkb21TZWxlY3Rp
b24gPSB3ZWJraXRfZG9tX2RvbV93aW5kb3dfZ2V0X3NlbGVjdGlvbihkb21XaW5kb3cpOworCisg
ICAgICAgIHdlYmtpdF9kb21fZG9tX3NlbGVjdGlvbl9tb2RpZnkoZG9tU2VsZWN0aW9uLCAiZXh0
ZW5kIiwgImZvcndhcmQiLCAid29yZCIpOworCisgICAgICAgIGdfb2JqZWN0X3VucmVmKGRvbVNl
bGVjdGlvbik7CisgICAgICAgIGdfb2JqZWN0X3VucmVmKGRvbVdpbmRvdyk7CisgICAgfQorCisg
ICAgdm9pZCB0ZXN0U2VsZWN0aW9uVW5zZWxlY3QoV2ViS2l0V2ViUGFnZSogcGFnZSkKKyAgICB7
CisgICAgICAgIFdlYktpdERPTURvY3VtZW50KiBkb2N1bWVudCA9IHdlYmtpdF93ZWJfcGFnZV9n
ZXRfZG9tX2RvY3VtZW50KHBhZ2UpOworCisgICAgICAgIHdlYmtpdF9kb21fZG9jdW1lbnRfZXhl
Y19jb21tYW5kKGRvY3VtZW50LCAiVW5zZWxlY3QiLCBmYWxzZSwgIiIpOworICAgIH0KKworICAg
IGJvb2wgcnVuVGVzdChjb25zdCBjaGFyKiB0ZXN0TmFtZSwgV2ViS2l0V2ViUGFnZSogcGFnZSkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghc3RyY21wKHRlc3ROYW1lLCAic2VsZWN0aW9u
LWNoYW5nZWQiKSkgeworICAgICAgICAgICAgYm9vbCByZXRWYWwgPSBmYWxzZTsKKworICAgICAg
ICAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJraXRfd2ViX3BhZ2VfZ2V0X2VkaXRvcihwYWdlKSwg
InNlbGVjdGlvbi1jaGFuZ2VkIiwgR19DQUxMQkFDSyhzZWxlY3Rpb25DaGFuZ2VkQ2FsbGJhY2sp
LCAmcmV0VmFsKTsKKworICAgICAgICAgICAgdGVzdFNlbGVjdGlvblNlbGVjdEFsbChwYWdlKTsK
KyAgICAgICAgICAgIGlmICghcmV0VmFsKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICAgICAgcmV0VmFsID0gZmFsc2U7CisgICAgICAgICAgICB0ZXN0U2VsZWN0aW9u
Q29sbGFwc2UocGFnZSk7CisgICAgICAgICAgICBpZiAoIXJldFZhbCkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIHJldFZhbCA9IGZhbHNlOworICAgICAgICAg
ICAgdGVzdFNlbGVjdGlvbk1vZGlmeU1vdmUocGFnZSk7CisgICAgICAgICAgICBpZiAoIXJldFZh
bCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIHJldFZhbCA9
IGZhbHNlOworICAgICAgICAgICAgdGVzdFNlbGVjdGlvbk1vZGlmeUV4dGVuZChwYWdlKTsKKyAg
ICAgICAgICAgIGlmICghcmV0VmFsKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICAgICAgcmV0VmFsID0gZmFsc2U7CisgICAgICAgICAgICB0ZXN0U2VsZWN0aW9uVW5z
ZWxlY3QocGFnZSk7CisgICAgICAgICAgICBpZiAoIXJldFZhbCkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAg
ICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KK307CisKK3N0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18oKGNvbnN0cnVjdG9yKSkgcmVnaXN0
ZXJUZXN0cygpCit7CisgICAgUkVHSVNURVJfVEVTVChXZWJLaXRXZWJFZGl0b3JUZXN0LCAiV2Vi
S2l0V2ViRWRpdG9yL3NlbGVjdGlvbi1jaGFuZ2VkIik7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdEVkaXRvci5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdEVkaXRvci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmM0
MjlkNGMzODA0YWNiNGY2YjcxYjAyMzgyMzYwMjBjMzc0NTgzMwotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0RWRpdG9yLmNwcApAQCAt
MCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFJlZCBIYXQgSW5jLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLDEgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKKyNpbmNsdWRlIDxn
dGsvZ3RrLmg+CisjaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQyLmg+CisKK3N0YXRpYyB2b2lkIHRl
c3RXZWJLaXRXZWJFZGl0b3JTZWxlY3Rpb25DaGFuZ2VkKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQoreworICAgIHN0YXRpYyBjb25zdCBnY2hhciogdGVzdEhUTUwgPSAiPGh0bWw+
PGJvZHk+QWxsIHdvcmsgYW5kIG5vIHBsYXkgbWFrZSBKYWNrIGEgZHVsbCBib3kuPC9ib2R5Pjwv
aHRtbD4iOworICAgIHRlc3QtPmxvYWRIdG1sKHRlc3RIVE1MLCBudWxscHRyKTsKKyAgICB0ZXN0
LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKworICAgIGdfYXNzZXJ0KHRlc3QtPnJ1bldlYlBy
b2Nlc3NUZXN0KCJXZWJLaXRXZWJFZGl0b3IiLCAic2VsZWN0aW9uLWNoYW5nZWQiKSk7Cit9CisK
K3ZvaWQgYmVmb3JlQWxsKCkKK3sKKyAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJFZGl0
b3IiLCAic2VsZWN0aW9uLWNoYW5nZWQiLCB0ZXN0V2ViS2l0V2ViRWRpdG9yU2VsZWN0aW9uQ2hh
bmdlZCk7Cit9CisKK3ZvaWQgYWZ0ZXJBbGwoKQoreworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257081</attachid>
            <date>2015-07-20 01:20:40 -0700</date>
            <delta_ts>2015-07-20 07:50:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137116-20150720101926.patch</filename>
            <type>text/plain</type>
            <size>26475</size>
            <attacher name="Tomas Popela">tpopela</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3MDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNmM1MDZhMDkzOGZlYjQz
MjVmMWY1ODdkNDk5YmY1NjRjYzAwYzI1Zi4uMGU2MjJiNTlmYWE2ZjM2MmQzZTQyZDdlNzc1YjVi
OWFjYmI4N2Q3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE1LTA3LTIwICBUb21h
cyBQb3BlbGEgIDx0cG9wZWxhQHJlZGhhdC5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIHNlbGVj
dGlvbi1jaGFuZ2VkIHNpZ25hbCB0byB0aGUgV2ViS2l0MiBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzExNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBvYmplY3QgV2ViS2l0V2Vi
RWRpdG9yIHdoZXJlIHRoZSBlZGl0aW5nIGNhcGFiaWxpdGllcyBvZiBhCisgICAgICAgIFdlYlBh
Z2Ugd2lsbCBiZSBncm91cGVkIGFuZCBleHBvc2VkLiBBZGQgdGhlIHNlbGVjdGlvbi1jaGFuZ2Vk
IHNpZ25hbAorICAgICAgICB0aGVyZSAod2UgdXNlZCB0aGUgc2FtZSBuYW1lIGFzIGluIFdLMSBB
UEkpLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkVkaXRvci5jcHA6IEFkZGVk
LgorICAgICAgICAoZGlkQ2hhbmdlU2VsZWN0aW9uKToKKyAgICAgICAgKHdlYmtpdFdlYkVkaXRv
ckNyZWF0ZSk6CisgICAgICAgICh3ZWJraXRfd2ViX2VkaXRvcl9nZXRfcGFnZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkVkaXRvci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0
V2ViRWRpdG9yUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJQYWdl
R2V0UGFnZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3BhZ2VfZ2V0X2VkaXRvcik6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZVBy
aXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Vi
a2l0LXdlYi1leHRlbnNpb24uaDoKKwogMjAxNS0wNy0xOSAgTWljaGFlbCBDYXRhbnphcm8gIDxt
Y2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcGxhY2F0ZSAtV21p
c21hdGNoZWQtdGFncyBhZnRlciByMTg3MDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4
IDBlZTgwOTQwNTBkODVlY2IxMzM3ZGU3N2Y4Y2M3NmE2MWU5YTAyMTAuLjZmMThhMTc4ZjFlODlm
ZWJjNDcyZDhhMmYxYzA3N2VjMDgxY2EwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBA
IC0zMTQsNiArMzE0LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0RnJhbWUuY3BwCiAgICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFNjcmlwdFdvcmxkLmNwcAorICAgIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFZGl0b3IuY3BwCiAgICAg
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAK
ICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViSGl0VGVzdFJl
c3VsdC5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2Vi
UGFnZS5jcHAKQEAgLTQxOCw2ICs0MTksNyBAQCBzZXQoV2ViS2l0MkdUS19JTlNUQUxMRURfSEVB
REVSUwogc2V0KFdlYktpdDJXZWJFeHRlbnNpb25fSU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dF
QktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0RnJhbWUu
aAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9X
ZWJLaXRTY3JpcHRXb3JsZC5oCisgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkVkaXRvci5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5oCiAgICAg
JHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdl
YkhpdFRlc3RSZXN1bHQuaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0IGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9u
cy50eHQKaW5kZXggY2Q4NzBhNTU5YjFiNzA3ZTdlYWM3MTE2MWM5NDZhNDQ5M2FhYThhZi4uNjdm
YjNiMjI4MzMyMzc5YWZmNjNiMjFlZThhOTU5YzVlZWY0YWNiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50
eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LTQuMC1zZWN0aW9ucy50eHQKQEAgLTEyMDIsNiArMTIwMiw3IEBAIHdlYmtpdF93ZWJfcGFnZV9n
ZXRfZG9tX2RvY3VtZW50CiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2lkCiB3ZWJraXRfd2ViX3BhZ2Vf
Z2V0X3VyaQogd2Via2l0X3dlYl9wYWdlX2dldF9tYWluX2ZyYW1lCit3ZWJraXRfd2ViX3BhZ2Vf
Z2V0X2VkaXRvcgogCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIFdlYktpdFdlYlBhZ2VDbGFzcwpA
QCAtMTIxOCw2ICsxMjE5LDI1IEBAIHdlYmtpdF93ZWJfcGFnZV9nZXRfdHlwZQogPC9TRUNUSU9O
PgogCiA8U0VDVElPTj4KKzxGSUxFPldlYktpdFdlYkVkaXRvcjwvRklMRT4KK1dlYktpdFdlYkVk
aXRvcgord2Via2l0X3dlYl9lZGl0b3JfZ2V0X3BhZ2UKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+
CitXZWJLaXRXZWJFZGl0b3JDbGFzcworV0VCS0lUX1RZUEVfV0VCX0VESVRPUgorV0VCS0lUX1dF
Ql9FRElUT1IKK1dFQktJVF9JU19XRUJfRURJVE9SCitXRUJLSVRfV0VCX0VESVRPUl9DTEFTUwor
V0VCS0lUX0lTX1dFQl9FRElUT1JfQ0xBU1MKK1dFQktJVF9XRUJfRURJVE9SX0dFVF9DTEFTUwor
Cis8U1VCU0VDVElPTiBQcml2YXRlPgorV2ViS2l0V2ViRWRpdG9yUHJpdmF0ZQord2Via2l0X3dl
Yl9lZGl0b3JfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRG
cmFtZTwvRklMRT4KIFdlYktpdEZyYW1lCiB3ZWJraXRfZnJhbWVfaXNfbWFpbl9mcmFtZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L1dlYktpdFdlYkVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRWRpdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTM2NTNkZTdm
YTJkN2FkNzgzZjk4MTk4NzFhZGVlNTA3NzRmZjc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkVkaXRv
ci5jcHAKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgUmVkIEhh
dCBJbmMuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIsMSBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViRWRpdG9yLmgi
CisKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViRWRpdG9y
UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFdlYlBhZ2VQcml2YXRlLmgiCisjaW5jbHVkZSAi
V0tCdW5kbGVBUElDYXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRXZWJFZGl0b3IKKyAqIEBT
aG9ydF9kZXNjcmlwdGlvbjogQWNjZXNzIHRvIGVkaXRpbmcgY2FwYWJpbGl0aWVzIG9mIGEgI1dl
YktpdFdlYlBhZ2UKKyAqIEBUaXRsZTogV2ViS2l0V2ViRWRpdG9yCisgKiBAU2VlX2Fsc286ICNX
ZWJLaXRXZWJQYWdlCisgKgorICogVGhlIFdlYktpdFdlYkVkaXRvciBwcm92aWRlcyBhY2Nlc3Mg
dG8gdmFyaW91cyBlZGl0aW5nIGNhcGFiaWxpdGllcyBvZgorICogYSAjV2ViS2l0V2ViUGFnZSBz
dWNoIGFzIGEgcG9zc2liaWxpdHkgdG8gcmVhY3QgdG8gdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGlu
CisgKiAjV2ViS2l0V2ViUGFnZS4KKyAqCisgKiBTaW5jZTogMi4xMAorICovCitlbnVtIHsKKyAg
ICBTRUxFQ1RJT05fQ0hBTkdFRCwKKworICAgIExBU1RfU0lHTkFMCit9OworCitzdHJ1Y3QgX1dl
YktpdFdlYkVkaXRvclByaXZhdGUgeworICAgIFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2U7Cit9Owor
CitzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CisKK1dFQktJVF9E
RUZJTkVfVFlQRShXZWJLaXRXZWJFZGl0b3IsIHdlYmtpdF93ZWJfZWRpdG9yLCBHX1RZUEVfT0JK
RUNUKQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2VkaXRvcl9jbGFzc19pbml0KFdlYktpdFdl
YkVkaXRvckNsYXNzKiBrbGFzcykKK3sKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJFZGl0b3I6
OnNlbGVjdGlvbi1jaGFuZ2VkOgorICAgICAqIEBlZGl0b3I6IHRoZSAjV2ViS2l0V2ViRWRpdG9y
IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqCisgICAgICogVGhpcyBzaWdu
YWwgaXMgZW1pdHRlZCBmb3IgZXZlcnkgc2VsZWN0aW9uIGNoYW5nZSBpbnNpZGUgYSAjV2ViS2l0
V2ViUGFnZQorICAgICAqIGFzIHdlbGwgYXMgZm9yIGV2ZXJ5IGNhcmV0IHBvc2l0aW9uIGNoYW5n
ZSBhcyB0aGUgY2FyZXQgaXMgYSBjb2xsYXBzZWQKKyAgICAgKiBzZWxlY3Rpb24uCisgICAgICoK
KyAgICAgKiBTaW5jZTogMi4xMAorICAgICAqLworICAgIHNpZ25hbHNbU0VMRUNUSU9OX0NIQU5H
RURdID0gZ19zaWduYWxfbmV3KAorICAgICAgICAic2VsZWN0aW9uLWNoYW5nZWQiLAorICAgICAg
ICBHX1RZUEVfRlJPTV9DTEFTUyhrbGFzcyksCisgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAor
ICAgICAgICAwLCBudWxscHRyLCBudWxscHRyLAorICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxf
Vk9JRF9fVk9JRCwKKyAgICAgICAgR19UWVBFX05PTkUsIDApOworfQorCitzdGF0aWMgdm9pZCBk
aWRDaGFuZ2VTZWxlY3Rpb24oV0tCdW5kbGVQYWdlUmVmLCBXS1N0cmluZ1JlZiAvKiBub3RpZmlj
YXRpb25OYW1lICovLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIGdfc2lnbmFsX2Vt
aXQoV0VCS0lUX1dFQl9FRElUT1IoY2xpZW50SW5mbyksIHNpZ25hbHNbU0VMRUNUSU9OX0NIQU5H
RURdLCAwKTsKK30KKworV2ViS2l0V2ViRWRpdG9yKiB3ZWJraXRXZWJFZGl0b3JDcmVhdGUoV2Vi
S2l0V2ViUGFnZSogd2ViUGFnZSkKK3sKKyAgICBXZWJLaXRXZWJFZGl0b3IqIGVkaXRvciA9IFdF
QktJVF9XRUJfRURJVE9SKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfRURJVE9SLCBudWxs
cHRyKSk7CisgICAgZWRpdG9yLT5wcml2LT53ZWJQYWdlID0gd2ViUGFnZTsKKworICAgIFdLQnVu
ZGxlUGFnZUVkaXRvckNsaWVudFYwIGVkaXRvckNsaWVudCA9IHsKKyAgICAgICAgeworICAgICAg
ICAgICAgMCwgLy8gdmVyc2lvbgorICAgICAgICAgICAgZWRpdG9yLCAvLyBjbGllbnRJbmZvCisg
ICAgICAgIH0sCisgICAgICAgIG51bGxwdHIsIC8vIHNob3VsZEJlZ2luRWRpdGluZworICAgICAg
ICBudWxscHRyLCAvLyBzaG91bGRFbmRFZGl0aW5nCisgICAgICAgIG51bGxwdHIsIC8vIHNob3Vs
ZEluc2VydE5vZGUKKyAgICAgICAgbnVsbHB0ciwgLy8gc2hvdWxkSW5zZXJ0VGV4dAorICAgICAg
ICBudWxscHRyLCAvLyBzaG91bGREZWxldGVSYW5nZQorICAgICAgICBudWxscHRyLCAvLyBzaG91
bGRDaGFuZ2VTZWxlY3RlZFJhbmdlCisgICAgICAgIG51bGxwdHIsIC8vIHNob3VsZEFwcGx5U3R5
bGUKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkQmVnaW5FZGl0aW5nCisgICAgICAgIG51bGxwdHIs
IC8vIGRpZEVuZEVkaXRpbmcKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkQ2hhbmdlCisgICAgICAg
IGRpZENoYW5nZVNlbGVjdGlvbgorICAgIH07CisgICAgV0tCdW5kbGVQYWdlU2V0RWRpdG9yQ2xp
ZW50KHRvQVBJKHdlYmtpdFdlYlBhZ2VHZXRQYWdlKHdlYlBhZ2UpKSwgJmVkaXRvckNsaWVudC5i
YXNlKTsKKworICAgIHJldHVybiBlZGl0b3I7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9lZGl0
b3JfZ2V0X3BhZ2U6CisgKiBAZWRpdG9yOiBhICNXZWJLaXRXZWJFZGl0b3IKKyAqCisgKiBHZXRz
IHRoZSAjV2ViS2l0V2ViUGFnZSB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgI1dlYktpdFdl
YkVkaXRvciB0aGF0IGNhbgorICogYmUgdXNlZCB0byBhY2Nlc3MgdGhlICNXZWJLaXRET01Eb2N1
bWVudCBjdXJyZW50bHkgbG9hZGVkIGludG8gaXQuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVy
IG5vbmUpOiB0aGUgYXNzb2NpYXRlZCAjV2ViS2l0V2ViUGFnZQorICoKKyAqIFNpbmNlOiAyLjEw
CisgKi8KK1dlYktpdFdlYlBhZ2UqIHdlYmtpdF93ZWJfZWRpdG9yX2dldF9wYWdlKFdlYktpdFdl
YkVkaXRvciogZWRpdG9yKQoreworICAgIHJldHVybiBlZGl0b3ItPnByaXYtPndlYlBhZ2U7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvV2ViS2l0V2ViRWRpdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRWRpdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNmZTlmMDA4
MmFmNjkzYzJiNDdlZmE3ODM2MjNlMDQwNzRkNzhmMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFZGl0
b3IuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFJlZCBIYXQg
SW5jLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLDEgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUX1dFQl9FWFRFTlNJT05fSF9JTlNJREVfXykgJiYg
IWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJr
aXQtd2ViLWV4dGVuc2lvbi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisK
KyNpZm5kZWYgV2ViS2l0V2ViRWRpdG9yX2gKKyNkZWZpbmUgV2ViS2l0V2ViRWRpdG9yX2gKKwor
I2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVz
Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJQYWdlLmg+CisKK0dfQkVHSU5fREVDTFMK
KworI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfRURJVE9SICAgICAgICAgICAgICAgKHdlYmtpdF93
ZWJfZWRpdG9yX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfRURJVE9SKG9iaikgICAg
ICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBF
X1dFQl9FRElUT1IsIFdlYktpdFdlYkVkaXRvcikpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfRURJ
VE9SKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdF
QktJVF9UWVBFX1dFQl9FRElUT1IpKQorI2RlZmluZSBXRUJLSVRfV0VCX0VESVRPUl9DTEFTUyhr
bGFzcykgICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQ
RV9XRUJfRURJVE9SLCBXZWJLaXRXZWJFZGl0b3JDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19X
RUJfRURJVE9SX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNz
KSwgIFdFQktJVF9UWVBFX1dFQl9FRElUT1IpKQorI2RlZmluZSBXRUJLSVRfV0VCX0VESVRPUl9H
RVRfQ0xBU1Mob2JqKSAgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJL
SVRfVFlQRV9XRUJfRURJVE9SLCBXZWJLaXRXZWJFZGl0b3JDbGFzcykpCisKK3R5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRXZWJFZGl0b3IgICAgICAgIFdlYktpdFdlYkVkaXRvcjsKK3R5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRXZWJFZGl0b3JDbGFzcyAgIFdlYktpdFdlYkVkaXRvckNsYXNzOwordHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdFdlYkVkaXRvclByaXZhdGUgV2ViS2l0V2ViRWRpdG9yUHJpdmF0ZTsK
KworLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8KK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJQ
YWdlICAgICAgICAgIFdlYktpdFdlYlBhZ2U7CisKK3N0cnVjdCBfV2ViS2l0V2ViRWRpdG9yIHsK
KyAgICBHT2JqZWN0IHBhcmVudDsKKworICAgIFdlYktpdFdlYkVkaXRvclByaXZhdGUgKnByaXY7
Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYkVkaXRvckNsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3Mg
cGFyZW50X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dlYl9lZGl0b3Jf
Z2V0X3R5cGUgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFdlYlBhZ2UgKgord2Via2l0X3dl
Yl9lZGl0b3JfZ2V0X3BhZ2UgKFdlYktpdFdlYkVkaXRvciAqZWRpdG9yKTsKKworR19FTkRfREVD
TFMKKworI2VuZGlmIC8vIFdlYktpdFdlYkVkaXRvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRWRpdG9yUHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L1dlYktpdFdlYkVkaXRvclByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODE1OWViMjA4MDNhMWVjMTky
NTBiZTlmMDc1ZTE2MGRlYTFiYTMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkVkaXRvclByaXZhdGUu
aApAQCAtMCwwICsxLDI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFJlZCBIYXQgSW5j
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
CisjaWZuZGVmIFdlYktpdFdlYkVkaXRvclByaXZhdGVfaAorI2RlZmluZSBXZWJLaXRXZWJFZGl0
b3JQcml2YXRlX2gKKworI2luY2x1ZGUgIldlYktpdFdlYkVkaXRvci5oIgorI2luY2x1ZGUgIldl
YktpdFdlYlBhZ2UuaCIKKworV2ViS2l0V2ViRWRpdG9yKiB3ZWJraXRXZWJFZGl0b3JDcmVhdGUo
V2ViS2l0V2ViUGFnZSopOworCisjZW5kaWYgLy8gV2ViS2l0V2ViRWRpdG9yX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJL
aXRXZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcAppbmRleCA3NDcyNjE4ZjhhODBmYjNkYjliY2MxZjA3
NDg5MWExN2QwMTAyODhmLi4wOTMxY2JmMDA0NzYxOGVmZDBiYWYxMGY2YjU4NDVmMDliODJhYzIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW5jbHVkZSAiV2ViS2l0U2NyaXB0V29ybGRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0
VVJJUmVxdWVzdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVUklSZXNwb25zZVByaXZhdGUu
aCIKKyNpbmNsdWRlICJXZWJLaXRXZWJFZGl0b3JQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0
V2ViSGl0VGVzdFJlc3VsdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJQYWdlUHJpdmF0
ZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKQEAgLTcwLDYgKzcxLDggQEAgc3RydWN0IF9X
ZWJLaXRXZWJQYWdlUHJpdmF0ZSB7CiAgICAgV2ViUGFnZSogd2ViUGFnZTsKIAogICAgIENTdHJp
bmcgdXJpOworCisgICAgR1JlZlB0cjxXZWJLaXRXZWJFZGl0b3I+IHdlYkVkaXRvcjsKIH07CiAK
IHN0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKQEAgLTM5NCw2ICsz
OTcsMTEgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9wYWdlX2NsYXNzX2luaXQoV2ViS2l0V2Vi
UGFnZUNsYXNzKiBrbGFzcykKICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX0hJVF9URVNUX1JFU1VM
VCk7CiB9CiAKK1dlYlBhZ2UqIHdlYmtpdFdlYlBhZ2VHZXRQYWdlKFdlYktpdFdlYlBhZ2UgKndl
YlBhZ2UpCit7CisgICAgcmV0dXJuIHdlYlBhZ2UtPnByaXYtPndlYlBhZ2U7Cit9CisKIFdlYktp
dFdlYlBhZ2UqIHdlYmtpdFdlYlBhZ2VDcmVhdGUoV2ViUGFnZSogd2ViUGFnZSkKIHsKICAgICBX
ZWJLaXRXZWJQYWdlKiBwYWdlID0gV0VCS0lUX1dFQl9QQUdFKGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9XRUJfUEFHRSwgTlVMTCkpOwpAQCAtNTc1LDMgKzU4MywyMyBAQCBXZWJLaXRGcmFtZSog
d2Via2l0X3dlYl9wYWdlX2dldF9tYWluX2ZyYW1lKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UpCiAK
ICAgICByZXR1cm4gd2Via2l0RnJhbWVHZXRPckNyZWF0ZSh3ZWJQYWdlLT5wcml2LT53ZWJQYWdl
LT5tYWluV2ViRnJhbWUoKSk7CiB9CisKKy8qKgorICogd2Via2l0X3dlYl9wYWdlX2dldF9lZGl0
b3I6CisgKiBAd2ViX3BhZ2U6IGEgI1dlYktpdFdlYlBhZ2UKKyAqCisgKiBHZXRzIHRoZSAjV2Vi
S2l0V2ViRWRpdG9yIG9mIGEgI1dlYktpdFdlYlBhZ2UuCisgKgorICogUmV0dXJuczogKHRyYW5z
ZmVyIG5vbmUpOiB0aGUgI1dlYktpdFdlYkVkaXRvcgorICoKKyAqIFNpbmNlOiAyLjEwCisgKi8K
K1dlYktpdFdlYkVkaXRvciogd2Via2l0X3dlYl9wYWdlX2dldF9lZGl0b3IoV2ViS2l0V2ViUGFn
ZSogd2ViUGFnZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1BB
R0Uod2ViUGFnZSksIG51bGxwdHIpOworCisgICAgaWYgKCF3ZWJQYWdlLT5wcml2LT53ZWJFZGl0
b3IpCisgICAgICAgIHdlYlBhZ2UtPnByaXYtPndlYkVkaXRvciA9IGFkb3B0R1JlZih3ZWJraXRX
ZWJFZGl0b3JDcmVhdGUod2ViUGFnZSkpOworCisgICAgcmV0dXJuIHdlYlBhZ2UtPnByaXYtPndl
YkVkaXRvci5nZXQoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5oCmluZGV4IDM3
NDU1Mjg2ZjVmMTk5ZjQ2NmQ2YWVlYWY1MmEwMTQ0ZDE3ODFjNGUuLjAzM2IzY2Q4YmYwYmI5NDZj
YWQ2ZDA0MDdjZTRjNzc4OThlOTRjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2Uu
aApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8
d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGcmFtZS5o
PgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViRWRpdG9yLmg+CiAjaW5jbHVkZSA8d2Via2l0
ZG9tL3dlYmtpdGRvbS5oPgogCiBHX0JFR0lOX0RFQ0xTCkBAIC00Miw2ICs0Myw5IEBAIHR5cGVk
ZWYgc3RydWN0IF9XZWJLaXRXZWJQYWdlICAgICAgICBXZWJLaXRXZWJQYWdlOwogdHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdFdlYlBhZ2VDbGFzcyAgIFdlYktpdFdlYlBhZ2VDbGFzczsKIHR5cGVkZWYg
c3RydWN0IF9XZWJLaXRXZWJQYWdlUHJpdmF0ZSBXZWJLaXRXZWJQYWdlUHJpdmF0ZTsKIAorLyog
Rm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8KK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJFZGl0b3Ig
ICAgICBXZWJLaXRXZWJFZGl0b3I7CisKIHN0cnVjdCBfV2ViS2l0V2ViUGFnZSB7CiAgICAgR09i
amVjdCBwYXJlbnQ7CiAKQEAgLTY3LDYgKzcxLDkgQEAgd2Via2l0X3dlYl9wYWdlX2dldF91cmkg
ICAgICAgICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKIFdFQktJVF9BUEkgV2ViS2l0RnJh
bWUgKgogd2Via2l0X3dlYl9wYWdlX2dldF9tYWluX2ZyYW1lICAgKFdlYktpdFdlYlBhZ2UgKndl
Yl9wYWdlKTsKIAorV0VCS0lUX0FQSSBXZWJLaXRXZWJFZGl0b3IgKgord2Via2l0X3dlYl9wYWdl
X2dldF9lZGl0b3IgICAgICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKKwogR19FTkRfREVD
TFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlUHJpdmF0ZS5o
CmluZGV4IDQ2YThkMjZjODE5Yzk1YzczZmVlZTMwMjFlZGJkMmUxZWEwODMxMzguLjhkY2Q0MmE5
ZGJjMzE0ZDc4NGJhYWQzNGFjOWU3OGY2ZWU5NGM3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlUHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9XZWJLaXRXZWJQYWdlUHJpdmF0ZS5oCkBAIC0yNiw1ICsyNiw2IEBACiAKIFdlYktpdFdlYlBh
Z2UqIHdlYmtpdFdlYlBhZ2VDcmVhdGUoV2ViS2l0OjpXZWJQYWdlKik7CiB2b2lkIHdlYmtpdFdl
YlBhZ2VEaWRSZWNlaXZlTWVzc2FnZShXZWJLaXRXZWJQYWdlKiwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlTmFtZSwgQVBJOjpEaWN0aW9uYXJ5JiBtZXNzYWdlKTsKK1dlYktpdDo6V2ViUGFnZSogd2Vi
a2l0V2ViUGFnZUdldFBhZ2UoV2ViS2l0V2ViUGFnZSopOwogCiAjZW5kaWYgLy8gV2ViS2l0V2Vi
UGFnZVByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Via2l0LXdlYi1leHRlbnNpb24u
aAppbmRleCA2ZjExYmNmMjY0NWFlNGVkNTQwYjI2MjYwNWIyZWY2MDljNWJiNWM3Li4xYzc0NmRi
NWJkOTU0NjdkNWNkYTRjZmMxODczYzNhMGNlZDBiZDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Via2l0LXdlYi1leHRlbnNp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvd2Via2l0LXdlYi1leHRlbnNpb24uaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0VVJJUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VVJJUmVz
cG9uc2UuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFZlcnNpb24uaD4KKyNpbmNsdWRlIDx3
ZWJraXQyL1dlYktpdFdlYkVkaXRvci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViRXh0
ZW5zaW9uLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJIaXRUZXN0UmVzdWx0Lmg+CiAj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJQYWdlLmg+CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWNjYWE5MDU3YWIwODJhMjg4N2JkZTUzYzUw
NWFlMTY2NDFiODc5OC4uYzQyMGY0ZTE0ZjhlZGM1YzM3ODZhNWQxNGNhN2EwMzY4ZDU0YmY2OSAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI4IEBACisyMDE1LTA3LTIwICBUb21hcyBQb3BlbGEgIDx0cG9wZWxhQHJlZGhhdC5jb20+
CisKKyAgICAgICAgW0dUS10gQWRkIHNlbGVjdGlvbi1jaGFuZ2VkIHNpZ25hbCB0byB0aGUgV2Vi
S2l0MiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzNzExNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBhIG5ldyBXZWJQcm9jZXNzIHRlc3QgVGVzdEVkaXRvciB0aGF0IGlzIHRlc3RpbmcgdGhl
IFdlYktpdFdlYkVkaXRvcgorICAgICAgICAobmFtZWx5IHRoZSBzZWxlY3Rpb24tY2hhbmdlZCBz
aWduYWwpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9FZGl0
b3JUZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXRXZWJFZGl0b3JUZXN0OjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0V2ViRWRpdG9yVGVzdDo6c2VsZWN0aW9uQ2hhbmdlZENhbGxiYWNr
KToKKyAgICAgICAgKFdlYktpdFdlYkVkaXRvclRlc3Q6OnRlc3RTZWxlY3Rpb25TZWxlY3RBbGwp
OgorICAgICAgICAoV2ViS2l0V2ViRWRpdG9yVGVzdDo6dGVzdFNlbGVjdGlvbkNvbGxhcHNlKToK
KyAgICAgICAgKFdlYktpdFdlYkVkaXRvclRlc3Q6OnRlc3RTZWxlY3Rpb25Nb2RpZnlNb3ZlKToK
KyAgICAgICAgKFdlYktpdFdlYkVkaXRvclRlc3Q6OnRlc3RTZWxlY3Rpb25Nb2RpZnlFeHRlbmQp
OgorICAgICAgICAoV2ViS2l0V2ViRWRpdG9yVGVzdDo6dGVzdFNlbGVjdGlvblVuc2VsZWN0KToK
KyAgICAgICAgKHJlZ2lzdGVyVGVzdHMpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mkd0ay9UZXN0RWRpdG9yLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmguCisg
ICAgICAgICh0ZXN0V2ViS2l0V2ViRWRpdG9yU2VsZWN0aW9uQ2hhbmdlZCk6CisgICAgICAgIChi
ZWZvcmVBbGwpOgorICAgICAgICAoYWZ0ZXJBbGwpOgorCiAyMDE1LTA3LTE5ICBNaWNoYWVsIENh
dGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBFbmFibGUg
c2VjY29tcCBmaWx0ZXIgQVBJIHRlc3RzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQKaW5kZXggNTAzNmQ0M2FlYmY4NmM3NzJkZjZk
YmVmZDU4MmI0YTY4MDk1Y2U4Ni4uMWJiZjUyZDljZmY1MDlhM2VjMWQ0ZDA4NDA1ZTI0ZjgyZDYx
ZGY1OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NN
YWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9D
TWFrZUxpc3RzLnR4dApAQCAtODksNyArODksNyBAQCBtYWNybyhBRERfV0syX1RFU1QgdGVzdF9u
YW1lKQogZW5kbWFjcm8oKQogCiBBRERfV0syX1RFU1RfV0VCX0VYVEVOU0lPTihXZWJFeHRlbnNp
b25UZXN0IFdlYkV4dGVuc2lvblRlc3QuY3BwKQotQUREX1dLMl9URVNUX1dFQl9FWFRFTlNJT04o
V2ViUHJvY2Vzc1Rlc3QgRE9NTm9kZVRlc3QuY3BwIERPTU5vZGVGaWx0ZXJUZXN0LmNwcCBET01Y
UGF0aE5TUmVzb2x2ZXJUZXN0LmNwcCBGcmFtZVRlc3QuY3BwIFdlYlByb2Nlc3NUZXN0LmNwcCkK
K0FERF9XSzJfVEVTVF9XRUJfRVhURU5TSU9OKFdlYlByb2Nlc3NUZXN0IERPTU5vZGVUZXN0LmNw
cCBET01Ob2RlRmlsdGVyVGVzdC5jcHAgRE9NWFBhdGhOU1Jlc29sdmVyVGVzdC5jcHAgRnJhbWVU
ZXN0LmNwcCBXZWJQcm9jZXNzVGVzdC5jcHAgRWRpdG9yVGVzdC5jcHApCiAKIEFERF9XSzJfVEVT
VChJbnNwZWN0b3JUZXN0U2VydmVyIEluc3BlY3RvclRlc3RTZXJ2ZXIuY3BwKQogQUREX1dLMl9U
RVNUKFRlc3RBdXRoZW50aWNhdGlvbiBUZXN0QXV0aGVudGljYXRpb24uY3BwKQpAQCAtMTE5LDYg
KzExOSw3IEBAIEFERF9XSzJfVEVTVChUZXN0V2ViVmlld0VkaXRvciBUZXN0V2ViVmlld0VkaXRv
ci5jcHApCiBBRERfV0syX1RFU1QoVGVzdFdlYktpdFdlYkNvbnRleHQgVGVzdFdlYktpdFdlYkNv
bnRleHQuY3BwKQogQUREX1dLMl9URVNUKFRlc3RXZWJLaXRXZWJWaWV3IFRlc3RXZWJLaXRXZWJW
aWV3LmNwcCkKIEFERF9XSzJfVEVTVChUZXN0V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyIFRlc3RX
ZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwKQorQUREX1dLMl9URVNUKFRlc3RFZGl0b3IgVGVz
dEVkaXRvci5jcHApCiAKIGlmIChBVFNQSV9GT1VORCkKICAgICBBRERfV0syX1RFU1QoQWNjZXNz
aWJpbGl0eVRlc3RTZXJ2ZXIgQWNjZXNzaWJpbGl0eVRlc3RTZXJ2ZXIuY3BwKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0VkaXRvclRlc3QuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0VkaXRvclRlc3QuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmMyMzZhOGQ5NjQ4MGMxNTUxYTJiNGFkZGM3MThlOWRmYWZkOTQyYTcKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvRWRpdG9yVGVz
dC5jcHAKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgUmVkIEhh
dCBJbmMuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYlByb2Nlc3NUZXN0Lmgi
CisjaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQtd2ViLWV4dGVuc2lvbi5oPgorCisjZGVmaW5lIFdF
QktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSQorI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01E
T01TZWxlY3Rpb24uaD4KKyNpbmNsdWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NRE9NV2luZG93VW5z
dGFibGUuaD4KKworY2xhc3MgV2ViS2l0V2ViRWRpdG9yVGVzdCA6IHB1YmxpYyBXZWJQcm9jZXNz
VGVzdCB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVz
dD4gY3JlYXRlKCkgeyByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PihuZXcg
V2ViS2l0V2ViRWRpdG9yVGVzdCgpKTsgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyB2b2lkIHNl
bGVjdGlvbkNoYW5nZWRDYWxsYmFjayhib29sKiBzZWxlY3Rpb25DaGFuZ2VkKQorICAgIHsKKyAg
ICAgICAgKnNlbGVjdGlvbkNoYW5nZWQgPSB0cnVlOworICAgIH0KKworICAgIHZvaWQgdGVzdFNl
bGVjdGlvblNlbGVjdEFsbChXZWJLaXRXZWJQYWdlKiBwYWdlKQorICAgIHsKKyAgICAgICAgV2Vi
S2l0RE9NRG9jdW1lbnQqIGRvY3VtZW50ID0gd2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1l
bnQocGFnZSk7CisgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfRE9DVU1FTlQoZG9jdW1l
bnQpKTsKKworICAgICAgICB3ZWJraXRfZG9tX2RvY3VtZW50X2V4ZWNfY29tbWFuZChkb2N1bWVu
dCwgIlNlbGVjdEFsbCIsIGZhbHNlLCAiIik7CisgICAgfQorCisgICAgdm9pZCB0ZXN0U2VsZWN0
aW9uQ29sbGFwc2UoV2ViS2l0V2ViUGFnZSogcGFnZSkKKyAgICB7CisgICAgICAgIFdlYktpdERP
TURvY3VtZW50KiBkb2N1bWVudCA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50KHBh
Z2UpOworICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7
CisgICAgICAgIEdSZWZQdHI8V2ViS2l0RE9NRE9NV2luZG93PiBkb21XaW5kb3cgPSBhZG9wdEdS
ZWYod2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZGVmYXVsdF92aWV3KGRvY3VtZW50KSk7CisgICAg
ICAgIEdSZWZQdHI8V2ViS2l0RE9NRE9NU2VsZWN0aW9uPiBkb21TZWxlY3Rpb24gPSBhZG9wdEdS
ZWYod2Via2l0X2RvbV9kb21fd2luZG93X2dldF9zZWxlY3Rpb24oZG9tV2luZG93LmdldCgpKSk7
CisKKyAgICAgICAgd2Via2l0X2RvbV9kb21fc2VsZWN0aW9uX2NvbGxhcHNlX3RvX3N0YXJ0KGRv
bVNlbGVjdGlvbi5nZXQoKSwgbnVsbHB0cik7CisgICAgfQorCisgICAgdm9pZCB0ZXN0U2VsZWN0
aW9uTW9kaWZ5TW92ZShXZWJLaXRXZWJQYWdlKiBwYWdlKQorICAgIHsKKyAgICAgICAgV2ViS2l0
RE9NRG9jdW1lbnQqIGRvY3VtZW50ID0gd2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQo
cGFnZSk7CisgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfRE9DVU1FTlQoZG9jdW1lbnQp
KTsKKyAgICAgICAgR1JlZlB0cjxXZWJLaXRET01ET01XaW5kb3c+IGRvbVdpbmRvdyA9IGFkb3B0
R1JlZih3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9kZWZhdWx0X3ZpZXcoZG9jdW1lbnQpKTsKKyAg
ICAgICAgR1JlZlB0cjxXZWJLaXRET01ET01TZWxlY3Rpb24+IGRvbVNlbGVjdGlvbiA9IGFkb3B0
R1JlZih3ZWJraXRfZG9tX2RvbV93aW5kb3dfZ2V0X3NlbGVjdGlvbihkb21XaW5kb3cuZ2V0KCkp
KTsKKworICAgICAgICB3ZWJraXRfZG9tX2RvbV9zZWxlY3Rpb25fbW9kaWZ5KGRvbVNlbGVjdGlv
bi5nZXQoKSwgIm1vdmUiLCAiZm9yd2FyZCIsICJjaGFyYWN0ZXIiKTsKKyAgICB9CisKKyAgICB2
b2lkIHRlc3RTZWxlY3Rpb25Nb2RpZnlFeHRlbmQoV2ViS2l0V2ViUGFnZSogcGFnZSkKKyAgICB7
CisgICAgICAgIFdlYktpdERPTURvY3VtZW50KiBkb2N1bWVudCA9IHdlYmtpdF93ZWJfcGFnZV9n
ZXRfZG9tX2RvY3VtZW50KHBhZ2UpOworICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0RP
Q1VNRU5UKGRvY3VtZW50KSk7CisgICAgICAgIEdSZWZQdHI8V2ViS2l0RE9NRE9NV2luZG93PiBk
b21XaW5kb3cgPSBhZG9wdEdSZWYod2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZGVmYXVsdF92aWV3
KGRvY3VtZW50KSk7CisgICAgICAgIEdSZWZQdHI8V2ViS2l0RE9NRE9NU2VsZWN0aW9uPiBkb21T
ZWxlY3Rpb24gPSBhZG9wdEdSZWYod2Via2l0X2RvbV9kb21fd2luZG93X2dldF9zZWxlY3Rpb24o
ZG9tV2luZG93LmdldCgpKSk7CisKKyAgICAgICAgd2Via2l0X2RvbV9kb21fc2VsZWN0aW9uX21v
ZGlmeShkb21TZWxlY3Rpb24uZ2V0KCksICJleHRlbmQiLCAiZm9yd2FyZCIsICJ3b3JkIik7Cisg
ICAgfQorCisgICAgdm9pZCB0ZXN0U2VsZWN0aW9uVW5zZWxlY3QoV2ViS2l0V2ViUGFnZSogcGFn
ZSkKKyAgICB7CisgICAgICAgIFdlYktpdERPTURvY3VtZW50KiBkb2N1bWVudCA9IHdlYmtpdF93
ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50KHBhZ2UpOworICAgICAgICBnX2Fzc2VydChXRUJLSVRf
RE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CisKKyAgICAgICAgd2Via2l0X2RvbV9kb2N1bWVu
dF9leGVjX2NvbW1hbmQoZG9jdW1lbnQsICJVbnNlbGVjdCIsIGZhbHNlLCAiIik7CisgICAgfQor
CisgICAgYm9vbCBydW5UZXN0KGNvbnN0IGNoYXIqIHRlc3ROYW1lLCBXZWJLaXRXZWJQYWdlKiBw
YWdlKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFzdHJjbXAodGVzdE5hbWUsICJzZWxl
Y3Rpb24tY2hhbmdlZCIpKSB7CisgICAgICAgICAgICBib29sIHNlbGVjdGlvbkNoYW5nZWQgPSBm
YWxzZTsKKworICAgICAgICAgICAgV2ViS2l0V2ViRWRpdG9yKiBlZGl0b3IgPSB3ZWJraXRfd2Vi
X3BhZ2VfZ2V0X2VkaXRvcihwYWdlKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19X
RUJfRURJVE9SKGVkaXRvcikpOworICAgICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hl
blRlc3RGaW5pc2hlcyhHX09CSkVDVChlZGl0b3IpKTsKKyAgICAgICAgICAgIGdfc2lnbmFsX2Nv
bm5lY3Rfc3dhcHBlZChlZGl0b3IsICJzZWxlY3Rpb24tY2hhbmdlZCIsIEdfQ0FMTEJBQ0soc2Vs
ZWN0aW9uQ2hhbmdlZENhbGxiYWNrKSwgJnNlbGVjdGlvbkNoYW5nZWQpOworCisgICAgICAgICAg
ICB0ZXN0U2VsZWN0aW9uU2VsZWN0QWxsKHBhZ2UpOworICAgICAgICAgICAgZ19hc3NlcnQoc2Vs
ZWN0aW9uQ2hhbmdlZCk7CisKKyAgICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSBmYWxzZTsK
KyAgICAgICAgICAgIHRlc3RTZWxlY3Rpb25Db2xsYXBzZShwYWdlKTsKKyAgICAgICAgICAgIGdf
YXNzZXJ0KHNlbGVjdGlvbkNoYW5nZWQpOworCisgICAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2Vk
ID0gZmFsc2U7CisgICAgICAgICAgICB0ZXN0U2VsZWN0aW9uTW9kaWZ5TW92ZShwYWdlKTsKKyAg
ICAgICAgICAgIGdfYXNzZXJ0KHNlbGVjdGlvbkNoYW5nZWQpOworCisgICAgICAgICAgICBzZWxl
Y3Rpb25DaGFuZ2VkID0gZmFsc2U7CisgICAgICAgICAgICB0ZXN0U2VsZWN0aW9uTW9kaWZ5RXh0
ZW5kKHBhZ2UpOworICAgICAgICAgICAgZ19hc3NlcnQoc2VsZWN0aW9uQ2hhbmdlZCk7CisKKyAg
ICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHRlc3RTZWxl
Y3Rpb25VbnNlbGVjdChwYWdlKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KHNlbGVjdGlvbkNoYW5n
ZWQpOworCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGdf
YXNzZXJ0X25vdF9yZWFjaGVkKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9Owor
CitzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fKChjb25zdHJ1Y3RvcikpIHJlZ2lzdGVyVGVzdHMo
KQoreworICAgIFJFR0lTVEVSX1RFU1QoV2ViS2l0V2ViRWRpdG9yVGVzdCwgIldlYktpdFdlYkVk
aXRvci9zZWxlY3Rpb24tY2hhbmdlZCIpOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RFZGl0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RFZGl0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjNDI5ZDRjMzgw
NGFjYjRmNmI3MWIwMjM4MjM2MDIwYzM3NDU4MzMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdEVkaXRvci5jcHAKQEAgLTAsMCArMSw0
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBSZWQgSGF0IEluYy4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2luY2x1ZGUgIldlYlZpZXdUZXN0LmgiCisjaW5jbHVkZSA8Z3RrL2d0ay5o
PgorI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0Mi5oPgorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0
V2ViRWRpdG9yU2VsZWN0aW9uQ2hhbmdlZChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKK3sKKyAgICBzdGF0aWMgY29uc3QgZ2NoYXIqIHRlc3RIVE1MID0gIjxodG1sPjxib2R5PkFs
bCB3b3JrIGFuZCBubyBwbGF5IG1ha2UgSmFjayBhIGR1bGwgYm95LjwvYm9keT48L2h0bWw+IjsK
KyAgICB0ZXN0LT5sb2FkSHRtbCh0ZXN0SFRNTCwgbnVsbHB0cik7CisgICAgdGVzdC0+d2FpdFVu
dGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICBnX2Fzc2VydCh0ZXN0LT5ydW5XZWJQcm9jZXNzVGVz
dCgiV2ViS2l0V2ViRWRpdG9yIiwgInNlbGVjdGlvbi1jaGFuZ2VkIikpOworfQorCit2b2lkIGJl
Zm9yZUFsbCgpCit7CisgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViRWRpdG9yIiwgInNl
bGVjdGlvbi1jaGFuZ2VkIiwgdGVzdFdlYktpdFdlYkVkaXRvclNlbGVjdGlvbkNoYW5nZWQpOwor
fQorCit2b2lkIGFmdGVyQWxsKCkKK3sKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257093</attachid>
            <date>2015-07-20 07:50:29 -0700</date>
            <delta_ts>2015-07-20 10:43:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137116-20150720164915.patch</filename>
            <type>text/plain</type>
            <size>26787</size>
            <attacher name="Tomas Popela">tpopela</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3MDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNmM1MDZhMDkzOGZlYjQz
MjVmMWY1ODdkNDk5YmY1NjRjYzAwYzI1Zi4uMGU2MjJiNTlmYWE2ZjM2MmQzZTQyZDdlNzc1YjVi
OWFjYmI4N2Q3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE1LTA3LTIwICBUb21h
cyBQb3BlbGEgIDx0cG9wZWxhQHJlZGhhdC5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIHNlbGVj
dGlvbi1jaGFuZ2VkIHNpZ25hbCB0byB0aGUgV2ViS2l0MiBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzExNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBvYmplY3QgV2ViS2l0V2Vi
RWRpdG9yIHdoZXJlIHRoZSBlZGl0aW5nIGNhcGFiaWxpdGllcyBvZiBhCisgICAgICAgIFdlYlBh
Z2Ugd2lsbCBiZSBncm91cGVkIGFuZCBleHBvc2VkLiBBZGQgdGhlIHNlbGVjdGlvbi1jaGFuZ2Vk
IHNpZ25hbAorICAgICAgICB0aGVyZSAod2UgdXNlZCB0aGUgc2FtZSBuYW1lIGFzIGluIFdLMSBB
UEkpLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkVkaXRvci5jcHA6IEFkZGVk
LgorICAgICAgICAoZGlkQ2hhbmdlU2VsZWN0aW9uKToKKyAgICAgICAgKHdlYmtpdFdlYkVkaXRv
ckNyZWF0ZSk6CisgICAgICAgICh3ZWJraXRfd2ViX2VkaXRvcl9nZXRfcGFnZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkVkaXRvci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0
V2ViRWRpdG9yUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJQYWdl
R2V0UGFnZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3BhZ2VfZ2V0X2VkaXRvcik6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZVBy
aXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Vi
a2l0LXdlYi1leHRlbnNpb24uaDoKKwogMjAxNS0wNy0xOSAgTWljaGFlbCBDYXRhbnphcm8gIDxt
Y2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcGxhY2F0ZSAtV21p
c21hdGNoZWQtdGFncyBhZnRlciByMTg3MDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4
IDBlZTgwOTQwNTBkODVlY2IxMzM3ZGU3N2Y4Y2M3NmE2MWU5YTAyMTAuLjZmMThhMTc4ZjFlODlm
ZWJjNDcyZDhhMmYxYzA3N2VjMDgxY2EwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBA
IC0zMTQsNiArMzE0LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0RnJhbWUuY3BwCiAgICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFNjcmlwdFdvcmxkLmNwcAorICAgIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFZGl0b3IuY3BwCiAgICAg
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAK
ICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViSGl0VGVzdFJl
c3VsdC5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2Vi
UGFnZS5jcHAKQEAgLTQxOCw2ICs0MTksNyBAQCBzZXQoV2ViS2l0MkdUS19JTlNUQUxMRURfSEVB
REVSUwogc2V0KFdlYktpdDJXZWJFeHRlbnNpb25fSU5TVEFMTEVEX0hFQURFUlMKICAgICAke1dF
QktJVDJfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0RnJhbWUu
aAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9X
ZWJLaXRTY3JpcHRXb3JsZC5oCisgICAgJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkVkaXRvci5oCiAgICAgJHtXRUJLSVQyX0RJUn0vV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5oCiAgICAg
JHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdl
YkhpdFRlc3RSZXN1bHQuaAogICAgICR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0IGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9u
cy50eHQKaW5kZXggY2Q4NzBhNTU5YjFiNzA3ZTdlYWM3MTE2MWM5NDZhNDQ5M2FhYThhZi4uNjdm
YjNiMjI4MzMyMzc5YWZmNjNiMjFlZThhOTU5YzVlZWY0YWNiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50
eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LTQuMC1zZWN0aW9ucy50eHQKQEAgLTEyMDIsNiArMTIwMiw3IEBAIHdlYmtpdF93ZWJfcGFnZV9n
ZXRfZG9tX2RvY3VtZW50CiB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2lkCiB3ZWJraXRfd2ViX3BhZ2Vf
Z2V0X3VyaQogd2Via2l0X3dlYl9wYWdlX2dldF9tYWluX2ZyYW1lCit3ZWJraXRfd2ViX3BhZ2Vf
Z2V0X2VkaXRvcgogCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIFdlYktpdFdlYlBhZ2VDbGFzcwpA
QCAtMTIxOCw2ICsxMjE5LDI1IEBAIHdlYmtpdF93ZWJfcGFnZV9nZXRfdHlwZQogPC9TRUNUSU9O
PgogCiA8U0VDVElPTj4KKzxGSUxFPldlYktpdFdlYkVkaXRvcjwvRklMRT4KK1dlYktpdFdlYkVk
aXRvcgord2Via2l0X3dlYl9lZGl0b3JfZ2V0X3BhZ2UKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+
CitXZWJLaXRXZWJFZGl0b3JDbGFzcworV0VCS0lUX1RZUEVfV0VCX0VESVRPUgorV0VCS0lUX1dF
Ql9FRElUT1IKK1dFQktJVF9JU19XRUJfRURJVE9SCitXRUJLSVRfV0VCX0VESVRPUl9DTEFTUwor
V0VCS0lUX0lTX1dFQl9FRElUT1JfQ0xBU1MKK1dFQktJVF9XRUJfRURJVE9SX0dFVF9DTEFTUwor
Cis8U1VCU0VDVElPTiBQcml2YXRlPgorV2ViS2l0V2ViRWRpdG9yUHJpdmF0ZQord2Via2l0X3dl
Yl9lZGl0b3JfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRG
cmFtZTwvRklMRT4KIFdlYktpdEZyYW1lCiB3ZWJraXRfZnJhbWVfaXNfbWFpbl9mcmFtZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L1dlYktpdFdlYkVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRWRpdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTM2NTNkZTdm
YTJkN2FkNzgzZjk4MTk4NzFhZGVlNTA3NzRmZjc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkVkaXRv
ci5jcHAKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgUmVkIEhh
dCBJbmMuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIsMSBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViRWRpdG9yLmgi
CisKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViRWRpdG9y
UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFdlYlBhZ2VQcml2YXRlLmgiCisjaW5jbHVkZSAi
V0tCdW5kbGVBUElDYXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRXZWJFZGl0b3IKKyAqIEBT
aG9ydF9kZXNjcmlwdGlvbjogQWNjZXNzIHRvIGVkaXRpbmcgY2FwYWJpbGl0aWVzIG9mIGEgI1dl
YktpdFdlYlBhZ2UKKyAqIEBUaXRsZTogV2ViS2l0V2ViRWRpdG9yCisgKiBAU2VlX2Fsc286ICNX
ZWJLaXRXZWJQYWdlCisgKgorICogVGhlIFdlYktpdFdlYkVkaXRvciBwcm92aWRlcyBhY2Nlc3Mg
dG8gdmFyaW91cyBlZGl0aW5nIGNhcGFiaWxpdGllcyBvZgorICogYSAjV2ViS2l0V2ViUGFnZSBz
dWNoIGFzIGEgcG9zc2liaWxpdHkgdG8gcmVhY3QgdG8gdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGlu
CisgKiAjV2ViS2l0V2ViUGFnZS4KKyAqCisgKiBTaW5jZTogMi4xMAorICovCitlbnVtIHsKKyAg
ICBTRUxFQ1RJT05fQ0hBTkdFRCwKKworICAgIExBU1RfU0lHTkFMCit9OworCitzdHJ1Y3QgX1dl
YktpdFdlYkVkaXRvclByaXZhdGUgeworICAgIFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2U7Cit9Owor
CitzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CisKK1dFQktJVF9E
RUZJTkVfVFlQRShXZWJLaXRXZWJFZGl0b3IsIHdlYmtpdF93ZWJfZWRpdG9yLCBHX1RZUEVfT0JK
RUNUKQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2VkaXRvcl9jbGFzc19pbml0KFdlYktpdFdl
YkVkaXRvckNsYXNzKiBrbGFzcykKK3sKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJFZGl0b3I6
OnNlbGVjdGlvbi1jaGFuZ2VkOgorICAgICAqIEBlZGl0b3I6IHRoZSAjV2ViS2l0V2ViRWRpdG9y
IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqCisgICAgICogVGhpcyBzaWdu
YWwgaXMgZW1pdHRlZCBmb3IgZXZlcnkgc2VsZWN0aW9uIGNoYW5nZSBpbnNpZGUgYSAjV2ViS2l0
V2ViUGFnZQorICAgICAqIGFzIHdlbGwgYXMgZm9yIGV2ZXJ5IGNhcmV0IHBvc2l0aW9uIGNoYW5n
ZSBhcyB0aGUgY2FyZXQgaXMgYSBjb2xsYXBzZWQKKyAgICAgKiBzZWxlY3Rpb24uCisgICAgICoK
KyAgICAgKiBTaW5jZTogMi4xMAorICAgICAqLworICAgIHNpZ25hbHNbU0VMRUNUSU9OX0NIQU5H
RURdID0gZ19zaWduYWxfbmV3KAorICAgICAgICAic2VsZWN0aW9uLWNoYW5nZWQiLAorICAgICAg
ICBHX1RZUEVfRlJPTV9DTEFTUyhrbGFzcyksCisgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAor
ICAgICAgICAwLCBudWxscHRyLCBudWxscHRyLAorICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxf
Vk9JRF9fVk9JRCwKKyAgICAgICAgR19UWVBFX05PTkUsIDApOworfQorCitzdGF0aWMgdm9pZCBk
aWRDaGFuZ2VTZWxlY3Rpb24oV0tCdW5kbGVQYWdlUmVmLCBXS1N0cmluZ1JlZiAvKiBub3RpZmlj
YXRpb25OYW1lICovLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIGdfc2lnbmFsX2Vt
aXQoV0VCS0lUX1dFQl9FRElUT1IoY2xpZW50SW5mbyksIHNpZ25hbHNbU0VMRUNUSU9OX0NIQU5H
RURdLCAwKTsKK30KKworV2ViS2l0V2ViRWRpdG9yKiB3ZWJraXRXZWJFZGl0b3JDcmVhdGUoV2Vi
S2l0V2ViUGFnZSogd2ViUGFnZSkKK3sKKyAgICBXZWJLaXRXZWJFZGl0b3IqIGVkaXRvciA9IFdF
QktJVF9XRUJfRURJVE9SKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfRURJVE9SLCBudWxs
cHRyKSk7CisgICAgZWRpdG9yLT5wcml2LT53ZWJQYWdlID0gd2ViUGFnZTsKKworICAgIFdLQnVu
ZGxlUGFnZUVkaXRvckNsaWVudFYwIGVkaXRvckNsaWVudCA9IHsKKyAgICAgICAgeworICAgICAg
ICAgICAgMCwgLy8gdmVyc2lvbgorICAgICAgICAgICAgZWRpdG9yLCAvLyBjbGllbnRJbmZvCisg
ICAgICAgIH0sCisgICAgICAgIG51bGxwdHIsIC8vIHNob3VsZEJlZ2luRWRpdGluZworICAgICAg
ICBudWxscHRyLCAvLyBzaG91bGRFbmRFZGl0aW5nCisgICAgICAgIG51bGxwdHIsIC8vIHNob3Vs
ZEluc2VydE5vZGUKKyAgICAgICAgbnVsbHB0ciwgLy8gc2hvdWxkSW5zZXJ0VGV4dAorICAgICAg
ICBudWxscHRyLCAvLyBzaG91bGREZWxldGVSYW5nZQorICAgICAgICBudWxscHRyLCAvLyBzaG91
bGRDaGFuZ2VTZWxlY3RlZFJhbmdlCisgICAgICAgIG51bGxwdHIsIC8vIHNob3VsZEFwcGx5U3R5
bGUKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkQmVnaW5FZGl0aW5nCisgICAgICAgIG51bGxwdHIs
IC8vIGRpZEVuZEVkaXRpbmcKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkQ2hhbmdlCisgICAgICAg
IGRpZENoYW5nZVNlbGVjdGlvbgorICAgIH07CisgICAgV0tCdW5kbGVQYWdlU2V0RWRpdG9yQ2xp
ZW50KHRvQVBJKHdlYmtpdFdlYlBhZ2VHZXRQYWdlKHdlYlBhZ2UpKSwgJmVkaXRvckNsaWVudC5i
YXNlKTsKKworICAgIHJldHVybiBlZGl0b3I7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9lZGl0
b3JfZ2V0X3BhZ2U6CisgKiBAZWRpdG9yOiBhICNXZWJLaXRXZWJFZGl0b3IKKyAqCisgKiBHZXRz
IHRoZSAjV2ViS2l0V2ViUGFnZSB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgI1dlYktpdFdl
YkVkaXRvciB0aGF0IGNhbgorICogYmUgdXNlZCB0byBhY2Nlc3MgdGhlICNXZWJLaXRET01Eb2N1
bWVudCBjdXJyZW50bHkgbG9hZGVkIGludG8gaXQuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVy
IG5vbmUpOiB0aGUgYXNzb2NpYXRlZCAjV2ViS2l0V2ViUGFnZQorICoKKyAqIFNpbmNlOiAyLjEw
CisgKi8KK1dlYktpdFdlYlBhZ2UqIHdlYmtpdF93ZWJfZWRpdG9yX2dldF9wYWdlKFdlYktpdFdl
YkVkaXRvciogZWRpdG9yKQoreworICAgIHJldHVybiBlZGl0b3ItPnByaXYtPndlYlBhZ2U7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvV2ViS2l0V2ViRWRpdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRWRpdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNmZTlmMDA4
MmFmNjkzYzJiNDdlZmE3ODM2MjNlMDQwNzRkNzhmMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFZGl0
b3IuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFJlZCBIYXQg
SW5jLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLDEgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUX1dFQl9FWFRFTlNJT05fSF9JTlNJREVfXykgJiYg
IWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJr
aXQtd2ViLWV4dGVuc2lvbi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisK
KyNpZm5kZWYgV2ViS2l0V2ViRWRpdG9yX2gKKyNkZWZpbmUgV2ViS2l0V2ViRWRpdG9yX2gKKwor
I2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVz
Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJQYWdlLmg+CisKK0dfQkVHSU5fREVDTFMK
KworI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfRURJVE9SICAgICAgICAgICAgICAgKHdlYmtpdF93
ZWJfZWRpdG9yX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfRURJVE9SKG9iaikgICAg
ICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBF
X1dFQl9FRElUT1IsIFdlYktpdFdlYkVkaXRvcikpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfRURJ
VE9SKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdF
QktJVF9UWVBFX1dFQl9FRElUT1IpKQorI2RlZmluZSBXRUJLSVRfV0VCX0VESVRPUl9DTEFTUyhr
bGFzcykgICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQ
RV9XRUJfRURJVE9SLCBXZWJLaXRXZWJFZGl0b3JDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19X
RUJfRURJVE9SX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNz
KSwgIFdFQktJVF9UWVBFX1dFQl9FRElUT1IpKQorI2RlZmluZSBXRUJLSVRfV0VCX0VESVRPUl9H
RVRfQ0xBU1Mob2JqKSAgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJL
SVRfVFlQRV9XRUJfRURJVE9SLCBXZWJLaXRXZWJFZGl0b3JDbGFzcykpCisKK3R5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRXZWJFZGl0b3IgICAgICAgIFdlYktpdFdlYkVkaXRvcjsKK3R5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRXZWJFZGl0b3JDbGFzcyAgIFdlYktpdFdlYkVkaXRvckNsYXNzOwordHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdFdlYkVkaXRvclByaXZhdGUgV2ViS2l0V2ViRWRpdG9yUHJpdmF0ZTsK
KworLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8KK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJQ
YWdlICAgICAgICAgIFdlYktpdFdlYlBhZ2U7CisKK3N0cnVjdCBfV2ViS2l0V2ViRWRpdG9yIHsK
KyAgICBHT2JqZWN0IHBhcmVudDsKKworICAgIFdlYktpdFdlYkVkaXRvclByaXZhdGUgKnByaXY7
Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYkVkaXRvckNsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3Mg
cGFyZW50X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dlYl9lZGl0b3Jf
Z2V0X3R5cGUgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFdlYlBhZ2UgKgord2Via2l0X3dl
Yl9lZGl0b3JfZ2V0X3BhZ2UgKFdlYktpdFdlYkVkaXRvciAqZWRpdG9yKTsKKworR19FTkRfREVD
TFMKKworI2VuZGlmIC8vIFdlYktpdFdlYkVkaXRvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRWRpdG9yUHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L1dlYktpdFdlYkVkaXRvclByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODE1OWViMjA4MDNhMWVjMTky
NTBiZTlmMDc1ZTE2MGRlYTFiYTMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkVkaXRvclByaXZhdGUu
aApAQCAtMCwwICsxLDI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFJlZCBIYXQgSW5j
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
CisjaWZuZGVmIFdlYktpdFdlYkVkaXRvclByaXZhdGVfaAorI2RlZmluZSBXZWJLaXRXZWJFZGl0
b3JQcml2YXRlX2gKKworI2luY2x1ZGUgIldlYktpdFdlYkVkaXRvci5oIgorI2luY2x1ZGUgIldl
YktpdFdlYlBhZ2UuaCIKKworV2ViS2l0V2ViRWRpdG9yKiB3ZWJraXRXZWJFZGl0b3JDcmVhdGUo
V2ViS2l0V2ViUGFnZSopOworCisjZW5kaWYgLy8gV2ViS2l0V2ViRWRpdG9yX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJL
aXRXZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcAppbmRleCA3NDcyNjE4ZjhhODBmYjNkYjliY2MxZjA3
NDg5MWExN2QwMTAyODhmLi4wOTMxY2JmMDA0NzYxOGVmZDBiYWYxMGY2YjU4NDVmMDliODJhYzIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW5jbHVkZSAiV2ViS2l0U2NyaXB0V29ybGRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0
VVJJUmVxdWVzdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVUklSZXNwb25zZVByaXZhdGUu
aCIKKyNpbmNsdWRlICJXZWJLaXRXZWJFZGl0b3JQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0
V2ViSGl0VGVzdFJlc3VsdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJQYWdlUHJpdmF0
ZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKQEAgLTcwLDYgKzcxLDggQEAgc3RydWN0IF9X
ZWJLaXRXZWJQYWdlUHJpdmF0ZSB7CiAgICAgV2ViUGFnZSogd2ViUGFnZTsKIAogICAgIENTdHJp
bmcgdXJpOworCisgICAgR1JlZlB0cjxXZWJLaXRXZWJFZGl0b3I+IHdlYkVkaXRvcjsKIH07CiAK
IHN0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKQEAgLTM5NCw2ICsz
OTcsMTEgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9wYWdlX2NsYXNzX2luaXQoV2ViS2l0V2Vi
UGFnZUNsYXNzKiBrbGFzcykKICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX0hJVF9URVNUX1JFU1VM
VCk7CiB9CiAKK1dlYlBhZ2UqIHdlYmtpdFdlYlBhZ2VHZXRQYWdlKFdlYktpdFdlYlBhZ2UgKndl
YlBhZ2UpCit7CisgICAgcmV0dXJuIHdlYlBhZ2UtPnByaXYtPndlYlBhZ2U7Cit9CisKIFdlYktp
dFdlYlBhZ2UqIHdlYmtpdFdlYlBhZ2VDcmVhdGUoV2ViUGFnZSogd2ViUGFnZSkKIHsKICAgICBX
ZWJLaXRXZWJQYWdlKiBwYWdlID0gV0VCS0lUX1dFQl9QQUdFKGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9XRUJfUEFHRSwgTlVMTCkpOwpAQCAtNTc1LDMgKzU4MywyMyBAQCBXZWJLaXRGcmFtZSog
d2Via2l0X3dlYl9wYWdlX2dldF9tYWluX2ZyYW1lKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UpCiAK
ICAgICByZXR1cm4gd2Via2l0RnJhbWVHZXRPckNyZWF0ZSh3ZWJQYWdlLT5wcml2LT53ZWJQYWdl
LT5tYWluV2ViRnJhbWUoKSk7CiB9CisKKy8qKgorICogd2Via2l0X3dlYl9wYWdlX2dldF9lZGl0
b3I6CisgKiBAd2ViX3BhZ2U6IGEgI1dlYktpdFdlYlBhZ2UKKyAqCisgKiBHZXRzIHRoZSAjV2Vi
S2l0V2ViRWRpdG9yIG9mIGEgI1dlYktpdFdlYlBhZ2UuCisgKgorICogUmV0dXJuczogKHRyYW5z
ZmVyIG5vbmUpOiB0aGUgI1dlYktpdFdlYkVkaXRvcgorICoKKyAqIFNpbmNlOiAyLjEwCisgKi8K
K1dlYktpdFdlYkVkaXRvciogd2Via2l0X3dlYl9wYWdlX2dldF9lZGl0b3IoV2ViS2l0V2ViUGFn
ZSogd2ViUGFnZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1BB
R0Uod2ViUGFnZSksIG51bGxwdHIpOworCisgICAgaWYgKCF3ZWJQYWdlLT5wcml2LT53ZWJFZGl0
b3IpCisgICAgICAgIHdlYlBhZ2UtPnByaXYtPndlYkVkaXRvciA9IGFkb3B0R1JlZih3ZWJraXRX
ZWJFZGl0b3JDcmVhdGUod2ViUGFnZSkpOworCisgICAgcmV0dXJuIHdlYlBhZ2UtPnByaXYtPndl
YkVkaXRvci5nZXQoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5oCmluZGV4IDM3
NDU1Mjg2ZjVmMTk5ZjQ2NmQ2YWVlYWY1MmEwMTQ0ZDE3ODFjNGUuLjAzM2IzY2Q4YmYwYmI5NDZj
YWQ2ZDA0MDdjZTRjNzc4OThlOTRjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2Uu
aApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8
d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGcmFtZS5o
PgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViRWRpdG9yLmg+CiAjaW5jbHVkZSA8d2Via2l0
ZG9tL3dlYmtpdGRvbS5oPgogCiBHX0JFR0lOX0RFQ0xTCkBAIC00Miw2ICs0Myw5IEBAIHR5cGVk
ZWYgc3RydWN0IF9XZWJLaXRXZWJQYWdlICAgICAgICBXZWJLaXRXZWJQYWdlOwogdHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdFdlYlBhZ2VDbGFzcyAgIFdlYktpdFdlYlBhZ2VDbGFzczsKIHR5cGVkZWYg
c3RydWN0IF9XZWJLaXRXZWJQYWdlUHJpdmF0ZSBXZWJLaXRXZWJQYWdlUHJpdmF0ZTsKIAorLyog
Rm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8KK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJFZGl0b3Ig
ICAgICBXZWJLaXRXZWJFZGl0b3I7CisKIHN0cnVjdCBfV2ViS2l0V2ViUGFnZSB7CiAgICAgR09i
amVjdCBwYXJlbnQ7CiAKQEAgLTY3LDYgKzcxLDkgQEAgd2Via2l0X3dlYl9wYWdlX2dldF91cmkg
ICAgICAgICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKIFdFQktJVF9BUEkgV2ViS2l0RnJh
bWUgKgogd2Via2l0X3dlYl9wYWdlX2dldF9tYWluX2ZyYW1lICAgKFdlYktpdFdlYlBhZ2UgKndl
Yl9wYWdlKTsKIAorV0VCS0lUX0FQSSBXZWJLaXRXZWJFZGl0b3IgKgord2Via2l0X3dlYl9wYWdl
X2dldF9lZGl0b3IgICAgICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKKwogR19FTkRfREVD
TFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlUHJpdmF0ZS5o
CmluZGV4IDQ2YThkMjZjODE5Yzk1YzczZmVlZTMwMjFlZGJkMmUxZWEwODMxMzguLjhkY2Q0MmE5
ZGJjMzE0ZDc4NGJhYWQzNGFjOWU3OGY2ZWU5NGM3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlUHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9XZWJLaXRXZWJQYWdlUHJpdmF0ZS5oCkBAIC0yNiw1ICsyNiw2IEBACiAKIFdlYktpdFdlYlBh
Z2UqIHdlYmtpdFdlYlBhZ2VDcmVhdGUoV2ViS2l0OjpXZWJQYWdlKik7CiB2b2lkIHdlYmtpdFdl
YlBhZ2VEaWRSZWNlaXZlTWVzc2FnZShXZWJLaXRXZWJQYWdlKiwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlTmFtZSwgQVBJOjpEaWN0aW9uYXJ5JiBtZXNzYWdlKTsKK1dlYktpdDo6V2ViUGFnZSogd2Vi
a2l0V2ViUGFnZUdldFBhZ2UoV2ViS2l0V2ViUGFnZSopOwogCiAjZW5kaWYgLy8gV2ViS2l0V2Vi
UGFnZVByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13ZWItZXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Via2l0LXdlYi1leHRlbnNpb24u
aAppbmRleCA2ZjExYmNmMjY0NWFlNGVkNTQwYjI2MjYwNWIyZWY2MDljNWJiNWM3Li4xYzc0NmRi
NWJkOTU0NjdkNWNkYTRjZmMxODczYzNhMGNlZDBiZDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Via2l0LXdlYi1leHRlbnNp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvd2Via2l0LXdlYi1leHRlbnNpb24uaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0VVJJUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VVJJUmVz
cG9uc2UuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFZlcnNpb24uaD4KKyNpbmNsdWRlIDx3
ZWJraXQyL1dlYktpdFdlYkVkaXRvci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViRXh0
ZW5zaW9uLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJIaXRUZXN0UmVzdWx0Lmg+CiAj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJQYWdlLmg+CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWNjYWE5MDU3YWIwODJhMjg4N2JkZTUzYzUw
NWFlMTY2NDFiODc5OC4uMDg1OTNjZjMxOTY0NWRhOTliMDc1NWRiNzAzZTk3ZDBhNzM2ZGRlOSAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI4IEBACisyMDE1LTA3LTIwICBUb21hcyBQb3BlbGEgIDx0cG9wZWxhQHJlZGhhdC5jb20+
CisKKyAgICAgICAgW0dUS10gQWRkIHNlbGVjdGlvbi1jaGFuZ2VkIHNpZ25hbCB0byB0aGUgV2Vi
S2l0MiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzNzExNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBhIG5ldyBXZWJQcm9jZXNzIHRlc3QgVGVzdEVkaXRvciB0aGF0IGlzIHRlc3RpbmcgdGhl
IFdlYktpdFdlYkVkaXRvcgorICAgICAgICAobmFtZWx5IHRoZSBzZWxlY3Rpb24tY2hhbmdlZCBz
aWduYWwpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9FZGl0
b3JUZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXRXZWJFZGl0b3JUZXN0OjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0V2ViRWRpdG9yVGVzdDo6c2VsZWN0aW9uQ2hhbmdlZENhbGxiYWNr
KToKKyAgICAgICAgKFdlYktpdFdlYkVkaXRvclRlc3Q6OnRlc3RTZWxlY3Rpb25TZWxlY3RBbGwp
OgorICAgICAgICAoV2ViS2l0V2ViRWRpdG9yVGVzdDo6dGVzdFNlbGVjdGlvbkNvbGxhcHNlKToK
KyAgICAgICAgKFdlYktpdFdlYkVkaXRvclRlc3Q6OnRlc3RTZWxlY3Rpb25Nb2RpZnlNb3ZlKToK
KyAgICAgICAgKFdlYktpdFdlYkVkaXRvclRlc3Q6OnRlc3RTZWxlY3Rpb25Nb2RpZnlFeHRlbmQp
OgorICAgICAgICAoV2ViS2l0V2ViRWRpdG9yVGVzdDo6dGVzdFNlbGVjdGlvblVuc2VsZWN0KToK
KyAgICAgICAgKHJlZ2lzdGVyVGVzdHMpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mkd0ay9UZXN0RWRpdG9yLmNwcDogQWRkZWQuCisgICAgICAgICh0ZXN0V2ViS2l0V2Vi
RWRpdG9yU2VsZWN0aW9uQ2hhbmdlZCk6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAo
YWZ0ZXJBbGwpOgorCiAyMDE1LTA3LTE5ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9A
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBFbmFibGUgc2VjY29tcCBmaWx0ZXIgQVBJIHRl
c3RzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01h
a2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VM
aXN0cy50eHQKaW5kZXggNTAzNmQ0M2FlYmY4NmM3NzJkZjZkYmVmZDU4MmI0YTY4MDk1Y2U4Ni4u
MWJiZjUyZDljZmY1MDlhM2VjMWQ0ZDA4NDA1ZTI0ZjgyZDYxZGY1OCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4dApAQCAtODks
NyArODksNyBAQCBtYWNybyhBRERfV0syX1RFU1QgdGVzdF9uYW1lKQogZW5kbWFjcm8oKQogCiBB
RERfV0syX1RFU1RfV0VCX0VYVEVOU0lPTihXZWJFeHRlbnNpb25UZXN0IFdlYkV4dGVuc2lvblRl
c3QuY3BwKQotQUREX1dLMl9URVNUX1dFQl9FWFRFTlNJT04oV2ViUHJvY2Vzc1Rlc3QgRE9NTm9k
ZVRlc3QuY3BwIERPTU5vZGVGaWx0ZXJUZXN0LmNwcCBET01YUGF0aE5TUmVzb2x2ZXJUZXN0LmNw
cCBGcmFtZVRlc3QuY3BwIFdlYlByb2Nlc3NUZXN0LmNwcCkKK0FERF9XSzJfVEVTVF9XRUJfRVhU
RU5TSU9OKFdlYlByb2Nlc3NUZXN0IERPTU5vZGVUZXN0LmNwcCBET01Ob2RlRmlsdGVyVGVzdC5j
cHAgRE9NWFBhdGhOU1Jlc29sdmVyVGVzdC5jcHAgRnJhbWVUZXN0LmNwcCBXZWJQcm9jZXNzVGVz
dC5jcHAgRWRpdG9yVGVzdC5jcHApCiAKIEFERF9XSzJfVEVTVChJbnNwZWN0b3JUZXN0U2VydmVy
IEluc3BlY3RvclRlc3RTZXJ2ZXIuY3BwKQogQUREX1dLMl9URVNUKFRlc3RBdXRoZW50aWNhdGlv
biBUZXN0QXV0aGVudGljYXRpb24uY3BwKQpAQCAtMTE5LDYgKzExOSw3IEBAIEFERF9XSzJfVEVT
VChUZXN0V2ViVmlld0VkaXRvciBUZXN0V2ViVmlld0VkaXRvci5jcHApCiBBRERfV0syX1RFU1Qo
VGVzdFdlYktpdFdlYkNvbnRleHQgVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwKQogQUREX1dLMl9U
RVNUKFRlc3RXZWJLaXRXZWJWaWV3IFRlc3RXZWJLaXRXZWJWaWV3LmNwcCkKIEFERF9XSzJfVEVT
VChUZXN0V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyIFRlc3RXZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXIuY3BwKQorQUREX1dLMl9URVNUKFRlc3RFZGl0b3IgVGVzdEVkaXRvci5jcHApCiAKIGlmIChB
VFNQSV9GT1VORCkKICAgICBBRERfV0syX1RFU1QoQWNjZXNzaWJpbGl0eVRlc3RTZXJ2ZXIgQWNj
ZXNzaWJpbGl0eVRlc3RTZXJ2ZXIuY3BwKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyR3RrL0VkaXRvclRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyR3RrL0VkaXRvclRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3MzM0NDI3MTg2YzJl
MGI3NDc3ZTFiMGYyYTliMjc2MTNhYjdlYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvRWRpdG9yVGVzdC5jcHAKQEAgLTAsMCArMSwxMzEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgUmVkIEhhdCBJbmMuCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgIldlYlByb2Nlc3NUZXN0LmgiCisjaW5jbHVkZSA8d2Via2l0Mi93
ZWJraXQtd2ViLWV4dGVuc2lvbi5oPgorCisjZGVmaW5lIFdFQktJVF9ET01fVVNFX1VOU1RBQkxF
X0FQSQorI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01ET01TZWxlY3Rpb24uaD4KKyNpbmNs
dWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NRE9NV2luZG93VW5zdGFibGUuaD4KKworY2xhc3MgV2Vi
S2l0V2ViRWRpdG9yVGVzdCA6IHB1YmxpYyBXZWJQcm9jZXNzVGVzdCB7CitwdWJsaWM6CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PihuZXcgV2ViS2l0V2ViRWRpdG9yVGVzdCgp
KTsgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWRDYWxsYmFj
ayhib29sKiBzZWxlY3Rpb25DaGFuZ2VkKQorICAgIHsKKyAgICAgICAgKnNlbGVjdGlvbkNoYW5n
ZWQgPSB0cnVlOworICAgIH0KKworICAgIHZvaWQgdGVzdFNlbGVjdGlvblNlbGVjdEFsbChXZWJL
aXRXZWJQYWdlKiBwYWdlKQorICAgIHsKKyAgICAgICAgV2ViS2l0RE9NRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gd2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQocGFnZSk7CisgICAgICAgIGdf
YXNzZXJ0KFdFQktJVF9ET01fSVNfRE9DVU1FTlQoZG9jdW1lbnQpKTsKKworICAgICAgICB3ZWJr
aXRfZG9tX2RvY3VtZW50X2V4ZWNfY29tbWFuZChkb2N1bWVudCwgIlNlbGVjdEFsbCIsIGZhbHNl
LCAiIik7CisgICAgfQorCisgICAgdm9pZCB0ZXN0U2VsZWN0aW9uQ29sbGFwc2UoV2ViS2l0V2Vi
UGFnZSogcGFnZSkKKyAgICB7CisgICAgICAgIFdlYktpdERPTURvY3VtZW50KiBkb2N1bWVudCA9
IHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50KHBhZ2UpOworICAgICAgICBnX2Fzc2Vy
dChXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CisgICAgICAgIEdSZWZQdHI8V2Vi
S2l0RE9NRE9NV2luZG93PiBkb21XaW5kb3cgPSBhZG9wdEdSZWYod2Via2l0X2RvbV9kb2N1bWVu
dF9nZXRfZGVmYXVsdF92aWV3KGRvY3VtZW50KSk7CisgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9E
T01fSVNfRE9NX1dJTkRPVyhkb21XaW5kb3cuZ2V0KCkpKTsKKyAgICAgICAgR1JlZlB0cjxXZWJL
aXRET01ET01TZWxlY3Rpb24+IGRvbVNlbGVjdGlvbiA9IGFkb3B0R1JlZih3ZWJraXRfZG9tX2Rv
bV93aW5kb3dfZ2V0X3NlbGVjdGlvbihkb21XaW5kb3cuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3Nl
cnQoV0VCS0lUX0RPTV9JU19ET01fU0VMRUNUSU9OKGRvbVNlbGVjdGlvbi5nZXQoKSkpOworCisg
ICAgICAgIHdlYmtpdF9kb21fZG9tX3NlbGVjdGlvbl9jb2xsYXBzZV90b19zdGFydChkb21TZWxl
Y3Rpb24uZ2V0KCksIG51bGxwdHIpOworICAgIH0KKworICAgIHZvaWQgdGVzdFNlbGVjdGlvbk1v
ZGlmeU1vdmUoV2ViS2l0V2ViUGFnZSogcGFnZSkKKyAgICB7CisgICAgICAgIFdlYktpdERPTURv
Y3VtZW50KiBkb2N1bWVudCA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50KHBhZ2Up
OworICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7Cisg
ICAgICAgIEdSZWZQdHI8V2ViS2l0RE9NRE9NV2luZG93PiBkb21XaW5kb3cgPSBhZG9wdEdSZWYo
d2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZGVmYXVsdF92aWV3KGRvY3VtZW50KSk7CisgICAgICAg
IGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfRE9NX1dJTkRPVyhkb21XaW5kb3cuZ2V0KCkpKTsKKyAg
ICAgICAgR1JlZlB0cjxXZWJLaXRET01ET01TZWxlY3Rpb24+IGRvbVNlbGVjdGlvbiA9IGFkb3B0
R1JlZih3ZWJraXRfZG9tX2RvbV93aW5kb3dfZ2V0X3NlbGVjdGlvbihkb21XaW5kb3cuZ2V0KCkp
KTsKKyAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19ET01fU0VMRUNUSU9OKGRvbVNlbGVj
dGlvbi5nZXQoKSkpOworCisgICAgICAgIHdlYmtpdF9kb21fZG9tX3NlbGVjdGlvbl9tb2RpZnko
ZG9tU2VsZWN0aW9uLmdldCgpLCAibW92ZSIsICJmb3J3YXJkIiwgImNoYXJhY3RlciIpOworICAg
IH0KKworICAgIHZvaWQgdGVzdFNlbGVjdGlvbk1vZGlmeUV4dGVuZChXZWJLaXRXZWJQYWdlKiBw
YWdlKQorICAgIHsKKyAgICAgICAgV2ViS2l0RE9NRG9jdW1lbnQqIGRvY3VtZW50ID0gd2Via2l0
X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQocGFnZSk7CisgICAgICAgIGdfYXNzZXJ0KFdFQktJ
VF9ET01fSVNfRE9DVU1FTlQoZG9jdW1lbnQpKTsKKyAgICAgICAgR1JlZlB0cjxXZWJLaXRET01E
T01XaW5kb3c+IGRvbVdpbmRvdyA9IGFkb3B0R1JlZih3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9k
ZWZhdWx0X3ZpZXcoZG9jdW1lbnQpKTsKKyAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19E
T01fV0lORE9XKGRvbVdpbmRvdy5nZXQoKSkpOworICAgICAgICBHUmVmUHRyPFdlYktpdERPTURP
TVNlbGVjdGlvbj4gZG9tU2VsZWN0aW9uID0gYWRvcHRHUmVmKHdlYmtpdF9kb21fZG9tX3dpbmRv
d19nZXRfc2VsZWN0aW9uKGRvbVdpbmRvdy5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydChXRUJL
SVRfRE9NX0lTX0RPTV9TRUxFQ1RJT04oZG9tU2VsZWN0aW9uLmdldCgpKSk7CisKKyAgICAgICAg
d2Via2l0X2RvbV9kb21fc2VsZWN0aW9uX21vZGlmeShkb21TZWxlY3Rpb24uZ2V0KCksICJleHRl
bmQiLCAiZm9yd2FyZCIsICJ3b3JkIik7CisgICAgfQorCisgICAgdm9pZCB0ZXN0U2VsZWN0aW9u
VW5zZWxlY3QoV2ViS2l0V2ViUGFnZSogcGFnZSkKKyAgICB7CisgICAgICAgIFdlYktpdERPTURv
Y3VtZW50KiBkb2N1bWVudCA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50KHBhZ2Up
OworICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CisK
KyAgICAgICAgd2Via2l0X2RvbV9kb2N1bWVudF9leGVjX2NvbW1hbmQoZG9jdW1lbnQsICJVbnNl
bGVjdCIsIGZhbHNlLCAiIik7CisgICAgfQorCisgICAgYm9vbCBydW5UZXN0KGNvbnN0IGNoYXIq
IHRlc3ROYW1lLCBXZWJLaXRXZWJQYWdlKiBwYWdlKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAg
aWYgKCFzdHJjbXAodGVzdE5hbWUsICJzZWxlY3Rpb24tY2hhbmdlZCIpKSB7CisgICAgICAgICAg
ICBib29sIHNlbGVjdGlvbkNoYW5nZWQgPSBmYWxzZTsKKworICAgICAgICAgICAgV2ViS2l0V2Vi
RWRpdG9yKiBlZGl0b3IgPSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2VkaXRvcihwYWdlKTsKKyAgICAg
ICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19XRUJfRURJVE9SKGVkaXRvcikpOworICAgICAgICAg
ICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChlZGl0b3Ip
KTsKKyAgICAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChlZGl0b3IsICJzZWxlY3Rp
b24tY2hhbmdlZCIsIEdfQ0FMTEJBQ0soc2VsZWN0aW9uQ2hhbmdlZENhbGxiYWNrKSwgJnNlbGVj
dGlvbkNoYW5nZWQpOworCisgICAgICAgICAgICB0ZXN0U2VsZWN0aW9uU2VsZWN0QWxsKHBhZ2Up
OworICAgICAgICAgICAgZ19hc3NlcnQoc2VsZWN0aW9uQ2hhbmdlZCk7CisKKyAgICAgICAgICAg
IHNlbGVjdGlvbkNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHRlc3RTZWxlY3Rpb25Db2xs
YXBzZShwYWdlKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KHNlbGVjdGlvbkNoYW5nZWQpOworCisg
ICAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gZmFsc2U7CisgICAgICAgICAgICB0ZXN0U2Vs
ZWN0aW9uTW9kaWZ5TW92ZShwYWdlKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KHNlbGVjdGlvbkNo
YW5nZWQpOworCisgICAgICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gZmFsc2U7CisgICAgICAg
ICAgICB0ZXN0U2VsZWN0aW9uTW9kaWZ5RXh0ZW5kKHBhZ2UpOworICAgICAgICAgICAgZ19hc3Nl
cnQoc2VsZWN0aW9uQ2hhbmdlZCk7CisKKyAgICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSBm
YWxzZTsKKyAgICAgICAgICAgIHRlc3RTZWxlY3Rpb25VbnNlbGVjdChwYWdlKTsKKyAgICAgICAg
ICAgIGdfYXNzZXJ0KHNlbGVjdGlvbkNoYW5nZWQpOworCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgfQorCisgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9Cit9OworCitzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fKChj
b25zdHJ1Y3RvcikpIHJlZ2lzdGVyVGVzdHMoKQoreworICAgIFJFR0lTVEVSX1RFU1QoV2ViS2l0
V2ViRWRpdG9yVGVzdCwgIldlYktpdFdlYkVkaXRvci9zZWxlY3Rpb24tY2hhbmdlZCIpOworfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RFZGl0
b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RFZGl0b3Iu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmZjNDI5ZDRjMzgwNGFjYjRmNmI3MWIwMjM4MjM2MDIwYzM3NDU4MzMK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
VGVzdEVkaXRvci5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBSZWQgSGF0IEluYy4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiwx
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYlZpZXdU
ZXN0LmgiCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0Mi5o
PgorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0V2ViRWRpdG9yU2VsZWN0aW9uQ2hhbmdlZChXZWJW
aWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBzdGF0aWMgY29uc3QgZ2NoYXIq
IHRlc3RIVE1MID0gIjxodG1sPjxib2R5PkFsbCB3b3JrIGFuZCBubyBwbGF5IG1ha2UgSmFjayBh
IGR1bGwgYm95LjwvYm9keT48L2h0bWw+IjsKKyAgICB0ZXN0LT5sb2FkSHRtbCh0ZXN0SFRNTCwg
bnVsbHB0cik7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICBnX2Fz
c2VydCh0ZXN0LT5ydW5XZWJQcm9jZXNzVGVzdCgiV2ViS2l0V2ViRWRpdG9yIiwgInNlbGVjdGlv
bi1jaGFuZ2VkIikpOworfQorCit2b2lkIGJlZm9yZUFsbCgpCit7CisgICAgV2ViVmlld1Rlc3Q6
OmFkZCgiV2ViS2l0V2ViRWRpdG9yIiwgInNlbGVjdGlvbi1jaGFuZ2VkIiwgdGVzdFdlYktpdFdl
YkVkaXRvclNlbGVjdGlvbkNoYW5nZWQpOworfQorCit2b2lkIGFmdGVyQWxsKCkKK3sKK30K
</data>

          </attachment>
      

    </bug>

</bugzilla>