<?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>221672</bug_id>
          
          <creation_ts>2021-02-10 06:55:50 -0800</creation_ts>
          <short_desc>REGRESSION(r272636) [GTK] Crash and failures in API test /WebKit2Gtk/TestResources</short_desc>
          <delta_ts>2021-02-17 06:45:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=221639</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=186276</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=177107</see_also>
          <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="Lauro Moura">lmoura</reporter>
          <assigned_to name="Lauro Moura">lmoura</assigned_to>
          <cc>achristensen</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1727521</commentid>
    <comment_count>0</comment_count>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2021-02-10 06:55:50 -0800</bug_when>
    <thetext>/WebKit2Gtk/TestResources

Output:

TEST: WebKitBuild/GTK/Release/bin/TestWebKitAPI/WebKit2Gtk/TestResources...
  /webkit/WebKitWebView/resources:                                    PASS
GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ‘gio-vfs’
  /webkit/WebKitWebView/history-cache:                                PASS
  /webkit/WebKitWebView/sync-request-on-max-conns:                    PASS
  /webkit/WebKitWebResource/loading:                                  PASS
  /webkit/WebKitWebResource/response:                                 PASS
  /webkit/WebKitWebResource/mime-type:                                PASS
  /webkit/WebKitWebResource/suggested-filename:                       PASS
  /webkit/WebKitWebResource/active-uri:                               PASS
  /webkit/WebKitWebResource/get-data:                                 PASS
  /webkit/WebKitWebResource/get-data-error:                           CRASH
  /webkit/WebKitWebResource/get-data-empty:                           FAIL
GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ‘gio-vfs’
  /webkit/WebKitWebPage/send-request:                                 PASS
GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ‘gio-vfs’

Unexpected failures (1)
    WebKitBuild/GTK/Release/bin/TestWebKitAPI/WebKit2Gtk/TestResources
        /webkit/WebKitWebResource/get-data-empty

Unexpected crashes (1)
    WebKitBuild/GTK/Release/bin/TestWebKitAPI/WebKit2Gtk/TestResources
        /webkit/WebKitWebResource/get-data-error

Ran 13 tests of 13 with 11 successful


When running isolated, get-data-error only fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728439</commentid>
    <comment_count>1</comment_count>
      <attachid>420088</attachid>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2021-02-11 20:40:49 -0800</bug_when>
    <thetext>Created attachment 420088
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728440</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-02-11 20:41:49 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728443</commentid>
    <comment_count>3</comment_count>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2021-02-11 20:47:45 -0800</bug_when>
    <thetext>Not sure if this is the ideal approach, but might make more sense to return an empty resource on &quot;error&quot; than returning an error with an empty document, no? Given that error in this context means operation canceled, per the original check removed that Carlos mentioned in bug221639 #c9.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728474</commentid>
    <comment_count>4</comment_count>
      <attachid>420088</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-02-12 00:04:32 -0800</bug_when>
    <thetext>Comment on attachment 420088
Patch

Can&apos;t we keep previous behavior and data is nullptr and generate the error?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728541</commentid>
    <comment_count>5</comment_count>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2021-02-12 05:52:06 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #4)
&gt; Comment on attachment 420088 [details]
&gt; Patch
&gt; 
&gt; Can&apos;t we keep previous behavior and data is nullptr and generate the error?

That&apos;s an option too. In this case, would the error still be `G_IO_ERROR_CANCELLED` or would it be better to move to `G_IO_ERROR_FAILED` to indicate a more generic error as it now does not have the exact reason (i.e. whether it was canceled or was an empty resource)?

Actually, in any case, it would be better to keep both tests, aligning the assertions, as one starts from `&lt;HTML&gt;&lt;/HTML&gt;` and the other from an empty resource.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728546</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-02-12 06:22:49 -0800</bug_when>
    <thetext>(In reply to Lauro Moura from comment #5)
&gt; (In reply to Carlos Garcia Campos from comment #4)
&gt; &gt; Comment on attachment 420088 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Can&apos;t we keep previous behavior and data is nullptr and generate the error?
&gt; 
&gt; That&apos;s an option too. In this case, would the error still be
&gt; `G_IO_ERROR_CANCELLED` or would it be better to move to `G_IO_ERROR_FAILED`
&gt; to indicate a more generic error as it now does not have the exact reason
&gt; (i.e. whether it was canceled or was an empty resource)?

Yes, we should preserve the existing behavior if possible.

&gt; Actually, in any case, it would be better to keep both tests, aligning the
&gt; assertions, as one starts from `&lt;HTML&gt;&lt;/HTML&gt;` and the other from an empty
&gt; resource.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728664</commentid>
    <comment_count>7</comment_count>
      <attachid>420149</attachid>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2021-02-12 10:57:05 -0800</bug_when>
    <thetext>Created attachment 420149
Version returning error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728872</commentid>
    <comment_count>8</comment_count>
      <attachid>420149</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-02-12 17:05:09 -0800</bug_when>
    <thetext>Comment on attachment 420149
Version returning error

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebResource.cpp:350
&gt; +    if (!wkData) {
&gt; +        g_task_return_new_error(task, G_IO_ERROR, G_IO_ERROR_CANCELLED, _(&quot;Operation was cancelled&quot;));

G_IO_ERROR_CANCELLED should be set by g_cancellable_set_error_if_cancelled(). I would be pretty surprised to see this error occur for any other reason....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729071</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-02-15 01:42:26 -0800</bug_when>
    <thetext>The tests is still failing...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729074</commentid>
    <comment_count>10</comment_count>
      <attachid>420149</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-02-15 01:44:29 -0800</bug_when>
    <thetext>Comment on attachment 420149
Version returning error

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

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestResources.cpp:584
&gt; -        g_assert_nonnull(data);
&gt; -        g_assert_cmpuint(dataSize, ==, 1);
&gt; -        g_assert_cmpint(data[0], ==, &apos;\0&apos;);
&gt; -        g_assert_no_error(error.get());
&gt; +        g_assert_null(data);
&gt; +        g_assert_error(error.get(), G_IO_ERROR, G_IO_ERROR_CANCELLED);

Why are we changing this? if we are preserving previous behavior we shouldn&apos;t change the test. In case of empty resource, the data shouldn&apos;t be null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729123</commentid>
    <comment_count>11</comment_count>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2021-02-15 04:35:26 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #9)
&gt; The tests is still failing...

Might have missed something in the refactor. Will check.

(In reply to Carlos Garcia Campos from comment #10)
&gt; Comment on attachment 420149 [details]
&gt; Version returning error
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=420149&amp;action=review
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestResources.cpp:584
&gt; &gt; -        g_assert_nonnull(data);
&gt; &gt; -        g_assert_cmpuint(dataSize, ==, 1);
&gt; &gt; -        g_assert_cmpint(data[0], ==, &apos;\0&apos;);
&gt; &gt; -        g_assert_no_error(error.get());
&gt; &gt; +        g_assert_null(data);
&gt; &gt; +        g_assert_error(error.get(), G_IO_ERROR, G_IO_ERROR_CANCELLED);
&gt; 
&gt; Why are we changing this? if we are preserving previous behavior we
&gt; shouldn&apos;t change the test. In case of empty resource, the data shouldn&apos;t be
&gt; null.

IIUC, the issue after r272636 is that the callback for getResourceData family of functions removed the error argument[1]. Now the callback, receives null data for both cases (no frame, and actually empty resource).


[1] https://trac.webkit.org/changeset/272636/webkit#file8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729132</commentid>
    <comment_count>12</comment_count>
      <attachid>420149</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-02-15 05:01:23 -0800</bug_when>
    <thetext>Comment on attachment 420149
Version returning error

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebResource.cpp:354
&gt;      if (!wkData-&gt;bytes())

This is the empty case, if we are receiving null in both cases this is dead code now, but I&apos;m not sure that&apos;s the case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729538</commentid>
    <comment_count>13</comment_count>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2021-02-15 19:57:14 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #12)
&gt; Comment on attachment 420149 [details]
&gt; Version returning error
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=420149&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebResource.cpp:354
&gt; &gt;      if (!wkData-&gt;bytes())
&gt; 
&gt; This is the empty case, if we are receiving null in both cases this is dead
&gt; code now, but I&apos;m not sure that&apos;s the case.

Yeah, this is what&apos;s happening. Both an empty resource and error ends up with API::Data* null in the resource callback.

cc&apos;ing Alex (author of the DataCallback-&gt;CompletionHandler patch).

Trying to summarise:

A) GLib usage of getResourceData relied on the error parameter to detect the cancellation of the request and notifying the public API users of WebKitWebResource. This parameter was removed from the DataCallback as part of r272636.
B) As part of the move to completion handler, now the data callback is not invalidated when cancelling the load (as it was in m_callbacks.invalidate()).
C) An alternative to the error code seems to be detecting a null data parameter in the data callback, which was and still is the case.
D) One issue with this after r272636 is that for empty resources, while before we used to get an non-nil empty array in the data argument, now we get a nil one. Maybe something odd in the marshaling of the data reference through the IPC?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729605</commentid>
    <comment_count>14</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-02-16 03:00:14 -0800</bug_when>
    <thetext>This is because now that we use sendWithAsyncReply, in case the message is cancelled, the callback is called with a new DataReference(). When the message is not cancelled, but the resource is empty the callback is called with the empty DataReference. In both cases API::Data::create() is now called taking the DataReference (instead of data + size) that returns nullptr in case of empty size. So, there are two problems here. There&apos;s a change in behavior that affects all the ports, because empty resources are broken, we should receive an empty API::Data instead of nullptr, getting an empty resource is not an error. That could be fixed by using API::Data::create() that receives data and size. But cancelling the message is also using an empty DataReference, so it&apos;s not possible to differentiate between a message cancellation and empty resource.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729609</commentid>
    <comment_count>15</comment_count>
      <attachid>420446</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-02-16 03:49:46 -0800</bug_when>
    <thetext>Created attachment 420446
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729610</commentid>
    <comment_count>16</comment_count>
      <attachid>420447</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-02-16 03:53:13 -0800</bug_when>
    <thetext>Created attachment 420447
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729639</commentid>
    <comment_count>17</comment_count>
      <attachid>420447</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-02-16 05:57:12 -0800</bug_when>
    <thetext>Comment on attachment 420447
