<?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>159631</bug_id>
          
          <creation_ts>2016-07-11 10:11:12 -0700</creation_ts>
          <short_desc>[GTK] Add webkit_context_menu_item_new_from_gaction</short_desc>
          <delta_ts>2018-01-15 12:43:19 -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>Other</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>162603</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>cedric.bellegarde</cc>
    
    <cc>cgarcia</cc>
    
    <cc>EvilTwin1</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mike</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1209690</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-07-11 10:11:12 -0700</bug_when>
    <thetext>It should be possible to create a WebKitContextMenuItem by passing a GAction rather than a GtkAction, so that applications can create WebKitContextMenuItems without a spew of deprecation warnings. Our GSoC student Iulian has this API already working on an Epiphany sidebranch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226802</commentid>
    <comment_count>1</comment_count>
      <attachid>288040</attachid>
    <who name="Iulian Radu">iulian.radu67</who>
    <bug_when>2016-09-06 13:28:37 -0700</bug_when>
    <thetext>Created attachment 288040
[GTK] Add webkit_context_menu_item_new_from_gaction

This allows creating a WebKitContextMenuItem from a GAction. Besides the GAction, the function also receives an optional GVariant parameter that will be passed to the g_action_activate () function when the item is activated and a label to be displayed for the item.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226811</commentid>
    <comment_count>2</comment_count>
      <attachid>288043</attachid>
    <who name="Iulian Radu">iulian.radu67</who>
    <bug_when>2016-09-06 13:50:59 -0700</bug_when>
    <thetext>Created attachment 288043
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226844</commentid>
    <comment_count>3</comment_count>
      <attachid>288043</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-09-06 14:52:08 -0700</bug_when>
    <thetext>Comment on attachment 288043
Patch

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

Great job!

r+ means review pass, since my comments are all minor. cq- means commit-queue denied. You&apos;ll need to re-upload this patch to address my comments, but you can manually write &quot;Reviewed by Michael Catanzaro&quot; and don&apos;t need to set the r? flag again, just cq?. Still, since this patch adds new API, it needs to be approved by a second GTK+ reviewer before we can commit it. Carlos Garcia will look at it soon.

Also, I forgot to suggest this earlier, but we should also deprecate webkit_context_menu_item_new(), since it&apos;s impossible to use without using deprecated GtkAction. You can look at webkit_web_context_set_disk_cache_directory() for an example of how to deprecate a method; it would look like this:

Deprecated: 2.16. Use webkit_context_menu_item_new_from_gaction() instead.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuItem.cpp:199
&gt; +static void actionDataFree(ActionData* actionData, GObject* object)

I like the documented name of the second parameter: GObject* whereTheObjectWas. It makes it more clear that the object is being finalized and is not safe to use. But actually, you don&apos;t need this parameter at all (see my next comment), so you should leave it unnamed to avoid unused variable compiler warnings:

static void actionDataFree(ActionData* actionData, GObject*)

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuItem.cpp:202
&gt; +    g_return_if_fail(G_IS_OBJECT(object));

Hm, I&apos;m slightly surprised this check passes, since object is being finalized after all. I would remove it. You don&apos;t use object anywhere in this function, and you know it&apos;s being finalized, so why check to see if it&apos;s valid?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuItem.cpp:205
&gt; +    if (actionData-&gt;parameter)
&gt; +        g_variant_unref(actionData-&gt;parameter);

This works, but try something more idiomatic: use a GRefPtr&lt;GVariant&gt; in the ActionData struct. Then you can delete these lines. Since you&apos;re not allocating the ActionData struct with normal C++ new and the struct would no longer contain only plain-old-data (POD) types, you&apos;ll have to manually invoke ActionData&apos;s destructor right before freeing the memory:

actionData-&gt;~ActionData();
g_slice_free(ActionData, actionData); // or free it some other way as appropriate, see comments below

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuItem.cpp:234
&gt; + * Creates a new #WebKitContextMenuItem for the given action using the given @label.

I would write: Creates a new #WebKitContextMenuItem for @action using the label @label.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuItem.cpp:240
&gt; +WebKitContextMenuItem* webkit_context_menu_item_new_from_gaction(GAction* action, GVariant* parameter, const gchar* label)

OK, time for my only serious concern with this patch: what are the ownership semantics of the GAction parameter? Since you do not have any transfer annotation, the default is transfer full. Is that what you intended? Is it the best choice here? Since it is transfer full, you have to free it in actionDataFree, but it looks like you don&apos;t do that. If you intended it to be transfer none, you need to add the annotation.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuItem.cpp:245
&gt; +    ActionData* actionData = g_slice_new(ActionData);

Instead of using GLib&apos;s &quot;fast&quot; allocator, which isn&apos;t very good, it&apos;s better to use WebKit&apos;s faster one (bmalloc):

ActionData* actionData = static_cast&lt;ActionData*&gt;(fastMalloc(sizeof(ActionData)));

Then you would free it with fastFree(actionData).

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestContextMenu.cpp:542
&gt; +class ContextMenuCustomGActionTest: public ContextMenuTest {

Leave a space before the colon. I see you matched the style of the rest of this file, which is normally the right thing to do, but in this case the other examples in this file were wrong. :)

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestContextMenu.cpp:549
&gt; +        : m_itemToActivateLabel(0)
&gt; +        , m_activated(false)
&gt; +        , m_toggled(false)

In new code we initialize these inline-style instead of in the constructor. I&apos;ll show you down below.

(And be careful to use nullptr for pointers, not 0.)

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestContextMenu.cpp:571
&gt; +        return 0;

Do you really need the return for it to compile? GCC isn&apos;t smart enough to see it&apos;s unreachable? If you have to keep it, return nullptr rather than 0, since the return value is a pointer type.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestContextMenu.cpp:587
&gt; +        return FALSE;

return G_SOURCE_REMOVE (readable alias for FALSE)

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestContextMenu.cpp:592
&gt; +        m_activated = m_toggled = false;

