<?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>69048</bug_id>
          
          <creation_ts>2011-09-28 17:58:30 -0700</creation_ts>
          <short_desc>[Chromium] Separate compositor client thread from webkit&apos;s main thread</short_desc>
          <delta_ts>2011-10-11 22:34:57 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Antoine Labour">piman</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>475139</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-09-28 17:58:30 -0700</bug_when>
    <thetext>Separate compositor platform support from webkit&apos;s platform support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475140</commentid>
    <comment_count>1</comment_count>
      <attachid>109105</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-09-28 17:58:54 -0700</bug_when>
    <thetext>Created attachment 109105
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475145</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-28 18:02:22 -0700</bug_when>
    <thetext>Attachment 109105 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/platform/graphics/chromium/CompositorSupport.h:34:  The parameter name &quot;id&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/chromium/CompositorSupport.h:35:  The parameter name &quot;id&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/chromium/CompositorSupport.h:48:  The parameter name &quot;id&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/chromium/CompositorSupport.h:49:  The parameter name &quot;id&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Source/WebCore/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Total errors found: 6 in 23 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>475159</commentid>
    <comment_count>3</comment_count>
      <attachid>109109</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-09-28 18:17:51 -0700</bug_when>
    <thetext>Created attachment 109109
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475161</commentid>
    <comment_count>4</comment_count>
      <attachid>109111</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-09-28 18:20:06 -0700</bug_when>
    <thetext>Created attachment 109111
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475162</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-28 18:20:19 -0700</bug_when>
    <thetext>Attachment 109109 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/platform/graphics/chromium/CompositorSupport.h:34:  The parameter name &quot;id&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/chromium/CompositorSupport.h:35:  The parameter name &quot;id&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/chromium/CompositorSupport.h:48:  The parameter name &quot;id&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/chromium/CompositorSupport.h:49:  The parameter name &quot;id&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 in 23 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>475169</commentid>
    <comment_count>6</comment_count>
      <attachid>109111</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-28 18:40:09 -0700</bug_when>
    <thetext>Comment on attachment 109111
Patch

Attachment 109111 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9881870</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475174</commentid>
    <comment_count>7</comment_count>
      <attachid>109111</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-28 18:44:33 -0700</bug_when>
    <thetext>Comment on attachment 109111
Patch

CCProxy::setMainThread is debug-only, so you&apos;ll have to add #ifndef NDEBUGs in CompositorSupport::initialize() / CompositorSupport::shutdown().

Otherwise I think this looks pretty reasonable.  I do wonder about the combination of need v8 / need compositor - feels like we&apos;re growing a bit oddly there.  Also, don&apos;t we initialize WebKit with v8 on in the browser process in order to do PAC resolution?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475175</commentid>
    <comment_count>8</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-28 18:44:48 -0700</bug_when>
    <thetext>+cc Darin for WebKit API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475209</commentid>
    <comment_count>9</comment_count>
      <attachid>109116</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-09-28 20:37:05 -0700</bug_when>
    <thetext>Created attachment 109116
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475212</commentid>
    <comment_count>10</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-09-28 20:46:35 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 109111 [details])
&gt; CCProxy::setMainThread is debug-only, so you&apos;ll have to add #ifndef NDEBUGs in CompositorSupport::initialize() / CompositorSupport::shutdown().

Done. My bad.

&gt; Otherwise I think this looks pretty reasonable.  I do wonder about the combination of need v8 / need compositor - feels like we&apos;re growing a bit oddly there.  Also, don&apos;t we initialize WebKit with v8 on in the browser process in order to do PAC resolution?

Today, AFAICT we initialize it without V8, see http://codesearch.google.com/#OAMlx_jo-ck/src/content/browser/in_process_webkit/webkit_thread.cc&amp;exact_package=chromium&amp;q=WebKit::initialize&amp;type=cs
I think that&apos;s the raison d&apos;être of this call.
I&apos;m absolutely not attached to the &quot;initializeWithoutV8AndCompositor&quot; concept. I didn&apos;t want to &quot;sneak in&quot; the compositor initialization. My plan was to update the browser-side webkit initialization to use initializeWithoutV8AndCompositor and then remove the initializeWithoutV8 call altogether.
I do agree that cherry-picking what we initialize and encoding that in the name is a bit clunky. We could call it &quot;initializeForBrowser&quot; or something...
One option is to have a bitfield of webkit sub-modules that we want to initialize, though I suspect that&apos;s going to add a bunch of untested (and most likely not working) combinations.
Any good idea?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475231</commentid>
    <comment_count>11</comment_count>
      <attachid>109116</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-09-28 22:41:49 -0700</bug_when>
    <thetext>Comment on attachment 109116
Patch

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

&gt; Source/WebKit/chromium/public/WebKit.h:58
&gt; +WEBKIT_EXPORT void initializeWithoutV8AndCompositor(WebKitPlatformSupport*);

lol, when we just recently added initializeWithoutV8, there was a debate about
whether or not we should just add flags to initialize().  I argued that since
we only had the use case of running without V8, that we should just go for the
simpler form.

I&apos;m pretty sure that initializeWithoutV8AndCompositor is getting out of hand
though ;-)

This might be better:

  struct WebKitInitializationOptions {
      bool initializeV8;
      bool initializeCompositor;
      // ... default ctor sets them to true ...
  };
  WEBKIT_EXPORT void initializeWithOptions(WebKitPlatformSupport*, const WebKitInitializationOptions&amp;);

&gt; Source/WebKit/chromium/src/WebKit.cpp:61
&gt; +class WebKitCompositorSupport : public WebCore::CompositorSupportDelegate {

I&apos;m guessing there is some next patch that will make it possible for there to be
a CompositorSupportDelegate that doesn&apos;t just thunk to WebKitPlatformSupport?
Can you explain how that might look?

Also, it seems like the 4 functions on this interface could be defined as safe to
call from any thread in WebKit.  I&apos;m not quite sure why they need to be factored
out like this.  It may already be the case that they are safe to call from background
threads.  I think webworkers can query the current time, and the trace and histogram
systems are threadsafe.  Am I missing something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475263</commentid>
    <comment_count>12</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-09-28 23:52:03 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 109116 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=109116&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebKit.h:58
&gt; &gt; +WEBKIT_EXPORT void initializeWithoutV8AndCompositor(WebKitPlatformSupport*);
&gt; 
&gt; lol, when we just recently added initializeWithoutV8, there was a debate about
&gt; whether or not we should just add flags to initialize().  I argued that since
&gt; we only had the use case of running without V8, that we should just go for the
&gt; simpler form.
&gt; 
&gt; I&apos;m pretty sure that initializeWithoutV8AndCompositor is getting out of hand
&gt; though ;-)
&gt; 
&gt; This might be better:
&gt; 
&gt;   struct WebKitInitializationOptions {
&gt;       bool initializeV8;
&gt;       bool initializeCompositor;
&gt;       // ... default ctor sets them to true ...
&gt;   };
&gt;   WEBKIT_EXPORT void initializeWithOptions(WebKitPlatformSupport*, const WebKitInitializationOptions&amp;);

That works for me.
 
&gt; &gt; Source/WebKit/chromium/src/WebKit.cpp:61
&gt; &gt; +class WebKitCompositorSupport : public WebCore::CompositorSupportDelegate {
&gt; 
&gt; I&apos;m guessing there is some next patch that will make it possible for there to be
&gt; a CompositorSupportDelegate that doesn&apos;t just thunk to WebKitPlatformSupport?

Right, it&apos;s part of the compositor wenkit API, I&apos;ll upload it as soon as I figure out how to get webkit-patch to use the right base commit.

&gt; Can you explain how that might look?

Nothing fancy, a separate compositor initialization function that takes a WebCompositorPlatformSupport that looks just like CompositorSupportDelegate.

&gt; 
&gt; Also, it seems like the 4 functions on this interface could be defined as safe to
&gt; call from any thread in WebKit.  I&apos;m not quite sure why they need to be factored
&gt; out like this.  It may already be the case that they are safe to call from background
&gt; threads.  I think webworkers can query the current time, and the trace and histogram
&gt; systems are threadsafe.  Am I missing something?

There&apos;s a few reasons:
1- the functions themselves may be thread-safe (I&apos;d have to check), but the way to get to them doesn&apos;t look like it is (s_webKitPlatformSupport isn&apos;t protected by any lock).
2- when we want to extract the compositor out of WebKit, we&apos;ll need those anyway. This is part of this effort.
3- it makes it harder to add dependencies to the rest of webcore, including calling functions that wouldn&apos;t be thread safe.

Note: in the browser process, the compositor will be called from a non-webkit thread, if that makes things clearer...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475531</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-09-29 11:02:42 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (From update of attachment 109116 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=109116&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/chromium/public/WebKit.h:58
&gt; &gt; &gt; +WEBKIT_EXPORT void initializeWithoutV8AndCompositor(WebKitPlatformSupport*);
&gt; &gt; 
&gt; &gt; lol, when we just recently added initializeWithoutV8, there was a debate about
&gt; &gt; whether or not we should just add flags to initialize().  I argued that since
&gt; &gt; we only had the use case of running without V8, that we should just go for the
&gt; &gt; simpler form.
&gt; &gt; 
&gt; &gt; I&apos;m pretty sure that initializeWithoutV8AndCompositor is getting out of hand
&gt; &gt; though ;-)
&gt; &gt; 
&gt; &gt; This might be better:
&gt; &gt; 
&gt; &gt;   struct WebKitInitializationOptions {
&gt; &gt;       bool initializeV8;
&gt; &gt;       bool initializeCompositor;
&gt; &gt;       // ... default ctor sets them to true ...
&gt; &gt;   };
&gt; &gt;   WEBKIT_EXPORT void initializeWithOptions(WebKitPlatformSupport*, const WebKitInitializationOptions&amp;);
&gt; 
&gt; That works for me.
&gt; 
&gt; &gt; &gt; Source/WebKit/chromium/src/WebKit.cpp:61
&gt; &gt; &gt; +class WebKitCompositorSupport : public WebCore::CompositorSupportDelegate {
&gt; &gt; 
&gt; &gt; I&apos;m guessing there is some next patch that will make it possible for there to be
&gt; &gt; a CompositorSupportDelegate that doesn&apos;t just thunk to WebKitPlatformSupport?
&gt; 
&gt; Right, it&apos;s part of the compositor wenkit API, I&apos;ll upload it as soon as I figure out how to get webkit-patch to use the right base commit.
&gt; 
&gt; &gt; Can you explain how that might look?
&gt; 
&gt; Nothing fancy, a separate compositor initialization function that takes a WebCompositorPlatformSupport that looks just like CompositorSupportDelegate.
&gt; 
&gt; &gt; 
&gt; &gt; Also, it seems like the 4 functions on this interface could be defined as safe to
&gt; &gt; call from any thread in WebKit.  I&apos;m not quite sure why they need to be factored
&gt; &gt; out like this.  It may already be the case that they are safe to call from background
&gt; &gt; threads.  I think webworkers can query the current time, and the trace and histogram
&gt; &gt; systems are threadsafe.  Am I missing something?
&gt; 
&gt; There&apos;s a few reasons:
&gt; 1- the functions themselves may be thread-safe (I&apos;d have to check), but the way to get to them doesn&apos;t look like it is (s_webKitPlatformSupport isn&apos;t protected by any lock).

WebKit has to be initialized before s_webKitPlatformSupport is used, and we should ensure that any background threads are gone before WebKit::shutdown returns.


&gt; 2- when we want to extract the compositor out of WebKit, we&apos;ll need those anyway. This is part of this effort.

I see.  It seems like we could have WebCompositorPlatformSupport be a getter on WebKitPlatformSupport.  That would be the much more natural way to handle this kind of thing.  If you want to get that inside WebKit::initialize(), then you can certainly avoid any concerns about thread safety.


&gt; 3- it makes it harder to add dependencies to the rest of webcore, including calling functions that wouldn&apos;t be thread safe.

I&apos;m not sure I understand this issue.  Can you explain more?


&gt; Note: in the browser process, the compositor will be called from a non-webkit thread, if that makes things clearer...

I&apos;m concerned about calling more WebKit code in the browser process.  We are actually trying to call less of it.  Maybe the extraction of this code into a separate library should happen sooner?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475808</commentid>
    <comment_count>14</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-29 18:53:58 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; This might be better:
&gt; 
&gt;   struct WebKitInitializationOptions {
&gt;       bool initializeV8;
&gt;       bool initializeCompositor;
&gt;       // ... default ctor sets them to true ...
&gt;   };
&gt;   WEBKIT_EXPORT void initializeWithOptions(WebKitPlatformSupport*, const WebKitInitializationOptions&amp;);
&gt; 

The initialization for v8 and for the compositor isn&apos;t really initializing anything - it&apos;s more binding gloop together so that it&apos;ll work together.  We use V8 in the browser process but still call initializeWithoutV8() cos we don&apos;t bind V8 and WebKit together in the browser.

One issue with this sort of API is that it seems to imply that a caller can reasonably set any combination and expect it to work.  In practice we only have two configs that are important - the one the renderer uses (webkit should initialize, bind to v8 and bind to compositor) and the one the browser and utility process (webkit should initialize but not bind to either).

Maybe we need an initialize(), bindToV8(), bindToCompositor()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475814</commentid>
    <comment_count>15</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-29 18:58:55 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #11)
&gt; &gt; This might be better:
&gt; &gt; 
&gt; &gt;   struct WebKitInitializationOptions {
&gt; &gt;       bool initializeV8;
&gt; &gt;       bool initializeCompositor;
&gt; &gt;       // ... default ctor sets them to true ...
&gt; &gt;   };
&gt; &gt;   WEBKIT_EXPORT void initializeWithOptions(WebKitPlatformSupport*, const WebKitInitializationOptions&amp;);
&gt; &gt; 
&gt; 
&gt; The initialization for v8 and for the compositor isn&apos;t really initializing anything - it&apos;s more binding gloop together so that it&apos;ll work together.  We use V8 in the browser process but still call initializeWithoutV8() cos we don&apos;t bind V8 and WebKit together in the browser.
&gt;

I guess that&apos;s not entirely true - for V8 the call actually does initialize V8, but also does binding gloop.  For compositor it&apos;ll only do binding gloop, it won&apos;t actually initialize anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479701</commentid>
    <comment_count>16</comment_count>
      <attachid>110074</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-10-06 18:34:46 -0700</bug_when>
    <thetext>Created attachment 110074
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479703</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-06 18:37:09 -0700</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479709</commentid>
    <comment_count>18</comment_count>
      <attachid>110074</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-10-06 18:44:43 -0700</bug_when>
    <thetext>Comment on attachment 110074
Patch

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

I think a lot of our threading stuff will explode if the compositor&apos;s notion of the &quot;main thread&quot; and the &quot;compositor thread&quot; are actually the same thing - we do blocking calls from one to the other.

How are you ensuring that the compositor thread shuts down before the thread backing CompositorSupport?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCMainThread.cpp:45
&gt; +    CompositorSupport::callOnMainThread(performTask, task.leakPtr());

hm, so you aren&apos;t using WTF::callOnMainThread() directly here any more?

If so you should update the comment in CCMainThread.h, remove the #include &lt;wtf/MainThread.h&gt; from this .cpp, and possibly go update CCLayerTreeHostTests to use your thread infrastructure instead of using webkit_support::&apos;s main thread interaction functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479723</commentid>
    <comment_count>19</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-10-06 19:09:49 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 110074 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=110074&amp;action=review
&gt; 
&gt; I think a lot of our threading stuff will explode if the compositor&apos;s notion of the &quot;main thread&quot; and the &quot;compositor thread&quot; are actually the same thing - we do blocking calls from one to the other.

I know it&apos;s confusing... there&apos;s possibly up to 3 threads involved:
(1) the webkit main thread
(2) the compositor client thread
(3) the compositor thread.

This patch makes it possible to have (1) != (2). In the renderer, nothing changes, and (1) == (2), but in the browser process we instantiate webkit on a background thread, but we need to call the compositor from the UI thread.
This patch doesn&apos;t change anything wrt (3): either you use the single thread proxy, making (2) == (3), or you use the proxy, making (2) != (3) - regardless of the relationship between (1) and (2).

&gt; 
&gt; How are you ensuring that the compositor thread shuts down before the thread backing CompositorSupport?

For the renderer, nothing changes.
For the browser, by ensuring that we destroy WebLayerTreeViews, then we destroy the compositor WebThread (3) before we destroy the compositor client thread (2), which is the main thread anyway. We also ensure, client side, that the webkit main thread (1) is destroyed after that is done.
(note: threading is currently disabled when going through WebLayerTreeView, but a follow up patch will activate).

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCMainThread.cpp:45
&gt; &gt; +    CompositorSupport::callOnMainThread(performTask, task.leakPtr());
&gt; 
&gt; hm, so you aren&apos;t using WTF::callOnMainThread() directly here any more?

Correct. Is that a problem? From my quick reading of the core, WTF::callOnMainThread is essentially a wrapper around WebKitSupport::callOnMainThread. Since we end up calling that in the renderer, nothing should change. But if it&apos;s a problem, we can go through WTF::callOnMainThread.

&gt; 
&gt; If so you should update the comment in CCMainThread.h, remove the #include &lt;wtf/MainThread.h&gt; from this .cpp,

Will do.

&gt; and possibly go update CCLayerTreeHostTests to use your thread infrastructure instead of using webkit_support::&apos;s main thread interaction functions.

That shouldn&apos;t be necessary, since we&apos;ll go through the same path given the current test harness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480250</commentid>
    <comment_count>20</comment_count>
      <attachid>110204</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-10-07 13:06:17 -0700</bug_when>
    <thetext>Created attachment 110204
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480251</commentid>
    <comment_count>21</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-10-07 13:07:19 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 110074 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=110074&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCMainThread.cpp:45
&gt; &gt; +    CompositorSupport::callOnMainThread(performTask, task.leakPtr());
&gt; 
&gt; hm, so you aren&apos;t using WTF::callOnMainThread() directly here any more?
&gt; 
&gt; If so you should update the comment in CCMainThread.h, remove the #include &lt;wtf/MainThread.h&gt; from this .cpp,

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481339</commentid>
    <comment_count>22</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-10-10 17:28:12 -0700</bug_when>
    <thetext>Any more thoughts about this patch / the approach?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481353</commentid>
    <comment_count>23</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-10-10 17:44:32 -0700</bug_when>
    <thetext>Looks reasonable to me from the compositor side, but I think Darin should review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481732</commentid>
    <comment_count>24</comment_count>
      <attachid>110204</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-10-11 10:51:16 -0700</bug_when>
    <thetext>Comment on attachment 110204
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/CompositorSupport.cpp:34
&gt; +    return s_delegate-&gt;currentTime();

Instead of thunking through a Delegate interface, we normally just move the
implementation of these methods to WebKit/chromium/src, so that we can call
WebKit APIs directly.  it avoids the need to define the intermediate vtable.

&gt; Source/WebKit/chromium/public/WebKit.h:78
&gt; +WEBKIT_EXPORT void initializeCompositor(WebCallOnMainThreadFunc);

it seems like these should be methods on WebCompositor.  we already have WebCompositor::setThread.
it seems like you can do the WebCore::CCProxy::setMainThread(currentThread()) call there, if we
don&apos;t already.  it seems like WebCompositor could have a static method for setting the
WebCompositorSupport interface.  also, perhaps the CallOnMainThread support should be provided
via WebCompositorSupport instead?

maybe WebCompositor::setThread should be changed to WebCompositor::initialize?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481961</commentid>
    <comment_count>25</comment_count>
      <attachid>110204</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-10-11 15:28:22 -0700</bug_when>
    <thetext>Comment on attachment 110204
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/CompositorSupport.cpp:37
&gt; +void CompositorSupport::histogramCustomCounts(const char* name, int sample, int min, int max, int bucketCount)

If you want to just get rid of the histograms, it might be easier. We&apos;re not using them anymore, anyway.

&gt; Source/WebCore/platform/graphics/chromium/CompositorSupport.h:27
&gt; +

Any reason this is in graphics/chromium rather than graphics/chromium/cc?

&gt; Source/WebCore/platform/graphics/chromium/CompositorSupport.h:42
&gt; +class CompositorSupport {

Sorry to be name police, and I agree this is a problematic use case, but are we ditching CC prefixing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482074</commentid>
    <comment_count>26</comment_count>
      <attachid>110615</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-10-11 17:25:15 -0700</bug_when>
    <thetext>Created attachment 110615
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482076</commentid>
    <comment_count>27</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-10-11 17:26:33 -0700</bug_when>
    <thetext>Following in-person discussion with Darin, new patch here only deals with the threading issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482082</commentid>
    <comment_count>28</comment_count>
      <attachid>110615</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-10-11 17:35:34 -0700</bug_when>
    <thetext>Comment on attachment 110615
Patch

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

&gt; Source/WebKit/chromium/src/CCMainThreadImpl.cpp:79
&gt; +        WTF::callOnMainThread(performTask, task.leakPtr());

For my eduation, when is s_clientThread NULL? Is this when webkit_unit_tests are running? Or is this just a way to land this patch when platformSupport()-&gt;currentThread() isn&apos;t implemented?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482087</commentid>
    <comment_count>29</comment_count>
      <attachid>110615</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-10-11 17:37:21 -0700</bug_when>
    <thetext>Comment on attachment 110615
Patch

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

&gt;&gt; Source/WebKit/chromium/src/CCMainThreadImpl.cpp:79
&gt;&gt; +        WTF::callOnMainThread(performTask, task.leakPtr());
&gt; 
&gt; For my eduation, when is s_clientThread NULL? Is this when webkit_unit_tests are running? Or is this just a way to land this patch when platformSupport()-&gt;currentThread() isn&apos;t implemented?

Correct, it&apos;s for the 2-sided patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482088</commentid>
    <comment_count>30</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-10-11 17:37:45 -0700</bug_when>
    <thetext>FYI, http://codereview.chromium.org/8228025 for the chrome-side change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482089</commentid>
    <comment_count>31</comment_count>
      <attachid>110615</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-10-11 17:38:15 -0700</bug_when>
    <thetext>Comment on attachment 110615
Patch

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

&gt; Source/WebKit/chromium/src/CCMainThreadImpl.cpp:41
&gt; +bool s_initializedThread = false;
&gt; +WebKit::WebThread* s_clientThread = 0;

it looks like the bool is the same thing as s_clientThread being NULL.

&gt; Source/WebKit/chromium/src/CCMainThreadImpl.cpp:79
&gt; +    else
&gt; +        WTF::callOnMainThread(performTask, task.leakPtr());

why do you need this branch? s_clientThread should always be valid when we get here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482094</commentid>
    <comment_count>32</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-10-11 17:41:36 -0700</bug_when>
    <thetext>Actually, s_clientThread could be NULL for non-MessageLoop threads. I&apos;ll change to an assert once the chrome side lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482224</commentid>
    <comment_count>33</comment_count>
      <attachid>110615</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-11 22:34:51 -0700</bug_when>
    <thetext>Comment on attachment 110615
Patch

Clearing flags on attachment: 110615

Committed r97232: &lt;http://trac.webkit.org/changeset/97232&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482225</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-11 22:34:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109105</attachid>
            <date>2011-09-28 17:58:54 -0700</date>
            <delta_ts>2011-09-28 18:17:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69048-20110928175853.patch</filename>
            <type>text/plain</type>
            <size>58729</size>
            <attacher name="Antoine Labour">piman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYyNjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMDgwYzgwMDAyZTFkNTIz
MjcyYjM3NDZkZWVkNGRkZWZiYTVjZjZiLi5hZTgzMmEzOTZlN2Q2NGY1ZDhjYjNlY2E1YWMwNGNm
NDkxZjZhOWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTkgQEAKKzIwMTEtMDktMjggIEFudG9p
bmUgTGFib3VyICA8cGltYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNlcGFyYXRlIGNvbXBv
c2l0b3IgcGxhdGZvcm0gc3VwcG9ydCBmcm9tIHdlYmtpdCdzIHBsYXRmb3JtIHN1cHBvcnQuCisg
ICAgICAgIFRoaXMgaXMgc28gdGhhdCB0aGUgY29tcG9zaXRvciBjYW4gYmUgdXNlZCBpbiBhIHRo
cmVhZCBzZXBhcmF0ZSBmcm9tIHRoZQorICAgICAgICBtYWluIHdlYmtpdCB0aHJlYWQuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBl
eGlzdGluZyBjb21wb3NpdGluZyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9UcmFjZUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjppbnRlcm5hbDo6OjpTY29wZVRyYWNlcik6CisgICAgICAgIChXZWJDb3JlOjppbnRlcm5hbDo6
Ojp+U2NvcGVUcmFjZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nv
bXBvc2l0b3JTdXBwb3J0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdG9y
U3VwcG9ydDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdG9yU3VwcG9y
dDo6c2h1dGRvd24pOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRvclN1cHBvcnQ6OmN1cnJl
bnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0b3JTdXBwb3J0OjpoaXN0b2dyYW1D
dXN0b21Db3VudHMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRvclN1cHBvcnQ6OnRyYWNl
RXZlbnRCZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdG9yU3VwcG9ydDo6dHJhY2VF
dmVudEVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29tcG9zaXRv
clN1cHBvcnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdG9yU3VwcG9ydERl
bGVnYXRlOjp+Q29tcG9zaXRvclN1cHBvcnREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdG9yU3VwcG9ydDo6ZGVsZWdhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbXBvc2l0b3JUcmFjZUV2ZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuY3BwLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllclBhaW50ZXI6OnBhaW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVyc0ludGVybmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZmluaXNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cHJlc2VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmplY3RzKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Ym9yZGVyUHJvZ3JhbSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmhlYWRzVXBEaXNwbGF5
UHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRl
clN1cmZhY2VQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6cmVuZGVyU3VyZmFjZVByb2dyYW1BQSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OnJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtQUEpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1Td2l6
emxlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9n
cmFtU3dpenpsZUFBKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
Y2FudmFzTGF5ZXJQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJv
bWl1bTo6cGx1Z2luTGF5ZXJQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6dmlkZW9MYXllclJHQkFQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6dmlkZW9MYXllcllVVlByb2dyYW0pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWRXaXRoVGV4U3ViSW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBU
ZXhTdWJJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJU
ZXh0dXJlVXBkYXRlckNhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVV
cGRhdGVyQ2FudmFzOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmFt
QmluZGluZ0Jhc2U6OmNyZWF0ZVNoYWRlclByb2dyYW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMTGF5ZXJDaHJvbWl1bTo6cmF0ZUxpbWl0Q29udGV4dCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5OjpDQ0hlYWRzVXBEaXNwbGF5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzb3J0TGF5ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0Ojp+Q0NMYXllclRyZWVIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9z
dDo6Y29tbWl0VG9PbkNDVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9z
dDo6c2V0TmVlZHNDb21taXRBbmRSZWRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRy
ZWVIb3N0Ojp1cGRhdGVMYXllcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0SW1wbDo6fkNDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Byb3h5
Ojppc01haW5UaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcm94eTo6c2V0TWFpblRocmVh
ZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJv
eHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6Q0NTaW5nbGVU
aHJlYWRQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojp+Q0NT
aW5nbGVUaHJlYWRQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5
OjpzdG9wKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OkNDVGhyZWFkUHJv
eHkpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6fkNDVGhyZWFkUHJveHkpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXRBbmRSZWRyYXcpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2V0TmVlZHNSZWRyYXcpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVh
ZFByb3h5OjpmaW5pc2hBbGxSZW5kZXJpbmdPbkNDVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGhyZWFkUHJveHk6OmNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25DQ1RocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmNvbW1pdE9uQ0NUaHJlYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVEcmF3VGFza09uQ0NUaHJlYWQp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6ZHJhd0xheWVyc0FuZFByZXNlbnRP
bkNDVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmRyYXdMYXllcnNP
bkNDVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnVwZGF0ZVNjaGVk
dWxlclN0YXRlT25DQ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojpp
bml0aWFsaXplSW1wbE9uQ0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94
eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJPbkNDVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGhyZWFkUHJveHk6OmxheWVyVHJlZUhvc3RDbG9zZWRPbkNDVGhyZWFkKToKKwogMjAxMS0w
OS0yOCAgU2VyZ2V5IEdsYXp1bm92ICA8c2VyZy5nbGF6dW5vdkBnbWFpbC5jb20+CiAKICAgICAg
ICAgSmF2YVNjcmlwdCBnZW5lcmF0ZWQgZG9jdW1lbnRzIGRvbid0IGluaGVyaXQgdGhlIGNvb2tp
ZSBVUkwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAwNDIwNGVhNmFiYzZkNDZiM2YwZDUxMjY3Y2RkZDY5
YTAxYWE1NzE3Li45MmZmNjFhMzk4YzQxNmY3YjhkMDllYjRkZjc0YTM4YTc5YWFkZjkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC0zNDA2LDYgKzM0MDYsOSBAQAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29tcGxleFRleHRDb250cm9sbGVyTGludXguY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db21wbGV4VGV4dENv
bnRyb2xsZXJMaW51eC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db21wb3NpdG9yU3VwcG9ydC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbXBvc2l0b3JTdXBwb3J0LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbXBvc2l0b3JUcmFjZUV2ZW50LmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0u
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ3Jvc3NQcm9jZXNz
Rm9udExvYWRpbmcuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9UcmFjZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9UcmFj
ZUV2ZW50LmgKaW5kZXggZGI4Yzc0YjJhMWQwODliNzQyYWZiMDBkNDRmYWQ0YmI3NmMxNmM0Ny4u
OTU1MTUyM2NjMDM3NjA1Njg3YjQ3NWYwZWRjODE1Zjc4ZWY1MjA4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vVHJhY2VFdmVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1RyYWNlRXZlbnQuaApAQCAtMzYsMTQgKzM2LDE0IEBA
CiAjZGVmaW5lIFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIobmFtZV9wcmVmaXgp
IFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIyKG5hbWVfcHJlZml4LCBfX0xJTkVf
XykKIAogLy8gSXNzdWVzIFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVudEJlZ2luIGFuZCB0cmFj
ZUV2ZW50RW5kIGNhbGxzIGZvciB0aGUgZW5jbG9zaW5nIHNjb3BlCi0jZGVmaW5lIFRSQUNFX0VW
RU5UKG5hbWUsIGlkLCBleHRyYSkgV2ViQ29yZTo6aW50ZXJuYWw6OlNjb3BlVHJhY2VyIFRSQUNF
X0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIoX190cmFjZUV2ZW50U2NvcGUpKG5hbWUsIGlk
LCBleHRyYSk7CisjZGVmaW5lIFRSQUNFX0VWRU5UKG5hbWUsIGlkLCBleHRyYSkgV2ViQ29yZTo6
aW50ZXJuYWw6OlNjb3BlVHJhY2VyPFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydD4gVFJBQ0VfRVZF
TlRfTUFLRV9VTklRVUVfSURFTlRJRklFUihfX3RyYWNlRXZlbnRTY29wZSkobmFtZSwgaWQsIGV4
dHJhKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCiAv
LyBVc2VkIGJ5IFRSQUNFX0VWRU5UIG1hY3JvLiBEbyBub3QgdXNlIGRpcmVjdGx5LgotY2xhc3Mg
U2NvcGVUcmFjZXIgewordGVtcGxhdGU8dHlwZW5hbWUgU3VwcG9ydD4gY2xhc3MgU2NvcGVUcmFj
ZXIgewogcHVibGljOgogICAgIFNjb3BlVHJhY2VyKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqLCBj
b25zdCBjaGFyKiBleHRyYSk7CiAgICAgflNjb3BlVHJhY2VyKCk7CkBAIC01NCwxOCArNTQsMTgg
QEAgcHJpdmF0ZToKICAgICBPd25BcnJheVB0cjxjaGFyPiBtX2V4dHJhOwogfTsKIAotaW5saW5l
IFNjb3BlVHJhY2VyOjpTY29wZVRyYWNlcihjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiBpZCwgY29u
c3QgY2hhciogZXh0cmEpCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdXBwb3J0PiBpbmxpbmUgU2NvcGVU
cmFjZXI8U3VwcG9ydD46OlNjb3BlVHJhY2VyKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBj
b25zdCBjaGFyKiBleHRyYSkKICAgICA6IG1fbmFtZShuYW1lKQogICAgICwgbV9pZChpZCkKIHsK
LSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRCZWdpbihuYW1lLCBpZCwgZXh0cmEpOyBc
CisgICAgU3VwcG9ydDo6dHJhY2VFdmVudEJlZ2luKG5hbWUsIGlkLCBleHRyYSk7IFwKICAgICBp
ZiAoZXh0cmEpCiAgICAgICAgIG1fZXh0cmEgPSBhZG9wdEFycmF5UHRyKHN0cmR1cChleHRyYSkp
OwogfQogCi1pbmxpbmUgU2NvcGVUcmFjZXI6On5TY29wZVRyYWNlcigpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBTdXBwb3J0PiBpbmxpbmUgU2NvcGVUcmFjZXI8U3VwcG9ydD46On5TY29wZVRyYWNlcigp
CiB7Ci0gICAgUGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2ZW50RW5kKG1fbmFtZSwgbV9pZCwgbV9l
eHRyYS5nZXQoKSk7CisgICAgU3VwcG9ydDo6dHJhY2VFdmVudEVuZChtX25hbWUsIG1faWQsIG1f
ZXh0cmEuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBpbnRlcm5hbApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29tcG9zaXRvclN1cHBv
cnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29tcG9z
aXRvclN1cHBvcnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkMzUyM2M5NGZiOWM2ZTRjNDY4ZDUyZjZlZjc1
Zjg3NzFmNTMyYjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db21wb3NpdG9yU3VwcG9ydC5jcHAKQEAgLTAsMCArMSw2OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29tcG9zaXRvclN1cHBvcnQuaCIK
KworI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ29tcG9zaXRvclN1cHBvcnREZWxlZ2F0ZSogQ29tcG9z
aXRvclN1cHBvcnQ6OnNfZGVsZWdhdGU7CisKK3ZvaWQgQ29tcG9zaXRvclN1cHBvcnQ6OmluaXRp
YWxpemUoQ29tcG9zaXRvclN1cHBvcnREZWxlZ2F0ZSogZGVsZWdhdGUpCit7CisgICAgc19kZWxl
Z2F0ZSA9IGRlbGVnYXRlOworICAgIENDUHJveHk6OnNldE1haW5UaHJlYWQoY3VycmVudFRocmVh
ZCgpKTsKK30KKwordm9pZCBDb21wb3NpdG9yU3VwcG9ydDo6c2h1dGRvd24oKQoreworICAgIEND
UHJveHk6OnNldE1haW5UaHJlYWQoMCk7CisgICAgc19kZWxlZ2F0ZSA9IDA7Cit9CisKK2RvdWJs
ZSBDb21wb3NpdG9yU3VwcG9ydDo6Y3VycmVudFRpbWUoKQoreworICAgIHJldHVybiBzX2RlbGVn
YXRlLT5jdXJyZW50VGltZSgpOworfQorCit2b2lkIENvbXBvc2l0b3JTdXBwb3J0OjpoaXN0b2dy
YW1DdXN0b21Db3VudHMoY29uc3QgY2hhciogbmFtZSwgaW50IHNhbXBsZSwgaW50IG1pbiwgaW50
IG1heCwgaW50IGJ1Y2tldENvdW50KQoreworICAgIHNfZGVsZWdhdGUtPmhpc3RvZ3JhbUN1c3Rv
bUNvdW50cyhuYW1lLCBzYW1wbGUsIG1pbiwgbWF4LCBidWNrZXRDb3VudCk7Cit9CisKK3ZvaWQg
Q29tcG9zaXRvclN1cHBvcnQ6OnRyYWNlRXZlbnRCZWdpbihjb25zdCBjaGFyKiBuYW1lLCB2b2lk
KiBpZCwgY29uc3QgY2hhciogZXh0cmEpCit7CisgICAgc19kZWxlZ2F0ZS0+dHJhY2VFdmVudEJl
Z2luKG5hbWUsIGlkLCBleHRyYSk7Cit9CisKK3ZvaWQgQ29tcG9zaXRvclN1cHBvcnQ6OnRyYWNl
RXZlbnRFbmQoY29uc3QgY2hhciogbmFtZSwgdm9pZCogaWQsIGNvbnN0IGNoYXIqIGV4dHJhKQor
eworICAgIHNfZGVsZWdhdGUtPnRyYWNlRXZlbnRFbmQobmFtZSwgaWQsIGV4dHJhKTsKK30KKwor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbXBvc2l0b3JTdXBwb3J0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db21wb3NpdG9yU3VwcG9ydC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM4MWVhMDdlMWNlZjQ4ZjJlODY4ODA4MGZlNjE0MjBkM2QxZGEwNmMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db21w
b3NpdG9yU3VwcG9ydC5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2lmbmRlZiBDb21wb3NpdG9y
U3VwcG9ydF9oCisjZGVmaW5lIENvbXBvc2l0b3JTdXBwb3J0X2gKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBDb21wb3NpdG9yU3VwcG9ydERlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIGRvdWJsZSBjdXJyZW50VGltZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaGlzdG9n
cmFtQ3VzdG9tQ291bnRzKGNvbnN0IGNoYXIqIG5hbWUsIGludCBzYW1wbGUsIGludCBtaW4sIGlu
dCBtYXgsIGludCBidWNrZXRDb3VudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0cmFjZUV2ZW50
QmVnaW4oY29uc3QgY2hhciogbmFtZSwgdm9pZCogaWQsIGNvbnN0IGNoYXIqIGV4dHJhKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHRyYWNlRXZlbnRFbmQoY29uc3QgY2hhciogbmFtZSwgdm9pZCog
aWQsIGNvbnN0IGNoYXIqIGV4dHJhKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5D
b21wb3NpdG9yU3VwcG9ydERlbGVnYXRlKCkgeyB9Cit9OworCitjbGFzcyBDb21wb3NpdG9yU3Vw
cG9ydCB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZShDb21wb3NpdG9yU3Vw
cG9ydERlbGVnYXRlKik7CisgICAgc3RhdGljIHZvaWQgc2h1dGRvd24oKTsKKworICAgIHN0YXRp
YyBkb3VibGUgY3VycmVudFRpbWUoKTsKKyAgICBzdGF0aWMgdm9pZCBoaXN0b2dyYW1DdXN0b21D
b3VudHMoY29uc3QgY2hhciogbmFtZSwgaW50IHNhbXBsZSwgaW50IG1pbiwgaW50IG1heCwgaW50
IGJ1Y2tldENvdW50KTsKKyAgICBzdGF0aWMgdm9pZCB0cmFjZUV2ZW50QmVnaW4oY29uc3QgY2hh
ciogbmFtZSwgdm9pZCogaWQsIGNvbnN0IGNoYXIqIGV4dHJhKTsKKyAgICBzdGF0aWMgdm9pZCB0
cmFjZUV2ZW50RW5kKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBjb25zdCBjaGFyKiBleHRy
YSk7CisKKyAgICBzdGF0aWMgQ29tcG9zaXRvclN1cHBvcnREZWxlZ2F0ZSogZGVsZWdhdGUoKSB7
IHJldHVybiBzX2RlbGVnYXRlOyB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIENvbXBvc2l0b3JT
dXBwb3J0RGVsZWdhdGUqIHNfZGVsZWdhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29tcG9zaXRvclRyYWNlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NvbXBvc2l0b3JUcmFjZUV2ZW50LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjRk
YTU4NjEwODExZmYwOTM3YmM4ZmRkNGViNjEyYzU0OTY3MTI2YQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbXBvc2l0b3JUcmFj
ZUV2ZW50LmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaWZuZGVmIENvbXBvc2l0b3JUcmFjZUV2
ZW50X2gKKyNkZWZpbmUgQ29tcG9zaXRvclRyYWNlRXZlbnRfaAorCisjaW5jbHVkZSAiQ29tcG9z
aXRvclN1cHBvcnQuaCIKKyNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCisKKyNkZWZpbmUgQ09NUE9T
SVRPUl9UUkFDRV9FVkVOVChuYW1lLCBpZCwgZXh0cmEpIFdlYkNvcmU6OmludGVybmFsOjpTY29w
ZVRyYWNlcjxDb21wb3NpdG9yU3VwcG9ydD4gVFJBQ0VfRVZFTlRfTUFLRV9VTklRVUVfSURFTlRJ
RklFUihfX3RyYWNlRXZlbnRTY29wZSkobmFtZSwgaWQsIGV4dHJhKTsKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50
TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggOWRlNGRhOWQ2ZDZkNGI0MzA3NjZl
MTc5MjcyOGEzMDM5ZWM3MDkwMS4uZWM1YzAxMTJmODA5N2JmZTU3Yjc1YzRhNmZkMTI0ZDNhOTFh
NmFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApAQCAtMzQsMTAgKzM0
LDEwIEBACiAKICNpbmNsdWRlICJDb250ZW50TGF5ZXJDaHJvbWl1bS5oIgogCisjaW5jbHVkZSAi
Q29tcG9zaXRvclN1cHBvcnQuaCIKICNpbmNsdWRlICJMYXllclBhaW50ZXJDaHJvbWl1bS5oIgog
I2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkxheWVyVGV4dHVy
ZVVwZGF0ZXJDYW52YXMuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRl
ICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIApA
QCAtNTMsMTQgKzUzLDE0IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQogICAgIHsK
LSAgICAgICAgZG91YmxlIHBhaW50U3RhcnQgPSBjdXJyZW50VGltZSgpOworICAgICAgICBkb3Vi
bGUgcGFpbnRTdGFydCA9IENvbXBvc2l0b3JTdXBwb3J0OjpjdXJyZW50VGltZSgpOwogICAgICAg
ICBjb250ZXh0LmNsZWFyUmVjdChjb250ZW50UmVjdCk7CiAgICAgICAgIGNvbnRleHQuY2xpcChj
b250ZW50UmVjdCk7CiAgICAgICAgIG1fZGVsZWdhdGUtPnBhaW50Q29udGVudHMoY29udGV4dCwg
Y29udGVudFJlY3QpOwotICAgICAgICBkb3VibGUgcGFpbnRFbmQgPSBjdXJyZW50VGltZSgpOwor
ICAgICAgICBkb3VibGUgcGFpbnRFbmQgPSBDb21wb3NpdG9yU3VwcG9ydDo6Y3VycmVudFRpbWUo
KTsKICAgICAgICAgZG91YmxlIHBpeGVsc1BlclNlYyA9IChjb250ZW50UmVjdC53aWR0aCgpICog
Y29udGVudFJlY3QuaGVpZ2h0KCkpIC8gKHBhaW50RW5kIC0gcGFpbnRTdGFydCk7Ci0gICAgICAg
IFBsYXRmb3JtU3VwcG9ydDo6aGlzdG9ncmFtQ3VzdG9tQ291bnRzKCJSZW5kZXJlcjQuQWNjZWxD
b250ZW50UGFpbnREdXJhdGlvbk1TIiwgKHBhaW50RW5kIC0gcGFpbnRTdGFydCkgKiAxMDAwLCAw
LCAxMjAsIDMwKTsKLSAgICAgICAgUGxhdGZvcm1TdXBwb3J0OjpoaXN0b2dyYW1DdXN0b21Db3Vu
dHMoIlJlbmRlcmVyNC5BY2NlbENvbnRlbnRQYWludE1lZ2FwaXhQZXJTZWNvbmQiLCBwaXhlbHNQ
ZXJTZWMgLyAxMDAwMDAwLCAxMCwgMjEwLCAzMCk7CisgICAgICAgIENvbXBvc2l0b3JTdXBwb3J0
OjpoaXN0b2dyYW1DdXN0b21Db3VudHMoIlJlbmRlcmVyNC5BY2NlbENvbnRlbnRQYWludER1cmF0
aW9uTVMiLCAocGFpbnRFbmQgLSBwYWludFN0YXJ0KSAqIDEwMDAsIDAsIDEyMCwgMzApOworICAg
ICAgICBDb21wb3NpdG9yU3VwcG9ydDo6aGlzdG9ncmFtQ3VzdG9tQ291bnRzKCJSZW5kZXJlcjQu
QWNjZWxDb250ZW50UGFpbnRNZWdhcGl4UGVyU2Vjb25kIiwgcGl4ZWxzUGVyU2VjIC8gMTAwMDAw
MCwgMTAsIDIxMCwgMzApOwogICAgIH0KIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ29udGVudExh
eWVyUGFpbnRlcihDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggZmViZGVjNTU1N2U2OTllODI2YTk4NzhjYTc0YmU3NTAz
ZTUzZjg2Mi4uOGM5ZGNiNzY2YjRiMTQ5Y2Y5ZmYyNjIzNzEwNjU5NDQxMzZmNGIyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC0zNSw2ICszNSw4IEBACiAjaW5j
bHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAKICNpbmNsdWRlICJDYW52YXMyRExheWVy
Q2hyb21pdW0uaCIKKyNpbmNsdWRlICJDb21wb3NpdG9yU3VwcG9ydC5oIgorI2luY2x1ZGUgIkNv
bXBvc2l0b3JUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIK
ICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJHZW9tZXRyeUJpbmRpbmcuaCIKQEAg
LTUwLDcgKzUyLDYgQEAKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSAiVGV4dHVy
ZU1hbmFnZXIuaCIKICNpbmNsdWRlICJUcmVlU3luY2hyb25pemVyLmgiCi0jaW5jbHVkZSAiVHJh
Y2VFdmVudC5oIgogI2luY2x1ZGUgIlRyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oIgogI2luY2x1
ZGUgIldlYkdMTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCkBA
IC0yMzIsNyArMjMzLDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnMo
KQogICAgIC8vIEZJWE1FOiB1c2UgdGhlIGZyYW1lIGJlZ2luIHRpbWUgZnJvbSB0aGUgb3ZlcmFs
bCBjb21wb3NpdG9yIHNjaGVkdWxlci4KICAgICAvLyBUaGlzIHZhbHVlIGlzIGN1cnJlbnRseSBp
bmFjY2Vzc2libGUgYmVjYXVzZSBpdCBpcyB1cCBpbiBDaHJvbWl1bSdzCiAgICAgLy8gUmVuZGVy
V2lkZ2V0LgotICAgIG1faGVhZHNVcERpc3BsYXktPm9uRnJhbWVCZWdpbihjdXJyZW50VGltZSgp
KTsKKyAgICBtX2hlYWRzVXBEaXNwbGF5LT5vbkZyYW1lQmVnaW4oQ29tcG9zaXRvclN1cHBvcnQ6
OmN1cnJlbnRUaW1lKCkpOwogCiAgICAgaWYgKCFyb290TGF5ZXIoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMjU2LDcgKzI1Nyw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5
ZXJzSW50ZXJuYWwoKQogICAgIGlmICh2aWV3cG9ydFNpemUoKS5pc0VtcHR5KCkgfHwgIXJvb3RM
YXllcigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpkcmF3TGF5ZXJzIiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9F
VkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzIiwgdGhpcywgMCk7CiAgICAg
Q0NMYXllckltcGwqIHJvb3REcmF3TGF5ZXIgPSByb290TGF5ZXIoKTsKICAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKIApAQCAtMjczLDcgKzI3NCw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpkcmF3TGF5ZXJzSW50ZXJuYWwoKQogICAgIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UtPmNs
ZWFyTGF5ZXJMaXN0KCk7CiAKICAgICB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRl
cmVyQ2hyb21pdW06OmRyYXdMYXllcnNJbnRlcm5hbDo6Y2FsY0RyYXdFdGMiLCB0aGlzLCAwKTsK
KyAgICAgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpk
cmF3TGF5ZXJzSW50ZXJuYWw6OmNhbGNEcmF3RXRjIiwgdGhpcywgMCk7CiAgICAgICAgIENDTGF5
ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJv
b3REcmF3TGF5ZXIsIHJvb3REcmF3TGF5ZXIsIG1fem9vbUFuaW1hdG9yVHJhbnNmb3JtLCBtX3pv
b21BbmltYXRvclRyYW5zZm9ybSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgbV9kZWZhdWx0UmVu
ZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCksICZtX2xheWVyU29ydGVyLCBtX2NhcGFiaWxpdGllcy5t
YXhUZXh0dXJlU2l6ZSk7CiAgICAgfQogCkBAIC00MDgsMTMgKzQwOSwxMyBAQCB2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RleHR1cmVkUXVhZChjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgZHJhd01hdAogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZmluaXNoKCkKIHsK
LSAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpmaW5pc2giLCB0aGlzLCAw
KTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OmZp
bmlzaCIsIHRoaXMsIDApOwogICAgIG1fY29udGV4dC0+ZmluaXNoKCk7CiB9CiAKIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpwcmVzZW50KCkKIHsKLSAgICBUUkFDRV9FVkVOVCgiTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpwcmVzZW50IiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFD
RV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpwcmVzZW50IiwgdGhpcywgMCk7CiAgICAg
Ly8gV2UncmUgZG9uZSEgVGltZSB0byBzd2FwYnVmZmVycyEKIAogICAgIC8vIE5vdGUgdGhhdCBj
dXJyZW50bHkgdGhpcyBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzIHN3YXBCdWZmZXJzOyB3ZSBzaG91
bGQKQEAgLTU5OCw3ICs1OTksNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0RHJh
d1ZpZXdwb3J0UmVjdChjb25zdCBJbnRSZWN0JiBkcmF3UmVjdCwgYm9vbCBmbAogCiBib29sIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMoKQogewotICAgIFRS
QUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmplY3Rz
IiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjppbml0aWFsaXplU2hhcmVkT2JqZWN0cyIsIHRoaXMsIDApOwogICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOwogCiAgICAgLy8gQ3JlYXRlIGFuIEZCTyBmb3IgZG9pbmcgb2Zmc2NyZWVu
IHJlbmRlcmluZy4KQEAgLTYyMyw3ICs2MjQsNyBAQCBjb25zdCBMYXllckNocm9taXVtOjpCb3Jk
ZXJQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmJvcmRlclByb2dyYW0oKQogICAgIGlm
ICghbV9ib3JkZXJQcm9ncmFtKQogICAgICAgICBtX2JvcmRlclByb2dyYW0gPSBhZG9wdFB0cihu
ZXcgTGF5ZXJDaHJvbWl1bTo6Qm9yZGVyUHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkpKTsKICAgICBp
ZiAoIW1fYm9yZGVyUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBUUkFDRV9FVkVO
VCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpib3JkZXJQcm9ncmFtOjppbml0aWFsaXplIiwgdGhp
cywgMCk7CisgICAgICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJv
bWl1bTo6Ym9yZGVyUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwogICAgICAgICBtX2Jv
cmRlclByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKICAgICB9CiAgICAgcmV0
dXJuIG1fYm9yZGVyUHJvZ3JhbS5nZXQoKTsKQEAgLTYzNCw3ICs2MzUsNyBAQCBjb25zdCBDQ0hl
YWRzVXBEaXNwbGF5OjpQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmhlYWRzVXBEaXNw
bGF5UHJvZ3JhbSgpCiAgICAgaWYgKCFtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbSkKICAgICAgICAg
bV9oZWFkc1VwRGlzcGxheVByb2dyYW0gPSBhZG9wdFB0cihuZXcgQ0NIZWFkc1VwRGlzcGxheTo6
UHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkpKTsKICAgICBpZiAoIW1faGVhZHNVcERpc3BsYXlQcm9n
cmFtLT5pbml0aWFsaXplZCgpKSB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVy
Q2hyb21pdW06OmhlYWRzVXBEaXNwbGF5UHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwor
ICAgICAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06Omhl
YWRzVXBEaXNwbGF5UHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwogICAgICAgICBtX2hl
YWRzVXBEaXNwbGF5UHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOwogICAgIH0K
ICAgICByZXR1cm4gbV9oZWFkc1VwRGlzcGxheVByb2dyYW0uZ2V0KCk7CkBAIC02NDQsNyArNjQ1
LDcgQEAgY29uc3QgQ0NSZW5kZXJTdXJmYWNlOjpQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21p
dW06OnJlbmRlclN1cmZhY2VQcm9ncmFtKCkKIHsKICAgICBBU1NFUlQobV9yZW5kZXJTdXJmYWNl
UHJvZ3JhbSk7CiAgICAgaWYgKCFtX3JlbmRlclN1cmZhY2VQcm9ncmFtLT5pbml0aWFsaXplZCgp
KSB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclN1
cmZhY2VQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CisgICAgICAgIENPTVBPU0lUT1Jf
VFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZVByb2dyYW06
OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKICAgICAgICAgbV9yZW5kZXJTdXJmYWNlUHJvZ3JhbS0+
aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOwogICAgIH0KICAgICByZXR1cm4gbV9yZW5kZXJT
dXJmYWNlUHJvZ3JhbS5nZXQoKTsKQEAgLTY1NSw3ICs2NTYsNyBAQCBjb25zdCBDQ1JlbmRlclN1
cmZhY2U6OlByb2dyYW1BQSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJTdXJmYWNlUHJv
Z3JhbUFBKAogICAgIGlmICghbV9yZW5kZXJTdXJmYWNlUHJvZ3JhbUFBKQogICAgICAgICBtX3Jl
bmRlclN1cmZhY2VQcm9ncmFtQUEgPSBhZG9wdFB0cihuZXcgQ0NSZW5kZXJTdXJmYWNlOjpQcm9n
cmFtQUEobV9jb250ZXh0LmdldCgpKSk7CiAgICAgaWYgKCFtX3JlbmRlclN1cmZhY2VQcm9ncmFt
QUEtPmluaXRpYWxpemVkKCkpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6cmVuZGVyU3VyZmFjZVByb2dyYW1BQTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwor
ICAgICAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnJl
bmRlclN1cmZhY2VQcm9ncmFtQUE6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKICAgICAgICAgbV9y
ZW5kZXJTdXJmYWNlUHJvZ3JhbUFBLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAg
fQogICAgIHJldHVybiBtX3JlbmRlclN1cmZhY2VQcm9ncmFtQUEuZ2V0KCk7CkBAIC02NjYsNyAr
NjY3LDcgQEAgY29uc3QgQ0NSZW5kZXJTdXJmYWNlOjpNYXNrUHJvZ3JhbSogTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpyZW5kZXJTdXJmYWNlTWFza1Byb2cKICAgICBpZiAoIW1fcmVuZGVyU3VyZmFj
ZU1hc2tQcm9ncmFtKQogICAgICAgICBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbSA9IGFkb3B0
UHRyKG5ldyBDQ1JlbmRlclN1cmZhY2U6Ok1hc2tQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOwog
ICAgIGlmICghbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0tPmluaXRpYWxpemVkKCkpIHsKLSAg
ICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZU1h
c2tQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CisgICAgICAgIENPTVBPU0lUT1JfVFJB
Q0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFt
Ojppbml0aWFsaXplIiwgdGhpcywgMCk7CiAgICAgICAgIG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9n
cmFtLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBtX3Jl
bmRlclN1cmZhY2VNYXNrUHJvZ3JhbS5nZXQoKTsKQEAgLTY3Nyw3ICs2NzgsNyBAQCBjb25zdCBD
Q1JlbmRlclN1cmZhY2U6Ok1hc2tQcm9ncmFtQUEqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVu
ZGVyU3VyZmFjZU1hc2tQcgogICAgIGlmICghbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQSkK
ICAgICAgICAgbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQSA9IGFkb3B0UHRyKG5ldyBDQ1Jl
bmRlclN1cmZhY2U6Ok1hc2tQcm9ncmFtQUEobV9jb250ZXh0LmdldCgpKSk7CiAgICAgaWYgKCFt
X3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBLT5pbml0aWFsaXplZCgpKSB7Ci0gICAgICAgIFRS
QUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclN1cmZhY2VNYXNrUHJvZ3Jh
bUFBOjppbml0aWFsaXplIiwgdGhpcywgMCk7CisgICAgICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZF
TlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUE6Omlu
aXRpYWxpemUiLCB0aGlzLCAwKTsKICAgICAgICAgbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1B
QS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOwogICAgIH0KICAgICByZXR1cm4gbV9yZW5k
ZXJTdXJmYWNlTWFza1Byb2dyYW1BQS5nZXQoKTsKQEAgLTY4Nyw3ICs2ODgsNyBAQCBjb25zdCBD
Q1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJv
Z3JhbSgpCiB7CiAgICAgQVNTRVJUKG1fdGlsZXJQcm9ncmFtKTsKICAgICBpZiAoIW1fdGlsZXJQ
cm9ncmFtLT5pbml0aWFsaXplZCgpKSB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRl
cmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOworICAgICAg
ICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJv
Z3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwogICAgICAgICBtX3RpbGVyUHJvZ3JhbS0+aW5p
dGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOwogICAgIH0KICAgICByZXR1cm4gbV90aWxlclByb2dy
YW0uZ2V0KCk7CkBAIC02OTgsNyArNjk5LDcgQEAgY29uc3QgQ0NUaWxlZExheWVySW1wbDo6UHJv
Z3JhbUFBKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbUFBKCkKICAgICBpZiAo
IW1fdGlsZXJQcm9ncmFtQUEpCiAgICAgICAgIG1fdGlsZXJQcm9ncmFtQUEgPSBhZG9wdFB0cihu
ZXcgQ0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbUFBKG1fY29udGV4dC5nZXQoKSkpOwogICAgIGlm
ICghbV90aWxlclByb2dyYW1BQS0+aW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBUUkFDRV9FVkVO
VCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1BQTo6aW5pdGlhbGl6ZSIsIHRo
aXMsIDApOworICAgICAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hy
b21pdW06OnRpbGVyUHJvZ3JhbUFBOjppbml0aWFsaXplIiwgdGhpcywgMCk7CiAgICAgICAgIG1f
dGlsZXJQcm9ncmFtQUEtPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKICAgICB9CiAgICAg
cmV0dXJuIG1fdGlsZXJQcm9ncmFtQUEuZ2V0KCk7CkBAIC03MDksNyArNzEwLDcgQEAgY29uc3Qg
Q0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbVN3aXp6bGUqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
dGlsZXJQcm9ncmFtU3dpenoKICAgICBpZiAoIW1fdGlsZXJQcm9ncmFtU3dpenpsZSkKICAgICAg
ICAgbV90aWxlclByb2dyYW1Td2l6emxlID0gYWRvcHRQdHIobmV3IENDVGlsZWRMYXllckltcGw6
OlByb2dyYW1Td2l6emxlKG1fY29udGV4dC5nZXQoKSkpOwogICAgIGlmICghbV90aWxlclByb2dy
YW1Td2l6emxlLT5pbml0aWFsaXplZCgpKSB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJl
bmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbVN3aXp6bGU6OmluaXRpYWxpemUiLCB0aGlzLCAw
KTsKKyAgICAgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVt
Ojp0aWxlclByb2dyYW1Td2l6emxlOjppbml0aWFsaXplIiwgdGhpcywgMCk7CiAgICAgICAgIG1f
dGlsZXJQcm9ncmFtU3dpenpsZS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOwogICAgIH0K
ICAgICByZXR1cm4gbV90aWxlclByb2dyYW1Td2l6emxlLmdldCgpOwpAQCAtNzIwLDcgKzcyMSw3
IEBAIGNvbnN0IENDVGlsZWRMYXllckltcGw6OlByb2dyYW1Td2l6emxlQUEqIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtU3dpCiAgICAgaWYgKCFtX3RpbGVyUHJvZ3JhbVN3aXp6
bGVBQSkKICAgICAgICAgbV90aWxlclByb2dyYW1Td2l6emxlQUEgPSBhZG9wdFB0cihuZXcgQ0NU
aWxlZExheWVySW1wbDo6UHJvZ3JhbVN3aXp6bGVBQShtX2NvbnRleHQuZ2V0KCkpKTsKICAgICBp
ZiAoIW1fdGlsZXJQcm9ncmFtU3dpenpsZUFBLT5pbml0aWFsaXplZCgpKSB7Ci0gICAgICAgIFRS
QUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbVN3aXp6bGVBQTo6
aW5pdGlhbGl6ZSIsIHRoaXMsIDApOworICAgICAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJM
YXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbVN3aXp6bGVBQTo6aW5pdGlhbGl6ZSIs
IHRoaXMsIDApOwogICAgICAgICBtX3RpbGVyUHJvZ3JhbVN3aXp6bGVBQS0+aW5pdGlhbGl6ZSht
X2NvbnRleHQuZ2V0KCkpOwogICAgIH0KICAgICByZXR1cm4gbV90aWxlclByb2dyYW1Td2l6emxl
QUEuZ2V0KCk7CkBAIC03MzEsNyArNzMyLDcgQEAgY29uc3QgQ0NDYW52YXNMYXllckltcGw6OlBy
b2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2FudmFzTGF5ZXJQcm9ncmFtKCkKICAgICBp
ZiAoIW1fY2FudmFzTGF5ZXJQcm9ncmFtKQogICAgICAgICBtX2NhbnZhc0xheWVyUHJvZ3JhbSA9
IGFkb3B0UHRyKG5ldyBDQ0NhbnZhc0xheWVySW1wbDo6UHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkp
KTsKICAgICBpZiAoIW1fY2FudmFzTGF5ZXJQcm9ncmFtLT5pbml0aWFsaXplZCgpKSB7Ci0gICAg
ICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OmNhbnZhc0xheWVyUHJvZ3Jh
bTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOworICAgICAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5U
KCJMYXllclJlbmRlcmVyQ2hyb21pdW06OmNhbnZhc0xheWVyUHJvZ3JhbTo6aW5pdGlhbGl6ZSIs
IHRoaXMsIDApOwogICAgICAgICBtX2NhbnZhc0xheWVyUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2Nv
bnRleHQuZ2V0KCkpOwogICAgIH0KICAgICByZXR1cm4gbV9jYW52YXNMYXllclByb2dyYW0uZ2V0
KCk7CkBAIC03NDIsNyArNzQzLDcgQEAgY29uc3QgQ0NQbHVnaW5MYXllckltcGw6OlByb2dyYW0q
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cGx1Z2luTGF5ZXJQcm9ncmFtKCkKICAgICBpZiAoIW1f
cGx1Z2luTGF5ZXJQcm9ncmFtKQogICAgICAgICBtX3BsdWdpbkxheWVyUHJvZ3JhbSA9IGFkb3B0
UHRyKG5ldyBDQ1BsdWdpbkxheWVySW1wbDo6UHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkpKTsKICAg
ICBpZiAoIW1fcGx1Z2luTGF5ZXJQcm9ncmFtLT5pbml0aWFsaXplZCgpKSB7Ci0gICAgICAgIFRS
QUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnBsdWdpbkxheWVyUHJvZ3JhbTo6aW5p
dGlhbGl6ZSIsIHRoaXMsIDApOworICAgICAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJMYXll
clJlbmRlcmVyQ2hyb21pdW06OnBsdWdpbkxheWVyUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMs
IDApOwogICAgICAgICBtX3BsdWdpbkxheWVyUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQu
Z2V0KCkpOwogICAgIH0KICAgICByZXR1cm4gbV9wbHVnaW5MYXllclByb2dyYW0uZ2V0KCk7CkBA
IC03NTMsNyArNzU0LDcgQEAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6UkdCQVByb2dyYW0qIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6dmlkZW9MYXllclJHQkFQcm9ncmEKICAgICBpZiAoIW1fdmlk
ZW9MYXllclJHQkFQcm9ncmFtKQogICAgICAgICBtX3ZpZGVvTGF5ZXJSR0JBUHJvZ3JhbSA9IGFk
b3B0UHRyKG5ldyBDQ1ZpZGVvTGF5ZXJJbXBsOjpSR0JBUHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkp
KTsKICAgICBpZiAoIW1fdmlkZW9MYXllclJHQkFQcm9ncmFtLT5pbml0aWFsaXplZCgpKSB7Ci0g
ICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnZpZGVvTGF5ZXJSR0JB
UHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOworICAgICAgICBDT01QT1NJVE9SX1RSQUNF
X0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnZpZGVvTGF5ZXJSR0JBUHJvZ3JhbTo6aW5p
dGlhbGl6ZSIsIHRoaXMsIDApOwogICAgICAgICBtX3ZpZGVvTGF5ZXJSR0JBUHJvZ3JhbS0+aW5p
dGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOwogICAgIH0KICAgICByZXR1cm4gbV92aWRlb0xheWVy
UkdCQVByb2dyYW0uZ2V0KCk7CkBAIC03NjQsNyArNzY1LDcgQEAgY29uc3QgQ0NWaWRlb0xheWVy
SW1wbDo6WVVWUHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp2aWRlb0xheWVyWVVWUHJv
Z3JhbSgKICAgICBpZiAoIW1fdmlkZW9MYXllcllVVlByb2dyYW0pCiAgICAgICAgIG1fdmlkZW9M
YXllcllVVlByb2dyYW0gPSBhZG9wdFB0cihuZXcgQ0NWaWRlb0xheWVySW1wbDo6WVVWUHJvZ3Jh
bShtX2NvbnRleHQuZ2V0KCkpKTsKICAgICBpZiAoIW1fdmlkZW9MYXllcllVVlByb2dyYW0tPmlu
aXRpYWxpemVkKCkpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6dmlkZW9MYXllcllVVlByb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAg
Q09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjp2aWRlb0xheWVy
WVVWUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwogICAgICAgICBtX3ZpZGVvTGF5ZXJZ
VVZQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQogICAgIHJldHVy
biBtX3ZpZGVvTGF5ZXJZVVZQcm9ncmFtLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3Vi
SW1hZ2UuY3BwCmluZGV4IDhmZWEzOGE2OTBjOTVjZTdhMzk4NzZiNzBjM2JkMGU2OTdiMmViODYu
LjA1NjVmMzZkMmIwNzkzODQ5ZjU1MTM4MDY5YjQ1MTM4NWZjMjQ3NWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1Yklt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclRleHR1cmVTdWJJbWFnZS5jcHAKQEAgLTI5LDkgKzI5LDkgQEAKIAogI2luY2x1ZGUgIkxh
eWVyVGV4dHVyZVN1YkltYWdlLmgiCiAKKyNpbmNsdWRlICJDb21wb3NpdG9yVHJhY2VFdmVudC5o
IgogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0M0QuaCIKLSNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIExheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWRX
aXRoVGV4U3ViSW1hZ2UoY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkxheWVyVGV4dHVyZVN1YkltYWdl
Ojp1cGxvYWRXaXRoVGV4U3ViSW1hZ2UiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNF
X0VWRU5UKCJMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aFRleFN1YkltYWdlIiwgdGhp
cywgMCk7CiAgICAgaWYgKCFtX3N1YkltYWdlKQogICAgICAgICBtX3N1YkltYWdlID0gYWRvcHRB
cnJheVB0cihuZXcgdWludDhfdFttX3N1YkltYWdlU2l6ZS53aWR0aCgpICogbV9zdWJJbWFnZVNp
emUuaGVpZ2h0KCkgKiA0XSk7CiAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBMYXllclRleHR1cmVT
dWJJbWFnZTo6dXBsb2FkV2l0aE1hcFRleFN1YkltYWdlKGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBj
b25zdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVt
IGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiB7Ci0gICAgVFJBQ0VfRVZFTlQo
IkxheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWRXaXRoTWFwVGV4U3ViSW1hZ2UiLCB0aGlzLCAw
KTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJMYXllclRleHR1cmVTdWJJbWFnZTo6dXBs
b2FkV2l0aE1hcFRleFN1YkltYWdlIiwgdGhpcywgMCk7CiAgICAgLy8gT2Zmc2V0IGZyb20gaW1h
Z2UtcmVjdCB0byBzb3VyY2UtcmVjdC4KICAgICBJbnRQb2ludCBvZmZzZXQoc291cmNlUmVjdC54
KCkgLSBpbWFnZVJlY3QueCgpLCBzb3VyY2VSZWN0LnkoKSAtIGltYWdlUmVjdC55KCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clRleHR1cmVVcGRhdGVyQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuY3BwCmluZGV4IGZmMTljNzFj
NTBiNzU1MDcxNTFhM2M1MDI3YTgyYTNkMjc4NWI1ZTMuLjYzNjk0MDlkZjY1MmJjOWUyNWRjMGI0
NDBjMjhjZmRmYTM5Y2NhNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJD
YW52YXMuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKIAogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVw
ZGF0ZXJDYW52YXMuaCIKIAorI2luY2x1ZGUgIkNvbXBvc2l0b3JUcmFjZUV2ZW50LmgiCiAjaW5j
bHVkZSAiRXh0ZW5zaW9uczNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5j
bHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtQ29sb3IuaCIKLSNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAK
ICNpZiBVU0UoU0tJQSkKICNpbmNsdWRlICJHckNvbnRleHQuaCIKQEAgLTU1LDcgKzU1LDcgQEAg
dm9pZCBMYXllclRleHR1cmVVcGRhdGVyQ2FudmFzOjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgSW4KIHsKICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtY29udGVu
dFJlY3QueCgpLCAtY29udGVudFJlY3QueSgpKTsKICAgICB7Ci0gICAgICAgIFRSQUNFX0VWRU5U
KCJMYXllclRleHR1cmVVcGRhdGVyQ2FudmFzOjpwYWludCIsIHRoaXMsIDApOworICAgICAgICBD
T01QT1NJVE9SX1RSQUNFX0VWRU5UKCJMYXllclRleHR1cmVVcGRhdGVyQ2FudmFzOjpwYWludCIs
IHRoaXMsIDApOwogICAgICAgICBtX3BhaW50ZXItPnBhaW50KGNvbnRleHQsIGNvbnRlbnRSZWN0
KTsKICAgICB9CiAgICAgbV9jb250ZW50UmVjdCA9IGNvbnRlbnRSZWN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJp
bmRpbmcuY3BwCmluZGV4IDI2N2UwMTk1NzcyNjk3ZTVlNzQyNTA0MTY0ZWQ0ZWNkN2Q0ZjZkNDcu
LmUxYTI0ODYyOGY0ZjY4MWY4YzNlOTU3NWViMDhhOTM2YmM5MGIwNTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9ncmFt
QmluZGluZy5jcHAKQEAgLTI5LDExICsyOSwxMSBAQAogCiAjaW5jbHVkZSAiUHJvZ3JhbUJpbmRp
bmcuaCIKIAorI2luY2x1ZGUgIkNvbXBvc2l0b3JUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiR2Vv
bWV0cnlCaW5kaW5nLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIK
LSNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODgs
NyArODgsNyBAQCB1bnNpZ25lZCBQcm9ncmFtQmluZGluZ0Jhc2U6OmxvYWRTaGFkZXIoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHR5cAogCiB1bnNpZ25lZCBQcm9ncmFtQmlu
ZGluZ0Jhc2U6OmNyZWF0ZVNoYWRlclByb2dyYW0oR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IGNvbnN0IFN0cmluZyYgdmVydGV4U2hhZGVyU291cmNlLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50
U2hhZGVyU291cmNlKQogewotICAgIFRSQUNFX0VWRU5UKCJQcm9ncmFtQmluZGluZ0Jhc2U6OmNy
ZWF0ZVNoYWRlclByb2dyYW0iLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5U
KCJQcm9ncmFtQmluZGluZ0Jhc2U6OmNyZWF0ZVNoYWRlclByb2dyYW0iLCB0aGlzLCAwKTsKICAg
ICB1bnNpZ25lZCB2ZXJ0ZXhTaGFkZXIgPSBsb2FkU2hhZGVyKGNvbnRleHQsIEdyYXBoaWNzQ29u
dGV4dDNEOjpWRVJURVhfU0hBREVSLCB2ZXJ0ZXhTaGFkZXJTb3VyY2UpOwogICAgIGlmICghdmVy
dGV4U2hhZGVyKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSB2ZXJ0ZXgg
c2hhZGVyIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Qcm9ncmFtQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuaAppbmRleCBiYjZmYzhkZGQ5MGY4ZDU1ZjM1YTU4
ZDIxMzNmZGE0OTgyYmQyMGI3Li5hMjBmMGQ2ZmM1NDljNzRhOWNkZTFmOTQzNWM2YmZhNDliMzU1
Zjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Qcm9ncmFtQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2lu
Y2x1ZGUgIlRyYWNlRXZlbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2Vi
R0xMYXllckNocm9taXVtLmNwcAppbmRleCAzMmJhNmEzYmVlNWEwMjRmNTVjYzAyNzYyMjUyYjkz
YjU4MDRlMGU0Li5kYTIzN2I4YzcyNmUyZTYyMmVmZDk1MmZkM2RkMDI5NWUzNTQ1ODE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExh
eWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM0LDEwICszNCwxMCBAQAogCiAjaW5j
bHVkZSAiV2ViR0xMYXllckNocm9taXVtLmgiCiAKKyNpbmNsdWRlICJDb21wb3NpdG9yVHJhY2VF
dmVudC5oIgogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKLSNp
bmNsdWRlICJUcmFjZUV2ZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTU1LDcg
KzE1NSw3IEBAIEdyYXBoaWNzQ29udGV4dDNEKiBXZWJHTExheWVyQ2hyb21pdW06OmxheWVyUmVu
ZGVyZXJDb250ZXh0KCkKIAogdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnJhdGVMaW1pdENvbnRl
eHQoVGltZXI8V2ViR0xMYXllckNocm9taXVtPiopCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIldlYkdM
TGF5ZXJDaHJvbWl1bTo6cmF0ZUxpbWl0Q29udGV4dCIsIHRoaXMsIDApOworICAgIENPTVBPU0lU
T1JfVFJBQ0VfRVZFTlQoIldlYkdMTGF5ZXJDaHJvbWl1bTo6cmF0ZUxpbWl0Q29udGV4dCIsIHRo
aXMsIDApOwogCiAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNV
cERpc3BsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKaW5kZXggODY0Yzg4ZjA3OWFlMzE3ZGQwYTIyZGQ3MzQ0
ODcwY2JiYzIyNGE5Ni4uMTU0N2JiODJlYjQ4YTUyMWMyNTI2NzQwMjliOWEzMjIzM2ZlODM5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NIZWFkc1VwRGlzcGxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAjaW5jbHVkZSAiQ0NIZWFkc1VwRGlzcGxh
eS5oIgogCisjaW5jbHVkZSAiQ29tcG9zaXRvclN1cHBvcnQuaCIKICNpbmNsdWRlICJFeHRlbnNp
b25zM0RDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJGb250Q2FjaGUu
aCIKQEAgLTUzLDcgKzU0LDcgQEAgQ0NIZWFkc1VwRGlzcGxheTo6Q0NIZWFkc1VwRGlzcGxheShM
YXllclJlbmRlcmVyQ2hyb21pdW0qIG93bmVyKQogICAgICwgbV9sYXllclJlbmRlcmVyKG93bmVy
KQogICAgICwgbV91c2VNYXBTdWJGb3JVcGxvYWRzKG93bmVyLT5jb250ZXh0U3VwcG9ydHNNYXBT
dWIoKSkKIHsKLSAgICBtX2JlZ2luVGltZUhpc3RvcnlJblNlY1swXSA9IGN1cnJlbnRUaW1lKCk7
CisgICAgbV9iZWdpblRpbWVIaXN0b3J5SW5TZWNbMF0gPSBDb21wb3NpdG9yU3VwcG9ydDo6Y3Vy
cmVudFRpbWUoKTsKICAgICBtX2JlZ2luVGltZUhpc3RvcnlJblNlY1sxXSA9IG1fYmVnaW5UaW1l
SGlzdG9yeUluU2VjWzBdOwogICAgIGZvciAoaW50IGkgPSAyOyBpIDwga0JlZ2luRnJhbWVIaXN0
b3J5U2l6ZTsgaSsrKQogICAgICAgICBtX2JlZ2luVGltZUhpc3RvcnlJblNlY1tpXSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXggNjQxNjhjMmI0ZWQ3NWI0NmM5M2ZjYmEyOWE1NWJi
ODNiMTllMDJmMi4uNTE2Y2FiMmY1NTQwNDcwZDQ0NGE1MGUyYzRkYTcwMjUwMWRjYjM5OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiY2Mv
Q0NMYXllckltcGwuaCIKIAorI2luY2x1ZGUgIkNvbXBvc2l0b3JUcmFjZUV2ZW50LmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCiAj
aW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCkBAIC0xODMsNyArMTg0LDcgQEAgdm9p
ZCBDQ0xheWVySW1wbDo6ZHVtcExheWVyUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgaW50IGlu
ZGVudCkgY29uc3QKIAogdm9pZCBzb3J0TGF5ZXJzKFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+
ID46Oml0ZXJhdG9yIGZpcnN0LCBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+OjppdGVyYXRv
ciBlbmQsIENDTGF5ZXJTb3J0ZXIqIGxheWVyU29ydGVyKQogewotICAgIFRSQUNFX0VWRU5UKCJM
YXllclJlbmRlcmVyQ2hyb21pdW06OnNvcnRMYXllcnMiLCAwLCAwKTsKKyAgICBDT01QT1NJVE9S
X1RSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnNvcnRMYXllcnMiLCAwLCAwKTsK
ICAgICBsYXllclNvcnRlci0+c29ydChmaXJzdCwgZW5kKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5jcHAKaW5kZXggNmRkZDliZDYzOTUwYmM0N2MyNzAyZDQ4MGU1ODVhMDdlMmQy
M2Y3Yi4uNGRkYTI0ZDQ2ZGQwYzhmM2RhMTI4MDAwYzkxNTM5YzNhYmE4ZWQ2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0yNiwxMCArMjYsMTAgQEAKIAogI2luY2x1ZGUg
ImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogCisjaW5jbHVkZSAiQ29tcG9zaXRvclRyYWNlRXZlbnQu
aCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hy
b21pdW0uaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlICJU
cmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiVHJlZVN5bmNocm9uaXplci5oIgogI2luY2x1ZGUgImNj
L0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuaCIKQEAgLTg4LDcgKzg4LDcgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OmluaXRpYWxpemUo
KQogQ0NMYXllclRyZWVIb3N0Ojp+Q0NMYXllclRyZWVIb3N0KCkKIHsKICAgICBBU1NFUlQoQ0NQ
cm94eTo6aXNNYWluVGhyZWFkKCkpOwotICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6
On5DQ0xheWVyVHJlZUhvc3QiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5U
KCJDQ0xheWVyVHJlZUhvc3Q6On5DQ0xheWVyVHJlZUhvc3QiLCB0aGlzLCAwKTsKICAgICBtX3By
b3h5LT5zdG9wKCk7CiAgICAgbV9wcm94eS5jbGVhcigpOwogICAgIGNsZWFyUGVuZGluZ1VwZGF0
ZSgpOwpAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjphbmltYXRlQW5k
TGF5b3V0KGRvdWJsZSBmcmFtZUJlZ2luVGltZSkKIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpjb21t
aXRUb09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaG9zdEltcGwpCiB7CiAgICAgQVNT
RVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKLSAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRy
ZWVIb3N0Ojpjb21taXRUbyIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQo
IkNDTGF5ZXJUcmVlSG9zdDo6Y29tbWl0VG8iLCB0aGlzLCAwKTsKICAgICBob3N0SW1wbC0+c2V0
U291cmNlRnJhbWVOdW1iZXIoZnJhbWVOdW1iZXIoKSk7CiAKICAgICBjb250ZW50c1RleHR1cmVN
YW5hZ2VyKCktPnJlZHVjZU1lbW9yeVRvTGltaXQoVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1p
dEJ5dGVzKCkpOwpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRa
b29tQW5pbWF0b3JUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHpvb20pCiB2
b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0TmVlZHNDb21taXRBbmRSZWRyYXcoKQogewogI2lmIFVT
RShUSFJFQURFRF9DT01QT1NJVElORykKLSAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0
OjpzZXROZWVkc1JlZHJhdyIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQo
IkNDTGF5ZXJUcmVlSG9zdDo6c2V0TmVlZHNSZWRyYXciLCB0aGlzLCAwKTsKICAgICBtX3Byb3h5
LT5zZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpOwogI2Vsc2UKICAgICBtX2NsaWVudC0+c2NoZWR1
bGVDb21wb3NpdGUoKTsKQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6
dXBkYXRlTGF5ZXJzKCkKIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXll
ckNocm9taXVtKiByb290TGF5ZXIpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9z
dDo6dXBkYXRlTGF5ZXJzIiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgi
Q0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMiLCB0aGlzLCAwKTsKIAogICAgIGlmICghcm9v
dExheWVyLT5yZW5kZXJTdXJmYWNlKCkpCiAgICAgICAgIHJvb3RMYXllci0+Y3JlYXRlUmVuZGVy
U3VyZmFjZSgpOwpAQCAtMjkwLDcgKzI5MCw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRh
dGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogICAgIHJvb3RSZW5kZXJTdXJmYWNl
LT5jbGVhckxheWVyTGlzdCgpOwogCiAgICAgewotICAgICAgICBUUkFDRV9FVkVOVCgiQ0NMYXll
clRyZWVIb3N0Ojp1cGRhdGVMYXllcnM6OmNhbGNEcmF3RXRjIiwgdGhpcywgMCk7CisgICAgICAg
IENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzOjpj
YWxjRHJhd0V0YyIsIHRoaXMsIDApOwogICAgICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNh
bGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShyb290TGF5ZXIsIHJvb3RMYXllciwg
bV96b29tQW5pbWF0b3JUcmFuc2Zvcm0sIG1fem9vbUFuaW1hdG9yVHJhbnNmb3JtLCBtX3VwZGF0
ZUxpc3QsIHJvb3RSZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKSwgbGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllcygpLm1heFRleHR1cmVTaXplKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5jcHAKaW5kZXggODFiNWY3YWU1NGM3MGNkNDkxZmU0ZTMwYTlmMjUwNmFi
Mzc3YzNlNS4uNTdmNjgyZjE2ZWQ0ZWJiOWVkOTI1YmU5OGNmOTIzYjkzN2U1NzMxOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTI2LDEwICsyNiwxMCBAQAog
CiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgogCisjaW5jbHVkZSAiQ29tcG9z
aXRvclRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJFeHRlbnNpb25zM0QuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgot
I2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIK
ICNpbmNsdWRlICJjYy9DQ01haW5UaHJlYWQuaCIKICNpbmNsdWRlICJjYy9DQ01haW5UaHJlYWRU
YXNrLmgiCkBAIC01NCw3ICs1NCw3IEBAIENDTGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVl
SG9zdEltcGwoY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MpCiBDQ0xheWVyVHJlZUhvc3RJbXBs
Ojp+Q0NMYXllclRyZWVIb3N0SW1wbCgpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRo
cmVhZCgpKTsKLSAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0SW1wbDo6fkNDTGF5ZXJU
cmVlSG9zdEltcGwoKSIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkND
TGF5ZXJUcmVlSG9zdEltcGw6On5DQ0xheWVyVHJlZUhvc3RJbXBsKCkiLCB0aGlzLCAwKTsKICAg
ICBpZiAobV9sYXllclJlbmRlcmVyKQogICAgICAgICBtX2xheWVyUmVuZGVyZXItPmNsb3NlKCk7
CiB9CkBAIC03NCw3ICs3NCw3IEBAIEdyYXBoaWNzQ29udGV4dDNEKiBDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpjb250ZXh0KCkKIAogdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzKCkK
IHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycyIsIHRo
aXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdEltcGw6
OmRyYXdMYXllcnMiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQobV9sYXllclJlbmRlcmVyKTsKICAg
ICBpZiAobV9sYXllclJlbmRlcmVyLT5yb290TGF5ZXIoKSkKICAgICAgICAgbV9sYXllclJlbmRl
cmVyLT5kcmF3TGF5ZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuY3BwCmluZGV4IGI3ZWNjZWNkMTBhMDhiOGVi
YTg3NjVmMDg5OGZlYjJkMzExMWIyOGYuLjJmYzcxYWVlYmZhMmEzNzMwMjM0NTc4MTA4NjQyMTBm
YjRiOTA2Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUHJveHkuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAKICNpbmNsdWRl
ICJjYy9DQ1Byb3h5LmgiCiAKLSNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiY2Mv
Q0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiY2MvQ0NNYWluVGhyZWFkVGFzay5oIgogI2lu
Y2x1ZGUgImNjL0NDVGhyZWFkVGFzay5oIgpAQCAtNDEsMTEgKzQwLDEyIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIG5hbWVzcGFjZSB7CiBib29sIGZha2VJbXBsVGhyZWFkID0gZmFsc2U7CiBzdGF0
aWMgV1RGOjpUaHJlYWRJZGVudGlmaWVyIGltcGxUaHJlYWRJRDsKK3N0YXRpYyBXVEY6OlRocmVh
ZElkZW50aWZpZXIgbWFpblRocmVhZElEOwogfQogCiBib29sIENDUHJveHk6OmlzTWFpblRocmVh
ZCgpCiB7Ci0gICAgcmV0dXJuIDo6aXNNYWluVGhyZWFkKCkgJiYgIWZha2VJbXBsVGhyZWFkOwor
ICAgIHJldHVybiAhZmFrZUltcGxUaHJlYWQgJiYgY3VycmVudFRocmVhZCgpID09IG1haW5UaHJl
YWRJRDsKIH0KIAogYm9vbCBDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKQpAQCAtNjMsNiArNjMsMTEg
QEAgdm9pZCBDQ1Byb3h5OjpzZXRJbXBsVGhyZWFkKFdURjo6VGhyZWFkSWRlbnRpZmllciBpZCkK
ICAgICBpbXBsVGhyZWFkSUQgPSBpZDsKIH0KIAordm9pZCBDQ1Byb3h5OjpzZXRNYWluVGhyZWFk
KFdURjo6VGhyZWFkSWRlbnRpZmllciBpZCkKK3sKKyAgICBtYWluVGhyZWFkSUQgPSBpZDsKK30K
KwogI2VuZGlmIC8vICFOREVCVUcKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCmluZGV4IGIyMjJiOTk4OGQ4MTdm
NDk1YzJhM2EwZjA1YzRjYTFjZWRhZGQxNjMuLjgxYTVkMjQ4NGJkZGVlNzVlNzlkNjNhMTFjNDgx
NTQwYWI1MzIxMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKQEAgLTg0LDYgKzg0LDcgQEAgcHVibGljOgogI2lm
bmRlZiBOREVCVUcKICAgICBzdGF0aWMgdm9pZCBzZXRJbXBsVGhyZWFkKGJvb2wpOwogICAgIHN0
YXRpYyB2b2lkIHNldEltcGxUaHJlYWQoV1RGOjpUaHJlYWRJZGVudGlmaWVyKTsKKyAgICBzdGF0
aWMgdm9pZCBzZXRNYWluVGhyZWFkKFdURjo6VGhyZWFkSWRlbnRpZmllcik7CiAjZW5kaWYKIAog
cHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCA5
N2JjZWE1MmEyMjRlMWVhZWVmYzUwNGFlNTA5N2JiZjg1ZGFkNTE5Li5iZjdhYjk2NzFiOWU2Njlj
MjdlZjI0ODMxOWI1OWQwNzA5MjllMTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmNwcApAQCAtMjYsOSArMjYsOSBAQAogCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5oIgogCisjaW5jbHVkZSAiQ29tcG9zaXRvclRyYWNlRXZlbnQuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5o
IgotI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3Qu
aCIKICNpbmNsdWRlICJjYy9DQ01haW5UaHJlYWRUYXNrLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJl
bnRUaW1lLmg+CkBAIC02NSw4ICs2NSw4IEBAIENDU2luZ2xlVGhyZWFkUHJveHk6OkNDU2luZ2xl
VGhyZWFkUHJveHkoQ0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KQogICAgICwgbV9ncmFw
aGljc0NvbnRleHRMb3N0KGZhbHNlKQogICAgICwgbV90aW1lc1JlY3JlYXRlU2hvdWxkRmFpbCgw
KQogewotICAgIFRSQUNFX0VWRU5UKCJDQ1NpbmdsZVRocmVhZFByb3h5OjpDQ1NpbmdsZVRocmVh
ZFByb3h5IiwgdGhpcywgMCk7Ci0gICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsK
KyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJDQ1NpbmdsZVRocmVhZFByb3h5OjpDQ1Npbmds
ZVRocmVhZFByb3h5IiwgdGhpcywgMCk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIH0K
IAogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdGFydCgpCkBAIC03Nyw4ICs3Nyw4IEBAIHZv
aWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c3RhcnQoKQogCiBDQ1NpbmdsZVRocmVhZFByb3h5Ojp+
Q0NTaW5nbGVUaHJlYWRQcm94eSgpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDU2luZ2xlVGhyZWFk
UHJveHk6On5DQ1NpbmdsZVRocmVhZFByb3h5IiwgdGhpcywgMCk7Ci0gICAgQVNTRVJUKENDUHJv
eHk6OmlzTWFpblRocmVhZCgpKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJDQ1Npbmds
ZVRocmVhZFByb3h5Ojp+Q0NTaW5nbGVUaHJlYWRQcm94eSIsIHRoaXMsIDApOworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX2xheWVyVHJlZUhvc3RJbXBsICYmICFt
X2xheWVyVHJlZUhvc3QpOyAvLyBtYWtlIHN1cmUgc3RvcCgpIGdvdCBjYWxsZWQuCiB9CiAKQEAg
LTE4Niw4ICsxODYsOCBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3
KCkKIAogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdG9wKCkKIHsKLSAgICBUUkFDRV9FVkVO
VCgiQ0NTaW5nbGVUaHJlYWRQcm94eTo6c3RvcCIsIHRoaXMsIDApOwotICAgIEFTU0VSVChDQ1By
b3h5Ojppc01haW5UaHJlYWQoKSk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NTaW5n
bGVUaHJlYWRQcm94eTo6c3RvcCIsIHRoaXMsIDApOworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgewogICAgICAgICBTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7CiAgICAgICAgIG1f
bGF5ZXJUcmVlSG9zdC0+ZGVsZXRlQ29udGVudHNUZXh0dXJlc09uQ0NUaHJlYWQobV9sYXllclRy
ZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcAppbmRleCBlNDA5ODIzYmE3NTRmZGUxZDhiOTk0MGU5MDQyZDU5NDY5NTAwYjEy
Li42ODg3MjhhN2E3M2M1NGEyYjIwMDkzMjJiYzY4NjhhOTdhMWIwNmRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmNwcApAQCAtMjYsOCArMjYsOCBAQAogCiAjaW5jbHVkZSAiY2MvQ0NUaHJl
YWRQcm94eS5oIgogCisjaW5jbHVkZSAiQ29tcG9zaXRvclRyYWNlRXZlbnQuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQzRC5oIgotI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRl
ICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJjYy9DQ01haW5UaHJlYWRUYXNrLmgi
CiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRUYXNrLmgiCkBAIC01OCw3ICs1OCw3IEBAIENDVGhyZWFk
UHJveHk6OkNDVGhyZWFkUHJveHkoQ0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KQogICAg
ICwgbV9kcmF3VGFza1Bvc3RlZE9uQ0NUaHJlYWQoZmFsc2UpCiAgICAgLCBtX3JlZHJhd1JlcXVl
c3RlZE9uQ0NUaHJlYWQoZmFsc2UpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6
OkNDVGhyZWFkUHJveHkiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJD
Q1RocmVhZFByb3h5OjpDQ1RocmVhZFByb3h5IiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICBudW1Qcm94aWVzKys7CiAgICAgaWYgKCFjY1RocmVhZCkgewpAQCAt
NzEsNyArNzEsNyBAQCBDQ1RocmVhZFByb3h5OjpDQ1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9z
dCogbGF5ZXJUcmVlSG9zdCkKIAogQ0NUaHJlYWRQcm94eTo6fkNDVGhyZWFkUHJveHkoKQogewot
ICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojp+Q0NUaHJlYWRQcm94eSIsIHRoaXMsIDAp
OworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6On5DQ1RocmVhZFBy
b3h5IiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQo
IW1fc3RhcnRlZCk7CiAKQEAgLTE4OSw3ICsxODksNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNl
dE5lZWRzQ29tbWl0KCkKICAgICBpZiAobV9jb21taXRSZXF1ZXN0ZWQpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdCIsIHRo
aXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNldE5l
ZWRzQ29tbWl0IiwgdGhpcywgMCk7CiAgICAgbV9jb21taXRSZXF1ZXN0ZWQgPSB0cnVlOwogICAg
IGNjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJv
eHk6OnVwZGF0ZVNjaGVkdWxlclN0YXRlT25DQ1RocmVhZCwgbV9jb21taXRSZXF1ZXN0ZWQsIHRy
dWUpKTsKIH0KQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNldE5lZWRz
Q29tbWl0QW5kUmVkcmF3KCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fY29tbWl0UmVxdWVzdGVk
ID0gdHJ1ZTsKIAotICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1p
dEFuZFJlZHJhdyIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDVGhy
ZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0QW5kUmVkcmF3IiwgdGhpcywgMCk7CiAgICAgY2NUaHJl
YWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6dXBk
YXRlU2NoZWR1bGVyU3RhdGVPbkNDVGhyZWFkLCBtX2NvbW1pdFJlcXVlc3RlZCwgdHJ1ZSkpOwog
fQogCkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzZXROZWVkc1JlZHJh
dygpCiAgICAgLy8gdGhyZWFkLiBUaGlzIHNob3VsZCBub3QgYmUgbXVjaCBvZiBhIHByb2JsZW0g
YmVjYXVzZSBjYWxscyB0bwogICAgIC8vIHNldE5lZWRzUmVkcmF3IG1lc3NhZ2VzIGFyZSB1bmNv
bW1vbiAob25seSB0cmlnZ2VyZWQgYnkgV01fUEFJTlQvZXRjKSwKICAgICAvLyBjb21wYXJlZCB0
byBzZXROZWVkc0NvbW1pdEFuZFJlZHJhdyBtZXNzYWdlcy4KLSAgICBUUkFDRV9FVkVOVCgiQ0NU
aHJlYWRQcm94eTo6c2V0TmVlZHNSZWRyYXciLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RS
QUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzZXROZWVkc1JlZHJhdyIsIHRoaXMsIDApOwogICAg
IGNjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJv
eHk6OnVwZGF0ZVNjaGVkdWxlclN0YXRlT25DQ1RocmVhZCwgZmFsc2UsIHRydWUpKTsKIH0KIApA
QCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c3RhcnQoKQogCiB2b2lkIEND
VGhyZWFkUHJveHk6OnN0b3AoKQogewotICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojpz
dG9wIiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94
eTo6c3RvcCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNT
RVJUKG1fc3RhcnRlZCk7CiAKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6
OnN0b3AoKQogCiB2b2lkIENDVGhyZWFkUHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uQ0NUaHJl
YWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkND
VGhyZWFkUHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKKyAg
ICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpmaW5pc2hBbGxSZW5kZXJp
bmdPbkNDVGhyZWFkIiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAg
ICBBU1NFUlQoIW1fYmVnaW5GcmFtZUFuZENvbW1pdFBlbmRpbmdPbkNDVGhyZWFkKTsKICAgICBp
ZiAobV9yZWRyYXdSZXF1ZXN0ZWRPbkNDVGhyZWFkKSB7CkBAIC0yNzAsNyArMjcwLDcgQEAgdm9p
ZCBDQ1RocmVhZFByb3h5OjpvYnRhaW5CZWdpbkZyYW1lQW5kQ29tbWl0VGFza0Zyb21DQ1RocmVh
ZChDQ0NvbXBsZXRpb25FdmVudCoKIAogUGFzc093blB0cjxDQ01haW5UaHJlYWQ6OlRhc2s+IEND
VGhyZWFkUHJveHk6OmNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25DQ1RocmVhZCgpCiB7
Ci0gICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmNyZWF0ZUJlZ2luRnJhbWVBbmRDb21t
aXRUYXNrT25DQ1RocmVhZCIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQo
IkNDVGhyZWFkUHJveHk6OmNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25DQ1RocmVhZCIs
IHRoaXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgZG91YmxlIGZyYW1l
QmVnaW5UaW1lID0gY3VycmVudFRpbWUoKTsKICAgICBtX2JlZ2luRnJhbWVBbmRDb21taXRQZW5k
aW5nT25DQ1RocmVhZCA9IHRydWU7CkBAIC0yOTEsNyArMjkxLDcgQEAgUGFzc093blB0cjxDQ01h
aW5UaHJlYWQ6OlRhc2s+IENDVGhyZWFkUHJveHk6OmNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRU
YXNrT25DQ1QKIAogdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBz
ZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW1lKQogewotICAgIFRSQUNFX0VWRU5U
KCJDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0IiwgdGhpcywgMCk7CisgICAgQ09N
UE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdCIs
IHRoaXMsIDApOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKCFtX2xheWVy
VHJlZUhvc3QpCiAgICAgICAgIHJldHVybjsKQEAgLTI5OSw3ICsyOTksNyBAQCB2b2lkIENDVGhy
ZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUg
ZnJhbWVCZWdpblRpbQogICAgIC8vIERyb3AgYmVnaW5GcmFtZUFuZENvbW1pdCBjYWxscyB0aGF0
IG9jY3VyIG91dCBvZiBzZXF1ZW5jZS4gU2VlIGNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNr
T25DQ1RocmVhZCBmb3IKICAgICAvLyBhbiBleHBsYW5hdGlvbiBvZiBob3cgb3V0LW9mLXNlcXVl
bmNlIGJlZ2luRnJhbWVBbmRDb21taXQgdGFza3MgY2FuIG9jY3VyLgogICAgIGlmIChzZXF1ZW5j
ZU51bWJlciA8IG1fbGFzdEV4ZWN1dGVkQmVnaW5GcmFtZUFuZENvbW1pdFNlcXVlbmNlTnVtYmVy
KSB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJFYXJseU91dF9TdGFsZUJlZ2luRnJhbWVBbmRDb21t
aXQiLCB0aGlzLCAwKTsKKyAgICAgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiRWFybHlPdXRf
U3RhbGVCZWdpbkZyYW1lQW5kQ29tbWl0IiwgdGhpcywgMCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgbV9sYXN0RXhlY3V0ZWRCZWdpbkZyYW1lQW5kQ29tbWl0U2VxdWVuY2VOdW1iZXIg
PSBzZXF1ZW5jZU51bWJlcjsKQEAgLTMwOCw3ICszMDgsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6
OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdp
blRpbQogCiAgICAgLy8gRklYTUU6IHJlY3JlYXRlIHRoZSBjb250ZXh0IGlmIGl0IHdhcyByZXF1
ZXN0ZWQgYnkgdGhlIGltcGwgdGhyZWFkCiAgICAgewotICAgICAgICBUUkFDRV9FVkVOVCgiQ0NM
YXllclRyZWVIb3N0OjphbmltYXRlQW5kTGF5b3V0IiwgdGhpcywgMCk7CisgICAgICAgIENPTVBP
U0lUT1JfVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6YW5pbWF0ZUFuZExheW91dCIsIHRo
aXMsIDApOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmFuaW1hdGVBbmRMYXlvdXQoZnJhbWVC
ZWdpblRpbWUpOwogICAgIH0KIApAQCAtMzIzLDcgKzMyMyw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94
eTo6YmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJl
Z2luVGltCiAKICAgICB7CiAgICAgICAgIC8vIEJsb2NraW5nIGNhbGwgdG8gQ0NUaHJlYWRQcm94
eTo6Y29tbWl0T25DQ1RocmVhZAotICAgICAgICBUUkFDRV9FVkVOVCgiY29tbWl0IiwgdGhpcywg
MCk7CisgICAgICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoImNvbW1pdCIsIHRoaXMsIDApOwog
ICAgICAgICBDQ0NvbXBsZXRpb25FdmVudCBjb21wbGV0aW9uOwogICAgICAgICBjY1RocmVhZC0+
cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5Ojpjb21taXRP
bkNDVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0aW9uKSkpOwogICAgICAg
ICBjb21wbGV0aW9uLndhaXQoKTsKQEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIENDVGhyZWFkUHJv
eHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVC
ZWdpblRpbQogCiB2b2lkIENDVGhyZWFkUHJveHk6OmNvbW1pdE9uQ0NUaHJlYWQoQ0NDb21wbGV0
aW9uRXZlbnQqIGNvbXBsZXRpb24pCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6
OmJlZ2luRnJhbWVBbmRDb21taXRPbkNDVGhyZWFkIiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRP
Ul9UUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdE9uQ0NUaHJl
YWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwogICAgIEFTU0VSVCht
X2JlZ2luRnJhbWVBbmRDb21taXRQZW5kaW5nT25DQ1RocmVhZCk7CiAgICAgbV9iZWdpbkZyYW1l
QW5kQ29tbWl0UGVuZGluZ09uQ0NUaHJlYWQgPSBmYWxzZTsKQEAgLTM1OSw3ICszNTksNyBAQCB2
b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlRHJhd1Rhc2tPbkNDVGhyZWFkKCkKICAgICBBU1NF
UlQoaXNJbXBsVGhyZWFkKCkpOwogICAgIGlmIChtX2RyYXdUYXNrUG9zdGVkT25DQ1RocmVhZCkK
ICAgICAgICAgcmV0dXJuOwotICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzY2hlZHVs
ZURyYXdUYXNrT25DQ1RocmVhZCIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZF
TlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlRHJhd1Rhc2tPbkNDVGhyZWFkIiwgdGhpcywgMCk7
CiAgICAgQVNTRVJUKG1fbGF5ZXJUcmVlSG9zdEltcGwpOwogICAgIG1fZHJhd1Rhc2tQb3N0ZWRP
bkNDVGhyZWFkID0gdHJ1ZTsKICAgICBjY1RocmVhZC0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRU
YXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJzQW5kUHJlc2VudE9uQ0NUaHJlYWQp
KTsKQEAgLTM2Nyw3ICszNjcsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlRHJhd1Rh
c2tPbkNDVGhyZWFkKCkKIAogdm9pZCBDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJzQW5kUHJlc2Vu
dE9uQ0NUaHJlYWQoKQogewotICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpkcmF3TGF5
ZXJzT25DQ1RocmVhZCIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkND
VGhyZWFkUHJveHk6OmRyYXdMYXllcnNPbkNDVGhyZWFkIiwgdGhpcywgMCk7CiAgICAgQVNTRVJU
KGlzSW1wbFRocmVhZCgpKTsKICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwpCiAgICAgICAg
IHJldHVybjsKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmRyYXdMYXll
cnNBbmRQcmVzZW50T25DQ1RocmVhZCgpCiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6ZHJhd0xheWVy
c09uQ0NUaHJlYWQoKQogewotICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpkcmF3TGF5
ZXJzT25DQ1RocmVhZCIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkND
VGhyZWFkUHJveHk6OmRyYXdMYXllcnNPbkNDVGhyZWFkIiwgdGhpcywgMCk7CiAgICAgQVNTRVJU
KGlzSW1wbFRocmVhZCgpKTsKICAgICBBU1NFUlQobV9sYXllclRyZWVIb3N0SW1wbCk7CiAKQEAg
LTM5MCw3ICszOTAsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmRyYXdMYXllcnNPbkNDVGhyZWFk
KCkKIAogdm9pZCBDQ1RocmVhZFByb3h5Ojp1cGRhdGVTY2hlZHVsZXJTdGF0ZU9uQ0NUaHJlYWQo
Ym9vbCBjb21taXRSZXF1ZXN0ZWQsIGJvb2wgcmVkcmF3UmVxdWVzdGVkKQogewotICAgIFRSQUNF
X0VWRU5UKCJDQ1RocmVhZFByb3h5Ojp1cGRhdGVTY2hlZHVsZXJTdGF0ZU9uQ0NUaHJlYWQiLCB0
aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojp1cGRh
dGVTY2hlZHVsZXJTdGF0ZU9uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNJbXBs
VGhyZWFkKCkpOwogICAgIEFTU0VSVChtX2xheWVyVHJlZUhvc3RJbXBsKTsKIApAQCAtNDA5LDcg
KzQwOSw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6dXBkYXRlU2NoZWR1bGVyU3RhdGVPbkNDVGhy
ZWFkKGJvb2wgY29tbWl0UmVxdWVzdGVkLCBib29sIHJlCiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6
aW5pdGlhbGl6ZUltcGxPbkNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQog
ewotICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplSW1wbE9uQ0NUaHJl
YWQiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5
Ojppbml0aWFsaXplSW1wbE9uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNJbXBs
VGhyZWFkKCkpOwogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwgPSBtX2xheWVyVHJlZUhvc3QtPmNy
ZWF0ZUxheWVyVHJlZUhvc3RJbXBsKCk7CiAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CkBAIC00
MTcsNyArNDE3LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplSW1wbE9uQ0NUaHJl
YWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6
aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJPbkNDVGhyZWFkKEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0UHRyLCBDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbiwgYm9vbCogaW5pdGlhbGl6ZVN1
Y2NlZWRlZCwgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyogY2FwYWJpbGl0aWVzKQogewotICAg
IFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uQ0NU
aHJlYWQiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJDQ1RocmVhZFBy
b3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBB
U1NFUlQoaXNJbXBsVGhyZWFkKCkpOwogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29u
dGV4dChhZG9wdFJlZihjb250ZXh0UHRyKSk7CiAgICAgKmluaXRpYWxpemVTdWNjZWVkZWQgPSBt
X2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0KTsKQEAg
LTQyOCw3ICs0MjgsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRl
cmVyT25DQ1RocmVhZChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dAogCiB2b2lkIENDVGhyZWFk
UHJveHk6OmxheWVyVHJlZUhvc3RDbG9zZWRPbkNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBj
b21wbGV0aW9uKQogewotICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpsYXllclRyZWVI
b3N0Q2xvc2VkT25DQ1RocmVhZCIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZF
TlQoIkNDVGhyZWFkUHJveHk6OmxheWVyVHJlZUhvc3RDbG9zZWRPbkNDVGhyZWFkIiwgdGhpcywg
MCk7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBtX2xheWVyVHJlZUhvc3QtPmRl
bGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkNDVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRl
bnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLmNsZWFyKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGNiODg2ZWRjOWQzMzRkYmZiNWRjNzdiYzE2
YWRjYmI4MzhlZWU2NzcuLjdkYmI0MmFiMjU2NGE3MmFkNDk3YTcxYjhiMzgyZWFmOTUzYjBhZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDktMjgg
IEFudG9pbmUgTGFib3VyICA8cGltYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNlcGFyYXRl
IGNvbXBvc2l0b3IgcGxhdGZvcm0gc3VwcG9ydCBmcm9tIHdlYmtpdCdzIHBsYXRmb3JtIHN1cHBv
cnQuCisgICAgICAgIFRoaXMgaXMgc28gdGhhdCB0aGUgY29tcG9zaXRvciBjYW4gYmUgdXNlZCBp
biBhIHRocmVhZCBzZXBhcmF0ZSBmcm9tIHRoZQorICAgICAgICBtYWluIHdlYmtpdCB0aHJlYWQu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJs
aWMvV2ViS2l0Lmg6CisgICAgICAgICogc3JjL1dlYktpdC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYktpdENvbXBvc2l0b3JTdXBwb3J0Ojp+V2ViS2l0Q29tcG9zaXRvclN1cHBvcnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJLaXRDb21wb3NpdG9yU3VwcG9ydDo6Y3VycmVudFRpbWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJLaXRDb21wb3NpdG9yU3VwcG9ydDo6aGlzdG9ncmFtQ3VzdG9tQ291
bnRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0Q29tcG9zaXRvclN1cHBvcnQ6OnRyYWNlRXZl
bnRCZWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYktpdENvbXBvc2l0b3JTdXBwb3J0Ojp0cmFj
ZUV2ZW50RW5kKToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZVdpdGhvdXRWOCk6CisgICAg
ICAgIChXZWJLaXQ6OmluaXRpYWxpemVXaXRob3V0VjhBbmRDb21wb3NpdG9yKToKKyAgICAgICAg
KFdlYktpdDo6c2h1dGRvd24pOgorCiAyMDExLTA5LTI4ICBGYWR5IFNhbXVlbCAgPGZzYW11ZWxA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gU2VwZXJhdGUgR1RLIHNwZWNpZmlj
IEd5cCBydWxlcyBmcm9tIFgxMSBHeXAgcnVsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYktpdC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViS2l0LmgKaW5kZXggOTkxZDU0MzI3NDBjODU0MDc4MWY1NGVjNDgyNjkxMjRjMWUxOWY5MS4u
MDJhNjBmODI4MTBiMWViZjNjZmIyODBjOTI2NzViYjU0YzIzZDBhNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0LmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViS2l0LmgKQEAgLTQ5LDYgKzQ5LDE0IEBAIFdFQktJVF9FWFBPUlQg
dm9pZCBpbml0aWFsaXplKFdlYktpdFBsYXRmb3JtU3VwcG9ydCopOwogLy8gVGhpcyBpcyBhIHNw
ZWNpYWwgdmFyaWFudCBvZiBpbml0aWFsaXplIHRoYXQgZG9lcyBub3QgaW50aXRpYWxpemUgVjgu
CiBXRUJLSVRfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZVdpdGhvdXRWOChXZWJLaXRQbGF0Zm9ybVN1
cHBvcnQqKTsKIAorLy8gTXVzdCBiZSBjYWxsZWQgb24gdGhlIHRocmVhZCB0aGF0IHdpbGwgYmUg
dGhlIG1haW4gV2ViS2l0IHRocmVhZCBiZWZvcmUKKy8vIHVzaW5nIGFueSBvdGhlciBXZWJLaXQg
QVBJcy4gVGhlIHByb3ZpZGVkIFdlYktpdFBsYXRmb3JtU3VwcG9ydDsgbXVzdCBiZQorLy8gbm9u
LW51bGwgYW5kIG11c3QgcmVtYWluIHZhbGlkIHVudGlsIHRoZSBjdXJyZW50IHRocmVhZCBjYWxs
cyBzaHV0ZG93bi4KKy8vCisvLyBUaGlzIGlzIGEgc3BlY2lhbCB2YXJpYW50IG9mIGluaXRpYWxp
emUgdGhhdCBkb2VzIG5vdCBpbnRpdGlhbGl6ZSBWOCBub3IgdGhlCisvLyBjb21wb3NpdG9yLgor
V0VCS0lUX0VYUE9SVCB2b2lkIGluaXRpYWxpemVXaXRob3V0VjhBbmRDb21wb3NpdG9yKFdlYktp
dFBsYXRmb3JtU3VwcG9ydCopOworCiAvLyBPbmNlIHNodXRkb3duLCB0aGUgV2ViS2l0UGxhdGZv
cm1TdXBwb3J0IHBhc3NlZCB0byBpbml0aWFsaXplIHdpbGwgbm8gbG9uZ2VyCiAvLyBiZSBhY2Nl
c3NlZC4gTm8gb3RoZXIgV2ViS2l0IG9iamVjdHMgc2hvdWxkIGJlIGluIHVzZSB3aGVuIHRoaXMg
ZnVuY3Rpb24gaXMKIC8vIGNhbGxlZC4gQW55IGJhY2tncm91bmQgdGhyZWFkcyBjcmVhdGVkIGJ5
IFdlYktpdCBhcmUgcHJvbWlzZWQgdG8gYmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYktpdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQu
Y3BwCmluZGV4IDQyM2M0NWFlMzI0ZTE1YjdiMmQ0NGUwZDVkYWM0M2ZjOWMzNDEwNGIuLjY5YWQ4
NTc1ZGFjMmY0MzZjYmQzMmQ3YjI4YjRkNGMyNTI3NTRmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViS2l0LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIldlYktpdC5oIgogCisjaW5jbHVkZSAiQ29tcG9zaXRvclN1cHBvcnQuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaCIKQEAgLTU3LDYgKzU4LDMyIEBAIHN0YXRpYyBib29sIHNfd2ViS2l0
SW5pdGlhbGl6ZWQgPSBmYWxzZTsKIHN0YXRpYyBXZWJLaXRQbGF0Zm9ybVN1cHBvcnQqIHNfd2Vi
S2l0UGxhdGZvcm1TdXBwb3J0ID0gMDsKIHN0YXRpYyBib29sIHNfbGF5b3V0VGVzdE1vZGUgPSBm
YWxzZTsKIAorY2xhc3MgV2ViS2l0Q29tcG9zaXRvclN1cHBvcnQgOiBwdWJsaWMgV2ViQ29yZTo6
Q29tcG9zaXRvclN1cHBvcnREZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViS2l0
Q29tcG9zaXRvclN1cHBvcnQoKSB7IH0KKworICAgIHZpcnR1YWwgZG91YmxlIGN1cnJlbnRUaW1l
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBzX3dlYktpdFBsYXRmb3JtU3VwcG9ydC0+Y3VycmVu
dFRpbWUoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaGlzdG9ncmFtQ3VzdG9tQ291bnRz
KGNvbnN0IGNoYXIqIG5hbWUsIGludCBzYW1wbGUsIGludCBtaW4sIGludCBtYXgsIGludCBidWNr
ZXRDb3VudCkKKyAgICB7CisgICAgICAgIHNfd2ViS2l0UGxhdGZvcm1TdXBwb3J0LT5oaXN0b2dy
YW1DdXN0b21Db3VudHMobmFtZSwgc2FtcGxlLCBtaW4sIG1heCwgYnVja2V0Q291bnQpOworICAg
IH0KKworICAgIHZpcnR1YWwgdm9pZCB0cmFjZUV2ZW50QmVnaW4oY29uc3QgY2hhciogbmFtZSwg
dm9pZCogaWQsIGNvbnN0IGNoYXIqIGV4dHJhKQorICAgIHsKKyAgICAgICAgc193ZWJLaXRQbGF0
Zm9ybVN1cHBvcnQtPnRyYWNlRXZlbnRCZWdpbihuYW1lLCBpZCwgZXh0cmEpOworICAgIH0KKwor
ICAgIHZpcnR1YWwgdm9pZCB0cmFjZUV2ZW50RW5kKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlk
LCBjb25zdCBjaGFyKiBleHRyYSkKKyAgICB7CisgICAgICAgIHNfd2ViS2l0UGxhdGZvcm1TdXBw
b3J0LT50cmFjZUV2ZW50RW5kKG5hbWUsIGlkLCBleHRyYSk7CisgICAgfQorfTsKK3N0YXRpYyBX
ZWJLaXRDb21wb3NpdG9yU3VwcG9ydCogc19jb21wb3NpdG9yU3VwcG9ydCA9IDA7CisKIHN0YXRp
YyBib29sIGdlbmVyYXRlRW50cm9weSh1bnNpZ25lZCBjaGFyKiBidWZmZXIsIHNpemVfdCBsZW5n
dGgpCiB7CiAgICAgaWYgKHNfd2ViS2l0UGxhdGZvcm1TdXBwb3J0KSB7CkBAIC03Nyw2ICsxMDQs
MTQgQEAgdm9pZCBpbml0aWFsaXplKFdlYktpdFBsYXRmb3JtU3VwcG9ydCogd2ViS2l0UGxhdGZv
cm1TdXBwb3J0KQogCiB2b2lkIGluaXRpYWxpemVXaXRob3V0VjgoV2ViS2l0UGxhdGZvcm1TdXBw
b3J0KiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQpCiB7CisgICAgaW5pdGlhbGl6ZVdpdGhvdXRWOEFu
ZENvbXBvc2l0b3Iod2ViS2l0UGxhdGZvcm1TdXBwb3J0KTsKKyAgICBBU1NFUlQoIVdlYkNvcmU6
OkNvbXBvc2l0b3JTdXBwb3J0OjpkZWxlZ2F0ZSgpKTsKKyAgICBzX2NvbXBvc2l0b3JTdXBwb3J0
ID0gbmV3IFdlYktpdENvbXBvc2l0b3JTdXBwb3J0OworICAgIFdlYkNvcmU6OkNvbXBvc2l0b3JT
dXBwb3J0Ojppbml0aWFsaXplKHNfY29tcG9zaXRvclN1cHBvcnQpOworfQorCit2b2lkIGluaXRp
YWxpemVXaXRob3V0VjhBbmRDb21wb3NpdG9yKFdlYktpdFBsYXRmb3JtU3VwcG9ydCogd2ViS2l0
UGxhdGZvcm1TdXBwb3J0KQorewogICAgIEFTU0VSVCghc193ZWJLaXRJbml0aWFsaXplZCk7CiAg
ICAgc193ZWJLaXRJbml0aWFsaXplZCA9IHRydWU7CiAKQEAgLTk2LDEzICsxMzEsMTYgQEAgdm9p
ZCBpbml0aWFsaXplV2l0aG91dFY4KFdlYktpdFBsYXRmb3JtU3VwcG9ydCogd2ViS2l0UGxhdGZv
cm1TdXBwb3J0KQogICAgIC8vIHRoZSBpbml0aWFsaXphdGlvbiB0aHJlYWQtc2FmZSwgYnV0IGdp
dmVuIHRoYXQgc28gbWFueSBjb2RlIHBhdGhzIHVzZQogICAgIC8vIHRoaXMsIGluaXRpYWxpemlu
ZyB0aGlzIGxhemlseSBwcm9iYWJseSBkb2Vzbid0IGJ1eSB1cyBtdWNoLgogICAgIFdlYkNvcmU6
OlVURjhFbmNvZGluZygpOwotCi0gCiB9CiAKIAogdm9pZCBzaHV0ZG93bigpCiB7CisgICAgaWYg
KHNfY29tcG9zaXRvclN1cHBvcnQpIHsKKyAgICAgICAgV2ViQ29yZTo6Q29tcG9zaXRvclN1cHBv
cnQ6OnNodXRkb3duKCk7CisgICAgICAgIGRlbGV0ZSBzX2NvbXBvc2l0b3JTdXBwb3J0OworICAg
ICAgICBzX2NvbXBvc2l0b3JTdXBwb3J0ID0gMDsKKyAgICB9CiAgICAgc193ZWJLaXRQbGF0Zm9y
bVN1cHBvcnQgPSAwOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109109</attachid>
            <date>2011-09-28 18:17:51 -0700</date>
            <delta_ts>2011-09-28 18:20:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69048-20110928181750.patch</filename>
            <type>text/plain</type>
            <size>58840</size>
            <attacher name="Antoine Labour">piman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYyNjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMDgwYzgwMDAyZTFkNTIz
MjcyYjM3NDZkZWVkNGRkZWZiYTVjZjZiLi5jZjg0MDY2ODQ0MDdmYjU1NWQ4OGM3OWE3OGQyNzM1
ZGU0OWQ4YWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAwIEBACisyMDExLTA5LTI4ICBBbnRv
aW5lIExhYm91ciAgPHBpbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBTZXBhcmF0ZSBjb21w
b3NpdG9yIHBsYXRmb3JtIHN1cHBvcnQgZnJvbSB3ZWJraXQncyBwbGF0Zm9ybSBzdXBwb3J0Lgor
ICAgICAgICBUaGlzIGlzIHNvIHRoYXQgdGhlIGNvbXBvc2l0b3IgY2FuIGJlIHVzZWQgaW4gYSB0
aHJlYWQgc2VwYXJhdGUgZnJvbSB0aGUKKyAgICAgICAgbWFpbiB3ZWJraXQgdGhyZWFkLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkwNDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4
aXN0aW5nIGNvbXBvc2l0aW5nIHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1RyYWNlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OmludGVybmFsOjo6OlNjb3BlVHJhY2VyKToKKyAgICAgICAgKFdlYkNvcmU6OmludGVybmFsOjo6
On5TY29wZVRyYWNlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29t
cG9zaXRvclN1cHBvcnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0b3JT
dXBwb3J0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0b3JTdXBwb3J0
OjpzaHV0ZG93bik6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdG9yU3VwcG9ydDo6Y3VycmVu
dFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRvclN1cHBvcnQ6Omhpc3RvZ3JhbUN1
c3RvbUNvdW50cyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdG9yU3VwcG9ydDo6dHJhY2VF
dmVudEJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0b3JTdXBwb3J0Ojp0cmFjZUV2
ZW50RW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db21wb3NpdG9y
U3VwcG9ydC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0b3JTdXBwb3J0RGVs
ZWdhdGU6On5Db21wb3NpdG9yU3VwcG9ydERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXBvc2l0b3JTdXBwb3J0OjpkZWxlZ2F0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29tcG9zaXRvclRyYWNlRXZlbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHAuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyUGFpbnRlcjo6cGFpbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzSW50ZXJuYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpmaW5pc2gpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpwcmVzZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpib3JkZXJQcm9ncmFtKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aGVhZHNVcERpc3BsYXlQ
cm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVy
U3VyZmFjZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
OjpyZW5kZXJTdXJmYWNlUHJvZ3JhbUFBKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1BQSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbVN3aXp6
bGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dy
YW1Td2l6emxlQUEpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpj
YW52YXNMYXllclByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpwbHVnaW5MYXllclByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjp2aWRlb0xheWVyUkdCQVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjp2aWRlb0xheWVyWVVWUHJvZ3JhbSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhUZXhTdWJJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aE1hcFRl
eFN1YkltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRl
eHR1cmVVcGRhdGVyQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVw
ZGF0ZXJDYW52YXM6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyYW1C
aW5kaW5nQmFzZTo6Y3JlYXRlU2hhZGVyUHJvZ3JhbSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xMYXllckNocm9taXVtOjpyYXRlTGltaXRDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDSGVhZHNVcERpc3BsYXk6OkNDSGVhZHNVcERpc3BsYXkpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNvcnRMYXllcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3Q6On5DQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
Ojpjb21taXRUb09uQ0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
OjpzZXROZWVkc0NvbW1pdEFuZFJlZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OnVwZGF0ZUxheWVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3RJbXBsOjp+Q0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJveHk6
OmlzTWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Byb3h5OjpzZXRNYWluVGhyZWFk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5OjpDQ1NpbmdsZVRo
cmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6On5DQ1Np
bmdsZVRocmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6
OnN0b3ApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6Q0NUaHJlYWRQcm94
eSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojp+Q0NUaHJlYWRQcm94eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdEFuZFJlZHJhdyk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzZXROZWVkc1JlZHJhdyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFk
UHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uQ0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6Y3JlYXRlQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tPbkNDVGhyZWFkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6Y29tbWl0T25DQ1RocmVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZURyYXdUYXNrT25DQ1RocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJzQW5kUHJlc2VudE9u
Q0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6ZHJhd0xheWVyc09u
Q0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dXBkYXRlU2NoZWR1
bGVyU3RhdGVPbkNDVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6Omlu
aXRpYWxpemVJbXBsT25DQ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5
Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uQ0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6bGF5ZXJUcmVlSG9zdENsb3NlZE9uQ0NUaHJlYWQpOgorCiAyMDExLTA5
LTI4ICBTZXJnZXkgR2xhenVub3YgIDxzZXJnLmdsYXp1bm92QGdtYWlsLmNvbT4KIAogICAgICAg
ICBKYXZhU2NyaXB0IGdlbmVyYXRlZCBkb2N1bWVudHMgZG9uJ3QgaW5oZXJpdCB0aGUgY29va2ll
IFVSTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDA0MjA0ZWE2YWJjNmQ0NmIzZjBkNTEyNjdjZGRkNjlh
MDFhYTU3MTcuLjkyZmY2MWEzOThjNDE2ZjdiOGQwOWViNGRmNzRhMzhhNzlhYWRmOTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTM0MDYsNiArMzQwNiw5IEBACiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db21wbGV4VGV4dENvbnRyb2xsZXJMaW51eC5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbXBsZXhUZXh0Q29u
dHJvbGxlckxpbnV4LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NvbXBvc2l0b3JTdXBwb3J0LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29tcG9zaXRvclN1cHBvcnQuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ29tcG9zaXRvclRyYWNlRXZlbnQuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Dcm9zc1Byb2Nlc3NG
b250TG9hZGluZy5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1RyYWNlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1RyYWNl
RXZlbnQuaAppbmRleCBkYjhjNzRiMmExZDA4OWI3NDJhZmIwMGQ0NGZhZDRiYjc2YzE2YzQ3Li45
NTUxNTIzY2MwMzc2MDU2ODdiNDc1ZjBlZGM4MTVmNzhlZjUyMDgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9UcmFjZUV2ZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vVHJhY2VFdmVudC5oCkBAIC0zNiwxNCArMzYsMTQgQEAK
ICNkZWZpbmUgVFJBQ0VfRVZFTlRfTUFLRV9VTklRVUVfSURFTlRJRklFUihuYW1lX3ByZWZpeCkg
VFJBQ0VfRVZFTlRfTUFLRV9VTklRVUVfSURFTlRJRklFUjIobmFtZV9wcmVmaXgsIF9fTElORV9f
KQogCiAvLyBJc3N1ZXMgUGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2ZW50QmVnaW4gYW5kIHRyYWNl
RXZlbnRFbmQgY2FsbHMgZm9yIHRoZSBlbmNsb3Npbmcgc2NvcGUKLSNkZWZpbmUgVFJBQ0VfRVZF
TlQobmFtZSwgaWQsIGV4dHJhKSBXZWJDb3JlOjppbnRlcm5hbDo6U2NvcGVUcmFjZXIgVFJBQ0Vf
RVZFTlRfTUFLRV9VTklRVUVfSURFTlRJRklFUihfX3RyYWNlRXZlbnRTY29wZSkobmFtZSwgaWQs
IGV4dHJhKTsKKyNkZWZpbmUgVFJBQ0VfRVZFTlQobmFtZSwgaWQsIGV4dHJhKSBXZWJDb3JlOjpp
bnRlcm5hbDo6U2NvcGVUcmFjZXI8V2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0PiBUUkFDRV9FVkVO
VF9NQUtFX1VOSVFVRV9JREVOVElGSUVSKF9fdHJhY2VFdmVudFNjb3BlKShuYW1lLCBpZCwgZXh0
cmEpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKIC8v
IFVzZWQgYnkgVFJBQ0VfRVZFTlQgbWFjcm8uIERvIG5vdCB1c2UgZGlyZWN0bHkuCi1jbGFzcyBT
Y29wZVRyYWNlciB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBTdXBwb3J0PiBjbGFzcyBTY29wZVRyYWNl
ciB7CiBwdWJsaWM6CiAgICAgU2NvcGVUcmFjZXIoY29uc3QgY2hhciogbmFtZSwgdm9pZCosIGNv
bnN0IGNoYXIqIGV4dHJhKTsKICAgICB+U2NvcGVUcmFjZXIoKTsKQEAgLTU0LDE4ICs1NCwxOCBA
QCBwcml2YXRlOgogICAgIE93bkFycmF5UHRyPGNoYXI+IG1fZXh0cmE7CiB9OwogCi1pbmxpbmUg
U2NvcGVUcmFjZXI6OlNjb3BlVHJhY2VyKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBjb25z
dCBjaGFyKiBleHRyYSkKK3RlbXBsYXRlPHR5cGVuYW1lIFN1cHBvcnQ+IGlubGluZSBTY29wZVRy
YWNlcjxTdXBwb3J0Pjo6U2NvcGVUcmFjZXIoY29uc3QgY2hhciogbmFtZSwgdm9pZCogaWQsIGNv
bnN0IGNoYXIqIGV4dHJhKQogICAgIDogbV9uYW1lKG5hbWUpCiAgICAgLCBtX2lkKGlkKQogewot
ICAgIFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVudEJlZ2luKG5hbWUsIGlkLCBleHRyYSk7IFwK
KyAgICBTdXBwb3J0Ojp0cmFjZUV2ZW50QmVnaW4obmFtZSwgaWQsIGV4dHJhKTsgXAogICAgIGlm
IChleHRyYSkKICAgICAgICAgbV9leHRyYSA9IGFkb3B0QXJyYXlQdHIoc3RyZHVwKGV4dHJhKSk7
CiB9CiAKLWlubGluZSBTY29wZVRyYWNlcjo6flNjb3BlVHJhY2VyKCkKK3RlbXBsYXRlPHR5cGVu
YW1lIFN1cHBvcnQ+IGlubGluZSBTY29wZVRyYWNlcjxTdXBwb3J0Pjo6flNjb3BlVHJhY2VyKCkK
IHsKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRFbmQobV9uYW1lLCBtX2lkLCBtX2V4
dHJhLmdldCgpKTsKKyAgICBTdXBwb3J0Ojp0cmFjZUV2ZW50RW5kKG1fbmFtZSwgbV9pZCwgbV9l
eHRyYS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIGludGVybmFsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db21wb3NpdG9yU3VwcG9y
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db21wb3Np
dG9yU3VwcG9ydC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQzNTIzYzk0ZmI5YzZlNGM0NjhkNTJmNmVmNzVm
ODc3MWY1MzJiNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbXBvc2l0b3JTdXBwb3J0LmNwcApAQCAtMCwwICsxLDY5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb21wb3NpdG9yU3VwcG9ydC5oIgor
CisjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitDb21wb3NpdG9yU3VwcG9ydERlbGVnYXRlKiBDb21wb3Np
dG9yU3VwcG9ydDo6c19kZWxlZ2F0ZTsKKwordm9pZCBDb21wb3NpdG9yU3VwcG9ydDo6aW5pdGlh
bGl6ZShDb21wb3NpdG9yU3VwcG9ydERlbGVnYXRlKiBkZWxlZ2F0ZSkKK3sKKyAgICBzX2RlbGVn
YXRlID0gZGVsZWdhdGU7CisgICAgQ0NQcm94eTo6c2V0TWFpblRocmVhZChjdXJyZW50VGhyZWFk
KCkpOworfQorCit2b2lkIENvbXBvc2l0b3JTdXBwb3J0OjpzaHV0ZG93bigpCit7CisgICAgQ0NQ
cm94eTo6c2V0TWFpblRocmVhZCgwKTsKKyAgICBzX2RlbGVnYXRlID0gMDsKK30KKworZG91Ymxl
IENvbXBvc2l0b3JTdXBwb3J0OjpjdXJyZW50VGltZSgpCit7CisgICAgcmV0dXJuIHNfZGVsZWdh
dGUtPmN1cnJlbnRUaW1lKCk7Cit9CisKK3ZvaWQgQ29tcG9zaXRvclN1cHBvcnQ6Omhpc3RvZ3Jh
bUN1c3RvbUNvdW50cyhjb25zdCBjaGFyKiBuYW1lLCBpbnQgc2FtcGxlLCBpbnQgbWluLCBpbnQg
bWF4LCBpbnQgYnVja2V0Q291bnQpCit7CisgICAgc19kZWxlZ2F0ZS0+aGlzdG9ncmFtQ3VzdG9t
Q291bnRzKG5hbWUsIHNhbXBsZSwgbWluLCBtYXgsIGJ1Y2tldENvdW50KTsKK30KKwordm9pZCBD
b21wb3NpdG9yU3VwcG9ydDo6dHJhY2VFdmVudEJlZ2luKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQq
IGlkLCBjb25zdCBjaGFyKiBleHRyYSkKK3sKKyAgICBzX2RlbGVnYXRlLT50cmFjZUV2ZW50QmVn
aW4obmFtZSwgaWQsIGV4dHJhKTsKK30KKwordm9pZCBDb21wb3NpdG9yU3VwcG9ydDo6dHJhY2VF
dmVudEVuZChjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiBpZCwgY29uc3QgY2hhciogZXh0cmEpCit7
CisgICAgc19kZWxlZ2F0ZS0+dHJhY2VFdmVudEVuZChuYW1lLCBpZCwgZXh0cmEpOworfQorCisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29tcG9zaXRvclN1cHBvcnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbXBvc2l0b3JTdXBwb3J0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzgxZWEwN2UxY2VmNDhmMmU4Njg4MDgwZmU2MTQyMGQzZDFkYTA2YwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbXBv
c2l0b3JTdXBwb3J0LmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaWZuZGVmIENvbXBvc2l0b3JT
dXBwb3J0X2gKKyNkZWZpbmUgQ29tcG9zaXRvclN1cHBvcnRfaAorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIENvbXBvc2l0b3JTdXBwb3J0RGVsZWdhdGUgeworcHVibGljOgorICAgIHZp
cnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoaXN0b2dy
YW1DdXN0b21Db3VudHMoY29uc3QgY2hhciogbmFtZSwgaW50IHNhbXBsZSwgaW50IG1pbiwgaW50
IG1heCwgaW50IGJ1Y2tldENvdW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRyYWNlRXZlbnRC
ZWdpbihjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiBpZCwgY29uc3QgY2hhciogZXh0cmEpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgdHJhY2VFdmVudEVuZChjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiBp
ZCwgY29uc3QgY2hhciogZXh0cmEpID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfkNv
bXBvc2l0b3JTdXBwb3J0RGVsZWdhdGUoKSB7IH0KK307CisKK2NsYXNzIENvbXBvc2l0b3JTdXBw
b3J0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKENvbXBvc2l0b3JTdXBw
b3J0RGVsZWdhdGUqKTsKKyAgICBzdGF0aWMgdm9pZCBzaHV0ZG93bigpOworCisgICAgc3RhdGlj
IGRvdWJsZSBjdXJyZW50VGltZSgpOworICAgIHN0YXRpYyB2b2lkIGhpc3RvZ3JhbUN1c3RvbUNv
dW50cyhjb25zdCBjaGFyKiBuYW1lLCBpbnQgc2FtcGxlLCBpbnQgbWluLCBpbnQgbWF4LCBpbnQg
YnVja2V0Q291bnQpOworICAgIHN0YXRpYyB2b2lkIHRyYWNlRXZlbnRCZWdpbihjb25zdCBjaGFy
KiBuYW1lLCB2b2lkKiBpZCwgY29uc3QgY2hhciogZXh0cmEpOworICAgIHN0YXRpYyB2b2lkIHRy
YWNlRXZlbnRFbmQoY29uc3QgY2hhciogbmFtZSwgdm9pZCogaWQsIGNvbnN0IGNoYXIqIGV4dHJh
KTsKKworICAgIHN0YXRpYyBDb21wb3NpdG9yU3VwcG9ydERlbGVnYXRlKiBkZWxlZ2F0ZSgpIHsg
cmV0dXJuIHNfZGVsZWdhdGU7IH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgQ29tcG9zaXRvclN1
cHBvcnREZWxlZ2F0ZSogc19kZWxlZ2F0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Db21wb3NpdG9yVHJhY2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ29tcG9zaXRvclRyYWNlRXZlbnQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNGRh
NTg2MTA4MTFmZjA5MzdiYzhmZGQ0ZWI2MTJjNTQ5NjcxMjZhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29tcG9zaXRvclRyYWNl
RXZlbnQuaApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpZm5kZWYgQ29tcG9zaXRvclRyYWNlRXZl
bnRfaAorI2RlZmluZSBDb21wb3NpdG9yVHJhY2VFdmVudF9oCisKKyNpbmNsdWRlICJDb21wb3Np
dG9yU3VwcG9ydC5oIgorI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKKworI2RlZmluZSBDT01QT1NJ
VE9SX1RSQUNFX0VWRU5UKG5hbWUsIGlkLCBleHRyYSkgV2ViQ29yZTo6aW50ZXJuYWw6OlNjb3Bl
VHJhY2VyPENvbXBvc2l0b3JTdXBwb3J0PiBUUkFDRV9FVkVOVF9NQUtFX1VOSVFVRV9JREVOVElG
SUVSKF9fdHJhY2VFdmVudFNjb3BlKShuYW1lLCBpZCwgZXh0cmEpOworCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRM
YXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAppbmRleCA5ZGU0ZGE5ZDZkNmQ0YjQzMDc2NmUx
NzkyNzI4YTMwMzllYzcwOTAxLi5lYzVjMDExMmY4MDk3YmZlNTdiNzVjNGE2ZmQxMjRkM2E5MWE2
YWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCkBAIC0zNCwxMCArMzQs
MTAgQEAKIAogI2luY2x1ZGUgIkNvbnRlbnRMYXllckNocm9taXVtLmgiCiAKKyNpbmNsdWRlICJD
b21wb3NpdG9yU3VwcG9ydC5oIgogI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgiCiAj
aW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJl
VXBkYXRlckNhbnZhcy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgogI2luY2x1ZGUg
ImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCkBA
IC01MywxNCArNTMsMTQgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCiAgICAgewot
ICAgICAgICBkb3VibGUgcGFpbnRTdGFydCA9IGN1cnJlbnRUaW1lKCk7CisgICAgICAgIGRvdWJs
ZSBwYWludFN0YXJ0ID0gQ29tcG9zaXRvclN1cHBvcnQ6OmN1cnJlbnRUaW1lKCk7CiAgICAgICAg
IGNvbnRleHQuY2xlYXJSZWN0KGNvbnRlbnRSZWN0KTsKICAgICAgICAgY29udGV4dC5jbGlwKGNv
bnRlbnRSZWN0KTsKICAgICAgICAgbV9kZWxlZ2F0ZS0+cGFpbnRDb250ZW50cyhjb250ZXh0LCBj
b250ZW50UmVjdCk7Ci0gICAgICAgIGRvdWJsZSBwYWludEVuZCA9IGN1cnJlbnRUaW1lKCk7Cisg
ICAgICAgIGRvdWJsZSBwYWludEVuZCA9IENvbXBvc2l0b3JTdXBwb3J0OjpjdXJyZW50VGltZSgp
OwogICAgICAgICBkb3VibGUgcGl4ZWxzUGVyU2VjID0gKGNvbnRlbnRSZWN0LndpZHRoKCkgKiBj
b250ZW50UmVjdC5oZWlnaHQoKSkgLyAocGFpbnRFbmQgLSBwYWludFN0YXJ0KTsKLSAgICAgICAg
UGxhdGZvcm1TdXBwb3J0OjpoaXN0b2dyYW1DdXN0b21Db3VudHMoIlJlbmRlcmVyNC5BY2NlbENv
bnRlbnRQYWludER1cmF0aW9uTVMiLCAocGFpbnRFbmQgLSBwYWludFN0YXJ0KSAqIDEwMDAsIDAs
IDEyMCwgMzApOwotICAgICAgICBQbGF0Zm9ybVN1cHBvcnQ6Omhpc3RvZ3JhbUN1c3RvbUNvdW50
cygiUmVuZGVyZXI0LkFjY2VsQ29udGVudFBhaW50TWVnYXBpeFBlclNlY29uZCIsIHBpeGVsc1Bl
clNlYyAvIDEwMDAwMDAsIDEwLCAyMTAsIDMwKTsKKyAgICAgICAgQ29tcG9zaXRvclN1cHBvcnQ6
Omhpc3RvZ3JhbUN1c3RvbUNvdW50cygiUmVuZGVyZXI0LkFjY2VsQ29udGVudFBhaW50RHVyYXRp
b25NUyIsIChwYWludEVuZCAtIHBhaW50U3RhcnQpICogMTAwMCwgMCwgMTIwLCAzMCk7CisgICAg
ICAgIENvbXBvc2l0b3JTdXBwb3J0OjpoaXN0b2dyYW1DdXN0b21Db3VudHMoIlJlbmRlcmVyNC5B
Y2NlbENvbnRlbnRQYWludE1lZ2FwaXhQZXJTZWNvbmQiLCBwaXhlbHNQZXJTZWMgLyAxMDAwMDAw
LCAxMCwgMjEwLCAzMCk7CiAgICAgfQogcHJpdmF0ZToKICAgICBleHBsaWNpdCBDb250ZW50TGF5
ZXJQYWludGVyKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmNwcAppbmRleCBmZWJkZWM1NTU3ZTY5OWU4MjZhOTg3OGNhNzRiZTc1MDNl
NTNmODYyLi44YzlkY2I3NjZiNGIxNDljZjlmZjI2MjM3MTA2NTk0NDEzNmY0YjIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTM1LDYgKzM1LDggQEAKICNpbmNs
dWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKIAogI2luY2x1ZGUgIkNhbnZhczJETGF5ZXJD
aHJvbWl1bS5oIgorI2luY2x1ZGUgIkNvbXBvc2l0b3JTdXBwb3J0LmgiCisjaW5jbHVkZSAiQ29t
cG9zaXRvclRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgog
I2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkdlb21ldHJ5QmluZGluZy5oIgpAQCAt
NTAsNyArNTIsNiBAQAogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRlICJUZXh0dXJl
TWFuYWdlci5oIgogI2luY2x1ZGUgIlRyZWVTeW5jaHJvbml6ZXIuaCIKLSNpbmNsdWRlICJUcmFj
ZUV2ZW50LmgiCiAjaW5jbHVkZSAiVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgiCiAjaW5jbHVk
ZSAiV2ViR0xMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKQEAg
LTIzMiw3ICsyMzMsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVycygp
CiAgICAgLy8gRklYTUU6IHVzZSB0aGUgZnJhbWUgYmVnaW4gdGltZSBmcm9tIHRoZSBvdmVyYWxs
IGNvbXBvc2l0b3Igc2NoZWR1bGVyLgogICAgIC8vIFRoaXMgdmFsdWUgaXMgY3VycmVudGx5IGlu
YWNjZXNzaWJsZSBiZWNhdXNlIGl0IGlzIHVwIGluIENocm9taXVtJ3MKICAgICAvLyBSZW5kZXJX
aWRnZXQuCi0gICAgbV9oZWFkc1VwRGlzcGxheS0+b25GcmFtZUJlZ2luKGN1cnJlbnRUaW1lKCkp
OworICAgIG1faGVhZHNVcERpc3BsYXktPm9uRnJhbWVCZWdpbihDb21wb3NpdG9yU3VwcG9ydDo6
Y3VycmVudFRpbWUoKSk7CiAKICAgICBpZiAoIXJvb3RMYXllcigpKQogICAgICAgICByZXR1cm47
CkBAIC0yNTYsNyArMjU3LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXll
cnNJbnRlcm5hbCgpCiAgICAgaWYgKHZpZXdwb3J0U2l6ZSgpLmlzRW1wdHkoKSB8fCAhcm9vdExh
eWVyKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVy
Q2hyb21pdW06OmRyYXdMYXllcnMiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VW
RU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnMiLCB0aGlzLCAwKTsKICAgICBD
Q0xheWVySW1wbCogcm9vdERyYXdMYXllciA9IHJvb3RMYXllcigpOwogICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOwogCkBAIC0yNzMsNyArMjc0LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmRyYXdMYXllcnNJbnRlcm5hbCgpCiAgICAgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+Y2xl
YXJMYXllckxpc3QoKTsKIAogICAgIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6ZHJhd0xheWVyc0ludGVybmFsOjpjYWxjRHJhd0V0YyIsIHRoaXMsIDApOwor
ICAgICAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OmRy
YXdMYXllcnNJbnRlcm5hbDo6Y2FsY0RyYXdFdGMiLCB0aGlzLCAwKTsKICAgICAgICAgQ0NMYXll
clRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9v
dERyYXdMYXllciwgcm9vdERyYXdMYXllciwgbV96b29tQW5pbWF0b3JUcmFuc2Zvcm0sIG1fem9v
bUFuaW1hdG9yVHJhbnNmb3JtLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBtX2RlZmF1bHRSZW5k
ZXJTdXJmYWNlLT5sYXllckxpc3QoKSwgJm1fbGF5ZXJTb3J0ZXIsIG1fY2FwYWJpbGl0aWVzLm1h
eFRleHR1cmVTaXplKTsKICAgICB9CiAKQEAgLTQwOCwxMyArNDA5LDEzIEBAIHZvaWQgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBkcmF3TWF0CiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpmaW5pc2goKQogewot
ICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OmZpbmlzaCIsIHRoaXMsIDAp
OworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Zmlu
aXNoIiwgdGhpcywgMCk7CiAgICAgbV9jb250ZXh0LT5maW5pc2goKTsKIH0KIAogdm9pZCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OnByZXNlbnQoKQogewotICAgIFRSQUNFX0VWRU5UKCJMYXllclJl
bmRlcmVyQ2hyb21pdW06OnByZXNlbnQiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNF
X0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnByZXNlbnQiLCB0aGlzLCAwKTsKICAgICAv
LyBXZSdyZSBkb25lISBUaW1lIHRvIHN3YXBidWZmZXJzIQogCiAgICAgLy8gTm90ZSB0aGF0IGN1
cnJlbnRseSB0aGlzIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXMgc3dhcEJ1ZmZlcnM7IHdlIHNob3Vs
ZApAQCAtNTk4LDcgKzU5OSw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXREcmF3
Vmlld3BvcnRSZWN0KGNvbnN0IEludFJlY3QmIGRyYXdSZWN0LCBib29sIGZsCiAKIGJvb2wgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hhcmVkT2JqZWN0cygpCiB7Ci0gICAgVFJB
Q0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMi
LCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hy
b21pdW06OmluaXRpYWxpemVTaGFyZWRPYmplY3RzIiwgdGhpcywgMCk7CiAgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CiAKICAgICAvLyBDcmVhdGUgYW4gRkJPIGZvciBkb2luZyBvZmZzY3JlZW4g
cmVuZGVyaW5nLgpAQCAtNjIzLDcgKzYyNCw3IEBAIGNvbnN0IExheWVyQ2hyb21pdW06OkJvcmRl
clByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Ym9yZGVyUHJvZ3JhbSgpCiAgICAgaWYg
KCFtX2JvcmRlclByb2dyYW0pCiAgICAgICAgIG1fYm9yZGVyUHJvZ3JhbSA9IGFkb3B0UHRyKG5l
dyBMYXllckNocm9taXVtOjpCb3JkZXJQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOwogICAgIGlm
ICghbV9ib3JkZXJQcm9ncmFtLT5pbml0aWFsaXplZCgpKSB7Ci0gICAgICAgIFRSQUNFX0VWRU5U
KCJMYXllclJlbmRlcmVyQ2hyb21pdW06OmJvcmRlclByb2dyYW06OmluaXRpYWxpemUiLCB0aGlz
LCAwKTsKKyAgICAgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpib3JkZXJQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CiAgICAgICAgIG1fYm9y
ZGVyUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOwogICAgIH0KICAgICByZXR1
cm4gbV9ib3JkZXJQcm9ncmFtLmdldCgpOwpAQCAtNjM0LDcgKzYzNSw3IEBAIGNvbnN0IENDSGVh
ZHNVcERpc3BsYXk6OlByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aGVhZHNVcERpc3Bs
YXlQcm9ncmFtKCkKICAgICBpZiAoIW1faGVhZHNVcERpc3BsYXlQcm9ncmFtKQogICAgICAgICBt
X2hlYWRzVXBEaXNwbGF5UHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBDQ0hlYWRzVXBEaXNwbGF5OjpQ
cm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOwogICAgIGlmICghbV9oZWFkc1VwRGlzcGxheVByb2dy
YW0tPmluaXRpYWxpemVkKCkpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6aGVhZHNVcERpc3BsYXlQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7Cisg
ICAgICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aGVh
ZHNVcERpc3BsYXlQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CiAgICAgICAgIG1faGVh
ZHNVcERpc3BsYXlQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQog
ICAgIHJldHVybiBtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbS5nZXQoKTsKQEAgLTY0NCw3ICs2NDUs
NyBAQCBjb25zdCBDQ1JlbmRlclN1cmZhY2U6OlByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6cmVuZGVyU3VyZmFjZVByb2dyYW0oKQogewogICAgIEFTU0VSVChtX3JlbmRlclN1cmZhY2VQ
cm9ncmFtKTsKICAgICBpZiAoIW1fcmVuZGVyU3VyZmFjZVByb2dyYW0tPmluaXRpYWxpemVkKCkp
IHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3Vy
ZmFjZVByb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgQ09NUE9TSVRPUl9U
UkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJTdXJmYWNlUHJvZ3JhbTo6
aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwogICAgICAgICBtX3JlbmRlclN1cmZhY2VQcm9ncmFtLT5p
bml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBtX3JlbmRlclN1
cmZhY2VQcm9ncmFtLmdldCgpOwpAQCAtNjU1LDcgKzY1Niw3IEBAIGNvbnN0IENDUmVuZGVyU3Vy
ZmFjZTo6UHJvZ3JhbUFBKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclN1cmZhY2VQcm9n
cmFtQUEoCiAgICAgaWYgKCFtX3JlbmRlclN1cmZhY2VQcm9ncmFtQUEpCiAgICAgICAgIG1fcmVu
ZGVyU3VyZmFjZVByb2dyYW1BQSA9IGFkb3B0UHRyKG5ldyBDQ1JlbmRlclN1cmZhY2U6OlByb2dy
YW1BQShtX2NvbnRleHQuZ2V0KCkpKTsKICAgICBpZiAoIW1fcmVuZGVyU3VyZmFjZVByb2dyYW1B
QS0+aW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpyZW5kZXJTdXJmYWNlUHJvZ3JhbUFBOjppbml0aWFsaXplIiwgdGhpcywgMCk7Cisg
ICAgICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVu
ZGVyU3VyZmFjZVByb2dyYW1BQTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwogICAgICAgICBtX3Jl
bmRlclN1cmZhY2VQcm9ncmFtQUEtPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKICAgICB9
CiAgICAgcmV0dXJuIG1fcmVuZGVyU3VyZmFjZVByb2dyYW1BQS5nZXQoKTsKQEAgLTY2Niw3ICs2
NjcsNyBAQCBjb25zdCBDQ1JlbmRlclN1cmZhY2U6Ok1hc2tQcm9ncmFtKiBMYXllclJlbmRlcmVy
Q2hyb21pdW06OnJlbmRlclN1cmZhY2VNYXNrUHJvZwogICAgIGlmICghbV9yZW5kZXJTdXJmYWNl
TWFza1Byb2dyYW0pCiAgICAgICAgIG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtID0gYWRvcHRQ
dHIobmV3IENDUmVuZGVyU3VyZmFjZTo6TWFza1Byb2dyYW0obV9jb250ZXh0LmdldCgpKSk7CiAg
ICAgaWYgKCFtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewotICAg
ICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJTdXJmYWNlTWFz
a1Byb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgQ09NUE9TSVRPUl9UUkFD
RV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJTdXJmYWNlTWFza1Byb2dyYW06
OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKICAgICAgICAgbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dy
YW0tPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIG1fcmVu
ZGVyU3VyZmFjZU1hc2tQcm9ncmFtLmdldCgpOwpAQCAtNjc3LDcgKzY3OCw3IEBAIGNvbnN0IEND
UmVuZGVyU3VyZmFjZTo6TWFza1Byb2dyYW1BQSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5k
ZXJTdXJmYWNlTWFza1ByCiAgICAgaWYgKCFtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBKQog
ICAgICAgICBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBID0gYWRvcHRQdHIobmV3IENDUmVu
ZGVyU3VyZmFjZTo6TWFza1Byb2dyYW1BQShtX2NvbnRleHQuZ2V0KCkpKTsKICAgICBpZiAoIW1f
cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEtPmluaXRpYWxpemVkKCkpIHsKLSAgICAgICAgVFJB
Q0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFt
QUE6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVO
VCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQTo6aW5p
dGlhbGl6ZSIsIHRoaXMsIDApOwogICAgICAgICBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFB
LT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBtX3JlbmRl
clN1cmZhY2VNYXNrUHJvZ3JhbUFBLmdldCgpOwpAQCAtNjg3LDcgKzY4OCw3IEBAIGNvbnN0IEND
VGlsZWRMYXllckltcGw6OlByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9n
cmFtKCkKIHsKICAgICBBU1NFUlQobV90aWxlclByb2dyYW0pOwogICAgIGlmICghbV90aWxlclBy
b2dyYW0tPmluaXRpYWxpemVkKCkpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CisgICAgICAg
IENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9n
cmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CiAgICAgICAgIG1fdGlsZXJQcm9ncmFtLT5pbml0
aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBtX3RpbGVyUHJvZ3Jh
bS5nZXQoKTsKQEAgLTY5OCw3ICs2OTksNyBAQCBjb25zdCBDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9n
cmFtQUEqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtQUEoKQogICAgIGlmICgh
bV90aWxlclByb2dyYW1BQSkKICAgICAgICAgbV90aWxlclByb2dyYW1BQSA9IGFkb3B0UHRyKG5l
dyBDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtQUEobV9jb250ZXh0LmdldCgpKSk7CiAgICAgaWYg
KCFtX3RpbGVyUHJvZ3JhbUFBLT5pbml0aWFsaXplZCgpKSB7Ci0gICAgICAgIFRSQUNFX0VWRU5U
KCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbUFBOjppbml0aWFsaXplIiwgdGhp
cywgMCk7CisgICAgICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJv
bWl1bTo6dGlsZXJQcm9ncmFtQUE6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKICAgICAgICAgbV90
aWxlclByb2dyYW1BQS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOwogICAgIH0KICAgICBy
ZXR1cm4gbV90aWxlclByb2dyYW1BQS5nZXQoKTsKQEAgLTcwOSw3ICs3MTAsNyBAQCBjb25zdCBD
Q1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtU3dpenpsZSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0
aWxlclByb2dyYW1Td2l6egogICAgIGlmICghbV90aWxlclByb2dyYW1Td2l6emxlKQogICAgICAg
ICBtX3RpbGVyUHJvZ3JhbVN3aXp6bGUgPSBhZG9wdFB0cihuZXcgQ0NUaWxlZExheWVySW1wbDo6
UHJvZ3JhbVN3aXp6bGUobV9jb250ZXh0LmdldCgpKSk7CiAgICAgaWYgKCFtX3RpbGVyUHJvZ3Jh
bVN3aXp6bGUtPmluaXRpYWxpemVkKCkpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtU3dpenpsZTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDAp
OworICAgICAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06
OnRpbGVyUHJvZ3JhbVN3aXp6bGU6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKICAgICAgICAgbV90
aWxlclByb2dyYW1Td2l6emxlLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQog
ICAgIHJldHVybiBtX3RpbGVyUHJvZ3JhbVN3aXp6bGUuZ2V0KCk7CkBAIC03MjAsNyArNzIxLDcg
QEAgY29uc3QgQ0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbVN3aXp6bGVBQSogTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjp0aWxlclByb2dyYW1Td2kKICAgICBpZiAoIW1fdGlsZXJQcm9ncmFtU3dpenps
ZUFBKQogICAgICAgICBtX3RpbGVyUHJvZ3JhbVN3aXp6bGVBQSA9IGFkb3B0UHRyKG5ldyBDQ1Rp
bGVkTGF5ZXJJbXBsOjpQcm9ncmFtU3dpenpsZUFBKG1fY29udGV4dC5nZXQoKSkpOwogICAgIGlm
ICghbV90aWxlclByb2dyYW1Td2l6emxlQUEtPmluaXRpYWxpemVkKCkpIHsKLSAgICAgICAgVFJB
Q0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtU3dpenpsZUFBOjpp
bml0aWFsaXplIiwgdGhpcywgMCk7CisgICAgICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtU3dpenpsZUFBOjppbml0aWFsaXplIiwg
dGhpcywgMCk7CiAgICAgICAgIG1fdGlsZXJQcm9ncmFtU3dpenpsZUFBLT5pbml0aWFsaXplKG1f
Y29udGV4dC5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBtX3RpbGVyUHJvZ3JhbVN3aXp6bGVB
QS5nZXQoKTsKQEAgLTczMSw3ICs3MzIsNyBAQCBjb25zdCBDQ0NhbnZhc0xheWVySW1wbDo6UHJv
Z3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjYW52YXNMYXllclByb2dyYW0oKQogICAgIGlm
ICghbV9jYW52YXNMYXllclByb2dyYW0pCiAgICAgICAgIG1fY2FudmFzTGF5ZXJQcm9ncmFtID0g
YWRvcHRQdHIobmV3IENDQ2FudmFzTGF5ZXJJbXBsOjpQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkp
OwogICAgIGlmICghbV9jYW52YXNMYXllclByb2dyYW0tPmluaXRpYWxpemVkKCkpIHsKLSAgICAg
ICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2FudmFzTGF5ZXJQcm9ncmFt
Ojppbml0aWFsaXplIiwgdGhpcywgMCk7CisgICAgICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQo
IkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2FudmFzTGF5ZXJQcm9ncmFtOjppbml0aWFsaXplIiwg
dGhpcywgMCk7CiAgICAgICAgIG1fY2FudmFzTGF5ZXJQcm9ncmFtLT5pbml0aWFsaXplKG1fY29u
dGV4dC5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBtX2NhbnZhc0xheWVyUHJvZ3JhbS5nZXQo
KTsKQEAgLTc0Miw3ICs3NDMsNyBAQCBjb25zdCBDQ1BsdWdpbkxheWVySW1wbDo6UHJvZ3JhbSog
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpwbHVnaW5MYXllclByb2dyYW0oKQogICAgIGlmICghbV9w
bHVnaW5MYXllclByb2dyYW0pCiAgICAgICAgIG1fcGx1Z2luTGF5ZXJQcm9ncmFtID0gYWRvcHRQ
dHIobmV3IENDUGx1Z2luTGF5ZXJJbXBsOjpQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOwogICAg
IGlmICghbV9wbHVnaW5MYXllclByb2dyYW0tPmluaXRpYWxpemVkKCkpIHsKLSAgICAgICAgVFJB
Q0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cGx1Z2luTGF5ZXJQcm9ncmFtOjppbml0
aWFsaXplIiwgdGhpcywgMCk7CisgICAgICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVy
UmVuZGVyZXJDaHJvbWl1bTo6cGx1Z2luTGF5ZXJQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywg
MCk7CiAgICAgICAgIG1fcGx1Z2luTGF5ZXJQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dC5n
ZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBtX3BsdWdpbkxheWVyUHJvZ3JhbS5nZXQoKTsKQEAg
LTc1Myw3ICs3NTQsNyBAQCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpSR0JBUHJvZ3JhbSogTGF5
ZXJSZW5kZXJlckNocm9taXVtOjp2aWRlb0xheWVyUkdCQVByb2dyYQogICAgIGlmICghbV92aWRl
b0xheWVyUkdCQVByb2dyYW0pCiAgICAgICAgIG1fdmlkZW9MYXllclJHQkFQcm9ncmFtID0gYWRv
cHRQdHIobmV3IENDVmlkZW9MYXllckltcGw6OlJHQkFQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkp
OwogICAgIGlmICghbV92aWRlb0xheWVyUkdCQVByb2dyYW0tPmluaXRpYWxpemVkKCkpIHsKLSAg
ICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dmlkZW9MYXllclJHQkFQ
cm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CisgICAgICAgIENPTVBPU0lUT1JfVFJBQ0Vf
RVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dmlkZW9MYXllclJHQkFQcm9ncmFtOjppbml0
aWFsaXplIiwgdGhpcywgMCk7CiAgICAgICAgIG1fdmlkZW9MYXllclJHQkFQcm9ncmFtLT5pbml0
aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBtX3ZpZGVvTGF5ZXJS
R0JBUHJvZ3JhbS5nZXQoKTsKQEAgLTc2NCw3ICs3NjUsNyBAQCBjb25zdCBDQ1ZpZGVvTGF5ZXJJ
bXBsOjpZVVZQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnZpZGVvTGF5ZXJZVVZQcm9n
cmFtKAogICAgIGlmICghbV92aWRlb0xheWVyWVVWUHJvZ3JhbSkKICAgICAgICAgbV92aWRlb0xh
eWVyWVVWUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBDQ1ZpZGVvTGF5ZXJJbXBsOjpZVVZQcm9ncmFt
KG1fY29udGV4dC5nZXQoKSkpOwogICAgIGlmICghbV92aWRlb0xheWVyWVVWUHJvZ3JhbS0+aW5p
dGlhbGl6ZWQoKSkgewotICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVt
Ojp2aWRlb0xheWVyWVVWUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOworICAgICAgICBD
T01QT1NJVE9SX1RSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnZpZGVvTGF5ZXJZ
VVZQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CiAgICAgICAgIG1fdmlkZW9MYXllcllV
VlByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJu
IG1fdmlkZW9MYXllcllVVlByb2dyYW0uZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJ
bWFnZS5jcHAKaW5kZXggOGZlYTM4YTY5MGM5NWNlN2EzOTg3NmI3MGMzYmQwZTY5N2IyZWI4Ni4u
MDU2NWYzNmQyYjA3OTM4NDlmNTUxMzgwNjliNDUxMzg1ZmMyNDc1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyVGV4dHVyZVN1YkltYWdlLmNwcApAQCAtMjksOSArMjksOSBAQAogCiAjaW5jbHVkZSAiTGF5
ZXJUZXh0dXJlU3ViSW1hZ2UuaCIKIAorI2luY2x1ZGUgIkNvbXBvc2l0b3JUcmFjZUV2ZW50Lmgi
CiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQzRC5oIgotI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdp
dGhUZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCkKIHsKLSAgICBUUkFDRV9FVkVOVCgiTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6
OnVwbG9hZFdpdGhUZXhTdWJJbWFnZSIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0Vf
RVZFTlQoIkxheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWRXaXRoVGV4U3ViSW1hZ2UiLCB0aGlz
LCAwKTsKICAgICBpZiAoIW1fc3ViSW1hZ2UpCiAgICAgICAgIG1fc3ViSW1hZ2UgPSBhZG9wdEFy
cmF5UHRyKG5ldyB1aW50OF90W21fc3ViSW1hZ2VTaXplLndpZHRoKCkgKiBtX3N1YkltYWdlU2l6
ZS5oZWlnaHQoKSAqIDRdKTsKIApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIExheWVyVGV4dHVyZVN1
YkltYWdlOjp1cGxvYWRXaXRoTWFwVGV4U3ViSW1hZ2UoY29uc3QgdWludDhfdCogaW1hZ2UsIGNv
bnN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0g
Zm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHsKLSAgICBUUkFDRV9FVkVOVCgi
TGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZSIsIHRoaXMsIDAp
OworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxv
YWRXaXRoTWFwVGV4U3ViSW1hZ2UiLCB0aGlzLCAwKTsKICAgICAvLyBPZmZzZXQgZnJvbSBpbWFn
ZS1yZWN0IHRvIHNvdXJjZS1yZWN0LgogICAgIEludFBvaW50IG9mZnNldChzb3VyY2VSZWN0Lngo
KSAtIGltYWdlUmVjdC54KCksIHNvdXJjZVJlY3QueSgpIC0gaW1hZ2VSZWN0LnkoKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
VGV4dHVyZVVwZGF0ZXJDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5jcHAKaW5kZXggZmYxOWM3MWM1
MGI3NTUwNzE1MWEzYzUwMjdhODJhM2QyNzg1YjVlMy4uNjM2OTQwOWRmNjUyYmM5ZTI1ZGMwYjQ0
MGMyOGNmZGZhMzljY2E3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNh
bnZhcy5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAogCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBk
YXRlckNhbnZhcy5oIgogCisjaW5jbHVkZSAiQ29tcG9zaXRvclRyYWNlRXZlbnQuaCIKICNpbmNs
dWRlICJFeHRlbnNpb25zM0QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNs
dWRlICJMYXllclBhaW50ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1Db2xvci5oIgotI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKIAog
I2lmIFVTRShTS0lBKQogI2luY2x1ZGUgIkdyQ29udGV4dC5oIgpAQCAtNTUsNyArNTUsNyBAQCB2
b2lkIExheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXM6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBJbgogewogICAgIGNvbnRleHQudHJhbnNsYXRlKC1jb250ZW50
UmVjdC54KCksIC1jb250ZW50UmVjdC55KCkpOwogICAgIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQo
IkxheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXM6OnBhaW50IiwgdGhpcywgMCk7CisgICAgICAgIENP
TVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXM6OnBhaW50Iiwg
dGhpcywgMCk7CiAgICAgICAgIG1fcGFpbnRlci0+cGFpbnQoY29udGV4dCwgY29udGVudFJlY3Qp
OwogICAgIH0KICAgICBtX2NvbnRlbnRSZWN0ID0gY29udGVudFJlY3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9ncmFtQmlu
ZGluZy5jcHAKaW5kZXggMjY3ZTAxOTU3NzI2OTdlNWU3NDI1MDQxNjRlZDRlY2Q3ZDRmNmQ0Ny4u
ZTFhMjQ4NjI4ZjRmNjgxZjhjM2U5NTc1ZWIwOGE5MzZiYzkwYjA1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Byb2dyYW1C
aW5kaW5nLmNwcApAQCAtMjksMTEgKzI5LDExIEBACiAKICNpbmNsdWRlICJQcm9ncmFtQmluZGlu
Zy5oIgogCisjaW5jbHVkZSAiQ29tcG9zaXRvclRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJHZW9t
ZXRyeUJpbmRpbmcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgot
I2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04OCw3
ICs4OCw3IEBAIHVuc2lnbmVkIFByb2dyYW1CaW5kaW5nQmFzZTo6bG9hZFNoYWRlcihHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgdHlwCiAKIHVuc2lnbmVkIFByb2dyYW1CaW5k
aW5nQmFzZTo6Y3JlYXRlU2hhZGVyUHJvZ3JhbShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
Y29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRT
aGFkZXJTb3VyY2UpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIlByb2dyYW1CaW5kaW5nQmFzZTo6Y3Jl
YXRlU2hhZGVyUHJvZ3JhbSIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQo
IlByb2dyYW1CaW5kaW5nQmFzZTo6Y3JlYXRlU2hhZGVyUHJvZ3JhbSIsIHRoaXMsIDApOwogICAg
IHVuc2lnbmVkIHZlcnRleFNoYWRlciA9IGxvYWRTaGFkZXIoY29udGV4dCwgR3JhcGhpY3NDb250
ZXh0M0Q6OlZFUlRFWF9TSEFERVIsIHZlcnRleFNoYWRlclNvdXJjZSk7CiAgICAgaWYgKCF2ZXJ0
ZXhTaGFkZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHZlcnRleCBz
aGFkZXIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1Byb2dyYW1CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5oCmluZGV4IGJiNmZjOGRkZDkwZjhkNTVmMzVhNThk
MjEzM2ZkYTQ5ODJiZDIwYjcuLmEyMGYwZDZmYzU0OWM3NGE5Y2RlMWY5NDM1YzZiZmE0OWIzNTVm
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1Byb2dyYW1CaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuaApAQCAtMjksNyArMjksNiBAQAogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5j
bHVkZSAiVHJhY2VFdmVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJv
bWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJH
TExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDMyYmE2YTNiZWU1YTAyNGY1NWNjMDI3NjIyNTJiOTNi
NTgwNGUwZTQuLmRhMjM3YjhjNzI2ZTJlNjIyZWZkOTUyZmQzZGQwMjk1ZTM1NDU4MTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5
ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcApAQCAtMzQsMTAgKzM0LDEwIEBACiAKICNpbmNs
dWRlICJXZWJHTExheWVyQ2hyb21pdW0uaCIKIAorI2luY2x1ZGUgIkNvbXBvc2l0b3JUcmFjZUV2
ZW50LmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgotI2lu
Y2x1ZGUgIlRyYWNlRXZlbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNTUsNyAr
MTU1LDcgQEAgR3JhcGhpY3NDb250ZXh0M0QqIFdlYkdMTGF5ZXJDaHJvbWl1bTo6bGF5ZXJSZW5k
ZXJlckNvbnRleHQoKQogCiB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6cmF0ZUxpbWl0Q29udGV4
dChUaW1lcjxXZWJHTExheWVyQ2hyb21pdW0+KikKIHsKLSAgICBUUkFDRV9FVkVOVCgiV2ViR0xM
YXllckNocm9taXVtOjpyYXRlTGltaXRDb250ZXh0IiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRP
Ul9UUkFDRV9FVkVOVCgiV2ViR0xMYXllckNocm9taXVtOjpyYXRlTGltaXRDb250ZXh0IiwgdGhp
cywgMCk7CiAKICAgICBpZiAoIW1fY29udGV4dCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1Vw
RGlzcGxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0hlYWRzVXBEaXNwbGF5LmNwcAppbmRleCA4NjRjODhmMDc5YWUzMTdkZDBhMjJkZDczNDQ4
NzBjYmJjMjI0YTk2Li4xNTQ3YmI4MmViNDhhNTIxYzI1MjY3NDAyOWI5YTMyMjMzZmU4MzlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0hlYWRzVXBEaXNwbGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICNpbmNsdWRlICJDQ0hlYWRzVXBEaXNwbGF5
LmgiCiAKKyNpbmNsdWRlICJDb21wb3NpdG9yU3VwcG9ydC5oIgogI2luY2x1ZGUgIkV4dGVuc2lv
bnMzRENocm9taXVtLmgiCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5o
IgpAQCAtNTMsNyArNTQsNyBAQCBDQ0hlYWRzVXBEaXNwbGF5OjpDQ0hlYWRzVXBEaXNwbGF5KExh
eWVyUmVuZGVyZXJDaHJvbWl1bSogb3duZXIpCiAgICAgLCBtX2xheWVyUmVuZGVyZXIob3duZXIp
CiAgICAgLCBtX3VzZU1hcFN1YkZvclVwbG9hZHMob3duZXItPmNvbnRleHRTdXBwb3J0c01hcFN1
YigpKQogewotICAgIG1fYmVnaW5UaW1lSGlzdG9yeUluU2VjWzBdID0gY3VycmVudFRpbWUoKTsK
KyAgICBtX2JlZ2luVGltZUhpc3RvcnlJblNlY1swXSA9IENvbXBvc2l0b3JTdXBwb3J0OjpjdXJy
ZW50VGltZSgpOwogICAgIG1fYmVnaW5UaW1lSGlzdG9yeUluU2VjWzFdID0gbV9iZWdpblRpbWVI
aXN0b3J5SW5TZWNbMF07CiAgICAgZm9yIChpbnQgaSA9IDI7IGkgPCBrQmVnaW5GcmFtZUhpc3Rv
cnlTaXplOyBpKyspCiAgICAgICAgIG1fYmVnaW5UaW1lSGlzdG9yeUluU2VjW2ldID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJJbXBsLmNwcAppbmRleCA2NDE2OGMyYjRlZDc1YjQ2YzkzZmNiYTI5YTU1YmI4
M2IxOWUwMmYyLi41MTZjYWIyZjU1NDA0NzBkNDQ0YTUwZTJjNGRhNzAyNTAxZGNiMzk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckltcGwuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJjYy9D
Q0xheWVySW1wbC5oIgogCisjaW5jbHVkZSAiQ29tcG9zaXRvclRyYWNlRXZlbnQuaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKICNp
bmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKQEAgLTE4Myw3ICsxODQsNyBAQCB2b2lk
IENDTGF5ZXJJbXBsOjpkdW1wTGF5ZXJQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5k
ZW50KSBjb25zdAogCiB2b2lkIHNvcnRMYXllcnMoVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4g
Pjo6aXRlcmF0b3IgZmlyc3QsIFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID46Oml0ZXJhdG9y
IGVuZCwgQ0NMYXllclNvcnRlciogbGF5ZXJTb3J0ZXIpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkxh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6c29ydExheWVycyIsIDAsIDApOworICAgIENPTVBPU0lUT1Jf
VFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6c29ydExheWVycyIsIDAsIDApOwog
ICAgIGxheWVyU29ydGVyLT5zb3J0KGZpcnN0LCBlbmQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcAppbmRleCA2ZGRkOWJkNjM5NTBiYzQ3YzI3MDJkNDgwZTU4NWEwN2UyZDIz
ZjdiLi40ZGRhMjRkNDZkZDBjOGYzZGExMjgwMDBjOTE1MzljM2FiYThlZDY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTI2LDEwICsyNiwxMCBAQAogCiAjaW5jbHVkZSAi
Y2MvQ0NMYXllclRyZWVIb3N0LmgiCiAKKyNpbmNsdWRlICJDb21wb3NpdG9yVHJhY2VFdmVudC5o
IgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJMYXllclBhaW50ZXJDaHJv
bWl1bS5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIlRy
YWNlRXZlbnQuaCIKICNpbmNsdWRlICJUcmVlU3luY2hyb25pemVyLmgiCiAjaW5jbHVkZSAiY2Mv
Q0NMYXllclRyZWVIb3N0Q29tbW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1w
bC5oIgpAQCAtODgsNyArODgsNyBAQCBib29sIENDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZSgp
CiBDQ0xheWVyVHJlZUhvc3Q6On5DQ0xheWVyVHJlZUhvc3QoKQogewogICAgIEFTU0VSVChDQ1By
b3h5Ojppc01haW5UaHJlYWQoKSk7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6
fkNDTGF5ZXJUcmVlSG9zdCIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQo
IkNDTGF5ZXJUcmVlSG9zdDo6fkNDTGF5ZXJUcmVlSG9zdCIsIHRoaXMsIDApOwogICAgIG1fcHJv
eHktPnN0b3AoKTsKICAgICBtX3Byb3h5LmNsZWFyKCk7CiAgICAgY2xlYXJQZW5kaW5nVXBkYXRl
KCk7CkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmFuaW1hdGVBbmRM
YXlvdXQoZG91YmxlIGZyYW1lQmVnaW5UaW1lKQogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNvbW1p
dFRvT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkKIHsKICAgICBBU1NF
UlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwotICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJl
ZUhvc3Q6OmNvbW1pdFRvIiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgi
Q0NMYXllclRyZWVIb3N0Ojpjb21taXRUbyIsIHRoaXMsIDApOwogICAgIGhvc3RJbXBsLT5zZXRT
b3VyY2VGcmFtZU51bWJlcihmcmFtZU51bWJlcigpKTsKIAogICAgIGNvbnRlbnRzVGV4dHVyZU1h
bmFnZXIoKS0+cmVkdWNlTWVtb3J5VG9MaW1pdChUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0
Qnl0ZXMoKSk7CkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldFpv
b21BbmltYXRvclRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgem9vbSkKIHZv
aWQgQ0NMYXllclRyZWVIb3N0OjpzZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpCiB7CiAjaWYgVVNF
KFRIUkVBREVEX0NPTVBPU0lUSU5HKQotICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6
OnNldE5lZWRzUmVkcmF3IiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgi
Q0NMYXllclRyZWVIb3N0OjpzZXROZWVkc1JlZHJhdyIsIHRoaXMsIDApOwogICAgIG1fcHJveHkt
PnNldE5lZWRzQ29tbWl0QW5kUmVkcmF3KCk7CiAjZWxzZQogICAgIG1fY2xpZW50LT5zY2hlZHVs
ZUNvbXBvc2l0ZSgpOwpAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1
cGRhdGVMYXllcnMoKQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVy
Q2hyb21pdW0qIHJvb3RMYXllcikKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0
Ojp1cGRhdGVMYXllcnMiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJD
Q0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyIsIHRoaXMsIDApOwogCiAgICAgaWYgKCFyb290
TGF5ZXItPnJlbmRlclN1cmZhY2UoKSkKICAgICAgICAgcm9vdExheWVyLT5jcmVhdGVSZW5kZXJT
dXJmYWNlKCk7CkBAIC0yOTAsNyArMjkwLDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0
ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIpCiAgICAgcm9vdFJlbmRlclN1cmZhY2Ut
PmNsZWFyTGF5ZXJMaXN0KCk7CiAKICAgICB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVy
VHJlZUhvc3Q6OnVwZGF0ZUxheWVyczo6Y2FsY0RyYXdFdGMiLCB0aGlzLCAwKTsKKyAgICAgICAg
Q09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnM6OmNh
bGNEcmF3RXRjIiwgdGhpcywgMCk7CiAgICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2Fs
Y3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllciwgcm9vdExheWVyLCBt
X3pvb21BbmltYXRvclRyYW5zZm9ybSwgbV96b29tQW5pbWF0b3JUcmFuc2Zvcm0sIG1fdXBkYXRl
TGlzdCwgcm9vdFJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLCBsYXllclJlbmRlcmVyQ2FwYWJp
bGl0aWVzKCkubWF4VGV4dHVyZVNpemUpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmNwcAppbmRleCA4MWI1ZjdhZTU0YzcwY2Q0OTFmZTRlMzBhOWYyNTA2YWIz
NzdjM2U1Li41N2Y2ODJmMTZlZDRlYmI5ZWQ5MjViZTk4Y2Y5MjNiOTM3ZTU3MzE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMjYsMTAgKzI2LDEwIEBACiAK
ICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAKKyNpbmNsdWRlICJDb21wb3Np
dG9yVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRC5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCi0j
aW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgog
I2luY2x1ZGUgImNjL0NDTWFpblRocmVhZC5oIgogI2luY2x1ZGUgImNjL0NDTWFpblRocmVhZFRh
c2suaCIKQEAgLTU0LDcgKzU0LDcgQEAgQ0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVI
b3N0SW1wbChjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncykKIENDTGF5ZXJUcmVlSG9zdEltcGw6
On5DQ0xheWVyVHJlZUhvc3RJbXBsKCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhy
ZWFkKCkpOwotICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3RJbXBsOjp+Q0NMYXllclRy
ZWVIb3N0SW1wbCgpIiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NM
YXllclRyZWVIb3N0SW1wbDo6fkNDTGF5ZXJUcmVlSG9zdEltcGwoKSIsIHRoaXMsIDApOwogICAg
IGlmIChtX2xheWVyUmVuZGVyZXIpCiAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+Y2xvc2UoKTsK
IH0KQEAgLTc0LDcgKzc0LDcgQEAgR3JhcGhpY3NDb250ZXh0M0QqIENDTGF5ZXJUcmVlSG9zdElt
cGw6OmNvbnRleHQoKQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMoKQog
ewotICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzIiwgdGhp
cywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0SW1wbDo6
ZHJhd0xheWVycyIsIHRoaXMsIDApOwogICAgIEFTU0VSVChtX2xheWVyUmVuZGVyZXIpOwogICAg
IGlmIChtX2xheWVyUmVuZGVyZXItPnJvb3RMYXllcigpKQogICAgICAgICBtX2xheWVyUmVuZGVy
ZXItPmRyYXdMYXllcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHAKaW5kZXggYjdlY2NlY2QxMGEwOGI4ZWJh
ODc2NWYwODk4ZmViMmQzMTExYjI4Zi4uMmZjNzFhZWViZmEyYTM3MzAyMzQ1NzgxMDg2NDIxMGZi
NGI5MDZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKIAogI2luY2x1ZGUg
ImNjL0NDUHJveHkuaCIKIAotI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJjYy9D
Q0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJjYy9DQ01haW5UaHJlYWRUYXNrLmgiCiAjaW5j
bHVkZSAiY2MvQ0NUaHJlYWRUYXNrLmgiCkBAIC00MSwxMSArNDAsMTIgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogbmFtZXNwYWNlIHsKIGJvb2wgZmFrZUltcGxUaHJlYWQgPSBmYWxzZTsKIHN0YXRp
YyBXVEY6OlRocmVhZElkZW50aWZpZXIgaW1wbFRocmVhZElEOworc3RhdGljIFdURjo6VGhyZWFk
SWRlbnRpZmllciBtYWluVGhyZWFkSUQ7CiB9CiAKIGJvb2wgQ0NQcm94eTo6aXNNYWluVGhyZWFk
KCkKIHsKLSAgICByZXR1cm4gOjppc01haW5UaHJlYWQoKSAmJiAhZmFrZUltcGxUaHJlYWQ7Cisg
ICAgcmV0dXJuICFmYWtlSW1wbFRocmVhZCAmJiBjdXJyZW50VGhyZWFkKCkgPT0gbWFpblRocmVh
ZElEOwogfQogCiBib29sIENDUHJveHk6OmlzSW1wbFRocmVhZCgpCkBAIC02Myw2ICs2MywxMSBA
QCB2b2lkIENDUHJveHk6OnNldEltcGxUaHJlYWQoV1RGOjpUaHJlYWRJZGVudGlmaWVyIGlkKQog
ICAgIGltcGxUaHJlYWRJRCA9IGlkOwogfQogCit2b2lkIENDUHJveHk6OnNldE1haW5UaHJlYWQo
V1RGOjpUaHJlYWRJZGVudGlmaWVyIGlkKQoreworICAgIG1haW5UaHJlYWRJRCA9IGlkOworfQor
CiAjZW5kaWYgLy8gIU5ERUJVRwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKaW5kZXggYjIyMmI5OTg4ZDgxN2Y0
OTVjMmEzYTBmMDVjNGNhMWNlZGFkZDE2My4uODFhNWQyNDg0YmRkZWU3NWU3OWQ2M2ExMWM0ODE1
NDBhYjUzMjEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaApAQCAtODQsNiArODQsNyBAQCBwdWJsaWM6CiAjaWZu
ZGVmIE5ERUJVRwogICAgIHN0YXRpYyB2b2lkIHNldEltcGxUaHJlYWQoYm9vbCk7CiAgICAgc3Rh
dGljIHZvaWQgc2V0SW1wbFRocmVhZChXVEY6OlRocmVhZElkZW50aWZpZXIpOworICAgIHN0YXRp
YyB2b2lkIHNldE1haW5UaHJlYWQoV1RGOjpUaHJlYWRJZGVudGlmaWVyKTsKICNlbmRpZgogCiBw
cm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IDk3
YmNlYTUyYTIyNGUxZWFlZWZjNTA0YWU1MDk3YmJmODVkYWQ1MTkuLmJmN2FiOTY3MWI5ZTY2OWMy
N2VmMjQ4MzE5YjU5ZDA3MDkyOWUxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuY3BwCkBAIC0yNiw5ICsyNiw5IEBACiAKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmgiCiAKKyNpbmNsdWRlICJDb21wb3NpdG9yVHJhY2VFdmVudC5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgi
Ci0jaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5o
IgogI2luY2x1ZGUgImNjL0NDTWFpblRocmVhZFRhc2suaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVu
dFRpbWUuaD4KQEAgLTY1LDggKzY1LDggQEAgQ0NTaW5nbGVUaHJlYWRQcm94eTo6Q0NTaW5nbGVU
aHJlYWRQcm94eShDQ0xheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QpCiAgICAgLCBtX2dyYXBo
aWNzQ29udGV4dExvc3QoZmFsc2UpCiAgICAgLCBtX3RpbWVzUmVjcmVhdGVTaG91bGRGYWlsKDAp
CiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDU2luZ2xlVGhyZWFkUHJveHk6OkNDU2luZ2xlVGhyZWFk
UHJveHkiLCB0aGlzLCAwKTsKLSAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwor
ICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDU2luZ2xlVGhyZWFkUHJveHk6OkNDU2luZ2xl
VGhyZWFkUHJveHkiLCB0aGlzLCAwKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogfQog
CiB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnN0YXJ0KCkKQEAgLTc3LDggKzc3LDggQEAgdm9p
ZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdGFydCgpCiAKIENDU2luZ2xlVGhyZWFkUHJveHk6On5D
Q1NpbmdsZVRocmVhZFByb3h5KCkKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NTaW5nbGVUaHJlYWRQ
cm94eTo6fkNDU2luZ2xlVGhyZWFkUHJveHkiLCB0aGlzLCAwKTsKLSAgICBBU1NFUlQoQ0NQcm94
eTo6aXNNYWluVGhyZWFkKCkpOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDU2luZ2xl
VGhyZWFkUHJveHk6On5DQ1NpbmdsZVRocmVhZFByb3h5IiwgdGhpcywgMCk7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1fbGF5ZXJUcmVlSG9zdEltcGwgJiYgIW1f
bGF5ZXJUcmVlSG9zdCk7IC8vIG1ha2Ugc3VyZSBzdG9wKCkgZ290IGNhbGxlZC4KIH0KIApAQCAt
MTg2LDggKzE4Niw4IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0TmVlZHNSZWRyYXco
KQogCiB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnN0b3AoKQogewotICAgIFRSQUNFX0VWRU5U
KCJDQ1NpbmdsZVRocmVhZFByb3h5OjpzdG9wIiwgdGhpcywgMCk7Ci0gICAgQVNTRVJUKENDUHJv
eHk6OmlzTWFpblRocmVhZCgpKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJDQ1Npbmds
ZVRocmVhZFByb3h5OjpzdG9wIiwgdGhpcywgMCk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICB7CiAgICAgICAgIFNjb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICAgICAgbV9s
YXllclRyZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25DQ1RocmVhZChtX2xheWVyVHJl
ZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuY3BwCmluZGV4IGU0MDk4MjNiYTc1NGZkZTFkOGI5OTQwZTkwNDJkNTk0Njk1MDBiMTIu
LjY4ODcyOGE3YTczYzU0YTJiMjAwOTMyMmJjNjg2OGE5N2ExYjA2ZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwCkBAIC0yNiw4ICsyNiw4IEBACiAKICNpbmNsdWRlICJjYy9DQ1RocmVh
ZFByb3h5LmgiCiAKKyNpbmNsdWRlICJDb21wb3NpdG9yVHJhY2VFdmVudC5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUg
ImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgImNjL0NDTWFpblRocmVhZFRhc2suaCIK
ICNpbmNsdWRlICJjYy9DQ1RocmVhZFRhc2suaCIKQEAgLTU4LDcgKzU4LDcgQEAgQ0NUaHJlYWRQ
cm94eTo6Q0NUaHJlYWRQcm94eShDQ0xheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QpCiAgICAg
LCBtX2RyYXdUYXNrUG9zdGVkT25DQ1RocmVhZChmYWxzZSkKICAgICAsIG1fcmVkcmF3UmVxdWVz
dGVkT25DQ1RocmVhZChmYWxzZSkKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6
Q0NUaHJlYWRQcm94eSIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkND
VGhyZWFkUHJveHk6OkNDVGhyZWFkUHJveHkiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogICAgIG51bVByb3hpZXMrKzsKICAgICBpZiAoIWNjVGhyZWFkKSB7CkBAIC03
MSw3ICs3MSw3IEBAIENDVGhyZWFkUHJveHk6OkNDVGhyZWFkUHJveHkoQ0NMYXllclRyZWVIb3N0
KiBsYXllclRyZWVIb3N0KQogCiBDQ1RocmVhZFByb3h5Ojp+Q0NUaHJlYWRQcm94eSgpCiB7Ci0g
ICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6On5DQ1RocmVhZFByb3h5IiwgdGhpcywgMCk7
CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6fkNDVGhyZWFkUHJv
eHkiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCgh
bV9zdGFydGVkKTsKIApAQCAtMTg5LDcgKzE4OSw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0
TmVlZHNDb21taXQoKQogICAgIGlmIChtX2NvbW1pdFJlcXVlc3RlZCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0IiwgdGhp
cywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2V0TmVl
ZHNDb21taXQiLCB0aGlzLCAwKTsKICAgICBtX2NvbW1pdFJlcXVlc3RlZCA9IHRydWU7CiAgICAg
Y2NUaHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94
eTo6dXBkYXRlU2NoZWR1bGVyU3RhdGVPbkNDVGhyZWFkLCBtX2NvbW1pdFJlcXVlc3RlZCwgdHJ1
ZSkpOwogfQpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHND
b21taXRBbmRSZWRyYXcoKQogICAgICAgICByZXR1cm47CiAgICAgbV9jb21taXRSZXF1ZXN0ZWQg
PSB0cnVlOwogCi0gICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0
QW5kUmVkcmF3IiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NUaHJl
YWRQcm94eTo6c2V0TmVlZHNDb21taXRBbmRSZWRyYXciLCB0aGlzLCAwKTsKICAgICBjY1RocmVh
ZC0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5Ojp1cGRh
dGVTY2hlZHVsZXJTdGF0ZU9uQ0NUaHJlYWQsIG1fY29tbWl0UmVxdWVzdGVkLCB0cnVlKSk7CiB9
CiAKQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3
KCkKICAgICAvLyB0aHJlYWQuIFRoaXMgc2hvdWxkIG5vdCBiZSBtdWNoIG9mIGEgcHJvYmxlbSBi
ZWNhdXNlIGNhbGxzIHRvCiAgICAgLy8gc2V0TmVlZHNSZWRyYXcgbWVzc2FnZXMgYXJlIHVuY29t
bW9uIChvbmx5IHRyaWdnZXJlZCBieSBXTV9QQUlOVC9ldGMpLAogICAgIC8vIGNvbXBhcmVkIHRv
IHNldE5lZWRzQ29tbWl0QW5kUmVkcmF3IG1lc3NhZ2VzLgotICAgIFRSQUNFX0VWRU5UKCJDQ1Ro
cmVhZFByb3h5OjpzZXROZWVkc1JlZHJhdyIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJB
Q0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3IiwgdGhpcywgMCk7CiAgICAg
Y2NUaHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94
eTo6dXBkYXRlU2NoZWR1bGVyU3RhdGVPbkNDVGhyZWFkLCBmYWxzZSwgdHJ1ZSkpOwogfQogCkBA
IC0yMzMsNyArMjMzLDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzdGFydCgpCiAKIHZvaWQgQ0NU
aHJlYWRQcm94eTo6c3RvcCgpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnN0
b3AiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5
OjpzdG9wIiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NF
UlQobV9zdGFydGVkKTsKIApAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6
c3RvcCgpCiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25DQ1RocmVh
ZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NU
aHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25DQ1RocmVhZCIsIHRoaXMsIDApOworICAg
IENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmZpbmlzaEFsbFJlbmRlcmlu
Z09uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwogICAg
IEFTU0VSVCghbV9iZWdpbkZyYW1lQW5kQ29tbWl0UGVuZGluZ09uQ0NUaHJlYWQpOwogICAgIGlm
IChtX3JlZHJhd1JlcXVlc3RlZE9uQ0NUaHJlYWQpIHsKQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lk
IENDVGhyZWFkUHJveHk6Om9idGFpbkJlZ2luRnJhbWVBbmRDb21taXRUYXNrRnJvbUNDVGhyZWFk
KENDQ29tcGxldGlvbkV2ZW50KgogCiBQYXNzT3duUHRyPENDTWFpblRocmVhZDo6VGFzaz4gQ0NU
aHJlYWRQcm94eTo6Y3JlYXRlQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tPbkNDVGhyZWFkKCkKIHsK
LSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6Y3JlYXRlQmVnaW5GcmFtZUFuZENvbW1p
dFRhc2tPbkNDVGhyZWFkIiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgi
Q0NUaHJlYWRQcm94eTo6Y3JlYXRlQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tPbkNDVGhyZWFkIiwg
dGhpcywgMCk7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBkb3VibGUgZnJhbWVC
ZWdpblRpbWUgPSBjdXJyZW50VGltZSgpOwogICAgIG1fYmVnaW5GcmFtZUFuZENvbW1pdFBlbmRp
bmdPbkNDVGhyZWFkID0gdHJ1ZTsKQEAgLTI5MSw3ICsyOTEsNyBAQCBQYXNzT3duUHRyPENDTWFp
blRocmVhZDo6VGFzaz4gQ0NUaHJlYWRQcm94eTo6Y3JlYXRlQmVnaW5GcmFtZUFuZENvbW1pdFRh
c2tPbkNDVAogCiB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNl
cXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbWUpCiB7Ci0gICAgVFJBQ0VfRVZFTlQo
IkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQiLCB0aGlzLCAwKTsKKyAgICBDT01Q
T1NJVE9SX1RSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0Iiwg
dGhpcywgMCk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoIW1fbGF5ZXJU
cmVlSG9zdCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgQ0NUaHJl
YWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBm
cmFtZUJlZ2luVGltCiAgICAgLy8gRHJvcCBiZWdpbkZyYW1lQW5kQ29tbWl0IGNhbGxzIHRoYXQg
b2NjdXIgb3V0IG9mIHNlcXVlbmNlLiBTZWUgY3JlYXRlQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tP
bkNDVGhyZWFkIGZvcgogICAgIC8vIGFuIGV4cGxhbmF0aW9uIG9mIGhvdyBvdXQtb2Ytc2VxdWVu
Y2UgYmVnaW5GcmFtZUFuZENvbW1pdCB0YXNrcyBjYW4gb2NjdXIuCiAgICAgaWYgKHNlcXVlbmNl
TnVtYmVyIDwgbV9sYXN0RXhlY3V0ZWRCZWdpbkZyYW1lQW5kQ29tbWl0U2VxdWVuY2VOdW1iZXIp
IHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkVhcmx5T3V0X1N0YWxlQmVnaW5GcmFtZUFuZENvbW1p
dCIsIHRoaXMsIDApOworICAgICAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJFYXJseU91dF9T
dGFsZUJlZ2luRnJhbWVBbmRDb21taXQiLCB0aGlzLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBtX2xhc3RFeGVjdXRlZEJlZ2luRnJhbWVBbmRDb21taXRTZXF1ZW5jZU51bWJlciA9
IHNlcXVlbmNlTnVtYmVyOwpAQCAtMzA4LDcgKzMwOCw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6
YmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2lu
VGltCiAKICAgICAvLyBGSVhNRTogcmVjcmVhdGUgdGhlIGNvbnRleHQgaWYgaXQgd2FzIHJlcXVl
c3RlZCBieSB0aGUgaW1wbCB0aHJlYWQKICAgICB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xh
eWVyVHJlZUhvc3Q6OmFuaW1hdGVBbmRMYXlvdXQiLCB0aGlzLCAwKTsKKyAgICAgICAgQ09NUE9T
SVRPUl9UUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0OjphbmltYXRlQW5kTGF5b3V0IiwgdGhp
cywgMCk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+YW5pbWF0ZUFuZExheW91dChmcmFtZUJl
Z2luVGltZSk7CiAgICAgfQogCkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5
OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVn
aW5UaW0KIAogICAgIHsKICAgICAgICAgLy8gQmxvY2tpbmcgY2FsbCB0byBDQ1RocmVhZFByb3h5
Ojpjb21taXRPbkNDVGhyZWFkCi0gICAgICAgIFRSQUNFX0VWRU5UKCJjb21taXQiLCB0aGlzLCAw
KTsKKyAgICAgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiY29tbWl0IiwgdGhpcywgMCk7CiAg
ICAgICAgIENDQ29tcGxldGlvbkV2ZW50IGNvbXBsZXRpb247CiAgICAgICAgIGNjVGhyZWFkLT5w
b3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmNvbW1pdE9u
Q0NUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24pKSk7CiAgICAgICAg
IGNvbXBsZXRpb24ud2FpdCgpOwpAQCAtMzM2LDcgKzMzNiw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94
eTo6YmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJl
Z2luVGltCiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6Y29tbWl0T25DQ1RocmVhZChDQ0NvbXBsZXRp
b25FdmVudCogY29tcGxldGlvbikKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6
YmVnaW5GcmFtZUFuZENvbW1pdE9uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9S
X1RSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0T25DQ1RocmVh
ZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1f
YmVnaW5GcmFtZUFuZENvbW1pdFBlbmRpbmdPbkNDVGhyZWFkKTsKICAgICBtX2JlZ2luRnJhbWVB
bmRDb21taXRQZW5kaW5nT25DQ1RocmVhZCA9IGZhbHNlOwpAQCAtMzU5LDcgKzM1OSw3IEBAIHZv
aWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVEcmF3VGFza09uQ0NUaHJlYWQoKQogICAgIEFTU0VS
VChpc0ltcGxUaHJlYWQoKSk7CiAgICAgaWYgKG1fZHJhd1Rhc2tQb3N0ZWRPbkNDVGhyZWFkKQog
ICAgICAgICByZXR1cm47Ci0gICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxl
RHJhd1Rhc2tPbkNDVGhyZWFkIiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVO
VCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVEcmF3VGFza09uQ0NUaHJlYWQiLCB0aGlzLCAwKTsK
ICAgICBBU1NFUlQobV9sYXllclRyZWVIb3N0SW1wbCk7CiAgICAgbV9kcmF3VGFza1Bvc3RlZE9u
Q0NUaHJlYWQgPSB0cnVlOwogICAgIGNjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRh
c2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmRyYXdMYXllcnNBbmRQcmVzZW50T25DQ1RocmVhZCkp
OwpAQCAtMzY3LDcgKzM2Nyw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVEcmF3VGFz
a09uQ0NUaHJlYWQoKQogCiB2b2lkIENDVGhyZWFkUHJveHk6OmRyYXdMYXllcnNBbmRQcmVzZW50
T25DQ1RocmVhZCgpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmRyYXdMYXll
cnNPbkNDVGhyZWFkIiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NU
aHJlYWRQcm94eTo6ZHJhd0xheWVyc09uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQo
aXNJbXBsVGhyZWFkKCkpOwogICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbCkKICAgICAgICAg
cmV0dXJuOwpAQCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6ZHJhd0xheWVy
c0FuZFByZXNlbnRPbkNDVGhyZWFkKCkKIAogdm9pZCBDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJz
T25DQ1RocmVhZCgpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmRyYXdMYXll
cnNPbkNDVGhyZWFkIiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NU
aHJlYWRQcm94eTo6ZHJhd0xheWVyc09uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQo
aXNJbXBsVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX2xheWVyVHJlZUhvc3RJbXBsKTsKIApAQCAt
MzkwLDcgKzM5MCw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6ZHJhd0xheWVyc09uQ0NUaHJlYWQo
KQogCiB2b2lkIENDVGhyZWFkUHJveHk6OnVwZGF0ZVNjaGVkdWxlclN0YXRlT25DQ1RocmVhZChi
b29sIGNvbW1pdFJlcXVlc3RlZCwgYm9vbCByZWRyYXdSZXF1ZXN0ZWQpCiB7Ci0gICAgVFJBQ0Vf
RVZFTlQoIkNDVGhyZWFkUHJveHk6OnVwZGF0ZVNjaGVkdWxlclN0YXRlT25DQ1RocmVhZCIsIHRo
aXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnVwZGF0
ZVNjaGVkdWxlclN0YXRlT25DQ1RocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxU
aHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fbGF5ZXJUcmVlSG9zdEltcGwpOwogCkBAIC00MDksNyAr
NDA5LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojp1cGRhdGVTY2hlZHVsZXJTdGF0ZU9uQ0NUaHJl
YWQoYm9vbCBjb21taXRSZXF1ZXN0ZWQsIGJvb2wgcmUKIAogdm9pZCBDQ1RocmVhZFByb3h5Ojpp
bml0aWFsaXplSW1wbE9uQ0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCiB7
Ci0gICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVJbXBsT25DQ1RocmVh
ZCIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6
OmluaXRpYWxpemVJbXBsT25DQ1RocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxU
aHJlYWQoKSk7CiAgICAgbV9sYXllclRyZWVIb3N0SW1wbCA9IG1fbGF5ZXJUcmVlSG9zdC0+Y3Jl
YXRlTGF5ZXJUcmVlSG9zdEltcGwoKTsKICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKQEAgLTQx
Nyw3ICs0MTcsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVJbXBsT25DQ1RocmVh
ZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKIAogdm9pZCBDQ1RocmVhZFByb3h5Ojpp
bml0aWFsaXplTGF5ZXJSZW5kZXJlck9uQ0NUaHJlYWQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHRQdHIsIENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBib29sKiBpbml0aWFsaXplU3Vj
Y2VlZGVkLCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKiBjYXBhYmlsaXRpZXMpCiB7Ci0gICAg
VFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVyT25DQ1Ro
cmVhZCIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJv
eHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVyT25DQ1RocmVhZCIsIHRoaXMsIDApOwogICAgIEFT
U0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250
ZXh0KGFkb3B0UmVmKGNvbnRleHRQdHIpKTsKICAgICAqaW5pdGlhbGl6ZVN1Y2NlZWRlZCA9IG1f
bGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQpOwpAQCAt
NDI4LDcgKzQyOCw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVy
ZXJPbkNDVGhyZWFkKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0CiAKIHZvaWQgQ0NUaHJlYWRQ
cm94eTo6bGF5ZXJUcmVlSG9zdENsb3NlZE9uQ0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNv
bXBsZXRpb24pCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmxheWVyVHJlZUhv
c3RDbG9zZWRPbkNDVGhyZWFkIiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVO
VCgiQ0NUaHJlYWRQcm94eTo6bGF5ZXJUcmVlSG9zdENsb3NlZE9uQ0NUaHJlYWQiLCB0aGlzLCAw
KTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwogICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVs
ZXRlQ29udGVudHNUZXh0dXJlc09uQ0NUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVu
dHNUZXh0dXJlQWxsb2NhdG9yKCkpOwogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwuY2xlYXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggY2I4ODZlZGM5ZDMzNGRiZmI1ZGM3N2JjMTZh
ZGNiYjgzOGVlZTY3Ny4uZjA2OGJjMTIwM2E5ODI0Njk3NmViNzlkZDA0NWQxYWFjZjk1OTc5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMS0wOS0yOCAg
QW50b2luZSBMYWJvdXIgIDxwaW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2VwYXJhdGUg
Y29tcG9zaXRvciBwbGF0Zm9ybSBzdXBwb3J0IGZyb20gd2Via2l0J3MgcGxhdGZvcm0gc3VwcG9y
dC4KKyAgICAgICAgVGhpcyBpcyBzbyB0aGF0IHRoZSBjb21wb3NpdG9yIGNhbiBiZSB1c2VkIGlu
IGEgdGhyZWFkIHNlcGFyYXRlIGZyb20gdGhlCisgICAgICAgIG1haW4gd2Via2l0IHRocmVhZC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MDQ4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMv
V2ViS2l0Lmg6CisgICAgICAgICogc3JjL1dlYktpdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YktpdENvbXBvc2l0b3JTdXBwb3J0Ojp+V2ViS2l0Q29tcG9zaXRvclN1cHBvcnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJLaXRDb21wb3NpdG9yU3VwcG9ydDo6Y3VycmVudFRpbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJLaXRDb21wb3NpdG9yU3VwcG9ydDo6aGlzdG9ncmFtQ3VzdG9tQ291bnRz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0Q29tcG9zaXRvclN1cHBvcnQ6OnRyYWNlRXZlbnRC
ZWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYktpdENvbXBvc2l0b3JTdXBwb3J0Ojp0cmFjZUV2
ZW50RW5kKToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZVdpdGhvdXRWOCk6CisgICAgICAg
IChXZWJLaXQ6OmluaXRpYWxpemVXaXRob3V0VjhBbmRDb21wb3NpdG9yKToKKyAgICAgICAgKFdl
YktpdDo6c2h1dGRvd24pOgorCiAyMDExLTA5LTI4ICBGYWR5IFNhbXVlbCAgPGZzYW11ZWxAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gU2VwZXJhdGUgR1RLIHNwZWNpZmljIEd5
cCBydWxlcyBmcm9tIFgxMSBHeXAgcnVsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYktpdC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
S2l0LmgKaW5kZXggOTkxZDU0MzI3NDBjODU0MDc4MWY1NGVjNDgyNjkxMjRjMWUxOWY5MS4uMDJh
NjBmODI4MTBiMWViZjNjZmIyODBjOTI2NzViYjU0YzIzZDBhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViS2l0LmgKQEAgLTQ5LDYgKzQ5LDE0IEBAIFdFQktJVF9FWFBPUlQgdm9p
ZCBpbml0aWFsaXplKFdlYktpdFBsYXRmb3JtU3VwcG9ydCopOwogLy8gVGhpcyBpcyBhIHNwZWNp
YWwgdmFyaWFudCBvZiBpbml0aWFsaXplIHRoYXQgZG9lcyBub3QgaW50aXRpYWxpemUgVjguCiBX
RUJLSVRfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZVdpdGhvdXRWOChXZWJLaXRQbGF0Zm9ybVN1cHBv
cnQqKTsKIAorLy8gTXVzdCBiZSBjYWxsZWQgb24gdGhlIHRocmVhZCB0aGF0IHdpbGwgYmUgdGhl
IG1haW4gV2ViS2l0IHRocmVhZCBiZWZvcmUKKy8vIHVzaW5nIGFueSBvdGhlciBXZWJLaXQgQVBJ
cy4gVGhlIHByb3ZpZGVkIFdlYktpdFBsYXRmb3JtU3VwcG9ydDsgbXVzdCBiZQorLy8gbm9uLW51
bGwgYW5kIG11c3QgcmVtYWluIHZhbGlkIHVudGlsIHRoZSBjdXJyZW50IHRocmVhZCBjYWxscyBz
aHV0ZG93bi4KKy8vCisvLyBUaGlzIGlzIGEgc3BlY2lhbCB2YXJpYW50IG9mIGluaXRpYWxpemUg
dGhhdCBkb2VzIG5vdCBpbnRpdGlhbGl6ZSBWOCBub3IgdGhlCisvLyBjb21wb3NpdG9yLgorV0VC
S0lUX0VYUE9SVCB2b2lkIGluaXRpYWxpemVXaXRob3V0VjhBbmRDb21wb3NpdG9yKFdlYktpdFBs
YXRmb3JtU3VwcG9ydCopOworCiAvLyBPbmNlIHNodXRkb3duLCB0aGUgV2ViS2l0UGxhdGZvcm1T
dXBwb3J0IHBhc3NlZCB0byBpbml0aWFsaXplIHdpbGwgbm8gbG9uZ2VyCiAvLyBiZSBhY2Nlc3Nl
ZC4gTm8gb3RoZXIgV2ViS2l0IG9iamVjdHMgc2hvdWxkIGJlIGluIHVzZSB3aGVuIHRoaXMgZnVu
Y3Rpb24gaXMKIC8vIGNhbGxlZC4gQW55IGJhY2tncm91bmQgdGhyZWFkcyBjcmVhdGVkIGJ5IFdl
YktpdCBhcmUgcHJvbWlzZWQgdG8gYmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYktpdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3Bw
CmluZGV4IDQyM2M0NWFlMzI0ZTE1YjdiMmQ0NGUwZDVkYWM0M2ZjOWMzNDEwNGIuLjY5YWQ4NTc1
ZGFjMmY0MzZjYmQzMmQ3YjI4YjRkNGMyNTI3NTRmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViS2l0LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIldlYktpdC5oIgogCisjaW5jbHVkZSAiQ29tcG9zaXRvclN1cHBvcnQuaCIKICNpbmNs
dWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuaCIKQEAgLTU3LDYgKzU4LDMyIEBAIHN0YXRpYyBib29sIHNfd2ViS2l0SW5p
dGlhbGl6ZWQgPSBmYWxzZTsKIHN0YXRpYyBXZWJLaXRQbGF0Zm9ybVN1cHBvcnQqIHNfd2ViS2l0
UGxhdGZvcm1TdXBwb3J0ID0gMDsKIHN0YXRpYyBib29sIHNfbGF5b3V0VGVzdE1vZGUgPSBmYWxz
ZTsKIAorY2xhc3MgV2ViS2l0Q29tcG9zaXRvclN1cHBvcnQgOiBwdWJsaWMgV2ViQ29yZTo6Q29t
cG9zaXRvclN1cHBvcnREZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViS2l0Q29t
cG9zaXRvclN1cHBvcnQoKSB7IH0KKworICAgIHZpcnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBzX3dlYktpdFBsYXRmb3JtU3VwcG9ydC0+Y3VycmVudFRp
bWUoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaGlzdG9ncmFtQ3VzdG9tQ291bnRzKGNv
bnN0IGNoYXIqIG5hbWUsIGludCBzYW1wbGUsIGludCBtaW4sIGludCBtYXgsIGludCBidWNrZXRD
b3VudCkKKyAgICB7CisgICAgICAgIHNfd2ViS2l0UGxhdGZvcm1TdXBwb3J0LT5oaXN0b2dyYW1D
dXN0b21Db3VudHMobmFtZSwgc2FtcGxlLCBtaW4sIG1heCwgYnVja2V0Q291bnQpOworICAgIH0K
KworICAgIHZpcnR1YWwgdm9pZCB0cmFjZUV2ZW50QmVnaW4oY29uc3QgY2hhciogbmFtZSwgdm9p
ZCogaWQsIGNvbnN0IGNoYXIqIGV4dHJhKQorICAgIHsKKyAgICAgICAgc193ZWJLaXRQbGF0Zm9y
bVN1cHBvcnQtPnRyYWNlRXZlbnRCZWdpbihuYW1lLCBpZCwgZXh0cmEpOworICAgIH0KKworICAg
IHZpcnR1YWwgdm9pZCB0cmFjZUV2ZW50RW5kKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBj
b25zdCBjaGFyKiBleHRyYSkKKyAgICB7CisgICAgICAgIHNfd2ViS2l0UGxhdGZvcm1TdXBwb3J0
LT50cmFjZUV2ZW50RW5kKG5hbWUsIGlkLCBleHRyYSk7CisgICAgfQorfTsKK3N0YXRpYyBXZWJL
aXRDb21wb3NpdG9yU3VwcG9ydCogc19jb21wb3NpdG9yU3VwcG9ydCA9IDA7CisKIHN0YXRpYyBi
b29sIGdlbmVyYXRlRW50cm9weSh1bnNpZ25lZCBjaGFyKiBidWZmZXIsIHNpemVfdCBsZW5ndGgp
CiB7CiAgICAgaWYgKHNfd2ViS2l0UGxhdGZvcm1TdXBwb3J0KSB7CkBAIC03Nyw2ICsxMDQsMTQg
QEAgdm9pZCBpbml0aWFsaXplKFdlYktpdFBsYXRmb3JtU3VwcG9ydCogd2ViS2l0UGxhdGZvcm1T
dXBwb3J0KQogCiB2b2lkIGluaXRpYWxpemVXaXRob3V0VjgoV2ViS2l0UGxhdGZvcm1TdXBwb3J0
KiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQpCiB7CisgICAgaW5pdGlhbGl6ZVdpdGhvdXRWOEFuZENv
bXBvc2l0b3Iod2ViS2l0UGxhdGZvcm1TdXBwb3J0KTsKKyAgICBBU1NFUlQoIVdlYkNvcmU6OkNv
bXBvc2l0b3JTdXBwb3J0OjpkZWxlZ2F0ZSgpKTsKKyAgICBzX2NvbXBvc2l0b3JTdXBwb3J0ID0g
bmV3IFdlYktpdENvbXBvc2l0b3JTdXBwb3J0OworICAgIFdlYkNvcmU6OkNvbXBvc2l0b3JTdXBw
b3J0Ojppbml0aWFsaXplKHNfY29tcG9zaXRvclN1cHBvcnQpOworfQorCit2b2lkIGluaXRpYWxp
emVXaXRob3V0VjhBbmRDb21wb3NpdG9yKFdlYktpdFBsYXRmb3JtU3VwcG9ydCogd2ViS2l0UGxh
dGZvcm1TdXBwb3J0KQorewogICAgIEFTU0VSVCghc193ZWJLaXRJbml0aWFsaXplZCk7CiAgICAg
c193ZWJLaXRJbml0aWFsaXplZCA9IHRydWU7CiAKQEAgLTk2LDEzICsxMzEsMTYgQEAgdm9pZCBp
bml0aWFsaXplV2l0aG91dFY4KFdlYktpdFBsYXRmb3JtU3VwcG9ydCogd2ViS2l0UGxhdGZvcm1T
dXBwb3J0KQogICAgIC8vIHRoZSBpbml0aWFsaXphdGlvbiB0aHJlYWQtc2FmZSwgYnV0IGdpdmVu
IHRoYXQgc28gbWFueSBjb2RlIHBhdGhzIHVzZQogICAgIC8vIHRoaXMsIGluaXRpYWxpemluZyB0
aGlzIGxhemlseSBwcm9iYWJseSBkb2Vzbid0IGJ1eSB1cyBtdWNoLgogICAgIFdlYkNvcmU6OlVU
RjhFbmNvZGluZygpOwotCi0gCiB9CiAKIAogdm9pZCBzaHV0ZG93bigpCiB7CisgICAgaWYgKHNf
Y29tcG9zaXRvclN1cHBvcnQpIHsKKyAgICAgICAgV2ViQ29yZTo6Q29tcG9zaXRvclN1cHBvcnQ6
OnNodXRkb3duKCk7CisgICAgICAgIGRlbGV0ZSBzX2NvbXBvc2l0b3JTdXBwb3J0OworICAgICAg
ICBzX2NvbXBvc2l0b3JTdXBwb3J0ID0gMDsKKyAgICB9CiAgICAgc193ZWJLaXRQbGF0Zm9ybVN1
cHBvcnQgPSAwOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109111</attachid>
            <date>2011-09-28 18:20:06 -0700</date>
            <delta_ts>2011-09-28 20:37:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69048-20110928182005.patch</filename>
            <type>text/plain</type>
            <size>58860</size>
            <attacher name="Antoine Labour">piman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYyNjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMDgwYzgwMDAyZTFkNTIz
MjcyYjM3NDZkZWVkNGRkZWZiYTVjZjZiLi5jZjg0MDY2ODQ0MDdmYjU1NWQ4OGM3OWE3OGQyNzM1
ZGU0OWQ4YWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAwIEBACisyMDExLTA5LTI4ICBBbnRv
aW5lIExhYm91ciAgPHBpbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBTZXBhcmF0ZSBjb21w
b3NpdG9yIHBsYXRmb3JtIHN1cHBvcnQgZnJvbSB3ZWJraXQncyBwbGF0Zm9ybSBzdXBwb3J0Lgor
ICAgICAgICBUaGlzIGlzIHNvIHRoYXQgdGhlIGNvbXBvc2l0b3IgY2FuIGJlIHVzZWQgaW4gYSB0
aHJlYWQgc2VwYXJhdGUgZnJvbSB0aGUKKyAgICAgICAgbWFpbiB3ZWJraXQgdGhyZWFkLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkwNDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4
aXN0aW5nIGNvbXBvc2l0aW5nIHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1RyYWNlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OmludGVybmFsOjo6OlNjb3BlVHJhY2VyKToKKyAgICAgICAgKFdlYkNvcmU6OmludGVybmFsOjo6
On5TY29wZVRyYWNlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29t
cG9zaXRvclN1cHBvcnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0b3JT
dXBwb3J0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0b3JTdXBwb3J0
OjpzaHV0ZG93bik6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdG9yU3VwcG9ydDo6Y3VycmVu
dFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRvclN1cHBvcnQ6Omhpc3RvZ3JhbUN1
c3RvbUNvdW50cyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdG9yU3VwcG9ydDo6dHJhY2VF
dmVudEJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0b3JTdXBwb3J0Ojp0cmFjZUV2
ZW50RW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db21wb3NpdG9y
U3VwcG9ydC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0b3JTdXBwb3J0RGVs
ZWdhdGU6On5Db21wb3NpdG9yU3VwcG9ydERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXBvc2l0b3JTdXBwb3J0OjpkZWxlZ2F0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29tcG9zaXRvclRyYWNlRXZlbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHAuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyUGFpbnRlcjo6cGFpbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzSW50ZXJuYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpmaW5pc2gpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpwcmVzZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpib3JkZXJQcm9ncmFtKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aGVhZHNVcERpc3BsYXlQ
cm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVy
U3VyZmFjZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
OjpyZW5kZXJTdXJmYWNlUHJvZ3JhbUFBKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1BQSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbVN3aXp6
bGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dy
YW1Td2l6emxlQUEpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpj
YW52YXNMYXllclByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpwbHVnaW5MYXllclByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjp2aWRlb0xheWVyUkdCQVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjp2aWRlb0xheWVyWVVWUHJvZ3JhbSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhUZXhTdWJJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aE1hcFRl
eFN1YkltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRl
eHR1cmVVcGRhdGVyQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVw
ZGF0ZXJDYW52YXM6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyYW1C
aW5kaW5nQmFzZTo6Y3JlYXRlU2hhZGVyUHJvZ3JhbSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xMYXllckNocm9taXVtOjpyYXRlTGltaXRDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDSGVhZHNVcERpc3BsYXk6OkNDSGVhZHNVcERpc3BsYXkpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNvcnRMYXllcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3Q6On5DQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
Ojpjb21taXRUb09uQ0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
OjpzZXROZWVkc0NvbW1pdEFuZFJlZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OnVwZGF0ZUxheWVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3RJbXBsOjp+Q0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJveHk6
OmlzTWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Byb3h5OjpzZXRNYWluVGhyZWFk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5OjpDQ1NpbmdsZVRo
cmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6On5DQ1Np
bmdsZVRocmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6
OnN0b3ApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6Q0NUaHJlYWRQcm94
eSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojp+Q0NUaHJlYWRQcm94eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdEFuZFJlZHJhdyk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzZXROZWVkc1JlZHJhdyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFk
UHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uQ0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6Y3JlYXRlQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tPbkNDVGhyZWFkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6Y29tbWl0T25DQ1RocmVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZURyYXdUYXNrT25DQ1RocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJzQW5kUHJlc2VudE9u
Q0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6ZHJhd0xheWVyc09u
Q0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dXBkYXRlU2NoZWR1
bGVyU3RhdGVPbkNDVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6Omlu
aXRpYWxpemVJbXBsT25DQ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5
Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uQ0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6bGF5ZXJUcmVlSG9zdENsb3NlZE9uQ0NUaHJlYWQpOgorCiAyMDExLTA5
LTI4ICBTZXJnZXkgR2xhenVub3YgIDxzZXJnLmdsYXp1bm92QGdtYWlsLmNvbT4KIAogICAgICAg
ICBKYXZhU2NyaXB0IGdlbmVyYXRlZCBkb2N1bWVudHMgZG9uJ3QgaW5oZXJpdCB0aGUgY29va2ll
IFVSTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDA0MjA0ZWE2YWJjNmQ0NmIzZjBkNTEyNjdjZGRkNjlh
MDFhYTU3MTcuLjkyZmY2MWEzOThjNDE2ZjdiOGQwOWViNGRmNzRhMzhhNzlhYWRmOTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTM0MDYsNiArMzQwNiw5IEBACiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db21wbGV4VGV4dENvbnRyb2xsZXJMaW51eC5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbXBsZXhUZXh0Q29u
dHJvbGxlckxpbnV4LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NvbXBvc2l0b3JTdXBwb3J0LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29tcG9zaXRvclN1cHBvcnQuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ29tcG9zaXRvclRyYWNlRXZlbnQuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Dcm9zc1Byb2Nlc3NG
b250TG9hZGluZy5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1RyYWNlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1RyYWNl
RXZlbnQuaAppbmRleCBkYjhjNzRiMmExZDA4OWI3NDJhZmIwMGQ0NGZhZDRiYjc2YzE2YzQ3Li45
NTUxNTIzY2MwMzc2MDU2ODdiNDc1ZjBlZGM4MTVmNzhlZjUyMDgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9UcmFjZUV2ZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vVHJhY2VFdmVudC5oCkBAIC0zNiwxNCArMzYsMTQgQEAK
ICNkZWZpbmUgVFJBQ0VfRVZFTlRfTUFLRV9VTklRVUVfSURFTlRJRklFUihuYW1lX3ByZWZpeCkg
VFJBQ0VfRVZFTlRfTUFLRV9VTklRVUVfSURFTlRJRklFUjIobmFtZV9wcmVmaXgsIF9fTElORV9f
KQogCiAvLyBJc3N1ZXMgUGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2ZW50QmVnaW4gYW5kIHRyYWNl
RXZlbnRFbmQgY2FsbHMgZm9yIHRoZSBlbmNsb3Npbmcgc2NvcGUKLSNkZWZpbmUgVFJBQ0VfRVZF
TlQobmFtZSwgaWQsIGV4dHJhKSBXZWJDb3JlOjppbnRlcm5hbDo6U2NvcGVUcmFjZXIgVFJBQ0Vf
RVZFTlRfTUFLRV9VTklRVUVfSURFTlRJRklFUihfX3RyYWNlRXZlbnRTY29wZSkobmFtZSwgaWQs
IGV4dHJhKTsKKyNkZWZpbmUgVFJBQ0VfRVZFTlQobmFtZSwgaWQsIGV4dHJhKSBXZWJDb3JlOjpp
bnRlcm5hbDo6U2NvcGVUcmFjZXI8V2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0PiBUUkFDRV9FVkVO
VF9NQUtFX1VOSVFVRV9JREVOVElGSUVSKF9fdHJhY2VFdmVudFNjb3BlKShuYW1lLCBpZCwgZXh0
cmEpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKIC8v
IFVzZWQgYnkgVFJBQ0VfRVZFTlQgbWFjcm8uIERvIG5vdCB1c2UgZGlyZWN0bHkuCi1jbGFzcyBT
Y29wZVRyYWNlciB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBTdXBwb3J0PiBjbGFzcyBTY29wZVRyYWNl
ciB7CiBwdWJsaWM6CiAgICAgU2NvcGVUcmFjZXIoY29uc3QgY2hhciogbmFtZSwgdm9pZCosIGNv
bnN0IGNoYXIqIGV4dHJhKTsKICAgICB+U2NvcGVUcmFjZXIoKTsKQEAgLTU0LDE4ICs1NCwxOCBA
QCBwcml2YXRlOgogICAgIE93bkFycmF5UHRyPGNoYXI+IG1fZXh0cmE7CiB9OwogCi1pbmxpbmUg
U2NvcGVUcmFjZXI6OlNjb3BlVHJhY2VyKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBjb25z
dCBjaGFyKiBleHRyYSkKK3RlbXBsYXRlPHR5cGVuYW1lIFN1cHBvcnQ+IGlubGluZSBTY29wZVRy
YWNlcjxTdXBwb3J0Pjo6U2NvcGVUcmFjZXIoY29uc3QgY2hhciogbmFtZSwgdm9pZCogaWQsIGNv
bnN0IGNoYXIqIGV4dHJhKQogICAgIDogbV9uYW1lKG5hbWUpCiAgICAgLCBtX2lkKGlkKQogewot
ICAgIFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVudEJlZ2luKG5hbWUsIGlkLCBleHRyYSk7IFwK
KyAgICBTdXBwb3J0Ojp0cmFjZUV2ZW50QmVnaW4obmFtZSwgaWQsIGV4dHJhKTsgXAogICAgIGlm
IChleHRyYSkKICAgICAgICAgbV9leHRyYSA9IGFkb3B0QXJyYXlQdHIoc3RyZHVwKGV4dHJhKSk7
CiB9CiAKLWlubGluZSBTY29wZVRyYWNlcjo6flNjb3BlVHJhY2VyKCkKK3RlbXBsYXRlPHR5cGVu
YW1lIFN1cHBvcnQ+IGlubGluZSBTY29wZVRyYWNlcjxTdXBwb3J0Pjo6flNjb3BlVHJhY2VyKCkK
IHsKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRFbmQobV9uYW1lLCBtX2lkLCBtX2V4
dHJhLmdldCgpKTsKKyAgICBTdXBwb3J0Ojp0cmFjZUV2ZW50RW5kKG1fbmFtZSwgbV9pZCwgbV9l
eHRyYS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIGludGVybmFsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db21wb3NpdG9yU3VwcG9y
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db21wb3Np
dG9yU3VwcG9ydC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQzNTIzYzk0ZmI5YzZlNGM0NjhkNTJmNmVmNzVm
ODc3MWY1MzJiNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbXBvc2l0b3JTdXBwb3J0LmNwcApAQCAtMCwwICsxLDY5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb21wb3NpdG9yU3VwcG9ydC5oIgor
CisjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitDb21wb3NpdG9yU3VwcG9ydERlbGVnYXRlKiBDb21wb3Np
dG9yU3VwcG9ydDo6c19kZWxlZ2F0ZTsKKwordm9pZCBDb21wb3NpdG9yU3VwcG9ydDo6aW5pdGlh
bGl6ZShDb21wb3NpdG9yU3VwcG9ydERlbGVnYXRlKiBkZWxlZ2F0ZSkKK3sKKyAgICBzX2RlbGVn
YXRlID0gZGVsZWdhdGU7CisgICAgQ0NQcm94eTo6c2V0TWFpblRocmVhZChjdXJyZW50VGhyZWFk
KCkpOworfQorCit2b2lkIENvbXBvc2l0b3JTdXBwb3J0OjpzaHV0ZG93bigpCit7CisgICAgQ0NQ
cm94eTo6c2V0TWFpblRocmVhZCgwKTsKKyAgICBzX2RlbGVnYXRlID0gMDsKK30KKworZG91Ymxl
IENvbXBvc2l0b3JTdXBwb3J0OjpjdXJyZW50VGltZSgpCit7CisgICAgcmV0dXJuIHNfZGVsZWdh
dGUtPmN1cnJlbnRUaW1lKCk7Cit9CisKK3ZvaWQgQ29tcG9zaXRvclN1cHBvcnQ6Omhpc3RvZ3Jh
bUN1c3RvbUNvdW50cyhjb25zdCBjaGFyKiBuYW1lLCBpbnQgc2FtcGxlLCBpbnQgbWluLCBpbnQg
bWF4LCBpbnQgYnVja2V0Q291bnQpCit7CisgICAgc19kZWxlZ2F0ZS0+aGlzdG9ncmFtQ3VzdG9t
Q291bnRzKG5hbWUsIHNhbXBsZSwgbWluLCBtYXgsIGJ1Y2tldENvdW50KTsKK30KKwordm9pZCBD
b21wb3NpdG9yU3VwcG9ydDo6dHJhY2VFdmVudEJlZ2luKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQq
IGlkLCBjb25zdCBjaGFyKiBleHRyYSkKK3sKKyAgICBzX2RlbGVnYXRlLT50cmFjZUV2ZW50QmVn
aW4obmFtZSwgaWQsIGV4dHJhKTsKK30KKwordm9pZCBDb21wb3NpdG9yU3VwcG9ydDo6dHJhY2VF
dmVudEVuZChjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiBpZCwgY29uc3QgY2hhciogZXh0cmEpCit7
CisgICAgc19kZWxlZ2F0ZS0+dHJhY2VFdmVudEVuZChuYW1lLCBpZCwgZXh0cmEpOworfQorCisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29tcG9zaXRvclN1cHBvcnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbXBvc2l0b3JTdXBwb3J0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTg1ZThkYjVhYmY1ZTlhMGQ3YzQyMDQ2NmU5NDAzZjA2YTdhYzAyZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbXBv
c2l0b3JTdXBwb3J0LmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaWZuZGVmIENvbXBvc2l0b3JT
dXBwb3J0X2gKKyNkZWZpbmUgQ29tcG9zaXRvclN1cHBvcnRfaAorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIENvbXBvc2l0b3JTdXBwb3J0RGVsZWdhdGUgeworcHVibGljOgorICAgIHZp
cnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoaXN0b2dy
YW1DdXN0b21Db3VudHMoY29uc3QgY2hhciogbmFtZSwgaW50IHNhbXBsZSwgaW50IG1pbiwgaW50
IG1heCwgaW50IGJ1Y2tldENvdW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRyYWNlRXZlbnRC
ZWdpbihjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiBldmVudElkLCBjb25zdCBjaGFyKiBleHRyYSkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCB0cmFjZUV2ZW50RW5kKGNvbnN0IGNoYXIqIG5hbWUsIHZv
aWQqIGV2ZW50SWQsIGNvbnN0IGNoYXIqIGV4dHJhKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2
aXJ0dWFsIH5Db21wb3NpdG9yU3VwcG9ydERlbGVnYXRlKCkgeyB9Cit9OworCitjbGFzcyBDb21w
b3NpdG9yU3VwcG9ydCB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZShDb21w
b3NpdG9yU3VwcG9ydERlbGVnYXRlKik7CisgICAgc3RhdGljIHZvaWQgc2h1dGRvd24oKTsKKwor
ICAgIHN0YXRpYyBkb3VibGUgY3VycmVudFRpbWUoKTsKKyAgICBzdGF0aWMgdm9pZCBoaXN0b2dy
YW1DdXN0b21Db3VudHMoY29uc3QgY2hhciogbmFtZSwgaW50IHNhbXBsZSwgaW50IG1pbiwgaW50
IG1heCwgaW50IGJ1Y2tldENvdW50KTsKKyAgICBzdGF0aWMgdm9pZCB0cmFjZUV2ZW50QmVnaW4o
Y29uc3QgY2hhciogbmFtZSwgdm9pZCogZXZlbnRJZCwgY29uc3QgY2hhciogZXh0cmEpOworICAg
IHN0YXRpYyB2b2lkIHRyYWNlRXZlbnRFbmQoY29uc3QgY2hhciogbmFtZSwgdm9pZCogZXZlbnRJ
ZCwgY29uc3QgY2hhciogZXh0cmEpOworCisgICAgc3RhdGljIENvbXBvc2l0b3JTdXBwb3J0RGVs
ZWdhdGUqIGRlbGVnYXRlKCkgeyByZXR1cm4gc19kZWxlZ2F0ZTsgfQorCitwcml2YXRlOgorICAg
IHN0YXRpYyBDb21wb3NpdG9yU3VwcG9ydERlbGVnYXRlKiBzX2RlbGVnYXRlOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbXBvc2l0b3JUcmFjZUV2ZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db21wb3NpdG9yVHJhY2VFdmVu
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmY0ZGE1ODYxMDgxMWZmMDkzN2JjOGZkZDRlYjYxMmM1NDk2NzEyNmEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Db21wb3NpdG9yVHJhY2VFdmVudC5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2lmbmRl
ZiBDb21wb3NpdG9yVHJhY2VFdmVudF9oCisjZGVmaW5lIENvbXBvc2l0b3JUcmFjZUV2ZW50X2gK
KworI2luY2x1ZGUgIkNvbXBvc2l0b3JTdXBwb3J0LmgiCisjaW5jbHVkZSAiVHJhY2VFdmVudC5o
IgorCisjZGVmaW5lIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQobmFtZSwgaWQsIGV4dHJhKSBXZWJD
b3JlOjppbnRlcm5hbDo6U2NvcGVUcmFjZXI8Q29tcG9zaXRvclN1cHBvcnQ+IFRSQUNFX0VWRU5U
X01BS0VfVU5JUVVFX0lERU5USUZJRVIoX190cmFjZUV2ZW50U2NvcGUpKG5hbWUsIGlkLCBleHRy
YSk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDlk
ZTRkYTlkNmQ2ZDRiNDMwNzY2ZTE3OTI3MjhhMzAzOWVjNzA5MDEuLmVjNWMwMTEyZjgwOTdiZmU1
N2I3NWM0YTZmZDEyNGQzYTkxYTZhYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1
bS5jcHAKQEAgLTM0LDEwICszNCwxMCBAQAogCiAjaW5jbHVkZSAiQ29udGVudExheWVyQ2hyb21p
dW0uaCIKIAorI2luY2x1ZGUgIkNvbXBvc2l0b3JTdXBwb3J0LmgiCiAjaW5jbHVkZSAiTGF5ZXJQ
YWludGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNp
bmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1T
dXBwb3J0LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSA8d3Rm
L0N1cnJlbnRUaW1lLmg+CiAKQEAgLTUzLDE0ICs1MywxNCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBj
b250ZW50UmVjdCkKICAgICB7Ci0gICAgICAgIGRvdWJsZSBwYWludFN0YXJ0ID0gY3VycmVudFRp
bWUoKTsKKyAgICAgICAgZG91YmxlIHBhaW50U3RhcnQgPSBDb21wb3NpdG9yU3VwcG9ydDo6Y3Vy
cmVudFRpbWUoKTsKICAgICAgICAgY29udGV4dC5jbGVhclJlY3QoY29udGVudFJlY3QpOwogICAg
ICAgICBjb250ZXh0LmNsaXAoY29udGVudFJlY3QpOwogICAgICAgICBtX2RlbGVnYXRlLT5wYWlu
dENvbnRlbnRzKGNvbnRleHQsIGNvbnRlbnRSZWN0KTsKLSAgICAgICAgZG91YmxlIHBhaW50RW5k
ID0gY3VycmVudFRpbWUoKTsKKyAgICAgICAgZG91YmxlIHBhaW50RW5kID0gQ29tcG9zaXRvclN1
cHBvcnQ6OmN1cnJlbnRUaW1lKCk7CiAgICAgICAgIGRvdWJsZSBwaXhlbHNQZXJTZWMgPSAoY29u
dGVudFJlY3Qud2lkdGgoKSAqIGNvbnRlbnRSZWN0LmhlaWdodCgpKSAvIChwYWludEVuZCAtIHBh
aW50U3RhcnQpOwotICAgICAgICBQbGF0Zm9ybVN1cHBvcnQ6Omhpc3RvZ3JhbUN1c3RvbUNvdW50
cygiUmVuZGVyZXI0LkFjY2VsQ29udGVudFBhaW50RHVyYXRpb25NUyIsIChwYWludEVuZCAtIHBh
aW50U3RhcnQpICogMTAwMCwgMCwgMTIwLCAzMCk7Ci0gICAgICAgIFBsYXRmb3JtU3VwcG9ydDo6
aGlzdG9ncmFtQ3VzdG9tQ291bnRzKCJSZW5kZXJlcjQuQWNjZWxDb250ZW50UGFpbnRNZWdhcGl4
UGVyU2Vjb25kIiwgcGl4ZWxzUGVyU2VjIC8gMTAwMDAwMCwgMTAsIDIxMCwgMzApOworICAgICAg
ICBDb21wb3NpdG9yU3VwcG9ydDo6aGlzdG9ncmFtQ3VzdG9tQ291bnRzKCJSZW5kZXJlcjQuQWNj
ZWxDb250ZW50UGFpbnREdXJhdGlvbk1TIiwgKHBhaW50RW5kIC0gcGFpbnRTdGFydCkgKiAxMDAw
LCAwLCAxMjAsIDMwKTsKKyAgICAgICAgQ29tcG9zaXRvclN1cHBvcnQ6Omhpc3RvZ3JhbUN1c3Rv
bUNvdW50cygiUmVuZGVyZXI0LkFjY2VsQ29udGVudFBhaW50TWVnYXBpeFBlclNlY29uZCIsIHBp
eGVsc1BlclNlYyAvIDEwMDAwMDAsIDEwLCAyMTAsIDMwKTsKICAgICB9CiBwcml2YXRlOgogICAg
IGV4cGxpY2l0IENvbnRlbnRMYXllclBhaW50ZXIoQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IGZlYmRlYzU1NTdlNjk5
ZTgyNmE5ODc4Y2E3NGJlNzUwM2U1M2Y4NjIuLjhjOWRjYjc2NmI0YjE0OWNmOWZmMjYyMzcxMDY1
OTQ0MTM2ZjRiMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAt
MzUsNiArMzUsOCBAQAogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogCiAjaW5j
bHVkZSAiQ2FudmFzMkRMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiQ29tcG9zaXRvclN1cHBv
cnQuaCIKKyNpbmNsdWRlICJDb21wb3NpdG9yVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgIkV4dGVu
c2lvbnMzRENocm9taXVtLmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiR2Vv
bWV0cnlCaW5kaW5nLmgiCkBAIC01MCw3ICs1Miw2IEBACiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5o
IgogI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVHJlZVN5bmNocm9uaXpl
ci5oIgotI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJUcmFja2luZ1RleHR1cmVB
bGxvY2F0b3IuaCIKICNpbmNsdWRlICJXZWJHTExheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJj
Yy9DQ0xheWVySW1wbC5oIgpAQCAtMjMyLDcgKzIzMyw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpkcmF3TGF5ZXJzKCkKICAgICAvLyBGSVhNRTogdXNlIHRoZSBmcmFtZSBiZWdpbiB0
aW1lIGZyb20gdGhlIG92ZXJhbGwgY29tcG9zaXRvciBzY2hlZHVsZXIuCiAgICAgLy8gVGhpcyB2
YWx1ZSBpcyBjdXJyZW50bHkgaW5hY2Nlc3NpYmxlIGJlY2F1c2UgaXQgaXMgdXAgaW4gQ2hyb21p
dW0ncwogICAgIC8vIFJlbmRlcldpZGdldC4KLSAgICBtX2hlYWRzVXBEaXNwbGF5LT5vbkZyYW1l
QmVnaW4oY3VycmVudFRpbWUoKSk7CisgICAgbV9oZWFkc1VwRGlzcGxheS0+b25GcmFtZUJlZ2lu
KENvbXBvc2l0b3JTdXBwb3J0OjpjdXJyZW50VGltZSgpKTsKIAogICAgIGlmICghcm9vdExheWVy
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI1Niw3ICsyNTcsNyBAQCB2b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6ZHJhd0xheWVyc0ludGVybmFsKCkKICAgICBpZiAodmlld3BvcnRTaXplKCku
aXNFbXB0eSgpIHx8ICFyb290TGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVFJBQ0Vf
RVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVycyIsIHRoaXMsIDApOworICAg
IENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVy
cyIsIHRoaXMsIDApOwogICAgIENDTGF5ZXJJbXBsKiByb290RHJhd0xheWVyID0gcm9vdExheWVy
KCk7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAKQEAgLTI3Myw3ICsyNzQsNyBAQCB2b2lk
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVyc0ludGVybmFsKCkKICAgICBtX2RlZmF1
bHRSZW5kZXJTdXJmYWNlLT5jbGVhckxheWVyTGlzdCgpOwogCiAgICAgewotICAgICAgICBUUkFD
RV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzSW50ZXJuYWw6OmNhbGNE
cmF3RXRjIiwgdGhpcywgMCk7CisgICAgICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVy
UmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVyc0ludGVybmFsOjpjYWxjRHJhd0V0YyIsIHRoaXMs
IDApOwogICAgICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zv
cm1zQW5kVmlzaWJpbGl0eShyb290RHJhd0xheWVyLCByb290RHJhd0xheWVyLCBtX3pvb21Bbmlt
YXRvclRyYW5zZm9ybSwgbV96b29tQW5pbWF0b3JUcmFuc2Zvcm0sIHJlbmRlclN1cmZhY2VMYXll
ckxpc3QsIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLCAmbV9sYXllclNvcnRl
ciwgbV9jYXBhYmlsaXRpZXMubWF4VGV4dHVyZVNpemUpOwogICAgIH0KIApAQCAtNDA4LDEzICs0
MDksMTMgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUZXh0dXJlZFF1YWQoY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdNYXQKIAogdm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmZpbmlzaCgpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6ZmluaXNoIiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpmaW5pc2giLCB0aGlzLCAwKTsKICAgICBtX2NvbnRleHQtPmZpbmlz
aCgpOwogfQogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cHJlc2VudCgpCiB7Ci0gICAg
VFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cHJlc2VudCIsIHRoaXMsIDApOwor
ICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cHJlc2Vu
dCIsIHRoaXMsIDApOwogICAgIC8vIFdlJ3JlIGRvbmUhIFRpbWUgdG8gc3dhcGJ1ZmZlcnMhCiAK
ICAgICAvLyBOb3RlIHRoYXQgY3VycmVudGx5IHRoaXMgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyBz
d2FwQnVmZmVyczsgd2Ugc2hvdWxkCkBAIC01OTgsNyArNTk5LDcgQEAgdm9pZCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OnNldERyYXdWaWV3cG9ydFJlY3QoY29uc3QgSW50UmVjdCYgZHJhd1JlY3Qs
IGJvb2wgZmwKIAogYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRP
YmplY3RzKCkKIHsKLSAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0
aWFsaXplU2hhcmVkT2JqZWN0cyIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZF
TlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMiLCB0aGlz
LCAwKTsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKIAogICAgIC8vIENyZWF0ZSBhbiBGQk8g
Zm9yIGRvaW5nIG9mZnNjcmVlbiByZW5kZXJpbmcuCkBAIC02MjMsNyArNjI0LDcgQEAgY29uc3Qg
TGF5ZXJDaHJvbWl1bTo6Qm9yZGVyUHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpib3Jk
ZXJQcm9ncmFtKCkKICAgICBpZiAoIW1fYm9yZGVyUHJvZ3JhbSkKICAgICAgICAgbV9ib3JkZXJQ
cm9ncmFtID0gYWRvcHRQdHIobmV3IExheWVyQ2hyb21pdW06OkJvcmRlclByb2dyYW0obV9jb250
ZXh0LmdldCgpKSk7CiAgICAgaWYgKCFtX2JvcmRlclByb2dyYW0tPmluaXRpYWxpemVkKCkpIHsK
LSAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Ym9yZGVyUHJvZ3Jh
bTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOworICAgICAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5U
KCJMYXllclJlbmRlcmVyQ2hyb21pdW06OmJvcmRlclByb2dyYW06OmluaXRpYWxpemUiLCB0aGlz
LCAwKTsKICAgICAgICAgbV9ib3JkZXJQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQo
KSk7CiAgICAgfQogICAgIHJldHVybiBtX2JvcmRlclByb2dyYW0uZ2V0KCk7CkBAIC02MzQsNyAr
NjM1LDcgQEAgY29uc3QgQ0NIZWFkc1VwRGlzcGxheTo6UHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpoZWFkc1VwRGlzcGxheVByb2dyYW0oKQogICAgIGlmICghbV9oZWFkc1VwRGlzcGxh
eVByb2dyYW0pCiAgICAgICAgIG1faGVhZHNVcERpc3BsYXlQcm9ncmFtID0gYWRvcHRQdHIobmV3
IENDSGVhZHNVcERpc3BsYXk6OlByb2dyYW0obV9jb250ZXh0LmdldCgpKSk7CiAgICAgaWYgKCFt
X2hlYWRzVXBEaXNwbGF5UHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBUUkFDRV9F
VkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpoZWFkc1VwRGlzcGxheVByb2dyYW06OmluaXRp
YWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpoZWFkc1VwRGlzcGxheVByb2dyYW06OmluaXRpYWxpemUiLCB0aGlz
LCAwKTsKICAgICAgICAgbV9oZWFkc1VwRGlzcGxheVByb2dyYW0tPmluaXRpYWxpemUobV9jb250
ZXh0LmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIG1faGVhZHNVcERpc3BsYXlQcm9ncmFtLmdl
dCgpOwpAQCAtNjQ0LDcgKzY0NSw3IEBAIGNvbnN0IENDUmVuZGVyU3VyZmFjZTo6UHJvZ3JhbSog
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJTdXJmYWNlUHJvZ3JhbSgpCiB7CiAgICAgQVNT
RVJUKG1fcmVuZGVyU3VyZmFjZVByb2dyYW0pOwogICAgIGlmICghbV9yZW5kZXJTdXJmYWNlUHJv
Z3JhbS0+aW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpyZW5kZXJTdXJmYWNlUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwor
ICAgICAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnJl
bmRlclN1cmZhY2VQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CiAgICAgICAgIG1fcmVu
ZGVyU3VyZmFjZVByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKICAgICB9CiAg
ICAgcmV0dXJuIG1fcmVuZGVyU3VyZmFjZVByb2dyYW0uZ2V0KCk7CkBAIC02NTUsNyArNjU2LDcg
QEAgY29uc3QgQ0NSZW5kZXJTdXJmYWNlOjpQcm9ncmFtQUEqIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6cmVuZGVyU3VyZmFjZVByb2dyYW1BQSgKICAgICBpZiAoIW1fcmVuZGVyU3VyZmFjZVByb2dy
YW1BQSkKICAgICAgICAgbV9yZW5kZXJTdXJmYWNlUHJvZ3JhbUFBID0gYWRvcHRQdHIobmV3IEND
UmVuZGVyU3VyZmFjZTo6UHJvZ3JhbUFBKG1fY29udGV4dC5nZXQoKSkpOwogICAgIGlmICghbV9y
ZW5kZXJTdXJmYWNlUHJvZ3JhbUFBLT5pbml0aWFsaXplZCgpKSB7Ci0gICAgICAgIFRSQUNFX0VW
RU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclN1cmZhY2VQcm9ncmFtQUE6OmluaXRp
YWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpyZW5kZXJTdXJmYWNlUHJvZ3JhbUFBOjppbml0aWFsaXplIiwgdGhp
cywgMCk7CiAgICAgICAgIG1fcmVuZGVyU3VyZmFjZVByb2dyYW1BQS0+aW5pdGlhbGl6ZShtX2Nv
bnRleHQuZ2V0KCkpOwogICAgIH0KICAgICByZXR1cm4gbV9yZW5kZXJTdXJmYWNlUHJvZ3JhbUFB
LmdldCgpOwpAQCAtNjY2LDcgKzY2Nyw3IEBAIGNvbnN0IENDUmVuZGVyU3VyZmFjZTo6TWFza1By
b2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZU1hc2tQcm9nCiAgICAg
aWYgKCFtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbSkKICAgICAgICAgbV9yZW5kZXJTdXJmYWNl
TWFza1Byb2dyYW0gPSBhZG9wdFB0cihuZXcgQ0NSZW5kZXJTdXJmYWNlOjpNYXNrUHJvZ3JhbSht
X2NvbnRleHQuZ2V0KCkpKTsKICAgICBpZiAoIW1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtLT5p
bml0aWFsaXplZCgpKSB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21p
dW06OnJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOworICAg
ICAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRl
clN1cmZhY2VNYXNrUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwogICAgICAgICBtX3Jl
bmRlclN1cmZhY2VNYXNrUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOwogICAg
IH0KICAgICByZXR1cm4gbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0uZ2V0KCk7CkBAIC02Nzcs
NyArNjc4LDcgQEAgY29uc3QgQ0NSZW5kZXJTdXJmYWNlOjpNYXNrUHJvZ3JhbUFBKiBMYXllclJl
bmRlcmVyQ2hyb21pdW06OnJlbmRlclN1cmZhY2VNYXNrUHIKICAgICBpZiAoIW1fcmVuZGVyU3Vy
ZmFjZU1hc2tQcm9ncmFtQUEpCiAgICAgICAgIG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEg
PSBhZG9wdFB0cihuZXcgQ0NSZW5kZXJTdXJmYWNlOjpNYXNrUHJvZ3JhbUFBKG1fY29udGV4dC5n
ZXQoKSkpOwogICAgIGlmICghbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQS0+aW5pdGlhbGl6
ZWQoKSkgewotICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5k
ZXJTdXJmYWNlTWFza1Byb2dyYW1BQTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOworICAgICAgICBD
T01QT1NJVE9SX1RSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclN1cmZh
Y2VNYXNrUHJvZ3JhbUFBOjppbml0aWFsaXplIiwgdGhpcywgMCk7CiAgICAgICAgIG1fcmVuZGVy
U3VyZmFjZU1hc2tQcm9ncmFtQUEtPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKICAgICB9
CiAgICAgcmV0dXJuIG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEuZ2V0KCk7CkBAIC02ODcs
NyArNjg4LDcgQEAgY29uc3QgQ0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbSogTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjp0aWxlclByb2dyYW0oKQogewogICAgIEFTU0VSVChtX3RpbGVyUHJvZ3JhbSk7
CiAgICAgaWYgKCFtX3RpbGVyUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBUUkFD
RV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW06OmluaXRpYWxpemUi
LCB0aGlzLCAwKTsKKyAgICAgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjp0aWxlclByb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKICAgICAgICAg
bV90aWxlclByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKICAgICB9CiAgICAg
cmV0dXJuIG1fdGlsZXJQcm9ncmFtLmdldCgpOwpAQCAtNjk4LDcgKzY5OSw3IEBAIGNvbnN0IEND
VGlsZWRMYXllckltcGw6OlByb2dyYW1BQSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclBy
b2dyYW1BQSgpCiAgICAgaWYgKCFtX3RpbGVyUHJvZ3JhbUFBKQogICAgICAgICBtX3RpbGVyUHJv
Z3JhbUFBID0gYWRvcHRQdHIobmV3IENDVGlsZWRMYXllckltcGw6OlByb2dyYW1BQShtX2NvbnRl
eHQuZ2V0KCkpKTsKICAgICBpZiAoIW1fdGlsZXJQcm9ncmFtQUEtPmluaXRpYWxpemVkKCkpIHsK
LSAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFt
QUE6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVO
VCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1BQTo6aW5pdGlhbGl6ZSIsIHRo
aXMsIDApOwogICAgICAgICBtX3RpbGVyUHJvZ3JhbUFBLT5pbml0aWFsaXplKG1fY29udGV4dC5n
ZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBtX3RpbGVyUHJvZ3JhbUFBLmdldCgpOwpAQCAtNzA5
LDcgKzcxMCw3IEBAIGNvbnN0IENDVGlsZWRMYXllckltcGw6OlByb2dyYW1Td2l6emxlKiBMYXll
clJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbVN3aXp6CiAgICAgaWYgKCFtX3RpbGVyUHJv
Z3JhbVN3aXp6bGUpCiAgICAgICAgIG1fdGlsZXJQcm9ncmFtU3dpenpsZSA9IGFkb3B0UHRyKG5l
dyBDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtU3dpenpsZShtX2NvbnRleHQuZ2V0KCkpKTsKICAg
ICBpZiAoIW1fdGlsZXJQcm9ncmFtU3dpenpsZS0+aW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBU
UkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1Td2l6emxlOjpp
bml0aWFsaXplIiwgdGhpcywgMCk7CisgICAgICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtU3dpenpsZTo6aW5pdGlhbGl6ZSIsIHRo
aXMsIDApOwogICAgICAgICBtX3RpbGVyUHJvZ3JhbVN3aXp6bGUtPmluaXRpYWxpemUobV9jb250
ZXh0LmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIG1fdGlsZXJQcm9ncmFtU3dpenpsZS5nZXQo
KTsKQEAgLTcyMCw3ICs3MjEsNyBAQCBjb25zdCBDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtU3dp
enpsZUFBKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbVN3aQogICAgIGlmICgh
bV90aWxlclByb2dyYW1Td2l6emxlQUEpCiAgICAgICAgIG1fdGlsZXJQcm9ncmFtU3dpenpsZUFB
ID0gYWRvcHRQdHIobmV3IENDVGlsZWRMYXllckltcGw6OlByb2dyYW1Td2l6emxlQUEobV9jb250
ZXh0LmdldCgpKSk7CiAgICAgaWYgKCFtX3RpbGVyUHJvZ3JhbVN3aXp6bGVBQS0+aW5pdGlhbGl6
ZWQoKSkgewotICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxl
clByb2dyYW1Td2l6emxlQUE6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgQ09NUE9T
SVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1Td2l6
emxlQUE6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKICAgICAgICAgbV90aWxlclByb2dyYW1Td2l6
emxlQUEtPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIG1f
dGlsZXJQcm9ncmFtU3dpenpsZUFBLmdldCgpOwpAQCAtNzMxLDcgKzczMiw3IEBAIGNvbnN0IEND
Q2FudmFzTGF5ZXJJbXBsOjpQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNhbnZhc0xh
eWVyUHJvZ3JhbSgpCiAgICAgaWYgKCFtX2NhbnZhc0xheWVyUHJvZ3JhbSkKICAgICAgICAgbV9j
YW52YXNMYXllclByb2dyYW0gPSBhZG9wdFB0cihuZXcgQ0NDYW52YXNMYXllckltcGw6OlByb2dy
YW0obV9jb250ZXh0LmdldCgpKSk7CiAgICAgaWYgKCFtX2NhbnZhc0xheWVyUHJvZ3JhbS0+aW5p
dGlhbGl6ZWQoKSkgewotICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpjYW52YXNMYXllclByb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgQ09N
UE9TSVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjYW52YXNMYXllclBy
b2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKICAgICAgICAgbV9jYW52YXNMYXllclByb2dy
YW0tPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIG1fY2Fu
dmFzTGF5ZXJQcm9ncmFtLmdldCgpOwpAQCAtNzQyLDcgKzc0Myw3IEBAIGNvbnN0IENDUGx1Z2lu
TGF5ZXJJbXBsOjpQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnBsdWdpbkxheWVyUHJv
Z3JhbSgpCiAgICAgaWYgKCFtX3BsdWdpbkxheWVyUHJvZ3JhbSkKICAgICAgICAgbV9wbHVnaW5M
YXllclByb2dyYW0gPSBhZG9wdFB0cihuZXcgQ0NQbHVnaW5MYXllckltcGw6OlByb2dyYW0obV9j
b250ZXh0LmdldCgpKSk7CiAgICAgaWYgKCFtX3BsdWdpbkxheWVyUHJvZ3JhbS0+aW5pdGlhbGl6
ZWQoKSkgewotICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpwbHVn
aW5MYXllclByb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgQ09NUE9TSVRP
Ul9UUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpwbHVnaW5MYXllclByb2dyYW06
OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKICAgICAgICAgbV9wbHVnaW5MYXllclByb2dyYW0tPmlu
aXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIG1fcGx1Z2luTGF5
ZXJQcm9ncmFtLmdldCgpOwpAQCAtNzUzLDcgKzc1NCw3IEBAIGNvbnN0IENDVmlkZW9MYXllcklt
cGw6OlJHQkFQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnZpZGVvTGF5ZXJSR0JBUHJv
Z3JhCiAgICAgaWYgKCFtX3ZpZGVvTGF5ZXJSR0JBUHJvZ3JhbSkKICAgICAgICAgbV92aWRlb0xh
eWVyUkdCQVByb2dyYW0gPSBhZG9wdFB0cihuZXcgQ0NWaWRlb0xheWVySW1wbDo6UkdCQVByb2dy
YW0obV9jb250ZXh0LmdldCgpKSk7CiAgICAgaWYgKCFtX3ZpZGVvTGF5ZXJSR0JBUHJvZ3JhbS0+
aW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjp2aWRlb0xheWVyUkdCQVByb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAg
ICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjp2aWRlb0xh
eWVyUkdCQVByb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKICAgICAgICAgbV92aWRlb0xh
eWVyUkdCQVByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKICAgICB9CiAgICAg
cmV0dXJuIG1fdmlkZW9MYXllclJHQkFQcm9ncmFtLmdldCgpOwpAQCAtNzY0LDcgKzc2NSw3IEBA
IGNvbnN0IENDVmlkZW9MYXllckltcGw6OllVVlByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6dmlkZW9MYXllcllVVlByb2dyYW0oCiAgICAgaWYgKCFtX3ZpZGVvTGF5ZXJZVVZQcm9ncmFt
KQogICAgICAgICBtX3ZpZGVvTGF5ZXJZVVZQcm9ncmFtID0gYWRvcHRQdHIobmV3IENDVmlkZW9M
YXllckltcGw6OllVVlByb2dyYW0obV9jb250ZXh0LmdldCgpKSk7CiAgICAgaWYgKCFtX3ZpZGVv
TGF5ZXJZVVZQcm9ncmFtLT5pbml0aWFsaXplZCgpKSB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJM
YXllclJlbmRlcmVyQ2hyb21pdW06OnZpZGVvTGF5ZXJZVVZQcm9ncmFtOjppbml0aWFsaXplIiwg
dGhpcywgMCk7CisgICAgICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6dmlkZW9MYXllcllVVlByb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKICAg
ICAgICAgbV92aWRlb0xheWVyWVVWUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkp
OwogICAgIH0KICAgICByZXR1cm4gbV92aWRlb0xheWVyWVVWUHJvZ3JhbS5nZXQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4
dHVyZVN1YkltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmNwcAppbmRleCA4ZmVhMzhhNjkwYzk1Y2U3YTM5ODc2
YjcwYzNiZDBlNjk3YjJlYjg2Li4wNTY1ZjM2ZDJiMDc5Mzg0OWY1NTEzODA2OWI0NTEzODVmYzI0
NzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclRleHR1cmVTdWJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwCkBAIC0yOSw5ICsyOSw5
IEBACiAKICNpbmNsdWRlICJMYXllclRleHR1cmVTdWJJbWFnZS5oIgogCisjaW5jbHVkZSAiQ29t
cG9zaXRvclRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAiVHJhY2VFdmVudC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBMYXllclRleHR1
cmVTdWJJbWFnZTo6dXBsb2FkV2l0aFRleFN1YkltYWdlKGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBj
b25zdCBJbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBm
b3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogewotICAgIFRSQUNFX0VWRU5UKCJM
YXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aFRleFN1YkltYWdlIiwgdGhpcywgMCk7Cisg
ICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdp
dGhUZXhTdWJJbWFnZSIsIHRoaXMsIDApOwogICAgIGlmICghbV9zdWJJbWFnZSkKICAgICAgICAg
bV9zdWJJbWFnZSA9IGFkb3B0QXJyYXlQdHIobmV3IHVpbnQ4X3RbbV9zdWJJbWFnZVNpemUud2lk
dGgoKSAqIG1fc3ViSW1hZ2VTaXplLmhlaWdodCgpICogNF0pOwogCkBAIC05NCw3ICs5NCw3IEBA
IHZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZShjb25z
dCB1aW50OF90KiBpbWFnZSwgY29uc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQog
ewotICAgIFRSQUNFX0VWRU5UKCJMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aE1hcFRl
eFN1YkltYWdlIiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJU
ZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZSIsIHRoaXMsIDApOwogICAg
IC8vIE9mZnNldCBmcm9tIGltYWdlLXJlY3QgdG8gc291cmNlLXJlY3QuCiAgICAgSW50UG9pbnQg
b2Zmc2V0KHNvdXJjZVJlY3QueCgpIC0gaW1hZ2VSZWN0LngoKSwgc291cmNlUmVjdC55KCkgLSBp
bWFnZVJlY3QueSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFz
LmNwcAppbmRleCBmZjE5YzcxYzUwYjc1NTA3MTUxYTNjNTAyN2E4MmEzZDI3ODViNWUzLi42MzY5
NDA5ZGY2NTJiYzllMjVkYzBiNDQwYzI4Y2ZkZmEzOWNjYTc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2Fu
dmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKICNpbmNs
dWRlICJMYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmgiCiAKKyNpbmNsdWRlICJDb21wb3NpdG9y
VHJhY2VFdmVudC5oIgogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRC5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgiCiAjaW5jbHVk
ZSAiTWFuYWdlZFRleHR1cmUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCi0jaW5jbHVk
ZSAiVHJhY2VFdmVudC5oIgogCiAjaWYgVVNFKFNLSUEpCiAjaW5jbHVkZSAiR3JDb250ZXh0Lmgi
CkBAIC01NSw3ICs1NSw3IEBAIHZvaWQgTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhczo6cGFpbnRD
b250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEluCiB7CiAgICAgY29udGV4
dC50cmFuc2xhdGUoLWNvbnRlbnRSZWN0LngoKSwgLWNvbnRlbnRSZWN0LnkoKSk7CiAgICAgewot
ICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhczo6cGFpbnQiLCB0
aGlzLCAwKTsKKyAgICAgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJUZXh0dXJlVXBk
YXRlckNhbnZhczo6cGFpbnQiLCB0aGlzLCAwKTsKICAgICAgICAgbV9wYWludGVyLT5wYWludChj
b250ZXh0LCBjb250ZW50UmVjdCk7CiAgICAgfQogICAgIG1fY29udGVudFJlY3QgPSBjb250ZW50
UmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1Byb2dyYW1CaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmNwcAppbmRleCAyNjdlMDE5NTc3MjY5N2U1ZTc0MjUw
NDE2NGVkNGVjZDdkNGY2ZDQ3Li5lMWEyNDg2MjhmNGY2ODFmOGMzZTk1NzVlYjA4YTkzNmJjOTBi
MDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Qcm9ncmFtQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuY3BwCkBAIC0yOSwxMSArMjksMTEgQEAKIAogI2lu
Y2x1ZGUgIlByb2dyYW1CaW5kaW5nLmgiCiAKKyNpbmNsdWRlICJDb21wb3NpdG9yVHJhY2VFdmVu
dC5oIgogI2luY2x1ZGUgIkdlb21ldHJ5QmluZGluZy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmgiCi0jaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTg4LDcgKzg4LDcgQEAgdW5zaWduZWQgUHJvZ3JhbUJpbmRpbmdCYXNl
Ojpsb2FkU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCB0eXAKIAog
dW5zaWduZWQgUHJvZ3JhbUJpbmRpbmdCYXNlOjpjcmVhdGVTaGFkZXJQcm9ncmFtKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZlcnRleFNoYWRlclNvdXJjZSwgY29u
c3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlclNvdXJjZSkKIHsKLSAgICBUUkFDRV9FVkVOVCgiUHJv
Z3JhbUJpbmRpbmdCYXNlOjpjcmVhdGVTaGFkZXJQcm9ncmFtIiwgdGhpcywgMCk7CisgICAgQ09N
UE9TSVRPUl9UUkFDRV9FVkVOVCgiUHJvZ3JhbUJpbmRpbmdCYXNlOjpjcmVhdGVTaGFkZXJQcm9n
cmFtIiwgdGhpcywgMCk7CiAgICAgdW5zaWduZWQgdmVydGV4U2hhZGVyID0gbG9hZFNoYWRlcihj
b250ZXh0LCBHcmFwaGljc0NvbnRleHQzRDo6VkVSVEVYX1NIQURFUiwgdmVydGV4U2hhZGVyU291
cmNlKTsKICAgICBpZiAoIXZlcnRleFNoYWRlcikgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxl
ZCB0byBjcmVhdGUgdmVydGV4IHNoYWRlciIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmgKaW5kZXggYmI2
ZmM4ZGRkOTBmOGQ1NWYzNWE1OGQyMTMzZmRhNDk4MmJkMjBiNy4uYTIwZjBkNmZjNTQ5Yzc0YTlj
ZGUxZjk0MzVjNmJmYTQ5YjM1NWY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5oCkBAIC0yOSw3ICsy
OSw2IEBACiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMzJiYTZhM2JlZTVh
MDI0ZjU1Y2MwMjc2MjI1MmI5M2I1ODA0ZTBlNC4uZGEyMzdiOGM3MjZlMmU2MjJlZmQ5NTJmZDNk
ZDAyOTVlMzU0NTgxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCkBAIC0zNCwx
MCArMzQsMTAgQEAKIAogI2luY2x1ZGUgIldlYkdMTGF5ZXJDaHJvbWl1bS5oIgogCisjaW5jbHVk
ZSAiQ29tcG9zaXRvclRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1
bS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmgiCi0jaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTE1NSw3ICsxNTUsNyBAQCBHcmFwaGljc0NvbnRleHQzRCogV2ViR0xMYXll
ckNocm9taXVtOjpsYXllclJlbmRlcmVyQ29udGV4dCgpCiAKIHZvaWQgV2ViR0xMYXllckNocm9t
aXVtOjpyYXRlTGltaXRDb250ZXh0KFRpbWVyPFdlYkdMTGF5ZXJDaHJvbWl1bT4qKQogewotICAg
IFRSQUNFX0VWRU5UKCJXZWJHTExheWVyQ2hyb21pdW06OnJhdGVMaW1pdENvbnRleHQiLCB0aGlz
LCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJXZWJHTExheWVyQ2hyb21pdW06OnJh
dGVMaW1pdENvbnRleHQiLCB0aGlzLCAwKTsKIAogICAgIGlmICghbV9jb250ZXh0KQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCmluZGV4IDg2NGM4OGYw
NzlhZTMxN2RkMGEyMmRkNzM0NDg3MGNiYmMyMjRhOTYuLjE1NDdiYjgyZWI0OGE1MjFjMjUyNjc0
MDI5YjlhMzIyMzNmZTgzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCkBA
IC0yNyw2ICsyNyw3IEBACiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogI2luY2x1
ZGUgIkNDSGVhZHNVcERpc3BsYXkuaCIKIAorI2luY2x1ZGUgIkNvbXBvc2l0b3JTdXBwb3J0Lmgi
CiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJGb250LmgiCiAj
aW5jbHVkZSAiRm9udENhY2hlLmgiCkBAIC01Myw3ICs1NCw3IEBAIENDSGVhZHNVcERpc3BsYXk6
OkNDSGVhZHNVcERpc3BsYXkoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBvd25lcikKICAgICAsIG1f
bGF5ZXJSZW5kZXJlcihvd25lcikKICAgICAsIG1fdXNlTWFwU3ViRm9yVXBsb2Fkcyhvd25lci0+
Y29udGV4dFN1cHBvcnRzTWFwU3ViKCkpCiB7Ci0gICAgbV9iZWdpblRpbWVIaXN0b3J5SW5TZWNb
MF0gPSBjdXJyZW50VGltZSgpOworICAgIG1fYmVnaW5UaW1lSGlzdG9yeUluU2VjWzBdID0gQ29t
cG9zaXRvclN1cHBvcnQ6OmN1cnJlbnRUaW1lKCk7CiAgICAgbV9iZWdpblRpbWVIaXN0b3J5SW5T
ZWNbMV0gPSBtX2JlZ2luVGltZUhpc3RvcnlJblNlY1swXTsKICAgICBmb3IgKGludCBpID0gMjsg
aSA8IGtCZWdpbkZyYW1lSGlzdG9yeVNpemU7IGkrKykKICAgICAgICAgbV9iZWdpblRpbWVIaXN0
b3J5SW5TZWNbaV0gPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCmluZGV4IDY0MTY4YzJiNGVk
NzViNDZjOTNmY2JhMjlhNTViYjgzYjE5ZTAyZjIuLjUxNmNhYjJmNTU0MDQ3MGQ0NDRhNTBlMmM0
ZGE3MDI1MDFkY2IzOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKQEAgLTI5LDYgKzI5LDcg
QEAKIAogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAKKyNpbmNsdWRlICJDb21wb3NpdG9y
VHJhY2VFdmVudC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAi
TGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgpAQCAt
MTgzLDcgKzE4NCw3IEBAIHZvaWQgQ0NMYXllckltcGw6OmR1bXBMYXllclByb3BlcnRpZXMoVGV4
dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGNvbnN0CiAKIHZvaWQgc29ydExheWVycyhWZWN0b3I8
UmVmUHRyPENDTGF5ZXJJbXBsPiA+OjppdGVyYXRvciBmaXJzdCwgVmVjdG9yPFJlZlB0cjxDQ0xh
eWVySW1wbD4gPjo6aXRlcmF0b3IgZW5kLCBDQ0xheWVyU29ydGVyKiBsYXllclNvcnRlcikKIHsK
LSAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzb3J0TGF5ZXJzIiwgMCwg
MCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpz
b3J0TGF5ZXJzIiwgMCwgMCk7CiAgICAgbGF5ZXJTb3J0ZXItPnNvcnQoZmlyc3QsIGVuZCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDZkZGQ5YmQ2Mzk1MGJjNDdj
MjcwMmQ0ODBlNTg1YTA3ZTJkMjNmN2IuLjRkZGEyNGQ0NmRkMGM4ZjNkYTEyODAwMGM5MTUzOWMz
YWJhOGVkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMjYsMTAgKzI2
LDEwIEBACiAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKIAorI2luY2x1ZGUgIkNv
bXBvc2l0b3JUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1
ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmgiCi0jaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgIlRyZWVTeW5jaHJvbml6
ZXIuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKICNpbmNsdWRlICJj
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCkBAIC04OCw3ICs4OCw3IEBAIGJvb2wgQ0NMYXllclRy
ZWVIb3N0Ojppbml0aWFsaXplKCkKIENDTGF5ZXJUcmVlSG9zdDo6fkNDTGF5ZXJUcmVlSG9zdCgp
CiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKLSAgICBUUkFDRV9FVkVO
VCgiQ0NMYXllclRyZWVIb3N0Ojp+Q0NMYXllclRyZWVIb3N0IiwgdGhpcywgMCk7CisgICAgQ09N
UE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp+Q0NMYXllclRyZWVIb3N0Iiwg
dGhpcywgMCk7CiAgICAgbV9wcm94eS0+c3RvcCgpOwogICAgIG1fcHJveHkuY2xlYXIoKTsKICAg
ICBjbGVhclBlbmRpbmdVcGRhdGUoKTsKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIENDTGF5ZXJU
cmVlSG9zdDo6YW5pbWF0ZUFuZExheW91dChkb3VibGUgZnJhbWVCZWdpblRpbWUpCiB2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6Y29tbWl0VG9PbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhv
c3RJbXBsKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7Ci0gICAgVFJB
Q0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6Y29tbWl0VG8iLCB0aGlzLCAwKTsKKyAgICBDT01Q
T1NJVE9SX1RSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OmNvbW1pdFRvIiwgdGhpcywgMCk7
CiAgICAgaG9zdEltcGwtPnNldFNvdXJjZUZyYW1lTnVtYmVyKGZyYW1lTnVtYmVyKCkpOwogCiAg
ICAgY29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KFRleHR1cmVN
YW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcygpKTsKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB6b29tKQogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzQ29tbWl0QW5k
UmVkcmF3KCkKIHsKICNpZiBVU0UoVEhSRUFERURfQ09NUE9TSVRJTkcpCi0gICAgVFJBQ0VfRVZF
TlQoIkNDTGF5ZXJUcmVlSG9zdDo6c2V0TmVlZHNSZWRyYXciLCB0aGlzLCAwKTsKKyAgICBDT01Q
T1NJVE9SX1RSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzUmVkcmF3IiwgdGhp
cywgMCk7CiAgICAgbV9wcm94eS0+c2V0TmVlZHNDb21taXRBbmRSZWRyYXcoKTsKICNlbHNlCiAg
ICAgbV9jbGllbnQtPnNjaGVkdWxlQ29tcG9zaXRlKCk7CkBAIC0yNzIsNyArMjcyLDcgQEAgdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycygpCiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0
Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogewotICAgIFRSQUNFX0VW
RU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyIsIHRoaXMsIDApOworICAgIENPTVBP
U0lUT1JfVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzIiwgdGhpcywg
MCk7CiAKICAgICBpZiAoIXJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKQogICAgICAgICByb290
TGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKQEAgLTI5MCw3ICsyOTAsNyBAQCB2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKICAg
ICByb290UmVuZGVyU3VyZmFjZS0+Y2xlYXJMYXllckxpc3QoKTsKIAogICAgIHsKLSAgICAgICAg
VFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzOjpjYWxjRHJhd0V0YyIs
IHRoaXMsIDApOworICAgICAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhv
c3Q6OnVwZGF0ZUxheWVyczo6Y2FsY0RyYXdFdGMiLCB0aGlzLCAwKTsKICAgICAgICAgQ0NMYXll
clRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9v
dExheWVyLCByb290TGF5ZXIsIG1fem9vbUFuaW1hdG9yVHJhbnNmb3JtLCBtX3pvb21BbmltYXRv
clRyYW5zZm9ybSwgbV91cGRhdGVMaXN0LCByb290UmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCks
IGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IDgxYjVmN2FlNTRjNzBj
ZDQ5MWZlNGUzMGE5ZjI1MDZhYjM3N2MzZTUuLjU3ZjY4MmYxNmVkNGViYjllZDkyNWJlOThjZjky
M2I5MzdlNTczMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBA
IC0yNiwxMCArMjYsMTAgQEAKIAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIK
IAorI2luY2x1ZGUgIkNvbXBvc2l0b3JUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9u
czNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclJl
bmRlcmVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiY2Mv
Q0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiY2MvQ0NNYWluVGhyZWFkLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NNYWluVGhyZWFkVGFzay5oIgpAQCAtNTQsNyArNTQsNyBAQCBDQ0xheWVyVHJlZUhv
c3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJbXBsKGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKQog
Q0NMYXllclRyZWVIb3N0SW1wbDo6fkNDTGF5ZXJUcmVlSG9zdEltcGwoKQogewogICAgIEFTU0VS
VChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVl
SG9zdEltcGw6On5DQ0xheWVyVHJlZUhvc3RJbXBsKCkiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJ
VE9SX1RSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3RJbXBsOjp+Q0NMYXllclRyZWVIb3N0SW1w
bCgpIiwgdGhpcywgMCk7CiAgICAgaWYgKG1fbGF5ZXJSZW5kZXJlcikKICAgICAgICAgbV9sYXll
clJlbmRlcmVyLT5jbG9zZSgpOwogfQpAQCAtNzQsNyArNzQsNyBAQCBHcmFwaGljc0NvbnRleHQz
RCogQ0NMYXllclRyZWVIb3N0SW1wbDo6Y29udGV4dCgpCiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0
SW1wbDo6ZHJhd0xheWVycygpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdElt
cGw6OmRyYXdMYXllcnMiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJD
Q0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzIiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKG1f
bGF5ZXJSZW5kZXJlcik7CiAgICAgaWYgKG1fbGF5ZXJSZW5kZXJlci0+cm9vdExheWVyKCkpCiAg
ICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+ZHJhd0xheWVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcAppbmRl
eCBiN2VjY2VjZDEwYTA4YjhlYmE4NzY1ZjA4OThmZWIyZDMxMTFiMjhmLi4yZmM3MWFlZWJmYTJh
MzczMDIzNDU3ODEwODY0MjEwZmI0YjkwNmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcApAQCAtMjYsNyAr
MjYsNiBAQAogCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogCi0jaW5jbHVkZSAiVHJhY2VFdmVu
dC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgImNjL0NDTWFp
blRocmVhZFRhc2suaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZFRhc2suaCIKQEAgLTQxLDExICs0
MCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgewogYm9vbCBmYWtlSW1wbFRo
cmVhZCA9IGZhbHNlOwogc3RhdGljIFdURjo6VGhyZWFkSWRlbnRpZmllciBpbXBsVGhyZWFkSUQ7
CitzdGF0aWMgV1RGOjpUaHJlYWRJZGVudGlmaWVyIG1haW5UaHJlYWRJRDsKIH0KIAogYm9vbCBD
Q1Byb3h5Ojppc01haW5UaHJlYWQoKQogewotICAgIHJldHVybiA6OmlzTWFpblRocmVhZCgpICYm
ICFmYWtlSW1wbFRocmVhZDsKKyAgICByZXR1cm4gIWZha2VJbXBsVGhyZWFkICYmIGN1cnJlbnRU
aHJlYWQoKSA9PSBtYWluVGhyZWFkSUQ7CiB9CiAKIGJvb2wgQ0NQcm94eTo6aXNJbXBsVGhyZWFk
KCkKQEAgLTYzLDYgKzYzLDExIEBAIHZvaWQgQ0NQcm94eTo6c2V0SW1wbFRocmVhZChXVEY6OlRo
cmVhZElkZW50aWZpZXIgaWQpCiAgICAgaW1wbFRocmVhZElEID0gaWQ7CiB9CiAKK3ZvaWQgQ0NQ
cm94eTo6c2V0TWFpblRocmVhZChXVEY6OlRocmVhZElkZW50aWZpZXIgaWQpCit7CisgICAgbWFp
blRocmVhZElEID0gaWQ7Cit9CisKICNlbmRpZiAvLyAhTkRFQlVHCiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaApp
bmRleCBiMjIyYjk5ODhkODE3ZjQ5NWMyYTNhMGYwNWM0Y2ExY2VkYWRkMTYzLi44MWE1ZDI0ODRi
ZGRlZTc1ZTc5ZDYzYTExYzQ4MTU0MGFiNTMyMTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCkBAIC04NCw2ICs4
NCw3IEBAIHB1YmxpYzoKICNpZm5kZWYgTkRFQlVHCiAgICAgc3RhdGljIHZvaWQgc2V0SW1wbFRo
cmVhZChib29sKTsKICAgICBzdGF0aWMgdm9pZCBzZXRJbXBsVGhyZWFkKFdURjo6VGhyZWFkSWRl
bnRpZmllcik7CisgICAgc3RhdGljIHZvaWQgc2V0TWFpblRocmVhZChXVEY6OlRocmVhZElkZW50
aWZpZXIpOwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5jcHAKaW5kZXggOTdiY2VhNTJhMjI0ZTFlYWVlZmM1MDRhZTUwOTdiYmY4NWRhZDUx
OS4uYmY3YWI5NjcxYjllNjY5YzI3ZWYyNDgzMTliNTlkMDcwOTI5ZTE2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTI2LDkgKzI2LDkgQEAKIAogI2luY2x1
ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKIAorI2luY2x1ZGUgIkNvbXBvc2l0b3JUcmFj
ZUV2ZW50LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXll
clJlbmRlcmVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAi
Y2MvQ0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiY2MvQ0NNYWluVGhyZWFkVGFzay5oIgog
I2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtNjUsOCArNjUsOCBAQCBDQ1NpbmdsZVRo
cmVhZFByb3h5OjpDQ1NpbmdsZVRocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVl
SG9zdCkKICAgICAsIG1fZ3JhcGhpY3NDb250ZXh0TG9zdChmYWxzZSkKICAgICAsIG1fdGltZXNS
ZWNyZWF0ZVNob3VsZEZhaWwoMCkKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NTaW5nbGVUaHJlYWRQ
cm94eTo6Q0NTaW5nbGVUaHJlYWRQcm94eSIsIHRoaXMsIDApOwotICAgIEFTU0VSVChDQ1Byb3h5
Ojppc01haW5UaHJlYWQoKSk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NTaW5nbGVU
aHJlYWRQcm94eTo6Q0NTaW5nbGVUaHJlYWRQcm94eSIsIHRoaXMsIDApOworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiB9CiAKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c3RhcnQoKQpA
QCAtNzcsOCArNzcsOCBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnN0YXJ0KCkKIAogQ0NT
aW5nbGVUaHJlYWRQcm94eTo6fkNDU2luZ2xlVGhyZWFkUHJveHkoKQogewotICAgIFRSQUNFX0VW
RU5UKCJDQ1NpbmdsZVRocmVhZFByb3h5Ojp+Q0NTaW5nbGVUaHJlYWRQcm94eSIsIHRoaXMsIDAp
OwotICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CisgICAgQ09NUE9TSVRPUl9U
UkFDRV9FVkVOVCgiQ0NTaW5nbGVUaHJlYWRQcm94eTo6fkNDU2luZ2xlVGhyZWFkUHJveHkiLCB0
aGlzLCAwKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9sYXll
clRyZWVIb3N0SW1wbCAmJiAhbV9sYXllclRyZWVIb3N0KTsgLy8gbWFrZSBzdXJlIHN0b3AoKSBn
b3QgY2FsbGVkLgogfQogCkBAIC0xODYsOCArMTg2LDggQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFBy
b3h5OjpzZXROZWVkc1JlZHJhdygpCiAKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c3RvcCgp
CiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDU2luZ2xlVGhyZWFkUHJveHk6OnN0b3AiLCB0aGlzLCAw
KTsKLSAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOworICAgIENPTVBPU0lUT1Jf
VFJBQ0VfRVZFTlQoIkNDU2luZ2xlVGhyZWFkUHJveHk6OnN0b3AiLCB0aGlzLCAwKTsKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIHsKICAgICAgICAgU2NvcGVkU2V0SW1wbFRocmVh
ZCBpbXBsOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNP
bkNDVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggZTQwOTgyM2JhNzU0ZmRlMWQ4Yjk5
NDBlOTA0MmQ1OTQ2OTUwMGIxMi4uNjg4NzI4YTdhNzNjNTRhMmIyMDA5MzIyYmM2ODY4YTk3YTFi
MDZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTI2LDggKzI2LDggQEAKIAog
I2luY2x1ZGUgImNjL0NDVGhyZWFkUHJveHkuaCIKIAorI2luY2x1ZGUgIkNvbXBvc2l0b3JUcmFj
ZUV2ZW50LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRlICJUcmFj
ZUV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiY2Mv
Q0NNYWluVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkVGFzay5oIgpAQCAtNTgs
NyArNTgsNyBAQCBDQ1RocmVhZFByb3h5OjpDQ1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCog
bGF5ZXJUcmVlSG9zdCkKICAgICAsIG1fZHJhd1Rhc2tQb3N0ZWRPbkNDVGhyZWFkKGZhbHNlKQog
ICAgICwgbV9yZWRyYXdSZXF1ZXN0ZWRPbkNDVGhyZWFkKGZhbHNlKQogewotICAgIFRSQUNFX0VW
RU5UKCJDQ1RocmVhZFByb3h5OjpDQ1RocmVhZFByb3h5IiwgdGhpcywgMCk7CisgICAgQ09NUE9T
SVRPUl9UUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6Q0NUaHJlYWRQcm94eSIsIHRoaXMsIDAp
OwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbnVtUHJveGllcysrOwogICAgIGlm
ICghY2NUaHJlYWQpIHsKQEAgLTcxLDcgKzcxLDcgQEAgQ0NUaHJlYWRQcm94eTo6Q0NUaHJlYWRQ
cm94eShDQ0xheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QpCiAKIENDVGhyZWFkUHJveHk6On5D
Q1RocmVhZFByb3h5KCkKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6fkNDVGhy
ZWFkUHJveHkiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJDQ1RocmVh
ZFByb3h5Ojp+Q0NUaHJlYWRQcm94eSIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAgICAgQVNTRVJUKCFtX3N0YXJ0ZWQpOwogCkBAIC0xODksNyArMTg5LDcgQEAgdm9p
ZCBDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdCgpCiAgICAgaWYgKG1fY29tbWl0UmVxdWVz
dGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6
c2V0TmVlZHNDb21taXQiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJD
Q1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdCIsIHRoaXMsIDApOwogICAgIG1fY29tbWl0UmVx
dWVzdGVkID0gdHJ1ZTsKICAgICBjY1RocmVhZC0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNr
KHRoaXMsICZDQ1RocmVhZFByb3h5Ojp1cGRhdGVTY2hlZHVsZXJTdGF0ZU9uQ0NUaHJlYWQsIG1f
Y29tbWl0UmVxdWVzdGVkLCB0cnVlKSk7CiB9CkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBDQ1Ro
cmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpCiAgICAgICAgIHJldHVybjsKICAg
ICBtX2NvbW1pdFJlcXVlc3RlZCA9IHRydWU7CiAKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQ
cm94eTo6c2V0TmVlZHNDb21taXRBbmRSZWRyYXciLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9S
X1RSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdEFuZFJlZHJhdyIsIHRo
aXMsIDApOwogICAgIGNjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywg
JkNDVGhyZWFkUHJveHk6OnVwZGF0ZVNjaGVkdWxlclN0YXRlT25DQ1RocmVhZCwgbV9jb21taXRS
ZXF1ZXN0ZWQsIHRydWUpKTsKIH0KIApAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQgQ0NUaHJlYWRQ
cm94eTo6c2V0TmVlZHNSZWRyYXcoKQogICAgIC8vIHRocmVhZC4gVGhpcyBzaG91bGQgbm90IGJl
IG11Y2ggb2YgYSBwcm9ibGVtIGJlY2F1c2UgY2FsbHMgdG8KICAgICAvLyBzZXROZWVkc1JlZHJh
dyBtZXNzYWdlcyBhcmUgdW5jb21tb24gKG9ubHkgdHJpZ2dlcmVkIGJ5IFdNX1BBSU5UL2V0Yyks
CiAgICAgLy8gY29tcGFyZWQgdG8gc2V0TmVlZHNDb21taXRBbmRSZWRyYXcgbWVzc2FnZXMuCi0g
ICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3IiwgdGhpcywgMCk7
CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNSZWRy
YXciLCB0aGlzLCAwKTsKICAgICBjY1RocmVhZC0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNr
KHRoaXMsICZDQ1RocmVhZFByb3h5Ojp1cGRhdGVTY2hlZHVsZXJTdGF0ZU9uQ0NUaHJlYWQsIGZh
bHNlLCB0cnVlKSk7CiB9CiAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6
OnN0YXJ0KCkKIAogdm9pZCBDQ1RocmVhZFByb3h5OjpzdG9wKCkKIHsKLSAgICBUUkFDRV9FVkVO
VCgiQ0NUaHJlYWRQcm94eTo6c3RvcCIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0Vf
RVZFTlQoIkNDVGhyZWFkUHJveHk6OnN0b3AiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3N0YXJ0ZWQpOwogCkBAIC0yNDksNyArMjQ5LDcgQEAg
dm9pZCBDQ1RocmVhZFByb3h5OjpzdG9wKCkKIAogdm9pZCBDQ1RocmVhZFByb3h5OjpmaW5pc2hB
bGxSZW5kZXJpbmdPbkNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQogewot
ICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpmaW5pc2hBbGxSZW5kZXJpbmdPbkNDVGhy
ZWFkIiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94
eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25DQ1RocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChp
c0ltcGxUaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX2JlZ2luRnJhbWVBbmRDb21taXRQZW5kaW5n
T25DQ1RocmVhZCk7CiAgICAgaWYgKG1fcmVkcmF3UmVxdWVzdGVkT25DQ1RocmVhZCkgewpAQCAt
MjcwLDcgKzI3MCw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6b2J0YWluQmVnaW5GcmFtZUFuZENv
bW1pdFRhc2tGcm9tQ0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqCiAKIFBhc3NPd25QdHI8Q0NN
YWluVGhyZWFkOjpUYXNrPiBDQ1RocmVhZFByb3h5OjpjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0
VGFza09uQ0NUaHJlYWQoKQogewotICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpjcmVh
dGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKKyAgICBDT01Q
T1NJVE9SX1RSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpjcmVhdGVCZWdpbkZyYW1lQW5kQ29t
bWl0VGFza09uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkp
OwogICAgIGRvdWJsZSBmcmFtZUJlZ2luVGltZSA9IGN1cnJlbnRUaW1lKCk7CiAgICAgbV9iZWdp
bkZyYW1lQW5kQ29tbWl0UGVuZGluZ09uQ0NUaHJlYWQgPSB0cnVlOwpAQCAtMjkxLDcgKzI5MSw3
IEBAIFBhc3NPd25QdHI8Q0NNYWluVGhyZWFkOjpUYXNrPiBDQ1RocmVhZFByb3h5OjpjcmVhdGVC
ZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uQ0NUCiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5G
cmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltZSkK
IHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdCIs
IHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmJl
Z2luRnJhbWVBbmRDb21taXQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIGlmICghbV9sYXllclRyZWVIb3N0KQogICAgICAgICByZXR1cm47CkBAIC0yOTksNyAr
Mjk5LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1
ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KICAgICAvLyBEcm9wIGJlZ2luRnJhbWVB
bmRDb21taXQgY2FsbHMgdGhhdCBvY2N1ciBvdXQgb2Ygc2VxdWVuY2UuIFNlZSBjcmVhdGVCZWdp
bkZyYW1lQW5kQ29tbWl0VGFza09uQ0NUaHJlYWQgZm9yCiAgICAgLy8gYW4gZXhwbGFuYXRpb24g
b2YgaG93IG91dC1vZi1zZXF1ZW5jZSBiZWdpbkZyYW1lQW5kQ29tbWl0IHRhc2tzIGNhbiBvY2N1
ci4KICAgICBpZiAoc2VxdWVuY2VOdW1iZXIgPCBtX2xhc3RFeGVjdXRlZEJlZ2luRnJhbWVBbmRD
b21taXRTZXF1ZW5jZU51bWJlcikgewotICAgICAgICBUUkFDRV9FVkVOVCgiRWFybHlPdXRfU3Rh
bGVCZWdpbkZyYW1lQW5kQ29tbWl0IiwgdGhpcywgMCk7CisgICAgICAgIENPTVBPU0lUT1JfVFJB
Q0VfRVZFTlQoIkVhcmx5T3V0X1N0YWxlQmVnaW5GcmFtZUFuZENvbW1pdCIsIHRoaXMsIDApOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fbGFzdEV4ZWN1dGVkQmVnaW5GcmFtZUFuZENv
bW1pdFNlcXVlbmNlTnVtYmVyID0gc2VxdWVuY2VOdW1iZXI7CkBAIC0zMDgsNyArMzA4LDcgQEAg
dm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJl
ciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KIAogICAgIC8vIEZJWE1FOiByZWNyZWF0ZSB0aGUgY29u
dGV4dCBpZiBpdCB3YXMgcmVxdWVzdGVkIGJ5IHRoZSBpbXBsIHRocmVhZAogICAgIHsKLSAgICAg
ICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6YW5pbWF0ZUFuZExheW91dCIsIHRoaXMs
IDApOworICAgICAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OmFu
aW1hdGVBbmRMYXlvdXQiLCB0aGlzLCAwKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5hbmlt
YXRlQW5kTGF5b3V0KGZyYW1lQmVnaW5UaW1lKTsKICAgICB9CiAKQEAgLTMyMyw3ICszMjMsNyBA
QCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVt
YmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbQogCiAgICAgewogICAgICAgICAvLyBCbG9ja2luZyBj
YWxsIHRvIENDVGhyZWFkUHJveHk6OmNvbW1pdE9uQ0NUaHJlYWQKLSAgICAgICAgVFJBQ0VfRVZF
TlQoImNvbW1pdCIsIHRoaXMsIDApOworICAgICAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJj
b21taXQiLCB0aGlzLCAwKTsKICAgICAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsK
ICAgICAgICAgY2NUaHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NU
aHJlYWRQcm94eTo6Y29tbWl0T25DQ1RocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmY29t
cGxldGlvbikpKTsKICAgICAgICAgY29tcGxldGlvbi53YWl0KCk7CkBAIC0zMzYsNyArMzM2LDcg
QEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51
bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KIAogdm9pZCBDQ1RocmVhZFByb3h5Ojpjb21taXRP
bkNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQogewotICAgIFRSQUNFX0VW
RU5UKCJDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0T25DQ1RocmVhZCIsIHRoaXMs
IDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmJlZ2luRnJh
bWVBbmRDb21taXRPbkNDVGhyZWFkIiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVh
ZCgpKTsKICAgICBBU1NFUlQobV9iZWdpbkZyYW1lQW5kQ29tbWl0UGVuZGluZ09uQ0NUaHJlYWQp
OwogICAgIG1fYmVnaW5GcmFtZUFuZENvbW1pdFBlbmRpbmdPbkNDVGhyZWFkID0gZmFsc2U7CkBA
IC0zNTksNyArMzU5LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZURyYXdUYXNrT25D
Q1RocmVhZCgpCiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBpZiAobV9kcmF3VGFz
a1Bvc3RlZE9uQ0NUaHJlYWQpCiAgICAgICAgIHJldHVybjsKLSAgICBUUkFDRV9FVkVOVCgiQ0NU
aHJlYWRQcm94eTo6c2NoZWR1bGVEcmF3VGFza09uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKKyAgICBD
T01QT1NJVE9SX1RSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZURyYXdUYXNrT25D
Q1RocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChtX2xheWVyVHJlZUhvc3RJbXBsKTsKICAg
ICBtX2RyYXdUYXNrUG9zdGVkT25DQ1RocmVhZCA9IHRydWU7CiAgICAgY2NUaHJlYWQtPnBvc3RU
YXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6ZHJhd0xheWVyc0Fu
ZFByZXNlbnRPbkNDVGhyZWFkKSk7CkBAIC0zNjcsNyArMzY3LDcgQEAgdm9pZCBDQ1RocmVhZFBy
b3h5OjpzY2hlZHVsZURyYXdUYXNrT25DQ1RocmVhZCgpCiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6
ZHJhd0xheWVyc0FuZFByZXNlbnRPbkNDVGhyZWFkKCkKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NU
aHJlYWRQcm94eTo6ZHJhd0xheWVyc09uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJ
VE9SX1RSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJzT25DQ1RocmVhZCIsIHRo
aXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgaWYgKCFtX2xheWVyVHJl
ZUhvc3RJbXBsKQogICAgICAgICByZXR1cm47CkBAIC0zODAsNyArMzgwLDcgQEAgdm9pZCBDQ1Ro
cmVhZFByb3h5OjpkcmF3TGF5ZXJzQW5kUHJlc2VudE9uQ0NUaHJlYWQoKQogCiB2b2lkIENDVGhy
ZWFkUHJveHk6OmRyYXdMYXllcnNPbkNDVGhyZWFkKCkKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NU
aHJlYWRQcm94eTo6ZHJhd0xheWVyc09uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJ
VE9SX1RSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJzT25DQ1RocmVhZCIsIHRo
aXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fbGF5ZXJU
cmVlSG9zdEltcGwpOwogCkBAIC0zOTAsNyArMzkwLDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojpk
cmF3TGF5ZXJzT25DQ1RocmVhZCgpCiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6dXBkYXRlU2NoZWR1
bGVyU3RhdGVPbkNDVGhyZWFkKGJvb2wgY29tbWl0UmVxdWVzdGVkLCBib29sIHJlZHJhd1JlcXVl
c3RlZCkKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6dXBkYXRlU2NoZWR1bGVy
U3RhdGVPbkNDVGhyZWFkIiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgi
Q0NUaHJlYWRQcm94eTo6dXBkYXRlU2NoZWR1bGVyU3RhdGVPbkNDVGhyZWFkIiwgdGhpcywgMCk7
CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBBU1NFUlQobV9sYXllclRyZWVIb3N0
SW1wbCk7CiAKQEAgLTQwOSw3ICs0MDksNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnVwZGF0ZVNj
aGVkdWxlclN0YXRlT25DQ1RocmVhZChib29sIGNvbW1pdFJlcXVlc3RlZCwgYm9vbCByZQogCiB2
b2lkIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVJbXBsT25DQ1RocmVhZChDQ0NvbXBsZXRpb25F
dmVudCogY29tcGxldGlvbikKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6aW5p
dGlhbGl6ZUltcGxPbkNDVGhyZWFkIiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9F
VkVOVCgiQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUltcGxPbkNDVGhyZWFkIiwgdGhpcywgMCk7
CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsID0g
bV9sYXllclRyZWVIb3N0LT5jcmVhdGVMYXllclRyZWVIb3N0SW1wbCgpOwogICAgIGNvbXBsZXRp
b24tPnNpZ25hbCgpOwpAQCAtNDE3LDcgKzQxNyw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6aW5p
dGlhbGl6ZUltcGxPbkNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQogCiB2
b2lkIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVyT25DQ1RocmVhZChHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dFB0ciwgQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24s
IGJvb2wqIGluaXRpYWxpemVTdWNjZWVkZWQsIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMqIGNh
cGFiaWxpdGllcykKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6
ZUxheWVyUmVuZGVyZXJPbkNDVGhyZWFkIiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFD
RV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJPbkNDVGhyZWFk
IiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+IGNvbnRleHQoYWRvcHRSZWYoY29udGV4dFB0cikpOwogICAgICppbml0
aWFsaXplU3VjY2VlZGVkID0gbV9sYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVu
ZGVyZXIoY29udGV4dCk7CkBAIC00MjgsNyArNDI4LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojpp
bml0aWFsaXplTGF5ZXJSZW5kZXJlck9uQ0NUaHJlYWQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQKIAogdm9pZCBDQ1RocmVhZFByb3h5OjpsYXllclRyZWVIb3N0Q2xvc2VkT25DQ1RocmVhZChD
Q0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJl
YWRQcm94eTo6bGF5ZXJUcmVlSG9zdENsb3NlZE9uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKKyAgICBD
T01QT1NJVE9SX1RSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpsYXllclRyZWVIb3N0Q2xvc2Vk
T25DQ1RocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAg
bV9sYXllclRyZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25DQ1RocmVhZChtX2xheWVy
VHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CiAgICAgbV9sYXllclRy
ZWVIb3N0SW1wbC5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBjYjg4NmVk
YzlkMzM0ZGJmYjVkYzc3YmMxNmFkY2JiODM4ZWVlNjc3Li5mMDY4YmMxMjAzYTk4MjQ2OTc2ZWI3
OWRkMDQ1ZDFhYWNmOTU5NzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIzIEBACisyMDExLTA5LTI4ICBBbnRvaW5lIExhYm91ciAgPHBpbWFuQGNocm9taXVtLm9yZz4K
KworICAgICAgICBTZXBhcmF0ZSBjb21wb3NpdG9yIHBsYXRmb3JtIHN1cHBvcnQgZnJvbSB3ZWJr
aXQncyBwbGF0Zm9ybSBzdXBwb3J0LgorICAgICAgICBUaGlzIGlzIHNvIHRoYXQgdGhlIGNvbXBv
c2l0b3IgY2FuIGJlIHVzZWQgaW4gYSB0aHJlYWQgc2VwYXJhdGUgZnJvbSB0aGUKKyAgICAgICAg
bWFpbiB3ZWJraXQgdGhyZWFkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjkwNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHB1YmxpYy9XZWJLaXQuaDoKKyAgICAgICAgKiBzcmMvV2ViS2l0LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViS2l0Q29tcG9zaXRvclN1cHBvcnQ6On5XZWJLaXRDb21wb3Np
dG9yU3VwcG9ydCk6CisgICAgICAgIChXZWJLaXQ6OldlYktpdENvbXBvc2l0b3JTdXBwb3J0Ojpj
dXJyZW50VGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYktpdENvbXBvc2l0b3JTdXBwb3J0Ojpo
aXN0b2dyYW1DdXN0b21Db3VudHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXRDb21wb3NpdG9y
U3VwcG9ydDo6dHJhY2VFdmVudEJlZ2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0Q29tcG9z
aXRvclN1cHBvcnQ6OnRyYWNlRXZlbnRFbmQpOgorICAgICAgICAoV2ViS2l0Ojppbml0aWFsaXpl
V2l0aG91dFY4KToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZVdpdGhvdXRWOEFuZENvbXBv
c2l0b3IpOgorICAgICAgICAoV2ViS2l0OjpzaHV0ZG93bik6CisKIDIwMTEtMDktMjggIEZhZHkg
U2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBTZXBl
cmF0ZSBHVEsgc3BlY2lmaWMgR3lwIHJ1bGVzIGZyb20gWDExIEd5cCBydWxlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0LmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJLaXQuaAppbmRleCA5OTFkNTQzMjc0MGM4NTQwNzgxZjU0ZWM0
ODI2OTEyNGMxZTE5ZjkxLi4wMmE2MGY4MjgxMGIxZWJmM2NmYjI4MGM5MjY3NWJiNTRjMjNkMGE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXQuaApAQCAtNDksNiArNDksMTQg
QEAgV0VCS0lUX0VYUE9SVCB2b2lkIGluaXRpYWxpemUoV2ViS2l0UGxhdGZvcm1TdXBwb3J0Kik7
CiAvLyBUaGlzIGlzIGEgc3BlY2lhbCB2YXJpYW50IG9mIGluaXRpYWxpemUgdGhhdCBkb2VzIG5v
dCBpbnRpdGlhbGl6ZSBWOC4KIFdFQktJVF9FWFBPUlQgdm9pZCBpbml0aWFsaXplV2l0aG91dFY4
KFdlYktpdFBsYXRmb3JtU3VwcG9ydCopOwogCisvLyBNdXN0IGJlIGNhbGxlZCBvbiB0aGUgdGhy
ZWFkIHRoYXQgd2lsbCBiZSB0aGUgbWFpbiBXZWJLaXQgdGhyZWFkIGJlZm9yZQorLy8gdXNpbmcg
YW55IG90aGVyIFdlYktpdCBBUElzLiBUaGUgcHJvdmlkZWQgV2ViS2l0UGxhdGZvcm1TdXBwb3J0
OyBtdXN0IGJlCisvLyBub24tbnVsbCBhbmQgbXVzdCByZW1haW4gdmFsaWQgdW50aWwgdGhlIGN1
cnJlbnQgdGhyZWFkIGNhbGxzIHNodXRkb3duLgorLy8KKy8vIFRoaXMgaXMgYSBzcGVjaWFsIHZh
cmlhbnQgb2YgaW5pdGlhbGl6ZSB0aGF0IGRvZXMgbm90IGludGl0aWFsaXplIFY4IG5vciB0aGUK
Ky8vIGNvbXBvc2l0b3IuCitXRUJLSVRfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZVdpdGhvdXRWOEFu
ZENvbXBvc2l0b3IoV2ViS2l0UGxhdGZvcm1TdXBwb3J0Kik7CisKIC8vIE9uY2Ugc2h1dGRvd24s
IHRoZSBXZWJLaXRQbGF0Zm9ybVN1cHBvcnQgcGFzc2VkIHRvIGluaXRpYWxpemUgd2lsbCBubyBs
b25nZXIKIC8vIGJlIGFjY2Vzc2VkLiBObyBvdGhlciBXZWJLaXQgb2JqZWN0cyBzaG91bGQgYmUg
aW4gdXNlIHdoZW4gdGhpcyBmdW5jdGlvbiBpcwogLy8gY2FsbGVkLiBBbnkgYmFja2dyb3VuZCB0
aHJlYWRzIGNyZWF0ZWQgYnkgV2ViS2l0IGFyZSBwcm9taXNlZCB0byBiZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYktpdC5jcHAKaW5kZXggNDIzYzQ1YWUzMjRlMTViN2IyZDQ0ZTBkNWRhYzQz
ZmM5YzM0MTA0Yi4uNjlhZDg1NzVkYWMyZjQzNmNiZDMyZDdiMjhiNGQ0YzI1Mjc1NGZkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAKKyNpbmNsdWRlICJDb21wb3Np
dG9yU3VwcG9ydC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgpAQCAtNTcsNiArNTgsMzIgQEAgc3Rh
dGljIGJvb2wgc193ZWJLaXRJbml0aWFsaXplZCA9IGZhbHNlOwogc3RhdGljIFdlYktpdFBsYXRm
b3JtU3VwcG9ydCogc193ZWJLaXRQbGF0Zm9ybVN1cHBvcnQgPSAwOwogc3RhdGljIGJvb2wgc19s
YXlvdXRUZXN0TW9kZSA9IGZhbHNlOwogCitjbGFzcyBXZWJLaXRDb21wb3NpdG9yU3VwcG9ydCA6
IHB1YmxpYyBXZWJDb3JlOjpDb21wb3NpdG9yU3VwcG9ydERlbGVnYXRlIHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIH5XZWJLaXRDb21wb3NpdG9yU3VwcG9ydCgpIHsgfQorCisgICAgdmlydHVhbCBk
b3VibGUgY3VycmVudFRpbWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNfd2ViS2l0UGxhdGZv
cm1TdXBwb3J0LT5jdXJyZW50VGltZSgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBoaXN0
b2dyYW1DdXN0b21Db3VudHMoY29uc3QgY2hhciogbmFtZSwgaW50IHNhbXBsZSwgaW50IG1pbiwg
aW50IG1heCwgaW50IGJ1Y2tldENvdW50KQorICAgIHsKKyAgICAgICAgc193ZWJLaXRQbGF0Zm9y
bVN1cHBvcnQtPmhpc3RvZ3JhbUN1c3RvbUNvdW50cyhuYW1lLCBzYW1wbGUsIG1pbiwgbWF4LCBi
dWNrZXRDb3VudCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHRyYWNlRXZlbnRCZWdpbihj
b25zdCBjaGFyKiBuYW1lLCB2b2lkKiBpZCwgY29uc3QgY2hhciogZXh0cmEpCisgICAgeworICAg
ICAgICBzX3dlYktpdFBsYXRmb3JtU3VwcG9ydC0+dHJhY2VFdmVudEJlZ2luKG5hbWUsIGlkLCBl
eHRyYSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHRyYWNlRXZlbnRFbmQoY29uc3QgY2hh
ciogbmFtZSwgdm9pZCogaWQsIGNvbnN0IGNoYXIqIGV4dHJhKQorICAgIHsKKyAgICAgICAgc193
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQtPnRyYWNlRXZlbnRFbmQobmFtZSwgaWQsIGV4dHJhKTsKKyAg
ICB9Cit9Oworc3RhdGljIFdlYktpdENvbXBvc2l0b3JTdXBwb3J0KiBzX2NvbXBvc2l0b3JTdXBw
b3J0ID0gMDsKKwogc3RhdGljIGJvb2wgZ2VuZXJhdGVFbnRyb3B5KHVuc2lnbmVkIGNoYXIqIGJ1
ZmZlciwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBpZiAoc193ZWJLaXRQbGF0Zm9ybVN1cHBvcnQp
IHsKQEAgLTc3LDYgKzEwNCwxNCBAQCB2b2lkIGluaXRpYWxpemUoV2ViS2l0UGxhdGZvcm1TdXBw
b3J0KiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQpCiAKIHZvaWQgaW5pdGlhbGl6ZVdpdGhvdXRWOChX
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQqIHdlYktpdFBsYXRmb3JtU3VwcG9ydCkKIHsKKyAgICBpbml0
aWFsaXplV2l0aG91dFY4QW5kQ29tcG9zaXRvcih3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQpOworICAg
IEFTU0VSVCghV2ViQ29yZTo6Q29tcG9zaXRvclN1cHBvcnQ6OmRlbGVnYXRlKCkpOworICAgIHNf
Y29tcG9zaXRvclN1cHBvcnQgPSBuZXcgV2ViS2l0Q29tcG9zaXRvclN1cHBvcnQ7CisgICAgV2Vi
Q29yZTo6Q29tcG9zaXRvclN1cHBvcnQ6OmluaXRpYWxpemUoc19jb21wb3NpdG9yU3VwcG9ydCk7
Cit9CisKK3ZvaWQgaW5pdGlhbGl6ZVdpdGhvdXRWOEFuZENvbXBvc2l0b3IoV2ViS2l0UGxhdGZv
cm1TdXBwb3J0KiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQpCit7CiAgICAgQVNTRVJUKCFzX3dlYktp
dEluaXRpYWxpemVkKTsKICAgICBzX3dlYktpdEluaXRpYWxpemVkID0gdHJ1ZTsKIApAQCAtOTYs
MTMgKzEzMSwxNiBAQCB2b2lkIGluaXRpYWxpemVXaXRob3V0VjgoV2ViS2l0UGxhdGZvcm1TdXBw
b3J0KiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQpCiAgICAgLy8gdGhlIGluaXRpYWxpemF0aW9uIHRo
cmVhZC1zYWZlLCBidXQgZ2l2ZW4gdGhhdCBzbyBtYW55IGNvZGUgcGF0aHMgdXNlCiAgICAgLy8g
dGhpcywgaW5pdGlhbGl6aW5nIHRoaXMgbGF6aWx5IHByb2JhYmx5IGRvZXNuJ3QgYnV5IHVzIG11
Y2guCiAgICAgV2ViQ29yZTo6VVRGOEVuY29kaW5nKCk7Ci0KLSAKIH0KIAogCiB2b2lkIHNodXRk
b3duKCkKIHsKKyAgICBpZiAoc19jb21wb3NpdG9yU3VwcG9ydCkgeworICAgICAgICBXZWJDb3Jl
OjpDb21wb3NpdG9yU3VwcG9ydDo6c2h1dGRvd24oKTsKKyAgICAgICAgZGVsZXRlIHNfY29tcG9z
aXRvclN1cHBvcnQ7CisgICAgICAgIHNfY29tcG9zaXRvclN1cHBvcnQgPSAwOworICAgIH0KICAg
ICBzX3dlYktpdFBsYXRmb3JtU3VwcG9ydCA9IDA7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109116</attachid>
            <date>2011-09-28 20:37:05 -0700</date>
            <delta_ts>2011-10-06 18:34:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69048-20110928203704.patch</filename>
            <type>text/plain</type>
            <size>58908</size>
            <attacher name="Antoine Labour">piman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYyNjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMDgwYzgwMDAyZTFkNTIz
MjcyYjM3NDZkZWVkNGRkZWZiYTVjZjZiLi5jZjg0MDY2ODQ0MDdmYjU1NWQ4OGM3OWE3OGQyNzM1
ZGU0OWQ4YWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAwIEBACisyMDExLTA5LTI4ICBBbnRv
aW5lIExhYm91ciAgPHBpbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBTZXBhcmF0ZSBjb21w
b3NpdG9yIHBsYXRmb3JtIHN1cHBvcnQgZnJvbSB3ZWJraXQncyBwbGF0Zm9ybSBzdXBwb3J0Lgor
ICAgICAgICBUaGlzIGlzIHNvIHRoYXQgdGhlIGNvbXBvc2l0b3IgY2FuIGJlIHVzZWQgaW4gYSB0
aHJlYWQgc2VwYXJhdGUgZnJvbSB0aGUKKyAgICAgICAgbWFpbiB3ZWJraXQgdGhyZWFkLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkwNDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4
aXN0aW5nIGNvbXBvc2l0aW5nIHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1RyYWNlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OmludGVybmFsOjo6OlNjb3BlVHJhY2VyKToKKyAgICAgICAgKFdlYkNvcmU6OmludGVybmFsOjo6
On5TY29wZVRyYWNlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29t
cG9zaXRvclN1cHBvcnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0b3JT
dXBwb3J0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0b3JTdXBwb3J0
OjpzaHV0ZG93bik6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdG9yU3VwcG9ydDo6Y3VycmVu
dFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRvclN1cHBvcnQ6Omhpc3RvZ3JhbUN1
c3RvbUNvdW50cyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdG9yU3VwcG9ydDo6dHJhY2VF
dmVudEJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0b3JTdXBwb3J0Ojp0cmFjZUV2
ZW50RW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db21wb3NpdG9y
U3VwcG9ydC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0b3JTdXBwb3J0RGVs
ZWdhdGU6On5Db21wb3NpdG9yU3VwcG9ydERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXBvc2l0b3JTdXBwb3J0OjpkZWxlZ2F0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29tcG9zaXRvclRyYWNlRXZlbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHAuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyUGFpbnRlcjo6cGFpbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzSW50ZXJuYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpmaW5pc2gpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpwcmVzZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpib3JkZXJQcm9ncmFtKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aGVhZHNVcERpc3BsYXlQ
cm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVy
U3VyZmFjZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
OjpyZW5kZXJTdXJmYWNlUHJvZ3JhbUFBKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1BQSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbVN3aXp6
bGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dy
YW1Td2l6emxlQUEpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpj
YW52YXNMYXllclByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpwbHVnaW5MYXllclByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjp2aWRlb0xheWVyUkdCQVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjp2aWRlb0xheWVyWVVWUHJvZ3JhbSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhUZXhTdWJJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aE1hcFRl
eFN1YkltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRl
eHR1cmVVcGRhdGVyQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVw
ZGF0ZXJDYW52YXM6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyYW1C
aW5kaW5nQmFzZTo6Y3JlYXRlU2hhZGVyUHJvZ3JhbSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xMYXllckNocm9taXVtOjpyYXRlTGltaXRDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDSGVhZHNVcERpc3BsYXk6OkNDSGVhZHNVcERpc3BsYXkpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNvcnRMYXllcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3Q6On5DQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
Ojpjb21taXRUb09uQ0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
OjpzZXROZWVkc0NvbW1pdEFuZFJlZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OnVwZGF0ZUxheWVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3RJbXBsOjp+Q0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJveHk6
OmlzTWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Byb3h5OjpzZXRNYWluVGhyZWFk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5OjpDQ1NpbmdsZVRo
cmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6On5DQ1Np
bmdsZVRocmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6
OnN0b3ApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6Q0NUaHJlYWRQcm94
eSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojp+Q0NUaHJlYWRQcm94eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdEFuZFJlZHJhdyk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzZXROZWVkc1JlZHJhdyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFk
UHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uQ0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6Y3JlYXRlQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tPbkNDVGhyZWFkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6Y29tbWl0T25DQ1RocmVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZURyYXdUYXNrT25DQ1RocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJzQW5kUHJlc2VudE9u
Q0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6ZHJhd0xheWVyc09u
Q0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dXBkYXRlU2NoZWR1
bGVyU3RhdGVPbkNDVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6Omlu
aXRpYWxpemVJbXBsT25DQ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5
Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uQ0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6bGF5ZXJUcmVlSG9zdENsb3NlZE9uQ0NUaHJlYWQpOgorCiAyMDExLTA5
LTI4ICBTZXJnZXkgR2xhenVub3YgIDxzZXJnLmdsYXp1bm92QGdtYWlsLmNvbT4KIAogICAgICAg
ICBKYXZhU2NyaXB0IGdlbmVyYXRlZCBkb2N1bWVudHMgZG9uJ3QgaW5oZXJpdCB0aGUgY29va2ll
IFVSTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDA0MjA0ZWE2YWJjNmQ0NmIzZjBkNTEyNjdjZGRkNjlh
MDFhYTU3MTcuLjkyZmY2MWEzOThjNDE2ZjdiOGQwOWViNGRmNzRhMzhhNzlhYWRmOTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTM0MDYsNiArMzQwNiw5IEBACiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db21wbGV4VGV4dENvbnRyb2xsZXJMaW51eC5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbXBsZXhUZXh0Q29u
dHJvbGxlckxpbnV4LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NvbXBvc2l0b3JTdXBwb3J0LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29tcG9zaXRvclN1cHBvcnQuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ29tcG9zaXRvclRyYWNlRXZlbnQuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Dcm9zc1Byb2Nlc3NG
b250TG9hZGluZy5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1RyYWNlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1RyYWNl
RXZlbnQuaAppbmRleCBkYjhjNzRiMmExZDA4OWI3NDJhZmIwMGQ0NGZhZDRiYjc2YzE2YzQ3Li45
NTUxNTIzY2MwMzc2MDU2ODdiNDc1ZjBlZGM4MTVmNzhlZjUyMDgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9UcmFjZUV2ZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vVHJhY2VFdmVudC5oCkBAIC0zNiwxNCArMzYsMTQgQEAK
ICNkZWZpbmUgVFJBQ0VfRVZFTlRfTUFLRV9VTklRVUVfSURFTlRJRklFUihuYW1lX3ByZWZpeCkg
VFJBQ0VfRVZFTlRfTUFLRV9VTklRVUVfSURFTlRJRklFUjIobmFtZV9wcmVmaXgsIF9fTElORV9f
KQogCiAvLyBJc3N1ZXMgUGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2ZW50QmVnaW4gYW5kIHRyYWNl
RXZlbnRFbmQgY2FsbHMgZm9yIHRoZSBlbmNsb3Npbmcgc2NvcGUKLSNkZWZpbmUgVFJBQ0VfRVZF
TlQobmFtZSwgaWQsIGV4dHJhKSBXZWJDb3JlOjppbnRlcm5hbDo6U2NvcGVUcmFjZXIgVFJBQ0Vf
RVZFTlRfTUFLRV9VTklRVUVfSURFTlRJRklFUihfX3RyYWNlRXZlbnRTY29wZSkobmFtZSwgaWQs
IGV4dHJhKTsKKyNkZWZpbmUgVFJBQ0VfRVZFTlQobmFtZSwgaWQsIGV4dHJhKSBXZWJDb3JlOjpp
bnRlcm5hbDo6U2NvcGVUcmFjZXI8V2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0PiBUUkFDRV9FVkVO
VF9NQUtFX1VOSVFVRV9JREVOVElGSUVSKF9fdHJhY2VFdmVudFNjb3BlKShuYW1lLCBpZCwgZXh0
cmEpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBpbnRlcm5hbCB7CiAKIC8v
IFVzZWQgYnkgVFJBQ0VfRVZFTlQgbWFjcm8uIERvIG5vdCB1c2UgZGlyZWN0bHkuCi1jbGFzcyBT
Y29wZVRyYWNlciB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBTdXBwb3J0PiBjbGFzcyBTY29wZVRyYWNl
ciB7CiBwdWJsaWM6CiAgICAgU2NvcGVUcmFjZXIoY29uc3QgY2hhciogbmFtZSwgdm9pZCosIGNv
bnN0IGNoYXIqIGV4dHJhKTsKICAgICB+U2NvcGVUcmFjZXIoKTsKQEAgLTU0LDE4ICs1NCwxOCBA
QCBwcml2YXRlOgogICAgIE93bkFycmF5UHRyPGNoYXI+IG1fZXh0cmE7CiB9OwogCi1pbmxpbmUg
U2NvcGVUcmFjZXI6OlNjb3BlVHJhY2VyKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBjb25z
dCBjaGFyKiBleHRyYSkKK3RlbXBsYXRlPHR5cGVuYW1lIFN1cHBvcnQ+IGlubGluZSBTY29wZVRy
YWNlcjxTdXBwb3J0Pjo6U2NvcGVUcmFjZXIoY29uc3QgY2hhciogbmFtZSwgdm9pZCogaWQsIGNv
bnN0IGNoYXIqIGV4dHJhKQogICAgIDogbV9uYW1lKG5hbWUpCiAgICAgLCBtX2lkKGlkKQogewot
ICAgIFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVudEJlZ2luKG5hbWUsIGlkLCBleHRyYSk7IFwK
KyAgICBTdXBwb3J0Ojp0cmFjZUV2ZW50QmVnaW4obmFtZSwgaWQsIGV4dHJhKTsgXAogICAgIGlm
IChleHRyYSkKICAgICAgICAgbV9leHRyYSA9IGFkb3B0QXJyYXlQdHIoc3RyZHVwKGV4dHJhKSk7
CiB9CiAKLWlubGluZSBTY29wZVRyYWNlcjo6flNjb3BlVHJhY2VyKCkKK3RlbXBsYXRlPHR5cGVu
YW1lIFN1cHBvcnQ+IGlubGluZSBTY29wZVRyYWNlcjxTdXBwb3J0Pjo6flNjb3BlVHJhY2VyKCkK
IHsKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRFbmQobV9uYW1lLCBtX2lkLCBtX2V4
dHJhLmdldCgpKTsKKyAgICBTdXBwb3J0Ojp0cmFjZUV2ZW50RW5kKG1fbmFtZSwgbV9pZCwgbV9l
eHRyYS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIGludGVybmFsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db21wb3NpdG9yU3VwcG9y
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db21wb3Np
dG9yU3VwcG9ydC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTUyMzc5YjA5NjMwN2NlYmZmOTFmODdlZWNjMDk4
ZTY4ZThiNGE1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbXBvc2l0b3JTdXBwb3J0LmNwcApAQCAtMCwwICsxLDczIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb21wb3NpdG9yU3VwcG9ydC5oIgor
CisjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitDb21wb3NpdG9yU3VwcG9ydERlbGVnYXRlKiBDb21wb3Np
dG9yU3VwcG9ydDo6c19kZWxlZ2F0ZTsKKwordm9pZCBDb21wb3NpdG9yU3VwcG9ydDo6aW5pdGlh
bGl6ZShDb21wb3NpdG9yU3VwcG9ydERlbGVnYXRlKiBkZWxlZ2F0ZSkKK3sKKyAgICBzX2RlbGVn
YXRlID0gZGVsZWdhdGU7CisjaWZuZGVmIE5ERUJVRworICAgIENDUHJveHk6OnNldE1haW5UaHJl
YWQoY3VycmVudFRocmVhZCgpKTsKKyNlbmRpZgorfQorCit2b2lkIENvbXBvc2l0b3JTdXBwb3J0
OjpzaHV0ZG93bigpCit7CisjaWZuZGVmIE5ERUJVRworICAgIENDUHJveHk6OnNldE1haW5UaHJl
YWQoMCk7CisjZW5kaWYKKyAgICBzX2RlbGVnYXRlID0gMDsKK30KKworZG91YmxlIENvbXBvc2l0
b3JTdXBwb3J0OjpjdXJyZW50VGltZSgpCit7CisgICAgcmV0dXJuIHNfZGVsZWdhdGUtPmN1cnJl
bnRUaW1lKCk7Cit9CisKK3ZvaWQgQ29tcG9zaXRvclN1cHBvcnQ6Omhpc3RvZ3JhbUN1c3RvbUNv
dW50cyhjb25zdCBjaGFyKiBuYW1lLCBpbnQgc2FtcGxlLCBpbnQgbWluLCBpbnQgbWF4LCBpbnQg
YnVja2V0Q291bnQpCit7CisgICAgc19kZWxlZ2F0ZS0+aGlzdG9ncmFtQ3VzdG9tQ291bnRzKG5h
bWUsIHNhbXBsZSwgbWluLCBtYXgsIGJ1Y2tldENvdW50KTsKK30KKwordm9pZCBDb21wb3NpdG9y
U3VwcG9ydDo6dHJhY2VFdmVudEJlZ2luKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBjb25z
dCBjaGFyKiBleHRyYSkKK3sKKyAgICBzX2RlbGVnYXRlLT50cmFjZUV2ZW50QmVnaW4obmFtZSwg
aWQsIGV4dHJhKTsKK30KKwordm9pZCBDb21wb3NpdG9yU3VwcG9ydDo6dHJhY2VFdmVudEVuZChj
b25zdCBjaGFyKiBuYW1lLCB2b2lkKiBpZCwgY29uc3QgY2hhciogZXh0cmEpCit7CisgICAgc19k
ZWxlZ2F0ZS0+dHJhY2VFdmVudEVuZChuYW1lLCBpZCwgZXh0cmEpOworfQorCisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ29tcG9zaXRvclN1cHBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbXBvc2l0b3JTdXBwb3J0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTg1
ZThkYjVhYmY1ZTlhMGQ3YzQyMDQ2NmU5NDAzZjA2YTdhYzAyZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbXBvc2l0b3JTdXBw
b3J0LmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaWZuZGVmIENvbXBvc2l0b3JTdXBwb3J0X2gK
KyNkZWZpbmUgQ29tcG9zaXRvclN1cHBvcnRfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIENvbXBvc2l0b3JTdXBwb3J0RGVsZWdhdGUgeworcHVibGljOgorICAgIHZpcnR1YWwgZG91
YmxlIGN1cnJlbnRUaW1lKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoaXN0b2dyYW1DdXN0b21D
b3VudHMoY29uc3QgY2hhciogbmFtZSwgaW50IHNhbXBsZSwgaW50IG1pbiwgaW50IG1heCwgaW50
IGJ1Y2tldENvdW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRyYWNlRXZlbnRCZWdpbihjb25z
dCBjaGFyKiBuYW1lLCB2b2lkKiBldmVudElkLCBjb25zdCBjaGFyKiBleHRyYSkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCB0cmFjZUV2ZW50RW5kKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGV2ZW50
SWQsIGNvbnN0IGNoYXIqIGV4dHJhKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5D
b21wb3NpdG9yU3VwcG9ydERlbGVnYXRlKCkgeyB9Cit9OworCitjbGFzcyBDb21wb3NpdG9yU3Vw
cG9ydCB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZShDb21wb3NpdG9yU3Vw
cG9ydERlbGVnYXRlKik7CisgICAgc3RhdGljIHZvaWQgc2h1dGRvd24oKTsKKworICAgIHN0YXRp
YyBkb3VibGUgY3VycmVudFRpbWUoKTsKKyAgICBzdGF0aWMgdm9pZCBoaXN0b2dyYW1DdXN0b21D
b3VudHMoY29uc3QgY2hhciogbmFtZSwgaW50IHNhbXBsZSwgaW50IG1pbiwgaW50IG1heCwgaW50
IGJ1Y2tldENvdW50KTsKKyAgICBzdGF0aWMgdm9pZCB0cmFjZUV2ZW50QmVnaW4oY29uc3QgY2hh
ciogbmFtZSwgdm9pZCogZXZlbnRJZCwgY29uc3QgY2hhciogZXh0cmEpOworICAgIHN0YXRpYyB2
b2lkIHRyYWNlRXZlbnRFbmQoY29uc3QgY2hhciogbmFtZSwgdm9pZCogZXZlbnRJZCwgY29uc3Qg
Y2hhciogZXh0cmEpOworCisgICAgc3RhdGljIENvbXBvc2l0b3JTdXBwb3J0RGVsZWdhdGUqIGRl
bGVnYXRlKCkgeyByZXR1cm4gc19kZWxlZ2F0ZTsgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyBD
b21wb3NpdG9yU3VwcG9ydERlbGVnYXRlKiBzX2RlbGVnYXRlOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NvbXBvc2l0b3JUcmFjZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db21wb3NpdG9yVHJhY2VFdmVudC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY0ZGE1ODYxMDgxMWZmMDkzN2JjOGZkZDRlYjYxMmM1NDk2NzEyNmEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db21w
b3NpdG9yVHJhY2VFdmVudC5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2lmbmRlZiBDb21wb3Np
dG9yVHJhY2VFdmVudF9oCisjZGVmaW5lIENvbXBvc2l0b3JUcmFjZUV2ZW50X2gKKworI2luY2x1
ZGUgIkNvbXBvc2l0b3JTdXBwb3J0LmgiCisjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgorCisjZGVm
aW5lIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQobmFtZSwgaWQsIGV4dHJhKSBXZWJDb3JlOjppbnRl
cm5hbDo6U2NvcGVUcmFjZXI8Q29tcG9zaXRvclN1cHBvcnQ+IFRSQUNFX0VWRU5UX01BS0VfVU5J
UVVFX0lERU5USUZJRVIoX190cmFjZUV2ZW50U2NvcGUpKG5hbWUsIGlkLCBleHRyYSk7CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDlkZTRkYTlkNmQ2
ZDRiNDMwNzY2ZTE3OTI3MjhhMzAzOWVjNzA5MDEuLmVjNWMwMTEyZjgwOTdiZmU1N2I3NWM0YTZm
ZDEyNGQzYTkxYTZhYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKQEAg
LTM0LDEwICszNCwxMCBAQAogCiAjaW5jbHVkZSAiQ29udGVudExheWVyQ2hyb21pdW0uaCIKIAor
I2luY2x1ZGUgIkNvbXBvc2l0b3JTdXBwb3J0LmgiCiAjaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hy
b21pdW0uaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJM
YXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdXBwb3J0Lmgi
CiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CiAKQEAgLTUzLDE0ICs1MywxNCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVj
dCkKICAgICB7Ci0gICAgICAgIGRvdWJsZSBwYWludFN0YXJ0ID0gY3VycmVudFRpbWUoKTsKKyAg
ICAgICAgZG91YmxlIHBhaW50U3RhcnQgPSBDb21wb3NpdG9yU3VwcG9ydDo6Y3VycmVudFRpbWUo
KTsKICAgICAgICAgY29udGV4dC5jbGVhclJlY3QoY29udGVudFJlY3QpOwogICAgICAgICBjb250
ZXh0LmNsaXAoY29udGVudFJlY3QpOwogICAgICAgICBtX2RlbGVnYXRlLT5wYWludENvbnRlbnRz
KGNvbnRleHQsIGNvbnRlbnRSZWN0KTsKLSAgICAgICAgZG91YmxlIHBhaW50RW5kID0gY3VycmVu
dFRpbWUoKTsKKyAgICAgICAgZG91YmxlIHBhaW50RW5kID0gQ29tcG9zaXRvclN1cHBvcnQ6OmN1
cnJlbnRUaW1lKCk7CiAgICAgICAgIGRvdWJsZSBwaXhlbHNQZXJTZWMgPSAoY29udGVudFJlY3Qu
d2lkdGgoKSAqIGNvbnRlbnRSZWN0LmhlaWdodCgpKSAvIChwYWludEVuZCAtIHBhaW50U3RhcnQp
OwotICAgICAgICBQbGF0Zm9ybVN1cHBvcnQ6Omhpc3RvZ3JhbUN1c3RvbUNvdW50cygiUmVuZGVy
ZXI0LkFjY2VsQ29udGVudFBhaW50RHVyYXRpb25NUyIsIChwYWludEVuZCAtIHBhaW50U3RhcnQp
ICogMTAwMCwgMCwgMTIwLCAzMCk7Ci0gICAgICAgIFBsYXRmb3JtU3VwcG9ydDo6aGlzdG9ncmFt
Q3VzdG9tQ291bnRzKCJSZW5kZXJlcjQuQWNjZWxDb250ZW50UGFpbnRNZWdhcGl4UGVyU2Vjb25k
IiwgcGl4ZWxzUGVyU2VjIC8gMTAwMDAwMCwgMTAsIDIxMCwgMzApOworICAgICAgICBDb21wb3Np
dG9yU3VwcG9ydDo6aGlzdG9ncmFtQ3VzdG9tQ291bnRzKCJSZW5kZXJlcjQuQWNjZWxDb250ZW50
UGFpbnREdXJhdGlvbk1TIiwgKHBhaW50RW5kIC0gcGFpbnRTdGFydCkgKiAxMDAwLCAwLCAxMjAs
IDMwKTsKKyAgICAgICAgQ29tcG9zaXRvclN1cHBvcnQ6Omhpc3RvZ3JhbUN1c3RvbUNvdW50cygi
UmVuZGVyZXI0LkFjY2VsQ29udGVudFBhaW50TWVnYXBpeFBlclNlY29uZCIsIHBpeGVsc1BlclNl
YyAvIDEwMDAwMDAsIDEwLCAyMTAsIDMwKTsKICAgICB9CiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IENvbnRlbnRMYXllclBhaW50ZXIoQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IGZlYmRlYzU1NTdlNjk5ZTgyNmE5ODc4
Y2E3NGJlNzUwM2U1M2Y4NjIuLjhjOWRjYjc2NmI0YjE0OWNmOWZmMjYyMzcxMDY1OTQ0MTM2ZjRi
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtMzUsNiArMzUs
OCBAQAogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogCiAjaW5jbHVkZSAiQ2Fu
dmFzMkRMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiQ29tcG9zaXRvclN1cHBvcnQuaCIKKyNp
bmNsdWRlICJDb21wb3NpdG9yVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENo
cm9taXVtLmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiR2VvbWV0cnlCaW5k
aW5nLmgiCkBAIC01MCw3ICs1Miw2IEBACiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogI2luY2x1
ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVHJlZVN5bmNocm9uaXplci5oIgotI2lu
Y2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJUcmFja2luZ1RleHR1cmVBbGxvY2F0b3Iu
aCIKICNpbmNsdWRlICJXZWJHTExheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJjYy9DQ0xheWVy
SW1wbC5oIgpAQCAtMjMyLDcgKzIzMyw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpk
cmF3TGF5ZXJzKCkKICAgICAvLyBGSVhNRTogdXNlIHRoZSBmcmFtZSBiZWdpbiB0aW1lIGZyb20g
dGhlIG92ZXJhbGwgY29tcG9zaXRvciBzY2hlZHVsZXIuCiAgICAgLy8gVGhpcyB2YWx1ZSBpcyBj
dXJyZW50bHkgaW5hY2Nlc3NpYmxlIGJlY2F1c2UgaXQgaXMgdXAgaW4gQ2hyb21pdW0ncwogICAg
IC8vIFJlbmRlcldpZGdldC4KLSAgICBtX2hlYWRzVXBEaXNwbGF5LT5vbkZyYW1lQmVnaW4oY3Vy
cmVudFRpbWUoKSk7CisgICAgbV9oZWFkc1VwRGlzcGxheS0+b25GcmFtZUJlZ2luKENvbXBvc2l0
b3JTdXBwb3J0OjpjdXJyZW50VGltZSgpKTsKIAogICAgIGlmICghcm9vdExheWVyKCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTI1Niw3ICsyNTcsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6ZHJhd0xheWVyc0ludGVybmFsKCkKICAgICBpZiAodmlld3BvcnRTaXplKCkuaXNFbXB0eSgp
IHx8ICFyb290TGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVFJBQ0VfRVZFTlQoIkxh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVycyIsIHRoaXMsIDApOworICAgIENPTVBPU0lU
T1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVycyIsIHRoaXMs
IDApOwogICAgIENDTGF5ZXJJbXBsKiByb290RHJhd0xheWVyID0gcm9vdExheWVyKCk7CiAgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CiAKQEAgLTI3Myw3ICsyNzQsNyBAQCB2b2lkIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVyc0ludGVybmFsKCkKICAgICBtX2RlZmF1bHRSZW5kZXJT
dXJmYWNlLT5jbGVhckxheWVyTGlzdCgpOwogCiAgICAgewotICAgICAgICBUUkFDRV9FVkVOVCgi
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzSW50ZXJuYWw6OmNhbGNEcmF3RXRjIiwg
dGhpcywgMCk7CisgICAgICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6ZHJhd0xheWVyc0ludGVybmFsOjpjYWxjRHJhd0V0YyIsIHRoaXMsIDApOwogICAg
ICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlz
aWJpbGl0eShyb290RHJhd0xheWVyLCByb290RHJhd0xheWVyLCBtX3pvb21BbmltYXRvclRyYW5z
Zm9ybSwgbV96b29tQW5pbWF0b3JUcmFuc2Zvcm0sIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIG1f
ZGVmYXVsdFJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLCAmbV9sYXllclNvcnRlciwgbV9jYXBh
YmlsaXRpZXMubWF4VGV4dHVyZVNpemUpOwogICAgIH0KIApAQCAtNDA4LDEzICs0MDksMTMgQEAg
dm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUZXh0dXJlZFF1YWQoY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIGRyYXdNYXQKIAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmZp
bmlzaCgpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZmluaXNo
IiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpmaW5pc2giLCB0aGlzLCAwKTsKICAgICBtX2NvbnRleHQtPmZpbmlzaCgpOwogfQog
CiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cHJlc2VudCgpCiB7Ci0gICAgVFJBQ0VfRVZF
TlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cHJlc2VudCIsIHRoaXMsIDApOworICAgIENPTVBP
U0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cHJlc2VudCIsIHRoaXMs
IDApOwogICAgIC8vIFdlJ3JlIGRvbmUhIFRpbWUgdG8gc3dhcGJ1ZmZlcnMhCiAKICAgICAvLyBO
b3RlIHRoYXQgY3VycmVudGx5IHRoaXMgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyBzd2FwQnVmZmVy
czsgd2Ugc2hvdWxkCkBAIC01OTgsNyArNTk5LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OnNldERyYXdWaWV3cG9ydFJlY3QoY29uc3QgSW50UmVjdCYgZHJhd1JlY3QsIGJvb2wgZmwK
IAogYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmplY3RzKCkK
IHsKLSAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hh
cmVkT2JqZWN0cyIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVy
UmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMiLCB0aGlzLCAwKTsKICAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKIAogICAgIC8vIENyZWF0ZSBhbiBGQk8gZm9yIGRvaW5n
IG9mZnNjcmVlbiByZW5kZXJpbmcuCkBAIC02MjMsNyArNjI0LDcgQEAgY29uc3QgTGF5ZXJDaHJv
bWl1bTo6Qm9yZGVyUHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpib3JkZXJQcm9ncmFt
KCkKICAgICBpZiAoIW1fYm9yZGVyUHJvZ3JhbSkKICAgICAgICAgbV9ib3JkZXJQcm9ncmFtID0g
YWRvcHRQdHIobmV3IExheWVyQ2hyb21pdW06OkJvcmRlclByb2dyYW0obV9jb250ZXh0LmdldCgp
KSk7CiAgICAgaWYgKCFtX2JvcmRlclByb2dyYW0tPmluaXRpYWxpemVkKCkpIHsKLSAgICAgICAg
VFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Ym9yZGVyUHJvZ3JhbTo6aW5pdGlh
bGl6ZSIsIHRoaXMsIDApOworICAgICAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJMYXllclJl
bmRlcmVyQ2hyb21pdW06OmJvcmRlclByb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKICAg
ICAgICAgbV9ib3JkZXJQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAg
fQogICAgIHJldHVybiBtX2JvcmRlclByb2dyYW0uZ2V0KCk7CkBAIC02MzQsNyArNjM1LDcgQEAg
Y29uc3QgQ0NIZWFkc1VwRGlzcGxheTo6UHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpo
ZWFkc1VwRGlzcGxheVByb2dyYW0oKQogICAgIGlmICghbV9oZWFkc1VwRGlzcGxheVByb2dyYW0p
CiAgICAgICAgIG1faGVhZHNVcERpc3BsYXlQcm9ncmFtID0gYWRvcHRQdHIobmV3IENDSGVhZHNV
cERpc3BsYXk6OlByb2dyYW0obV9jb250ZXh0LmdldCgpKSk7CiAgICAgaWYgKCFtX2hlYWRzVXBE
aXNwbGF5UHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBUUkFDRV9FVkVOVCgiTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpoZWFkc1VwRGlzcGxheVByb2dyYW06OmluaXRpYWxpemUiLCB0
aGlzLCAwKTsKKyAgICAgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpoZWFkc1VwRGlzcGxheVByb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKICAg
ICAgICAgbV9oZWFkc1VwRGlzcGxheVByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgp
KTsKICAgICB9CiAgICAgcmV0dXJuIG1faGVhZHNVcERpc3BsYXlQcm9ncmFtLmdldCgpOwpAQCAt
NjQ0LDcgKzY0NSw3IEBAIGNvbnN0IENDUmVuZGVyU3VyZmFjZTo6UHJvZ3JhbSogTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpyZW5kZXJTdXJmYWNlUHJvZ3JhbSgpCiB7CiAgICAgQVNTRVJUKG1fcmVu
ZGVyU3VyZmFjZVByb2dyYW0pOwogICAgIGlmICghbV9yZW5kZXJTdXJmYWNlUHJvZ3JhbS0+aW5p
dGlhbGl6ZWQoKSkgewotICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpyZW5kZXJTdXJmYWNlUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOworICAgICAgICBD
T01QT1NJVE9SX1RSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclN1cmZh
Y2VQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CiAgICAgICAgIG1fcmVuZGVyU3VyZmFj
ZVByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJu
IG1fcmVuZGVyU3VyZmFjZVByb2dyYW0uZ2V0KCk7CkBAIC02NTUsNyArNjU2LDcgQEAgY29uc3Qg
Q0NSZW5kZXJTdXJmYWNlOjpQcm9ncmFtQUEqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVy
U3VyZmFjZVByb2dyYW1BQSgKICAgICBpZiAoIW1fcmVuZGVyU3VyZmFjZVByb2dyYW1BQSkKICAg
ICAgICAgbV9yZW5kZXJTdXJmYWNlUHJvZ3JhbUFBID0gYWRvcHRQdHIobmV3IENDUmVuZGVyU3Vy
ZmFjZTo6UHJvZ3JhbUFBKG1fY29udGV4dC5nZXQoKSkpOwogICAgIGlmICghbV9yZW5kZXJTdXJm
YWNlUHJvZ3JhbUFBLT5pbml0aWFsaXplZCgpKSB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJMYXll
clJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclN1cmZhY2VQcm9ncmFtQUE6OmluaXRpYWxpemUiLCB0
aGlzLCAwKTsKKyAgICAgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpyZW5kZXJTdXJmYWNlUHJvZ3JhbUFBOjppbml0aWFsaXplIiwgdGhpcywgMCk7CiAg
ICAgICAgIG1fcmVuZGVyU3VyZmFjZVByb2dyYW1BQS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0
KCkpOwogICAgIH0KICAgICByZXR1cm4gbV9yZW5kZXJTdXJmYWNlUHJvZ3JhbUFBLmdldCgpOwpA
QCAtNjY2LDcgKzY2Nyw3IEBAIGNvbnN0IENDUmVuZGVyU3VyZmFjZTo6TWFza1Byb2dyYW0qIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZU1hc2tQcm9nCiAgICAgaWYgKCFtX3Jl
bmRlclN1cmZhY2VNYXNrUHJvZ3JhbSkKICAgICAgICAgbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dy
YW0gPSBhZG9wdFB0cihuZXcgQ0NSZW5kZXJTdXJmYWNlOjpNYXNrUHJvZ3JhbShtX2NvbnRleHQu
Z2V0KCkpKTsKICAgICBpZiAoIW1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtLT5pbml0aWFsaXpl
ZCgpKSB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRl
clN1cmZhY2VNYXNrUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOworICAgICAgICBDT01Q
T1NJVE9SX1RSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclN1cmZhY2VN
YXNrUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwogICAgICAgICBtX3JlbmRlclN1cmZh
Y2VNYXNrUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOwogICAgIH0KICAgICBy
ZXR1cm4gbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0uZ2V0KCk7CkBAIC02NzcsNyArNjc4LDcg
QEAgY29uc3QgQ0NSZW5kZXJTdXJmYWNlOjpNYXNrUHJvZ3JhbUFBKiBMYXllclJlbmRlcmVyQ2hy
b21pdW06OnJlbmRlclN1cmZhY2VNYXNrUHIKICAgICBpZiAoIW1fcmVuZGVyU3VyZmFjZU1hc2tQ
cm9ncmFtQUEpCiAgICAgICAgIG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEgPSBhZG9wdFB0
cihuZXcgQ0NSZW5kZXJTdXJmYWNlOjpNYXNrUHJvZ3JhbUFBKG1fY29udGV4dC5nZXQoKSkpOwog
ICAgIGlmICghbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQS0+aW5pdGlhbGl6ZWQoKSkgewot
ICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJTdXJmYWNl
TWFza1Byb2dyYW1BQTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOworICAgICAgICBDT01QT1NJVE9S
X1RSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclN1cmZhY2VNYXNrUHJv
Z3JhbUFBOjppbml0aWFsaXplIiwgdGhpcywgMCk7CiAgICAgICAgIG1fcmVuZGVyU3VyZmFjZU1h
c2tQcm9ncmFtQUEtPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKICAgICB9CiAgICAgcmV0
dXJuIG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEuZ2V0KCk7CkBAIC02ODcsNyArNjg4LDcg
QEAgY29uc3QgQ0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVt
Ojp0aWxlclByb2dyYW0oKQogewogICAgIEFTU0VSVChtX3RpbGVyUHJvZ3JhbSk7CiAgICAgaWYg
KCFtX3RpbGVyUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBUUkFDRV9FVkVOVCgi
TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAw
KTsKKyAgICAgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVt
Ojp0aWxlclByb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKICAgICAgICAgbV90aWxlclBy
b2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIG1f
dGlsZXJQcm9ncmFtLmdldCgpOwpAQCAtNjk4LDcgKzY5OSw3IEBAIGNvbnN0IENDVGlsZWRMYXll
ckltcGw6OlByb2dyYW1BQSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1BQSgp
CiAgICAgaWYgKCFtX3RpbGVyUHJvZ3JhbUFBKQogICAgICAgICBtX3RpbGVyUHJvZ3JhbUFBID0g
YWRvcHRQdHIobmV3IENDVGlsZWRMYXllckltcGw6OlByb2dyYW1BQShtX2NvbnRleHQuZ2V0KCkp
KTsKICAgICBpZiAoIW1fdGlsZXJQcm9ncmFtQUEtPmluaXRpYWxpemVkKCkpIHsKLSAgICAgICAg
VFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtQUE6OmluaXRp
YWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1BQTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwog
ICAgICAgICBtX3RpbGVyUHJvZ3JhbUFBLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAg
ICAgfQogICAgIHJldHVybiBtX3RpbGVyUHJvZ3JhbUFBLmdldCgpOwpAQCAtNzA5LDcgKzcxMCw3
IEBAIGNvbnN0IENDVGlsZWRMYXllckltcGw6OlByb2dyYW1Td2l6emxlKiBMYXllclJlbmRlcmVy
Q2hyb21pdW06OnRpbGVyUHJvZ3JhbVN3aXp6CiAgICAgaWYgKCFtX3RpbGVyUHJvZ3JhbVN3aXp6
bGUpCiAgICAgICAgIG1fdGlsZXJQcm9ncmFtU3dpenpsZSA9IGFkb3B0UHRyKG5ldyBDQ1RpbGVk
TGF5ZXJJbXBsOjpQcm9ncmFtU3dpenpsZShtX2NvbnRleHQuZ2V0KCkpKTsKICAgICBpZiAoIW1f
dGlsZXJQcm9ncmFtU3dpenpsZS0+aW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBUUkFDRV9FVkVO
VCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1Td2l6emxlOjppbml0aWFsaXpl
IiwgdGhpcywgMCk7CisgICAgICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtU3dpenpsZTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwog
ICAgICAgICBtX3RpbGVyUHJvZ3JhbVN3aXp6bGUtPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgp
KTsKICAgICB9CiAgICAgcmV0dXJuIG1fdGlsZXJQcm9ncmFtU3dpenpsZS5nZXQoKTsKQEAgLTcy
MCw3ICs3MjEsNyBAQCBjb25zdCBDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtU3dpenpsZUFBKiBM
YXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbVN3aQogICAgIGlmICghbV90aWxlclBy
b2dyYW1Td2l6emxlQUEpCiAgICAgICAgIG1fdGlsZXJQcm9ncmFtU3dpenpsZUFBID0gYWRvcHRQ
dHIobmV3IENDVGlsZWRMYXllckltcGw6OlByb2dyYW1Td2l6emxlQUEobV9jb250ZXh0LmdldCgp
KSk7CiAgICAgaWYgKCFtX3RpbGVyUHJvZ3JhbVN3aXp6bGVBQS0+aW5pdGlhbGl6ZWQoKSkgewot
ICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1T
d2l6emxlQUE6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgQ09NUE9TSVRPUl9UUkFD
RV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1Td2l6emxlQUE6Omlu
aXRpYWxpemUiLCB0aGlzLCAwKTsKICAgICAgICAgbV90aWxlclByb2dyYW1Td2l6emxlQUEtPmlu
aXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIG1fdGlsZXJQcm9n
cmFtU3dpenpsZUFBLmdldCgpOwpAQCAtNzMxLDcgKzczMiw3IEBAIGNvbnN0IENDQ2FudmFzTGF5
ZXJJbXBsOjpQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNhbnZhc0xheWVyUHJvZ3Jh
bSgpCiAgICAgaWYgKCFtX2NhbnZhc0xheWVyUHJvZ3JhbSkKICAgICAgICAgbV9jYW52YXNMYXll
clByb2dyYW0gPSBhZG9wdFB0cihuZXcgQ0NDYW52YXNMYXllckltcGw6OlByb2dyYW0obV9jb250
ZXh0LmdldCgpKSk7CiAgICAgaWYgKCFtX2NhbnZhc0xheWVyUHJvZ3JhbS0+aW5pdGlhbGl6ZWQo
KSkgewotICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjYW52YXNM
YXllclByb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgQ09NUE9TSVRPUl9U
UkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjYW52YXNMYXllclByb2dyYW06Omlu
aXRpYWxpemUiLCB0aGlzLCAwKTsKICAgICAgICAgbV9jYW52YXNMYXllclByb2dyYW0tPmluaXRp
YWxpemUobV9jb250ZXh0LmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIG1fY2FudmFzTGF5ZXJQ
cm9ncmFtLmdldCgpOwpAQCAtNzQyLDcgKzc0Myw3IEBAIGNvbnN0IENDUGx1Z2luTGF5ZXJJbXBs
OjpQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnBsdWdpbkxheWVyUHJvZ3JhbSgpCiAg
ICAgaWYgKCFtX3BsdWdpbkxheWVyUHJvZ3JhbSkKICAgICAgICAgbV9wbHVnaW5MYXllclByb2dy
YW0gPSBhZG9wdFB0cihuZXcgQ0NQbHVnaW5MYXllckltcGw6OlByb2dyYW0obV9jb250ZXh0Lmdl
dCgpKSk7CiAgICAgaWYgKCFtX3BsdWdpbkxheWVyUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewot
ICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpwbHVnaW5MYXllclBy
b2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgQ09NUE9TSVRPUl9UUkFDRV9F
VkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpwbHVnaW5MYXllclByb2dyYW06OmluaXRpYWxp
emUiLCB0aGlzLCAwKTsKICAgICAgICAgbV9wbHVnaW5MYXllclByb2dyYW0tPmluaXRpYWxpemUo
bV9jb250ZXh0LmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIG1fcGx1Z2luTGF5ZXJQcm9ncmFt
LmdldCgpOwpAQCAtNzUzLDcgKzc1NCw3IEBAIGNvbnN0IENDVmlkZW9MYXllckltcGw6OlJHQkFQ
cm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnZpZGVvTGF5ZXJSR0JBUHJvZ3JhCiAgICAg
aWYgKCFtX3ZpZGVvTGF5ZXJSR0JBUHJvZ3JhbSkKICAgICAgICAgbV92aWRlb0xheWVyUkdCQVBy
b2dyYW0gPSBhZG9wdFB0cihuZXcgQ0NWaWRlb0xheWVySW1wbDo6UkdCQVByb2dyYW0obV9jb250
ZXh0LmdldCgpKSk7CiAgICAgaWYgKCFtX3ZpZGVvTGF5ZXJSR0JBUHJvZ3JhbS0+aW5pdGlhbGl6
ZWQoKSkgewotICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjp2aWRl
b0xheWVyUkdCQVByb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgQ09NUE9T
SVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjp2aWRlb0xheWVyUkdCQVBy
b2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKICAgICAgICAgbV92aWRlb0xheWVyUkdCQVBy
b2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIG1f
dmlkZW9MYXllclJHQkFQcm9ncmFtLmdldCgpOwpAQCAtNzY0LDcgKzc2NSw3IEBAIGNvbnN0IEND
VmlkZW9MYXllckltcGw6OllVVlByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dmlkZW9M
YXllcllVVlByb2dyYW0oCiAgICAgaWYgKCFtX3ZpZGVvTGF5ZXJZVVZQcm9ncmFtKQogICAgICAg
ICBtX3ZpZGVvTGF5ZXJZVVZQcm9ncmFtID0gYWRvcHRQdHIobmV3IENDVmlkZW9MYXllckltcGw6
OllVVlByb2dyYW0obV9jb250ZXh0LmdldCgpKSk7CiAgICAgaWYgKCFtX3ZpZGVvTGF5ZXJZVVZQ
cm9ncmFtLT5pbml0aWFsaXplZCgpKSB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRl
cmVyQ2hyb21pdW06OnZpZGVvTGF5ZXJZVVZQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7
CisgICAgICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
dmlkZW9MYXllcllVVlByb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKICAgICAgICAgbV92
aWRlb0xheWVyWVVWUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOwogICAgIH0K
ICAgICByZXR1cm4gbV92aWRlb0xheWVyWVVWUHJvZ3JhbS5nZXQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1Yklt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
VGV4dHVyZVN1YkltYWdlLmNwcAppbmRleCA4ZmVhMzhhNjkwYzk1Y2U3YTM5ODc2YjcwYzNiZDBl
Njk3YjJlYjg2Li4wNTY1ZjM2ZDJiMDc5Mzg0OWY1NTEzODA2OWI0NTEzODVmYzI0NzVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRl
eHR1cmVTdWJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwCkBAIC0yOSw5ICsyOSw5IEBACiAKICNp
bmNsdWRlICJMYXllclRleHR1cmVTdWJJbWFnZS5oIgogCisjaW5jbHVkZSAiQ29tcG9zaXRvclRy
YWNlRXZlbnQuaCIKICNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBMYXllclRleHR1cmVTdWJJbWFn
ZTo6dXBsb2FkV2l0aFRleFN1YkltYWdlKGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnQK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogewotICAgIFRSQUNFX0VWRU5UKCJMYXllclRleHR1
cmVTdWJJbWFnZTo6dXBsb2FkV2l0aFRleFN1YkltYWdlIiwgdGhpcywgMCk7CisgICAgQ09NUE9T
SVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhUZXhTdWJJ
bWFnZSIsIHRoaXMsIDApOwogICAgIGlmICghbV9zdWJJbWFnZSkKICAgICAgICAgbV9zdWJJbWFn
ZSA9IGFkb3B0QXJyYXlQdHIobmV3IHVpbnQ4X3RbbV9zdWJJbWFnZVNpemUud2lkdGgoKSAqIG1f
c3ViSW1hZ2VTaXplLmhlaWdodCgpICogNF0pOwogCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgTGF5
ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZShjb25zdCB1aW50OF90
KiBpbWFnZSwgY29uc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHQzNEZW51bSBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogewotICAgIFRS
QUNFX0VWRU5UKCJMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aE1hcFRleFN1YkltYWdl
IiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJUZXh0dXJlU3Vi
SW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZSIsIHRoaXMsIDApOwogICAgIC8vIE9mZnNl
dCBmcm9tIGltYWdlLXJlY3QgdG8gc291cmNlLXJlY3QuCiAgICAgSW50UG9pbnQgb2Zmc2V0KHNv
dXJjZVJlY3QueCgpIC0gaW1hZ2VSZWN0LngoKSwgc291cmNlUmVjdC55KCkgLSBpbWFnZVJlY3Qu
eSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmNwcAppbmRl
eCBmZjE5YzcxYzUwYjc1NTA3MTUxYTNjNTAyN2E4MmEzZDI3ODViNWUzLi42MzY5NDA5ZGY2NTJi
YzllMjVkYzBiNDQwYzI4Y2ZkZmEzOWNjYTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1
cmVVcGRhdGVyQ2FudmFzLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKICNpbmNsdWRlICJMYXll
clRleHR1cmVVcGRhdGVyQ2FudmFzLmgiCiAKKyNpbmNsdWRlICJDb21wb3NpdG9yVHJhY2VFdmVu
dC5oIgogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgogI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTWFuYWdl
ZFRleHR1cmUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCi0jaW5jbHVkZSAiVHJhY2VF
dmVudC5oIgogCiAjaWYgVVNFKFNLSUEpCiAjaW5jbHVkZSAiR3JDb250ZXh0LmgiCkBAIC01NSw3
ICs1NSw3IEBAIHZvaWQgTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhczo6cGFpbnRDb250ZW50cyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEluCiB7CiAgICAgY29udGV4dC50cmFuc2xh
dGUoLWNvbnRlbnRSZWN0LngoKSwgLWNvbnRlbnRSZWN0LnkoKSk7CiAgICAgewotICAgICAgICBU
UkFDRV9FVkVOVCgiTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhczo6cGFpbnQiLCB0aGlzLCAwKTsK
KyAgICAgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZh
czo6cGFpbnQiLCB0aGlzLCAwKTsKICAgICAgICAgbV9wYWludGVyLT5wYWludChjb250ZXh0LCBj
b250ZW50UmVjdCk7CiAgICAgfQogICAgIG1fY29udGVudFJlY3QgPSBjb250ZW50UmVjdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Byb2dy
YW1CaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1Byb2dyYW1CaW5kaW5nLmNwcAppbmRleCAyNjdlMDE5NTc3MjY5N2U1ZTc0MjUwNDE2NGVkNGVj
ZDdkNGY2ZDQ3Li5lMWEyNDg2MjhmNGY2ODFmOGMzZTk1NzVlYjA4YTkzNmJjOTBiMDUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9ncmFt
QmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vUHJvZ3JhbUJpbmRpbmcuY3BwCkBAIC0yOSwxMSArMjksMTEgQEAKIAogI2luY2x1ZGUgIlBy
b2dyYW1CaW5kaW5nLmgiCiAKKyNpbmNsdWRlICJDb21wb3NpdG9yVHJhY2VFdmVudC5oIgogI2lu
Y2x1ZGUgIkdlb21ldHJ5QmluZGluZy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmgiCi0jaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTg4LDcgKzg4LDcgQEAgdW5zaWduZWQgUHJvZ3JhbUJpbmRpbmdCYXNlOjpsb2FkU2hh
ZGVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCB0eXAKIAogdW5zaWduZWQg
UHJvZ3JhbUJpbmRpbmdCYXNlOjpjcmVhdGVTaGFkZXJQcm9ncmFtKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZlcnRleFNoYWRlclNvdXJjZSwgY29uc3QgU3RyaW5n
JiBmcmFnbWVudFNoYWRlclNvdXJjZSkKIHsKLSAgICBUUkFDRV9FVkVOVCgiUHJvZ3JhbUJpbmRp
bmdCYXNlOjpjcmVhdGVTaGFkZXJQcm9ncmFtIiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9U
UkFDRV9FVkVOVCgiUHJvZ3JhbUJpbmRpbmdCYXNlOjpjcmVhdGVTaGFkZXJQcm9ncmFtIiwgdGhp
cywgMCk7CiAgICAgdW5zaWduZWQgdmVydGV4U2hhZGVyID0gbG9hZFNoYWRlcihjb250ZXh0LCBH
cmFwaGljc0NvbnRleHQzRDo6VkVSVEVYX1NIQURFUiwgdmVydGV4U2hhZGVyU291cmNlKTsKICAg
ICBpZiAoIXZlcnRleFNoYWRlcikgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVh
dGUgdmVydGV4IHNoYWRlciIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmgKaW5kZXggYmI2ZmM4ZGRkOTBm
OGQ1NWYzNWE1OGQyMTMzZmRhNDk4MmJkMjBiNy4uYTIwZjBkNmZjNTQ5Yzc0YTljZGUxZjk0MzVj
NmJmYTQ5YjM1NWY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5oCkBAIC0yOSw3ICsyOSw2IEBACiAj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKLSNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2Vi
R0xMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMzJiYTZhM2JlZTVhMDI0ZjU1Y2Mw
Mjc2MjI1MmI5M2I1ODA0ZTBlNC4uZGEyMzdiOGM3MjZlMmU2MjJlZmQ5NTJmZDNkZDAyOTVlMzU0
NTgxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vV2ViR0xMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCkBAIC0zNCwxMCArMzQsMTAg
QEAKIAogI2luY2x1ZGUgIldlYkdMTGF5ZXJDaHJvbWl1bS5oIgogCisjaW5jbHVkZSAiQ29tcG9z
aXRvclRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmgiCi0jaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTE1NSw3ICsxNTUsNyBAQCBHcmFwaGljc0NvbnRleHQzRCogV2ViR0xMYXllckNocm9taXVt
OjpsYXllclJlbmRlcmVyQ29udGV4dCgpCiAKIHZvaWQgV2ViR0xMYXllckNocm9taXVtOjpyYXRl
TGltaXRDb250ZXh0KFRpbWVyPFdlYkdMTGF5ZXJDaHJvbWl1bT4qKQogewotICAgIFRSQUNFX0VW
RU5UKCJXZWJHTExheWVyQ2hyb21pdW06OnJhdGVMaW1pdENvbnRleHQiLCB0aGlzLCAwKTsKKyAg
ICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJXZWJHTExheWVyQ2hyb21pdW06OnJhdGVMaW1pdENv
bnRleHQiLCB0aGlzLCAwKTsKIAogICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0hlYWRzVXBEaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCmluZGV4IDg2NGM4OGYwNzlhZTMxN2Rk
MGEyMmRkNzM0NDg3MGNiYmMyMjRhOTYuLjE1NDdiYjgyZWI0OGE1MjFjMjUyNjc0MDI5YjlhMzIy
MzNmZTgzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCkBAIC0yNyw2ICsy
Nyw3IEBACiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogI2luY2x1ZGUgIkNDSGVh
ZHNVcERpc3BsYXkuaCIKIAorI2luY2x1ZGUgIkNvbXBvc2l0b3JTdXBwb3J0LmgiCiAjaW5jbHVk
ZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAi
Rm9udENhY2hlLmgiCkBAIC01Myw3ICs1NCw3IEBAIENDSGVhZHNVcERpc3BsYXk6OkNDSGVhZHNV
cERpc3BsYXkoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBvd25lcikKICAgICAsIG1fbGF5ZXJSZW5k
ZXJlcihvd25lcikKICAgICAsIG1fdXNlTWFwU3ViRm9yVXBsb2Fkcyhvd25lci0+Y29udGV4dFN1
cHBvcnRzTWFwU3ViKCkpCiB7Ci0gICAgbV9iZWdpblRpbWVIaXN0b3J5SW5TZWNbMF0gPSBjdXJy
ZW50VGltZSgpOworICAgIG1fYmVnaW5UaW1lSGlzdG9yeUluU2VjWzBdID0gQ29tcG9zaXRvclN1
cHBvcnQ6OmN1cnJlbnRUaW1lKCk7CiAgICAgbV9iZWdpblRpbWVIaXN0b3J5SW5TZWNbMV0gPSBt
X2JlZ2luVGltZUhpc3RvcnlJblNlY1swXTsKICAgICBmb3IgKGludCBpID0gMjsgaSA8IGtCZWdp
bkZyYW1lSGlzdG9yeVNpemU7IGkrKykKICAgICAgICAgbV9iZWdpblRpbWVIaXN0b3J5SW5TZWNb
aV0gPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCmluZGV4IDY0MTY4YzJiNGVkNzViNDZjOTNm
Y2JhMjlhNTViYjgzYjE5ZTAyZjIuLjUxNmNhYjJmNTU0MDQ3MGQ0NDRhNTBlMmM0ZGE3MDI1MDFk
Y2IzOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lu
Y2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAKKyNpbmNsdWRlICJDb21wb3NpdG9yVHJhY2VFdmVu
dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJv
bWl1bS5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgpAQCAtMTgzLDcgKzE4
NCw3IEBAIHZvaWQgQ0NMYXllckltcGw6OmR1bXBMYXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYg
dHMsIGludCBpbmRlbnQpIGNvbnN0CiAKIHZvaWQgc29ydExheWVycyhWZWN0b3I8UmVmUHRyPEND
TGF5ZXJJbXBsPiA+OjppdGVyYXRvciBmaXJzdCwgVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4g
Pjo6aXRlcmF0b3IgZW5kLCBDQ0xheWVyU29ydGVyKiBsYXllclNvcnRlcikKIHsKLSAgICBUUkFD
RV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzb3J0TGF5ZXJzIiwgMCwgMCk7CisgICAg
Q09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzb3J0TGF5ZXJz
IiwgMCwgMCk7CiAgICAgbGF5ZXJTb3J0ZXItPnNvcnQoZmlyc3QsIGVuZCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDZkZGQ5YmQ2Mzk1MGJjNDdjMjcwMmQ0ODBl
NTg1YTA3ZTJkMjNmN2IuLjRkZGEyNGQ0NmRkMGM4ZjNkYTEyODAwMGM5MTUzOWMzYWJhOGVkNjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMjYsMTAgKzI2LDEwIEBACiAK
ICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKIAorI2luY2x1ZGUgIkNvbXBvc2l0b3JU
cmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkxheWVy
UGFpbnRlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCi0j
aW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgIlRyZWVTeW5jaHJvbml6ZXIuaCIKICNp
bmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKICNpbmNsdWRlICJjYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmgiCkBAIC04OCw3ICs4OCw3IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0Ojpp
bml0aWFsaXplKCkKIENDTGF5ZXJUcmVlSG9zdDo6fkNDTGF5ZXJUcmVlSG9zdCgpCiB7CiAgICAg
QVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKLSAgICBUUkFDRV9FVkVOVCgiQ0NMYXll
clRyZWVIb3N0Ojp+Q0NMYXllclRyZWVIb3N0IiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9U
UkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp+Q0NMYXllclRyZWVIb3N0IiwgdGhpcywgMCk7
CiAgICAgbV9wcm94eS0+c3RvcCgpOwogICAgIG1fcHJveHkuY2xlYXIoKTsKICAgICBjbGVhclBl
bmRpbmdVcGRhdGUoKTsKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6
YW5pbWF0ZUFuZExheW91dChkb3VibGUgZnJhbWVCZWdpblRpbWUpCiB2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6Y29tbWl0VG9PbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhvc3RJbXBsKQog
ewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7Ci0gICAgVFJBQ0VfRVZFTlQo
IkNDTGF5ZXJUcmVlSG9zdDo6Y29tbWl0VG8iLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RS
QUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OmNvbW1pdFRvIiwgdGhpcywgMCk7CiAgICAgaG9z
dEltcGwtPnNldFNvdXJjZUZyYW1lTnVtYmVyKGZyYW1lTnVtYmVyKCkpOwogCiAgICAgY29udGVu
dHNUZXh0dXJlTWFuYWdlcigpLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KFRleHR1cmVNYW5hZ2VyOjpy
ZWNsYWltTGltaXRCeXRlcygpKTsKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiB6b29tKQogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzQ29tbWl0QW5kUmVkcmF3KCkK
IHsKICNpZiBVU0UoVEhSRUFERURfQ09NUE9TSVRJTkcpCi0gICAgVFJBQ0VfRVZFTlQoIkNDTGF5
ZXJUcmVlSG9zdDo6c2V0TmVlZHNSZWRyYXciLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RS
QUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzUmVkcmF3IiwgdGhpcywgMCk7CiAg
ICAgbV9wcm94eS0+c2V0TmVlZHNDb21taXRBbmRSZWRyYXcoKTsKICNlbHNlCiAgICAgbV9jbGll
bnQtPnNjaGVkdWxlQ29tcG9zaXRlKCk7CkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OnVwZGF0ZUxheWVycygpCiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVM
YXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogewotICAgIFRSQUNFX0VWRU5UKCJDQ0xh
eWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJB
Q0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzIiwgdGhpcywgMCk7CiAKICAg
ICBpZiAoIXJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKQogICAgICAgICByb290TGF5ZXItPmNy
ZWF0ZVJlbmRlclN1cmZhY2UoKTsKQEAgLTI5MCw3ICsyOTAsNyBAQCB2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKICAgICByb290UmVu
ZGVyU3VyZmFjZS0+Y2xlYXJMYXllckxpc3QoKTsKIAogICAgIHsKLSAgICAgICAgVFJBQ0VfRVZF
TlQoIkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzOjpjYWxjRHJhd0V0YyIsIHRoaXMsIDAp
OworICAgICAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0
ZUxheWVyczo6Y2FsY0RyYXdFdGMiLCB0aGlzLCAwKTsKICAgICAgICAgQ0NMYXllclRyZWVIb3N0
Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExheWVyLCBy
b290TGF5ZXIsIG1fem9vbUFuaW1hdG9yVHJhbnNmb3JtLCBtX3pvb21BbmltYXRvclRyYW5zZm9y
bSwgbV91cGRhdGVMaXN0LCByb290UmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCksIGxheWVyUmVu
ZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IDgxYjVmN2FlNTRjNzBjZDQ5MWZlNGUz
MGE5ZjI1MDZhYjM3N2MzZTUuLjU3ZjY4MmYxNmVkNGViYjllZDkyNWJlOThjZjkyM2I5MzdlNTcz
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0yNiwxMCAr
MjYsMTAgQEAKIAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKIAorI2luY2x1
ZGUgIkNvbXBvc2l0b3JUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hy
b21pdW0uaCIKLSNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRy
ZWVIb3N0LmgiCiAjaW5jbHVkZSAiY2MvQ0NNYWluVGhyZWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NN
YWluVGhyZWFkVGFzay5oIgpAQCAtNTQsNyArNTQsNyBAQCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpD
Q0xheWVyVHJlZUhvc3RJbXBsKGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKQogQ0NMYXllclRy
ZWVIb3N0SW1wbDo6fkNDTGF5ZXJUcmVlSG9zdEltcGwoKQogewogICAgIEFTU0VSVChDQ1Byb3h5
Ojppc0ltcGxUaHJlYWQoKSk7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdEltcGw6
On5DQ0xheWVyVHJlZUhvc3RJbXBsKCkiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNF
X0VWRU5UKCJDQ0xheWVyVHJlZUhvc3RJbXBsOjp+Q0NMYXllclRyZWVIb3N0SW1wbCgpIiwgdGhp
cywgMCk7CiAgICAgaWYgKG1fbGF5ZXJSZW5kZXJlcikKICAgICAgICAgbV9sYXllclJlbmRlcmVy
LT5jbG9zZSgpOwogfQpAQCAtNzQsNyArNzQsNyBAQCBHcmFwaGljc0NvbnRleHQzRCogQ0NMYXll
clRyZWVIb3N0SW1wbDo6Y29udGV4dCgpCiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6ZHJh
d0xheWVycygpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdM
YXllcnMiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpkcmF3TGF5ZXJzIiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKG1fbGF5ZXJSZW5k
ZXJlcik7CiAgICAgaWYgKG1fbGF5ZXJSZW5kZXJlci0+cm9vdExheWVyKCkpCiAgICAgICAgIG1f
bGF5ZXJSZW5kZXJlci0+ZHJhd0xheWVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcAppbmRleCBiN2VjY2Vj
ZDEwYTA4YjhlYmE4NzY1ZjA4OThmZWIyZDMxMTFiMjhmLi4yZmM3MWFlZWJmYTJhMzczMDIzNDU3
ODEwODY0MjEwZmI0YjkwNmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcApAQCAtMjYsNyArMjYsNiBAQAog
CiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogCi0jaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2lu
Y2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgImNjL0NDTWFpblRocmVhZFRh
c2suaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZFRhc2suaCIKQEAgLTQxLDExICs0MCwxMiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgewogYm9vbCBmYWtlSW1wbFRocmVhZCA9IGZh
bHNlOwogc3RhdGljIFdURjo6VGhyZWFkSWRlbnRpZmllciBpbXBsVGhyZWFkSUQ7CitzdGF0aWMg
V1RGOjpUaHJlYWRJZGVudGlmaWVyIG1haW5UaHJlYWRJRDsKIH0KIAogYm9vbCBDQ1Byb3h5Ojpp
c01haW5UaHJlYWQoKQogewotICAgIHJldHVybiA6OmlzTWFpblRocmVhZCgpICYmICFmYWtlSW1w
bFRocmVhZDsKKyAgICByZXR1cm4gIWZha2VJbXBsVGhyZWFkICYmIGN1cnJlbnRUaHJlYWQoKSA9
PSBtYWluVGhyZWFkSUQ7CiB9CiAKIGJvb2wgQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkKQEAgLTYz
LDYgKzYzLDExIEBAIHZvaWQgQ0NQcm94eTo6c2V0SW1wbFRocmVhZChXVEY6OlRocmVhZElkZW50
aWZpZXIgaWQpCiAgICAgaW1wbFRocmVhZElEID0gaWQ7CiB9CiAKK3ZvaWQgQ0NQcm94eTo6c2V0
TWFpblRocmVhZChXVEY6OlRocmVhZElkZW50aWZpZXIgaWQpCit7CisgICAgbWFpblRocmVhZElE
ID0gaWQ7Cit9CisKICNlbmRpZiAvLyAhTkRFQlVHCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAppbmRleCBiMjIy
Yjk5ODhkODE3ZjQ5NWMyYTNhMGYwNWM0Y2ExY2VkYWRkMTYzLi44MWE1ZDI0ODRiZGRlZTc1ZTc5
ZDYzYTExYzQ4MTU0MGFiNTMyMTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCkBAIC04NCw2ICs4NCw3IEBAIHB1
YmxpYzoKICNpZm5kZWYgTkRFQlVHCiAgICAgc3RhdGljIHZvaWQgc2V0SW1wbFRocmVhZChib29s
KTsKICAgICBzdGF0aWMgdm9pZCBzZXRJbXBsVGhyZWFkKFdURjo6VGhyZWFkSWRlbnRpZmllcik7
CisgICAgc3RhdGljIHZvaWQgc2V0TWFpblRocmVhZChXVEY6OlRocmVhZElkZW50aWZpZXIpOwog
I2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5j
cHAKaW5kZXggOTdiY2VhNTJhMjI0ZTFlYWVlZmM1MDRhZTUwOTdiYmY4NWRhZDUxOS4uYmY3YWI5
NjcxYjllNjY5YzI3ZWYyNDgzMTliNTlkMDcwOTI5ZTE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTI2LDkgKzI2LDkgQEAKIAogI2luY2x1ZGUgImNjL0ND
U2luZ2xlVGhyZWFkUHJveHkuaCIKIAorI2luY2x1ZGUgIkNvbXBvc2l0b3JUcmFjZUV2ZW50Lmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVy
Q2hyb21pdW0uaCIKLSNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXll
clRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiY2MvQ0NNYWluVGhyZWFkVGFzay5oIgogI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtNjUsOCArNjUsOCBAQCBDQ1NpbmdsZVRocmVhZFByb3h5
OjpDQ1NpbmdsZVRocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCkKICAg
ICAsIG1fZ3JhcGhpY3NDb250ZXh0TG9zdChmYWxzZSkKICAgICAsIG1fdGltZXNSZWNyZWF0ZVNo
b3VsZEZhaWwoMCkKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NTaW5nbGVUaHJlYWRQcm94eTo6Q0NT
aW5nbGVUaHJlYWRQcm94eSIsIHRoaXMsIDApOwotICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5U
aHJlYWQoKSk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NTaW5nbGVUaHJlYWRQcm94
eTo6Q0NTaW5nbGVUaHJlYWRQcm94eSIsIHRoaXMsIDApOworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiB9CiAKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c3RhcnQoKQpAQCAtNzcsOCAr
NzcsOCBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnN0YXJ0KCkKIAogQ0NTaW5nbGVUaHJl
YWRQcm94eTo6fkNDU2luZ2xlVGhyZWFkUHJveHkoKQogewotICAgIFRSQUNFX0VWRU5UKCJDQ1Np
bmdsZVRocmVhZFByb3h5Ojp+Q0NTaW5nbGVUaHJlYWRQcm94eSIsIHRoaXMsIDApOwotICAgIEFT
U0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVO
VCgiQ0NTaW5nbGVUaHJlYWRQcm94eTo6fkNDU2luZ2xlVGhyZWFkUHJveHkiLCB0aGlzLCAwKTsK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9sYXllclRyZWVIb3N0
SW1wbCAmJiAhbV9sYXllclRyZWVIb3N0KTsgLy8gbWFrZSBzdXJlIHN0b3AoKSBnb3QgY2FsbGVk
LgogfQogCkBAIC0xODYsOCArMTg2LDggQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzZXRO
ZWVkc1JlZHJhdygpCiAKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c3RvcCgpCiB7Ci0gICAg
VFJBQ0VfRVZFTlQoIkNDU2luZ2xlVGhyZWFkUHJveHk6OnN0b3AiLCB0aGlzLCAwKTsKLSAgICBB
U1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZF
TlQoIkNDU2luZ2xlVGhyZWFkUHJveHk6OnN0b3AiLCB0aGlzLCAwKTsKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogICAgIHsKICAgICAgICAgU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwog
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkNDVGhyZWFk
KG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggZTQwOTgyM2JhNzU0ZmRlMWQ4Yjk5NDBlOTA0MmQ1
OTQ2OTUwMGIxMi4uNjg4NzI4YTdhNzNjNTRhMmIyMDA5MzIyYmM2ODY4YTk3YTFiMDZkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTI2LDggKzI2LDggQEAKIAogI2luY2x1ZGUg
ImNjL0NDVGhyZWFkUHJveHkuaCIKIAorI2luY2x1ZGUgIkNvbXBvc2l0b3JUcmFjZUV2ZW50Lmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRlICJUcmFjZUV2ZW50Lmgi
CiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiY2MvQ0NNYWluVGhy
ZWFkVGFzay5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkVGFzay5oIgpAQCAtNTgsNyArNTgsNyBA
QCBDQ1RocmVhZFByb3h5OjpDQ1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVl
SG9zdCkKICAgICAsIG1fZHJhd1Rhc2tQb3N0ZWRPbkNDVGhyZWFkKGZhbHNlKQogICAgICwgbV9y
ZWRyYXdSZXF1ZXN0ZWRPbkNDVGhyZWFkKGZhbHNlKQogewotICAgIFRSQUNFX0VWRU5UKCJDQ1Ro
cmVhZFByb3h5OjpDQ1RocmVhZFByb3h5IiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFD
RV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6Q0NUaHJlYWRQcm94eSIsIHRoaXMsIDApOwogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbnVtUHJveGllcysrOwogICAgIGlmICghY2NUaHJl
YWQpIHsKQEAgLTcxLDcgKzcxLDcgQEAgQ0NUaHJlYWRQcm94eTo6Q0NUaHJlYWRQcm94eShDQ0xh
eWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QpCiAKIENDVGhyZWFkUHJveHk6On5DQ1RocmVhZFBy
b3h5KCkKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6fkNDVGhyZWFkUHJveHki
LCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojp+
Q0NUaHJlYWRQcm94eSIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgQVNTRVJUKCFtX3N0YXJ0ZWQpOwogCkBAIC0xODksNyArMTg5LDcgQEAgdm9pZCBDQ1RocmVh
ZFByb3h5OjpzZXROZWVkc0NvbW1pdCgpCiAgICAgaWYgKG1fY29tbWl0UmVxdWVzdGVkKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHND
b21taXQiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJDQ1RocmVhZFBy
b3h5OjpzZXROZWVkc0NvbW1pdCIsIHRoaXMsIDApOwogICAgIG1fY29tbWl0UmVxdWVzdGVkID0g
dHJ1ZTsKICAgICBjY1RocmVhZC0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZD
Q1RocmVhZFByb3h5Ojp1cGRhdGVTY2hlZHVsZXJTdGF0ZU9uQ0NUaHJlYWQsIG1fY29tbWl0UmVx
dWVzdGVkLCB0cnVlKSk7CiB9CkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5
OjpzZXROZWVkc0NvbW1pdEFuZFJlZHJhdygpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbW1p
dFJlcXVlc3RlZCA9IHRydWU7CiAKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2V0
TmVlZHNDb21taXRBbmRSZWRyYXciLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VW
RU5UKCJDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdEFuZFJlZHJhdyIsIHRoaXMsIDApOwog
ICAgIGNjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFk
UHJveHk6OnVwZGF0ZVNjaGVkdWxlclN0YXRlT25DQ1RocmVhZCwgbV9jb21taXRSZXF1ZXN0ZWQs
IHRydWUpKTsKIH0KIApAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0
TmVlZHNSZWRyYXcoKQogICAgIC8vIHRocmVhZC4gVGhpcyBzaG91bGQgbm90IGJlIG11Y2ggb2Yg
YSBwcm9ibGVtIGJlY2F1c2UgY2FsbHMgdG8KICAgICAvLyBzZXROZWVkc1JlZHJhdyBtZXNzYWdl
cyBhcmUgdW5jb21tb24gKG9ubHkgdHJpZ2dlcmVkIGJ5IFdNX1BBSU5UL2V0YyksCiAgICAgLy8g
Y29tcGFyZWQgdG8gc2V0TmVlZHNDb21taXRBbmRSZWRyYXcgbWVzc2FnZXMuCi0gICAgVFJBQ0Vf
RVZFTlQoIkNDVGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3IiwgdGhpcywgMCk7CisgICAgQ09N
UE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNSZWRyYXciLCB0aGlz
LCAwKTsKICAgICBjY1RocmVhZC0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZD
Q1RocmVhZFByb3h5Ojp1cGRhdGVTY2hlZHVsZXJTdGF0ZU9uQ0NUaHJlYWQsIGZhbHNlLCB0cnVl
KSk7CiB9CiAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnN0YXJ0KCkK
IAogdm9pZCBDQ1RocmVhZFByb3h5OjpzdG9wKCkKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJl
YWRQcm94eTo6c3RvcCIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkND
VGhyZWFkUHJveHk6OnN0b3AiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIEFTU0VSVChtX3N0YXJ0ZWQpOwogCkBAIC0yNDksNyArMjQ5LDcgQEAgdm9pZCBDQ1Ro
cmVhZFByb3h5OjpzdG9wKCkKIAogdm9pZCBDQ1RocmVhZFByb3h5OjpmaW5pc2hBbGxSZW5kZXJp
bmdPbkNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQogewotICAgIFRSQUNF
X0VWRU5UKCJDQ1RocmVhZFByb3h5OjpmaW5pc2hBbGxSZW5kZXJpbmdPbkNDVGhyZWFkIiwgdGhp
cywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6ZmluaXNo
QWxsUmVuZGVyaW5nT25DQ1RocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxUaHJl
YWQoKSk7CiAgICAgQVNTRVJUKCFtX2JlZ2luRnJhbWVBbmRDb21taXRQZW5kaW5nT25DQ1RocmVh
ZCk7CiAgICAgaWYgKG1fcmVkcmF3UmVxdWVzdGVkT25DQ1RocmVhZCkgewpAQCAtMjcwLDcgKzI3
MCw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6b2J0YWluQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tG
cm9tQ0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqCiAKIFBhc3NPd25QdHI8Q0NNYWluVGhyZWFk
OjpUYXNrPiBDQ1RocmVhZFByb3h5OjpjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uQ0NU
aHJlYWQoKQogewotICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpjcmVhdGVCZWdpbkZy
YW1lQW5kQ29tbWl0VGFza09uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RS
QUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09u
Q0NUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwogICAgIGRv
dWJsZSBmcmFtZUJlZ2luVGltZSA9IGN1cnJlbnRUaW1lKCk7CiAgICAgbV9iZWdpbkZyYW1lQW5k
Q29tbWl0UGVuZGluZ09uQ0NUaHJlYWQgPSB0cnVlOwpAQCAtMjkxLDcgKzI5MSw3IEBAIFBhc3NP
d25QdHI8Q0NNYWluVGhyZWFkOjpUYXNrPiBDQ1RocmVhZFByb3h5OjpjcmVhdGVCZWdpbkZyYW1l
QW5kQ29tbWl0VGFza09uQ0NUCiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENv
bW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltZSkKIHsKLSAgICBU
UkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdCIsIHRoaXMsIDAp
OworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVB
bmRDb21taXQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlm
ICghbV9sYXllclRyZWVIb3N0KQogICAgICAgICByZXR1cm47CkBAIC0yOTksNyArMjk5LDcgQEAg
dm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJl
ciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KICAgICAvLyBEcm9wIGJlZ2luRnJhbWVBbmRDb21taXQg
Y2FsbHMgdGhhdCBvY2N1ciBvdXQgb2Ygc2VxdWVuY2UuIFNlZSBjcmVhdGVCZWdpbkZyYW1lQW5k
Q29tbWl0VGFza09uQ0NUaHJlYWQgZm9yCiAgICAgLy8gYW4gZXhwbGFuYXRpb24gb2YgaG93IG91
dC1vZi1zZXF1ZW5jZSBiZWdpbkZyYW1lQW5kQ29tbWl0IHRhc2tzIGNhbiBvY2N1ci4KICAgICBp
ZiAoc2VxdWVuY2VOdW1iZXIgPCBtX2xhc3RFeGVjdXRlZEJlZ2luRnJhbWVBbmRDb21taXRTZXF1
ZW5jZU51bWJlcikgewotICAgICAgICBUUkFDRV9FVkVOVCgiRWFybHlPdXRfU3RhbGVCZWdpbkZy
YW1lQW5kQ29tbWl0IiwgdGhpcywgMCk7CisgICAgICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQo
IkVhcmx5T3V0X1N0YWxlQmVnaW5GcmFtZUFuZENvbW1pdCIsIHRoaXMsIDApOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIG1fbGFzdEV4ZWN1dGVkQmVnaW5GcmFtZUFuZENvbW1pdFNlcXVl
bmNlTnVtYmVyID0gc2VxdWVuY2VOdW1iZXI7CkBAIC0zMDgsNyArMzA4LDcgQEAgdm9pZCBDQ1Ro
cmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91Ymxl
IGZyYW1lQmVnaW5UaW0KIAogICAgIC8vIEZJWE1FOiByZWNyZWF0ZSB0aGUgY29udGV4dCBpZiBp
dCB3YXMgcmVxdWVzdGVkIGJ5IHRoZSBpbXBsIHRocmVhZAogICAgIHsKLSAgICAgICAgVFJBQ0Vf
RVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6YW5pbWF0ZUFuZExheW91dCIsIHRoaXMsIDApOworICAg
ICAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OmFuaW1hdGVBbmRM
YXlvdXQiLCB0aGlzLCAwKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5hbmltYXRlQW5kTGF5
b3V0KGZyYW1lQmVnaW5UaW1lKTsKICAgICB9CiAKQEAgLTMyMyw3ICszMjMsNyBAQCB2b2lkIEND
VGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3Vi
bGUgZnJhbWVCZWdpblRpbQogCiAgICAgewogICAgICAgICAvLyBCbG9ja2luZyBjYWxsIHRvIEND
VGhyZWFkUHJveHk6OmNvbW1pdE9uQ0NUaHJlYWQKLSAgICAgICAgVFJBQ0VfRVZFTlQoImNvbW1p
dCIsIHRoaXMsIDApOworICAgICAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJjb21taXQiLCB0
aGlzLCAwKTsKICAgICAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsKICAgICAgICAg
Y2NUaHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94
eTo6Y29tbWl0T25DQ1RocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmY29tcGxldGlvbikp
KTsKICAgICAgICAgY29tcGxldGlvbi53YWl0KCk7CkBAIC0zMzYsNyArMzM2LDcgQEAgdm9pZCBD
Q1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91
YmxlIGZyYW1lQmVnaW5UaW0KIAogdm9pZCBDQ1RocmVhZFByb3h5Ojpjb21taXRPbkNDVGhyZWFk
KENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQogewotICAgIFRSQUNFX0VWRU5UKCJDQ1Ro
cmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0T25DQ1RocmVhZCIsIHRoaXMsIDApOworICAg
IENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21t
aXRPbkNDVGhyZWFkIiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAg
ICBBU1NFUlQobV9iZWdpbkZyYW1lQW5kQ29tbWl0UGVuZGluZ09uQ0NUaHJlYWQpOwogICAgIG1f
YmVnaW5GcmFtZUFuZENvbW1pdFBlbmRpbmdPbkNDVGhyZWFkID0gZmFsc2U7CkBAIC0zNTksNyAr
MzU5LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZURyYXdUYXNrT25DQ1RocmVhZCgp
CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBpZiAobV9kcmF3VGFza1Bvc3RlZE9u
Q0NUaHJlYWQpCiAgICAgICAgIHJldHVybjsKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94
eTo6c2NoZWR1bGVEcmF3VGFza09uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9S
X1RSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZURyYXdUYXNrT25DQ1RocmVhZCIs
IHRoaXMsIDApOwogICAgIEFTU0VSVChtX2xheWVyVHJlZUhvc3RJbXBsKTsKICAgICBtX2RyYXdU
YXNrUG9zdGVkT25DQ1RocmVhZCA9IHRydWU7CiAgICAgY2NUaHJlYWQtPnBvc3RUYXNrKGNyZWF0
ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6ZHJhd0xheWVyc0FuZFByZXNlbnRP
bkNDVGhyZWFkKSk7CkBAIC0zNjcsNyArMzY3LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hl
ZHVsZURyYXdUYXNrT25DQ1RocmVhZCgpCiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6ZHJhd0xheWVy
c0FuZFByZXNlbnRPbkNDVGhyZWFkKCkKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94
eTo6ZHJhd0xheWVyc09uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNF
X0VWRU5UKCJDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJzT25DQ1RocmVhZCIsIHRoaXMsIDApOwog
ICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3RJbXBs
KQogICAgICAgICByZXR1cm47CkBAIC0zODAsNyArMzgwLDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5
OjpkcmF3TGF5ZXJzQW5kUHJlc2VudE9uQ0NUaHJlYWQoKQogCiB2b2lkIENDVGhyZWFkUHJveHk6
OmRyYXdMYXllcnNPbkNDVGhyZWFkKCkKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94
eTo6ZHJhd0xheWVyc09uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNF
X0VWRU5UKCJDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJzT25DQ1RocmVhZCIsIHRoaXMsIDApOwog
ICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fbGF5ZXJUcmVlSG9zdElt
cGwpOwogCkBAIC0zOTAsNyArMzkwLDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJz
T25DQ1RocmVhZCgpCiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6dXBkYXRlU2NoZWR1bGVyU3RhdGVP
bkNDVGhyZWFkKGJvb2wgY29tbWl0UmVxdWVzdGVkLCBib29sIHJlZHJhd1JlcXVlc3RlZCkKIHsK
LSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6dXBkYXRlU2NoZWR1bGVyU3RhdGVPbkND
VGhyZWFkIiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NUaHJlYWRQ
cm94eTo6dXBkYXRlU2NoZWR1bGVyU3RhdGVPbkNDVGhyZWFkIiwgdGhpcywgMCk7CiAgICAgQVNT
RVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBBU1NFUlQobV9sYXllclRyZWVIb3N0SW1wbCk7CiAK
QEAgLTQwOSw3ICs0MDksNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnVwZGF0ZVNjaGVkdWxlclN0
YXRlT25DQ1RocmVhZChib29sIGNvbW1pdFJlcXVlc3RlZCwgYm9vbCByZQogCiB2b2lkIENDVGhy
ZWFkUHJveHk6OmluaXRpYWxpemVJbXBsT25DQ1RocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29t
cGxldGlvbikKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUlt
cGxPbkNDVGhyZWFkIiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NU
aHJlYWRQcm94eTo6aW5pdGlhbGl6ZUltcGxPbkNDVGhyZWFkIiwgdGhpcywgMCk7CiAgICAgQVNT
RVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsID0gbV9sYXllclRy
ZWVIb3N0LT5jcmVhdGVMYXllclRyZWVIb3N0SW1wbCgpOwogICAgIGNvbXBsZXRpb24tPnNpZ25h
bCgpOwpAQCAtNDE3LDcgKzQxNyw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUlt
cGxPbkNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQogCiB2b2lkIENDVGhy
ZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVyT25DQ1RocmVhZChHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dFB0ciwgQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24sIGJvb2wqIGlu
aXRpYWxpemVTdWNjZWVkZWQsIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMqIGNhcGFiaWxpdGll
cykKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVu
ZGVyZXJPbkNDVGhyZWFkIiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgi
Q0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJPbkNDVGhyZWFkIiwgdGhpcywg
MCk7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IGNvbnRleHQoYWRvcHRSZWYoY29udGV4dFB0cikpOwogICAgICppbml0aWFsaXplU3Vj
Y2VlZGVkID0gbV9sYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29u
dGV4dCk7CkBAIC00MjgsNyArNDI4LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojppbml0aWFsaXpl
TGF5ZXJSZW5kZXJlck9uQ0NUaHJlYWQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQKIAogdm9p
ZCBDQ1RocmVhZFByb3h5OjpsYXllclRyZWVIb3N0Q2xvc2VkT25DQ1RocmVhZChDQ0NvbXBsZXRp
b25FdmVudCogY29tcGxldGlvbikKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6
bGF5ZXJUcmVlSG9zdENsb3NlZE9uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9S
X1RSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpsYXllclRyZWVIb3N0Q2xvc2VkT25DQ1RocmVh
ZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgbV9sYXllclRy
ZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25DQ1RocmVhZChtX2xheWVyVHJlZUhvc3RJ
bXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CiAgICAgbV9sYXllclRyZWVIb3N0SW1w
bC5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBjYjg4NmVkYzlkMzM0ZGJm
YjVkYzc3YmMxNmFkY2JiODM4ZWVlNjc3Li5mMDY4YmMxMjAzYTk4MjQ2OTc2ZWI3OWRkMDQ1ZDFh
YWNmOTU5NzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisy
MDExLTA5LTI4ICBBbnRvaW5lIExhYm91ciAgPHBpbWFuQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBTZXBhcmF0ZSBjb21wb3NpdG9yIHBsYXRmb3JtIHN1cHBvcnQgZnJvbSB3ZWJraXQncyBwbGF0
Zm9ybSBzdXBwb3J0LgorICAgICAgICBUaGlzIGlzIHNvIHRoYXQgdGhlIGNvbXBvc2l0b3IgY2Fu
IGJlIHVzZWQgaW4gYSB0aHJlYWQgc2VwYXJhdGUgZnJvbSB0aGUKKyAgICAgICAgbWFpbiB3ZWJr
aXQgdGhyZWFkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjkwNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHB1YmxpYy9XZWJLaXQuaDoKKyAgICAgICAgKiBzcmMvV2ViS2l0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViS2l0Q29tcG9zaXRvclN1cHBvcnQ6On5XZWJLaXRDb21wb3NpdG9yU3VwcG9y
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYktpdENvbXBvc2l0b3JTdXBwb3J0OjpjdXJyZW50VGlt
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYktpdENvbXBvc2l0b3JTdXBwb3J0OjpoaXN0b2dyYW1D
dXN0b21Db3VudHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXRDb21wb3NpdG9yU3VwcG9ydDo6
dHJhY2VFdmVudEJlZ2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0Q29tcG9zaXRvclN1cHBv
cnQ6OnRyYWNlRXZlbnRFbmQpOgorICAgICAgICAoV2ViS2l0Ojppbml0aWFsaXplV2l0aG91dFY4
KToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZVdpdGhvdXRWOEFuZENvbXBvc2l0b3IpOgor
ICAgICAgICAoV2ViS2l0OjpzaHV0ZG93bik6CisKIDIwMTEtMDktMjggIEZhZHkgU2FtdWVsICA8
ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBTZXBlcmF0ZSBHVEsg
c3BlY2lmaWMgR3lwIHJ1bGVzIGZyb20gWDExIEd5cCBydWxlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJLaXQuaAppbmRleCA5OTFkNTQzMjc0MGM4NTQwNzgxZjU0ZWM0ODI2OTEyNGMx
ZTE5ZjkxLi4wMmE2MGY4MjgxMGIxZWJmM2NmYjI4MGM5MjY3NWJiNTRjMjNkMGE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXQuaApAQCAtNDksNiArNDksMTQgQEAgV0VCS0lU
X0VYUE9SVCB2b2lkIGluaXRpYWxpemUoV2ViS2l0UGxhdGZvcm1TdXBwb3J0Kik7CiAvLyBUaGlz
IGlzIGEgc3BlY2lhbCB2YXJpYW50IG9mIGluaXRpYWxpemUgdGhhdCBkb2VzIG5vdCBpbnRpdGlh
bGl6ZSBWOC4KIFdFQktJVF9FWFBPUlQgdm9pZCBpbml0aWFsaXplV2l0aG91dFY4KFdlYktpdFBs
YXRmb3JtU3VwcG9ydCopOwogCisvLyBNdXN0IGJlIGNhbGxlZCBvbiB0aGUgdGhyZWFkIHRoYXQg
d2lsbCBiZSB0aGUgbWFpbiBXZWJLaXQgdGhyZWFkIGJlZm9yZQorLy8gdXNpbmcgYW55IG90aGVy
IFdlYktpdCBBUElzLiBUaGUgcHJvdmlkZWQgV2ViS2l0UGxhdGZvcm1TdXBwb3J0OyBtdXN0IGJl
CisvLyBub24tbnVsbCBhbmQgbXVzdCByZW1haW4gdmFsaWQgdW50aWwgdGhlIGN1cnJlbnQgdGhy
ZWFkIGNhbGxzIHNodXRkb3duLgorLy8KKy8vIFRoaXMgaXMgYSBzcGVjaWFsIHZhcmlhbnQgb2Yg
aW5pdGlhbGl6ZSB0aGF0IGRvZXMgbm90IGludGl0aWFsaXplIFY4IG5vciB0aGUKKy8vIGNvbXBv
c2l0b3IuCitXRUJLSVRfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZVdpdGhvdXRWOEFuZENvbXBvc2l0
b3IoV2ViS2l0UGxhdGZvcm1TdXBwb3J0Kik7CisKIC8vIE9uY2Ugc2h1dGRvd24sIHRoZSBXZWJL
aXRQbGF0Zm9ybVN1cHBvcnQgcGFzc2VkIHRvIGluaXRpYWxpemUgd2lsbCBubyBsb25nZXIKIC8v
IGJlIGFjY2Vzc2VkLiBObyBvdGhlciBXZWJLaXQgb2JqZWN0cyBzaG91bGQgYmUgaW4gdXNlIHdo
ZW4gdGhpcyBmdW5jdGlvbiBpcwogLy8gY2FsbGVkLiBBbnkgYmFja2dyb3VuZCB0aHJlYWRzIGNy
ZWF0ZWQgYnkgV2ViS2l0IGFyZSBwcm9taXNlZCB0byBiZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYktpdC5jcHAKaW5kZXggNDIzYzQ1YWUzMjRlMTViN2IyZDQ0ZTBkNWRhYzQzZmM5YzM0MTA0
Yi4uNjlhZDg1NzVkYWMyZjQzNmNiZDMyZDdiMjhiNGQ0YzI1Mjc1NGZkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAKKyNpbmNsdWRlICJDb21wb3NpdG9yU3VwcG9y
dC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAi
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgpAQCAtNTcsNiArNTgsMzIgQEAgc3RhdGljIGJvb2wg
c193ZWJLaXRJbml0aWFsaXplZCA9IGZhbHNlOwogc3RhdGljIFdlYktpdFBsYXRmb3JtU3VwcG9y
dCogc193ZWJLaXRQbGF0Zm9ybVN1cHBvcnQgPSAwOwogc3RhdGljIGJvb2wgc19sYXlvdXRUZXN0
TW9kZSA9IGZhbHNlOwogCitjbGFzcyBXZWJLaXRDb21wb3NpdG9yU3VwcG9ydCA6IHB1YmxpYyBX
ZWJDb3JlOjpDb21wb3NpdG9yU3VwcG9ydERlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5XZWJLaXRDb21wb3NpdG9yU3VwcG9ydCgpIHsgfQorCisgICAgdmlydHVhbCBkb3VibGUgY3Vy
cmVudFRpbWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNfd2ViS2l0UGxhdGZvcm1TdXBwb3J0
LT5jdXJyZW50VGltZSgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBoaXN0b2dyYW1DdXN0
b21Db3VudHMoY29uc3QgY2hhciogbmFtZSwgaW50IHNhbXBsZSwgaW50IG1pbiwgaW50IG1heCwg
aW50IGJ1Y2tldENvdW50KQorICAgIHsKKyAgICAgICAgc193ZWJLaXRQbGF0Zm9ybVN1cHBvcnQt
Pmhpc3RvZ3JhbUN1c3RvbUNvdW50cyhuYW1lLCBzYW1wbGUsIG1pbiwgbWF4LCBidWNrZXRDb3Vu
dCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHRyYWNlRXZlbnRCZWdpbihjb25zdCBjaGFy
KiBuYW1lLCB2b2lkKiBpZCwgY29uc3QgY2hhciogZXh0cmEpCisgICAgeworICAgICAgICBzX3dl
YktpdFBsYXRmb3JtU3VwcG9ydC0+dHJhY2VFdmVudEJlZ2luKG5hbWUsIGlkLCBleHRyYSk7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIHRyYWNlRXZlbnRFbmQoY29uc3QgY2hhciogbmFtZSwg
dm9pZCogaWQsIGNvbnN0IGNoYXIqIGV4dHJhKQorICAgIHsKKyAgICAgICAgc193ZWJLaXRQbGF0
Zm9ybVN1cHBvcnQtPnRyYWNlRXZlbnRFbmQobmFtZSwgaWQsIGV4dHJhKTsKKyAgICB9Cit9Owor
c3RhdGljIFdlYktpdENvbXBvc2l0b3JTdXBwb3J0KiBzX2NvbXBvc2l0b3JTdXBwb3J0ID0gMDsK
Kwogc3RhdGljIGJvb2wgZ2VuZXJhdGVFbnRyb3B5KHVuc2lnbmVkIGNoYXIqIGJ1ZmZlciwgc2l6
ZV90IGxlbmd0aCkKIHsKICAgICBpZiAoc193ZWJLaXRQbGF0Zm9ybVN1cHBvcnQpIHsKQEAgLTc3
LDYgKzEwNCwxNCBAQCB2b2lkIGluaXRpYWxpemUoV2ViS2l0UGxhdGZvcm1TdXBwb3J0KiB3ZWJL
aXRQbGF0Zm9ybVN1cHBvcnQpCiAKIHZvaWQgaW5pdGlhbGl6ZVdpdGhvdXRWOChXZWJLaXRQbGF0
Zm9ybVN1cHBvcnQqIHdlYktpdFBsYXRmb3JtU3VwcG9ydCkKIHsKKyAgICBpbml0aWFsaXplV2l0
aG91dFY4QW5kQ29tcG9zaXRvcih3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQpOworICAgIEFTU0VSVCgh
V2ViQ29yZTo6Q29tcG9zaXRvclN1cHBvcnQ6OmRlbGVnYXRlKCkpOworICAgIHNfY29tcG9zaXRv
clN1cHBvcnQgPSBuZXcgV2ViS2l0Q29tcG9zaXRvclN1cHBvcnQ7CisgICAgV2ViQ29yZTo6Q29t
cG9zaXRvclN1cHBvcnQ6OmluaXRpYWxpemUoc19jb21wb3NpdG9yU3VwcG9ydCk7Cit9CisKK3Zv
aWQgaW5pdGlhbGl6ZVdpdGhvdXRWOEFuZENvbXBvc2l0b3IoV2ViS2l0UGxhdGZvcm1TdXBwb3J0
KiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQpCit7CiAgICAgQVNTRVJUKCFzX3dlYktpdEluaXRpYWxp
emVkKTsKICAgICBzX3dlYktpdEluaXRpYWxpemVkID0gdHJ1ZTsKIApAQCAtOTYsMTMgKzEzMSwx
NiBAQCB2b2lkIGluaXRpYWxpemVXaXRob3V0VjgoV2ViS2l0UGxhdGZvcm1TdXBwb3J0KiB3ZWJL
aXRQbGF0Zm9ybVN1cHBvcnQpCiAgICAgLy8gdGhlIGluaXRpYWxpemF0aW9uIHRocmVhZC1zYWZl
LCBidXQgZ2l2ZW4gdGhhdCBzbyBtYW55IGNvZGUgcGF0aHMgdXNlCiAgICAgLy8gdGhpcywgaW5p
dGlhbGl6aW5nIHRoaXMgbGF6aWx5IHByb2JhYmx5IGRvZXNuJ3QgYnV5IHVzIG11Y2guCiAgICAg
V2ViQ29yZTo6VVRGOEVuY29kaW5nKCk7Ci0KLSAKIH0KIAogCiB2b2lkIHNodXRkb3duKCkKIHsK
KyAgICBpZiAoc19jb21wb3NpdG9yU3VwcG9ydCkgeworICAgICAgICBXZWJDb3JlOjpDb21wb3Np
dG9yU3VwcG9ydDo6c2h1dGRvd24oKTsKKyAgICAgICAgZGVsZXRlIHNfY29tcG9zaXRvclN1cHBv
cnQ7CisgICAgICAgIHNfY29tcG9zaXRvclN1cHBvcnQgPSAwOworICAgIH0KICAgICBzX3dlYktp
dFBsYXRmb3JtU3VwcG9ydCA9IDA7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110074</attachid>
            <date>2011-10-06 18:34:46 -0700</date>
            <delta_ts>2011-10-07 13:06:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69048-20111006183445.patch</filename>
            <type>text/plain</type>
            <size>61177</size>
            <attacher name="Antoine Labour">piman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY4NjQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwZTRlMGExNzk0ZTI2MzVk
N2Q3ZWMyN2UzMDUzOTJhMTEwMzU1NGYwLi5lNWEyY2ZkZDRiZWY2ZWNhNGRiYTAwM2RjZWIxOTAw
NDBjMWQ4ZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAwIEBACisyMDExLTA5LTI4ICBBbnRv
aW5lIExhYm91ciAgPHBpbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBTZXBhcmF0ZSBjb21w
b3NpdG9yIHBsYXRmb3JtIHN1cHBvcnQgZnJvbSB3ZWJraXQncyBwbGF0Zm9ybSBzdXBwb3J0Lgor
ICAgICAgICBUaGlzIGlzIHNvIHRoYXQgdGhlIGNvbXBvc2l0b3IgY2FuIGJlIHVzZWQgaW4gYSB0
aHJlYWQgc2VwYXJhdGUgZnJvbSB0aGUKKyAgICAgICAgbWFpbiB3ZWJraXQgdGhyZWFkLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkwNDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4
aXN0aW5nIGNvbXBvc2l0aW5nIHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1RyYWNlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OmludGVybmFsOjo6OlNjb3BlVHJhY2VyKToKKyAgICAgICAgKFdlYkNvcmU6OmludGVybmFsOjo6
On5TY29wZVRyYWNlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29t
cG9zaXRvclN1cHBvcnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0b3JT
dXBwb3J0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0b3JTdXBwb3J0
OjpzaHV0ZG93bik6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdG9yU3VwcG9ydDo6Y3VycmVu
dFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRvclN1cHBvcnQ6Omhpc3RvZ3JhbUN1
c3RvbUNvdW50cyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdG9yU3VwcG9ydDo6dHJhY2VF
dmVudEJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0b3JTdXBwb3J0Ojp0cmFjZUV2
ZW50RW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db21wb3NpdG9y
U3VwcG9ydC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0b3JTdXBwb3J0RGVs
ZWdhdGU6On5Db21wb3NpdG9yU3VwcG9ydERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXBvc2l0b3JTdXBwb3J0OjpkZWxlZ2F0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29tcG9zaXRvclRyYWNlRXZlbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHAuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyUGFpbnRlcjo6cGFpbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzSW50ZXJuYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpmaW5pc2gpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpwcmVzZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpib3JkZXJQcm9ncmFtKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aGVhZHNVcERpc3BsYXlQ
cm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVy
U3VyZmFjZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
OjpyZW5kZXJTdXJmYWNlUHJvZ3JhbUFBKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1BQSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbVN3aXp6
bGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dy
YW1Td2l6emxlQUEpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpj
YW52YXNMYXllclByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpwbHVnaW5MYXllclByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjp2aWRlb0xheWVyUkdCQVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjp2aWRlb0xheWVyWVVWUHJvZ3JhbSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhUZXhTdWJJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aE1hcFRl
eFN1YkltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRl
eHR1cmVVcGRhdGVyQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVw
ZGF0ZXJDYW52YXM6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyYW1C
aW5kaW5nQmFzZTo6Y3JlYXRlU2hhZGVyUHJvZ3JhbSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xMYXllckNocm9taXVtOjpyYXRlTGltaXRDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDSGVhZHNVcERpc3BsYXk6OkNDSGVhZHNVcERpc3BsYXkpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNvcnRMYXllcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3Q6On5DQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
Ojpjb21taXRUb09uQ0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
OjpzZXROZWVkc0NvbW1pdEFuZFJlZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OnVwZGF0ZUxheWVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3RJbXBsOjp+Q0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJveHk6
OmlzTWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Byb3h5OjpzZXRNYWluVGhyZWFk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5OjpDQ1NpbmdsZVRo
cmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6On5DQ1Np
bmdsZVRocmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6
OnN0b3ApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6Q0NUaHJlYWRQcm94
eSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojp+Q0NUaHJlYWRQcm94eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdEFuZFJlZHJhdyk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzZXROZWVkc1JlZHJhdyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFk
UHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uQ0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6Y3JlYXRlQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tPbkNDVGhyZWFkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6Y29tbWl0T25DQ1RocmVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZURyYXdUYXNrT25DQ1RocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJzQW5kUHJlc2VudE9u
Q0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6ZHJhd0xheWVyc09u
Q0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dXBkYXRlU2NoZWR1
bGVyU3RhdGVPbkNDVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6Omlu
aXRpYWxpemVJbXBsT25DQ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5
Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uQ0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6bGF5ZXJUcmVlSG9zdENsb3NlZE9uQ0NUaHJlYWQpOgorCiAyMDExLTEw
LTA2ICBBbm5hIENhdmVuZGVyICA8YW5uYWNjQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGRp
bmcgcGFyZW5zIGluIFdlYlZUVFBhcnNlci5jcHAgdG8gYXBwZWFzZSBjb21waWxlciBwcmVmZXJl
bmNlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAxZGIwMDEyMGI4ODgwODNmMzdlNDI5YmFjNTcwNGZl
OTA2YjA1NzI1Li4xYjA2M2YwNjE4YjRlZjdkMTIxOTNkOTJlZTljMWFmM2RhNzg1NmRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC0zNDA1LDYgKzM0MDUsOSBAQAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29tcGxleFRleHRDb250cm9sbGVyTGludXguY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db21wbGV4VGV4dENv
bnRyb2xsZXJMaW51eC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db21wb3NpdG9yU3VwcG9ydC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbXBvc2l0b3JTdXBwb3J0LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbXBvc2l0b3JUcmFjZUV2ZW50LmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0u
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ3Jvc3NQcm9jZXNz
Rm9udExvYWRpbmcuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9UcmFjZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9UcmFj
ZUV2ZW50LmgKaW5kZXggZGI4Yzc0YjJhMWQwODliNzQyYWZiMDBkNDRmYWQ0YmI3NmMxNmM0Ny4u
OTU1MTUyM2NjMDM3NjA1Njg3YjQ3NWYwZWRjODE1Zjc4ZWY1MjA4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vVHJhY2VFdmVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1RyYWNlRXZlbnQuaApAQCAtMzYsMTQgKzM2LDE0IEBA
CiAjZGVmaW5lIFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIobmFtZV9wcmVmaXgp
IFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIyKG5hbWVfcHJlZml4LCBfX0xJTkVf
XykKIAogLy8gSXNzdWVzIFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVudEJlZ2luIGFuZCB0cmFj
ZUV2ZW50RW5kIGNhbGxzIGZvciB0aGUgZW5jbG9zaW5nIHNjb3BlCi0jZGVmaW5lIFRSQUNFX0VW
RU5UKG5hbWUsIGlkLCBleHRyYSkgV2ViQ29yZTo6aW50ZXJuYWw6OlNjb3BlVHJhY2VyIFRSQUNF
X0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIoX190cmFjZUV2ZW50U2NvcGUpKG5hbWUsIGlk
LCBleHRyYSk7CisjZGVmaW5lIFRSQUNFX0VWRU5UKG5hbWUsIGlkLCBleHRyYSkgV2ViQ29yZTo6
aW50ZXJuYWw6OlNjb3BlVHJhY2VyPFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydD4gVFJBQ0VfRVZF
TlRfTUFLRV9VTklRVUVfSURFTlRJRklFUihfX3RyYWNlRXZlbnRTY29wZSkobmFtZSwgaWQsIGV4
dHJhKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCiAv
LyBVc2VkIGJ5IFRSQUNFX0VWRU5UIG1hY3JvLiBEbyBub3QgdXNlIGRpcmVjdGx5LgotY2xhc3Mg
U2NvcGVUcmFjZXIgewordGVtcGxhdGU8dHlwZW5hbWUgU3VwcG9ydD4gY2xhc3MgU2NvcGVUcmFj
ZXIgewogcHVibGljOgogICAgIFNjb3BlVHJhY2VyKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqLCBj
b25zdCBjaGFyKiBleHRyYSk7CiAgICAgflNjb3BlVHJhY2VyKCk7CkBAIC01NCwxOCArNTQsMTgg
QEAgcHJpdmF0ZToKICAgICBPd25BcnJheVB0cjxjaGFyPiBtX2V4dHJhOwogfTsKIAotaW5saW5l
IFNjb3BlVHJhY2VyOjpTY29wZVRyYWNlcihjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiBpZCwgY29u
c3QgY2hhciogZXh0cmEpCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdXBwb3J0PiBpbmxpbmUgU2NvcGVU
cmFjZXI8U3VwcG9ydD46OlNjb3BlVHJhY2VyKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBj
b25zdCBjaGFyKiBleHRyYSkKICAgICA6IG1fbmFtZShuYW1lKQogICAgICwgbV9pZChpZCkKIHsK
LSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRCZWdpbihuYW1lLCBpZCwgZXh0cmEpOyBc
CisgICAgU3VwcG9ydDo6dHJhY2VFdmVudEJlZ2luKG5hbWUsIGlkLCBleHRyYSk7IFwKICAgICBp
ZiAoZXh0cmEpCiAgICAgICAgIG1fZXh0cmEgPSBhZG9wdEFycmF5UHRyKHN0cmR1cChleHRyYSkp
OwogfQogCi1pbmxpbmUgU2NvcGVUcmFjZXI6On5TY29wZVRyYWNlcigpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBTdXBwb3J0PiBpbmxpbmUgU2NvcGVUcmFjZXI8U3VwcG9ydD46On5TY29wZVRyYWNlcigp
CiB7Ci0gICAgUGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2ZW50RW5kKG1fbmFtZSwgbV9pZCwgbV9l
eHRyYS5nZXQoKSk7CisgICAgU3VwcG9ydDo6dHJhY2VFdmVudEVuZChtX25hbWUsIG1faWQsIG1f
ZXh0cmEuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBpbnRlcm5hbApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29tcG9zaXRvclN1cHBv
cnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29tcG9z
aXRvclN1cHBvcnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1ZmEwMGNkNzJiYWYyNmUxOTcwMWY3MWZiZGYz
YmIzMjQwZjZlNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db21wb3NpdG9yU3VwcG9ydC5jcHAKQEAgLTAsMCArMSw1OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29tcG9zaXRvclN1cHBvcnQuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDb21wb3NpdG9yU3VwcG9ydERlbGVnYXRlKiBDb21w
b3NpdG9yU3VwcG9ydDo6c19kZWxlZ2F0ZTsKKworZG91YmxlIENvbXBvc2l0b3JTdXBwb3J0Ojpj
dXJyZW50VGltZSgpCit7CisgICAgcmV0dXJuIHNfZGVsZWdhdGUtPmN1cnJlbnRUaW1lKCk7Cit9
CisKK3ZvaWQgQ29tcG9zaXRvclN1cHBvcnQ6Omhpc3RvZ3JhbUN1c3RvbUNvdW50cyhjb25zdCBj
aGFyKiBuYW1lLCBpbnQgc2FtcGxlLCBpbnQgbWluLCBpbnQgbWF4LCBpbnQgYnVja2V0Q291bnQp
Cit7CisgICAgc19kZWxlZ2F0ZS0+aGlzdG9ncmFtQ3VzdG9tQ291bnRzKG5hbWUsIHNhbXBsZSwg
bWluLCBtYXgsIGJ1Y2tldENvdW50KTsKK30KKwordm9pZCBDb21wb3NpdG9yU3VwcG9ydDo6dHJh
Y2VFdmVudEJlZ2luKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBjb25zdCBjaGFyKiBleHRy
YSkKK3sKKyAgICBzX2RlbGVnYXRlLT50cmFjZUV2ZW50QmVnaW4obmFtZSwgaWQsIGV4dHJhKTsK
K30KKwordm9pZCBDb21wb3NpdG9yU3VwcG9ydDo6dHJhY2VFdmVudEVuZChjb25zdCBjaGFyKiBu
YW1lLCB2b2lkKiBpZCwgY29uc3QgY2hhciogZXh0cmEpCit7CisgICAgc19kZWxlZ2F0ZS0+dHJh
Y2VFdmVudEVuZChuYW1lLCBpZCwgZXh0cmEpOworfQorCit2b2lkIENvbXBvc2l0b3JTdXBwb3J0
OjpjYWxsT25NYWluVGhyZWFkKHZvaWQgKCpmdW5jdGlvbikodm9pZCopLCB2b2lkKiBjb250ZXh0
KQoreworICAgIHNfZGVsZWdhdGUtPmNhbGxPbk1haW5UaHJlYWQoZnVuY3Rpb24sIGNvbnRleHQp
OworfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29tcG9zaXRvclN1cHBvcnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbXBvc2l0b3JTdXBwb3J0
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDU2OWQ4MjZmODFkZjMyOGM0ZTBkOTRmZmJhYzM0NTM5NDA3OTk3ZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbXBvc2l0b3JTdXBwb3J0LmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaWZuZGVmIENv
bXBvc2l0b3JTdXBwb3J0X2gKKyNkZWZpbmUgQ29tcG9zaXRvclN1cHBvcnRfaAorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbXBvc2l0b3JTdXBwb3J0RGVsZWdhdGUgeworcHVibGlj
OgorICAgIHZpcnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lKCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBoaXN0b2dyYW1DdXN0b21Db3VudHMoY29uc3QgY2hhciogbmFtZSwgaW50IHNhbXBsZSwgaW50
IG1pbiwgaW50IG1heCwgaW50IGJ1Y2tldENvdW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRy
YWNlRXZlbnRCZWdpbihjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiBldmVudElkLCBjb25zdCBjaGFy
KiBleHRyYSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0cmFjZUV2ZW50RW5kKGNvbnN0IGNoYXIq
IG5hbWUsIHZvaWQqIGV2ZW50SWQsIGNvbnN0IGNoYXIqIGV4dHJhKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGNhbGxPbk1haW5UaHJlYWQodm9pZCAoKmZ1bmN0aW9uKSh2b2lkKiksIHZvaWQqIGNv
bnRleHQpID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfkNvbXBvc2l0b3JTdXBwb3J0
RGVsZWdhdGUoKSB7IH0KK307CisKK2NsYXNzIENvbXBvc2l0b3JTdXBwb3J0IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgZG91YmxlIGN1cnJlbnRUaW1lKCk7CisgICAgc3RhdGljIHZvaWQgaGlzdG9n
cmFtQ3VzdG9tQ291bnRzKGNvbnN0IGNoYXIqIG5hbWUsIGludCBzYW1wbGUsIGludCBtaW4sIGlu
dCBtYXgsIGludCBidWNrZXRDb3VudCk7CisgICAgc3RhdGljIHZvaWQgdHJhY2VFdmVudEJlZ2lu
KGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGV2ZW50SWQsIGNvbnN0IGNoYXIqIGV4dHJhKTsKKyAg
ICBzdGF0aWMgdm9pZCB0cmFjZUV2ZW50RW5kKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGV2ZW50
SWQsIGNvbnN0IGNoYXIqIGV4dHJhKTsKKyAgICBzdGF0aWMgdm9pZCBjYWxsT25NYWluVGhyZWFk
KHZvaWQgKCpmdW5jdGlvbikodm9pZCopLCB2b2lkKiBjb250ZXh0KTsKKworICAgIHN0YXRpYyB2
b2lkIHNldERlbGVnYXRlKENvbXBvc2l0b3JTdXBwb3J0RGVsZWdhdGUqIGRlbGVnYXRlKSB7IHNf
ZGVsZWdhdGUgPSBkZWxlZ2F0ZTsgfQorICAgIHN0YXRpYyBDb21wb3NpdG9yU3VwcG9ydERlbGVn
YXRlKiBkZWxlZ2F0ZSgpIHsgcmV0dXJuIHNfZGVsZWdhdGU7IH0KKworcHJpdmF0ZToKKyAgICBz
dGF0aWMgQ29tcG9zaXRvclN1cHBvcnREZWxlZ2F0ZSogc19kZWxlZ2F0ZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db21wb3NpdG9yVHJhY2VFdmVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29tcG9zaXRvclRyYWNlRXZlbnQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mNGRhNTg2MTA4MTFmZjA5MzdiYzhmZGQ0ZWI2MTJjNTQ5NjcxMjZhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29tcG9zaXRvclRyYWNlRXZlbnQuaApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpZm5kZWYg
Q29tcG9zaXRvclRyYWNlRXZlbnRfaAorI2RlZmluZSBDb21wb3NpdG9yVHJhY2VFdmVudF9oCisK
KyNpbmNsdWRlICJDb21wb3NpdG9yU3VwcG9ydC5oIgorI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIK
KworI2RlZmluZSBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKG5hbWUsIGlkLCBleHRyYSkgV2ViQ29y
ZTo6aW50ZXJuYWw6OlNjb3BlVHJhY2VyPENvbXBvc2l0b3JTdXBwb3J0PiBUUkFDRV9FVkVOVF9N
QUtFX1VOSVFVRV9JREVOVElGSUVSKF9fdHJhY2VFdmVudFNjb3BlKShuYW1lLCBpZCwgZXh0cmEp
OworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAppbmRleCA5ZGU0
ZGE5ZDZkNmQ0YjQzMDc2NmUxNzkyNzI4YTMwMzllYzcwOTAxLi5lYzVjMDExMmY4MDk3YmZlNTdi
NzVjNGE2ZmQxMjRkM2E5MWE2YWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0u
Y3BwCkBAIC0zNCwxMCArMzQsMTAgQEAKIAogI2luY2x1ZGUgIkNvbnRlbnRMYXllckNocm9taXVt
LmgiCiAKKyNpbmNsdWRlICJDb21wb3NpdG9yU3VwcG9ydC5oIgogI2luY2x1ZGUgIkxheWVyUGFp
bnRlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5j
bHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3Vw
cG9ydC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgPHd0Zi9D
dXJyZW50VGltZS5oPgogCkBAIC01MywxNCArNTMsMTQgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29u
dGVudFJlY3QpCiAgICAgewotICAgICAgICBkb3VibGUgcGFpbnRTdGFydCA9IGN1cnJlbnRUaW1l
KCk7CisgICAgICAgIGRvdWJsZSBwYWludFN0YXJ0ID0gQ29tcG9zaXRvclN1cHBvcnQ6OmN1cnJl
bnRUaW1lKCk7CiAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KGNvbnRlbnRSZWN0KTsKICAgICAg
ICAgY29udGV4dC5jbGlwKGNvbnRlbnRSZWN0KTsKICAgICAgICAgbV9kZWxlZ2F0ZS0+cGFpbnRD
b250ZW50cyhjb250ZXh0LCBjb250ZW50UmVjdCk7Ci0gICAgICAgIGRvdWJsZSBwYWludEVuZCA9
IGN1cnJlbnRUaW1lKCk7CisgICAgICAgIGRvdWJsZSBwYWludEVuZCA9IENvbXBvc2l0b3JTdXBw
b3J0OjpjdXJyZW50VGltZSgpOwogICAgICAgICBkb3VibGUgcGl4ZWxzUGVyU2VjID0gKGNvbnRl
bnRSZWN0LndpZHRoKCkgKiBjb250ZW50UmVjdC5oZWlnaHQoKSkgLyAocGFpbnRFbmQgLSBwYWlu
dFN0YXJ0KTsKLSAgICAgICAgUGxhdGZvcm1TdXBwb3J0OjpoaXN0b2dyYW1DdXN0b21Db3VudHMo
IlJlbmRlcmVyNC5BY2NlbENvbnRlbnRQYWludER1cmF0aW9uTVMiLCAocGFpbnRFbmQgLSBwYWlu
dFN0YXJ0KSAqIDEwMDAsIDAsIDEyMCwgMzApOwotICAgICAgICBQbGF0Zm9ybVN1cHBvcnQ6Omhp
c3RvZ3JhbUN1c3RvbUNvdW50cygiUmVuZGVyZXI0LkFjY2VsQ29udGVudFBhaW50TWVnYXBpeFBl
clNlY29uZCIsIHBpeGVsc1BlclNlYyAvIDEwMDAwMDAsIDEwLCAyMTAsIDMwKTsKKyAgICAgICAg
Q29tcG9zaXRvclN1cHBvcnQ6Omhpc3RvZ3JhbUN1c3RvbUNvdW50cygiUmVuZGVyZXI0LkFjY2Vs
Q29udGVudFBhaW50RHVyYXRpb25NUyIsIChwYWludEVuZCAtIHBhaW50U3RhcnQpICogMTAwMCwg
MCwgMTIwLCAzMCk7CisgICAgICAgIENvbXBvc2l0b3JTdXBwb3J0OjpoaXN0b2dyYW1DdXN0b21D
b3VudHMoIlJlbmRlcmVyNC5BY2NlbENvbnRlbnRQYWludE1lZ2FwaXhQZXJTZWNvbmQiLCBwaXhl
bHNQZXJTZWMgLyAxMDAwMDAwLCAxMCwgMjEwLCAzMCk7CiAgICAgfQogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBDb250ZW50TGF5ZXJQYWludGVyKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCBjNTI1YzFkMjNlYmY2NDc4
ODUzMjg4MjI3MmQ4ODIyYWY1Y2E2N2MwLi44Mjg4YmJjNGQ4YmY3NTJjYTBmMDU0NDA0N2QyNDBj
ODBmMTQzOTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTM1
LDYgKzM1LDggQEAKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKIAogI2luY2x1
ZGUgIkNhbnZhczJETGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIkNvbXBvc2l0b3JTdXBwb3J0
LmgiCisjaW5jbHVkZSAiQ29tcG9zaXRvclRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJFeHRlbnNp
b25zM0RDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkdlb21l
dHJ5QmluZGluZy5oIgpAQCAtNTAsNyArNTIsNiBAQAogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIK
ICNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgogI2luY2x1ZGUgIlRyZWVTeW5jaHJvbml6ZXIu
aCIKLSNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiVHJhY2tpbmdUZXh0dXJlQWxs
b2NhdG9yLmgiCiAjaW5jbHVkZSAiV2ViR0xMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiY2Mv
Q0NMYXllckltcGwuaCIKQEAgLTIzMiw3ICsyMzMsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6ZHJhd0xheWVycygpCiAgICAgLy8gRklYTUU6IHVzZSB0aGUgZnJhbWUgYmVnaW4gdGlt
ZSBmcm9tIHRoZSBvdmVyYWxsIGNvbXBvc2l0b3Igc2NoZWR1bGVyLgogICAgIC8vIFRoaXMgdmFs
dWUgaXMgY3VycmVudGx5IGluYWNjZXNzaWJsZSBiZWNhdXNlIGl0IGlzIHVwIGluIENocm9taXVt
J3MKICAgICAvLyBSZW5kZXJXaWRnZXQuCi0gICAgbV9oZWFkc1VwRGlzcGxheS0+b25GcmFtZUJl
Z2luKGN1cnJlbnRUaW1lKCkpOworICAgIG1faGVhZHNVcERpc3BsYXktPm9uRnJhbWVCZWdpbihD
b21wb3NpdG9yU3VwcG9ydDo6Y3VycmVudFRpbWUoKSk7CiAKICAgICBpZiAoIXJvb3RMYXllcigp
KQogICAgICAgICByZXR1cm47CkBAIC0yNTYsNyArMjU3LDcgQEAgdm9pZCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OmRyYXdMYXllcnNJbnRlcm5hbCgpCiAgICAgaWYgKHZpZXdwb3J0U2l6ZSgpLmlz
RW1wdHkoKSB8fCAhcm9vdExheWVyKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFRSQUNFX0VW
RU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnMiLCB0aGlzLCAwKTsKKyAgICBD
T01QT1NJVE9SX1RSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnMi
LCB0aGlzLCAwKTsKICAgICBDQ0xheWVySW1wbCogcm9vdERyYXdMYXllciA9IHJvb3RMYXllcigp
OwogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogCkBAIC0yNzMsNyArMjc0LDcgQEAgdm9pZCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnNJbnRlcm5hbCgpCiAgICAgbV9kZWZhdWx0
UmVuZGVyU3VyZmFjZS0+Y2xlYXJMYXllckxpc3QoKTsKIAogICAgIHsKLSAgICAgICAgVFJBQ0Vf
RVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVyc0ludGVybmFsOjpjYWxjRHJh
d0V0YyIsIHRoaXMsIDApOworICAgICAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJMYXllclJl
bmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnNJbnRlcm5hbDo6Y2FsY0RyYXdFdGMiLCB0aGlzLCAw
KTsKICAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jt
c0FuZFZpc2liaWxpdHkocm9vdERyYXdMYXllciwgcm9vdERyYXdMYXllciwgbV96b29tQW5pbWF0
b3JUcmFuc2Zvcm0sIG1fem9vbUFuaW1hdG9yVHJhbnNmb3JtLCByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LCBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKSwgJm1fbGF5ZXJTb3J0ZXIs
IG1fY2FwYWJpbGl0aWVzLm1heFRleHR1cmVTaXplKTsKICAgICB9CiAKQEAgLTQwOCwxMyArNDA5
LDEzIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3TWF0CiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpmaW5pc2goKQogewotICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06
OmZpbmlzaCIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6ZmluaXNoIiwgdGhpcywgMCk7CiAgICAgbV9jb250ZXh0LT5maW5pc2go
KTsKIH0KIAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnByZXNlbnQoKQogewotICAgIFRS
QUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnByZXNlbnQiLCB0aGlzLCAwKTsKKyAg
ICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnByZXNlbnQi
LCB0aGlzLCAwKTsKICAgICAvLyBXZSdyZSBkb25lISBUaW1lIHRvIHN3YXBidWZmZXJzIQogCiAg
ICAgLy8gTm90ZSB0aGF0IGN1cnJlbnRseSB0aGlzIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXMgc3dh
cEJ1ZmZlcnM7IHdlIHNob3VsZApAQCAtNjAyLDcgKzYwMyw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpzZXREcmF3Vmlld3BvcnRSZWN0KGNvbnN0IEludFJlY3QmIGRyYXdSZWN0LCBi
b29sIGZsCiAKIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hhcmVkT2Jq
ZWN0cygpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlh
bGl6ZVNoYXJlZE9iamVjdHMiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5U
KCJMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmplY3RzIiwgdGhpcywg
MCk7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAKICAgICAvLyBDcmVhdGUgYW4gRkJPIGZv
ciBkb2luZyBvZmZzY3JlZW4gcmVuZGVyaW5nLgpAQCAtNjI3LDcgKzYyOCw3IEBAIGNvbnN0IExh
eWVyQ2hyb21pdW06OkJvcmRlclByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Ym9yZGVy
UHJvZ3JhbSgpCiAgICAgaWYgKCFtX2JvcmRlclByb2dyYW0pCiAgICAgICAgIG1fYm9yZGVyUHJv
Z3JhbSA9IGFkb3B0UHRyKG5ldyBMYXllckNocm9taXVtOjpCb3JkZXJQcm9ncmFtKG1fY29udGV4
dC5nZXQoKSkpOwogICAgIGlmICghbV9ib3JkZXJQcm9ncmFtLT5pbml0aWFsaXplZCgpKSB7Ci0g
ICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OmJvcmRlclByb2dyYW06
OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgi
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpib3JkZXJQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywg
MCk7CiAgICAgICAgIG1fYm9yZGVyUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkp
OwogICAgIH0KICAgICByZXR1cm4gbV9ib3JkZXJQcm9ncmFtLmdldCgpOwpAQCAtNjM4LDcgKzYz
OSw3IEBAIGNvbnN0IENDSGVhZHNVcERpc3BsYXk6OlByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6aGVhZHNVcERpc3BsYXlQcm9ncmFtKCkKICAgICBpZiAoIW1faGVhZHNVcERpc3BsYXlQ
cm9ncmFtKQogICAgICAgICBtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBD
Q0hlYWRzVXBEaXNwbGF5OjpQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOwogICAgIGlmICghbV9o
ZWFkc1VwRGlzcGxheVByb2dyYW0tPmluaXRpYWxpemVkKCkpIHsKLSAgICAgICAgVFJBQ0VfRVZF
TlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aGVhZHNVcERpc3BsYXlQcm9ncmFtOjppbml0aWFs
aXplIiwgdGhpcywgMCk7CisgICAgICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6aGVhZHNVcERpc3BsYXlQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywg
MCk7CiAgICAgICAgIG1faGVhZHNVcERpc3BsYXlQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4
dC5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbS5nZXQo
KTsKQEAgLTY0OCw3ICs2NDksNyBAQCBjb25zdCBDQ1JlbmRlclN1cmZhY2U6OlByb2dyYW0qIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZVByb2dyYW0oKQogewogICAgIEFTU0VS
VChtX3JlbmRlclN1cmZhY2VQcm9ncmFtKTsKICAgICBpZiAoIW1fcmVuZGVyU3VyZmFjZVByb2dy
YW0tPmluaXRpYWxpemVkKCkpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6cmVuZGVyU3VyZmFjZVByb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAg
ICAgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5k
ZXJTdXJmYWNlUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwogICAgICAgICBtX3JlbmRl
clN1cmZhY2VQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQogICAg
IHJldHVybiBtX3JlbmRlclN1cmZhY2VQcm9ncmFtLmdldCgpOwpAQCAtNjU5LDcgKzY2MCw3IEBA
IGNvbnN0IENDUmVuZGVyU3VyZmFjZTo6UHJvZ3JhbUFBKiBMYXllclJlbmRlcmVyQ2hyb21pdW06
OnJlbmRlclN1cmZhY2VQcm9ncmFtQUEoCiAgICAgaWYgKCFtX3JlbmRlclN1cmZhY2VQcm9ncmFt
QUEpCiAgICAgICAgIG1fcmVuZGVyU3VyZmFjZVByb2dyYW1BQSA9IGFkb3B0UHRyKG5ldyBDQ1Jl
bmRlclN1cmZhY2U6OlByb2dyYW1BQShtX2NvbnRleHQuZ2V0KCkpKTsKICAgICBpZiAoIW1fcmVu
ZGVyU3VyZmFjZVByb2dyYW1BQS0+aW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBUUkFDRV9FVkVO
VCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJTdXJmYWNlUHJvZ3JhbUFBOjppbml0aWFs
aXplIiwgdGhpcywgMCk7CisgICAgICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZVByb2dyYW1BQTo6aW5pdGlhbGl6ZSIsIHRoaXMs
IDApOwogICAgICAgICBtX3JlbmRlclN1cmZhY2VQcm9ncmFtQUEtPmluaXRpYWxpemUobV9jb250
ZXh0LmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIG1fcmVuZGVyU3VyZmFjZVByb2dyYW1BQS5n
ZXQoKTsKQEAgLTY3MCw3ICs2NzEsNyBAQCBjb25zdCBDQ1JlbmRlclN1cmZhY2U6Ok1hc2tQcm9n
cmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclN1cmZhY2VNYXNrUHJvZwogICAgIGlm
ICghbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0pCiAgICAgICAgIG1fcmVuZGVyU3VyZmFjZU1h
c2tQcm9ncmFtID0gYWRvcHRQdHIobmV3IENDUmVuZGVyU3VyZmFjZTo6TWFza1Byb2dyYW0obV9j
b250ZXh0LmdldCgpKSk7CiAgICAgaWYgKCFtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbS0+aW5p
dGlhbGl6ZWQoKSkgewotICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpyZW5kZXJTdXJmYWNlTWFza1Byb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAg
ICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJT
dXJmYWNlTWFza1Byb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKICAgICAgICAgbV9yZW5k
ZXJTdXJmYWNlTWFza1Byb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKICAgICB9
CiAgICAgcmV0dXJuIG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtLmdldCgpOwpAQCAtNjgxLDcg
KzY4Miw3IEBAIGNvbnN0IENDUmVuZGVyU3VyZmFjZTo6TWFza1Byb2dyYW1BQSogTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpyZW5kZXJTdXJmYWNlTWFza1ByCiAgICAgaWYgKCFtX3JlbmRlclN1cmZh
Y2VNYXNrUHJvZ3JhbUFBKQogICAgICAgICBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBID0g
YWRvcHRQdHIobmV3IENDUmVuZGVyU3VyZmFjZTo6TWFza1Byb2dyYW1BQShtX2NvbnRleHQuZ2V0
KCkpKTsKICAgICBpZiAoIW1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEtPmluaXRpYWxpemVk
KCkpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVy
U3VyZmFjZU1hc2tQcm9ncmFtQUE6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgQ09N
UE9TSVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJTdXJmYWNl
TWFza1Byb2dyYW1BQTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwogICAgICAgICBtX3JlbmRlclN1
cmZhY2VNYXNrUHJvZ3JhbUFBLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQog
ICAgIHJldHVybiBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBLmdldCgpOwpAQCAtNjkxLDcg
KzY5Miw3IEBAIGNvbnN0IENDVGlsZWRMYXllckltcGw6OlByb2dyYW0qIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6dGlsZXJQcm9ncmFtKCkKIHsKICAgICBBU1NFUlQobV90aWxlclByb2dyYW0pOwog
ICAgIGlmICghbV90aWxlclByb2dyYW0tPmluaXRpYWxpemVkKCkpIHsKLSAgICAgICAgVFJBQ0Vf
RVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtOjppbml0aWFsaXplIiwg
dGhpcywgMCk7CisgICAgICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6dGlsZXJQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CiAgICAgICAgIG1f
dGlsZXJQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQogICAgIHJl
dHVybiBtX3RpbGVyUHJvZ3JhbS5nZXQoKTsKQEAgLTcwMiw3ICs3MDMsNyBAQCBjb25zdCBDQ1Rp
bGVkTGF5ZXJJbXBsOjpQcm9ncmFtQUEqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9n
cmFtQUEoKQogICAgIGlmICghbV90aWxlclByb2dyYW1BQSkKICAgICAgICAgbV90aWxlclByb2dy
YW1BQSA9IGFkb3B0UHRyKG5ldyBDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtQUEobV9jb250ZXh0
LmdldCgpKSk7CiAgICAgaWYgKCFtX3RpbGVyUHJvZ3JhbUFBLT5pbml0aWFsaXplZCgpKSB7Ci0g
ICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbUFB
Ojppbml0aWFsaXplIiwgdGhpcywgMCk7CisgICAgICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQo
IkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtQUE6OmluaXRpYWxpemUiLCB0aGlz
LCAwKTsKICAgICAgICAgbV90aWxlclByb2dyYW1BQS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0
KCkpOwogICAgIH0KICAgICByZXR1cm4gbV90aWxlclByb2dyYW1BQS5nZXQoKTsKQEAgLTcxMyw3
ICs3MTQsNyBAQCBjb25zdCBDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtU3dpenpsZSogTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1Td2l6egogICAgIGlmICghbV90aWxlclByb2dy
YW1Td2l6emxlKQogICAgICAgICBtX3RpbGVyUHJvZ3JhbVN3aXp6bGUgPSBhZG9wdFB0cihuZXcg
Q0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbVN3aXp6bGUobV9jb250ZXh0LmdldCgpKSk7CiAgICAg
aWYgKCFtX3RpbGVyUHJvZ3JhbVN3aXp6bGUtPmluaXRpYWxpemVkKCkpIHsKLSAgICAgICAgVFJB
Q0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtU3dpenpsZTo6aW5p
dGlhbGl6ZSIsIHRoaXMsIDApOworICAgICAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJMYXll
clJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbVN3aXp6bGU6OmluaXRpYWxpemUiLCB0aGlz
LCAwKTsKICAgICAgICAgbV90aWxlclByb2dyYW1Td2l6emxlLT5pbml0aWFsaXplKG1fY29udGV4
dC5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBtX3RpbGVyUHJvZ3JhbVN3aXp6bGUuZ2V0KCk7
CkBAIC03MjQsNyArNzI1LDcgQEAgY29uc3QgQ0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbVN3aXp6
bGVBQSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1Td2kKICAgICBpZiAoIW1f
dGlsZXJQcm9ncmFtU3dpenpsZUFBKQogICAgICAgICBtX3RpbGVyUHJvZ3JhbVN3aXp6bGVBQSA9
IGFkb3B0UHRyKG5ldyBDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtU3dpenpsZUFBKG1fY29udGV4
dC5nZXQoKSkpOwogICAgIGlmICghbV90aWxlclByb2dyYW1Td2l6emxlQUEtPmluaXRpYWxpemVk
KCkpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQ
cm9ncmFtU3dpenpsZUFBOjppbml0aWFsaXplIiwgdGhpcywgMCk7CisgICAgICAgIENPTVBPU0lU
T1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtU3dpenps
ZUFBOjppbml0aWFsaXplIiwgdGhpcywgMCk7CiAgICAgICAgIG1fdGlsZXJQcm9ncmFtU3dpenps
ZUFBLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBtX3Rp
bGVyUHJvZ3JhbVN3aXp6bGVBQS5nZXQoKTsKQEAgLTczNSw3ICs3MzYsNyBAQCBjb25zdCBDQ0Nh
bnZhc0xheWVySW1wbDo6UHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjYW52YXNMYXll
clByb2dyYW0oKQogICAgIGlmICghbV9jYW52YXNMYXllclByb2dyYW0pCiAgICAgICAgIG1fY2Fu
dmFzTGF5ZXJQcm9ncmFtID0gYWRvcHRQdHIobmV3IENDQ2FudmFzTGF5ZXJJbXBsOjpQcm9ncmFt
KG1fY29udGV4dC5nZXQoKSkpOwogICAgIGlmICghbV9jYW52YXNMYXllclByb2dyYW0tPmluaXRp
YWxpemVkKCkpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
Y2FudmFzTGF5ZXJQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CisgICAgICAgIENPTVBP
U0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2FudmFzTGF5ZXJQcm9n
cmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CiAgICAgICAgIG1fY2FudmFzTGF5ZXJQcm9ncmFt
LT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBtX2NhbnZh
c0xheWVyUHJvZ3JhbS5nZXQoKTsKQEAgLTc0Niw3ICs3NDcsNyBAQCBjb25zdCBDQ1BsdWdpbkxh
eWVySW1wbDo6UHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpwbHVnaW5MYXllclByb2dy
YW0oKQogICAgIGlmICghbV9wbHVnaW5MYXllclByb2dyYW0pCiAgICAgICAgIG1fcGx1Z2luTGF5
ZXJQcm9ncmFtID0gYWRvcHRQdHIobmV3IENDUGx1Z2luTGF5ZXJJbXBsOjpQcm9ncmFtKG1fY29u
dGV4dC5nZXQoKSkpOwogICAgIGlmICghbV9wbHVnaW5MYXllclByb2dyYW0tPmluaXRpYWxpemVk
KCkpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cGx1Z2lu
TGF5ZXJQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CisgICAgICAgIENPTVBPU0lUT1Jf
VFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cGx1Z2luTGF5ZXJQcm9ncmFtOjpp
bml0aWFsaXplIiwgdGhpcywgMCk7CiAgICAgICAgIG1fcGx1Z2luTGF5ZXJQcm9ncmFtLT5pbml0
aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBtX3BsdWdpbkxheWVy
UHJvZ3JhbS5nZXQoKTsKQEAgLTc1Nyw3ICs3NTgsNyBAQCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBs
OjpSR0JBUHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp2aWRlb0xheWVyUkdCQVByb2dy
YQogICAgIGlmICghbV92aWRlb0xheWVyUkdCQVByb2dyYW0pCiAgICAgICAgIG1fdmlkZW9MYXll
clJHQkFQcm9ncmFtID0gYWRvcHRQdHIobmV3IENDVmlkZW9MYXllckltcGw6OlJHQkFQcm9ncmFt
KG1fY29udGV4dC5nZXQoKSkpOwogICAgIGlmICghbV92aWRlb0xheWVyUkdCQVByb2dyYW0tPmlu
aXRpYWxpemVkKCkpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6dmlkZW9MYXllclJHQkFQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CisgICAgICAg
IENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dmlkZW9MYXll
clJHQkFQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CiAgICAgICAgIG1fdmlkZW9MYXll
clJHQkFQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQogICAgIHJl
dHVybiBtX3ZpZGVvTGF5ZXJSR0JBUHJvZ3JhbS5nZXQoKTsKQEAgLTc2OCw3ICs3NjksNyBAQCBj
b25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpZVVZQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06
OnZpZGVvTGF5ZXJZVVZQcm9ncmFtKAogICAgIGlmICghbV92aWRlb0xheWVyWVVWUHJvZ3JhbSkK
ICAgICAgICAgbV92aWRlb0xheWVyWVVWUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBDQ1ZpZGVvTGF5
ZXJJbXBsOjpZVVZQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOwogICAgIGlmICghbV92aWRlb0xh
eWVyWVVWUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBUUkFDRV9FVkVOVCgiTGF5
ZXJSZW5kZXJlckNocm9taXVtOjp2aWRlb0xheWVyWVVWUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRo
aXMsIDApOworICAgICAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hy
b21pdW06OnZpZGVvTGF5ZXJZVVZQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CiAgICAg
ICAgIG1fdmlkZW9MYXllcllVVlByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsK
ICAgICB9CiAgICAgcmV0dXJuIG1fdmlkZW9MYXllcllVVlByb2dyYW0uZ2V0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1
cmVTdWJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclRleHR1cmVTdWJJbWFnZS5jcHAKaW5kZXggOGZlYTM4YTY5MGM5NWNlN2EzOTg3NmI3
MGMzYmQwZTY5N2IyZWI4Ni4uMDU2NWYzNmQyYjA3OTM4NDlmNTUxMzgwNjliNDUxMzg1ZmMyNDc1
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmNwcApAQCAtMjksOSArMjksOSBA
QAogCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaCIKIAorI2luY2x1ZGUgIkNvbXBv
c2l0b3JUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgotI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgTGF5ZXJUZXh0dXJl
U3ViSW1hZ2U6OnVwbG9hZFdpdGhUZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBpbWFnZSwgY29u
c3QgSW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9y
bWF0LCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHsKLSAgICBUUkFDRV9FVkVOVCgiTGF5
ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhUZXhTdWJJbWFnZSIsIHRoaXMsIDApOworICAg
IENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWRXaXRo
VGV4U3ViSW1hZ2UiLCB0aGlzLCAwKTsKICAgICBpZiAoIW1fc3ViSW1hZ2UpCiAgICAgICAgIG1f
c3ViSW1hZ2UgPSBhZG9wdEFycmF5UHRyKG5ldyB1aW50OF90W21fc3ViSW1hZ2VTaXplLndpZHRo
KCkgKiBtX3N1YkltYWdlU2l6ZS5oZWlnaHQoKSAqIDRdKTsKIApAQCAtOTQsNyArOTQsNyBAQCB2
b2lkIExheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWRXaXRoTWFwVGV4U3ViSW1hZ2UoY29uc3Qg
dWludDhfdCogaW1hZ2UsIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHsK
LSAgICBUUkFDRV9FVkVOVCgiTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhT
dWJJbWFnZSIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyVGV4
dHVyZVN1YkltYWdlOjp1cGxvYWRXaXRoTWFwVGV4U3ViSW1hZ2UiLCB0aGlzLCAwKTsKICAgICAv
LyBPZmZzZXQgZnJvbSBpbWFnZS1yZWN0IHRvIHNvdXJjZS1yZWN0LgogICAgIEludFBvaW50IG9m
ZnNldChzb3VyY2VSZWN0LngoKSAtIGltYWdlUmVjdC54KCksIHNvdXJjZVJlY3QueSgpIC0gaW1h
Z2VSZWN0LnkoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5j
cHAKaW5kZXggZmYxOWM3MWM1MGI3NTUwNzE1MWEzYzUwMjdhODJhM2QyNzg1YjVlMy4uNjM2OTQw
OWRmNjUyYmM5ZTI1ZGMwYjQ0MGMyOGNmZGZhMzljY2E3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZh
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAogCiAjaW5jbHVk
ZSAiTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5oIgogCisjaW5jbHVkZSAiQ29tcG9zaXRvclRy
YWNlRXZlbnQuaCIKICNpbmNsdWRlICJFeHRlbnNpb25zM0QuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKICNpbmNsdWRlICJMYXllclBhaW50ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUg
Ik1hbmFnZWRUZXh0dXJlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db2xvci5oIgotI2luY2x1ZGUg
IlRyYWNlRXZlbnQuaCIKIAogI2lmIFVTRShTS0lBKQogI2luY2x1ZGUgIkdyQ29udGV4dC5oIgpA
QCAtNTUsNyArNTUsNyBAQCB2b2lkIExheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXM6OnBhaW50Q29u
dGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbgogewogICAgIGNvbnRleHQu
dHJhbnNsYXRlKC1jb250ZW50UmVjdC54KCksIC1jb250ZW50UmVjdC55KCkpOwogICAgIHsKLSAg
ICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXM6OnBhaW50IiwgdGhp
cywgMCk7CisgICAgICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyVGV4dHVyZVVwZGF0
ZXJDYW52YXM6OnBhaW50IiwgdGhpcywgMCk7CiAgICAgICAgIG1fcGFpbnRlci0+cGFpbnQoY29u
dGV4dCwgY29udGVudFJlY3QpOwogICAgIH0KICAgICBtX2NvbnRlbnRSZWN0ID0gY29udGVudFJl
Y3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Qcm9ncmFtQmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Qcm9ncmFtQmluZGluZy5jcHAKaW5kZXggMjY3ZTAxOTU3NzI2OTdlNWU3NDI1MDQx
NjRlZDRlY2Q3ZDRmNmQ0Ny4uZTFhMjQ4NjI4ZjRmNjgxZjhjM2U5NTc1ZWIwOGE5MzZiYzkwYjA1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
UHJvZ3JhbUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmNwcApAQCAtMjksMTEgKzI5LDExIEBACiAKICNpbmNs
dWRlICJQcm9ncmFtQmluZGluZy5oIgogCisjaW5jbHVkZSAiQ29tcG9zaXRvclRyYWNlRXZlbnQu
aCIKICNpbmNsdWRlICJHZW9tZXRyeUJpbmRpbmcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC04OCw3ICs4OCw3IEBAIHVuc2lnbmVkIFByb2dyYW1CaW5kaW5nQmFzZTo6
bG9hZFNoYWRlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgdHlwCiAKIHVu
c2lnbmVkIFByb2dyYW1CaW5kaW5nQmFzZTo6Y3JlYXRlU2hhZGVyUHJvZ3JhbShHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGNvbnN0
IFN0cmluZyYgZnJhZ21lbnRTaGFkZXJTb3VyY2UpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIlByb2dy
YW1CaW5kaW5nQmFzZTo6Y3JlYXRlU2hhZGVyUHJvZ3JhbSIsIHRoaXMsIDApOworICAgIENPTVBP
U0lUT1JfVFJBQ0VfRVZFTlQoIlByb2dyYW1CaW5kaW5nQmFzZTo6Y3JlYXRlU2hhZGVyUHJvZ3Jh
bSIsIHRoaXMsIDApOwogICAgIHVuc2lnbmVkIHZlcnRleFNoYWRlciA9IGxvYWRTaGFkZXIoY29u
dGV4dCwgR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9TSEFERVIsIHZlcnRleFNoYWRlclNvdXJj
ZSk7CiAgICAgaWYgKCF2ZXJ0ZXhTaGFkZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQg
dG8gY3JlYXRlIHZlcnRleCBzaGFkZXIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5oCmluZGV4IGJiNmZj
OGRkZDkwZjhkNTVmMzVhNThkMjEzM2ZkYTQ5ODJiZDIwYjcuLmEyMGYwZDZmYzU0OWM3NGE5Y2Rl
MWY5NDM1YzZiZmE0OWIzNTVmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuaApAQCAtMjksNyArMjks
NiBAQAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCi0jaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDMyYmE2YTNiZWU1YTAy
NGY1NWNjMDI3NjIyNTJiOTNiNTgwNGUwZTQuLmRhMjM3YjhjNzI2ZTJlNjIyZWZkOTUyZmQzZGQw
Mjk1ZTM1NDU4MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcApAQCAtMzQsMTAg
KzM0LDEwIEBACiAKICNpbmNsdWRlICJXZWJHTExheWVyQ2hyb21pdW0uaCIKIAorI2luY2x1ZGUg
IkNvbXBvc2l0b3JUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0u
aCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVy
ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0xNTUsNyArMTU1LDcgQEAgR3JhcGhpY3NDb250ZXh0M0QqIFdlYkdMTGF5ZXJD
aHJvbWl1bTo6bGF5ZXJSZW5kZXJlckNvbnRleHQoKQogCiB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1
bTo6cmF0ZUxpbWl0Q29udGV4dChUaW1lcjxXZWJHTExheWVyQ2hyb21pdW0+KikKIHsKLSAgICBU
UkFDRV9FVkVOVCgiV2ViR0xMYXllckNocm9taXVtOjpyYXRlTGltaXRDb250ZXh0IiwgdGhpcywg
MCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiV2ViR0xMYXllckNocm9taXVtOjpyYXRl
TGltaXRDb250ZXh0IiwgdGhpcywgMCk7CiAKICAgICBpZiAoIW1fY29udGV4dCkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcAppbmRleCA4NjRjODhmMDc5
YWUzMTdkZDBhMjJkZDczNDQ4NzBjYmJjMjI0YTk2Li4xNTQ3YmI4MmViNDhhNTIxYzI1MjY3NDAy
OWI5YTMyMjMzZmU4MzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcApAQCAt
MjcsNiArMjcsNyBAQAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICNpbmNsdWRl
ICJDQ0hlYWRzVXBEaXNwbGF5LmgiCiAKKyNpbmNsdWRlICJDb21wb3NpdG9yU3VwcG9ydC5oIgog
I2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5jbHVkZSAiRm9udC5oIgogI2lu
Y2x1ZGUgIkZvbnRDYWNoZS5oIgpAQCAtNTMsNyArNTQsNyBAQCBDQ0hlYWRzVXBEaXNwbGF5OjpD
Q0hlYWRzVXBEaXNwbGF5KExheWVyUmVuZGVyZXJDaHJvbWl1bSogb3duZXIpCiAgICAgLCBtX2xh
eWVyUmVuZGVyZXIob3duZXIpCiAgICAgLCBtX3VzZU1hcFN1YkZvclVwbG9hZHMob3duZXItPmNv
bnRleHRTdXBwb3J0c01hcFN1YigpKQogewotICAgIG1fYmVnaW5UaW1lSGlzdG9yeUluU2VjWzBd
ID0gY3VycmVudFRpbWUoKTsKKyAgICBtX2JlZ2luVGltZUhpc3RvcnlJblNlY1swXSA9IENvbXBv
c2l0b3JTdXBwb3J0OjpjdXJyZW50VGltZSgpOwogICAgIG1fYmVnaW5UaW1lSGlzdG9yeUluU2Vj
WzFdID0gbV9iZWdpblRpbWVIaXN0b3J5SW5TZWNbMF07CiAgICAgZm9yIChpbnQgaSA9IDI7IGkg
PCBrQmVnaW5GcmFtZUhpc3RvcnlTaXplOyBpKyspCiAgICAgICAgIG1fYmVnaW5UaW1lSGlzdG9y
eUluU2VjW2ldID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAppbmRleCAyYjA1ZDlmZjBkMTdl
MDJiYjRlZTdkODNiYjBmM2IyNGZjYjc1Y2YzLi4yYzVmYzcwYmIxM2VhOTg0YzRlMTZhZWVlYjZj
NDgwNDc2M2RhYjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCkBAIC0yOSw2ICsyOSw3IEBA
CiAKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogCisjaW5jbHVkZSAiQ29tcG9zaXRvclRy
YWNlRXZlbnQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxh
eWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKQEAgLTE5
Miw3ICsxOTMsNyBAQCB2b2lkIENDTGF5ZXJJbXBsOjpkdW1wTGF5ZXJQcm9wZXJ0aWVzKFRleHRT
dHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjb25zdAogCiB2b2lkIHNvcnRMYXllcnMoVmVjdG9yPFJl
ZlB0cjxDQ0xheWVySW1wbD4gPjo6aXRlcmF0b3IgZmlyc3QsIFZlY3RvcjxSZWZQdHI8Q0NMYXll
ckltcGw+ID46Oml0ZXJhdG9yIGVuZCwgQ0NMYXllclNvcnRlciogbGF5ZXJTb3J0ZXIpCiB7Ci0g
ICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6c29ydExheWVycyIsIDAsIDAp
OworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6c29y
dExheWVycyIsIDAsIDApOwogICAgIGxheWVyU29ydGVyLT5zb3J0KGZpcnN0LCBlbmQpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCAyN2JhZWI5ODk4MDJhM2IyN2Rh
Y2U1Y2MxMjM1NTFjYWI5OTQ4YjU4Li42MDI4MTk1OWNiY2VmMTVkNzg3ZjY1NDFmNTA1NjE3YjAz
ZTAxYjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTI2LDEwICsyNiwx
MCBAQAogCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAKKyNpbmNsdWRlICJDb21w
b3NpdG9yVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRl
ICJMYXllclBhaW50ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1
bS5oIgotI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJUcmVlU3luY2hyb25pemVy
LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgiCiAjaW5jbHVkZSAiY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5oIgpAQCAtNjEsNyArNjEsNyBAQCBDQ0xheWVyVHJlZUhvc3Q6
OkNDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0
cjxMYXllcgogCiBib29sIENDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZSgpCiB7Ci0gICAgVFJB
Q0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOworICAgIENP
TVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZSIsIHRoaXMs
IDApOwogICAgIGlmIChtX3NldHRpbmdzLmVuYWJsZUNvbXBvc2l0b3JUaHJlYWQpIHsKICAgICAg
ICAgLy8gQWNjZWxlcmF0ZWQgUGFpbnRpbmcgaXMgbm90IHN1cHBvcnRlZCBpbiB0aHJlYWRlZCBt
b2RlLiBUdXJuIGl0IG9mZi4KICAgICAgICAgbV9zZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRpbmcg
PSBmYWxzZTsKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OmluaXRpYWxp
emUoKQogQ0NMYXllclRyZWVIb3N0Ojp+Q0NMYXllclRyZWVIb3N0KCkKIHsKICAgICBBU1NFUlQo
Q0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwotICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhv
c3Q6On5DQ0xheWVyVHJlZUhvc3QiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VW
RU5UKCJDQ0xheWVyVHJlZUhvc3Q6On5DQ0xheWVyVHJlZUhvc3QiLCB0aGlzLCAwKTsKICAgICBt
X3Byb3h5LT5zdG9wKCk7CiAgICAgbV9wcm94eS5jbGVhcigpOwogICAgIGNsZWFyUGVuZGluZ1Vw
ZGF0ZSgpOwpAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjphbmltYXRl
QW5kTGF5b3V0KGRvdWJsZSBmcmFtZUJlZ2luVGltZSkKIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpj
b21taXRUb09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaG9zdEltcGwpCiB7CiAgICAg
QVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKLSAgICBUUkFDRV9FVkVOVCgiQ0NMYXll
clRyZWVIb3N0Ojpjb21taXRUbyIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZF
TlQoIkNDTGF5ZXJUcmVlSG9zdDo6Y29tbWl0VG8iLCB0aGlzLCAwKTsKICAgICBob3N0SW1wbC0+
c2V0U291cmNlRnJhbWVOdW1iZXIoZnJhbWVOdW1iZXIoKSk7CiAKICAgICBjb250ZW50c1RleHR1
cmVNYW5hZ2VyKCktPnJlZHVjZU1lbW9yeVRvTGltaXQoVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1M
aW1pdEJ5dGVzKCkpOwpAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpz
ZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHpvb20p
CiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KCkKIHsKICAg
ICBpZiAobV9zZXR0aW5ncy5lbmFibGVDb21wb3NpdG9yVGhyZWFkKSB7Ci0gICAgICAgIFRSQUNF
X0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzUmVkcmF3IiwgdGhpcywgMCk7CisgICAg
ICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6c2V0TmVlZHNSZWRy
YXciLCB0aGlzLCAwKTsKICAgICAgICAgbV9wcm94eS0+c2V0TmVlZHNDb21taXRUaGVuUmVkcmF3
KCk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZUNvbXBvc2l0ZSgpOwpA
QCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoKQog
CiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RM
YXllcikKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMi
LCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6
OnVwZGF0ZUxheWVycyIsIHRoaXMsIDApOwogCiAgICAgaWYgKCFyb290TGF5ZXItPnJlbmRlclN1
cmZhY2UoKSkKICAgICAgICAgcm9vdExheWVyLT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CkBAIC0y
NzcsNyArMjc3LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNo
cm9taXVtKiByb290TGF5ZXIpCiAgICAgcm9vdFJlbmRlclN1cmZhY2UtPmNsZWFyTGF5ZXJMaXN0
KCk7CiAKICAgICB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0
ZUxheWVyczo6Y2FsY0RyYXdFdGMiLCB0aGlzLCAwKTsKKyAgICAgICAgQ09NUE9TSVRPUl9UUkFD
RV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnM6OmNhbGNEcmF3RXRjIiwgdGhp
cywgMCk7CiAgICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5z
Zm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllciwgcm9vdExheWVyLCBtX3pvb21BbmltYXRvclRy
YW5zZm9ybSwgbV96b29tQW5pbWF0b3JUcmFuc2Zvcm0sIG1fdXBkYXRlTGlzdCwgcm9vdFJlbmRl
clN1cmZhY2UtPmxheWVyTGlzdCgpLCBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4
dHVyZVNpemUpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cAppbmRleCBhMzM5OTA4MTZhOTRlMGMyOWI3OWMwYmUzNDc2NTRkOTMwYjNiMTViLi5kOTQyZWU2
MjE3ODA1NmUyODk5ZDM2YzViMmY2Y2ViNzgwMTk1MDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMjYsMTAgKzI2LDEwIEBACiAKICNpbmNsdWRlICJjYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmgiCiAKKyNpbmNsdWRlICJDb21wb3NpdG9yVHJhY2VFdmVudC5o
IgogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNE
LmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCi0jaW5jbHVkZSAiVHJhY2VF
dmVudC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgImNjL0ND
TWFpblRocmVhZC5oIgogI2luY2x1ZGUgImNjL0NDTWFpblRocmVhZFRhc2suaCIKQEAgLTU0LDcg
KzU0LDcgQEAgQ0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbChjb25zdCBD
Q1NldHRpbmdzJiBzZXR0aW5ncykKIENDTGF5ZXJUcmVlSG9zdEltcGw6On5DQ0xheWVyVHJlZUhv
c3RJbXBsKCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwotICAgIFRS
QUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3RJbXBsOjp+Q0NMYXllclRyZWVIb3N0SW1wbCgpIiwg
dGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0SW1w
bDo6fkNDTGF5ZXJUcmVlSG9zdEltcGwoKSIsIHRoaXMsIDApOwogICAgIGlmIChtX2xheWVyUmVu
ZGVyZXIpCiAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+Y2xvc2UoKTsKIH0KQEAgLTc0LDcgKzc0
LDcgQEAgR3JhcGhpY3NDb250ZXh0M0QqIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNvbnRleHQoKQog
CiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMoKQogewotICAgIFRSQUNFX0VW
RU5UKCJDQ0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzIiwgdGhpcywgMCk7CisgICAgQ09N
UE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycyIsIHRo
aXMsIDApOwogICAgIEFTU0VSVChtX2xheWVyUmVuZGVyZXIpOwogICAgIGlmIChtX2xheWVyUmVu
ZGVyZXItPnJvb3RMYXllcigpKQogICAgICAgICBtX2xheWVyUmVuZGVyZXItPmRyYXdMYXllcnMo
KTsKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFpvb21B
bmltYXRvclRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgegogCiB2b2lkIEND
TGF5ZXJUcmVlSG9zdEltcGw6OnNjcm9sbFJvb3RMYXllcihjb25zdCBJbnRTaXplJiBzY3JvbGxE
ZWx0YSkKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsUm9v
dExheWVyIiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NMYXllclRy
ZWVIb3N0SW1wbDo6c2Nyb2xsUm9vdExheWVyIiwgdGhpcywgMCk7CiAgICAgaWYgKCFtX3Jvb3RM
YXllckltcGwgfHwgIW1fcm9vdExheWVySW1wbC0+c2Nyb2xsYWJsZSgpKQogICAgICAgICByZXR1
cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTWFpblRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ01haW5UaHJlYWQuY3BwCmluZGV4IGNkMzY4MTdlZGZjYjc5OTE2MmVl
N2Y3MTY5ZWQ1YTAyZDczZTdkZDYuLjAxYzg1OGVlM2M2N2JiNjU3ZDBjZDhmOGY2YjY3Y2UyM2Q4
NzlkNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTWFpblRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NNYWluVGhyZWFkLmNwcApAQCAtMjUsNiArMjUsOCBAQAogCiAj
aW5jbHVkZSAiQ0NNYWluVGhyZWFkLmgiCiAKKyNpbmNsdWRlICJDb21wb3NpdG9yU3VwcG9ydC5o
IgorCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdURjsK
QEAgLTQwLDcgKzQyLDcgQEAgdm9pZCBDQ01haW5UaHJlYWQ6OnBlcmZvcm1UYXNrKHZvaWQqIHVz
ZXJkYXRhKQogCiB2b2lkIENDTWFpblRocmVhZDo6cG9zdFRhc2soUGFzc093blB0cjxUYXNrPiB0
YXNrKQogewotICAgIGNhbGxPbk1haW5UaHJlYWQocGVyZm9ybVRhc2ssIHRhc2subGVha1B0cigp
KTsKKyAgICBDb21wb3NpdG9yU3VwcG9ydDo6Y2FsbE9uTWFpblRocmVhZChwZXJmb3JtVGFzaywg
dGFzay5sZWFrUHRyKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuY3BwCmluZGV4IGI3ZWNjZWNkMTBh
MDhiOGViYTg3NjVmMDg5OGZlYjJkMzExMWIyOGYuLjNkMDE5OTNjZDAzODNiZjdiZTNjZTU0MzVm
MjZkYWI0NTUzZjJmOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAKICNp
bmNsdWRlICJjYy9DQ1Byb3h5LmgiCiAKLSNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVk
ZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiY2MvQ0NNYWluVGhyZWFkVGFzay5o
IgogI2luY2x1ZGUgImNjL0NDVGhyZWFkVGFzay5oIgpAQCAtNDEsMTEgKzQwLDEyIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSB7CiBib29sIGZha2VJbXBsVGhyZWFkID0gZmFsc2U7
CiBzdGF0aWMgV1RGOjpUaHJlYWRJZGVudGlmaWVyIGltcGxUaHJlYWRJRDsKK3N0YXRpYyBXVEY6
OlRocmVhZElkZW50aWZpZXIgbWFpblRocmVhZElEOwogfQogCiBib29sIENDUHJveHk6OmlzTWFp
blRocmVhZCgpCiB7Ci0gICAgcmV0dXJuIDo6aXNNYWluVGhyZWFkKCkgJiYgIWZha2VJbXBsVGhy
ZWFkOworICAgIHJldHVybiAhZmFrZUltcGxUaHJlYWQgJiYgY3VycmVudFRocmVhZCgpID09IG1h
aW5UaHJlYWRJRDsKIH0KIAogYm9vbCBDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKQpAQCAtNjMsNiAr
NjMsMTYgQEAgdm9pZCBDQ1Byb3h5OjpzZXRJbXBsVGhyZWFkKFdURjo6VGhyZWFkSWRlbnRpZmll
ciBpZCkKICAgICBpbXBsVGhyZWFkSUQgPSBpZDsKIH0KIAordm9pZCBDQ1Byb3h5OjpzZXRNYWlu
VGhyZWFkKFdURjo6VGhyZWFkSWRlbnRpZmllciBpZCkKK3sKKyAgICBtYWluVGhyZWFkSUQgPSBp
ZDsKK30KKwogI2VuZGlmIC8vICFOREVCVUcKIAorQ0NQcm94eTo6Q0NQcm94eSgpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCmluZGV4IGRmYjc3YjNh
OWFkNWMyZWQ5ZmZlMTVmNDk5NTI1MjA1NmE3Mzk5NzYuLjMyODdjMTIxNTQzNTU5NzQ5ZGE1MGEz
NDQ1ODZkYWQ5OTg0ODUzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKQEAgLTg2LDEwICs4NiwxMSBAQCBwdWJs
aWM6CiAjaWZuZGVmIE5ERUJVRwogICAgIHN0YXRpYyB2b2lkIHNldEltcGxUaHJlYWQoYm9vbCk7
CiAgICAgc3RhdGljIHZvaWQgc2V0SW1wbFRocmVhZChXVEY6OlRocmVhZElkZW50aWZpZXIpOwor
ICAgIHN0YXRpYyB2b2lkIHNldE1haW5UaHJlYWQoV1RGOjpUaHJlYWRJZGVudGlmaWVyKTsKICNl
bmRpZgogCiBwcm90ZWN0ZWQ6Ci0gICAgQ0NQcm94eSgpIHsgfQorICAgIENDUHJveHkoKTsKICAg
ICBmcmllbmQgY2xhc3MgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCA3ODcyNzA3YjJlYTAyZDBjMTM0ZGQy
ZjA5OTAyMzQ0NTVhOTkwYzQwLi45MzVmNTA2ZmI0YzY3M2FjYzM1ZTQ3OTEwNmY3MjFiNDU2YzY3
Y2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtMjYsOSAr
MjYsOSBAQAogCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgogCisjaW5jbHVk
ZSAiQ29tcG9zaXRvclRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5o
IgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIlRyYWNlRXZl
bnQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJjYy9DQ01h
aW5UaHJlYWRUYXNrLmgiCiAjaW5jbHVkZSAiY2MvQ0NTY3JvbGxDb250cm9sbGVyLmgiCkBAIC01
MCw4ICs1MCw4IEBAIENDU2luZ2xlVGhyZWFkUHJveHk6OkNDU2luZ2xlVGhyZWFkUHJveHkoQ0NM
YXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KQogICAgICwgbV9ncmFwaGljc0NvbnRleHRMb3N0
KGZhbHNlKQogICAgICwgbV90aW1lc1JlY3JlYXRlU2hvdWxkRmFpbCgwKQogewotICAgIFRSQUNF
X0VWRU5UKCJDQ1NpbmdsZVRocmVhZFByb3h5OjpDQ1NpbmdsZVRocmVhZFByb3h5IiwgdGhpcywg
MCk7Ci0gICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKKyAgICBDT01QT1NJVE9S
X1RSQUNFX0VWRU5UKCJDQ1NpbmdsZVRocmVhZFByb3h5OjpDQ1NpbmdsZVRocmVhZFByb3h5Iiwg
dGhpcywgMCk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIH0KIAogdm9pZCBDQ1Npbmds
ZVRocmVhZFByb3h5OjpzdGFydCgpCkBAIC02Miw4ICs2Miw4IEBAIHZvaWQgQ0NTaW5nbGVUaHJl
YWRQcm94eTo6c3RhcnQoKQogCiBDQ1NpbmdsZVRocmVhZFByb3h5Ojp+Q0NTaW5nbGVUaHJlYWRQ
cm94eSgpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDU2luZ2xlVGhyZWFkUHJveHk6On5DQ1Npbmds
ZVRocmVhZFByb3h5IiwgdGhpcywgMCk7Ci0gICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVh
ZCgpKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJDQ1NpbmdsZVRocmVhZFByb3h5Ojp+
Q0NTaW5nbGVUaHJlYWRQcm94eSIsIHRoaXMsIDApOworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgQVNTRVJUKCFtX2xheWVyVHJlZUhvc3RJbXBsICYmICFtX2xheWVyVHJlZUhvc3Qp
OyAvLyBtYWtlIHN1cmUgc3RvcCgpIGdvdCBjYWxsZWQuCiB9CiAKQEAgLTE3Myw4ICsxNzMsOCBA
QCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3KCkKIAogdm9pZCBDQ1Np
bmdsZVRocmVhZFByb3h5OjpzdG9wKCkKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NTaW5nbGVUaHJl
YWRQcm94eTo6c3RvcCIsIHRoaXMsIDApOwotICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJl
YWQoKSk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NTaW5nbGVUaHJlYWRQcm94eTo6
c3RvcCIsIHRoaXMsIDApOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgewogICAg
ICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICAgICAgbV9sYXllclRyZWVI
b3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25DQ1RocmVhZChtX2xheWVyVHJlZUhvc3RJbXBs
LT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3Bw
CmluZGV4IDllZTE2NGE1Y2VmMmI1Y2FiY2VlM2VjYzVmN2QxZDQxNzljOTczM2YuLmZiODA0Zjdm
MzZmMGVhOWZkYWJhMmJiYzVjNGI5MjJiMTJmNDNlOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwCkBAIC0yNiw4ICsyNiw4IEBACiAKICNpbmNsdWRlICJjYy9DQ1RocmVhZFByb3h5Lmgi
CiAKKyNpbmNsdWRlICJDb21wb3NpdG9yVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dDNELmgiCi0jaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDSW5w
dXRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAi
Y2MvQ0NNYWluVGhyZWFkVGFzay5oIgpAQCAtMTE1LDIwICsxMTUsMjAgQEAgQ0NUaHJlYWRQcm94
eTo6Q0NUaHJlYWRQcm94eShDQ0xheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QpCiAgICAgLCBt
X2xhc3RFeGVjdXRlZEJlZ2luRnJhbWVBbmRDb21taXRTZXF1ZW5jZU51bWJlcigtMSkKICAgICAs
IG1fbnVtQmVnaW5GcmFtZUFuZENvbW1pdHNJc3N1ZWRPbkNDVGhyZWFkKDApCiB7Ci0gICAgVFJB
Q0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OkNDVGhyZWFkUHJveHkiLCB0aGlzLCAwKTsKKyAgICBD
T01QT1NJVE9SX1RSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpDQ1RocmVhZFByb3h5IiwgdGhp
cywgMCk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIH0KIAogQ0NUaHJlYWRQcm94eTo6
fkNDVGhyZWFkUHJveHkoKQogewotICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojp+Q0NU
aHJlYWRQcm94eSIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDVGhy
ZWFkUHJveHk6On5DQ1RocmVhZFByb3h5IiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICBBU1NFUlQoIW1fc3RhcnRlZCk7CiB9CiAKIGJvb2wgQ0NUaHJlYWRQcm94
eTo6Y29tcG9zaXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiByZWN0
KQogewotICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFBSb3h5Ojpjb21wb3NpdGVBbmRSZWFkYmFj
ayIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUFJveHk6
OmNvbXBvc2l0ZUFuZFJlYWRiYWNrIiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKICAgICBBU1NFUlQobV9sYXllclRyZWVIb3N0KTsKIApAQCAtMTk1LDcgKzE5NSw3IEBA
IGJvb2wgQ0NUaHJlYWRQcm94eTo6aXNTdGFydGVkKCkgY29uc3QKIAogYm9vbCBDQ1RocmVhZFBy
b3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDVGhy
ZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVyIiwgdGhpcywgMCk7CisgICAgQ09NUE9T
SVRPUl9UUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIi
LCB0aGlzLCAwKTsKICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBtX2xh
eWVyVHJlZUhvc3QtPmNyZWF0ZUxheWVyVHJlZUhvc3RDb250ZXh0M0QoKTsKICAgICBpZiAoIWNv
bnRleHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI0Myw3ICsyNDMsNyBAQCB2b2lkIEND
VGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0KCkKICAgICBpZiAobV9jb21taXRSZXF1ZXN0ZWQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzZXRO
ZWVkc0NvbW1pdCIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDVGhy
ZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0IiwgdGhpcywgMCk7CiAgICAgbV9jb21taXRSZXF1ZXN0
ZWQgPSB0cnVlOwogICAgIHNfY2NUaHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0
aGlzLCAmQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXRPbkNDVGhyZWFkKSk7CiB9CkBAIC0y
NTgsMjEgKzI1OCwyMSBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0VGhlblJl
ZHJhdygpCiB2b2lkIENDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0T25DQ1RocmVhZCgpCiB7
CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQ
cm94eTo6c2V0TmVlZHNDb21taXRPbkNDVGhyZWFkIiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRP
Ul9UUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXRPbkNDVGhyZWFkIiwg
dGhpcywgMCk7CiAgICAgbV9zY2hlZHVsZXJPbkNDVGhyZWFkLT5yZXF1ZXN0Q29tbWl0KCk7CiB9
CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNSZWRyYXcoKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNldE5lZWRz
UmVkcmF3IiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NUaHJlYWRQ
cm94eTo6c2V0TmVlZHNSZWRyYXciLCB0aGlzLCAwKTsKICAgICBzX2NjVGhyZWFkLT5wb3N0VGFz
ayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3
T25DQ1RocmVhZCkpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3T25D
Q1RocmVhZCgpCiB7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKLSAgICBUUkFDRV9FVkVO
VCgiQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNSZWRyYXdPbkNDVGhyZWFkIiwgdGhpcywgMCk7Cisg
ICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNSZWRyYXdP
bkNDVGhyZWFkIiwgdGhpcywgMCk7CiAgICAgbV9zY2hlZHVsZXJPbkNDVGhyZWFkLT5yZXF1ZXN0
UmVkcmF3KCk7CiB9CiAKQEAgLTI5MCw3ICsyOTAsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnN0
YXJ0KCkKIAogdm9pZCBDQ1RocmVhZFByb3h5OjpzdG9wKCkKIHsKLSAgICBUUkFDRV9FVkVOVCgi
Q0NUaHJlYWRQcm94eTo6c3RvcCIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZF
TlQoIkNDVGhyZWFkUHJveHk6OnN0b3AiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogICAgIEFTU0VSVChtX3N0YXJ0ZWQpOwogCkBAIC0zMDYsNyArMzA2LDcgQEAgdm9p
ZCBDQ1RocmVhZFByb3h5OjpzdG9wKCkKIAogdm9pZCBDQ1RocmVhZFByb3h5OjpmaW5pc2hBbGxS
ZW5kZXJpbmdPbkNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQogewotICAg
IFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpmaW5pc2hBbGxSZW5kZXJpbmdPbkNDVGhyZWFk
IiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6
ZmluaXNoQWxsUmVuZGVyaW5nT25DQ1RocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc0lt
cGxUaHJlYWQoKSk7CiAgICAgaWYgKG1fc2NoZWR1bGVyT25DQ1RocmVhZC0+cmVkcmF3UGVuZGlu
ZygpKSB7CiAgICAgICAgIGRyYXdMYXllcnNPbkNDVGhyZWFkKCk7CkBAIC0zMjYsNyArMzI2LDcg
QEAgdm9pZCBDQ1RocmVhZFByb3h5OjpvYnRhaW5CZWdpbkZyYW1lQW5kQ29tbWl0VGFza0Zyb21D
Q1RocmVhZChDQ0NvbXBsZXRpb25FdmVudCoKIAogUGFzc093blB0cjxDQ01haW5UaHJlYWQ6OlRh
c2s+IENDVGhyZWFkUHJveHk6OmNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25DQ1RocmVh
ZCgpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmNyZWF0ZUJlZ2luRnJhbWVB
bmRDb21taXRUYXNrT25DQ1RocmVhZCIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0Vf
RVZFTlQoIkNDVGhyZWFkUHJveHk6OmNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25DQ1Ro
cmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgZG91Ymxl
IGZyYW1lQmVnaW5UaW1lID0gY3VycmVudFRpbWUoKTsKIApAQCAtMzQ3LDcgKzM0Nyw3IEBAIFBh
c3NPd25QdHI8Q0NNYWluVGhyZWFkOjpUYXNrPiBDQ1RocmVhZFByb3h5OjpjcmVhdGVCZWdpbkZy
YW1lQW5kQ29tbWl0VGFza09uQ0NUCiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFu
ZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltZSwgUGFzc093
blB0cjxDQ1Njcm9sbFVwZGF0ZVNldD4gc2Nyb2xsSW5mbykKIHsKLSAgICBUUkFDRV9FVkVOVCgi
Q0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdCIsIHRoaXMsIDApOworICAgIENPTVBP
U0lUT1JfVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQiLCB0
aGlzLCAwKTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmICghbV9sYXllclRy
ZWVIb3N0KQogICAgICAgICByZXR1cm47CkBAIC0zNTgsMTQgKzM1OCwxNCBAQCB2b2lkIENDVGhy
ZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUg
ZnJhbWVCZWdpblRpbQogICAgIC8vIERyb3AgYmVnaW5GcmFtZUFuZENvbW1pdCBjYWxscyB0aGF0
IG9jY3VyIG91dCBvZiBzZXF1ZW5jZS4gU2VlIGNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNr
T25DQ1RocmVhZCBmb3IKICAgICAvLyBhbiBleHBsYW5hdGlvbiBvZiBob3cgb3V0LW9mLXNlcXVl
bmNlIGJlZ2luRnJhbWVBbmRDb21taXQgdGFza3MgY2FuIG9jY3VyLgogICAgIGlmIChzZXF1ZW5j
ZU51bWJlciA8IG1fbGFzdEV4ZWN1dGVkQmVnaW5GcmFtZUFuZENvbW1pdFNlcXVlbmNlTnVtYmVy
KSB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJFYXJseU91dF9TdGFsZUJlZ2luRnJhbWVBbmRDb21t
aXQiLCB0aGlzLCAwKTsKKyAgICAgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiRWFybHlPdXRf
U3RhbGVCZWdpbkZyYW1lQW5kQ29tbWl0IiwgdGhpcywgMCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgbV9sYXN0RXhlY3V0ZWRCZWdpbkZyYW1lQW5kQ29tbWl0U2VxdWVuY2VOdW1iZXIg
PSBzZXF1ZW5jZU51bWJlcjsKIAogICAgIC8vIEZJWE1FOiByZWNyZWF0ZSB0aGUgY29udGV4dCBp
ZiBpdCB3YXMgcmVxdWVzdGVkIGJ5IHRoZSBpbXBsIHRocmVhZAogICAgIHsKLSAgICAgICAgVFJB
Q0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6YW5pbWF0ZUFuZExheW91dCIsIHRoaXMsIDApOwor
ICAgICAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OmFuaW1hdGVB
bmRMYXlvdXQiLCB0aGlzLCAwKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5hbmltYXRlQW5k
TGF5b3V0KGZyYW1lQmVnaW5UaW1lKTsKICAgICB9CiAKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lk
IENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBk
b3VibGUgZnJhbWVCZWdpblRpbQogCiAgICAgewogICAgICAgICAvLyBCbG9ja2luZyBjYWxsIHRv
IENDVGhyZWFkUHJveHk6OmNvbW1pdE9uQ0NUaHJlYWQKLSAgICAgICAgVFJBQ0VfRVZFTlQoImNv
bW1pdCIsIHRoaXMsIDApOworICAgICAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJjb21taXQi
LCB0aGlzLCAwKTsKICAgICAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsKICAgICAg
ICAgc19jY1RocmVhZC0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVh
ZFByb3h5Ojpjb21taXRPbkNDVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0
aW9uKSkpOwogICAgICAgICBjb21wbGV0aW9uLndhaXQoKTsKQEAgLTM5Nyw3ICszOTcsNyBAQCB2
b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVy
LCBkb3VibGUgZnJhbWVCZWdpblRpbQogCiB2b2lkIENDVGhyZWFkUHJveHk6OmNvbW1pdE9uQ0NU
aHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCiB7Ci0gICAgVFJBQ0VfRVZFTlQo
IkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXRPbkNDVGhyZWFkIiwgdGhpcywgMCk7
CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFu
ZENvbW1pdE9uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkp
OwogICAgIEFTU0VSVChtX3NjaGVkdWxlck9uQ0NUaHJlYWQtPmNvbW1pdFBlbmRpbmcoKSk7CiAg
ICAgaWYgKCFtX2xheWVyVHJlZUhvc3RJbXBsKSB7CkBAIC00MTUsNyArNDE1LDcgQEAgdm9pZCBD
Q1RocmVhZFByb3h5Ojpjb21taXRPbkNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0
aW9uKQogCiB2b2lkIENDVGhyZWFkUHJveHk6OmRyYXdMYXllcnNBbmRQcmVzZW50T25DQ1RocmVh
ZCgpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmRyYXdMYXllcnNPbkNDVGhy
ZWFkIiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94
eTo6ZHJhd0xheWVyc09uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNJbXBsVGhy
ZWFkKCkpOwogICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbCkKICAgICAgICAgcmV0dXJuOwpA
QCAtNDI3LDcgKzQyNyw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6ZHJhd0xheWVyc0FuZFByZXNl
bnRPbkNDVGhyZWFkKCkKIAogdm9pZCBDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJzT25DQ1RocmVh
ZCgpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmRyYXdMYXllcnNPbkNDVGhy
ZWFkIiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94
eTo6ZHJhd0xheWVyc09uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNJbXBsVGhy
ZWFkKCkpOwogICAgIEFTU0VSVChtX2xheWVyVHJlZUhvc3RJbXBsKTsKIApAQCAtNDM3LDcgKzQz
Nyw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6ZHJhd0xheWVyc09uQ0NUaHJlYWQoKQogCiB2b2lk
IENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVJbXBsT25DQ1RocmVhZChDQ0NvbXBsZXRpb25FdmVu
dCogY29tcGxldGlvbikKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6aW5pdGlh
bGl6ZUltcGxPbkNDVGhyZWFkIiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVO
VCgiQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUltcGxPbkNDVGhyZWFkIiwgdGhpcywgMCk7CiAg
ICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsID0gbV9s
YXllclRyZWVIb3N0LT5jcmVhdGVMYXllclRyZWVIb3N0SW1wbCgpOwogICAgIG1fc2NoZWR1bGVy
Q2xpZW50T25DQ1RocmVhZCA9IENDVGhyZWFkUHJveHlTY2hlZHVsZXJDbGllbnQ6OmNyZWF0ZSh0
aGlzKTsKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVJ
bXBsT25DQ1RocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKIAogdm9pZCBDQ1Ro
cmVhZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uQ0NUaHJlYWQoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHRQdHIsIENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBib29sKiBp
bml0aWFsaXplU3VjY2VlZGVkLCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKiBjYXBhYmlsaXRp
ZXMsIGludCogY29tcG9zaXRvcklkZW50aWZpZXIpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDVGhy
ZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVyT25DQ1RocmVhZCIsIHRoaXMsIDApOwor
ICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXll
clJlbmRlcmVyT25DQ1RocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQo
KSk7CiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KGFkb3B0UmVmKGNvbnRl
eHRQdHIpKTsKICAgICAqaW5pdGlhbGl6ZVN1Y2NlZWRlZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQpOwpAQCAtNDYzLDcgKzQ2Myw3IEBAIHZv
aWQgQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJPbkNDVGhyZWFkKEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6bGF5ZXJUcmVlSG9z
dENsb3NlZE9uQ0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCiB7Ci0gICAg
VFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmxheWVyVHJlZUhvc3RDbG9zZWRPbkNDVGhyZWFk
IiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6
bGF5ZXJUcmVlSG9zdENsb3NlZE9uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNJ
bXBsVGhyZWFkKCkpOwogICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVsZXRlQ29udGVudHNUZXh0dXJl
c09uQ0NUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9y
KCkpOwogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggM2I4NmRhMmRkYjExNmY0MmNmOTJlN2MyMGJkNGQzYzRhZGM4NzRjNC4uMmI3
YjM5ZDVlYzBjNDgzMDMyYmY3NDAzOGQ3MDc1NDQwN2JlNGQ0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMS0wOS0yOCAgQW50b2luZSBMYWJvdXIgIDxw
aW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2VwYXJhdGUgY29tcG9zaXRvciBwbGF0Zm9y
bSBzdXBwb3J0IGZyb20gd2Via2l0J3MgcGxhdGZvcm0gc3VwcG9ydC4KKyAgICAgICAgVGhpcyBp
cyBzbyB0aGF0IHRoZSBjb21wb3NpdG9yIGNhbiBiZSB1c2VkIGluIGEgdGhyZWFkIHNlcGFyYXRl
IGZyb20gdGhlCisgICAgICAgIG1haW4gd2Via2l0IHRocmVhZC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MDQ4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViS2l0Lmg6CisgICAgICAg
ICogc3JjL1dlYktpdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYktpdENvbXBvc2l0b3JTdXBw
b3J0Ojp+V2ViS2l0Q29tcG9zaXRvclN1cHBvcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXRD
b21wb3NpdG9yU3VwcG9ydDo6Y3VycmVudFRpbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXRD
b21wb3NpdG9yU3VwcG9ydDo6aGlzdG9ncmFtQ3VzdG9tQ291bnRzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViS2l0Q29tcG9zaXRvclN1cHBvcnQ6OnRyYWNlRXZlbnRCZWdpbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYktpdENvbXBvc2l0b3JTdXBwb3J0Ojp0cmFjZUV2ZW50RW5kKToKKyAgICAgICAg
KFdlYktpdDo6aW5pdGlhbGl6ZVdpdGhvdXRWOCk6CisgICAgICAgIChXZWJLaXQ6OmluaXRpYWxp
emVXaXRob3V0VjhBbmRDb21wb3NpdG9yKToKKyAgICAgICAgKFdlYktpdDo6c2h1dGRvd24pOgor
CiAyMDExLTEwLTA2ICBBbm5hIENhdmVuZGVyICA8YW5uYWNjQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBUdXJuIEVOQUJMRV9WSURFT19UUkFDSyBvbiBmb3IgY2hyb21pdW0uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXQuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYktpdC5oCmluZGV4IDMxODZjMDMxZGYzYjA1OTRhYTVjYmQ5M2U5
YjE5MjcwYTMzYzMyNTIuLmM1M2EzMjQyNmFhZmQ2YjIzNDEyYTE1Y2VmZTUyZTAwZDEzY2I3MzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdC5oCkBAIC0zOCw2ICszOCw4IEBA
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViS2l0UGxhdGZvcm1TdXBwb3J0OworY2xh
c3MgV2ViVGhyZWFkOwordHlwZWRlZiB2b2lkICgqV2ViQ2FsbE9uTWFpblRocmVhZEZ1bmMpKHZv
aWQgKCopKHZvaWQqKSwgdm9pZCopOwogCiAvLyBNdXN0IGJlIGNhbGxlZCBvbiB0aGUgdGhyZWFk
IHRoYXQgd2lsbCBiZSB0aGUgbWFpbiBXZWJLaXQgdGhyZWFkIGJlZm9yZQogLy8gdXNpbmcgYW55
IG90aGVyIFdlYktpdCBBUElzLiBUaGUgcHJvdmlkZWQgV2ViS2l0UGxhdGZvcm1TdXBwb3J0OyBt
dXN0IGJlCkBAIC03MSw2ICs3MywxNCBAQCBXRUJLSVRfRVhQT1JUIHZvaWQgZW5hYmxlTG9nQ2hh
bm5lbChjb25zdCBjaGFyKik7CiAvLyBjb250YWluaW5nIHBsdWdpbnMgd2lsbCBiZSByZWxvYWRl
ZCBhZnRlciByZWZyZXNoaW5nIHRoZSBwbHVnaW4gbGlzdC4KIFdFQktJVF9FWFBPUlQgdm9pZCBy
ZXNldFBsdWdpbkNhY2hlKGJvb2wgcmVsb2FkUGFnZXMpOwogCisvLyBJbml0aWFsaXplcyB0aGUg
Y29tcG9zaXRvci4gTXVzdCBiZSBjYWxsZWQgb24gdGhlIGNvbXBvc2l0b3IgY2xpZW50IHRocmVh
ZCBpZgorLy8gZGlmZmVyZW50IGZyb20gdGhlIFdlYktpdCBtYWluIHRocmVhZC4gTXVzdCBiZSBj
YWxsZWQgYWZ0ZXIgaW5pdGlhbGl6ZS4KK1dFQktJVF9FWFBPUlQgdm9pZCBpbml0aWFsaXplQ29t
cG9zaXRvcihXZWJDYWxsT25NYWluVGhyZWFkRnVuYyopOworCisvLyBUZXJtaW5hdGVzIHRoZSBj
b21wb3NpdG9yLiBNdXN0IGJlIGNhbGxlZCBvbiB0aGUgY29tcG9zaXRvciBjbGllbnQgdGhyZWFk
IGlmCisvLyBkaWZmZXJlbnQgZnJvbSB0aGUgV2ViS2l0IG1haW4gdGhyZWFkLiBNdXN0IGJlIGNh
bGxlZCBiZWZvcmUgc2h1dGRvd24uCitXRUJLSVRfRVhQT1JUIHZvaWQgc2h1dGRvd25Db21wb3Np
dG9yKCk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJLaXQuY3BwCmluZGV4IDQyM2M0NWFlMzI0ZTE1YjdiMmQ0NGUwZDVkYWM0M2Zj
OWMzNDEwNGIuLjMwYzMyYzZmNGI5ZWM1ZGY4YzczMTkxMzg2Y2MxZTBmZDgxYThiMTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdC5oIgogCisjaW5jbHVkZSAiQ29tcG9zaXRv
clN1cHBvcnQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2lu
Y2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKQEAgLTQxLDYgKzQyLDcgQEAKICNpbmNs
dWRlICJXZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCIKICNpbmNsdWRlICJXZWJTb2NrZXQuaCIK
ICNpbmNsdWRlICJXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCIKKyNpbmNsdWRlICJjYy9D
Q1Byb3h5LmgiCiAjaW5jbHVkZSAidjguaCIKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
CkBAIC01Nyw2ICs1OSw1MCBAQCBzdGF0aWMgYm9vbCBzX3dlYktpdEluaXRpYWxpemVkID0gZmFs
c2U7CiBzdGF0aWMgV2ViS2l0UGxhdGZvcm1TdXBwb3J0KiBzX3dlYktpdFBsYXRmb3JtU3VwcG9y
dCA9IDA7CiBzdGF0aWMgYm9vbCBzX2xheW91dFRlc3RNb2RlID0gZmFsc2U7CiAKK2NsYXNzIFdl
YktpdENvbXBvc2l0b3JTdXBwb3J0IDogcHVibGljIFdlYkNvcmU6OkNvbXBvc2l0b3JTdXBwb3J0
RGVsZWdhdGUgeworcHVibGljOgorICAgIFdlYktpdENvbXBvc2l0b3JTdXBwb3J0KCkgOiBtX2Nh
bGxPbk1haW5UaHJlYWRGdW5jKDApIHsgfQorICAgIHZpcnR1YWwgfldlYktpdENvbXBvc2l0b3JT
dXBwb3J0KCkgeyB9CisKKyAgICB2aXJ0dWFsIGRvdWJsZSBjdXJyZW50VGltZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gc193ZWJLaXRQbGF0Zm9ybVN1cHBvcnQtPmN1cnJlbnRUaW1lKCk7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIGhpc3RvZ3JhbUN1c3RvbUNvdW50cyhjb25zdCBjaGFy
KiBuYW1lLCBpbnQgc2FtcGxlLCBpbnQgbWluLCBpbnQgbWF4LCBpbnQgYnVja2V0Q291bnQpCisg
ICAgeworICAgICAgICBzX3dlYktpdFBsYXRmb3JtU3VwcG9ydC0+aGlzdG9ncmFtQ3VzdG9tQ291
bnRzKG5hbWUsIHNhbXBsZSwgbWluLCBtYXgsIGJ1Y2tldENvdW50KTsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgdHJhY2VFdmVudEJlZ2luKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBj
b25zdCBjaGFyKiBleHRyYSkKKyAgICB7CisgICAgICAgIHNfd2ViS2l0UGxhdGZvcm1TdXBwb3J0
LT50cmFjZUV2ZW50QmVnaW4obmFtZSwgaWQsIGV4dHJhKTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgdHJhY2VFdmVudEVuZChjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiBpZCwgY29uc3QgY2hh
ciogZXh0cmEpCisgICAgeworICAgICAgICBzX3dlYktpdFBsYXRmb3JtU3VwcG9ydC0+dHJhY2VF
dmVudEVuZChuYW1lLCBpZCwgZXh0cmEpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBjYWxs
T25NYWluVGhyZWFkKHZvaWQgKCpmdW5jdGlvbikodm9pZCopLCB2b2lkKiBjb250ZXh0KQorICAg
IHsKKyAgICAgICAgaWYgKG1fY2FsbE9uTWFpblRocmVhZEZ1bmMpCisgICAgICAgICAgICAoKm1f
Y2FsbE9uTWFpblRocmVhZEZ1bmMpKGZ1bmN0aW9uLCBjb250ZXh0KTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgc193ZWJLaXRQbGF0Zm9ybVN1cHBvcnQtPmNhbGxPbk1haW5UaHJlYWQoZnVu
Y3Rpb24sIGNvbnRleHQpOworICAgIH0KKworICAgIHZvaWQgc2V0Q2FsbE9uTWFpblRocmVhZEZ1
bmMoV2ViQ2FsbE9uTWFpblRocmVhZEZ1bmMqIGZ1bmMpCisgICAgeworICAgICAgICBtX2NhbGxP
bk1haW5UaHJlYWRGdW5jID0gZnVuYzsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgV2ViQ2FsbE9u
TWFpblRocmVhZEZ1bmMqIG1fY2FsbE9uTWFpblRocmVhZEZ1bmM7Cit9OworCitzdGF0aWMgV2Vi
S2l0Q29tcG9zaXRvclN1cHBvcnQqIHNfY29tcG9zaXRvclN1cHBvcnQgPSAwOworCiBzdGF0aWMg
Ym9vbCBnZW5lcmF0ZUVudHJvcHkodW5zaWduZWQgY2hhciogYnVmZmVyLCBzaXplX3QgbGVuZ3Ro
KQogewogICAgIGlmIChzX3dlYktpdFBsYXRmb3JtU3VwcG9ydCkgewpAQCAtOTcsMTIgKzE0Mywy
MSBAQCB2b2lkIGluaXRpYWxpemVXaXRob3V0VjgoV2ViS2l0UGxhdGZvcm1TdXBwb3J0KiB3ZWJL
aXRQbGF0Zm9ybVN1cHBvcnQpCiAgICAgLy8gdGhpcywgaW5pdGlhbGl6aW5nIHRoaXMgbGF6aWx5
IHByb2JhYmx5IGRvZXNuJ3QgYnV5IHVzIG11Y2guCiAgICAgV2ViQ29yZTo6VVRGOEVuY29kaW5n
KCk7CiAKLSAKKyAgICBzX2NvbXBvc2l0b3JTdXBwb3J0ID0gbmV3IFdlYktpdENvbXBvc2l0b3JT
dXBwb3J0OworICAgIFdlYkNvcmU6OkNvbXBvc2l0b3JTdXBwb3J0OjpzZXREZWxlZ2F0ZShzX2Nv
bXBvc2l0b3JTdXBwb3J0KTsKKyNpZm5kZWYgTkRFQlVHCisgICAgV2ViQ29yZTo6Q0NQcm94eTo6
c2V0TWFpblRocmVhZChjdXJyZW50VGhyZWFkKCkpOworI2VuZGlmCiB9CiAKLQogdm9pZCBzaHV0
ZG93bigpCiB7CisjaWZuZGVmIE5ERUJVRworICAgIFdlYkNvcmU6OkNDUHJveHk6OnNldE1haW5U
aHJlYWQoMCk7CisjZW5kaWYKKyAgICBXZWJDb3JlOjpDb21wb3NpdG9yU3VwcG9ydDo6c2V0RGVs
ZWdhdGUoMCk7CisgICAgZGVsZXRlIHNfY29tcG9zaXRvclN1cHBvcnQ7CisgICAgc19jb21wb3Np
dG9yU3VwcG9ydCA9IDA7CiAgICAgc193ZWJLaXRQbGF0Zm9ybVN1cHBvcnQgPSAwOwogfQogCkBA
IC0xMzMsNCArMTg4LDIwIEBAIHZvaWQgcmVzZXRQbHVnaW5DYWNoZShib29sIHJlbG9hZFBhZ2Vz
KQogICAgIFdlYkNvcmU6OlBhZ2U6OnJlZnJlc2hQbHVnaW5zKHJlbG9hZFBhZ2VzKTsKIH0KIAor
dm9pZCBpbml0aWFsaXplQ29tcG9zaXRvcihXZWJDYWxsT25NYWluVGhyZWFkRnVuYyogZnVuYykK
K3sKKyAgICBBU1NFUlQoc193ZWJLaXRJbml0aWFsaXplZCk7CisjaWZuZGVmIE5ERUJVRworICAg
IFdlYkNvcmU6OkNDUHJveHk6OnNldE1haW5UaHJlYWQoY3VycmVudFRocmVhZCgpKTsKKyNlbmRp
ZgorICAgIHNfY29tcG9zaXRvclN1cHBvcnQtPnNldENhbGxPbk1haW5UaHJlYWRGdW5jKGZ1bmMp
OworfQorCit2b2lkIHNodXRkb3duQ29tcG9zaXRvcigpCit7CisjaWZuZGVmIE5ERUJVRworICAg
IFdlYkNvcmU6OkNDUHJveHk6OnNldE1haW5UaHJlYWQoMCk7CisjZW5kaWYKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110204</attachid>
            <date>2011-10-07 13:06:17 -0700</date>
            <delta_ts>2011-10-11 17:25:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69048-20111007130616.patch</filename>
            <type>text/plain</type>
            <size>61738</size>
            <attacher name="Antoine Labour">piman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY4NjQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwZTRlMGExNzk0ZTI2MzVk
N2Q3ZWMyN2UzMDUzOTJhMTEwMzU1NGYwLi5lNWEyY2ZkZDRiZWY2ZWNhNGRiYTAwM2RjZWIxOTAw
NDBjMWQ4ZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAwIEBACisyMDExLTA5LTI4ICBBbnRv
aW5lIExhYm91ciAgPHBpbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBTZXBhcmF0ZSBjb21w
b3NpdG9yIHBsYXRmb3JtIHN1cHBvcnQgZnJvbSB3ZWJraXQncyBwbGF0Zm9ybSBzdXBwb3J0Lgor
ICAgICAgICBUaGlzIGlzIHNvIHRoYXQgdGhlIGNvbXBvc2l0b3IgY2FuIGJlIHVzZWQgaW4gYSB0
aHJlYWQgc2VwYXJhdGUgZnJvbSB0aGUKKyAgICAgICAgbWFpbiB3ZWJraXQgdGhyZWFkLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkwNDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4
aXN0aW5nIGNvbXBvc2l0aW5nIHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1RyYWNlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OmludGVybmFsOjo6OlNjb3BlVHJhY2VyKToKKyAgICAgICAgKFdlYkNvcmU6OmludGVybmFsOjo6
On5TY29wZVRyYWNlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29t
cG9zaXRvclN1cHBvcnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0b3JT
dXBwb3J0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0b3JTdXBwb3J0
OjpzaHV0ZG93bik6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdG9yU3VwcG9ydDo6Y3VycmVu
dFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRvclN1cHBvcnQ6Omhpc3RvZ3JhbUN1
c3RvbUNvdW50cyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdG9yU3VwcG9ydDo6dHJhY2VF
dmVudEJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0b3JTdXBwb3J0Ojp0cmFjZUV2
ZW50RW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db21wb3NpdG9y
U3VwcG9ydC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0b3JTdXBwb3J0RGVs
ZWdhdGU6On5Db21wb3NpdG9yU3VwcG9ydERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXBvc2l0b3JTdXBwb3J0OjpkZWxlZ2F0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29tcG9zaXRvclRyYWNlRXZlbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHAuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyUGFpbnRlcjo6cGFpbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzSW50ZXJuYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpmaW5pc2gpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpwcmVzZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpib3JkZXJQcm9ncmFtKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aGVhZHNVcERpc3BsYXlQ
cm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVy
U3VyZmFjZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
OjpyZW5kZXJTdXJmYWNlUHJvZ3JhbUFBKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1BQSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbVN3aXp6
bGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dy
YW1Td2l6emxlQUEpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpj
YW52YXNMYXllclByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpwbHVnaW5MYXllclByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjp2aWRlb0xheWVyUkdCQVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjp2aWRlb0xheWVyWVVWUHJvZ3JhbSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhUZXhTdWJJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aE1hcFRl
eFN1YkltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRl
eHR1cmVVcGRhdGVyQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVw
ZGF0ZXJDYW52YXM6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyYW1C
aW5kaW5nQmFzZTo6Y3JlYXRlU2hhZGVyUHJvZ3JhbSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xMYXllckNocm9taXVtOjpyYXRlTGltaXRDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDSGVhZHNVcERpc3BsYXk6OkNDSGVhZHNVcERpc3BsYXkpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNvcnRMYXllcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3Q6On5DQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
Ojpjb21taXRUb09uQ0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
OjpzZXROZWVkc0NvbW1pdEFuZFJlZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OnVwZGF0ZUxheWVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3RJbXBsOjp+Q0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJveHk6
OmlzTWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Byb3h5OjpzZXRNYWluVGhyZWFk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5OjpDQ1NpbmdsZVRo
cmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6On5DQ1Np
bmdsZVRocmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6
OnN0b3ApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6Q0NUaHJlYWRQcm94
eSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojp+Q0NUaHJlYWRQcm94eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdEFuZFJlZHJhdyk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzZXROZWVkc1JlZHJhdyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFk
UHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uQ0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6Y3JlYXRlQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tPbkNDVGhyZWFkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6Y29tbWl0T25DQ1RocmVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZURyYXdUYXNrT25DQ1RocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJzQW5kUHJlc2VudE9u
Q0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6ZHJhd0xheWVyc09u
Q0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dXBkYXRlU2NoZWR1
bGVyU3RhdGVPbkNDVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6Omlu
aXRpYWxpemVJbXBsT25DQ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5
Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uQ0NUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6bGF5ZXJUcmVlSG9zdENsb3NlZE9uQ0NUaHJlYWQpOgorCiAyMDExLTEw
LTA2ICBBbm5hIENhdmVuZGVyICA8YW5uYWNjQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGRp
bmcgcGFyZW5zIGluIFdlYlZUVFBhcnNlci5jcHAgdG8gYXBwZWFzZSBjb21waWxlciBwcmVmZXJl
bmNlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAxZGIwMDEyMGI4ODgwODNmMzdlNDI5YmFjNTcwNGZl
OTA2YjA1NzI1Li4xYjA2M2YwNjE4YjRlZjdkMTIxOTNkOTJlZTljMWFmM2RhNzg1NmRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC0zNDA1LDYgKzM0MDUsOSBAQAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29tcGxleFRleHRDb250cm9sbGVyTGludXguY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db21wbGV4VGV4dENv
bnRyb2xsZXJMaW51eC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db21wb3NpdG9yU3VwcG9ydC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbXBvc2l0b3JTdXBwb3J0LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbXBvc2l0b3JUcmFjZUV2ZW50LmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0u
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ3Jvc3NQcm9jZXNz
Rm9udExvYWRpbmcuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9UcmFjZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9UcmFj
ZUV2ZW50LmgKaW5kZXggZGI4Yzc0YjJhMWQwODliNzQyYWZiMDBkNDRmYWQ0YmI3NmMxNmM0Ny4u
OTU1MTUyM2NjMDM3NjA1Njg3YjQ3NWYwZWRjODE1Zjc4ZWY1MjA4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vVHJhY2VFdmVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1RyYWNlRXZlbnQuaApAQCAtMzYsMTQgKzM2LDE0IEBA
CiAjZGVmaW5lIFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIobmFtZV9wcmVmaXgp
IFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIyKG5hbWVfcHJlZml4LCBfX0xJTkVf
XykKIAogLy8gSXNzdWVzIFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVudEJlZ2luIGFuZCB0cmFj
ZUV2ZW50RW5kIGNhbGxzIGZvciB0aGUgZW5jbG9zaW5nIHNjb3BlCi0jZGVmaW5lIFRSQUNFX0VW
RU5UKG5hbWUsIGlkLCBleHRyYSkgV2ViQ29yZTo6aW50ZXJuYWw6OlNjb3BlVHJhY2VyIFRSQUNF
X0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIoX190cmFjZUV2ZW50U2NvcGUpKG5hbWUsIGlk
LCBleHRyYSk7CisjZGVmaW5lIFRSQUNFX0VWRU5UKG5hbWUsIGlkLCBleHRyYSkgV2ViQ29yZTo6
aW50ZXJuYWw6OlNjb3BlVHJhY2VyPFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydD4gVFJBQ0VfRVZF
TlRfTUFLRV9VTklRVUVfSURFTlRJRklFUihfX3RyYWNlRXZlbnRTY29wZSkobmFtZSwgaWQsIGV4
dHJhKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgaW50ZXJuYWwgewogCiAv
LyBVc2VkIGJ5IFRSQUNFX0VWRU5UIG1hY3JvLiBEbyBub3QgdXNlIGRpcmVjdGx5LgotY2xhc3Mg
U2NvcGVUcmFjZXIgewordGVtcGxhdGU8dHlwZW5hbWUgU3VwcG9ydD4gY2xhc3MgU2NvcGVUcmFj
ZXIgewogcHVibGljOgogICAgIFNjb3BlVHJhY2VyKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqLCBj
b25zdCBjaGFyKiBleHRyYSk7CiAgICAgflNjb3BlVHJhY2VyKCk7CkBAIC01NCwxOCArNTQsMTgg
QEAgcHJpdmF0ZToKICAgICBPd25BcnJheVB0cjxjaGFyPiBtX2V4dHJhOwogfTsKIAotaW5saW5l
IFNjb3BlVHJhY2VyOjpTY29wZVRyYWNlcihjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiBpZCwgY29u
c3QgY2hhciogZXh0cmEpCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdXBwb3J0PiBpbmxpbmUgU2NvcGVU
cmFjZXI8U3VwcG9ydD46OlNjb3BlVHJhY2VyKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBj
b25zdCBjaGFyKiBleHRyYSkKICAgICA6IG1fbmFtZShuYW1lKQogICAgICwgbV9pZChpZCkKIHsK
LSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRCZWdpbihuYW1lLCBpZCwgZXh0cmEpOyBc
CisgICAgU3VwcG9ydDo6dHJhY2VFdmVudEJlZ2luKG5hbWUsIGlkLCBleHRyYSk7IFwKICAgICBp
ZiAoZXh0cmEpCiAgICAgICAgIG1fZXh0cmEgPSBhZG9wdEFycmF5UHRyKHN0cmR1cChleHRyYSkp
OwogfQogCi1pbmxpbmUgU2NvcGVUcmFjZXI6On5TY29wZVRyYWNlcigpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBTdXBwb3J0PiBpbmxpbmUgU2NvcGVUcmFjZXI8U3VwcG9ydD46On5TY29wZVRyYWNlcigp
CiB7Ci0gICAgUGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2ZW50RW5kKG1fbmFtZSwgbV9pZCwgbV9l
eHRyYS5nZXQoKSk7CisgICAgU3VwcG9ydDo6dHJhY2VFdmVudEVuZChtX25hbWUsIG1faWQsIG1f
ZXh0cmEuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBpbnRlcm5hbApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29tcG9zaXRvclN1cHBv
cnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29tcG9z
aXRvclN1cHBvcnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1ZmEwMGNkNzJiYWYyNmUxOTcwMWY3MWZiZGYz
YmIzMjQwZjZlNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db21wb3NpdG9yU3VwcG9ydC5jcHAKQEAgLTAsMCArMSw1OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29tcG9zaXRvclN1cHBvcnQuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDb21wb3NpdG9yU3VwcG9ydERlbGVnYXRlKiBDb21w
b3NpdG9yU3VwcG9ydDo6c19kZWxlZ2F0ZTsKKworZG91YmxlIENvbXBvc2l0b3JTdXBwb3J0Ojpj
dXJyZW50VGltZSgpCit7CisgICAgcmV0dXJuIHNfZGVsZWdhdGUtPmN1cnJlbnRUaW1lKCk7Cit9
CisKK3ZvaWQgQ29tcG9zaXRvclN1cHBvcnQ6Omhpc3RvZ3JhbUN1c3RvbUNvdW50cyhjb25zdCBj
aGFyKiBuYW1lLCBpbnQgc2FtcGxlLCBpbnQgbWluLCBpbnQgbWF4LCBpbnQgYnVja2V0Q291bnQp
Cit7CisgICAgc19kZWxlZ2F0ZS0+aGlzdG9ncmFtQ3VzdG9tQ291bnRzKG5hbWUsIHNhbXBsZSwg
bWluLCBtYXgsIGJ1Y2tldENvdW50KTsKK30KKwordm9pZCBDb21wb3NpdG9yU3VwcG9ydDo6dHJh
Y2VFdmVudEJlZ2luKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBjb25zdCBjaGFyKiBleHRy
YSkKK3sKKyAgICBzX2RlbGVnYXRlLT50cmFjZUV2ZW50QmVnaW4obmFtZSwgaWQsIGV4dHJhKTsK
K30KKwordm9pZCBDb21wb3NpdG9yU3VwcG9ydDo6dHJhY2VFdmVudEVuZChjb25zdCBjaGFyKiBu
YW1lLCB2b2lkKiBpZCwgY29uc3QgY2hhciogZXh0cmEpCit7CisgICAgc19kZWxlZ2F0ZS0+dHJh
Y2VFdmVudEVuZChuYW1lLCBpZCwgZXh0cmEpOworfQorCit2b2lkIENvbXBvc2l0b3JTdXBwb3J0
OjpjYWxsT25NYWluVGhyZWFkKHZvaWQgKCpmdW5jdGlvbikodm9pZCopLCB2b2lkKiBjb250ZXh0
KQoreworICAgIHNfZGVsZWdhdGUtPmNhbGxPbk1haW5UaHJlYWQoZnVuY3Rpb24sIGNvbnRleHQp
OworfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29tcG9zaXRvclN1cHBvcnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbXBvc2l0b3JTdXBwb3J0
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDU2OWQ4MjZmODFkZjMyOGM0ZTBkOTRmZmJhYzM0NTM5NDA3OTk3ZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbXBvc2l0b3JTdXBwb3J0LmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaWZuZGVmIENv
bXBvc2l0b3JTdXBwb3J0X2gKKyNkZWZpbmUgQ29tcG9zaXRvclN1cHBvcnRfaAorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbXBvc2l0b3JTdXBwb3J0RGVsZWdhdGUgeworcHVibGlj
OgorICAgIHZpcnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lKCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBoaXN0b2dyYW1DdXN0b21Db3VudHMoY29uc3QgY2hhciogbmFtZSwgaW50IHNhbXBsZSwgaW50
IG1pbiwgaW50IG1heCwgaW50IGJ1Y2tldENvdW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRy
YWNlRXZlbnRCZWdpbihjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiBldmVudElkLCBjb25zdCBjaGFy
KiBleHRyYSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0cmFjZUV2ZW50RW5kKGNvbnN0IGNoYXIq
IG5hbWUsIHZvaWQqIGV2ZW50SWQsIGNvbnN0IGNoYXIqIGV4dHJhKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGNhbGxPbk1haW5UaHJlYWQodm9pZCAoKmZ1bmN0aW9uKSh2b2lkKiksIHZvaWQqIGNv
bnRleHQpID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfkNvbXBvc2l0b3JTdXBwb3J0
RGVsZWdhdGUoKSB7IH0KK307CisKK2NsYXNzIENvbXBvc2l0b3JTdXBwb3J0IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgZG91YmxlIGN1cnJlbnRUaW1lKCk7CisgICAgc3RhdGljIHZvaWQgaGlzdG9n
cmFtQ3VzdG9tQ291bnRzKGNvbnN0IGNoYXIqIG5hbWUsIGludCBzYW1wbGUsIGludCBtaW4sIGlu
dCBtYXgsIGludCBidWNrZXRDb3VudCk7CisgICAgc3RhdGljIHZvaWQgdHJhY2VFdmVudEJlZ2lu
KGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGV2ZW50SWQsIGNvbnN0IGNoYXIqIGV4dHJhKTsKKyAg
ICBzdGF0aWMgdm9pZCB0cmFjZUV2ZW50RW5kKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGV2ZW50
SWQsIGNvbnN0IGNoYXIqIGV4dHJhKTsKKyAgICBzdGF0aWMgdm9pZCBjYWxsT25NYWluVGhyZWFk
KHZvaWQgKCpmdW5jdGlvbikodm9pZCopLCB2b2lkKiBjb250ZXh0KTsKKworICAgIHN0YXRpYyB2
b2lkIHNldERlbGVnYXRlKENvbXBvc2l0b3JTdXBwb3J0RGVsZWdhdGUqIGRlbGVnYXRlKSB7IHNf
ZGVsZWdhdGUgPSBkZWxlZ2F0ZTsgfQorICAgIHN0YXRpYyBDb21wb3NpdG9yU3VwcG9ydERlbGVn
YXRlKiBkZWxlZ2F0ZSgpIHsgcmV0dXJuIHNfZGVsZWdhdGU7IH0KKworcHJpdmF0ZToKKyAgICBz
dGF0aWMgQ29tcG9zaXRvclN1cHBvcnREZWxlZ2F0ZSogc19kZWxlZ2F0ZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db21wb3NpdG9yVHJhY2VFdmVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29tcG9zaXRvclRyYWNlRXZlbnQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mNGRhNTg2MTA4MTFmZjA5MzdiYzhmZGQ0ZWI2MTJjNTQ5NjcxMjZhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29tcG9zaXRvclRyYWNlRXZlbnQuaApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpZm5kZWYg
Q29tcG9zaXRvclRyYWNlRXZlbnRfaAorI2RlZmluZSBDb21wb3NpdG9yVHJhY2VFdmVudF9oCisK
KyNpbmNsdWRlICJDb21wb3NpdG9yU3VwcG9ydC5oIgorI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIK
KworI2RlZmluZSBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKG5hbWUsIGlkLCBleHRyYSkgV2ViQ29y
ZTo6aW50ZXJuYWw6OlNjb3BlVHJhY2VyPENvbXBvc2l0b3JTdXBwb3J0PiBUUkFDRV9FVkVOVF9N
QUtFX1VOSVFVRV9JREVOVElGSUVSKF9fdHJhY2VFdmVudFNjb3BlKShuYW1lLCBpZCwgZXh0cmEp
OworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAppbmRleCA5ZGU0
ZGE5ZDZkNmQ0YjQzMDc2NmUxNzkyNzI4YTMwMzllYzcwOTAxLi5lYzVjMDExMmY4MDk3YmZlNTdi
NzVjNGE2ZmQxMjRkM2E5MWE2YWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0u
Y3BwCkBAIC0zNCwxMCArMzQsMTAgQEAKIAogI2luY2x1ZGUgIkNvbnRlbnRMYXllckNocm9taXVt
LmgiCiAKKyNpbmNsdWRlICJDb21wb3NpdG9yU3VwcG9ydC5oIgogI2luY2x1ZGUgIkxheWVyUGFp
bnRlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5j
bHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3Vw
cG9ydC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgPHd0Zi9D
dXJyZW50VGltZS5oPgogCkBAIC01MywxNCArNTMsMTQgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29u
dGVudFJlY3QpCiAgICAgewotICAgICAgICBkb3VibGUgcGFpbnRTdGFydCA9IGN1cnJlbnRUaW1l
KCk7CisgICAgICAgIGRvdWJsZSBwYWludFN0YXJ0ID0gQ29tcG9zaXRvclN1cHBvcnQ6OmN1cnJl
bnRUaW1lKCk7CiAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KGNvbnRlbnRSZWN0KTsKICAgICAg
ICAgY29udGV4dC5jbGlwKGNvbnRlbnRSZWN0KTsKICAgICAgICAgbV9kZWxlZ2F0ZS0+cGFpbnRD
b250ZW50cyhjb250ZXh0LCBjb250ZW50UmVjdCk7Ci0gICAgICAgIGRvdWJsZSBwYWludEVuZCA9
IGN1cnJlbnRUaW1lKCk7CisgICAgICAgIGRvdWJsZSBwYWludEVuZCA9IENvbXBvc2l0b3JTdXBw
b3J0OjpjdXJyZW50VGltZSgpOwogICAgICAgICBkb3VibGUgcGl4ZWxzUGVyU2VjID0gKGNvbnRl
bnRSZWN0LndpZHRoKCkgKiBjb250ZW50UmVjdC5oZWlnaHQoKSkgLyAocGFpbnRFbmQgLSBwYWlu
dFN0YXJ0KTsKLSAgICAgICAgUGxhdGZvcm1TdXBwb3J0OjpoaXN0b2dyYW1DdXN0b21Db3VudHMo
IlJlbmRlcmVyNC5BY2NlbENvbnRlbnRQYWludER1cmF0aW9uTVMiLCAocGFpbnRFbmQgLSBwYWlu
dFN0YXJ0KSAqIDEwMDAsIDAsIDEyMCwgMzApOwotICAgICAgICBQbGF0Zm9ybVN1cHBvcnQ6Omhp
c3RvZ3JhbUN1c3RvbUNvdW50cygiUmVuZGVyZXI0LkFjY2VsQ29udGVudFBhaW50TWVnYXBpeFBl
clNlY29uZCIsIHBpeGVsc1BlclNlYyAvIDEwMDAwMDAsIDEwLCAyMTAsIDMwKTsKKyAgICAgICAg
Q29tcG9zaXRvclN1cHBvcnQ6Omhpc3RvZ3JhbUN1c3RvbUNvdW50cygiUmVuZGVyZXI0LkFjY2Vs
Q29udGVudFBhaW50RHVyYXRpb25NUyIsIChwYWludEVuZCAtIHBhaW50U3RhcnQpICogMTAwMCwg
MCwgMTIwLCAzMCk7CisgICAgICAgIENvbXBvc2l0b3JTdXBwb3J0OjpoaXN0b2dyYW1DdXN0b21D
b3VudHMoIlJlbmRlcmVyNC5BY2NlbENvbnRlbnRQYWludE1lZ2FwaXhQZXJTZWNvbmQiLCBwaXhl
bHNQZXJTZWMgLyAxMDAwMDAwLCAxMCwgMjEwLCAzMCk7CiAgICAgfQogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBDb250ZW50TGF5ZXJQYWludGVyKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCBjNTI1YzFkMjNlYmY2NDc4
ODUzMjg4MjI3MmQ4ODIyYWY1Y2E2N2MwLi44Mjg4YmJjNGQ4YmY3NTJjYTBmMDU0NDA0N2QyNDBj
ODBmMTQzOTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTM1
LDYgKzM1LDggQEAKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKIAogI2luY2x1
ZGUgIkNhbnZhczJETGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIkNvbXBvc2l0b3JTdXBwb3J0
LmgiCisjaW5jbHVkZSAiQ29tcG9zaXRvclRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJFeHRlbnNp
b25zM0RDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkdlb21l
dHJ5QmluZGluZy5oIgpAQCAtNTAsNyArNTIsNiBAQAogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIK
ICNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgogI2luY2x1ZGUgIlRyZWVTeW5jaHJvbml6ZXIu
aCIKLSNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiVHJhY2tpbmdUZXh0dXJlQWxs
b2NhdG9yLmgiCiAjaW5jbHVkZSAiV2ViR0xMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiY2Mv
Q0NMYXllckltcGwuaCIKQEAgLTIzMiw3ICsyMzMsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6ZHJhd0xheWVycygpCiAgICAgLy8gRklYTUU6IHVzZSB0aGUgZnJhbWUgYmVnaW4gdGlt
ZSBmcm9tIHRoZSBvdmVyYWxsIGNvbXBvc2l0b3Igc2NoZWR1bGVyLgogICAgIC8vIFRoaXMgdmFs
dWUgaXMgY3VycmVudGx5IGluYWNjZXNzaWJsZSBiZWNhdXNlIGl0IGlzIHVwIGluIENocm9taXVt
J3MKICAgICAvLyBSZW5kZXJXaWRnZXQuCi0gICAgbV9oZWFkc1VwRGlzcGxheS0+b25GcmFtZUJl
Z2luKGN1cnJlbnRUaW1lKCkpOworICAgIG1faGVhZHNVcERpc3BsYXktPm9uRnJhbWVCZWdpbihD
b21wb3NpdG9yU3VwcG9ydDo6Y3VycmVudFRpbWUoKSk7CiAKICAgICBpZiAoIXJvb3RMYXllcigp
KQogICAgICAgICByZXR1cm47CkBAIC0yNTYsNyArMjU3LDcgQEAgdm9pZCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OmRyYXdMYXllcnNJbnRlcm5hbCgpCiAgICAgaWYgKHZpZXdwb3J0U2l6ZSgpLmlz
RW1wdHkoKSB8fCAhcm9vdExheWVyKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFRSQUNFX0VW
RU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnMiLCB0aGlzLCAwKTsKKyAgICBD
T01QT1NJVE9SX1RSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnMi
LCB0aGlzLCAwKTsKICAgICBDQ0xheWVySW1wbCogcm9vdERyYXdMYXllciA9IHJvb3RMYXllcigp
OwogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogCkBAIC0yNzMsNyArMjc0LDcgQEAgdm9pZCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnNJbnRlcm5hbCgpCiAgICAgbV9kZWZhdWx0
UmVuZGVyU3VyZmFjZS0+Y2xlYXJMYXllckxpc3QoKTsKIAogICAgIHsKLSAgICAgICAgVFJBQ0Vf
RVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVyc0ludGVybmFsOjpjYWxjRHJh
d0V0YyIsIHRoaXMsIDApOworICAgICAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJMYXllclJl
bmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnNJbnRlcm5hbDo6Y2FsY0RyYXdFdGMiLCB0aGlzLCAw
KTsKICAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jt
c0FuZFZpc2liaWxpdHkocm9vdERyYXdMYXllciwgcm9vdERyYXdMYXllciwgbV96b29tQW5pbWF0
b3JUcmFuc2Zvcm0sIG1fem9vbUFuaW1hdG9yVHJhbnNmb3JtLCByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LCBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKSwgJm1fbGF5ZXJTb3J0ZXIs
IG1fY2FwYWJpbGl0aWVzLm1heFRleHR1cmVTaXplKTsKICAgICB9CiAKQEAgLTQwOCwxMyArNDA5
LDEzIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3TWF0CiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpmaW5pc2goKQogewotICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06
OmZpbmlzaCIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6ZmluaXNoIiwgdGhpcywgMCk7CiAgICAgbV9jb250ZXh0LT5maW5pc2go
KTsKIH0KIAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnByZXNlbnQoKQogewotICAgIFRS
QUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnByZXNlbnQiLCB0aGlzLCAwKTsKKyAg
ICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnByZXNlbnQi
LCB0aGlzLCAwKTsKICAgICAvLyBXZSdyZSBkb25lISBUaW1lIHRvIHN3YXBidWZmZXJzIQogCiAg
ICAgLy8gTm90ZSB0aGF0IGN1cnJlbnRseSB0aGlzIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXMgc3dh
cEJ1ZmZlcnM7IHdlIHNob3VsZApAQCAtNjAyLDcgKzYwMyw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpzZXREcmF3Vmlld3BvcnRSZWN0KGNvbnN0IEludFJlY3QmIGRyYXdSZWN0LCBi
b29sIGZsCiAKIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hhcmVkT2Jq
ZWN0cygpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlh
bGl6ZVNoYXJlZE9iamVjdHMiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5U
KCJMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmplY3RzIiwgdGhpcywg
MCk7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAKICAgICAvLyBDcmVhdGUgYW4gRkJPIGZv
ciBkb2luZyBvZmZzY3JlZW4gcmVuZGVyaW5nLgpAQCAtNjI3LDcgKzYyOCw3IEBAIGNvbnN0IExh
eWVyQ2hyb21pdW06OkJvcmRlclByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Ym9yZGVy
UHJvZ3JhbSgpCiAgICAgaWYgKCFtX2JvcmRlclByb2dyYW0pCiAgICAgICAgIG1fYm9yZGVyUHJv
Z3JhbSA9IGFkb3B0UHRyKG5ldyBMYXllckNocm9taXVtOjpCb3JkZXJQcm9ncmFtKG1fY29udGV4
dC5nZXQoKSkpOwogICAgIGlmICghbV9ib3JkZXJQcm9ncmFtLT5pbml0aWFsaXplZCgpKSB7Ci0g
ICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OmJvcmRlclByb2dyYW06
OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgi
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpib3JkZXJQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywg
MCk7CiAgICAgICAgIG1fYm9yZGVyUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkp
OwogICAgIH0KICAgICByZXR1cm4gbV9ib3JkZXJQcm9ncmFtLmdldCgpOwpAQCAtNjM4LDcgKzYz
OSw3IEBAIGNvbnN0IENDSGVhZHNVcERpc3BsYXk6OlByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6aGVhZHNVcERpc3BsYXlQcm9ncmFtKCkKICAgICBpZiAoIW1faGVhZHNVcERpc3BsYXlQ
cm9ncmFtKQogICAgICAgICBtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBD
Q0hlYWRzVXBEaXNwbGF5OjpQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOwogICAgIGlmICghbV9o
ZWFkc1VwRGlzcGxheVByb2dyYW0tPmluaXRpYWxpemVkKCkpIHsKLSAgICAgICAgVFJBQ0VfRVZF
TlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aGVhZHNVcERpc3BsYXlQcm9ncmFtOjppbml0aWFs
aXplIiwgdGhpcywgMCk7CisgICAgICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6aGVhZHNVcERpc3BsYXlQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywg
MCk7CiAgICAgICAgIG1faGVhZHNVcERpc3BsYXlQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4
dC5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbS5nZXQo
KTsKQEAgLTY0OCw3ICs2NDksNyBAQCBjb25zdCBDQ1JlbmRlclN1cmZhY2U6OlByb2dyYW0qIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZVByb2dyYW0oKQogewogICAgIEFTU0VS
VChtX3JlbmRlclN1cmZhY2VQcm9ncmFtKTsKICAgICBpZiAoIW1fcmVuZGVyU3VyZmFjZVByb2dy
YW0tPmluaXRpYWxpemVkKCkpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6cmVuZGVyU3VyZmFjZVByb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAg
ICAgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5k
ZXJTdXJmYWNlUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwogICAgICAgICBtX3JlbmRl
clN1cmZhY2VQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQogICAg
IHJldHVybiBtX3JlbmRlclN1cmZhY2VQcm9ncmFtLmdldCgpOwpAQCAtNjU5LDcgKzY2MCw3IEBA
IGNvbnN0IENDUmVuZGVyU3VyZmFjZTo6UHJvZ3JhbUFBKiBMYXllclJlbmRlcmVyQ2hyb21pdW06
OnJlbmRlclN1cmZhY2VQcm9ncmFtQUEoCiAgICAgaWYgKCFtX3JlbmRlclN1cmZhY2VQcm9ncmFt
QUEpCiAgICAgICAgIG1fcmVuZGVyU3VyZmFjZVByb2dyYW1BQSA9IGFkb3B0UHRyKG5ldyBDQ1Jl
bmRlclN1cmZhY2U6OlByb2dyYW1BQShtX2NvbnRleHQuZ2V0KCkpKTsKICAgICBpZiAoIW1fcmVu
ZGVyU3VyZmFjZVByb2dyYW1BQS0+aW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBUUkFDRV9FVkVO
VCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJTdXJmYWNlUHJvZ3JhbUFBOjppbml0aWFs
aXplIiwgdGhpcywgMCk7CisgICAgICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6cmVuZGVyU3VyZmFjZVByb2dyYW1BQTo6aW5pdGlhbGl6ZSIsIHRoaXMs
IDApOwogICAgICAgICBtX3JlbmRlclN1cmZhY2VQcm9ncmFtQUEtPmluaXRpYWxpemUobV9jb250
ZXh0LmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIG1fcmVuZGVyU3VyZmFjZVByb2dyYW1BQS5n
ZXQoKTsKQEAgLTY3MCw3ICs2NzEsNyBAQCBjb25zdCBDQ1JlbmRlclN1cmZhY2U6Ok1hc2tQcm9n
cmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclN1cmZhY2VNYXNrUHJvZwogICAgIGlm
ICghbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0pCiAgICAgICAgIG1fcmVuZGVyU3VyZmFjZU1h
c2tQcm9ncmFtID0gYWRvcHRQdHIobmV3IENDUmVuZGVyU3VyZmFjZTo6TWFza1Byb2dyYW0obV9j
b250ZXh0LmdldCgpKSk7CiAgICAgaWYgKCFtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbS0+aW5p
dGlhbGl6ZWQoKSkgewotICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpyZW5kZXJTdXJmYWNlTWFza1Byb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAg
ICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJT
dXJmYWNlTWFza1Byb2dyYW06OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKICAgICAgICAgbV9yZW5k
ZXJTdXJmYWNlTWFza1Byb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKICAgICB9
CiAgICAgcmV0dXJuIG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtLmdldCgpOwpAQCAtNjgxLDcg
KzY4Miw3IEBAIGNvbnN0IENDUmVuZGVyU3VyZmFjZTo6TWFza1Byb2dyYW1BQSogTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpyZW5kZXJTdXJmYWNlTWFza1ByCiAgICAgaWYgKCFtX3JlbmRlclN1cmZh
Y2VNYXNrUHJvZ3JhbUFBKQogICAgICAgICBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBID0g
YWRvcHRQdHIobmV3IENDUmVuZGVyU3VyZmFjZTo6TWFza1Byb2dyYW1BQShtX2NvbnRleHQuZ2V0
KCkpKTsKICAgICBpZiAoIW1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEtPmluaXRpYWxpemVk
KCkpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVy
U3VyZmFjZU1hc2tQcm9ncmFtQUE6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgQ09N
UE9TSVRPUl9UUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJTdXJmYWNl
TWFza1Byb2dyYW1BQTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwogICAgICAgICBtX3JlbmRlclN1
cmZhY2VNYXNrUHJvZ3JhbUFBLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQog
ICAgIHJldHVybiBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBLmdldCgpOwpAQCAtNjkxLDcg
KzY5Miw3IEBAIGNvbnN0IENDVGlsZWRMYXllckltcGw6OlByb2dyYW0qIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6dGlsZXJQcm9ncmFtKCkKIHsKICAgICBBU1NFUlQobV90aWxlclByb2dyYW0pOwog
ICAgIGlmICghbV90aWxlclByb2dyYW0tPmluaXRpYWxpemVkKCkpIHsKLSAgICAgICAgVFJBQ0Vf
RVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtOjppbml0aWFsaXplIiwg
dGhpcywgMCk7CisgICAgICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6dGlsZXJQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CiAgICAgICAgIG1f
dGlsZXJQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQogICAgIHJl
dHVybiBtX3RpbGVyUHJvZ3JhbS5nZXQoKTsKQEAgLTcwMiw3ICs3MDMsNyBAQCBjb25zdCBDQ1Rp
bGVkTGF5ZXJJbXBsOjpQcm9ncmFtQUEqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9n
cmFtQUEoKQogICAgIGlmICghbV90aWxlclByb2dyYW1BQSkKICAgICAgICAgbV90aWxlclByb2dy
YW1BQSA9IGFkb3B0UHRyKG5ldyBDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtQUEobV9jb250ZXh0
LmdldCgpKSk7CiAgICAgaWYgKCFtX3RpbGVyUHJvZ3JhbUFBLT5pbml0aWFsaXplZCgpKSB7Ci0g
ICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbUFB
Ojppbml0aWFsaXplIiwgdGhpcywgMCk7CisgICAgICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQo
IkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtQUE6OmluaXRpYWxpemUiLCB0aGlz
LCAwKTsKICAgICAgICAgbV90aWxlclByb2dyYW1BQS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0
KCkpOwogICAgIH0KICAgICByZXR1cm4gbV90aWxlclByb2dyYW1BQS5nZXQoKTsKQEAgLTcxMyw3
ICs3MTQsNyBAQCBjb25zdCBDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtU3dpenpsZSogTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1Td2l6egogICAgIGlmICghbV90aWxlclByb2dy
YW1Td2l6emxlKQogICAgICAgICBtX3RpbGVyUHJvZ3JhbVN3aXp6bGUgPSBhZG9wdFB0cihuZXcg
Q0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbVN3aXp6bGUobV9jb250ZXh0LmdldCgpKSk7CiAgICAg
aWYgKCFtX3RpbGVyUHJvZ3JhbVN3aXp6bGUtPmluaXRpYWxpemVkKCkpIHsKLSAgICAgICAgVFJB
Q0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtU3dpenpsZTo6aW5p
dGlhbGl6ZSIsIHRoaXMsIDApOworICAgICAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJMYXll
clJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbVN3aXp6bGU6OmluaXRpYWxpemUiLCB0aGlz
LCAwKTsKICAgICAgICAgbV90aWxlclByb2dyYW1Td2l6emxlLT5pbml0aWFsaXplKG1fY29udGV4
dC5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBtX3RpbGVyUHJvZ3JhbVN3aXp6bGUuZ2V0KCk7
CkBAIC03MjQsNyArNzI1LDcgQEAgY29uc3QgQ0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbVN3aXp6
bGVBQSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1Td2kKICAgICBpZiAoIW1f
dGlsZXJQcm9ncmFtU3dpenpsZUFBKQogICAgICAgICBtX3RpbGVyUHJvZ3JhbVN3aXp6bGVBQSA9
IGFkb3B0UHRyKG5ldyBDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtU3dpenpsZUFBKG1fY29udGV4
dC5nZXQoKSkpOwogICAgIGlmICghbV90aWxlclByb2dyYW1Td2l6emxlQUEtPmluaXRpYWxpemVk
KCkpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQ
cm9ncmFtU3dpenpsZUFBOjppbml0aWFsaXplIiwgdGhpcywgMCk7CisgICAgICAgIENPTVBPU0lU
T1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtU3dpenps
ZUFBOjppbml0aWFsaXplIiwgdGhpcywgMCk7CiAgICAgICAgIG1fdGlsZXJQcm9ncmFtU3dpenps
ZUFBLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBtX3Rp
bGVyUHJvZ3JhbVN3aXp6bGVBQS5nZXQoKTsKQEAgLTczNSw3ICs3MzYsNyBAQCBjb25zdCBDQ0Nh
bnZhc0xheWVySW1wbDo6UHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjYW52YXNMYXll
clByb2dyYW0oKQogICAgIGlmICghbV9jYW52YXNMYXllclByb2dyYW0pCiAgICAgICAgIG1fY2Fu
dmFzTGF5ZXJQcm9ncmFtID0gYWRvcHRQdHIobmV3IENDQ2FudmFzTGF5ZXJJbXBsOjpQcm9ncmFt
KG1fY29udGV4dC5nZXQoKSkpOwogICAgIGlmICghbV9jYW52YXNMYXllclByb2dyYW0tPmluaXRp
YWxpemVkKCkpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
Y2FudmFzTGF5ZXJQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CisgICAgICAgIENPTVBP
U0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2FudmFzTGF5ZXJQcm9n
cmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CiAgICAgICAgIG1fY2FudmFzTGF5ZXJQcm9ncmFt
LT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBtX2NhbnZh
c0xheWVyUHJvZ3JhbS5nZXQoKTsKQEAgLTc0Niw3ICs3NDcsNyBAQCBjb25zdCBDQ1BsdWdpbkxh
eWVySW1wbDo6UHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpwbHVnaW5MYXllclByb2dy
YW0oKQogICAgIGlmICghbV9wbHVnaW5MYXllclByb2dyYW0pCiAgICAgICAgIG1fcGx1Z2luTGF5
ZXJQcm9ncmFtID0gYWRvcHRQdHIobmV3IENDUGx1Z2luTGF5ZXJJbXBsOjpQcm9ncmFtKG1fY29u
dGV4dC5nZXQoKSkpOwogICAgIGlmICghbV9wbHVnaW5MYXllclByb2dyYW0tPmluaXRpYWxpemVk
KCkpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cGx1Z2lu
TGF5ZXJQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CisgICAgICAgIENPTVBPU0lUT1Jf
VFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cGx1Z2luTGF5ZXJQcm9ncmFtOjpp
bml0aWFsaXplIiwgdGhpcywgMCk7CiAgICAgICAgIG1fcGx1Z2luTGF5ZXJQcm9ncmFtLT5pbml0
aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBtX3BsdWdpbkxheWVy
UHJvZ3JhbS5nZXQoKTsKQEAgLTc1Nyw3ICs3NTgsNyBAQCBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBs
OjpSR0JBUHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp2aWRlb0xheWVyUkdCQVByb2dy
YQogICAgIGlmICghbV92aWRlb0xheWVyUkdCQVByb2dyYW0pCiAgICAgICAgIG1fdmlkZW9MYXll
clJHQkFQcm9ncmFtID0gYWRvcHRQdHIobmV3IENDVmlkZW9MYXllckltcGw6OlJHQkFQcm9ncmFt
KG1fY29udGV4dC5nZXQoKSkpOwogICAgIGlmICghbV92aWRlb0xheWVyUkdCQVByb2dyYW0tPmlu
aXRpYWxpemVkKCkpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6dmlkZW9MYXllclJHQkFQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CisgICAgICAg
IENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dmlkZW9MYXll
clJHQkFQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CiAgICAgICAgIG1fdmlkZW9MYXll
clJHQkFQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQogICAgIHJl
dHVybiBtX3ZpZGVvTGF5ZXJSR0JBUHJvZ3JhbS5nZXQoKTsKQEAgLTc2OCw3ICs3NjksNyBAQCBj
b25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpZVVZQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06
OnZpZGVvTGF5ZXJZVVZQcm9ncmFtKAogICAgIGlmICghbV92aWRlb0xheWVyWVVWUHJvZ3JhbSkK
ICAgICAgICAgbV92aWRlb0xheWVyWVVWUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBDQ1ZpZGVvTGF5
ZXJJbXBsOjpZVVZQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOwogICAgIGlmICghbV92aWRlb0xh
eWVyWVVWUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBUUkFDRV9FVkVOVCgiTGF5
ZXJSZW5kZXJlckNocm9taXVtOjp2aWRlb0xheWVyWVVWUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRo
aXMsIDApOworICAgICAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hy
b21pdW06OnZpZGVvTGF5ZXJZVVZQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CiAgICAg
ICAgIG1fdmlkZW9MYXllcllVVlByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsK
ICAgICB9CiAgICAgcmV0dXJuIG1fdmlkZW9MYXllcllVVlByb2dyYW0uZ2V0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1
cmVTdWJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclRleHR1cmVTdWJJbWFnZS5jcHAKaW5kZXggOGZlYTM4YTY5MGM5NWNlN2EzOTg3NmI3
MGMzYmQwZTY5N2IyZWI4Ni4uMDU2NWYzNmQyYjA3OTM4NDlmNTUxMzgwNjliNDUxMzg1ZmMyNDc1
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmNwcApAQCAtMjksOSArMjksOSBA
QAogCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaCIKIAorI2luY2x1ZGUgIkNvbXBv
c2l0b3JUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgotI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgTGF5ZXJUZXh0dXJl
U3ViSW1hZ2U6OnVwbG9hZFdpdGhUZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBpbWFnZSwgY29u
c3QgSW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9y
bWF0LCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHsKLSAgICBUUkFDRV9FVkVOVCgiTGF5
ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhUZXhTdWJJbWFnZSIsIHRoaXMsIDApOworICAg
IENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWRXaXRo
VGV4U3ViSW1hZ2UiLCB0aGlzLCAwKTsKICAgICBpZiAoIW1fc3ViSW1hZ2UpCiAgICAgICAgIG1f
c3ViSW1hZ2UgPSBhZG9wdEFycmF5UHRyKG5ldyB1aW50OF90W21fc3ViSW1hZ2VTaXplLndpZHRo
KCkgKiBtX3N1YkltYWdlU2l6ZS5oZWlnaHQoKSAqIDRdKTsKIApAQCAtOTQsNyArOTQsNyBAQCB2
b2lkIExheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWRXaXRoTWFwVGV4U3ViSW1hZ2UoY29uc3Qg
dWludDhfdCogaW1hZ2UsIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHsK
LSAgICBUUkFDRV9FVkVOVCgiTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhT
dWJJbWFnZSIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyVGV4
dHVyZVN1YkltYWdlOjp1cGxvYWRXaXRoTWFwVGV4U3ViSW1hZ2UiLCB0aGlzLCAwKTsKICAgICAv
LyBPZmZzZXQgZnJvbSBpbWFnZS1yZWN0IHRvIHNvdXJjZS1yZWN0LgogICAgIEludFBvaW50IG9m
ZnNldChzb3VyY2VSZWN0LngoKSAtIGltYWdlUmVjdC54KCksIHNvdXJjZVJlY3QueSgpIC0gaW1h
Z2VSZWN0LnkoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5j
cHAKaW5kZXggZmYxOWM3MWM1MGI3NTUwNzE1MWEzYzUwMjdhODJhM2QyNzg1YjVlMy4uNjM2OTQw
OWRmNjUyYmM5ZTI1ZGMwYjQ0MGMyOGNmZGZhMzljY2E3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZh
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAogCiAjaW5jbHVk
ZSAiTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5oIgogCisjaW5jbHVkZSAiQ29tcG9zaXRvclRy
YWNlRXZlbnQuaCIKICNpbmNsdWRlICJFeHRlbnNpb25zM0QuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKICNpbmNsdWRlICJMYXllclBhaW50ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUg
Ik1hbmFnZWRUZXh0dXJlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db2xvci5oIgotI2luY2x1ZGUg
IlRyYWNlRXZlbnQuaCIKIAogI2lmIFVTRShTS0lBKQogI2luY2x1ZGUgIkdyQ29udGV4dC5oIgpA
QCAtNTUsNyArNTUsNyBAQCB2b2lkIExheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXM6OnBhaW50Q29u
dGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbgogewogICAgIGNvbnRleHQu
dHJhbnNsYXRlKC1jb250ZW50UmVjdC54KCksIC1jb250ZW50UmVjdC55KCkpOwogICAgIHsKLSAg
ICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXM6OnBhaW50IiwgdGhp
cywgMCk7CisgICAgICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyVGV4dHVyZVVwZGF0
ZXJDYW52YXM6OnBhaW50IiwgdGhpcywgMCk7CiAgICAgICAgIG1fcGFpbnRlci0+cGFpbnQoY29u
dGV4dCwgY29udGVudFJlY3QpOwogICAgIH0KICAgICBtX2NvbnRlbnRSZWN0ID0gY29udGVudFJl
Y3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Qcm9ncmFtQmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Qcm9ncmFtQmluZGluZy5jcHAKaW5kZXggMjY3ZTAxOTU3NzI2OTdlNWU3NDI1MDQx
NjRlZDRlY2Q3ZDRmNmQ0Ny4uZTFhMjQ4NjI4ZjRmNjgxZjhjM2U5NTc1ZWIwOGE5MzZiYzkwYjA1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
UHJvZ3JhbUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmNwcApAQCAtMjksMTEgKzI5LDExIEBACiAKICNpbmNs
dWRlICJQcm9ncmFtQmluZGluZy5oIgogCisjaW5jbHVkZSAiQ29tcG9zaXRvclRyYWNlRXZlbnQu
aCIKICNpbmNsdWRlICJHZW9tZXRyeUJpbmRpbmcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC04OCw3ICs4OCw3IEBAIHVuc2lnbmVkIFByb2dyYW1CaW5kaW5nQmFzZTo6
bG9hZFNoYWRlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgdHlwCiAKIHVu
c2lnbmVkIFByb2dyYW1CaW5kaW5nQmFzZTo6Y3JlYXRlU2hhZGVyUHJvZ3JhbShHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGNvbnN0
IFN0cmluZyYgZnJhZ21lbnRTaGFkZXJTb3VyY2UpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIlByb2dy
YW1CaW5kaW5nQmFzZTo6Y3JlYXRlU2hhZGVyUHJvZ3JhbSIsIHRoaXMsIDApOworICAgIENPTVBP
U0lUT1JfVFJBQ0VfRVZFTlQoIlByb2dyYW1CaW5kaW5nQmFzZTo6Y3JlYXRlU2hhZGVyUHJvZ3Jh
bSIsIHRoaXMsIDApOwogICAgIHVuc2lnbmVkIHZlcnRleFNoYWRlciA9IGxvYWRTaGFkZXIoY29u
dGV4dCwgR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9TSEFERVIsIHZlcnRleFNoYWRlclNvdXJj
ZSk7CiAgICAgaWYgKCF2ZXJ0ZXhTaGFkZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQg
dG8gY3JlYXRlIHZlcnRleCBzaGFkZXIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5oCmluZGV4IGJiNmZj
OGRkZDkwZjhkNTVmMzVhNThkMjEzM2ZkYTQ5ODJiZDIwYjcuLmEyMGYwZDZmYzU0OWM3NGE5Y2Rl
MWY5NDM1YzZiZmE0OWIzNTVmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuaApAQCAtMjksNyArMjks
NiBAQAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCi0jaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDMyYmE2YTNiZWU1YTAy
NGY1NWNjMDI3NjIyNTJiOTNiNTgwNGUwZTQuLmRhMjM3YjhjNzI2ZTJlNjIyZWZkOTUyZmQzZGQw
Mjk1ZTM1NDU4MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcApAQCAtMzQsMTAg
KzM0LDEwIEBACiAKICNpbmNsdWRlICJXZWJHTExheWVyQ2hyb21pdW0uaCIKIAorI2luY2x1ZGUg
IkNvbXBvc2l0b3JUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0u
aCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVy
ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0xNTUsNyArMTU1LDcgQEAgR3JhcGhpY3NDb250ZXh0M0QqIFdlYkdMTGF5ZXJD
aHJvbWl1bTo6bGF5ZXJSZW5kZXJlckNvbnRleHQoKQogCiB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1
bTo6cmF0ZUxpbWl0Q29udGV4dChUaW1lcjxXZWJHTExheWVyQ2hyb21pdW0+KikKIHsKLSAgICBU
UkFDRV9FVkVOVCgiV2ViR0xMYXllckNocm9taXVtOjpyYXRlTGltaXRDb250ZXh0IiwgdGhpcywg
MCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiV2ViR0xMYXllckNocm9taXVtOjpyYXRl
TGltaXRDb250ZXh0IiwgdGhpcywgMCk7CiAKICAgICBpZiAoIW1fY29udGV4dCkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcAppbmRleCA4NjRjODhmMDc5
YWUzMTdkZDBhMjJkZDczNDQ4NzBjYmJjMjI0YTk2Li4xNTQ3YmI4MmViNDhhNTIxYzI1MjY3NDAy
OWI5YTMyMjMzZmU4MzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcApAQCAt
MjcsNiArMjcsNyBAQAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICNpbmNsdWRl
ICJDQ0hlYWRzVXBEaXNwbGF5LmgiCiAKKyNpbmNsdWRlICJDb21wb3NpdG9yU3VwcG9ydC5oIgog
I2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5jbHVkZSAiRm9udC5oIgogI2lu
Y2x1ZGUgIkZvbnRDYWNoZS5oIgpAQCAtNTMsNyArNTQsNyBAQCBDQ0hlYWRzVXBEaXNwbGF5OjpD
Q0hlYWRzVXBEaXNwbGF5KExheWVyUmVuZGVyZXJDaHJvbWl1bSogb3duZXIpCiAgICAgLCBtX2xh
eWVyUmVuZGVyZXIob3duZXIpCiAgICAgLCBtX3VzZU1hcFN1YkZvclVwbG9hZHMob3duZXItPmNv
bnRleHRTdXBwb3J0c01hcFN1YigpKQogewotICAgIG1fYmVnaW5UaW1lSGlzdG9yeUluU2VjWzBd
ID0gY3VycmVudFRpbWUoKTsKKyAgICBtX2JlZ2luVGltZUhpc3RvcnlJblNlY1swXSA9IENvbXBv
c2l0b3JTdXBwb3J0OjpjdXJyZW50VGltZSgpOwogICAgIG1fYmVnaW5UaW1lSGlzdG9yeUluU2Vj
WzFdID0gbV9iZWdpblRpbWVIaXN0b3J5SW5TZWNbMF07CiAgICAgZm9yIChpbnQgaSA9IDI7IGkg
PCBrQmVnaW5GcmFtZUhpc3RvcnlTaXplOyBpKyspCiAgICAgICAgIG1fYmVnaW5UaW1lSGlzdG9y
eUluU2VjW2ldID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAppbmRleCAyYjA1ZDlmZjBkMTdl
MDJiYjRlZTdkODNiYjBmM2IyNGZjYjc1Y2YzLi4yYzVmYzcwYmIxM2VhOTg0YzRlMTZhZWVlYjZj
NDgwNDc2M2RhYjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCkBAIC0yOSw2ICsyOSw3IEBA
CiAKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogCisjaW5jbHVkZSAiQ29tcG9zaXRvclRy
YWNlRXZlbnQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxh
eWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKQEAgLTE5
Miw3ICsxOTMsNyBAQCB2b2lkIENDTGF5ZXJJbXBsOjpkdW1wTGF5ZXJQcm9wZXJ0aWVzKFRleHRT
dHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjb25zdAogCiB2b2lkIHNvcnRMYXllcnMoVmVjdG9yPFJl
ZlB0cjxDQ0xheWVySW1wbD4gPjo6aXRlcmF0b3IgZmlyc3QsIFZlY3RvcjxSZWZQdHI8Q0NMYXll
ckltcGw+ID46Oml0ZXJhdG9yIGVuZCwgQ0NMYXllclNvcnRlciogbGF5ZXJTb3J0ZXIpCiB7Ci0g
ICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6c29ydExheWVycyIsIDAsIDAp
OworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6c29y
dExheWVycyIsIDAsIDApOwogICAgIGxheWVyU29ydGVyLT5zb3J0KGZpcnN0LCBlbmQpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCAyN2JhZWI5ODk4MDJhM2IyN2Rh
Y2U1Y2MxMjM1NTFjYWI5OTQ4YjU4Li42MDI4MTk1OWNiY2VmMTVkNzg3ZjY1NDFmNTA1NjE3YjAz
ZTAxYjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTI2LDEwICsyNiwx
MCBAQAogCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAKKyNpbmNsdWRlICJDb21w
b3NpdG9yVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRl
ICJMYXllclBhaW50ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1
bS5oIgotI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJUcmVlU3luY2hyb25pemVy
LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgiCiAjaW5jbHVkZSAiY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5oIgpAQCAtNjEsNyArNjEsNyBAQCBDQ0xheWVyVHJlZUhvc3Q6
OkNDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0
cjxMYXllcgogCiBib29sIENDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZSgpCiB7Ci0gICAgVFJB
Q0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOworICAgIENP
TVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZSIsIHRoaXMs
IDApOwogICAgIGlmIChtX3NldHRpbmdzLmVuYWJsZUNvbXBvc2l0b3JUaHJlYWQpIHsKICAgICAg
ICAgLy8gQWNjZWxlcmF0ZWQgUGFpbnRpbmcgaXMgbm90IHN1cHBvcnRlZCBpbiB0aHJlYWRlZCBt
b2RlLiBUdXJuIGl0IG9mZi4KICAgICAgICAgbV9zZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRpbmcg
PSBmYWxzZTsKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OmluaXRpYWxp
emUoKQogQ0NMYXllclRyZWVIb3N0Ojp+Q0NMYXllclRyZWVIb3N0KCkKIHsKICAgICBBU1NFUlQo
Q0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwotICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhv
c3Q6On5DQ0xheWVyVHJlZUhvc3QiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VW
RU5UKCJDQ0xheWVyVHJlZUhvc3Q6On5DQ0xheWVyVHJlZUhvc3QiLCB0aGlzLCAwKTsKICAgICBt
X3Byb3h5LT5zdG9wKCk7CiAgICAgbV9wcm94eS5jbGVhcigpOwogICAgIGNsZWFyUGVuZGluZ1Vw
ZGF0ZSgpOwpAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjphbmltYXRl
QW5kTGF5b3V0KGRvdWJsZSBmcmFtZUJlZ2luVGltZSkKIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpj
b21taXRUb09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaG9zdEltcGwpCiB7CiAgICAg
QVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKLSAgICBUUkFDRV9FVkVOVCgiQ0NMYXll
clRyZWVIb3N0Ojpjb21taXRUbyIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZF
TlQoIkNDTGF5ZXJUcmVlSG9zdDo6Y29tbWl0VG8iLCB0aGlzLCAwKTsKICAgICBob3N0SW1wbC0+
c2V0U291cmNlRnJhbWVOdW1iZXIoZnJhbWVOdW1iZXIoKSk7CiAKICAgICBjb250ZW50c1RleHR1
cmVNYW5hZ2VyKCktPnJlZHVjZU1lbW9yeVRvTGltaXQoVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1M
aW1pdEJ5dGVzKCkpOwpAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpz
ZXRab29tQW5pbWF0b3JUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHpvb20p
CiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KCkKIHsKICAg
ICBpZiAobV9zZXR0aW5ncy5lbmFibGVDb21wb3NpdG9yVGhyZWFkKSB7Ci0gICAgICAgIFRSQUNF
X0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzUmVkcmF3IiwgdGhpcywgMCk7CisgICAg
ICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6c2V0TmVlZHNSZWRy
YXciLCB0aGlzLCAwKTsKICAgICAgICAgbV9wcm94eS0+c2V0TmVlZHNDb21taXRUaGVuUmVkcmF3
KCk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZUNvbXBvc2l0ZSgpOwpA
QCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoKQog
CiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RM
YXllcikKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMi
LCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6
OnVwZGF0ZUxheWVycyIsIHRoaXMsIDApOwogCiAgICAgaWYgKCFyb290TGF5ZXItPnJlbmRlclN1
cmZhY2UoKSkKICAgICAgICAgcm9vdExheWVyLT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CkBAIC0y
NzcsNyArMjc3LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNo
cm9taXVtKiByb290TGF5ZXIpCiAgICAgcm9vdFJlbmRlclN1cmZhY2UtPmNsZWFyTGF5ZXJMaXN0
KCk7CiAKICAgICB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0
ZUxheWVyczo6Y2FsY0RyYXdFdGMiLCB0aGlzLCAwKTsKKyAgICAgICAgQ09NUE9TSVRPUl9UUkFD
RV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnM6OmNhbGNEcmF3RXRjIiwgdGhp
cywgMCk7CiAgICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5z
Zm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllciwgcm9vdExheWVyLCBtX3pvb21BbmltYXRvclRy
YW5zZm9ybSwgbV96b29tQW5pbWF0b3JUcmFuc2Zvcm0sIG1fdXBkYXRlTGlzdCwgcm9vdFJlbmRl
clN1cmZhY2UtPmxheWVyTGlzdCgpLCBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4
dHVyZVNpemUpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cAppbmRleCBhMzM5OTA4MTZhOTRlMGMyOWI3OWMwYmUzNDc2NTRkOTMwYjNiMTViLi5kOTQyZWU2
MjE3ODA1NmUyODk5ZDM2YzViMmY2Y2ViNzgwMTk1MDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMjYsMTAgKzI2LDEwIEBACiAKICNpbmNsdWRlICJjYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmgiCiAKKyNpbmNsdWRlICJDb21wb3NpdG9yVHJhY2VFdmVudC5o
IgogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNE
LmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCi0jaW5jbHVkZSAiVHJhY2VF
dmVudC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgImNjL0ND
TWFpblRocmVhZC5oIgogI2luY2x1ZGUgImNjL0NDTWFpblRocmVhZFRhc2suaCIKQEAgLTU0LDcg
KzU0LDcgQEAgQ0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbChjb25zdCBD
Q1NldHRpbmdzJiBzZXR0aW5ncykKIENDTGF5ZXJUcmVlSG9zdEltcGw6On5DQ0xheWVyVHJlZUhv
c3RJbXBsKCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwotICAgIFRS
QUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3RJbXBsOjp+Q0NMYXllclRyZWVIb3N0SW1wbCgpIiwg
dGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0SW1w
bDo6fkNDTGF5ZXJUcmVlSG9zdEltcGwoKSIsIHRoaXMsIDApOwogICAgIGlmIChtX2xheWVyUmVu
ZGVyZXIpCiAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+Y2xvc2UoKTsKIH0KQEAgLTc0LDcgKzc0
LDcgQEAgR3JhcGhpY3NDb250ZXh0M0QqIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNvbnRleHQoKQog
CiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMoKQogewotICAgIFRSQUNFX0VW
RU5UKCJDQ0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzIiwgdGhpcywgMCk7CisgICAgQ09N
UE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycyIsIHRo
aXMsIDApOwogICAgIEFTU0VSVChtX2xheWVyUmVuZGVyZXIpOwogICAgIGlmIChtX2xheWVyUmVu
ZGVyZXItPnJvb3RMYXllcigpKQogICAgICAgICBtX2xheWVyUmVuZGVyZXItPmRyYXdMYXllcnMo
KTsKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFpvb21B
bmltYXRvclRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgegogCiB2b2lkIEND
TGF5ZXJUcmVlSG9zdEltcGw6OnNjcm9sbFJvb3RMYXllcihjb25zdCBJbnRTaXplJiBzY3JvbGxE
ZWx0YSkKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsUm9v
dExheWVyIiwgdGhpcywgMCk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NMYXllclRy
ZWVIb3N0SW1wbDo6c2Nyb2xsUm9vdExheWVyIiwgdGhpcywgMCk7CiAgICAgaWYgKCFtX3Jvb3RM
YXllckltcGwgfHwgIW1fcm9vdExheWVySW1wbC0+c2Nyb2xsYWJsZSgpKQogICAgICAgICByZXR1
cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTWFpblRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ01haW5UaHJlYWQuY3BwCmluZGV4IGNkMzY4MTdlZGZjYjc5OTE2MmVl
N2Y3MTY5ZWQ1YTAyZDczZTdkZDYuLjU1MTNhYzdhYmExMDk0ODBkODdmYjgwOWQ0MWQ5N2YwMDlh
OWMxMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTWFpblRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NNYWluVGhyZWFkLmNwcApAQCAtMjUsNyArMjUsNyBAQAogCiAj
aW5jbHVkZSAiQ0NNYWluVGhyZWFkLmgiCiAKLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgor
I2luY2x1ZGUgIkNvbXBvc2l0b3JTdXBwb3J0LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAK
QEAgLTQwLDcgKzQwLDcgQEAgdm9pZCBDQ01haW5UaHJlYWQ6OnBlcmZvcm1UYXNrKHZvaWQqIHVz
ZXJkYXRhKQogCiB2b2lkIENDTWFpblRocmVhZDo6cG9zdFRhc2soUGFzc093blB0cjxUYXNrPiB0
YXNrKQogewotICAgIGNhbGxPbk1haW5UaHJlYWQocGVyZm9ybVRhc2ssIHRhc2subGVha1B0cigp
KTsKKyAgICBDb21wb3NpdG9yU3VwcG9ydDo6Y2FsbE9uTWFpblRocmVhZChwZXJmb3JtVGFzaywg
dGFzay5sZWFrUHRyKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ01haW5UaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWFpblRocmVhZC5oCmluZGV4IGNhOGU4
YzFjMzlhZjZlZjNlYTViZmVkODQ5N2MyNDJhZmQ5ZjhhZTYuLmI4OWJjMzBhODM1ZTA4ZTM4NTIx
ZWRmNDkzMDA1YzVmY2Y5MThmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWFpblRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWFpblRocmVhZC5oCkBAIC0yOSw3ICsy
OSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gVGFzayB3cmFwcGVyIGFyb3VuZCBX
VEY6OmNhbGxPbk1haW5UaHJlYWRUaHJlYWQKKy8vIFRhc2sgd3JhcHBlciBhcm91bmQgQ29tcG9z
aXRvclN1cHBvcnQ6OmNhbGxPbk1haW5UaHJlYWQuCiBjbGFzcyBDQ01haW5UaHJlYWQgewogcHVi
bGljOgogICAgIGNsYXNzIFRhc2sgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcAppbmRleCBiN2VjY2VjZDEwYTA4
YjhlYmE4NzY1ZjA4OThmZWIyZDMxMTFiMjhmLi4zZDAxOTkzY2QwMzgzYmY3YmUzY2U1NDM1ZjI2
ZGFiNDU1M2YyZjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcApAQCAtMjYsNyArMjYsNiBAQAogCiAjaW5j
bHVkZSAiY2MvQ0NQcm94eS5oIgogCi0jaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUg
ImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgImNjL0NDTWFpblRocmVhZFRhc2suaCIK
ICNpbmNsdWRlICJjYy9DQ1RocmVhZFRhc2suaCIKQEAgLTQxLDExICs0MCwxMiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgewogYm9vbCBmYWtlSW1wbFRocmVhZCA9IGZhbHNlOwog
c3RhdGljIFdURjo6VGhyZWFkSWRlbnRpZmllciBpbXBsVGhyZWFkSUQ7CitzdGF0aWMgV1RGOjpU
aHJlYWRJZGVudGlmaWVyIG1haW5UaHJlYWRJRDsKIH0KIAogYm9vbCBDQ1Byb3h5Ojppc01haW5U
aHJlYWQoKQogewotICAgIHJldHVybiA6OmlzTWFpblRocmVhZCgpICYmICFmYWtlSW1wbFRocmVh
ZDsKKyAgICByZXR1cm4gIWZha2VJbXBsVGhyZWFkICYmIGN1cnJlbnRUaHJlYWQoKSA9PSBtYWlu
VGhyZWFkSUQ7CiB9CiAKIGJvb2wgQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkKQEAgLTYzLDYgKzYz
LDE2IEBAIHZvaWQgQ0NQcm94eTo6c2V0SW1wbFRocmVhZChXVEY6OlRocmVhZElkZW50aWZpZXIg
aWQpCiAgICAgaW1wbFRocmVhZElEID0gaWQ7CiB9CiAKK3ZvaWQgQ0NQcm94eTo6c2V0TWFpblRo
cmVhZChXVEY6OlRocmVhZElkZW50aWZpZXIgaWQpCit7CisgICAgbWFpblRocmVhZElEID0gaWQ7
Cit9CisKICNlbmRpZiAvLyAhTkRFQlVHCiAKK0NDUHJveHk6OkNDUHJveHkoKQoreworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAppbmRleCBkZmI3N2IzYTlh
ZDVjMmVkOWZmZTE1ZjQ5OTUyNTIwNTZhNzM5OTc2Li4zMjg3YzEyMTU0MzU1OTc0OWRhNTBhMzQ0
NTg2ZGFkOTk4NDg1M2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCkBAIC04NiwxMCArODYsMTEgQEAgcHVibGlj
OgogI2lmbmRlZiBOREVCVUcKICAgICBzdGF0aWMgdm9pZCBzZXRJbXBsVGhyZWFkKGJvb2wpOwog
ICAgIHN0YXRpYyB2b2lkIHNldEltcGxUaHJlYWQoV1RGOjpUaHJlYWRJZGVudGlmaWVyKTsKKyAg
ICBzdGF0aWMgdm9pZCBzZXRNYWluVGhyZWFkKFdURjo6VGhyZWFkSWRlbnRpZmllcik7CiAjZW5k
aWYKIAogcHJvdGVjdGVkOgotICAgIENDUHJveHkoKSB7IH0KKyAgICBDQ1Byb3h5KCk7CiAgICAg
ZnJpZW5kIGNsYXNzIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZDsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhy
ZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggNzg3MjcwN2IyZWEwMmQwYzEzNGRkMmYw
OTkwMjM0NDU1YTk5MGM0MC4uOTM1ZjUwNmZiNGM2NzNhY2MzNWU0NzkxMDZmNzIxYjQ1NmM2N2Nk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTI2LDkgKzI2
LDkgQEAKIAogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKIAorI2luY2x1ZGUg
IkNvbXBvc2l0b3JUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIK
ICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlICJUcmFjZUV2ZW50
LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiY2MvQ0NNYWlu
VGhyZWFkVGFzay5oIgogI2luY2x1ZGUgImNjL0NDU2Nyb2xsQ29udHJvbGxlci5oIgpAQCAtNTAs
OCArNTAsOCBAQCBDQ1NpbmdsZVRocmVhZFByb3h5OjpDQ1NpbmdsZVRocmVhZFByb3h5KENDTGF5
ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCkKICAgICAsIG1fZ3JhcGhpY3NDb250ZXh0TG9zdChm
YWxzZSkKICAgICAsIG1fdGltZXNSZWNyZWF0ZVNob3VsZEZhaWwoMCkKIHsKLSAgICBUUkFDRV9F
VkVOVCgiQ0NTaW5nbGVUaHJlYWRQcm94eTo6Q0NTaW5nbGVUaHJlYWRQcm94eSIsIHRoaXMsIDAp
OwotICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CisgICAgQ09NUE9TSVRPUl9U
UkFDRV9FVkVOVCgiQ0NTaW5nbGVUaHJlYWRQcm94eTo6Q0NTaW5nbGVUaHJlYWRQcm94eSIsIHRo
aXMsIDApOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiB9CiAKIHZvaWQgQ0NTaW5nbGVU
aHJlYWRQcm94eTo6c3RhcnQoKQpAQCAtNjIsOCArNjIsOCBAQCB2b2lkIENDU2luZ2xlVGhyZWFk
UHJveHk6OnN0YXJ0KCkKIAogQ0NTaW5nbGVUaHJlYWRQcm94eTo6fkNDU2luZ2xlVGhyZWFkUHJv
eHkoKQogewotICAgIFRSQUNFX0VWRU5UKCJDQ1NpbmdsZVRocmVhZFByb3h5Ojp+Q0NTaW5nbGVU
aHJlYWRQcm94eSIsIHRoaXMsIDApOwotICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQo
KSk7CisgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NTaW5nbGVUaHJlYWRQcm94eTo6fkND
U2luZ2xlVGhyZWFkUHJveHkiLCB0aGlzLCAwKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIEFTU0VSVCghbV9sYXllclRyZWVIb3N0SW1wbCAmJiAhbV9sYXllclRyZWVIb3N0KTsg
Ly8gbWFrZSBzdXJlIHN0b3AoKSBnb3QgY2FsbGVkLgogfQogCkBAIC0xNzMsOCArMTczLDggQEAg
dm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzZXROZWVkc1JlZHJhdygpCiAKIHZvaWQgQ0NTaW5n
bGVUaHJlYWRQcm94eTo6c3RvcCgpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDU2luZ2xlVGhyZWFk
UHJveHk6OnN0b3AiLCB0aGlzLCAwKTsKLSAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFk
KCkpOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDU2luZ2xlVGhyZWFkUHJveHk6OnN0
b3AiLCB0aGlzLCAwKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIHsKICAgICAg
ICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+ZGVsZXRlQ29udGVudHNUZXh0dXJlc09uQ0NUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+
Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApp
bmRleCA5ZWUxNjRhNWNlZjJiNWNhYmNlZTNlY2M1ZjdkMWQ0MTc5Yzk3MzNmLi5mYjgwNGY3ZjM2
ZjBlYTlmZGFiYTJiYmM1YzRiOTIyYjEyZjQzZThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmNwcApAQCAtMjYsOCArMjYsOCBAQAogCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRQcm94eS5oIgog
CisjaW5jbHVkZSAiQ29tcG9zaXRvclRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQzRC5oIgotI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJjYy9DQ0lucHV0
SGFuZGxlci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgImNj
L0NDTWFpblRocmVhZFRhc2suaCIKQEAgLTExNSwyMCArMTE1LDIwIEBAIENDVGhyZWFkUHJveHk6
OkNDVGhyZWFkUHJveHkoQ0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KQogICAgICwgbV9s
YXN0RXhlY3V0ZWRCZWdpbkZyYW1lQW5kQ29tbWl0U2VxdWVuY2VOdW1iZXIoLTEpCiAgICAgLCBt
X251bUJlZ2luRnJhbWVBbmRDb21taXRzSXNzdWVkT25DQ1RocmVhZCgwKQogewotICAgIFRSQUNF
X0VWRU5UKCJDQ1RocmVhZFByb3h5OjpDQ1RocmVhZFByb3h5IiwgdGhpcywgMCk7CisgICAgQ09N
UE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6Q0NUaHJlYWRQcm94eSIsIHRoaXMs
IDApOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiB9CiAKIENDVGhyZWFkUHJveHk6On5D
Q1RocmVhZFByb3h5KCkKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6fkNDVGhy
ZWFkUHJveHkiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJDQ1RocmVh
ZFByb3h5Ojp+Q0NUaHJlYWRQcm94eSIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAgICAgQVNTRVJUKCFtX3N0YXJ0ZWQpOwogfQogCiBib29sIENDVGhyZWFkUHJveHk6
OmNvbXBvc2l0ZUFuZFJlYWRiYWNrKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYgcmVjdCkK
IHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQUm94eTo6Y29tcG9zaXRlQW5kUmVhZGJhY2si
LCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJDQ1RocmVhZFBSb3h5Ojpj
b21wb3NpdGVBbmRSZWFkYmFjayIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgQVNTRVJUKG1fbGF5ZXJUcmVlSG9zdCk7CiAKQEAgLTE5NSw3ICsxOTUsNyBAQCBi
b29sIENDVGhyZWFkUHJveHk6OmlzU3RhcnRlZCgpIGNvbnN0CiAKIGJvb2wgQ0NUaHJlYWRQcm94
eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKQogewotICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVh
ZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlciIsIHRoaXMsIDApOworICAgIENPTVBPU0lU
T1JfVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVyIiwg
dGhpcywgMCk7CiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gbV9sYXll
clRyZWVIb3N0LT5jcmVhdGVMYXllclRyZWVIb3N0Q29udGV4dDNEKCk7CiAgICAgaWYgKCFjb250
ZXh0KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNDMsNyArMjQzLDcgQEAgdm9pZCBDQ1Ro
cmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdCgpCiAgICAgaWYgKG1fY29tbWl0UmVxdWVzdGVkKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2V0TmVl
ZHNDb21taXQiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJDQ1RocmVh
ZFByb3h5OjpzZXROZWVkc0NvbW1pdCIsIHRoaXMsIDApOwogICAgIG1fY29tbWl0UmVxdWVzdGVk
ID0gdHJ1ZTsKICAgICBzX2NjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhp
cywgJkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0T25DQ1RocmVhZCkpOwogfQpAQCAtMjU4
LDIxICsyNTgsMjEgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdFRoZW5SZWRy
YXcoKQogdm9pZCBDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdE9uQ0NUaHJlYWQoKQogewog
ICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJv
eHk6OnNldE5lZWRzQ29tbWl0T25DQ1RocmVhZCIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1Jf
VFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0T25DQ1RocmVhZCIsIHRo
aXMsIDApOwogICAgIG1fc2NoZWR1bGVyT25DQ1RocmVhZC0+cmVxdWVzdENvbW1pdCgpOwogfQog
CiB2b2lkIENDVGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3KCkKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwotICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzZXROZWVkc1Jl
ZHJhdyIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJv
eHk6OnNldE5lZWRzUmVkcmF3IiwgdGhpcywgMCk7CiAgICAgc19jY1RocmVhZC0+cG9zdFRhc2so
Y3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpzZXROZWVkc1JlZHJhd09u
Q0NUaHJlYWQpKTsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5OjpzZXROZWVkc1JlZHJhd09uQ0NU
aHJlYWQoKQogewogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7Ci0gICAgVFJBQ0VfRVZFTlQo
IkNDVGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3T25DQ1RocmVhZCIsIHRoaXMsIDApOworICAg
IENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNldE5lZWRzUmVkcmF3T25D
Q1RocmVhZCIsIHRoaXMsIDApOwogICAgIG1fc2NoZWR1bGVyT25DQ1RocmVhZC0+cmVxdWVzdFJl
ZHJhdygpOwogfQogCkBAIC0yOTAsNyArMjkwLDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzdGFy
dCgpCiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c3RvcCgpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkND
VGhyZWFkUHJveHk6OnN0b3AiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VWRU5U
KCJDQ1RocmVhZFByb3h5OjpzdG9wIiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKICAgICBBU1NFUlQobV9zdGFydGVkKTsKIApAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQg
Q0NUaHJlYWRQcm94eTo6c3RvcCgpCiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVu
ZGVyaW5nT25DQ1RocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKIHsKLSAgICBU
UkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25DQ1RocmVhZCIs
IHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmZp
bmlzaEFsbFJlbmRlcmluZ09uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNJbXBs
VGhyZWFkKCkpOwogICAgIGlmIChtX3NjaGVkdWxlck9uQ0NUaHJlYWQtPnJlZHJhd1BlbmRpbmco
KSkgewogICAgICAgICBkcmF3TGF5ZXJzT25DQ1RocmVhZCgpOwpAQCAtMzI2LDcgKzMyNiw3IEBA
IHZvaWQgQ0NUaHJlYWRQcm94eTo6b2J0YWluQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tGcm9tQ0NU
aHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqCiAKIFBhc3NPd25QdHI8Q0NNYWluVGhyZWFkOjpUYXNr
PiBDQ1RocmVhZFByb3h5OjpjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uQ0NUaHJlYWQo
KQogewotICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpjcmVhdGVCZWdpbkZyYW1lQW5k
Q29tbWl0VGFza09uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJVE9SX1RSQUNFX0VW
RU5UKCJDQ1RocmVhZFByb3h5OjpjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uQ0NUaHJl
YWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwogICAgIGRvdWJsZSBm
cmFtZUJlZ2luVGltZSA9IGN1cnJlbnRUaW1lKCk7CiAKQEAgLTM0Nyw3ICszNDcsNyBAQCBQYXNz
T3duUHRyPENDTWFpblRocmVhZDo6VGFzaz4gQ0NUaHJlYWRQcm94eTo6Y3JlYXRlQmVnaW5GcmFt
ZUFuZENvbW1pdFRhc2tPbkNDVAogCiB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRD
b21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbWUsIFBhc3NPd25Q
dHI8Q0NTY3JvbGxVcGRhdGVTZXQ+IHNjcm9sbEluZm8pCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkND
VGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQiLCB0aGlzLCAwKTsKKyAgICBDT01QT1NJ
VE9SX1RSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0IiwgdGhp
cywgMCk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoIW1fbGF5ZXJUcmVl
SG9zdCkKICAgICAgICAgcmV0dXJuOwpAQCAtMzU4LDE0ICszNTgsMTQgQEAgdm9pZCBDQ1RocmVh
ZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZy
YW1lQmVnaW5UaW0KICAgICAvLyBEcm9wIGJlZ2luRnJhbWVBbmRDb21taXQgY2FsbHMgdGhhdCBv
Y2N1ciBvdXQgb2Ygc2VxdWVuY2UuIFNlZSBjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09u
Q0NUaHJlYWQgZm9yCiAgICAgLy8gYW4gZXhwbGFuYXRpb24gb2YgaG93IG91dC1vZi1zZXF1ZW5j
ZSBiZWdpbkZyYW1lQW5kQ29tbWl0IHRhc2tzIGNhbiBvY2N1ci4KICAgICBpZiAoc2VxdWVuY2VO
dW1iZXIgPCBtX2xhc3RFeGVjdXRlZEJlZ2luRnJhbWVBbmRDb21taXRTZXF1ZW5jZU51bWJlcikg
ewotICAgICAgICBUUkFDRV9FVkVOVCgiRWFybHlPdXRfU3RhbGVCZWdpbkZyYW1lQW5kQ29tbWl0
IiwgdGhpcywgMCk7CisgICAgICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkVhcmx5T3V0X1N0
YWxlQmVnaW5GcmFtZUFuZENvbW1pdCIsIHRoaXMsIDApOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIG1fbGFzdEV4ZWN1dGVkQmVnaW5GcmFtZUFuZENvbW1pdFNlcXVlbmNlTnVtYmVyID0g
c2VxdWVuY2VOdW1iZXI7CiAKICAgICAvLyBGSVhNRTogcmVjcmVhdGUgdGhlIGNvbnRleHQgaWYg
aXQgd2FzIHJlcXVlc3RlZCBieSB0aGUgaW1wbCB0aHJlYWQKICAgICB7Ci0gICAgICAgIFRSQUNF
X0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OmFuaW1hdGVBbmRMYXlvdXQiLCB0aGlzLCAwKTsKKyAg
ICAgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0OjphbmltYXRlQW5k
TGF5b3V0IiwgdGhpcywgMCk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+YW5pbWF0ZUFuZExh
eW91dChmcmFtZUJlZ2luVGltZSk7CiAgICAgfQogCkBAIC0zODAsNyArMzgwLDcgQEAgdm9pZCBD
Q1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91
YmxlIGZyYW1lQmVnaW5UaW0KIAogICAgIHsKICAgICAgICAgLy8gQmxvY2tpbmcgY2FsbCB0byBD
Q1RocmVhZFByb3h5Ojpjb21taXRPbkNDVGhyZWFkCi0gICAgICAgIFRSQUNFX0VWRU5UKCJjb21t
aXQiLCB0aGlzLCAwKTsKKyAgICAgICAgQ09NUE9TSVRPUl9UUkFDRV9FVkVOVCgiY29tbWl0Iiwg
dGhpcywgMCk7CiAgICAgICAgIENDQ29tcGxldGlvbkV2ZW50IGNvbXBsZXRpb247CiAgICAgICAg
IHNfY2NUaHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQ
cm94eTo6Y29tbWl0T25DQ1RocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmY29tcGxldGlv
bikpKTsKICAgICAgICAgY29tcGxldGlvbi53YWl0KCk7CkBAIC0zOTcsNyArMzk3LDcgQEAgdm9p
ZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwg
ZG91YmxlIGZyYW1lQmVnaW5UaW0KIAogdm9pZCBDQ1RocmVhZFByb3h5Ojpjb21taXRPbkNDVGhy
ZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQogewotICAgIFRSQUNFX0VWRU5UKCJD
Q1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0T25DQ1RocmVhZCIsIHRoaXMsIDApOwor
ICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRD
b21taXRPbkNDVGhyZWFkIiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsK
ICAgICBBU1NFUlQobV9zY2hlZHVsZXJPbkNDVGhyZWFkLT5jb21taXRQZW5kaW5nKCkpOwogICAg
IGlmICghbV9sYXllclRyZWVIb3N0SW1wbCkgewpAQCAtNDE1LDcgKzQxNSw3IEBAIHZvaWQgQ0NU
aHJlYWRQcm94eTo6Y29tbWl0T25DQ1RocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlv
bikKIAogdm9pZCBDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJzQW5kUHJlc2VudE9uQ0NUaHJlYWQo
KQogewotICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJzT25DQ1RocmVh
ZCIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6
OmRyYXdMYXllcnNPbkNDVGhyZWFkIiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVh
ZCgpKTsKICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwpCiAgICAgICAgIHJldHVybjsKQEAg
LTQyNyw3ICs0MjcsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmRyYXdMYXllcnNBbmRQcmVzZW50
T25DQ1RocmVhZCgpCiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6ZHJhd0xheWVyc09uQ0NUaHJlYWQo
KQogewotICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJzT25DQ1RocmVh
ZCIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6
OmRyYXdMYXllcnNPbkNDVGhyZWFkIiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVh
ZCgpKTsKICAgICBBU1NFUlQobV9sYXllclRyZWVIb3N0SW1wbCk7CiAKQEAgLTQzNyw3ICs0Mzcs
NyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmRyYXdMYXllcnNPbkNDVGhyZWFkKCkKIAogdm9pZCBD
Q1RocmVhZFByb3h5Ojppbml0aWFsaXplSW1wbE9uQ0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQq
IGNvbXBsZXRpb24pCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmluaXRpYWxp
emVJbXBsT25DQ1RocmVhZCIsIHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQo
IkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVJbXBsT25DQ1RocmVhZCIsIHRoaXMsIDApOwogICAg
IEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgbV9sYXllclRyZWVIb3N0SW1wbCA9IG1fbGF5
ZXJUcmVlSG9zdC0+Y3JlYXRlTGF5ZXJUcmVlSG9zdEltcGwoKTsKICAgICBtX3NjaGVkdWxlckNs
aWVudE9uQ0NUaHJlYWQgPSBDQ1RocmVhZFByb3h5U2NoZWR1bGVyQ2xpZW50OjpjcmVhdGUodGhp
cyk7CkBAIC00NDcsNyArNDQ3LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplSW1w
bE9uQ0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCiAKIHZvaWQgQ0NUaHJl
YWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJPbkNDVGhyZWFkKEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0UHRyLCBDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbiwgYm9vbCogaW5p
dGlhbGl6ZVN1Y2NlZWRlZCwgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyogY2FwYWJpbGl0aWVz
LCBpbnQqIGNvbXBvc2l0b3JJZGVudGlmaWVyKQogewotICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVh
ZFByb3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKKyAg
ICBDT01QT1NJVE9SX1RSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplTGF5ZXJS
ZW5kZXJlck9uQ0NUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkp
OwogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dChhZG9wdFJlZihjb250ZXh0
UHRyKSk7CiAgICAgKmluaXRpYWxpemVTdWNjZWVkZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5p
bml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0KTsKQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lk
IENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVyT25DQ1RocmVhZChHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dAogCiB2b2lkIENDVGhyZWFkUHJveHk6OmxheWVyVHJlZUhvc3RD
bG9zZWRPbkNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQogewotICAgIFRS
QUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpsYXllclRyZWVIb3N0Q2xvc2VkT25DQ1RocmVhZCIs
IHRoaXMsIDApOworICAgIENPTVBPU0lUT1JfVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6Omxh
eWVyVHJlZUhvc3RDbG9zZWRPbkNDVGhyZWFkIiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKGlzSW1w
bFRocmVhZCgpKTsKICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNP
bkNDVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigp
KTsKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IDNiODZkYTJkZGIxMTZmNDJjZjkyZTdjMjBiZDRkM2M0YWRjODc0YzQuLjJiN2Iz
OWQ1ZWMwYzQ4MzAzMmJmNzQwMzhkNzA3NTQ0MDdiZTRkNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDktMjggIEFudG9pbmUgTGFib3VyICA8cGlt
YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNlcGFyYXRlIGNvbXBvc2l0b3IgcGxhdGZvcm0g
c3VwcG9ydCBmcm9tIHdlYmtpdCdzIHBsYXRmb3JtIHN1cHBvcnQuCisgICAgICAgIFRoaXMgaXMg
c28gdGhhdCB0aGUgY29tcG9zaXRvciBjYW4gYmUgdXNlZCBpbiBhIHRocmVhZCBzZXBhcmF0ZSBm
cm9tIHRoZQorICAgICAgICBtYWluIHdlYmtpdCB0aHJlYWQuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTA0OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcHVibGljL1dlYktpdC5oOgorICAgICAgICAq
IHNyYy9XZWJLaXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXRDb21wb3NpdG9yU3VwcG9y
dDo6fldlYktpdENvbXBvc2l0b3JTdXBwb3J0KToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0Q29t
cG9zaXRvclN1cHBvcnQ6OmN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0Q29t
cG9zaXRvclN1cHBvcnQ6Omhpc3RvZ3JhbUN1c3RvbUNvdW50cyk6CisgICAgICAgIChXZWJLaXQ6
OldlYktpdENvbXBvc2l0b3JTdXBwb3J0Ojp0cmFjZUV2ZW50QmVnaW4pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJLaXRDb21wb3NpdG9yU3VwcG9ydDo6dHJhY2VFdmVudEVuZCk6CisgICAgICAgIChX
ZWJLaXQ6OmluaXRpYWxpemVXaXRob3V0VjgpOgorICAgICAgICAoV2ViS2l0Ojppbml0aWFsaXpl
V2l0aG91dFY4QW5kQ29tcG9zaXRvcik6CisgICAgICAgIChXZWJLaXQ6OnNodXRkb3duKToKKwog
MjAxMS0xMC0wNiAgQW5uYSBDYXZlbmRlciAgPGFubmFjY0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgVHVybiBFTkFCTEVfVklERU9fVFJBQ0sgb24gZm9yIGNocm9taXVtLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0LmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJLaXQuaAppbmRleCAzMTg2YzAzMWRmM2IwNTk0YWE1Y2JkOTNlOWIx
OTI3MGEzM2MzMjUyLi41ODFjYmFkNGYwZTZhODdkYWIxMzNlOGJkMTExNGU3MTAzMThlMjFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXQuaApAQCAtMzgsNiArMzgsOCBAQAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYktpdFBsYXRmb3JtU3VwcG9ydDsKK2NsYXNz
IFdlYlRocmVhZDsKK3R5cGVkZWYgdm9pZCAoKldlYkNhbGxPbk1haW5UaHJlYWRGdW5jKSh2b2lk
ICgqKSh2b2lkKiksIHZvaWQqKTsKIAogLy8gTXVzdCBiZSBjYWxsZWQgb24gdGhlIHRocmVhZCB0
aGF0IHdpbGwgYmUgdGhlIG1haW4gV2ViS2l0IHRocmVhZCBiZWZvcmUKIC8vIHVzaW5nIGFueSBv
dGhlciBXZWJLaXQgQVBJcy4gVGhlIHByb3ZpZGVkIFdlYktpdFBsYXRmb3JtU3VwcG9ydDsgbXVz
dCBiZQpAQCAtNzEsNiArNzMsMTQgQEAgV0VCS0lUX0VYUE9SVCB2b2lkIGVuYWJsZUxvZ0NoYW5u
ZWwoY29uc3QgY2hhciopOwogLy8gY29udGFpbmluZyBwbHVnaW5zIHdpbGwgYmUgcmVsb2FkZWQg
YWZ0ZXIgcmVmcmVzaGluZyB0aGUgcGx1Z2luIGxpc3QuCiBXRUJLSVRfRVhQT1JUIHZvaWQgcmVz
ZXRQbHVnaW5DYWNoZShib29sIHJlbG9hZFBhZ2VzKTsKIAorLy8gSW5pdGlhbGl6ZXMgdGhlIGNv
bXBvc2l0b3IuIE11c3QgYmUgY2FsbGVkIG9uIHRoZSBjb21wb3NpdG9yIGNsaWVudCB0aHJlYWQg
aWYKKy8vIGRpZmZlcmVudCBmcm9tIHRoZSBXZWJLaXQgbWFpbiB0aHJlYWQuIE11c3QgYmUgY2Fs
bGVkIGFmdGVyIGluaXRpYWxpemUuCitXRUJLSVRfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZUNvbXBv
c2l0b3IoV2ViQ2FsbE9uTWFpblRocmVhZEZ1bmMpOworCisvLyBUZXJtaW5hdGVzIHRoZSBjb21w
b3NpdG9yLiBNdXN0IGJlIGNhbGxlZCBvbiB0aGUgY29tcG9zaXRvciBjbGllbnQgdGhyZWFkIGlm
CisvLyBkaWZmZXJlbnQgZnJvbSB0aGUgV2ViS2l0IG1haW4gdGhyZWFkLiBNdXN0IGJlIGNhbGxl
ZCBiZWZvcmUgc2h1dGRvd24uCitXRUJLSVRfRVhQT1JUIHZvaWQgc2h1dGRvd25Db21wb3NpdG9y
KCk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJLaXQuY3BwCmluZGV4IDQyM2M0NWFlMzI0ZTE1YjdiMmQ0NGUwZDVkYWM0M2ZjOWMz
NDEwNGIuLmY0NDBiMzc1YmNkOTg2ZjY4ZTkzNDlhNDViNThlNzJkYjcyZmU0ZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdC5oIgogCisjaW5jbHVkZSAiQ29tcG9zaXRvclN1
cHBvcnQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKQEAgLTQxLDYgKzQyLDcgQEAKICNpbmNsdWRl
ICJXZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCIKICNpbmNsdWRlICJXZWJTb2NrZXQuaCIKICNp
bmNsdWRlICJXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCIKKyNpbmNsdWRlICJjYy9DQ1By
b3h5LmgiCiAjaW5jbHVkZSAidjguaCIKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBA
IC01Nyw2ICs1OSw1MCBAQCBzdGF0aWMgYm9vbCBzX3dlYktpdEluaXRpYWxpemVkID0gZmFsc2U7
CiBzdGF0aWMgV2ViS2l0UGxhdGZvcm1TdXBwb3J0KiBzX3dlYktpdFBsYXRmb3JtU3VwcG9ydCA9
IDA7CiBzdGF0aWMgYm9vbCBzX2xheW91dFRlc3RNb2RlID0gZmFsc2U7CiAKK2NsYXNzIFdlYktp
dENvbXBvc2l0b3JTdXBwb3J0IDogcHVibGljIFdlYkNvcmU6OkNvbXBvc2l0b3JTdXBwb3J0RGVs
ZWdhdGUgeworcHVibGljOgorICAgIFdlYktpdENvbXBvc2l0b3JTdXBwb3J0KCkgOiBtX2NhbGxP
bk1haW5UaHJlYWRGdW5jKDApIHsgfQorICAgIHZpcnR1YWwgfldlYktpdENvbXBvc2l0b3JTdXBw
b3J0KCkgeyB9CisKKyAgICB2aXJ0dWFsIGRvdWJsZSBjdXJyZW50VGltZSgpCisgICAgeworICAg
ICAgICByZXR1cm4gc193ZWJLaXRQbGF0Zm9ybVN1cHBvcnQtPmN1cnJlbnRUaW1lKCk7CisgICAg
fQorCisgICAgdmlydHVhbCB2b2lkIGhpc3RvZ3JhbUN1c3RvbUNvdW50cyhjb25zdCBjaGFyKiBu
YW1lLCBpbnQgc2FtcGxlLCBpbnQgbWluLCBpbnQgbWF4LCBpbnQgYnVja2V0Q291bnQpCisgICAg
eworICAgICAgICBzX3dlYktpdFBsYXRmb3JtU3VwcG9ydC0+aGlzdG9ncmFtQ3VzdG9tQ291bnRz
KG5hbWUsIHNhbXBsZSwgbWluLCBtYXgsIGJ1Y2tldENvdW50KTsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgdHJhY2VFdmVudEJlZ2luKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBjb25z
dCBjaGFyKiBleHRyYSkKKyAgICB7CisgICAgICAgIHNfd2ViS2l0UGxhdGZvcm1TdXBwb3J0LT50
cmFjZUV2ZW50QmVnaW4obmFtZSwgaWQsIGV4dHJhKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgdHJhY2VFdmVudEVuZChjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiBpZCwgY29uc3QgY2hhciog
ZXh0cmEpCisgICAgeworICAgICAgICBzX3dlYktpdFBsYXRmb3JtU3VwcG9ydC0+dHJhY2VFdmVu
dEVuZChuYW1lLCBpZCwgZXh0cmEpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBjYWxsT25N
YWluVGhyZWFkKHZvaWQgKCpmdW5jdGlvbikodm9pZCopLCB2b2lkKiBjb250ZXh0KQorICAgIHsK
KyAgICAgICAgaWYgKG1fY2FsbE9uTWFpblRocmVhZEZ1bmMpCisgICAgICAgICAgICBtX2NhbGxP
bk1haW5UaHJlYWRGdW5jKGZ1bmN0aW9uLCBjb250ZXh0KTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgc193ZWJLaXRQbGF0Zm9ybVN1cHBvcnQtPmNhbGxPbk1haW5UaHJlYWQoZnVuY3Rpb24s
IGNvbnRleHQpOworICAgIH0KKworICAgIHZvaWQgc2V0Q2FsbE9uTWFpblRocmVhZEZ1bmMoV2Vi
Q2FsbE9uTWFpblRocmVhZEZ1bmMgZnVuYykKKyAgICB7CisgICAgICAgIG1fY2FsbE9uTWFpblRo
cmVhZEZ1bmMgPSBmdW5jOworICAgIH0KKworcHJpdmF0ZToKKyAgICBXZWJDYWxsT25NYWluVGhy
ZWFkRnVuYyBtX2NhbGxPbk1haW5UaHJlYWRGdW5jOworfTsKKworc3RhdGljIFdlYktpdENvbXBv
c2l0b3JTdXBwb3J0KiBzX2NvbXBvc2l0b3JTdXBwb3J0ID0gMDsKKwogc3RhdGljIGJvb2wgZ2Vu
ZXJhdGVFbnRyb3B5KHVuc2lnbmVkIGNoYXIqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCkKIHsKICAg
ICBpZiAoc193ZWJLaXRQbGF0Zm9ybVN1cHBvcnQpIHsKQEAgLTk3LDEyICsxNDMsMjEgQEAgdm9p
ZCBpbml0aWFsaXplV2l0aG91dFY4KFdlYktpdFBsYXRmb3JtU3VwcG9ydCogd2ViS2l0UGxhdGZv
cm1TdXBwb3J0KQogICAgIC8vIHRoaXMsIGluaXRpYWxpemluZyB0aGlzIGxhemlseSBwcm9iYWJs
eSBkb2Vzbid0IGJ1eSB1cyBtdWNoLgogICAgIFdlYkNvcmU6OlVURjhFbmNvZGluZygpOwogCi0g
CisgICAgc19jb21wb3NpdG9yU3VwcG9ydCA9IG5ldyBXZWJLaXRDb21wb3NpdG9yU3VwcG9ydDsK
KyAgICBXZWJDb3JlOjpDb21wb3NpdG9yU3VwcG9ydDo6c2V0RGVsZWdhdGUoc19jb21wb3NpdG9y
U3VwcG9ydCk7CisjaWZuZGVmIE5ERUJVRworICAgIFdlYkNvcmU6OkNDUHJveHk6OnNldE1haW5U
aHJlYWQoY3VycmVudFRocmVhZCgpKTsKKyNlbmRpZgogfQogCi0KIHZvaWQgc2h1dGRvd24oKQog
eworI2lmbmRlZiBOREVCVUcKKyAgICBXZWJDb3JlOjpDQ1Byb3h5OjpzZXRNYWluVGhyZWFkKDAp
OworI2VuZGlmCisgICAgV2ViQ29yZTo6Q29tcG9zaXRvclN1cHBvcnQ6OnNldERlbGVnYXRlKDAp
OworICAgIGRlbGV0ZSBzX2NvbXBvc2l0b3JTdXBwb3J0OworICAgIHNfY29tcG9zaXRvclN1cHBv
cnQgPSAwOwogICAgIHNfd2ViS2l0UGxhdGZvcm1TdXBwb3J0ID0gMDsKIH0KIApAQCAtMTMzLDQg
KzE4OCwyMCBAQCB2b2lkIHJlc2V0UGx1Z2luQ2FjaGUoYm9vbCByZWxvYWRQYWdlcykKICAgICBX
ZWJDb3JlOjpQYWdlOjpyZWZyZXNoUGx1Z2lucyhyZWxvYWRQYWdlcyk7CiB9CiAKK3ZvaWQgaW5p
dGlhbGl6ZUNvbXBvc2l0b3IoV2ViQ2FsbE9uTWFpblRocmVhZEZ1bmMgZnVuYykKK3sKKyAgICBB
U1NFUlQoc193ZWJLaXRJbml0aWFsaXplZCk7CisjaWZuZGVmIE5ERUJVRworICAgIFdlYkNvcmU6
OkNDUHJveHk6OnNldE1haW5UaHJlYWQoY3VycmVudFRocmVhZCgpKTsKKyNlbmRpZgorICAgIHNf
Y29tcG9zaXRvclN1cHBvcnQtPnNldENhbGxPbk1haW5UaHJlYWRGdW5jKGZ1bmMpOworfQorCit2
b2lkIHNodXRkb3duQ29tcG9zaXRvcigpCit7CisjaWZuZGVmIE5ERUJVRworICAgIFdlYkNvcmU6
OkNDUHJveHk6OnNldE1haW5UaHJlYWQoMCk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110615</attachid>
            <date>2011-10-11 17:25:15 -0700</date>
            <delta_ts>2011-10-11 22:34:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69048-20111011172513.patch</filename>
            <type>text/plain</type>
            <size>10038</size>
            <attacher name="Antoine Labour">piman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTcxMDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxNWM2NzgxMDI3YjBlMDVl
MmYyYWNmZGE0YWM4YTQyOTcyOWU3MDM3Li5mMDNiNzdlMjlkNGQyYThiZGYzMDkxMTEzNGJhZTc2
YzE2YWI1MjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMTAtMTEgIEFudG9p
bmUgTGFib3VyICA8cGltYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNlcGFyYXRlIGNvbXBv
c2l0b3IgY2xpZW50IHRocmVhZCBmcm9tIHdlYmtpdCdzIG1haW4gdGhyZWFkLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkwNDgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGNvbXBvc2l0
aW5nIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6Q0NM
YXllclRyZWVIb3N0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q01haW5UaHJlYWQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTWFpblRocmVhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcm94eTo6aXNNYWluVGhyZWFkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDUHJveHk6OnNldE1haW5UaHJlYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NQcm94eTo6Q0NQcm94eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQcm94eS5oOgorCiAyMDExLTEwLTEwICBOaWNvIFdlYmVyICA8dGhha2lzQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBQbHVnaW5Eb2N1bWVudFBhcnNlciB1c2VzIGluY29ycmVj
dCBzeW50YXggZm9yIGJhY2tncm91bmQgY29sb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwCmluZGV4IDI3YmFlYjk4OTgwMmEzYjI3ZGFjZTVjYzEyMzU1MWNhYjk5NDhiNTguLjM1YzU0
Mzg3OTA3YmViMDJkZDY5ZjcyOTZjYThlMjRkZmI2YWViMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlRyZWVTeW5jaHJvbml6
ZXIuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKICNpbmNsdWRlICJj
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCisjaW5jbHVkZSAiY2MvQ0NNYWluVGhyZWFkLmgiCiAj
aW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFk
LmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRQcm94eS5oIgpAQCAtNTYsNiArNTcsNyBAQCBDQ0xh
eWVyVHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVu
dCwgUGFzc1JlZlB0cjxMYXllcgogICAgICwgbV9zZXR0aW5ncyhzZXR0aW5ncykKICAgICAsIG1f
dmlzaWJsZSh0cnVlKQogeworICAgIENDTWFpblRocmVhZDo6aW5pdGlhbGl6ZSgpOwogICAgIEFT
U0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWFpblRocmVhZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ01haW5UaHJlYWQu
Y3BwCmluZGV4IGNkMzY4MTdlZGZjYjc5OTE2MmVlN2Y3MTY5ZWQ1YTAyZDczZTdkZDYuLjI3OWYw
NTYwOTk4ZWM2ZWU2MjRlYjIyNDM4MWYyZTU1NTBjMzNlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWFpblRocmVhZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYWluVGhy
ZWFkLmNwcApAQCAtMzgsOSArMzgsNCBAQCB2b2lkIENDTWFpblRocmVhZDo6cGVyZm9ybVRhc2so
dm9pZCogdXNlcmRhdGEpCiAgICAgZGVsZXRlIHRhc2s7CiB9CiAKLXZvaWQgQ0NNYWluVGhyZWFk
Ojpwb3N0VGFzayhQYXNzT3duUHRyPFRhc2s+IHRhc2spCi17Ci0gICAgY2FsbE9uTWFpblRocmVh
ZChwZXJmb3JtVGFzaywgdGFzay5sZWFrUHRyKCkpOwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ01haW5UaHJlYWQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWFpblRocmVh
ZC5oCmluZGV4IGNhOGU4YzFjMzlhZjZlZjNlYTViZmVkODQ5N2MyNDJhZmQ5ZjhhZTYuLjFhN2Mx
ODc4ZTAwYmI2MDI0OTkyYTk4NjMxZDE1MDMxMWNjMTYwZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWFpblRocmVhZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWFpblRocmVh
ZC5oCkBAIC00Myw2ICs0Myw3IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCogbV9pbnN0YW5jZTsK
ICAgICB9OwogCisgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpOwogICAgIHN0YXRpYyB2b2lk
IHBvc3RUYXNrKFBhc3NPd25QdHI8VGFzaz4pOyAvLyBFeGVjdXRlcyB0aGUgdGFzayBvbiBtYWlu
IHRocmVhZCBhc3luY2hyb25vdXNseS4KIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgcGVyZm9y
bVRhc2sodm9pZCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcAppbmRleCBiN2VjY2VjZDEwYTA4YjhlYmE4NzY1
ZjA4OThmZWIyZDMxMTFiMjhmLi5jNmVhNjA4NDE0MjkyMzhkNzgxMmY4ZDNmM2RkYWRhY2QyNDY3
NzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1Byb3h5LmNwcApAQCAtNDEsMTEgKzQxLDEyIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIG5hbWVzcGFjZSB7CiBib29sIGZha2VJbXBsVGhyZWFkID0gZmFsc2U7CiBzdGF0aWMg
V1RGOjpUaHJlYWRJZGVudGlmaWVyIGltcGxUaHJlYWRJRDsKK3N0YXRpYyBXVEY6OlRocmVhZElk
ZW50aWZpZXIgbWFpblRocmVhZElEOwogfQogCiBib29sIENDUHJveHk6OmlzTWFpblRocmVhZCgp
CiB7Ci0gICAgcmV0dXJuIDo6aXNNYWluVGhyZWFkKCkgJiYgIWZha2VJbXBsVGhyZWFkOworICAg
IHJldHVybiAhZmFrZUltcGxUaHJlYWQgJiYgY3VycmVudFRocmVhZCgpID09IG1haW5UaHJlYWRJ
RDsKIH0KIAogYm9vbCBDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKQpAQCAtNjMsNiArNjQsMTYgQEAg
dm9pZCBDQ1Byb3h5OjpzZXRJbXBsVGhyZWFkKFdURjo6VGhyZWFkSWRlbnRpZmllciBpZCkKICAg
ICBpbXBsVGhyZWFkSUQgPSBpZDsKIH0KIAordm9pZCBDQ1Byb3h5OjpzZXRNYWluVGhyZWFkKFdU
Rjo6VGhyZWFkSWRlbnRpZmllciBpZCkKK3sKKyAgICBtYWluVGhyZWFkSUQgPSBpZDsKK30KKwog
I2VuZGlmIC8vICFOREVCVUcKIAorQ0NQcm94eTo6Q0NQcm94eSgpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCmluZGV4IGRmYjc3YjNhOWFkNWMyZWQ5
ZmZlMTVmNDk5NTI1MjA1NmE3Mzk5NzYuLjMyODdjMTIxNTQzNTU5NzQ5ZGE1MGEzNDQ1ODZkYWQ5
OTg0ODUzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKQEAgLTg2LDEwICs4NiwxMSBAQCBwdWJsaWM6CiAjaWZu
ZGVmIE5ERUJVRwogICAgIHN0YXRpYyB2b2lkIHNldEltcGxUaHJlYWQoYm9vbCk7CiAgICAgc3Rh
dGljIHZvaWQgc2V0SW1wbFRocmVhZChXVEY6OlRocmVhZElkZW50aWZpZXIpOworICAgIHN0YXRp
YyB2b2lkIHNldE1haW5UaHJlYWQoV1RGOjpUaHJlYWRJZGVudGlmaWVyKTsKICNlbmRpZgogCiBw
cm90ZWN0ZWQ6Ci0gICAgQ0NQcm94eSgpIHsgfQorICAgIENDUHJveHkoKTsKICAgICBmcmllbmQg
Y2xhc3MgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwppbmRleCA4NmU5N2ZjMTdmMTZhZGM1Y2Q4ZjI1NWM3OTY0OGNhNmQ3NjhhNDFhLi5lMDNm
ZmExZGVkZjU5OWYzMWUzZTliNmM4MDYwMDJmZmYyYjY3NWM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTEwLTExICBBbnRvaW5lIExhYm91ciAgPHBp
bWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBTZXBhcmF0ZSBjb21wb3NpdG9yIGNsaWVudCB0
aHJlYWQgZnJvbSB3ZWJraXQncyBtYWluIHRocmVhZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MDQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9X
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0UGxhdGZvcm1T
dXBwb3J0OjpjdXJyZW50VGhyZWFkKToKKyAgICAgICAgKiBzcmMvQ0NNYWluVGhyZWFkSW1wbC5j
cHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpUYXNrV3JhcHBlcjo6VGFza1dyYXBwZXIpOgorICAg
ICAgICAoV1RGOjpUYXNrV3JhcHBlcjo6flRhc2tXcmFwcGVyKToKKyAgICAgICAgKFdURjo6VGFz
a1dyYXBwZXI6OnJ1bik6CisgICAgICAgIChXZWJDb3JlOjpDQ01haW5UaHJlYWQ6OmluaXRpYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NNYWluVGhyZWFkOjpwb3N0VGFzayk6CisKIDIwMTEt
MTAtMTAgIFNlcmdleSBHbGF6dW5vdiAgPHNlcmcuZ2xhenVub3ZAZ21haWwuY29tPgogCiAgICAg
ICAgIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwgZ2V0cyBjb25mdXNl
ZCBieSBzeW5jaHJvbm91cyBmcmFtZSBsb2FkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmlu
ZGV4IGNlNmUwZTE2NDQwNzY2ZDAwMWM5N2ZlNzI0MDkwYzkzNzZmNmQ3NDQuLjAwYjNmOWVmMjQ5
ZGE3YWEzMzVhMGY3NDYxYmUyZDBlMzVjNDk4ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAKQEAgLTMzOCw2ICszMzgsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvQmxvYlJlZ2lzdHJ5
UHJveHkuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9Cb3VuZE9iamVjdC5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvQm91bmRPYmplY3QuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9DQ01h
aW5UaHJlYWRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9DQ1RocmVhZEltcGwuY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL0NDVGhyZWFkSW1wbC5oJywKICAgICAgICAgICAgICAg
ICAnc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKaW5kZXggYjMzMTQ5OTM2Nzlj
NWY1YWIxZjZhYjNlYmYxNmY2ZWViYTNlMDBjOC4uNTBlMDc5ZGE4MjZiYzNiNDQxZjU3MjJkMjIx
NWY5ZGFkMDIyMTUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKQEAgLTE4Niw2ICsxODYsMTAgQEAgcHVibGljOgog
ICAgIC8vIENyZWF0ZXMgYW4gZW1iZWRkZXItZGVmaW5lZCB0aHJlYWQuCiAgICAgdmlydHVhbCBX
ZWJUaHJlYWQqIGNyZWF0ZVRocmVhZChjb25zdCBjaGFyKiBuYW1lKSB7IHJldHVybiAwOyB9CiAK
KyAgICAvLyBSZXR1cm5zIGFuIGludGVyZmFjZSB0byB0aGUgY3VycmVudCB0aHJlYWQuIFRoaXMg
aXMgb3duZWQgYnkgdGhlCisgICAgLy8gZW1iZWRkZXIuCisgICAgdmlydHVhbCBXZWJUaHJlYWQq
IGN1cnJlbnRUaHJlYWQoKSB7IHJldHVybiAwOyB9CisKIAogICAgIC8vIE1lc3NhZ2UgUG9ydHMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DQ01haW5UaHJlYWRJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NDTWFpblRocmVhZEltcGwuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmY4ZWMxMzIyOTc4YjY1ODE5MGNhZGIyMDM2MjgwMmNhODlhM2Y2NWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DQ01haW5UaHJlYWRJbXBs
LmNwcApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgImNjL0NDTWFpblRocmVhZC5oIgorCisjaW5jbHVkZSAiV2ViS2l0LmgiCisjaW5jbHVkZSAi
V2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCisjaW5jbHVkZSAiV2ViVGhyZWFkLmgiCisjaW5jbHVk
ZSAiY2MvQ0NQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8
d3RmL093blB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV1RGOworCituYW1lc3BhY2UgeworCiti
b29sIHNfaW5pdGlhbGl6ZWRUaHJlYWQgPSBmYWxzZTsKK1dlYktpdDo6V2ViVGhyZWFkKiBzX2Ns
aWVudFRocmVhZCA9IDA7CisKK2NsYXNzIFRhc2tXcmFwcGVyIDogcHVibGljIFdlYktpdDo6V2Vi
VGhyZWFkOjpUYXNrIHsKK3B1YmxpYzoKKyAgICBUYXNrV3JhcHBlcihQYXNzT3duUHRyPFdlYkNv
cmU6OkNDTWFpblRocmVhZDo6VGFzaz4gdGFzaykgOiBtX3Rhc2sodGFzaykgeyB9CisgICAgdmly
dHVhbCB+VGFza1dyYXBwZXIoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBydW4oKQorICAgIHsK
KyAgICAgICAgbV90YXNrLT5wZXJmb3JtVGFzaygpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBP
d25QdHI8V2ViQ29yZTo6Q0NNYWluVGhyZWFkOjpUYXNrPiBtX3Rhc2s7Cit9OworCit9IC8vIGFu
b255bW91cyBuYW1lc3BhY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIENDTWFpblRo
cmVhZDo6aW5pdGlhbGl6ZSgpCit7CisgICAgaWYgKHNfaW5pdGlhbGl6ZWRUaHJlYWQpCisgICAg
ICAgIHJldHVybjsKKyAgICBBU1NFUlQoV2ViS2l0Ojp3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKSk7
CisjaWZuZGVmIE5ERUJVRworICAgIFdlYkNvcmU6OkNDUHJveHk6OnNldE1haW5UaHJlYWQoY3Vy
cmVudFRocmVhZCgpKTsKKyNlbmRpZgorICAgIHNfY2xpZW50VGhyZWFkID0gV2ViS2l0Ojp3ZWJL
aXRQbGF0Zm9ybVN1cHBvcnQoKS0+Y3VycmVudFRocmVhZCgpOworICAgIHNfaW5pdGlhbGl6ZWRU
aHJlYWQgPSB0cnVlOworfQorCit2b2lkIENDTWFpblRocmVhZDo6cG9zdFRhc2soUGFzc093blB0
cjxUYXNrPiB0YXNrKQoreworICAgIEFTU0VSVChzX2luaXRpYWxpemVkVGhyZWFkKTsKKyAgICBp
ZiAoc19jbGllbnRUaHJlYWQpCisgICAgICAgIHNfY2xpZW50VGhyZWFkLT5wb3N0VGFzayhuZXcg
VGFza1dyYXBwZXIodGFzaykpOworICAgIGVsc2UKKyAgICAgICAgV1RGOjpjYWxsT25NYWluVGhy
ZWFkKHBlcmZvcm1UYXNrLCB0YXNrLmxlYWtQdHIoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>