Patch

Looks good.

Needs owner approval from Alex.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729705</commentid>
    <comment_count>18</comment_count>
      <attachid>420447</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-02-16 09:15:57 -0800</bug_when>
    <thetext>Comment on attachment 420447
Patch

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

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:3738
&gt; +void WebPage::getWebArchiveOfFrame(FrameIdentifier frameID, CompletionHandler&lt;void(const Optional&lt;IPC::DataReference&gt;&amp;)&gt;&amp;&amp; callback)

I don&apos;t see a code path where these would be called with nullopt.  This change doesn&apos;t do anything.  Same with all the changes in WebPage.{cpp, h, messages.in}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729713</commentid>
    <comment_count>19</comment_count>
      <attachid>420447</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-02-16 09:29:59 -0800</bug_when>
    <thetext>Comment on attachment 420447
Patch

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebResource.cpp:350
&gt; +    if (!wkData) {
&gt; +        g_task_return_new_error(task, G_IO_ERROR, G_IO_ERROR_CANCELLED, _(&quot;Operation was cancelled&quot;));
&gt; +        return;
&gt; +    }

Also you need to call g_task_return_error_if_cancelled(). Seems we were always missing that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730136</commentid>
    <comment_count>20</comment_count>
      <attachid>420447</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-02-16 22:05:54 -0800</bug_when>
    <thetext>Comment on attachment 420447
Patch

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

&gt;&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:3738
&gt;&gt; +void WebPage::getWebArchiveOfFrame(FrameIdentifier frameID, CompletionHandler&lt;void(const Optional&lt;IPC::DataReference&gt;&amp;)&gt;&amp;&amp; callback)
&gt; 
&gt; I don&apos;t see a code path where these would be called with nullopt.  This change doesn&apos;t do anything.  Same with all the changes in WebPage.{cpp, h, messages.in}

Because it&apos;s generated code. It happens when the reply is cancelled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730137</commentid>
    <comment_count>21</comment_count>
      <attachid>420447</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-02-16 22:07:55 -0800</bug_when>
    <thetext>Comment on attachment 420447
Patch

True.
For the cocoa code, instead of using Optional&lt;DataReference&gt; I just made it so the API translation layer translates an empty data reference into null.  There won&apos;t be any case where we want a non-null data object containing zero bytes.  You might consider doing the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730145</commentid>
    <comment_count>22</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-02-16 22:22:45 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #21)
&gt; Comment on attachment 420447 [details]
&gt; Patch
&gt; 
&gt; True.
&gt; For the cocoa code, instead of using Optional&lt;DataReference&gt; I just made it
&gt; so the API translation layer translates an empty data reference into null. 
&gt; There won&apos;t be any case where we want a non-null data object containing zero
&gt; bytes.  You might consider doing the same.

In GLib API null means there was an error and we should fill the GError too. An empty resources is not an error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730209</commentid>
    <comment_count>23</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-02-17 02:21:01 -0800</bug_when>
    <thetext>Committed r272991 (234194@main): &lt;https://commits.webkit.org/234194@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730247</commentid>
    <comment_count>24</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-02-17 06:29:55 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #22)
&gt; In GLib API null means there was an error and we should fill the GError too.
&gt; An empty resources is not an error.

Indeed, history there in bug #186276.