I think I prefer to write this on two lines.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestContextMenu.cpp:615
&gt; +    void setAction(GAction* action, GVariant *parameter, const char* label)
&gt; +    {
&gt; +        m_action = action;

Add another check: assertObjectIsDeletedWhenTestFinishes(G_OBJECT(action)). Does it pass?

Also, careful to write GVariant* parameter rather than GVariant *parameter while we&apos;re in WebKit code rather than GNOME code.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestContextMenu.cpp:629
&gt; +    const char* m_label;
&gt; +    const char* m_itemToActivateLabel;
&gt; +    bool m_activated;
&gt; +    bool m_toggled;

const char* m_label { nullptr };
const char* m_itemToActivateLabel { nullptr };
bool m_activated { false };
bool m_toggled { false };

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestContextMenu.cpp:1146
&gt; +    ContextMenuCustomGActionTest::add(&quot;WebKitWebView&quot;, &quot;gaction-populate-menu&quot;, testContextMenuGActionPopulateMenu);

Hm, how about &quot;populate-menu-with-gaction&quot; and &quot;testContextMenuPopulateMenuWithGAction&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226853</commentid>
    <comment_count>4</comment_count>
      <attachid>288043</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-09-06 15:06:04 -0700</bug_when>
    <thetext>Comment on attachment 288043
Patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuItem.cpp:216
&gt; +    g_action_activate(actionData-&gt;action, actionData-&gt;parameter);
&gt; +    actionData-&gt;parameter = nullptr;

If you use a GRefPtr for ActionData::parameter, then you would write here:

g_action_activate(actionData-&gt;action, actionData-&gt;parameter.leakRef());

And you would not need to set actionData-&gt;parameter = nullptr (leakRef will take care of that).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227547</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-09-07 23:17:03 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 288043 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=288043&amp;action=review
&gt; 
&gt; Great job!
&gt; 
&gt; r+ means review pass, since my comments are all minor. cq- means
&gt; commit-queue denied. You&apos;ll need to re-upload this patch to address my
&gt; comments, but you can manually write &quot;Reviewed by Michael Catanzaro&quot; and
&gt; don&apos;t need to set the r? flag again, just cq?. Still, since this patch adds
&gt; new API, it needs to be approved by a second GTK+ reviewer before we can
&gt; commit it. Carlos Garcia will look at it soon.

I&apos;m not sure about this API, TBH. It&apos;s just creating a GtkAction from a GAction and then calling webkit_context_menu_item_new() with the GtkAction, something that applications can do. I agree it would be convenient if that code is duplicated in all applications, but I don&apos;t think there&apos;s any application currently using this.

&gt; Also, I forgot to suggest this earlier, but we should also deprecate
&gt; webkit_context_menu_item_new(), since it&apos;s impossible to use without using
&gt; deprecated GtkAction. You can look at
&gt; webkit_web_context_set_disk_cache_directory() for an example of how to
&gt; deprecate a method; it would look like this:
&gt; 
&gt; Deprecated: 2.16. Use webkit_context_menu_item_new_from_gaction() instead.

No, we can&apos;t. To do that we need to rework the internal context menu code to work with GAction (I don&apos;t even know if that&apos;s possible), and then deprecate the public API using GtkAction. With this patch if you create a context menu item from a GAction, the only way to get the action is using webkit_context_menu_item_get_action(), that returns a GtkAction. This is also quite confusing. It wouldn&apos;t be confusing in applications code, since they know they are actually creating a GtkAction from the GAction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227597</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-09-08 07:43:11 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; I&apos;m not sure about this API, TBH. It&apos;s just creating a GtkAction from a
&gt; GAction and then calling webkit_context_menu_item_new() with the GtkAction,
&gt; something that applications can do. I agree it would be convenient if that
&gt; code is duplicated in all applications, but I don&apos;t think there&apos;s any
&gt; application currently using this.

It&apos;s quite a complex thing to expect applications to do, though. This code is being moved from Epiphany. We want to stop using GtkAction so we can drop -Wno-deprecated-declarations from our build. Surely, any application creating its own WebKitContextMenuItems would want this API. It might be that only Epiphany is doing that right now, but this is generally useful.

&gt; No, we can&apos;t. To do that we need to rework the internal context menu code to
&gt; work with GAction (I don&apos;t even know if that&apos;s possible), and then deprecate
&gt; the public API using GtkAction. With this patch if you create a context menu
&gt; item from a GAction, the only way to get the action is using
&gt; webkit_context_menu_item_get_action(), that returns a GtkAction.

OK, you&apos;re right about that, I didn&apos;t notice this problem. :( So deprecating the GtkAction version only makes sense if we also deprecate webkit_context_menu_item_get_action, even though we don&apos;t have a replacement for that. I don&apos;t think it matters too much whether we deprecate these or not, but I would, since GtkAction itself is deprecated and we have no choice but to remove these functions from our GTK+ 4 API.

Another issue is that the first unstable GTK+ 4 release is right around the corner, and GtkAction is going away. This patch is a good band-aid for GTK+ 3 API users, but for GTK+ 4 we need to completely rewrite WebKitContextMenu/WebKitContextMenuItem to no longer use GtkAction. We will need two parallel implementations depending on which version of GTK+ we compile with. (The function added in this patch clearly only makes sense for our GTK+ 3 API.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230948</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-09-18 07:02:45 -0700</bug_when>
    <thetext>Mike, do you want this for Geary?

I think I prefer to proceed with this patch, deprecating also webkit_context_menu_item_get_action() as well. Applications are going to have a very rough transition from our GTK+ 3 API to our future GTK+ 4 API if we don&apos;t provide GAction support in the GTK+ 3 API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230950</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Gratton">mike</who>
    <bug_when>2016-09-18 07:10:02 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Mike, do you want this for Geary?
&gt; 
&gt; I think I prefer to proceed with this patch, deprecating also
&gt; webkit_context_menu_item_get_action() as well. Applications are going to
&gt; have a very rough transition from our GTK+ 3 API to our future GTK+ 4 API if
&gt; we don&apos;t provide GAction support in the GTK+ 3 API.

Yup, I was just discussing this with nielsdg on #geary. He&apos;s currently cleaning up the composer implementation, with an eye to the WK2 port. We&apos;d like to use GMenu and GActions if at all possible, but even just GAction support would be great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1231017</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-09-18 23:10:43 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Mike, do you want this for Geary?
&gt; 
&gt; I think I prefer to proceed with this patch, deprecating also
&gt; webkit_context_menu_item_get_action() as well. Applications are going to
&gt; have a very rough transition from our GTK+ 3 API to our future GTK+ 4 API if
&gt; we don&apos;t provide GAction support in the GTK+ 3 API.

Let&apos;s move internally to GAction first, I don&apos;t want to deprecate get_action without a replacement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232043</commentid>
    <comment_count>10</comment_count>
      <attachid>288043</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-09-21 05:21:25 -0700</bug_when>
    <thetext>Comment on attachment 288043
Patch

Changing to r- since it&apos;s been several days and my question about ownership of the GAction remains unresolved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235207</commentid>
    <comment_count>11</comment_count>
    <who name="Jan">EvilTwin1</who>
    <bug_when>2016-09-30 06:27:25 -0700</bug_when>
    <thetext>Just wanted to drop by and say:
FeedReader (http://jangernert.github.io/FeedReader/) is also using this. So any work porting to GAction is greatly appreciated :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235208</commentid>
    <comment_count>12</comment_count>
    <who name="Jan">EvilTwin1</who>
    <bug_when>2016-09-30 06:35:59 -0700</bug_when>
    <thetext>Sorry for posting again. Just want to mention 120636 looks like a duplicate report:
https://bugs.webkit.org/show_bug.cgi?id=120636</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249716</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-10 00:47:48 -0800</bug_when>
    <thetext>We use GAction internally now, Julian, do you plan to update the patch? Now we should also add a get_gaction method and deprecate the old ones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303639</commentid>
    <comment_count>14</comment_count>
    <who name="Cédric Bellegarde">cedric.bellegarde</who>
    <bug_when>2017-05-02 03:58:10 -0700</bug_when>
    <thetext>This method is not available from GObject introspection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303655</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-05-02 06:33:42 -0700</bug_when>
    <thetext>What do you mean by that? I see the appropriate gtk-doc metadata in the comment above the function. We don&apos;t understand introspection very well, so please clearly describe the problem with introspection in this patch.

Anyway, this is going to need to be reworked anyway in accordance with comment #13.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303804</commentid>
    <comment_count>16</comment_count>
    <who name="Cédric Bellegarde">cedric.bellegarde</who>
    <bug_when>2017-05-02 14:06:42 -0700</bug_when>
    <thetext>When using python, we can only use Gtk.Action, this new method is not available.
Should I report to GNOME devs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303855</commentid>
    <comment_count>17</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-05-02 15:42:41 -0700</bug_when>
    <thetext>Have you applied this patch locally? The patch was rejected, so it is not expected to be available otherwise. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310575</commentid>
    <comment_count>18</comment_count>
      <attachid>310648</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-05-19 05:25:55 -0700</bug_when>
    <thetext>Created attachment 310648
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311000</commentid>
    <comment_count>19</comment_count>
      <attachid>310648</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-05-20 06:47:52 -0700</bug_when>
    <thetext>Comment on attachment 310648
Patch

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

Nice! Reasoning about actions is tricky.

We really ought to deprecate webkit_context_menu_item_new() and webkit_context_menu_item_get_action() in this patch. Deprecations are an optional service to let developers know that the function is going away eventually and ease porting to our future GTK+ API. It doesn&apos;t mean developers have to immediately stop using them; of course we&apos;ll keep them working in our GTK+ 3 API forever. But we are for sure that the GtkAction version of this function is going to be gone in our GTK+ 4 API, so best let developers know that now. r=me if you add deprecations for these two functions (both header file attributes and introspection annotations).

&gt; Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.cpp:84
&gt; +        if (menuItem.action() &lt; ContextMenuItemBaseApplicationTag) {

Why did you have to add this conditional?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311251</commentid>
    <comment_count>20</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-05-22 00:36:20 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #19)
&gt; Comment on attachment 310648 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=310648&amp;action=review
&gt; 
&gt; Nice! Reasoning about actions is tricky.

And it was so easy with GtkAction...

&gt; We really ought to deprecate webkit_context_menu_item_new() and
&gt; webkit_context_menu_item_get_action() in this patch. Deprecations are an
&gt; optional service to let developers know that the function is going away
&gt; eventually and ease porting to our future GTK+ API. It doesn&apos;t mean
&gt; developers have to immediately stop using them; of course we&apos;ll keep them
&gt; working in our GTK+ 3 API forever. But we are for sure that the GtkAction
&gt; version of this function is going to be gone in our GTK+ 4 API, so best let
&gt; developers know that now. r=me if you add deprecations for these two
&gt; functions (both header file attributes and introspection annotations).

Ok, I&apos;ll deprecate it.

&gt; &gt; Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.cpp:84
&gt; &gt; +        if (menuItem.action() &lt; ContextMenuItemBaseApplicationTag) {
&gt; 
&gt; Why did you have to add this conditional?

Because glib checks if there are handlers connected to activate signal, and we don&apos;t want that glib thinks we are going to handle the activate, because we are not, user is expected to do it (or glib when no handlers are connected). Note that WebPageProxy::contextMenuItemSelected() returns early with the same condition, notifying the client before, but we don&apos;t implement customContextMenuItemSelected(), because users can connect to activate of the signal themselves.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311253</commentid>
    <comment_count>21</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-05-22 00:50:54 -0700</bug_when>
    <thetext>Committed r217209: &lt;http://trac.webkit.org/changeset/217209&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288040</attachid>
            <date>2016-09-06 13:28:37 -0700</date>
            <delta_ts>2018-01-15 12:43:19 -0800</delta_ts>
            <desc>[GTK] Add webkit_context_menu_item_new_from_gaction</desc>
            <filename>0001-GTK-Add-webkit_context_menu_item_new_from_gaction.patch</filename>
            <type>text/plain</type>
            <size>10860</size>
            <attacher name="Iulian Radu">iulian.radu67</attacher>
            
              <data encoding="base64">RnJvbSA2MWUxZDkxMTdjN2MxNmJmNDE2NGE1NjJlMDlhZmRhYWY4ZDAyZGE5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJdWxpYW4gUmFkdSA8aXVsaWFuLnJhZHU2N0BnbWFpbC5jb20+
CkRhdGU6IFR1ZSwgNiBTZXAgMjAxNiAxODo1NToxNSArMDMwMApTdWJqZWN0OiBbUEFUQ0hdIFtH
VEtdIEFkZCB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fZ2FjdGlvbgoKLS0tCiAu
Li4vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcCAgICB8ICA3MCAr
KysrKysrKysrKysrCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVJdGVt
LmggICAgICB8ICAgNSArCiAuLi4vQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25z
LnR4dCAgICAgICB8ICAgMSArCiAuLi4vVGVzdHMvV2ViS2l0Mkd0ay9UZXN0Q29udGV4dE1lbnUu
Y3BwICAgICAgICAgICB8IDExNSArKysrKysrKysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdl
ZCwgMTkxIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcAppbmRleCA1YTNhNDcyLi4y
ZWNiMWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRDb250ZXh0TWVudUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAKQEAgLTE5MSw2ICsxOTEsNzYgQEAgV2ViS2l0
Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fc3RvY2tf
YWN0aW9uX3dpdGhfbGFiZWwKICAgICByZXR1cm4gaXRlbTsKIH0KIAordHlwZWRlZiBzdHJ1Y3Qg
eworICAgIEdBY3Rpb24gKmFjdGlvbjsKKyAgICBHVmFyaWFudCAqcGFyYW1ldGVyOworfSBBY3Rp
b25EYXRhOworCitzdGF0aWMgdm9pZCBhY3Rpb25EYXRhRnJlZShBY3Rpb25EYXRhKiBhY3Rpb25E
YXRhLCBHT2JqZWN0KiBvYmplY3QpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChhY3Rpb25EYXRh
KTsKKyAgICBnX3JldHVybl9pZl9mYWlsKEdfSVNfT0JKRUNUKG9iamVjdCkpOworCisgICAgaWYg
KGFjdGlvbkRhdGEtPnBhcmFtZXRlcikKKyAgICAgICAgZ192YXJpYW50X3VucmVmKGFjdGlvbkRh
dGEtPnBhcmFtZXRlcik7CisKKyAgICBnX3NsaWNlX2ZyZWUoQWN0aW9uRGF0YSwgYWN0aW9uRGF0
YSk7Cit9CisKK3N0YXRpYyB2b2lkIGFjdGlvbkFjdGl2YXRlQ2FsbGJhY2soR3RrQWN0aW9uKiBn
dGtBY3Rpb24sIEFjdGlvbkRhdGEqIGFjdGlvbkRhdGEpCit7CisgICAgZ19yZXR1cm5faWZfZmFp
bChHVEtfSVNfQUNUSU9OKGd0a0FjdGlvbikpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoYWN0aW9u
RGF0YSk7CisKKyAgICBnX2FjdGlvbl9hY3RpdmF0ZShhY3Rpb25EYXRhLT5hY3Rpb24sIGFjdGlv
bkRhdGEtPnBhcmFtZXRlcik7CisgICAgYWN0aW9uRGF0YS0+cGFyYW1ldGVyID0gbnVsbHB0cjsK
K30KKworc3RhdGljIHZvaWQgYWN0aW9uVG9nZ2xlQ2FsbGJhY2soR3RrQWN0aW9uKiBndGtBY3Rp
b24sIEdBY3Rpb24qIGFjdGlvbikKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKEdUS19JU19BQ1RJ
T04oZ3RrQWN0aW9uKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChHX0lTX0FDVElPTihhY3Rpb24p
KTsKKworICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHN0YXRlID0gYWRvcHRHUmVmKGdfYWN0aW9uX2dl
dF9zdGF0ZShhY3Rpb24pKTsKKyAgICBnX2FjdGlvbl9jaGFuZ2Vfc3RhdGUoYWN0aW9uLCBnX3Zh
cmlhbnRfbmV3X2Jvb2xlYW4oIWdfdmFyaWFudF9nZXRfYm9vbGVhbihzdGF0ZS5nZXQoKSkpKTsK
K30KKworLyoqCisgKiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fZ2FjdGlvbjoK
KyAqIEBhY3Rpb246IGEgI0dBY3Rpb24KKyAqIEBwYXJhbWV0ZXI6IChhbGxvdy1ub25lKTogYSAj
R1ZhcmlhbnQgcGFyYW1ldGVyIHRvIHVzZSB3aXRoIHRoZSBhY3RpdmF0ZSBmdW5jdGlvbgorICog
QGxhYmVsOiB0ZXh0IHRvIHVzZSBhcyB0aGUgI1dlYktpdENvbnRleHRNZW51SXRlbSdzIGxhYmVs
CisgKgorICogQ3JlYXRlcyBhIG5ldyAjV2ViS2l0Q29udGV4dE1lbnVJdGVtIGZvciB0aGUgZ2l2
ZW4gYWN0aW9uIHVzaW5nIHRoZSBnaXZlbiBAbGFiZWwuCisgKgorICogUmV0dXJuczogdGhlIG5l
d2x5IGNyZWF0ZWQgI1dlYktpdENvbnRleHRNZW51SXRlbSBvYmplY3QuCisgKgorICogU2luY2U6
IDIuMTYKKyAqLworV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4dF9tZW51X2l0
ZW1fbmV3X2Zyb21fZ2FjdGlvbihHQWN0aW9uKiBhY3Rpb24sIEdWYXJpYW50KiBwYXJhbWV0ZXIs
IGNvbnN0IGdjaGFyKiBsYWJlbCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChHX0lTX0FD
VElPTihhY3Rpb24pLCBudWxscHRyKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChsYWJlbCAm
JiAqbGFiZWwsIG51bGxwdHIpOworCisgICAgQWN0aW9uRGF0YSogYWN0aW9uRGF0YSA9IGdfc2xp
Y2VfbmV3KEFjdGlvbkRhdGEpOworICAgIGFjdGlvbkRhdGEtPmFjdGlvbiA9IGFjdGlvbjsKKyAg
ICBhY3Rpb25EYXRhLT5wYXJhbWV0ZXIgPSBwYXJhbWV0ZXI7CisKKyAgICBHUmVmUHRyPEd0a0Fj
dGlvbj4gZ3RrQWN0aW9uOworICAgIGlmIChnX2FjdGlvbl9nZXRfc3RhdGVfdHlwZShhY3Rpb24p
ICE9IG51bGxwdHIgJiYgZ192YXJpYW50X3R5cGVfZXF1YWwoZ19hY3Rpb25fZ2V0X3N0YXRlX3R5
cGUoYWN0aW9uKSwgR19WQVJJQU5UX1RZUEVfQk9PTEVBTikpIHsKKyAgICAgICAgZ3RrQWN0aW9u
ID0gYWRvcHRHUmVmKEdUS19BQ1RJT04oZ3RrX3RvZ2dsZV9hY3Rpb25fbmV3KGdfYWN0aW9uX2dl
dF9uYW1lKGFjdGlvbiksIGxhYmVsLCBudWxscHRyLCBudWxscHRyKSkpOworICAgICAgICBnX3Np
Z25hbF9jb25uZWN0KGd0a0FjdGlvbi5nZXQoKSwgImFjdGl2YXRlIiwgR19DQUxMQkFDSyhhY3Rp
b25Ub2dnbGVDYWxsYmFjayksIGFjdGlvbik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZ3RrQWN0
aW9uID0gYWRvcHRHUmVmKGd0a19hY3Rpb25fbmV3KGdfYWN0aW9uX2dldF9uYW1lKGFjdGlvbiks
IGxhYmVsLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QoZ3Rr
QWN0aW9uLmdldCgpLCAiYWN0aXZhdGUiLCBHX0NBTExCQUNLKGFjdGlvbkFjdGl2YXRlQ2FsbGJh
Y2spLCBhY3Rpb25EYXRhKTsKKyAgICB9CisKKyAgICBnX29iamVjdF9iaW5kX3Byb3BlcnR5KGFj
dGlvbiwgImVuYWJsZWQiLCBndGtBY3Rpb24uZ2V0KCksICJzZW5zaXRpdmUiLCBHX0JJTkRJTkdf
U1lOQ19DUkVBVEUpOworICAgIGdfb2JqZWN0X3dlYWtfcmVmKEdfT0JKRUNUKGd0a0FjdGlvbi5n
ZXQoKSksIHJlaW50ZXJwcmV0X2Nhc3Q8R1dlYWtOb3RpZnk+KGFjdGlvbkRhdGFGcmVlKSwgYWN0
aW9uRGF0YSk7CisKKyAgICByZXR1cm4gd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ldyhndGtB
Y3Rpb24uZ2V0KCkpOworfQorCiAvKioKICAqIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdf
d2l0aF9zdWJtZW51OgogICogQGxhYmVsOiB0aGUgbWVudSBpdGVtIGxhYmVsIHRleHQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51
SXRlbS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1l
bnVJdGVtLmgKaW5kZXggMzNlMzEyNC4uNGVlN2NhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmgKQEAgLTcx
LDYgKzcxLDExIEBAIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9zdG9ja19hY3Rp
b25fd2l0aF9sYWJlbCAoV2ViS2l0Q29udGV4dE1lbnVBY3RpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAg
ICAgICAgKmxhYmVsKTsKIAogV0VCS0lUX0FQSSBXZWJLaXRDb250ZXh0TWVudUl0ZW0gKgord2Vi
a2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX2dhY3Rpb24gICAgICAgICAgICAgICAgIChH
QWN0aW9uICAgICAgICAgICAgICAgICphY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50ICAgICAgICAgICAgICAg
KnBhcmFtZXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAqbGFiZWwpOworCitXRUJLSVRf
QVBJIFdlYktpdENvbnRleHRNZW51SXRlbSAqCiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3
X3dpdGhfc3VibWVudSAgICAgICAgICAgICAgICAgKGNvbnN0IGdjaGFyICAgICAgICAgICAgKmxh
YmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRDb250ZXh0TWVudSAgICAgICpzdWJtZW51KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0
aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCAwMDJlZjMzLi4yZjlhZjgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rp
b25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstNC4wLXNlY3Rpb25zLnR4dApAQCAtMTEzNyw2ICsxMTM3LDcgQEAgV2ViS2l0Q29udGV4
dE1lbnVBY3Rpb24KIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXcKIHdlYmtpdF9jb250ZXh0
X21lbnVfaXRlbV9uZXdfZnJvbV9zdG9ja19hY3Rpb24KIHdlYmtpdF9jb250ZXh0X21lbnVfaXRl
bV9uZXdfZnJvbV9zdG9ja19hY3Rpb25fd2l0aF9sYWJlbAord2Via2l0X2NvbnRleHRfbWVudV9p
dGVtX25ld19mcm9tX2dhY3Rpb24KIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfd2l0aF9z
dWJtZW51CiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X3NlcGFyYXRvcgogd2Via2l0X2Nv
bnRleHRfbWVudV9pdGVtX2dldF9hY3Rpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0Q29udGV4dE1lbnUuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RDb250ZXh0TWVudS5jcHAKaW5kZXggZTA4ZWM3OS4u
M2U0MmZmOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3Rr
L1Rlc3RDb250ZXh0TWVudS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyR3RrL1Rlc3RDb250ZXh0TWVudS5jcHAKQEAgLTUzOSw2ICs1MzksMTIwIEBAIHN0YXRpYyB2
b2lkIHRlc3RDb250ZXh0TWVudVBvcHVsYXRlTWVudShDb250ZXh0TWVudUN1c3RvbVRlc3QqIHRl
c3QsIGdjb25zdHBvaW50CiAgICAgZ19hc3NlcnQodGVzdC0+bV90b2dnbGVkKTsKIH0KIAorY2xh
c3MgQ29udGV4dE1lbnVDdXN0b21HQWN0aW9uVGVzdDogcHVibGljIENvbnRleHRNZW51VGVzdCB7
CitwdWJsaWM6CisgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShDb250ZXh0TWVudUN1c3RvbUdB
Y3Rpb25UZXN0KTsKKworICAgIENvbnRleHRNZW51Q3VzdG9tR0FjdGlvblRlc3QoKQorICAgICAg
ICA6IG1faXRlbVRvQWN0aXZhdGVMYWJlbCgwKQorICAgICAgICAsIG1fYWN0aXZhdGVkKGZhbHNl
KQorICAgICAgICAsIG1fdG9nZ2xlZChmYWxzZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBj
b250ZXh0TWVudShXZWJLaXRDb250ZXh0TWVudSogY29udGV4dE1lbnUsIEdka0V2ZW50KiwgV2Vi
S2l0SGl0VGVzdFJlc3VsdCogaGl0VGVzdFJlc3VsdCkKKyAgICB7CisgICAgICAgIC8vIEFwcGVu
ZCBvdXIgY3VzdG9tIGl0ZW0gdG8gdGhlIGRlZmF1bHQgbWVudS4KKyAgICAgICAgd2Via2l0X2Nv
bnRleHRfbWVudV9hcHBlbmQoY29udGV4dE1lbnUsIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9u
ZXdfZnJvbV9nYWN0aW9uKG1fYWN0aW9uLmdldCgpLCBtX3BhcmFtZXRlci5nZXQoKSwgbV9sYWJl
bCkpOworICAgICAgICBxdWl0TWFpbkxvb3AoKTsKKworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgR3RrTWVudUl0ZW0qIGdldE1lbnVJdGVtKEd0a01lbnUqIG1lbnUsIGNvbnN0
IGdjaGFyKiBpdGVtTGFiZWwpCisgICAgeworICAgICAgICBHVW5pcXVlUHRyPEdMaXN0PiBpdGVt
cyhndGtfY29udGFpbmVyX2dldF9jaGlsZHJlbihHVEtfQ09OVEFJTkVSKG1lbnUpKSk7CisgICAg
ICAgIGZvciAoR0xpc3QqIGl0ZXIgPSBpdGVtcy5nZXQoKTsgaXRlcjsgaXRlciA9IGdfbGlzdF9u
ZXh0KGl0ZXIpKSB7CisgICAgICAgICAgICBHdGtNZW51SXRlbSogY2hpbGQgPSBHVEtfTUVOVV9J
VEVNKGl0ZXItPmRhdGEpOworICAgICAgICAgICAgaWYgKGdfc3RyX2VxdWFsKGl0ZW1MYWJlbCwg
Z3RrX21lbnVfaXRlbV9nZXRfbGFiZWwoY2hpbGQpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
Y2hpbGQ7CisgICAgICAgIH0KKyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgdm9pZCBhY3RpdmF0ZU1lbnVJdGVtKCkKKyAgICB7
CisgICAgICAgIGdfYXNzZXJ0KG1faXRlbVRvQWN0aXZhdGVMYWJlbCk7CisgICAgICAgIEd0a01l
bnUqIG1lbnUgPSBnZXRQb3B1cE1lbnUoKTsKKyAgICAgICAgR3RrTWVudUl0ZW0qIGl0ZW0gPSBn
ZXRNZW51SXRlbShtZW51LCBtX2l0ZW1Ub0FjdGl2YXRlTGFiZWwpOworICAgICAgICBndGtfbWVu
dV9zaGVsbF9hY3RpdmF0ZV9pdGVtKEdUS19NRU5VX1NIRUxMKG1lbnUpLCBHVEtfV0lER0VUKGl0
ZW0pLCBUUlVFKTsKKyAgICAgICAgbV9pdGVtVG9BY3RpdmF0ZUxhYmVsID0gMDsKKyAgICB9CisK
KyAgICBzdGF0aWMgZ2Jvb2xlYW4gYWN0aXZhdGVNZW51SXRlbUlkbGVDYWxsYmFjayhncG9pbnRl
ciB1c2VyRGF0YSkKKyAgICB7CisgICAgICAgIENvbnRleHRNZW51Q3VzdG9tR0FjdGlvblRlc3Qq
IHRlc3QgPSBzdGF0aWNfY2FzdDxDb250ZXh0TWVudUN1c3RvbUdBY3Rpb25UZXN0Kj4odXNlckRh
dGEpOworICAgICAgICB0ZXN0LT5hY3RpdmF0ZU1lbnVJdGVtKCk7CisgICAgICAgIHJldHVybiBG
QUxTRTsKKyAgICB9CisKKyAgICB2b2lkIGFjdGl2YXRlQ3VzdG9tTWVudUl0ZW1BbmRXYWl0VW50
aWxBY3RpdmF0ZWQoY29uc3QgY2hhciogYWN0aW9uTGFiZWwpCisgICAgeworICAgICAgICBtX2Fj
dGl2YXRlZCA9IG1fdG9nZ2xlZCA9IGZhbHNlOworICAgICAgICBtX2l0ZW1Ub0FjdGl2YXRlTGFi
ZWwgPSBhY3Rpb25MYWJlbDsKKyAgICAgICAgZ19pZGxlX2FkZChhY3RpdmF0ZU1lbnVJdGVtSWRs
ZUNhbGxiYWNrLCB0aGlzKTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwor
ICAgIH0KKworICAgIHZvaWQgdG9nZ2xlQ3VzdG9tTWVudUl0ZW1BbmRXYWl0VW50aWxUb2dnbGVk
KGNvbnN0IGNoYXIqIGFjdGlvbkxhYmVsKQorICAgIHsKKyAgICAgICAgYWN0aXZhdGVDdXN0b21N
ZW51SXRlbUFuZFdhaXRVbnRpbEFjdGl2YXRlZChhY3Rpb25MYWJlbCk7CisgICAgfQorCisgICAg
c3RhdGljIHZvaWQgYWN0aW9uQWN0aXZhdGVkQ2FsbGJhY2soR1NpbXBsZUFjdGlvbiosIEdWYXJp
YW50KiwgQ29udGV4dE1lbnVDdXN0b21HQWN0aW9uVGVzdCogdGVzdCkKKyAgICB7CisgICAgICAg
IHRlc3QtPm1fYWN0aXZhdGVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBhY3Rp
b25Ub2dnbGVkQ2FsbGJhY2soR1NpbXBsZUFjdGlvbiosIEdWYXJpYW50KiwgQ29udGV4dE1lbnVD
dXN0b21HQWN0aW9uVGVzdCogdGVzdCkKKyAgICB7CisgICAgICAgIHRlc3QtPm1fdG9nZ2xlZCA9
IHRydWU7CisgICAgfQorCisgICAgdm9pZCBzZXRBY3Rpb24oR0FjdGlvbiogYWN0aW9uLCBHVmFy
aWFudCAqcGFyYW1ldGVyLCBjb25zdCBjaGFyKiBsYWJlbCkKKyAgICB7CisgICAgICAgIG1fYWN0
aW9uID0gYWN0aW9uOworICAgICAgICBtX3BhcmFtZXRlciA9IHBhcmFtZXRlcjsKKyAgICAgICAg
bV9sYWJlbCA9IGxhYmVsOworICAgICAgICBpZiAoZ19hY3Rpb25fZ2V0X3N0YXRlX3R5cGUoYWN0
aW9uKSAhPSBudWxscHRyICYmIGdfdmFyaWFudF90eXBlX2VxdWFsKGdfYWN0aW9uX2dldF9zdGF0
ZV90eXBlKGFjdGlvbiksIEdfVkFSSUFOVF9UWVBFX0JPT0xFQU4pKQorICAgICAgICAgICAgZ19z
aWduYWxfY29ubmVjdChhY3Rpb24sICJjaGFuZ2Utc3RhdGUiLCBHX0NBTExCQUNLKGFjdGlvblRv
Z2dsZWRDYWxsYmFjayksIHRoaXMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBnX3NpZ25h
bF9jb25uZWN0KGFjdGlvbiwgImFjdGl2YXRlIiwgR19DQUxMQkFDSyhhY3Rpb25BY3RpdmF0ZWRD
YWxsYmFjayksIHRoaXMpOworICAgIH0KKworICAgIEdSZWZQdHI8R0FjdGlvbj4gbV9hY3Rpb247
CisgICAgR1JlZlB0cjxHVmFyaWFudD4gbV9wYXJhbWV0ZXI7CisgICAgY29uc3QgY2hhciogbV9s
YWJlbDsKKyAgICBjb25zdCBjaGFyKiBtX2l0ZW1Ub0FjdGl2YXRlTGFiZWw7CisgICAgYm9vbCBt
X2FjdGl2YXRlZDsKKyAgICBib29sIG1fdG9nZ2xlZDsKK307CisKK3N0YXRpYyB2b2lkIHRlc3RD
b250ZXh0TWVudUdBY3Rpb25Qb3B1bGF0ZU1lbnUoQ29udGV4dE1lbnVDdXN0b21HQWN0aW9uVGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0
VW50aWxNYXBwZWQoKTsKKworICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9keT5XZWJLaXRH
VEsrIENvbnRleHQgbWVudSB0ZXN0czwvYm9keT48L2h0bWw+IiwgImZpbGU6Ly8vIik7CisgICAg
dGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICAvLyBDcmVhdGUgYSBjdXN0b20g
bWVudSBpdGVtLgorICAgIEdSZWZQdHI8R1NpbXBsZUFjdGlvbj4gYWN0aW9uID0gYWRvcHRHUmVm
KGdfc2ltcGxlX2FjdGlvbl9uZXcoIldlYktpdEdUSytDdXN0b21BY3Rpb24iLCBudWxscHRyKSk7
CisgICAgdGVzdC0+c2V0QWN0aW9uKEdfQUNUSU9OKGFjdGlvbi5nZXQoKSksIG51bGxwdHIsICJD
dXN0b20gX0FjdGlvbiIpOworICAgIHRlc3QtPnNob3dDb250ZXh0TWVudUFuZFdhaXRVbnRpbEZp
bmlzaGVkKCk7CisgICAgdGVzdC0+YWN0aXZhdGVDdXN0b21NZW51SXRlbUFuZFdhaXRVbnRpbEFj
dGl2YXRlZCgiQ3VzdG9tIF9BY3Rpb24iKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5tX2FjdGl2YXRl
ZCk7CisgICAgZ19hc3NlcnQoIXRlc3QtPm1fdG9nZ2xlZCk7CisKKyAgICAvLyBDcmVhdGUgYSBj
dXN0b20gdG9nZ2xlIG1lbnUgaXRlbS4KKyAgICBHUmVmUHRyPEdTaW1wbGVBY3Rpb24+IHRvZ2ds
ZUFjdGlvbiA9IGFkb3B0R1JlZihnX3NpbXBsZV9hY3Rpb25fbmV3X3N0YXRlZnVsKCJXZWJLaXRH
VEsrQ3VzdG9tVG9nZ2xlQWN0aW9uIiwgbnVsbHB0ciwgZ192YXJpYW50X25ld19ib29sZWFuKFRS
VUUpKSk7CisgICAgdGVzdC0+c2V0QWN0aW9uKEdfQUNUSU9OKHRvZ2dsZUFjdGlvbi5nZXQoKSks
IG51bGxwdHIsICJDdXN0b20gX1RvZ2dsZSBBY3Rpb24iKTsKKyAgICB0ZXN0LT5zaG93Q29udGV4
dE1lbnVBbmRXYWl0VW50aWxGaW5pc2hlZCgpOworICAgIHRlc3QtPnRvZ2dsZUN1c3RvbU1lbnVJ
dGVtQW5kV2FpdFVudGlsVG9nZ2xlZCgiQ3VzdG9tIF9Ub2dnbGUgQWN0aW9uIik7CisgICAgZ19h
c3NlcnQoIXRlc3QtPm1fYWN0aXZhdGVkKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5tX3RvZ2dsZWQp
OworfQorCiBjbGFzcyBDb250ZXh0TWVudUN1c3RvbUZ1bGxUZXN0OiBwdWJsaWMgQ29udGV4dE1l
bnVUZXN0IHsKIHB1YmxpYzoKICAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKENvbnRleHRNZW51
Q3VzdG9tRnVsbFRlc3QpOwpAQCAtMTAyOSw2ICsxMTQzLDcgQEAgdm9pZCBiZWZvcmVBbGwoKQog
ewogICAgIENvbnRleHRNZW51RGVmYXVsdFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJkZWZh
dWx0LW1lbnUiLCB0ZXN0Q29udGV4dE1lbnVEZWZhdWx0TWVudSk7CiAgICAgQ29udGV4dE1lbnVD
dXN0b21UZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAicG9wdWxhdGUtbWVudSIsIHRlc3RDb250
ZXh0TWVudVBvcHVsYXRlTWVudSk7CisgICAgQ29udGV4dE1lbnVDdXN0b21HQWN0aW9uVGVzdDo6
YWRkKCJXZWJLaXRXZWJWaWV3IiwgImdhY3Rpb24tcG9wdWxhdGUtbWVudSIsIHRlc3RDb250ZXh0
TWVudUdBY3Rpb25Qb3B1bGF0ZU1lbnUpOwogICAgIENvbnRleHRNZW51Q3VzdG9tRnVsbFRlc3Q6
OmFkZCgiV2ViS2l0V2ViVmlldyIsICJjdXN0b20tbWVudSIsIHRlc3RDb250ZXh0TWVudUN1c3Rv
bU1lbnUpOwogICAgIENvbnRleHRNZW51RGlzYWJsZWRUZXN0OjphZGQoIldlYktpdFdlYlZpZXci
LCAiZGlzYWJsZS1tZW51IiwgdGVzdENvbnRleHRNZW51RGlzYWJsZU1lbnUpOwogICAgIENvbnRl
eHRNZW51U3VibWVudVRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJzdWJtZW51IiwgdGVzdENv
bnRleHRNZW51U3ViTWVudSk7Ci0tIAoyLjcuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288043</attachid>
            <date>2016-09-06 13:50:59 -0700</date>
            <delta_ts>2017-05-19 05:25:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159631-20160906234835.patch</filename>
            <type>text/plain</type>
            <size>12553</size>
            <attacher name="Iulian Radu">iulian.radu67</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDJiOGYwNTg3MjRiMWUy
MDVmMzQ0MjdkYjMyODM5ZmY1MTFkZDNlNS4uNGRhM2YxNmQxMGMwZGE5MjRkMGNjNGJhOWVmMGQy
MTMxODEyNWRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE2LTA5LTA2ICBJdWxp
YW4gUmFkdSAgPGl1bGlhbi5yYWR1NjdAZ21haWwuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCB3
ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fZ2FjdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NjMxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3dzIGNyZWF0aW5nIGEgV2ViS2l0
Q29udGV4dE1lbnVJdGVtIGZyb20gYSBHQWN0aW9uLiBCZXNpZGVzIHRoZQorICAgICAgICBHQWN0
aW9uLCB0aGUgZnVuY3Rpb24gYWxzbyByZWNlaXZlcyBhbiBvcHRpb25hbCBHVmFyaWFudCBwYXJh
bWV0ZXIKKyAgICAgICAgdGhhdCB3aWxsIGJlIHBhc3NlZCB0byB0aGUgZ19hY3Rpb25fYWN0aXZh
dGUgKCkgZnVuY3Rpb24gd2hlbiB0aGUgaXRlbQorICAgICAgICBpcyBhY3RpdmF0ZWQgYW5kIGEg
bGFiZWwgdG8gYmUgZGlzcGxheWVkIGZvciB0aGUgaXRlbS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHA6CisgICAgICAgIChhY3Rpb25EYXRh
RnJlZSk6CisgICAgICAgIChhY3Rpb25BY3RpdmF0ZUNhbGxiYWNrKToKKyAgICAgICAgKGFjdGlv
blRvZ2dsZUNhbGxiYWNrKToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdf
ZnJvbV9nYWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0
TWVudUl0ZW0uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
NC4wLXNlY3Rpb25zLnR4dDoKKwogMjAxNi0wOS0wNSAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8
Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51az4KIAogICAgICAgICBbR1RLXSBHTF9QQUNL
X1JPV19MRU5HVEggaXMgbm90IGF2YWlsYWJsZSBpbiBHTEVTMgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAK
aW5kZXggNWEzYTQ3MjczNThiMGY0NjA4NGY4N2VjOTQ4ZTRkYzIyNTQ5NDA5NS4uNTRkZWU2ZDAy
ZGYzMDBmY2EyMzJkMTI0NGU1NWYwZDRiZDI5NWUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwCkBA
IC0xOTEsNiArMTkxLDc2IEBAIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRf
bWVudV9pdGVtX25ld19mcm9tX3N0b2NrX2FjdGlvbl93aXRoX2xhYmVsCiAgICAgcmV0dXJuIGl0
ZW07CiB9CiAKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBHQWN0aW9uKiBhY3Rpb247CisgICAgR1Zh
cmlhbnQqIHBhcmFtZXRlcjsKK30gQWN0aW9uRGF0YTsKKworc3RhdGljIHZvaWQgYWN0aW9uRGF0
YUZyZWUoQWN0aW9uRGF0YSogYWN0aW9uRGF0YSwgR09iamVjdCogb2JqZWN0KQoreworICAgIGdf
cmV0dXJuX2lmX2ZhaWwoYWN0aW9uRGF0YSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChHX0lTX09C
SkVDVChvYmplY3QpKTsKKworICAgIGlmIChhY3Rpb25EYXRhLT5wYXJhbWV0ZXIpCisgICAgICAg
IGdfdmFyaWFudF91bnJlZihhY3Rpb25EYXRhLT5wYXJhbWV0ZXIpOworCisgICAgZ19zbGljZV9m
cmVlKEFjdGlvbkRhdGEsIGFjdGlvbkRhdGEpOworfQorCitzdGF0aWMgdm9pZCBhY3Rpb25BY3Rp
dmF0ZUNhbGxiYWNrKEd0a0FjdGlvbiogZ3RrQWN0aW9uLCBBY3Rpb25EYXRhKiBhY3Rpb25EYXRh
KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoR1RLX0lTX0FDVElPTihndGtBY3Rpb24pKTsKKyAg
ICBnX3JldHVybl9pZl9mYWlsKGFjdGlvbkRhdGEpOworCisgICAgZ19hY3Rpb25fYWN0aXZhdGUo
YWN0aW9uRGF0YS0+YWN0aW9uLCBhY3Rpb25EYXRhLT5wYXJhbWV0ZXIpOworICAgIGFjdGlvbkRh
dGEtPnBhcmFtZXRlciA9IG51bGxwdHI7Cit9CisKK3N0YXRpYyB2b2lkIGFjdGlvblRvZ2dsZUNh
bGxiYWNrKEd0a0FjdGlvbiogZ3RrQWN0aW9uLCBHQWN0aW9uKiBhY3Rpb24pCit7CisgICAgZ19y
ZXR1cm5faWZfZmFpbChHVEtfSVNfQUNUSU9OKGd0a0FjdGlvbikpOworICAgIGdfcmV0dXJuX2lm
X2ZhaWwoR19JU19BQ1RJT04oYWN0aW9uKSk7CisKKyAgICBHUmVmUHRyPEdWYXJpYW50PiBzdGF0
ZSA9IGFkb3B0R1JlZihnX2FjdGlvbl9nZXRfc3RhdGUoYWN0aW9uKSk7CisgICAgZ19hY3Rpb25f
Y2hhbmdlX3N0YXRlKGFjdGlvbiwgZ192YXJpYW50X25ld19ib29sZWFuKCFnX3ZhcmlhbnRfZ2V0
X2Jvb2xlYW4oc3RhdGUuZ2V0KCkpKSk7Cit9CisKKy8qKgorICogd2Via2l0X2NvbnRleHRfbWVu
dV9pdGVtX25ld19mcm9tX2dhY3Rpb246CisgKiBAYWN0aW9uOiBhICNHQWN0aW9uCisgKiBAcGFy
YW1ldGVyOiAoYWxsb3ctbm9uZSk6IGEgI0dWYXJpYW50IHBhcmFtZXRlciB0byB1c2Ugd2l0aCB0
aGUgYWN0aXZhdGUgZnVuY3Rpb24KKyAqIEBsYWJlbDogdGV4dCB0byB1c2UgYXMgdGhlICNXZWJL
aXRDb250ZXh0TWVudUl0ZW0ncyBsYWJlbAorICoKKyAqIENyZWF0ZXMgYSBuZXcgI1dlYktpdENv
bnRleHRNZW51SXRlbSBmb3IgdGhlIGdpdmVuIGFjdGlvbiB1c2luZyB0aGUgZ2l2ZW4gQGxhYmVs
LgorICoKKyAqIFJldHVybnM6IHRoZSBuZXdseSBjcmVhdGVkICNXZWJLaXRDb250ZXh0TWVudUl0
ZW0gb2JqZWN0LgorICoKKyAqIFNpbmNlOiAyLjE2CisgKi8KK1dlYktpdENvbnRleHRNZW51SXRl
bSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX2dhY3Rpb24oR0FjdGlvbiogYWN0
aW9uLCBHVmFyaWFudCogcGFyYW1ldGVyLCBjb25zdCBnY2hhciogbGFiZWwpCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoR19JU19BQ1RJT04oYWN0aW9uKSwgbnVsbHB0cik7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwobGFiZWwgJiYgKmxhYmVsLCBudWxscHRyKTsKKworICAgIEFjdGlv
bkRhdGEqIGFjdGlvbkRhdGEgPSBnX3NsaWNlX25ldyhBY3Rpb25EYXRhKTsKKyAgICBhY3Rpb25E
YXRhLT5hY3Rpb24gPSBhY3Rpb247CisgICAgYWN0aW9uRGF0YS0+cGFyYW1ldGVyID0gcGFyYW1l
dGVyOworCisgICAgR1JlZlB0cjxHdGtBY3Rpb24+IGd0a0FjdGlvbjsKKyAgICBpZiAoZ19hY3Rp
b25fZ2V0X3N0YXRlX3R5cGUoYWN0aW9uKSAhPSBudWxscHRyICYmIGdfdmFyaWFudF90eXBlX2Vx
dWFsKGdfYWN0aW9uX2dldF9zdGF0ZV90eXBlKGFjdGlvbiksIEdfVkFSSUFOVF9UWVBFX0JPT0xF
QU4pKSB7CisgICAgICAgIGd0a0FjdGlvbiA9IGFkb3B0R1JlZihHVEtfQUNUSU9OKGd0a190b2dn
bGVfYWN0aW9uX25ldyhnX2FjdGlvbl9nZXRfbmFtZShhY3Rpb24pLCBsYWJlbCwgbnVsbHB0ciwg
bnVsbHB0cikpKTsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChndGtBY3Rpb24uZ2V0KCksICJh
Y3RpdmF0ZSIsIEdfQ0FMTEJBQ0soYWN0aW9uVG9nZ2xlQ2FsbGJhY2spLCBhY3Rpb24pOworICAg
IH0gZWxzZSB7CisgICAgICAgIGd0a0FjdGlvbiA9IGFkb3B0R1JlZihndGtfYWN0aW9uX25ldyhn
X2FjdGlvbl9nZXRfbmFtZShhY3Rpb24pLCBsYWJlbCwgbnVsbHB0ciwgbnVsbHB0cikpOworICAg
ICAgICBnX3NpZ25hbF9jb25uZWN0KGd0a0FjdGlvbi5nZXQoKSwgImFjdGl2YXRlIiwgR19DQUxM
QkFDSyhhY3Rpb25BY3RpdmF0ZUNhbGxiYWNrKSwgYWN0aW9uRGF0YSk7CisgICAgfQorCisgICAg
Z19vYmplY3RfYmluZF9wcm9wZXJ0eShhY3Rpb24sICJlbmFibGVkIiwgZ3RrQWN0aW9uLmdldCgp
LCAic2Vuc2l0aXZlIiwgR19CSU5ESU5HX1NZTkNfQ1JFQVRFKTsKKyAgICBnX29iamVjdF93ZWFr
X3JlZihHX09CSkVDVChndGtBY3Rpb24uZ2V0KCkpLCByZWludGVycHJldF9jYXN0PEdXZWFrTm90
aWZ5PihhY3Rpb25EYXRhRnJlZSksIGFjdGlvbkRhdGEpOworCisgICAgcmV0dXJuIHdlYmtpdF9j
b250ZXh0X21lbnVfaXRlbV9uZXcoZ3RrQWN0aW9uLmdldCgpKTsKK30KKwogLyoqCiAgKiB3ZWJr
aXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X3dpdGhfc3VibWVudToKICAqIEBsYWJlbDogdGhlIG1l
bnUgaXRlbSBsYWJlbCB0ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUl0ZW0uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5oCmluZGV4IDMzZTMxMjQxYTAzZTdmZGZm
NWYyY2E0NjU1OGUxNjZkNzE4YWMzNTMuLjRlZTdjYWYzZTk1Mzc2OTIxZjU0Y2QyMjgyY2Q0YTA4
NDhiZWZhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdENvbnRleHRNZW51SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5oCkBAIC03MSw2ICs3MSwxMSBAQCB3ZWJraXRfY29u
dGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fc3RvY2tfYWN0aW9uX3dpdGhfbGFiZWwgKFdlYktpdENv
bnRleHRNZW51QWN0aQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICpsYWJlbCk7CiAKIFdFQktJ
VF9BUEkgV2ViS2l0Q29udGV4dE1lbnVJdGVtICoKK3dlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9u
ZXdfZnJvbV9nYWN0aW9uICAgICAgICAgICAgICAgICAoR0FjdGlvbiAgICAgICAgICAgICAgICAq
YWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHVmFyaWFudCAgICAgICAgICAgICAgICpwYXJhbWV0ZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdj
aGFyICAgICAgICAgICAgKmxhYmVsKTsKKworV0VCS0lUX0FQSSBXZWJLaXRDb250ZXh0TWVudUl0
ZW0gKgogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld193aXRoX3N1Ym1lbnUgICAgICAgICAg
ICAgICAgIChjb25zdCBnY2hhciAgICAgICAgICAgICpsYWJlbCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Q29udGV4dE1l
bnUgICAgICAqc3VibWVudSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKaW5k
ZXggMDAyZWYzM2FhNzkyYzI1ZWE2NTNiMzE2NjQxNjIyZTM0MTg0MGRkYy4uMmY5YWY4MDg2ZTdl
Yjk4ZjU0NWQwNWQ0YjJmOWI5NTIzZTEyZmIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0
aW9ucy50eHQKQEAgLTExMzcsNiArMTEzNyw3IEBAIFdlYktpdENvbnRleHRNZW51QWN0aW9uCiB3
ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3CiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3
X2Zyb21fc3RvY2tfYWN0aW9uCiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fc3Rv
Y2tfYWN0aW9uX3dpdGhfbGFiZWwKK3dlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9n
YWN0aW9uCiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X3dpdGhfc3VibWVudQogd2Via2l0
X2NvbnRleHRfbWVudV9pdGVtX25ld19zZXBhcmF0b3IKIHdlYmtpdF9jb250ZXh0X21lbnVfaXRl
bV9nZXRfYWN0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggYWZlMTIwZDkxN2QwYmU1ZDQ4YjFiYzZlYmE1ODYyZTA1OWFhM2U2MC4uZDhiMGI1
M2IwOWNmNzYyMTlmMWZjY2UyYTJjNWU2YTcxZmVjNGMxMiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE2LTA5LTA2
ICBJdWxpYW4gUmFkdSAgPGl1bGlhbi5yYWR1NjdAZ21haWwuY29tPgorCisgICAgICAgIFtHVEtd
IEFkZCB0ZXN0IGZvciB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fZ2FjdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NjMxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdENvbnRleHRNZW51LmNwcDoKKyAgICAgICAgKHRl
c3RDb250ZXh0TWVudUdBY3Rpb25Qb3B1bGF0ZU1lbnUpOiBBZGQgdHdvIHRlc3QgY2FzZXMuCisg
ICAgICAgIChiZWZvcmVBbGwpOiBBZGQgdGVzdCBmb3Igd2Via2l0X2NvbnRleHRfbWVudV9pdGVt
X25ld19mcm9tX2dhY3Rpb24uCisKIDIwMTYtMDktMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBXM0MgdGVzdCBpbXBvcnRlciB1bml0IHRlc3RzIGFm
dGVyIHIyMDU0NDcKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9UZXN0Q29udGV4dE1lbnUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyR3RrL1Rlc3RDb250ZXh0TWVudS5jcHAKaW5kZXggZTA4ZWM3OTlkNjgyYWZlZGY1MWE5YzBm
YjBiYzQ0ZDdlOTc3ZmRiMi4uM2U0MmZmODhhNzg4OGU4ZWExNWEzNjlhMmU0M2YyMjYzYmFlMzc1
OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RD
b250ZXh0TWVudS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3Rr
L1Rlc3RDb250ZXh0TWVudS5jcHAKQEAgLTUzOSw2ICs1MzksMTIwIEBAIHN0YXRpYyB2b2lkIHRl
c3RDb250ZXh0TWVudVBvcHVsYXRlTWVudShDb250ZXh0TWVudUN1c3RvbVRlc3QqIHRlc3QsIGdj
b25zdHBvaW50CiAgICAgZ19hc3NlcnQodGVzdC0+bV90b2dnbGVkKTsKIH0KIAorY2xhc3MgQ29u
dGV4dE1lbnVDdXN0b21HQWN0aW9uVGVzdDogcHVibGljIENvbnRleHRNZW51VGVzdCB7CitwdWJs
aWM6CisgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShDb250ZXh0TWVudUN1c3RvbUdBY3Rpb25U
ZXN0KTsKKworICAgIENvbnRleHRNZW51Q3VzdG9tR0FjdGlvblRlc3QoKQorICAgICAgICA6IG1f
aXRlbVRvQWN0aXZhdGVMYWJlbCgwKQorICAgICAgICAsIG1fYWN0aXZhdGVkKGZhbHNlKQorICAg
ICAgICAsIG1fdG9nZ2xlZChmYWxzZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBjb250ZXh0
TWVudShXZWJLaXRDb250ZXh0TWVudSogY29udGV4dE1lbnUsIEdka0V2ZW50KiwgV2ViS2l0SGl0
VGVzdFJlc3VsdCogaGl0VGVzdFJlc3VsdCkKKyAgICB7CisgICAgICAgIC8vIEFwcGVuZCBvdXIg
Y3VzdG9tIGl0ZW0gdG8gdGhlIGRlZmF1bHQgbWVudS4KKyAgICAgICAgd2Via2l0X2NvbnRleHRf
bWVudV9hcHBlbmQoY29udGV4dE1lbnUsIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJv
bV9nYWN0aW9uKG1fYWN0aW9uLmdldCgpLCBtX3BhcmFtZXRlci5nZXQoKSwgbV9sYWJlbCkpOwor
ICAgICAgICBxdWl0TWFpbkxvb3AoKTsKKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgR3RrTWVudUl0ZW0qIGdldE1lbnVJdGVtKEd0a01lbnUqIG1lbnUsIGNvbnN0IGdjaGFy
KiBpdGVtTGFiZWwpCisgICAgeworICAgICAgICBHVW5pcXVlUHRyPEdMaXN0PiBpdGVtcyhndGtf
Y29udGFpbmVyX2dldF9jaGlsZHJlbihHVEtfQ09OVEFJTkVSKG1lbnUpKSk7CisgICAgICAgIGZv
ciAoR0xpc3QqIGl0ZXIgPSBpdGVtcy5nZXQoKTsgaXRlcjsgaXRlciA9IGdfbGlzdF9uZXh0KGl0
ZXIpKSB7CisgICAgICAgICAgICBHdGtNZW51SXRlbSogY2hpbGQgPSBHVEtfTUVOVV9JVEVNKGl0
ZXItPmRhdGEpOworICAgICAgICAgICAgaWYgKGdfc3RyX2VxdWFsKGl0ZW1MYWJlbCwgZ3RrX21l
bnVfaXRlbV9nZXRfbGFiZWwoY2hpbGQpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQ7
CisgICAgICAgIH0KKyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorCisgICAgdm9pZCBhY3RpdmF0ZU1lbnVJdGVtKCkKKyAgICB7CisgICAg
ICAgIGdfYXNzZXJ0KG1faXRlbVRvQWN0aXZhdGVMYWJlbCk7CisgICAgICAgIEd0a01lbnUqIG1l
bnUgPSBnZXRQb3B1cE1lbnUoKTsKKyAgICAgICAgR3RrTWVudUl0ZW0qIGl0ZW0gPSBnZXRNZW51
SXRlbShtZW51LCBtX2l0ZW1Ub0FjdGl2YXRlTGFiZWwpOworICAgICAgICBndGtfbWVudV9zaGVs
bF9hY3RpdmF0ZV9pdGVtKEdUS19NRU5VX1NIRUxMKG1lbnUpLCBHVEtfV0lER0VUKGl0ZW0pLCBU
UlVFKTsKKyAgICAgICAgbV9pdGVtVG9BY3RpdmF0ZUxhYmVsID0gMDsKKyAgICB9CisKKyAgICBz
dGF0aWMgZ2Jvb2xlYW4gYWN0aXZhdGVNZW51SXRlbUlkbGVDYWxsYmFjayhncG9pbnRlciB1c2Vy
RGF0YSkKKyAgICB7CisgICAgICAgIENvbnRleHRNZW51Q3VzdG9tR0FjdGlvblRlc3QqIHRlc3Qg
PSBzdGF0aWNfY2FzdDxDb250ZXh0TWVudUN1c3RvbUdBY3Rpb25UZXN0Kj4odXNlckRhdGEpOwor
ICAgICAgICB0ZXN0LT5hY3RpdmF0ZU1lbnVJdGVtKCk7CisgICAgICAgIHJldHVybiBGQUxTRTsK
KyAgICB9CisKKyAgICB2b2lkIGFjdGl2YXRlQ3VzdG9tTWVudUl0ZW1BbmRXYWl0VW50aWxBY3Rp
dmF0ZWQoY29uc3QgY2hhciogYWN0aW9uTGFiZWwpCisgICAgeworICAgICAgICBtX2FjdGl2YXRl
ZCA9IG1fdG9nZ2xlZCA9IGZhbHNlOworICAgICAgICBtX2l0ZW1Ub0FjdGl2YXRlTGFiZWwgPSBh
Y3Rpb25MYWJlbDsKKyAgICAgICAgZ19pZGxlX2FkZChhY3RpdmF0ZU1lbnVJdGVtSWRsZUNhbGxi
YWNrLCB0aGlzKTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgIH0K
KworICAgIHZvaWQgdG9nZ2xlQ3VzdG9tTWVudUl0ZW1BbmRXYWl0VW50aWxUb2dnbGVkKGNvbnN0
IGNoYXIqIGFjdGlvbkxhYmVsKQorICAgIHsKKyAgICAgICAgYWN0aXZhdGVDdXN0b21NZW51SXRl
bUFuZFdhaXRVbnRpbEFjdGl2YXRlZChhY3Rpb25MYWJlbCk7CisgICAgfQorCisgICAgc3RhdGlj
IHZvaWQgYWN0aW9uQWN0aXZhdGVkQ2FsbGJhY2soR1NpbXBsZUFjdGlvbiosIEdWYXJpYW50Kiwg
Q29udGV4dE1lbnVDdXN0b21HQWN0aW9uVGVzdCogdGVzdCkKKyAgICB7CisgICAgICAgIHRlc3Qt
Pm1fYWN0aXZhdGVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBhY3Rpb25Ub2dn
bGVkQ2FsbGJhY2soR1NpbXBsZUFjdGlvbiosIEdWYXJpYW50KiwgQ29udGV4dE1lbnVDdXN0b21H
QWN0aW9uVGVzdCogdGVzdCkKKyAgICB7CisgICAgICAgIHRlc3QtPm1fdG9nZ2xlZCA9IHRydWU7
CisgICAgfQorCisgICAgdm9pZCBzZXRBY3Rpb24oR0FjdGlvbiogYWN0aW9uLCBHVmFyaWFudCAq
cGFyYW1ldGVyLCBjb25zdCBjaGFyKiBsYWJlbCkKKyAgICB7CisgICAgICAgIG1fYWN0aW9uID0g
YWN0aW9uOworICAgICAgICBtX3BhcmFtZXRlciA9IHBhcmFtZXRlcjsKKyAgICAgICAgbV9sYWJl
bCA9IGxhYmVsOworICAgICAgICBpZiAoZ19hY3Rpb25fZ2V0X3N0YXRlX3R5cGUoYWN0aW9uKSAh
PSBudWxscHRyICYmIGdfdmFyaWFudF90eXBlX2VxdWFsKGdfYWN0aW9uX2dldF9zdGF0ZV90eXBl
KGFjdGlvbiksIEdfVkFSSUFOVF9UWVBFX0JPT0xFQU4pKQorICAgICAgICAgICAgZ19zaWduYWxf
Y29ubmVjdChhY3Rpb24sICJjaGFuZ2Utc3RhdGUiLCBHX0NBTExCQUNLKGFjdGlvblRvZ2dsZWRD
YWxsYmFjayksIHRoaXMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBnX3NpZ25hbF9jb25u
ZWN0KGFjdGlvbiwgImFjdGl2YXRlIiwgR19DQUxMQkFDSyhhY3Rpb25BY3RpdmF0ZWRDYWxsYmFj
ayksIHRoaXMpOworICAgIH0KKworICAgIEdSZWZQdHI8R0FjdGlvbj4gbV9hY3Rpb247CisgICAg
R1JlZlB0cjxHVmFyaWFudD4gbV9wYXJhbWV0ZXI7CisgICAgY29uc3QgY2hhciogbV9sYWJlbDsK
KyAgICBjb25zdCBjaGFyKiBtX2l0ZW1Ub0FjdGl2YXRlTGFiZWw7CisgICAgYm9vbCBtX2FjdGl2
YXRlZDsKKyAgICBib29sIG1fdG9nZ2xlZDsKK307CisKK3N0YXRpYyB2b2lkIHRlc3RDb250ZXh0
TWVudUdBY3Rpb25Qb3B1bGF0ZU1lbnUoQ29udGV4dE1lbnVDdXN0b21HQWN0aW9uVGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50aWxN
YXBwZWQoKTsKKworICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9keT5XZWJLaXRHVEsrIENv
bnRleHQgbWVudSB0ZXN0czwvYm9keT48L2h0bWw+IiwgImZpbGU6Ly8vIik7CisgICAgdGVzdC0+
d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICAvLyBDcmVhdGUgYSBjdXN0b20gbWVudSBp
dGVtLgorICAgIEdSZWZQdHI8R1NpbXBsZUFjdGlvbj4gYWN0aW9uID0gYWRvcHRHUmVmKGdfc2lt
cGxlX2FjdGlvbl9uZXcoIldlYktpdEdUSytDdXN0b21BY3Rpb24iLCBudWxscHRyKSk7CisgICAg
dGVzdC0+c2V0QWN0aW9uKEdfQUNUSU9OKGFjdGlvbi5nZXQoKSksIG51bGxwdHIsICJDdXN0b20g
X0FjdGlvbiIpOworICAgIHRlc3QtPnNob3dDb250ZXh0TWVudUFuZFdhaXRVbnRpbEZpbmlzaGVk
KCk7CisgICAgdGVzdC0+YWN0aXZhdGVDdXN0b21NZW51SXRlbUFuZFdhaXRVbnRpbEFjdGl2YXRl
ZCgiQ3VzdG9tIF9BY3Rpb24iKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5tX2FjdGl2YXRlZCk7Cisg
ICAgZ19hc3NlcnQoIXRlc3QtPm1fdG9nZ2xlZCk7CisKKyAgICAvLyBDcmVhdGUgYSBjdXN0b20g
dG9nZ2xlIG1lbnUgaXRlbS4KKyAgICBHUmVmUHRyPEdTaW1wbGVBY3Rpb24+IHRvZ2dsZUFjdGlv
biA9IGFkb3B0R1JlZihnX3NpbXBsZV9hY3Rpb25fbmV3X3N0YXRlZnVsKCJXZWJLaXRHVEsrQ3Vz
dG9tVG9nZ2xlQWN0aW9uIiwgbnVsbHB0ciwgZ192YXJpYW50X25ld19ib29sZWFuKFRSVUUpKSk7
CisgICAgdGVzdC0+c2V0QWN0aW9uKEdfQUNUSU9OKHRvZ2dsZUFjdGlvbi5nZXQoKSksIG51bGxw
dHIsICJDdXN0b20gX1RvZ2dsZSBBY3Rpb24iKTsKKyAgICB0ZXN0LT5zaG93Q29udGV4dE1lbnVB
bmRXYWl0VW50aWxGaW5pc2hlZCgpOworICAgIHRlc3QtPnRvZ2dsZUN1c3RvbU1lbnVJdGVtQW5k
V2FpdFVudGlsVG9nZ2xlZCgiQ3VzdG9tIF9Ub2dnbGUgQWN0aW9uIik7CisgICAgZ19hc3NlcnQo
IXRlc3QtPm1fYWN0aXZhdGVkKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5tX3RvZ2dsZWQpOworfQor
CiBjbGFzcyBDb250ZXh0TWVudUN1c3RvbUZ1bGxUZXN0OiBwdWJsaWMgQ29udGV4dE1lbnVUZXN0
IHsKIHB1YmxpYzoKICAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKENvbnRleHRNZW51Q3VzdG9t
RnVsbFRlc3QpOwpAQCAtMTAyOSw2ICsxMTQzLDcgQEAgdm9pZCBiZWZvcmVBbGwoKQogewogICAg
IENvbnRleHRNZW51RGVmYXVsdFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJkZWZhdWx0LW1l
bnUiLCB0ZXN0Q29udGV4dE1lbnVEZWZhdWx0TWVudSk7CiAgICAgQ29udGV4dE1lbnVDdXN0b21U
ZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAicG9wdWxhdGUtbWVudSIsIHRlc3RDb250ZXh0TWVu
dVBvcHVsYXRlTWVudSk7CisgICAgQ29udGV4dE1lbnVDdXN0b21HQWN0aW9uVGVzdDo6YWRkKCJX
ZWJLaXRXZWJWaWV3IiwgImdhY3Rpb24tcG9wdWxhdGUtbWVudSIsIHRlc3RDb250ZXh0TWVudUdB
Y3Rpb25Qb3B1bGF0ZU1lbnUpOwogICAgIENvbnRleHRNZW51Q3VzdG9tRnVsbFRlc3Q6OmFkZCgi
V2ViS2l0V2ViVmlldyIsICJjdXN0b20tbWVudSIsIHRlc3RDb250ZXh0TWVudUN1c3RvbU1lbnUp
OwogICAgIENvbnRleHRNZW51RGlzYWJsZWRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiZGlz
YWJsZS1tZW51IiwgdGVzdENvbnRleHRNZW51RGlzYWJsZU1lbnUpOwogICAgIENvbnRleHRNZW51
U3VibWVudVRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJzdWJtZW51IiwgdGVzdENvbnRleHRN
ZW51U3ViTWVudSk7Cg==
</data>
<flag name="review"
          id="311449"
          type_id="1"
          status="-"
          setter="mcatanzaro"
    />
    <flag name="commit-queue"
          id="311459"
          type_id="3"
          status="-"
          setter="mcatanzaro"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310648</attachid>
            <date>2017-05-19 05:25:55 -0700</date>
            <delta_ts>2017-05-20 06:47:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-context-menu-gaction.diff</filename>
            <type>text/plain</type>
            <size>26127</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhMzc2MGU0MDQwNS4uMWNkNjI2YzhmYzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwzMiBAQAogMjAxNy0wNS0xOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CiAKKyAgICAgICAgW0dUS10gQWRkIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9u
ZXdfZnJvbV9nYWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTk2MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgbmV3IEFQSSB0byBjcmVhdGUgYSBXZWJLaXRDb250ZXh0TWVudUl0ZW0gZnJv
bSBhIEdBY3Rpb24gYW5kIGFsc28gdG8gZ2V0IHRoZSBhc3NvY2lhdGVkIEdBY3Rpb24uCisKKyAg
ICAgICAgKiBTaGFyZWQvZ3RrL1dlYkNvbnRleHRNZW51SXRlbUd0ay5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbUd0azo6V2ViQ29udGV4dE1lbnVJdGVtR3RrKTogQWRk
IGNvbnN0cnVjdG9yIHRoYXQgcmVjZWl2ZXMgYSBHQWN0aW9uLgorICAgICAgICAoV2ViS2l0Ojpp
c0dBY3Rpb25DaGVja2VkKTogSGVscGVyIHRvIGNoZWNrIGlmIGEgc3RhdGVmdWwgR0FjdGlvbiBp
cyBjaGVja2VkIG9yIG5vdC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtR3Rr
OjpjcmVhdGVBY3Rpb25JZk5lZWRlZCk6IFdoZW4gY3JlYXRpbmcgYSBHQWN0aW9uIGZyb20gYSBH
dGtBdGlvbiwgdXNlIHRoZQorICAgICAgICBHdGtBY3Rpb24gbmFtZSBpbnN0ZWFkIG9mIGFkZGlu
ZyBhIG5ldyBvbmUuIERvIG5vdCBjcmVhdGUgdGhlIEdBY3Rpb24gaWYgd2UgYWxyZWFkeSBoYXZl
IG9uZS4KKyAgICAgICAgKiBTaGFyZWQvZ3RrL1dlYkNvbnRleHRNZW51SXRlbUd0ay5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1HdGs6OmdBY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1HdGs6OmdBY3Rpb25UYXJnZXQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHA6CisgICAgICAgICh3
ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fZ2FjdGlvbik6CisgICAgICAgICh3ZWJr
aXRfY29udGV4dF9tZW51X2l0ZW1fZ2V0X2dhY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0OiBBZGQgbmV3IHN5bWJvbHMuCisg
ICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Y29udGV4dE1lbnVJdGVtQWN0aXZhdGVkQ2FsbGJhY2spOiBVcGRhdGUgdGhl
IHN0YXRlIG9mIHRoZSBpbnRlcm5hbCBHQWN0aW9uIGluIGNhc2Ugb2YgdG9nZ2xlIG1lbnUgaXRl
bXMuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlHdGs6OmFwcGVuZCk6IFBh
c3MgdGhlIEdBY3Rpb24gdGFyZ2V0IHRvIGdfbWVudV9pdGVtX3NldF9hY3Rpb25fYW5kX3Rhcmdl
dF92YWx1ZS4gRG8KKyAgICAgICAgbm90IGNvbm5lY3QgdG8gYWN0aXZhdGUgc2lnbmFsIG9mIGFj
dGlvbnMgcHJvdmlkZWQgYnkgdGhlIHVzZXIuCisKKzIwMTctMDUtMTkgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCiAgICAgICAgIEFkZCBtb3JlIGlucHV0IHZh
bGlkYXRpb24gaW4gQ29ubmVjdGlvbjo6cmVhZEJ5dGVzRnJvbVNvY2tldCgpCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE4NzEKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJDb250ZXh0TWVudUl0ZW1HdGsuY3BwIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJDb250ZXh0TWVudUl0ZW1HdGsuY3BwCmluZGV4
IGE5MzU1Mjk5MTIxLi5hNjEwMDUwNTQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL2d0ay9XZWJDb250ZXh0TWVudUl0ZW1HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9ndGsvV2ViQ29udGV4dE1lbnVJdGVtR3RrLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIFdl
YkNvbnRleHRNZW51SXRlbUd0azo6V2ViQ29udGV4dE1lbnVJdGVtR3RrKGNvbnN0IFdlYkNvbnRl
eHRNZW51SXRlbURhdGEmIGRhdGEpCiBXZWJDb250ZXh0TWVudUl0ZW1HdGs6OldlYkNvbnRleHRN
ZW51SXRlbUd0ayhjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1HdGsmIGRhdGEsIFZlY3RvcjxXZWJD
b250ZXh0TWVudUl0ZW1HdGs+JiYgc3VibWVudSkKICAgICA6IFdlYkNvbnRleHRNZW51SXRlbURh
dGEoQWN0aW9uVHlwZSwgZGF0YS5hY3Rpb24oKSwgZGF0YS50aXRsZSgpLCBkYXRhLmVuYWJsZWQo
KSwgZmFsc2UpCiB7Ci0gICAgbV9nQWN0aW9uID0gR19TSU1QTEVfQUNUSU9OKGRhdGEuZ0FjdGlv
bigpKTsKKyAgICBtX2dBY3Rpb24gPSBkYXRhLmdBY3Rpb24oKTsKICAgICBtX2d0a0FjdGlvbiA9
IGRhdGEuZ3RrQWN0aW9uKCk7CiAgICAgbV9zdWJtZW51SXRlbXMgPSBXVEZNb3ZlKHN1Ym1lbnUp
OwogfQpAQCAtMTQ3LDYgKzE0NywyNCBAQCBXZWJDb250ZXh0TWVudUl0ZW1HdGs6OldlYkNvbnRl
eHRNZW51SXRlbUd0ayhHdGtBY3Rpb24qIGFjdGlvbikKICAgICBnX29iamVjdF9zZXRfZGF0YV9m
dWxsKEdfT0JKRUNUKG1fZ0FjdGlvbi5nZXQoKSksICJ3ZWJraXQtZ3RrLWFjdGlvbiIsIGdfb2Jq
ZWN0X3JlZihtX2d0a0FjdGlvbiksIGdfb2JqZWN0X3VucmVmKTsKIH0KIAorc3RhdGljIGJvb2wg
aXNHQWN0aW9uQ2hlY2tlZChHQWN0aW9uKiBhY3Rpb24pCit7CisgICAgaWYgKCFnX2FjdGlvbl9n
ZXRfc3RhdGVfdHlwZShhY3Rpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBBU1NF
UlQoZ192YXJpYW50X3R5cGVfZXF1YWwoZ19hY3Rpb25fZ2V0X3N0YXRlX3R5cGUoYWN0aW9uKSwg
R19WQVJJQU5UX1RZUEVfQk9PTEVBTikpOworICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHN0YXRlID0g
YWRvcHRHUmVmKGdfYWN0aW9uX2dldF9zdGF0ZShhY3Rpb24pKTsKKyAgICByZXR1cm4gZ192YXJp
YW50X2dldF9ib29sZWFuKHN0YXRlLmdldCgpKTsKK30KKworV2ViQ29udGV4dE1lbnVJdGVtR3Rr
OjpXZWJDb250ZXh0TWVudUl0ZW1HdGsoR0FjdGlvbiogYWN0aW9uLCBjb25zdCBTdHJpbmcmIHRp
dGxlLCBHVmFyaWFudCogdGFyZ2V0KQorICAgIDogV2ViQ29udGV4dE1lbnVJdGVtRGF0YShnX2Fj
dGlvbl9nZXRfc3RhdGVfdHlwZShhY3Rpb24pID8gQ2hlY2thYmxlQWN0aW9uVHlwZSA6IEFjdGlv
blR5cGUsIENvbnRleHRNZW51SXRlbUJhc2VBcHBsaWNhdGlvblRhZywgdGl0bGUsIGdfYWN0aW9u
X2dldF9lbmFibGVkKGFjdGlvbiksIGlzR0FjdGlvbkNoZWNrZWQoYWN0aW9uKSkKKyAgICAsIG1f
Z0FjdGlvbihhY3Rpb24pCisgICAgLCBtX2dBY3Rpb25UYXJnZXQodGFyZ2V0KQoreworICAgIGNy
ZWF0ZUFjdGlvbklmTmVlZGVkKCk7Cit9CisKIFdlYkNvbnRleHRNZW51SXRlbUd0azo6fldlYkNv
bnRleHRNZW51SXRlbUd0aygpCiB7CiB9CkBAIC0xNTcsMjAgKzE3NSwyNiBAQCB2b2lkIFdlYkNv
bnRleHRNZW51SXRlbUd0azo6Y3JlYXRlQWN0aW9uSWZOZWVkZWQoKQogICAgICAgICByZXR1cm47
CiAKICAgICBzdGF0aWMgdWludDY0X3QgYWN0aW9uSUQgPSAwOwotICAgIEdVbmlxdWVQdHI8Y2hh
cj4gYWN0aW9uTmFtZShnX3N0cmR1cF9wcmludGYoImFjdGlvbi0lIiBQUkl1NjQsICsrYWN0aW9u
SUQpKTsKLSAgICBpZiAodHlwZSgpID09IENoZWNrYWJsZUFjdGlvblR5cGUpCi0gICAgICAgIG1f
Z0FjdGlvbiA9IGFkb3B0R1JlZihnX3NpbXBsZV9hY3Rpb25fbmV3X3N0YXRlZnVsKGFjdGlvbk5h
bWUuZ2V0KCksIG51bGxwdHIsIGdfdmFyaWFudF9uZXdfYm9vbGVhbihjaGVja2VkKCkpKSk7Ci0g
ICAgZWxzZQotICAgICAgICBtX2dBY3Rpb24gPSBhZG9wdEdSZWYoZ19zaW1wbGVfYWN0aW9uX25l
dyhhY3Rpb25OYW1lLmdldCgpLCBudWxscHRyKSk7Ci0gICAgZ19zaW1wbGVfYWN0aW9uX3NldF9l
bmFibGVkKG1fZ0FjdGlvbi5nZXQoKSwgZW5hYmxlZCgpKTsKKyAgICBpZiAoIW1fZ0FjdGlvbikg
eworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGFjdGlvbk5hbWU7CisgICAgICAgIGlmIChtX2d0
a0FjdGlvbikKKyAgICAgICAgICAgIGFjdGlvbk5hbWUucmVzZXQoZ19zdHJkdXAoZ3RrX2FjdGlv
bl9nZXRfbmFtZShtX2d0a0FjdGlvbikpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYWN0
aW9uTmFtZS5yZXNldChnX3N0cmR1cF9wcmludGYoImFjdGlvbi0lIiBQUkl1NjQsICsrYWN0aW9u
SUQpKTsKKyAgICAgICAgaWYgKHR5cGUoKSA9PSBDaGVja2FibGVBY3Rpb25UeXBlKQorICAgICAg
ICAgICAgbV9nQWN0aW9uID0gYWRvcHRHUmVmKEdfQUNUSU9OKGdfc2ltcGxlX2FjdGlvbl9uZXdf
c3RhdGVmdWwoYWN0aW9uTmFtZS5nZXQoKSwgbnVsbHB0ciwgZ192YXJpYW50X25ld19ib29sZWFu
KGNoZWNrZWQoKSkpKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fZ0FjdGlvbiA9IGFk
b3B0R1JlZihHX0FDVElPTihnX3NpbXBsZV9hY3Rpb25fbmV3KGFjdGlvbk5hbWUuZ2V0KCksIG51
bGxwdHIpKSk7CisgICAgICAgIGdfc2ltcGxlX2FjdGlvbl9zZXRfZW5hYmxlZChHX1NJTVBMRV9B
Q1RJT04obV9nQWN0aW9uLmdldCgpKSwgZW5hYmxlZCgpKTsKKyAgICB9CiAKICAgICAvLyBDcmVh
dGUgdGhlIEd0a0FjdGlvbiBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgb25seS4KICAgICBp
ZiAoIW1fZ3RrQWN0aW9uKSB7CiAgICAgICAgIGlmICh0eXBlKCkgPT0gQ2hlY2thYmxlQWN0aW9u
VHlwZSkgewotICAgICAgICAgICAgbV9ndGtBY3Rpb24gPSBHVEtfQUNUSU9OKGd0a190b2dnbGVf
YWN0aW9uX25ldyhhY3Rpb25OYW1lLmdldCgpLCB0aXRsZSgpLnV0ZjgoKS5kYXRhKCksIG51bGxw
dHIsIGd0a1N0b2NrSURGcm9tQ29udGV4dE1lbnVBY3Rpb24oYWN0aW9uKCkpKSk7CisgICAgICAg
ICAgICBtX2d0a0FjdGlvbiA9IEdUS19BQ1RJT04oZ3RrX3RvZ2dsZV9hY3Rpb25fbmV3KGdfYWN0
aW9uX2dldF9uYW1lKG1fZ0FjdGlvbi5nZXQoKSksIHRpdGxlKCkudXRmOCgpLmRhdGEoKSwgbnVs
bHB0ciwgZ3RrU3RvY2tJREZyb21Db250ZXh0TWVudUFjdGlvbihhY3Rpb24oKSkpKTsKICAgICAg
ICAgICAgIGd0a190b2dnbGVfYWN0aW9uX3NldF9hY3RpdmUoR1RLX1RPR0dMRV9BQ1RJT04obV9n
dGtBY3Rpb24pLCBjaGVja2VkKCkpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fZ3Rr
QWN0aW9uID0gZ3RrX2FjdGlvbl9uZXcoYWN0aW9uTmFtZS5nZXQoKSwgdGl0bGUoKS51dGY4KCku
ZGF0YSgpLCAwLCBndGtTdG9ja0lERnJvbUNvbnRleHRNZW51QWN0aW9uKGFjdGlvbigpKSk7Cisg
ICAgICAgICAgICBtX2d0a0FjdGlvbiA9IGd0a19hY3Rpb25fbmV3KGdfYWN0aW9uX2dldF9uYW1l
KG1fZ0FjdGlvbi5nZXQoKSksIHRpdGxlKCkudXRmOCgpLmRhdGEoKSwgMCwgZ3RrU3RvY2tJREZy
b21Db250ZXh0TWVudUFjdGlvbihhY3Rpb24oKSkpOwogICAgICAgICBndGtfYWN0aW9uX3NldF9z
ZW5zaXRpdmUobV9ndGtBY3Rpb24sIGVuYWJsZWQoKSk7CiAgICAgICAgIGdfb2JqZWN0X3NldF9k
YXRhX2Z1bGwoR19PQkpFQ1QobV9nQWN0aW9uLmdldCgpKSwgIndlYmtpdC1ndGstYWN0aW9uIiwg
bV9ndGtBY3Rpb24sIGdfb2JqZWN0X3VucmVmKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkNvbnRleHRNZW51SXRlbUd0ay5oIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL2d0ay9XZWJDb250ZXh0TWVudUl0ZW1HdGsuaAppbmRleCAxZGY4YjA4YzY1OC4u
ODZiNWU2NzQ1MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViQ29u
dGV4dE1lbnVJdGVtR3RrLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJDb250
ZXh0TWVudUl0ZW1HdGsuaApAQCAtMzIsNyArMzIsNiBAQAogCiB0eXBlZGVmIHN0cnVjdCBfR3Rr
QWN0aW9uIEd0a0FjdGlvbjsKIHR5cGVkZWYgc3RydWN0IF9HQWN0aW9uIEdBY3Rpb247Ci10eXBl
ZGVmIHN0cnVjdCBfR1NpbXBsZUFjdGlvbiBHU2ltcGxlQWN0aW9uOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIApAQCAtNDMsMTggKzQyLDIxIEBAIHB1YmxpYzoKICAgICBXZWJDb250ZXh0TWVudUl0
ZW1HdGsoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYpOwogICAgIFdlYkNvbnRleHRNZW51
SXRlbUd0ayhjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1HdGsmLCBWZWN0b3I8V2ViQ29udGV4dE1l
bnVJdGVtR3RrPiYmIHN1Ym1lbnUpOwogICAgIFdlYkNvbnRleHRNZW51SXRlbUd0ayhHdGtBY3Rp
b24qKTsKKyAgICBXZWJDb250ZXh0TWVudUl0ZW1HdGsoR0FjdGlvbiosIGNvbnN0IFN0cmluZyYg
dGl0bGUsIEdWYXJpYW50KiB0YXJnZXQgPSBudWxscHRyKTsKICAgICB+V2ViQ29udGV4dE1lbnVJ
dGVtR3RrKCk7CiAKICAgICAvLyBXZSBkb24ndCB1c2UgdGhlIFN1Ym1lbnVUeXBlIGludGVybmFs
bHksIHNvIGNoZWNrIGlmIHdlIGhhdmUgc3VibWVudSBpdGVtcy4KICAgICBXZWJDb3JlOjpDb250
ZXh0TWVudUl0ZW1UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3N1Ym1lbnVJdGVtcy5pc0Vt
cHR5KCkgPyBXZWJDb250ZXh0TWVudUl0ZW1EYXRhOjp0eXBlKCkgOiBXZWJDb3JlOjpTdWJtZW51
VHlwZTsgfQogICAgIEd0a0FjdGlvbiogZ3RrQWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ndGtB
Y3Rpb247IH0KLSAgICBHQWN0aW9uKiBnQWN0aW9uKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxHQWN0aW9uKj4obV9nQWN0aW9uLmdldCgpKTsgfQorICAgIEdBY3Rpb24qIGdBY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2dBY3Rpb24uZ2V0KCk7IH0KKyAgICBHVmFyaWFudCogZ0Fj
dGlvblRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fZ0FjdGlvblRhcmdldC5nZXQoKTsgfQogICAg
IGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1HdGs+JiBzdWJtZW51SXRlbXMoKSBjb25z
dCB7IHJldHVybiBtX3N1Ym1lbnVJdGVtczsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRl
QWN0aW9uSWZOZWVkZWQoKTsKIAotICAgIEdSZWZQdHI8R1NpbXBsZUFjdGlvbj4gbV9nQWN0aW9u
OworICAgIEdSZWZQdHI8R0FjdGlvbj4gbV9nQWN0aW9uOworICAgIEdSZWZQdHI8R1ZhcmlhbnQ+
IG1fZ0FjdGlvblRhcmdldDsKICAgICBHdGtBY3Rpb24qIG1fZ3RrQWN0aW9uIHsgbnVsbHB0ciB9
OwogICAgIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1HdGs+IG1fc3VibWVudUl0ZW1zOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRl
eHRNZW51SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRD
b250ZXh0TWVudUl0ZW0uY3BwCmluZGV4IDIwOTA4NjcxNjI2Li4yMGY3NGI5MmEzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVJ
dGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250
ZXh0TWVudUl0ZW0uY3BwCkBAIC0xNDMsNiArMTQzLDMxIEBAIFdlYktpdENvbnRleHRNZW51SXRl
bSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ldyhHdGtBY3Rpb24qIGFjdGlvbikKIH0KIAog
LyoqCisgKiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fZ2FjdGlvbjoKKyAqIEBh
Y3Rpb246IGEgI0dBY3Rpb24KKyAqIEBsYWJlbDogdGhlIG1lbnUgaXRlbSBsYWJlbCB0ZXh0Cisg
KiBAdGFyZ2V0OiAoYWxsb3ctbm9uZSk6IGEgI0dWYXJpYW50IHRvIHVzZSBhcyB0aGUgYWN0aW9u
IHRhcmdldAorICoKKyAqIENyZWF0ZXMgYSBuZXcgI1dlYktpdENvbnRleHRNZW51SXRlbSBmb3Ig
dGhlIGdpdmVuIEBhY3Rpb24gYW5kIEBsYWJlbC4KKyAqCisgKiBSZXR1cm5zOiB0aGUgbmV3bHkg
Y3JlYXRlZCAjV2ViS2l0Q29udGV4dE1lbnVJdGVtIG9iamVjdC4KKyAqCisgKiBTaW5jZTogMi4x
OAorICovCitXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9u
ZXdfZnJvbV9nYWN0aW9uKEdBY3Rpb24qIGFjdGlvbiwgY29uc3QgZ2NoYXIqIGxhYmVsLCBHVmFy
aWFudCogdGFyZ2V0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEdfSVNfQUNUSU9OKGFj
dGlvbiksIG51bGxwdHIpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCFnX2FjdGlvbl9nZXRf
c3RhdGVfdHlwZShhY3Rpb24pIHx8IGdfdmFyaWFudF90eXBlX2VxdWFsKGdfYWN0aW9uX2dldF9z
dGF0ZV90eXBlKGFjdGlvbiksIEdfVkFSSUFOVF9UWVBFX0JPT0xFQU4pLCBudWxscHRyKTsKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChsYWJlbCwgbnVsbHB0cik7CisgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoIXRhcmdldCB8fCBnX3ZhcmlhbnRfaXNfb2ZfdHlwZSh0YXJnZXQsIGdfYWN0aW9u
X2dldF9wYXJhbWV0ZXJfdHlwZShhY3Rpb24pKSwgbnVsbHB0cik7CisKKyAgICBXZWJLaXRDb250
ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3
KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBudWxscHRyKSk7CisgICAgaXRlbS0+cHJp
di0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUd0az4oYWN0
aW9uLCBTdHJpbmc6OmZyb21VVEY4KGxhYmVsKSwgdGFyZ2V0KTsKKworICAgIHJldHVybiBpdGVt
OworfQorCisvKioKICAqIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9zdG9ja19h
Y3Rpb246CiAgKiBAYWN0aW9uOiBhICNXZWJLaXRDb250ZXh0TWVudUFjdGlvbiBzdG9jayBhY3Rp
b24KICAqCkBAIC0yMzUsNyArMjYwLDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRf
Y29udGV4dF9tZW51X2l0ZW1fbmV3X3NlcGFyYXRvcih2b2lkKQogICogd2Via2l0X2NvbnRleHRf
bWVudV9pdGVtX2dldF9hY3Rpb246CiAgKiBAaXRlbTogYSAjV2ViS2l0Q29udGV4dE1lbnVJdGVt
CiAgKgotICogR2V0cyB0aGUgYWN0aW9uIGFzc29jaWF0ZWQgdG8gQGl0ZW0uCisgKiBHZXRzIHRo
ZSBhY3Rpb24gYXNzb2NpYXRlZCB0byBAaXRlbSBhcyBhICNHdGtBY3Rpb24uCiAgKgogICogUmV0
dXJuczogKHRyYW5zZmVyIG5vbmUpOiB0aGUgI0d0a0FjdGlvbiBhc3NvY2lhdGVkIHRvIHRoZSAj
V2ViS2l0Q29udGV4dE1lbnVJdGVtLAogICogICAgb3IgJU5VTEwgaWYgQGl0ZW0gaXMgYSBzZXBh
cmF0b3IuCkBAIC0yNDgsNiArMjczLDI0IEBAIEd0a0FjdGlvbiogd2Via2l0X2NvbnRleHRfbWVu
dV9pdGVtX2dldF9hY3Rpb24oV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtKQogfQogCiAvKioK
KyAqIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9nZXRfZ2FjdGlvbjoKKyAqIEBpdGVtOiBhICNX
ZWJLaXRDb250ZXh0TWVudUl0ZW0KKyAqCisgKiBHZXRzIHRoZSBhY3Rpb24gYXNzb2NpYXRlZCB0
byBAaXRlbSBhcyBhICNHQWN0aW9uLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTog
dGhlICNHQWN0aW9uIGFzc29jaWF0ZWQgdG8gdGhlICNXZWJLaXRDb250ZXh0TWVudUl0ZW0sCisg
KiAgICBvciAlTlVMTCBpZiBAaXRlbSBpcyBhIHNlcGFyYXRvci4KKyAqCisgKiBTaW5jZTogMi4x
OAorICovCitHQWN0aW9uKiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fZ2V0X2dhY3Rpb24oV2Vi
S2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9JU19DT05URVhUX01FTlVfSVRFTShpdGVtKSwgbnVsbHB0cik7CisKKyAgICByZXR1cm4g
aXRlbS0+cHJpdi0+bWVudUl0ZW0tPmdBY3Rpb24oKTsKK30KKworLyoqCiAgKiB3ZWJraXRfY29u
dGV4dF9tZW51X2l0ZW1fZ2V0X3N0b2NrX2FjdGlvbjoKICAqIEBpdGVtOiBhICNXZWJLaXRDb250
ZXh0TWVudUl0ZW0KICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRDb250ZXh0TWVudUl0ZW0uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5oCmluZGV4IDMzZTMxMjQxYTAzLi4xMWMwY2Zh
MjlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q29udGV4dE1lbnVJdGVtLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q29udGV4dE1lbnVJdGVtLmgKQEAgLTY0LDYgKzY0LDExIEBAIFdFQktJVF9BUEkgV2Vi
S2l0Q29udGV4dE1lbnVJdGVtICoKIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXcgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoR3RrQWN0aW9uICAgICAgICAgICAgICAqYWN0aW9uKTsK
IAogV0VCS0lUX0FQSSBXZWJLaXRDb250ZXh0TWVudUl0ZW0gKgord2Via2l0X2NvbnRleHRfbWVu
dV9pdGVtX25ld19mcm9tX2dhY3Rpb24gICAgICAgICAgICAgICAgIChHQWN0aW9uICAgICAgICAg
ICAgICAgICphY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgKmxhYmVsLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVmFy
aWFudCAgICAgICAgICAgICAgICp0YXJnZXQpOworCitXRUJLSVRfQVBJIFdlYktpdENvbnRleHRN
ZW51SXRlbSAqCiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fc3RvY2tfYWN0aW9u
ICAgICAgICAgICAgKFdlYktpdENvbnRleHRNZW51QWN0aW9uIGFjdGlvbik7CiAKIFdFQktJVF9B
UEkgV2ViS2l0Q29udGV4dE1lbnVJdGVtICoKQEAgLTgwLDYgKzg1LDkgQEAgd2Via2l0X2NvbnRl
eHRfbWVudV9pdGVtX25ld19zZXBhcmF0b3IgICAgICAgICAgICAgICAgICAgICh2b2lkKTsKIFdF
QktJVF9BUEkgR3RrQWN0aW9uICoKIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9nZXRfYWN0aW9u
ICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0Q29udGV4dE1lbnVJdGVtICAqaXRlbSk7CiAK
K1dFQktJVF9BUEkgR0FjdGlvbiAqCit3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fZ2V0X2dhY3Rp
b24gICAgICAgICAgICAgICAgICAgICAgKFdlYktpdENvbnRleHRNZW51SXRlbSAgKml0ZW0pOwor
CiBXRUJLSVRfQVBJIFdlYktpdENvbnRleHRNZW51QWN0aW9uCiB3ZWJraXRfY29udGV4dF9tZW51
X2l0ZW1fZ2V0X3N0b2NrX2FjdGlvbiAgICAgICAgICAgICAgICAgKFdlYktpdENvbnRleHRNZW51
SXRlbSAgKml0ZW0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IDhi
YmE0Y2M4MmMxLi4yYTJlMmI1ZDQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50
eHQKQEAgLTExNDksMTEgKzExNDksMTMgQEAgd2Via2l0X2NvbnRleHRfbWVudV9nZXRfdHlwZQog
V2ViS2l0Q29udGV4dE1lbnVJdGVtCiBXZWJLaXRDb250ZXh0TWVudUFjdGlvbgogd2Via2l0X2Nv
bnRleHRfbWVudV9pdGVtX25ldword2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX2dh
Y3Rpb24KIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9zdG9ja19hY3Rpb24KIHdl
YmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9zdG9ja19hY3Rpb25fd2l0aF9sYWJlbAog
d2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld193aXRoX3N1Ym1lbnUKIHdlYmtpdF9jb250ZXh0
X21lbnVfaXRlbV9uZXdfc2VwYXJhdG9yCiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fZ2V0X2Fj
dGlvbgord2Via2l0X2NvbnRleHRfbWVudV9pdGVtX2dldF9nYWN0aW9uCiB3ZWJraXRfY29udGV4
dF9tZW51X2l0ZW1fZ2V0X3N0b2NrX2FjdGlvbgogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX2lz
X3NlcGFyYXRvcgogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX3NldF9zdWJtZW51CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3Rr
LmNwcAppbmRleCA0MTY3ZTVjNjFiZC4uMDYzOThiYTllYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmNwcApAQCAt
NTcsNiArNTcsOCBAQCBzdGF0aWMgdm9pZCBjb250ZXh0TWVudUl0ZW1BY3RpdmF0ZWRDYWxsYmFj
ayhHQWN0aW9uKiBhY3Rpb24sIEdWYXJpYW50KiwgV2ViUGFnZQogICAgICAgICBzdGF0aWNfY2Fz
dDxDb250ZXh0TWVudUFjdGlvbj4oR1BPSU5URVJfVE9fSU5UKGdfb2JqZWN0X2dldF9kYXRhKEdf
T0JKRUNUKGFjdGlvbiksIGdDb250ZXh0TWVudUFjdGlvbklkKSkpLAogICAgICAgICBTdHJpbmc6
OmZyb21VVEY4KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihnX29iamVjdF9nZXRfZGF0YShHX09C
SkVDVChhY3Rpb24pLCBnQ29udGV4dE1lbnVUaXRsZSkpKSwgZ19hY3Rpb25fZ2V0X2VuYWJsZWQo
YWN0aW9uKSwKICAgICAgICAgc3RhdGUgPyBnX3ZhcmlhbnRfZ2V0X2Jvb2xlYW4oc3RhdGUuZ2V0
KCkpIDogZmFsc2UpOworICAgIGlmIChpc1RvZ2dsZSkKKyAgICAgICAgZ19hY3Rpb25fY2hhbmdl
X3N0YXRlKGFjdGlvbiwgZ192YXJpYW50X25ld19ib29sZWFuKCFnX3ZhcmlhbnRfZ2V0X2Jvb2xl
YW4oc3RhdGUuZ2V0KCkpKSk7CiAgICAgcGFnZS0+Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaXRl
bSk7CiB9CiAKQEAgLTc3LDEyICs3OSwxNCBAQCB2b2lkIFdlYkNvbnRleHRNZW51UHJveHlHdGs6
OmFwcGVuZChHTWVudSogbWVudSwgY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtR3RrJiBtZQogICAg
IGNhc2UgQ2hlY2thYmxlQWN0aW9uVHlwZTogewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGFj
dGlvbk5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlcy4lcyIsIGdDb250ZXh0TWVudUl0ZW1Hcm91cCwg
Z19hY3Rpb25fZ2V0X25hbWUoYWN0aW9uKSkpOwogICAgICAgICBnTWVudUl0ZW0gPSBhZG9wdEdS
ZWYoZ19tZW51X2l0ZW1fbmV3KG1lbnVJdGVtLnRpdGxlKCkudXRmOCgpLmRhdGEoKSwgbnVsbHB0
cikpOwotICAgICAgICBnX21lbnVfaXRlbV9zZXRfYWN0aW9uX2FuZF90YXJnZXRfdmFsdWUoZ01l
bnVJdGVtLmdldCgpLCBhY3Rpb25OYW1lLmdldCgpLCBudWxscHRyKTsKKyAgICAgICAgZ19tZW51
X2l0ZW1fc2V0X2FjdGlvbl9hbmRfdGFyZ2V0X3ZhbHVlKGdNZW51SXRlbS5nZXQoKSwgYWN0aW9u
TmFtZS5nZXQoKSwgbWVudUl0ZW0uZ0FjdGlvblRhcmdldCgpKTsKIAotICAgICAgICBnX29iamVj
dF9zZXRfZGF0YShHX09CSkVDVChhY3Rpb24pLCBnQ29udGV4dE1lbnVBY3Rpb25JZCwgR0lOVF9U
T19QT0lOVEVSKG1lbnVJdGVtLmFjdGlvbigpKSk7Ci0gICAgICAgIGdfb2JqZWN0X3NldF9kYXRh
X2Z1bGwoR19PQkpFQ1QoYWN0aW9uKSwgZ0NvbnRleHRNZW51VGl0bGUsIGdfc3RyZHVwKG1lbnVJ
dGVtLnRpdGxlKCkudXRmOCgpLmRhdGEoKSksIGdfZnJlZSk7Ci0gICAgICAgIHNpZ25hbEhhbmRs
ZXJJZCA9IGdfc2lnbmFsX2Nvbm5lY3QoYWN0aW9uLCAiYWN0aXZhdGUiLCBHX0NBTExCQUNLKGNv
bnRleHRNZW51SXRlbUFjdGl2YXRlZENhbGxiYWNrKSwgbV9wYWdlKTsKLSAgICAgICAgbV9zaWdu
YWxIYW5kbGVycy5zZXQoc2lnbmFsSGFuZGxlcklkLCBhY3Rpb24pOworICAgICAgICBpZiAobWVu
dUl0ZW0uYWN0aW9uKCkgPCBDb250ZXh0TWVudUl0ZW1CYXNlQXBwbGljYXRpb25UYWcpIHsKKyAg
ICAgICAgICAgIGdfb2JqZWN0X3NldF9kYXRhKEdfT0JKRUNUKGFjdGlvbiksIGdDb250ZXh0TWVu
dUFjdGlvbklkLCBHSU5UX1RPX1BPSU5URVIobWVudUl0ZW0uYWN0aW9uKCkpKTsKKyAgICAgICAg
ICAgIGdfb2JqZWN0X3NldF9kYXRhX2Z1bGwoR19PQkpFQ1QoYWN0aW9uKSwgZ0NvbnRleHRNZW51
VGl0bGUsIGdfc3RyZHVwKG1lbnVJdGVtLnRpdGxlKCkudXRmOCgpLmRhdGEoKSksIGdfZnJlZSk7
CisgICAgICAgICAgICBzaWduYWxIYW5kbGVySWQgPSBnX3NpZ25hbF9jb25uZWN0KGFjdGlvbiwg
ImFjdGl2YXRlIiwgR19DQUxMQkFDSyhjb250ZXh0TWVudUl0ZW1BY3RpdmF0ZWRDYWxsYmFjayks
IG1fcGFnZSk7CisgICAgICAgICAgICBtX3NpZ25hbEhhbmRsZXJzLnNldChzaWduYWxIYW5kbGVy
SWQsIGFjdGlvbik7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ug
U3VibWVudVR5cGU6IHsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCAxYjBjM2RhMTQ2MS4uZGUyZDgyYTc4MzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0wNS0x
OSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAg
W0dUS10gQWRkIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9nYWN0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2MzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY29udGV4
dCBtZW51IHRlc3RzIHRvIGNoZWNrIHRoZSBuZXcgR0FjdGlvbiBBUEkuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdENvbnRleHRNZW51LmNwcDoKKyAgICAg
ICAgKHRlc3RDb250ZXh0TWVudVBvcHVsYXRlTWVudSk6CisKIDIwMTctMDUtMTggIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjIxNjY5NCAt
IDIxNjcxMik6IFBlcmZvcm1hbmNlIHRlc3QgU3BlZWRvbWV0ZXIvRnVsbC5odG1sIGlzIGZhaWxp
bmcKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0
Q29udGV4dE1lbnUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rl
c3RDb250ZXh0TWVudS5jcHAKaW5kZXggM2Q3YWIwMGNjMzcuLjhlZjI5MzljZGM1IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdENvbnRleHRNZW51
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdENvbnRl
eHRNZW51LmNwcApAQCAtMTU3LDYgKzE1NywxNyBAQCBwdWJsaWM6CiAgICAgICAgIEd0a0FjdGlv
biogYWN0aW9uID0gd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX2dldF9hY3Rpb24oaXRlbSk7CiAg
ICAgICAgIGdfYXNzZXJ0KEdUS19JU19BQ1RJT04oYWN0aW9uKSk7CiAKKyAgICAgICAgR0FjdGlv
biogZ0FjdGlvbiA9IHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9nZXRfZ2FjdGlvbihpdGVtKTsK
KyAgICAgICAgZ19hc3NlcnQoR19JU19BQ1RJT04oZ0FjdGlvbikpOworICAgICAgICBnX2Fzc2Vy
dF9jbXBzdHIoZ3RrX2FjdGlvbl9nZXRfbmFtZShhY3Rpb24pLCA9PSwgZ19hY3Rpb25fZ2V0X25h
bWUoZ0FjdGlvbikpOworICAgICAgICBnX2Fzc2VydChndGtfYWN0aW9uX2dldF9zZW5zaXRpdmUo
YWN0aW9uKSA9PSBnX2FjdGlvbl9nZXRfZW5hYmxlZChnQWN0aW9uKSk7CisgICAgICAgIGlmIChH
VEtfSVNfVE9HR0xFX0FDVElPTihhY3Rpb24pKSB7CisgICAgICAgICAgICBnX2Fzc2VydChnX3Zh
cmlhbnRfdHlwZV9lcXVhbChnX2FjdGlvbl9nZXRfc3RhdGVfdHlwZShnQWN0aW9uKSwgR19WQVJJ
QU5UX1RZUEVfQk9PTEVBTikpOworICAgICAgICAgICAgR1JlZlB0cjxHVmFyaWFudD4gc3RhdGUg
PSBhZG9wdEdSZWYoZ19hY3Rpb25fZ2V0X3N0YXRlKGdBY3Rpb24pKTsKKyAgICAgICAgICAgIGdf
YXNzZXJ0KGd0a190b2dnbGVfYWN0aW9uX2dldF9hY3RpdmUoR1RLX1RPR0dMRV9BQ1RJT04oYWN0
aW9uKSkgPT0gZ192YXJpYW50X2dldF9ib29sZWFuKHN0YXRlLmdldCgpKSk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgZ19hc3NlcnQoIWdfYWN0aW9uX2dldF9zdGF0ZV90eXBlKGdBY3Rp
b24pKTsKKwogICAgICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X2NvbnRleHRfbWVudV9pdGVt
X2dldF9zdG9ja19hY3Rpb24oaXRlbSksID09LCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9D
VVNUT00pOwogICAgICAgICBnX2Fzc2VydF9jbXBzdHIoZ3RrX2FjdGlvbl9nZXRfbGFiZWwoYWN0
aW9uKSwgPT0sIGxhYmVsKTsKIApAQCAtNDk5LDE3ICs1MTAsMTMgQEAgY2xhc3MgQ29udGV4dE1l
bnVDdXN0b21UZXN0OiBwdWJsaWMgQ29udGV4dE1lbnVUZXN0IHsKIHB1YmxpYzoKICAgICBNQUtF
X0dMSUJfVEVTVF9GSVhUVVJFKENvbnRleHRNZW51Q3VzdG9tVGVzdCk7CiAKLSAgICBDb250ZXh0
TWVudUN1c3RvbVRlc3QoKQotICAgICAgICA6IG1faXRlbVRvQWN0aXZhdGVMYWJlbCgwKQotICAg
ICAgICAsIG1fYWN0aXZhdGVkKGZhbHNlKQotICAgICAgICAsIG1fdG9nZ2xlZChmYWxzZSkKLSAg
ICB7Ci0gICAgfQotCiAgICAgYm9vbCBjb250ZXh0TWVudShXZWJLaXRDb250ZXh0TWVudSogY29u
dGV4dE1lbnUsIEdka0V2ZW50KiwgV2ViS2l0SGl0VGVzdFJlc3VsdCogaGl0VGVzdFJlc3VsdCkK
ICAgICB7CiAgICAgICAgIC8vIEFwcGVuZCBvdXIgY3VzdG9tIGl0ZW0gdG8gdGhlIGRlZmF1bHQg
bWVudS4KLSAgICAgICAgd2Via2l0X2NvbnRleHRfbWVudV9hcHBlbmQoY29udGV4dE1lbnUsIHdl
YmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXcobV9hY3Rpb24uZ2V0KCkpKTsKKyAgICAgICAgaWYg
KG1fYWN0aW9uKQorICAgICAgICAgICAgd2Via2l0X2NvbnRleHRfbWVudV9hcHBlbmQoY29udGV4
dE1lbnUsIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXcobV9hY3Rpb24uZ2V0KCkpKTsKKyAg
ICAgICAgZWxzZSBpZiAobV9nQWN0aW9uKQorICAgICAgICAgICAgd2Via2l0X2NvbnRleHRfbWVu
dV9hcHBlbmQoY29udGV4dE1lbnUsIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9n
YWN0aW9uKG1fZ0FjdGlvbi5nZXQoKSwgbV9nQWN0aW9uVGl0bGUuZGF0YSgpLCBtX2V4cGVjdGVk
VGFyZ2V0LmdldCgpKSk7CiAgICAgICAgIHF1aXRNYWluTG9vcCgpOwogCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTUzMyw3ICs1NDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIEd0a01lbnUqIG1l
bnUgPSBnZXRQb3B1cE1lbnUoKTsKICAgICAgICAgR3RrTWVudUl0ZW0qIGl0ZW0gPSBnZXRNZW51
SXRlbShtZW51LCBtX2l0ZW1Ub0FjdGl2YXRlTGFiZWwpOwogICAgICAgICBndGtfbWVudV9zaGVs
bF9hY3RpdmF0ZV9pdGVtKEdUS19NRU5VX1NIRUxMKG1lbnUpLCBHVEtfV0lER0VUKGl0ZW0pLCBU
UlVFKTsKLSAgICAgICAgbV9pdGVtVG9BY3RpdmF0ZUxhYmVsID0gMDsKKyAgICAgICAgbV9pdGVt
VG9BY3RpdmF0ZUxhYmVsID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBzdGF0aWMgZ2Jvb2xlYW4g
YWN0aXZhdGVNZW51SXRlbUlkbGVDYWxsYmFjayhncG9pbnRlciB1c2VyRGF0YSkKQEAgLTU1Niwx
MiArNTYzLDI0IEBAIHB1YmxpYzoKICAgICAgICAgYWN0aXZhdGVDdXN0b21NZW51SXRlbUFuZFdh
aXRVbnRpbEFjdGl2YXRlZChhY3Rpb25MYWJlbCk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQg
YWN0aW9uQWN0aXZhdGVkQ2FsbGJhY2soR3RrQWN0aW9uKiwgQ29udGV4dE1lbnVDdXN0b21UZXN0
KiB0ZXN0KQorICAgIHN0YXRpYyB2b2lkIGFjdGlvbkFjdGl2YXRlZENhbGxiYWNrKENvbnRleHRN
ZW51Q3VzdG9tVGVzdCogdGVzdCwgR1ZhcmlhbnQqIHRhcmdldCkKICAgICB7Ci0gICAgICAgIHRl
c3QtPm1fYWN0aXZhdGVkID0gdHJ1ZTsKKyAgICAgICAgaWYgKHRlc3QtPm1fZ0FjdGlvbikgewor
ICAgICAgICAgICAgaWYgKGdfYWN0aW9uX2dldF9zdGF0ZV90eXBlKHRlc3QtPm1fZ0FjdGlvbi5n
ZXQoKSkpIHsKKyAgICAgICAgICAgICAgICBHUmVmUHRyPEdWYXJpYW50PiBzdGF0ZSA9IGFkb3B0
R1JlZihnX2FjdGlvbl9nZXRfc3RhdGUodGVzdC0+bV9nQWN0aW9uLmdldCgpKSk7CisgICAgICAg
ICAgICAgICAgZ19hY3Rpb25fY2hhbmdlX3N0YXRlKHRlc3QtPm1fZ0FjdGlvbi5nZXQoKSwgZ192
YXJpYW50X25ld19ib29sZWFuKCFnX3ZhcmlhbnRfZ2V0X2Jvb2xlYW4oc3RhdGUuZ2V0KCkpKSk7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRlc3QtPm1fYWN0aXZhdGVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAodGVzdC0+bV9leHBlY3RlZFRhcmdldCkKKyAg
ICAgICAgICAgICAgICAgICAgZ19hc3NlcnQoZ192YXJpYW50X2VxdWFsKHRlc3QtPm1fZXhwZWN0
ZWRUYXJnZXQuZ2V0KCksIHRhcmdldCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgZ19hc3NlcnQoIXRhcmdldCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgdGVzdC0+bV9hY3RpdmF0ZWQgPSB0cnVlOwogICAgIH0KIAotICAg
IHN0YXRpYyB2b2lkIGFjdGlvblRvZ2dsZWRDYWxsYmFjayhHdGtBY3Rpb24qLCBDb250ZXh0TWVu
dUN1c3RvbVRlc3QqIHRlc3QpCisgICAgc3RhdGljIHZvaWQgYWN0aW9uVG9nZ2xlZENhbGxiYWNr
KENvbnRleHRNZW51Q3VzdG9tVGVzdCogdGVzdCkKICAgICB7CiAgICAgICAgIHRlc3QtPm1fdG9n
Z2xlZCA9IHRydWU7CiAgICAgfQpAQCAtNTY5LDE2ICs1ODgsMzIgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0QWN0aW9uKEd0a0FjdGlvbiogYWN0aW9uKQogICAgIHsKICAgICAgICAgbV9hY3Rpb24g
PSBhY3Rpb247CisgICAgICAgIG1fZ0FjdGlvbiA9IG51bGxwdHI7CisgICAgICAgIG1fZXhwZWN0
ZWRUYXJnZXQgPSBudWxscHRyOwogICAgICAgICBpZiAoR1RLX0lTX1RPR0dMRV9BQ1RJT04oYWN0
aW9uKSkKLSAgICAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QoYWN0aW9uLCAidG9nZ2xlZCIsIEdf
Q0FMTEJBQ0soYWN0aW9uVG9nZ2xlZENhbGxiYWNrKSwgdGhpcyk7CisgICAgICAgICAgICBnX3Np
Z25hbF9jb25uZWN0X3N3YXBwZWQoYWN0aW9uLCAidG9nZ2xlZCIsIEdfQ0FMTEJBQ0soYWN0aW9u
VG9nZ2xlZENhbGxiYWNrKSwgdGhpcyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGdfc2ln
bmFsX2Nvbm5lY3QoYWN0aW9uLCAiYWN0aXZhdGUiLCBHX0NBTExCQUNLKGFjdGlvbkFjdGl2YXRl
ZENhbGxiYWNrKSwgdGhpcyk7CisgICAgICAgICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQo
YWN0aW9uLCAiYWN0aXZhdGUiLCBHX0NBTExCQUNLKGFjdGlvbkFjdGl2YXRlZENhbGxiYWNrKSwg
dGhpcyk7CisgICAgfQorCisgICAgdm9pZCBzZXRBY3Rpb24oR0FjdGlvbiogYWN0aW9uLCBjb25z
dCBjaGFyKiB0aXRsZSwgR1ZhcmlhbnQqIHRhcmdldCA9IG51bGxwdHIpCisgICAgeworICAgICAg
ICBtX2dBY3Rpb24gPSBhY3Rpb247CisgICAgICAgIG1fZ0FjdGlvblRpdGxlID0gdGl0bGU7Cisg
ICAgICAgIG1fYWN0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgbV9leHBlY3RlZFRhcmdldCA9IHRh
cmdldDsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKGFjdGlvbiwgImFjdGl2YXRl
IiwgR19DQUxMQkFDSyhhY3Rpb25BY3RpdmF0ZWRDYWxsYmFjayksIHRoaXMpOworICAgICAgICBp
ZiAoZ19hY3Rpb25fZ2V0X3N0YXRlX3R5cGUoYWN0aW9uKSkKKyAgICAgICAgICAgIGdfc2lnbmFs
X2Nvbm5lY3Rfc3dhcHBlZChhY3Rpb24sICJjaGFuZ2Utc3RhdGUiLCBHX0NBTExCQUNLKGFjdGlv
blRvZ2dsZWRDYWxsYmFjayksIHRoaXMpOwogICAgIH0KIAogICAgIEdSZWZQdHI8R3RrQWN0aW9u
PiBtX2FjdGlvbjsKLSAgICBjb25zdCBjaGFyKiBtX2l0ZW1Ub0FjdGl2YXRlTGFiZWw7Ci0gICAg
Ym9vbCBtX2FjdGl2YXRlZDsKLSAgICBib29sIG1fdG9nZ2xlZDsKKyAgICBHUmVmUHRyPEdBY3Rp
b24+IG1fZ0FjdGlvbjsKKyAgICBDU3RyaW5nIG1fZ0FjdGlvblRpdGxlOworICAgIEdSZWZQdHI8
R1ZhcmlhbnQ+IG1fZXhwZWN0ZWRUYXJnZXQ7CisgICAgY29uc3QgY2hhciogbV9pdGVtVG9BY3Rp
dmF0ZUxhYmVsIHsgbnVsbHB0ciB9OworICAgIGJvb2wgbV9hY3RpdmF0ZWQgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV90b2dnbGVkIHsgZmFsc2UgfTsKIH07CiAKIHN0YXRpYyB2b2lkIHRlc3RDb250
ZXh0TWVudVBvcHVsYXRlTWVudShDb250ZXh0TWVudUN1c3RvbVRlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCkBAIC01ODksNyArNjI0LDcgQEAgc3RhdGljIHZvaWQgdGVzdENvbnRleHRNZW51UG9w
dWxhdGVNZW51KENvbnRleHRNZW51Q3VzdG9tVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnQKICAgICB0
ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKIAogICAgIC8vIENyZWF0ZSBhIGN1c3RvbSBt
ZW51IGl0ZW0uCi0gICAgR1JlZlB0cjxHdGtBY3Rpb24+IGFjdGlvbiA9IGFkb3B0R1JlZihndGtf
YWN0aW9uX25ldygiV2ViS2l0R1RLK0N1c3RvbUFjdGlvbiIsICJDdXN0b20gX0FjdGlvbiIsIDAs
IDApKTsKKyAgICBHUmVmUHRyPEd0a0FjdGlvbj4gYWN0aW9uID0gYWRvcHRHUmVmKGd0a19hY3Rp
b25fbmV3KCJXZWJLaXRHVEsrQ3VzdG9tQWN0aW9uIiwgIkN1c3RvbSBfQWN0aW9uIiwgbnVsbHB0
ciwgbnVsbHB0cikpOwogICAgIHRlc3QtPnNldEFjdGlvbihhY3Rpb24uZ2V0KCkpOwogICAgIHRl
c3QtPnNob3dDb250ZXh0TWVudUFuZFdhaXRVbnRpbEZpbmlzaGVkKCk7CiAgICAgdGVzdC0+YWN0
aXZhdGVDdXN0b21NZW51SXRlbUFuZFdhaXRVbnRpbEFjdGl2YXRlZChndGtfYWN0aW9uX2dldF9s
YWJlbChhY3Rpb24uZ2V0KCkpKTsKQEAgLTU5NywxMiArNjMyLDM1IEBAIHN0YXRpYyB2b2lkIHRl
c3RDb250ZXh0TWVudVBvcHVsYXRlTWVudShDb250ZXh0TWVudUN1c3RvbVRlc3QqIHRlc3QsIGdj
b25zdHBvaW50CiAgICAgZ19hc3NlcnQoIXRlc3QtPm1fdG9nZ2xlZCk7CiAKICAgICAvLyBDcmVh
dGUgYSBjdXN0b20gdG9nZ2xlIG1lbnUgaXRlbS4KLSAgICBHUmVmUHRyPEd0a0FjdGlvbj4gdG9n
Z2xlQWN0aW9uID0gYWRvcHRHUmVmKEdUS19BQ1RJT04oZ3RrX3RvZ2dsZV9hY3Rpb25fbmV3KCJX
ZWJLaXRHVEsrQ3VzdG9tVG9nZ2xlQWN0aW9uIiwgIkN1c3RvbSBfVG9nZ2xlIEFjdGlvbiIsIDAs
IDApKSk7CisgICAgR1JlZlB0cjxHdGtBY3Rpb24+IHRvZ2dsZUFjdGlvbiA9IGFkb3B0R1JlZihH
VEtfQUNUSU9OKGd0a190b2dnbGVfYWN0aW9uX25ldygiV2ViS2l0R1RLK0N1c3RvbVRvZ2dsZUFj
dGlvbiIsICJDdXN0b20gX1RvZ2dsZSBBY3Rpb24iLCBudWxscHRyLCBudWxscHRyKSkpOwogICAg
IHRlc3QtPnNldEFjdGlvbih0b2dnbGVBY3Rpb24uZ2V0KCkpOwogICAgIHRlc3QtPnNob3dDb250
ZXh0TWVudUFuZFdhaXRVbnRpbEZpbmlzaGVkKCk7CiAgICAgdGVzdC0+dG9nZ2xlQ3VzdG9tTWVu
dUl0ZW1BbmRXYWl0VW50aWxUb2dnbGVkKGd0a19hY3Rpb25fZ2V0X2xhYmVsKHRvZ2dsZUFjdGlv
bi5nZXQoKSkpOwogICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2FjdGl2YXRlZCk7CiAgICAgZ19hc3Nl
cnQodGVzdC0+bV90b2dnbGVkKTsKKworICAgIC8vIENyZWF0ZSBhIGN1c3RvbSBtZW51IGl0ZW0g
dXNpbmcgR0FjdGlvbi4KKyAgICBHUmVmUHRyPEdBY3Rpb24+IGdBY3Rpb24gPSBhZG9wdEdSZWYo
R19BQ1RJT04oZ19zaW1wbGVfYWN0aW9uX25ldygiV2ViS2l0R1RLK0N1c3RvbUdBY3Rpb24iLCBu
dWxscHRyKSkpOworICAgIHRlc3QtPnNldEFjdGlvbihnQWN0aW9uLmdldCgpLCAiQ3VzdG9tIF9H
QWN0aW9uIik7CisgICAgdGVzdC0+c2hvd0NvbnRleHRNZW51QW5kV2FpdFVudGlsRmluaXNoZWQo
KTsKKyAgICB0ZXN0LT5hY3RpdmF0ZUN1c3RvbU1lbnVJdGVtQW5kV2FpdFVudGlsQWN0aXZhdGVk
KCJDdXN0b20gX0dBY3Rpb24iKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5tX2FjdGl2YXRlZCk7Cisg
ICAgZ19hc3NlcnQoIXRlc3QtPm1fdG9nZ2xlZCk7CisKKyAgICAvLyBDcmVhdGUgYSBjdXN0b20g
dG9nZ2xlIG1lbnUgaXRlbSB1c2luZyBHQWN0aW9uLgorICAgIEdSZWZQdHI8R0FjdGlvbj4gdG9n
Z2xlR0FjdGlvbiA9IGFkb3B0R1JlZihHX0FDVElPTihnX3NpbXBsZV9hY3Rpb25fbmV3X3N0YXRl
ZnVsKCJXZWJLaXRHVEsrQ3VzdG9tVG9nZ2xlR0FjdGlvbiIsIG51bGxwdHIsIGdfdmFyaWFudF9u
ZXdfYm9vbGVhbihGQUxTRSkpKSk7CisgICAgdGVzdC0+c2V0QWN0aW9uKHRvZ2dsZUdBY3Rpb24u
Z2V0KCksICJDdXN0b20gX1RvZ2dsZSBHQWN0aW9uIik7CisgICAgdGVzdC0+c2hvd0NvbnRleHRN
ZW51QW5kV2FpdFVudGlsRmluaXNoZWQoKTsKKyAgICB0ZXN0LT50b2dnbGVDdXN0b21NZW51SXRl
bUFuZFdhaXRVbnRpbFRvZ2dsZWQoIkN1c3RvbSBfVG9nZ2xlIEdBY3Rpb24iKTsKKyAgICBnX2Fz
c2VydCghdGVzdC0+bV9hY3RpdmF0ZWQpOworICAgIGdfYXNzZXJ0KHRlc3QtPm1fdG9nZ2xlZCk7
CisKKyAgICAvLyBDcmVhdGUgYSBjdXN0b20gbWVudSBpdGVtIHVzaW5nIEdBY3Rpb24gd2l0aCBh
IHRhcmdldC4KKyAgICBnQWN0aW9uID0gYWRvcHRHUmVmKEdfQUNUSU9OKGdfc2ltcGxlX2FjdGlv
bl9uZXcoIldlYktpdEdUSytDdXN0b21HQWN0aW9uV2l0aFRhcmdldCIsIEdfVkFSSUFOVF9UWVBF
X1NUUklORykpKTsKKyAgICB0ZXN0LT5zZXRBY3Rpb24oZ0FjdGlvbi5nZXQoKSwgIkN1c3RvbSBf
R0FjdGlvbiBXaXRoIFRhcmdldCIsIGdfdmFyaWFudF9uZXdfc3RyaW5nKCJXZWJLaXRHVEsrQ3Vz
dG9tR0FjdGlvblRhcmdldCIpKTsKKyAgICB0ZXN0LT5zaG93Q29udGV4dE1lbnVBbmRXYWl0VW50
aWxGaW5pc2hlZCgpOworICAgIHRlc3QtPmFjdGl2YXRlQ3VzdG9tTWVudUl0ZW1BbmRXYWl0VW50
aWxBY3RpdmF0ZWQoIkN1c3RvbSBfR0FjdGlvbiBXaXRoIFRhcmdldCIpOworICAgIGdfYXNzZXJ0
KHRlc3QtPm1fYWN0aXZhdGVkKTsKIH0KIAogY2xhc3MgQ29udGV4dE1lbnVDdXN0b21GdWxsVGVz
dDogcHVibGljIENvbnRleHRNZW51VGVzdCB7CkBAIC02MjEsMTMgKzY3OSwxOSBAQCBwdWJsaWM6
CiAgICAgICAgIHdlYmtpdF9jb250ZXh0X21lbnVfaW5zZXJ0KGNvbnRleHRNZW51LCB3ZWJraXRf
Y29udGV4dF9tZW51X2l0ZW1fbmV3X3NlcGFyYXRvcigpLCAyKTsKIAogICAgICAgICAvLyBBZGQg
Y3VzdG9tIGFjdGlvbnMuCi0gICAgICAgIEdSZWZQdHI8R3RrQWN0aW9uPiBhY3Rpb24gPSBhZG9w
dEdSZWYoZ3RrX2FjdGlvbl9uZXcoIldlYktpdEdUSytDdXN0b21BY3Rpb24iLCAiQ3VzdG9tIF9B
Y3Rpb24iLCAwLCAwKSk7CisgICAgICAgIEdSZWZQdHI8R3RrQWN0aW9uPiBhY3Rpb24gPSBhZG9w
dEdSZWYoZ3RrX2FjdGlvbl9uZXcoIldlYktpdEdUSytDdXN0b21BY3Rpb24iLCAiQ3VzdG9tIF9B
Y3Rpb24iLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgICAgIGd0a19hY3Rpb25fc2V0X3NlbnNp
dGl2ZShhY3Rpb24uZ2V0KCksIEZBTFNFKTsKICAgICAgICAgd2Via2l0X2NvbnRleHRfbWVudV9p
bnNlcnQoY29udGV4dE1lbnUsIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXcoYWN0aW9uLmdl
dCgpKSwgLTEpOwotICAgICAgICBHUmVmUHRyPEd0a0FjdGlvbj4gdG9nZ2xlQWN0aW9uID0gYWRv
cHRHUmVmKEdUS19BQ1RJT04oZ3RrX3RvZ2dsZV9hY3Rpb25fbmV3KCJXZWJLaXRHVEsrQ3VzdG9t
VG9nZ2xlQWN0aW9uIiwgIkN1c3RvbSBfVG9nZ2xlIEFjdGlvbiIsIDAsIDApKSk7CisgICAgICAg
IEdSZWZQdHI8R3RrQWN0aW9uPiB0b2dnbGVBY3Rpb24gPSBhZG9wdEdSZWYoR1RLX0FDVElPTihn
dGtfdG9nZ2xlX2FjdGlvbl9uZXcoIldlYktpdEdUSytDdXN0b21Ub2dnbGVBY3Rpb24iLCAiQ3Vz
dG9tIF9Ub2dnbGUgQWN0aW9uIiwgbnVsbHB0ciwgbnVsbHB0cikpKTsKICAgICAgICAgZ3RrX3Rv
Z2dsZV9hY3Rpb25fc2V0X2FjdGl2ZShHVEtfVE9HR0xFX0FDVElPTih0b2dnbGVBY3Rpb24uZ2V0
KCkpLCBUUlVFKTsKICAgICAgICAgd2Via2l0X2NvbnRleHRfbWVudV9hcHBlbmQoY29udGV4dE1l
bnUsIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXcodG9nZ2xlQWN0aW9uLmdldCgpKSk7CiAg
ICAgICAgIHdlYmtpdF9jb250ZXh0X21lbnVfYXBwZW5kKGNvbnRleHRNZW51LCB3ZWJraXRfY29u
dGV4dF9tZW51X2l0ZW1fbmV3X3NlcGFyYXRvcigpKTsKKyAgICAgICAgR1JlZlB0cjxHQWN0aW9u
PiBnQWN0aW9uID0gYWRvcHRHUmVmKEdfQUNUSU9OKGdfc2ltcGxlX2FjdGlvbl9uZXcoIldlYktp
dEdUSytDdXN0b21HQWN0aW9uIiwgbnVsbHB0cikpKTsKKyAgICAgICAgZ19zaW1wbGVfYWN0aW9u
X3NldF9lbmFibGVkKEdfU0lNUExFX0FDVElPTihnQWN0aW9uLmdldCgpKSwgRkFMU0UpOworICAg
ICAgICB3ZWJraXRfY29udGV4dF9tZW51X2luc2VydChjb250ZXh0TWVudSwgd2Via2l0X2NvbnRl
eHRfbWVudV9pdGVtX25ld19mcm9tX2dhY3Rpb24oZ0FjdGlvbi5nZXQoKSwgIkN1c3RvbSBfR0Fj
dGlvbiIsIG51bGxwdHIpLCAtMSk7CisgICAgICAgIEdSZWZQdHI8R0FjdGlvbj4gdG9nZ2xlR0Fj
dGlvbiA9IGFkb3B0R1JlZihHX0FDVElPTihnX3NpbXBsZV9hY3Rpb25fbmV3X3N0YXRlZnVsKCJX
ZWJLaXRHVEsrQ3VzdG9tVG9nZ2xlR0FjdGlvbiIsIG51bGxwdHIsIGdfdmFyaWFudF9uZXdfYm9v
bGVhbihUUlVFKSkpKTsKKyAgICAgICAgd2Via2l0X2NvbnRleHRfbWVudV9hcHBlbmQoY29udGV4
dE1lbnUsIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9nYWN0aW9uKHRvZ2dsZUdB
Y3Rpb24uZ2V0KCksICJDdXN0b20gVF9vZ2dsZSBHQWN0aW9uIiwgbnVsbHB0cikpOworICAgICAg
ICB3ZWJraXRfY29udGV4dF9tZW51X2FwcGVuZChjb250ZXh0TWVudSwgd2Via2l0X2NvbnRleHRf
bWVudV9pdGVtX25ld19zZXBhcmF0b3IoKSk7CiAKICAgICAgICAgLy8gQWRkIGEgc3VibWVudS4K
ICAgICAgICAgR1JlZlB0cjxXZWJLaXRDb250ZXh0TWVudT4gc3ViTWVudSA9IGFkb3B0R1JlZih3
ZWJraXRfY29udGV4dF9tZW51X25ldygpKTsKQEAgLTY2MCw2ICs3MjQsOSBAQCBwdWJsaWM6CiAK
ICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc0N1c3RvbUFjdGlvbkFuZEdldE5leHQo
aXRlciwgIkN1c3RvbSBfQWN0aW9uIiwgVmlzaWJsZSk7CiAgICAgICAgIGl0ZXIgPSBjaGVja0N1
cnJlbnRJdGVtSXNDdXN0b21BY3Rpb25BbmRHZXROZXh0KGl0ZXIsICJDdXN0b20gX1RvZ2dsZSBB
Y3Rpb24iLCBWaXNpYmxlIHwgRW5hYmxlZCB8IENoZWNrZWQpOworICAgICAgICBpdGVyID0gY2hl
Y2tDdXJyZW50SXRlbUlzU2VwYXJhdG9yQW5kR2V0TmV4dChpdGVyKTsKKyAgICAgICAgaXRlciA9
IGNoZWNrQ3VycmVudEl0ZW1Jc0N1c3RvbUFjdGlvbkFuZEdldE5leHQoaXRlciwgIkN1c3RvbSBf
R0FjdGlvbiIsIFZpc2libGUpOworICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzQ3Vz
dG9tQWN0aW9uQW5kR2V0TmV4dChpdGVyLCAiQ3VzdG9tIFRfb2dnbGUgR0FjdGlvbiIsIFZpc2li
bGUgfCBFbmFibGVkIHwgQ2hlY2tlZCk7CiAgICAgICAgIGdfYXNzZXJ0KCFpdGVyKTsKIAogICAg
ICAgICBxdWl0TWFpbkxvb3AoKTsK
</data>
<flag name="review"
          id="331721"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>