<?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>61065</bug_id>
          
          <creation_ts>2011-05-18 09:12:11 -0700</creation_ts>
          <short_desc>[GTK][WebKit2] Initial windowed plugins implementation</short_desc>
          <delta_ts>2012-04-26 03:57:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>60629</dependson>
          <blocked>55659</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gustavo</cc>
    
    <cc>kbalazs</cc>
    
    <cc>l.slachciak</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>405768</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-05-18 09:12:11 -0700</bug_when>
    <thetext>Windowed plugins are currently not implemented in WebKit2 for the GTK port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405772</commentid>
    <comment_count>1</comment_count>
      <attachid>93924</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-05-18 09:14:04 -0700</bug_when>
    <thetext>Created attachment 93924
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405779</commentid>
    <comment_count>2</comment_count>
      <attachid>93924</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-05-18 09:25:39 -0700</bug_when>
    <thetext>Comment on attachment 93924
Patch

Attachment 93924 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/8708600</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406352</commentid>
    <comment_count>3</comment_count>
      <attachid>94063</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-05-19 05:43:41 -0700</bug_when>
    <thetext>Created attachment 94063
Updated patch

 - Remove build fix, I filed a separate bug report, see bug #61113
 - Simplify webkitWebViewBaseChildMoveResize()
 - Fill the changelog a bit more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406358</commentid>
    <comment_count>4</comment_count>
      <attachid>94063</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-05-19 05:54:12 -0700</bug_when>
    <thetext>Comment on attachment 94063
Updated patch

Attachment 94063 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/8710964</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437687</commentid>
    <comment_count>5</comment_count>
      <attachid>100963</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-07-15 06:14:54 -0700</bug_when>
    <thetext>Created attachment 100963
Patch updated for current git master</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437691</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-07-15 06:17:07 -0700</bug_when>
    <thetext>To test the patch I used a simple html file containing only:

&lt;html&gt;
&lt;body&gt;
    &lt;iframe src=&quot;flash.swf&quot;&gt;&lt;/iframe&gt;
&lt;/body&gt;
&lt;/html&gt;

and this flash file downloaded in the same dir:

http://www.adobe.com/shockwave/welcome/flash.swf</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437697</commentid>
    <comment_count>7</comment_count>
      <attachid>100963</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-07-15 06:29:37 -0700</bug_when>
    <thetext>Comment on attachment 100963
Patch updated for current git master

Attachment 100963 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9099207</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508071</commentid>
    <comment_count>8</comment_count>
      <attachid>100963</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-11-23 04:37:28 -0800</bug_when>
    <thetext>Comment on attachment 100963
Patch updated for current git master

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

This looks good to me, but I have a few suggestions.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:53
&gt; +    GList* children;

I&apos;d prefer a Vector here. You might be able to avoid manual memory management entirely.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:62
&gt; +typedef struct _WebKitWebViewChild {

I think you can just do

struct WebKitWebViewChild {
...
}

and that&apos;s more idiomatically C++.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:114
&gt; +    WebKitWebViewChild* viewChild = g_slice_new(WebKitWebViewChild);

It&apos;d be better to use the WTF allocator here, though even better if we can use a Vector + OwnPtr.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:131
&gt; +    for (GList* children = priv-&gt;children; children; children = children-&gt;next) {

It might be better to use gtk_container_forall here, if possible.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:144
&gt; +            if (wasVisible &amp;&amp; gtk_widget_get_visible(widgetContainer))
&gt; +                gtk_widget_queue_resize(widgetContainer);

It makes sense to move this out of the loop. Actually it seems if you use a Vector there will be no loop.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:185
&gt; +    WebKitWebViewChild* viewChild = webkitWebViewBaseGetChild(webView, child);
&gt; +
&gt; +    if (viewChild-&gt;geometry == childRect)
&gt; +        return;
&gt; +
&gt; +    viewChild-&gt;geometry = childRect;
&gt; +    gtk_widget_queue_resize_no_redraw(GTK_WIDGET(webView));

Here it might be good to do similar checks to what we do in WebKit1 now.  For instance:
1. If the child was off the screen and is still off the screen, don&apos;t do anything.
2. If the new allocation is the same as the old one, don&apos;t do anything.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:247
&gt; +    for (GList* children = priv-&gt;children; children; children = children-&gt;next) {

this can also be gtk_widget_forall.

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:179
&gt; +    if (m_isWindowed) {

Please split out the windowed and windowless paths into helper functions.

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:192
&gt; +            m_npWindow.window = (void*)gtk_socket_get_id(GTK_SOCKET(socket));

GINT_TO_POINTER?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511698</commentid>
    <comment_count>9</comment_count>
      <attachid>117182</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-11-30 06:16:12 -0800</bug_when>
    <thetext>Created attachment 117182
New patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511702</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-30 06:23:08 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608639</commentid>
    <comment_count>11</comment_count>
      <attachid>117182</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-04-24 07:25:25 -0700</bug_when>
    <thetext>Comment on attachment 117182
New patch

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

Patch looks good to me apart from some nits listed below. Also not sure about the Message changes, do they need to be approved by other WebKit2 reviewers? If so please CC the appropriate people :)

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:126
&gt; +    priv-&gt;children.set(widget, childAllocation);

Would it make sense to convert the GtkAllocation to an IntRect? I know they&apos;re quite similar but anyway :)

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:146
&gt; +static void webkitWebViewBaseContainerForall(GtkContainer *container, gboolean includeInternals, GtkCallback callback, gpointer callbackData)

star on the wrong side it seems?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:231
&gt; +    IntRect geometry(priv-&gt;children.get(child));

A different assignment style is used in webkitWebViewBaseChildMoveResize. Can the code be more coherent in that regard, if possible?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:235
&gt; +    GtkAllocation childAllocation(geometry);

Shouldn&apos;t a C-style assignment be used here?

&gt; Source/WebKit2/UIProcess/gtk/WebPageProxyGtk.cpp:86
&gt; +        GdkRectangle clip(clipRect);

Ditto about assignment style.

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:164
&gt; +    // I guess it uses gdk_window_lookup(), se we create a new socket here

typo: &quot;so we&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608661</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-24 07:53:54 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 117182 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117182&amp;action=review
&gt; 
&gt; Patch looks good to me apart from some nits listed below.

Thanks for reviewing!

&gt; Also not sure about the Message changes, do they need to be approved by other WebKit2 reviewers? If so please CC the appropriate people :)

I haven&apos;t changed any messages, just added a new one needed by ports using X11 plugin arch.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:126
&gt; &gt; +    priv-&gt;children.set(widget, childAllocation);
&gt; 
&gt; Would it make sense to convert the GtkAllocation to an IntRect? I know they&apos;re quite similar but anyway :)

It&apos;s converted, the hashmap stores IntRects.

typedef HashMap&lt;GtkWidget*, IntRect&gt; WebKitWebViewChildrenMap;

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:146
&gt; &gt; +static void webkitWebViewBaseContainerForall(GtkContainer *container, gboolean includeInternals, GtkCallback callback, gpointer callbackData)
&gt; 
&gt; star on the wrong side it seems?

right.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:231
&gt; &gt; +    IntRect geometry(priv-&gt;children.get(child));
&gt; 
&gt; A different assignment style is used in webkitWebViewBaseChildMoveResize. Can the code be more coherent in that regard, if possible?

Sure

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:235
&gt; &gt; +    GtkAllocation childAllocation(geometry);
&gt; 
&gt; Shouldn&apos;t a C-style assignment be used here?

why? does the coding style say something regarding assignments? I don&apos;t mind using either one, just wondering if there&apos;s a reason to prefer C-style one.

&gt; &gt; Source/WebKit2/UIProcess/gtk/WebPageProxyGtk.cpp:86
&gt; &gt; +        GdkRectangle clip(clipRect);
&gt; 
&gt; Ditto about assignment style.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:164
&gt; &gt; +    // I guess it uses gdk_window_lookup(), se we create a new socket here
&gt; 
&gt; typo: &quot;so we&quot;

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608699</commentid>
    <comment_count>13</comment_count>
      <attachid>117182</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-04-24 08:30:18 -0700</bug_when>
    <thetext>Comment on attachment 117182
New patch

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:231
&gt;&gt;&gt; +    IntRect geometry(priv-&gt;children.get(child));
&gt;&gt; 
&gt;&gt; A different assignment style is used in webkitWebViewBaseChildMoveResize. Can the code be more coherent in that regard, if possible?
&gt; 
&gt; Sure

Typically, assignment in WebKit uses the C syntax. I&apos;m not sure if the entire code base follows this rule. I&apos;ve definitely seen other reviewers express this desire before though, so it&apos;s best to stick with what&apos;s typical in the project, I think. I believe this could be considered one of the unwritten rules.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608709</commentid>
    <comment_count>14</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-24 08:38:42 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 117182 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117182&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:231
&gt; &gt;&gt;&gt; +    IntRect geometry(priv-&gt;children.get(child));
&gt; &gt;&gt; 
&gt; &gt;&gt; A different assignment style is used in webkitWebViewBaseChildMoveResize. Can the code be more coherent in that regard, if possible?
&gt; &gt; 
&gt; &gt; Sure
&gt; 
&gt; Typically, assignment in WebKit uses the C syntax. I&apos;m not sure if the entire code base follows this rule. I&apos;ve definitely seen other reviewers express this desire before though, so it&apos;s best to stick with what&apos;s typical in the project, I think. I believe this could be considered one of the unwritten rules.

Ok, I&apos;ll use the C-style then, thanks for the clarification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609533</commentid>
    <comment_count>15</comment_count>
      <attachid>117182</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-04-25 01:02:45 -0700</bug_when>
    <thetext>Comment on attachment 117182
New patch

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

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:229
&gt; +bool NetscapePlugin::platformPostInitialize()
&gt; +{
&gt; +#if PLATFORM(GTK)
&gt; +    if (moduleMixesGtkSymbols(m_pluginModule-&gt;module()))
&gt; +        return false;
&gt; +#endif
&gt; +
&gt; +    uint64_t windowID = 0;

I think we should still short-circuit the windowed case for Qt since we don&apos;t support it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609654</commentid>
    <comment_count>16</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-25 05:12:21 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 117182 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117182&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:229
&gt; &gt; +bool NetscapePlugin::platformPostInitialize()
&gt; &gt; +{
&gt; &gt; +#if PLATFORM(GTK)
&gt; &gt; +    if (moduleMixesGtkSymbols(m_pluginModule-&gt;module()))
&gt; &gt; +        return false;
&gt; &gt; +#endif
&gt; &gt; +
&gt; &gt; +    uint64_t windowID = 0;
&gt; 
&gt; I think we should still short-circuit the windowed case for Qt since we don&apos;t support it.

The patch shouldn&apos;t break Qt, if windowID is 0 (which will be the case of Qt until it&apos;s implemented), it returns early.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609668</commentid>
    <comment_count>17</comment_count>
      <attachid>138789</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-25 05:32:28 -0700</bug_when>
    <thetext>Created attachment 138789
Updated patch according to review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610440</commentid>
    <comment_count>18</comment_count>
      <attachid>138789</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-04-26 02:16:48 -0700</bug_when>
    <thetext>Comment on attachment 138789
Updated patch according to review comments

Ok! Seems quite good to me :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610458</commentid>
    <comment_count>19</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-26 03:17:58 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 138789 [details])
&gt; Ok! Seems quite good to me :)

Thank you very much for reviewing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610485</commentid>
    <comment_count>20</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-26 03:57:23 -0700</bug_when>
    <thetext>Committed r115300: &lt;http://trac.webkit.org/changeset/115300&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93924</attachid>
            <date>2011-05-18 09:14:04 -0700</date>
            <delta_ts>2011-05-19 05:43:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-windowed-plugins.diff</filename>
            <type>text/plain</type>
            <size>28261</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzN2FkZGM1Li5mMDBhOTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMg
QEAKKzIwMTEtMDUtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtd
IEluaXRpYWwgd2luZG93ZWQgcGx1Z2lucyBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEwNjUKKworICAgICAgICAqIFBsdWdp
blByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luQ29udHJvbGxlclByb3h5Ojp0cnlUb1Nob3J0Q2lyY3VpdEludm9rZSk6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6dHJ5VG9TaG9ydENpcmN1aXRFdmFsdWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6Y3JlYXRlUGx1Z2luQ29u
dGFpbmVyKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5Ojp3aW5kb3dl
ZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdp
bkNvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ29udGFpbmVyQWRkKToK
KyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ29udGFpbmVyUmVtb3ZlKToKKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdCYXNlQ29udGFpbmVyRm9yYWxsKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdC
YXNlR2V0Q2hpbGQpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VDaGlsZE1vdmVSZXNpemUp
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Jhc2VfaW5pdCk6CisgICAgICAgICh3ZWJraXRX
ZWJWaWV3QmFzZVNpemVBbGxvY2F0ZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfYmFzZV9j
bGFzc19pbml0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nl
c3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBsdWdpbldpbmRv
d01hcCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlUGx1Z2luQ29udGFp
bmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp3aW5kb3dlZFBsdWdpbkdlb21l
dHJ5RGlkQ2hhbmdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvV2ViUGFnZVByb3h5UXQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZVBsdWdpbkNvbnRhaW5lcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURp
ZENoYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46Ok5ldHNjYXBlUGx1
Z2luKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBl
UGx1Z2luWDExLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3Jt
UG9zdEluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZv
cm1HZW9tZXRyeURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpw
bGF0Zm9ybVBhaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJv
bGxlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpjcmVhdGVQbHVnaW5Db250YWluZXIpOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5n
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luVmlldzo6Y3JlYXRlUGx1Z2luQ29udGFpbmVyKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
Vmlldzo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKwogMjAxMS0wNS0xNyAgSmVyZW15IE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxl
clByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxl
clByb3h5LmNwcAppbmRleCA1NDExZmI3Li5jMTk2OGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCkBAIC0yODks
MTAgKzI4OSwxMSBAQCBib29sIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6ZXZhbHVhdGUoTlBPYmpl
Y3QqIG5wT2JqZWN0LCBjb25zdCBTdHJpbmcmIHNjcmlwdFN0cgogCiBib29sIFBsdWdpbkNvbnRy
b2xsZXJQcm94eTo6dHJ5VG9TaG9ydENpcmN1aXRJbnZva2UoTlBPYmplY3QqIG5wT2JqZWN0LCBO
UElkZW50aWZpZXIgbWV0aG9kTmFtZSwgY29uc3QgTlBWYXJpYW50KiBhcmd1bWVudHMsIHVpbnQz
Ml90IGFyZ3VtZW50Q291bnQsIGJvb2wmIHJldHVyblZhbHVlLCBOUFZhcmlhbnQmIHJlc3VsdCkK
IHsKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKE1BQykKICAgICAvLyBPbmx5IHRyeSB0byBzaG9y
dCBjaXJjdWl0IGV2YWx1YXRlIGZvciBwbHVnLWlucyB0aGF0IGhhdmUgdGhlIHF1aXJrIHNwZWNp
ZmllZC4KICAgICBpZiAoIVBsdWdpblByb2Nlc3M6OnNoYXJlZCgpLm5ldHNjYXBlUGx1Z2luTW9k
dWxlKCktPnBsdWdpblF1aXJrcygpLmNvbnRhaW5zKFBsdWdpblF1aXJrczo6Q2FuU2hvcnRDaXJj
dWl0U29tZU5QUnVudGltZUNhbGxzRHVyaW5nSW5pdGlhbGl6YXRpb24pKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgCisjZW5kaWYKICAgICAvLyBBbmQgb25seSB3aGVuIHdlJ3JlIGluIGlu
aXRpYWxpemUuCiAgICAgaWYgKCFpbkluaXRpYWxpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtNTg4LDEwICs1ODksMTEgQEAgdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnByaXZh
dGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sIGlzUHJpdmF0ZUJyb3dzaW5nRW4KIAogYm9vbCBQ
bHVnaW5Db250cm9sbGVyUHJveHk6OnRyeVRvU2hvcnRDaXJjdWl0RXZhbHVhdGUoTlBPYmplY3Qq
IG5wT2JqZWN0LCBjb25zdCBTdHJpbmcmIHNjcmlwdFN0cmluZywgTlBWYXJpYW50KiByZXN1bHQp
CiB7CisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShNQUMpCiAgICAgLy8gT25seSB0cnkgdG8gc2hv
cnQgY2lyY3VpdCBldmFsdWF0ZSBmb3IgcGx1Zy1pbnMgdGhhdCBoYXZlIHRoZSBxdWlyayBzcGVj
aWZpZWQuCiAgICAgaWYgKCFQbHVnaW5Qcm9jZXNzOjpzaGFyZWQoKS5uZXRzY2FwZVBsdWdpbk1v
ZHVsZSgpLT5wbHVnaW5RdWlya3MoKS5jb250YWlucyhQbHVnaW5RdWlya3M6OkNhblNob3J0Q2ly
Y3VpdFNvbWVOUFJ1bnRpbWVDYWxsc0R1cmluZ0luaXRpYWxpemF0aW9uKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotCisjZW5kaWYKICAgICAvLyBBbmQgb25seSB3aGVuIHdlJ3JlIGluIGluaXRp
YWxpemUuCiAgICAgaWYgKCFpbkluaXRpYWxpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNjA5LDYgKzYxMSwyMCBAQCBib29sIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6dHJ5VG9TaG9y
dENpcmN1aXRFdmFsdWF0ZShOUE9iamVjdCogbnBPYmplY3QsIGNvbnN0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKK3VpbnQ2NF90IFBsdWdpbkNv
bnRyb2xsZXJQcm94eTo6Y3JlYXRlUGx1Z2luQ29udGFpbmVyKCkKK3sKKyAgICB1aW50NjRfdCB3
aW5kb3dJRCA9IDA7CisgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1l
c3NhZ2VzOjpQbHVnaW5Qcm94eTo6Q3JlYXRlUGx1Z2luQ29udGFpbmVyKCksIE1lc3NhZ2VzOjpQ
bHVnaW5Qcm94eTo6Q3JlYXRlUGx1Z2luQ29udGFpbmVyOjpSZXBseSh3aW5kb3dJRCksIG1fcGx1
Z2luSW5zdGFuY2VJRCk7CisgICAgcmV0dXJuIHdpbmRvd0lEOworfQorCit2b2lkIFBsdWdpbkNv
bnRyb2xsZXJQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBJbnRS
ZWN0JiBmcmFtZVJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJ
RCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1
Z2luUHJveHk6OldpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoZnJhbWVSZWN0LCBjbGlw
UmVjdCwgd2luZG93SUQpLCBtX3BsdWdpbkluc3RhbmNlSUQpOworfQorI2VuZGlmCisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5
LmgKaW5kZXggZGJmZWRhNC4uZjliODMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1
Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCkBAIC0xMDcsNiArMTA3LDEwIEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGdldEF1dGhlbnRpY2F0aW9uSW5mbyhjb25zdCBX
ZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmLCBTdHJpbmcmIHVzZXJuYW1lLCBTdHJpbmcmIHBhc3N3
b3JkKTsKICAgICB2aXJ0dWFsIHZvaWQgcHJvdGVjdFBsdWdpbkZyb21EZXN0cnVjdGlvbigpOwog
ICAgIHZpcnR1YWwgdm9pZCB1bnByb3RlY3RQbHVnaW5Gcm9tRGVzdHJ1Y3Rpb24oKTsKKyNpZiBQ
TFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKyAgICB2aXJ0dWFsIHVpbnQ2NF90IGNyZWF0ZVBsdWdp
bkNvbnRhaW5lcigpOworICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlk
Q2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lEKTsKKyNlbmRpZgogICAgIAogICAg
IC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBmcmFtZURpZEZpbmlzaExvYWRpbmcodWlu
dDY0X3QgcmVxdWVzdElEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCBiYzM3Y2I5Li4zOWVmNjE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d0Jhc2UuY3BwCkBAIC00OSw2ICs0OSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RydWN0IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUg
eworICAgIEdMaXN0KiBjaGlsZHJlbjsKICAgICBPd25QdHI8UGFnZUNsaWVudEltcGw+IHBhZ2VD
bGllbnQ7CiAgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gcGFnZVByb3h5OwogICAgIGdib29sZWFu
IGlzUGFnZUFjdGl2ZTsKQEAgLTU2LDYgKzU3LDExIEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jh
c2VQcml2YXRlIHsKICAgICBHdGtDbGlja0NvdW50ZXIgY2xpY2tDb3VudGVyOwogfTsKIAordHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDaGlsZCB7CisgICAgR3RrV2lkZ2V0KiB3aWRnZXQ7
CisgICAgSW50UmVjdCBnZW9tZXRyeTsKK30gV2ViS2l0V2ViVmlld0NoaWxkOworCiBHX0RFRklO
RV9UWVBFKFdlYktpdFdlYlZpZXdCYXNlLCB3ZWJraXRfd2ViX3ZpZXdfYmFzZSwgR1RLX1RZUEVf
Q09OVEFJTkVSKQogCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVJlYWxpemUoR3RrV2lk
Z2V0KiB3aWRnZXQpCkBAIC0xMTQsNyArMTIwLDk1IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZp
ZXdCYXNlUmVhbGl6ZShHdGtXaWRnZXQqIHdpZGdldCkKIAogc3RhdGljIHZvaWQgd2Via2l0V2Vi
Vmlld0Jhc2VDb250YWluZXJBZGQoR3RrQ29udGFpbmVyKiBjb250YWluZXIsIEd0a1dpZGdldCog
d2lkZ2V0KQogeworICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9W
SUVXX0JBU0UoY29udGFpbmVyKTsKKyAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYg
PSB3ZWJWaWV3LT5wcml2OworCisgICAgV2ViS2l0V2ViVmlld0NoaWxkKiB2aWV3Q2hpbGQgPSBn
X3NsaWNlX25ldyhXZWJLaXRXZWJWaWV3Q2hpbGQpOworICAgIHZpZXdDaGlsZC0+d2lkZ2V0ID0g
d2lkZ2V0OworICAgIEd0a0FsbG9jYXRpb24gY2hpbGRBbGxvY2F0aW9uOworICAgIGd0a193aWRn
ZXRfZ2V0X2FsbG9jYXRpb24od2lkZ2V0LCAmY2hpbGRBbGxvY2F0aW9uKTsKKyAgICB2aWV3Q2hp
bGQtPmdlb21ldHJ5ID0gY2hpbGRBbGxvY2F0aW9uOworCiAgICAgZ3RrX3dpZGdldF9zZXRfcGFy
ZW50KHdpZGdldCwgR1RLX1dJREdFVChjb250YWluZXIpKTsKKworICAgIHByaXYtPmNoaWxkcmVu
ID0gZ19saXN0X2FwcGVuZChwcml2LT5jaGlsZHJlbiwgdmlld0NoaWxkKTsKK30KKworc3RhdGlj
IHZvaWQgd2Via2l0V2ViVmlld0Jhc2VDb250YWluZXJSZW1vdmUoR3RrQ29udGFpbmVyKiBjb250
YWluZXIsIEd0a1dpZGdldCogd2lkZ2V0KQoreworICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJW
aWV3ID0gV0VCS0lUX1dFQl9WSUVXX0JBU0UoY29udGFpbmVyKTsKKyAgICBXZWJLaXRXZWJWaWV3
QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworICAgIEd0a1dpZGdldCogd2lkZ2V0
Q29udGFpbmVyID0gR1RLX1dJREdFVChjb250YWluZXIpOworCisgICAgZm9yIChHTGlzdCogY2hp
bGRyZW4gPSBwcml2LT5jaGlsZHJlbjsgY2hpbGRyZW47IGNoaWxkcmVuID0gY2hpbGRyZW4tPm5l
eHQpIHsKKyAgICAgICAgV2ViS2l0V2ViVmlld0NoaWxkKiB2aWV3Q2hpbGQgPSBzdGF0aWNfY2Fz
dDxXZWJLaXRXZWJWaWV3Q2hpbGQqPihjaGlsZHJlbi0+ZGF0YSk7CisKKyAgICAgICAgaWYgKHZp
ZXdDaGlsZC0+d2lkZ2V0ID09IHdpZGdldCkgeworICAgICAgICAgICAgZ2Jvb2xlYW4gd2FzVmlz
aWJsZSA9IGd0a193aWRnZXRfZ2V0X3Zpc2libGUod2lkZ2V0KTsKKworICAgICAgICAgICAgZ3Rr
X3dpZGdldF91bnBhcmVudCh3aWRnZXQpOworCisgICAgICAgICAgICBwcml2LT5jaGlsZHJlbiA9
IGdfbGlzdF9yZW1vdmVfbGluayhwcml2LT5jaGlsZHJlbiwgY2hpbGRyZW4pOworICAgICAgICAg
ICAgZ19saXN0X2ZyZWUoY2hpbGRyZW4pOworICAgICAgICAgICAgZ19zbGljZV9mcmVlKFdlYktp
dFdlYlZpZXdDaGlsZCwgdmlld0NoaWxkKTsKKworICAgICAgICAgICAgaWYgKHdhc1Zpc2libGUg
JiYgZ3RrX3dpZGdldF9nZXRfdmlzaWJsZSh3aWRnZXRDb250YWluZXIpKQorICAgICAgICAgICAg
ICAgIGd0a193aWRnZXRfcXVldWVfcmVzaXplKHdpZGdldENvbnRhaW5lcik7CisKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJW
aWV3QmFzZUNvbnRhaW5lckZvcmFsbChHdGtDb250YWluZXIgKmNvbnRhaW5lciwgZ2Jvb2xlYW4g
aW5jbHVkZUludGVybmFscywgR3RrQ2FsbGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIGNhbGxiYWNr
RGF0YSkKK3sKKyAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlldyA9IFdFQktJVF9XRUJfVklF
V19CQVNFKGNvbnRhaW5lcik7CisgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0g
d2ViVmlldy0+cHJpdjsKKworICAgIEdMaXN0KiBjaGlsZHJlbiA9IHByaXYtPmNoaWxkcmVuOwor
ICAgIHdoaWxlIChjaGlsZHJlbikgeworICAgICAgICBXZWJLaXRXZWJWaWV3Q2hpbGQqIHZpZXdD
aGlsZCA9IHN0YXRpY19jYXN0PFdlYktpdFdlYlZpZXdDaGlsZCo+KGNoaWxkcmVuLT5kYXRhKTsK
KyAgICAgICAgY2hpbGRyZW4gPSBjaGlsZHJlbi0+bmV4dDsKKyAgICAgICAgKCogY2FsbGJhY2sp
KHZpZXdDaGlsZC0+d2lkZ2V0LCBjYWxsYmFja0RhdGEpOworICAgIH0KK30KKworCitzdGF0aWMg
V2ViS2l0V2ViVmlld0NoaWxkKiB3ZWJraXRXZWJWaWV3QmFzZUdldENoaWxkKFdlYktpdFdlYlZp
ZXdCYXNlKiB3ZWJWaWV3LCBHdGtXaWRnZXQqIGNoaWxkKQoreworICAgIFdlYktpdFdlYlZpZXdD
aGlsZCogdmlld0NoaWxkID0gMDsKKyAgICBmb3IgKEdMaXN0KiBjaGlsZHJlbiA9IHdlYlZpZXct
PnByaXYtPmNoaWxkcmVuOyBjaGlsZHJlbjsgY2hpbGRyZW4gPSBjaGlsZHJlbi0+bmV4dCkgewor
ICAgICAgICB2aWV3Q2hpbGQgPSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJWaWV3Q2hpbGQqPihjaGls
ZHJlbi0+ZGF0YSk7CisKKyAgICAgICAgaWYgKHZpZXdDaGlsZC0+d2lkZ2V0ID09IGNoaWxkKQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHZpZXdDaGlsZDsKK30KKwor
dm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNoaWxkTW92ZVJlc2l6ZShXZWJLaXRXZWJWaWV3QmFzZSog
d2ViVmlldywgR3RrV2lkZ2V0KiBjaGlsZCwgY29uc3QgSW50UmVjdCYgY2hpbGRSZWN0KQorewor
ICAgIFdlYktpdFdlYlZpZXdDaGlsZCogdmlld0NoaWxkID0gd2Via2l0V2ViVmlld0Jhc2VHZXRD
aGlsZCh3ZWJWaWV3LCBjaGlsZCk7CisKKyAgICBpZiAodmlld0NoaWxkLT5nZW9tZXRyeSA9PSBj
aGlsZFJlY3QpCisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwor
ICAgIGlmICh2aWV3Q2hpbGQtPmdlb21ldHJ5LmxvY2F0aW9uKCkgIT0gY2hpbGRSZWN0LmxvY2F0
aW9uKCkpIHsKKyAgICAgICAgdmlld0NoaWxkLT5nZW9tZXRyeS5zZXRMb2NhdGlvbihjaGlsZFJl
Y3QubG9jYXRpb24oKSk7CisgICAgICAgIGlmIChndGtfd2lkZ2V0X2dldF92aXNpYmxlKHZpZXdD
aGlsZC0+d2lkZ2V0KSAmJiBndGtfd2lkZ2V0X2dldF92aXNpYmxlKEdUS19XSURHRVQod2ViVmll
dykpKQorICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgfQorCisgICAgaWYgKHZpZXdD
aGlsZC0+Z2VvbWV0cnkuc2l6ZSgpICE9IGNoaWxkUmVjdC5zaXplKCkpIHsKKyAgICAgICAgdmll
d0NoaWxkLT5nZW9tZXRyeS5zZXRTaXplKGNoaWxkUmVjdC5zaXplKCkpOworICAgICAgICBpZiAo
Z3RrX3dpZGdldF9nZXRfdmlzaWJsZSh2aWV3Q2hpbGQtPndpZGdldCkgJiYgZ3RrX3dpZGdldF9n
ZXRfdmlzaWJsZShHVEtfV0lER0VUKHdlYlZpZXcpKSkKKyAgICAgICAgICAgIGNoYW5nZWQgPSB0
cnVlOworICAgIH0KKworICAgIGlmIChjaGFuZ2VkKQorICAgICAgICBndGtfd2lkZ2V0X3F1ZXVl
X3Jlc2l6ZV9ub19yZWRyYXcoR1RLX1dJREdFVCh3ZWJWaWV3KSk7CiB9CiAKIHN0YXRpYyB2b2lk
IHdlYmtpdFdlYlZpZXdCYXNlRmluYWxpemUoR09iamVjdCogZ29iamVjdCkKQEAgLTE0MCw2ICsy
MzQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfYmFzZV9pbml0KFdlYktpdFdlYlZp
ZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUq
IHByaXYgPSBuZXcgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKCk7CiAgICAgd2Via2l0V2ViVmll
d0Jhc2UtPnByaXYgPSBwcml2OwogCisgICAgcHJpdi0+Y2hpbGRyZW4gPSAwOwogICAgIHByaXYt
PmlzUGFnZUFjdGl2ZSA9IFRSVUU7CiAKICAgICBndGtfd2lkZ2V0X3NldF9jYW5fZm9jdXMoR1RL
X1dJREdFVCh3ZWJraXRXZWJWaWV3QmFzZSksIFRSVUUpOwpAQCAtMTgyLDYgKzI3NywxNyBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNpemVBbGxvY2F0ZShHdGtXaWRnZXQqIHdpZGdl
dCwgR3RrQWxsb2NhdGlvbiogYWxsbwogICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJp
diA9IHdlYlZpZXdCYXNlLT5wcml2OwogCiAgICAgR1RLX1dJREdFVF9DTEFTUyh3ZWJraXRfd2Vi
X3ZpZXdfYmFzZV9wYXJlbnRfY2xhc3MpLT5zaXplX2FsbG9jYXRlKHdpZGdldCwgYWxsb2NhdGlv
bik7CisKKyAgICBmb3IgKEdMaXN0KiBjaGlsZHJlbiA9IHByaXYtPmNoaWxkcmVuOyBjaGlsZHJl
bjsgY2hpbGRyZW4gPSBjaGlsZHJlbi0+bmV4dCkgeworICAgICAgICBXZWJLaXRXZWJWaWV3Q2hp
bGQqIHZpZXdDaGlsZCA9IHN0YXRpY19jYXN0PFdlYktpdFdlYlZpZXdDaGlsZCo+KGNoaWxkcmVu
LT5kYXRhKTsKKworICAgICAgICBpZiAoIWd0a193aWRnZXRfZ2V0X3Zpc2libGUodmlld0NoaWxk
LT53aWRnZXQpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgR3RrQWxsb2NhdGlv
biBjaGlsZEFsbG9jYXRpb24odmlld0NoaWxkLT5nZW9tZXRyeSk7CisgICAgICAgIGd0a193aWRn
ZXRfc2l6ZV9hbGxvY2F0ZSh2aWV3Q2hpbGQtPndpZGdldCwgJmNoaWxkQWxsb2NhdGlvbik7Cisg
ICAgfQorCiAgICAgcHJpdi0+cGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpLT5zZXRTaXplKEludFNp
emUoYWxsb2NhdGlvbi0+d2lkdGgsIGFsbG9jYXRpb24tPmhlaWdodCksIEludFNpemUoKSk7CiB9
CiAKQEAgLTMwNiw2ICs0MTIsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfYmFzZV9j
bGFzc19pbml0KFdlYktpdFdlYlZpZXdCYXNlQ2xhc3MqIHdlYmtpdFdlYlZpZQogCiAgICAgR3Rr
Q29udGFpbmVyQ2xhc3MqIGNvbnRhaW5lckNsYXNzID0gR1RLX0NPTlRBSU5FUl9DTEFTUyh3ZWJr
aXRXZWJWaWV3QmFzZUNsYXNzKTsKICAgICBjb250YWluZXJDbGFzcy0+YWRkID0gd2Via2l0V2Vi
Vmlld0Jhc2VDb250YWluZXJBZGQ7CisgICAgY29udGFpbmVyQ2xhc3MtPnJlbW92ZSA9IHdlYmtp
dFdlYlZpZXdCYXNlQ29udGFpbmVyUmVtb3ZlOworICAgIGNvbnRhaW5lckNsYXNzLT5mb3JhbGwg
PSB3ZWJraXRXZWJWaWV3QmFzZUNvbnRhaW5lckZvcmFsbDsKIH0KIAogV2ViS2l0V2ViVmlld0Jh
c2UqIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYlBhZ2VH
cm91cCogcGFnZUdyb3VwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaAppbmRleCAzZDBlZDc0Li5mNDJl
MTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3QmFzZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaApAQCAtNDEsNiArNDEsOCBAQCBHdGtJTUNvbnRl
eHQqIHdlYmtpdFdlYlZpZXdCYXNlR2V0SU1Db250ZXh0KFdlYktpdFdlYlZpZXdCYXNlKik7CiAK
IFdlYlBhZ2VQcm94eSogd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdlYktpdFdlYlZpZXdCYXNl
Kik7CiAKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VDaGlsZE1vdmVSZXNpemUoV2ViS2l0V2ViVmll
d0Jhc2UqLCBHdGtXaWRnZXQqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisKIEdfRU5EX0RF
Q0xTCiAKICNlbmRpZiAvLyBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGVfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGMxN2I5ZTUuLjcyMTU3ZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTc1NCw2ICs3NTQsMTEgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNjaGVkdWxlQ2hpbGRXaW5kb3dHZW9tZXRyeVVwZGF0ZShjb25zdCBX
aW5kb3dHZW9tZXRyeSYpOwogI2VuZGlmCiAKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkK
KyAgICB2b2lkIGNyZWF0ZVBsdWdpbkNvbnRhaW5lcih1aW50NjRfdCYgd2luZG93SUQpOworICAg
IHZvaWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRf
dCB3aW5kb3dJRCk7CisjZW5kaWYKKwogICAgIFBhZ2VDbGllbnQqIG1fcGFnZUNsaWVudDsKICAg
ICBXZWJMb2FkZXJDbGllbnQgbV9sb2FkZXJDbGllbnQ7CiAgICAgV2ViUG9saWN5Q2xpZW50IG1f
cG9saWN5Q2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KaW5kZXggMWNlZGJlNy4uYjdjM2JiZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNTAsNiArMjUw
LDEyIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU2NoZWR1bGVDaGlsZFdpbmRv
d0dlb21ldHJ5VXBkYXRlKFdlYktpdDo6V2luZG93R2VvbWV0cnkgZ2VvbWV0cnkpCiAjZW5kaWYK
IAorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAgICMgWDExIHdpbmRvd2VkIHBsdWdp
biBtZXNzYWdlcworICAgIENyZWF0ZVBsdWdpbkNvbnRhaW5lcigpIC0+ICh1aW50NjRfdCB3aW5k
b3dJRCkKKyAgICBXaW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKFdlYkNvcmU6OkludFJl
Y3QgZnJhbWVSZWN0LCBXZWJDb3JlOjpJbnRSZWN0IGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJ
RCkKKyNlbmRpZgorCiAgICAgIyBTZWFyY2ggcG9wdXAgbWVudXMKICAgICBTYXZlUmVjZW50U2Vh
cmNoZXMoV1RGOjpTdHJpbmcgbmFtZSwgVmVjdG9yPFN0cmluZz4gc2VhcmNoSXRlbXMpCiAgICAg
TG9hZFJlY2VudFNlYXJjaGVzKFdURjo6U3RyaW5nIG5hbWUpIC0+IChWZWN0b3I8U3RyaW5nPiBy
ZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQ
cm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0
ay5jcHAKaW5kZXggMzkzYjRjNy4uY2I4NTA0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcApAQCAtMzAsNiArMzAsMTAgQEAKICNpbmNs
dWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKICNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbC5oIgorI2luY2x1ZGUgIldlYktpdFdlYlZpZXdC
YXNlUHJpdmF0ZS5oIgorI2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgorI2luY2x1ZGUgPGd0ay9n
dGt4Lmg+CisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTU5LDQgKzYzLDQxIEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgVmVj
dG9yPFN0cmluZz4mKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3R5cGVkZWYgSGFzaE1h
cDx1aW50NjRfdCwgR3RrV2lkZ2V0KiA+IFBsdWdpbldpbmRvd01hcDsKK3N0YXRpYyBQbHVnaW5X
aW5kb3dNYXAmIHBsdWdpbldpbmRvd01hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChQ
bHVnaW5XaW5kb3dNYXAsIG1hcCwgKCkpOworICAgIHJldHVybiBtYXA7Cit9CisKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpjcmVhdGVQbHVnaW5Db250YWluZXIodWludDY0X3QmIHdpbmRvd0lEKQorewor
ICAgIEd0a1dpZGdldCogc29ja2V0ID0gZ3RrX3NvY2tldF9uZXcoKTsKKyAgICBndGtfY29udGFp
bmVyX2FkZChHVEtfQ09OVEFJTkVSKHZpZXdXaWRnZXQoKSksIHNvY2tldCk7CisgICAgZ3RrX3dp
ZGdldF9zaG93KHNvY2tldCk7CisKKyAgICB3aW5kb3dJRCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90
PihndGtfc29ja2V0X2dldF9pZChHVEtfU09DS0VUKHNvY2tldCkpKTsKKyAgICBwbHVnaW5XaW5k
b3dNYXAoKS5zZXQod2luZG93SUQsIHNvY2tldCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojp3
aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZy
YW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRv
d0lEKQoreworICAgIEd0a1dpZGdldCogcGx1Z2luID0gcGx1Z2luV2luZG93TWFwKCkuZ2V0KHdp
bmRvd0lEKTsKKworICAgIGlmIChndGtfd2lkZ2V0X2dldF9yZWFsaXplZChwbHVnaW4pKSB7Cisg
ICAgICAgIEdka1JlY3RhbmdsZSBjbGlwKGNsaXBSZWN0KTsKKyNpZmRlZiBHVEtfQVBJX1ZFUlNJ
T05fMgorICAgICAgICBHZGtSZWdpb24qIGNsaXBSZWdpb24gPSBnZGtfcmVnaW9uX3JlY3Rhbmds
ZSgmY2xpcCk7CisgICAgICAgIGdka193aW5kb3dfc2hhcGVfY29tYmluZV9yZWdpb24oZ3RrX3dp
ZGdldF9nZXRfd2luZG93KHBsdWdpbiksIGNsaXBSZWdpb24sIDAsIDApOworICAgICAgICBnZGtf
cmVnaW9uX2Rlc3Ryb3koY2xpcFJlZ2lvbik7CisjZWxzZQorICAgICAgICBjYWlyb19yZWdpb25f
dCogY2xpcFJlZ2lvbiA9IGNhaXJvX3JlZ2lvbl9jcmVhdGVfcmVjdGFuZ2xlKCZjbGlwKTsKKyAg
ICAgICAgZ2RrX3dpbmRvd19zaGFwZV9jb21iaW5lX3JlZ2lvbihndGtfd2lkZ2V0X2dldF93aW5k
b3cocGx1Z2luKSwgY2xpcFJlZ2lvbiwgMCwgMCk7CisgICAgICAgIGNhaXJvX3JlZ2lvbl9kZXN0
cm95KGNsaXBSZWdpb24pOworI2VuZGlmCisgICAgfQorCisgICAgd2Via2l0V2ViVmlld0Jhc2VD
aGlsZE1vdmVSZXNpemUoV0VCS0lUX1dFQl9WSUVXX0JBU0Uodmlld1dpZGdldCgpKSwgcGx1Z2lu
LCBmcmFtZVJlY3QpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQYWdlUHJveHlRdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvV2ViUGFnZVByb3h5UXQuY3BwCmluZGV4IDYxNWNkOGQuLjdhMzAx
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQYWdlUHJveHlR
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBhZ2VQcm94eVF0LmNw
cApAQCAtNDYsNCArNDYsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZWNlbnRTZWFyY2hl
cyhjb25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZVBsdWdpbkNvbnRhaW5lcih1aW50NjRfdCYg
d2luZG93SUQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBXZWJQYWdlUHJv
eHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qg
d2luZG93SUQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCBkZTY0YjAxLi5lMzg4MzUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTgwLDYgKzgwLDkgQEAgTmV0c2NhcGVQbHVn
aW46Ok5ldHNjYXBlUGx1Z2luKFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+IHBsdWdp
bk1vZHVsZSkKICNlbGlmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQogICAgICwgbV9kcmF3YWJs
ZSgwKQogICAgICwgbV9wbHVnaW5EaXNwbGF5KDApCisjaWYgUExBVEZPUk0oR1RLKQorICAgICwg
bV9wbGF0Zm9ybVBsdWdpbldpZGdldCgwKQorI2VuZGlmCiAjZW5kaWYKIHsKICAgICBtX25wcC5u
ZGF0YSA9IHRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IDI4ZTU1N2YuLmI5MDAwNzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC0yNDksNiArMjQ5LDkgQEAgcHJpdmF0ZToKICNl
bGlmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQogICAgIFBpeG1hcCBtX2RyYXdhYmxlOwogICAg
IERpc3BsYXkqIG1fcGx1Z2luRGlzcGxheTsKKyNpZiBQTEFURk9STShHVEspCisgICAgR3RrV2lk
Z2V0KiBtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0OworI2VuZGlmCiAjZW5kaWYKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0
c2NhcGVQbHVnaW5YMTEuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKaW5kZXggOTA3MjQxMi4uY2I0MWQzNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gx
MS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKQEAgLTI5LDYgKzI5LDcg
QEAKIAogI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luLmgiCiAKKyNpbmNsdWRlICJQbHVnaW5Db250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBo
aWNzQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KQEAgLTQy
LDYgKzQzLDEwIEBACiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRl
ICJSZWZQdHJDYWlyby5oIgogI2luY2x1ZGUgPGNhaXJvL2NhaXJvLXhsaWIuaD4KKyNpbmNsdWRl
IDxndGsvZ3RrLmg+CisjaWZuZGVmIEdUS19BUElfVkVSU0lPTl8yCisjaW5jbHVkZSA8Z3RrL2d0
a3guaD4KKyNlbmRpZgogI2luY2x1ZGUgPGdkay9nZGt4Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9H
dGtWZXJzaW9uaW5nLmg+CiAjZW5kaWYKQEAgLTEyNywzOCArMTMyLDc4IEBAIHN0YXRpYyBpbmxp
bmUgaW50IHgxMVNjcmVlbigpCiAKIGJvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUG9zdElu
aXRpYWxpemUoKQogewotICAgIGlmIChtX2lzV2luZG93ZWQpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBXaW5kb3cgd2luZG93SUQgPSAwOworICAgIGJvb2wgbmVlZHNYRW1iZWQgPSBmYWxz
ZTsKKyAgICBpZiAobV9pc1dpbmRvd2VkKSB7CisgICAgICAgIE5QUF9HZXRWYWx1ZShOUFBWcGx1
Z2luTmVlZHNYRW1iZWQsICZuZWVkc1hFbWJlZCk7CisgICAgICAgIGlmIChuZWVkc1hFbWJlZCkg
eworICAgICAgICAgICAgd2luZG93SUQgPSBzdGF0aWNfY2FzdDxXaW5kb3c+KG1fcGx1Z2luQ29u
dHJvbGxlci0+Y3JlYXRlUGx1Z2luQ29udGFpbmVyKCkpOworICAgICAgICAgICAgaWYgKCF3aW5k
b3dJRCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisgICAgfQogCiAgICAgaWYgKCEobV9wbHVnaW5EaXNwbGF5ID0gZ2V0UGx1Z2lu
RGlzcGxheSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgTlBTZXRXaW5kb3dDYWxs
YmFja1N0cnVjdCogY2FsbGJhY2tTdHJ1Y3QgPSBuZXcgTlBTZXRXaW5kb3dDYWxsYmFja1N0cnVj
dDsKICAgICBjYWxsYmFja1N0cnVjdC0+dHlwZSA9IDA7Ci0gICAgRGlzcGxheSogZGlzcGxheSA9
IHgxMURpc3BsYXkoKTsKLSAgICBpbnQgZGVwdGggPSBkaXNwbGF5RGVwdGgoKTsKLSAgICBjYWxs
YmFja1N0cnVjdC0+ZGlzcGxheSA9IGRpc3BsYXk7Ci0gICAgY2FsbGJhY2tTdHJ1Y3QtPmRlcHRo
ID0gZGVwdGg7Ci0KLSAgICBYVmlzdWFsSW5mbyB2aXN1YWxUZW1wbGF0ZTsKLSAgICB2aXN1YWxU
ZW1wbGF0ZS5zY3JlZW4gPSB4MTFTY3JlZW4oKTsKLSAgICB2aXN1YWxUZW1wbGF0ZS5kZXB0aCA9
IGRlcHRoOwotICAgIHZpc3VhbFRlbXBsYXRlLmNfY2xhc3MgPSBUcnVlQ29sb3I7Ci0gICAgaW50
IG51bU1hdGNoaW5nOwotICAgIFhWaXN1YWxJbmZvKiB2aXN1YWxJbmZvID0gWEdldFZpc3VhbElu
Zm8oZGlzcGxheSwgVmlzdWFsU2NyZWVuTWFzayB8IFZpc3VhbERlcHRoTWFzayB8IFZpc3VhbENs
YXNzTWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2
aXN1YWxUZW1wbGF0ZSwgJm51bU1hdGNoaW5nKTsKLSAgICBBU1NFUlQodmlzdWFsSW5mbyk7Ci0g
ICAgVmlzdWFsKiB2aXN1YWwgPSB2aXN1YWxJbmZvWzBdLnZpc3VhbDsKLSAgICBBU1NFUlQodmlz
dWFsKTsKLSAgICBYRnJlZSh2aXN1YWxJbmZvKTsKLQotICAgIGNhbGxiYWNrU3RydWN0LT52aXN1
YWwgPSB2aXN1YWw7Ci0gICAgY2FsbGJhY2tTdHJ1Y3QtPmNvbG9ybWFwID0gWENyZWF0ZUNvbG9y
bWFwKGRpc3BsYXksIHJvb3RXaW5kb3dJRCgpLCB2aXN1YWwsIEFsbG9jTm9uZSk7Ci0KLSAgICBt
X25wV2luZG93LnR5cGUgPSBOUFdpbmRvd1R5cGVEcmF3YWJsZTsKLSAgICBtX25wV2luZG93Lndp
bmRvdyA9IDA7CiAgICAgbV9ucFdpbmRvdy53c19pbmZvID0gY2FsbGJhY2tTdHJ1Y3Q7CiAKKyAg
ICBEaXNwbGF5KiBkaXNwbGF5ID0geDExRGlzcGxheSgpOworCisgICAgaWYgKG1faXNXaW5kb3dl
ZCkgeworICAgICAgICBtX25wV2luZG93LnR5cGUgPSBOUFdpbmRvd1R5cGVXaW5kb3c7CisgICAg
ICAgIGlmIChuZWVkc1hFbWJlZCkgeworI2lmIFBMQVRGT1JNKEdUSykKKyAgICAgICAgICAgIC8v
IEl0IHNlZW1zIGZsYXNoIG5lZWRzIHRoZSBzb2NrZXQgdG8gYmUgaW4gdGhlIHNhbWUgcHJvY2Vz
cywKKyAgICAgICAgICAgIC8vIEkgZ3Vlc3MgaXQgdXNlcyBnZGtfd2luZG93X2xvb2t1cCgpLCBz
ZSB3ZSBjcmVhdGUgYSBuZXcgc29ja2V0IGhlcmUKKyAgICAgICAgICAgIC8vIGNvbnRhaW5pbmcg
YSBwbHVnIHdpdGggdGhlIHVpIHByb2Nlc3Mgc29ja2V0IGVtYmVkZGVkCisgICAgICAgICAgICBt
X3BsYXRmb3JtUGx1Z2luV2lkZ2V0ID0gZ3RrX3BsdWdfbmV3KHdpbmRvd0lEKTsKKyAgICAgICAg
ICAgIEd0a1dpZGdldCogc29ja2V0ID0gZ3RrX3NvY2tldF9uZXcoKTsKKyAgICAgICAgICAgIGd0
a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIobV9wbGF0Zm9ybVBsdWdpbldpZGdldCksIHNv
Y2tldCk7CisgICAgICAgICAgICBndGtfd2lkZ2V0X3Nob3coc29ja2V0KTsKKyAgICAgICAgICAg
IGd0a193aWRnZXRfc2hvdyhtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0KTsKKworICAgICAgICAgICAg
bV9ucFdpbmRvdy53aW5kb3cgPSAodm9pZCopZ3RrX3NvY2tldF9nZXRfaWQoR1RLX1NPQ0tFVChz
b2NrZXQpKTsKKyAgICAgICAgICAgIEdka1dpbmRvdyogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRf
d2luZG93KHNvY2tldCk7CisgICAgICAgICAgICBjYWxsYmFja1N0cnVjdC0+ZGlzcGxheSA9IEdE
S19XSU5ET1dfWERJU1BMQVkod2luZG93KTsKKyAgICAgICAgICAgIGNhbGxiYWNrU3RydWN0LT52
aXN1YWwgPSBHREtfVklTVUFMX1hWSVNVQUwoZ2RrX3dpbmRvd19nZXRfdmlzdWFsKHdpbmRvdykp
OworICAgICAgICAgICAgY2FsbGJhY2tTdHJ1Y3QtPmRlcHRoID0gZ2RrX3Zpc3VhbF9nZXRfZGVw
dGgoZ2RrX3dpbmRvd19nZXRfdmlzdWFsKHdpbmRvdykpOworICAgICAgICAgICAgY2FsbGJhY2tT
dHJ1Y3QtPmNvbG9ybWFwID0gWENyZWF0ZUNvbG9ybWFwKGRpc3BsYXksIEdES19ST09UX1dJTkRP
VygpLCBjYWxsYmFja1N0cnVjdC0+dmlzdWFsLCBBbGxvY05vbmUpOworI2VuZGlmCisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIFhGbHVzaChkaXNwbGF5KTsKKyAgICB9IGVs
c2UgeworICAgICAgICBtX25wV2luZG93LnR5cGUgPSBOUFdpbmRvd1R5cGVEcmF3YWJsZTsKKyAg
ICAgICAgbV9ucFdpbmRvdy53aW5kb3cgPSAwOworCisgICAgICAgIGludCBkZXB0aCA9IGRpc3Bs
YXlEZXB0aCgpOworICAgICAgICBjYWxsYmFja1N0cnVjdC0+ZGlzcGxheSA9IGRpc3BsYXk7Cisg
ICAgICAgIGNhbGxiYWNrU3RydWN0LT5kZXB0aCA9IGRlcHRoOworCisgICAgICAgIFhWaXN1YWxJ
bmZvIHZpc3VhbFRlbXBsYXRlOworICAgICAgICB2aXN1YWxUZW1wbGF0ZS5zY3JlZW4gPSB4MTFT
Y3JlZW4oKTsKKyAgICAgICAgdmlzdWFsVGVtcGxhdGUuZGVwdGggPSBkZXB0aDsKKyAgICAgICAg
dmlzdWFsVGVtcGxhdGUuY19jbGFzcyA9IFRydWVDb2xvcjsKKyAgICAgICAgaW50IG51bU1hdGNo
aW5nOworICAgICAgICBYVmlzdWFsSW5mbyogdmlzdWFsSW5mbyA9IFhHZXRWaXN1YWxJbmZvKGRp
c3BsYXksIFZpc3VhbFNjcmVlbk1hc2sgfCBWaXN1YWxEZXB0aE1hc2sgfCBWaXN1YWxDbGFzc01h
c2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZp
c3VhbFRlbXBsYXRlLCAmbnVtTWF0Y2hpbmcpOworICAgICAgICBBU1NFUlQodmlzdWFsSW5mbyk7
CisgICAgICAgIFZpc3VhbCogdmlzdWFsID0gdmlzdWFsSW5mb1swXS52aXN1YWw7CisgICAgICAg
IEFTU0VSVCh2aXN1YWwpOworICAgICAgICBYRnJlZSh2aXN1YWxJbmZvKTsKKworICAgICAgICBj
YWxsYmFja1N0cnVjdC0+dmlzdWFsID0gdmlzdWFsOworICAgICAgICBjYWxsYmFja1N0cnVjdC0+
Y29sb3JtYXAgPSBYQ3JlYXRlQ29sb3JtYXAoZGlzcGxheSwgcm9vdFdpbmRvd0lEKCksIHZpc3Vh
bCwgQWxsb2NOb25lKTsKKyAgICB9CisKICAgICBjYWxsU2V0V2luZG93KCk7CiAKICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTE4Myw3ICsyMjgsMTMgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZv
cm1JbnZhbGlkYXRlKGNvbnN0IEludFJlY3QmKQogdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZv
cm1HZW9tZXRyeURpZENoYW5nZSgpCiB7CiAgICAgaWYgKG1faXNXaW5kb3dlZCkgewotICAgICAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICB1aW50NjRfdCB3aW5kb3dJRCA9IDA7CisjaWYg
UExBVEZPUk0oR1RLKQorICAgICAgICB3aW5kb3dJRCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihH
REtfV0lORE9XX1hJRChndGtfcGx1Z19nZXRfc29ja2V0X3dpbmRvdyhHVEtfUExVRyhtX3BsYXRm
b3JtUGx1Z2luV2lkZ2V0KSkpKTsKKyNlbmRpZgorICAgICAgICBJbnRSZWN0IGNsaXBSZWN0KG1f
Y2xpcFJlY3QpOworICAgICAgICBjbGlwUmVjdC5tb3ZlKC1tX2ZyYW1lUmVjdC54KCksIC1tX2Zy
YW1lUmVjdC55KCkpOworICAgICAgICBtX3BsdWdpbkNvbnRyb2xsZXItPndpbmRvd2VkUGx1Z2lu
R2VvbWV0cnlEaWRDaGFuZ2UobV9mcmFtZVJlY3QsIGNsaXBSZWN0LCB3aW5kb3dJRCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIwMywxMCArMjU0LDggQEAgdm9pZCBOZXRzY2FwZVBs
dWdpbjo6cGxhdGZvcm1WaXNpYmlsaXR5RGlkQ2hhbmdlKCkKIAogdm9pZCBOZXRzY2FwZVBsdWdp
bjo6cGxhdGZvcm1QYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3Qm
IGRpcnR5UmVjdCwgYm9vbCAvKmlzU25hcHNob3QqLykKIHsKLSAgICBpZiAobV9pc1dpbmRvd2Vk
KSB7Ci0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKG1faXNXaW5kb3dlZCkKICAg
ICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGlmICghbV9pc1N0YXJ0ZWQpIHsKICAgICAgICAg
Ly8gRklYTUU6IHdlIHNob3VsZCBwYWludCBhIG1pc3NpbmcgcGx1Z2luIGljb24uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaApp
bmRleCA1ZDBiYWNjLi5jMzU5NjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKQEAgLTEzNiw2ICsxMzYsMTIgQEAgcHVi
bGljOgogICAgIC8vIERlY3JlbWVudHMgYSBjb3VudGVyIHRoYXQsIHdoZW4gaXQgcmVhY2hlcyAw
LCBzdG9wcyBwcmV2ZW50aW5nIHRoZSBwbHVnLWluIGZyb20gYmVpbmcgZGVzdHJveWVkLgogICAg
IHZpcnR1YWwgdm9pZCB1bnByb3RlY3RQbHVnaW5Gcm9tRGVzdHJ1Y3Rpb24oKSA9IDA7CiAKKyNp
ZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKyAgICAvLyBDcmVhdGUgYSBwbHVnaW4gY29udGFp
bmVyIGZvciB3aW5kb3dlZCBwbHVnaW5zCisgICAgdmlydHVhbCB1aW50NjRfdCBjcmVhdGVQbHVn
aW5Db250YWluZXIoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdpbmRvd2VkUGx1Z2luR2VvbWV0
cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpID0gMDsKKyNlbmRpZgor
CiAgICAgLy8gSGVscGVyIGNsYXNzIGZvciBkZWxheWluZyBkZXN0cnVjdGlvbiBvZiBhIHBsdWct
aW4uCiAgICAgY2xhc3MgUGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3IgewogICAgIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3Bw
CmluZGV4IGQzNGZlMzYuLjA5YmMzMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApAQCAtNDgwLDcgKzQ4MCwxOSBAQCB2b2lkIFBs
dWdpblByb3h5OjpzZXRDb21wbGV4VGV4dElucHV0RW5hYmxlZChib29sIGNvbXBsZXhUZXh0SW5w
dXRFbmFibGVkKQogICAgIG1fcGx1Z2luQ29udHJvbGxlci0+c2V0Q29tcGxleFRleHRJbnB1dEVu
YWJsZWQoY29tcGxleFRleHRJbnB1dEVuYWJsZWQpOwogfQogI2VuZGlmCi0gICAgCisKKyNpZiBQ
TFVHSU5fQVJDSElURUNUVVJFKFgxMSkKK3ZvaWQgUGx1Z2luUHJveHk6OmNyZWF0ZVBsdWdpbkNv
bnRhaW5lcih1aW50NjRfdCYgd2luZG93SUQpCit7CisgICAgd2luZG93SUQgPSBtX3BsdWdpbkNv
bnRyb2xsZXItPmNyZWF0ZVBsdWdpbkNvbnRhaW5lcigpOworfQorCit2b2lkIFBsdWdpblByb3h5
Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGZyYW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdp
bmRvd0lEKQoreworICAgIG1fcGx1Z2luQ29udHJvbGxlci0+d2luZG93ZWRQbHVnaW5HZW9tZXRy
eURpZENoYW5nZShmcmFtZVJlY3QsIGNsaXBSZWN0LCB3aW5kb3dJRCk7Cit9CisjZW5kaWYKKwog
dm9pZCBQbHVnaW5Qcm94eTo6dXBkYXRlKGNvbnN0IEludFJlY3QmIHBhaW50ZWRSZWN0KQogewog
ICAgIGlmIChwYWludGVkUmVjdCA9PSBtX2ZyYW1lUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKaW5kZXggOWVjZGRhYi4uODNkNGI4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgK
QEAgLTEyMiw2ICsxMjIsMTAgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9p
ZCBzZXRDb21wbGV4VGV4dElucHV0RW5hYmxlZChib29sKTsKICNlbmRpZgorI2lmIFBMVUdJTl9B
UkNISVRFQ1RVUkUoWDExKQorICAgIHZvaWQgY3JlYXRlUGx1Z2luQ29udGFpbmVyKHVpbnQ2NF90
JiB3aW5kb3dJRCk7CisgICAgdm9pZCB3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
Y2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lEKTsKKyNlbmRpZgogCiAgICAgU3RyaW5nIG1fcGx1
Z2luUGF0aDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGJiMzI3YWIuLjczNWVjYzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
eHkubWVzc2FnZXMuaW4KQEAgLTYwLDYgKzYwLDE0IEBAIG1lc3NhZ2VzIC0+IFBsdWdpblByb3h5
IHsKICAgICAjIENoYW5nZSB3aGV0aGVyIGNvbXBsZXh0IHRleHQgaW5wdXQgaXMgZW5hYmxlZCBm
b3IgdGhpcyBwbHVnLWluLgogICAgIFNldENvbXBsZXhUZXh0SW5wdXRFbmFibGVkKGJvb2wgY29t
cGxleFRleHRJbnB1dEVuYWJsZWQpCiAjZW5kaWYKKworI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUo
WDExKQorICAgICMgQ3JlYXRlIHRoZSBwbHVnaW4gY29udGFpbmVyIGZvciB3aW5kb3dlZCBwbHVn
aW5zCisgICAgQ3JlYXRlUGx1Z2luQ29udGFpbmVyKCkgLT4gKHVpbnQ2NF90IHdpbmRvd0lEKQor
CisgICAgIyBVcGRhdGUgZ2VvbWV0cnkgb2Ygd2luZG93ZWQgcGx1Z2luIHdpZGdldAorICAgIFdp
bmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoV2ViQ29yZTo6SW50UmVjdCBmcmFtZVJlY3Qs
IFdlYkNvcmU6OkludFJlY3QgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lEKQorI2VuZGlmCiB9
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCmluZGV4IGQyMjAyZDkuLjQ3NDNiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJOUFJ1bnRpbWVVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJQbHVnaW4uaCIKICNpbmNs
dWRlICJTaGFyZWFibGVCaXRtYXAuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKICNpbmNsdWRlICJXZWJFdmVudC5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRl
ICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgpAQCAtMTE1Myw0ICsxMTU0LDE4IEBAIHZvaWQgUGx1
Z2luVmlldzo6ZGlkRmFpbExvYWQoV2ViRnJhbWUqIHdlYkZyYW1lLCBib29sIHdhc0NhbmNlbGxl
ZCkKICAgICBtX3BsdWdpbi0+ZnJhbWVEaWRGYWlsKHJlcXVlc3QtPnJlcXVlc3RJRCgpLCB3YXND
YW5jZWxsZWQpOwogfQogCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCit1aW50NjRfdCBQ
bHVnaW5WaWV3OjpjcmVhdGVQbHVnaW5Db250YWluZXIoKQoreworICAgIHVpbnQ2NF90IHdpbmRv
d0lEID0gMDsKKyAgICBtX3dlYlBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkNyZWF0ZVBsdWdpbkNvbnRhaW5lcigpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVQ
bHVnaW5Db250YWluZXI6OlJlcGx5KHdpbmRvd0lEKSk7CisgICAgcmV0dXJuIHdpbmRvd0lEOwor
fQorCit2b2lkIFBsdWdpblZpZXc6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBj
bGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpCit7CisgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OldpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoZnJhbWVS
ZWN0LCBjbGlwUmVjdCwgd2luZG93SUQpKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5o
CmluZGV4IGViYjBmYTEuLjg2MjdjMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtMTUwLDYgKzE1MCwxMCBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgYm9vbCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKICAgICB2aXJ0dWFsIHZv
aWQgcHJvdGVjdFBsdWdpbkZyb21EZXN0cnVjdGlvbigpOwogICAgIHZpcnR1YWwgdm9pZCB1bnBy
b3RlY3RQbHVnaW5Gcm9tRGVzdHJ1Y3Rpb24oKTsKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgx
MSkKKyAgICB2aXJ0dWFsIHVpbnQ2NF90IGNyZWF0ZVBsdWdpbkNvbnRhaW5lcigpOworICAgIHZp
cnR1YWwgdm9pZCB3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIHVp
bnQ2NF90IHdpbmRvd0lEKTsKKyNlbmRpZgogCiAgICAgLy8gV2ViRnJhbWU6OkxvYWRMaXN0ZW5l
cgogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkKFdlYkZyYW1lKik7Cg==
</data>
<flag name="commit-queue"
          id="87156"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94063</attachid>
            <date>2011-05-19 05:43:41 -0700</date>
            <delta_ts>2011-07-15 06:14:54 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-windowed-plugins2.diff</filename>
            <type>text/plain</type>
            <size>27150</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyMGU2MWU2Li45NzdhMjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAg
QEAKKzIwMTEtMDUtMTkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtd
IEluaXRpYWwgd2luZG93ZWQgcGx1Z2lucyBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEwNjUKKworICAgICAgICAqIFBsdWdp
blByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luQ29udHJvbGxlclByb3h5OjpjcmVhdGVQbHVnaW5Db250YWluZXIpOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFu
Z2UpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAg
ICAod2Via2l0V2ViVmlld0Jhc2VDb250YWluZXJBZGQpOiBDcmVhdGUgYSBzdHJ1Y3QgZm9yIGV2
ZXJ5IGNoaWxkCisgICAgICAgIHdpZGdldCB0byBzdG9yZSB0aGUgZ2VvbWV0cnkuCisgICAgICAg
ICh3ZWJraXRXZWJWaWV3QmFzZUNvbnRhaW5lclJlbW92ZSk6IEltcGxlbWVudCBHdGtDb250YWlu
ZXI6OnJlbW92ZSgpLgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VDb250YWluZXJGb3JhbGwp
OiBJbXBsZW1lbnQgR3RrQ29udGFpbmVyOjpmb3JhbGwoKS4KKyAgICAgICAgKHdlYmtpdFdlYlZp
ZXdCYXNlR2V0Q2hpbGQpOiBHZXQgdGhlIGNoaWxkIHN0cnVjdCBmb3IgYSBnaXZlbgorICAgICAg
ICBjaGlsZCB3aWRnZXQuCisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUNoaWxkTW92ZVJlc2l6
ZSk6IFNldCBhIG5ldyBnZW9tZXRyeSBmb3IgYSBjaGlsZCB3aWRnZXQuCisgICAgICAgICh3ZWJr
aXRfd2ViX3ZpZXdfYmFzZV9pbml0KToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlU2l6ZUFs
bG9jYXRlKTogQWxsb2NhdGUgY2hpbGQgd2lkZ2V0cy4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmll
d19iYXNlX2NsYXNzX2luaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdCYXNlUHJpdmF0ZS5oOiBBZGQgd2Via2l0V2ViVmlld0Jhc2VTaXplQWxsb2NhdGUoKS4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjogQWRkIGNyZWF0ZVBsdWdpbkNvbnRhaW5lcgorICAg
ICAgICBhbmQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZSBtZXNzYWdlcy4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6
OnBsdWdpbldpbmRvd01hcCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRl
UGx1Z2luQ29udGFpbmVyKTogQ3JlYXRlIGEgR3RrU29ja2V0CisgICAgICAgIGFzIGNvbnRhaW5l
ciB3aWRnZXQgZm9yIHdpbmRvd2VkIHBsdWdpbnMuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZSk6IENhbGxzCisgICAgICAgIHdl
YmtpdFdlYlZpZXdCYXNlU2l6ZUFsbG9jYXRlKCkgdG8gdXBkYXRlIHRoZSBwbHVnaW4gd2lkZ2V0
IGdlb21ldHJ5LgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJQYWdlUHJveHlRdC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlUGx1Z2luQ29udGFpbmVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hh
bmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6TmV0c2NhcGVQbHVnaW4p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVn
aW5YMTEuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1Qb3N0
SW5pdGlhbGl6ZSk6IEZvciB3aW5kb3dlZAorICAgICAgICBwbHVnaW5zLCBhc2sgdGhlIHVpIHBy
b2Nlc3MgdG8gY3JlYXRlIGEgcGx1Z2luIGNvbnRhaW5lci4KKyAgICAgICAgKFdlYktpdDo6TmV0
c2NhcGVQbHVnaW46OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UpOiBGb3Igd2luZG93ZWQKKyAg
ICAgICAgcGx1Z2lucyBub3RpZnkgdGhlIHVpIHByb2Nlc3MgdGhhdCB0aGUgcGx1Z2luIGdlb21l
dHJ5IGhhcyBjaGFuZ2VkLgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZv
cm1QYWludCk6IERvIG5vdGhpbmcgZm9yIHdpbmRvd2VkCisgICAgICAgIHBsdWdpbnMsIHRoZSBj
YWxsZXIgYWxyZWFkeSBjYWxscyBjYWxsU2V0V2luZG93KCkuCisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6Y3JlYXRl
UGx1Z2luQ29udGFpbmVyKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OndpbmRvd2Vk
UGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5t
ZXNzYWdlcy5pbjogQWRkCisgICAgICAgIGNyZWF0ZVBsdWdpbkNvbnRhaW5lciBhbmQgd2luZG93
ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZSBtZXNzYWdlcy4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmNy
ZWF0ZVBsdWdpbkNvbnRhaW5lcik6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OndpbmRv
d2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3Lmg6CisKIDIwMTEtMDUtMTggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIEFzIG9yaWdpbmFsbHkgcmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxz
c29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250
cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250
cm9sbGVyUHJveHkuY3BwCmluZGV4IDU0MTFmYjcuLmIxNzc5ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAg
LTYwOSw2ICs2MDksMjAgQEAgYm9vbCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnRyeVRvU2hvcnRD
aXJjdWl0RXZhbHVhdGUoTlBPYmplY3QqIG5wT2JqZWN0LCBjb25zdAogICAgIHJldHVybiB0cnVl
OwogfQogCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCit1aW50NjRfdCBQbHVnaW5Db250
cm9sbGVyUHJveHk6OmNyZWF0ZVBsdWdpbkNvbnRhaW5lcigpCit7CisgICAgdWludDY0X3Qgd2lu
ZG93SUQgPSAwOworICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNz
YWdlczo6UGx1Z2luUHJveHk6OkNyZWF0ZVBsdWdpbkNvbnRhaW5lcigpLCBNZXNzYWdlczo6UGx1
Z2luUHJveHk6OkNyZWF0ZVBsdWdpbkNvbnRhaW5lcjo6UmVwbHkod2luZG93SUQpLCBtX3BsdWdp
bkluc3RhbmNlSUQpOworICAgIHJldHVybiB3aW5kb3dJRDsKK30KKwordm9pZCBQbHVnaW5Db250
cm9sbGVyUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50UmVj
dCYgZnJhbWVSZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQp
Cit7CisgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdp
blByb3h5OjpXaW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGZyYW1lUmVjdCwgY2xpcFJl
Y3QsIHdpbmRvd0lEKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKK30KKyNlbmRpZgorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5o
CmluZGV4IDA0Mzc1ZDAuLjhmNjYwYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvUGx1
Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaApAQCAtMTA3LDYgKzEwNywxMCBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBnZXRBdXRoZW50aWNhdGlvbkluZm8oY29uc3QgV2Vi
Q29yZTo6UHJvdGVjdGlvblNwYWNlJiwgU3RyaW5nJiB1c2VybmFtZSwgU3RyaW5nJiBwYXNzd29y
ZCk7CiAgICAgdmlydHVhbCB2b2lkIHByb3RlY3RQbHVnaW5Gcm9tRGVzdHJ1Y3Rpb24oKTsKICAg
ICB2aXJ0dWFsIHZvaWQgdW5wcm90ZWN0UGx1Z2luRnJvbURlc3RydWN0aW9uKCk7CisjaWYgUExV
R0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgdmlydHVhbCB1aW50NjRfdCBjcmVhdGVQbHVnaW5D
b250YWluZXIoKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENo
YW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCk7CisjZW5kaWYKICAgICAKICAgICAv
LyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQgZnJhbWVEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2
NF90IHJlcXVlc3RJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggYmMzN2NiOS4uMmZiNmYzNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcApAQCAtNDksNiArNDksNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlIHsK
KyAgICBHTGlzdCogY2hpbGRyZW47CiAgICAgT3duUHRyPFBhZ2VDbGllbnRJbXBsPiBwYWdlQ2xp
ZW50OwogICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IHBhZ2VQcm94eTsKICAgICBnYm9vbGVhbiBp
c1BhZ2VBY3RpdmU7CkBAIC01Niw2ICs1NywxMSBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZSB7CiAgICAgR3RrQ2xpY2tDb3VudGVyIGNsaWNrQ291bnRlcjsKIH07CiAKK3R5cGVk
ZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2hpbGQgeworICAgIEd0a1dpZGdldCogd2lkZ2V0Owor
ICAgIEludFJlY3QgZ2VvbWV0cnk7Cit9IFdlYktpdFdlYlZpZXdDaGlsZDsKKwogR19ERUZJTkVf
VFlQRShXZWJLaXRXZWJWaWV3QmFzZSwgd2Via2l0X3dlYl92aWV3X2Jhc2UsIEdUS19UWVBFX0NP
TlRBSU5FUikKIAogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VSZWFsaXplKEd0a1dpZGdl
dCogd2lkZ2V0KQpAQCAtMTE0LDcgKzEyMCw4MiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3
QmFzZVJlYWxpemUoR3RrV2lkZ2V0KiB3aWRnZXQpCiAKIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZp
ZXdCYXNlQ29udGFpbmVyQWRkKEd0a0NvbnRhaW5lciogY29udGFpbmVyLCBHdGtXaWRnZXQqIHdp
ZGdldCkKIHsKKyAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlldyA9IFdFQktJVF9XRUJfVklF
V19CQVNFKGNvbnRhaW5lcik7CisgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0g
d2ViVmlldy0+cHJpdjsKKworICAgIFdlYktpdFdlYlZpZXdDaGlsZCogdmlld0NoaWxkID0gZ19z
bGljZV9uZXcoV2ViS2l0V2ViVmlld0NoaWxkKTsKKyAgICB2aWV3Q2hpbGQtPndpZGdldCA9IHdp
ZGdldDsKKyAgICBHdGtBbGxvY2F0aW9uIGNoaWxkQWxsb2NhdGlvbjsKKyAgICBndGtfd2lkZ2V0
X2dldF9hbGxvY2F0aW9uKHdpZGdldCwgJmNoaWxkQWxsb2NhdGlvbik7CisgICAgdmlld0NoaWxk
LT5nZW9tZXRyeSA9IGNoaWxkQWxsb2NhdGlvbjsKKwogICAgIGd0a193aWRnZXRfc2V0X3BhcmVu
dCh3aWRnZXQsIEdUS19XSURHRVQoY29udGFpbmVyKSk7CisKKyAgICBwcml2LT5jaGlsZHJlbiA9
IGdfbGlzdF9hcHBlbmQocHJpdi0+Y2hpbGRyZW4sIHZpZXdDaGlsZCk7Cit9CisKK3N0YXRpYyB2
b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ29udGFpbmVyUmVtb3ZlKEd0a0NvbnRhaW5lciogY29udGFp
bmVyLCBHdGtXaWRnZXQqIHdpZGdldCkKK3sKKyAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmll
dyA9IFdFQktJVF9XRUJfVklFV19CQVNFKGNvbnRhaW5lcik7CisgICAgV2ViS2l0V2ViVmlld0Jh
c2VQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKyAgICBHdGtXaWRnZXQqIHdpZGdldENv
bnRhaW5lciA9IEdUS19XSURHRVQoY29udGFpbmVyKTsKKworICAgIGZvciAoR0xpc3QqIGNoaWxk
cmVuID0gcHJpdi0+Y2hpbGRyZW47IGNoaWxkcmVuOyBjaGlsZHJlbiA9IGNoaWxkcmVuLT5uZXh0
KSB7CisgICAgICAgIFdlYktpdFdlYlZpZXdDaGlsZCogdmlld0NoaWxkID0gc3RhdGljX2Nhc3Q8
V2ViS2l0V2ViVmlld0NoaWxkKj4oY2hpbGRyZW4tPmRhdGEpOworCisgICAgICAgIGlmICh2aWV3
Q2hpbGQtPndpZGdldCA9PSB3aWRnZXQpIHsKKyAgICAgICAgICAgIGdib29sZWFuIHdhc1Zpc2li
bGUgPSBndGtfd2lkZ2V0X2dldF92aXNpYmxlKHdpZGdldCk7CisKKyAgICAgICAgICAgIGd0a193
aWRnZXRfdW5wYXJlbnQod2lkZ2V0KTsKKworICAgICAgICAgICAgcHJpdi0+Y2hpbGRyZW4gPSBn
X2xpc3RfcmVtb3ZlX2xpbmsocHJpdi0+Y2hpbGRyZW4sIGNoaWxkcmVuKTsKKyAgICAgICAgICAg
IGdfbGlzdF9mcmVlKGNoaWxkcmVuKTsKKyAgICAgICAgICAgIGdfc2xpY2VfZnJlZShXZWJLaXRX
ZWJWaWV3Q2hpbGQsIHZpZXdDaGlsZCk7CisKKyAgICAgICAgICAgIGlmICh3YXNWaXNpYmxlICYm
IGd0a193aWRnZXRfZ2V0X3Zpc2libGUod2lkZ2V0Q29udGFpbmVyKSkKKyAgICAgICAgICAgICAg
ICBndGtfd2lkZ2V0X3F1ZXVlX3Jlc2l6ZSh3aWRnZXRDb250YWluZXIpOworCisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZvaWQgd2Via2l0V2ViVmll
d0Jhc2VDb250YWluZXJGb3JhbGwoR3RrQ29udGFpbmVyICpjb250YWluZXIsIGdib29sZWFuIGlu
Y2x1ZGVJbnRlcm5hbHMsIEd0a0NhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciBjYWxsYmFja0Rh
dGEpCit7CisgICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVdf
QkFTRShjb250YWluZXIpOworICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdl
YlZpZXctPnByaXY7CisKKyAgICBHTGlzdCogY2hpbGRyZW4gPSBwcml2LT5jaGlsZHJlbjsKKyAg
ICB3aGlsZSAoY2hpbGRyZW4pIHsKKyAgICAgICAgV2ViS2l0V2ViVmlld0NoaWxkKiB2aWV3Q2hp
bGQgPSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJWaWV3Q2hpbGQqPihjaGlsZHJlbi0+ZGF0YSk7Cisg
ICAgICAgIGNoaWxkcmVuID0gY2hpbGRyZW4tPm5leHQ7CisgICAgICAgICgqIGNhbGxiYWNrKSh2
aWV3Q2hpbGQtPndpZGdldCwgY2FsbGJhY2tEYXRhKTsKKyAgICB9Cit9CisKKworc3RhdGljIFdl
YktpdFdlYlZpZXdDaGlsZCogd2Via2l0V2ViVmlld0Jhc2VHZXRDaGlsZChXZWJLaXRXZWJWaWV3
QmFzZSogd2ViVmlldywgR3RrV2lkZ2V0KiBjaGlsZCkKK3sKKyAgICBXZWJLaXRXZWJWaWV3Q2hp
bGQqIHZpZXdDaGlsZCA9IDA7CisgICAgZm9yIChHTGlzdCogY2hpbGRyZW4gPSB3ZWJWaWV3LT5w
cml2LT5jaGlsZHJlbjsgY2hpbGRyZW47IGNoaWxkcmVuID0gY2hpbGRyZW4tPm5leHQpIHsKKyAg
ICAgICAgdmlld0NoaWxkID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2ViVmlld0NoaWxkKj4oY2hpbGRy
ZW4tPmRhdGEpOworCisgICAgICAgIGlmICh2aWV3Q2hpbGQtPndpZGdldCA9PSBjaGlsZCkKKyAg
ICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiB2aWV3Q2hpbGQ7Cit9CisKK3Zv
aWQgd2Via2l0V2ViVmlld0Jhc2VDaGlsZE1vdmVSZXNpemUoV2ViS2l0V2ViVmlld0Jhc2UqIHdl
YlZpZXcsIEd0a1dpZGdldCogY2hpbGQsIGNvbnN0IEludFJlY3QmIGNoaWxkUmVjdCkKK3sKKyAg
ICBXZWJLaXRXZWJWaWV3Q2hpbGQqIHZpZXdDaGlsZCA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0Q2hp
bGQod2ViVmlldywgY2hpbGQpOworCisgICAgaWYgKHZpZXdDaGlsZC0+Z2VvbWV0cnkgPT0gY2hp
bGRSZWN0KQorICAgICAgICByZXR1cm47CisKKyAgICB2aWV3Q2hpbGQtPmdlb21ldHJ5ID0gY2hp
bGRSZWN0OworICAgIGd0a193aWRnZXRfcXVldWVfcmVzaXplX25vX3JlZHJhdyhHVEtfV0lER0VU
KHdlYlZpZXcpKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VGaW5hbGl6ZShH
T2JqZWN0KiBnb2JqZWN0KQpAQCAtMTQwLDYgKzIyMSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfdmlld19iYXNlX2luaXQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQog
ICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IG5ldyBXZWJLaXRXZWJWaWV3QmFz
ZVByaXZhdGUoKTsKICAgICB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdiA9IHByaXY7CiAKKyAgICBw
cml2LT5jaGlsZHJlbiA9IDA7CiAgICAgcHJpdi0+aXNQYWdlQWN0aXZlID0gVFJVRTsKIAogICAg
IGd0a193aWRnZXRfc2V0X2Nhbl9mb2N1cyhHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNlKSwg
VFJVRSk7CkBAIC0xODIsNiArMjY0LDE3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNl
U2l6ZUFsbG9jYXRlKEd0a1dpZGdldCogd2lkZ2V0LCBHdGtBbGxvY2F0aW9uKiBhbGxvCiAgICAg
V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7CiAKICAg
ICBHVEtfV0lER0VUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19iYXNlX3BhcmVudF9jbGFzcyktPnNp
emVfYWxsb2NhdGUod2lkZ2V0LCBhbGxvY2F0aW9uKTsKKworICAgIGZvciAoR0xpc3QqIGNoaWxk
cmVuID0gcHJpdi0+Y2hpbGRyZW47IGNoaWxkcmVuOyBjaGlsZHJlbiA9IGNoaWxkcmVuLT5uZXh0
KSB7CisgICAgICAgIFdlYktpdFdlYlZpZXdDaGlsZCogdmlld0NoaWxkID0gc3RhdGljX2Nhc3Q8
V2ViS2l0V2ViVmlld0NoaWxkKj4oY2hpbGRyZW4tPmRhdGEpOworCisgICAgICAgIGlmICghZ3Rr
X3dpZGdldF9nZXRfdmlzaWJsZSh2aWV3Q2hpbGQtPndpZGdldCkpCisgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICBHdGtBbGxvY2F0aW9uIGNoaWxkQWxsb2NhdGlvbih2aWV3Q2hpbGQt
Pmdlb21ldHJ5KTsKKyAgICAgICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKHZpZXdDaGlsZC0+
d2lkZ2V0LCAmY2hpbGRBbGxvY2F0aW9uKTsKKyAgICB9CisKICAgICBwcml2LT5wYWdlUHJveHkt
PmRyYXdpbmdBcmVhKCktPnNldFNpemUoSW50U2l6ZShhbGxvY2F0aW9uLT53aWR0aCwgYWxsb2Nh
dGlvbi0+aGVpZ2h0KSwgSW50U2l6ZSgpKTsKIH0KIApAQCAtMzA2LDYgKzM5OSw4IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfdmlld19iYXNlX2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0Jhc2VD
bGFzcyogd2Via2l0V2ViVmllCiAKICAgICBHdGtDb250YWluZXJDbGFzcyogY29udGFpbmVyQ2xh
c3MgPSBHVEtfQ09OVEFJTkVSX0NMQVNTKHdlYmtpdFdlYlZpZXdCYXNlQ2xhc3MpOwogICAgIGNv
bnRhaW5lckNsYXNzLT5hZGQgPSB3ZWJraXRXZWJWaWV3QmFzZUNvbnRhaW5lckFkZDsKKyAgICBj
b250YWluZXJDbGFzcy0+cmVtb3ZlID0gd2Via2l0V2ViVmlld0Jhc2VDb250YWluZXJSZW1vdmU7
CisgICAgY29udGFpbmVyQ2xhc3MtPmZvcmFsbCA9IHdlYmtpdFdlYlZpZXdCYXNlQ29udGFpbmVy
Rm9yYWxsOwogfQogCiBXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2VDcmVhdGUo
V2ViQ29udGV4dCogY29udGV4dCwgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZS5oCmluZGV4IDNkMGVkNzQuLmY0MmUxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5o
CkBAIC00MSw2ICs0MSw4IEBAIEd0a0lNQ29udGV4dCogd2Via2l0V2ViVmlld0Jhc2VHZXRJTUNv
bnRleHQoV2ViS2l0V2ViVmlld0Jhc2UqKTsKIAogV2ViUGFnZVByb3h5KiB3ZWJraXRXZWJWaWV3
QmFzZUdldFBhZ2UoV2ViS2l0V2ViVmlld0Jhc2UqKTsKIAordm9pZCB3ZWJraXRXZWJWaWV3QmFz
ZUNoaWxkTW92ZVJlc2l6ZShXZWJLaXRXZWJWaWV3QmFzZSosIEd0a1dpZGdldCosIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmKTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmIC8vIFdlYktpdFdlYlZp
ZXdCYXNlUHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5k
ZXggZDk4OGFkNi4uYzI3YWY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaApAQCAtNzU1LDYgKzc1NSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVDaGls
ZFdpbmRvd0dlb21ldHJ5VXBkYXRlKGNvbnN0IFdpbmRvd0dlb21ldHJ5Jik7CiAjZW5kaWYKIAor
I2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAgIHZvaWQgY3JlYXRlUGx1Z2luQ29udGFp
bmVyKHVpbnQ2NF90JiB3aW5kb3dJRCk7CisgICAgdm9pZCB3aW5kb3dlZFBsdWdpbkdlb21ldHJ5
RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lEKTsKKyNlbmRpZgorCiAgICAg
UGFnZUNsaWVudCogbV9wYWdlQ2xpZW50OwogICAgIFdlYkxvYWRlckNsaWVudCBtX2xvYWRlckNs
aWVudDsKICAgICBXZWJQb2xpY3lDbGllbnQgbV9wb2xpY3lDbGllbnQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA5ZTUyZTRi
Li40M2Y1ZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KQEAgLTI1Miw2ICsyNTIsMTIgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVBy
b3h5IHsKICAgICBTY2hlZHVsZUNoaWxkV2luZG93R2VvbWV0cnlVcGRhdGUoV2ViS2l0OjpXaW5k
b3dHZW9tZXRyeSBnZW9tZXRyeSkKICNlbmRpZgogCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShY
MTEpCisgICAgIyBYMTEgd2luZG93ZWQgcGx1Z2luIG1lc3NhZ2VzCisgICAgQ3JlYXRlUGx1Z2lu
Q29udGFpbmVyKCkgLT4gKHVpbnQ2NF90IHdpbmRvd0lEKQorICAgIFdpbmRvd2VkUGx1Z2luR2Vv
bWV0cnlEaWRDaGFuZ2UoV2ViQ29yZTo6SW50UmVjdCBmcmFtZVJlY3QsIFdlYkNvcmU6OkludFJl
Y3QgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lEKQorI2VuZGlmCisKICAgICAjIFNlYXJjaCBw
b3B1cCBtZW51cwogICAgIFNhdmVSZWNlbnRTZWFyY2hlcyhXVEY6OlN0cmluZyBuYW1lLCBWZWN0
b3I8U3RyaW5nPiBzZWFyY2hJdGVtcykKICAgICBMb2FkUmVjZW50U2VhcmNoZXMoV1RGOjpTdHJp
bmcgbmFtZSkgLT4gKFZlY3RvcjxTdHJpbmc+IHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcAppbmRleCAzOTNiNGM3Li5jYjg1MDQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsu
Y3BwCkBAIC0zMCw2ICszMCwxMCBAQAogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQu
aCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBs
LmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgiCisjaWZuZGVmIEdUS19B
UElfVkVSU0lPTl8yCisjaW5jbHVkZSA8Z3RrL2d0a3guaD4KKyNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIApAQCAtNTksNCArNjMsNDEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZWNl
bnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYpCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAordHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBHdGtXaWRnZXQqID4gUGx1
Z2luV2luZG93TWFwOworc3RhdGljIFBsdWdpbldpbmRvd01hcCYgcGx1Z2luV2luZG93TWFwKCkK
K3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFBsdWdpbldpbmRvd01hcCwgbWFwLCAoKSk7Cisg
ICAgcmV0dXJuIG1hcDsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZVBsdWdpbkNvbnRh
aW5lcih1aW50NjRfdCYgd2luZG93SUQpCit7CisgICAgR3RrV2lkZ2V0KiBzb2NrZXQgPSBndGtf
c29ja2V0X25ldygpOworICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIodmlld1dp
ZGdldCgpKSwgc29ja2V0KTsKKyAgICBndGtfd2lkZ2V0X3Nob3coc29ja2V0KTsKKworICAgIHdp
bmRvd0lEID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGd0a19zb2NrZXRfZ2V0X2lkKEdUS19TT0NL
RVQoc29ja2V0KSkpOworICAgIHBsdWdpbldpbmRvd01hcCgpLnNldCh3aW5kb3dJRCwgc29ja2V0
KTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFu
Z2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpCit7CisgICAgR3RrV2lkZ2V0KiBwbHVn
aW4gPSBwbHVnaW5XaW5kb3dNYXAoKS5nZXQod2luZG93SUQpOworCisgICAgaWYgKGd0a193aWRn
ZXRfZ2V0X3JlYWxpemVkKHBsdWdpbikpIHsKKyAgICAgICAgR2RrUmVjdGFuZ2xlIGNsaXAoY2xp
cFJlY3QpOworI2lmZGVmIEdUS19BUElfVkVSU0lPTl8yCisgICAgICAgIEdka1JlZ2lvbiogY2xp
cFJlZ2lvbiA9IGdka19yZWdpb25fcmVjdGFuZ2xlKCZjbGlwKTsKKyAgICAgICAgZ2RrX3dpbmRv
d19zaGFwZV9jb21iaW5lX3JlZ2lvbihndGtfd2lkZ2V0X2dldF93aW5kb3cocGx1Z2luKSwgY2xp
cFJlZ2lvbiwgMCwgMCk7CisgICAgICAgIGdka19yZWdpb25fZGVzdHJveShjbGlwUmVnaW9uKTsK
KyNlbHNlCisgICAgICAgIGNhaXJvX3JlZ2lvbl90KiBjbGlwUmVnaW9uID0gY2Fpcm9fcmVnaW9u
X2NyZWF0ZV9yZWN0YW5nbGUoJmNsaXApOworICAgICAgICBnZGtfd2luZG93X3NoYXBlX2NvbWJp
bmVfcmVnaW9uKGd0a193aWRnZXRfZ2V0X3dpbmRvdyhwbHVnaW4pLCBjbGlwUmVnaW9uLCAwLCAw
KTsKKyAgICAgICAgY2Fpcm9fcmVnaW9uX2Rlc3Ryb3koY2xpcFJlZ2lvbik7CisjZW5kaWYKKyAg
ICB9CisKKyAgICB3ZWJraXRXZWJWaWV3QmFzZUNoaWxkTW92ZVJlc2l6ZShXRUJLSVRfV0VCX1ZJ
RVdfQkFTRSh2aWV3V2lkZ2V0KCkpLCBwbHVnaW4sIGZyYW1lUmVjdCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dl
YlBhZ2VQcm94eVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQYWdlUHJv
eHlRdC5jcHAKaW5kZXggNjE1Y2Q4ZC4uN2EzMDE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1dlYlBhZ2VQcm94eVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvV2ViUGFnZVByb3h5UXQuY3BwCkBAIC00Niw0ICs0NiwxNCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTdHJp
bmc+JikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6Y3Jl
YXRlUGx1Z2luQ29udGFpbmVyKHVpbnQ2NF90JiB3aW5kb3dJRCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURp
ZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
Y3BwCmluZGV4IGRlNjRiMDEuLmUzODgzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApA
QCAtODAsNiArODAsOSBAQCBOZXRzY2FwZVBsdWdpbjo6TmV0c2NhcGVQbHVnaW4oUGFzc1JlZlB0
cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gcGx1Z2luTW9kdWxlKQogI2VsaWYgUExVR0lOX0FSQ0hJ
VEVDVFVSRShYMTEpCiAgICAgLCBtX2RyYXdhYmxlKDApCiAgICAgLCBtX3BsdWdpbkRpc3BsYXko
MCkKKyNpZiBQTEFURk9STShHVEspCisgICAgLCBtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0KDApCisj
ZW5kaWYKICNlbmRpZgogewogICAgIG1fbnBwLm5kYXRhID0gdGhpczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmgKaW5kZXggMjhlNTU3Zi4uYjkwMDA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKQEAg
LTI0OSw2ICsyNDksOSBAQCBwcml2YXRlOgogI2VsaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEp
CiAgICAgUGl4bWFwIG1fZHJhd2FibGU7CiAgICAgRGlzcGxheSogbV9wbHVnaW5EaXNwbGF5Owor
I2lmIFBMQVRGT1JNKEdUSykKKyAgICBHdGtXaWRnZXQqIG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQ7
CisjZW5kaWYKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDEx
LmNwcAppbmRleCA5MDcyNDEyLi5jYjQxZDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBl
UGx1Z2luWDExLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVn
aW4uaCIKIAorI2luY2x1ZGUgIlBsdWdpbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXZWJFdmVu
dC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpAQCAtNDIsNiArNDMsMTAgQEAKICNpbmNsdWRlICJQbGF0
Zm9ybUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCiAjaW5jbHVkZSA8
Y2Fpcm8vY2Fpcm8teGxpYi5oPgorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpZm5kZWYgR1RLX0FQ
SV9WRVJTSU9OXzIKKyNpbmNsdWRlIDxndGsvZ3RreC5oPgorI2VuZGlmCiAjaW5jbHVkZSA8Z2Rr
L2dka3guaD4KICNpbmNsdWRlIDxXZWJDb3JlL0d0a1ZlcnNpb25pbmcuaD4KICNlbmRpZgpAQCAt
MTI3LDM4ICsxMzIsNzggQEAgc3RhdGljIGlubGluZSBpbnQgeDExU2NyZWVuKCkKIAogYm9vbCBO
ZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1Qb3N0SW5pdGlhbGl6ZSgpCiB7Ci0gICAgaWYgKG1faXNX
aW5kb3dlZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFdpbmRvdyB3aW5kb3dJRCA9IDA7
CisgICAgYm9vbCBuZWVkc1hFbWJlZCA9IGZhbHNlOworICAgIGlmIChtX2lzV2luZG93ZWQpIHsK
KyAgICAgICAgTlBQX0dldFZhbHVlKE5QUFZwbHVnaW5OZWVkc1hFbWJlZCwgJm5lZWRzWEVtYmVk
KTsKKyAgICAgICAgaWYgKG5lZWRzWEVtYmVkKSB7CisgICAgICAgICAgICB3aW5kb3dJRCA9IHN0
YXRpY19jYXN0PFdpbmRvdz4obV9wbHVnaW5Db250cm9sbGVyLT5jcmVhdGVQbHVnaW5Db250YWlu
ZXIoKSk7CisgICAgICAgICAgICBpZiAoIXdpbmRvd0lEKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CiAKICAgICBpZiAo
IShtX3BsdWdpbkRpc3BsYXkgPSBnZXRQbHVnaW5EaXNwbGF5KCkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0KiBjYWxsYmFja1N0cnVjdCA9
IG5ldyBOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0OwogICAgIGNhbGxiYWNrU3RydWN0LT50eXBl
ID0gMDsKLSAgICBEaXNwbGF5KiBkaXNwbGF5ID0geDExRGlzcGxheSgpOwotICAgIGludCBkZXB0
aCA9IGRpc3BsYXlEZXB0aCgpOwotICAgIGNhbGxiYWNrU3RydWN0LT5kaXNwbGF5ID0gZGlzcGxh
eTsKLSAgICBjYWxsYmFja1N0cnVjdC0+ZGVwdGggPSBkZXB0aDsKLQotICAgIFhWaXN1YWxJbmZv
IHZpc3VhbFRlbXBsYXRlOwotICAgIHZpc3VhbFRlbXBsYXRlLnNjcmVlbiA9IHgxMVNjcmVlbigp
OwotICAgIHZpc3VhbFRlbXBsYXRlLmRlcHRoID0gZGVwdGg7Ci0gICAgdmlzdWFsVGVtcGxhdGUu
Y19jbGFzcyA9IFRydWVDb2xvcjsKLSAgICBpbnQgbnVtTWF0Y2hpbmc7Ci0gICAgWFZpc3VhbElu
Zm8qIHZpc3VhbEluZm8gPSBYR2V0VmlzdWFsSW5mbyhkaXNwbGF5LCBWaXN1YWxTY3JlZW5NYXNr
IHwgVmlzdWFsRGVwdGhNYXNrIHwgVmlzdWFsQ2xhc3NNYXNrLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZpc3VhbFRlbXBsYXRlLCAmbnVtTWF0Y2hpbmcp
OwotICAgIEFTU0VSVCh2aXN1YWxJbmZvKTsKLSAgICBWaXN1YWwqIHZpc3VhbCA9IHZpc3VhbElu
Zm9bMF0udmlzdWFsOwotICAgIEFTU0VSVCh2aXN1YWwpOwotICAgIFhGcmVlKHZpc3VhbEluZm8p
OwotCi0gICAgY2FsbGJhY2tTdHJ1Y3QtPnZpc3VhbCA9IHZpc3VhbDsKLSAgICBjYWxsYmFja1N0
cnVjdC0+Y29sb3JtYXAgPSBYQ3JlYXRlQ29sb3JtYXAoZGlzcGxheSwgcm9vdFdpbmRvd0lEKCks
IHZpc3VhbCwgQWxsb2NOb25lKTsKLQotICAgIG1fbnBXaW5kb3cudHlwZSA9IE5QV2luZG93VHlw
ZURyYXdhYmxlOwotICAgIG1fbnBXaW5kb3cud2luZG93ID0gMDsKICAgICBtX25wV2luZG93Lndz
X2luZm8gPSBjYWxsYmFja1N0cnVjdDsKIAorICAgIERpc3BsYXkqIGRpc3BsYXkgPSB4MTFEaXNw
bGF5KCk7CisKKyAgICBpZiAobV9pc1dpbmRvd2VkKSB7CisgICAgICAgIG1fbnBXaW5kb3cudHlw
ZSA9IE5QV2luZG93VHlwZVdpbmRvdzsKKyAgICAgICAgaWYgKG5lZWRzWEVtYmVkKSB7CisjaWYg
UExBVEZPUk0oR1RLKQorICAgICAgICAgICAgLy8gSXQgc2VlbXMgZmxhc2ggbmVlZHMgdGhlIHNv
Y2tldCB0byBiZSBpbiB0aGUgc2FtZSBwcm9jZXNzLAorICAgICAgICAgICAgLy8gSSBndWVzcyBp
dCB1c2VzIGdka193aW5kb3dfbG9va3VwKCksIHNlIHdlIGNyZWF0ZSBhIG5ldyBzb2NrZXQgaGVy
ZQorICAgICAgICAgICAgLy8gY29udGFpbmluZyBhIHBsdWcgd2l0aCB0aGUgdWkgcHJvY2VzcyBz
b2NrZXQgZW1iZWRkZWQKKyAgICAgICAgICAgIG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQgPSBndGtf
cGx1Z19uZXcod2luZG93SUQpOworICAgICAgICAgICAgR3RrV2lkZ2V0KiBzb2NrZXQgPSBndGtf
c29ja2V0X25ldygpOworICAgICAgICAgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5F
UihtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0KSwgc29ja2V0KTsKKyAgICAgICAgICAgIGd0a193aWRn
ZXRfc2hvdyhzb2NrZXQpOworICAgICAgICAgICAgZ3RrX3dpZGdldF9zaG93KG1fcGxhdGZvcm1Q
bHVnaW5XaWRnZXQpOworCisgICAgICAgICAgICBtX25wV2luZG93LndpbmRvdyA9ICh2b2lkKiln
dGtfc29ja2V0X2dldF9pZChHVEtfU09DS0VUKHNvY2tldCkpOworICAgICAgICAgICAgR2RrV2lu
ZG93KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3coc29ja2V0KTsKKyAgICAgICAgICAg
IGNhbGxiYWNrU3RydWN0LT5kaXNwbGF5ID0gR0RLX1dJTkRPV19YRElTUExBWSh3aW5kb3cpOwor
ICAgICAgICAgICAgY2FsbGJhY2tTdHJ1Y3QtPnZpc3VhbCA9IEdES19WSVNVQUxfWFZJU1VBTChn
ZGtfd2luZG93X2dldF92aXN1YWwod2luZG93KSk7CisgICAgICAgICAgICBjYWxsYmFja1N0cnVj
dC0+ZGVwdGggPSBnZGtfdmlzdWFsX2dldF9kZXB0aChnZGtfd2luZG93X2dldF92aXN1YWwod2lu
ZG93KSk7CisgICAgICAgICAgICBjYWxsYmFja1N0cnVjdC0+Y29sb3JtYXAgPSBYQ3JlYXRlQ29s
b3JtYXAoZGlzcGxheSwgR0RLX1JPT1RfV0lORE9XKCksIGNhbGxiYWNrU3RydWN0LT52aXN1YWws
IEFsbG9jTm9uZSk7CisjZW5kaWYKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAg
ICAgWEZsdXNoKGRpc3BsYXkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fbnBXaW5kb3cudHlw
ZSA9IE5QV2luZG93VHlwZURyYXdhYmxlOworICAgICAgICBtX25wV2luZG93LndpbmRvdyA9IDA7
CisKKyAgICAgICAgaW50IGRlcHRoID0gZGlzcGxheURlcHRoKCk7CisgICAgICAgIGNhbGxiYWNr
U3RydWN0LT5kaXNwbGF5ID0gZGlzcGxheTsKKyAgICAgICAgY2FsbGJhY2tTdHJ1Y3QtPmRlcHRo
ID0gZGVwdGg7CisKKyAgICAgICAgWFZpc3VhbEluZm8gdmlzdWFsVGVtcGxhdGU7CisgICAgICAg
IHZpc3VhbFRlbXBsYXRlLnNjcmVlbiA9IHgxMVNjcmVlbigpOworICAgICAgICB2aXN1YWxUZW1w
bGF0ZS5kZXB0aCA9IGRlcHRoOworICAgICAgICB2aXN1YWxUZW1wbGF0ZS5jX2NsYXNzID0gVHJ1
ZUNvbG9yOworICAgICAgICBpbnQgbnVtTWF0Y2hpbmc7CisgICAgICAgIFhWaXN1YWxJbmZvKiB2
aXN1YWxJbmZvID0gWEdldFZpc3VhbEluZm8oZGlzcGxheSwgVmlzdWFsU2NyZWVuTWFzayB8IFZp
c3VhbERlcHRoTWFzayB8IFZpc3VhbENsYXNzTWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmdmlzdWFsVGVtcGxhdGUsICZudW1NYXRjaGluZyk7
CisgICAgICAgIEFTU0VSVCh2aXN1YWxJbmZvKTsKKyAgICAgICAgVmlzdWFsKiB2aXN1YWwgPSB2
aXN1YWxJbmZvWzBdLnZpc3VhbDsKKyAgICAgICAgQVNTRVJUKHZpc3VhbCk7CisgICAgICAgIFhG
cmVlKHZpc3VhbEluZm8pOworCisgICAgICAgIGNhbGxiYWNrU3RydWN0LT52aXN1YWwgPSB2aXN1
YWw7CisgICAgICAgIGNhbGxiYWNrU3RydWN0LT5jb2xvcm1hcCA9IFhDcmVhdGVDb2xvcm1hcChk
aXNwbGF5LCByb290V2luZG93SUQoKSwgdmlzdWFsLCBBbGxvY05vbmUpOworICAgIH0KKwogICAg
IGNhbGxTZXRXaW5kb3coKTsKIAogICAgIHJldHVybiB0cnVlOwpAQCAtMTgzLDcgKzIyOCwxMyBA
QCBib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUludmFsaWRhdGUoY29uc3QgSW50UmVjdCYp
CiB2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKCkKIHsKICAg
ICBpZiAobV9pc1dpbmRvd2VkKSB7Ci0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAg
IHVpbnQ2NF90IHdpbmRvd0lEID0gMDsKKyNpZiBQTEFURk9STShHVEspCisgICAgICAgIHdpbmRv
d0lEID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KEdES19XSU5ET1dfWElEKGd0a19wbHVnX2dldF9z
b2NrZXRfd2luZG93KEdUS19QTFVHKG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQpKSkpOworI2VuZGlm
CisgICAgICAgIEludFJlY3QgY2xpcFJlY3QobV9jbGlwUmVjdCk7CisgICAgICAgIGNsaXBSZWN0
Lm1vdmUoLW1fZnJhbWVSZWN0LngoKSwgLW1fZnJhbWVSZWN0LnkoKSk7CisgICAgICAgIG1fcGx1
Z2luQ29udHJvbGxlci0+d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShtX2ZyYW1lUmVj
dCwgY2xpcFJlY3QsIHdpbmRvd0lEKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjAz
LDEwICsyNTQsOCBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVZpc2liaWxpdHlEaWRD
aGFuZ2UoKQogCiB2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50KEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBib29sIC8qaXNTbmFwc2hv
dCovKQogewotICAgIGlmIChtX2lzV2luZG93ZWQpIHsKLSAgICAgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICBpZiAobV9pc1dpbmRvd2VkKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAg
aWYgKCFtX2lzU3RhcnRlZCkgewogICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIHBhaW50IGEg
bWlzc2luZyBwbHVnaW4gaWNvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCmluZGV4IDVkMGJhY2MuLmMzNTk2NDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xs
ZXIuaApAQCAtMTM2LDYgKzEzNiwxMiBAQCBwdWJsaWM6CiAgICAgLy8gRGVjcmVtZW50cyBhIGNv
dW50ZXIgdGhhdCwgd2hlbiBpdCByZWFjaGVzIDAsIHN0b3BzIHByZXZlbnRpbmcgdGhlIHBsdWct
aW4gZnJvbSBiZWluZyBkZXN0cm95ZWQuCiAgICAgdmlydHVhbCB2b2lkIHVucHJvdGVjdFBsdWdp
bkZyb21EZXN0cnVjdGlvbigpID0gMDsKIAorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQor
ICAgIC8vIENyZWF0ZSBhIHBsdWdpbiBjb250YWluZXIgZm9yIHdpbmRvd2VkIHBsdWdpbnMKKyAg
ICB2aXJ0dWFsIHVpbnQ2NF90IGNyZWF0ZVBsdWdpbkNvbnRhaW5lcigpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50
NjRfdCB3aW5kb3dJRCkgPSAwOworI2VuZGlmCisKICAgICAvLyBIZWxwZXIgY2xhc3MgZm9yIGRl
bGF5aW5nIGRlc3RydWN0aW9uIG9mIGEgcGx1Zy1pbi4KICAgICBjbGFzcyBQbHVnaW5EZXN0cnVj
dGlvblByb3RlY3RvciB7CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXggZDM0ZmUzNi4uMDliYzMwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3Bw
CkBAIC00ODAsNyArNDgwLDE5IEBAIHZvaWQgUGx1Z2luUHJveHk6OnNldENvbXBsZXhUZXh0SW5w
dXRFbmFibGVkKGJvb2wgY29tcGxleFRleHRJbnB1dEVuYWJsZWQpCiAgICAgbV9wbHVnaW5Db250
cm9sbGVyLT5zZXRDb21wbGV4VGV4dElucHV0RW5hYmxlZChjb21wbGV4VGV4dElucHV0RW5hYmxl
ZCk7CiB9CiAjZW5kaWYKLSAgICAKKworI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQordm9p
ZCBQbHVnaW5Qcm94eTo6Y3JlYXRlUGx1Z2luQ29udGFpbmVyKHVpbnQ2NF90JiB3aW5kb3dJRCkK
K3sKKyAgICB3aW5kb3dJRCA9IG1fcGx1Z2luQ29udHJvbGxlci0+Y3JlYXRlUGx1Z2luQ29udGFp
bmVyKCk7Cit9CisKK3ZvaWQgUGx1Z2luUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRD
aGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpCit7CisgICAgbV9wbHVnaW5Db250
cm9sbGVyLT53aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGZyYW1lUmVjdCwgY2xpcFJl
Y3QsIHdpbmRvd0lEKTsKK30KKyNlbmRpZgorCiB2b2lkIFBsdWdpblByb3h5Ojp1cGRhdGUoY29u
c3QgSW50UmVjdCYgcGFpbnRlZFJlY3QpCiB7CiAgICAgaWYgKHBhaW50ZWRSZWN0ID09IG1fZnJh
bWVSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
eHkuaAppbmRleCA4ZjliYTJlLi5mYmNkNzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaApAQCAtMTIyLDYgKzEyMiwxMCBAQCBwcml2YXRl
OgogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIHNldENvbXBsZXhUZXh0SW5wdXRFbmFibGVk
KGJvb2wpOwogI2VuZGlmCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgdm9pZCBj
cmVhdGVQbHVnaW5Db250YWluZXIodWludDY0X3QmIHdpbmRvd0lEKTsKKyAgICB2b2lkIHdpbmRv
d2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVS
ZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQp
OworI2VuZGlmCiAKICAgICBTdHJpbmcgbV9wbHVnaW5QYXRoOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggYmIzMjdhYi4uNzM1ZWNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdlcy5pbgpAQCAtNjAsNiArNjAs
MTQgQEAgbWVzc2FnZXMgLT4gUGx1Z2luUHJveHkgewogICAgICMgQ2hhbmdlIHdoZXRoZXIgY29t
cGxleHQgdGV4dCBpbnB1dCBpcyBlbmFibGVkIGZvciB0aGlzIHBsdWctaW4uCiAgICAgU2V0Q29t
cGxleFRleHRJbnB1dEVuYWJsZWQoYm9vbCBjb21wbGV4VGV4dElucHV0RW5hYmxlZCkKICNlbmRp
ZgorCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgIyBDcmVhdGUgdGhlIHBsdWdp
biBjb250YWluZXIgZm9yIHdpbmRvd2VkIHBsdWdpbnMKKyAgICBDcmVhdGVQbHVnaW5Db250YWlu
ZXIoKSAtPiAodWludDY0X3Qgd2luZG93SUQpCisKKyAgICAjIFVwZGF0ZSBnZW9tZXRyeSBvZiB3
aW5kb3dlZCBwbHVnaW4gd2lkZ2V0CisgICAgV2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5n
ZShXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwgV2ViQ29yZTo6SW50UmVjdCBjbGlwUmVjdCwg
dWludDY0X3Qgd2luZG93SUQpCisjZW5kaWYKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZDIyMDJkOS4uNDc0
M2I2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk5QUnVudGltZVV0aWxpdGllcy5o
IgogI2luY2x1ZGUgIlBsdWdpbi5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgorI2lu
Y2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCiAj
aW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCkBA
IC0xMTUzLDQgKzExNTQsMTggQEAgdm9pZCBQbHVnaW5WaWV3OjpkaWRGYWlsTG9hZChXZWJGcmFt
ZSogd2ViRnJhbWUsIGJvb2wgd2FzQ2FuY2VsbGVkKQogICAgIG1fcGx1Z2luLT5mcmFtZURpZEZh
aWwocmVxdWVzdC0+cmVxdWVzdElEKCksIHdhc0NhbmNlbGxlZCk7CiB9CiAKKyNpZiBQTFVHSU5f
QVJDSElURUNUVVJFKFgxMSkKK3VpbnQ2NF90IFBsdWdpblZpZXc6OmNyZWF0ZVBsdWdpbkNvbnRh
aW5lcigpCit7CisgICAgdWludDY0X3Qgd2luZG93SUQgPSAwOworICAgIG1fd2ViUGFnZS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlUGx1Z2luQ29udGFpbmVyKCksIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZVBsdWdpbkNvbnRhaW5lcjo6UmVwbHkod2luZG93
SUQpKTsKKyAgICByZXR1cm4gd2luZG93SUQ7Cit9CisKK3ZvaWQgUGx1Z2luVmlldzo6d2luZG93
ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJl
Y3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCkK
K3sKKyAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2luZG93ZWRQ
bHVnaW5HZW9tZXRyeURpZENoYW5nZShmcmFtZVJlY3QsIGNsaXBSZWN0LCB3aW5kb3dJRCkpOwor
fQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggZWJiMGZhMS4uODYyN2MwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC0x
NTAsNiArMTUwLDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzUHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBwcm90ZWN0UGx1Z2luRnJvbURlc3RydWN0
aW9uKCk7CiAgICAgdmlydHVhbCB2b2lkIHVucHJvdGVjdFBsdWdpbkZyb21EZXN0cnVjdGlvbigp
OworI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAgIHZpcnR1YWwgdWludDY0X3QgY3Jl
YXRlUGx1Z2luQ29udGFpbmVyKCk7CisgICAgdmlydHVhbCB2b2lkIHdpbmRvd2VkUGx1Z2luR2Vv
bWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpOworI2VuZGlmCiAK
ICAgICAvLyBXZWJGcmFtZTo6TG9hZExpc3RlbmVyCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aExvYWQoV2ViRnJhbWUqKTsK
</data>
<flag name="commit-queue"
          id="87318"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100963</attachid>
            <date>2011-07-15 06:14:54 -0700</date>
            <delta_ts>2011-11-30 06:16:12 -0800</delta_ts>
            <desc>Patch updated for current git master</desc>
            <filename>wk2-windowed-plugins3.diff</filename>
            <type>text/plain</type>
            <size>26878</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0Y2JmNmMxLi5hNjUxYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNjIg
QEAKIDIwMTEtMDctMTUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHVEtdIEluaXRpYWwgd2luZG93ZWQgcGx1Z2lucyBpbXBsZW1lbnRhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEwNjUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdp
blByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luQ29udHJvbGxlclByb3h5OjpjcmVhdGVQbHVnaW5Db250YWluZXIpOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFu
Z2UpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAg
ICAod2Via2l0V2ViVmlld0Jhc2VDb250YWluZXJBZGQpOiBDcmVhdGUgYSBzdHJ1Y3QgZm9yIGV2
ZXJ5IGNoaWxkCisgICAgICAgIHdpZGdldCB0byBzdG9yZSB0aGUgZ2VvbWV0cnkuCisgICAgICAg
ICh3ZWJraXRXZWJWaWV3QmFzZUNvbnRhaW5lclJlbW92ZSk6IEltcGxlbWVudCBHdGtDb250YWlu
ZXI6OnJlbW92ZSgpLgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VDb250YWluZXJGb3JhbGwp
OiBJbXBsZW1lbnQgR3RrQ29udGFpbmVyOjpmb3JhbGwoKS4KKyAgICAgICAgKHdlYmtpdFdlYlZp
ZXdCYXNlR2V0Q2hpbGQpOiBHZXQgdGhlIGNoaWxkIHN0cnVjdCBmb3IgYSBnaXZlbgorICAgICAg
ICBjaGlsZCB3aWRnZXQuCisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUNoaWxkTW92ZVJlc2l6
ZSk6IFNldCBhIG5ldyBnZW9tZXRyeSBmb3IgYSBjaGlsZCB3aWRnZXQuCisgICAgICAgICh3ZWJr
aXRfd2ViX3ZpZXdfYmFzZV9pbml0KToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlU2l6ZUFs
bG9jYXRlKTogQWxsb2NhdGUgY2hpbGQgd2lkZ2V0cy4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmll
d19iYXNlX2NsYXNzX2luaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdCYXNlUHJpdmF0ZS5oOiBBZGQgd2Via2l0V2ViVmlld0Jhc2VTaXplQWxsb2NhdGUoKS4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjogQWRkIGNyZWF0ZVBsdWdpbkNvbnRhaW5lcgorICAg
ICAgICBhbmQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZSBtZXNzYWdlcy4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6
OnBsdWdpbldpbmRvd01hcCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRl
UGx1Z2luQ29udGFpbmVyKTogQ3JlYXRlIGEgR3RrU29ja2V0CisgICAgICAgIGFzIGNvbnRhaW5l
ciB3aWRnZXQgZm9yIHdpbmRvd2VkIHBsdWdpbnMuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZSk6IENhbGwKKyAgICAgICAgd2Vi
a2l0V2ViVmlld0Jhc2VTaXplQWxsb2NhdGUoKSB0byB1cGRhdGUgdGhlIHBsdWdpbiB3aWRnZXQg
Z2VvbWV0cnkuCisgICAgICAgICogVUlQcm9jZXNzL3F0L1dlYlBhZ2VQcm94eVF0LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGVQbHVnaW5Db250YWluZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFu
Z2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpOZXRzY2FwZVBsdWdpbik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdp
blgxMS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBvc3RJ
bml0aWFsaXplKTogRm9yIHdpbmRvd2VkCisgICAgICAgIHBsdWdpbnMsIGFzayB0aGUgdWkgcHJv
Y2VzcyB0byBjcmVhdGUgYSBwbHVnaW4gY29udGFpbmVyLgorICAgICAgICAoV2ViS2l0OjpOZXRz
Y2FwZVBsdWdpbjo6cGxhdGZvcm1HZW9tZXRyeURpZENoYW5nZSk6IEZvciB3aW5kb3dlZAorICAg
ICAgICBwbHVnaW5zIG5vdGlmeSB0aGUgdWkgcHJvY2VzcyB0aGF0IHRoZSBwbHVnaW4gZ2VvbWV0
cnkgaGFzIGNoYW5nZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9y
bVBhaW50KTogRG8gbm90aGluZyBmb3Igd2luZG93ZWQKKyAgICAgICAgcGx1Z2lucywgdGhlIGNh
bGxlciBhbHJlYWR5IGNhbGxzIGNhbGxTZXRXaW5kb3coKS4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpjcmVhdGVQ
bHVnaW5Db250YWluZXIpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6d2luZG93ZWRQ
bHVnaW5HZW9tZXRyeURpZENoYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lm1l
c3NhZ2VzLmluOiBBZGQKKyAgICAgICAgY3JlYXRlUGx1Z2luQ29udGFpbmVyIGFuZCB3aW5kb3dl
ZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlIG1lc3NhZ2VzLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6Y3Jl
YXRlUGx1Z2luQ29udGFpbmVyKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6d2luZG93
ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuaDoKKworMjAxMS0wNy0xNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgog
CiAgICAgICAgIFtHVEtdIEluc3RhbGwgYSBjdXN0b20gWCBlcnJvciBoYW5kbGVyIGluIHBsdWdp
biBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdp
bkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdp
bkNvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggYjFiNTg2YS4uMzQ0YWYwZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNw
cApAQCAtNjI1LDYgKzYyNSwyMCBAQCBib29sIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6dHJ5VG9T
aG9ydENpcmN1aXRFdmFsdWF0ZShOUE9iamVjdCogbnBPYmplY3QsIGNvbnN0CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKK3VpbnQ2NF90IFBsdWdp
bkNvbnRyb2xsZXJQcm94eTo6Y3JlYXRlUGx1Z2luQ29udGFpbmVyKCkKK3sKKyAgICB1aW50NjRf
dCB3aW5kb3dJRCA9IDA7CisgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmRTeW5j
KE1lc3NhZ2VzOjpQbHVnaW5Qcm94eTo6Q3JlYXRlUGx1Z2luQ29udGFpbmVyKCksIE1lc3NhZ2Vz
OjpQbHVnaW5Qcm94eTo6Q3JlYXRlUGx1Z2luQ29udGFpbmVyOjpSZXBseSh3aW5kb3dJRCksIG1f
cGx1Z2luSW5zdGFuY2VJRCk7CisgICAgcmV0dXJuIHdpbmRvd0lEOworfQorCit2b2lkIFBsdWdp
bkNvbnRyb2xsZXJQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBJ
bnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRfdCB3aW5k
b3dJRCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
UGx1Z2luUHJveHk6OldpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoZnJhbWVSZWN0LCBj
bGlwUmVjdCwgd2luZG93SUQpLCBtX3BsdWdpbkluc3RhbmNlSUQpOworfQorI2VuZGlmCisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVy
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclBy
b3h5LmgKaW5kZXggMDljZmYzYS4uNThhM2Q3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
UGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCkBAIC0xMDcsNiArMTA3LDEw
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGdldEF1dGhlbnRpY2F0aW9uSW5mbyhjb25z
dCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmLCBTdHJpbmcmIHVzZXJuYW1lLCBTdHJpbmcmIHBh
c3N3b3JkKTsKICAgICB2aXJ0dWFsIHZvaWQgcHJvdGVjdFBsdWdpbkZyb21EZXN0cnVjdGlvbigp
OwogICAgIHZpcnR1YWwgdm9pZCB1bnByb3RlY3RQbHVnaW5Gcm9tRGVzdHJ1Y3Rpb24oKTsKKyNp
ZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKyAgICB2aXJ0dWFsIHVpbnQ2NF90IGNyZWF0ZVBs
dWdpbkNvbnRhaW5lcigpOworICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dlZFBsdWdpbkdlb21ldHJ5
RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lEKTsKKyNlbmRpZgogICAgIAog
ICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBmcmFtZURpZEZpbmlzaExvYWRpbmco
dWludDY0X3QgcmVxdWVzdElEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCA3ZmFmODQyLi5jZTdjMDY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0Jhc2UuY3BwCkBAIC01MCw2ICs1MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RydWN0IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZh
dGUgeworICAgIEdMaXN0KiBjaGlsZHJlbjsKICAgICBPd25QdHI8UGFnZUNsaWVudEltcGw+IHBh
Z2VDbGllbnQ7CiAgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gcGFnZVByb3h5OwogICAgIGdib29s
ZWFuIGlzUGFnZUFjdGl2ZTsKQEAgLTU4LDYgKzU5LDExIEBAIHN0cnVjdCBfV2ViS2l0V2ViVmll
d0Jhc2VQcml2YXRlIHsKICAgICBDU3RyaW5nIHRvb2x0aXBUZXh0OwogfTsKIAordHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdFdlYlZpZXdDaGlsZCB7CisgICAgR3RrV2lkZ2V0KiB3aWRnZXQ7CisgICAg
SW50UmVjdCBnZW9tZXRyeTsKK30gV2ViS2l0V2ViVmlld0NoaWxkOworCiBHX0RFRklORV9UWVBF
KFdlYktpdFdlYlZpZXdCYXNlLCB3ZWJraXRfd2ViX3ZpZXdfYmFzZSwgR1RLX1RZUEVfQ09OVEFJ
TkVSKQogCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVJlYWxpemUoR3RrV2lkZ2V0KiB3
aWRnZXQpCkBAIC0xMDIsNyArMTA4LDgxIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNl
UmVhbGl6ZShHdGtXaWRnZXQqIHdpZGdldCkKIAogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jh
c2VDb250YWluZXJBZGQoR3RrQ29udGFpbmVyKiBjb250YWluZXIsIEd0a1dpZGdldCogd2lkZ2V0
KQogeworICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXX0JB
U0UoY29udGFpbmVyKTsKKyAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJW
aWV3LT5wcml2OworCisgICAgV2ViS2l0V2ViVmlld0NoaWxkKiB2aWV3Q2hpbGQgPSBnX3NsaWNl
X25ldyhXZWJLaXRXZWJWaWV3Q2hpbGQpOworICAgIHZpZXdDaGlsZC0+d2lkZ2V0ID0gd2lkZ2V0
OworICAgIEd0a0FsbG9jYXRpb24gY2hpbGRBbGxvY2F0aW9uOworICAgIGd0a193aWRnZXRfZ2V0
X2FsbG9jYXRpb24od2lkZ2V0LCAmY2hpbGRBbGxvY2F0aW9uKTsKKyAgICB2aWV3Q2hpbGQtPmdl
b21ldHJ5ID0gY2hpbGRBbGxvY2F0aW9uOworCiAgICAgZ3RrX3dpZGdldF9zZXRfcGFyZW50KHdp
ZGdldCwgR1RLX1dJREdFVChjb250YWluZXIpKTsKKworICAgIHByaXYtPmNoaWxkcmVuID0gZ19s
aXN0X2FwcGVuZChwcml2LT5jaGlsZHJlbiwgdmlld0NoaWxkKTsKK30KKworc3RhdGljIHZvaWQg
d2Via2l0V2ViVmlld0Jhc2VDb250YWluZXJSZW1vdmUoR3RrQ29udGFpbmVyKiBjb250YWluZXIs
IEd0a1dpZGdldCogd2lkZ2V0KQoreworICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3ID0g
V0VCS0lUX1dFQl9WSUVXX0JBU0UoY29udGFpbmVyKTsKKyAgICBXZWJLaXRXZWJWaWV3QmFzZVBy
aXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworICAgIEd0a1dpZGdldCogd2lkZ2V0Q29udGFp
bmVyID0gR1RLX1dJREdFVChjb250YWluZXIpOworCisgICAgZm9yIChHTGlzdCogY2hpbGRyZW4g
PSBwcml2LT5jaGlsZHJlbjsgY2hpbGRyZW47IGNoaWxkcmVuID0gY2hpbGRyZW4tPm5leHQpIHsK
KyAgICAgICAgV2ViS2l0V2ViVmlld0NoaWxkKiB2aWV3Q2hpbGQgPSBzdGF0aWNfY2FzdDxXZWJL
aXRXZWJWaWV3Q2hpbGQqPihjaGlsZHJlbi0+ZGF0YSk7CisKKyAgICAgICAgaWYgKHZpZXdDaGls
ZC0+d2lkZ2V0ID09IHdpZGdldCkgeworICAgICAgICAgICAgZ2Jvb2xlYW4gd2FzVmlzaWJsZSA9
IGd0a193aWRnZXRfZ2V0X3Zpc2libGUod2lkZ2V0KTsKKworICAgICAgICAgICAgZ3RrX3dpZGdl
dF91bnBhcmVudCh3aWRnZXQpOworCisgICAgICAgICAgICBwcml2LT5jaGlsZHJlbiA9IGdfbGlz
dF9yZW1vdmVfbGluayhwcml2LT5jaGlsZHJlbiwgY2hpbGRyZW4pOworICAgICAgICAgICAgZ19s
aXN0X2ZyZWUoY2hpbGRyZW4pOworICAgICAgICAgICAgZ19zbGljZV9mcmVlKFdlYktpdFdlYlZp
ZXdDaGlsZCwgdmlld0NoaWxkKTsKKworICAgICAgICAgICAgaWYgKHdhc1Zpc2libGUgJiYgZ3Rr
X3dpZGdldF9nZXRfdmlzaWJsZSh3aWRnZXRDb250YWluZXIpKQorICAgICAgICAgICAgICAgIGd0
a193aWRnZXRfcXVldWVfcmVzaXplKHdpZGdldENvbnRhaW5lcik7CisKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFz
ZUNvbnRhaW5lckZvcmFsbChHdGtDb250YWluZXIgKmNvbnRhaW5lciwgZ2Jvb2xlYW4gaW5jbHVk
ZUludGVybmFscywgR3RrQ2FsbGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIGNhbGxiYWNrRGF0YSkK
K3sKKyAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFV19CQVNF
KGNvbnRhaW5lcik7CisgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmll
dy0+cHJpdjsKKworICAgIEdMaXN0KiBjaGlsZHJlbiA9IHByaXYtPmNoaWxkcmVuOworICAgIHdo
aWxlIChjaGlsZHJlbikgeworICAgICAgICBXZWJLaXRXZWJWaWV3Q2hpbGQqIHZpZXdDaGlsZCA9
IHN0YXRpY19jYXN0PFdlYktpdFdlYlZpZXdDaGlsZCo+KGNoaWxkcmVuLT5kYXRhKTsKKyAgICAg
ICAgY2hpbGRyZW4gPSBjaGlsZHJlbi0+bmV4dDsKKyAgICAgICAgKCogY2FsbGJhY2spKHZpZXdD
aGlsZC0+d2lkZ2V0LCBjYWxsYmFja0RhdGEpOworICAgIH0KK30KKworc3RhdGljIFdlYktpdFdl
YlZpZXdDaGlsZCogd2Via2l0V2ViVmlld0Jhc2VHZXRDaGlsZChXZWJLaXRXZWJWaWV3QmFzZSog
d2ViVmlldywgR3RrV2lkZ2V0KiBjaGlsZCkKK3sKKyAgICBXZWJLaXRXZWJWaWV3Q2hpbGQqIHZp
ZXdDaGlsZCA9IDA7CisgICAgZm9yIChHTGlzdCogY2hpbGRyZW4gPSB3ZWJWaWV3LT5wcml2LT5j
aGlsZHJlbjsgY2hpbGRyZW47IGNoaWxkcmVuID0gY2hpbGRyZW4tPm5leHQpIHsKKyAgICAgICAg
dmlld0NoaWxkID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2ViVmlld0NoaWxkKj4oY2hpbGRyZW4tPmRh
dGEpOworCisgICAgICAgIGlmICh2aWV3Q2hpbGQtPndpZGdldCA9PSBjaGlsZCkKKyAgICAgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiB2aWV3Q2hpbGQ7Cit9CisKK3ZvaWQgd2Vi
a2l0V2ViVmlld0Jhc2VDaGlsZE1vdmVSZXNpemUoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXcs
IEd0a1dpZGdldCogY2hpbGQsIGNvbnN0IEludFJlY3QmIGNoaWxkUmVjdCkKK3sKKyAgICBXZWJL
aXRXZWJWaWV3Q2hpbGQqIHZpZXdDaGlsZCA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0Q2hpbGQod2Vi
VmlldywgY2hpbGQpOworCisgICAgaWYgKHZpZXdDaGlsZC0+Z2VvbWV0cnkgPT0gY2hpbGRSZWN0
KQorICAgICAgICByZXR1cm47CisKKyAgICB2aWV3Q2hpbGQtPmdlb21ldHJ5ID0gY2hpbGRSZWN0
OworICAgIGd0a193aWRnZXRfcXVldWVfcmVzaXplX25vX3JlZHJhdyhHVEtfV0lER0VUKHdlYlZp
ZXcpKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VGaW5hbGl6ZShHT2JqZWN0
KiBnb2JqZWN0KQpAQCAtMTI4LDYgKzIwOCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmll
d19iYXNlX2luaXQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQogICAgIFdl
YktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IG5ldyBXZWJLaXRXZWJWaWV3QmFzZVByaXZh
dGUoKTsKICAgICB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdiA9IHByaXY7CiAKKyAgICBwcml2LT5j
aGlsZHJlbiA9IDA7CiAgICAgcHJpdi0+aXNQYWdlQWN0aXZlID0gVFJVRTsKIAogICAgIGd0a193
aWRnZXRfc2V0X2RvdWJsZV9idWZmZXJlZChHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNlKSwg
RkFMU0UpOwpAQCAtMTYyLDYgKzI0MywxNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFz
ZVNpemVBbGxvY2F0ZShHdGtXaWRnZXQqIHdpZGdldCwgR3RrQWxsb2NhdGlvbiogYWxsbwogICAg
ICAgICByZXR1cm47CiAKICAgICBHVEtfV0lER0VUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19iYXNl
X3BhcmVudF9jbGFzcyktPnNpemVfYWxsb2NhdGUod2lkZ2V0LCBhbGxvY2F0aW9uKTsKKworICAg
IGZvciAoR0xpc3QqIGNoaWxkcmVuID0gcHJpdi0+Y2hpbGRyZW47IGNoaWxkcmVuOyBjaGlsZHJl
biA9IGNoaWxkcmVuLT5uZXh0KSB7CisgICAgICAgIFdlYktpdFdlYlZpZXdDaGlsZCogdmlld0No
aWxkID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2ViVmlld0NoaWxkKj4oY2hpbGRyZW4tPmRhdGEpOwor
CisgICAgICAgIGlmICghZ3RrX3dpZGdldF9nZXRfdmlzaWJsZSh2aWV3Q2hpbGQtPndpZGdldCkp
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBHdGtBbGxvY2F0aW9uIGNoaWxkQWxs
b2NhdGlvbih2aWV3Q2hpbGQtPmdlb21ldHJ5KTsKKyAgICAgICAgZ3RrX3dpZGdldF9zaXplX2Fs
bG9jYXRlKHZpZXdDaGlsZC0+d2lkZ2V0LCAmY2hpbGRBbGxvY2F0aW9uKTsKKyAgICB9CisKICAg
ICBwcml2LT5wYWdlUHJveHktPmRyYXdpbmdBcmVhKCktPnNldFNpemUoSW50U2l6ZShhbGxvY2F0
aW9uLT53aWR0aCwgYWxsb2NhdGlvbi0+aGVpZ2h0KSwgSW50U2l6ZSgpKTsKIH0KIApAQCAtMzAy
LDYgKzM5NCw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19iYXNlX2NsYXNzX2luaXQo
V2ViS2l0V2ViVmlld0Jhc2VDbGFzcyogd2Via2l0V2ViVmllCiAKICAgICBHdGtDb250YWluZXJD
bGFzcyogY29udGFpbmVyQ2xhc3MgPSBHVEtfQ09OVEFJTkVSX0NMQVNTKHdlYmtpdFdlYlZpZXdC
YXNlQ2xhc3MpOwogICAgIGNvbnRhaW5lckNsYXNzLT5hZGQgPSB3ZWJraXRXZWJWaWV3QmFzZUNv
bnRhaW5lckFkZDsKKyAgICBjb250YWluZXJDbGFzcy0+cmVtb3ZlID0gd2Via2l0V2ViVmlld0Jh
c2VDb250YWluZXJSZW1vdmU7CisgICAgY29udGFpbmVyQ2xhc3MtPmZvcmFsbCA9IHdlYmtpdFdl
YlZpZXdCYXNlQ29udGFpbmVyRm9yYWxsOwogfQogCiBXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0
V2ViVmlld0Jhc2VDcmVhdGUoV2ViQ29udGV4dCogY29udGV4dCwgV2ViUGFnZUdyb3VwKiBwYWdl
R3JvdXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCmluZGV4IDY5OTY3MzguLjYzMDdhMjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdCYXNlUHJpdmF0ZS5oCkBAIC00Niw2ICs0Niw4IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jh
c2VDcmVhdGVXZWJQYWdlKFdlYktpdFdlYlZpZXdCYXNlKiwgV0tDb250ZXh0UmVmLCBXS1BhZ2VH
cm91CiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRUb29sdGlwVGV4dChXZWJLaXRXZWJWaWV3
QmFzZSosIGNvbnN0IGNoYXIqKTsKIAordm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNoaWxkTW92ZVJl
c2l6ZShXZWJLaXRXZWJWaWV3QmFzZSosIEd0a1dpZGdldCosIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmKTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmIC8vIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZDRjZWU2Yy4u
OWYwNjEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNzg5
LDYgKzc4OSwxMSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRSZW5kZXJUcmVlU2l6ZSh1aW50
NjRfdCB0cmVlU2l6ZSkgeyBtX3JlbmRlclRyZWVTaXplID0gdHJlZVNpemU7IH0KIAorI2lmIFBM
VUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAgIHZvaWQgY3JlYXRlUGx1Z2luQ29udGFpbmVyKHVp
bnQ2NF90JiB3aW5kb3dJRCk7CisgICAgdm9pZCB3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hh
bmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lEKTsKKyNlbmRpZgorCiAgICAgUGFnZUNs
aWVudCogbV9wYWdlQ2xpZW50OwogICAgIFdlYkxvYWRlckNsaWVudCBtX2xvYWRlckNsaWVudDsK
ICAgICBXZWJQb2xpY3lDbGllbnQgbV9wb2xpY3lDbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCAyYzFmNzE5Li40N2I5
MWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KQEAgLTI2MCw2ICsyNjAsMTIgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsK
ICAgICBTY2hlZHVsZUNoaWxkV2luZG93R2VvbWV0cnlVcGRhdGUoV2ViS2l0OjpXaW5kb3dHZW9t
ZXRyeSBnZW9tZXRyeSkKICNlbmRpZgogCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisg
ICAgIyBYMTEgd2luZG93ZWQgcGx1Z2luIG1lc3NhZ2VzCisgICAgQ3JlYXRlUGx1Z2luQ29udGFp
bmVyKCkgLT4gKHVpbnQ2NF90IHdpbmRvd0lEKQorICAgIFdpbmRvd2VkUGx1Z2luR2VvbWV0cnlE
aWRDaGFuZ2UoV2ViQ29yZTo6SW50UmVjdCBmcmFtZVJlY3QsIFdlYkNvcmU6OkludFJlY3QgY2xp
cFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lEKQorI2VuZGlmCisKICAgICAjIFNlYXJjaCBwb3B1cCBt
ZW51cwogICAgIFNhdmVSZWNlbnRTZWFyY2hlcyhXVEY6OlN0cmluZyBuYW1lLCBWZWN0b3I8U3Ry
aW5nPiBzZWFyY2hJdGVtcykKICAgICBMb2FkUmVjZW50U2VhcmNoZXMoV1RGOjpTdHJpbmcgbmFt
ZSkgLT4gKFZlY3RvcjxTdHJpbmc+IHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcAppbmRleCAzOTNiNGM3Li4wOTEzYzUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCkBA
IC0zMCw2ICszMCw4IEBACiAjaW5jbHVkZSAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgogI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIKKyNp
bmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCIKKyNpbmNsdWRlIDxndGsvZ3RreC5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNTksNCArNjEsMzUgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYp
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBH
dGtXaWRnZXQqID4gUGx1Z2luV2luZG93TWFwOworc3RhdGljIFBsdWdpbldpbmRvd01hcCYgcGx1
Z2luV2luZG93TWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFBsdWdpbldpbmRvd01h
cCwgbWFwLCAoKSk7CisgICAgcmV0dXJuIG1hcDsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmNy
ZWF0ZVBsdWdpbkNvbnRhaW5lcih1aW50NjRfdCYgd2luZG93SUQpCit7CisgICAgR3RrV2lkZ2V0
KiBzb2NrZXQgPSBndGtfc29ja2V0X25ldygpOworICAgIGd0a19jb250YWluZXJfYWRkKEdUS19D
T05UQUlORVIodmlld1dpZGdldCgpKSwgc29ja2V0KTsKKyAgICBndGtfd2lkZ2V0X3Nob3coc29j
a2V0KTsKKworICAgIHdpbmRvd0lEID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGd0a19zb2NrZXRf
Z2V0X2lkKEdUS19TT0NLRVQoc29ja2V0KSkpOworICAgIHBsdWdpbldpbmRvd01hcCgpLnNldCh3
aW5kb3dJRCwgc29ja2V0KTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OndpbmRvd2VkUGx1Z2lu
R2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpCit7CisgICAg
R3RrV2lkZ2V0KiBwbHVnaW4gPSBwbHVnaW5XaW5kb3dNYXAoKS5nZXQod2luZG93SUQpOworCisg
ICAgaWYgKGd0a193aWRnZXRfZ2V0X3JlYWxpemVkKHBsdWdpbikpIHsKKyAgICAgICAgR2RrUmVj
dGFuZ2xlIGNsaXAoY2xpcFJlY3QpOworICAgICAgICBjYWlyb19yZWdpb25fdCogY2xpcFJlZ2lv
biA9IGNhaXJvX3JlZ2lvbl9jcmVhdGVfcmVjdGFuZ2xlKCZjbGlwKTsKKyAgICAgICAgZ2RrX3dp
bmRvd19zaGFwZV9jb21iaW5lX3JlZ2lvbihndGtfd2lkZ2V0X2dldF93aW5kb3cocGx1Z2luKSwg
Y2xpcFJlZ2lvbiwgMCwgMCk7CisgICAgICAgIGNhaXJvX3JlZ2lvbl9kZXN0cm95KGNsaXBSZWdp
b24pOworICAgIH0KKworICAgIHdlYmtpdFdlYlZpZXdCYXNlQ2hpbGRNb3ZlUmVzaXplKFdFQktJ
VF9XRUJfVklFV19CQVNFKHZpZXdXaWRnZXQoKSksIHBsdWdpbiwgZnJhbWVSZWN0KTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvV2ViUGFnZVByb3h5UXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dl
YlBhZ2VQcm94eVF0LmNwcAppbmRleCBmOTcxNGZiLi5kYzM3ZDBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUGFnZVByb3h5UXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQYWdlUHJveHlRdC5jcHAKQEAgLTQ3LDQgKzQ3LDE0IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgVmVj
dG9yPFN0cmluZz4mKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpjcmVhdGVQbHVnaW5Db250YWluZXIodWludDY0X3QmIHdpbmRvd0lEKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dlZFBsdWdpbkdl
b21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lEKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5jcHAKaW5kZXggMGMyZTU1NC4uMmUwODBlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uY3BwCkBAIC04Miw2ICs4Miw5IEBAIE5ldHNjYXBlUGx1Z2luOjpOZXRzY2FwZVBsdWdpbihQ
YXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBwbHVnaW5Nb2R1bGUpCiAjZWxpZiBQTFVH
SU5fQVJDSElURUNUVVJFKFgxMSkKICAgICAsIG1fZHJhd2FibGUoMCkKICAgICAsIG1fcGx1Z2lu
RGlzcGxheSgwKQorI2lmIFBMQVRGT1JNKEdUSykKKyAgICAsIG1fcGxhdGZvcm1QbHVnaW5XaWRn
ZXQoMCkKKyNlbmRpZgogI2VuZGlmCiB7CiAgICAgbV9ucHAubmRhdGEgPSB0aGlzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW4uaAppbmRleCBiMzk3ZmE4Li42NGZmNmNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uaApAQCAtMjU2LDYgKzI1Niw5IEBAIHByaXZhdGU6CiAjZWxpZiBQTFVHSU5fQVJDSElURUNU
VVJFKFgxMSkKICAgICBQaXhtYXAgbV9kcmF3YWJsZTsKICAgICBEaXNwbGF5KiBtX3BsdWdpbkRp
c3BsYXk7CisjaWYgUExBVEZPUk0oR1RLKQorICAgIEd0a1dpZGdldCogbV9wbGF0Zm9ybVBsdWdp
bldpZGdldDsKKyNlbmRpZgogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQ
bHVnaW5YMTEuY3BwCmluZGV4IDk4NDY5MDQuLjk0OTI1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEv
TmV0c2NhcGVQbHVnaW5YMTEuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJOZXRz
Y2FwZVBsdWdpbi5oIgogCisjaW5jbHVkZSAiUGx1Z2luQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
IldlYkV2ZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkBAIC00Miw2ICs0MywxMCBAQAogI2luY2x1
ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKICNp
bmNsdWRlIDxjYWlyby9jYWlyby14bGliLmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2lmbmRl
ZiBHVEtfQVBJX1ZFUlNJT05fMgorI2luY2x1ZGUgPGd0ay9ndGt4Lmg+CisjZW5kaWYKICNpbmNs
dWRlIDxnZGsvZ2RreC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVmVyc2lvbmluZy5oPgogI2Vu
ZGlmCkBAIC0xNDksMzcgKzE1NCw3NiBAQCBib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBv
c3RJbml0aWFsaXplKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKLSAgICBpZiAo
bV9pc1dpbmRvd2VkKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgV2luZG93IHdpbmRvd0lE
ID0gMDsKKyAgICBib29sIG5lZWRzWEVtYmVkID0gZmFsc2U7CisgICAgaWYgKG1faXNXaW5kb3dl
ZCkgeworICAgICAgICBOUFBfR2V0VmFsdWUoTlBQVnBsdWdpbk5lZWRzWEVtYmVkLCAmbmVlZHNY
RW1iZWQpOworICAgICAgICBpZiAobmVlZHNYRW1iZWQpIHsKKyAgICAgICAgICAgIHdpbmRvd0lE
ID0gc3RhdGljX2Nhc3Q8V2luZG93Pihjb250cm9sbGVyKCktPmNyZWF0ZVBsdWdpbkNvbnRhaW5l
cigpKTsKKyAgICAgICAgICAgIGlmICghd2luZG93SUQpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KIAogICAgIGlmICgh
KG1fcGx1Z2luRGlzcGxheSA9IGdldFBsdWdpbkRpc3BsYXkoKSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqIGNhbGxiYWNrU3RydWN0ID0g
bmV3IE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3Q7CiAgICAgY2FsbGJhY2tTdHJ1Y3QtPnR5cGUg
PSAwOwotICAgIERpc3BsYXkqIGRpc3BsYXkgPSB4MTFEaXNwbGF5KCk7Ci0gICAgaW50IGRlcHRo
ID0gZGlzcGxheURlcHRoKCk7Ci0gICAgY2FsbGJhY2tTdHJ1Y3QtPmRpc3BsYXkgPSBkaXNwbGF5
OwotICAgIGNhbGxiYWNrU3RydWN0LT5kZXB0aCA9IGRlcHRoOwotCi0gICAgWFZpc3VhbEluZm8g
dmlzdWFsVGVtcGxhdGU7Ci0gICAgdmlzdWFsVGVtcGxhdGUuc2NyZWVuID0geDExU2NyZWVuKCk7
Ci0gICAgdmlzdWFsVGVtcGxhdGUuZGVwdGggPSBkZXB0aDsKLSAgICB2aXN1YWxUZW1wbGF0ZS5j
X2NsYXNzID0gVHJ1ZUNvbG9yOwotICAgIGludCBudW1NYXRjaGluZzsKLSAgICBYVmlzdWFsSW5m
byogdmlzdWFsSW5mbyA9IFhHZXRWaXN1YWxJbmZvKGRpc3BsYXksIFZpc3VhbFNjcmVlbk1hc2sg
fCBWaXN1YWxEZXB0aE1hc2sgfCBWaXN1YWxDbGFzc01hc2ssCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmdmlzdWFsVGVtcGxhdGUsICZudW1NYXRjaGluZyk7
Ci0gICAgQVNTRVJUKHZpc3VhbEluZm8pOwotICAgIFZpc3VhbCogdmlzdWFsID0gdmlzdWFsSW5m
b1swXS52aXN1YWw7Ci0gICAgQVNTRVJUKHZpc3VhbCk7Ci0gICAgWEZyZWUodmlzdWFsSW5mbyk7
Ci0KLSAgICBjYWxsYmFja1N0cnVjdC0+dmlzdWFsID0gdmlzdWFsOwotICAgIGNhbGxiYWNrU3Ry
dWN0LT5jb2xvcm1hcCA9IFhDcmVhdGVDb2xvcm1hcChkaXNwbGF5LCByb290V2luZG93SUQoKSwg
dmlzdWFsLCBBbGxvY05vbmUpOwotCi0gICAgbV9ucFdpbmRvdy50eXBlID0gTlBXaW5kb3dUeXBl
RHJhd2FibGU7Ci0gICAgbV9ucFdpbmRvdy53aW5kb3cgPSAwOwogICAgIG1fbnBXaW5kb3cud3Nf
aW5mbyA9IGNhbGxiYWNrU3RydWN0OworICAgIERpc3BsYXkqIGRpc3BsYXkgPSB4MTFEaXNwbGF5
KCk7CisKKyAgICBpZiAobV9pc1dpbmRvd2VkKSB7CisgICAgICAgIG1fbnBXaW5kb3cudHlwZSA9
IE5QV2luZG93VHlwZVdpbmRvdzsKKyAgICAgICAgaWYgKG5lZWRzWEVtYmVkKSB7CisjaWYgUExB
VEZPUk0oR1RLKQorICAgICAgICAgICAgLy8gSXQgc2VlbXMgZmxhc2ggbmVlZHMgdGhlIHNvY2tl
dCB0byBiZSBpbiB0aGUgc2FtZSBwcm9jZXNzLAorICAgICAgICAgICAgLy8gSSBndWVzcyBpdCB1
c2VzIGdka193aW5kb3dfbG9va3VwKCksIHNlIHdlIGNyZWF0ZSBhIG5ldyBzb2NrZXQgaGVyZQor
ICAgICAgICAgICAgLy8gY29udGFpbmluZyBhIHBsdWcgd2l0aCB0aGUgdWkgcHJvY2VzcyBzb2Nr
ZXQgZW1iZWRkZWQuCisgICAgICAgICAgICBtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0ID0gZ3RrX3Bs
dWdfbmV3KHdpbmRvd0lEKTsKKyAgICAgICAgICAgIEd0a1dpZGdldCogc29ja2V0ID0gZ3RrX3Nv
Y2tldF9uZXcoKTsKKyAgICAgICAgICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIo
bV9wbGF0Zm9ybVBsdWdpbldpZGdldCksIHNvY2tldCk7CisgICAgICAgICAgICBndGtfd2lkZ2V0
X3Nob3coc29ja2V0KTsKKyAgICAgICAgICAgIGd0a193aWRnZXRfc2hvdyhtX3BsYXRmb3JtUGx1
Z2luV2lkZ2V0KTsKKworICAgICAgICAgICAgbV9ucFdpbmRvdy53aW5kb3cgPSAodm9pZCopZ3Rr
X3NvY2tldF9nZXRfaWQoR1RLX1NPQ0tFVChzb2NrZXQpKTsKKyAgICAgICAgICAgIEdka1dpbmRv
dyogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KHNvY2tldCk7CisgICAgICAgICAgICBj
YWxsYmFja1N0cnVjdC0+ZGlzcGxheSA9IEdES19XSU5ET1dfWERJU1BMQVkod2luZG93KTsKKyAg
ICAgICAgICAgIGNhbGxiYWNrU3RydWN0LT52aXN1YWwgPSBHREtfVklTVUFMX1hWSVNVQUwoZ2Rr
X3dpbmRvd19nZXRfdmlzdWFsKHdpbmRvdykpOworICAgICAgICAgICAgY2FsbGJhY2tTdHJ1Y3Qt
PmRlcHRoID0gZ2RrX3Zpc3VhbF9nZXRfZGVwdGgoZ2RrX3dpbmRvd19nZXRfdmlzdWFsKHdpbmRv
dykpOworICAgICAgICAgICAgY2FsbGJhY2tTdHJ1Y3QtPmNvbG9ybWFwID0gWENyZWF0ZUNvbG9y
bWFwKGRpc3BsYXksIEdES19ST09UX1dJTkRPVygpLCBjYWxsYmFja1N0cnVjdC0+dmlzdWFsLCBB
bGxvY05vbmUpOworI2VuZGlmCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAg
IFhGbHVzaChkaXNwbGF5KTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX25wV2luZG93LnR5cGUg
PSBOUFdpbmRvd1R5cGVEcmF3YWJsZTsKKyAgICAgICAgbV9ucFdpbmRvdy53aW5kb3cgPSAwOwor
CisgICAgICAgIGludCBkZXB0aCA9IGRpc3BsYXlEZXB0aCgpOworICAgICAgICBjYWxsYmFja1N0
cnVjdC0+ZGlzcGxheSA9IGRpc3BsYXk7CisgICAgICAgIGNhbGxiYWNrU3RydWN0LT5kZXB0aCA9
IGRlcHRoOworCisgICAgICAgIFhWaXN1YWxJbmZvIHZpc3VhbFRlbXBsYXRlOworICAgICAgICB2
aXN1YWxUZW1wbGF0ZS5zY3JlZW4gPSB4MTFTY3JlZW4oKTsKKyAgICAgICAgdmlzdWFsVGVtcGxh
dGUuZGVwdGggPSBkZXB0aDsKKyAgICAgICAgdmlzdWFsVGVtcGxhdGUuY19jbGFzcyA9IFRydWVD
b2xvcjsKKyAgICAgICAgaW50IG51bU1hdGNoaW5nOworICAgICAgICBYVmlzdWFsSW5mbyogdmlz
dWFsSW5mbyA9IFhHZXRWaXN1YWxJbmZvKGRpc3BsYXksIFZpc3VhbFNjcmVlbk1hc2sgfCBWaXN1
YWxEZXB0aE1hc2sgfCBWaXN1YWxDbGFzc01hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJnZpc3VhbFRlbXBsYXRlLCAmbnVtTWF0Y2hpbmcpOwor
ICAgICAgICBBU1NFUlQodmlzdWFsSW5mbyk7CisgICAgICAgIFZpc3VhbCogdmlzdWFsID0gdmlz
dWFsSW5mb1swXS52aXN1YWw7CisgICAgICAgIEFTU0VSVCh2aXN1YWwpOworICAgICAgICBYRnJl
ZSh2aXN1YWxJbmZvKTsKKworICAgICAgICBjYWxsYmFja1N0cnVjdC0+dmlzdWFsID0gdmlzdWFs
OworICAgICAgICBjYWxsYmFja1N0cnVjdC0+Y29sb3JtYXAgPSBYQ3JlYXRlQ29sb3JtYXAoZGlz
cGxheSwgcm9vdFdpbmRvd0lEKCksIHZpc3VhbCwgQWxsb2NOb25lKTsKKyAgICB9CiAKICAgICBj
YWxsU2V0V2luZG93KCk7CiAKQEAgLTIwNSw3ICsyNDksMTMgQEAgYm9vbCBOZXRzY2FwZVBsdWdp
bjo6cGxhdGZvcm1JbnZhbGlkYXRlKGNvbnN0IEludFJlY3QmKQogdm9pZCBOZXRzY2FwZVBsdWdp
bjo6cGxhdGZvcm1HZW9tZXRyeURpZENoYW5nZSgpCiB7CiAgICAgaWYgKG1faXNXaW5kb3dlZCkg
ewotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICB1aW50NjRfdCB3aW5kb3dJRCA9
IDA7CisjaWYgUExBVEZPUk0oR1RLKQorICAgICAgICB3aW5kb3dJRCA9IHN0YXRpY19jYXN0PHVp
bnQ2NF90PihHREtfV0lORE9XX1hJRChndGtfcGx1Z19nZXRfc29ja2V0X3dpbmRvdyhHVEtfUExV
RyhtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0KSkpKTsKKyNlbmRpZgorICAgICAgICBJbnRSZWN0IGNs
aXBSZWN0KG1fY2xpcFJlY3QpOworICAgICAgICBjbGlwUmVjdC5tb3ZlKC1tX2ZyYW1lUmVjdC54
KCksIC1tX2ZyYW1lUmVjdC55KCkpOworICAgICAgICBjb250cm9sbGVyKCktPndpbmRvd2VkUGx1
Z2luR2VvbWV0cnlEaWRDaGFuZ2UobV9mcmFtZVJlY3QsIGNsaXBSZWN0LCB3aW5kb3dJRCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIzMCwxMCArMjgwLDggQEAgdm9pZCBOZXRzY2Fw
ZVBsdWdpbjo6cGxhdGZvcm1WaXNpYmlsaXR5RGlkQ2hhbmdlKCkKIAogdm9pZCBOZXRzY2FwZVBs
dWdpbjo6cGxhdGZvcm1QYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGRpcnR5UmVjdCwgYm9vbCAvKmlzU25hcHNob3QqLykKIHsKLSAgICBpZiAobV9pc1dpbmRv
d2VkKSB7Ci0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKG1faXNXaW5kb3dlZCkK
ICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGlmICghbV9pc1N0YXJ0ZWQpIHsKICAgICAg
ICAgLy8gRklYTUU6IHdlIHNob3VsZCBwYWludCBhIG1pc3NpbmcgcGx1Z2luIGljb24uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxl
ci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIu
aAppbmRleCA1ZDBiYWNjLi5jMzU5NjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKQEAgLTEzNiw2ICsxMzYsMTIgQEAg
cHVibGljOgogICAgIC8vIERlY3JlbWVudHMgYSBjb3VudGVyIHRoYXQsIHdoZW4gaXQgcmVhY2hl
cyAwLCBzdG9wcyBwcmV2ZW50aW5nIHRoZSBwbHVnLWluIGZyb20gYmVpbmcgZGVzdHJveWVkLgog
ICAgIHZpcnR1YWwgdm9pZCB1bnByb3RlY3RQbHVnaW5Gcm9tRGVzdHJ1Y3Rpb24oKSA9IDA7CiAK
KyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKyAgICAvLyBDcmVhdGUgYSBwbHVnaW4gY29u
dGFpbmVyIGZvciB3aW5kb3dlZCBwbHVnaW5zCisgICAgdmlydHVhbCB1aW50NjRfdCBjcmVhdGVQ
bHVnaW5Db250YWluZXIoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdpbmRvd2VkUGx1Z2luR2Vv
bWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpID0gMDsKKyNlbmRp
ZgorCiAgICAgLy8gSGVscGVyIGNsYXNzIGZvciBkZWxheWluZyBkZXN0cnVjdGlvbiBvZiBhIHBs
dWctaW4uCiAgICAgY2xhc3MgUGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3IgewogICAgIHB1Ymxp
YzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
Y3BwCmluZGV4IGI1YzQ0ZWMuLjViYTI3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApAQCAtNDc2LDcgKzQ3NiwxOSBAQCB2b2lk
IFBsdWdpblByb3h5OjpzZXRDb21wbGV4VGV4dElucHV0RW5hYmxlZChib29sIGNvbXBsZXhUZXh0
SW5wdXRFbmFibGVkKQogICAgIGNvbnRyb2xsZXIoKS0+c2V0Q29tcGxleFRleHRJbnB1dEVuYWJs
ZWQoY29tcGxleFRleHRJbnB1dEVuYWJsZWQpOwogfQogI2VuZGlmCi0gICAgCisKKyNpZiBQTFVH
SU5fQVJDSElURUNUVVJFKFgxMSkKK3ZvaWQgUGx1Z2luUHJveHk6OmNyZWF0ZVBsdWdpbkNvbnRh
aW5lcih1aW50NjRfdCYgd2luZG93SUQpCit7CisgICAgd2luZG93SUQgPSBjb250cm9sbGVyKCkt
PmNyZWF0ZVBsdWdpbkNvbnRhaW5lcigpOworfQorCit2b2lkIFBsdWdpblByb3h5Ojp3aW5kb3dl
ZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVj
dCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lEKQor
eworICAgIGNvbnRyb2xsZXIoKS0+d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShmcmFt
ZVJlY3QsIGNsaXBSZWN0LCB3aW5kb3dJRCk7Cit9CisjZW5kaWYKKwogdm9pZCBQbHVnaW5Qcm94
eTo6dXBkYXRlKGNvbnN0IEludFJlY3QmIHBhaW50ZWRSZWN0KQogewogICAgIGlmIChwYWludGVk
UmVjdCA9PSBtX2ZyYW1lUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb3h5LmgKaW5kZXggMmYyMDk4MC4uZWNkZDM2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKQEAgLTEyMSw2ICsxMjEs
MTAgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBzZXRDb21wbGV4VGV4
dElucHV0RW5hYmxlZChib29sKTsKICNlbmRpZgorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDEx
KQorICAgIHZvaWQgY3JlYXRlUGx1Z2luQ29udGFpbmVyKHVpbnQ2NF90JiB3aW5kb3dJRCk7Cisg
ICAgdm9pZCB3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2
NF90IHdpbmRvd0lEKTsKKyNlbmRpZgogCiAgICAgU3RyaW5nIG1fcGx1Z2luUGF0aDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
Lm1lc3NhZ2VzLmluCmluZGV4IGJiMzI3YWIuLjczNWVjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2FnZXMuaW4K
QEAgLTYwLDYgKzYwLDE0IEBAIG1lc3NhZ2VzIC0+IFBsdWdpblByb3h5IHsKICAgICAjIENoYW5n
ZSB3aGV0aGVyIGNvbXBsZXh0IHRleHQgaW5wdXQgaXMgZW5hYmxlZCBmb3IgdGhpcyBwbHVnLWlu
LgogICAgIFNldENvbXBsZXhUZXh0SW5wdXRFbmFibGVkKGJvb2wgY29tcGxleFRleHRJbnB1dEVu
YWJsZWQpCiAjZW5kaWYKKworI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAgICMgQ3Jl
YXRlIHRoZSBwbHVnaW4gY29udGFpbmVyIGZvciB3aW5kb3dlZCBwbHVnaW5zCisgICAgQ3JlYXRl
UGx1Z2luQ29udGFpbmVyKCkgLT4gKHVpbnQ2NF90IHdpbmRvd0lEKQorCisgICAgIyBVcGRhdGUg
Z2VvbWV0cnkgb2Ygd2luZG93ZWQgcGx1Z2luIHdpZGdldAorICAgIFdpbmRvd2VkUGx1Z2luR2Vv
bWV0cnlEaWRDaGFuZ2UoV2ViQ29yZTo6SW50UmVjdCBmcmFtZVJlY3QsIFdlYkNvcmU6OkludFJl
Y3QgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lEKQorI2VuZGlmCiB9CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4
IGRiYTQzMjUuLjkxOTkyYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJOUFJ1bnRp
bWVVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJQbHVnaW4uaCIKICNpbmNsdWRlICJTaGFyZWFibGVC
aXRtYXAuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJX
ZWJFdmVudC5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlN
ZXNzYWdlcy5oIgpAQCAtMTE2MCw0ICsxMTYxLDE4IEBAIHZvaWQgUGx1Z2luVmlldzo6ZGlkRmFp
bExvYWQoV2ViRnJhbWUqIHdlYkZyYW1lLCBib29sIHdhc0NhbmNlbGxlZCkKICAgICBtX3BsdWdp
bi0+ZnJhbWVEaWRGYWlsKHJlcXVlc3QtPnJlcXVlc3RJRCgpLCB3YXNDYW5jZWxsZWQpOwogfQog
CisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCit1aW50NjRfdCBQbHVnaW5WaWV3OjpjcmVh
dGVQbHVnaW5Db250YWluZXIoKQoreworICAgIHVpbnQ2NF90IHdpbmRvd0lEID0gMDsKKyAgICBt
X3dlYlBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZVBsdWdpbkNv
bnRhaW5lcigpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVQbHVnaW5Db250YWluZXI6
OlJlcGx5KHdpbmRvd0lEKSk7CisgICAgcmV0dXJuIHdpbmRvd0lEOworfQorCit2b2lkIFBsdWdp
blZpZXc6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0
X3Qgd2luZG93SUQpCit7CisgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OldpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoZnJhbWVSZWN0LCBjbGlwUmVjdCwg
d2luZG93SUQpKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDkzOGU1OTUu
LmQzZTI4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuaApAQCAtMTUxLDYgKzE1MSwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBp
c1ByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcHJvdGVjdFBsdWdp
bkZyb21EZXN0cnVjdGlvbigpOwogICAgIHZpcnR1YWwgdm9pZCB1bnByb3RlY3RQbHVnaW5Gcm9t
RGVzdHJ1Y3Rpb24oKTsKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKyAgICB2aXJ0dWFs
IHVpbnQ2NF90IGNyZWF0ZVBsdWdpbkNvbnRhaW5lcigpOworICAgIHZpcnR1YWwgdm9pZCB3aW5k
b3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1l
UmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lE
KTsKKyNlbmRpZgogCiAgICAgLy8gV2ViRnJhbWU6OkxvYWRMaXN0ZW5lcgogICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hMb2FkKFdlYkZyYW1lKik7Cg==
</data>
<flag name="review"
          id="95752"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
    <flag name="commit-queue"
          id="95756"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117182</attachid>
            <date>2011-11-30 06:16:12 -0800</date>
            <delta_ts>2012-04-25 05:32:28 -0700</delta_ts>
            <desc>New patch</desc>
            <filename>wk2-windowed-plugins3.diff</filename>
            <type>text/plain</type>
            <size>26460</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAxYzkwOGFmLi4xYWE5M2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAg
QEAKKzIwMTEtMTEtMzAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEluaXRpYWwgd2luZG93ZWQgcGx1Z2lucyBpbXBsZW1lbnRhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEwNjUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdp
blByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luQ29udHJvbGxlclByb3h5OjpjcmVhdGVQbHVnaW5Db250YWluZXIpOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFu
Z2UpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAg
ICAod2Via2l0V2ViVmlld0Jhc2VDb250YWluZXJBZGQpOiBJbXBsZW1lbnQgR3RrQ29udGFpbmVy
OjphZGQoKS4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ29udGFpbmVyUmVtb3ZlKTogSW1w
bGVtZW50IEd0a0NvbnRhaW5lcjo6cmVtb3ZlKCkuCisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFz
ZUNvbnRhaW5lckZvcmFsbCk6IEltcGxlbWVudCBHdGtDb250YWluZXI6OmZvcmFsbCgpLgorICAg
ICAgICAod2Via2l0V2ViVmlld0Jhc2VDaGlsZE1vdmVSZXNpemUpOiBTZXQgYSBuZXcgZ2VvbWV0
cnkgZm9yIGEgY2hpbGQgd2lkZ2V0LgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VDaGlsZEFs
bG9jYXRlKTogQWxsb2NhdGUgYSBjaGlsZCB3aWRnZXQuCisgICAgICAgICh3ZWJraXRXZWJWaWV3
QmFzZVNpemVBbGxvY2F0ZSk6IEFsbG9jYXRlIGNoaWxkIHdpZGdldHMuCisgICAgICAgICh3ZWJr
aXRfd2ViX3ZpZXdfYmFzZV9jbGFzc19pbml0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaDogQWRkIHdlYmtpdFdlYlZpZXdCYXNlU2l6ZUFs
bG9jYXRlKCkuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46IEFkZCBjcmVhdGVQbHVnaW5Db250
YWluZXIKKyAgICAgICAgYW5kIHdpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UgbWVzc2Fn
ZXMuCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpwbHVnaW5XaW5kb3dNYXApOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmNyZWF0ZVBsdWdpbkNvbnRhaW5lcik6IENyZWF0ZSBhIEd0a1NvY2tldAorICAgICAgICBh
cyBjb250YWluZXIgd2lkZ2V0IGZvciB3aW5kb3dlZCBwbHVnaW5zLgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UpOiBDYWxsCisg
ICAgICAgIHdlYmtpdFdlYlZpZXdCYXNlU2l6ZUFsbG9jYXRlKCkgdG8gdXBkYXRlIHRoZSBwbHVn
aW4gd2lkZ2V0CisgICAgICAgIGdlb21ldHJ5LgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJQ
YWdlUHJveHlRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlUGx1
Z2luQ29udGFpbmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp3aW5kb3dlZFBs
dWdpbkdlb21ldHJ5RGlkQ2hhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bjo6TmV0c2NhcGVQbHVnaW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBs
dWdpbjo6cGxhdGZvcm1Qb3N0SW5pdGlhbGl6ZVdpbmRvd2VkKTogQXNrIHRoZQorICAgICAgICB1
aSBwcm9jZXNzIHRvIGNyZWF0ZSBhIHBsdWdpbiBjb250YWluZXIuCisgICAgICAgIChXZWJLaXQ6
Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBvc3RJbml0aWFsaXplV2luZG93bGVzcyk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBvc3RJbml0aWFsaXplKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2Up
OiBGb3Igd2luZG93ZWQKKyAgICAgICAgcGx1Z2lucyBub3RpZnkgdGhlIHVpIHByb2Nlc3MgdGhh
dCB0aGUgcGx1Z2luIGdlb21ldHJ5IGhhcworICAgICAgICBjaGFuZ2VkLgorICAgICAgICAoV2Vi
S2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QYWludCk6IERvIG5vdGhpbmcgZm9yIHdpbmRv
d2VkCisgICAgICAgIHBsdWdpbnMsIHRoZSBjYWxsZXIgYWxyZWFkeSBjYWxscyBjYWxsU2V0V2lu
ZG93KCkuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5Qcm94eTo6Y3JlYXRlUGx1Z2luQ29udGFpbmVyKToKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6
OmNyZWF0ZVBsdWdpbkNvbnRhaW5lcik6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Ondp
bmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3Lmg6CisKIDIwMTEtMTEtMzAgIEFkZW5pbHNvbiBDYXZhbGNhbnRpICA8
YWRlbmlsc29uLnNpbHZhQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW1F0XVtXSzJdIEltcGxl
bWVudCBwZXJtaXNzaW9uIEFQSSBmb3IgUXQgcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCmluZGV4IGJkMDcxYjYu
LjZmY2E1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2lu
Q29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1Bs
dWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTYyMSw2ICs2MjEsMjAgQEAgYm9vbCBQbHVnaW5D
b250cm9sbGVyUHJveHk6OnRyeVRvU2hvcnRDaXJjdWl0RXZhbHVhdGUoTlBPYmplY3QqIG5wT2Jq
ZWN0LCBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVS
RShYMTEpCit1aW50NjRfdCBQbHVnaW5Db250cm9sbGVyUHJveHk6OmNyZWF0ZVBsdWdpbkNvbnRh
aW5lcigpCit7CisgICAgdWludDY0X3Qgd2luZG93SUQgPSAwOworICAgIG1fY29ubmVjdGlvbi0+
Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6UGx1Z2luUHJveHk6OkNyZWF0ZVBsdWdp
bkNvbnRhaW5lcigpLCBNZXNzYWdlczo6UGx1Z2luUHJveHk6OkNyZWF0ZVBsdWdpbkNvbnRhaW5l
cjo6UmVwbHkod2luZG93SUQpLCBtX3BsdWdpbkluc3RhbmNlSUQpOworICAgIHJldHVybiB3aW5k
b3dJRDsKK30KKwordm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OndpbmRvd2VkUGx1Z2luR2Vv
bWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBJbnRSZWN0JiBj
bGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpCit7CisgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb3h5OjpXaW5kb3dlZFBsdWdpbkdlb21ldHJ5
RGlkQ2hhbmdlKGZyYW1lUmVjdCwgY2xpcFJlY3QsIHdpbmRvd0lEKSwgbV9wbHVnaW5JbnN0YW5j
ZUlEKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVO
QUJMRShQTFVHSU5fUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCmluZGV4IDUxYzM0OGQuLmU1NWE5ZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkuaApAQCAtMTA5LDYgKzEwOSwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBnZXRB
dXRoZW50aWNhdGlvbkluZm8oY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJiwgU3RyaW5n
JiB1c2VybmFtZSwgU3RyaW5nJiBwYXNzd29yZCk7CiAgICAgdmlydHVhbCB2b2lkIHByb3RlY3RQ
bHVnaW5Gcm9tRGVzdHJ1Y3Rpb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgdW5wcm90ZWN0UGx1Z2lu
RnJvbURlc3RydWN0aW9uKCk7CisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgdmly
dHVhbCB1aW50NjRfdCBjcmVhdGVQbHVnaW5Db250YWluZXIoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBm
cmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRfdCB3aW5k
b3dJRCk7CisjZW5kaWYKICAgICAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQg
ZnJhbWVEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHJlcXVlc3RJRCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5k
ZXggN2ViYTczZS4uODYyMWI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtNTMsMTIgKzUzLDE2IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaW9u
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0NvbnRleHQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCit0eXBlZGVmIEhhc2hNYXA8R3RrV2lk
Z2V0KiwgSW50UmVjdD4gV2ViS2l0V2ViVmlld0NoaWxkcmVuTWFwOworCiBzdHJ1Y3QgX1dlYktp
dFdlYlZpZXdCYXNlUHJpdmF0ZSB7CisgICAgV2ViS2l0V2ViVmlld0NoaWxkcmVuTWFwIGNoaWxk
cmVuOwogICAgIE93blB0cjxQYWdlQ2xpZW50SW1wbD4gcGFnZUNsaWVudDsKICAgICBSZWZQdHI8
V2ViUGFnZVByb3h5PiBwYWdlUHJveHk7CiAgICAgZ2Jvb2xlYW4gaXNQYWdlQWN0aXZlOwpAQCAt
MTE0LDkgKzExOCw1MyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVJlYWxpemUoR3Rr
V2lkZ2V0KiB3aWRnZXQpCiAKIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ29udGFpbmVy
QWRkKEd0a0NvbnRhaW5lciogY29udGFpbmVyLCBHdGtXaWRnZXQqIHdpZGdldCkKIHsKKyAgICBX
ZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFV19CQVNFKGNvbnRhaW5l
cik7CisgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsK
KworICAgIEd0a0FsbG9jYXRpb24gY2hpbGRBbGxvY2F0aW9uOworICAgIGd0a193aWRnZXRfZ2V0
X2FsbG9jYXRpb24od2lkZ2V0LCAmY2hpbGRBbGxvY2F0aW9uKTsKKyAgICBwcml2LT5jaGlsZHJl
bi5zZXQod2lkZ2V0LCBjaGlsZEFsbG9jYXRpb24pOworCiAgICAgZ3RrX3dpZGdldF9zZXRfcGFy
ZW50KHdpZGdldCwgR1RLX1dJREdFVChjb250YWluZXIpKTsKIH0KIAorc3RhdGljIHZvaWQgd2Vi
a2l0V2ViVmlld0Jhc2VDb250YWluZXJSZW1vdmUoR3RrQ29udGFpbmVyKiBjb250YWluZXIsIEd0
a1dpZGdldCogd2lkZ2V0KQoreworICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3ID0gV0VC
S0lUX1dFQl9WSUVXX0JBU0UoY29udGFpbmVyKTsKKyAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZh
dGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworICAgIEd0a1dpZGdldCogd2lkZ2V0Q29udGFpbmVy
ID0gR1RLX1dJREdFVChjb250YWluZXIpOworCisgICAgQVNTRVJUKHByaXYtPmNoaWxkcmVuLmNv
bnRhaW5zKHdpZGdldCkpOworICAgIGdib29sZWFuIHdhc1Zpc2libGUgPSBndGtfd2lkZ2V0X2dl
dF92aXNpYmxlKHdpZGdldCk7CisgICAgZ3RrX3dpZGdldF91bnBhcmVudCh3aWRnZXQpOworCisg
ICAgcHJpdi0+Y2hpbGRyZW4ucmVtb3ZlKHdpZGdldCk7CisgICAgaWYgKHdhc1Zpc2libGUgJiYg
Z3RrX3dpZGdldF9nZXRfdmlzaWJsZSh3aWRnZXRDb250YWluZXIpKQorICAgICAgICBndGtfd2lk
Z2V0X3F1ZXVlX3Jlc2l6ZSh3aWRnZXRDb250YWluZXIpOworfQorCitzdGF0aWMgdm9pZCB3ZWJr
aXRXZWJWaWV3QmFzZUNvbnRhaW5lckZvcmFsbChHdGtDb250YWluZXIgKmNvbnRhaW5lciwgZ2Jv
b2xlYW4gaW5jbHVkZUludGVybmFscywgR3RrQ2FsbGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIGNh
bGxiYWNrRGF0YSkKK3sKKyAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlldyA9IFdFQktJVF9X
RUJfVklFV19CQVNFKGNvbnRhaW5lcik7CisgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBw
cml2ID0gd2ViVmlldy0+cHJpdjsKKworICAgIFdlYktpdFdlYlZpZXdDaGlsZHJlbk1hcCBjaGls
ZHJlbiA9IHByaXYtPmNoaWxkcmVuOworICAgIFdlYktpdFdlYlZpZXdDaGlsZHJlbk1hcDo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gY2hpbGRyZW4uZW5kKCk7CisgICAgZm9yIChXZWJLaXRXZWJWaWV3
Q2hpbGRyZW5NYXA6OmNvbnN0X2l0ZXJhdG9yIGN1cnJlbnQgPSBjaGlsZHJlbi5iZWdpbigpOyBj
dXJyZW50ICE9IGVuZDsgKytjdXJyZW50KQorICAgICAgICAoKmNhbGxiYWNrKShjdXJyZW50LT5m
aXJzdCwgY2FsbGJhY2tEYXRhKTsKK30KKwordm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNoaWxkTW92
ZVJlc2l6ZShXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlldywgR3RrV2lkZ2V0KiBjaGlsZCwgY29u
c3QgSW50UmVjdCYgY2hpbGRSZWN0KQoreworICAgIEludFJlY3QgZ2VvbWV0cnkgPSB3ZWJWaWV3
LT5wcml2LT5jaGlsZHJlbi5nZXQoY2hpbGQpOworCisgICAgaWYgKGdlb21ldHJ5ID09IGNoaWxk
UmVjdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgd2ViVmlldy0+cHJpdi0+Y2hpbGRyZW4uc2V0
KGNoaWxkLCBjaGlsZFJlY3QpOworICAgIGd0a193aWRnZXRfcXVldWVfcmVzaXplX25vX3JlZHJh
dyhHVEtfV0lER0VUKHdlYlZpZXcpKTsKK30KKwogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jh
c2VGaW5hbGl6ZShHT2JqZWN0KiBnb2JqZWN0KQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3
ZWJraXRXZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKGdvYmplY3QpOwpAQCAtMTcz
LDYgKzIyMSwyMiBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VEcmF3KEd0a1dp
ZGdldCogd2lkZ2V0LCBjYWlyb190KiBjcikKICAgICByZXR1cm4gRkFMU0U7CiB9CiAKK3N0YXRp
YyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ2hpbGRBbGxvY2F0ZShHdGtXaWRnZXQqIGNoaWxkLCBn
cG9pbnRlciB1c2VyRGF0YSkKK3sKKyAgICBpZiAoIWd0a193aWRnZXRfZ2V0X3Zpc2libGUoY2hp
bGQpKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jh
c2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh1c2VyRGF0YSk7CisgICAgV2ViS2l0V2ViVmlld0Jh
c2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7CisgICAgSW50UmVjdCBnZW9tZXRy
eShwcml2LT5jaGlsZHJlbi5nZXQoY2hpbGQpKTsKKyAgICBpZiAoZ2VvbWV0cnkuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBHdGtBbGxvY2F0aW9uIGNoaWxkQWxsb2NhdGlvbihn
ZW9tZXRyeSk7CisgICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKGNoaWxkLCAmY2hpbGRBbGxv
Y2F0aW9uKTsKKyAgICBwcml2LT5jaGlsZHJlbi5zZXQoY2hpbGQsIEludFJlY3QoKSk7Cit9CisK
IHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2l6ZUFsbG9jYXRlKEd0a1dpZGdldCogd2lk
Z2V0LCBHdGtBbGxvY2F0aW9uKiBhbGxvY2F0aW9uKQogewogICAgIFdlYktpdFdlYlZpZXdCYXNl
KiB3ZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCk7CkBAIC0xODIsNiAr
MjQ2LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTaXplQWxsb2NhdGUoR3RrV2lk
Z2V0KiB3aWRnZXQsIEd0a0FsbG9jYXRpb24qIGFsbG8KICAgICAgICAgcmV0dXJuOwogCiAgICAg
R1RLX1dJREdFVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfYmFzZV9wYXJlbnRfY2xhc3MpLT5zaXpl
X2FsbG9jYXRlKHdpZGdldCwgYWxsb2NhdGlvbik7CisKKyAgICBndGtfY29udGFpbmVyX2ZvcmVh
Y2goR1RLX0NPTlRBSU5FUih3aWRnZXQpLCB3ZWJraXRXZWJWaWV3QmFzZUNoaWxkQWxsb2NhdGUs
IHdlYlZpZXdCYXNlKTsKKwogICAgIHByaXYtPnBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKS0+c2V0
U2l6ZShJbnRTaXplKGFsbG9jYXRpb24tPndpZHRoLCBhbGxvY2F0aW9uLT5oZWlnaHQpLCBJbnRT
aXplKCkpOwogfQogCkBAIC00MTQsNiArNDgxLDggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92
aWV3X2Jhc2VfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3QmFzZUNsYXNzKiB3ZWJraXRXZWJWaWUK
IAogICAgIEd0a0NvbnRhaW5lckNsYXNzKiBjb250YWluZXJDbGFzcyA9IEdUS19DT05UQUlORVJf
Q0xBU1Mod2Via2l0V2ViVmlld0Jhc2VDbGFzcyk7CiAgICAgY29udGFpbmVyQ2xhc3MtPmFkZCA9
IHdlYmtpdFdlYlZpZXdCYXNlQ29udGFpbmVyQWRkOworICAgIGNvbnRhaW5lckNsYXNzLT5yZW1v
dmUgPSB3ZWJraXRXZWJWaWV3QmFzZUNvbnRhaW5lclJlbW92ZTsKKyAgICBjb250YWluZXJDbGFz
cy0+Zm9yYWxsID0gd2Via2l0V2ViVmlld0Jhc2VDb250YWluZXJGb3JhbGw7CiB9CiAKIFdlYktp
dFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZShXZWJDb250ZXh0KiBjb250ZXh0
LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKaW5kZXggM2E5
YTQwYi4uMjk5MDg2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKQEAgLTUwLDYgKzUwLDggQEAg
dm9pZCB3ZWJraXRXZWJWaWV3QmFzZUZvcndhcmROZXh0S2V5RXZlbnQoV2ViS2l0V2ViVmlld0Jh
c2UqKTsKIAogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVN0YXJ0RHJhZyhXZWJLaXRXZWJWaWV3QmFz
ZSosIGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRhJiwgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IGRyYWdJbWFnZSk7CiAKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VDaGlsZE1vdmVSZXNpemUoV2Vi
S2l0V2ViVmlld0Jhc2UqLCBHdGtXaWRnZXQqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisK
IEdfRU5EX0RFQ0xTCiAKICNlbmRpZiAvLyBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGVfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDgyMTI0MTcuLmY1MmNiMWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTgxOSw2ICs4MTks
MTEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0UmVuZGVyVHJlZVNpemUodWludDY0X3QgdHJl
ZVNpemUpIHsgbV9yZW5kZXJUcmVlU2l6ZSA9IHRyZWVTaXplOyB9CiAKKyNpZiBQTFVHSU5fQVJD
SElURUNUVVJFKFgxMSkKKyAgICB2b2lkIGNyZWF0ZVBsdWdpbkNvbnRhaW5lcih1aW50NjRfdCYg
d2luZG93SUQpOworICAgIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNs
aXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCk7CisjZW5kaWYKKwogICAgIFBhZ2VDbGllbnQqIG1f
cGFnZUNsaWVudDsKICAgICBXZWJMb2FkZXJDbGllbnQgbV9sb2FkZXJDbGllbnQ7CiAgICAgV2Vi
UG9saWN5Q2xpZW50IG1fcG9saWN5Q2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYWFiOWVhNS4uNWRiMTk5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC0yNjQsNiArMjY0LDEyIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU2No
ZWR1bGVDaGlsZFdpbmRvd0dlb21ldHJ5VXBkYXRlKFdlYktpdDo6V2luZG93R2VvbWV0cnkgZ2Vv
bWV0cnkpCiAjZW5kaWYKIAorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAgICMgWDEx
IHdpbmRvd2VkIHBsdWdpbiBtZXNzYWdlcworICAgIENyZWF0ZVBsdWdpbkNvbnRhaW5lcigpIC0+
ICh1aW50NjRfdCB3aW5kb3dJRCkKKyAgICBXaW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdl
KFdlYkNvcmU6OkludFJlY3QgZnJhbWVSZWN0LCBXZWJDb3JlOjpJbnRSZWN0IGNsaXBSZWN0LCB1
aW50NjRfdCB3aW5kb3dJRCkKKyNlbmRpZgorCiAgICAgIyBTZWFyY2ggcG9wdXAgbWVudXMKICAg
ICBTYXZlUmVjZW50U2VhcmNoZXMoV1RGOjpTdHJpbmcgbmFtZSwgVmVjdG9yPFN0cmluZz4gc2Vh
cmNoSXRlbXMpCiAgICAgTG9hZFJlY2VudFNlYXJjaGVzKFdURjo6U3RyaW5nIG5hbWUpIC0+IChW
ZWN0b3I8U3RyaW5nPiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L1dlYlBhZ2VQcm94eUd0ay5jcHAKaW5kZXggMTEyN2RkZS4uOTRjMzJmNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcApAQCAtMzAsNiAr
MzAsOCBAQAogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCisjaW5jbHVkZSAi
V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgiCisjaW5jbHVkZSA8Z3RrL2d0a3guaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKQEAgLTU5LDQgKzYxLDM1IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojps
b2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4mKQogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKK3R5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgR3RrV2lkZ2V0
KiA+IFBsdWdpbldpbmRvd01hcDsKK3N0YXRpYyBQbHVnaW5XaW5kb3dNYXAmIHBsdWdpbldpbmRv
d01hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChQbHVnaW5XaW5kb3dNYXAsIG1hcCwg
KCkpOworICAgIHJldHVybiBtYXA7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVQbHVn
aW5Db250YWluZXIodWludDY0X3QmIHdpbmRvd0lEKQoreworICAgIEd0a1dpZGdldCogc29ja2V0
ID0gZ3RrX3NvY2tldF9uZXcoKTsKKyAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVS
KHZpZXdXaWRnZXQoKSksIHNvY2tldCk7CisgICAgZ3RrX3dpZGdldF9zaG93KHNvY2tldCk7CisK
KyAgICB3aW5kb3dJRCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihndGtfc29ja2V0X2dldF9pZChH
VEtfU09DS0VUKHNvY2tldCkpKTsKKyAgICBwbHVnaW5XaW5kb3dNYXAoKS5zZXQod2luZG93SUQs
IHNvY2tldCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5
RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lEKQoreworICAgIEd0a1dpZGdl
dCogcGx1Z2luID0gcGx1Z2luV2luZG93TWFwKCkuZ2V0KHdpbmRvd0lEKTsKKworICAgIGlmIChn
dGtfd2lkZ2V0X2dldF9yZWFsaXplZChwbHVnaW4pKSB7CisgICAgICAgIEdka1JlY3RhbmdsZSBj
bGlwKGNsaXBSZWN0KTsKKyAgICAgICAgY2Fpcm9fcmVnaW9uX3QqIGNsaXBSZWdpb24gPSBjYWly
b19yZWdpb25fY3JlYXRlX3JlY3RhbmdsZSgmY2xpcCk7CisgICAgICAgIGdka193aW5kb3dfc2hh
cGVfY29tYmluZV9yZWdpb24oZ3RrX3dpZGdldF9nZXRfd2luZG93KHBsdWdpbiksIGNsaXBSZWdp
b24sIDAsIDApOworICAgICAgICBjYWlyb19yZWdpb25fZGVzdHJveShjbGlwUmVnaW9uKTsKKyAg
ICB9CisKKyAgICB3ZWJraXRXZWJWaWV3QmFzZUNoaWxkTW92ZVJlc2l6ZShXRUJLSVRfV0VCX1ZJ
RVdfQkFTRSh2aWV3V2lkZ2V0KCkpLCBwbHVnaW4sIGZyYW1lUmVjdCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dl
YlBhZ2VQcm94eVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQYWdlUHJv
eHlRdC5jcHAKaW5kZXggZjk3MTRmYi4uZGMzN2QwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1dlYlBhZ2VQcm94eVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvV2ViUGFnZVByb3h5UXQuY3BwCkBAIC00Nyw0ICs0NywxNCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTdHJp
bmc+JikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6Y3Jl
YXRlUGx1Z2luQ29udGFpbmVyKHVpbnQ2NF90JiB3aW5kb3dJRCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURp
ZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
Y3BwCmluZGV4IDQwODlhNWYuLjAwZDQ1MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApA
QCAtODcsNiArODcsOSBAQCBOZXRzY2FwZVBsdWdpbjo6TmV0c2NhcGVQbHVnaW4oUGFzc1JlZlB0
cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gcGx1Z2luTW9kdWxlKQogI2VsaWYgUExVR0lOX0FSQ0hJ
VEVDVFVSRShYMTEpCiAgICAgLCBtX2RyYXdhYmxlKDApCiAgICAgLCBtX3BsdWdpbkRpc3BsYXko
MCkKKyNpZiBQTEFURk9STShHVEspCisgICAgLCBtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0KDApCisj
ZW5kaWYKICNlbmRpZgogewogICAgIG1fbnBwLm5kYXRhID0gdGhpczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmgKaW5kZXggODQ1NDE4Mi4uZGFiNzhlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKQEAg
LTIzMyw2ICsyMzMsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlV2luZG93ZWRHZW9t
ZXRyeVVwZGF0ZSgpOwogI2VuZGlmCiAKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKyAg
ICBib29sIHBsYXRmb3JtUG9zdEluaXRpYWxpemVXaW5kb3dlZChib29sIG5lZWRzWEVtYmVkLCB1
aW50NjRfdCB3aW5kb3dJRCk7CisgICAgYm9vbCBwbGF0Zm9ybVBvc3RJbml0aWFsaXplV2luZG93
bGVzcygpOworI2VuZGlmCisKICAgICB1aW50NjRfdCBtX25leHRSZXF1ZXN0SUQ7CiAKICAgICB0
eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6cGFpcjxTdHJpbmcsIHZvaWQqPiA+IFBlbmRp
bmdVUkxOb3RpZnlNYXA7CkBAIC0zNDEsNiArMzQ2LDkgQEAgcHJpdmF0ZToKICNlbGlmIFBMVUdJ
Tl9BUkNISVRFQ1RVUkUoWDExKQogICAgIFBpeG1hcCBtX2RyYXdhYmxlOwogICAgIERpc3BsYXkq
IG1fcGx1Z2luRGlzcGxheTsKKyNpZiBQTEFURk9STShHVEspCisgICAgR3RrV2lkZ2V0KiBtX3Bs
YXRmb3JtUGx1Z2luV2lkZ2V0OworI2VuZGlmCiAKIHB1YmxpYzogLy8gTmVlZCB0byBjYWxsIGl0
IGluIHRoZSBOUE5fR2V0VmFsdWUgYnJvd3NlciBjYWxsYmFjay4KICAgICBzdGF0aWMgRGlzcGxh
eSogeDExSG9zdERpc3BsYXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5j
cHAKaW5kZXggYTFjMmEzMS4uZDFkMjYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBs
dWdpblgxMS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2lu
LmgiCiAKKyNpbmNsdWRlICJQbHVnaW5Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2ViRXZlbnQu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvTm90SW1wbGVtZW50ZWQuaD4KQEAgLTM5LDYgKzQwLDEwIEBACiAjaW5jbHVkZSAiUGxhdGZv
cm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgogI2luY2x1ZGUgPGNh
aXJvL2NhaXJvLXhsaWIuaD4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaWZuZGVmIEdUS19BUElf
VkVSU0lPTl8yCisjaW5jbHVkZSA8Z3RrL2d0a3guaD4KKyNlbmRpZgogI2luY2x1ZGUgPGdkay9n
ZGt4Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtWZXJzaW9uaW5nLmg+CiAjZW5kaWYKQEAgLTE0
NCwyNiArMTQ5LDUzIEBAIERpc3BsYXkqIE5ldHNjYXBlUGx1Z2luOjp4MTFIb3N0RGlzcGxheSgp
CiAjZW5kaWYKIH0KIAotYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1Qb3N0SW5pdGlhbGl6
ZSgpCitib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBvc3RJbml0aWFsaXplV2luZG93ZWQo
Ym9vbCBuZWVkc1hFbWJlZCwgdWludDY0X3Qgd2luZG93SUQpCiB7Ci0jaWYgUExBVEZPUk0oR1RL
KQotICAgIGlmIChtb2R1bGVNaXhlc0d0a1N5bWJvbHMobV9wbHVnaW5Nb2R1bGUtPm1vZHVsZSgp
KSkKKyAgICBtX25wV2luZG93LnR5cGUgPSBOUFdpbmRvd1R5cGVXaW5kb3c7CisgICAgaWYgKCFu
ZWVkc1hFbWJlZCkgeworICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgRGlzcGxheSogZGlzcGxheSA9IHgxMUhvc3REaXNwbGF5KCk7
CisKKyNpZiBQTEFURk9STShHVEspCisgICAgLy8gSXQgc2VlbXMgZmxhc2ggbmVlZHMgdGhlIHNv
Y2tldCB0byBiZSBpbiB0aGUgc2FtZSBwcm9jZXNzLAorICAgIC8vIEkgZ3Vlc3MgaXQgdXNlcyBn
ZGtfd2luZG93X2xvb2t1cCgpLCBzZSB3ZSBjcmVhdGUgYSBuZXcgc29ja2V0IGhlcmUKKyAgICAv
LyBjb250YWluaW5nIGEgcGx1ZyB3aXRoIHRoZSB1aSBwcm9jZXNzIHNvY2tldCBlbWJlZGRlZC4K
KyAgICBtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0ID0gZ3RrX3BsdWdfbmV3KHN0YXRpY19jYXN0PFdp
bmRvdz4od2luZG93SUQpKTsKKyAgICBHdGtXaWRnZXQqIHNvY2tldCA9IGd0a19zb2NrZXRfbmV3
KCk7CisgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihtX3BsYXRmb3JtUGx1Z2lu
V2lkZ2V0KSwgc29ja2V0KTsKKyAgICBndGtfd2lkZ2V0X3Nob3coc29ja2V0KTsKKyAgICBndGtf
d2lkZ2V0X3Nob3cobV9wbGF0Zm9ybVBsdWdpbldpZGdldCk7CisKKyAgICBtX25wV2luZG93Lndp
bmRvdyA9IEdJTlRfVE9fUE9JTlRFUihndGtfc29ja2V0X2dldF9pZChHVEtfU09DS0VUKHNvY2tl
dCkpKTsKKyAgICBHZGtXaW5kb3cqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhzb2Nr
ZXQpOworICAgIE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqIGNhbGxiYWNrU3RydWN0ID0gc3Rh
dGljX2Nhc3Q8TlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCo+KG1fbnBXaW5kb3cud3NfaW5mbyk7
CisgICAgY2FsbGJhY2tTdHJ1Y3QtPmRpc3BsYXkgPSBHREtfV0lORE9XX1hESVNQTEFZKHdpbmRv
dyk7CisgICAgY2FsbGJhY2tTdHJ1Y3QtPnZpc3VhbCA9IEdES19WSVNVQUxfWFZJU1VBTChnZGtf
d2luZG93X2dldF92aXN1YWwod2luZG93KSk7CisgICAgY2FsbGJhY2tTdHJ1Y3QtPmRlcHRoID0g
Z2RrX3Zpc3VhbF9nZXRfZGVwdGgoZ2RrX3dpbmRvd19nZXRfdmlzdWFsKHdpbmRvdykpOworICAg
IGNhbGxiYWNrU3RydWN0LT5jb2xvcm1hcCA9IFhDcmVhdGVDb2xvcm1hcChkaXNwbGF5LCBHREtf
Uk9PVF9XSU5ET1coKSwgY2FsbGJhY2tTdHJ1Y3QtPnZpc3VhbCwgQWxsb2NOb25lKTsKICNlbmRp
ZgogCi0gICAgaWYgKG1faXNXaW5kb3dlZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFhG
bHVzaChkaXNwbGF5KTsKIAotICAgIGlmICghKG1fcGx1Z2luRGlzcGxheSA9IGdldFBsdWdpbkRp
c3BsYXkoKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYWxsU2V0V2luZG93KCk7CiAK
LSAgICBOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0KiBjYWxsYmFja1N0cnVjdCA9IG5ldyBOUFNl
dFdpbmRvd0NhbGxiYWNrU3RydWN0OwotICAgIGNhbGxiYWNrU3RydWN0LT50eXBlID0gMDsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1Qb3N0SW5p
dGlhbGl6ZVdpbmRvd2xlc3MoKQorewogICAgIERpc3BsYXkqIGRpc3BsYXkgPSB4MTFIb3N0RGlz
cGxheSgpOworICAgIG1fbnBXaW5kb3cudHlwZSA9IE5QV2luZG93VHlwZURyYXdhYmxlOworICAg
IG1fbnBXaW5kb3cud2luZG93ID0gMDsKKwogICAgIGludCBkZXB0aCA9IGRpc3BsYXlEZXB0aCgp
OwogI2lmIFBMQVRGT1JNKFFUKQogICAgIEFTU0VSVChkZXB0aCA9PSAxNiB8fCBkZXB0aCA9PSAy
NCB8fCBkZXB0aCA9PSAzMik7CiAjZW5kaWYKKyAgICBOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0
KiBjYWxsYmFja1N0cnVjdCA9IHN0YXRpY19jYXN0PE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3Qq
PihtX25wV2luZG93LndzX2luZm8pOwogICAgIGNhbGxiYWNrU3RydWN0LT5kaXNwbGF5ID0gZGlz
cGxheTsKICAgICBjYWxsYmFja1N0cnVjdC0+ZGVwdGggPSBkZXB0aDsKIApAQCAtMTgyLDE1ICsy
MTQsNDUgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1Qb3N0SW5pdGlhbGl6ZSgpCiAg
ICAgY2FsbGJhY2tTdHJ1Y3QtPnZpc3VhbCA9IHZpc3VhbDsKICAgICBjYWxsYmFja1N0cnVjdC0+
Y29sb3JtYXAgPSBYQ3JlYXRlQ29sb3JtYXAoZGlzcGxheSwgcm9vdFdpbmRvd0lEKCksIHZpc3Vh
bCwgQWxsb2NOb25lKTsKIAotICAgIG1fbnBXaW5kb3cudHlwZSA9IE5QV2luZG93VHlwZURyYXdh
YmxlOwotICAgIG1fbnBXaW5kb3cud2luZG93ID0gMDsKLSAgICBtX25wV2luZG93LndzX2luZm8g
PSBjYWxsYmFja1N0cnVjdDsKLQogICAgIGNhbGxTZXRXaW5kb3coKTsKIAogICAgIHJldHVybiB0
cnVlOwogfQogCitib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBvc3RJbml0aWFsaXplKCkK
K3sKKyNpZiBQTEFURk9STShHVEspCisgICAgaWYgKG1vZHVsZU1peGVzR3RrU3ltYm9scyhtX3Bs
dWdpbk1vZHVsZS0+bW9kdWxlKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKwor
ICAgIHVpbnQ2NF90IHdpbmRvd0lEID0gMDsKKyAgICBib29sIG5lZWRzWEVtYmVkID0gZmFsc2U7
CisgICAgaWYgKG1faXNXaW5kb3dlZCkgeworICAgICAgICBOUFBfR2V0VmFsdWUoTlBQVnBsdWdp
bk5lZWRzWEVtYmVkLCAmbmVlZHNYRW1iZWQpOworICAgICAgICBpZiAobmVlZHNYRW1iZWQpIHsK
KyAgICAgICAgICAgIHdpbmRvd0lEID0gY29udHJvbGxlcigpLT5jcmVhdGVQbHVnaW5Db250YWlu
ZXIoKTsKKyAgICAgICAgICAgIGlmICghd2luZG93SUQpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICgh
KG1fcGx1Z2luRGlzcGxheSA9IGdldFBsdWdpbkRpc3BsYXkoKSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqIGNhbGxiYWNrU3RydWN0ID0g
bmV3IE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3Q7CisgICAgY2FsbGJhY2tTdHJ1Y3QtPnR5cGUg
PSAwOworICAgIG1fbnBXaW5kb3cud3NfaW5mbyA9IGNhbGxiYWNrU3RydWN0OworCisgICAgaWYg
KG1faXNXaW5kb3dlZCkKKyAgICAgICAgcmV0dXJuIHBsYXRmb3JtUG9zdEluaXRpYWxpemVXaW5k
b3dlZChuZWVkc1hFbWJlZCwgd2luZG93SUQpOworCisgICAgcmV0dXJuIHBsYXRmb3JtUG9zdElu
aXRpYWxpemVXaW5kb3dsZXNzKCk7Cit9CisKIHZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3Jt
RGVzdHJveSgpCiB7CiAgICAgTlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCogY2FsbGJhY2tTdHJ1
Y3QgPSBzdGF0aWNfY2FzdDxOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0Kj4obV9ucFdpbmRvdy53
c19pbmZvKTsKQEAgLTIxMyw3ICsyNzUsMTMgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZv
cm1JbnZhbGlkYXRlKGNvbnN0IEludFJlY3QmKQogdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZv
cm1HZW9tZXRyeURpZENoYW5nZSgpCiB7CiAgICAgaWYgKG1faXNXaW5kb3dlZCkgewotICAgICAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICB1aW50NjRfdCB3aW5kb3dJRCA9IDA7CisjaWYg
UExBVEZPUk0oR1RLKQorICAgICAgICB3aW5kb3dJRCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihH
REtfV0lORE9XX1hJRChndGtfcGx1Z19nZXRfc29ja2V0X3dpbmRvdyhHVEtfUExVRyhtX3BsYXRm
b3JtUGx1Z2luV2lkZ2V0KSkpKTsKKyNlbmRpZgorICAgICAgICBJbnRSZWN0IGNsaXBSZWN0KG1f
Y2xpcFJlY3QpOworICAgICAgICBjbGlwUmVjdC5tb3ZlKC1tX2ZyYW1lUmVjdEluV2luZG93Q29v
cmRpbmF0ZXMueCgpLCAtbV9mcmFtZVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzLnkoKSk7CisgICAg
ICAgIGNvbnRyb2xsZXIoKS0+d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShtX2ZyYW1l
UmVjdEluV2luZG93Q29vcmRpbmF0ZXMsIGNsaXBSZWN0LCB3aW5kb3dJRCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTIzOCwxMCArMzA2LDggQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6
cGxhdGZvcm1WaXNpYmlsaXR5RGlkQ2hhbmdlKCkKIAogdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxh
dGZvcm1QYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5
UmVjdCwgYm9vbCAvKmlzU25hcHNob3QqLykKIHsKLSAgICBpZiAobV9pc1dpbmRvd2VkKSB7Ci0g
ICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKG1faXNXaW5kb3dlZCkKICAgICAgICAg
cmV0dXJuOwotICAgIH0KIAogICAgIGlmICghbV9pc1N0YXJ0ZWQpIHsKICAgICAgICAgLy8gRklY
TUU6IHdlIHNob3VsZCBwYWludCBhIG1pc3NpbmcgcGx1Z2luIGljb24uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaAppbmRleCBk
YTQ4ZWI2Li5kNThhYjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKQEAgLTE0Niw2ICsxNDYsMTIgQEAgcHVibGljOgog
ICAgIC8vIERlY3JlbWVudHMgYSBjb3VudGVyIHRoYXQsIHdoZW4gaXQgcmVhY2hlcyAwLCBzdG9w
cyBwcmV2ZW50aW5nIHRoZSBwbHVnLWluIGZyb20gYmVpbmcgZGVzdHJveWVkLgogICAgIHZpcnR1
YWwgdm9pZCB1bnByb3RlY3RQbHVnaW5Gcm9tRGVzdHJ1Y3Rpb24oKSA9IDA7CiAKKyNpZiBQTFVH
SU5fQVJDSElURUNUVVJFKFgxMSkKKyAgICAvLyBDcmVhdGUgYSBwbHVnaW4gY29udGFpbmVyIGZv
ciB3aW5kb3dlZCBwbHVnaW5zCisgICAgdmlydHVhbCB1aW50NjRfdCBjcmVhdGVQbHVnaW5Db250
YWluZXIoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRD
aGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpID0gMDsKKyNlbmRpZgorCiAgICAg
Ly8gSGVscGVyIGNsYXNzIGZvciBkZWxheWluZyBkZXN0cnVjdGlvbiBvZiBhIHBsdWctaW4uCiAg
ICAgY2xhc3MgUGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3IgewogICAgIHB1YmxpYzoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4
IDYzODI1MGUuLjA3NzFiYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb3h5LmNwcApAQCAtNTIzLDYgKzUyMywxOCBAQCB2b2lkIFBsdWdpblBy
b3h5OjpzZXRTdGF0dXNiYXJUZXh0KGNvbnN0IFN0cmluZyYgc3RhdHVzYmFyVGV4dCkKICAgICBj
b250cm9sbGVyKCktPnNldFN0YXR1c2JhclRleHQoc3RhdHVzYmFyVGV4dCk7CiB9CiAKKyNpZiBQ
TFVHSU5fQVJDSElURUNUVVJFKFgxMSkKK3ZvaWQgUGx1Z2luUHJveHk6OmNyZWF0ZVBsdWdpbkNv
bnRhaW5lcih1aW50NjRfdCYgd2luZG93SUQpCit7CisgICAgd2luZG93SUQgPSBjb250cm9sbGVy
KCktPmNyZWF0ZVBsdWdpbkNvbnRhaW5lcigpOworfQorCit2b2lkIFBsdWdpblByb3h5Ojp3aW5k
b3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1l
UmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lE
KQoreworICAgIGNvbnRyb2xsZXIoKS0+d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShm
cmFtZVJlY3QsIGNsaXBSZWN0LCB3aW5kb3dJRCk7Cit9CisjZW5kaWYKKwogdm9pZCBQbHVnaW5Q
cm94eTo6dXBkYXRlKGNvbnN0IEludFJlY3QmIHBhaW50ZWRSZWN0KQogewogICAgIGlmIChwYWlu
dGVkUmVjdCA9PSBwbHVnaW5Cb3VuZHMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmgKaW5kZXggZDJhNTM4Ny4uNTliOTcwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKQEAgLTEzMyw2
ICsxMzMsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsdWdpbkZvY3VzT3JXaW5kb3dGb2N1c0No
YW5nZWQoYm9vbCk7CiAgICAgdm9pZCBzZXRDb21wbGV4VGV4dElucHV0U3RhdGUodWludDY0X3Qp
OwogI2VuZGlmCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgdm9pZCBjcmVhdGVQ
bHVnaW5Db250YWluZXIodWludDY0X3QmIHdpbmRvd0lEKTsKKyAgICB2b2lkIHdpbmRvd2VkUGx1
Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpOworI2Vu
ZGlmCiAKICAgICBTdHJpbmcgbV9wbHVnaW5QYXRoOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
Y2U3NTYxNi4uNjIxMGIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdlcy5pbgpAQCAtNjMsNiArNjMsMTQgQEAg
bWVzc2FnZXMgLT4gUGx1Z2luUHJveHkgewogICAgICMgQ2hhbmdlIHdoZXRoZXIgY29tcGxleHQg
dGV4dCBpbnB1dCBpcyBlbmFibGVkIGZvciB0aGlzIHBsdWctaW4uCiAgICAgU2V0Q29tcGxleFRl
eHRJbnB1dFN0YXRlKHVpbnQ2NF90IGNvbXBsZXhUZXh0SW5wdXRTdGF0ZSkKICNlbmRpZgorCisj
aWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgIyBDcmVhdGUgdGhlIHBsdWdpbiBjb250
YWluZXIgZm9yIHdpbmRvd2VkIHBsdWdpbnMKKyAgICBDcmVhdGVQbHVnaW5Db250YWluZXIoKSAt
PiAodWludDY0X3Qgd2luZG93SUQpCisKKyAgICAjIFVwZGF0ZSBnZW9tZXRyeSBvZiB3aW5kb3dl
ZCBwbHVnaW4gd2lkZ2V0CisgICAgV2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShXZWJD
b3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwgV2ViQ29yZTo6SW50UmVjdCBjbGlwUmVjdCwgdWludDY0
X3Qgd2luZG93SUQpCisjZW5kaWYKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggYTg2MTYxMC4uYThmYTkyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk5QUnVudGltZVV0aWxpdGllcy5oIgogI2lu
Y2x1ZGUgIlBsdWdpbi5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgorI2luY2x1ZGUg
IldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCkBAIC0xMjMx
LDQgKzEyMzIsMTggQEAgdm9pZCBQbHVnaW5WaWV3OjpkaWRGYWlsTG9hZChXZWJGcmFtZSogd2Vi
RnJhbWUsIGJvb2wgd2FzQ2FuY2VsbGVkKQogICAgIG1fcGx1Z2luLT5mcmFtZURpZEZhaWwocmVx
dWVzdC0+cmVxdWVzdElEKCksIHdhc0NhbmNlbGxlZCk7CiB9CiAKKyNpZiBQTFVHSU5fQVJDSElU
RUNUVVJFKFgxMSkKK3VpbnQ2NF90IFBsdWdpblZpZXc6OmNyZWF0ZVBsdWdpbkNvbnRhaW5lcigp
Cit7CisgICAgdWludDY0X3Qgd2luZG93SUQgPSAwOworICAgIG1fd2ViUGFnZS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlUGx1Z2luQ29udGFpbmVyKCksIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkNyZWF0ZVBsdWdpbkNvbnRhaW5lcjo6UmVwbHkod2luZG93SUQpKTsK
KyAgICByZXR1cm4gd2luZG93SUQ7Cit9CisKK3ZvaWQgUGx1Z2luVmlldzo6d2luZG93ZWRQbHVn
aW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCkKK3sKKyAg
ICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2luZG93ZWRQbHVnaW5H
ZW9tZXRyeURpZENoYW5nZShmcmFtZVJlY3QsIGNsaXBSZWN0LCB3aW5kb3dJRCkpOworfQorI2Vu
ZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggOGY1MmU4Yy4uYzQ4NGY4YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC0xNjAsNiAr
MTYwLDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzUHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBwcm90ZWN0UGx1Z2luRnJvbURlc3RydWN0aW9uKCk7
CiAgICAgdmlydHVhbCB2b2lkIHVucHJvdGVjdFBsdWdpbkZyb21EZXN0cnVjdGlvbigpOworI2lm
IFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAgIHZpcnR1YWwgdWludDY0X3QgY3JlYXRlUGx1
Z2luQ29udGFpbmVyKCk7CisgICAgdmlydHVhbCB2b2lkIHdpbmRvd2VkUGx1Z2luR2VvbWV0cnlE
aWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpOworI2VuZGlmCiAKICAgICAv
LyBXZWJGcmFtZTo6TG9hZExpc3RlbmVyCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQo
V2ViRnJhbWUqKTsK
</data>
<flag name="review"
          id="116532"
          type_id="1"
          status="-"
          setter="pnormand"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138789</attachid>
            <date>2012-04-25 05:32:28 -0700</date>
            <delta_ts>2012-04-26 02:16:48 -0700</delta_ts>
            <desc>Updated patch according to review comments</desc>
            <filename>wk2-windowed-plugins4.diff</filename>
            <type>text/plain</type>
            <size>28266</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzNWNiNmE4Li4xZTMwMmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQg
QEAKKzIwMTItMDQtMjUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdW1dlYktpdDJdIEluaXRpYWwgd2luZG93ZWQgcGx1Z2lucyBpbXBs
ZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjEwNjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpjcmVhdGVQbHVnaW5Db250YWluZXIpOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0
cnlEaWRDaGFuZ2UpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3Bw
OgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VDb250YWluZXJBZGQpOiBJbXBsZW1lbnQgR3Rr
Q29udGFpbmVyOjphZGQoKS4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ29udGFpbmVyUmVt
b3ZlKTogSW1wbGVtZW50IEd0a0NvbnRhaW5lcjo6cmVtb3ZlKCkuCisgICAgICAgICh3ZWJraXRX
ZWJWaWV3QmFzZUNvbnRhaW5lckZvcmFsbCk6IEltcGxlbWVudCBHdGtDb250YWluZXI6OmZvcmFs
bCgpLgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VDaGlsZE1vdmVSZXNpemUpOiBTZXQgYSBu
ZXcgZ2VvbWV0cnkgZm9yIGEgY2hpbGQgd2lkZ2V0LgorICAgICAgICAod2Via2l0V2ViVmlld0Jh
c2VDaGlsZEFsbG9jYXRlKTogQWxsb2NhdGUgYSBjaGlsZCB3aWRnZXQuCisgICAgICAgIChyZXNp
emVXZWJLaXRXZWJWaWV3QmFzZUZyb21BbGxvY2F0aW9uKTogQWxsb2NhdGUgY2hpbGQgd2lkZ2V0
cy4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19iYXNlX2NsYXNzX2luaXQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oOiBBZGQgd2Via2l0
V2ViVmlld0Jhc2VTaXplQWxsb2NhdGUoKS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjogQWRk
IGNyZWF0ZVBsdWdpbkNvbnRhaW5lcgorICAgICAgICBhbmQgd2luZG93ZWRQbHVnaW5HZW9tZXRy
eURpZENoYW5nZSBtZXNzYWdlcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94
eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBsdWdpbldpbmRvd01hcCk6CisgICAgICAgIChX
ZWJLaXQ6OnBsdWdpbkNvbnRhaW5lclBsdWdSZW1vdmVkKTogUmVtb3ZlIHRoZSBzb2NrZXQgZnJv
bSB0aGUKKyAgICAgICAgaGFzaCBtYXAgd2hlbiBpdHMgcGx1ZyBpcyByZW1vdmVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZVBsdWdpbkNvbnRhaW5lcik6IENyZWF0ZSBh
IEd0a1NvY2tldAorICAgICAgICBhcyBjb250YWluZXIgd2lkZ2V0IGZvciB3aW5kb3dlZCBwbHVn
aW5zLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0
cnlEaWRDaGFuZ2UpOiBDYWxsCisgICAgICAgIHdlYmtpdFdlYlZpZXdCYXNlU2l6ZUFsbG9jYXRl
KCkgdG8gdXBkYXRlIHRoZSBwbHVnaW4gd2lkZ2V0CisgICAgICAgIGdlb21ldHJ5LgorICAgICAg
ICAqIFVJUHJvY2Vzcy9xdC9XZWJQYWdlUHJveHlRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Y3JlYXRlUGx1Z2luQ29udGFpbmVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6TmV0c2NhcGVQbHVnaW4pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwOgorICAgICAg
ICAoV2ViS2l0Ojpzb2NrZXRQbHVnUmVtb3ZlZENhbGxiYWNrKTogUmV0dXJuIFRSVUUgdG8gYXZv
aWQgdGhlCisgICAgICAgIHNvY2tldCB0byBiZSBkZXN0cm95ZWQsIHNpbmNlIHdlIG5lZWQgdG8g
cmV1c2UgaXQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBvc3RJ
bml0aWFsaXplV2luZG93ZWQpOiBBc2sgdGhlCisgICAgICAgIHVpIHByb2Nlc3MgdG8gY3JlYXRl
IGEgcGx1Z2luIGNvbnRhaW5lci4KKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBs
YXRmb3JtUG9zdEluaXRpYWxpemVXaW5kb3dsZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW46OnBsYXRmb3JtUG9zdEluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpOZXRz
Y2FwZVBsdWdpbjo6cGxhdGZvcm1HZW9tZXRyeURpZENoYW5nZSk6IEZvciB3aW5kb3dlZAorICAg
ICAgICBwbHVnaW5zIG5vdGlmeSB0aGUgdWkgcHJvY2VzcyB0aGF0IHRoZSBwbHVnaW4gZ2VvbWV0
cnkgaGFzCisgICAgICAgIGNoYW5nZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
OjpwbGF0Zm9ybVBhaW50KTogRG8gbm90aGluZyBmb3Igd2luZG93ZWQKKyAgICAgICAgcGx1Z2lu
cywgdGhlIGNhbGxlciBhbHJlYWR5IGNhbGxzIGNhbGxTZXRXaW5kb3coKS4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5
OjpjcmVhdGVQbHVnaW5Db250YWluZXIpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6
d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6Y3JlYXRlUGx1Z2luQ29udGFp
bmVyKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6d2luZG93ZWRQbHVnaW5HZW9tZXRy
eURpZENoYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoK
KwogMjAxMi0wNC0yNCAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJFR1JFU1NJT04gKHIxMDkwMjIpIFNhZmFyaSBub3QgcGxhY2luZyBzZXJ2aWNlIGRhdGEg
b24gcGFzdGVib2FyZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
UGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
UGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAppbmRleCA3ZTAyNTMzLi44MWIyOTBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkuY3BwCkBAIC01NDAsNiArNTQwLDIwIEBAIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5Ojpn
ZXRGb3JtVmFsdWUoYm9vbCYgcmV0dXJuVmFsdWUsIFN0cmluZyYgZm9ybVZhbHVlKQogICAgIHJl
dHVyblZhbHVlID0gbV9wbHVnaW4tPmdldEZvcm1WYWx1ZShmb3JtVmFsdWUpOwogfQogCisjaWYg
UExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCit1aW50NjRfdCBQbHVnaW5Db250cm9sbGVyUHJveHk6
OmNyZWF0ZVBsdWdpbkNvbnRhaW5lcigpCit7CisgICAgdWludDY0X3Qgd2luZG93SUQgPSAwOwor
ICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6UGx1Z2lu
UHJveHk6OkNyZWF0ZVBsdWdpbkNvbnRhaW5lcigpLCBNZXNzYWdlczo6UGx1Z2luUHJveHk6OkNy
ZWF0ZVBsdWdpbkNvbnRhaW5lcjo6UmVwbHkod2luZG93SUQpLCBtX3BsdWdpbkluc3RhbmNlSUQp
OworICAgIHJldHVybiB3aW5kb3dJRDsKK30KKwordm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6
OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50UmVjdCYgZnJhbWVSZWN0
LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpCit7CisgICAgbV9j
b25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb3h5OjpXaW5k
b3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGZyYW1lUmVjdCwgY2xpcFJlY3QsIHdpbmRvd0lE
KSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAogI2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCmluZGV4IDc4Nzc5
ODkuLjcwMjJmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1
Z2luQ29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Db250cm9sbGVyUHJveHkuaApAQCAtMTAzLDYgKzEwMywxMCBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgYm9vbCBnZXRBdXRoZW50aWNhdGlvbkluZm8oY29uc3QgV2ViQ29yZTo6UHJvdGVj
dGlvblNwYWNlJiwgU3RyaW5nJiB1c2VybmFtZSwgU3RyaW5nJiBwYXNzd29yZCk7CiAgICAgdmly
dHVhbCB2b2lkIHByb3RlY3RQbHVnaW5Gcm9tRGVzdHJ1Y3Rpb24oKTsKICAgICB2aXJ0dWFsIHZv
aWQgdW5wcm90ZWN0UGx1Z2luRnJvbURlc3RydWN0aW9uKCk7CisjaWYgUExVR0lOX0FSQ0hJVEVD
VFVSRShYMTEpCisgICAgdmlydHVhbCB1aW50NjRfdCBjcmVhdGVQbHVnaW5Db250YWluZXIoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBS
ZWN0LCB1aW50NjRfdCB3aW5kb3dJRCk7CisjZW5kaWYKICAgICAKICAgICAvLyBNZXNzYWdlIGhh
bmRsZXJzLgogICAgIHZvaWQgZnJhbWVEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHJlcXVlc3RJ
RCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3QmFzZS5jcHAKaW5kZXggNTFmNWM1NC4uYjJjZGRlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAt
NTUsNiArNTUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaW9uLmg+CiAjaW5jbHVkZSA8Z2Rr
L2dkay5oPgogI2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dv
YmplY3QvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTY2LDcg
KzY3LDEwIEBACiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKK3R5cGVkZWYgSGFzaE1hcDxHdGtXaWRnZXQqLCBJbnRSZWN0PiBXZWJLaXRXZWJWaWV3
Q2hpbGRyZW5NYXA7CisKIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlIHsKKyAgICBX
ZWJLaXRXZWJWaWV3Q2hpbGRyZW5NYXAgY2hpbGRyZW47CiAgICAgT3duUHRyPFBhZ2VDbGllbnRJ
bXBsPiBwYWdlQ2xpZW50OwogICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IHBhZ2VQcm94eTsKICAg
ICBib29sIGlzUGFnZUFjdGl2ZTsKQEAgLTE2Myw5ICsxNjcsNTMgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0V2ViVmlld0Jhc2VSZWFsaXplKEd0a1dpZGdldCogd2lkZ2V0KQogCiBzdGF0aWMgdm9pZCB3
ZWJraXRXZWJWaWV3QmFzZUNvbnRhaW5lckFkZChHdGtDb250YWluZXIqIGNvbnRhaW5lciwgR3Rr
V2lkZ2V0KiB3aWRnZXQpCiB7CisgICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXcgPSBXRUJL
SVRfV0VCX1ZJRVdfQkFTRShjb250YWluZXIpOworICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0
ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisKKyAgICBHdGtBbGxvY2F0aW9uIGNoaWxkQWxsb2Nh
dGlvbjsKKyAgICBndGtfd2lkZ2V0X2dldF9hbGxvY2F0aW9uKHdpZGdldCwgJmNoaWxkQWxsb2Nh
dGlvbik7CisgICAgcHJpdi0+Y2hpbGRyZW4uc2V0KHdpZGdldCwgY2hpbGRBbGxvY2F0aW9uKTsK
KwogICAgIGd0a193aWRnZXRfc2V0X3BhcmVudCh3aWRnZXQsIEdUS19XSURHRVQoY29udGFpbmVy
KSk7CiB9CiAKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ29udGFpbmVyUmVtb3ZlKEd0
a0NvbnRhaW5lciogY29udGFpbmVyLCBHdGtXaWRnZXQqIHdpZGdldCkKK3sKKyAgICBXZWJLaXRX
ZWJWaWV3QmFzZSogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFV19CQVNFKGNvbnRhaW5lcik7Cisg
ICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKyAgICBH
dGtXaWRnZXQqIHdpZGdldENvbnRhaW5lciA9IEdUS19XSURHRVQoY29udGFpbmVyKTsKKworICAg
IEFTU0VSVChwcml2LT5jaGlsZHJlbi5jb250YWlucyh3aWRnZXQpKTsKKyAgICBnYm9vbGVhbiB3
YXNWaXNpYmxlID0gZ3RrX3dpZGdldF9nZXRfdmlzaWJsZSh3aWRnZXQpOworICAgIGd0a193aWRn
ZXRfdW5wYXJlbnQod2lkZ2V0KTsKKworICAgIHByaXYtPmNoaWxkcmVuLnJlbW92ZSh3aWRnZXQp
OworICAgIGlmICh3YXNWaXNpYmxlICYmIGd0a193aWRnZXRfZ2V0X3Zpc2libGUod2lkZ2V0Q29u
dGFpbmVyKSkKKyAgICAgICAgZ3RrX3dpZGdldF9xdWV1ZV9yZXNpemUod2lkZ2V0Q29udGFpbmVy
KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VDb250YWluZXJGb3JhbGwoR3Rr
Q29udGFpbmVyKiBjb250YWluZXIsIGdib29sZWFuIGluY2x1ZGVJbnRlcm5hbHMsIEd0a0NhbGxi
YWNrIGNhbGxiYWNrLCBncG9pbnRlciBjYWxsYmFja0RhdGEpCit7CisgICAgV2ViS2l0V2ViVmll
d0Jhc2UqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRShjb250YWluZXIpOworICAgIFdl
YktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisKKyAgICBXZWJL
aXRXZWJWaWV3Q2hpbGRyZW5NYXAgY2hpbGRyZW4gPSBwcml2LT5jaGlsZHJlbjsKKyAgICBXZWJL
aXRXZWJWaWV3Q2hpbGRyZW5NYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNoaWxkcmVuLmVuZCgp
OworICAgIGZvciAoV2ViS2l0V2ViVmlld0NoaWxkcmVuTWFwOjpjb25zdF9pdGVyYXRvciBjdXJy
ZW50ID0gY2hpbGRyZW4uYmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3VycmVudCkKKyAgICAg
ICAgKCpjYWxsYmFjaykoY3VycmVudC0+Zmlyc3QsIGNhbGxiYWNrRGF0YSk7Cit9CisKK3ZvaWQg
d2Via2l0V2ViVmlld0Jhc2VDaGlsZE1vdmVSZXNpemUoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZp
ZXcsIEd0a1dpZGdldCogY2hpbGQsIGNvbnN0IEludFJlY3QmIGNoaWxkUmVjdCkKK3sKKyAgICBj
b25zdCBJbnRSZWN0JiBnZW9tZXRyeSA9IHdlYlZpZXctPnByaXYtPmNoaWxkcmVuLmdldChjaGls
ZCk7CisKKyAgICBpZiAoZ2VvbWV0cnkgPT0gY2hpbGRSZWN0KQorICAgICAgICByZXR1cm47CisK
KyAgICB3ZWJWaWV3LT5wcml2LT5jaGlsZHJlbi5zZXQoY2hpbGQsIGNoaWxkUmVjdCk7CisgICAg
Z3RrX3dpZGdldF9xdWV1ZV9yZXNpemVfbm9fcmVkcmF3KEdUS19XSURHRVQod2ViVmlldykpOwor
fQorCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUZpbmFsaXplKEdPYmplY3QqIGdvYmpl
Y3QpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlID0gV0VCS0lU
X1dFQl9WSUVXX0JBU0UoZ29iamVjdCk7CkBAIC0yMTQsMTAgKzI2MiwyNyBAQCBzdGF0aWMgZ2Jv
b2xlYW4gd2Via2l0V2ViVmlld0Jhc2VEcmF3KEd0a1dpZGdldCogd2lkZ2V0LCBjYWlyb190KiBj
cikKICAgICByZXR1cm4gRkFMU0U7CiB9CiAKLXN0YXRpYyB2b2lkIHJlc2l6ZVdlYktpdFdlYlZp
ZXdCYXNlRnJvbUFsbG9jYXRpb24oV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBHdGtB
bGxvY2F0aW9uKiBhbGxvY2F0aW9uKQorc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VDaGls
ZEFsbG9jYXRlKEd0a1dpZGdldCogY2hpbGQsIGdwb2ludGVyIHVzZXJEYXRhKQogeworICAgIGlm
ICghZ3RrX3dpZGdldF9nZXRfdmlzaWJsZShjaGlsZCkpCisgICAgICAgIHJldHVybjsKKworICAg
IFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHVz
ZXJEYXRhKTsKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFz
ZS0+cHJpdjsKKyAgICBjb25zdCBJbnRSZWN0JiBnZW9tZXRyeSA9IHByaXYtPmNoaWxkcmVuLmdl
dChjaGlsZCk7CisgICAgaWYgKGdlb21ldHJ5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgR3RrQWxsb2NhdGlvbiBjaGlsZEFsbG9jYXRpb24gPSBnZW9tZXRyeTsKKyAgICBndGtf
d2lkZ2V0X3NpemVfYWxsb2NhdGUoY2hpbGQsICZjaGlsZEFsbG9jYXRpb24pOworICAgIHByaXYt
PmNoaWxkcmVuLnNldChjaGlsZCwgSW50UmVjdCgpKTsKK30KKworc3RhdGljIHZvaWQgcmVzaXpl
V2ViS2l0V2ViVmlld0Jhc2VGcm9tQWxsb2NhdGlvbihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmll
d0Jhc2UsIEd0a0FsbG9jYXRpb24qIGFsbG9jYXRpb24pCit7CisgICAgZ3RrX2NvbnRhaW5lcl9m
b3JlYWNoKEdUS19DT05UQUlORVIod2ViVmlld0Jhc2UpLCB3ZWJraXRXZWJWaWV3QmFzZUNoaWxk
QWxsb2NhdGUsIHdlYlZpZXdCYXNlKTsKIAorICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSog
cHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwogICAgIGlmIChwcml2LT5wYWdlUHJveHktPmRyYXdp
bmdBcmVhKCkpCiAgICAgICAgIHByaXYtPnBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKS0+c2V0U2l6
ZShJbnRTaXplKGFsbG9jYXRpb24tPndpZHRoLCBhbGxvY2F0aW9uLT5oZWlnaHQpLCBJbnRTaXpl
KCkpOwogCkBAIC0yNTAsNyArMzE1LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VN
YXAoR3RrV2lkZ2V0KiB3aWRnZXQpCiAgICAgZ3RrX3dpZGdldF9nZXRfYWxsb2NhdGlvbih3aWRn
ZXQsICZhbGxvY2F0aW9uKTsKICAgICByZXNpemVXZWJLaXRXZWJWaWV3QmFzZUZyb21BbGxvY2F0
aW9uKHdlYlZpZXdCYXNlLCAmYWxsb2NhdGlvbik7CiAgICAgd2ViVmlld0Jhc2UtPnByaXYtPm5l
ZWRzUmVzaXplT25NYXAgPSBmYWxzZTsKLQogfQogCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2Vi
Vmlld0Jhc2VGb2N1c0luRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50Rm9jdXMqIGV2
ZW50KQpAQCAtNTI3LDYgKzU5MSw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19iYXNl
X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0Jhc2VDbGFzcyogd2Via2l0V2ViVmllCiAKICAgICBH
dGtDb250YWluZXJDbGFzcyogY29udGFpbmVyQ2xhc3MgPSBHVEtfQ09OVEFJTkVSX0NMQVNTKHdl
YmtpdFdlYlZpZXdCYXNlQ2xhc3MpOwogICAgIGNvbnRhaW5lckNsYXNzLT5hZGQgPSB3ZWJraXRX
ZWJWaWV3QmFzZUNvbnRhaW5lckFkZDsKKyAgICBjb250YWluZXJDbGFzcy0+cmVtb3ZlID0gd2Vi
a2l0V2ViVmlld0Jhc2VDb250YWluZXJSZW1vdmU7CisgICAgY29udGFpbmVyQ2xhc3MtPmZvcmFs
bCA9IHdlYmtpdFdlYlZpZXdCYXNlQ29udGFpbmVyRm9yYWxsOwogCiAgICAgZ190eXBlX2NsYXNz
X2FkZF9wcml2YXRlKHdlYmtpdFdlYlZpZXdCYXNlQ2xhc3MsIHNpemVvZihXZWJLaXRXZWJWaWV3
QmFzZVByaXZhdGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKaW5kZXggMjdmNWMxYy4uY2Q0
YzFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlld0Jhc2VQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKQEAgLTQxLDYgKzQxLDcgQEAgdm9pZCB3ZWJr
aXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2UoV2ViS2l0V2ViVmlld0Jhc2UqLCBXS0NvbnRleHRS
ZWYsIFdLUGFnZUdyb3UKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRUb29sdGlwVGV4dChXZWJL
aXRXZWJWaWV3QmFzZSosIGNvbnN0IGNoYXIqKTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VGb3J3
YXJkTmV4dEtleUV2ZW50KFdlYktpdFdlYlZpZXdCYXNlKik7CiB2b2lkIHdlYmtpdFdlYlZpZXdC
YXNlU3RhcnREcmFnKFdlYktpdFdlYlZpZXdCYXNlKiwgY29uc3QgV2ViQ29yZTo6RHJhZ0RhdGEm
LCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gZHJhZ0ltYWdlKTsKK3ZvaWQgd2Via2l0V2Vi
Vmlld0Jhc2VDaGlsZE1vdmVSZXNpemUoV2ViS2l0V2ViVmlld0Jhc2UqLCBHdGtXaWRnZXQqLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlRW50ZXJGdWxs
U2NyZWVuKFdlYktpdFdlYlZpZXdCYXNlKik7CiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlRXhpdEZ1
bGxTY3JlZW4oV2ViS2l0V2ViVmlld0Jhc2UqKTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VJbml0
aWFsaXplRnVsbFNjcmVlbkNsaWVudChXZWJLaXRXZWJWaWV3QmFzZSosIGNvbnN0IFdLRnVsbFNj
cmVlbkNsaWVudEd0ayopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IGJhYjY2NzYuLmVlYzQ0ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKQEAgLTg5Myw2ICs4OTMsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0UmVuZGVy
VHJlZVNpemUodWludDY0X3QgdHJlZVNpemUpIHsgbV9yZW5kZXJUcmVlU2l6ZSA9IHRyZWVTaXpl
OyB9CiAKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKyAgICB2b2lkIGNyZWF0ZVBsdWdp
bkNvbnRhaW5lcih1aW50NjRfdCYgd2luZG93SUQpOworICAgIHZvaWQgd2luZG93ZWRQbHVnaW5H
ZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCk7CisjZW5kaWYK
KwogICAgIFBhZ2VDbGllbnQqIG1fcGFnZUNsaWVudDsKICAgICBXZWJMb2FkZXJDbGllbnQgbV9s
b2FkZXJDbGllbnQ7CiAgICAgV2ViUG9saWN5Q2xpZW50IG1fcG9saWN5Q2xpZW50OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
ZDcxODExNS4uNDAwYWNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yODYsNiArMjg2LDEyIEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2VQcm94eSB7CiAgICAgU2NoZWR1bGVDaGlsZFdpbmRvd0dlb21ldHJ5VXBkYXRlKFdlYktp
dDo6V2luZG93R2VvbWV0cnkgZ2VvbWV0cnkpCiAjZW5kaWYKIAorI2lmIFBMVUdJTl9BUkNISVRF
Q1RVUkUoWDExKQorICAgICMgWDExIHdpbmRvd2VkIHBsdWdpbiBtZXNzYWdlcworICAgIENyZWF0
ZVBsdWdpbkNvbnRhaW5lcigpIC0+ICh1aW50NjRfdCB3aW5kb3dJRCkKKyAgICBXaW5kb3dlZFBs
dWdpbkdlb21ldHJ5RGlkQ2hhbmdlKFdlYkNvcmU6OkludFJlY3QgZnJhbWVSZWN0LCBXZWJDb3Jl
OjpJbnRSZWN0IGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCkKKyNlbmRpZgorCiAgICAgIyBT
ZWFyY2ggcG9wdXAgbWVudXMKICAgICBTYXZlUmVjZW50U2VhcmNoZXMoV1RGOjpTdHJpbmcgbmFt
ZSwgVmVjdG9yPFN0cmluZz4gc2VhcmNoSXRlbXMpCiAgICAgTG9hZFJlY2VudFNlYXJjaGVzKFdU
Rjo6U3RyaW5nIG5hbWUpIC0+IChWZWN0b3I8U3RyaW5nPiByZXN1bHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAKaW5kZXggZjZiMzAwZS4u
ZGM4MjM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdl
UHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVBy
b3h5R3RrLmNwcApAQCAtMzAsNiArMzAsOCBAQAogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJk
RXZlbnQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2VDbGll
bnRJbXBsLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgiCisjaW5jbHVk
ZSA8Z3RrL2d0a3guaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTY0LDQgKzY2LDQ1IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgVmVj
dG9yPFN0cmluZz4mKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3R5cGVkZWYgSGFzaE1h
cDx1aW50NjRfdCwgR3RrV2lkZ2V0KiA+IFBsdWdpbldpbmRvd01hcDsKK3N0YXRpYyBQbHVnaW5X
aW5kb3dNYXAmIHBsdWdpbldpbmRvd01hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChQ
bHVnaW5XaW5kb3dNYXAsIG1hcCwgKCkpOworICAgIHJldHVybiBtYXA7Cit9CisKK3N0YXRpYyBn
Ym9vbGVhbiBwbHVnaW5Db250YWluZXJQbHVnUmVtb3ZlZChHdGtTb2NrZXQqIHNvY2tldCkKK3sK
KyAgICB1aW50NjRfdCB3aW5kb3dJRCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihndGtfc29ja2V0
X2dldF9pZChzb2NrZXQpKTsKKyAgICBwbHVnaW5XaW5kb3dNYXAoKS5yZW1vdmUod2luZG93SUQp
OworICAgIHJldHVybiBGQUxTRTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZVBsdWdp
bkNvbnRhaW5lcih1aW50NjRfdCYgd2luZG93SUQpCit7CisgICAgR3RrV2lkZ2V0KiBzb2NrZXQg
PSBndGtfc29ja2V0X25ldygpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc29ja2V0LCAicGx1Zy1y
ZW1vdmVkIiwgR19DQUxMQkFDSyhwbHVnaW5Db250YWluZXJQbHVnUmVtb3ZlZCksIDApOworICAg
IGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIodmlld1dpZGdldCgpKSwgc29ja2V0KTsK
KyAgICBndGtfd2lkZ2V0X3Nob3coc29ja2V0KTsKKworICAgIHdpbmRvd0lEID0gc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KGd0a19zb2NrZXRfZ2V0X2lkKEdUS19TT0NLRVQoc29ja2V0KSkpOworICAg
IHBsdWdpbldpbmRvd01hcCgpLnNldCh3aW5kb3dJRCwgc29ja2V0KTsKK30KKwordm9pZCBXZWJQ
YWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWlu
dDY0X3Qgd2luZG93SUQpCit7CisgICAgR3RrV2lkZ2V0KiBwbHVnaW4gPSBwbHVnaW5XaW5kb3dN
YXAoKS5nZXQod2luZG93SUQpOworICAgIGlmICghcGx1Z2luKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoZ3RrX3dpZGdldF9nZXRfcmVhbGl6ZWQocGx1Z2luKSkgeworICAgICAgICBHZGtS
ZWN0YW5nbGUgY2xpcCA9IGNsaXBSZWN0OworICAgICAgICBjYWlyb19yZWdpb25fdCogY2xpcFJl
Z2lvbiA9IGNhaXJvX3JlZ2lvbl9jcmVhdGVfcmVjdGFuZ2xlKCZjbGlwKTsKKyAgICAgICAgZ2Rr
X3dpbmRvd19zaGFwZV9jb21iaW5lX3JlZ2lvbihndGtfd2lkZ2V0X2dldF93aW5kb3cocGx1Z2lu
KSwgY2xpcFJlZ2lvbiwgMCwgMCk7CisgICAgICAgIGNhaXJvX3JlZ2lvbl9kZXN0cm95KGNsaXBS
ZWdpb24pOworICAgIH0KKworICAgIHdlYmtpdFdlYlZpZXdCYXNlQ2hpbGRNb3ZlUmVzaXplKFdF
QktJVF9XRUJfVklFV19CQVNFKHZpZXdXaWRnZXQoKSksIHBsdWdpbiwgZnJhbWVSZWN0KTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvV2ViUGFnZVByb3h5UXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1dlYlBhZ2VQcm94eVF0LmNwcAppbmRleCBiZjg2ZWRjLi4xNmJiNjllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUGFnZVByb3h5UXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQYWdlUHJveHlRdC5jcHAKQEAgLTEwMiw0ICsxMDIs
MTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbmRBcHBsaWNhdGlvblNjaGVtZVJlcGx5KGNvbnN0
IFFRdWlja05ldHdvcmtSZXBseSogcmVwbHkpCiAgICAgfQogfQogCit2b2lkIFdlYlBhZ2VQcm94
eTo6Y3JlYXRlUGx1Z2luQ29udGFpbmVyKHVpbnQ2NF90JiB3aW5kb3dJRCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9t
ZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uY3BwCmluZGV4IGRiNmQ4ZDguLmI2M2M3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmNwcApAQCAtODksNiArODksOSBAQCBOZXRzY2FwZVBsdWdpbjo6TmV0c2NhcGVQbHVnaW4oUGFz
c1JlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gcGx1Z2luTW9kdWxlKQogI2VsaWYgUExVR0lO
X0FSQ0hJVEVDVFVSRShYMTEpCiAgICAgLCBtX2RyYXdhYmxlKDApCiAgICAgLCBtX3BsdWdpbkRp
c3BsYXkoMCkKKyNpZiBQTEFURk9STShHVEspCisgICAgLCBtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0
KDApCisjZW5kaWYKICNlbmRpZgogewogICAgIG1fbnBwLm5kYXRhID0gdGhpczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmgKaW5kZXggNTY5ZmZkNy4uNjYwYjY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmgKQEAgLTIzNCw2ICsyMzQsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlV2luZG93
ZWRHZW9tZXRyeVVwZGF0ZSgpOwogI2VuZGlmCiAKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgx
MSkKKyAgICBib29sIHBsYXRmb3JtUG9zdEluaXRpYWxpemVXaW5kb3dlZChib29sIG5lZWRzWEVt
YmVkLCB1aW50NjRfdCB3aW5kb3dJRCk7CisgICAgYm9vbCBwbGF0Zm9ybVBvc3RJbml0aWFsaXpl
V2luZG93bGVzcygpOworI2VuZGlmCisKICAgICB1aW50NjRfdCBtX25leHRSZXF1ZXN0SUQ7CiAK
ICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6cGFpcjxTdHJpbmcsIHZvaWQqPiA+
IFBlbmRpbmdVUkxOb3RpZnlNYXA7CkBAIC0zNDMsNiArMzQ4LDkgQEAgcHJpdmF0ZToKICNlbGlm
IFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQogICAgIFBpeG1hcCBtX2RyYXdhYmxlOwogICAgIERp
c3BsYXkqIG1fcGx1Z2luRGlzcGxheTsKKyNpZiBQTEFURk9STShHVEspCisgICAgR3RrV2lkZ2V0
KiBtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0OworI2VuZGlmCiAKIHB1YmxpYzogLy8gTmVlZCB0byBj
YWxsIGl0IGluIHRoZSBOUE5fR2V0VmFsdWUgYnJvd3NlciBjYWxsYmFjay4KICAgICBzdGF0aWMg
RGlzcGxheSogeDExSG9zdERpc3BsYXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdp
blgxMS5jcHAKaW5kZXggYTFjMmEzMS4uNjU2NGZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRz
Y2FwZVBsdWdpblgxMS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIk5ldHNjYXBl
UGx1Z2luLmgiCiAKKyNpbmNsdWRlICJQbHVnaW5Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2Vi
RXZlbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KQEAgLTM5LDYgKzQwLDEwIEBACiAjaW5jbHVkZSAi
UGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgogI2luY2x1
ZGUgPGNhaXJvL2NhaXJvLXhsaWIuaD4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaWZuZGVmIEdU
S19BUElfVkVSU0lPTl8yCisjaW5jbHVkZSA8Z3RrL2d0a3guaD4KKyNlbmRpZgogI2luY2x1ZGUg
PGdkay9nZGt4Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtWZXJzaW9uaW5nLmg+CiAjZW5kaWYK
QEAgLTE0NCwyNiArMTQ5LDY1IEBAIERpc3BsYXkqIE5ldHNjYXBlUGx1Z2luOjp4MTFIb3N0RGlz
cGxheSgpCiAjZW5kaWYKIH0KIAotYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1Qb3N0SW5p
dGlhbGl6ZSgpCi17CiAjaWYgUExBVEZPUk0oR1RLKQotICAgIGlmIChtb2R1bGVNaXhlc0d0a1N5
bWJvbHMobV9wbHVnaW5Nb2R1bGUtPm1vZHVsZSgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
c3RhdGljIGdib29sZWFuIHNvY2tldFBsdWdSZW1vdmVkQ2FsbGJhY2soR3RrU29ja2V0KikKK3sK
KyAgICAvLyBEZWZhdWx0IGFjdGlvbiBpcyB0byBkZXN0cm95IHRoZSBHdGtTb2NrZXQsIHNvIHdl
IGp1c3QgcmV0dXJuIFRSVUUgaGVyZQorICAgIC8vIHRvIGJlIGFibGUgdG8gcmV1c2UgdGhlIHNv
Y2tldC4gRm9yIHNvbWUgb2JzY3VyZSByZWFzb24sIG5ld2VyIHZlcnNpb25zCisgICAgLy8gb2Yg
Zmxhc2ggcGx1Z2luIHJlbW92ZSB0aGUgcGx1ZyBmcm9tIHRoZSBzb2NrZXQsIHByb2JhYmx5IGJl
Y2F1c2UgdGhlIHBsdWcKKyAgICAvLyBjcmVhdGVkIGJ5IHRoZSBwbHVnaW4gaXMgcmUtcGFyZW50
ZWQuCisgICAgcmV0dXJuIFRSVUU7Cit9CiAjZW5kaWYKIAotICAgIGlmIChtX2lzV2luZG93ZWQp
Citib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBvc3RJbml0aWFsaXplV2luZG93ZWQoYm9v
bCBuZWVkc1hFbWJlZCwgdWludDY0X3Qgd2luZG93SUQpCit7CisgICAgbV9ucFdpbmRvdy50eXBl
ID0gTlBXaW5kb3dUeXBlV2luZG93OworICAgIGlmICghbmVlZHNYRW1iZWQpIHsKKyAgICAgICAg
bm90SW1wbGVtZW50ZWQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAotICAgIGlm
ICghKG1fcGx1Z2luRGlzcGxheSA9IGdldFBsdWdpbkRpc3BsYXkoKSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBEaXNwbGF5KiBkaXNwbGF5ID0geDExSG9zdERpc3BsYXkoKTsKIAotICAg
IE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqIGNhbGxiYWNrU3RydWN0ID0gbmV3IE5QU2V0V2lu
ZG93Q2FsbGJhY2tTdHJ1Y3Q7Ci0gICAgY2FsbGJhY2tTdHJ1Y3QtPnR5cGUgPSAwOworI2lmIFBM
QVRGT1JNKEdUSykKKyAgICAvLyBJdCBzZWVtcyBmbGFzaCBuZWVkcyB0aGUgc29ja2V0IHRvIGJl
IGluIHRoZSBzYW1lIHByb2Nlc3MsCisgICAgLy8gSSBndWVzcyBpdCB1c2VzIGdka193aW5kb3df
bG9va3VwKCksIHNvIHdlIGNyZWF0ZSBhIG5ldyBzb2NrZXQgaGVyZQorICAgIC8vIGNvbnRhaW5p
bmcgYSBwbHVnIHdpdGggdGhlIFVJIHByb2Nlc3Mgc29ja2V0IGVtYmVkZGVkLgorICAgIG1fcGxh
dGZvcm1QbHVnaW5XaWRnZXQgPSBndGtfcGx1Z19uZXcoc3RhdGljX2Nhc3Q8V2luZG93Pih3aW5k
b3dJRCkpOworICAgIEd0a1dpZGdldCogc29ja2V0ID0gZ3RrX3NvY2tldF9uZXcoKTsKKyAgICBn
X3NpZ25hbF9jb25uZWN0KHNvY2tldCwgInBsdWctcmVtb3ZlZCIsIEdfQ0FMTEJBQ0soc29ja2V0
UGx1Z1JlbW92ZWRDYWxsYmFjayksIDApOworICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05U
QUlORVIobV9wbGF0Zm9ybVBsdWdpbldpZGdldCksIHNvY2tldCk7CisgICAgZ3RrX3dpZGdldF9z
aG93KHNvY2tldCk7CisgICAgZ3RrX3dpZGdldF9zaG93KG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQp
OworCisgICAgbV9ucFdpbmRvdy53aW5kb3cgPSBHSU5UX1RPX1BPSU5URVIoZ3RrX3NvY2tldF9n
ZXRfaWQoR1RLX1NPQ0tFVChzb2NrZXQpKSk7CisgICAgR2RrV2luZG93KiB3aW5kb3cgPSBndGtf
d2lkZ2V0X2dldF93aW5kb3coc29ja2V0KTsKKyAgICBOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0
KiBjYWxsYmFja1N0cnVjdCA9IHN0YXRpY19jYXN0PE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3Qq
PihtX25wV2luZG93LndzX2luZm8pOworICAgIGNhbGxiYWNrU3RydWN0LT5kaXNwbGF5ID0gR0RL
X1dJTkRPV19YRElTUExBWSh3aW5kb3cpOworICAgIGNhbGxiYWNrU3RydWN0LT52aXN1YWwgPSBH
REtfVklTVUFMX1hWSVNVQUwoZ2RrX3dpbmRvd19nZXRfdmlzdWFsKHdpbmRvdykpOworICAgIGNh
bGxiYWNrU3RydWN0LT5kZXB0aCA9IGdka192aXN1YWxfZ2V0X2RlcHRoKGdka193aW5kb3dfZ2V0
X3Zpc3VhbCh3aW5kb3cpKTsKKyAgICBjYWxsYmFja1N0cnVjdC0+Y29sb3JtYXAgPSBYQ3JlYXRl
Q29sb3JtYXAoZGlzcGxheSwgR0RLX1JPT1RfV0lORE9XKCksIGNhbGxiYWNrU3RydWN0LT52aXN1
YWwsIEFsbG9jTm9uZSk7CisjZW5kaWYKKworICAgIFhGbHVzaChkaXNwbGF5KTsKKworICAgIGNh
bGxTZXRXaW5kb3coKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIE5ldHNjYXBlUGx1
Z2luOjpwbGF0Zm9ybVBvc3RJbml0aWFsaXplV2luZG93bGVzcygpCit7CiAgICAgRGlzcGxheSog
ZGlzcGxheSA9IHgxMUhvc3REaXNwbGF5KCk7CisgICAgbV9ucFdpbmRvdy50eXBlID0gTlBXaW5k
b3dUeXBlRHJhd2FibGU7CisgICAgbV9ucFdpbmRvdy53aW5kb3cgPSAwOworCiAgICAgaW50IGRl
cHRoID0gZGlzcGxheURlcHRoKCk7CiAjaWYgUExBVEZPUk0oUVQpCiAgICAgQVNTRVJUKGRlcHRo
ID09IDE2IHx8IGRlcHRoID09IDI0IHx8IGRlcHRoID09IDMyKTsKICNlbmRpZgorICAgIE5QU2V0
V2luZG93Q2FsbGJhY2tTdHJ1Y3QqIGNhbGxiYWNrU3RydWN0ID0gc3RhdGljX2Nhc3Q8TlBTZXRX
aW5kb3dDYWxsYmFja1N0cnVjdCo+KG1fbnBXaW5kb3cud3NfaW5mbyk7CiAgICAgY2FsbGJhY2tT
dHJ1Y3QtPmRpc3BsYXkgPSBkaXNwbGF5OwogICAgIGNhbGxiYWNrU3RydWN0LT5kZXB0aCA9IGRl
cHRoOwogCkBAIC0xODIsMTUgKzIyNiw0NSBAQCBib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9y
bVBvc3RJbml0aWFsaXplKCkKICAgICBjYWxsYmFja1N0cnVjdC0+dmlzdWFsID0gdmlzdWFsOwog
ICAgIGNhbGxiYWNrU3RydWN0LT5jb2xvcm1hcCA9IFhDcmVhdGVDb2xvcm1hcChkaXNwbGF5LCBy
b290V2luZG93SUQoKSwgdmlzdWFsLCBBbGxvY05vbmUpOwogCi0gICAgbV9ucFdpbmRvdy50eXBl
ID0gTlBXaW5kb3dUeXBlRHJhd2FibGU7Ci0gICAgbV9ucFdpbmRvdy53aW5kb3cgPSAwOwotICAg
IG1fbnBXaW5kb3cud3NfaW5mbyA9IGNhbGxiYWNrU3RydWN0OwotCiAgICAgY2FsbFNldFdpbmRv
dygpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRm
b3JtUG9zdEluaXRpYWxpemUoKQoreworI2lmIFBMQVRGT1JNKEdUSykKKyAgICBpZiAobW9kdWxl
TWl4ZXNHdGtTeW1ib2xzKG1fcGx1Z2luTW9kdWxlLT5tb2R1bGUoKSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgorCisgICAgdWludDY0X3Qgd2luZG93SUQgPSAwOworICAgIGJvb2wg
bmVlZHNYRW1iZWQgPSBmYWxzZTsKKyAgICBpZiAobV9pc1dpbmRvd2VkKSB7CisgICAgICAgIE5Q
UF9HZXRWYWx1ZShOUFBWcGx1Z2luTmVlZHNYRW1iZWQsICZuZWVkc1hFbWJlZCk7CisgICAgICAg
IGlmIChuZWVkc1hFbWJlZCkgeworICAgICAgICAgICAgd2luZG93SUQgPSBjb250cm9sbGVyKCkt
PmNyZWF0ZVBsdWdpbkNvbnRhaW5lcigpOworICAgICAgICAgICAgaWYgKCF3aW5kb3dJRCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgfQorCisgICAgaWYgKCEobV9wbHVnaW5EaXNwbGF5ID0gZ2V0UGx1Z2luRGlzcGxheSgp
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTlBTZXRXaW5kb3dDYWxsYmFja1N0cnVj
dCogY2FsbGJhY2tTdHJ1Y3QgPSBuZXcgTlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdDsKKyAgICBj
YWxsYmFja1N0cnVjdC0+dHlwZSA9IDA7CisgICAgbV9ucFdpbmRvdy53c19pbmZvID0gY2FsbGJh
Y2tTdHJ1Y3Q7CisKKyAgICBpZiAobV9pc1dpbmRvd2VkKQorICAgICAgICByZXR1cm4gcGxhdGZv
cm1Qb3N0SW5pdGlhbGl6ZVdpbmRvd2VkKG5lZWRzWEVtYmVkLCB3aW5kb3dJRCk7CisKKyAgICBy
ZXR1cm4gcGxhdGZvcm1Qb3N0SW5pdGlhbGl6ZVdpbmRvd2xlc3MoKTsKK30KKwogdm9pZCBOZXRz
Y2FwZVBsdWdpbjo6cGxhdGZvcm1EZXN0cm95KCkKIHsKICAgICBOUFNldFdpbmRvd0NhbGxiYWNr
U3RydWN0KiBjYWxsYmFja1N0cnVjdCA9IHN0YXRpY19jYXN0PE5QU2V0V2luZG93Q2FsbGJhY2tT
dHJ1Y3QqPihtX25wV2luZG93LndzX2luZm8pOwpAQCAtMjEzLDcgKzI4NywxMyBAQCBib29sIE5l
dHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUludmFsaWRhdGUoY29uc3QgSW50UmVjdCYpCiB2b2lkIE5l
dHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKCkKIHsKICAgICBpZiAobV9p
c1dpbmRvd2VkKSB7Ci0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgIHVpbnQ2NF90
IHdpbmRvd0lEID0gMDsKKyNpZiBQTEFURk9STShHVEspCisgICAgICAgIHdpbmRvd0lEID0gc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KEdES19XSU5ET1dfWElEKGd0a19wbHVnX2dldF9zb2NrZXRfd2lu
ZG93KEdUS19QTFVHKG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQpKSkpOworI2VuZGlmCisgICAgICAg
IEludFJlY3QgY2xpcFJlY3QobV9jbGlwUmVjdCk7CisgICAgICAgIGNsaXBSZWN0Lm1vdmUoLW1f
ZnJhbWVSZWN0SW5XaW5kb3dDb29yZGluYXRlcy54KCksIC1tX2ZyYW1lUmVjdEluV2luZG93Q29v
cmRpbmF0ZXMueSgpKTsKKyAgICAgICAgY29udHJvbGxlcigpLT53aW5kb3dlZFBsdWdpbkdlb21l
dHJ5RGlkQ2hhbmdlKG1fZnJhbWVSZWN0SW5XaW5kb3dDb29yZGluYXRlcywgY2xpcFJlY3QsIHdp
bmRvd0lEKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjM4LDEwICszMTgsOCBAQCB2
b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVZpc2liaWxpdHlEaWRDaGFuZ2UoKQogCiB2b2lk
IE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBib29sIC8qaXNTbmFwc2hvdCovKQogewotICAgIGlm
IChtX2lzV2luZG93ZWQpIHsKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAobV9p
c1dpbmRvd2VkKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgaWYgKCFtX2lzU3RhcnRl
ZCkgewogICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIHBhaW50IGEgbWlzc2luZyBwbHVnaW4g
aWNvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Q29udHJvbGxlci5oCmluZGV4IDYwMTJlY2MuLjI1MDMyY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaApAQCAtMTQzLDYg
KzE0MywxMiBAQCBwdWJsaWM6CiAgICAgLy8gRGVjcmVtZW50cyBhIGNvdW50ZXIgdGhhdCwgd2hl
biBpdCByZWFjaGVzIDAsIHN0b3BzIHByZXZlbnRpbmcgdGhlIHBsdWctaW4gZnJvbSBiZWluZyBk
ZXN0cm95ZWQuCiAgICAgdmlydHVhbCB2b2lkIHVucHJvdGVjdFBsdWdpbkZyb21EZXN0cnVjdGlv
bigpID0gMDsKIAorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAgIC8vIENyZWF0ZSBh
IHBsdWdpbiBjb250YWluZXIgZm9yIHdpbmRvd2VkIHBsdWdpbnMKKyAgICB2aXJ0dWFsIHVpbnQ2
NF90IGNyZWF0ZVBsdWdpbkNvbnRhaW5lcigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd2luZG93
ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJl
Y3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCkg
PSAwOworI2VuZGlmCisKICAgICAvLyBIZWxwZXIgY2xhc3MgZm9yIGRlbGF5aW5nIGRlc3RydWN0
aW9uIG9mIGEgcGx1Zy1pbi4KICAgICBjbGFzcyBQbHVnaW5EZXN0cnVjdGlvblByb3RlY3RvciB7
CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm94eS5jcHAKaW5kZXggNjM4MjUwZS4uMDc3MWJjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCkBAIC01MjMsNiArNTIz
LDE4IEBAIHZvaWQgUGx1Z2luUHJveHk6OnNldFN0YXR1c2JhclRleHQoY29uc3QgU3RyaW5nJiBz
dGF0dXNiYXJUZXh0KQogICAgIGNvbnRyb2xsZXIoKS0+c2V0U3RhdHVzYmFyVGV4dChzdGF0dXNi
YXJUZXh0KTsKIH0KIAorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQordm9pZCBQbHVnaW5Q
cm94eTo6Y3JlYXRlUGx1Z2luQ29udGFpbmVyKHVpbnQ2NF90JiB3aW5kb3dJRCkKK3sKKyAgICB3
aW5kb3dJRCA9IGNvbnRyb2xsZXIoKS0+Y3JlYXRlUGx1Z2luQ29udGFpbmVyKCk7Cit9CisKK3Zv
aWQgUGx1Z2luUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVj
dCwgdWludDY0X3Qgd2luZG93SUQpCit7CisgICAgY29udHJvbGxlcigpLT53aW5kb3dlZFBsdWdp
bkdlb21ldHJ5RGlkQ2hhbmdlKGZyYW1lUmVjdCwgY2xpcFJlY3QsIHdpbmRvd0lEKTsKK30KKyNl
bmRpZgorCiB2b2lkIFBsdWdpblByb3h5Ojp1cGRhdGUoY29uc3QgSW50UmVjdCYgcGFpbnRlZFJl
Y3QpCiB7CiAgICAgaWYgKHBhaW50ZWRSZWN0ID09IHBsdWdpbkJvdW5kcygpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAppbmRleCAxMDgxOWQw
Li5lNGI0Mjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJveHkuaApAQCAtMTM1LDYgKzEzNSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0Q29t
cGxleFRleHRJbnB1dFN0YXRlKHVpbnQ2NF90KTsKICAgICB2b2lkIHNldExheWVySG9zdGluZ0Nv
bnRleHRJRCh1aW50MzJfdCk7CiAjZW5kaWYKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkK
KyAgICB2b2lkIGNyZWF0ZVBsdWdpbkNvbnRhaW5lcih1aW50NjRfdCYgd2luZG93SUQpOworICAg
IHZvaWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRf
dCB3aW5kb3dJRCk7CisjZW5kaWYKIAogICAgIFN0cmluZyBtX3BsdWdpblBhdGg7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5t
ZXNzYWdlcy5pbgppbmRleCA4MGIzYjA2Li5hMmVmMzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluCkBA
IC02Niw2ICs2NiwxNCBAQCBtZXNzYWdlcyAtPiBQbHVnaW5Qcm94eSB7CiAgICAgIyBVcGRhdGUg
dGhlIGxheWVyIGhvc3RpbmcgY29udGV4dCBJRC4gQ2FsbGVkIHdoZW5ldmVyIHRoZSBsYXllciBo
b3N0aW5nIHN0YXRlIGNoYW5nZXMuCiAgICAgU2V0TGF5ZXJIb3N0aW5nQ29udGV4dElEKHVpbnQz
Ml90IGxheWVySG9zdGluZ0NvbnRleHRJRCkKICNlbmRpZgorCisjaWYgUExVR0lOX0FSQ0hJVEVD
VFVSRShYMTEpCisgICAgIyBDcmVhdGUgdGhlIHBsdWdpbiBjb250YWluZXIgZm9yIHdpbmRvd2Vk
IHBsdWdpbnMKKyAgICBDcmVhdGVQbHVnaW5Db250YWluZXIoKSAtPiAodWludDY0X3Qgd2luZG93
SUQpCisKKyAgICAjIFVwZGF0ZSBnZW9tZXRyeSBvZiB3aW5kb3dlZCBwbHVnaW4gd2lkZ2V0Cisg
ICAgV2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShXZWJDb3JlOjpJbnRSZWN0IGZyYW1l
UmVjdCwgV2ViQ29yZTo6SW50UmVjdCBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpCisjZW5k
aWYKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAKaW5kZXggNTNmY2U4NC4uNjc5OWYxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMjksNiArMjksNyBA
QAogI2luY2x1ZGUgIk5QUnVudGltZVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIlBsdWdpbi5oIgog
I2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENv
ZGVycy5oIgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCkBAIC0xMjUxLDQgKzEyNTIsMTggQEAgdm9p
ZCBQbHVnaW5WaWV3OjpkaWRGYWlsTG9hZChXZWJGcmFtZSogd2ViRnJhbWUsIGJvb2wgd2FzQ2Fu
Y2VsbGVkKQogICAgIG1fcGx1Z2luLT5mcmFtZURpZEZhaWwocmVxdWVzdC0+cmVxdWVzdElEKCks
IHdhc0NhbmNlbGxlZCk7CiB9CiAKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKK3VpbnQ2
NF90IFBsdWdpblZpZXc6OmNyZWF0ZVBsdWdpbkNvbnRhaW5lcigpCit7CisgICAgdWludDY0X3Qg
d2luZG93SUQgPSAwOworICAgIG1fd2ViUGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6Q3JlYXRlUGx1Z2luQ29udGFpbmVyKCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNy
ZWF0ZVBsdWdpbkNvbnRhaW5lcjo6UmVwbHkod2luZG93SUQpKTsKKyAgICByZXR1cm4gd2luZG93
SUQ7Cit9CisKK3ZvaWQgUGx1Z2luVmlldzo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5n
ZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCkKK3sKKyAgICBtX3dlYlBhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShm
cmFtZVJlY3QsIGNsaXBSZWN0LCB3aW5kb3dJRCkpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmgKaW5kZXggMjcwNzdiNC4uMWJmNzZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC0xNjAsNiArMTYwLDEwIEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBib29sIGlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwogICAgIHZpcnR1
YWwgdm9pZCBwcm90ZWN0UGx1Z2luRnJvbURlc3RydWN0aW9uKCk7CiAgICAgdmlydHVhbCB2b2lk
IHVucHJvdGVjdFBsdWdpbkZyb21EZXN0cnVjdGlvbigpOworI2lmIFBMVUdJTl9BUkNISVRFQ1RV
UkUoWDExKQorICAgIHZpcnR1YWwgdWludDY0X3QgY3JlYXRlUGx1Z2luQ29udGFpbmVyKCk7Cisg
ICAgdmlydHVhbCB2b2lkIHdpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVj
dCwgdWludDY0X3Qgd2luZG93SUQpOworI2VuZGlmCiAKICAgICAvLyBXZWJGcmFtZTo6TG9hZExp
c3RlbmVyCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoV2ViRnJhbWUqKTsK
</data>
<flag name="review"
          id="144243"
          type_id="1"
          status="+"
          setter="pnormand"
    />
          </attachment>
      

    </bug>

</bugzilla>