(In reply to Michael Catanzaro from comment #19)
&gt; Also you need to call g_task_return_error_if_cancelled(). Seems we were
&gt; always missing that.

I see you landed without this. That means the function will return success even if it is cancelled before it is completed. That&apos;s weird, right? Even though the cancellation can&apos;t actually work properly because the GCancellable cannot be passed to the underlying WebKit API, we should still fake it by returning G_IO_ERROR_CANCELLED in case it got cancelled before the callback returned.

That is, you&apos;ve covered the tricky case where the call gets indirectly canceled at the WebKit level, but forgot the simple case where it&apos;s cancelled using the GCancellable. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730249</commentid>
    <comment_count>25</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-02-17 06:33:02 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #24)
&gt; (In reply to Carlos Garcia Campos from comment #22)
&gt; &gt; In GLib API null means there was an error and we should fill the GError too.
&gt; &gt; An empty resources is not an error.
&gt; 
&gt; Indeed, history there in bug #186276.
&gt; 
&gt; (In reply to Michael Catanzaro from comment #19)
&gt; &gt; Also you need to call g_task_return_error_if_cancelled(). Seems we were
&gt; &gt; always missing that.
&gt; 
&gt; I see you landed without this. That means the function will return success
&gt; even if it is cancelled before it is completed. That&apos;s weird, right? Even
&gt; though the cancellation can&apos;t actually work properly because the
&gt; GCancellable cannot be passed to the underlying WebKit API, we should still
&gt; fake it by returning G_IO_ERROR_CANCELLED in case it got cancelled before
&gt; the callback returned.
&gt; 
&gt; That is, you&apos;ve covered the tricky case where the call gets indirectly
&gt; canceled at the WebKit level, but forgot the simple case where it&apos;s
&gt; cancelled using the GCancellable. :)

Yes, sorry, I forgot to comment about it. I&apos;ll do that in a separate patch, adding a specific test for that case too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730252</commentid>
    <comment_count>26</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-02-17 06:45:26 -0800</bug_when>
    <thetext>OK. I think this simple test would work, it just takes testWebResourceGetDataEmpty, adds a GCancellable, and then replaces the callback with the one from testWebResourceGetDataError:

static void testWebResourceGetDataCancelled(Test* test, gconstpointer)
{
    GRefPtr&lt;GMainLoop&gt; mainLoop = adoptGRef(g_main_loop_new(nullptr, FALSE));
    GRefPtr&lt;WebKitWebView&gt; webView = WEBKIT_WEB_VIEW(Test::createWebView(test-&gt;m_webContext.get()));
    webkit_web_view_load_html(webView.get(), &quot;&quot;, nullptr);
    g_signal_connect(webView.get(), &quot;load-changed&quot;, G_CALLBACK(webViewLoadChanged), mainLoop.get());
    g_main_loop_run(mainLoop.get());

    auto* resource = webkit_web_view_get_main_resource(webView.get());
    test-&gt;assertObjectIsDeletedWhenTestFinishes(G_OBJECT(resource));
    GRefPtr&lt;GCancellable&gt; cancellable = adoptGRef(g_cancellable_new());
    webkit_web_resource_get_data(resource, cancellable.get(), [](GObject* source, GAsyncResult* result, gpointer userData) {
        size_t dataSize;
        GUniqueOutPtr&lt;GError&gt; error;
        auto* data = webkit_web_resource_get_data_finish(WEBKIT_WEB_RESOURCE(source), result, &amp;dataSize, &amp;error.outPtr());
        g_assert_null(data);
        g_assert_error(error.get(), G_IO_ERROR, G_IO_ERROR_CANCELLED);
        g_main_loop_quit(static_cast&lt;GMainLoop*&gt;(userData));
    }, mainLoop.get());
    g_cancellable_cancel(cancellable.get());
    g_main_loop_run(mainLoop.get());
}

In theory, that should work....</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420088</attachid>
            <date>2021-02-11 20:40:49 -0800</date>
            <delta_ts>2021-02-12 10:57:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221672-20210212014048.patch</filename>
            <type>text/plain</type>
            <size>6249</size>
            <attacher name="Lauro Moura">lmoura</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBiNjU0NTMwY2I2YzNiMTM5
ZDJkZGE4MTA0ZGYzNzdlMzNmZjI1NmYuLjNhMDE3YzYxMzBlOGRhYjBjMmNiNTBmNWJlYzI5OTYy
Y2Y0M2RlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjEtMDItMTEgIExhdXJvIE1v
dXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTihyMjcyNjM2KSBb
R1RLXSBDcmFzaCBhbmQgZmFpbHVyZXMgaW4gQVBJIHRlc3QgL1dlYktpdDJHdGsvVGVzdFJlc291
cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIx
NjcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IG1lbnRpb25lZCByZXZpc2lvbiByZW1vdmVkIHRoZSBlcnJvciBhcmd1bWVudCBmcm9tIHRoZSBy
ZXNvdXJjZQorICAgICAgICBjYWxsYmFjayBhbmQgaW5zdGVhZCBhIG51bGwgZGF0YSBpcyBwYXNz
ZWQgd2hlbiB0aGVyZSBpcyBubyBmcmFtZS4KKyAgICAgICAgSXQgYWxzbyByZW1vdmVkIHRoZSBj
aGVjayBmb3IgdGhlIGVycm9yIHRoYXQgcHJldmVudGVkCisgICAgICAgIGRlcmVmZXJlbmNpbmcg
YSBudWxsIHBvaW50ZXIuCisKKyAgICAgICAgSW5zdGVhZCBvZiByZXR1cm5pbmcgYW4gZXJyb3Is
IG5vdyB3aGVuIHRoZSBvcGVyYXRpb24gaXMgY2FuY2VsbGVkIGl0CisgICAgICAgIGp1c3QgcmV0
dXJucyB0aGUgZW1wdHkgZGF0YS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3Rz
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlJlc291cmNlLmNwcDoK
KyAgICAgICAgKHJlc291cmNlRGF0YUNhbGxiYWNrKToKKwogMjAyMS0wMi0xMSAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlldyB1c2FnZSBvZiBhZG9wdE5T
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YlJlc291cmNlLmNwcAppbmRleCA4MTJmYTE2YTlkYjY2NTY1MDQ2ODZjNDUwYTY1OTk3NDk4MDU3
ZjZhLi4xYTc0ODA1ZTBiOWRlNTdjMzlhN2VkMWUyYTU5MzU2MWYwNjA5YTc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJSZXNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViUmVzb3VyY2Uu
Y3BwCkBAIC0zNDYsNyArMzQ2LDggQEAgc3RhdGljIHZvaWQgcmVzb3VyY2VEYXRhQ2FsbGJhY2so
QVBJOjpEYXRhKiB3a0RhdGEsIEdUYXNrKiB0YXNrKQogewogICAgIFJlc291cmNlR2V0RGF0YUFz
eW5jRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PFJlc291cmNlR2V0RGF0YUFzeW5jRGF0YSo+KGdf
dGFza19nZXRfdGFza19kYXRhKHRhc2spKTsKICAgICBkYXRhLT53ZWJEYXRhID0gd2tEYXRhOwot
ICAgIGlmICghd2tEYXRhLT5ieXRlcygpKQorCisgICAgaWYgKCF3a0RhdGEgfHwgIXdrRGF0YS0+
Ynl0ZXMoKSkKICAgICAgICAgZGF0YS0+d2ViRGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KCIiKSwgMSk7CiAgICAgZ190YXNrX3Jl
dHVybl9ib29sZWFuKHRhc2ssIFRSVUUpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDc2ZTNhOWJhYTAyYjE5OWUyMTQxY2QxYWY5MjMyYTM2
YmNjNjc1ZTQuLjdmNzc4ZWFmNDIzMjYxOTI5Yzc1M2M2M2E2M2U2MDQ2NzRhODFmNmIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OSBAQAorMjAyMS0wMi0xMSAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdhbGlhLmNvbT4KKworICAg
ICAgICBSRUdSRVNTSU9OKHIyNzI2MzYpIFtHVEtdIENyYXNoIGFuZCBmYWlsdXJlcyBpbiBBUEkg
dGVzdCAvV2ViS2l0Mkd0ay9UZXN0UmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE2NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBcyBub3cgaW5zdGVhZCBvZiBhbiBlcnJvciB3ZSByZXR1
cm4gdGhlIGVtcHR5IGRhdGEsIHRoZQorICAgICAgICBnZXQtZGF0YS1lcnJvciB0ZXN0IGlzIG5v
dCBuZWVkZWQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dFJlc291cmNlcy5jcHA6CisgICAgICAgIChiZWZvcmVBbGwpOiBSZW1vdmUgdW5uZWVkZWQgdGVz
dCBjYXNlLgorICAgICAgICAodGVzdFdlYlJlc291cmNlR2V0RGF0YUVycm9yKTogRGVsZXRlZC4K
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvVGVzdEV4cGVjdGF0aW9ucy5qc29uOiBVcGRh
dGUgZXhwZWN0YXRpb25zIHdpdGgKKyAgICAgICAgcmVtYWluaW5nIFdQRSBmYWlsdXJlLgorCiAy
MDIxLTAyLTExICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtX
UEVdIEZpeCBXUEVRdCB0ZXN0cyBhZnRlciByMjcyNzA3CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFJlc291cmNlcy5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFJlc291cmNlcy5jcHAKaW5kZXggODQxMzFj
ODU0ZGZjNTIwODEzODJiMTJlNTM1N2NiOWE1ZWIzZWZjNC4uNWFlZjQ3MjUwNTA2NDM4MGFlZDVh
ZDMyYjJmYjgwMTU0Mjc4MTQ4OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RSZXNvdXJjZXMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0UmVzb3VyY2VzLmNwcApAQCAtNTQ0LDI4ICs1NDQsNiBAQCBz
dGF0aWMgdm9pZCB3ZWJWaWV3TG9hZENoYW5nZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2Vi
S2l0TG9hZEV2ZW50IGxvYWRFdmVudAogICAgIGdfbWFpbl9sb29wX3F1aXQobWFpbkxvb3ApOwog
fQogCi1zdGF0aWMgdm9pZCB0ZXN0V2ViUmVzb3VyY2VHZXREYXRhRXJyb3IoVGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKLXsKLSAgICBHUmVmUHRyPEdNYWluTG9vcD4gbWFpbkxvb3AgPSBhZG9w
dEdSZWYoZ19tYWluX2xvb3BfbmV3KG51bGxwdHIsIEZBTFNFKSk7Ci0gICAgR1JlZlB0cjxXZWJL
aXRXZWJWaWV3PiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKFRlc3Q6OmNyZWF0ZVdlYlZpZXco
dGVzdC0+bV93ZWJDb250ZXh0LmdldCgpKSk7Ci0gICAgd2Via2l0X3dlYl92aWV3X2xvYWRfaHRt
bCh3ZWJWaWV3LmdldCgpLCAiPGh0bWw+PC9odG1sPiIsIG51bGxwdHIpOwotICAgIGdfc2lnbmFs
X2Nvbm5lY3Qod2ViVmlldy5nZXQoKSwgImxvYWQtY2hhbmdlZCIsIEdfQ0FMTEJBQ0sod2ViVmll
d0xvYWRDaGFuZ2VkKSwgbWFpbkxvb3AuZ2V0KCkpOwotICAgIGdfbWFpbl9sb29wX3J1bihtYWlu
TG9vcC5nZXQoKSk7Ci0KLSAgICBhdXRvKiByZXNvdXJjZSA9IHdlYmtpdF93ZWJfdmlld19nZXRf
bWFpbl9yZXNvdXJjZSh3ZWJWaWV3LmdldCgpKTsKLSAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0Rl
bGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHJlc291cmNlKSk7Ci0gICAgd2Via2l0X3dl
Yl9yZXNvdXJjZV9nZXRfZGF0YShyZXNvdXJjZSwgbnVsbHB0ciwgW10oR09iamVjdCogc291cmNl
LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKLSAgICAgICAgc2l6
ZV90IGRhdGFTaXplOwotICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAg
ICAgIGF1dG8qIGRhdGEgPSB3ZWJraXRfd2ViX3Jlc291cmNlX2dldF9kYXRhX2ZpbmlzaChXRUJL
SVRfV0VCX1JFU09VUkNFKHNvdXJjZSksIHJlc3VsdCwgJmRhdGFTaXplLCAmZXJyb3Iub3V0UHRy
KCkpOwotICAgICAgICBnX2Fzc2VydF9udWxsKGRhdGEpOwotICAgICAgICBnX2Fzc2VydF9lcnJv
cihlcnJvci5nZXQoKSwgR19JT19FUlJPUiwgR19JT19FUlJPUl9DQU5DRUxMRUQpOwotICAgICAg
ICBnX21haW5fbG9vcF9xdWl0KHN0YXRpY19jYXN0PEdNYWluTG9vcCo+KHVzZXJEYXRhKSk7Ci0g
ICAgfSwgbWFpbkxvb3AuZ2V0KCkpOwotICAgIHdlYlZpZXcgPSBudWxscHRyOwotICAgIGdfbWFp
bl9sb29wX3J1bihtYWluTG9vcC5nZXQoKSk7Ci19Ci0KIHN0YXRpYyB2b2lkIHRlc3RXZWJSZXNv
dXJjZUdldERhdGFFbXB0eShUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIEdSZWZQ
dHI8R01haW5Mb29wPiBtYWluTG9vcCA9IGFkb3B0R1JlZihnX21haW5fbG9vcF9uZXcobnVsbHB0
ciwgRkFMU0UpKTsKQEAgLTkxNyw3ICs4OTUsNiBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgU2lu
Z2xlUmVzb3VyY2VMb2FkVGVzdDo6YWRkKCJXZWJLaXRXZWJSZXNvdXJjZSIsICJzdWdnZXN0ZWQt
ZmlsZW5hbWUiLCB0ZXN0V2ViUmVzb3VyY2VTdWdnZXN0ZWRGaWxlbmFtZSk7CiAgICAgUmVzb3Vy
Y2VVUklUcmFja2luZ1Rlc3Q6OmFkZCgiV2ViS2l0V2ViUmVzb3VyY2UiLCAiYWN0aXZlLXVyaSIs
IHRlc3RXZWJSZXNvdXJjZUFjdGl2ZVVSSSk7CiAgICAgUmVzb3VyY2VzVGVzdDo6YWRkKCJXZWJL
aXRXZWJSZXNvdXJjZSIsICJnZXQtZGF0YSIsIHRlc3RXZWJSZXNvdXJjZUdldERhdGEpOwotICAg
IFRlc3Q6OmFkZCgiV2ViS2l0V2ViUmVzb3VyY2UiLCAiZ2V0LWRhdGEtZXJyb3IiLCB0ZXN0V2Vi
UmVzb3VyY2VHZXREYXRhRXJyb3IpOwogICAgIFRlc3Q6OmFkZCgiV2ViS2l0V2ViUmVzb3VyY2Ui
LCAiZ2V0LWRhdGEtZW1wdHkiLCB0ZXN0V2ViUmVzb3VyY2VHZXREYXRhRW1wdHkpOwogICAgIFNp
bmdsZVJlc291cmNlTG9hZFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJoaXN0b3J5LWNhY2hl
IiwgdGVzdFdlYlZpZXdSZXNvdXJjZXNIaXN0b3J5Q2FjaGUpOwogICAgIFNlbmRSZXF1ZXN0VGVz
dDo6YWRkKCJXZWJLaXRXZWJQYWdlIiwgInNlbmQtcmVxdWVzdCIsIHRlc3RXZWJSZXNvdXJjZVNl
bmRSZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9UZXN0RXhw
ZWN0YXRpb25zLmpzb24gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvVGVzdEV4cGVjdGF0aW9u
cy5qc29uCmluZGV4IGU0YzI4Njc0NmNjNTczMTBmMWVmMjg1ZTMxNTE3MmViMWNkMzdkYjIuLjI4
ZDU1M2I5MWQxN2Y3OWM5ZDY3NTYzZDQwOGI0MDhmOTUyZTEzMzIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ2xpYi9UZXN0RXhwZWN0YXRpb25zLmpzb24KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMuanNvbgpAQCAtMjc4LDE2ICsyNzgsOSBA
QAogICAgIH0sCiAgICAgIlRlc3RSZXNvdXJjZXMiOiB7CiAgICAgICAgICJzdWJ0ZXN0cyI6IHsK
LSAgICAgICAgICAgICIvd2Via2l0L1dlYktpdFdlYlJlc291cmNlL2dldC1kYXRhLWVycm9yIjog
ewotICAgICAgICAgICAgICAgICJleHBlY3RlZCI6IHsKLSAgICAgICAgICAgICAgICAgICAgIndw
ZSI6IHsic3RhdHVzIjogWyJGQUlMIl19LAotICAgICAgICAgICAgICAgICAgICAiZ3RrIjogeyJz
dGF0dXMiOiBbIkNSQVNIIiwgIkZBSUwiXSwgImJ1ZyI6ICJ3ZWJraXQub3JnL2IvMjIxNjcyIn0K
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAogICAgICAgICAgICAgIi93ZWJraXQv
V2ViS2l0V2ViUmVzb3VyY2UvZ2V0LWRhdGEtZW1wdHkiOiB7CiAgICAgICAgICAgICAgICAgImV4
cGVjdGVkIjogewotICAgICAgICAgICAgICAgICAgICAid3BlIjogeyJzdGF0dXMiOiBbIkZBSUwi
XX0sCi0gICAgICAgICAgICAgICAgICAgICJndGsiOiB7InN0YXR1cyI6IFsiRkFJTCJdLCAiYnVn
IjogIndlYmtpdC5vcmcvYi8yMjE2NzIifQorICAgICAgICAgICAgICAgICAgICAid3BlIjogeyJz
dGF0dXMiOiBbIkZBSUwiXSwgImJ1ZyI6ICJ3ZWJraXQub3JnL2IvMjIxODA0In0KICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420149</attachid>
            <date>2021-02-12 10:57:05 -0800</date>
            <delta_ts>2021-02-15 19:58:39 -0800</delta_ts>
            <desc>Version returning error</desc>
            <filename>bug-221672-20210212155704.patch</filename>
            <type>text/plain</type>
            <size>5051</size>
            <attacher name="Lauro Moura">lmoura</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ1YTEzODlhZjNkOTE2NDBl
MWQ2MmVkM2I5NDNlMTM5MjQxYjBlYjIuLjdjYmUwMzFhODIzZmQyYWY1OTE0NGQ5MDY2MTI1YTky
MTI1YjhlMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjEtMDItMTIgIExhdXJvIE1v
dXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTihyMjcyNjM2KSBb
R1RLXSBDcmFzaCBhbmQgZmFpbHVyZXMgaW4gQVBJIHRlc3QgL1dlYktpdDJHdGsvVGVzdFJlc291
cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIx
NjcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IG1lbnRpb25lZCByZXZpc2lvbiByZW1vdmVkIHRoZSBlcnJvciBhcmd1bWVudCBmcm9tIHRoZSBy
ZXNvdXJjZQorICAgICAgICBjYWxsYmFjayBhbmQgaW5zdGVhZCBhIG51bGwgZGF0YSBpcyBwYXNz
ZWQgd2hlbiB0aGVyZSBpcyBubyBmcmFtZS4KKyAgICAgICAgSXQgYWxzbyByZW1vdmVkIHRoZSBj
aGVjayBmb3IgdGhlIGVycm9yIHRoYXQgcHJldmVudGVkCisgICAgICAgIGRlcmVmZXJlbmNpbmcg
YSBudWxsIHBvaW50ZXIsIGxlYWRpbmcgdG8gcG90ZW50aWFsIHNlZ2ZhdWx0cy4KKworICAgICAg
ICBUaGlzIGNvbW1pdCBhZGRzIGJhY2sgdGhlIGNoZWNrIGFuZCBlcnJvciByZXR1cm4gZm9yIHRo
ZXNlIGNhc2VzIHRvCisgICAgICAgIGtlZXAgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBjdXJyZW50
IEFQSSAocmV0dXJuaW5nIGFuIGVycm9yIHdpdGggbnVsbAorICAgICAgICBkYXRhKS4gVGhlIHNp
ZGUgZWZmZWN0IGlzIHRoYXQgZW1wdHkgcmVzb3VyY2VzIG5vdyB3aWxsIHJldHVybiBhcworICAg
ICAgICBHX0lPX0VSUk9SX0NBTkNFTExFRCBhcyB3ZWxsLgorCisgICAgICAgIENvdmVyZWQgYnkg
ZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
UmVzb3VyY2UuY3BwOgorICAgICAgICAocmVzb3VyY2VEYXRhQ2FsbGJhY2spOgorCiAyMDIxLTAy
LTEyICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgR1BV
IHByb2Nlc3MgV2ViR0wgY29udGV4dCB0b0RhdGFVUkwgZG9lcyBub3Qgd29yayBmb3Igbm9uLXBy
ZW11bHRpcGxpZWQgY29udGV4dHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYlJlc291cmNlLmNwcAppbmRleCA4MTJmYTE2YTlkYjY2NTY1MDQ2
ODZjNDUwYTY1OTk3NDk4MDU3ZjZhLi5mNzdmMTNhN2RhZDI5NDMzMmYwMGU1Mjg0MGQ5MDVmNjdi
OTQ5ZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViUmVzb3VyY2UuY3BwCkBAIC0zNDYsNiArMzQ2LDExIEBAIHN0YXRpYyB2b2lkIHJl
c291cmNlRGF0YUNhbGxiYWNrKEFQSTo6RGF0YSogd2tEYXRhLCBHVGFzayogdGFzaykKIHsKICAg
ICBSZXNvdXJjZUdldERhdGFBc3luY0RhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUdl
dERhdGFBc3luY0RhdGEqPihnX3Rhc2tfZ2V0X3Rhc2tfZGF0YSh0YXNrKSk7CiAgICAgZGF0YS0+
d2ViRGF0YSA9IHdrRGF0YTsKKyAgICBpZiAoIXdrRGF0YSkgeworICAgICAgICBnX3Rhc2tfcmV0
dXJuX25ld19lcnJvcih0YXNrLCBHX0lPX0VSUk9SLCBHX0lPX0VSUk9SX0NBTkNFTExFRCwgXygi
T3BlcmF0aW9uIHdhcyBjYW5jZWxsZWQiKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAg
ICBpZiAoIXdrRGF0YS0+Ynl0ZXMoKSkKICAgICAgICAgZGF0YS0+d2ViRGF0YSA9IEFQSTo6RGF0
YTo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KCIiKSwgMSk7
CiAgICAgZ190YXNrX3JldHVybl9ib29sZWFuKHRhc2ssIFRSVUUpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDRjZjI1NjA3MTVjMTdmODVlYzhh
MmRmMWNkNzk0MTZhNjBlZjE1OWUuLmIyY2I2ZWE5ZTBlNTVlNWQ5MWNmMTAxNDUzODE1MzRiY2Vi
MWE0NDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAyMS0wMi0xMiAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdhbGlh
LmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OKHIyNzI2MzYpIFtHVEtdIENyYXNoIGFuZCBmYWls
dXJlcyBpbiBBUEkgdGVzdCAvV2ViS2l0Mkd0ay9UZXN0UmVzb3VyY2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE2NzIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0UmVzb3VyY2VzLmNwcDoKKyAgICAgICAgKHRlc3RXZWJSZXNvdXJjZUdl
dERhdGFFbXB0eSk6IE1hdGNoIGFzc2VydGlvbnMgd2l0aCBnZXQtZGF0YS1lcnJvcgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9UZXN0RXhwZWN0YXRpb25zLmpzb246IFVwZGF0ZSBleHBl
Y3RhdGlvbnMgd2l0aAorICAgICAgICByZW1haW5pbmcgV1BFIGZhaWx1cmUuCisKIDIwMjEtMDIt
MTIgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtidWls
ZC53ZWJraXQub3JnXSBEZWxldGUgdW51c2VkIE1ha2VmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFJlc291cmNlcy5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFJlc291cmNlcy5jcHAKaW5kZXggODQx
MzFjODU0ZGZjNTIwODEzODJiMTJlNTM1N2NiOWE1ZWIzZWZjNC4uNmFiNDc3ZWFkNTMzZTAxZmRm
MDc3OGQ5OGFhNDFjNWI3MDQzYzdjNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RSZXNvdXJjZXMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0UmVzb3VyY2VzLmNwcApAQCAtNTgwLDEwICs1ODAsOCBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2ViUmVzb3VyY2VHZXREYXRhRW1wdHkoVGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKICAgICAgICAgc2l6ZV90IGRhdGFTaXplOwogICAgICAgICBHVW5pcXVlT3V0
UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIGF1dG8qIGRhdGEgPSB3ZWJraXRfd2ViX3Jlc291
cmNlX2dldF9kYXRhX2ZpbmlzaChXRUJLSVRfV0VCX1JFU09VUkNFKHNvdXJjZSksIHJlc3VsdCwg
JmRhdGFTaXplLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgICAgICBnX2Fzc2VydF9ub25udWxsKGRh
dGEpOwotICAgICAgICBnX2Fzc2VydF9jbXB1aW50KGRhdGFTaXplLCA9PSwgMSk7Ci0gICAgICAg
IGdfYXNzZXJ0X2NtcGludChkYXRhWzBdLCA9PSwgJ1wwJyk7Ci0gICAgICAgIGdfYXNzZXJ0X25v
X2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfbnVsbChkYXRhKTsKKyAgICAg
ICAgZ19hc3NlcnRfZXJyb3IoZXJyb3IuZ2V0KCksIEdfSU9fRVJST1IsIEdfSU9fRVJST1JfQ0FO
Q0VMTEVEKTsKICAgICAgICAgZ19tYWluX2xvb3BfcXVpdChzdGF0aWNfY2FzdDxHTWFpbkxvb3Aq
Pih1c2VyRGF0YSkpOwogICAgIH0sIG1haW5Mb29wLmdldCgpKTsKICAgICBnX21haW5fbG9vcF9y
dW4obWFpbkxvb3AuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGli
L1Rlc3RFeHBlY3RhdGlvbnMuanNvbiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9UZXN0RXhw
ZWN0YXRpb25zLmpzb24KaW5kZXggZTRjMjg2NzQ2Y2M1NzMxMGYxZWYyODVlMzE1MTcyZWIxY2Qz
N2RiMi4uNmYxOTg3MGM1NjI4NGZhNjA4OTBjNjRhMTYyMDFlOWMxNzMzMTJkNyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMuanNvbgorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL2dsaWIvVGVzdEV4cGVjdGF0aW9ucy5qc29uCkBAIC0yODAsMTQg
KzI4MCwxMiBAQAogICAgICAgICAic3VidGVzdHMiOiB7CiAgICAgICAgICAgICAiL3dlYmtpdC9X
ZWJLaXRXZWJSZXNvdXJjZS9nZXQtZGF0YS1lcnJvciI6IHsKICAgICAgICAgICAgICAgICAiZXhw
ZWN0ZWQiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJ3cGUiOiB7InN0YXR1cyI6IFsiRkFJTCJd
fSwKLSAgICAgICAgICAgICAgICAgICAgImd0ayI6IHsic3RhdHVzIjogWyJDUkFTSCIsICJGQUlM
Il0sICJidWciOiAid2Via2l0Lm9yZy9iLzIyMTY3MiJ9CisgICAgICAgICAgICAgICAgICAgICJ3
cGUiOiB7InN0YXR1cyI6IFsiRkFJTCJdLCAiYnVnIjogIndlYmtpdC5vcmcvYi8yMjE4MDQifQog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAiL3dlYmtpdC9X
ZWJLaXRXZWJSZXNvdXJjZS9nZXQtZGF0YS1lbXB0eSI6IHsKICAgICAgICAgICAgICAgICAiZXhw
ZWN0ZWQiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJ3cGUiOiB7InN0YXR1cyI6IFsiRkFJTCJd
fSwKLSAgICAgICAgICAgICAgICAgICAgImd0ayI6IHsic3RhdHVzIjogWyJGQUlMIl0sICJidWci
OiAid2Via2l0Lm9yZy9iLzIyMTY3MiJ9CisgICAgICAgICAgICAgICAgICAgICJ3cGUiOiB7InN0
YXR1cyI6IFsiRkFJTCJdLCAiYnVnIjogIndlYmtpdC5vcmcvYi8yMjE4MDQifQogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQo=
</data>
<flag name="commit-queue"
          id="438575"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420446</attachid>
            <date>2021-02-16 03:49:46 -0800</date>
            <delta_ts>2021-02-16 03:53:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-empty-resources.diff</filename>
            <type>text/plain</type>
            <size>11704</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZWZkNThlZGI1ZWJjLi45YzE1YTdlNWExMmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjcgQEAKKzIwMjEtMDItMTYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04ocjI3MjYzNikgW0dUS10gQ3Jhc2ggYW5kIGZh
aWx1cmVzIGluIEFQSSB0ZXN0IC9XZWJLaXQyR3RrL1Rlc3RSZXNvdXJjZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTY3MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIHIyNzI2MzYgaXQncyBu
byBsb25nZXIgcG9zc2libGUgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGFzeW5jIHJlcGx5IGJl
aW5nIGNhbmNlbGxlZCBvciBkYXRhIGp1c3QgYmVpbmcKKyAgICAgICAgZW1wdHkgZm9yIFdlYlBh
Z2VQcm94eSBkYXRhIGNvbXBsZXRpb24gaGFuZGxlcnMuIFVzZSBPcHRpb25hbCB0byBpbmRpY2F0
ZSB0aGF0IHRoZSByZXBseSB3YXMgY2FubGxlZCB3aGVuIGl0cworICAgICAgICBkYXRhIGlzIG51
bGxvcHQsIGFuZCBlbnN1cmUgd2UgYWx3YXlzIHByb3ZpZGUgYSB2YWxpZCBBUEk6OkRhdGEgb2Jq
ZWN0IHdoZW4gZGF0YSBpcyBub3QgbnVsbG9wdC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5OiBIYW5kbGUgdGhlIHNwZWNpYWwgY2FzZSBvZiBTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlIGFzIE9wdGlvbmFsLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJSZXNvdXJjZS5jcHA6CisgICAgICAgIChyZXNvdXJjZURhdGFDYWxsYmFjayk6IEJyaW5n
IGJhY2sgdGhlIGNhbmNlbGxhdGlvbiBlcnJvciBoYW5kbGluZy4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMS0wMi0xNSAgUGVyIEFybmUgIDxwdm9sbGFuQGFwcGxl
LmNvbT4KIAogICAgICAgICBbbWFjT1NdIENsb3NlIFhQQyBjb25uZWN0aW9ucyBiZWZvcmUgZW50
ZXJpbmcgc2FuZGJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5k
ZXggYmQzNDdjMzZmYjMxLi44ZDJkYzk4YjE1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQpAQCAtMTQzLDYgKzE0Myw4IEBAIGRlZiBmdW5jdGlvbl9wYXJhbWV0
ZXJfdHlwZSh0eXBlLCBraW5kKToKIGRlZiByZXBseV90eXBlKHR5cGUpOgogICAgIGlmIHR5cGUg
PT0gJ0lQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSc6CiAgICAgICAgIHJldHVybiAnSVBD
OjpEYXRhUmVmZXJlbmNlJworICAgIGlmIHR5cGUgPT0gJ09wdGlvbmFsPElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZT4nOgorICAgICAgICByZXR1cm4gJ09wdGlvbmFsPElQQzo6RGF0YVJl
ZmVyZW5jZT4nOwogICAgIHJldHVybiB0eXBlCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViUmVzb3VyY2UuY3BwCmluZGV4IDgxMmZhMTZh
OWRiNi4uMTgxMmQ0ZWE2NTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViUmVzb3VyY2UuY3BwCkBAIC0zNDQsNiArMzQ0LDExIEBAIFdF
QktJVF9ERUZJTkVfQVNZTkNfREFUQV9TVFJVQ1QoUmVzb3VyY2VHZXREYXRhQXN5bmNEYXRhKQog
CiBzdGF0aWMgdm9pZCByZXNvdXJjZURhdGFDYWxsYmFjayhBUEk6OkRhdGEqIHdrRGF0YSwgR1Rh
c2sqIHRhc2spCiB7CisgICAgaWYgKCF3a0RhdGEpIHsKKyAgICAgICAgZ190YXNrX3JldHVybl9u
ZXdfZXJyb3IodGFzaywgR19JT19FUlJPUiwgR19JT19FUlJPUl9DQU5DRUxMRUQsIF8oIk9wZXJh
dGlvbiB3YXMgY2FuY2VsbGVkIikpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgUmVz
b3VyY2VHZXREYXRhQXN5bmNEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VHZXREYXRh
QXN5bmNEYXRhKj4oZ190YXNrX2dldF90YXNrX2RhdGEodGFzaykpOwogICAgIGRhdGEtPndlYkRh
dGEgPSB3a0RhdGE7CiAgICAgaWYgKCF3a0RhdGEtPmJ5dGVzKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBlMjViY2E5Y2ZhZDYuLjNkNmEzMjQwMGFmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC00MTI0LDEwICs0
MTI0LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KCksIFdURk1vdmUo
Y2FsbGJhY2spKTsKIH0KIAotc3RhdGljIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhKT4gdG9BUElEYXRhQ2FsbGJhY2soQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChBUEk6OkRhdGEqKT4mJiBjYWxsYmFjaykKK3N0YXRpYyBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IE9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mIGRhdGEpPiB0b0FQSURh
dGFDYWxsYmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmIGNhbGxiYWNr
KQogewotICAgIHJldHVybiBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxiYWNrKEFQSTo6
RGF0YTo6Y3JlYXRlKGRhdGEpLmdldCgpKTsKKyAgICByZXR1cm4gW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldIChjb25zdCBPcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+JiBkYXRhKSBt
dXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soZGF0YSA/IEFQSTo6RGF0YTo6Y3JlYXRlKGRhdGEt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKS5wdHIoKSA6IG51bGxwdHIpOwogICAgIH07CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMDNjOWNh
OWVlOTM3Li5jYzM4YTMzYzg3YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC0zNjU2LDcgKzM2NTYsNyBAQCBzdGF0aWMgRnJhbWUqIGZyYW1l
V2l0aFNlbGVjdGlvbihQYWdlKiBwYWdlKQogICAgIHJldHVybiAwOwogfQogCi12b2lkIFdlYlBh
Z2U6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6Z2V0
U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9w
dGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKIHsKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwpAQCAtMzY5MCw3ICszNjkw
LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRTb3VyY2VGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgKICAgICBjYWxsYmFjayhyZXN1bHRTdHJpbmcp
OwogfQogCi12b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpnZXRNYWlu
UmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+
Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAg
IGlmIChXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShm
cmFtZUlEKSkgewpAQCAtMzcyMSw3ICszNzIxLDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXIK
ICAgICByZXR1cm4gJnN1YnJlc291cmNlLT5kYXRhKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0
UmVzb3VyY2VEYXRhRnJvbUZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJp
bmcmIHJlc291cmNlVVJMU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpn
ZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0
cmluZyYgcmVzb3VyY2VVUkxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0
aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQogewog
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoYXV0byogZnJhbWUgPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSkgewpAQCAtMzczNSw3ICsz
NzM1LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmUKICAgICBjYWxsYmFjayhkYXRhUmVmZXJl
bmNlKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUo
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0
aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQogewogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggOTQ2MmViNDRiYmFiLi5hOTY1YmUzMjBl
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE1
ODUsMTMgKzE1ODUsMTMgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoTUhUTUwpCiAgICAgdm9pZCBn
ZXRDb250ZW50c0FzTUhUTUxEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik+JiYgY2FsbGJhY2spOwogI2VuZGlmCi0gICAgdm9p
ZCBnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
Jik+JiYpOwotICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKT4mJik7CisgICAgdm9p
ZCBnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlPiYpPiYmKTsKKyAgICB2b2lkIGdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkwsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlPiYpPiYmKTsKICAgICB2b2lkIGdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9u
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogICAgIHZvaWQgZ2V0
U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
U3RyaW5nJik+JiYpOwotICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmKTsKKyAgICB2
b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBPcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+Jik+JiYpOwogICAgIHZvaWQgZ2V0U291
cmNlRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKLSAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmKT4mJik7CisgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9u
YWw8SVBDOjpEYXRhUmVmZXJlbmNlPiYpPiYmKTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHQoV2Vi
RnJhbWUqLCBXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBDb250ZW50V29ybGRJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+Jik+JiYpOwogICAg
IHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFT
Y3JpcHRQYXJhbWV0ZXJzJiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIGNv
bnN0IHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+JiB3b3JsZERhdGEs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3Qg
T3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4mJik7CiAgICAgdm9pZCBmb3Jj
ZVJlcGFpbnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDM0YjEy
YzQ2NDQ0Zi4uNGExODA2OGY5YzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTIxMiwxMyArMjEyLDEzIEBAIEdl
bmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhl
dGljRWRpdGluZ0NvbW1hbmRUeXBlCiAjaWYgRU5BQkxFKE1IVE1MKQogICAgIEdldENvbnRlbnRz
QXNNSFRNTERhdGEoKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEpIEFz
eW5jCiAjZW5kaWYKLSAgICBHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4gKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBk
YXRhUmVmZXJlbmNlKSBBc3luYwotICAgIEdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU3RyaW5nIHJlc291cmNlVVJMKSAtPiAoSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UpIEFzeW5jCisgICAgR2V0TWFp
blJlc291cmNlRGF0YU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpIC0+
IChPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IGRhdGFSZWZlcmVuY2Up
IEFzeW5jCisgICAgR2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBTdHJpbmcgcmVzb3VyY2VVUkwpIC0+IChPcHRpb25hbDxJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IGRhdGFSZWZlcmVuY2UpIEFzeW5jCiAgICAgR2V0UmVuZGVy
VHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oKSAtPiAoU3RyaW5nIHN0cmluZykgQXN5bmMKICAg
ICBHZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoKSAtPiAoU3RyaW5nIHN0cmluZykgQXN5
bmMKLSAgICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKCkgLT4gKElQQzo6RGF0YVJlZmVy
ZW5jZSBkYXRhKSBBc3luYworICAgIEdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoKSAtPiAo
T3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiBkYXRhKSBBc3luYwogICAgIEdldFNvdXJjZUZv
ckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKSAtPiAoU3RyaW5nIHN0cmlu
ZykgQXN5bmMKLSAgICBHZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKSBBc3luYwor
ICAgIEdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlE
KSAtPiAoT3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiBkYXRhUmVmZXJlbmNlKSBBc3luYwog
CiAgICAgUnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHN0cnVjdCBXZWJDb3JlOjpS
dW5KYXZhU2NyaXB0UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6cGFpcjxXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50
aWZpZXIsIFN0cmluZz4gd29ybGQpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwg
T3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscykgQXN5bmMKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDc2OTg3Nzkx
OTNkNC4uZWM2MTlmM2YxODNkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDItMTYgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04ocjI3MjYz
NikgW0dUS10gQ3Jhc2ggYW5kIGZhaWx1cmVzIGluIEFQSSB0ZXN0IC9XZWJLaXQyR3RrL1Rlc3RS
ZXNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMTY3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMuanNvbjoKKwogMjAyMS0wMi0x
NSAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBQQ006IEFk
ZCBoaWdoIGVudHJvcHkgYXR0cmlidXRpb25Tb3VyY2VOb25jZSBhdHRyaWJ1dGUgdG8gYW5jaG9y
IHRhZ3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9UZXN0RXhwZWN0YXRp
b25zLmpzb24gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvVGVzdEV4cGVjdGF0aW9ucy5qc29u
CmluZGV4IGU0YzI4Njc0NmNjNS4uMDRmMTAzNjEwN2ZkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2dsaWIvVGVzdEV4cGVjdGF0aW9ucy5qc29uCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ2xpYi9UZXN0RXhwZWN0YXRpb25zLmpzb24KQEAgLTI4MCwxNCArMjgwLDEyIEBACiAg
ICAgICAgICJzdWJ0ZXN0cyI6IHsKICAgICAgICAgICAgICIvd2Via2l0L1dlYktpdFdlYlJlc291
cmNlL2dldC1kYXRhLWVycm9yIjogewogICAgICAgICAgICAgICAgICJleHBlY3RlZCI6IHsKLSAg
ICAgICAgICAgICAgICAgICAgIndwZSI6IHsic3RhdHVzIjogWyJGQUlMIl19LAotICAgICAgICAg
ICAgICAgICAgICAiZ3RrIjogeyJzdGF0dXMiOiBbIkNSQVNIIiwgIkZBSUwiXSwgImJ1ZyI6ICJ3
ZWJraXQub3JnL2IvMjIxNjcyIn0KKyAgICAgICAgICAgICAgICAgICAgIndwZSI6IHsic3RhdHVz
IjogWyJGQUlMIl19CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSwKICAgICAgICAg
ICAgICIvd2Via2l0L1dlYktpdFdlYlJlc291cmNlL2dldC1kYXRhLWVtcHR5IjogewogICAgICAg
ICAgICAgICAgICJleHBlY3RlZCI6IHsKLSAgICAgICAgICAgICAgICAgICAgIndwZSI6IHsic3Rh
dHVzIjogWyJGQUlMIl19LAotICAgICAgICAgICAgICAgICAgICAiZ3RrIjogeyJzdGF0dXMiOiBb
IkZBSUwiXSwgImJ1ZyI6ICJ3ZWJraXQub3JnL2IvMjIxNjcyIn0KKyAgICAgICAgICAgICAgICAg
ICAgIndwZSI6IHsic3RhdHVzIjogWyJGQUlMIl19CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogICAgICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420447</attachid>
            <date>2021-02-16 03:53:13 -0800</date>
            <delta_ts>2021-02-16 22:07:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-empty-resources.diff</filename>
            <type>text/plain</type>
            <size>11703</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZWZkNThlZGI1ZWJjLi45YzE1YTdlNWExMmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjcgQEAKKzIwMjEtMDItMTYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04ocjI3MjYzNikgW0dUS10gQ3Jhc2ggYW5kIGZh
aWx1cmVzIGluIEFQSSB0ZXN0IC9XZWJLaXQyR3RrL1Rlc3RSZXNvdXJjZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTY3MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIHIyNzI2MzYgaXQncyBu
byBsb25nZXIgcG9zc2libGUgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGFzeW5jIHJlcGx5IGJl
aW5nIGNhbmNlbGxlZCBvciBkYXRhIGp1c3QgYmVpbmcKKyAgICAgICAgZW1wdHkgZm9yIFdlYlBh
Z2VQcm94eSBkYXRhIGNvbXBsZXRpb24gaGFuZGxlcnMuIFVzZSBPcHRpb25hbCB0byBpbmRpY2F0
ZSB0aGF0IHRoZSByZXBseSB3YXMgY2FubGxlZCB3aGVuIGl0cworICAgICAgICBkYXRhIGlzIG51
bGxvcHQsIGFuZCBlbnN1cmUgd2UgYWx3YXlzIHByb3ZpZGUgYSB2YWxpZCBBUEk6OkRhdGEgb2Jq
ZWN0IHdoZW4gZGF0YSBpcyBub3QgbnVsbG9wdC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5OiBIYW5kbGUgdGhlIHNwZWNpYWwgY2FzZSBvZiBTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlIGFzIE9wdGlvbmFsLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJSZXNvdXJjZS5jcHA6CisgICAgICAgIChyZXNvdXJjZURhdGFDYWxsYmFjayk6IEJyaW5n
IGJhY2sgdGhlIGNhbmNlbGxhdGlvbiBlcnJvciBoYW5kbGluZy4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMS0wMi0xNSAgUGVyIEFybmUgIDxwdm9sbGFuQGFwcGxl
LmNvbT4KIAogICAgICAgICBbbWFjT1NdIENsb3NlIFhQQyBjb25uZWN0aW9ucyBiZWZvcmUgZW50
ZXJpbmcgc2FuZGJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5k
ZXggYmQzNDdjMzZmYjMxLi5jNjNmOWJjZDY5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQpAQCAtMTQzLDYgKzE0Myw4IEBAIGRlZiBmdW5jdGlvbl9wYXJhbWV0
ZXJfdHlwZSh0eXBlLCBraW5kKToKIGRlZiByZXBseV90eXBlKHR5cGUpOgogICAgIGlmIHR5cGUg
PT0gJ0lQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSc6CiAgICAgICAgIHJldHVybiAnSVBD
OjpEYXRhUmVmZXJlbmNlJworICAgIGlmIHR5cGUgPT0gJ09wdGlvbmFsPElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZT4nOgorICAgICAgICByZXR1cm4gJ09wdGlvbmFsPElQQzo6RGF0YVJl
ZmVyZW5jZT4nCiAgICAgcmV0dXJuIHR5cGUKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJSZXNvdXJjZS5jcHAKaW5kZXggODEyZmExNmE5
ZGI2Li4xODEyZDRlYTY1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJSZXNvdXJjZS5jcHAKQEAgLTM0NCw2ICszNDQsMTEgQEAgV0VC
S0lUX0RFRklORV9BU1lOQ19EQVRBX1NUUlVDVChSZXNvdXJjZUdldERhdGFBc3luY0RhdGEpCiAK
IHN0YXRpYyB2b2lkIHJlc291cmNlRGF0YUNhbGxiYWNrKEFQSTo6RGF0YSogd2tEYXRhLCBHVGFz
ayogdGFzaykKIHsKKyAgICBpZiAoIXdrRGF0YSkgeworICAgICAgICBnX3Rhc2tfcmV0dXJuX25l
d19lcnJvcih0YXNrLCBHX0lPX0VSUk9SLCBHX0lPX0VSUk9SX0NBTkNFTExFRCwgXygiT3BlcmF0
aW9uIHdhcyBjYW5jZWxsZWQiKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBSZXNv
dXJjZUdldERhdGFBc3luY0RhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUdldERhdGFB
c3luY0RhdGEqPihnX3Rhc2tfZ2V0X3Rhc2tfZGF0YSh0YXNrKSk7CiAgICAgZGF0YS0+d2ViRGF0
YSA9IHdrRGF0YTsKICAgICBpZiAoIXdrRGF0YS0+Ynl0ZXMoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGUyNWJjYTljZmFkNi4uM2Q2YTMyNDAwYWZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTQxMjQsMTAgKzQx
MjQsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcKICAgICBzZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYlBhZ2U6OkdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoKSwgV1RGTW92ZShj
YWxsYmFjaykpOwogfQogCi1zdGF0aWMgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGEpPiB0b0FQSURhdGFDYWxsYmFjayhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEFQSTo6RGF0YSopPiYmIGNhbGxiYWNrKQorc3RhdGljIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgT3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiYgZGF0YSk+IHRvQVBJRGF0
YUNhbGxiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYgY2FsbGJhY2sp
CiB7Ci0gICAgcmV0dXJuIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhKSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbGJhY2soQVBJOjpE
YXRhOjpjcmVhdGUoZGF0YSkuZ2V0KCkpOworICAgIHJldHVybiBbY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0gKGNvbnN0IE9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mIGRhdGEpIG11
dGFibGUgeworICAgICAgICBjYWxsYmFjayhkYXRhID8gQVBJOjpEYXRhOjpjcmVhdGUoZGF0YS0+
ZGF0YSgpLCBkYXRhLT5zaXplKCkpLnB0cigpIDogbnVsbHB0cik7CiAgICAgfTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAwM2M5Y2E5
ZWU5MzcuLmNjMzhhMzNjODdhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTM2NTYsNyArMzY1Niw3IEBAIHN0YXRpYyBGcmFtZSogZnJhbWVX
aXRoU2VsZWN0aW9uKFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpnZXRT
ZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0
aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQogewogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7CkBAIC0zNjkwLDcgKzM2OTAs
NyBAQCB2b2lkIFdlYlBhZ2U6OmdldFNvdXJjZUZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAogICAgIGNhbGxiYWNrKHJlc3VsdFN0cmluZyk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlJik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2U6OmdldE1haW5S
ZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4m
KT4mJiBjYWxsYmFjaykKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAg
aWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZy
YW1lSUQpKSB7CkBAIC0zNzIxLDcgKzM3MjEsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJlc291cgog
ICAgIHJldHVybiAmc3VicmVzb3VyY2UtPmRhdGEoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRS
ZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmlu
ZyYgcmVzb3VyY2VVUkxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2U6Omdl
dFJlc291cmNlRGF0YUZyb21GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3Ry
aW5nJiByZXNvdXJjZVVSTFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRp
b25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+Jik+JiYgY2FsbGJhY2spCiB7CiAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CkBAIC0zNzM1LDcgKzM3
MzUsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZQogICAgIGNhbGxiYWNrKGRhdGFSZWZlcmVu
Y2UpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1lKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRp
b25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+Jik+JiYgY2FsbGJhY2spCiB7CiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA5NDYyZWI0NGJiYWIuLmE5NjViZTMyMGU4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTU4
NSwxMyArMTU4NSwxMyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNSFRNTCkKICAgICB2b2lkIGdl
dENvbnRlbnRzQXNNSFRNTERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjayk7CiAjZW5kaWYKLSAgICB2b2lk
IGdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Um
KT4mJik7Ci0gICAgdm9pZCBnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmKTsKKyAgICB2b2lk
IGdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2U+Jik+JiYpOworICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2U+Jik+JiYpOwogICAgIHZvaWQgZ2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24o
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAgICAgdm9pZCBnZXRT
ZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBT
dHJpbmcmKT4mJik7Ci0gICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOworICAgIHZv
aWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IE9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mKT4mJik7CiAgICAgdm9pZCBnZXRTb3Vy
Y2VGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgU3RyaW5nJik+JiYpOwotICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYpPiYmKTsKKyAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25h
bDxJUEM6OkRhdGFSZWZlcmVuY2U+Jik+JiYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJG
cmFtZSosIFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbnRlbnRXb3JsZElk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4mJik7CiAgICAg
dm9pZCBydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoV2ViQ29yZTo6UnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnMmJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgY29u
c3Qgc3RkOjpwYWlyPENvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4mIHdvcmxkRGF0YSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBP
cHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYmKTsKICAgICB2b2lkIGZvcmNl
UmVwYWludChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMzRiMTJj
NDY0NDRmLi40YTE4MDY4ZjljOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjEyLDEzICsyMTIsMTMgQEAgR2Vu
ZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZFR5cGUKICNpZiBFTkFCTEUoTUhUTUwpCiAgICAgR2V0Q29udGVudHNB
c01IVE1MRGF0YSgpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSkgQXN5
bmMKICNlbmRpZgotICAgIEdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlEKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRh
dGFSZWZlcmVuY2UpIEFzeW5jCi0gICAgR2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTdHJpbmcgcmVzb3VyY2VVUkwpIC0+IChJUEM6OlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSkgQXN5bmMKKyAgICBHZXRNYWlu
UmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4g
KE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gZGF0YVJlZmVyZW5jZSkg
QXN5bmMKKyAgICBHZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIFN0cmluZyByZXNvdXJjZVVSTCkgLT4gKE9wdGlvbmFsPElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZT4gZGF0YVJlZmVyZW5jZSkgQXN5bmMKICAgICBHZXRSZW5kZXJU
cmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbigpIC0+IChTdHJpbmcgc3RyaW5nKSBBc3luYwogICAg
IEdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZygpIC0+IChTdHJpbmcgc3RyaW5nKSBBc3lu
YwotICAgIEdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoKSAtPiAoSVBDOjpEYXRhUmVmZXJl
bmNlIGRhdGEpIEFzeW5jCisgICAgR2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSgpIC0+IChP
cHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+IGRhdGEpIEFzeW5jCiAgICAgR2V0U291cmNlRm9y
RnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpIC0+IChTdHJpbmcgc3RyaW5n
KSBBc3luYwotICAgIEdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlEKSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UpIEFzeW5jCisg
ICAgR2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQp
IC0+IChPcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+IGRhdGFSZWZlcmVuY2UpIEFzeW5jCiAK
ICAgICBSdW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoc3RydWN0IFdlYkNvcmU6OlJ1
bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpwYWlyPFdlYktpdDo6Q29udGVudFdvcmxkSWRlbnRp
ZmllciwgU3RyaW5nPiB3b3JsZCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBP
cHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzKSBBc3luYwogCmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzY5ODc3OTE5
M2Q0Li5lYzYxOWYzZjE4M2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0wMi0xNiAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTihyMjcyNjM2
KSBbR1RLXSBDcmFzaCBhbmQgZmFpbHVyZXMgaW4gQVBJIHRlc3QgL1dlYktpdDJHdGsvVGVzdFJl
c291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIxNjcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL2dsaWIvVGVzdEV4cGVjdGF0aW9ucy5qc29uOgorCiAyMDIxLTAyLTE1
ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFBDTTogQWRk
IGhpZ2ggZW50cm9weSBhdHRyaWJ1dGlvblNvdXJjZU5vbmNlIGF0dHJpYnV0ZSB0byBhbmNob3Ig
dGFncwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1Rlc3RFeHBlY3RhdGlv
bnMuanNvbiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9UZXN0RXhwZWN0YXRpb25zLmpzb24K
aW5kZXggZTRjMjg2NzQ2Y2M1Li4wNGYxMDM2MTA3ZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvZ2xpYi9UZXN0RXhwZWN0YXRpb25zLmpzb24KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMuanNvbgpAQCAtMjgwLDE0ICsyODAsMTIgQEAKICAg
ICAgICAgInN1YnRlc3RzIjogewogICAgICAgICAgICAgIi93ZWJraXQvV2ViS2l0V2ViUmVzb3Vy
Y2UvZ2V0LWRhdGEtZXJyb3IiOiB7CiAgICAgICAgICAgICAgICAgImV4cGVjdGVkIjogewotICAg
ICAgICAgICAgICAgICAgICAid3BlIjogeyJzdGF0dXMiOiBbIkZBSUwiXX0sCi0gICAgICAgICAg
ICAgICAgICAgICJndGsiOiB7InN0YXR1cyI6IFsiQ1JBU0giLCAiRkFJTCJdLCAiYnVnIjogIndl
YmtpdC5vcmcvYi8yMjE2NzIifQorICAgICAgICAgICAgICAgICAgICAid3BlIjogeyJzdGF0dXMi
OiBbIkZBSUwiXX0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9LAogICAgICAgICAg
ICAgIi93ZWJraXQvV2ViS2l0V2ViUmVzb3VyY2UvZ2V0LWRhdGEtZW1wdHkiOiB7CiAgICAgICAg
ICAgICAgICAgImV4cGVjdGVkIjogewotICAgICAgICAgICAgICAgICAgICAid3BlIjogeyJzdGF0
dXMiOiBbIkZBSUwiXX0sCi0gICAgICAgICAgICAgICAgICAgICJndGsiOiB7InN0YXR1cyI6IFsi
RkFJTCJdLCAiYnVnIjogIndlYmtpdC5vcmcvYi8yMjE2NzIifQorICAgICAgICAgICAgICAgICAg
ICAid3BlIjogeyJzdGF0dXMiOiBbIkZBSUwiXX0KICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0K
</data>
<flag name="review"
          id="438965"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>