<?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>26952</bug_id>
          
          <creation_ts>2009-07-03 02:44:41 -0700</creation_ts>
          <short_desc>WebCore Support for the Haiku WebKit port</short_desc>
          <delta_ts>2009-07-28 12:00:18 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>Other</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Maxime Simon">simon.maxime</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>leavengood</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>129692</commentid>
    <comment_count>0</comment_count>
    <who name="Maxime Simon">simon.maxime</who>
    <bug_when>2009-07-03 02:44:41 -0700</bug_when>
    <thetext>As the previous bug contains too much patches,
( https://bugs.webkit.org/show_bug.cgi?id=26620 )
I fill a new bug with only patches related to WebCore Support.
( located in WebKit/haiku/WebCoreSupport )</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129693</commentid>
    <comment_count>1</comment_count>
      <attachid>32229</attachid>
    <who name="Maxime Simon">simon.maxime</who>
    <bug_when>2009-07-03 02:54:15 -0700</bug_when>
    <thetext>Created attachment 32229
Patch to add ChromeClient for Haiku WebCore support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129695</commentid>
    <comment_count>2</comment_count>
      <attachid>32230</attachid>
    <who name="Maxime Simon">simon.maxime</who>
    <bug_when>2009-07-03 03:07:51 -0700</bug_when>
    <thetext>Created attachment 32230
Patch to add ContextMenuClient for Haiku WebCore support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129696</commentid>
    <comment_count>3</comment_count>
      <attachid>32231</attachid>
    <who name="Maxime Simon">simon.maxime</who>
    <bug_when>2009-07-03 03:16:12 -0700</bug_when>
    <thetext>Created attachment 32231
Patch to add DragClient for Haiku WebCore support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129697</commentid>
    <comment_count>4</comment_count>
      <attachid>32232</attachid>
    <who name="Maxime Simon">simon.maxime</who>
    <bug_when>2009-07-03 03:28:53 -0700</bug_when>
    <thetext>Created attachment 32232
Patch to add EditorClient for Haiku WebCore support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129699</commentid>
    <comment_count>5</comment_count>
      <attachid>32233</attachid>
    <who name="Maxime Simon">simon.maxime</who>
    <bug_when>2009-07-03 03:38:03 -0700</bug_when>
    <thetext>Created attachment 32233
Patch to add FrameLoaderClient for Haiku WebCore support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129700</commentid>
    <comment_count>6</comment_count>
      <attachid>32234</attachid>
    <who name="Maxime Simon">simon.maxime</who>
    <bug_when>2009-07-03 03:43:27 -0700</bug_when>
    <thetext>Created attachment 32234
Patch to add InspectorClient for Haiku WebCore support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130142</commentid>
    <comment_count>7</comment_count>
      <attachid>32231</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-07 00:21:05 -0700</bug_when>
    <thetext>Comment on attachment 32231
Patch to add DragClient for Haiku WebCore support.

Seems like you probably wanted DragDestinationActionNone, but OK.

Looks OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130143</commentid>
    <comment_count>8</comment_count>
      <attachid>32234</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-07 00:21:53 -0700</bug_when>
    <thetext>Comment on attachment 32234
Patch to add InspectorClient for Haiku WebCore support.

Looks OK.  We&apos;ve often used TemporaryLinkStubs for such things, but this is also fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132170</commentid>
    <comment_count>9</comment_count>
      <attachid>32229</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-07-16 00:09:36 -0700</bug_when>
    <thetext>Comment on attachment 32229
Patch to add ChromeClient for Haiku WebCore support.

addMessageToConsole and canRunBeforeUnloadConfirmPanel definitions are not correctly indented</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132171</commentid>
    <comment_count>10</comment_count>
      <attachid>32233</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-07-16 00:15:14 -0700</bug_when>
    <thetext>Comment on attachment 32233
Patch to add FrameLoaderClient for Haiku WebCore support.

FrameLoaderClientHaiku::saveDocumentViewToCachedPage shouldn&apos;t be present if its commented out.  But aside from that i&apos;d prefer it if brady or antti reviewed this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132236</commentid>
    <comment_count>11</comment_count>
      <attachid>32858</attachid>
    <who name="Maxime Simon">simon.maxime</who>
    <bug_when>2009-07-16 04:44:49 -0700</bug_when>
    <thetext>Created attachment 32858
Patch to add ChromeClient for Haiku WebCore support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132239</commentid>
    <comment_count>12</comment_count>
      <attachid>32860</attachid>
    <who name="Maxime Simon">simon.maxime</who>
    <bug_when>2009-07-16 04:58:09 -0700</bug_when>
    <thetext>Created attachment 32860
Patch to add FrameLoaderClient for Haiku WebCore support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132240</commentid>
    <comment_count>13</comment_count>
    <who name="Maxime Simon">simon.maxime</who>
    <bug_when>2009-07-16 05:02:30 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 32233 [details])
&gt; FrameLoaderClientHaiku::saveDocumentViewToCachedPage shouldn&apos;t be present if
&gt; its commented out.  But aside from that i&apos;d prefer it if brady or antti
&gt; reviewed this patch.

Since I commited the old patch I made some changes.
So I commited a new patch. There is no more commented out method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132479</commentid>
    <comment_count>14</comment_count>
      <attachid>32230</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-16 23:02:28 -0700</bug_when>
    <thetext>Comment on attachment 32230
Patch to add ContextMenuClient for Haiku WebCore support.

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebKit/ChangeLog
	A	WebKit/haiku/WebCoreSupport/ContextMenuClientHaiku.cpp
	A	WebKit/haiku/WebCoreSupport/ContextMenuClientHaiku.h
Committed r46013
	A	WebKit/haiku/WebCoreSupport/ContextMenuClientHaiku.h
	A	WebKit/haiku/WebCoreSupport/ContextMenuClientHaiku.cpp
	M	WebKit/ChangeLog
r46013 = c289b08492c0915116b42e31e5a6a33201fabcd2 (trunk)
No changes between current HEAD and refs/remotes/trunk
Resetting to the latest refs/remotes/trunk
http://trac.webkit.org/changeset/46013</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132480</commentid>
    <comment_count>15</comment_count>
      <attachid>32231</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-16 23:02:43 -0700</bug_when>
    <thetext>Comment on attachment 32231
Patch to add DragClient for Haiku WebCore support.

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebKit/ChangeLog
	A	WebKit/haiku/WebCoreSupport/DragClientHaiku.cpp
	A	WebKit/haiku/WebCoreSupport/DragClientHaiku.h
Committed r46014
	A	WebKit/haiku/WebCoreSupport/DragClientHaiku.cpp
	A	WebKit/haiku/WebCoreSupport/DragClientHaiku.h
	M	WebKit/ChangeLog
r46014 = 1f86110d811f8df279aa86457ba1ae333c89d41e (trunk)
No changes between current HEAD and refs/remotes/trunk
Resetting to the latest refs/remotes/trunk
http://trac.webkit.org/changeset/46014</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132481</commentid>
    <comment_count>16</comment_count>
      <attachid>32232</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-16 23:02:59 -0700</bug_when>
    <thetext>Comment on attachment 32232
Patch to add EditorClient for Haiku WebCore support.

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebKit/ChangeLog
	A	WebKit/haiku/WebCoreSupport/EditorClientHaiku.cpp
	A	WebKit/haiku/WebCoreSupport/EditorClientHaiku.h
Committed r46015
	A	WebKit/haiku/WebCoreSupport/EditorClientHaiku.cpp
	A	WebKit/haiku/WebCoreSupport/EditorClientHaiku.h
	M	WebKit/ChangeLog
r46015 = 38130bab20f4c45ac67252185d757cf5bfc243b3 (trunk)
No changes between current HEAD and refs/remotes/trunk
Resetting to the latest refs/remotes/trunk
http://trac.webkit.org/changeset/46015</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132483</commentid>
    <comment_count>17</comment_count>
      <attachid>32234</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-16 23:03:15 -0700</bug_when>
    <thetext>Comment on attachment 32234
Patch to add InspectorClient for Haiku WebCore support.

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebKit/ChangeLog
	A	WebKit/haiku/WebCoreSupport/InspectorClientHaiku.cpp
	A	WebKit/haiku/WebCoreSupport/InspectorClientHaiku.h
Committed r46016
	A	WebKit/haiku/WebCoreSupport/InspectorClientHaiku.cpp
	A	WebKit/haiku/WebCoreSupport/InspectorClientHaiku.h
	M	WebKit/ChangeLog
r46016 = adf9bbe9de1e7ae895f888409449f552d061b9d8 (trunk)
No changes between current HEAD and refs/remotes/trunk
Resetting to the latest refs/remotes/trunk
http://trac.webkit.org/changeset/46016</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132484</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-16 23:03:19 -0700</bug_when>
    <thetext>All reviewed patches landed, closing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132485</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-16 23:03:52 -0700</bug_when>
    <thetext>Again, bugzilla-tool is too eager about closing bugs.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132962</commentid>
    <comment_count>20</comment_count>
      <attachid>32858</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-07-18 17:14:53 -0700</bug_when>
    <thetext>Comment on attachment 32858
Patch to add ChromeClient for Haiku WebCore support.

Is it a deliberate choice to leave the printf&apos;s in the ChromeClientHaiku::runJavaScript* methods?  Other than those this patch seems good but i&apos;d like to confirm that those are/are not deliberate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132980</commentid>
    <comment_count>21</comment_count>
      <attachid>33037</attachid>
    <who name="Maxime Simon">simon.maxime</who>
    <bug_when>2009-07-19 01:21:47 -0700</bug_when>
    <thetext>Created attachment 33037
Patch to add ChromeClient for Haiku WebCore support.

Indeed, it wasn&apos;t my intention to leave the printf&apos;s in the runJavaScript[...] methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135146</commentid>
    <comment_count>22</comment_count>
      <attachid>32860</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-28 02:44:59 -0700</bug_when>
    <thetext>Comment on attachment 32860
Patch to add FrameLoaderClient for Haiku WebCore support.

Just a few issues to address.


