<?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>94373</bug_id>
          
          <creation_ts>2012-08-17 12:20:21 -0700</creation_ts>
          <short_desc>[gtk] adding methods and signals for usermedia communication between webkit and browser</short_desc>
          <delta_ts>2013-10-15 08:55:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>94361</dependson>
          <blocked>87514</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Danilo de Paula">danilo.eu</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>gustavo</cc>
    
    <cc>nick.diego</cc>
    
    <cc>philn</cc>
    
    <cc>pnormand</cc>
    
    <cc>s.choi</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>698562</commentid>
    <comment_count>0</comment_count>
    <who name="Danilo de Paula">danilo.eu</who>
    <bug_when>2012-08-17 12:20:21 -0700</bug_when>
    <thetext>patching will be added in a few minutes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698563</commentid>
    <comment_count>1</comment_count>
      <attachid>159177</attachid>
    <who name="Danilo de Paula">danilo.eu</who>
    <bug_when>2012-08-17 12:21:51 -0700</bug_when>
    <thetext>Created attachment 159177
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698568</commentid>
    <comment_count>2</comment_count>
      <attachid>159179</attachid>
    <who name="Danilo de Paula">danilo.eu</who>
    <bug_when>2012-08-17 12:30:15 -0700</bug_when>
    <thetext>Created attachment 159179
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699505</commentid>
    <comment_count>3</comment_count>
    <who name="Danilo de Paula">danilo.eu</who>
    <bug_when>2012-08-20 07:49:55 -0700</bug_when>
    <thetext>I will add it&apos;s usage today to avoid dead code. So this patch doesn&apos;t need review yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700857</commentid>
    <comment_count>4</comment_count>
      <attachid>159705</attachid>
    <who name="Danilo de Paula">danilo.eu</who>
    <bug_when>2012-08-21 09:55:59 -0700</bug_when>
    <thetext>Created attachment 159705
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723587</commentid>
    <comment_count>5</comment_count>
      <attachid>159705</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-09-19 08:39:05 -0700</bug_when>
    <thetext>Comment on attachment 159705
Patch

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

I have no idea about media stream API, so I&apos;ll just comment on general things. It would help to include unit tests with the patch. Setting r- because the patch seems incomplete.

&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:25
&gt; +#include &quot;MediaStreamSource.h&quot;

This is already included by webkitwebusermedialistprivate.h

&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:29
&gt; +#include &lt;glib.h&gt;

This is already included in the header.

&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:30
&gt; +#include &lt;glib/gi18n-lib.h&gt;

There aren&apos;t translatable strings in this file, no?

&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:31
&gt; +#include &lt;stdio.h&gt;

What do you need this for?

&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:50
&gt; +    gboolean* sourceSelections;

Use Vector&lt;bool&gt;

&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:53
&gt; +G_DEFINE_TYPE(WebKitWebUserMediaList, webkit_web_user_media_list, G_TYPE_OBJECT);

The trailing ; is not needed.

&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:58
&gt; +static void webkit_web_user_media_list_dispose(GObject* object)
&gt; +{
&gt; +    G_OBJECT_CLASS(webkit_web_user_media_list_parent_class)-&gt;dispose(object);
&gt; +}

Don&apos;t define dispose just to chain up.

&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:60
&gt; +static void webkit_web_user_media_list_finalize(GObject* object)

We use the WebKit coding style for internal private methods, webkitWebViewFinalize().

&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:64
&gt; +    g_free(userMediaList-&gt;priv-&gt;sourceSelections);

Use the the placement new syntax to allocate the private structure and simply call the destructor here. See webkitwebview.cpp as an example.

&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:83
&gt; +    WebKitWebUserMediaListPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(list, WEBKIT_TYPE_WEB_USER_MEDIA_LIST, WebKitWebUserMediaListPrivate);
&gt; +    list-&gt;priv = priv;

Use placement new syntax, see webkit_web_view_init()

&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:122
&gt; +    return g_strdup(sources[index]-&gt;name().utf8().data());

We could cache the name on demand using a CString to return a const gchar * instead.

&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:136
&gt; +gboolean webkit_web_user_media_list_get_item_selected(WebKitWebUserMediaList* list, guint index)

is_item_selected?

&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:141
&gt; +    WebCore::MediaStreamSourceVector&amp; sources = core(list);
&gt; +    g_return_val_if_fail(index &lt; sources.size(), FALSE);

Could this be just g_return_val_if_fail(index &lt; core(list).size(), FALSE); ?

&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:160
&gt; +    WebCore::MediaStreamSourceVector&amp; sources = core(list);
&gt; +    g_return_if_fail(index &lt; sources.size());

Ditto.

&gt; Source/WebKit/gtk/webkit/webkitwebusermediarequest.cpp:31
&gt; +#include &lt;glib.h&gt;

This is already included by the header.

&gt; Source/WebKit/gtk/webkit/webkitwebusermediarequest.cpp:32
&gt; +#include &lt;glib/gi18n-lib.h&gt;

No translatable strings here either.

&gt; Source/WebKit/gtk/webkit/webkitwebusermediarequest.cpp:52
&gt; +G_DEFINE_TYPE(WebKitWebUserMediaRequest, webkit_web_user_media_request, G_TYPE_OBJECT);

Trailing ; is not needed

&gt; Source/WebKit/gtk/webkit/webkitwebusermediarequest.cpp:64
&gt; +    WebKitWebUserMediaRequestPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(request, WEBKIT_TYPE_WEB_USER_MEDIA_REQUEST, WebKitWebUserMediaRequestPrivate);
&gt; +    request-&gt;priv = priv;

Use the placement new syntax here too, so that the destructor is called and the RefPtr is destroyed.

&gt; Source/WebKit/gtk/webkit/webkitwebusermediarequest.cpp:111
&gt; +const gchar* webkit_web_user_media_request_get_origin(WebKitWebUserMediaRequest* request)

get_security_origin? This is confusing, because there&apos;s a WebKitSecurityOrigin calls in the API, shouldn&apos;t we return that instead?

&gt; Source/WebKit/gtk/webkit/webkitwebusermediarequest.cpp:113
&gt; +    g_return_val_if_fail(WEBKIT_IS_WEB_USER_MEDIA_REQUEST(request), NULL);

Use 0 instead of NULL.

&gt; Source/WebKit/gtk/webkit/webkitwebusermediarequest.cpp:115
&gt; +    return core(request)-&gt;scriptExecutionContext()-&gt;securityOrigin()-&gt;toString().utf8().data();

This looks like a temporary value, it should be cached to return a const gchar *, or duplicated and return a gchar *

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:126
&gt; +#include &quot;MediaStreamSource.h&quot;
&gt; +#include &quot;UserMediaClientGtk.h&quot;
&gt; +#include &quot;webkitwebusermedialist.h&quot;
&gt; +#include &quot;webkitwebusermedialistprivate.h&quot;

webkitwebusermedialistprivate.h already includes webkitwebusermedialist.h and MediaStreamSource.h

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2749
&gt; +#if ENABLE(MEDIA_STREAM)

I don&apos;t think having public API that depends on compilation options is a good idea. The API should always be there, but if media stream support is not compiled, the API should do nothing or fallback to a default behaviour.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2751
&gt; +    /*

/* -&gt; /**

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2752
&gt; +     * WebKitWebView::user-media-requested

Trailing : missing here.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2759
&gt; +     * When the application request userMedia, this signal will be emited with the request
&gt; +     * information and the available options to be selected.

Then the user is expected to call either webkit_web_view_accept_user_media_request() or webkit_web_view_reject_user_media_request()?

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2765
&gt; +            (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),

Why G_SIGNAL_ACTION?

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2774
&gt; +    /*

/* -&gt; /**

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2775
&gt; +     * WebKitWebView::user-media-request-cancelled

Trailing : missing here.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2779
&gt; +     * This signal will be emited when the user canceled its userMedia request.

Why do we need to notify the user that request has cancelled by him/her?

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2785
&gt; +            (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),

Why G_SIGNAL_ACTION?

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2792
&gt; +#endif /* ENABLE(MEDIA_STREAM) */

Where are the signals emitted?

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:5398
&gt; +void webkit_web_view_accept_user_media_request(WebKitWebView *webView, WebKitWebUserMediaRequest *webRequest, WebKitWebUserMediaList *audioMediaList, WebKitWebUserMediaList *videoMediaList)

All * are incorrectly placed.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:5410
&gt; +    for (size_t i = audioSources.size() - 1; i != (size_t) -1; --i)

Why do you need to iterate from size -1 to (size_t) - 1? Can&apos;t you just iterate from i = 0 to audioSources.size() - 1? or from size() - 1 to 0?

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:5414
&gt; +    for (size_t i = videoSources.size() - 1; i != (size_t) -1; --i)

Ditto.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:5420
&gt; +    // TODO: uncomment the following lines when the UserMediaClientGtk implementation is completed
&gt; +    // UserMediaClientGtk* client = static_cast&lt;UserMediaClientGtk*&gt;(priv-&gt;userMediaClient.get());
&gt; +    // client-&gt;userMediaRequestSucceeded(core(webRequest), audioSources, videoSources);

What happen if the user doesn&apos;t handle the signal? would the client always expect that either userMediaRequestSucceeded or userMediaRequestFailed are called? In that case we should have a default implementation in cade the signal is not handled.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:5441
&gt; +    // TODO: uncomment thw following lines when the UserMediaClientGtk implementation is completed
&gt; +    // UserMediaClientGtk* client = static_cast&lt;UserMediaClientGtk*&gt;(priv-&gt;userMediaClient.get());
&gt; +    // client-&gt;userMediaRequestFailed(core(webRequest));

If WebCore implementation is not yet ready, I think it&apos;s better to wait until it&apos;s done to add the public API instead of adding API that does nothing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726959</commentid>
    <comment_count>6</comment_count>
      <attachid>159705</attachid>
    <who name="Danilo de Paula">danilo.eu</who>
    <bug_when>2012-09-24 13:30:16 -0700</bug_when>
    <thetext>Comment on attachment 159705
Patch

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

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:83
&gt;&gt; +    list-&gt;priv = priv;
&gt; 
&gt; Use placement new syntax, see webkit_web_view_init()

ok

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebusermediarequest.cpp:31
&gt;&gt; +#include &lt;glib.h&gt;
&gt; 
&gt; This is already included by the header.

removed

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebusermediarequest.cpp:32
&gt;&gt; +#include &lt;glib/gi18n-lib.h&gt;
&gt; 
&gt; No translatable strings here either.

removed

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebusermediarequest.cpp:52
&gt;&gt; +G_DEFINE_TYPE(WebKitWebUserMediaRequest, webkit_web_user_media_request, G_TYPE_OBJECT);
&gt; 
&gt; Trailing ; is not needed

fixed;

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebusermediarequest.cpp:64
&gt;&gt; +    request-&gt;priv = priv;
&gt; 
&gt; Use the placement new syntax here too, so that the destructor is called and the RefPtr is destroyed.

fixed, but would be nice a second check since I never mixed gobjects and new operator.

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebusermediarequest.cpp:111
&gt;&gt; +const gchar* webkit_web_user_media_request_get_origin(WebKitWebUserMediaRequest* request)
&gt; 
&gt; get_security_origin? This is confusing, because there&apos;s a WebKitSecurityOrigin calls in the API, shouldn&apos;t we return that instead?

I didn&apos;t know that SecurityOrigin was part of the official API, makes sense to change that, thanks for noticing.

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2749
&gt;&gt; +#if ENABLE(MEDIA_STREAM)
&gt; 
&gt; I don&apos;t think having public API that depends on compilation options is a good idea. The API should always be there, but if media stream support is not compiled, the API should do nothing or fallback to a default behaviour.

Agree

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2751
&gt;&gt; +    /*
&gt; 
&gt; /* -&gt; /**

ok

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2752
&gt;&gt; +     * WebKitWebView::user-media-requested
&gt; 
&gt; Trailing : missing here.

ok

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2759
&gt;&gt; +     * information and the available options to be selected.
&gt; 
&gt; Then the user is expected to call either webkit_web_view_accept_user_media_request() or webkit_web_view_reject_user_media_request()?

ok.

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2765
&gt;&gt; +            (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
&gt; 
&gt; Why G_SIGNAL_ACTION?

not really necessary, removed.

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2774
&gt;&gt; +    /*
&gt; 
&gt; /* -&gt; /**

fixed

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2775
&gt;&gt; +     * WebKitWebView::user-media-request-cancelled
&gt; 
&gt; Trailing : missing here.

fixed

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2779
&gt;&gt; +     * This signal will be emited when the user canceled its userMedia request.
&gt; 
&gt; Why do we need to notify the user that request has cancelled by him/her?

If a website calls stop() on the localmediastream before the user selects a device, the notification should disappear.
Since the notification box is controlled by the browser, the browser should be notified. It will be explained on the example I&apos;m pushing with this commit.

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2785
&gt;&gt; +            (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
&gt; 
&gt; Why G_SIGNAL_ACTION?

removed.

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2792
&gt;&gt; +#endif /* ENABLE(MEDIA_STREAM) */
&gt; 
&gt; Where are the signals emitted?

The signals are emited by the userMediaClientGtk, I can include it on this commit, but I was expecting to push the API first, and then the internal elements.

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:5398
&gt;&gt; +void webkit_web_view_accept_user_media_request(WebKitWebView *webView, WebKitWebUserMediaRequest *webRequest, WebKitWebUserMediaList *audioMediaList, WebKitWebUserMediaList *videoMediaList)
&gt; 
&gt; All * are incorrectly placed.

ops, I thought webkit-check-style would warn me about it. fixed.

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:5410
&gt;&gt; +    for (size_t i = audioSources.size() - 1; i != (size_t) -1; --i)
&gt; 
&gt; Why do you need to iterate from size -1 to (size_t) - 1? Can&apos;t you just iterate from i = 0 to audioSources.size() - 1? or from size() - 1 to 0?

We&apos;re iterating over a list and removing indexes from another. iterating from size to 0 would be complicated since the index can change.
But in fact, we want to go from size() - 1 to 0, so Ok, fixed.

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:5414
&gt;&gt; +    for (size_t i = videoSources.size() - 1; i != (size_t) -1; --i)
&gt; 
&gt; Ditto.

fixed

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:5420
&gt;&gt; +    // client-&gt;userMediaRequestSucceeded(core(webRequest), audioSources, videoSources);
&gt; 
&gt; What happen if the user doesn&apos;t handle the signal? would the client always expect that either userMediaRequestSucceeded or userMediaRequestFailed are called? In that case we should have a default implementation in cade the signal is not handled.

Right now, if the application doesn&apos;t implement the methods or handle the signal, nothing happens. 

Maybe the implementation (UserMediaClientGTK) should check for the enable_media_stream flag on Settings, and, if it&apos;s false, call reject automatically.

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:5441
&gt;&gt; +    // client-&gt;userMediaRequestFailed(core(webRequest));
&gt; 
&gt; If WebCore implementation is not yet ready, I think it&apos;s better to wait until it&apos;s done to add the public API instead of adding API that does nothing.

it is ready. I just don&apos;t want to push a huge commit. But for sure would be nice some discussion about that part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728874</commentid>
    <comment_count>7</comment_count>
      <attachid>165854</attachid>
    <who name="Danilo de Paula">danilo.eu</who>
    <bug_when>2012-09-26 12:40:34 -0700</bug_when>
    <thetext>Created attachment 165854
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730654</commentid>
    <comment_count>8</comment_count>
    <who name="Danilo de Paula">danilo.eu</who>
    <bug_when>2012-09-28 07:52:39 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created an attachment (id=165854) [details]
&gt; Patch

Made a few changes on how the UserMediaGTK works, so it&apos;s not necessary to warn it about the request acceptance. The accept can be handled by the view now.

will push the commit again as soon as I get it build and check if everything is working as expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730764</commentid>
    <comment_count>9</comment_count>
      <attachid>166270</attachid>
    <who name="Danilo de Paula">danilo.eu</who>
    <bug_when>2012-09-28 10:12:37 -0700</bug_when>
    <thetext>Created attachment 166270
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730770</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-28 10:16:52 -0700</bug_when>
    <thetext>Attachment 166270 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/Web...&quot; exit_code: 1
Source/WebKit/gtk/webkit/webkitwebusermedialist.h:58:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebusermedialist.h:61:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebusermedialist.h:64:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:456:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:457:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:458:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:462:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.cpp:2748:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.cpp:2769:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 9 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730802</commentid>
    <comment_count>11</comment_count>
      <attachid>166279</attachid>
    <who name="Danilo de Paula">danilo.eu</who>
    <bug_when>2012-09-28 10:59:36 -0700</bug_when>
    <thetext>Created attachment 166279
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730807</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-28 11:02:48 -0700</bug_when>
    <thetext>Attachment 166279 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/Web...&quot; exit_code: 1
Source/WebKit/gtk/webkit/webkitwebusermedialist.h:58:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebusermedialist.h:61:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebusermedialist.h:64:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:456:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:457:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:458:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:462:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.cpp:2748:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.cpp:2769:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 9 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731824</commentid>
    <comment_count>13</comment_count>
      <attachid>166279</attachid>
    <who name="Danilo de Paula">danilo.eu</who>
    <bug_when>2012-10-01 11:26:25 -0700</bug_when>
    <thetext>Comment on attachment 166279
Patch

adding request for commit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732880</commentid>
    <comment_count>14</comment_count>
      <attachid>166722</attachid>
    <who name="Danilo de Paula">danilo.eu</who>
    <bug_when>2012-10-02 11:37:59 -0700</bug_when>
    <thetext>Created attachment 166722
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732881</commentid>
    <comment_count>15</comment_count>
      <attachid>166722</attachid>
    <who name="Danilo de Paula">danilo.eu</who>
    <bug_when>2012-10-02 11:40:18 -0700</bug_when>
    <thetext>Comment on attachment 166722
Patch

Asking for review and commit-queue.

Tests on fast/mediastream should cover this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732890</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-02 11:44:52 -0700</bug_when>
    <thetext>Attachment 166722 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/Web...&quot; exit_code: 1
Source/WebKit/gtk/webkit/webkitwebusermedialist.h:58:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebusermedialist.h:61:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebusermedialist.h:64:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Tools/GtkLauncher/main.c:241:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Tools/GtkLauncher/main.c:242:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Tools/GtkLauncher/main.c:243:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Tools/GtkLauncher/main.c:244:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Tools/GtkLauncher/main.c:245:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Tools/GtkLauncher/main.c:246:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Tools/GtkLauncher/main.c:247:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:456:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:457:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:458:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:462:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.cpp:2748:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.cpp:2769:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 16 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732893</commentid>
    <comment_count>17</comment_count>
    <who name="Danilo de Paula">danilo.eu</who>
    <bug_when>2012-10-02 11:47:19 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Attachment 166722 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/Web...&quot; exit_code: 1
&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.h:58:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.h:61:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.h:64:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Tools/GtkLauncher/main.c:241:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Tools/GtkLauncher/main.c:242:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Tools/GtkLauncher/main.c:243:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Tools/GtkLauncher/main.c:244:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Tools/GtkLauncher/main.c:245:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Tools/GtkLauncher/main.c:246:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Tools/GtkLauncher/main.c:247:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Source/WebKit/gtk/webkit/webkitwebview.h:456:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Source/WebKit/gtk/webkit/webkitwebview.h:457:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Source/WebKit/gtk/webkit/webkitwebview.h:458:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Source/WebKit/gtk/webkit/webkitwebview.h:462:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2748:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2769:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
&gt; Total errors found: 16 in 18 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

They&apos;re all false positive. Someone could please drop some comments?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733647</commentid>
    <comment_count>18</comment_count>
      <attachid>166722</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-10-03 06:48:46 -0700</bug_when>
    <thetext>Comment on attachment 166722
Patch

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

Still someone who knows about the media stream api should review this, and it&apos;s new api so we need two reviewers. I&apos;ve just commented about general things only.

&gt; Source/WebKit/gtk/WebCoreSupport/UserMediaClientGtk.cpp:29
&gt; -#include &quot;UserMediaClientGtk.h&quot;
&gt;  
&gt;  #if ENABLE(MEDIA_STREAM)
&gt; -#include &quot;MediaStreamSource.h&quot;
&gt; -#include &quot;NotImplemented.h&quot;
&gt; -#include &quot;UserMediaRequest.h&quot;
&gt; +
&gt; +#include &quot;UserMediaClientGtk.h&quot;
&gt; +
&gt; +#include &quot;webkitwebusermedialistprivate.h&quot;
&gt; +#include &quot;webkitwebusermediarequestprivate.h&quot;

That was correct, it should be config and then UserMediaClientGtk.h, followed by an empty line and then all other headers. UserMediaClientGtk.h already has #if ENABLE(MEDIA_STREAM) so it&apos;s not a problem if it&apos;s used before the #if here.

&gt; Source/WebKit/gtk/WebCoreSupport/UserMediaClientGtk.cpp:35
&gt; +UserMediaClientGtk::UserMediaClientGtk(WebKitWebView *webView)

WebKitWebView *webView -&gt; WebKitWebView* webView

&gt; Source/WebKit/gtk/WebCoreSupport/UserMediaClientGtk.cpp:49
&gt; -void UserMediaClientGtk::requestUserMedia(WTF::PassRefPtr&lt;UserMediaRequest&gt; prpRequest, const MediaStreamSourceVector&amp; audioSource, const MediaStreamSourceVector&amp; videoSource)
&gt; +void UserMediaClientGtk::requestUserMedia(WTF::PassRefPtr&lt;UserMediaRequest&gt; prpRequest, const WebCore::MediaStreamSourceVector&amp; audioSources, const WebCore::MediaStreamSourceVector&amp; videoSources)
&gt;  {

This is not needed, there&apos;s using namespace WebCore; in this file

&gt; Source/WebKit/gtk/WebCoreSupport/UserMediaClientGtk.cpp:51
&gt; +    RefPtr&lt;UserMediaRequest&gt; request = prpRequest;
&gt; +    g_signal_emit_by_name(m_webView, &quot;user-media-requested&quot;, kitNew(request.get()), kitNew(audioSources), kitNew(videoSources));

Who will be responsible for releasing the ref you are taking here?

&gt; Source/WebKit/gtk/WebCoreSupport/UserMediaClientGtk.cpp:59
&gt; -} // namespace WebKit;
&gt; +}

Why do you remove the comment?

&gt; Source/WebKit/gtk/WebCoreSupport/UserMediaClientGtk.h:41
&gt; -    UserMediaClientGtk();
&gt; -    virtual ~UserMediaClientGtk();
&gt; +    UserMediaClientGtk(WebKitWebView*);
&gt; +    ~UserMediaClientGtk();

Was the virtual wrong for the destructor?

&gt; Source/WebKit/gtk/WebCoreSupport/UserMediaClientGtk.h:52
&gt; -} // namespace WebKit
&gt; +}

why removing this?

&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:28
&gt; +#include &quot;config.h&quot;
&gt; +
&gt; +#if ENABLE(MEDIA_STREAM)
&gt; +
&gt; +#include &quot;webkitwebusermedialist.h&quot;
&gt; +
&gt; +#include &quot;webkitglobalsprivate.h&quot;
&gt; +#include &quot;webkitwebusermedialistprivate.h&quot;
&gt; +
&gt; +#include &lt;wtf/text/CString.h&gt;

This should be

#include &quot;config.h&quot;
#include &quot;webkitwebusermedialist.h&quot;

#if ENABLE(MEDIA_STREAM)
#include &quot;webkitglobalsprivate.h&quot;
#include &quot;webkitwebusermedialistprivate.h&quot;
#include &lt;wtf/text/CString.h&gt;

&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:39
&gt; + * Since: 1.10.0

1.10.0 was released already, this should be 2.0

&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:59
&gt; +static void webkitWebUserMediaListDispose(GObject* object)
&gt; +{
&gt; +    WebKitWebUserMediaList* userMediaList = WEBKIT_WEB_USER_MEDIA_LIST(object);
&gt; +    WebKitWebUserMediaListPrivate* priv = userMediaList-&gt;priv;
&gt; +
&gt; +    priv-&gt;sourceSelections.clear();
&gt; +
&gt; +    G_OBJECT_CLASS(webkit_web_user_media_list_parent_class)-&gt;dispose(object);
&gt; +}

I don&apos;t think you need this, the vector will be released by the struct destructor in Finalize()

&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:69
&gt; +    GObjectClass* gobject_class = G_OBJECT_CLASS(listClass);

gobject_class -&gt; gobjectClass

&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:95
&gt; + * Since: 1.10.0

2.0

&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:114
&gt; + * Since: 1.10.0

Ditto.

&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:135
&gt; + * Since: 1.10.0

Ditto.

&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:141
&gt; +    g_return_val_if_fail(WEBKIT_IS_WEB_USER_MEDIA_LIST(list), FALSE);
&gt; +
&gt; +    g_return_val_if_fail(index &lt; core(list).size(), FALSE);

Extra new line there

&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:153
&gt; + * Since: 1.10.0

2.0

&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:159
&gt; +    g_return_if_fail(WEBKIT_IS_WEB_USER_MEDIA_LIST(list));
&gt; +
&gt; +    g_return_if_fail(index &lt; core(list).size());

Extra new line there

&gt; Source/WebKit/gtk/webkit/webkitwebusermediarequest.cpp:24
&gt; +#include &quot;config.h&quot;
&gt; +
&gt; +#if ENABLE(MEDIA_STREAM)
&gt; +
&gt; +#include &quot;webkitwebusermediarequest.h&quot;

ame issue here with the headers

&gt; Source/WebKit/gtk/webkit/webkitwebusermediarequest.cpp:42
&gt; + * Since: 1.10.0

2.0

&gt; Source/WebKit/gtk/webkit/webkitwebusermediarequest.cpp:84
&gt; + * Return value: True if the request contains an audio request.

True -&gt; %TRUE

True if the request contains an audio request or %FALSE otherwise.

&gt; Source/WebKit/gtk/webkit/webkitwebusermediarequest.cpp:101
&gt; + * Return value: True if the request contains a video request.

Ditto

&gt; Source/WebKit/gtk/webkit/webkitwebusermediarequest.cpp:133
&gt; +    g_return_val_if_fail(WEBKIT_IS_WEB_USER_MEDIA_REQUEST(request), 0);

This is not a public API mehod, use ASSERT or nothing instead of g_return macros.

&gt; Source/WebKit/gtk/webkit/webkitwebusermediarequest.cpp:140
&gt; +    g_return_val_if_fail(request, 0);

Ditto.

&gt; Source/WebKit/gtk/webkit/webkitwebusermediarequest.h:59
&gt; +WEBKIT_API WebKitSecurityOrigin*

WebKitSecurityOrigin* -&gt; WebKitSecurityOrigin *

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2742
&gt; +     * Then the user is expected to call either #webkit_web_view_accept_user_media_request() or

Don&apos;t need to use # for function names

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:2745
&gt; +     * Since: 1.10.0

2.0

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:5410
&gt; +    core(webRequest)-&gt;succeed(audioSources, videoSources);

I wonder why this is a method of WebView if it doesn&apos;t use the web view. Looks too me like a method of WebKitWebUserMediaRequest, something like webkit_web_user_media_request_accept();

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:5427
&gt; +void webkit_web_view_reject_user_media_request(WebKitWebView *webView, WebKitWebUserMediaRequest *webRequest)
&gt; +{
&gt; +    g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
&gt; +    g_return_if_fail(WEBKIT_IS_WEB_USER_MEDIA_REQUEST(webRequest));
&gt; +
&gt; +    core(webRequest)-&gt;fail();

Same here, webView is unused</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733861</commentid>
    <comment_count>19</comment_count>
      <attachid>166722</attachid>
    <who name="Danilo de Paula">danilo.eu</who>
    <bug_when>2012-10-03 11:14:43 -0700</bug_when>
    <thetext>Comment on attachment 166722
Patch

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

&gt;&gt; Source/WebKit/gtk/WebCoreSupport/UserMediaClientGtk.cpp:29
&gt;&gt; +#include &quot;webkitwebusermediarequestprivate.h&quot;
&gt; 
&gt; That was correct, it should be config and then UserMediaClientGtk.h, followed by an empty line and then all other headers. UserMediaClientGtk.h already has #if ENABLE(MEDIA_STREAM) so it&apos;s not a problem if it&apos;s used before the #if here.

fixed.

&gt;&gt; Source/WebKit/gtk/WebCoreSupport/UserMediaClientGtk.cpp:35
&gt;&gt; +UserMediaClientGtk::UserMediaClientGtk(WebKitWebView *webView)
&gt; 
&gt; WebKitWebView *webView -&gt; WebKitWebView* webView

ok.

&gt;&gt; Source/WebKit/gtk/WebCoreSupport/UserMediaClientGtk.cpp:49
&gt;&gt;  {
&gt; 
&gt; This is not needed, there&apos;s using namespace WebCore; in this file

ok

&gt;&gt; Source/WebKit/gtk/WebCoreSupport/UserMediaClientGtk.cpp:59
&gt;&gt; +}
&gt; 
&gt; Why do you remove the comment?

fixed.

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:28
&gt;&gt; +#include &lt;wtf/text/CString.h&gt;
&gt; 
&gt; This should be
&gt; 
&gt; #include &quot;config.h&quot;
&gt; #include &quot;webkitwebusermedialist.h&quot;
&gt; 
&gt; #if ENABLE(MEDIA_STREAM)
&gt; #include &quot;webkitglobalsprivate.h&quot;
&gt; #include &quot;webkitwebusermedialistprivate.h&quot;
&gt; #include &lt;wtf/text/CString.h&gt;

fixed.

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:39
&gt;&gt; + * Since: 1.10.0
&gt; 
&gt; 1.10.0 was released already, this should be 2.0

I was thinking that it should be something like Since: TODO, and fix that after the approval.
But ok, changing to 2.0.0

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:59
&gt;&gt; +}
&gt; 
&gt; I don&apos;t think you need this, the vector will be released by the struct destructor in Finalize()

The whole dispose was removed.

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:69
&gt;&gt; +    GObjectClass* gobject_class = G_OBJECT_CLASS(listClass);
&gt; 
&gt; gobject_class -&gt; gobjectClass

fixed.

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:95
&gt;&gt; + * Since: 1.10.0
&gt; 
&gt; 2.0

fixed,

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:114
&gt;&gt; + * Since: 1.10.0
&gt; 
&gt; Ditto.

ok.

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:135
&gt;&gt; + * Since: 1.10.0
&gt; 
&gt; Ditto.

ok

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:159
&gt;&gt; +    g_return_if_fail(index &lt; core(list).size());
&gt; 
&gt; Extra new line there

ok

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebusermediarequest.cpp:24
&gt;&gt; +#include &quot;webkitwebusermediarequest.h&quot;
&gt; 
&gt; ame issue here with the headers

fixed.

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebusermediarequest.cpp:42
&gt;&gt; + * Since: 1.10.0
&gt; 
&gt; 2.0

ok

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebusermediarequest.cpp:84
&gt;&gt; + * Return value: True if the request contains an audio request.
&gt; 
&gt; True -&gt; %TRUE
&gt; 
&gt; True if the request contains an audio request or %FALSE otherwise.

ok

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebusermediarequest.cpp:101
&gt;&gt; + * Return value: True if the request contains a video request.
&gt; 
&gt; Ditto

ok

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebusermediarequest.cpp:133
&gt;&gt; +    g_return_val_if_fail(WEBKIT_IS_WEB_USER_MEDIA_REQUEST(request), 0);
&gt; 
&gt; This is not a public API mehod, use ASSERT or nothing instead of g_return macros.

ok

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebusermediarequest.cpp:140
&gt;&gt; +    g_return_val_if_fail(request, 0);
&gt; 
&gt; Ditto.

ok

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:5410
&gt;&gt; +    core(webRequest)-&gt;succeed(audioSources, videoSources);
&gt; 
&gt; I wonder why this is a method of WebView if it doesn&apos;t use the web view. Looks too me like a method of WebKitWebUserMediaRequest, something like webkit_web_user_media_request_accept();

vestige of an old implementation. fixed by now

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:5427
&gt;&gt; +    core(webRequest)-&gt;fail();
&gt; 
&gt; Same here, webView is unused

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733963</commentid>
    <comment_count>20</comment_count>
      <attachid>166945</attachid>
    <who name="Danilo de Paula">danilo.eu</who>
    <bug_when>2012-10-03 13:12:35 -0700</bug_when>
    <thetext>Created attachment 166945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736608</commentid>
    <comment_count>21</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-10-08 03:28:09 -0700</bug_when>
    <thetext>The general approach looks entirely reasonable to me, but I have zero experience with GTK and can&apos;t comment the specifics.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738117</commentid>
    <comment_count>22</comment_count>
      <attachid>167833</attachid>
    <who name="Danilo de Paula">danilo.eu</who>
    <bug_when>2012-10-09 13:08:10 -0700</bug_when>
    <thetext>Created attachment 167833
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738122</commentid>
    <comment_count>23</comment_count>
      <attachid>167833</attachid>
    <who name="Danilo de Paula">danilo.eu</who>
    <bug_when>2012-10-09 13:12:48 -0700</bug_when>
    <thetext>Comment on attachment 167833
Patch

Changes:
 1 - added a default handler as suggested by mrobinson
 2 - removed the request-canceled signal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738124</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-09 13:13:06 -0700</bug_when>
    <thetext>Attachment 167833 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/Web...&quot; exit_code: 1
Source/WebKit/gtk/webkit/webkitwebusermediarequest.h:68:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebusermedialist.h:58:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebusermedialist.h:61:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebusermedialist.h:64:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:163:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:164:  Extra space between WebKitWebUserMediaList and *audio  [whitespace/declaration] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:164:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:165:  Extra space between WebKitWebUserMediaList and *video  [whitespace/declaration] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:165:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.cpp:1201:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.cpp:1202:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.cpp:1203:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.cpp:1204:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.cpp:1205:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.cpp:1206:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.cpp:1207:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.cpp:2861:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 17 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739238</commentid>
    <comment_count>25</comment_count>
      <attachid>167833</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-10-10 13:06:13 -0700</bug_when>
    <thetext>Comment on attachment 167833
Patch

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

Just a few general things since this patch is still evolving:

1. Use C++ style comments (// instead of /*)
2. It seems this API should not be synchronous, but asynchronous. It&apos;s okay if the default implementation is synchronous now, but it should be possible to choose the media devices asynchronously. To see how we typically do this look at http://webkitgtk.org/reference/webkit2gtk/unstable/WebKitPolicyDecision.html

And a couple specific things:

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:217
&gt; +    CHOOSE_MEDIA_DEVICE,

I&apos;m not certain, but adding this in the middle may be an ABI break.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:1186
&gt; +    GtkWidget* dialog;
&gt; +    GtkWidget* contentArea;
&gt; +    GtkWidget* actionArea;
&gt; +    GtkWidget* frame;

In WebKit we typically declare variables the first time we use them instead of at the start of the method/function.

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:1201
&gt;&gt; +                                         GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(webView))),
&gt; 
&gt; Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]

The style bot complains when we align things now, so just indent them 8 spaces here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741599</commentid>
    <comment_count>26</comment_count>
      <attachid>168589</attachid>
    <who name="Danilo de Paula">danilo.eu</who>
    <bug_when>2012-10-14 14:25:40 -0700</bug_when>
    <thetext>Created attachment 168589
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741601</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-14 14:28:41 -0700</bug_when>
    <thetext>Attachment 168589 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Sou...&quot; exit_code: 1
Source/WebKit/gtk/webkit/webkitwebusermediarequest.h:68:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebusermedialist.h:58:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebusermedialist.h:61:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebusermedialist.h:64:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:163:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:164:  Extra space between WebKitWebUserMediaList and *audio  [whitespace/declaration] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:164:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:165:  Extra space between WebKitWebUserMediaList and *video  [whitespace/declaration] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:165:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.cpp:2795:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 10 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741603</commentid>
    <comment_count>28</comment_count>
      <attachid>168591</attachid>
    <who name="Danilo de Paula">danilo.eu</who>
    <bug_when>2012-10-14 14:31:47 -0700</bug_when>
    <thetext>Created attachment 168591
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741606</commentid>
    <comment_count>29</comment_count>
      <attachid>168591</attachid>
    <who name="Danilo de Paula">danilo.eu</who>
    <bug_when>2012-10-14 14:36:28 -0700</bug_when>
    <thetext>Comment on attachment 168591
Patch

a few comments:

1 - Fixed the current implementation to be async
2 - added a new GtkMediaChooserDialog dialog on webcore
    * this dialog exports a gtkwidget on the widget() method, so the view can connect to the &apos;response&apos; signal. I don&apos;t know if it&apos;s the best option, is there any way to create a gsignal on a c++ class?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741607</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-14 14:37:54 -0700</bug_when>
    <thetext>Attachment 168591 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Sou...&quot; exit_code: 1
Source/WebKit/gtk/webkit/webkitwebusermediarequest.h:68:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebusermedialist.h:58:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebusermedialist.h:61:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebusermedialist.h:64:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:163:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:164:  Extra space between WebKitWebUserMediaList and *audio  [whitespace/declaration] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:164:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:165:  Extra space between WebKitWebUserMediaList and *video  [whitespace/declaration] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:165:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.cpp:2795:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 10 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741611</commentid>
    <comment_count>31</comment_count>
      <attachid>168593</attachid>
    <who name="Danilo de Paula">danilo.eu</who>
    <bug_when>2012-10-14 14:45:46 -0700</bug_when>
    <thetext>Created attachment 168593
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741612</commentid>
    <comment_count>32</comment_count>
    <who name="Danilo de Paula">danilo.eu</who>
    <bug_when>2012-10-14 14:46:32 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; Created an attachment (id=168593) [details]
&gt; Patch

1 - Fixed the current implementation to be async
2 - added a new GtkMediaChooserDialog dialog on webcore
    * this dialog exports a gtkwidget on the widget() method, so the view can connect to the &apos;response&apos; signal. I don&apos;t know if it&apos;s the best option, is there any way to create a gsignal on a c++ class?
3 - Fixed changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741613</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-14 14:49:18 -0700</bug_when>
    <thetext>Attachment 168593 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Sou...&quot; exit_code: 1
Source/WebKit/gtk/webkit/webkitwebusermediarequest.h:68:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebusermedialist.h:58:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebusermedialist.h:61:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebusermedialist.h:64:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:163:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:164:  Extra space between WebKitWebUserMediaList and *audio  [whitespace/declaration] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:164:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:165:  Extra space between WebKitWebUserMediaList and *video  [whitespace/declaration] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:165:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.cpp:2795:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 10 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743280</commentid>
    <comment_count>34</comment_count>
      <attachid>168593</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-10-16 10:42:09 -0700</bug_when>
    <thetext>Comment on attachment 168593
Patch

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

The API looks OK to me in general, but I&apos;ll try to review the spec later today and see if I can spot any problems.

&gt; Source/WebKit/gtk/ChangeLog:6
&gt; +        When the user make a getUserMedia call, webview will emit a sigial (user-media-requested)

make -&gt; makes sigial -&gt; signal

&gt; Source/WebKit/gtk/ChangeLog:7
&gt; +        to the application containing then request itself (webkitwebusermediarequest) and two

then -&gt; the

&gt; Source/WebKit/gtk/ChangeLog:8
&gt; +        list with the available audio and video devices (webkitwebusermedialist).

list -&gt; lists

&gt; Source/WebKit/gtk/ChangeLog:17
&gt; +        On the case the user reject the request, webkit_web_user_media_request_fail must

On the case -&gt; In case?

&gt; Source/WebCore/platform/gtk/GtkMediaChooserDialog.cpp:25
&gt; +

No blank line

&gt; Source/WebCore/platform/gtk/GtkMediaChooserDialog.cpp:39
&gt; +    GtkWidget* vbox;
&gt; +    GtkWidget* audioMessage = 0;
&gt; +    GtkWidget* videoMessage = 0;

How about making this a GtkBuilder file that can more easily be changed if necessary?

&gt; Source/WebCore/platform/gtk/GtkMediaChooserDialog.cpp:43
&gt; +    gint audioListLength = audioSource.size();
&gt; +    gint videoListLength = videoSource.size();

We tend not to use glib types for types that are simple C types.

&gt; Source/WebCore/platform/gtk/GtkMediaChooserDialog.cpp:72
&gt; +        audioMessage = gtk_label_new(hasAudio ? _(&quot;Select from available user audio&quot;) : _(&quot;No user audio available&quot;));

These messages are quite cryptic for someone that doesn&apos;t know the spec I think. User audios are audio inputs? &apos;audio&apos; should use the plural in this case I imagine?

&gt; Source/WebCore/platform/gtk/GtkMediaChooserDialog.cpp:88
&gt; +            gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(m_audioCombo), g_strdup(audioSource[i]-&gt;name().utf8().data()));

You&apos;re leaking the string that you create with g_strdup. Why g_strdup, if the function takes a const char*?

&gt; Source/WebKit/gtk/webkit/webkitwebusermediarequest.cpp:131
&gt; + * webkit_web_user_media_request_succeed:

How about sticking to the allow/deny terminology we use for our other policy decisions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743512</commentid>
    <comment_count>35</comment_count>
      <attachid>169016</attachid>
    <who name="Danilo de Paula">danilo.eu</who>
    <bug_when>2012-10-16 13:47:52 -0700</bug_when>
    <thetext>Created attachment 169016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743514</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-16 13:53:18 -0700</bug_when>
    <thetext>Attachment 169016 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Sou...&quot; exit_code: 1
Source/WebKit/gtk/webkit/webkitwebusermediarequest.h:68:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebusermedialist.h:58:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebusermedialist.h:61:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebusermedialist.h:64:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:163:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:164:  Extra space between WebKitWebUserMediaList and *audio  [whitespace/declaration] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:164:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:165:  Extra space between WebKitWebUserMediaList and *video  [whitespace/declaration] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:165:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.cpp:2795:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 10 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743517</commentid>
    <comment_count>37</comment_count>
      <attachid>168593</attachid>
    <who name="Danilo de Paula">danilo.eu</who>
    <bug_when>2012-10-16 13:55:30 -0700</bug_when>
    <thetext>Comment on attachment 168593
Patch

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

&gt;&gt; Source/WebKit/gtk/ChangeLog:6
&gt;&gt; +        When the user make a getUserMedia call, webview will emit a sigial (user-media-requested)
&gt; 
&gt; make -&gt; makes sigial -&gt; signal

fixed

&gt;&gt; Source/WebKit/gtk/ChangeLog:7
&gt;&gt; +        to the application containing then request itself (webkitwebusermediarequest) and two
&gt; 
&gt; then -&gt; the

fixed

&gt;&gt; Source/WebKit/gtk/ChangeLog:8
&gt;&gt; +        list with the available audio and video devices (webkitwebusermedialist).
&gt; 
&gt; list -&gt; lists

fixed.

&gt;&gt; Source/WebKit/gtk/ChangeLog:17
&gt;&gt; +        On the case the user reject the request, webkit_web_user_media_request_fail must
&gt; 
&gt; On the case -&gt; In case?

fixed.

&gt;&gt; Source/WebCore/platform/gtk/GtkMediaChooserDialog.cpp:25
&gt;&gt; +
&gt; 
&gt; No blank line

fixed.

&gt;&gt; Source/WebCore/platform/gtk/GtkMediaChooserDialog.cpp:39
&gt;&gt; +    GtkWidget* videoMessage = 0;
&gt; 
&gt; How about making this a GtkBuilder file that can more easily be changed if necessary?

discussed on irc about it. Decided to keep simple while the dialog is simpler.
Will change that in case it gets much more complex.

&gt;&gt; Source/WebCore/platform/gtk/GtkMediaChooserDialog.cpp:43
&gt;&gt; +    gint videoListLength = videoSource.size();
&gt; 
&gt; We tend not to use glib types for types that are simple C types.

fixed.

&gt;&gt; Source/WebCore/platform/gtk/GtkMediaChooserDialog.cpp:72
&gt;&gt; +        audioMessage = gtk_label_new(hasAudio ? _(&quot;Select from available user audio&quot;) : _(&quot;No user audio available&quot;));
&gt; 
&gt; These messages are quite cryptic for someone that doesn&apos;t know the spec I think. User audios are audio inputs? &apos;audio&apos; should use the plural in this case I imagine?

fixed all the messages, including title.

&gt;&gt; Source/WebCore/platform/gtk/GtkMediaChooserDialog.cpp:88
&gt;&gt; +            gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(m_audioCombo), g_strdup(audioSource[i]-&gt;name().utf8().data()));
&gt; 
&gt; You&apos;re leaking the string that you create with g_strdup. Why g_strdup, if the function takes a const char*?

fixed.

&gt;&gt; Source/WebKit/gtk/webkit/webkitwebusermediarequest.cpp:131
&gt;&gt; + * webkit_web_user_media_request_succeed:
&gt; 
&gt; How about sticking to the allow/deny terminology we use for our other policy decisions?

in my first prototype the API was request_accept and request_reject.
I changed it back to succeed/fail to reflect the webkit internals (UserMediaRequest-&gt;succeed and fail).

What is best? Reflect the internal API or stick to what we have? To be honest I don&apos;t like succeed() and fail(), but I thought that using it would be safer.
Any second thought? Mrobinson?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745356</commentid>
    <comment_count>38</comment_count>
      <attachid>169431</attachid>
    <who name="Danilo de Paula">danilo.eu</who>
    <bug_when>2012-10-18 10:17:13 -0700</bug_when>
    <thetext>Created attachment 169431
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745358</commentid>
    <comment_count>39</comment_count>
      <attachid>169431</attachid>
    <who name="Danilo de Paula">danilo.eu</who>
    <bug_when>2012-10-18 10:18:49 -0700</bug_when>
    <thetext>Comment on attachment 169431
Patch

fix build
changed API to use allow/deny convention</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745360</commentid>
    <comment_count>40</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-18 10:21:21 -0700</bug_when>
    <thetext>Attachment 169431 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Sou...&quot; exit_code: 1
Source/WebKit/gtk/webkit/webkitwebusermediarequest.h:68:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebusermedialist.h:58:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebusermedialist.h:61:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebusermedialist.h:64:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:163:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:164:  Extra space between WebKitWebUserMediaList and *audio  [whitespace/declaration] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:164:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:165:  Extra space between WebKitWebUserMediaList and *video  [whitespace/declaration] [3]
Source/WebKit/gtk/webkit/webkitwebview.h:165:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebview.cpp:2795:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 10 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746398</commentid>
    <comment_count>41</comment_count>
      <attachid>169431</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-10-19 10:07:30 -0700</bug_when>
    <thetext>Comment on attachment 169431
Patch

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

The API looks good to me, I&apos;m just wondering about passing the list of chocies to allow; the spec says currently in its implementation suggestions: &quot;A single call to getUserMedia() will always return a stream with either zero or one audio tracks, and either zero or one video tracks.&quot;, what do you think?

&gt; Source/WebKit/gtk/WebCoreSupport/UserMediaClientGtk.cpp:49
&gt; +    RefPtr&lt;UserMediaRequest&gt; request = prpRequest;
&gt; +    g_signal_emit_by_name(m_webView, &quot;choose-media-device&quot;, kitNew(request.get()), kitNew(audioSource), kitNew(videoSource));

The spec says already in use devices should be considered busy and not shown, do you know whether we&apos;re doing that kind of filtering atm?

&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:32
&gt; + * @Title: WebKitWebUserMediaList

From the looks of it the names here are case insensitive, but might as well be consistent and keep everything lower-case.

&gt; Source/WebKit/gtk/webkit/webkitwebusermedialist.cpp:70
&gt; +    // placement new syntax

This comment&apos;s not very useful.

&gt; Source/WebKit/gtk/webkit/webkitwebusermediarequest.cpp:141
&gt; +void webkit_web_user_media_request_allow(WebKitWebUserMediaRequest* webRequest, WebKitWebUserMediaList* audioMediaList, WebKitWebUserMediaList* videoMediaList)

The implementation suggestion seems to say that there should be either 0 or 1 selected items in a reply to getUserMedia, currently, I&apos;m wondering if using a list with possibly multiple selections is the way to go (http://dev.w3.org/2011/webrtc/editor/getusermedia.html#implementation-suggestions)

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:126
&gt; +

Left over new line?

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:1217
&gt; +    UserMediaSelectorData* data = g_new(UserMediaSelectorData, 1);

This looks like a good place to use g_slice_new =)

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:1221
&gt; +    data-&gt;request = (WebKitWebUserMediaRequest*) g_object_ref(request);
&gt; +    data-&gt;audioMediaList = (WebKitWebUserMediaList*) g_object_ref(audioMediaList);
&gt; +    data-&gt;videoMediaList = (WebKitWebUserMediaList*) g_object_ref(videoMediaList);

We usually do C++-style casts, static_cast&lt;WebKit...*&gt;()

&gt; Source/WebKit/gtk/webkit/webkitwebview.h:162
&gt; +    gboolean                   (* choose_media_device)    (WebKitWebView             *web_view,

Adding this to the middle of the class struct breaks ABI. That&apos;s not a problem if we decide to break ABI for 2.0, but something to keep in mind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937034</commentid>
    <comment_count>42</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-10-07 06:39:15 -0700</bug_when>
    <thetext>I think we should focus on the WK2 implementation of this feature and actually disable it in WK1 if possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939979</commentid>
    <comment_count>43</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-10-15 08:55:34 -0700</bug_when>
    <thetext>Let&apos;s look at the bright future of WK2 :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159177</attachid>
            <date>2012-08-17 12:21:51 -0700</date>
            <delta_ts>2012-08-17 12:30:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94373-20120817162114.patch</filename>
            <type>text/plain</type>
            <size>31723</size>
            <attacher name="Danilo de Paula">danilo.eu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1Njg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggZGM5MTY4ZTI4
YjVlMGViMGM1MDQxNGMxY2M4MzZjOTM1NDVkMzg3Mi4uMzU4M2E2YThmNGQ0Nzk5MmZmYTRmNzkx
NzU2MzVmZjlkMzlhZjNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY1IEBACiAyMDEy
LTA4LTE3ICBEYW5pbG8gQ2VzYXIgTGVtZXMgZGUgUGF1bGEgIDxkYW5pbG8uY2VzYXJAY29sbGFi
b3JhLmNvLnVrPgogCisgICAgICAgIFtndGtdIGFkZGluZyBjb250YWluZXJzIGZvciB1c2VybWVk
aWEgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHdlYmtpdCBhbmQgYnJvd3Nlci4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MzczCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiB0aGUgdXNlciBtYWtlIGEg
Z2V0VXNlck1lZGlhIGNhbGwsIHdlYnZpZXcgd2lsbCBlbWl0IGEgc2lnbmFsIHRvIHRoZSBhcHBs
aWNhdGlvbgorICAgICAgICBjb250YWluaW5nIHRoZW4gcmVxdWVzdCBpdHNlbGYgKHdlYmtpdHdl
YnVzZXJtZWRpYXJlcXVlc3QpIGFuZCBhIGxpc3Qgd2l0aCB0aGUgYXZhaWxhYmxlCisgICAgICAg
IGRldmljZXMgKHdlYmtpdHdlYnVzZXJtZWRpYWxpc3QpLgorCisgICAgICAgIFRoaXMgY29tbWl0
IGFkZHMgdGhvc2Ugb2JqZWN0cywgdGhlIHJlbWFpbmluZyBwYXJ0IChsaWtlIHRoZSBzaWduYWwg
YW5kIG90aGVyIHBhcnRzKSB3aWxsCisgICAgICAgIGxhbmQgc29vbi4KKworCisgICAgICAgICog
R05VbWFrZWZpbGUuYW06CisgICAgICAgICogZG9jcy93ZWJraXRndGstZG9jcy5zZ21sOgorICAg
ICAgICAqIGRvY3Mvd2Via2l0Z3RrLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiB3ZWJraXQvd2Vi
a2l0Lmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3QuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZSk6CisgICAgICAgICh3
ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9kaXNwb3NlKToKKyAgICAgICAgKHdlYmtpdF93ZWJf
dXNlcl9tZWRpYV9saXN0X2ZpbmFsaXplKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRp
YV9saXN0X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3Rf
aW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfYXVkaW9fbGVu
Z3RoKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF92aWRlb19sZW5n
dGgpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2F1ZGlvX2l0ZW1f
bmFtZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfdmlkZW9faXRl
bV9uYW1lKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9hdWRpb19p
dGVtX3NlbGVjdGVkKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF92
aWRlb19pdGVtX3NlbGVjdGVkKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0
X3NlbGVjdF9hdWRpb19pdGVtKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0
X3NlbGVjdF92aWRlb19pdGVtKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6
OmF1ZGlvQ29yZSk6CisgICAgICAgIChXZWJLaXQ6OnZpZGVvQ29yZSk6CisgICAgICAgIChXZWJL
aXQ6OmtpdE5ldyk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3QuaDog
QWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViVXNlck1lZGlhTGlzdCk6CisgICAgICAgIChfV2Vi
S2l0V2ViVXNlck1lZGlhTGlzdENsYXNzKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2VidXNl
cm1lZGlhbGlzdHByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAq
IHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChf
V2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdFByaXZhdGUpOgorICAgICAgICAod2Via2l0X3dlYl91
c2VyX21lZGlhX3JlcXVlc3RfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJf
bWVkaWFfcmVxdWVzdF9pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1
ZXN0X3dhbnRzX2F1ZGlvKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0
X3dhbnRzX3ZpZGVvKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2dl
dF9vcmlnaW4pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Y29yZSk6Cisg
ICAgICAgIChXZWJLaXQ6OmtpdE5ldyk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnVzZXJt
ZWRpYXJlcXVlc3QuaDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVz
dCk6CisgICAgICAgIChfV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdENsYXNzKToKKyAgICAgICAg
KiB3ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGUuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogd2Via2l0L3dlYmtp
dHdlYnZpZXdwcml2YXRlLmg6CisKKzIwMTItMDgtMTcgIERhbmlsbyBDZXNhciBMZW1lcyBkZSBQ
YXVsYSAgPGRhbmlsby5jZXNhckBjb2xsYWJvcmEuY28udWs+CisKICAgICAgICAgW2d0a10gYWRk
IGVuYWJsZS1tZWRpYS1zdHJlYW0gdG8gd2Vic2V0dGluZ3MKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MzYxCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUu
YW0KaW5kZXggMjE1NTc2ZTUxODE0Y2NmMTJjYzBlZmViNjkyZWQ5ZGE3YjI0OTQ1Mi4uMDI0MTcx
MGU0ZjA4NTQ2MWQzZmU4ZTQwNTI1Y2VkZTBhM2EwMDZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ndGsvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZp
bGUuYW0KQEAgLTEzOCw2ICsxMzgsOCBAQCB3ZWJraXRndGtfc3RhdGljX2hfYXBpICs9IFwKIAkk
KHNyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9u
LmggXAogCSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicmVzb3Vy
Y2UuaCBcCiAJJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0
aW5ncy5oIFwKKwkkKHNyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVz
ZXJtZWRpYWxpc3QuaCBcCisJJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ1c2VybWVkaWFyZXF1ZXN0LmggXAogCSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaCBcCiAJJChzcmNkaXIpL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKIApAQCAtMjcyLDYgKzI3NCwxMCBAQCB3ZWJr
aXRndGtfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBs
dWdpbmRhdGFiYXNlcHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vic2V0dGluZ3MuY3BwIFwKIAlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0
dGluZ3Nwcml2YXRlLmggXAorCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2Vy
bWVkaWFsaXN0LmNwcCBcCisJU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJt
ZWRpYWxpc3Rwcml2YXRlLmggXAorCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1
c2VybWVkaWFyZXF1ZXN0LmNwcCBcCisJU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlLmggXAogCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcCBcCiAJU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZp
ZXdwcml2YXRlLmggXAogCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dm
ZWF0dXJlcy5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJraXRn
dGstZG9jcy5zZ21sIGIvU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJraXRndGstZG9jcy5zZ21s
CmluZGV4IDcyMTA2NTIyZmI1YmFiYThiMDA5ZmUzNTQ0YjlhZGYyM2ZjYmIxOTguLjVhM2FiYjNm
NjcxOGU1MTVhY2QzMzEwOWUxNGZlOWZlOWEwNGMzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZ3RrL2RvY3Mvd2Via2l0Z3RrLWRvY3Muc2dtbAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9k
b2NzL3dlYmtpdGd0ay1kb2NzLnNnbWwKQEAgLTMzLDYgKzMzLDggQEAKICAgICA8eGk6aW5jbHVk
ZSBocmVmPSJ4bWwvd2Via2l0ZG93bmxvYWQueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0i
eG1sL3dlYmtpdHZpZXdwb3J0YXR0cmlidXRlcy54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVm
PSJ4bWwvd2Via2l0aGl0dGVzdHJlc3VsdC54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4
bWwvd2Via2l0d2VidXNlcm1lZGlhbGlzdC54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4
bWwvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVm
PSJ4bWwvd2Via2l0d2VicGx1Z2luLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC93
ZWJraXR3ZWJwbHVnaW5kYXRhYmFzZS54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwv
d2Via2l0c291cGF1dGhkaWFsb2cueG1sIi8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9kb2NzL3dlYmtpdGd0ay1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzL3dl
YmtpdGd0ay1zZWN0aW9ucy50eHQKaW5kZXggNTk5NzBiNTljMTc1YWJhYWVlZWQ5ZTM4NTk1Mjdh
NjY3NjI0ZTFiNy4uZDFhZmYxMGUyMTVhYjczY2NkYzVhMmEyMWI1Y2VkNDM5NWFjYjA0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJraXRndGstc2VjdGlvbnMudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3Mvd2Via2l0Z3RrLXNlY3Rpb25zLnR4dApAQCAtNjgy
LDYgKzY4Miw1MSBAQCBXZWJLaXRJY29uRGF0YWJhc2VQcml2YXRlCiA8L1NFQ1RJT04+CiAKIDxT
RUNUSU9OPgorPEZJTEU+d2Via2l0d2VidXNlcm1lZGlhbGlzdDwvRklMRT4KKzxUSVRMRT5XZWJL
aXRXZWJVc2VyTWVkaWFMaXN0PC9USVRMRT4KK1dlYktpdFdlYlVzZXJNZWRpYUxpc3QKK3dlYmtp
dF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9hdWRpb19sZW5ndGgKK3dlYmtpdF93ZWJfdXNlcl9t
ZWRpYV9saXN0X2dldF92aWRlb19sZW5ndGgKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dl
dF9hdWRpb19pdGVtX25hbWUKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF92aWRlb19p
dGVtX25hbWUKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9hdWRpb19pdGVtX3NlbGVj
dGVkCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfdmlkZW9faXRlbV9zZWxlY3RlZAor
d2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3Rfc2VsZWN0X2F1ZGlvX2l0ZW0KK3dlYmtpdF93ZWJf
dXNlcl9tZWRpYV9saXN0X3NlbGVjdF92aWRlb19pdGVtCis8U1VCU0VDVElPTiBTdGFuZGFyZD4K
K1dFQktJVF9JU19XRUJfVVNFUl9NRURJQV9MSVNUCitXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFf
TElTVF9DTEFTUworV0VCS0lUX1dFQl9VU0VSX01FRElBX0xJU1QKK1dFQktJVF9XRUJfVVNFUl9N
RURJQV9MSVNUX0NMQVNTCitXRUJLSVRfV0VCX1VTRVJfTUVESUFfTElTVF9HRVRfQ0xBU1MKK1dF
QktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1QKKzxTVUJTRUNUSU9OIFByaXZhdGU+CitXZWJL
aXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZQorV2ViS2l0V2ViVXNlck1lZGlhTGlzdENsYXNzCit3
ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfdHlwZQorPC9TRUNUSU9OPgorCis8U0VDVElP
Tj4KKzxGSUxFPndlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Q8L0ZJTEU+Cis8VElUTEU+V2ViS2l0
V2ViVXNlck1lZGlhUmVxdWVzdDwvVElUTEU+CitXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Cit3
ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF93YW50c19hdWRpbword2Via2l0X3dlYl91c2Vy
X21lZGlhX3JlcXVlc3Rfd2FudHNfdmlkZW8KK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0
X2dldF9vcmlnaW4KKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorV0VCS0lUX0lTX1dFQl9VU0VSX01F
RElBX1JFUVVFU1QKK1dFQktJVF9JU19XRUJfVVNFUl9NRURJQV9SRVFVRVNUX0NMQVNTCitXRUJL
SVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFVRVNUCitXRUJLSVRfV0VCX1VTRVJfTUVESUFfUkVR
VUVTVAorV0VCS0lUX1dFQl9VU0VSX01FRElBX1JFUVVFU1RfQ0xBU1MKK1dFQktJVF9XRUJfVVNF
Ul9NRURJQV9SRVFVRVNUX0dFVF9DTEFTUworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdFdl
YlVzZXJNZWRpYVJlcXVlc3RDbGFzcworV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdFByaXZhdGUK
K3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2dldF90eXBlCis8L1NFQ1RJT04+CisKKzxT
RUNUSU9OPgogPEZJTEU+d2Via2l0ZmF2aWNvbmRhdGFiYXNlPC9GSUxFPgogPFRJVExFPldlYktp
dEZhdmljb25EYXRhYmFzZTwvVElUTEU+CiBXZWJLaXRGYXZpY29uRGF0YWJhc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaCBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXQuaAppbmRleCBhYTdiOTNkYmRhOGMyNmRlMjFlOTgyZDM5YzYxNjVmYjhj
MmY1ZTc3Li5iZjE2YTI1ZTkyZWQ1NWY5YjIwN2I0YTcyYmM2M2JiODk2OWYxZWIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmgKKysrIGIvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdC5oCkBAIC01MSw2ICs1MSw4IEBACiAjaW5jbHVkZSA8d2Via2l0
L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnJl
c291cmNlLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmg+CisjaW5jbHVk
ZSA8d2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Vi
a2l0d2VidXNlcm1lZGlhcmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ2aWV3
Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmg+CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45ZjNkOWI1ZjUxNzRiZGE5ODFkOTkyOTBmNDhjZGM5Y2UzMDc3NGI0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRp
YWxpc3QuY3BwCkBAIC0wLDAgKzEsMjcwIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMiBD
b2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
ICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBp
ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAg
VVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKworI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYWxpc3QuaCIKKworI2luY2x1ZGUgIk1l
ZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIKKyNp
bmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZS5oIgorCisjaW5jbHVkZSA8Z2xp
Yi5oPgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKKworLyoqCisgKiBTRUNUSU9OOndlYmtpdHdl
YnVzZXJtZWRpYWxpc3QKKyAqIEBzaG9ydF9kZXNjcmlwdGlvbjogVXNlck1lZGlhIExpc3QKKyAq
IEBUaXRsZTogV2ViS2l0V2ViVXNlck1lZGlhTGlzdAorICoKKyAqICNXZWJLaXRXZWJVc2VyTWVk
aWFMaXN0IGNvbnRhaW5zIGEgbGlzdCBvZgorICogYXVkaW8gYW5kIHZpZGVvIHNvdXJjZXMgZnJv
bSBhIFdlYlVzZXJNZWRpYVJlcXVlc3QKKyAqCisgKiBTaW5jZTogMS4xMC4wCisgKi8KKwordXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKKworc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJp
dmF0ZSB7CisgICAgV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgYXVkaW9Tb3VyY2Vz
OworICAgIFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yIHZpZGVvU291cmNlczsKKyAg
ICBnYm9vbGVhbiogYXVkaW9Tb3VyY2VTZWxlY3Rpb25zOworICAgIGdib29sZWFuKiB2aWRlb1Nv
dXJjZVNlbGVjdGlvbnM7Cit9OworCitHX0RFRklORV9UWVBFKFdlYktpdFdlYlVzZXJNZWRpYUxp
c3QsIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0LCBHX1RZUEVfT0JKRUNUKTsKKworc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZGlzcG9zZShHT2JqZWN0KiBvYmplY3Qp
Cit7CisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfcGFyZW50
X2NsYXNzKS0+ZGlzcG9zZShvYmplY3QpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3Vz
ZXJfbWVkaWFfbGlzdF9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgV2ViS2l0V2Vi
VXNlck1lZGlhTGlzdCogdXNlck1lZGlhTGlzdCA9IFdFQktJVF9XRUJfVVNFUl9NRURJQV9MSVNU
KG9iamVjdCk7CisKKyAgICBnX2ZyZWUodXNlck1lZGlhTGlzdC0+cHJpdi0+YXVkaW9Tb3VyY2VT
ZWxlY3Rpb25zKTsKKyAgICBnX2ZyZWUodXNlck1lZGlhTGlzdC0+cHJpdi0+dmlkZW9Tb3VyY2VT
ZWxlY3Rpb25zKTsKKworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9s
aXN0X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2NsYXNzX2luaXQoV2ViS2l0V2ViVXNlck1lZGlhTGlz
dENsYXNzKiBsaXN0Q2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBnb2JqZWN0X2NsYXNzID0g
R19PQkpFQ1RfQ0xBU1MobGlzdENsYXNzKTsKKyAgICBnb2JqZWN0X2NsYXNzLT5kaXNwb3NlID0g
d2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZGlzcG9zZTsKKyAgICBnb2JqZWN0X2NsYXNzLT5m
aW5hbGl6ZSA9IHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2ZpbmFsaXplOworCisgICAgd2Vi
a2l0SW5pdCgpOworCisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGxpc3RDbGFzcywgc2l6
ZW9mKFdlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlKSk7Cit9CisKK3N0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2luaXQoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCogbGlz
dCkKK3sKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9J
TlNUQU5DRV9HRVRfUFJJVkFURShsaXN0LCBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNU
LCBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZSk7CisgICAgbGlzdC0+cHJpdiA9IHByaXY7
Cit9CisKKy8qKgorICogd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2F1ZGlvX2xlbmd0
aDoKKyAqIEBsaXN0OiB0aGUgV2ViS2l0V2ViVXNlck1lZGlhTGlzdCBpdHNlbGYKKyAqCisgKiBS
ZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBhdWRpbyBlbGVtZW50cyBsaXN0LgorICoKKyAqIFJldHVy
biB2YWx1ZTogbnVtYmVyIG9mIGF1ZGlvIGVsZW1lbnRzLgorICoKKyAqIFNpbmNlOiAxLjEwLjAK
KyAqLworZ3VpbnQgd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2F1ZGlvX2xlbmd0aChX
ZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBsaXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9MSVNUKGxpc3QpLCAwKTsKKworICAgIHJldHVybiBh
dWRpb0NvcmUobGlzdCkuc2l6ZSgpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdXNlcl9tZWRp
YV9saXN0X2dldF92aWRlb19sZW5ndGg6CisgKiBAbGlzdDogdGhlIFdlYktpdFdlYlVzZXJNZWRp
YUxpc3QgaXRzZWxmCisgKgorICogUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgdmlkZW8gZWxlbWVu
dHMgbGlzdC4gCisgKgorICogUmV0dXJuIHZhbHVlOiBudW1iZXIgb2YgdmlkZW8gZWxlbWVudHMu
CisgKgorICogU2luY2U6IDEuMTAuMAorICovCitndWludCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFf
bGlzdF9nZXRfdmlkZW9fbGVuZ3RoKFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGxpc3QpCit7Cisg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX0xJU1QobGlz
dCksIDApOworCisgICAgcmV0dXJuIHZpZGVvQ29yZShsaXN0KS5zaXplKCk7Cit9CisKKy8qKgor
ICogd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2F1ZGlvX2l0ZW1fbmFtZToKKyAqIEBs
aXN0OiB0aGUgV2ViS2l0V2ViVXNlck1lZGlhTGlzdCBpdHNlbGYKKyAqIEBpbmRleDogdGhlIHdh
bnRlZCBlbGVtZW50IGluZGV4LgorICoKKyAqIFJldHVybnMgdGhlIGRldmljZSBuYW1lIG9mIGFu
IGF1ZGlvIGVsZW1lbnQuCisgKgorICogUmV0dXJuIHZhbHVlOiB0aGUgZGV2aWNlIGlkIG9mIHRo
ZSBAaW5kZXggZ2l2ZW4gZWxlbWVudC4KKyAqCisgKiBTaW5jZTogMS4xMC4wCisgKi8KK2NvbnN0
IGdjaGFyKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfYXVkaW9faXRlbV9uYW1lKFdl
YktpdFdlYlVzZXJNZWRpYUxpc3QqIGxpc3QsIGd1aW50IGluZGV4KQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9MSVNUKGxpc3QpLCAwKTsKKwor
ICAgIFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2VzID0gYXVkaW9Db3Jl
KGxpc3QpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGluZGV4IDwgc291cmNlcy5zaXplKCks
IDApOworCisgICAgcmV0dXJuIGdfc3RyZHVwKHNvdXJjZXNbaW5kZXhdLT5uYW1lKCkudXRmOCgp
LmRhdGEoKSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X3Zp
ZGVvX2l0ZW1fbmFtZToKKyAqIEBsaXN0OiB0aGUgI1dlYktpdFdlYlVzZXJNZWRpYUxpc3QgaXRz
ZWxmCisgKiBAaW5kZXg6IHRoZSB3YW50ZWQgZWxlbWVudCBpbmRleC4KKyAqCisgKiBSZXR1cm5z
IHRoZSBkZXZpY2UgbmFtZSBvZiBhbiB2aWRlbyBlbGVtZW50LgorICoKKyAqIFJldHVybiB2YWx1
ZTogdGhlIGRldmljZSBpZCBvZiB0aGUgQGluZGV4IGdpdmVuIGVsZW1lbnQuCisgKgorICogU2lu
Y2U6IDEuMTAuMAorICovCitjb25zdCBnY2hhciogd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3Rf
Z2V0X3ZpZGVvX2l0ZW1fbmFtZShXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBsaXN0LCBndWludCBp
bmRleCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVE
SUFfTElTVChsaXN0KSwgMCk7CisKKyAgICBXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3Rv
ciYgc291cmNlcyA9IHZpZGVvQ29yZShsaXN0KTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChp
bmRleCA8IHNvdXJjZXMuc2l6ZSgpLCAwKTsKKworICAgIHJldHVybiBnX3N0cmR1cChzb3VyY2Vz
W2luZGV4XS0+bmFtZSgpLnV0ZjgoKS5kYXRhKCkpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJf
dXNlcl9tZWRpYV9saXN0X2dldF9hdWRpb19pdGVtX3NlbGVjdGVkOgorICogQGxpc3Q6IHRoZSAj
V2ViS2l0V2ViVXNlck1lZGlhTGlzdCBpdHNlbGYKKyAqIEBpbmRleDogdGhlIHdhbnRlZCBlbGVt
ZW50IGluZGV4LgorICoKKyAqIEluZGljYXRlIGlmIGFuIGF1ZGlvIGRldmljZSBpcyBtYXJrZWQg
YXMgc2VsZWN0ZWQuCisgKgorICogUmV0dXJuIHZhbHVlOiBUcnVlIGlmIHRoZSBkZXZpY2UgcmVw
cmVzZW50ZWQgYnkgQGluZGV4IGlzIG1hcmtlZCBhcyBzZWxlY3RlZC4KKyAqCisgKiBTaW5jZTog
MS4xMC4wCisgKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9hdWRp
b19pdGVtX3NlbGVjdGVkKFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGxpc3QsIGd1aW50IGluZGV4
KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9M
SVNUKGxpc3QpLCBGQUxTRSk7CisKKyAgICBXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3Rv
ciYgc291cmNlcyA9IGF1ZGlvQ29yZShsaXN0KTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChp
bmRleCA8IHNvdXJjZXMuc2l6ZSgpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gbGlzdC0+cHJpdi0+
YXVkaW9Tb3VyY2VTZWxlY3Rpb25zW2luZGV4XTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3Vz
ZXJfbWVkaWFfbGlzdF9nZXRfdmlkZW9faXRlbV9zZWxlY3RlZDoKKyAqIEBsaXN0OiB0aGUgI1dl
YktpdFdlYlVzZXJNZWRpYUxpc3QgaXRzZWxmCisgKiBAaW5kZXg6IHRoZSB3YW50ZWQgZWxlbWVu
dCBpbmRleC4KKyAqCisgKiBJbmRpY2F0ZSBpZiBhIHZpZGVvIGRldmljZSBpcyBtYXJrZWQgYXMg
c2VsZWN0ZWQuCisgKgorICogUmV0dXJuIHZhbHVlOiBUcnVlIGlmIHRoZSBkZXZpY2UgcmVwcmVz
ZW50ZWQgYnkgQGluZGV4IGlzIG1hcmtlZCBhcyBzZWxlY3RlZC4KKyAqCisgKiBTaW5jZTogMS4x
MC4wCisgKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF92aWRlb19p
dGVtX3NlbGVjdGVkKFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGxpc3QsIGd1aW50IGluZGV4KQor
eworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9MSVNU
KGxpc3QpLCBGQUxTRSk7CisKKyAgICBXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYg
c291cmNlcyA9IHZpZGVvQ29yZShsaXN0KTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChpbmRl
eCA8IHNvdXJjZXMuc2l6ZSgpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gbGlzdC0+cHJpdi0+dmlk
ZW9Tb3VyY2VTZWxlY3Rpb25zW2luZGV4XTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3VzZXJf
bWVkaWFfbGlzdF9zZWxlY3RfYXVkaW9faXRlbToKKyAqIEBsaXN0OiB0aGUgI1dlYktpdFdlYlVz
ZXJNZWRpYUxpc3QgaXRzZWxmCisgKiBAaW5kZXg6IHRoZSB3YW50ZWQgZWxlbWVudCBpbmRleC4K
KyAqCisgKiBNYXJrIGFuIGF1ZGlvIGRldmljZSBhcyBzZWxlY3RlZWQuCisgKgorICogU2luY2U6
IDEuMTAuMAorICovCit2b2lkIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X3NlbGVjdF9hdWRp
b19pdGVtKFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGxpc3QsIGd1aW50IGluZGV4KQoreworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX0xJU1QobGlzdCkpOwor
CisgICAgV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHNvdXJjZXMgPSBhdWRpb0Nv
cmUobGlzdCk7CisgICAgZ19yZXR1cm5faWZfZmFpbChpbmRleCA8IHNvdXJjZXMuc2l6ZSgpKTsK
KworICAgIGxpc3QtPnByaXYtPmF1ZGlvU291cmNlU2VsZWN0aW9uc1tpbmRleF0gPSBUUlVFOwor
fQorCisvKioKKyAqIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X3NlbGVjdF92aWRlb19pdGVt
OgorICogQGxpc3Q6IHRoZSAjV2ViS2l0V2ViVXNlck1lZGlhTGlzdCBpdHNlbGYKKyAqIEBpbmRl
eDogdGhlIHdhbnRlZCBlbGVtZW50IGluZGV4LgorICoKKyAqIE1hcmsgYW4gdmlkZW8gZGV2aWNl
IGFzIHNlbGVjdGVlZC4KKyAqCisgKiBTaW5jZTogMS4xMC4wCisgKi8KK3ZvaWQgd2Via2l0X3dl
Yl91c2VyX21lZGlhX2xpc3Rfc2VsZWN0X3ZpZGVvX2l0ZW0oV2ViS2l0V2ViVXNlck1lZGlhTGlz
dCogbGlzdCwgZ3VpbnQgaW5kZXgpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNf
V0VCX1VTRVJfTUVESUFfTElTVChsaXN0KSk7CisKKyAgICBXZWJDb3JlOjpNZWRpYVN0cmVhbVNv
dXJjZVZlY3RvciYgc291cmNlcyA9IHZpZGVvQ29yZShsaXN0KTsKKyAgICBnX3JldHVybl9pZl9m
YWlsKGluZGV4IDwgc291cmNlcy5zaXplKCkpOworCisgICAgbGlzdC0+cHJpdi0+dmlkZW9Tb3Vy
Y2VTZWxlY3Rpb25zW2luZGV4XSA9IFRSVUU7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitX
ZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Db3JlKFdlYktpdFdlYlVzZXJN
ZWRpYUxpc3QqIGxpc3QpCit7CisgICAgcmV0dXJuIGxpc3QtPnByaXYtPmF1ZGlvU291cmNlczsK
K30KKworV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVvQ29yZShXZWJLaXRX
ZWJVc2VyTWVkaWFMaXN0KiBsaXN0KQoreworICAgIHJldHVybiBsaXN0LT5wcml2LT52aWRlb1Nv
dXJjZXM7Cit9CisKK1dlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGtpdE5ldyhjb25zdCBXZWJDb3Jl
OjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBXZWJDb3JlOjpN
ZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKQoreworICAgIFdlYktpdFdlYlVz
ZXJNZWRpYUxpc3QqIHdlYkxpc3QgPSBXRUJLSVRfV0VCX1VTRVJfTUVESUFfTElTVChnX29iamVj
dF9uZXcoV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfTElTVCwgTlVMTCkpOworICAgIHdlYkxp
c3QtPnByaXYtPmF1ZGlvU291cmNlcyA9IGF1ZGlvU291cmNlczsKKyAgICB3ZWJMaXN0LT5wcml2
LT52aWRlb1NvdXJjZXMgPSB2aWRlb1NvdXJjZXM7CisgICAgd2ViTGlzdC0+cHJpdi0+YXVkaW9T
b3VyY2VTZWxlY3Rpb25zID0gZ19uZXcwKGdib29sZWFuLCBhdWRpb1NvdXJjZXMuc2l6ZSgpKTsK
KyAgICB3ZWJMaXN0LT5wcml2LT52aWRlb1NvdXJjZVNlbGVjdGlvbnMgPSBnX25ldzAoZ2Jvb2xl
YW4sIHZpZGVvU291cmNlcy5zaXplKCkpOworCisgICAgcmV0dXJuIHdlYkxpc3Q7Cit9CisKK30K
KworI2VuZGlmIC8qIEVOQUJMRShNRURJQV9TVFJFQU0pICovCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdC5oIGIvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYmJkMTVk
ZTVhMTQ3YTY1NDNiZTk4NTQ2NTM1NTczNjNhMTA1NDMzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3QuaApAQCAtMCwwICsx
LDgzIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMiBDb2xsYWJvcmEgTHRkLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq
ICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworCisjaWZuZGVm
IHdlYmtpdHdlYnVzZXJtZWRpYWxpc3RfaAorI2RlZmluZSB3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0
X2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8Z2xpYi5oPgorCisjaW5j
bHVkZSA8d2Via2l0L3dlYmtpdGRlZmluZXMuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5l
IFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1QgICAgICAgICAgICAgICAod2Via2l0X3dl
Yl91c2VyX21lZGlhX2xpc3RfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9VU0VSX01F
RElBX0xJU1Qob2JqKSAgICAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgo
b2JqKSwgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfTElTVCwgV2ViS2l0V2ViVXNlck1lZGlh
TGlzdCkpCisjZGVmaW5lIFdFQktJVF9XRUJfVVNFUl9NRURJQV9MSVNUX0NMQVNTKGtsYXNzKSAg
ICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9V
U0VSX01FRElBX0xJU1QsIFdlYktpdFdlYlVzZXJNZWRpYUxpc3RDbGFzcykpCisjZGVmaW5lIFdF
QktJVF9JU19XRUJfVVNFUl9NRURJQV9MSVNUKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNL
X0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1QpKQor
I2RlZmluZSBXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfTElTVF9DTEFTUyhrbGFzcykgICAgKEdf
VFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJ
QV9MSVNUKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9VU0VSX01FRElBX0xJU1RfR0VUX0NMQVNTKG9i
aikgICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfV0VC
X1VTRVJfTUVESUFfTElTVCwgV2ViS2l0V2ViVXNlck1lZGlhTGlzdENsYXNzKSkKKwordHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRpYUxpc3QgV2ViS2l0V2ViVXNlck1lZGlhTGlzdDsK
K3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0Q2xhc3MgV2ViS2l0V2ViVXNl
ck1lZGlhTGlzdENsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRpYUxpc3RQ
cml2YXRlIFdlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdFdl
YlVzZXJNZWRpYUxpc3QgeworICAgIEdPYmplY3QgcGFyZW50X2luc3RhbmNlOworICAgIFdlYktp
dFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRXZWJV
c2VyTWVkaWFMaXN0Q2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9Owor
CitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfdHlwZSAo
dm9pZCkgR19HTlVDX0NPTlNUOworCitXRUJLSVRfQVBJIGd1aW50Cit3ZWJraXRfd2ViX3VzZXJf
bWVkaWFfbGlzdF9nZXRfYXVkaW9fbGVuZ3RoICAgIChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0ICps
aXN0KTsKKworV0VCS0lUX0FQSSBndWludAord2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0
X3ZpZGVvX2xlbmd0aCAgICAoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCAqbGlzdCk7CisKK1dFQktJ
VF9BUEkgY29uc3QgZ2NoYXIgKgord2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2F1ZGlv
X2l0ZW1fbmFtZSAoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCAqbGlzdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IGluZGV4KTsKK1dFQktJVF9B
UEkgY29uc3QgZ2NoYXIgKgord2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X3ZpZGVvX2l0
ZW1fbmFtZSAoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCAqbGlzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IGluZGV4KTsKKworV0VCS0lUX0FQ
SSBnYm9vbGVhbgord2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2F1ZGlvX2l0ZW1fc2Vs
ZWN0ZWQoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCAqbGlzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IGluZGV4KTsKK1dFQktJVF9BUEkgZ2Jvb2xl
YW4KK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF92aWRlb19pdGVtX3NlbGVjdGVkKFdl
YktpdFdlYlVzZXJNZWRpYUxpc3QgKmxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBndWludCBpbmRleCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0
X3dlYl91c2VyX21lZGlhX2xpc3Rfc2VsZWN0X3ZpZGVvX2l0ZW0gKFdlYktpdFdlYlVzZXJNZWRp
YUxpc3QgKmxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ3VpbnQgaW5kZXgpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdXNlcl9tZWRp
YV9saXN0X3NlbGVjdF9hdWRpb19pdGVtIChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0ICpsaXN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgaW5kZXgp
OworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogd2Via2l0d2VidXNlcm1lZGlhbGlzdF9oICov
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlh
bGlzdHByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVk
aWFsaXN0cHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4OWE1NzQ4ZDg3ZGU1MDNmZjEwYjA2NGE4MGY5
MDM3YjU4YTMxMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2VidXNlcm1lZGlhbGlzdHByaXZhdGUuaApAQCAtMCwwICsxLDM4IEBACisvKgorICog
IENvcHlyaWdodCAoQykgMjAxMiBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisg
KiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9z
dG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworCisjaWZuZGVmIHdlYmtpdHdlYnVzZXJt
ZWRpYWxpc3Rwcml2YXRlX2gKKyNkZWZpbmUgd2Via2l0d2VidXNlcm1lZGlhbGlzdHByaXZhdGVf
aAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291
cmNlLmgiCisjaW5jbHVkZSAid2Via2l0d2VidXNlcm1lZGlhbGlzdC5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvQ29yZShX
ZWJLaXRXZWJVc2VyTWVkaWFMaXN0Kik7CitXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3Rv
ciYgdmlkZW9Db3JlKFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqKTsKK1dlYktpdFdlYlVzZXJNZWRp
YUxpc3QqIGtpdE5ldyhjb25zdCBXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYsIGNv
bnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJik7CisKK30KKworI2VuZGlmIC8q
IEVOQUJMRShNRURJQV9TVFJFQU0pICovCisKKyNlbmRpZiAvKiB3ZWJraXR3ZWJ1c2VybWVkaWFs
aXN0cHJpdmF0ZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2VidXNlcm1lZGlhcmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2VidXNlcm1lZGlhcmVxdWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWFmZjVmMzBmYmI0YTUwNzM4
NGQ0NGE2NjcxZmFmMTI3N2U3ZTlhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0LmNwcApAQCAtMCwwICsxLDEzOSBA
QAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGlj
ZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT
b2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIndlYmtpdHdl
YnVzZXJtZWRpYXJlcXVlc3QuaCIKKworI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFSZXF1ZXN0LmgiCisjaW5jbHVkZSAi
d2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFyZXF1
ZXN0cHJpdmF0ZS5oIgorI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDxnbGliL2dpMThuLWxp
Yi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworLyoqCisgKiBTRUNUSU9OOndl
YmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QKKyAqIEBzaG9ydF9kZXNjcmlwdGlvbjogVGhlIFdlYktp
dCdzIFVzZXJNZWRpYSBSZXF1ZXN0LgorICogQFRpdGxlOiBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1
ZXN0CisgKgorICogVGhpcyBvYmplY3QgY29udGFpbnMgdGhlIGluZm9ybWF0aW9uIG9mIGEgbWVk
aWEgcmVxdWVzdC4KKyAqIEl0IGNhbiBiZSB1c2VkIHRvIGNoZWNrIGlmIHRoZSByZXF1ZXN0IGlz
IGFza2luZyBmb3IgYXVkaW8gYW5kL29yIHZpZGVvLgorICoKKyAqIFNpbmNlOiAxLjEwLjAKKyAq
LworCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRp
YVJlcXVlc3RQcml2YXRlIHsKKyAgICBSZWZQdHI8V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdD4g
dXNlck1lZGlhUmVxdWVzdDsKK307CisKK0dfREVGSU5FX1RZUEUoV2ViS2l0V2ViVXNlck1lZGlh
UmVxdWVzdCwgd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3QsIEdfVFlQRV9PQkpFQ1QpOwor
CitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9jbGFzc19pbml0KFdl
YktpdFdlYlVzZXJNZWRpYVJlcXVlc3RDbGFzcyogcmVxdWVzdENsYXNzKQoreworICAgIHdlYmtp
dEluaXQoKTsKKworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShyZXF1ZXN0Q2xhc3MsIHNp
emVvZihXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSkpOworfQorCitzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9pbml0KFdlYktpdFdlYlVzZXJNZWRpYVJl
cXVlc3QqIHJlcXVlc3QpCit7CisgICAgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdFByaXZhdGUq
IHByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUocmVxdWVzdCwgV0VCS0lUX1RZUEVf
V0VCX1VTRVJfTUVESUFfUkVRVUVTVCwgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdFByaXZhdGUp
OworICAgIHJlcXVlc3QtPnByaXYgPSBwcml2OworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdXNl
cl9tZWRpYV9yZXF1ZXN0X3dhbnRzX2F1ZGlvOgorICogQHJlcXVlc3Q6IHRoZSAjV2ViS2l0VXNl
ck1lZGlhUmVxdWVzdCBpdHNlbGYuCisgKgorICogSW5kaWNhdGVzIHRoZSBjb250ZW50IG9mIGFu
IFVzZXJNZWRpYVJlcXVlc3QuCisgKgorICogUmV0dXJuIHZhbHVlOiBUcnVlIGlmIHRoZSByZXF1
ZXN0IGNvbnRhaW5zIGFuIGF1ZGlvIHJlcXVlc3QuCisgKgorICogU2luY2U6IDEuMTAuMAorICov
CitnYm9vbGVhbiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF93YW50c19hdWRpbyhXZWJL
aXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9SRVFVRVNUKHJlcXVlc3QpLCBGQUxTRSk7CisK
KyAgICByZXR1cm4gY29yZShyZXF1ZXN0KS0+YXVkaW8oKTsKK30KKworLyoqCisgKiB3ZWJraXRf
d2ViX3VzZXJfbWVkaWFfcmVxdWVzdF93YW50c192aWRlbzoKKyAqIEByZXF1ZXN0OiB0aGUgI1dl
YktpdFVzZXJNZWRpYVJlcXVlc3QgaXRzZWxmLgorICoKKyAqIEluZGljYXRlcyB0aGUgY29udGVu
dCBvZiBhbiBVc2VyTWVkaWFSZXF1ZXN0LgorICoKKyAqIFJldHVybiB2YWx1ZTogVHJ1ZSBpZiB0
aGUgcmVxdWVzdCBjb250YWlucyBhIHZpZGVvIHJlcXVlc3QuCisgKgorICogU2luY2U6IDEuMTAu
MAorICovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF93YW50c192aWRl
byhXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9SRVFVRVNUKHJlcXVlc3QpLCBGQUxT
RSk7CisKKyAgICByZXR1cm4gY29yZShyZXF1ZXN0KS0+dmlkZW8oKTsKK30KKworLyoqCisgKiB3
ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9nZXRfb3JpZ2luOgorICogQHJlcXVlc3Q6IHRo
ZSAjV2ViS2l0VXNlck1lZGlhUmVxdWVzdCBpdHNlbGYuCisgKgorICogVGhlIG9yaWdpbiBvZiBh
IG1lZGlhIHJlcXVlc3QuCisgKgorICogUmV0dXJuIHZhbHVlOiBzdHJpbmcgd2l0aCB0aGUgb3Jp
Z2luIG9mIGEgbWVkaWEgcmVxdWVzdC4KKyAqCisgKiBTaW5jZTogMS4xMC4wCisgKi8KK2NvbnN0
IGdjaGFyKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9nZXRfb3JpZ2luKFdlYktpdFdl
YlVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
V0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX1JFUVVFU1QocmVxdWVzdCksIE5VTEwpOworCisgICAg
cmV0dXJuIGNvcmUocmVxdWVzdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlP
cmlnaW4oKS0+dG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpOworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCogY29yZShXZWJLaXRXZWJVc2VyTWVkaWFS
ZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19X
RUJfVVNFUl9NRURJQV9SRVFVRVNUKHJlcXVlc3QpLCBOVUxMKTsKKworICAgIHJldHVybiByZXF1
ZXN0LT5wcml2LT51c2VyTWVkaWFSZXF1ZXN0LmdldCgpOworfQorCitXZWJLaXRXZWJVc2VyTWVk
aWFSZXF1ZXN0KiBraXROZXcoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKK3sK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChyZXF1ZXN0LCBOVUxMKTsKKworICAgIFdlYktpdFdl
YlVzZXJNZWRpYVJlcXVlc3QqIHdlYlJlcXVlc3QgPSBXRUJLSVRfV0VCX1VTRVJfTUVESUFfUkVR
VUVTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCwgTlVM
TCkpOworICAgIHdlYlJlcXVlc3QtPnByaXYtPnVzZXJNZWRpYVJlcXVlc3QgPSByZXF1ZXN0Owor
CisgICAgcmV0dXJuIHdlYlJlcXVlc3Q7Cit9CisKK30KKworI2VuZGlmIC8qIEVOQUJMRShNRURJ
QV9TVFJFQU0pICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2VidXNlcm1lZGlhcmVxdWVzdC5oIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnVzZXJtZWRpYXJlcXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTEzOTIxODZmZGU5YjE5YTM5MzlkM2Ni
YjMyOWJhMmU5OGFiNmMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuaApAQCAtMCwwICsxLDY0IEBACisvKgorICog
IENvcHlyaWdodCAoQykgMjAxMiBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisg
KiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9z
dG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworCisjaWZuZGVmIHdlYmtpdHdlYnVzZXJt
ZWRpYXJlcXVlc3RfaAorI2RlZmluZSB3ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0X2gKKworI2lu
Y2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8Z2xpYi5oPgorCisjaW5jbHVkZSA8d2Vi
a2l0L3dlYmtpdGRlZmluZXMuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9U
WVBFX1dFQl9VU0VSX01FRElBX1JFUVVFU1QgICAgICAgICAgICAod2Via2l0X3dlYl91c2VyX21l
ZGlhX3JlcXVlc3RfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9VU0VSX01FRElBX1JF
UVVFU1Qob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwg
V0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCwgV2ViS2l0V2ViVXNlck1lZGlhUmVx
dWVzdCkpCisjZGVmaW5lIFdFQktJVF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUX0NMQVNTKGtsYXNz
KSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9V
U0VSX01FRElBX1JFUVVFU1QsIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RDbGFzcykpCisjZGVm
aW5lIFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9SRVFVRVNUKG9iaikgICAgICAgICAoR19UWVBF
X0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX1JF
UVVFU1QpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfUkVRVUVTVF9DTEFTUyhr
bGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJf
VVNFUl9NRURJQV9SRVFVRVNUKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9VU0VSX01FRElBX1JFUVVF
U1RfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VC
S0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCwgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVz
dENsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QgV2Vi
S2l0V2ViVXNlck1lZGlhUmVxdWVzdDsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVk
aWFSZXF1ZXN0Q2xhc3MgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdENsYXNzOwordHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRlIFdlYktpdFdlYlVzZXJNZWRp
YVJlcXVlc3RQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3Qgewor
ICAgIEdPYmplY3QgcGFyZW50X2luc3RhbmNlOworICAgIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVl
c3RQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0
Q2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitXRUJLSVRfQVBJ
IEdUeXBlCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9nZXRfdHlwZSAodm9pZCkgR19H
TlVDX0NPTlNUOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFf
cmVxdWVzdF93YW50c19hdWRpbyAgICAgICAgICAgICAgKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVl
c3QgKnJlcXVlc3QpOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfd2ViX3VzZXJfbWVk
aWFfcmVxdWVzdF93YW50c192aWRlbyAgICAgICAgICAgICAgKFdlYktpdFdlYlVzZXJNZWRpYVJl
cXVlc3QgKnJlcXVlc3QpOworCitXRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKK3dlYmtpdF93ZWJf
dXNlcl9tZWRpYV9yZXF1ZXN0X2dldF9vcmlnaW4gICAgICAgICAgICAgICAoV2ViS2l0V2ViVXNl
ck1lZGlhUmVxdWVzdCAqcmVxdWVzdCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiB3ZWJr
aXR3ZWJ1c2VybWVkaWFyZXF1ZXN0X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTgyZmE3MWFjNjhjZjFhMTFlNDEyZDc1NjJkYWNiYjczNjRmNjJmZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0
cHJpdmF0ZS5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIENv
bGxhYm9yYSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg
KiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlm
IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBV
U0EKKyAqLworCisKKyNpZm5kZWYgd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGVfaAor
I2RlZmluZSB3ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZV9oCisKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAid2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgVXNlck1lZGlhUmVxdWVzdDsKK30KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1dlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqIGNvcmUoV2ViS2l0
V2ViVXNlck1lZGlhUmVxdWVzdCopOworV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCoga2l0TmV3
KFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqKTsKKworfQorCisjZW5kaWYgLyogRU5BQkxFKE1F
RElBX1NUUkVBTSkgKi8KKworI2VuZGlmIC8qIHdlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2
YXRlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXdwcml2
YXRlLmgKaW5kZXggYzMwMjY5NmQyODhiYjFiZDgzMzg3ZWU5YjUyNWZmM2Y5OTdlZjRjNC4uZmE4
YzI4NGY0MTk3Zjk3ZDIzYjYyNTA1ODdmNDc1Mjk1Mzc4N2I0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXdwcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXdwcml2YXRlLmgKQEAgLTMwLDggKzMwLDEwIEBA
CiAjaW5jbHVkZSAiR3RrRHJhZ0FuZERyb3BIZWxwZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFDbGllbnQuaCIK
ICNpbmNsdWRlICJXZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXIuaCIKICNpbmNsdWRlICJXaWRnZXRC
YWNraW5nU3RvcmUuaCIKKwogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg+CiAjaW5j
bHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159179</attachid>
            <date>2012-08-17 12:30:15 -0700</date>
            <delta_ts>2012-08-21 09:55:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94373-20120817162939.patch</filename>
            <type>text/plain</type>
            <size>31174</size>
            <attacher name="Danilo de Paula">danilo.eu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1Njg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggZGM5MTY4ZTI4
YjVlMGViMGM1MDQxNGMxY2M4MzZjOTM1NDVkMzg3Mi4uZDlkZGJkYTU4ZGUwNGEzMzBhZWI1NmRi
YjBkMmUxMmUwMGUwYzRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY1IEBACiAyMDEy
LTA4LTE3ICBEYW5pbG8gQ2VzYXIgTGVtZXMgZGUgUGF1bGEgIDxkYW5pbG8uY2VzYXJAY29sbGFi
b3JhLmNvLnVrPgogCisgICAgICAgIFtndGtdIGFkZGluZyBjb250YWluZXJzIGZvciB1c2VybWVk
aWEgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHdlYmtpdCBhbmQgYnJvd3NlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQzNzMKKworICAgICAgICBXaGVu
IHRoZSB1c2VyIG1ha2UgYSBnZXRVc2VyTWVkaWEgY2FsbCwgd2VidmlldyB3aWxsIGVtaXQgYSBz
aWduYWwgdG8gdGhlIGFwcGxpY2F0aW9uCisgICAgICAgIGNvbnRhaW5pbmcgdGhlbiByZXF1ZXN0
IGl0c2VsZiAod2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdCkgYW5kIGEgbGlzdCB3aXRoIHRoZSBh
dmFpbGFibGUKKyAgICAgICAgZGV2aWNlcyAod2Via2l0d2VidXNlcm1lZGlhbGlzdCkuCisKKyAg
ICAgICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIChPT1BTISkuCisgICAgICAgIE5lZWQgdGhl
IGJ1ZyBVUkwgKE9PUFMhKS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBh
cHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMg
YmVsb3cgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIGRv
Y3Mvd2Via2l0Z3RrLWRvY3Muc2dtbDoKKyAgICAgICAgKiBkb2NzL3dlYmtpdGd0ay1zZWN0aW9u
cy50eHQ6CisgICAgICAgICogd2Via2l0L3dlYmtpdC5oOgorICAgICAgICAqIHdlYmtpdC93ZWJr
aXR3ZWJ1c2VybWVkaWFsaXN0LmNwcDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViVXNlck1l
ZGlhTGlzdFByaXZhdGUpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZGlz
cG9zZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9maW5hbGl6ZSk6Cisg
ICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9jbGFzc19pbml0KToKKyAgICAgICAg
KHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2luaXQpOgorICAgICAgICAod2Via2l0X3dlYl91
c2VyX21lZGlhX2xpc3RfZ2V0X2F1ZGlvX2xlbmd0aCk6CisgICAgICAgICh3ZWJraXRfd2ViX3Vz
ZXJfbWVkaWFfbGlzdF9nZXRfdmlkZW9fbGVuZ3RoKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNl
cl9tZWRpYV9saXN0X2dldF9hdWRpb19pdGVtX25hbWUpOgorICAgICAgICAod2Via2l0X3dlYl91
c2VyX21lZGlhX2xpc3RfZ2V0X3ZpZGVvX2l0ZW1fbmFtZSk6CisgICAgICAgICh3ZWJraXRfd2Vi
X3VzZXJfbWVkaWFfbGlzdF9nZXRfYXVkaW9faXRlbV9zZWxlY3RlZCk6CisgICAgICAgICh3ZWJr
aXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfdmlkZW9faXRlbV9zZWxlY3RlZCk6CisgICAgICAg
ICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9zZWxlY3RfYXVkaW9faXRlbSk6CisgICAgICAg
ICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9zZWxlY3RfdmlkZW9faXRlbSk6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjphdWRpb0NvcmUpOgorICAgICAgICAoV2ViS2l0
Ojp2aWRlb0NvcmUpOgorICAgICAgICAoV2ViS2l0OjpraXROZXcpOgorICAgICAgICAqIHdlYmtp
dC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0Lmg6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYlVz
ZXJNZWRpYUxpc3QpOgorICAgICAgICAoX1dlYktpdFdlYlVzZXJNZWRpYUxpc3RDbGFzcyk6Cisg
ICAgICAgICogd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3Rwcml2YXRlLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVx
dWVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2
YXRlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2NsYXNzX2luaXQp
OgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfaW5pdCk6CisgICAgICAg
ICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF93YW50c19hdWRpbyk6CisgICAgICAgICh3
ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF93YW50c192aWRlbyk6CisgICAgICAgICh3ZWJr
aXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9nZXRfb3JpZ2luKToKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAoV2ViS2l0OjpraXROZXcpOgorICAg
ICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAg
ICAoX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QpOgorICAgICAgICAoX1dlYktpdFdlYlVzZXJN
ZWRpYVJlcXVlc3RDbGFzcyk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJl
cXVlc3Rwcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJL
aXQpOgorCisyMDEyLTA4LTE3ICBEYW5pbG8gQ2VzYXIgTGVtZXMgZGUgUGF1bGEgIDxkYW5pbG8u
Y2VzYXJAY29sbGFib3JhLmNvLnVrPgorCiAgICAgICAgIFtndGtdIGFkZCBlbmFibGUtbWVkaWEt
c3RyZWFtIHRvIHdlYnNldHRpbmdzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NDM2MQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVt
YWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IDIxNTU3
NmU1MTgxNGNjZjEyY2MwZWZlYjY5MmVkOWRhN2IyNDk0NTIuLjAyNDE3MTBlNGYwODU0NjFkM2Zl
OGU0MDUyNWNlZGUwYTNhMDA2ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1h
a2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCkBAIC0xMzgs
NiArMTM4LDggQEAgd2Via2l0Z3RrX3N0YXRpY19oX2FwaSArPSBcCiAJJChzcmNkaXIpL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5oIFwKIAkkKHNyY2Rp
cikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnJlc291cmNlLmggXAogCSQoc3Jj
ZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaCBcCisJJChz
cmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0Lmgg
XAorCSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlh
cmVxdWVzdC5oIFwKIAkkKHNyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YndpbmRvd2ZlYXR1cmVzLmggXAogCSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vidmlldy5oCiAKQEAgLTI3Miw2ICsyNzQsMTAgQEAgd2Via2l0Z3RrX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwbHVnaW5kYXRhYmFzZXBy
aXZhdGUuaCBcCiAJU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNw
cCBcCiAJU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzcHJpdmF0ZS5o
IFwKKwlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdC5jcHAg
XAorCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0
ZS5oIFwKKwlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVz
dC5jcHAgXAorCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1
ZXN0cHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5j
cHAgXAogCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oIFwK
IAlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3Mvd2Via2l0Z3RrLWRvY3Muc2dtbCBi
L1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3Mvd2Via2l0Z3RrLWRvY3Muc2dtbAppbmRleCA3MjEwNjUy
MmZiNWJhYmE4YjAwOWZlMzU0NGI5YWRmMjNmY2JiMTk4Li41YTNhYmIzZjY3MThlNTE1YWNkMzMx
MDllMTRmZTlmZTlhMDRjMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzL3dl
YmtpdGd0ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJraXRndGst
ZG9jcy5zZ21sCkBAIC0zMyw2ICszMyw4IEBACiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dl
YmtpdGRvd25sb2FkLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC93ZWJraXR2aWV3
cG9ydGF0dHJpYnV0ZXMueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dlYmtpdGhp
dHRlc3RyZXN1bHQueG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dlYmtpdHdlYnVz
ZXJtZWRpYWxpc3QueG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dlYmtpdHdlYnVz
ZXJtZWRpYXJlcXVlc3QueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dlYmtpdHdl
YnBsdWdpbi54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvd2Via2l0d2VicGx1Z2lu
ZGF0YWJhc2UueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dlYmtpdHNvdXBhdXRo
ZGlhbG9nLnhtbCIvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJraXRn
dGstc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJraXRndGstc2VjdGlv
bnMudHh0CmluZGV4IDU5OTcwYjU5YzE3NWFiYWFlZWVkOWUzODU5NTI3YTY2NzYyNGUxYjcuLmQx
YWZmMTBlMjE1YWI3M2NjZGM1YTJhMjFiNWNlZDQzOTVhY2IwNDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL2RvY3Mvd2Via2l0Z3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2d0ay9kb2NzL3dlYmtpdGd0ay1zZWN0aW9ucy50eHQKQEAgLTY4Miw2ICs2ODIsNTEgQEAg
V2ViS2l0SWNvbkRhdGFiYXNlUHJpdmF0ZQogPC9TRUNUSU9OPgogCiA8U0VDVElPTj4KKzxGSUxF
PndlYmtpdHdlYnVzZXJtZWRpYWxpc3Q8L0ZJTEU+Cis8VElUTEU+V2ViS2l0V2ViVXNlck1lZGlh
TGlzdDwvVElUTEU+CitXZWJLaXRXZWJVc2VyTWVkaWFMaXN0Cit3ZWJraXRfd2ViX3VzZXJfbWVk
aWFfbGlzdF9nZXRfYXVkaW9fbGVuZ3RoCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRf
dmlkZW9fbGVuZ3RoCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfYXVkaW9faXRlbV9u
YW1lCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfdmlkZW9faXRlbV9uYW1lCit3ZWJr
aXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfYXVkaW9faXRlbV9zZWxlY3RlZAord2Via2l0X3dl
Yl91c2VyX21lZGlhX2xpc3RfZ2V0X3ZpZGVvX2l0ZW1fc2VsZWN0ZWQKK3dlYmtpdF93ZWJfdXNl
cl9tZWRpYV9saXN0X3NlbGVjdF9hdWRpb19pdGVtCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlz
dF9zZWxlY3RfdmlkZW9faXRlbQorPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXRUJLSVRfSVNfV0VC
X1VTRVJfTUVESUFfTElTVAorV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX0xJU1RfQ0xBU1MKK1dF
QktJVF9XRUJfVVNFUl9NRURJQV9MSVNUCitXRUJLSVRfV0VCX1VTRVJfTUVESUFfTElTVF9DTEFT
UworV0VCS0lUX1dFQl9VU0VSX01FRElBX0xJU1RfR0VUX0NMQVNTCitXRUJLSVRfVFlQRV9XRUJf
VVNFUl9NRURJQV9MSVNUCis8U1VCU0VDVElPTiBQcml2YXRlPgorV2ViS2l0V2ViVXNlck1lZGlh
TGlzdFByaXZhdGUKK1dlYktpdFdlYlVzZXJNZWRpYUxpc3RDbGFzcword2Via2l0X3dlYl91c2Vy
X21lZGlhX2xpc3RfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+Cis8RklMRT53ZWJr
aXR3ZWJ1c2VybWVkaWFyZXF1ZXN0PC9GSUxFPgorPFRJVExFPldlYktpdFdlYlVzZXJNZWRpYVJl
cXVlc3Q8L1RJVExFPgorV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdAord2Via2l0X3dlYl91c2Vy
X21lZGlhX3JlcXVlc3Rfd2FudHNfYXVkaW8KK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0
X3dhbnRzX3ZpZGVvCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9nZXRfb3JpZ2luCis8
U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dFQktJVF9JU19XRUJfVVNFUl9NRURJQV9SRVFVRVNUCitX
RUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfUkVRVUVTVF9DTEFTUworV0VCS0lUX1RZUEVfV0VCX1VT
RVJfTUVESUFfUkVRVUVTVAorV0VCS0lUX1dFQl9VU0VSX01FRElBX1JFUVVFU1QKK1dFQktJVF9X
RUJfVVNFUl9NRURJQV9SRVFVRVNUX0NMQVNTCitXRUJLSVRfV0VCX1VTRVJfTUVESUFfUkVRVUVT
VF9HRVRfQ0xBU1MKKzxTVUJTRUNUSU9OIFByaXZhdGU+CitXZWJLaXRXZWJVc2VyTWVkaWFSZXF1
ZXN0Q2xhc3MKK1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRlCit3ZWJraXRfd2ViX3Vz
ZXJfbWVkaWFfcmVxdWVzdF9nZXRfdHlwZQorPC9TRUNUSU9OPgorCis8U0VDVElPTj4KIDxGSUxF
PndlYmtpdGZhdmljb25kYXRhYmFzZTwvRklMRT4KIDxUSVRMRT5XZWJLaXRGYXZpY29uRGF0YWJh
c2U8L1RJVExFPgogV2ViS2l0RmF2aWNvbkRhdGFiYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0LmggYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
LmgKaW5kZXggYWE3YjkzZGJkYThjMjZkZTIxZTk4MmQzOWM2MTY1ZmI4YzJmNWU3Ny4uYmYxNmEy
NWU5MmVkNTVmOWIyMDdiNGE3MmJjNjNiYjg5NjlmMWViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXQuaApAQCAtNTEsNiArNTEsOCBAQAogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJwb2xp
Y3lkZWNpc2lvbi5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJyZXNvdXJjZS5oPgogI2lu
Y2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJr
aXR3ZWJ1c2VybWVkaWFsaXN0Lmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnVzZXJtZWRp
YXJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vidmlldy5oPgogI2luY2x1ZGUg
PHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWYz
ZDliNWY1MTc0YmRhOTgxZDk5MjkwZjQ4Y2RjOWNlMzA3NzRiNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmNwcApAQCAt
MCwwICsxLDI3MCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgQ29sbGFib3JhIEx0ZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0
byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRl
ICJ3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmgiCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJj
ZS5oIgorI2luY2x1ZGUgIndlYmtpdGdsb2JhbHNwcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0
d2VidXNlcm1lZGlhbGlzdHByaXZhdGUuaCIKKworI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRl
IDxnbGliL2dpMThuLWxpYi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgorCisKKy8qKgorICogU0VDVElPTjp3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0
CisgKiBAc2hvcnRfZGVzY3JpcHRpb246IFVzZXJNZWRpYSBMaXN0CisgKiBAVGl0bGU6IFdlYktp
dFdlYlVzZXJNZWRpYUxpc3QKKyAqCisgKiAjV2ViS2l0V2ViVXNlck1lZGlhTGlzdCBjb250YWlu
cyBhIGxpc3Qgb2YKKyAqIGF1ZGlvIGFuZCB2aWRlbyBzb3VyY2VzIGZyb20gYSBXZWJVc2VyTWVk
aWFSZXF1ZXN0CisgKgorICogU2luY2U6IDEuMTAuMAorICovCisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CisKK3N0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGUgeworICAgIFdl
YkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yIGF1ZGlvU291cmNlczsKKyAgICBXZWJDb3Jl
OjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciB2aWRlb1NvdXJjZXM7CisgICAgZ2Jvb2xlYW4qIGF1
ZGlvU291cmNlU2VsZWN0aW9uczsKKyAgICBnYm9vbGVhbiogdmlkZW9Tb3VyY2VTZWxlY3Rpb25z
OworfTsKKworR19ERUZJTkVfVFlQRShXZWJLaXRXZWJVc2VyTWVkaWFMaXN0LCB3ZWJraXRfd2Vi
X3VzZXJfbWVkaWFfbGlzdCwgR19UWVBFX09CSkVDVCk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfdXNlcl9tZWRpYV9saXN0X2Rpc3Bvc2UoR09iamVjdCogb2JqZWN0KQoreworICAgIEdfT0JK
RUNUX0NMQVNTKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X3BhcmVudF9jbGFzcyktPmRpc3Bv
c2Uob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3Rf
ZmluYWxpemUoR09iamVjdCogb2JqZWN0KQoreworICAgIFdlYktpdFdlYlVzZXJNZWRpYUxpc3Qq
IHVzZXJNZWRpYUxpc3QgPSBXRUJLSVRfV0VCX1VTRVJfTUVESUFfTElTVChvYmplY3QpOworCisg
ICAgZ19mcmVlKHVzZXJNZWRpYUxpc3QtPnByaXYtPmF1ZGlvU291cmNlU2VsZWN0aW9ucyk7Cisg
ICAgZ19mcmVlKHVzZXJNZWRpYUxpc3QtPnByaXYtPnZpZGVvU291cmNlU2VsZWN0aW9ucyk7CisK
KyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9wYXJlbnRfY2xh
c3MpLT5maW5hbGl6ZShvYmplY3QpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3VzZXJf
bWVkaWFfbGlzdF9jbGFzc19pbml0KFdlYktpdFdlYlVzZXJNZWRpYUxpc3RDbGFzcyogbGlzdENs
YXNzKQoreworICAgIEdPYmplY3RDbGFzcyogZ29iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNT
KGxpc3RDbGFzcyk7CisgICAgZ29iamVjdF9jbGFzcy0+ZGlzcG9zZSA9IHdlYmtpdF93ZWJfdXNl
cl9tZWRpYV9saXN0X2Rpc3Bvc2U7CisgICAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPSB3ZWJr
aXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9maW5hbGl6ZTsKKworICAgIHdlYmtpdEluaXQoKTsKKwor
ICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShsaXN0Q2xhc3MsIHNpemVvZihXZWJLaXRXZWJV
c2VyTWVkaWFMaXN0UHJpdmF0ZSkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3VzZXJf
bWVkaWFfbGlzdF9pbml0KFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGxpc3QpCit7CisgICAgV2Vi
S2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BS
SVZBVEUobGlzdCwgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfTElTVCwgV2ViS2l0V2ViVXNl
ck1lZGlhTGlzdFByaXZhdGUpOworICAgIGxpc3QtPnByaXYgPSBwcml2OworfQorCisvKioKKyAq
IHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9hdWRpb19sZW5ndGg6CisgKiBAbGlzdDog
dGhlIFdlYktpdFdlYlVzZXJNZWRpYUxpc3QgaXRzZWxmCisgKgorICogUmV0dXJucyB0aGUgc2l6
ZSBvZiB0aGUgYXVkaW8gZWxlbWVudHMgbGlzdC4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IG51bWJl
ciBvZiBhdWRpbyBlbGVtZW50cy4KKyAqCisgKiBTaW5jZTogMS4xMC4wCisgKi8KK2d1aW50IHdl
YmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9hdWRpb19sZW5ndGgoV2ViS2l0V2ViVXNlck1l
ZGlhTGlzdCogbGlzdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VC
X1VTRVJfTUVESUFfTElTVChsaXN0KSwgMCk7CisKKyAgICByZXR1cm4gYXVkaW9Db3JlKGxpc3Qp
LnNpemUoKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfdmlk
ZW9fbGVuZ3RoOgorICogQGxpc3Q6IHRoZSBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGl0c2VsZgor
ICoKKyAqIFJldHVybnMgdGhlIHNpemUgb2YgdGhlIHZpZGVvIGVsZW1lbnRzIGxpc3QuIAorICoK
KyAqIFJldHVybiB2YWx1ZTogbnVtYmVyIG9mIHZpZGVvIGVsZW1lbnRzLgorICoKKyAqIFNpbmNl
OiAxLjEwLjAKKyAqLworZ3VpbnQgd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X3ZpZGVv
X2xlbmd0aChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBsaXN0KQoreworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9MSVNUKGxpc3QpLCAwKTsKKworICAg
IHJldHVybiB2aWRlb0NvcmUobGlzdCkuc2l6ZSgpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJf
dXNlcl9tZWRpYV9saXN0X2dldF9hdWRpb19pdGVtX25hbWU6CisgKiBAbGlzdDogdGhlIFdlYktp
dFdlYlVzZXJNZWRpYUxpc3QgaXRzZWxmCisgKiBAaW5kZXg6IHRoZSB3YW50ZWQgZWxlbWVudCBp
bmRleC4KKyAqCisgKiBSZXR1cm5zIHRoZSBkZXZpY2UgbmFtZSBvZiBhbiBhdWRpbyBlbGVtZW50
LgorICoKKyAqIFJldHVybiB2YWx1ZTogdGhlIGRldmljZSBpZCBvZiB0aGUgQGluZGV4IGdpdmVu
IGVsZW1lbnQuCisgKgorICogU2luY2U6IDEuMTAuMAorICovCitjb25zdCBnY2hhciogd2Via2l0
X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2F1ZGlvX2l0ZW1fbmFtZShXZWJLaXRXZWJVc2VyTWVk
aWFMaXN0KiBsaXN0LCBndWludCBpbmRleCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfTElTVChsaXN0KSwgMCk7CisKKyAgICBXZWJDb3JlOjpN
ZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgc291cmNlcyA9IGF1ZGlvQ29yZShsaXN0KTsKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChpbmRleCA8IHNvdXJjZXMuc2l6ZSgpLCAwKTsKKworICAgIHJl
dHVybiBnX3N0cmR1cChzb3VyY2VzW2luZGV4XS0+bmFtZSgpLnV0ZjgoKS5kYXRhKCkpOworfQor
CisvKioKKyAqIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF92aWRlb19pdGVtX25hbWU6
CisgKiBAbGlzdDogdGhlICNXZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGl0c2VsZgorICogQGluZGV4
OiB0aGUgd2FudGVkIGVsZW1lbnQgaW5kZXguCisgKgorICogUmV0dXJucyB0aGUgZGV2aWNlIG5h
bWUgb2YgYW4gdmlkZW8gZWxlbWVudC4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IHRoZSBkZXZpY2Ug
aWQgb2YgdGhlIEBpbmRleCBnaXZlbiBlbGVtZW50LgorICoKKyAqIFNpbmNlOiAxLjEwLjAKKyAq
LworY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF92aWRlb19pdGVt
X25hbWUoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCogbGlzdCwgZ3VpbnQgaW5kZXgpCit7CisgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX0xJU1QobGlzdCks
IDApOworCisgICAgV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHNvdXJjZXMgPSB2
aWRlb0NvcmUobGlzdCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoaW5kZXggPCBzb3VyY2Vz
LnNpemUoKSwgMCk7CisKKyAgICByZXR1cm4gZ19zdHJkdXAoc291cmNlc1tpbmRleF0tPm5hbWUo
KS51dGY4KCkuZGF0YSgpKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlz
dF9nZXRfYXVkaW9faXRlbV9zZWxlY3RlZDoKKyAqIEBsaXN0OiB0aGUgI1dlYktpdFdlYlVzZXJN
ZWRpYUxpc3QgaXRzZWxmCisgKiBAaW5kZXg6IHRoZSB3YW50ZWQgZWxlbWVudCBpbmRleC4KKyAq
CisgKiBJbmRpY2F0ZSBpZiBhbiBhdWRpbyBkZXZpY2UgaXMgbWFya2VkIGFzIHNlbGVjdGVkLgor
ICoKKyAqIFJldHVybiB2YWx1ZTogVHJ1ZSBpZiB0aGUgZGV2aWNlIHJlcHJlc2VudGVkIGJ5IEBp
bmRleCBpcyBtYXJrZWQgYXMgc2VsZWN0ZWQuCisgKgorICogU2luY2U6IDEuMTAuMAorICovCitn
Ym9vbGVhbiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfYXVkaW9faXRlbV9zZWxlY3Rl
ZChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBsaXN0LCBndWludCBpbmRleCkKK3sKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfTElTVChsaXN0KSwgRkFM
U0UpOworCisgICAgV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHNvdXJjZXMgPSBh
dWRpb0NvcmUobGlzdCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoaW5kZXggPCBzb3VyY2Vz
LnNpemUoKSwgRkFMU0UpOworCisgICAgcmV0dXJuIGxpc3QtPnByaXYtPmF1ZGlvU291cmNlU2Vs
ZWN0aW9uc1tpbmRleF07Cit9CisKKy8qKgorICogd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3Rf
Z2V0X3ZpZGVvX2l0ZW1fc2VsZWN0ZWQ6CisgKiBAbGlzdDogdGhlICNXZWJLaXRXZWJVc2VyTWVk
aWFMaXN0IGl0c2VsZgorICogQGluZGV4OiB0aGUgd2FudGVkIGVsZW1lbnQgaW5kZXguCisgKgor
ICogSW5kaWNhdGUgaWYgYSB2aWRlbyBkZXZpY2UgaXMgbWFya2VkIGFzIHNlbGVjdGVkLgorICoK
KyAqIFJldHVybiB2YWx1ZTogVHJ1ZSBpZiB0aGUgZGV2aWNlIHJlcHJlc2VudGVkIGJ5IEBpbmRl
eCBpcyBtYXJrZWQgYXMgc2VsZWN0ZWQuCisgKgorICogU2luY2U6IDEuMTAuMAorICovCitnYm9v
bGVhbiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfdmlkZW9faXRlbV9zZWxlY3RlZChX
ZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBsaXN0LCBndWludCBpbmRleCkKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfTElTVChsaXN0KSwgRkFMU0Up
OworCisgICAgV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHNvdXJjZXMgPSB2aWRl
b0NvcmUobGlzdCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoaW5kZXggPCBzb3VyY2VzLnNp
emUoKSwgRkFMU0UpOworCisgICAgcmV0dXJuIGxpc3QtPnByaXYtPnZpZGVvU291cmNlU2VsZWN0
aW9uc1tpbmRleF07Cit9CisKKy8qKgorICogd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3Rfc2Vs
ZWN0X2F1ZGlvX2l0ZW06CisgKiBAbGlzdDogdGhlICNXZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGl0
c2VsZgorICogQGluZGV4OiB0aGUgd2FudGVkIGVsZW1lbnQgaW5kZXguCisgKgorICogTWFyayBh
biBhdWRpbyBkZXZpY2UgYXMgc2VsZWN0ZWVkLgorICoKKyAqIFNpbmNlOiAxLjEwLjAKKyAqLwor
dm9pZCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9zZWxlY3RfYXVkaW9faXRlbShXZWJLaXRX
ZWJVc2VyTWVkaWFMaXN0KiBsaXN0LCBndWludCBpbmRleCkKK3sKKyAgICBnX3JldHVybl9pZl9m
YWlsKFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9MSVNUKGxpc3QpKTsKKworICAgIFdlYkNvcmU6
Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2VzID0gYXVkaW9Db3JlKGxpc3QpOworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoaW5kZXggPCBzb3VyY2VzLnNpemUoKSk7CisKKyAgICBsaXN0LT5w
cml2LT5hdWRpb1NvdXJjZVNlbGVjdGlvbnNbaW5kZXhdID0gVFJVRTsKK30KKworLyoqCisgKiB3
ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9zZWxlY3RfdmlkZW9faXRlbToKKyAqIEBsaXN0OiB0
aGUgI1dlYktpdFdlYlVzZXJNZWRpYUxpc3QgaXRzZWxmCisgKiBAaW5kZXg6IHRoZSB3YW50ZWQg
ZWxlbWVudCBpbmRleC4KKyAqCisgKiBNYXJrIGFuIHZpZGVvIGRldmljZSBhcyBzZWxlY3RlZWQu
CisgKgorICogU2luY2U6IDEuMTAuMAorICovCit2b2lkIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9s
aXN0X3NlbGVjdF92aWRlb19pdGVtKFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGxpc3QsIGd1aW50
IGluZGV4KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElB
X0xJU1QobGlzdCkpOworCisgICAgV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHNv
dXJjZXMgPSB2aWRlb0NvcmUobGlzdCk7CisgICAgZ19yZXR1cm5faWZfZmFpbChpbmRleCA8IHNv
dXJjZXMuc2l6ZSgpKTsKKworICAgIGxpc3QtPnByaXYtPnZpZGVvU291cmNlU2VsZWN0aW9uc1tp
bmRleF0gPSBUUlVFOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQ29yZTo6TWVkaWFT
dHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvQ29yZShXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBsaXN0
KQoreworICAgIHJldHVybiBsaXN0LT5wcml2LT5hdWRpb1NvdXJjZXM7Cit9CisKK1dlYkNvcmU6
Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2aWRlb0NvcmUoV2ViS2l0V2ViVXNlck1lZGlhTGlz
dCogbGlzdCkKK3sKKyAgICByZXR1cm4gbGlzdC0+cHJpdi0+dmlkZW9Tb3VyY2VzOworfQorCitX
ZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBraXROZXcoY29uc3QgV2ViQ29yZTo6TWVkaWFTdHJlYW1T
b3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3Vy
Y2VWZWN0b3ImIHZpZGVvU291cmNlcykKK3sKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiB3
ZWJMaXN0ID0gV0VCS0lUX1dFQl9VU0VSX01FRElBX0xJU1QoZ19vYmplY3RfbmV3KFdFQktJVF9U
WVBFX1dFQl9VU0VSX01FRElBX0xJU1QsIE5VTEwpKTsKKyAgICB3ZWJMaXN0LT5wcml2LT5hdWRp
b1NvdXJjZXMgPSBhdWRpb1NvdXJjZXM7CisgICAgd2ViTGlzdC0+cHJpdi0+dmlkZW9Tb3VyY2Vz
ID0gdmlkZW9Tb3VyY2VzOworICAgIHdlYkxpc3QtPnByaXYtPmF1ZGlvU291cmNlU2VsZWN0aW9u
cyA9IGdfbmV3MChnYm9vbGVhbiwgYXVkaW9Tb3VyY2VzLnNpemUoKSk7CisgICAgd2ViTGlzdC0+
cHJpdi0+dmlkZW9Tb3VyY2VTZWxlY3Rpb25zID0gZ19uZXcwKGdib29sZWFuLCB2aWRlb1NvdXJj
ZXMuc2l6ZSgpKTsKKworICAgIHJldHVybiB3ZWJMaXN0OworfQorCit9CisKKyNlbmRpZiAvKiBF
TkFCTEUoTUVESUFfU1RSRUFNKSAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3QuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmJiZDE1ZGU1YTE0N2E2NTQzYmU5
ODU0NjUzNTU3MzYzYTEwNTQzMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAq
ICBDb3B5cmlnaHQgKEMpIDIwMTIgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQor
ICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKworI2lmbmRlZiB3ZWJraXR3ZWJ1c2Vy
bWVkaWFsaXN0X2gKKyNkZWZpbmUgd2Via2l0d2VidXNlcm1lZGlhbGlzdF9oCisKKyNpbmNsdWRl
IDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPGdsaWIuaD4KKworI2luY2x1ZGUgPHdlYmtpdC93
ZWJraXRkZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9X
RUJfVVNFUl9NRURJQV9MSVNUICAgICAgICAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9s
aXN0X2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfVVNFUl9NRURJQV9MSVNUKG9iaikg
ICAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9U
WVBFX1dFQl9VU0VSX01FRElBX0xJU1QsIFdlYktpdFdlYlVzZXJNZWRpYUxpc3QpKQorI2RlZmlu
ZSBXRUJLSVRfV0VCX1VTRVJfTUVESUFfTElTVF9DTEFTUyhrbGFzcykgICAgICAgKEdfVFlQRV9D
SEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNU
LCBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1VT
RVJfTUVESUFfTElTVChvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBF
KChvYmopLCBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNUKSkKKyNkZWZpbmUgV0VCS0lU
X0lTX1dFQl9VU0VSX01FRElBX0xJU1RfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xB
U1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfTElTVCkpCisjZGVm
aW5lIFdFQktJVF9XRUJfVVNFUl9NRURJQV9MSVNUX0dFVF9DTEFTUyhvYmopICAgICAoR19UWVBF
X0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJ
U1QsIFdlYktpdFdlYlVzZXJNZWRpYUxpc3RDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJL
aXRXZWJVc2VyTWVkaWFMaXN0IFdlYktpdFdlYlVzZXJNZWRpYUxpc3Q7Cit0eXBlZGVmIHN0cnVj
dCBfV2ViS2l0V2ViVXNlck1lZGlhTGlzdENsYXNzIFdlYktpdFdlYlVzZXJNZWRpYUxpc3RDbGFz
czsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZSBXZWJLaXRX
ZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0
IHsKKyAgICBHT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFM
aXN0UHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhTGlzdENs
YXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBH
VHlwZQord2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X3R5cGUgKHZvaWQpIEdfR05VQ19D
T05TVDsKKworV0VCS0lUX0FQSSBndWludAord2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0
X2F1ZGlvX2xlbmd0aCAgICAoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCAqbGlzdCk7CisKK1dFQktJ
VF9BUEkgZ3VpbnQKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF92aWRlb19sZW5ndGgg
ICAgKFdlYktpdFdlYlVzZXJNZWRpYUxpc3QgKmxpc3QpOworCitXRUJLSVRfQVBJIGNvbnN0IGdj
aGFyICoKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9hdWRpb19pdGVtX25hbWUgKFdl
YktpdFdlYlVzZXJNZWRpYUxpc3QgKmxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBndWludCBpbmRleCk7CitXRUJLSVRfQVBJIGNvbnN0IGdjaGFy
ICoKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF92aWRlb19pdGVtX25hbWUgKFdlYktp
dFdlYlVzZXJNZWRpYUxpc3QgKmxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBndWludCBpbmRleCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dl
YmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9hdWRpb19pdGVtX3NlbGVjdGVkKFdlYktpdFdl
YlVzZXJNZWRpYUxpc3QgKmxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBndWludCBpbmRleCk7CitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfd2Vi
X3VzZXJfbWVkaWFfbGlzdF9nZXRfdmlkZW9faXRlbV9zZWxlY3RlZChXZWJLaXRXZWJVc2VyTWVk
aWFMaXN0ICpsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ3VpbnQgaW5kZXgpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdXNlcl9tZWRp
YV9saXN0X3NlbGVjdF92aWRlb19pdGVtIChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0ICpsaXN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IGluZGV4
KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9zZWxlY3Rf
YXVkaW9faXRlbSAoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCAqbGlzdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IGluZGV4KTsKKworR19FTkRfREVD
TFMKKworI2VuZGlmIC8qIHdlYmtpdHdlYnVzZXJtZWRpYWxpc3RfaCAqLwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3Rwcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdHByaXZhdGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mODlhNTc0OGQ4N2RlNTAzZmYxMGIwNjRhODBmOTAzN2I1OGEzMTI5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJt
ZWRpYWxpc3Rwcml2YXRlLmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMp
IDIwMTIgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEw
LTEzMDEgIFVTQQorICovCisKKworI2lmbmRlZiB3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0
ZV9oCisjZGVmaW5lIHdlYmtpdHdlYnVzZXJtZWRpYWxpc3Rwcml2YXRlX2gKKworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1
ZGUgIndlYmtpdHdlYnVzZXJtZWRpYWxpc3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dl
YkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb0NvcmUoV2ViS2l0V2ViVXNlck1l
ZGlhTGlzdCopOworV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVvQ29yZShX
ZWJLaXRXZWJVc2VyTWVkaWFMaXN0Kik7CitXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBraXROZXco
Y29uc3QgV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImLCBjb25zdCBXZWJDb3JlOjpN
ZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYpOworCit9CisKKyNlbmRpZiAvKiBFTkFCTEUoTUVESUFf
U1RSRUFNKSAqLworCisjZW5kaWYgLyogd2Via2l0d2VidXNlcm1lZGlhbGlzdHByaXZhdGVfaCAq
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRp
YXJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRp
YXJlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhZmY1ZjMwZmJiNGE1MDczODRkNDRhNjY3MWZhZjEy
NzdlN2U5YWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2VidXNlcm1lZGlhcmVxdWVzdC5jcHAKQEAgLTAsMCArMSwxMzkgQEAKKy8qCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDEyIENvbGxhYm9yYSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24s
IE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFyZXF1
ZXN0LmgiCisKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CisjaW5jbHVkZSAiVXNlck1lZGlhUmVxdWVzdC5oIgorI2luY2x1ZGUgIndlYmtpdGdsb2JhbHNw
cml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGUuaCIK
KyNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKKy8qKgorICogU0VDVElPTjp3ZWJraXR3ZWJ1c2VybWVk
aWFyZXF1ZXN0CisgKiBAc2hvcnRfZGVzY3JpcHRpb246IFRoZSBXZWJLaXQncyBVc2VyTWVkaWEg
UmVxdWVzdC4KKyAqIEBUaXRsZTogV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdAorICoKKyAqIFRo
aXMgb2JqZWN0IGNvbnRhaW5zIHRoZSBpbmZvcm1hdGlvbiBvZiBhIG1lZGlhIHJlcXVlc3QuCisg
KiBJdCBjYW4gYmUgdXNlZCB0byBjaGVjayBpZiB0aGUgcmVxdWVzdCBpcyBhc2tpbmcgZm9yIGF1
ZGlvIGFuZC9vciB2aWRlby4KKyAqCisgKiBTaW5jZTogMS4xMC4wCisgKi8KKwordXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKKworc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0
ZSB7CisgICAgUmVmUHRyPFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+IHVzZXJNZWRpYVJlcXVl
c3Q7Cit9OworCitHX0RFRklORV9UWVBFKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QsIHdlYmtp
dF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0LCBHX1RZUEVfT0JKRUNUKTsKKworc3RhdGljIHZvaWQg
d2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfY2xhc3NfaW5pdChXZWJLaXRXZWJVc2VyTWVk
aWFSZXF1ZXN0Q2xhc3MqIHJlcXVlc3RDbGFzcykKK3sKKyAgICB3ZWJraXRJbml0KCk7CisKKyAg
ICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUocmVxdWVzdENsYXNzLCBzaXplb2YoV2ViS2l0V2Vi
VXNlck1lZGlhUmVxdWVzdFByaXZhdGUpKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl91
c2VyX21lZGlhX3JlcXVlc3RfaW5pdChXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0
KQoreworICAgIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRlKiBwcml2ID0gR19UWVBF
X0lOU1RBTkNFX0dFVF9QUklWQVRFKHJlcXVlc3QsIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElB
X1JFUVVFU1QsIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRlKTsKKyAgICByZXF1ZXN0
LT5wcml2ID0gcHJpdjsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVz
dF93YW50c19hdWRpbzoKKyAqIEByZXF1ZXN0OiB0aGUgI1dlYktpdFVzZXJNZWRpYVJlcXVlc3Qg
aXRzZWxmLgorICoKKyAqIEluZGljYXRlcyB0aGUgY29udGVudCBvZiBhbiBVc2VyTWVkaWFSZXF1
ZXN0LgorICoKKyAqIFJldHVybiB2YWx1ZTogVHJ1ZSBpZiB0aGUgcmVxdWVzdCBjb250YWlucyBh
biBhdWRpbyByZXF1ZXN0LgorICoKKyAqIFNpbmNlOiAxLjEwLjAKKyAqLworZ2Jvb2xlYW4gd2Vi
a2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNfYXVkaW8oV2ViS2l0V2ViVXNlck1lZGlh
UmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNf
V0VCX1VTRVJfTUVESUFfUkVRVUVTVChyZXF1ZXN0KSwgRkFMU0UpOworCisgICAgcmV0dXJuIGNv
cmUocmVxdWVzdCktPmF1ZGlvKCk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl91c2VyX21lZGlh
X3JlcXVlc3Rfd2FudHNfdmlkZW86CisgKiBAcmVxdWVzdDogdGhlICNXZWJLaXRVc2VyTWVkaWFS
ZXF1ZXN0IGl0c2VsZi4KKyAqCisgKiBJbmRpY2F0ZXMgdGhlIGNvbnRlbnQgb2YgYW4gVXNlck1l
ZGlhUmVxdWVzdC4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IFRydWUgaWYgdGhlIHJlcXVlc3QgY29u
dGFpbnMgYSB2aWRlbyByZXF1ZXN0LgorICoKKyAqIFNpbmNlOiAxLjEwLjAKKyAqLworZ2Jvb2xl
YW4gd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNfdmlkZW8oV2ViS2l0V2ViVXNl
ck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfSVNfV0VCX1VTRVJfTUVESUFfUkVRVUVTVChyZXF1ZXN0KSwgRkFMU0UpOworCisgICAgcmV0
dXJuIGNvcmUocmVxdWVzdCktPnZpZGVvKCk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl91c2Vy
X21lZGlhX3JlcXVlc3RfZ2V0X29yaWdpbjoKKyAqIEByZXF1ZXN0OiB0aGUgI1dlYktpdFVzZXJN
ZWRpYVJlcXVlc3QgaXRzZWxmLgorICoKKyAqIFRoZSBvcmlnaW4gb2YgYSBtZWRpYSByZXF1ZXN0
LgorICoKKyAqIFJldHVybiB2YWx1ZTogc3RyaW5nIHdpdGggdGhlIG9yaWdpbiBvZiBhIG1lZGlh
IHJlcXVlc3QuCisgKgorICogU2luY2U6IDEuMTAuMAorICovCitjb25zdCBnY2hhciogd2Via2l0
X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZ2V0X29yaWdpbihXZWJLaXRXZWJVc2VyTWVkaWFSZXF1
ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJf
VVNFUl9NRURJQV9SRVFVRVNUKHJlcXVlc3QpLCBOVUxMKTsKKworICAgIHJldHVybiBjb3JlKHJl
cXVlc3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPnRvU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNvcmU6
OlVzZXJNZWRpYVJlcXVlc3QqIGNvcmUoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCogcmVxdWVz
dCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFf
UkVRVUVTVChyZXF1ZXN0KSwgTlVMTCk7CisKKyAgICByZXR1cm4gcmVxdWVzdC0+cHJpdi0+dXNl
ck1lZGlhUmVxdWVzdC5nZXQoKTsKK30KKworV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCoga2l0
TmV3KFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwocmVxdWVzdCwgTlVMTCk7CisKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1
ZXN0KiB3ZWJSZXF1ZXN0ID0gV0VCS0lUX1dFQl9VU0VSX01FRElBX1JFUVVFU1QoZ19vYmplY3Rf
bmV3KFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX1JFUVVFU1QsIE5VTEwpKTsKKyAgICB3ZWJS
ZXF1ZXN0LT5wcml2LT51c2VyTWVkaWFSZXF1ZXN0ID0gcmVxdWVzdDsKKworICAgIHJldHVybiB3
ZWJSZXF1ZXN0OworfQorCit9CisKKyNlbmRpZiAvKiBFTkFCTEUoTUVESUFfU1RSRUFNKSAqLwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJl
cXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1
ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDExMzkyMTg2ZmRlOWIxOWEzOTM5ZDNjYmIzMjliYTJlOThhYjZj
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1
c2VybWVkaWFyZXF1ZXN0LmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMp
IDIwMTIgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEw
LTEzMDEgIFVTQQorICovCisKKworI2lmbmRlZiB3ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0X2gK
KyNkZWZpbmUgd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdF9oCisKKyNpbmNsdWRlIDxnbGliLW9i
amVjdC5oPgorI2luY2x1ZGUgPGdsaWIuaD4KKworI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZp
bmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfVVNFUl9N
RURJQV9SRVFVRVNUICAgICAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2dl
dF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUKG9iaikgICAg
ICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1dF
Ql9VU0VSX01FRElBX1JFUVVFU1QsIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QpKQorI2RlZmlu
ZSBXRUJLSVRfV0VCX1VTRVJfTUVESUFfUkVRVUVTVF9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9D
SEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFV
RVNULCBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNf
V0VCX1VTRVJfTUVESUFfUkVRVUVTVChvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5D
RV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFVRVNUKSkKKyNkZWZp
bmUgV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX1JFUVVFU1RfQ0xBU1Moa2xhc3MpIChHX1RZUEVf
Q0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVR
VUVTVCkpCisjZGVmaW5lIFdFQktJVF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUX0dFVF9DTEFTUyhv
YmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9V
U0VSX01FRElBX1JFUVVFU1QsIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RDbGFzcykpCisKK3R5
cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0IFdlYktpdFdlYlVzZXJNZWRp
YVJlcXVlc3Q7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdENsYXNz
IFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRX
ZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0
ZTsKKworc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0IHsKKyAgICBHT2JqZWN0IHBh
cmVudF9pbnN0YW5jZTsKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSAqcHJp
djsKK307CisKK3N0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdENsYXNzIHsKKyAgICBH
T2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0
X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZ2V0X3R5cGUgKHZvaWQpIEdfR05VQ19DT05TVDsKKwor
V0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNf
YXVkaW8gICAgICAgICAgICAgIChXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0ICpyZXF1ZXN0KTsK
KworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2Fu
dHNfdmlkZW8gICAgICAgICAgICAgIChXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0ICpyZXF1ZXN0
KTsKKworV0VCS0lUX0FQSSBjb25zdCBnY2hhciAqCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVx
dWVzdF9nZXRfb3JpZ2luICAgICAgICAgICAgICAgKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3Qg
KnJlcXVlc3QpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogd2Via2l0d2VidXNlcm1lZGlh
cmVxdWVzdF9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4MmZhNzFhYzY4
Y2YxYTExZTQxMmQ3NTYyZGFjYmI3MzY0ZjYyZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGUuaApAQCAt
MCwwICsxLDQwIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMiBDb2xsYWJvcmEgTHRkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRv
IHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworCisj
aWZuZGVmIHdlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlX2gKKyNkZWZpbmUgd2Via2l0
d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGVfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KworI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworc3RydWN0IFVzZXJNZWRpYVJlcXVlc3Q7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0KiBjb3JlKFdlYktpdFdlYlVzZXJNZWRpYVJl
cXVlc3QqKTsKK1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIGtpdE5ldyhXZWJDb3JlOjpVc2Vy
TWVkaWFSZXF1ZXN0Kik7CisKK30KKworI2VuZGlmIC8qIEVOQUJMRShNRURJQV9TVFJFQU0pICov
CisKKyNlbmRpZiAvKiB3ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZV9oICovCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159705</attachid>
            <date>2012-08-21 09:55:59 -0700</date>
            <delta_ts>2012-09-26 12:40:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94373-20120821135558.patch</filename>
            <type>text/plain</type>
            <size>35701</size>
            <attacher name="Danilo de Paula">danilo.eu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1Njg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggZTBjYzI3NzQ3
OTVkZjc3N2ZjYTZhMmNlZTg0NWI3OGUzZTY4Y2VhZi4uMjkxOGViZDIyNTU2YjQwYmU4OGY1OWFi
YTY4N2UxZjRmMDE4ZmNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEy
LTA4LTIxICBEYW5pbG8gQ2VzYXIgTGVtZXMgZGUgUGF1bGEgIDxkYW5pbG8uY2VzYXJAY29sbGFi
b3JhLmNvLnVrPgorCisgICAgICAgIFtndGtdIGFkZGluZyBtZXRob2RzIGFuZCBzaWduYWxzIGZv
ciB1c2VybWVkaWEgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHdlYmtpdCBhbmQgYnJvd3NlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQzNzMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIHRoZSB1c2Vy
IG1ha2UgYSBnZXRVc2VyTWVkaWEgY2FsbCwgd2VidmlldyB3aWxsIGVtaXQgYSBzaWduYWwgKHVz
ZXItbWVkaWEtcmVxdWVzdGVkKQorICAgICAgICB0byB0aGUgYXBwbGljYXRpb24gY29udGFpbmlu
ZyB0aGVuIHJlcXVlc3QgaXRzZWxmICh3ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0KSBhbmQgdHdv
CisgICAgICAgIGxpc3Qgd2l0aCB0aGUgYXZhaWxhYmxlIGF1ZGlvIGFuZCB2aWRlbyBkZXZpY2Vz
ICh3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0KS4KKworICAgICAgICBUaGUgYXBwbGljYXRpb24gbXVz
dCBzaG93IHRoZSBsaXN0IHRvIHRoZSB1c2VyIGFuZCBhc2sgcGVybWlzc2lvbiB0byB1c2Ugb25l
IG9mCisgICAgICAgIHRob3NlIGRldmljZXMgKG9yIHJlamVjdCB0aGUgcmVxdWVzdCB3aXRoIHdl
YmtpdF93ZWJfdmlld19yZWplY3RfdXNlcl9tZWRpYV9yZXF1ZXN0KS4KKworICAgICAgICBJbiBj
YXNlIHRoZSB1c2VyIGFjY2VwdHMgdGhlIHJlcXVlc3QsIHRoZSBhcHBsaWNhdGlvbiBtdXN0IG1h
cmsgdGhlIGRldmljZSBhcworICAgICAgICBzZWxlY3RlZCAodXNpbmcgd2Via2l0X3dlYl91c2Vy
X21lZGlhX2xpc3Rfc2VsZWN0X2l0ZW0pIGFuZCB0aGVuIGNhbGwKKyAgICAgICAgd2Via2l0X3dl
Yl92aWV3X2FjY2VwdF91c2VyX21lZGlhX3JlcXVlc3Qgd2hpY2ggd2lsbCBoYW5kbGUgdGhlIHJl
cXVlc3QgcHJvcGVybHkKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIGRv
Y3Mvd2Via2l0Z3RrLWRvY3Muc2dtbDoKKyAgICAgICAgKiBkb2NzL3dlYmtpdGd0ay1zZWN0aW9u
cy50eHQ6CisgICAgICAgICogd2Via2l0L3dlYmtpdC5oOgorICAgICAgICAqIHdlYmtpdC93ZWJr
aXR3ZWJ1c2VybWVkaWFsaXN0LmNwcDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViVXNlck1l
ZGlhTGlzdFByaXZhdGUpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZGlz
cG9zZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9maW5hbGl6ZSk6Cisg
ICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9jbGFzc19pbml0KToKKyAgICAgICAg
KHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2luaXQpOgorICAgICAgICAod2Via2l0X3dlYl91
c2VyX21lZGlhX2xpc3RfZ2V0X2xlbmd0aCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVk
aWFfbGlzdF9nZXRfaXRlbV9uYW1lKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9s
aXN0X2dldF9pdGVtX3NlbGVjdGVkKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9s
aXN0X3NlbGVjdF9pdGVtKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OmNv
cmUpOgorICAgICAgICAoV2ViS2l0OjpraXROZXcpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3
ZWJ1c2VybWVkaWFsaXN0Lmg6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYlVzZXJNZWRpYUxp
c3QpOgorICAgICAgICAoX1dlYktpdFdlYlVzZXJNZWRpYUxpc3RDbGFzcyk6CisgICAgICAgICog
d2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3Rwcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5jcHA6
IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRlKToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2NsYXNzX2luaXQpOgorICAgICAg
ICAod2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfaW5pdCk6CisgICAgICAgICh3ZWJraXRf
d2ViX3VzZXJfbWVkaWFfcmVxdWVzdF93YW50c19hdWRpbyk6CisgICAgICAgICh3ZWJraXRfd2Vi
X3VzZXJfbWVkaWFfcmVxdWVzdF93YW50c192aWRlbyk6CisgICAgICAgICh3ZWJraXRfd2ViX3Vz
ZXJfbWVkaWFfcmVxdWVzdF9nZXRfb3JpZ2luKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAoV2ViS2l0OjpraXROZXcpOgorICAgICAgICAqIHdl
YmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAoX1dlYktp
dFdlYlVzZXJNZWRpYVJlcXVlc3QpOgorICAgICAgICAoX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVl
c3RDbGFzcyk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2
YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmll
d19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19hY2NlcHRfdXNlcl9tZWRp
YV9yZXF1ZXN0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19yZWplY3RfdXNlcl9tZWRpYV9y
ZXF1ZXN0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5oOgorICAgICAgICAqIHdl
YmtpdG1hcnNoYWwubGlzdDoKKwogMjAxMi0wOC0xNyAgRGFuaWxvIENlc2FyIExlbWVzIGRlIFBh
dWxhICA8ZGFuaWxvLmNlc2FyQGNvbGxhYm9yYS5jby51az4KIAogICAgICAgICBbZ3RrXSBhZGQg
ZW5hYmxlLW1lZGlhLXN0cmVhbSB0byB3ZWJzZXR0aW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ndGsvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5h
bQppbmRleCAyMTU1NzZlNTE4MTRjY2YxMmNjMGVmZWI2OTJlZDlkYTdiMjQ5NDUyLi4wMjQxNzEw
ZTRmMDg1NDYxZDNmZThlNDA1MjVjZWRlMGEzYTAwNmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmls
ZS5hbQpAQCAtMTM4LDYgKzEzOCw4IEBAIHdlYmtpdGd0a19zdGF0aWNfaF9hcGkgKz0gXAogCSQo
c3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24u
aCBcCiAJJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJyZXNvdXJj
ZS5oIFwKIAkkKHNyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRp
bmdzLmggXAorCSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNl
cm1lZGlhbGlzdC5oIFwKKwkkKHNyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnVzZXJtZWRpYXJlcXVlc3QuaCBcCiAJJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oIFwKIAkkKHNyY2RpcikvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAogCkBAIC0yNzIsNiArMjc0LDEwIEBAIHdlYmtp
dGd0a19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicGx1
Z2luZGF0YWJhc2Vwcml2YXRlLmggXAogCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJzZXR0aW5ncy5jcHAgXAogCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0
aW5nc3ByaXZhdGUuaCBcCisJU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJt
ZWRpYWxpc3QuY3BwIFwKKwlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1l
ZGlhbGlzdHByaXZhdGUuaCBcCisJU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVz
ZXJtZWRpYXJlcXVlc3QuY3BwIFwKKwlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dXNlcm1lZGlhcmVxdWVzdHByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuY3BwIFwKIAlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
d3ByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2Zl
YXR1cmVzLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzL3dlYmtpdGd0
ay1kb2NzLnNnbWwgYi9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzL3dlYmtpdGd0ay1kb2NzLnNnbWwK
aW5kZXggNzIxMDY1MjJmYjViYWJhOGIwMDlmZTM1NDRiOWFkZjIzZmNiYjE5OC4uNWEzYWJiM2Y2
NzE4ZTUxNWFjZDMzMTA5ZTE0ZmU5ZmU5YTA0YzM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ndGsvZG9jcy93ZWJraXRndGstZG9jcy5zZ21sCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL2Rv
Y3Mvd2Via2l0Z3RrLWRvY3Muc2dtbApAQCAtMzMsNiArMzMsOCBAQAogICAgIDx4aTppbmNsdWRl
IGhyZWY9InhtbC93ZWJraXRkb3dubG9hZC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4
bWwvd2Via2l0dmlld3BvcnRhdHRyaWJ1dGVzLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9
InhtbC93ZWJraXRoaXR0ZXN0cmVzdWx0LnhtbCIvPgorICAgIDx4aTppbmNsdWRlIGhyZWY9Inht
bC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LnhtbCIvPgorICAgIDx4aTppbmNsdWRlIGhyZWY9Inht
bC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0LnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9
InhtbC93ZWJraXR3ZWJwbHVnaW4ueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dl
YmtpdHdlYnBsdWdpbmRhdGFiYXNlLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC93
ZWJraXRzb3VwYXV0aGRpYWxvZy54bWwiLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L2RvY3Mvd2Via2l0Z3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3Mvd2Vi
a2l0Z3RrLXNlY3Rpb25zLnR4dAppbmRleCA1OTk3MGI1OWMxNzVhYmFhZWVlZDllMzg1OTUyN2E2
Njc2MjRlMWI3Li4wMGUzMmZhNmI0NGYxMzJiMDZhNGE1MzFiZGI1OGZkY2Y3MDQ0ZjhkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzL3dlYmtpdGd0ay1zZWN0aW9ucy50eHQKKysr
IGIvU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJraXRndGstc2VjdGlvbnMudHh0CkBAIC00MDMs
NiArNDAzLDcgQEAgV2ViS2l0V2ViVmlld1RhcmdldEluZm8KIFdlYktpdFdlYlZpZXdWaWV3TW9k
ZQogPFRJVExFPldlYktpdFdlYlZpZXc8L1RJVExFPgogV2ViS2l0V2ViVmlldword2Via2l0X3dl
Yl92aWV3X2FjY2VwdF91c2VyX21lZGlhX3JlcXVlc3QKIHdlYmtpdF93ZWJfdmlld19jYW5fY29w
eV9jbGlwYm9hcmQKIHdlYmtpdF93ZWJfdmlld19jYW5fY3V0X2NsaXBib2FyZAogd2Via2l0X3dl
Yl92aWV3X2Nhbl9nb19iYWNrCkBAIC00NTUsNiArNDU2LDcgQEAgd2Via2l0X3dlYl92aWV3X25l
dwogd2Via2l0X3dlYl92aWV3X29wZW4KIHdlYmtpdF93ZWJfdmlld19wYXN0ZV9jbGlwYm9hcmQK
IHdlYmtpdF93ZWJfdmlld19yZWRvCit3ZWJraXRfd2ViX3ZpZXdfcmVqZWN0X3VzZXJfbWVkaWFf
cmVxdWVzdAogd2Via2l0X3dlYl92aWV3X3JlbG9hZAogd2Via2l0X3dlYl92aWV3X3JlbG9hZF9i
eXBhc3NfY2FjaGUKIHdlYmtpdF93ZWJfdmlld19zZWFyY2hfdGV4dApAQCAtNjgyLDYgKzY4NCw0
NyBAQCBXZWJLaXRJY29uRGF0YWJhc2VQcml2YXRlCiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgor
PEZJTEU+d2Via2l0d2VidXNlcm1lZGlhbGlzdDwvRklMRT4KKzxUSVRMRT5XZWJLaXRXZWJVc2Vy
TWVkaWFMaXN0PC9USVRMRT4KK1dlYktpdFdlYlVzZXJNZWRpYUxpc3QKK3dlYmtpdF93ZWJfdXNl
cl9tZWRpYV9saXN0X2dldF9sZW5ndGgKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9p
dGVtX25hbWUKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9pdGVtX3NlbGVjdGVkCit3
ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9zZWxlY3RfaXRlbQorPFNVQlNFQ1RJT04gU3RhbmRh
cmQ+CitXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfTElTVAorV0VCS0lUX0lTX1dFQl9VU0VSX01F
RElBX0xJU1RfQ0xBU1MKK1dFQktJVF9XRUJfVVNFUl9NRURJQV9MSVNUCitXRUJLSVRfV0VCX1VT
RVJfTUVESUFfTElTVF9DTEFTUworV0VCS0lUX1dFQl9VU0VSX01FRElBX0xJU1RfR0VUX0NMQVNT
CitXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNUCis8U1VCU0VDVElPTiBQcml2YXRlPgor
V2ViS2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGUKK1dlYktpdFdlYlVzZXJNZWRpYUxpc3RDbGFz
cword2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKworPFNF
Q1RJT04+Cis8RklMRT53ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0PC9GSUxFPgorPFRJVExFPldl
YktpdFdlYlVzZXJNZWRpYVJlcXVlc3Q8L1RJVExFPgorV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVz
dAord2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNfYXVkaW8KK3dlYmtpdF93ZWJf
dXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRzX3ZpZGVvCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVx
dWVzdF9nZXRfb3JpZ2luCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dFQktJVF9JU19XRUJfVVNF
Ul9NRURJQV9SRVFVRVNUCitXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfUkVRVUVTVF9DTEFTUwor
V0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVAorV0VCS0lUX1dFQl9VU0VSX01FRElB
X1JFUVVFU1QKK1dFQktJVF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUX0NMQVNTCitXRUJLSVRfV0VC
X1VTRVJfTUVESUFfUkVRVUVTVF9HRVRfQ0xBU1MKKzxTVUJTRUNUSU9OIFByaXZhdGU+CitXZWJL
aXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3MKK1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2
YXRlCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9nZXRfdHlwZQorPC9TRUNUSU9OPgor
Cis8U0VDVElPTj4KIDxGSUxFPndlYmtpdGZhdmljb25kYXRhYmFzZTwvRklMRT4KIDxUSVRMRT5X
ZWJLaXRGYXZpY29uRGF0YWJhc2U8L1RJVExFPgogV2ViS2l0RmF2aWNvbkRhdGFiYXNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmggYi9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0LmgKaW5kZXggYWE3YjkzZGJkYThjMjZkZTIxZTk4MmQzOWM2MTY1
ZmI4YzJmNWU3Ny4uYmYxNmEyNWU5MmVkNTVmOWIyMDdiNGE3MmJjNjNiYjg5NjlmMWViMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaApAQCAtNTEsNiArNTEsOCBAQAogI2luY2x1ZGUgPHdl
YmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3
ZWJyZXNvdXJjZS5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5oPgorI2lu
Y2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0Lmg+CisjaW5jbHVkZSA8d2Via2l0
L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vi
dmlldy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oPgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODVlODM4NDdkMjRiZTBkYmJhM2NmZjFiYjFhMzJkNGMzNWU1OTYwNgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2Vy
bWVkaWFsaXN0LmNwcApAQCAtMCwwICsxLDE4MyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIw
MTIgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEz
MDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmgiCisKKyNpbmNsdWRl
ICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgIndlYmtpdGdsb2JhbHNwcml2YXRlLmgi
CisjaW5jbHVkZSAid2Via2l0d2VidXNlcm1lZGlhbGlzdHByaXZhdGUuaCIKKworI2luY2x1ZGUg
PGdsaWIuaD4KKyNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCisKKy8qKgorICogU0VDVElPTjp3ZWJr
aXR3ZWJ1c2VybWVkaWFsaXN0CisgKiBAc2hvcnRfZGVzY3JpcHRpb246IFVzZXJNZWRpYSBMaXN0
CisgKiBAVGl0bGU6IFdlYktpdFdlYlVzZXJNZWRpYUxpc3QKKyAqCisgKiAjV2ViS2l0V2ViVXNl
ck1lZGlhTGlzdCBjb250YWlucyBhIGxpc3Qgb2YKKyAqIGF1ZGlvIG9yIHZpZGVvIHNvdXJjZXMg
ZnJvbSBhIFdlYlVzZXJNZWRpYVJlcXVlc3QKKyAqCisgKiBTaW5jZTogMS4xMC4wCisgKi8KKwor
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0
UHJpdmF0ZSB7CisgICAgV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3Igc291cmNlczsK
KyAgICBnYm9vbGVhbiogc291cmNlU2VsZWN0aW9uczsKK307CisKK0dfREVGSU5FX1RZUEUoV2Vi
S2l0V2ViVXNlck1lZGlhTGlzdCwgd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3QsIEdfVFlQRV9P
QkpFQ1QpOworCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9kaXNwb3Nl
KEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3VzZXJf
bWVkaWFfbGlzdF9wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkK
K3sKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiB1c2VyTWVkaWFMaXN0ID0gV0VCS0lUX1dF
Ql9VU0VSX01FRElBX0xJU1Qob2JqZWN0KTsKKworICAgIGdfZnJlZSh1c2VyTWVkaWFMaXN0LT5w
cml2LT5zb3VyY2VTZWxlY3Rpb25zKTsKKworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJf
dXNlcl9tZWRpYV9saXN0X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Cit9CisKK3N0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2NsYXNzX2luaXQoV2ViS2l0V2Vi
VXNlck1lZGlhTGlzdENsYXNzKiBsaXN0Q2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBnb2Jq
ZWN0X2NsYXNzID0gR19PQkpFQ1RfQ0xBU1MobGlzdENsYXNzKTsKKyAgICBnb2JqZWN0X2NsYXNz
LT5kaXNwb3NlID0gd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZGlzcG9zZTsKKyAgICBnb2Jq
ZWN0X2NsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2ZpbmFsaXpl
OworCisgICAgd2Via2l0SW5pdCgpOworCisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGxp
c3RDbGFzcywgc2l6ZW9mKFdlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlKSk7Cit9CisKK3N0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2luaXQoV2ViS2l0V2ViVXNlck1l
ZGlhTGlzdCogbGlzdCkKK3sKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZSogcHJp
diA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShsaXN0LCBXRUJLSVRfVFlQRV9XRUJfVVNF
Ul9NRURJQV9MSVNULCBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZSk7CisgICAgbGlzdC0+
cHJpdiA9IHByaXY7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0
X2xlbmd0aDoKKyAqIEBsaXN0OiB0aGUgV2ViS2l0V2ViVXNlck1lZGlhTGlzdCBpdHNlbGYKKyAq
CisgKiBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBlbGVtZW50cyBsaXN0LgorICoKKyAqIFJldHVy
biB2YWx1ZTogbnVtYmVyIG9mIGVsZW1lbnRzLgorICoKKyAqIFNpbmNlOiAxLjEwLjAKKyAqLwor
Z3VpbnQgd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2xlbmd0aChXZWJLaXRXZWJVc2Vy
TWVkaWFMaXN0KiBsaXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19X
RUJfVVNFUl9NRURJQV9MSVNUKGxpc3QpLCAwKTsKKworICAgIHJldHVybiBjb3JlKGxpc3QpLnNp
emUoKTsKK30KKworCisvKioKKyAqIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9pdGVt
X25hbWU6CisgKiBAbGlzdDogdGhlICNXZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGl0c2VsZgorICog
QGluZGV4OiB0aGUgd2FudGVkIGVsZW1lbnQgaW5kZXguCisgKgorICogUmV0dXJucyB0aGUgZGV2
aWNlIG5hbWUgb2YgdGhlIGVsZW1lbnQuCisgKgorICogUmV0dXJuIHZhbHVlOiB0aGUgZGV2aWNl
IGlkIG9mIHRoZSBAaW5kZXggZ2l2ZW4gZWxlbWVudC4KKyAqCisgKiBTaW5jZTogMS4xMC4wCisg
Ki8KK2NvbnN0IGdjaGFyKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfaXRlbV9uYW1l
KFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGxpc3QsIGd1aW50IGluZGV4KQoreworICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9MSVNUKGxpc3QpLCAwKTsK
KworICAgIFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2VzID0gY29yZShs
aXN0KTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChpbmRleCA8IHNvdXJjZXMuc2l6ZSgpLCAw
KTsKKworICAgIHJldHVybiBnX3N0cmR1cChzb3VyY2VzW2luZGV4XS0+bmFtZSgpLnV0ZjgoKS5k
YXRhKCkpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9pdGVt
X3NlbGVjdGVkOgorICogQGxpc3Q6IHRoZSAjV2ViS2l0V2ViVXNlck1lZGlhTGlzdCBpdHNlbGYK
KyAqIEBpbmRleDogdGhlIHdhbnRlZCBlbGVtZW50IGluZGV4LgorICoKKyAqIEluZGljYXRlIGlm
IGEgZGV2aWNlIGlzIG1hcmtlZCBhcyBzZWxlY3RlZC4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IFRy
dWUgaWYgdGhlIGRldmljZSByZXByZXNlbnRlZCBieSBAaW5kZXggaXMgbWFya2VkIGFzIHNlbGVj
dGVkLgorICoKKyAqIFNpbmNlOiAxLjEwLjAKKyAqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl91c2Vy
X21lZGlhX2xpc3RfZ2V0X2l0ZW1fc2VsZWN0ZWQoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCogbGlz
dCwgZ3VpbnQgaW5kZXgpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9VU0VSX01FRElBX0xJU1QobGlzdCksIEZBTFNFKTsKKworICAgIFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtU291cmNlVmVjdG9yJiBzb3VyY2VzID0gY29yZShsaXN0KTsKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChpbmRleCA8IHNvdXJjZXMuc2l6ZSgpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gbGlz
dC0+cHJpdi0+c291cmNlU2VsZWN0aW9uc1tpbmRleF07Cit9CisKKy8qKgorICogd2Via2l0X3dl
Yl91c2VyX21lZGlhX2xpc3Rfc2VsZWN0X2l0ZW06CisgKiBAbGlzdDogdGhlICNXZWJLaXRXZWJV
c2VyTWVkaWFMaXN0IGl0c2VsZgorICogQGluZGV4OiB0aGUgd2FudGVkIGVsZW1lbnQgaW5kZXgu
CisgKgorICogTWFyayBhIGRldmljZSBhcyBzZWxlY3RlZWQuCisgKgorICogU2luY2U6IDEuMTAu
MAorICovCit2b2lkIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X3NlbGVjdF9pdGVtKFdlYktp
dFdlYlVzZXJNZWRpYUxpc3QqIGxpc3QsIGd1aW50IGluZGV4KQoreworICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX0xJU1QobGlzdCkpOworCisgICAgV2ViQ29y
ZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHNvdXJjZXMgPSBjb3JlKGxpc3QpOworICAgIGdf
cmV0dXJuX2lmX2ZhaWwoaW5kZXggPCBzb3VyY2VzLnNpemUoKSk7CisKKyAgICBsaXN0LT5wcml2
LT5zb3VyY2VTZWxlY3Rpb25zW2luZGV4XSA9IFRSVUU7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgY29yZShXZWJLaXRXZWJVc2Vy
TWVkaWFMaXN0KiBsaXN0KQoreworICAgIHJldHVybiBsaXN0LT5wcml2LT5zb3VyY2VzOworfQor
CitXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBraXROZXcoY29uc3QgV2ViQ29yZTo6TWVkaWFTdHJl
YW1Tb3VyY2VWZWN0b3ImIHNvdXJjZXMpCit7CisgICAgV2ViS2l0V2ViVXNlck1lZGlhTGlzdCog
d2ViTGlzdCA9IFdFQktJVF9XRUJfVVNFUl9NRURJQV9MSVNUKGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9XRUJfVVNFUl9NRURJQV9MSVNULCBOVUxMKSk7CisgICAgd2ViTGlzdC0+cHJpdi0+c291
cmNlcyA9IHNvdXJjZXM7CisgICAgd2ViTGlzdC0+cHJpdi0+c291cmNlU2VsZWN0aW9ucyA9IGdf
bmV3MChnYm9vbGVhbiwgc291cmNlcy5zaXplKCkpOworCisgICAgcmV0dXJuIHdlYkxpc3Q7Cit9
CisKK30KKworI2VuZGlmIC8qIEVOQUJMRShNRURJQV9TVFJFQU0pICovCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdC5oIGIvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3QuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
ZTQxY2JhYjgxZTQyYTliZDRiZDE3ZTlmMzMyYjU2ZGM2ODg3OTMxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3QuaApAQCAt
MCwwICsxLDY4IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMiBDb2xsYWJvcmEgTHRkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRv
IHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworCisj
aWZuZGVmIHdlYmtpdHdlYnVzZXJtZWRpYWxpc3RfaAorI2RlZmluZSB3ZWJraXR3ZWJ1c2VybWVk
aWFsaXN0X2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8Z2xpYi5oPgor
CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRlZmluZXMuaD4KKworR19CRUdJTl9ERUNMUworCisj
ZGVmaW5lIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1QgICAgICAgICAgICAgICAod2Vi
a2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9V
U0VSX01FRElBX0xJU1Qob2JqKSAgICAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0Vf
Q0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfTElTVCwgV2ViS2l0V2ViVXNl
ck1lZGlhTGlzdCkpCisjZGVmaW5lIFdFQktJVF9XRUJfVVNFUl9NRURJQV9MSVNUX0NMQVNTKGts
YXNzKSAgICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBF
X1dFQl9VU0VSX01FRElBX0xJU1QsIFdlYktpdFdlYlVzZXJNZWRpYUxpc3RDbGFzcykpCisjZGVm
aW5lIFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9MSVNUKG9iaikgICAgICAgICAgICAoR19UWVBF
X0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJ
U1QpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfTElTVF9DTEFTUyhrbGFzcykg
ICAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfVVNF
Ul9NRURJQV9MSVNUKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9VU0VSX01FRElBX0xJU1RfR0VUX0NM
QVNTKG9iaikgICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZ
UEVfV0VCX1VTRVJfTUVESUFfTElTVCwgV2ViS2l0V2ViVXNlck1lZGlhTGlzdENsYXNzKSkKKwor
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRpYUxpc3QgV2ViS2l0V2ViVXNlck1lZGlh
TGlzdDsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0Q2xhc3MgV2ViS2l0
V2ViVXNlck1lZGlhTGlzdENsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRp
YUxpc3RQcml2YXRlIFdlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlOworCitzdHJ1Y3QgX1dl
YktpdFdlYlVzZXJNZWRpYUxpc3QgeworICAgIEdPYmplY3QgcGFyZW50X2luc3RhbmNlOworICAg
IFdlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJL
aXRXZWJVc2VyTWVkaWFMaXN0Q2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7
Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRf
dHlwZSAodm9pZCkgR19HTlVDX0NPTlNUOworCitXRUJLSVRfQVBJIGd1aW50Cit3ZWJraXRfd2Vi
X3VzZXJfbWVkaWFfbGlzdF9nZXRfbGVuZ3RoICAgICAgICAoV2ViS2l0V2ViVXNlck1lZGlhTGlz
dCAqbGlzdCk7CisKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgord2Via2l0X3dlYl91c2VyX21l
ZGlhX2xpc3RfZ2V0X2l0ZW1fbmFtZSAgICAgKFdlYktpdFdlYlVzZXJNZWRpYUxpc3QgKmxpc3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgaW5k
ZXgpOworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0
X2l0ZW1fc2VsZWN0ZWQgKFdlYktpdFdlYlVzZXJNZWRpYUxpc3QgKmxpc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgaW5kZXgpOworV0VCS0lU
X0FQSSB2b2lkCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9zZWxlY3RfaXRlbSAgICAgICAo
V2ViS2l0V2ViVXNlck1lZGlhTGlzdCAqbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBndWludCBpbmRleCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRp
ZiAvKiB3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3Rwcml2YXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTE5OGNhZWNmYjZjZWY3YzgwYWI5NmFmNTQzNmY1M2E1M2M5N2JkMwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJp
dmF0ZS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIENvbGxh
Ym9yYSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5v
dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EK
KyAqLworCisKKyNpZm5kZWYgd2Via2l0d2VidXNlcm1lZGlhbGlzdHByaXZhdGVfaAorI2RlZmlu
ZSB3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZV9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJ3ZWJraXR3
ZWJ1c2VybWVkaWFsaXN0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJDb3JlOjpNZWRp
YVN0cmVhbVNvdXJjZVZlY3RvciYgY29yZShXZWJLaXRXZWJVc2VyTWVkaWFMaXN0Kik7CitXZWJL
aXRXZWJVc2VyTWVkaWFMaXN0KiBraXROZXcoY29uc3QgV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3Vy
Y2VWZWN0b3ImKTsKKworfQorCisjZW5kaWYgLyogRU5BQkxFKE1FRElBX1NUUkVBTSkgKi8KKwor
I2VuZGlmIC8qIHdlYmtpdHdlYnVzZXJtZWRpYWxpc3Rwcml2YXRlX2ggKi8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lYWZmNWYzMGZiYjRhNTA3Mzg0ZDQ0YTY2NzFmYWYxMjc3ZTdlOWFlCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRp
YXJlcXVlc3QuY3BwCkBAIC0wLDAgKzEsMTM5IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAx
MiBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw
MSAgVVNBCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCisjaW5jbHVkZSAid2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5oIgorCisjaW5j
bHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlVz
ZXJNZWRpYVJlcXVlc3QuaCIKKyNpbmNsdWRlICJ3ZWJraXRnbG9iYWxzcHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlLmgiCisjaW5jbHVkZSA8Z2xp
Yi5oPgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgorCisvKioKKyAqIFNFQ1RJT046d2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdAorICog
QHNob3J0X2Rlc2NyaXB0aW9uOiBUaGUgV2ViS2l0J3MgVXNlck1lZGlhIFJlcXVlc3QuCisgKiBA
VGl0bGU6IFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QKKyAqCisgKiBUaGlzIG9iamVjdCBjb250
YWlucyB0aGUgaW5mb3JtYXRpb24gb2YgYSBtZWRpYSByZXF1ZXN0LgorICogSXQgY2FuIGJlIHVz
ZWQgdG8gY2hlY2sgaWYgdGhlIHJlcXVlc3QgaXMgYXNraW5nIGZvciBhdWRpbyBhbmQvb3Igdmlk
ZW8uCisgKgorICogU2luY2U6IDEuMTAuMAorICovCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CisKK3N0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdFByaXZhdGUgeworICAgIFJlZlB0
cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0PiB1c2VyTWVkaWFSZXF1ZXN0OworfTsKKworR19E
RUZJTkVfVFlQRShXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0LCB3ZWJraXRfd2ViX3VzZXJfbWVk
aWFfcmVxdWVzdCwgR19UWVBFX09CSkVDVCk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdXNl
cl9tZWRpYV9yZXF1ZXN0X2NsYXNzX2luaXQoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdENsYXNz
KiByZXF1ZXN0Q2xhc3MpCit7CisgICAgd2Via2l0SW5pdCgpOworCisgICAgZ190eXBlX2NsYXNz
X2FkZF9wcml2YXRlKHJlcXVlc3RDbGFzcywgc2l6ZW9mKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVl
c3RQcml2YXRlKSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1
ZXN0X2luaXQoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBXZWJL
aXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRf
UFJJVkFURShyZXF1ZXN0LCBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFVRVNULCBXZWJL
aXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSk7CisgICAgcmVxdWVzdC0+cHJpdiA9IHByaXY7
Cit9CisKKy8qKgorICogd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNfYXVkaW86
CisgKiBAcmVxdWVzdDogdGhlICNXZWJLaXRVc2VyTWVkaWFSZXF1ZXN0IGl0c2VsZi4KKyAqCisg
KiBJbmRpY2F0ZXMgdGhlIGNvbnRlbnQgb2YgYW4gVXNlck1lZGlhUmVxdWVzdC4KKyAqCisgKiBS
ZXR1cm4gdmFsdWU6IFRydWUgaWYgdGhlIHJlcXVlc3QgY29udGFpbnMgYW4gYXVkaW8gcmVxdWVz
dC4KKyAqCisgKiBTaW5jZTogMS4xMC4wCisgKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfdXNlcl9t
ZWRpYV9yZXF1ZXN0X3dhbnRzX2F1ZGlvKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIHJlcXVl
c3QpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElB
X1JFUVVFU1QocmVxdWVzdCksIEZBTFNFKTsKKworICAgIHJldHVybiBjb3JlKHJlcXVlc3QpLT5h
dWRpbygpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRz
X3ZpZGVvOgorICogQHJlcXVlc3Q6IHRoZSAjV2ViS2l0VXNlck1lZGlhUmVxdWVzdCBpdHNlbGYu
CisgKgorICogSW5kaWNhdGVzIHRoZSBjb250ZW50IG9mIGFuIFVzZXJNZWRpYVJlcXVlc3QuCisg
KgorICogUmV0dXJuIHZhbHVlOiBUcnVlIGlmIHRoZSByZXF1ZXN0IGNvbnRhaW5zIGEgdmlkZW8g
cmVxdWVzdC4KKyAqCisgKiBTaW5jZTogMS4xMC4wCisgKi8KK2dib29sZWFuIHdlYmtpdF93ZWJf
dXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRzX3ZpZGVvKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3Qq
IHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VS
X01FRElBX1JFUVVFU1QocmVxdWVzdCksIEZBTFNFKTsKKworICAgIHJldHVybiBjb3JlKHJlcXVl
c3QpLT52aWRlbygpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0
X2dldF9vcmlnaW46CisgKiBAcmVxdWVzdDogdGhlICNXZWJLaXRVc2VyTWVkaWFSZXF1ZXN0IGl0
c2VsZi4KKyAqCisgKiBUaGUgb3JpZ2luIG9mIGEgbWVkaWEgcmVxdWVzdC4KKyAqCisgKiBSZXR1
cm4gdmFsdWU6IHN0cmluZyB3aXRoIHRoZSBvcmlnaW4gb2YgYSBtZWRpYSByZXF1ZXN0LgorICoK
KyAqIFNpbmNlOiAxLjEwLjAKKyAqLworY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJfdXNlcl9tZWRp
YV9yZXF1ZXN0X2dldF9vcmlnaW4oV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkK
K3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfUkVR
VUVTVChyZXF1ZXN0KSwgTlVMTCk7CisKKyAgICByZXR1cm4gY29yZShyZXF1ZXN0KS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLnV0ZjgoKS5k
YXRhKCk7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJDb3JlOjpVc2VyTWVkaWFSZXF1
ZXN0KiBjb3JlKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX1JFUVVFU1QocmVxdWVz
dCksIE5VTEwpOworCisgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPnVzZXJNZWRpYVJlcXVlc3Qu
Z2V0KCk7Cit9CisKK1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIGtpdE5ldyhXZWJDb3JlOjpV
c2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHJl
cXVlc3QsIE5VTEwpOworCisgICAgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCogd2ViUmVxdWVz
dCA9IFdFQktJVF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQ
RV9XRUJfVVNFUl9NRURJQV9SRVFVRVNULCBOVUxMKSk7CisgICAgd2ViUmVxdWVzdC0+cHJpdi0+
dXNlck1lZGlhUmVxdWVzdCA9IHJlcXVlc3Q7CisKKyAgICByZXR1cm4gd2ViUmVxdWVzdDsKK30K
KworfQorCisjZW5kaWYgLyogRU5BQkxFKE1FRElBX1NUUkVBTSkgKi8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0LmggYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAxMTM5MjE4NmZkZTliMTlhMzkzOWQzY2JiMzI5YmEyZTk4YWI2YzIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVz
dC5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIENvbGxhYm9y
YSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwg
d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAq
LworCisKKyNpZm5kZWYgd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdF9oCisjZGVmaW5lIHdlYmtp
dHdlYnVzZXJtZWRpYXJlcXVlc3RfaAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNs
dWRlIDxnbGliLmg+CisKKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZGVmaW5lcy5oPgorCitHX0JF
R0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCAg
ICAgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9nZXRfdHlwZSgpKQorI2Rl
ZmluZSBXRUJLSVRfV0VCX1VTRVJfTUVESUFfUkVRVUVTVChvYmopICAgICAgICAgICAgKEdfVFlQ
RV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9S
RVFVRVNULCBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9V
U0VSX01FRElBX1JFUVVFU1RfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FT
VCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCwgV2ViS2l0V2Vi
VXNlck1lZGlhUmVxdWVzdENsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9VU0VSX01FRElB
X1JFUVVFU1Qob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwg
V0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCkpCisjZGVmaW5lIFdFQktJVF9JU19X
RUJfVVNFUl9NRURJQV9SRVFVRVNUX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZ
UEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX1JFUVVFU1QpKQorI2RlZmlu
ZSBXRUJLSVRfV0VCX1VTRVJfTUVESUFfUkVRVUVTVF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9J
TlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFV
RVNULCBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBf
V2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0OwordHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RDbGFzcyBXZWJLaXRXZWJVc2Vy
TWVkaWFSZXF1ZXN0Q2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhUmVx
dWVzdFByaXZhdGUgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdFByaXZhdGU7CisKK3N0cnVjdCBf
V2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCB7CisgICAgR09iamVjdCBwYXJlbnRfaW5zdGFuY2U7
CisgICAgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdFByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1
Y3QgX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RDbGFzcyB7CisgICAgR09iamVjdENsYXNzIHBh
cmVudF9jbGFzczsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF93ZWJfdXNlcl9tZWRp
YV9yZXF1ZXN0X2dldF90eXBlICh2b2lkKSBHX0dOVUNfQ09OU1Q7CisKK1dFQktJVF9BUEkgZ2Jv
b2xlYW4KK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRzX2F1ZGlvICAgICAgICAg
ICAgICAoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCAqcmVxdWVzdCk7CisKK1dFQktJVF9BUEkg
Z2Jvb2xlYW4KK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRzX3ZpZGVvICAgICAg
ICAgICAgICAoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCAqcmVxdWVzdCk7CisKK1dFQktJVF9B
UEkgY29uc3QgZ2NoYXIgKgord2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZ2V0X29yaWdp
biAgICAgICAgICAgICAgIChXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0ICpyZXF1ZXN0KTsKKwor
R19FTkRfREVDTFMKKworI2VuZGlmIC8qIHdlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3RfaCAqLwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJl
cXVlc3Rwcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1l
ZGlhcmVxdWVzdHByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODJmYTcxYWM2OGNmMWExMWU0MTJkNzU2
MmRhY2JiNzM2NGY2MmZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlLmgKQEAgLTAsMCArMSw0MCBAQAor
LyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0
d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKworI2lmbmRlZiB3ZWJraXR3
ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZV9oCisjZGVmaW5lIHdlYmtpdHdlYnVzZXJtZWRpYXJl
cXVlc3Rwcml2YXRlX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJ3
ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVj
dCBVc2VyTWVkaWFSZXF1ZXN0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQ29yZTo6
VXNlck1lZGlhUmVxdWVzdCogY29yZShXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Kik7CitXZWJL
aXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiBraXROZXcoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCop
OworCit9CisKKyNlbmRpZiAvKiBFTkFCTEUoTUVESUFfU1RSRUFNKSAqLworCisjZW5kaWYgLyog
d2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IGFmYzI2NmYzY2Y4ZmM5NmUwYTA2ZDc3ZTJk
ZTFhMDNiNGRjNjk1MmMuLmNlZTkzZDVmYmYyNzEzOWU0ZTRjMDZjMmQ3ZjQyMWYzZTQ3ODQ0NWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTExOSw2
ICsxMTksMTQgQEAKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEd0ay5oIgogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291
cmNlLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50R3RrLmgiCisjaW5jbHVkZSAid2Via2l0
d2VidXNlcm1lZGlhbGlzdC5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYWxpc3Rwcml2
YXRlLmgiCisjaW5jbHVkZSAid2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGUuaCIKKyNl
bmRpZgorCiAvKioKICAqIFNFQ1RJT046d2Via2l0d2VidmlldwogICogQHNob3J0X2Rlc2NyaXB0
aW9uOiBUaGUgY2VudHJhbCBjbGFzcyBvZiB0aGUgV2ViS2l0R1RLKyBBUEkKQEAgLTIxMCw2ICsy
MTgsOCBAQCBlbnVtIHsKICAgICBFRElUSU5HX0VOREVELAogICAgIFZJRVdQT1JUX0FUVFJJQlVU
RVNfUkVDT01QVVRFX1JFUVVFU1RFRCwKICAgICBWSUVXUE9SVF9BVFRSSUJVVEVTX0NIQU5HRUQs
CisgICAgVVNFUl9NRURJQV9SRVFVRVNURUQsCisgICAgVVNFUl9NRURJQV9SRVFVRVNUX0NBTkNF
TExFRCwKICAgICBSRVNPVVJDRV9SRVNQT05TRV9SRUNFSVZFRCwKICAgICBSRVNPVVJDRV9MT0FE
X0ZJTklTSEVELAogICAgIFJFU09VUkNFX0NPTlRFTlRfTEVOR1RIX1JFQ0VJVkVELApAQCAtMjcz
Niw2ICsyNzQ2LDUxIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdl
YktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgR19UWVBFX05PTkUs
IDEsCiAgICAgICAgICAgICBXRUJLSVRfVFlQRV9WSUVXUE9SVF9BVFRSSUJVVEVTKTsKIAorI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyAgICAvKgorICAgICAqIFdlYktpdFdlYlZpZXc6OnVz
ZXItbWVkaWEtcmVxdWVzdGVkCisgICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IHdoaWNoIHJl
Y2VpdmVkIHRoZSBzaWduYWwKKyAgICAgKiBAcmVxdWVzdDogdGhlICNXZWJLaXRXZWJVc2VyTWVk
aWFScXVlc3QgYXR0cmlidXRlIHdoaWNoIGdlbmVyYXRlZCB0aGUgcmVxdWVzdC4KKyAgICAgKiBA
YXVkaW9MaXN0OiBhICNXZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGNvbnRhaW5pbmcgdGhlIGF2YWls
YWJsZSBhdWRpbyBtZWRpYSBvcHRpb25zLgorICAgICAqIEB2aWRlb0xpc3Q6IGEgI1dlYktpdFdl
YlVzZXJNZWRpYUxpc3QgY29udGFpbmluZyB0aGUgYXZhaWxhYmxlIHZpZGVvIG1lZGlhIG9wdGlv
bnMuCisgICAgICoKKyAgICAgKiBXaGVuIHRoZSBhcHBsaWNhdGlvbiByZXF1ZXN0IHVzZXJNZWRp
YSwgdGhpcyBzaWduYWwgd2lsbCBiZSBlbWl0ZWQgd2l0aCB0aGUgcmVxdWVzdAorICAgICAqIGlu
Zm9ybWF0aW9uIGFuZCB0aGUgYXZhaWxhYmxlIG9wdGlvbnMgdG8gYmUgc2VsZWN0ZWQuCisgICAg
ICoKKyAgICAgKiBTaW5jZTogMS4xMC4wCisgICAgICovCisgICAgd2Via2l0X3dlYl92aWV3X3Np
Z25hbHNbVVNFUl9NRURJQV9SRVFVRVNURURdID0gZ19zaWduYWxfbmV3KCJ1c2VyLW1lZGlhLXJl
cXVlc3RlZCIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAor
ICAgICAgICAgICAgKEdTaWduYWxGbGFncykoR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9B
Q1RJT04pLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIDAsIDAsCisgICAgICAgICAgICB3
ZWJraXRfbWFyc2hhbF9WT0lEX19PQkpFQ1RfT0JKRUNUX09CSkVDVCwKKyAgICAgICAgICAgIEdf
VFlQRV9OT05FLCAzLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVR
VUVTVCwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1QsCisgICAg
ICAgICAgICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNUKTsKKworICAgIC8qCisgICAg
ICogV2ViS2l0V2ViVmlldzo6dXNlci1tZWRpYS1yZXF1ZXN0LWNhbmNlbGxlZAorICAgICAqIEB3
ZWJfdmlldzogdGhlIG9iamVjdCB3aGljaCByZWNlaXZlZCB0aGUgc2lnbmFsCisgICAgICogQHJl
cXVlc3Q6IHRoZSAjV2ViS2l0V2ViVXNlck1lZGlhUnF1ZXN0IGl0c2VsZgorICAgICAqCisgICAg
ICogVGhpcyBzaWduYWwgd2lsbCBiZSBlbWl0ZWQgd2hlbiB0aGUgdXNlciBjYW5jZWxlZCBpdHMg
dXNlck1lZGlhIHJlcXVlc3QuCisgICAgICoKKyAgICAgKiBTaW5jZTogMS4xMC4wCisgICAgICov
CisgICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbVVNFUl9NRURJQV9SRVFVRVNUX0NBTkNFTExF
RF0gPSBnX3NpZ25hbF9uZXcoInVzZXItbWVkaWEtcmVxdWVzdC1jYW5jZWxsZWQiLAorICAgICAg
ICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIChHU2ln
bmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKKyAgICAgICAg
ICAgIDAsCisgICAgICAgICAgICAwLCAwLAorICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfVk9J
RF9fT0JKRUNULAorICAgICAgICAgICAgR19UWVBFX05PTkUsIDEsCisgICAgICAgICAgICBXRUJL
SVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFVRVNUKTsKKworI2VuZGlmIC8qIEVOQUJMRShNRURJ
QV9TVFJFQU0pICovCisKICAgICAvKioKICAgICAgKiBXZWJLaXRXZWJWaWV3OjplbnRlcmluZy1m
dWxsc2NyZWVuOgogICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNo
IHRoZSBzaWduYWwgaXMgZW1pdHRlZC4KQEAgLTUzMjcsNiArNTM4Miw2NiBAQCB2b2lkIHdlYlZp
ZXdFeGl0RnVsbHNjcmVlbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogI2VuZGlmCiB9CiAKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfYWNjZXB0X3Vz
ZXJfbWVkaWFfcmVxdWVzdDoKKyAqIEB3ZWJWaWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAd2Vi
UmVxdWVzdDogYSAjV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdAorICogQGF1ZGlvTWVkaWFMaXN0
OiBhICNXZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGNvbnRhaW5pbmcgYXVkaW8gZGV2aWNlcworICog
QHZpZGVvTWVkaWFMaXN0OiBhICNXZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGNvbnRhaW5pbmcgdmlk
ZW8gZGV2aWNlcworICoKKyAqIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQgYnkgdGhlIGFw
cGxpY2F0aW9uIGFmdGVyIHRoZSB1c2VyIHNlbGVjdHMKKyAqIGEgbWVkaWEgZGV2aWNlIGFuZCBh
Y2NlcHRzIGFuIG1lZGlhIHJlcXVlc3QKKyAqCisgKiBTaW5jZTogMS4xMC4wCisgKiovCit2b2lk
IHdlYmtpdF93ZWJfdmlld19hY2NlcHRfdXNlcl9tZWRpYV9yZXF1ZXN0KFdlYktpdFdlYlZpZXcg
KndlYlZpZXcsIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QgKndlYlJlcXVlc3QsIFdlYktpdFdl
YlVzZXJNZWRpYUxpc3QgKmF1ZGlvTWVkaWFMaXN0LCBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0ICp2
aWRlb01lZGlhTGlzdCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklF
Vyh3ZWJWaWV3KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVE
SUFfUkVRVUVTVCh3ZWJSZXF1ZXN0KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNf
V0VCX1VTRVJfTUVESUFfTElTVChhdWRpb01lZGlhTGlzdCkpOworICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX0xJU1QodmlkZW9NZWRpYUxpc3QpKTsKKworICAg
IFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKworICAgIE1lZGlh
U3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMgPSBjb3JlKGF1ZGlvTWVkaWFMaXN0KTsK
KyAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzID0gY29yZSh2aWRlb01l
ZGlhTGlzdCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gYXVkaW9Tb3VyY2VzLnNpemUoKSAtIDE7
IGkgIT0gKHNpemVfdCkgLTE7IC0taSkKKyAgICAgICAgaWYgKCF3ZWJraXRfd2ViX3VzZXJfbWVk
aWFfbGlzdF9nZXRfaXRlbV9zZWxlY3RlZChhdWRpb01lZGlhTGlzdCwgaSkpCisgICAgICAgICAg
ICBhdWRpb1NvdXJjZXMucmVtb3ZlKGkpOworCisgICAgZm9yIChzaXplX3QgaSA9IHZpZGVvU291
cmNlcy5zaXplKCkgLSAxOyBpICE9IChzaXplX3QpIC0xOyAtLWkpCisgICAgICAgIGlmICghd2Vi
a2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2l0ZW1fc2VsZWN0ZWQodmlkZW9NZWRpYUxpc3Qs
IGkpKQorICAgICAgICAgICAgdmlkZW9Tb3VyY2VzLnJlbW92ZShpKTsKKworICAgIC8vIFRPRE86
IHVuY29tbWVudCB0aGUgZm9sbG93aW5nIGxpbmVzIHdoZW4gdGhlIFVzZXJNZWRpYUNsaWVudEd0
ayBpbXBsZW1lbnRhdGlvbiBpcyBjb21wbGV0ZWQKKyAgICAvLyBVc2VyTWVkaWFDbGllbnRHdGsq
IGNsaWVudCA9IHN0YXRpY19jYXN0PFVzZXJNZWRpYUNsaWVudEd0ayo+KHByaXYtPnVzZXJNZWRp
YUNsaWVudC5nZXQoKSk7CisgICAgLy8gY2xpZW50LT51c2VyTWVkaWFSZXF1ZXN0U3VjY2VlZGVk
KGNvcmUod2ViUmVxdWVzdCksIGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKTsKK30KKworLyoq
CisgKiB3ZWJraXRfd2ViX3ZpZXdfcmVqZWN0X3VzZXJfbWVkaWFfcmVxdWVzdDoKKyAqIEB3ZWJW
aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAd2ViUmVxdWVzdDogYSAjV2ViS2l0V2ViVXNlck1l
ZGlhUmVxdWVzdAorICoKKyAqIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQgYnkgdGhlIGFw
cGxpY2F0aW9uIHdoZW4gdGhlIHVzZXIgcmVqZWN0ZWQgYSB1c2VyTWVkaWEgcmVxdWVzdC4KKyAq
CisgKiBTaW5jZTogMS4xMC4wCisgKiovCit2b2lkIHdlYmtpdF93ZWJfdmlld19yZWplY3RfdXNl
cl9tZWRpYV9yZXF1ZXN0KFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIFdlYktpdFdlYlVzZXJNZWRp
YVJlcXVlc3QgKndlYlJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNf
V0VCX1ZJRVcod2ViVmlldykpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9V
U0VSX01FRElBX1JFUVVFU1Qod2ViUmVxdWVzdCkpOworCisgICAgV2ViS2l0V2ViVmlld1ByaXZh
dGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworCisgICAgLy8gVE9ETzogdW5jb21tZW50IHRodyBm
b2xsb3dpbmcgbGluZXMgd2hlbiB0aGUgVXNlck1lZGlhQ2xpZW50R3RrIGltcGxlbWVudGF0aW9u
IGlzIGNvbXBsZXRlZAorICAgIC8vIFVzZXJNZWRpYUNsaWVudEd0ayogY2xpZW50ID0gc3RhdGlj
X2Nhc3Q8VXNlck1lZGlhQ2xpZW50R3RrKj4ocHJpdi0+dXNlck1lZGlhQ2xpZW50LmdldCgpKTsK
KyAgICAvLyBjbGllbnQtPnVzZXJNZWRpYVJlcXVlc3RGYWlsZWQoY29yZSh3ZWJSZXF1ZXN0KSk7
Cit9CisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwogI2lmIEVOQUJMRShJQ09OREFU
QUJBU0UpCiB2b2lkIHdlYmtpdFdlYlZpZXdJY29uTG9hZGVkKFdlYktpdEZhdmljb25EYXRhYmFz
ZSogZGF0YWJhc2UsIGNvbnN0IGNoYXIqIGZyYW1lVVJJLCBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcu
aCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKaW5kZXggOWM4NDI2
M2I0YmMwOTQ3YTZmMGRmOTVkYjAxN2M1MjM0YTFlMmQ5ZS4uY2ExMmVhNThiMDY2OTA3Y2ZmYjBi
OGVlNDBiNDRkMWYzMWQ0M2UzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dmlldy5oCkBAIC0zMyw2ICszMyw4IEBACiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmZyYW1l
Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmg+CiAjaW5jbHVkZSA8
d2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnVz
ZXJtZWRpYWxpc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVz
dC5oPgogCiBHX0JFR0lOX0RFQ0xTCiAKQEAgLTQ0OSw2ICs0NTEsMTYgQEAgd2Via2l0X3dlYl92
aWV3X2dldF92aWV3cG9ydF9hdHRyaWJ1dGVzICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICp3ZWJfdmlldykKIFdFQktJVF9BUEkgY2Fpcm9fc3VyZmFjZV90Kgogd2Via2l0X3dlYl92aWV3
X2dldF9zbmFwc2hvdCAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3
ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X2FjY2VwdF91c2Vy
X21lZGlhX3JlcXVlc3QgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJWaWV3LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYlVz
ZXJNZWRpYVJlcXVlc3QgKndlYlJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViVXNlck1lZGlhTGlzdCAqYXVkaW9NZWRpYUxp
c3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Vi
S2l0V2ViVXNlck1lZGlhTGlzdCAqdmlkZW9NZWRpYUxpc3QpOworCitXRUJLSVRfQVBJIHZvaWQK
K3dlYmtpdF93ZWJfdmlld19yZWplY3RfdXNlcl9tZWRpYV9yZXF1ZXN0ICAgICAgIChXZWJLaXRX
ZWJWaWV3ICAgICAgICAqd2ViVmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0ICp3ZWJSZXF1ZXN0KTsK
KwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXRtYXJzaGFsLmxpc3QgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXRtYXJzaGFsLmxpc3QK
aW5kZXggYjc0Mjg5MDVjODk4M2NmYzc1ZWM1NDQ3NDEzM2NhMjhmNmQ3OTViNC4uNGQwYjlkOWUz
MmQzMmNjZDVjODNiZDBjNWNlNmYzZjJkMDhiYzU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0bWFyc2hhbC5saXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdG1h
cnNoYWwubGlzdApAQCAtMTgsNiArMTgsNyBAQCBFTlVNOk9CSkVDVCxPQkpFQ1QKIE9CSkVDVDpP
QkpFQ1QKIE9CSkVDVDpTVFJJTkcsU1RSSU5HLFBPSU5URVIKIE9CSkVDVDpWT0lECitWT0lEOk9C
SkVDVAogVk9JRDpPQkpFQ1QsT0JKRUNUCiBWT0lEOk9CSkVDVCxPQkpFQ1QsSU5UCiBWT0lEOk9C
SkVDVCxPQkpFQ1QsT0JKRUNUCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165854</attachid>
            <date>2012-09-26 12:40:34 -0700</date>
            <delta_ts>2012-09-28 10:12:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94373-20120926163952.patch</filename>
            <type>text/plain</type>
            <size>36730</size>
            <attacher name="Danilo de Paula">danilo.eu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggMTY3NjA1NzYw
YzA1ZTNhMDZlODYyZDE4YjRlYTExN2E1ZjEwYWUzMi4uMDAxMTM4ODFmZDU5OGNhOGYyMjhmM2Y2
M2VhMjAyOWUzMzRmOWFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDEy
LTA5LTI2ICBEYW5pbG8gQ2VzYXIgTGVtZXMgZGUgUGF1bGEgIDxkYW5pbG8uY2VzYXJAY29sbGFi
b3JhLmNvLnVrPgorCisgICAgICAgIFtndGtdIGFkZGluZyBtZXRob2RzIGFuZCBzaWduYWxzIGZv
ciB1c2VybWVkaWEgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHdlYmtpdCBhbmQgYnJvd3NlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQzNzMKKworICAg
ICAgICBXaGVuIHRoZSB1c2VyIG1ha2UgYSBnZXRVc2VyTWVkaWEgY2FsbCwgd2VidmlldyB3aWxs
IGVtaXQgYSBzaWdpYWwgKHVzZXItbWVkaWEtcmVxdWVzdGVkKQorICAgICAgICB0byB0aGUgYXBw
bGljYXRpb24gY29udGFpbmluZyB0aGVuIHJlcXVlc3QgaXRzZWxmICh3ZWJraXR3ZWJ1c2VybWVk
aWFyZXF1ZXN0KSBhbmQgdHdvCisgICAgICAgIGxpc3Qgd2l0aCB0aGUgYXZhaWxhYmxlIGF1ZGlv
IGFuZCB2aWRlbyBkZXZpY2VzICh3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0KS4KKworICAgICAgICBU
aGUgYXBwbGljYXRpb24gbXVzdCBzaG93IHRoZSBsaXN0IHRvIHRoZSB1c2VyIGFuZCBhc2sgcGVy
bWlzc2lvbiB0byB1c2Ugb25lIG9mCisgICAgICAgIHRob3NlIGRldmljZXMgKG9yIHJlamVjdCB0
aGUgcmVxdWVzdCkuCisKKyAgICAgICAgSW4gY2FzZSB0aGUgdXNlciBhY2NlcHRzIHRoZSByZXF1
ZXN0LCB0aGUgYXBwbGljYXRpb24gbXVzdCBtYXJrIHRoZSBkZXZpY2UgYXMKKyAgICAgICAgc2Vs
ZWN0ZWQgKHVzaW5nIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X3NlbGVjdF9pdGVtKSBhbmQg
dGhlbiBjYWxsCisgICAgICAgIHdlYmtpdF93ZWJfdmlld19hY2NlcHRfdXNlcl9tZWRpYV9yZXF1
ZXN0IHdoaWNoIHdpbGwgaGFuZGxlIHRoZSByZXF1ZXN0IHByb3Blcmx5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgor
ICAgICAgICAqIGRvY3Mvd2Via2l0Z3RrLWRvY3Muc2dtbDoKKyAgICAgICAgKiBkb2NzL3dlYmtp
dGd0ay1zZWN0aW9ucy50eHQ6CisgICAgICAgICogd2Via2l0L3dlYmtpdC5oOgorICAgICAgICAq
IHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmNwcDogQWRkZWQuCisgICAgICAgIChfV2Vi
S2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGUpOgorICAgICAgICAod2Via2l0V2ViVXNlck1lZGlh
TGlzdERpc3Bvc2UpOgorICAgICAgICAod2Via2l0V2ViVXNlck1lZGlhTGlzdEZpbmFsaXplKToK
KyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2NsYXNzX2luaXQpOgorICAgICAg
ICAod2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2Vi
X3VzZXJfbWVkaWFfbGlzdF9nZXRfbGVuZ3RoKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9t
ZWRpYV9saXN0X2dldF9pdGVtX25hbWUpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlh
X2xpc3RfaXNfaXRlbV9zZWxlY3RlZCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFf
bGlzdF9zZWxlY3RfaXRlbSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0Ojpj
b3JlKToKKyAgICAgICAgKFdlYktpdDo6a2l0TmV3KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
d2VidXNlcm1lZGlhbGlzdC5oOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFM
aXN0KToKKyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0Q2xhc3MpOgorICAgICAgICAq
IHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSk6Cisg
ICAgICAgICh3ZWJraXRXZWJVc2VyTWVkaWFSZXF1ZXN0RmluYWxpemUpOgorICAgICAgICAod2Vi
a2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRf
d2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9t
ZWRpYV9yZXF1ZXN0X3dhbnRzX2F1ZGlvKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRp
YV9yZXF1ZXN0X3dhbnRzX3ZpZGVvKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9y
ZXF1ZXN0X2dldF9zZWN1cml0eV9vcmlnaW4pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6Y29yZSk6CisgICAgICAgIChXZWJLaXQ6OmtpdE5ldyk6CisgICAgICAgICogd2Vi
a2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuaDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0
V2ViVXNlck1lZGlhUmVxdWVzdCk6CisgICAgICAgIChfV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVz
dENsYXNzKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZh
dGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3
X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2FjY2VwdF91c2VyX21lZGlh
X3JlcXVlc3QpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3JlamVjdF91c2VyX21lZGlhX3Jl
cXVlc3QpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg6CisgICAgICAgICogd2Vi
a2l0bWFyc2hhbC5saXN0OgorCiAyMDEyLTA4LTE3ICBEYW5pbG8gQ2VzYXIgTGVtZXMgZGUgUGF1
bGEgIDxkYW5pbG8uY2VzYXJAY29sbGFib3JhLmNvLnVrPgogCiAgICAgICAgIFtndGtdIGFkZCBl
bmFibGUtbWVkaWEtc3RyZWFtIHRvIHdlYnNldHRpbmdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFt
CmluZGV4IGRiNmM5YjBiYzRkMDBiZGZkODQ0MTk2MThiNWEwOGJkNTkxMjBjZDcuLjIzNjljM2M3
ZmI2YzQ2NmQ3ZjhlYzE0ZDkwNmUzMDZmMWU4NTIyM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxl
LmFtCkBAIC0xMzksNiArMTM5LDggQEAgd2Via2l0Z3RrX3N0YXRpY19oX2FwaSArPSBcCiAJJChz
cmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5o
IFwKIAkkKHNyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnJlc291cmNl
LmggXAogCSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGlu
Z3MuaCBcCisJJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2Vy
bWVkaWFsaXN0LmggXAorCSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2VidXNlcm1lZGlhcmVxdWVzdC5oIFwKIAkkKHNyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmggXAogCSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCiAKQEAgLTI3Myw2ICsyNzUsMTAgQEAgd2Via2l0
Z3RrX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwbHVn
aW5kYXRhYmFzZXByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnNldHRpbmdzLmNwcCBcCiAJU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRp
bmdzcHJpdmF0ZS5oIFwKKwlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1l
ZGlhbGlzdC5jcHAgXAorCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVk
aWFsaXN0cHJpdmF0ZS5oIFwKKwlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNl
cm1lZGlhcmVxdWVzdC5jcHAgXAorCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1
c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5jcHAgXAogCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
cHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVh
dHVyZXMuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3Mvd2Via2l0Z3Rr
LWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3Mvd2Via2l0Z3RrLWRvY3Muc2dtbApp
bmRleCA3MjEwNjUyMmZiNWJhYmE4YjAwOWZlMzU0NGI5YWRmMjNmY2JiMTk4Li41YTNhYmIzZjY3
MThlNTE1YWNkMzMxMDllMTRmZTlmZTlhMDRjMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2d0ay9kb2NzL3dlYmtpdGd0ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktpdC9ndGsvZG9j
cy93ZWJraXRndGstZG9jcy5zZ21sCkBAIC0zMyw2ICszMyw4IEBACiAgICAgPHhpOmluY2x1ZGUg
aHJlZj0ieG1sL3dlYmtpdGRvd25sb2FkLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9Inht
bC93ZWJraXR2aWV3cG9ydGF0dHJpYnV0ZXMueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0i
eG1sL3dlYmtpdGhpdHRlc3RyZXN1bHQueG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1s
L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3QueG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1s
L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0i
eG1sL3dlYmtpdHdlYnBsdWdpbi54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvd2Vi
a2l0d2VicGx1Z2luZGF0YWJhc2UueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dl
YmtpdHNvdXBhdXRoZGlhbG9nLnhtbCIvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsv
ZG9jcy93ZWJraXRndGstc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJr
aXRndGstc2VjdGlvbnMudHh0CmluZGV4IGI3MDdiZjgzZDcxMWEwYzFlMTc3YWI2NGYxNDc2ZjRj
MWUwZmJlN2EuLmEwOGYxNDAzZDYzMmM3NjhlMzAyYzZlMDg1MDQ3YWNiZGM4YjUyYTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3Mvd2Via2l0Z3RrLXNlY3Rpb25zLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzL3dlYmtpdGd0ay1zZWN0aW9ucy50eHQKQEAgLTQwMyw2
ICs0MDMsNyBAQCBXZWJLaXRXZWJWaWV3VGFyZ2V0SW5mbwogV2ViS2l0V2ViVmlld1ZpZXdNb2Rl
CiA8VElUTEU+V2ViS2l0V2ViVmlldzwvVElUTEU+CiBXZWJLaXRXZWJWaWV3Cit3ZWJraXRfd2Vi
X3ZpZXdfYWNjZXB0X3VzZXJfbWVkaWFfcmVxdWVzdAogd2Via2l0X3dlYl92aWV3X2Nhbl9jb3B5
X2NsaXBib2FyZAogd2Via2l0X3dlYl92aWV3X2Nhbl9jdXRfY2xpcGJvYXJkCiB3ZWJraXRfd2Vi
X3ZpZXdfY2FuX2dvX2JhY2sKQEAgLTQ1NSw2ICs0NTYsNyBAQCB3ZWJraXRfd2ViX3ZpZXdfbmV3
CiB3ZWJraXRfd2ViX3ZpZXdfb3Blbgogd2Via2l0X3dlYl92aWV3X3Bhc3RlX2NsaXBib2FyZAog
d2Via2l0X3dlYl92aWV3X3JlZG8KK3dlYmtpdF93ZWJfdmlld19yZWplY3RfdXNlcl9tZWRpYV9y
ZXF1ZXN0CiB3ZWJraXRfd2ViX3ZpZXdfcmVsb2FkCiB3ZWJraXRfd2ViX3ZpZXdfcmVsb2FkX2J5
cGFzc19jYWNoZQogd2Via2l0X3dlYl92aWV3X3NlYXJjaF90ZXh0CkBAIC02ODYsNiArNjg4LDQ3
IEBAIFdlYktpdEljb25EYXRhYmFzZVByaXZhdGUKIDwvU0VDVElPTj4KIAogPFNFQ1RJT04+Cis8
RklMRT53ZWJraXR3ZWJ1c2VybWVkaWFsaXN0PC9GSUxFPgorPFRJVExFPldlYktpdFdlYlVzZXJN
ZWRpYUxpc3Q8L1RJVExFPgorV2ViS2l0V2ViVXNlck1lZGlhTGlzdAord2Via2l0X3dlYl91c2Vy
X21lZGlhX2xpc3RfZ2V0X2xlbmd0aAord2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2l0
ZW1fbmFtZQord2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfaXNfaXRlbV9zZWxlY3RlZAord2Vi
a2l0X3dlYl91c2VyX21lZGlhX2xpc3Rfc2VsZWN0X2l0ZW0KKzxTVUJTRUNUSU9OIFN0YW5kYXJk
PgorV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX0xJU1QKK1dFQktJVF9JU19XRUJfVVNFUl9NRURJ
QV9MSVNUX0NMQVNTCitXRUJLSVRfV0VCX1VTRVJfTUVESUFfTElTVAorV0VCS0lUX1dFQl9VU0VS
X01FRElBX0xJU1RfQ0xBU1MKK1dFQktJVF9XRUJfVVNFUl9NRURJQV9MSVNUX0dFVF9DTEFTUwor
V0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfTElTVAorPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dl
YktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlCitXZWJLaXRXZWJVc2VyTWVkaWFMaXN0Q2xhc3MK
K3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF90eXBlCis8L1NFQ1RJT04+CisKKzxTRUNU
SU9OPgorPEZJTEU+d2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdDwvRklMRT4KKzxUSVRMRT5XZWJL
aXRXZWJVc2VyTWVkaWFSZXF1ZXN0PC9USVRMRT4KK1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QK
K3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRzX2F1ZGlvCit3ZWJraXRfd2ViX3Vz
ZXJfbWVkaWFfcmVxdWVzdF93YW50c192aWRlbword2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVl
c3RfZ2V0X29yaWdpbgorPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXRUJLSVRfSVNfV0VCX1VTRVJf
TUVESUFfUkVRVUVTVAorV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX1JFUVVFU1RfQ0xBU1MKK1dF
QktJVF9UWVBFX1dFQl9VU0VSX01FRElBX1JFUVVFU1QKK1dFQktJVF9XRUJfVVNFUl9NRURJQV9S
RVFVRVNUCitXRUJLSVRfV0VCX1VTRVJfTUVESUFfUkVRVUVTVF9DTEFTUworV0VCS0lUX1dFQl9V
U0VSX01FRElBX1JFUVVFU1RfR0VUX0NMQVNTCis8U1VCU0VDVElPTiBQcml2YXRlPgorV2ViS2l0
V2ViVXNlck1lZGlhUmVxdWVzdENsYXNzCitXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0
ZQord2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKwor
PFNFQ1RJT04+CiA8RklMRT53ZWJraXRmYXZpY29uZGF0YWJhc2U8L0ZJTEU+CiA8VElUTEU+V2Vi
S2l0RmF2aWNvbkRhdGFiYXNlPC9USVRMRT4KIFdlYktpdEZhdmljb25EYXRhYmFzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oIGIvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdC5oCmluZGV4IGFhN2I5M2RiZGE4YzI2ZGUyMWU5ODJkMzljNjE2NWZi
OGMyZjVlNzcuLmJmMTZhMjVlOTJlZDU1ZjliMjA3YjRhNzJiYzYzYmI4OTY5ZjFlYjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0LmgKQEAgLTUxLDYgKzUxLDggQEAKICNpbmNsdWRlIDx3ZWJr
aXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vi
cmVzb3VyY2UuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaD4KKyNpbmNs
dWRlIDx3ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdC5oPgorI2luY2x1ZGUgPHdlYmtpdC93
ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnZp
ZXcuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaD4KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3QuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI5MDk2ZjdkZTg2NjE4MGM5OGJkYTg2ZjIxYThlZTY1ZTA0MjllMzkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1l
ZGlhbGlzdC5jcHAKQEAgLTAsMCArMSwxODIgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEy
IENvbGxhYm9yYSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAx
ICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorCisjaW5jbHVkZSAid2Via2l0d2VidXNlcm1lZGlhbGlzdC5oIgorCisjaW5jbHVkZSAi
d2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0
cHJpdmF0ZS5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCisKKy8qKgorICog
U0VDVElPTjp3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0CisgKiBAc2hvcnRfZGVzY3JpcHRpb246IFVz
ZXJNZWRpYSBMaXN0CisgKiBAVGl0bGU6IFdlYktpdFdlYlVzZXJNZWRpYUxpc3QKKyAqCisgKiAj
V2ViS2l0V2ViVXNlck1lZGlhTGlzdCBjb250YWlucyBhIGxpc3Qgb2YKKyAqIGF1ZGlvIG9yIHZp
ZGVvIHNvdXJjZXMgZnJvbSBhIFdlYlVzZXJNZWRpYVJlcXVlc3QKKyAqCisgKiBTaW5jZTogMS4x
MC4wCisgKi8KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworc3RydWN0IF9XZWJLaXRXZWJV
c2VyTWVkaWFMaXN0UHJpdmF0ZSB7CisgICAgV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0
b3Igc291cmNlczsKKyAgICBWZWN0b3I8Ym9vbD4gc291cmNlU2VsZWN0aW9uczsKK307CisKK0df
REVGSU5FX1RZUEUoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCwgd2Via2l0X3dlYl91c2VyX21lZGlh
X2xpc3QsIEdfVFlQRV9PQkpFQ1QpCisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlVzZXJNZWRpYUxp
c3REaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0
KiB1c2VyTWVkaWFMaXN0ID0gV0VCS0lUX1dFQl9VU0VSX01FRElBX0xJU1Qob2JqZWN0KTsKKyAg
ICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZSogcHJpdiA9IHVzZXJNZWRpYUxpc3QtPnBy
aXY7CisKKyAgICBwcml2LT5zb3VyY2VTZWxlY3Rpb25zLmNsZWFyKCk7CisKKyAgICBHX09CSkVD
VF9DTEFTUyh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9wYXJlbnRfY2xhc3MpLT5kaXNwb3Nl
KG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlVzZXJNZWRpYUxpc3RGaW5hbGl6
ZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgV0VCS0lUX1dFQl9VU0VSX01FRElBX0xJU1Qob2Jq
ZWN0KS0+cHJpdi0+fldlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlKCk7CisgICAgR19PQkpF
Q1RfQ0xBU1Mod2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfcGFyZW50X2NsYXNzKS0+ZmluYWxp
emUob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3Rf
Y2xhc3NfaW5pdChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0Q2xhc3MqIGxpc3RDbGFzcykKK3sKKyAg
ICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyhsaXN0Q2xhc3Mp
OworICAgIGdvYmplY3RfY2xhc3MtPmRpc3Bvc2UgPSB3ZWJraXRXZWJVc2VyTWVkaWFMaXN0RGlz
cG9zZTsKKyAgICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdFdlYlVzZXJNZWRpYUxp
c3RGaW5hbGl6ZTsKKworICAgIHdlYmtpdEluaXQoKTsKKworICAgIGdfdHlwZV9jbGFzc19hZGRf
cHJpdmF0ZShsaXN0Q2xhc3MsIHNpemVvZihXZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZSkp
OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9pbml0KFdlYktp
dFdlYlVzZXJNZWRpYUxpc3QqIGxpc3QpCit7CisgICAgV2ViS2l0V2ViVXNlck1lZGlhTGlzdFBy
aXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUobGlzdCwgV0VCS0lUX1RZ
UEVfV0VCX1VTRVJfTUVESUFfTElTVCwgV2ViS2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGUpOwor
ICAgIGxpc3QtPnByaXYgPSBwcml2OworCisgICAgLy8gcGxhY2VtZW50IG5ldyBzeW50YXgKKyAg
ICBuZXcgKHByaXYpIFdlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlKCk7Cit9CisKKy8qKgor
ICogd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2xlbmd0aDoKKyAqIEBsaXN0OiB0aGUg
V2ViS2l0V2ViVXNlck1lZGlhTGlzdCBpdHNlbGYKKyAqCisgKiBSZXR1cm5zIHRoZSBzaXplIG9m
IHRoZSBlbGVtZW50cyBsaXN0LgorICoKKyAqIFJldHVybiB2YWx1ZTogbnVtYmVyIG9mIGVsZW1l
bnRzLgorICoKKyAqIFNpbmNlOiAxLjEwLjAKKyAqLworZ3VpbnQgd2Via2l0X3dlYl91c2VyX21l
ZGlhX2xpc3RfZ2V0X2xlbmd0aChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBsaXN0KQoreworICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9MSVNUKGxpc3Qp
LCAwKTsKKworICAgIHJldHVybiBjb3JlKGxpc3QpLnNpemUoKTsKK30KKworCisvKioKKyAqIHdl
YmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9pdGVtX25hbWU6CisgKiBAbGlzdDogdGhlICNX
ZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGl0c2VsZgorICogQGluZGV4OiB0aGUgd2FudGVkIGVsZW1l
bnQgaW5kZXguCisgKgorICogUmV0dXJucyB0aGUgZGV2aWNlIG5hbWUgb2YgdGhlIGVsZW1lbnQu
CisgKgorICogUmV0dXJuIHZhbHVlOiB0aGUgZGV2aWNlIGlkIG9mIHRoZSBAaW5kZXggZ2l2ZW4g
ZWxlbWVudC4KKyAqCisgKiBTaW5jZTogMS4xMC4wCisgKi8KK2NvbnN0IGdjaGFyKiB3ZWJraXRf
d2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfaXRlbV9uYW1lKFdlYktpdFdlYlVzZXJNZWRpYUxpc3Qq
IGxpc3QsIGd1aW50IGluZGV4KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9J
U19XRUJfVVNFUl9NRURJQV9MSVNUKGxpc3QpLCAwKTsKKworICAgIFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtU291cmNlVmVjdG9yJiBzb3VyY2VzID0gY29yZShsaXN0KTsKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChpbmRleCA8IHNvdXJjZXMuc2l6ZSgpLCAwKTsKKworICAgIHJldHVybiBnX3N0cmR1
cChzb3VyY2VzW2luZGV4XS0+bmFtZSgpLnV0ZjgoKS5kYXRhKCkpOworfQorCisvKioKKyAqIHdl
YmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2lzX2l0ZW1fc2VsZWN0ZWQ6CisgKiBAbGlzdDogdGhl
ICNXZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGl0c2VsZgorICogQGluZGV4OiB0aGUgd2FudGVkIGVs
ZW1lbnQgaW5kZXguCisgKgorICogSW5kaWNhdGUgaWYgYSBkZXZpY2UgaXMgbWFya2VkIGFzIHNl
bGVjdGVkLgorICoKKyAqIFJldHVybiB2YWx1ZTogVHJ1ZSBpZiB0aGUgZGV2aWNlIHJlcHJlc2Vu
dGVkIGJ5IEBpbmRleCBpcyBtYXJrZWQgYXMgc2VsZWN0ZWQuCisgKgorICogU2luY2U6IDEuMTAu
MAorICovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9pc19pdGVtX3NlbGVj
dGVkKFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGxpc3QsIGd1aW50IGluZGV4KQoreworICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9MSVNUKGxpc3QpLCBG
QUxTRSk7CisKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChpbmRleCA8IGNvcmUobGlzdCkuc2l6
ZSgpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gbGlzdC0+cHJpdi0+c291cmNlU2VsZWN0aW9uc1tp
bmRleF07Cit9CisKKy8qKgorICogd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3Rfc2VsZWN0X2l0
ZW06CisgKiBAbGlzdDogdGhlICNXZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGl0c2VsZgorICogQGlu
ZGV4OiB0aGUgd2FudGVkIGVsZW1lbnQgaW5kZXguCisgKgorICogTWFyayBhIGRldmljZSBhcyBz
ZWxlY3RlZWQuCisgKgorICogU2luY2U6IDEuMTAuMAorICovCit2b2lkIHdlYmtpdF93ZWJfdXNl
cl9tZWRpYV9saXN0X3NlbGVjdF9pdGVtKFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGxpc3QsIGd1
aW50IGluZGV4KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01F
RElBX0xJU1QobGlzdCkpOworCisgICAgZ19yZXR1cm5faWZfZmFpbChpbmRleCA8IGNvcmUobGlz
dCkuc2l6ZSgpKTsKKworICAgIGxpc3QtPnByaXYtPnNvdXJjZVNlbGVjdGlvbnNbaW5kZXhdID0g
VFJVRTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNvcmU6Ok1lZGlhU3RyZWFtU291
cmNlVmVjdG9yJiBjb3JlKFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGxpc3QpCit7CisgICAgcmV0
dXJuIGxpc3QtPnByaXYtPnNvdXJjZXM7Cit9CisKK1dlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGtp
dE5ldyhjb25zdCBXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgc291cmNlcykKK3sK
KyAgICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiB3ZWJMaXN0ID0gV0VCS0lUX1dFQl9VU0VSX01F
RElBX0xJU1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1QsIE5V
TEwpKTsKKyAgICB3ZWJMaXN0LT5wcml2LT5zb3VyY2VzID0gc291cmNlczsKKyAgICB3ZWJMaXN0
LT5wcml2LT5zb3VyY2VTZWxlY3Rpb25zLmZpbGwoRkFMU0UsIHNvdXJjZXMuc2l6ZSgpKTsKKwor
ICAgIHJldHVybiB3ZWJMaXN0OworfQorCit9CisKKyNlbmRpZiAvKiBFTkFCTEUoTUVESUFfU1RS
RUFNKSAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVz
ZXJtZWRpYWxpc3QuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVk
aWFsaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmI1Y2MxMmYxNjdlNTY5ODMwNzdjMDRmMTRjYTU5YjY1ZmFk
YThmNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ1c2VybWVkaWFsaXN0LmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMp
IDIwMTIgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEw
LTEzMDEgIFVTQQorICovCisKKworI2lmbmRlZiB3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0X2gKKyNk
ZWZpbmUgd2Via2l0d2VidXNlcm1lZGlhbGlzdF9oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5o
PgorI2luY2x1ZGUgPGdsaWIuaD4KKworI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZpbmVzLmg+
CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9M
SVNUICAgICAgICAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF90eXBlKCkp
CisjZGVmaW5lIFdFQktJVF9XRUJfVVNFUl9NRURJQV9MSVNUKG9iaikgICAgICAgICAgICAgICAo
R19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9VU0VSX01F
RElBX0xJU1QsIFdlYktpdFdlYlVzZXJNZWRpYUxpc3QpKQorI2RlZmluZSBXRUJLSVRfV0VCX1VT
RVJfTUVESUFfTElTVF9DTEFTUyhrbGFzcykgICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNU
KChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNULCBXZWJLaXRXZWJVc2Vy
TWVkaWFMaXN0Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfTElTVChv
YmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRf
VFlQRV9XRUJfVVNFUl9NRURJQV9MSVNUKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9VU0VSX01F
RElBX0xJU1RfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3Mp
LCAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfTElTVCkpCisjZGVmaW5lIFdFQktJVF9XRUJf
VVNFUl9NRURJQV9MSVNUX0dFVF9DTEFTUyhvYmopICAgICAoR19UWVBFX0lOU1RBTkNFX0dFVF9D
TEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1QsIFdlYktpdFdlYlVz
ZXJNZWRpYUxpc3RDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFM
aXN0IFdlYktpdFdlYlVzZXJNZWRpYUxpc3Q7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVXNl
ck1lZGlhTGlzdENsYXNzIFdlYktpdFdlYlVzZXJNZWRpYUxpc3RDbGFzczsKK3R5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZSBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0
UHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0IHsKKyAgICBHT2JqZWN0
IHBhcmVudF9pbnN0YW5jZTsKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZSAqcHJp
djsKK307CisKK3N0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhTGlzdENsYXNzIHsKKyAgICBHT2Jq
ZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dl
Yl91c2VyX21lZGlhX2xpc3RfZ2V0X3R5cGUgKHZvaWQpIEdfR05VQ19DT05TVDsKKworV0VCS0lU
X0FQSSBndWludAord2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2xlbmd0aCAgICAgICAg
KFdlYktpdFdlYlVzZXJNZWRpYUxpc3QgKmxpc3QpOworCitXRUJLSVRfQVBJIGNvbnN0IGdjaGFy
ICoKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9pdGVtX25hbWUgICAgIChXZWJLaXRX
ZWJVc2VyTWVkaWFMaXN0ICpsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGd1aW50IGluZGV4KTsKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF93
ZWJfdXNlcl9tZWRpYV9saXN0X2lzX2l0ZW1fc2VsZWN0ZWQgKFdlYktpdFdlYlVzZXJNZWRpYUxp
c3QgKmxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z3VpbnQgaW5kZXgpOworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlz
dF9zZWxlY3RfaXRlbSAgICAgICAoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCAqbGlzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCBpbmRleCk7CisK
K0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiB3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0X2ggKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0
cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxp
c3Rwcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTE5OGNhZWNmYjZjZWY3YzgwYWI5NmFmNTQzNmY1M2E1
M2M5N2JkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDEyIENvbGxhYm9yYSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24s
IE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisKKyNpZm5kZWYgd2Via2l0d2VidXNlcm1lZGlh
bGlzdHByaXZhdGVfaAorI2RlZmluZSB3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZV9oCisK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2Uu
aCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgY29yZShXZWJLaXRXZWJV
c2VyTWVkaWFMaXN0Kik7CitXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBraXROZXcoY29uc3QgV2Vi
Q29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImKTsKKworfQorCisjZW5kaWYgLyogRU5BQkxF
KE1FRElBX1NUUkVBTSkgKi8KKworI2VuZGlmIC8qIHdlYmtpdHdlYnVzZXJtZWRpYWxpc3Rwcml2
YXRlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1
c2VybWVkaWFyZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1
c2VybWVkaWFyZXF1ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NGQ0ZGEwNTg1YmE0N2NiZTk1MWIzOTFl
MTVjN2I5ZGI2NjZmNzRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuY3BwCkBAIC0wLDAgKzEsMTUwIEBACisvKgor
ICogIENvcHlyaWdodCAoQykgMjAxMiBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl
CisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwg
Qm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAid2Via2l0d2VidXNlcm1l
ZGlhcmVxdWVzdC5oIgorCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9y
aWdpbi5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYVJlcXVlc3QuaCIKKyNpbmNsdWRlICJ3ZWJraXRn
bG9iYWxzcHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdHNlY3VyaXR5b3JpZ2lucHJpdmF0ZS5o
IgorI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlLmgiCisjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCisvKioKKyAqIFNFQ1RJT046d2Via2l0d2VidXNlcm1l
ZGlhcmVxdWVzdAorICogQHNob3J0X2Rlc2NyaXB0aW9uOiBUaGUgV2ViS2l0J3MgVXNlck1lZGlh
IFJlcXVlc3QuCisgKiBAVGl0bGU6IFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QKKyAqCisgKiBU
aGlzIG9iamVjdCBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gb2YgYSBtZWRpYSByZXF1ZXN0Lgor
ICogSXQgY2FuIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhlIHJlcXVlc3QgaXMgYXNraW5nIGZvciBh
dWRpbyBhbmQvb3IgdmlkZW8uCisgKgorICogU2luY2U6IDEuMTAuMAorICovCisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CisKK3N0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdFByaXZh
dGUgeworICAgIFJlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0PiB1c2VyTWVkaWFSZXF1
ZXN0OworfTsKKworR19ERUZJTkVfVFlQRShXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0LCB3ZWJr
aXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdCwgR19UWVBFX09CSkVDVCkKKworc3RhdGljIHZvaWQg
d2Via2l0V2ViVXNlck1lZGlhUmVxdWVzdEZpbmFsaXplKEdPYmplY3QgKm9iamVjdCkKK3sKKyAg
ICBXRUJLSVRfV0VCX1VTRVJfTUVESUFfUkVRVUVTVChvYmplY3QpLT5wcml2LT5+V2ViS2l0V2Vi
VXNlck1lZGlhUmVxdWVzdFByaXZhdGUoKTsKKworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93
ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Cit9
CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2NsYXNzX2luaXQo
V2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdENsYXNzKiByZXF1ZXN0Q2xhc3MpCit7CisgICAgR09i
amVjdENsYXNzKiBnb2JqZWN0X2NsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsK
KyAgICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdFdlYlVzZXJNZWRpYVJlcXVlc3RG
aW5hbGl6ZTsKKworICAgIHdlYmtpdEluaXQoKTsKKworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJp
dmF0ZShyZXF1ZXN0Q2xhc3MsIHNpemVvZihXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0
ZSkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9pbml0
KFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgV2ViS2l0V2ViVXNl
ck1lZGlhUmVxdWVzdFByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUo
cmVxdWVzdCwgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCwgV2ViS2l0V2ViVXNl
ck1lZGlhUmVxdWVzdFByaXZhdGUpOworICAgIHJlcXVlc3QtPnByaXYgPSBwcml2OworCisgICAg
bmV3IChwcml2KSBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSgpOworfQorCisvKioK
KyAqIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRzX2F1ZGlvOgorICogQHJlcXVl
c3Q6IHRoZSAjV2ViS2l0VXNlck1lZGlhUmVxdWVzdCBpdHNlbGYuCisgKgorICogSW5kaWNhdGVz
IHRoZSBjb250ZW50IG9mIGFuIFVzZXJNZWRpYVJlcXVlc3QuCisgKgorICogUmV0dXJuIHZhbHVl
OiBUcnVlIGlmIHRoZSByZXF1ZXN0IGNvbnRhaW5zIGFuIGF1ZGlvIHJlcXVlc3QuCisgKgorICog
U2luY2U6IDEuMTAuMAorICovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVz
dF93YW50c19hdWRpbyhXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0KQoreworICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9SRVFVRVNUKHJl
cXVlc3QpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gY29yZShyZXF1ZXN0KS0+YXVkaW8oKTsKK30K
KworLyoqCisgKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF93YW50c192aWRlbzoKKyAq
IEByZXF1ZXN0OiB0aGUgI1dlYktpdFVzZXJNZWRpYVJlcXVlc3QgaXRzZWxmLgorICoKKyAqIElu
ZGljYXRlcyB0aGUgY29udGVudCBvZiBhbiBVc2VyTWVkaWFSZXF1ZXN0LgorICoKKyAqIFJldHVy
biB2YWx1ZTogVHJ1ZSBpZiB0aGUgcmVxdWVzdCBjb250YWlucyBhIHZpZGVvIHJlcXVlc3QuCisg
KgorICogU2luY2U6IDEuMTAuMAorICovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFf
cmVxdWVzdF93YW50c192aWRlbyhXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0KQor
eworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9SRVFV
RVNUKHJlcXVlc3QpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gY29yZShyZXF1ZXN0KS0+dmlkZW8o
KTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9nZXRfb3JpZ2lu
OgorICogQHJlcXVlc3Q6IHRoZSAjV2ViS2l0VXNlck1lZGlhUmVxdWVzdCBpdHNlbGYuCisgKgor
ICogUmV0dXJucyB0aGUgc2VjdXJpdHkgb3JpZ2luIG9mIHRoZSBNZWRpYSBSZXF1ZXN0LgorICoK
KyAqIFJldHVybiB2YWx1ZTogKHRyYW5zZmVyIG5vbmUpOiB0aGUgc2VjdXJpdHkgb3JpZ2luIG9m
IHRoZSBtZWRpYSByZXF1ZXN0LgorICoKKyAqIFNpbmNlOiAxLjEwLjAKKyAqLworV2ViS2l0U2Vj
dXJpdHlPcmlnaW4qIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2dldF9zZWN1cml0eV9v
cmlnaW4oV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfUkVRVUVTVChyZXF1ZXN0KSwg
MCk7CisKKyAgICByZXR1cm4ga2l0KGNvcmUocmVxdWVzdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJD
b3JlOjpVc2VyTWVkaWFSZXF1ZXN0KiBjb3JlKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIHJl
cXVlc3QpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01F
RElBX1JFUVVFU1QocmVxdWVzdCksIDApOworCisgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPnVz
ZXJNZWRpYVJlcXVlc3QuZ2V0KCk7Cit9CisKK1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIGtp
dE5ldyhXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKHJlcXVlc3QsIDApOworCisgICAgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVz
dCogd2ViUmVxdWVzdCA9IFdFQktJVF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUKGdfb2JqZWN0X25l
dyhXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFVRVNULCBOVUxMKSk7CisgICAgd2ViUmVx
dWVzdC0+cHJpdi0+dXNlck1lZGlhUmVxdWVzdCA9IHJlcXVlc3Q7CisKKyAgICByZXR1cm4gd2Vi
UmVxdWVzdDsKK30KKworfQorCisjZW5kaWYgLyogRU5BQkxFKE1FRElBX1NUUkVBTSkgKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1
ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVz
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdlMDc4ODlkZTZlNmNkYzBhMGM0ZWYwNDZhNWRkMzVlN2NjYjJjYTUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNl
cm1lZGlhcmVxdWVzdC5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAy
MDEyIENvbGxhYm9yYSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0x
MzAxICBVU0EKKyAqLworCisKKyNpZm5kZWYgd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdF9oCisj
ZGVmaW5lIHdlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3RfaAorCisjaW5jbHVkZSA8Z2xpYi1vYmpl
Y3QuaD4KKyNpbmNsdWRlIDxnbGliLmg+CisKKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZGVmaW5l
cy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVE
SUFfUkVRVUVTVCAgICAgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9nZXRf
dHlwZSgpKQorI2RlZmluZSBXRUJLSVRfV0VCX1VTRVJfTUVESUFfUkVRVUVTVChvYmopICAgICAg
ICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9XRUJf
VVNFUl9NRURJQV9SRVFVRVNULCBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KSkKKyNkZWZpbmUg
V0VCS0lUX1dFQl9VU0VSX01FRElBX1JFUVVFU1RfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hF
Q0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVT
VCwgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdENsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dF
Ql9VU0VSX01FRElBX1JFUVVFU1Qob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0Vf
VFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCkpCisjZGVmaW5l
IFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9SRVFVRVNUX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NI
RUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX1JFUVVF
U1QpKQorI2RlZmluZSBXRUJLSVRfV0VCX1VTRVJfTUVESUFfUkVRVUVTVF9HRVRfQ0xBU1Mob2Jq
KSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9XRUJfVVNF
Ul9NRURJQV9SRVFVRVNULCBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3MpKQorCit0eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCBXZWJLaXRXZWJVc2VyTWVkaWFS
ZXF1ZXN0OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RDbGFzcyBX
ZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2Vi
VXNlck1lZGlhUmVxdWVzdFByaXZhdGUgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdFByaXZhdGU7
CisKK3N0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCB7CisgICAgR09iamVjdCBwYXJl
bnRfaW5zdGFuY2U7CisgICAgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdFByaXZhdGUgKnByaXY7
Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RDbGFzcyB7CisgICAgR09i
amVjdENsYXNzIHBhcmVudF9jbGFzczsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF93
ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2dldF90eXBlICh2b2lkKSBHX0dOVUNfQ09OU1Q7CisKK1dF
QktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRzX2F1
ZGlvICAgICAgICAgICAgICAoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCAqcmVxdWVzdCk7CisK
K1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRz
X3ZpZGVvICAgICAgICAgICAgICAoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCAqcmVxdWVzdCk7
CisKK1dFQktJVF9BUEkgV2ViS2l0U2VjdXJpdHlPcmlnaW4qCit3ZWJraXRfd2ViX3VzZXJfbWVk
aWFfcmVxdWVzdF9nZXRfb3JpZ2luICAgICAgICAgICAgICAgKFdlYktpdFdlYlVzZXJNZWRpYVJl
cXVlc3QgKnJlcXVlc3QpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogd2Via2l0d2VidXNl
cm1lZGlhcmVxdWVzdF9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4MmZh
NzFhYzY4Y2YxYTExZTQxMmQ3NTYyZGFjYmI3MzY0ZjYyZmUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGUu
aApAQCAtMCwwICsxLDQwIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMiBDb2xsYWJvcmEg
THRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8K
KworCisjaWZuZGVmIHdlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlX2gKKyNkZWZpbmUg
d2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGVfaAorCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworc3RydWN0IFVzZXJNZWRpYVJlcXVlc3Q7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0KiBjb3JlKFdlYktpdFdlYlVzZXJN
ZWRpYVJlcXVlc3QqKTsKK1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIGtpdE5ldyhXZWJDb3Jl
OjpVc2VyTWVkaWFSZXF1ZXN0Kik7CisKK30KKworI2VuZGlmIC8qIEVOQUJMRShNRURJQV9TVFJF
QU0pICovCisKKyNlbmRpZiAvKiB3ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZV9oICov
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggMTIzMDc1
YWYzODVkMzdlNzU5MzQ4NDZkNWFhZDY5MTA1NzZmYzkxNy4uMjg1MzI0ODM4NWVhNzFiNzFjOTM4
ZmEzYzQ2ZjJjMjdlNjgyYTI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcApAQCAtODMsNiArODMsNyBAQAogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CisjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50R3RrLmgiCiAjaW5jbHVkZSAid2Via2l0L1dlYktp
dERPTURvY3VtZW50UHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdGRvd25sb2FkLmgiCiAjaW5j
bHVkZSAid2Via2l0ZG93bmxvYWRwcml2YXRlLmgiCkBAIC0xMDMsMTAgKzEwNCwxMiBAQAogI2lu
Y2x1ZGUgIndlYmtpdHdlYmhpc3RvcnlpdGVtcHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdHdl
Ymluc3BlY3Rvci5oIgogI2luY2x1ZGUgIndlYmtpdHdlYmluc3BlY3RvcnByaXZhdGUuaCIKKyNp
bmNsdWRlICJ3ZWJraXR3ZWJwbHVnaW5kYXRhYmFzZXByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJr
aXR3ZWJwb2xpY3lkZWNpc2lvbi5oIgogI2luY2x1ZGUgIndlYmtpdHdlYnJlc291cmNlLmgiCiAj
aW5jbHVkZSAid2Via2l0d2Vic2V0dGluZ3Nwcml2YXRlLmgiCi0jaW5jbHVkZSAid2Via2l0d2Vi
cGx1Z2luZGF0YWJhc2Vwcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0d2VidXNlcm1lZGlhbGlz
dHByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZS5o
IgogI2luY2x1ZGUgIndlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmgiCiAjaW5jbHVkZSAid2Via2l0
d2Vidmlld3ByaXZhdGUuaCIKICNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy5oPgpAQCAtMTE5LDYg
KzEyMiw3IEBACiAjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25DbGllbnRHdGsuaCIKICNlbmRp
ZgogCisKIC8qKgogICogU0VDVElPTjp3ZWJraXR3ZWJ2aWV3CiAgKiBAc2hvcnRfZGVzY3JpcHRp
b246IFRoZSBjZW50cmFsIGNsYXNzIG9mIHRoZSBXZWJLaXRHVEsrIEFQSQpAQCAtMjEwLDYgKzIx
NCw4IEBAIGVudW0gewogICAgIEVESVRJTkdfRU5ERUQsCiAgICAgVklFV1BPUlRfQVRUUklCVVRF
U19SRUNPTVBVVEVfUkVRVUVTVEVELAogICAgIFZJRVdQT1JUX0FUVFJJQlVURVNfQ0hBTkdFRCwK
KyAgICBVU0VSX01FRElBX1JFUVVFU1RFRCwKKyAgICBVU0VSX01FRElBX1JFUVVFU1RfQ0FOQ0VM
TEVELAogICAgIFJFU09VUkNFX1JFU1BPTlNFX1JFQ0VJVkVELAogICAgIFJFU09VUkNFX0xPQURf
RklOSVNIRUQsCiAgICAgUkVTT1VSQ0VfQ09OVEVOVF9MRU5HVEhfUkVDRUlWRUQsCkBAIC0yNzM5
LDYgKzI3NDUsNTIgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2Vi
S2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgICAgICBXRUJLSVRfVFlQRV9W
SUVXUE9SVF9BVFRSSUJVVEVTKTsKIAogICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OnVz
ZXItbWVkaWEtcmVxdWVzdGVkOgorICAgICAqIEB3ZWJfdmlldzogdGhlIG9iamVjdCB3aGljaCBy
ZWNlaXZlZCB0aGUgc2lnbmFsCisgICAgICogQHJlcXVlc3Q6IHRoZSAjV2ViS2l0V2ViVXNlck1l
ZGlhUnF1ZXN0IGF0dHJpYnV0ZSB3aGljaCBnZW5lcmF0ZWQgdGhlIHJlcXVlc3QuCisgICAgICog
QGF1ZGlvTGlzdDogYSAjV2ViS2l0V2ViVXNlck1lZGlhTGlzdCBjb250YWluaW5nIHRoZSBhdmFp
bGFibGUgYXVkaW8gbWVkaWEgb3B0aW9ucy4KKyAgICAgKiBAdmlkZW9MaXN0OiBhICNXZWJLaXRX
ZWJVc2VyTWVkaWFMaXN0IGNvbnRhaW5pbmcgdGhlIGF2YWlsYWJsZSB2aWRlbyBtZWRpYSBvcHRp
b25zLgorICAgICAqCisgICAgICogV2hlbiB0aGUgYXBwbGljYXRpb24gcmVxdWVzdCB1c2VyTWVk
aWEsIHRoaXMgc2lnbmFsIHdpbGwgYmUgZW1pdGVkIHdpdGggdGhlIHJlcXVlc3QKKyAgICAgKiBp
bmZvcm1hdGlvbiBhbmQgdGhlIGF2YWlsYWJsZSBvcHRpb25zIHRvIGJlIHNlbGVjdGVkLgorICAg
ICAqCisgICAgICogVGhlbiB0aGUgdXNlciBpcyBleHBlY3RlZCB0byBjYWxsIGVpdGhlciAjd2Vi
a2l0X3dlYl92aWV3X2FjY2VwdF91c2VyX21lZGlhX3JlcXVlc3QoKSBvcgorICAgICAqIHdlYmtp
dF93ZWJfdmlld19yZWplY3RfdXNlcl9tZWRpYV9yZXF1ZXN0KCkgdG8gYWNjZXB0IG9yIHJlamVj
dCB0aGUgcmVxdWVzdC4KKyAgICAgKgorICAgICAqIFNpbmNlOiAxLjEwLjAKKyAgICAgKi8KKyAg
ICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tVU0VSX01FRElBX1JFUVVFU1RFRF0gPSBnX3NpZ25h
bF9uZXcoInVzZXItbWVkaWEtcmVxdWVzdGVkIiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NM
QVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAg
ICAgICAgIDAsCisgICAgICAgICAgICAwLCAwLAorICAgICAgICAgICAgd2Via2l0X21hcnNoYWxf
Vk9JRF9fT0JKRUNUX09CSkVDVF9PQkpFQ1QsCisgICAgICAgICAgICBHX1RZUEVfTk9ORSwgMywK
KyAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX1JFUVVFU1QsCisgICAgICAg
ICAgICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNULAorICAgICAgICAgICAgV0VCS0lU
X1RZUEVfV0VCX1VTRVJfTUVESUFfTElTVCk7CisKKworICAgIC8qKgorICAgICAqIFdlYktpdFdl
YlZpZXc6OnVzZXItbWVkaWEtcmVxdWVzdC1jYW5jZWxsZWQ6CisgICAgICogQHdlYl92aWV3OiB0
aGUgb2JqZWN0IHdoaWNoIHJlY2VpdmVkIHRoZSBzaWduYWwKKyAgICAgKiBAcmVxdWVzdDogdGhl
ICNXZWJLaXRXZWJVc2VyTWVkaWFScXVlc3QgaXRzZWxmCisgICAgICoKKyAgICAgKiBUaGlzIHNp
Z25hbCB3aWxsIGJlIGVtaXRlZCB3aGVuIHRoZSB1c2VyIGNhbmNlbGVkIGl0cyB1c2VyTWVkaWEg
cmVxdWVzdC4KKyAgICAgKgorICAgICAqIFNpbmNlOiAxLjEwLjAKKyAgICAgKi8KKyAgICB3ZWJr
aXRfd2ViX3ZpZXdfc2lnbmFsc1tVU0VSX01FRElBX1JFUVVFU1RfQ0FOQ0VMTEVEXSA9IGdfc2ln
bmFsX25ldygidXNlci1tZWRpYS1yZXF1ZXN0LWNhbmNlbGxlZCIsCisgICAgICAgICAgICBHX1RZ
UEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xB
U1QsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgMCwgMCwKKyAgICAgICAgICAgIHdlYmtp
dF9tYXJzaGFsX1ZPSURfX09CSkVDVCwKKyAgICAgICAgICAgIEdfVFlQRV9OT05FLCAxLAorICAg
ICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCk7CisKKworICAgIC8q
KgogICAgICAqIFdlYktpdFdlYlZpZXc6OmVudGVyaW5nLWZ1bGxzY3JlZW46CiAgICAgICogQHdl
Yl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVk
LgogICAgICAqIEBlbGVtZW50OiB0aGUgI1dlYktpdERPTUhUTUxFbGVtZW50IHdoaWNoIGhhcyBy
ZXF1ZXN0ZWQgZnVsbCBzY3JlZW4gZGlzcGxheS4KQEAgLTUzMzgsNiArNTM5MCw2NCBAQCB2b2lk
IHdlYlZpZXdFeGl0RnVsbHNjcmVlbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogI2VuZGlmCiB9
CiAKKy8qKgorICogd2Via2l0X3dlYl92aWV3X2FjY2VwdF91c2VyX21lZGlhX3JlcXVlc3Q6Cisg
KiBAd2ViVmlldzogYSAjV2ViS2l0V2ViVmlldworICogQHdlYlJlcXVlc3Q6IGEgI1dlYktpdFdl
YlVzZXJNZWRpYVJlcXVlc3QKKyAqIEBhdWRpb01lZGlhTGlzdDogYSAjV2ViS2l0V2ViVXNlck1l
ZGlhTGlzdCBjb250YWluaW5nIGF1ZGlvIGRldmljZXMKKyAqIEB2aWRlb01lZGlhTGlzdDogYSAj
V2ViS2l0V2ViVXNlck1lZGlhTGlzdCBjb250YWluaW5nIHZpZGVvIGRldmljZXMKKyAqCisgKiBU
aGlzIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBhZnRlciB0aGUg
dXNlciBzZWxlY3RzCisgKiBhIG1lZGlhIGRldmljZSBhbmQgYWNjZXB0cyBhbiBtZWRpYSByZXF1
ZXN0CisgKgorICogU2luY2U6IDEuMTAuMAorICoqLwordm9pZCB3ZWJraXRfd2ViX3ZpZXdfYWNj
ZXB0X3VzZXJfbWVkaWFfcmVxdWVzdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJV
c2VyTWVkaWFSZXF1ZXN0KiB3ZWJSZXF1ZXN0LCBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBhdWRp
b01lZGlhTGlzdCwgV2ViS2l0V2ViVXNlck1lZGlhTGlzdCogdmlkZW9NZWRpYUxpc3QpCit7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOworICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX1JFUVVFU1Qod2ViUmVxdWVz
dCkpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX0xJU1Qo
YXVkaW9NZWRpYUxpc3QpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVVNF
Ul9NRURJQV9MSVNUKHZpZGVvTWVkaWFMaXN0KSk7CisKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0
ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisKKyAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYg
YXVkaW9Tb3VyY2VzID0gY29yZShhdWRpb01lZGlhTGlzdCk7CisgICAgTWVkaWFTdHJlYW1Tb3Vy
Y2VWZWN0b3ImIHZpZGVvU291cmNlcyA9IGNvcmUodmlkZW9NZWRpYUxpc3QpOworCisgICAgZm9y
IChzaXplX3QgaSA9IGF1ZGlvU291cmNlcy5zaXplKCkgLSAxOyBpICE9IChzaXplX3QpIC0xOyAt
LWkpCisgICAgICAgIGlmICghd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfaXNfaXRlbV9zZWxl
Y3RlZChhdWRpb01lZGlhTGlzdCwgaSkpCisgICAgICAgICAgICBhdWRpb1NvdXJjZXMucmVtb3Zl
KGkpOworCisgICAgZm9yIChzaXplX3QgaSA9IHZpZGVvU291cmNlcy5zaXplKCkgLSAxOyBpICE9
IChzaXplX3QpIC0xOyAtLWkpCisgICAgICAgIGlmICghd2Via2l0X3dlYl91c2VyX21lZGlhX2xp
c3RfaXNfaXRlbV9zZWxlY3RlZCh2aWRlb01lZGlhTGlzdCwgaSkpCisgICAgICAgICAgICB2aWRl
b1NvdXJjZXMucmVtb3ZlKGkpOworCisgICAgLy8gVE9ETzogdW5jb21tZW50IHRoZSBmb2xsb3dp
bmcgbGluZXMgd2hlbiB0aGUgVXNlck1lZGlhQ2xpZW50R3RrIGltcGxlbWVudGF0aW9uIGlzIGNv
bXBsZXRlZAorICAgIC8vIFVzZXJNZWRpYUNsaWVudEd0ayogY2xpZW50ID0gc3RhdGljX2Nhc3Q8
VXNlck1lZGlhQ2xpZW50R3RrKj4ocHJpdi0+dXNlck1lZGlhQ2xpZW50LmdldCgpKTsKKyAgICAv
LyBjbGllbnQtPnVzZXJNZWRpYVJlcXVlc3RTdWNjZWVkZWQoY29yZSh3ZWJSZXF1ZXN0KSwgYXVk
aW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19y
ZWplY3RfdXNlcl9tZWRpYV9yZXF1ZXN0OgorICogQHdlYlZpZXc6IGEgI1dlYktpdFdlYlZpZXcK
KyAqIEB3ZWJSZXF1ZXN0OiBhICNXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0CisgKgorICogVGhp
cyBtZXRob2Qgc2hvdWxkIGJlIGNhbGxlZCBieSB0aGUgYXBwbGljYXRpb24gd2hlbiB0aGUgdXNl
ciByZWplY3RlZCBhIHVzZXJNZWRpYSByZXF1ZXN0LgorICoKKyAqIFNpbmNlOiAxLjEwLjAKKyAq
Ki8KK3ZvaWQgd2Via2l0X3dlYl92aWV3X3JlamVjdF91c2VyX21lZGlhX3JlcXVlc3QoV2ViS2l0
V2ViVmlldyAqd2ViVmlldywgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCAqd2ViUmVxdWVzdCkK
K3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCh3ZWJS
ZXF1ZXN0KSk7CisKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnBy
aXY7CisKKyAgICAvLyBUT0RPOiB1bmNvbW1lbnQgdGh3IGZvbGxvd2luZyBsaW5lcyB3aGVuIHRo
ZSBVc2VyTWVkaWFDbGllbnRHdGsgaW1wbGVtZW50YXRpb24gaXMgY29tcGxldGVkCisgICAgLy8g
VXNlck1lZGlhQ2xpZW50R3RrKiBjbGllbnQgPSBzdGF0aWNfY2FzdDxVc2VyTWVkaWFDbGllbnRH
dGsqPihwcml2LT51c2VyTWVkaWFDbGllbnQuZ2V0KCkpOworICAgIC8vIGNsaWVudC0+dXNlck1l
ZGlhUmVxdWVzdEZhaWxlZChjb3JlKHdlYlJlcXVlc3QpKTsKK30KKwogI2lmIEVOQUJMRShJQ09O
REFUQUJBU0UpCiB2b2lkIHdlYmtpdFdlYlZpZXdJY29uTG9hZGVkKFdlYktpdEZhdmljb25EYXRh
YmFzZSogZGF0YWJhc2UsIGNvbnN0IGNoYXIqIGZyYW1lVVJJLCBXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZp
ZXcuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKaW5kZXggOWM4
NDI2M2I0YmMwOTQ3YTZmMGRmOTVkYjAxN2M1MjM0YTFlMmQ5ZS4uY2ExMmVhNThiMDY2OTA3Y2Zm
YjBiOGVlNDBiNDRkMWYzMWQ0M2UzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5oCkBAIC0zMyw2ICszMyw4IEBACiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmZy
YW1lLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmg+CiAjaW5jbHVk
ZSA8d2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdl
YnVzZXJtZWRpYWxpc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVx
dWVzdC5oPgogCiBHX0JFR0lOX0RFQ0xTCiAKQEAgLTQ0OSw2ICs0NTEsMTYgQEAgd2Via2l0X3dl
Yl92aWV3X2dldF92aWV3cG9ydF9hdHRyaWJ1dGVzICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAg
ICAgICp3ZWJfdmlldykKIFdFQktJVF9BUEkgY2Fpcm9fc3VyZmFjZV90Kgogd2Via2l0X3dlYl92
aWV3X2dldF9zbmFwc2hvdCAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICp3ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X2FjY2VwdF91
c2VyX21lZGlhX3JlcXVlc3QgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJWaWV3LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdl
YlVzZXJNZWRpYVJlcXVlc3QgKndlYlJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViVXNlck1lZGlhTGlzdCAqYXVkaW9NZWRp
YUxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViS2l0V2ViVXNlck1lZGlhTGlzdCAqdmlkZW9NZWRpYUxpc3QpOworCitXRUJLSVRfQVBJIHZv
aWQKK3dlYmtpdF93ZWJfdmlld19yZWplY3RfdXNlcl9tZWRpYV9yZXF1ZXN0ICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAqd2ViVmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0ICp3ZWJSZXF1ZXN0
KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXRtYXJzaGFsLmxpc3QgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXRtYXJzaGFsLmxp
c3QKaW5kZXggYjc0Mjg5MDVjODk4M2NmYzc1ZWM1NDQ3NDEzM2NhMjhmNmQ3OTViNC4uNGQwYjlk
OWUzMmQzMmNjZDVjODNiZDBjNWNlNmYzZjJkMDhiYzU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0bWFyc2hhbC5saXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dG1hcnNoYWwubGlzdApAQCAtMTgsNiArMTgsNyBAQCBFTlVNOk9CSkVDVCxPQkpFQ1QKIE9CSkVD
VDpPQkpFQ1QKIE9CSkVDVDpTVFJJTkcsU1RSSU5HLFBPSU5URVIKIE9CSkVDVDpWT0lECitWT0lE
Ok9CSkVDVAogVk9JRDpPQkpFQ1QsT0JKRUNUCiBWT0lEOk9CSkVDVCxPQkpFQ1QsSU5UCiBWT0lE
Ok9CSkVDVCxPQkpFQ1QsT0JKRUNUCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166270</attachid>
            <date>2012-09-28 10:12:37 -0700</date>
            <delta_ts>2012-09-28 10:59:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94373-20120928141153.patch</filename>
            <type>text/plain</type>
            <size>40044</size>
            <attacher name="Danilo de Paula">danilo.eu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5Njk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggOWY5ZmY0Y2M2
OWRiZmUwZTQ5ZWZlNDc0ODQ5ZmFlNzUxYWNlNzA0MC4uZjY0MDBmZDQwYjdlOTA2N2I2MWIyNjky
ZjhjZTMyZTc5OWJmYWY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEy
LTA5LTI4ICBEYW5pbG8gQ2VzYXIgTGVtZXMgZGUgUGF1bGEgIDxkYW5pbG8uY2VzYXJAY29sbGFi
b3JhLmNvLnVrPgorCisgICAgICAgIFtndGtdIGFkZGluZyBtZXRob2RzIGFuZCBzaWduYWxzIGZv
ciB1c2VybWVkaWEgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHdlYmtpdCBhbmQgYnJvd3NlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQzNzMKKworICAg
ICAgICBXaGVuIHRoZSB1c2VyIG1ha2UgYSBnZXRVc2VyTWVkaWEgY2FsbCwgd2VidmlldyB3aWxs
IGVtaXQgYSBzaWdpYWwgKHVzZXItbWVkaWEtcmVxdWVzdGVkKQorICAgICAgICB0byB0aGUgYXBw
bGljYXRpb24gY29udGFpbmluZyB0aGVuIHJlcXVlc3QgaXRzZWxmICh3ZWJraXR3ZWJ1c2VybWVk
aWFyZXF1ZXN0KSBhbmQgdHdvCisgICAgICAgIGxpc3Qgd2l0aCB0aGUgYXZhaWxhYmxlIGF1ZGlv
IGFuZCB2aWRlbyBkZXZpY2VzICh3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0KS4KKworICAgICAgICBU
aGUgYXBwbGljYXRpb24gbXVzdCBzaG93IHRoZSBsaXN0IHRvIHRoZSB1c2VyIGFuZCBhc2sgcGVy
bWlzc2lvbiB0byB1c2Ugb25lIG9mCisgICAgICAgIHRob3NlIGRldmljZXMgKG9yIHJlamVjdCB0
aGUgcmVxdWVzdCkuCisKKyAgICAgICAgSW4gY2FzZSB0aGUgdXNlciBhY2NlcHRzIHRoZSByZXF1
ZXN0LCB0aGUgYXBwbGljYXRpb24gbXVzdCBtYXJrIHRoZSBkZXZpY2UgYXMKKyAgICAgICAgc2Vs
ZWN0ZWQgKHVzaW5nIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X3NlbGVjdF9pdGVtKSBhbmQg
dGhlbiBjYWxsCisgICAgICAgIHdlYmtpdF93ZWJfdmlld19hY2NlcHRfdXNlcl9tZWRpYV9yZXF1
ZXN0IHdoaWNoIHdpbGwgaGFuZGxlIHRoZSByZXF1ZXN0IHByb3Blcmx5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Vc2VyTWVkaWFDbGllbnRHdGsuY3BwOgorICAgICAgICAo
V2ViS2l0OjpVc2VyTWVkaWFDbGllbnRHdGs6OlVzZXJNZWRpYUNsaWVudEd0ayk6CisgICAgICAg
IChXZWJLaXQ6OlVzZXJNZWRpYUNsaWVudEd0azo6cGFnZURlc3Ryb3llZCk6CisgICAgICAgIChX
ZWJLaXQ6OlVzZXJNZWRpYUNsaWVudEd0azo6cmVxdWVzdFVzZXJNZWRpYSk6CisgICAgICAgIChX
ZWJLaXQ6OlVzZXJNZWRpYUNsaWVudEd0azo6Y2FuY2VsVXNlck1lZGlhUmVxdWVzdCk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50R3RrLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFVzZXJNZWRpYUNsaWVudEd0ayk6CisgICAgICAgICogZG9jcy93ZWJr
aXRndGstZG9jcy5zZ21sOgorICAgICAgICAqIGRvY3Mvd2Via2l0Z3RrLXNlY3Rpb25zLnR4dDoK
KyAgICAgICAgKiB3ZWJraXQvd2Via2l0Lmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnVz
ZXJtZWRpYWxpc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0
UHJpdmF0ZSk6CisgICAgICAgICh3ZWJraXRXZWJVc2VyTWVkaWFMaXN0RGlzcG9zZSk6CisgICAg
ICAgICh3ZWJraXRXZWJVc2VyTWVkaWFMaXN0RmluYWxpemUpOgorICAgICAgICAod2Via2l0X3dl
Yl91c2VyX21lZGlhX2xpc3RfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJf
bWVkaWFfbGlzdF9pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dl
dF9sZW5ndGgpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2l0ZW1f
bmFtZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9pc19pdGVtX3NlbGVj
dGVkKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X3NlbGVjdF9pdGVtKToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAoV2Vi
S2l0OjpraXROZXcpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0Lmg6
IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYlVzZXJNZWRpYUxpc3QpOgorICAgICAgICAoX1dl
YktpdFdlYlVzZXJNZWRpYUxpc3RDbGFzcyk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnVz
ZXJtZWRpYWxpc3Rwcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KiB3ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5jcHA6IEFkZGVkLgorICAgICAgICAo
X1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRlKToKKyAgICAgICAgKHdlYmtpdFdlYlVz
ZXJNZWRpYVJlcXVlc3RGaW5hbGl6ZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFf
cmVxdWVzdF9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1
ZXN0X2luaXQpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNf
YXVkaW8pOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNfdmlk
ZW8pOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZ2V0X3NlY3VyaXR5
X29yaWdpbik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAg
ICAgICAgKFdlYktpdDo6a2l0TmV3KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2VidXNlcm1l
ZGlhcmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0
KToKKyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3MpOgorICAgICAgICAq
IHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
d2Vidmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6CisgICAg
ICAgICh3ZWJraXRfd2ViX3ZpZXdfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfYWNj
ZXB0X3VzZXJfbWVkaWFfcmVxdWVzdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcmVqZWN0
X3VzZXJfbWVkaWFfcmVxdWVzdCk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuaDoK
KyAgICAgICAgKiB3ZWJraXRtYXJzaGFsLmxpc3Q6CisKIDIwMTItMDktMjYgIE1hcnRpbiBSb2Jp
bnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFVzZSBYRGFtYWdl
IHRvIHNpbXBsaWZ5IFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2Vm
aWxlLmFtCmluZGV4IDViZTllYjU0OGVlMDIzZDE0MGEzNWQxNjYyNDMzZDU4MWJiNzFiODMuLmZi
YTg0YmMwZjEwMmYzYjcyNDliZDJlMzMzZTA4YmRiMTlhOTE0YmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1h
a2VmaWxlLmFtCkBAIC0xNDIsNiArMTQyLDggQEAgd2Via2l0Z3RrX3N0YXRpY19oX2FwaSArPSBc
CiAJJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNp
c2lvbi5oIFwKIAkkKHNyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnJl
c291cmNlLmggXAogCSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
c2V0dGluZ3MuaCBcCisJJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ1c2VybWVkaWFsaXN0LmggXAorCSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5oIFwKIAkkKHNyY2RpcikvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmggXAogCSQoc3JjZGlyKS9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCiAKQEAgLTI3Niw2ICsyNzgsMTAgQEAg
d2Via2l0Z3RrX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJwbHVnaW5kYXRhYmFzZXByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnNldHRpbmdzLmNwcCBcCiAJU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnNldHRpbmdzcHJpdmF0ZS5oIFwKKwlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dXNlcm1lZGlhbGlzdC5jcHAgXAorCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1
c2VybWVkaWFsaXN0cHJpdmF0ZS5oIFwKKwlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2VidXNlcm1lZGlhcmVxdWVzdC5jcHAgXAorCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5jcHAgXAogCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3cHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2lu
ZG93ZmVhdHVyZXMuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L1VzZXJNZWRpYUNsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9Vc2VyTWVkaWFDbGllbnRHdGsuY3BwCmluZGV4IDM5MTY3NmFmYjVhZjlmMDc1ZWIy
NmIwNjlhYzkzNWNmMGViZjNjYzYuLmMyMmQ2Mjc5ZmVkZmI1ZjlhMWJhZGIzYzhhZjQ1MmMxODQy
MmI0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1VzZXJN
ZWRpYUNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
VXNlck1lZGlhQ2xpZW50R3RrLmNwcApAQCAtMTgsMTkgKzE4LDIyIEBACiAgKgogICovCiAKKwog
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudEd0ay5oIgogCiAj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgot
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiVXNlck1lZGlhUmVxdWVzdC5o
IgorCisjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50R3RrLmgiCisKKyNpbmNsdWRlICJ3ZWJraXR3
ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYXJl
cXVlc3Rwcml2YXRlLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotVXNlck1lZGlhQ2xpZW50R3RrOjpVc2VyTWVkaWFDbGllbnRHdGsoKQorVXNl
ck1lZGlhQ2xpZW50R3RrOjpVc2VyTWVkaWFDbGllbnRHdGsoV2ViS2l0V2ViVmlldyAqd2ViVmll
dykKKyAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQogewogfQogCkBAIC00MCwxOSArNDMsMTkgQEAg
VXNlck1lZGlhQ2xpZW50R3RrOjp+VXNlck1lZGlhQ2xpZW50R3RrKCkKIAogdm9pZCBVc2VyTWVk
aWFDbGllbnRHdGs6OnBhZ2VEZXN0cm95ZWQoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAKLXZvaWQgVXNlck1lZGlhQ2xpZW50R3RrOjpyZXF1ZXN0VXNlck1lZGlhKFdURjo6UGFzc1Jl
ZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBwcnBSZXF1ZXN0LCBjb25zdCBNZWRpYVN0cmVhbVNvdXJj
ZVZlY3RvciYgYXVkaW9Tb3VyY2UsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2aWRl
b1NvdXJjZSkKK3ZvaWQgVXNlck1lZGlhQ2xpZW50R3RrOjpyZXF1ZXN0VXNlck1lZGlhKFdURjo6
UGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBwcnBSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpN
ZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBXZWJDb3JlOjpNZWRp
YVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IHJlcXVlc3QgPSBwcnBSZXF1ZXN0Owor
ICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYlZpZXcsICJ1c2VyLW1lZGlhLXJlcXVlc3Rl
ZCIsIGtpdE5ldyhyZXF1ZXN0LmdldCgpKSwga2l0TmV3KGF1ZGlvU291cmNlcyksIGtpdE5ldyh2
aWRlb1NvdXJjZXMpKTsKIH0KIAogdm9pZCBVc2VyTWVkaWFDbGllbnRHdGs6OmNhbmNlbFVzZXJN
ZWRpYVJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYlZpZXcsICJ1c2VyLW1lZGlh
LXJlcXVlc3QtY2FuY2VsbGVkIiwgMCk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYktpdDsKK30K
IAotI2VuZGlmIC8vIE1FRElBX1NUUkVBTQorI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Vc2VyTWVkaWFD
bGllbnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1VzZXJNZWRpYUNs
aWVudEd0ay5oCmluZGV4IDAzNjJhNGEzZDAyMzMxNTFjYTAxNTMxNDNkNDU2ZGNjMWE0YTYwMzMu
LmNjNTRkNjkzMTJkZDFhN2RlYmU1ZDdmOTcwMGJmYTE2YzVkOTM3MzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1VzZXJNZWRpYUNsaWVudEd0ay5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1VzZXJNZWRpYUNsaWVudEd0ay5oCkBA
IC0xNywyNiArMTcsMzkgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICoKICAq
LworCisKICNpZm5kZWYgVXNlck1lZGlhQ2xpZW50R3RrX2gKICNkZWZpbmUgVXNlck1lZGlhQ2xp
ZW50R3RrX2gKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJNZWRpYVN0
cmVhbVNvdXJjZS5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudC5oIgogCit0eXBlZGVmIHN0
cnVjdCBfV2ViS2l0V2ViVmlldyBXZWJLaXRXZWJWaWV3OworCituYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBVc2VyTWVkaWFSZXF1ZXN0OworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgVXNlck1lZGlhQ2xpZW50R3RrIDogcHVibGljIFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudCB7
CiBwdWJsaWM6Ci0gICAgVXNlck1lZGlhQ2xpZW50R3RrKCk7Ci0gICAgdmlydHVhbCB+VXNlck1l
ZGlhQ2xpZW50R3RrKCk7CisgICAgVXNlck1lZGlhQ2xpZW50R3RrKFdlYktpdFdlYlZpZXcqKTsK
KyAgICB+VXNlck1lZGlhQ2xpZW50R3RrKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ry
b3llZCgpOworCiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RVc2VyTWVkaWEoV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+LCBjb25zdCBXZWJDb3JlOjpNZWRpYVN0cmVh
bVNvdXJjZVZlY3RvciYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJik7
CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoV2ViQ29yZTo6VXNlck1l
ZGlhUmVxdWVzdCopOworCitwcml2YXRlOgorICAgIFdlYktpdFdlYlZpZXcqIG1fd2ViVmlldzsK
IH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYktpdAorfQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJraXRndGst
ZG9jcy5zZ21sIGIvU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJraXRndGstZG9jcy5zZ21sCmlu
ZGV4IDcyMTA2NTIyZmI1YmFiYThiMDA5ZmUzNTQ0YjlhZGYyM2ZjYmIxOTguLjVhM2FiYjNmNjcx
OGU1MTVhY2QzMzEwOWUxNGZlOWZlOWEwNGMzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL2RvY3Mvd2Via2l0Z3RrLWRvY3Muc2dtbAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9kb2Nz
L3dlYmtpdGd0ay1kb2NzLnNnbWwKQEAgLTMzLDYgKzMzLDggQEAKICAgICA8eGk6aW5jbHVkZSBo
cmVmPSJ4bWwvd2Via2l0ZG93bmxvYWQueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1s
L3dlYmtpdHZpZXdwb3J0YXR0cmlidXRlcy54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4
bWwvd2Via2l0aGl0dGVzdHJlc3VsdC54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwv
d2Via2l0d2VidXNlcm1lZGlhbGlzdC54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwv
d2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4
bWwvd2Via2l0d2VicGx1Z2luLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC93ZWJr
aXR3ZWJwbHVnaW5kYXRhYmFzZS54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvd2Vi
a2l0c291cGF1dGhkaWFsb2cueG1sIi8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9k
b2NzL3dlYmtpdGd0ay1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzL3dlYmtp
dGd0ay1zZWN0aW9ucy50eHQKaW5kZXggYjcwN2JmODNkNzExYTBjMWUxNzdhYjY0ZjE0NzZmNGMx
ZTBmYmU3YS4uYTA4ZjE0MDNkNjMyYzc2OGUzMDJjNmUwODUwNDdhY2JkYzhiNTJhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJraXRndGstc2VjdGlvbnMudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3Mvd2Via2l0Z3RrLXNlY3Rpb25zLnR4dApAQCAtNDAzLDYg
KzQwMyw3IEBAIFdlYktpdFdlYlZpZXdUYXJnZXRJbmZvCiBXZWJLaXRXZWJWaWV3Vmlld01vZGUK
IDxUSVRMRT5XZWJLaXRXZWJWaWV3PC9USVRMRT4KIFdlYktpdFdlYlZpZXcKK3dlYmtpdF93ZWJf
dmlld19hY2NlcHRfdXNlcl9tZWRpYV9yZXF1ZXN0CiB3ZWJraXRfd2ViX3ZpZXdfY2FuX2NvcHlf
Y2xpcGJvYXJkCiB3ZWJraXRfd2ViX3ZpZXdfY2FuX2N1dF9jbGlwYm9hcmQKIHdlYmtpdF93ZWJf
dmlld19jYW5fZ29fYmFjawpAQCAtNDU1LDYgKzQ1Niw3IEBAIHdlYmtpdF93ZWJfdmlld19uZXcK
IHdlYmtpdF93ZWJfdmlld19vcGVuCiB3ZWJraXRfd2ViX3ZpZXdfcGFzdGVfY2xpcGJvYXJkCiB3
ZWJraXRfd2ViX3ZpZXdfcmVkbword2Via2l0X3dlYl92aWV3X3JlamVjdF91c2VyX21lZGlhX3Jl
cXVlc3QKIHdlYmtpdF93ZWJfdmlld19yZWxvYWQKIHdlYmtpdF93ZWJfdmlld19yZWxvYWRfYnlw
YXNzX2NhY2hlCiB3ZWJraXRfd2ViX3ZpZXdfc2VhcmNoX3RleHQKQEAgLTY4Niw2ICs2ODgsNDcg
QEAgV2ViS2l0SWNvbkRhdGFiYXNlUHJpdmF0ZQogPC9TRUNUSU9OPgogCiA8U0VDVElPTj4KKzxG
SUxFPndlYmtpdHdlYnVzZXJtZWRpYWxpc3Q8L0ZJTEU+Cis8VElUTEU+V2ViS2l0V2ViVXNlck1l
ZGlhTGlzdDwvVElUTEU+CitXZWJLaXRXZWJVc2VyTWVkaWFMaXN0Cit3ZWJraXRfd2ViX3VzZXJf
bWVkaWFfbGlzdF9nZXRfbGVuZ3RoCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfaXRl
bV9uYW1lCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9pc19pdGVtX3NlbGVjdGVkCit3ZWJr
aXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9zZWxlY3RfaXRlbQorPFNVQlNFQ1RJT04gU3RhbmRhcmQ+
CitXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfTElTVAorV0VCS0lUX0lTX1dFQl9VU0VSX01FRElB
X0xJU1RfQ0xBU1MKK1dFQktJVF9XRUJfVVNFUl9NRURJQV9MSVNUCitXRUJLSVRfV0VCX1VTRVJf
TUVESUFfTElTVF9DTEFTUworV0VCS0lUX1dFQl9VU0VSX01FRElBX0xJU1RfR0VUX0NMQVNTCitX
RUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNUCis8U1VCU0VDVElPTiBQcml2YXRlPgorV2Vi
S2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGUKK1dlYktpdFdlYlVzZXJNZWRpYUxpc3RDbGFzcwor
d2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKworPFNFQ1RJ
T04+Cis8RklMRT53ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0PC9GSUxFPgorPFRJVExFPldlYktp
dFdlYlVzZXJNZWRpYVJlcXVlc3Q8L1RJVExFPgorV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdAor
d2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNfYXVkaW8KK3dlYmtpdF93ZWJfdXNl
cl9tZWRpYV9yZXF1ZXN0X3dhbnRzX3ZpZGVvCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVz
dF9nZXRfb3JpZ2luCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dFQktJVF9JU19XRUJfVVNFUl9N
RURJQV9SRVFVRVNUCitXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfUkVRVUVTVF9DTEFTUworV0VC
S0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVAorV0VCS0lUX1dFQl9VU0VSX01FRElBX1JF
UVVFU1QKK1dFQktJVF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUX0NMQVNTCitXRUJLSVRfV0VCX1VT
RVJfTUVESUFfUkVRVUVTVF9HRVRfQ0xBU1MKKzxTVUJTRUNUSU9OIFByaXZhdGU+CitXZWJLaXRX
ZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3MKK1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRl
Cit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9nZXRfdHlwZQorPC9TRUNUSU9OPgorCis8
U0VDVElPTj4KIDxGSUxFPndlYmtpdGZhdmljb25kYXRhYmFzZTwvRklMRT4KIDxUSVRMRT5XZWJL
aXRGYXZpY29uRGF0YWJhc2U8L1RJVExFPgogV2ViS2l0RmF2aWNvbkRhdGFiYXNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmggYi9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0LmgKaW5kZXggYWE3YjkzZGJkYThjMjZkZTIxZTk4MmQzOWM2MTY1ZmI4
YzJmNWU3Ny4uYmYxNmEyNWU5MmVkNTVmOWIyMDdiNGE3MmJjNjNiYjg5NjlmMWViMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXQuaApAQCAtNTEsNiArNTEsOCBAQAogI2luY2x1ZGUgPHdlYmtp
dC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJy
ZXNvdXJjZS5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5oPgorI2luY2x1
ZGUgPHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0Lmg+CisjaW5jbHVkZSA8d2Via2l0L3dl
YmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vidmll
dy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oPgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjkwOTZmN2RlODY2MTgwYzk4YmRhODZmMjFhOGVlNjVlMDQyOWUzOQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVk
aWFsaXN0LmNwcApAQCAtMCwwICsxLDE4MiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIg
Q29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEg
IFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmgiCisKKyNpbmNsdWRlICJ3
ZWJraXRnbG9iYWxzcHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYWxpc3Rw
cml2YXRlLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKKworLyoqCisgKiBT
RUNUSU9OOndlYmtpdHdlYnVzZXJtZWRpYWxpc3QKKyAqIEBzaG9ydF9kZXNjcmlwdGlvbjogVXNl
ck1lZGlhIExpc3QKKyAqIEBUaXRsZTogV2ViS2l0V2ViVXNlck1lZGlhTGlzdAorICoKKyAqICNX
ZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGNvbnRhaW5zIGEgbGlzdCBvZgorICogYXVkaW8gb3Igdmlk
ZW8gc291cmNlcyBmcm9tIGEgV2ViVXNlck1lZGlhUmVxdWVzdAorICoKKyAqIFNpbmNlOiAxLjEw
LjAKKyAqLworCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdHJ1Y3QgX1dlYktpdFdlYlVz
ZXJNZWRpYUxpc3RQcml2YXRlIHsKKyAgICBXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3Rv
ciBzb3VyY2VzOworICAgIFZlY3Rvcjxib29sPiBzb3VyY2VTZWxlY3Rpb25zOworfTsKKworR19E
RUZJTkVfVFlQRShXZWJLaXRXZWJVc2VyTWVkaWFMaXN0LCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFf
bGlzdCwgR19UWVBFX09CSkVDVCkKKworc3RhdGljIHZvaWQgd2Via2l0V2ViVXNlck1lZGlhTGlz
dERpc3Bvc2UoR09iamVjdCogb2JqZWN0KQoreworICAgIFdlYktpdFdlYlVzZXJNZWRpYUxpc3Qq
IHVzZXJNZWRpYUxpc3QgPSBXRUJLSVRfV0VCX1VTRVJfTUVESUFfTElTVChvYmplY3QpOworICAg
IFdlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlKiBwcml2ID0gdXNlck1lZGlhTGlzdC0+cHJp
djsKKworICAgIHByaXYtPnNvdXJjZVNlbGVjdGlvbnMuY2xlYXIoKTsKKworICAgIEdfT0JKRUNU
X0NMQVNTKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X3BhcmVudF9jbGFzcyktPmRpc3Bvc2Uo
b2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0V2ViVXNlck1lZGlhTGlzdEZpbmFsaXpl
KEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBXRUJLSVRfV0VCX1VTRVJfTUVESUFfTElTVChvYmpl
Y3QpLT5wcml2LT5+V2ViS2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGUoKTsKKyAgICBHX09CSkVD
VF9DTEFTUyh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9wYXJlbnRfY2xhc3MpLT5maW5hbGl6
ZShvYmplY3QpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9j
bGFzc19pbml0KFdlYktpdFdlYlVzZXJNZWRpYUxpc3RDbGFzcyogbGlzdENsYXNzKQoreworICAg
IEdPYmplY3RDbGFzcyogZ29iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGxpc3RDbGFzcyk7
CisgICAgZ29iamVjdF9jbGFzcy0+ZGlzcG9zZSA9IHdlYmtpdFdlYlVzZXJNZWRpYUxpc3REaXNw
b3NlOworICAgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gd2Via2l0V2ViVXNlck1lZGlhTGlz
dEZpbmFsaXplOworCisgICAgd2Via2l0SW5pdCgpOworCisgICAgZ190eXBlX2NsYXNzX2FkZF9w
cml2YXRlKGxpc3RDbGFzcywgc2l6ZW9mKFdlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlKSk7
Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2luaXQoV2ViS2l0
V2ViVXNlck1lZGlhTGlzdCogbGlzdCkKK3sKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJp
dmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShsaXN0LCBXRUJLSVRfVFlQ
RV9XRUJfVVNFUl9NRURJQV9MSVNULCBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZSk7Cisg
ICAgbGlzdC0+cHJpdiA9IHByaXY7CisKKyAgICAvLyBwbGFjZW1lbnQgbmV3IHN5bnRheAorICAg
IG5ldyAocHJpdikgV2ViS2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGUoKTsKK30KKworLyoqCisg
KiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfbGVuZ3RoOgorICogQGxpc3Q6IHRoZSBX
ZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGl0c2VsZgorICoKKyAqIFJldHVybnMgdGhlIHNpemUgb2Yg
dGhlIGVsZW1lbnRzIGxpc3QuCisgKgorICogUmV0dXJuIHZhbHVlOiBudW1iZXIgb2YgZWxlbWVu
dHMuCisgKgorICogU2luY2U6IDEuMTAuMAorICovCitndWludCB3ZWJraXRfd2ViX3VzZXJfbWVk
aWFfbGlzdF9nZXRfbGVuZ3RoKFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGxpc3QpCit7CisgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX0xJU1QobGlzdCks
IDApOworCisgICAgcmV0dXJuIGNvcmUobGlzdCkuc2l6ZSgpOworfQorCisKKy8qKgorICogd2Vi
a2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2l0ZW1fbmFtZToKKyAqIEBsaXN0OiB0aGUgI1dl
YktpdFdlYlVzZXJNZWRpYUxpc3QgaXRzZWxmCisgKiBAaW5kZXg6IHRoZSB3YW50ZWQgZWxlbWVu
dCBpbmRleC4KKyAqCisgKiBSZXR1cm5zIHRoZSBkZXZpY2UgbmFtZSBvZiB0aGUgZWxlbWVudC4K
KyAqCisgKiBSZXR1cm4gdmFsdWU6IHRoZSBkZXZpY2UgaWQgb2YgdGhlIEBpbmRleCBnaXZlbiBl
bGVtZW50LgorICoKKyAqIFNpbmNlOiAxLjEwLjAKKyAqLworY29uc3QgZ2NoYXIqIHdlYmtpdF93
ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9pdGVtX25hbWUoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCog
bGlzdCwgZ3VpbnQgaW5kZXgpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lT
X1dFQl9VU0VSX01FRElBX0xJU1QobGlzdCksIDApOworCisgICAgV2ViQ29yZTo6TWVkaWFTdHJl
YW1Tb3VyY2VWZWN0b3ImIHNvdXJjZXMgPSBjb3JlKGxpc3QpOworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKGluZGV4IDwgc291cmNlcy5zaXplKCksIDApOworCisgICAgcmV0dXJuIGdfc3RyZHVw
KHNvdXJjZXNbaW5kZXhdLT5uYW1lKCkudXRmOCgpLmRhdGEoKSk7Cit9CisKKy8qKgorICogd2Vi
a2l0X3dlYl91c2VyX21lZGlhX2xpc3RfaXNfaXRlbV9zZWxlY3RlZDoKKyAqIEBsaXN0OiB0aGUg
I1dlYktpdFdlYlVzZXJNZWRpYUxpc3QgaXRzZWxmCisgKiBAaW5kZXg6IHRoZSB3YW50ZWQgZWxl
bWVudCBpbmRleC4KKyAqCisgKiBJbmRpY2F0ZSBpZiBhIGRldmljZSBpcyBtYXJrZWQgYXMgc2Vs
ZWN0ZWQuCisgKgorICogUmV0dXJuIHZhbHVlOiBUcnVlIGlmIHRoZSBkZXZpY2UgcmVwcmVzZW50
ZWQgYnkgQGluZGV4IGlzIG1hcmtlZCBhcyBzZWxlY3RlZC4KKyAqCisgKiBTaW5jZTogMS4xMC4w
CisgKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2lzX2l0ZW1fc2VsZWN0
ZWQoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCogbGlzdCwgZ3VpbnQgaW5kZXgpCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX0xJU1QobGlzdCksIEZB
TFNFKTsKKworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGluZGV4IDwgY29yZShsaXN0KS5zaXpl
KCksIEZBTFNFKTsKKworICAgIHJldHVybiBsaXN0LT5wcml2LT5zb3VyY2VTZWxlY3Rpb25zW2lu
ZGV4XTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9zZWxlY3RfaXRl
bToKKyAqIEBsaXN0OiB0aGUgI1dlYktpdFdlYlVzZXJNZWRpYUxpc3QgaXRzZWxmCisgKiBAaW5k
ZXg6IHRoZSB3YW50ZWQgZWxlbWVudCBpbmRleC4KKyAqCisgKiBNYXJrIGEgZGV2aWNlIGFzIHNl
bGVjdGVlZC4KKyAqCisgKiBTaW5jZTogMS4xMC4wCisgKi8KK3ZvaWQgd2Via2l0X3dlYl91c2Vy
X21lZGlhX2xpc3Rfc2VsZWN0X2l0ZW0oV2ViS2l0V2ViVXNlck1lZGlhTGlzdCogbGlzdCwgZ3Vp
bnQgaW5kZXgpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVE
SUFfTElTVChsaXN0KSk7CisKKyAgICBnX3JldHVybl9pZl9mYWlsKGluZGV4IDwgY29yZShsaXN0
KS5zaXplKCkpOworCisgICAgbGlzdC0+cHJpdi0+c291cmNlU2VsZWN0aW9uc1tpbmRleF0gPSBU
UlVFOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3Vy
Y2VWZWN0b3ImIGNvcmUoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCogbGlzdCkKK3sKKyAgICByZXR1
cm4gbGlzdC0+cHJpdi0+c291cmNlczsKK30KKworV2ViS2l0V2ViVXNlck1lZGlhTGlzdCoga2l0
TmV3KGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2VzKQorewor
ICAgIFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIHdlYkxpc3QgPSBXRUJLSVRfV0VCX1VTRVJfTUVE
SUFfTElTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfTElTVCwgTlVM
TCkpOworICAgIHdlYkxpc3QtPnByaXYtPnNvdXJjZXMgPSBzb3VyY2VzOworICAgIHdlYkxpc3Qt
PnByaXYtPnNvdXJjZVNlbGVjdGlvbnMuZmlsbChGQUxTRSwgc291cmNlcy5zaXplKCkpOworCisg
ICAgcmV0dXJuIHdlYkxpc3Q7Cit9CisKK30KKworI2VuZGlmIC8qIEVOQUJMRShNRURJQV9TVFJF
QU0pICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNl
cm1lZGlhbGlzdC5oIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRp
YWxpc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42YjVjYzEyZjE2N2U1Njk4MzA3N2MwNGYxNGNhNTliNjVmYWRh
OGY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnVzZXJtZWRpYWxpc3QuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogIENvcHlyaWdodCAoQykg
MjAxMiBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAt
MTMwMSAgVVNBCisgKi8KKworCisjaWZuZGVmIHdlYmtpdHdlYnVzZXJtZWRpYWxpc3RfaAorI2Rl
ZmluZSB3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0X2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+
CisjaW5jbHVkZSA8Z2xpYi5oPgorCisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRlZmluZXMuaD4K
KworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJ
U1QgICAgICAgICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X3R5cGUoKSkK
KyNkZWZpbmUgV0VCS0lUX1dFQl9VU0VSX01FRElBX0xJU1Qob2JqKSAgICAgICAgICAgICAgIChH
X1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVE
SUFfTElTVCwgV2ViS2l0V2ViVXNlck1lZGlhTGlzdCkpCisjZGVmaW5lIFdFQktJVF9XRUJfVVNF
Ul9NRURJQV9MSVNUX0NMQVNTKGtsYXNzKSAgICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1Qo
KGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1QsIFdlYktpdFdlYlVzZXJN
ZWRpYUxpc3RDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9MSVNUKG9i
aikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9U
WVBFX1dFQl9VU0VSX01FRElBX0xJU1QpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1VTRVJfTUVE
SUFfTElTVF9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyks
ICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNUKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9V
U0VSX01FRElBX0xJU1RfR0VUX0NMQVNTKG9iaikgICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NM
QVNTKChvYmopLCAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfTElTVCwgV2ViS2l0V2ViVXNl
ck1lZGlhTGlzdENsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRpYUxp
c3QgV2ViS2l0V2ViVXNlck1lZGlhTGlzdDsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJVc2Vy
TWVkaWFMaXN0Q2xhc3MgV2ViS2l0V2ViVXNlck1lZGlhTGlzdENsYXNzOwordHlwZWRlZiBzdHJ1
Y3QgX1dlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlIFdlYktpdFdlYlVzZXJNZWRpYUxpc3RQ
cml2YXRlOworCitzdHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRpYUxpc3QgeworICAgIEdPYmplY3Qg
cGFyZW50X2luc3RhbmNlOworICAgIFdlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlICpwcml2
OworfTsKKworc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0Q2xhc3MgeworICAgIEdPYmpl
Y3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfd2Vi
X3VzZXJfbWVkaWFfbGlzdF9nZXRfdHlwZSAodm9pZCkgR19HTlVDX0NPTlNUOworCitXRUJLSVRf
QVBJIGd1aW50Cit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfbGVuZ3RoICAgICAgICAo
V2ViS2l0V2ViVXNlck1lZGlhTGlzdCAqbGlzdCk7CisKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIg
Kgord2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2l0ZW1fbmFtZSAgICAgKFdlYktpdFdl
YlVzZXJNZWRpYUxpc3QgKmxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ3VpbnQgaW5kZXgpOworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3dl
Yl91c2VyX21lZGlhX2xpc3RfaXNfaXRlbV9zZWxlY3RlZCAoV2ViS2l0V2ViVXNlck1lZGlhTGlz
dCAqbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
dWludCBpbmRleCk7CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0
X3NlbGVjdF9pdGVtICAgICAgIChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0ICpsaXN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IGluZGV4KTsKKwor
R19FTkRfREVDTFMKKworI2VuZGlmIC8qIHdlYmtpdHdlYnVzZXJtZWRpYWxpc3RfaCAqLwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3Rw
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlz
dHByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTk4Y2FlY2ZiNmNlZjdjODBhYjk2YWY1NDM2ZjUzYTUz
Yzk3YmQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnVzZXJtZWRpYWxpc3Rwcml2YXRlLmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqICBDb3B5
cmlnaHQgKEMpIDIwMTIgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rvbiwg
TUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKworI2lmbmRlZiB3ZWJraXR3ZWJ1c2VybWVkaWFs
aXN0cHJpdmF0ZV9oCisjZGVmaW5lIHdlYmtpdHdlYnVzZXJtZWRpYWxpc3Rwcml2YXRlX2gKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5o
IgorI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYWxpc3QuaCIKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK1dlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBjb3JlKFdlYktpdFdlYlVz
ZXJNZWRpYUxpc3QqKTsKK1dlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGtpdE5ldyhjb25zdCBXZWJD
b3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYpOworCit9CisKKyNlbmRpZiAvKiBFTkFCTEUo
TUVESUFfU1RSRUFNKSAqLworCisjZW5kaWYgLyogd2Via2l0d2VidXNlcm1lZGlhbGlzdHByaXZh
dGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVz
ZXJtZWRpYXJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVz
ZXJtZWRpYXJlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0ZDRkYTA1ODViYTQ3Y2JlOTUxYjM5MWUx
NWM3YjlkYjY2NmY3NGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5jcHAKQEAgLTAsMCArMSwxNTAgQEAKKy8qCisg
KiAgQ29weXJpZ2h0IChDKSAyMDEyIENvbGxhYm9yYSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK
KyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBC
b3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVk
aWFyZXF1ZXN0LmgiCisKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhUmVxdWVzdC5oIgorI2luY2x1ZGUgIndlYmtpdGds
b2JhbHNwcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0c2VjdXJpdHlvcmlnaW5wcml2YXRlLmgi
CisjaW5jbHVkZSAid2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGUuaCIKKyNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKKy8qKgorICogU0VDVElPTjp3ZWJraXR3ZWJ1c2VybWVk
aWFyZXF1ZXN0CisgKiBAc2hvcnRfZGVzY3JpcHRpb246IFRoZSBXZWJLaXQncyBVc2VyTWVkaWEg
UmVxdWVzdC4KKyAqIEBUaXRsZTogV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdAorICoKKyAqIFRo
aXMgb2JqZWN0IGNvbnRhaW5zIHRoZSBpbmZvcm1hdGlvbiBvZiBhIG1lZGlhIHJlcXVlc3QuCisg
KiBJdCBjYW4gYmUgdXNlZCB0byBjaGVjayBpZiB0aGUgcmVxdWVzdCBpcyBhc2tpbmcgZm9yIGF1
ZGlvIGFuZC9vciB2aWRlby4KKyAqCisgKiBTaW5jZTogMS4xMC4wCisgKi8KKwordXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKKworc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0
ZSB7CisgICAgUmVmUHRyPFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+IHVzZXJNZWRpYVJlcXVl
c3Q7Cit9OworCitHX0RFRklORV9UWVBFKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QsIHdlYmtp
dF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0LCBHX1RZUEVfT0JKRUNUKQorCitzdGF0aWMgdm9pZCB3
ZWJraXRXZWJVc2VyTWVkaWFSZXF1ZXN0RmluYWxpemUoR09iamVjdCAqb2JqZWN0KQoreworICAg
IFdFQktJVF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUKG9iamVjdCktPnByaXYtPn5XZWJLaXRXZWJV
c2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSgpOworCisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dl
Yl91c2VyX21lZGlhX3JlcXVlc3RfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKK30K
Kworc3RhdGljIHZvaWQgd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfY2xhc3NfaW5pdChX
ZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3MqIHJlcXVlc3RDbGFzcykKK3sKKyAgICBHT2Jq
ZWN0Q2xhc3MqIGdvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOwor
ICAgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gd2Via2l0V2ViVXNlck1lZGlhUmVxdWVzdEZp
bmFsaXplOworCisgICAgd2Via2l0SW5pdCgpOworCisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2
YXRlKHJlcXVlc3RDbGFzcywgc2l6ZW9mKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRl
KSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2luaXQo
V2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBXZWJLaXRXZWJVc2Vy
TWVkaWFSZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShy
ZXF1ZXN0LCBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFVRVNULCBXZWJLaXRXZWJVc2Vy
TWVkaWFSZXF1ZXN0UHJpdmF0ZSk7CisgICAgcmVxdWVzdC0+cHJpdiA9IHByaXY7CisKKyAgICBu
ZXcgKHByaXYpIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRlKCk7Cit9CisKKy8qKgor
ICogd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNfYXVkaW86CisgKiBAcmVxdWVz
dDogdGhlICNXZWJLaXRVc2VyTWVkaWFSZXF1ZXN0IGl0c2VsZi4KKyAqCisgKiBJbmRpY2F0ZXMg
dGhlIGNvbnRlbnQgb2YgYW4gVXNlck1lZGlhUmVxdWVzdC4KKyAqCisgKiBSZXR1cm4gdmFsdWU6
IFRydWUgaWYgdGhlIHJlcXVlc3QgY29udGFpbnMgYW4gYXVkaW8gcmVxdWVzdC4KKyAqCisgKiBT
aW5jZTogMS4xMC4wCisgKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0
X3dhbnRzX2F1ZGlvKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX1JFUVVFU1QocmVx
dWVzdCksIEZBTFNFKTsKKworICAgIHJldHVybiBjb3JlKHJlcXVlc3QpLT5hdWRpbygpOworfQor
CisvKioKKyAqIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRzX3ZpZGVvOgorICog
QHJlcXVlc3Q6IHRoZSAjV2ViS2l0VXNlck1lZGlhUmVxdWVzdCBpdHNlbGYuCisgKgorICogSW5k
aWNhdGVzIHRoZSBjb250ZW50IG9mIGFuIFVzZXJNZWRpYVJlcXVlc3QuCisgKgorICogUmV0dXJu
IHZhbHVlOiBUcnVlIGlmIHRoZSByZXF1ZXN0IGNvbnRhaW5zIGEgdmlkZW8gcmVxdWVzdC4KKyAq
CisgKiBTaW5jZTogMS4xMC4wCisgKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9y
ZXF1ZXN0X3dhbnRzX3ZpZGVvKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCit7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX1JFUVVF
U1QocmVxdWVzdCksIEZBTFNFKTsKKworICAgIHJldHVybiBjb3JlKHJlcXVlc3QpLT52aWRlbygp
OworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2dldF9vcmlnaW46
CisgKiBAcmVxdWVzdDogdGhlICNXZWJLaXRVc2VyTWVkaWFSZXF1ZXN0IGl0c2VsZi4KKyAqCisg
KiBSZXR1cm5zIHRoZSBzZWN1cml0eSBvcmlnaW4gb2YgdGhlIE1lZGlhIFJlcXVlc3QuCisgKgor
ICogUmV0dXJuIHZhbHVlOiAodHJhbnNmZXIgbm9uZSk6IHRoZSBzZWN1cml0eSBvcmlnaW4gb2Yg
dGhlIG1lZGlhIHJlcXVlc3QuCisgKgorICogU2luY2U6IDEuMTAuMAorICovCitXZWJLaXRTZWN1
cml0eU9yaWdpbiogd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZ2V0X3NlY3VyaXR5X29y
aWdpbihXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9SRVFVRVNUKHJlcXVlc3QpLCAw
KTsKKworICAgIHJldHVybiBraXQoY29yZShyZXF1ZXN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5zZWN1cml0eU9yaWdpbigpKTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNv
cmU6OlVzZXJNZWRpYVJlcXVlc3QqIGNvcmUoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCogcmVx
dWVzdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVE
SUFfUkVRVUVTVChyZXF1ZXN0KSwgMCk7CisKKyAgICByZXR1cm4gcmVxdWVzdC0+cHJpdi0+dXNl
ck1lZGlhUmVxdWVzdC5nZXQoKTsKK30KKworV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCoga2l0
TmV3KFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwocmVxdWVzdCwgMCk7CisKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0
KiB3ZWJSZXF1ZXN0ID0gV0VCS0lUX1dFQl9VU0VSX01FRElBX1JFUVVFU1QoZ19vYmplY3RfbmV3
KFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX1JFUVVFU1QsIE5VTEwpKTsKKyAgICB3ZWJSZXF1
ZXN0LT5wcml2LT51c2VyTWVkaWFSZXF1ZXN0ID0gcmVxdWVzdDsKKworICAgIHJldHVybiB3ZWJS
ZXF1ZXN0OworfQorCit9CisKKyNlbmRpZiAvKiBFTkFCTEUoTUVESUFfU1RSRUFNKSAqLwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVl
c3QuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uN2UwNzg4OWRlNmU2Y2RjMGEwYzRlZjA0NmE1ZGQzNWU3Y2NiMmNhNQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2Vy
bWVkaWFyZXF1ZXN0LmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIw
MTIgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEz
MDEgIFVTQQorICovCisKKworI2lmbmRlZiB3ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0X2gKKyNk
ZWZpbmUgd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdF9oCisKKyNpbmNsdWRlIDxnbGliLW9iamVj
dC5oPgorI2luY2x1ZGUgPGdsaWIuaD4KKworI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZpbmVz
Lmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJ
QV9SRVFVRVNUICAgICAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2dldF90
eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUKG9iaikgICAgICAg
ICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9V
U0VSX01FRElBX1JFUVVFU1QsIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QpKQorI2RlZmluZSBX
RUJLSVRfV0VCX1VTRVJfTUVESUFfUkVRVUVTVF9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVD
S19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFVRVNU
LCBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VC
X1VTRVJfTUVESUFfUkVRVUVTVChvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9U
WVBFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFVRVNUKSkKKyNkZWZpbmUg
V0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX1JFUVVFU1RfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hF
Q0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVT
VCkpCisjZGVmaW5lIFdFQktJVF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUX0dFVF9DTEFTUyhvYmop
ICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9VU0VS
X01FRElBX1JFUVVFU1QsIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RDbGFzcykpCisKK3R5cGVk
ZWYgc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0IFdlYktpdFdlYlVzZXJNZWRpYVJl
cXVlc3Q7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdENsYXNzIFdl
YktpdFdlYlVzZXJNZWRpYVJlcXVlc3RDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJV
c2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZTsK
Kworc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0IHsKKyAgICBHT2JqZWN0IHBhcmVu
dF9pbnN0YW5jZTsKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSAqcHJpdjsK
K307CisKK3N0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdENsYXNzIHsKKyAgICBHT2Jq
ZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dl
Yl91c2VyX21lZGlhX3JlcXVlc3RfZ2V0X3R5cGUgKHZvaWQpIEdfR05VQ19DT05TVDsKKworV0VC
S0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNfYXVk
aW8gICAgICAgICAgICAgIChXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0ICpyZXF1ZXN0KTsKKwor
V0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNf
dmlkZW8gICAgICAgICAgICAgIChXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0ICpyZXF1ZXN0KTsK
KworV0VCS0lUX0FQSSBXZWJLaXRTZWN1cml0eU9yaWdpbioKK3dlYmtpdF93ZWJfdXNlcl9tZWRp
YV9yZXF1ZXN0X2dldF9vcmlnaW4gICAgICAgICAgICAgICAoV2ViS2l0V2ViVXNlck1lZGlhUmVx
dWVzdCAqcmVxdWVzdCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiB3ZWJraXR3ZWJ1c2Vy
bWVkaWFyZXF1ZXN0X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTgyZmE3
MWFjNjhjZjFhMTFlNDEyZDc1NjJkYWNiYjczNjRmNjJmZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZS5o
CkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIENvbGxhYm9yYSBM
dGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAg
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3Jp
dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLwor
CisKKyNpZm5kZWYgd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGVfaAorI2RlZmluZSB3
ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZV9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorCisjaW5jbHVkZSAid2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitzdHJ1Y3QgVXNlck1lZGlhUmVxdWVzdDsKK30KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1dlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqIGNvcmUoV2ViS2l0V2ViVXNlck1l
ZGlhUmVxdWVzdCopOworV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCoga2l0TmV3KFdlYkNvcmU6
OlVzZXJNZWRpYVJlcXVlc3QqKTsKKworfQorCisjZW5kaWYgLyogRU5BQkxFKE1FRElBX1NUUkVB
TSkgKi8KKworI2VuZGlmIC8qIHdlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlX2ggKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCA2MDhiZmMy
NDMzNGY5NDMwN2FjN2EyNWZiYTQwYmVmMzdlNmQzOWFhLi5mY2UyMjZiZmJjZDRhNDc2NGJmZWZl
OWI4OWJiNTQyOGQ4NTMzMzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwCkBAIC04Myw2ICs4Myw3IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0
dXJlcy5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
KyNpbmNsdWRlICJVc2VyTWVkaWFDbGllbnRHdGsuaCIKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0
RE9NRG9jdW1lbnRQcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0ZG93bmxvYWQuaCIKICNpbmNs
dWRlICJ3ZWJraXRkb3dubG9hZHByaXZhdGUuaCIKQEAgLTEwMywxMCArMTA0LDEyIEBACiAjaW5j
bHVkZSAid2Via2l0d2ViaGlzdG9yeWl0ZW1wcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vi
aW5zcGVjdG9yLmgiCiAjaW5jbHVkZSAid2Via2l0d2ViaW5zcGVjdG9ycHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgIndlYmtpdHdlYnBsdWdpbmRhdGFiYXNlcHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtp
dHdlYnBvbGljeWRlY2lzaW9uLmgiCiAjaW5jbHVkZSAid2Via2l0d2VicmVzb3VyY2UuaCIKICNp
bmNsdWRlICJ3ZWJraXR3ZWJzZXR0aW5nc3ByaXZhdGUuaCIKLSNpbmNsdWRlICJ3ZWJraXR3ZWJw
bHVnaW5kYXRhYmFzZXByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0
cHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlLmgi
CiAjaW5jbHVkZSAid2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaCIKICNpbmNsdWRlICJ3ZWJraXR3
ZWJ2aWV3cHJpdmF0ZS5oIgogI2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CkBAIC0xMTksNiAr
MTIyLDcgQEAKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEd0ay5oIgogI2VuZGlm
CiAKKwogLyoqCiAgKiBTRUNUSU9OOndlYmtpdHdlYnZpZXcKICAqIEBzaG9ydF9kZXNjcmlwdGlv
bjogVGhlIGNlbnRyYWwgY2xhc3Mgb2YgdGhlIFdlYktpdEdUSysgQVBJCkBAIC0yMTAsNiArMjE0
LDggQEAgZW51bSB7CiAgICAgRURJVElOR19FTkRFRCwKICAgICBWSUVXUE9SVF9BVFRSSUJVVEVT
X1JFQ09NUFVURV9SRVFVRVNURUQsCiAgICAgVklFV1BPUlRfQVRUUklCVVRFU19DSEFOR0VELAor
ICAgIFVTRVJfTUVESUFfUkVRVUVTVEVELAorICAgIFVTRVJfTUVESUFfUkVRVUVTVF9DQU5DRUxM
RUQsCiAgICAgUkVTT1VSQ0VfUkVTUE9OU0VfUkVDRUlWRUQsCiAgICAgUkVTT1VSQ0VfTE9BRF9G
SU5JU0hFRCwKICAgICBSRVNPVVJDRV9DT05URU5UX0xFTkdUSF9SRUNFSVZFRCwKQEAgLTI3Mzks
NiArMjc0NSw1MiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJL
aXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgICAgICAgIFdFQktJVF9UWVBFX1ZJ
RVdQT1JUX0FUVFJJQlVURVMpOwogCiAgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6dXNl
ci1tZWRpYS1yZXF1ZXN0ZWQ6CisgICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IHdoaWNoIHJl
Y2VpdmVkIHRoZSBzaWduYWwKKyAgICAgKiBAcmVxdWVzdDogdGhlICNXZWJLaXRXZWJVc2VyTWVk
aWFScXVlc3QgYXR0cmlidXRlIHdoaWNoIGdlbmVyYXRlZCB0aGUgcmVxdWVzdC4KKyAgICAgKiBA
YXVkaW9MaXN0OiBhICNXZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGNvbnRhaW5pbmcgdGhlIGF2YWls
YWJsZSBhdWRpbyBtZWRpYSBvcHRpb25zLgorICAgICAqIEB2aWRlb0xpc3Q6IGEgI1dlYktpdFdl
YlVzZXJNZWRpYUxpc3QgY29udGFpbmluZyB0aGUgYXZhaWxhYmxlIHZpZGVvIG1lZGlhIG9wdGlv
bnMuCisgICAgICoKKyAgICAgKiBXaGVuIHRoZSBhcHBsaWNhdGlvbiByZXF1ZXN0IHVzZXJNZWRp
YSwgdGhpcyBzaWduYWwgd2lsbCBiZSBlbWl0ZWQgd2l0aCB0aGUgcmVxdWVzdAorICAgICAqIGlu
Zm9ybWF0aW9uIGFuZCB0aGUgYXZhaWxhYmxlIG9wdGlvbnMgdG8gYmUgc2VsZWN0ZWQuCisgICAg
ICoKKyAgICAgKiBUaGVuIHRoZSB1c2VyIGlzIGV4cGVjdGVkIHRvIGNhbGwgZWl0aGVyICN3ZWJr
aXRfd2ViX3ZpZXdfYWNjZXB0X3VzZXJfbWVkaWFfcmVxdWVzdCgpIG9yCisgICAgICogd2Via2l0
X3dlYl92aWV3X3JlamVjdF91c2VyX21lZGlhX3JlcXVlc3QoKSB0byBhY2NlcHQgb3IgcmVqZWN0
IHRoZSByZXF1ZXN0LgorICAgICAqCisgICAgICogU2luY2U6IDEuMTAuMAorICAgICAqLworICAg
IHdlYmtpdF93ZWJfdmlld19zaWduYWxzW1VTRVJfTUVESUFfUkVRVUVTVEVEXSA9IGdfc2lnbmFs
X25ldygidXNlci1tZWRpYS1yZXF1ZXN0ZWQiLAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xB
U1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAg
ICAgICAgMCwKKyAgICAgICAgICAgIDAsIDAsCisgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9W
T0lEX19PQkpFQ1RfT0JKRUNUX09CSkVDVCwKKyAgICAgICAgICAgIEdfVFlQRV9OT05FLCAzLAor
ICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCwKKyAgICAgICAg
ICAgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1QsCisgICAgICAgICAgICBXRUJLSVRf
VFlQRV9XRUJfVVNFUl9NRURJQV9MSVNUKTsKKworCisgICAgLyoqCisgICAgICogV2ViS2l0V2Vi
Vmlldzo6dXNlci1tZWRpYS1yZXF1ZXN0LWNhbmNlbGxlZDoKKyAgICAgKiBAd2ViX3ZpZXc6IHRo
ZSBvYmplY3Qgd2hpY2ggcmVjZWl2ZWQgdGhlIHNpZ25hbAorICAgICAqIEByZXF1ZXN0OiB0aGUg
I1dlYktpdFdlYlVzZXJNZWRpYVJxdWVzdCBpdHNlbGYKKyAgICAgKgorICAgICAqIFRoaXMgc2ln
bmFsIHdpbGwgYmUgZW1pdGVkIHdoZW4gdGhlIHVzZXIgY2FuY2VsZWQgaXRzIHVzZXJNZWRpYSBy
ZXF1ZXN0LgorICAgICAqCisgICAgICogU2luY2U6IDEuMTAuMAorICAgICAqLworICAgIHdlYmtp
dF93ZWJfdmlld19zaWduYWxzW1VTRVJfTUVESUFfUkVRVUVTVF9DQU5DRUxMRURdID0gZ19zaWdu
YWxfbmV3KCJ1c2VyLW1lZGlhLXJlcXVlc3QtY2FuY2VsbGVkIiwKKyAgICAgICAgICAgIEdfVFlQ
RV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFT
VCwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICAwLCAwLAorICAgICAgICAgICAgd2Via2l0
X21hcnNoYWxfVk9JRF9fT0JKRUNULAorICAgICAgICAgICAgR19UWVBFX05PTkUsIDEsCisgICAg
ICAgICAgICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFVRVNUKTsKKworCisgICAgLyoq
CiAgICAgICogV2ViS2l0V2ViVmlldzo6ZW50ZXJpbmctZnVsbHNjcmVlbjoKICAgICAgKiBAd2Vi
X3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQu
CiAgICAgICogQGVsZW1lbnQ6IHRoZSAjV2ViS2l0RE9NSFRNTEVsZW1lbnQgd2hpY2ggaGFzIHJl
cXVlc3RlZCBmdWxsIHNjcmVlbiBkaXNwbGF5LgpAQCAtMzY0NCw3ICszNjk2LDcgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl92aWV3X2luaXQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBwcml2LT51c2VyTWVkaWFDbGllbnQg
PSBhZG9wdFB0cihuZXcgVXNlck1lZGlhQ2xpZW50R3RrKTsKKyAgICBwcml2LT51c2VyTWVkaWFD
bGllbnQgPSBhZG9wdFB0cihuZXcgVXNlck1lZGlhQ2xpZW50R3RrKHdlYlZpZXcpKTsKICAgICBX
ZWJDb3JlOjpwcm92aWRlVXNlck1lZGlhVG8ocHJpdi0+Y29yZVBhZ2UsIHByaXYtPnVzZXJNZWRp
YUNsaWVudC5nZXQoKSk7CiAjZW5kaWYKIApAQCAtNTM0MCw2ICs1MzkyLDU2IEBAIHZvaWQgd2Vi
Vmlld0V4aXRGdWxsc2NyZWVuKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAjZW5kaWYKIH0KIAor
LyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfYWNjZXB0X3VzZXJfbWVkaWFfcmVxdWVzdDoKKyAqIEB3
ZWJWaWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAd2ViUmVxdWVzdDogYSAjV2ViS2l0V2ViVXNl
ck1lZGlhUmVxdWVzdAorICogQGF1ZGlvTWVkaWFMaXN0OiBhICNXZWJLaXRXZWJVc2VyTWVkaWFM
aXN0IGNvbnRhaW5pbmcgYXVkaW8gZGV2aWNlcworICogQHZpZGVvTWVkaWFMaXN0OiBhICNXZWJL
aXRXZWJVc2VyTWVkaWFMaXN0IGNvbnRhaW5pbmcgdmlkZW8gZGV2aWNlcworICoKKyAqIFRoaXMg
bWV0aG9kIHNob3VsZCBiZSBjYWxsZWQgYnkgdGhlIGFwcGxpY2F0aW9uIGFmdGVyIHRoZSB1c2Vy
IHNlbGVjdHMKKyAqIGEgbWVkaWEgZGV2aWNlIGFuZCBhY2NlcHRzIGFuIG1lZGlhIHJlcXVlc3QK
KyAqCisgKiBTaW5jZTogMS4xMC4wCisgKiovCit2b2lkIHdlYmtpdF93ZWJfdmlld19hY2NlcHRf
dXNlcl9tZWRpYV9yZXF1ZXN0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFdlYlVzZXJN
ZWRpYVJlcXVlc3QqIHdlYlJlcXVlc3QsIFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGF1ZGlvTWVk
aWFMaXN0LCBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiB2aWRlb01lZGlhTGlzdCkKK3sKKyAgICBn
X3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CisgICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCh3ZWJSZXF1ZXN0KSk7
CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfTElTVChhdWRp
b01lZGlhTGlzdCkpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01F
RElBX0xJU1QodmlkZW9NZWRpYUxpc3QpKTsKKworICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9y
JiBhdWRpb1NvdXJjZXMgPSBjb3JlKGF1ZGlvTWVkaWFMaXN0KTsKKyAgICBNZWRpYVN0cmVhbVNv
dXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzID0gY29yZSh2aWRlb01lZGlhTGlzdCk7CisKKyAgICBm
b3IgKHNpemVfdCBpID0gYXVkaW9Tb3VyY2VzLnNpemUoKSAtIDE7IGkgIT0gKHNpemVfdCkgLTE7
IC0taSkKKyAgICAgICAgaWYgKCF3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9pc19pdGVtX3Nl
bGVjdGVkKGF1ZGlvTWVkaWFMaXN0LCBpKSkKKyAgICAgICAgICAgIGF1ZGlvU291cmNlcy5yZW1v
dmUoaSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gdmlkZW9Tb3VyY2VzLnNpemUoKSAtIDE7IGkg
IT0gKHNpemVfdCkgLTE7IC0taSkKKyAgICAgICAgaWYgKCF3ZWJraXRfd2ViX3VzZXJfbWVkaWFf
bGlzdF9pc19pdGVtX3NlbGVjdGVkKHZpZGVvTWVkaWFMaXN0LCBpKSkKKyAgICAgICAgICAgIHZp
ZGVvU291cmNlcy5yZW1vdmUoaSk7CisKKyAgICBjb3JlKHdlYlJlcXVlc3QpLT5zdWNjZWVkKGF1
ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdf
cmVqZWN0X3VzZXJfbWVkaWFfcmVxdWVzdDoKKyAqIEB3ZWJWaWV3OiBhICNXZWJLaXRXZWJWaWV3
CisgKiBAd2ViUmVxdWVzdDogYSAjV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdAorICoKKyAqIFRo
aXMgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQgYnkgdGhlIGFwcGxpY2F0aW9uIHdoZW4gdGhlIHVz
ZXIgcmVqZWN0ZWQgYSB1c2VyTWVkaWEgcmVxdWVzdC4KKyAqCisgKiBTaW5jZTogMS4xMC4wCisg
KiovCit2b2lkIHdlYmtpdF93ZWJfdmlld19yZWplY3RfdXNlcl9tZWRpYV9yZXF1ZXN0KFdlYktp
dFdlYlZpZXcgKndlYlZpZXcsIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QgKndlYlJlcXVlc3Qp
Cit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX1JFUVVFU1Qod2Vi
UmVxdWVzdCkpOworCisgICAgY29yZSh3ZWJSZXF1ZXN0KS0+ZmFpbCgpOworfQorCiAjaWYgRU5B
QkxFKElDT05EQVRBQkFTRSkKIHZvaWQgd2Via2l0V2ViVmlld0ljb25Mb2FkZWQoV2ViS2l0RmF2
aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgY2hhciogZnJhbWVVUkksIFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5oIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaApp
bmRleCA5Yzg0MjYzYjRiYzA5NDdhNmYwZGY5NWRiMDE3YzUyMzRhMWUyZDllLi5jYTEyZWE1OGIw
NjY5MDdjZmZiMGI4ZWU0MGI0NGQxZjMxZDQzZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmgKQEAgLTMzLDYgKzMzLDggQEAKICNpbmNsdWRlIDx3ZWJraXQvd2Vi
a2l0d2ViZnJhbWUuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uaD4K
ICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaD4KKyNpbmNsdWRlIDx3ZWJraXQv
d2Via2l0d2VidXNlcm1lZGlhbGlzdC5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ1c2Vy
bWVkaWFyZXF1ZXN0Lmg+CiAKIEdfQkVHSU5fREVDTFMKIApAQCAtNDQ5LDYgKzQ1MSwxNiBAQCB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3ZpZXdwb3J0X2F0dHJpYnV0ZXMgICAgICAgICAoV2ViS2l0V2Vi
VmlldyAgICAgICAgKndlYl92aWV3KQogV0VCS0lUX0FQSSBjYWlyb19zdXJmYWNlX3QqCiB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90ICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgKndlYl92aWV3KTsKIAorV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdf
YWNjZXB0X3VzZXJfbWVkaWFfcmVxdWVzdCAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgKndl
YlZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCAqd2ViUmVxdWVzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0ICph
dWRpb01lZGlhTGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0ICp2aWRlb01lZGlhTGlzdCk7CisKK1dFQktJ
VF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X3JlamVjdF91c2VyX21lZGlhX3JlcXVlc3QgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJWaWV3LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QgKndl
YlJlcXVlc3QpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL3dlYmtpdG1hcnNoYWwubGlzdCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdG1h
cnNoYWwubGlzdAppbmRleCBiNzQyODkwNWM4OTgzY2ZjNzVlYzU0NDc0MTMzY2EyOGY2ZDc5NWI0
Li40ZDBiOWQ5ZTMyZDMyY2NkNWM4M2JkMGM1Y2U2ZjNmMmQwOGJjNTliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXRtYXJzaGFsLmxpc3QKKysrIGIvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0bWFyc2hhbC5saXN0CkBAIC0xOCw2ICsxOCw3IEBAIEVOVU06T0JKRUNULE9CSkVD
VAogT0JKRUNUOk9CSkVDVAogT0JKRUNUOlNUUklORyxTVFJJTkcsUE9JTlRFUgogT0JKRUNUOlZP
SUQKK1ZPSUQ6T0JKRUNUCiBWT0lEOk9CSkVDVCxPQkpFQ1QKIFZPSUQ6T0JKRUNULE9CSkVDVCxJ
TlQKIFZPSUQ6T0JKRUNULE9CSkVDVCxPQkpFQ1QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166279</attachid>
            <date>2012-09-28 10:59:36 -0700</date>
            <delta_ts>2012-10-02 11:37:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94373-20120928145852.patch</filename>
            <type>text/plain</type>
            <size>40041</size>
            <attacher name="Danilo de Paula">danilo.eu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5OTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggNzAzMWUyM2E0
ZTQwYzRhMTgzMTE0YmE4NWRlY2JmYmViOTQ4NTU2MS4uYjgyNWQ2N2Y2YjJhYTA5MDUyNTA3NmY4
ZjkxODA2MmFjYTYyMDk4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEy
LTA5LTI4ICBEYW5pbG8gQ2VzYXIgTGVtZXMgZGUgUGF1bGEgIDxkYW5pbG8uY2VzYXJAY29sbGFi
b3JhLmNvLnVrPgorCisgICAgICAgIFtndGtdIGFkZGluZyBtZXRob2RzIGFuZCBzaWduYWxzIGZv
ciB1c2VybWVkaWEgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHdlYmtpdCBhbmQgYnJvd3NlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQzNzMKKworICAg
ICAgICBXaGVuIHRoZSB1c2VyIG1ha2UgYSBnZXRVc2VyTWVkaWEgY2FsbCwgd2VidmlldyB3aWxs
IGVtaXQgYSBzaWdpYWwgKHVzZXItbWVkaWEtcmVxdWVzdGVkKQorICAgICAgICB0byB0aGUgYXBw
bGljYXRpb24gY29udGFpbmluZyB0aGVuIHJlcXVlc3QgaXRzZWxmICh3ZWJraXR3ZWJ1c2VybWVk
aWFyZXF1ZXN0KSBhbmQgdHdvCisgICAgICAgIGxpc3Qgd2l0aCB0aGUgYXZhaWxhYmxlIGF1ZGlv
IGFuZCB2aWRlbyBkZXZpY2VzICh3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0KS4KKworICAgICAgICBU
aGUgYXBwbGljYXRpb24gbXVzdCBzaG93IHRoZSBsaXN0IHRvIHRoZSB1c2VyIGFuZCBhc2sgcGVy
bWlzc2lvbiB0byB1c2Ugb25lIG9mCisgICAgICAgIHRob3NlIGRldmljZXMgKG9yIHJlamVjdCB0
aGUgcmVxdWVzdCkuCisKKyAgICAgICAgSW4gY2FzZSB0aGUgdXNlciBhY2NlcHRzIHRoZSByZXF1
ZXN0LCB0aGUgYXBwbGljYXRpb24gbXVzdCBtYXJrIHRoZSBkZXZpY2UgYXMKKyAgICAgICAgc2Vs
ZWN0ZWQgKHVzaW5nIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X3NlbGVjdF9pdGVtKSBhbmQg
dGhlbiBjYWxsCisgICAgICAgIHdlYmtpdF93ZWJfdmlld19hY2NlcHRfdXNlcl9tZWRpYV9yZXF1
ZXN0IHdoaWNoIHdpbGwgaGFuZGxlIHRoZSByZXF1ZXN0IHByb3Blcmx5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Vc2VyTWVkaWFDbGllbnRHdGsuY3BwOgorICAgICAgICAo
V2ViS2l0OjpVc2VyTWVkaWFDbGllbnRHdGs6OlVzZXJNZWRpYUNsaWVudEd0ayk6CisgICAgICAg
IChXZWJLaXQ6OlVzZXJNZWRpYUNsaWVudEd0azo6cGFnZURlc3Ryb3llZCk6CisgICAgICAgIChX
ZWJLaXQ6OlVzZXJNZWRpYUNsaWVudEd0azo6cmVxdWVzdFVzZXJNZWRpYSk6CisgICAgICAgIChX
ZWJLaXQ6OlVzZXJNZWRpYUNsaWVudEd0azo6Y2FuY2VsVXNlck1lZGlhUmVxdWVzdCk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50R3RrLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFVzZXJNZWRpYUNsaWVudEd0ayk6CisgICAgICAgICogZG9jcy93ZWJr
aXRndGstZG9jcy5zZ21sOgorICAgICAgICAqIGRvY3Mvd2Via2l0Z3RrLXNlY3Rpb25zLnR4dDoK
KyAgICAgICAgKiB3ZWJraXQvd2Via2l0Lmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnVz
ZXJtZWRpYWxpc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0
UHJpdmF0ZSk6CisgICAgICAgICh3ZWJraXRXZWJVc2VyTWVkaWFMaXN0RGlzcG9zZSk6CisgICAg
ICAgICh3ZWJraXRXZWJVc2VyTWVkaWFMaXN0RmluYWxpemUpOgorICAgICAgICAod2Via2l0X3dl
Yl91c2VyX21lZGlhX2xpc3RfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJf
bWVkaWFfbGlzdF9pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dl
dF9sZW5ndGgpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2l0ZW1f
bmFtZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9pc19pdGVtX3NlbGVj
dGVkKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X3NlbGVjdF9pdGVtKToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAoV2Vi
S2l0OjpraXROZXcpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0Lmg6
IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYlVzZXJNZWRpYUxpc3QpOgorICAgICAgICAoX1dl
YktpdFdlYlVzZXJNZWRpYUxpc3RDbGFzcyk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnVz
ZXJtZWRpYWxpc3Rwcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KiB3ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5jcHA6IEFkZGVkLgorICAgICAgICAo
X1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRlKToKKyAgICAgICAgKHdlYmtpdFdlYlVz
ZXJNZWRpYVJlcXVlc3RGaW5hbGl6ZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFf
cmVxdWVzdF9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1
ZXN0X2luaXQpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNf
YXVkaW8pOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNfdmlk
ZW8pOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZ2V0X3NlY3VyaXR5
X29yaWdpbik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAg
ICAgICAgKFdlYktpdDo6a2l0TmV3KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2VidXNlcm1l
ZGlhcmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0
KToKKyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3MpOgorICAgICAgICAq
IHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
d2Vidmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6CisgICAg
ICAgICh3ZWJraXRfd2ViX3ZpZXdfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfYWNj
ZXB0X3VzZXJfbWVkaWFfcmVxdWVzdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcmVqZWN0
X3VzZXJfbWVkaWFfcmVxdWVzdCk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuaDoK
KyAgICAgICAgKiB3ZWJraXRtYXJzaGFsLmxpc3Q6CisKIDIwMTItMDktMjggIEh1YW5nIERvbmdz
dW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgW0dUS10gRW5hYmxlIENT
UyBTaGFkZXJzIGxheW91dCBMYXlvdXRUZXN0cyBvbiBHVEsrCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxl
LmFtCmluZGV4IDViZTllYjU0OGVlMDIzZDE0MGEzNWQxNjYyNDMzZDU4MWJiNzFiODMuLmZiYTg0
YmMwZjEwMmYzYjcyNDliZDJlMzMzZTA4YmRiMTlhOTE0YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2Vm
aWxlLmFtCkBAIC0xNDIsNiArMTQyLDggQEAgd2Via2l0Z3RrX3N0YXRpY19oX2FwaSArPSBcCiAJ
JChzcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lv
bi5oIFwKIAkkKHNyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnJlc291
cmNlLmggXAogCSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0
dGluZ3MuaCBcCisJJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1
c2VybWVkaWFsaXN0LmggXAorCSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2VidXNlcm1lZGlhcmVxdWVzdC5oIFwKIAkkKHNyY2RpcikvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmggXAogCSQoc3JjZGlyKS9Tb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCiAKQEAgLTI3Niw2ICsyNzgsMTAgQEAgd2Vi
a2l0Z3RrX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJw
bHVnaW5kYXRhYmFzZXByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnNldHRpbmdzLmNwcCBcCiAJU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNl
dHRpbmdzcHJpdmF0ZS5oIFwKKwlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNl
cm1lZGlhbGlzdC5jcHAgXAorCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2Vy
bWVkaWFsaXN0cHJpdmF0ZS5oIFwKKwlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dXNlcm1lZGlhcmVxdWVzdC5jcHAgXAorCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vidmlldy5jcHAgXAogCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3cHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93
ZmVhdHVyZXMuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L1VzZXJNZWRpYUNsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9Vc2VyTWVkaWFDbGllbnRHdGsuY3BwCmluZGV4IDM5MTY3NmFmYjVhZjlmMDc1ZWIyNmIw
NjlhYzkzNWNmMGViZjNjYzYuLmMyMmQ2Mjc5ZmVkZmI1ZjlhMWJhZGIzYzhhZjQ1MmMxODQyMmI0
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1VzZXJNZWRp
YUNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVXNl
ck1lZGlhQ2xpZW50R3RrLmNwcApAQCAtMTgsMTkgKzE4LDIyIEBACiAgKgogICovCiAKKwogI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudEd0ay5oIgogCiAjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKLSNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgotI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiVXNlck1lZGlhUmVxdWVzdC5oIgor
CisjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50R3RrLmgiCisKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1
c2VybWVkaWFsaXN0cHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYXJlcXVl
c3Rwcml2YXRlLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotVXNlck1lZGlhQ2xpZW50R3RrOjpVc2VyTWVkaWFDbGllbnRHdGsoKQorVXNlck1l
ZGlhQ2xpZW50R3RrOjpVc2VyTWVkaWFDbGllbnRHdGsoV2ViS2l0V2ViVmlldyAqd2ViVmlldykK
KyAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQogewogfQogCkBAIC00MCwxOSArNDMsMTkgQEAgVXNl
ck1lZGlhQ2xpZW50R3RrOjp+VXNlck1lZGlhQ2xpZW50R3RrKCkKIAogdm9pZCBVc2VyTWVkaWFD
bGllbnRHdGs6OnBhZ2VEZXN0cm95ZWQoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAK
LXZvaWQgVXNlck1lZGlhQ2xpZW50R3RrOjpyZXF1ZXN0VXNlck1lZGlhKFdURjo6UGFzc1JlZlB0
cjxVc2VyTWVkaWFSZXF1ZXN0PiBwcnBSZXF1ZXN0LCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZl
Y3RvciYgYXVkaW9Tb3VyY2UsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2aWRlb1Nv
dXJjZSkKK3ZvaWQgVXNlck1lZGlhQ2xpZW50R3RrOjpyZXF1ZXN0VXNlck1lZGlhKFdURjo6UGFz
c1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBwcnBSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpNZWRp
YVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBXZWJDb3JlOjpNZWRpYVN0
cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IHJlcXVlc3QgPSBwcnBSZXF1ZXN0OworICAg
IGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYlZpZXcsICJ1c2VyLW1lZGlhLXJlcXVlc3RlZCIs
IGtpdE5ldyhyZXF1ZXN0LmdldCgpKSwga2l0TmV3KGF1ZGlvU291cmNlcyksIGtpdE5ldyh2aWRl
b1NvdXJjZXMpKTsKIH0KIAogdm9pZCBVc2VyTWVkaWFDbGllbnRHdGs6OmNhbmNlbFVzZXJNZWRp
YVJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYlZpZXcsICJ1c2VyLW1lZGlhLXJl
cXVlc3QtY2FuY2VsbGVkIiwgMCk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYktpdDsKK30KIAot
I2VuZGlmIC8vIE1FRElBX1NUUkVBTQorI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Vc2VyTWVkaWFDbGll
bnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1VzZXJNZWRpYUNsaWVu
dEd0ay5oCmluZGV4IDAzNjJhNGEzZDAyMzMxNTFjYTAxNTMxNDNkNDU2ZGNjMWE0YTYwMzMuLmNj
NTRkNjkzMTJkZDFhN2RlYmU1ZDdmOTcwMGJmYTE2YzVkOTM3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1VzZXJNZWRpYUNsaWVudEd0ay5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1VzZXJNZWRpYUNsaWVudEd0ay5oCkBAIC0x
NywyNiArMTcsMzkgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICoKICAqLwor
CisKICNpZm5kZWYgVXNlck1lZGlhQ2xpZW50R3RrX2gKICNkZWZpbmUgVXNlck1lZGlhQ2xpZW50
R3RrX2gKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJNZWRpYVN0cmVh
bVNvdXJjZS5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudC5oIgogCit0eXBlZGVmIHN0cnVj
dCBfV2ViS2l0V2ViVmlldyBXZWJLaXRXZWJWaWV3OworCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBVc2VyTWVkaWFSZXF1ZXN0OworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
VXNlck1lZGlhQ2xpZW50R3RrIDogcHVibGljIFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudCB7CiBw
dWJsaWM6Ci0gICAgVXNlck1lZGlhQ2xpZW50R3RrKCk7Ci0gICAgdmlydHVhbCB+VXNlck1lZGlh
Q2xpZW50R3RrKCk7CisgICAgVXNlck1lZGlhQ2xpZW50R3RrKFdlYktpdFdlYlZpZXcqKTsKKyAg
ICB+VXNlck1lZGlhQ2xpZW50R3RrKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3ll
ZCgpOworCiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RVc2VyTWVkaWEoV1RGOjpQYXNzUmVmUHRy
PFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+LCBjb25zdCBXZWJDb3JlOjpNZWRpYVN0cmVhbVNv
dXJjZVZlY3RvciYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJik7CiAg
ICAgdmlydHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlh
UmVxdWVzdCopOworCitwcml2YXRlOgorICAgIFdlYktpdFdlYlZpZXcqIG1fd2ViVmlldzsKIH07
CiAKLX0gLy8gbmFtZXNwYWNlIFdlYktpdAorfQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJraXRndGstZG9j
cy5zZ21sIGIvU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJraXRndGstZG9jcy5zZ21sCmluZGV4
IDcyMTA2NTIyZmI1YmFiYThiMDA5ZmUzNTQ0YjlhZGYyM2ZjYmIxOTguLjVhM2FiYjNmNjcxOGU1
MTVhY2QzMzEwOWUxNGZlOWZlOWEwNGMzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L2RvY3Mvd2Via2l0Z3RrLWRvY3Muc2dtbAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzL3dl
YmtpdGd0ay1kb2NzLnNnbWwKQEAgLTMzLDYgKzMzLDggQEAKICAgICA8eGk6aW5jbHVkZSBocmVm
PSJ4bWwvd2Via2l0ZG93bmxvYWQueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dl
YmtpdHZpZXdwb3J0YXR0cmlidXRlcy54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwv
d2Via2l0aGl0dGVzdHJlc3VsdC54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvd2Vi
a2l0d2VidXNlcm1lZGlhbGlzdC54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvd2Vi
a2l0d2VidXNlcm1lZGlhcmVxdWVzdC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwv
d2Via2l0d2VicGx1Z2luLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC93ZWJraXR3
ZWJwbHVnaW5kYXRhYmFzZS54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvd2Via2l0
c291cGF1dGhkaWFsb2cueG1sIi8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9kb2Nz
L3dlYmtpdGd0ay1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzL3dlYmtpdGd0
ay1zZWN0aW9ucy50eHQKaW5kZXggYjcwN2JmODNkNzExYTBjMWUxNzdhYjY0ZjE0NzZmNGMxZTBm
YmU3YS4uYTA4ZjE0MDNkNjMyYzc2OGUzMDJjNmUwODUwNDdhY2JkYzhiNTJhOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJraXRndGstc2VjdGlvbnMudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL2RvY3Mvd2Via2l0Z3RrLXNlY3Rpb25zLnR4dApAQCAtNDAzLDYgKzQw
Myw3IEBAIFdlYktpdFdlYlZpZXdUYXJnZXRJbmZvCiBXZWJLaXRXZWJWaWV3Vmlld01vZGUKIDxU
SVRMRT5XZWJLaXRXZWJWaWV3PC9USVRMRT4KIFdlYktpdFdlYlZpZXcKK3dlYmtpdF93ZWJfdmll
d19hY2NlcHRfdXNlcl9tZWRpYV9yZXF1ZXN0CiB3ZWJraXRfd2ViX3ZpZXdfY2FuX2NvcHlfY2xp
cGJvYXJkCiB3ZWJraXRfd2ViX3ZpZXdfY2FuX2N1dF9jbGlwYm9hcmQKIHdlYmtpdF93ZWJfdmll
d19jYW5fZ29fYmFjawpAQCAtNDU1LDYgKzQ1Niw3IEBAIHdlYmtpdF93ZWJfdmlld19uZXcKIHdl
YmtpdF93ZWJfdmlld19vcGVuCiB3ZWJraXRfd2ViX3ZpZXdfcGFzdGVfY2xpcGJvYXJkCiB3ZWJr
aXRfd2ViX3ZpZXdfcmVkbword2Via2l0X3dlYl92aWV3X3JlamVjdF91c2VyX21lZGlhX3JlcXVl
c3QKIHdlYmtpdF93ZWJfdmlld19yZWxvYWQKIHdlYmtpdF93ZWJfdmlld19yZWxvYWRfYnlwYXNz
X2NhY2hlCiB3ZWJraXRfd2ViX3ZpZXdfc2VhcmNoX3RleHQKQEAgLTY4Niw2ICs2ODgsNDcgQEAg
V2ViS2l0SWNvbkRhdGFiYXNlUHJpdmF0ZQogPC9TRUNUSU9OPgogCiA8U0VDVElPTj4KKzxGSUxF
PndlYmtpdHdlYnVzZXJtZWRpYWxpc3Q8L0ZJTEU+Cis8VElUTEU+V2ViS2l0V2ViVXNlck1lZGlh
TGlzdDwvVElUTEU+CitXZWJLaXRXZWJVc2VyTWVkaWFMaXN0Cit3ZWJraXRfd2ViX3VzZXJfbWVk
aWFfbGlzdF9nZXRfbGVuZ3RoCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfaXRlbV9u
YW1lCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9pc19pdGVtX3NlbGVjdGVkCit3ZWJraXRf
d2ViX3VzZXJfbWVkaWFfbGlzdF9zZWxlY3RfaXRlbQorPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitX
RUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfTElTVAorV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX0xJ
U1RfQ0xBU1MKK1dFQktJVF9XRUJfVVNFUl9NRURJQV9MSVNUCitXRUJLSVRfV0VCX1VTRVJfTUVE
SUFfTElTVF9DTEFTUworV0VCS0lUX1dFQl9VU0VSX01FRElBX0xJU1RfR0VUX0NMQVNTCitXRUJL
SVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNUCis8U1VCU0VDVElPTiBQcml2YXRlPgorV2ViS2l0
V2ViVXNlck1lZGlhTGlzdFByaXZhdGUKK1dlYktpdFdlYlVzZXJNZWRpYUxpc3RDbGFzcword2Vi
a2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+
Cis8RklMRT53ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0PC9GSUxFPgorPFRJVExFPldlYktpdFdl
YlVzZXJNZWRpYVJlcXVlc3Q8L1RJVExFPgorV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdAord2Vi
a2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNfYXVkaW8KK3dlYmtpdF93ZWJfdXNlcl9t
ZWRpYV9yZXF1ZXN0X3dhbnRzX3ZpZGVvCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9n
ZXRfb3JpZ2luCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dFQktJVF9JU19XRUJfVVNFUl9NRURJ
QV9SRVFVRVNUCitXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfUkVRVUVTVF9DTEFTUworV0VCS0lU
X1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVAorV0VCS0lUX1dFQl9VU0VSX01FRElBX1JFUVVF
U1QKK1dFQktJVF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUX0NMQVNTCitXRUJLSVRfV0VCX1VTRVJf
TUVESUFfUkVRVUVTVF9HRVRfQ0xBU1MKKzxTVUJTRUNUSU9OIFByaXZhdGU+CitXZWJLaXRXZWJV
c2VyTWVkaWFSZXF1ZXN0Q2xhc3MKK1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRlCit3
ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9nZXRfdHlwZQorPC9TRUNUSU9OPgorCis8U0VD
VElPTj4KIDxGSUxFPndlYmtpdGZhdmljb25kYXRhYmFzZTwvRklMRT4KIDxUSVRMRT5XZWJLaXRG
YXZpY29uRGF0YWJhc2U8L1RJVExFPgogV2ViS2l0RmF2aWNvbkRhdGFiYXNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmggYi9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0LmgKaW5kZXggYWE3YjkzZGJkYThjMjZkZTIxZTk4MmQzOWM2MTY1ZmI4YzJm
NWU3Ny4uYmYxNmEyNWU5MmVkNTVmOWIyMDdiNGE3MmJjNjNiYjg5NjlmMWViMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXQuaApAQCAtNTEsNiArNTEsOCBAQAogI2luY2x1ZGUgPHdlYmtpdC93
ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJyZXNv
dXJjZS5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5oPgorI2luY2x1ZGUg
PHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0Lmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtp
dHdlYnVzZXJtZWRpYXJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vidmlldy5o
PgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oPgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjkwOTZmN2RlODY2MTgwYzk4YmRhODZmMjFhOGVlNjVlMDQyOWUzOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFs
aXN0LmNwcApAQCAtMCwwICsxLDE4MiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgQ29s
bGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYg
bm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVT
QQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmgiCisKKyNpbmNsdWRlICJ3ZWJr
aXRnbG9iYWxzcHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYWxpc3Rwcml2
YXRlLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKKworLyoqCisgKiBTRUNU
SU9OOndlYmtpdHdlYnVzZXJtZWRpYWxpc3QKKyAqIEBzaG9ydF9kZXNjcmlwdGlvbjogVXNlck1l
ZGlhIExpc3QKKyAqIEBUaXRsZTogV2ViS2l0V2ViVXNlck1lZGlhTGlzdAorICoKKyAqICNXZWJL
aXRXZWJVc2VyTWVkaWFMaXN0IGNvbnRhaW5zIGEgbGlzdCBvZgorICogYXVkaW8gb3IgdmlkZW8g
c291cmNlcyBmcm9tIGEgV2ViVXNlck1lZGlhUmVxdWVzdAorICoKKyAqIFNpbmNlOiAxLjEwLjAK
KyAqLworCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdHJ1Y3QgX1dlYktpdFdlYlVzZXJN
ZWRpYUxpc3RQcml2YXRlIHsKKyAgICBXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBz
b3VyY2VzOworICAgIFZlY3Rvcjxib29sPiBzb3VyY2VTZWxlY3Rpb25zOworfTsKKworR19ERUZJ
TkVfVFlQRShXZWJLaXRXZWJVc2VyTWVkaWFMaXN0LCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlz
dCwgR19UWVBFX09CSkVDVCkKKworc3RhdGljIHZvaWQgd2Via2l0V2ViVXNlck1lZGlhTGlzdERp
c3Bvc2UoR09iamVjdCogb2JqZWN0KQoreworICAgIFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIHVz
ZXJNZWRpYUxpc3QgPSBXRUJLSVRfV0VCX1VTRVJfTUVESUFfTElTVChvYmplY3QpOworICAgIFdl
YktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlKiBwcml2ID0gdXNlck1lZGlhTGlzdC0+cHJpdjsK
KworICAgIHByaXYtPnNvdXJjZVNlbGVjdGlvbnMuY2xlYXIoKTsKKworICAgIEdfT0JKRUNUX0NM
QVNTKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X3BhcmVudF9jbGFzcyktPmRpc3Bvc2Uob2Jq
ZWN0KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0V2ViVXNlck1lZGlhTGlzdEZpbmFsaXplKEdP
YmplY3QqIG9iamVjdCkKK3sKKyAgICBXRUJLSVRfV0VCX1VTRVJfTUVESUFfTElTVChvYmplY3Qp
LT5wcml2LT5+V2ViS2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGUoKTsKKyAgICBHX09CSkVDVF9D
TEFTUyh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShv
YmplY3QpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9jbGFz
c19pbml0KFdlYktpdFdlYlVzZXJNZWRpYUxpc3RDbGFzcyogbGlzdENsYXNzKQoreworICAgIEdP
YmplY3RDbGFzcyogZ29iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGxpc3RDbGFzcyk7Cisg
ICAgZ29iamVjdF9jbGFzcy0+ZGlzcG9zZSA9IHdlYmtpdFdlYlVzZXJNZWRpYUxpc3REaXNwb3Nl
OworICAgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gd2Via2l0V2ViVXNlck1lZGlhTGlzdEZp
bmFsaXplOworCisgICAgd2Via2l0SW5pdCgpOworCisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2
YXRlKGxpc3RDbGFzcywgc2l6ZW9mKFdlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlKSk7Cit9
CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2luaXQoV2ViS2l0V2Vi
VXNlck1lZGlhTGlzdCogbGlzdCkKK3sKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0
ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShsaXN0LCBXRUJLSVRfVFlQRV9X
RUJfVVNFUl9NRURJQV9MSVNULCBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZSk7CisgICAg
bGlzdC0+cHJpdiA9IHByaXY7CisKKyAgICAvLyBwbGFjZW1lbnQgbmV3IHN5bnRheAorICAgIG5l
dyAocHJpdikgV2ViS2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGUoKTsKK30KKworLyoqCisgKiB3
ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfbGVuZ3RoOgorICogQGxpc3Q6IHRoZSBXZWJL
aXRXZWJVc2VyTWVkaWFMaXN0IGl0c2VsZgorICoKKyAqIFJldHVybnMgdGhlIHNpemUgb2YgdGhl
IGVsZW1lbnRzIGxpc3QuCisgKgorICogUmV0dXJuIHZhbHVlOiBudW1iZXIgb2YgZWxlbWVudHMu
CisgKgorICogU2luY2U6IDEuMTAuMAorICovCitndWludCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFf
bGlzdF9nZXRfbGVuZ3RoKFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGxpc3QpCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX0xJU1QobGlzdCksIDAp
OworCisgICAgcmV0dXJuIGNvcmUobGlzdCkuc2l6ZSgpOworfQorCisKKy8qKgorICogd2Via2l0
X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2l0ZW1fbmFtZToKKyAqIEBsaXN0OiB0aGUgI1dlYktp
dFdlYlVzZXJNZWRpYUxpc3QgaXRzZWxmCisgKiBAaW5kZXg6IHRoZSB3YW50ZWQgZWxlbWVudCBp
bmRleC4KKyAqCisgKiBSZXR1cm5zIHRoZSBkZXZpY2UgbmFtZSBvZiB0aGUgZWxlbWVudC4KKyAq
CisgKiBSZXR1cm4gdmFsdWU6IHRoZSBkZXZpY2UgaWQgb2YgdGhlIEBpbmRleCBnaXZlbiBlbGVt
ZW50LgorICoKKyAqIFNpbmNlOiAxLjEwLjAKKyAqLworY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJf
dXNlcl9tZWRpYV9saXN0X2dldF9pdGVtX25hbWUoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCogbGlz
dCwgZ3VpbnQgaW5kZXgpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9VU0VSX01FRElBX0xJU1QobGlzdCksIDApOworCisgICAgV2ViQ29yZTo6TWVkaWFTdHJlYW1T
b3VyY2VWZWN0b3ImIHNvdXJjZXMgPSBjb3JlKGxpc3QpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKGluZGV4IDwgc291cmNlcy5zaXplKCksIDApOworCisgICAgcmV0dXJuIGdfc3RyZHVwKHNv
dXJjZXNbaW5kZXhdLT5uYW1lKCkudXRmOCgpLmRhdGEoKSk7Cit9CisKKy8qKgorICogd2Via2l0
X3dlYl91c2VyX21lZGlhX2xpc3RfaXNfaXRlbV9zZWxlY3RlZDoKKyAqIEBsaXN0OiB0aGUgI1dl
YktpdFdlYlVzZXJNZWRpYUxpc3QgaXRzZWxmCisgKiBAaW5kZXg6IHRoZSB3YW50ZWQgZWxlbWVu
dCBpbmRleC4KKyAqCisgKiBJbmRpY2F0ZSBpZiBhIGRldmljZSBpcyBtYXJrZWQgYXMgc2VsZWN0
ZWQuCisgKgorICogUmV0dXJuIHZhbHVlOiBUcnVlIGlmIHRoZSBkZXZpY2UgcmVwcmVzZW50ZWQg
YnkgQGluZGV4IGlzIG1hcmtlZCBhcyBzZWxlY3RlZC4KKyAqCisgKiBTaW5jZTogMS4xMC4wCisg
Ki8KK2dib29sZWFuIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2lzX2l0ZW1fc2VsZWN0ZWQo
V2ViS2l0V2ViVXNlck1lZGlhTGlzdCogbGlzdCwgZ3VpbnQgaW5kZXgpCit7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX0xJU1QobGlzdCksIEZBTFNF
KTsKKworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGluZGV4IDwgY29yZShsaXN0KS5zaXplKCks
IEZBTFNFKTsKKworICAgIHJldHVybiBsaXN0LT5wcml2LT5zb3VyY2VTZWxlY3Rpb25zW2luZGV4
XTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9zZWxlY3RfaXRlbToK
KyAqIEBsaXN0OiB0aGUgI1dlYktpdFdlYlVzZXJNZWRpYUxpc3QgaXRzZWxmCisgKiBAaW5kZXg6
IHRoZSB3YW50ZWQgZWxlbWVudCBpbmRleC4KKyAqCisgKiBNYXJrIGEgZGV2aWNlIGFzIHNlbGVj
dGVlZC4KKyAqCisgKiBTaW5jZTogMS4xMC4wCisgKi8KK3ZvaWQgd2Via2l0X3dlYl91c2VyX21l
ZGlhX2xpc3Rfc2VsZWN0X2l0ZW0oV2ViS2l0V2ViVXNlck1lZGlhTGlzdCogbGlzdCwgZ3VpbnQg
aW5kZXgpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFf
TElTVChsaXN0KSk7CisKKyAgICBnX3JldHVybl9pZl9mYWlsKGluZGV4IDwgY29yZShsaXN0KS5z
aXplKCkpOworCisgICAgbGlzdC0+cHJpdi0+c291cmNlU2VsZWN0aW9uc1tpbmRleF0gPSBUUlVF
OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VW
ZWN0b3ImIGNvcmUoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCogbGlzdCkKK3sKKyAgICByZXR1cm4g
bGlzdC0+cHJpdi0+c291cmNlczsKK30KKworV2ViS2l0V2ViVXNlck1lZGlhTGlzdCoga2l0TmV3
KGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2VzKQoreworICAg
IFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIHdlYkxpc3QgPSBXRUJLSVRfV0VCX1VTRVJfTUVESUFf
TElTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfTElTVCwgTlVMTCkp
OworICAgIHdlYkxpc3QtPnByaXYtPnNvdXJjZXMgPSBzb3VyY2VzOworICAgIHdlYkxpc3QtPnBy
aXYtPnNvdXJjZVNlbGVjdGlvbnMuZmlsbChGQUxTRSwgc291cmNlcy5zaXplKCkpOworCisgICAg
cmV0dXJuIHdlYkxpc3Q7Cit9CisKK30KKworI2VuZGlmIC8qIEVOQUJMRShNRURJQV9TVFJFQU0p
ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1l
ZGlhbGlzdC5oIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxp
c3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42YjVjYzEyZjE2N2U1Njk4MzA3N2MwNGYxNGNhNTliNjVmYWRhOGY1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVz
ZXJtZWRpYWxpc3QuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAx
MiBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw
MSAgVVNBCisgKi8KKworCisjaWZuZGVmIHdlYmtpdHdlYnVzZXJtZWRpYWxpc3RfaAorI2RlZmlu
ZSB3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0X2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Cisj
aW5jbHVkZSA8Z2xpYi5oPgorCisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRlZmluZXMuaD4KKwor
R19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1Qg
ICAgICAgICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X3R5cGUoKSkKKyNk
ZWZpbmUgV0VCS0lUX1dFQl9VU0VSX01FRElBX0xJU1Qob2JqKSAgICAgICAgICAgICAgIChHX1RZ
UEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFf
TElTVCwgV2ViS2l0V2ViVXNlck1lZGlhTGlzdCkpCisjZGVmaW5lIFdFQktJVF9XRUJfVVNFUl9N
RURJQV9MSVNUX0NMQVNTKGtsYXNzKSAgICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGts
YXNzKSwgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1QsIFdlYktpdFdlYlVzZXJNZWRp
YUxpc3RDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9MSVNUKG9iaikg
ICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBF
X1dFQl9VU0VSX01FRElBX0xJU1QpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFf
TElTVF9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBX
RUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNUKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9VU0VS
X01FRElBX0xJU1RfR0VUX0NMQVNTKG9iaikgICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNT
KChvYmopLCAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfTElTVCwgV2ViS2l0V2ViVXNlck1l
ZGlhTGlzdENsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRpYUxpc3Qg
V2ViS2l0V2ViVXNlck1lZGlhTGlzdDsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVk
aWFMaXN0Q2xhc3MgV2ViS2l0V2ViVXNlck1lZGlhTGlzdENsYXNzOwordHlwZWRlZiBzdHJ1Y3Qg
X1dlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlIFdlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2
YXRlOworCitzdHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRpYUxpc3QgeworICAgIEdPYmplY3QgcGFy
ZW50X2luc3RhbmNlOworICAgIFdlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlICpwcml2Owor
fTsKKworc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0Q2xhc3MgeworICAgIEdPYmplY3RD
bGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfd2ViX3Vz
ZXJfbWVkaWFfbGlzdF9nZXRfdHlwZSAodm9pZCkgR19HTlVDX0NPTlNUOworCitXRUJLSVRfQVBJ
IGd1aW50Cit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfbGVuZ3RoICAgICAgICAoV2Vi
S2l0V2ViVXNlck1lZGlhTGlzdCAqbGlzdCk7CisKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgor
d2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2l0ZW1fbmFtZSAgICAgKFdlYktpdFdlYlVz
ZXJNZWRpYUxpc3QgKmxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ3VpbnQgaW5kZXgpOworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3dlYl91
c2VyX21lZGlhX2xpc3RfaXNfaXRlbV9zZWxlY3RlZCAoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCAq
bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWlu
dCBpbmRleCk7CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X3Nl
bGVjdF9pdGVtICAgICAgIChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0ICpsaXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IGluZGV4KTsKKworR19F
TkRfREVDTFMKKworI2VuZGlmIC8qIHdlYmtpdHdlYnVzZXJtZWRpYWxpc3RfaCAqLwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3Rwcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdHBy
aXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xMTk4Y2FlY2ZiNmNlZjdjODBhYjk2YWY1NDM2ZjUzYTUzYzk3
YmQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnVzZXJtZWRpYWxpc3Rwcml2YXRlLmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqICBDb3B5cmln
aHQgKEMpIDIwMTIgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg
IDAyMTEwLTEzMDEgIFVTQQorICovCisKKworI2lmbmRlZiB3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0
cHJpdmF0ZV9oCisjZGVmaW5lIHdlYmtpdHdlYnVzZXJtZWRpYWxpc3Rwcml2YXRlX2gKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgor
I2luY2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYWxpc3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK1dlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBjb3JlKFdlYktpdFdlYlVzZXJN
ZWRpYUxpc3QqKTsKK1dlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGtpdE5ldyhjb25zdCBXZWJDb3Jl
OjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYpOworCit9CisKKyNlbmRpZiAvKiBFTkFCTEUoTUVE
SUFfU1RSRUFNKSAqLworCisjZW5kaWYgLyogd2Via2l0d2VidXNlcm1lZGlhbGlzdHByaXZhdGVf
aCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJt
ZWRpYXJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJt
ZWRpYXJlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0ZDRkYTA1ODViYTQ3Y2JlOTUxYjM5MWUxNWM3
YjlkYjY2NmY3NGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5jcHAKQEAgLTAsMCArMSwxNTAgQEAKKy8qCisgKiAg
Q29weXJpZ2h0IChDKSAyMDEyIENvbGxhYm9yYSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAq
ICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0
b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFy
ZXF1ZXN0LmgiCisKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCisjaW5jbHVkZSAiVXNlck1lZGlhUmVxdWVzdC5oIgorI2luY2x1ZGUgIndlYmtpdGdsb2Jh
bHNwcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0c2VjdXJpdHlvcmlnaW5wcml2YXRlLmgiCisj
aW5jbHVkZSAid2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGUuaCIKKyNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CisKKy8qKgorICogU0VDVElPTjp3ZWJraXR3ZWJ1c2VybWVkaWFy
ZXF1ZXN0CisgKiBAc2hvcnRfZGVzY3JpcHRpb246IFRoZSBXZWJLaXQncyBVc2VyTWVkaWEgUmVx
dWVzdC4KKyAqIEBUaXRsZTogV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdAorICoKKyAqIFRoaXMg
b2JqZWN0IGNvbnRhaW5zIHRoZSBpbmZvcm1hdGlvbiBvZiBhIG1lZGlhIHJlcXVlc3QuCisgKiBJ
dCBjYW4gYmUgdXNlZCB0byBjaGVjayBpZiB0aGUgcmVxdWVzdCBpcyBhc2tpbmcgZm9yIGF1ZGlv
IGFuZC9vciB2aWRlby4KKyAqCisgKiBTaW5jZTogMS4xMC4wCisgKi8KKwordXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKKworc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSB7
CisgICAgUmVmUHRyPFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+IHVzZXJNZWRpYVJlcXVlc3Q7
Cit9OworCitHX0RFRklORV9UWVBFKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QsIHdlYmtpdF93
ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0LCBHX1RZUEVfT0JKRUNUKQorCitzdGF0aWMgdm9pZCB3ZWJr
aXRXZWJVc2VyTWVkaWFSZXF1ZXN0RmluYWxpemUoR09iamVjdCAqb2JqZWN0KQoreworICAgIFdF
QktJVF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUKG9iamVjdCktPnByaXYtPn5XZWJLaXRXZWJVc2Vy
TWVkaWFSZXF1ZXN0UHJpdmF0ZSgpOworCisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl91
c2VyX21lZGlhX3JlcXVlc3RfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKK30KKwor
c3RhdGljIHZvaWQgd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfY2xhc3NfaW5pdChXZWJL
aXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3MqIHJlcXVlc3RDbGFzcykKK3sKKyAgICBHT2JqZWN0
Q2xhc3MqIGdvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOworICAg
IGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gd2Via2l0V2ViVXNlck1lZGlhUmVxdWVzdEZpbmFs
aXplOworCisgICAgd2Via2l0SW5pdCgpOworCisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRl
KHJlcXVlc3RDbGFzcywgc2l6ZW9mKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRlKSk7
Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2luaXQoV2Vi
S2l0V2ViVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBXZWJLaXRXZWJVc2VyTWVk
aWFSZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShyZXF1
ZXN0LCBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFVRVNULCBXZWJLaXRXZWJVc2VyTWVk
aWFSZXF1ZXN0UHJpdmF0ZSk7CisgICAgcmVxdWVzdC0+cHJpdiA9IHByaXY7CisKKyAgICBuZXcg
KHByaXYpIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRlKCk7Cit9CisKKy8qKgorICog
d2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNfYXVkaW86CisgKiBAcmVxdWVzdDog
dGhlICNXZWJLaXRVc2VyTWVkaWFSZXF1ZXN0IGl0c2VsZi4KKyAqCisgKiBJbmRpY2F0ZXMgdGhl
IGNvbnRlbnQgb2YgYW4gVXNlck1lZGlhUmVxdWVzdC4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IFRy
dWUgaWYgdGhlIHJlcXVlc3QgY29udGFpbnMgYW4gYXVkaW8gcmVxdWVzdC4KKyAqCisgKiBTaW5j
ZTogMS4xMC4wCisgKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dh
bnRzX2F1ZGlvKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX1JFUVVFU1QocmVxdWVz
dCksIEZBTFNFKTsKKworICAgIHJldHVybiBjb3JlKHJlcXVlc3QpLT5hdWRpbygpOworfQorCisv
KioKKyAqIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRzX3ZpZGVvOgorICogQHJl
cXVlc3Q6IHRoZSAjV2ViS2l0VXNlck1lZGlhUmVxdWVzdCBpdHNlbGYuCisgKgorICogSW5kaWNh
dGVzIHRoZSBjb250ZW50IG9mIGFuIFVzZXJNZWRpYVJlcXVlc3QuCisgKgorICogUmV0dXJuIHZh
bHVlOiBUcnVlIGlmIHRoZSByZXF1ZXN0IGNvbnRhaW5zIGEgdmlkZW8gcmVxdWVzdC4KKyAqCisg
KiBTaW5jZTogMS4xMC4wCisgKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1
ZXN0X3dhbnRzX3ZpZGVvKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCit7Cisg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX1JFUVVFU1Qo
cmVxdWVzdCksIEZBTFNFKTsKKworICAgIHJldHVybiBjb3JlKHJlcXVlc3QpLT52aWRlbygpOwor
fQorCisvKioKKyAqIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2dldF9vcmlnaW46Cisg
KiBAcmVxdWVzdDogdGhlICNXZWJLaXRVc2VyTWVkaWFSZXF1ZXN0IGl0c2VsZi4KKyAqCisgKiBS
ZXR1cm5zIHRoZSBzZWN1cml0eSBvcmlnaW4gb2YgdGhlIE1lZGlhIFJlcXVlc3QuCisgKgorICog
UmV0dXJuIHZhbHVlOiAodHJhbnNmZXIgbm9uZSk6IHRoZSBzZWN1cml0eSBvcmlnaW4gb2YgdGhl
IG1lZGlhIHJlcXVlc3QuCisgKgorICogU2luY2U6IDEuMTAuMAorICovCitXZWJLaXRTZWN1cml0
eU9yaWdpbiogd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZ2V0X3NlY3VyaXR5X29yaWdp
bihXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9SRVFVRVNUKHJlcXVlc3QpLCAwKTsK
KworICAgIHJldHVybiBraXQoY29yZShyZXF1ZXN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5zZWN1cml0eU9yaWdpbigpKTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNvcmU6
OlVzZXJNZWRpYVJlcXVlc3QqIGNvcmUoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCogcmVxdWVz
dCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFf
UkVRVUVTVChyZXF1ZXN0KSwgMCk7CisKKyAgICByZXR1cm4gcmVxdWVzdC0+cHJpdi0+dXNlck1l
ZGlhUmVxdWVzdC5nZXQoKTsKK30KKworV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCoga2l0TmV3
KFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwocmVxdWVzdCwgMCk7CisKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiB3
ZWJSZXF1ZXN0ID0gV0VCS0lUX1dFQl9VU0VSX01FRElBX1JFUVVFU1QoZ19vYmplY3RfbmV3KFdF
QktJVF9UWVBFX1dFQl9VU0VSX01FRElBX1JFUVVFU1QsIE5VTEwpKTsKKyAgICB3ZWJSZXF1ZXN0
LT5wcml2LT51c2VyTWVkaWFSZXF1ZXN0ID0gcmVxdWVzdDsKKworICAgIHJldHVybiB3ZWJSZXF1
ZXN0OworfQorCit9CisKKyNlbmRpZiAvKiBFTkFCTEUoTUVESUFfU1RSRUFNKSAqLwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Qu
aCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2UwNzg4OWRlNmU2Y2RjMGEwYzRlZjA0NmE1ZGQzNWU3Y2NiMmNhNQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVk
aWFyZXF1ZXN0LmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIg
Q29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEg
IFVTQQorICovCisKKworI2lmbmRlZiB3ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0X2gKKyNkZWZp
bmUgd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdF9oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5o
PgorI2luY2x1ZGUgPGdsaWIuaD4KKworI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZpbmVzLmg+
CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9S
RVFVRVNUICAgICAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2dldF90eXBl
KCkpCisjZGVmaW5lIFdFQktJVF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUKG9iaikgICAgICAgICAg
ICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9VU0VS
X01FRElBX1JFUVVFU1QsIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QpKQorI2RlZmluZSBXRUJL
SVRfV0VCX1VTRVJfTUVESUFfUkVRVUVTVF9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19D
TEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFVRVNULCBX
ZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1VT
RVJfTUVESUFfUkVRVUVTVChvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBF
KChvYmopLCBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFVRVNUKSkKKyNkZWZpbmUgV0VC
S0lUX0lTX1dFQl9VU0VSX01FRElBX1JFUVVFU1RfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tf
Q0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCkp
CisjZGVmaW5lIFdFQktJVF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUX0dFVF9DTEFTUyhvYmopICAo
R19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01F
RElBX1JFUVVFU1QsIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RDbGFzcykpCisKK3R5cGVkZWYg
c3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0IFdlYktpdFdlYlVzZXJNZWRpYVJlcXVl
c3Q7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdENsYXNzIFdlYktp
dFdlYlVzZXJNZWRpYVJlcXVlc3RDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJVc2Vy
TWVkaWFSZXF1ZXN0UHJpdmF0ZSBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZTsKKwor
c3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0IHsKKyAgICBHT2JqZWN0IHBhcmVudF9p
bnN0YW5jZTsKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSAqcHJpdjsKK307
CisKK3N0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdENsYXNzIHsKKyAgICBHT2JqZWN0
Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dlYl91
c2VyX21lZGlhX3JlcXVlc3RfZ2V0X3R5cGUgKHZvaWQpIEdfR05VQ19DT05TVDsKKworV0VCS0lU
X0FQSSBnYm9vbGVhbgord2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNfYXVkaW8g
ICAgICAgICAgICAgIChXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0ICpyZXF1ZXN0KTsKKworV0VC
S0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNfdmlk
ZW8gICAgICAgICAgICAgIChXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0ICpyZXF1ZXN0KTsKKwor
V0VCS0lUX0FQSSBXZWJLaXRTZWN1cml0eU9yaWdpbioKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9y
ZXF1ZXN0X2dldF9vcmlnaW4gICAgICAgICAgICAgICAoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVz
dCAqcmVxdWVzdCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiB3ZWJraXR3ZWJ1c2VybWVk
aWFyZXF1ZXN0X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTgyZmE3MWFj
NjhjZjFhMTFlNDEyZDc1NjJkYWNiYjczNjRmNjJmZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZS5oCkBA
IC0wLDAgKzEsNDAgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIENvbGxhYm9yYSBMdGQu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUg
dG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisK
KyNpZm5kZWYgd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGVfaAorI2RlZmluZSB3ZWJr
aXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZV9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorCisjaW5jbHVkZSAid2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitzdHJ1Y3QgVXNlck1lZGlhUmVxdWVzdDsKK30KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK1dlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqIGNvcmUoV2ViS2l0V2ViVXNlck1lZGlh
UmVxdWVzdCopOworV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCoga2l0TmV3KFdlYkNvcmU6OlVz
ZXJNZWRpYVJlcXVlc3QqKTsKKworfQorCisjZW5kaWYgLyogRU5BQkxFKE1FRElBX1NUUkVBTSkg
Ki8KKworI2VuZGlmIC8qIHdlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlX2ggKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCA1NTUxNzFhYTFj
YjZkZTMzM2EwY2Y2M2NiM2FhMzk0ZjM5NGEwNDBkLi5mY2E5OTM5YmU5ZDBiOTRhMzA2YTEwOGZi
MWQ5ZTgzYzFjNmY2YzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZp
ZXcuY3BwCkBAIC04Myw2ICs4Myw3IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNp
bmNsdWRlICJVc2VyTWVkaWFDbGllbnRHdGsuaCIKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9N
RG9jdW1lbnRQcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0ZG93bmxvYWQuaCIKICNpbmNsdWRl
ICJ3ZWJraXRkb3dubG9hZHByaXZhdGUuaCIKQEAgLTEwMywxMCArMTA0LDEyIEBACiAjaW5jbHVk
ZSAid2Via2l0d2ViaGlzdG9yeWl0ZW1wcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0d2ViaW5z
cGVjdG9yLmgiCiAjaW5jbHVkZSAid2Via2l0d2ViaW5zcGVjdG9ycHJpdmF0ZS5oIgorI2luY2x1
ZGUgIndlYmtpdHdlYnBsdWdpbmRhdGFiYXNlcHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdHdl
YnBvbGljeWRlY2lzaW9uLmgiCiAjaW5jbHVkZSAid2Via2l0d2VicmVzb3VyY2UuaCIKICNpbmNs
dWRlICJ3ZWJraXR3ZWJzZXR0aW5nc3ByaXZhdGUuaCIKLSNpbmNsdWRlICJ3ZWJraXR3ZWJwbHVn
aW5kYXRhYmFzZXByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJp
dmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlLmgiCiAj
aW5jbHVkZSAid2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2
aWV3cHJpdmF0ZS5oIgogI2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CkBAIC0xMTksNiArMTIy
LDcgQEAKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEd0ay5oIgogI2VuZGlmCiAK
KwogLyoqCiAgKiBTRUNUSU9OOndlYmtpdHdlYnZpZXcKICAqIEBzaG9ydF9kZXNjcmlwdGlvbjog
VGhlIGNlbnRyYWwgY2xhc3Mgb2YgdGhlIFdlYktpdEdUSysgQVBJCkBAIC0yMTAsNiArMjE0LDgg
QEAgZW51bSB7CiAgICAgRURJVElOR19FTkRFRCwKICAgICBWSUVXUE9SVF9BVFRSSUJVVEVTX1JF
Q09NUFVURV9SRVFVRVNURUQsCiAgICAgVklFV1BPUlRfQVRUUklCVVRFU19DSEFOR0VELAorICAg
IFVTRVJfTUVESUFfUkVRVUVTVEVELAorICAgIFVTRVJfTUVESUFfUkVRVUVTVF9DQU5DRUxMRUQs
CiAgICAgUkVTT1VSQ0VfUkVTUE9OU0VfUkVDRUlWRUQsCiAgICAgUkVTT1VSQ0VfTE9BRF9GSU5J
U0hFRCwKICAgICBSRVNPVVJDRV9DT05URU5UX0xFTkdUSF9SRUNFSVZFRCwKQEAgLTI3MjQsNiAr
MjczMCw1MiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRX
ZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgICAgICAgIFdFQktJVF9UWVBFX1ZJRVdQ
T1JUX0FUVFJJQlVURVMpOwogCiAgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6dXNlci1t
ZWRpYS1yZXF1ZXN0ZWQ6CisgICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IHdoaWNoIHJlY2Vp
dmVkIHRoZSBzaWduYWwKKyAgICAgKiBAcmVxdWVzdDogdGhlICNXZWJLaXRXZWJVc2VyTWVkaWFS
cXVlc3QgYXR0cmlidXRlIHdoaWNoIGdlbmVyYXRlZCB0aGUgcmVxdWVzdC4KKyAgICAgKiBAYXVk
aW9MaXN0OiBhICNXZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGNvbnRhaW5pbmcgdGhlIGF2YWlsYWJs
ZSBhdWRpbyBtZWRpYSBvcHRpb25zLgorICAgICAqIEB2aWRlb0xpc3Q6IGEgI1dlYktpdFdlYlVz
ZXJNZWRpYUxpc3QgY29udGFpbmluZyB0aGUgYXZhaWxhYmxlIHZpZGVvIG1lZGlhIG9wdGlvbnMu
CisgICAgICoKKyAgICAgKiBXaGVuIHRoZSBhcHBsaWNhdGlvbiByZXF1ZXN0IHVzZXJNZWRpYSwg
dGhpcyBzaWduYWwgd2lsbCBiZSBlbWl0ZWQgd2l0aCB0aGUgcmVxdWVzdAorICAgICAqIGluZm9y
bWF0aW9uIGFuZCB0aGUgYXZhaWxhYmxlIG9wdGlvbnMgdG8gYmUgc2VsZWN0ZWQuCisgICAgICoK
KyAgICAgKiBUaGVuIHRoZSB1c2VyIGlzIGV4cGVjdGVkIHRvIGNhbGwgZWl0aGVyICN3ZWJraXRf
d2ViX3ZpZXdfYWNjZXB0X3VzZXJfbWVkaWFfcmVxdWVzdCgpIG9yCisgICAgICogd2Via2l0X3dl
Yl92aWV3X3JlamVjdF91c2VyX21lZGlhX3JlcXVlc3QoKSB0byBhY2NlcHQgb3IgcmVqZWN0IHRo
ZSByZXF1ZXN0LgorICAgICAqCisgICAgICogU2luY2U6IDEuMTAuMAorICAgICAqLworICAgIHdl
YmtpdF93ZWJfdmlld19zaWduYWxzW1VTRVJfTUVESUFfUkVRVUVTVEVEXSA9IGdfc2lnbmFsX25l
dygidXNlci1tZWRpYS1yZXF1ZXN0ZWQiLAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mo
d2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAgICAg
ICAgMCwKKyAgICAgICAgICAgIDAsIDAsCisgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9WT0lE
X19PQkpFQ1RfT0JKRUNUX09CSkVDVCwKKyAgICAgICAgICAgIEdfVFlQRV9OT05FLCAzLAorICAg
ICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCwKKyAgICAgICAgICAg
IFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1QsCisgICAgICAgICAgICBXRUJLSVRfVFlQ
RV9XRUJfVVNFUl9NRURJQV9MSVNUKTsKKworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmll
dzo6dXNlci1tZWRpYS1yZXF1ZXN0LWNhbmNlbGxlZDoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSBv
YmplY3Qgd2hpY2ggcmVjZWl2ZWQgdGhlIHNpZ25hbAorICAgICAqIEByZXF1ZXN0OiB0aGUgI1dl
YktpdFdlYlVzZXJNZWRpYVJxdWVzdCBpdHNlbGYKKyAgICAgKgorICAgICAqIFRoaXMgc2lnbmFs
IHdpbGwgYmUgZW1pdGVkIHdoZW4gdGhlIHVzZXIgY2FuY2VsZWQgaXRzIHVzZXJNZWRpYSByZXF1
ZXN0LgorICAgICAqCisgICAgICogU2luY2U6IDEuMTAuMAorICAgICAqLworICAgIHdlYmtpdF93
ZWJfdmlld19zaWduYWxzW1VTRVJfTUVESUFfUkVRVUVTVF9DQU5DRUxMRURdID0gZ19zaWduYWxf
bmV3KCJ1c2VyLW1lZGlhLXJlcXVlc3QtY2FuY2VsbGVkIiwKKyAgICAgICAgICAgIEdfVFlQRV9G
Uk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwK
KyAgICAgICAgICAgIDAsCisgICAgICAgICAgICAwLCAwLAorICAgICAgICAgICAgd2Via2l0X21h
cnNoYWxfVk9JRF9fT0JKRUNULAorICAgICAgICAgICAgR19UWVBFX05PTkUsIDEsCisgICAgICAg
ICAgICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFVRVNUKTsKKworCisgICAgLyoqCiAg
ICAgICogV2ViS2l0V2ViVmlldzo6ZW50ZXJpbmctZnVsbHNjcmVlbjoKICAgICAgKiBAd2ViX3Zp
ZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQuCiAg
ICAgICogQGVsZW1lbnQ6IHRoZSAjV2ViS2l0RE9NSFRNTEVsZW1lbnQgd2hpY2ggaGFzIHJlcXVl
c3RlZCBmdWxsIHNjcmVlbiBkaXNwbGF5LgpAQCAtMzYyOSw3ICszNjgxLDcgQEAgc3RhdGljIHZv
aWQgd2Via2l0X3dlYl92aWV3X2luaXQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICNlbmRpZgog
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBwcml2LT51c2VyTWVkaWFDbGllbnQgPSBh
ZG9wdFB0cihuZXcgVXNlck1lZGlhQ2xpZW50R3RrKTsKKyAgICBwcml2LT51c2VyTWVkaWFDbGll
bnQgPSBhZG9wdFB0cihuZXcgVXNlck1lZGlhQ2xpZW50R3RrKHdlYlZpZXcpKTsKICAgICBXZWJD
b3JlOjpwcm92aWRlVXNlck1lZGlhVG8ocHJpdi0+Y29yZVBhZ2UsIHByaXYtPnVzZXJNZWRpYUNs
aWVudC5nZXQoKSk7CiAjZW5kaWYKIApAQCAtNTMyNSw2ICs1Mzc3LDU2IEBAIHZvaWQgd2ViVmll
d0V4aXRGdWxsc2NyZWVuKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAjZW5kaWYKIH0KIAorLyoq
CisgKiB3ZWJraXRfd2ViX3ZpZXdfYWNjZXB0X3VzZXJfbWVkaWFfcmVxdWVzdDoKKyAqIEB3ZWJW
aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAd2ViUmVxdWVzdDogYSAjV2ViS2l0V2ViVXNlck1l
ZGlhUmVxdWVzdAorICogQGF1ZGlvTWVkaWFMaXN0OiBhICNXZWJLaXRXZWJVc2VyTWVkaWFMaXN0
IGNvbnRhaW5pbmcgYXVkaW8gZGV2aWNlcworICogQHZpZGVvTWVkaWFMaXN0OiBhICNXZWJLaXRX
ZWJVc2VyTWVkaWFMaXN0IGNvbnRhaW5pbmcgdmlkZW8gZGV2aWNlcworICoKKyAqIFRoaXMgbWV0
aG9kIHNob3VsZCBiZSBjYWxsZWQgYnkgdGhlIGFwcGxpY2F0aW9uIGFmdGVyIHRoZSB1c2VyIHNl
bGVjdHMKKyAqIGEgbWVkaWEgZGV2aWNlIGFuZCBhY2NlcHRzIGFuIG1lZGlhIHJlcXVlc3QKKyAq
CisgKiBTaW5jZTogMS4xMC4wCisgKiovCit2b2lkIHdlYmtpdF93ZWJfdmlld19hY2NlcHRfdXNl
cl9tZWRpYV9yZXF1ZXN0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFdlYlVzZXJNZWRp
YVJlcXVlc3QqIHdlYlJlcXVlc3QsIFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGF1ZGlvTWVkaWFM
aXN0LCBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiB2aWRlb01lZGlhTGlzdCkKK3sKKyAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CisgICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCh3ZWJSZXF1ZXN0KSk7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfTElTVChhdWRpb01l
ZGlhTGlzdCkpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElB
X0xJU1QodmlkZW9NZWRpYUxpc3QpKTsKKworICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBh
dWRpb1NvdXJjZXMgPSBjb3JlKGF1ZGlvTWVkaWFMaXN0KTsKKyAgICBNZWRpYVN0cmVhbVNvdXJj
ZVZlY3RvciYgdmlkZW9Tb3VyY2VzID0gY29yZSh2aWRlb01lZGlhTGlzdCk7CisKKyAgICBmb3Ig
KHNpemVfdCBpID0gYXVkaW9Tb3VyY2VzLnNpemUoKSAtIDE7IGkgIT0gKHNpemVfdCkgLTE7IC0t
aSkKKyAgICAgICAgaWYgKCF3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9pc19pdGVtX3NlbGVj
dGVkKGF1ZGlvTWVkaWFMaXN0LCBpKSkKKyAgICAgICAgICAgIGF1ZGlvU291cmNlcy5yZW1vdmUo
aSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gdmlkZW9Tb3VyY2VzLnNpemUoKSAtIDE7IGkgIT0g
KHNpemVfdCkgLTE7IC0taSkKKyAgICAgICAgaWYgKCF3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlz
dF9pc19pdGVtX3NlbGVjdGVkKHZpZGVvTWVkaWFMaXN0LCBpKSkKKyAgICAgICAgICAgIHZpZGVv
U291cmNlcy5yZW1vdmUoaSk7CisKKyAgICBjb3JlKHdlYlJlcXVlc3QpLT5zdWNjZWVkKGF1ZGlv
U291cmNlcywgdmlkZW9Tb3VyY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfcmVq
ZWN0X3VzZXJfbWVkaWFfcmVxdWVzdDoKKyAqIEB3ZWJWaWV3OiBhICNXZWJLaXRXZWJWaWV3Cisg
KiBAd2ViUmVxdWVzdDogYSAjV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdAorICoKKyAqIFRoaXMg
bWV0aG9kIHNob3VsZCBiZSBjYWxsZWQgYnkgdGhlIGFwcGxpY2F0aW9uIHdoZW4gdGhlIHVzZXIg
cmVqZWN0ZWQgYSB1c2VyTWVkaWEgcmVxdWVzdC4KKyAqCisgKiBTaW5jZTogMS4xMC4wCisgKiov
Cit2b2lkIHdlYmtpdF93ZWJfdmlld19yZWplY3RfdXNlcl9tZWRpYV9yZXF1ZXN0KFdlYktpdFdl
YlZpZXcgKndlYlZpZXcsIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QgKndlYlJlcXVlc3QpCit7
CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX1JFUVVFU1Qod2ViUmVx
dWVzdCkpOworCisgICAgY29yZSh3ZWJSZXF1ZXN0KS0+ZmFpbCgpOworfQorCiAjaWYgRU5BQkxF
KElDT05EQVRBQkFTRSkKIHZvaWQgd2Via2l0V2ViVmlld0ljb25Mb2FkZWQoV2ViS2l0RmF2aWNv
bkRhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgY2hhciogZnJhbWVVUkksIFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5oIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAppbmRl
eCA5Yzg0MjYzYjRiYzA5NDdhNmYwZGY5NWRiMDE3YzUyMzRhMWUyZDllLi5jYTEyZWE1OGIwNjY5
MDdjZmZiMGI4ZWU0MGI0NGQxZjMxZDQzZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmgKQEAgLTMzLDYgKzMzLDggQEAKICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0
d2ViZnJhbWUuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uaD4KICNp
bmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Vi
a2l0d2VidXNlcm1lZGlhbGlzdC5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVk
aWFyZXF1ZXN0Lmg+CiAKIEdfQkVHSU5fREVDTFMKIApAQCAtNDQ5LDYgKzQ1MSwxNiBAQCB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3ZpZXdwb3J0X2F0dHJpYnV0ZXMgICAgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgKndlYl92aWV3KQogV0VCS0lUX0FQSSBjYWlyb19zdXJmYWNlX3QqCiB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3NuYXBzaG90ICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgKndlYl92aWV3KTsKIAorV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfYWNj
ZXB0X3VzZXJfbWVkaWFfcmVxdWVzdCAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgKndlYlZp
ZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Vi
S2l0V2ViVXNlck1lZGlhUmVxdWVzdCAqd2ViUmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0ICphdWRp
b01lZGlhTGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0ICp2aWRlb01lZGlhTGlzdCk7CisKK1dFQktJVF9B
UEkgdm9pZAord2Via2l0X3dlYl92aWV3X3JlamVjdF91c2VyX21lZGlhX3JlcXVlc3QgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJWaWV3LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QgKndlYlJl
cXVlc3QpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdG1hcnNoYWwubGlzdCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdG1hcnNo
YWwubGlzdAppbmRleCBiNzQyODkwNWM4OTgzY2ZjNzVlYzU0NDc0MTMzY2EyOGY2ZDc5NWI0Li40
ZDBiOWQ5ZTMyZDMyY2NkNWM4M2JkMGM1Y2U2ZjNmMmQwOGJjNTliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay93ZWJraXRtYXJzaGFsLmxpc3QKKysrIGIvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0bWFyc2hhbC5saXN0CkBAIC0xOCw2ICsxOCw3IEBAIEVOVU06T0JKRUNULE9CSkVDVAog
T0JKRUNUOk9CSkVDVAogT0JKRUNUOlNUUklORyxTVFJJTkcsUE9JTlRFUgogT0JKRUNUOlZPSUQK
K1ZPSUQ6T0JKRUNUCiBWT0lEOk9CSkVDVCxPQkpFQ1QKIFZPSUQ6T0JKRUNULE9CSkVDVCxJTlQK
IFZPSUQ6T0JKRUNULE9CSkVDVCxPQkpFQ1QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166722</attachid>
            <date>2012-10-02 11:37:59 -0700</date>
            <delta_ts>2012-10-03 12:30:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94373-20121002153710.patch</filename>
            <type>text/plain</type>
            <size>48327</size>
            <attacher name="Danilo de Paula">danilo.eu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggN2M5YjM2ZTk0
MGI2NTVmYmM1MjRhZjJjYmJmYzdiNDA5OTdkOTg5YS4uZjAwZDU0M2U1YjI3MmE1MzMyZGRkYmY3
M2I3YzQ5ZjE2NTBhMjdlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEy
LTEwLTAyICBEYW5pbG8gQ2VzYXIgTGVtZXMgZGUgUGF1bGEgIDxkYW5pbG8uY2VzYXJAY29sbGFi
b3JhLmNvLnVrPgorCisgICAgICAgIFtndGtdIGFkZGluZyBtZXRob2RzIGFuZCBzaWduYWxzIGZv
ciB1c2VybWVkaWEgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHdlYmtpdCBhbmQgYnJvd3NlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQzNzMKKworICAg
ICAgICBXaGVuIHRoZSB1c2VyIG1ha2UgYSBnZXRVc2VyTWVkaWEgY2FsbCwgd2VidmlldyB3aWxs
IGVtaXQgYSBzaWdpYWwgKHVzZXItbWVkaWEtcmVxdWVzdGVkKQorICAgICAgICB0byB0aGUgYXBw
bGljYXRpb24gY29udGFpbmluZyB0aGVuIHJlcXVlc3QgaXRzZWxmICh3ZWJraXR3ZWJ1c2VybWVk
aWFyZXF1ZXN0KSBhbmQgdHdvCisgICAgICAgIGxpc3Qgd2l0aCB0aGUgYXZhaWxhYmxlIGF1ZGlv
IGFuZCB2aWRlbyBkZXZpY2VzICh3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0KS4KKworICAgICAgICBU
aGUgYXBwbGljYXRpb24gbXVzdCBzaG93IHRoZSBsaXN0IHRvIHRoZSB1c2VyIGFuZCBhc2sgcGVy
bWlzc2lvbiB0byB1c2Ugb25lIG9mCisgICAgICAgIHRob3NlIGRldmljZXMgKG9yIHJlamVjdCB0
aGUgcmVxdWVzdCkuCisKKyAgICAgICAgSW4gY2FzZSB0aGUgdXNlciBhY2NlcHRzIHRoZSByZXF1
ZXN0LCB0aGUgYXBwbGljYXRpb24gbXVzdCBtYXJrIHRoZSBkZXZpY2UgYXMKKyAgICAgICAgc2Vs
ZWN0ZWQgKHVzaW5nIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X3NlbGVjdF9pdGVtKSBhbmQg
dGhlbiBjYWxsCisgICAgICAgIHdlYmtpdF93ZWJfdmlld19hY2NlcHRfdXNlcl9tZWRpYV9yZXF1
ZXN0IHdoaWNoIHdpbGwgaGFuZGxlIHRoZSByZXF1ZXN0IHByb3Blcmx5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Vc2VyTWVkaWFDbGllbnRHdGsuY3BwOgorICAgICAgICAo
V2ViS2l0OjpVc2VyTWVkaWFDbGllbnRHdGs6OlVzZXJNZWRpYUNsaWVudEd0ayk6CisgICAgICAg
IChXZWJLaXQ6OlVzZXJNZWRpYUNsaWVudEd0azo6cGFnZURlc3Ryb3llZCk6CisgICAgICAgIChX
ZWJLaXQ6OlVzZXJNZWRpYUNsaWVudEd0azo6cmVxdWVzdFVzZXJNZWRpYSk6CisgICAgICAgIChX
ZWJLaXQ6OlVzZXJNZWRpYUNsaWVudEd0azo6Y2FuY2VsVXNlck1lZGlhUmVxdWVzdCk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50R3RrLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFVzZXJNZWRpYUNsaWVudEd0ayk6CisgICAgICAgICogZG9jcy93ZWJr
aXRndGstZG9jcy5zZ21sOgorICAgICAgICAqIGRvY3Mvd2Via2l0Z3RrLXNlY3Rpb25zLnR4dDoK
KyAgICAgICAgKiB3ZWJraXQvd2Via2l0Lmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnVz
ZXJtZWRpYWxpc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0
UHJpdmF0ZSk6CisgICAgICAgICh3ZWJraXRXZWJVc2VyTWVkaWFMaXN0RGlzcG9zZSk6CisgICAg
ICAgICh3ZWJraXRXZWJVc2VyTWVkaWFMaXN0RmluYWxpemUpOgorICAgICAgICAod2Via2l0X3dl
Yl91c2VyX21lZGlhX2xpc3RfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJf
bWVkaWFfbGlzdF9pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dl
dF9sZW5ndGgpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2l0ZW1f
bmFtZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9pc19pdGVtX3NlbGVj
dGVkKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X3NlbGVjdF9pdGVtKToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAoV2Vi
S2l0OjpraXROZXcpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0Lmg6
IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYlVzZXJNZWRpYUxpc3QpOgorICAgICAgICAoX1dl
YktpdFdlYlVzZXJNZWRpYUxpc3RDbGFzcyk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnVz
ZXJtZWRpYWxpc3Rwcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KiB3ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5jcHA6IEFkZGVkLgorICAgICAgICAo
X1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRlKToKKyAgICAgICAgKHdlYmtpdFdlYlVz
ZXJNZWRpYVJlcXVlc3RGaW5hbGl6ZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFf
cmVxdWVzdF9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1
ZXN0X2luaXQpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNf
YXVkaW8pOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNfdmlk
ZW8pOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZ2V0X3NlY3VyaXR5
X29yaWdpbik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAg
ICAgICAgKFdlYktpdDo6a2l0TmV3KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2VidXNlcm1l
ZGlhcmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0
KToKKyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3MpOgorICAgICAgICAq
IHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
d2Vidmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6CisgICAg
ICAgICh3ZWJraXRfd2ViX3ZpZXdfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfYWNj
ZXB0X3VzZXJfbWVkaWFfcmVxdWVzdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcmVqZWN0
X3VzZXJfbWVkaWFfcmVxdWVzdCk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuaDoK
KyAgICAgICAgKiB3ZWJraXRtYXJzaGFsLmxpc3Q6CisKIDIwMTItMTAtMDIgIEFkcmlhbiBQZXJl
eiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBWYWx1ZSBu
b3QgcmV0dXJuZWQgd2FybmluZyB3aXRoIGdlb2xvY2F0aW9uIGRpc2FibGVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dO
VW1ha2VmaWxlLmFtCmluZGV4IDViZTllYjU0OGVlMDIzZDE0MGEzNWQxNjYyNDMzZDU4MWJiNzFi
ODMuLmZiYTg0YmMwZjEwMmYzYjcyNDliZDJlMzMzZTA4YmRiMTlhOTE0YmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L0dOVW1ha2VmaWxlLmFtCkBAIC0xNDIsNiArMTQyLDggQEAgd2Via2l0Z3RrX3N0YXRpY19oX2Fw
aSArPSBcCiAJJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwb2xp
Y3lkZWNpc2lvbi5oIFwKIAkkKHNyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnJlc291cmNlLmggXAogCSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vic2V0dGluZ3MuaCBcCisJJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmggXAorCSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5oIFwKIAkkKHNyY2RpcikvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmggXAogCSQoc3JjZGlyKS9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCiAKQEAgLTI3Niw2ICsyNzgs
MTAgQEAgd2Via2l0Z3RrX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJwbHVnaW5kYXRhYmFzZXByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcCBcCiAJU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnNldHRpbmdzcHJpdmF0ZS5oIFwKKwlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2VidXNlcm1lZGlhbGlzdC5jcHAgXAorCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZS5oIFwKKwlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5jcHAgXAorCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgXAogCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vid2luZG93ZmVhdHVyZXMuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L1VzZXJNZWRpYUNsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9Vc2VyTWVkaWFDbGllbnRHdGsuY3BwCmluZGV4IDM5MTY3NmFmYjVhZjlm
MDc1ZWIyNmIwNjlhYzkzNWNmMGViZjNjYzYuLmMyMmQ2Mjc5ZmVkZmI1ZjlhMWJhZGIzYzhhZjQ1
MmMxODQyMmI0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L1VzZXJNZWRpYUNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvVXNlck1lZGlhQ2xpZW50R3RrLmNwcApAQCAtMTgsMTkgKzE4LDIyIEBACiAgKgogICov
CiAKKwogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudEd0ay5o
IgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJj
ZS5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiVXNlck1lZGlhUmVx
dWVzdC5oIgorCisjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50R3RrLmgiCisKKyNpbmNsdWRlICJ3
ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJt
ZWRpYXJlcXVlc3Rwcml2YXRlLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotVXNlck1lZGlhQ2xpZW50R3RrOjpVc2VyTWVkaWFDbGllbnRHdGso
KQorVXNlck1lZGlhQ2xpZW50R3RrOjpVc2VyTWVkaWFDbGllbnRHdGsoV2ViS2l0V2ViVmlldyAq
d2ViVmlldykKKyAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQogewogfQogCkBAIC00MCwxOSArNDMs
MTkgQEAgVXNlck1lZGlhQ2xpZW50R3RrOjp+VXNlck1lZGlhQ2xpZW50R3RrKCkKIAogdm9pZCBV
c2VyTWVkaWFDbGllbnRHdGs6OnBhZ2VEZXN0cm95ZWQoKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKLXZvaWQgVXNlck1lZGlhQ2xpZW50R3RrOjpyZXF1ZXN0VXNlck1lZGlhKFdURjo6
UGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBwcnBSZXF1ZXN0LCBjb25zdCBNZWRpYVN0cmVh
bVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2UsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9y
JiB2aWRlb1NvdXJjZSkKK3ZvaWQgVXNlck1lZGlhQ2xpZW50R3RrOjpyZXF1ZXN0VXNlck1lZGlh
KFdURjo6UGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBwcnBSZXF1ZXN0LCBjb25zdCBXZWJD
b3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBXZWJDb3Jl
OjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKQogewotICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IHJlcXVlc3QgPSBwcnBSZXF1
ZXN0OworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYlZpZXcsICJ1c2VyLW1lZGlhLXJl
cXVlc3RlZCIsIGtpdE5ldyhyZXF1ZXN0LmdldCgpKSwga2l0TmV3KGF1ZGlvU291cmNlcyksIGtp
dE5ldyh2aWRlb1NvdXJjZXMpKTsKIH0KIAogdm9pZCBVc2VyTWVkaWFDbGllbnRHdGs6OmNhbmNl
bFVzZXJNZWRpYVJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYlZpZXcsICJ1c2Vy
LW1lZGlhLXJlcXVlc3QtY2FuY2VsbGVkIiwgMCk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYktp
dDsKK30KIAotI2VuZGlmIC8vIE1FRElBX1NUUkVBTQorI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
VFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Vc2Vy
TWVkaWFDbGllbnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1VzZXJN
ZWRpYUNsaWVudEd0ay5oCmluZGV4IDAzNjJhNGEzZDAyMzMxNTFjYTAxNTMxNDNkNDU2ZGNjMWE0
YTYwMzMuLmNjNTRkNjkzMTJkZDFhN2RlYmU1ZDdmOTcwMGJmYTE2YzVkOTM3MzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1VzZXJNZWRpYUNsaWVudEd0ay5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1VzZXJNZWRpYUNsaWVudEd0
ay5oCkBAIC0xNywyNiArMTcsMzkgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgog
ICoKICAqLworCisKICNpZm5kZWYgVXNlck1lZGlhQ2xpZW50R3RrX2gKICNkZWZpbmUgVXNlck1l
ZGlhQ2xpZW50R3RrX2gKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJN
ZWRpYVN0cmVhbVNvdXJjZS5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudC5oIgogCit0eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmlldyBXZWJLaXRXZWJWaWV3OworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBVc2VyTWVkaWFSZXF1ZXN0OworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgVXNlck1lZGlhQ2xpZW50R3RrIDogcHVibGljIFdlYkNvcmU6OlVzZXJNZWRpYUNs
aWVudCB7CiBwdWJsaWM6Ci0gICAgVXNlck1lZGlhQ2xpZW50R3RrKCk7Ci0gICAgdmlydHVhbCB+
VXNlck1lZGlhQ2xpZW50R3RrKCk7CisgICAgVXNlck1lZGlhQ2xpZW50R3RrKFdlYktpdFdlYlZp
ZXcqKTsKKyAgICB+VXNlck1lZGlhQ2xpZW50R3RrKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFn
ZURlc3Ryb3llZCgpOworCiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RVc2VyTWVkaWEoV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+LCBjb25zdCBXZWJDb3JlOjpNZWRp
YVN0cmVhbVNvdXJjZVZlY3RvciYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVj
dG9yJik7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoV2ViQ29yZTo6
VXNlck1lZGlhUmVxdWVzdCopOworCitwcml2YXRlOgorICAgIFdlYktpdFdlYlZpZXcqIG1fd2Vi
VmlldzsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYktpdAorfQogCiAjZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NUUkVBTSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJr
aXRndGstZG9jcy5zZ21sIGIvU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJraXRndGstZG9jcy5z
Z21sCmluZGV4IDcyMTA2NTIyZmI1YmFiYThiMDA5ZmUzNTQ0YjlhZGYyM2ZjYmIxOTguLjVhM2Fi
YjNmNjcxOGU1MTVhY2QzMzEwOWUxNGZlOWZlOWEwNGMzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL2RvY3Mvd2Via2l0Z3RrLWRvY3Muc2dtbAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9kb2NzL3dlYmtpdGd0ay1kb2NzLnNnbWwKQEAgLTMzLDYgKzMzLDggQEAKICAgICA8eGk6aW5j
bHVkZSBocmVmPSJ4bWwvd2Via2l0ZG93bmxvYWQueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJl
Zj0ieG1sL3dlYmtpdHZpZXdwb3J0YXR0cmlidXRlcy54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBo
cmVmPSJ4bWwvd2Via2l0aGl0dGVzdHJlc3VsdC54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVm
PSJ4bWwvd2Via2l0d2VidXNlcm1lZGlhbGlzdC54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVm
PSJ4bWwvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBo
cmVmPSJ4bWwvd2Via2l0d2VicGx1Z2luLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9Inht
bC93ZWJraXR3ZWJwbHVnaW5kYXRhYmFzZS54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4
bWwvd2Via2l0c291cGF1dGhkaWFsb2cueG1sIi8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2d0ay9kb2NzL3dlYmtpdGd0ay1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L2d0ay9kb2Nz
L3dlYmtpdGd0ay1zZWN0aW9ucy50eHQKaW5kZXggYjcwN2JmODNkNzExYTBjMWUxNzdhYjY0ZjE0
NzZmNGMxZTBmYmU3YS4uYTA4ZjE0MDNkNjMyYzc2OGUzMDJjNmUwODUwNDdhY2JkYzhiNTJhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJraXRndGstc2VjdGlvbnMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3Mvd2Via2l0Z3RrLXNlY3Rpb25zLnR4dApAQCAt
NDAzLDYgKzQwMyw3IEBAIFdlYktpdFdlYlZpZXdUYXJnZXRJbmZvCiBXZWJLaXRXZWJWaWV3Vmll
d01vZGUKIDxUSVRMRT5XZWJLaXRXZWJWaWV3PC9USVRMRT4KIFdlYktpdFdlYlZpZXcKK3dlYmtp
dF93ZWJfdmlld19hY2NlcHRfdXNlcl9tZWRpYV9yZXF1ZXN0CiB3ZWJraXRfd2ViX3ZpZXdfY2Fu
X2NvcHlfY2xpcGJvYXJkCiB3ZWJraXRfd2ViX3ZpZXdfY2FuX2N1dF9jbGlwYm9hcmQKIHdlYmtp
dF93ZWJfdmlld19jYW5fZ29fYmFjawpAQCAtNDU1LDYgKzQ1Niw3IEBAIHdlYmtpdF93ZWJfdmll
d19uZXcKIHdlYmtpdF93ZWJfdmlld19vcGVuCiB3ZWJraXRfd2ViX3ZpZXdfcGFzdGVfY2xpcGJv
YXJkCiB3ZWJraXRfd2ViX3ZpZXdfcmVkbword2Via2l0X3dlYl92aWV3X3JlamVjdF91c2VyX21l
ZGlhX3JlcXVlc3QKIHdlYmtpdF93ZWJfdmlld19yZWxvYWQKIHdlYmtpdF93ZWJfdmlld19yZWxv
YWRfYnlwYXNzX2NhY2hlCiB3ZWJraXRfd2ViX3ZpZXdfc2VhcmNoX3RleHQKQEAgLTY4Niw2ICs2
ODgsNDcgQEAgV2ViS2l0SWNvbkRhdGFiYXNlUHJpdmF0ZQogPC9TRUNUSU9OPgogCiA8U0VDVElP
Tj4KKzxGSUxFPndlYmtpdHdlYnVzZXJtZWRpYWxpc3Q8L0ZJTEU+Cis8VElUTEU+V2ViS2l0V2Vi
VXNlck1lZGlhTGlzdDwvVElUTEU+CitXZWJLaXRXZWJVc2VyTWVkaWFMaXN0Cit3ZWJraXRfd2Vi
X3VzZXJfbWVkaWFfbGlzdF9nZXRfbGVuZ3RoCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9n
ZXRfaXRlbV9uYW1lCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9pc19pdGVtX3NlbGVjdGVk
Cit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9zZWxlY3RfaXRlbQorPFNVQlNFQ1RJT04gU3Rh
bmRhcmQ+CitXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfTElTVAorV0VCS0lUX0lTX1dFQl9VU0VS
X01FRElBX0xJU1RfQ0xBU1MKK1dFQktJVF9XRUJfVVNFUl9NRURJQV9MSVNUCitXRUJLSVRfV0VC
X1VTRVJfTUVESUFfTElTVF9DTEFTUworV0VCS0lUX1dFQl9VU0VSX01FRElBX0xJU1RfR0VUX0NM
QVNTCitXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNUCis8U1VCU0VDVElPTiBQcml2YXRl
PgorV2ViS2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGUKK1dlYktpdFdlYlVzZXJNZWRpYUxpc3RD
bGFzcword2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKwor
PFNFQ1RJT04+Cis8RklMRT53ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0PC9GSUxFPgorPFRJVExF
PldlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3Q8L1RJVExFPgorV2ViS2l0V2ViVXNlck1lZGlhUmVx
dWVzdAord2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNfYXVkaW8KK3dlYmtpdF93
ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRzX3ZpZGVvCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFf
cmVxdWVzdF9nZXRfb3JpZ2luCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dFQktJVF9JU19XRUJf
VVNFUl9NRURJQV9SRVFVRVNUCitXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfUkVRVUVTVF9DTEFT
UworV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVAorV0VCS0lUX1dFQl9VU0VSX01F
RElBX1JFUVVFU1QKK1dFQktJVF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUX0NMQVNTCitXRUJLSVRf
V0VCX1VTRVJfTUVESUFfUkVRVUVTVF9HRVRfQ0xBU1MKKzxTVUJTRUNUSU9OIFByaXZhdGU+CitX
ZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3MKK1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQ
cml2YXRlCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9nZXRfdHlwZQorPC9TRUNUSU9O
PgorCis8U0VDVElPTj4KIDxGSUxFPndlYmtpdGZhdmljb25kYXRhYmFzZTwvRklMRT4KIDxUSVRM
RT5XZWJLaXRGYXZpY29uRGF0YWJhc2U8L1RJVExFPgogV2ViS2l0RmF2aWNvbkRhdGFiYXNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmggYi9Tb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0LmgKaW5kZXggYWE3YjkzZGJkYThjMjZkZTIxZTk4MmQzOWM2
MTY1ZmI4YzJmNWU3Ny4uYmYxNmEyNWU5MmVkNTVmOWIyMDdiNGE3MmJjNjNiYjg5NjlmMWViMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaApAQCAtNTEsNiArNTEsOCBAQAogI2luY2x1ZGUg
PHdlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJr
aXR3ZWJyZXNvdXJjZS5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5oPgor
I2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0Lmg+CisjaW5jbHVkZSA8d2Vi
a2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0
d2Vidmlldy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oPgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlh
bGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlz
dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjkwOTZmN2RlODY2MTgwYzk4YmRhODZmMjFhOGVlNjVlMDQyOWUz
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1
c2VybWVkaWFsaXN0LmNwcApAQCAtMCwwICsxLDE4MiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMp
IDIwMTIgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEw
LTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmgiCisKKyNpbmNs
dWRlICJ3ZWJraXRnbG9iYWxzcHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRp
YWxpc3Rwcml2YXRlLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKKworLyoq
CisgKiBTRUNUSU9OOndlYmtpdHdlYnVzZXJtZWRpYWxpc3QKKyAqIEBzaG9ydF9kZXNjcmlwdGlv
bjogVXNlck1lZGlhIExpc3QKKyAqIEBUaXRsZTogV2ViS2l0V2ViVXNlck1lZGlhTGlzdAorICoK
KyAqICNXZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGNvbnRhaW5zIGEgbGlzdCBvZgorICogYXVkaW8g
b3IgdmlkZW8gc291cmNlcyBmcm9tIGEgV2ViVXNlck1lZGlhUmVxdWVzdAorICoKKyAqIFNpbmNl
OiAxLjEwLjAKKyAqLworCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdHJ1Y3QgX1dlYktp
dFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlIHsKKyAgICBXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJj
ZVZlY3RvciBzb3VyY2VzOworICAgIFZlY3Rvcjxib29sPiBzb3VyY2VTZWxlY3Rpb25zOworfTsK
KworR19ERUZJTkVfVFlQRShXZWJLaXRXZWJVc2VyTWVkaWFMaXN0LCB3ZWJraXRfd2ViX3VzZXJf
bWVkaWFfbGlzdCwgR19UWVBFX09CSkVDVCkKKworc3RhdGljIHZvaWQgd2Via2l0V2ViVXNlck1l
ZGlhTGlzdERpc3Bvc2UoR09iamVjdCogb2JqZWN0KQoreworICAgIFdlYktpdFdlYlVzZXJNZWRp
YUxpc3QqIHVzZXJNZWRpYUxpc3QgPSBXRUJLSVRfV0VCX1VTRVJfTUVESUFfTElTVChvYmplY3Qp
OworICAgIFdlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlKiBwcml2ID0gdXNlck1lZGlhTGlz
dC0+cHJpdjsKKworICAgIHByaXYtPnNvdXJjZVNlbGVjdGlvbnMuY2xlYXIoKTsKKworICAgIEdf
T0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X3BhcmVudF9jbGFzcyktPmRp
c3Bvc2Uob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0V2ViVXNlck1lZGlhTGlzdEZp
bmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBXRUJLSVRfV0VCX1VTRVJfTUVESUFfTElT
VChvYmplY3QpLT5wcml2LT5+V2ViS2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGUoKTsKKyAgICBH
X09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9wYXJlbnRfY2xhc3MpLT5m
aW5hbGl6ZShvYmplY3QpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFf
bGlzdF9jbGFzc19pbml0KFdlYktpdFdlYlVzZXJNZWRpYUxpc3RDbGFzcyogbGlzdENsYXNzKQor
eworICAgIEdPYmplY3RDbGFzcyogZ29iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGxpc3RD
bGFzcyk7CisgICAgZ29iamVjdF9jbGFzcy0+ZGlzcG9zZSA9IHdlYmtpdFdlYlVzZXJNZWRpYUxp
c3REaXNwb3NlOworICAgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gd2Via2l0V2ViVXNlck1l
ZGlhTGlzdEZpbmFsaXplOworCisgICAgd2Via2l0SW5pdCgpOworCisgICAgZ190eXBlX2NsYXNz
X2FkZF9wcml2YXRlKGxpc3RDbGFzcywgc2l6ZW9mKFdlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2
YXRlKSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2luaXQo
V2ViS2l0V2ViVXNlck1lZGlhTGlzdCogbGlzdCkKK3sKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFM
aXN0UHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShsaXN0LCBXRUJL
SVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNULCBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0
ZSk7CisgICAgbGlzdC0+cHJpdiA9IHByaXY7CisKKyAgICAvLyBwbGFjZW1lbnQgbmV3IHN5bnRh
eAorICAgIG5ldyAocHJpdikgV2ViS2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGUoKTsKK30KKwor
LyoqCisgKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfbGVuZ3RoOgorICogQGxpc3Q6
IHRoZSBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGl0c2VsZgorICoKKyAqIFJldHVybnMgdGhlIHNp
emUgb2YgdGhlIGVsZW1lbnRzIGxpc3QuCisgKgorICogUmV0dXJuIHZhbHVlOiBudW1iZXIgb2Yg
ZWxlbWVudHMuCisgKgorICogU2luY2U6IDEuMTAuMAorICovCitndWludCB3ZWJraXRfd2ViX3Vz
ZXJfbWVkaWFfbGlzdF9nZXRfbGVuZ3RoKFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGxpc3QpCit7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX0xJU1Qo
bGlzdCksIDApOworCisgICAgcmV0dXJuIGNvcmUobGlzdCkuc2l6ZSgpOworfQorCisKKy8qKgor
ICogd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2l0ZW1fbmFtZToKKyAqIEBsaXN0OiB0
aGUgI1dlYktpdFdlYlVzZXJNZWRpYUxpc3QgaXRzZWxmCisgKiBAaW5kZXg6IHRoZSB3YW50ZWQg
ZWxlbWVudCBpbmRleC4KKyAqCisgKiBSZXR1cm5zIHRoZSBkZXZpY2UgbmFtZSBvZiB0aGUgZWxl
bWVudC4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IHRoZSBkZXZpY2UgaWQgb2YgdGhlIEBpbmRleCBn
aXZlbiBlbGVtZW50LgorICoKKyAqIFNpbmNlOiAxLjEwLjAKKyAqLworY29uc3QgZ2NoYXIqIHdl
YmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9pdGVtX25hbWUoV2ViS2l0V2ViVXNlck1lZGlh
TGlzdCogbGlzdCwgZ3VpbnQgaW5kZXgpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9VU0VSX01FRElBX0xJU1QobGlzdCksIDApOworCisgICAgV2ViQ29yZTo6TWVk
aWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHNvdXJjZXMgPSBjb3JlKGxpc3QpOworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKGluZGV4IDwgc291cmNlcy5zaXplKCksIDApOworCisgICAgcmV0dXJuIGdf
c3RyZHVwKHNvdXJjZXNbaW5kZXhdLT5uYW1lKCkudXRmOCgpLmRhdGEoKSk7Cit9CisKKy8qKgor
ICogd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfaXNfaXRlbV9zZWxlY3RlZDoKKyAqIEBsaXN0
OiB0aGUgI1dlYktpdFdlYlVzZXJNZWRpYUxpc3QgaXRzZWxmCisgKiBAaW5kZXg6IHRoZSB3YW50
ZWQgZWxlbWVudCBpbmRleC4KKyAqCisgKiBJbmRpY2F0ZSBpZiBhIGRldmljZSBpcyBtYXJrZWQg
YXMgc2VsZWN0ZWQuCisgKgorICogUmV0dXJuIHZhbHVlOiBUcnVlIGlmIHRoZSBkZXZpY2UgcmVw
cmVzZW50ZWQgYnkgQGluZGV4IGlzIG1hcmtlZCBhcyBzZWxlY3RlZC4KKyAqCisgKiBTaW5jZTog
MS4xMC4wCisgKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2lzX2l0ZW1f
c2VsZWN0ZWQoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCogbGlzdCwgZ3VpbnQgaW5kZXgpCit7Cisg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX0xJU1QobGlz
dCksIEZBTFNFKTsKKworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGluZGV4IDwgY29yZShsaXN0
KS5zaXplKCksIEZBTFNFKTsKKworICAgIHJldHVybiBsaXN0LT5wcml2LT5zb3VyY2VTZWxlY3Rp
b25zW2luZGV4XTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9zZWxl
Y3RfaXRlbToKKyAqIEBsaXN0OiB0aGUgI1dlYktpdFdlYlVzZXJNZWRpYUxpc3QgaXRzZWxmCisg
KiBAaW5kZXg6IHRoZSB3YW50ZWQgZWxlbWVudCBpbmRleC4KKyAqCisgKiBNYXJrIGEgZGV2aWNl
IGFzIHNlbGVjdGVlZC4KKyAqCisgKiBTaW5jZTogMS4xMC4wCisgKi8KK3ZvaWQgd2Via2l0X3dl
Yl91c2VyX21lZGlhX2xpc3Rfc2VsZWN0X2l0ZW0oV2ViS2l0V2ViVXNlck1lZGlhTGlzdCogbGlz
dCwgZ3VpbnQgaW5kZXgpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1VT
RVJfTUVESUFfTElTVChsaXN0KSk7CisKKyAgICBnX3JldHVybl9pZl9mYWlsKGluZGV4IDwgY29y
ZShsaXN0KS5zaXplKCkpOworCisgICAgbGlzdC0+cHJpdi0+c291cmNlU2VsZWN0aW9uc1tpbmRl
eF0gPSBUUlVFOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQ29yZTo6TWVkaWFTdHJl
YW1Tb3VyY2VWZWN0b3ImIGNvcmUoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCogbGlzdCkKK3sKKyAg
ICByZXR1cm4gbGlzdC0+cHJpdi0+c291cmNlczsKK30KKworV2ViS2l0V2ViVXNlck1lZGlhTGlz
dCoga2l0TmV3KGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2Vz
KQoreworICAgIFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIHdlYkxpc3QgPSBXRUJLSVRfV0VCX1VT
RVJfTUVESUFfTElTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfTElT
VCwgTlVMTCkpOworICAgIHdlYkxpc3QtPnByaXYtPnNvdXJjZXMgPSBzb3VyY2VzOworICAgIHdl
Ykxpc3QtPnByaXYtPnNvdXJjZVNlbGVjdGlvbnMuZmlsbChGQUxTRSwgc291cmNlcy5zaXplKCkp
OworCisgICAgcmV0dXJuIHdlYkxpc3Q7Cit9CisKK30KKworI2VuZGlmIC8qIEVOQUJMRShNRURJ
QV9TVFJFQU0pICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2VidXNlcm1lZGlhbGlzdC5oIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVz
ZXJtZWRpYWxpc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YjVjYzEyZjE2N2U1Njk4MzA3N2MwNGYxNGNhNTli
NjVmYWRhOGY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnVzZXJtZWRpYWxpc3QuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogIENvcHlyaWdo
dCAoQykgMjAxMiBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAg
MDIxMTAtMTMwMSAgVVNBCisgKi8KKworCisjaWZuZGVmIHdlYmtpdHdlYnVzZXJtZWRpYWxpc3Rf
aAorI2RlZmluZSB3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0X2gKKworI2luY2x1ZGUgPGdsaWItb2Jq
ZWN0Lmg+CisjaW5jbHVkZSA8Z2xpYi5oPgorCisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRlZmlu
ZXMuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQl9VU0VSX01F
RElBX0xJU1QgICAgICAgICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X3R5
cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9VU0VSX01FRElBX0xJU1Qob2JqKSAgICAgICAgICAg
ICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1VT
RVJfTUVESUFfTElTVCwgV2ViS2l0V2ViVXNlck1lZGlhTGlzdCkpCisjZGVmaW5lIFdFQktJVF9X
RUJfVVNFUl9NRURJQV9MSVNUX0NMQVNTKGtsYXNzKSAgICAgICAoR19UWVBFX0NIRUNLX0NMQVNT
X0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1QsIFdlYktpdFdl
YlVzZXJNZWRpYUxpc3RDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9M
SVNUKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdF
QktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1QpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1VT
RVJfTUVESUFfTElTVF9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChr
bGFzcyksICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNUKSkKKyNkZWZpbmUgV0VCS0lU
X1dFQl9VU0VSX01FRElBX0xJU1RfR0VUX0NMQVNTKG9iaikgICAgIChHX1RZUEVfSU5TVEFOQ0Vf
R0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfTElTVCwgV2ViS2l0
V2ViVXNlck1lZGlhTGlzdENsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlVzZXJN
ZWRpYUxpc3QgV2ViS2l0V2ViVXNlck1lZGlhTGlzdDsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRX
ZWJVc2VyTWVkaWFMaXN0Q2xhc3MgV2ViS2l0V2ViVXNlck1lZGlhTGlzdENsYXNzOwordHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlIFdlYktpdFdlYlVzZXJNZWRp
YUxpc3RQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRpYUxpc3QgeworICAgIEdP
YmplY3QgcGFyZW50X2luc3RhbmNlOworICAgIFdlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRl
ICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0Q2xhc3MgeworICAg
IEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJr
aXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfdHlwZSAodm9pZCkgR19HTlVDX0NPTlNUOworCitX
RUJLSVRfQVBJIGd1aW50Cit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfbGVuZ3RoICAg
ICAgICAoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCAqbGlzdCk7CisKK1dFQktJVF9BUEkgY29uc3Qg
Z2NoYXIgKgord2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2l0ZW1fbmFtZSAgICAgKFdl
YktpdFdlYlVzZXJNZWRpYUxpc3QgKmxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ3VpbnQgaW5kZXgpOworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Vi
a2l0X3dlYl91c2VyX21lZGlhX2xpc3RfaXNfaXRlbV9zZWxlY3RlZCAoV2ViS2l0V2ViVXNlck1l
ZGlhTGlzdCAqbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBndWludCBpbmRleCk7CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdXNlcl9tZWRp
YV9saXN0X3NlbGVjdF9pdGVtICAgICAgIChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0ICpsaXN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IGluZGV4
KTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIHdlYmtpdHdlYnVzZXJtZWRpYWxpc3RfaCAq
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRp
YWxpc3Rwcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1l
ZGlhbGlzdHByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTk4Y2FlY2ZiNmNlZjdjODBhYjk2YWY1NDM2
ZjUzYTUzYzk3YmQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3Rwcml2YXRlLmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAq
ICBDb3B5cmlnaHQgKEMpIDIwMTIgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQor
ICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKworI2lmbmRlZiB3ZWJraXR3ZWJ1c2Vy
bWVkaWFsaXN0cHJpdmF0ZV9oCisjZGVmaW5lIHdlYmtpdHdlYnVzZXJtZWRpYWxpc3Rwcml2YXRl
X2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNv
dXJjZS5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYWxpc3QuaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK1dlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBjb3JlKFdlYktp
dFdlYlVzZXJNZWRpYUxpc3QqKTsKK1dlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGtpdE5ldyhjb25z
dCBXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYpOworCit9CisKKyNlbmRpZiAvKiBF
TkFCTEUoTUVESUFfU1RSRUFNKSAqLworCisjZW5kaWYgLyogd2Via2l0d2VidXNlcm1lZGlhbGlz
dHByaXZhdGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnVzZXJtZWRpYXJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnVzZXJtZWRpYXJlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0ZDRkYTA1ODViYTQ3Y2JlOTUx
YjM5MWUxNWM3YjlkYjY2NmY3NGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5jcHAKQEAgLTAsMCArMSwxNTAgQEAK
Ky8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIENvbGxhYm9yYSBMdGQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vu
c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1
c2VybWVkaWFyZXF1ZXN0LmgiCisKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhUmVxdWVzdC5oIgorI2luY2x1ZGUgIndl
YmtpdGdsb2JhbHNwcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0c2VjdXJpdHlvcmlnaW5wcml2
YXRlLmgiCisjaW5jbHVkZSAid2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGUuaCIKKyNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKKy8qKgorICogU0VDVElPTjp3ZWJraXR3ZWJ1
c2VybWVkaWFyZXF1ZXN0CisgKiBAc2hvcnRfZGVzY3JpcHRpb246IFRoZSBXZWJLaXQncyBVc2Vy
TWVkaWEgUmVxdWVzdC4KKyAqIEBUaXRsZTogV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdAorICoK
KyAqIFRoaXMgb2JqZWN0IGNvbnRhaW5zIHRoZSBpbmZvcm1hdGlvbiBvZiBhIG1lZGlhIHJlcXVl
c3QuCisgKiBJdCBjYW4gYmUgdXNlZCB0byBjaGVjayBpZiB0aGUgcmVxdWVzdCBpcyBhc2tpbmcg
Zm9yIGF1ZGlvIGFuZC9vciB2aWRlby4KKyAqCisgKiBTaW5jZTogMS4xMC4wCisgKi8KKwordXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKKworc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0
UHJpdmF0ZSB7CisgICAgUmVmUHRyPFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+IHVzZXJNZWRp
YVJlcXVlc3Q7Cit9OworCitHX0RFRklORV9UWVBFKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3Qs
IHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0LCBHX1RZUEVfT0JKRUNUKQorCitzdGF0aWMg
dm9pZCB3ZWJraXRXZWJVc2VyTWVkaWFSZXF1ZXN0RmluYWxpemUoR09iamVjdCAqb2JqZWN0KQor
eworICAgIFdFQktJVF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUKG9iamVjdCktPnByaXYtPn5XZWJL
aXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSgpOworCisgICAgR19PQkpFQ1RfQ0xBU1Mod2Vi
a2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0
KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfY2xhc3Nf
aW5pdChXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3MqIHJlcXVlc3RDbGFzcykKK3sKKyAg
ICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xh
c3MpOworICAgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gd2Via2l0V2ViVXNlck1lZGlhUmVx
dWVzdEZpbmFsaXplOworCisgICAgd2Via2l0SW5pdCgpOworCisgICAgZ190eXBlX2NsYXNzX2Fk
ZF9wcml2YXRlKHJlcXVlc3RDbGFzcywgc2l6ZW9mKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQ
cml2YXRlKSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0
X2luaXQoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBXZWJLaXRX
ZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJ
VkFURShyZXF1ZXN0LCBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFVRVNULCBXZWJLaXRX
ZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSk7CisgICAgcmVxdWVzdC0+cHJpdiA9IHByaXY7CisK
KyAgICBuZXcgKHByaXYpIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRlKCk7Cit9CisK
Ky8qKgorICogd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNfYXVkaW86CisgKiBA
cmVxdWVzdDogdGhlICNXZWJLaXRVc2VyTWVkaWFSZXF1ZXN0IGl0c2VsZi4KKyAqCisgKiBJbmRp
Y2F0ZXMgdGhlIGNvbnRlbnQgb2YgYW4gVXNlck1lZGlhUmVxdWVzdC4KKyAqCisgKiBSZXR1cm4g
dmFsdWU6IFRydWUgaWYgdGhlIHJlcXVlc3QgY29udGFpbnMgYW4gYXVkaW8gcmVxdWVzdC4KKyAq
CisgKiBTaW5jZTogMS4xMC4wCisgKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9y
ZXF1ZXN0X3dhbnRzX2F1ZGlvKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCit7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX1JFUVVF
U1QocmVxdWVzdCksIEZBTFNFKTsKKworICAgIHJldHVybiBjb3JlKHJlcXVlc3QpLT5hdWRpbygp
OworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRzX3ZpZGVv
OgorICogQHJlcXVlc3Q6IHRoZSAjV2ViS2l0VXNlck1lZGlhUmVxdWVzdCBpdHNlbGYuCisgKgor
ICogSW5kaWNhdGVzIHRoZSBjb250ZW50IG9mIGFuIFVzZXJNZWRpYVJlcXVlc3QuCisgKgorICog
UmV0dXJuIHZhbHVlOiBUcnVlIGlmIHRoZSByZXF1ZXN0IGNvbnRhaW5zIGEgdmlkZW8gcmVxdWVz
dC4KKyAqCisgKiBTaW5jZTogMS4xMC4wCisgKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfdXNlcl9t
ZWRpYV9yZXF1ZXN0X3dhbnRzX3ZpZGVvKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIHJlcXVl
c3QpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElB
X1JFUVVFU1QocmVxdWVzdCksIEZBTFNFKTsKKworICAgIHJldHVybiBjb3JlKHJlcXVlc3QpLT52
aWRlbygpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2dldF9v
cmlnaW46CisgKiBAcmVxdWVzdDogdGhlICNXZWJLaXRVc2VyTWVkaWFSZXF1ZXN0IGl0c2VsZi4K
KyAqCisgKiBSZXR1cm5zIHRoZSBzZWN1cml0eSBvcmlnaW4gb2YgdGhlIE1lZGlhIFJlcXVlc3Qu
CisgKgorICogUmV0dXJuIHZhbHVlOiAodHJhbnNmZXIgbm9uZSk6IHRoZSBzZWN1cml0eSBvcmln
aW4gb2YgdGhlIG1lZGlhIHJlcXVlc3QuCisgKgorICogU2luY2U6IDEuMTAuMAorICovCitXZWJL
aXRTZWN1cml0eU9yaWdpbiogd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZ2V0X3NlY3Vy
aXR5X29yaWdpbihXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9SRVFVRVNUKHJlcXVl
c3QpLCAwKTsKKworICAgIHJldHVybiBraXQoY29yZShyZXF1ZXN0KS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpKTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K1dlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqIGNvcmUoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVz
dCogcmVxdWVzdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1VT
RVJfTUVESUFfUkVRVUVTVChyZXF1ZXN0KSwgMCk7CisKKyAgICByZXR1cm4gcmVxdWVzdC0+cHJp
di0+dXNlck1lZGlhUmVxdWVzdC5nZXQoKTsKK30KKworV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVz
dCoga2l0TmV3KFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwocmVxdWVzdCwgMCk7CisKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFS
ZXF1ZXN0KiB3ZWJSZXF1ZXN0ID0gV0VCS0lUX1dFQl9VU0VSX01FRElBX1JFUVVFU1QoZ19vYmpl
Y3RfbmV3KFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX1JFUVVFU1QsIE5VTEwpKTsKKyAgICB3
ZWJSZXF1ZXN0LT5wcml2LT51c2VyTWVkaWFSZXF1ZXN0ID0gcmVxdWVzdDsKKworICAgIHJldHVy
biB3ZWJSZXF1ZXN0OworfQorCit9CisKKyNlbmRpZiAvKiBFTkFCTEUoTUVESUFfU1RSRUFNKSAq
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRp
YXJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFy
ZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2UwNzg4OWRlNmU2Y2RjMGEwYzRlZjA0NmE1ZGQzNWU3Y2Ni
MmNhNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ1c2VybWVkaWFyZXF1ZXN0LmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqICBDb3B5cmlnaHQg
KEMpIDIwMTIgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAy
MTEwLTEzMDEgIFVTQQorICovCisKKworI2lmbmRlZiB3ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0
X2gKKyNkZWZpbmUgd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdF9oCisKKyNpbmNsdWRlIDxnbGli
LW9iamVjdC5oPgorI2luY2x1ZGUgPGdsaWIuaD4KKworI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRk
ZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfVVNF
Ul9NRURJQV9SRVFVRVNUICAgICAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0
X2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUKG9iaikg
ICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBF
X1dFQl9VU0VSX01FRElBX1JFUVVFU1QsIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QpKQorI2Rl
ZmluZSBXRUJLSVRfV0VCX1VTRVJfTUVESUFfUkVRVUVTVF9DTEFTUyhrbGFzcykgICAgKEdfVFlQ
RV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9S
RVFVRVNULCBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRf
SVNfV0VCX1VTRVJfTUVESUFfUkVRVUVTVChvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNU
QU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFVRVNUKSkKKyNk
ZWZpbmUgV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX1JFUVVFU1RfQ0xBU1Moa2xhc3MpIChHX1RZ
UEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFf
UkVRVUVTVCkpCisjZGVmaW5lIFdFQktJVF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUX0dFVF9DTEFT
UyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dF
Ql9VU0VSX01FRElBX1JFUVVFU1QsIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RDbGFzcykpCisK
K3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0IFdlYktpdFdlYlVzZXJN
ZWRpYVJlcXVlc3Q7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdENs
YXNzIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJL
aXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJp
dmF0ZTsKKworc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0IHsKKyAgICBHT2JqZWN0
IHBhcmVudF9pbnN0YW5jZTsKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSAq
cHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdENsYXNzIHsKKyAg
ICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Vi
a2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZ2V0X3R5cGUgKHZvaWQpIEdfR05VQ19DT05TVDsK
KworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2Fu
dHNfYXVkaW8gICAgICAgICAgICAgIChXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0ICpyZXF1ZXN0
KTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rf
d2FudHNfdmlkZW8gICAgICAgICAgICAgIChXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0ICpyZXF1
ZXN0KTsKKworV0VCS0lUX0FQSSBXZWJLaXRTZWN1cml0eU9yaWdpbioKK3dlYmtpdF93ZWJfdXNl
cl9tZWRpYV9yZXF1ZXN0X2dldF9vcmlnaW4gICAgICAgICAgICAgICAoV2ViS2l0V2ViVXNlck1l
ZGlhUmVxdWVzdCAqcmVxdWVzdCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiB3ZWJraXR3
ZWJ1c2VybWVkaWFyZXF1ZXN0X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTgyZmE3MWFjNjhjZjFhMTFlNDEyZDc1NjJkYWNiYjczNjRmNjJmZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJp
dmF0ZS5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIENvbGxh
Ym9yYSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5v
dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EK
KyAqLworCisKKyNpZm5kZWYgd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGVfaAorI2Rl
ZmluZSB3ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZV9oCisKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorCisjaW5jbHVkZSAid2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgVXNlck1lZGlhUmVxdWVzdDsKK30KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1dlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqIGNvcmUoV2ViS2l0V2Vi
VXNlck1lZGlhUmVxdWVzdCopOworV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCoga2l0TmV3KFdl
YkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqKTsKKworfQorCisjZW5kaWYgLyogRU5BQkxFKE1FRElB
X1NUUkVBTSkgKi8KKworI2VuZGlmIC8qIHdlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRl
X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCA1
NTUxNzFhYTFjYjZkZTMzM2EwY2Y2M2NiM2FhMzk0ZjM5NGEwNDBkLi5mY2E5OTM5YmU5ZDBiOTRh
MzA2YTEwOGZiMWQ5ZTgzYzFjNmY2YzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuY3BwCkBAIC04Myw2ICs4Myw3IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFDbGllbnRHdGsuaCIKICNpbmNsdWRlICJ3ZWJraXQv
V2ViS2l0RE9NRG9jdW1lbnRQcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0ZG93bmxvYWQuaCIK
ICNpbmNsdWRlICJ3ZWJraXRkb3dubG9hZHByaXZhdGUuaCIKQEAgLTEwMywxMCArMTA0LDEyIEBA
CiAjaW5jbHVkZSAid2Via2l0d2ViaGlzdG9yeWl0ZW1wcml2YXRlLmgiCiAjaW5jbHVkZSAid2Vi
a2l0d2ViaW5zcGVjdG9yLmgiCiAjaW5jbHVkZSAid2Via2l0d2ViaW5zcGVjdG9ycHJpdmF0ZS5o
IgorI2luY2x1ZGUgIndlYmtpdHdlYnBsdWdpbmRhdGFiYXNlcHJpdmF0ZS5oIgogI2luY2x1ZGUg
IndlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmgiCiAjaW5jbHVkZSAid2Via2l0d2VicmVzb3VyY2Uu
aCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJzZXR0aW5nc3ByaXZhdGUuaCIKLSNpbmNsdWRlICJ3ZWJr
aXR3ZWJwbHVnaW5kYXRhYmFzZXByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVk
aWFsaXN0cHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2
YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaCIKICNpbmNsdWRlICJ3
ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oIgogI2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CkBAIC0x
MTksNiArMTIyLDcgQEAKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEd0ay5oIgog
I2VuZGlmCiAKKwogLyoqCiAgKiBTRUNUSU9OOndlYmtpdHdlYnZpZXcKICAqIEBzaG9ydF9kZXNj
cmlwdGlvbjogVGhlIGNlbnRyYWwgY2xhc3Mgb2YgdGhlIFdlYktpdEdUSysgQVBJCkBAIC0yMTAs
NiArMjE0LDggQEAgZW51bSB7CiAgICAgRURJVElOR19FTkRFRCwKICAgICBWSUVXUE9SVF9BVFRS
SUJVVEVTX1JFQ09NUFVURV9SRVFVRVNURUQsCiAgICAgVklFV1BPUlRfQVRUUklCVVRFU19DSEFO
R0VELAorICAgIFVTRVJfTUVESUFfUkVRVUVTVEVELAorICAgIFVTRVJfTUVESUFfUkVRVUVTVF9D
QU5DRUxMRUQsCiAgICAgUkVTT1VSQ0VfUkVTUE9OU0VfUkVDRUlWRUQsCiAgICAgUkVTT1VSQ0Vf
TE9BRF9GSU5JU0hFRCwKICAgICBSRVNPVVJDRV9DT05URU5UX0xFTkdUSF9SRUNFSVZFRCwKQEAg
LTI3MjQsNiArMjczMCw1MiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5p
dChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgICAgICAgIFdFQktJVF9U
WVBFX1ZJRVdQT1JUX0FUVFJJQlVURVMpOwogCiAgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmll
dzo6dXNlci1tZWRpYS1yZXF1ZXN0ZWQ6CisgICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IHdo
aWNoIHJlY2VpdmVkIHRoZSBzaWduYWwKKyAgICAgKiBAcmVxdWVzdDogdGhlICNXZWJLaXRXZWJV
c2VyTWVkaWFScXVlc3QgYXR0cmlidXRlIHdoaWNoIGdlbmVyYXRlZCB0aGUgcmVxdWVzdC4KKyAg
ICAgKiBAYXVkaW9MaXN0OiBhICNXZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGNvbnRhaW5pbmcgdGhl
IGF2YWlsYWJsZSBhdWRpbyBtZWRpYSBvcHRpb25zLgorICAgICAqIEB2aWRlb0xpc3Q6IGEgI1dl
YktpdFdlYlVzZXJNZWRpYUxpc3QgY29udGFpbmluZyB0aGUgYXZhaWxhYmxlIHZpZGVvIG1lZGlh
IG9wdGlvbnMuCisgICAgICoKKyAgICAgKiBXaGVuIHRoZSBhcHBsaWNhdGlvbiByZXF1ZXN0IHVz
ZXJNZWRpYSwgdGhpcyBzaWduYWwgd2lsbCBiZSBlbWl0ZWQgd2l0aCB0aGUgcmVxdWVzdAorICAg
ICAqIGluZm9ybWF0aW9uIGFuZCB0aGUgYXZhaWxhYmxlIG9wdGlvbnMgdG8gYmUgc2VsZWN0ZWQu
CisgICAgICoKKyAgICAgKiBUaGVuIHRoZSB1c2VyIGlzIGV4cGVjdGVkIHRvIGNhbGwgZWl0aGVy
ICN3ZWJraXRfd2ViX3ZpZXdfYWNjZXB0X3VzZXJfbWVkaWFfcmVxdWVzdCgpIG9yCisgICAgICog
d2Via2l0X3dlYl92aWV3X3JlamVjdF91c2VyX21lZGlhX3JlcXVlc3QoKSB0byBhY2NlcHQgb3Ig
cmVqZWN0IHRoZSByZXF1ZXN0LgorICAgICAqCisgICAgICogU2luY2U6IDEuMTAuMAorICAgICAq
LworICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW1VTRVJfTUVESUFfUkVRVUVTVEVEXSA9IGdf
c2lnbmFsX25ldygidXNlci1tZWRpYS1yZXF1ZXN0ZWQiLAorICAgICAgICAgICAgR19UWVBFX0ZS
T01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAor
ICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIDAsIDAsCisgICAgICAgICAgICB3ZWJraXRfbWFy
c2hhbF9WT0lEX19PQkpFQ1RfT0JKRUNUX09CSkVDVCwKKyAgICAgICAgICAgIEdfVFlQRV9OT05F
LCAzLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCwKKyAg
ICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1QsCisgICAgICAgICAgICBX
RUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNUKTsKKworCisgICAgLyoqCisgICAgICogV2Vi
S2l0V2ViVmlldzo6dXNlci1tZWRpYS1yZXF1ZXN0LWNhbmNlbGxlZDoKKyAgICAgKiBAd2ViX3Zp
ZXc6IHRoZSBvYmplY3Qgd2hpY2ggcmVjZWl2ZWQgdGhlIHNpZ25hbAorICAgICAqIEByZXF1ZXN0
OiB0aGUgI1dlYktpdFdlYlVzZXJNZWRpYVJxdWVzdCBpdHNlbGYKKyAgICAgKgorICAgICAqIFRo
aXMgc2lnbmFsIHdpbGwgYmUgZW1pdGVkIHdoZW4gdGhlIHVzZXIgY2FuY2VsZWQgaXRzIHVzZXJN
ZWRpYSByZXF1ZXN0LgorICAgICAqCisgICAgICogU2luY2U6IDEuMTAuMAorICAgICAqLworICAg
IHdlYmtpdF93ZWJfdmlld19zaWduYWxzW1VTRVJfTUVESUFfUkVRVUVTVF9DQU5DRUxMRURdID0g
Z19zaWduYWxfbmV3KCJ1c2VyLW1lZGlhLXJlcXVlc3QtY2FuY2VsbGVkIiwKKyAgICAgICAgICAg
IEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICBHX1NJR05BTF9S
VU5fTEFTVCwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICAwLCAwLAorICAgICAgICAgICAg
d2Via2l0X21hcnNoYWxfVk9JRF9fT0JKRUNULAorICAgICAgICAgICAgR19UWVBFX05PTkUsIDEs
CisgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFVRVNUKTsKKworCisg
ICAgLyoqCiAgICAgICogV2ViS2l0V2ViVmlldzo6ZW50ZXJpbmctZnVsbHNjcmVlbjoKICAgICAg
KiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVt
aXR0ZWQuCiAgICAgICogQGVsZW1lbnQ6IHRoZSAjV2ViS2l0RE9NSFRNTEVsZW1lbnQgd2hpY2gg
aGFzIHJlcXVlc3RlZCBmdWxsIHNjcmVlbiBkaXNwbGF5LgpAQCAtMzYyOSw3ICszNjgxLDcgQEAg
c3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2luaXQoV2ViS2l0V2ViVmlldyogd2ViVmlldykK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBwcml2LT51c2VyTWVkaWFD
bGllbnQgPSBhZG9wdFB0cihuZXcgVXNlck1lZGlhQ2xpZW50R3RrKTsKKyAgICBwcml2LT51c2Vy
TWVkaWFDbGllbnQgPSBhZG9wdFB0cihuZXcgVXNlck1lZGlhQ2xpZW50R3RrKHdlYlZpZXcpKTsK
ICAgICBXZWJDb3JlOjpwcm92aWRlVXNlck1lZGlhVG8ocHJpdi0+Y29yZVBhZ2UsIHByaXYtPnVz
ZXJNZWRpYUNsaWVudC5nZXQoKSk7CiAjZW5kaWYKIApAQCAtNTMyNSw2ICs1Mzc3LDU2IEBAIHZv
aWQgd2ViVmlld0V4aXRGdWxsc2NyZWVuKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAjZW5kaWYK
IH0KIAorLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfYWNjZXB0X3VzZXJfbWVkaWFfcmVxdWVzdDoK
KyAqIEB3ZWJWaWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAd2ViUmVxdWVzdDogYSAjV2ViS2l0
V2ViVXNlck1lZGlhUmVxdWVzdAorICogQGF1ZGlvTWVkaWFMaXN0OiBhICNXZWJLaXRXZWJVc2Vy
TWVkaWFMaXN0IGNvbnRhaW5pbmcgYXVkaW8gZGV2aWNlcworICogQHZpZGVvTWVkaWFMaXN0OiBh
ICNXZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGNvbnRhaW5pbmcgdmlkZW8gZGV2aWNlcworICoKKyAq
IFRoaXMgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQgYnkgdGhlIGFwcGxpY2F0aW9uIGFmdGVyIHRo
ZSB1c2VyIHNlbGVjdHMKKyAqIGEgbWVkaWEgZGV2aWNlIGFuZCBhY2NlcHRzIGFuIG1lZGlhIHJl
cXVlc3QKKyAqCisgKiBTaW5jZTogMS4xMC4wCisgKiovCit2b2lkIHdlYmtpdF93ZWJfdmlld19h
Y2NlcHRfdXNlcl9tZWRpYV9yZXF1ZXN0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFdl
YlVzZXJNZWRpYVJlcXVlc3QqIHdlYlJlcXVlc3QsIFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGF1
ZGlvTWVkaWFMaXN0LCBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiB2aWRlb01lZGlhTGlzdCkKK3sK
KyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CisgICAg
Z19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCh3ZWJSZXF1
ZXN0KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfTElT
VChhdWRpb01lZGlhTGlzdCkpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9V
U0VSX01FRElBX0xJU1QodmlkZW9NZWRpYUxpc3QpKTsKKworICAgIE1lZGlhU3RyZWFtU291cmNl
VmVjdG9yJiBhdWRpb1NvdXJjZXMgPSBjb3JlKGF1ZGlvTWVkaWFMaXN0KTsKKyAgICBNZWRpYVN0
cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzID0gY29yZSh2aWRlb01lZGlhTGlzdCk7CisK
KyAgICBmb3IgKHNpemVfdCBpID0gYXVkaW9Tb3VyY2VzLnNpemUoKSAtIDE7IGkgIT0gKHNpemVf
dCkgLTE7IC0taSkKKyAgICAgICAgaWYgKCF3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9pc19p
dGVtX3NlbGVjdGVkKGF1ZGlvTWVkaWFMaXN0LCBpKSkKKyAgICAgICAgICAgIGF1ZGlvU291cmNl
cy5yZW1vdmUoaSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gdmlkZW9Tb3VyY2VzLnNpemUoKSAt
IDE7IGkgIT0gKHNpemVfdCkgLTE7IC0taSkKKyAgICAgICAgaWYgKCF3ZWJraXRfd2ViX3VzZXJf
bWVkaWFfbGlzdF9pc19pdGVtX3NlbGVjdGVkKHZpZGVvTWVkaWFMaXN0LCBpKSkKKyAgICAgICAg
ICAgIHZpZGVvU291cmNlcy5yZW1vdmUoaSk7CisKKyAgICBjb3JlKHdlYlJlcXVlc3QpLT5zdWNj
ZWVkKGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2Vi
X3ZpZXdfcmVqZWN0X3VzZXJfbWVkaWFfcmVxdWVzdDoKKyAqIEB3ZWJWaWV3OiBhICNXZWJLaXRX
ZWJWaWV3CisgKiBAd2ViUmVxdWVzdDogYSAjV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdAorICoK
KyAqIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQgYnkgdGhlIGFwcGxpY2F0aW9uIHdoZW4g
dGhlIHVzZXIgcmVqZWN0ZWQgYSB1c2VyTWVkaWEgcmVxdWVzdC4KKyAqCisgKiBTaW5jZTogMS4x
MC4wCisgKiovCit2b2lkIHdlYmtpdF93ZWJfdmlld19yZWplY3RfdXNlcl9tZWRpYV9yZXF1ZXN0
KFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QgKndlYlJl
cXVlc3QpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmll
dykpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX1JFUVVF
U1Qod2ViUmVxdWVzdCkpOworCisgICAgY29yZSh3ZWJSZXF1ZXN0KS0+ZmFpbCgpOworfQorCiAj
aWYgRU5BQkxFKElDT05EQVRBQkFTRSkKIHZvaWQgd2Via2l0V2ViVmlld0ljb25Mb2FkZWQoV2Vi
S2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgY2hhciogZnJhbWVVUkksIFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5oIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZp
ZXcuaAppbmRleCA5Yzg0MjYzYjRiYzA5NDdhNmYwZGY5NWRiMDE3YzUyMzRhMWUyZDllLi5jYTEy
ZWE1OGIwNjY5MDdjZmZiMGI4ZWU0MGI0NGQxZjMxZDQzZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKQEAgLTMzLDYgKzMzLDggQEAKICNpbmNsdWRlIDx3ZWJr
aXQvd2Via2l0d2ViZnJhbWUuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0
ZW0uaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaD4KKyNpbmNsdWRlIDx3
ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdC5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3
ZWJ1c2VybWVkaWFyZXF1ZXN0Lmg+CiAKIEdfQkVHSU5fREVDTFMKIApAQCAtNDQ5LDYgKzQ1MSwx
NiBAQCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3ZpZXdwb3J0X2F0dHJpYnV0ZXMgICAgICAgICAoV2Vi
S2l0V2ViVmlldyAgICAgICAgKndlYl92aWV3KQogV0VCS0lUX0FQSSBjYWlyb19zdXJmYWNlX3Qq
CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90ICAgICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgKndlYl92aWV3KTsKIAorV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2Vi
X3ZpZXdfYWNjZXB0X3VzZXJfbWVkaWFfcmVxdWVzdCAgICAgICAoV2ViS2l0V2ViVmlldyAgICAg
ICAgKndlYlZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCAqd2ViUmVxdWVzdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJVc2VyTWVkaWFM
aXN0ICphdWRpb01lZGlhTGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0ICp2aWRlb01lZGlhTGlzdCk7CisK
K1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X3JlamVjdF91c2VyX21lZGlhX3JlcXVl
c3QgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJWaWV3LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVl
c3QgKndlYlJlcXVlc3QpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdG1hcnNoYWwubGlzdCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdG1hcnNoYWwubGlzdAppbmRleCBiNzQyODkwNWM4OTgzY2ZjNzVlYzU0NDc0MTMzY2EyOGY2
ZDc5NWI0Li40ZDBiOWQ5ZTMyZDMyY2NkNWM4M2JkMGM1Y2U2ZjNmMmQwOGJjNTliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXRtYXJzaGFsLmxpc3QKKysrIGIvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0bWFyc2hhbC5saXN0CkBAIC0xOCw2ICsxOCw3IEBAIEVOVU06T0JKRUNU
LE9CSkVDVAogT0JKRUNUOk9CSkVDVAogT0JKRUNUOlNUUklORyxTVFJJTkcsUE9JTlRFUgogT0JK
RUNUOlZPSUQKK1ZPSUQ6T0JKRUNUCiBWT0lEOk9CSkVDVCxPQkpFQ1QKIFZPSUQ6T0JKRUNULE9C
SkVDVCxJTlQKIFZPSUQ6T0JKRUNULE9CSkVDVCxPQkpFQ1QKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkYjE0YTEwZmRmYzc1ZDkzY2VhNmE1YzBk
NWE1MWMxMDM3YjgxZjM4Li43ZTUwMjhkNzYzNjM2ZjZhYzExMjljOTM0YjM0OWM0MTQ1MzEzMTli
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjggQEAKKzIwMTItMTAtMDIgIERhbmlsbyBDZXNhciBMZW1lcyBkZSBQYXVsYSAgPGRh
bmlsby5jZXNhckBjb2xsYWJvcmEuY28udWs+CisKKyAgICAgICAgW2d0a10gYWRkaW5nIG1ldGhv
ZHMgYW5kIHNpZ25hbHMgZm9yIHVzZXJtZWRpYSBjb21tdW5pY2F0aW9uIGJldHdlZW4gd2Via2l0
IGFuZCBicm93c2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NDM3MworCisgICAgICAgIFdoZW4gdGhlIHVzZXIgbWFrZSBhIGdldFVzZXJNZWRpYSBj
YWxsLCB3ZWJ2aWV3IHdpbGwgZW1pdCBhIHNpZ2lhbCAodXNlci1tZWRpYS1yZXF1ZXN0ZWQpCisg
ICAgICAgIHRvIHRoZSBhcHBsaWNhdGlvbiBjb250YWluaW5nIHRoZW4gcmVxdWVzdCBpdHNlbGYg
KHdlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QpIGFuZCB0d28KKyAgICAgICAgbGlzdCB3aXRoIHRo
ZSBhdmFpbGFibGUgYXVkaW8gYW5kIHZpZGVvIGRldmljZXMgKHdlYmtpdHdlYnVzZXJtZWRpYWxp
c3QpLgorCisgICAgICAgIFRoZSBhcHBsaWNhdGlvbiBtdXN0IHNob3cgdGhlIGxpc3QgdG8gdGhl
IHVzZXIgYW5kIGFzayBwZXJtaXNzaW9uIHRvIHVzZSBvbmUgb2YKKyAgICAgICAgdGhvc2UgZGV2
aWNlcyAob3IgcmVqZWN0IHRoZSByZXF1ZXN0KS4KKworICAgICAgICBJbiBjYXNlIHRoZSB1c2Vy
IGFjY2VwdHMgdGhlIHJlcXVlc3QsIHRoZSBhcHBsaWNhdGlvbiBtdXN0IG1hcmsgdGhlIGRldmlj
ZSBhcworICAgICAgICBzZWxlY3RlZCAodXNpbmcgd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3Rf
c2VsZWN0X2l0ZW0pIGFuZCB0aGVuIGNhbGwKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X2FjY2Vw
dF91c2VyX21lZGlhX3JlcXVlc3Qgd2hpY2ggd2lsbCBoYW5kbGUgdGhlIHJlcXVlc3QgcHJvcGVy
bHkuCisKKyAgICAgICAgQW4gZXhhbXBsZSBvZiB0aGlzIEFQSSBjaGFuZ2UgaXMgc2hvd24gb24g
R3RrTGF1bmNoZXIvbWFpbi5jLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogR3RrTGF1bmNoZXIvbWFpbi5jOgorICAgICAgICAodXNlck1lZGlhUmVx
dWVzdENhbmNlbGxlZENiKToKKyAgICAgICAgKHVzZXJNZWRpYVJlcXVlc3RlZENiKToKKyAgICAg
ICAgKGNyZWF0ZUJyb3dzZXIpOgorCiAyMDEyLTEwLTAyICBaYW4gRG9iZXJzZWsgIDx6YW5kb2Jl
cnNla0BnbWFpbC5jb20+CiAKICAgICAgICAgW0d0a10gU2V2ZXJhbCB0ZXN0cyBsYXVuY2ggZ19v
YmplY3RfcmVmL3VucmVmIGFzc2VydGlvbiBtZXNzYWdlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvR3Rr
TGF1bmNoZXIvbWFpbi5jIGIvVG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jCmluZGV4IDJiYTc5MjQ3
MjFkMDZjMGYxNjNkZWVjOWEyY2JlODNmYzM5MjJiMTUuLmIzMGU2OTc0MTBlZGM3YTBlMzA4ODk4
OWEzOTg4YTJhN2NmY2RhMjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0d0a0xhdW5jaGVyL21haW4uYwor
KysgYi9Ub29scy9HdGtMYXVuY2hlci9tYWluLmMKQEAgLTIxMyw2ICsyMTMsMTM2IEBAIHN0YXRp
YyBHdGtXaWRnZXQgKmluc3BlY3Rvckluc3BlY3RXZWJWaWV3Q2IoV2ViS2l0V2ViSW5zcGVjdG9y
ICppbnNwZWN0b3IsIFdlYktpCiAgICAgcmV0dXJuIEdUS19XSURHRVQobGF1bmNoZXJJbnNwZWN0
b3JXaW5kb3dHZXRXZWJWaWV3KExBVU5DSEVSX0lOU1BFQ1RPUl9XSU5ET1coaW5zcGVjdG9yV2lu
ZG93KSkpOwogfQogCitzdGF0aWMgdm9pZCB1c2VyTWVkaWFSZXF1ZXN0Q2FuY2VsbGVkQ2IoV2Vi
S2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCwg
R3RrV2lkZ2V0KiBkaWFsb2cpCit7CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGRpYWxvZywg
InJlc3BvbnNlIiwgR1RLX1JFU1BPTlNFX0NBTkNFTCk7Cit9CisKK3N0YXRpYyB2b2lkIHVzZXJN
ZWRpYVJlcXVlc3RlZENiKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFdlYlVzZXJNZWRp
YVJlcXVlc3QqIHJlcXVlc3QsIFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGF1ZGlvTWVkaWFMaXN0
LCBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiB2aWRlb01lZGlhTGlzdCkKK3sKKyAgICBHdGtXaWRn
ZXQgKmRpYWxvZzsKKyAgICBHdGtXaWRnZXQgKmNvbnRlbnRBcmVhOworICAgIEd0a1dpZGdldCAq
YWN0aW9uQXJlYTsKKyAgICBHdGtXaWRnZXQgKmZyYW1lOworICAgIEd0a1dpZGdldCAqdmJveDsK
KyAgICBHdGtXaWRnZXQgKiphdWRpb0NoZWNrQnV0dG9uczsKKyAgICBHdGtXaWRnZXQgKip2aWRl
b0NoZWNrQnV0dG9uczsKKyAgICBHdGtXaWRnZXQgKmF1ZGlvTWVzc2FnZTsKKyAgICBHdGtXaWRn
ZXQgKnZpZGVvTWVzc2FnZSA9IDA7CisgICAgZ2Jvb2xlYW4gd2FudHNBdWRpbyA9IHdlYmtpdF93
ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRzX2F1ZGlvKHJlcXVlc3QpOworICAgIGdib29sZWFu
IHdhbnRzVmlkZW8gPSB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF93YW50c192aWRlbyhy
ZXF1ZXN0KTsKKyAgICBnYm9vbGVhbiBoYXNBdWRpbyA9IGZhbHNlOworICAgIGdib29sZWFuIGhh
c1ZpZGVvID0gZmFsc2U7CisgICAgZ2ludCBhdWRpb0xpc3RMZW5ndGggPSB3ZWJraXRfd2ViX3Vz
ZXJfbWVkaWFfbGlzdF9nZXRfbGVuZ3RoKGF1ZGlvTWVkaWFMaXN0KTsKKyAgICBnaW50IHZpZGVv
TGlzdExlbmd0aCA9IHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9sZW5ndGgodmlkZW9N
ZWRpYUxpc3QpOworICAgIGdpbnQgaTsKKworICAgIGRpYWxvZyA9IGd0a19kaWFsb2dfbmV3X3dp
dGhfYnV0dG9ucygiVXNlciBNZWRpYSBTZWxlY3RvciIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdUS19XSU5ET1coZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RL
X1dJREdFVCh3ZWJWaWV3KSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHVEtfRElBTE9HX0RFU1RST1lfV0lUSF9QQVJFTlQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdUS19TVE9DS19DQU5DRUwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19SRVNQT05TRV9DQU5DRUwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TVE9DS19PSywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1JFU1BPTlNFX09LLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKworICAgIGd0a193aW5kb3df
c2V0X3Jlc2l6YWJsZShHVEtfV0lORE9XKGRpYWxvZyksIEZBTFNFKTsKKyAgICBndGtfY29udGFp
bmVyX3NldF9ib3JkZXJfd2lkdGgoR1RLX0NPTlRBSU5FUihkaWFsb2cpLCA1KTsKKworICAgIGNv
bnRlbnRBcmVhID0gZ3RrX2RpYWxvZ19nZXRfY29udGVudF9hcmVhKEdUS19ESUFMT0coZGlhbG9n
KSk7CisgICAgZ3RrX2JveF9zZXRfc3BhY2luZyhHVEtfQk9YKGNvbnRlbnRBcmVhKSwgMik7CisK
KyAgICBhY3Rpb25BcmVhID0gZ3RrX2RpYWxvZ19nZXRfYWN0aW9uX2FyZWEoR1RLX0RJQUxPRyhk
aWFsb2cpKTsKKyAgICBndGtfY29udGFpbmVyX3NldF9ib3JkZXJfd2lkdGgoR1RLX0NPTlRBSU5F
UihhY3Rpb25BcmVhKSwgNSk7CisgICAgZ3RrX2JveF9zZXRfc3BhY2luZyhHVEtfQk9YKGFjdGlv
bkFyZWEpLCA2KTsKKworICAgIGhhc0F1ZGlvID0gKGF1ZGlvTGlzdExlbmd0aCA+IDApOworICAg
IGhhc1ZpZGVvID0gKHZpZGVvTGlzdExlbmd0aCA+IDApOworCisgICAgaSA9IDA7CisKKyAgICBp
ZiAoIWhhc0F1ZGlvICYmICFoYXNWaWRlbykgeworICAgICAgICBhdWRpb01lc3NhZ2UgPSBndGtf
bGFiZWxfbmV3KCJObyB1c2VyIG1lZGlhIGF2YWlsYWJsZSIpOworICAgICAgICBndGtfbWlzY19z
ZXRfYWxpZ25tZW50KEdUS19NSVNDKGF1ZGlvTWVzc2FnZSksIDAsIDApOworICAgICAgICBndGtf
Ym94X3BhY2tfc3RhcnQoR1RLX0JPWChjb250ZW50QXJlYSksIGF1ZGlvTWVzc2FnZSwgRkFMU0Us
IEZBTFNFLCA2KTsKKyAgICB9IGVsc2UgaWYgKHdhbnRzQXVkaW8pIHsKKyAgICAgICAgYXVkaW9N
ZXNzYWdlID0gZ3RrX2xhYmVsX25ldyhoYXNBdWRpbyA/ICJTZWxlY3QgZnJvbSBhdmFpbGFibGUg
dXNlciBhdWRpbyIgOiAiTm8gdXNlciBhdWRpbyBhdmFpbGFibGUiKTsKKyAgICAgICAgZ3RrX21p
c2Nfc2V0X2FsaWdubWVudChHVEtfTUlTQyhhdWRpb01lc3NhZ2UpLCAwLCAwKTsKKyAgICAgICAg
Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goY29udGVudEFyZWEpLCBhdWRpb01lc3NhZ2UsIEZB
TFNFLCBGQUxTRSwgNik7CisgICAgfQorCisgICAgYXVkaW9DaGVja0J1dHRvbnMgPSBnX25ldyhH
dGtXaWRnZXQqLCBhdWRpb0xpc3RMZW5ndGgpOworICAgIHZpZGVvQ2hlY2tCdXR0b25zID0gZ19u
ZXcoR3RrV2lkZ2V0KiwgdmlkZW9MaXN0TGVuZ3RoKTsKKworICAgIGlmIChoYXNBdWRpbykgewor
ICAgICAgICBmcmFtZSA9IGd0a19mcmFtZV9uZXcoIkF1ZGlvIik7CisjaWYgR1RLX0NIRUNLX1ZF
UlNJT04oMywgMiwgMCkKKyAgICAgICAgdmJveCA9IGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElP
Tl9WRVJUSUNBTCwgMCk7CisjZWxzZQorICAgICAgICB2Ym94ID0gZ3RrX3Zib3hfbmV3KFRSVUUs
IDApOworI2VuZGlmCisgICAgICAgIGd0a19jb250YWluZXJfc2V0X2JvcmRlcl93aWR0aChHVEtf
Q09OVEFJTkVSKHZib3gpLCAzKTsKKworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXVkaW9MaXN0
TGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGF1ZGlvQ2hlY2tCdXR0b25zW2ldID0gZ3RrX2No
ZWNrX2J1dHRvbl9uZXdfd2l0aF9sYWJlbCh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRf
aXRlbV9uYW1lKGF1ZGlvTWVkaWFMaXN0LCBpKSk7CisgICAgICAgICAgICBndGtfY29udGFpbmVy
X2FkZChHVEtfQ09OVEFJTkVSKHZib3gpLCBhdWRpb0NoZWNrQnV0dG9uc1tpXSk7CisgICAgICAg
IH0KKworICAgICAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKGZyYW1lKSwgdmJv
eCk7CisgICAgICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGNvbnRlbnRBcmVhKSwgZnJh
bWUsIEZBTFNFLCBGQUxTRSwgMyk7CisgICAgfQorCisgICAgaWYgKHdhbnRzVmlkZW8pIHsKKyAg
ICAgICAgaWYgKGhhc1ZpZGVvKSB7CisgICAgICAgICAgICB2aWRlb01lc3NhZ2UgPSBndGtfbGFi
ZWxfbmV3KCJTZWxlY3QgZnJvbSBhdmFpbGFibGUgdXNlciB2aWRlbyIpOworICAgICAgICB9IGVs
c2UgaWYgKCF3YW50c0F1ZGlvIHx8IGhhc0F1ZGlvKQorICAgICAgICAgICAgdmlkZW9NZXNzYWdl
ID0gZ3RrX2xhYmVsX25ldygiTm8gdXNlciB2aWRlbyBhdmFpbGFibGUiKTsKKyAgICAgICAgaWYg
KHZpZGVvTWVzc2FnZSkgeworICAgICAgICAgICAgZ3RrX21pc2Nfc2V0X2FsaWdubWVudChHVEtf
TUlTQyh2aWRlb01lc3NhZ2UpLCAwLCAwKTsKKyAgICAgICAgICAgIGd0a19ib3hfcGFja19zdGFy
dChHVEtfQk9YKGNvbnRlbnRBcmVhKSwgdmlkZW9NZXNzYWdlLCBGQUxTRSwgRkFMU0UsIDYpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGhhc1ZpZGVvKSB7CisgICAgICAgIGZyYW1lID0g
Z3RrX2ZyYW1lX25ldygiVmlkZW8iKTsKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCAyLCAwKQor
ICAgICAgICB2Ym94ID0gZ3RrX2JveF9uZXcoR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCAwKTsK
KyNlbHNlCisgICAgICAgIHZib3ggPSBndGtfdmJveF9uZXcoVFJVRSwgMCk7CisjZW5kaWYKKyAg
ICAgICAgZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoKEdUS19DT05UQUlORVIodmJveCks
IDMpOworCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCB2aWRlb0xpc3RMZW5ndGg7IGkrKykgewor
ICAgICAgICAgICAgdmlkZW9DaGVja0J1dHRvbnNbaV0gPSBndGtfY2hlY2tfYnV0dG9uX25ld193
aXRoX2xhYmVsKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9pdGVtX25hbWUodmlkZW9N
ZWRpYUxpc3QsIGkpKTsKKyAgICAgICAgICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlO
RVIodmJveCksIHZpZGVvQ2hlY2tCdXR0b25zW2ldKTsKKyAgICAgICAgfQorCisgICAgICAgIGd0
a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIoZnJhbWUpLCB2Ym94KTsKKyAgICAgICAgZ3Rr
X2JveF9wYWNrX3N0YXJ0KEdUS19CT1goY29udGVudEFyZWEpLCBmcmFtZSwgRkFMU0UsIEZBTFNF
LCAzKTsKKyAgICB9CisKKyAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlZpZXcsICJ1c2VyLW1lZGlh
LXJlcXVlc3QtY2FuY2VsbGVkIiwgR19DQUxMQkFDSyh1c2VyTWVkaWFSZXF1ZXN0Q2FuY2VsbGVk
Q2IpLCBkaWFsb2cpOworCisgICAgZ3RrX3dpZGdldF9zaG93X2FsbChkaWFsb2cpOworCisgICAg
aWYgKGd0a19kaWFsb2dfcnVuKEdUS19ESUFMT0coZGlhbG9nKSkgPT0gR1RLX1JFU1BPTlNFX09L
KSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBhdWRpb0xpc3RMZW5ndGg7IGkrKykgeworICAg
ICAgICAgICAgaWYgKGd0a190b2dnbGVfYnV0dG9uX2dldF9hY3RpdmUoR1RLX1RPR0dMRV9CVVRU
T04oYXVkaW9DaGVja0J1dHRvbnNbaV0pKSkKKyAgICAgICAgICAgICAgICB3ZWJraXRfd2ViX3Vz
ZXJfbWVkaWFfbGlzdF9zZWxlY3RfaXRlbShhdWRpb01lZGlhTGlzdCwgaSk7CisgICAgICAgIH0K
KworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdmlkZW9MaXN0TGVuZ3RoOyBpKyspIHsKKyAgICAg
ICAgICAgIGlmIChndGtfdG9nZ2xlX2J1dHRvbl9nZXRfYWN0aXZlKEdUS19UT0dHTEVfQlVUVE9O
KHZpZGVvQ2hlY2tCdXR0b25zW2ldKSkpCisgICAgICAgICAgICAgICAgd2Via2l0X3dlYl91c2Vy
X21lZGlhX2xpc3Rfc2VsZWN0X2l0ZW0odmlkZW9NZWRpYUxpc3QsIGkpOworICAgICAgICB9Cisg
ICAgICAgIHdlYmtpdF93ZWJfdmlld19hY2NlcHRfdXNlcl9tZWRpYV9yZXF1ZXN0KHdlYlZpZXcs
IHJlcXVlc3QsIGF1ZGlvTWVkaWFMaXN0LCB2aWRlb01lZGlhTGlzdCk7CisgICAgfSBlbHNlCisg
ICAgICAgIHdlYmtpdF93ZWJfdmlld19yZWplY3RfdXNlcl9tZWRpYV9yZXF1ZXN0KHdlYlZpZXcs
IHJlcXVlc3QpOworCisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHdl
YlZpZXcsIChncG9pbnRlcikgdXNlck1lZGlhUmVxdWVzdENhbmNlbGxlZENiLCBkaWFsb2cpOwor
ICAgIGd0a193aWRnZXRfZGVzdHJveShkaWFsb2cpOworfQorCiBzdGF0aWMgR3RrV2lkZ2V0KiBj
cmVhdGVCcm93c2VyKEd0a1dpZGdldCogd2luZG93LCBHdGtXaWRnZXQqIHVyaUVudHJ5LCBHdGtX
aWRnZXQqIHN0YXR1c2JhciwgV2ViS2l0V2ViVmlldyogd2ViVmlldywgR3RrV2lkZ2V0KiB2Ym94
KQogewogICAgIGNoYXIgKmljb25EYXRhYmFzZVBhdGg7CkBAIC0yMzUsNiArMzY1LDcgQEAgc3Rh
dGljIEd0a1dpZGdldCogY3JlYXRlQnJvd3NlcihHdGtXaWRnZXQqIHdpbmRvdywgR3RrV2lkZ2V0
KiB1cmlFbnRyeSwgR3RrV2lkZ2UKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlZpZXcsICJjbG9z
ZS13ZWItdmlldyIsIEdfQ0FMTEJBQ0soY2xvc2VXZWJWaWV3Q2IpLCB3aW5kb3cpOwogICAgIGdf
c2lnbmFsX2Nvbm5lY3Qod2ViVmlldywgImVudGVyaW5nLWZ1bGxzY3JlZW4iLCBHX0NBTExCQUNL
KHdlYlZpZXdFbnRlcmluZ0Z1bGxTY3JlZW4pLCB2Ym94KTsKICAgICBnX3NpZ25hbF9jb25uZWN0
KHdlYlZpZXcsICJsZWF2aW5nLWZ1bGxzY3JlZW4iLCBHX0NBTExCQUNLKHdlYlZpZXdMZWF2aW5n
RnVsbFNjcmVlbiksIHZib3gpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywgInVzZXIt
bWVkaWEtcmVxdWVzdGVkIiwgR19DQUxMQkFDSyh1c2VyTWVkaWFSZXF1ZXN0ZWRDYiksIE5VTEwp
OwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2Via2l0X3dlYl92aWV3X2dldF9pbnNwZWN0b3Iod2Vi
VmlldyksICJpbnNwZWN0LXdlYi12aWV3IiwgR19DQUxMQkFDSyhpbnNwZWN0b3JJbnNwZWN0V2Vi
Vmlld0NiKSwgd2luZG93KTsKIAogICAgIHJldHVybiBzY3JvbGxlZFdpbmRvdzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166945</attachid>
            <date>2012-10-03 13:12:35 -0700</date>
            <delta_ts>2012-10-03 13:22:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94373-20121003171145.patch</filename>
            <type>text/plain</type>
            <size>45580</size>
            <attacher name="Danilo de Paula">danilo.eu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggN2M5YjM2ZTk0
MGI2NTVmYmM1MjRhZjJjYmJmYzdiNDA5OTdkOTg5YS4uNDJhMWY4NDIwMjI3NTk5N2Q5NGRiZjRk
ZWU3Y2NkMGRlNTliNzgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEy
LTEwLTAzICBEYW5pbG8gQ2VzYXIgTGVtZXMgZGUgUGF1bGEgIDxkYW5pbG8uY2VzYXJAY29sbGFi
b3JhLmNvLnVrPgorCisgICAgICAgIFtndGtdIGFkZGluZyBtZXRob2RzIGFuZCBzaWduYWxzIGZv
ciB1c2VybWVkaWEgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHdlYmtpdCBhbmQgYnJvd3NlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQzNzMKKworICAg
ICAgICBXaGVuIHRoZSB1c2VyIG1ha2UgYSBnZXRVc2VyTWVkaWEgY2FsbCwgd2VidmlldyB3aWxs
IGVtaXQgYSBzaWdpYWwgKHVzZXItbWVkaWEtcmVxdWVzdGVkKQorICAgICAgICB0byB0aGUgYXBw
bGljYXRpb24gY29udGFpbmluZyB0aGVuIHJlcXVlc3QgaXRzZWxmICh3ZWJraXR3ZWJ1c2VybWVk
aWFyZXF1ZXN0KSBhbmQgdHdvCisgICAgICAgIGxpc3Qgd2l0aCB0aGUgYXZhaWxhYmxlIGF1ZGlv
IGFuZCB2aWRlbyBkZXZpY2VzICh3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0KS4KKworICAgICAgICBU
aGUgYXBwbGljYXRpb24gbXVzdCBzaG93IHRoZSBsaXN0IHRvIHRoZSB1c2VyIGFuZCBhc2sgcGVy
bWlzc2lvbiB0byB1c2Ugb25lIG9mCisgICAgICAgIHRob3NlIGRldmljZXMgKG9yIHJlamVjdCB0
aGUgcmVxdWVzdCkuCisKKyAgICAgICAgSW4gY2FzZSB0aGUgdXNlciBhY2NlcHRzIHRoZSByZXF1
ZXN0LCB0aGUgYXBwbGljYXRpb24gbXVzdCBtYXJrIHRoZSBkZXZpY2UgYXMKKyAgICAgICAgc2Vs
ZWN0ZWQgKHVzaW5nIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X3NlbGVjdF9pdGVtKSBhbmQg
dGhlbiBjYWxsCisgICAgICAgIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3N1Y2NlZWQg
d2hpY2ggd2lsbCBoYW5kbGUgdGhlIHJlcXVlc3QgcHJvcGVybHkuCisKKyAgICAgICAgT24gdGhl
IGNhc2UgdGhlIHVzZXIgcmVqZWN0IHRoZSByZXF1ZXN0LCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFf
cmVxdWVzdF9mYWlsIG11c3QKKyAgICAgICAgYmUgY2FsbGVkLgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6VXNlck1lZGlhQ2xpZW50R3RrOjpVc2VyTWVkaWFDbGllbnRHdGspOgorICAgICAgICAoV2Vi
S2l0OjpVc2VyTWVkaWFDbGllbnRHdGs6OnBhZ2VEZXN0cm95ZWQpOgorICAgICAgICAoV2ViS2l0
OjpVc2VyTWVkaWFDbGllbnRHdGs6OnJlcXVlc3RVc2VyTWVkaWEpOgorICAgICAgICAoV2ViS2l0
OjpVc2VyTWVkaWFDbGllbnRHdGs6OmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1VzZXJNZWRpYUNsaWVudEd0ay5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChVc2VyTWVkaWFDbGllbnRHdGspOgorICAgICAgICAqIGRvY3Mvd2Via2l0Z3Rr
LWRvY3Muc2dtbDoKKyAgICAgICAgKiBkb2NzL3dlYmtpdGd0ay1zZWN0aW9ucy50eHQ6CisgICAg
ICAgICogd2Via2l0L3dlYmtpdC5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVk
aWFsaXN0LmNwcDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViVXNlck1lZGlhTGlzdFByaXZh
dGUpOgorICAgICAgICAod2Via2l0V2ViVXNlck1lZGlhTGlzdEZpbmFsaXplKToKKyAgICAgICAg
KHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0
X3dlYl91c2VyX21lZGlhX2xpc3RfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVk
aWFfbGlzdF9nZXRfbGVuZ3RoKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0
X2dldF9pdGVtX25hbWUpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfaXNf
aXRlbV9zZWxlY3RlZCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9zZWxl
Y3RfaXRlbSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAg
ICAgICAgKFdlYktpdDo6a2l0TmV3KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2VidXNlcm1l
ZGlhbGlzdC5oOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0KToKKyAg
ICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0Q2xhc3MpOgorICAgICAgICAqIHdlYmtpdC93
ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuY3BwOiBBZGRlZC4K
KyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSk6CisgICAgICAgICh3
ZWJraXRXZWJVc2VyTWVkaWFSZXF1ZXN0RmluYWxpemUpOgorICAgICAgICAod2Via2l0X3dlYl91
c2VyX21lZGlhX3JlcXVlc3RfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJf
bWVkaWFfcmVxdWVzdF9pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1
ZXN0X3dhbnRzX2F1ZGlvKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0
X3dhbnRzX3ZpZGVvKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2dl
dF9zZWN1cml0eV9vcmlnaW4pOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVl
c3Rfc3VjY2VlZCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9mYWls
KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAo
V2ViS2l0OjpraXROZXcpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1
ZXN0Lmg6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QpOgorICAg
ICAgICAoX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RDbGFzcyk6CisgICAgICAgICogd2Via2l0
L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3
LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAgICAgKHdl
YmtpdF93ZWJfdmlld19pbml0KToKKyAgICAgICAgKiB3ZWJraXRtYXJzaGFsLmxpc3Q6CisKIDIw
MTItMTAtMDIgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbR1RLXSBWYWx1ZSBub3QgcmV0dXJuZWQgd2FybmluZyB3aXRoIGdlb2xvY2F0aW9u
IGRpc2FibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBi
L1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IDViZTllYjU0OGVlMDIzZDE0
MGEzNWQxNjYyNDMzZDU4MWJiNzFiODMuLmZiYTg0YmMwZjEwMmYzYjcyNDliZDJlMzMzZTA4YmRi
MTlhOTE0YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCkBAIC0xNDIsNiArMTQyLDggQEAg
d2Via2l0Z3RrX3N0YXRpY19oX2FwaSArPSBcCiAJJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5oIFwKIAkkKHNyY2RpcikvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnJlc291cmNlLmggXAogCSQoc3JjZGlyKS9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaCBcCisJJChzcmNkaXIpL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmggXAorCSQoc3JjZGly
KS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5oIFwK
IAkkKHNyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1
cmVzLmggXAogCSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5oCiAKQEAgLTI3Niw2ICsyNzgsMTAgQEAgd2Via2l0Z3RrX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwbHVnaW5kYXRhYmFzZXByaXZhdGUuaCBcCiAJ
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcCBcCiAJU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzcHJpdmF0ZS5oIFwKKwlTb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdC5jcHAgXAorCVNvdXJjZS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZS5oIFwKKwlTb3Vy
Y2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5jcHAgXAorCVNv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZS5o
IFwKIAlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgXAogCVNvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuY3BwIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1VzZXJNZWRpYUNsaWVudEd0ay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Vc2VyTWVkaWFDbGllbnRHdGsuY3Bw
CmluZGV4IDM5MTY3NmFmYjVhZjlmMDc1ZWIyNmIwNjlhYzkzNWNmMGViZjNjYzYuLjNjNzE2MjBk
NDdiODk0Zjg0ZjllYzNlNmFhYzI5ODRjNWQ3YzcwN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1VzZXJNZWRpYUNsaWVudEd0ay5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50R3RrLmNwcApAQCAtMjIs
MTUgKzIyLDE1IEBACiAjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50R3RrLmgiCiAKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQotI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCi0jaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJVc2VyTWVkaWFSZXF1ZXN0LmgiCisjaW5j
bHVkZSAid2Via2l0d2VidXNlcm1lZGlhbGlzdHByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXR3
ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZS5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVVzZXJNZWRpYUNsaWVudEd0azo6VXNlck1lZGlhQ2xp
ZW50R3RrKCkKK1VzZXJNZWRpYUNsaWVudEd0azo6VXNlck1lZGlhQ2xpZW50R3RrKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcpCisgICAgOiBtX3dlYlZpZXcod2ViVmlldykKIHsKIH0KIApAQCAtNDAs
MTcgKzQwLDE3IEBAIFVzZXJNZWRpYUNsaWVudEd0azo6flVzZXJNZWRpYUNsaWVudEd0aygpCiAK
IHZvaWQgVXNlck1lZGlhQ2xpZW50R3RrOjpwYWdlRGVzdHJveWVkKCkKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCiB2b2lkIFVzZXJNZWRpYUNsaWVudEd0azo6cmVxdWVzdFVzZXJNZWRp
YShXVEY6OlBhc3NSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gcHJwUmVxdWVzdCwgY29uc3QgTWVk
aWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJj
ZVZlY3RvciYgdmlkZW9Tb3VyY2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBSZWZQ
dHI8VXNlck1lZGlhUmVxdWVzdD4gcmVxdWVzdCA9IHBycFJlcXVlc3Q7CisgICAgZ19zaWduYWxf
ZW1pdF9ieV9uYW1lKG1fd2ViVmlldywgInVzZXItbWVkaWEtcmVxdWVzdGVkIiwga2l0TmV3KHJl
cXVlc3QuZ2V0KCkpLCBraXROZXcoYXVkaW9Tb3VyY2UpLCBraXROZXcodmlkZW9Tb3VyY2UpKTsK
IH0KIAogdm9pZCBVc2VyTWVkaWFDbGllbnRHdGs6OmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoVXNl
ck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGdf
c2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYlZpZXcsICJ1c2VyLW1lZGlhLXJlcXVlc3QtY2FuY2Vs
bGVkIiwgMCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1VzZXJNZWRpYUNsaWVudEd0ay5oIGIvU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50R3RrLmgKaW5kZXggMDM2
MmE0YTNkMDIzMzE1MWNhMDE1MzE0M2Q0NTZkY2MxYTRhNjAzMy4uOTU3MDBlZmIzNTM2OTM4ZWJk
Y2QzNjQ2N2QzZGVhMjNkYTM3M2I2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50R3RrLmgKQEAgLTIyLDE4ICsyMiwyOSBAQAog
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNl
LmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50LmgiCiAKK3R5cGVkZWYgc3RydWN0IF9XZWJL
aXRXZWJWaWV3IFdlYktpdFdlYlZpZXc7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFVz
ZXJNZWRpYVJlcXVlc3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBVc2VyTWVk
aWFDbGllbnRHdGsgOiBwdWJsaWMgV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50IHsKIHB1YmxpYzoK
LSAgICBVc2VyTWVkaWFDbGllbnRHdGsoKTsKKyAgICBVc2VyTWVkaWFDbGllbnRHdGsoV2ViS2l0
V2ViVmlldyopOwogICAgIHZpcnR1YWwgflVzZXJNZWRpYUNsaWVudEd0aygpOwogCiAgICAgdmly
dHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsKKwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0VXNl
ck1lZGlhKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0PiwgY29uc3Qg
V2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImLCBjb25zdCBXZWJDb3JlOjpNZWRpYVN0
cmVhbVNvdXJjZVZlY3RvciYpOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxVc2VyTWVkaWFSZXF1
ZXN0KFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqKTsKKworcHJpdmF0ZToKKyAgICBXZWJLaXRX
ZWJWaWV3KiBtX3dlYlZpZXc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3Mvd2Via2l0Z3RrLWRvY3Muc2dtbCBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL2RvY3Mvd2Via2l0Z3RrLWRvY3Muc2dtbAppbmRleCA3MjEwNjUyMmZiNWJhYmE4
YjAwOWZlMzU0NGI5YWRmMjNmY2JiMTk4Li41YTNhYmIzZjY3MThlNTE1YWNkMzMxMDllMTRmZTlm
ZTlhMDRjMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzL3dlYmtpdGd0ay1k
b2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJraXRndGstZG9jcy5zZ21s
CkBAIC0zMyw2ICszMyw4IEBACiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dlYmtpdGRvd25s
b2FkLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC93ZWJraXR2aWV3cG9ydGF0dHJp
YnV0ZXMueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dlYmtpdGhpdHRlc3RyZXN1
bHQueG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dlYmtpdHdlYnVzZXJtZWRpYWxp
c3QueG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dlYmtpdHdlYnVzZXJtZWRpYXJl
cXVlc3QueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dlYmtpdHdlYnBsdWdpbi54
bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvd2Via2l0d2VicGx1Z2luZGF0YWJhc2Uu
eG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dlYmtpdHNvdXBhdXRoZGlhbG9nLnht
bCIvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJraXRndGstc2VjdGlv
bnMudHh0IGIvU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJraXRndGstc2VjdGlvbnMudHh0Cmlu
ZGV4IGI3MDdiZjgzZDcxMWEwYzFlMTc3YWI2NGYxNDc2ZjRjMWUwZmJlN2EuLmNlMTE5Yjg4Y2E0
Mzg2Yzk2ODZmODc0ZmY0YzZhM2VlNGFhNzE2OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL2RvY3Mvd2Via2l0Z3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9k
b2NzL3dlYmtpdGd0ay1zZWN0aW9ucy50eHQKQEAgLTY4Niw2ICs2ODYsNDkgQEAgV2ViS2l0SWNv
bkRhdGFiYXNlUHJpdmF0ZQogPC9TRUNUSU9OPgogCiA8U0VDVElPTj4KKzxGSUxFPndlYmtpdHdl
YnVzZXJtZWRpYWxpc3Q8L0ZJTEU+Cis8VElUTEU+V2ViS2l0V2ViVXNlck1lZGlhTGlzdDwvVElU
TEU+CitXZWJLaXRXZWJVc2VyTWVkaWFMaXN0Cit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9n
ZXRfbGVuZ3RoCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfaXRlbV9uYW1lCit3ZWJr
aXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9pc19pdGVtX3NlbGVjdGVkCit3ZWJraXRfd2ViX3VzZXJf
bWVkaWFfbGlzdF9zZWxlY3RfaXRlbQorPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXRUJLSVRfSVNf
V0VCX1VTRVJfTUVESUFfTElTVAorV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX0xJU1RfQ0xBU1MK
K1dFQktJVF9XRUJfVVNFUl9NRURJQV9MSVNUCitXRUJLSVRfV0VCX1VTRVJfTUVESUFfTElTVF9D
TEFTUworV0VCS0lUX1dFQl9VU0VSX01FRElBX0xJU1RfR0VUX0NMQVNTCitXRUJLSVRfVFlQRV9X
RUJfVVNFUl9NRURJQV9MSVNUCis8U1VCU0VDVElPTiBQcml2YXRlPgorV2ViS2l0V2ViVXNlck1l
ZGlhTGlzdFByaXZhdGUKK1dlYktpdFdlYlVzZXJNZWRpYUxpc3RDbGFzcword2Via2l0X3dlYl91
c2VyX21lZGlhX2xpc3RfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+Cis8RklMRT53
ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0PC9GSUxFPgorPFRJVExFPldlYktpdFdlYlVzZXJNZWRp
YVJlcXVlc3Q8L1RJVExFPgorV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdAord2Via2l0X3dlYl91
c2VyX21lZGlhX3JlcXVlc3RfZmFpbAord2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfc3Vj
Y2VlZAord2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNfYXVkaW8KK3dlYmtpdF93
ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRzX3ZpZGVvCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFf
cmVxdWVzdF9nZXRfc2VjdXJpdHlfb3JpZ2luCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dFQktJ
VF9JU19XRUJfVVNFUl9NRURJQV9SRVFVRVNUCitXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfUkVR
VUVTVF9DTEFTUworV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVAorV0VCS0lUX1dF
Ql9VU0VSX01FRElBX1JFUVVFU1QKK1dFQktJVF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUX0NMQVNT
CitXRUJLSVRfV0VCX1VTRVJfTUVESUFfUkVRVUVTVF9HRVRfQ0xBU1MKKzxTVUJTRUNUSU9OIFBy
aXZhdGU+CitXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3MKK1dlYktpdFdlYlVzZXJNZWRp
YVJlcXVlc3RQcml2YXRlCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9nZXRfdHlwZQor
PC9TRUNUSU9OPgorCis8U0VDVElPTj4KIDxGSUxFPndlYmtpdGZhdmljb25kYXRhYmFzZTwvRklM
RT4KIDxUSVRMRT5XZWJLaXRGYXZpY29uRGF0YWJhc2U8L1RJVExFPgogV2ViS2l0RmF2aWNvbkRh
dGFiYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmggYi9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmgKaW5kZXggYWE3YjkzZGJkYThjMjZkZTIx
ZTk4MmQzOWM2MTY1ZmI4YzJmNWU3Ny4uYmYxNmEyNWU5MmVkNTVmOWIyMDdiNGE3MmJjNjNiYjg5
NjlmMWViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaApAQCAtNTEsNiArNTEsOCBAQAog
I2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5oPgogI2luY2x1ZGUgPHdl
YmtpdC93ZWJraXR3ZWJyZXNvdXJjZS5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJzZXR0
aW5ncy5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0Lmg+CisjaW5j
bHVkZSA8d2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJr
aXQvd2Via2l0d2Vidmlldy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0
dXJlcy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dXNlcm1lZGlhbGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNl
cm1lZGlhbGlzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTJiZGNiMjE4NDU3Y2RiZmUzYTZlM2YzNDcyNDUw
NjI5ZDhlMWNhYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmNwcApAQCAtMCwwICsxLDE2NyBAQAorLyoKKyAqICBDb3B5
cmlnaHQgKEMpIDIwMTIgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rvbiwg
TUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJ3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
CisjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1
c2VybWVkaWFsaXN0cHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwor
CisvKioKKyAqIFNFQ1RJT046d2Via2l0d2VidXNlcm1lZGlhbGlzdAorICogQHNob3J0X2Rlc2Ny
aXB0aW9uOiBVc2VyTWVkaWEgTGlzdAorICogQFRpdGxlOiBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0
CisgKgorICogI1dlYktpdFdlYlVzZXJNZWRpYUxpc3QgY29udGFpbnMgYSBsaXN0IG9mCisgKiBh
dWRpbyBvciB2aWRlbyBzb3VyY2VzIGZyb20gYSBXZWJVc2VyTWVkaWFSZXF1ZXN0CisgKgorICog
U2luY2U6IDIuMAorICovCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3N0cnVjdCBfV2Vi
S2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGUgeworICAgIFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291
cmNlVmVjdG9yIHNvdXJjZXM7CisgICAgVmVjdG9yPGJvb2w+IHNvdXJjZVNlbGVjdGlvbnM7Cit9
OworCitHX0RFRklORV9UWVBFKFdlYktpdFdlYlVzZXJNZWRpYUxpc3QsIHdlYmtpdF93ZWJfdXNl
cl9tZWRpYV9saXN0LCBHX1RZUEVfT0JKRUNUKQorCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJVc2Vy
TWVkaWFMaXN0RmluYWxpemUoR09iamVjdCogb2JqZWN0KQoreworICAgIFdFQktJVF9XRUJfVVNF
Ul9NRURJQV9MSVNUKG9iamVjdCktPnByaXYtPn5XZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0
ZSgpOworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X3BhcmVu
dF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
dXNlcl9tZWRpYV9saXN0X2NsYXNzX2luaXQoV2ViS2l0V2ViVXNlck1lZGlhTGlzdENsYXNzKiBs
aXN0Q2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9D
TEFTUyhsaXN0Q2xhc3MpOworICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRXZWJV
c2VyTWVkaWFMaXN0RmluYWxpemU7CisKKyAgICB3ZWJraXRJbml0KCk7CisKKyAgICBnX3R5cGVf
Y2xhc3NfYWRkX3ByaXZhdGUobGlzdENsYXNzLCBzaXplb2YoV2ViS2l0V2ViVXNlck1lZGlhTGlz
dFByaXZhdGUpKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3Rf
aW5pdChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBsaXN0KQoreworICAgIFdlYktpdFdlYlVzZXJN
ZWRpYUxpc3RQcml2YXRlKiBwcml2ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKGxpc3Qs
IFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1QsIFdlYktpdFdlYlVzZXJNZWRpYUxpc3RQ
cml2YXRlKTsKKyAgICBsaXN0LT5wcml2ID0gcHJpdjsKKworICAgIC8vIHBsYWNlbWVudCBuZXcg
c3ludGF4CisgICAgbmV3IChwcml2KSBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZSgpOwor
fQorCisvKioKKyAqIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9sZW5ndGg6CisgKiBA
bGlzdDogdGhlIFdlYktpdFdlYlVzZXJNZWRpYUxpc3QgaXRzZWxmCisgKgorICogUmV0dXJucyB0
aGUgc2l6ZSBvZiB0aGUgZWxlbWVudHMgbGlzdC4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IG51bWJl
ciBvZiBlbGVtZW50cy4KKyAqCisgKiBTaW5jZTogMi4wCisgKi8KK2d1aW50IHdlYmtpdF93ZWJf
dXNlcl9tZWRpYV9saXN0X2dldF9sZW5ndGgoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCogbGlzdCkK
K3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfTElT
VChsaXN0KSwgMCk7CisKKyAgICByZXR1cm4gY29yZShsaXN0KS5zaXplKCk7Cit9CisKKworLyoq
CisgKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfaXRlbV9uYW1lOgorICogQGxpc3Q6
IHRoZSAjV2ViS2l0V2ViVXNlck1lZGlhTGlzdCBpdHNlbGYKKyAqIEBpbmRleDogdGhlIHdhbnRl
ZCBlbGVtZW50IGluZGV4LgorICoKKyAqIFJldHVybnMgdGhlIGRldmljZSBuYW1lIG9mIHRoZSBl
bGVtZW50LgorICoKKyAqIFJldHVybiB2YWx1ZTogdGhlIGRldmljZSBpZCBvZiB0aGUgQGluZGV4
IGdpdmVuIGVsZW1lbnQuCisgKgorICogU2luY2U6IDIuMAorICovCitjb25zdCBnY2hhciogd2Vi
a2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2l0ZW1fbmFtZShXZWJLaXRXZWJVc2VyTWVkaWFM
aXN0KiBsaXN0LCBndWludCBpbmRleCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfSVNfV0VCX1VTRVJfTUVESUFfTElTVChsaXN0KSwgMCk7CisKKyAgICBXZWJDb3JlOjpNZWRp
YVN0cmVhbVNvdXJjZVZlY3RvciYgc291cmNlcyA9IGNvcmUobGlzdCk7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoaW5kZXggPCBzb3VyY2VzLnNpemUoKSwgMCk7CisKKyAgICByZXR1cm4gZ19z
dHJkdXAoc291cmNlc1tpbmRleF0tPm5hbWUoKS51dGY4KCkuZGF0YSgpKTsKK30KKworLyoqCisg
KiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9pc19pdGVtX3NlbGVjdGVkOgorICogQGxpc3Q6
IHRoZSAjV2ViS2l0V2ViVXNlck1lZGlhTGlzdCBpdHNlbGYKKyAqIEBpbmRleDogdGhlIHdhbnRl
ZCBlbGVtZW50IGluZGV4LgorICoKKyAqIEluZGljYXRlIGlmIGEgZGV2aWNlIGlzIG1hcmtlZCBh
cyBzZWxlY3RlZC4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IFRydWUgaWYgdGhlIGRldmljZSByZXBy
ZXNlbnRlZCBieSBAaW5kZXggaXMgbWFya2VkIGFzIHNlbGVjdGVkLgorICoKKyAqIFNpbmNlOiAy
LjAKKyAqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfaXNfaXRlbV9zZWxl
Y3RlZChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBsaXN0LCBndWludCBpbmRleCkKK3sKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfTElTVChsaXN0KSwg
RkFMU0UpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGluZGV4IDwgY29yZShsaXN0KS5zaXpl
KCksIEZBTFNFKTsKKworICAgIHJldHVybiBsaXN0LT5wcml2LT5zb3VyY2VTZWxlY3Rpb25zW2lu
ZGV4XTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9zZWxlY3RfaXRl
bToKKyAqIEBsaXN0OiB0aGUgI1dlYktpdFdlYlVzZXJNZWRpYUxpc3QgaXRzZWxmCisgKiBAaW5k
ZXg6IHRoZSB3YW50ZWQgZWxlbWVudCBpbmRleC4KKyAqCisgKiBNYXJrIGEgZGV2aWNlIGFzIHNl
bGVjdGVlZC4KKyAqCisgKiBTaW5jZTogMi4wCisgKi8KK3ZvaWQgd2Via2l0X3dlYl91c2VyX21l
ZGlhX2xpc3Rfc2VsZWN0X2l0ZW0oV2ViS2l0V2ViVXNlck1lZGlhTGlzdCogbGlzdCwgZ3VpbnQg
aW5kZXgpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFf
TElTVChsaXN0KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChpbmRleCA8IGNvcmUobGlzdCkuc2l6
ZSgpKTsKKworICAgIGxpc3QtPnByaXYtPnNvdXJjZVNlbGVjdGlvbnNbaW5kZXhdID0gVFJVRTsK
K30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVj
dG9yJiBjb3JlKFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGxpc3QpCit7CisgICAgcmV0dXJuIGxp
c3QtPnByaXYtPnNvdXJjZXM7Cit9CisKK1dlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGtpdE5ldyhj
b25zdCBXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgc291cmNlcykKK3sKKyAgICBX
ZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiB3ZWJMaXN0ID0gV0VCS0lUX1dFQl9VU0VSX01FRElBX0xJ
U1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1QsIE5VTEwpKTsK
KyAgICB3ZWJMaXN0LT5wcml2LT5zb3VyY2VzID0gc291cmNlczsKKyAgICB3ZWJMaXN0LT5wcml2
LT5zb3VyY2VTZWxlY3Rpb25zLmZpbGwoRkFMU0UsIHNvdXJjZXMuc2l6ZSgpKTsKKworICAgIHJl
dHVybiB3ZWJMaXN0OworfQorCit9CisKKyNlbmRpZiAvKiBFTkFCTEUoTUVESUFfU1RSRUFNKSAq
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRp
YWxpc3QuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmI2N2FlY2FhZDJmZmMyMTEzZmVmMWRmMjNiMDRhN2VhYTQ4MDM5YQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2Vy
bWVkaWFsaXN0LmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIg
Q29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEg
IFVTQQorICovCisKKworI2lmbmRlZiB3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0X2gKKyNkZWZpbmUg
d2Via2l0d2VidXNlcm1lZGlhbGlzdF9oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2lu
Y2x1ZGUgPGdsaWIuaD4KKworI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZpbmVzLmg+CisKK0df
QkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNUICAg
ICAgICAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF90eXBlKCkpCisjZGVm
aW5lIFdFQktJVF9XRUJfVVNFUl9NRURJQV9MSVNUKG9iaikgICAgICAgICAgICAgICAoR19UWVBF
X0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJ
U1QsIFdlYktpdFdlYlVzZXJNZWRpYUxpc3QpKQorI2RlZmluZSBXRUJLSVRfV0VCX1VTRVJfTUVE
SUFfTElTVF9DTEFTUyhrbGFzcykgICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFz
cyksICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNULCBXZWJLaXRXZWJVc2VyTWVkaWFM
aXN0Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfTElTVChvYmopICAg
ICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9X
RUJfVVNFUl9NRURJQV9MSVNUKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX0xJ
U1RfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VC
S0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfTElTVCkpCisjZGVmaW5lIFdFQktJVF9XRUJfVVNFUl9N
RURJQV9MSVNUX0dFVF9DTEFTUyhvYmopICAgICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygo
b2JqKSwgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1QsIFdlYktpdFdlYlVzZXJNZWRp
YUxpc3RDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0IFdl
YktpdFdlYlVzZXJNZWRpYUxpc3Q7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlh
TGlzdENsYXNzIFdlYktpdFdlYlVzZXJNZWRpYUxpc3RDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9X
ZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZSBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0
ZTsKKworc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0IHsKKyAgICBHT2JqZWN0IHBhcmVu
dF9pbnN0YW5jZTsKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZSAqcHJpdjsKK307
CisKK3N0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhTGlzdENsYXNzIHsKKyAgICBHT2JqZWN0Q2xh
c3MgcGFyZW50X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dlYl91c2Vy
X21lZGlhX2xpc3RfZ2V0X3R5cGUgKHZvaWQpIEdfR05VQ19DT05TVDsKKworV0VCS0lUX0FQSSBn
dWludAord2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2xlbmd0aCAgICAgICAgKFdlYktp
dFdlYlVzZXJNZWRpYUxpc3QgKmxpc3QpOworCitXRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKK3dl
YmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9pdGVtX25hbWUgICAgIChXZWJLaXRXZWJVc2Vy
TWVkaWFMaXN0ICpsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGd1aW50IGluZGV4KTsKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfdXNl
cl9tZWRpYV9saXN0X2lzX2l0ZW1fc2VsZWN0ZWQgIChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0ICps
aXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50
IGluZGV4KTsKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3Rfc2Vs
ZWN0X2l0ZW0gICAgICAgKFdlYktpdFdlYlVzZXJNZWRpYUxpc3QgKmxpc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgaW5kZXgpOworCitHX0VO
RF9ERUNMUworCisjZW5kaWYgLyogd2Via2l0d2VidXNlcm1lZGlhbGlzdF9oICovCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdHByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJp
dmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjExOThjYWVjZmI2Y2VmN2M4MGFiOTZhZjU0MzZmNTNhNTNjOTdi
ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dXNlcm1lZGlhbGlzdHByaXZhdGUuaApAQCAtMCwwICsxLDM3IEBACisvKgorICogIENvcHlyaWdo
dCAoQykgMjAxMiBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAg
MDIxMTAtMTMwMSAgVVNBCisgKi8KKworCisjaWZuZGVmIHdlYmtpdHdlYnVzZXJtZWRpYWxpc3Rw
cml2YXRlX2gKKyNkZWZpbmUgd2Via2l0d2VidXNlcm1lZGlhbGlzdHByaXZhdGVfaAorCisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCisj
aW5jbHVkZSAid2Via2l0d2VidXNlcm1lZGlhbGlzdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGNvcmUoV2ViS2l0V2ViVXNlck1l
ZGlhTGlzdCopOworV2ViS2l0V2ViVXNlck1lZGlhTGlzdCoga2l0TmV3KGNvbnN0IFdlYkNvcmU6
Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJik7CisKK30KKworI2VuZGlmIC8qIEVOQUJMRShNRURJ
QV9TVFJFQU0pICovCisKKyNlbmRpZiAvKiB3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZV9o
ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1l
ZGlhcmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1l
ZGlhcmVxdWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTRmMzFmMzM1ZWE4OWU3Mjc0M2U5ZjcwMTE0NGVm
NzQxMzQxZjA5MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0LmNwcApAQCAtMCwwICsxLDE5OCBAQAorLyoKKyAqICBD
b3B5cmlnaHQgKEMpIDIwMTIgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICog
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rv
biwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuaCIKKworI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNl
LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFSZXF1
ZXN0LmgiCisjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJr
aXRzZWN1cml0eW9yaWdpbnByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFs
aXN0cHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRl
LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCisvKioKKyAqIFNFQ1RJT046d2Vi
a2l0d2VidXNlcm1lZGlhcmVxdWVzdAorICogQHNob3J0X2Rlc2NyaXB0aW9uOiBUaGUgV2ViS2l0
J3MgVXNlck1lZGlhIFJlcXVlc3QuCisgKiBAVGl0bGU6IFdlYktpdFdlYlVzZXJNZWRpYVJlcXVl
c3QKKyAqCisgKiBUaGlzIG9iamVjdCBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gb2YgYSBtZWRp
YSByZXF1ZXN0LgorICogSXQgY2FuIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhlIHJlcXVlc3QgaXMg
YXNraW5nIGZvciBhdWRpbyBhbmQvb3IgdmlkZW8uCisgKgorICogU2luY2U6IDIuMAorICovCisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3N0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhUmVx
dWVzdFByaXZhdGUgeworICAgIFJlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0PiB1c2Vy
TWVkaWFSZXF1ZXN0OworfTsKKworR19ERUZJTkVfVFlQRShXZWJLaXRXZWJVc2VyTWVkaWFSZXF1
ZXN0LCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdCwgR19UWVBFX09CSkVDVCkKKworc3Rh
dGljIHZvaWQgd2Via2l0V2ViVXNlck1lZGlhUmVxdWVzdEZpbmFsaXplKEdPYmplY3QgKm9iamVj
dCkKK3sKKyAgICBXRUJLSVRfV0VCX1VTRVJfTUVESUFfUkVRVUVTVChvYmplY3QpLT5wcml2LT5+
V2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdFByaXZhdGUoKTsKKworICAgIEdfT0JKRUNUX0NMQVNT
KHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9i
amVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2Ns
YXNzX2luaXQoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdENsYXNzKiByZXF1ZXN0Q2xhc3MpCit7
CisgICAgR09iamVjdENsYXNzKiBnb2JqZWN0X2NsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVz
dENsYXNzKTsKKyAgICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdFdlYlVzZXJNZWRp
YVJlcXVlc3RGaW5hbGl6ZTsKKworICAgIHdlYmtpdEluaXQoKTsKKworICAgIGdfdHlwZV9jbGFz
c19hZGRfcHJpdmF0ZShyZXF1ZXN0Q2xhc3MsIHNpemVvZihXZWJLaXRXZWJVc2VyTWVkaWFSZXF1
ZXN0UHJpdmF0ZSkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVx
dWVzdF9pbml0KFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgV2Vi
S2l0V2ViVXNlck1lZGlhUmVxdWVzdFByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VU
X1BSSVZBVEUocmVxdWVzdCwgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCwgV2Vi
S2l0V2ViVXNlck1lZGlhUmVxdWVzdFByaXZhdGUpOworICAgIHJlcXVlc3QtPnByaXYgPSBwcml2
OworCisgICAgbmV3IChwcml2KSBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSgpOwor
fQorCisvKioKKyAqIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRzX2F1ZGlvOgor
ICogQHJlcXVlc3Q6IHRoZSAjV2ViS2l0VXNlck1lZGlhUmVxdWVzdCBpdHNlbGYuCisgKgorICog
SW5kaWNhdGVzIHRoZSBjb250ZW50IG9mIGFuIFVzZXJNZWRpYVJlcXVlc3QuCisgKgorICogUmV0
dXJuIHZhbHVlOiAlVFJVRSBpZiB0aGUgcmVxdWVzdCBjb250YWlucyBhbiBhdWRpbyByZXF1ZXN0
IG9yICVGQUxTRSBpZiBvdGhlcndpc2UuCisgKgorICogU2luY2U6IDIuMAorICovCitnYm9vbGVh
biB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF93YW50c19hdWRpbyhXZWJLaXRXZWJVc2Vy
TWVkaWFSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfVVNFUl9NRURJQV9SRVFVRVNUKHJlcXVlc3QpLCBGQUxTRSk7CisKKyAgICByZXR1
cm4gY29yZShyZXF1ZXN0KS0+YXVkaW8oKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3VzZXJf
bWVkaWFfcmVxdWVzdF93YW50c192aWRlbzoKKyAqIEByZXF1ZXN0OiB0aGUgI1dlYktpdFVzZXJN
ZWRpYVJlcXVlc3QgaXRzZWxmLgorICoKKyAqIEluZGljYXRlcyB0aGUgY29udGVudCBvZiBhbiBV
c2VyTWVkaWFSZXF1ZXN0LgorICoKKyAqIFJldHVybiB2YWx1ZTogJVRSVUUgaWYgdGhlIHJlcXVl
c3QgY29udGFpbnMgYSB2aWRlbyByZXF1ZXN0IG9yICVGQUxTRSBpZiBvdGhlcndpc2UuCisgKgor
ICogU2luY2U6IDIuMAorICovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVz
dF93YW50c192aWRlbyhXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0KQoreworICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9SRVFVRVNUKHJl
cXVlc3QpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gY29yZShyZXF1ZXN0KS0+dmlkZW8oKTsKK30K
KworLyoqCisgKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9nZXRfc2VjdXJpdHlfb3Jp
Z2luOgorICogQHJlcXVlc3Q6IHRoZSAjV2ViS2l0VXNlck1lZGlhUmVxdWVzdCBpdHNlbGYuCisg
KgorICogUmV0dXJucyB0aGUgc2VjdXJpdHkgb3JpZ2luIG9mIHRoZSBNZWRpYSBSZXF1ZXN0Lgor
ICoKKyAqIFJldHVybiB2YWx1ZTogKHRyYW5zZmVyIG5vbmUpOiB0aGUgc2VjdXJpdHkgb3JpZ2lu
IG9mIHRoZSBtZWRpYSByZXF1ZXN0LgorICoKKyAqIFNpbmNlOiAyLjAKKyAqLworV2ViS2l0U2Vj
dXJpdHlPcmlnaW4qIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2dldF9zZWN1cml0eV9v
cmlnaW4oV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfUkVRVUVTVChyZXF1ZXN0KSwg
MCk7CisKKyAgICByZXR1cm4ga2l0KGNvcmUocmVxdWVzdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl91c2VyX21l
ZGlhX3JlcXVlc3Rfc3VjY2VlZDoKKyAqIEB3ZWJSZXF1ZXN0OiBhICNXZWJLaXRXZWJVc2VyTWVk
aWFSZXF1ZXN0CisgKiBAYXVkaW9NZWRpYUxpc3Q6IGEgI1dlYktpdFdlYlVzZXJNZWRpYUxpc3Qg
Y29udGFpbmluZyBhdWRpbyBkZXZpY2VzCisgKiBAdmlkZW9NZWRpYUxpc3Q6IGEgI1dlYktpdFdl
YlVzZXJNZWRpYUxpc3QgY29udGFpbmluZyB2aWRlbyBkZXZpY2VzCisgKgorICogVGhpcyBtZXRo
b2Qgc2hvdWxkIGJlIGNhbGxlZCBieSB0aGUgYXBwbGljYXRpb24gYWZ0ZXIgdGhlIHVzZXIgc2Vs
ZWN0cworICogYSBtZWRpYSBkZXZpY2UgYW5kIGFjY2VwdHMgYW4gbWVkaWEgcmVxdWVzdAorICoK
KyAqIFNpbmNlOiAyLjAKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rf
c3VjY2VlZChXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiB3ZWJSZXF1ZXN0LCBXZWJLaXRXZWJV
c2VyTWVkaWFMaXN0KiBhdWRpb01lZGlhTGlzdCwgV2ViS2l0V2ViVXNlck1lZGlhTGlzdCogdmlk
ZW9NZWRpYUxpc3QpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJf
TUVESUFfUkVRVUVTVCh3ZWJSZXF1ZXN0KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRf
SVNfV0VCX1VTRVJfTUVESUFfTElTVChhdWRpb01lZGlhTGlzdCkpOworICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX0xJU1QodmlkZW9NZWRpYUxpc3QpKTsKKwor
ICAgIFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMgPSBjb3Jl
KGF1ZGlvTWVkaWFMaXN0KTsKKyAgICBXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYg
dmlkZW9Tb3VyY2VzID0gY29yZSh2aWRlb01lZGlhTGlzdCk7CisKKyAgICBmb3IgKHNpemVfdCBp
ID0gYXVkaW9Tb3VyY2VzLnNpemUoKSAtIDE7IGkgIT0gKHNpemVfdCkgLTE7IC0taSkKKyAgICAg
ICAgaWYgKCF3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9pc19pdGVtX3NlbGVjdGVkKGF1ZGlv
TWVkaWFMaXN0LCBpKSkKKyAgICAgICAgICAgIGF1ZGlvU291cmNlcy5yZW1vdmUoaSk7CisKKyAg
ICBmb3IgKHNpemVfdCBpID0gdmlkZW9Tb3VyY2VzLnNpemUoKSAtIDE7IGkgIT0gKHNpemVfdCkg
LTE7IC0taSkKKyAgICAgICAgaWYgKCF3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9pc19pdGVt
X3NlbGVjdGVkKHZpZGVvTWVkaWFMaXN0LCBpKSkKKyAgICAgICAgICAgIHZpZGVvU291cmNlcy5y
ZW1vdmUoaSk7CisKKyAgICBjb3JlKHdlYlJlcXVlc3QpLT5zdWNjZWVkKGF1ZGlvU291cmNlcywg
dmlkZW9Tb3VyY2VzKTsKKworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19yZWplY3RfdXNl
cl9tZWRpYV9yZXF1ZXN0OgorICogQHdlYlJlcXVlc3Q6IGEgI1dlYktpdFdlYlVzZXJNZWRpYVJl
cXVlc3QKKyAqCisgKiBUaGlzIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkIGJ5IHRoZSBhcHBsaWNh
dGlvbiB3aGVuIHRoZSB1c2VyIHJlamVjdGVkIGEgdXNlck1lZGlhIHJlcXVlc3QuCisgKgorICog
U2luY2U6IDIuMAorICoqLwordm9pZCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9mYWls
KFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIHdlYlJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCh3ZWJSZXF1ZXN0KSk7Cisg
ICAgY29yZSh3ZWJSZXF1ZXN0KS0+ZmFpbCgpOworfQorCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0KiBjb3JlKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVl
c3QqIHJlcXVlc3QpCit7CisgICAgQVNTRVJUKFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9SRVFV
RVNUKHJlcXVlc3QpKTsKKworICAgIHJldHVybiByZXF1ZXN0LT5wcml2LT51c2VyTWVkaWFSZXF1
ZXN0LmdldCgpOworfQorCitXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiBraXROZXcoV2ViQ29y
ZTo6VXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBBU1NFUlQocmVxdWVzdCk7CisK
KyAgICBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiB3ZWJSZXF1ZXN0ID0gV0VCS0lUX1dFQl9V
U0VSX01FRElBX1JFUVVFU1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElB
X1JFUVVFU1QsIE5VTEwpKTsKKyAgICB3ZWJSZXF1ZXN0LT5wcml2LT51c2VyTWVkaWFSZXF1ZXN0
ID0gcmVxdWVzdDsKKworICAgIHJldHVybiB3ZWJSZXF1ZXN0OworfQorCit9CisKKyNlbmRpZiAv
KiBFTkFCTEUoTUVESUFfU1RSRUFNKSAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWZlNDY3YWRiNmUw
YWY3ODllNzdlZGNjMzY4NzhiY2RiYTY1YWNiNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0LmgKQEAgLTAsMCArMSw3
MyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl
ZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKworI2lmbmRlZiB3
ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0X2gKKyNkZWZpbmUgd2Via2l0d2VidXNlcm1lZGlhcmVx
dWVzdF9oCisKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmgiCisKKyNpbmNsdWRl
IDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Vi
a2l0ZGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfV0VC
X1VTRVJfTUVESUFfUkVRVUVTVCAgICAgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVx
dWVzdF9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfV0VCX1VTRVJfTUVESUFfUkVRVUVTVChv
YmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRf
VFlQRV9XRUJfVVNFUl9NRURJQV9SRVFVRVNULCBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KSkK
KyNkZWZpbmUgV0VCS0lUX1dFQl9VU0VSX01FRElBX1JFUVVFU1RfQ0xBU1Moa2xhc3MpICAgIChH
X1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVE
SUFfUkVRVUVTVCwgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdENsYXNzKSkKKyNkZWZpbmUgV0VC
S0lUX0lTX1dFQl9VU0VSX01FRElBX1JFUVVFU1Qob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tf
SU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCkp
CisjZGVmaW5lIFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9SRVFVRVNUX0NMQVNTKGtsYXNzKSAo
R19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01F
RElBX1JFUVVFU1QpKQorI2RlZmluZSBXRUJLSVRfV0VCX1VTRVJfTUVESUFfUkVRVUVTVF9HRVRf
Q0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQ
RV9XRUJfVVNFUl9NRURJQV9SRVFVRVNULCBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3Mp
KQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCBXZWJLaXRXZWJV
c2VyTWVkaWFSZXF1ZXN0OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVl
c3RDbGFzcyBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBf
V2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdFByaXZhdGUgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVz
dFByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCB7CisgICAgR09i
amVjdCBwYXJlbnRfaW5zdGFuY2U7CisgICAgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdFByaXZh
dGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RDbGFzcyB7
CisgICAgR09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKK307CisKK1dFQktJVF9BUEkgR1R5cGUK
K3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2dldF90eXBlICh2b2lkKSBHX0dOVUNfQ09O
U1Q7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0
X3dhbnRzX2F1ZGlvICAgICAgICAgICAgICAoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCAqcmVx
dWVzdCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1
ZXN0X3dhbnRzX3ZpZGVvICAgICAgICAgICAgICAoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCAq
cmVxdWVzdCk7CisKK1dFQktJVF9BUEkgV2ViS2l0U2VjdXJpdHlPcmlnaW4gKgord2Via2l0X3dl
Yl91c2VyX21lZGlhX3JlcXVlc3RfZ2V0X3NlY3VyaXR5X29yaWdpbiAgICAgIChXZWJLaXRXZWJV
c2VyTWVkaWFSZXF1ZXN0ICpyZXF1ZXN0KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2Vi
X3VzZXJfbWVkaWFfcmVxdWVzdF9mYWlsICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlVz
ZXJNZWRpYVJlcXVlc3QgKnJlcXVlc3QpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJf
dXNlcl9tZWRpYV9yZXF1ZXN0X3N1Y2NlZWQgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVXNl
ck1lZGlhUmVxdWVzdCAqd2ViUmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViVXNlck1lZGlhTGlzdCogYXVkaW9N
ZWRpYUxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIHZpZGVvTWVkaWFMaXN0KTsKKworR19F
TkRfREVDTFMKKworI2VuZGlmIC8qIHdlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3RfaCAqLwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVl
c3Rwcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlh
cmVxdWVzdHByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODJmYTcxYWM2OGNmMWExMWU0MTJkNzU2MmRh
Y2JiNzM2NGY2MmZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlLmgKQEAgLTAsMCArMSw0MCBAQAorLyoK
KyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
IEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKworI2lmbmRlZiB3ZWJraXR3ZWJ1
c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZV9oCisjZGVmaW5lIHdlYmtpdHdlYnVzZXJtZWRpYXJlcXVl
c3Rwcml2YXRlX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJ3ZWJr
aXR3ZWJ1c2VybWVkaWFyZXF1ZXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBV
c2VyTWVkaWFSZXF1ZXN0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQ29yZTo6VXNl
ck1lZGlhUmVxdWVzdCogY29yZShXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Kik7CitXZWJLaXRX
ZWJVc2VyTWVkaWFSZXF1ZXN0KiBraXROZXcoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCopOwor
Cit9CisKKyNlbmRpZiAvKiBFTkFCTEUoTUVESUFfU1RSRUFNKSAqLworCisjZW5kaWYgLyogd2Vi
a2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IDU1NTE3MWFhMWNiNmRlMzMzYTBjZjYzY2IzYWEz
OTRmMzk0YTA0MGQuLmI3MGYyZDRlNzE5NDRmMzYxZDgyMDZmNWM1NWUyY2E1MWJiM2E2OTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTgzLDYgKzgz
LDcgQEAKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYUNs
aWVudEd0ay5oIgogI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01Eb2N1bWVudFByaXZhdGUuaCIK
ICNpbmNsdWRlICJ3ZWJraXRkb3dubG9hZC5oIgogI2luY2x1ZGUgIndlYmtpdGRvd25sb2FkcHJp
dmF0ZS5oIgpAQCAtMTA3LDYgKzEwOCw4IEBACiAjaW5jbHVkZSAid2Via2l0d2VicmVzb3VyY2Uu
aCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJzZXR0aW5nc3ByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJr
aXR3ZWJwbHVnaW5kYXRhYmFzZXByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVk
aWFsaXN0cHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2
YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaCIKICNpbmNsdWRlICJ3
ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oIgogI2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CkBAIC0x
MTksNiArMTIyLDcgQEAKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEd0ay5oIgog
I2VuZGlmCiAKKwogLyoqCiAgKiBTRUNUSU9OOndlYmtpdHdlYnZpZXcKICAqIEBzaG9ydF9kZXNj
cmlwdGlvbjogVGhlIGNlbnRyYWwgY2xhc3Mgb2YgdGhlIFdlYktpdEdUSysgQVBJCkBAIC0yMTAs
NiArMjE0LDggQEAgZW51bSB7CiAgICAgRURJVElOR19FTkRFRCwKICAgICBWSUVXUE9SVF9BVFRS
SUJVVEVTX1JFQ09NUFVURV9SRVFVRVNURUQsCiAgICAgVklFV1BPUlRfQVRUUklCVVRFU19DSEFO
R0VELAorICAgIFVTRVJfTUVESUFfUkVRVUVTVEVELAorICAgIFVTRVJfTUVESUFfUkVRVUVTVF9D
QU5DRUxMRUQsCiAgICAgUkVTT1VSQ0VfUkVTUE9OU0VfUkVDRUlWRUQsCiAgICAgUkVTT1VSQ0Vf
TE9BRF9GSU5JU0hFRCwKICAgICBSRVNPVVJDRV9DT05URU5UX0xFTkdUSF9SRUNFSVZFRCwKQEAg
LTI3MjQsNiArMjczMCw1MiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5p
dChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgICAgICAgIFdFQktJVF9U
WVBFX1ZJRVdQT1JUX0FUVFJJQlVURVMpOwogCiAgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmll
dzo6dXNlci1tZWRpYS1yZXF1ZXN0ZWQ6CisgICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IHdo
aWNoIHJlY2VpdmVkIHRoZSBzaWduYWwKKyAgICAgKiBAcmVxdWVzdDogdGhlICNXZWJLaXRXZWJV
c2VyTWVkaWFScXVlc3QgYXR0cmlidXRlIHdoaWNoIGdlbmVyYXRlZCB0aGUgcmVxdWVzdC4KKyAg
ICAgKiBAYXVkaW9MaXN0OiBhICNXZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGNvbnRhaW5pbmcgdGhl
IGF2YWlsYWJsZSBhdWRpbyBtZWRpYSBvcHRpb25zLgorICAgICAqIEB2aWRlb0xpc3Q6IGEgI1dl
YktpdFdlYlVzZXJNZWRpYUxpc3QgY29udGFpbmluZyB0aGUgYXZhaWxhYmxlIHZpZGVvIG1lZGlh
IG9wdGlvbnMuCisgICAgICoKKyAgICAgKiBXaGVuIHRoZSBhcHBsaWNhdGlvbiByZXF1ZXN0IHVz
ZXJNZWRpYSwgdGhpcyBzaWduYWwgd2lsbCBiZSBlbWl0ZWQgd2l0aCB0aGUgcmVxdWVzdAorICAg
ICAqIGluZm9ybWF0aW9uIGFuZCB0aGUgYXZhaWxhYmxlIG9wdGlvbnMgdG8gYmUgc2VsZWN0ZWQu
CisgICAgICoKKyAgICAgKiBUaGVuIHRoZSB1c2VyIGlzIGV4cGVjdGVkIHRvIGNhbGwgZWl0aGVy
IHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3N1Y2NlZWQoKSBvcgorICAgICAqIHdlYmtp
dF93ZWJfdmlld19yZWplY3RfdXNlcl9tZWRpYV9yZXF1ZXN0KCkgdG8gYWNjZXB0IG9yIHJlamVj
dCB0aGUgcmVxdWVzdC4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjAuMAorICAgICAqLworICAg
IHdlYmtpdF93ZWJfdmlld19zaWduYWxzW1VTRVJfTUVESUFfUkVRVUVTVEVEXSA9IGdfc2lnbmFs
X25ldygidXNlci1tZWRpYS1yZXF1ZXN0ZWQiLAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xB
U1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAg
ICAgICAgMCwKKyAgICAgICAgICAgIDAsIDAsCisgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9W
T0lEX19PQkpFQ1RfT0JKRUNUX09CSkVDVCwKKyAgICAgICAgICAgIEdfVFlQRV9OT05FLCAzLAor
ICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCwKKyAgICAgICAg
ICAgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1QsCisgICAgICAgICAgICBXRUJLSVRf
VFlQRV9XRUJfVVNFUl9NRURJQV9MSVNUKTsKKworCisgICAgLyoqCisgICAgICogV2ViS2l0V2Vi
Vmlldzo6dXNlci1tZWRpYS1yZXF1ZXN0LWNhbmNlbGxlZDoKKyAgICAgKiBAd2ViX3ZpZXc6IHRo
ZSBvYmplY3Qgd2hpY2ggcmVjZWl2ZWQgdGhlIHNpZ25hbAorICAgICAqIEByZXF1ZXN0OiB0aGUg
I1dlYktpdFdlYlVzZXJNZWRpYVJxdWVzdCBpdHNlbGYKKyAgICAgKgorICAgICAqIFRoaXMgc2ln
bmFsIHdpbGwgYmUgZW1pdGVkIHdoZW4gdGhlIHVzZXIgY2FuY2VsZWQgaXRzIHVzZXJNZWRpYSBy
ZXF1ZXN0LgorICAgICAqCisgICAgICogU2luY2U6IDIuMC4wCisgICAgICovCisgICAgd2Via2l0
X3dlYl92aWV3X3NpZ25hbHNbVVNFUl9NRURJQV9SRVFVRVNUX0NBTkNFTExFRF0gPSBnX3NpZ25h
bF9uZXcoInVzZXItbWVkaWEtcmVxdWVzdC1jYW5jZWxsZWQiLAorICAgICAgICAgICAgR19UWVBF
X0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNU
LAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIDAsIDAsCisgICAgICAgICAgICB3ZWJraXRf
bWFyc2hhbF9WT0lEX19PQkpFQ1QsCisgICAgICAgICAgICBHX1RZUEVfTk9ORSwgMSwKKyAgICAg
ICAgICAgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX1JFUVVFU1QpOworCisKKyAgICAvKioK
ICAgICAgKiBXZWJLaXRXZWJWaWV3OjplbnRlcmluZy1mdWxsc2NyZWVuOgogICAgICAqIEB3ZWJf
dmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZC4K
ICAgICAgKiBAZWxlbWVudDogdGhlICNXZWJLaXRET01IVE1MRWxlbWVudCB3aGljaCBoYXMgcmVx
dWVzdGVkIGZ1bGwgc2NyZWVuIGRpc3BsYXkuCkBAIC0zNjI5LDcgKzM2ODEsNyBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfaW5pdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogI2VuZGlm
CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIHByaXYtPnVzZXJNZWRpYUNsaWVudCA9
IGFkb3B0UHRyKG5ldyBVc2VyTWVkaWFDbGllbnRHdGspOworICAgIHByaXYtPnVzZXJNZWRpYUNs
aWVudCA9IGFkb3B0UHRyKG5ldyBVc2VyTWVkaWFDbGllbnRHdGsod2ViVmlldykpOwogICAgIFdl
YkNvcmU6OnByb3ZpZGVVc2VyTWVkaWFUbyhwcml2LT5jb3JlUGFnZSwgcHJpdi0+dXNlck1lZGlh
Q2xpZW50LmdldCgpKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXRtYXJzaGFsLmxpc3QgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXRtYXJzaGFsLmxpc3QK
aW5kZXggYjc0Mjg5MDVjODk4M2NmYzc1ZWM1NDQ3NDEzM2NhMjhmNmQ3OTViNC4uNGQwYjlkOWUz
MmQzMmNjZDVjODNiZDBjNWNlNmYzZjJkMDhiYzU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0bWFyc2hhbC5saXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdG1h
cnNoYWwubGlzdApAQCAtMTgsNiArMTgsNyBAQCBFTlVNOk9CSkVDVCxPQkpFQ1QKIE9CSkVDVDpP
QkpFQ1QKIE9CSkVDVDpTVFJJTkcsU1RSSU5HLFBPSU5URVIKIE9CSkVDVDpWT0lECitWT0lEOk9C
SkVDVAogVk9JRDpPQkpFQ1QsT0JKRUNUCiBWT0lEOk9CSkVDVCxPQkpFQ1QsSU5UCiBWT0lEOk9C
SkVDVCxPQkpFQ1QsT0JKRUNUCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggZGIxNGExMGZkZmM3NWQ5M2NlYTZhNWMwZDVhNTFjMTAzN2I4MWYzOC4u
NTk0ZTEzZmZiMjkyZGI5NTM0YzRlNjM2MWNkYzk0MTI5OWRhOGQ0MSAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEy
LTEwLTAzICBEYW5pbG8gQ2VzYXIgTGVtZXMgZGUgUGF1bGEgIDxkYW5pbG8uY2VzYXJAY29sbGFi
b3JhLmNvLnVrPgorCisgICAgICAgIFtndGtdIGFkZGluZyBtZXRob2RzIGFuZCBzaWduYWxzIGZv
ciB1c2VybWVkaWEgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHdlYmtpdCBhbmQgYnJvd3NlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQzNzMKKworICAg
ICAgICBXaGVuIHRoZSB1c2VyIG1ha2UgYSBnZXRVc2VyTWVkaWEgY2FsbCwgd2VidmlldyB3aWxs
IGVtaXQgYSBzaWdpYWwgKHVzZXItbWVkaWEtcmVxdWVzdGVkKQorICAgICAgICB0byB0aGUgYXBw
bGljYXRpb24gY29udGFpbmluZyB0aGVuIHJlcXVlc3QgaXRzZWxmICh3ZWJraXR3ZWJ1c2VybWVk
aWFyZXF1ZXN0KSBhbmQgdHdvCisgICAgICAgIGxpc3Qgd2l0aCB0aGUgYXZhaWxhYmxlIGF1ZGlv
IGFuZCB2aWRlbyBkZXZpY2VzICh3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0KS4KKworICAgICAgICBU
aGUgYXBwbGljYXRpb24gbXVzdCBzaG93IHRoZSBsaXN0IHRvIHRoZSB1c2VyIGFuZCBhc2sgcGVy
bWlzc2lvbiB0byB1c2Ugb25lIG9mCisgICAgICAgIHRob3NlIGRldmljZXMgKG9yIHJlamVjdCB0
aGUgcmVxdWVzdCkuCisKKyAgICAgICAgSW4gY2FzZSB0aGUgdXNlciBhY2NlcHRzIHRoZSByZXF1
ZXN0LCB0aGUgYXBwbGljYXRpb24gbXVzdCBtYXJrIHRoZSBkZXZpY2UgYXMKKyAgICAgICAgc2Vs
ZWN0ZWQgKHVzaW5nIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X3NlbGVjdF9pdGVtKSBhbmQg
dGhlbiBjYWxsCisgICAgICAgIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3N1Y2NlZWQg
d2hpY2ggd2lsbCBoYW5kbGUgdGhlIHJlcXVlc3QgcHJvcGVybHkuCisKKyAgICAgICAgT24gdGhl
IGNhc2UgdGhlIHVzZXIgcmVqZWN0IHRoZSByZXF1ZXN0LCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFf
cmVxdWVzdF9mYWlsIG11c3QKKyAgICAgICAgYmUgY2FsbGVkLgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR3RrTGF1bmNoZXIvbWFpbi5jOgorICAg
ICAgICAodXNlck1lZGlhUmVxdWVzdENhbmNlbGxlZENiKToKKyAgICAgICAgKHVzZXJNZWRpYVJl
cXVlc3RlZENiKToKKyAgICAgICAgKGNyZWF0ZUJyb3dzZXIpOgorCiAyMDEyLTEwLTAyICBaYW4g
RG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAgICAgW0d0a10gU2V2ZXJh
bCB0ZXN0cyBsYXVuY2ggZ19vYmplY3RfcmVmL3VucmVmIGFzc2VydGlvbiBtZXNzYWdlcwpkaWZm
IC0tZ2l0IGEvVG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jIGIvVG9vbHMvR3RrTGF1bmNoZXIvbWFp
bi5jCmluZGV4IDJiYTc5MjQ3MjFkMDZjMGYxNjNkZWVjOWEyY2JlODNmYzM5MjJiMTUuLjJmNTQ3
MzU3ZTU5YjU5NzJiMDc2NWYyMTZiMzZiNzk1N2JjNzVlZjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0d0
a0xhdW5jaGVyL21haW4uYworKysgYi9Ub29scy9HdGtMYXVuY2hlci9tYWluLmMKQEAgLTIxMyw2
ICsyMTMsMTM2IEBAIHN0YXRpYyBHdGtXaWRnZXQgKmluc3BlY3Rvckluc3BlY3RXZWJWaWV3Q2Io
V2ViS2l0V2ViSW5zcGVjdG9yICppbnNwZWN0b3IsIFdlYktpCiAgICAgcmV0dXJuIEdUS19XSURH
RVQobGF1bmNoZXJJbnNwZWN0b3JXaW5kb3dHZXRXZWJWaWV3KExBVU5DSEVSX0lOU1BFQ1RPUl9X
SU5ET1coaW5zcGVjdG9yV2luZG93KSkpOwogfQogCitzdGF0aWMgdm9pZCB1c2VyTWVkaWFSZXF1
ZXN0Q2FuY2VsbGVkQ2IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0V2ViVXNlck1lZGlh
UmVxdWVzdCogcmVxdWVzdCwgR3RrV2lkZ2V0KiBkaWFsb2cpCit7CisgICAgZ19zaWduYWxfZW1p
dF9ieV9uYW1lKGRpYWxvZywgInJlc3BvbnNlIiwgR1RLX1JFU1BPTlNFX0NBTkNFTCk7Cit9CisK
K3N0YXRpYyB2b2lkIHVzZXJNZWRpYVJlcXVlc3RlZENiKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcs
IFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QsIFdlYktpdFdlYlVzZXJNZWRpYUxp
c3QqIGF1ZGlvTWVkaWFMaXN0LCBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiB2aWRlb01lZGlhTGlz
dCkKK3sKKyAgICBHdGtXaWRnZXQgKmRpYWxvZzsKKyAgICBHdGtXaWRnZXQgKmNvbnRlbnRBcmVh
OworICAgIEd0a1dpZGdldCAqYWN0aW9uQXJlYTsKKyAgICBHdGtXaWRnZXQgKmZyYW1lOworICAg
IEd0a1dpZGdldCAqdmJveDsKKyAgICBHdGtXaWRnZXQgKiphdWRpb0NoZWNrQnV0dG9uczsKKyAg
ICBHdGtXaWRnZXQgKip2aWRlb0NoZWNrQnV0dG9uczsKKyAgICBHdGtXaWRnZXQgKmF1ZGlvTWVz
c2FnZTsKKyAgICBHdGtXaWRnZXQgKnZpZGVvTWVzc2FnZSA9IDA7CisgICAgZ2Jvb2xlYW4gd2Fu
dHNBdWRpbyA9IHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRzX2F1ZGlvKHJlcXVl
c3QpOworICAgIGdib29sZWFuIHdhbnRzVmlkZW8gPSB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVx
dWVzdF93YW50c192aWRlbyhyZXF1ZXN0KTsKKyAgICBnYm9vbGVhbiBoYXNBdWRpbyA9IGZhbHNl
OworICAgIGdib29sZWFuIGhhc1ZpZGVvID0gZmFsc2U7CisgICAgZ2ludCBhdWRpb0xpc3RMZW5n
dGggPSB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfbGVuZ3RoKGF1ZGlvTWVkaWFMaXN0
KTsKKyAgICBnaW50IHZpZGVvTGlzdExlbmd0aCA9IHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0
X2dldF9sZW5ndGgodmlkZW9NZWRpYUxpc3QpOworICAgIGdpbnQgaTsKKworICAgIGRpYWxvZyA9
IGd0a19kaWFsb2dfbmV3X3dpdGhfYnV0dG9ucygiVXNlciBNZWRpYSBTZWxlY3RvciIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19XSU5ET1coZ3RrX3dpZGdl
dF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVCh3ZWJWaWV3KSkpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHVEtfRElBTE9HX0RFU1RST1lfV0lUSF9QQVJFTlQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TVE9DS19DQU5DRUws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19SRVNQT05TRV9D
QU5DRUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TVE9D
S19PSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1JFU1BP
TlNFX09LLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsK
KworICAgIGd0a193aW5kb3dfc2V0X3Jlc2l6YWJsZShHVEtfV0lORE9XKGRpYWxvZyksIEZBTFNF
KTsKKyAgICBndGtfY29udGFpbmVyX3NldF9ib3JkZXJfd2lkdGgoR1RLX0NPTlRBSU5FUihkaWFs
b2cpLCA1KTsKKworICAgIGNvbnRlbnRBcmVhID0gZ3RrX2RpYWxvZ19nZXRfY29udGVudF9hcmVh
KEdUS19ESUFMT0coZGlhbG9nKSk7CisgICAgZ3RrX2JveF9zZXRfc3BhY2luZyhHVEtfQk9YKGNv
bnRlbnRBcmVhKSwgMik7CisKKyAgICBhY3Rpb25BcmVhID0gZ3RrX2RpYWxvZ19nZXRfYWN0aW9u
X2FyZWEoR1RLX0RJQUxPRyhkaWFsb2cpKTsKKyAgICBndGtfY29udGFpbmVyX3NldF9ib3JkZXJf
d2lkdGgoR1RLX0NPTlRBSU5FUihhY3Rpb25BcmVhKSwgNSk7CisgICAgZ3RrX2JveF9zZXRfc3Bh
Y2luZyhHVEtfQk9YKGFjdGlvbkFyZWEpLCA2KTsKKworICAgIGhhc0F1ZGlvID0gKGF1ZGlvTGlz
dExlbmd0aCA+IDApOworICAgIGhhc1ZpZGVvID0gKHZpZGVvTGlzdExlbmd0aCA+IDApOworCisg
ICAgaSA9IDA7CisKKyAgICBpZiAoIWhhc0F1ZGlvICYmICFoYXNWaWRlbykgeworICAgICAgICBh
dWRpb01lc3NhZ2UgPSBndGtfbGFiZWxfbmV3KCJObyB1c2VyIG1lZGlhIGF2YWlsYWJsZSIpOwor
ICAgICAgICBndGtfbWlzY19zZXRfYWxpZ25tZW50KEdUS19NSVNDKGF1ZGlvTWVzc2FnZSksIDAs
IDApOworICAgICAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChjb250ZW50QXJlYSksIGF1
ZGlvTWVzc2FnZSwgRkFMU0UsIEZBTFNFLCA2KTsKKyAgICB9IGVsc2UgaWYgKHdhbnRzQXVkaW8p
IHsKKyAgICAgICAgYXVkaW9NZXNzYWdlID0gZ3RrX2xhYmVsX25ldyhoYXNBdWRpbyA/ICJTZWxl
Y3QgZnJvbSBhdmFpbGFibGUgdXNlciBhdWRpbyIgOiAiTm8gdXNlciBhdWRpbyBhdmFpbGFibGUi
KTsKKyAgICAgICAgZ3RrX21pc2Nfc2V0X2FsaWdubWVudChHVEtfTUlTQyhhdWRpb01lc3NhZ2Up
LCAwLCAwKTsKKyAgICAgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goY29udGVudEFyZWEp
LCBhdWRpb01lc3NhZ2UsIEZBTFNFLCBGQUxTRSwgNik7CisgICAgfQorCisgICAgYXVkaW9DaGVj
a0J1dHRvbnMgPSBnX25ldyhHdGtXaWRnZXQqLCBhdWRpb0xpc3RMZW5ndGgpOworICAgIHZpZGVv
Q2hlY2tCdXR0b25zID0gZ19uZXcoR3RrV2lkZ2V0KiwgdmlkZW9MaXN0TGVuZ3RoKTsKKworICAg
IGlmIChoYXNBdWRpbykgeworICAgICAgICBmcmFtZSA9IGd0a19mcmFtZV9uZXcoIkF1ZGlvIik7
CisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgMiwgMCkKKyAgICAgICAgdmJveCA9IGd0a19ib3hf
bmV3KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgMCk7CisjZWxzZQorICAgICAgICB2Ym94ID0g
Z3RrX3Zib3hfbmV3KFRSVUUsIDApOworI2VuZGlmCisgICAgICAgIGd0a19jb250YWluZXJfc2V0
X2JvcmRlcl93aWR0aChHVEtfQ09OVEFJTkVSKHZib3gpLCAzKTsKKworICAgICAgICBmb3IgKGkg
PSAwOyBpIDwgYXVkaW9MaXN0TGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGF1ZGlvQ2hlY2tC
dXR0b25zW2ldID0gZ3RrX2NoZWNrX2J1dHRvbl9uZXdfd2l0aF9sYWJlbCh3ZWJraXRfd2ViX3Vz
ZXJfbWVkaWFfbGlzdF9nZXRfaXRlbV9uYW1lKGF1ZGlvTWVkaWFMaXN0LCBpKSk7CisgICAgICAg
ICAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHZib3gpLCBhdWRpb0NoZWNrQnV0
dG9uc1tpXSk7CisgICAgICAgIH0KKworICAgICAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09O
VEFJTkVSKGZyYW1lKSwgdmJveCk7CisgICAgICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9Y
KGNvbnRlbnRBcmVhKSwgZnJhbWUsIEZBTFNFLCBGQUxTRSwgMyk7CisgICAgfQorCisgICAgaWYg
KHdhbnRzVmlkZW8pIHsKKyAgICAgICAgaWYgKGhhc1ZpZGVvKSB7CisgICAgICAgICAgICB2aWRl
b01lc3NhZ2UgPSBndGtfbGFiZWxfbmV3KCJTZWxlY3QgZnJvbSBhdmFpbGFibGUgdXNlciB2aWRl
byIpOworICAgICAgICB9IGVsc2UgaWYgKCF3YW50c0F1ZGlvIHx8IGhhc0F1ZGlvKQorICAgICAg
ICAgICAgdmlkZW9NZXNzYWdlID0gZ3RrX2xhYmVsX25ldygiTm8gdXNlciB2aWRlbyBhdmFpbGFi
bGUiKTsKKyAgICAgICAgaWYgKHZpZGVvTWVzc2FnZSkgeworICAgICAgICAgICAgZ3RrX21pc2Nf
c2V0X2FsaWdubWVudChHVEtfTUlTQyh2aWRlb01lc3NhZ2UpLCAwLCAwKTsKKyAgICAgICAgICAg
IGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGNvbnRlbnRBcmVhKSwgdmlkZW9NZXNzYWdlLCBG
QUxTRSwgRkFMU0UsIDYpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGhhc1ZpZGVvKSB7
CisgICAgICAgIGZyYW1lID0gZ3RrX2ZyYW1lX25ldygiVmlkZW8iKTsKKyNpZiBHVEtfQ0hFQ0tf
VkVSU0lPTigzLCAyLCAwKQorICAgICAgICB2Ym94ID0gZ3RrX2JveF9uZXcoR1RLX09SSUVOVEFU
SU9OX1ZFUlRJQ0FMLCAwKTsKKyNlbHNlCisgICAgICAgIHZib3ggPSBndGtfdmJveF9uZXcoVFJV
RSwgMCk7CisjZW5kaWYKKyAgICAgICAgZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoKEdU
S19DT05UQUlORVIodmJveCksIDMpOworCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCB2aWRlb0xp
c3RMZW5ndGg7IGkrKykgeworICAgICAgICAgICAgdmlkZW9DaGVja0J1dHRvbnNbaV0gPSBndGtf
Y2hlY2tfYnV0dG9uX25ld193aXRoX2xhYmVsKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dl
dF9pdGVtX25hbWUodmlkZW9NZWRpYUxpc3QsIGkpKTsKKyAgICAgICAgICAgIGd0a19jb250YWlu
ZXJfYWRkKEdUS19DT05UQUlORVIodmJveCksIHZpZGVvQ2hlY2tCdXR0b25zW2ldKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIoZnJhbWUpLCB2
Ym94KTsKKyAgICAgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goY29udGVudEFyZWEpLCBm
cmFtZSwgRkFMU0UsIEZBTFNFLCAzKTsKKyAgICB9CisKKyAgICBnX3NpZ25hbF9jb25uZWN0KHdl
YlZpZXcsICJ1c2VyLW1lZGlhLXJlcXVlc3QtY2FuY2VsbGVkIiwgR19DQUxMQkFDSyh1c2VyTWVk
aWFSZXF1ZXN0Q2FuY2VsbGVkQ2IpLCBkaWFsb2cpOworCisgICAgZ3RrX3dpZGdldF9zaG93X2Fs
bChkaWFsb2cpOworCisgICAgaWYgKGd0a19kaWFsb2dfcnVuKEdUS19ESUFMT0coZGlhbG9nKSkg
PT0gR1RLX1JFU1BPTlNFX09LKSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBhdWRpb0xpc3RM
ZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYgKGd0a190b2dnbGVfYnV0dG9uX2dldF9hY3Rp
dmUoR1RLX1RPR0dMRV9CVVRUT04oYXVkaW9DaGVja0J1dHRvbnNbaV0pKSkKKyAgICAgICAgICAg
ICAgICB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9zZWxlY3RfaXRlbShhdWRpb01lZGlhTGlz
dCwgaSk7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdmlkZW9MaXN0TGVu
Z3RoOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChndGtfdG9nZ2xlX2J1dHRvbl9nZXRfYWN0aXZl
KEdUS19UT0dHTEVfQlVUVE9OKHZpZGVvQ2hlY2tCdXR0b25zW2ldKSkpCisgICAgICAgICAgICAg
ICAgd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3Rfc2VsZWN0X2l0ZW0odmlkZW9NZWRpYUxpc3Qs
IGkpOworICAgICAgICB9CisgICAgICAgIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3N1
Y2NlZWQocmVxdWVzdCwgYXVkaW9NZWRpYUxpc3QsIHZpZGVvTWVkaWFMaXN0KTsKKyAgICB9IGVs
c2UKKyAgICAgICAgd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZmFpbChyZXF1ZXN0KTsK
KworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyh3ZWJWaWV3LCAoZ3Bv
aW50ZXIpIHVzZXJNZWRpYVJlcXVlc3RDYW5jZWxsZWRDYiwgZGlhbG9nKTsKKyAgICBndGtfd2lk
Z2V0X2Rlc3Ryb3koZGlhbG9nKTsKK30KKwogc3RhdGljIEd0a1dpZGdldCogY3JlYXRlQnJvd3Nl
cihHdGtXaWRnZXQqIHdpbmRvdywgR3RrV2lkZ2V0KiB1cmlFbnRyeSwgR3RrV2lkZ2V0KiBzdGF0
dXNiYXIsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEd0a1dpZGdldCogdmJveCkKIHsKICAgICBj
aGFyICppY29uRGF0YWJhc2VQYXRoOwpAQCAtMjM1LDYgKzM2NSw3IEBAIHN0YXRpYyBHdGtXaWRn
ZXQqIGNyZWF0ZUJyb3dzZXIoR3RrV2lkZ2V0KiB3aW5kb3csIEd0a1dpZGdldCogdXJpRW50cnks
IEd0a1dpZGdlCiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LCAiY2xvc2Utd2ViLXZpZXci
LCBHX0NBTExCQUNLKGNsb3NlV2ViVmlld0NiKSwgd2luZG93KTsKICAgICBnX3NpZ25hbF9jb25u
ZWN0KHdlYlZpZXcsICJlbnRlcmluZy1mdWxsc2NyZWVuIiwgR19DQUxMQkFDSyh3ZWJWaWV3RW50
ZXJpbmdGdWxsU2NyZWVuKSwgdmJveCk7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LCAi
bGVhdmluZy1mdWxsc2NyZWVuIiwgR19DQUxMQkFDSyh3ZWJWaWV3TGVhdmluZ0Z1bGxTY3JlZW4p
LCB2Ym94KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlZpZXcsICJ1c2VyLW1lZGlhLXJlcXVl
c3RlZCIsIEdfQ0FMTEJBQ0sodXNlck1lZGlhUmVxdWVzdGVkQ2IpLCBOVUxMKTsKICAgICBnX3Np
Z25hbF9jb25uZWN0KHdlYmtpdF93ZWJfdmlld19nZXRfaW5zcGVjdG9yKHdlYlZpZXcpLCAiaW5z
cGVjdC13ZWItdmlldyIsIEdfQ0FMTEJBQ0soaW5zcGVjdG9ySW5zcGVjdFdlYlZpZXdDYiksIHdp
bmRvdyk7CiAKICAgICByZXR1cm4gc2Nyb2xsZWRXaW5kb3c7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167833</attachid>
            <date>2012-10-09 13:08:10 -0700</date>
            <delta_ts>2012-10-14 14:25:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94373-20121009170710.patch</filename>
            <type>text/plain</type>
            <size>47769</size>
            <attacher name="Danilo de Paula">danilo.eu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMzkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggM2UxYjZhMzJm
NDQ0YTM1NGQ4Nzk5NzdhOTFiOGQ0MjMzNGQxZTA1NS4uMmFkY2U0YTFkMDY5N2Q4ZmFlM2JhZmY0
ZWE1NzBmYWQ4ODE3ZDAzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAx
Mi0xMC0wOSAgRGFuaWxvIENlc2FyIExlbWVzIGRlIFBhdWxhICA8ZGFuaWxvLmNlc2FyQGNvbGxh
Ym9yYS5jby51az4KKworICAgICAgICBbZ3RrXSBhZGRpbmcgbWV0aG9kcyBhbmQgc2lnbmFscyBm
b3IgdXNlcm1lZGlhIGNvbW11bmljYXRpb24gYmV0d2VlbiB3ZWJraXQgYW5kIGJyb3dzZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MzczCisKKyAg
ICAgICAgV2hlbiB0aGUgdXNlciBtYWtlIGEgZ2V0VXNlck1lZGlhIGNhbGwsIHdlYnZpZXcgd2ls
bCBlbWl0IGEgc2lnaWFsICh1c2VyLW1lZGlhLXJlcXVlc3RlZCkKKyAgICAgICAgdG8gdGhlIGFw
cGxpY2F0aW9uIGNvbnRhaW5pbmcgdGhlbiByZXF1ZXN0IGl0c2VsZiAod2Via2l0d2VidXNlcm1l
ZGlhcmVxdWVzdCkgYW5kIHR3bworICAgICAgICBsaXN0IHdpdGggdGhlIGF2YWlsYWJsZSBhdWRp
byBhbmQgdmlkZW8gZGV2aWNlcyAod2Via2l0d2VidXNlcm1lZGlhbGlzdCkuCisKKyAgICAgICAg
VGhlIGFwcGxpY2F0aW9uIG11c3Qgc2hvdyB0aGUgbGlzdCB0byB0aGUgdXNlciBhbmQgYXNrIHBl
cm1pc3Npb24gdG8gdXNlIG9uZSBvZgorICAgICAgICB0aG9zZSBkZXZpY2VzIChvciByZWplY3Qg
dGhlIHJlcXVlc3QpLgorCisgICAgICAgIEluIGNhc2UgdGhlIHVzZXIgYWNjZXB0cyB0aGUgcmVx
dWVzdCwgdGhlIGFwcGxpY2F0aW9uIG11c3QgbWFyayB0aGUgZGV2aWNlIGFzCisgICAgICAgIHNl
bGVjdGVkICh1c2luZyB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9zZWxlY3RfaXRlbSkgYW5k
IHRoZW4gY2FsbAorICAgICAgICB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9zdWNjZWVk
IHdoaWNoIHdpbGwgaGFuZGxlIHRoZSByZXF1ZXN0IHByb3Blcmx5LgorCisgICAgICAgIE9uIHRo
ZSBjYXNlIHRoZSB1c2VyIHJlamVjdCB0aGUgcmVxdWVzdCwgd2Via2l0X3dlYl91c2VyX21lZGlh
X3JlcXVlc3RfZmFpbCBtdXN0CisgICAgICAgIGJlIGNhbGxlZC4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1VzZXJNZWRpYUNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlVzZXJNZWRpYUNsaWVudEd0azo6VXNlck1lZGlhQ2xpZW50R3RrKToKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhQ2xpZW50R3RrOjpwYWdlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYktp
dDo6VXNlck1lZGlhQ2xpZW50R3RrOjpyZXF1ZXN0VXNlck1lZGlhKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9Vc2VyTWVkaWFDbGllbnRHdGsuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoVXNlck1lZGlhQ2xpZW50R3RrKToKKyAgICAgICAgKiBkb2NzL3dlYmtpdGd0ay1kb2Nz
LnNnbWw6CisgICAgICAgICogZG9jcy93ZWJraXRndGstc2VjdGlvbnMudHh0OgorICAgICAgICAq
IHdlYmtpdC93ZWJraXQuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlz
dC5jcHA6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlKToK
KyAgICAgICAgKHdlYmtpdFdlYlVzZXJNZWRpYUxpc3RGaW5hbGl6ZSk6CisgICAgICAgICh3ZWJr
aXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJf
dXNlcl9tZWRpYV9saXN0X2luaXQpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX2xp
c3RfZ2V0X2xlbmd0aCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRf
aXRlbV9uYW1lKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2lzX2l0ZW1f
c2VsZWN0ZWQpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3Rfc2VsZWN0X2l0
ZW0pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Y29yZSk6CisgICAgICAg
IChXZWJLaXQ6OmtpdE5ldyk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxp
c3QuaDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViVXNlck1lZGlhTGlzdCk6CisgICAgICAg
IChfV2ViS2l0V2ViVXNlck1lZGlhTGlzdENsYXNzKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
d2VidXNlcm1lZGlhbGlzdHByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0LmNwcDogQWRkZWQuCisgICAg
ICAgIChfV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdFByaXZhdGUpOgorICAgICAgICAod2Via2l0
V2ViVXNlck1lZGlhUmVxdWVzdEZpbmFsaXplKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9t
ZWRpYV9yZXF1ZXN0X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlh
X3JlcXVlc3RfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF93
YW50c19hdWRpbyk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF93YW50
c192aWRlbyk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9nZXRfc2Vj
dXJpdHlfb3JpZ2luKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3N1
Y2NlZWQpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZmFpbCk6Cisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAgICAgICAgKFdlYktp
dDo6a2l0TmV3KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5o
OiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KToKKyAgICAgICAg
KF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3MpOgorICAgICAgICAqIHdlYmtpdC93ZWJr
aXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jaG9vc2VfbWVkaWFfZGV2aWNlKToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJf
dmlld19pbml0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5oOgorICAgICAgICAo
X1dlYktpdFdlYlZpZXdDbGFzcyk6CisgICAgICAgICogd2Via2l0bWFyc2hhbC5saXN0OgorCisy
MDEyLTEwLTAzICBEYW5pbG8gQ2VzYXIgTGVtZXMgZGUgUGF1bGEgIDxkYW5pbG8uY2VzYXJAY29s
bGFib3JhLmNvLnVrPgorCisgICAgICAgIFtndGtdIGFkZGluZyBtZXRob2RzIGFuZCBzaWduYWxz
IGZvciB1c2VybWVkaWEgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHdlYmtpdCBhbmQgYnJvd3Nlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQzNzMKKwor
ICAgICAgICBXaGVuIHRoZSB1c2VyIG1ha2UgYSBnZXRVc2VyTWVkaWEgY2FsbCwgd2VidmlldyB3
aWxsIGVtaXQgYSBzaWdpYWwgKHVzZXItbWVkaWEtcmVxdWVzdGVkKQorICAgICAgICB0byB0aGUg
YXBwbGljYXRpb24gY29udGFpbmluZyB0aGVuIHJlcXVlc3QgaXRzZWxmICh3ZWJraXR3ZWJ1c2Vy
bWVkaWFyZXF1ZXN0KSBhbmQgdHdvCisgICAgICAgIGxpc3Qgd2l0aCB0aGUgYXZhaWxhYmxlIGF1
ZGlvIGFuZCB2aWRlbyBkZXZpY2VzICh3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0KS4KKworICAgICAg
ICBUaGUgYXBwbGljYXRpb24gbXVzdCBzaG93IHRoZSBsaXN0IHRvIHRoZSB1c2VyIGFuZCBhc2sg
cGVybWlzc2lvbiB0byB1c2Ugb25lIG9mCisgICAgICAgIHRob3NlIGRldmljZXMgKG9yIHJlamVj
dCB0aGUgcmVxdWVzdCkuCisKKyAgICAgICAgSW4gY2FzZSB0aGUgdXNlciBhY2NlcHRzIHRoZSBy
ZXF1ZXN0LCB0aGUgYXBwbGljYXRpb24gbXVzdCBtYXJrIHRoZSBkZXZpY2UgYXMKKyAgICAgICAg
c2VsZWN0ZWQgKHVzaW5nIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X3NlbGVjdF9pdGVtKSBh
bmQgdGhlbiBjYWxsCisgICAgICAgIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3N1Y2Nl
ZWQgd2hpY2ggd2lsbCBoYW5kbGUgdGhlIHJlcXVlc3QgcHJvcGVybHkuCisKKyAgICAgICAgT24g
dGhlIGNhc2UgdGhlIHVzZXIgcmVqZWN0IHRoZSByZXF1ZXN0LCB3ZWJraXRfd2ViX3VzZXJfbWVk
aWFfcmVxdWVzdF9mYWlsIG11c3QKKyAgICAgICAgYmUgY2FsbGVkLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhQ2xpZW50R3RrOjpVc2VyTWVkaWFDbGllbnRHdGspOgorICAgICAgICAo
V2ViS2l0OjpVc2VyTWVkaWFDbGllbnRHdGs6OnBhZ2VEZXN0cm95ZWQpOgorICAgICAgICAoV2Vi
S2l0OjpVc2VyTWVkaWFDbGllbnRHdGs6OnJlcXVlc3RVc2VyTWVkaWEpOgorICAgICAgICAoV2Vi
S2l0OjpVc2VyTWVkaWFDbGllbnRHdGs6OmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1VzZXJNZWRpYUNsaWVudEd0ay5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChVc2VyTWVkaWFDbGllbnRHdGspOgorICAgICAgICAqIGRvY3Mvd2Via2l0
Z3RrLWRvY3Muc2dtbDoKKyAgICAgICAgKiBkb2NzL3dlYmtpdGd0ay1zZWN0aW9ucy50eHQ6Cisg
ICAgICAgICogd2Via2l0L3dlYmtpdC5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ1c2Vy
bWVkaWFsaXN0LmNwcDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViVXNlck1lZGlhTGlzdFBy
aXZhdGUpOgorICAgICAgICAod2Via2l0V2ViVXNlck1lZGlhTGlzdEZpbmFsaXplKToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2NsYXNzX2luaXQpOgorICAgICAgICAod2Vi
a2l0X3dlYl91c2VyX21lZGlhX2xpc3RfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJf
bWVkaWFfbGlzdF9nZXRfbGVuZ3RoKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9s
aXN0X2dldF9pdGVtX25hbWUpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3Rf
aXNfaXRlbV9zZWxlY3RlZCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9z
ZWxlY3RfaXRlbSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToK
KyAgICAgICAgKFdlYktpdDo6a2l0TmV3KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2VidXNl
cm1lZGlhbGlzdC5oOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0KToK
KyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0Q2xhc3MpOgorICAgICAgICAqIHdlYmtp
dC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSk6CisgICAgICAg
ICh3ZWJraXRXZWJVc2VyTWVkaWFSZXF1ZXN0RmluYWxpemUpOgorICAgICAgICAod2Via2l0X3dl
Yl91c2VyX21lZGlhX3JlcXVlc3RfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3Vz
ZXJfbWVkaWFfcmVxdWVzdF9pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9y
ZXF1ZXN0X3dhbnRzX2F1ZGlvKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1
ZXN0X3dhbnRzX3ZpZGVvKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0
X2dldF9zZWN1cml0eV9vcmlnaW4pOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX3Jl
cXVlc3Rfc3VjY2VlZCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9m
YWlsKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAg
ICAoV2ViS2l0OjpraXROZXcpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFy
ZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QpOgor
ICAgICAgICAoX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RDbGFzcyk6CisgICAgICAgICogd2Vi
a2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2
aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAgICAg
KHdlYmtpdF93ZWJfdmlld19pbml0KToKKyAgICAgICAgKiB3ZWJraXRtYXJzaGFsLmxpc3Q6CisK
IDIwMTItMTAtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBDaGFuZ2UgbW9zdCBHcmFwaGljc0xheWVyOjpjcmVhdGUgY2FsbHMgdG8gdXNlIHRoZSB2
ZXJzaW9uIHRoYXQgdGFrZXMgYSBHcmFwaGljc0xheWVyRmFjdG9yeQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtl
ZmlsZS5hbQppbmRleCA1YmU5ZWI1NDhlZTAyM2QxNDBhMzVkMTY2MjQzM2Q1ODFiYjcxYjgzLi5m
YmE4NGJjMGYxMDJmM2I3MjQ5YmQyZTMzM2UwOGJkYjE5YTkxNGJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVt
YWtlZmlsZS5hbQpAQCAtMTQyLDYgKzE0Miw4IEBAIHdlYmtpdGd0a19zdGF0aWNfaF9hcGkgKz0g
XAogCSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicG9saWN5ZGVj
aXNpb24uaCBcCiAJJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJy
ZXNvdXJjZS5oIFwKIAkkKHNyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnNldHRpbmdzLmggXAorCSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2VidXNlcm1lZGlhbGlzdC5oIFwKKwkkKHNyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuaCBcCiAJJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oIFwKIAkkKHNyY2RpcikvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAogCkBAIC0yNzYsNiArMjc4LDEwIEBA
IHdlYmtpdGd0a19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2VicGx1Z2luZGF0YWJhc2Vwcml2YXRlLmggXAogCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJzZXR0aW5ncy5jcHAgXAogCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJzZXR0aW5nc3ByaXZhdGUuaCBcCisJU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnVzZXJtZWRpYWxpc3QuY3BwIFwKKwlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dXNlcm1lZGlhbGlzdHByaXZhdGUuaCBcCisJU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnVzZXJtZWRpYXJlcXVlc3QuY3BwIFwKKwlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuY3BwIFwKIAlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlld3ByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndp
bmRvd2ZlYXR1cmVzLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9Vc2VyTWVkaWFDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50R3RrLmNwcAppbmRleCAzOTE2NzZhZmI1YWY5ZjA3NWVi
MjZiMDY5YWM5MzVjZjBlYmYzY2M2Li41NzdmNWEwM2Y1NmI0MzVmODVmZTYwNzNjMGE0MjIyMWMw
ZmU3ZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Vc2Vy
TWVkaWFDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L1VzZXJNZWRpYUNsaWVudEd0ay5jcHAKQEAgLTIyLDE1ICsyMiwxNiBAQAogI2luY2x1ZGUgIlVz
ZXJNZWRpYUNsaWVudEd0ay5oIgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSNpbmNsdWRl
ICJNZWRpYVN0cmVhbVNvdXJjZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5j
bHVkZSAiVXNlck1lZGlhUmVxdWVzdC5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYWxp
c3Rwcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGUu
aCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1V
c2VyTWVkaWFDbGllbnRHdGs6OlVzZXJNZWRpYUNsaWVudEd0aygpCitVc2VyTWVkaWFDbGllbnRH
dGs6OlVzZXJNZWRpYUNsaWVudEd0ayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQorICAgIDogbV93
ZWJWaWV3KHdlYlZpZXcpCiB7CiB9CiAKQEAgLTQwLDEyICs0MSwxMiBAQCBVc2VyTWVkaWFDbGll
bnRHdGs6On5Vc2VyTWVkaWFDbGllbnRHdGsoKQogCiB2b2lkIFVzZXJNZWRpYUNsaWVudEd0azo6
cGFnZURlc3Ryb3llZCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAogdm9pZCBVc2Vy
TWVkaWFDbGllbnRHdGs6OnJlcXVlc3RVc2VyTWVkaWEoV1RGOjpQYXNzUmVmUHRyPFVzZXJNZWRp
YVJlcXVlc3Q+IHBycFJlcXVlc3QsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBhdWRp
b1NvdXJjZSwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVvU291cmNlKQogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IHJlcXVl
c3QgPSBwcnBSZXF1ZXN0OworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYlZpZXcsICJj
aG9vc2UtbWVkaWEtZGV2aWNlIiwga2l0TmV3KHJlcXVlc3QuZ2V0KCkpLCBraXROZXcoYXVkaW9T
b3VyY2UpLCBraXROZXcodmlkZW9Tb3VyY2UpKTsKIH0KIAogdm9pZCBVc2VyTWVkaWFDbGllbnRH
dGs6OmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1VzZXJNZWRpYUNsaWVu
dEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50
R3RrLmgKaW5kZXggMDM2MmE0YTNkMDIzMzE1MWNhMDE1MzE0M2Q0NTZkY2MxYTRhNjAzMy4uOTU3
MDBlZmIzNTM2OTM4ZWJkY2QzNjQ2N2QzZGVhMjNkYTM3M2I2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50R3RrLmgKKysrIGIvU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50R3RrLmgKQEAgLTIy
LDE4ICsyMiwyOSBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUgIk1l
ZGlhU3RyZWFtU291cmNlLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50LmgiCiAKK3R5cGVk
ZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3IFdlYktpdFdlYlZpZXc7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIFVzZXJNZWRpYVJlcXVlc3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBVc2VyTWVkaWFDbGllbnRHdGsgOiBwdWJsaWMgV2ViQ29yZTo6VXNlck1lZGlhQ2xp
ZW50IHsKIHB1YmxpYzoKLSAgICBVc2VyTWVkaWFDbGllbnRHdGsoKTsKKyAgICBVc2VyTWVkaWFD
bGllbnRHdGsoV2ViS2l0V2ViVmlldyopOwogICAgIHZpcnR1YWwgflVzZXJNZWRpYUNsaWVudEd0
aygpOwogCiAgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsKKwogICAgIHZpcnR1YWwg
dm9pZCByZXF1ZXN0VXNlck1lZGlhKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFS
ZXF1ZXN0PiwgY29uc3QgV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImLCBjb25zdCBX
ZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYpOwogICAgIHZpcnR1YWwgdm9pZCBjYW5j
ZWxVc2VyTWVkaWFSZXF1ZXN0KFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqKTsKKworcHJpdmF0
ZToKKyAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZpZXc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3Mvd2Via2l0Z3RrLWRvY3Mu
c2dtbCBiL1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3Mvd2Via2l0Z3RrLWRvY3Muc2dtbAppbmRleCA3
MjEwNjUyMmZiNWJhYmE4YjAwOWZlMzU0NGI5YWRmMjNmY2JiMTk4Li41YTNhYmIzZjY3MThlNTE1
YWNkMzMxMDllMTRmZTlmZTlhMDRjMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9k
b2NzL3dlYmtpdGd0ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJr
aXRndGstZG9jcy5zZ21sCkBAIC0zMyw2ICszMyw4IEBACiAgICAgPHhpOmluY2x1ZGUgaHJlZj0i
eG1sL3dlYmtpdGRvd25sb2FkLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC93ZWJr
aXR2aWV3cG9ydGF0dHJpYnV0ZXMueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dl
YmtpdGhpdHRlc3RyZXN1bHQueG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dlYmtp
dHdlYnVzZXJtZWRpYWxpc3QueG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dlYmtp
dHdlYnVzZXJtZWRpYXJlcXVlc3QueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dl
YmtpdHdlYnBsdWdpbi54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvd2Via2l0d2Vi
cGx1Z2luZGF0YWJhc2UueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dlYmtpdHNv
dXBhdXRoZGlhbG9nLnhtbCIvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvZG9jcy93
ZWJraXRndGstc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJraXRndGst
c2VjdGlvbnMudHh0CmluZGV4IGI3MDdiZjgzZDcxMWEwYzFlMTc3YWI2NGYxNDc2ZjRjMWUwZmJl
N2EuLmNlMTE5Yjg4Y2E0Mzg2Yzk2ODZmODc0ZmY0YzZhM2VlNGFhNzE2OTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3Mvd2Via2l0Z3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9kb2NzL3dlYmtpdGd0ay1zZWN0aW9ucy50eHQKQEAgLTY4Niw2ICs2ODYs
NDkgQEAgV2ViS2l0SWNvbkRhdGFiYXNlUHJpdmF0ZQogPC9TRUNUSU9OPgogCiA8U0VDVElPTj4K
KzxGSUxFPndlYmtpdHdlYnVzZXJtZWRpYWxpc3Q8L0ZJTEU+Cis8VElUTEU+V2ViS2l0V2ViVXNl
ck1lZGlhTGlzdDwvVElUTEU+CitXZWJLaXRXZWJVc2VyTWVkaWFMaXN0Cit3ZWJraXRfd2ViX3Vz
ZXJfbWVkaWFfbGlzdF9nZXRfbGVuZ3RoCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRf
aXRlbV9uYW1lCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9pc19pdGVtX3NlbGVjdGVkCit3
ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9zZWxlY3RfaXRlbQorPFNVQlNFQ1RJT04gU3RhbmRh
cmQ+CitXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfTElTVAorV0VCS0lUX0lTX1dFQl9VU0VSX01F
RElBX0xJU1RfQ0xBU1MKK1dFQktJVF9XRUJfVVNFUl9NRURJQV9MSVNUCitXRUJLSVRfV0VCX1VT
RVJfTUVESUFfTElTVF9DTEFTUworV0VCS0lUX1dFQl9VU0VSX01FRElBX0xJU1RfR0VUX0NMQVNT
CitXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNUCis8U1VCU0VDVElPTiBQcml2YXRlPgor
V2ViS2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGUKK1dlYktpdFdlYlVzZXJNZWRpYUxpc3RDbGFz
cword2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKworPFNF
Q1RJT04+Cis8RklMRT53ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0PC9GSUxFPgorPFRJVExFPldl
YktpdFdlYlVzZXJNZWRpYVJlcXVlc3Q8L1RJVExFPgorV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVz
dAord2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZmFpbAord2Via2l0X3dlYl91c2VyX21l
ZGlhX3JlcXVlc3Rfc3VjY2VlZAord2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNf
YXVkaW8KK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRzX3ZpZGVvCit3ZWJraXRf
d2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9nZXRfc2VjdXJpdHlfb3JpZ2luCis8U1VCU0VDVElPTiBT
dGFuZGFyZD4KK1dFQktJVF9JU19XRUJfVVNFUl9NRURJQV9SRVFVRVNUCitXRUJLSVRfSVNfV0VC
X1VTRVJfTUVESUFfUkVRVUVTVF9DTEFTUworV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVR
VUVTVAorV0VCS0lUX1dFQl9VU0VSX01FRElBX1JFUVVFU1QKK1dFQktJVF9XRUJfVVNFUl9NRURJ
QV9SRVFVRVNUX0NMQVNTCitXRUJLSVRfV0VCX1VTRVJfTUVESUFfUkVRVUVTVF9HRVRfQ0xBU1MK
KzxTVUJTRUNUSU9OIFByaXZhdGU+CitXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3MKK1dl
YktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRlCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVx
dWVzdF9nZXRfdHlwZQorPC9TRUNUSU9OPgorCis8U0VDVElPTj4KIDxGSUxFPndlYmtpdGZhdmlj
b25kYXRhYmFzZTwvRklMRT4KIDxUSVRMRT5XZWJLaXRGYXZpY29uRGF0YWJhc2U8L1RJVExFPgog
V2ViS2l0RmF2aWNvbkRhdGFiYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0LmggYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmgKaW5kZXggYWE3
YjkzZGJkYThjMjZkZTIxZTk4MmQzOWM2MTY1ZmI4YzJmNWU3Ny4uYmYxNmEyNWU5MmVkNTVmOWIy
MDdiNGE3MmJjNjNiYjg5NjlmMWViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaApAQCAt
NTEsNiArNTEsOCBAQAogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5o
PgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJyZXNvdXJjZS5oPgogI2luY2x1ZGUgPHdlYmtp
dC93ZWJraXR3ZWJzZXR0aW5ncy5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVk
aWFsaXN0Lmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuaD4K
ICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vidmlldy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJr
aXR3ZWJ3aW5kb3dmZWF0dXJlcy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTJiZGNiMjE4NDU3Y2Ri
ZmUzYTZlM2YzNDcyNDUwNjI5ZDhlMWNhYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmNwcApAQCAtMCwwICsxLDE2NyBA
QAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGlj
ZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT
b2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmgiCisKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIKKyNpbmNs
dWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KKworCisvKioKKyAqIFNFQ1RJT046d2Via2l0d2VidXNlcm1lZGlhbGlzdAor
ICogQHNob3J0X2Rlc2NyaXB0aW9uOiBVc2VyTWVkaWEgTGlzdAorICogQFRpdGxlOiBXZWJLaXRX
ZWJVc2VyTWVkaWFMaXN0CisgKgorICogI1dlYktpdFdlYlVzZXJNZWRpYUxpc3QgY29udGFpbnMg
YSBsaXN0IG9mCisgKiBhdWRpbyBvciB2aWRlbyBzb3VyY2VzIGZyb20gYSBXZWJVc2VyTWVkaWFS
ZXF1ZXN0CisgKgorICogU2luY2U6IDIuMAorICovCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CisKK3N0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGUgeworICAgIFdlYkNvcmU6
Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yIHNvdXJjZXM7CisgICAgVmVjdG9yPGJvb2w+IHNvdXJj
ZVNlbGVjdGlvbnM7Cit9OworCitHX0RFRklORV9UWVBFKFdlYktpdFdlYlVzZXJNZWRpYUxpc3Qs
IHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0LCBHX1RZUEVfT0JKRUNUKQorCitzdGF0aWMgdm9p
ZCB3ZWJraXRXZWJVc2VyTWVkaWFMaXN0RmluYWxpemUoR09iamVjdCogb2JqZWN0KQoreworICAg
IFdFQktJVF9XRUJfVVNFUl9NRURJQV9MSVNUKG9iamVjdCktPnByaXYtPn5XZWJLaXRXZWJVc2Vy
TWVkaWFMaXN0UHJpdmF0ZSgpOworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfdXNlcl9t
ZWRpYV9saXN0X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2NsYXNzX2luaXQoV2ViS2l0V2ViVXNlck1l
ZGlhTGlzdENsYXNzKiBsaXN0Q2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xh
c3MgPSBHX09CSkVDVF9DTEFTUyhsaXN0Q2xhc3MpOworICAgIGdvYmplY3RDbGFzcy0+ZmluYWxp
emUgPSB3ZWJraXRXZWJVc2VyTWVkaWFMaXN0RmluYWxpemU7CisKKyAgICB3ZWJraXRJbml0KCk7
CisKKyAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUobGlzdENsYXNzLCBzaXplb2YoV2ViS2l0
V2ViVXNlck1lZGlhTGlzdFByaXZhdGUpKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl91
c2VyX21lZGlhX2xpc3RfaW5pdChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBsaXN0KQoreworICAg
IFdlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlKiBwcml2ID0gR19UWVBFX0lOU1RBTkNFX0dF
VF9QUklWQVRFKGxpc3QsIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1QsIFdlYktpdFdl
YlVzZXJNZWRpYUxpc3RQcml2YXRlKTsKKyAgICBsaXN0LT5wcml2ID0gcHJpdjsKKworICAgIC8v
IHBsYWNlbWVudCBuZXcgc3ludGF4CisgICAgbmV3IChwcml2KSBXZWJLaXRXZWJVc2VyTWVkaWFM
aXN0UHJpdmF0ZSgpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dl
dF9sZW5ndGg6CisgKiBAbGlzdDogdGhlIFdlYktpdFdlYlVzZXJNZWRpYUxpc3QgaXRzZWxmCisg
KgorICogUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgZWxlbWVudHMgbGlzdC4KKyAqCisgKiBSZXR1
cm4gdmFsdWU6IG51bWJlciBvZiBlbGVtZW50cy4KKyAqCisgKiBTaW5jZTogMi4wCisgKi8KK2d1
aW50IHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9sZW5ndGgoV2ViS2l0V2ViVXNlck1l
ZGlhTGlzdCogbGlzdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VC
X1VTRVJfTUVESUFfTElTVChsaXN0KSwgMCk7CisKKyAgICByZXR1cm4gY29yZShsaXN0KS5zaXpl
KCk7Cit9CisKKworLyoqCisgKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfaXRlbV9u
YW1lOgorICogQGxpc3Q6IHRoZSAjV2ViS2l0V2ViVXNlck1lZGlhTGlzdCBpdHNlbGYKKyAqIEBp
bmRleDogdGhlIHdhbnRlZCBlbGVtZW50IGluZGV4LgorICoKKyAqIFJldHVybnMgdGhlIGRldmlj
ZSBuYW1lIG9mIHRoZSBlbGVtZW50LgorICoKKyAqIFJldHVybiB2YWx1ZTogdGhlIGRldmljZSBp
ZCBvZiB0aGUgQGluZGV4IGdpdmVuIGVsZW1lbnQuCisgKgorICogU2luY2U6IDIuMAorICovCitj
b25zdCBnY2hhciogd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2l0ZW1fbmFtZShXZWJL
aXRXZWJVc2VyTWVkaWFMaXN0KiBsaXN0LCBndWludCBpbmRleCkKK3sKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfTElTVChsaXN0KSwgMCk7CisKKyAg
ICBXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgc291cmNlcyA9IGNvcmUobGlzdCk7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoaW5kZXggPCBzb3VyY2VzLnNpemUoKSwgMCk7CisK
KyAgICByZXR1cm4gZ19zdHJkdXAoc291cmNlc1tpbmRleF0tPm5hbWUoKS51dGY4KCkuZGF0YSgp
KTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9pc19pdGVtX3NlbGVj
dGVkOgorICogQGxpc3Q6IHRoZSAjV2ViS2l0V2ViVXNlck1lZGlhTGlzdCBpdHNlbGYKKyAqIEBp
bmRleDogdGhlIHdhbnRlZCBlbGVtZW50IGluZGV4LgorICoKKyAqIEluZGljYXRlIGlmIGEgZGV2
aWNlIGlzIG1hcmtlZCBhcyBzZWxlY3RlZC4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IFRydWUgaWYg
dGhlIGRldmljZSByZXByZXNlbnRlZCBieSBAaW5kZXggaXMgbWFya2VkIGFzIHNlbGVjdGVkLgor
ICoKKyAqIFNpbmNlOiAyLjAKKyAqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl91c2VyX21lZGlhX2xp
c3RfaXNfaXRlbV9zZWxlY3RlZChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBsaXN0LCBndWludCBp
bmRleCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVE
SUFfTElTVChsaXN0KSwgRkFMU0UpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGluZGV4IDwg
Y29yZShsaXN0KS5zaXplKCksIEZBTFNFKTsKKworICAgIHJldHVybiBsaXN0LT5wcml2LT5zb3Vy
Y2VTZWxlY3Rpb25zW2luZGV4XTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFf
bGlzdF9zZWxlY3RfaXRlbToKKyAqIEBsaXN0OiB0aGUgI1dlYktpdFdlYlVzZXJNZWRpYUxpc3Qg
aXRzZWxmCisgKiBAaW5kZXg6IHRoZSB3YW50ZWQgZWxlbWVudCBpbmRleC4KKyAqCisgKiBNYXJr
IGEgZGV2aWNlIGFzIHNlbGVjdGVlZC4KKyAqCisgKiBTaW5jZTogMi4wCisgKi8KK3ZvaWQgd2Vi
a2l0X3dlYl91c2VyX21lZGlhX2xpc3Rfc2VsZWN0X2l0ZW0oV2ViS2l0V2ViVXNlck1lZGlhTGlz
dCogbGlzdCwgZ3VpbnQgaW5kZXgpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNf
V0VCX1VTRVJfTUVESUFfTElTVChsaXN0KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChpbmRleCA8
IGNvcmUobGlzdCkuc2l6ZSgpKTsKKworICAgIGxpc3QtPnByaXYtPnNvdXJjZVNlbGVjdGlvbnNb
aW5kZXhdID0gVFJVRTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNvcmU6Ok1lZGlh
U3RyZWFtU291cmNlVmVjdG9yJiBjb3JlKFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGxpc3QpCit7
CisgICAgcmV0dXJuIGxpc3QtPnByaXYtPnNvdXJjZXM7Cit9CisKK1dlYktpdFdlYlVzZXJNZWRp
YUxpc3QqIGtpdE5ldyhjb25zdCBXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgc291
cmNlcykKK3sKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiB3ZWJMaXN0ID0gV0VCS0lUX1dF
Ql9VU0VSX01FRElBX0xJU1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElB
X0xJU1QsIE5VTEwpKTsKKyAgICB3ZWJMaXN0LT5wcml2LT5zb3VyY2VzID0gc291cmNlczsKKyAg
ICB3ZWJMaXN0LT5wcml2LT5zb3VyY2VTZWxlY3Rpb25zLmZpbGwoRkFMU0UsIHNvdXJjZXMuc2l6
ZSgpKTsKKworICAgIHJldHVybiB3ZWJMaXN0OworfQorCit9CisKKyNlbmRpZiAvKiBFTkFCTEUo
TUVESUFfU1RSRUFNKSAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnVzZXJtZWRpYWxpc3QuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ1c2VybWVkaWFsaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmI2N2FlY2FhZDJmZmMyMTEzZmVmMWRmMjNi
MDRhN2VhYTQ4MDM5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqICBDb3B5
cmlnaHQgKEMpIDIwMTIgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rvbiwg
TUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKworI2lmbmRlZiB3ZWJraXR3ZWJ1c2VybWVkaWFs
aXN0X2gKKyNkZWZpbmUgd2Via2l0d2VidXNlcm1lZGlhbGlzdF9oCisKKyNpbmNsdWRlIDxnbGli
LW9iamVjdC5oPgorI2luY2x1ZGUgPGdsaWIuaD4KKworI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRk
ZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfVVNF
Ul9NRURJQV9MSVNUICAgICAgICAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dl
dF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfVVNFUl9NRURJQV9MSVNUKG9iaikgICAgICAg
ICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1dF
Ql9VU0VSX01FRElBX0xJU1QsIFdlYktpdFdlYlVzZXJNZWRpYUxpc3QpKQorI2RlZmluZSBXRUJL
SVRfV0VCX1VTRVJfTUVESUFfTElTVF9DTEFTUyhrbGFzcykgICAgICAgKEdfVFlQRV9DSEVDS19D
TEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNULCBXZWJL
aXRXZWJVc2VyTWVkaWFMaXN0Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1VTRVJfTUVE
SUFfTElTVChvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmop
LCBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNUKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dF
Ql9VU0VSX01FRElBX0xJU1RfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQ
RSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfTElTVCkpCisjZGVmaW5lIFdF
QktJVF9XRUJfVVNFUl9NRURJQV9MSVNUX0dFVF9DTEFTUyhvYmopICAgICAoR19UWVBFX0lOU1RB
TkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1QsIFdl
YktpdFdlYlVzZXJNZWRpYUxpc3RDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJV
c2VyTWVkaWFMaXN0IFdlYktpdFdlYlVzZXJNZWRpYUxpc3Q7Cit0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0V2ViVXNlck1lZGlhTGlzdENsYXNzIFdlYktpdFdlYlVzZXJNZWRpYUxpc3RDbGFzczsKK3R5
cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZSBXZWJLaXRXZWJVc2Vy
TWVkaWFMaXN0UHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0IHsKKyAg
ICBHT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJp
dmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhTGlzdENsYXNzIHsK
KyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQor
d2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X3R5cGUgKHZvaWQpIEdfR05VQ19DT05TVDsK
KworV0VCS0lUX0FQSSBndWludAord2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2xlbmd0
aCAgICAgICAgKFdlYktpdFdlYlVzZXJNZWRpYUxpc3QgKmxpc3QpOworCitXRUJLSVRfQVBJIGNv
bnN0IGdjaGFyICoKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9pdGVtX25hbWUgICAg
IChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0ICpsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGd1aW50IGluZGV4KTsKK1dFQktJVF9BUEkgZ2Jvb2xlYW4K
K3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2lzX2l0ZW1fc2VsZWN0ZWQgIChXZWJLaXRXZWJV
c2VyTWVkaWFMaXN0ICpsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGd1aW50IGluZGV4KTsKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl91c2Vy
X21lZGlhX2xpc3Rfc2VsZWN0X2l0ZW0gICAgICAgKFdlYktpdFdlYlVzZXJNZWRpYUxpc3QgKmxp
c3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQg
aW5kZXgpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogd2Via2l0d2VidXNlcm1lZGlhbGlz
dF9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNl
cm1lZGlhbGlzdHByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1
c2VybWVkaWFsaXN0cHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExOThjYWVjZmI2Y2VmN2M4MGFiOTZh
ZjU0MzZmNTNhNTNjOTdiZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdHByaXZhdGUuaApAQCAtMCwwICsxLDM3IEBACisv
KgorICogIENvcHlyaWdodCAoQykgMjAxMiBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNl
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworCisjaWZuZGVmIHdlYmtpdHdl
YnVzZXJtZWRpYWxpc3Rwcml2YXRlX2gKKyNkZWZpbmUgd2Via2l0d2VidXNlcm1lZGlhbGlzdHBy
aXZhdGVfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3Ry
ZWFtU291cmNlLmgiCisjaW5jbHVkZSAid2Via2l0d2VidXNlcm1lZGlhbGlzdC5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGNvcmUo
V2ViS2l0V2ViVXNlck1lZGlhTGlzdCopOworV2ViS2l0V2ViVXNlck1lZGlhTGlzdCoga2l0TmV3
KGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJik7CisKK30KKworI2VuZGlm
IC8qIEVOQUJMRShNRURJQV9TVFJFQU0pICovCisKKyNlbmRpZiAvKiB3ZWJraXR3ZWJ1c2VybWVk
aWFsaXN0cHJpdmF0ZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTRmMzFmMzM1ZWE4OWU3
Mjc0M2U5ZjcwMTE0NGVmNzQxMzQxZjA5MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0LmNwcApAQCAtMCwwICsxLDE5
OCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl
ZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuaCIKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIk1l
ZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRl
ICJVc2VyTWVkaWFSZXF1ZXN0LmgiCisjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIK
KyNpbmNsdWRlICJ3ZWJraXRzZWN1cml0eW9yaWdpbnByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJr
aXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRp
YXJlcXVlc3Rwcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCisvKioK
KyAqIFNFQ1RJT046d2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdAorICogQHNob3J0X2Rlc2NyaXB0
aW9uOiBUaGUgV2ViS2l0J3MgVXNlck1lZGlhIFJlcXVlc3QuCisgKiBAVGl0bGU6IFdlYktpdFdl
YlVzZXJNZWRpYVJlcXVlc3QKKyAqCisgKiBUaGlzIG9iamVjdCBjb250YWlucyB0aGUgaW5mb3Jt
YXRpb24gb2YgYSBtZWRpYSByZXF1ZXN0LgorICogSXQgY2FuIGJlIHVzZWQgdG8gY2hlY2sgaWYg
dGhlIHJlcXVlc3QgaXMgYXNraW5nIGZvciBhdWRpbyBhbmQvb3IgdmlkZW8uCisgKgorICogU2lu
Y2U6IDIuMAorICovCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3N0cnVjdCBfV2ViS2l0
V2ViVXNlck1lZGlhUmVxdWVzdFByaXZhdGUgeworICAgIFJlZlB0cjxXZWJDb3JlOjpVc2VyTWVk
aWFSZXF1ZXN0PiB1c2VyTWVkaWFSZXF1ZXN0OworfTsKKworR19ERUZJTkVfVFlQRShXZWJLaXRX
ZWJVc2VyTWVkaWFSZXF1ZXN0LCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdCwgR19UWVBF
X09CSkVDVCkKKworc3RhdGljIHZvaWQgd2Via2l0V2ViVXNlck1lZGlhUmVxdWVzdEZpbmFsaXpl
KEdPYmplY3QgKm9iamVjdCkKK3sKKyAgICBXRUJLSVRfV0VCX1VTRVJfTUVESUFfUkVRVUVTVChv
YmplY3QpLT5wcml2LT5+V2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdFByaXZhdGUoKTsKKworICAg
IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3BhcmVudF9jbGFz
cyktPmZpbmFsaXplKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdXNlcl9t
ZWRpYV9yZXF1ZXN0X2NsYXNzX2luaXQoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdENsYXNzKiBy
ZXF1ZXN0Q2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBnb2JqZWN0X2NsYXNzID0gR19PQkpF
Q1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKKyAgICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IHdl
YmtpdFdlYlVzZXJNZWRpYVJlcXVlc3RGaW5hbGl6ZTsKKworICAgIHdlYmtpdEluaXQoKTsKKwor
ICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShyZXF1ZXN0Q2xhc3MsIHNpemVvZihXZWJLaXRX
ZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
X3VzZXJfbWVkaWFfcmVxdWVzdF9pbml0KFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIHJlcXVl
c3QpCit7CisgICAgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdFByaXZhdGUqIHByaXYgPSBHX1RZ
UEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUocmVxdWVzdCwgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVE
SUFfUkVRVUVTVCwgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdFByaXZhdGUpOworICAgIHJlcXVl
c3QtPnByaXYgPSBwcml2OworCisgICAgbmV3IChwcml2KSBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1
ZXN0UHJpdmF0ZSgpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0
X3dhbnRzX2F1ZGlvOgorICogQHJlcXVlc3Q6IHRoZSAjV2ViS2l0VXNlck1lZGlhUmVxdWVzdCBp
dHNlbGYuCisgKgorICogSW5kaWNhdGVzIHRoZSBjb250ZW50IG9mIGFuIFVzZXJNZWRpYVJlcXVl
c3QuCisgKgorICogUmV0dXJuIHZhbHVlOiAlVFJVRSBpZiB0aGUgcmVxdWVzdCBjb250YWlucyBh
biBhdWRpbyByZXF1ZXN0IG9yICVGQUxTRSBpZiBvdGhlcndpc2UuCisgKgorICogU2luY2U6IDIu
MAorICovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF93YW50c19hdWRp
byhXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9SRVFVRVNUKHJlcXVlc3QpLCBGQUxT
RSk7CisKKyAgICByZXR1cm4gY29yZShyZXF1ZXN0KS0+YXVkaW8oKTsKK30KKworLyoqCisgKiB3
ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF93YW50c192aWRlbzoKKyAqIEByZXF1ZXN0OiB0
aGUgI1dlYktpdFVzZXJNZWRpYVJlcXVlc3QgaXRzZWxmLgorICoKKyAqIEluZGljYXRlcyB0aGUg
Y29udGVudCBvZiBhbiBVc2VyTWVkaWFSZXF1ZXN0LgorICoKKyAqIFJldHVybiB2YWx1ZTogJVRS
VUUgaWYgdGhlIHJlcXVlc3QgY29udGFpbnMgYSB2aWRlbyByZXF1ZXN0IG9yICVGQUxTRSBpZiBv
dGhlcndpc2UuCisgKgorICogU2luY2U6IDIuMAorICovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3Vz
ZXJfbWVkaWFfcmVxdWVzdF93YW50c192aWRlbyhXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiBy
ZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVVNFUl9N
RURJQV9SRVFVRVNUKHJlcXVlc3QpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gY29yZShyZXF1ZXN0
KS0+dmlkZW8oKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9n
ZXRfc2VjdXJpdHlfb3JpZ2luOgorICogQHJlcXVlc3Q6IHRoZSAjV2ViS2l0VXNlck1lZGlhUmVx
dWVzdCBpdHNlbGYuCisgKgorICogUmV0dXJucyB0aGUgc2VjdXJpdHkgb3JpZ2luIG9mIHRoZSBN
ZWRpYSBSZXF1ZXN0LgorICoKKyAqIFJldHVybiB2YWx1ZTogKHRyYW5zZmVyIG5vbmUpOiB0aGUg
c2VjdXJpdHkgb3JpZ2luIG9mIHRoZSBtZWRpYSByZXF1ZXN0LgorICoKKyAqIFNpbmNlOiAyLjAK
KyAqLworV2ViS2l0U2VjdXJpdHlPcmlnaW4qIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0
X2dldF9zZWN1cml0eV9vcmlnaW4oV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkK
K3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfUkVR
VUVTVChyZXF1ZXN0KSwgMCk7CisKKyAgICByZXR1cm4ga2l0KGNvcmUocmVxdWVzdCktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7Cit9CisKKy8qKgorICogd2Vi
a2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfc3VjY2VlZDoKKyAqIEB3ZWJSZXF1ZXN0OiBhICNX
ZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0CisgKiBAYXVkaW9NZWRpYUxpc3Q6IGEgI1dlYktpdFdl
YlVzZXJNZWRpYUxpc3QgY29udGFpbmluZyBhdWRpbyBkZXZpY2VzCisgKiBAdmlkZW9NZWRpYUxp
c3Q6IGEgI1dlYktpdFdlYlVzZXJNZWRpYUxpc3QgY29udGFpbmluZyB2aWRlbyBkZXZpY2VzCisg
KgorICogVGhpcyBtZXRob2Qgc2hvdWxkIGJlIGNhbGxlZCBieSB0aGUgYXBwbGljYXRpb24gYWZ0
ZXIgdGhlIHVzZXIgc2VsZWN0cworICogYSBtZWRpYSBkZXZpY2UgYW5kIGFjY2VwdHMgYW4gbWVk
aWEgcmVxdWVzdAorICoKKyAqIFNpbmNlOiAyLjAKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl91c2Vy
X21lZGlhX3JlcXVlc3Rfc3VjY2VlZChXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiB3ZWJSZXF1
ZXN0LCBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBhdWRpb01lZGlhTGlzdCwgV2ViS2l0V2ViVXNl
ck1lZGlhTGlzdCogdmlkZW9NZWRpYUxpc3QpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJL
SVRfSVNfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCh3ZWJSZXF1ZXN0KSk7CisgICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfTElTVChhdWRpb01lZGlhTGlzdCkpOwor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX0xJU1QodmlkZW9N
ZWRpYUxpc3QpKTsKKworICAgIFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBhdWRp
b1NvdXJjZXMgPSBjb3JlKGF1ZGlvTWVkaWFMaXN0KTsKKyAgICBXZWJDb3JlOjpNZWRpYVN0cmVh
bVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzID0gY29yZSh2aWRlb01lZGlhTGlzdCk7CisKKyAg
ICBmb3IgKHNpemVfdCBpID0gYXVkaW9Tb3VyY2VzLnNpemUoKSAtIDE7IGkgIT0gKHNpemVfdCkg
LTE7IC0taSkKKyAgICAgICAgaWYgKCF3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9pc19pdGVt
X3NlbGVjdGVkKGF1ZGlvTWVkaWFMaXN0LCBpKSkKKyAgICAgICAgICAgIGF1ZGlvU291cmNlcy5y
ZW1vdmUoaSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gdmlkZW9Tb3VyY2VzLnNpemUoKSAtIDE7
IGkgIT0gKHNpemVfdCkgLTE7IC0taSkKKyAgICAgICAgaWYgKCF3ZWJraXRfd2ViX3VzZXJfbWVk
aWFfbGlzdF9pc19pdGVtX3NlbGVjdGVkKHZpZGVvTWVkaWFMaXN0LCBpKSkKKyAgICAgICAgICAg
IHZpZGVvU291cmNlcy5yZW1vdmUoaSk7CisKKyAgICBjb3JlKHdlYlJlcXVlc3QpLT5zdWNjZWVk
KGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKTsKKworfQorCisvKioKKyAqIHdlYmtpdF93ZWJf
dmlld19yZWplY3RfdXNlcl9tZWRpYV9yZXF1ZXN0OgorICogQHdlYlJlcXVlc3Q6IGEgI1dlYktp
dFdlYlVzZXJNZWRpYVJlcXVlc3QKKyAqCisgKiBUaGlzIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVk
IGJ5IHRoZSBhcHBsaWNhdGlvbiB3aGVuIHRoZSB1c2VyIHJlamVjdGVkIGEgdXNlck1lZGlhIHJl
cXVlc3QuCisgKgorICogU2luY2U6IDIuMAorICoqLwordm9pZCB3ZWJraXRfd2ViX3VzZXJfbWVk
aWFfcmVxdWVzdF9mYWlsKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIHdlYlJlcXVlc3QpCit7
CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCh3
ZWJSZXF1ZXN0KSk7CisgICAgY29yZSh3ZWJSZXF1ZXN0KS0+ZmFpbCgpOworfQorCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0KiBjb3JlKFdlYktpdFdl
YlVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgQVNTRVJUKFdFQktJVF9JU19XRUJf
VVNFUl9NRURJQV9SRVFVRVNUKHJlcXVlc3QpKTsKKworICAgIHJldHVybiByZXF1ZXN0LT5wcml2
LT51c2VyTWVkaWFSZXF1ZXN0LmdldCgpOworfQorCitXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0
KiBraXROZXcoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBBU1NF
UlQocmVxdWVzdCk7CisKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiB3ZWJSZXF1ZXN0
ID0gV0VCS0lUX1dFQl9VU0VSX01FRElBX1JFUVVFU1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBF
X1dFQl9VU0VSX01FRElBX1JFUVVFU1QsIE5VTEwpKTsKKyAgICB3ZWJSZXF1ZXN0LT5wcml2LT51
c2VyTWVkaWFSZXF1ZXN0ID0gcmVxdWVzdDsKKworICAgIHJldHVybiB3ZWJSZXF1ZXN0OworfQor
Cit9CisKKyNlbmRpZiAvKiBFTkFCTEUoTUVESUFfU1RSRUFNKSAqLwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuaCBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMWZlNDY3YWRiNmUwYWY3ODllNzdlZGNjMzY4NzhiY2RiYTY1YWNiNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0
LmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgQ29sbGFib3Jh
IEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
ICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3
cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICov
CisKKworI2lmbmRlZiB3ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0X2gKKyNkZWZpbmUgd2Via2l0
d2VidXNlcm1lZGlhcmVxdWVzdF9oCisKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0
LmgiCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNs
dWRlIDx3ZWJraXQvd2Via2l0ZGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUg
V0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCAgICAgICAgICAgICh3ZWJraXRfd2Vi
X3VzZXJfbWVkaWFfcmVxdWVzdF9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfV0VCX1VTRVJf
TUVESUFfUkVRVUVTVChvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNU
KChvYmopLCBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFVRVNULCBXZWJLaXRXZWJVc2Vy
TWVkaWFSZXF1ZXN0KSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9VU0VSX01FRElBX1JFUVVFU1RfQ0xB
U1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZ
UEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCwgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdENsYXNz
KSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX1JFUVVFU1Qob2JqKSAgICAgICAg
IChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1VTRVJf
TUVESUFfUkVRVUVTVCkpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9SRVFVRVNU
X0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9U
WVBFX1dFQl9VU0VSX01FRElBX1JFUVVFU1QpKQorI2RlZmluZSBXRUJLSVRfV0VCX1VTRVJfTUVE
SUFfUkVRVUVTVF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9i
aiksICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFVRVNULCBXZWJLaXRXZWJVc2VyTWVk
aWFSZXF1ZXN0Q2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhUmVx
dWVzdCBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdl
YlVzZXJNZWRpYVJlcXVlc3RDbGFzcyBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3M7Cit0
eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdFByaXZhdGUgV2ViS2l0V2Vi
VXNlck1lZGlhUmVxdWVzdFByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhUmVx
dWVzdCB7CisgICAgR09iamVjdCBwYXJlbnRfaW5zdGFuY2U7CisgICAgV2ViS2l0V2ViVXNlck1l
ZGlhUmVxdWVzdFByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRp
YVJlcXVlc3RDbGFzcyB7CisgICAgR09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKK307CisKK1dF
QktJVF9BUEkgR1R5cGUKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2dldF90eXBlICh2
b2lkKSBHX0dOVUNfQ09OU1Q7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfdXNl
cl9tZWRpYV9yZXF1ZXN0X3dhbnRzX2F1ZGlvICAgICAgICAgICAgICAoV2ViS2l0V2ViVXNlck1l
ZGlhUmVxdWVzdCAqcmVxdWVzdCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJf
dXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRzX3ZpZGVvICAgICAgICAgICAgICAoV2ViS2l0V2ViVXNl
ck1lZGlhUmVxdWVzdCAqcmVxdWVzdCk7CisKK1dFQktJVF9BUEkgV2ViS2l0U2VjdXJpdHlPcmln
aW4gKgord2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZ2V0X3NlY3VyaXR5X29yaWdpbiAg
ICAgIChXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0ICpyZXF1ZXN0KTsKKworV0VCS0lUX0FQSSB2
b2lkCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9mYWlsICAgICAgICAgICAgICAgICAg
ICAgKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QgKnJlcXVlc3QpOworCitXRUJLSVRfQVBJIHZv
aWQKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3N1Y2NlZWQgICAgICAgICAgICAgICAg
ICAoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCAqd2ViUmVxdWVzdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViVXNlck1l
ZGlhTGlzdCogYXVkaW9NZWRpYUxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIHZpZGVvTWVk
aWFMaXN0KTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIHdlYmtpdHdlYnVzZXJtZWRpYXJl
cXVlc3RfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODJmYTcxYWM2OGNm
MWExMWU0MTJkNzU2MmRhY2JiNzM2NGY2MmZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlLmgKQEAgLTAs
MCArMSw0MCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgQ29sbGFib3JhIEx0ZC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0
aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKworI2lm
bmRlZiB3ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZV9oCisjZGVmaW5lIHdlYmtpdHdl
YnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisK
KyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK3N0cnVjdCBVc2VyTWVkaWFSZXF1ZXN0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCogY29yZShXZWJLaXRXZWJVc2VyTWVkaWFSZXF1
ZXN0Kik7CitXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiBraXROZXcoV2ViQ29yZTo6VXNlck1l
ZGlhUmVxdWVzdCopOworCit9CisKKyNlbmRpZiAvKiBFTkFCTEUoTUVESUFfU1RSRUFNKSAqLwor
CisjZW5kaWYgLyogd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGVfaCAqLwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IDU1NTE3MWFhMWNiNmRl
MzMzYTBjZjYzY2IzYWEzOTRmMzk0YTA0MGQuLjgzMWJhYzFhZDJlN2RjMzU4YjM0YjM2ZjUyMTQz
ZDhiMzk3YmUyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5j
cHAKQEAgLTgzLDYgKzgzLDcgQEAKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgi
CiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1
ZGUgIlVzZXJNZWRpYUNsaWVudEd0ay5oIgogI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01Eb2N1
bWVudFByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXRkb3dubG9hZC5oIgogI2luY2x1ZGUgIndl
YmtpdGRvd25sb2FkcHJpdmF0ZS5oIgpAQCAtMTA3LDYgKzEwOCw4IEBACiAjaW5jbHVkZSAid2Vi
a2l0d2VicmVzb3VyY2UuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJzZXR0aW5nc3ByaXZhdGUuaCIK
ICNpbmNsdWRlICJ3ZWJraXR3ZWJwbHVnaW5kYXRhYmFzZXByaXZhdGUuaCIKKyNpbmNsdWRlICJ3
ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJt
ZWRpYXJlcXVlc3Rwcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vid2luZG93ZmVhdHVyZXMu
aCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oIgogI2luY2x1ZGUgPGdkay9nZGtr
ZXlzeW1zLmg+CkBAIC0xMTksNiArMTIyLDcgQEAKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlv
bkNsaWVudEd0ay5oIgogI2VuZGlmCiAKKwogLyoqCiAgKiBTRUNUSU9OOndlYmtpdHdlYnZpZXcK
ICAqIEBzaG9ydF9kZXNjcmlwdGlvbjogVGhlIGNlbnRyYWwgY2xhc3Mgb2YgdGhlIFdlYktpdEdU
SysgQVBJCkBAIC0yMTAsNiArMjE0LDcgQEAgZW51bSB7CiAgICAgRURJVElOR19FTkRFRCwKICAg
ICBWSUVXUE9SVF9BVFRSSUJVVEVTX1JFQ09NUFVURV9SRVFVRVNURUQsCiAgICAgVklFV1BPUlRf
QVRUUklCVVRFU19DSEFOR0VELAorICAgIENIT09TRV9NRURJQV9ERVZJQ0UsCiAgICAgUkVTT1VS
Q0VfUkVTUE9OU0VfUkVDRUlWRUQsCiAgICAgUkVTT1VSQ0VfTE9BRF9GSU5JU0hFRCwKICAgICBS
RVNPVVJDRV9DT05URU5UX0xFTkdUSF9SRUNFSVZFRCwKQEAgLTExNzMsNiArMTE3OCwxMjAgQEAg
c3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19yZWFsX3NjcmlwdF9wcm9tcHQoV2ViS2l0
V2ViVmlldyogd2ViVmlldywgV2ViS2kKICAgICByZXR1cm4gVFJVRTsKIH0KIAorc3RhdGljIGdi
b29sZWFuIHdlYmtpdF93ZWJfdmlld19yZWFsX2Nob29zZV9tZWRpYV9kZXZpY2UoV2ViS2l0V2Vi
VmlldyAqd2ViVmlldywgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCwgV2ViS2l0
V2ViVXNlck1lZGlhTGlzdCogYXVkaW9NZWRpYUxpc3QsIFdlYktpdFdlYlVzZXJNZWRpYUxpc3Qq
IHZpZGVvTWVkaWFMaXN0KQoreworICAgIEd0a1dpZGdldCogZGlhbG9nOworICAgIEd0a1dpZGdl
dCogY29udGVudEFyZWE7CisgICAgR3RrV2lkZ2V0KiBhY3Rpb25BcmVhOworICAgIEd0a1dpZGdl
dCogZnJhbWU7CisgICAgR3RrV2lkZ2V0KiB2Ym94OworICAgIEd0a1dpZGdldCogYXVkaW9Db21i
byA9IDA7CisgICAgR3RrV2lkZ2V0KiB2aWRlb0NvbWJvID0gMDsKKyAgICBHdGtXaWRnZXQqIGF1
ZGlvTWVzc2FnZSA9IDA7CisgICAgR3RrV2lkZ2V0KiB2aWRlb01lc3NhZ2UgPSAwOworICAgIGdi
b29sZWFuIHdhbnRzQXVkaW8gPSB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF93YW50c19h
dWRpbyhyZXF1ZXN0KTsKKyAgICBnYm9vbGVhbiB3YW50c1ZpZGVvID0gd2Via2l0X3dlYl91c2Vy
X21lZGlhX3JlcXVlc3Rfd2FudHNfdmlkZW8ocmVxdWVzdCk7CisgICAgZ2ludCBhdWRpb0xpc3RM
ZW5ndGggPSB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfbGVuZ3RoKGF1ZGlvTWVkaWFM
aXN0KTsKKyAgICBnaW50IHZpZGVvTGlzdExlbmd0aCA9IHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9s
aXN0X2dldF9sZW5ndGgodmlkZW9NZWRpYUxpc3QpOworICAgIGdib29sZWFuIGhhc0F1ZGlvID0g
KGF1ZGlvTGlzdExlbmd0aCA+IDApOworICAgIGdib29sZWFuIGhhc1ZpZGVvID0gKHZpZGVvTGlz
dExlbmd0aCA+IDApOworICAgIGdpbnQgaSA9IDA7CisKKyAgICBkaWFsb2cgPSBndGtfZGlhbG9n
X25ld193aXRoX2J1dHRvbnMoXygiVXNlciBNZWRpYSBTZWxlY3RvciIpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfV0lORE9XKGd0a193aWRnZXRfZ2V0X3Rv
cGxldmVsKEdUS19XSURHRVQod2ViVmlldykpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR1RLX0RJQUxPR19ERVNUUk9ZX1dJVEhfUEFSRU5ULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfU1RPQ0tfQ0FOQ0VMLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfUkVTUE9OU0VfQ0FOQ0VMLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfU1RPQ0tfT0ssCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19SRVNQT05TRV9PSywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisKKyAgICBn
dGtfd2luZG93X3NldF9yZXNpemFibGUoR1RLX1dJTkRPVyhkaWFsb2cpLCBGQUxTRSk7CisgICAg
Z3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoKEdUS19DT05UQUlORVIoZGlhbG9nKSwgNSk7
CisKKyAgICBjb250ZW50QXJlYSA9IGd0a19kaWFsb2dfZ2V0X2NvbnRlbnRfYXJlYShHVEtfRElB
TE9HKGRpYWxvZykpOworICAgIGd0a19ib3hfc2V0X3NwYWNpbmcoR1RLX0JPWChjb250ZW50QXJl
YSksIDIpOworCisgICAgYWN0aW9uQXJlYSA9IGd0a19kaWFsb2dfZ2V0X2FjdGlvbl9hcmVhKEdU
S19ESUFMT0coZGlhbG9nKSk7CisgICAgZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoKEdU
S19DT05UQUlORVIoYWN0aW9uQXJlYSksIDUpOworICAgIGd0a19ib3hfc2V0X3NwYWNpbmcoR1RL
X0JPWChhY3Rpb25BcmVhKSwgNik7CisKKyAgICBpZiAoIWhhc0F1ZGlvICYmICFoYXNWaWRlbykg
eworICAgICAgICBhdWRpb01lc3NhZ2UgPSBndGtfbGFiZWxfbmV3KF8oIk5vIHVzZXIgbWVkaWEg
YXZhaWxhYmxlIikpOworICAgICAgICBndGtfbWlzY19zZXRfYWxpZ25tZW50KEdUS19NSVNDKGF1
ZGlvTWVzc2FnZSksIDAsIDApOworICAgICAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChj
b250ZW50QXJlYSksIGF1ZGlvTWVzc2FnZSwgRkFMU0UsIEZBTFNFLCA2KTsKKyAgICB9IGVsc2Ug
aWYgKHdhbnRzQXVkaW8pIHsKKyAgICAgICAgYXVkaW9NZXNzYWdlID0gZ3RrX2xhYmVsX25ldyho
YXNBdWRpbyA/IF8oIlNlbGVjdCBmcm9tIGF2YWlsYWJsZSB1c2VyIGF1ZGlvIikgOiBfKCJObyB1
c2VyIGF1ZGlvIGF2YWlsYWJsZSIpKTsKKyAgICAgICAgZ3RrX21pc2Nfc2V0X2FsaWdubWVudChH
VEtfTUlTQyhhdWRpb01lc3NhZ2UpLCAwLCAwKTsKKyAgICAgICAgZ3RrX2JveF9wYWNrX3N0YXJ0
KEdUS19CT1goY29udGVudEFyZWEpLCBhdWRpb01lc3NhZ2UsIEZBTFNFLCBGQUxTRSwgNik7Cisg
ICAgfQorCisgICAgaWYgKGhhc0F1ZGlvKSB7CisgICAgICAgIGZyYW1lID0gZ3RrX2ZyYW1lX25l
dyhfKCJBdWRpbyIpKTsKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCAyLCAwKQorICAgICAgICB2
Ym94ID0gZ3RrX2JveF9uZXcoR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCAwKTsKKyNlbHNlCisg
ICAgICAgIHZib3ggPSBndGtfdmJveF9uZXcoVFJVRSwgMCk7CisjZW5kaWYKKyAgICAgICAgZ3Rr
X2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoKEdUS19DT05UQUlORVIodmJveCksIDMpOworCisg
ICAgICAgIGF1ZGlvQ29tYm8gPSBndGtfY29tYm9fYm94X3RleHRfbmV3KCk7CisgICAgICAgIGZv
ciAoaSA9IDA7IGkgPCBhdWRpb0xpc3RMZW5ndGg7IGkrKykKKyAgICAgICAgICAgIGd0a19jb21i
b19ib3hfdGV4dF9hcHBlbmRfdGV4dChHVEtfQ09NQk9fQk9YX1RFWFQoYXVkaW9Db21ibyksIHdl
YmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9pdGVtX25hbWUoYXVkaW9NZWRpYUxpc3QsIGkp
KTsKKyAgICAgICAgZ3RrX2NvbWJvX2JveF9zZXRfYWN0aXZlKEdUS19DT01CT19CT1goYXVkaW9D
b21ibyksIDApOworICAgICAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHZib3gp
LCBhdWRpb0NvbWJvKTsKKworICAgICAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVS
KGZyYW1lKSwgdmJveCk7CisgICAgICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGNvbnRl
bnRBcmVhKSwgZnJhbWUsIEZBTFNFLCBGQUxTRSwgMyk7CisgICAgfQorCisgICAgaWYgKHdhbnRz
VmlkZW8pIHsKKyAgICAgICAgaWYgKGhhc1ZpZGVvKSB7CisgICAgICAgICAgICB2aWRlb01lc3Nh
Z2UgPSBndGtfbGFiZWxfbmV3KF8oIlNlbGVjdCBmcm9tIGF2YWlsYWJsZSB1c2VyIHZpZGVvIikp
OworICAgICAgICB9IGVsc2UgaWYgKCF3YW50c0F1ZGlvIHx8IGhhc0F1ZGlvKQorICAgICAgICAg
ICAgdmlkZW9NZXNzYWdlID0gZ3RrX2xhYmVsX25ldyhfKCJObyB1c2VyIHZpZGVvIGF2YWlsYWJs
ZSIpKTsKKyAgICAgICAgaWYgKHZpZGVvTWVzc2FnZSkgeworICAgICAgICAgICAgZ3RrX21pc2Nf
c2V0X2FsaWdubWVudChHVEtfTUlTQyh2aWRlb01lc3NhZ2UpLCAwLCAwKTsKKyAgICAgICAgICAg
IGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGNvbnRlbnRBcmVhKSwgdmlkZW9NZXNzYWdlLCBG
QUxTRSwgRkFMU0UsIDYpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGhhc1ZpZGVvKSB7
CisgICAgICAgIGZyYW1lID0gZ3RrX2ZyYW1lX25ldyhfKCJWaWRlbyIpKTsKKyNpZiBHVEtfQ0hF
Q0tfVkVSU0lPTigzLCAyLCAwKQorICAgICAgICB2Ym94ID0gZ3RrX2JveF9uZXcoR1RLX09SSUVO
VEFUSU9OX1ZFUlRJQ0FMLCAwKTsKKyNlbHNlCisgICAgICAgIHZib3ggPSBndGtfdmJveF9uZXco
VFJVRSwgMCk7CisjZW5kaWYKKyAgICAgICAgZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRo
KEdUS19DT05UQUlORVIodmJveCksIDMpOworCisgICAgICAgIHZpZGVvQ29tYm8gPSBndGtfY29t
Ym9fYm94X3RleHRfbmV3KCk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCB2aWRlb0xpc3RMZW5n
dGg7IGkrKykKKyAgICAgICAgICAgIGd0a19jb21ib19ib3hfdGV4dF9hcHBlbmRfdGV4dChHVEtf
Q09NQk9fQk9YX1RFWFQodmlkZW9Db21ibyksIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dl
dF9pdGVtX25hbWUodmlkZW9NZWRpYUxpc3QsIGkpKTsKKyAgICAgICAgZ3RrX2NvbWJvX2JveF9z
ZXRfYWN0aXZlKEdUS19DT01CT19CT1godmlkZW9Db21ibyksIDApOworICAgICAgICBndGtfY29u
dGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHZib3gpLCB2aWRlb0NvbWJvKTsKKworICAgICAgICBn
dGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKGZyYW1lKSwgdmJveCk7CisgICAgICAgIGd0
a19ib3hfcGFja19zdGFydChHVEtfQk9YKGNvbnRlbnRBcmVhKSwgZnJhbWUsIEZBTFNFLCBGQUxT
RSwgMyk7CisgICAgfQorCisgICAgZ3RrX3dpZGdldF9zaG93X2FsbChkaWFsb2cpOworCisgICAg
aWYgKGd0a19kaWFsb2dfcnVuKEdUS19ESUFMT0coZGlhbG9nKSkgPT0gR1RLX1JFU1BPTlNFX09L
KSB7CisgICAgICAgIGlmIChhdWRpb0NvbWJvKQorICAgICAgICAgICAgd2Via2l0X3dlYl91c2Vy
X21lZGlhX2xpc3Rfc2VsZWN0X2l0ZW0oYXVkaW9NZWRpYUxpc3QsIGd0a19jb21ib19ib3hfZ2V0
X2FjdGl2ZShHVEtfQ09NQk9fQk9YKGF1ZGlvQ29tYm8pKSk7CisgICAgICAgIGlmICh2aWRlb0Nv
bWJvKQorICAgICAgICAgICAgd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3Rfc2VsZWN0X2l0ZW0o
dmlkZW9NZWRpYUxpc3QsIGd0a19jb21ib19ib3hfZ2V0X2FjdGl2ZShHVEtfQ09NQk9fQk9YKHZp
ZGVvQ29tYm8pKSk7CisKKyAgICAgICAgd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfc3Vj
Y2VlZChyZXF1ZXN0LCBhdWRpb01lZGlhTGlzdCwgdmlkZW9NZWRpYUxpc3QpOworICAgIH0gZWxz
ZQorICAgICAgICB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9mYWlsKHJlcXVlc3QpOwor
CisgICAgZ3RrX3dpZGdldF9kZXN0cm95KGRpYWxvZyk7CisKKyAgICByZXR1cm4gVFJVRTsKK30K
Kwogc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19yZWFsX2NvbnNvbGVfbWVzc2FnZShX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogbWVzc2FnZSwgdW5zaWduZWQgaW50
IGxpbmUsIGNvbnN0IGdjaGFyKiBzb3VyY2VJZCkKIHsKICAgICBnX21lc3NhZ2UoImNvbnNvbGUg
bWVzc2FnZTogJXMgQCVkOiAlc1xuIiwgc291cmNlSWQsIGxpbmUsIG1lc3NhZ2UpOwpAQCAtMjcy
NCw2ICsyODQzLDMyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdl
YktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgV0VCS0lUX1RZUEVf
VklFV1BPUlRfQVRUUklCVVRFUyk7CiAKICAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3Ojpj
aG9vc2UtbWVkaWEtZGV2aWNlOgorICAgICAqIEB3ZWJfdmlldzogdGhlIG9iamVjdCB3aGljaCBy
ZWNlaXZlZCB0aGUgc2lnbmFsCisgICAgICogQHJlcXVlc3Q6IHRoZSAjV2ViS2l0V2ViVXNlck1l
ZGlhUnF1ZXN0IGF0dHJpYnV0ZSB3aGljaCBnZW5lcmF0ZWQgdGhlIHJlcXVlc3QuCisgICAgICog
QGF1ZGlvTGlzdDogYSAjV2ViS2l0V2ViVXNlck1lZGlhTGlzdCBjb250YWluaW5nIHRoZSBhdmFp
bGFibGUgYXVkaW8gbWVkaWEgb3B0aW9ucy4KKyAgICAgKiBAdmlkZW9MaXN0OiBhICNXZWJLaXRX
ZWJVc2VyTWVkaWFMaXN0IGNvbnRhaW5pbmcgdGhlIGF2YWlsYWJsZSB2aWRlbyBtZWRpYSBvcHRp
b25zLgorICAgICAqCisgICAgICogV2hlbiB0aGUgYXBwbGljYXRpb24gcmVxdWVzdCB1c2VyTWVk
aWEsIHRoaXMgc2lnbmFsIHdpbGwgYmUgZW1pdGVkIHdpdGggdGhlIHJlcXVlc3QKKyAgICAgKiBp
bmZvcm1hdGlvbiBhbmQgdGhlIGF2YWlsYWJsZSBvcHRpb25zIHRvIGJlIHNlbGVjdGVkLgorICAg
ICAqCisgICAgICogVGhlbiB0aGUgdXNlciBpcyBleHBlY3RlZCB0byBjYWxsIGVpdGhlciB3ZWJr
aXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9zdWNjZWVkKCkgb3IKKyAgICAgKiB3ZWJraXRfd2Vi
X3VzZXJfbWVkaWFfcmVxdWVzdF9mYWlsKCkgdG8gYWNjZXB0IG9yIHJlamVjdCB0aGUgcmVxdWVz
dC4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjAuMAorICAgICAqLworICAgIHdlYmtpdF93ZWJf
dmlld19zaWduYWxzW0NIT09TRV9NRURJQV9ERVZJQ0VdID0gZ19zaWduYWxfbmV3KCJjaG9vc2Ut
bWVkaWEtZGV2aWNlIiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFz
cyksCisgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgICAgIEdfU1RSVUNU
X09GRlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIGNob29zZV9tZWRpYV9kZXZpY2UpLAorICAgICAg
ICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCAwLAorICAgICAgICAgICAg
d2Via2l0X21hcnNoYWxfQk9PTEVBTl9fT0JKRUNUX09CSkVDVF9PQkpFQ1QsCisgICAgICAgICAg
ICBHX1RZUEVfQk9PTEVBTiwgMywKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01F
RElBX1JFUVVFU1QsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNU
LAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfTElTVCk7CisKKyAgICAv
KioKICAgICAgKiBXZWJLaXRXZWJWaWV3OjplbnRlcmluZy1mdWxsc2NyZWVuOgogICAgICAqIEB3
ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRl
ZC4KICAgICAgKiBAZWxlbWVudDogdGhlICNXZWJLaXRET01IVE1MRWxlbWVudCB3aGljaCBoYXMg
cmVxdWVzdGVkIGZ1bGwgc2NyZWVuIGRpc3BsYXkuCkBAIC0yOTEyLDYgKzMwNTcsNyBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdl
YlZpZXdDbGFzcykKICAgICB3ZWJWaWV3Q2xhc3MtPnNjcmlwdF9hbGVydCA9IHdlYmtpdF93ZWJf
dmlld19yZWFsX3NjcmlwdF9hbGVydDsKICAgICB3ZWJWaWV3Q2xhc3MtPnNjcmlwdF9jb25maXJt
ID0gd2Via2l0X3dlYl92aWV3X3JlYWxfc2NyaXB0X2NvbmZpcm07CiAgICAgd2ViVmlld0NsYXNz
LT5zY3JpcHRfcHJvbXB0ID0gd2Via2l0X3dlYl92aWV3X3JlYWxfc2NyaXB0X3Byb21wdDsKKyAg
ICB3ZWJWaWV3Q2xhc3MtPmNob29zZV9tZWRpYV9kZXZpY2UgPSB3ZWJraXRfd2ViX3ZpZXdfcmVh
bF9jaG9vc2VfbWVkaWFfZGV2aWNlOwogICAgIHdlYlZpZXdDbGFzcy0+Y29uc29sZV9tZXNzYWdl
ID0gd2Via2l0X3dlYl92aWV3X3JlYWxfY29uc29sZV9tZXNzYWdlOwogICAgIHdlYlZpZXdDbGFz
cy0+c2VsZWN0X2FsbCA9IHdlYmtpdF93ZWJfdmlld19yZWFsX3NlbGVjdF9hbGw7CiAgICAgd2Vi
Vmlld0NsYXNzLT5jdXRfY2xpcGJvYXJkID0gd2Via2l0X3dlYl92aWV3X3JlYWxfY3V0X2NsaXBi
b2FyZDsKQEAgLTM2MjksNyArMzc3NSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19p
bml0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCi0gICAgcHJpdi0+dXNlck1lZGlhQ2xpZW50ID0gYWRvcHRQdHIobmV3IFVzZXJNZWRp
YUNsaWVudEd0ayk7CisgICAgcHJpdi0+dXNlck1lZGlhQ2xpZW50ID0gYWRvcHRQdHIobmV3IFVz
ZXJNZWRpYUNsaWVudEd0ayh3ZWJWaWV3KSk7CiAgICAgV2ViQ29yZTo6cHJvdmlkZVVzZXJNZWRp
YVRvKHByaXYtPmNvcmVQYWdlLCBwcml2LT51c2VyTWVkaWFDbGllbnQuZ2V0KCkpOwogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCmluZGV4IDljODQyNjNi
NGJjMDk0N2E2ZjBkZjk1ZGIwMTdjNTIzNGExZTJkOWUuLjdkOTM1OTRjYjM5NGZiMTE0YjdjYmRj
NGE2Mzc0NWFlMzQwMDhiNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZp
ZXcuaApAQCAtNDQsNiArNDQsOSBAQCBHX0JFR0lOX0RFQ0xTCiAjZGVmaW5lIFdFQktJVF9XRUJf
VklFV19HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBX
RUJLSVRfVFlQRV9XRUJfVklFVywgV2ViS2l0V2ViVmlld0NsYXNzKSkKIAogdHlwZWRlZiBzdHJ1
Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIFdlYktpdFdlYlZpZXdQcml2YXRlOwordHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVz
dDsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0IFdlYktpdFdlYlVzZXJN
ZWRpYUxpc3Q7CisKIAogLyoqCiAgKiBXZWJLaXROYXZpZ2F0aW9uUmVzcG9uc2U6CkBAIC0xNTUs
NiArMTU4LDEyIEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIg
ICAgICAgICAgKm1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICpkZWZhdWx0X3ZhbHVl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnY2hhciogICAgICAgICAgICAgICAqdmFsdWUpOworCisgICAgZ2Jvb2xlYW4gICAgICAg
ICAgICAgICAgICAgKCogY2hvb3NlX21lZGlhX2RldmljZSkgICAgKFdlYktpdFdlYlZpZXcgICAg
ICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0ICpyZXF1ZXN0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0ICAgICphdWRpbywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViVXNlck1l
ZGlhTGlzdCAgICAqdmlkZW8pOworCiAgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICAgKCog
Y29uc29sZV9tZXNzYWdlKSAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmlldywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2NoYXIgICAgICAgICAgKm1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAg
ICBsaW5lX251bWJlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdG1hcnNo
YWwubGlzdCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdG1hcnNoYWwubGlzdAppbmRleCBiNzQy
ODkwNWM4OTgzY2ZjNzVlYzU0NDc0MTMzY2EyOGY2ZDc5NWI0Li44ZGQ0YmRlZWFjNzIyZjIyNDg0
NDQzZTYzMmMxM2ExYjU0NjQ5NjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXRtYXJzaGFsLmxpc3QKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0bWFyc2hhbC5saXN0
CkBAIC0yLDYgKzIsNyBAQCBCT09MRUFOOkVOVU0sSU5UCiBCT09MRUFOOklOVCxJTlQsU1RSSU5H
CiBCT09MRUFOOk9CSkVDVAogQk9PTEVBTjpPQkpFQ1QsT0JKRUNUCitCT09MRUFOOk9CSkVDVCxP
QkpFQ1QsIE9CSkVDVAogQk9PTEVBTjpPQkpFQ1QsT0JKRUNULEJPT0xFQU4KIEJPT0xFQU46T0JK
RUNULE9CSkVDVCxFTlVNCiBCT09MRUFOOk9CSkVDVCxPQkpFQ1QsRU5VTSxCT09MRUFOCkBAIC0x
OCw2ICsxOSw3IEBAIEVOVU06T0JKRUNULE9CSkVDVAogT0JKRUNUOk9CSkVDVAogT0JKRUNUOlNU
UklORyxTVFJJTkcsUE9JTlRFUgogT0JKRUNUOlZPSUQKK1ZPSUQ6T0JKRUNUCiBWT0lEOk9CSkVD
VCxPQkpFQ1QKIFZPSUQ6T0JKRUNULE9CSkVDVCxJTlQKIFZPSUQ6T0JKRUNULE9CSkVDVCxPQkpF
Q1QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168589</attachid>
            <date>2012-10-14 14:25:40 -0700</date>
            <delta_ts>2012-10-14 14:31:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94373-20121014182431.patch</filename>
            <type>text/plain</type>
            <size>53416</size>
            <attacher name="Danilo de Paula">danilo.eu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMzkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggM2UxYjZhMzJm
NDQ0YTM1NGQ4Nzk5NzdhOTFiOGQ0MjMzNGQxZTA1NS4uMmFkY2U0YTFkMDY5N2Q4ZmFlM2JhZmY0
ZWE1NzBmYWQ4ODE3ZDAzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAx
Mi0xMC0wOSAgRGFuaWxvIENlc2FyIExlbWVzIGRlIFBhdWxhICA8ZGFuaWxvLmNlc2FyQGNvbGxh
Ym9yYS5jby51az4KKworICAgICAgICBbZ3RrXSBhZGRpbmcgbWV0aG9kcyBhbmQgc2lnbmFscyBm
b3IgdXNlcm1lZGlhIGNvbW11bmljYXRpb24gYmV0d2VlbiB3ZWJraXQgYW5kIGJyb3dzZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MzczCisKKyAg
ICAgICAgV2hlbiB0aGUgdXNlciBtYWtlIGEgZ2V0VXNlck1lZGlhIGNhbGwsIHdlYnZpZXcgd2ls
bCBlbWl0IGEgc2lnaWFsICh1c2VyLW1lZGlhLXJlcXVlc3RlZCkKKyAgICAgICAgdG8gdGhlIGFw
cGxpY2F0aW9uIGNvbnRhaW5pbmcgdGhlbiByZXF1ZXN0IGl0c2VsZiAod2Via2l0d2VidXNlcm1l
ZGlhcmVxdWVzdCkgYW5kIHR3bworICAgICAgICBsaXN0IHdpdGggdGhlIGF2YWlsYWJsZSBhdWRp
byBhbmQgdmlkZW8gZGV2aWNlcyAod2Via2l0d2VidXNlcm1lZGlhbGlzdCkuCisKKyAgICAgICAg
VGhlIGFwcGxpY2F0aW9uIG11c3Qgc2hvdyB0aGUgbGlzdCB0byB0aGUgdXNlciBhbmQgYXNrIHBl
cm1pc3Npb24gdG8gdXNlIG9uZSBvZgorICAgICAgICB0aG9zZSBkZXZpY2VzIChvciByZWplY3Qg
dGhlIHJlcXVlc3QpLgorCisgICAgICAgIEluIGNhc2UgdGhlIHVzZXIgYWNjZXB0cyB0aGUgcmVx
dWVzdCwgdGhlIGFwcGxpY2F0aW9uIG11c3QgbWFyayB0aGUgZGV2aWNlIGFzCisgICAgICAgIHNl
bGVjdGVkICh1c2luZyB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9zZWxlY3RfaXRlbSkgYW5k
IHRoZW4gY2FsbAorICAgICAgICB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9zdWNjZWVk
IHdoaWNoIHdpbGwgaGFuZGxlIHRoZSByZXF1ZXN0IHByb3Blcmx5LgorCisgICAgICAgIE9uIHRo
ZSBjYXNlIHRoZSB1c2VyIHJlamVjdCB0aGUgcmVxdWVzdCwgd2Via2l0X3dlYl91c2VyX21lZGlh
X3JlcXVlc3RfZmFpbCBtdXN0CisgICAgICAgIGJlIGNhbGxlZC4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1VzZXJNZWRpYUNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlVzZXJNZWRpYUNsaWVudEd0azo6VXNlck1lZGlhQ2xpZW50R3RrKToKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhQ2xpZW50R3RrOjpwYWdlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYktp
dDo6VXNlck1lZGlhQ2xpZW50R3RrOjpyZXF1ZXN0VXNlck1lZGlhKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9Vc2VyTWVkaWFDbGllbnRHdGsuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoVXNlck1lZGlhQ2xpZW50R3RrKToKKyAgICAgICAgKiBkb2NzL3dlYmtpdGd0ay1kb2Nz
LnNnbWw6CisgICAgICAgICogZG9jcy93ZWJraXRndGstc2VjdGlvbnMudHh0OgorICAgICAgICAq
IHdlYmtpdC93ZWJraXQuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlz
dC5jcHA6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlKToK
KyAgICAgICAgKHdlYmtpdFdlYlVzZXJNZWRpYUxpc3RGaW5hbGl6ZSk6CisgICAgICAgICh3ZWJr
aXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJf
dXNlcl9tZWRpYV9saXN0X2luaXQpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX2xp
c3RfZ2V0X2xlbmd0aCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRf
aXRlbV9uYW1lKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2lzX2l0ZW1f
c2VsZWN0ZWQpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3Rfc2VsZWN0X2l0
ZW0pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Y29yZSk6CisgICAgICAg
IChXZWJLaXQ6OmtpdE5ldyk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxp
c3QuaDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViVXNlck1lZGlhTGlzdCk6CisgICAgICAg
IChfV2ViS2l0V2ViVXNlck1lZGlhTGlzdENsYXNzKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
d2VidXNlcm1lZGlhbGlzdHByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0LmNwcDogQWRkZWQuCisgICAg
ICAgIChfV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdFByaXZhdGUpOgorICAgICAgICAod2Via2l0
V2ViVXNlck1lZGlhUmVxdWVzdEZpbmFsaXplKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9t
ZWRpYV9yZXF1ZXN0X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlh
X3JlcXVlc3RfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF93
YW50c19hdWRpbyk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF93YW50
c192aWRlbyk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9nZXRfc2Vj
dXJpdHlfb3JpZ2luKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3N1
Y2NlZWQpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZmFpbCk6Cisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAgICAgICAgKFdlYktp
dDo6a2l0TmV3KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5o
OiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KToKKyAgICAgICAg
KF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3MpOgorICAgICAgICAqIHdlYmtpdC93ZWJr
aXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jaG9vc2VfbWVkaWFfZGV2aWNlKToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJf
dmlld19pbml0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5oOgorICAgICAgICAo
X1dlYktpdFdlYlZpZXdDbGFzcyk6CisgICAgICAgICogd2Via2l0bWFyc2hhbC5saXN0OgorCisy
MDEyLTEwLTAzICBEYW5pbG8gQ2VzYXIgTGVtZXMgZGUgUGF1bGEgIDxkYW5pbG8uY2VzYXJAY29s
bGFib3JhLmNvLnVrPgorCisgICAgICAgIFtndGtdIGFkZGluZyBtZXRob2RzIGFuZCBzaWduYWxz
IGZvciB1c2VybWVkaWEgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHdlYmtpdCBhbmQgYnJvd3Nlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQzNzMKKwor
ICAgICAgICBXaGVuIHRoZSB1c2VyIG1ha2UgYSBnZXRVc2VyTWVkaWEgY2FsbCwgd2VidmlldyB3
aWxsIGVtaXQgYSBzaWdpYWwgKHVzZXItbWVkaWEtcmVxdWVzdGVkKQorICAgICAgICB0byB0aGUg
YXBwbGljYXRpb24gY29udGFpbmluZyB0aGVuIHJlcXVlc3QgaXRzZWxmICh3ZWJraXR3ZWJ1c2Vy
bWVkaWFyZXF1ZXN0KSBhbmQgdHdvCisgICAgICAgIGxpc3Qgd2l0aCB0aGUgYXZhaWxhYmxlIGF1
ZGlvIGFuZCB2aWRlbyBkZXZpY2VzICh3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0KS4KKworICAgICAg
ICBUaGUgYXBwbGljYXRpb24gbXVzdCBzaG93IHRoZSBsaXN0IHRvIHRoZSB1c2VyIGFuZCBhc2sg
cGVybWlzc2lvbiB0byB1c2Ugb25lIG9mCisgICAgICAgIHRob3NlIGRldmljZXMgKG9yIHJlamVj
dCB0aGUgcmVxdWVzdCkuCisKKyAgICAgICAgSW4gY2FzZSB0aGUgdXNlciBhY2NlcHRzIHRoZSBy
ZXF1ZXN0LCB0aGUgYXBwbGljYXRpb24gbXVzdCBtYXJrIHRoZSBkZXZpY2UgYXMKKyAgICAgICAg
c2VsZWN0ZWQgKHVzaW5nIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X3NlbGVjdF9pdGVtKSBh
bmQgdGhlbiBjYWxsCisgICAgICAgIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3N1Y2Nl
ZWQgd2hpY2ggd2lsbCBoYW5kbGUgdGhlIHJlcXVlc3QgcHJvcGVybHkuCisKKyAgICAgICAgT24g
dGhlIGNhc2UgdGhlIHVzZXIgcmVqZWN0IHRoZSByZXF1ZXN0LCB3ZWJraXRfd2ViX3VzZXJfbWVk
aWFfcmVxdWVzdF9mYWlsIG11c3QKKyAgICAgICAgYmUgY2FsbGVkLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhQ2xpZW50R3RrOjpVc2VyTWVkaWFDbGllbnRHdGspOgorICAgICAgICAo
V2ViS2l0OjpVc2VyTWVkaWFDbGllbnRHdGs6OnBhZ2VEZXN0cm95ZWQpOgorICAgICAgICAoV2Vi
S2l0OjpVc2VyTWVkaWFDbGllbnRHdGs6OnJlcXVlc3RVc2VyTWVkaWEpOgorICAgICAgICAoV2Vi
S2l0OjpVc2VyTWVkaWFDbGllbnRHdGs6OmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1VzZXJNZWRpYUNsaWVudEd0ay5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChVc2VyTWVkaWFDbGllbnRHdGspOgorICAgICAgICAqIGRvY3Mvd2Via2l0
Z3RrLWRvY3Muc2dtbDoKKyAgICAgICAgKiBkb2NzL3dlYmtpdGd0ay1zZWN0aW9ucy50eHQ6Cisg
ICAgICAgICogd2Via2l0L3dlYmtpdC5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ1c2Vy
bWVkaWFsaXN0LmNwcDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViVXNlck1lZGlhTGlzdFBy
aXZhdGUpOgorICAgICAgICAod2Via2l0V2ViVXNlck1lZGlhTGlzdEZpbmFsaXplKToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2NsYXNzX2luaXQpOgorICAgICAgICAod2Vi
a2l0X3dlYl91c2VyX21lZGlhX2xpc3RfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJf
bWVkaWFfbGlzdF9nZXRfbGVuZ3RoKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9s
aXN0X2dldF9pdGVtX25hbWUpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3Rf
aXNfaXRlbV9zZWxlY3RlZCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9z
ZWxlY3RfaXRlbSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToK
KyAgICAgICAgKFdlYktpdDo6a2l0TmV3KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2VidXNl
cm1lZGlhbGlzdC5oOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0KToK
KyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0Q2xhc3MpOgorICAgICAgICAqIHdlYmtp
dC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSk6CisgICAgICAg
ICh3ZWJraXRXZWJVc2VyTWVkaWFSZXF1ZXN0RmluYWxpemUpOgorICAgICAgICAod2Via2l0X3dl
Yl91c2VyX21lZGlhX3JlcXVlc3RfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3Vz
ZXJfbWVkaWFfcmVxdWVzdF9pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9y
ZXF1ZXN0X3dhbnRzX2F1ZGlvKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1
ZXN0X3dhbnRzX3ZpZGVvKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0
X2dldF9zZWN1cml0eV9vcmlnaW4pOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX3Jl
cXVlc3Rfc3VjY2VlZCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9m
YWlsKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAg
ICAoV2ViS2l0OjpraXROZXcpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFy
ZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QpOgor
ICAgICAgICAoX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RDbGFzcyk6CisgICAgICAgICogd2Vi
a2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2
aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAgICAg
KHdlYmtpdF93ZWJfdmlld19pbml0KToKKyAgICAgICAgKiB3ZWJraXRtYXJzaGFsLmxpc3Q6CisK
IDIwMTItMTAtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBDaGFuZ2UgbW9zdCBHcmFwaGljc0xheWVyOjpjcmVhdGUgY2FsbHMgdG8gdXNlIHRoZSB2
ZXJzaW9uIHRoYXQgdGFrZXMgYSBHcmFwaGljc0xheWVyRmFjdG9yeQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KaW5kZXggMzQ2MWRiYmVmNTk5NTBjODk3MDAzM2U3MmQ3ODU2MDY0YzhmMmJk
Yi4uMWEwYzc4ZDQzYzkxMTdlMDUxODg2YzJhZjEzM2NkNGY0M2VjMThiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCkBAIC01OTQyLDYgKzU5NDIsOCBAQCB3ZWJjb3JlZ3RrX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtEcmFnQW5kRHJvcEhlbHBl
ci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrSW5wdXRNZXRob2RGaWx0ZXIu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrSW5wdXRNZXRob2RGaWx0ZXIu
aCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a01lZGlhQ2hvb3NlckRpYWxvZy5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtNZWRpYUNob29zZXJEaWFsb2cu
aCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0dPd25QdHJHdGsuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9HdGtNZWRpYUNob29zZXJEaWFsb2cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0d0a01lZGlhQ2hvb3NlckRpYWxvZy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODRh
YTJkOTdhZWZjNGYxMmQ5NjczNjk5YjE2ZDRiNmQ3OTFjYzZkNwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtNZWRpYUNob29zZXJEaWFsb2cuY3BwCkBA
IC0wLDAgKzEsMTU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbGxhYm9yYS4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkd0a01lZGlhQ2hvb3NlckRpYWxvZy5oIgorCisj
aW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFSZXF1ZXN0
LmgiCisKKyNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2luY2x1ZGUgPGd0ay9ndGsuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
R3RrTWVkaWFDaG9vc2VyRGlhbG9nOjpHdGtNZWRpYUNob29zZXJEaWFsb2coR3RrV2lkZ2V0KiBw
YXJlbnQsIFVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNl
VmVjdG9yJiBhdWRpb1NvdXJjZSwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVv
U291cmNlKQorICAgIDogbV9kaWFsb2coMCkKKyAgICAsIG1fYXVkaW9Db21ibygwKQorICAgICwg
bV92aWRlb0NvbWJvKDApCit7CisgICAgR3RrV2lkZ2V0KiB2Ym94OworICAgIEd0a1dpZGdldCog
YXVkaW9NZXNzYWdlID0gMDsKKyAgICBHdGtXaWRnZXQqIHZpZGVvTWVzc2FnZSA9IDA7CisgICAg
Z2Jvb2xlYW4gd2FudHNBdWRpbyA9IHJlcXVlc3QtPmF1ZGlvKCk7CisgICAgZ2Jvb2xlYW4gd2Fu
dHNWaWRlbyA9IHJlcXVlc3QtPnZpZGVvKCk7CisgICAgZ2ludCBhdWRpb0xpc3RMZW5ndGggPSBh
dWRpb1NvdXJjZS5zaXplKCk7CisgICAgZ2ludCB2aWRlb0xpc3RMZW5ndGggPSB2aWRlb1NvdXJj
ZS5zaXplKCk7CisgICAgZ2Jvb2xlYW4gaGFzQXVkaW8gPSAoYXVkaW9MaXN0TGVuZ3RoID4gMCk7
CisgICAgZ2Jvb2xlYW4gaGFzVmlkZW8gPSAodmlkZW9MaXN0TGVuZ3RoID4gMCk7CisgICAgZ2lu
dCBpID0gMDsKKworICAgIG1fZGlhbG9nID0gZ3RrX2RpYWxvZ19uZXdfd2l0aF9idXR0b25zKF8o
IlVzZXIgTWVkaWEgU2VsZWN0b3IiKSwKKyAgICAgICAgcGFyZW50PyBHVEtfV0lORE9XKHBhcmVu
dCkgOiAwLAorICAgICAgICBHVEtfRElBTE9HX0RFU1RST1lfV0lUSF9QQVJFTlQsCisgICAgICAg
IEdUS19TVE9DS19DQU5DRUwsCisgICAgICAgIEdUS19SRVNQT05TRV9DQU5DRUwsCisgICAgICAg
IEdUS19TVE9DS19PSywKKyAgICAgICAgR1RLX1JFU1BPTlNFX09LLAorICAgICAgICAwKTsKKwor
ICAgIGd0a193aW5kb3dfc2V0X3Jlc2l6YWJsZShHVEtfV0lORE9XKG1fZGlhbG9nKSwgRkFMU0Up
OworICAgIGd0a19jb250YWluZXJfc2V0X2JvcmRlcl93aWR0aChHVEtfQ09OVEFJTkVSKG1fZGlh
bG9nKSwgNSk7CisKKyAgICBHdGtXaWRnZXQqIGNvbnRlbnRBcmVhID0gZ3RrX2RpYWxvZ19nZXRf
Y29udGVudF9hcmVhKEdUS19ESUFMT0cobV9kaWFsb2cpKTsKKyAgICBndGtfYm94X3NldF9zcGFj
aW5nKEdUS19CT1goY29udGVudEFyZWEpLCAyKTsKKworICAgIEd0a1dpZGdldCogYWN0aW9uQXJl
YSA9IGd0a19kaWFsb2dfZ2V0X2FjdGlvbl9hcmVhKEdUS19ESUFMT0cobV9kaWFsb2cpKTsKKyAg
ICBndGtfY29udGFpbmVyX3NldF9ib3JkZXJfd2lkdGgoR1RLX0NPTlRBSU5FUihhY3Rpb25BcmVh
KSwgNSk7CisgICAgZ3RrX2JveF9zZXRfc3BhY2luZyhHVEtfQk9YKGFjdGlvbkFyZWEpLCA2KTsK
KworICAgIGlmICghaGFzQXVkaW8gJiYgIWhhc1ZpZGVvKSB7CisgICAgICAgIGF1ZGlvTWVzc2Fn
ZSA9IGd0a19sYWJlbF9uZXcoXygiTm8gdXNlciBtZWRpYSBhdmFpbGFibGUiKSk7CisgICAgICAg
IGd0a19taXNjX3NldF9hbGlnbm1lbnQoR1RLX01JU0MoYXVkaW9NZXNzYWdlKSwgMCwgMCk7Cisg
ICAgICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGNvbnRlbnRBcmVhKSwgYXVkaW9NZXNz
YWdlLCBGQUxTRSwgRkFMU0UsIDYpOworICAgIH0gZWxzZSBpZiAod2FudHNBdWRpbykgeworICAg
ICAgICBhdWRpb01lc3NhZ2UgPSBndGtfbGFiZWxfbmV3KGhhc0F1ZGlvID8gXygiU2VsZWN0IGZy
b20gYXZhaWxhYmxlIHVzZXIgYXVkaW8iKSA6IF8oIk5vIHVzZXIgYXVkaW8gYXZhaWxhYmxlIikp
OworICAgICAgICBndGtfbWlzY19zZXRfYWxpZ25tZW50KEdUS19NSVNDKGF1ZGlvTWVzc2FnZSks
IDAsIDApOworICAgICAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChjb250ZW50QXJlYSks
IGF1ZGlvTWVzc2FnZSwgRkFMU0UsIEZBTFNFLCA2KTsKKyAgICB9CisKKyAgICBpZiAoaGFzQXVk
aW8pIHsKKyAgICAgICAgR3RrV2lkZ2V0KiBmcmFtZSA9IGd0a19mcmFtZV9uZXcoXygiQXVkaW8i
KSk7CisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgMiwgMCkKKyAgICAgICAgdmJveCA9IGd0a19i
b3hfbmV3KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgMCk7CisjZWxzZQorICAgICAgICB2Ym94
ID0gZ3RrX3Zib3hfbmV3KFRSVUUsIDApOworI2VuZGlmCisgICAgICAgIGd0a19jb250YWluZXJf
c2V0X2JvcmRlcl93aWR0aChHVEtfQ09OVEFJTkVSKHZib3gpLCAzKTsKKworICAgICAgICBtX2F1
ZGlvQ29tYm8gPSBndGtfY29tYm9fYm94X3RleHRfbmV3KCk7CisgICAgICAgIGZvciAoaSA9IDA7
IGkgPCBhdWRpb0xpc3RMZW5ndGg7IGkrKykKKyAgICAgICAgICAgIGd0a19jb21ib19ib3hfdGV4
dF9hcHBlbmRfdGV4dChHVEtfQ09NQk9fQk9YX1RFWFQobV9hdWRpb0NvbWJvKSwgZ19zdHJkdXAo
YXVkaW9Tb3VyY2VbaV0tPm5hbWUoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIGd0a19jb21i
b19ib3hfc2V0X2FjdGl2ZShHVEtfQ09NQk9fQk9YKG1fYXVkaW9Db21ibyksIDApOworICAgICAg
ICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHZib3gpLCBtX2F1ZGlvQ29tYm8pOwor
CisgICAgICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIoZnJhbWUpLCB2Ym94KTsK
KyAgICAgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goY29udGVudEFyZWEpLCBmcmFtZSwg
RkFMU0UsIEZBTFNFLCAzKTsKKyAgICB9CisKKyAgICBpZiAod2FudHNWaWRlbykgeworICAgICAg
ICBpZiAoaGFzVmlkZW8pIHsKKyAgICAgICAgICAgIHZpZGVvTWVzc2FnZSA9IGd0a19sYWJlbF9u
ZXcoXygiU2VsZWN0IGZyb20gYXZhaWxhYmxlIHVzZXIgdmlkZW8iKSk7CisgICAgICAgIH0gZWxz
ZSBpZiAoIXdhbnRzQXVkaW8gfHwgaGFzQXVkaW8pCisgICAgICAgICAgICB2aWRlb01lc3NhZ2Ug
PSBndGtfbGFiZWxfbmV3KF8oIk5vIHVzZXIgdmlkZW8gYXZhaWxhYmxlIikpOworICAgICAgICBp
ZiAodmlkZW9NZXNzYWdlKSB7CisgICAgICAgICAgICBndGtfbWlzY19zZXRfYWxpZ25tZW50KEdU
S19NSVNDKHZpZGVvTWVzc2FnZSksIDAsIDApOworICAgICAgICAgICAgZ3RrX2JveF9wYWNrX3N0
YXJ0KEdUS19CT1goY29udGVudEFyZWEpLCB2aWRlb01lc3NhZ2UsIEZBTFNFLCBGQUxTRSwgNik7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoaGFzVmlkZW8pIHsKKyAgICAgICAgR3RrV2lk
Z2V0KiBmcmFtZSA9IGd0a19mcmFtZV9uZXcoXygiVmlkZW8iKSk7CisjaWYgR1RLX0NIRUNLX1ZF
UlNJT04oMywgMiwgMCkKKyAgICAgICAgdmJveCA9IGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElP
Tl9WRVJUSUNBTCwgMCk7CisjZWxzZQorICAgICAgICB2Ym94ID0gZ3RrX3Zib3hfbmV3KFRSVUUs
IDApOworI2VuZGlmCisgICAgICAgIGd0a19jb250YWluZXJfc2V0X2JvcmRlcl93aWR0aChHVEtf
Q09OVEFJTkVSKHZib3gpLCAzKTsKKworICAgICAgICBtX3ZpZGVvQ29tYm8gPSBndGtfY29tYm9f
Ym94X3RleHRfbmV3KCk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCB2aWRlb0xpc3RMZW5ndGg7
IGkrKykKKyAgICAgICAgICAgIGd0a19jb21ib19ib3hfdGV4dF9hcHBlbmRfdGV4dChHVEtfQ09N
Qk9fQk9YX1RFWFQobV92aWRlb0NvbWJvKSwgZ19zdHJkdXAodmlkZW9Tb3VyY2VbaV0tPm5hbWUo
KS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIGd0a19jb21ib19ib3hfc2V0X2FjdGl2ZShHVEtf
Q09NQk9fQk9YKG1fdmlkZW9Db21ibyksIDApOworICAgICAgICBndGtfY29udGFpbmVyX2FkZChH
VEtfQ09OVEFJTkVSKHZib3gpLCBtX3ZpZGVvQ29tYm8pOworCisgICAgICAgIGd0a19jb250YWlu
ZXJfYWRkKEdUS19DT05UQUlORVIoZnJhbWUpLCB2Ym94KTsKKyAgICAgICAgZ3RrX2JveF9wYWNr
X3N0YXJ0KEdUS19CT1goY29udGVudEFyZWEpLCBmcmFtZSwgRkFMU0UsIEZBTFNFLCAzKTsKKyAg
ICB9Cit9CisKK0d0a01lZGlhQ2hvb3NlckRpYWxvZzo6fkd0a01lZGlhQ2hvb3NlckRpYWxvZygp
Cit7CisgICAgZ3RrX3dpZGdldF9kZXN0cm95KG1fZGlhbG9nKTsKK30KKworaW50IEd0a01lZGlh
Q2hvb3NlckRpYWxvZzo6c2VsZWN0ZWRBdWRpbygpCit7CisgICAgaWYgKG1fYXVkaW9Db21ibykK
KyAgICAgICAgcmV0dXJuIGd0a19jb21ib19ib3hfZ2V0X2FjdGl2ZShHVEtfQ09NQk9fQk9YKG1f
YXVkaW9Db21ibykpOworCisgICAgcmV0dXJuIC0xOworfQorCitpbnQgR3RrTWVkaWFDaG9vc2Vy
RGlhbG9nOjpzZWxlY3RlZFZpZGVvKCkKK3sKKyAgICBpZiAobV92aWRlb0NvbWJvKQorICAgICAg
ICByZXR1cm4gZ3RrX2NvbWJvX2JveF9nZXRfYWN0aXZlKEdUS19DT01CT19CT1gobV92aWRlb0Nv
bWJvKSk7CisKKyAgICByZXR1cm4gLTE7Cit9CisKK3ZvaWQgR3RrTWVkaWFDaG9vc2VyRGlhbG9n
OjpzaG93KCkKK3sKKyAgICBndGtfd2lkZ2V0X3Nob3dfYWxsKG1fZGlhbG9nKTsKK30KKworR3Rr
V2lkZ2V0KiBHdGtNZWRpYUNob29zZXJEaWFsb2c6OndpZGdldCgpCit7CisgICAgcmV0dXJuIG1f
ZGlhbG9nOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
R3RrTWVkaWFDaG9vc2VyRGlhbG9nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3Rr
TWVkaWFDaG9vc2VyRGlhbG9nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFmMjQ2ZTJjNjNjNjE2YmYxNTE0MjUx
ZmIyNTRlMGY3ODBmMzVlMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9HdGtNZWRpYUNob29zZXJEaWFsb2cuaApAQCAtMCwwICsxLDUzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIENvbGxhYm9yYS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBHdGtNZWRpYUNob29zZXJEaWFs
b2dfaAorI2RlZmluZSBHdGtNZWRpYUNob29zZXJEaWFsb2dfaAorCisjaW5jbHVkZSAiTWVkaWFT
dHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFSZXF1ZXN0LmgiCisKKyNpbmNsdWRl
IDx3dGYvRmFzdEFsbG9jQmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEd0a01lZGlhQ2hvb3NlckRpYWxvZyB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoR3RrTWVkaWFDaG9vc2VyRGlhbG9nKTsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKKworcHVibGljOgorICAgIEd0a01lZGlhQ2hvb3NlckRpYWxvZyhH
dGtXaWRnZXQgKnBhcmVudCwgVXNlck1lZGlhUmVxdWVzdCosIGNvbnN0IE1lZGlhU3RyZWFtU291
cmNlVmVjdG9yJiwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImKTsKKyAgICB+R3RrTWVk
aWFDaG9vc2VyRGlhbG9nKCk7CisKKyAgICB2b2lkIHNob3coKTsKKyAgICBpbnQgc2VsZWN0ZWRB
dWRpbygpOworICAgIGludCBzZWxlY3RlZFZpZGVvKCk7CisgICAgR3RrV2lkZ2V0KiB3aWRnZXQo
KTsKKworcHJpdmF0ZToKKworICAgIEd0a1dpZGdldCAqbV9kaWFsb2c7CisgICAgR3RrV2lkZ2V0
ICptX2F1ZGlvQ29tYm87CisgICAgR3RrV2lkZ2V0ICptX3ZpZGVvQ29tYm87Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBHdGtNZWRpYUNob29zZXJEaWFsb2dfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2Vi
S2l0L2d0ay9HTlVtYWtlZmlsZS5hbQppbmRleCA1YmU5ZWI1NDhlZTAyM2QxNDBhMzVkMTY2MjQz
M2Q1ODFiYjcxYjgzLi5mYmE4NGJjMGYxMDJmM2I3MjQ5YmQyZTMzM2UwOGJkYjE5YTkxNGJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQpAQCAtMTQyLDYgKzE0Miw4IEBAIHdlYmtpdGd0a19z
dGF0aWNfaF9hcGkgKz0gXAogCSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2VicG9saWN5ZGVjaXNpb24uaCBcCiAJJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJyZXNvdXJjZS5oIFwKIAkkKHNyY2RpcikvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmggXAorCSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdC5oIFwKKwkkKHNyY2RpcikvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuaCBcCiAJJChzcmNkaXIp
L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oIFwKIAkk
KHNyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAogCkBAIC0y
NzYsNiArMjc4LDEwIEBAIHdlYmtpdGd0a19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2VicGx1Z2luZGF0YWJhc2Vwcml2YXRlLmggXAogCVNvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAgXAogCVNvdXJjZS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5nc3ByaXZhdGUuaCBcCisJU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3QuY3BwIFwKKwlTb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdHByaXZhdGUuaCBcCisJU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuY3BwIFwKKwlTb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGUuaCBcCiAJU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIFwKIAlTb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Vc2VyTWVkaWFDbGllbnRHdGsuY3BwIGIvU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50R3RrLmNwcAppbmRleCAzOTE2
NzZhZmI1YWY5ZjA3NWViMjZiMDY5YWM5MzVjZjBlYmYzY2M2Li41NzdmNWEwM2Y1NmI0MzVmODVm
ZTYwNzNjMGE0MjIyMWMwZmU3ZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9Vc2VyTWVkaWFDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L1VzZXJNZWRpYUNsaWVudEd0ay5jcHAKQEAgLTIyLDE1ICsyMiwxNiBA
QAogI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudEd0ay5oIgogCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKLSNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgogI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCi0jaW5jbHVkZSAiVXNlck1lZGlhUmVxdWVzdC5oIgorI2luY2x1ZGUgIndlYmtp
dHdlYnVzZXJtZWRpYWxpc3Rwcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0d2VidXNlcm1lZGlh
cmVxdWVzdHByaXZhdGUuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1Vc2VyTWVkaWFDbGllbnRHdGs6OlVzZXJNZWRpYUNsaWVudEd0aygpCitV
c2VyTWVkaWFDbGllbnRHdGs6OlVzZXJNZWRpYUNsaWVudEd0ayhXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3KQorICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiB7CiB9CiAKQEAgLTQwLDEyICs0MSwxMiBA
QCBVc2VyTWVkaWFDbGllbnRHdGs6On5Vc2VyTWVkaWFDbGllbnRHdGsoKQogCiB2b2lkIFVzZXJN
ZWRpYUNsaWVudEd0azo6cGFnZURlc3Ryb3llZCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KIAogdm9pZCBVc2VyTWVkaWFDbGllbnRHdGs6OnJlcXVlc3RVc2VyTWVkaWEoV1RGOjpQYXNz
UmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IHBycFJlcXVlc3QsIGNvbnN0IE1lZGlhU3RyZWFtU291
cmNlVmVjdG9yJiBhdWRpb1NvdXJjZSwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZp
ZGVvU291cmNlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgUmVmUHRyPFVzZXJNZWRp
YVJlcXVlc3Q+IHJlcXVlc3QgPSBwcnBSZXF1ZXN0OworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFt
ZShtX3dlYlZpZXcsICJjaG9vc2UtbWVkaWEtZGV2aWNlIiwga2l0TmV3KHJlcXVlc3QuZ2V0KCkp
LCBraXROZXcoYXVkaW9Tb3VyY2UpLCBraXROZXcodmlkZW9Tb3VyY2UpKTsKIH0KIAogdm9pZCBV
c2VyTWVkaWFDbGllbnRHdGs6OmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoVXNlck1lZGlhUmVxdWVz
dCogcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L1VzZXJNZWRpYUNsaWVudEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
VXNlck1lZGlhQ2xpZW50R3RrLmgKaW5kZXggMDM2MmE0YTNkMDIzMzE1MWNhMDE1MzE0M2Q0NTZk
Y2MxYTRhNjAzMy4uOTU3MDBlZmIzNTM2OTM4ZWJkY2QzNjQ2N2QzZGVhMjNkYTM3M2I2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50
R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVXNlck1lZGlhQ2xp
ZW50R3RrLmgKQEAgLTIyLDE4ICsyMiwyOSBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
IAorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhQ2xp
ZW50LmgiCiAKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3IFdlYktpdFdlYlZpZXc7CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFVzZXJNZWRpYVJlcXVlc3Q7Cit9CisKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBVc2VyTWVkaWFDbGllbnRHdGsgOiBwdWJsaWMgV2ViQ29y
ZTo6VXNlck1lZGlhQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBVc2VyTWVkaWFDbGllbnRHdGsoKTsK
KyAgICBVc2VyTWVkaWFDbGllbnRHdGsoV2ViS2l0V2ViVmlldyopOwogICAgIHZpcnR1YWwgflVz
ZXJNZWRpYUNsaWVudEd0aygpOwogCiAgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsK
KwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0VXNlck1lZGlhKFdURjo6UGFzc1JlZlB0cjxXZWJD
b3JlOjpVc2VyTWVkaWFSZXF1ZXN0PiwgY29uc3QgV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VW
ZWN0b3ImLCBjb25zdCBXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYpOwogICAgIHZp
cnR1YWwgdm9pZCBjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVl
c3QqKTsKKworcHJpdmF0ZToKKyAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZpZXc7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3Mv
d2Via2l0Z3RrLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3Mvd2Via2l0Z3RrLWRv
Y3Muc2dtbAppbmRleCA3MjEwNjUyMmZiNWJhYmE4YjAwOWZlMzU0NGI5YWRmMjNmY2JiMTk4Li41
YTNhYmIzZjY3MThlNTE1YWNkMzMxMDllMTRmZTlmZTlhMDRjMzkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9kb2NzL3dlYmtpdGd0ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktp
dC9ndGsvZG9jcy93ZWJraXRndGstZG9jcy5zZ21sCkBAIC0zMyw2ICszMyw4IEBACiAgICAgPHhp
OmluY2x1ZGUgaHJlZj0ieG1sL3dlYmtpdGRvd25sb2FkLnhtbCIvPgogICAgIDx4aTppbmNsdWRl
IGhyZWY9InhtbC93ZWJraXR2aWV3cG9ydGF0dHJpYnV0ZXMueG1sIi8+CiAgICAgPHhpOmluY2x1
ZGUgaHJlZj0ieG1sL3dlYmtpdGhpdHRlc3RyZXN1bHQueG1sIi8+CisgICAgPHhpOmluY2x1ZGUg
aHJlZj0ieG1sL3dlYmtpdHdlYnVzZXJtZWRpYWxpc3QueG1sIi8+CisgICAgPHhpOmluY2x1ZGUg
aHJlZj0ieG1sL3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QueG1sIi8+CiAgICAgPHhpOmluY2x1
ZGUgaHJlZj0ieG1sL3dlYmtpdHdlYnBsdWdpbi54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVm
PSJ4bWwvd2Via2l0d2VicGx1Z2luZGF0YWJhc2UueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJl
Zj0ieG1sL3dlYmtpdHNvdXBhdXRoZGlhbG9nLnhtbCIvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ndGsvZG9jcy93ZWJraXRndGstc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9ndGsv
ZG9jcy93ZWJraXRndGstc2VjdGlvbnMudHh0CmluZGV4IGI3MDdiZjgzZDcxMWEwYzFlMTc3YWI2
NGYxNDc2ZjRjMWUwZmJlN2EuLmNlMTE5Yjg4Y2E0Mzg2Yzk2ODZmODc0ZmY0YzZhM2VlNGFhNzE2
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3Mvd2Via2l0Z3RrLXNlY3Rpb25z
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzL3dlYmtpdGd0ay1zZWN0aW9ucy50eHQK
QEAgLTY4Niw2ICs2ODYsNDkgQEAgV2ViS2l0SWNvbkRhdGFiYXNlUHJpdmF0ZQogPC9TRUNUSU9O
PgogCiA8U0VDVElPTj4KKzxGSUxFPndlYmtpdHdlYnVzZXJtZWRpYWxpc3Q8L0ZJTEU+Cis8VElU
TEU+V2ViS2l0V2ViVXNlck1lZGlhTGlzdDwvVElUTEU+CitXZWJLaXRXZWJVc2VyTWVkaWFMaXN0
Cit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfbGVuZ3RoCit3ZWJraXRfd2ViX3VzZXJf
bWVkaWFfbGlzdF9nZXRfaXRlbV9uYW1lCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9pc19p
dGVtX3NlbGVjdGVkCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9zZWxlY3RfaXRlbQorPFNV
QlNFQ1RJT04gU3RhbmRhcmQ+CitXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfTElTVAorV0VCS0lU
X0lTX1dFQl9VU0VSX01FRElBX0xJU1RfQ0xBU1MKK1dFQktJVF9XRUJfVVNFUl9NRURJQV9MSVNU
CitXRUJLSVRfV0VCX1VTRVJfTUVESUFfTElTVF9DTEFTUworV0VCS0lUX1dFQl9VU0VSX01FRElB
X0xJU1RfR0VUX0NMQVNTCitXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNUCis8U1VCU0VD
VElPTiBQcml2YXRlPgorV2ViS2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGUKK1dlYktpdFdlYlVz
ZXJNZWRpYUxpc3RDbGFzcword2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X3R5cGUKKzwv
U0VDVElPTj4KKworPFNFQ1RJT04+Cis8RklMRT53ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0PC9G
SUxFPgorPFRJVExFPldlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3Q8L1RJVExFPgorV2ViS2l0V2Vi
VXNlck1lZGlhUmVxdWVzdAord2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZmFpbAord2Vi
a2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfc3VjY2VlZAord2Via2l0X3dlYl91c2VyX21lZGlh
X3JlcXVlc3Rfd2FudHNfYXVkaW8KK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRz
X3ZpZGVvCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9nZXRfc2VjdXJpdHlfb3JpZ2lu
Cis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dFQktJVF9JU19XRUJfVVNFUl9NRURJQV9SRVFVRVNU
CitXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfUkVRVUVTVF9DTEFTUworV0VCS0lUX1RZUEVfV0VC
X1VTRVJfTUVESUFfUkVRVUVTVAorV0VCS0lUX1dFQl9VU0VSX01FRElBX1JFUVVFU1QKK1dFQktJ
VF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUX0NMQVNTCitXRUJLSVRfV0VCX1VTRVJfTUVESUFfUkVR
VUVTVF9HRVRfQ0xBU1MKKzxTVUJTRUNUSU9OIFByaXZhdGU+CitXZWJLaXRXZWJVc2VyTWVkaWFS
ZXF1ZXN0Q2xhc3MKK1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRlCit3ZWJraXRfd2Vi
X3VzZXJfbWVkaWFfcmVxdWVzdF9nZXRfdHlwZQorPC9TRUNUSU9OPgorCis8U0VDVElPTj4KIDxG
SUxFPndlYmtpdGZhdmljb25kYXRhYmFzZTwvRklMRT4KIDxUSVRMRT5XZWJLaXRGYXZpY29uRGF0
YWJhc2U8L1RJVExFPgogV2ViS2l0RmF2aWNvbkRhdGFiYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmggYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0LmgKaW5kZXggYWE3YjkzZGJkYThjMjZkZTIxZTk4MmQzOWM2MTY1ZmI4YzJmNWU3Ny4uYmYx
NmEyNWU5MmVkNTVmOWIyMDdiNGE3MmJjNjNiYjg5NjlmMWViMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXQuaApAQCAtNTEsNiArNTEsOCBAQAogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJw
b2xpY3lkZWNpc2lvbi5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJyZXNvdXJjZS5oPgog
I2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5oPgorI2luY2x1ZGUgPHdlYmtpdC93
ZWJraXR3ZWJ1c2VybWVkaWFsaXN0Lmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnVzZXJt
ZWRpYXJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vidmlldy5oPgogI2luY2x1
ZGUgPHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTcyZGQ0YzY1MDY4MzIwYzgwZGZhOGE0MGE5MjE5YmQ4YTRkZDRhNAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmNwcApA
QCAtMCwwICsxLDE2NyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgQ29sbGFib3JhIEx0
ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0
ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0Lmgi
CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3By
aXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworCisvKioKKyAqIFNFQ1RJT046d2Via2l0d2Vi
dXNlcm1lZGlhbGlzdAorICogQHNob3J0X2Rlc2NyaXB0aW9uOiBVc2VyTWVkaWEgTGlzdAorICog
QFRpdGxlOiBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0CisgKgorICogI1dlYktpdFdlYlVzZXJNZWRp
YUxpc3QgY29udGFpbnMgYSBsaXN0IG9mCisgKiBhdWRpbyBvciB2aWRlbyBzb3VyY2VzIGZyb20g
YSBXZWJVc2VyTWVkaWFSZXF1ZXN0CisgKgorICogU2luY2U6IDIuMAorICovCisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CisKK3N0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGUg
eworICAgIFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yIHNvdXJjZXM7CisgICAgVmVj
dG9yPGJvb2w+IHNvdXJjZVNlbGVjdGlvbnM7Cit9OworCitHX0RFRklORV9UWVBFKFdlYktpdFdl
YlVzZXJNZWRpYUxpc3QsIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0LCBHX1RZUEVfT0JKRUNU
KQorCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJVc2VyTWVkaWFMaXN0RmluYWxpemUoR09iamVjdCog
b2JqZWN0KQoreworICAgIFdFQktJVF9XRUJfVVNFUl9NRURJQV9MSVNUKG9iamVjdCktPnByaXYt
Pn5XZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZSgpOworICAgIEdfT0JKRUNUX0NMQVNTKHdl
YmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7
Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2NsYXNzX2luaXQo
V2ViS2l0V2ViVXNlck1lZGlhTGlzdENsYXNzKiBsaXN0Q2xhc3MpCit7CisgICAgR09iamVjdENs
YXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhsaXN0Q2xhc3MpOworICAgIGdvYmpl
Y3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRXZWJVc2VyTWVkaWFMaXN0RmluYWxpemU7CisKKyAg
ICB3ZWJraXRJbml0KCk7CisKKyAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUobGlzdENsYXNz
LCBzaXplb2YoV2ViS2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGUpKTsKK30KKworc3RhdGljIHZv
aWQgd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfaW5pdChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0
KiBsaXN0KQoreworICAgIFdlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlKiBwcml2ID0gR19U
WVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKGxpc3QsIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElB
X0xJU1QsIFdlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlKTsKKyAgICBsaXN0LT5wcml2ID0g
cHJpdjsKKworICAgIC8vIHBsYWNlbWVudCBuZXcgc3ludGF4CisgICAgbmV3IChwcml2KSBXZWJL
aXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZSgpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdXNl
cl9tZWRpYV9saXN0X2dldF9sZW5ndGg6CisgKiBAbGlzdDogdGhlIFdlYktpdFdlYlVzZXJNZWRp
YUxpc3QgaXRzZWxmCisgKgorICogUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgZWxlbWVudHMgbGlz
dC4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IG51bWJlciBvZiBlbGVtZW50cy4KKyAqCisgKiBTaW5j
ZTogMi4wCisgKi8KK2d1aW50IHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9sZW5ndGgo
V2ViS2l0V2ViVXNlck1lZGlhTGlzdCogbGlzdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfTElTVChsaXN0KSwgMCk7CisKKyAgICByZXR1cm4g
Y29yZShsaXN0KS5zaXplKCk7Cit9CisKKworLyoqCisgKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFf
bGlzdF9nZXRfaXRlbV9uYW1lOgorICogQGxpc3Q6IHRoZSAjV2ViS2l0V2ViVXNlck1lZGlhTGlz
dCBpdHNlbGYKKyAqIEBpbmRleDogdGhlIHdhbnRlZCBlbGVtZW50IGluZGV4LgorICoKKyAqIFJl
dHVybnMgdGhlIGRldmljZSBuYW1lIG9mIHRoZSBlbGVtZW50LgorICoKKyAqIFJldHVybiB2YWx1
ZTogdGhlIGRldmljZSBpZCBvZiB0aGUgQGluZGV4IGdpdmVuIGVsZW1lbnQuCisgKgorICogU2lu
Y2U6IDIuMAorICovCitjb25zdCBnY2hhciogd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0
X2l0ZW1fbmFtZShXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBsaXN0LCBndWludCBpbmRleCkKK3sK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfTElTVChs
aXN0KSwgMCk7CisKKyAgICBXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgc291cmNl
cyA9IGNvcmUobGlzdCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoaW5kZXggPCBzb3VyY2Vz
LnNpemUoKSwgMCk7CisKKyAgICByZXR1cm4gZ19zdHJkdXAoc291cmNlc1tpbmRleF0tPm5hbWUo
KS51dGY4KCkuZGF0YSgpKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlz
dF9pc19pdGVtX3NlbGVjdGVkOgorICogQGxpc3Q6IHRoZSAjV2ViS2l0V2ViVXNlck1lZGlhTGlz
dCBpdHNlbGYKKyAqIEBpbmRleDogdGhlIHdhbnRlZCBlbGVtZW50IGluZGV4LgorICoKKyAqIElu
ZGljYXRlIGlmIGEgZGV2aWNlIGlzIG1hcmtlZCBhcyBzZWxlY3RlZC4KKyAqCisgKiBSZXR1cm4g
dmFsdWU6IFRydWUgaWYgdGhlIGRldmljZSByZXByZXNlbnRlZCBieSBAaW5kZXggaXMgbWFya2Vk
IGFzIHNlbGVjdGVkLgorICoKKyAqIFNpbmNlOiAyLjAKKyAqLworZ2Jvb2xlYW4gd2Via2l0X3dl
Yl91c2VyX21lZGlhX2xpc3RfaXNfaXRlbV9zZWxlY3RlZChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0
KiBsaXN0LCBndWludCBpbmRleCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfV0VCX1VTRVJfTUVESUFfTElTVChsaXN0KSwgRkFMU0UpOworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKGluZGV4IDwgY29yZShsaXN0KS5zaXplKCksIEZBTFNFKTsKKworICAgIHJldHVybiBs
aXN0LT5wcml2LT5zb3VyY2VTZWxlY3Rpb25zW2luZGV4XTsKK30KKworLyoqCisgKiB3ZWJraXRf
d2ViX3VzZXJfbWVkaWFfbGlzdF9zZWxlY3RfaXRlbToKKyAqIEBsaXN0OiB0aGUgI1dlYktpdFdl
YlVzZXJNZWRpYUxpc3QgaXRzZWxmCisgKiBAaW5kZXg6IHRoZSB3YW50ZWQgZWxlbWVudCBpbmRl
eC4KKyAqCisgKiBNYXJrIGEgZGV2aWNlIGFzIHNlbGVjdGVlZC4KKyAqCisgKiBTaW5jZTogMi4w
CisgKi8KK3ZvaWQgd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3Rfc2VsZWN0X2l0ZW0oV2ViS2l0
V2ViVXNlck1lZGlhTGlzdCogbGlzdCwgZ3VpbnQgaW5kZXgpCit7CisgICAgZ19yZXR1cm5faWZf
ZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfTElTVChsaXN0KSk7CisgICAgZ19yZXR1cm5f
aWZfZmFpbChpbmRleCA8IGNvcmUobGlzdCkuc2l6ZSgpKTsKKworICAgIGxpc3QtPnByaXYtPnNv
dXJjZVNlbGVjdGlvbnNbaW5kZXhdID0gVFJVRTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K1dlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBjb3JlKFdlYktpdFdlYlVzZXJNZWRp
YUxpc3QqIGxpc3QpCit7CisgICAgcmV0dXJuIGxpc3QtPnByaXYtPnNvdXJjZXM7Cit9CisKK1dl
YktpdFdlYlVzZXJNZWRpYUxpc3QqIGtpdE5ldyhjb25zdCBXZWJDb3JlOjpNZWRpYVN0cmVhbVNv
dXJjZVZlY3RvciYgc291cmNlcykKK3sKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiB3ZWJM
aXN0ID0gV0VCS0lUX1dFQl9VU0VSX01FRElBX0xJU1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBF
X1dFQl9VU0VSX01FRElBX0xJU1QsIE5VTEwpKTsKKyAgICB3ZWJMaXN0LT5wcml2LT5zb3VyY2Vz
ID0gc291cmNlczsKKyAgICB3ZWJMaXN0LT5wcml2LT5zb3VyY2VTZWxlY3Rpb25zLmZpbGwoRkFM
U0UsIHNvdXJjZXMuc2l6ZSgpKTsKKworICAgIHJldHVybiB3ZWJMaXN0OworfQorCit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3QuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGZhMjhlOTg0M2Y0NTll
YmJkMjE3NzNkZDBlODcwNmZlYzkxN2FmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmgKQEAgLTAsMCArMSw2OCBAQAor
LyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0
d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKworI2lmbmRlZiB3ZWJraXR3
ZWJ1c2VybWVkaWFsaXN0X2gKKyNkZWZpbmUgd2Via2l0d2VidXNlcm1lZGlhbGlzdF9oCisKKyNp
bmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPGdsaWIuaD4KKworI2luY2x1ZGUgPHdl
YmtpdC93ZWJraXRkZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRf
VFlQRV9XRUJfVVNFUl9NRURJQV9MSVNUICAgICAgICAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9t
ZWRpYV9saXN0X2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfVVNFUl9NRURJQV9MSVNU
KG9iaikgICAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdF
QktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1QsIFdlYktpdFdlYlVzZXJNZWRpYUxpc3QpKQor
I2RlZmluZSBXRUJLSVRfV0VCX1VTRVJfTUVESUFfTElTVF9DTEFTUyhrbGFzcykgICAgICAgKEdf
VFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJ
QV9MSVNULCBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNf
V0VCX1VTRVJfTUVESUFfTElTVChvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5D
RV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNUKSkKKyNkZWZpbmUg
V0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX0xJU1RfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hF
Q0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfTElTVCkp
CisjZGVmaW5lIFdFQktJVF9XRUJfVVNFUl9NRURJQV9MSVNUX0dFVF9DTEFTUyhvYmopICAgICAo
R19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01F
RElBX0xJU1QsIFdlYktpdFdlYlVzZXJNZWRpYUxpc3RDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0
IF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0IFdlYktpdFdlYlVzZXJNZWRpYUxpc3Q7Cit0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhTGlzdENsYXNzIFdlYktpdFdlYlVzZXJNZWRpYUxp
c3RDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZSBX
ZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVk
aWFMaXN0IHsKKyAgICBHT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKKyAgICBXZWJLaXRXZWJVc2Vy
TWVkaWFMaXN0UHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlh
TGlzdENsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworV0VCS0lU
X0FQSSBHVHlwZQord2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X3R5cGUgKHZvaWQpIEdf
R05VQ19DT05TVDsKKworV0VCS0lUX0FQSSBndWludAord2Via2l0X3dlYl91c2VyX21lZGlhX2xp
c3RfZ2V0X2xlbmd0aCAgICAgICAgKFdlYktpdFdlYlVzZXJNZWRpYUxpc3QgKmxpc3QpOworCitX
RUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9p
dGVtX25hbWUgICAgIChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0ICpsaXN0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IGluZGV4KTsKK1dFQktJVF9B
UEkgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2lzX2l0ZW1fc2VsZWN0ZWQg
IChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0ICpsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGd1aW50IGluZGV4KTsKK1dFQktJVF9BUEkgdm9pZAord2Vi
a2l0X3dlYl91c2VyX21lZGlhX2xpc3Rfc2VsZWN0X2l0ZW0gICAgICAgKFdlYktpdFdlYlVzZXJN
ZWRpYUxpc3QgKmxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ3VpbnQgaW5kZXgpOworCitHX0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3Rwcml2YXRl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDc4YTkxZjYwZWVhYThkM2EzMDA4NDE4NzY5M2NkMzM3ZDVjMjdlYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2Vy
bWVkaWFsaXN0cHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChD
KSAyMDEyIENvbGxhYm9yYSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjEx
MC0xMzAxICBVU0EKKyAqLworCisKKyNpZm5kZWYgd2Via2l0d2VidXNlcm1lZGlhbGlzdHByaXZh
dGVfaAorI2RlZmluZSB3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZV9oCisKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNs
dWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitX
ZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgY29yZShXZWJLaXRXZWJVc2VyTWVkaWFM
aXN0Kik7CitXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBraXROZXcoY29uc3QgV2ViQ29yZTo6TWVk
aWFTdHJlYW1Tb3VyY2VWZWN0b3ImKTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2VuZGlmIC8vIHdlYmtpdHdlYnVzZXJtZWRpYWxpc3Rwcml2YXRlX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45NjZhNzgzYWRjNDA0MDJhNTJlZDkyYWI4Y2IxNmJjMDk0MmIzMzFl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVz
ZXJtZWRpYXJlcXVlc3QuY3BwCkBAIC0wLDAgKzEsMTk4IEBACisvKgorICogIENvcHlyaWdodCAo
QykgMjAxMiBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIx
MTAtMTMwMSAgVVNBCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAid2Vi
a2l0d2VidXNlcm1lZGlhcmVxdWVzdC5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKwor
I2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYVJlcXVlc3QuaCIKKyNp
bmNsdWRlICJ3ZWJraXRnbG9iYWxzcHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdHNlY3VyaXR5
b3JpZ2lucHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYWxpc3Rwcml2YXRl
LmgiCisjaW5jbHVkZSAid2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGUuaCIKKyNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKKy8qKgorICogU0VDVElPTjp3ZWJraXR3ZWJ1c2Vy
bWVkaWFyZXF1ZXN0CisgKiBAc2hvcnRfZGVzY3JpcHRpb246IFRoZSBXZWJLaXQncyBVc2VyTWVk
aWEgUmVxdWVzdC4KKyAqIEBUaXRsZTogV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdAorICoKKyAq
IFRoaXMgb2JqZWN0IGNvbnRhaW5zIHRoZSBpbmZvcm1hdGlvbiBvZiBhIG1lZGlhIHJlcXVlc3Qu
CisgKiBJdCBjYW4gYmUgdXNlZCB0byBjaGVjayBpZiB0aGUgcmVxdWVzdCBpcyBhc2tpbmcgZm9y
IGF1ZGlvIGFuZC9vciB2aWRlby4KKyAqCisgKiBTaW5jZTogMi4wCisgKi8KKwordXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKKworc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0
ZSB7CisgICAgUmVmUHRyPFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+IHVzZXJNZWRpYVJlcXVl
c3Q7Cit9OworCitHX0RFRklORV9UWVBFKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QsIHdlYmtp
dF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0LCBHX1RZUEVfT0JKRUNUKQorCitzdGF0aWMgdm9pZCB3
ZWJraXRXZWJVc2VyTWVkaWFSZXF1ZXN0RmluYWxpemUoR09iamVjdCAqb2JqZWN0KQoreworICAg
IFdFQktJVF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUKG9iamVjdCktPnByaXYtPn5XZWJLaXRXZWJV
c2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSgpOworCisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dl
Yl91c2VyX21lZGlhX3JlcXVlc3RfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKK30K
Kworc3RhdGljIHZvaWQgd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfY2xhc3NfaW5pdChX
ZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3MqIHJlcXVlc3RDbGFzcykKK3sKKyAgICBHT2Jq
ZWN0Q2xhc3MqIGdvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOwor
ICAgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gd2Via2l0V2ViVXNlck1lZGlhUmVxdWVzdEZp
bmFsaXplOworCisgICAgd2Via2l0SW5pdCgpOworCisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2
YXRlKHJlcXVlc3RDbGFzcywgc2l6ZW9mKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRl
KSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2luaXQo
V2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBXZWJLaXRXZWJVc2Vy
TWVkaWFSZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShy
ZXF1ZXN0LCBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFVRVNULCBXZWJLaXRXZWJVc2Vy
TWVkaWFSZXF1ZXN0UHJpdmF0ZSk7CisgICAgcmVxdWVzdC0+cHJpdiA9IHByaXY7CisKKyAgICBu
ZXcgKHByaXYpIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRlKCk7Cit9CisKKy8qKgor
ICogd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNfYXVkaW86CisgKiBAcmVxdWVz
dDogdGhlICNXZWJLaXRVc2VyTWVkaWFSZXF1ZXN0IGl0c2VsZi4KKyAqCisgKiBJbmRpY2F0ZXMg
dGhlIGNvbnRlbnQgb2YgYW4gVXNlck1lZGlhUmVxdWVzdC4KKyAqCisgKiBSZXR1cm4gdmFsdWU6
ICVUUlVFIGlmIHRoZSByZXF1ZXN0IGNvbnRhaW5zIGFuIGF1ZGlvIHJlcXVlc3Qgb3IgJUZBTFNF
IGlmIG90aGVyd2lzZS4KKyAqCisgKiBTaW5jZTogMi4wCisgKi8KK2dib29sZWFuIHdlYmtpdF93
ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRzX2F1ZGlvKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVl
c3QqIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9V
U0VSX01FRElBX1JFUVVFU1QocmVxdWVzdCksIEZBTFNFKTsKKworICAgIHJldHVybiBjb3JlKHJl
cXVlc3QpLT5hdWRpbygpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1
ZXN0X3dhbnRzX3ZpZGVvOgorICogQHJlcXVlc3Q6IHRoZSAjV2ViS2l0VXNlck1lZGlhUmVxdWVz
dCBpdHNlbGYuCisgKgorICogSW5kaWNhdGVzIHRoZSBjb250ZW50IG9mIGFuIFVzZXJNZWRpYVJl
cXVlc3QuCisgKgorICogUmV0dXJuIHZhbHVlOiAlVFJVRSBpZiB0aGUgcmVxdWVzdCBjb250YWlu
cyBhIHZpZGVvIHJlcXVlc3Qgb3IgJUZBTFNFIGlmIG90aGVyd2lzZS4KKyAqCisgKiBTaW5jZTog
Mi4wCisgKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRzX3Zp
ZGVvKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX1JFUVVFU1QocmVxdWVzdCksIEZB
TFNFKTsKKworICAgIHJldHVybiBjb3JlKHJlcXVlc3QpLT52aWRlbygpOworfQorCisvKioKKyAq
IHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2dldF9zZWN1cml0eV9vcmlnaW46CisgKiBA
cmVxdWVzdDogdGhlICNXZWJLaXRVc2VyTWVkaWFSZXF1ZXN0IGl0c2VsZi4KKyAqCisgKiBSZXR1
cm5zIHRoZSBzZWN1cml0eSBvcmlnaW4gb2YgdGhlIE1lZGlhIFJlcXVlc3QuCisgKgorICogUmV0
dXJuIHZhbHVlOiAodHJhbnNmZXIgbm9uZSk6IHRoZSBzZWN1cml0eSBvcmlnaW4gb2YgdGhlIG1l
ZGlhIHJlcXVlc3QuCisgKgorICogU2luY2U6IDIuMAorICovCitXZWJLaXRTZWN1cml0eU9yaWdp
biogd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZ2V0X3NlY3VyaXR5X29yaWdpbihXZWJL
aXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9SRVFVRVNUKHJlcXVlc3QpLCAwKTsKKworICAg
IHJldHVybiBraXQoY29yZShyZXF1ZXN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1
cml0eU9yaWdpbigpKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVz
dF9zdWNjZWVkOgorICogQHdlYlJlcXVlc3Q6IGEgI1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QK
KyAqIEBhdWRpb01lZGlhTGlzdDogYSAjV2ViS2l0V2ViVXNlck1lZGlhTGlzdCBjb250YWluaW5n
IGF1ZGlvIGRldmljZXMKKyAqIEB2aWRlb01lZGlhTGlzdDogYSAjV2ViS2l0V2ViVXNlck1lZGlh
TGlzdCBjb250YWluaW5nIHZpZGVvIGRldmljZXMKKyAqCisgKiBUaGlzIG1ldGhvZCBzaG91bGQg
YmUgY2FsbGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBhZnRlciB0aGUgdXNlciBzZWxlY3RzCisgKiBh
IG1lZGlhIGRldmljZSBhbmQgYWNjZXB0cyBhbiBtZWRpYSByZXF1ZXN0CisgKgorICogU2luY2U6
IDIuMAorICoqLwordm9pZCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9zdWNjZWVkKFdl
YktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIHdlYlJlcXVlc3QsIFdlYktpdFdlYlVzZXJNZWRpYUxp
c3QqIGF1ZGlvTWVkaWFMaXN0LCBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiB2aWRlb01lZGlhTGlz
dCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9SRVFV
RVNUKHdlYlJlcXVlc3QpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVVNF
Ul9NRURJQV9MSVNUKGF1ZGlvTWVkaWFMaXN0KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJL
SVRfSVNfV0VCX1VTRVJfTUVESUFfTElTVCh2aWRlb01lZGlhTGlzdCkpOworCisgICAgV2ViQ29y
ZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcyA9IGNvcmUoYXVkaW9NZWRp
YUxpc3QpOworICAgIFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2aWRlb1NvdXJj
ZXMgPSBjb3JlKHZpZGVvTWVkaWFMaXN0KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSBhdWRpb1Nv
dXJjZXMuc2l6ZSgpIC0gMTsgaSAhPSAoc2l6ZV90KSAtMTsgLS1pKQorICAgICAgICBpZiAoIXdl
YmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2lzX2l0ZW1fc2VsZWN0ZWQoYXVkaW9NZWRpYUxpc3Qs
IGkpKQorICAgICAgICAgICAgYXVkaW9Tb3VyY2VzLnJlbW92ZShpKTsKKworICAgIGZvciAoc2l6
ZV90IGkgPSB2aWRlb1NvdXJjZXMuc2l6ZSgpIC0gMTsgaSAhPSAoc2l6ZV90KSAtMTsgLS1pKQor
ICAgICAgICBpZiAoIXdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2lzX2l0ZW1fc2VsZWN0ZWQo
dmlkZW9NZWRpYUxpc3QsIGkpKQorICAgICAgICAgICAgdmlkZW9Tb3VyY2VzLnJlbW92ZShpKTsK
KworICAgIGNvcmUod2ViUmVxdWVzdCktPnN1Y2NlZWQoYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJj
ZXMpOworCit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X3JlamVjdF91c2VyX21lZGlhX3Jl
cXVlc3Q6CisgKiBAd2ViUmVxdWVzdDogYSAjV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdAorICoK
KyAqIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQgYnkgdGhlIGFwcGxpY2F0aW9uIHdoZW4g
dGhlIHVzZXIgcmVqZWN0ZWQgYSB1c2VyTWVkaWEgcmVxdWVzdC4KKyAqCisgKiBTaW5jZTogMi4w
CisgKiovCit2b2lkIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2ZhaWwoV2ViS2l0V2Vi
VXNlck1lZGlhUmVxdWVzdCogd2ViUmVxdWVzdCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdF
QktJVF9JU19XRUJfVVNFUl9NRURJQV9SRVFVRVNUKHdlYlJlcXVlc3QpKTsKKyAgICBjb3JlKHdl
YlJlcXVlc3QpLT5mYWlsKCk7Cit9CisKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNvcmU6
OlVzZXJNZWRpYVJlcXVlc3QqIGNvcmUoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCogcmVxdWVz
dCkKK3sKKyAgICBBU1NFUlQoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX1JFUVVFU1QocmVxdWVz
dCkpOworCisgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPnVzZXJNZWRpYVJlcXVlc3QuZ2V0KCk7
Cit9CisKK1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIGtpdE5ldyhXZWJDb3JlOjpVc2VyTWVk
aWFSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIEFTU0VSVChyZXF1ZXN0KTsKKworICAgIFdlYktp
dFdlYlVzZXJNZWRpYVJlcXVlc3QqIHdlYlJlcXVlc3QgPSBXRUJLSVRfV0VCX1VTRVJfTUVESUFf
UkVRVUVTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCwg
TlVMTCkpOworICAgIHdlYlJlcXVlc3QtPnByaXYtPnVzZXJNZWRpYVJlcXVlc3QgPSByZXF1ZXN0
OworCisgICAgcmV0dXJuIHdlYlJlcXVlc3Q7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShN
RURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2VidXNlcm1lZGlhcmVxdWVzdC5oIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnVzZXJtZWRpYXJlcXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmIxZTBmN2M1NDE0N2I1MGJhMDdmMWRi
ZTY4YjQ1YjU2ZWRkOWE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuaApAQCAtMCwwICsxLDczIEBACisvKgorICog
IENvcHlyaWdodCAoQykgMjAxMiBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisg
KiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9z
dG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworCisjaWZuZGVmIHdlYmtpdHdlYnVzZXJt
ZWRpYXJlcXVlc3RfaAorI2RlZmluZSB3ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0X2gKKworI2lu
Y2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYWxpc3QuaCIKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0
Lmg+CisjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZpbmVzLmg+
CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9S
RVFVRVNUICAgICAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2dldF90eXBl
KCkpCisjZGVmaW5lIFdFQktJVF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUKG9iaikgICAgICAgICAg
ICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9VU0VS
X01FRElBX1JFUVVFU1QsIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QpKQorI2RlZmluZSBXRUJL
SVRfV0VCX1VTRVJfTUVESUFfUkVRVUVTVF9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19D
TEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFVRVNULCBX
ZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1VT
RVJfTUVESUFfUkVRVUVTVChvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBF
KChvYmopLCBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFVRVNUKSkKKyNkZWZpbmUgV0VC
S0lUX0lTX1dFQl9VU0VSX01FRElBX1JFUVVFU1RfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tf
Q0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCkp
CisjZGVmaW5lIFdFQktJVF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUX0dFVF9DTEFTUyhvYmopICAo
R19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01F
RElBX1JFUVVFU1QsIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RDbGFzcykpCisKK3R5cGVkZWYg
c3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0IFdlYktpdFdlYlVzZXJNZWRpYVJlcXVl
c3Q7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdENsYXNzIFdlYktp
dFdlYlVzZXJNZWRpYVJlcXVlc3RDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJVc2Vy
TWVkaWFSZXF1ZXN0UHJpdmF0ZSBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZTsKKwor
c3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0IHsKKyAgICBHT2JqZWN0IHBhcmVudF9p
bnN0YW5jZTsKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSAqcHJpdjsKK307
CisKK3N0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdENsYXNzIHsKKyAgICBHT2JqZWN0
Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dlYl91
c2VyX21lZGlhX3JlcXVlc3RfZ2V0X3R5cGUgKHZvaWQpIEdfR05VQ19DT05TVDsKKworV0VCS0lU
X0FQSSBnYm9vbGVhbgord2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNfYXVkaW8g
ICAgICAgICAgICAgIChXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0ICpyZXF1ZXN0KTsKKworV0VC
S0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNfdmlk
ZW8gICAgICAgICAgICAgIChXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0ICpyZXF1ZXN0KTsKKwor
V0VCS0lUX0FQSSBXZWJLaXRTZWN1cml0eU9yaWdpbiAqCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFf
cmVxdWVzdF9nZXRfc2VjdXJpdHlfb3JpZ2luICAgICAgKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVl
c3QgKnJlcXVlc3QpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9y
ZXF1ZXN0X2ZhaWwgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVz
dCAqcmVxdWVzdCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl91c2VyX21lZGlhX3Jl
cXVlc3Rfc3VjY2VlZCAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0
ICp3ZWJSZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBhdWRpb01lZGlhTGlzdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Vi
S2l0V2ViVXNlck1lZGlhTGlzdCogdmlkZW9NZWRpYUxpc3QpOworCitHX0VORF9ERUNMUworCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2Vy
bWVkaWFyZXF1ZXN0cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDE1NjRkN2Q2NjdhOWUxZGJi
Nzc0MWU3MjA4MDI4NGQyYzlmODVhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZS5oCkBAIC0wLDAgKzEs
NDAgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIENvbGxhYm9yYSBMdGQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog
IExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy
ZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisKKyNpZm5kZWYg
d2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGVfaAorI2RlZmluZSB3ZWJraXR3ZWJ1c2Vy
bWVkaWFyZXF1ZXN0cHJpdmF0ZV9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5j
bHVkZSAid2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CitzdHJ1Y3QgVXNlck1lZGlhUmVxdWVzdDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dl
YkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqIGNvcmUoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCop
OworV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCoga2l0TmV3KFdlYkNvcmU6OlVzZXJNZWRpYVJl
cXVlc3QqKTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlm
IC8vIHdlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCA1NTUxNzFhYTFjYjZkZTMzM2EwY2Y2M2Ni
M2FhMzk0ZjM5NGEwNDBkLi5hZDlmNDQwMTQwYTNhZWNkNTE1MTgzMTg2YjE5ZjQ0MDMxOTYxYzhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC02Myw2
ICs2Myw3IEBACiAjaW5jbHVkZSAiR2VvbG9jYXRpb25DbGllbnRHdGsuaCIKICNpbmNsdWRlICJH
ZW9sb2NhdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNp
bmNsdWRlICJHdGtNZWRpYUNob29zZXJEaWFsb2cuaCIKICNpbmNsdWRlICJHdGtVdGlsaXRpZXMu
aCIKICNpbmNsdWRlICJHdGtWZXJzaW9uaW5nLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCkBA
IC04Myw2ICs4NCw3IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2lu
Y2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJV
c2VyTWVkaWFDbGllbnRHdGsuaCIKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NRG9jdW1lbnRQ
cml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0ZG93bmxvYWQuaCIKICNpbmNsdWRlICJ3ZWJraXRk
b3dubG9hZHByaXZhdGUuaCIKQEAgLTEwNyw2ICsxMDksOCBAQAogI2luY2x1ZGUgIndlYmtpdHdl
YnJlc291cmNlLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vic2V0dGluZ3Nwcml2YXRlLmgiCiAjaW5j
bHVkZSAid2Via2l0d2VicGx1Z2luZGF0YWJhc2Vwcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0
d2VidXNlcm1lZGlhbGlzdHByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFy
ZXF1ZXN0cHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmgiCiAj
aW5jbHVkZSAid2Via2l0d2Vidmlld3ByaXZhdGUuaCIKICNpbmNsdWRlIDxnZGsvZ2Rra2V5c3lt
cy5oPgpAQCAtMTE5LDYgKzEyMyw3IEBACiAjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25DbGll
bnRHdGsuaCIKICNlbmRpZgogCisKIC8qKgogICogU0VDVElPTjp3ZWJraXR3ZWJ2aWV3CiAgKiBA
c2hvcnRfZGVzY3JpcHRpb246IFRoZSBjZW50cmFsIGNsYXNzIG9mIHRoZSBXZWJLaXRHVEsrIEFQ
SQpAQCAtMjEwLDYgKzIxNSw3IEBAIGVudW0gewogICAgIEVESVRJTkdfRU5ERUQsCiAgICAgVklF
V1BPUlRfQVRUUklCVVRFU19SRUNPTVBVVEVfUkVRVUVTVEVELAogICAgIFZJRVdQT1JUX0FUVFJJ
QlVURVNfQ0hBTkdFRCwKKyAgICBDSE9PU0VfTUVESUFfREVWSUNFLAogICAgIFJFU09VUkNFX1JF
U1BPTlNFX1JFQ0VJVkVELAogICAgIFJFU09VUkNFX0xPQURfRklOSVNIRUQsCiAgICAgUkVTT1VS
Q0VfQ09OVEVOVF9MRU5HVEhfUkVDRUlWRUQsCkBAIC0xMTczLDYgKzExNzksNTAgQEAgc3RhdGlj
IGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19yZWFsX3NjcmlwdF9wcm9tcHQoV2ViS2l0V2ViVmll
dyogd2ViVmlldywgV2ViS2kKICAgICByZXR1cm4gVFJVRTsKIH0KIAordHlwZWRlZiBzdHJ1Y3Qg
eworICAgIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3Q7CisgICAgV2ViS2l0V2Vi
VXNlck1lZGlhTGlzdCogYXVkaW9NZWRpYUxpc3Q7CisgICAgV2ViS2l0V2ViVXNlck1lZGlhTGlz
dCogdmlkZW9NZWRpYUxpc3Q7CisgICAgR3RrTWVkaWFDaG9vc2VyRGlhbG9nKiBkaWFsb2c7Cit9
IFVzZXJNZWRpYVNlbGVjdG9yRGF0YTsKKworc3RhdGljIHZvaWQgbWVkaWFDaG9vc2VyUmVzcG9u
c2VDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwgZ2ludCByZXNwb25zZUlELCBVc2VyTWVkaWFT
ZWxlY3RvckRhdGEgKmRhdGEpCit7CisgICAgaWYgKHJlc3BvbnNlSUQgPT0gR1RLX1JFU1BPTlNF
X09LKSB7CisgICAgICAgIGlmIChkYXRhLT5kaWFsb2ctPnNlbGVjdGVkQXVkaW8oKSAhPSAtMSkK
KyAgICAgICAgICAgIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X3NlbGVjdF9pdGVtKGRhdGEt
PmF1ZGlvTWVkaWFMaXN0LCBkYXRhLT5kaWFsb2ctPnNlbGVjdGVkQXVkaW8oKSk7CisKKyAgICAg
ICAgaWYgKGRhdGEtPmRpYWxvZy0+c2VsZWN0ZWRWaWRlbygpICE9IC0xKQorICAgICAgICAgICAg
d2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3Rfc2VsZWN0X2l0ZW0oZGF0YS0+dmlkZW9NZWRpYUxp
c3QsIGRhdGEtPmRpYWxvZy0+c2VsZWN0ZWRWaWRlbygpKTsKKworICAgICAgICB3ZWJraXRfd2Vi
X3VzZXJfbWVkaWFfcmVxdWVzdF9zdWNjZWVkKGRhdGEtPnJlcXVlc3QsIGRhdGEtPmF1ZGlvTWVk
aWFMaXN0LCBkYXRhLT52aWRlb01lZGlhTGlzdCk7CisgICAgfSBlbHNlCisgICAgICAgIHdlYmtp
dF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2ZhaWwoZGF0YS0+cmVxdWVzdCk7CisKKyAgICBnX29i
amVjdF91bnJlZihkYXRhLT5yZXF1ZXN0KTsKKyAgICBnX29iamVjdF91bnJlZihkYXRhLT5hdWRp
b01lZGlhTGlzdCk7CisgICAgZ19vYmplY3RfdW5yZWYoZGF0YS0+dmlkZW9NZWRpYUxpc3QpOwor
ICAgIGRlbGV0ZSBkYXRhLT5kaWFsb2c7CisgICAgZ19mcmVlKGRhdGEpOworfQorCitzdGF0aWMg
Z2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3JlYWxfY2hvb3NlX21lZGlhX2RldmljZShXZWJLaXRX
ZWJWaWV3ICp3ZWJWaWV3LCBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0LCBXZWJL
aXRXZWJVc2VyTWVkaWFMaXN0KiBhdWRpb01lZGlhTGlzdCwgV2ViS2l0V2ViVXNlck1lZGlhTGlz
dCogdmlkZW9NZWRpYUxpc3QpCit7CisgICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9IGd0a193aWRn
ZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQod2ViVmlldykpOworICAgIEd0a01lZGlhQ2hvb3Nl
ckRpYWxvZyogZGlhbG9nID0gbmV3IEd0a01lZGlhQ2hvb3NlckRpYWxvZyh0b3BsZXZlbCwgY29y
ZShyZXF1ZXN0KSwgY29yZShhdWRpb01lZGlhTGlzdCksIGNvcmUodmlkZW9NZWRpYUxpc3QpKTsK
KyAgICBHdGtXaWRnZXQqIHdpZGdldCA9IGRpYWxvZy0+d2lkZ2V0KCk7CisgICAgVXNlck1lZGlh
U2VsZWN0b3JEYXRhKiBkYXRhID0gZ19uZXcoVXNlck1lZGlhU2VsZWN0b3JEYXRhLCAxKTsKKwor
ICAgIGRhdGEtPnJlcXVlc3QgPSAoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCopIGdfb2JqZWN0
X3JlZihyZXF1ZXN0KTsKKyAgICBkYXRhLT5hdWRpb01lZGlhTGlzdCA9IChXZWJLaXRXZWJVc2Vy
TWVkaWFMaXN0KikgZ19vYmplY3RfcmVmKGF1ZGlvTWVkaWFMaXN0KTsKKyAgICBkYXRhLT52aWRl
b01lZGlhTGlzdCA9IChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KikgZ19vYmplY3RfcmVmKHZpZGVv
TWVkaWFMaXN0KTsKKyAgICBkYXRhLT5kaWFsb2cgPSBkaWFsb2c7CisKKyAgICBnX3NpZ25hbF9j
b25uZWN0KHdpZGdldCwgInJlc3BvbnNlIiwgR19DQUxMQkFDSyhtZWRpYUNob29zZXJSZXNwb25z
ZUNhbGxiYWNrKSwgZGF0YSk7CisgICAgZGlhbG9nLT5zaG93KCk7CisgICAgcmV0dXJuIFRSVUU7
Cit9CisKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jb25zb2xlX21lc3Nh
Z2UoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIqIG1lc3NhZ2UsIHVuc2lnbmVk
IGludCBsaW5lLCBjb25zdCBnY2hhciogc291cmNlSWQpCiB7CiAgICAgZ19tZXNzYWdlKCJjb25z
b2xlIG1lc3NhZ2U6ICVzIEAlZDogJXNcbiIsIHNvdXJjZUlkLCBsaW5lLCBtZXNzYWdlKTsKQEAg
LTI3MjQsNiArMjc3NCwzMiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5p
dChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgICAgICAgIFdFQktJVF9U
WVBFX1ZJRVdQT1JUX0FUVFJJQlVURVMpOwogCiAgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmll
dzo6Y2hvb3NlLW1lZGlhLWRldmljZToKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSBvYmplY3Qgd2hp
Y2ggcmVjZWl2ZWQgdGhlIHNpZ25hbAorICAgICAqIEByZXF1ZXN0OiB0aGUgI1dlYktpdFdlYlVz
ZXJNZWRpYVJxdWVzdCBhdHRyaWJ1dGUgd2hpY2ggZ2VuZXJhdGVkIHRoZSByZXF1ZXN0LgorICAg
ICAqIEBhdWRpb0xpc3Q6IGEgI1dlYktpdFdlYlVzZXJNZWRpYUxpc3QgY29udGFpbmluZyB0aGUg
YXZhaWxhYmxlIGF1ZGlvIG1lZGlhIG9wdGlvbnMuCisgICAgICogQHZpZGVvTGlzdDogYSAjV2Vi
S2l0V2ViVXNlck1lZGlhTGlzdCBjb250YWluaW5nIHRoZSBhdmFpbGFibGUgdmlkZW8gbWVkaWEg
b3B0aW9ucy4KKyAgICAgKgorICAgICAqIFdoZW4gdGhlIGFwcGxpY2F0aW9uIHJlcXVlc3QgdXNl
ck1lZGlhLCB0aGlzIHNpZ25hbCB3aWxsIGJlIGVtaXRlZCB3aXRoIHRoZSByZXF1ZXN0CisgICAg
ICogaW5mb3JtYXRpb24gYW5kIHRoZSBhdmFpbGFibGUgb3B0aW9ucyB0byBiZSBzZWxlY3RlZC4K
KyAgICAgKgorICAgICAqIFRoZW4gdGhlIHVzZXIgaXMgZXhwZWN0ZWQgdG8gY2FsbCBlaXRoZXIg
d2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfc3VjY2VlZCgpIG9yCisgICAgICogd2Via2l0
X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZmFpbCgpIHRvIGFjY2VwdCBvciByZWplY3QgdGhlIHJl
cXVlc3QuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4wLjAKKyAgICAgKi8KKyAgICB3ZWJraXRf
d2ViX3ZpZXdfc2lnbmFsc1tDSE9PU0VfTUVESUFfREVWSUNFXSA9IGdfc2lnbmFsX25ldygiY2hv
b3NlLW1lZGlhLWRldmljZSIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3
Q2xhc3MpLAorICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAgICBHX1NU
UlVDVF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNzLCBjaG9vc2VfbWVkaWFfZGV2aWNlKSwKKyAg
ICAgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9yX3RydWVfaGFuZGxlZCwgMCwKKyAgICAgICAg
ICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX09CSkVDVF9PQkpFQ1RfT0JKRUNULAorICAgICAg
ICAgICAgR19UWVBFX0JPT0xFQU4sIDMsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfVVNF
Ul9NRURJQV9SRVFVRVNULAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFf
TElTVCwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1QpOworCisg
ICAgLyoqCiAgICAgICogV2ViS2l0V2ViVmlldzo6ZW50ZXJpbmctZnVsbHNjcmVlbjoKICAgICAg
KiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVt
aXR0ZWQuCiAgICAgICogQGVsZW1lbnQ6IHRoZSAjV2ViS2l0RE9NSFRNTEVsZW1lbnQgd2hpY2gg
aGFzIHJlcXVlc3RlZCBmdWxsIHNjcmVlbiBkaXNwbGF5LgpAQCAtMjkxMiw2ICsyOTg4LDcgQEAg
c3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNz
KiB3ZWJWaWV3Q2xhc3MpCiAgICAgd2ViVmlld0NsYXNzLT5zY3JpcHRfYWxlcnQgPSB3ZWJraXRf
d2ViX3ZpZXdfcmVhbF9zY3JpcHRfYWxlcnQ7CiAgICAgd2ViVmlld0NsYXNzLT5zY3JpcHRfY29u
ZmlybSA9IHdlYmtpdF93ZWJfdmlld19yZWFsX3NjcmlwdF9jb25maXJtOwogICAgIHdlYlZpZXdD
bGFzcy0+c2NyaXB0X3Byb21wdCA9IHdlYmtpdF93ZWJfdmlld19yZWFsX3NjcmlwdF9wcm9tcHQ7
CisgICAgd2ViVmlld0NsYXNzLT5jaG9vc2VfbWVkaWFfZGV2aWNlID0gd2Via2l0X3dlYl92aWV3
X3JlYWxfY2hvb3NlX21lZGlhX2RldmljZTsKICAgICB3ZWJWaWV3Q2xhc3MtPmNvbnNvbGVfbWVz
c2FnZSA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2NvbnNvbGVfbWVzc2FnZTsKICAgICB3ZWJWaWV3
Q2xhc3MtPnNlbGVjdF9hbGwgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9zZWxlY3RfYWxsOwogICAg
IHdlYlZpZXdDbGFzcy0+Y3V0X2NsaXBib2FyZCA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2N1dF9j
bGlwYm9hcmQ7CkBAIC0zNjI5LDcgKzM3MDYsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3Zp
ZXdfaW5pdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQotICAgIHByaXYtPnVzZXJNZWRpYUNsaWVudCA9IGFkb3B0UHRyKG5ldyBVc2Vy
TWVkaWFDbGllbnRHdGspOworICAgIHByaXYtPnVzZXJNZWRpYUNsaWVudCA9IGFkb3B0UHRyKG5l
dyBVc2VyTWVkaWFDbGllbnRHdGsod2ViVmlldykpOwogICAgIFdlYkNvcmU6OnByb3ZpZGVVc2Vy
TWVkaWFUbyhwcml2LT5jb3JlUGFnZSwgcHJpdi0+dXNlck1lZGlhQ2xpZW50LmdldCgpKTsKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5oIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAppbmRleCA5Yzg0
MjYzYjRiYzA5NDdhNmYwZGY5NWRiMDE3YzUyMzRhMWUyZDllLi43ZDkzNTk0Y2IzOTRmYjExNGI3
Y2JkYzRhNjM3NDVhZTM0MDA4Yjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3LmgKQEAgLTQ0LDYgKzQ0LDkgQEAgR19CRUdJTl9ERUNMUwogI2RlZmluZSBXRUJLSVRf
V0VCX1ZJRVdfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmop
LCAgV0VCS0lUX1RZUEVfV0VCX1ZJRVcsIFdlYktpdFdlYlZpZXdDbGFzcykpCiAKIHR5cGVkZWYg
c3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSBXZWJLaXRXZWJWaWV3UHJpdmF0ZTsKK3R5cGVk
ZWYgc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0IFdlYktpdFdlYlVzZXJNZWRpYVJl
cXVlc3Q7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhTGlzdCBXZWJLaXRXZWJV
c2VyTWVkaWFMaXN0OworCiAKIC8qKgogICogV2ViS2l0TmF2aWdhdGlvblJlc3BvbnNlOgpAQCAt
MTU1LDYgKzE1OCwxMiBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdj
aGFyICAgICAgICAgICptZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAqZGVmYXVsdF92
YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2NoYXIqICAgICAgICAgICAgICAgKnZhbHVlKTsKKworICAgIGdib29sZWFuICAg
ICAgICAgICAgICAgICAgICgqIGNob29zZV9tZWRpYV9kZXZpY2UpICAgIChXZWJLaXRXZWJWaWV3
ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCAqcmVx
dWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV2ViS2l0V2ViVXNlck1lZGlhTGlzdCAgICAqYXVkaW8sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYlVz
ZXJNZWRpYUxpc3QgICAgKnZpZGVvKTsKKwogICAgIGdib29sZWFuICAgICAgICAgICAgICAgICAg
ICgqIGNvbnNvbGVfbWVzc2FnZSkgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViX3Zp
ZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICptZXNzYWdlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAg
ICAgICAgbGluZV9udW1iZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXRt
YXJzaGFsLmxpc3QgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXRtYXJzaGFsLmxpc3QKaW5kZXgg
Yjc0Mjg5MDVjODk4M2NmYzc1ZWM1NDQ3NDEzM2NhMjhmNmQ3OTViNC4uOGRkNGJkZWVhYzcyMmYy
MjQ4NDQ0M2U2MzJjMTNhMWI1NDY0OTYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0bWFyc2hhbC5saXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdG1hcnNoYWwu
bGlzdApAQCAtMiw2ICsyLDcgQEAgQk9PTEVBTjpFTlVNLElOVAogQk9PTEVBTjpJTlQsSU5ULFNU
UklORwogQk9PTEVBTjpPQkpFQ1QKIEJPT0xFQU46T0JKRUNULE9CSkVDVAorQk9PTEVBTjpPQkpF
Q1QsT0JKRUNULCBPQkpFQ1QKIEJPT0xFQU46T0JKRUNULE9CSkVDVCxCT09MRUFOCiBCT09MRUFO
Ok9CSkVDVCxPQkpFQ1QsRU5VTQogQk9PTEVBTjpPQkpFQ1QsT0JKRUNULEVOVU0sQk9PTEVBTgpA
QCAtMTgsNiArMTksNyBAQCBFTlVNOk9CSkVDVCxPQkpFQ1QKIE9CSkVDVDpPQkpFQ1QKIE9CSkVD
VDpTVFJJTkcsU1RSSU5HLFBPSU5URVIKIE9CSkVDVDpWT0lECitWT0lEOk9CSkVDVAogVk9JRDpP
QkpFQ1QsT0JKRUNUCiBWT0lEOk9CSkVDVCxPQkpFQ1QsSU5UCiBWT0lEOk9CSkVDVCxPQkpFQ1Qs
T0JKRUNUCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168591</attachid>
            <date>2012-10-14 14:31:47 -0700</date>
            <delta_ts>2012-10-14 14:45:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94373-20121014183038.patch</filename>
            <type>text/plain</type>
            <size>53305</size>
            <attacher name="Danilo de Paula">danilo.eu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMzkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggM2UxYjZhMzJm
NDQ0YTM1NGQ4Nzk5NzdhOTFiOGQ0MjMzNGQxZTA1NS4uMmFkY2U0YTFkMDY5N2Q4ZmFlM2JhZmY0
ZWE1NzBmYWQ4ODE3ZDAzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAx
Mi0xMC0wOSAgRGFuaWxvIENlc2FyIExlbWVzIGRlIFBhdWxhICA8ZGFuaWxvLmNlc2FyQGNvbGxh
Ym9yYS5jby51az4KKworICAgICAgICBbZ3RrXSBhZGRpbmcgbWV0aG9kcyBhbmQgc2lnbmFscyBm
b3IgdXNlcm1lZGlhIGNvbW11bmljYXRpb24gYmV0d2VlbiB3ZWJraXQgYW5kIGJyb3dzZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MzczCisKKyAg
ICAgICAgV2hlbiB0aGUgdXNlciBtYWtlIGEgZ2V0VXNlck1lZGlhIGNhbGwsIHdlYnZpZXcgd2ls
bCBlbWl0IGEgc2lnaWFsICh1c2VyLW1lZGlhLXJlcXVlc3RlZCkKKyAgICAgICAgdG8gdGhlIGFw
cGxpY2F0aW9uIGNvbnRhaW5pbmcgdGhlbiByZXF1ZXN0IGl0c2VsZiAod2Via2l0d2VidXNlcm1l
ZGlhcmVxdWVzdCkgYW5kIHR3bworICAgICAgICBsaXN0IHdpdGggdGhlIGF2YWlsYWJsZSBhdWRp
byBhbmQgdmlkZW8gZGV2aWNlcyAod2Via2l0d2VidXNlcm1lZGlhbGlzdCkuCisKKyAgICAgICAg
VGhlIGFwcGxpY2F0aW9uIG11c3Qgc2hvdyB0aGUgbGlzdCB0byB0aGUgdXNlciBhbmQgYXNrIHBl
cm1pc3Npb24gdG8gdXNlIG9uZSBvZgorICAgICAgICB0aG9zZSBkZXZpY2VzIChvciByZWplY3Qg
dGhlIHJlcXVlc3QpLgorCisgICAgICAgIEluIGNhc2UgdGhlIHVzZXIgYWNjZXB0cyB0aGUgcmVx
dWVzdCwgdGhlIGFwcGxpY2F0aW9uIG11c3QgbWFyayB0aGUgZGV2aWNlIGFzCisgICAgICAgIHNl
bGVjdGVkICh1c2luZyB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9zZWxlY3RfaXRlbSkgYW5k
IHRoZW4gY2FsbAorICAgICAgICB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9zdWNjZWVk
IHdoaWNoIHdpbGwgaGFuZGxlIHRoZSByZXF1ZXN0IHByb3Blcmx5LgorCisgICAgICAgIE9uIHRo
ZSBjYXNlIHRoZSB1c2VyIHJlamVjdCB0aGUgcmVxdWVzdCwgd2Via2l0X3dlYl91c2VyX21lZGlh
X3JlcXVlc3RfZmFpbCBtdXN0CisgICAgICAgIGJlIGNhbGxlZC4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1VzZXJNZWRpYUNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlVzZXJNZWRpYUNsaWVudEd0azo6VXNlck1lZGlhQ2xpZW50R3RrKToKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhQ2xpZW50R3RrOjpwYWdlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYktp
dDo6VXNlck1lZGlhQ2xpZW50R3RrOjpyZXF1ZXN0VXNlck1lZGlhKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9Vc2VyTWVkaWFDbGllbnRHdGsuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoVXNlck1lZGlhQ2xpZW50R3RrKToKKyAgICAgICAgKiBkb2NzL3dlYmtpdGd0ay1kb2Nz
LnNnbWw6CisgICAgICAgICogZG9jcy93ZWJraXRndGstc2VjdGlvbnMudHh0OgorICAgICAgICAq
IHdlYmtpdC93ZWJraXQuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlz
dC5jcHA6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlKToK
KyAgICAgICAgKHdlYmtpdFdlYlVzZXJNZWRpYUxpc3RGaW5hbGl6ZSk6CisgICAgICAgICh3ZWJr
aXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJf
dXNlcl9tZWRpYV9saXN0X2luaXQpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX2xp
c3RfZ2V0X2xlbmd0aCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRf
aXRlbV9uYW1lKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2lzX2l0ZW1f
c2VsZWN0ZWQpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3Rfc2VsZWN0X2l0
ZW0pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Y29yZSk6CisgICAgICAg
IChXZWJLaXQ6OmtpdE5ldyk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxp
c3QuaDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViVXNlck1lZGlhTGlzdCk6CisgICAgICAg
IChfV2ViS2l0V2ViVXNlck1lZGlhTGlzdENsYXNzKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
d2VidXNlcm1lZGlhbGlzdHByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0LmNwcDogQWRkZWQuCisgICAg
ICAgIChfV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdFByaXZhdGUpOgorICAgICAgICAod2Via2l0
V2ViVXNlck1lZGlhUmVxdWVzdEZpbmFsaXplKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9t
ZWRpYV9yZXF1ZXN0X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlh
X3JlcXVlc3RfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF93
YW50c19hdWRpbyk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF93YW50
c192aWRlbyk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9nZXRfc2Vj
dXJpdHlfb3JpZ2luKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3N1
Y2NlZWQpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZmFpbCk6Cisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAgICAgICAgKFdlYktp
dDo6a2l0TmV3KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5o
OiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KToKKyAgICAgICAg
KF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3MpOgorICAgICAgICAqIHdlYmtpdC93ZWJr
aXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jaG9vc2VfbWVkaWFfZGV2aWNlKToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJf
dmlld19pbml0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5oOgorICAgICAgICAo
X1dlYktpdFdlYlZpZXdDbGFzcyk6CisgICAgICAgICogd2Via2l0bWFyc2hhbC5saXN0OgorCisy
MDEyLTEwLTAzICBEYW5pbG8gQ2VzYXIgTGVtZXMgZGUgUGF1bGEgIDxkYW5pbG8uY2VzYXJAY29s
bGFib3JhLmNvLnVrPgorCisgICAgICAgIFtndGtdIGFkZGluZyBtZXRob2RzIGFuZCBzaWduYWxz
IGZvciB1c2VybWVkaWEgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHdlYmtpdCBhbmQgYnJvd3Nlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQzNzMKKwor
ICAgICAgICBXaGVuIHRoZSB1c2VyIG1ha2UgYSBnZXRVc2VyTWVkaWEgY2FsbCwgd2VidmlldyB3
aWxsIGVtaXQgYSBzaWdpYWwgKHVzZXItbWVkaWEtcmVxdWVzdGVkKQorICAgICAgICB0byB0aGUg
YXBwbGljYXRpb24gY29udGFpbmluZyB0aGVuIHJlcXVlc3QgaXRzZWxmICh3ZWJraXR3ZWJ1c2Vy
bWVkaWFyZXF1ZXN0KSBhbmQgdHdvCisgICAgICAgIGxpc3Qgd2l0aCB0aGUgYXZhaWxhYmxlIGF1
ZGlvIGFuZCB2aWRlbyBkZXZpY2VzICh3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0KS4KKworICAgICAg
ICBUaGUgYXBwbGljYXRpb24gbXVzdCBzaG93IHRoZSBsaXN0IHRvIHRoZSB1c2VyIGFuZCBhc2sg
cGVybWlzc2lvbiB0byB1c2Ugb25lIG9mCisgICAgICAgIHRob3NlIGRldmljZXMgKG9yIHJlamVj
dCB0aGUgcmVxdWVzdCkuCisKKyAgICAgICAgSW4gY2FzZSB0aGUgdXNlciBhY2NlcHRzIHRoZSBy
ZXF1ZXN0LCB0aGUgYXBwbGljYXRpb24gbXVzdCBtYXJrIHRoZSBkZXZpY2UgYXMKKyAgICAgICAg
c2VsZWN0ZWQgKHVzaW5nIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X3NlbGVjdF9pdGVtKSBh
bmQgdGhlbiBjYWxsCisgICAgICAgIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3N1Y2Nl
ZWQgd2hpY2ggd2lsbCBoYW5kbGUgdGhlIHJlcXVlc3QgcHJvcGVybHkuCisKKyAgICAgICAgT24g
dGhlIGNhc2UgdGhlIHVzZXIgcmVqZWN0IHRoZSByZXF1ZXN0LCB3ZWJraXRfd2ViX3VzZXJfbWVk
aWFfcmVxdWVzdF9mYWlsIG11c3QKKyAgICAgICAgYmUgY2FsbGVkLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhQ2xpZW50R3RrOjpVc2VyTWVkaWFDbGllbnRHdGspOgorICAgICAgICAo
V2ViS2l0OjpVc2VyTWVkaWFDbGllbnRHdGs6OnBhZ2VEZXN0cm95ZWQpOgorICAgICAgICAoV2Vi
S2l0OjpVc2VyTWVkaWFDbGllbnRHdGs6OnJlcXVlc3RVc2VyTWVkaWEpOgorICAgICAgICAoV2Vi
S2l0OjpVc2VyTWVkaWFDbGllbnRHdGs6OmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1VzZXJNZWRpYUNsaWVudEd0ay5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChVc2VyTWVkaWFDbGllbnRHdGspOgorICAgICAgICAqIGRvY3Mvd2Via2l0
Z3RrLWRvY3Muc2dtbDoKKyAgICAgICAgKiBkb2NzL3dlYmtpdGd0ay1zZWN0aW9ucy50eHQ6Cisg
ICAgICAgICogd2Via2l0L3dlYmtpdC5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ1c2Vy
bWVkaWFsaXN0LmNwcDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViVXNlck1lZGlhTGlzdFBy
aXZhdGUpOgorICAgICAgICAod2Via2l0V2ViVXNlck1lZGlhTGlzdEZpbmFsaXplKToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2NsYXNzX2luaXQpOgorICAgICAgICAod2Vi
a2l0X3dlYl91c2VyX21lZGlhX2xpc3RfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJf
bWVkaWFfbGlzdF9nZXRfbGVuZ3RoKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9s
aXN0X2dldF9pdGVtX25hbWUpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3Rf
aXNfaXRlbV9zZWxlY3RlZCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9z
ZWxlY3RfaXRlbSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToK
KyAgICAgICAgKFdlYktpdDo6a2l0TmV3KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2VidXNl
cm1lZGlhbGlzdC5oOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0KToK
KyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0Q2xhc3MpOgorICAgICAgICAqIHdlYmtp
dC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSk6CisgICAgICAg
ICh3ZWJraXRXZWJVc2VyTWVkaWFSZXF1ZXN0RmluYWxpemUpOgorICAgICAgICAod2Via2l0X3dl
Yl91c2VyX21lZGlhX3JlcXVlc3RfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3Vz
ZXJfbWVkaWFfcmVxdWVzdF9pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9y
ZXF1ZXN0X3dhbnRzX2F1ZGlvKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1
ZXN0X3dhbnRzX3ZpZGVvKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0
X2dldF9zZWN1cml0eV9vcmlnaW4pOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX3Jl
cXVlc3Rfc3VjY2VlZCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9m
YWlsKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAg
ICAoV2ViS2l0OjpraXROZXcpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFy
ZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QpOgor
ICAgICAgICAoX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RDbGFzcyk6CisgICAgICAgICogd2Vi
a2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2
aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAgICAg
KHdlYmtpdF93ZWJfdmlld19pbml0KToKKyAgICAgICAgKiB3ZWJraXRtYXJzaGFsLmxpc3Q6CisK
IDIwMTItMTAtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBDaGFuZ2UgbW9zdCBHcmFwaGljc0xheWVyOjpjcmVhdGUgY2FsbHMgdG8gdXNlIHRoZSB2
ZXJzaW9uIHRoYXQgdGFrZXMgYSBHcmFwaGljc0xheWVyRmFjdG9yeQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KaW5kZXggMzQ2MWRiYmVmNTk5NTBjODk3MDAzM2U3MmQ3ODU2MDY0YzhmMmJk
Yi4uMWEwYzc4ZDQzYzkxMTdlMDUxODg2YzJhZjEzM2NkNGY0M2VjMThiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCkBAIC01OTQyLDYgKzU5NDIsOCBAQCB3ZWJjb3JlZ3RrX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtEcmFnQW5kRHJvcEhlbHBl
ci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrSW5wdXRNZXRob2RGaWx0ZXIu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrSW5wdXRNZXRob2RGaWx0ZXIu
aCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a01lZGlhQ2hvb3NlckRpYWxvZy5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtNZWRpYUNob29zZXJEaWFsb2cu
aCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0dPd25QdHJHdGsuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9HdGtNZWRpYUNob29zZXJEaWFsb2cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0d0a01lZGlhQ2hvb3NlckRpYWxvZy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODRh
YTJkOTdhZWZjNGYxMmQ5NjczNjk5YjE2ZDRiNmQ3OTFjYzZkNwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtNZWRpYUNob29zZXJEaWFsb2cuY3BwCkBA
IC0wLDAgKzEsMTU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbGxhYm9yYS4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkd0a01lZGlhQ2hvb3NlckRpYWxvZy5oIgorCisj
aW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFSZXF1ZXN0
LmgiCisKKyNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2luY2x1ZGUgPGd0ay9ndGsuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
R3RrTWVkaWFDaG9vc2VyRGlhbG9nOjpHdGtNZWRpYUNob29zZXJEaWFsb2coR3RrV2lkZ2V0KiBw
YXJlbnQsIFVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNl
VmVjdG9yJiBhdWRpb1NvdXJjZSwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVv
U291cmNlKQorICAgIDogbV9kaWFsb2coMCkKKyAgICAsIG1fYXVkaW9Db21ibygwKQorICAgICwg
bV92aWRlb0NvbWJvKDApCit7CisgICAgR3RrV2lkZ2V0KiB2Ym94OworICAgIEd0a1dpZGdldCog
YXVkaW9NZXNzYWdlID0gMDsKKyAgICBHdGtXaWRnZXQqIHZpZGVvTWVzc2FnZSA9IDA7CisgICAg
Z2Jvb2xlYW4gd2FudHNBdWRpbyA9IHJlcXVlc3QtPmF1ZGlvKCk7CisgICAgZ2Jvb2xlYW4gd2Fu
dHNWaWRlbyA9IHJlcXVlc3QtPnZpZGVvKCk7CisgICAgZ2ludCBhdWRpb0xpc3RMZW5ndGggPSBh
dWRpb1NvdXJjZS5zaXplKCk7CisgICAgZ2ludCB2aWRlb0xpc3RMZW5ndGggPSB2aWRlb1NvdXJj
ZS5zaXplKCk7CisgICAgZ2Jvb2xlYW4gaGFzQXVkaW8gPSAoYXVkaW9MaXN0TGVuZ3RoID4gMCk7
CisgICAgZ2Jvb2xlYW4gaGFzVmlkZW8gPSAodmlkZW9MaXN0TGVuZ3RoID4gMCk7CisgICAgZ2lu
dCBpID0gMDsKKworICAgIG1fZGlhbG9nID0gZ3RrX2RpYWxvZ19uZXdfd2l0aF9idXR0b25zKF8o
IlVzZXIgTWVkaWEgU2VsZWN0b3IiKSwKKyAgICAgICAgcGFyZW50PyBHVEtfV0lORE9XKHBhcmVu
dCkgOiAwLAorICAgICAgICBHVEtfRElBTE9HX0RFU1RST1lfV0lUSF9QQVJFTlQsCisgICAgICAg
IEdUS19TVE9DS19DQU5DRUwsCisgICAgICAgIEdUS19SRVNQT05TRV9DQU5DRUwsCisgICAgICAg
IEdUS19TVE9DS19PSywKKyAgICAgICAgR1RLX1JFU1BPTlNFX09LLAorICAgICAgICAwKTsKKwor
ICAgIGd0a193aW5kb3dfc2V0X3Jlc2l6YWJsZShHVEtfV0lORE9XKG1fZGlhbG9nKSwgRkFMU0Up
OworICAgIGd0a19jb250YWluZXJfc2V0X2JvcmRlcl93aWR0aChHVEtfQ09OVEFJTkVSKG1fZGlh
bG9nKSwgNSk7CisKKyAgICBHdGtXaWRnZXQqIGNvbnRlbnRBcmVhID0gZ3RrX2RpYWxvZ19nZXRf
Y29udGVudF9hcmVhKEdUS19ESUFMT0cobV9kaWFsb2cpKTsKKyAgICBndGtfYm94X3NldF9zcGFj
aW5nKEdUS19CT1goY29udGVudEFyZWEpLCAyKTsKKworICAgIEd0a1dpZGdldCogYWN0aW9uQXJl
YSA9IGd0a19kaWFsb2dfZ2V0X2FjdGlvbl9hcmVhKEdUS19ESUFMT0cobV9kaWFsb2cpKTsKKyAg
ICBndGtfY29udGFpbmVyX3NldF9ib3JkZXJfd2lkdGgoR1RLX0NPTlRBSU5FUihhY3Rpb25BcmVh
KSwgNSk7CisgICAgZ3RrX2JveF9zZXRfc3BhY2luZyhHVEtfQk9YKGFjdGlvbkFyZWEpLCA2KTsK
KworICAgIGlmICghaGFzQXVkaW8gJiYgIWhhc1ZpZGVvKSB7CisgICAgICAgIGF1ZGlvTWVzc2Fn
ZSA9IGd0a19sYWJlbF9uZXcoXygiTm8gdXNlciBtZWRpYSBhdmFpbGFibGUiKSk7CisgICAgICAg
IGd0a19taXNjX3NldF9hbGlnbm1lbnQoR1RLX01JU0MoYXVkaW9NZXNzYWdlKSwgMCwgMCk7Cisg
ICAgICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGNvbnRlbnRBcmVhKSwgYXVkaW9NZXNz
YWdlLCBGQUxTRSwgRkFMU0UsIDYpOworICAgIH0gZWxzZSBpZiAod2FudHNBdWRpbykgeworICAg
ICAgICBhdWRpb01lc3NhZ2UgPSBndGtfbGFiZWxfbmV3KGhhc0F1ZGlvID8gXygiU2VsZWN0IGZy
b20gYXZhaWxhYmxlIHVzZXIgYXVkaW8iKSA6IF8oIk5vIHVzZXIgYXVkaW8gYXZhaWxhYmxlIikp
OworICAgICAgICBndGtfbWlzY19zZXRfYWxpZ25tZW50KEdUS19NSVNDKGF1ZGlvTWVzc2FnZSks
IDAsIDApOworICAgICAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChjb250ZW50QXJlYSks
IGF1ZGlvTWVzc2FnZSwgRkFMU0UsIEZBTFNFLCA2KTsKKyAgICB9CisKKyAgICBpZiAoaGFzQXVk
aW8pIHsKKyAgICAgICAgR3RrV2lkZ2V0KiBmcmFtZSA9IGd0a19mcmFtZV9uZXcoXygiQXVkaW8i
KSk7CisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgMiwgMCkKKyAgICAgICAgdmJveCA9IGd0a19i
b3hfbmV3KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgMCk7CisjZWxzZQorICAgICAgICB2Ym94
ID0gZ3RrX3Zib3hfbmV3KFRSVUUsIDApOworI2VuZGlmCisgICAgICAgIGd0a19jb250YWluZXJf
c2V0X2JvcmRlcl93aWR0aChHVEtfQ09OVEFJTkVSKHZib3gpLCAzKTsKKworICAgICAgICBtX2F1
ZGlvQ29tYm8gPSBndGtfY29tYm9fYm94X3RleHRfbmV3KCk7CisgICAgICAgIGZvciAoaSA9IDA7
IGkgPCBhdWRpb0xpc3RMZW5ndGg7IGkrKykKKyAgICAgICAgICAgIGd0a19jb21ib19ib3hfdGV4
dF9hcHBlbmRfdGV4dChHVEtfQ09NQk9fQk9YX1RFWFQobV9hdWRpb0NvbWJvKSwgZ19zdHJkdXAo
YXVkaW9Tb3VyY2VbaV0tPm5hbWUoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIGd0a19jb21i
b19ib3hfc2V0X2FjdGl2ZShHVEtfQ09NQk9fQk9YKG1fYXVkaW9Db21ibyksIDApOworICAgICAg
ICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHZib3gpLCBtX2F1ZGlvQ29tYm8pOwor
CisgICAgICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIoZnJhbWUpLCB2Ym94KTsK
KyAgICAgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goY29udGVudEFyZWEpLCBmcmFtZSwg
RkFMU0UsIEZBTFNFLCAzKTsKKyAgICB9CisKKyAgICBpZiAod2FudHNWaWRlbykgeworICAgICAg
ICBpZiAoaGFzVmlkZW8pIHsKKyAgICAgICAgICAgIHZpZGVvTWVzc2FnZSA9IGd0a19sYWJlbF9u
ZXcoXygiU2VsZWN0IGZyb20gYXZhaWxhYmxlIHVzZXIgdmlkZW8iKSk7CisgICAgICAgIH0gZWxz
ZSBpZiAoIXdhbnRzQXVkaW8gfHwgaGFzQXVkaW8pCisgICAgICAgICAgICB2aWRlb01lc3NhZ2Ug
PSBndGtfbGFiZWxfbmV3KF8oIk5vIHVzZXIgdmlkZW8gYXZhaWxhYmxlIikpOworICAgICAgICBp
ZiAodmlkZW9NZXNzYWdlKSB7CisgICAgICAgICAgICBndGtfbWlzY19zZXRfYWxpZ25tZW50KEdU
S19NSVNDKHZpZGVvTWVzc2FnZSksIDAsIDApOworICAgICAgICAgICAgZ3RrX2JveF9wYWNrX3N0
YXJ0KEdUS19CT1goY29udGVudEFyZWEpLCB2aWRlb01lc3NhZ2UsIEZBTFNFLCBGQUxTRSwgNik7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoaGFzVmlkZW8pIHsKKyAgICAgICAgR3RrV2lk
Z2V0KiBmcmFtZSA9IGd0a19mcmFtZV9uZXcoXygiVmlkZW8iKSk7CisjaWYgR1RLX0NIRUNLX1ZF
UlNJT04oMywgMiwgMCkKKyAgICAgICAgdmJveCA9IGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElP
Tl9WRVJUSUNBTCwgMCk7CisjZWxzZQorICAgICAgICB2Ym94ID0gZ3RrX3Zib3hfbmV3KFRSVUUs
IDApOworI2VuZGlmCisgICAgICAgIGd0a19jb250YWluZXJfc2V0X2JvcmRlcl93aWR0aChHVEtf
Q09OVEFJTkVSKHZib3gpLCAzKTsKKworICAgICAgICBtX3ZpZGVvQ29tYm8gPSBndGtfY29tYm9f
Ym94X3RleHRfbmV3KCk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCB2aWRlb0xpc3RMZW5ndGg7
IGkrKykKKyAgICAgICAgICAgIGd0a19jb21ib19ib3hfdGV4dF9hcHBlbmRfdGV4dChHVEtfQ09N
Qk9fQk9YX1RFWFQobV92aWRlb0NvbWJvKSwgZ19zdHJkdXAodmlkZW9Tb3VyY2VbaV0tPm5hbWUo
KS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIGd0a19jb21ib19ib3hfc2V0X2FjdGl2ZShHVEtf
Q09NQk9fQk9YKG1fdmlkZW9Db21ibyksIDApOworICAgICAgICBndGtfY29udGFpbmVyX2FkZChH
VEtfQ09OVEFJTkVSKHZib3gpLCBtX3ZpZGVvQ29tYm8pOworCisgICAgICAgIGd0a19jb250YWlu
ZXJfYWRkKEdUS19DT05UQUlORVIoZnJhbWUpLCB2Ym94KTsKKyAgICAgICAgZ3RrX2JveF9wYWNr
X3N0YXJ0KEdUS19CT1goY29udGVudEFyZWEpLCBmcmFtZSwgRkFMU0UsIEZBTFNFLCAzKTsKKyAg
ICB9Cit9CisKK0d0a01lZGlhQ2hvb3NlckRpYWxvZzo6fkd0a01lZGlhQ2hvb3NlckRpYWxvZygp
Cit7CisgICAgZ3RrX3dpZGdldF9kZXN0cm95KG1fZGlhbG9nKTsKK30KKworaW50IEd0a01lZGlh
Q2hvb3NlckRpYWxvZzo6c2VsZWN0ZWRBdWRpbygpCit7CisgICAgaWYgKG1fYXVkaW9Db21ibykK
KyAgICAgICAgcmV0dXJuIGd0a19jb21ib19ib3hfZ2V0X2FjdGl2ZShHVEtfQ09NQk9fQk9YKG1f
YXVkaW9Db21ibykpOworCisgICAgcmV0dXJuIC0xOworfQorCitpbnQgR3RrTWVkaWFDaG9vc2Vy
RGlhbG9nOjpzZWxlY3RlZFZpZGVvKCkKK3sKKyAgICBpZiAobV92aWRlb0NvbWJvKQorICAgICAg
ICByZXR1cm4gZ3RrX2NvbWJvX2JveF9nZXRfYWN0aXZlKEdUS19DT01CT19CT1gobV92aWRlb0Nv
bWJvKSk7CisKKyAgICByZXR1cm4gLTE7Cit9CisKK3ZvaWQgR3RrTWVkaWFDaG9vc2VyRGlhbG9n
OjpzaG93KCkKK3sKKyAgICBndGtfd2lkZ2V0X3Nob3dfYWxsKG1fZGlhbG9nKTsKK30KKworR3Rr
V2lkZ2V0KiBHdGtNZWRpYUNob29zZXJEaWFsb2c6OndpZGdldCgpCit7CisgICAgcmV0dXJuIG1f
ZGlhbG9nOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
R3RrTWVkaWFDaG9vc2VyRGlhbG9nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3Rr
TWVkaWFDaG9vc2VyRGlhbG9nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFmMjQ2ZTJjNjNjNjE2YmYxNTE0MjUx
ZmIyNTRlMGY3ODBmMzVlMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9HdGtNZWRpYUNob29zZXJEaWFsb2cuaApAQCAtMCwwICsxLDUzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIENvbGxhYm9yYS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBHdGtNZWRpYUNob29zZXJEaWFs
b2dfaAorI2RlZmluZSBHdGtNZWRpYUNob29zZXJEaWFsb2dfaAorCisjaW5jbHVkZSAiTWVkaWFT
dHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFSZXF1ZXN0LmgiCisKKyNpbmNsdWRl
IDx3dGYvRmFzdEFsbG9jQmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEd0a01lZGlhQ2hvb3NlckRpYWxvZyB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoR3RrTWVkaWFDaG9vc2VyRGlhbG9nKTsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKKworcHVibGljOgorICAgIEd0a01lZGlhQ2hvb3NlckRpYWxvZyhH
dGtXaWRnZXQgKnBhcmVudCwgVXNlck1lZGlhUmVxdWVzdCosIGNvbnN0IE1lZGlhU3RyZWFtU291
cmNlVmVjdG9yJiwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImKTsKKyAgICB+R3RrTWVk
aWFDaG9vc2VyRGlhbG9nKCk7CisKKyAgICB2b2lkIHNob3coKTsKKyAgICBpbnQgc2VsZWN0ZWRB
dWRpbygpOworICAgIGludCBzZWxlY3RlZFZpZGVvKCk7CisgICAgR3RrV2lkZ2V0KiB3aWRnZXQo
KTsKKworcHJpdmF0ZToKKworICAgIEd0a1dpZGdldCAqbV9kaWFsb2c7CisgICAgR3RrV2lkZ2V0
ICptX2F1ZGlvQ29tYm87CisgICAgR3RrV2lkZ2V0ICptX3ZpZGVvQ29tYm87Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBHdGtNZWRpYUNob29zZXJEaWFsb2dfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2Vi
S2l0L2d0ay9HTlVtYWtlZmlsZS5hbQppbmRleCA1YmU5ZWI1NDhlZTAyM2QxNDBhMzVkMTY2MjQz
M2Q1ODFiYjcxYjgzLi5mYmE4NGJjMGYxMDJmM2I3MjQ5YmQyZTMzM2UwOGJkYjE5YTkxNGJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQpAQCAtMTQyLDYgKzE0Miw4IEBAIHdlYmtpdGd0a19z
dGF0aWNfaF9hcGkgKz0gXAogCSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2VicG9saWN5ZGVjaXNpb24uaCBcCiAJJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJyZXNvdXJjZS5oIFwKIAkkKHNyY2RpcikvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmggXAorCSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdC5oIFwKKwkkKHNyY2RpcikvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuaCBcCiAJJChzcmNkaXIp
L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oIFwKIAkk
KHNyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAogCkBAIC0y
NzYsNiArMjc4LDEwIEBAIHdlYmtpdGd0a19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2VicGx1Z2luZGF0YWJhc2Vwcml2YXRlLmggXAogCVNvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAgXAogCVNvdXJjZS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5nc3ByaXZhdGUuaCBcCisJU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3QuY3BwIFwKKwlTb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdHByaXZhdGUuaCBcCisJU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuY3BwIFwKKwlTb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGUuaCBcCiAJU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIFwKIAlTb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Vc2VyTWVkaWFDbGllbnRHdGsuY3BwIGIvU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50R3RrLmNwcAppbmRleCAzOTE2
NzZhZmI1YWY5ZjA3NWViMjZiMDY5YWM5MzVjZjBlYmYzY2M2Li41NzdmNWEwM2Y1NmI0MzVmODVm
ZTYwNzNjMGE0MjIyMWMwZmU3ZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9Vc2VyTWVkaWFDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L1VzZXJNZWRpYUNsaWVudEd0ay5jcHAKQEAgLTIyLDE1ICsyMiwxNiBA
QAogI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudEd0ay5oIgogCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKLSNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgogI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCi0jaW5jbHVkZSAiVXNlck1lZGlhUmVxdWVzdC5oIgorI2luY2x1ZGUgIndlYmtp
dHdlYnVzZXJtZWRpYWxpc3Rwcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0d2VidXNlcm1lZGlh
cmVxdWVzdHByaXZhdGUuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1Vc2VyTWVkaWFDbGllbnRHdGs6OlVzZXJNZWRpYUNsaWVudEd0aygpCitV
c2VyTWVkaWFDbGllbnRHdGs6OlVzZXJNZWRpYUNsaWVudEd0ayhXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3KQorICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiB7CiB9CiAKQEAgLTQwLDEyICs0MSwxMiBA
QCBVc2VyTWVkaWFDbGllbnRHdGs6On5Vc2VyTWVkaWFDbGllbnRHdGsoKQogCiB2b2lkIFVzZXJN
ZWRpYUNsaWVudEd0azo6cGFnZURlc3Ryb3llZCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KIAogdm9pZCBVc2VyTWVkaWFDbGllbnRHdGs6OnJlcXVlc3RVc2VyTWVkaWEoV1RGOjpQYXNz
UmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IHBycFJlcXVlc3QsIGNvbnN0IE1lZGlhU3RyZWFtU291
cmNlVmVjdG9yJiBhdWRpb1NvdXJjZSwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZp
ZGVvU291cmNlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgUmVmUHRyPFVzZXJNZWRp
YVJlcXVlc3Q+IHJlcXVlc3QgPSBwcnBSZXF1ZXN0OworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFt
ZShtX3dlYlZpZXcsICJjaG9vc2UtbWVkaWEtZGV2aWNlIiwga2l0TmV3KHJlcXVlc3QuZ2V0KCkp
LCBraXROZXcoYXVkaW9Tb3VyY2UpLCBraXROZXcodmlkZW9Tb3VyY2UpKTsKIH0KIAogdm9pZCBV
c2VyTWVkaWFDbGllbnRHdGs6OmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoVXNlck1lZGlhUmVxdWVz
dCogcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L1VzZXJNZWRpYUNsaWVudEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
VXNlck1lZGlhQ2xpZW50R3RrLmgKaW5kZXggMDM2MmE0YTNkMDIzMzE1MWNhMDE1MzE0M2Q0NTZk
Y2MxYTRhNjAzMy4uOTU3MDBlZmIzNTM2OTM4ZWJkY2QzNjQ2N2QzZGVhMjNkYTM3M2I2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50
R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVXNlck1lZGlhQ2xp
ZW50R3RrLmgKQEAgLTIyLDE4ICsyMiwyOSBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
IAorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhQ2xp
ZW50LmgiCiAKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3IFdlYktpdFdlYlZpZXc7CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFVzZXJNZWRpYVJlcXVlc3Q7Cit9CisKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBVc2VyTWVkaWFDbGllbnRHdGsgOiBwdWJsaWMgV2ViQ29y
ZTo6VXNlck1lZGlhQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBVc2VyTWVkaWFDbGllbnRHdGsoKTsK
KyAgICBVc2VyTWVkaWFDbGllbnRHdGsoV2ViS2l0V2ViVmlldyopOwogICAgIHZpcnR1YWwgflVz
ZXJNZWRpYUNsaWVudEd0aygpOwogCiAgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsK
KwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0VXNlck1lZGlhKFdURjo6UGFzc1JlZlB0cjxXZWJD
b3JlOjpVc2VyTWVkaWFSZXF1ZXN0PiwgY29uc3QgV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VW
ZWN0b3ImLCBjb25zdCBXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYpOwogICAgIHZp
cnR1YWwgdm9pZCBjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVl
c3QqKTsKKworcHJpdmF0ZToKKyAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZpZXc7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3Mv
d2Via2l0Z3RrLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3Mvd2Via2l0Z3RrLWRv
Y3Muc2dtbAppbmRleCA3MjEwNjUyMmZiNWJhYmE4YjAwOWZlMzU0NGI5YWRmMjNmY2JiMTk4Li41
YTNhYmIzZjY3MThlNTE1YWNkMzMxMDllMTRmZTlmZTlhMDRjMzkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9kb2NzL3dlYmtpdGd0ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktp
dC9ndGsvZG9jcy93ZWJraXRndGstZG9jcy5zZ21sCkBAIC0zMyw2ICszMyw4IEBACiAgICAgPHhp
OmluY2x1ZGUgaHJlZj0ieG1sL3dlYmtpdGRvd25sb2FkLnhtbCIvPgogICAgIDx4aTppbmNsdWRl
IGhyZWY9InhtbC93ZWJraXR2aWV3cG9ydGF0dHJpYnV0ZXMueG1sIi8+CiAgICAgPHhpOmluY2x1
ZGUgaHJlZj0ieG1sL3dlYmtpdGhpdHRlc3RyZXN1bHQueG1sIi8+CisgICAgPHhpOmluY2x1ZGUg
aHJlZj0ieG1sL3dlYmtpdHdlYnVzZXJtZWRpYWxpc3QueG1sIi8+CisgICAgPHhpOmluY2x1ZGUg
aHJlZj0ieG1sL3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QueG1sIi8+CiAgICAgPHhpOmluY2x1
ZGUgaHJlZj0ieG1sL3dlYmtpdHdlYnBsdWdpbi54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVm
PSJ4bWwvd2Via2l0d2VicGx1Z2luZGF0YWJhc2UueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJl
Zj0ieG1sL3dlYmtpdHNvdXBhdXRoZGlhbG9nLnhtbCIvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ndGsvZG9jcy93ZWJraXRndGstc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9ndGsv
ZG9jcy93ZWJraXRndGstc2VjdGlvbnMudHh0CmluZGV4IGI3MDdiZjgzZDcxMWEwYzFlMTc3YWI2
NGYxNDc2ZjRjMWUwZmJlN2EuLmNlMTE5Yjg4Y2E0Mzg2Yzk2ODZmODc0ZmY0YzZhM2VlNGFhNzE2
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3Mvd2Via2l0Z3RrLXNlY3Rpb25z
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzL3dlYmtpdGd0ay1zZWN0aW9ucy50eHQK
QEAgLTY4Niw2ICs2ODYsNDkgQEAgV2ViS2l0SWNvbkRhdGFiYXNlUHJpdmF0ZQogPC9TRUNUSU9O
PgogCiA8U0VDVElPTj4KKzxGSUxFPndlYmtpdHdlYnVzZXJtZWRpYWxpc3Q8L0ZJTEU+Cis8VElU
TEU+V2ViS2l0V2ViVXNlck1lZGlhTGlzdDwvVElUTEU+CitXZWJLaXRXZWJVc2VyTWVkaWFMaXN0
Cit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfbGVuZ3RoCit3ZWJraXRfd2ViX3VzZXJf
bWVkaWFfbGlzdF9nZXRfaXRlbV9uYW1lCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9pc19p
dGVtX3NlbGVjdGVkCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9zZWxlY3RfaXRlbQorPFNV
QlNFQ1RJT04gU3RhbmRhcmQ+CitXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfTElTVAorV0VCS0lU
X0lTX1dFQl9VU0VSX01FRElBX0xJU1RfQ0xBU1MKK1dFQktJVF9XRUJfVVNFUl9NRURJQV9MSVNU
CitXRUJLSVRfV0VCX1VTRVJfTUVESUFfTElTVF9DTEFTUworV0VCS0lUX1dFQl9VU0VSX01FRElB
X0xJU1RfR0VUX0NMQVNTCitXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNUCis8U1VCU0VD
VElPTiBQcml2YXRlPgorV2ViS2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGUKK1dlYktpdFdlYlVz
ZXJNZWRpYUxpc3RDbGFzcword2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X3R5cGUKKzwv
U0VDVElPTj4KKworPFNFQ1RJT04+Cis8RklMRT53ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0PC9G
SUxFPgorPFRJVExFPldlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3Q8L1RJVExFPgorV2ViS2l0V2Vi
VXNlck1lZGlhUmVxdWVzdAord2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZmFpbAord2Vi
a2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfc3VjY2VlZAord2Via2l0X3dlYl91c2VyX21lZGlh
X3JlcXVlc3Rfd2FudHNfYXVkaW8KK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRz
X3ZpZGVvCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9nZXRfc2VjdXJpdHlfb3JpZ2lu
Cis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dFQktJVF9JU19XRUJfVVNFUl9NRURJQV9SRVFVRVNU
CitXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfUkVRVUVTVF9DTEFTUworV0VCS0lUX1RZUEVfV0VC
X1VTRVJfTUVESUFfUkVRVUVTVAorV0VCS0lUX1dFQl9VU0VSX01FRElBX1JFUVVFU1QKK1dFQktJ
VF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUX0NMQVNTCitXRUJLSVRfV0VCX1VTRVJfTUVESUFfUkVR
VUVTVF9HRVRfQ0xBU1MKKzxTVUJTRUNUSU9OIFByaXZhdGU+CitXZWJLaXRXZWJVc2VyTWVkaWFS
ZXF1ZXN0Q2xhc3MKK1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRlCit3ZWJraXRfd2Vi
X3VzZXJfbWVkaWFfcmVxdWVzdF9nZXRfdHlwZQorPC9TRUNUSU9OPgorCis8U0VDVElPTj4KIDxG
SUxFPndlYmtpdGZhdmljb25kYXRhYmFzZTwvRklMRT4KIDxUSVRMRT5XZWJLaXRGYXZpY29uRGF0
YWJhc2U8L1RJVExFPgogV2ViS2l0RmF2aWNvbkRhdGFiYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmggYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0LmgKaW5kZXggYWE3YjkzZGJkYThjMjZkZTIxZTk4MmQzOWM2MTY1ZmI4YzJmNWU3Ny4uYmYx
NmEyNWU5MmVkNTVmOWIyMDdiNGE3MmJjNjNiYjg5NjlmMWViMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXQuaApAQCAtNTEsNiArNTEsOCBAQAogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJw
b2xpY3lkZWNpc2lvbi5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJyZXNvdXJjZS5oPgog
I2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5oPgorI2luY2x1ZGUgPHdlYmtpdC93
ZWJraXR3ZWJ1c2VybWVkaWFsaXN0Lmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnVzZXJt
ZWRpYXJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vidmlldy5oPgogI2luY2x1
ZGUgPHdlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTcyZGQ0YzY1MDY4MzIwYzgwZGZhOGE0MGE5MjE5YmQ4YTRkZDRhNAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmNwcApA
QCAtMCwwICsxLDE2NyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgQ29sbGFib3JhIEx0
ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0
ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0Lmgi
CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3By
aXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworCisvKioKKyAqIFNFQ1RJT046d2Via2l0d2Vi
dXNlcm1lZGlhbGlzdAorICogQHNob3J0X2Rlc2NyaXB0aW9uOiBVc2VyTWVkaWEgTGlzdAorICog
QFRpdGxlOiBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0CisgKgorICogI1dlYktpdFdlYlVzZXJNZWRp
YUxpc3QgY29udGFpbnMgYSBsaXN0IG9mCisgKiBhdWRpbyBvciB2aWRlbyBzb3VyY2VzIGZyb20g
YSBXZWJVc2VyTWVkaWFSZXF1ZXN0CisgKgorICogU2luY2U6IDIuMAorICovCisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CisKK3N0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGUg
eworICAgIFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yIHNvdXJjZXM7CisgICAgVmVj
dG9yPGJvb2w+IHNvdXJjZVNlbGVjdGlvbnM7Cit9OworCitHX0RFRklORV9UWVBFKFdlYktpdFdl
YlVzZXJNZWRpYUxpc3QsIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0LCBHX1RZUEVfT0JKRUNU
KQorCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJVc2VyTWVkaWFMaXN0RmluYWxpemUoR09iamVjdCog
b2JqZWN0KQoreworICAgIFdFQktJVF9XRUJfVVNFUl9NRURJQV9MSVNUKG9iamVjdCktPnByaXYt
Pn5XZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZSgpOworICAgIEdfT0JKRUNUX0NMQVNTKHdl
YmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7
Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2NsYXNzX2luaXQo
V2ViS2l0V2ViVXNlck1lZGlhTGlzdENsYXNzKiBsaXN0Q2xhc3MpCit7CisgICAgR09iamVjdENs
YXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhsaXN0Q2xhc3MpOworICAgIGdvYmpl
Y3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRXZWJVc2VyTWVkaWFMaXN0RmluYWxpemU7CisKKyAg
ICB3ZWJraXRJbml0KCk7CisKKyAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUobGlzdENsYXNz
LCBzaXplb2YoV2ViS2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGUpKTsKK30KKworc3RhdGljIHZv
aWQgd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfaW5pdChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0
KiBsaXN0KQoreworICAgIFdlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlKiBwcml2ID0gR19U
WVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKGxpc3QsIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElB
X0xJU1QsIFdlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlKTsKKyAgICBsaXN0LT5wcml2ID0g
cHJpdjsKKworICAgIC8vIHBsYWNlbWVudCBuZXcgc3ludGF4CisgICAgbmV3IChwcml2KSBXZWJL
aXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZSgpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdXNl
cl9tZWRpYV9saXN0X2dldF9sZW5ndGg6CisgKiBAbGlzdDogdGhlIFdlYktpdFdlYlVzZXJNZWRp
YUxpc3QgaXRzZWxmCisgKgorICogUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgZWxlbWVudHMgbGlz
dC4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IG51bWJlciBvZiBlbGVtZW50cy4KKyAqCisgKiBTaW5j
ZTogMi4wCisgKi8KK2d1aW50IHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9sZW5ndGgo
V2ViS2l0V2ViVXNlck1lZGlhTGlzdCogbGlzdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfTElTVChsaXN0KSwgMCk7CisKKyAgICByZXR1cm4g
Y29yZShsaXN0KS5zaXplKCk7Cit9CisKKworLyoqCisgKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFf
bGlzdF9nZXRfaXRlbV9uYW1lOgorICogQGxpc3Q6IHRoZSAjV2ViS2l0V2ViVXNlck1lZGlhTGlz
dCBpdHNlbGYKKyAqIEBpbmRleDogdGhlIHdhbnRlZCBlbGVtZW50IGluZGV4LgorICoKKyAqIFJl
dHVybnMgdGhlIGRldmljZSBuYW1lIG9mIHRoZSBlbGVtZW50LgorICoKKyAqIFJldHVybiB2YWx1
ZTogdGhlIGRldmljZSBpZCBvZiB0aGUgQGluZGV4IGdpdmVuIGVsZW1lbnQuCisgKgorICogU2lu
Y2U6IDIuMAorICovCitjb25zdCBnY2hhciogd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0
X2l0ZW1fbmFtZShXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBsaXN0LCBndWludCBpbmRleCkKK3sK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfTElTVChs
aXN0KSwgMCk7CisKKyAgICBXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgc291cmNl
cyA9IGNvcmUobGlzdCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoaW5kZXggPCBzb3VyY2Vz
LnNpemUoKSwgMCk7CisKKyAgICByZXR1cm4gZ19zdHJkdXAoc291cmNlc1tpbmRleF0tPm5hbWUo
KS51dGY4KCkuZGF0YSgpKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlz
dF9pc19pdGVtX3NlbGVjdGVkOgorICogQGxpc3Q6IHRoZSAjV2ViS2l0V2ViVXNlck1lZGlhTGlz
dCBpdHNlbGYKKyAqIEBpbmRleDogdGhlIHdhbnRlZCBlbGVtZW50IGluZGV4LgorICoKKyAqIElu
ZGljYXRlIGlmIGEgZGV2aWNlIGlzIG1hcmtlZCBhcyBzZWxlY3RlZC4KKyAqCisgKiBSZXR1cm4g
dmFsdWU6IFRydWUgaWYgdGhlIGRldmljZSByZXByZXNlbnRlZCBieSBAaW5kZXggaXMgbWFya2Vk
IGFzIHNlbGVjdGVkLgorICoKKyAqIFNpbmNlOiAyLjAKKyAqLworZ2Jvb2xlYW4gd2Via2l0X3dl
Yl91c2VyX21lZGlhX2xpc3RfaXNfaXRlbV9zZWxlY3RlZChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0
KiBsaXN0LCBndWludCBpbmRleCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfV0VCX1VTRVJfTUVESUFfTElTVChsaXN0KSwgRkFMU0UpOworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKGluZGV4IDwgY29yZShsaXN0KS5zaXplKCksIEZBTFNFKTsKKworICAgIHJldHVybiBs
aXN0LT5wcml2LT5zb3VyY2VTZWxlY3Rpb25zW2luZGV4XTsKK30KKworLyoqCisgKiB3ZWJraXRf
d2ViX3VzZXJfbWVkaWFfbGlzdF9zZWxlY3RfaXRlbToKKyAqIEBsaXN0OiB0aGUgI1dlYktpdFdl
YlVzZXJNZWRpYUxpc3QgaXRzZWxmCisgKiBAaW5kZXg6IHRoZSB3YW50ZWQgZWxlbWVudCBpbmRl
eC4KKyAqCisgKiBNYXJrIGEgZGV2aWNlIGFzIHNlbGVjdGVlZC4KKyAqCisgKiBTaW5jZTogMi4w
CisgKi8KK3ZvaWQgd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3Rfc2VsZWN0X2l0ZW0oV2ViS2l0
V2ViVXNlck1lZGlhTGlzdCogbGlzdCwgZ3VpbnQgaW5kZXgpCit7CisgICAgZ19yZXR1cm5faWZf
ZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfTElTVChsaXN0KSk7CisgICAgZ19yZXR1cm5f
aWZfZmFpbChpbmRleCA8IGNvcmUobGlzdCkuc2l6ZSgpKTsKKworICAgIGxpc3QtPnByaXYtPnNv
dXJjZVNlbGVjdGlvbnNbaW5kZXhdID0gVFJVRTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K1dlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBjb3JlKFdlYktpdFdlYlVzZXJNZWRp
YUxpc3QqIGxpc3QpCit7CisgICAgcmV0dXJuIGxpc3QtPnByaXYtPnNvdXJjZXM7Cit9CisKK1dl
YktpdFdlYlVzZXJNZWRpYUxpc3QqIGtpdE5ldyhjb25zdCBXZWJDb3JlOjpNZWRpYVN0cmVhbVNv
dXJjZVZlY3RvciYgc291cmNlcykKK3sKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiB3ZWJM
aXN0ID0gV0VCS0lUX1dFQl9VU0VSX01FRElBX0xJU1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBF
X1dFQl9VU0VSX01FRElBX0xJU1QsIE5VTEwpKTsKKyAgICB3ZWJMaXN0LT5wcml2LT5zb3VyY2Vz
ID0gc291cmNlczsKKyAgICB3ZWJMaXN0LT5wcml2LT5zb3VyY2VTZWxlY3Rpb25zLmZpbGwoRkFM
U0UsIHNvdXJjZXMuc2l6ZSgpKTsKKworICAgIHJldHVybiB3ZWJMaXN0OworfQorCit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3QuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGZhMjhlOTg0M2Y0NTll
YmJkMjE3NzNkZDBlODcwNmZlYzkxN2FmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmgKQEAgLTAsMCArMSw2OCBAQAor
LyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0
d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKworI2lmbmRlZiB3ZWJraXR3
ZWJ1c2VybWVkaWFsaXN0X2gKKyNkZWZpbmUgd2Via2l0d2VidXNlcm1lZGlhbGlzdF9oCisKKyNp
bmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPGdsaWIuaD4KKworI2luY2x1ZGUgPHdl
YmtpdC93ZWJraXRkZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRf
VFlQRV9XRUJfVVNFUl9NRURJQV9MSVNUICAgICAgICAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9t
ZWRpYV9saXN0X2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfVVNFUl9NRURJQV9MSVNU
KG9iaikgICAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdF
QktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1QsIFdlYktpdFdlYlVzZXJNZWRpYUxpc3QpKQor
I2RlZmluZSBXRUJLSVRfV0VCX1VTRVJfTUVESUFfTElTVF9DTEFTUyhrbGFzcykgICAgICAgKEdf
VFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJ
QV9MSVNULCBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNf
V0VCX1VTRVJfTUVESUFfTElTVChvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5D
RV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNUKSkKKyNkZWZpbmUg
V0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX0xJU1RfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hF
Q0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfTElTVCkp
CisjZGVmaW5lIFdFQktJVF9XRUJfVVNFUl9NRURJQV9MSVNUX0dFVF9DTEFTUyhvYmopICAgICAo
R19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01F
RElBX0xJU1QsIFdlYktpdFdlYlVzZXJNZWRpYUxpc3RDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0
IF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0IFdlYktpdFdlYlVzZXJNZWRpYUxpc3Q7Cit0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhTGlzdENsYXNzIFdlYktpdFdlYlVzZXJNZWRpYUxp
c3RDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZSBX
ZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVk
aWFMaXN0IHsKKyAgICBHT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKKyAgICBXZWJLaXRXZWJVc2Vy
TWVkaWFMaXN0UHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlh
TGlzdENsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworV0VCS0lU
X0FQSSBHVHlwZQord2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X3R5cGUgKHZvaWQpIEdf
R05VQ19DT05TVDsKKworV0VCS0lUX0FQSSBndWludAord2Via2l0X3dlYl91c2VyX21lZGlhX2xp
c3RfZ2V0X2xlbmd0aCAgICAgICAgKFdlYktpdFdlYlVzZXJNZWRpYUxpc3QgKmxpc3QpOworCitX
RUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9p
dGVtX25hbWUgICAgIChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0ICpsaXN0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IGluZGV4KTsKK1dFQktJVF9B
UEkgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2lzX2l0ZW1fc2VsZWN0ZWQg
IChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0ICpsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGd1aW50IGluZGV4KTsKK1dFQktJVF9BUEkgdm9pZAord2Vi
a2l0X3dlYl91c2VyX21lZGlhX2xpc3Rfc2VsZWN0X2l0ZW0gICAgICAgKFdlYktpdFdlYlVzZXJN
ZWRpYUxpc3QgKmxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ3VpbnQgaW5kZXgpOworCitHX0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3Rwcml2YXRl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDc4YTkxZjYwZWVhYThkM2EzMDA4NDE4NzY5M2NkMzM3ZDVjMjdlYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2Vy
bWVkaWFsaXN0cHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChD
KSAyMDEyIENvbGxhYm9yYSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjEx
MC0xMzAxICBVU0EKKyAqLworCisKKyNpZm5kZWYgd2Via2l0d2VidXNlcm1lZGlhbGlzdHByaXZh
dGVfaAorI2RlZmluZSB3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZV9oCisKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNs
dWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitX
ZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgY29yZShXZWJLaXRXZWJVc2VyTWVkaWFM
aXN0Kik7CitXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBraXROZXcoY29uc3QgV2ViQ29yZTo6TWVk
aWFTdHJlYW1Tb3VyY2VWZWN0b3ImKTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2VuZGlmIC8vIHdlYmtpdHdlYnVzZXJtZWRpYWxpc3Rwcml2YXRlX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45NjZhNzgzYWRjNDA0MDJhNTJlZDkyYWI4Y2IxNmJjMDk0MmIzMzFl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVz
ZXJtZWRpYXJlcXVlc3QuY3BwCkBAIC0wLDAgKzEsMTk4IEBACisvKgorICogIENvcHlyaWdodCAo
QykgMjAxMiBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIx
MTAtMTMwMSAgVVNBCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAid2Vi
a2l0d2VidXNlcm1lZGlhcmVxdWVzdC5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKwor
I2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYVJlcXVlc3QuaCIKKyNp
bmNsdWRlICJ3ZWJraXRnbG9iYWxzcHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdHNlY3VyaXR5
b3JpZ2lucHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYWxpc3Rwcml2YXRl
LmgiCisjaW5jbHVkZSAid2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGUuaCIKKyNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKKy8qKgorICogU0VDVElPTjp3ZWJraXR3ZWJ1c2Vy
bWVkaWFyZXF1ZXN0CisgKiBAc2hvcnRfZGVzY3JpcHRpb246IFRoZSBXZWJLaXQncyBVc2VyTWVk
aWEgUmVxdWVzdC4KKyAqIEBUaXRsZTogV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdAorICoKKyAq
IFRoaXMgb2JqZWN0IGNvbnRhaW5zIHRoZSBpbmZvcm1hdGlvbiBvZiBhIG1lZGlhIHJlcXVlc3Qu
CisgKiBJdCBjYW4gYmUgdXNlZCB0byBjaGVjayBpZiB0aGUgcmVxdWVzdCBpcyBhc2tpbmcgZm9y
IGF1ZGlvIGFuZC9vciB2aWRlby4KKyAqCisgKiBTaW5jZTogMi4wCisgKi8KKwordXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKKworc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0
ZSB7CisgICAgUmVmUHRyPFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q+IHVzZXJNZWRpYVJlcXVl
c3Q7Cit9OworCitHX0RFRklORV9UWVBFKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QsIHdlYmtp
dF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0LCBHX1RZUEVfT0JKRUNUKQorCitzdGF0aWMgdm9pZCB3
ZWJraXRXZWJVc2VyTWVkaWFSZXF1ZXN0RmluYWxpemUoR09iamVjdCAqb2JqZWN0KQoreworICAg
IFdFQktJVF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUKG9iamVjdCktPnByaXYtPn5XZWJLaXRXZWJV
c2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSgpOworCisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dl
Yl91c2VyX21lZGlhX3JlcXVlc3RfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKK30K
Kworc3RhdGljIHZvaWQgd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfY2xhc3NfaW5pdChX
ZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3MqIHJlcXVlc3RDbGFzcykKK3sKKyAgICBHT2Jq
ZWN0Q2xhc3MqIGdvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOwor
ICAgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gd2Via2l0V2ViVXNlck1lZGlhUmVxdWVzdEZp
bmFsaXplOworCisgICAgd2Via2l0SW5pdCgpOworCisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2
YXRlKHJlcXVlc3RDbGFzcywgc2l6ZW9mKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRl
KSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2luaXQo
V2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBXZWJLaXRXZWJVc2Vy
TWVkaWFSZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShy
ZXF1ZXN0LCBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFVRVNULCBXZWJLaXRXZWJVc2Vy
TWVkaWFSZXF1ZXN0UHJpdmF0ZSk7CisgICAgcmVxdWVzdC0+cHJpdiA9IHByaXY7CisKKyAgICBu
ZXcgKHByaXYpIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRlKCk7Cit9CisKKy8qKgor
ICogd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNfYXVkaW86CisgKiBAcmVxdWVz
dDogdGhlICNXZWJLaXRVc2VyTWVkaWFSZXF1ZXN0IGl0c2VsZi4KKyAqCisgKiBJbmRpY2F0ZXMg
dGhlIGNvbnRlbnQgb2YgYW4gVXNlck1lZGlhUmVxdWVzdC4KKyAqCisgKiBSZXR1cm4gdmFsdWU6
ICVUUlVFIGlmIHRoZSByZXF1ZXN0IGNvbnRhaW5zIGFuIGF1ZGlvIHJlcXVlc3Qgb3IgJUZBTFNF
IGlmIG90aGVyd2lzZS4KKyAqCisgKiBTaW5jZTogMi4wCisgKi8KK2dib29sZWFuIHdlYmtpdF93
ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRzX2F1ZGlvKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVl
c3QqIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9V
U0VSX01FRElBX1JFUVVFU1QocmVxdWVzdCksIEZBTFNFKTsKKworICAgIHJldHVybiBjb3JlKHJl
cXVlc3QpLT5hdWRpbygpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1
ZXN0X3dhbnRzX3ZpZGVvOgorICogQHJlcXVlc3Q6IHRoZSAjV2ViS2l0VXNlck1lZGlhUmVxdWVz
dCBpdHNlbGYuCisgKgorICogSW5kaWNhdGVzIHRoZSBjb250ZW50IG9mIGFuIFVzZXJNZWRpYVJl
cXVlc3QuCisgKgorICogUmV0dXJuIHZhbHVlOiAlVFJVRSBpZiB0aGUgcmVxdWVzdCBjb250YWlu
cyBhIHZpZGVvIHJlcXVlc3Qgb3IgJUZBTFNFIGlmIG90aGVyd2lzZS4KKyAqCisgKiBTaW5jZTog
Mi4wCisgKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRzX3Zp
ZGVvKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX1JFUVVFU1QocmVxdWVzdCksIEZB
TFNFKTsKKworICAgIHJldHVybiBjb3JlKHJlcXVlc3QpLT52aWRlbygpOworfQorCisvKioKKyAq
IHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2dldF9zZWN1cml0eV9vcmlnaW46CisgKiBA
cmVxdWVzdDogdGhlICNXZWJLaXRVc2VyTWVkaWFSZXF1ZXN0IGl0c2VsZi4KKyAqCisgKiBSZXR1
cm5zIHRoZSBzZWN1cml0eSBvcmlnaW4gb2YgdGhlIE1lZGlhIFJlcXVlc3QuCisgKgorICogUmV0
dXJuIHZhbHVlOiAodHJhbnNmZXIgbm9uZSk6IHRoZSBzZWN1cml0eSBvcmlnaW4gb2YgdGhlIG1l
ZGlhIHJlcXVlc3QuCisgKgorICogU2luY2U6IDIuMAorICovCitXZWJLaXRTZWN1cml0eU9yaWdp
biogd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZ2V0X3NlY3VyaXR5X29yaWdpbihXZWJL
aXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9SRVFVRVNUKHJlcXVlc3QpLCAwKTsKKworICAg
IHJldHVybiBraXQoY29yZShyZXF1ZXN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1
cml0eU9yaWdpbigpKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVz
dF9zdWNjZWVkOgorICogQHdlYlJlcXVlc3Q6IGEgI1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QK
KyAqIEBhdWRpb01lZGlhTGlzdDogYSAjV2ViS2l0V2ViVXNlck1lZGlhTGlzdCBjb250YWluaW5n
IGF1ZGlvIGRldmljZXMKKyAqIEB2aWRlb01lZGlhTGlzdDogYSAjV2ViS2l0V2ViVXNlck1lZGlh
TGlzdCBjb250YWluaW5nIHZpZGVvIGRldmljZXMKKyAqCisgKiBUaGlzIG1ldGhvZCBzaG91bGQg
YmUgY2FsbGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBhZnRlciB0aGUgdXNlciBzZWxlY3RzCisgKiBh
IG1lZGlhIGRldmljZSBhbmQgYWNjZXB0cyBhbiBtZWRpYSByZXF1ZXN0CisgKgorICogU2luY2U6
IDIuMAorICoqLwordm9pZCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9zdWNjZWVkKFdl
YktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIHdlYlJlcXVlc3QsIFdlYktpdFdlYlVzZXJNZWRpYUxp
c3QqIGF1ZGlvTWVkaWFMaXN0LCBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiB2aWRlb01lZGlhTGlz
dCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9SRVFV
RVNUKHdlYlJlcXVlc3QpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVVNF
Ul9NRURJQV9MSVNUKGF1ZGlvTWVkaWFMaXN0KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJL
SVRfSVNfV0VCX1VTRVJfTUVESUFfTElTVCh2aWRlb01lZGlhTGlzdCkpOworCisgICAgV2ViQ29y
ZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcyA9IGNvcmUoYXVkaW9NZWRp
YUxpc3QpOworICAgIFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2aWRlb1NvdXJj
ZXMgPSBjb3JlKHZpZGVvTWVkaWFMaXN0KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSBhdWRpb1Nv
dXJjZXMuc2l6ZSgpIC0gMTsgaSAhPSAoc2l6ZV90KSAtMTsgLS1pKQorICAgICAgICBpZiAoIXdl
YmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2lzX2l0ZW1fc2VsZWN0ZWQoYXVkaW9NZWRpYUxpc3Qs
IGkpKQorICAgICAgICAgICAgYXVkaW9Tb3VyY2VzLnJlbW92ZShpKTsKKworICAgIGZvciAoc2l6
ZV90IGkgPSB2aWRlb1NvdXJjZXMuc2l6ZSgpIC0gMTsgaSAhPSAoc2l6ZV90KSAtMTsgLS1pKQor
ICAgICAgICBpZiAoIXdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2lzX2l0ZW1fc2VsZWN0ZWQo
dmlkZW9NZWRpYUxpc3QsIGkpKQorICAgICAgICAgICAgdmlkZW9Tb3VyY2VzLnJlbW92ZShpKTsK
KworICAgIGNvcmUod2ViUmVxdWVzdCktPnN1Y2NlZWQoYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJj
ZXMpOworCit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X3JlamVjdF91c2VyX21lZGlhX3Jl
cXVlc3Q6CisgKiBAd2ViUmVxdWVzdDogYSAjV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdAorICoK
KyAqIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQgYnkgdGhlIGFwcGxpY2F0aW9uIHdoZW4g
dGhlIHVzZXIgcmVqZWN0ZWQgYSB1c2VyTWVkaWEgcmVxdWVzdC4KKyAqCisgKiBTaW5jZTogMi4w
CisgKiovCit2b2lkIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2ZhaWwoV2ViS2l0V2Vi
VXNlck1lZGlhUmVxdWVzdCogd2ViUmVxdWVzdCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdF
QktJVF9JU19XRUJfVVNFUl9NRURJQV9SRVFVRVNUKHdlYlJlcXVlc3QpKTsKKyAgICBjb3JlKHdl
YlJlcXVlc3QpLT5mYWlsKCk7Cit9CisKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNvcmU6
OlVzZXJNZWRpYVJlcXVlc3QqIGNvcmUoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCogcmVxdWVz
dCkKK3sKKyAgICBBU1NFUlQoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX1JFUVVFU1QocmVxdWVz
dCkpOworCisgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPnVzZXJNZWRpYVJlcXVlc3QuZ2V0KCk7
Cit9CisKK1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIGtpdE5ldyhXZWJDb3JlOjpVc2VyTWVk
aWFSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIEFTU0VSVChyZXF1ZXN0KTsKKworICAgIFdlYktp
dFdlYlVzZXJNZWRpYVJlcXVlc3QqIHdlYlJlcXVlc3QgPSBXRUJLSVRfV0VCX1VTRVJfTUVESUFf
UkVRVUVTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCwg
TlVMTCkpOworICAgIHdlYlJlcXVlc3QtPnByaXYtPnVzZXJNZWRpYVJlcXVlc3QgPSByZXF1ZXN0
OworCisgICAgcmV0dXJuIHdlYlJlcXVlc3Q7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShN
RURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2VidXNlcm1lZGlhcmVxdWVzdC5oIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnVzZXJtZWRpYXJlcXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmIxZTBmN2M1NDE0N2I1MGJhMDdmMWRi
ZTY4YjQ1YjU2ZWRkOWE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuaApAQCAtMCwwICsxLDczIEBACisvKgorICog
IENvcHlyaWdodCAoQykgMjAxMiBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisg
KiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9z
dG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworCisjaWZuZGVmIHdlYmtpdHdlYnVzZXJt
ZWRpYXJlcXVlc3RfaAorI2RlZmluZSB3ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0X2gKKworI2lu
Y2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYWxpc3QuaCIKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0
Lmg+CisjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZpbmVzLmg+
CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9S
RVFVRVNUICAgICAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2dldF90eXBl
KCkpCisjZGVmaW5lIFdFQktJVF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUKG9iaikgICAgICAgICAg
ICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9VU0VS
X01FRElBX1JFUVVFU1QsIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QpKQorI2RlZmluZSBXRUJL
SVRfV0VCX1VTRVJfTUVESUFfUkVRVUVTVF9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19D
TEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFVRVNULCBX
ZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1VT
RVJfTUVESUFfUkVRVUVTVChvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBF
KChvYmopLCBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFVRVNUKSkKKyNkZWZpbmUgV0VC
S0lUX0lTX1dFQl9VU0VSX01FRElBX1JFUVVFU1RfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tf
Q0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCkp
CisjZGVmaW5lIFdFQktJVF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUX0dFVF9DTEFTUyhvYmopICAo
R19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01F
RElBX1JFUVVFU1QsIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RDbGFzcykpCisKK3R5cGVkZWYg
c3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0IFdlYktpdFdlYlVzZXJNZWRpYVJlcXVl
c3Q7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdENsYXNzIFdlYktp
dFdlYlVzZXJNZWRpYVJlcXVlc3RDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJVc2Vy
TWVkaWFSZXF1ZXN0UHJpdmF0ZSBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZTsKKwor
c3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0IHsKKyAgICBHT2JqZWN0IHBhcmVudF9p
bnN0YW5jZTsKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSAqcHJpdjsKK307
CisKK3N0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdENsYXNzIHsKKyAgICBHT2JqZWN0
Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dlYl91
c2VyX21lZGlhX3JlcXVlc3RfZ2V0X3R5cGUgKHZvaWQpIEdfR05VQ19DT05TVDsKKworV0VCS0lU
X0FQSSBnYm9vbGVhbgord2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNfYXVkaW8g
ICAgICAgICAgICAgIChXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0ICpyZXF1ZXN0KTsKKworV0VC
S0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNfdmlk
ZW8gICAgICAgICAgICAgIChXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0ICpyZXF1ZXN0KTsKKwor
V0VCS0lUX0FQSSBXZWJLaXRTZWN1cml0eU9yaWdpbiAqCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFf
cmVxdWVzdF9nZXRfc2VjdXJpdHlfb3JpZ2luICAgICAgKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVl
c3QgKnJlcXVlc3QpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9y
ZXF1ZXN0X2ZhaWwgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVz
dCAqcmVxdWVzdCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl91c2VyX21lZGlhX3Jl
cXVlc3Rfc3VjY2VlZCAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0
ICp3ZWJSZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBhdWRpb01lZGlhTGlzdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Vi
S2l0V2ViVXNlck1lZGlhTGlzdCogdmlkZW9NZWRpYUxpc3QpOworCitHX0VORF9ERUNMUworCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2Vy
bWVkaWFyZXF1ZXN0cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDE1NjRkN2Q2NjdhOWUxZGJi
Nzc0MWU3MjA4MDI4NGQyYzlmODVhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZS5oCkBAIC0wLDAgKzEs
NDAgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIENvbGxhYm9yYSBMdGQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog
IExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy
ZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisKKyNpZm5kZWYg
d2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGVfaAorI2RlZmluZSB3ZWJraXR3ZWJ1c2Vy
bWVkaWFyZXF1ZXN0cHJpdmF0ZV9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5j
bHVkZSAid2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CitzdHJ1Y3QgVXNlck1lZGlhUmVxdWVzdDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dl
YkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqIGNvcmUoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCop
OworV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCoga2l0TmV3KFdlYkNvcmU6OlVzZXJNZWRpYVJl
cXVlc3QqKTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlm
IC8vIHdlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCA1NTUxNzFhYTFjYjZkZTMzM2EwY2Y2M2Ni
M2FhMzk0ZjM5NGEwNDBkLi4xZWJjY2FmMmU0MWYxNTg2Zjg0MzU4OGEwOTNmNGNmNGEzMGIyNDc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC02Myw2
ICs2Myw3IEBACiAjaW5jbHVkZSAiR2VvbG9jYXRpb25DbGllbnRHdGsuaCIKICNpbmNsdWRlICJH
ZW9sb2NhdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNp
bmNsdWRlICJHdGtNZWRpYUNob29zZXJEaWFsb2cuaCIKICNpbmNsdWRlICJHdGtVdGlsaXRpZXMu
aCIKICNpbmNsdWRlICJHdGtWZXJzaW9uaW5nLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCkBA
IC04Myw2ICs4NCw3IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2lu
Y2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJV
c2VyTWVkaWFDbGllbnRHdGsuaCIKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NRG9jdW1lbnRQ
cml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0ZG93bmxvYWQuaCIKICNpbmNsdWRlICJ3ZWJraXRk
b3dubG9hZHByaXZhdGUuaCIKQEAgLTEwNyw2ICsxMDksOCBAQAogI2luY2x1ZGUgIndlYmtpdHdl
YnJlc291cmNlLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vic2V0dGluZ3Nwcml2YXRlLmgiCiAjaW5j
bHVkZSAid2Via2l0d2VicGx1Z2luZGF0YWJhc2Vwcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0
d2VidXNlcm1lZGlhbGlzdHByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFy
ZXF1ZXN0cHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmgiCiAj
aW5jbHVkZSAid2Via2l0d2Vidmlld3ByaXZhdGUuaCIKICNpbmNsdWRlIDxnZGsvZ2Rra2V5c3lt
cy5oPgpAQCAtMTE5LDYgKzEyMyw3IEBACiAjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25DbGll
bnRHdGsuaCIKICNlbmRpZgogCisKIC8qKgogICogU0VDVElPTjp3ZWJraXR3ZWJ2aWV3CiAgKiBA
c2hvcnRfZGVzY3JpcHRpb246IFRoZSBjZW50cmFsIGNsYXNzIG9mIHRoZSBXZWJLaXRHVEsrIEFQ
SQpAQCAtMjE4LDYgKzIyMyw3IEBAIGVudW0gewogICAgIExFQVZJTkdfRlVMTFNDUkVFTiwKICAg
ICBDT05URVhUX01FTlUsCiAgICAgUlVOX0ZJTEVfQ0hPT1NFUiwKKyAgICBDSE9PU0VfTUVESUFf
REVWSUNFLAogCiAgICAgTEFTVF9TSUdOQUwKIH07CkBAIC0xMTczLDYgKzExNzksNTAgQEAgc3Rh
dGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19yZWFsX3NjcmlwdF9wcm9tcHQoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgV2ViS2kKICAgICByZXR1cm4gVFJVRTsKIH0KIAordHlwZWRlZiBzdHJ1
Y3QgeworICAgIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3Q7CisgICAgV2ViS2l0
V2ViVXNlck1lZGlhTGlzdCogYXVkaW9NZWRpYUxpc3Q7CisgICAgV2ViS2l0V2ViVXNlck1lZGlh
TGlzdCogdmlkZW9NZWRpYUxpc3Q7CisgICAgR3RrTWVkaWFDaG9vc2VyRGlhbG9nKiBkaWFsb2c7
Cit9IFVzZXJNZWRpYVNlbGVjdG9yRGF0YTsKKworc3RhdGljIHZvaWQgbWVkaWFDaG9vc2VyUmVz
cG9uc2VDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwgZ2ludCByZXNwb25zZUlELCBVc2VyTWVk
aWFTZWxlY3RvckRhdGEgKmRhdGEpCit7CisgICAgaWYgKHJlc3BvbnNlSUQgPT0gR1RLX1JFU1BP
TlNFX09LKSB7CisgICAgICAgIGlmIChkYXRhLT5kaWFsb2ctPnNlbGVjdGVkQXVkaW8oKSAhPSAt
MSkKKyAgICAgICAgICAgIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X3NlbGVjdF9pdGVtKGRh
dGEtPmF1ZGlvTWVkaWFMaXN0LCBkYXRhLT5kaWFsb2ctPnNlbGVjdGVkQXVkaW8oKSk7CisKKyAg
ICAgICAgaWYgKGRhdGEtPmRpYWxvZy0+c2VsZWN0ZWRWaWRlbygpICE9IC0xKQorICAgICAgICAg
ICAgd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3Rfc2VsZWN0X2l0ZW0oZGF0YS0+dmlkZW9NZWRp
YUxpc3QsIGRhdGEtPmRpYWxvZy0+c2VsZWN0ZWRWaWRlbygpKTsKKworICAgICAgICB3ZWJraXRf
d2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9zdWNjZWVkKGRhdGEtPnJlcXVlc3QsIGRhdGEtPmF1ZGlv
TWVkaWFMaXN0LCBkYXRhLT52aWRlb01lZGlhTGlzdCk7CisgICAgfSBlbHNlCisgICAgICAgIHdl
YmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2ZhaWwoZGF0YS0+cmVxdWVzdCk7CisKKyAgICBn
X29iamVjdF91bnJlZihkYXRhLT5yZXF1ZXN0KTsKKyAgICBnX29iamVjdF91bnJlZihkYXRhLT5h
dWRpb01lZGlhTGlzdCk7CisgICAgZ19vYmplY3RfdW5yZWYoZGF0YS0+dmlkZW9NZWRpYUxpc3Qp
OworICAgIGRlbGV0ZSBkYXRhLT5kaWFsb2c7CisgICAgZ19mcmVlKGRhdGEpOworfQorCitzdGF0
aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3JlYWxfY2hvb3NlX21lZGlhX2RldmljZShXZWJL
aXRXZWJWaWV3ICp3ZWJWaWV3LCBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0LCBX
ZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBhdWRpb01lZGlhTGlzdCwgV2ViS2l0V2ViVXNlck1lZGlh
TGlzdCogdmlkZW9NZWRpYUxpc3QpCit7CisgICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9IGd0a193
aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQod2ViVmlldykpOworICAgIEd0a01lZGlhQ2hv
b3NlckRpYWxvZyogZGlhbG9nID0gbmV3IEd0a01lZGlhQ2hvb3NlckRpYWxvZyh0b3BsZXZlbCwg
Y29yZShyZXF1ZXN0KSwgY29yZShhdWRpb01lZGlhTGlzdCksIGNvcmUodmlkZW9NZWRpYUxpc3Qp
KTsKKyAgICBHdGtXaWRnZXQqIHdpZGdldCA9IGRpYWxvZy0+d2lkZ2V0KCk7CisgICAgVXNlck1l
ZGlhU2VsZWN0b3JEYXRhKiBkYXRhID0gZ19uZXcoVXNlck1lZGlhU2VsZWN0b3JEYXRhLCAxKTsK
KworICAgIGRhdGEtPnJlcXVlc3QgPSAoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCopIGdfb2Jq
ZWN0X3JlZihyZXF1ZXN0KTsKKyAgICBkYXRhLT5hdWRpb01lZGlhTGlzdCA9IChXZWJLaXRXZWJV
c2VyTWVkaWFMaXN0KikgZ19vYmplY3RfcmVmKGF1ZGlvTWVkaWFMaXN0KTsKKyAgICBkYXRhLT52
aWRlb01lZGlhTGlzdCA9IChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KikgZ19vYmplY3RfcmVmKHZp
ZGVvTWVkaWFMaXN0KTsKKyAgICBkYXRhLT5kaWFsb2cgPSBkaWFsb2c7CisKKyAgICBnX3NpZ25h
bF9jb25uZWN0KHdpZGdldCwgInJlc3BvbnNlIiwgR19DQUxMQkFDSyhtZWRpYUNob29zZXJSZXNw
b25zZUNhbGxiYWNrKSwgZGF0YSk7CisgICAgZGlhbG9nLT5zaG93KCk7CisgICAgcmV0dXJuIFRS
VUU7Cit9CisKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jb25zb2xlX21l
c3NhZ2UoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIqIG1lc3NhZ2UsIHVuc2ln
bmVkIGludCBsaW5lLCBjb25zdCBnY2hhciogc291cmNlSWQpCiB7CiAgICAgZ19tZXNzYWdlKCJj
b25zb2xlIG1lc3NhZ2U6ICVzIEAlZDogJXNcbiIsIHNvdXJjZUlkLCBsaW5lLCBtZXNzYWdlKTsK
QEAgLTI3MjQsNiArMjc3NCwzMiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3Nf
aW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgICAgICAgIFdFQktJ
VF9UWVBFX1ZJRVdQT1JUX0FUVFJJQlVURVMpOwogCiAgICAgLyoqCisgICAgICogV2ViS2l0V2Vi
Vmlldzo6Y2hvb3NlLW1lZGlhLWRldmljZToKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSBvYmplY3Qg
d2hpY2ggcmVjZWl2ZWQgdGhlIHNpZ25hbAorICAgICAqIEByZXF1ZXN0OiB0aGUgI1dlYktpdFdl
YlVzZXJNZWRpYVJxdWVzdCBhdHRyaWJ1dGUgd2hpY2ggZ2VuZXJhdGVkIHRoZSByZXF1ZXN0Lgor
ICAgICAqIEBhdWRpb0xpc3Q6IGEgI1dlYktpdFdlYlVzZXJNZWRpYUxpc3QgY29udGFpbmluZyB0
aGUgYXZhaWxhYmxlIGF1ZGlvIG1lZGlhIG9wdGlvbnMuCisgICAgICogQHZpZGVvTGlzdDogYSAj
V2ViS2l0V2ViVXNlck1lZGlhTGlzdCBjb250YWluaW5nIHRoZSBhdmFpbGFibGUgdmlkZW8gbWVk
aWEgb3B0aW9ucy4KKyAgICAgKgorICAgICAqIFdoZW4gdGhlIGFwcGxpY2F0aW9uIHJlcXVlc3Qg
dXNlck1lZGlhLCB0aGlzIHNpZ25hbCB3aWxsIGJlIGVtaXRlZCB3aXRoIHRoZSByZXF1ZXN0Cisg
ICAgICogaW5mb3JtYXRpb24gYW5kIHRoZSBhdmFpbGFibGUgb3B0aW9ucyB0byBiZSBzZWxlY3Rl
ZC4KKyAgICAgKgorICAgICAqIFRoZW4gdGhlIHVzZXIgaXMgZXhwZWN0ZWQgdG8gY2FsbCBlaXRo
ZXIgd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfc3VjY2VlZCgpIG9yCisgICAgICogd2Vi
a2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZmFpbCgpIHRvIGFjY2VwdCBvciByZWplY3QgdGhl
IHJlcXVlc3QuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4wLjAKKyAgICAgKi8KKyAgICB3ZWJr
aXRfd2ViX3ZpZXdfc2lnbmFsc1tDSE9PU0VfTUVESUFfREVWSUNFXSA9IGdfc2lnbmFsX25ldygi
Y2hvb3NlLW1lZGlhLWRldmljZSIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJW
aWV3Q2xhc3MpLAorICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAgICBH
X1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNzLCBjaG9vc2VfbWVkaWFfZGV2aWNlKSwK
KyAgICAgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9yX3RydWVfaGFuZGxlZCwgMCwKKyAgICAg
ICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX09CSkVDVF9PQkpFQ1RfT0JKRUNULAorICAg
ICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDMsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJf
VVNFUl9NRURJQV9SRVFVRVNULAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVE
SUFfTElTVCwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1QpOwor
CisgICAgLyoqCiAgICAgICogV2ViS2l0V2ViVmlldzo6ZW50ZXJpbmctZnVsbHNjcmVlbjoKICAg
ICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlz
IGVtaXR0ZWQuCiAgICAgICogQGVsZW1lbnQ6IHRoZSAjV2ViS2l0RE9NSFRNTEVsZW1lbnQgd2hp
Y2ggaGFzIHJlcXVlc3RlZCBmdWxsIHNjcmVlbiBkaXNwbGF5LgpAQCAtMjkxMiw2ICsyOTg4LDcg
QEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0Ns
YXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgd2ViVmlld0NsYXNzLT5zY3JpcHRfYWxlcnQgPSB3ZWJr
aXRfd2ViX3ZpZXdfcmVhbF9zY3JpcHRfYWxlcnQ7CiAgICAgd2ViVmlld0NsYXNzLT5zY3JpcHRf
Y29uZmlybSA9IHdlYmtpdF93ZWJfdmlld19yZWFsX3NjcmlwdF9jb25maXJtOwogICAgIHdlYlZp
ZXdDbGFzcy0+c2NyaXB0X3Byb21wdCA9IHdlYmtpdF93ZWJfdmlld19yZWFsX3NjcmlwdF9wcm9t
cHQ7CisgICAgd2ViVmlld0NsYXNzLT5jaG9vc2VfbWVkaWFfZGV2aWNlID0gd2Via2l0X3dlYl92
aWV3X3JlYWxfY2hvb3NlX21lZGlhX2RldmljZTsKICAgICB3ZWJWaWV3Q2xhc3MtPmNvbnNvbGVf
bWVzc2FnZSA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2NvbnNvbGVfbWVzc2FnZTsKICAgICB3ZWJW
aWV3Q2xhc3MtPnNlbGVjdF9hbGwgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9zZWxlY3RfYWxsOwog
ICAgIHdlYlZpZXdDbGFzcy0+Y3V0X2NsaXBib2FyZCA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2N1
dF9jbGlwYm9hcmQ7CkBAIC0zNjI5LDcgKzM3MDYsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
X3ZpZXdfaW5pdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogI2VuZGlmCiAKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQotICAgIHByaXYtPnVzZXJNZWRpYUNsaWVudCA9IGFkb3B0UHRyKG5ldyBV
c2VyTWVkaWFDbGllbnRHdGspOworICAgIHByaXYtPnVzZXJNZWRpYUNsaWVudCA9IGFkb3B0UHRy
KG5ldyBVc2VyTWVkaWFDbGllbnRHdGsod2ViVmlldykpOwogICAgIFdlYkNvcmU6OnByb3ZpZGVV
c2VyTWVkaWFUbyhwcml2LT5jb3JlUGFnZSwgcHJpdi0+dXNlck1lZGlhQ2xpZW50LmdldCgpKTsK
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dmlldy5oIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAppbmRleCA5
Yzg0MjYzYjRiYzA5NDdhNmYwZGY5NWRiMDE3YzUyMzRhMWUyZDllLi43ZDkzNTk0Y2IzOTRmYjEx
NGI3Y2JkYzRhNjM3NDVhZTM0MDA4Yjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmgKQEAgLTQ0LDYgKzQ0LDkgQEAgR19CRUdJTl9ERUNMUwogI2RlZmluZSBXRUJL
SVRfV0VCX1ZJRVdfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChv
YmopLCAgV0VCS0lUX1RZUEVfV0VCX1ZJRVcsIFdlYktpdFdlYlZpZXdDbGFzcykpCiAKIHR5cGVk
ZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSBXZWJLaXRXZWJWaWV3UHJpdmF0ZTsKK3R5
cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0IFdlYktpdFdlYlVzZXJNZWRp
YVJlcXVlc3Q7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhTGlzdCBXZWJLaXRX
ZWJVc2VyTWVkaWFMaXN0OworCiAKIC8qKgogICogV2ViS2l0TmF2aWdhdGlvblJlc3BvbnNlOgpA
QCAtMTU1LDYgKzE1OCwxMiBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdjaGFyICAgICAgICAgICptZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAqZGVmYXVs
dF92YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2NoYXIqICAgICAgICAgICAgICAgKnZhbHVlKTsKKworICAgIGdib29sZWFu
ICAgICAgICAgICAgICAgICAgICgqIGNob29zZV9tZWRpYV9kZXZpY2UpICAgIChXZWJLaXRXZWJW
aWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCAq
cmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViS2l0V2ViVXNlck1lZGlhTGlzdCAgICAqYXVkaW8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdl
YlVzZXJNZWRpYUxpc3QgICAgKnZpZGVvKTsKKwogICAgIGdib29sZWFuICAgICAgICAgICAgICAg
ICAgICgqIGNvbnNvbGVfbWVzc2FnZSkgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2Vi
X3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICptZXNzYWdlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAg
ICAgICAgICAgbGluZV9udW1iZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXRtYXJzaGFsLmxpc3QgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXRtYXJzaGFsLmxpc3QKaW5k
ZXggYjc0Mjg5MDVjODk4M2NmYzc1ZWM1NDQ3NDEzM2NhMjhmNmQ3OTViNC4uOGRkNGJkZWVhYzcy
MmYyMjQ4NDQ0M2U2MzJjMTNhMWI1NDY0OTYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0bWFyc2hhbC5saXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdG1hcnNo
YWwubGlzdApAQCAtMiw2ICsyLDcgQEAgQk9PTEVBTjpFTlVNLElOVAogQk9PTEVBTjpJTlQsSU5U
LFNUUklORwogQk9PTEVBTjpPQkpFQ1QKIEJPT0xFQU46T0JKRUNULE9CSkVDVAorQk9PTEVBTjpP
QkpFQ1QsT0JKRUNULCBPQkpFQ1QKIEJPT0xFQU46T0JKRUNULE9CSkVDVCxCT09MRUFOCiBCT09M
RUFOOk9CSkVDVCxPQkpFQ1QsRU5VTQogQk9PTEVBTjpPQkpFQ1QsT0JKRUNULEVOVU0sQk9PTEVB
TgpAQCAtMTgsNiArMTksNyBAQCBFTlVNOk9CSkVDVCxPQkpFQ1QKIE9CSkVDVDpPQkpFQ1QKIE9C
SkVDVDpTVFJJTkcsU1RSSU5HLFBPSU5URVIKIE9CSkVDVDpWT0lECitWT0lEOk9CSkVDVAogVk9J
RDpPQkpFQ1QsT0JKRUNUCiBWT0lEOk9CSkVDVCxPQkpFQ1QsSU5UCiBWT0lEOk9CSkVDVCxPQkpF
Q1QsT0JKRUNUCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168593</attachid>
            <date>2012-10-14 14:45:46 -0700</date>
            <delta_ts>2012-10-16 13:55:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94373-20121014184437.patch</filename>
            <type>text/plain</type>
            <size>50094</size>
            <attacher name="Danilo de Paula">danilo.eu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMzkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggM2UxYjZhMzJm
NDQ0YTM1NGQ4Nzk5NzdhOTFiOGQ0MjMzNGQxZTA1NS4uZTQ4ZWEwMjQwZDE5MWIzZjc0NTMxMDBj
YTIwYmY0MGZlZjhkZTU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDEy
LTEwLTE0ICBEYW5pbG8gQ2VzYXIgTGVtZXMgZGUgUGF1bGEgIDxkYW5pbG8uY2VzYXJAY29sbGFi
b3JhLmNvLnVrPgorCisgICAgICAgIFtndGtdIGFkZGluZyBtZXRob2RzIGFuZCBzaWduYWxzIGZv
ciB1c2VybWVkaWEgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHdlYmtpdCBhbmQgYnJvd3NlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQzNzMKKworICAg
ICAgICBXaGVuIHRoZSB1c2VyIG1ha2UgYSBnZXRVc2VyTWVkaWEgY2FsbCwgd2VidmlldyB3aWxs
IGVtaXQgYSBzaWdpYWwgKHVzZXItbWVkaWEtcmVxdWVzdGVkKQorICAgICAgICB0byB0aGUgYXBw
bGljYXRpb24gY29udGFpbmluZyB0aGVuIHJlcXVlc3QgaXRzZWxmICh3ZWJraXR3ZWJ1c2VybWVk
aWFyZXF1ZXN0KSBhbmQgdHdvCisgICAgICAgIGxpc3Qgd2l0aCB0aGUgYXZhaWxhYmxlIGF1ZGlv
IGFuZCB2aWRlbyBkZXZpY2VzICh3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0KS4KKworICAgICAgICBU
aGUgYXBwbGljYXRpb24gbXVzdCBzaG93IHRoZSBsaXN0IHRvIHRoZSB1c2VyIGFuZCBhc2sgcGVy
bWlzc2lvbiB0byB1c2Ugb25lIG9mCisgICAgICAgIHRob3NlIGRldmljZXMgKG9yIHJlamVjdCB0
aGUgcmVxdWVzdCkuCisKKyAgICAgICAgSW4gY2FzZSB0aGUgdXNlciBhY2NlcHRzIHRoZSByZXF1
ZXN0LCB0aGUgYXBwbGljYXRpb24gbXVzdCBtYXJrIHRoZSBkZXZpY2UgYXMKKyAgICAgICAgc2Vs
ZWN0ZWQgKHVzaW5nIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X3NlbGVjdF9pdGVtKSBhbmQg
dGhlbiBjYWxsCisgICAgICAgIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3N1Y2NlZWQg
d2hpY2ggd2lsbCBoYW5kbGUgdGhlIHJlcXVlc3QgcHJvcGVybHkuCisKKyAgICAgICAgT24gdGhl
IGNhc2UgdGhlIHVzZXIgcmVqZWN0IHRoZSByZXF1ZXN0LCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFf
cmVxdWVzdF9mYWlsIG11c3QKKyAgICAgICAgYmUgY2FsbGVkLgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6VXNlck1lZGlhQ2xpZW50R3RrOjpVc2VyTWVkaWFDbGllbnRHdGspOgorICAgICAgICAoV2Vi
S2l0OjpVc2VyTWVkaWFDbGllbnRHdGs6OnBhZ2VEZXN0cm95ZWQpOgorICAgICAgICAoV2ViS2l0
OjpVc2VyTWVkaWFDbGllbnRHdGs6OnJlcXVlc3RVc2VyTWVkaWEpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1VzZXJNZWRpYUNsaWVudEd0ay5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChVc2VyTWVkaWFDbGllbnRHdGspOgorICAgICAgICAqIGRvY3Mvd2Via2l0Z3RrLWRvY3Mu
c2dtbDoKKyAgICAgICAgKiBkb2NzL3dlYmtpdGd0ay1zZWN0aW9ucy50eHQ6CisgICAgICAgICog
d2Via2l0L3dlYmtpdC5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0
LmNwcDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGUpOgor
ICAgICAgICAod2Via2l0V2ViVXNlck1lZGlhTGlzdEZpbmFsaXplKToKKyAgICAgICAgKHdlYmtp
dF93ZWJfdXNlcl9tZWRpYV9saXN0X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X3dlYl91
c2VyX21lZGlhX2xpc3RfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlz
dF9nZXRfbGVuZ3RoKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9p
dGVtX25hbWUpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfaXNfaXRlbV9z
ZWxlY3RlZCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9zZWxlY3RfaXRl
bSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAgICAgICAg
KFdlYktpdDo6a2l0TmV3KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlz
dC5oOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0KToKKyAgICAgICAg
KF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0Q2xhc3MpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3
ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgICogd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSk6CisgICAgICAgICh3ZWJraXRX
ZWJVc2VyTWVkaWFSZXF1ZXN0RmluYWxpemUpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21l
ZGlhX3JlcXVlc3RfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFf
cmVxdWVzdF9pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dh
bnRzX2F1ZGlvKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRz
X3ZpZGVvKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2dldF9zZWN1
cml0eV9vcmlnaW4pOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfc3Vj
Y2VlZCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9mYWlsKToKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAoV2ViS2l0
OjpraXROZXcpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0Lmg6
IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QpOgorICAgICAgICAo
X1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RDbGFzcyk6CisgICAgICAgICogd2Via2l0L3dlYmtp
dHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoK
KyAgICAgICAgKG1lZGlhQ2hvb3NlclJlc3BvbnNlQ2FsbGJhY2spOgorICAgICAgICAod2Via2l0
X3dlYl92aWV3X3JlYWxfY2hvb3NlX21lZGlhX2RldmljZSk6CisgICAgICAgICh3ZWJraXRfd2Vi
X3ZpZXdfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfaW5pdCk6CisgICAg
ICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuaDoKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3Q2xh
c3MpOgorICAgICAgICAqIHdlYmtpdG1hcnNoYWwubGlzdDoKKwogMjAxMi0xMC0wMiAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIENoYW5nZSBtb3N0IEdy
YXBoaWNzTGF5ZXI6OmNyZWF0ZSBjYWxscyB0byB1c2UgdGhlIHZlcnNpb24gdGhhdCB0YWtlcyBh
IEdyYXBoaWNzTGF5ZXJGYWN0b3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAz
NDYxZGJiZWY1OTk1MGM4OTcwMDMzZTcyZDc4NTYwNjRjOGYyYmRiLi4xYTBjNzhkNDNjOTExN2Uw
NTE4ODZjMmFmMTMzY2Q0ZjQzZWMxOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
QEAgLTU5NDIsNiArNTk0Miw4IEBAIHdlYmNvcmVndGtfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0RyYWdBbmREcm9wSGVscGVyLmggXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9HdGtJbnB1dE1ldGhvZEZpbHRlci5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9HdGtJbnB1dE1ldGhvZEZpbHRlci5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR3RrTWVkaWFDaG9vc2VyRGlhbG9nLmNwcCBcCisJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0d0a01lZGlhQ2hvb3NlckRpYWxvZy5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0d0a1V0aWxpdGllcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR093
blB0ckd0ay5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0
a01lZGlhQ2hvb3NlckRpYWxvZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3Rr
TWVkaWFDaG9vc2VyRGlhbG9nLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NGFhMmQ5N2FlZmM0ZjEyZDk2NzM2
OTliMTZkNGI2ZDc5MWNjNmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0d0a01lZGlhQ2hvb3NlckRpYWxvZy5jcHAKQEAgLTAsMCArMSwxNTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQ29sbGFib3JhLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiR3RrTWVkaWFDaG9vc2VyRGlhbG9nLmgiCisKKyNpbmNsdWRlICJNZWRpYVN0cmVh
bVNvdXJjZS5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYVJlcXVlc3QuaCIKKworI2luY2x1ZGUgPGds
aWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHdGtNZWRpYUNob29zZXJEaWFs
b2c6Okd0a01lZGlhQ2hvb3NlckRpYWxvZyhHdGtXaWRnZXQqIHBhcmVudCwgVXNlck1lZGlhUmVx
dWVzdCogcmVxdWVzdCwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNl
LCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2UpCisgICAgOiBtX2Rp
YWxvZygwKQorICAgICwgbV9hdWRpb0NvbWJvKDApCisgICAgLCBtX3ZpZGVvQ29tYm8oMCkKK3sK
KyAgICBHdGtXaWRnZXQqIHZib3g7CisgICAgR3RrV2lkZ2V0KiBhdWRpb01lc3NhZ2UgPSAwOwor
ICAgIEd0a1dpZGdldCogdmlkZW9NZXNzYWdlID0gMDsKKyAgICBnYm9vbGVhbiB3YW50c0F1ZGlv
ID0gcmVxdWVzdC0+YXVkaW8oKTsKKyAgICBnYm9vbGVhbiB3YW50c1ZpZGVvID0gcmVxdWVzdC0+
dmlkZW8oKTsKKyAgICBnaW50IGF1ZGlvTGlzdExlbmd0aCA9IGF1ZGlvU291cmNlLnNpemUoKTsK
KyAgICBnaW50IHZpZGVvTGlzdExlbmd0aCA9IHZpZGVvU291cmNlLnNpemUoKTsKKyAgICBnYm9v
bGVhbiBoYXNBdWRpbyA9IChhdWRpb0xpc3RMZW5ndGggPiAwKTsKKyAgICBnYm9vbGVhbiBoYXNW
aWRlbyA9ICh2aWRlb0xpc3RMZW5ndGggPiAwKTsKKyAgICBnaW50IGkgPSAwOworCisgICAgbV9k
aWFsb2cgPSBndGtfZGlhbG9nX25ld193aXRoX2J1dHRvbnMoXygiVXNlciBNZWRpYSBTZWxlY3Rv
ciIpLAorICAgICAgICBwYXJlbnQ/IEdUS19XSU5ET1cocGFyZW50KSA6IDAsCisgICAgICAgIEdU
S19ESUFMT0dfREVTVFJPWV9XSVRIX1BBUkVOVCwKKyAgICAgICAgR1RLX1NUT0NLX0NBTkNFTCwK
KyAgICAgICAgR1RLX1JFU1BPTlNFX0NBTkNFTCwKKyAgICAgICAgR1RLX1NUT0NLX09LLAorICAg
ICAgICBHVEtfUkVTUE9OU0VfT0ssCisgICAgICAgIDApOworCisgICAgZ3RrX3dpbmRvd19zZXRf
cmVzaXphYmxlKEdUS19XSU5ET1cobV9kaWFsb2cpLCBGQUxTRSk7CisgICAgZ3RrX2NvbnRhaW5l
cl9zZXRfYm9yZGVyX3dpZHRoKEdUS19DT05UQUlORVIobV9kaWFsb2cpLCA1KTsKKworICAgIEd0
a1dpZGdldCogY29udGVudEFyZWEgPSBndGtfZGlhbG9nX2dldF9jb250ZW50X2FyZWEoR1RLX0RJ
QUxPRyhtX2RpYWxvZykpOworICAgIGd0a19ib3hfc2V0X3NwYWNpbmcoR1RLX0JPWChjb250ZW50
QXJlYSksIDIpOworCisgICAgR3RrV2lkZ2V0KiBhY3Rpb25BcmVhID0gZ3RrX2RpYWxvZ19nZXRf
YWN0aW9uX2FyZWEoR1RLX0RJQUxPRyhtX2RpYWxvZykpOworICAgIGd0a19jb250YWluZXJfc2V0
X2JvcmRlcl93aWR0aChHVEtfQ09OVEFJTkVSKGFjdGlvbkFyZWEpLCA1KTsKKyAgICBndGtfYm94
X3NldF9zcGFjaW5nKEdUS19CT1goYWN0aW9uQXJlYSksIDYpOworCisgICAgaWYgKCFoYXNBdWRp
byAmJiAhaGFzVmlkZW8pIHsKKyAgICAgICAgYXVkaW9NZXNzYWdlID0gZ3RrX2xhYmVsX25ldyhf
KCJObyB1c2VyIG1lZGlhIGF2YWlsYWJsZSIpKTsKKyAgICAgICAgZ3RrX21pc2Nfc2V0X2FsaWdu
bWVudChHVEtfTUlTQyhhdWRpb01lc3NhZ2UpLCAwLCAwKTsKKyAgICAgICAgZ3RrX2JveF9wYWNr
X3N0YXJ0KEdUS19CT1goY29udGVudEFyZWEpLCBhdWRpb01lc3NhZ2UsIEZBTFNFLCBGQUxTRSwg
Nik7CisgICAgfSBlbHNlIGlmICh3YW50c0F1ZGlvKSB7CisgICAgICAgIGF1ZGlvTWVzc2FnZSA9
IGd0a19sYWJlbF9uZXcoaGFzQXVkaW8gPyBfKCJTZWxlY3QgZnJvbSBhdmFpbGFibGUgdXNlciBh
dWRpbyIpIDogXygiTm8gdXNlciBhdWRpbyBhdmFpbGFibGUiKSk7CisgICAgICAgIGd0a19taXNj
X3NldF9hbGlnbm1lbnQoR1RLX01JU0MoYXVkaW9NZXNzYWdlKSwgMCwgMCk7CisgICAgICAgIGd0
a19ib3hfcGFja19zdGFydChHVEtfQk9YKGNvbnRlbnRBcmVhKSwgYXVkaW9NZXNzYWdlLCBGQUxT
RSwgRkFMU0UsIDYpOworICAgIH0KKworICAgIGlmIChoYXNBdWRpbykgeworICAgICAgICBHdGtX
aWRnZXQqIGZyYW1lID0gZ3RrX2ZyYW1lX25ldyhfKCJBdWRpbyIpKTsKKyNpZiBHVEtfQ0hFQ0tf
VkVSU0lPTigzLCAyLCAwKQorICAgICAgICB2Ym94ID0gZ3RrX2JveF9uZXcoR1RLX09SSUVOVEFU
SU9OX1ZFUlRJQ0FMLCAwKTsKKyNlbHNlCisgICAgICAgIHZib3ggPSBndGtfdmJveF9uZXcoVFJV
RSwgMCk7CisjZW5kaWYKKyAgICAgICAgZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoKEdU
S19DT05UQUlORVIodmJveCksIDMpOworCisgICAgICAgIG1fYXVkaW9Db21ibyA9IGd0a19jb21i
b19ib3hfdGV4dF9uZXcoKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGF1ZGlvTGlzdExlbmd0
aDsgaSsrKQorICAgICAgICAgICAgZ3RrX2NvbWJvX2JveF90ZXh0X2FwcGVuZF90ZXh0KEdUS19D
T01CT19CT1hfVEVYVChtX2F1ZGlvQ29tYm8pLCBnX3N0cmR1cChhdWRpb1NvdXJjZVtpXS0+bmFt
ZSgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgZ3RrX2NvbWJvX2JveF9zZXRfYWN0aXZlKEdU
S19DT01CT19CT1gobV9hdWRpb0NvbWJvKSwgMCk7CisgICAgICAgIGd0a19jb250YWluZXJfYWRk
KEdUS19DT05UQUlORVIodmJveCksIG1fYXVkaW9Db21ibyk7CisKKyAgICAgICAgZ3RrX2NvbnRh
aW5lcl9hZGQoR1RLX0NPTlRBSU5FUihmcmFtZSksIHZib3gpOworICAgICAgICBndGtfYm94X3Bh
Y2tfc3RhcnQoR1RLX0JPWChjb250ZW50QXJlYSksIGZyYW1lLCBGQUxTRSwgRkFMU0UsIDMpOwor
ICAgIH0KKworICAgIGlmICh3YW50c1ZpZGVvKSB7CisgICAgICAgIGlmIChoYXNWaWRlbykgewor
ICAgICAgICAgICAgdmlkZW9NZXNzYWdlID0gZ3RrX2xhYmVsX25ldyhfKCJTZWxlY3QgZnJvbSBh
dmFpbGFibGUgdXNlciB2aWRlbyIpKTsKKyAgICAgICAgfSBlbHNlIGlmICghd2FudHNBdWRpbyB8
fCBoYXNBdWRpbykKKyAgICAgICAgICAgIHZpZGVvTWVzc2FnZSA9IGd0a19sYWJlbF9uZXcoXygi
Tm8gdXNlciB2aWRlbyBhdmFpbGFibGUiKSk7CisgICAgICAgIGlmICh2aWRlb01lc3NhZ2UpIHsK
KyAgICAgICAgICAgIGd0a19taXNjX3NldF9hbGlnbm1lbnQoR1RLX01JU0ModmlkZW9NZXNzYWdl
KSwgMCwgMCk7CisgICAgICAgICAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChjb250ZW50
QXJlYSksIHZpZGVvTWVzc2FnZSwgRkFMU0UsIEZBTFNFLCA2KTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGlmIChoYXNWaWRlbykgeworICAgICAgICBHdGtXaWRnZXQqIGZyYW1lID0gZ3RrX2Zy
YW1lX25ldyhfKCJWaWRlbyIpKTsKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCAyLCAwKQorICAg
ICAgICB2Ym94ID0gZ3RrX2JveF9uZXcoR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCAwKTsKKyNl
bHNlCisgICAgICAgIHZib3ggPSBndGtfdmJveF9uZXcoVFJVRSwgMCk7CisjZW5kaWYKKyAgICAg
ICAgZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoKEdUS19DT05UQUlORVIodmJveCksIDMp
OworCisgICAgICAgIG1fdmlkZW9Db21ibyA9IGd0a19jb21ib19ib3hfdGV4dF9uZXcoKTsKKyAg
ICAgICAgZm9yIChpID0gMDsgaSA8IHZpZGVvTGlzdExlbmd0aDsgaSsrKQorICAgICAgICAgICAg
Z3RrX2NvbWJvX2JveF90ZXh0X2FwcGVuZF90ZXh0KEdUS19DT01CT19CT1hfVEVYVChtX3ZpZGVv
Q29tYm8pLCBnX3N0cmR1cCh2aWRlb1NvdXJjZVtpXS0+bmFtZSgpLnV0ZjgoKS5kYXRhKCkpKTsK
KyAgICAgICAgZ3RrX2NvbWJvX2JveF9zZXRfYWN0aXZlKEdUS19DT01CT19CT1gobV92aWRlb0Nv
bWJvKSwgMCk7CisgICAgICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIodmJveCks
IG1fdmlkZW9Db21ibyk7CisKKyAgICAgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5F
UihmcmFtZSksIHZib3gpOworICAgICAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChjb250
ZW50QXJlYSksIGZyYW1lLCBGQUxTRSwgRkFMU0UsIDMpOworICAgIH0KK30KKworR3RrTWVkaWFD
aG9vc2VyRGlhbG9nOjp+R3RrTWVkaWFDaG9vc2VyRGlhbG9nKCkKK3sKKyAgICBndGtfd2lkZ2V0
X2Rlc3Ryb3kobV9kaWFsb2cpOworfQorCitpbnQgR3RrTWVkaWFDaG9vc2VyRGlhbG9nOjpzZWxl
Y3RlZEF1ZGlvKCkKK3sKKyAgICBpZiAobV9hdWRpb0NvbWJvKQorICAgICAgICByZXR1cm4gZ3Rr
X2NvbWJvX2JveF9nZXRfYWN0aXZlKEdUS19DT01CT19CT1gobV9hdWRpb0NvbWJvKSk7CisKKyAg
ICByZXR1cm4gLTE7Cit9CisKK2ludCBHdGtNZWRpYUNob29zZXJEaWFsb2c6OnNlbGVjdGVkVmlk
ZW8oKQoreworICAgIGlmIChtX3ZpZGVvQ29tYm8pCisgICAgICAgIHJldHVybiBndGtfY29tYm9f
Ym94X2dldF9hY3RpdmUoR1RLX0NPTUJPX0JPWChtX3ZpZGVvQ29tYm8pKTsKKworICAgIHJldHVy
biAtMTsKK30KKwordm9pZCBHdGtNZWRpYUNob29zZXJEaWFsb2c6OnNob3coKQoreworICAgIGd0
a193aWRnZXRfc2hvd19hbGwobV9kaWFsb2cpOworfQorCitHdGtXaWRnZXQqIEd0a01lZGlhQ2hv
b3NlckRpYWxvZzo6d2lkZ2V0KCkKK3sKKyAgICByZXR1cm4gbV9kaWFsb2c7Cit9CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtNZWRpYUNob29zZXJEaWFs
b2cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtNZWRpYUNob29zZXJEaWFsb2cu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44YWYyNDZlMmM2M2M2MTZiZjE1MTQyNTFmYjI1NGUwZjc4MGYzNWUyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a01lZGlhQ2hv
b3NlckRpYWxvZy5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
Q29sbGFib3JhLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqLworCisjaWZuZGVmIEd0a01lZGlhQ2hvb3NlckRpYWxvZ19oCisjZGVmaW5lIEd0a01l
ZGlhQ2hvb3NlckRpYWxvZ19oCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2lu
Y2x1ZGUgIlVzZXJNZWRpYVJlcXVlc3QuaCIKKworI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNl
Lmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgR3RrTWVkaWFDaG9vc2VyRGlhbG9nIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShHdGtNZWRpYUNob29zZXJEaWFsb2cpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
CitwdWJsaWM6CisgICAgR3RrTWVkaWFDaG9vc2VyRGlhbG9nKEd0a1dpZGdldCAqcGFyZW50LCBV
c2VyTWVkaWFSZXF1ZXN0KiwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImLCBjb25zdCBN
ZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYpOworICAgIH5HdGtNZWRpYUNob29zZXJEaWFsb2coKTsK
KworICAgIHZvaWQgc2hvdygpOworICAgIGludCBzZWxlY3RlZEF1ZGlvKCk7CisgICAgaW50IHNl
bGVjdGVkVmlkZW8oKTsKKyAgICBHdGtXaWRnZXQqIHdpZGdldCgpOworCitwcml2YXRlOgorCisg
ICAgR3RrV2lkZ2V0ICptX2RpYWxvZzsKKyAgICBHdGtXaWRnZXQgKm1fYXVkaW9Db21ibzsKKyAg
ICBHdGtXaWRnZXQgKm1fdmlkZW9Db21ibzsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEd0a01lZGlhQ2hvb3NlckRpYWxvZ19oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxl
LmFtCmluZGV4IDViZTllYjU0OGVlMDIzZDE0MGEzNWQxNjYyNDMzZDU4MWJiNzFiODMuLmZiYTg0
YmMwZjEwMmYzYjcyNDliZDJlMzMzZTA4YmRiMTlhOTE0YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2Vm
aWxlLmFtCkBAIC0xNDIsNiArMTQyLDggQEAgd2Via2l0Z3RrX3N0YXRpY19oX2FwaSArPSBcCiAJ
JChzcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lv
bi5oIFwKIAkkKHNyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnJlc291
cmNlLmggXAogCSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0
dGluZ3MuaCBcCisJJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1
c2VybWVkaWFsaXN0LmggXAorCSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2VidXNlcm1lZGlhcmVxdWVzdC5oIFwKIAkkKHNyY2RpcikvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmggXAogCSQoc3JjZGlyKS9Tb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCiAKQEAgLTI3Niw2ICsyNzgsMTAgQEAgd2Vi
a2l0Z3RrX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJw
bHVnaW5kYXRhYmFzZXByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnNldHRpbmdzLmNwcCBcCiAJU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNl
dHRpbmdzcHJpdmF0ZS5oIFwKKwlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNl
cm1lZGlhbGlzdC5jcHAgXAorCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2Vy
bWVkaWFsaXN0cHJpdmF0ZS5oIFwKKwlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dXNlcm1lZGlhcmVxdWVzdC5jcHAgXAorCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vidmlldy5jcHAgXAogCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3cHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93
ZmVhdHVyZXMuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L1VzZXJNZWRpYUNsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9Vc2VyTWVkaWFDbGllbnRHdGsuY3BwCmluZGV4IDM5MTY3NmFmYjVhZjlmMDc1ZWIyNmIw
NjlhYzkzNWNmMGViZjNjYzYuLjU3N2Y1YTAzZjU2YjQzNWY4NWZlNjA3M2MwYTQyMjIxYzBmZTdm
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1VzZXJNZWRp
YUNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVXNl
ck1lZGlhQ2xpZW50R3RrLmNwcApAQCAtMjIsMTUgKzIyLDE2IEBACiAjaW5jbHVkZSAiVXNlck1l
ZGlhQ2xpZW50R3RrLmgiCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotI2luY2x1ZGUgIk1l
ZGlhU3RyZWFtU291cmNlLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRl
ICJVc2VyTWVkaWFSZXF1ZXN0LmgiCisjaW5jbHVkZSAid2Via2l0d2VidXNlcm1lZGlhbGlzdHBy
aXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZS5oIgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVVzZXJN
ZWRpYUNsaWVudEd0azo6VXNlck1lZGlhQ2xpZW50R3RrKCkKK1VzZXJNZWRpYUNsaWVudEd0azo6
VXNlck1lZGlhQ2xpZW50R3RrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCisgICAgOiBtX3dlYlZp
ZXcod2ViVmlldykKIHsKIH0KIApAQCAtNDAsMTIgKzQxLDEyIEBAIFVzZXJNZWRpYUNsaWVudEd0
azo6flVzZXJNZWRpYUNsaWVudEd0aygpCiAKIHZvaWQgVXNlck1lZGlhQ2xpZW50R3RrOjpwYWdl
RGVzdHJveWVkKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCiB2b2lkIFVzZXJNZWRp
YUNsaWVudEd0azo6cmVxdWVzdFVzZXJNZWRpYShXVEY6OlBhc3NSZWZQdHI8VXNlck1lZGlhUmVx
dWVzdD4gcHJwUmVxdWVzdCwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291
cmNlLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2UpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gcmVxdWVzdCA9
IHBycFJlcXVlc3Q7CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fd2ViVmlldywgImNob29z
ZS1tZWRpYS1kZXZpY2UiLCBraXROZXcocmVxdWVzdC5nZXQoKSksIGtpdE5ldyhhdWRpb1NvdXJj
ZSksIGtpdE5ldyh2aWRlb1NvdXJjZSkpOwogfQogCiB2b2lkIFVzZXJNZWRpYUNsaWVudEd0azo6
Y2FuY2VsVXNlck1lZGlhUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50R3Rr
LmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Vc2VyTWVkaWFDbGllbnRHdGsu
aAppbmRleCAwMzYyYTRhM2QwMjMzMTUxY2EwMTUzMTQzZDQ1NmRjYzFhNGE2MDMzLi45NTcwMGVm
YjM1MzY5MzhlYmRjZDM2NDY3ZDNkZWEyM2RhMzczYjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Vc2VyTWVkaWFDbGllbnRHdGsuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Vc2VyTWVkaWFDbGllbnRHdGsuaApAQCAtMjIsMTgg
KzIyLDI5IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSAiTWVkaWFT
dHJlYW1Tb3VyY2UuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFDbGllbnQuaCIKIAordHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdFdlYlZpZXcgV2ViS2l0V2ViVmlldzsKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgVXNlck1lZGlhUmVxdWVzdDsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFVzZXJNZWRpYUNsaWVudEd0ayA6IHB1YmxpYyBXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnQg
ewogcHVibGljOgotICAgIFVzZXJNZWRpYUNsaWVudEd0aygpOworICAgIFVzZXJNZWRpYUNsaWVu
dEd0ayhXZWJLaXRXZWJWaWV3Kik7CiAgICAgdmlydHVhbCB+VXNlck1lZGlhQ2xpZW50R3RrKCk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgpOworCiAgICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RVc2VyTWVkaWEoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVl
c3Q+LCBjb25zdCBXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYsIGNvbnN0IFdlYkNv
cmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJik7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFVz
ZXJNZWRpYVJlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCopOworCitwcml2YXRlOgor
ICAgIFdlYktpdFdlYlZpZXcqIG1fd2ViVmlldzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJraXRndGstZG9jcy5zZ21s
IGIvU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJraXRndGstZG9jcy5zZ21sCmluZGV4IDcyMTA2
NTIyZmI1YmFiYThiMDA5ZmUzNTQ0YjlhZGYyM2ZjYmIxOTguLjVhM2FiYjNmNjcxOGU1MTVhY2Qz
MzEwOWUxNGZlOWZlOWEwNGMzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3Mv
d2Via2l0Z3RrLWRvY3Muc2dtbAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzL3dlYmtpdGd0
ay1kb2NzLnNnbWwKQEAgLTMzLDYgKzMzLDggQEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwv
d2Via2l0ZG93bmxvYWQueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dlYmtpdHZp
ZXdwb3J0YXR0cmlidXRlcy54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvd2Via2l0
aGl0dGVzdHJlc3VsdC54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvd2Via2l0d2Vi
dXNlcm1lZGlhbGlzdC54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvd2Via2l0d2Vi
dXNlcm1lZGlhcmVxdWVzdC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvd2Via2l0
d2VicGx1Z2luLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC93ZWJraXR3ZWJwbHVn
aW5kYXRhYmFzZS54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvd2Via2l0c291cGF1
dGhkaWFsb2cueG1sIi8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzL3dlYmtp
dGd0ay1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzL3dlYmtpdGd0ay1zZWN0
aW9ucy50eHQKaW5kZXggYjcwN2JmODNkNzExYTBjMWUxNzdhYjY0ZjE0NzZmNGMxZTBmYmU3YS4u
Y2UxMTliODhjYTQzODZjOTY4NmY4NzRmZjRjNmEzZWU0YWE3MTY5MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJraXRndGstc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL2RvY3Mvd2Via2l0Z3RrLXNlY3Rpb25zLnR4dApAQCAtNjg2LDYgKzY4Niw0OSBA
QCBXZWJLaXRJY29uRGF0YWJhc2VQcml2YXRlCiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgorPEZJ
TEU+d2Via2l0d2VidXNlcm1lZGlhbGlzdDwvRklMRT4KKzxUSVRMRT5XZWJLaXRXZWJVc2VyTWVk
aWFMaXN0PC9USVRMRT4KK1dlYktpdFdlYlVzZXJNZWRpYUxpc3QKK3dlYmtpdF93ZWJfdXNlcl9t
ZWRpYV9saXN0X2dldF9sZW5ndGgKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9pdGVt
X25hbWUKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2lzX2l0ZW1fc2VsZWN0ZWQKK3dlYmtp
dF93ZWJfdXNlcl9tZWRpYV9saXN0X3NlbGVjdF9pdGVtCis8U1VCU0VDVElPTiBTdGFuZGFyZD4K
K1dFQktJVF9JU19XRUJfVVNFUl9NRURJQV9MSVNUCitXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFf
TElTVF9DTEFTUworV0VCS0lUX1dFQl9VU0VSX01FRElBX0xJU1QKK1dFQktJVF9XRUJfVVNFUl9N
RURJQV9MSVNUX0NMQVNTCitXRUJLSVRfV0VCX1VTRVJfTUVESUFfTElTVF9HRVRfQ0xBU1MKK1dF
QktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1QKKzxTVUJTRUNUSU9OIFByaXZhdGU+CitXZWJL
aXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZQorV2ViS2l0V2ViVXNlck1lZGlhTGlzdENsYXNzCit3
ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfdHlwZQorPC9TRUNUSU9OPgorCis8U0VDVElP
Tj4KKzxGSUxFPndlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Q8L0ZJTEU+Cis8VElUTEU+V2ViS2l0
V2ViVXNlck1lZGlhUmVxdWVzdDwvVElUTEU+CitXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Cit3
ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9mYWlsCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFf
cmVxdWVzdF9zdWNjZWVkCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF93YW50c19hdWRp
bword2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNfdmlkZW8KK3dlYmtpdF93ZWJf
dXNlcl9tZWRpYV9yZXF1ZXN0X2dldF9zZWN1cml0eV9vcmlnaW4KKzxTVUJTRUNUSU9OIFN0YW5k
YXJkPgorV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX1JFUVVFU1QKK1dFQktJVF9JU19XRUJfVVNF
Ul9NRURJQV9SRVFVRVNUX0NMQVNTCitXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFVRVNU
CitXRUJLSVRfV0VCX1VTRVJfTUVESUFfUkVRVUVTVAorV0VCS0lUX1dFQl9VU0VSX01FRElBX1JF
UVVFU1RfQ0xBU1MKK1dFQktJVF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUX0dFVF9DTEFTUworPFNV
QlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RDbGFzcworV2ViS2l0
V2ViVXNlck1lZGlhUmVxdWVzdFByaXZhdGUKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0
X2dldF90eXBlCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgogPEZJTEU+d2Via2l0ZmF2aWNvbmRh
dGFiYXNlPC9GSUxFPgogPFRJVExFPldlYktpdEZhdmljb25EYXRhYmFzZTwvVElUTEU+CiBXZWJL
aXRGYXZpY29uRGF0YWJhc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXQuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaAppbmRleCBhYTdiOTNk
YmRhOGMyNmRlMjFlOTgyZDM5YzYxNjVmYjhjMmY1ZTc3Li5iZjE2YTI1ZTkyZWQ1NWY5YjIwN2I0
YTcyYmM2M2JiODk2OWYxZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0LmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCkBAIC01MSw2
ICs1MSw4IEBACiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmg+CiAj
aW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnJlc291cmNlLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dl
YmtpdHdlYnNldHRpbmdzLmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxp
c3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5oPgogI2lu
Y2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdl
YndpbmRvd2ZlYXR1cmVzLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NzJkZDRjNjUwNjgzMjBjODBk
ZmE4YTQwYTkyMTliZDhhNGRkNGE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3QuY3BwCkBAIC0wLDAgKzEsMTY3IEBACisv
KgorICogIENvcHlyaWdodCAoQykgMjAxMiBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNl
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYWxpc3QuaCIKKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisKKyNpbmNsdWRlICJ3ZWJraXRnbG9iYWxzcHJpdmF0ZS5oIgorI2luY2x1ZGUg
IndlYmtpdHdlYnVzZXJtZWRpYWxpc3Rwcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgorCisKKy8qKgorICogU0VDVElPTjp3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0CisgKiBA
c2hvcnRfZGVzY3JpcHRpb246IFVzZXJNZWRpYSBMaXN0CisgKiBAVGl0bGU6IFdlYktpdFdlYlVz
ZXJNZWRpYUxpc3QKKyAqCisgKiAjV2ViS2l0V2ViVXNlck1lZGlhTGlzdCBjb250YWlucyBhIGxp
c3Qgb2YKKyAqIGF1ZGlvIG9yIHZpZGVvIHNvdXJjZXMgZnJvbSBhIFdlYlVzZXJNZWRpYVJlcXVl
c3QKKyAqCisgKiBTaW5jZTogMi4wCisgKi8KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwor
c3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZSB7CisgICAgV2ViQ29yZTo6TWVk
aWFTdHJlYW1Tb3VyY2VWZWN0b3Igc291cmNlczsKKyAgICBWZWN0b3I8Ym9vbD4gc291cmNlU2Vs
ZWN0aW9uczsKK307CisKK0dfREVGSU5FX1RZUEUoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCwgd2Vi
a2l0X3dlYl91c2VyX21lZGlhX2xpc3QsIEdfVFlQRV9PQkpFQ1QpCisKK3N0YXRpYyB2b2lkIHdl
YmtpdFdlYlVzZXJNZWRpYUxpc3RGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgV0VC
S0lUX1dFQl9VU0VSX01FRElBX0xJU1Qob2JqZWN0KS0+cHJpdi0+fldlYktpdFdlYlVzZXJNZWRp
YUxpc3RQcml2YXRlKCk7CisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl91c2VyX21lZGlh
X2xpc3RfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQg
d2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfY2xhc3NfaW5pdChXZWJLaXRXZWJVc2VyTWVkaWFM
aXN0Q2xhc3MqIGxpc3RDbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9
IEdfT0JKRUNUX0NMQVNTKGxpc3RDbGFzcyk7CisgICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9
IHdlYmtpdFdlYlVzZXJNZWRpYUxpc3RGaW5hbGl6ZTsKKworICAgIHdlYmtpdEluaXQoKTsKKwor
ICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShsaXN0Q2xhc3MsIHNpemVvZihXZWJLaXRXZWJV
c2VyTWVkaWFMaXN0UHJpdmF0ZSkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3VzZXJf
bWVkaWFfbGlzdF9pbml0KFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGxpc3QpCit7CisgICAgV2Vi
S2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BS
SVZBVEUobGlzdCwgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfTElTVCwgV2ViS2l0V2ViVXNl
ck1lZGlhTGlzdFByaXZhdGUpOworICAgIGxpc3QtPnByaXYgPSBwcml2OworCisgICAgLy8gcGxh
Y2VtZW50IG5ldyBzeW50YXgKKyAgICBuZXcgKHByaXYpIFdlYktpdFdlYlVzZXJNZWRpYUxpc3RQ
cml2YXRlKCk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2xl
bmd0aDoKKyAqIEBsaXN0OiB0aGUgV2ViS2l0V2ViVXNlck1lZGlhTGlzdCBpdHNlbGYKKyAqCisg
KiBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBlbGVtZW50cyBsaXN0LgorICoKKyAqIFJldHVybiB2
YWx1ZTogbnVtYmVyIG9mIGVsZW1lbnRzLgorICoKKyAqIFNpbmNlOiAyLjAKKyAqLworZ3VpbnQg
d2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2xlbmd0aChXZWJLaXRXZWJVc2VyTWVkaWFM
aXN0KiBsaXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVVNF
Ul9NRURJQV9MSVNUKGxpc3QpLCAwKTsKKworICAgIHJldHVybiBjb3JlKGxpc3QpLnNpemUoKTsK
K30KKworCisvKioKKyAqIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9pdGVtX25hbWU6
CisgKiBAbGlzdDogdGhlICNXZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGl0c2VsZgorICogQGluZGV4
OiB0aGUgd2FudGVkIGVsZW1lbnQgaW5kZXguCisgKgorICogUmV0dXJucyB0aGUgZGV2aWNlIG5h
bWUgb2YgdGhlIGVsZW1lbnQuCisgKgorICogUmV0dXJuIHZhbHVlOiB0aGUgZGV2aWNlIGlkIG9m
IHRoZSBAaW5kZXggZ2l2ZW4gZWxlbWVudC4KKyAqCisgKiBTaW5jZTogMi4wCisgKi8KK2NvbnN0
IGdjaGFyKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfaXRlbV9uYW1lKFdlYktpdFdl
YlVzZXJNZWRpYUxpc3QqIGxpc3QsIGd1aW50IGluZGV4KQoreworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9MSVNUKGxpc3QpLCAwKTsKKworICAgIFdl
YkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2VzID0gY29yZShsaXN0KTsKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChpbmRleCA8IHNvdXJjZXMuc2l6ZSgpLCAwKTsKKworICAg
IHJldHVybiBnX3N0cmR1cChzb3VyY2VzW2luZGV4XS0+bmFtZSgpLnV0ZjgoKS5kYXRhKCkpOwor
fQorCisvKioKKyAqIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2lzX2l0ZW1fc2VsZWN0ZWQ6
CisgKiBAbGlzdDogdGhlICNXZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGl0c2VsZgorICogQGluZGV4
OiB0aGUgd2FudGVkIGVsZW1lbnQgaW5kZXguCisgKgorICogSW5kaWNhdGUgaWYgYSBkZXZpY2Ug
aXMgbWFya2VkIGFzIHNlbGVjdGVkLgorICoKKyAqIFJldHVybiB2YWx1ZTogVHJ1ZSBpZiB0aGUg
ZGV2aWNlIHJlcHJlc2VudGVkIGJ5IEBpbmRleCBpcyBtYXJrZWQgYXMgc2VsZWN0ZWQuCisgKgor
ICogU2luY2U6IDIuMAorICovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9p
c19pdGVtX3NlbGVjdGVkKFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGxpc3QsIGd1aW50IGluZGV4
KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9M
SVNUKGxpc3QpLCBGQUxTRSk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoaW5kZXggPCBjb3Jl
KGxpc3QpLnNpemUoKSwgRkFMU0UpOworCisgICAgcmV0dXJuIGxpc3QtPnByaXYtPnNvdXJjZVNl
bGVjdGlvbnNbaW5kZXhdOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0
X3NlbGVjdF9pdGVtOgorICogQGxpc3Q6IHRoZSAjV2ViS2l0V2ViVXNlck1lZGlhTGlzdCBpdHNl
bGYKKyAqIEBpbmRleDogdGhlIHdhbnRlZCBlbGVtZW50IGluZGV4LgorICoKKyAqIE1hcmsgYSBk
ZXZpY2UgYXMgc2VsZWN0ZWVkLgorICoKKyAqIFNpbmNlOiAyLjAKKyAqLwordm9pZCB3ZWJraXRf
d2ViX3VzZXJfbWVkaWFfbGlzdF9zZWxlY3RfaXRlbShXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBs
aXN0LCBndWludCBpbmRleCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJf
VVNFUl9NRURJQV9MSVNUKGxpc3QpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKGluZGV4IDwgY29y
ZShsaXN0KS5zaXplKCkpOworCisgICAgbGlzdC0+cHJpdi0+c291cmNlU2VsZWN0aW9uc1tpbmRl
eF0gPSBUUlVFOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQ29yZTo6TWVkaWFTdHJl
YW1Tb3VyY2VWZWN0b3ImIGNvcmUoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCogbGlzdCkKK3sKKyAg
ICByZXR1cm4gbGlzdC0+cHJpdi0+c291cmNlczsKK30KKworV2ViS2l0V2ViVXNlck1lZGlhTGlz
dCoga2l0TmV3KGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2Vz
KQoreworICAgIFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIHdlYkxpc3QgPSBXRUJLSVRfV0VCX1VT
RVJfTUVESUFfTElTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfTElT
VCwgTlVMTCkpOworICAgIHdlYkxpc3QtPnByaXYtPnNvdXJjZXMgPSBzb3VyY2VzOworICAgIHdl
Ykxpc3QtPnByaXYtPnNvdXJjZVNlbGVjdGlvbnMuZmlsbChGQUxTRSwgc291cmNlcy5zaXplKCkp
OworCisgICAgcmV0dXJuIHdlYkxpc3Q7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dXNlcm1lZGlhbGlzdC5oIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJt
ZWRpYWxpc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZmEyOGU5ODQzZjQ1OWViYmQyMTc3M2RkMGU4NzA2ZmVj
OTE3YWY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnVzZXJtZWRpYWxpc3QuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogIENvcHlyaWdodCAo
QykgMjAxMiBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIx
MTAtMTMwMSAgVVNBCisgKi8KKworCisjaWZuZGVmIHdlYmtpdHdlYnVzZXJtZWRpYWxpc3RfaAor
I2RlZmluZSB3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0X2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0
Lmg+CisjaW5jbHVkZSA8Z2xpYi5oPgorCisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRlZmluZXMu
aD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElB
X0xJU1QgICAgICAgICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X3R5cGUo
KSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9VU0VSX01FRElBX0xJU1Qob2JqKSAgICAgICAgICAgICAg
IChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1VTRVJf
TUVESUFfTElTVCwgV2ViS2l0V2ViVXNlck1lZGlhTGlzdCkpCisjZGVmaW5lIFdFQktJVF9XRUJf
VVNFUl9NRURJQV9MSVNUX0NMQVNTKGtsYXNzKSAgICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NB
U1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1QsIFdlYktpdFdlYlVz
ZXJNZWRpYUxpc3RDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9MSVNU
KG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJ
VF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1QpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1VTRVJf
TUVESUFfTElTVF9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFz
cyksICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNUKSkKKyNkZWZpbmUgV0VCS0lUX1dF
Ql9VU0VSX01FRElBX0xJU1RfR0VUX0NMQVNTKG9iaikgICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VU
X0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfTElTVCwgV2ViS2l0V2Vi
VXNlck1lZGlhTGlzdENsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRp
YUxpc3QgV2ViS2l0V2ViVXNlck1lZGlhTGlzdDsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJV
c2VyTWVkaWFMaXN0Q2xhc3MgV2ViS2l0V2ViVXNlck1lZGlhTGlzdENsYXNzOwordHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlIFdlYktpdFdlYlVzZXJNZWRpYUxp
c3RQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRpYUxpc3QgeworICAgIEdPYmpl
Y3QgcGFyZW50X2luc3RhbmNlOworICAgIFdlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlICpw
cml2OworfTsKKworc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0Q2xhc3MgeworICAgIEdP
YmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRf
d2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfdHlwZSAodm9pZCkgR19HTlVDX0NPTlNUOworCitXRUJL
SVRfQVBJIGd1aW50Cit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfbGVuZ3RoICAgICAg
ICAoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCAqbGlzdCk7CisKK1dFQktJVF9BUEkgY29uc3QgZ2No
YXIgKgord2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2l0ZW1fbmFtZSAgICAgKFdlYktp
dFdlYlVzZXJNZWRpYUxpc3QgKmxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ3VpbnQgaW5kZXgpOworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0
X3dlYl91c2VyX21lZGlhX2xpc3RfaXNfaXRlbV9zZWxlY3RlZCAgKFdlYktpdFdlYlVzZXJNZWRp
YUxpc3QgKmxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ3VpbnQgaW5kZXgpOworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFf
bGlzdF9zZWxlY3RfaXRlbSAgICAgICAoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCAqbGlzdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCBpbmRleCk7
CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3Rwcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdHByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNzhh
OTFmNjBlZWFhOGQzYTMwMDg0MTg3NjkzY2QzMzdkNWMyN2VhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3Rwcml2YXRlLmgK
QEAgLTAsMCArMSwzNyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgQ29sbGFib3JhIEx0
ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0
ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisK
KworI2lmbmRlZiB3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZV9oCisjZGVmaW5lIHdlYmtp
dHdlYnVzZXJtZWRpYWxpc3Rwcml2YXRlX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisK
KyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJt
ZWRpYWxpc3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNvcmU6Ok1lZGlhU3RyZWFt
U291cmNlVmVjdG9yJiBjb3JlKFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqKTsKK1dlYktpdFdlYlVz
ZXJNZWRpYUxpc3QqIGtpdE5ldyhjb25zdCBXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3Rv
ciYpOworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8g
d2Via2l0d2VidXNlcm1lZGlhbGlzdHByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2
NmE3ODNhZGM0MDQwMmE1MmVkOTJhYjhjYjE2YmMwOTQyYjMzMWUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5jcHAK
QEAgLTAsMCArMSwxOTggQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIENvbGxhYm9yYSBM
dGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAg
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3Jp
dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLwor
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFyZXF1
ZXN0LmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiRnJhbWUuaCIK
KyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCisjaW5jbHVkZSAiVXNlck1lZGlhUmVxdWVzdC5oIgorI2luY2x1ZGUgIndlYmtpdGdsb2Jh
bHNwcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0c2VjdXJpdHlvcmlnaW5wcml2YXRlLmgiCisj
aW5jbHVkZSAid2Via2l0d2VidXNlcm1lZGlhbGlzdHByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJr
aXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KKworLyoqCisgKiBTRUNUSU9OOndlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QKKyAqIEBz
aG9ydF9kZXNjcmlwdGlvbjogVGhlIFdlYktpdCdzIFVzZXJNZWRpYSBSZXF1ZXN0LgorICogQFRp
dGxlOiBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0CisgKgorICogVGhpcyBvYmplY3QgY29udGFp
bnMgdGhlIGluZm9ybWF0aW9uIG9mIGEgbWVkaWEgcmVxdWVzdC4KKyAqIEl0IGNhbiBiZSB1c2Vk
IHRvIGNoZWNrIGlmIHRoZSByZXF1ZXN0IGlzIGFza2luZyBmb3IgYXVkaW8gYW5kL29yIHZpZGVv
LgorICoKKyAqIFNpbmNlOiAyLjAKKyAqLworCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitz
dHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRlIHsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6VXNlck1lZGlhUmVxdWVzdD4gdXNlck1lZGlhUmVxdWVzdDsKK307CisKK0dfREVGSU5F
X1RZUEUoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCwgd2Via2l0X3dlYl91c2VyX21lZGlhX3Jl
cXVlc3QsIEdfVFlQRV9PQkpFQ1QpCisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlVzZXJNZWRpYVJl
cXVlc3RGaW5hbGl6ZShHT2JqZWN0ICpvYmplY3QpCit7CisgICAgV0VCS0lUX1dFQl9VU0VSX01F
RElBX1JFUVVFU1Qob2JqZWN0KS0+cHJpdi0+fldlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2
YXRlKCk7CisKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVz
dF9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOworfQorCitzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9jbGFzc19pbml0KFdlYktpdFdlYlVzZXJNZWRpYVJl
cXVlc3RDbGFzcyogcmVxdWVzdENsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogZ29iamVjdF9j
bGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7CisgICAgZ29iamVjdF9jbGFzcy0+
ZmluYWxpemUgPSB3ZWJraXRXZWJVc2VyTWVkaWFSZXF1ZXN0RmluYWxpemU7CisKKyAgICB3ZWJr
aXRJbml0KCk7CisKKyAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUocmVxdWVzdENsYXNzLCBz
aXplb2YoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdFByaXZhdGUpKTsKK30KKworc3RhdGljIHZv
aWQgd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfaW5pdChXZWJLaXRXZWJVc2VyTWVkaWFS
ZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRl
KiBwcml2ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKHJlcXVlc3QsIFdFQktJVF9UWVBF
X1dFQl9VU0VSX01FRElBX1JFUVVFU1QsIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRl
KTsKKyAgICByZXF1ZXN0LT5wcml2ID0gcHJpdjsKKworICAgIG5ldyAocHJpdikgV2ViS2l0V2Vi
VXNlck1lZGlhUmVxdWVzdFByaXZhdGUoKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3VzZXJf
bWVkaWFfcmVxdWVzdF93YW50c19hdWRpbzoKKyAqIEByZXF1ZXN0OiB0aGUgI1dlYktpdFVzZXJN
ZWRpYVJlcXVlc3QgaXRzZWxmLgorICoKKyAqIEluZGljYXRlcyB0aGUgY29udGVudCBvZiBhbiBV
c2VyTWVkaWFSZXF1ZXN0LgorICoKKyAqIFJldHVybiB2YWx1ZTogJVRSVUUgaWYgdGhlIHJlcXVl
c3QgY29udGFpbnMgYW4gYXVkaW8gcmVxdWVzdCBvciAlRkFMU0UgaWYgb3RoZXJ3aXNlLgorICoK
KyAqIFNpbmNlOiAyLjAKKyAqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVl
c3Rfd2FudHNfYXVkaW8oV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfUkVRVUVTVChy
ZXF1ZXN0KSwgRkFMU0UpOworCisgICAgcmV0dXJuIGNvcmUocmVxdWVzdCktPmF1ZGlvKCk7Cit9
CisKKy8qKgorICogd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNfdmlkZW86Cisg
KiBAcmVxdWVzdDogdGhlICNXZWJLaXRVc2VyTWVkaWFSZXF1ZXN0IGl0c2VsZi4KKyAqCisgKiBJ
bmRpY2F0ZXMgdGhlIGNvbnRlbnQgb2YgYW4gVXNlck1lZGlhUmVxdWVzdC4KKyAqCisgKiBSZXR1
cm4gdmFsdWU6ICVUUlVFIGlmIHRoZSByZXF1ZXN0IGNvbnRhaW5zIGEgdmlkZW8gcmVxdWVzdCBv
ciAlRkFMU0UgaWYgb3RoZXJ3aXNlLgorICoKKyAqIFNpbmNlOiAyLjAKKyAqLworZ2Jvb2xlYW4g
d2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNfdmlkZW8oV2ViS2l0V2ViVXNlck1l
ZGlhUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfV0VCX1VTRVJfTUVESUFfUkVRVUVTVChyZXF1ZXN0KSwgRkFMU0UpOworCisgICAgcmV0dXJu
IGNvcmUocmVxdWVzdCktPnZpZGVvKCk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl91c2VyX21l
ZGlhX3JlcXVlc3RfZ2V0X3NlY3VyaXR5X29yaWdpbjoKKyAqIEByZXF1ZXN0OiB0aGUgI1dlYktp
dFVzZXJNZWRpYVJlcXVlc3QgaXRzZWxmLgorICoKKyAqIFJldHVybnMgdGhlIHNlY3VyaXR5IG9y
aWdpbiBvZiB0aGUgTWVkaWEgUmVxdWVzdC4KKyAqCisgKiBSZXR1cm4gdmFsdWU6ICh0cmFuc2Zl
ciBub25lKTogdGhlIHNlY3VyaXR5IG9yaWdpbiBvZiB0aGUgbWVkaWEgcmVxdWVzdC4KKyAqCisg
KiBTaW5jZTogMi4wCisgKi8KK1dlYktpdFNlY3VyaXR5T3JpZ2luKiB3ZWJraXRfd2ViX3VzZXJf
bWVkaWFfcmVxdWVzdF9nZXRfc2VjdXJpdHlfb3JpZ2luKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVl
c3QqIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9V
U0VSX01FRElBX1JFUVVFU1QocmVxdWVzdCksIDApOworCisgICAgcmV0dXJuIGtpdChjb3JlKHJl
cXVlc3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCkpOworfQor
CisvKioKKyAqIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3N1Y2NlZWQ6CisgKiBAd2Vi
UmVxdWVzdDogYSAjV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdAorICogQGF1ZGlvTWVkaWFMaXN0
OiBhICNXZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGNvbnRhaW5pbmcgYXVkaW8gZGV2aWNlcworICog
QHZpZGVvTWVkaWFMaXN0OiBhICNXZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGNvbnRhaW5pbmcgdmlk
ZW8gZGV2aWNlcworICoKKyAqIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQgYnkgdGhlIGFw
cGxpY2F0aW9uIGFmdGVyIHRoZSB1c2VyIHNlbGVjdHMKKyAqIGEgbWVkaWEgZGV2aWNlIGFuZCBh
Y2NlcHRzIGFuIG1lZGlhIHJlcXVlc3QKKyAqCisgKiBTaW5jZTogMi4wCisgKiovCit2b2lkIHdl
YmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3N1Y2NlZWQoV2ViS2l0V2ViVXNlck1lZGlhUmVx
dWVzdCogd2ViUmVxdWVzdCwgV2ViS2l0V2ViVXNlck1lZGlhTGlzdCogYXVkaW9NZWRpYUxpc3Qs
IFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIHZpZGVvTWVkaWFMaXN0KQoreworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX1JFUVVFU1Qod2ViUmVxdWVzdCkpOwor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX0xJU1QoYXVkaW9N
ZWRpYUxpc3QpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVVNFUl9NRURJ
QV9MSVNUKHZpZGVvTWVkaWFMaXN0KSk7CisKKyAgICBXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJj
ZVZlY3RvciYgYXVkaW9Tb3VyY2VzID0gY29yZShhdWRpb01lZGlhTGlzdCk7CisgICAgV2ViQ29y
ZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVvU291cmNlcyA9IGNvcmUodmlkZW9NZWRp
YUxpc3QpOworCisgICAgZm9yIChzaXplX3QgaSA9IGF1ZGlvU291cmNlcy5zaXplKCkgLSAxOyBp
ICE9IChzaXplX3QpIC0xOyAtLWkpCisgICAgICAgIGlmICghd2Via2l0X3dlYl91c2VyX21lZGlh
X2xpc3RfaXNfaXRlbV9zZWxlY3RlZChhdWRpb01lZGlhTGlzdCwgaSkpCisgICAgICAgICAgICBh
dWRpb1NvdXJjZXMucmVtb3ZlKGkpOworCisgICAgZm9yIChzaXplX3QgaSA9IHZpZGVvU291cmNl
cy5zaXplKCkgLSAxOyBpICE9IChzaXplX3QpIC0xOyAtLWkpCisgICAgICAgIGlmICghd2Via2l0
X3dlYl91c2VyX21lZGlhX2xpc3RfaXNfaXRlbV9zZWxlY3RlZCh2aWRlb01lZGlhTGlzdCwgaSkp
CisgICAgICAgICAgICB2aWRlb1NvdXJjZXMucmVtb3ZlKGkpOworCisgICAgY29yZSh3ZWJSZXF1
ZXN0KS0+c3VjY2VlZChhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7CisKK30KKworLyoqCisg
KiB3ZWJraXRfd2ViX3ZpZXdfcmVqZWN0X3VzZXJfbWVkaWFfcmVxdWVzdDoKKyAqIEB3ZWJSZXF1
ZXN0OiBhICNXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0CisgKgorICogVGhpcyBtZXRob2Qgc2hv
dWxkIGJlIGNhbGxlZCBieSB0aGUgYXBwbGljYXRpb24gd2hlbiB0aGUgdXNlciByZWplY3RlZCBh
IHVzZXJNZWRpYSByZXF1ZXN0LgorICoKKyAqIFNpbmNlOiAyLjAKKyAqKi8KK3ZvaWQgd2Via2l0
X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZmFpbChXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiB3
ZWJSZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01F
RElBX1JFUVVFU1Qod2ViUmVxdWVzdCkpOworICAgIGNvcmUod2ViUmVxdWVzdCktPmZhaWwoKTsK
K30KKworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCog
Y29yZShXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIEFTU0VSVChX
RUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfUkVRVUVTVChyZXF1ZXN0KSk7CisKKyAgICByZXR1cm4g
cmVxdWVzdC0+cHJpdi0+dXNlck1lZGlhUmVxdWVzdC5nZXQoKTsKK30KKworV2ViS2l0V2ViVXNl
ck1lZGlhUmVxdWVzdCoga2l0TmV3KFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3Qp
Cit7CisgICAgQVNTRVJUKHJlcXVlc3QpOworCisgICAgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVz
dCogd2ViUmVxdWVzdCA9IFdFQktJVF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUKGdfb2JqZWN0X25l
dyhXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFVRVNULCBOVUxMKSk7CisgICAgd2ViUmVx
dWVzdC0+cHJpdi0+dXNlck1lZGlhUmVxdWVzdCA9IHJlcXVlc3Q7CisKKyAgICByZXR1cm4gd2Vi
UmVxdWVzdDsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0
LmggYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjkyYjFlMGY3YzU0MTQ3YjUwYmEwN2YxZGJlNjhiNDViNTZlZGQ5YTQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1l
ZGlhcmVxdWVzdC5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEy
IENvbGxhYm9yYSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAx
ICBVU0EKKyAqLworCisKKyNpZm5kZWYgd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdF9oCisjZGVm
aW5lIHdlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3RfaAorCisjaW5jbHVkZSAid2Via2l0d2VidXNl
cm1lZGlhbGlzdC5oIgorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDxnbGli
Lmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRlZmluZXMuaD4KKworR19CRUdJTl9ERUNMUwor
CisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX1JFUVVFU1QgICAgICAgICAgICAo
d2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lU
X1dFQl9VU0VSX01FRElBX1JFUVVFU1Qob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5T
VEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCwgV2Vi
S2l0V2ViVXNlck1lZGlhUmVxdWVzdCkpCisjZGVmaW5lIFdFQktJVF9XRUJfVVNFUl9NRURJQV9S
RVFVRVNUX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwg
IFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX1JFUVVFU1QsIFdlYktpdFdlYlVzZXJNZWRpYVJl
cXVlc3RDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9SRVFVRVNUKG9i
aikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBF
X1dFQl9VU0VSX01FRElBX1JFUVVFU1QpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1VTRVJfTUVE
SUFfUkVRVUVTVF9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyks
ICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFVRVNUKSkKKyNkZWZpbmUgV0VCS0lUX1dF
Ql9VU0VSX01FRElBX1JFUVVFU1RfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VU
X0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCwgV2ViS2l0
V2ViVXNlck1lZGlhUmVxdWVzdENsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlVz
ZXJNZWRpYVJlcXVlc3QgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdDsKK3R5cGVkZWYgc3RydWN0
IF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3MgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVz
dENsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRl
IFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdFdlYlVz
ZXJNZWRpYVJlcXVlc3QgeworICAgIEdPYmplY3QgcGFyZW50X2luc3RhbmNlOworICAgIFdlYktp
dFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRX
ZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7
Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9n
ZXRfdHlwZSAodm9pZCkgR19HTlVDX0NPTlNUOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJr
aXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF93YW50c19hdWRpbyAgICAgICAgICAgICAgKFdlYktp
dFdlYlVzZXJNZWRpYVJlcXVlc3QgKnJlcXVlc3QpOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3
ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF93YW50c192aWRlbyAgICAgICAgICAgICAgKFdl
YktpdFdlYlVzZXJNZWRpYVJlcXVlc3QgKnJlcXVlc3QpOworCitXRUJLSVRfQVBJIFdlYktpdFNl
Y3VyaXR5T3JpZ2luICoKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2dldF9zZWN1cml0
eV9vcmlnaW4gICAgICAoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCAqcmVxdWVzdCk7CisKK1dF
QktJVF9BUEkgdm9pZAord2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZmFpbCAgICAgICAg
ICAgICAgICAgICAgIChXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0ICpyZXF1ZXN0KTsKKworV0VC
S0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9zdWNjZWVkICAgICAg
ICAgICAgICAgICAgKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QgKndlYlJlcXVlc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktp
dFdlYlVzZXJNZWRpYUxpc3QqIGF1ZGlvTWVkaWFMaXN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0
KiB2aWRlb01lZGlhTGlzdCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHBy
aXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wMTU2NGQ3ZDY2N2E5ZTFkYmI3NzQxZTcyMDgwMjg0ZDJjOWY4
NWE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlLmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqICBDb3B5
cmlnaHQgKEMpIDIwMTIgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rvbiwg
TUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKworI2lmbmRlZiB3ZWJraXR3ZWJ1c2VybWVkaWFy
ZXF1ZXN0cHJpdmF0ZV9oCisjZGVmaW5lIHdlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRl
X2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2Vy
bWVkaWFyZXF1ZXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBVc2VyTWVkaWFS
ZXF1ZXN0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQ29yZTo6VXNlck1lZGlhUmVx
dWVzdCogY29yZShXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Kik7CitXZWJLaXRXZWJVc2VyTWVk
aWFSZXF1ZXN0KiBraXROZXcoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCopOworCit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gd2Via2l0d2VidXNlcm1l
ZGlhcmVxdWVzdHByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZp
ZXcuY3BwCmluZGV4IDU1NTE3MWFhMWNiNmRlMzMzYTBjZjYzY2IzYWEzOTRmMzk0YTA0MGQuLjFl
YmNjYWYyZTQxZjE1ODZmODQzNTg4YTA5M2Y0Y2Y0YTMwYjI0NzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTYzLDYgKzYzLDcgQEAKICNpbmNsdWRl
ICJHZW9sb2NhdGlvbkNsaWVudEd0ay5oIgogI2luY2x1ZGUgIkdlb2xvY2F0aW9uQ29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkd0a01lZGlhQ2hv
b3NlckRpYWxvZy5oIgogI2luY2x1ZGUgIkd0a1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkd0a1Zl
cnNpb25pbmcuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAgLTgzLDYgKzg0LDcgQEAKICNp
bmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUu
aCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudEd0ay5o
IgogI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01Eb2N1bWVudFByaXZhdGUuaCIKICNpbmNsdWRl
ICJ3ZWJraXRkb3dubG9hZC5oIgogI2luY2x1ZGUgIndlYmtpdGRvd25sb2FkcHJpdmF0ZS5oIgpA
QCAtMTA3LDYgKzEwOSw4IEBACiAjaW5jbHVkZSAid2Via2l0d2VicmVzb3VyY2UuaCIKICNpbmNs
dWRlICJ3ZWJraXR3ZWJzZXR0aW5nc3ByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJwbHVn
aW5kYXRhYmFzZXByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJp
dmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlLmgiCiAj
aW5jbHVkZSAid2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2
aWV3cHJpdmF0ZS5oIgogI2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CkBAIC0xMTksNiArMTIz
LDcgQEAKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEd0ay5oIgogI2VuZGlmCiAK
KwogLyoqCiAgKiBTRUNUSU9OOndlYmtpdHdlYnZpZXcKICAqIEBzaG9ydF9kZXNjcmlwdGlvbjog
VGhlIGNlbnRyYWwgY2xhc3Mgb2YgdGhlIFdlYktpdEdUSysgQVBJCkBAIC0yMTgsNiArMjIzLDcg
QEAgZW51bSB7CiAgICAgTEVBVklOR19GVUxMU0NSRUVOLAogICAgIENPTlRFWFRfTUVOVSwKICAg
ICBSVU5fRklMRV9DSE9PU0VSLAorICAgIENIT09TRV9NRURJQV9ERVZJQ0UsCiAKICAgICBMQVNU
X1NJR05BTAogfTsKQEAgLTExNzMsNiArMTE3OSw1MCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0
X3dlYl92aWV3X3JlYWxfc2NyaXB0X3Byb21wdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJL
aQogICAgIHJldHVybiBUUlVFOwogfQogCit0eXBlZGVmIHN0cnVjdCB7CisgICAgV2ViS2l0V2Vi
VXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdDsKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBh
dWRpb01lZGlhTGlzdDsKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiB2aWRlb01lZGlhTGlz
dDsKKyAgICBHdGtNZWRpYUNob29zZXJEaWFsb2cqIGRpYWxvZzsKK30gVXNlck1lZGlhU2VsZWN0
b3JEYXRhOworCitzdGF0aWMgdm9pZCBtZWRpYUNob29zZXJSZXNwb25zZUNhbGxiYWNrKEd0a1dp
ZGdldCogd2lkZ2V0LCBnaW50IHJlc3BvbnNlSUQsIFVzZXJNZWRpYVNlbGVjdG9yRGF0YSAqZGF0
YSkKK3sKKyAgICBpZiAocmVzcG9uc2VJRCA9PSBHVEtfUkVTUE9OU0VfT0spIHsKKyAgICAgICAg
aWYgKGRhdGEtPmRpYWxvZy0+c2VsZWN0ZWRBdWRpbygpICE9IC0xKQorICAgICAgICAgICAgd2Vi
a2l0X3dlYl91c2VyX21lZGlhX2xpc3Rfc2VsZWN0X2l0ZW0oZGF0YS0+YXVkaW9NZWRpYUxpc3Qs
IGRhdGEtPmRpYWxvZy0+c2VsZWN0ZWRBdWRpbygpKTsKKworICAgICAgICBpZiAoZGF0YS0+ZGlh
bG9nLT5zZWxlY3RlZFZpZGVvKCkgIT0gLTEpCisgICAgICAgICAgICB3ZWJraXRfd2ViX3VzZXJf
bWVkaWFfbGlzdF9zZWxlY3RfaXRlbShkYXRhLT52aWRlb01lZGlhTGlzdCwgZGF0YS0+ZGlhbG9n
LT5zZWxlY3RlZFZpZGVvKCkpOworCisgICAgICAgIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1
ZXN0X3N1Y2NlZWQoZGF0YS0+cmVxdWVzdCwgZGF0YS0+YXVkaW9NZWRpYUxpc3QsIGRhdGEtPnZp
ZGVvTWVkaWFMaXN0KTsKKyAgICB9IGVsc2UKKyAgICAgICAgd2Via2l0X3dlYl91c2VyX21lZGlh
X3JlcXVlc3RfZmFpbChkYXRhLT5yZXF1ZXN0KTsKKworICAgIGdfb2JqZWN0X3VucmVmKGRhdGEt
PnJlcXVlc3QpOworICAgIGdfb2JqZWN0X3VucmVmKGRhdGEtPmF1ZGlvTWVkaWFMaXN0KTsKKyAg
ICBnX29iamVjdF91bnJlZihkYXRhLT52aWRlb01lZGlhTGlzdCk7CisgICAgZGVsZXRlIGRhdGEt
PmRpYWxvZzsKKyAgICBnX2ZyZWUoZGF0YSk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRf
d2ViX3ZpZXdfcmVhbF9jaG9vc2VfbWVkaWFfZGV2aWNlKFdlYktpdFdlYlZpZXcgKndlYlZpZXcs
IFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QsIFdlYktpdFdlYlVzZXJNZWRpYUxp
c3QqIGF1ZGlvTWVkaWFMaXN0LCBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiB2aWRlb01lZGlhTGlz
dCkKK3sKKyAgICBHdGtXaWRnZXQqIHRvcGxldmVsID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwo
R1RLX1dJREdFVCh3ZWJWaWV3KSk7CisgICAgR3RrTWVkaWFDaG9vc2VyRGlhbG9nKiBkaWFsb2cg
PSBuZXcgR3RrTWVkaWFDaG9vc2VyRGlhbG9nKHRvcGxldmVsLCBjb3JlKHJlcXVlc3QpLCBjb3Jl
KGF1ZGlvTWVkaWFMaXN0KSwgY29yZSh2aWRlb01lZGlhTGlzdCkpOworICAgIEd0a1dpZGdldCog
d2lkZ2V0ID0gZGlhbG9nLT53aWRnZXQoKTsKKyAgICBVc2VyTWVkaWFTZWxlY3RvckRhdGEqIGRh
dGEgPSBnX25ldyhVc2VyTWVkaWFTZWxlY3RvckRhdGEsIDEpOworCisgICAgZGF0YS0+cmVxdWVz
dCA9IChXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KikgZ19vYmplY3RfcmVmKHJlcXVlc3QpOwor
ICAgIGRhdGEtPmF1ZGlvTWVkaWFMaXN0ID0gKFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqKSBnX29i
amVjdF9yZWYoYXVkaW9NZWRpYUxpc3QpOworICAgIGRhdGEtPnZpZGVvTWVkaWFMaXN0ID0gKFdl
YktpdFdlYlVzZXJNZWRpYUxpc3QqKSBnX29iamVjdF9yZWYodmlkZW9NZWRpYUxpc3QpOworICAg
IGRhdGEtPmRpYWxvZyA9IGRpYWxvZzsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2lkZ2V0LCAi
cmVzcG9uc2UiLCBHX0NBTExCQUNLKG1lZGlhQ2hvb3NlclJlc3BvbnNlQ2FsbGJhY2spLCBkYXRh
KTsKKyAgICBkaWFsb2ctPnNob3coKTsKKyAgICByZXR1cm4gVFJVRTsKK30KKwogc3RhdGljIGdi
b29sZWFuIHdlYmtpdF93ZWJfdmlld19yZWFsX2NvbnNvbGVfbWVzc2FnZShXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogbWVzc2FnZSwgdW5zaWduZWQgaW50IGxpbmUsIGNvbnN0
IGdjaGFyKiBzb3VyY2VJZCkKIHsKICAgICBnX21lc3NhZ2UoImNvbnNvbGUgbWVzc2FnZTogJXMg
QCVkOiAlc1xuIiwgc291cmNlSWQsIGxpbmUsIG1lc3NhZ2UpOwpAQCAtMjcyNCw2ICsyNzc0LDMy
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdD
bGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgV0VCS0lUX1RZUEVfVklFV1BPUlRfQVRU
UklCVVRFUyk7CiAKICAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OjpjaG9vc2UtbWVkaWEt
ZGV2aWNlOgorICAgICAqIEB3ZWJfdmlldzogdGhlIG9iamVjdCB3aGljaCByZWNlaXZlZCB0aGUg
c2lnbmFsCisgICAgICogQHJlcXVlc3Q6IHRoZSAjV2ViS2l0V2ViVXNlck1lZGlhUnF1ZXN0IGF0
dHJpYnV0ZSB3aGljaCBnZW5lcmF0ZWQgdGhlIHJlcXVlc3QuCisgICAgICogQGF1ZGlvTGlzdDog
YSAjV2ViS2l0V2ViVXNlck1lZGlhTGlzdCBjb250YWluaW5nIHRoZSBhdmFpbGFibGUgYXVkaW8g
bWVkaWEgb3B0aW9ucy4KKyAgICAgKiBAdmlkZW9MaXN0OiBhICNXZWJLaXRXZWJVc2VyTWVkaWFM
aXN0IGNvbnRhaW5pbmcgdGhlIGF2YWlsYWJsZSB2aWRlbyBtZWRpYSBvcHRpb25zLgorICAgICAq
CisgICAgICogV2hlbiB0aGUgYXBwbGljYXRpb24gcmVxdWVzdCB1c2VyTWVkaWEsIHRoaXMgc2ln
bmFsIHdpbGwgYmUgZW1pdGVkIHdpdGggdGhlIHJlcXVlc3QKKyAgICAgKiBpbmZvcm1hdGlvbiBh
bmQgdGhlIGF2YWlsYWJsZSBvcHRpb25zIHRvIGJlIHNlbGVjdGVkLgorICAgICAqCisgICAgICog
VGhlbiB0aGUgdXNlciBpcyBleHBlY3RlZCB0byBjYWxsIGVpdGhlciB3ZWJraXRfd2ViX3VzZXJf
bWVkaWFfcmVxdWVzdF9zdWNjZWVkKCkgb3IKKyAgICAgKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFf
cmVxdWVzdF9mYWlsKCkgdG8gYWNjZXB0IG9yIHJlamVjdCB0aGUgcmVxdWVzdC4KKyAgICAgKgor
ICAgICAqIFNpbmNlOiAyLjAuMAorICAgICAqLworICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxz
W0NIT09TRV9NRURJQV9ERVZJQ0VdID0gZ19zaWduYWxfbmV3KCJjaG9vc2UtbWVkaWEtZGV2aWNl
IiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAg
ICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJL
aXRXZWJWaWV3Q2xhc3MsIGNob29zZV9tZWRpYV9kZXZpY2UpLAorICAgICAgICAgICAgZ19zaWdu
YWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCAwLAorICAgICAgICAgICAgd2Via2l0X21hcnNo
YWxfQk9PTEVBTl9fT0JKRUNUX09CSkVDVF9PQkpFQ1QsCisgICAgICAgICAgICBHX1RZUEVfQk9P
TEVBTiwgMywKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX1JFUVVFU1Qs
CisgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNULAorICAgICAgICAg
ICAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfTElTVCk7CisKKyAgICAvKioKICAgICAgKiBX
ZWJLaXRXZWJWaWV3OjplbnRlcmluZy1mdWxsc2NyZWVuOgogICAgICAqIEB3ZWJfdmlldzogdGhl
ICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZC4KICAgICAgKiBA
ZWxlbWVudDogdGhlICNXZWJLaXRET01IVE1MRWxlbWVudCB3aGljaCBoYXMgcmVxdWVzdGVkIGZ1
bGwgc2NyZWVuIGRpc3BsYXkuCkBAIC0yOTEyLDYgKzI5ODgsNyBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykK
ICAgICB3ZWJWaWV3Q2xhc3MtPnNjcmlwdF9hbGVydCA9IHdlYmtpdF93ZWJfdmlld19yZWFsX3Nj
cmlwdF9hbGVydDsKICAgICB3ZWJWaWV3Q2xhc3MtPnNjcmlwdF9jb25maXJtID0gd2Via2l0X3dl
Yl92aWV3X3JlYWxfc2NyaXB0X2NvbmZpcm07CiAgICAgd2ViVmlld0NsYXNzLT5zY3JpcHRfcHJv
bXB0ID0gd2Via2l0X3dlYl92aWV3X3JlYWxfc2NyaXB0X3Byb21wdDsKKyAgICB3ZWJWaWV3Q2xh
c3MtPmNob29zZV9tZWRpYV9kZXZpY2UgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jaG9vc2VfbWVk
aWFfZGV2aWNlOwogICAgIHdlYlZpZXdDbGFzcy0+Y29uc29sZV9tZXNzYWdlID0gd2Via2l0X3dl
Yl92aWV3X3JlYWxfY29uc29sZV9tZXNzYWdlOwogICAgIHdlYlZpZXdDbGFzcy0+c2VsZWN0X2Fs
bCA9IHdlYmtpdF93ZWJfdmlld19yZWFsX3NlbGVjdF9hbGw7CiAgICAgd2ViVmlld0NsYXNzLT5j
dXRfY2xpcGJvYXJkID0gd2Via2l0X3dlYl92aWV3X3JlYWxfY3V0X2NsaXBib2FyZDsKQEAgLTM2
MjksNyArMzcwNiw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19pbml0KFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAg
cHJpdi0+dXNlck1lZGlhQ2xpZW50ID0gYWRvcHRQdHIobmV3IFVzZXJNZWRpYUNsaWVudEd0ayk7
CisgICAgcHJpdi0+dXNlck1lZGlhQ2xpZW50ID0gYWRvcHRQdHIobmV3IFVzZXJNZWRpYUNsaWVu
dEd0ayh3ZWJWaWV3KSk7CiAgICAgV2ViQ29yZTo6cHJvdmlkZVVzZXJNZWRpYVRvKHByaXYtPmNv
cmVQYWdlLCBwcml2LT51c2VyTWVkaWFDbGllbnQuZ2V0KCkpOwogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmggYi9Tb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCmluZGV4IDljODQyNjNiNGJjMDk0N2E2ZjBk
Zjk1ZGIwMTdjNTIzNGExZTJkOWUuLjdkOTM1OTRjYjM5NGZiMTE0YjdjYmRjNGE2Mzc0NWFlMzQw
MDhiNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
LmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaApAQCAtNDQs
NiArNDQsOSBAQCBHX0JFR0lOX0RFQ0xTCiAjZGVmaW5lIFdFQktJVF9XRUJfVklFV19HRVRfQ0xB
U1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9X
RUJfVklFVywgV2ViS2l0V2ViVmlld0NsYXNzKSkKIAogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdl
YlZpZXdQcml2YXRlIFdlYktpdFdlYlZpZXdQcml2YXRlOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dFdlYlVzZXJNZWRpYVJlcXVlc3QgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdDsKK3R5cGVkZWYg
c3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0IFdlYktpdFdlYlVzZXJNZWRpYUxpc3Q7CisK
IAogLyoqCiAgKiBXZWJLaXROYXZpZ2F0aW9uUmVzcG9uc2U6CkBAIC0xNTUsNiArMTU4LDEyIEBA
IHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgKm1l
c3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICpkZWZhdWx0X3ZhbHVlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY2hhciog
ICAgICAgICAgICAgICAqdmFsdWUpOworCisgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICAg
KCogY2hvb3NlX21lZGlhX2RldmljZSkgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndl
Yl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0ICpyZXF1ZXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRX
ZWJVc2VyTWVkaWFMaXN0ICAgICphdWRpbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViVXNlck1lZGlhTGlzdCAgICAq
dmlkZW8pOworCiAgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICAgKCogY29uc29sZV9tZXNz
YWdlKSAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmlldywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2No
YXIgICAgICAgICAgKm1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICBsaW5lX251bWJl
ciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdG1hcnNoYWwubGlzdCBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdG1hcnNoYWwubGlzdAppbmRleCBiNzQyODkwNWM4OTgzY2Zj
NzVlYzU0NDc0MTMzY2EyOGY2ZDc5NWI0Li44ZGQ0YmRlZWFjNzIyZjIyNDg0NDQzZTYzMmMxM2Ex
YjU0NjQ5NjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXRtYXJzaGFsLmxp
c3QKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0bWFyc2hhbC5saXN0CkBAIC0yLDYgKzIs
NyBAQCBCT09MRUFOOkVOVU0sSU5UCiBCT09MRUFOOklOVCxJTlQsU1RSSU5HCiBCT09MRUFOOk9C
SkVDVAogQk9PTEVBTjpPQkpFQ1QsT0JKRUNUCitCT09MRUFOOk9CSkVDVCxPQkpFQ1QsIE9CSkVD
VAogQk9PTEVBTjpPQkpFQ1QsT0JKRUNULEJPT0xFQU4KIEJPT0xFQU46T0JKRUNULE9CSkVDVCxF
TlVNCiBCT09MRUFOOk9CSkVDVCxPQkpFQ1QsRU5VTSxCT09MRUFOCkBAIC0xOCw2ICsxOSw3IEBA
IEVOVU06T0JKRUNULE9CSkVDVAogT0JKRUNUOk9CSkVDVAogT0JKRUNUOlNUUklORyxTVFJJTkcs
UE9JTlRFUgogT0JKRUNUOlZPSUQKK1ZPSUQ6T0JKRUNUCiBWT0lEOk9CSkVDVCxPQkpFQ1QKIFZP
SUQ6T0JKRUNULE9CSkVDVCxJTlQKIFZPSUQ6T0JKRUNULE9CSkVDVCxPQkpFQ1QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169016</attachid>
            <date>2012-10-16 13:47:52 -0700</date>
            <delta_ts>2012-10-18 10:17:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94373-20121016174640.patch</filename>
            <type>text/plain</type>
            <size>50618</size>
            <attacher name="Danilo de Paula">danilo.eu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMzkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggM2UxYjZhMzJm
NDQ0YTM1NGQ4Nzk5NzdhOTFiOGQ0MjMzNGQxZTA1NS4uYTEyMTM2YWQyNDAzZjQ0ZTdlMmRkNGM0
ZWE5NzY5YTJlZTE5YTYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDEy
LTEwLTE0ICBEYW5pbG8gQ2VzYXIgTGVtZXMgZGUgUGF1bGEgIDxkYW5pbG8uY2VzYXJAY29sbGFi
b3JhLmNvLnVrPgorCisgICAgICAgIFtndGtdIGFkZGluZyBtZXRob2RzIGFuZCBzaWduYWxzIGZv
ciB1c2VybWVkaWEgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHdlYmtpdCBhbmQgYnJvd3NlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQzNzMKKworICAg
ICAgICBXaGVuIHRoZSB1c2VyIG1ha2VzIGEgZ2V0VXNlck1lZGlhIGNhbGwsIHdlYnZpZXcgd2ls
bCBlbWl0IGEgc2lnbmFsICh1c2VyLW1lZGlhLXJlcXVlc3RlZCkKKyAgICAgICAgdG8gdGhlIGFw
cGxpY2F0aW9uIGNvbnRhaW5pbmcgdGhlIHJlcXVlc3QgaXRzZWxmICh3ZWJraXR3ZWJ1c2VybWVk
aWFyZXF1ZXN0KSBhbmQgdHdvCisgICAgICAgIGxpc3RzIHdpdGggdGhlIGF2YWlsYWJsZSBhdWRp
byBhbmQgdmlkZW8gZGV2aWNlcyAod2Via2l0d2VidXNlcm1lZGlhbGlzdCkuCisKKyAgICAgICAg
VGhlIGFwcGxpY2F0aW9uIG11c3Qgc2hvdyB0aGUgbGlzdHMgdG8gdGhlIHVzZXIgYW5kIGFzayBw
ZXJtaXNzaW9uIHRvIHVzZSBvbmUgb2YKKyAgICAgICAgdGhvc2UgZGV2aWNlcyAob3IgcmVqZWN0
IHRoZSByZXF1ZXN0KS4KKworICAgICAgICBJbiBjYXNlIHRoZSB1c2VyIGFjY2VwdHMgdGhlIHJl
cXVlc3QsIHRoZSBhcHBsaWNhdGlvbiBtdXN0IG1hcmsgdGhlIGRldmljZSBhcworICAgICAgICBz
ZWxlY3RlZCAodXNpbmcgd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3Rfc2VsZWN0X2l0ZW0pIGFu
ZCB0aGVuIGNhbGwKKyAgICAgICAgd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfc3VjY2Vl
ZCB3aGljaCB3aWxsIGhhbmRsZSB0aGUgcmVxdWVzdCBwcm9wZXJseS4KKworICAgICAgICBJbiBj
YXNlIHRoZSB1c2VyIHJlamVjdHMgdGhlIHJlcXVlc3QsIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9y
ZXF1ZXN0X2ZhaWwgbXVzdAorICAgICAgICBiZSBjYWxsZWQuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9Vc2VyTWVkaWFDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0
OjpVc2VyTWVkaWFDbGllbnRHdGs6OlVzZXJNZWRpYUNsaWVudEd0ayk6CisgICAgICAgIChXZWJL
aXQ6OlVzZXJNZWRpYUNsaWVudEd0azo6cGFnZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6
OlVzZXJNZWRpYUNsaWVudEd0azo6cmVxdWVzdFVzZXJNZWRpYSk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50R3RrLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFVzZXJNZWRpYUNsaWVudEd0ayk6CisgICAgICAgICogZG9jcy93ZWJraXRndGstZG9jcy5z
Z21sOgorICAgICAgICAqIGRvY3Mvd2Via2l0Z3RrLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiB3
ZWJraXQvd2Via2l0Lmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3Qu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZSk6Cisg
ICAgICAgICh3ZWJraXRXZWJVc2VyTWVkaWFMaXN0RmluYWxpemUpOgorICAgICAgICAod2Via2l0
X3dlYl91c2VyX21lZGlhX2xpc3RfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3Vz
ZXJfbWVkaWFfbGlzdF9pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0
X2dldF9sZW5ndGgpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2l0
ZW1fbmFtZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9pc19pdGVtX3Nl
bGVjdGVkKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X3NlbGVjdF9pdGVt
KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAo
V2ViS2l0OjpraXROZXcpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0
Lmg6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYlVzZXJNZWRpYUxpc3QpOgorICAgICAgICAo
X1dlYktpdFdlYlVzZXJNZWRpYUxpc3RDbGFzcyk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdl
YnVzZXJtZWRpYWxpc3Rwcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKiB3ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5jcHA6IEFkZGVkLgorICAgICAg
ICAoX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRlKToKKyAgICAgICAgKHdlYmtpdFdl
YlVzZXJNZWRpYVJlcXVlc3RGaW5hbGl6ZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVk
aWFfcmVxdWVzdF9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9y
ZXF1ZXN0X2luaXQpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2Fu
dHNfYXVkaW8pOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfd2FudHNf
dmlkZW8pOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZ2V0X3NlY3Vy
aXR5X29yaWdpbik6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9zdWNj
ZWVkKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2ZhaWwpOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Y29yZSk6CisgICAgICAgIChXZWJLaXQ6
OmtpdE5ldyk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuaDog
QWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCk6CisgICAgICAgIChf
V2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdENsYXNzKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgor
ICAgICAgICAobWVkaWFDaG9vc2VyUmVzcG9uc2VDYWxsYmFjayk6CisgICAgICAgICh3ZWJraXRf
d2ViX3ZpZXdfcmVhbF9jaG9vc2VfbWVkaWFfZGV2aWNlKToKKyAgICAgICAgKHdlYmtpdF93ZWJf
dmlld19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19pbml0KToKKyAgICAg
ICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5oOgorICAgICAgICAoX1dlYktpdFdlYlZpZXdDbGFz
cyk6CisgICAgICAgICogd2Via2l0bWFyc2hhbC5saXN0OgorCiAyMDEyLTEwLTAyICBBbmRlcnMg
Q2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2hhbmdlIG1vc3QgR3Jh
cGhpY3NMYXllcjo6Y3JlYXRlIGNhbGxzIHRvIHVzZSB0aGUgdmVyc2lvbiB0aGF0IHRha2VzIGEg
R3JhcGhpY3NMYXllckZhY3RvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDM0
NjFkYmJlZjU5OTUwYzg5NzAwMzNlNzJkNzg1NjA2NGM4ZjJiZGIuLjFhMGM3OGQ0M2M5MTE3ZTA1
MTg4NmMyYWYxMzNjZDRmNDNlYzE4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpA
QCAtNTk0Miw2ICs1OTQyLDggQEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvR3RrRHJhZ0FuZERyb3BIZWxwZXIuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVyLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVyLmggXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9HdGtNZWRpYUNob29zZXJEaWFsb2cuY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR3RrTWVkaWFDaG9vc2VyRGlhbG9nLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvR3RrVXRpbGl0aWVzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HT3du
UHRyR3RrLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3Rr
TWVkaWFDaG9vc2VyRGlhbG9nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtN
ZWRpYUNob29zZXJEaWFsb2cuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlODE3MTEyYjRiYjczZWYxYzE3MTM5
YjIwNGIxY2Y1YzZmNzgxYjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvR3RrTWVkaWFDaG9vc2VyRGlhbG9nLmNwcApAQCAtMCwwICsxLDE3MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBDb2xsYWJvcmEuCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJHdGtNZWRpYUNob29zZXJEaWFsb2cuaCIKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFt
U291cmNlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhUmVxdWVzdC5oIgorI2luY2x1
ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHdGtNZWRpYUNob29z
ZXJEaWFsb2c6Okd0a01lZGlhQ2hvb3NlckRpYWxvZyhHdGtXaWRnZXQqIHBhcmVudCwgVXNlck1l
ZGlhUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlv
U291cmNlLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2UpCisgICAg
OiBtX2RpYWxvZygwKQorICAgICwgbV9hdWRpb0NvbWJvKDApCisgICAgLCBtX3ZpZGVvQ29tYm8o
MCkKK3sKKyAgICBHdGtXaWRnZXQqIHZib3g7CisgICAgR3RrV2lkZ2V0KiBhdWRpb01lc3NhZ2Ug
PSAwOworICAgIEd0a1dpZGdldCogdmlkZW9NZXNzYWdlID0gMDsKKyAgICBib29sIHdhbnRzQXVk
aW8gPSByZXF1ZXN0LT5hdWRpbygpOworICAgIGJvb2wgd2FudHNWaWRlbyA9IHJlcXVlc3QtPnZp
ZGVvKCk7CisgICAgaW50IGF1ZGlvTGlzdExlbmd0aCA9IGF1ZGlvU291cmNlLnNpemUoKTsKKyAg
ICBpbnQgdmlkZW9MaXN0TGVuZ3RoID0gdmlkZW9Tb3VyY2Uuc2l6ZSgpOworICAgIGJvb2wgaGFz
QXVkaW8gPSAoYXVkaW9MaXN0TGVuZ3RoID4gMCk7CisgICAgYm9vbCBoYXNWaWRlbyA9ICh2aWRl
b0xpc3RMZW5ndGggPiAwKTsKKyAgICBpbnQgaSA9IDA7CisKKyAgICBnY2hhciogb3JpZ2luID0g
Z19zdHJkdXAocmVxdWVzdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdp
bigpLT50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGdjaGFyKiB0aXRsZTsKKyAgICBp
ZiAod2FudHNBdWRpbyAmJiB3YW50c1ZpZGVvKQorICAgICAgICB0aXRsZSA9IGdfc3RyZHVwX3By
aW50ZihfKCIlcyB3YW50cyB0byB1c2UgeW91ciBjYW1lcmEgYW5kIG1pY3JvcGhvbmUiKSwgb3Jp
Z2luKTsKKyAgICBlbHNlIGlmICh3YW50c0F1ZGlvKQorICAgICAgICB0aXRsZSA9IGdfc3RyZHVw
X3ByaW50ZihfKCIlcyB3YW50cyB0byB1c2UgeW91ciBtaWNyb3Bob25lIiksIG9yaWdpbik7Cisg
ICAgZWxzZQorICAgICAgICB0aXRsZSA9IGdfc3RyZHVwX3ByaW50ZihfKCIlcyB3YW50cyB0byB1
c2UgeW91ciBjYW1lcmEiKSwgb3JpZ2luKTsKKworICAgIG1fZGlhbG9nID0gZ3RrX2RpYWxvZ19u
ZXdfd2l0aF9idXR0b25zKHRpdGxlLAorICAgICAgICBwYXJlbnQ/IEdUS19XSU5ET1cocGFyZW50
KSA6IDAsCisgICAgICAgIEdUS19ESUFMT0dfREVTVFJPWV9XSVRIX1BBUkVOVCwKKyAgICAgICAg
R1RLX1NUT0NLX0NBTkNFTCwKKyAgICAgICAgR1RLX1JFU1BPTlNFX0NBTkNFTCwKKyAgICAgICAg
R1RLX1NUT0NLX09LLAorICAgICAgICBHVEtfUkVTUE9OU0VfT0ssCisgICAgICAgIDApOworCisg
ICAgZ3RrX3dpbmRvd19zZXRfcmVzaXphYmxlKEdUS19XSU5ET1cobV9kaWFsb2cpLCBGQUxTRSk7
CisgICAgZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoKEdUS19DT05UQUlORVIobV9kaWFs
b2cpLCA1KTsKKworICAgIEd0a1dpZGdldCogY29udGVudEFyZWEgPSBndGtfZGlhbG9nX2dldF9j
b250ZW50X2FyZWEoR1RLX0RJQUxPRyhtX2RpYWxvZykpOworICAgIGd0a19ib3hfc2V0X3NwYWNp
bmcoR1RLX0JPWChjb250ZW50QXJlYSksIDIpOworCisgICAgR3RrV2lkZ2V0KiBhY3Rpb25BcmVh
ID0gZ3RrX2RpYWxvZ19nZXRfYWN0aW9uX2FyZWEoR1RLX0RJQUxPRyhtX2RpYWxvZykpOworICAg
IGd0a19jb250YWluZXJfc2V0X2JvcmRlcl93aWR0aChHVEtfQ09OVEFJTkVSKGFjdGlvbkFyZWEp
LCA1KTsKKyAgICBndGtfYm94X3NldF9zcGFjaW5nKEdUS19CT1goYWN0aW9uQXJlYSksIDYpOwor
CisgICAgaWYgKCFoYXNBdWRpbyAmJiAhaGFzVmlkZW8pIHsKKyAgICAgICAgYXVkaW9NZXNzYWdl
ID0gZ3RrX2xhYmVsX25ldyhfKCJObyB2aWRlbyBvciBhdWRpbyBpbnB1dCBkZXZpY2VzIGF2YWls
YWJsZSIpKTsKKyAgICAgICAgZ3RrX21pc2Nfc2V0X2FsaWdubWVudChHVEtfTUlTQyhhdWRpb01l
c3NhZ2UpLCAwLCAwKTsKKyAgICAgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goY29udGVu
dEFyZWEpLCBhdWRpb01lc3NhZ2UsIEZBTFNFLCBGQUxTRSwgNik7CisgICAgfSBlbHNlIGlmICh3
YW50c0F1ZGlvKSB7CisgICAgICAgIGF1ZGlvTWVzc2FnZSA9IGd0a19sYWJlbF9uZXcoaGFzQXVk
aW8gPyBfKCJTZWxlY3QgYW4gYXVkaW8gaW5wdXQgZGV2aWNlIikgOiBfKCJObyBhdWRpbyBpbnB1
dCBkZXZpY2UgYXZhaWxhYmxlIikpOworICAgICAgICBndGtfbWlzY19zZXRfYWxpZ25tZW50KEdU
S19NSVNDKGF1ZGlvTWVzc2FnZSksIDAsIDApOworICAgICAgICBndGtfYm94X3BhY2tfc3RhcnQo
R1RLX0JPWChjb250ZW50QXJlYSksIGF1ZGlvTWVzc2FnZSwgRkFMU0UsIEZBTFNFLCA2KTsKKyAg
ICB9CisKKyAgICBpZiAoaGFzQXVkaW8pIHsKKyAgICAgICAgR3RrV2lkZ2V0KiBmcmFtZSA9IGd0
a19mcmFtZV9uZXcoXygiQXVkaW8iKSk7CisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgMiwgMCkK
KyAgICAgICAgdmJveCA9IGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgMCk7
CisjZWxzZQorICAgICAgICB2Ym94ID0gZ3RrX3Zib3hfbmV3KFRSVUUsIDApOworI2VuZGlmCisg
ICAgICAgIGd0a19jb250YWluZXJfc2V0X2JvcmRlcl93aWR0aChHVEtfQ09OVEFJTkVSKHZib3gp
LCAzKTsKKworICAgICAgICBtX2F1ZGlvQ29tYm8gPSBndGtfY29tYm9fYm94X3RleHRfbmV3KCk7
CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBhdWRpb0xpc3RMZW5ndGg7IGkrKykKKyAgICAgICAg
ICAgIGd0a19jb21ib19ib3hfdGV4dF9hcHBlbmRfdGV4dChHVEtfQ09NQk9fQk9YX1RFWFQobV9h
dWRpb0NvbWJvKSwgKGF1ZGlvU291cmNlW2ldLT5uYW1lKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgIGd0a19jb21ib19ib3hfc2V0X2FjdGl2ZShHVEtfQ09NQk9fQk9YKG1fYXVkaW9Db21ibyks
IDApOworICAgICAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHZib3gpLCBtX2F1
ZGlvQ29tYm8pOworCisgICAgICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIoZnJh
bWUpLCB2Ym94KTsKKyAgICAgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goY29udGVudEFy
ZWEpLCBmcmFtZSwgRkFMU0UsIEZBTFNFLCAzKTsKKyAgICB9CisKKyAgICBpZiAod2FudHNWaWRl
bykgeworICAgICAgICBpZiAoaGFzVmlkZW8pIHsKKyAgICAgICAgICAgIHZpZGVvTWVzc2FnZSA9
IGd0a19sYWJlbF9uZXcoXygiU2VsZWN0IGFuIHZpZGVvIGlucHV0IGRldmljZSIpKTsKKyAgICAg
ICAgfSBlbHNlIGlmICghd2FudHNBdWRpbyB8fCBoYXNBdWRpbykKKyAgICAgICAgICAgIHZpZGVv
TWVzc2FnZSA9IGd0a19sYWJlbF9uZXcoXygiTm8gdmlkZW8gaW5wdXQgZGV2aWNlIGF2YWlsYWJs
ZSIpKTsKKyAgICAgICAgaWYgKHZpZGVvTWVzc2FnZSkgeworICAgICAgICAgICAgZ3RrX21pc2Nf
c2V0X2FsaWdubWVudChHVEtfTUlTQyh2aWRlb01lc3NhZ2UpLCAwLCAwKTsKKyAgICAgICAgICAg
IGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGNvbnRlbnRBcmVhKSwgdmlkZW9NZXNzYWdlLCBG
QUxTRSwgRkFMU0UsIDYpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGhhc1ZpZGVvKSB7
CisgICAgICAgIEd0a1dpZGdldCogZnJhbWUgPSBndGtfZnJhbWVfbmV3KF8oIlZpZGVvIikpOwor
I2lmIEdUS19DSEVDS19WRVJTSU9OKDMsIDIsIDApCisgICAgICAgIHZib3ggPSBndGtfYm94X25l
dyhHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIDApOworI2Vsc2UKKyAgICAgICAgdmJveCA9IGd0
a192Ym94X25ldyhUUlVFLCAwKTsKKyNlbmRpZgorICAgICAgICBndGtfY29udGFpbmVyX3NldF9i
b3JkZXJfd2lkdGgoR1RLX0NPTlRBSU5FUih2Ym94KSwgMyk7CisKKyAgICAgICAgbV92aWRlb0Nv
bWJvID0gZ3RrX2NvbWJvX2JveF90ZXh0X25ldygpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwg
dmlkZW9MaXN0TGVuZ3RoOyBpKyspCisgICAgICAgICAgICBndGtfY29tYm9fYm94X3RleHRfYXBw
ZW5kX3RleHQoR1RLX0NPTUJPX0JPWF9URVhUKG1fdmlkZW9Db21ibyksIHZpZGVvU291cmNlW2ld
LT5uYW1lKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGd0a19jb21ib19ib3hfc2V0X2FjdGl2
ZShHVEtfQ09NQk9fQk9YKG1fdmlkZW9Db21ibyksIDApOworICAgICAgICBndGtfY29udGFpbmVy
X2FkZChHVEtfQ09OVEFJTkVSKHZib3gpLCBtX3ZpZGVvQ29tYm8pOworCisgICAgICAgIGd0a19j
b250YWluZXJfYWRkKEdUS19DT05UQUlORVIoZnJhbWUpLCB2Ym94KTsKKyAgICAgICAgZ3RrX2Jv
eF9wYWNrX3N0YXJ0KEdUS19CT1goY29udGVudEFyZWEpLCBmcmFtZSwgRkFMU0UsIEZBTFNFLCAz
KTsKKyAgICB9CisKKyAgICBnX2ZyZWUodGl0bGUpOworICAgIGdfZnJlZShvcmlnaW4pOworfQor
CitHdGtNZWRpYUNob29zZXJEaWFsb2c6On5HdGtNZWRpYUNob29zZXJEaWFsb2coKQoreworICAg
IGd0a193aWRnZXRfZGVzdHJveShtX2RpYWxvZyk7Cit9CisKK2ludCBHdGtNZWRpYUNob29zZXJE
aWFsb2c6OnNlbGVjdGVkQXVkaW8oKQoreworICAgIGlmIChtX2F1ZGlvQ29tYm8pCisgICAgICAg
IHJldHVybiBndGtfY29tYm9fYm94X2dldF9hY3RpdmUoR1RLX0NPTUJPX0JPWChtX2F1ZGlvQ29t
Ym8pKTsKKworICAgIHJldHVybiAtMTsKK30KKworaW50IEd0a01lZGlhQ2hvb3NlckRpYWxvZzo6
c2VsZWN0ZWRWaWRlbygpCit7CisgICAgaWYgKG1fdmlkZW9Db21ibykKKyAgICAgICAgcmV0dXJu
IGd0a19jb21ib19ib3hfZ2V0X2FjdGl2ZShHVEtfQ09NQk9fQk9YKG1fdmlkZW9Db21ibykpOwor
CisgICAgcmV0dXJuIC0xOworfQorCit2b2lkIEd0a01lZGlhQ2hvb3NlckRpYWxvZzo6c2hvdygp
Cit7CisgICAgZ3RrX3dpZGdldF9zaG93X2FsbChtX2RpYWxvZyk7Cit9CisKK0d0a1dpZGdldCog
R3RrTWVkaWFDaG9vc2VyRGlhbG9nOjp3aWRnZXQoKQoreworICAgIHJldHVybiBtX2RpYWxvZzsK
K30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a01lZGlh
Q2hvb3NlckRpYWxvZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a01lZGlhQ2hv
b3NlckRpYWxvZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhZjI0NmUyYzYzYzYxNmJmMTUxNDI1MWZiMjU0ZTBm
NzgwZjM1ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
R3RrTWVkaWFDaG9vc2VyRGlhbG9nLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBDb2xsYWJvcmEuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgR3RrTWVkaWFDaG9vc2VyRGlhbG9nX2gKKyNk
ZWZpbmUgR3RrTWVkaWFDaG9vc2VyRGlhbG9nX2gKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291
cmNlLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhUmVxdWVzdC5oIgorCisjaW5jbHVkZSA8d3RmL0Zh
c3RBbGxvY0Jhc2UuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBHdGtNZWRpYUNob29zZXJEaWFsb2cgeworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEd0a01lZGlhQ2hvb3NlckRpYWxvZyk7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CisKK3B1YmxpYzoKKyAgICBHdGtNZWRpYUNob29zZXJEaWFsb2coR3RrV2lkZ2V0
ICpwYXJlbnQsIFVzZXJNZWRpYVJlcXVlc3QqLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3Rv
ciYsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJik7CisgICAgfkd0a01lZGlhQ2hvb3Nl
ckRpYWxvZygpOworCisgICAgdm9pZCBzaG93KCk7CisgICAgaW50IHNlbGVjdGVkQXVkaW8oKTsK
KyAgICBpbnQgc2VsZWN0ZWRWaWRlbygpOworICAgIEd0a1dpZGdldCogd2lkZ2V0KCk7CisKK3By
aXZhdGU6CisKKyAgICBHdGtXaWRnZXQgKm1fZGlhbG9nOworICAgIEd0a1dpZGdldCAqbV9hdWRp
b0NvbWJvOworICAgIEd0a1dpZGdldCAqbV92aWRlb0NvbWJvOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gR3RrTWVkaWFDaG9vc2VyRGlhbG9nX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdC9ndGsv
R05VbWFrZWZpbGUuYW0KaW5kZXggNWJlOWViNTQ4ZWUwMjNkMTQwYTM1ZDE2NjI0MzNkNTgxYmI3
MWI4My4uZmJhODRiYzBmMTAyZjNiNzI0OWJkMmUzMzNlMDhiZGIxOWE5MTRiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdC9n
dGsvR05VbWFrZWZpbGUuYW0KQEAgLTE0Miw2ICsxNDIsOCBAQCB3ZWJraXRndGtfc3RhdGljX2hf
YXBpICs9IFwKIAkkKHNyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBv
bGljeWRlY2lzaW9uLmggXAogCSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2VicmVzb3VyY2UuaCBcCiAJJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJzZXR0aW5ncy5oIFwKKwkkKHNyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3QuaCBcCisJJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0LmggXAogCSQoc3JjZGlyKS9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaCBcCiAJJChzcmNkaXIp
L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKIApAQCAtMjc2LDYgKzI3
OCwxMCBAQCB3ZWJraXRndGtfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnBsdWdpbmRhdGFiYXNlcHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwIFwKIAlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vic2V0dGluZ3Nwcml2YXRlLmggXAorCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmNwcCBcCisJU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnVzZXJtZWRpYWxpc3Rwcml2YXRlLmggXAorCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0LmNwcCBcCisJU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlLmggXAogCVNvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBcCiAJU291cmNlL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnZpZXdwcml2YXRlLmggXAogCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ3aW5kb3dmZWF0dXJlcy5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L1VzZXJNZWRpYUNsaWVudEd0ay5jcHAKaW5kZXggMzkxNjc2YWZiNWFm
OWYwNzVlYjI2YjA2OWFjOTM1Y2YwZWJmM2NjNi4uNTc3ZjVhMDNmNTZiNDM1Zjg1ZmU2MDczYzBh
NDIyMjFjMGZlN2ZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvVXNlck1lZGlhQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9Vc2VyTWVkaWFDbGllbnRHdGsuY3BwCkBAIC0yMiwxNSArMjIsMTYgQEAKICNpbmNs
dWRlICJVc2VyTWVkaWFDbGllbnRHdGsuaCIKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0j
aW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgotI2luY2x1ZGUgIlVzZXJNZWRpYVJlcXVlc3QuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2Vy
bWVkaWFsaXN0cHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rw
cml2YXRlLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotVXNlck1lZGlhQ2xpZW50R3RrOjpVc2VyTWVkaWFDbGllbnRHdGsoKQorVXNlck1lZGlh
Q2xpZW50R3RrOjpVc2VyTWVkaWFDbGllbnRHdGsoV2ViS2l0V2ViVmlldyogd2ViVmlldykKKyAg
ICA6IG1fd2ViVmlldyh3ZWJWaWV3KQogewogfQogCkBAIC00MCwxMiArNDEsMTIgQEAgVXNlck1l
ZGlhQ2xpZW50R3RrOjp+VXNlck1lZGlhQ2xpZW50R3RrKCkKIAogdm9pZCBVc2VyTWVkaWFDbGll
bnRHdGs6OnBhZ2VEZXN0cm95ZWQoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKIHZv
aWQgVXNlck1lZGlhQ2xpZW50R3RrOjpyZXF1ZXN0VXNlck1lZGlhKFdURjo6UGFzc1JlZlB0cjxV
c2VyTWVkaWFSZXF1ZXN0PiBwcnBSZXF1ZXN0LCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3Rv
ciYgYXVkaW9Tb3VyY2UsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2aWRlb1NvdXJj
ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0
PiByZXF1ZXN0ID0gcHJwUmVxdWVzdDsKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV93ZWJW
aWV3LCAiY2hvb3NlLW1lZGlhLWRldmljZSIsIGtpdE5ldyhyZXF1ZXN0LmdldCgpKSwga2l0TmV3
KGF1ZGlvU291cmNlKSwga2l0TmV3KHZpZGVvU291cmNlKSk7CiB9CiAKIHZvaWQgVXNlck1lZGlh
Q2xpZW50R3RrOjpjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KFVzZXJNZWRpYVJlcXVlc3QqIHJlcXVl
c3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Vc2VyTWVk
aWFDbGllbnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1VzZXJNZWRp
YUNsaWVudEd0ay5oCmluZGV4IDAzNjJhNGEzZDAyMzMxNTFjYTAxNTMxNDNkNDU2ZGNjMWE0YTYw
MzMuLjk1NzAwZWZiMzUzNjkzOGViZGNkMzY0NjdkM2RlYTIzZGEzNzNiNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1VzZXJNZWRpYUNsaWVudEd0ay5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1VzZXJNZWRpYUNsaWVudEd0ay5o
CkBAIC0yMiwxOCArMjIsMjkgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNs
dWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudC5oIgog
Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmlldyBXZWJLaXRXZWJWaWV3OworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBVc2VyTWVkaWFSZXF1ZXN0OworfQorCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogY2xhc3MgVXNlck1lZGlhQ2xpZW50R3RrIDogcHVibGljIFdlYkNvcmU6OlVzZXJN
ZWRpYUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgVXNlck1lZGlhQ2xpZW50R3RrKCk7CisgICAgVXNl
ck1lZGlhQ2xpZW50R3RrKFdlYktpdFdlYlZpZXcqKTsKICAgICB2aXJ0dWFsIH5Vc2VyTWVkaWFD
bGllbnRHdGsoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCk7CisKICAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRpYShXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VXNl
ck1lZGlhUmVxdWVzdD4sIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiwg
Y29uc3QgV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImKTsKICAgICB2aXJ0dWFsIHZv
aWQgY2FuY2VsVXNlck1lZGlhUmVxdWVzdChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Kik7CisK
K3ByaXZhdGU6CisgICAgV2ViS2l0V2ViVmlldyogbV93ZWJWaWV3OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzL3dlYmtpdGd0
ay1kb2NzLnNnbWwgYi9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzL3dlYmtpdGd0ay1kb2NzLnNnbWwK
aW5kZXggNzIxMDY1MjJmYjViYWJhOGIwMDlmZTM1NDRiOWFkZjIzZmNiYjE5OC4uNWEzYWJiM2Y2
NzE4ZTUxNWFjZDMzMTA5ZTE0ZmU5ZmU5YTA0YzM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ndGsvZG9jcy93ZWJraXRndGstZG9jcy5zZ21sCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL2Rv
Y3Mvd2Via2l0Z3RrLWRvY3Muc2dtbApAQCAtMzMsNiArMzMsOCBAQAogICAgIDx4aTppbmNsdWRl
IGhyZWY9InhtbC93ZWJraXRkb3dubG9hZC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4
bWwvd2Via2l0dmlld3BvcnRhdHRyaWJ1dGVzLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9
InhtbC93ZWJraXRoaXR0ZXN0cmVzdWx0LnhtbCIvPgorICAgIDx4aTppbmNsdWRlIGhyZWY9Inht
bC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LnhtbCIvPgorICAgIDx4aTppbmNsdWRlIGhyZWY9Inht
bC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0LnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9
InhtbC93ZWJraXR3ZWJwbHVnaW4ueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dl
YmtpdHdlYnBsdWdpbmRhdGFiYXNlLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC93
ZWJraXRzb3VwYXV0aGRpYWxvZy54bWwiLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L2RvY3Mvd2Via2l0Z3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvZ3RrL2RvY3Mvd2Vi
a2l0Z3RrLXNlY3Rpb25zLnR4dAppbmRleCBiNzA3YmY4M2Q3MTFhMGMxZTE3N2FiNjRmMTQ3NmY0
YzFlMGZiZTdhLi5jZTExOWI4OGNhNDM4NmM5Njg2Zjg3NGZmNGM2YTNlZTRhYTcxNjkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzL3dlYmtpdGd0ay1zZWN0aW9ucy50eHQKKysr
IGIvU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJraXRndGstc2VjdGlvbnMudHh0CkBAIC02ODYs
NiArNjg2LDQ5IEBAIFdlYktpdEljb25EYXRhYmFzZVByaXZhdGUKIDwvU0VDVElPTj4KIAogPFNF
Q1RJT04+Cis8RklMRT53ZWJraXR3ZWJ1c2VybWVkaWFsaXN0PC9GSUxFPgorPFRJVExFPldlYktp
dFdlYlVzZXJNZWRpYUxpc3Q8L1RJVExFPgorV2ViS2l0V2ViVXNlck1lZGlhTGlzdAord2Via2l0
X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2xlbmd0aAord2Via2l0X3dlYl91c2VyX21lZGlhX2xp
c3RfZ2V0X2l0ZW1fbmFtZQord2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfaXNfaXRlbV9zZWxl
Y3RlZAord2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3Rfc2VsZWN0X2l0ZW0KKzxTVUJTRUNUSU9O
IFN0YW5kYXJkPgorV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX0xJU1QKK1dFQktJVF9JU19XRUJf
VVNFUl9NRURJQV9MSVNUX0NMQVNTCitXRUJLSVRfV0VCX1VTRVJfTUVESUFfTElTVAorV0VCS0lU
X1dFQl9VU0VSX01FRElBX0xJU1RfQ0xBU1MKK1dFQktJVF9XRUJfVVNFUl9NRURJQV9MSVNUX0dF
VF9DTEFTUworV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfTElTVAorPFNVQlNFQ1RJT04gUHJp
dmF0ZT4KK1dlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlCitXZWJLaXRXZWJVc2VyTWVkaWFM
aXN0Q2xhc3MKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF90eXBlCis8L1NFQ1RJT04+
CisKKzxTRUNUSU9OPgorPEZJTEU+d2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdDwvRklMRT4KKzxU
SVRMRT5XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0PC9USVRMRT4KK1dlYktpdFdlYlVzZXJNZWRp
YVJlcXVlc3QKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2ZhaWwKK3dlYmtpdF93ZWJf
dXNlcl9tZWRpYV9yZXF1ZXN0X3N1Y2NlZWQKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0
X3dhbnRzX2F1ZGlvCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF93YW50c192aWRlbwor
d2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZ2V0X3NlY3VyaXR5X29yaWdpbgorPFNVQlNF
Q1RJT04gU3RhbmRhcmQ+CitXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfUkVRVUVTVAorV0VCS0lU
X0lTX1dFQl9VU0VSX01FRElBX1JFUVVFU1RfQ0xBU1MKK1dFQktJVF9UWVBFX1dFQl9VU0VSX01F
RElBX1JFUVVFU1QKK1dFQktJVF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUCitXRUJLSVRfV0VCX1VT
RVJfTUVESUFfUkVRVUVTVF9DTEFTUworV0VCS0lUX1dFQl9VU0VSX01FRElBX1JFUVVFU1RfR0VU
X0NMQVNTCis8U1VCU0VDVElPTiBQcml2YXRlPgorV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdENs
YXNzCitXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZQord2Via2l0X3dlYl91c2VyX21l
ZGlhX3JlcXVlc3RfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT53ZWJr
aXRmYXZpY29uZGF0YWJhc2U8L0ZJTEU+CiA8VElUTEU+V2ViS2l0RmF2aWNvbkRhdGFiYXNlPC9U
SVRMRT4KIFdlYktpdEZhdmljb25EYXRhYmFzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdC5oIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCmlu
ZGV4IGFhN2I5M2RiZGE4YzI2ZGUyMWU5ODJkMzljNjE2NWZiOGMyZjVlNzcuLmJmMTZhMjVlOTJl
ZDU1ZjliMjA3YjRhNzJiYzYzYmI4OTY5ZjFlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
LmgKQEAgLTUxLDYgKzUxLDggQEAKICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2VicG9saWN5ZGVj
aXNpb24uaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2VicmVzb3VyY2UuaD4KICNpbmNsdWRl
IDx3ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vi
dXNlcm1lZGlhbGlzdC5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1
ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnZpZXcuaD4KICNpbmNsdWRlIDx3ZWJr
aXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3QuY3BwIGIvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3MmRkNGM2
NTA2ODMyMGM4MGRmYThhNDBhOTIxOWJkOGE0ZGQ0YTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdC5jcHAKQEAgLTAsMCAr
MSwxNjcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIENvbGxhYm9yYSBMdGQuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
ICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhl
IEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAid2Via2l0d2VidXNlcm1lZGlhbGlzdC5oIgorCisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIndlYmtpdGdsb2JhbHNwcml2YXRlLmgi
CisjaW5jbHVkZSAid2Via2l0d2VidXNlcm1lZGlhbGlzdHByaXZhdGUuaCIKKyNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CisKKworLyoqCisgKiBTRUNUSU9OOndlYmtpdHdlYnVzZXJtZWRp
YWxpc3QKKyAqIEBzaG9ydF9kZXNjcmlwdGlvbjogVXNlck1lZGlhIExpc3QKKyAqIEBUaXRsZTog
V2ViS2l0V2ViVXNlck1lZGlhTGlzdAorICoKKyAqICNXZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGNv
bnRhaW5zIGEgbGlzdCBvZgorICogYXVkaW8gb3IgdmlkZW8gc291cmNlcyBmcm9tIGEgV2ViVXNl
ck1lZGlhUmVxdWVzdAorICoKKyAqIFNpbmNlOiAyLjAKKyAqLworCit1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OworCitzdHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlIHsKKyAgICBX
ZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBzb3VyY2VzOworICAgIFZlY3Rvcjxib29s
PiBzb3VyY2VTZWxlY3Rpb25zOworfTsKKworR19ERUZJTkVfVFlQRShXZWJLaXRXZWJVc2VyTWVk
aWFMaXN0LCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdCwgR19UWVBFX09CSkVDVCkKKworc3Rh
dGljIHZvaWQgd2Via2l0V2ViVXNlck1lZGlhTGlzdEZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkK
K3sKKyAgICBXRUJLSVRfV0VCX1VTRVJfTUVESUFfTElTVChvYmplY3QpLT5wcml2LT5+V2ViS2l0
V2ViVXNlck1lZGlhTGlzdFByaXZhdGUoKTsKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2Vi
X3VzZXJfbWVkaWFfbGlzdF9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOworfQorCitz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9jbGFzc19pbml0KFdlYktpdFdl
YlVzZXJNZWRpYUxpc3RDbGFzcyogbGlzdENsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogZ29i
amVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MobGlzdENsYXNzKTsKKyAgICBnb2JqZWN0Q2xhc3Mt
PmZpbmFsaXplID0gd2Via2l0V2ViVXNlck1lZGlhTGlzdEZpbmFsaXplOworCisgICAgd2Via2l0
SW5pdCgpOworCisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGxpc3RDbGFzcywgc2l6ZW9m
KFdlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRlKSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtp
dF93ZWJfdXNlcl9tZWRpYV9saXN0X2luaXQoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCogbGlzdCkK
K3sKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNU
QU5DRV9HRVRfUFJJVkFURShsaXN0LCBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNULCBX
ZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZSk7CisgICAgbGlzdC0+cHJpdiA9IHByaXY7CisK
KyAgICAvLyBwbGFjZW1lbnQgbmV3IHN5bnRheAorICAgIG5ldyAocHJpdikgV2ViS2l0V2ViVXNl
ck1lZGlhTGlzdFByaXZhdGUoKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFf
bGlzdF9nZXRfbGVuZ3RoOgorICogQGxpc3Q6IHRoZSBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGl0
c2VsZgorICoKKyAqIFJldHVybnMgdGhlIHNpemUgb2YgdGhlIGVsZW1lbnRzIGxpc3QuCisgKgor
ICogUmV0dXJuIHZhbHVlOiBudW1iZXIgb2YgZWxlbWVudHMuCisgKgorICogU2luY2U6IDIuMAor
ICovCitndWludCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfbGVuZ3RoKFdlYktpdFdl
YlVzZXJNZWRpYUxpc3QqIGxpc3QpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9VU0VSX01FRElBX0xJU1QobGlzdCksIDApOworCisgICAgcmV0dXJuIGNvcmUobGlz
dCkuc2l6ZSgpOworfQorCisKKy8qKgorICogd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0
X2l0ZW1fbmFtZToKKyAqIEBsaXN0OiB0aGUgI1dlYktpdFdlYlVzZXJNZWRpYUxpc3QgaXRzZWxm
CisgKiBAaW5kZXg6IHRoZSB3YW50ZWQgZWxlbWVudCBpbmRleC4KKyAqCisgKiBSZXR1cm5zIHRo
ZSBkZXZpY2UgbmFtZSBvZiB0aGUgZWxlbWVudC4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IHRoZSBk
ZXZpY2UgaWQgb2YgdGhlIEBpbmRleCBnaXZlbiBlbGVtZW50LgorICoKKyAqIFNpbmNlOiAyLjAK
KyAqLworY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9pdGVtX25h
bWUoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCogbGlzdCwgZ3VpbnQgaW5kZXgpCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX0xJU1QobGlzdCksIDAp
OworCisgICAgV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHNvdXJjZXMgPSBjb3Jl
KGxpc3QpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGluZGV4IDwgc291cmNlcy5zaXplKCks
IDApOworCisgICAgcmV0dXJuIGdfc3RyZHVwKHNvdXJjZXNbaW5kZXhdLT5uYW1lKCkudXRmOCgp
LmRhdGEoKSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfaXNfaXRl
bV9zZWxlY3RlZDoKKyAqIEBsaXN0OiB0aGUgI1dlYktpdFdlYlVzZXJNZWRpYUxpc3QgaXRzZWxm
CisgKiBAaW5kZXg6IHRoZSB3YW50ZWQgZWxlbWVudCBpbmRleC4KKyAqCisgKiBJbmRpY2F0ZSBp
ZiBhIGRldmljZSBpcyBtYXJrZWQgYXMgc2VsZWN0ZWQuCisgKgorICogUmV0dXJuIHZhbHVlOiBU
cnVlIGlmIHRoZSBkZXZpY2UgcmVwcmVzZW50ZWQgYnkgQGluZGV4IGlzIG1hcmtlZCBhcyBzZWxl
Y3RlZC4KKyAqCisgKiBTaW5jZTogMi4wCisgKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfdXNlcl9t
ZWRpYV9saXN0X2lzX2l0ZW1fc2VsZWN0ZWQoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCogbGlzdCwg
Z3VpbnQgaW5kZXgpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9V
U0VSX01FRElBX0xJU1QobGlzdCksIEZBTFNFKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChp
bmRleCA8IGNvcmUobGlzdCkuc2l6ZSgpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gbGlzdC0+cHJp
di0+c291cmNlU2VsZWN0aW9uc1tpbmRleF07Cit9CisKKy8qKgorICogd2Via2l0X3dlYl91c2Vy
X21lZGlhX2xpc3Rfc2VsZWN0X2l0ZW06CisgKiBAbGlzdDogdGhlICNXZWJLaXRXZWJVc2VyTWVk
aWFMaXN0IGl0c2VsZgorICogQGluZGV4OiB0aGUgd2FudGVkIGVsZW1lbnQgaW5kZXguCisgKgor
ICogTWFyayBhIGRldmljZSBhcyBzZWxlY3RlZWQuCisgKgorICogU2luY2U6IDIuMAorICovCit2
b2lkIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X3NlbGVjdF9pdGVtKFdlYktpdFdlYlVzZXJN
ZWRpYUxpc3QqIGxpc3QsIGd1aW50IGluZGV4KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9VU0VSX01FRElBX0xJU1QobGlzdCkpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwo
aW5kZXggPCBjb3JlKGxpc3QpLnNpemUoKSk7CisKKyAgICBsaXN0LT5wcml2LT5zb3VyY2VTZWxl
Y3Rpb25zW2luZGV4XSA9IFRSVUU7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJDb3Jl
OjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgY29yZShXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBs
aXN0KQoreworICAgIHJldHVybiBsaXN0LT5wcml2LT5zb3VyY2VzOworfQorCitXZWJLaXRXZWJV
c2VyTWVkaWFMaXN0KiBraXROZXcoY29uc3QgV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0
b3ImIHNvdXJjZXMpCit7CisgICAgV2ViS2l0V2ViVXNlck1lZGlhTGlzdCogd2ViTGlzdCA9IFdF
QktJVF9XRUJfVVNFUl9NRURJQV9MSVNUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVVNF
Ul9NRURJQV9MSVNULCBOVUxMKSk7CisgICAgd2ViTGlzdC0+cHJpdi0+c291cmNlcyA9IHNvdXJj
ZXM7CisgICAgd2ViTGlzdC0+cHJpdi0+c291cmNlU2VsZWN0aW9ucy5maWxsKEZBTFNFLCBzb3Vy
Y2VzLnNpemUoKSk7CisKKyAgICByZXR1cm4gd2ViTGlzdDsKK30KKworfQorCisjZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmggYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2VidXNlcm1lZGlhbGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmYTI4ZTk4NDNmNDU5ZWJiZDIxNzcz
ZGQwZTg3MDZmZWM5MTdhZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdC5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiAg
Q29weXJpZ2h0IChDKSAyMDEyIENvbGxhYm9yYSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAq
ICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0
b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisKKyNpZm5kZWYgd2Via2l0d2VidXNlcm1l
ZGlhbGlzdF9oCisjZGVmaW5lIHdlYmtpdHdlYnVzZXJtZWRpYWxpc3RfaAorCisjaW5jbHVkZSA8
Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDxnbGliLmg+CisKKyNpbmNsdWRlIDx3ZWJraXQvd2Vi
a2l0ZGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfV0VC
X1VTRVJfTUVESUFfTElTVCAgICAgICAgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlz
dF9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfV0VCX1VTRVJfTUVESUFfTElTVChvYmopICAg
ICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQ
RV9XRUJfVVNFUl9NRURJQV9MSVNULCBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KSkKKyNkZWZpbmUg
V0VCS0lUX1dFQl9VU0VSX01FRElBX0xJU1RfQ0xBU1Moa2xhc3MpICAgICAgIChHX1RZUEVfQ0hF
Q0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfTElTVCwg
V2ViS2l0V2ViVXNlck1lZGlhTGlzdENsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9VU0VS
X01FRElBX0xJU1Qob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgo
b2JqKSwgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfTElTVCkpCisjZGVmaW5lIFdFQktJVF9J
U19XRUJfVVNFUl9NRURJQV9MSVNUX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNT
X1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1QpKQorI2RlZmlu
ZSBXRUJLSVRfV0VCX1VTRVJfTUVESUFfTElTVF9HRVRfQ0xBU1Mob2JqKSAgICAgKEdfVFlQRV9J
TlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNU
LCBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0Q2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0
V2ViVXNlck1lZGlhTGlzdCBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0OwordHlwZWRlZiBzdHJ1Y3Qg
X1dlYktpdFdlYlVzZXJNZWRpYUxpc3RDbGFzcyBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0Q2xhc3M7
Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGUgV2ViS2l0V2Vi
VXNlck1lZGlhTGlzdFByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhTGlzdCB7
CisgICAgR09iamVjdCBwYXJlbnRfaW5zdGFuY2U7CisgICAgV2ViS2l0V2ViVXNlck1lZGlhTGlz
dFByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRpYUxpc3RDbGFz
cyB7CisgICAgR09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKK307CisKK1dFQktJVF9BUEkgR1R5
cGUKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF90eXBlICh2b2lkKSBHX0dOVUNfQ09O
U1Q7CisKK1dFQktJVF9BUEkgZ3VpbnQKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9s
ZW5ndGggICAgICAgIChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0ICpsaXN0KTsKKworV0VCS0lUX0FQ
SSBjb25zdCBnY2hhciAqCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfaXRlbV9uYW1l
ICAgICAoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCAqbGlzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCBpbmRleCk7CitXRUJLSVRfQVBJIGdib29s
ZWFuCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9pc19pdGVtX3NlbGVjdGVkICAoV2ViS2l0
V2ViVXNlck1lZGlhTGlzdCAqbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBndWludCBpbmRleCk7CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJf
dXNlcl9tZWRpYV9saXN0X3NlbGVjdF9pdGVtICAgICAgIChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0
ICpsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1
aW50IGluZGV4KTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdHByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA3OGE5MWY2MGVlYWE4ZDNhMzAwODQxODc2OTNjZDMzN2Q1YzI3ZWEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlz
dHByaXZhdGUuaApAQCAtMCwwICsxLDM3IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMiBD
b2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
ICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBp
ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAg
VVNBCisgKi8KKworCisjaWZuZGVmIHdlYmtpdHdlYnVzZXJtZWRpYWxpc3Rwcml2YXRlX2gKKyNk
ZWZpbmUgd2Via2l0d2VidXNlcm1lZGlhbGlzdHByaXZhdGVfaAorCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAid2Vi
a2l0d2VidXNlcm1lZGlhbGlzdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQ29yZTo6
TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGNvcmUoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCopOwor
V2ViS2l0V2ViVXNlck1lZGlhTGlzdCoga2l0TmV3KGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFt
U291cmNlVmVjdG9yJik7CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisK
KyNlbmRpZiAvLyB3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTY2YTc4M2FkYzQwNDAyYTUyZWQ5MmFiOGNiMTZiYzA5NDJiMzMxZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFy
ZXF1ZXN0LmNwcApAQCAtMCwwICsxLDE5OCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIg
Q29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEg
IFVTQQorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnVz
ZXJtZWRpYXJlcXVlc3QuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRl
ICJGcmFtZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFSZXF1ZXN0LmgiCisjaW5jbHVkZSAi
d2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXRzZWN1cml0eW9yaWdpbnBy
aXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlLmgiCisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorCisvKioKKyAqIFNFQ1RJT046d2Via2l0d2VidXNlcm1lZGlhcmVx
dWVzdAorICogQHNob3J0X2Rlc2NyaXB0aW9uOiBUaGUgV2ViS2l0J3MgVXNlck1lZGlhIFJlcXVl
c3QuCisgKiBAVGl0bGU6IFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QKKyAqCisgKiBUaGlzIG9i
amVjdCBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gb2YgYSBtZWRpYSByZXF1ZXN0LgorICogSXQg
Y2FuIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhlIHJlcXVlc3QgaXMgYXNraW5nIGZvciBhdWRpbyBh
bmQvb3IgdmlkZW8uCisgKgorICogU2luY2U6IDIuMAorICovCisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CisKK3N0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdFByaXZhdGUgeworICAg
IFJlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0PiB1c2VyTWVkaWFSZXF1ZXN0OworfTsK
KworR19ERUZJTkVfVFlQRShXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0LCB3ZWJraXRfd2ViX3Vz
ZXJfbWVkaWFfcmVxdWVzdCwgR19UWVBFX09CSkVDVCkKKworc3RhdGljIHZvaWQgd2Via2l0V2Vi
VXNlck1lZGlhUmVxdWVzdEZpbmFsaXplKEdPYmplY3QgKm9iamVjdCkKK3sKKyAgICBXRUJLSVRf
V0VCX1VTRVJfTUVESUFfUkVRVUVTVChvYmplY3QpLT5wcml2LT5+V2ViS2l0V2ViVXNlck1lZGlh
UmVxdWVzdFByaXZhdGUoKTsKKworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfdXNlcl9t
ZWRpYV9yZXF1ZXN0X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Cit9CisKK3N0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2NsYXNzX2luaXQoV2ViS2l0V2Vi
VXNlck1lZGlhUmVxdWVzdENsYXNzKiByZXF1ZXN0Q2xhc3MpCit7CisgICAgR09iamVjdENsYXNz
KiBnb2JqZWN0X2NsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKKyAgICBnb2Jq
ZWN0X2NsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdFdlYlVzZXJNZWRpYVJlcXVlc3RGaW5hbGl6ZTsK
KworICAgIHdlYmtpdEluaXQoKTsKKworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShyZXF1
ZXN0Q2xhc3MsIHNpemVvZihXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSkpOworfQor
CitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9pbml0KFdlYktpdFdl
YlVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgV2ViS2l0V2ViVXNlck1lZGlhUmVx
dWVzdFByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUocmVxdWVzdCwg
V0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCwgV2ViS2l0V2ViVXNlck1lZGlhUmVx
dWVzdFByaXZhdGUpOworICAgIHJlcXVlc3QtPnByaXYgPSBwcml2OworCisgICAgbmV3IChwcml2
KSBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSgpOworfQorCisvKioKKyAqIHdlYmtp
dF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRzX2F1ZGlvOgorICogQHJlcXVlc3Q6IHRoZSAj
V2ViS2l0VXNlck1lZGlhUmVxdWVzdCBpdHNlbGYuCisgKgorICogSW5kaWNhdGVzIHRoZSBjb250
ZW50IG9mIGFuIFVzZXJNZWRpYVJlcXVlc3QuCisgKgorICogUmV0dXJuIHZhbHVlOiAlVFJVRSBp
ZiB0aGUgcmVxdWVzdCBjb250YWlucyBhbiBhdWRpbyByZXF1ZXN0IG9yICVGQUxTRSBpZiBvdGhl
cndpc2UuCisgKgorICogU2luY2U6IDIuMAorICovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3VzZXJf
bWVkaWFfcmVxdWVzdF93YW50c19hdWRpbyhXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiByZXF1
ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVVNFUl9NRURJ
QV9SRVFVRVNUKHJlcXVlc3QpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gY29yZShyZXF1ZXN0KS0+
YXVkaW8oKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF93YW50
c192aWRlbzoKKyAqIEByZXF1ZXN0OiB0aGUgI1dlYktpdFVzZXJNZWRpYVJlcXVlc3QgaXRzZWxm
LgorICoKKyAqIEluZGljYXRlcyB0aGUgY29udGVudCBvZiBhbiBVc2VyTWVkaWFSZXF1ZXN0Lgor
ICoKKyAqIFJldHVybiB2YWx1ZTogJVRSVUUgaWYgdGhlIHJlcXVlc3QgY29udGFpbnMgYSB2aWRl
byByZXF1ZXN0IG9yICVGQUxTRSBpZiBvdGhlcndpc2UuCisgKgorICogU2luY2U6IDIuMAorICov
CitnYm9vbGVhbiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF93YW50c192aWRlbyhXZWJL
aXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9SRVFVRVNUKHJlcXVlc3QpLCBGQUxTRSk7CisK
KyAgICByZXR1cm4gY29yZShyZXF1ZXN0KS0+dmlkZW8oKTsKK30KKworLyoqCisgKiB3ZWJraXRf
d2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9nZXRfc2VjdXJpdHlfb3JpZ2luOgorICogQHJlcXVlc3Q6
IHRoZSAjV2ViS2l0VXNlck1lZGlhUmVxdWVzdCBpdHNlbGYuCisgKgorICogUmV0dXJucyB0aGUg
c2VjdXJpdHkgb3JpZ2luIG9mIHRoZSBNZWRpYSBSZXF1ZXN0LgorICoKKyAqIFJldHVybiB2YWx1
ZTogKHRyYW5zZmVyIG5vbmUpOiB0aGUgc2VjdXJpdHkgb3JpZ2luIG9mIHRoZSBtZWRpYSByZXF1
ZXN0LgorICoKKyAqIFNpbmNlOiAyLjAKKyAqLworV2ViS2l0U2VjdXJpdHlPcmlnaW4qIHdlYmtp
dF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2dldF9zZWN1cml0eV9vcmlnaW4oV2ViS2l0V2ViVXNl
ck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfSVNfV0VCX1VTRVJfTUVESUFfUkVRVUVTVChyZXF1ZXN0KSwgMCk7CisKKyAgICByZXR1cm4g
a2l0KGNvcmUocmVxdWVzdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmln
aW4oKSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfc3VjY2Vl
ZDoKKyAqIEB3ZWJSZXF1ZXN0OiBhICNXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0CisgKiBAYXVk
aW9NZWRpYUxpc3Q6IGEgI1dlYktpdFdlYlVzZXJNZWRpYUxpc3QgY29udGFpbmluZyBhdWRpbyBk
ZXZpY2VzCisgKiBAdmlkZW9NZWRpYUxpc3Q6IGEgI1dlYktpdFdlYlVzZXJNZWRpYUxpc3QgY29u
dGFpbmluZyB2aWRlbyBkZXZpY2VzCisgKgorICogVGhpcyBtZXRob2Qgc2hvdWxkIGJlIGNhbGxl
ZCBieSB0aGUgYXBwbGljYXRpb24gYWZ0ZXIgdGhlIHVzZXIgc2VsZWN0cworICogYSBtZWRpYSBk
ZXZpY2UgYW5kIGFjY2VwdHMgYW4gbWVkaWEgcmVxdWVzdAorICoKKyAqIFNpbmNlOiAyLjAKKyAq
Ki8KK3ZvaWQgd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfc3VjY2VlZChXZWJLaXRXZWJV
c2VyTWVkaWFSZXF1ZXN0KiB3ZWJSZXF1ZXN0LCBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBhdWRp
b01lZGlhTGlzdCwgV2ViS2l0V2ViVXNlck1lZGlhTGlzdCogdmlkZW9NZWRpYUxpc3QpCit7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCh3ZWJS
ZXF1ZXN0KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFf
TElTVChhdWRpb01lZGlhTGlzdCkpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9VU0VSX01FRElBX0xJU1QodmlkZW9NZWRpYUxpc3QpKTsKKworICAgIFdlYkNvcmU6Ok1lZGlh
U3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMgPSBjb3JlKGF1ZGlvTWVkaWFMaXN0KTsK
KyAgICBXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzID0gY29y
ZSh2aWRlb01lZGlhTGlzdCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gYXVkaW9Tb3VyY2VzLnNp
emUoKSAtIDE7IGkgIT0gKHNpemVfdCkgLTE7IC0taSkKKyAgICAgICAgaWYgKCF3ZWJraXRfd2Vi
X3VzZXJfbWVkaWFfbGlzdF9pc19pdGVtX3NlbGVjdGVkKGF1ZGlvTWVkaWFMaXN0LCBpKSkKKyAg
ICAgICAgICAgIGF1ZGlvU291cmNlcy5yZW1vdmUoaSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0g
dmlkZW9Tb3VyY2VzLnNpemUoKSAtIDE7IGkgIT0gKHNpemVfdCkgLTE7IC0taSkKKyAgICAgICAg
aWYgKCF3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9pc19pdGVtX3NlbGVjdGVkKHZpZGVvTWVk
aWFMaXN0LCBpKSkKKyAgICAgICAgICAgIHZpZGVvU291cmNlcy5yZW1vdmUoaSk7CisKKyAgICBj
b3JlKHdlYlJlcXVlc3QpLT5zdWNjZWVkKGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKTsKKwor
fQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19yZWplY3RfdXNlcl9tZWRpYV9yZXF1ZXN0Ogor
ICogQHdlYlJlcXVlc3Q6IGEgI1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QKKyAqCisgKiBUaGlz
IG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiB3aGVuIHRoZSB1c2Vy
IHJlamVjdGVkIGEgdXNlck1lZGlhIHJlcXVlc3QuCisgKgorICogU2luY2U6IDIuMAorICoqLwor
dm9pZCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9mYWlsKFdlYktpdFdlYlVzZXJNZWRp
YVJlcXVlc3QqIHdlYlJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNf
V0VCX1VTRVJfTUVESUFfUkVRVUVTVCh3ZWJSZXF1ZXN0KSk7CisgICAgY29yZSh3ZWJSZXF1ZXN0
KS0+ZmFpbCgpOworfQorCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJDb3JlOjpVc2VyTWVk
aWFSZXF1ZXN0KiBjb3JlKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCit7Cisg
ICAgQVNTRVJUKFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9SRVFVRVNUKHJlcXVlc3QpKTsKKwor
ICAgIHJldHVybiByZXF1ZXN0LT5wcml2LT51c2VyTWVkaWFSZXF1ZXN0LmdldCgpOworfQorCitX
ZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiBraXROZXcoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVz
dCogcmVxdWVzdCkKK3sKKyAgICBBU1NFUlQocmVxdWVzdCk7CisKKyAgICBXZWJLaXRXZWJVc2Vy
TWVkaWFSZXF1ZXN0KiB3ZWJSZXF1ZXN0ID0gV0VCS0lUX1dFQl9VU0VSX01FRElBX1JFUVVFU1Qo
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX1JFUVVFU1QsIE5VTEwpKTsK
KyAgICB3ZWJSZXF1ZXN0LT5wcml2LT51c2VyTWVkaWFSZXF1ZXN0ID0gcmVxdWVzdDsKKworICAg
IHJldHVybiB3ZWJSZXF1ZXN0OworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RS
RUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJt
ZWRpYXJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVk
aWFyZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTJiMWUwZjdjNTQxNDdiNTBiYTA3ZjFkYmU2OGI0NWI1
NmVkZDlhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ1c2VybWVkaWFyZXF1ZXN0LmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqICBDb3B5cmln
aHQgKEMpIDIwMTIgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg
IDAyMTEwLTEzMDEgIFVTQQorICovCisKKworI2lmbmRlZiB3ZWJraXR3ZWJ1c2VybWVkaWFyZXF1
ZXN0X2gKKyNkZWZpbmUgd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdF9oCisKKyNpbmNsdWRlICJ3
ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmgiCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2lu
Y2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZGVmaW5lcy5oPgorCitHX0JF
R0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCAg
ICAgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9nZXRfdHlwZSgpKQorI2Rl
ZmluZSBXRUJLSVRfV0VCX1VTRVJfTUVESUFfUkVRVUVTVChvYmopICAgICAgICAgICAgKEdfVFlQ
RV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9S
RVFVRVNULCBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9V
U0VSX01FRElBX1JFUVVFU1RfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FT
VCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCwgV2ViS2l0V2Vi
VXNlck1lZGlhUmVxdWVzdENsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9VU0VSX01FRElB
X1JFUVVFU1Qob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwg
V0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVRVUVTVCkpCisjZGVmaW5lIFdFQktJVF9JU19X
RUJfVVNFUl9NRURJQV9SRVFVRVNUX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZ
UEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX1JFUVVFU1QpKQorI2RlZmlu
ZSBXRUJLSVRfV0VCX1VTRVJfTUVESUFfUkVRVUVTVF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9J
TlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9SRVFV
RVNULCBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBf
V2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0OwordHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RDbGFzcyBXZWJLaXRXZWJVc2Vy
TWVkaWFSZXF1ZXN0Q2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhUmVx
dWVzdFByaXZhdGUgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdFByaXZhdGU7CisKK3N0cnVjdCBf
V2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCB7CisgICAgR09iamVjdCBwYXJlbnRfaW5zdGFuY2U7
CisgICAgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdFByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1
Y3QgX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RDbGFzcyB7CisgICAgR09iamVjdENsYXNzIHBh
cmVudF9jbGFzczsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF93ZWJfdXNlcl9tZWRp
YV9yZXF1ZXN0X2dldF90eXBlICh2b2lkKSBHX0dOVUNfQ09OU1Q7CisKK1dFQktJVF9BUEkgZ2Jv
b2xlYW4KK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRzX2F1ZGlvICAgICAgICAg
ICAgICAoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCAqcmVxdWVzdCk7CisKK1dFQktJVF9BUEkg
Z2Jvb2xlYW4KK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRzX3ZpZGVvICAgICAg
ICAgICAgICAoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCAqcmVxdWVzdCk7CisKK1dFQktJVF9B
UEkgV2ViS2l0U2VjdXJpdHlPcmlnaW4gKgord2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rf
Z2V0X3NlY3VyaXR5X29yaWdpbiAgICAgIChXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0ICpyZXF1
ZXN0KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9m
YWlsICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QgKnJlcXVl
c3QpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3N1
Y2NlZWQgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCAqd2ViUmVx
dWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViS2l0V2ViVXNlck1lZGlhTGlzdCogYXVkaW9NZWRpYUxpc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYlVz
ZXJNZWRpYUxpc3QqIHZpZGVvTWVkaWFMaXN0KTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVx
dWVzdHByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVk
aWFyZXF1ZXN0cHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxNTY0ZDdkNjY3YTllMWRiYjc3NDFlNzIw
ODAyODRkMmM5Zjg1YTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGUuaApAQCAtMCwwICsxLDQwIEBACisv
KgorICogIENvcHlyaWdodCAoQykgMjAxMiBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNl
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworCisjaWZuZGVmIHdlYmtpdHdl
YnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlX2gKKyNkZWZpbmUgd2Via2l0d2VidXNlcm1lZGlhcmVx
dWVzdHByaXZhdGVfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIndl
YmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0
IFVzZXJNZWRpYVJlcXVlc3Q7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJDb3JlOjpV
c2VyTWVkaWFSZXF1ZXN0KiBjb3JlKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqKTsKK1dlYktp
dFdlYlVzZXJNZWRpYVJlcXVlc3QqIGtpdE5ldyhXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Kik7
CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyB3ZWJr
aXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vidmlldy5jcHAKaW5kZXggNTU1MTcxYWExY2I2ZGUzMzNhMGNmNjNjYjNhYTM5NGYz
OTRhMDQwZC4uMWViY2NhZjJlNDFmMTU4NmY4NDM1ODhhMDkzZjRjZjRhMzBiMjQ3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtNjMsNiArNjMsNyBA
QAogI2luY2x1ZGUgIkdlb2xvY2F0aW9uQ2xpZW50R3RrLmgiCiAjaW5jbHVkZSAiR2VvbG9jYXRp
b25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAi
R3RrTWVkaWFDaG9vc2VyRGlhbG9nLmgiCiAjaW5jbHVkZSAiR3RrVXRpbGl0aWVzLmgiCiAjaW5j
bHVkZSAiR3RrVmVyc2lvbmluZy5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtODMsNiAr
ODQsNyBAQAogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJT
Y3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiVXNlck1lZGlh
Q2xpZW50R3RrLmgiCiAjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTURvY3VtZW50UHJpdmF0ZS5o
IgogI2luY2x1ZGUgIndlYmtpdGRvd25sb2FkLmgiCiAjaW5jbHVkZSAid2Via2l0ZG93bmxvYWRw
cml2YXRlLmgiCkBAIC0xMDcsNiArMTA5LDggQEAKICNpbmNsdWRlICJ3ZWJraXR3ZWJyZXNvdXJj
ZS5oIgogI2luY2x1ZGUgIndlYmtpdHdlYnNldHRpbmdzcHJpdmF0ZS5oIgogI2luY2x1ZGUgIndl
YmtpdHdlYnBsdWdpbmRhdGFiYXNlcHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJt
ZWRpYWxpc3Rwcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHBy
aXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5oIgogI2luY2x1ZGUg
IndlYmtpdHdlYnZpZXdwcml2YXRlLmgiCiAjaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KQEAg
LTExOSw2ICsxMjMsNyBAQAogI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xpZW50R3RrLmgi
CiAjZW5kaWYKIAorCiAvKioKICAqIFNFQ1RJT046d2Via2l0d2VidmlldwogICogQHNob3J0X2Rl
c2NyaXB0aW9uOiBUaGUgY2VudHJhbCBjbGFzcyBvZiB0aGUgV2ViS2l0R1RLKyBBUEkKQEAgLTIx
OCw2ICsyMjMsNyBAQCBlbnVtIHsKICAgICBMRUFWSU5HX0ZVTExTQ1JFRU4sCiAgICAgQ09OVEVY
VF9NRU5VLAogICAgIFJVTl9GSUxFX0NIT09TRVIsCisgICAgQ0hPT1NFX01FRElBX0RFVklDRSwK
IAogICAgIExBU1RfU0lHTkFMCiB9OwpAQCAtMTE3Myw2ICsxMTc5LDUwIEBAIHN0YXRpYyBnYm9v
bGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9zY3JpcHRfcHJvbXB0KFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIFdlYktpCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKK3R5cGVkZWYgc3RydWN0IHsKKyAg
ICBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0OworICAgIFdlYktpdFdlYlVzZXJN
ZWRpYUxpc3QqIGF1ZGlvTWVkaWFMaXN0OworICAgIFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIHZp
ZGVvTWVkaWFMaXN0OworICAgIEd0a01lZGlhQ2hvb3NlckRpYWxvZyogZGlhbG9nOworfSBVc2Vy
TWVkaWFTZWxlY3RvckRhdGE7CisKK3N0YXRpYyB2b2lkIG1lZGlhQ2hvb3NlclJlc3BvbnNlQ2Fs
bGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIGdpbnQgcmVzcG9uc2VJRCwgVXNlck1lZGlhU2VsZWN0
b3JEYXRhICpkYXRhKQoreworICAgIGlmIChyZXNwb25zZUlEID09IEdUS19SRVNQT05TRV9PSykg
eworICAgICAgICBpZiAoZGF0YS0+ZGlhbG9nLT5zZWxlY3RlZEF1ZGlvKCkgIT0gLTEpCisgICAg
ICAgICAgICB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9zZWxlY3RfaXRlbShkYXRhLT5hdWRp
b01lZGlhTGlzdCwgZGF0YS0+ZGlhbG9nLT5zZWxlY3RlZEF1ZGlvKCkpOworCisgICAgICAgIGlm
IChkYXRhLT5kaWFsb2ctPnNlbGVjdGVkVmlkZW8oKSAhPSAtMSkKKyAgICAgICAgICAgIHdlYmtp
dF93ZWJfdXNlcl9tZWRpYV9saXN0X3NlbGVjdF9pdGVtKGRhdGEtPnZpZGVvTWVkaWFMaXN0LCBk
YXRhLT5kaWFsb2ctPnNlbGVjdGVkVmlkZW8oKSk7CisKKyAgICAgICAgd2Via2l0X3dlYl91c2Vy
X21lZGlhX3JlcXVlc3Rfc3VjY2VlZChkYXRhLT5yZXF1ZXN0LCBkYXRhLT5hdWRpb01lZGlhTGlz
dCwgZGF0YS0+dmlkZW9NZWRpYUxpc3QpOworICAgIH0gZWxzZQorICAgICAgICB3ZWJraXRfd2Vi
X3VzZXJfbWVkaWFfcmVxdWVzdF9mYWlsKGRhdGEtPnJlcXVlc3QpOworCisgICAgZ19vYmplY3Rf
dW5yZWYoZGF0YS0+cmVxdWVzdCk7CisgICAgZ19vYmplY3RfdW5yZWYoZGF0YS0+YXVkaW9NZWRp
YUxpc3QpOworICAgIGdfb2JqZWN0X3VucmVmKGRhdGEtPnZpZGVvTWVkaWFMaXN0KTsKKyAgICBk
ZWxldGUgZGF0YS0+ZGlhbG9nOworICAgIGdfZnJlZShkYXRhKTsKK30KKworc3RhdGljIGdib29s
ZWFuIHdlYmtpdF93ZWJfdmlld19yZWFsX2Nob29zZV9tZWRpYV9kZXZpY2UoV2ViS2l0V2ViVmll
dyAqd2ViVmlldywgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCwgV2ViS2l0V2Vi
VXNlck1lZGlhTGlzdCogYXVkaW9NZWRpYUxpc3QsIFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIHZp
ZGVvTWVkaWFMaXN0KQoreworICAgIEd0a1dpZGdldCogdG9wbGV2ZWwgPSBndGtfd2lkZ2V0X2dl
dF90b3BsZXZlbChHVEtfV0lER0VUKHdlYlZpZXcpKTsKKyAgICBHdGtNZWRpYUNob29zZXJEaWFs
b2cqIGRpYWxvZyA9IG5ldyBHdGtNZWRpYUNob29zZXJEaWFsb2codG9wbGV2ZWwsIGNvcmUocmVx
dWVzdCksIGNvcmUoYXVkaW9NZWRpYUxpc3QpLCBjb3JlKHZpZGVvTWVkaWFMaXN0KSk7CisgICAg
R3RrV2lkZ2V0KiB3aWRnZXQgPSBkaWFsb2ctPndpZGdldCgpOworICAgIFVzZXJNZWRpYVNlbGVj
dG9yRGF0YSogZGF0YSA9IGdfbmV3KFVzZXJNZWRpYVNlbGVjdG9yRGF0YSwgMSk7CisKKyAgICBk
YXRhLT5yZXF1ZXN0ID0gKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqKSBnX29iamVjdF9yZWYo
cmVxdWVzdCk7CisgICAgZGF0YS0+YXVkaW9NZWRpYUxpc3QgPSAoV2ViS2l0V2ViVXNlck1lZGlh
TGlzdCopIGdfb2JqZWN0X3JlZihhdWRpb01lZGlhTGlzdCk7CisgICAgZGF0YS0+dmlkZW9NZWRp
YUxpc3QgPSAoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCopIGdfb2JqZWN0X3JlZih2aWRlb01lZGlh
TGlzdCk7CisgICAgZGF0YS0+ZGlhbG9nID0gZGlhbG9nOworCisgICAgZ19zaWduYWxfY29ubmVj
dCh3aWRnZXQsICJyZXNwb25zZSIsIEdfQ0FMTEJBQ0sobWVkaWFDaG9vc2VyUmVzcG9uc2VDYWxs
YmFjayksIGRhdGEpOworICAgIGRpYWxvZy0+c2hvdygpOworICAgIHJldHVybiBUUlVFOworfQor
CiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3JlYWxfY29uc29sZV9tZXNzYWdlKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBtZXNzYWdlLCB1bnNpZ25lZCBpbnQg
bGluZSwgY29uc3QgZ2NoYXIqIHNvdXJjZUlkKQogewogICAgIGdfbWVzc2FnZSgiY29uc29sZSBt
ZXNzYWdlOiAlcyBAJWQ6ICVzXG4iLCBzb3VyY2VJZCwgbGluZSwgbWVzc2FnZSk7CkBAIC0yNzI0
LDYgKzI3NzQsMzIgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2Vi
S2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgICAgICBXRUJLSVRfVFlQRV9W
SUVXUE9SVF9BVFRSSUJVVEVTKTsKIAogICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OmNo
b29zZS1tZWRpYS1kZXZpY2U6CisgICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IHdoaWNoIHJl
Y2VpdmVkIHRoZSBzaWduYWwKKyAgICAgKiBAcmVxdWVzdDogdGhlICNXZWJLaXRXZWJVc2VyTWVk
aWFScXVlc3QgYXR0cmlidXRlIHdoaWNoIGdlbmVyYXRlZCB0aGUgcmVxdWVzdC4KKyAgICAgKiBA
YXVkaW9MaXN0OiBhICNXZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGNvbnRhaW5pbmcgdGhlIGF2YWls
YWJsZSBhdWRpbyBtZWRpYSBvcHRpb25zLgorICAgICAqIEB2aWRlb0xpc3Q6IGEgI1dlYktpdFdl
YlVzZXJNZWRpYUxpc3QgY29udGFpbmluZyB0aGUgYXZhaWxhYmxlIHZpZGVvIG1lZGlhIG9wdGlv
bnMuCisgICAgICoKKyAgICAgKiBXaGVuIHRoZSBhcHBsaWNhdGlvbiByZXF1ZXN0IHVzZXJNZWRp
YSwgdGhpcyBzaWduYWwgd2lsbCBiZSBlbWl0ZWQgd2l0aCB0aGUgcmVxdWVzdAorICAgICAqIGlu
Zm9ybWF0aW9uIGFuZCB0aGUgYXZhaWxhYmxlIG9wdGlvbnMgdG8gYmUgc2VsZWN0ZWQuCisgICAg
ICoKKyAgICAgKiBUaGVuIHRoZSB1c2VyIGlzIGV4cGVjdGVkIHRvIGNhbGwgZWl0aGVyIHdlYmtp
dF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3N1Y2NlZWQoKSBvcgorICAgICAqIHdlYmtpdF93ZWJf
dXNlcl9tZWRpYV9yZXF1ZXN0X2ZhaWwoKSB0byBhY2NlcHQgb3IgcmVqZWN0IHRoZSByZXF1ZXN0
LgorICAgICAqCisgICAgICogU2luY2U6IDIuMC4wCisgICAgICovCisgICAgd2Via2l0X3dlYl92
aWV3X3NpZ25hbHNbQ0hPT1NFX01FRElBX0RFVklDRV0gPSBnX3NpZ25hbF9uZXcoImNob29zZS1t
ZWRpYS1kZXZpY2UiLAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNz
KSwKKyAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAgICAgICAgR19TVFJVQ1Rf
T0ZGU0VUKFdlYktpdFdlYlZpZXdDbGFzcywgY2hvb3NlX21lZGlhX2RldmljZSksCisgICAgICAg
ICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIDAsCisgICAgICAgICAgICB3
ZWJraXRfbWFyc2hhbF9CT09MRUFOX19PQkpFQ1RfT0JKRUNUX09CSkVDVCwKKyAgICAgICAgICAg
IEdfVFlQRV9CT09MRUFOLCAzLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVE
SUFfUkVRVUVTVCwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX0xJU1Qs
CisgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNUKTsKKworICAgIC8q
KgogICAgICAqIFdlYktpdFdlYlZpZXc6OmVudGVyaW5nLWZ1bGxzY3JlZW46CiAgICAgICogQHdl
Yl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVk
LgogICAgICAqIEBlbGVtZW50OiB0aGUgI1dlYktpdERPTUhUTUxFbGVtZW50IHdoaWNoIGhhcyBy
ZXF1ZXN0ZWQgZnVsbCBzY3JlZW4gZGlzcGxheS4KQEAgLTI5MTIsNiArMjk4OCw3IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2Vi
Vmlld0NsYXNzKQogICAgIHdlYlZpZXdDbGFzcy0+c2NyaXB0X2FsZXJ0ID0gd2Via2l0X3dlYl92
aWV3X3JlYWxfc2NyaXB0X2FsZXJ0OwogICAgIHdlYlZpZXdDbGFzcy0+c2NyaXB0X2NvbmZpcm0g
PSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9zY3JpcHRfY29uZmlybTsKICAgICB3ZWJWaWV3Q2xhc3Mt
PnNjcmlwdF9wcm9tcHQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9zY3JpcHRfcHJvbXB0OworICAg
IHdlYlZpZXdDbGFzcy0+Y2hvb3NlX21lZGlhX2RldmljZSA9IHdlYmtpdF93ZWJfdmlld19yZWFs
X2Nob29zZV9tZWRpYV9kZXZpY2U7CiAgICAgd2ViVmlld0NsYXNzLT5jb25zb2xlX21lc3NhZ2Ug
PSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jb25zb2xlX21lc3NhZ2U7CiAgICAgd2ViVmlld0NsYXNz
LT5zZWxlY3RfYWxsID0gd2Via2l0X3dlYl92aWV3X3JlYWxfc2VsZWN0X2FsbDsKICAgICB3ZWJW
aWV3Q2xhc3MtPmN1dF9jbGlwYm9hcmQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jdXRfY2xpcGJv
YXJkOwpAQCAtMzYyOSw3ICszNzA2LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2lu
aXQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKLSAgICBwcml2LT51c2VyTWVkaWFDbGllbnQgPSBhZG9wdFB0cihuZXcgVXNlck1lZGlh
Q2xpZW50R3RrKTsKKyAgICBwcml2LT51c2VyTWVkaWFDbGllbnQgPSBhZG9wdFB0cihuZXcgVXNl
ck1lZGlhQ2xpZW50R3RrKHdlYlZpZXcpKTsKICAgICBXZWJDb3JlOjpwcm92aWRlVXNlck1lZGlh
VG8ocHJpdi0+Y29yZVBhZ2UsIHByaXYtPnVzZXJNZWRpYUNsaWVudC5nZXQoKSk7CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaCBi
L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKaW5kZXggOWM4NDI2M2I0
YmMwOTQ3YTZmMGRmOTVkYjAxN2M1MjM0YTFlMmQ5ZS4uN2Q5MzU5NGNiMzk0ZmIxMTRiN2NiZGM0
YTYzNzQ1YWUzNDAwOGI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5oCkBAIC00NCw2ICs0NCw5IEBAIEdfQkVHSU5fREVDTFMKICNkZWZpbmUgV0VCS0lUX1dFQl9W
SUVXX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdF
QktJVF9UWVBFX1dFQl9WSUVXLCBXZWJLaXRXZWJWaWV3Q2xhc3MpKQogCiB0eXBlZGVmIHN0cnVj
dCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgV2ViS2l0V2ViVmlld1ByaXZhdGU7Cit0eXBlZGVmIHN0
cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0
OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRpYUxpc3QgV2ViS2l0V2ViVXNlck1l
ZGlhTGlzdDsKKwogCiAvKioKICAqIFdlYktpdE5hdmlnYXRpb25SZXNwb25zZToKQEAgLTE1NSw2
ICsxNTgsMTIgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3MgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAg
ICAgICAgICAqbWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgKmRlZmF1bHRfdmFsdWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdjaGFyKiAgICAgICAgICAgICAgICp2YWx1ZSk7CisKKyAgICBnYm9vbGVhbiAgICAgICAg
ICAgICAgICAgICAoKiBjaG9vc2VfbWVkaWFfZGV2aWNlKSAgICAoV2ViS2l0V2ViVmlldyAgICAg
ICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QgKnJlcXVlc3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYktpdFdlYlVzZXJNZWRpYUxpc3QgICAgKmF1ZGlvLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJVc2VyTWVk
aWFMaXN0ICAgICp2aWRlbyk7CisKICAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICAgICAoKiBj
b25zb2xlX21lc3NhZ2UpICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgKndlYl92aWV3LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnY2hhciAgICAgICAgICAqbWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAg
IGxpbmVfbnVtYmVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0bWFyc2hh
bC5saXN0IGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0bWFyc2hhbC5saXN0CmluZGV4IGI3NDI4
OTA1Yzg5ODNjZmM3NWVjNTQ0NzQxMzNjYTI4ZjZkNzk1YjQuLjhkZDRiZGVlYWM3MjJmMjI0ODQ0
NDNlNjMyYzEzYTFiNTQ2NDk2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dG1hcnNoYWwubGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXRtYXJzaGFsLmxpc3QK
QEAgLTIsNiArMiw3IEBAIEJPT0xFQU46RU5VTSxJTlQKIEJPT0xFQU46SU5ULElOVCxTVFJJTkcK
IEJPT0xFQU46T0JKRUNUCiBCT09MRUFOOk9CSkVDVCxPQkpFQ1QKK0JPT0xFQU46T0JKRUNULE9C
SkVDVCwgT0JKRUNUCiBCT09MRUFOOk9CSkVDVCxPQkpFQ1QsQk9PTEVBTgogQk9PTEVBTjpPQkpF
Q1QsT0JKRUNULEVOVU0KIEJPT0xFQU46T0JKRUNULE9CSkVDVCxFTlVNLEJPT0xFQU4KQEAgLTE4
LDYgKzE5LDcgQEAgRU5VTTpPQkpFQ1QsT0JKRUNUCiBPQkpFQ1Q6T0JKRUNUCiBPQkpFQ1Q6U1RS
SU5HLFNUUklORyxQT0lOVEVSCiBPQkpFQ1Q6Vk9JRAorVk9JRDpPQkpFQ1QKIFZPSUQ6T0JKRUNU
LE9CSkVDVAogVk9JRDpPQkpFQ1QsT0JKRUNULElOVAogVk9JRDpPQkpFQ1QsT0JKRUNULE9CSkVD
VAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169431</attachid>
            <date>2012-10-18 10:17:13 -0700</date>
            <delta_ts>2013-10-15 08:54:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94373-20121018141558.patch</filename>
            <type>text/plain</type>
            <size>50578</size>
            <attacher name="Danilo de Paula">danilo.eu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxNTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggOTg2ZTRiMWQz
Nzg3MTcwNDgzM2FkMzllZjY3YTFlM2I2YTM2YWQwYS4uZWJhY2MzZGVkZTlmZWViMjFjZTY3ZDQ1
OWVkMTMxNjc2M2YwNjc0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDEy
LTEwLTE4ICBEYW5pbG8gQ2VzYXIgTGVtZXMgZGUgUGF1bGEgIDxkYW5pbG8uY2VzYXJAY29sbGFi
b3JhLmNvLnVrPgorCisgICAgICAgIFtndGtdIGFkZGluZyBtZXRob2RzIGFuZCBzaWduYWxzIGZv
ciB1c2VybWVkaWEgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHdlYmtpdCBhbmQgYnJvd3NlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQzNzMKKworICAg
ICAgICBXaGVuIHRoZSB1c2VyIG1ha2VzIGEgZ2V0VXNlck1lZGlhIGNhbGwsIHdlYnZpZXcgd2ls
bCBlbWl0IGEgc2lnbmFsICh1c2VyLW1lZGlhLXJlcXVlc3RlZCkKKyAgICAgICAgdG8gdGhlIGFw
cGxpY2F0aW9uIGNvbnRhaW5pbmcgdGhlIHJlcXVlc3QgaXRzZWxmICh3ZWJraXR3ZWJ1c2VybWVk
aWFyZXF1ZXN0KSBhbmQgdHdvCisgICAgICAgIGxpc3RzIHdpdGggdGhlIGF2YWlsYWJsZSBhdWRp
byBhbmQgdmlkZW8gZGV2aWNlcyAod2Via2l0d2VidXNlcm1lZGlhbGlzdCkuCisKKyAgICAgICAg
VGhlIGFwcGxpY2F0aW9uIG11c3Qgc2hvdyB0aGUgbGlzdHMgdG8gdGhlIHVzZXIgYW5kIGFzayBw
ZXJtaXNzaW9uIHRvIHVzZSBvbmUgb2YKKyAgICAgICAgdGhvc2UgZGV2aWNlcyAob3IgcmVqZWN0
IHRoZSByZXF1ZXN0KS4KKworICAgICAgICBJbiBjYXNlIHRoZSB1c2VyIGFjY2VwdHMgdGhlIHJl
cXVlc3QsIHRoZSBhcHBsaWNhdGlvbiBtdXN0IG1hcmsgdGhlIGRldmljZSBhcworICAgICAgICBz
ZWxlY3RlZCAodXNpbmcgd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3Rfc2VsZWN0X2l0ZW0pIGFu
ZCB0aGVuIGNhbGwKKyAgICAgICAgd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfYWxsb3cg
d2hpY2ggd2lsbCBoYW5kbGUgdGhlIHJlcXVlc3QgcHJvcGVybHkuCisKKyAgICAgICAgSW4gY2Fz
ZSB0aGUgdXNlciByZWplY3RzIHRoZSByZXF1ZXN0LCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVx
dWVzdF9kZW55IG11c3QKKyAgICAgICAgYmUgY2FsbGVkLgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
VXNlck1lZGlhQ2xpZW50R3RrOjpVc2VyTWVkaWFDbGllbnRHdGspOgorICAgICAgICAoV2ViS2l0
OjpVc2VyTWVkaWFDbGllbnRHdGs6OnBhZ2VEZXN0cm95ZWQpOgorICAgICAgICAoV2ViS2l0OjpV
c2VyTWVkaWFDbGllbnRHdGs6OnJlcXVlc3RVc2VyTWVkaWEpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1VzZXJNZWRpYUNsaWVudEd0ay5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChVc2VyTWVkaWFDbGllbnRHdGspOgorICAgICAgICAqIGRvY3Mvd2Via2l0Z3RrLWRvY3Muc2dt
bDoKKyAgICAgICAgKiBkb2NzL3dlYmtpdGd0ay1zZWN0aW9ucy50eHQ6CisgICAgICAgICogd2Vi
a2l0L3dlYmtpdC5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmNw
cDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGUpOgorICAg
ICAgICAod2Via2l0V2ViVXNlck1lZGlhTGlzdEZpbmFsaXplKToKKyAgICAgICAgKHdlYmtpdF93
ZWJfdXNlcl9tZWRpYV9saXN0X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X3dlYl91c2Vy
X21lZGlhX2xpc3RfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9n
ZXRfbGVuZ3RoKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9pdGVt
X25hbWUpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3RfaXNfaXRlbV9zZWxl
Y3RlZCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9zZWxlY3RfaXRlbSk6
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAgICAgICAgKFdl
YktpdDo6a2l0TmV3KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdC5o
OiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFMaXN0KToKKyAgICAgICAgKF9X
ZWJLaXRXZWJVc2VyTWVkaWFMaXN0Q2xhc3MpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ1
c2VybWVkaWFsaXN0cHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
ICogd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAg
KF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJpdmF0ZSk6CisgICAgICAgICh3ZWJraXRXZWJV
c2VyTWVkaWFSZXF1ZXN0RmluYWxpemUpOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlh
X3JlcXVlc3RfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVx
dWVzdF9pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRz
X2F1ZGlvKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRzX3Zp
ZGVvKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2dldF9zZWN1cml0
eV9vcmlnaW4pOgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfYWxsb3cp
OgorICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZGVueSk6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAgICAgICAgKFdlYktpdDo6a2l0
TmV3KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5oOiBBZGRl
ZC4KKyAgICAgICAgKF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KToKKyAgICAgICAgKF9XZWJL
aXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3MpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ1
c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAg
ICAgIChtZWRpYUNob29zZXJSZXNwb25zZUNhbGxiYWNrKToKKyAgICAgICAgKHdlYmtpdF93ZWJf
dmlld19yZWFsX2Nob29zZV9tZWRpYV9kZXZpY2UpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3
X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2luaXQpOgorICAgICAgICAq
IHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg6CisgICAgICAgIChfV2ViS2l0V2ViVmlld0NsYXNzKToK
KyAgICAgICAgKiB3ZWJraXRtYXJzaGFsLmxpc3Q6CisKIDIwMTItMTAtMTAgIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFN3aXRjaCBSZXNvdXJjZUxvYWRlcjo6
cmVzb3VyY2VEYXRhKCkgZnJvbSBTaGFyZWRCdWZmZXIgdG8gUmVzb3VyY2VCdWZmZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDQwZjEzOTFmMTliZGU3ZmU5OWIxY2YyZWU3NzQ0
ZDE0ZTdkNzNjOGEuLjdhNjRhMTgwYjA5NTkzMmE2MmQyZjBkOTI5MTQ1ZDEzMTdlNDNjNTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNTk2NSw2ICs1OTY1LDggQEAgd2ViY29y
ZWd0a19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrRHJhZ0Fu
ZERyb3BIZWxwZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0
aG9kRmlsdGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0
aG9kRmlsdGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtNZWRpYUNob29z
ZXJEaWFsb2cuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrTWVkaWFDaG9v
c2VyRGlhbG9nLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmggXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HT3duUHRyR3RrLmNwcCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrTWVkaWFDaG9vc2VyRGlhbG9nLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtNZWRpYUNob29zZXJEaWFsb2cuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjI3NGY2YTM4YmEzNzg4ZGZlMDA3NTA5M2NmNjY0OWUwMWJjYjEzYmMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrTWVkaWFDaG9vc2VyRGlh
bG9nLmNwcApAQCAtMCwwICsxLDE3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBDb2xs
YWJvcmEuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHdGtNZWRpYUNob29zZXJEaWFs
b2cuaCIKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVk
ZSAiVXNlck1lZGlhUmVxdWVzdC5oIgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5j
bHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitHdGtNZWRpYUNob29zZXJEaWFsb2c6Okd0a01lZGlhQ2hvb3NlckRp
YWxvZyhHdGtXaWRnZXQqIHBhcmVudCwgVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCwgY29uc3Qg
TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlLCBjb25zdCBNZWRpYVN0cmVhbVNv
dXJjZVZlY3RvciYgdmlkZW9Tb3VyY2UpCisgICAgOiBtX2RpYWxvZygwKQorICAgICwgbV9hdWRp
b0NvbWJvKDApCisgICAgLCBtX3ZpZGVvQ29tYm8oMCkKK3sKKyAgICBHdGtXaWRnZXQqIHZib3g7
CisgICAgR3RrV2lkZ2V0KiBhdWRpb01lc3NhZ2UgPSAwOworICAgIEd0a1dpZGdldCogdmlkZW9N
ZXNzYWdlID0gMDsKKyAgICBib29sIHdhbnRzQXVkaW8gPSByZXF1ZXN0LT5hdWRpbygpOworICAg
IGJvb2wgd2FudHNWaWRlbyA9IHJlcXVlc3QtPnZpZGVvKCk7CisgICAgaW50IGF1ZGlvTGlzdExl
bmd0aCA9IGF1ZGlvU291cmNlLnNpemUoKTsKKyAgICBpbnQgdmlkZW9MaXN0TGVuZ3RoID0gdmlk
ZW9Tb3VyY2Uuc2l6ZSgpOworICAgIGJvb2wgaGFzQXVkaW8gPSAoYXVkaW9MaXN0TGVuZ3RoID4g
MCk7CisgICAgYm9vbCBoYXNWaWRlbyA9ICh2aWRlb0xpc3RMZW5ndGggPiAwKTsKKyAgICBpbnQg
aSA9IDA7CisKKyAgICBnY2hhciogb3JpZ2luID0gZ19zdHJkdXAocmVxdWVzdC0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOworICAgIGdjaGFyKiB0aXRsZTsKKyAgICBpZiAod2FudHNBdWRpbyAmJiB3YW50c1ZpZGVv
KQorICAgICAgICB0aXRsZSA9IGdfc3RyZHVwX3ByaW50ZihfKCIlcyB3YW50cyB0byB1c2UgeW91
ciBjYW1lcmEgYW5kIG1pY3JvcGhvbmUiKSwgb3JpZ2luKTsKKyAgICBlbHNlIGlmICh3YW50c0F1
ZGlvKQorICAgICAgICB0aXRsZSA9IGdfc3RyZHVwX3ByaW50ZihfKCIlcyB3YW50cyB0byB1c2Ug
eW91ciBtaWNyb3Bob25lIiksIG9yaWdpbik7CisgICAgZWxzZQorICAgICAgICB0aXRsZSA9IGdf
c3RyZHVwX3ByaW50ZihfKCIlcyB3YW50cyB0byB1c2UgeW91ciBjYW1lcmEiKSwgb3JpZ2luKTsK
KworICAgIG1fZGlhbG9nID0gZ3RrX2RpYWxvZ19uZXdfd2l0aF9idXR0b25zKHRpdGxlLAorICAg
ICAgICBwYXJlbnQ/IEdUS19XSU5ET1cocGFyZW50KSA6IDAsCisgICAgICAgIEdUS19ESUFMT0df
REVTVFJPWV9XSVRIX1BBUkVOVCwKKyAgICAgICAgR1RLX1NUT0NLX0NBTkNFTCwKKyAgICAgICAg
R1RLX1JFU1BPTlNFX0NBTkNFTCwKKyAgICAgICAgR1RLX1NUT0NLX09LLAorICAgICAgICBHVEtf
UkVTUE9OU0VfT0ssCisgICAgICAgIDApOworCisgICAgZ3RrX3dpbmRvd19zZXRfcmVzaXphYmxl
KEdUS19XSU5ET1cobV9kaWFsb2cpLCBGQUxTRSk7CisgICAgZ3RrX2NvbnRhaW5lcl9zZXRfYm9y
ZGVyX3dpZHRoKEdUS19DT05UQUlORVIobV9kaWFsb2cpLCA1KTsKKworICAgIEd0a1dpZGdldCog
Y29udGVudEFyZWEgPSBndGtfZGlhbG9nX2dldF9jb250ZW50X2FyZWEoR1RLX0RJQUxPRyhtX2Rp
YWxvZykpOworICAgIGd0a19ib3hfc2V0X3NwYWNpbmcoR1RLX0JPWChjb250ZW50QXJlYSksIDIp
OworCisgICAgR3RrV2lkZ2V0KiBhY3Rpb25BcmVhID0gZ3RrX2RpYWxvZ19nZXRfYWN0aW9uX2Fy
ZWEoR1RLX0RJQUxPRyhtX2RpYWxvZykpOworICAgIGd0a19jb250YWluZXJfc2V0X2JvcmRlcl93
aWR0aChHVEtfQ09OVEFJTkVSKGFjdGlvbkFyZWEpLCA1KTsKKyAgICBndGtfYm94X3NldF9zcGFj
aW5nKEdUS19CT1goYWN0aW9uQXJlYSksIDYpOworCisgICAgaWYgKCFoYXNBdWRpbyAmJiAhaGFz
VmlkZW8pIHsKKyAgICAgICAgYXVkaW9NZXNzYWdlID0gZ3RrX2xhYmVsX25ldyhfKCJObyB2aWRl
byBvciBhdWRpbyBpbnB1dCBkZXZpY2VzIGF2YWlsYWJsZSIpKTsKKyAgICAgICAgZ3RrX21pc2Nf
c2V0X2FsaWdubWVudChHVEtfTUlTQyhhdWRpb01lc3NhZ2UpLCAwLCAwKTsKKyAgICAgICAgZ3Rr
X2JveF9wYWNrX3N0YXJ0KEdUS19CT1goY29udGVudEFyZWEpLCBhdWRpb01lc3NhZ2UsIEZBTFNF
LCBGQUxTRSwgNik7CisgICAgfSBlbHNlIGlmICh3YW50c0F1ZGlvKSB7CisgICAgICAgIGF1ZGlv
TWVzc2FnZSA9IGd0a19sYWJlbF9uZXcoaGFzQXVkaW8gPyBfKCJTZWxlY3QgYW4gYXVkaW8gaW5w
dXQgZGV2aWNlIikgOiBfKCJObyBhdWRpbyBpbnB1dCBkZXZpY2UgYXZhaWxhYmxlIikpOworICAg
ICAgICBndGtfbWlzY19zZXRfYWxpZ25tZW50KEdUS19NSVNDKGF1ZGlvTWVzc2FnZSksIDAsIDAp
OworICAgICAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChjb250ZW50QXJlYSksIGF1ZGlv
TWVzc2FnZSwgRkFMU0UsIEZBTFNFLCA2KTsKKyAgICB9CisKKyAgICBpZiAoaGFzQXVkaW8pIHsK
KyAgICAgICAgR3RrV2lkZ2V0KiBmcmFtZSA9IGd0a19mcmFtZV9uZXcoXygiQXVkaW8iKSk7Cisj
aWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgMiwgMCkKKyAgICAgICAgdmJveCA9IGd0a19ib3hfbmV3
KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgMCk7CisjZWxzZQorICAgICAgICB2Ym94ID0gZ3Rr
X3Zib3hfbmV3KFRSVUUsIDApOworI2VuZGlmCisgICAgICAgIGd0a19jb250YWluZXJfc2V0X2Jv
cmRlcl93aWR0aChHVEtfQ09OVEFJTkVSKHZib3gpLCAzKTsKKworICAgICAgICBtX2F1ZGlvQ29t
Ym8gPSBndGtfY29tYm9fYm94X3RleHRfbmV3KCk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBh
dWRpb0xpc3RMZW5ndGg7IGkrKykKKyAgICAgICAgICAgIGd0a19jb21ib19ib3hfdGV4dF9hcHBl
bmRfdGV4dChHVEtfQ09NQk9fQk9YX1RFWFQobV9hdWRpb0NvbWJvKSwgYXVkaW9Tb3VyY2VbaV0t
Pm5hbWUoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgZ3RrX2NvbWJvX2JveF9zZXRfYWN0aXZl
KEdUS19DT01CT19CT1gobV9hdWRpb0NvbWJvKSwgMCk7CisgICAgICAgIGd0a19jb250YWluZXJf
YWRkKEdUS19DT05UQUlORVIodmJveCksIG1fYXVkaW9Db21ibyk7CisKKyAgICAgICAgZ3RrX2Nv
bnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihmcmFtZSksIHZib3gpOworICAgICAgICBndGtfYm94
X3BhY2tfc3RhcnQoR1RLX0JPWChjb250ZW50QXJlYSksIGZyYW1lLCBGQUxTRSwgRkFMU0UsIDMp
OworICAgIH0KKworICAgIGlmICh3YW50c1ZpZGVvKSB7CisgICAgICAgIGlmIChoYXNWaWRlbykg
eworICAgICAgICAgICAgdmlkZW9NZXNzYWdlID0gZ3RrX2xhYmVsX25ldyhfKCJTZWxlY3QgYW4g
dmlkZW8gaW5wdXQgZGV2aWNlIikpOworICAgICAgICB9IGVsc2UgaWYgKCF3YW50c0F1ZGlvIHx8
IGhhc0F1ZGlvKQorICAgICAgICAgICAgdmlkZW9NZXNzYWdlID0gZ3RrX2xhYmVsX25ldyhfKCJO
byB2aWRlbyBpbnB1dCBkZXZpY2UgYXZhaWxhYmxlIikpOworICAgICAgICBpZiAodmlkZW9NZXNz
YWdlKSB7CisgICAgICAgICAgICBndGtfbWlzY19zZXRfYWxpZ25tZW50KEdUS19NSVNDKHZpZGVv
TWVzc2FnZSksIDAsIDApOworICAgICAgICAgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1go
Y29udGVudEFyZWEpLCB2aWRlb01lc3NhZ2UsIEZBTFNFLCBGQUxTRSwgNik7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAoaGFzVmlkZW8pIHsKKyAgICAgICAgR3RrV2lkZ2V0KiBmcmFtZSA9
IGd0a19mcmFtZV9uZXcoXygiVmlkZW8iKSk7CisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgMiwg
MCkKKyAgICAgICAgdmJveCA9IGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwg
MCk7CisjZWxzZQorICAgICAgICB2Ym94ID0gZ3RrX3Zib3hfbmV3KFRSVUUsIDApOworI2VuZGlm
CisgICAgICAgIGd0a19jb250YWluZXJfc2V0X2JvcmRlcl93aWR0aChHVEtfQ09OVEFJTkVSKHZi
b3gpLCAzKTsKKworICAgICAgICBtX3ZpZGVvQ29tYm8gPSBndGtfY29tYm9fYm94X3RleHRfbmV3
KCk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCB2aWRlb0xpc3RMZW5ndGg7IGkrKykKKyAgICAg
ICAgICAgIGd0a19jb21ib19ib3hfdGV4dF9hcHBlbmRfdGV4dChHVEtfQ09NQk9fQk9YX1RFWFQo
bV92aWRlb0NvbWJvKSwgdmlkZW9Tb3VyY2VbaV0tPm5hbWUoKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICAgICAgZ3RrX2NvbWJvX2JveF9zZXRfYWN0aXZlKEdUS19DT01CT19CT1gobV92aWRlb0NvbWJv
KSwgMCk7CisgICAgICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIodmJveCksIG1f
dmlkZW9Db21ibyk7CisKKyAgICAgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihm
cmFtZSksIHZib3gpOworICAgICAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChjb250ZW50
QXJlYSksIGZyYW1lLCBGQUxTRSwgRkFMU0UsIDMpOworICAgIH0KKworICAgIGdfZnJlZSh0aXRs
ZSk7CisgICAgZ19mcmVlKG9yaWdpbik7Cit9CisKK0d0a01lZGlhQ2hvb3NlckRpYWxvZzo6fkd0
a01lZGlhQ2hvb3NlckRpYWxvZygpCit7CisgICAgZ3RrX3dpZGdldF9kZXN0cm95KG1fZGlhbG9n
KTsKK30KKworaW50IEd0a01lZGlhQ2hvb3NlckRpYWxvZzo6c2VsZWN0ZWRBdWRpbygpCit7Cisg
ICAgaWYgKG1fYXVkaW9Db21ibykKKyAgICAgICAgcmV0dXJuIGd0a19jb21ib19ib3hfZ2V0X2Fj
dGl2ZShHVEtfQ09NQk9fQk9YKG1fYXVkaW9Db21ibykpOworCisgICAgcmV0dXJuIC0xOworfQor
CitpbnQgR3RrTWVkaWFDaG9vc2VyRGlhbG9nOjpzZWxlY3RlZFZpZGVvKCkKK3sKKyAgICBpZiAo
bV92aWRlb0NvbWJvKQorICAgICAgICByZXR1cm4gZ3RrX2NvbWJvX2JveF9nZXRfYWN0aXZlKEdU
S19DT01CT19CT1gobV92aWRlb0NvbWJvKSk7CisKKyAgICByZXR1cm4gLTE7Cit9CisKK3ZvaWQg
R3RrTWVkaWFDaG9vc2VyRGlhbG9nOjpzaG93KCkKK3sKKyAgICBndGtfd2lkZ2V0X3Nob3dfYWxs
KG1fZGlhbG9nKTsKK30KKworR3RrV2lkZ2V0KiBHdGtNZWRpYUNob29zZXJEaWFsb2c6OndpZGdl
dCgpCit7CisgICAgcmV0dXJuIG1fZGlhbG9nOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrTWVkaWFDaG9vc2VyRGlhbG9nLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvR3RrTWVkaWFDaG9vc2VyRGlhbG9nLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFm
MjQ2ZTJjNjNjNjE2YmYxNTE0MjUxZmIyNTRlMGY3ODBmMzVlMgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtNZWRpYUNob29zZXJEaWFsb2cuaApAQCAt
MCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbGxhYm9yYS4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRl
ZiBHdGtNZWRpYUNob29zZXJEaWFsb2dfaAorI2RlZmluZSBHdGtNZWRpYUNob29zZXJEaWFsb2df
aAorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFS
ZXF1ZXN0LmgiCisKKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPgorI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEd0a01lZGlh
Q2hvb3NlckRpYWxvZyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR3RrTWVkaWFDaG9vc2Vy
RGlhbG9nKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKworcHVibGljOgorICAgIEd0
a01lZGlhQ2hvb3NlckRpYWxvZyhHdGtXaWRnZXQgKnBhcmVudCwgVXNlck1lZGlhUmVxdWVzdCos
IGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VW
ZWN0b3ImKTsKKyAgICB+R3RrTWVkaWFDaG9vc2VyRGlhbG9nKCk7CisKKyAgICB2b2lkIHNob3co
KTsKKyAgICBpbnQgc2VsZWN0ZWRBdWRpbygpOworICAgIGludCBzZWxlY3RlZFZpZGVvKCk7Cisg
ICAgR3RrV2lkZ2V0KiB3aWRnZXQoKTsKKworcHJpdmF0ZToKKworICAgIEd0a1dpZGdldCAqbV9k
aWFsb2c7CisgICAgR3RrV2lkZ2V0ICptX2F1ZGlvQ29tYm87CisgICAgR3RrV2lkZ2V0ICptX3Zp
ZGVvQ29tYm87Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBHdGtN
ZWRpYUNob29zZXJEaWFsb2dfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvR05VbWFr
ZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQppbmRleCA1YmU5ZWI1
NDhlZTAyM2QxNDBhMzVkMTY2MjQzM2Q1ODFiYjcxYjgzLi5mYmE4NGJjMGYxMDJmM2I3MjQ5YmQy
ZTMzM2UwOGJkYjE5YTkxNGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtl
ZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQpAQCAtMTQyLDYg
KzE0Miw4IEBAIHdlYmtpdGd0a19zdGF0aWNfaF9hcGkgKz0gXAogCSQoc3JjZGlyKS9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uaCBcCiAJJChzcmNkaXIp
L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJyZXNvdXJjZS5oIFwKIAkkKHNyY2Rp
cikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmggXAorCSQoc3Jj
ZGlyKS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdC5oIFwK
KwkkKHNyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJl
cXVlc3QuaCBcCiAJJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3
aW5kb3dmZWF0dXJlcy5oIFwKIAkkKHNyY2RpcikvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuaAogCkBAIC0yNzYsNiArMjc4LDEwIEBAIHdlYmtpdGd0a19zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicGx1Z2luZGF0YWJhc2Vwcml2
YXRlLmggXAogCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAg
XAogCVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5nc3ByaXZhdGUuaCBc
CisJU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxpc3QuY3BwIFwK
KwlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdHByaXZhdGUu
aCBcCisJU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Qu
Y3BwIFwKKwlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVz
dHByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3Bw
IFwKIAlTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaCBcCiAJ
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmNwcCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Vc2VyTWVkaWFDbGll
bnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVXNlck1lZGlhQ2xp
ZW50R3RrLmNwcAppbmRleCAzOTE2NzZhZmI1YWY5ZjA3NWViMjZiMDY5YWM5MzVjZjBlYmYzY2M2
Li41NzdmNWEwM2Y1NmI0MzVmODVmZTYwNzNjMGE0MjIyMWMwZmU3ZmY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Vc2VyTWVkaWFDbGllbnRHdGsuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1VzZXJNZWRpYUNsaWVudEd0ay5j
cHAKQEAgLTIyLDE1ICsyMiwxNiBAQAogI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudEd0ay5oIgog
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5o
IgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiVXNlck1lZGlhUmVxdWVz
dC5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYWxpc3Rwcml2YXRlLmgiCisjaW5jbHVk
ZSAid2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGUuaCIKIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1Vc2VyTWVkaWFDbGllbnRHdGs6OlVz
ZXJNZWRpYUNsaWVudEd0aygpCitVc2VyTWVkaWFDbGllbnRHdGs6OlVzZXJNZWRpYUNsaWVudEd0
ayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQorICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiB7CiB9
CiAKQEAgLTQwLDEyICs0MSwxMiBAQCBVc2VyTWVkaWFDbGllbnRHdGs6On5Vc2VyTWVkaWFDbGll
bnRHdGsoKQogCiB2b2lkIFVzZXJNZWRpYUNsaWVudEd0azo6cGFnZURlc3Ryb3llZCgpCiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAogdm9pZCBVc2VyTWVkaWFDbGllbnRHdGs6OnJlcXVl
c3RVc2VyTWVkaWEoV1RGOjpQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IHBycFJlcXVlc3Qs
IGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZSwgY29uc3QgTWVkaWFT
dHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVvU291cmNlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IHJlcXVlc3QgPSBwcnBSZXF1ZXN0OworICAg
IGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYlZpZXcsICJjaG9vc2UtbWVkaWEtZGV2aWNlIiwg
a2l0TmV3KHJlcXVlc3QuZ2V0KCkpLCBraXROZXcoYXVkaW9Tb3VyY2UpLCBraXROZXcodmlkZW9T
b3VyY2UpKTsKIH0KIAogdm9pZCBVc2VyTWVkaWFDbGllbnRHdGs6OmNhbmNlbFVzZXJNZWRpYVJl
cXVlc3QoVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1VzZXJNZWRpYUNsaWVudEd0ay5oIGIvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50R3RrLmgKaW5kZXggMDM2MmE0YTNk
MDIzMzE1MWNhMDE1MzE0M2Q0NTZkY2MxYTRhNjAzMy4uOTU3MDBlZmIzNTM2OTM4ZWJkY2QzNjQ2
N2QzZGVhMjNkYTM3M2I2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvVXNlck1lZGlhQ2xpZW50R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50R3RrLmgKQEAgLTIyLDE4ICsyMiwyOSBAQAogCiAjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCiAj
aW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50LmgiCiAKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJW
aWV3IFdlYktpdFdlYlZpZXc7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFVzZXJNZWRp
YVJlcXVlc3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBVc2VyTWVkaWFDbGll
bnRHdGsgOiBwdWJsaWMgV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBV
c2VyTWVkaWFDbGllbnRHdGsoKTsKKyAgICBVc2VyTWVkaWFDbGllbnRHdGsoV2ViS2l0V2ViVmll
dyopOwogICAgIHZpcnR1YWwgflVzZXJNZWRpYUNsaWVudEd0aygpOwogCiAgICAgdmlydHVhbCB2
b2lkIHBhZ2VEZXN0cm95ZWQoKTsKKwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0VXNlck1lZGlh
KFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0PiwgY29uc3QgV2ViQ29y
ZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImLCBjb25zdCBXZWJDb3JlOjpNZWRpYVN0cmVhbVNv
dXJjZVZlY3RvciYpOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KFdl
YkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqKTsKKworcHJpdmF0ZToKKyAgICBXZWJLaXRXZWJWaWV3
KiBtX3dlYlZpZXc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL2RvY3Mvd2Via2l0Z3RrLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJLaXQv
Z3RrL2RvY3Mvd2Via2l0Z3RrLWRvY3Muc2dtbAppbmRleCA3MjEwNjUyMmZiNWJhYmE4YjAwOWZl
MzU0NGI5YWRmMjNmY2JiMTk4Li41YTNhYmIzZjY3MThlNTE1YWNkMzMxMDllMTRmZTlmZTlhMDRj
MzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzL3dlYmtpdGd0ay1kb2NzLnNn
bWwKKysrIGIvU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJraXRndGstZG9jcy5zZ21sCkBAIC0z
Myw2ICszMyw4IEBACiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dlYmtpdGRvd25sb2FkLnht
bCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC93ZWJraXR2aWV3cG9ydGF0dHJpYnV0ZXMu
eG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dlYmtpdGhpdHRlc3RyZXN1bHQueG1s
Ii8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dlYmtpdHdlYnVzZXJtZWRpYWxpc3QueG1s
Ii8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Qu
eG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dlYmtpdHdlYnBsdWdpbi54bWwiLz4K
ICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvd2Via2l0d2VicGx1Z2luZGF0YWJhc2UueG1sIi8+
CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3dlYmtpdHNvdXBhdXRoZGlhbG9nLnhtbCIvPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJraXRndGstc2VjdGlvbnMudHh0
IGIvU291cmNlL1dlYktpdC9ndGsvZG9jcy93ZWJraXRndGstc2VjdGlvbnMudHh0CmluZGV4IGI3
MDdiZjgzZDcxMWEwYzFlMTc3YWI2NGYxNDc2ZjRjMWUwZmJlN2EuLjNjOTlhNzdhM2M1M2I3YTdm
YWFmY2JiNjY5MmE4MzY4YzdmZDU1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL2Rv
Y3Mvd2Via2l0Z3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzL3dl
YmtpdGd0ay1zZWN0aW9ucy50eHQKQEAgLTY4Niw2ICs2ODYsNDkgQEAgV2ViS2l0SWNvbkRhdGFi
YXNlUHJpdmF0ZQogPC9TRUNUSU9OPgogCiA8U0VDVElPTj4KKzxGSUxFPndlYmtpdHdlYnVzZXJt
ZWRpYWxpc3Q8L0ZJTEU+Cis8VElUTEU+V2ViS2l0V2ViVXNlck1lZGlhTGlzdDwvVElUTEU+CitX
ZWJLaXRXZWJVc2VyTWVkaWFMaXN0Cit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfbGVu
Z3RoCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfaXRlbV9uYW1lCit3ZWJraXRfd2Vi
X3VzZXJfbWVkaWFfbGlzdF9pc19pdGVtX3NlbGVjdGVkCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFf
bGlzdF9zZWxlY3RfaXRlbQorPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXRUJLSVRfSVNfV0VCX1VT
RVJfTUVESUFfTElTVAorV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX0xJU1RfQ0xBU1MKK1dFQktJ
VF9XRUJfVVNFUl9NRURJQV9MSVNUCitXRUJLSVRfV0VCX1VTRVJfTUVESUFfTElTVF9DTEFTUwor
V0VCS0lUX1dFQl9VU0VSX01FRElBX0xJU1RfR0VUX0NMQVNTCitXRUJLSVRfVFlQRV9XRUJfVVNF
Ul9NRURJQV9MSVNUCis8U1VCU0VDVElPTiBQcml2YXRlPgorV2ViS2l0V2ViVXNlck1lZGlhTGlz
dFByaXZhdGUKK1dlYktpdFdlYlVzZXJNZWRpYUxpc3RDbGFzcword2Via2l0X3dlYl91c2VyX21l
ZGlhX2xpc3RfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+Cis8RklMRT53ZWJraXR3
ZWJ1c2VybWVkaWFyZXF1ZXN0PC9GSUxFPgorPFRJVExFPldlYktpdFdlYlVzZXJNZWRpYVJlcXVl
c3Q8L1RJVExFPgorV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdAord2Via2l0X3dlYl91c2VyX21l
ZGlhX3JlcXVlc3RfYWxsb3cKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2RlbnkKK3dl
YmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRzX2F1ZGlvCit3ZWJraXRfd2ViX3VzZXJf
bWVkaWFfcmVxdWVzdF93YW50c192aWRlbword2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rf
Z2V0X3NlY3VyaXR5X29yaWdpbgorPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXRUJLSVRfSVNfV0VC
X1VTRVJfTUVESUFfUkVRVUVTVAorV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX1JFUVVFU1RfQ0xB
U1MKK1dFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX1JFUVVFU1QKK1dFQktJVF9XRUJfVVNFUl9N
RURJQV9SRVFVRVNUCitXRUJLSVRfV0VCX1VTRVJfTUVESUFfUkVRVUVTVF9DTEFTUworV0VCS0lU
X1dFQl9VU0VSX01FRElBX1JFUVVFU1RfR0VUX0NMQVNTCis8U1VCU0VDVElPTiBQcml2YXRlPgor
V2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdENsYXNzCitXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0
UHJpdmF0ZQord2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZ2V0X3R5cGUKKzwvU0VDVElP
Tj4KKworPFNFQ1RJT04+CiA8RklMRT53ZWJraXRmYXZpY29uZGF0YWJhc2U8L0ZJTEU+CiA8VElU
TEU+V2ViS2l0RmF2aWNvbkRhdGFiYXNlPC9USVRMRT4KIFdlYktpdEZhdmljb25EYXRhYmFzZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oIGIvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCmluZGV4IGFhN2I5M2RiZGE4YzI2ZGUyMWU5ODJkMzlj
NjE2NWZiOGMyZjVlNzcuLmJmMTZhMjVlOTJlZDU1ZjliMjA3YjRhNzJiYzYzYmI4OTY5ZjFlYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmgKQEAgLTUxLDYgKzUxLDggQEAKICNpbmNsdWRl
IDx3ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Vi
a2l0d2VicmVzb3VyY2UuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaD4K
KyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdC5oPgorI2luY2x1ZGUgPHdl
YmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtp
dHdlYnZpZXcuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaD4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRp
YWxpc3QuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYWxp
c3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjk3MmRkNGM2NTA2ODMyMGM4MGRmYThhNDBhOTIxOWJkOGE0ZGQ0
YTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dXNlcm1lZGlhbGlzdC5jcHAKQEAgLTAsMCArMSwxNjcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChD
KSAyMDEyIENvbGxhYm9yYSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjEx
MC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAid2Via2l0
d2VidXNlcm1lZGlhbGlzdC5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1
ZGUgIndlYmtpdGdsb2JhbHNwcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0d2VidXNlcm1lZGlh
bGlzdHByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKKworLyoqCisg
KiBTRUNUSU9OOndlYmtpdHdlYnVzZXJtZWRpYWxpc3QKKyAqIEBzaG9ydF9kZXNjcmlwdGlvbjog
VXNlck1lZGlhIExpc3QKKyAqIEBUaXRsZTogV2ViS2l0V2ViVXNlck1lZGlhTGlzdAorICoKKyAq
ICNXZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGNvbnRhaW5zIGEgbGlzdCBvZgorICogYXVkaW8gb3Ig
dmlkZW8gc291cmNlcyBmcm9tIGEgV2ViVXNlck1lZGlhUmVxdWVzdAorICoKKyAqIFNpbmNlOiAy
LjAKKyAqLworCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdHJ1Y3QgX1dlYktpdFdlYlVz
ZXJNZWRpYUxpc3RQcml2YXRlIHsKKyAgICBXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3Rv
ciBzb3VyY2VzOworICAgIFZlY3Rvcjxib29sPiBzb3VyY2VTZWxlY3Rpb25zOworfTsKKworR19E
RUZJTkVfVFlQRShXZWJLaXRXZWJVc2VyTWVkaWFMaXN0LCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFf
bGlzdCwgR19UWVBFX09CSkVDVCkKKworc3RhdGljIHZvaWQgd2Via2l0V2ViVXNlck1lZGlhTGlz
dEZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBXRUJLSVRfV0VCX1VTRVJfTUVESUFf
TElTVChvYmplY3QpLT5wcml2LT5+V2ViS2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGUoKTsKKyAg
ICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9wYXJlbnRfY2xhc3Mp
LT5maW5hbGl6ZShvYmplY3QpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3VzZXJfbWVk
aWFfbGlzdF9jbGFzc19pbml0KFdlYktpdFdlYlVzZXJNZWRpYUxpc3RDbGFzcyogbGlzdENsYXNz
KQoreworICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MobGlz
dENsYXNzKTsKKyAgICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0V2ViVXNlck1lZGlh
TGlzdEZpbmFsaXplOworCisgICAgd2Via2l0SW5pdCgpOworCisgICAgZ190eXBlX2NsYXNzX2Fk
ZF9wcml2YXRlKGxpc3RDbGFzcywgc2l6ZW9mKFdlYktpdFdlYlVzZXJNZWRpYUxpc3RQcml2YXRl
KSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2luaXQoV2Vi
S2l0V2ViVXNlck1lZGlhTGlzdCogbGlzdCkKK3sKKyAgICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0
UHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShsaXN0LCBXRUJLSVRf
VFlQRV9XRUJfVVNFUl9NRURJQV9MSVNULCBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0UHJpdmF0ZSk7
CisgICAgbGlzdC0+cHJpdiA9IHByaXY7CisKKyAgICAvLyBwbGFjZW1lbnQgbmV3IHN5bnRheAor
ICAgIG5ldyAocHJpdikgV2ViS2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGUoKTsKK30KKworLyoq
CisgKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfbGVuZ3RoOgorICogQGxpc3Q6IHRo
ZSBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGl0c2VsZgorICoKKyAqIFJldHVybnMgdGhlIHNpemUg
b2YgdGhlIGVsZW1lbnRzIGxpc3QuCisgKgorICogUmV0dXJuIHZhbHVlOiBudW1iZXIgb2YgZWxl
bWVudHMuCisgKgorICogU2luY2U6IDIuMAorICovCitndWludCB3ZWJraXRfd2ViX3VzZXJfbWVk
aWFfbGlzdF9nZXRfbGVuZ3RoKFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGxpc3QpCit7CisgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX0xJU1QobGlzdCks
IDApOworCisgICAgcmV0dXJuIGNvcmUobGlzdCkuc2l6ZSgpOworfQorCisKKy8qKgorICogd2Vi
a2l0X3dlYl91c2VyX21lZGlhX2xpc3RfZ2V0X2l0ZW1fbmFtZToKKyAqIEBsaXN0OiB0aGUgI1dl
YktpdFdlYlVzZXJNZWRpYUxpc3QgaXRzZWxmCisgKiBAaW5kZXg6IHRoZSB3YW50ZWQgZWxlbWVu
dCBpbmRleC4KKyAqCisgKiBSZXR1cm5zIHRoZSBkZXZpY2UgbmFtZSBvZiB0aGUgZWxlbWVudC4K
KyAqCisgKiBSZXR1cm4gdmFsdWU6IHRoZSBkZXZpY2UgaWQgb2YgdGhlIEBpbmRleCBnaXZlbiBl
bGVtZW50LgorICoKKyAqIFNpbmNlOiAyLjAKKyAqLworY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJf
dXNlcl9tZWRpYV9saXN0X2dldF9pdGVtX25hbWUoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCogbGlz
dCwgZ3VpbnQgaW5kZXgpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9VU0VSX01FRElBX0xJU1QobGlzdCksIDApOworCisgICAgV2ViQ29yZTo6TWVkaWFTdHJlYW1T
b3VyY2VWZWN0b3ImIHNvdXJjZXMgPSBjb3JlKGxpc3QpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKGluZGV4IDwgc291cmNlcy5zaXplKCksIDApOworCisgICAgcmV0dXJuIGdfc3RyZHVwKHNv
dXJjZXNbaW5kZXhdLT5uYW1lKCkudXRmOCgpLmRhdGEoKSk7Cit9CisKKy8qKgorICogd2Via2l0
X3dlYl91c2VyX21lZGlhX2xpc3RfaXNfaXRlbV9zZWxlY3RlZDoKKyAqIEBsaXN0OiB0aGUgI1dl
YktpdFdlYlVzZXJNZWRpYUxpc3QgaXRzZWxmCisgKiBAaW5kZXg6IHRoZSB3YW50ZWQgZWxlbWVu
dCBpbmRleC4KKyAqCisgKiBJbmRpY2F0ZSBpZiBhIGRldmljZSBpcyBtYXJrZWQgYXMgc2VsZWN0
ZWQuCisgKgorICogUmV0dXJuIHZhbHVlOiBUcnVlIGlmIHRoZSBkZXZpY2UgcmVwcmVzZW50ZWQg
YnkgQGluZGV4IGlzIG1hcmtlZCBhcyBzZWxlY3RlZC4KKyAqCisgKiBTaW5jZTogMi4wCisgKi8K
K2dib29sZWFuIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2lzX2l0ZW1fc2VsZWN0ZWQoV2Vi
S2l0V2ViVXNlck1lZGlhTGlzdCogbGlzdCwgZ3VpbnQgaW5kZXgpCit7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX0xJU1QobGlzdCksIEZBTFNFKTsK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChpbmRleCA8IGNvcmUobGlzdCkuc2l6ZSgpLCBGQUxT
RSk7CisKKyAgICByZXR1cm4gbGlzdC0+cHJpdi0+c291cmNlU2VsZWN0aW9uc1tpbmRleF07Cit9
CisKKy8qKgorICogd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3Rfc2VsZWN0X2l0ZW06CisgKiBA
bGlzdDogdGhlICNXZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGl0c2VsZgorICogQGluZGV4OiB0aGUg
d2FudGVkIGVsZW1lbnQgaW5kZXguCisgKgorICogTWFyayBhIGRldmljZSBhcyBzZWxlY3RlZWQu
CisgKgorICogU2luY2U6IDIuMAorICovCit2b2lkIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0
X3NlbGVjdF9pdGVtKFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGxpc3QsIGd1aW50IGluZGV4KQor
eworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX0xJU1QobGlz
dCkpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoaW5kZXggPCBjb3JlKGxpc3QpLnNpemUoKSk7CisK
KyAgICBsaXN0LT5wcml2LT5zb3VyY2VTZWxlY3Rpb25zW2luZGV4XSA9IFRSVUU7Cit9CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgY29y
ZShXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBsaXN0KQoreworICAgIHJldHVybiBsaXN0LT5wcml2
LT5zb3VyY2VzOworfQorCitXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBraXROZXcoY29uc3QgV2Vi
Q29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHNvdXJjZXMpCit7CisgICAgV2ViS2l0V2Vi
VXNlck1lZGlhTGlzdCogd2ViTGlzdCA9IFdFQktJVF9XRUJfVVNFUl9NRURJQV9MSVNUKGdfb2Jq
ZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNULCBOVUxMKSk7CisgICAgd2Vi
TGlzdC0+cHJpdi0+c291cmNlcyA9IHNvdXJjZXM7CisgICAgd2ViTGlzdC0+cHJpdi0+c291cmNl
U2VsZWN0aW9ucy5maWxsKEZBTFNFLCBzb3VyY2VzLnNpemUoKSk7CisKKyAgICByZXR1cm4gd2Vi
TGlzdDsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFsaXN0LmggYi9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhmYTI4ZTk4NDNmNDU5ZWJiZDIxNzczZGQwZTg3MDZmZWM5MTdhZjYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdC5o
CkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIENvbGxhYm9yYSBM
dGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAg
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3Jp
dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLwor
CisKKyNpZm5kZWYgd2Via2l0d2VidXNlcm1lZGlhbGlzdF9oCisjZGVmaW5lIHdlYmtpdHdlYnVz
ZXJtZWRpYWxpc3RfaAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDxnbGli
Lmg+CisKKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xT
CisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfTElTVCAgICAgICAgICAgICAg
ICh3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRf
V0VCX1VTRVJfTUVESUFfTElTVChvYmopICAgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNU
QU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNULCBXZWJLaXRX
ZWJVc2VyTWVkaWFMaXN0KSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9VU0VSX01FRElBX0xJU1RfQ0xB
U1Moa2xhc3MpICAgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lU
X1RZUEVfV0VCX1VTRVJfTUVESUFfTElTVCwgV2ViS2l0V2ViVXNlck1lZGlhTGlzdENsYXNzKSkK
KyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX0xJU1Qob2JqKSAgICAgICAgICAgIChH
X1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVE
SUFfTElTVCkpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9MSVNUX0NMQVNTKGts
YXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dF
Ql9VU0VSX01FRElBX0xJU1QpKQorI2RlZmluZSBXRUJLSVRfV0VCX1VTRVJfTUVESUFfTElTVF9H
RVRfQ0xBU1Mob2JqKSAgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJL
SVRfVFlQRV9XRUJfVVNFUl9NRURJQV9MSVNULCBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0Q2xhc3Mp
KQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhTGlzdCBXZWJLaXRXZWJVc2Vy
TWVkaWFMaXN0OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRpYUxpc3RDbGFzcyBX
ZWJLaXRXZWJVc2VyTWVkaWFMaXN0Q2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVXNl
ck1lZGlhTGlzdFByaXZhdGUgV2ViS2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGU7CisKK3N0cnVj
dCBfV2ViS2l0V2ViVXNlck1lZGlhTGlzdCB7CisgICAgR09iamVjdCBwYXJlbnRfaW5zdGFuY2U7
CisgICAgV2ViS2l0V2ViVXNlck1lZGlhTGlzdFByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3Qg
X1dlYktpdFdlYlVzZXJNZWRpYUxpc3RDbGFzcyB7CisgICAgR09iamVjdENsYXNzIHBhcmVudF9j
bGFzczsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0
X2dldF90eXBlICh2b2lkKSBHX0dOVUNfQ09OU1Q7CisKK1dFQktJVF9BUEkgZ3VpbnQKK3dlYmtp
dF93ZWJfdXNlcl9tZWRpYV9saXN0X2dldF9sZW5ndGggICAgICAgIChXZWJLaXRXZWJVc2VyTWVk
aWFMaXN0ICpsaXN0KTsKKworV0VCS0lUX0FQSSBjb25zdCBnY2hhciAqCit3ZWJraXRfd2ViX3Vz
ZXJfbWVkaWFfbGlzdF9nZXRfaXRlbV9uYW1lICAgICAoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCAq
bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWlu
dCBpbmRleCk7CitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlz
dF9pc19pdGVtX3NlbGVjdGVkICAoV2ViS2l0V2ViVXNlck1lZGlhTGlzdCAqbGlzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCBpbmRleCk7CitX
RUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X3NlbGVjdF9pdGVtICAg
ICAgIChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0ICpsaXN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IGluZGV4KTsKKworR19FTkRfREVDTFMKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VidXNl
cm1lZGlhbGlzdHByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ1
c2VybWVkaWFsaXN0cHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3OGE5MWY2MGVlYWE4ZDNhMzAwODQx
ODc2OTNjZDMzN2Q1YzI3ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhbGlzdHByaXZhdGUuaApAQCAtMCwwICsxLDM3IEBACisv
KgorICogIENvcHlyaWdodCAoQykgMjAxMiBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNl
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworCisjaWZuZGVmIHdlYmtpdHdl
YnVzZXJtZWRpYWxpc3Rwcml2YXRlX2gKKyNkZWZpbmUgd2Via2l0d2VidXNlcm1lZGlhbGlzdHBy
aXZhdGVfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3Ry
ZWFtU291cmNlLmgiCisjaW5jbHVkZSAid2Via2l0d2VidXNlcm1lZGlhbGlzdC5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGNvcmUo
V2ViS2l0V2ViVXNlck1lZGlhTGlzdCopOworV2ViS2l0V2ViVXNlck1lZGlhTGlzdCoga2l0TmV3
KGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJik7CisKK30KKworI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyB3ZWJraXR3ZWJ1c2VybWVkaWFs
aXN0cHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2VidXNlcm1lZGlhcmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2VidXNlcm1lZGlhcmVxdWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA4OGQ0MTAyYWM1ODkwMzk5MmQ3
NjkyNmY0NGViMzMxZTI3MWY0ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0LmNwcApAQCAtMCwwICsxLDE5OCBAQAor
LyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0
d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3QuaCIKKworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIk1lZGlhU3Ry
ZWFtU291cmNlLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJVc2Vy
TWVkaWFSZXF1ZXN0LmgiCisjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIKKyNpbmNs
dWRlICJ3ZWJraXRzZWN1cml0eW9yaWdpbnByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1
c2VybWVkaWFsaXN0cHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnVzZXJtZWRpYXJlcXVl
c3Rwcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCisvKioKKyAqIFNF
Q1RJT046d2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdAorICogQHNob3J0X2Rlc2NyaXB0aW9uOiBU
aGUgV2ViS2l0J3MgVXNlck1lZGlhIFJlcXVlc3QuCisgKiBAVGl0bGU6IFdlYktpdFdlYlVzZXJN
ZWRpYVJlcXVlc3QKKyAqCisgKiBUaGlzIG9iamVjdCBjb250YWlucyB0aGUgaW5mb3JtYXRpb24g
b2YgYSBtZWRpYSByZXF1ZXN0LgorICogSXQgY2FuIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhlIHJl
cXVlc3QgaXMgYXNraW5nIGZvciBhdWRpbyBhbmQvb3IgdmlkZW8uCisgKgorICogU2luY2U6IDIu
MAorICovCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3N0cnVjdCBfV2ViS2l0V2ViVXNl
ck1lZGlhUmVxdWVzdFByaXZhdGUgeworICAgIFJlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1
ZXN0PiB1c2VyTWVkaWFSZXF1ZXN0OworfTsKKworR19ERUZJTkVfVFlQRShXZWJLaXRXZWJVc2Vy
TWVkaWFSZXF1ZXN0LCB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdCwgR19UWVBFX09CSkVD
VCkKKworc3RhdGljIHZvaWQgd2Via2l0V2ViVXNlck1lZGlhUmVxdWVzdEZpbmFsaXplKEdPYmpl
Y3QgKm9iamVjdCkKK3sKKyAgICBXRUJLSVRfV0VCX1VTRVJfTUVESUFfUkVRVUVTVChvYmplY3Qp
LT5wcml2LT5+V2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdFByaXZhdGUoKTsKKworICAgIEdfT0JK
RUNUX0NMQVNTKHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3BhcmVudF9jbGFzcyktPmZp
bmFsaXplKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9y
ZXF1ZXN0X2NsYXNzX2luaXQoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdENsYXNzKiByZXF1ZXN0
Q2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBnb2JqZWN0X2NsYXNzID0gR19PQkpFQ1RfQ0xB
U1MocmVxdWVzdENsYXNzKTsKKyAgICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdFdl
YlVzZXJNZWRpYVJlcXVlc3RGaW5hbGl6ZTsKKworICAgIHdlYmtpdEluaXQoKTsKKworICAgIGdf
dHlwZV9jbGFzc19hZGRfcHJpdmF0ZShyZXF1ZXN0Q2xhc3MsIHNpemVvZihXZWJLaXRXZWJVc2Vy
TWVkaWFSZXF1ZXN0UHJpdmF0ZSkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3VzZXJf
bWVkaWFfcmVxdWVzdF9pbml0KFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCit7
CisgICAgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdFByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5T
VEFOQ0VfR0VUX1BSSVZBVEUocmVxdWVzdCwgV0VCS0lUX1RZUEVfV0VCX1VTRVJfTUVESUFfUkVR
VUVTVCwgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdFByaXZhdGUpOworICAgIHJlcXVlc3QtPnBy
aXYgPSBwcml2OworCisgICAgbmV3IChwcml2KSBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0UHJp
dmF0ZSgpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X3dhbnRz
X2F1ZGlvOgorICogQHJlcXVlc3Q6IHRoZSAjV2ViS2l0VXNlck1lZGlhUmVxdWVzdCBpdHNlbGYu
CisgKgorICogSW5kaWNhdGVzIHRoZSBjb250ZW50IG9mIGFuIFVzZXJNZWRpYVJlcXVlc3QuCisg
KgorICogUmV0dXJuIHZhbHVlOiAlVFJVRSBpZiB0aGUgcmVxdWVzdCBjb250YWlucyBhbiBhdWRp
byByZXF1ZXN0IG9yICVGQUxTRSBpZiBvdGhlcndpc2UuCisgKgorICogU2luY2U6IDIuMAorICov
CitnYm9vbGVhbiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF93YW50c19hdWRpbyhXZWJL
aXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9SRVFVRVNUKHJlcXVlc3QpLCBGQUxTRSk7CisK
KyAgICByZXR1cm4gY29yZShyZXF1ZXN0KS0+YXVkaW8oKTsKK30KKworLyoqCisgKiB3ZWJraXRf
d2ViX3VzZXJfbWVkaWFfcmVxdWVzdF93YW50c192aWRlbzoKKyAqIEByZXF1ZXN0OiB0aGUgI1dl
YktpdFVzZXJNZWRpYVJlcXVlc3QgaXRzZWxmLgorICoKKyAqIEluZGljYXRlcyB0aGUgY29udGVu
dCBvZiBhbiBVc2VyTWVkaWFSZXF1ZXN0LgorICoKKyAqIFJldHVybiB2YWx1ZTogJVRSVUUgaWYg
dGhlIHJlcXVlc3QgY29udGFpbnMgYSB2aWRlbyByZXF1ZXN0IG9yICVGQUxTRSBpZiBvdGhlcndp
c2UuCisgKgorICogU2luY2U6IDIuMAorICovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3VzZXJfbWVk
aWFfcmVxdWVzdF93YW50c192aWRlbyhXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0
KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVVNFUl9NRURJQV9S
RVFVRVNUKHJlcXVlc3QpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gY29yZShyZXF1ZXN0KS0+dmlk
ZW8oKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9nZXRfc2Vj
dXJpdHlfb3JpZ2luOgorICogQHJlcXVlc3Q6IHRoZSAjV2ViS2l0VXNlck1lZGlhUmVxdWVzdCBp
dHNlbGYuCisgKgorICogUmV0dXJucyB0aGUgc2VjdXJpdHkgb3JpZ2luIG9mIHRoZSBNZWRpYSBS
ZXF1ZXN0LgorICoKKyAqIFJldHVybiB2YWx1ZTogKHRyYW5zZmVyIG5vbmUpOiB0aGUgc2VjdXJp
dHkgb3JpZ2luIG9mIHRoZSBtZWRpYSByZXF1ZXN0LgorICoKKyAqIFNpbmNlOiAyLjAKKyAqLwor
V2ViS2l0U2VjdXJpdHlPcmlnaW4qIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2dldF9z
ZWN1cml0eV9vcmlnaW4oV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfUkVRVUVTVChy
ZXF1ZXN0KSwgMCk7CisKKyAgICByZXR1cm4ga2l0KGNvcmUocmVxdWVzdCktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7Cit9CisKKy8qKgorICogd2Via2l0X3dl
Yl91c2VyX21lZGlhX3JlcXVlc3RfYWxsb3c6CisgKiBAd2ViUmVxdWVzdDogYSAjV2ViS2l0V2Vi
VXNlck1lZGlhUmVxdWVzdAorICogQGF1ZGlvTWVkaWFMaXN0OiBhICNXZWJLaXRXZWJVc2VyTWVk
aWFMaXN0IGNvbnRhaW5pbmcgYXVkaW8gZGV2aWNlcworICogQHZpZGVvTWVkaWFMaXN0OiBhICNX
ZWJLaXRXZWJVc2VyTWVkaWFMaXN0IGNvbnRhaW5pbmcgdmlkZW8gZGV2aWNlcworICoKKyAqIFRo
aXMgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQgYnkgdGhlIGFwcGxpY2F0aW9uIGFmdGVyIHRoZSB1
c2VyIHNlbGVjdHMKKyAqIGEgbWVkaWEgZGV2aWNlIGFuZCBhY2NlcHRzIGFuIG1lZGlhIHJlcXVl
c3QKKyAqCisgKiBTaW5jZTogMi4wCisgKiovCit2b2lkIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9y
ZXF1ZXN0X2FsbG93KFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QqIHdlYlJlcXVlc3QsIFdlYktp
dFdlYlVzZXJNZWRpYUxpc3QqIGF1ZGlvTWVkaWFMaXN0LCBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0
KiB2aWRlb01lZGlhTGlzdCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJf
VVNFUl9NRURJQV9SRVFVRVNUKHdlYlJlcXVlc3QpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdF
QktJVF9JU19XRUJfVVNFUl9NRURJQV9MSVNUKGF1ZGlvTWVkaWFMaXN0KSk7CisgICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfTElTVCh2aWRlb01lZGlhTGlzdCkp
OworCisgICAgV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcyA9
IGNvcmUoYXVkaW9NZWRpYUxpc3QpOworICAgIFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVj
dG9yJiB2aWRlb1NvdXJjZXMgPSBjb3JlKHZpZGVvTWVkaWFMaXN0KTsKKworICAgIGZvciAoc2l6
ZV90IGkgPSBhdWRpb1NvdXJjZXMuc2l6ZSgpIC0gMTsgaSAhPSAoc2l6ZV90KSAtMTsgLS1pKQor
ICAgICAgICBpZiAoIXdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2lzX2l0ZW1fc2VsZWN0ZWQo
YXVkaW9NZWRpYUxpc3QsIGkpKQorICAgICAgICAgICAgYXVkaW9Tb3VyY2VzLnJlbW92ZShpKTsK
KworICAgIGZvciAoc2l6ZV90IGkgPSB2aWRlb1NvdXJjZXMuc2l6ZSgpIC0gMTsgaSAhPSAoc2l6
ZV90KSAtMTsgLS1pKQorICAgICAgICBpZiAoIXdlYmtpdF93ZWJfdXNlcl9tZWRpYV9saXN0X2lz
X2l0ZW1fc2VsZWN0ZWQodmlkZW9NZWRpYUxpc3QsIGkpKQorICAgICAgICAgICAgdmlkZW9Tb3Vy
Y2VzLnJlbW92ZShpKTsKKworICAgIGNvcmUod2ViUmVxdWVzdCktPnN1Y2NlZWQoYXVkaW9Tb3Vy
Y2VzLCB2aWRlb1NvdXJjZXMpOworCit9CisKKy8qKgorICogd2Via2l0X3dlYl91c2VyX21lZGlh
X3JlcXVlc3RfZGVueToKKyAqIEB3ZWJSZXF1ZXN0OiBhICNXZWJLaXRXZWJVc2VyTWVkaWFSZXF1
ZXN0CisgKgorICogVGhpcyBtZXRob2Qgc2hvdWxkIGJlIGNhbGxlZCBieSB0aGUgYXBwbGljYXRp
b24gd2hlbiB0aGUgdXNlciByZWplY3RlZCBhIHVzZXJNZWRpYSByZXF1ZXN0LgorICoKKyAqIFNp
bmNlOiAyLjAKKyAqKi8KK3ZvaWQgd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZGVueShX
ZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiB3ZWJSZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9VU0VSX01FRElBX1JFUVVFU1Qod2ViUmVxdWVzdCkpOworICAg
IGNvcmUod2ViUmVxdWVzdCktPmZhaWwoKTsKK30KKworCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCogY29yZShXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0
KiByZXF1ZXN0KQoreworICAgIEFTU0VSVChXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfUkVRVUVT
VChyZXF1ZXN0KSk7CisKKyAgICByZXR1cm4gcmVxdWVzdC0+cHJpdi0+dXNlck1lZGlhUmVxdWVz
dC5nZXQoKTsKK30KKworV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCoga2l0TmV3KFdlYkNvcmU6
OlVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgQVNTRVJUKHJlcXVlc3QpOworCisg
ICAgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCogd2ViUmVxdWVzdCA9IFdFQktJVF9XRUJfVVNF
Ul9NRURJQV9SRVFVRVNUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9S
RVFVRVNULCBOVUxMKSk7CisgICAgd2ViUmVxdWVzdC0+cHJpdi0+dXNlck1lZGlhUmVxdWVzdCA9
IHJlcXVlc3Q7CisKKyAgICByZXR1cm4gd2ViUmVxdWVzdDsKK30KKworfQorCisjZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5MGIzZDM4MDFlZTRhMzZm
MWRmMDE3YWY5N2E3YjJjZjM1ZWU1ODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdC5oCkBAIC0wLDAgKzEsNzMgQEAK
Ky8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIENvbGxhYm9yYSBMdGQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vu
c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisKKyNpZm5kZWYgd2Via2l0
d2VidXNlcm1lZGlhcmVxdWVzdF9oCisjZGVmaW5lIHdlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rf
aAorCisjaW5jbHVkZSAid2Via2l0d2VidXNlcm1lZGlhbGlzdC5oIgorCisjaW5jbHVkZSA8Z2xp
Yi1vYmplY3QuaD4KKyNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRl
ZmluZXMuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQl9VU0VS
X01FRElBX1JFUVVFU1QgICAgICAgICAgICAod2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rf
Z2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9VU0VSX01FRElBX1JFUVVFU1Qob2JqKSAg
ICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVf
V0VCX1VTRVJfTUVESUFfUkVRVUVTVCwgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCkpCisjZGVm
aW5lIFdFQktJVF9XRUJfVVNFUl9NRURJQV9SRVFVRVNUX0NMQVNTKGtsYXNzKSAgICAoR19UWVBF
X0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX1JF
UVVFU1QsIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RDbGFzcykpCisjZGVmaW5lIFdFQktJVF9J
U19XRUJfVVNFUl9NRURJQV9SRVFVRVNUKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RB
TkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElBX1JFUVVFU1QpKQorI2Rl
ZmluZSBXRUJLSVRfSVNfV0VCX1VTRVJfTUVESUFfUkVRVUVTVF9DTEFTUyhrbGFzcykgKEdfVFlQ
RV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfVVNFUl9NRURJQV9S
RVFVRVNUKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9VU0VSX01FRElBX1JFUVVFU1RfR0VUX0NMQVNT
KG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfV0VC
X1VTRVJfTUVESUFfUkVRVUVTVCwgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdENsYXNzKSkKKwor
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QgV2ViS2l0V2ViVXNlck1l
ZGlhUmVxdWVzdDsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xh
c3MgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdENsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRlIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2
YXRlOworCitzdHJ1Y3QgX1dlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QgeworICAgIEdPYmplY3Qg
cGFyZW50X2luc3RhbmNlOworICAgIFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3RQcml2YXRlICpw
cml2OworfTsKKworc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xhc3MgeworICAg
IEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJr
aXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF9nZXRfdHlwZSAodm9pZCkgR19HTlVDX0NPTlNUOwor
CitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF93YW50
c19hdWRpbyAgICAgICAgICAgICAgKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QgKnJlcXVlc3Qp
OworCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfd2ViX3VzZXJfbWVkaWFfcmVxdWVzdF93
YW50c192aWRlbyAgICAgICAgICAgICAgKFdlYktpdFdlYlVzZXJNZWRpYVJlcXVlc3QgKnJlcXVl
c3QpOworCitXRUJLSVRfQVBJIFdlYktpdFNlY3VyaXR5T3JpZ2luICoKK3dlYmtpdF93ZWJfdXNl
cl9tZWRpYV9yZXF1ZXN0X2dldF9zZWN1cml0eV9vcmlnaW4gICAgICAoV2ViS2l0V2ViVXNlck1l
ZGlhUmVxdWVzdCAqcmVxdWVzdCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl91c2Vy
X21lZGlhX3JlcXVlc3RfZGVueSAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJVc2VyTWVk
aWFSZXF1ZXN0ICp3ZWJSZXF1ZXN0KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3Vz
ZXJfbWVkaWFfcmVxdWVzdF9hbGxvdyAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlVzZXJN
ZWRpYVJlcXVlc3QgKndlYlJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYlVzZXJNZWRpYUxpc3QqIGF1ZGlvTWVk
aWFMaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiB2aWRlb01lZGlhTGlzdCk7CisKK0dfRU5E
X0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTU2NGQ3
ZDY2N2E5ZTFkYmI3NzQxZTcyMDgwMjg0ZDJjOWY4NWE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlLmgK
QEAgLTAsMCArMSw0MCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgQ29sbGFib3JhIEx0
ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0
ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisK
KworI2lmbmRlZiB3ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0cHJpdmF0ZV9oCisjZGVmaW5lIHdl
YmtpdHdlYnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFyZXF1ZXN0LmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK3N0cnVjdCBVc2VyTWVkaWFSZXF1ZXN0OworfQorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCogY29yZShXZWJLaXRXZWJVc2VyTWVk
aWFSZXF1ZXN0Kik7CitXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiBraXROZXcoV2ViQ29yZTo6
VXNlck1lZGlhUmVxdWVzdCopOworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KQorCisjZW5kaWYgLy8gd2Via2l0d2VidXNlcm1lZGlhcmVxdWVzdHByaXZhdGVfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IDVhYzA0ODQyZDVmODc2
ZjcyNzZjZTA2YjRiZmQ4ZmI1MTYzNDU4MDUuLjg1ZmUwZWY4YmRlZGJjYWE3OGViZDU4YjA3ODRh
ODFjZWUyMGM3MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5j
cHAKQEAgLTYzLDYgKzYzLDcgQEAKICNpbmNsdWRlICJHZW9sb2NhdGlvbkNsaWVudEd0ay5oIgog
I2luY2x1ZGUgIkdlb2xvY2F0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgorI2luY2x1ZGUgIkd0a01lZGlhQ2hvb3NlckRpYWxvZy5oIgogI2luY2x1ZGUgIkd0
a1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkd0a1ZlcnNpb25pbmcuaCIKICNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKQEAgLTgzLDYgKzg0LDcgQEAKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgor
I2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudEd0ay5oIgogI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRE
T01Eb2N1bWVudFByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXRkb3dubG9hZC5oIgogI2luY2x1
ZGUgIndlYmtpdGRvd25sb2FkcHJpdmF0ZS5oIgpAQCAtMTA3LDYgKzEwOSw4IEBACiAjaW5jbHVk
ZSAid2Via2l0d2VicmVzb3VyY2UuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJzZXR0aW5nc3ByaXZh
dGUuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJwbHVnaW5kYXRhYmFzZXByaXZhdGUuaCIKKyNpbmNs
dWRlICJ3ZWJraXR3ZWJ1c2VybWVkaWFsaXN0cHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdHdl
YnVzZXJtZWRpYXJlcXVlc3Rwcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vid2luZG93ZmVh
dHVyZXMuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oIgogI2luY2x1ZGUgPGdk
ay9nZGtrZXlzeW1zLmg+CkBAIC0xMTksNiArMTIzLDcgQEAKICNpbmNsdWRlICJEZXZpY2VPcmll
bnRhdGlvbkNsaWVudEd0ay5oIgogI2VuZGlmCiAKKwogLyoqCiAgKiBTRUNUSU9OOndlYmtpdHdl
YnZpZXcKICAqIEBzaG9ydF9kZXNjcmlwdGlvbjogVGhlIGNlbnRyYWwgY2xhc3Mgb2YgdGhlIFdl
YktpdEdUSysgQVBJCkBAIC0yMTgsNiArMjIzLDcgQEAgZW51bSB7CiAgICAgTEVBVklOR19GVUxM
U0NSRUVOLAogICAgIENPTlRFWFRfTUVOVSwKICAgICBSVU5fRklMRV9DSE9PU0VSLAorICAgIENI
T09TRV9NRURJQV9ERVZJQ0UsCiAKICAgICBMQVNUX1NJR05BTAogfTsKQEAgLTExNzYsNiArMTE4
Miw1MCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3JlYWxfc2NyaXB0X3Byb21w
dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaQogICAgIHJldHVybiBUUlVFOwogfQogCit0
eXBlZGVmIHN0cnVjdCB7CisgICAgV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdDsK
KyAgICBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBhdWRpb01lZGlhTGlzdDsKKyAgICBXZWJLaXRX
ZWJVc2VyTWVkaWFMaXN0KiB2aWRlb01lZGlhTGlzdDsKKyAgICBHdGtNZWRpYUNob29zZXJEaWFs
b2cqIGRpYWxvZzsKK30gVXNlck1lZGlhU2VsZWN0b3JEYXRhOworCitzdGF0aWMgdm9pZCBtZWRp
YUNob29zZXJSZXNwb25zZUNhbGxiYWNrKEd0a1dpZGdldCogd2lkZ2V0LCBnaW50IHJlc3BvbnNl
SUQsIFVzZXJNZWRpYVNlbGVjdG9yRGF0YSAqZGF0YSkKK3sKKyAgICBpZiAocmVzcG9uc2VJRCA9
PSBHVEtfUkVTUE9OU0VfT0spIHsKKyAgICAgICAgaWYgKGRhdGEtPmRpYWxvZy0+c2VsZWN0ZWRB
dWRpbygpICE9IC0xKQorICAgICAgICAgICAgd2Via2l0X3dlYl91c2VyX21lZGlhX2xpc3Rfc2Vs
ZWN0X2l0ZW0oZGF0YS0+YXVkaW9NZWRpYUxpc3QsIGRhdGEtPmRpYWxvZy0+c2VsZWN0ZWRBdWRp
bygpKTsKKworICAgICAgICBpZiAoZGF0YS0+ZGlhbG9nLT5zZWxlY3RlZFZpZGVvKCkgIT0gLTEp
CisgICAgICAgICAgICB3ZWJraXRfd2ViX3VzZXJfbWVkaWFfbGlzdF9zZWxlY3RfaXRlbShkYXRh
LT52aWRlb01lZGlhTGlzdCwgZGF0YS0+ZGlhbG9nLT5zZWxlY3RlZFZpZGVvKCkpOworCisgICAg
ICAgIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2FsbG93KGRhdGEtPnJlcXVlc3QsIGRh
dGEtPmF1ZGlvTWVkaWFMaXN0LCBkYXRhLT52aWRlb01lZGlhTGlzdCk7CisgICAgfSBlbHNlCisg
ICAgICAgIHdlYmtpdF93ZWJfdXNlcl9tZWRpYV9yZXF1ZXN0X2RlbnkoZGF0YS0+cmVxdWVzdCk7
CisKKyAgICBnX29iamVjdF91bnJlZihkYXRhLT5yZXF1ZXN0KTsKKyAgICBnX29iamVjdF91bnJl
ZihkYXRhLT5hdWRpb01lZGlhTGlzdCk7CisgICAgZ19vYmplY3RfdW5yZWYoZGF0YS0+dmlkZW9N
ZWRpYUxpc3QpOworICAgIGRlbGV0ZSBkYXRhLT5kaWFsb2c7CisgICAgZ19mcmVlKGRhdGEpOwor
fQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3JlYWxfY2hvb3NlX21lZGlhX2Rl
dmljZShXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBXZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0KiBy
ZXF1ZXN0LCBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KiBhdWRpb01lZGlhTGlzdCwgV2ViS2l0V2Vi
VXNlck1lZGlhTGlzdCogdmlkZW9NZWRpYUxpc3QpCit7CisgICAgR3RrV2lkZ2V0KiB0b3BsZXZl
bCA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQod2ViVmlldykpOworICAgIEd0
a01lZGlhQ2hvb3NlckRpYWxvZyogZGlhbG9nID0gbmV3IEd0a01lZGlhQ2hvb3NlckRpYWxvZyh0
b3BsZXZlbCwgY29yZShyZXF1ZXN0KSwgY29yZShhdWRpb01lZGlhTGlzdCksIGNvcmUodmlkZW9N
ZWRpYUxpc3QpKTsKKyAgICBHdGtXaWRnZXQqIHdpZGdldCA9IGRpYWxvZy0+d2lkZ2V0KCk7Cisg
ICAgVXNlck1lZGlhU2VsZWN0b3JEYXRhKiBkYXRhID0gZ19uZXcoVXNlck1lZGlhU2VsZWN0b3JE
YXRhLCAxKTsKKworICAgIGRhdGEtPnJlcXVlc3QgPSAoV2ViS2l0V2ViVXNlck1lZGlhUmVxdWVz
dCopIGdfb2JqZWN0X3JlZihyZXF1ZXN0KTsKKyAgICBkYXRhLT5hdWRpb01lZGlhTGlzdCA9IChX
ZWJLaXRXZWJVc2VyTWVkaWFMaXN0KikgZ19vYmplY3RfcmVmKGF1ZGlvTWVkaWFMaXN0KTsKKyAg
ICBkYXRhLT52aWRlb01lZGlhTGlzdCA9IChXZWJLaXRXZWJVc2VyTWVkaWFMaXN0KikgZ19vYmpl
Y3RfcmVmKHZpZGVvTWVkaWFMaXN0KTsKKyAgICBkYXRhLT5kaWFsb2cgPSBkaWFsb2c7CisKKyAg
ICBnX3NpZ25hbF9jb25uZWN0KHdpZGdldCwgInJlc3BvbnNlIiwgR19DQUxMQkFDSyhtZWRpYUNo
b29zZXJSZXNwb25zZUNhbGxiYWNrKSwgZGF0YSk7CisgICAgZGlhbG9nLT5zaG93KCk7CisgICAg
cmV0dXJuIFRSVUU7Cit9CisKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9j
b25zb2xlX21lc3NhZ2UoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIqIG1lc3Nh
Z2UsIHVuc2lnbmVkIGludCBsaW5lLCBjb25zdCBnY2hhciogc291cmNlSWQpCiB7CiAgICAgZ19t
ZXNzYWdlKCJjb25zb2xlIG1lc3NhZ2U6ICVzIEAlZDogJXNcbiIsIHNvdXJjZUlkLCBsaW5lLCBt
ZXNzYWdlKTsKQEAgLTI3MjcsNiArMjc3NywzMiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3Zp
ZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgICAg
ICAgIFdFQktJVF9UWVBFX1ZJRVdQT1JUX0FUVFJJQlVURVMpOwogCiAgICAgLyoqCisgICAgICog
V2ViS2l0V2ViVmlldzo6Y2hvb3NlLW1lZGlhLWRldmljZToKKyAgICAgKiBAd2ViX3ZpZXc6IHRo
ZSBvYmplY3Qgd2hpY2ggcmVjZWl2ZWQgdGhlIHNpZ25hbAorICAgICAqIEByZXF1ZXN0OiB0aGUg
I1dlYktpdFdlYlVzZXJNZWRpYVJxdWVzdCBhdHRyaWJ1dGUgd2hpY2ggZ2VuZXJhdGVkIHRoZSBy
ZXF1ZXN0LgorICAgICAqIEBhdWRpb0xpc3Q6IGEgI1dlYktpdFdlYlVzZXJNZWRpYUxpc3QgY29u
dGFpbmluZyB0aGUgYXZhaWxhYmxlIGF1ZGlvIG1lZGlhIG9wdGlvbnMuCisgICAgICogQHZpZGVv
TGlzdDogYSAjV2ViS2l0V2ViVXNlck1lZGlhTGlzdCBjb250YWluaW5nIHRoZSBhdmFpbGFibGUg
dmlkZW8gbWVkaWEgb3B0aW9ucy4KKyAgICAgKgorICAgICAqIFdoZW4gdGhlIGFwcGxpY2F0aW9u
IHJlcXVlc3QgdXNlck1lZGlhLCB0aGlzIHNpZ25hbCB3aWxsIGJlIGVtaXRlZCB3aXRoIHRoZSBy
ZXF1ZXN0CisgICAgICogaW5mb3JtYXRpb24gYW5kIHRoZSBhdmFpbGFibGUgb3B0aW9ucyB0byBi
ZSBzZWxlY3RlZC4KKyAgICAgKgorICAgICAqIFRoZW4gdGhlIHVzZXIgaXMgZXhwZWN0ZWQgdG8g
Y2FsbCBlaXRoZXIgd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3Rfc3VjY2VlZCgpIG9yCisg
ICAgICogd2Via2l0X3dlYl91c2VyX21lZGlhX3JlcXVlc3RfZmFpbCgpIHRvIGFjY2VwdCBvciBy
ZWplY3QgdGhlIHJlcXVlc3QuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4wLjAKKyAgICAgKi8K
KyAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tDSE9PU0VfTUVESUFfREVWSUNFXSA9IGdfc2ln
bmFsX25ldygiY2hvb3NlLW1lZGlhLWRldmljZSIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9D
TEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAg
ICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNzLCBjaG9vc2VfbWVkaWFf
ZGV2aWNlKSwKKyAgICAgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9yX3RydWVfaGFuZGxlZCwg
MCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX09CSkVDVF9PQkpFQ1RfT0JK
RUNULAorICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDMsCisgICAgICAgICAgICBXRUJLSVRf
VFlQRV9XRUJfVVNFUl9NRURJQV9SRVFVRVNULAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VC
X1VTRVJfTUVESUFfTElTVCwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9VU0VSX01FRElB
X0xJU1QpOworCisgICAgLyoqCiAgICAgICogV2ViS2l0V2ViVmlldzo6ZW50ZXJpbmctZnVsbHNj
cmVlbjoKICAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUg
c2lnbmFsIGlzIGVtaXR0ZWQuCiAgICAgICogQGVsZW1lbnQ6IHRoZSAjV2ViS2l0RE9NSFRNTEVs
ZW1lbnQgd2hpY2ggaGFzIHJlcXVlc3RlZCBmdWxsIHNjcmVlbiBkaXNwbGF5LgpAQCAtMjkxNSw2
ICsyOTkxLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0
V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgd2ViVmlld0NsYXNzLT5zY3JpcHRfYWxl
cnQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9zY3JpcHRfYWxlcnQ7CiAgICAgd2ViVmlld0NsYXNz
LT5zY3JpcHRfY29uZmlybSA9IHdlYmtpdF93ZWJfdmlld19yZWFsX3NjcmlwdF9jb25maXJtOwog
ICAgIHdlYlZpZXdDbGFzcy0+c2NyaXB0X3Byb21wdCA9IHdlYmtpdF93ZWJfdmlld19yZWFsX3Nj
cmlwdF9wcm9tcHQ7CisgICAgd2ViVmlld0NsYXNzLT5jaG9vc2VfbWVkaWFfZGV2aWNlID0gd2Vi
a2l0X3dlYl92aWV3X3JlYWxfY2hvb3NlX21lZGlhX2RldmljZTsKICAgICB3ZWJWaWV3Q2xhc3Mt
PmNvbnNvbGVfbWVzc2FnZSA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2NvbnNvbGVfbWVzc2FnZTsK
ICAgICB3ZWJWaWV3Q2xhc3MtPnNlbGVjdF9hbGwgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9zZWxl
Y3RfYWxsOwogICAgIHdlYlZpZXdDbGFzcy0+Y3V0X2NsaXBib2FyZCA9IHdlYmtpdF93ZWJfdmll
d19yZWFsX2N1dF9jbGlwYm9hcmQ7CkBAIC0zNjMyLDcgKzM3MDksNyBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX3ZpZXdfaW5pdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIHByaXYtPnVzZXJNZWRpYUNsaWVudCA9IGFkb3B0
UHRyKG5ldyBVc2VyTWVkaWFDbGllbnRHdGspOworICAgIHByaXYtPnVzZXJNZWRpYUNsaWVudCA9
IGFkb3B0UHRyKG5ldyBVc2VyTWVkaWFDbGllbnRHdGsod2ViVmlldykpOwogICAgIFdlYkNvcmU6
OnByb3ZpZGVVc2VyTWVkaWFUbyhwcml2LT5jb3JlUGFnZSwgcHJpdi0+dXNlck1lZGlhQ2xpZW50
LmdldCgpKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vidmlldy5oIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcu
aAppbmRleCA5Yzg0MjYzYjRiYzA5NDdhNmYwZGY5NWRiMDE3YzUyMzRhMWUyZDllLi43ZDkzNTk0
Y2IzOTRmYjExNGI3Y2JkYzRhNjM3NDVhZTM0MDA4Yjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmgKQEAgLTQ0LDYgKzQ0LDkgQEAgR19CRUdJTl9ERUNMUwogI2Rl
ZmluZSBXRUJLSVRfV0VCX1ZJRVdfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VU
X0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfV0VCX1ZJRVcsIFdlYktpdFdlYlZpZXdDbGFzcykp
CiAKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSBXZWJLaXRXZWJWaWV3UHJp
dmF0ZTsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJVc2VyTWVkaWFSZXF1ZXN0IFdlYktpdFdl
YlVzZXJNZWRpYVJlcXVlc3Q7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVXNlck1lZGlhTGlz
dCBXZWJLaXRXZWJVc2VyTWVkaWFMaXN0OworCiAKIC8qKgogICogV2ViS2l0TmF2aWdhdGlvblJl
c3BvbnNlOgpAQCAtMTU1LDYgKzE1OCwxMiBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdjaGFyICAgICAgICAgICptZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAg
ICAqZGVmYXVsdF92YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2NoYXIqICAgICAgICAgICAgICAgKnZhbHVlKTsKKworICAg
IGdib29sZWFuICAgICAgICAgICAgICAgICAgICgqIGNob29zZV9tZWRpYV9kZXZpY2UpICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViVXNlck1lZGlh
UmVxdWVzdCAqcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViVXNlck1lZGlhTGlzdCAgICAqYXVkaW8sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdlYktpdFdlYlVzZXJNZWRpYUxpc3QgICAgKnZpZGVvKTsKKwogICAgIGdib29sZWFuICAgICAg
ICAgICAgICAgICAgICgqIGNvbnNvbGVfbWVzc2FnZSkgICAgICAgIChXZWJLaXRXZWJWaWV3ICAg
ICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICptZXNzYWdlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWlu
dCAgICAgICAgICAgICAgICAgbGluZV9udW1iZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXRtYXJzaGFsLmxpc3QgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXRtYXJzaGFs
Lmxpc3QKaW5kZXggYjc0Mjg5MDVjODk4M2NmYzc1ZWM1NDQ3NDEzM2NhMjhmNmQ3OTViNC4uOGRk
NGJkZWVhYzcyMmYyMjQ4NDQ0M2U2MzJjMTNhMWI1NDY0OTYzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0bWFyc2hhbC5saXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdG1hcnNoYWwubGlzdApAQCAtMiw2ICsyLDcgQEAgQk9PTEVBTjpFTlVNLElOVAogQk9PTEVB
TjpJTlQsSU5ULFNUUklORwogQk9PTEVBTjpPQkpFQ1QKIEJPT0xFQU46T0JKRUNULE9CSkVDVAor
Qk9PTEVBTjpPQkpFQ1QsT0JKRUNULCBPQkpFQ1QKIEJPT0xFQU46T0JKRUNULE9CSkVDVCxCT09M
RUFOCiBCT09MRUFOOk9CSkVDVCxPQkpFQ1QsRU5VTQogQk9PTEVBTjpPQkpFQ1QsT0JKRUNULEVO
VU0sQk9PTEVBTgpAQCAtMTgsNiArMTksNyBAQCBFTlVNOk9CSkVDVCxPQkpFQ1QKIE9CSkVDVDpP
QkpFQ1QKIE9CSkVDVDpTVFJJTkcsU1RSSU5HLFBPSU5URVIKIE9CSkVDVDpWT0lECitWT0lEOk9C
SkVDVAogVk9JRDpPQkpFQ1QsT0JKRUNUCiBWT0lEOk9CSkVDVCxPQkpFQ1QsSU5UCiBWT0lEOk9C
SkVDVCxPQkpFQ1QsT0JKRUNUCg==
</data>
<flag name="review"
          id="182721"
          type_id="1"
          status="-"
          setter="pnormand"
    />
          </attachment>
      

    </bug>

</bugzilla>