&gt; diff --git a/WebKit/haiku/WebCoreSupport/FrameLoaderClientHaiku.cpp b/WebKit/haiku/WebCoreSupport/FrameLoaderClientHaiku.cpp
&gt; +/*
&gt; + * Copyright (C) 2006 Don Gibson &lt;dgibson77@gmail.com&gt;
&gt; + * Copyright (C) 2006 Zack Rusin &lt;zack@kde.org&gt;
&gt; + * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
&gt; + * Copyright (C) 2007 Trolltech ASA
&gt; + * Copyright (C) 2007 Ryan Leavengood &lt;leavengood@gmail.com&gt;
&gt; + *
&gt; + * All rights reserved.

This is an odd location for &quot;All rights reserved.&quot;  It typically follows the copyright lines.

&gt; +#include &quot;config.h&quot;
&gt; +#include &quot;FrameLoaderClientHaiku.h&quot;
&gt; +
&gt; +#include &quot;DocumentLoader.h&quot;
&gt; +#include &quot;FrameLoader.h&quot;
&gt; +#include &quot;FrameTree.h&quot;
&gt; +#include &quot;Frame.h&quot;
&gt; +#include &quot;FrameView.h&quot;
&gt; +#include &quot;HTMLFrameOwnerElement.h&quot;
&gt; +#include &quot;Page.h&quot;
&gt; +#include &quot;PlatformString.h&quot;
&gt; +#include &quot;ResourceRequest.h&quot;
&gt; +
&gt; +#include &quot;NotImplemented.h&quot;
This appears out of sort order.

&gt; +void FrameLoaderClientHaiku::setWebView(WebView* webview)
webView

&gt; +bool FrameLoaderClientHaiku::hasWebView() const
&gt; +{
&gt; +    return m_webView != NULL;
Avoid NULL (use 0), but also avoid comparisons to 0/NULL.

    return m_webView;

&gt; +void FrameLoaderClientHaiku::dispatchWillPerformClientRedirect(const KURL&amp;,
&gt; +                                                               double interval,
&gt; +                                                               double fireDate)
Feel free to unwrap these parameters into one line.


&gt; +void FrameLoaderClientHaiku::didChangeTitle(DocumentLoader *docLoader)

&quot;*&quot; in wrong location. (DocumentLoader* docLoader)



&gt; +    if (m_firstData) {
&gt; +        FrameLoader *frameLoader = loader-&gt;frameLoader();

&quot;*&quot; in wrong location.

&gt; +{
&gt; +	// FIXME:

Indentation is off.


&gt; diff --git a/WebKit/haiku/WebCoreSupport/FrameLoaderClientHaiku.h b/WebKit/haiku/WebCoreSupport/FrameLoaderClientHaiku.h
&gt; @@ -0,0 +1,248 @@
&gt; +/*
&gt; + * Copyright (C) 2006 Zack Rusin &lt;zack@kde.org&gt;
&gt; + * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
&gt; + * Copyright (C) 2007 Ryan Leavengood &lt;leavengood@gmail.com&gt;
&gt; + *
&gt; + * All rights reserved.

Same comment as before.

&gt; +#ifndef FrameLoaderClientHaiku_H

Use lowercase h like this:
FrameLoaderClientHaiku_h

&gt; +#include &quot;FrameLoaderClient.h&quot;
&gt; +#include &quot;FrameLoader.h&quot;

Out of sort order.

&gt; +    class NavigationAction;
&gt; +    class String;
&gt; +    class ResourceLoader;

Out of sort order.

&gt; +        void setFrame(Frame *frame);

Remove parameter names if they don&apos;t add any information.
This should be 
  &quot;void setFrame(Frame*);&quot;

&gt; +        void setWebView(WebView *webview);

Remove parameter names if they don&apos;t add any information.


&gt; +        virtual void dispatchDecidePolicyForMIMEType(FramePolicyFunction function,

Remove parameter names if they don&apos;t add any information.

&gt; +        virtual void dispatchDecidePolicyForNewWindowAction(FramePolicyFunction function,

Remove parameter names if they don&apos;t add any information.

&gt; +        virtual void dispatchDecidePolicyForNavigationAction(FramePolicyFunction function,

Remove parameter names if they don&apos;t add any information.


&gt; +        // FIXME: This should probably not be here, but it&apos;s needed for the tests currently
Add &quot;.&quot;


&gt; +        virtual PassRefPtr&lt;Frame&gt; createFrame(const KURL&amp; url, const String&amp; name,
&gt; +                                              HTMLFrameOwnerElement* ownerElement,

Remove parameter names if they don&apos;t add any information: ownerElement.


&gt; +        virtual PassRefPtr&lt;Widget&gt; createPlugin(const IntSize&amp;, HTMLPlugInElement*, const KURL&amp;,
&gt; +                                     const Vector&lt;String&gt;&amp;, const Vector&lt;String&gt;&amp;, const String&amp;,

indentation is off.

&gt; +                                     bool loadManually) ;

&gt; +
&gt; +        virtual PassRefPtr&lt;Widget&gt; createJavaAppletWidget(const IntSize&amp;, HTMLAppletElement*,
&gt; +                                               const KURL&amp; baseURL, const Vector&lt;String&gt;&amp; paramNames,

indentation is off.

&gt; +                                               const Vector&lt;String&gt;&amp; paramValues);

&gt; +        Frame *m_frame;

&quot;*&quot; in wrong location.

&gt; +        WebView *m_webView;

&quot;*&quot; in wrong location.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135147</commentid>
    <comment_count>23</comment_count>
      <attachid>33037</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-28 02:50:01 -0700</bug_when>
    <thetext>Comment on attachment 33037
Patch to add ChromeClient for Haiku WebCore support.

Just a few comments to address and this will be ready to land.

&gt; diff --git a/WebKit/haiku/WebCoreSupport/ChromeClientHaiku.cpp b/WebKit/haiku/WebCoreSupport/ChromeClientHaiku.cpp
&gt; @@ -0,0 +1,360 @@
&gt; +/*
&gt; + * Copyright (C) 2006 Zack Rusin &lt;zack@kde.org&gt;
&gt; + * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
&gt; + * Copyright (C) 2007 Ryan Leavengood &lt;leavengood@gmail.com&gt;
&gt; + *
&gt; + * All rights reserved.

Looks odd as before.
&gt; +
&gt; +#include &quot;Frame.h&quot;
&gt; +#include &quot;FrameView.h&quot;
&gt; +#include &quot;FrameLoadRequest.h&quot;
&gt; +#include &quot;PlatformString.h&quot;
&gt; +#include &quot;HitTestResult.h&quot;
&gt; +
&gt; +#include &quot;NotImplemented.h&quot;

Sort all of these.


&gt; diff --git a/WebKit/haiku/WebCoreSupport/ChromeClientHaiku.h b/WebKit/haiku/WebCoreSupport/ChromeClientHaiku.h
&gt; + * Copyright (C) 2006 Zack Rusin &lt;zack@kde.org&gt;
&gt; + * Copyright (C) 2007 Ryan Leavengood &lt;leavengood@gmail.com&gt;
&gt; + *
&gt; + * All rights reserved.

Ditto :)

&gt; +#ifndef ChromeClientHaiku_H

Use &quot;_h&quot; instead of &quot;_H&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135148</commentid>
    <comment_count>24</comment_count>
      <attachid>33607</attachid>
    <who name="Maxime Simon">simon.maxime</who>
    <bug_when>2009-07-28 03:03:06 -0700</bug_when>
    <thetext>Created attachment 33607
Patch to add ChromeClient for Haiku WebCore support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135150</commentid>
    <comment_count>25</comment_count>
      <attachid>33608</attachid>
    <who name="Maxime Simon">simon.maxime</who>
    <bug_when>2009-07-28 03:22:33 -0700</bug_when>
    <thetext>Created attachment 33608
Patch to add FrameLoaderClient for Haiku WebCore support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135292</commentid>
    <comment_count>26</comment_count>
      <attachid>33607</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-28 11:29:45 -0700</bug_when>
    <thetext>Comment on attachment 33607
Patch to add ChromeClient for Haiku WebCore support.

&gt; +
&gt; +        #if ENABLE(OFFLINE_WEB_APPLICATIONS)
&gt; +        virtual void reachedMaxAppCacheSize(int64_t spaceNeeded);
&gt; +        #endif

The #if (and #endif) shouldn&apos;t be indented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135309</commentid>
    <comment_count>27</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-28 12:00:18 -0700</bug_when>
    <thetext>Commited as http://trac.webkit.org/changeset/46493
and http://trac.webkit.org/changeset/46494</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32229</attachid>
            <date>2009-07-03 02:54:15 -0700</date>
            <delta_ts>2009-07-16 04:44:49 -0700</delta_ts>
            <desc>Patch to add ChromeClient for Haiku WebCore support.</desc>
            <filename>Added-ChromeClient-for-Haiku-WebCore-support.patch</filename>
            <type>text/plain</type>
            <size>18172</size>
            <attacher name="Maxime Simon">simon.maxime</attacher>
            
              <data encoding="base64">RnJvbSAwNTkzMDkyOTFmZTZmMGViNGIwNmM4Mjc2NGZkNjE4Y2JlN2E2NmExIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgU2ltb24gPHNpbW9uLm1heGltZUBnbWFpbC5jb20+
CkRhdGU6IEZyaSwgMyBKdWwgMjAwOSAxMTo1MzoxMCArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIEFk
ZGVkIENocm9tZUNsaWVudCBmb3IgSGFpa3UgV2ViQ29yZSBzdXBwb3J0LgoKLS0tCiBXZWJLaXQv
Q2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2NyArKysrCiBX
ZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuY3BwIHwgIDM1MSAr
KysrKysrKysrKysrKysrKysrKysKIFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRIYWlrdS5oICAgfCAgMTQxICsrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA1NTkgaW5z
ZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJLaXQvaGFp
a3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuY3BwCiBjcmVhdGUgbW9kZSAxMDA2
NDQgV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmgKCmRpZmYg
LS1naXQgYS9XZWJLaXQvQ2hhbmdlTG9nIGIvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1ZDA2Zjkw
Li4wNmVjYjNkIDEwMDY0NAotLS0gYS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw3MCBAQAorMjAwOS0wNy0wMyAgTWF4aW1lIFNpbW9uICA8c2ltb24u
bWF4aW1lQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGRlZCBDaHJvbWVDbGllbnQgZm9yIEhhaWt1IFdlYkNvcmUgc3VwcG9ydC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTUyCisK
KyAgICAgICAgQWRkaW5nIHR3byBmaWxlcywgQ2hyb21lQ2xpZW50SGFpa3UuaCwgQ2hyb21lQ2xp
ZW50SGFpa3UuY3BwCisKKyAgICAgICAgKiBoYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRIYWlrdS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6
OkNocm9tZUNsaWVudEhhaWt1KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1
Ojp+Q2hyb21lQ2xpZW50SGFpa3UpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFp
a3U6OmNocm9tZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlr
dTo6c2V0V2luZG93UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6
d2luZG93UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6cGFnZVJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnNjYWxlRmFjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1Ojpmb2N1cyk6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6dW5mb2N1cyk6CisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWVDbGllbnRIYWlrdTo6Y2FuVGFrZUZvY3VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
ZUNsaWVudEhhaWt1Ojp0YWtlRm9jdXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50
SGFpa3U6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlr
dTo6Y3JlYXRlTW9kYWxEaWFsb2cpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFp
a3U6OnNob3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OmNhblJ1bk1v
ZGFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpydW5Nb2RhbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6c2V0VG9vbGJhcnNWaXNpYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1Ojp0b29sYmFyc1Zpc2libGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnNldFN0YXR1c2JhclZpc2libGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnN0YXR1c2JhclZpc2libGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnNldFNjcm9sbGJhcnNWaXNp
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpzY3JvbGxiYXJzVmlz
aWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6c2V0TWVudWJhclZp
c2libGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6Om1lbnViYXJWaXNp
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpzZXRSZXNpemFibGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OmFkZE1lc3NhZ2VUb0NvbnNv
bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OmNhblJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6
cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudEhhaWt1OjpjbG9zZVdpbmRvd1Nvb24pOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50SGFpa3U6OnJ1bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVD
bGllbnRIYWlrdTo6cnVuSmF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50SGFpa3U6OnJ1bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21lQ2xpZW50SGFpa3U6OnNldFN0YXR1c2JhclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21lQ2xpZW50SGFpa3U6OnNob3VsZEludGVycnVwdEphdmFTY3JpcHQpOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnRhYnNUb0xpbmtzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9tZUNsaWVudEhhaWt1Ojp3aW5kb3dSZXNpemVyUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6cmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWVDbGllbnRIYWlrdTo6c2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhh
aWt1OjpzY3JlZW5Ub1dpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlr
dTo6d2luZG93VG9TY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6
OnBsYXRmb3JtV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1Ojpj
b250ZW50c1NpemVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1
OjpzY3JvbGxSZWN0SW50b1ZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFp
a3U6OmFkZFRvRGlydHlSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFp
a3U6OnNjcm9sbEJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRI
YWlrdTo6dXBkYXRlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dEhhaWt1Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWVDbGllbnRIYWlrdTo6c2V0VG9vbFRpcCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGll
bnRIYWlrdTo6cHJpbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OmV4
Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlr
dTo6cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9tZUNsaWVudEhhaWt1OjpydW5PcGVuUGFuZWwpOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21lQ2xpZW50SGFpa3U6OnNldEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVD
bGllbnRIYWlrdTo6Zm9ybVN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
ZUNsaWVudEhhaWt1OjpjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKToKKyAgICAgICAgKiBoYWlrdS9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oOiBBZGRlZC4KKwogMjAwOS0wNy0wMiAg
QWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHdhcm5pbmdzIGZy
b20gdXBkYXRlLXdlYmtpdC1sb2NhbGl6YWJsZS1zdHJpbmdzCmRpZmYgLS1naXQgYS9XZWJLaXQv
aGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuY3BwIGIvV2ViS2l0L2hhaWt1
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi40Nzg2ZjU2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2hhaWt1
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcApAQCAtMCwwICsxLDM1MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+CisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgUnlhbiBMZWF2ZW5nb29kIDxsZWF2ZW5nb29kQGdt
YWlsLmNvbT4KKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50SGFpa3UuaCIKKworI2luY2x1ZGUgIkZyYW1l
LmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5o
IgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworI2luY2x1ZGUgPEFsZXJ0Lmg+Cisj
aW5jbHVkZSA8U3RyaW5nLmg+CisKKworbmFtZXNwYWNlIFdlYkNvcmUKK3sKKworQ2hyb21lQ2xp
ZW50SGFpa3U6OkNocm9tZUNsaWVudEhhaWt1KCkKK3sKK30KKworQ2hyb21lQ2xpZW50SGFpa3U6
On5DaHJvbWVDbGllbnRIYWlrdSgpCit7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OmNo
cm9tZURlc3Ryb3llZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBDaHJv
bWVDbGllbnRIYWlrdTo6c2V0V2luZG93UmVjdChjb25zdCBGbG9hdFJlY3QmKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK0Zsb2F0UmVjdCBDaHJvbWVDbGllbnRIYWlrdTo6d2luZG93
UmVjdCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gRmxvYXRSZWN0KDAs
IDAsIDIwMCwgMjAwKTsKK30KKworRmxvYXRSZWN0IENocm9tZUNsaWVudEhhaWt1OjpwYWdlUmVj
dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gRmxvYXRSZWN0KDAsIDAs
IDIwMCwgMjAwKTsKK30KKworZmxvYXQgQ2hyb21lQ2xpZW50SGFpa3U6OnNjYWxlRmFjdG9yKCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAxLjA7Cit9CisKK3ZvaWQgQ2hy
b21lQ2xpZW50SGFpa3U6OmZvY3VzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIENocm9tZUNsaWVudEhhaWt1Ojp1bmZvY3VzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCitib29sIENocm9tZUNsaWVudEhhaWt1OjpjYW5UYWtlRm9jdXMoRm9jdXNEaXJlY3Rp
b24pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9p
ZCBDaHJvbWVDbGllbnRIYWlrdTo6dGFrZUZvY3VzKEZvY3VzRGlyZWN0aW9uKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK1BhZ2UqIENocm9tZUNsaWVudEhhaWt1OjpjcmVhdGVXaW5k
b3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6V2luZG93
RmVhdHVyZXMmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisK
K1BhZ2UqIENocm9tZUNsaWVudEhhaWt1OjpjcmVhdGVNb2RhbERpYWxvZyhGcmFtZSosIGNvbnN0
IEZyYW1lTG9hZFJlcXVlc3QmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IDA7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OnNob3coKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK2Jvb2wgQ2hyb21lQ2xpZW50SGFpa3U6OmNhblJ1bk1vZGFsKCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDaHJv
bWVDbGllbnRIYWlrdTo6cnVuTW9kYWwoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OnNldFRvb2xiYXJzVmlzaWJsZShib29sKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgQ2hyb21lQ2xpZW50SGFpa3U6OnRvb2xiYXJz
VmlzaWJsZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OnNldFN0YXR1c2JhclZpc2libGUoYm9vbCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIENocm9tZUNsaWVudEhhaWt1OjpzdGF0
dXNiYXJWaXNpYmxlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6c2V0U2Nyb2xsYmFyc1Zpc2libGUoYm9v
bCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIENocm9tZUNsaWVudEhhaWt1
OjpzY3JvbGxiYXJzVmlzaWJsZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6c2V0TWVudWJhclZpc2libGUo
Ym9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIENocm9tZUNsaWVudEhh
aWt1OjptZW51YmFyVmlzaWJsZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OnNldFJlc2l6YWJsZShib29s
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6
OmFkZE1lc3NhZ2VUb0NvbnNvbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBpbnQg
bGluZU51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgU3RyaW5nJiBzb3VyY2VJRCkKK3sKKyAgICBwcmludGYoIk1FU1NBR0UgJXM6JWkgJXNc
biIsIEJTdHJpbmcoc291cmNlSUQpLlN0cmluZygpLCBsaW5lTnVtYmVyLCBCU3RyaW5nKG1lc3Nh
Z2UpLlN0cmluZygpKTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6YWRkTWVzc2FnZVRv
Q29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKQoreworICAgIHByaW50Zigi
TUVTU0FHRSAlczolaSAlc1xuIiwgQlN0cmluZyhzb3VyY2VJRCkuU3RyaW5nKCksIGxpbmVOdW1i
ZXIsIEJTdHJpbmcobWVzc2FnZSkuU3RyaW5nKCkpOworfQorCitib29sIENocm9tZUNsaWVudEhh
aWt1OjpjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIENocm9tZUNsaWVudEhhaWt1Ojpy
dW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBGcmFtZSog
ZnJhbWUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OmNsb3NlV2luZG93U29vbigpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6cnVuSmF2YVNjcmlwdEFs
ZXJ0KEZyYW1lKiwgY29uc3QgU3RyaW5nJiBtc2cpCit7CisgICAgcHJpbnRmKCJDaHJvbWVDbGll
bnRIYWlrdTo6cnVuSmF2YVNjcmlwdEFsZXJ0KClcbiIpOworICAgIEJBbGVydCogYWxlcnQgPSBu
ZXcgQkFsZXJ0KCJKYXZhU2NyaXB0IiwgQlN0cmluZyhtc2cpLlN0cmluZygpLCAiT0siKTsKKyAg
ICBhbGVydC0+R28oKTsKK30KKworYm9vbCBDaHJvbWVDbGllbnRIYWlrdTo6cnVuSmF2YVNjcmlw
dENvbmZpcm0oRnJhbWUqLCBjb25zdCBTdHJpbmcmIG1zZykKK3sKKyAgICBwcmludGYoIkNocm9t
ZUNsaWVudEhhaWt1OjpydW5KYXZhU2NyaXB0Q29uZmlybSgpXG4iKTsKKyAgICBCQWxlcnQqIGFs
ZXJ0ID0gbmV3IEJBbGVydCgiSmF2YVNjcmlwdCIsIEJTdHJpbmcobXNnKS5TdHJpbmcoKSwgIlll
cyIsICJObyIpOworICAgIHJldHVybiAoYWxlcnQtPkdvKCkgPT0gMCk7Cit9CisKK2Jvb2wgQ2hy
b21lQ2xpZW50SGFpa3U6OnJ1bkphdmFTY3JpcHRQcm9tcHQoRnJhbWUqLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlLCBTdHJpbmcmIHJlc3VsdCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDaHJv
bWVDbGllbnRIYWlrdTo6c2V0U3RhdHVzYmFyVGV4dChjb25zdCBTdHJpbmcmKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgQ2hyb21lQ2xpZW50SGFpa3U6OnNob3VsZEludGVy
cnVwdEphdmFTY3JpcHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitib29sIENocm9tZUNsaWVudEhhaWt1Ojp0YWJzVG9MaW5rcygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitJbnRSZWN0IENocm9tZUNsaWVudEhhaWt1Ojp3aW5k
b3dSZXNpemVyUmVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEludFJlY3QoKTsKK30KKwordm9p
ZCBDaHJvbWVDbGllbnRIYWlrdTo6cmVwYWludChjb25zdCBJbnRSZWN0JiwgYm9vbCBjb250ZW50
Q2hhbmdlZCwgYm9vbCBpbW1lZGlhdGUsIGJvb2wgcmVwYWludENvbnRlbnRPbmx5KQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OnNjcm9sbChj
b25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBj
b25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitJ
bnRQb2ludCBDaHJvbWVDbGllbnRIYWlrdTo6c2NyZWVuVG9XaW5kb3coY29uc3QgSW50UG9pbnQm
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEludFBvaW50KCk7
Cit9CisKK0ludFJlY3QgQ2hyb21lQ2xpZW50SGFpa3U6OndpbmRvd1RvU2NyZWVuKGNvbnN0IElu
dFJlY3QmKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEludFJl
Y3QoKTsKK30KKworUGxhdGZvcm1XaWRnZXQgQ2hyb21lQ2xpZW50SGFpa3U6OnBsYXRmb3JtV2lu
ZG93KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBQbGF0Zm9y
bVdpZGdldCgpOworfQorCit2b2lkIENocm9tZUNsaWVudEhhaWt1Ojpjb250ZW50c1NpemVDaGFu
Z2VkKEZyYW1lKiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6c2Nyb2xsUmVjdEludG9WaWV3KGNvbnN0
IEludFJlY3QmLCBjb25zdCBTY3JvbGxWaWV3KikgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIENocm9tZUNsaWVudEhhaWt1OjphZGRUb0RpcnR5UmVnaW9uKGNvbnN0
IEludFJlY3QmKQoreworfQorCit2b2lkIENocm9tZUNsaWVudEhhaWt1OjpzY3JvbGxCYWNraW5n
U3RvcmUoaW50LCBpbnQsIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JikKK3sKK30KKwor
dm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6dXBkYXRlQmFja2luZ1N0b3JlKCkKK3sKK30KKwordm9p
ZCBDaHJvbWVDbGllbnRIYWlrdTo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVz
dFJlc3VsdCYgaGl0LCB1bnNpZ25lZCAvKm1vZGlmaWVyRmxhZ3MqLykKK3sKKyAgICAvLyBTb21l
IGV4dHJhIGluZm8KKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIENocm9tZUNsaWVu
dEhhaWt1OjpzZXRUb29sVGlwKGNvbnN0IFN0cmluZyYgdGlwKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OnByaW50KEZyYW1lKikKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIENocm9tZUNsaWVudEhhaWt1OjpleGNlZWRl
ZERhdGFiYXNlUXVvdGEoRnJhbWUqLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIENocm9tZUNsaWVudEhhaWt1OjpyZXF1ZXN0
R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoRnJhbWUqLCBHZW9sb2NhdGlvbiopCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6cnVuT3Bl
blBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKworYm9vbCBDaHJvbWVDbGllbnRIYWlrdTo6c2V0Q3Vyc29yKFBsYXRmb3Jt
Q3Vyc29ySGFuZGxlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCisvLyBOb3RpZmljYXRpb24gdGhhdCB0aGUgZ2l2ZW4gZm9ybSBlbGVtZW50IGhhcyBj
aGFuZ2VkLiBUaGlzIGZ1bmN0aW9uCisvLyB3aWxsIGJlIGNhbGxlZCBmcmVxdWVudGx5LCBzbyBo
YW5kbGluZyBzaG91bGQgYmUgdmVyeSBmYXN0Lgordm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6Zm9y
bVN0YXRlRGlkQ2hhbmdlKGNvbnN0IE5vZGUqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK1Bhc3NPd25QdHI8SFRNTFBhcnNlclF1aXJrcz4gQ2hyb21lQ2xpZW50SGFpa3U6OmNyZWF0
ZUhUTUxQYXJzZXJRdWlya3MoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEhhaWt1LmggYi9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50SGFpa3UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTQy
MTdlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEhhaWt1LmgKQEAgLTAsMCArMSwxNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA3IFJ5YW4g
TGVhdmVuZ29vZCA8bGVhdmVuZ29vZEBnbWFpbC5jb20+CisgKgorICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIENocm9tZUNsaWVudEhhaWt1X0gKKyNkZWZpbmUgQ2hyb21l
Q2xpZW50SGFpa3VfSAorCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiRmxv
YXRSZWN0LmgiCisjaW5jbHVkZSAiUmVmQ291bnRlZC5oIgorCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworICAgIGNsYXNzIEZsb2F0UmVjdDsKKyAgICBjbGFzcyBQYWdlOworICAgIHN0cnVjdCBG
cmFtZUxvYWRSZXF1ZXN0OworCisgICAgY2xhc3MgQ2hyb21lQ2xpZW50SGFpa3UgOiBwdWJsaWMg
Q2hyb21lQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIENocm9tZUNsaWVudEhhaWt1KCk7
CisgICAgICAgIHZpcnR1YWwgfkNocm9tZUNsaWVudEhhaWt1KCk7CisgICAgICAgIHZvaWQgY2hy
b21lRGVzdHJveWVkKCk7CisKKyAgICAgICAgdm9pZCBzZXRXaW5kb3dSZWN0KGNvbnN0IEZsb2F0
UmVjdCYpOworICAgICAgICBGbG9hdFJlY3Qgd2luZG93UmVjdCgpOworCisgICAgICAgIEZsb2F0
UmVjdCBwYWdlUmVjdCgpOworCisgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yKCk7CisKKyAgICAg
ICAgdm9pZCBmb2N1cygpOworICAgICAgICB2b2lkIHVuZm9jdXMoKTsKKworICAgICAgICBib29s
IGNhblRha2VGb2N1cyhGb2N1c0RpcmVjdGlvbik7CisgICAgICAgIHZvaWQgdGFrZUZvY3VzKEZv
Y3VzRGlyZWN0aW9uKTsKKworICAgICAgICBQYWdlKiBjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25z
dCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmKTsKKyAg
ICAgICAgUGFnZSogY3JlYXRlTW9kYWxEaWFsb2coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1
ZXN0Jik7CisgICAgICAgIHZvaWQgc2hvdygpOworCisgICAgICAgIGJvb2wgY2FuUnVuTW9kYWwo
KTsKKyAgICAgICAgdm9pZCBydW5Nb2RhbCgpOworCisgICAgICAgIHZvaWQgc2V0VG9vbGJhcnNW
aXNpYmxlKGJvb2wpOworICAgICAgICBib29sIHRvb2xiYXJzVmlzaWJsZSgpOworCisgICAgICAg
IHZvaWQgc2V0U3RhdHVzYmFyVmlzaWJsZShib29sKTsKKyAgICAgICAgYm9vbCBzdGF0dXNiYXJW
aXNpYmxlKCk7CisKKyAgICAgICAgdm9pZCBzZXRTY3JvbGxiYXJzVmlzaWJsZShib29sKTsKKyAg
ICAgICAgYm9vbCBzY3JvbGxiYXJzVmlzaWJsZSgpOworCisgICAgICAgIHZvaWQgc2V0TWVudWJh
clZpc2libGUoYm9vbCk7CisgICAgICAgIGJvb2wgbWVudWJhclZpc2libGUoKTsKKworICAgICAg
ICB2b2lkIHNldFJlc2l6YWJsZShib29sKTsKKworICAgICAgICB2b2lkIGFkZE1lc3NhZ2VUb0Nv
bnNvbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBpbnQgbGluZU51bWJlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgc291cmNlSUQpOwor
CQl2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCk7CisKKwkJYm9v
bCBjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKTsKKworICAgICAgICBib29sIHJ1bkJl
Zm9yZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEZyYW1lKiBmcmFt
ZSk7CisKKyAgICAgICAgdm9pZCBjbG9zZVdpbmRvd1Nvb24oKTsKKworICAgICAgICB2b2lkIHJ1
bkphdmFTY3JpcHRBbGVydChGcmFtZSosIGNvbnN0IFN0cmluZyYpOworICAgICAgICBib29sIHJ1
bkphdmFTY3JpcHRDb25maXJtKEZyYW1lKiwgY29uc3QgU3RyaW5nJik7CisgICAgICAgIGJvb2wg
cnVuSmF2YVNjcmlwdFByb21wdChGcmFtZSosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiBkZWZhdWx0VmFsdWUsIFN0cmluZyYgcmVzdWx0KTsKKyAgICAgICAgYm9vbCBzaG91
bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KCk7CisKKyAgICAgICAgdm9pZCBzZXRTdGF0dXNiYXJUZXh0
KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOworICAgICAgICBib29sIHRhYnNUb0xpbmtzKCkgY29u
c3Q7CisgICAgICAgIEludFJlY3Qgd2luZG93UmVzaXplclJlY3QoKSBjb25zdDsKKworICAgICAg
ICB2b2lkIHJlcGFpbnQoY29uc3QgSW50UmVjdCYsIGJvb2wgY29udGVudENoYW5nZWQsIGJvb2wg
aW1tZWRpYXRlID0gZmFsc2UsIGJvb2wgcmVwYWludENvbnRlbnRPbmx5ID0gZmFsc2UpOworICAg
ICAgICB2b2lkIHNjcm9sbChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVj
dCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CisgICAgICAgIEludFBv
aW50IHNjcmVlblRvV2luZG93KGNvbnN0IEludFBvaW50JikgY29uc3Q7CisgICAgICAgIEludFJl
Y3Qgd2luZG93VG9TY3JlZW4oY29uc3QgSW50UmVjdCYpIGNvbnN0OworICAgICAgICBQbGF0Zm9y
bVdpZGdldCBwbGF0Zm9ybVdpbmRvdygpIGNvbnN0OworICAgICAgICB2b2lkIGNvbnRlbnRzU2l6
ZUNoYW5nZWQoRnJhbWUqLCBjb25zdCBJbnRTaXplJikgY29uc3Q7CisgICAgICAgIHZvaWQgc2Ny
b2xsUmVjdEludG9WaWV3KGNvbnN0IEludFJlY3QmLCBjb25zdCBTY3JvbGxWaWV3KikgY29uc3Q7
CisKKyAgICAgICAgdm9pZCBhZGRUb0RpcnR5UmVnaW9uKGNvbnN0IEludFJlY3QmKTsKKyAgICAg
ICAgdm9pZCBzY3JvbGxCYWNraW5nU3RvcmUoaW50LCBpbnQsIGNvbnN0IEludFJlY3QmLCBjb25z
dCBJbnRSZWN0Jik7CisgICAgICAgIHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlKCk7CisKKyAgICAg
ICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiwgdW5z
aWduZWQgbW9kaWZpZXJGbGFncyk7CisKKyAgICAgICAgdm9pZCBzZXRUb29sVGlwKGNvbnN0IFN0
cmluZyYpOworCisgICAgICAgIHZvaWQgcHJpbnQoRnJhbWUqKTsKKworICAgICAgICB2b2lkIGV4
Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZSosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKTsK
KworICAgICAgICAvLyBUaGlzIGlzIGFuIGFzeW5jaHJvbm91cyBjYWxsLiBUaGUgQ2hyb21lQ2xp
ZW50IGNhbiBkaXNwbGF5IFVJIGFza2luZyB0aGUgdXNlciBmb3IgcGVybWlzc2lvbgorICAgICAg
ICAvLyB0byB1c2UgR2VvbG9jb2NhdGlvbi4gVGhlIENocm9tZUNsaWVudCBtdXN0IGNhbGwgR2Vv
bG9jYXRpb246OnNldFNob3VsZENsZWFyQ2FjaGUoKSBhcHByb3ByaWF0ZWx5LgorICAgICAgICB2
b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShGcmFtZSosIEdlb2xvY2F0
aW9uKik7CisKKyAgICAgICAgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZp
bGVDaG9vc2VyPik7CisKKyAgICAgICAgYm9vbCBzZXRDdXJzb3IoUGxhdGZvcm1DdXJzb3JIYW5k
bGUpOworCisgICAgICAgIC8vIE5vdGlmaWNhdGlvbiB0aGF0IHRoZSBnaXZlbiBmb3JtIGVsZW1l
bnQgaGFzIGNoYW5nZWQuIFRoaXMgZnVuY3Rpb24KKyAgICAgICAgLy8gd2lsbCBiZSBjYWxsZWQg
ZnJlcXVlbnRseSwgc28gaGFuZGxpbmcgc2hvdWxkIGJlIHZlcnkgZmFzdC4KKyAgICAgICAgdm9p
ZCBmb3JtU3RhdGVEaWRDaGFuZ2UoY29uc3QgTm9kZSopOworCisgICAgICAgIFBhc3NPd25QdHI8
SFRNTFBhcnNlclF1aXJrcz4gY3JlYXRlSFRNTFBhcnNlclF1aXJrcygpOworICAgIH07CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisKLS0gCjEuNi4zLjMKCg==
</data>
<flag name="review"
          id="16717"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32230</attachid>
            <date>2009-07-03 03:07:51 -0700</date>
            <delta_ts>2009-07-16 23:02:28 -0700</delta_ts>
            <desc>Patch to add ContextMenuClient for Haiku WebCore support.</desc>
            <filename>Added-ContextMenuClient-for-Haiku-WebCore-support.patch</filename>
            <type>text/plain</type>
            <size>7169</size>
            <attacher name="Maxime Simon">simon.maxime</attacher>
            
              <data encoding="base64">RnJvbSBjYjRkMDYzNjA1MzQ3Njg3NzY1ZmFmZjZmNGZhOWQ4MWM5ZjhkODk5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgU2ltb24gPHNpbW9uLm1heGltZUBnbWFpbC5jb20+
CkRhdGU6IEZyaSwgMyBKdWwgMjAwOSAxMjowNDo1OSArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIEFk
ZGVkIENvbnRleHRNZW51Q2xpZW50IGZvciBIYWlrdSBXZWJDb3JlIHN1cHBvcnQuCgotLS0KIFdl
YktpdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyMiAr
KysrKwogLi4uL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50SGFpa3UuY3BwICAgICAg
fCAgIDg1ICsrKysrKysrKysrKysrKysrKysrCiAuLi4vaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ29u
dGV4dE1lbnVDbGllbnRIYWlrdS5oICB8ICAgNTMgKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5n
ZWQsIDE2MCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0
IFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEhhaWt1LmNwcAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVu
dUNsaWVudEhhaWt1LmgKCmRpZmYgLS1naXQgYS9XZWJLaXQvQ2hhbmdlTG9nIGIvV2ViS2l0L0No
YW5nZUxvZwppbmRleCA1ZDA2ZjkwLi45Mjg0Yzg4IDEwMDY0NAotLS0gYS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAwOS0wNy0wMyAg
TWF4aW1lIFNpbW9uICA8c2ltb24ubWF4aW1lQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBDb250ZXh0TWVudUNsaWVudCBm
b3IgSGFpa3UgV2ViQ29yZSBzdXBwb3J0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjY5NTIKKworICAgICAgICBBZGRpbmcgdHdvIGZpbGVzLCBDb250
ZXh0TWVudUNsaWVudEhhaWt1LmgKKyAgICAgICAgYW5kIENvbnRleHRNZW51Q2xpZW50SGFpa3Uu
Y3BwCisKKyAgICAgICAgKiBoYWlrdS9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEhh
aWt1LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudEhhaWt1
Ojpjb250ZXh0TWVudURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNs
aWVudEhhaWt1OjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZXh0TWVudUNsaWVudEhhaWt1Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudEhhaWt1Ojpkb3dubG9hZFVSTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudEhhaWt1Ojpsb29rVXBJbkRpY3Rpb25h
cnkpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnRIYWlrdTo6c3BlYWspOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnRIYWlrdTo6aXNTcGVha2luZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudEhhaWt1OjpzdG9wU3BlYWtpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnRIYWlrdTo6c2VhcmNoV2l0aEdvb2ds
ZSk6CisgICAgICAgICogaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRIYWlr
dS5oOiBBZGRlZC4KKwogMjAwOS0wNy0wMiAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+
CiAKICAgICAgICAgRml4IHdhcm5pbmdzIGZyb20gdXBkYXRlLXdlYmtpdC1sb2NhbGl6YWJsZS1z
dHJpbmdzCmRpZmYgLS1naXQgYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1l
bnVDbGllbnRIYWlrdS5jcHAgYi9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1l
bnVDbGllbnRIYWlrdS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI4
YWRjNwotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9Db250
ZXh0TWVudUNsaWVudEhhaWt1LmNwcApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA2IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAw
NyBSeWFuIExlYXZlbmdvb2QgPGxlYXZlbmdvb2RAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnRIYWlrdS5oIgorCisjaW5jbHVk
ZSAiQ29udGV4dE1lbnUuaCIKKyNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAi
S1VSTC5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3ZvaWQgQ29udGV4dE1lbnVDbGllbnRIYWlrdTo6Y29udGV4dE1lbnVEZXN0cm95
ZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1BsYXRmb3JtTWVudURlc2NyaXB0
aW9uIENvbnRleHRNZW51Q2xpZW50SGFpa3U6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1z
KENvbnRleHRNZW51KiBtZW51KQoreworICAgIHJldHVybiBtZW51LT5wbGF0Zm9ybURlc2NyaXB0
aW9uKCk7Cit9CisKK3ZvaWQgQ29udGV4dE1lbnVDbGllbnRIYWlrdTo6Y29udGV4dE1lbnVJdGVt
U2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiwgY29uc3QgQ29udGV4dE1lbnUqKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQ29udGV4dE1lbnVDbGllbnRIYWlrdTo6ZG93bmxv
YWRVUkwoY29uc3QgS1VSTCYgdXJsKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgQ29udGV4dE1lbnVDbGllbnRIYWlrdTo6bG9va1VwSW5EaWN0aW9uYXJ5KEZyYW1lKikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIENvbnRleHRNZW51Q2xpZW50SGFpa3U6
OnNwZWFrKGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9v
bCBDb250ZXh0TWVudUNsaWVudEhhaWt1Ojppc1NwZWFraW5nKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDb250ZXh0TWVudUNsaWVudEhh
aWt1OjpzdG9wU3BlYWtpbmcoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
Q29udGV4dE1lbnVDbGllbnRIYWlrdTo6c2VhcmNoV2l0aEdvb2dsZShjb25zdCBGcmFtZSopCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRp
ZmYgLS1naXQgYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRI
YWlrdS5oIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50SGFp
a3UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTZiM2NmCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50
SGFpa3UuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IFphY2sg
UnVzaW4gPHphY2tAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBSeWFuIExlYXZlbmdv
b2QgPGxlYXZlbmdvb2RAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29udGV4dE1lbnVDbGll
bnRIYWlrdV9oCisjZGVmaW5lIENvbnRleHRNZW51Q2xpZW50SGFpa3VfaAorCisjaW5jbHVkZSAi
Q29udGV4dE1lbnVDbGllbnQuaCIKKworCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3Mg
Q29udGV4dE1lbnU7CisKKyAgICBjbGFzcyBDb250ZXh0TWVudUNsaWVudEhhaWt1IDogcHVibGlj
IENvbnRleHRNZW51Q2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgdm9pZCBj
b250ZXh0TWVudURlc3Ryb3llZCgpOworCisgICAgICAgIHZpcnR1YWwgUGxhdGZvcm1NZW51RGVz
Y3JpcHRpb24gZ2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMoQ29udGV4dE1lbnUqKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRl
bSosIGNvbnN0IENvbnRleHRNZW51Kik7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGRvd25sb2Fk
VVJMKGNvbnN0IEtVUkwmIHVybCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29v
Z2xlKGNvbnN0IEZyYW1lKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBsb29rVXBJbkRpY3Rpb25h
cnkoRnJhbWUqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFN0cmluZyYpOwor
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTcGVha2luZygpOworICAgICAgICB2aXJ0dWFsIHZvaWQg
c3RvcFNwZWFraW5nKCk7CisgICAgfTsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIENvbnRleHRNZW51Q2xpZW50SGFpa3VfaAorCi0tIAoxLjYuMy4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32231</attachid>
            <date>2009-07-03 03:16:12 -0700</date>
            <delta_ts>2009-07-16 23:02:43 -0700</delta_ts>
            <desc>Patch to add DragClient for Haiku WebCore support.</desc>
            <filename>Added-DragClient-for-Haiku-WebCore-support.patch</filename>
            <type>text/plain</type>
            <size>6969</size>
            <attacher name="Maxime Simon">simon.maxime</attacher>
            
              <data encoding="base64">RnJvbSBmYjJkNGRkM2ZhMmEwZmFkNDZiNmJlN2UyMTcwNTViN2E5OGVhYTg2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgU2ltb24gPHNpbW9uLm1heGltZUBnbWFpbC5jb20+
CkRhdGU6IEZyaSwgMyBKdWwgMjAwOSAxMjoxNToxMyArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIEFk
ZGVkIERyYWdDbGllbnQgZm9yIEhhaWt1IFdlYkNvcmUgc3VwcG9ydC4KCi0tLQogV2ViS2l0L0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE5ICsrKysrKwogV2Vi
S2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRIYWlrdS5jcHAgfCAgIDc0ICsrKysr
KysrKysrKysrKysrKysrKysrCiBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVu
dEhhaWt1LmggICB8ICAgNDYgKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMTM5IGlu
c2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0L2hh
aWt1L1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRIYWlrdS5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEhhaWt1LmgKCmRpZmYgLS1n
aXQgYS9XZWJLaXQvQ2hhbmdlTG9nIGIvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1ZDA2ZjkwLi45
OTMwNWQ2IDEwMDY0NAotLS0gYS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMiBAQAorMjAwOS0wNy0wMyAgTWF4aW1lIFNpbW9uICA8c2ltb24ubWF4
aW1lQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRlZCBEcmFnQ2xpZW50IGZvciBIYWlrdSBXZWJDb3JlIHN1cHBvcnQuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjk1MgorCisgICAg
ICAgIEFkZGluZyB0d28gZmlsZXMsIERyYWdDbGllbnRIYWlrdS5oIGFuZCBEcmFnQ2xpZW50SGFp
a3UuY3BwCisKKyAgICAgICAgKiBoYWlrdS9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50SGFpa3Uu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDbGllbnRIYWlrdTo6YWN0aW9uTWFz
a0ZvckRyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaWVudEhhaWt1Ojp3aWxsUGVyZm9y
bURyYWdEZXN0aW5hdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2xpZW50SGFp
a3U6OmRyYWdDb250cm9sbGVyRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDbGll
bnRIYWlrdTo6ZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludCk6CisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ2xpZW50SGFpa3U6OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpEcmFnQ2xpZW50SGFpa3U6OnN0YXJ0RHJhZyk6CisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ2xpZW50SGFpa3U6OmNyZWF0ZURyYWdJbWFnZUZvckxpbmspOgorICAgICAgICAqIGhh
aWt1L1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRIYWlrdS5oOiBBZGRlZC4KKwogMjAwOS0wNy0w
MiAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHdhcm5pbmdz
IGZyb20gdXBkYXRlLXdlYmtpdC1sb2NhbGl6YWJsZS1zdHJpbmdzCmRpZmYgLS1naXQgYS9XZWJL
aXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEhhaWt1LmNwcCBiL1dlYktpdC9oYWlr
dS9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50SGFpa3UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjg5NjRjNjkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvaGFpa3Uv
V2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEhhaWt1LmNwcApAQCAtMCwwICsxLDc0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDcgUnlhbiBMZWF2ZW5nb29kIDxsZWF2ZW5nb29kQGdtYWlsLmNv
bT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRyYWdDbGllbnRIYWlr
dS5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0RyYWdEZXN0aW5hdGlvbkFjdGlvbiBEcmFnQ2xpZW50SGFpa3U6OmFjdGlvbk1hc2tG
b3JEcmFnKERyYWdEYXRhKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBE
cmFnRGVzdGluYXRpb25BY3Rpb25Bbnk7Cit9CisKK3ZvaWQgRHJhZ0NsaWVudEhhaWt1Ojp3aWxs
UGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25BY3Rpb24sIERyYWdE
YXRhKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIERyYWdDbGllbnRIYWlr
dTo6ZHJhZ0NvbnRyb2xsZXJEZXN0cm95ZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK0RyYWdTb3VyY2VBY3Rpb24gRHJhZ0NsaWVudEhhaWt1OjpkcmFnU291cmNlQWN0aW9uTWFz
a0ZvclBvaW50KGNvbnN0IEludFBvaW50JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBEcmFnU291cmNlQWN0aW9uQW55OworfQorCit2b2lkIERyYWdDbGllbnRIYWlrdTo6
d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IEludFBv
aW50JiwgQ2xpcGJvYXJkKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIERy
YWdDbGllbnRIYWlrdTo6c3RhcnREcmFnKERyYWdJbWFnZVJlZiBkcmFnSW1hZ2UsIGNvbnN0IElu
dFBvaW50JiwgY29uc3QgSW50UG9pbnQmLCBDbGlwYm9hcmQqLCBGcmFtZSosIGJvb2wpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworRHJhZ0ltYWdlUmVmIERyYWdDbGllbnRIYWlrdTo6
Y3JlYXRlRHJhZ0ltYWdlRm9yTGluayhLVVJMJiwgY29uc3QgU3RyaW5nJiwgRnJhbWUqKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0RyYWdD
bGllbnRIYWlrdS5oIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRIYWlr
dS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxODQzMjIKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEhhaWt1LmgK
QEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3IFJ5YW4gTGVhdmVuZ29v
ZCA8bGVhdmVuZ29vZEBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIkRyYWdDbGllbnQuaCIK
KworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBEcmFnQ2xpZW50SGFpa3UgOiBw
dWJsaWMgRHJhZ0NsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIHZvaWQgd2ls
bFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHJhZ0Rh
dGEqKTsKKyAgICAgICAgdmlydHVhbCBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0
aW9uTWFza0ZvckRyYWcoRHJhZ0RhdGEqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRyYWdDb250
cm9sbGVyRGVzdHJveWVkKCk7CisgICAgICAgIHZpcnR1YWwgRHJhZ1NvdXJjZUFjdGlvbiBkcmFn
U291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50Jik7CisgICAgICAgIHZpcnR1
YWwgdm9pZCB3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvbiwgY29u
c3QgSW50UG9pbnQmLCBDbGlwYm9hcmQqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN0YXJ0RHJh
ZyhEcmFnSW1hZ2VSZWYgZHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYgZHJhZ0ltYWdlT3JpZ2lu
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFBvaW50JiBldmVudFBv
cywgQ2xpcGJvYXJkKiwgRnJhbWUqLCBib29sIGxpbmtEcmFnID0gZmFsc2UpOworICAgICAgICB2
aXJ0dWFsIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKEtVUkwmLCBjb25zdCBT
dHJpbmcmIGxhYmVsLCBGcmFtZSopOworICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KwotLSAKMS42LjMuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32232</attachid>
            <date>2009-07-03 03:28:53 -0700</date>
            <delta_ts>2009-07-16 23:02:59 -0700</delta_ts>
            <desc>Patch to add EditorClient for Haiku WebCore support.</desc>
            <filename>Added-EditorClient-for-Haiku-WebCore-support.patch</filename>
            <type>text/plain</type>
            <size>23758</size>
            <attacher name="Maxime Simon">simon.maxime</attacher>
            
              <data encoding="base64">RnJvbSA1YzdhNzZjMWI4MWJmMmQyNGM0MjEwZDc3NDY2ZjkzNDQxZGYxNjVkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgU2ltb24gPHNpbW9uLm1heGltZUBnbWFpbC5jb20+
CkRhdGU6IEZyaSwgMyBKdWwgMjAwOSAxMjoyNzozOCArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIEFk
ZGVkIEVkaXRvckNsaWVudCBmb3IgSGFpa3UgV2ViQ29yZSBzdXBwb3J0LgoKLS0tCiBXZWJLaXQv
Q2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2NSArKysKIFdl
YktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5jcHAgfCAgNDc5ICsr
KysrKysrKysrKysrKysrKysrKwogV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEhhaWt1LmggICB8ICAxMjQgKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDY2OCBpbnNlcnRp
b25zKCspLCAwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYktpdC9oYWlrdS9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBX
ZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuaAoKZGlmZiAtLWdp
dCBhL1dlYktpdC9DaGFuZ2VMb2cgYi9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVkMDZmOTAuLjk0
Njc5MjUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDY4IEBACisyMDA5LTA3LTAzICBNYXhpbWUgU2ltb24gIDxzaW1vbi5tYXhp
bWVAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZGVkIEVkaXRvckNsaWVudCBmb3IgSGFpa3UgV2ViQ29yZSBzdXBwb3J0LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5NTIKKworICAg
ICAgICBBZGRpbmcgdHdvIGZpbGVzLCBFZGl0b3JDbGllbnRIYWlrdS5oIGFuZCBFZGl0b3JDbGll
bnRIYWlrdS5jcHAKKworICAgICAgICAqIGhhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dEhhaWt1LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRIYWlrdTo6
RWRpdG9yQ2xpZW50SGFpa3UpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50SGFpa3U6
OnNldFBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50SGFpa3U6OnBhZ2VEZXN0
cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50SGFpa3U6OnNob3VsZERlbGV0
ZVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEhhaWt1OjpzaG91bGRTaG93
RGVsZXRlSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEhhaWt1Ojpz
bWFydEluc2VydERlbGV0ZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50
SGFpa3U6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3JDbGllbnRIYWlrdTo6aXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50SGFpa3U6OnRvZ2dsZUNvbnRpbnVvdXNT
cGVsbENoZWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEhhaWt1Ojppc0dy
YW1tYXJDaGVja2luZ0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50SGFp
a3U6OnRvZ2dsZUdyYW1tYXJDaGVja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGll
bnRIYWlrdTo6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yQ2xpZW50SGFpa3U6OmlzRWRpdGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50SGFpa3U6OnNob3VsZEJlZ2luRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JD
bGllbnRIYWlrdTo6c2hvdWxkRW5kRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JD
bGllbnRIYWlrdTo6c2hvdWxkSW5zZXJ0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JD
bGllbnRIYWlrdTo6c2hvdWxkSW5zZXJ0VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JD
bGllbnRIYWlrdTo6c2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3JDbGllbnRIYWlrdTo6c2hvdWxkQXBwbHlTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3JDbGllbnRIYWlrdTo6c2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50SGFpa3U6OmRpZEJlZ2luRWRpdGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRIYWlrdTo6cmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEhhaWt1OjpyZXNwb25kVG9DaGFuZ2VkU2Vs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEhhaWt1OjpkaWRFbmRFZGl0
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEhhaWt1OjpkaWRXcml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRIYWlrdTo6
ZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvckNsaWVudEhhaWt1OjpyZWdpc3RlckNvbW1hbmRGb3JVbmRvKToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvckNsaWVudEhhaWt1OjpyZWdpc3RlckNvbW1hbmRGb3JSZWRvKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvckNsaWVudEhhaWt1OjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRIYWlrdTo6Y2FuVW5kbyk6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRIYWlrdTo6Y2FuUmVkbyk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRIYWlrdTo6dW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRI
YWlrdTo6cmVkbyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRIYWlrdTo6aGFuZGxl
S2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRIYWlrdTo6aGFu
ZGxlSW5wdXRNZXRob2RLZXlkb3duKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEhh
aWt1Ojp0ZXh0RmllbGREaWRCZWdpbkVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Q2xpZW50SGFpa3U6OnRleHRGaWVsZERpZEVuZEVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yQ2xpZW50SGFpa3U6OnRleHREaWRDaGFuZ2VJblRleHRGaWVsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRIYWlrdTo6ZG9UZXh0RmllbGRDb21tYW5kRnJvbUV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEhhaWt1Ojp0ZXh0V2lsbEJlRGVsZXRlZElu
VGV4dEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEhhaWt1Ojp0ZXh0RGlk
Q2hhbmdlSW5UZXh0QXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRIYWlrdTo6
aWdub3JlV29yZEluU3BlbGxEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGll
bnRIYWlrdTo6bGVhcm5Xb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEhhaWt1
OjpjaGVja1NwZWxsaW5nT2ZTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50
SGFpa3U6OmdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEhhaWt1OjpjaGVja0dyYW1tYXJPZlN0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRIYWlrdTo6dXBkYXRlU3BlbGxpbmdVSVdpdGhH
cmFtbWFyU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEhhaWt1Ojp1cGRh
dGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
ckNsaWVudEhhaWt1OjpzaG93U3BlbGxpbmdVSSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JD
bGllbnRIYWlrdTo6c3BlbGxpbmdVSUlzU2hvd2luZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3JDbGllbnRIYWlrdTo6Z2V0R3Vlc3Nlc0ZvcldvcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yQ2xpZW50SGFpa3U6OnNldElucHV0TWV0aG9kU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yQ2xpZW50SGFpa3U6OmlzRWRpdGluZyk6CisgICAgICAgICogaGFpa3UvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuaDogQWRkZWQuCisKIDIwMDktMDctMDIgIEFkYW0gUm9i
ZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB3YXJuaW5ncyBmcm9tIHVwZGF0
ZS13ZWJraXQtbG9jYWxpemFibGUtc3RyaW5ncwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1L1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmNwcCBiL1dlYktpdC9oYWlrdS9XZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYTUxZTM2MQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9oYWlrdS9XZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5jcHAKQEAgLTAsMCArMSw0NzkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgorICogQ29w
eXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDcgUnlhbiBMZWF2ZW5nb29kIDxsZWF2ZW5nb29kQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAo
QykgMjAwNyBBbmRyZWEgQW56YW5pIDxhbmRyZWEuYW56YW5pQGdtYWlsLmNvbT4KKyAqCisgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJFZGl0b3JDbGllbnRIYWlrdS5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJFZGl0b3IuaCIKKyNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJGcmFt
ZS5oIgorI2luY2x1ZGUgIktleWJvYXJkQ29kZXMuaCIKKyNpbmNsdWRlICJLZXlib2FyZEV2ZW50
LmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5o
IgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0VkaXRvckNsaWVudEhhaWt1OjpFZGl0b3JDbGllbnRIYWlrdSgpCisgICAgOiBtX2VkaXRp
bmcoZmFsc2UpCisgICAgLCBtX2luVW5kb1JlZG8oZmFsc2UpCit7Cit9CisKK3ZvaWQgRWRpdG9y
Q2xpZW50SGFpa3U6OnNldFBhZ2UoUGFnZSogcGFnZSkKK3sKKyAgICBtX3BhZ2UgPSBwYWdlOwor
fQorCit2b2lkIEVkaXRvckNsaWVudEhhaWt1OjpwYWdlRGVzdHJveWVkKCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCitib29sIEVkaXRvckNsaWVudEhhaWt1OjpzaG91bGREZWxldGVS
YW5nZShSYW5nZSopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBFZGl0b3JDbGllbnRIYWlrdTo6c2hvdWxkU2hvd0RlbGV0ZUludGVyZmFjZShI
VE1MRWxlbWVudCopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgRWRpdG9yQ2xpZW50SGFpa3U6OnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
RWRpdG9yQ2xpZW50SGFpa3U6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRWRp
dG9yQ2xpZW50SGFpa3U6OmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBFZGl0b3JD
bGllbnRIYWlrdTo6dG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgRWRpdG9yQ2xpZW50SGFpa3U6OmlzR3JhbW1hckNoZWNr
aW5nRW5hYmxlZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50SGFpa3U6OnRvZ2dsZUdyYW1tYXJDaGVja2luZygpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworaW50IEVkaXRvckNsaWVudEhhaWt1OjpzcGVs
bENoZWNrZXJEb2N1bWVudFRhZygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gMDsKK30KKworYm9vbCBFZGl0b3JDbGllbnRIYWlrdTo6aXNFZGl0YWJsZSgpCit7CisgICAg
Ly8gRklYTUU6IHNob3VsZCBiZSBjb250cm9sbGFibGUKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgRWRpdG9yQ2xpZW50SGFpa3U6OnNob3VsZEJlZ2luRWRpdGluZyhXZWJDb3JlOjpSYW5n
ZSopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBFZGl0b3JDbGllbnRIYWlrdTo6c2hvdWxkRW5kRWRpdGluZyhXZWJDb3JlOjpSYW5nZSopCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBFZGl0
b3JDbGllbnRIYWlrdTo6c2hvdWxkSW5zZXJ0Tm9kZShOb2RlKiwgUmFuZ2UqLCBFZGl0b3JJbnNl
cnRBY3Rpb24pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBFZGl0b3JDbGllbnRIYWlrdTo6c2hvdWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcm
LCBSYW5nZSosIEVkaXRvckluc2VydEFjdGlvbikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIEVkaXRvckNsaWVudEhhaWt1OjpzaG91bGRDaGFu
Z2VTZWxlY3RlZFJhbmdlKFJhbmdlKiBmcm9tUmFuZ2UsIFJhbmdlKiB0b1JhbmdlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFQWZmaW5pdHksIGJv
b2wgc3RpbGxTZWxlY3RpbmcpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBFZGl0b3JDbGllbnRIYWlrdTo6c2hvdWxkQXBwbHlTdHlsZShXZWJD
b3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV2ViQ29yZTo6UmFuZ2UqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRWRpdG9yQ2xpZW50SGFpa3U6OnNob3VsZE1vdmVSYW5n
ZUFmdGVyRGVsZXRlKFJhbmdlKiwgUmFuZ2UqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50SGFpa3U6OmRpZEJlZ2luRWRp
dGluZygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2VkaXRpbmcgPSB0cnVlOwor
fQorCit2b2lkIEVkaXRvckNsaWVudEhhaWt1OjpyZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50SGFpa3U6OnJl
c3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgRWRpdG9yQ2xpZW50SGFpa3U6OmRpZEVuZEVkaXRpbmcoKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgbV9lZGl0aW5nID0gZmFsc2U7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50
SGFpa3U6OmRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIEVkaXRvckNsaWVudEhhaWt1OjpkaWRTZXRTZWxlY3Rpb25UeXBl
c0ZvclBhc3RlYm9hcmQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRWRp
dG9yQ2xpZW50SGFpa3U6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oV1RGOjpQYXNzUmVmUHRyPFdl
YkNvcmU6OkVkaXRDb21tYW5kPiBjbWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBFZGl0b3JDbGllbnRIYWlrdTo6cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgRWRpdG9yQ2xpZW50SGFpa3U6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIEVkaXRvckNsaWVudEhhaWt1OjpjYW5V
bmRvKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBFZGl0b3JDbGllbnRIYWlrdTo6Y2FuUmVkbygpIGNvbnN0Cit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50
SGFpa3U6OnVuZG8oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9pblVuZG9SZWRv
ID0gdHJ1ZTsKKyAgICBtX2luVW5kb1JlZG8gPSBmYWxzZTsKK30KKwordm9pZCBFZGl0b3JDbGll
bnRIYWlrdTo6cmVkbygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2luVW5kb1Jl
ZG8gPSB0cnVlOworICAgIG1faW5VbmRvUmVkbyA9IGZhbHNlOworfQorCit2b2lkIEVkaXRvckNs
aWVudEhhaWt1OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQorewor
ICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1h
aW5GcmFtZSgpOworICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5kb2N1bWVudCgpLT5mb2N1c2Vk
Tm9kZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQqIGtldmVudCA9IGV2ZW50LT5rZXlFdmVudCgpOworICAgIGlmICgha2V2ZW50IHx8IGtldmVu
dC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5VXApCisgICAgICAgIHJldHVy
bjsKKworICAgIE5vZGUqIHN0YXJ0ID0gZnJhbWUtPnNlbGVjdGlvbigpLT5zdGFydCgpLm5vZGUo
KTsKKyAgICBpZiAoIXN0YXJ0KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoc3RhcnQtPmlz
Q29udGVudEVkaXRhYmxlKCkpIHsKKyAgICAgICAgc3dpdGNoKGtldmVudC0+d2luZG93c1ZpcnR1
YWxLZXlDb2RlKCkpIHsKKyAgICAgICAgY2FzZSBWS19CQUNLOgorICAgICAgICAgICAgZnJhbWUt
PmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tX
QVJELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtl
dmVudC0+Y3RybEtleSgpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2Us
IHRydWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVktfREVMRVRFOgorICAg
ICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkZPUldBUkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAga2V2ZW50LT5jdHJsS2V5KCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0
ZXJHcmFudWxhcml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmYWxzZSwgdHJ1ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBW
S19MRUZUOgorICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoa2V2ZW50LT5z
aGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5EIDogU2VsZWN0aW9uQ29udHJv
bGxlcjo6TU9WRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkxFRlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBrZXZlbnQtPmN0cmxLZXkoKSA/IFdvcmRHcmFudWxhcml0eSA6IENoYXJhY3RlckdyYW51
bGFyaXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBWS19SSUdIVDoKKyAgICAgICAgICAgIGZy
YW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KGtldmVudC0+c2hpZnRLZXkoKSA/IFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkVYVEVORCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpSSUdIVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtldmVudC0+Y3RybEtleSgp
ID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFZLX1VQOgorICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnko
a2V2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5EIDogU2VsZWN0
aW9uQ29udHJvbGxlcjo6TU9WRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga2V2ZW50LT5jdHJsS2V5KCkgPyBQYXJhZ3JhcGhHcmFudWxhcml0
eSA6IExpbmVHcmFudWxhcml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRydWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVktfRE9XTjoKKyAg
ICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KGtldmVudC0+c2hpZnRLZXkoKSA/
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb25Db250cm9s
bGVyOjpGT1JXQVJELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V2
ZW50LT5jdHJsS2V5KCkgPyBQYXJhZ3JhcGhHcmFudWxhcml0eSA6IExpbmVHcmFudWxhcml0eSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgVktfUFJJT1I6ICAvLyBQYWdlVXAKKyAgICAgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVVwQnlQYWdlQW5kTW9kaWZ5Q2FyZXQiKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZLX05FWFQ6ICAvLyBQYWdlRG93bgor
ICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlRG93bkJ5UGFnZUFuZE1v
ZGlmeUNhcmV0Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBWS19SRVRVUk46
CisgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIkluc2VydExpbmVCcmVhayIp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVktfVEFCOgorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKCFrZXZlbnQtPmN0cmxL
ZXkoKSAmJiAha2V2ZW50LT5hbHRLZXkoKSAmJiAha2V2ZW50LT50ZXh0KCkuaXNFbXB0eSgpKSB7
CisgICAgICAgICAgICAgICAgaWYgKGtldmVudC0+dGV4dCgpLmxlbmd0aCgpID09IDEpIHsKKyAg
ICAgICAgICAgICAgICAgICAgVUNoYXIgY2ggPSBrZXZlbnQtPnRleHQoKVswXTsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gRG9uJ3QgaW5zZXJ0IG51bGwgb3IgY29udHJvbCBjaGFyYWN0ZXJzIGFz
IHRoZXkgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGJlaGF2aW91cgorICAgICAgICAgICAgICAg
ICAgICBpZiAoY2ggPCAnICcpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0
KGtldmVudC0+dGV4dCgpLCBldmVudCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGtldmVudC0+
Y3RybEtleSgpKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChrZXZlbnQtPndpbmRvd3NWaXJ0
dWFsS2V5Q29kZSgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBWS19BOgorICAgICAgICAgICAg
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlNlbGVjdEFsbCIpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFZLX0I6CisgICAgICAgICAg
ICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiVG9nZ2xlQm9sZCIpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFZLX0M6CisgICAgICAg
ICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiQ29weSIpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFZLX0k6CisgICAgICAgICAg
ICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiVG9nZ2xlSXRhbGljIik7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVktfVjoKKyAgICAg
ICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJQYXN0ZSIpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFZLX1g6CisgICAgICAg
ICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiQ3V0Iik7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVktfWToKKyAgICAgICAgICAg
ICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJSZWRvIik7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVktfWjoKKyAgICAgICAgICAgICAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJVbmRvIik7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgcmV0dXJuOwor
ICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3dpdGNoIChrZXZlbnQtPndpbmRvd3NW
aXJ0dWFsS2V5Q29kZSgpKSB7CisgICAgICAgIGNhc2UgVktfVVA6CisgICAgICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVVcCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgVktfRE9XTjoKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgi
TW92ZURvd24iKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZLX1BSSU9SOiAg
Ly8gUGFnZVVwCisgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVVcEJ5
UGFnZUFuZE1vZGlmeUNhcmV0Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBW
S19ORVhUOiAgLy8gUGFnZURvd24KKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFu
ZCgiTW92ZURvd25CeVBhZ2VBbmRNb2RpZnlDYXJldCIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgVktfSE9NRToKKyAgICAgICAgICAgIGlmIChrZXZlbnQtPmN0cmxLZXkoKSkK
KyAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVUb0JlZ2lubmlu
Z09mRG9jdW1lbnQiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZLX0VORDoK
KyAgICAgICAgICAgIGlmIChrZXZlbnQtPmN0cmxLZXkoKSkKKyAgICAgICAgICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVUb0VuZE9mRG9jdW1lbnQiKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKGtldmVudC0+Y3RybEtl
eSgpKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoKGtldmVudC0+d2luZG93c1ZpcnR1YWxLZXlD
b2RlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBWS19BOgorICAgICAgICAgICAgICAg
ICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJTZWxlY3RBbGwiKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIFZLX0M6IGNh
c2UgVktfWDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFu
ZCgiQ29weSIpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHJldHVybjsKKyAgICAgICAgfQorICAgIH0K
KyAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRI
YWlrdTo6aGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKEtleWJvYXJkRXZlbnQqKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50SGFpa3U6OnRleHRGaWVsZERp
ZEJlZ2luRWRpdGluZyhFbGVtZW50KikKK3sKKyAgICBtX2VkaXRpbmcgPSB0cnVlOworfQorCit2
b2lkIEVkaXRvckNsaWVudEhhaWt1Ojp0ZXh0RmllbGREaWRFbmRFZGl0aW5nKEVsZW1lbnQqKQor
eworICAgIG1fZWRpdGluZyA9IGZhbHNlOworfQorCit2b2lkIEVkaXRvckNsaWVudEhhaWt1Ojp0
ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQoRWxlbWVudCopCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKworYm9vbCBFZGl0b3JDbGllbnRIYWlrdTo6ZG9UZXh0RmllbGRDb21tYW5kRnJvbUV2
ZW50KEVsZW1lbnQqLCBLZXlib2FyZEV2ZW50KikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3ZvaWQgRWRpdG9yQ2xpZW50SGFpa3U6OnRleHRXaWxsQmVEZWxldGVkSW5UZXh0RmllbGQoRWxl
bWVudCopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRI
YWlrdTo6dGV4dERpZENoYW5nZUluVGV4dEFyZWEoRWxlbWVudCopCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRIYWlrdTo6aWdub3JlV29yZEluU3BlbGxE
b2N1bWVudChjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgRWRpdG9yQ2xpZW50SGFpa3U6OmxlYXJuV29yZChjb25zdCBTdHJpbmcmKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50SGFpa3U6OmNoZWNrU3BlbGxp
bmdPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCwgaW50KiwgaW50KikKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCitTdHJpbmcgRWRpdG9yQ2xpZW50SGFpa3U6OmdldEF1dG9Db3JyZWN0
U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYgbWlzc3BlbGxlZFdvcmQp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK3Zv
aWQgRWRpdG9yQ2xpZW50SGFpa3U6OmNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwg
aW50LCBWZWN0b3I8R3JhbW1hckRldGFpbD4mLCBpbnQqLCBpbnQqKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50SGFpa3U6OnVwZGF0ZVNwZWxsaW5nVUlX
aXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBHcmFtbWFyRGV0YWlsJikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEVkaXRvckNsaWVudEhhaWt1Ojp1cGRh
dGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRIYWlrdTo6c2hvd1NwZWxsaW5n
VUkoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIEVkaXRvckNsaWVu
dEhhaWt1OjpzcGVsbGluZ1VJSXNTaG93aW5nKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRIYWlrdTo6Z2V0R3Vlc3Nl
c0ZvcldvcmQoY29uc3QgU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4mKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50SGFpa3U6OnNldElucHV0TWV0aG9kU3Rh
dGUoYm9vbCBlbmFibGVkKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgRWRp
dG9yQ2xpZW50SGFpa3U6OmlzRWRpdGluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZWRpdGlu
ZzsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9XZWJLaXQvaGFp
a3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuaCBiL1dlYktpdC9oYWlrdS9XZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmVkYTk1OTcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvaGFpa3UvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuaApAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
KyAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAw
NyBSeWFuIExlYXZlbmdvb2QgPGxlYXZlbmdvb2RAZ21haWwuY29tPgorICoKKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBFZGl0b3JDbGllbnRIYWlrdV9ICisjZGVmaW5l
IEVkaXRvckNsaWVudEhhaWt1X0gKKworI2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgorI2luY2x1
ZGUgIlJlZkNvdW50ZWQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisKKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgorCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIEVkaXRvckNsaWVu
dEhhaWt1IDogcHVibGljIEVkaXRvckNsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBFZGl0
b3JDbGllbnRIYWlrdSgpOworICAgICAgICB2b2lkIHNldFBhZ2UoIFBhZ2UqIHBhZ2UgKTsKKwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgpOworCisgICAgICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGREZWxldGVSYW5nZShSYW5nZSopOworICAgICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkU2hvd0RlbGV0ZUludGVyZmFjZShIVE1MRWxlbWVudCopOworICAgICAgICB2aXJ0dWFsIGJv
b2wgc21hcnRJbnNlcnREZWxldGVFbmFibGVkKCk7CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Nl
bGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKTsKKyAgICAgICAgdmlydHVhbCBib29sIGlz
Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCB0
b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZygpOworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNH
cmFtbWFyQ2hlY2tpbmdFbmFibGVkKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVHcmFt
bWFyQ2hlY2tpbmcoKTsKKyAgICAgICAgdmlydHVhbCBpbnQgc3BlbGxDaGVja2VyRG9jdW1lbnRU
YWcoKTsKKworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNFZGl0YWJsZSgpOworCisgICAgICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRCZWdpbkVkaXRpbmcoUmFuZ2UqKTsKKyAgICAgICAgdmlydHVhbCBi
b29sIHNob3VsZEVuZEVkaXRpbmcoUmFuZ2UqKTsKKyAgICAgICAgdmlydHVhbCBib29sIHNob3Vs
ZEluc2VydE5vZGUoTm9kZSosIFJhbmdlKiwgRWRpdG9ySW5zZXJ0QWN0aW9uKTsKKyAgICAgICAg
dmlydHVhbCBib29sIHNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiwgUmFuZ2UqLCBFZGl0
b3JJbnNlcnRBY3Rpb24pOworICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2hhbmdlU2VsZWN0
ZWRSYW5nZShSYW5nZSogZnJvbVJhbmdlLCBSYW5nZSogdG9SYW5nZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUFmZmluaXR5LCBib29sIHN0aWxsU2Vs
ZWN0aW5nKTsKKworICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXBwbHlTdHlsZShDU1NTdHls
ZURlY2xhcmF0aW9uKiwgUmFuZ2UqKTsKKyAgICAgICAgdmlydHVhbCBib29sIHNob3VsZE1vdmVS
YW5nZUFmdGVyRGVsZXRlKFJhbmdlKiwgUmFuZ2UqKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQmVnaW5FZGl0aW5nKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2Vk
Q29udGVudHMoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rp
b24oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCk7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRTZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQoKTsKKworICAgICAgICB2
aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yVW5kbyhQYXNzUmVmUHRyPEVkaXRDb21tYW5k
Pik7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JSZWRvKFBhc3NSZWZQ
dHI8RWRpdENvbW1hbmQ+KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNsZWFyVW5kb1JlZG9PcGVy
YXRpb25zKCk7CisKKyAgICAgICAgdmlydHVhbCBib29sIGNhblVuZG8oKSBjb25zdDsKKyAgICAg
ICAgdmlydHVhbCBib29sIGNhblJlZG8oKSBjb25zdDsKKworICAgICAgICB2aXJ0dWFsIHZvaWQg
dW5kbygpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVkbygpOworCisgICAgICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bihLZXlib2FyZEV2ZW50Kik7CisKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHRleHRGaWVsZERpZEJlZ2luRWRpdGluZyhFbGVtZW50Kik7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCB0ZXh0RmllbGREaWRFbmRFZGl0aW5nKEVsZW1lbnQqKTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHRleHREaWRDaGFuZ2VJblRleHRGaWVsZChFbGVtZW50Kik7CisgICAg
ICAgIHZpcnR1YWwgYm9vbCBkb1RleHRGaWVsZENvbW1hbmRGcm9tRXZlbnQoRWxlbWVudCosIEtl
eWJvYXJkRXZlbnQqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHRleHRXaWxsQmVEZWxldGVkSW5U
ZXh0RmllbGQoRWxlbWVudCopOworICAgICAgICB2aXJ0dWFsIHZvaWQgdGV4dERpZENoYW5nZUlu
VGV4dEFyZWEoRWxlbWVudCopOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBpZ25vcmVXb3JkSW5T
cGVsbERvY3VtZW50KGNvbnN0IFN0cmluZyYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgbGVhcm5X
b3JkKGNvbnN0IFN0cmluZyYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tTcGVsbGluZ09m
U3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgaW50KiBtaXNzcGVsbGluZ0xvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogbWlzc3Bl
bGxpbmdMZW5ndGgpOworICAgICAgICB2aXJ0dWFsIFN0cmluZyBnZXRBdXRvQ29ycmVjdFN1Z2dl
c3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmIG1pc3NwZWxsZWRXb3JkKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50
IGxlbmd0aCwgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCogYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1t
YXJMZW5ndGgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFt
bWFyU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IEdyYW1tYXJEZXRhaWwmKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQoY29uc3QgU3Ry
aW5nJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzaG93U3BlbGxpbmdVSShib29sIHNob3cpOwor
ICAgICAgICB2aXJ0dWFsIGJvb2wgc3BlbGxpbmdVSUlzU2hvd2luZygpOworICAgICAgICB2aXJ0
dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4m
IGd1ZXNzZXMpOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29s
IGVuYWJsZWQpOworCisgICAgICAgIGJvb2wgaXNFZGl0aW5nKCkgY29uc3Q7CisKKyAgICBwcml2
YXRlOgorICAgICAgICBQYWdlKiBtX3BhZ2U7CisgICAgICAgIGJvb2wgbV9lZGl0aW5nOworICAg
ICAgICBib29sIG1faW5VbmRvUmVkbzsgLy8gb3VyIHVuZG8gc3RhY2sgd29ya3MgZGlmZmVyZW50
bHkgLSBkb24ndCByZS1lbnRlciEKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFZGl0b3JDbGllbnRIYWlrdV9oCisKLS0gCjEuNi4zLjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32233</attachid>
            <date>2009-07-03 03:38:03 -0700</date>
            <delta_ts>2009-07-16 04:58:09 -0700</delta_ts>
            <desc>Patch to add FrameLoaderClient for Haiku WebCore support.</desc>
            <filename>Added-FrameLoaderClient-for-Haiku-WebCore-support.patch</filename>
            <type>text/plain</type>
            <size>42680</size>
            <attacher name="Maxime Simon">simon.maxime</attacher>
            
              <data encoding="base64">RnJvbSA1MGFkNTY0MzVmOWE0ZGNiZmI2ZDJkY2ExNjY5ZDFkOGQwZTliYTQ5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgU2ltb24gPHNpbW9uLm1heGltZUBnbWFpbC5jb20+
CkRhdGU6IEZyaSwgMyBKdWwgMjAwOSAxMjozNzoxMSArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIEFk
ZGVkIEZyYW1lTG9hZGVyQ2xpZW50IGZvciBIYWlrdSBXZWJDb3JlIHN1cHBvcnQuCgotLS0KIFdl
YktpdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEyNCAr
KysrCiAuLi4vV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5jcHAgICAgICB8
ICA3NjEgKysrKysrKysrKysrKysrKysrKysKIC4uLi9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEhhaWt1LmggIHwgIDIzNCArKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMTEx
OSBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYktp
dC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcAogY3JlYXRl
IG1vZGUgMTAwNjQ0IFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEhhaWt1LmgKCmRpZmYgLS1naXQgYS9XZWJLaXQvQ2hhbmdlTG9nIGIvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCA5NDY3OTI1Li4wMzRlMWMzIDEwMDY0NAotLS0gYS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTIsNiArMiwxMzAgQEAKIAogICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBBZGRlZCBGcmFtZUxvYWRlckNsaWVudCBm
b3IgSGFpa3UgV2ViQ29yZSBzdXBwb3J0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjY5NTIKKworICAgICAgICBBZGRpbmcgdHdvIGZpbGVzLCBGcmFt
ZUxvYWRlckNsaWVudEhhaWt1LmgKKyAgICAgICAgYW5kIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3Uu
Y3BwCisKKyAgICAgICAgKiBoYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhh
aWt1LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1
OjpGcmFtZUxvYWRlckNsaWVudEhhaWt1KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50SGFpa3U6OmZyYW1lTG9hZGVyRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50SGFpa3U6OmZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50SGFpa3U6Omhhc1dlYlZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRIYWlrdTo6aGFzRnJhbWVWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50SGFpa3U6OnByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6bWFrZURvY3VtZW50Vmlldyk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjptYWtlUmVwcmVzZW50YXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6Zm9yY2VMYXlvdXQpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6Zm9yY2VMYXlvdXRGb3JOb25I
VE1MKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNldENvcGll
c09uU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRl
dGFjaGVkRnJvbVBhcmVudDIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRI
YWlrdTo6ZGV0YWNoZWRGcm9tUGFyZW50Myk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudEhhaWt1OjpkZXRhY2hlZEZyb21QYXJlbnQ0KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50SGFpa3U6OmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoV2lsbFNl
bmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNo
b3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkQ2Fu
Y2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExl
bmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRj
aERpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRI
YWlrdTo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZExv
YWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaFdpbGxQZXJmb3JtQ2xp
ZW50UmVkaXJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6
ZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hXaWxsQ2xvc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFp
a3U6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRG
YWlsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNw
YXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZEZpbmlzaExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRGaXJzdExheW91dCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZEZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhh
aWt1OjpkaXNwYXRjaENyZWF0ZVBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRIYWlrdTo6ZGlzcGF0Y2hTaG93KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50SGFpa3U6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlr
dTo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmNhbmNlbFBvbGljeUNoZWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoVW5hYmxlVG9JbXBs
ZW1lbnRQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6
ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudEhhaWt1OjpkaXNwYXRjaERpZExvYWRNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6cmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNldE1haW5Eb2N1bWVudEVy
cm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmNsZWFyVW5h
cmNoaXZpbmdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1
Ojpwb3N0UHJvZ3Jlc3NTdGFydGVkTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50SGFpa3U6OnBvc3RQcm9ncmVzc0VzdGltYXRlQ2hhbmdlZE5vdGlmaWNh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpwb3N0UHJv
Z3Jlc3NGaW5pc2hlZE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudEhhaWt1OjpzZXRNYWluRnJhbWVEb2N1bWVudFJlYWR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnN0YXJ0RG93bmxvYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6d2lsbENoYW5nZVRpdGxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpZENoYW5nZVRpdGxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmNvbW1pdHRlZExvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZmluaXNoZWRMb2FkaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmZpbmFsU2V0dXBGb3JS
ZXBsYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnVwZGF0
ZUdsb2JhbEhpc3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlr
dTo6dXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6dXBkYXRlR2xvYmFsSGlzdG9yeUZvclN0YW5kYXJkTG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojp1cGRhdGVHbG9i
YWxIaXN0b3J5Rm9yUmVsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
SGFpa3U6OnNob3VsZEdvVG9IaXN0b3J5SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudEhhaWt1OjpjYW5jZWxsZWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudEhhaWt1OjpibG9ja2VkRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRIYWlrdTo6Y2Fubm90U2hvd1VSTEVycm9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmludGVycnVwdEZvclBvbGljeUNoYW5nZUVycm9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmNhbm5vdFNob3dN
SU1FVHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6
OmZpbGVEb2VzTm90RXhpc3RFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudEhhaWt1OjpwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNob3VsZEZhbGxCYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNldERlZmVyc0xvYWRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6d2lsbFVzZUFyY2hpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6aXNBcmNoaXZlTG9hZFBlbmRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6Y2FuY2VsUGVuZGlu
Z0FyY2hpdmVMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6
OmNsZWFyQXJjaGl2ZWRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRIYWlrdTo6Y2FuSGFuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudEhhaWt1OjpjYW5TaG93TUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRIYWlrdTo6cmVwcmVzZW50YXRpb25FeGlzdHNGb3JVUkxTY2hlbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6Z2VuZXJhdGVkTUlNRVR5
cGVGb3JVUkxTY2hlbWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlr
dTo6ZnJhbWVMb2FkQ29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50SGFpa3U6OnNhdmVWaWV3U3RhdGVUb0l0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRIYWlrdTo6cmVzdG9yZVZpZXdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudEhhaWt1Ojpwcm92aXNpb25hbExvYWRTdGFydGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpZEZpbmlzaExvYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6cHJlcGFyZUZvckRhdGFTb3VyY2VS
ZXBsYWNlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpj
cmVhdGVEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dEhhaWt1OjpzZXRUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhh
aWt1Ojp1c2VyQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlr
dTo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRIYWlrdTo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnRyYW5zaXRpb25U
b0NvbW1pdHRlZEZvck5ld1BhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRIYWlrdTo6Y2FuQ2FjaGVQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50SGFpa3U6OmRvd25sb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
SGFpa3U6OmNyZWF0ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
SGFpa3U6OmNyZWF0ZVBsdWdpbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dEhhaWt1OjpyZWRpcmVjdERhdGFUb1BsdWdpbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudEhhaWt1OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6Om9iamVjdENvbnRlbnRUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6Om92ZXJyaWRlTWVkaWFUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OndpbmRvd09iamVjdENsZWFy
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlkUGVyZm9y
bUZpcnN0TmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhh
aWt1OjpyZWdpc3RlckZvckljb25Ob3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRIYWlrdTo6ZG9jdW1lbnRFbGVtZW50QXZhaWxhYmxlKToKKyAgICAgICAg
KiBoYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6fkZyYW1lTG9hZGVyQ2xp
ZW50SGFpa3UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6c2V0
RnJhbWUpOgorCisyMDA5LTA3LTAzICBNYXhpbWUgU2ltb24gIDxzaW1vbi5tYXhpbWVAZ21haWwu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIEFk
ZGVkIEVkaXRvckNsaWVudCBmb3IgSGFpa3UgV2ViQ29yZSBzdXBwb3J0LgogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5NTIKIApkaWZmIC0tZ2l0IGEv
V2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuY3BwIGIv
V2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlMmI3MWEKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5j
cHAKQEAgLTAsMCArMSw3NjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgRG9uIEdpYnNv
biA8ZGdpYnNvbjc3QGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2lu
IDx6YWNrQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgVHJvbGx0ZWNo
IEFTQQorICogQ29weXJpZ2h0IChDKSAyMDA3IFJ5YW4gTGVhdmVuZ29vZCA8bGVhdmVuZ29vZEBn
bWFpbC5jb20+CisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5oIgorCisjaW5jbHVk
ZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUg
IkZyYW1lVHJlZS5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3Qu
aCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKKyNpbmNsdWRlIDxTdHJpbmcuaD4K
Ky8vI2luY2x1ZGUgPFZpZXcuaD4KKworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ZyYW1lTG9h
ZGVyQ2xpZW50SGFpa3U6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3UoKQorICAgIDogbV9mcmFtZSgw
KQorICAgICwgbV9maXJzdERhdGEoZmFsc2UpCit7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGll
bnRIYWlrdTo6ZnJhbWVMb2FkZXJEZXN0cm95ZWQoKQoreworICAgIG1fZnJhbWUgPSAwOworICAg
IGRlbGV0ZSB0aGlzOworfQorCitGcmFtZSogRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZnJhbWUo
KQoreworICAgIHJldHVybiBtX2ZyYW1lOworfQorCitib29sIEZyYW1lTG9hZGVyQ2xpZW50SGFp
a3U6Omhhc1dlYlZpZXcoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6aGFzRnJhbWVWaWV3
KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSBj
b25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6Om1ha2VEb2N1bWVudFZpZXcoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6bWFrZVJl
cHJlc2VudGF0aW9uKERvY3VtZW50TG9hZGVyKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCisvLyB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNldERvY3VtZW50Vmlld0Zyb21D
YWNoZWRQYWdlKFdlYkNvcmU6OkNhY2hlZFBhZ2UqKQorLy97CisvLyAgICBub3RJbXBsZW1lbnRl
ZCgpOworLy99CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6Zm9yY2VMYXlvdXQoKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlr
dTo6Zm9yY2VMYXlvdXRGb3JOb25IVE1MKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNldENvcGllc09uU2Nyb2xsKCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCisvL3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6
ZGV0YWNoZWRGcm9tUGFyZW50MSgpCisvL3sKKy8vICBub3RJbXBsZW1lbnRlZCgpOworLy99CisK
K3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGV0YWNoZWRGcm9tUGFyZW50MigpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpk
ZXRhY2hlZEZyb21QYXJlbnQzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRldGFjaGVkRnJvbVBhcmVudDQoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKKy8vdm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpsb2Fk
ZWRGcm9tQ2FjaGVkUGFnZSgpCisvL3sKKy8vICAgIG5vdEltcGxlbWVudGVkKCk7CisvL30KKwor
dm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojphc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVx
dWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvY3VtZW50TG9hZGVyKiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50
TG9hZGVyKiwgdW5zaWduZWQgbG9uZyAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgRnJhbWVMb2FkZXJD
bGllbnRIYWlrdTo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoRG9jdW1lbnRMb2FkZXIqLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hE
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2FkZXIqLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkQ2FuY2VsQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoRG9jdW1lbnRMb2FkZXIqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhh
aWt1OjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIG1fcmVzcG9u
c2UgPSByZXNwb25zZTsKKyAgICBtX2ZpcnN0RGF0YSA9IHRydWU7Cit9CisKK3ZvaWQgRnJhbWVM
b2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChEb2N1bWVu
dExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoUmVjZWl2
ZWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVu
dEhhaWt1OjpkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBG
cmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9h
ZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlc291cmNlRXJyb3ImKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlz
cGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgaW50IGxlbmd0aCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERp
ZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBTY3JpcHRTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMoKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlr
dTo6ZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlr
dTo6ZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaFdpbGxQZXJm
b3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgS1VSTCYsIGRvdWJsZSwgZG91YmxlKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0
Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hXaWxsQ2xvc2UoKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlr
dTo6ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpk
aXNwYXRjaERpZENvbW1pdExvYWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
KGNvbnN0IFJlc291cmNlRXJyb3ImKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNv
dXJjZUVycm9yJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3Bh
dGNoRGlkRmluaXNoTG9hZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBG
cmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3Bh
dGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCitGcmFtZSogRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hDcmVhdGVQ
YWdlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoU2hvdygpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck1JTUVUeXBlKEZyYW1lUG9saWN5RnVuY3Rpb24gcG9saWN5RnVuY3Rpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgU3RyaW5nJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIGNhbGwgZGlyZWN0bHkgaGVyZSAo
Y29tbWVudCBjb3BpZWQgZnJvbSBRdCB2ZXJzaW9uKQorICAgIEFTU0VSVChmcmFtZSgpICYmIHBv
bGljeUZ1bmN0aW9uKTsKKyAgICBpZiAoIWZyYW1lKCkgfHwgIXBvbGljeUZ1bmN0aW9uKQorICAg
ICAgICByZXR1cm47CisgICAgKGZyYW1lKCktPmxvYWRlcigpLT4qcG9saWN5RnVuY3Rpb24pKFBv
bGljeVVzZSk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5j
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICBBU1NFUlQoZnJhbWUoKSAmJiBwb2xpY3lGdW5jdGlvbik7CisgICAgaWYgKCFm
cmFtZSgpIHx8ICFwb2xpY3lGdW5jdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIC8vIEZJWE1F
OiBJIHRoaW5rIFF0IHZlcnNpb24gbWFyc2hhbHMgdGhpcyB0byBhbm90aGVyIHRocmVhZCBzbyB3
aGVuIHdlCisgICAgLy8gaGF2ZSBtdWx0aS10aHJlYWRlZCBkb3dubG9hZCwgd2UgbWlnaHQgbmVl
ZCB0byBkbyB0aGUgc2FtZQorICAgIChmcmFtZSgpLT5sb2FkZXIoKS0+KnBvbGljeUZ1bmN0aW9u
KShQb2xpY3lVc2UpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gcG9saWN5
RnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGNvbnN0IFN0
cmluZyYgZnJhbWVOYW1lKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgQVNTRVJUKGZy
YW1lKCkgJiYgcG9saWN5RnVuY3Rpb24pOworICAgIGlmICghZnJhbWUoKSB8fCAhcG9saWN5RnVu
Y3Rpb24pCisgICAgICAgIHJldHVybjsKKyAgICAvLyBGSVhNRTogSSB0aGluayBRdCB2ZXJzaW9u
IG1hcnNoYWxzIHRoaXMgdG8gYW5vdGhlciB0aHJlYWQgc28gd2hlbiB3ZQorICAgIC8vIGhhdmUg
bXVsdGktdGhyZWFkZWQgZG93bmxvYWQsIHdlIG1pZ2h0IG5lZWQgdG8gZG8gdGhlIHNhbWUKKyAg
ICAoZnJhbWUoKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5VXNlKTsKK30KKwor
dm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgQVNTRVJUKGZyYW1lKCkgJiYgcG9saWN5RnVuY3Rp
b24pOworICAgIGlmICghZnJhbWUoKSB8fCAhcG9saWN5RnVuY3Rpb24pCisgICAgICAgIHJldHVy
bjsKKyAgICAoZnJhbWUoKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5VXNlKTsK
K30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+KQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgQVNTRVJUKGZyYW1lKCkgJiYgcG9saWN5RnVuY3Rpb24pOworICAgIGlmICgh
ZnJhbWUoKSB8fCAhcG9saWN5RnVuY3Rpb24pCisgICAgICAgIHJldHVybjsKKyAgICAoZnJhbWUo
KS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9saWN5VXNlKTsKK30KKwordm9pZCBGcmFt
ZUxvYWRlckNsaWVudEhhaWt1OjpjYW5jZWxQb2xpY3lDaGVjaygpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaFVuYWJs
ZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFJlc291cmNlRXJyb3ImKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hXaWxs
U3VibWl0Rm9ybShGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9uLCBQYXNzUmVmUHRy
PEZvcm1TdGF0ZT4pCit7CisgICAgLy8gRklYTUU6IFRoaXMgaXMgc3VyZWx5IHRvbyBzaW1wbGUK
KyAgICBBU1NFUlQoZnJhbWUoKSAmJiBwb2xpY3lGdW5jdGlvbik7CisgICAgaWYgKCFmcmFtZSgp
IHx8ICFwb2xpY3lGdW5jdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIChmcmFtZSgpLT5sb2Fk
ZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQb2xpY3lVc2UpOworfQorCit2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkTG9hZE1haW5SZXNvdXJjZShEb2N1bWVudExvYWRlciop
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhh
aWt1OjpyZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUoRG9jdW1lbnRMb2FkZXIqKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6c2V0TWFp
bkRvY3VtZW50RXJyb3IoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikKK3sKKyAgICBwcmludGYoIkRvY3VtZW50IGVycm9yOiAlc1xuIixCU3RyaW5nKGVycm9yLmRv
bWFpbigpKS5TdHJpbmcoKSk7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFt
ZUxvYWRlckNsaWVudEhhaWt1OjpjbGVhclVuYXJjaGl2aW5nU3RhdGUoRG9jdW1lbnRMb2FkZXIq
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRI
YWlrdTo6cG9zdFByb2dyZXNzU3RhcnRlZE5vdGlmaWNhdGlvbigpCit7CisgICAgLy8gbm8gcHJv
Z3Jlc3Mgbm90aWZpY2F0aW9uIGZvciBub3cKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhh
aWt1Ojpwb3N0UHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWROb3RpZmljYXRpb24oKQoreworICAgIC8v
IG5vIHByb2dyZXNzIG5vdGlmaWNhdGlvbiBmb3Igbm93Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJD
bGllbnRIYWlrdTo6cG9zdFByb2dyZXNzRmluaXNoZWROb3RpZmljYXRpb24oKQoreworICAgIC8v
IG5vIHByb2dyZXNzIG5vdGlmaWNhdGlvbiBmb3Igbm93Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJD
bGllbnRIYWlrdTo6c2V0TWFpbkZyYW1lRG9jdW1lbnRSZWFkeShib29sKQoreworICAgIC8vIHRo
aXMgaXMgb25seSBpbnRlcmVzdGluZyBvbmNlIHdlIHByb3ZpZGUgYW4gZXh0ZXJuYWwgQVBJIGZv
ciB0aGUgRE9NCit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6c3RhcnREb3dubG9h
ZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6d2lsbENoYW5nZVRpdGxlKERvY3VtZW50TG9h
ZGVyKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50SGFpa3U6OmRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyICpsKQoreworICAgIHNldFRp
dGxlKGwtPnRpdGxlKCksIGwtPnVybCgpKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhh
aWt1Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpCit7CisgICAgaWYgKCFmcmFtZSgpKQorICAgICAgICByZXR1cm47Cisg
ICAgRnJhbWVMb2FkZXIgKmZsID0gbG9hZGVyLT5mcmFtZUxvYWRlcigpOworICAgIGZsLT5zZXRF
bmNvZGluZyhtX3Jlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSwgZmFsc2UpOworICAgIGZsLT5h
ZGREYXRhKGRhdGEsIGxlbmd0aCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6
ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmZpbmFsU2V0dXBGb3JSZXBsYWNl
KERvY3VtZW50TG9hZGVyKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50SGFpa3U6OnVwZGF0ZUdsb2JhbEhpc3RvcnkoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6dXBkYXRlR2xv
YmFsSGlzdG9yeVJlZGlyZWN0TGlua3MoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6dXBkYXRlR2xvYmFsSGlzdG9yeUZvclN0YW5k
YXJkTG9hZChjb25zdCBLVVJMJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnVwZGF0ZUdsb2JhbEhpc3RvcnlGb3JSZWxvYWQoY29u
c3QgS1VSTCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBGcmFtZUxvYWRl
ckNsaWVudEhhaWt1OjpzaG91bGRHb1RvSGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pIGNv
bnN0Cit7CisgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB2ZXJ5IHNpbXBsZSBpbXBsZW1lbnRhdGlv
bi4gTW9yZSBzb3BoaXN0aWNhdGVkCisgICAgLy8gaW1wbGVtZW50YXRpb24gd291bGQgZGVsZWdh
dGUgdGhlIGRlY2lzaW9uIHRvIGEgUG9saWN5RGVsZWdhdGUuCisgICAgLy8gU2VlIG1hYyBpbXBs
ZW1lbnRhdGlvbiBmb3IgZXhhbXBsZS4KKyAgICByZXR1cm4gaXRlbSAhPSAwOworfQorCitSZXNv
dXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmNhbmNlbGxlZEVycm9yKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gUmVz
b3VyY2VFcnJvcigpOworfQorCitSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6
OmJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoKTsKK30KKworUmVzb3VyY2VFcnJvciBG
cmFtZUxvYWRlckNsaWVudEhhaWt1OjpjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBSZXNvdXJjZUVy
cm9yKCk7Cit9CisKK1Jlc291cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6aW50ZXJy
dXB0Rm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKCk7Cit9CisKK1Jlc291
cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6Y2Fubm90U2hvd01JTUVUeXBlRXJyb3Io
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gUmVzb3VyY2VFcnJvcigpOworfQorCitSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xp
ZW50SGFpa3U6OmZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKCk7Cit9
CisKK1Jlc291cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6cGx1Z2luV2lsbEhhbmRs
ZUxvYWRFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKCk7Cit9CisKK2Jvb2wgRnJhbWVMb2FkZXJD
bGllbnRIYWlrdTo6c2hvdWxkRmFsbEJhY2soY29uc3QgUmVzb3VyY2VFcnJvciYpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRIYWlrdTo6c2V0RGVmZXJzTG9hZGluZyhib29sKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6d2lsbFVzZUFyY2hpdmUo
UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBLVVJMJiBvcmln
aW5hbFVSTCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojppc0FyY2hpdmVMb2FkUGVuZGlu
ZyhSZXNvdXJjZUxvYWRlciopIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6Y2FuY2VsUGVu
ZGluZ0FyY2hpdmVMb2FkKFJlc291cmNlTG9hZGVyKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmNsZWFyQXJjaGl2ZWRSZXNvdXJj
ZXMoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgRnJhbWVMb2FkZXJDbGll
bnRIYWlrdTo6Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdAor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRnJh
bWVMb2FkZXJDbGllbnRIYWlrdTo6Y2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5n
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6cmVwcmVzZW50YXRpb25FeGlzdHNGb3JVUkxT
Y2hlbWUoY29uc3QgU3RyaW5nJikgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmdlbmVy
YXRlZE1JTUVUeXBlRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYpIGNvbnN0Cit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRIYWlrdTo6ZnJhbWVMb2FkQ29tcGxldGVkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNhdmVWaWV3U3RhdGVUb0l0
ZW0oSGlzdG9yeUl0ZW0qKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJh
bWVMb2FkZXJDbGllbnRIYWlrdTo6cmVzdG9yZVZpZXdTdGF0ZSgpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpwcm92aXNpb25hbExv
YWRTdGFydGVkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50SGFpa3U6OmRpZEZpbmlzaExvYWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6cHJlcGFyZUZvckRhdGFTb3VyY2VS
ZXBsYWNlbWVudCgpCit7CisgICAgaWYgKG1fZnJhbWUgJiYgbV9mcmFtZS0+bG9hZGVyKCkpCisg
ICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKK30KKworUGFzc1Jl
ZlB0cjxEb2N1bWVudExvYWRlcj4gRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6Y3JlYXRlRG9jdW1l
bnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQoreworICAgIFJlZlB0cjxEb2N1
bWVudExvYWRlcj4gbG9hZGVyID0gRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJz
dGl0dXRlRGF0YSk7CisgICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgRnJh
bWVMb2FkZXJDbGllbnRIYWlrdTo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiwgY29uc3QgS1VSTCYp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50
SGFpa3U6OnVzZXJBZ2VudChjb25zdCBLVVJMJikKK3sKKyAgICByZXR1cm4gIk1vemlsbGEvNS4w
IChjb21wYXRpYmxlOyBVOyBJbmZpTmV0IDAuMTsgSGFpa3UpIEFwcGxlV2ViS2l0LzQyMCsgKEtI
VE1MLCBsaWtlIEdlY2tvKSI7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6c2F2
ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6dHJhbnNpdGlvblRv
Q29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnRyYW5zaXRpb25Ub0Nv
bW1pdHRlZEZvck5ld1BhZ2UoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKKy8vIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6c2F2ZURvY3VtZW50Vmlld1RvQ2FjaGVkUGFnZShD
YWNoZWRQYWdlKikKKy8veworLy8gICAgbm90SW1wbGVtZW50ZWQoKTsKKy8vfQorCitib29sIEZy
YW1lTG9hZGVyQ2xpZW50SGFpa3U6OmNhbkNhY2hlUGFnZSgpIGNvbnN0Cit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9Cit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
SGFpa3U6OmRvd25sb2FkKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKworUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6Y3JlYXRlRnJh
bWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIVE1MRnJhbWVPd25lckVsZW1l
bnQqIG93bmVyRWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xs
aW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KQoreworCS8vIEZJWE1FOgorICAg
IC8vIHRoaXJkOiAgIHdlIHNob3VsZCBhcHBseSB0aGUgcmlnaHQgcHJvcGVydHkgdG8gdGhlIGZy
YW1lVmlldy4gKHNjcm9sbGJhcixtYXJnaW5zKQorICAgIC8vIGVycm9yOiAgIHdoZW4gY29tcGls
aW5nIHVuZGVyIGdjYzQsIGVycm9yOiBjYW5ub3QgYWxsb2NhdGUgYW4gb2JqZWN0IG9mIGFic3Ry
YWN0IHR5cGUKKworICAgIFJlZlB0cjxGcmFtZT4gY2hpbGRGcmFtZSA9IEZyYW1lOjpjcmVhdGUo
bV9mcmFtZS0+cGFnZSgpLCBvd25lckVsZW1lbnQsIHRoaXMpOworICAgIHNldEZyYW1lKGNoaWxk
RnJhbWUuZ2V0KCkpOworCisgICAgUmVmUHRyPEZyYW1lVmlldz4gZnJhbWVWaWV3ID0gRnJhbWVW
aWV3OjpjcmVhdGUoY2hpbGRGcmFtZS5nZXQoKSk7CisKKyAgICBmcmFtZVZpZXctPnNldEFsbG93
c1Njcm9sbGluZyhhbGxvd3NTY3JvbGxpbmcpOworICAgIGZyYW1lVmlldy0+ZGVyZWYoKTsKKyAg
ICBjaGlsZEZyYW1lLT5zZXRWaWV3KGZyYW1lVmlldy5nZXQoKSk7CisgICAgY2hpbGRGcmFtZS0+
aW5pdCgpOworCisgICAgY2hpbGRGcmFtZS0+dHJlZSgpLT5zZXROYW1lKG5hbWUpOworICAgIG1f
ZnJhbWUtPnRyZWUoKS0+YXBwZW5kQ2hpbGQoY2hpbGRGcmFtZSk7CisKKyAgICBjaGlsZEZyYW1l
LT5sb2FkZXIoKS0+bG9hZFVSTEludG9DaGlsZEZyYW1lKHVybCwgcmVmZXJyZXIsIGNoaWxkRnJh
bWUuZ2V0KCkpOworCisgICAgLy8gVGhlIGZyYW1lJ3Mgb25sb2FkIGhhbmRsZXIgbWF5IGhhdmUg
cmVtb3ZlZCBpdCBmcm9tIHRoZSBkb2N1bWVudC4KKyAgICBpZiAoIWNoaWxkRnJhbWUtPnRyZWUo
KS0+cGFyZW50KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGNoaWxkRnJhbWUu
cmVsZWFzZSgpOworfQorCitXaWRnZXQqIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmNyZWF0ZVBs
dWdpbihjb25zdCBJbnRTaXplJiwgRWxlbWVudCosIGNvbnN0IEtVUkwmLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitXaWRnZXQqIEZyYW1lTG9hZGVyQ2xp
ZW50SGFpa3U6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQq
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgS1VS
TCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9v
bCBsb2FkTWFudWFsbHkpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsK
K30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpyZWRpcmVjdERhdGFUb1BsdWdpbihX
aWRnZXQqIHBsdWdpbldpZGdldCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
bjsKK30KKworV2lkZ2V0KiBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpjcmVhdGVKYXZhQXBwbGV0
V2lkZ2V0KGNvbnN0IEludFNpemUmLCBFbGVtZW50KiwgY29uc3QgS1VSTCYgYmFzZVVSTCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1W
YWx1ZXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworV2lk
Z2V0KiBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0
IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IEtVUkwmIGJhc2VVUkwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFs
dWVzKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK09iamVj
dENvbnRlbnRUeXBlIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6Om9iamVjdENvbnRlbnRUeXBlKGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBPYmplY3RDb250ZW50VHlwZSgpOworfQorCitTdHJpbmcgRnJh
bWVMb2FkZXJDbGllbnRIYWlrdTo6b3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdAoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCit2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50SGFpa3U6OndpbmRvd09iamVjdENsZWFyZWQoKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlkUGVyZm9ybUZpcnN0
TmF2aWdhdGlvbigpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBG
cmFtZUxvYWRlckNsaWVudEhhaWt1OjpyZWdpc3RlckZvckljb25Ob3RpZmljYXRpb24oYm9vbCBs
aXN0ZW4gKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJD
bGllbnRIYWlrdTo6ZG9jdW1lbnRFbGVtZW50QXZhaWxhYmxlKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1dlYktp
dC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmggYi9XZWJLaXQv
aGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmNTAzYzkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJL
aXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5oCkBAIC0wLDAg
KzEsMjM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IFphY2sgUnVzaW4gPHphY2tAa2Rl
Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBSeWFuIExlYXZlbmdvb2QgPGxl
YXZlbmdvb2RAZ21haWwuY29tPgorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBGcmFtZUxvYWRlckNsaWVudEhhaWt1X0gKKyNkZWZpbmUgRnJhbWVMb2FkZXJDbGll
bnRIYWlrdV9ICisKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgorCisjaW5jbHVkZSAi
UmVzb3VyY2VSZXNwb25zZS5oIgorCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBG
cmFtZUxvYWRlckNsaWVudEhhaWt1IDogcHVibGljIEZyYW1lTG9hZGVyQ2xpZW50IHsKKyAgICBw
dWJsaWM6CisgICAgICAgIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3UoKTsKKyAgICAgICAgfkZyYW1l
TG9hZGVyQ2xpZW50SGFpa3UoKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGZyYW1lTG9hZGVy
RGVzdHJveWVkKCk7CisKKyAgICAgICAgdm9pZCBzZXRGcmFtZShGcmFtZSAqZnJhbWUpIHsgbV9m
cmFtZSA9IGZyYW1lOyB9CisgICAgICAgIEZyYW1lKiBmcmFtZSgpOworCisgICAgICAgIHZpcnR1
YWwgYm9vbCBoYXNXZWJWaWV3KCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNGcmFt
ZVZpZXcoKSBjb25zdDsKKworICAgICAgICB2aXJ0dWFsIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCgpIGNvbnN0OworCisgICAgICAgIHZpcnR1YWwgdm9pZCBtYWtlRG9jdW1lbnRWaWV3KCk7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBtYWtlUmVwcmVzZW50YXRpb24oRG9jdW1lbnRMb2FkZXIq
KTsKKyAgICAgICAgLy8gdmlydHVhbCB2b2lkIHNldERvY3VtZW50Vmlld0Zyb21DYWNoZWRQYWdl
KENhY2hlZFBhZ2UqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGZvcmNlTGF5b3V0KCk7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBmb3JjZUxheW91dEZvck5vbkhUTUwoKTsKKworICAgICAgICB2aXJ0
dWFsIHZvaWQgc2V0Q29waWVzT25TY3JvbGwoKTsKKworICAgICAgICAvL3ZpcnR1YWwgdm9pZCBk
ZXRhY2hlZEZyb21QYXJlbnQxKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hlZEZyb21Q
YXJlbnQyKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hlZEZyb21QYXJlbnQzKCk7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hlZEZyb21QYXJlbnQ0KCk7CisKKyAgICAgICAgLy92
aXJ0dWFsIHZvaWQgbG9hZGVkRnJvbUNhY2hlZFBhZ2UoKTsKKworICAgICAgICB2aXJ0dWFsIHZv
aWQgYXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBEb2N1bWVudExvYWRlciosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKworICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIqLCB1bnNp
Z25lZCBsb25nICBpZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVk
aXJlY3RSZXNwb25zZSk7CisJCXZpcnR1YWwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1
bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENh
bmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9u
ZyAgaWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9h
ZGVyKiwgdW5zaWduZWQgbG9uZyAgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChE
b2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGxlbmd0aFJlY2Vp
dmVkKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1
bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgIGlkZW50aWZpZXIpOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxv
bmcgIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICAgICAgdmlydHVhbCBi
b29sIGRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVy
KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBp
bnQgbGVuZ3RoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTG9hZFJlc291cmNl
QnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0
cmluZyYpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2
ZW50cygpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWQoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
V2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBLVVJMJiwgZG91YmxlLCBkb3VibGUpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2Uo
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpOworICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKTsKKworICAgICAgICB2
aXJ0dWFsIEZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoKTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoU2hvdygpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBv
bGljeUZvck1JTUVUeXBlKEZyYW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0IFN0cmluZyYgTUlNRVR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiwgY29uc3Qg
TmF2aWdhdGlvbkFjdGlvbiYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJp
bmcmIGZyYW1lTmFtZSk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBOYXZpZ2F0aW9u
QWN0aW9uJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRl
PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9u
LCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pOworICAgICAgICB2
aXJ0dWFsIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShjb25zdCBSZXNvdXJjZUVycm9yJik7CisK
KyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oRnJhbWVQb2xpY3lG
dW5jdGlvbiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+KTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRMb2FkTWFpblJlc291cmNlKERvY3VtZW50TG9hZGVyKik7CisgICAgICAgIHZp
cnR1YWwgdm9pZCByZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUoRG9jdW1lbnRMb2FkZXIqKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHNldE1haW5Eb2N1bWVudEVycm9yKERvY3VtZW50TG9hZGVyKiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJVbmFyY2hp
dmluZ1N0YXRlKERvY3VtZW50TG9hZGVyKik7CisKKyAgICAgICAgLy8gRklYTUU6IFRoZXNlIGFy
ZSBpbiBGcmFtZUxvYWRlckNsaWVudCwgbm90IHN1cmUgaWYgd2UgbmVlZCB0byBpbXBsZW1lbnQK
KyAgICAgICAgLy92aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCk7Cisg
ICAgICAgIC8vdmlydHVhbCB2b2lkIGRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCk7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBwb3N0UHJvZ3Jlc3NTdGFydGVkTm90aWZpY2F0aW9uKCk7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBwb3N0UHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWROb3RpZmljYXRpb24o
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9u
KCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldE1haW5GcmFtZURvY3VtZW50UmVhZHkoYm9v
bCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHN0YXJ0RG93bmxvYWQoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VUaXRsZShEb2N1bWVu
dExvYWRlciopOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRM
b2FkZXIqKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExv
YWRlciosIGNvbnN0IGNoYXIqLCBpbnQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRM
b2FkaW5nKERvY3VtZW50TG9hZGVyKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5hbFNldHVw
Rm9yUmVwbGFjZShEb2N1bWVudExvYWRlciopOworCisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVHbG9iYWxIaXN0b3J5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0
b3J5UmVkaXJlY3RMaW5rcygpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxI
aXN0b3J5Rm9yU3RhbmRhcmRMb2FkKGNvbnN0IEtVUkwmKTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUdsb2JhbEhpc3RvcnlGb3JSZWxvYWQoY29uc3QgS1VSTCYpOworICAgICAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkR29Ub0hpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKikgY29uc3Q7CisKKyAg
ICAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpOworICAgICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2Fu
bm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgICAgICB2aXJ0dWFs
IFJlc291cmNlRXJyb3IgaW50ZXJydXB0Rm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Jik7CisKKyAgICAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dN
SU1FVHlwZUVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICAgICAgdmlydHVhbCBS
ZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CisgICAgICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVy
cm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKworICAgICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkRmFsbEJhY2soY29uc3QgUmVzb3VyY2VFcnJvciYpOworCisgICAgICAgIHZpcnR1YWwgdm9p
ZCBzZXREZWZlcnNMb2FkaW5nKGJvb2wpOworCisgICAgICAgIHZpcnR1YWwgYm9vbCB3aWxsVXNl
QXJjaGl2ZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEtV
UkwmIG9yaWdpbmFsVVJMKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBib29sIGlzQXJjaGl2ZUxv
YWRQZW5kaW5nKFJlc291cmNlTG9hZGVyKikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgdm9pZCBj
YW5jZWxQZW5kaW5nQXJjaGl2ZUxvYWQoUmVzb3VyY2VMb2FkZXIqKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGNsZWFyQXJjaGl2ZWRSZXNvdXJjZXMoKTsKKworICAgICAgICB2aXJ0dWFsIGJvb2wg
Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKKyAgICAgICAg
dmlydHVhbCBib29sIGNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICAg
ICAgdmlydHVhbCBib29sIHJlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKGNvbnN0IFN0
cmluZyYpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFN0cmluZyBnZW5lcmF0ZWRNSU1FVHlwZUZv
clVSTFNjaGVtZShjb25zdCBTdHJpbmcmKSBjb25zdDsKKworICAgICAgICB2aXJ0dWFsIHZvaWQg
ZnJhbWVMb2FkQ29tcGxldGVkKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzYXZlVmlld1N0YXRl
VG9JdGVtKEhpc3RvcnlJdGVtKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlVmlld1N0
YXRlKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwcm92aXNpb25hbExvYWRTdGFydGVkKCk7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkKCk7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCk7CisKKyAgICAgICAgLy92aXJ0dWFs
IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRM
b2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vi
c3RpdHV0ZURhdGEmKTsKKyAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVy
PiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJz
dGl0dXRlRGF0YSYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5n
JiB0aXRsZSwgY29uc3QgS1VSTCYpOworCisgICAgICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2Vu
dChjb25zdCBLVVJMJik7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHNhdmVQbGF0Zm9ybURhdGFU
b0NhY2hlZEZyYW1lKENhY2hlZEZyYW1lKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0
aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKTsKKworICAgICAgICAv
LyB2aXJ0dWFsIHZvaWQgc2F2ZURvY3VtZW50Vmlld1RvQ2FjaGVkUGFnZShDYWNoZWRQYWdlKik7
CisgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdDsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRvd25sb2FkKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworCisg
ICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsK
KyAgICAgICAgdmlydHVhbCBXaWRnZXQqIGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgRWxl
bWVudCosIGNvbnN0IEtVUkwmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVh
bGx5KTsKKyAgICAgICAgdmlydHVhbCBXaWRnZXQqIGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXpl
JiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcm
LCBib29sIGxvYWRNYW51YWxseSk7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFU
b1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCk7CisKKyAgICAgICAgdmlydHVhbCBXaWRnZXQq
IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYsIEVsZW1lbnQqLCBjb25zdCBL
VVJMJiBiYXNlVVJMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
VmFsdWVzKTsKKyAgICAgICAgdmlydHVhbCBXaWRnZXQqIGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQo
Y29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgS1VSTCYgYmFzZVVSTCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CisKKyAg
ICAgICAgdmlydHVhbCBPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgICAgICB2aXJ0dWFsIFN0cmlu
ZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0OworCisgICAgICAgIHZpcnR1YWwgdm9pZCB3aW5k
b3dPYmplY3RDbGVhcmVkKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3JtRmlyc3RO
YXZpZ2F0aW9uKCkgY29uc3Q7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRm9ySWNv
bk5vdGlmaWNhdGlvbihib29sIGxpc3RlbiA9IHRydWUpOworCisJCXZpcnR1YWwgdm9pZCBkb2N1
bWVudEVsZW1lbnRBdmFpbGFibGUoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIEZyYW1lICpt
X2ZyYW1lOworICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CisgICAgICAgIGJv
b2wgbV9maXJzdERhdGE7CisgICAgfTsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3VfaAorCi0tIAoxLjYuMy4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32234</attachid>
            <date>2009-07-03 03:43:27 -0700</date>
            <delta_ts>2009-07-16 23:03:15 -0700</delta_ts>
            <desc>Patch to add InspectorClient for Haiku WebCore support.</desc>
            <filename>Added-InspectorClient-for-Haiku-WebCore-support.patch</filename>
            <type>text/plain</type>
            <size>8640</size>
            <attacher name="Maxime Simon">simon.maxime</attacher>
            
              <data encoding="base64">RnJvbSBlYjk2MDhkYTcwNjhmZTkxN2JiNDc2MWUzZDIzOWNiNWU4ZDgwZmU3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgU2ltb24gPHNpbW9uLm1heGltZUBnbWFpbC5jb20+
CkRhdGU6IEZyaSwgMyBKdWwgMjAwOSAxMjo0MjoyNSArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIEFk
ZGVkIEluc3BlY3RvckNsaWVudCBmb3IgSGFpa3UgV2ViQ29yZSBzdXBwb3J0LgoKLS0tCiBXZWJL
aXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjcgKysr
KysKIC4uLi9oYWlrdS9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRIYWlrdS5jcHAgIHwg
IDExOSArKysrKysrKysrKysrKysrKysrKwogV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudEhhaWt1LmggfCAgIDcxICsrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2Vk
LCAyMTcgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBX
ZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50SGFpa3UuY3BwCiBjcmVh
dGUgbW9kZSAxMDA2NDQgV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVu
dEhhaWt1LmgKCmRpZmYgLS1naXQgYS9XZWJLaXQvQ2hhbmdlTG9nIGIvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCA1ZDA2ZjkwLi43OTc2Yjk1IDEwMDY0NAotLS0gYS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAwOS0wNy0wMyAgTWF4aW1l
IFNpbW9uICA8c2ltb24ubWF4aW1lQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBJbnNwZWN0b3JDbGllbnQgZm9yIEhhaWt1
IFdlYkNvcmUgc3VwcG9ydC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI2OTUyCisKKyAgICAgICAgQWRkaW5nIHR3byBmaWxlcywgSW5zcGVjdG9yQ2xp
ZW50SGFpa3UuaCBhbmQgSW5zcGVjdG9yQ2xpZW50SGFpa3UuY3BwCisKKyAgICAgICAgKiBoYWlr
dS9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRIYWlrdS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50SGFpa3U6Omluc3BlY3RvckRlc3Ryb3llZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRIYWlrdTo6Y3JlYXRlUGFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRIYWlrdTo6bG9jYWxpemVkU3RyaW5nc1VSTCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRIYWlrdTo6aGlkZGVuUGFuZWxzKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudEhhaWt1OjpzaG93V2luZG93KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudEhhaWt1OjpjbG9zZVdpbmRvdyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRIYWlrdTo6YXR0YWNoV2luZG93KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudEhhaWt1OjpkZXRhY2hXaW5kb3cpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50SGFpa3U6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudEhhaWt1OjpoaWdobGlnaHQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50SGFpa3U6OmhpZGVIaWdobGlnaHQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50SGFpa3U6Omluc3BlY3RlZFVSTENoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50SGFpa3U6OnBvcHVsYXRlU2V0
dGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRIYWlrdTo6c3RvcmVTZXR0
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudEhhaWt1OjpyZW1vdmVTZXR0
aW5nKToKKyAgICAgICAgKiBoYWlrdS9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRIYWlr
dS5oOiBBZGRlZC4KKwogMjAwOS0wNy0wMiAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+
CiAKICAgICAgICAgRml4IHdhcm5pbmdzIGZyb20gdXBkYXRlLXdlYmtpdC1sb2NhbGl6YWJsZS1z
dHJpbmdzCmRpZmYgLS1naXQgYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9y
Q2xpZW50SGFpa3UuY3BwIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNs
aWVudEhhaWt1LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWM5ZDI0
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0luc3BlY3Rv
ckNsaWVudEhhaWt1LmNwcApAQCAtMCwwICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA3IFJ5YW4gTGVhdmVuZ29vZCA8bGVhdmVuZ29vZEBnbWFpbC5jb20+CisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudEhhaWt1LmgiCisKKyNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3ZvaWQgSW5zcGVjdG9yQ2xpZW50SGFpa3U6Omluc3BlY3RvckRlc3Ry
b3llZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworUGFnZSogSW5zcGVjdG9yQ2xp
ZW50SGFpa3U6OmNyZWF0ZVBhZ2UoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIDA7Cit9CisKK1N0cmluZyBJbnNwZWN0b3JDbGllbnRIYWlrdTo6bG9jYWxpemVkU3RyaW5n
c1VSTCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9
CisKK1N0cmluZyBJbnNwZWN0b3JDbGllbnRIYWlrdTo6aGlkZGVuUGFuZWxzKCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwordm9pZCBJbnNwZWN0
b3JDbGllbnRIYWlrdTo6c2hvd1dpbmRvdygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBJbnNwZWN0b3JDbGllbnRIYWlrdTo6Y2xvc2VXaW5kb3coKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ2xpZW50SGFpa3U6OmF0dGFjaFdpbmRv
dygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBJbnNwZWN0b3JDbGllbnRI
YWlrdTo6ZGV0YWNoV2luZG93KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IEluc3BlY3RvckNsaWVudEhhaWt1OjpzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCBo
ZWlnaHQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBJbnNwZWN0b3JDbGll
bnRIYWlrdTo6aGlnaGxpZ2h0KE5vZGUqIG5vZGUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBJbnNwZWN0b3JDbGllbnRIYWlrdTo6aGlkZUhpZ2hsaWdodCgpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBJbnNwZWN0b3JDbGllbnRIYWlrdTo6aW5zcGVj
dGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgSW5zcGVjdG9yQ2xpZW50SGFpa3U6OnBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJp
bmcmIGtleSwgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyYpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBJbnNwZWN0b3JDbGllbnRIYWlrdTo6c3RvcmVTZXR0aW5nKGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nJikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEluc3BlY3RvckNsaWVudEhhaWt1Ojpy
ZW1vdmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1
L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEhhaWt1LmggYi9XZWJLaXQvaGFpa3UvV2Vi
Q29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50SGFpa3UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4xZGU5OTZkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2hhaWt1L1dl
YkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEhhaWt1LmgKQEAgLTAsMCArMSw3MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA3IFJ5YW4gTGVhdmVuZ29vZCA8bGVhdmVuZ29vZEBnbWFpbC5j
b20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxl
IENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBJbnNwZWN0b3JDbGllbnRIYWlrdV9oCisjZGVmaW5lIEluc3BlY3RvckNs
aWVudEhhaWt1X2gKKworI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgorCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBOb2RlOworICAgIGNsYXNzIFBhZ2U7CisgICAgY2xhc3Mg
U3RyaW5nOworCisgICAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50SGFpa3UgOiBwdWJsaWMgSW5zcGVj
dG9yQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JE
ZXN0cm95ZWQoKTsKKworICAgICAgICB2aXJ0dWFsIFBhZ2UqIGNyZWF0ZVBhZ2UoKTsKKworICAg
ICAgICB2aXJ0dWFsIFN0cmluZyBsb2NhbGl6ZWRTdHJpbmdzVVJMKCk7CisKKyAgICAgICAgdmly
dHVhbCBTdHJpbmcgaGlkZGVuUGFuZWxzKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHNob3dX
aW5kb3coKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNsb3NlV2luZG93KCk7CisKKyAgICAgICAg
dmlydHVhbCB2b2lkIGF0dGFjaFdpbmRvdygpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNo
V2luZG93KCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldEF0dGFjaGVkV2luZG93SGVpZ2h0
KHVuc2lnbmVkIGhlaWdodCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodChOb2Rl
Kik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCk7CisKKyAgICAgICAgdmly
dHVhbCB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJiBuZXdVUkwpOworCisg
ICAgICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIElu
c3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmcmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN0b3Jl
U2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0
dGluZyYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU2V0dGluZyhjb25zdCBTdHJpbmcm
IGtleSk7CisgICAgfTsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEluc3Bl
Y3RvckNsaWVudEhhaWt1X2gKKwotLSAKMS42LjMuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32858</attachid>
            <date>2009-07-16 04:44:49 -0700</date>
            <delta_ts>2009-07-19 01:21:47 -0700</delta_ts>
            <desc>Patch to add ChromeClient for Haiku WebCore support.</desc>
            <filename>Added-ChromeClient-for-Haiku-WebCore-support.patch</filename>
            <type>text/plain</type>
            <size>18572</size>
            <attacher name="Maxime Simon">simon.maxime</attacher>
            
              <data encoding="base64">RnJvbSAwMDg3MWQwMGQxZTcxYzUxZTJmOTFmMjU4YzIwNGJjZjBmN2JhOTIzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgU2ltb24gPHNpbW9uLm1heGltZUBnbWFpbC5jb20+
CkRhdGU6IFRodSwgMTYgSnVsIDIwMDkgMTM6NDE6NTYgKzAyMDAKU3ViamVjdDogW1BBVENIXSBB
ZGRlZCBDaHJvbWVDbGllbnQgZm9yIEhhaWt1IFdlYkNvcmUgc3VwcG9ydC4KCi0tLQogV2ViS2l0
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNjUgKysrKwog
V2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcCB8ICAzNTgg
KysrKysrKysrKysrKysrKysrKysrCiBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50SGFpa3UuaCAgIHwgIDE0MyArKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA1NjYgaW5z
ZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJLaXQvaGFp
a3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuY3BwCiBjcmVhdGUgbW9kZSAxMDA2
NDQgV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmgKCmRpZmYg
LS1naXQgYS9XZWJLaXQvQ2hhbmdlTG9nIGIvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjYWJkZjQ2
Li4zNjg5Y2IwIDEwMDY0NAotLS0gYS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw2OCBAQAorMjAwOS0wNy0xNiAgTWF4aW1lIFNpbW9uICA8c2ltb24u
bWF4aW1lQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGRlZCBDaHJvbWVDbGllbnQgZm9yIEhhaWt1IFdlYkNvcmUgc3VwcG9ydC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTUyCisK
KyAgICAgICAgKiBoYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OkNocm9tZUNsaWVudEhh
aWt1KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1Ojp+Q2hyb21lQ2xpZW50
SGFpa3UpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OmNocm9tZURlc3Ry
b3llZCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6c2V0V2luZG93UmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6d2luZG93UmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6cGFnZVJlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnNjYWxlRmFjdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9tZUNsaWVudEhhaWt1Ojpmb2N1cyk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVD
bGllbnRIYWlrdTo6dW5mb2N1cyk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlr
dTo6Y2FuVGFrZUZvY3VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1Ojp0
YWtlRm9jdXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OmNyZWF0ZVdp
bmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6Y3JlYXRlTW9kYWxE
aWFsb2cpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnNob3cpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OmNhblJ1bk1vZGFsKToKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpydW5Nb2RhbCk6CisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWVDbGllbnRIYWlrdTo6c2V0VG9vbGJhcnNWaXNpYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9tZUNsaWVudEhhaWt1Ojp0b29sYmFyc1Zpc2libGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnNldFN0YXR1c2JhclZpc2libGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnN0YXR1c2JhclZpc2libGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnNldFNjcm9sbGJhcnNWaXNpYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpzY3JvbGxiYXJzVmlzaWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6c2V0TWVudWJhclZpc2libGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6Om1lbnViYXJWaXNpYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpzZXRSZXNpemFibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OmFkZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6cnVuQmVmb3JlVW5sb2Fk
Q29uZmlybVBhbmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpjbG9z
ZVdpbmRvd1Nvb24pOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnJ1bkph
dmFTY3JpcHRBbGVydCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6cnVu
SmF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6
OnJ1bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFp
a3U6OnNldFN0YXR1c2JhclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFp
a3U6OnNob3VsZEludGVycnVwdEphdmFTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21l
Q2xpZW50SGFpa3U6OnRhYnNUb0xpbmtzKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dEhhaWt1Ojp3aW5kb3dSZXNpemVyUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGll
bnRIYWlrdTo6cmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6
c2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpzY3JlZW5Ub1dp
bmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6d2luZG93VG9TY3Jl
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnBsYXRmb3JtV2luZG93
KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1Ojpjb250ZW50c1NpemVDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpzY3JvbGxSZWN0SW50
b1ZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OmFkZFRvRGlydHlS
ZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnNjcm9sbEJhY2tp
bmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6dXBkYXRlQmFj
a2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1Ojptb3VzZURp
ZE1vdmVPdmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6
c2V0VG9vbFRpcCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6cHJpbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OmV4Y2VlZGVkRGF0YWJhc2VR
dW90YSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6cmVxdWVzdEdlb2xv
Y2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dEhhaWt1OjpydW5PcGVuUGFuZWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFp
a3U6OnNldEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6Zm9y
bVN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1Ojpj
cmVhdGVIVE1MUGFyc2VyUXVpcmtzKToKKyAgICAgICAgKiBoYWlrdS9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRIYWlrdS5oOiBBZGRlZC4KKwogMjAwOS0wNy0xMCAgQWRhbSBSb2JlbiAgPGFy
b2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgU29ydCBhbGwgb3VyIFhjb2RlIHByb2plY3RzCmRp
ZmYgLS1naXQgYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3Uu
Y3BwIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTZhNzVkCi0tLSAvZGV2L251bGwK
KysrIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcApA
QCAtMCwwICsxLDM1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2luIDx6
YWNrQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgUnlhbiBMZWF2ZW5n
b29kIDxsZWF2ZW5nb29kQGdtYWlsLmNvbT4KKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50SGFpa3UuaCIK
KworI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAi
RnJhbWVMb2FkUmVxdWVzdC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVk
ZSAiSGl0VGVzdFJlc3VsdC5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworI2lu
Y2x1ZGUgPEFsZXJ0Lmg+CisjaW5jbHVkZSA8U3RyaW5nLmg+CisKKworbmFtZXNwYWNlIFdlYkNv
cmUKK3sKKworQ2hyb21lQ2xpZW50SGFpa3U6OkNocm9tZUNsaWVudEhhaWt1KCkKK3sKK30KKwor
Q2hyb21lQ2xpZW50SGFpa3U6On5DaHJvbWVDbGllbnRIYWlrdSgpCit7Cit9CisKK3ZvaWQgQ2hy
b21lQ2xpZW50SGFpa3U6OmNocm9tZURlc3Ryb3llZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6c2V0V2luZG93UmVjdChjb25zdCBGbG9h
dFJlY3QmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK0Zsb2F0UmVjdCBDaHJvbWVD
bGllbnRIYWlrdTo6d2luZG93UmVjdCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gRmxvYXRSZWN0KDAsIDAsIDIwMCwgMjAwKTsKK30KKworRmxvYXRSZWN0IENocm9tZUNs
aWVudEhhaWt1OjpwYWdlUmVjdCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gRmxvYXRSZWN0KDAsIDAsIDIwMCwgMjAwKTsKK30KKworZmxvYXQgQ2hyb21lQ2xpZW50SGFp
a3U6OnNjYWxlRmFjdG9yKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAx
LjA7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OmZvY3VzKCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIENocm9tZUNsaWVudEhhaWt1Ojp1bmZvY3VzKCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIENocm9tZUNsaWVudEhhaWt1OjpjYW5UYWtl
Rm9jdXMoRm9jdXNEaXJlY3Rpb24pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6dGFrZUZvY3VzKEZvY3VzRGly
ZWN0aW9uKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1BhZ2UqIENocm9tZUNsaWVu
dEhhaWt1OjpjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK1BhZ2UqIENocm9tZUNsaWVudEhhaWt1OjpjcmVhdGVNb2RhbERp
YWxvZyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OnNob3co
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgQ2hyb21lQ2xpZW50SGFpa3U6
OmNhblJ1bk1vZGFsKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6cnVuTW9kYWwoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OnNldFRvb2xiYXJzVmlz
aWJsZShib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgQ2hyb21lQ2xp
ZW50SGFpa3U6OnRvb2xiYXJzVmlzaWJsZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OnNldFN0YXR1c2Jh
clZpc2libGUoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIENocm9t
ZUNsaWVudEhhaWt1OjpzdGF0dXNiYXJWaXNpYmxlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6c2V0U2Ny
b2xsYmFyc1Zpc2libGUoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29s
IENocm9tZUNsaWVudEhhaWt1OjpzY3JvbGxiYXJzVmlzaWJsZSgpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6
c2V0TWVudWJhclZpc2libGUoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiti
b29sIENocm9tZUNsaWVudEhhaWt1OjptZW51YmFyVmlzaWJsZSgpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6
OnNldFJlc2l6YWJsZShib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
Q2hyb21lQ2xpZW50SGFpa3U6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCB1bnNpZ25lZCBpbnQgbGluZU51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCkKK3sKKyAgICBwcmludGYo
Ik1FU1NBR0UgJXM6JWkgJXNcbiIsIEJTdHJpbmcoc291cmNlSUQpLlN0cmluZygpLCBsaW5lTnVt
YmVyLCBCU3RyaW5nKG1lc3NhZ2UpLlN0cmluZygpKTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRI
YWlrdTo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlE
KQoreworICAgIHByaW50ZigiTUVTU0FHRSAlczolaSAlc1xuIiwgQlN0cmluZyhzb3VyY2VJRCku
U3RyaW5nKCksIGxpbmVOdW1iZXIsIEJTdHJpbmcobWVzc2FnZSkuU3RyaW5nKCkpOworfQorCit2
b2lkIENocm9tZUNsaWVudEhhaWt1OjphZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2Us
IE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpCit7CisgICAgcHJpbnRmKCJNRVNTQUdFICVz
OiVpICVzXG4iLCBCU3RyaW5nKHNvdXJjZUlEKS5TdHJpbmcoKSwgbGluZU51bWJlciwgQlN0cmlu
ZyhtZXNzYWdlKS5TdHJpbmcoKSk7Cit9CisKK2Jvb2wgQ2hyb21lQ2xpZW50SGFpa3U6OmNhblJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQ2hyb21lQ2xpZW50SGFpa3U6OnJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEZyYW1lKiBmcmFtZSkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDaHJv
bWVDbGllbnRIYWlrdTo6Y2xvc2VXaW5kb3dTb29uKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIENocm9tZUNsaWVudEhhaWt1OjpydW5KYXZhU2NyaXB0QWxlcnQoRnJhbWUq
LCBjb25zdCBTdHJpbmcmIG1zZykKK3sKKyAgICBwcmludGYoIkNocm9tZUNsaWVudEhhaWt1Ojpy
dW5KYXZhU2NyaXB0QWxlcnQoKVxuIik7CisgICAgQkFsZXJ0KiBhbGVydCA9IG5ldyBCQWxlcnQo
IkphdmFTY3JpcHQiLCBCU3RyaW5nKG1zZykuU3RyaW5nKCksICJPSyIpOworICAgIGFsZXJ0LT5H
bygpOworfQorCitib29sIENocm9tZUNsaWVudEhhaWt1OjpydW5KYXZhU2NyaXB0Q29uZmlybShG
cmFtZSosIGNvbnN0IFN0cmluZyYgbXNnKQoreworICAgIHByaW50ZigiQ2hyb21lQ2xpZW50SGFp
a3U6OnJ1bkphdmFTY3JpcHRDb25maXJtKClcbiIpOworICAgIEJBbGVydCogYWxlcnQgPSBuZXcg
QkFsZXJ0KCJKYXZhU2NyaXB0IiwgQlN0cmluZyhtc2cpLlN0cmluZygpLCAiWWVzIiwgIk5vIik7
CisgICAgcmV0dXJuIChhbGVydC0+R28oKSA9PSAwKTsKK30KKworYm9vbCBDaHJvbWVDbGllbnRI
YWlrdTo6cnVuSmF2YVNjcmlwdFByb21wdChGcmFtZSosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
Y29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUsIFN0cmluZyYgcmVzdWx0KQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIENocm9tZUNsaWVudEhh
aWt1OjpzZXRTdGF0dXNiYXJUZXh0KGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKworYm9vbCBDaHJvbWVDbGllbnRIYWlrdTo6c2hvdWxkSW50ZXJydXB0SmF2YVNj
cmlwdCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgQ2hyb21lQ2xpZW50SGFpa3U6OnRhYnNUb0xpbmtzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK0ludFJlY3QgQ2hyb21lQ2xpZW50SGFpa3U6OndpbmRvd1Jlc2l6ZXJS
ZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gSW50UmVjdCgpOworfQorCit2b2lkIENocm9tZUNs
aWVudEhhaWt1OjpyZXBhaW50KGNvbnN0IEludFJlY3QmLCBib29sIGNvbnRlbnRDaGFuZ2VkLCBi
b29sIGltbWVkaWF0ZSwgYm9vbCByZXBhaW50Q29udGVudE9ubHkpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6c2Nyb2xsKGNvbnN0IEludFNp
emUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJl
Y3QmIGNsaXBSZWN0KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK0ludFBvaW50IENo
cm9tZUNsaWVudEhhaWt1OjpzY3JlZW5Ub1dpbmRvdyhjb25zdCBJbnRQb2ludCYpIGNvbnN0Cit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gSW50UG9pbnQoKTsKK30KKworSW50
UmVjdCBDaHJvbWVDbGllbnRIYWlrdTo6d2luZG93VG9TY3JlZW4oY29uc3QgSW50UmVjdCYpIGNv
bnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gSW50UmVjdCgpOworfQor
CitQbGF0Zm9ybVdpZGdldCBDaHJvbWVDbGllbnRIYWlrdTo6cGxhdGZvcm1XaW5kb3coKSBjb25z
dAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFBsYXRmb3JtV2lkZ2V0KCk7
Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OmNvbnRlbnRzU2l6ZUNoYW5nZWQoRnJhbWUq
LCBjb25zdCBJbnRTaXplJikgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIENocm9tZUNsaWVudEhhaWt1OjpzY3JvbGxSZWN0SW50b1ZpZXcoY29uc3QgSW50UmVjdCYs
IGNvbnN0IFNjcm9sbFZpZXcqKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OmFkZFRvRGlydHlSZWdpb24oY29uc3QgSW50UmVjdCYp
Cit7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OnNjcm9sbEJhY2tpbmdTdG9yZShpbnQs
IGludCwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKQoreworfQorCit2b2lkIENocm9t
ZUNsaWVudEhhaWt1Ojp1cGRhdGVCYWNraW5nU3RvcmUoKQoreworfQorCit2b2lkIENocm9tZUNs
aWVudEhhaWt1Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiBo
aXQsIHVuc2lnbmVkIC8qbW9kaWZpZXJGbGFncyovKQoreworICAgIC8vIFNvbWUgZXh0cmEgaW5m
bworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OnNl
dFRvb2xUaXAoY29uc3QgU3RyaW5nJiB0aXApCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6cHJpbnQoRnJhbWUqKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OmV4Y2VlZGVkRGF0YWJhc2VR
dW90YShGcmFtZSosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OnJlcXVlc3RHZW9sb2NhdGlv
blBlcm1pc3Npb25Gb3JGcmFtZShGcmFtZSosIEdlb2xvY2F0aW9uKikKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIENocm9tZUNsaWVudEhhaWt1OjpydW5PcGVuUGFuZWwoRnJh
bWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCitib29sIENocm9tZUNsaWVudEhhaWt1OjpzZXRDdXJzb3IoUGxhdGZvcm1DdXJzb3JIYW5k
bGUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8v
IE5vdGlmaWNhdGlvbiB0aGF0IHRoZSBnaXZlbiBmb3JtIGVsZW1lbnQgaGFzIGNoYW5nZWQuIFRo
aXMgZnVuY3Rpb24KKy8vIHdpbGwgYmUgY2FsbGVkIGZyZXF1ZW50bHksIHNvIGhhbmRsaW5nIHNo
b3VsZCBiZSB2ZXJ5IGZhc3QuCit2b2lkIENocm9tZUNsaWVudEhhaWt1Ojpmb3JtU3RhdGVEaWRD
aGFuZ2UoY29uc3QgTm9kZSopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworUGFzc093
blB0cjxIVE1MUGFyc2VyUXVpcmtzPiBDaHJvbWVDbGllbnRIYWlrdTo6Y3JlYXRlSFRNTFBhcnNl
clF1aXJrcygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9XZWJLaXQvaGFpa3UvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuaCBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRIYWlrdS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjdjZTk2OTQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50SGFpa3UuaApAQCAtMCwwICsxLDE0MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNiBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcg
UnlhbiBMZWF2ZW5nb29kIDxsZWF2ZW5nb29kQGdtYWlsLmNvbT4KKyAqCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ2hyb21lQ2xpZW50SGFpa3VfSAorI2RlZmluZSBD
aHJvbWVDbGllbnRIYWlrdV9ICisKKyNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRl
ICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJSZWZDb3VudGVkLmgiCisKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisgICAgY2xhc3MgRmxvYXRSZWN0OworICAgIGNsYXNzIFBhZ2U7CisgICAgc3Ry
dWN0IEZyYW1lTG9hZFJlcXVlc3Q7CisKKyAgICBjbGFzcyBDaHJvbWVDbGllbnRIYWlrdSA6IHB1
YmxpYyBDaHJvbWVDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgQ2hyb21lQ2xpZW50SGFp
a3UoKTsKKyAgICAgICAgdmlydHVhbCB+Q2hyb21lQ2xpZW50SGFpa3UoKTsKKyAgICAgICAgdm9p
ZCBjaHJvbWVEZXN0cm95ZWQoKTsKKworICAgICAgICB2b2lkIHNldFdpbmRvd1JlY3QoY29uc3Qg
RmxvYXRSZWN0Jik7CisgICAgICAgIEZsb2F0UmVjdCB3aW5kb3dSZWN0KCk7CisKKyAgICAgICAg
RmxvYXRSZWN0IHBhZ2VSZWN0KCk7CisKKyAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IoKTsKKwor
ICAgICAgICB2b2lkIGZvY3VzKCk7CisgICAgICAgIHZvaWQgdW5mb2N1cygpOworCisgICAgICAg
IGJvb2wgY2FuVGFrZUZvY3VzKEZvY3VzRGlyZWN0aW9uKTsKKyAgICAgICAgdm9pZCB0YWtlRm9j
dXMoRm9jdXNEaXJlY3Rpb24pOworCisgICAgICAgIFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSos
IGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYp
OworICAgICAgICBQYWdlKiBjcmVhdGVNb2RhbERpYWxvZyhGcmFtZSosIGNvbnN0IEZyYW1lTG9h
ZFJlcXVlc3QmKTsKKyAgICAgICAgdm9pZCBzaG93KCk7CisKKyAgICAgICAgYm9vbCBjYW5SdW5N
b2RhbCgpOworICAgICAgICB2b2lkIHJ1bk1vZGFsKCk7CisKKyAgICAgICAgdm9pZCBzZXRUb29s
YmFyc1Zpc2libGUoYm9vbCk7CisgICAgICAgIGJvb2wgdG9vbGJhcnNWaXNpYmxlKCk7CisKKyAg
ICAgICAgdm9pZCBzZXRTdGF0dXNiYXJWaXNpYmxlKGJvb2wpOworICAgICAgICBib29sIHN0YXR1
c2JhclZpc2libGUoKTsKKworICAgICAgICB2b2lkIHNldFNjcm9sbGJhcnNWaXNpYmxlKGJvb2wp
OworICAgICAgICBib29sIHNjcm9sbGJhcnNWaXNpYmxlKCk7CisKKyAgICAgICAgdm9pZCBzZXRN
ZW51YmFyVmlzaWJsZShib29sKTsKKyAgICAgICAgYm9vbCBtZW51YmFyVmlzaWJsZSgpOworCisg
ICAgICAgIHZvaWQgc2V0UmVzaXphYmxlKGJvb2wpOworCisgICAgICAgIHZvaWQgYWRkTWVzc2Fn
ZVRvQ29uc29sZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGludCBsaW5lTnVtYmVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBzb3VyY2VJ
RCk7CisgICAgICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNz
YWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlE
KTsKKyAgICAgICAgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3Nh
Z2VUeXBlLCBNZXNzYWdlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBTdHJpbmcmLCB1bnNpZ25lZCBpbnQsIGNvbnN0IFN0cmluZyYpOworCisgICAgICAgIGJv
b2wgY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCk7CisKKyAgICAgICAgYm9vbCBydW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBGcmFtZSogZnJh
bWUpOworCisgICAgICAgIHZvaWQgY2xvc2VXaW5kb3dTb29uKCk7CisKKyAgICAgICAgdm9pZCBy
dW5KYXZhU2NyaXB0QWxlcnQoRnJhbWUqLCBjb25zdCBTdHJpbmcmKTsKKyAgICAgICAgYm9vbCBy
dW5KYXZhU2NyaXB0Q29uZmlybShGcmFtZSosIGNvbnN0IFN0cmluZyYpOworICAgICAgICBib29s
IHJ1bkphdmFTY3JpcHRQcm9tcHQoRnJhbWUqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgZGVmYXVsdFZhbHVlLCBTdHJpbmcmIHJlc3VsdCk7CisgICAgICAgIGJvb2wgc2hv
dWxkSW50ZXJydXB0SmF2YVNjcmlwdCgpOworCisgICAgICAgIHZvaWQgc2V0U3RhdHVzYmFyVGV4
dChjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKKyAgICAgICAgYm9vbCB0YWJzVG9MaW5rcygpIGNv
bnN0OworICAgICAgICBJbnRSZWN0IHdpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3Q7CisKKyAgICAg
ICAgdm9pZCByZXBhaW50KGNvbnN0IEludFJlY3QmLCBib29sIGNvbnRlbnRDaGFuZ2VkLCBib29s
IGltbWVkaWF0ZSA9IGZhbHNlLCBib29sIHJlcGFpbnRDb250ZW50T25seSA9IGZhbHNlKTsKKyAg
ICAgICAgdm9pZCBzY3JvbGwoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJl
Y3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOworICAgICAgICBJbnRQ
b2ludCBzY3JlZW5Ub1dpbmRvdyhjb25zdCBJbnRQb2ludCYpIGNvbnN0OworICAgICAgICBJbnRS
ZWN0IHdpbmRvd1RvU2NyZWVuKGNvbnN0IEludFJlY3QmKSBjb25zdDsKKyAgICAgICAgUGxhdGZv
cm1XaWRnZXQgcGxhdGZvcm1XaW5kb3coKSBjb25zdDsKKyAgICAgICAgdm9pZCBjb250ZW50c1Np
emVDaGFuZ2VkKEZyYW1lKiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0OworICAgICAgICB2b2lkIHNj
cm9sbFJlY3RJbnRvVmlldyhjb25zdCBJbnRSZWN0JiwgY29uc3QgU2Nyb2xsVmlldyopIGNvbnN0
OworCisgICAgICAgIHZvaWQgYWRkVG9EaXJ0eVJlZ2lvbihjb25zdCBJbnRSZWN0Jik7CisgICAg
ICAgIHZvaWQgc2Nyb2xsQmFja2luZ1N0b3JlKGludCwgaW50LCBjb25zdCBJbnRSZWN0JiwgY29u
c3QgSW50UmVjdCYpOworICAgICAgICB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZSgpOworCisgICAg
ICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVzdFJlc3VsdCYsIHVu
c2lnbmVkIG1vZGlmaWVyRmxhZ3MpOworCisgICAgICAgIHZvaWQgc2V0VG9vbFRpcChjb25zdCBT
dHJpbmcmKTsKKworICAgICAgICB2b2lkIHByaW50KEZyYW1lKik7CisKKyAgICAgICAgdm9pZCBl
eGNlZWRlZERhdGFiYXNlUXVvdGEoRnJhbWUqLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSk7
CisKKyAgICAgICAgLy8gVGhpcyBpcyBhbiBhc3luY2hyb25vdXMgY2FsbC4gVGhlIENocm9tZUNs
aWVudCBjYW4gZGlzcGxheSBVSSBhc2tpbmcgdGhlIHVzZXIgZm9yIHBlcm1pc3Npb24KKyAgICAg
ICAgLy8gdG8gdXNlIEdlb2xvY29jYXRpb24uIFRoZSBDaHJvbWVDbGllbnQgbXVzdCBjYWxsIEdl
b2xvY2F0aW9uOjpzZXRTaG91bGRDbGVhckNhY2hlKCkgYXBwcm9wcmlhdGVseS4KKyAgICAgICAg
dm9pZCByZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoRnJhbWUqLCBHZW9sb2Nh
dGlvbiopOworCisgICAgICAgIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxG
aWxlQ2hvb3Nlcj4pOworCisgICAgICAgIGJvb2wgc2V0Q3Vyc29yKFBsYXRmb3JtQ3Vyc29ySGFu
ZGxlKTsKKworICAgICAgICAvLyBOb3RpZmljYXRpb24gdGhhdCB0aGUgZ2l2ZW4gZm9ybSBlbGVt
ZW50IGhhcyBjaGFuZ2VkLiBUaGlzIGZ1bmN0aW9uCisgICAgICAgIC8vIHdpbGwgYmUgY2FsbGVk
IGZyZXF1ZW50bHksIHNvIGhhbmRsaW5nIHNob3VsZCBiZSB2ZXJ5IGZhc3QuCisgICAgICAgIHZv
aWQgZm9ybVN0YXRlRGlkQ2hhbmdlKGNvbnN0IE5vZGUqKTsKKworICAgICAgICBQYXNzT3duUHRy
PEhUTUxQYXJzZXJRdWlya3M+IGNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKTsKKyAgICB9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorCi0tIAoxLjYuMy4yCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32860</attachid>
            <date>2009-07-16 04:58:09 -0700</date>
            <delta_ts>2009-07-28 03:22:33 -0700</delta_ts>
            <desc>Patch to add FrameLoaderClient for Haiku WebCore support.</desc>
            <filename>Added-FrameLoaderClient-for-Haiku-WebCore-support.patch</filename>
            <type>text/plain</type>
            <size>44533</size>
            <attacher name="Maxime Simon">simon.maxime</attacher>
            
              <data encoding="base64">RnJvbSBhYjljMDY1YTJiN2JjZjA4YmIzNzM4MmRiZjdiZWNmYmM0Mjg5OWRjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgU2ltb24gPHNpbW9uLm1heGltZUBnbWFpbC5jb20+
CkRhdGU6IFRodSwgMTYgSnVsIDIwMDkgMTM6NTI6MTQgKzAyMDAKU3ViamVjdDogW1BBVENIXSBB
ZGRlZCBGcmFtZUxvYWRlckNsaWVudCBmb3IgSGFpa3UgV2ViQ29yZSBzdXBwb3J0LgoKLS0tCiBX
ZWJLaXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMjkg
KysrCiAuLi4vV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5jcHAgICAgICB8
ICA4MTMgKysrKysrKysrKysrKysrKysrKysKIC4uLi9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEhhaWt1LmggIHwgIDI0OCArKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMTE5
MCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYktp
dC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcAogY3JlYXRl
IG1vZGUgMTAwNjQ0IFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEhhaWt1LmgKCmRpZmYgLS1naXQgYS9XZWJLaXQvQ2hhbmdlTG9nIGIvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBjYWJkZjQ2Li5kNDZlZjM3IDEwMDY0NAotLS0gYS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzIgQEAKKzIwMDktMDctMTYgIE1heGlt
ZSBTaW1vbiAgPHNpbW9uLm1heGltZUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgRnJhbWVMb2FkZXJDbGllbnQgZm9yIEhh
aWt1IFdlYkNvcmUgc3VwcG9ydC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI2OTUyCisKKyAgICAgICAgKiBoYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEhhaWt1LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudEhhaWt1OjpGcmFtZUxvYWRlckNsaWVudEhhaWt1KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNldEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNldFdlYlZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGV0YWNoRnJhbWVMb2FkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6aGFzV2ViVmlldyk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpoYXNCYWNrRm9yd2FyZExpc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6cmVzZXRCYWNrRm9yd2FyZExpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6cHJvdmlzaW9uYWxJ
dGVtSXNUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6
bWFrZVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
SGFpa3U6OmZvcmNlTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
SGFpa3U6OmZvcmNlTGF5b3V0Rm9yTm9uSFRNTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudEhhaWt1Ojp1cGRhdGVIaXN0b3J5Rm9yQ29tbWl0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnVwZGF0ZUhpc3RvcnlGb3JCYWNrRm9yd2FyZE5h
dmlnYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6dXBk
YXRlSGlzdG9yeUZvclJlbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dEhhaWt1Ojp1cGRhdGVIaXN0b3J5Rm9yU3RhbmRhcmRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnVwZGF0ZUhpc3RvcnlGb3JJbnRlcm5hbExvYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6dXBkYXRlSGlzdG9yeUFm
dGVyQ2xpZW50UmVkaXJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRI
YWlrdTo6c2V0Q29waWVzT25TY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRIYWlrdTo6dG9rZW5Gb3JMb2FkRXJyb3JSZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudEhhaWt1OjpyZXNldEFmdGVyTG9hZEVycm9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRvTm90UmVzZXRBZnRlckxvYWRFcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojp3aWxsQ2xvc2VEb2N1
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkZXRhY2hl
ZEZyb21QYXJlbnQyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6
OmRldGFjaGVkRnJvbVBhcmVudDMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRIYWlrdTo6ZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRIYWlrdTo6ZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0
Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hXaWxsQ2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZFJl
Y2VpdmVUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpk
aXNwYXRjaERpZENvbW1pdExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRIYWlrdTo6ZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkRmlyc3RMYXlv
dXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hE
aWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hTaG93KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50SGFpa3U6OmNhbmNlbFBvbGljeUNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0pOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRMb2FkTWFpblJl
c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnJldmVy
dFRvUHJvdmlzaW9uYWxTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dEhhaWt1Ojpwb3N0UHJvZ3Jlc3NTdGFydGVkTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnBvc3RQcm9ncmVzc0VzdGltYXRlQ2hhbmdlZE5v
dGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpw
b3N0UHJvZ3Jlc3NGaW5pc2hlZE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudEhhaWt1Ojpwcm9ncmVzc1N0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6cHJvZ3Jlc3NDb21wbGV0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6c2V0TWFpbkZyYW1lRG9jdW1lbnRSZWFkeSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojp3aWxsQ2hhbmdlVGl0
bGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlkQ2hhbmdl
VGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZmluaXNo
ZWRMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmNh
blNob3dNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1
OjpyZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudEhhaWt1OjpnZW5lcmF0ZWRNSU1FVHlwZUZvclVSTFNjaGVtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpmcmFtZUxvYWRDb21wbGV0
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6c2F2ZVZpZXdT
dGF0ZVRvSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpy
ZXN0b3JlVmlld1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFp
a3U6OnJlc3RvcmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpwcm92aXNpb25hbExvYWRTdGFydGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNob3VsZFRyZWF0VVJMQXNTYW1l
QXNDdXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmFk
ZEhpc3RvcnlJdGVtRm9yRnJhZ21lbnRTY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRIYWlrdTo6ZGlkRmluaXNoTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudEhhaWt1OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNldFRpdGxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnVzZXJBZ2VudCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZFJlY2VpdmVJY29u
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmZyYW1lTG9hZGVy
RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmNh
bkhhbmRsZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlr
dTo6cGFydENsZWFyZWRJbkJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50SGFpa3U6OnVwZGF0ZUdsb2JhbEhpc3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRIYWlrdTo6dXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6c2hvdWxkR29Ub0hpc3RvcnlJ
dGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNhdmVTY3Jv
bGxQb3NpdGlvbkFuZFZpZXdTdGF0ZVRvSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudEhhaWt1OjpjYW5DYWNoZVBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRIYWlrdTo6c2V0TWFpbkRvY3VtZW50RXJyb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6Y29tbWl0dGVkTG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpjYW5jZWxsZWRFcnJvcik6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpibG9ja2VkRXJyb3IpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6Y2Fubm90U2hvd1VSTEVycm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmludGVycnVwdEZvclBvbGlj
eUNoYW5nZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6
OmNhbm5vdFNob3dNSU1FVHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50SGFpa3U6OmZpbGVEb2VzTm90RXhpc3RFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudEhhaWt1OjpzaG91bGRGYWxsQmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpjcmVhdGVEb2N1bWVudExvYWRlcik6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpkb3dubG9hZCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojphc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFs
UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNw
YXRjaFdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dEhhaWt1OjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNw
YXRjaERpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkUmVjZWl2
ZUNvbnRlbnRMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlr
dTo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVt
b3J5Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlz
cGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZEZh
aWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3Bh
dGNoQ3JlYXRlUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnN0YXJ0RG93bmxvYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6Y3JlYXRlRnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6b2JqZWN0Q29udGVudFR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6Y3JlYXRlUGx1
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnJlZGlyZWN0
RGF0YVRvUGx1Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6
OnBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRIYWlrdTo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpvdmVycmlkZU1lZGlhVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojp3aW5kb3dPYmplY3RDbGVhcmVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRvY3VtZW50RWxlbWVudEF2
YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaWRQ
ZXJmb3JtRmlyc3ROYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50SGFpa3U6OnJlZ2lzdGVyRm9ySWNvbk5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojp0cmFuc2l0aW9uVG9D
b21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRIYWlrdTo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSk6CisgICAgICAgICog
aGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6On5GcmFtZUxvYWRlckNsaWVu
dEhhaWt1KToKKwogMjAwOS0wNy0xMCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgU29ydCBhbGwgb3VyIFhjb2RlIHByb2plY3RzCmRpZmYgLS1naXQgYS9XZWJLaXQv
aGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5jcHAgYi9XZWJLaXQv
aGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjczZjM4OAotLS0gL2Rldi9udWxsCisrKyBiL1dl
YktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcApAQCAt
MCwwICsxLDgxMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBEb24gR2lic29uIDxkZ2li
c29uNzdAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA2IFphY2sgUnVzaW4gPHphY2tA
a2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBUcm9sbHRlY2ggQVNBCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDcgUnlhbiBMZWF2ZW5nb29kIDxsZWF2ZW5nb29kQGdtYWlsLmNv
bT4KKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudEhhaWt1LmgiCisKKyNpbmNsdWRlICJEb2N1
bWVudExvYWRlci5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiRnJhbWVU
cmVlLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNs
dWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKKworI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiV2ViVmlldy5oIgorCisjaW5jbHVk
ZSA8QXBwbGljYXRpb24uaD4KKyNpbmNsdWRlIDxNZXNzYWdlLmg+CisjaW5jbHVkZSA8U3RyaW5n
Lmg+CisKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpG
cmFtZUxvYWRlckNsaWVudEhhaWt1KCkKKyAgICA6IG1fZnJhbWUoMCkKK3sKK30KKwordm9pZCBG
cmFtZUxvYWRlckNsaWVudEhhaWt1OjpzZXRGcmFtZShGcmFtZSogZnJhbWUpCit7CisgICAgbV9m
cmFtZSA9IGZyYW1lOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNldFdlYlZp
ZXcoV2ViVmlldyogd2VidmlldykKK3sKKyAgICBtX3dlYlZpZXcgPSB3ZWJ2aWV3OworfQorCit2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRldGFjaEZyYW1lTG9hZGVyKCkKK3sKKyAgICBt
X2ZyYW1lID0gMDsKK30KKworYm9vbCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpoYXNXZWJWaWV3
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJWaWV3ICE9IE5VTEw7Cit9CisKK2Jvb2wgRnJh
bWVMb2FkZXJDbGllbnRIYWlrdTo6aGFzQmFja0ZvcndhcmRMaXN0KCkgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50SGFpa3U6OnJlc2V0QmFja0ZvcndhcmRMaXN0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCitib29sIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnByb3Zpc2lvbmFsSXRlbUlz
VGFyZ2V0KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjptYWtlUmVwcmVzZW50YXRpb24o
RG9jdW1lbnRMb2FkZXIqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJh
bWVMb2FkZXJDbGllbnRIYWlrdTo6Zm9yY2VMYXlvdXQoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6Zm9yY2VMYXlvdXRGb3JOb25I
VE1MKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50SGFpa3U6OnVwZGF0ZUhpc3RvcnlGb3JDb21taXQoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6dXBkYXRlSGlzdG9yeUZvckJh
Y2tGb3J3YXJkTmF2aWdhdGlvbigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojp1cGRhdGVIaXN0b3J5Rm9yUmVsb2FkKCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnVw
ZGF0ZUhpc3RvcnlGb3JTdGFuZGFyZExvYWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6dXBkYXRlSGlzdG9yeUZvckludGVybmFs
TG9hZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNs
aWVudEhhaWt1Ojp1cGRhdGVIaXN0b3J5QWZ0ZXJDbGllbnRSZWRpcmVjdCgpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpzZXRDb3Bp
ZXNPblNjcm9sbCgpCit7CisgICAgLy8gYXBwYXJlbnRseSBtYWMgc3BlY2lmaWMKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCitMb2FkRXJyb3JSZXNldFRva2VuKiBGcmFtZUxvYWRlckNsaWVu
dEhhaWt1Ojp0b2tlbkZvckxvYWRFcnJvclJlc2V0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiAwOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnJlc2V0
QWZ0ZXJMb2FkRXJyb3IoTG9hZEVycm9yUmVzZXRUb2tlbiopCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpkb05vdFJlc2V0QWZ0ZXJM
b2FkRXJyb3IoTG9hZEVycm9yUmVzZXRUb2tlbiopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojp3aWxsQ2xvc2VEb2N1bWVudCgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1
OjpkZXRhY2hlZEZyb21QYXJlbnQyKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRldGFjaGVkRnJvbVBhcmVudDMoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlz
cGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRS
ZWRpcmVjdCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRl
ckNsaWVudEhhaWt1OjpkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgS1VS
TCYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkb3VibGUgaW50ZXJ2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZmlyZURhdGUpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpk
aXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaFdpbGxDbG9z
ZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVu
dEhhaWt1OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkKK3sKKyAgICBpZiAobV93
ZWJWaWV3KSB7CisgICAgICAgIEJNZXNzYWdlIG1lc3NhZ2UoUFJPVklTSU9OQUxfTE9BRCk7Cisg
ICAgICAgIG1lc3NhZ2UuQWRkU3RyaW5nKCJ1cmwiLCBtX2ZyYW1lLT5sb2FkZXIoKS0+cHJvdmlz
aW9uYWxEb2N1bWVudExvYWRlcigpLT5yZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkpOworICAgICAg
ICBiZV9hcHAtPlBvc3RNZXNzYWdlKCZtZXNzYWdlKTsKKyAgICB9Cit9CisKK3ZvaWQgRnJhbWVM
b2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0
aXRsZSkKK3sKKyAgICBpZiAobV93ZWJWaWV3KSB7CisgICAgICAgIG1fd2ViVmlldy0+U2V0UGFn
ZVRpdGxlKHRpdGxlKTsKKworICAgICAgICBCTWVzc2FnZSBtZXNzYWdlKFRJVExFX0NIQU5HRUQp
OworICAgICAgICBtZXNzYWdlLkFkZFN0cmluZygidGl0bGUiLCB0aXRsZSk7CisgICAgICAgIGJl
X2FwcC0+UG9zdE1lc3NhZ2UoJm1lc3NhZ2UpOworICAgIH0KK30KKwordm9pZCBGcmFtZUxvYWRl
ckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQoreworICAgIGlmIChtX3dlYlZp
ZXcpIHsKKyAgICAgICAgQk1lc3NhZ2UgbWVzc2FnZShVUkxfQ0hBTkdFRCk7CisgICAgICAgIG1l
c3NhZ2UuQWRkU3RyaW5nKCJ1cmwiLCBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIo
KS0+cmVxdWVzdCgpLnVybCgpLnN0cmluZygpKTsKKyAgICAgICAgYmVfYXBwLT5Qb3N0TWVzc2Fn
ZSgmbWVzc2FnZSk7CisgICAgfQorfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRp
c3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCkKK3sKKyAgICBpZiAobV93ZWJWaWV3KSB7Cisg
ICAgICAgIEJNZXNzYWdlIG1lc3NhZ2UoTE9BRF9ET0NfQ09NUExFVEVEKTsKKyAgICAgICAgbWVz
c2FnZS5BZGRTdHJpbmcoInVybCIsIG1fZnJhbWUtPmxvYWRlcigpLT51cmwoKS5zdHJpbmcoKSk7
CisgICAgICAgIGJlX2FwcC0+UG9zdE1lc3NhZ2UoJm1lc3NhZ2UpOworICAgIH0KK30KKwordm9p
ZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZEZpbmlzaExvYWQoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlz
cGF0Y2hEaWRGaXJzdExheW91dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRl
ckNsaWVudEhhaWt1OjpkaXNwYXRjaFNob3coKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6Y2FuY2VsUG9saWN5Q2hlY2soKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6
ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQ
dHI8Rm9ybVN0YXRlPikKK3sKKyAgICAvLyBGSVhNRTogU2VuZCBhbiBldmVudCB0byBhbGxvdyBm
b3IgYWxlcnRzIGFuZCBjYW5jZWxsYXRpb24KKyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJl
dHVybjsKKyAgICAobV9mcmFtZS0+bG9hZGVyKCktPipmdW5jdGlvbikoUG9saWN5VXNlKTsKK30K
Kwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZExvYWRNYWluUmVzb3Vy
Y2UoRG9jdW1lbnRMb2FkZXIqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6cmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKERvY3VtZW50
TG9hZGVyKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50SGFpa3U6OnBvc3RQcm9ncmVzc1N0YXJ0ZWROb3RpZmljYXRpb24oKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6cG9zdFBy
b2dyZXNzRXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0aW9uKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnBvc3RQcm9ncmVzc0Zpbmlz
aGVkTm90aWZpY2F0aW9uKCkKK3sKKyAgICBpZiAobV93ZWJWaWV3KSB7CisgICAgICAgIEJNZXNz
YWdlIG1lc3NhZ2UoTE9BRF9GSU5JU0hFRCk7CisgICAgICAgIG1lc3NhZ2UuQWRkU3RyaW5nKCJ1
cmwiLCBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkuc3RyaW5nKCkpOworICAgICAgICBiZV9hcHAt
PlBvc3RNZXNzYWdlKCZtZXNzYWdlKTsKKyAgICB9Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGll
bnRIYWlrdTo6cHJvZ3Jlc3NTdGFydGVkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6cHJvZ3Jlc3NDb21wbGV0ZWQoKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1
OjpzZXRNYWluRnJhbWVEb2N1bWVudFJlYWR5KGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICAvLyB0aGlzIGlzIG9ubHkgaW50ZXJlc3Rpbmcgb25jZSB3ZSBwcm92aWRlIGFuIGV4
dGVybmFsIEFQSSBmb3IgdGhlIERPTQorfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6
OndpbGxDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaWRDaGFuZ2VUaXRsZShEb2N1
bWVudExvYWRlciAqZG9jTG9hZGVyKQoreworICAgIHNldFRpdGxlKGRvY0xvYWRlci0+dGl0bGUo
KSwgZG9jTG9hZGVyLT51cmwoKSk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6
ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCitib29sIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmNhblNob3dNSU1FVHlwZShjb25z
dCBTdHJpbmcmIE1JTUVUeXBlKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6cmVwcmVzZW50
YXRpb25FeGlzdHNGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJiBVUkxTY2hlbWUpIGNvbnN0Cit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cmluZyBG
cmFtZUxvYWRlckNsaWVudEhhaWt1OjpnZW5lcmF0ZWRNSU1FVHlwZUZvclVSTFNjaGVtZShjb25z
dCBTdHJpbmcmIFVSTFNjaGVtZSkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBTdHJpbmcoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpmcmFt
ZUxvYWRDb21wbGV0ZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJh
bWVMb2FkZXJDbGllbnRIYWlrdTo6c2F2ZVZpZXdTdGF0ZVRvSXRlbShIaXN0b3J5SXRlbSopCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1
OjpyZXN0b3JlVmlld1N0YXRlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnJlc3RvcmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0
ZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVu
dEhhaWt1Ojpwcm92aXNpb25hbExvYWRTdGFydGVkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCitib29sIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNob3VsZFRyZWF0VVJMQXNTYW1l
QXNDdXJyZW50KGNvbnN0IEtVUkwmKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmFkZEhp
c3RvcnlJdGVtRm9yRnJhZ21lbnRTY3JvbGwoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlkRmluaXNoTG9hZCgpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpwcmVw
YXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYg
dGl0bGUsIGNvbnN0IEtVUkwmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1N0cmlu
ZyBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojp1c2VyQWdlbnQoY29uc3QgS1VSTCYpCit7CisgICAg
cmV0dXJuIFN0cmluZygiTW96aWxsYS81LjAgKGNvbXBhdGlibGU7IFU7IEluZmlOZXQgMC4xOyBI
YWlrdSkgQXBwbGVXZWJLaXQvNDIwKyAoS0hUTUwsIGxpa2UgR2Vja28pIik7Cit9CisKK3ZvaWQg
RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpmcmFt
ZUxvYWRlckRlc3Ryb3llZCgpCit7CisgICAgbV9mcmFtZSA9IDA7CisgICAgZGVsZXRlIHRoaXM7
Cit9CisKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6Y2FuSGFuZGxlUmVxdWVzdChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6
cGFydENsZWFyZWRJbkJlZ2luKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnVwZGF0ZUdsb2JhbEhpc3RvcnkoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6dXBkYXRl
R2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6c2hvdWxkR29Ub0hpc3RvcnlJdGVtKFdl
YkNvcmU6Okhpc3RvcnlJdGVtKikgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNhdmVTY3Jv
bGxQb3NpdGlvbkFuZFZpZXdTdGF0ZVRvSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpj
YW5DYWNoZVBhZ2UoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBGcmFt
ZUxvYWRlckNsaWVudEhhaWt1OjpzZXRNYWluRG9jdW1lbnRFcnJvcihXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6Y29tbWl0dGVkTG9h
ZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQg
bGVuZ3RoKQoreworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIEZyYW1l
TG9hZGVyKiBmcmFtZUxvYWRlciA9IGxvYWRlci0+ZnJhbWVMb2FkZXIoKTsKKyAgICBmcmFtZUxv
YWRlci0+c2V0RW5jb2RpbmcobV9yZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCksIGZhbHNlKTsK
KyAgICBmcmFtZUxvYWRlci0+YWRkRGF0YShkYXRhLCBsZW5ndGgpOworfQorCitXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmNhbmNlbGxlZEVycm9yKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0cmluZygpLCBXZWJLaXRFcnJvckNhbm5v
dFNob3dVUkwsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIFN0cmluZygpKTsKK30KKworV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpibG9ja2VkRXJyb3IoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nKCksIFdlYktpdEVycm9yQ2Fubm90U2hvd1VS
TCwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgU3RyaW5nKCkpOworfQorCitXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmNhbm5vdFNob3dVUkxFcnJvcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIFJlc291
cmNlRXJyb3IoU3RyaW5nKCksIFdlYktpdEVycm9yQ2Fubm90U2hvd1VSTCwgcmVxdWVzdC51cmwo
KS5zdHJpbmcoKSwgU3RyaW5nKCkpOworfQorCitXZWJDb3JlOjpSZXNvdXJjZUVycm9yIEZyYW1l
TG9hZGVyQ2xpZW50SGFpa3U6OmludGVycnVwdEZvclBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0cmluZygpLCBXZWJLaXRFcnJvckZyYW1lTG9h
ZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIFN0cmlu
ZygpKTsKK30KKworV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVudEhhaWt1
OjpjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBSZXNvdXJj
ZUVycm9yKFN0cmluZygpLCBXZWJLaXRFcnJvckNhbm5vdFNob3dNSU1FVHlwZSwgcmVzcG9uc2Uu
dXJsKCkuc3RyaW5nKCksIFN0cmluZygpKTsKK30KKworV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBG
cmFtZUxvYWRlckNsaWVudEhhaWt1OjpmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoKSwgV2ViS2l0RXJyb3JDYW5ub3RTaG93
VVJMLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgU3RyaW5nKCkpOworfQorCitib29sIEZyYW1l
TG9hZGVyQ2xpZW50SGFpa3U6OnNob3VsZEZhbGxCYWNrKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImIGVycm9yKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitXVEY6OlBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IEZyYW1lTG9hZGVyQ2xpZW50
SGFpa3U6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVE
YXRhKQoreworICAgIHJldHVybiBEb2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1YnN0
aXR1dGVEYXRhKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpkb3dubG9hZChS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVM
b2FkZXJDbGllbnRIYWlrdTo6YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsgICAKK30KKwordm9pZCBGcmFtZUxv
YWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExvYWRlcios
IHVuc2lnbmVkIGxvbmcsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBGcmFt
ZUxvYWRlckNsaWVudEhhaWt1OjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShEb2N1bWVudExv
YWRlciosIHVuc2lnbmVkIGxvbmcpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2FkZXIqLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBsb25nLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpk
aXNwYXRjaERpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVu
dEhhaWt1OjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciogbG9hZGVy
LCB1bnNpZ25lZCBsb25nIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fcmVzcG9uc2UgPSByZXNwb25zZTsKKyAgICBt
X2ZpcnN0RGF0YSA9IHRydWU7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlz
cGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChEb2N1bWVudExvYWRlciogbG9hZGVyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxvbmcgaWQsIGludCBsZW5ndGgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZEZpbmlzaExvYWRp
bmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRGYWlsTG9h
ZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlRXJy
b3ImKQoreworICAgIGlmIChtX2ZpcnN0RGF0YSkgeworICAgICAgICBGcmFtZUxvYWRlciAqZnJh
bWVMb2FkZXIgPSBsb2FkZXItPmZyYW1lTG9hZGVyKCk7CisgICAgICAgIGZyYW1lTG9hZGVyLT5z
ZXRFbmNvZGluZyhtX3Jlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSwgZmFsc2UpOworICAgICAg
ICBtX2ZpcnN0RGF0YSA9IGZhbHNlOworICAgIH0KK30KKworYm9vbCBGcmFtZUxvYWRlckNsaWVu
dEhhaWt1OjpkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExv
YWRlciosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBpbnQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0
Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIGNvbnN0IFNj
cmlwdFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxv
YWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVz
b3VyY2VFcnJvciYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxv
YWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3Im
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK0ZyYW1lKiBGcmFtZUxvYWRlckNsaWVu
dEhhaWt1OjpkaXNwYXRjaENyZWF0ZVBhZ2UoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUoRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBTdHJpbmcmIG1pbWV0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKK3sKKyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgKG1fZnJhbWUtPmxvYWRlcigpLT4qZnVuY3Rpb24pKFBvbGlj
eVVzZSk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBj
b25zdCBTdHJpbmcmIHRhcmdldE5hbWUpCit7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAobV93ZWJWaWV3KSB7CisgICAgICAgIEJNZXNzYWdlIG1lc3NhZ2Uo
TkVXX1dJTkRPV19SRVFVRVNURUQpOworICAgICAgICBtZXNzYWdlLkFkZFN0cmluZygidXJsIiwg
cmVxdWVzdC51cmwoKS5zdHJpbmcoKSk7CisgICAgICAgIGlmIChiZV9hcHAtPlBvc3RNZXNzYWdl
KCZtZXNzYWdlKSkgeworICAgICAgICAgICAgKG1fZnJhbWUtPmxvYWRlcigpLT4qZnVuY3Rpb24p
KFBvbGljeUlnbm9yZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisK
KyAgICAobV9mcmFtZS0+bG9hZGVyKCktPipmdW5jdGlvbikoUG9saWN5VXNlKTsKK30KKwordm9p
ZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPikKK3sKKyAg
ICBpZiAoIW1fZnJhbWUgfHwgIWZ1bmN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
bV93ZWJWaWV3KSB7CisgICAgICAgIEJNZXNzYWdlIG1lc3NhZ2UoTkFWSUdBVElPTl9SRVFVRVNU
RUQpOworICAgICAgICBtZXNzYWdlLkFkZFN0cmluZygidXJsIiwgcmVxdWVzdC51cmwoKS5zdHJp
bmcoKSk7CisgICAgICAgIGJlX2FwcC0+UG9zdE1lc3NhZ2UoJm1lc3NhZ2UpOworCisgICAgICAg
IChtX2ZyYW1lLT5sb2FkZXIoKS0+KmZ1bmN0aW9uKShQb2xpY3lVc2UpOworICAgIH0KK30KKwor
dm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9s
aWN5KGNvbnN0IFJlc291cmNlRXJyb3ImKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6c3RhcnREb3dubG9hZChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1Bhc3NSZWZQdHI8RnJh
bWU+IEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXJnaW5XaWR0aCwg
aW50IG1hcmdpbkhlaWdodCkKK3sKKwkvLyBGSVhNRToKKyAgICAvLyB0aGlyZDogICB3ZSBzaG91
bGQgYXBwbHkgdGhlIHJpZ2h0IHByb3BlcnR5IHRvIHRoZSBmcmFtZVZpZXcuIChzY3JvbGxiYXIs
bWFyZ2lucykKKyAgICAvLyBlcnJvcjogICB3aGVuIGNvbXBpbGluZyB1bmRlciBnY2M0LCBlcnJv
cjogY2Fubm90IGFsbG9jYXRlIGFuIG9iamVjdCBvZiBhYnN0cmFjdCB0eXBlCisgICAgCisgICAg
UmVmUHRyPEZyYW1lPiBjaGlsZEZyYW1lID0gRnJhbWU6OmNyZWF0ZShtX2ZyYW1lLT5wYWdlKCks
IG93bmVyRWxlbWVudCwgdGhpcyk7CisgICAgc2V0RnJhbWUoY2hpbGRGcmFtZS5nZXQoKSk7Cisg
ICAgCisgICAgUmVmUHRyPEZyYW1lVmlldz4gZnJhbWVWaWV3ID0gRnJhbWVWaWV3OjpjcmVhdGUo
Y2hpbGRGcmFtZS5nZXQoKSk7CisgICAgCisgICAgZnJhbWVWaWV3LT5zZXRBbGxvd3NTY3JvbGxp
bmcoYWxsb3dzU2Nyb2xsaW5nKTsKKyAgICBmcmFtZVZpZXctPmRlcmVmKCk7CisgICAgY2hpbGRG
cmFtZS0+c2V0VmlldyhmcmFtZVZpZXcuZ2V0KCkpOworICAgIGNoaWxkRnJhbWUtPmluaXQoKTsK
KyAgICAKKyAgICBjaGlsZEZyYW1lLT50cmVlKCktPnNldE5hbWUobmFtZSk7CisgICAgbV9mcmFt
ZS0+dHJlZSgpLT5hcHBlbmRDaGlsZChjaGlsZEZyYW1lKTsKKyAgICAKKyAgICBjaGlsZEZyYW1l
LT5sb2FkZXIoKS0+bG9hZFVSTEludG9DaGlsZEZyYW1lKHVybCwgcmVmZXJyZXIsIGNoaWxkRnJh
bWUuZ2V0KCkpOworICAgIAorICAgIC8vIFRoZSBmcmFtZSdzIG9ubG9hZCBoYW5kbGVyIG1heSBo
YXZlIHJlbW92ZWQgaXQgZnJvbSB0aGUgZG9jdW1lbnQuCisgICAgaWYgKCFjaGlsZEZyYW1lLT50
cmVlKCktPnBhcmVudCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICByZXR1cm4gY2hp
bGRGcmFtZS5yZWxlYXNlKCk7Cit9CisKK09iamVjdENvbnRlbnRUeXBlIEZyYW1lTG9hZGVyQ2xp
ZW50SGFpa3U6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBPYmplY3RD
b250ZW50VHlwZSgpOworfQorCitQYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnRI
YWlrdTo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgS1VSTCYs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbG9hZE1hbnVhbGx5
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgRnJh
bWVMb2FkZXJDbGllbnRIYWlrdTo6cmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5X
aWRnZXQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm47Cit9CisKK1Jlc291
cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJv
cihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0cmluZygpLCBXZWJLaXRFcnJvckNhbm5v
dExvYWRQbHVnSW4sIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBTdHJpbmcoKSk7Cit9CisKK1Bh
c3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpjcmVhdGVKYXZhQXBwbGV0
V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgS1VSTCYgYmFz
ZVVSTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFyYW1WYWx1ZXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsK
K30KKworU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6Om92ZXJyaWRlTWVkaWFUeXBlKCkg
Y29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30K
Kwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojp3aW5kb3dPYmplY3RDbGVhcmVkKCkKK3sK
KyAgICBpZiAobV93ZWJWaWV3KSB7CisgICAgICAgIEJNZXNzYWdlIG1lc3NhZ2UoSkFWQVNDUklQ
VF9XSU5ET1dfT0JKRUNUX0NMRUFSRUQpOworICAgICAgICBiZV9hcHAtPlBvc3RNZXNzYWdlKCZt
ZXNzYWdlKTsKKyAgICB9Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZG9jdW1l
bnRFbGVtZW50QXZhaWxhYmxlKCkKK3sKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1
OjpkaWRQZXJmb3JtRmlyc3ROYXZpZ2F0aW9uKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnJlZ2lzdGVyRm9ySWNvbk5v
dGlmaWNhdGlvbihib29sIGxpc3RlbikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1l
KENhY2hlZEZyYW1lKikKK3sgCisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFt
ZUxvYWRlckNsaWVudEhhaWt1Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUo
Q2FjaGVkRnJhbWUqKQoreyAKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50SGFpa3U6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQoreyAK
KyAgICBBU1NFUlQobV9mcmFtZSk7CisgICAgQVNTRVJUKG1fd2ViVmlldyk7CisgICAgCisgICAg
UGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBBU1NFUlQocGFnZSk7CisgICAgCisg
ICAgYm9vbCBpc01haW5GcmFtZSA9IG1fZnJhbWUgPT0gcGFnZS0+bWFpbkZyYW1lKCk7CisgICAg
CisgICAgbV9mcmFtZS0+c2V0VmlldygwKTsKKyAgICAKKyAgICBSZWZQdHI8RnJhbWVWaWV3PiBm
cmFtZVZpZXc7CisgICAgaWYgKGlzTWFpbkZyYW1lKQorICAgICAgICBmcmFtZVZpZXcgPSBGcmFt
ZVZpZXc6OmNyZWF0ZShtX2ZyYW1lLCBJbnRSZWN0KG1fd2ViVmlldy0+Qm91bmRzKCkpLnNpemUo
KSk7CisgICAgZWxzZQorICAgICAgICBmcmFtZVZpZXcgPSBGcmFtZVZpZXc6OmNyZWF0ZShtX2Zy
YW1lKTsKKyAgICAKKyAgICBBU1NFUlQoZnJhbWVWaWV3KTsKKyAgICBtX2ZyYW1lLT5zZXRWaWV3
KGZyYW1lVmlldyk7CisgICAgCisgICAgZnJhbWVWaWV3LT5zZXRQbGF0Zm9ybVdpZGdldChtX3dl
YlZpZXcpOworICAgIAorICAgIGlmIChIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyID0gbV9m
cmFtZS0+b3duZXJFbGVtZW50KCkpCisgICAgICAgIG1fZnJhbWUtPnZpZXcoKS0+c2V0U2Nyb2xs
YmFyTW9kZXMob3duZXItPnNjcm9sbGluZ01vZGUoKSwgb3duZXItPnNjcm9sbGluZ01vZGUoKSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaCBiL1dlYktpdC9oYWlrdS9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNzZlNTZhZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9oYWlr
dS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmgKQEAgLTAsMCArMSwyNDgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgor
ICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3IFJ5YW4gTGVhdmVuZ29vZCA8bGVhdmVuZ29v
ZEBnbWFpbC5jb20+CisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IEZyYW1lTG9hZGVyQ2xpZW50SGFpa3VfSAorI2RlZmluZSBGcmFtZUxvYWRlckNsaWVudEhhaWt1
X0gKKworI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXIuaCIKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgor
CitjbGFzcyBXZWJWaWV3OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U7CisgICAgY2xhc3MgRG9jdW1lbnRMb2FkZXI7CisgICAgY2xhc3Mg
RWxlbWVudDsKKyAgICBjbGFzcyBGb3JtU3RhdGU7CisgICAgY2xhc3MgTmF2aWdhdGlvbkFjdGlv
bjsKKyAgICBjbGFzcyBTdHJpbmc7CisgICAgY2xhc3MgUmVzb3VyY2VMb2FkZXI7CisgICAgCisg
ICAgc3RydWN0IExvYWRFcnJvclJlc2V0VG9rZW47CisKKyAgICBjbGFzcyBGcmFtZUxvYWRlckNs
aWVudEhhaWt1IDogcHVibGljIEZyYW1lTG9hZGVyQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3UoKTsKKyAgICAgICAgfkZyYW1lTG9hZGVyQ2xpZW50
SGFpa3UoKSB7IH0KKyAgICAgICAgdm9pZCBzZXRGcmFtZShGcmFtZSAqZnJhbWUpOworICAgICAg
ICB2b2lkIHNldFdlYlZpZXcoV2ViVmlldyAqd2Vidmlldyk7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBkZXRhY2hGcmFtZUxvYWRlcigpOworCisgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNXZWJWaWV3
KCkgY29uc3Q7CisKKyAgICAgICAgdmlydHVhbCBib29sIGhhc0JhY2tGb3J3YXJkTGlzdCgpIGNv
bnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRCYWNrRm9yd2FyZExpc3QoKTsKKworICAg
ICAgICB2aXJ0dWFsIGJvb2wgcHJvdmlzaW9uYWxJdGVtSXNUYXJnZXQoKSBjb25zdDsKKworICAg
ICAgICB2aXJ0dWFsIHZvaWQgbWFrZVJlcHJlc2VudGF0aW9uKERvY3VtZW50TG9hZGVyKik7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBmb3JjZUxheW91dCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQg
Zm9yY2VMYXlvdXRGb3JOb25IVE1MKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUhp
c3RvcnlGb3JDb21taXQoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlSGlzdG9yeUZv
ckJhY2tGb3J3YXJkTmF2aWdhdGlvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlSGlz
dG9yeUZvclJlbG9hZCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlSGlzdG9yeUZvclN0
YW5kYXJkTG9hZCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlSGlzdG9yeUZvckludGVy
bmFsTG9hZCgpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVIaXN0b3J5QWZ0ZXJDbGll
bnRSZWRpcmVjdCgpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRDb3BpZXNPblNjcm9sbCgp
OworCisgICAgICAgIHZpcnR1YWwgTG9hZEVycm9yUmVzZXRUb2tlbiogdG9rZW5Gb3JMb2FkRXJy
b3JSZXNldCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBZnRlckxvYWRFcnJvcihMb2Fk
RXJyb3JSZXNldFRva2VuKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkb05vdFJlc2V0QWZ0ZXJM
b2FkRXJyb3IoTG9hZEVycm9yUmVzZXRUb2tlbiopOworCisgICAgICAgIHZpcnR1YWwgdm9pZCB3
aWxsQ2xvc2VEb2N1bWVudCgpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hlZEZyb21Q
YXJlbnQyKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hlZEZyb21QYXJlbnQzKCk7CisK
KyAgICAgICAgdmlydHVhbCB2b2lkIGZyYW1lTG9hZGVyRGVzdHJveWVkKCk7CisKKyAgICAgICAg
dmlydHVhbCBib29sIGNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29u
c3Q7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRz
KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dEZvclByb3Zpc2lvbmFsTG9hZCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
YW5jZWxDbGllbnRSZWRpcmVjdCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxs
UGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IEtVUkwmLCBkb3VibGUgaW50ZXJ2YWwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91Ymxl
IGZpcmVEYXRlKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRp
b25XaXRoaW5QYWdlKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRs
ZSk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCk7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWQoKTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkRmlyc3RMYXlvdXQoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCk7CisKKyAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoU2hvdygpOworICAgICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUG9saWN5Q2hl
Y2soKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShGcmFt
ZVBvbGljeUZ1bmN0aW9uLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pOworCisgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZExvYWRNYWluUmVzb3VyY2UoRG9jdW1lbnRMb2FkZXIqKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHJldmVydFRvUHJvdmlzaW9uYWxTdGF0ZShEb2N1bWVudExvYWRl
ciopOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0UHJvZ3Jlc3NTdGFydGVkTm90aWZpY2F0
aW9uKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0UHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWRO
b3RpZmljYXRpb24oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RQcm9ncmVzc0ZpbmlzaGVk
Tm90aWZpY2F0aW9uKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHByb2dyZXNzU3RhcnRlZCgp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgcHJvZ3Jlc3NDb21wbGV0ZWQoKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIHNldE1haW5GcmFtZURvY3VtZW50UmVhZHkoYm9vbCk7CisgICAgICAgIHZpcnR1
YWwgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKik7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKTsKKworICAgICAgICB2aXJ0dWFs
IGJvb2wgY2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYgTUlNRVR5cGUpIGNvbnN0OworICAg
ICAgICB2aXJ0dWFsIGJvb2wgcmVwcmVzZW50YXRpb25FeGlzdHNGb3JVUkxTY2hlbWUoY29uc3Qg
U3RyaW5nJiBVUkxTY2hlbWUpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFN0cmluZyBnZW5lcmF0
ZWRNSU1FVHlwZUZvclVSTFNjaGVtZShjb25zdCBTdHJpbmcmIFVSTFNjaGVtZSkgY29uc3Q7CisK
KyAgICAgICAgdmlydHVhbCB2b2lkIGZyYW1lTG9hZENvbXBsZXRlZCgpOworICAgICAgICB2aXJ0
dWFsIHZvaWQgc2F2ZVZpZXdTdGF0ZVRvSXRlbShIaXN0b3J5SXRlbSopOworICAgICAgICB2aXJ0
dWFsIHZvaWQgcmVzdG9yZVZpZXdTdGF0ZSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzdG9y
ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwcm92
aXNpb25hbExvYWRTdGFydGVkKCk7CisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRUcmVhdFVS
TEFzU2FtZUFzQ3VycmVudChjb25zdCBLVVJMJikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBhZGRIaXN0b3J5SXRlbUZvckZyYWdtZW50U2Nyb2xsKCk7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hMb2FkKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNv
dXJjZVJlcGxhY2VtZW50KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJik7CisKKyAgICAgICAgdmlydHVhbCBTdHJpbmcgdXNl
ckFnZW50KGNvbnN0IEtVUkwmKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVBsYXRmb3Jt
RGF0YVRvQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNo
ZWRGcmFtZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRm9y
TmV3UGFnZSgpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCk7
CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygp
OworICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkR29Ub0hpc3RvcnlJdGVtKEhpc3RvcnlJdGVt
KikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3
U3RhdGVUb0l0ZW0oSGlzdG9yeUl0ZW0qKTsKKyAgICAgICAgdmlydHVhbCBib29sIGNhbkNhY2hl
UGFnZSgpIGNvbnN0OworCisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRNYWluRG9jdW1lbnRFcnJv
cihEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KTsK
KyAgICAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpOworICAgICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9y
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3Ig
Y2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgICAgICB2aXJ0
dWFsIFJlc291cmNlRXJyb3IgaW50ZXJydXB0Rm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7CisgICAgICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93
TUlNRVR5cGVFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgICAgIHZpcnR1YWwg
UmVzb3VyY2VFcnJvciBmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOworICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRmFsbEJhY2soY29uc3QgUmVzb3VyY2VF
cnJvciYpOworICAgICAgICB2aXJ0dWFsIFdURjo6UGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4g
Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZChS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7CisgICAgICAgIAorICAgICAgICB2aXJ0dWFsIHZvaWQgYXNzaWduSWRlbnRpZmllclRv
SW5pdGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRMb2FkZXIqLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2ls
bFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgUmVzb3VyY2VSZXF1
ZXN0JiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZUNyZWRl
bnRpYWxTdG9yYWdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKERvY3VtZW50TG9hZGVyKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9h
ZGVyKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0
aChEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGludCk7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBs
b25nKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoRG9jdW1l
bnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgICAgIHZpcnR1YWwgYm9v
bCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlcios
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IGludCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUJ5WE1M
SHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZywgY29uc3QgU2NyaXB0U3RyaW5nJik7CisKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNv
dXJjZUVycm9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICAgICAgdmlydHVhbCBGcmFtZSogZGlzcGF0Y2hDcmVh
dGVQYWdlKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck1J
TUVUeXBlKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IE5hdmlnYXRpb25BY3Rpb24mLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NS
ZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlv
biBmdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPik7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgc3RhcnREb3dubG9hZChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKTsKKworICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgbm90
IGJlIGhlcmUsIGJ1dCBpdCdzIG5lZWRlZCBmb3IgdGhlIHRlc3RzIGN1cnJlbnRseQorICAgICAg
ICB2aXJ0dWFsIHZvaWQgcGFydENsZWFyZWRJbkJlZ2luKCk7CisKKyAgICAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBI
VE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFs
bG93c1Njcm9sbGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpOworICAgICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVn
SW5FbGVtZW50KiwgY29uc3QgS1VSTCYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0
IFN0cmluZyYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBsb2Fk
TWFudWFsbHkpIDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdp
ZGdldCogcGx1Z2luV2lkZ2V0KTsKKyAgICAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIHBsdWdp
bldpbGxIYW5kbGVMb2FkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworCisgICAgICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3Qg
SW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhcmFtTmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CisKKyAgICAgICAg
dmlydHVhbCBPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgICAgICB2aXJ0dWFsIFN0cmluZyBvdmVy
cmlkZU1lZGlhVHlwZSgpIGNvbnN0OworCisgICAgICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dPYmpl
Y3RDbGVhcmVkKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudEVsZW1lbnRBdmFpbGFi
bGUoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybUZpcnN0TmF2aWdhdGlvbigp
IGNvbnN0OworCisgICAgICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckljb25Ob3RpZmljYXRp
b24oYm9vbCBsaXN0ZW4gPSB0cnVlKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIEZyYW1lICpt
X2ZyYW1lOworICAgICAgICBXZWJWaWV3ICptX3dlYlZpZXc7CisgICAgICAgIFJlc291cmNlUmVz
cG9uc2UgbV9yZXNwb25zZTsKKyAgICAgICAgYm9vbCBtX2ZpcnN0RGF0YTsKKyAgICB9OworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRnJhbWVMb2FkZXJDbGllbnRIYWlrdV9o
CisKLS0gCjEuNi4zLjIKCg==
</data>
<flag name="review"
          id="17213"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33037</attachid>
            <date>2009-07-19 01:21:47 -0700</date>
            <delta_ts>2009-07-28 03:03:06 -0700</delta_ts>
            <desc>Patch to add ChromeClient for Haiku WebCore support.</desc>
            <filename>Added-ChromeClient-for-Haiku-WebCore-support.patch</filename>
            <type>text/plain</type>
            <size>18620</size>
            <attacher name="Maxime Simon">simon.maxime</attacher>
            
              <data encoding="base64">RnJvbSAyNzY0OWRmZTc2ZWM4YzY2ZWY3YmI3NzQ4ZmRiN2FiMDYwZjNkOWE2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgU2ltb24gPHNpbW9uLm1heGltZUBnbWFpbC5jb20+
CkRhdGU6IFN1biwgMTkgSnVsIDIwMDkgMTA6MTg6MDggKzAyMDAKU3ViamVjdDogW1BBVENIXSBB
ZGRlZCBDaHJvbWVDbGllbnQgZm9yIEhhaWt1IFdlYkNvcmUgc3VwcG9ydC4KCi0tLQogV2ViS2l0
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNjUgKysrKwog
V2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcCB8ICAzNjAg
KysrKysrKysrKysrKysrKysrKysrCiBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50SGFpa3UuaCAgIHwgIDE0NSArKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgNTcwIGlu
c2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0L2hh
aWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcAogY3JlYXRlIG1vZGUgMTAw
NjQ0IFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oCgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L0NoYW5nZUxvZyBiL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzViN2Fk
MS4uMDg4MmE5MCAxMDA2NDQKLS0tIGEvV2ViS2l0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjggQEAKKzIwMDktMDctMTkgIE1heGltZSBTaW1vbiAgPHNpbW9u
Lm1heGltZUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkZWQgQ2hyb21lQ2xpZW50IGZvciBIYWlrdSBXZWJDb3JlIHN1cHBvcnQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjk1Mgor
CisgICAgICAgICogaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpDaHJvbWVDbGllbnRI
YWlrdSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6fkNocm9tZUNsaWVu
dEhhaWt1KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpjaHJvbWVEZXN0
cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnNldFdpbmRvd1Jl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OndpbmRvd1JlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnBhZ2VSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpzY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6Zm9jdXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21l
Q2xpZW50SGFpa3U6OnVuZm9jdXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFp
a3U6OmNhblRha2VGb2N1cyk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6
dGFrZUZvY3VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpjcmVhdGVX
aW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OmNyZWF0ZU1vZGFs
RGlhbG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpzaG93KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpjYW5SdW5Nb2RhbCk6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6cnVuTW9kYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnNldFRvb2xiYXJzVmlzaWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6dG9vbGJhcnNWaXNpYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9tZUNsaWVudEhhaWt1OjpzZXRTdGF0dXNiYXJWaXNpYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpzdGF0dXNiYXJWaXNpYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpzZXRTY3JvbGxiYXJzVmlzaWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6c2Nyb2xsYmFyc1Zpc2libGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnNldE1lbnViYXJWaXNpYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjptZW51YmFyVmlzaWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6c2V0UmVzaXphYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjphZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6Y2xv
c2VXaW5kb3dTb29uKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpydW5K
YXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnJ1
bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1
OjpydW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhh
aWt1OjpzZXRTdGF0dXNiYXJUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhh
aWt1OjpzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
ZUNsaWVudEhhaWt1Ojp0YWJzVG9MaW5rcyk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGll
bnRIYWlrdTo6d2luZG93UmVzaXplclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50SGFpa3U6OnJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6
OnNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6c2NyZWVuVG9X
aW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OndpbmRvd1RvU2Ny
ZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpwbGF0Zm9ybVdpbmRv
dyk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6Y29udGVudHNTaXplQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6c2Nyb2xsUmVjdElu
dG9WaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjphZGRUb0RpcnR5
UmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpzY3JvbGxCYWNr
aW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnVwZGF0ZUJh
Y2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6bW91c2VE
aWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6
OnNldFRvb2xUaXApOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnByaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpleGNlZWRlZERhdGFiYXNl
UXVvdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnJlcXVlc3RHZW9s
b2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGll
bnRIYWlrdTo6cnVuT3BlblBhbmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhh
aWt1OjpzZXRDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OmZv
cm1TdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6
Y3JlYXRlSFRNTFBhcnNlclF1aXJrcyk6CisgICAgICAgICogaGFpa3UvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50SGFpa3UuaDogQWRkZWQuCisKIDIwMDktMDctMTYgIE1heGltZSBTaW1vbiAg
PHNpbW9uLm1heGltZUBnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlk
ZWwuCmRpZmYgLS1naXQgYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
SGFpa3UuY3BwIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzZlNTQ3Ci0tLSAvZGV2
L251bGwKKysrIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1
LmNwcApAQCAtMCwwICsxLDM2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1
c2luIDx6YWNrQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgUnlhbiBM
ZWF2ZW5nb29kIDxsZWF2ZW5nb29kQGdtYWlsLmNvbT4KKyAqCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50SGFp
a3UuaCIKKworI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5j
bHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisj
aW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
KworI2luY2x1ZGUgPEFsZXJ0Lmg+CisjaW5jbHVkZSA8U3RyaW5nLmg+CisKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitDaHJvbWVDbGllbnRIYWlrdTo6Q2hyb21lQ2xpZW50SGFpa3UoKQorewor
fQorCitDaHJvbWVDbGllbnRIYWlrdTo6fkNocm9tZUNsaWVudEhhaWt1KCkKK3sKK30KKwordm9p
ZCBDaHJvbWVDbGllbnRIYWlrdTo6Y2hyb21lRGVzdHJveWVkKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIENocm9tZUNsaWVudEhhaWt1OjpzZXRXaW5kb3dSZWN0KGNvbnN0
IEZsb2F0UmVjdCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworRmxvYXRSZWN0IENo
cm9tZUNsaWVudEhhaWt1Ojp3aW5kb3dSZWN0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBGbG9hdFJlY3QoMCwgMCwgMjAwLCAyMDApOworfQorCitGbG9hdFJlY3QgQ2hy
b21lQ2xpZW50SGFpa3U6OnBhZ2VSZWN0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBGbG9hdFJlY3QoMCwgMCwgMjAwLCAyMDApOworfQorCitmbG9hdCBDaHJvbWVDbGll
bnRIYWlrdTo6c2NhbGVGYWN0b3IoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIDEuMDsKK30KKwordm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6Zm9jdXMoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OnVuZm9jdXMoKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgQ2hyb21lQ2xpZW50SGFpa3U6OmNh
blRha2VGb2N1cyhGb2N1c0RpcmVjdGlvbikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIENocm9tZUNsaWVudEhhaWt1Ojp0YWtlRm9jdXMoRm9j
dXNEaXJlY3Rpb24pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworUGFnZSogQ2hyb21l
Q2xpZW50SGFpa3U6OmNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3Qm
LCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gMDsKK30KKworUGFnZSogQ2hyb21lQ2xpZW50SGFpa3U6OmNyZWF0ZU1v
ZGFsRGlhbG9nKEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6
c2hvdygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBDaHJvbWVDbGllbnRI
YWlrdTo6Y2FuUnVuTW9kYWwoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCit2b2lkIENocm9tZUNsaWVudEhhaWt1OjpydW5Nb2RhbCgpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6c2V0VG9vbGJh
cnNWaXNpYmxlKGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBDaHJv
bWVDbGllbnRIYWlrdTo6dG9vbGJhcnNWaXNpYmxlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6c2V0U3Rh
dHVzYmFyVmlzaWJsZShib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wg
Q2hyb21lQ2xpZW50SGFpa3U6OnN0YXR1c2JhclZpc2libGUoKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIENocm9tZUNsaWVudEhhaWt1Ojpz
ZXRTY3JvbGxiYXJzVmlzaWJsZShib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K2Jvb2wgQ2hyb21lQ2xpZW50SGFpa3U6OnNjcm9sbGJhcnNWaXNpYmxlKCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIENocm9tZUNsaWVudEhh
aWt1OjpzZXRNZW51YmFyVmlzaWJsZShib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK2Jvb2wgQ2hyb21lQ2xpZW50SGFpa3U6Om1lbnViYXJWaXNpYmxlKCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRI
YWlrdTo6c2V0UmVzaXphYmxlKGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6YWRkTWVzc2FnZVRvQ29uc29sZShjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKQoreworICAgIHBy
aW50ZigiTUVTU0FHRSAlczolaSAlc1xuIiwgQlN0cmluZyhzb3VyY2VJRCkuU3RyaW5nKCksIGxp
bmVOdW1iZXIsIEJTdHJpbmcobWVzc2FnZSkuU3RyaW5nKCkpOworfQorCit2b2lkIENocm9tZUNs
aWVudEhhaWt1OjphZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZl
bCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlSUQpCit7CisgICAgcHJpbnRmKCJNRVNTQUdFICVzOiVpICVzXG4iLCBCU3RyaW5nKHNvdXJj
ZUlEKS5TdHJpbmcoKSwgbGluZU51bWJlciwgQlN0cmluZyhtZXNzYWdlKS5TdHJpbmcoKSk7Cit9
CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNv
dXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
bGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCkKK3sKKyAgICBwcmludGYoIk1FU1NB
R0UgJXM6JWkgJXNcbiIsIEJTdHJpbmcoc291cmNlSUQpLlN0cmluZygpLCBsaW5lTnVtYmVyLCBC
U3RyaW5nKG1lc3NhZ2UpLlN0cmluZygpKTsKK30KKworYm9vbCBDaHJvbWVDbGllbnRIYWlrdTo6
Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBDaHJvbWVDbGllbnRIYWlrdTo6cnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRnJhbWUqIGZyYW1l
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lk
IENocm9tZUNsaWVudEhhaWt1OjpjbG9zZVdpbmRvd1Nvb24oKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OnJ1bkphdmFTY3JpcHRBbGVydChG
cmFtZSosIGNvbnN0IFN0cmluZyYgbXNnKQoreworICAgIEJBbGVydCogYWxlcnQgPSBuZXcgQkFs
ZXJ0KCJKYXZhU2NyaXB0IiwgQlN0cmluZyhtc2cpLlN0cmluZygpLCAiT0siKTsKKyAgICBhbGVy
dC0+R28oKTsKK30KKworYm9vbCBDaHJvbWVDbGllbnRIYWlrdTo6cnVuSmF2YVNjcmlwdENvbmZp
cm0oRnJhbWUqLCBjb25zdCBTdHJpbmcmIG1zZykKK3sKKyAgICBCQWxlcnQqIGFsZXJ0ID0gbmV3
IEJBbGVydCgiSmF2YVNjcmlwdCIsIEJTdHJpbmcobXNnKS5TdHJpbmcoKSwgIlllcyIsICJObyIp
OworICAgIHJldHVybiAhYWxlcnQtPkdvKCk7Cit9CisKK2Jvb2wgQ2hyb21lQ2xpZW50SGFpa3U6
OnJ1bkphdmFTY3JpcHRQcm9tcHQoRnJhbWUqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgZGVmYXVsdFZhbHVlLCBTdHJpbmcmIHJlc3VsdCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6
c2V0U3RhdHVzYmFyVGV4dChjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK2Jvb2wgQ2hyb21lQ2xpZW50SGFpa3U6OnNob3VsZEludGVycnVwdEphdmFTY3JpcHQo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IENocm9tZUNsaWVudEhhaWt1Ojp0YWJzVG9MaW5rcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitJbnRSZWN0IENocm9tZUNsaWVudEhhaWt1Ojp3aW5kb3dSZXNpemVyUmVjdCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIEludFJlY3QoKTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRI
YWlrdTo6cmVwYWludChjb25zdCBJbnRSZWN0JiwgYm9vbCBjb250ZW50Q2hhbmdlZCwgYm9vbCBp
bW1lZGlhdGUsIGJvb2wgcmVwYWludENvbnRlbnRPbmx5KQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OnNjcm9sbChjb25zdCBJbnRTaXplJiBz
Y3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBj
bGlwUmVjdCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitJbnRQb2ludCBDaHJvbWVD
bGllbnRIYWlrdTo6c2NyZWVuVG9XaW5kb3coY29uc3QgSW50UG9pbnQmKSBjb25zdAoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEludFBvaW50KCk7Cit9CisKK0ludFJlY3Qg
Q2hyb21lQ2xpZW50SGFpa3U6OndpbmRvd1RvU2NyZWVuKGNvbnN0IEludFJlY3QmKSBjb25zdAor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEludFJlY3QoKTsKK30KKworUGxh
dGZvcm1XaWRnZXQgQ2hyb21lQ2xpZW50SGFpa3U6OnBsYXRmb3JtV2luZG93KCkgY29uc3QKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBQbGF0Zm9ybVdpZGdldCgpOworfQor
Cit2b2lkIENocm9tZUNsaWVudEhhaWt1Ojpjb250ZW50c1NpemVDaGFuZ2VkKEZyYW1lKiwgY29u
c3QgSW50U2l6ZSYpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBD
aHJvbWVDbGllbnRIYWlrdTo6c2Nyb2xsUmVjdEludG9WaWV3KGNvbnN0IEludFJlY3QmLCBjb25z
dCBTY3JvbGxWaWV3KikgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IENocm9tZUNsaWVudEhhaWt1OjphZGRUb0RpcnR5UmVnaW9uKGNvbnN0IEludFJlY3QmKQorewor
fQorCit2b2lkIENocm9tZUNsaWVudEhhaWt1OjpzY3JvbGxCYWNraW5nU3RvcmUoaW50LCBpbnQs
IGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JikKK3sKK30KKwordm9pZCBDaHJvbWVDbGll
bnRIYWlrdTo6dXBkYXRlQmFja2luZ1N0b3JlKCkKK3sKK30KKwordm9pZCBDaHJvbWVDbGllbnRI
YWlrdTo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVzdFJlc3VsdCYgaGl0LCB1
bnNpZ25lZCAvKm1vZGlmaWVyRmxhZ3MqLykKK3sKKyAgICAvLyBTb21lIGV4dHJhIGluZm8KKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIENocm9tZUNsaWVudEhhaWt1OjpzZXRUb29s
VGlwKGNvbnN0IFN0cmluZyYgdGlwKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgQ2hyb21lQ2xpZW50SGFpa3U6OnNldFRvb2xUaXAoY29uc3QgU3RyaW5nJiB0aXAsIFRleHRE
aXJlY3Rpb24pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBDaHJvbWVDbGll
bnRIYWlrdTo6cHJpbnQoRnJhbWUqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgQ2hyb21lQ2xpZW50SGFpa3U6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZSosIGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VOYW1lKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgQ2hyb21lQ2xpZW50SGFpa3U6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFt
ZShGcmFtZSosIEdlb2xvY2F0aW9uKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIENocm9tZUNsaWVudEhhaWt1OjpydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZp
bGVDaG9vc2VyPikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIENocm9tZUNs
aWVudEhhaWt1OjpzZXRDdXJzb3IoUGxhdGZvcm1DdXJzb3JIYW5kbGUpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8vIE5vdGlmaWNhdGlvbiB0aGF0
IHRoZSBnaXZlbiBmb3JtIGVsZW1lbnQgaGFzIGNoYW5nZWQuIFRoaXMgZnVuY3Rpb24KKy8vIHdp
bGwgYmUgY2FsbGVkIGZyZXF1ZW50bHksIHNvIGhhbmRsaW5nIHNob3VsZCBiZSB2ZXJ5IGZhc3Qu
Cit2b2lkIENocm9tZUNsaWVudEhhaWt1Ojpmb3JtU3RhdGVEaWRDaGFuZ2UoY29uc3QgTm9kZSop
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworUGFzc093blB0cjxIVE1MUGFyc2VyUXVp
cmtzPiBDaHJvbWVDbGllbnRIYWlrdTo6Y3JlYXRlSFRNTFBhcnNlclF1aXJrcygpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCmRpZmYgLS1naXQgYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50SGFpa3UuaCBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlr
dS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0ZDY1ZDAKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3Uu
aApAQCAtMCwwICsxLDE0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2lu
IDx6YWNrQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgUnlhbiBMZWF2ZW5nb29kIDxs
ZWF2ZW5nb29kQGdtYWlsLmNvbT4KKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgQ2hyb21lQ2xpZW50SGFpa3VfSAorI2RlZmluZSBDaHJvbWVDbGllbnRIYWlrdV9I
CisKKyNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNp
bmNsdWRlICJSZWZDb3VudGVkLmgiCisKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xh
c3MgRmxvYXRSZWN0OworICAgIGNsYXNzIFBhZ2U7CisgICAgc3RydWN0IEZyYW1lTG9hZFJlcXVl
c3Q7CisKKyAgICBjbGFzcyBDaHJvbWVDbGllbnRIYWlrdSA6IHB1YmxpYyBDaHJvbWVDbGllbnQg
eworICAgIHB1YmxpYzoKKyAgICAgICAgQ2hyb21lQ2xpZW50SGFpa3UoKTsKKyAgICAgICAgdmly
dHVhbCB+Q2hyb21lQ2xpZW50SGFpa3UoKTsKKyAgICAgICAgdm9pZCBjaHJvbWVEZXN0cm95ZWQo
KTsKKworICAgICAgICB2b2lkIHNldFdpbmRvd1JlY3QoY29uc3QgRmxvYXRSZWN0Jik7CisgICAg
ICAgIEZsb2F0UmVjdCB3aW5kb3dSZWN0KCk7CisKKyAgICAgICAgRmxvYXRSZWN0IHBhZ2VSZWN0
KCk7CisKKyAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IoKTsKKworICAgICAgICB2b2lkIGZvY3Vz
KCk7CisgICAgICAgIHZvaWQgdW5mb2N1cygpOworCisgICAgICAgIGJvb2wgY2FuVGFrZUZvY3Vz
KEZvY3VzRGlyZWN0aW9uKTsKKyAgICAgICAgdm9pZCB0YWtlRm9jdXMoRm9jdXNEaXJlY3Rpb24p
OworCisgICAgICAgIFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJl
cXVlc3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYpOworICAgICAgICBQYWdlKiBj
cmVhdGVNb2RhbERpYWxvZyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmKTsKKyAgICAg
ICAgdm9pZCBzaG93KCk7CisKKyAgICAgICAgYm9vbCBjYW5SdW5Nb2RhbCgpOworICAgICAgICB2
b2lkIHJ1bk1vZGFsKCk7CisKKyAgICAgICAgdm9pZCBzZXRUb29sYmFyc1Zpc2libGUoYm9vbCk7
CisgICAgICAgIGJvb2wgdG9vbGJhcnNWaXNpYmxlKCk7CisKKyAgICAgICAgdm9pZCBzZXRTdGF0
dXNiYXJWaXNpYmxlKGJvb2wpOworICAgICAgICBib29sIHN0YXR1c2JhclZpc2libGUoKTsKKwor
ICAgICAgICB2b2lkIHNldFNjcm9sbGJhcnNWaXNpYmxlKGJvb2wpOworICAgICAgICBib29sIHNj
cm9sbGJhcnNWaXNpYmxlKCk7CisKKyAgICAgICAgdm9pZCBzZXRNZW51YmFyVmlzaWJsZShib29s
KTsKKyAgICAgICAgYm9vbCBtZW51YmFyVmlzaWJsZSgpOworCisgICAgICAgIHZvaWQgc2V0UmVz
aXphYmxlKGJvb2wpOworCisgICAgICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCk7CisgICAgICAgIHZvaWQg
YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKTsKKyAgICAgICAgdm9pZCBh
ZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2
ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmLCB1bnNp
Z25lZCBpbnQsIGNvbnN0IFN0cmluZyYpOworCisgICAgICAgIGJvb2wgY2FuUnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsKCk7CisKKyAgICAgICAgYm9vbCBydW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBGcmFtZSogZnJhbWUpOworCisgICAgICAgIHZv
aWQgY2xvc2VXaW5kb3dTb29uKCk7CisKKyAgICAgICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQo
RnJhbWUqLCBjb25zdCBTdHJpbmcmKTsKKyAgICAgICAgYm9vbCBydW5KYXZhU2NyaXB0Q29uZmly
bShGcmFtZSosIGNvbnN0IFN0cmluZyYpOworICAgICAgICBib29sIHJ1bkphdmFTY3JpcHRQcm9t
cHQoRnJhbWUqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZh
bHVlLCBTdHJpbmcmIHJlc3VsdCk7CisgICAgICAgIGJvb2wgc2hvdWxkSW50ZXJydXB0SmF2YVNj
cmlwdCgpOworCisgICAgICAgIHZvaWQgc2V0U3RhdHVzYmFyVGV4dChjb25zdCBXZWJDb3JlOjpT
dHJpbmcmKTsKKyAgICAgICAgYm9vbCB0YWJzVG9MaW5rcygpIGNvbnN0OworICAgICAgICBJbnRS
ZWN0IHdpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3Q7CisKKyAgICAgICAgdm9pZCByZXBhaW50KGNv
bnN0IEludFJlY3QmLCBib29sIGNvbnRlbnRDaGFuZ2VkLCBib29sIGltbWVkaWF0ZSA9IGZhbHNl
LCBib29sIHJlcGFpbnRDb250ZW50T25seSA9IGZhbHNlKTsKKyAgICAgICAgdm9pZCBzY3JvbGwo
Y29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwg
Y29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOworICAgICAgICBJbnRQb2ludCBzY3JlZW5Ub1dpbmRv
dyhjb25zdCBJbnRQb2ludCYpIGNvbnN0OworICAgICAgICBJbnRSZWN0IHdpbmRvd1RvU2NyZWVu
KGNvbnN0IEludFJlY3QmKSBjb25zdDsKKyAgICAgICAgUGxhdGZvcm1XaWRnZXQgcGxhdGZvcm1X
aW5kb3coKSBjb25zdDsKKyAgICAgICAgdm9pZCBjb250ZW50c1NpemVDaGFuZ2VkKEZyYW1lKiwg
Y29uc3QgSW50U2l6ZSYpIGNvbnN0OworICAgICAgICB2b2lkIHNjcm9sbFJlY3RJbnRvVmlldyhj
b25zdCBJbnRSZWN0JiwgY29uc3QgU2Nyb2xsVmlldyopIGNvbnN0OworCisgICAgICAgIHZvaWQg
YWRkVG9EaXJ0eVJlZ2lvbihjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZvaWQgc2Nyb2xsQmFj
a2luZ1N0b3JlKGludCwgaW50LCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpOworICAg
ICAgICB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZSgpOworCisgICAgICAgIHZvaWQgbW91c2VEaWRN
b3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVzdFJlc3VsdCYsIHVuc2lnbmVkIG1vZGlmaWVyRmxh
Z3MpOworCisgICAgICAgIHZvaWQgc2V0VG9vbFRpcChjb25zdCBTdHJpbmcmKTsKKworICAgICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VG9vbFRpcChjb25zdCBTdHJpbmcmLCBUZXh0RGlyZWN0aW9uKTsK
KworICAgICAgICB2b2lkIHByaW50KEZyYW1lKik7CisKKyAgICAgICAgdm9pZCBleGNlZWRlZERh
dGFiYXNlUXVvdGEoRnJhbWUqLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSk7CisKKyAgICAg
ICAgLy8gVGhpcyBpcyBhbiBhc3luY2hyb25vdXMgY2FsbC4gVGhlIENocm9tZUNsaWVudCBjYW4g
ZGlzcGxheSBVSSBhc2tpbmcgdGhlIHVzZXIgZm9yIHBlcm1pc3Npb24KKyAgICAgICAgLy8gdG8g
dXNlIEdlb2xvY29jYXRpb24uIFRoZSBDaHJvbWVDbGllbnQgbXVzdCBjYWxsIEdlb2xvY2F0aW9u
OjpzZXRTaG91bGRDbGVhckNhY2hlKCkgYXBwcm9wcmlhdGVseS4KKyAgICAgICAgdm9pZCByZXF1
ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoRnJhbWUqLCBHZW9sb2NhdGlvbiopOwor
CisgICAgICAgIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nl
cj4pOworCisgICAgICAgIGJvb2wgc2V0Q3Vyc29yKFBsYXRmb3JtQ3Vyc29ySGFuZGxlKTsKKwor
ICAgICAgICAvLyBOb3RpZmljYXRpb24gdGhhdCB0aGUgZ2l2ZW4gZm9ybSBlbGVtZW50IGhhcyBj
aGFuZ2VkLiBUaGlzIGZ1bmN0aW9uCisgICAgICAgIC8vIHdpbGwgYmUgY2FsbGVkIGZyZXF1ZW50
bHksIHNvIGhhbmRsaW5nIHNob3VsZCBiZSB2ZXJ5IGZhc3QuCisgICAgICAgIHZvaWQgZm9ybVN0
YXRlRGlkQ2hhbmdlKGNvbnN0IE5vZGUqKTsKKworICAgICAgICBQYXNzT3duUHRyPEhUTUxQYXJz
ZXJRdWlya3M+IGNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKTsKKyAgICB9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZgorCi0tIAoxLjYuMy4yCgo=
</data>
<flag name="review"
          id="17374"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33607</attachid>
            <date>2009-07-28 03:03:06 -0700</date>
            <delta_ts>2009-07-28 11:29:44 -0700</delta_ts>
            <desc>Patch to add ChromeClient for Haiku WebCore support.</desc>
            <filename>Added-ChromeClient-for-Haiku-WebCore-support.patch</filename>
            <type>text/plain</type>
            <size>18954</size>
            <attacher name="Maxime Simon">simon.maxime</attacher>
            
              <data encoding="base64">RnJvbSA3YzUwYmQ5MTgwOWIyZDY3YjA4NTY0ZTZjYWQ0ZmYzZTJiNzNlYmU4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgU2ltb24gPHNpbW9uLm1heGltZUBnbWFpbC5jb20+
CkRhdGU6IFR1ZSwgMjggSnVsIDIwMDkgMTI6MDE6MTQgKzAyMDAKU3ViamVjdDogW1BBVENIXSBB
ZGRlZCBDaHJvbWVDbGllbnQgZm9yIEhhaWt1IFdlYkNvcmUgc3VwcG9ydC4KCi0tLQogV2ViS2l0
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNjYgKysrKwog
V2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcCB8ICAzNjUg
KysrKysrKysrKysrKysrKysrKysrCiBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50SGFpa3UuaCAgIHwgIDE0NyArKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgNTc4IGlu
c2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0L2hh
aWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcAogY3JlYXRlIG1vZGUgMTAw
NjQ0IFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oCgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L0NoYW5nZUxvZyBiL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYzc5MTNk
Mi4uYzdiZDQ1MiAxMDA2NDQKLS0tIGEvV2ViS2l0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjkgQEAKKzIwMDktMDctMjggIE1heGltZSBTaW1vbiAgPHNpbW9u
Lm1heGltZUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkZWQgQ2hyb21lQ2xpZW50IGZvciBIYWlrdSBXZWJDb3JlIHN1cHBvcnQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjk1Mgor
CisgICAgICAgICogaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpDaHJvbWVDbGllbnRI
YWlrdSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6fkNocm9tZUNsaWVu
dEhhaWt1KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpjaHJvbWVEZXN0
cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnNldFdpbmRvd1Jl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OndpbmRvd1JlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnBhZ2VSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpzY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6Zm9jdXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21l
Q2xpZW50SGFpa3U6OnVuZm9jdXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFp
a3U6OmNhblRha2VGb2N1cyk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6
dGFrZUZvY3VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpjcmVhdGVX
aW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OmNyZWF0ZU1vZGFs
RGlhbG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpzaG93KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpjYW5SdW5Nb2RhbCk6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6cnVuTW9kYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnNldFRvb2xiYXJzVmlzaWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6dG9vbGJhcnNWaXNpYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9tZUNsaWVudEhhaWt1OjpzZXRTdGF0dXNiYXJWaXNpYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpzdGF0dXNiYXJWaXNpYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpzZXRTY3JvbGxiYXJzVmlzaWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6c2Nyb2xsYmFyc1Zpc2libGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnNldE1lbnViYXJWaXNpYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjptZW51YmFyVmlzaWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6c2V0UmVzaXphYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjphZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6Y2xv
c2VXaW5kb3dTb29uKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpydW5K
YXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnJ1
bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1
OjpydW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhh
aWt1OjpzZXRTdGF0dXNiYXJUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhh
aWt1OjpzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
ZUNsaWVudEhhaWt1Ojp0YWJzVG9MaW5rcyk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGll
bnRIYWlrdTo6d2luZG93UmVzaXplclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50SGFpa3U6OnJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6
OnNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6c2NyZWVuVG9X
aW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OndpbmRvd1RvU2Ny
ZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpwbGF0Zm9ybVdpbmRv
dyk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6Y29udGVudHNTaXplQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6c2Nyb2xsUmVjdElu
dG9WaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjphZGRUb0RpcnR5
UmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpzY3JvbGxCYWNr
aW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnVwZGF0ZUJh
Y2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6bW91c2VE
aWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6
OnNldFRvb2xUaXApOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnByaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1OjpleGNlZWRlZERhdGFiYXNl
UXVvdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6OnJlYWNoZWRNYXhBcHBD
YWNoZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnJlcXVlc3RH
ZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVD
bGllbnRIYWlrdTo6cnVuT3BlblBhbmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dEhhaWt1OjpzZXRDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6
OmZvcm1TdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlr
dTo6Y3JlYXRlSFRNTFBhcnNlclF1aXJrcyk6CisgICAgICAgICogaGFpa3UvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50SGFpa3UuaDogQWRkZWQuCisKIDIwMDktMDctMjQgIEFuZHJlaSBQb3Bl
c2N1ICA8YW5kcmVpcEBnb29nbGUuY29tPgogCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGUgc2hv
dWxkIGhhdmUgc2l6ZSBsaW1pdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcCBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRIYWlrdS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ODkzMmRhMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRIYWlrdS5jcHAKQEAgLTAsMCArMSwzNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA2
IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA3IFJ5YW4gTGVhdmVuZ29vZCA8bGVhdmVuZ29vZEBnbWFpbC5jb20+IEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2hy
b21lQ2xpZW50SGFpa3UuaCIKKworI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVM
b2FkUmVxdWVzdC5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkhpdFRlc3RS
ZXN1bHQuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCisKKyNpbmNsdWRlIDxBbGVydC5oPgorI2luY2x1ZGUgPFN0cmluZy5oPgorCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ2hyb21lQ2xpZW50SGFpa3U6OkNocm9tZUNsaWVudEhh
aWt1KCkKK3sKK30KKworQ2hyb21lQ2xpZW50SGFpa3U6On5DaHJvbWVDbGllbnRIYWlrdSgpCit7
Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OmNocm9tZURlc3Ryb3llZCgpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6c2V0V2luZG93
UmVjdChjb25zdCBGbG9hdFJlY3QmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK0Zs
b2F0UmVjdCBDaHJvbWVDbGllbnRIYWlrdTo6d2luZG93UmVjdCgpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gRmxvYXRSZWN0KDAsIDAsIDIwMCwgMjAwKTsKK30KKworRmxv
YXRSZWN0IENocm9tZUNsaWVudEhhaWt1OjpwYWdlUmVjdCgpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gRmxvYXRSZWN0KDAsIDAsIDIwMCwgMjAwKTsKK30KKworZmxvYXQg
Q2hyb21lQ2xpZW50SGFpa3U6OnNjYWxlRmFjdG9yKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiAxLjA7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OmZvY3VzKCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIENocm9tZUNsaWVudEhhaWt1Ojp1
bmZvY3VzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIENocm9tZUNsaWVu
dEhhaWt1OjpjYW5UYWtlRm9jdXMoRm9jdXNEaXJlY3Rpb24pCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6dGFr
ZUZvY3VzKEZvY3VzRGlyZWN0aW9uKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1Bh
Z2UqIENocm9tZUNsaWVudEhhaWt1OjpjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxv
YWRSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK1BhZ2UqIENocm9tZUNsaWVudEhhaWt1
OjpjcmVhdGVNb2RhbERpYWxvZyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgQ2hyb21lQ2xp
ZW50SGFpa3U6OnNob3coKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgQ2hy
b21lQ2xpZW50SGFpa3U6OmNhblJ1bk1vZGFsKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6cnVuTW9kYWwo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6
OnNldFRvb2xiYXJzVmlzaWJsZShib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K2Jvb2wgQ2hyb21lQ2xpZW50SGFpa3U6OnRvb2xiYXJzVmlzaWJsZSgpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFp
a3U6OnNldFN0YXR1c2JhclZpc2libGUoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCitib29sIENocm9tZUNsaWVudEhhaWt1OjpzdGF0dXNiYXJWaXNpYmxlKCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDaHJvbWVDbGll
bnRIYWlrdTo6c2V0U2Nyb2xsYmFyc1Zpc2libGUoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCitib29sIENocm9tZUNsaWVudEhhaWt1OjpzY3JvbGxiYXJzVmlzaWJsZSgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDaHJv
bWVDbGllbnRIYWlrdTo6c2V0TWVudWJhclZpc2libGUoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCitib29sIENocm9tZUNsaWVudEhhaWt1OjptZW51YmFyVmlzaWJsZSgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQ2hy
b21lQ2xpZW50SGFpa3U6OnNldFJlc2l6YWJsZShib29sKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBpbnQgbGluZU51bWJlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCkK
K3sKKyAgICBwcmludGYoIk1FU1NBR0UgJXM6JWkgJXNcbiIsIEJTdHJpbmcoc291cmNlSUQpLlN0
cmluZygpLCBsaW5lTnVtYmVyLCBCU3RyaW5nKG1lc3NhZ2UpLlN0cmluZygpKTsKK30KKwordm9p
ZCBDaHJvbWVDbGllbnRIYWlrdTo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBN
ZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlSUQpCit7CisgICAgcHJpbnRmKCJNRVNTQUdFICVzOiVpICVzXG4iLCBCU3Ry
aW5nKHNvdXJjZUlEKS5TdHJpbmcoKSwgbGluZU51bWJlciwgQlN0cmluZyhtZXNzYWdlKS5TdHJp
bmcoKSk7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OmFkZE1lc3NhZ2VUb0NvbnNvbGUo
TWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCkKK3sKKyAgICBwcmlu
dGYoIk1FU1NBR0UgJXM6JWkgJXNcbiIsIEJTdHJpbmcoc291cmNlSUQpLlN0cmluZygpLCBsaW5l
TnVtYmVyLCBCU3RyaW5nKG1lc3NhZ2UpLlN0cmluZygpKTsKK30KKworYm9vbCBDaHJvbWVDbGll
bnRIYWlrdTo6Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBDaHJvbWVDbGllbnRIYWlr
dTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRnJh
bWUqIGZyYW1lKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit2b2lkIENocm9tZUNsaWVudEhhaWt1OjpjbG9zZVdpbmRvd1Nvb24oKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OnJ1bkphdmFTY3Jp
cHRBbGVydChGcmFtZSosIGNvbnN0IFN0cmluZyYgbXNnKQoreworICAgIEJBbGVydCogYWxlcnQg
PSBuZXcgQkFsZXJ0KCJKYXZhU2NyaXB0IiwgQlN0cmluZyhtc2cpLlN0cmluZygpLCAiT0siKTsK
KyAgICBhbGVydC0+R28oKTsKK30KKworYm9vbCBDaHJvbWVDbGllbnRIYWlrdTo6cnVuSmF2YVNj
cmlwdENvbmZpcm0oRnJhbWUqLCBjb25zdCBTdHJpbmcmIG1zZykKK3sKKyAgICBCQWxlcnQqIGFs
ZXJ0ID0gbmV3IEJBbGVydCgiSmF2YVNjcmlwdCIsIEJTdHJpbmcobXNnKS5TdHJpbmcoKSwgIlll
cyIsICJObyIpOworICAgIHJldHVybiAhYWxlcnQtPkdvKCk7Cit9CisKK2Jvb2wgQ2hyb21lQ2xp
ZW50SGFpa3U6OnJ1bkphdmFTY3JpcHRQcm9tcHQoRnJhbWUqLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlLCBTdHJpbmcmIHJlc3VsdCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDaHJvbWVDbGll
bnRIYWlrdTo6c2V0U3RhdHVzYmFyVGV4dChjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK2Jvb2wgQ2hyb21lQ2xpZW50SGFpa3U6OnNob3VsZEludGVycnVwdEph
dmFTY3JpcHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIENocm9tZUNsaWVudEhhaWt1Ojp0YWJzVG9MaW5rcygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitJbnRSZWN0IENocm9tZUNsaWVudEhhaWt1Ojp3aW5kb3dSZXNp
emVyUmVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEludFJlY3QoKTsKK30KKwordm9pZCBDaHJv
bWVDbGllbnRIYWlrdTo6cmVwYWludChjb25zdCBJbnRSZWN0JiwgYm9vbCBjb250ZW50Q2hhbmdl
ZCwgYm9vbCBpbW1lZGlhdGUsIGJvb2wgcmVwYWludENvbnRlbnRPbmx5KQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OnNjcm9sbChjb25zdCBJ
bnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJ
bnRSZWN0JiBjbGlwUmVjdCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitJbnRQb2lu
dCBDaHJvbWVDbGllbnRIYWlrdTo6c2NyZWVuVG9XaW5kb3coY29uc3QgSW50UG9pbnQmKSBjb25z
dAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEludFBvaW50KCk7Cit9CisK
K0ludFJlY3QgQ2hyb21lQ2xpZW50SGFpa3U6OndpbmRvd1RvU2NyZWVuKGNvbnN0IEludFJlY3Qm
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEludFJlY3QoKTsK
K30KKworUGxhdGZvcm1XaWRnZXQgQ2hyb21lQ2xpZW50SGFpa3U6OnBsYXRmb3JtV2luZG93KCkg
Y29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBQbGF0Zm9ybVdpZGdl
dCgpOworfQorCit2b2lkIENocm9tZUNsaWVudEhhaWt1Ojpjb250ZW50c1NpemVDaGFuZ2VkKEZy
YW1lKiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6c2Nyb2xsUmVjdEludG9WaWV3KGNvbnN0IEludFJl
Y3QmLCBjb25zdCBTY3JvbGxWaWV3KikgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIENocm9tZUNsaWVudEhhaWt1OjphZGRUb0RpcnR5UmVnaW9uKGNvbnN0IEludFJl
Y3QmKQoreworfQorCit2b2lkIENocm9tZUNsaWVudEhhaWt1OjpzY3JvbGxCYWNraW5nU3RvcmUo
aW50LCBpbnQsIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JikKK3sKK30KKwordm9pZCBD
aHJvbWVDbGllbnRIYWlrdTo6dXBkYXRlQmFja2luZ1N0b3JlKCkKK3sKK30KKwordm9pZCBDaHJv
bWVDbGllbnRIYWlrdTo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVzdFJlc3Vs
dCYgaGl0LCB1bnNpZ25lZCAvKm1vZGlmaWVyRmxhZ3MqLykKK3sKKyAgICAvLyBTb21lIGV4dHJh
IGluZm8KKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIENocm9tZUNsaWVudEhhaWt1
OjpzZXRUb29sVGlwKGNvbnN0IFN0cmluZyYgdGlwKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OnNldFRvb2xUaXAoY29uc3QgU3RyaW5nJiB0
aXAsIFRleHREaXJlY3Rpb24pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBD
aHJvbWVDbGllbnRIYWlrdTo6cHJpbnQoRnJhbWUqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFt
ZSosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKKyNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQordm9pZCBDaHJvbWVD
bGllbnRXeDo6cmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisjZW5kaWYKKwordm9pZCBDaHJvbWVDbGllbnRIYWlr
dTo6cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiwgR2VvbG9jYXRp
b24qKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SGFp
a3U6OnJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgQ2hyb21lQ2xpZW50SGFpa3U6OnNldEN1cnNv
cihQbGF0Zm9ybUN1cnNvckhhbmRsZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKworLy8gTm90aWZpY2F0aW9uIHRoYXQgdGhlIGdpdmVuIGZvcm0gZWxl
bWVudCBoYXMgY2hhbmdlZC4gVGhpcyBmdW5jdGlvbgorLy8gd2lsbCBiZSBjYWxsZWQgZnJlcXVl
bnRseSwgc28gaGFuZGxpbmcgc2hvdWxkIGJlIHZlcnkgZmFzdC4KK3ZvaWQgQ2hyb21lQ2xpZW50
SGFpa3U6OmZvcm1TdGF0ZURpZENoYW5nZShjb25zdCBOb2RlKikKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCitQYXNzT3duUHRyPEhUTUxQYXJzZXJRdWlya3M+IENocm9tZUNsaWVudEhh
aWt1OjpjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBh
L1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oIGIvV2ViS2l0
L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMzBiZWRiYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9o
YWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oCkBAIC0wLDAgKzEsMTQ3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KKyAq
IENvcHlyaWdodCAoQykgMjAwNyBSeWFuIExlYXZlbmdvb2QgPGxlYXZlbmdvb2RAZ21haWwuY29t
PiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENocm9tZUNsaWVudEhh
aWt1X2gKKyNkZWZpbmUgQ2hyb21lQ2xpZW50SGFpa3VfaAorCisjaW5jbHVkZSAiQ2hyb21lQ2xp
ZW50LmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiUmVmQ291bnRlZC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBGbG9hdFJlY3Q7CisgICAgY2xhc3Mg
UGFnZTsKKyAgICBzdHJ1Y3QgRnJhbWVMb2FkUmVxdWVzdDsKKworICAgIGNsYXNzIENocm9tZUNs
aWVudEhhaWt1IDogcHVibGljIENocm9tZUNsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBD
aHJvbWVDbGllbnRIYWlrdSgpOworICAgICAgICB2aXJ0dWFsIH5DaHJvbWVDbGllbnRIYWlrdSgp
OworICAgICAgICB2b2lkIGNocm9tZURlc3Ryb3llZCgpOworCisgICAgICAgIHZvaWQgc2V0V2lu
ZG93UmVjdChjb25zdCBGbG9hdFJlY3QmKTsKKyAgICAgICAgRmxvYXRSZWN0IHdpbmRvd1JlY3Qo
KTsKKworICAgICAgICBGbG9hdFJlY3QgcGFnZVJlY3QoKTsKKworICAgICAgICBmbG9hdCBzY2Fs
ZUZhY3RvcigpOworCisgICAgICAgIHZvaWQgZm9jdXMoKTsKKyAgICAgICAgdm9pZCB1bmZvY3Vz
KCk7CisKKyAgICAgICAgYm9vbCBjYW5UYWtlRm9jdXMoRm9jdXNEaXJlY3Rpb24pOworICAgICAg
ICB2b2lkIHRha2VGb2N1cyhGb2N1c0RpcmVjdGlvbik7CisKKyAgICAgICAgUGFnZSogY3JlYXRl
V2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6Oldp
bmRvd0ZlYXR1cmVzJik7CisgICAgICAgIFBhZ2UqIGNyZWF0ZU1vZGFsRGlhbG9nKEZyYW1lKiwg
Y29uc3QgRnJhbWVMb2FkUmVxdWVzdCYpOworICAgICAgICB2b2lkIHNob3coKTsKKworICAgICAg
ICBib29sIGNhblJ1bk1vZGFsKCk7CisgICAgICAgIHZvaWQgcnVuTW9kYWwoKTsKKworICAgICAg
ICB2b2lkIHNldFRvb2xiYXJzVmlzaWJsZShib29sKTsKKyAgICAgICAgYm9vbCB0b29sYmFyc1Zp
c2libGUoKTsKKworICAgICAgICB2b2lkIHNldFN0YXR1c2JhclZpc2libGUoYm9vbCk7CisgICAg
ICAgIGJvb2wgc3RhdHVzYmFyVmlzaWJsZSgpOworCisgICAgICAgIHZvaWQgc2V0U2Nyb2xsYmFy
c1Zpc2libGUoYm9vbCk7CisgICAgICAgIGJvb2wgc2Nyb2xsYmFyc1Zpc2libGUoKTsKKworICAg
ICAgICB2b2lkIHNldE1lbnViYXJWaXNpYmxlKGJvb2wpOworICAgICAgICBib29sIG1lbnViYXJW
aXNpYmxlKCk7CisKKyAgICAgICAgdm9pZCBzZXRSZXNpemFibGUoYm9vbCk7CisKKyAgICAgICAg
dm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQg
aW50IGxpbmVOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBT
dHJpbmcmIHNvdXJjZUlEKTsKKyAgICAgICAgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKE1lc3Nh
Z2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlSUQpOworICAgICAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2Fn
ZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIGludCwgY29uc3QgU3RyaW5nJik7
CisKKyAgICAgICAgYm9vbCBjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKTsKKworICAg
ICAgICBib29sIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIEZyYW1lKiBmcmFtZSk7CisKKyAgICAgICAgdm9pZCBjbG9zZVdpbmRvd1Nvb24oKTsKKwor
ICAgICAgICB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChGcmFtZSosIGNvbnN0IFN0cmluZyYpOwor
ICAgICAgICBib29sIHJ1bkphdmFTY3JpcHRDb25maXJtKEZyYW1lKiwgY29uc3QgU3RyaW5nJik7
CisgICAgICAgIGJvb2wgcnVuSmF2YVNjcmlwdFByb21wdChGcmFtZSosIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUsIFN0cmluZyYgcmVzdWx0KTsKKyAg
ICAgICAgYm9vbCBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KCk7CisKKyAgICAgICAgdm9pZCBz
ZXRTdGF0dXNiYXJUZXh0KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOworICAgICAgICBib29sIHRh
YnNUb0xpbmtzKCkgY29uc3Q7CisgICAgICAgIEludFJlY3Qgd2luZG93UmVzaXplclJlY3QoKSBj
b25zdDsKKworICAgICAgICB2b2lkIHJlcGFpbnQoY29uc3QgSW50UmVjdCYsIGJvb2wgY29udGVu
dENoYW5nZWQsIGJvb2wgaW1tZWRpYXRlID0gZmFsc2UsIGJvb2wgcmVwYWludENvbnRlbnRPbmx5
ID0gZmFsc2UpOworICAgICAgICB2b2lkIHNjcm9sbChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0
YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7
CisgICAgICAgIEludFBvaW50IHNjcmVlblRvV2luZG93KGNvbnN0IEludFBvaW50JikgY29uc3Q7
CisgICAgICAgIEludFJlY3Qgd2luZG93VG9TY3JlZW4oY29uc3QgSW50UmVjdCYpIGNvbnN0Owor
ICAgICAgICBQbGF0Zm9ybVdpZGdldCBwbGF0Zm9ybVdpbmRvdygpIGNvbnN0OworICAgICAgICB2
b2lkIGNvbnRlbnRzU2l6ZUNoYW5nZWQoRnJhbWUqLCBjb25zdCBJbnRTaXplJikgY29uc3Q7Cisg
ICAgICAgIHZvaWQgc2Nyb2xsUmVjdEludG9WaWV3KGNvbnN0IEludFJlY3QmLCBjb25zdCBTY3Jv
bGxWaWV3KikgY29uc3Q7CisKKyAgICAgICAgdm9pZCBhZGRUb0RpcnR5UmVnaW9uKGNvbnN0IElu
dFJlY3QmKTsKKyAgICAgICAgdm9pZCBzY3JvbGxCYWNraW5nU3RvcmUoaW50LCBpbnQsIGNvbnN0
IEludFJlY3QmLCBjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZvaWQgdXBkYXRlQmFja2luZ1N0
b3JlKCk7CisKKyAgICAgICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRU
ZXN0UmVzdWx0JiwgdW5zaWduZWQgbW9kaWZpZXJGbGFncyk7CisKKyAgICAgICAgdm9pZCBzZXRU
b29sVGlwKGNvbnN0IFN0cmluZyYpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRUb29sVGlw
KGNvbnN0IFN0cmluZyYsIFRleHREaXJlY3Rpb24pOworCisgICAgICAgIHZvaWQgcHJpbnQoRnJh
bWUqKTsKKworICAgICAgICB2b2lkIGV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZSosIGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VOYW1lKTsKKworICAgICAgICAjaWYgRU5BQkxFKE9GRkxJTkVfV0VC
X0FQUExJQ0FUSU9OUykKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNp
emUoaW50NjRfdCBzcGFjZU5lZWRlZCk7CisgICAgICAgICNlbmRpZgorCisgICAgICAgIC8vIFRo
aXMgaXMgYW4gYXN5bmNocm9ub3VzIGNhbGwuIFRoZSBDaHJvbWVDbGllbnQgY2FuIGRpc3BsYXkg
VUkgYXNraW5nIHRoZSB1c2VyIGZvciBwZXJtaXNzaW9uCisgICAgICAgIC8vIHRvIHVzZSBHZW9s
b2NvY2F0aW9uLiBUaGUgQ2hyb21lQ2xpZW50IG11c3QgY2FsbCBHZW9sb2NhdGlvbjo6c2V0U2hv
dWxkQ2xlYXJDYWNoZSgpIGFwcHJvcHJpYXRlbHkuCisgICAgICAgIHZvaWQgcmVxdWVzdEdlb2xv
Y2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiwgR2VvbG9jYXRpb24qKTsKKworICAgICAg
ICB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KTsKKwor
ICAgICAgICBib29sIHNldEN1cnNvcihQbGF0Zm9ybUN1cnNvckhhbmRsZSk7CisKKyAgICAgICAg
Ly8gTm90aWZpY2F0aW9uIHRoYXQgdGhlIGdpdmVuIGZvcm0gZWxlbWVudCBoYXMgY2hhbmdlZC4g
VGhpcyBmdW5jdGlvbgorICAgICAgICAvLyB3aWxsIGJlIGNhbGxlZCBmcmVxdWVudGx5LCBzbyBo
YW5kbGluZyBzaG91bGQgYmUgdmVyeSBmYXN0LgorICAgICAgICB2b2lkIGZvcm1TdGF0ZURpZENo
YW5nZShjb25zdCBOb2RlKik7CisKKyAgICAgICAgUGFzc093blB0cjxIVE1MUGFyc2VyUXVpcmtz
PiBjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKCk7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYKKwotLSAKMS42LjMuMgoK
</data>
<flag name="review"
          id="17856"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33608</attachid>
            <date>2009-07-28 03:22:33 -0700</date>
            <delta_ts>2009-07-28 11:32:22 -0700</delta_ts>
            <desc>Patch to add FrameLoaderClient for Haiku WebCore support.</desc>
            <filename>Added-FrameLoaderClient-for-Haiku-WebCore-support.patch</filename>
            <type>text/plain</type>
            <size>44977</size>
            <attacher name="Maxime Simon">simon.maxime</attacher>
            
              <data encoding="base64">RnJvbSBjYTQ2OTM4YmJkYjM3NDMwMjgxMTFlODdlMDY4YjYwZGVmYTQxNjk5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgU2ltb24gPHNpbW9uLm1heGltZUBnbWFpbC5jb20+
CkRhdGU6IFR1ZSwgMjggSnVsIDIwMDkgMTI6MTk6MDAgKzAyMDAKU3ViamVjdDogW1BBVENIXSBB
ZGRlZCBGcmFtZUxvYWRlckNsaWVudCBmb3IgSGFpa3UgV2ViQ29yZSBzdXBwb3J0LgoKLS0tCiBX
ZWJLaXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMjkg
KysrCiAuLi4vV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5jcHAgICAgICB8
ICA4MjYgKysrKysrKysrKysrKysrKysrKysKIC4uLi9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEhhaWt1LmggIHwgIDI0OCArKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMTIw
MyBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYktp
dC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcAogY3JlYXRl
IG1vZGUgMTAwNjQ0IFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEhhaWt1LmgKCmRpZmYgLS1naXQgYS9XZWJLaXQvQ2hhbmdlTG9nIGIvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBjNzkxM2QyLi42Y2UwY2Y4IDEwMDY0NAotLS0gYS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzIgQEAKKzIwMDktMDctMjggIE1heGlt
ZSBTaW1vbiAgPHNpbW9uLm1heGltZUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgRnJhbWVMb2FkZXJDbGllbnQgZm9yIEhh
aWt1IFdlYkNvcmUgc3VwcG9ydC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI2OTUyCisKKyAgICAgICAgKiBoYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEhhaWt1LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudEhhaWt1OjpGcmFtZUxvYWRlckNsaWVudEhhaWt1KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNldEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNldFdlYlZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGV0YWNoRnJhbWVMb2FkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6aGFzV2ViVmlldyk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpoYXNCYWNrRm9yd2FyZExpc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6cmVzZXRCYWNrRm9yd2FyZExpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6cHJvdmlzaW9uYWxJ
dGVtSXNUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6
bWFrZVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
SGFpa3U6OmZvcmNlTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
SGFpa3U6OmZvcmNlTGF5b3V0Rm9yTm9uSFRNTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudEhhaWt1Ojp1cGRhdGVIaXN0b3J5Rm9yQ29tbWl0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnVwZGF0ZUhpc3RvcnlGb3JCYWNrRm9yd2FyZE5h
dmlnYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6dXBk
YXRlSGlzdG9yeUZvclJlbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dEhhaWt1Ojp1cGRhdGVIaXN0b3J5Rm9yU3RhbmRhcmRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnVwZGF0ZUhpc3RvcnlGb3JJbnRlcm5hbExvYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6dXBkYXRlSGlzdG9yeUFm
dGVyQ2xpZW50UmVkaXJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRI
YWlrdTo6c2V0Q29waWVzT25TY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRIYWlrdTo6dG9rZW5Gb3JMb2FkRXJyb3JSZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudEhhaWt1OjpyZXNldEFmdGVyTG9hZEVycm9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRvTm90UmVzZXRBZnRlckxvYWRFcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojp3aWxsQ2xvc2VEb2N1
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkZXRhY2hl
ZEZyb21QYXJlbnQyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6
OmRldGFjaGVkRnJvbVBhcmVudDMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRIYWlrdTo6ZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRIYWlrdTo6ZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0
Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hXaWxsQ2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZFJl
Y2VpdmVUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpk
aXNwYXRjaERpZENvbW1pdExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRIYWlrdTo6ZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkRmlyc3RMYXlv
dXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hE
aWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hTaG93KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50SGFpa3U6OmNhbmNlbFBvbGljeUNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0pOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRMb2FkTWFpblJl
c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnJldmVy
dFRvUHJvdmlzaW9uYWxTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dEhhaWt1Ojpwb3N0UHJvZ3Jlc3NTdGFydGVkTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnBvc3RQcm9ncmVzc0VzdGltYXRlQ2hhbmdlZE5v
dGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpw
b3N0UHJvZ3Jlc3NGaW5pc2hlZE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudEhhaWt1Ojpwcm9ncmVzc1N0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6cHJvZ3Jlc3NDb21wbGV0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6c2V0TWFpbkZyYW1lRG9jdW1lbnRSZWFkeSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojp3aWxsQ2hhbmdlVGl0
bGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlkQ2hhbmdl
VGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZmluaXNo
ZWRMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmNh
blNob3dNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1
OjpyZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudEhhaWt1OjpnZW5lcmF0ZWRNSU1FVHlwZUZvclVSTFNjaGVtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpmcmFtZUxvYWRDb21wbGV0
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6c2F2ZVZpZXdT
dGF0ZVRvSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpy
ZXN0b3JlVmlld1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFp
a3U6OnJlc3RvcmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpwcm92aXNpb25hbExvYWRTdGFydGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNob3VsZFRyZWF0VVJMQXNTYW1l
QXNDdXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmFk
ZEhpc3RvcnlJdGVtRm9yRnJhZ21lbnRTY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRIYWlrdTo6ZGlkRmluaXNoTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudEhhaWt1OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNldFRpdGxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnVzZXJBZ2VudCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZFJlY2VpdmVJY29u
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmZyYW1lTG9hZGVy
RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmNh
bkhhbmRsZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlr
dTo6cGFydENsZWFyZWRJbkJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50SGFpa3U6OnVwZGF0ZUdsb2JhbEhpc3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRIYWlrdTo6dXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6c2hvdWxkR29Ub0hpc3RvcnlJ
dGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNhdmVTY3Jv
bGxQb3NpdGlvbkFuZFZpZXdTdGF0ZVRvSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudEhhaWt1OjpjYW5DYWNoZVBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRIYWlrdTo6c2V0TWFpbkRvY3VtZW50RXJyb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6Y29tbWl0dGVkTG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpjYW5jZWxsZWRFcnJvcik6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpibG9ja2VkRXJyb3IpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6Y2Fubm90U2hvd1VSTEVycm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmludGVycnVwdEZvclBvbGlj
eUNoYW5nZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6
OmNhbm5vdFNob3dNSU1FVHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50SGFpa3U6OmZpbGVEb2VzTm90RXhpc3RFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudEhhaWt1OjpzaG91bGRGYWxsQmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpjcmVhdGVEb2N1bWVudExvYWRlcik6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpkb3dubG9hZCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojphc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFs
UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNw
YXRjaFdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dEhhaWt1OjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNw
YXRjaERpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkUmVjZWl2
ZUNvbnRlbnRMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlr
dTo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVt
b3J5Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlz
cGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZEZh
aWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3Bh
dGNoQ3JlYXRlUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnN0YXJ0RG93bmxvYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6Y3JlYXRlRnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6b2JqZWN0Q29udGVudFR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6Y3JlYXRlUGx1
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnJlZGlyZWN0
RGF0YVRvUGx1Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6
OnBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRIYWlrdTo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpvdmVycmlkZU1lZGlhVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojp3aW5kb3dPYmplY3RDbGVhcmVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRvY3VtZW50RWxlbWVudEF2
YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaWRQ
ZXJmb3JtRmlyc3ROYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50SGFpa3U6OnJlZ2lzdGVyRm9ySWNvbk5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojp0cmFuc2l0aW9uVG9D
b21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRIYWlrdTo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSk6CisgICAgICAgICog
aGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6On5GcmFtZUxvYWRlckNsaWVu
dEhhaWt1KToKKwogMjAwOS0wNy0yNCAgQW5kcmVpIFBvcGVzY3UgIDxhbmRyZWlwQGdvb2dsZS5j
b20+CiAKICAgICAgICAgQXBwbGljYXRpb25DYWNoZSBzaG91bGQgaGF2ZSBzaXplIGxpbWl0CmRp
ZmYgLS1naXQgYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRI
YWlrdS5jcHAgYi9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRI
YWlrdS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRjMGRiMAotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEhhaWt1LmNwcApAQCAtMCwwICsxLDgyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NiBEb24gR2lic29uIDxkZ2lic29uNzdAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA2
IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBD
b21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NyBUcm9sbHRlY2ggQVNBCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgUnlhbiBMZWF2ZW5nb29kIDxs
ZWF2ZW5nb29kQGdtYWlsLmNvbT4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOSBNYXhpbWUgU2ltb24gPHNpbW9uLm1heGltZUBnbWFpbC5jb20+IEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGcmFt
ZUxvYWRlckNsaWVudEhhaWt1LmgiCisKKyNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgorI2lu
Y2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJGcmFt
ZVRyZWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJIVE1MRnJhbWVPd25l
ckVsZW1lbnQuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBhZ2Uu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVxdWVz
dC5oIgorI2luY2x1ZGUgIldlYlZpZXcuaCIKKworI2luY2x1ZGUgPE1lc3NhZ2UuaD4KKyNpbmNs
dWRlIDxTdHJpbmcuaD4KKworI2luY2x1ZGUgPGFwcC9NZXNzZW5nZXIuaD4KKworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OkZyYW1lTG9hZGVyQ2xpZW50
SGFpa3UoKQorICAgIDogbV9mcmFtZSgwKQoreworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
SGFpa3U6OnNldEZyYW1lKEZyYW1lKiBmcmFtZSkKK3sKKyAgICBtX2ZyYW1lID0gZnJhbWU7Cit9
CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6c2V0V2ViVmlldyhXZWJWaWV3KiB3ZWJ2
aWV3KQoreworICAgIG1fd2ViVmlldyA9IHdlYnZpZXc7CisgICAgbV9tZXNzZW5nZXIgPSBuZXcg
Qk1lc3NlbmdlcihtX3dlYlZpZXcpOworICAgIEFTU0VSVChtX21lc3Nlbmdlci0+SXNWYWxpZCgp
KTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkZXRhY2hGcmFtZUxvYWRlcigp
Cit7CisgICAgbV9mcmFtZSA9IDA7Cit9CisKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6
aGFzV2ViVmlldygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViVmlldzsKK30KKworYm9vbCBG
cmFtZUxvYWRlckNsaWVudEhhaWt1OjpoYXNCYWNrRm9yd2FyZExpc3QoKSBjb25zdAoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRIYWlrdTo6cmVzZXRCYWNrRm9yd2FyZExpc3QoKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6cHJvdmlzaW9uYWxJdGVt
SXNUYXJnZXQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6Om1ha2VSZXByZXNlbnRhdGlv
bihEb2N1bWVudExvYWRlciopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBG
cmFtZUxvYWRlckNsaWVudEhhaWt1Ojpmb3JjZUxheW91dCgpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpmb3JjZUxheW91dEZvck5v
bkhUTUwoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJD
bGllbnRIYWlrdTo6dXBkYXRlSGlzdG9yeUZvckNvbW1pdCgpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojp1cGRhdGVIaXN0b3J5Rm9y
QmFja0ZvcndhcmROYXZpZ2F0aW9uKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnVwZGF0ZUhpc3RvcnlGb3JSZWxvYWQoKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6
dXBkYXRlSGlzdG9yeUZvclN0YW5kYXJkTG9hZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojp1cGRhdGVIaXN0b3J5Rm9ySW50ZXJu
YWxMb2FkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50SGFpa3U6OnVwZGF0ZUhpc3RvcnlBZnRlckNsaWVudFJlZGlyZWN0KCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNldENv
cGllc09uU2Nyb2xsKCkKK3sKKyAgICAvLyBhcHBhcmVudGx5IG1hYyBzcGVjaWZpYworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK0xvYWRFcnJvclJlc2V0VG9rZW4qIEZyYW1lTG9hZGVyQ2xp
ZW50SGFpa3U6OnRva2VuRm9yTG9hZEVycm9yUmVzZXQoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6cmVz
ZXRBZnRlckxvYWRFcnJvcihMb2FkRXJyb3JSZXNldFRva2VuKikKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRvTm90UmVzZXRBZnRl
ckxvYWRFcnJvcihMb2FkRXJyb3JSZXNldFRva2VuKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OndpbGxDbG9zZURvY3VtZW50KCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFp
a3U6OmRldGFjaGVkRnJvbVBhcmVudDIoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGV0YWNoZWRGcm9tUGFyZW50MygpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpk
aXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50cygpCit7CisgICAgaWYgKG1fd2ViVmlldykgewor
ICAgICAgICBCTWVzc2FnZSBtZXNzYWdlKExPQURfT05MT0FEX0hBTkRMRSk7CisgICAgICAgIG1l
c3NhZ2UuQWRkU3RyaW5nKCJ1cmwiLCBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIo
KS0+cmVxdWVzdCgpLnVybCgpLnN0cmluZygpKTsKKyAgICAgICAgbV9tZXNzZW5nZXItPlNlbmRN
ZXNzYWdlKCZtZXNzYWdlKTsKKyAgICB9Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlr
dTo6ZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlr
dTo6ZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaFdpbGxQZXJm
b3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgS1VSTCYsIGRvdWJsZSBpbnRlcnZhbCwgZG91YmxlIGZp
cmVEYXRlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJD
bGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlz
cGF0Y2hXaWxsQ2xvc2UoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJh
bWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpCit7
CisgICAgaWYgKG1fd2ViVmlldykgeworICAgICAgICBCTWVzc2FnZSBtZXNzYWdlKExPQURfTkVH
T0NJQVRJTkcpOworICAgICAgICBtZXNzYWdlLkFkZFN0cmluZygidXJsIiwgbV9mcmFtZS0+bG9h
ZGVyKCktPnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKS0+cmVxdWVzdCgpLnVybCgpLnN0cmlu
ZygpKTsKKyAgICAgICAgbV9tZXNzZW5nZXItPlNlbmRNZXNzYWdlKCZtZXNzYWdlKTsKKyAgICB9
Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0
bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3sKKyAgICBpZiAobV93ZWJWaWV3KSB7CisgICAgICAg
IG1fd2ViVmlldy0+U2V0UGFnZVRpdGxlKHRpdGxlKTsKKworICAgICAgICBCTWVzc2FnZSBtZXNz
YWdlKFRJVExFX0NIQU5HRUQpOworICAgICAgICBtZXNzYWdlLkFkZFN0cmluZygidGl0bGUiLCB0
aXRsZSk7CisgICAgICAgIG1fbWVzc2VuZ2VyLT5TZW5kTWVzc2FnZSgmbWVzc2FnZSk7CisgICAg
fQorfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkQ29tbWl0TG9h
ZCgpCit7CisgICAgaWYgKG1fd2ViVmlldykgeworICAgICAgICBCTWVzc2FnZSBtZXNzYWdlKExP
QURfVFJBTlNGRVJSSU5HKTsKKyAgICAgICAgbWVzc2FnZS5BZGRTdHJpbmcoInVybCIsIG1fZnJh
bWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5yZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkp
OworICAgICAgICBtX21lc3Nlbmdlci0+U2VuZE1lc3NhZ2UoJm1lc3NhZ2UpOworICAgIH0KK30K
Kwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50
TG9hZCgpCit7CisgICAgaWYgKG1fd2ViVmlldykgeworICAgICAgICBCTWVzc2FnZSBtZXNzYWdl
KExPQURfRE9DX0NPTVBMRVRFRCk7CisgICAgICAgIG1lc3NhZ2UuQWRkU3RyaW5nKCJ1cmwiLCBt
X2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkuc3RyaW5nKCkpOworICAgICAgICBtX21lc3Nlbmdlci0+
U2VuZE1lc3NhZ2UoJm1lc3NhZ2UpOworICAgIH0KK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVu
dEhhaWt1OjpkaXNwYXRjaERpZEZpbmlzaExvYWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRGaXJzdExheW91
dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVu
dEhhaWt1OjpkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNw
YXRjaFNob3coKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRIYWlrdTo6Y2FuY2VsUG9saWN5Q2hlY2soKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hXaWxsU3VibWl0
Rm9ybShGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4p
Cit7CisgICAgLy8gRklYTUU6IFNlbmQgYW4gZXZlbnQgdG8gYWxsb3cgZm9yIGFsZXJ0cyBhbmQg
Y2FuY2VsbGF0aW9uLgorICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgICht
X2ZyYW1lLT5sb2FkZXIoKS0+KmZ1bmN0aW9uKShQb2xpY3lVc2UpOworfQorCit2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkTG9hZE1haW5SZXNvdXJjZShEb2N1bWVudExv
YWRlciopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNs
aWVudEhhaWt1OjpyZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUoRG9jdW1lbnRMb2FkZXIqKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6
cG9zdFByb2dyZXNzU3RhcnRlZE5vdGlmaWNhdGlvbigpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpwb3N0UHJvZ3Jlc3NFc3RpbWF0
ZUNoYW5nZWROb3RpZmljYXRpb24oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6cG9zdFByb2dyZXNzRmluaXNoZWROb3RpZmljYXRp
b24oKQoreworICAgIGlmIChtX3dlYlZpZXcpIHsKKyAgICAgICAgQk1lc3NhZ2UgbWVzc2FnZShM
T0FEX0RMX0NPTVBMRVRFRCk7CisgICAgICAgIG1lc3NhZ2UuQWRkU3RyaW5nKCJ1cmwiLCBtX2Zy
YW1lLT5sb2FkZXIoKS0+dXJsKCkuc3RyaW5nKCkpOworICAgICAgICBtX21lc3Nlbmdlci0+U2Vu
ZE1lc3NhZ2UoJm1lc3NhZ2UpOworICAgIH0KK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhh
aWt1Ojpwcm9ncmVzc1N0YXJ0ZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKKwor
dm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpwcm9ncmVzc0NvbXBsZXRlZCgpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKworCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNl
dE1haW5GcmFtZURvY3VtZW50UmVhZHkoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIC8vIHRoaXMgaXMgb25seSBpbnRlcmVzdGluZyBvbmNlIHdlIHByb3ZpZGUgYW4gZXh0ZXJu
YWwgQVBJIGZvciB0aGUgRE9NCit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6d2ls
bENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpZENoYW5nZVRpdGxlKERvY3VtZW50
TG9hZGVyKiBkb2NMb2FkZXIpCit7CisgICAgc2V0VGl0bGUoZG9jTG9hZGVyLT50aXRsZSgpLCBk
b2NMb2FkZXItPnVybCgpKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpmaW5p
c2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6Y2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0
cmluZyYgTUlNRVR5cGUpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpyZXByZXNlbnRhdGlv
bkV4aXN0c0ZvclVSTFNjaGVtZShjb25zdCBTdHJpbmcmIFVSTFNjaGVtZSkgY29uc3QKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworU3RyaW5nIEZyYW1l
TG9hZGVyQ2xpZW50SGFpa3U6OmdlbmVyYXRlZE1JTUVUeXBlRm9yVVJMU2NoZW1lKGNvbnN0IFN0
cmluZyYgVVJMU2NoZW1lKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIFN0cmluZygpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmZyYW1lTG9h
ZENvbXBsZXRlZCgpCit7CisgICAgaWYgKG1fd2ViVmlldy0+TG9ja0xvb3BlcigpKSB7CisgICAg
ICAgIG1fd2ViVmlldy0+RHJhdyhtX3dlYlZpZXctPkJvdW5kcygpKTsKKyAgICAgICAgbV93ZWJW
aWV3LT5VbmxvY2tMb29wZXIoKTsKKyAgICB9Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRI
YWlrdTo6c2F2ZVZpZXdTdGF0ZVRvSXRlbShIaXN0b3J5SXRlbSopCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpyZXN0b3JlVmlld1N0
YXRlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50SGFpa3U6OnJlc3RvcmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZSgpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpwcm92aXNp
b25hbExvYWRTdGFydGVkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIEZy
YW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNob3VsZFRyZWF0VVJMQXNTYW1lQXNDdXJyZW50KGNvbnN0
IEtVUkwmKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmFkZEhpc3RvcnlJdGVtRm9yRnJh
Z21lbnRTY3JvbGwoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVM
b2FkZXJDbGllbnRIYWlrdTo6ZGlkRmluaXNoTG9hZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpwcmVwYXJlRm9yRGF0YVNvdXJj
ZVJlcGxhY2VtZW50KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50SGFpa3U6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtV
UkwmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1N0cmluZyBGcmFtZUxvYWRlckNs
aWVudEhhaWt1Ojp1c2VyQWdlbnQoY29uc3QgS1VSTCYpCit7CisgICAgcmV0dXJuIFN0cmluZygi
TW96aWxsYS81LjAgKGNvbXBhdGlibGU7IFU7IEluZmlOZXQgMC4xOyBIYWlrdSkgQXBwbGVXZWJL
aXQvNDIwKyAoS0hUTUwsIGxpa2UgR2Vja28pIik7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGll
bnRIYWlrdTo6ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpmcmFtZUxvYWRlckRlc3Ryb3ll
ZCgpCit7CisgICAgbV9mcmFtZSA9IDA7CisgICAgbV9tZXNzZW5nZXIgPSAwOworICAgIGRlbGV0
ZSB0aGlzOworfQorCitib29sIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmNhbkhhbmRsZVJlcXVl
c3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3QKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
SGFpa3U6OnBhcnRDbGVhcmVkSW5CZWdpbigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6
OnVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCitib29sIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNob3VsZEdvVG9IaXN0b3J5
SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpz
YXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0q
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnRI
YWlrdTo6Y2FuQ2FjaGVQYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Zv
aWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6c2V0TWFpbkRvY3VtZW50RXJyb3IoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmNvbW1p
dHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCkKK3sKKyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlciA9IGxvYWRlci0+ZnJhbWVMb2FkZXIoKTsKKyAg
ICBmcmFtZUxvYWRlci0+c2V0RW5jb2RpbmcobV9yZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCks
IGZhbHNlKTsKKyAgICBmcmFtZUxvYWRlci0+YWRkRGF0YShkYXRhLCBsZW5ndGgpOworfQorCitX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmNhbmNlbGxlZEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0cmluZygpLCBXZWJLaXRF
cnJvckNhbm5vdFNob3dVUkwsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIFN0cmluZygpKTsKK30K
KworV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpibG9ja2Vk
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nKCksIFdlYktpdEVycm9yQ2Fu
bm90U2hvd1VSTCwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgU3RyaW5nKCkpOworfQorCitXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmNhbm5vdFNob3dVUkxF
cnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nKCksIFdlYktpdEVycm9yQ2Fubm90U2hvd1VSTCwgcmVx
dWVzdC51cmwoKS5zdHJpbmcoKSwgU3RyaW5nKCkpOworfQorCitXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmludGVycnVwdEZvclBvbGljeUNoYW5nZUVycm9y
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0cmluZygpLCBXZWJLaXRFcnJv
ckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsIHJlcXVlc3QudXJsKCkuc3RyaW5n
KCksIFN0cmluZygpKTsKK30KKworV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNs
aWVudEhhaWt1OjpjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBSZXNvdXJjZUVycm9yKFN0cmluZygpLCBXZWJLaXRFcnJvckNhbm5vdFNob3dNSU1FVHlwZSwg
cmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIFN0cmluZygpKTsKK30KKworV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoKSwgV2ViS2l0RXJyb3JD
YW5ub3RTaG93VVJMLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgU3RyaW5nKCkpOworfQorCiti
b29sIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNob3VsZEZhbGxCYWNrKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitXVEY6OlBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IEZyYW1lTG9h
ZGVyQ2xpZW50SGFpa3U6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1
YnN0aXR1dGVEYXRhKQoreworICAgIHJldHVybiBEb2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVl
c3QsIHN1YnN0aXR1dGVEYXRhKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpk
b3dubG9hZChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVl
c3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBG
cmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExv
YWRlciosIHVuc2lnbmVkIGxvbmcsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9v
bCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShEb2N1
bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0
Y2hEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2FkZXIqLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBsb25nLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhh
aWt1OjpkaXNwYXRjaERpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9h
ZGVyKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nLCBjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRl
ckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciog
bG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fcmVzcG9uc2UgPSByZXNwb25zZTsK
KyAgICBtX2ZpcnN0RGF0YSA9IHRydWU7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlr
dTo6ZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChEb2N1bWVudExvYWRlciogbG9hZGVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGxvbmcgaWQsIGludCBsZW5ndGgpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZEZpbmlz
aExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRG
YWlsTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291
cmNlRXJyb3ImKQoreworICAgIGlmIChtX3dlYlZpZXcpIHsKKyAgICAgICAgQk1lc3NhZ2UgbWVz
c2FnZShMT0FEX0ZBSUxFRCk7CisgICAgICAgIG1lc3NhZ2UuQWRkU3RyaW5nKCJ1cmwiLCBtX2Zy
YW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+cmVxdWVzdCgpLnVybCgpLnN0cmluZygp
KTsKKyAgICAgICAgbV9tZXNzZW5nZXItPlNlbmRNZXNzYWdlKCZtZXNzYWdlKTsKKyAgICB9Cit9
CisKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VG
cm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgaW50KQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVz
dCh1bnNpZ25lZCBsb25nLCBjb25zdCBTY3JpcHRTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRGYWls
UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRGYWls
TG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
CitGcmFtZSogRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hDcmVhdGVQYWdlKCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBGcmFt
ZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck1JTUVUeXBlKEZyYW1l
UG9saWN5RnVuY3Rpb24gZnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBtaW1ldHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgaWYgKCFtX2ZyYW1lKQor
ICAgICAgICByZXR1cm47CisKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIChtX2ZyYW1lLT5s
b2FkZXIoKS0+KmZ1bmN0aW9uKShQb2xpY3lVc2UpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50SGFpa3U6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lUG9s
aWN5RnVuY3Rpb24gZnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24m
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJiB0YXJnZXROYW1lKQoreworICAg
IGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fd2ViVmlldykgewor
ICAgICAgICBCTWVzc2FnZSBtZXNzYWdlKE5FV19XSU5ET1dfUkVRVUVTVEVEKTsKKyAgICAgICAg
bWVzc2FnZS5BZGRTdHJpbmcoInVybCIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkpOworICAgICAg
ICBpZiAobV9tZXNzZW5nZXItPlNlbmRNZXNzYWdlKCZtZXNzYWdlKSkgeworICAgICAgICAgICAg
KG1fZnJhbWUtPmxvYWRlcigpLT4qZnVuY3Rpb24pKFBvbGljeUlnbm9yZSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICAobV9mcmFtZS0+bG9hZGVyKCktPipm
dW5jdGlvbikoUG9saWN5VXNlKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpk
aXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlv
biBmdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBhc3NSZWZQdHI8Rm9ybVN0YXRlPikKK3sKKyAgICBpZiAoIW1fZnJhbWUgfHwgIWZ1bmN0aW9u
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV93ZWJWaWV3KSB7CisgICAgICAgIEJNZXNz
YWdlIG1lc3NhZ2UoTkFWSUdBVElPTl9SRVFVRVNURUQpOworICAgICAgICBtZXNzYWdlLkFkZFN0
cmluZygidXJsIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSk7CisgICAgICAgIG1fbWVzc2VuZ2Vy
LT5TZW5kTWVzc2FnZSgmbWVzc2FnZSk7CisKKyAgICAgICAgKG1fZnJhbWUtPmxvYWRlcigpLT4q
ZnVuY3Rpb24pKFBvbGljeVVzZSk7CisgICAgfQorfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
SGFpa3U6OmRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJv
ciYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVu
dEhhaWt1OjpzdGFydERvd25sb2FkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKworUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRI
YWlrdTo6Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIVE1M
RnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJv
b2wgYWxsb3dzU2Nyb2xsaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KQorewor
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXBwbHkgdGhlIHJpZ2h0IHByb3BlcnR5IHRvIHRoZSBm
cmFtZVZpZXcuIChzY3JvbGxiYXIsbWFyZ2lucykKKworICAgIFJlZlB0cjxGcmFtZT4gY2hpbGRG
cmFtZSA9IEZyYW1lOjpjcmVhdGUobV9mcmFtZS0+cGFnZSgpLCBvd25lckVsZW1lbnQsIHRoaXMp
OworICAgIHNldEZyYW1lKGNoaWxkRnJhbWUuZ2V0KCkpOworCisgICAgUmVmUHRyPEZyYW1lVmll
dz4gZnJhbWVWaWV3ID0gRnJhbWVWaWV3OjpjcmVhdGUoY2hpbGRGcmFtZS5nZXQoKSk7CisKKyAg
ICBmcmFtZVZpZXctPnNldEFsbG93c1Njcm9sbGluZyhhbGxvd3NTY3JvbGxpbmcpOworICAgIGZy
YW1lVmlldy0+ZGVyZWYoKTsKKyAgICBjaGlsZEZyYW1lLT5zZXRWaWV3KGZyYW1lVmlldy5nZXQo
KSk7CisgICAgY2hpbGRGcmFtZS0+aW5pdCgpOworCisgICAgY2hpbGRGcmFtZS0+dHJlZSgpLT5z
ZXROYW1lKG5hbWUpOworICAgIG1fZnJhbWUtPnRyZWUoKS0+YXBwZW5kQ2hpbGQoY2hpbGRGcmFt
ZSk7CisKKyAgICBjaGlsZEZyYW1lLT5sb2FkZXIoKS0+bG9hZFVSTEludG9DaGlsZEZyYW1lKHVy
bCwgcmVmZXJyZXIsIGNoaWxkRnJhbWUuZ2V0KCkpOworCisgICAgLy8gVGhlIGZyYW1lJ3Mgb25s
b2FkIGhhbmRsZXIgbWF5IGhhdmUgcmVtb3ZlZCBpdCBmcm9tIHRoZSBkb2N1bWVudC4KKyAgICBp
ZiAoIWNoaWxkRnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgcmV0dXJuIGNoaWxkRnJhbWUucmVsZWFzZSgpOworCisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gMDsKK30KKworT2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXJDbGllbnRI
YWlrdTo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIE9iamVjdENvbnRl
bnRUeXBlKCk7Cit9CisKK1Bhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudEhhaWt1
OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
S1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25z
dCBTdHJpbmcmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGxvYWRNYW51YWxseSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiAwOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnJlZGlyZWN0
RGF0YVRvUGx1Z2luKFdpZGdldCogcGx1Z2luV2lkZ2V0KQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuOworfQorCitSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50SGFp
a3U6OnBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihTdHJpbmcoKSwgV2ViS2l0RXJyb3JDYW5ub3RMb2FkUGx1Z0luLCByZXNwb25zZS51cmwoKS5z
dHJpbmcoKSwgU3RyaW5nKCkpOworfQorCitQYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJD
bGllbnRIYWlrdTo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFw
cGxldEVsZW1lbnQqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEtVUkwmIGJhc2VVUkwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
cmFtTmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK1N0cmluZyBGcmFtZUxvYWRlckNsaWVu
dEhhaWt1OjpvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlr
dTo6d2luZG93T2JqZWN0Q2xlYXJlZCgpCit7CisgICAgaWYgKG1fd2ViVmlldykgeworICAgICAg
ICBCTWVzc2FnZSBtZXNzYWdlKEpBVkFTQ1JJUFRfV0lORE9XX09CSkVDVF9DTEVBUkVEKTsKKyAg
ICAgICAgbV9tZXNzZW5nZXItPlNlbmRNZXNzYWdlKCZtZXNzYWdlKTsKKyAgICB9Cit9CisKK3Zv
aWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZG9jdW1lbnRFbGVtZW50QXZhaWxhYmxlKCkKK3sK
K30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaWRQZXJmb3JtRmlyc3ROYXZpZ2F0
aW9uKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50SGFpa3U6OnJlZ2lzdGVyRm9ySWNvbk5vdGlmaWNhdGlvbihib29sIGxpc3RlbikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFp
a3U6OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnRyYW5z
aXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojp0cmFuc2l0
aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKK3sKKyAgICBBU1NFUlQobV9mcmFtZSk7CisgICAg
QVNTRVJUKG1fd2ViVmlldyk7CisKKyAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwor
ICAgIEFTU0VSVChwYWdlKTsKKworICAgIGJvb2wgaXNNYWluRnJhbWUgPSBtX2ZyYW1lID09IHBh
Z2UtPm1haW5GcmFtZSgpOworCisgICAgbV9mcmFtZS0+c2V0VmlldygwKTsKKworICAgIFJlZlB0
cjxGcmFtZVZpZXc+IGZyYW1lVmlldzsKKyAgICBpZiAoaXNNYWluRnJhbWUpIHsKKyAgICAgICAg
aWYgKG1fd2ViVmlldy0+TG9ja0xvb3BlcigpKSB7CisgICAgICAgICAgICAvLyBXZSBsb2NrIHRo
ZSBsb29wZXIgaW4gb3JkZXIgdG8gZ2V0IHRoZSBib3VuZHMgb2YgdGhlIFdlYlZpZXcuCisgICAg
ICAgICAgICBmcmFtZVZpZXcgPSBGcmFtZVZpZXc6OmNyZWF0ZShtX2ZyYW1lLCBJbnRSZWN0KG1f
d2ViVmlldy0+Qm91bmRzKCkpLnNpemUoKSk7CisgICAgICAgICAgICBtX3dlYlZpZXctPlVubG9j
a0xvb3BlcigpOworICAgICAgICB9CisgICAgfSBlbHNlCisgICAgICAgIGZyYW1lVmlldyA9IEZy
YW1lVmlldzo6Y3JlYXRlKG1fZnJhbWUpOworCisgICAgQVNTRVJUKGZyYW1lVmlldyk7CisgICAg
bV9mcmFtZS0+c2V0VmlldyhmcmFtZVZpZXcpOworCisgICAgZnJhbWVWaWV3LT5zZXRQbGF0Zm9y
bVdpZGdldChtX3dlYlZpZXcpOworCisgICAgaWYgKEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3du
ZXIgPSBtX2ZyYW1lLT5vd25lckVsZW1lbnQoKSkKKyAgICAgICAgbV9mcmFtZS0+dmlldygpLT5z
ZXRTY3JvbGxiYXJNb2Rlcyhvd25lci0+c2Nyb2xsaW5nTW9kZSgpLCBvd25lci0+c2Nyb2xsaW5n
TW9kZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9XZWJL
aXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5oIGIvV2ViS2l0
L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2FmMzIxCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
S2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaApAQCAtMCww
ICsxLDI0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2luIDx6YWNrQGtk
ZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgUnlhbiBMZWF2ZW5nb29kIDxs
ZWF2ZW5nb29kQGdtYWlsLmNvbT4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBGcmFtZUxvYWRlckNsaWVudEhhaWt1X2gKKyNkZWZpbmUgRnJhbWVMb2FkZXJDbGllbnRI
YWlrdV9oCisKKyNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVy
Q2xpZW50LmgiCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2Uu
aCIKKworY2xhc3MgQk1lc3NlbmdlcjsKK2NsYXNzIFdlYlZpZXc7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKyAgICBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKKyAgICBjbGFzcyBEb2N1
bWVudExvYWRlcjsKKyAgICBjbGFzcyBFbGVtZW50OworICAgIGNsYXNzIEZvcm1TdGF0ZTsKKyAg
ICBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uOworICAgIGNsYXNzIFJlc291cmNlTG9hZGVyOworICAg
IGNsYXNzIFN0cmluZzsKKworICAgIHN0cnVjdCBMb2FkRXJyb3JSZXNldFRva2VuOworCisgICAg
Y2xhc3MgRnJhbWVMb2FkZXJDbGllbnRIYWlrdSA6IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7
CisgICAgcHVibGljOgorICAgICAgICBGcmFtZUxvYWRlckNsaWVudEhhaWt1KCk7CisgICAgICAg
IH5GcmFtZUxvYWRlckNsaWVudEhhaWt1KCkgeyB9CisgICAgICAgIHZvaWQgc2V0RnJhbWUoRnJh
bWUqKTsKKyAgICAgICAgdm9pZCBzZXRXZWJWaWV3KFdlYlZpZXcqKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGRldGFjaEZyYW1lTG9hZGVyKCk7CisKKyAgICAgICAgdmlydHVhbCBib29sIGhhc1dl
YlZpZXcoKSBjb25zdDsKKworICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzQmFja0ZvcndhcmRMaXN0
KCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZXNldEJhY2tGb3J3YXJkTGlzdCgpOwor
CisgICAgICAgIHZpcnR1YWwgYm9vbCBwcm92aXNpb25hbEl0ZW1Jc1RhcmdldCgpIGNvbnN0Owor
CisgICAgICAgIHZpcnR1YWwgdm9pZCBtYWtlUmVwcmVzZW50YXRpb24oRG9jdW1lbnRMb2FkZXIq
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGZvcmNlTGF5b3V0KCk7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBmb3JjZUxheW91dEZvck5vbkhUTUwoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlSGlzdG9yeUZvckNvbW1pdCgpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVIaXN0
b3J5Rm9yQmFja0ZvcndhcmROYXZpZ2F0aW9uKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVIaXN0b3J5Rm9yUmVsb2FkKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVIaXN0b3J5
Rm9yU3RhbmRhcmRMb2FkKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVIaXN0b3J5Rm9y
SW50ZXJuYWxMb2FkKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUhpc3RvcnlBZnRl
ckNsaWVudFJlZGlyZWN0KCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldENvcGllc09uU2Ny
b2xsKCk7CisKKyAgICAgICAgdmlydHVhbCBMb2FkRXJyb3JSZXNldFRva2VuKiB0b2tlbkZvckxv
YWRFcnJvclJlc2V0KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZXNldEFmdGVyTG9hZEVycm9y
KExvYWRFcnJvclJlc2V0VG9rZW4qKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRvTm90UmVzZXRB
ZnRlckxvYWRFcnJvcihMb2FkRXJyb3JSZXNldFRva2VuKik7CisKKyAgICAgICAgdmlydHVhbCB2
b2lkIHdpbGxDbG9zZURvY3VtZW50KCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGRldGFjaGVk
RnJvbVBhcmVudDIoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRldGFjaGVkRnJvbVBhcmVudDMo
KTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVMb2FkZXJEZXN0cm95ZWQoKTsKKworICAg
ICAgICB2aXJ0dWFsIGJvb2wgY2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KSBjb25zdDsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRF
dmVudHMoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZENhbmNlbENsaWVudFJlZGlyZWN0KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgS1VSTCYsIGRvdWJsZSBpbnRlcnZhbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
b3VibGUgZmlyZURhdGUpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VM
b2NhdGlvbldpdGhpblBhZ2UoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENs
b3NlKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcm
IHRpdGxlKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpOworICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKTsKKworICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hTaG93KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxQb2xp
Y3lDaGVjaygpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRGb3Jt
KEZyYW1lUG9saWN5RnVuY3Rpb24sIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPik7CisKKyAgICAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTG9hZE1haW5SZXNvdXJjZShEb2N1bWVudExvYWRlciop
OworICAgICAgICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKERvY3VtZW50
TG9hZGVyKik7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RQcm9ncmVzc1N0YXJ0ZWROb3Rp
ZmljYXRpb24oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RQcm9ncmVzc0VzdGltYXRlQ2hh
bmdlZE5vdGlmaWNhdGlvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdFByb2dyZXNzRmlu
aXNoZWROb3RpZmljYXRpb24oKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgcHJvZ3Jlc3NTdGFy
dGVkKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwcm9ncmVzc0NvbXBsZXRlZCgpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgc2V0TWFpbkZyYW1lRG9jdW1lbnRSZWFkeShib29sKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopOworICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciopOworCisgICAgICAgIHZp
cnR1YWwgYm9vbCBjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSkgY29uc3Q7
CisgICAgICAgIHZpcnR1YWwgYm9vbCByZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZShj
b25zdCBTdHJpbmcmIFVSTFNjaGVtZSkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgU3RyaW5nIGdl
bmVyYXRlZE1JTUVUeXBlRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYgVVJMU2NoZW1lKSBjb25z
dDsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVMb2FkQ29tcGxldGVkKCk7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBzYXZlVmlld1N0YXRlVG9JdGVtKEhpc3RvcnlJdGVtKik7CisgICAgICAg
IHZpcnR1YWwgdm9pZCByZXN0b3JlVmlld1N0YXRlKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBy
ZXN0b3JlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGUoKTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IHByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKTsKKyAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFRy
ZWF0VVJMQXNTYW1lQXNDdXJyZW50KGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGFkZEhpc3RvcnlJdGVtRm9yRnJhZ21lbnRTY3JvbGwoKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaExvYWQoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JE
YXRhU291cmNlUmVwbGFjZW1lbnQoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNv
bnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmKTsKKworICAgICAgICB2aXJ0dWFsIFN0cmlu
ZyB1c2VyQWdlbnQoY29uc3QgS1VSTCYpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBzYXZlUGxh
dGZvcm1EYXRhVG9DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopOworICAgICAgICB2
aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKFdlYkNvcmU6
OkNhY2hlZEZyYW1lKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0
ZWRGb3JOZXdQYWdlKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3Rv
cnkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExp
bmtzKCk7CisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oSGlzdG9y
eUl0ZW0qKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNhdmVTY3JvbGxQb3NpdGlvbkFu
ZFZpZXdTdGF0ZVRvSXRlbShIaXN0b3J5SXRlbSopOworICAgICAgICB2aXJ0dWFsIGJvb2wgY2Fu
Q2FjaGVQYWdlKCkgY29uc3Q7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldE1haW5Eb2N1bWVu
dEVycm9yKERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBp
bnQpOworICAgICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2Vk
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgICAgIHZpcnR1YWwgUmVzb3VyY2VF
cnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgICAg
IHZpcnR1YWwgUmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbm5v
dFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICAgICAgdmly
dHVhbCBSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGYWxsQmFjayhjb25zdCBSZXNv
dXJjZUVycm9yJik7CisgICAgICAgIHZpcnR1YWwgV1RGOjpQYXNzUmVmUHRyPERvY3VtZW50TG9h
ZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRvd25s
b2FkKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgYXNzaWduSWRlbnRpZmllclRvSW5p
dGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRMb2FkZXIqLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0Jik7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFNl
bmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgUmVzb3VyY2VSZXF1ZXN0
JiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKKyAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZUNyZWRlbnRp
YWxTdG9yYWdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKERvY3VtZW50TG9hZGVyKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVy
KiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
UmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChE
b2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGludCk7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25n
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoRG9jdW1lbnRM
b2FkZXIqLCB1bnNpZ25lZCBsb25nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBk
aXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciosCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGlu
dCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0
cFJlcXVlc3QodW5zaWduZWQgbG9uZywgY29uc3QgU2NyaXB0U3RyaW5nJik7CisKKyAgICAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJj
ZUVycm9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0
IFJlc291cmNlRXJyb3ImKTsKKyAgICAgICAgdmlydHVhbCBGcmFtZSogZGlzcGF0Y2hDcmVhdGVQ
YWdlKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck1JTUVU
eXBlKEZyYW1lUG9saWN5RnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dB
Y3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29u
c3QgU3RyaW5nJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8
Rm9ybVN0YXRlPik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1wbGVt
ZW50UG9saWN5KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQg
c3RhcnREb3dubG9hZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKworICAgICAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgcHJvYmFibHkgbm90IGJlIGhlcmUsIGJ1dCBpdCdzIG5lZWRlZCBmb3Ig
dGhlIHRlc3RzIGN1cnJlbnRseS4KKyAgICAgICAgdmlydHVhbCB2b2lkIHBhcnRDbGVhcmVkSW5C
ZWdpbigpOworCisgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUo
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3Qg
U3RyaW5nJiByZWZlcnJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2lu
SGVpZ2h0KTsKKyAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2lu
KGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGxvYWRNYW51YWxseSk7
CisgICAgICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdp
bldpZGdldCk7CisgICAgICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxl
TG9hZEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKworICAgICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBI
VE1MQXBwbGV0RWxlbWVudCosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhcmFtTmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKTsK
KworICAgICAgICB2aXJ0dWFsIE9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisgICAgICAgIHZpcnR1YWwg
U3RyaW5nIG92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3Q7CisKKyAgICAgICAgdmlydHVhbCB2b2lk
IHdpbmRvd09iamVjdENsZWFyZWQoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50RWxl
bWVudEF2YWlsYWJsZSgpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3JtRmlyc3RO
YXZpZ2F0aW9uKCkgY29uc3Q7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRm9ySWNv
bk5vdGlmaWNhdGlvbihib29sIGxpc3RlbiA9IHRydWUpOworCisgICAgcHJpdmF0ZToKKyAgICAg
ICAgRnJhbWUqIG1fZnJhbWU7CisgICAgICAgIFdlYlZpZXcqIG1fd2ViVmlldzsKKyAgICAgICAg
Qk1lc3NlbmdlciogbV9tZXNzZW5nZXI7CisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNw
b25zZTsKKyAgICAgICAgYm9vbCBtX2ZpcnN0RGF0YTsKKyAgICB9OworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRnJhbWVMb2FkZXJDbGllbnRIYWlrdV9oCisKLS0gCjEuNi4z
LjIKCg==
</data>
<flag name="review"
          id="17857"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>