<?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>206043</bug_id>
          
          <creation_ts>2020-01-09 17:26:25 -0800</creation_ts>
          <short_desc>[Media in GPU process] Implement the remote video layer support</short_desc>
          <delta_ts>2020-01-14 19:15:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>205123</blocked>
    
    <blocked>206132</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Peng Liu">peng.liu6</reporter>
          <assigned_to name="Peng Liu">peng.liu6</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1604946</commentid>
    <comment_count>0</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-01-09 17:26:25 -0800</bug_when>
    <thetext>[Media in GPU process] Implement the remote video layer support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604989</commentid>
    <comment_count>1</comment_count>
      <attachid>387309</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-01-09 19:24:51 -0800</bug_when>
    <thetext>Created attachment 387309
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605048</commentid>
    <comment_count>2</comment_count>
      <attachid>387309</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-10 03:23:01 -0800</bug_when>
    <thetext>Comment on attachment 387309
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        [Media in GPU process] Implement the remote video layer support

There are some Mac-wk2 test failures that might need to be investigated.

&gt; Source/WebCore/platform/graphics/cocoa/WebCoreCALayerExtras.mm:91
&gt; +CALayer* CreateWebRenderLayer(uint32_t contextID)

WebKit defines a LayerHostingContextID type, maybe we should type it?
Maybe we could use an ObjectIdentifier.

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:62
&gt; +    m_layerHostingContext = LayerHostingContext::createForExternalHostingProcess();

Is it expensive to create?
Should we lazily initialise it? In prepareForPlayBack?

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:376
&gt; +    m_player-&gt;setSize(m_videoSize);

Why do we need to set again m_videoSize? Is m_player losing this information somehow?

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h:31
&gt; +#include &quot;LayerHostingContext.h&quot;

We can probably forward declare LayerHostingContext instead.

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h:74
&gt; +    void seekWithTolerance(MediaTime&amp;&amp;, MediaTime&amp;&amp;, MediaTime&amp;&amp;);

The names seem useful since we have 3 values with the same type.

&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:103
&gt; +        m_configuration = configuration;

WTFMove()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605207</commentid>
    <comment_count>3</comment_count>
      <attachid>387309</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-01-10 11:06:10 -0800</bug_when>
    <thetext>Comment on attachment 387309
Patch

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

&gt; Source/WebCore/platform/graphics/cocoa/CreateWebRenderLayer.h:30
&gt; +WEBCORE_EXPORT CALayer* CreateWebRenderLayer(uint32_t contextID);

This file has a weird name; we don&apos;t usually make files to expose a single function. Also functions should not have an initial capital letter. Also, &quot;Create&quot; in Objective-C means that the function returns a retained object, but that&apos;s not the case here.

Maybe make a C++ class called WebRenderLayerFactory and give it a single static method.

&gt; Source/WebCore/platform/graphics/cocoa/WebCoreCALayerExtras.mm:93
&gt; +    return [CALayer _web_renderLayerWithContextID: contextID];

No space after :

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h:62
&gt; +    void prepareForPlayback(bool, WebCore::MediaPlayerEnums::Preload, bool, bool, CompletionHandler&lt;void(uint32_t contextId)&gt;&amp;&amp;);

Keep the parameter names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605210</commentid>
    <comment_count>4</comment_count>
      <attachid>387309</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-01-10 11:21:43 -0800</bug_when>
    <thetext>Comment on attachment 387309
Patch

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

&gt; Source/WebKit/Platform/mac/LayerHostingContext.h:68
&gt; +    CALayer* rootLayer() const;

Nit - it should be &quot;CALayer *&quot; instead of &quot;CALayer*&quot;, since CALayer is an Objective-C class (the style guidelines are a bit vague, but I think this is generally the rule we follow in WebKit).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605211</commentid>
    <comment_count>5</comment_count>
      <attachid>387309</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-01-10 11:30:11 -0800</bug_when>
    <thetext>Comment on attachment 387309
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/cocoa/CreateWebRenderLayer.h:30
&gt;&gt; +WEBCORE_EXPORT CALayer* CreateWebRenderLayer(uint32_t contextID);
&gt; 
&gt; This file has a weird name; we don&apos;t usually make files to expose a single function. Also functions should not have an initial capital letter. Also, &quot;Create&quot; in Objective-C means that the function returns a retained object, but that&apos;s not the case here.
&gt; 
&gt; Maybe make a C++ class called WebRenderLayerFactory and give it a single static method.

&quot;WebRenderLayer&quot; is not a great name either given what RenderLayer is. I think this perhaps goes somewhere like PlatformCALayer (maybe not exactly there since it returns a raw layer) as a static method, and is called something like createPlatformLayerForHostingContext(LayerHostingContextID contextID)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605509</commentid>
    <comment_count>6</comment_count>
      <attachid>387428</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-01-11 00:54:31 -0800</bug_when>
    <thetext>Created attachment 387428
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605510</commentid>
    <comment_count>7</comment_count>
      <attachid>387429</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-01-11 01:01:34 -0800</bug_when>
    <thetext>Created attachment 387429
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605543</commentid>
    <comment_count>8</comment_count>
      <attachid>387309</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-01-11 11:29:49 -0800</bug_when>
    <thetext>Comment on attachment 387309
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:3
&gt;&gt; +        [Media in GPU process] Implement the remote video layer support
&gt; 
&gt; There are some Mac-wk2 test failures that might need to be investigated.

Yes. I debugged the failures and found they are related to my implementation of MediaPlayerPrivateAVFoundationObjC::setSize(). I will remove MediaPlayerPrivateAVFoundationObjC::setSize(). The reasons are described in a comment below.

&gt;&gt;&gt; Source/WebCore/platform/graphics/cocoa/CreateWebRenderLayer.h:30
&gt;&gt;&gt; +WEBCORE_EXPORT CALayer* CreateWebRenderLayer(uint32_t contextID);
&gt;&gt; 
&gt;&gt; This file has a weird name; we don&apos;t usually make files to expose a single function. Also functions should not have an initial capital letter. Also, &quot;Create&quot; in Objective-C means that the function returns a retained object, but that&apos;s not the case here.
&gt;&gt; 
&gt;&gt; Maybe make a C++ class called WebRenderLayerFactory and give it a single static method.
&gt; 
&gt; &quot;WebRenderLayer&quot; is not a great name either given what RenderLayer is. I think this perhaps goes somewhere like PlatformCALayer (maybe not exactly there since it returns a raw layer) as a static method, and is called something like createPlatformLayerForHostingContext(LayerHostingContextID contextID)

Good suggestions! I changed the function name to be createPlatformLayerForHostingContext() and put it in LayerHostingContext as a static function.

&gt;&gt; Source/WebCore/platform/graphics/cocoa/WebCoreCALayerExtras.mm:91
&gt;&gt; +CALayer* CreateWebRenderLayer(uint32_t contextID)
&gt; 
&gt; WebKit defines a LayerHostingContextID type, maybe we should type it?
&gt; Maybe we could use an ObjectIdentifier.

Fixed.

&gt;&gt; Source/WebCore/platform/graphics/cocoa/WebCoreCALayerExtras.mm:93
&gt;&gt; +    return [CALayer _web_renderLayerWithContextID: contextID];
&gt; 
&gt; No space after :

Fixed.

&gt;&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:62
&gt;&gt; +    m_layerHostingContext = LayerHostingContext::createForExternalHostingProcess();
&gt; 
&gt; Is it expensive to create?
&gt; Should we lazily initialise it? In prepareForPlayBack?

Moved to prepareForPlayback.

&gt;&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:376
&gt;&gt; +    m_player-&gt;setSize(m_videoSize);
&gt; 
&gt; Why do we need to set again m_videoSize? Is m_player losing this information somehow?

When the setSize() function is called, the video layer might not be ready yet, so we need to save the size and use it when the video layer is ready. However, I realized that is not a good idea. The MediaPlayerPrivateAVFoundationObjc::setSize() is an empty function when the GPU Process is not enabled. We had better keep that behavior, so that we do not need to change the behavior of RenderVideo for the &quot;media in GPU&quot; feature. In addition, providing an empty setSize() function in MediaPlayerPrivateRemote can get rid of the meaningless XPC messages.

In the new patch, the setSize() function in RemoteMediaPlayerProxy and also MediaPlayerPrivateAVFoundationObjC are removed.
Also, the new patch implements RemoteMediaPlayerProxy::mediaPlayerContentBoxRect() to provide location and size information for the WebVideoContainerLayer when it  creates a video layer.

&gt;&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h:31
&gt;&gt; +#include &quot;LayerHostingContext.h&quot;
&gt; 
&gt; We can probably forward declare LayerHostingContext instead.

Fixed.

&gt;&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h:62
&gt;&gt; +    void prepareForPlayback(bool, WebCore::MediaPlayerEnums::Preload, bool, bool, CompletionHandler&lt;void(uint32_t contextId)&gt;&amp;&amp;);
&gt; 
&gt; Keep the parameter names.

Fixed.

&gt;&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h:74
&gt;&gt; +    void seekWithTolerance(MediaTime&amp;&amp;, MediaTime&amp;&amp;, MediaTime&amp;&amp;);
&gt; 
&gt; The names seem useful since we have 3 values with the same type.

Fixed.

&gt;&gt; Source/WebKit/Platform/mac/LayerHostingContext.h:68
&gt;&gt; +    CALayer* rootLayer() const;
&gt; 
&gt; Nit - it should be &quot;CALayer *&quot; instead of &quot;CALayer*&quot;, since CALayer is an Objective-C class (the style guidelines are a bit vague, but I think this is generally the rule we follow in WebKit).

Got it, fixed.

&gt;&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:103
&gt;&gt; +        m_configuration = configuration;
&gt; 
&gt; WTFMove()

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605544</commentid>
    <comment_count>9</comment_count>
      <attachid>387438</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-01-11 11:40:05 -0800</bug_when>
    <thetext>Created attachment 387438
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605546</commentid>
    <comment_count>10</comment_count>
      <attachid>387438</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-01-11 11:48:48 -0800</bug_when>
    <thetext>Comment on attachment 387438
Patch

With this patch, the video element can render video, but the size and location information may be incorrect because the RenderVideo is not able to manage the sublayers of WebVideoContainerLayer through the WebVideoHostingLayer. This issue will be fixed in webkit.org/b/206132.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605547</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-11 11:49:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/58505616&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605566</commentid>
    <comment_count>12</comment_count>
      <attachid>387446</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-01-11 14:04:50 -0800</bug_when>
    <thetext>Created attachment 387446
Patch (update changelogs and fix unified build failures)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605761</commentid>
    <comment_count>13</comment_count>
      <attachid>387446</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-13 01:26:20 -0800</bug_when>
    <thetext>Comment on attachment 387446
Patch (update changelogs and fix unified build failures)

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

&gt; Source/WebCore/platform/graphics/cv/ImageTransferSessionVT.mm:36
&gt; +#import &quot;CoreVideoSoftLink.h&quot;

We usually add a line between SoftLink headers and others.

&gt; Source/WebCore/platform/graphics/gpu/GPUSwapChainDescriptor.h:31
&gt; +#include &quot;GPUErrorScopes.h&quot;

If it is a unified build issue, we usually fix this in cpp files, not. h files.

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:201
&gt; +void RemoteMediaPlayerManagerProxy::prepareForPlayback(MediaPlayerPrivateRemoteIdentifier id, bool privateMode, WebCore::MediaPlayerEnums::Preload preload, bool preservesPitch, bool prepareForRendering, WebCore::LayoutPoint&amp;&amp; layoutPoint, WebCore::LayoutSize&amp;&amp; layoutSize, float videoContentScale, CompletionHandler&lt;void(LayerHostingContextID contextId)&gt;&amp;&amp; completionHandler)

Probably do not need to have &amp;&amp;, we could probably pass them by value.

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:203
&gt;      if (auto player = m_proxies.get(id))

It would be better to call completionHandler even if there is no player.
Maybe contextId should be an Optional&lt;&gt;?

Maybe ASSERT(m_proxies.contains(id));

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.h:31
&gt; +#include &quot;LayerHostingContext.h&quot;

Forward declare LayerHostingContextID?

&gt; Source/WebKit/Platform/cocoa/LayerHostingContext.h:28
&gt; +#include &quot;LayerTreeContext.h&quot;

Do we need this one?

&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:96
&gt; +        m_layerHostingContextId = contextId;

m_layerHostingContextId does not seem used anywhere.

&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:97
&gt; +        m_videoLayer = LayerHostingContext::createPlatformLayerForHostingContext(contextId);

contextId here can be 0, is it ok.
If we are using an ObjectIdentifier, we are sure this will not be 0.

&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h:303
&gt; +    uint32_t m_layerHostingContextId  { 0 };

Can we use an ObjectIdentifier&lt;&gt;?

&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:308
&gt; +    if (auto player = m_players.get(id))

s/auto/auto&amp;/?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605942</commentid>
    <comment_count>14</comment_count>
      <attachid>387446</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-01-13 10:58:42 -0800</bug_when>
    <thetext>Comment on attachment 387446
Patch (update changelogs and fix unified build failures)

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

&gt;&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:201
&gt;&gt; +void RemoteMediaPlayerManagerProxy::prepareForPlayback(MediaPlayerPrivateRemoteIdentifier id, bool privateMode, WebCore::MediaPlayerEnums::Preload preload, bool preservesPitch, bool prepareForRendering, WebCore::LayoutPoint&amp;&amp; layoutPoint, WebCore::LayoutSize&amp;&amp; layoutSize, float videoContentScale, CompletionHandler&lt;void(LayerHostingContextID contextId)&gt;&amp;&amp; completionHandler)
&gt; 
&gt; Probably do not need to have &amp;&amp;, we could probably pass them by value.

Also if you&apos;re sending point and size, why not just send the rect?

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.messages.in:38
&gt; +    PrepareForPlayback(WebKit::MediaPlayerPrivateRemoteIdentifier id, bool privateMode, enum:uint8_t WebCore::MediaPlayerEnums::Preload preload, bool preservesPitch, bool prepareForRendering, WebCore::LayoutPoint layoutPoint, WebCore::LayoutSize layoutSize, float videoContentScale) -&gt; (WebKit::LayerHostingContextID layerHostingContextId) Async

Don&apos;t use &apos;id&apos; (it&apos;s a reserved word in Objective-C).

&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:306
&gt; +void RemoteMediaPlayerManager::firstVideoFrameAvailable(WebKit::MediaPlayerPrivateRemoteIdentifier id)

Don&apos;t use &apos;id&apos; as a parameter or variable name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606084</commentid>
    <comment_count>15</comment_count>
      <attachid>387446</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-01-13 15:23:11 -0800</bug_when>
    <thetext>Comment on attachment 387446
Patch (update changelogs and fix unified build failures)

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

&gt;&gt; Source/WebCore/platform/graphics/cv/ImageTransferSessionVT.mm:36
&gt;&gt; +#import &quot;CoreVideoSoftLink.h&quot;
&gt; 
&gt; We usually add a line between SoftLink headers and others.

Fixed.

&gt;&gt; Source/WebCore/platform/graphics/gpu/GPUSwapChainDescriptor.h:31
&gt;&gt; +#include &quot;GPUErrorScopes.h&quot;
&gt; 
&gt; If it is a unified build issue, we usually fix this in cpp files, not. h files.

This change turns out to be unnecessary, so I removed it.

&gt;&gt;&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:201
&gt;&gt;&gt; +void RemoteMediaPlayerManagerProxy::prepareForPlayback(MediaPlayerPrivateRemoteIdentifier id, bool privateMode, WebCore::MediaPlayerEnums::Preload preload, bool preservesPitch, bool prepareForRendering, WebCore::LayoutPoint&amp;&amp; layoutPoint, WebCore::LayoutSize&amp;&amp; layoutSize, float videoContentScale, CompletionHandler&lt;void(LayerHostingContextID contextId)&gt;&amp;&amp; completionHandler)
&gt;&gt; 
&gt;&gt; Probably do not need to have &amp;&amp;, we could probably pass them by value.
&gt; 
&gt; Also if you&apos;re sending point and size, why not just send the rect?

There is no encode() or decode() for LayoutRect, so I used LayoutPoint and LayoutSize() instead. I will implement the encode() and decode() for LayoutRect in the updated patch and use LayoutRect (pass by value) as the function parameter.

&gt;&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:203
&gt;&gt;      if (auto player = m_proxies.get(id))
&gt; 
&gt; It would be better to call completionHandler even if there is no player.
&gt; Maybe contextId should be an Optional&lt;&gt;?
&gt; 
&gt; Maybe ASSERT(m_proxies.contains(id));

This is a good idea. I changed the contextId to be an Optional&lt;&gt;, and call the completionHandler witthout a contextId when there is no player.

&gt;&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.h:31
&gt;&gt; +#include &quot;LayerHostingContext.h&quot;
&gt; 
&gt; Forward declare LayerHostingContextID?

Fixed.

&gt;&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.messages.in:38
&gt;&gt; +    PrepareForPlayback(WebKit::MediaPlayerPrivateRemoteIdentifier id, bool privateMode, enum:uint8_t WebCore::MediaPlayerEnums::Preload preload, bool preservesPitch, bool prepareForRendering, WebCore::LayoutPoint layoutPoint, WebCore::LayoutSize layoutSize, float videoContentScale) -&gt; (WebKit::LayerHostingContextID layerHostingContextId) Async
&gt; 
&gt; Don&apos;t use &apos;id&apos; (it&apos;s a reserved word in Objective-C).

I see. Will fix it in webkit.org/b/206189.

&gt;&gt; Source/WebKit/Platform/cocoa/LayerHostingContext.h:28
&gt;&gt; +#include &quot;LayerTreeContext.h&quot;
&gt; 
&gt; Do we need this one?

Yes, it defines LayerHostingMode.

I replaced it with a forward declaration. And I have to include LayerTreeContext.h in PluginControllerProxyMac.mm and NetscapePlugin.cpp because of the change.

&gt;&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:96
&gt;&gt; +        m_layerHostingContextId = contextId;
&gt; 
&gt; m_layerHostingContextId does not seem used anywhere.

Right, it does not need to be a member variable.

&gt;&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:97
&gt;&gt; +        m_videoLayer = LayerHostingContext::createPlatformLayerForHostingContext(contextId);
&gt; 
&gt; contextId here can be 0, is it ok.
&gt; If we are using an ObjectIdentifier, we are sure this will not be 0.

After removing m_layerHostingContextId, we will use the valid value return from the GPU Process.

&gt;&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h:303
&gt;&gt; +    uint32_t m_layerHostingContextId  { 0 };
&gt; 
&gt; Can we use an ObjectIdentifier&lt;&gt;?

Yes, we can. But I think keeping the data type consistent with other places using LayerHostingContextID is a good idea.

&gt;&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:306
&gt;&gt; +void RemoteMediaPlayerManager::firstVideoFrameAvailable(WebKit::MediaPlayerPrivateRemoteIdentifier id)
&gt; 
&gt; Don&apos;t use &apos;id&apos; as a parameter or variable name.

Will fix it in webkit.org/b/206189.

&gt;&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:308
&gt;&gt; +    if (auto player = m_players.get(id))
&gt; 
&gt; s/auto/auto&amp;/?

Changed to const auto&amp;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606092</commentid>
    <comment_count>16</comment_count>
      <attachid>387579</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-01-13 15:33:11 -0800</bug_when>
    <thetext>Created attachment 387579
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606155</commentid>
    <comment_count>17</comment_count>
      <attachid>387597</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-01-13 17:20:24 -0800</bug_when>
    <thetext>Created attachment 387597
Rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606295</commentid>
    <comment_count>18</comment_count>
      <attachid>387597</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-14 01:02:24 -0800</bug_when>
    <thetext>Comment on attachment 387597
Rebased patch

Rejecting attachment 387597 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=release&apos;, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 5000 characters of output:
DENABLE_INSPECTOR_TELEMETRY -DENABLE_INTERSECTION_OBSERVER -DENABLE_INTL -DENABLE_LAYOUT_FORMATTING_CONTEXT -DENABLE_LEGACY_CSS_VENDOR_PREFIXES -DENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER -DENABLE_LEGACY_ENCRYPTED_MEDIA -DENABLE_MATHML -DENABLE_MEDIA_CONTROLS_SCRIPT -DENABLE_MEDIA_SOURCE -DENABLE_MEDIA_STREAM -DENABLE_MEMORY_SAMPLER -DENABLE_METER_ELEMENT -DENABLE_MOUSE_CURSOR_SCALE -DENABLE_NETWORK_CACHE_SPECULATIVE_REVALIDATION -DENABLE_NOTIFICATIONS -DENABLE_PAYMENT_REQUEST -DENABLE_PDFKIT_PLUGIN -DENABLE_POINTER_EVENTS -DENABLE_POINTER_LOCK -DENABLE_PUBLIC_SUFFIX_LIST -DENABLE_REMOTE_INSPECTOR -DENABLE_RESIZE_OBSERVER -DENABLE_RESOURCE_LOAD_STATISTICS -DENABLE_RESOURCE_USAGE -DENABLE_RUBBER_BANDING -DENABLE_SANDBOX_EXTENSIONS -DENABLE_SERVER_PRECONNECT -DENABLE_SERVICE_CONTROLS -DENABLE_SERVICE_WORKER -DENABLE_SHAREABLE_RESOURCE -DENABLE_SPEECH_SYNTHESIS -DENABLE_STREAMS_API -DENABLE_SVG_FONTS -DENABLE_TELEPHONE_NUMBER_DETECTION -DENABLE_TEXT_AUTOSIZING -DENABLE_USERSELECT_ALL -DENABLE_USER_MESSAGE_HANDLERS -DENABLE_VARIATION_FONTS -DENABLE_VIDEO -DENABLE_VIDEO_PRESENTATION_MODE -DENABLE_VIDEO_TRACK -DENABLE_VIDEO_USES_ELEMENT_FULLSCREEN -DENABLE_WEBDRIVER_MOUSE_INTERACTIONS -DENABLE_WEBDRIVER_KEYBOARD_INTERACTIONS -DENABLE_WEBGL -DENABLE_WEBGL2 -DENABLE_WEBGPU -DENABLE_WEB_AUDIO -DENABLE_WEB_AUTHN -DENABLE_WEB_CRYPTO -DENABLE_WEB_RTC -DENABLE_WIRELESS_PLAYBACK_TARGET -DENABLE_XSLT -DHAVE_CORE_PREDICTION -DU_HIDE_DEPRECATED_API -DU_DISABLE_RENAMING=1 -DU_SHOW_CPLUSPLUS_API=0 -DFRAMEWORK_NAME=WebKit -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -fasm-blocks -fstrict-aliasing -Wdeprecated-declarations -Winvalid-offsetof -mmacosx-version-min=10.14 -g -fvisibility=hidden -fvisibility-inlines-hidden -fno-threadsafe-statics -Wno-sign-conversion -Winfinite-recursion -Wmove -Wcomma -Wblock-capture-autoreleasing -Wstrict-prototypes -Wrange-loop-analysis -Wno-semicolon-before-method-body -iquote /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/WebKit-generated-files.hmap -I/Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/WebKit-own-target-headers.hmap -I/Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/WebKit-all-target-headers.hmap -iquote /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/WebKit-project-headers.hmap -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/include -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/WebCore.framework/PrivateHeaders/ForwardingHeaders -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebKit2 -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include/WebKitAdditions -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/local/include/WebKitAdditions -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include/webrtc -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/local/include/webrtc -I/Volumes/Data/EWS/WebKit/Source/WebKit -I/Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/DerivedSources-normal/x86_64 -I/Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/DerivedSources/x86_64 -I/Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/DerivedSources -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wextra-tokens -Wformat-security -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wno-unused-parameter -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough -F/Volumes/Data/EWS/WebKit/WebKitBuild/Release -iframework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/PrivateFrameworks -iframework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks -iframework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/PrivateFrameworks -isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/System.framework/PrivateHeaders -include /Volumes/Data/EWS/WebKit/WebKitBuild/PrecompiledHeaders/WebKit2Prefix-fznpdzohnkiztteqyhyuitpillqx/WebKit2Prefix.h -MMD -MT dependencies -MF /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/Objects-normal/x86_64/UnifiedSource9.d --serialize-diagnostics /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/Objects-normal/x86_64/UnifiedSource9.dia -c /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebKit2/unified-sources/UnifiedSource9.cpp -o /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/Objects-normal/x86_64/UnifiedSource9.o

Full output: https://webkit-queues.webkit.org/results/13303867</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606496</commentid>
    <comment_count>19</comment_count>
      <attachid>387680</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-01-14 11:40:22 -0800</bug_when>
    <thetext>Created attachment 387680
Rebased patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606631</commentid>
    <comment_count>20</comment_count>
      <attachid>387712</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-01-14 15:20:50 -0800</bug_when>
    <thetext>Created attachment 387712
Rebased patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606757</commentid>
    <comment_count>21</comment_count>
      <attachid>387712</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-14 18:51:26 -0800</bug_when>
    <thetext>Comment on attachment 387712
Rebased patch for landing

Clearing flags on attachment: 387712

Committed r254555: &lt;https://trac.webkit.org/changeset/254555&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387309</attachid>
            <date>2020-01-09 19:24:51 -0800</date>
            <delta_ts>2020-01-11 00:54:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206043-20200109192450.patch</filename>
            <type>text/plain</type>
            <size>32207</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjAyNjQzYjFlMWI3MTZk
Mjg1ZDJkMjMyNjdjZjVjYTI2NTVjMzcwNy4uMTM4ZmVjZWM3ODQ1MTAxNTIwYzBlNThjNTljZGMz
OGE1ZTU2OTA1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTAxLTA5ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBwcm9j
ZXNzXSBJbXBsZW1lbnQgdGhlIHJlbW90ZSB2aWRlbyBsYXllciBzdXBwb3J0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwNDMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRo
ZSBzZXRTaXplKCkgKHZpcnR1YWwpIGZ1bmN0aW9uIGluIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMKKyAgICAgICAgdG8gY29uZmlnIHRoZSBXZWJWaWRlb0NvbnRhaW5lckxheWVy
LgorICAgICAgICBBbHNvLCBpdCBhZGRzIGZ1bmN0aW9uIENyZWF0ZVdlYlJlbmRlckxheWVyKCkg
d2hpY2ggaXMgYSB3cmFwcGVyIG9mIFtDQUxheWVyIF93ZWJfcmVuZGVyTGF5ZXJXaXRoQ29udGV4
dElEOl0sCisgICAgICAgIHNvIHRoYXQgd2UgY2FuIGNyZWF0ZSBhIHJlbmRlciBsYXllciBpbiBj
KysgY29kZS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNl
dFNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NyZWF0ZVdlYlJlbmRl
ckxheWVyLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNv
cmVDQUxheWVyRXh0cmFzLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q3JlYXRlV2ViUmVuZGVyTGF5
ZXIpOgorCiAyMDIwLTAxLTA5ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgogCiAgICAgICAgIFRleHQgbWFuaXB1bGF0aW9uIGNvbnRyb2xsZXIgc2hvdWxkIG5vdCBvYnNl
cnZlIGNoYW5nZXMgaW4gbmV3IHJlcGxhY2VtZW50IGVsZW1lbnRzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM3MmQz
ZmNlNjk3OWEyMjFhY2U0ZjYzZTNmNzFmYTJkNTViMGU3MTAuLjc0M2NiZTg5MDZmNDg2YzhkNjNj
MDNiZTI0YjliYTRmOTlmMjJhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjAtMDEt
MDkgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWEgaW4g
R1BVIHByb2Nlc3NdIEltcGxlbWVudCB0aGUgcmVtb3RlIHZpZGVvIGxheWVyIHN1cHBvcnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjA0MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW90ZU1lZGlh
UGxheWVyUHJveHkgaW4gdGhlIEdQVSBwcm9jZXNzIGNyZWF0ZXMgYSBMYXllckhvc3RpbmdDb250
ZXh0IHdpdGggY3JlYXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2VzcygpCisgICAgICAgIGFuZCBz
aGFyZSB0aGUgY29udGV4dCBJRCB3aXRoIHRoZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUgaW4g
dGhlIFdlYiBwcm9jZXNzLgorICAgICAgICBUaGVuIHRoZSBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGUgY3JlYXRlcyBhIENBTGF5ZXIgd2l0aCB0aGUgY29udGV4dCBJRCBmb3IgcmVuZGVyaW5nLgor
ICAgICAgICBUaGlzIHBhdGNoIGFsc28gYWRkcyBuZWNlc3NhcnkgWFBDIG1lc3NhZ2VzIHRvIG1h
a2Ugc3VyZSB0aGUgcmVuZGVyaW5nIHdvcmsgcHJvcGVybHkuCisKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnByZXBhcmVGb3JQbGF5YmFjayk6
CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94
eTo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyUHJveHk6OnByZXBhcmVGb3JQbGF5YmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhUGxheWVyUHJveHk6OnNldFNpemUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllclByb3h5OjptZWRpYVBsYXllckZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyUmVuZGVyaW5n
TW9kZUNoYW5nZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5oOgorICAgICAgICAqIFBsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwcmVwYXJl
Rm9yUGxheWJhY2spOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6Zmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaXplKToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmZpcnN0Vmlk
ZW9GcmFtZUF2YWlsYWJsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluOgorCiAyMDIwLTAxLTA5ICBUaW0gSG9y
dG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IFRBUkdFVF9P
U19NQUNDQVRBTFlTVCBpbiBtb3JlIHBsYWNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZlMjhiNTdkYzc0NGM5ODJlYWU3MTAx
YTYyMmJiMTc5MGJjOWZiNzIuLjU2NTVlMTkyNzQ4NDBiMjA5MmU0Y2IyM2U0MGRiOGU0MTUyZDg1
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTYzNCw2ICs2MzQsNyBAQAogCQkxRDJGOEUwNDIzNDQ3NTE2MDA5OTNCNjggLyog
RW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFERUYwNkNBMjMzQzNEMEIwMEVFMjI4RCAvKiBFbnRlclBpY3R1
cmVJblBpY3R1cmVFdmVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTFEMkY4RTA1MjM0NDc1MUQwMDk5M0I2OCAvKiBIVE1MVmlkZW9FbGVtZW50
UGljdHVyZUluUGljdHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMURFRjA2Q0MyMzNDM0QyMDAwRUUyMjhEIC8qIEhUTUxWaWRlb0VsZW1lbnRQaWN0
dXJlSW5QaWN0dXJlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMUQyRjhFMDYyMzQ0NzUyMzAwOTkzQjY4IC8qIFBpY3R1cmVJblBpY3R1cmVXaW5k
b3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFERUYw
NkNEMjMzQzNEMkEwMEVFMjI4RCAvKiBQaWN0dXJlSW5QaWN0dXJlV2luZG93LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMUQ3QzJBRDkyM0M0MkFB
NDAwMUMwRDEyIC8qIENyZWF0ZVdlYlJlbmRlckxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRDdDMkFENzIzQzQyOUExMDAxQzBEMTIgLyogQ3Jl
YXRlV2ViUmVuZGVyTGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkxRDlGMEZDMTIxMjIwMjlCMDA1RDhGRDQgLyogU2hhcmVEYXRhLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxREM1NTQwMDIxMUJB
OEM4MDA0Qjc4MEUgLyogU2hhcmVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMURCQzFCNTYyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJ
blBpY3R1cmVPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMURCQzFCNTUyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVPYnNl
cnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTFGMzZFQTlDMUUyMUJBMTcwMDYyMUUyNSAvKiBXZWJCYWNrZ3JvdW5kVGFza0NvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGMzZFQTlB
MUUyMUJBMTcwMDYyMUUyNSAvKiBXZWJCYWNrZ3JvdW5kVGFza0NvbnRyb2xsZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjUwOCw2ICs2NTA5
LDcgQEAKIAkJMUQwMDI2QTgyMzc0RjlEOTAwQ0E2Q0RGIC8qIEpTRW50ZXJQaWN0dXJlSW5QaWN0
dXJlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFbnRlclBpY3R1
cmVJblBpY3R1cmVFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRDAwMjZB
OTIzNzRGOUQ5MDBDQTZDREYgLyogSlNFbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0VudGVyUGljdHVyZUluUGljdHVy
ZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUQyQzgyQjYyMzZBM0Y2
QTAwNTVENkM1IC8qIFBpY3R1cmVJblBpY3R1cmVTdXBwb3J0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBp
Y3R1cmVJblBpY3R1cmVTdXBwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFE
N0MyQUQ3MjNDNDI5QTEwMDFDMEQxMiAvKiBDcmVhdGVXZWJSZW5kZXJMYXllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDcmVhdGVXZWJSZW5kZXJMYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxREJDMUI1NTIzNDdCM0QyMDBCOTAxQUYgLyogUGljdHVyZUluUGljdHVyZU9ic2VydmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxREM1NTNGRDIxMUJBMTJBMDA0Qjc4MEUgLyogTmF2aWdhdG9y
U2hhcmUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5hdmlnYXRvclNoYXJlLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMURDNTUzRkYyMTFCQTg0MTAwNEI3ODBFIC8qIFNo
YXJlRGF0YS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2hhcmVEYXRhLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1Mjg5LDYgKzI1MjkxLDcgQEAKIAkJCWNoaWxkcmVu
ID0gKAogCQkJCUY0OEQyQUEzMjE1OTc0MEQwMEM2NzUyQiAvKiBDb2xvckNvY29hLmggKi8sCiAJ
CQkJRjQ4RDJBQTQyMTU5NzQwRDAwQzY3NTJCIC8qIENvbG9yQ29jb2EubW0gKi8sCisJCQkJMUQ3
QzJBRDcyM0M0MjlBMTAwMUMwRDEyIC8qIENyZWF0ZVdlYlJlbmRlckxheWVyLmggKi8sCiAJCQkJ
MUMzOTY5Q0YxQjc0MjExRTAwMkJDRkE3IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmNwcCAqLywKIAkJ
CQlDMjQ1OEU2MTFGRTg5NzlFMDA1OTQ3NTkgLyogRm9udENhY2hlQ29yZVRleHQuaCAqLywKIAkJ
CQlCMkFGRkM3ODBEMDBBNUMxMDAzMDA3NEQgLyogRm9udENhc2NhZGVDb2NvYS5tbSAqLywKQEAg
LTI5Mzk3LDYgKzI5NDAwLDcgQEAKIAkJCQk5MzkyRjE0QzBBRDE4NjFCMDA2OTFCRDQgLyogQ291
bnRlck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2QzY5NkNCMUU3MjA1RjcwMDU5NzkzNyAv
KiBDUFVNb25pdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMEIwNTU2ODA5QzY3MDAxMDAzMDdF
NDMgLyogQ3JlYXRlTGlua0NvbW1hbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTFEN0MyQUQ5MjND
NDJBQTQwMDFDMEQxMiAvKiBDcmVhdGVXZWJSZW5kZXJMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTE0Qzc2NkUwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTM3OTI5MTdBMTk4NUVGMzkwMEY0QjY2MSAvKiBDcmVkZW50aWFsQmFzZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzc5MjkxN0UxOTg3Njc4RjAwRjRCNjYxIC8qIENyZWRlbnRpYWxDb2Nv
YS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggYWYxZTZlOGFhNzI2
MDkxMTI5ZmU0ZDYzZmVmMjVjZGI5NzhhZTBmMS4uZGY5MmVlYjIyODRmMGY1ODExNjI5ZTgxNTg1
MGFjMWNjZTBhNmI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtMjE0LDYgKzIxNCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzZXRQcmVzZXJ2ZXNQaXRjaChib29sKSBvdmVycmlkZTsKICAg
ICB2b2lkIHNlZWtUb1RpbWUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJiBuZWdh
dGl2ZVRvbGVyYW5jZSwgY29uc3QgTWVkaWFUaW1lJiBwb3NpdGl2ZVRvbGVyYW5jZSkgb3ZlcnJp
ZGU7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXMoKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIGZpbmFsOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IHBsYXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgTWVkaWFUaW1lIHBsYXRmb3JtTWluVGltZVNlZWthYmxlKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgTWVkaWFUaW1lIHBsYXRmb3JtTWF4VGltZVNlZWthYmxlKCkgY29u
c3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBjOGM0YzM2ZWVmZDBiNzcz
MmEyZjA1YmFlYmJmZjZiZjFjNDc5OThkLi5lYzIzYzZlMTY2NmM4ZTg3MmVmODYxZTE2ZGUwYjc2
OTQxNzNlZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTE0NzQsNiArMTQ3NCwxMSBA
QCB1bnNpZ25lZCBsb25nIGxvbmcgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
dG90YWxCeXRlcygpIGNvbnN0CiAgICAgcmV0dXJuIG1fY2FjaGVkVG90YWxCeXRlczsKIH0KIAor
dm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRTaXplKGNvbnN0IElu
dFNpemUmIHNpemUpCit7CisgICAgW21fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT52aWRl
b0lubGluZUxheWVyKCkgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBzaXplLndpZHRoKCksIHNp
emUuaGVpZ2h0KCkpXTsKK30KKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpzZXRBc3NldChSZXRhaW5QdHI8aWQ+JiYgYXNzZXQpCiB7CiAgICAgbV9hdkFzc2V0ID0g
V1RGTW92ZShhc3NldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9DcmVhdGVXZWJSZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvQ3JlYXRlV2ViUmVuZGVyTGF5ZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOWE1
ZTE3ZGYxMTE2ZTk0MzJmYmNjMGViYjVlOTA5NjIxNmU5ZjdmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQ3JlYXRlV2ViUmVuZGVyTGF5
ZXIuaApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworV0VCQ09SRV9FWFBPUlQgQ0FMYXllciogQ3JlYXRlV2ViUmVuZGVy
TGF5ZXIodWludDMyX3QgY29udGV4dElEKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNB
TGF5ZXJFeHRyYXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJDb3JlQ0FMYXllckV4dHJhcy5tbQppbmRleCAyM2JiMGRlOTE2MGRjYjg2N2QyMjMyMDM1Mzhh
ZDVlN2UzMmY1MDA4Li43OTA3MWJkZjRiZTY3MmE4ZGQ3MDY4M2FjY2Q1ZGZiNjU2MTRlY2FiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3Jl
Q0FMYXllckV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAi
Y29uZmlnLmgiCiAjaW1wb3J0ICJXZWJDb3JlQ0FMYXllckV4dHJhcy5oIgogCisjaW1wb3J0ICJD
cmVhdGVXZWJSZW5kZXJMYXllci5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3Jl
U1BJLmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBDQUxheWVyIChXZWJDb3JlQ0FMYXllckV4dHJhcykK
QEAgLTg1LDQgKzg2LDEzIEBACiAgICAgcmV0dXJuIGxheWVySG9zdDsKIH0KIAorbmFtZXNwYWNl
IFdlYkNvcmUgeworCitDQUxheWVyKiBDcmVhdGVXZWJSZW5kZXJMYXllcih1aW50MzJfdCBjb250
ZXh0SUQpCit7CisgICAgcmV0dXJuIFtDQUxheWVyIF93ZWJfcmVuZGVyTGF5ZXJXaXRoQ29udGV4
dElEOiBjb250ZXh0SURdOworfQorCit9CisKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkuY3BwCmluZGV4IDliNzFlYTc2MTU2NWI0NTEzZTQ4OWI4OTlhNzk1ZWFjYjBkZjAxYmMuLmI2
M2M2ODgzYWZhNDU0YzZlY2QxOTY0YWJlODhlZTJjMTRlN2NhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5LmNwcApAQCAtMTk3LDEwICsxOTcsMTAgQEAgdm9pZCBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eTo6c3VwcG9ydHNLZXlTeXN0ZW0oTWVkaWFQbGF5ZXJFbnVtczo6TWVk
aWFFbmcKICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwogfQogCi12b2lkIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OjpwcmVwYXJlRm9yUGxheWJhY2soTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgYm9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJFbnVtczo6UHJlbG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHBy
ZXBhcmVGb3JSZW5kZXJpbmcpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojpw
cmVwYXJlRm9yUGxheWJhY2soTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwg
Ym9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZCBwcmVs
b2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJpbmcsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QgY29udGV4dElkKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX3Byb3hpZXMuZ2V0KGlkKSkKLSAgICAgICAg
cGxheWVyLT5wcmVwYXJlRm9yUGxheWJhY2socHJpdmF0ZU1vZGUsIHByZWxvYWQsIHByZXNlcnZl
c1BpdGNoLCBwcmVwYXJlRm9yUmVuZGVyaW5nKTsKKyAgICAgICAgcGxheWVyLT5wcmVwYXJlRm9y
UGxheWJhY2socHJpdmF0ZU1vZGUsIHByZWxvYWQsIHByZXNlcnZlc1BpdGNoLCBwcmVwYXJlRm9y
UmVuZGVyaW5nLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmxvYWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllciBpZCwgVVJMJiYgdXJsLCBXZWJDb3JlOjpDb250ZW50VHlwZSYmIGNvbnRlbnRUeXBl
LCBTdHJpbmcmJiBrZXlTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVkaWFQ
bGF5ZXJDb25maWd1cmF0aW9uJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHkuaAppbmRleCAwNGY2YzA4ZWU1YTA5YWNhYjVkYjQwM2FjNjU5NGI2OWVjNWU3
N2Y2Li42MTRlNTJhZmYwMDNjYzY5MzA1YzFkMzI4MWJjZGM0ZGRkZWU3YzI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkuaApAQCAtODMsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
c3VwcG9ydHNLZXlTeXN0ZW0oV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiwgY29uc3QgU3RyaW5nJiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOwogCiAgICAgdm9pZCBsb2FkKE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpDb250ZW50VHlwZSYmLCBTdHJpbmcmJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24mJik+
JiYpOwotICAgIHZvaWQgcHJlcGFyZUZvclBsYXliYWNrKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXIsIGJvb2wgcHJpdmF0ZU1vZGUsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6
OlByZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZyk7
CisgICAgdm9pZCBwcmVwYXJlRm9yUGxheWJhY2soTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllciwgYm9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJl
bG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVyaW5nLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90IGNvbnRleHRJZCk+JiYpOwogICAgIHZvaWQgY2Fu
Y2VsTG9hZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyKTsKICAgICB2b2lkIHBy
ZXBhcmVUb1BsYXkoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlMTE2YjRlMTI2
OTI0MThkNTVmODVkYmVlNDAyMDEzNDM0N2Q0YTVkLi5jODE2YzRhMWU2M2E0ZWQwN2Q4NjBjNGUz
MThlNGQ5NWMyZGIwMjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1l
c3NhZ2VzLmluCkBAIC0zNSw3ICszNSw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5IE5vdFJlZkNvdW50ZWQgewogICAgIENsZWFyTWVkaWFDYWNoZUZvck9yaWdp
bnMoZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRl
bnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBTdHJpbmcgcGF0aCwgVmVjdG9yPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2lucykKICAgICBTdXBwb3J0c0tleVN5c3RlbShl
bnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlm
aWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIFN0cmluZyBrZXlTeXN0ZW0sIFN0cmluZyBtaW1l
VHlwZSkgLT4gKGJvb2wgc3VwcG9ydHMpIFN5bmNocm9ub3VzCiAKLSAgICBQcmVwYXJlRm9yUGxh
eWJhY2soV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBib29s
IHByaXZhdGVNb2RlLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJl
bG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJp
bmcpCisgICAgUHJlcGFyZUZvclBsYXliYWNrKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlSWRlbnRpZmllciBpZCwgYm9vbCBwcml2YXRlTW9kZSwgZW51bTp1aW50OF90IFdlYkNvcmU6
Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQgcHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwg
Ym9vbCBwcmVwYXJlRm9yUmVuZGVyaW5nKSAtPiAodWludDMyX3QgbGF5ZXJIb3N0aW5nQ29udGV4
dElkKSBBc3luYwogCiAgICAgTG9hZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIgaWQsIFVSTCB1cmwsIFdlYkNvcmU6OkNvbnRlbnRUeXBlIGNvbnRlbnRUeXBlLCBT
dHJpbmcga2V5U3lzdGVtKSAtPiAoc3RydWN0IFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJDb25m
aWd1cmF0aW9uIHBsYXllckNvbmZpZ3VyYXRpb24pIEFzeW5jCiAgICAgQ2FuY2VsTG9hZChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5j
cHAKaW5kZXggODI0MzBmZDZjMmJhZDc4YTc3NWE5YjMzYjM5NWI3Y2ZiNDBiNjIzMS4uNmUzYzZi
OWZlZjVjNzcxYjBkNTAzODY4NDM0NjAyYWQ1ZTg4MzVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcApA
QCAtNTksNiArNTksNyBAQCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpSZW1vdGVNZWRpYVBsYXll
clByb3h5KFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5JiBtYQogewogICAgIG1fdHlwZXNS
ZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQgPSBtX2NvbmZpZ3VyYXRpb24ubWVkaWFDb250ZW50VHlw
ZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ7CiAgICAgbV9wbGF5ZXIgPSBNZWRpYVBsYXllcjo6
Y3JlYXRlKCp0aGlzLCBtX2VuZ2luZUlkZW50aWZpZXIpOworICAgIG1fbGF5ZXJIb3N0aW5nQ29u
dGV4dCA9IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nl
c3MoKTsKIH0KIAogUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6flJlbW90ZU1lZGlhUGxheWVyUHJv
eHkoKQpAQCAtOTEsMTIgKzkyLDEzIEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bG9h
ZChjb25zdCBVUkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlCiAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CiB9CiAKLXZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eTo6cHJlcGFyZUZvclBsYXliYWNrKGJvb2wgcHJpdmF0ZU1vZGUsIFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQgcHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQ
aXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVyaW5nKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjpwcmVwYXJlRm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJFbnVtczo6UHJlbG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHBy
ZXBhcmVGb3JSZW5kZXJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QgY29udGV4
dElkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3BsYXllci0+c2V0UHJpdmF0ZUJy
b3dzaW5nTW9kZShwcml2YXRlTW9kZSk7CiAgICAgbV9wbGF5ZXItPnNldFByZWxvYWQocHJlbG9h
ZCk7CiAgICAgbV9wbGF5ZXItPnNldFByZXNlcnZlc1BpdGNoKHByZXNlcnZlc1BpdGNoKTsKICAg
ICBtX3BsYXllci0+cHJlcGFyZUZvclJlbmRlcmluZygpOworICAgIGNvbXBsZXRpb25IYW5kbGVy
KG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+Y29udGV4dElEKCkpOwogfQogCiB2b2lkIFJlbW90ZU1l
ZGlhUGxheWVyUHJveHk6OmNhbmNlbExvYWQoKQpAQCAtMTY3LDYgKzE2OSw3IEBAIHZvaWQgUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eTo6cHJlcGFyZUZvclJlbmRlcmluZygpCiAKIHZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eTo6c2V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQog
eworICAgIG1fdmlkZW9TaXplID0gc2l6ZTsKICAgICBtX3BsYXllci0+c2V0U2l6ZShzaXplKTsK
IH0KIApAQCAtMzcwLDEyICszNzMsMTQgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpt
ZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoKQogCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6
Om1lZGlhUGxheWVyRmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKCkKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIG1fcGxheWVyLT5zZXRTaXplKG1fdmlkZW9TaXplKTsKKyAgICBtX2xheWVy
SG9zdGluZ0NvbnRleHQtPnNldFJvb3RMYXllcihtX3BsYXllci0+cGxhdGZvcm1MYXllcigpKTsK
KyAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXI6OkZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZShtX2lkKSwgMCk7CiB9CiAKIHZv
aWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdl
ZCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2xheWVySG9zdGluZ0NvbnRleHQt
PnNldFJvb3RMYXllcihtX3BsYXllci0+cGxhdGZvcm1MYXllcigpKTsKIH0KIAogdm9pZCBSZW1v
dGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2Vk
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5oCmluZGV4IDVlMjc2MWIwMWM1NDFkMmQ2Y2QzNGI2MjRjMzZmMzkwNGI4
ZjRlM2MuLmEwYTU4NmM5OGRiNTI2MjFhMDM3NTQzN2FjYmJlNjNiYWE2NDE0MGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJMYXllckhvc3RpbmdDb250ZXh0LmgiCiAj
aW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IlJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlh
UGxheWVyUHJveHlDb25maWd1cmF0aW9uLmgiCkBAIC01OCw3ICs1OSw4IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgZ2V0Q29uZmlndXJhdGlvbihSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24m
KTsKIAotICAgIHZvaWQgcHJlcGFyZUZvclBsYXliYWNrKGJvb2wgcHJpdmF0ZU1vZGUsIFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wg
cHJlcGFyZUZvclJlbmRlcmluZyk7CisgICAgdm9pZCBwcmVwYXJlRm9yUGxheWJhY2soYm9vbCwg
V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZCwgYm9vbCwgYm9vbCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50MzJfdCBjb250ZXh0SWQpPiYmKTsKKyAgICB2b2lkIHByZXBhcmVG
b3JSZW5kZXJpbmcoKTsKIAogICAgIHZvaWQgbG9hZChjb25zdCBVUkwmLCBjb25zdCBXZWJDb3Jl
OjpDb250ZW50VHlwZSYsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVt
b3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJiYpPiYmKTsKICAgICB2b2lkIGNhbmNlbExvYWQo
KTsKQEAgLTY5LDcgKzcxLDcgQEAgcHVibGljOgogICAgIHZvaWQgcGF1c2UoKTsKIAogICAgIHZv
aWQgc2VlayhNZWRpYVRpbWUmJik7Ci0gICAgdm9pZCBzZWVrV2l0aFRvbGVyYW5jZShNZWRpYVRp
bWUmJiwgTWVkaWFUaW1lJiYgbmVnYXRpdmVUb2xlcmFuY2UsIE1lZGlhVGltZSYmIHBvc2l0aXZl
VG9sZXJhbmNlKTsKKyAgICB2b2lkIHNlZWtXaXRoVG9sZXJhbmNlKE1lZGlhVGltZSYmLCBNZWRp
YVRpbWUmJiwgTWVkaWFUaW1lJiYpOwogCiAgICAgdm9pZCBzZXRWb2x1bWUoZG91YmxlKTsKICAg
ICB2b2lkIHNldE11dGVkKGJvb2wpOwpAQCAtNzgsNyArODAsNiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRQcml2YXRlQnJvd3NpbmdNb2RlKGJvb2wpOwogICAgIHZvaWQgc2V0UHJlc2VydmVzUGl0
Y2goYm9vbCk7CiAKLSAgICB2b2lkIHByZXBhcmVGb3JSZW5kZXJpbmcoKTsKICAgICB2b2lkIHNl
dFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIHZvaWQgc2V0VmlzaWJsZShib29s
KTsKICAgICB2b2lkIHNldFNob3VsZE1haW50YWluQXNwZWN0UmF0aW8oYm9vbCk7CkBAIC0xODgs
NiArMTg5LDcgQEAgcHJpdmF0ZToKICAgICBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyIG1faWQ7CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlv
bjsKICAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXI+IG1fcGxheWVyOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBtX2xheWVySG9zdGluZ0NvbnRleHQ7CiAg
ICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkmIG1fbWFuYWdlcjsKICAgICBXZWJDb3Jl
OjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgbV9lbmdpbmVJZGVudGlm
aWVyOwogICAgIFZlY3RvcjxXZWJDb3JlOjpDb250ZW50VHlwZT4gbV90eXBlc1JlcXVpcmluZ0hh
cmR3YXJlU3VwcG9ydDsKQEAgLTE5Nyw2ICsxOTksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9z
ZWVrYWJsZUNoYW5nZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2J1ZmZlcmVkQ2hhbmdlZCB7IHRy
dWUgfTsKICAgICBib29sIG1fcmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZCB7IHRydWUgfTsKKyAg
ICBXZWJDb3JlOjpJbnRTaXplIG1fdmlkZW9TaXplOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECiAgICAgY29uc3QgTG9nZ2VyJiBtX2xvZ2dlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQuaAppbmRleCA5OWNhZGZlNmRiMTZmY2M5NDNh
OGYxOTJlNWQwMWZmOGMwMTQ3NjhlLi41MTUwZDNlNDlhM2EwYTUxMTMzMzJiOTk4MDc1NjY5NTJk
MTBkYjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9MYXllckhvc3Rp
bmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5n
Q29udGV4dC5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogdXNpbmcgTGF5ZXJIb3N0aW5nQ29udGV4dElEID0gdWludDMyX3Q7Ci0g
ICAgCisKIHN0cnVjdCBMYXllckhvc3RpbmdDb250ZXh0T3B0aW9ucyB7CiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBib29sIGNhblNob3dXaGlsZUxvY2tlZCB7IGZhbHNlIH07CkBAIC02
NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICB+TGF5ZXJIb3N0aW5nQ29udGV4dCgpOwogCiAgICAg
dm9pZCBzZXRSb290TGF5ZXIoQ0FMYXllciAqKTsKLSAgICBDQUxheWVyICpyb290TGF5ZXIoKSBj
b25zdDsKKyAgICBDQUxheWVyKiByb290TGF5ZXIoKSBjb25zdDsKIAogICAgIExheWVySG9zdGlu
Z0NvbnRleHRJRCBjb250ZXh0SUQoKSBjb25zdDsKICAgICB2b2lkIGludmFsaWRhdGUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCAxNjRkY2I5MWZlZGU0NGY1ZWY5YTFhYTkx
OTZmMGZiNzZkYWE0NWIwLi41NmJkYzY3NjQ1MTQ0ZTM0NzdiZjUxYWE3ZGY2MzAyNDI5ZDFjYTMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0NyZWF0ZVdlYlJlbmRlckxheWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRp
YVBsYXllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtTGF5ZXIuaD4KQEAgLTQxLDExICs0MiwxMSBAQAogI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKyNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKIGV4dGVybiBXVEZMb2dDaGFubmVsIExvZ01lZGlhOwotfQogI2VuZGlmCit9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC04NCwxNCArODUs
MjIgQEAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp+TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
KCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnByZXBhcmVGb3JQbGF5YmFjayhi
b29sIHByaXZhdGVNb2RlLCBNZWRpYVBsYXllcjo6UHJlbG9hZCBwcmVsb2FkLCBib29sIHByZXNl
cnZlc1BpdGNoLCBib29sIHByZXBhcmUpCiB7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlBy
ZXBhcmVGb3JQbGF5YmFjayhtX2lkLCBwcml2YXRlTW9kZSwgcHJlbG9hZCwgcHJlc2VydmVzUGl0
Y2gsIHByZXBhcmUpLCAwKTsKKyAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
OjpQcmVwYXJlRm9yUGxheWJhY2sobV9pZCwgcHJpdmF0ZU1vZGUsIHByZWxvYWQsIHByZXNlcnZl
c1BpdGNoLCBwcmVwYXJlKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzXShh
dXRvIGNvbnRleHRJZCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgbV9sYXllckhvc3RpbmdDb250ZXh0SWQgPSBjb250ZXh0
SWQ7CisgICAgICAgIG1fdmlkZW9MYXllciA9IENyZWF0ZVdlYlJlbmRlckxheWVyKGNvbnRleHRJ
ZCk7CisgICAgfSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBl
JiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiB7Ci0gICAgbV9tYW5hZ2Vy
LmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6TG9hZChtX2lkLCB1cmwsIGNvbnRlbnRUeXBlLCBr
ZXlTeXN0ZW0pLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKGF1dG8mJiBjb25maWd1
cmF0aW9uKSB7Ci0gICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgIHdlYWtUaGlzLT5t
X2NvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uOworICAgIG1fbWFuYWdlci5ncHVQcm9jZXNz
Q29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHk6OkxvYWQobV9pZCwgdXJsLCBjb250ZW50VHlwZSwga2V5U3lzdGVtKSwg
W3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzXShhdXRvJiYgY29uZmlndXJhdGlv
bikgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIG1fY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb247CiAgICAgfSk7CiB9CiAKQEAgLTI2
MSw2ICsyNzAsMTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNpemVDaGFuZ2Vk
KFdlYkNvcmU6OkZsb2F0U2l6ZSBuYXR1cmFsU2l6ZSkKICAgICBtX3BsYXllci0+c2l6ZUNoYW5n
ZWQoKTsKIH0KIAordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmZpcnN0VmlkZW9GcmFt
ZUF2YWlsYWJsZSgpCit7CisgICAgbV9wbGF5ZXItPmZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSgp
OworfQorCiBTdHJpbmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjplbmdpbmVEZXNjcmlwdGlv
bigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5lbmdpbmVEZXNjcmlwdGlv
bjsKQEAgLTMxNiw4ICszMzAsMTMgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBy
ZXBhcmVGb3JSZW5kZXJpbmcoKQogICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQcmVwYXJlRm9y
UmVuZGVyaW5nKG1faWQpLCAwKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnNldFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKK3ZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB7CisgICAgLy8gQW4g
b3B0aW1pemF0aW9uIHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIFhQQyBtZXNzYWdlcworICAgIGlm
IChtX3ZpZGVvU2l6ZSA9PSBzaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3ZpZGVvU2l6
ZSA9IHNpemU7CiAgICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFNpemUobV9pZCwgc2l6ZSks
IDApOwogfQogCkBAIC0zODgsOCArNDA3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmxvYWQoTWVkaWFTdHJlYW1Qcml2YXRlJikKIAogUGxhdGZvcm1MYXllciogTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX3ZpZGVvTGF5ZXIuZ2V0
KCk7CiB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBF
TkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgK
aW5kZXggOGQzMzU4N2I1MDE2MTI3ZDkxOTQ1M2NhNjZlMzhiNGViNWQ4YTk3Yi4uN2Q1ODc2ZmQ4
M2VkZTdkNTk5NmYzY2M3MjM0ZmIyNWQ5ODM0ZDU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5oCkBAIC03Miw2ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZUNhY2hlZFN0YXRl
KFJlbW90ZU1lZGlhUGxheWVyU3RhdGUmJik7CiAgICAgdm9pZCBjaGFyYWN0ZXJpc3RpY0NoYW5n
ZWQoYm9vbCBoYXNBdWRpbywgYm9vbCBoYXNWaWRlbywgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVt
czo6TW92aWVMb2FkVHlwZSk7CiAgICAgdm9pZCBzaXplQ2hhbmdlZChXZWJDb3JlOjpGbG9hdFNp
emUpOworICAgIHZvaWQgZmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKCk7CiAKICAgICB2b2lkIHJl
cXVlc3RSZXNvdXJjZShSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjo6TG9h
ZE9wdGlvbnMpOwogICAgIHZvaWQgcmVtb3ZlUmVzb3VyY2UoUmVtb3RlTWVkaWFSZXNvdXJjZUlk
ZW50aWZpZXIpOwpAQCAtMTA5LDcgKzExMCw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNob3Vs
ZElnbm9yZUludHJpbnNpY1NpemUoKSBmaW5hbDsKIAotICAgIC8vIFVuaW1wbGVtZW50ZWQKICAg
ICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CiAKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VO
VEFUSU9OX01PREUpKQpAQCAtMzAyLDYgKzMwMiw4IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3Jl
OjpNZWRpYVBsYXllciogbV9wbGF5ZXIgeyBudWxscHRyIH07CiAgICAgUmVmUHRyPFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcj4gbV9tZWRpYVJlc291cmNlTG9hZGVyOworICAg
IHVpbnQzMl90IG1fbGF5ZXJIb3N0aW5nQ29udGV4dElkICB7IDAgfTsKKyAgICBSZXRhaW5QdHI8
UGxhdGZvcm1MYXllcj4gbV92aWRlb0xheWVyOwogICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
ciYgbV9tYW5hZ2VyOwogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5l
SWRlbnRpZmllciBtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXI7CiAgICAgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlSWRlbnRpZmllciBtX2lkOwpAQCAtMzEyLDYgKzMxNCw3IEBAIHByaXZhdGU6CiAK
ICAgICBIYXNoTWFwPFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLCBSZWZQdHI8V2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlPj4gbV9tZWRpYVJlc291cmNlczsKIAorICAgIFdlYkNv
cmU6OkludFNpemUgbV92aWRlb1NpemU7CiAgICAgZG91YmxlIG1fdm9sdW1lIHsgMSB9OwogICAg
IGRvdWJsZSBtX3JhdGUgeyAxIH07CiAgICAgbG9uZyBtX3BsYXRmb3JtRXJyb3JDb2RlIHsgMCB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCmluZGV4IDI1Y2M1NjNmM2ViZDU5YzU3MGI2
NmJlOTQwM2I3Y2U3MjkwZDI4ZGUuLmVmYzYyOTVlNjU4MjAyNDA3MzA2NmJlM2E1MjA2ZTk1NTA4
OTliYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKQEAgLTMwNCw2ICszMDQsMTIg
QEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnNpemVDaGFuZ2VkKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnQKICAgICAgICAgcGxheWVyLT5zaXplQ2hhbmdlZChu
YXR1cmFsU2l6ZSk7CiB9CiAKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpmaXJzdFZp
ZGVvRnJhbWVBdmFpbGFibGUoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyIGlkKQoreworICAgIGlmIChhdXRvIHBsYXllciA9IG1fcGxheWVycy5nZXQoaWQpKQorICAg
ICAgICBwbGF5ZXItPmZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSgpOworfQorCiB2b2lkIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlcjo6cmVxdWVzdFJlc291cmNlKE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXIgaWQsIFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZU1l
ZGlhUmVzb3VyY2VJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQbGF0Zm9y
bU1lZGlhUmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRpb25zIG9wdGlvbnMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoY29uc3QgYXV0byYg
cGxheWVyID0gbV9wbGF5ZXJzLmdldChpZCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaAppbmRl
eCBmNTg4NWNlZTA1ZDlhNWY2NGU3MzQzYzhiM2RjODMxZmRmOThmNmFkLi41ZDY0N2JmMjM4YWRl
NzA2OTMxOTU3YTViYmJkZDNiOGY0OTk1YzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgK
QEAgLTg1LDYgKzg1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUNhY2hlZFN0YXRlKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgUmVtb3RlTWVkaWFQbGF5
ZXJTdGF0ZSYmKTsKICAgICB2b2lkIGNoYXJhY3RlcmlzdGljQ2hhbmdlZChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlk
ZW8sIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1vdmllTG9hZFR5cGUpOwogICAgIHZvaWQg
c2l6ZUNoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBX
ZWJDb3JlOjpGbG9hdFNpemUpOworICAgIHZvaWQgZmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcik7CiAKICAgICB2b2lkIHJl
cXVlc3RSZXNvdXJjZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBSZW1vdGVN
ZWRpYVJlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbnMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZW1vdmVSZXNvdXJjZShNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGVJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IDU0YTAxZjhi
MzUyMmExYTI1NjYxZWVlZWU1Mjc5MmNkMzQzZDAxM2UuLjUxN2I3NGQwNGM4MjEzZjM3ODU5ODAy
ZjRkOWM2MGEzN2M3ZDNlNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1l
c3NhZ2VzLmluCkBAIC0yNiw2ICsyNiw3IEBACiBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXIgTm90UmVmQ291bnRlZCB7CiAgICAgTmV0d29ya1N0YXRlQ2hhbmdlZChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIHN0cnVjdCBXZWJLaXQ6OlJl
bW90ZU1lZGlhUGxheWVyU3RhdGUgc3RhdGUpCiAgICAgUmVhZHlTdGF0ZUNoYW5nZWQoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBzdHJ1Y3QgV2ViS2l0OjpS
ZW1vdGVNZWRpYVBsYXllclN0YXRlIHN0YXRlKQorICAgIEZpcnN0VmlkZW9GcmFtZUF2YWlsYWJs
ZShXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQpCiAgICAgVm9s
dW1lQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQs
IGRvdWJsZSB2b2x1bWUpCiAgICAgTXV0ZUNoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyIGlkLCBib29sIG11dGUpCiAgICAgVGltZUNoYW5nZWQoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBzdHJ1Y3QgV2ViS2l0OjpS
ZW1vdGVNZWRpYVBsYXllclN0YXRlIHN0YXRlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGE1YmMwNDNhMjI2YTdiZWU1YzYw
NjViM2EzNjM3YTdmNGZhODA4MTQuLjJjOGRkZDNjY2ZlYjdkNGU1NWUzOWZmYzk2NDBkZTUwNzhj
MWFmNTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0wMS0wOSAgUGVuZyBMaXUgIDxwZW5n
LmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYSBpbiBHUFUgcHJvY2Vzc10gSW1wbGVt
ZW50IHRoZSByZW1vdGUgdmlkZW8gbGF5ZXIgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25z
OgorCiAyMDIwLTAxLTA5ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJFR1JFU1NJT04gKHIyNTM2NjIpOiBMYXJnZSBEYXRhIFVSTHMgYXJlIG5vdCBiZWlu
ZyBoYW5kbGVkIHByb3Blcmx5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9U
ZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9u
cwppbmRleCBkMDFkNWIxODU2OWZjNDY0NmU0YmQzYmYzNzEwN2UyM2FmY2YwODViLi40YzIxODJj
YjNjOWIwODhlNTAxNDYxN2ZkNTA3MjU2M2VmNWE4YjBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL2dwdS1wcm9j
ZXNzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE5OSw2ICsxOTksOSBAQCBodHRwL3Rlc3RzL2NhY2hl
L2Rpc2stY2FjaGUvZGlzay1jYWNoZS1tZWRpYS1zbWFsbC5odG1sIFsgU2tpcCBdCiBodHRwL3Rl
c3RzL2NvbnRlbnRleHRlbnNpb25zL3RleHQtdHJhY2stYmxvY2tlZC5odG1sIFsgU2tpcCBdCiBo
dHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL3ZpZGVvLWVsZW1lbnQtcmVzb3VyY2UtdHlwZS5o
dG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL21lZGlhIFsgU2tpcCBdCitodHRwL3Rlc3RzL21lZGlh
L3ZpZGVvLWxvYWQtdHdpY2UuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9tZWRpYS92aWRlby1w
bGF5LXByb2dyZXNzLmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcHJlbG9h
ZC5odG1sIFsgUGFzcyBdCiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS1tZWRpYWtl
eXNlc3Npb24uaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUt
bWVkaWFzdHJlYW0uaHRtbCBbIFNraXAgXQogaHR0cC93cHQvbWVkaWFyZWNvcmRlciBbIFNraXAg
XQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387428</attachid>
            <date>2020-01-11 00:54:31 -0800</date>
            <delta_ts>2020-01-11 01:01:32 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-206043-20200111005430.patch</filename>
            <type>text/plain</type>
            <size>92248</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM1MWQ3NGM4ZGRhNmM2
ODdjMjY2MzdmMDM0ZTAyMzhhYjQyZDMwMS4uYzJkMjQyMDk0NGZjODg3MDM1ODA5NGRiNmZmMDRm
ZmE0MzAyMGM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTAxLTEwICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBwcm9j
ZXNzXSBJbXBsZW1lbnQgdGhlIHJlbW90ZSB2aWRlbyBsYXllciBzdXBwb3J0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwNDMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRo
ZSBzZXRTaXplKCkgKHZpcnR1YWwpIGZ1bmN0aW9uIGluIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMKKyAgICAgICAgdG8gY29uZmlnIHRoZSBXZWJWaWRlb0NvbnRhaW5lckxheWVy
LgorICAgICAgICBBbHNvLCBpdCBhZGRzIGZ1bmN0aW9uIENyZWF0ZVdlYlJlbmRlckxheWVyKCkg
d2hpY2ggaXMgYSB3cmFwcGVyIG9mIFtDQUxheWVyIF93ZWJfcmVuZGVyTGF5ZXJXaXRoQ29udGV4
dElEOl0sCisgICAgICAgIHNvIHRoYXQgd2UgY2FuIGNyZWF0ZSBhIHJlbmRlciBsYXllciBpbiBj
KysgY29kZS4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0xh
eWVySG9zdGluZ0NvbnRleHQuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
bWFjL0xheWVySG9zdGluZ0NvbnRleHQuaC4KKyAgICAgICAgKFdlYkNvcmU6OkxheWVySG9zdGlu
Z0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MpOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL0xheWVySG9zdGluZ0NvbnRleHQubW06IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1tLgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2Vz
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y3JlYXRlUGxhdGZvcm1M
YXllckZvckhvc3RpbmdDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbToKKyAgICAgICAgKCtbQ0FMYXllciBfd2ViX3JlbmRl
ckxheWVyV2l0aENvbnRleHRJRDpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9J
bWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmg6CisKIDIwMjAtMDEtMTAgIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBUYWJsZUZvcm1hdHRpbmdDb250ZXh0
OjpsYXlvdXRUYWJsZUNlbGxCb3ggc2hvdWxkIHRha2UgSG9yaXpvbnRhbENvbnN0cmFpbnRzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDU1ODk5NGFiZTdlNzg1YWYwZGVmODA1YzgxYjA3YTM1ZmE2ZjgzMDMuLjE4MDc1
MTQ0YmVjMjdlYmE2ZGU4MTBkZTUwMDhjODhiODRhY2I5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NzcgQEAKKzIwMjAtMDEtMTAgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAg
ICAgICBbTWVkaWEgaW4gR1BVIHByb2Nlc3NdIEltcGxlbWVudCB0aGUgcmVtb3RlIHZpZGVvIGxh
eWVyIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNjA0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW90ZU1lZGlhUGxheWVyUHJveHkgaW4gdGhlIEdQVSBwcm9jZXNzIGNyZWF0ZXMgYSBM
YXllckhvc3RpbmdDb250ZXh0IHdpdGggY3JlYXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2Vzcygp
CisgICAgICAgIGFuZCBzaGFyZSB0aGUgY29udGV4dCBJRCB3aXRoIHRoZSBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUgaW4gdGhlIFdlYiBwcm9jZXNzLgorICAgICAgICBUaGVuIHRoZSBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGUgY3JlYXRlcyBhIENBTGF5ZXIgd2l0aCB0aGUgY29udGV4dCBJRCBm
b3IgcmVuZGVyaW5nLgorICAgICAgICBUaGlzIHBhdGNoIGFsc28gYWRkcyBuZWNlc3NhcnkgWFBD
IG1lc3NhZ2VzIHRvIG1ha2Ugc3VyZSB0aGUgcmVuZGVyaW5nIHdvcmsgcHJvcGVybHkuCisKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnByZXBh
cmVGb3JQbGF5YmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5OjpzZXRTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpwcmVwYXJlRm9yUGxheWJhY2spOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckZpcnN0VmlkZW9G
cmFtZUF2YWlsYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6
Om1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0IGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJDb250ZW50
c1NjYWxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6
c2V0U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5Lmg6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVy
UHJveHkuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5
Lmg6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luQ29udHJvbGxlclByb3h5TWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnNldExheWVySG9z
dGluZ01vZGUpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnVwZGF0
ZUxheWVySG9zdGluZ0NvbnRleHQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5OgorICAgICAgICAqIFNoYXJlZC9MYXllclRyZWVDb250ZXh0Lmg6CisgICAgICAgICogU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2Eu
dHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6
OlBhZ2VDbGllbnQ6OnZpZXdMYXllckhvc3RpbmdNb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpwcmVwYXJlRm9yUGxheWJhY2spOgorICAgICAgICAoV2ViS2l0OjpNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Zmlyc3RWaWRlb0ZyYW1l
QXZhaWxhYmxlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpw
bGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpzZXRTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXI6OmZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRz
Y2FwZVBsdWdpbk1hYy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oOgorICAg
ICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6c2V0TGF5ZXJIb3N0aW5nTW9kZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1v
dGVDdXN0b20uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVl
L1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUNvbnRleHQuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpsYXllckhvc3RpbmdNb2RlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaDoKKyAgICAgICAgKFdlYktpdDo6
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6bGF5ZXJIb3N0aW5nQ29udGV4dCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorCiAy
MDIwLTAxLTEwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtNZWRpYSBpbiBHUFUgcHJvY2Vzc10gRXh0ZW5kIHRoZSBHUFUgcHJvY2VzcyBzYW5kYm94
IHRvIGFsbG93IGFjY2VzcyB0byBsb2NhbCBmaWxlcyB3aGVuIG5lY2Vzc2FyeQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNDb2NvYS50eHQKaW5kZXggZTQ1M2Q4OTA5N2U2ODZiMmMzMzUyYmFkNjZlZTcxMjM0N2MxNjZi
NS4uOTZlZWRhMjdjMzg3M2IwOTA1ZTQ2MzkwYzUxNDYxM2FlODIyZGJlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CkBAIC0xOTQsNiArMTk0LDcgQEAgcGxhdGZvcm0vY29jb2EvQ29yZVZpZGVv
U29mdExpbmsuY3BwCiBwbGF0Zm9ybS9jb2NvYS9EYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1t
IEBuby11bmlmeQogcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbQogcGxhdGZvcm0v
Y29jb2EvS2V5RXZlbnRDb2NvYS5tbQorcGxhdGZvcm0vY29jb2EvTGF5ZXJIb3N0aW5nQ29udGV4
dC5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2NvY29hL0xvY2FsaXplZFN0cmluZ3NDb2NvYS5tbQog
cGxhdGZvcm0vY29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tCiBwbGF0Zm9ybS9jb2NvYS9O
ZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDliYjg0MzE0NTM5YWQwOTUxNDYz
MWIyMTMwNjE2YWY2MGJhOWExYzMuLmJiN2ExOTY0NTM0NWIxMDQxYzc5OTBkOTc2Njk3Y2U5OWQw
MWIxMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTYyOSw2ICs2MjksOCBAQAogCQkxQ0ZBRTMyMzBBNkQ2QTNGMDAzMjU5M0Qg
LyogbGlib2JqYy5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDRkFFMzIyMEE2RDZBM0YwMDMyNTkzRCAvKiBsaWJvYmpjLmR5bGliICovOyB9
OwogCQkxRDAwMjZBNDIzNzRENjI0MDBDQTZDREYgLyogSlNQaWN0dXJlSW5QaWN0dXJlV2luZG93
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRDAwMjZB
MjIzNzRENjIzMDBDQTZDREYgLyogSlNQaWN0dXJlSW5QaWN0dXJlV2luZG93LmggKi87IH07CiAJ
CTFEMDAyNkFBMjM3NEY5RUEwMENBNkNERiAvKiBKU0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRDAwMjZB
ODIzNzRGOUQ5MDBDQTZDREYgLyogSlNFbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5oICovOyB9
OworCQkxRDI4NEU1NzIzQzk0ODU5MDA0QkQ4QkEgLyogTGF5ZXJIb3N0aW5nQ29udGV4dC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUQyODRFNTQyM0M5
NDdGQjAwNEJEOEJBIC8qIExheWVySG9zdGluZ0NvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxRDI4NEU1ODIzQzlBQTlDMDA0QkQ4QkEg
LyogTGF5ZXJIb3N0aW5nQ29udGV4dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFEMjg0RTU1MjNDOTQ3RkQwMDRCRDhCQSAvKiBMYXllckhvc3RpbmdD
b250ZXh0Lm1tICovOyB9OwogCQkxRDJDODJCNzIzNkEzRjZBMDA1NUQ2QzUgLyogUGljdHVyZUlu
UGljdHVyZVN1cHBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFEMkM4MkI2MjM2QTNGNkEwMDU1RDZDNSAvKiBQaWN0dXJlSW5QaWN0dXJlU3VwcG9y
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFE
MkY4RTAzMjM0NDc0RUYwMDk5M0I2OCAvKiBEb2N1bWVudFBpY3R1cmVJblBpY3R1cmUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFERUYwNkREMjMzRDJF
MUMwMEVFMjI4RCAvKiBEb2N1bWVudFBpY3R1cmVJblBpY3R1cmUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxRDJGOEUwNDIzNDQ3NTE2MDA5OTNC
NjggLyogRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFERUYwNkNBMjMzQzNEMEIwMEVFMjI4RCAvKiBFbnRl
clBpY3R1cmVJblBpY3R1cmVFdmVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC02NTA4LDYgKzY1MTAsOCBAQAogCQkxRDAwMjZBMzIzNzRENjI0
MDBDQTZDREYgLyogSlNQaWN0dXJlSW5QaWN0dXJlV2luZG93LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUGljdHVyZUluUGljdHVyZVdpbmRvdy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEMDAyNkE4MjM3NEY5RDkwMENBNkNERiAvKiBKU0Vu
dGVyUGljdHVyZUluUGljdHVyZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUQwMDI2QTkyMzc0RjlEOTAwQ0E2Q0RGIC8qIEpTRW50ZXJQaWN0dXJlSW5QaWN0
dXJlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFbnRl
clBpY3R1cmVJblBpY3R1cmVFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFEMjg0RTU0MjNDOTQ3RkIwMDRCRDhCQSAvKiBMYXllckhvc3RpbmdDb250ZXh0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExheWVySG9zdGluZ0NvbnRleHQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUQyODRFNTUyM0M5NDdGRDAwNEJEOEJBIC8qIExheWVy
SG9zdGluZ0NvbnRleHQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBMYXllckhvc3RpbmdDb250ZXh0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
RDJDODJCNjIzNkEzRjZBMDA1NUQ2QzUgLyogUGljdHVyZUluUGljdHVyZVN1cHBvcnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUGljdHVyZUluUGljdHVyZVN1cHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMURCQzFCNTUyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVP
YnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQaWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMURDNTUzRkQyMTFCQTEyQTAwNEI3ODBFIC8qIE5h
dmlnYXRvclNoYXJlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOYXZpZ2F0b3JTaGFyZS5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzA3Myw2ICsyMzA3Nyw4IEBACiAJ
CQkJN0EwOUNFRjAxRjAxRDFGNzAwRTkzQkRCIC8qIEZpbGVNb25pdG9yQ29jb2EubW0gKi8sCiAJ
CQkJQTVDOTc0Q0YxMTQ4NUZGMTAwNjZGMkFCIC8qIEtleUV2ZW50Q29jb2EuaCAqLywKIAkJCQlB
NUM5NzREMDExNDg1RkYxMDA2NkYyQUIgLyogS2V5RXZlbnRDb2NvYS5tbSAqLywKKwkJCQkxRDI4
NEU1NDIzQzk0N0ZCMDA0QkQ4QkEgLyogTGF5ZXJIb3N0aW5nQ29udGV4dC5oICovLAorCQkJCTFE
Mjg0RTU1MjNDOTQ3RkQwMDRCRDhCQSAvKiBMYXllckhvc3RpbmdDb250ZXh0Lm1tICovLAogCQkJ
CTFBNDgzMkIyMUE5NTNCQTYwMDhCNERGRSAvKiBMb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0gKi8s
CiAJCQkJQzUzRDM5MzMxQzk3ODkyRDAwN0YzQUU5IC8qIE1JTUVUeXBlUmVnaXN0cnlDb2NvYS5t
bSAqLywKIAkJCQlBMTlEOTM0OTFBQTExQjFFMDBCNDZDMjQgLyogTmV0d29ya0V4dGVuc2lvbkNv
bnRlbnRGaWx0ZXIuaCAqLywKQEAgLTMxMzEzLDYgKzMxMzE5LDcgQEAKIAkJCQkwRkVDMTIwQzIy
QkYyQ0QyMDA0RTlEMzUgLyogTGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2suaCBpbiBIZWFkZXJz
ICovLAogCQkJCUU0OTE2RkY3MTk1REY2QTAwMDVBQjM0OSAvKiBMYXllckZsdXNoVGhyb3R0bGVT
dGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTgwMzcxNjQxQTY2RjFEMzAwQkFGNTE5IC8qIExh
eWVyRnJhZ21lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTFEMjg0RTU3MjNDOTQ4NTkwMDRCRDhC
QSAvKiBMYXllckhvc3RpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QUEzQTZBMDE5
NEI1OUI2MDAxQ0JEMjQgLyogTGF5ZXJQb29sLmggaW4gSGVhZGVycyAqLywKIAkJCQkxMTMxMENG
NzIwQkE0QTYyMDA2NUE4RDAgLyogTGF5b3V0QW5jZXN0b3JJdGVyYXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTE1Q0ZBOTcyMDhCOTUyQjAwMUU2OTkxIC8qIExheW91dEJveC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zMzYzMCw2ICszMzYzNyw3IEBACiAJCQkJQ0QwNjNGODIxRTIzRkE4OTAwODEy
QkUzIC8qIEluaXREYXRhUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM5M0Ux
Rjk5QkY1QTAwNEQyMkE4IC8qIEpTUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTM1QzQ3NzAwOUFDNEQ3MzAwQTZBQUI0IC8qIEtleUV2ZW50TWFjLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJMUQyODRFNTgyM0M5QUE5QzAwNEJEOEJBIC8qIExheWVySG9z
dGluZ0NvbnRleHQubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREE5OEUwQjE2MDNDRDYwMDBGRUEz
QjEgLyogTGVnYWN5Q0RNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERThCNUVDMUE2OTc3NzMw
MEI0QjY2QSAvKiBMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQ0RDQTk4RUIxOEIyQzhFQjAwQzEyRkY5IC8qIExlZ2FjeUNETVByaXZhdGVNZWRpYVBsYXll
ci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL0xheWVySG9zdGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL0xheWVySG9zdGluZ0NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMjVkN2Y5NWZiZDY1MTUyNjY0
ZDNiY2FiM2ZmZmU4MmQ4ZTAzZWEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvTGF5ZXJIb3N0aW5nQ29udGV4dC5oCkBAIC0wLDAgKzEsMTE0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorCitPQkpDX0NMQVNTIENBTGF5ZXI7CitPQkpDX0NMQVNTIENBQ29udGV4dDsKKworbmFtZXNw
YWNlIFdURiB7CitjbGFzcyBNYWNoU2VuZFJpZ2h0OworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3VzaW5nIExheWVySG9zdGluZ0NvbnRleHRJRCA9IHVpbnQzMl90OworCitlbnVtIGNsYXNz
IExheWVySG9zdGluZ01vZGUgOiB1aW50OF90IHsKKyAgICBJblByb2Nlc3MsCisjaWYgSEFWRShP
VVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQorICAgIE91dE9mUHJvY2VzcworI2VuZGlmCit9
OworCitzdHJ1Y3QgTGF5ZXJIb3N0aW5nQ29udGV4dE9wdGlvbnMgeworI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCisgICAgYm9vbCBjYW5TaG93V2hpbGVMb2NrZWQgeyBmYWxzZSB9OworI2VuZGlm
Cit9OworCitjbGFzcyBMYXllckhvc3RpbmdDb250ZXh0IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShMYXllckhvc3RpbmdDb250ZXh0KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJs
aWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3Rp
bmdDb250ZXh0PiBjcmVhdGVGb3JQb3J0KGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc2VydmVy
UG9ydCk7CisKKyNpZiBIQVZFKE9VVF9PRl9QUk9DRVNTX0xBWUVSX0hPU1RJTkcpCisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBj
cmVhdGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9jZXNzKGNvbnN0IExheWVySG9zdGluZ0NvbnRleHRP
cHRpb25zJiA9IHsgfSk7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBjcmVhdGVGb3JFeHRl
cm5hbFBsdWdpbkhvc3RpbmdQcm9jZXNzKCk7CisjZW5kaWYKKworI2VuZGlmIC8vIEhBVkUoT1VU
X09GX1BST0NFU1NfTEFZRVJfSE9TVElORykKKworICAgIExheWVySG9zdGluZ0NvbnRleHQoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB+TGF5ZXJIb3N0aW5nQ29udGV4dCgpOworCisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRSb290TGF5ZXIoQ0FMYXllciAqKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBDQUxheWVyICpyb290TGF5ZXIoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIExheWVy
SG9zdGluZ0NvbnRleHRJRCBjb250ZXh0SUQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGludmFsaWRhdGUoKTsKKworICAgIExheWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9k
ZSgpIHsgcmV0dXJuIG1fbGF5ZXJIb3N0aW5nTW9kZTsgfQorCisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRDb2xvclNwYWNlKENHQ29sb3JTcGFjZVJlZik7CisgICAgV0VCQ09SRV9FWFBPUlQg
Q0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UoKSBjb25zdDsKKworI2lmIFBMQVRGT1JNKE1BQykK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQoYm9v
bCk7CisgICAgYm9vbCBjb2xvck1hdGNoVW50YWdnZWRDb250ZW50KCkgY29uc3Q7CisjZW5kaWYK
KworICAgIC8vIEZlbmNlcyBvbmx5IHdvcmsgb24gaU9TIGFuZCBPUyAxMC4xMCsuCisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRGZW5jZVBvcnQobWFjaF9wb3J0X3QpOworCisgICAgLy8gY3Jl
YXRlRmVuY2VQb3J0IGRvZXMgbm90IGluc3RhbGwgdGhlIGZlbmNlIHBvcnQgb24gdGhlIExheWVy
SG9zdGluZ0NvbnRleHQncworICAgIC8vIENBQ29udGV4dDsgY2FsbCBzZXRGZW5jZVBvcnQoKSB3
aXRoIHRoZSBuZXdseSBjcmVhdGVkIHBvcnQgaWYgc3luY2hyb25pemF0aW9uCisgICAgLy8gd2l0
aCB0aGlzIGNvbnRleHQgaXMgZGVzaXJlZC4KKyAgICBXVEY6Ok1hY2hTZW5kUmlnaHQgY3JlYXRl
RmVuY2VQb3J0KCk7CisKK3ByaXZhdGU6CisgICAgTGF5ZXJIb3N0aW5nTW9kZSBtX2xheWVySG9z
dGluZ01vZGU7CisgICAgUmV0YWluUHRyPENBQ29udGV4dD4gbV9jb250ZXh0OworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRlPD4gc3RydWN0
IEVudW1UcmFpdHM8V2ViQ29yZTo6TGF5ZXJIb3N0aW5nTW9kZT4geworICAgIHVzaW5nIHZhbHVl
cyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkxheWVySG9zdGluZ01vZGUsCisjaWYg
SEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQorICAgICAgICBXZWJDb3JlOjpMYXll
ckhvc3RpbmdNb2RlOjpPdXRPZlByb2Nlc3MsCisjZW5kaWYKKyAgICAgICAgV2ViQ29yZTo6TGF5
ZXJIb3N0aW5nTW9kZTo6SW5Qcm9jZXNzCisgICAgPjsKK307Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9MYXllckhvc3RpbmdDb250ZXh0Lm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lZGQ2Y2NmMmMxNjQ3NTAzM2Y1ZmQ5MmJhMjRiMmI3OTg5NmI3YTM0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTGF5ZXJIb3N0aW5nQ29udGV4dC5t
bQpAQCAtMCwwICsxLDE1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJMYXllckhvc3RpbmdDb250ZXh0LmgiCisKKyNpbXBvcnQgPHBhbC9zcGkvY2cv
Q29yZUdyYXBoaWNzU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEku
aD4KKyNpbXBvcnQgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kworc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IExheWVySG9zdGluZ0NvbnRl
eHQ6OmNyZWF0ZUZvclBvcnQoY29uc3QgTWFjaFNlbmRSaWdodCYgc2VydmVyUG9ydCkKK3sKKyAg
ICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPExheWVySG9zdGluZ0NvbnRl
eHQ+KCk7CisKKyAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBAeworICAgICAgICBrQ0FDb250
ZXh0UG9ydE51bWJlciA6IEAoc2VydmVyUG9ydC5zZW5kUmlnaHQoKSksCisjaWYgUExBVEZPUk0o
TUFDKQorICAgICAgICBrQ0FDb250ZXh0Q0lGaWx0ZXJCZWhhdmlvciA6IEAiaWdub3JlIiwKKyNl
bmRpZgorICAgIH07CisKKyAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2xheWVySG9zdGluZ01v
ZGUgPSBMYXllckhvc3RpbmdNb2RlOjpJblByb2Nlc3M7CisgICAgbGF5ZXJIb3N0aW5nQ29udGV4
dC0+bV9jb250ZXh0ID0gW0NBQ29udGV4dCByZW1vdGVDb250ZXh0V2l0aE9wdGlvbnM6b3B0aW9u
c107CisKKyAgICByZXR1cm4gbGF5ZXJIb3N0aW5nQ29udGV4dDsKK30KKworI2lmIEhBVkUoT1VU
X09GX1BST0NFU1NfTEFZRVJfSE9TVElORykKK3N0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdD
b250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9j
ZXNzKGNvbnN0IExheWVySG9zdGluZ0NvbnRleHRPcHRpb25zJiBvcHRpb25zKQoreworICAgIGF1
dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4o
KTsKKyAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2xheWVySG9zdGluZ01vZGUgPSBMYXllckhv
c3RpbmdNb2RlOjpPdXRPZlByb2Nlc3M7CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAh
UExBVEZPUk0oTUFDQ0FUQUxZU1QpCisgICAgLy8gVXNlIGEgdmVyeSBsYXJnZSBkaXNwbGF5IElE
IHRvIGVuc3VyZSB0aGF0IHRoZSBjb250ZXh0IGlzIG5ldmVyIHB1dCBvbi1zY3JlZW4gCisgICAg
Ly8gd2l0aG91dCBiZWluZyBleHBsaWNpdGx5IHBhcmVudGVkLiBTZWUgPHJkYXI6Ly9wcm9ibGVt
LzE2MDg5MjY3PiBmb3IgZGV0YWlscy4KKyAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2NvbnRl
eHQgPSBbQ0FDb250ZXh0IHJlbW90ZUNvbnRleHRXaXRoT3B0aW9uczpAeworICAgICAgICBrQ0FD
b250ZXh0U2VjdXJlOiBAKG9wdGlvbnMuY2FuU2hvd1doaWxlTG9ja2VkKSwKKyNpZiBIQVZFKENP
UkVfQU5JTUFUSU9OX1JFTkRFUl9TRVJWRVIpCisgICAgICAgIGtDQUNvbnRleHRJZ25vcmVzSGl0
VGVzdCA6IEBZRVMsCisgICAgICAgIGtDQUNvbnRleHREaXNwbGF5SWQgOiBAMTAwMDAKKyNlbmRp
ZgorICAgIH1dOworI2VsaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKSAmJiBFTkFCTEUoV0VCUFJP
Q0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCisgICAgVU5VU0VEX1BBUkFNKG9wdGlvbnMpOwor
ICAgIFtDQUNvbnRleHQgc2V0QWxsb3dzQ0dTQ29ubmVjdGlvbnM6Tk9dOworICAgIGxheWVySG9z
dGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQgcmVtb3RlQ29udGV4dFdpdGhPcHRp
b25zOkB7CisgICAgICAgIGtDQUNvbnRleHRDSUZpbHRlckJlaGF2aW9yIDogIEAiaWdub3JlIiwK
KyAgICB9XTsKKyNlbHNlCisgICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9jb250ZXh0ID0gW0NB
Q29udGV4dCBjb250ZXh0V2l0aENHU0Nvbm5lY3Rpb246Q0dTTWFpbkNvbm5lY3Rpb25JRCgpIG9w
dGlvbnM6QHsKKyAgICAgICAga0NBQ29udGV4dENJRmlsdGVyQmVoYXZpb3IgOiBAImlnbm9yZSIs
CisgICAgfV07CisjZW5kaWYKKyAgICAKKyAgICByZXR1cm4gbGF5ZXJIb3N0aW5nQ29udGV4dDsK
K30KKworI2lmIFBMQVRGT1JNKE1BQykKK3N0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250
ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbFBsdWdpbkhvc3RpbmdQ
cm9jZXNzKCkKK3sKKyAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPExh
eWVySG9zdGluZ0NvbnRleHQ+KCk7CisgICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9sYXllckhv
c3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQcm9jZXNzOworICAgIGxheWVySG9z
dGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQgY29udGV4dFdpdGhDR1NDb25uZWN0
aW9uOkNHU01haW5Db25uZWN0aW9uSUQoKSBvcHRpb25zOkB7IGtDQUNvbnRleHRDSUZpbHRlckJl
aGF2aW9yIDogQCJpZ25vcmUiIH1dOworICAgIHJldHVybiBsYXllckhvc3RpbmdDb250ZXh0Owor
fQorI2VuZGlmCisjZW5kaWYgLy8gSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQor
CitMYXllckhvc3RpbmdDb250ZXh0OjpMYXllckhvc3RpbmdDb250ZXh0KCkKK3sKK30KKworTGF5
ZXJIb3N0aW5nQ29udGV4dDo6fkxheWVySG9zdGluZ0NvbnRleHQoKQoreworfQorCit2b2lkIExh
eWVySG9zdGluZ0NvbnRleHQ6OnNldFJvb3RMYXllcihDQUxheWVyICpyb290TGF5ZXIpCit7Cisg
ICAgW21fY29udGV4dCBzZXRMYXllcjpyb290TGF5ZXJdOworfQorCitDQUxheWVyICpMYXllckhv
c3RpbmdDb250ZXh0Ojpyb290TGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBbbV9jb250ZXh0
IGxheWVyXTsKK30KKworTGF5ZXJIb3N0aW5nQ29udGV4dElEIExheWVySG9zdGluZ0NvbnRleHQ6
OmNvbnRleHRJRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2NvbnRleHQgY29udGV4dElkXTsK
K30KKwordm9pZCBMYXllckhvc3RpbmdDb250ZXh0OjppbnZhbGlkYXRlKCkKK3sKKyAgICBbbV9j
b250ZXh0IGludmFsaWRhdGVdOworfQorCit2b2lkIExheWVySG9zdGluZ0NvbnRleHQ6OnNldENv
bG9yU3BhY2UoQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UpCit7CisgICAgW21fY29udGV4dCBz
ZXRDb2xvclNwYWNlOmNvbG9yU3BhY2VdOworfQorCitDR0NvbG9yU3BhY2VSZWYgTGF5ZXJIb3N0
aW5nQ29udGV4dDo6Y29sb3JTcGFjZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2NvbnRleHQg
Y29sb3JTcGFjZV07Cit9CisKKyNpZiBQTEFURk9STShNQUMpCit2b2lkIExheWVySG9zdGluZ0Nv
bnRleHQ6OnNldENvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQoYm9vbCBjb2xvck1hdGNoVW50YWdn
ZWRDb250ZW50KQoreworICAgIFttX2NvbnRleHQgc2V0Q29sb3JNYXRjaFVudGFnZ2VkQ29udGVu
dDpjb2xvck1hdGNoVW50YWdnZWRDb250ZW50XTsKK30KKworYm9vbCBMYXllckhvc3RpbmdDb250
ZXh0Ojpjb2xvck1hdGNoVW50YWdnZWRDb250ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21f
Y29udGV4dCBjb2xvck1hdGNoVW50YWdnZWRDb250ZW50XTsKK30KKyNlbmRpZgorCit2b2lkIExh
eWVySG9zdGluZ0NvbnRleHQ6OnNldEZlbmNlUG9ydChtYWNoX3BvcnRfdCBmZW5jZVBvcnQpCit7
CisgICAgW21fY29udGV4dCBzZXRGZW5jZVBvcnQ6ZmVuY2VQb3J0XTsKK30KKworTWFjaFNlbmRS
aWdodCBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGZW5jZVBvcnQoKQoreworICAgIHJldHVy
biBNYWNoU2VuZFJpZ2h0OjphZG9wdChbbV9jb250ZXh0IGNyZWF0ZUZlbmNlUG9ydF0pOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclNwYWNlLmgKaW5kZXggMGFhMjc0YTFjNTA5NTM1MjZhODhlZTRhNGVmYTNmOWM4
ZDIzN2IzYi4uNmZjZDc4ZmMzZWEzZmIwNTY1NmViNjU3MmRhOGQzZTNkMTNmMjg0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaApAQCAtMzIsNiAr
MzIsNSBAQCBlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90IHsKICAgICBMaW5lYXJSR0Is
CiAgICAgRGlzcGxheVAzCiB9OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAppbmRleCBk
ZDFlYjQ2Nzk0MmUwYmIwNjllYWY3OTZmNzcxY2IwOTMyZmNjOWNjLi41NDM2MWU2NjMwYTI0YTVm
MTE1NzhjNDUyZmUyZDMyY2ZkZTg5M2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29h
LmgKQEAgLTM5LDYgKzM5LDggQEAgcHVibGljOgogICAgIC8vIGlzIGRlZmluZWQgZGlmZmVyZW50
bHkgZm9yIE9iaiBDIGFuZCBDKysuIFRoaXMgYWxsb3dzIGNhbGxlcnMgZnJvbSBib3RoIGxhbmd1
YWdlcy4KICAgICBzdGF0aWMgUmVmPFBsYXRmb3JtQ0FMYXllckNvY29hPiBjcmVhdGUodm9pZCog
cGxhdGZvcm1MYXllciwgUGxhdGZvcm1DQUxheWVyQ2xpZW50Kik7CiAKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmV0YWluUHRyPENBTGF5ZXI+IGNyZWF0ZVBsYXRmb3JtTGF5ZXJGb3JIb3N0
aW5nQ29udGV4dCh1aW50MzJfdCBjb250ZXh0SUQpOworCiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIExheWVyVHlwZSBsYXllclR5cGVGb3JQbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqKTsK
IAogICAgIH5QbGF0Zm9ybUNBTGF5ZXJDb2NvYSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJD
b2NvYS5tbQppbmRleCA2NTI2MGNhYzAxMjhjZGE5NjBiYWRlMTI1MmU2ZjZjYTc3MThkYjJmLi40
ZTk2Mjc3M2EyZGQ0ODlkZmI5MDk3Mzk5OTk1YzBlNjFmMTgxNjIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0
Zm9ybUNBTGF5ZXJDb2NvYS5tbQpAQCAtMzAsNiArMzAsNyBAQAogI2ltcG9ydCAiR3JhcGhpY3ND
b250ZXh0LmgiCiAjaW1wb3J0ICJHcmFwaGljc0xheWVyQ0EuaCIKICNpbXBvcnQgIklPU3VyZmFj
ZS5oIgorI2ltcG9ydCAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgogI2ltcG9ydCAiTGVuZ3RoRnVu
Y3Rpb25zLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EuaCIKICNpbXBvcnQg
IlBsYXRmb3JtQ0FGaWx0ZXJzLmgiCkBAIC03OSw2ICs4MCwxMSBAQCBSZWY8UGxhdGZvcm1DQUxh
eWVyQ29jb2E+IFBsYXRmb3JtQ0FMYXllckNvY29hOjpjcmVhdGUodm9pZCogcGxhdGZvcm1MYXll
ciwgUGxhdAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsYXRmb3JtQ0FMYXllckNvY29hKChf
X2JyaWRnZSBDQUxheWVyICopcGxhdGZvcm1MYXllciwgb3duZXIpKTsKIH0KIAorUmV0YWluUHRy
PENBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllckNvY29hOjpjcmVhdGVQbGF0Zm9ybUxheWVyRm9ySG9z
dGluZ0NvbnRleHQoTGF5ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJRCkKK3sKKyAgICByZXR1
cm4gW0NBTGF5ZXIgX3dlYl9yZW5kZXJMYXllcldpdGhDb250ZXh0SUQ6Y29udGV4dElEXTsKK30K
Kwogc3RhdGljIE5TU3RyaW5nICogY29uc3QgcGxhdGZvcm1DQUxheWVyUG9pbnRlciA9IEAiV0tQ
bGF0Zm9ybUNBTGF5ZXIiOwogUGxhdGZvcm1DQUxheWVyKiBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRm
b3JtQ0FMYXllcih2b2lkKiBwbGF0Zm9ybUxheWVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJh
cy5tbQppbmRleCAyM2JiMGRlOTE2MGRjYjg2N2QyMjMyMDM1MzhhZDVlN2UzMmY1MDA4Li4xODA1
YzBhNWY2Y2ZmMjgzNjVjZjZjOGM4NzEzYjQyZTg1MDI5OGU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXll
ckV4dHJhcy5tbQpAQCAtODEsNiArODEsOSBAQAogKyAoQ0FMYXllciAqKV93ZWJfcmVuZGVyTGF5
ZXJXaXRoQ29udGV4dElEOih1aW50MzJfdCljb250ZXh0SUQKIHsKICAgICBDQUxheWVySG9zdCAq
bGF5ZXJIb3N0ID0gW0NBTGF5ZXJIb3N0IGxheWVyXTsKKyNpZm5kZWYgTkRFQlVHCisgICAgW2xh
eWVySG9zdCBzZXROYW1lOkAiV2ViVmlkZW9Ib3N0aW5nTGF5ZXIiXTsKKyNlbmRpZgogICAgIGxh
eWVySG9zdC5jb250ZXh0SWQgPSBjb250ZXh0SUQ7CiAgICAgcmV0dXJuIGxheWVySG9zdDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJh
bnNmZXJTZXNzaW9uVlQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9J
bWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tCmluZGV4IDE1Mzk3YWI3ZjI3OGFlOGRjNjllMzI1MjM3
NjRmYjg4YmZlZGQwMDcuLjY5NDgwMjQ0NThhMGY3MTkzZjJkYWZmM2Y5Mzk5M2VkZDJlZDk0Mjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJh
bnNmZXJTZXNzaW9uVlQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQpAQCAtMjgsMTggKzI4LDE5IEBACiAKICNpZiBV
U0UoVklERU9UT09MQk9YKQogCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2ltcG9y
dCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCiAjaW1wb3J0IDxD
b3JlTWVkaWEvQ01Gb3JtYXREZXNjcmlwdGlvbi5oPgogI2ltcG9ydCA8Q29yZU1lZGlhL0NNU2Ft
cGxlQnVmZmVyLmg+CisjaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgogI2ltcG9ydCA8cGFs
L2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisjaW1wb3J0ICJWaWRlb1Rvb2xib3hTb2Z0TGluay5o
IgogCiAjaWYgSEFWRShJT1NVUkZBQ0UpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKICNpbmNs
dWRlIDxwYWwvc3BpL2NvY29hL0lPU3VyZmFjZVNQSS5oPgogI2VuZGlmCiAKLSNpbXBvcnQgIkNv
cmVWaWRlb1NvZnRMaW5rLmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFj
ZSBQQUw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVU3dhcENoYWluRGVzY3JpcHRvci5oCmluZGV4IDY1NzA0MjA0NjNjYWFiYTE1
ZmU3ZDczMTYyYWE4ZWE3YmQ0ODFmOTMuLjBlZjliMmY4MGU2ZDBiOWFjOWU5ZmI0Y2FhMjczNDg5
ZGMyMzhlOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaApAQCAtMjgsNiArMjgsNyBAQAog
I2lmIEVOQUJMRShXRUJHUFUpCiAKICNpbmNsdWRlICJHUFVEZXZpY2UuaCIKKyNpbmNsdWRlICJH
UFVFcnJvclNjb3Blcy5oIgogI2luY2x1ZGUgIkdQVVRleHR1cmVGb3JtYXQuaCIKICNpbmNsdWRl
ICJHUFVUZXh0dXJlVXNhZ2UuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKaW5k
ZXggNDc5MzMwOTkwYzM4ZjA2Y2I4NjBjYzM4ZjUzMWNmMzBlMzBkMmVlZi4uYjc3YTJhMmVkNTAz
ZGE3YjRiMjNmNDcxNWNiYTI0Y2EwYTk5Zjc3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyUHJveHlDb25maWd1cmF0aW9uLmgiCiAj
aW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9MYXlv
dXRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTWVkaWFQbGF5ZXJQcml2YXRlLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgpA
QCAtMTk3LDEwICsxOTgsMTAgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6
c3VwcG9ydHNLZXlTeXN0ZW0oTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmcKICAgICBjb21wbGV0
aW9uSGFuZGxlcihyZXN1bHQpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5OjpwcmVwYXJlRm9yUGxheWJhY2soTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmll
ciBpZCwgYm9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9h
ZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJpbmcp
Cit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpwcmVwYXJlRm9yUGxheWJhY2so
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgYm9vbCBwcml2YXRlTW9kZSwg
V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZl
c1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJpbmcsIFdlYkNvcmU6OkxheW91dFBvaW50JiYg
bGF5b3V0UG9pbnQsIFdlYkNvcmU6OkxheW91dFNpemUmJiBsYXlvdXRTaXplLCBmbG9hdCB2aWRl
b0NvbnRlbnRTY2FsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMYXllckhvc3RpbmdDb250ZXh0
SUQgY29udGV4dElkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byBwbGF5
ZXIgPSBtX3Byb3hpZXMuZ2V0KGlkKSkKLSAgICAgICAgcGxheWVyLT5wcmVwYXJlRm9yUGxheWJh
Y2socHJpdmF0ZU1vZGUsIHByZWxvYWQsIHByZXNlcnZlc1BpdGNoLCBwcmVwYXJlRm9yUmVuZGVy
aW5nKTsKKyAgICAgICAgcGxheWVyLT5wcmVwYXJlRm9yUGxheWJhY2socHJpdmF0ZU1vZGUsIHBy
ZWxvYWQsIHByZXNlcnZlc1BpdGNoLCBwcmVwYXJlRm9yUmVuZGVyaW5nLCBMYXlvdXRSZWN0KGxh
eW91dFBvaW50LCBsYXlvdXRTaXplKSwgdmlkZW9Db250ZW50U2NhbGUsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6
bG9hZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBVUkwmJiB1cmwsIE9w
dGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4mJiBzYW5kYm94RXh0ZW5zaW9uLCBXZWJD
b3JlOjpDb250ZW50VHlwZSYmIGNvbnRlbnRUeXBlLCBTdHJpbmcmJiBrZXlTeXN0ZW0sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQpAQCAtMjgxLDEyICsyODIsNiBAQCB2b2lkIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5OjpwcmVwYXJlRm9yUmVuZGVyaW5nKE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZQogICAgICAgICBwbGF5ZXItPnByZXBhcmVGb3JSZW5kZXJpbmcoKTsKIH0KIAotdm9pZCBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c2V0U2l6ZShNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyIGlkLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQotewotICAg
IGlmIChhdXRvIHBsYXllciA9IG1fcHJveGllcy5nZXQoaWQpKQotICAgICAgICBwbGF5ZXItPnNl
dFNpemUoc2l6ZSk7Ci19Ci0KIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnNl
dFZpc2libGUoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgYm9vbCB2aXNp
YmxlKQogewogICAgIGlmIChhdXRvIHBsYXllciA9IG1fcHJveGllcy5nZXQoaWQpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkuaAppbmRleCBkMzdjZjE4YWEzMjc5MjhiNDFmMmQwYTVmM2M4MGYz
MGZmMWUxZjFlLi5iOTY5MzU4NWY0MTg2YzQ0ODM2NGIwOWY1ZWQ1OTg0MjdmOGU1ZWNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaApAQCAtMzQsNiArMzQsMTAgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL01lZGlhUGxheWVyLmg+CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogCitu
YW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBMYXllckhvc3RpbmdDb250ZXh0SUQgPSB1aW50MzJf
dDsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M7CkBAIC04NCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdXBwb3J0c0tleVN5
c3RlbShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYmLCBjb25zdCBTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CiAKICAgICB2b2lkIGxvYWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmll
ciwgVVJMJiYsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4mJiwgV2ViQ29yZTo6
Q29udGVudFR5cGUmJiwgU3RyaW5nJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVk
aWFQbGF5ZXJDb25maWd1cmF0aW9uJiYpPiYmKTsKLSAgICB2b2lkIHByZXBhcmVGb3JQbGF5YmFj
ayhNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBib29sIHByaXZhdGVNb2RlLCBX
ZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBi
b29sIHByZXBhcmVGb3JSZW5kZXJpbmcpOworICAgIHZvaWQgcHJlcGFyZUZvclBsYXliYWNrKE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIGJvb2wgcHJpdmF0ZU1vZGUsIFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wg
cHJlcGFyZUZvclJlbmRlcmluZywgV2ViQ29yZTo6TGF5b3V0UG9pbnQmJiwgV2ViQ29yZTo6TGF5
b3V0U2l6ZSYmLCBmbG9hdCB2aWRlb0NvbnRlbnRTY2FsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpMYXllckhvc3RpbmdDb250ZXh0SUQgY29udGV4dElkKT4mJik7CiAgICAgdm9p
ZCBjYW5jZWxMb2FkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpOwogICAgIHZv
aWQgcHJlcGFyZVRvUGxheShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyKTsKIApA
QCAtMTAyLDcgKzEwNiw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRQcmVzZXJ2ZXNQaXRjaChN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBib29sKTsKIAogICAgIHZvaWQgcHJl
cGFyZUZvclJlbmRlcmluZyhNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyKTsKLSAg
ICB2b2lkIHNldFNpemUoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIHZvaWQgc2V0VmlzaWJsZShNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyLCBib29sKTsKICAgICB2b2lkIHNldFNob3VsZE1haW50YWluQXNw
ZWN0UmF0aW8oTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgYm9vbCk7CiAgICAg
dm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpGbG9hdFJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGIxZTE0MjBiYTljMTEwODkyZDk4OGM1NjlhZjIwZTdl
YWM3NGI5YjAuLmZkYTlmYzYwZGI3YjlkMGU3ZTZmM2I3NDI3YTVlYTkyMzZjZTgxYTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTM1LDcgKzM1
LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgTm90UmVmQ291
bnRlZCB7CiAgICAgQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhlbnVtOnVpbnQ4X3QgV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlk
ZW50aWZpZXIsIFN0cmluZyBwYXRoLCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
PiBvcmlnaW5zKQogICAgIFN1cHBvcnRzS2V5U3lzdGVtKGVudW06dWludDhfdCBXZWJDb3JlOjpN
ZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRp
ZmllciwgU3RyaW5nIGtleVN5c3RlbSwgU3RyaW5nIG1pbWVUeXBlKSAtPiAoYm9vbCBzdXBwb3J0
cykgU3luY2hyb25vdXMKIAotICAgIFByZXBhcmVGb3JQbGF5YmFjayhXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIGJvb2wgcHJpdmF0ZU1vZGUsIGVudW06dWlu
dDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkIHByZWxvYWQsIGJvb2wgcHJl
c2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZykKKyAgICBQcmVwYXJlRm9yUGxh
eWJhY2soV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBib29s
IHByaXZhdGVNb2RlLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJl
bG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJp
bmcsIFdlYkNvcmU6OkxheW91dFBvaW50IGxheW91dFBvaW50LCBXZWJDb3JlOjpMYXlvdXRTaXpl
IGxheW91dFNpemUsIGZsb2F0IHZpZGVvQ29udGVudFNjYWxlKSAtPiAoV2ViQ29yZTo6TGF5ZXJI
b3N0aW5nQ29udGV4dElEIGxheWVySG9zdGluZ0NvbnRleHRJZCkgQXN5bmMKIAogICAgIExvYWQo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBVUkwgdXJsLCBP
cHRpb25hbDxXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gc2FuZGJveEV4dGVuc2lv
biwgV2ViQ29yZTo6Q29udGVudFR5cGUgY29udGVudFR5cGUsIFN0cmluZyBrZXlTeXN0ZW0pIC0+
IChzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24gcGxheWVyQ29u
ZmlndXJhdGlvbikgQXN5bmMKICAgICBDYW5jZWxMb2FkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlSWRlbnRpZmllciBpZCkKQEAgLTU2LDcgKzU2LDYgQEAgbWVzc2FnZXMgLT4gUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgTm90UmVmQ291bnRlZCB7CiAgICAgU2V0UHJlc2Vy
dmVzUGl0Y2goV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBi
b29sIHByZXNlcnZlc1BpdGNoKQogCiAgICAgUHJlcGFyZUZvclJlbmRlcmluZyhXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQpCi0gICAgU2V0U2l6ZShXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFdlYkNvcmU6OkludFNpemUg
c2l6ZSkKICAgICBTZXRWaXNpYmxlKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllciBpZCwgYm9vbCB2aXNpYmxlKQogICAgIFNldFNob3VsZE1haW50YWluQXNwZWN0UmF0
aW8oV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBib29sIG1h
aW50YWluQXNwZWN0UmF0aW8pCiAgICAgU2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBXZWJDb3JlOjpGbG9hdFJlY3Qg
cmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCBhMTQxN2EyOGE2NTBiMGQyZmUxYmM1Y2EzMmNk
YmNkMGMwYjlmNTE3Li5iNGZhM2Q3YTFiZDUxYmFiOGE5NTU5OTJmNDUzMWI2OTllMzA0YTdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiUmVtb3RlTWVk
aWFSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9MYXlvdXRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJ
bXBsZW1lbnRlZC5oPgpAQCAtMTAzLDEyICsxMDQsMTYgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXll
clByb3h5Ojpsb2FkKGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpI
YW4KICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKIH0KIAot
dm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpwcmVwYXJlRm9yUGxheWJhY2soYm9vbCBwcml2
YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZCBwcmVsb2FkLCBib29s
IHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJpbmcpCit2b2lkIFJlbW90ZU1l
ZGlhUGxheWVyUHJveHk6OnByZXBhcmVGb3JQbGF5YmFjayhib29sIHByaXZhdGVNb2RlLCBXZWJD
b3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkIHByZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0
Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZywgTGF5b3V0UmVjdCYmIGxheW91dFJlY3QsIGZs
b2F0IHZpZGVvQ29udGVudFNjYWxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKExheWVySG9zdGlu
Z0NvbnRleHRJRCBjb250ZXh0SWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fcGxh
eWVyLT5zZXRQcml2YXRlQnJvd3NpbmdNb2RlKHByaXZhdGVNb2RlKTsKICAgICBtX3BsYXllci0+
c2V0UHJlbG9hZChwcmVsb2FkKTsKICAgICBtX3BsYXllci0+c2V0UHJlc2VydmVzUGl0Y2gocHJl
c2VydmVzUGl0Y2gpOwogICAgIG1fcGxheWVyLT5wcmVwYXJlRm9yUmVuZGVyaW5nKCk7CisgICAg
bV92aWRlb0NvbnRlbnRCb3hSZWN0ID0gbGF5b3V0UmVjdDsKKyAgICBtX3ZpZGVvQ29udGVudFNj
YWxlID0gdmlkZW9Db250ZW50U2NhbGU7CisgICAgbV9sYXllckhvc3RpbmdDb250ZXh0ID0gTGF5
ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2VzcygpOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+Y29udGV4dElEKCkpOwog
fQogCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmNhbmNlbExvYWQoKQpAQCAtMTc3LDEx
ICsxODIsNiBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnByZXBhcmVGb3JSZW5kZXJp
bmcoKQogICAgIG1fcGxheWVyLT5wcmVwYXJlRm9yUmVuZGVyaW5nKCk7CiB9CiAKLXZvaWQgUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXpl
KQotewotICAgIG1fcGxheWVyLT5zZXRTaXplKHNpemUpOwotfQotCiB2b2lkIFJlbW90ZU1lZGlh
UGxheWVyUHJveHk6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogewogICAgIG1fcGxheWVyLT5z
ZXRWaXNpYmxlKHZpc2libGUpOwpAQCAtMzgyLDEyICszODIsMTMgQEAgdm9pZCBSZW1vdGVNZWRp
YVBsYXllclByb3h5OjptZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoKQogCiB2b2lkIFJlbW90ZU1l
ZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyRmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKCkKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Um9v
dExheWVyKG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Rmlyc3RWaWRl
b0ZyYW1lQXZhaWxhYmxlKG1faWQpLCAwKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjptZWRpYVBsYXllclJlbmRlcmluZ01vZGVDaGFuZ2VkKCkKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Um9vdExheWVyKG1fcGxheWVy
LT5wbGF0Zm9ybUxheWVyKCkpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1l
ZGlhUGxheWVyQWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQoKQpAQCAtNDQ4LDE0ICs0NDksMTIg
QEAgYm9vbCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllcklzRnVsbHNjcmVlblBl
cm1pdHRlZCgpIGNvbnN0CiAKIExheW91dFJlY3QgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVk
aWFQbGF5ZXJDb250ZW50Qm94UmVjdCgpIGNvbnN0CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gTGF5b3V0UmVjdCgpOworICAgIHJldHVybiBtX3ZpZGVvQ29udGVudEJveFJl
Y3Q7CiB9CiAKIGZsb2F0IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyQ29udGVu
dHNTY2FsZSgpIGNvbnN0CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMTsK
KyAgICByZXR1cm4gbV92aWRlb0NvbnRlbnRTY2FsZTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVBs
YXllclByb3h5OjptZWRpYVBsYXllclBhdXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCmluZGV4IGZjYzM2NjRj
MjQ0ZTMyOGQ2ZGNhZGZhZGMxOTg4MmUzMjYzZmVjMmUuLjdmYjlmNWUwNzI3ZTA2M2EzMTQ0YjI0
YTZhZDk5MjQzOTE5NjA0N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaApAQCAtNDMsNiArNDMsMTAgQEAKICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAorbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgTGF5ZXJIb3N0aW5nQ29udGV4dDsKK30KKwogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OwpAQCAtNTks
NyArNjMsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldENvbmZpZ3VyYXRpb24oUmVtb3RlTWVk
aWFQbGF5ZXJDb25maWd1cmF0aW9uJik7CiAKLSAgICB2b2lkIHByZXBhcmVGb3JQbGF5YmFjayhi
b29sIHByaXZhdGVNb2RlLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkLCBib29s
IHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJpbmcpOworICAgIHZvaWQgcHJl
cGFyZUZvclBsYXliYWNrKGJvb2wgcHJpdmF0ZU1vZGUsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51
bXM6OlByZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmlu
ZywgV2ViQ29yZTo6TGF5b3V0UmVjdCYmLCBmbG9hdCB2aWRlb0NvbnRlbnRTY2FsZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpMYXllckhvc3RpbmdDb250ZXh0SUQgY29udGV4dElk
KT4mJik7CisgICAgdm9pZCBwcmVwYXJlRm9yUmVuZGVyaW5nKCk7CiAKICAgICB2b2lkIGxvYWQo
Y29uc3QgVVJMJiwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYmLCBjb25zdCBX
ZWJDb3JlOjpDb250ZW50VHlwZSYsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJiYpPiYmKTsKICAgICB2b2lkIGNhbmNl
bExvYWQoKTsKQEAgLTc5LDggKzg0LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJpdmF0ZUJy
b3dzaW5nTW9kZShib29sKTsKICAgICB2b2lkIHNldFByZXNlcnZlc1BpdGNoKGJvb2wpOwogCi0g
ICAgdm9pZCBwcmVwYXJlRm9yUmVuZGVyaW5nKCk7Ci0gICAgdm9pZCBzZXRTaXplKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmKTsKICAgICB2b2lkIHNldFZpc2libGUoYm9vbCk7CiAgICAgdm9pZCBz
ZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKGJvb2wpOwogICAgIHZvaWQgc2V0VmlkZW9GdWxs
c2NyZWVuRnJhbWUoV2ViQ29yZTo6RmxvYXRSZWN0KTsKQEAgLTE5MCw2ICsxOTMsNyBAQCBwcml2
YXRlOgogICAgIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBtX3NhbmRib3hFeHRlbnNpb247CiAg
ICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbjsKICAgICBSZWZQ
dHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXI+IG1fcGxheWVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxM
YXllckhvc3RpbmdDb250ZXh0PiBtX2xheWVySG9zdGluZ0NvbnRleHQ7CiAgICAgUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkmIG1fbWFuYWdlcjsKICAgICBXZWJDb3JlOjpNZWRpYVBsYXll
ckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgbV9lbmdpbmVJZGVudGlmaWVyOwogICAgIFZl
Y3RvcjxXZWJDb3JlOjpDb250ZW50VHlwZT4gbV90eXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9y
dDsKQEAgLTE5OSw2ICsyMDMsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zZWVrYWJsZUNoYW5n
ZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2J1ZmZlcmVkQ2hhbmdlZCB7IHRydWUgfTsKICAgICBi
b29sIG1fcmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZCB7IHRydWUgfTsKKyAgICBXZWJDb3JlOjpM
YXlvdXRSZWN0IG1fdmlkZW9Db250ZW50Qm94UmVjdDsKKyAgICBmbG9hdCBtX3ZpZGVvQ29udGVu
dFNjYWxlIHsgMS4wIH07CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBM
b2dnZXImIG1fbG9nZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMv
TGF5ZXJIb3N0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJI
b3N0aW5nQ29udGV4dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OWNhZGZlNmRi
MTZmY2M5NDNhOGYxOTJlNWQwMWZmOGMwMTQ3NjhlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9z
dGluZ0NvbnRleHQuaAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTItMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgotI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX0NMQVNTIENBTGF5ZXI7Ci1PQkpDX0NMQVNT
IENBQ29udGV4dDsKLQotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBNYWNoU2VuZFJpZ2h0OwotfQot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdXNpbmcgTGF5ZXJIb3N0aW5nQ29udGV4dElEID0gdWlu
dDMyX3Q7Ci0gICAgCi1zdHJ1Y3QgTGF5ZXJIb3N0aW5nQ29udGV4dE9wdGlvbnMgewotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgYm9vbCBjYW5TaG93V2hpbGVMb2NrZWQgeyBmYWxzZSB9
OwotI2VuZGlmCi19OwotCi1jbGFzcyBMYXllckhvc3RpbmdDb250ZXh0IHsKLSAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShMYXllckhvc3RpbmdDb250ZXh0KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250
ZXh0PiBjcmVhdGVGb3JQb3J0KGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc2VydmVyUG9ydCk7
Ci0gICAgCi0jaWYgSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQotICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gY3JlYXRlRm9yRXh0ZXJuYWxI
b3N0aW5nUHJvY2Vzcyhjb25zdCBMYXllckhvc3RpbmdDb250ZXh0T3B0aW9ucyYgPSB7IH0pOwot
Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0
aW5nQ29udGV4dD4gY3JlYXRlRm9yRXh0ZXJuYWxQbHVnaW5Ib3N0aW5nUHJvY2VzcygpOwotI2Vu
ZGlmCi0gICAgCi0jZW5kaWYgLy8gSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQot
Ci0gICAgTGF5ZXJIb3N0aW5nQ29udGV4dCgpOwotICAgIH5MYXllckhvc3RpbmdDb250ZXh0KCk7
Ci0KLSAgICB2b2lkIHNldFJvb3RMYXllcihDQUxheWVyICopOwotICAgIENBTGF5ZXIgKnJvb3RM
YXllcigpIGNvbnN0OwotCi0gICAgTGF5ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJRCgpIGNv
bnN0OwotICAgIHZvaWQgaW52YWxpZGF0ZSgpOwotCi0gICAgTGF5ZXJIb3N0aW5nTW9kZSBsYXll
ckhvc3RpbmdNb2RlKCkgeyByZXR1cm4gbV9sYXllckhvc3RpbmdNb2RlOyB9Ci0KLSAgICB2b2lk
IHNldENvbG9yU3BhY2UoQ0dDb2xvclNwYWNlUmVmKTsKLSAgICBDR0NvbG9yU3BhY2VSZWYgY29s
b3JTcGFjZSgpIGNvbnN0OwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIHZvaWQgc2V0Q29sb3JN
YXRjaFVudGFnZ2VkQ29udGVudChib29sKTsKLSAgICBib29sIGNvbG9yTWF0Y2hVbnRhZ2dlZENv
bnRlbnQoKSBjb25zdDsKLSNlbmRpZgotCi0gICAgLy8gRmVuY2VzIG9ubHkgd29yayBvbiBpT1Mg
YW5kIE9TIDEwLjEwKy4KLSAgICB2b2lkIHNldEZlbmNlUG9ydChtYWNoX3BvcnRfdCk7Ci0KLSAg
ICAvLyBjcmVhdGVGZW5jZVBvcnQgZG9lcyBub3QgaW5zdGFsbCB0aGUgZmVuY2UgcG9ydCBvbiB0
aGUgTGF5ZXJIb3N0aW5nQ29udGV4dCdzCi0gICAgLy8gQ0FDb250ZXh0OyBjYWxsIHNldEZlbmNl
UG9ydCgpIHdpdGggdGhlIG5ld2x5IGNyZWF0ZWQgcG9ydCBpZiBzeW5jaHJvbml6YXRpb24KLSAg
ICAvLyB3aXRoIHRoaXMgY29udGV4dCBpcyBkZXNpcmVkLgotICAgIFdURjo6TWFjaFNlbmRSaWdo
dCBjcmVhdGVGZW5jZVBvcnQoKTsKLQotcHJpdmF0ZToKLSAgICBMYXllckhvc3RpbmdNb2RlIG1f
bGF5ZXJIb3N0aW5nTW9kZTsKLSAgICBSZXRhaW5QdHI8Q0FDb250ZXh0PiBtX2NvbnRleHQ7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDdhZWU0N2VhYjk1ZjU4YTZiNDE3ODVjMGY0ZmY3ZjAyYjA0Y2Y0NDMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE1MyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkxheWVy
SG9zdGluZ0NvbnRleHQuaCIKLQotI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEku
aD4KLSNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgotI2ltcG9ydCA8d3Rm
L01hY2hTZW5kUmlnaHQuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0ZDo6dW5pcXVlX3B0
cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JQb3J0
KGNvbnN0IE1hY2hTZW5kUmlnaHQmIHNlcnZlclBvcnQpCi17Ci0gICAgYXV0byBsYXllckhvc3Rp
bmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOwotCi0gICAgTlNE
aWN0aW9uYXJ5ICpvcHRpb25zID0gQHsKLSAgICAgICAga0NBQ29udGV4dFBvcnROdW1iZXIgOiBA
KHNlcnZlclBvcnQuc2VuZFJpZ2h0KCkpLAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAga0NB
Q29udGV4dENJRmlsdGVyQmVoYXZpb3IgOiBAImlnbm9yZSIsCi0jZW5kaWYKLSAgICB9OwotCi0g
ICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9sYXllckhvc3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5n
TW9kZTo6SW5Qcm9jZXNzOwotICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtD
QUNvbnRleHQgcmVtb3RlQ29udGV4dFdpdGhPcHRpb25zOm9wdGlvbnNdOwotCi0gICAgcmV0dXJu
IGxheWVySG9zdGluZ0NvbnRleHQ7Ci19Ci0KLSNpZiBIQVZFKE9VVF9PRl9QUk9DRVNTX0xBWUVS
X0hPU1RJTkcpCi1zdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0
aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2Vzcyhjb25zdCBMYXllckhv
c3RpbmdDb250ZXh0T3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICBhdXRvIGxheWVySG9zdGluZ0Nv
bnRleHQgPSBtYWtlVW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7Ci0gICAgbGF5ZXJIb3N0
aW5nQ29udGV4dC0+bV9sYXllckhvc3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQ
cm9jZXNzOwotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFM
WVNUKQotICAgIC8vIFVzZSBhIHZlcnkgbGFyZ2UgZGlzcGxheSBJRCB0byBlbnN1cmUgdGhhdCB0
aGUgY29udGV4dCBpcyBuZXZlciBwdXQgb24tc2NyZWVuIAotICAgIC8vIHdpdGhvdXQgYmVpbmcg
ZXhwbGljaXRseSBwYXJlbnRlZC4gU2VlIDxyZGFyOi8vcHJvYmxlbS8xNjA4OTI2Nz4gZm9yIGRl
dGFpbHMuCi0gICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9jb250ZXh0ID0gW0NBQ29udGV4dCBy
ZW1vdGVDb250ZXh0V2l0aE9wdGlvbnM6QHsKLSAgICAgICAga0NBQ29udGV4dFNlY3VyZTogQChv
cHRpb25zLmNhblNob3dXaGlsZUxvY2tlZCksCi0jaWYgSEFWRShDT1JFX0FOSU1BVElPTl9SRU5E
RVJfU0VSVkVSKQotICAgICAgICBrQ0FDb250ZXh0SWdub3Jlc0hpdFRlc3QgOiBAWUVTLAotICAg
ICAgICBrQ0FDb250ZXh0RGlzcGxheUlkIDogQDEwMDAwCi0jZW5kaWYKLSAgICB9XTsKLSNlbGlm
ICFQTEFURk9STShNQUNDQVRBTFlTVCkgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVS
X0JMT0NLSU5HKQotICAgIFtDQUNvbnRleHQgc2V0QWxsb3dzQ0dTQ29ubmVjdGlvbnM6Tk9dOwot
ICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQgcmVtb3RlQ29u
dGV4dFdpdGhPcHRpb25zOkB7Ci0gICAgICAgIGtDQUNvbnRleHRDSUZpbHRlckJlaGF2aW9yIDog
IEAiaWdub3JlIiwKLSAgICB9XTsKLSNlbHNlCi0gICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9j
b250ZXh0ID0gW0NBQ29udGV4dCBjb250ZXh0V2l0aENHU0Nvbm5lY3Rpb246Q0dTTWFpbkNvbm5l
Y3Rpb25JRCgpIG9wdGlvbnM6QHsKLSAgICAgICAga0NBQ29udGV4dENJRmlsdGVyQmVoYXZpb3Ig
OiBAImlnbm9yZSIsCi0gICAgfV07Ci0jZW5kaWYKLSAgICAKLSAgICByZXR1cm4gbGF5ZXJIb3N0
aW5nQ29udGV4dDsKLX0KLQotI2lmIFBMQVRGT1JNKE1BQykKLXN0ZDo6dW5pcXVlX3B0cjxMYXll
ckhvc3RpbmdDb250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbFBs
dWdpbkhvc3RpbmdQcm9jZXNzKCkKLXsKLSAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBt
YWtlVW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7Ci0gICAgbGF5ZXJIb3N0aW5nQ29udGV4
dC0+bV9sYXllckhvc3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQcm9jZXNzOwot
ICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQgY29udGV4dFdp
dGhDR1NDb25uZWN0aW9uOkNHU01haW5Db25uZWN0aW9uSUQoKSBvcHRpb25zOkB7IGtDQUNvbnRl
eHRDSUZpbHRlckJlaGF2aW9yIDogQCJpZ25vcmUiIH1dOwotICAgIHJldHVybiBsYXllckhvc3Rp
bmdDb250ZXh0OwotfQotI2VuZGlmCi0jZW5kaWYgLy8gSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlF
Ul9IT1NUSU5HKQotCi1MYXllckhvc3RpbmdDb250ZXh0OjpMYXllckhvc3RpbmdDb250ZXh0KCkK
LXsKLX0KLQotTGF5ZXJIb3N0aW5nQ29udGV4dDo6fkxheWVySG9zdGluZ0NvbnRleHQoKQotewot
fQotCi12b2lkIExheWVySG9zdGluZ0NvbnRleHQ6OnNldFJvb3RMYXllcihDQUxheWVyICpyb290
TGF5ZXIpCi17Ci0gICAgW21fY29udGV4dCBzZXRMYXllcjpyb290TGF5ZXJdOwotfQotCi1DQUxh
eWVyICpMYXllckhvc3RpbmdDb250ZXh0Ojpyb290TGF5ZXIoKSBjb25zdAotewotICAgIHJldHVy
biBbbV9jb250ZXh0IGxheWVyXTsKLX0KLQotTGF5ZXJIb3N0aW5nQ29udGV4dElEIExheWVySG9z
dGluZ0NvbnRleHQ6OmNvbnRleHRJRCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX2NvbnRleHQg
Y29udGV4dElkXTsKLX0KLQotdm9pZCBMYXllckhvc3RpbmdDb250ZXh0OjppbnZhbGlkYXRlKCkK
LXsKLSAgICBbbV9jb250ZXh0IGludmFsaWRhdGVdOwotfQotCi12b2lkIExheWVySG9zdGluZ0Nv
bnRleHQ6OnNldENvbG9yU3BhY2UoQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UpCi17Ci0gICAg
W21fY29udGV4dCBzZXRDb2xvclNwYWNlOmNvbG9yU3BhY2VdOwotfQotCi1DR0NvbG9yU3BhY2VS
ZWYgTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y29sb3JTcGFjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IFttX2NvbnRleHQgY29sb3JTcGFjZV07Ci19Ci0KLSNpZiBQTEFURk9STShNQUMpCi12b2lkIExh
eWVySG9zdGluZ0NvbnRleHQ6OnNldENvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQoYm9vbCBjb2xv
ck1hdGNoVW50YWdnZWRDb250ZW50KQotewotICAgIFttX2NvbnRleHQgc2V0Q29sb3JNYXRjaFVu
dGFnZ2VkQ29udGVudDpjb2xvck1hdGNoVW50YWdnZWRDb250ZW50XTsKLX0KLQotYm9vbCBMYXll
ckhvc3RpbmdDb250ZXh0Ojpjb2xvck1hdGNoVW50YWdnZWRDb250ZW50KCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gW21fY29udGV4dCBjb2xvck1hdGNoVW50YWdnZWRDb250ZW50XTsKLX0KLSNlbmRp
ZgotCi12b2lkIExheWVySG9zdGluZ0NvbnRleHQ6OnNldEZlbmNlUG9ydChtYWNoX3BvcnRfdCBm
ZW5jZVBvcnQpCi17Ci0gICAgW21fY29udGV4dCBzZXRGZW5jZVBvcnQ6ZmVuY2VQb3J0XTsKLX0K
LQotTWFjaFNlbmRSaWdodCBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGZW5jZVBvcnQoKQot
ewotICAgIHJldHVybiBNYWNoU2VuZFJpZ2h0OjphZG9wdChbbV9jb250ZXh0IGNyZWF0ZUZlbmNl
UG9ydF0pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggZWE3MTFk
MzJlMjU1ZjczYzM3NTJmNDI5ZjBlYTcyMjE1YjljOTMzYS4uYzUzMTljYTZkYWEzZGMzY2Q5ZDEy
N2U2MDZlNGJkYjM0YTAzYzUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9j
ZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Q
cm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAKICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1
ZGUgIkxheWVySG9zdGluZ0NvbnRleHQuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTGF5ZXJIb3N0aW5n
Q29udGV4dC5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCmluZGV4IGFkNGZj
ZDlkOGNjZjQyZjEyZWU0ODhlMDEzNDZjNjE5YTcwMWI4ZDIuLjM1MDlmZGUwMjEwMWM3ZTRlNTI3
MjQ3ZDVhOTJmNGNkYzQwMWRlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblBy
b2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKQEAgLTM4LDEyICszOCwxNiBAQAogI2luY2x1
ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBJUEMgewotICAgIGNsYXNzIERhdGFSZWZl
cmVuY2U7CitjbGFzcyBEYXRhUmVmZXJlbmNlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBMYXllckhvc3RpbmdDb250ZXh0OworZW51bSBjbGFzcyBMYXllckhvc3RpbmdNb2RlIDog
dWludDhfdDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIExheWVySG9zdGluZ0Nv
bnRleHQ7CiBjbGFzcyBTaGFyZWFibGVCaXRtYXA7CiBjbGFzcyBXZWJQcm9jZXNzQ29ubmVjdGlv
bjsKIHN0cnVjdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM7CkBAIC0xNTksNyArMTYzLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNlbmRDb21wbGV4VGV4dElucHV0KGNvbnN0IFN0cmluZyYgdGV4
dElucHV0KTsKICAgICB2b2lkIHNldExheWVySG9zdGluZ01vZGUodWludDMyX3QpOwogCi0gICAg
dm9pZCB1cGRhdGVMYXllckhvc3RpbmdDb250ZXh0KExheWVySG9zdGluZ01vZGUpOworICAgIHZv
aWQgdXBkYXRlTGF5ZXJIb3N0aW5nQ29udGV4dChXZWJDb3JlOjpMYXllckhvc3RpbmdNb2RlKTsK
ICNlbmRpZgogCiAgICAgdm9pZCBzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoYm9vbCk7CkBA
IC0yMTQsNyArMjE4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNDb21wbGV4VGV4dElucHV0
RW5hYmxlZDsKIAogICAgIC8vIEZvciBDQSBwbHVnLWlucywgdGhpcyBob2xkcyB0aGUgaW5mb3Jt
YXRpb24gbmVlZGVkIHRvIGV4cG9ydCB0aGUgbGF5ZXIgaGllcmFyY2h5IHRvIHRoZSBVSSBwcm9j
ZXNzLgotICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBtX2xheWVySG9z
dGluZ0NvbnRleHQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxheWVySG9zdGluZ0Nv
bnRleHQ+IG1fbGF5ZXJIb3N0aW5nQ29udGV4dDsKICNlbmRpZgogCiAgICAgLy8gVGhlIGNvbnRl
bnRzIHNjYWxlIGZhY3RvciBvZiB0aGlzIHBsdWctaW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpbkNvbnRyb2xsZXJQcm94eU1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luQ29udHJvbGxlclByb3h5TWFjLm1tCmlu
ZGV4IDU2ODBiOTA3YjZhNjYwNTJkZTAwYmRmNzRiMTMxNjNiNWQzYjU4YjMuLmFkMTAxNWEyZDQw
ZDAxYjJjMGY1MTJkNTg2NmFiMDk5NTQ0ZGRmOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luQ29udHJvbGxlclByb3h5TWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luQ29udHJvbGxlclByb3h5TWFjLm1tCkBA
IC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAotI2lt
cG9ydCAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgogI2ltcG9ydCAiUGx1Z2luQ3JlYXRpb25QYXJh
bWV0ZXJzLmgiCiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzLmgiCiAjaW1wb3J0ICJQbHVnaW5Qcm9j
ZXNzUHJveHlNZXNzYWdlcy5oIgpAQCAtMzYsNiArMzUsNyBAQAogI2ltcG9ydCAiV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24uaCIKICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgorI2ltcG9ydCA8V2ViQ29yZS9MYXllckhv
c3RpbmdDb250ZXh0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC0xMDAsNyArMTAwLDcg
QEAgdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnNlbmRDb21wbGV4VGV4dElucHV0KGNvbnN0
IFN0cmluZyYgdGV4dElucHV0KQogCiB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c2V0TGF5
ZXJIb3N0aW5nTW9kZSh1aW50MzJfdCBvcGFxdWVMYXllckhvc3RpbmdNb2RlKQogewotICAgIExh
eWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9kZSA9IHN0YXRpY19jYXN0PExheWVySG9zdGlu
Z01vZGU+KG9wYXF1ZUxheWVySG9zdGluZ01vZGUpOworICAgIFdlYkNvcmU6OkxheWVySG9zdGlu
Z01vZGUgbGF5ZXJIb3N0aW5nTW9kZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkxheWVySG9zdGlu
Z01vZGU+KG9wYXF1ZUxheWVySG9zdGluZ01vZGUpOwogCiAgICAgbV9wbHVnaW4tPnNldExheWVy
SG9zdGluZ01vZGUobGF5ZXJIb3N0aW5nTW9kZSk7CiAgICAgdXBkYXRlTGF5ZXJIb3N0aW5nQ29u
dGV4dChsYXllckhvc3RpbmdNb2RlKTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFBsdWdpbkNv
bnRyb2xsZXJQcm94eTo6c2V0TGF5ZXJIb3N0aW5nTW9kZSh1aW50MzJfdCBvcGFxdWVMYXllckhv
c3RpbmdNb2RlKQogICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6UGx1Z2luUHJveHk6OlNldExheWVySG9zdGluZ0NvbnRleHRJRChtX2xheWVySG9zdGlu
Z0NvbnRleHQtPmNvbnRleHRJRCgpKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KIAotdm9pZCBQ
bHVnaW5Db250cm9sbGVyUHJveHk6OnVwZGF0ZUxheWVySG9zdGluZ0NvbnRleHQoTGF5ZXJIb3N0
aW5nTW9kZSBsYXllckhvc3RpbmdNb2RlKQordm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnVw
ZGF0ZUxheWVySG9zdGluZ0NvbnRleHQoV2ViQ29yZTo6TGF5ZXJIb3N0aW5nTW9kZSBsYXllckhv
c3RpbmdNb2RlKQogewogICAgIENBTGF5ZXIgKnBsYXRmb3JtTGF5ZXIgPSBtX3BsdWdpbi0+cGx1
Z2luTGF5ZXIoKTsKICAgICBpZiAoIXBsYXRmb3JtTGF5ZXIpCkBAIC0xMjMsMTMgKzEyMywxMyBA
QCB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6dXBkYXRlTGF5ZXJIb3N0aW5nQ29udGV4dChM
YXllckhvc3RpbmdNb2RlIGxheWVySG9zdAogICAgIH0KIAogICAgIHN3aXRjaCAobGF5ZXJIb3N0
aW5nTW9kZSkgewotICAgICAgICBjYXNlIExheWVySG9zdGluZ01vZGU6OkluUHJvY2VzczoKLSAg
ICAgICAgICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dCA9IExheWVySG9zdGluZ0NvbnRleHQ6OmNy
ZWF0ZUZvclBvcnQoUGx1Z2luUHJvY2Vzczo6c2luZ2xldG9uKCkuY29tcG9zaXRpbmdSZW5kZXJT
ZXJ2ZXJQb3J0KCkpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpMYXll
ckhvc3RpbmdNb2RlOjpJblByb2Nlc3M6CisgICAgICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dCA9
IFdlYkNvcmU6OkxheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvclBvcnQoUGx1Z2luUHJvY2Vz
czo6c2luZ2xldG9uKCkuY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0KCkpOworICAgICAgICBi
cmVhazsKICNpZiBIQVZFKE9VVF9PRl9QUk9DRVNTX0xBWUVSX0hPU1RJTkcpCi0gICAgICAgIGNh
c2UgTGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQcm9jZXNzOgotICAgICAgICAgICAgbV9sYXllckhv
c3RpbmdDb250ZXh0ID0gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJuYWxQbHVn
aW5Ib3N0aW5nUHJvY2VzcygpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3Jl
OjpMYXllckhvc3RpbmdNb2RlOjpPdXRPZlByb2Nlc3M6CisgICAgICAgIG1fbGF5ZXJIb3N0aW5n
Q29udGV4dCA9IFdlYkNvcmU6OkxheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFs
UGx1Z2luSG9zdGluZ1Byb2Nlc3MoKTsKKyAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGNlZmYzYzI2MDVh
MWY4NWQ1ZDk5MGE2NGMzZjI4MjAzZDExNTIzMjAuLmMwYjI3MDcxNDNkZDljNWUyM2FmNTE2Mzcy
YjA1MDgxMzNkZTg2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQpAQCAtMjA3LDYgKzIwNyw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2Rl
Y2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXInLAogICAgICAg
ICAnV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpMYXllckhvc3RpbmdDb250ZXh0SUQnLAogICAg
ICAgICAnV2ViQ29yZTo6TGliV2ViUlRDU29ja2V0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQb2ludGVySUQnLApAQCAt
MjE4LDcgKzIxOSw2IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVk
KCk6CiAgICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyJywKICAg
ICAgICAgJ1dlYktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlEJywKLSAgICAgICAgJ1dlYktpdDo6
TGF5ZXJIb3N0aW5nQ29udGV4dElEJywKICAgICAgICAgJ1dlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6Ok1lZGlhUmVjb3JkZXJJZGVu
dGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIn
LApAQCAtNTYwLDcgKzU2MCwxMCBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAg
ICAgJ1dlYkNvcmU6OklucHV0TW9kZSc6IFsnPFdlYkNvcmUvSW5wdXRNb2RlLmg+J10sCiAgICAg
ICAgICdXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdCc6IFsnPFdlYkNvcmUvR3JhcGhpY3NMYXll
ci5oPiddLAogICAgICAgICAnV2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kJzogWyc8V2ViQ29yZS9L
ZXlib2FyZEV2ZW50Lmg+J10sCisgICAgICAgICdXZWJDb3JlOjpMYXllckhvc3RpbmdDb250ZXh0
SUQnOiBbJzxXZWJDb3JlL0xheWVySG9zdGluZ0NvbnRleHQuaD4nXSwKKyAgICAgICAgJ1dlYkNv
cmU6OkxheWVySG9zdGluZ01vZGUnOiBbJzxXZWJDb3JlL0xheWVySG9zdGluZ0NvbnRleHQuaD4n
XSwKICAgICAgICAgJ1dlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3QnOiBbJzxXZWJDb3JlL0Zy
YW1lTG9hZGVyVHlwZXMuaD4nXSwKKyAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9y
dFBhcmFtZXRlcnMnOiBbJzxXZWJDb3JlL01lZGlhUGxheWVyLmg+J10sCiAgICAgICAgICdXZWJD
b3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHknOiBbJzxXZWJDb3Jl
L01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpOZXR3
b3JrVHJhbnNhY3Rpb25JbmZvcm1hdGlvbic6IFsnPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1h
dGlvbi5oPiddLAogICAgICAgICAnV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGEnOiBbJzxX
ZWJDb3JlL1Bhc3RlYm9hcmQuaD4nXSwKQEAgLTYwMSwxNSArNjA0LDEyIEBAIGRlZiBoZWFkZXJz
X2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6U2VsZWN0aW9uUmVjdCc6IFsnIkVk
aXRvclN0YXRlLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkFjdGl2aXR5U3RhdGVDaGFuZ2VJRCc6
IFsnIkRyYXdpbmdBcmVhSW5mby5oIiddLAogICAgICAgICAnV2ViS2l0OjpCYWNrRm9yd2FyZExp
c3RJdGVtU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKLSAgICAgICAgJ1dlYktpdDo6TGF5
ZXJIb3N0aW5nQ29udGV4dElEJzogWyciTGF5ZXJIb3N0aW5nQ29udGV4dC5oIiddLAotICAgICAg
ICAnV2ViS2l0OjpMYXllckhvc3RpbmdNb2RlJzogWyciTGF5ZXJUcmVlQ29udGV4dC5oIiddLAog
ICAgICAgICAnV2ViS2l0OjpQYWdlU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKICAgICAg
ICAgJ1dlYktpdDo6V2ViR2VzdHVyZUV2ZW50JzogWyciV2ViRXZlbnQuaCInXSwKICAgICAgICAg
J1dlYktpdDo6V2ViS2V5Ym9hcmRFdmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCiAgICAgICAgICdX
ZWJLaXQ6OldlYk1vdXNlRXZlbnQnOiBbJyJXZWJFdmVudC5oIiddLAogICAgICAgICAnV2ViS2l0
OjpXZWJUb3VjaEV2ZW50JzogWyciV2ViRXZlbnQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6V2Vi
V2hlZWxFdmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCi0gICAgICAgICdXZWJDb3JlOjpNZWRpYUVu
Z2luZVN1cHBvcnRQYXJhbWV0ZXJzJzogWyc8V2ViQ29yZS9NZWRpYVBsYXllci5oPiddLAogICAg
ICAgICAnc3RydWN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JzogWyc8V2ViQ29yZS9FbGVtZW50
Q29udGV4dC5oPiddLAogICAgICAgICAnc3RydWN0IFdlYktpdDo6V2ViVXNlclNjcmlwdERhdGEn
OiBbJyJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCInXSwKICAgICAgICAgJ3N0
cnVjdCBXZWJLaXQ6OldlYlVzZXJTdHlsZVNoZWV0RGF0YSc6IFsnIldlYlVzZXJDb250ZW50Q29u
dHJvbGxlckRhdGFUeXBlcy5oIiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
TGF5ZXJUcmVlQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTGF5ZXJUcmVlQ29udGV4
dC5oCmluZGV4IGJlMTQ0NGY1MmQ4NjUyMDI2NmU1ZmJjY2NkNDAxZjJiNGYzOGUxYWIuLjFmNjk5
NTg4Mzg5MmIzNTc1MDlmYTRlYzRkMWY2Njg3Y2UwNjk2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0xheWVyVHJlZUNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9MYXllclRyZWVDb250ZXh0LmgKQEAgLTM1LDEzICszNSw2IEBAIGNsYXNzIEVuY29kZXI7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1lbnVtIGNsYXNzIExheWVySG9zdGluZ01vZGUgOiB1aW50
OF90IHsKLSAgICBJblByb2Nlc3MsCi0jaWYgSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NU
SU5HKQotICAgIE91dE9mUHJvY2VzcwotI2VuZGlmCi19OwotCiBjbGFzcyBMYXllclRyZWVDb250
ZXh0IHsKIHB1YmxpYzoKICAgICBMYXllclRyZWVDb250ZXh0KCk7CkBAIC02MywxNSArNTYsMyBA
QCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGEsIGNvbnN0
IExheWVyVHJlZUNvbnRleHQmIGIpCiB9CiAKIH0KLQotbmFtZXNwYWNlIFdURiB7Ci10ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6TGF5ZXJIb3N0aW5nTW9kZT4gewotICAgIHVz
aW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgICAgIFdlYktpdDo6TGF5ZXJIb3N0aW5nTW9k
ZSwKLSNpZiBIQVZFKE9VVF9PRl9QUk9DRVNTX0xBWUVSX0hPU1RJTkcpCi0gICAgICAgIFdlYktp
dDo6TGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQcm9jZXNzLAotI2VuZGlmCi0gICAgICAgIFdlYktp
dDo6TGF5ZXJIb3N0aW5nTW9kZTo6SW5Qcm9jZXNzCi0gICAgPjsKLX07Ci19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggNzQxMzc1
ZTJiYjVlNjhjOWE1ZmU4NjU1ZjE4NTUxZDY3N2Y2MjlmYS4uODIxMWI2ODgzMWVhMTcwZGE0NjJh
MTM5N2M1YmFlNzBkZDFmYTRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMjYsNyArMjYsNiBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJEcmF3aW5nQXJlYUluZm8uaCIKLSNpbmNsdWRlICJMYXllclRyZWVDb250ZXh0
LmgiCiAjaW5jbHVkZSAiU2Vzc2lvblN0YXRlLmgiCiAjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250
ZW50UnVsZUxpc3REYXRhLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCkBA
IC0zOCw2ICszNyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRmxvYXRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9MYXllckhvc3RpbmdDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MYXlv
dXRNaWxlc3RvbmUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUHJvZHVjZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CkBAIC0xMjksNyArMTI5LDcgQEAgc3RydWN0
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAgYm9vbCBiYWNrZ3JvdW5kRXh0ZW5k
c0JleW9uZFBhZ2U7CiAKLSAgICBMYXllckhvc3RpbmdNb2RlIGxheWVySG9zdGluZ01vZGU7Cisg
ICAgV2ViQ29yZTo6TGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdNb2RlOwogCiAgICAgYm9v
bCBoYXNSZXNvdXJjZUxvYWRDbGllbnQgeyBmYWxzZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
aW5kZXggMDg3NmFkZDEzNTQzZWU4ZmNlZWJhNjM1YmE5OTkzNmVkN2M4NmM1Ni4uNTc5NTQ0OWJl
YzJkMWJiMjVlNTNjY2U5MThlZWRmMjFjMTFlOWQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApA
QCAtODQsNyArODQsNiBAQCBQbGF0Zm9ybS9pb3MvUGF5bWVudEF1dGhvcml6YXRpb25Db250cm9s
bGVyLm1tCiBQbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCiBQbGF0Zm9ybS9J
UEMvY29jb2EvTWFjaE1lc3NhZ2UuY3BwCiAKLVBsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250
ZXh0Lm1tCiBQbGF0Zm9ybS9tYWMvTWFjaFV0aWxpdGllcy5jcHAKIFBsYXRmb3JtL21hYy9NZW51
VXRpbGl0aWVzLm1tCiBQbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggOWNiNzgwZjQwN2ZkNmQyZmZkYjE5MmI0NWRjOWYz
MGYzMzE2Yzk3ZC4uMzk4ZWI2YjE3N2I4ZTBiYjViNjVjZWZjZGE3Y2JhYjhiNTRkYjlkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvRWRpdG9yQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb2N1c0RpcmVj
dGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5wdXRNb2RlLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9MYXllckhvc3RpbmdDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WYWxpZGF0aW9uQnViYmxlLmg+
CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CkBAIC0xNjMsMTAgKzE2NCw2IEBA
IGNsYXNzIEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Q7CiBzdHJ1
Y3QgQ29sb3JTcGFjZURhdGE7CiAjZW5kaWYKIAotI2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdB
VElPTl9WSUVXKQotdXNpbmcgTGF5ZXJIb3N0aW5nQ29udGV4dElEID0gdWludDMyX3Q7Ci0jZW5k
aWYKLQogY2xhc3MgUGFnZUNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQYWdlQ2xpZW50
PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0yMDYsNyArMjAz
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1Zpc3VhbGx5SWRsZSgpIHsgcmV0dXJu
ICFpc1ZpZXdWaXNpYmxlKCk7IH0KIAogICAgIC8vIFJldHVybiB0aGUgbGF5ZXIgaG9zdGluZyBt
b2RlIGZvciB0aGUgdmlldy4KLSAgICB2aXJ0dWFsIExheWVySG9zdGluZ01vZGUgdmlld0xheWVy
SG9zdGluZ01vZGUoKSB7IHJldHVybiBMYXllckhvc3RpbmdNb2RlOjpJblByb2Nlc3M7IH0KKyAg
ICB2aXJ0dWFsIFdlYkNvcmU6OkxheWVySG9zdGluZ01vZGUgdmlld0xheWVySG9zdGluZ01vZGUo
KSB7IHJldHVybiBXZWJDb3JlOjpMYXllckhvc3RpbmdNb2RlOjpJblByb2Nlc3M7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkRXhpdCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHJv
Y2Vzc1dpbGxTd2FwKCkgeyBwcm9jZXNzRGlkRXhpdCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA2YjU0ZDYzNDA5MjU1MDVlODZkZTliZTQzNGQ4MDc5
MmQzN2ZiNjExLi42MzkzNWY2YTVmZjM3YTNlMDk5MDI0ZGE5NDdiYmU0YzBhZjA4NWQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTE1Miw2ICsxNTIsNyBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ds
b2JhbEZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR2xvYmFsV2luZG93SWRl
bnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTGF5ZXJIb3N0aW5nQ29udGV4dC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTGVuZ3RoQm94Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJl
Z2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVN0cmVhbVJlcXVlc3QuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMTIwMzM2OWFhODg3NzViZTg5YzIx
NTU3M2EzNDA5ZjQyZjM5MWEzZC4uODBmMWVmOTNjZTI2YTkwZGY5OGRmNzU5MjllMmQ0NWMyNjFh
M2VhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTgxLDYgKzgx
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPiAvLyBGSVhNRTogTW92ZSBMYXlv
dXRWaWV3cG9ydENvbnN0cmFpbnQgdG8gaXRzIG93biBmaWxlIGFuZCBzdG9wIGluY2x1ZGluZyB0
aGlzLgogI2luY2x1ZGUgPFdlYkNvcmUvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9JbnB1dE1vZGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0xheWVySG9zdGluZ0Nv
bnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dFBvaW50Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9MYXlvdXRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dC5oPgpAQCAtMjM3OCw3ICsyMzc5LDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxm
bG9hdD4gbV9jdXN0b21EZXZpY2VTY2FsZUZhY3RvcjsKICAgICBmbG9hdCBtX3RvcENvbnRlbnRJ
bnNldCB7IDAgfTsKIAotICAgIExheWVySG9zdGluZ01vZGUgbV9sYXllckhvc3RpbmdNb2RlIHsg
TGF5ZXJIb3N0aW5nTW9kZTo6SW5Qcm9jZXNzIH07CisgICAgV2ViQ29yZTo6TGF5ZXJIb3N0aW5n
TW9kZSBtX2xheWVySG9zdGluZ01vZGUgeyBXZWJDb3JlOjpMYXllckhvc3RpbmdNb2RlOjpJblBy
b2Nlc3MgfTsKIAogICAgIFdlYkNvcmU6OkNvbG9yIG1fdW5kZXJsYXlDb2xvcjsKICAgICBXZWJD
b3JlOjpDb2xvciBtX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCAzYTc0NjAxMWVh
OGRhOGVlOGNjYWY3Yjc3Zjk1NGIwMDc3ODNjMzQyLi40ZmJhZTVmYmVmMWYzNTIzZjQ2MWFmNzYz
ZGYwYTNjOTdhNDFkOGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC01NzYsNyArNTc2LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICNlbmRpZgogCiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcp
Ci0gICAgRGlkQ3JlYXRlQ29udGV4dEZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihXZWJLaXQ6Okxh
eWVySG9zdGluZ0NvbnRleHRJRCBjb250ZXh0SUQpOworICAgIERpZENyZWF0ZUNvbnRleHRGb3JW
aXNpYmlsaXR5UHJvcGFnYXRpb24oV2ViQ29yZTo6TGF5ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRl
eHRJRCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCmluZGV4IDgwMTZiNTZjMTYwYWNj
N2I0MjY5NjAwZjA3ZjczN2IzNzkzNzY3YmIuLjM3ZGExZDU4YzRhOTRmMDRhMmRkNDM1M2M4Y2U3
MDFkZmMyMGEwZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5oCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1ZpZXdW
aXNpYmxlT3JPY2NsdWRlZCgpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNWaWV3SW5XaW5kb3coKSBv
dmVycmlkZTsKICAgICBib29sIGlzVmlzdWFsbHlJZGxlKCkgb3ZlcnJpZGU7Ci0gICAgTGF5ZXJI
b3N0aW5nTW9kZSB2aWV3TGF5ZXJIb3N0aW5nTW9kZSgpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6
OkxheWVySG9zdGluZ01vZGUgdmlld0xheWVySG9zdGluZ01vZGUoKSBvdmVycmlkZTsKICAgICBD
b2xvclNwYWNlRGF0YSBjb2xvclNwYWNlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRSZW1vdGVM
YXllclRyZWVSb290Tm9kZShSZW1vdGVMYXllclRyZWVOb2RlKikgb3ZlcnJpZGU7CiAgICAgQ0FM
YXllciAqYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0IG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
YWZiZGMyNTc1ZTQ0ODE4NWU0YmNiYzg0MmU0ZjdhNTQ0MzEzYjQzOS4uYjBiMjViMDk4OWE2Njll
OGViMjIwNmM3OGFmNTNlZTExMjRkYWJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NzM4LDggKzQ3MzgsOCBAQAogCQlCQ0REQjMy
QzEyNEVDMkUxMDA0OEQxM0MgLyogV0tBUElDYXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLQVBJQ2FzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0RF
MDU5OTExQ0RBOEFFMDBFNDFBRjEgLyogV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbnRleHRJbmplY3RlZEJ1bmRs
ZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0RFMDU5QTExQ0RBOEFF
MDBFNDFBRjEgLyogV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDRTA5Mzc1MTRGQjEyOEIwMDEx
MzhEOSAvKiBMYXllckhvc3RpbmdDb250ZXh0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gTGF5ZXJIb3N0aW5nQ29udGV4dC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQkNFMDkzNzYxNEZCMTI4QjAwMTEzOEQ5IC8qIExheWVySG9zdGluZ0NvbnRl
eHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5ZXJIb3N0aW5nQ29udGV4
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0UwOTM3NTE0RkIxMjhCMDAxMTM4
RDkgLyogTGF5ZXJIb3N0aW5nQ29udGV4dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IExheWVySG9zdGluZ0NvbnRleHQubW07IHBhdGggPSAuLi8uLi8uLi9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL0xheWVySG9zdGluZ0NvbnRleHQubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUJDRTA5Mzc2MTRGQjEyOEIwMDExMzhEOSAvKiBMYXllckhvc3RpbmdD
b250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExheWVySG9zdGluZ0Nv
bnRleHQuaDsgcGF0aCA9IC4uLy4uLy4uL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTGF5ZXJIb3N0
aW5nQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0UwRTQyNDE2OEI3
QTI4MDA1N0U2NkEgLyogV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkNFMTdCN0IxMzgxRjExNzAwMTJBNjQxIC8qIFdLUGFnZVByaXZhdGVNYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1BhZ2VQcml2YXRl
TWFjLm1tOyBwYXRoID0gbWFjL1dLUGFnZVByaXZhdGVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDRTE3QjdDMTM4MUYxMTcwMDEyQTY0MSAvKiBXS1BhZ2VQcml2YXRlTWFj
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLUGFnZVByaXZhdGVNYWMuaDsg
cGF0aCA9IG1hYy9XS1BhZ2VQcml2YXRlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggY2M5ODU3MzE0MzEzOWMwYTUzNTM5
OWNkYmFiYzJmYTI3ZmE0OTk2NC4uZGU0ZDIyODI1MjA4ZjkyZGMyYTBjOGFmYzNiZjY4NmZiZTE0
OWRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtMzUsNiArMzUsNyBAQAog
I2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
UGxhdGZvcm1DQUxheWVyQ29jb2EuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTGF5ZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtVGltZVJhbmdlcy5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CkBAIC00MywxMSArNDQsMTEgQEAKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCi0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiBleHRlcm4g
V1RGTG9nQ2hhbm5lbCBMb2dNZWRpYTsKLX0KICNlbmRpZgorfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtODYsNyArODcsMTYgQEAgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjp+TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlKCkKIAogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OnByZXBhcmVGb3JQbGF5YmFjayhib29sIHByaXZhdGVNb2Rl
LCBNZWRpYVBsYXllcjo6UHJlbG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29s
IHByZXBhcmUpCiB7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQcmVw
YXJlRm9yUGxheWJhY2sobV9pZCwgcHJpdmF0ZU1vZGUsIHByZWxvYWQsIHByZXNlcnZlc1BpdGNo
LCBwcmVwYXJlKSwgMCk7CisgICAgYXV0byBsYXlvdXRSZWN0ID0gbV9wbGF5ZXItPnBsYXllckNv
bnRlbnRCb3hSZWN0KCk7CisgICAgYXV0byBzY2FsZSA9IG1fcGxheWVyLT5wbGF5ZXJDb250ZW50
c1NjYWxlKCk7CisKKyAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6UHJlcGFyZUZvclBsYXliYWNrKG1faWQsIHByaXZhdGVNb2RlLCBwcmVsb2FkLCBw
cmVzZXJ2ZXNQaXRjaCwgcHJlcGFyZSwgbGF5b3V0UmVjdC5sb2NhdGlvbigpLCBsYXlvdXRSZWN0
LnNpemUoKSwgc2NhbGUpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRoaXNdKGF1
dG8gY29udGV4dElkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBtX2xheWVySG9zdGluZ0NvbnRleHRJZCA9IGNvbnRleHRJ
ZDsKKyAgICAgICAgbV92aWRlb0xheWVyID0gUGxhdGZvcm1DQUxheWVyQ29jb2E6OmNyZWF0ZVBs
YXRmb3JtTGF5ZXJGb3JIb3N0aW5nQ29udGV4dChjb250ZXh0SWQpOworICAgIH0pOwogfQogCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjps
b2FkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUsIGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtKQpAQCAtMjg5LDYgKzI5OSwxMSBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6c2l6ZUNoYW5nZWQoV2ViQ29yZTo6RmxvYXRTaXplIG5hdHVyYWxTaXpl
KQogICAgIG1fcGxheWVyLT5zaXplQ2hhbmdlZCgpOwogfQogCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6Zmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKCkKK3sKKyAgICBtX3BsYXllci0+
Zmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKCk7Cit9CisKIFN0cmluZyBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmVuZ2luZURlc2NyaXB0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jb25m
aWd1cmF0aW9uLmVuZ2luZURlc2NyaXB0aW9uOwpAQCAtMzQ0LDExICszNTksNiBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cHJlcGFyZUZvclJlbmRlcmluZygpCiAgICAgbV9tYW5h
Z2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQcmVwYXJlRm9yUmVuZGVyaW5nKG1faWQpLCAw
KTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNpemUoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgc2l6ZSkKLXsKLSAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHk6OlNldFNpemUobV9pZCwgc2l6ZSksIDApOwotfQotCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCiB7CiAgICAgbV9tYW5hZ2VyLmdw
dVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRWaXNpYmxlKG1faWQsIHZpc2libGUpLCAwKTsKQEAg
LTQxNiw4ICs0MjYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZChNZWRp
YVN0cmVhbVByaXZhdGUmKQogCiBQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fdmlkZW9MYXllci5nZXQoKTsKIH0KIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19Q
UkVTRU5UQVRJT05fTU9ERSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAppbmRleCA0MTk3NWNm
NTk0ODk1MDk0YjA2NjQ0NGEzYTRlMTJjZDRhZDJmYWZkLi5mOGRhMWY1MTE1NzFkNmQ0NmZhMTBl
MTg5OTE0NjJjNzhiZWZlMTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKQEAgLTcyLDYg
KzcyLDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlQ2FjaGVkU3RhdGUoUmVtb3RlTWVkaWFQ
bGF5ZXJTdGF0ZSYmKTsKICAgICB2b2lkIGNoYXJhY3RlcmlzdGljQ2hhbmdlZChib29sIGhhc0F1
ZGlvLCBib29sIGhhc1ZpZGVvLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNb3ZpZUxvYWRU
eXBlKTsKICAgICB2b2lkIHNpemVDaGFuZ2VkKFdlYkNvcmU6OkZsb2F0U2l6ZSk7CisgICAgdm9p
ZCBmaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoKTsKIAogICAgIHZvaWQgcmVxdWVzdFJlc291cmNl
KFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9ucyk7CiAg
ICAgdm9pZCByZW1vdmVSZXNvdXJjZShSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllcik7CkBA
IC0xMDksNyArMTEwLDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2hvdWxkSWdub3JlSW50cmlu
c2ljU2l6ZSgpIGZpbmFsOwogCi0gICAgLy8gVW5pbXBsZW1lbnRlZAogICAgIFBsYXRmb3JtTGF5
ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkp
CkBAIC0xODIsOCArMTgyLDYgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdG90
YWxCeXRlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29u
c3QgZmluYWw7CiAKLSAgICB2b2lkIHNldFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIGZp
bmFsOwotCiAgICAgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmKSBmaW5hbDsKIAogICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJ
bkNvbnRleHQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JikgZmluYWw7CkBAIC0zMDIsNiArMzAwLDggQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6
Ok1lZGlhUGxheWVyKiBtX3BsYXllciB7IG51bGxwdHIgfTsKICAgICBSZWZQdHI8V2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyPiBtX21lZGlhUmVzb3VyY2VMb2FkZXI7CisgICAg
dWludDMyX3QgbV9sYXllckhvc3RpbmdDb250ZXh0SWQgIHsgMCB9OworICAgIFJldGFpblB0cjxQ
bGF0Zm9ybUxheWVyPiBtX3ZpZGVvTGF5ZXI7CiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
JiBtX21hbmFnZXI7CiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJ
ZGVudGlmaWVyIG1fcmVtb3RlRW5naW5lSWRlbnRpZmllcjsKICAgICBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyIG1faWQ7CkBAIC0zMTIsNiArMzEyLDcgQEAgcHJpdmF0ZToKIAog
ICAgIEhhc2hNYXA8UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+PiBtX21lZGlhUmVzb3VyY2VzOwogCisgICAgV2ViQ29y
ZTo6SW50U2l6ZSBtX3ZpZGVvU2l6ZTsKICAgICBkb3VibGUgbV92b2x1bWUgeyAxIH07CiAgICAg
ZG91YmxlIG1fcmF0ZSB7IDEgfTsKICAgICBsb25nIG1fcGxhdGZvcm1FcnJvckNvZGUgeyAwIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKaW5kZXggNmVjYmJlYWJiY2JjM2E4NTMxMTIw
ODRlM2YzMzY3ZjdjNmM1ODQxOS4uZDZmYjk0ZGY1YWFmZTY3OWE5OWUzZmE4ZDY5OWVjMGIyYzhk
N2UyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcApAQCAtMzAzLDYgKzMwMywxMiBA
QCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6c2l6ZUNoYW5nZWQoV2ViS2l0OjpNZWRp
YVBsYXllclByaXZhdGVSZW1vdGVJZGVudAogICAgICAgICBwbGF5ZXItPnNpemVDaGFuZ2VkKG5h
dHVyYWxTaXplKTsKIH0KIAordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmZpcnN0Vmlk
ZW9GcmFtZUF2YWlsYWJsZShXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXIgaWQpCit7CisgICAgaWYgKGF1dG8gcGxheWVyID0gbV9wbGF5ZXJzLmdldChpZCkpCisgICAg
ICAgIHBsYXllci0+Zmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKCk7Cit9CisKIHZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyOjpyZXF1ZXN0UmVzb3VyY2UoTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlSWRlbnRpZmllciBpZCwgUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlTWVk
aWFSZXNvdXJjZUlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbnMgb3B0aW9ucywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChjb25zdCBhdXRvJiBw
bGF5ZXIgPSBtX3BsYXllcnMuZ2V0KGlkKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oCmluZGV4
IDQ2ODllMDI4YjY3ZDQ5ZjNmMjc3OTllYThlYWNkNzIyZGZlYjBiODkuLjU4NGQ0NzVkZmVhZGUw
Y2RmNjc5OGYzNjQ4ZTdiMWM5ZmE4Y2IwMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaApA
QCAtODcsNiArODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlQ2FjaGVkU3RhdGUoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXll
clN0YXRlJiYpOwogICAgIHZvaWQgY2hhcmFjdGVyaXN0aWNDaGFuZ2VkKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgYm9vbCBoYXNBdWRpbywgYm9vbCBoYXNWaWRl
bywgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TW92aWVMb2FkVHlwZSk7CiAgICAgdm9pZCBz
aXplQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFdl
YkNvcmU6OkZsb2F0U2l6ZSk7CisgICAgdm9pZCBmaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgcmVx
dWVzdFJlc291cmNlKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlbW90ZU1l
ZGlhUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9ucywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlbW92ZVJlc291cmNlKE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggNTRhMDFmOGIz
NTIyYTFhMjU2NjFlZWVlZTUyNzkyY2QzNDNkMDEzZS4uNTE3Yjc0ZDA0YzgyMTNmMzc4NTk4MDJm
NGQ5YzYwYTM3YzdkM2U1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVz
c2FnZXMuaW4KQEAgLTI2LDYgKzI2LDcgQEAKIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlciBOb3RSZWZDb3VudGVkIHsKICAgICBOZXR3b3JrU3RhdGVDaGFuZ2VkKFdlYktpdDo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgc3RydWN0IFdlYktpdDo6UmVt
b3RlTWVkaWFQbGF5ZXJTdGF0ZSBzdGF0ZSkKICAgICBSZWFkeVN0YXRlQ2hhbmdlZChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIHN0cnVjdCBXZWJLaXQ6OlJl
bW90ZU1lZGlhUGxheWVyU3RhdGUgc3RhdGUpCisgICAgRmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxl
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCkKICAgICBWb2x1
bWVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwg
ZG91YmxlIHZvbHVtZSkKICAgICBNdXRlQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXIgaWQsIGJvb2wgbXV0ZSkKICAgICBUaW1lQ2hhbmdlZChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIHN0cnVjdCBXZWJLaXQ6OlJl
bW90ZU1lZGlhUGxheWVyU3RhdGUgc3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXgg
OTc3YjhlZDYyZDhjMGRjZDg4M2NiM2YwYzA1ODk3Nzg5OWRmYmM3My4uNWZkMTlkNzQzNjY4OWVk
ZThmYmM1Yzg2ZjFmODgzNTYzYWY4OTJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAt
NDcsNyArNDcsNyBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJM
YXllckhvc3RpbmdDb250ZXh0LmgiCisjaW1wb3J0IDxXZWJDb3JlL0xheWVySG9zdGluZ0NvbnRl
eHQuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmlu
ZGV4IDdjNDZkNjc2ZWRkMDQyYzNlODg4ZDhkYmYyOTE2ZmViYWU2OWI0YTAuLjY1ZjA1OTg4NmIw
YjVjMjEwZGU0MjI0ZmMyOTRjOTkzYzMwNjc3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAg
LTQ0LDYgKzQ1LDcgQEAgY2xhc3MgTWFjaFNlbmRSaWdodDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBIVFRQSGVhZGVyTWFwOworZW51bSBjbGFzcyBMYXllckhv
c3RpbmdNb2RlIDogdWludDhfdDsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIH0KQEAgLTIzNiw3ICsyMzgsNyBAQCBwcml2YXRlOgogCiAgICAgdWludDY0X3Qg
cGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICB2
b2lkIHNlbmRDb21wbGV4VGV4dElucHV0KGNvbnN0IFN0cmluZyYgdGV4dElucHV0KSBvdmVycmlk
ZTsKLSAgICB2b2lkIHNldExheWVySG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKFdlYkNvcmU6OkxheWVySG9zdGluZ01v
ZGUpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBwbHVnaW5Gb2N1c09yV2luZG93Rm9jdXNDaGFuZ2Vk
KCk7CiAgICAgdm9pZCBzZXRDb21wbGV4VGV4dElucHV0RW5hYmxlZChib29sKTsKQEAgLTM0Nyw3
ICszNDksNyBAQCBwcml2YXRlOgogCiAgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fcGx1
Z2luTGF5ZXI7CiAgICAgYm9vbCBtX3BsdWdpblJldHVybnNOb25yZXRhaW5lZExheWVyOwotICAg
IExheWVySG9zdGluZ01vZGUgbV9sYXllckhvc3RpbmdNb2RlOworICAgIFdlYkNvcmU6OkxheWVy
SG9zdGluZ01vZGUgbV9sYXllckhvc3RpbmdNb2RlOwogCiAgICAgTlBDb2NvYUV2ZW50KiBtX2N1
cnJlbnRNb3VzZUV2ZW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5NYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5NYWMubW0KaW5k
ZXggNDIyZDVlZjY2NTE5YTA0ZDE0NGY1MDRjMjA0M2ZhMGI1NWFlYTlhZS4uNTE0ZWZhZmY5MjM1
NTAzZDBiNDVjODczYzlmOWJjMzFjMjU3MTVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBs
dWdpbk1hYy5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiV2ViRXZlbnQuaCIKICNpbXBv
cnQgPENhcmJvbi9DYXJib24uaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+
CisjaW1wb3J0IDxXZWJDb3JlL0xheWVySG9zdGluZ0NvbnRleHQuaD4KICNpbXBvcnQgPFdlYkNv
cmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgogI2ltcG9ydCA8
cGFsL3NwaS9tYWMvSElUb29sYm94U1BJLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKaW5kZXggZTNkZTA1YWFiYmUyMWM0MGUxYmU4OGQ5
ZTljNjg1YTA2NGJiMDMzNy4uZmQ3MDJkZDc5OTI0OTA4M2ZkMWM3ZDYzZmM3MjBjNGVmYmEzZGQ0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4uaApAQCAtMTYxLDcgKzE2MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aW5kb3dWaXNpYmls
aXR5Q2hhbmdlZChib29sKSBmaW5hbCB7IH0KICAgICB1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4
dElucHV0SWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KICAgICB2b2lkIHNl
bmRDb21wbGV4VGV4dElucHV0KGNvbnN0IFN0cmluZyYgdGV4dElucHV0KSBmaW5hbCB7IH0KLSAg
ICB2b2lkIHNldExheWVySG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSkgZmluYWwgeyB9Cisg
ICAgdm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKFdlYkNvcmU6OkxheWVySG9zdGluZ01vZGUpIGZp
bmFsIHsgfQogICAgIFdlYkNvcmU6OlNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9sbGJhcigpIGZp
bmFsIHsgcmV0dXJuIG1faG9yaXpvbnRhbFNjcm9sbGJhci5nZXQoKTsgfQogICAgIFdlYkNvcmU6
OlNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBmaW5hbCB7IHJldHVybiBtX3ZlcnRpY2Fs
U2Nyb2xsYmFyLmdldCgpOyB9CiAgICAgdm9pZCBzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQo
Ym9vbCkgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
LmNwcAppbmRleCAyMzBjYTRlN2MxYjUyZGE5YWIwNmE3MWJkMDRiODRjZWVjZDA4ZWM3Li5iYjk2
NTg1ZDYwMzRhNWZlNWNjMGYxYTE5NGY2YTgzNTY2YmYzNGEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRl
IDx3dGYvU2V0Rm9yU2NvcGUuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIkxh
eWVySG9zdGluZ0NvbnRleHQuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTGF5ZXJIb3N0aW5nQ29udGV4
dC5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW4uaAppbmRleCBlNDJjN2U5ZDE3N2NhNTg1OTQ4M2M4ZWE3NzlmOTZk
NzExOGIxOGVhLi45YTJjOWQzOTFkM2JlM2ZiYTJjMTI5ZTFlYWVkOTQwZDQzMTUwM2RjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtMjgsNiArMjgsNyBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvRmluZE9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bs
YXRmb3JtTGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CisjaW5jbHVk
ZSA8d3RmL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+
CkBAIC02MCw2ICs2MSw3IEBAIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3Mg
U2Nyb2xsYmFyOwogY2xhc3MgU2hhcmVkQnVmZmVyOworZW51bSBjbGFzcyBMYXllckhvc3RpbmdN
b2RlIDogdWludDhfdDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03Nyw4ICs3OSw2IEBA
IGVudW0gUGx1Z2luVHlwZSB7CiAgICAgUERGUGx1Z2luVHlwZSwKIH07CiAKLWVudW0gY2xhc3Mg
TGF5ZXJIb3N0aW5nTW9kZSA6IHVpbnQ4X3Q7Ci0KIGNsYXNzIFBsdWdpbiA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxQbHVnaW4+IHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgUGFyYW1ldGVy
cyB7CkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBpc0Z1bGxGcmFtZVBs
dWdpbjsKICAgICAgICAgYm9vbCBzaG91bGRVc2VNYW51YWxMb2FkZXI7CiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgICAgIExheWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9kZTsKKyAgICAg
ICAgV2ViQ29yZTo6TGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdNb2RlOwogI2VuZGlmCiAK
ICAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CkBAIC0yNTEsNyArMjUx
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZW5kQ29tcGxleFRleHRJbnB1dChjb25z
dCBTdHJpbmcmIHRleHRJbnB1dCkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gYWJv
dXQgY2hhbmdlcyB0byB0aGUgbGF5ZXIgaG9zdGluZyBtb2RlLgotICAgIHZpcnR1YWwgdm9pZCBz
ZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0TGF5ZXJIb3N0aW5nTW9kZShXZWJDb3JlOjpMYXllckhvc3RpbmdNb2RlKSA9IDA7CiAj
ZW5kaWYKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIGFib3V0IHNjYWxlIGZhY3RvciBjaGFu
Z2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgK
aW5kZXggOTY2MmI5YzgxMWNkZWI2YjI3MDZlZTMwNzBkNDk2ZGMyMWQ1ZWI4Mi4uZGE1MDY5NGZm
YzgxZjU2MzU5NDk3MjE3ZWI4MDUzMGM2MWIzMDQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCkBAIC0xMjEsNyArMTIxLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHdpbmRvd0FuZFZpZXdGcmFtZXNDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIHdpbmRvd0ZyYW1lSW5TY3JlZW5Db29yZGluYXRlcywgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgdmlld0ZyYW1lSW5XaW5kb3dDb29yZGluYXRlcykgb3ZlcnJpZGU7CiAgICAgdWludDY0
X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2b2lkIHNlbmRDb21wbGV4VGV4dElucHV0KGNvbnN0IFN0cmluZyYgdGV4dElucHV0KSBvdmVy
cmlkZTsKLSAgICB2b2lkIHNldExheWVySG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSkgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKFdlYkNvcmU6OkxheWVySG9zdGlu
Z01vZGUpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICB2b2lkIGNvbnRlbnRzU2NhbGVGYWN0b3JD
aGFuZ2VkKGZsb2F0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuaAppbmRleCA4NGQ0MjY0Y2UwZDA2ODg2YzM5OWM4NTY0OGQyNWE5Y2Ex
ZWI4MTY2Li4xY2YwZmQ4ZTY3OWNhNjczZGE3ODEyOTAyNGJkNDZlMjIzNGQzZmUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC04MCw3ICs4
MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKTsKIAogICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRp
b25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCk7Ci0gICAgdm9pZCBz
ZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUpOworICAgIHZvaWQgc2V0TGF5ZXJI
b3N0aW5nTW9kZShXZWJDb3JlOjpMYXllckhvc3RpbmdNb2RlKTsKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKaW5kZXggYmFiMWQ0YmZiZWU5
ZTQ1MTRmM2Y3YmM0YmNhNWE1OTVlNTk4NmYxNS4uOTI4NDRjMWFjMmUwNjQyMThjMzQyNTBmZmE3
ZmFiYmJiNjNiZmFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYS5oCkBAIC0xMjQsNyArMTI0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaEFmdGVyRW5zdXJpbmdVcGRhdGVkU2Nyb2xsUG9zaXRpb24oV1RGOjpGdW5jdGlv
bjx2b2lkICgpPiYmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdl
KE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiwgQWN0aXZpdHlTdGF0ZUNo
YW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
c2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdNb2RlKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc2V0TGF5ZXJIb3N0aW5nTW9kZShXZWJDb3JlOjpMYXllckhvc3RpbmdNb2RlKSB7IH0KIAog
ICAgIHZpcnR1YWwgYm9vbCBtYXJrTGF5ZXJzVm9sYXRpbGVJbW1lZGlhdGVseUlmUG9zc2libGUo
KSB7IHJldHVybiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGVDdXN0b20uaAppbmRleCBkYWQ2NGNmMGNmYjQwMWYwYjdjZTNmMTZiNGMw
YWI0ZDA4ZDI2NjQxLi40NmJiODBmMTE2ZWVkM2RmNDZhN2I5NGZmNGJkMzgyZmU1NWZjNTBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3Rv
bS5oCkBAIC0yNyw5ICsyNywxMSBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyUmVtb3Rl
LmgiCiAKLW5hbWVzcGFjZSBXZWJLaXQgewotCituYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBM
YXllckhvc3RpbmdDb250ZXh0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKIAogLy8gUGxhdGZv
cm1DQUxheWVyUmVtb3RlQ3VzdG9tIGlzIHVzZWQgZm9yIENBTGF5ZXJzIHRoYXQgbGl2ZSBpbiB0
aGUgd2ViIHByb2Nlc3MgYW5kIGFyZSBob3N0ZWQgaW50byB0aGUgVUkgcHJvY2VzcyB2aWEgcmVt
b3RlIGNvbnRleHQuCiBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20gZmluYWwgOiBw
dWJsaWMgUGxhdGZvcm1DQUxheWVyUmVtb3RlIHsKQEAgLTU2LDcgKzU4LDcgQEAgcHJpdmF0ZToK
ICAgICBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldENv
bnRlbnRzKENGVHlwZVJlZikgb3ZlcnJpZGU7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJI
b3N0aW5nQ29udGV4dD4gbV9sYXllckhvc3RpbmdDb250ZXh0OworICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpMYXllckhvc3RpbmdDb250ZXh0PiBtX2xheWVySG9zdGluZ0NvbnRleHQ7CiAg
ICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fcGxhdGZvcm1MYXllcjsKICAgICBib29sIG1f
cHJvdmlkZXNDb250ZW50czsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQppbmRleCBhOWI0ZmFhNjA4MGY3YWIyMGJjM2VjMDIy
NjFiMjAzMzA2YTQ0MDQ2Li42NWVhYjQ1MTljZDMwYTY3ZGVjMWVkMzhmMWIwNDNlMmNkZmUwY2Yy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVD
dXN0b20ubW0KQEAgLTI2LDEyICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2ltcG9y
dCAiUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmgiCiAKLSNpbXBvcnQgIkxheWVySG9zdGlu
Z0NvbnRleHQuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZUNvbnRleHQuaCIKICNpbXBvcnQg
IlJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzcy5o
IgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9HcmFwaGljc0xheWVyQ0EuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTGF5ZXJIb3N0aW5nQ29udGV4
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJDb3JlQ0FMYXllckV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVDb250ZXh0LmgKaW5kZXgg
NTdhMDI1OWIyMjU5NjAwMTUwM2Y2NDZiN2JmNzU0OTg5OTRiZjllOC4uZmZkMDM1N2M1NDU4YjAw
NTVlYWIzZjdmNTI5OTM3NjcwNmQxMjQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUNvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlQ29udGV4dC5oCkBAIC0yNSwxMCArMjUsMTAgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmVDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJGYWN0b3J5Lmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9MYXllckhvc3RpbmdDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9M
YXllclBvb2wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogCiAgICAgZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdDsKIAotICAgIExheWVySG9zdGluZ01vZGUgbGF5ZXJI
b3N0aW5nTW9kZSgpIGNvbnN0OworICAgIFdlYkNvcmU6OkxheWVySG9zdGluZ01vZGUgbGF5ZXJI
b3N0aW5nTW9kZSgpIGNvbnN0OwogCiAgICAgdm9pZCBidWlsZFRyYW5zYWN0aW9uKFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uJiwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyJiByb290TGF5ZXIp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZWRm
OWFjZTVlZjM2NDRlYWIyMjM0MTc2NzIxMTdhZDNmNmJkMDRmMS4uMzRlYmQwYzE4MDBhMTRmMWMz
MGYzNGJmZGVmZGZiYWUxMjk4N2I3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaApAQCAtMTczLDYgKzE3Myw3IEBAIGNsYXNzIEhUTUxQbHVnSW5FbGVtZW50
OwogY2xhc3MgSFRNTFBsdWdJbkltYWdlRWxlbWVudDsKIGNsYXNzIEludFBvaW50OwogY2xhc3Mg
S2V5Ym9hcmRFdmVudDsKK2NsYXNzIExheWVySG9zdGluZ0NvbnRleHQ7CiBjbGFzcyBNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dDsKIGNsYXNzIE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNz
aW5nUGx1Z2luc0NhbGxiYWNrOwogY2xhc3MgUGFnZTsKQEAgLTE4OSw2ICsxOTAsNyBAQCBjbGFz
cyBWaXNpYmxlUG9zaXRpb247CiBlbnVtIFN5bnRoZXRpY0NsaWNrVHlwZSA6IGludDhfdDsKIGVu
dW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIERy
YWdIYW5kbGluZ01ldGhvZCA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIExheWVySG9zdGluZ01vZGUg
OiB1aW50OF90OwogZW51bSBjbGFzcyBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgOiBib29s
OwogZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gOiBib29sOwogZW51bSBj
bGFzcyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA6IGJvb2w7CkBAIC0yMjEsNyArMjIzLDYgQEAg
Y2xhc3MgRG93bmxvYWRJRDsKIGNsYXNzIEZpbmRDb250cm9sbGVyOwogY2xhc3MgR2FtZXBhZERh
dGE7CiBjbGFzcyBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKLWNsYXNzIExh
eWVySG9zdGluZ0NvbnRleHQ7CiBjbGFzcyBNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zOwog
Y2xhc3MgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOwogY2xhc3MgUERGUGx1
Z2luOwpAQCAtNTUzLDggKzU1NCw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzVmlzaWJsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZS5jb250YWlucyhXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpJc1Zpc2libGUpOyB9CiAgICAgYm9vbCBpc1Zpc2libGVPck9jY2x1ZGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6
OklzVmlzaWJsZU9yT2NjbHVkZWQpOyB9CiAKLSAgICBMYXllckhvc3RpbmdNb2RlIGxheWVySG9z
dGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX2xheWVySG9zdGluZ01vZGU7IH0KLSAgICB2b2lk
IHNldExheWVySG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSk7CisgICAgV2ViQ29yZTo6TGF5
ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9sYXllckhv
c3RpbmdNb2RlOyB9CisgICAgdm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKFdlYkNvcmU6OkxheWVy
SG9zdGluZ01vZGUpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCB1cGRhdGVQbHVn
aW5zQWN0aXZlQW5kRm9jdXNlZFN0YXRlKCk7CkBAIC0xNzI5LDcgKzE3MzAsNyBAQCBwcml2YXRl
OgogI2VuZGlmCiAKICAgICAvLyBUaGUgbGF5ZXIgaG9zdGluZyBtb2RlLgotICAgIExheWVySG9z
dGluZ01vZGUgbV9sYXllckhvc3RpbmdNb2RlOworICAgIFdlYkNvcmU6OkxheWVySG9zdGluZ01v
ZGUgbV9sYXllckhvc3RpbmdNb2RlOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBt
X3BkZlBsdWdpbkVuYWJsZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMDk0MGY2Y2Q4OTUyMWM4
Y2UzMjQyNWYwODA4NWUwMTRmY2U4YjM2NC4uNmNjZWNjMjk0OGFlYzQ1OTEyOTNiNjI1NmY2M2Y2
OTI0OTBiOTY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yMyw3ICsyMyw3IEBACiBtZXNzYWdlcyAtPiBXZWJQ
YWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBi
b29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBXZWJLaXQ6OldlYktleWJvYXJkRXZlbnQgZXZlbnQs
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFNldEFjdGl2aXR5U3RhdGUoT3B0
aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUsIFdlYktp
dDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlEIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgVmVjdG9yPFdl
YktpdDo6Q2FsbGJhY2tJRD4gY2FsbGJhY2tJRHMpCi0gICAgU2V0TGF5ZXJIb3N0aW5nTW9kZShl
bnVtOnVpbnQ4X3QgV2ViS2l0OjpMYXllckhvc3RpbmdNb2RlIGxheWVySG9zdGluZ01vZGUpCisg
ICAgU2V0TGF5ZXJIb3N0aW5nTW9kZShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TGF5ZXJIb3N0aW5n
TW9kZSBsYXllckhvc3RpbmdNb2RlKQogCiAgICAgU2V0QmFja2dyb3VuZENvbG9yKE9wdGlvbmFs
PFdlYkNvcmU6OkNvbG9yPiBjb2xvcikKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEuaAppbmRleCBhNzZmMWViYzFjOGYwNGFiOTYzZWEzZjBkNjEyODgxYjY4N2U0NTBiLi43
MGYxYzIxYmNiZWFlMzNmYzFjZDRhYjg3NGY2YjQ1Mjc1ODFhZmI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaApAQCAtNDAsNiArNDAsNyBAQCBPQkpDX0NMQVNTIENB
TGF5ZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZyYW1lVmlldzsKK2NsYXNzIExh
eWVySG9zdGluZ0NvbnRleHQ7CiBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CiBjbGFzcyBSdW5Mb29w
T2JzZXJ2ZXI7CiBjbGFzcyBUaWxlZEJhY2tpbmc7CkBAIC00Nyw4ICs0OCw2IEBAIGNsYXNzIFRp
bGVkQmFja2luZzsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIExheWVySG9zdGluZ0Nv
bnRleHQ7Ci0KIGNsYXNzIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhIDogcHVibGljIERy
YXdpbmdBcmVhLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE+IHsKIHB1YmxpYzoKICAgICBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYShXZWJQ
YWdlJiwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IGI4MjFlMTk4MGMzMzliZDM2ZTBkZDViNjhi
ZjFlNzNhMTIwODU4ZGQuLmI5MTA1NTNiZDI0MjIxMWQyOGJmNTUwZTVlMTk3M2M3NTI4OGZmNWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTMwLDcgKzMw
LDYgQEAKIAogI2ltcG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkRyYXdpbmdBcmVh
UHJveHlNZXNzYWdlcy5oIgotI2ltcG9ydCAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgogI2ltcG9y
dCAiTGF5ZXJUcmVlQ29udGV4dC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiVmll
d0dlc3R1cmVDb250cm9sbGVyTWVzc2FnZXMuaCIKQEAgLTQ2LDYgKzQ1LDcgQEAKICNpbXBvcnQg
PFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5
ZXJDQS5oPgogI2ltcG9ydCA8V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+CisjaW1wb3J0
IDxXZWJDb3JlL0xheWVySG9zdGluZ0NvbnRleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EuaD4KICNpbXBvcnQg
PFdlYkNvcmUvUmVuZGVyTGF5ZXJCYWNraW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaAppbmRleCBkMDQwMTYx
NTQxMzJmYzRiYjg4MGE5NTkzODg1ODMxZjNjYTU5YTYyLi5jYzRhZTVmZjk3MWExNjAzMzE5NTRm
MDc2YzllNTNmNjc3NTNjM2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKQEAgLTQ3LDEyICs0NywxMiBAQCBj
bGFzcyBNZXNzYWdlUmVjZWl2ZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZsb2F0
U2l6ZTsKK2NsYXNzIExheWVySG9zdGluZ0NvbnRleHQ7CiBjbGFzcyBOb2RlOwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgTGF5ZXJIb3N0aW5nQ29udGV4dDsKIGNsYXNzIFdlYlBh
Z2U7CiBjbGFzcyBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OwogY2xhc3MgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjsKQEAgLTcwLDggKzcwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBp
bnZhbGlkYXRlKCkgeyBtX21hbmFnZXIgPSBudWxscHRyOyB9CiAKLSAgICBMYXllckhvc3RpbmdD
b250ZXh0KiBsYXllckhvc3RpbmdDb250ZXh0KCkgeyByZXR1cm4gbV9sYXllckhvc3RpbmdDb250
ZXh0LmdldCgpOyB9Ci0gICAgdm9pZCBzZXRMYXllckhvc3RpbmdDb250ZXh0KHN0ZDo6dW5pcXVl
X3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiYmKTsKKyAgICAgICAgV2ViQ29yZTo6TGF5ZXJIb3N0
aW5nQ29udGV4dCogbGF5ZXJIb3N0aW5nQ29udGV4dCgpIHsgcmV0dXJuIG1fbGF5ZXJIb3N0aW5n
Q29udGV4dC5nZXQoKTsgfQorICAgICAgICB2b2lkIHNldExheWVySG9zdGluZ0NvbnRleHQoc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OkxheWVySG9zdGluZ0NvbnRleHQ+JiYpOwogCiAgICAgZW51
bSBjbGFzcyBBbmltYXRpb25UeXBlIHsgTm9uZSwgSW50b0Z1bGxzY3JlZW4sIEZyb21GdWxsc2Ny
ZWVuIH07CiAgICAgQW5pbWF0aW9uVHlwZSBhbmltYXRpb25TdGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYW5pbWF0aW9uVHlwZTsgfQpAQCAtOTgsNyArOTgsNyBAQCBwcml2YXRlOgogCiAgICAgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlciogbV9tYW5hZ2VyOwogICAgIHVpbnQ2NF90IG1fY29udGV4dElk
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBtX2xheWVySG9zdGlu
Z0NvbnRleHQ7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpMYXllckhvc3RpbmdD
b250ZXh0PiBtX2xheWVySG9zdGluZ0NvbnRleHQ7CiAgICAgQW5pbWF0aW9uVHlwZSBtX2FuaW1h
dGlvblR5cGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV90YXJnZXRJc0Z1bGxzY3JlZW4geyBmYWxz
ZSB9OwogICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZSBtX2Z1bGxzY3JlZW5Nb2RlIHsgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCA2ODRlYmFiYWQz
NmNkZjM5MTBkN2I2MmNhY2IxNjQ4YTRiOWIyMmY0Li5mZjVhM2Q4NWE5YjNiMmYyMDI0MTU1NTRk
Nzc0NDljYzZkZDVlOTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMjgsNyArMjgsNiBAQAogI2lm
IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBIQVZFKEFWS0lUKSkgfHwgKFBMQVRGT1JNKE1BQykg
JiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIAogI2ltcG9ydCAiQXR0YWNobWVu
dC5oIgotI2ltcG9ydCAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgogI2ltcG9ydCAiTG9nZ2luZy5o
IgogI2ltcG9ydCAiUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oIgogI2ltcG9ydCAiVmlkZW9GdWxs
c2NyZWVuTWFuYWdlck1lc3NhZ2VzLmgiCkBAIC00Myw2ICs0Miw3IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0V2ZW50TmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0hUTUxWaWRlb0VsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTGF5ZXJIb3N0
aW5nQ29udGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QaWN0dXJlSW5QaWN0dXJlU3VwcG9ydC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UmVuZGVyTGF5ZXIuaD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlYjZiNTZiOWQzZDNmMDc3YzVjNjNiZmRmMzdkZDhmZmQx
ODQ0YWY4Li45MmJiMDQ4NWI4MjY4MWRjZmI4YWUzYmUxZTMyNDc2MjBkNGJiNWU5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMjAtMDEtMTAgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNv
bT4KKworICAgICAgICBbTWVkaWEgaW4gR1BVIHByb2Nlc3NdIEltcGxlbWVudCB0aGUgcmVtb3Rl
IHZpZGVvIGxheWVyIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNjA0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMC0wMS0x
MCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVk
aWEgaW4gR1BVIHByb2Nlc3NdIEV4dGVuZCB0aGUgR1BVIHByb2Nlc3Mgc2FuZGJveCB0byBhbGxv
dyBhY2Nlc3MgdG8gbG9jYWwgZmlsZXMgd2hlbiBuZWNlc3NhcnkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9ncHUtcHJv
Y2Vzcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGE1MTYzM2ZmYWRiMjQwY2IyN2RiZDFkNjRhNGMz
MDBiNTA4ZDFlZWUuLmJlYTQ3YWQ0NmRhZWRlNzQ1NDRhMjgyNTc3NDk4NzYzNWY2OTM2ZDIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjMxLDYgKzIzMSw5
IEBAIGh0dHAvdGVzdHMvY2FjaGUvZGlzay1jYWNoZS9kaXNrLWNhY2hlLW1lZGlhLXNtYWxsLmh0
bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvdGV4dC10cmFjay1ibG9j
a2VkLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvdmlkZW8tZWxl
bWVudC1yZXNvdXJjZS10eXBlLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvbWVkaWEgWyBTa2lw
IF0KK2h0dHAvdGVzdHMvbWVkaWEvdmlkZW8tbG9hZC10d2ljZS5odG1sIFsgUGFzcyBdCitodHRw
L3Rlc3RzL21lZGlhL3ZpZGVvLXBsYXktcHJvZ3Jlc3MuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0
cy9tZWRpYS92aWRlby1wcmVsb2FkLmh0bWwgWyBQYXNzIF0KIGh0dHAvdGVzdHMvbmF2aWdhdGlv
bi9wYWdlLWNhY2hlLW1lZGlha2V5c2Vzc2lvbi5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL25h
dmlnYXRpb24vcGFnZS1jYWNoZS1tZWRpYXN0cmVhbS5odG1sIFsgU2tpcCBdCiBodHRwL3dwdC9t
ZWRpYXJlY29yZGVyIFsgU2tpcCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387429</attachid>
            <date>2020-01-11 01:01:34 -0800</date>
            <delta_ts>2020-01-11 11:40:03 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-206043-20200111010133.patch</filename>
            <type>text/plain</type>
            <size>92184</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM1MWQ3NGM4ZGRhNmM2
ODdjMjY2MzdmMDM0ZTAyMzhhYjQyZDMwMS4uYzJkMjQyMDk0NGZjODg3MDM1ODA5NGRiNmZmMDRm
ZmE0MzAyMGM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTAxLTEwICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBwcm9j
ZXNzXSBJbXBsZW1lbnQgdGhlIHJlbW90ZSB2aWRlbyBsYXllciBzdXBwb3J0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwNDMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRo
ZSBzZXRTaXplKCkgKHZpcnR1YWwpIGZ1bmN0aW9uIGluIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMKKyAgICAgICAgdG8gY29uZmlnIHRoZSBXZWJWaWRlb0NvbnRhaW5lckxheWVy
LgorICAgICAgICBBbHNvLCBpdCBhZGRzIGZ1bmN0aW9uIENyZWF0ZVdlYlJlbmRlckxheWVyKCkg
d2hpY2ggaXMgYSB3cmFwcGVyIG9mIFtDQUxheWVyIF93ZWJfcmVuZGVyTGF5ZXJXaXRoQ29udGV4
dElEOl0sCisgICAgICAgIHNvIHRoYXQgd2UgY2FuIGNyZWF0ZSBhIHJlbmRlciBsYXllciBpbiBj
KysgY29kZS4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0xh
eWVySG9zdGluZ0NvbnRleHQuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
bWFjL0xheWVySG9zdGluZ0NvbnRleHQuaC4KKyAgICAgICAgKFdlYkNvcmU6OkxheWVySG9zdGlu
Z0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MpOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL0xheWVySG9zdGluZ0NvbnRleHQubW06IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1tLgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2Vz
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y3JlYXRlUGxhdGZvcm1M
YXllckZvckhvc3RpbmdDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbToKKyAgICAgICAgKCtbQ0FMYXllciBfd2ViX3JlbmRl
ckxheWVyV2l0aENvbnRleHRJRDpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9J
bWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmg6CisKIDIwMjAtMDEtMTAgIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBUYWJsZUZvcm1hdHRpbmdDb250ZXh0
OjpsYXlvdXRUYWJsZUNlbGxCb3ggc2hvdWxkIHRha2UgSG9yaXpvbnRhbENvbnN0cmFpbnRzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDU1ODk5NGFiZTdlNzg1YWYwZGVmODA1YzgxYjA3YTM1ZmE2ZjgzMDMuLjE4MDc1
MTQ0YmVjMjdlYmE2ZGU4MTBkZTUwMDhjODhiODRhY2I5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NzcgQEAKKzIwMjAtMDEtMTAgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAg
ICAgICBbTWVkaWEgaW4gR1BVIHByb2Nlc3NdIEltcGxlbWVudCB0aGUgcmVtb3RlIHZpZGVvIGxh
eWVyIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNjA0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW90ZU1lZGlhUGxheWVyUHJveHkgaW4gdGhlIEdQVSBwcm9jZXNzIGNyZWF0ZXMgYSBM
YXllckhvc3RpbmdDb250ZXh0IHdpdGggY3JlYXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2Vzcygp
CisgICAgICAgIGFuZCBzaGFyZSB0aGUgY29udGV4dCBJRCB3aXRoIHRoZSBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUgaW4gdGhlIFdlYiBwcm9jZXNzLgorICAgICAgICBUaGVuIHRoZSBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGUgY3JlYXRlcyBhIENBTGF5ZXIgd2l0aCB0aGUgY29udGV4dCBJRCBm
b3IgcmVuZGVyaW5nLgorICAgICAgICBUaGlzIHBhdGNoIGFsc28gYWRkcyBuZWNlc3NhcnkgWFBD
IG1lc3NhZ2VzIHRvIG1ha2Ugc3VyZSB0aGUgcmVuZGVyaW5nIHdvcmsgcHJvcGVybHkuCisKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnByZXBh
cmVGb3JQbGF5YmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5OjpzZXRTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpwcmVwYXJlRm9yUGxheWJhY2spOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckZpcnN0VmlkZW9G
cmFtZUF2YWlsYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6
Om1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0IGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJDb250ZW50
c1NjYWxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6
c2V0U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5Lmg6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVy
UHJveHkuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5
Lmg6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luQ29udHJvbGxlclByb3h5TWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnNldExheWVySG9z
dGluZ01vZGUpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnVwZGF0
ZUxheWVySG9zdGluZ0NvbnRleHQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5OgorICAgICAgICAqIFNoYXJlZC9MYXllclRyZWVDb250ZXh0Lmg6CisgICAgICAgICogU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2Eu
dHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6
OlBhZ2VDbGllbnQ6OnZpZXdMYXllckhvc3RpbmdNb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpwcmVwYXJlRm9yUGxheWJhY2spOgorICAgICAgICAoV2ViS2l0OjpNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Zmlyc3RWaWRlb0ZyYW1l
QXZhaWxhYmxlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpw
bGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpzZXRTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXI6OmZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRz
Y2FwZVBsdWdpbk1hYy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oOgorICAg
ICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6c2V0TGF5ZXJIb3N0aW5nTW9kZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1v
dGVDdXN0b20uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVl
L1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUNvbnRleHQuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpsYXllckhvc3RpbmdNb2RlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaDoKKyAgICAgICAgKFdlYktpdDo6
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6bGF5ZXJIb3N0aW5nQ29udGV4dCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorCiAy
MDIwLTAxLTEwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtNZWRpYSBpbiBHUFUgcHJvY2Vzc10gRXh0ZW5kIHRoZSBHUFUgcHJvY2VzcyBzYW5kYm94
IHRvIGFsbG93IGFjY2VzcyB0byBsb2NhbCBmaWxlcyB3aGVuIG5lY2Vzc2FyeQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNDb2NvYS50eHQKaW5kZXggZTQ1M2Q4OTA5N2U2ODZiMmMzMzUyYmFkNjZlZTcxMjM0N2MxNjZi
NS4uOTZlZWRhMjdjMzg3M2IwOTA1ZTQ2MzkwYzUxNDYxM2FlODIyZGJlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CkBAIC0xOTQsNiArMTk0LDcgQEAgcGxhdGZvcm0vY29jb2EvQ29yZVZpZGVv
U29mdExpbmsuY3BwCiBwbGF0Zm9ybS9jb2NvYS9EYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1t
IEBuby11bmlmeQogcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbQogcGxhdGZvcm0v
Y29jb2EvS2V5RXZlbnRDb2NvYS5tbQorcGxhdGZvcm0vY29jb2EvTGF5ZXJIb3N0aW5nQ29udGV4
dC5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2NvY29hL0xvY2FsaXplZFN0cmluZ3NDb2NvYS5tbQog
cGxhdGZvcm0vY29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tCiBwbGF0Zm9ybS9jb2NvYS9O
ZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDliYjg0MzE0NTM5YWQwOTUxNDYz
MWIyMTMwNjE2YWY2MGJhOWExYzMuLmJiN2ExOTY0NTM0NWIxMDQxYzc5OTBkOTc2Njk3Y2U5OWQw
MWIxMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTYyOSw2ICs2MjksOCBAQAogCQkxQ0ZBRTMyMzBBNkQ2QTNGMDAzMjU5M0Qg
LyogbGlib2JqYy5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDRkFFMzIyMEE2RDZBM0YwMDMyNTkzRCAvKiBsaWJvYmpjLmR5bGliICovOyB9
OwogCQkxRDAwMjZBNDIzNzRENjI0MDBDQTZDREYgLyogSlNQaWN0dXJlSW5QaWN0dXJlV2luZG93
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRDAwMjZB
MjIzNzRENjIzMDBDQTZDREYgLyogSlNQaWN0dXJlSW5QaWN0dXJlV2luZG93LmggKi87IH07CiAJ
CTFEMDAyNkFBMjM3NEY5RUEwMENBNkNERiAvKiBKU0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRDAwMjZB
ODIzNzRGOUQ5MDBDQTZDREYgLyogSlNFbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5oICovOyB9
OworCQkxRDI4NEU1NzIzQzk0ODU5MDA0QkQ4QkEgLyogTGF5ZXJIb3N0aW5nQ29udGV4dC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUQyODRFNTQyM0M5
NDdGQjAwNEJEOEJBIC8qIExheWVySG9zdGluZ0NvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxRDI4NEU1ODIzQzlBQTlDMDA0QkQ4QkEg
LyogTGF5ZXJIb3N0aW5nQ29udGV4dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFEMjg0RTU1MjNDOTQ3RkQwMDRCRDhCQSAvKiBMYXllckhvc3RpbmdD
b250ZXh0Lm1tICovOyB9OwogCQkxRDJDODJCNzIzNkEzRjZBMDA1NUQ2QzUgLyogUGljdHVyZUlu
UGljdHVyZVN1cHBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFEMkM4MkI2MjM2QTNGNkEwMDU1RDZDNSAvKiBQaWN0dXJlSW5QaWN0dXJlU3VwcG9y
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFE
MkY4RTAzMjM0NDc0RUYwMDk5M0I2OCAvKiBEb2N1bWVudFBpY3R1cmVJblBpY3R1cmUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFERUYwNkREMjMzRDJF
MUMwMEVFMjI4RCAvKiBEb2N1bWVudFBpY3R1cmVJblBpY3R1cmUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxRDJGOEUwNDIzNDQ3NTE2MDA5OTNC
NjggLyogRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFERUYwNkNBMjMzQzNEMEIwMEVFMjI4RCAvKiBFbnRl
clBpY3R1cmVJblBpY3R1cmVFdmVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC02NTA4LDYgKzY1MTAsOCBAQAogCQkxRDAwMjZBMzIzNzRENjI0
MDBDQTZDREYgLyogSlNQaWN0dXJlSW5QaWN0dXJlV2luZG93LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUGljdHVyZUluUGljdHVyZVdpbmRvdy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEMDAyNkE4MjM3NEY5RDkwMENBNkNERiAvKiBKU0Vu
dGVyUGljdHVyZUluUGljdHVyZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUQwMDI2QTkyMzc0RjlEOTAwQ0E2Q0RGIC8qIEpTRW50ZXJQaWN0dXJlSW5QaWN0
dXJlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFbnRl
clBpY3R1cmVJblBpY3R1cmVFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFEMjg0RTU0MjNDOTQ3RkIwMDRCRDhCQSAvKiBMYXllckhvc3RpbmdDb250ZXh0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExheWVySG9zdGluZ0NvbnRleHQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUQyODRFNTUyM0M5NDdGRDAwNEJEOEJBIC8qIExheWVy
SG9zdGluZ0NvbnRleHQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBMYXllckhvc3RpbmdDb250ZXh0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
RDJDODJCNjIzNkEzRjZBMDA1NUQ2QzUgLyogUGljdHVyZUluUGljdHVyZVN1cHBvcnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUGljdHVyZUluUGljdHVyZVN1cHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMURCQzFCNTUyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVP
YnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQaWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMURDNTUzRkQyMTFCQTEyQTAwNEI3ODBFIC8qIE5h
dmlnYXRvclNoYXJlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOYXZpZ2F0b3JTaGFyZS5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzA3Myw2ICsyMzA3Nyw4IEBACiAJ
CQkJN0EwOUNFRjAxRjAxRDFGNzAwRTkzQkRCIC8qIEZpbGVNb25pdG9yQ29jb2EubW0gKi8sCiAJ
CQkJQTVDOTc0Q0YxMTQ4NUZGMTAwNjZGMkFCIC8qIEtleUV2ZW50Q29jb2EuaCAqLywKIAkJCQlB
NUM5NzREMDExNDg1RkYxMDA2NkYyQUIgLyogS2V5RXZlbnRDb2NvYS5tbSAqLywKKwkJCQkxRDI4
NEU1NDIzQzk0N0ZCMDA0QkQ4QkEgLyogTGF5ZXJIb3N0aW5nQ29udGV4dC5oICovLAorCQkJCTFE
Mjg0RTU1MjNDOTQ3RkQwMDRCRDhCQSAvKiBMYXllckhvc3RpbmdDb250ZXh0Lm1tICovLAogCQkJ
CTFBNDgzMkIyMUE5NTNCQTYwMDhCNERGRSAvKiBMb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0gKi8s
CiAJCQkJQzUzRDM5MzMxQzk3ODkyRDAwN0YzQUU5IC8qIE1JTUVUeXBlUmVnaXN0cnlDb2NvYS5t
bSAqLywKIAkJCQlBMTlEOTM0OTFBQTExQjFFMDBCNDZDMjQgLyogTmV0d29ya0V4dGVuc2lvbkNv
bnRlbnRGaWx0ZXIuaCAqLywKQEAgLTMxMzEzLDYgKzMxMzE5LDcgQEAKIAkJCQkwRkVDMTIwQzIy
QkYyQ0QyMDA0RTlEMzUgLyogTGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2suaCBpbiBIZWFkZXJz
ICovLAogCQkJCUU0OTE2RkY3MTk1REY2QTAwMDVBQjM0OSAvKiBMYXllckZsdXNoVGhyb3R0bGVT
dGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTgwMzcxNjQxQTY2RjFEMzAwQkFGNTE5IC8qIExh
eWVyRnJhZ21lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTFEMjg0RTU3MjNDOTQ4NTkwMDRCRDhC
QSAvKiBMYXllckhvc3RpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QUEzQTZBMDE5
NEI1OUI2MDAxQ0JEMjQgLyogTGF5ZXJQb29sLmggaW4gSGVhZGVycyAqLywKIAkJCQkxMTMxMENG
NzIwQkE0QTYyMDA2NUE4RDAgLyogTGF5b3V0QW5jZXN0b3JJdGVyYXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTE1Q0ZBOTcyMDhCOTUyQjAwMUU2OTkxIC8qIExheW91dEJveC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zMzYzMCw2ICszMzYzNyw3IEBACiAJCQkJQ0QwNjNGODIxRTIzRkE4OTAwODEy
QkUzIC8qIEluaXREYXRhUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM5M0Ux
Rjk5QkY1QTAwNEQyMkE4IC8qIEpTUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTM1QzQ3NzAwOUFDNEQ3MzAwQTZBQUI0IC8qIEtleUV2ZW50TWFjLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJMUQyODRFNTgyM0M5QUE5QzAwNEJEOEJBIC8qIExheWVySG9z
dGluZ0NvbnRleHQubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREE5OEUwQjE2MDNDRDYwMDBGRUEz
QjEgLyogTGVnYWN5Q0RNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERThCNUVDMUE2OTc3NzMw
MEI0QjY2QSAvKiBMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQ0RDQTk4RUIxOEIyQzhFQjAwQzEyRkY5IC8qIExlZ2FjeUNETVByaXZhdGVNZWRpYVBsYXll
ci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL0xheWVySG9zdGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL0xheWVySG9zdGluZ0NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMjVkN2Y5NWZiZDY1MTUyNjY0
ZDNiY2FiM2ZmZmU4MmQ4ZTAzZWEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvTGF5ZXJIb3N0aW5nQ29udGV4dC5oCkBAIC0wLDAgKzEsMTE0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorCitPQkpDX0NMQVNTIENBTGF5ZXI7CitPQkpDX0NMQVNTIENBQ29udGV4dDsKKworbmFtZXNw
YWNlIFdURiB7CitjbGFzcyBNYWNoU2VuZFJpZ2h0OworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3VzaW5nIExheWVySG9zdGluZ0NvbnRleHRJRCA9IHVpbnQzMl90OworCitlbnVtIGNsYXNz
IExheWVySG9zdGluZ01vZGUgOiB1aW50OF90IHsKKyAgICBJblByb2Nlc3MsCisjaWYgSEFWRShP
VVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQorICAgIE91dE9mUHJvY2VzcworI2VuZGlmCit9
OworCitzdHJ1Y3QgTGF5ZXJIb3N0aW5nQ29udGV4dE9wdGlvbnMgeworI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCisgICAgYm9vbCBjYW5TaG93V2hpbGVMb2NrZWQgeyBmYWxzZSB9OworI2VuZGlm
Cit9OworCitjbGFzcyBMYXllckhvc3RpbmdDb250ZXh0IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShMYXllckhvc3RpbmdDb250ZXh0KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJs
aWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3Rp
bmdDb250ZXh0PiBjcmVhdGVGb3JQb3J0KGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc2VydmVy
UG9ydCk7CisKKyNpZiBIQVZFKE9VVF9PRl9QUk9DRVNTX0xBWUVSX0hPU1RJTkcpCisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBj
cmVhdGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9jZXNzKGNvbnN0IExheWVySG9zdGluZ0NvbnRleHRP
cHRpb25zJiA9IHsgfSk7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBjcmVhdGVGb3JFeHRl
cm5hbFBsdWdpbkhvc3RpbmdQcm9jZXNzKCk7CisjZW5kaWYKKworI2VuZGlmIC8vIEhBVkUoT1VU
X09GX1BST0NFU1NfTEFZRVJfSE9TVElORykKKworICAgIExheWVySG9zdGluZ0NvbnRleHQoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB+TGF5ZXJIb3N0aW5nQ29udGV4dCgpOworCisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRSb290TGF5ZXIoQ0FMYXllciAqKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBDQUxheWVyICpyb290TGF5ZXIoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIExheWVy
SG9zdGluZ0NvbnRleHRJRCBjb250ZXh0SUQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGludmFsaWRhdGUoKTsKKworICAgIExheWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9k
ZSgpIHsgcmV0dXJuIG1fbGF5ZXJIb3N0aW5nTW9kZTsgfQorCisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRDb2xvclNwYWNlKENHQ29sb3JTcGFjZVJlZik7CisgICAgV0VCQ09SRV9FWFBPUlQg
Q0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UoKSBjb25zdDsKKworI2lmIFBMQVRGT1JNKE1BQykK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQoYm9v
bCk7CisgICAgYm9vbCBjb2xvck1hdGNoVW50YWdnZWRDb250ZW50KCkgY29uc3Q7CisjZW5kaWYK
KworICAgIC8vIEZlbmNlcyBvbmx5IHdvcmsgb24gaU9TIGFuZCBPUyAxMC4xMCsuCisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRGZW5jZVBvcnQobWFjaF9wb3J0X3QpOworCisgICAgLy8gY3Jl
YXRlRmVuY2VQb3J0IGRvZXMgbm90IGluc3RhbGwgdGhlIGZlbmNlIHBvcnQgb24gdGhlIExheWVy
SG9zdGluZ0NvbnRleHQncworICAgIC8vIENBQ29udGV4dDsgY2FsbCBzZXRGZW5jZVBvcnQoKSB3
aXRoIHRoZSBuZXdseSBjcmVhdGVkIHBvcnQgaWYgc3luY2hyb25pemF0aW9uCisgICAgLy8gd2l0
aCB0aGlzIGNvbnRleHQgaXMgZGVzaXJlZC4KKyAgICBXVEY6Ok1hY2hTZW5kUmlnaHQgY3JlYXRl
RmVuY2VQb3J0KCk7CisKK3ByaXZhdGU6CisgICAgTGF5ZXJIb3N0aW5nTW9kZSBtX2xheWVySG9z
dGluZ01vZGU7CisgICAgUmV0YWluUHRyPENBQ29udGV4dD4gbV9jb250ZXh0OworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRlPD4gc3RydWN0
IEVudW1UcmFpdHM8V2ViQ29yZTo6TGF5ZXJIb3N0aW5nTW9kZT4geworICAgIHVzaW5nIHZhbHVl
cyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkxheWVySG9zdGluZ01vZGUsCisjaWYg
SEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQorICAgICAgICBXZWJDb3JlOjpMYXll
ckhvc3RpbmdNb2RlOjpPdXRPZlByb2Nlc3MsCisjZW5kaWYKKyAgICAgICAgV2ViQ29yZTo6TGF5
ZXJIb3N0aW5nTW9kZTo6SW5Qcm9jZXNzCisgICAgPjsKK307Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9MYXllckhvc3RpbmdDb250ZXh0Lm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lZGQ2Y2NmMmMxNjQ3NTAzM2Y1ZmQ5MmJhMjRiMmI3OTg5NmI3YTM0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTGF5ZXJIb3N0aW5nQ29udGV4dC5t
bQpAQCAtMCwwICsxLDE1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJMYXllckhvc3RpbmdDb250ZXh0LmgiCisKKyNpbXBvcnQgPHBhbC9zcGkvY2cv
Q29yZUdyYXBoaWNzU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEku
aD4KKyNpbXBvcnQgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kworc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IExheWVySG9zdGluZ0NvbnRl
eHQ6OmNyZWF0ZUZvclBvcnQoY29uc3QgTWFjaFNlbmRSaWdodCYgc2VydmVyUG9ydCkKK3sKKyAg
ICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPExheWVySG9zdGluZ0NvbnRl
eHQ+KCk7CisKKyAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBAeworICAgICAgICBrQ0FDb250
ZXh0UG9ydE51bWJlciA6IEAoc2VydmVyUG9ydC5zZW5kUmlnaHQoKSksCisjaWYgUExBVEZPUk0o
TUFDKQorICAgICAgICBrQ0FDb250ZXh0Q0lGaWx0ZXJCZWhhdmlvciA6IEAiaWdub3JlIiwKKyNl
bmRpZgorICAgIH07CisKKyAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2xheWVySG9zdGluZ01v
ZGUgPSBMYXllckhvc3RpbmdNb2RlOjpJblByb2Nlc3M7CisgICAgbGF5ZXJIb3N0aW5nQ29udGV4
dC0+bV9jb250ZXh0ID0gW0NBQ29udGV4dCByZW1vdGVDb250ZXh0V2l0aE9wdGlvbnM6b3B0aW9u
c107CisKKyAgICByZXR1cm4gbGF5ZXJIb3N0aW5nQ29udGV4dDsKK30KKworI2lmIEhBVkUoT1VU
X09GX1BST0NFU1NfTEFZRVJfSE9TVElORykKK3N0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdD
b250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9j
ZXNzKGNvbnN0IExheWVySG9zdGluZ0NvbnRleHRPcHRpb25zJiBvcHRpb25zKQoreworICAgIGF1
dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4o
KTsKKyAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2xheWVySG9zdGluZ01vZGUgPSBMYXllckhv
c3RpbmdNb2RlOjpPdXRPZlByb2Nlc3M7CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAh
UExBVEZPUk0oTUFDQ0FUQUxZU1QpCisgICAgLy8gVXNlIGEgdmVyeSBsYXJnZSBkaXNwbGF5IElE
IHRvIGVuc3VyZSB0aGF0IHRoZSBjb250ZXh0IGlzIG5ldmVyIHB1dCBvbi1zY3JlZW4gCisgICAg
Ly8gd2l0aG91dCBiZWluZyBleHBsaWNpdGx5IHBhcmVudGVkLiBTZWUgPHJkYXI6Ly9wcm9ibGVt
LzE2MDg5MjY3PiBmb3IgZGV0YWlscy4KKyAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2NvbnRl
eHQgPSBbQ0FDb250ZXh0IHJlbW90ZUNvbnRleHRXaXRoT3B0aW9uczpAeworICAgICAgICBrQ0FD
b250ZXh0U2VjdXJlOiBAKG9wdGlvbnMuY2FuU2hvd1doaWxlTG9ja2VkKSwKKyNpZiBIQVZFKENP
UkVfQU5JTUFUSU9OX1JFTkRFUl9TRVJWRVIpCisgICAgICAgIGtDQUNvbnRleHRJZ25vcmVzSGl0
VGVzdCA6IEBZRVMsCisgICAgICAgIGtDQUNvbnRleHREaXNwbGF5SWQgOiBAMTAwMDAKKyNlbmRp
ZgorICAgIH1dOworI2VsaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKSAmJiBFTkFCTEUoV0VCUFJP
Q0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCisgICAgVU5VU0VEX1BBUkFNKG9wdGlvbnMpOwor
ICAgIFtDQUNvbnRleHQgc2V0QWxsb3dzQ0dTQ29ubmVjdGlvbnM6Tk9dOworICAgIGxheWVySG9z
dGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQgcmVtb3RlQ29udGV4dFdpdGhPcHRp
b25zOkB7CisgICAgICAgIGtDQUNvbnRleHRDSUZpbHRlckJlaGF2aW9yIDogIEAiaWdub3JlIiwK
KyAgICB9XTsKKyNlbHNlCisgICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9jb250ZXh0ID0gW0NB
Q29udGV4dCBjb250ZXh0V2l0aENHU0Nvbm5lY3Rpb246Q0dTTWFpbkNvbm5lY3Rpb25JRCgpIG9w
dGlvbnM6QHsKKyAgICAgICAga0NBQ29udGV4dENJRmlsdGVyQmVoYXZpb3IgOiBAImlnbm9yZSIs
CisgICAgfV07CisjZW5kaWYKKyAgICAKKyAgICByZXR1cm4gbGF5ZXJIb3N0aW5nQ29udGV4dDsK
K30KKworI2lmIFBMQVRGT1JNKE1BQykKK3N0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250
ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbFBsdWdpbkhvc3RpbmdQ
cm9jZXNzKCkKK3sKKyAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPExh
eWVySG9zdGluZ0NvbnRleHQ+KCk7CisgICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9sYXllckhv
c3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQcm9jZXNzOworICAgIGxheWVySG9z
dGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQgY29udGV4dFdpdGhDR1NDb25uZWN0
aW9uOkNHU01haW5Db25uZWN0aW9uSUQoKSBvcHRpb25zOkB7IGtDQUNvbnRleHRDSUZpbHRlckJl
aGF2aW9yIDogQCJpZ25vcmUiIH1dOworICAgIHJldHVybiBsYXllckhvc3RpbmdDb250ZXh0Owor
fQorI2VuZGlmCisjZW5kaWYgLy8gSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQor
CitMYXllckhvc3RpbmdDb250ZXh0OjpMYXllckhvc3RpbmdDb250ZXh0KCkKK3sKK30KKworTGF5
ZXJIb3N0aW5nQ29udGV4dDo6fkxheWVySG9zdGluZ0NvbnRleHQoKQoreworfQorCit2b2lkIExh
eWVySG9zdGluZ0NvbnRleHQ6OnNldFJvb3RMYXllcihDQUxheWVyICpyb290TGF5ZXIpCit7Cisg
ICAgW21fY29udGV4dCBzZXRMYXllcjpyb290TGF5ZXJdOworfQorCitDQUxheWVyICpMYXllckhv
c3RpbmdDb250ZXh0Ojpyb290TGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBbbV9jb250ZXh0
IGxheWVyXTsKK30KKworTGF5ZXJIb3N0aW5nQ29udGV4dElEIExheWVySG9zdGluZ0NvbnRleHQ6
OmNvbnRleHRJRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2NvbnRleHQgY29udGV4dElkXTsK
K30KKwordm9pZCBMYXllckhvc3RpbmdDb250ZXh0OjppbnZhbGlkYXRlKCkKK3sKKyAgICBbbV9j
b250ZXh0IGludmFsaWRhdGVdOworfQorCit2b2lkIExheWVySG9zdGluZ0NvbnRleHQ6OnNldENv
bG9yU3BhY2UoQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UpCit7CisgICAgW21fY29udGV4dCBz
ZXRDb2xvclNwYWNlOmNvbG9yU3BhY2VdOworfQorCitDR0NvbG9yU3BhY2VSZWYgTGF5ZXJIb3N0
aW5nQ29udGV4dDo6Y29sb3JTcGFjZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2NvbnRleHQg
Y29sb3JTcGFjZV07Cit9CisKKyNpZiBQTEFURk9STShNQUMpCit2b2lkIExheWVySG9zdGluZ0Nv
bnRleHQ6OnNldENvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQoYm9vbCBjb2xvck1hdGNoVW50YWdn
ZWRDb250ZW50KQoreworICAgIFttX2NvbnRleHQgc2V0Q29sb3JNYXRjaFVudGFnZ2VkQ29udGVu
dDpjb2xvck1hdGNoVW50YWdnZWRDb250ZW50XTsKK30KKworYm9vbCBMYXllckhvc3RpbmdDb250
ZXh0Ojpjb2xvck1hdGNoVW50YWdnZWRDb250ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21f
Y29udGV4dCBjb2xvck1hdGNoVW50YWdnZWRDb250ZW50XTsKK30KKyNlbmRpZgorCit2b2lkIExh
eWVySG9zdGluZ0NvbnRleHQ6OnNldEZlbmNlUG9ydChtYWNoX3BvcnRfdCBmZW5jZVBvcnQpCit7
CisgICAgW21fY29udGV4dCBzZXRGZW5jZVBvcnQ6ZmVuY2VQb3J0XTsKK30KKworTWFjaFNlbmRS
aWdodCBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGZW5jZVBvcnQoKQoreworICAgIHJldHVy
biBNYWNoU2VuZFJpZ2h0OjphZG9wdChbbV9jb250ZXh0IGNyZWF0ZUZlbmNlUG9ydF0pOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclNwYWNlLmgKaW5kZXggMGFhMjc0YTFjNTA5NTM1MjZhODhlZTRhNGVmYTNmOWM4
ZDIzN2IzYi4uNmZjZDc4ZmMzZWEzZmIwNTY1NmViNjU3MmRhOGQzZTNkMTNmMjg0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaApAQCAtMzIsNiAr
MzIsNSBAQCBlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90IHsKICAgICBMaW5lYXJSR0Is
CiAgICAgRGlzcGxheVAzCiB9OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAppbmRleCBk
ZDFlYjQ2Nzk0MmUwYmIwNjllYWY3OTZmNzcxY2IwOTMyZmNjOWNjLi41NDM2MWU2NjMwYTI0YTVm
MTE1NzhjNDUyZmUyZDMyY2ZkZTg5M2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29h
LmgKQEAgLTM5LDYgKzM5LDggQEAgcHVibGljOgogICAgIC8vIGlzIGRlZmluZWQgZGlmZmVyZW50
bHkgZm9yIE9iaiBDIGFuZCBDKysuIFRoaXMgYWxsb3dzIGNhbGxlcnMgZnJvbSBib3RoIGxhbmd1
YWdlcy4KICAgICBzdGF0aWMgUmVmPFBsYXRmb3JtQ0FMYXllckNvY29hPiBjcmVhdGUodm9pZCog
cGxhdGZvcm1MYXllciwgUGxhdGZvcm1DQUxheWVyQ2xpZW50Kik7CiAKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmV0YWluUHRyPENBTGF5ZXI+IGNyZWF0ZVBsYXRmb3JtTGF5ZXJGb3JIb3N0
aW5nQ29udGV4dCh1aW50MzJfdCBjb250ZXh0SUQpOworCiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIExheWVyVHlwZSBsYXllclR5cGVGb3JQbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqKTsK
IAogICAgIH5QbGF0Zm9ybUNBTGF5ZXJDb2NvYSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJD
b2NvYS5tbQppbmRleCA2NTI2MGNhYzAxMjhjZGE5NjBiYWRlMTI1MmU2ZjZjYTc3MThkYjJmLi40
ZTk2Mjc3M2EyZGQ0ODlkZmI5MDk3Mzk5OTk1YzBlNjFmMTgxNjIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0
Zm9ybUNBTGF5ZXJDb2NvYS5tbQpAQCAtMzAsNiArMzAsNyBAQAogI2ltcG9ydCAiR3JhcGhpY3ND
b250ZXh0LmgiCiAjaW1wb3J0ICJHcmFwaGljc0xheWVyQ0EuaCIKICNpbXBvcnQgIklPU3VyZmFj
ZS5oIgorI2ltcG9ydCAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgogI2ltcG9ydCAiTGVuZ3RoRnVu
Y3Rpb25zLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EuaCIKICNpbXBvcnQg
IlBsYXRmb3JtQ0FGaWx0ZXJzLmgiCkBAIC03OSw2ICs4MCwxMSBAQCBSZWY8UGxhdGZvcm1DQUxh
eWVyQ29jb2E+IFBsYXRmb3JtQ0FMYXllckNvY29hOjpjcmVhdGUodm9pZCogcGxhdGZvcm1MYXll
ciwgUGxhdAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsYXRmb3JtQ0FMYXllckNvY29hKChf
X2JyaWRnZSBDQUxheWVyICopcGxhdGZvcm1MYXllciwgb3duZXIpKTsKIH0KIAorUmV0YWluUHRy
PENBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllckNvY29hOjpjcmVhdGVQbGF0Zm9ybUxheWVyRm9ySG9z
dGluZ0NvbnRleHQoTGF5ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJRCkKK3sKKyAgICByZXR1
cm4gW0NBTGF5ZXIgX3dlYl9yZW5kZXJMYXllcldpdGhDb250ZXh0SUQ6Y29udGV4dElEXTsKK30K
Kwogc3RhdGljIE5TU3RyaW5nICogY29uc3QgcGxhdGZvcm1DQUxheWVyUG9pbnRlciA9IEAiV0tQ
bGF0Zm9ybUNBTGF5ZXIiOwogUGxhdGZvcm1DQUxheWVyKiBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRm
b3JtQ0FMYXllcih2b2lkKiBwbGF0Zm9ybUxheWVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJh
cy5tbQppbmRleCAyM2JiMGRlOTE2MGRjYjg2N2QyMjMyMDM1MzhhZDVlN2UzMmY1MDA4Li4xODA1
YzBhNWY2Y2ZmMjgzNjVjZjZjOGM4NzEzYjQyZTg1MDI5OGU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXll
ckV4dHJhcy5tbQpAQCAtODEsNiArODEsOSBAQAogKyAoQ0FMYXllciAqKV93ZWJfcmVuZGVyTGF5
ZXJXaXRoQ29udGV4dElEOih1aW50MzJfdCljb250ZXh0SUQKIHsKICAgICBDQUxheWVySG9zdCAq
bGF5ZXJIb3N0ID0gW0NBTGF5ZXJIb3N0IGxheWVyXTsKKyNpZm5kZWYgTkRFQlVHCisgICAgW2xh
eWVySG9zdCBzZXROYW1lOkAiV2ViVmlkZW9Ib3N0aW5nTGF5ZXIiXTsKKyNlbmRpZgogICAgIGxh
eWVySG9zdC5jb250ZXh0SWQgPSBjb250ZXh0SUQ7CiAgICAgcmV0dXJuIGxheWVySG9zdDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJh
bnNmZXJTZXNzaW9uVlQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9J
bWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tCmluZGV4IDE1Mzk3YWI3ZjI3OGFlOGRjNjllMzI1MjM3
NjRmYjg4YmZlZGQwMDcuLjY5NDgwMjQ0NThhMGY3MTkzZjJkYWZmM2Y5Mzk5M2VkZDJlZDk0Mjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJh
bnNmZXJTZXNzaW9uVlQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQpAQCAtMjgsMTggKzI4LDE5IEBACiAKICNpZiBV
U0UoVklERU9UT09MQk9YKQogCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2ltcG9y
dCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCiAjaW1wb3J0IDxD
b3JlTWVkaWEvQ01Gb3JtYXREZXNjcmlwdGlvbi5oPgogI2ltcG9ydCA8Q29yZU1lZGlhL0NNU2Ft
cGxlQnVmZmVyLmg+CisjaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgogI2ltcG9ydCA8cGFs
L2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisjaW1wb3J0ICJWaWRlb1Rvb2xib3hTb2Z0TGluay5o
IgogCiAjaWYgSEFWRShJT1NVUkZBQ0UpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKICNpbmNs
dWRlIDxwYWwvc3BpL2NvY29hL0lPU3VyZmFjZVNQSS5oPgogI2VuZGlmCiAKLSNpbXBvcnQgIkNv
cmVWaWRlb1NvZnRMaW5rLmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFj
ZSBQQUw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVU3dhcENoYWluRGVzY3JpcHRvci5oCmluZGV4IDY1NzA0MjA0NjNjYWFiYTE1
ZmU3ZDczMTYyYWE4ZWE3YmQ0ODFmOTMuLjBlZjliMmY4MGU2ZDBiOWFjOWU5ZmI0Y2FhMjczNDg5
ZGMyMzhlOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaApAQCAtMjgsNiArMjgsNyBAQAog
I2lmIEVOQUJMRShXRUJHUFUpCiAKICNpbmNsdWRlICJHUFVEZXZpY2UuaCIKKyNpbmNsdWRlICJH
UFVFcnJvclNjb3Blcy5oIgogI2luY2x1ZGUgIkdQVVRleHR1cmVGb3JtYXQuaCIKICNpbmNsdWRl
ICJHUFVUZXh0dXJlVXNhZ2UuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKaW5k
ZXggNDc5MzMwOTkwYzM4ZjA2Y2I4NjBjYzM4ZjUzMWNmMzBlMzBkMmVlZi4uYjc3YTJhMmVkNTAz
ZGE3YjRiMjNmNDcxNWNiYTI0Y2EwYTk5Zjc3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyUHJveHlDb25maWd1cmF0aW9uLmgiCiAj
aW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9MYXlv
dXRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTWVkaWFQbGF5ZXJQcml2YXRlLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgpA
QCAtMTk3LDEwICsxOTgsMTAgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6
c3VwcG9ydHNLZXlTeXN0ZW0oTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmcKICAgICBjb21wbGV0
aW9uSGFuZGxlcihyZXN1bHQpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5OjpwcmVwYXJlRm9yUGxheWJhY2soTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmll
ciBpZCwgYm9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9h
ZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJpbmcp
Cit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpwcmVwYXJlRm9yUGxheWJhY2so
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgYm9vbCBwcml2YXRlTW9kZSwg
V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZl
c1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJpbmcsIFdlYkNvcmU6OkxheW91dFBvaW50JiYg
bGF5b3V0UG9pbnQsIFdlYkNvcmU6OkxheW91dFNpemUmJiBsYXlvdXRTaXplLCBmbG9hdCB2aWRl
b0NvbnRlbnRTY2FsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMYXllckhvc3RpbmdDb250ZXh0
SUQgY29udGV4dElkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byBwbGF5
ZXIgPSBtX3Byb3hpZXMuZ2V0KGlkKSkKLSAgICAgICAgcGxheWVyLT5wcmVwYXJlRm9yUGxheWJh
Y2socHJpdmF0ZU1vZGUsIHByZWxvYWQsIHByZXNlcnZlc1BpdGNoLCBwcmVwYXJlRm9yUmVuZGVy
aW5nKTsKKyAgICAgICAgcGxheWVyLT5wcmVwYXJlRm9yUGxheWJhY2socHJpdmF0ZU1vZGUsIHBy
ZWxvYWQsIHByZXNlcnZlc1BpdGNoLCBwcmVwYXJlRm9yUmVuZGVyaW5nLCBMYXlvdXRSZWN0KGxh
eW91dFBvaW50LCBsYXlvdXRTaXplKSwgdmlkZW9Db250ZW50U2NhbGUsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6
bG9hZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBVUkwmJiB1cmwsIE9w
dGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4mJiBzYW5kYm94RXh0ZW5zaW9uLCBXZWJD
b3JlOjpDb250ZW50VHlwZSYmIGNvbnRlbnRUeXBlLCBTdHJpbmcmJiBrZXlTeXN0ZW0sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQpAQCAtMjgxLDEyICsyODIsNiBAQCB2b2lkIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5OjpwcmVwYXJlRm9yUmVuZGVyaW5nKE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZQogICAgICAgICBwbGF5ZXItPnByZXBhcmVGb3JSZW5kZXJpbmcoKTsKIH0KIAotdm9pZCBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c2V0U2l6ZShNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyIGlkLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQotewotICAg
IGlmIChhdXRvIHBsYXllciA9IG1fcHJveGllcy5nZXQoaWQpKQotICAgICAgICBwbGF5ZXItPnNl
dFNpemUoc2l6ZSk7Ci19Ci0KIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnNl
dFZpc2libGUoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgYm9vbCB2aXNp
YmxlKQogewogICAgIGlmIChhdXRvIHBsYXllciA9IG1fcHJveGllcy5nZXQoaWQpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkuaAppbmRleCBkMzdjZjE4YWEzMjc5MjhiNDFmMmQwYTVmM2M4MGYz
MGZmMWUxZjFlLi5iOTY5MzU4NWY0MTg2YzQ0ODM2NGIwOWY1ZWQ1OTg0MjdmOGU1ZWNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaApAQCAtMzQsNiArMzQsMTAgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL01lZGlhUGxheWVyLmg+CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogCitu
YW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBMYXllckhvc3RpbmdDb250ZXh0SUQgPSB1aW50MzJf
dDsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M7CkBAIC04NCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdXBwb3J0c0tleVN5
c3RlbShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYmLCBjb25zdCBTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CiAKICAgICB2b2lkIGxvYWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmll
ciwgVVJMJiYsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4mJiwgV2ViQ29yZTo6
Q29udGVudFR5cGUmJiwgU3RyaW5nJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVk
aWFQbGF5ZXJDb25maWd1cmF0aW9uJiYpPiYmKTsKLSAgICB2b2lkIHByZXBhcmVGb3JQbGF5YmFj
ayhNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBib29sIHByaXZhdGVNb2RlLCBX
ZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBi
b29sIHByZXBhcmVGb3JSZW5kZXJpbmcpOworICAgIHZvaWQgcHJlcGFyZUZvclBsYXliYWNrKE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIGJvb2wgcHJpdmF0ZU1vZGUsIFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wg
cHJlcGFyZUZvclJlbmRlcmluZywgV2ViQ29yZTo6TGF5b3V0UG9pbnQmJiwgV2ViQ29yZTo6TGF5
b3V0U2l6ZSYmLCBmbG9hdCB2aWRlb0NvbnRlbnRTY2FsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpMYXllckhvc3RpbmdDb250ZXh0SUQgY29udGV4dElkKT4mJik7CiAgICAgdm9p
ZCBjYW5jZWxMb2FkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpOwogICAgIHZv
aWQgcHJlcGFyZVRvUGxheShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyKTsKIApA
QCAtMTAyLDcgKzEwNiw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRQcmVzZXJ2ZXNQaXRjaChN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBib29sKTsKIAogICAgIHZvaWQgcHJl
cGFyZUZvclJlbmRlcmluZyhNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyKTsKLSAg
ICB2b2lkIHNldFNpemUoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIHZvaWQgc2V0VmlzaWJsZShNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyLCBib29sKTsKICAgICB2b2lkIHNldFNob3VsZE1haW50YWluQXNw
ZWN0UmF0aW8oTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgYm9vbCk7CiAgICAg
dm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpGbG9hdFJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGIxZTE0MjBiYTljMTEwODkyZDk4OGM1NjlhZjIwZTdl
YWM3NGI5YjAuLmZkYTlmYzYwZGI3YjlkMGU3ZTZmM2I3NDI3YTVlYTkyMzZjZTgxYTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTM1LDcgKzM1
LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgTm90UmVmQ291
bnRlZCB7CiAgICAgQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhlbnVtOnVpbnQ4X3QgV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlk
ZW50aWZpZXIsIFN0cmluZyBwYXRoLCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
PiBvcmlnaW5zKQogICAgIFN1cHBvcnRzS2V5U3lzdGVtKGVudW06dWludDhfdCBXZWJDb3JlOjpN
ZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRp
ZmllciwgU3RyaW5nIGtleVN5c3RlbSwgU3RyaW5nIG1pbWVUeXBlKSAtPiAoYm9vbCBzdXBwb3J0
cykgU3luY2hyb25vdXMKIAotICAgIFByZXBhcmVGb3JQbGF5YmFjayhXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIGJvb2wgcHJpdmF0ZU1vZGUsIGVudW06dWlu
dDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkIHByZWxvYWQsIGJvb2wgcHJl
c2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZykKKyAgICBQcmVwYXJlRm9yUGxh
eWJhY2soV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBib29s
IHByaXZhdGVNb2RlLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJl
bG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJp
bmcsIFdlYkNvcmU6OkxheW91dFBvaW50IGxheW91dFBvaW50LCBXZWJDb3JlOjpMYXlvdXRTaXpl
IGxheW91dFNpemUsIGZsb2F0IHZpZGVvQ29udGVudFNjYWxlKSAtPiAoV2ViQ29yZTo6TGF5ZXJI
b3N0aW5nQ29udGV4dElEIGxheWVySG9zdGluZ0NvbnRleHRJZCkgQXN5bmMKIAogICAgIExvYWQo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBVUkwgdXJsLCBP
cHRpb25hbDxXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gc2FuZGJveEV4dGVuc2lv
biwgV2ViQ29yZTo6Q29udGVudFR5cGUgY29udGVudFR5cGUsIFN0cmluZyBrZXlTeXN0ZW0pIC0+
IChzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24gcGxheWVyQ29u
ZmlndXJhdGlvbikgQXN5bmMKICAgICBDYW5jZWxMb2FkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlSWRlbnRpZmllciBpZCkKQEAgLTU2LDcgKzU2LDYgQEAgbWVzc2FnZXMgLT4gUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgTm90UmVmQ291bnRlZCB7CiAgICAgU2V0UHJlc2Vy
dmVzUGl0Y2goV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBi
b29sIHByZXNlcnZlc1BpdGNoKQogCiAgICAgUHJlcGFyZUZvclJlbmRlcmluZyhXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQpCi0gICAgU2V0U2l6ZShXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFdlYkNvcmU6OkludFNpemUg
c2l6ZSkKICAgICBTZXRWaXNpYmxlKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllciBpZCwgYm9vbCB2aXNpYmxlKQogICAgIFNldFNob3VsZE1haW50YWluQXNwZWN0UmF0
aW8oV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBib29sIG1h
aW50YWluQXNwZWN0UmF0aW8pCiAgICAgU2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBXZWJDb3JlOjpGbG9hdFJlY3Qg
cmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCBhMTQxN2EyOGE2NTBiMGQyZmUxYmM1Y2EzMmNk
YmNkMGMwYjlmNTE3Li5iNGZhM2Q3YTFiZDUxYmFiOGE5NTU5OTJmNDUzMWI2OTllMzA0YTdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiUmVtb3RlTWVk
aWFSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9MYXlvdXRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJ
bXBsZW1lbnRlZC5oPgpAQCAtMTAzLDEyICsxMDQsMTYgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXll
clByb3h5Ojpsb2FkKGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpI
YW4KICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKIH0KIAot
dm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpwcmVwYXJlRm9yUGxheWJhY2soYm9vbCBwcml2
YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZCBwcmVsb2FkLCBib29s
IHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJpbmcpCit2b2lkIFJlbW90ZU1l
ZGlhUGxheWVyUHJveHk6OnByZXBhcmVGb3JQbGF5YmFjayhib29sIHByaXZhdGVNb2RlLCBXZWJD
b3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkIHByZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0
Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZywgTGF5b3V0UmVjdCYmIGxheW91dFJlY3QsIGZs
b2F0IHZpZGVvQ29udGVudFNjYWxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKExheWVySG9zdGlu
Z0NvbnRleHRJRCBjb250ZXh0SWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fcGxh
eWVyLT5zZXRQcml2YXRlQnJvd3NpbmdNb2RlKHByaXZhdGVNb2RlKTsKICAgICBtX3BsYXllci0+
c2V0UHJlbG9hZChwcmVsb2FkKTsKICAgICBtX3BsYXllci0+c2V0UHJlc2VydmVzUGl0Y2gocHJl
c2VydmVzUGl0Y2gpOwogICAgIG1fcGxheWVyLT5wcmVwYXJlRm9yUmVuZGVyaW5nKCk7CisgICAg
bV92aWRlb0NvbnRlbnRCb3hSZWN0ID0gbGF5b3V0UmVjdDsKKyAgICBtX3ZpZGVvQ29udGVudFNj
YWxlID0gdmlkZW9Db250ZW50U2NhbGU7CisgICAgbV9sYXllckhvc3RpbmdDb250ZXh0ID0gTGF5
ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2VzcygpOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+Y29udGV4dElEKCkpOwog
fQogCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmNhbmNlbExvYWQoKQpAQCAtMTc3LDEx
ICsxODIsNiBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnByZXBhcmVGb3JSZW5kZXJp
bmcoKQogICAgIG1fcGxheWVyLT5wcmVwYXJlRm9yUmVuZGVyaW5nKCk7CiB9CiAKLXZvaWQgUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXpl
KQotewotICAgIG1fcGxheWVyLT5zZXRTaXplKHNpemUpOwotfQotCiB2b2lkIFJlbW90ZU1lZGlh
UGxheWVyUHJveHk6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogewogICAgIG1fcGxheWVyLT5z
ZXRWaXNpYmxlKHZpc2libGUpOwpAQCAtMzgyLDEyICszODIsMTMgQEAgdm9pZCBSZW1vdGVNZWRp
YVBsYXllclByb3h5OjptZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoKQogCiB2b2lkIFJlbW90ZU1l
ZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyRmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKCkKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Um9v
dExheWVyKG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Rmlyc3RWaWRl
b0ZyYW1lQXZhaWxhYmxlKG1faWQpLCAwKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjptZWRpYVBsYXllclJlbmRlcmluZ01vZGVDaGFuZ2VkKCkKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Um9vdExheWVyKG1fcGxheWVy
LT5wbGF0Zm9ybUxheWVyKCkpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1l
ZGlhUGxheWVyQWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQoKQpAQCAtNDQ4LDE0ICs0NDksMTIg
QEAgYm9vbCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllcklzRnVsbHNjcmVlblBl
cm1pdHRlZCgpIGNvbnN0CiAKIExheW91dFJlY3QgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVk
aWFQbGF5ZXJDb250ZW50Qm94UmVjdCgpIGNvbnN0CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gTGF5b3V0UmVjdCgpOworICAgIHJldHVybiBtX3ZpZGVvQ29udGVudEJveFJl
Y3Q7CiB9CiAKIGZsb2F0IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyQ29udGVu
dHNTY2FsZSgpIGNvbnN0CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMTsK
KyAgICByZXR1cm4gbV92aWRlb0NvbnRlbnRTY2FsZTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVBs
YXllclByb3h5OjptZWRpYVBsYXllclBhdXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCmluZGV4IGZjYzM2NjRj
MjQ0ZTMyOGQ2ZGNhZGZhZGMxOTg4MmUzMjYzZmVjMmUuLjdmYjlmNWUwNzI3ZTA2M2EzMTQ0YjI0
YTZhZDk5MjQzOTE5NjA0N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaApAQCAtNDMsNiArNDMsMTAgQEAKICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAorbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgTGF5ZXJIb3N0aW5nQ29udGV4dDsKK30KKwogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OwpAQCAtNTks
NyArNjMsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldENvbmZpZ3VyYXRpb24oUmVtb3RlTWVk
aWFQbGF5ZXJDb25maWd1cmF0aW9uJik7CiAKLSAgICB2b2lkIHByZXBhcmVGb3JQbGF5YmFjayhi
b29sIHByaXZhdGVNb2RlLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkLCBib29s
IHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJpbmcpOworICAgIHZvaWQgcHJl
cGFyZUZvclBsYXliYWNrKGJvb2wgcHJpdmF0ZU1vZGUsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51
bXM6OlByZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmlu
ZywgV2ViQ29yZTo6TGF5b3V0UmVjdCYmLCBmbG9hdCB2aWRlb0NvbnRlbnRTY2FsZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpMYXllckhvc3RpbmdDb250ZXh0SUQgY29udGV4dElk
KT4mJik7CisgICAgdm9pZCBwcmVwYXJlRm9yUmVuZGVyaW5nKCk7CiAKICAgICB2b2lkIGxvYWQo
Y29uc3QgVVJMJiwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYmLCBjb25zdCBX
ZWJDb3JlOjpDb250ZW50VHlwZSYsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJiYpPiYmKTsKICAgICB2b2lkIGNhbmNl
bExvYWQoKTsKQEAgLTc5LDggKzg0LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJpdmF0ZUJy
b3dzaW5nTW9kZShib29sKTsKICAgICB2b2lkIHNldFByZXNlcnZlc1BpdGNoKGJvb2wpOwogCi0g
ICAgdm9pZCBwcmVwYXJlRm9yUmVuZGVyaW5nKCk7Ci0gICAgdm9pZCBzZXRTaXplKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmKTsKICAgICB2b2lkIHNldFZpc2libGUoYm9vbCk7CiAgICAgdm9pZCBz
ZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKGJvb2wpOwogICAgIHZvaWQgc2V0VmlkZW9GdWxs
c2NyZWVuRnJhbWUoV2ViQ29yZTo6RmxvYXRSZWN0KTsKQEAgLTE5MCw2ICsxOTMsNyBAQCBwcml2
YXRlOgogICAgIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBtX3NhbmRib3hFeHRlbnNpb247CiAg
ICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbjsKICAgICBSZWZQ
dHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXI+IG1fcGxheWVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxM
YXllckhvc3RpbmdDb250ZXh0PiBtX2xheWVySG9zdGluZ0NvbnRleHQ7CiAgICAgUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkmIG1fbWFuYWdlcjsKICAgICBXZWJDb3JlOjpNZWRpYVBsYXll
ckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgbV9lbmdpbmVJZGVudGlmaWVyOwogICAgIFZl
Y3RvcjxXZWJDb3JlOjpDb250ZW50VHlwZT4gbV90eXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9y
dDsKQEAgLTE5OSw2ICsyMDMsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zZWVrYWJsZUNoYW5n
ZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2J1ZmZlcmVkQ2hhbmdlZCB7IHRydWUgfTsKICAgICBi
b29sIG1fcmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZCB7IHRydWUgfTsKKyAgICBXZWJDb3JlOjpM
YXlvdXRSZWN0IG1fdmlkZW9Db250ZW50Qm94UmVjdDsKKyAgICBmbG9hdCBtX3ZpZGVvQ29udGVu
dFNjYWxlIHsgMS4wIH07CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBM
b2dnZXImIG1fbG9nZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMv
TGF5ZXJIb3N0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJI
b3N0aW5nQ29udGV4dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OWNhZGZlNmRi
MTZmY2M5NDNhOGYxOTJlNWQwMWZmOGMwMTQ3NjhlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9z
dGluZ0NvbnRleHQuaAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTItMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgotI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX0NMQVNTIENBTGF5ZXI7Ci1PQkpDX0NMQVNT
IENBQ29udGV4dDsKLQotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBNYWNoU2VuZFJpZ2h0OwotfQot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdXNpbmcgTGF5ZXJIb3N0aW5nQ29udGV4dElEID0gdWlu
dDMyX3Q7Ci0gICAgCi1zdHJ1Y3QgTGF5ZXJIb3N0aW5nQ29udGV4dE9wdGlvbnMgewotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgYm9vbCBjYW5TaG93V2hpbGVMb2NrZWQgeyBmYWxzZSB9
OwotI2VuZGlmCi19OwotCi1jbGFzcyBMYXllckhvc3RpbmdDb250ZXh0IHsKLSAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShMYXllckhvc3RpbmdDb250ZXh0KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250
ZXh0PiBjcmVhdGVGb3JQb3J0KGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc2VydmVyUG9ydCk7
Ci0gICAgCi0jaWYgSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQotICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gY3JlYXRlRm9yRXh0ZXJuYWxI
b3N0aW5nUHJvY2Vzcyhjb25zdCBMYXllckhvc3RpbmdDb250ZXh0T3B0aW9ucyYgPSB7IH0pOwot
Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0
aW5nQ29udGV4dD4gY3JlYXRlRm9yRXh0ZXJuYWxQbHVnaW5Ib3N0aW5nUHJvY2VzcygpOwotI2Vu
ZGlmCi0gICAgCi0jZW5kaWYgLy8gSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQot
Ci0gICAgTGF5ZXJIb3N0aW5nQ29udGV4dCgpOwotICAgIH5MYXllckhvc3RpbmdDb250ZXh0KCk7
Ci0KLSAgICB2b2lkIHNldFJvb3RMYXllcihDQUxheWVyICopOwotICAgIENBTGF5ZXIgKnJvb3RM
YXllcigpIGNvbnN0OwotCi0gICAgTGF5ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJRCgpIGNv
bnN0OwotICAgIHZvaWQgaW52YWxpZGF0ZSgpOwotCi0gICAgTGF5ZXJIb3N0aW5nTW9kZSBsYXll
ckhvc3RpbmdNb2RlKCkgeyByZXR1cm4gbV9sYXllckhvc3RpbmdNb2RlOyB9Ci0KLSAgICB2b2lk
IHNldENvbG9yU3BhY2UoQ0dDb2xvclNwYWNlUmVmKTsKLSAgICBDR0NvbG9yU3BhY2VSZWYgY29s
b3JTcGFjZSgpIGNvbnN0OwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIHZvaWQgc2V0Q29sb3JN
YXRjaFVudGFnZ2VkQ29udGVudChib29sKTsKLSAgICBib29sIGNvbG9yTWF0Y2hVbnRhZ2dlZENv
bnRlbnQoKSBjb25zdDsKLSNlbmRpZgotCi0gICAgLy8gRmVuY2VzIG9ubHkgd29yayBvbiBpT1Mg
YW5kIE9TIDEwLjEwKy4KLSAgICB2b2lkIHNldEZlbmNlUG9ydChtYWNoX3BvcnRfdCk7Ci0KLSAg
ICAvLyBjcmVhdGVGZW5jZVBvcnQgZG9lcyBub3QgaW5zdGFsbCB0aGUgZmVuY2UgcG9ydCBvbiB0
aGUgTGF5ZXJIb3N0aW5nQ29udGV4dCdzCi0gICAgLy8gQ0FDb250ZXh0OyBjYWxsIHNldEZlbmNl
UG9ydCgpIHdpdGggdGhlIG5ld2x5IGNyZWF0ZWQgcG9ydCBpZiBzeW5jaHJvbml6YXRpb24KLSAg
ICAvLyB3aXRoIHRoaXMgY29udGV4dCBpcyBkZXNpcmVkLgotICAgIFdURjo6TWFjaFNlbmRSaWdo
dCBjcmVhdGVGZW5jZVBvcnQoKTsKLQotcHJpdmF0ZToKLSAgICBMYXllckhvc3RpbmdNb2RlIG1f
bGF5ZXJIb3N0aW5nTW9kZTsKLSAgICBSZXRhaW5QdHI8Q0FDb250ZXh0PiBtX2NvbnRleHQ7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDdhZWU0N2VhYjk1ZjU4YTZiNDE3ODVjMGY0ZmY3ZjAyYjA0Y2Y0NDMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE1MyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkxheWVy
SG9zdGluZ0NvbnRleHQuaCIKLQotI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEku
aD4KLSNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgotI2ltcG9ydCA8d3Rm
L01hY2hTZW5kUmlnaHQuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0ZDo6dW5pcXVlX3B0
cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JQb3J0
KGNvbnN0IE1hY2hTZW5kUmlnaHQmIHNlcnZlclBvcnQpCi17Ci0gICAgYXV0byBsYXllckhvc3Rp
bmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOwotCi0gICAgTlNE
aWN0aW9uYXJ5ICpvcHRpb25zID0gQHsKLSAgICAgICAga0NBQ29udGV4dFBvcnROdW1iZXIgOiBA
KHNlcnZlclBvcnQuc2VuZFJpZ2h0KCkpLAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAga0NB
Q29udGV4dENJRmlsdGVyQmVoYXZpb3IgOiBAImlnbm9yZSIsCi0jZW5kaWYKLSAgICB9OwotCi0g
ICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9sYXllckhvc3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5n
TW9kZTo6SW5Qcm9jZXNzOwotICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtD
QUNvbnRleHQgcmVtb3RlQ29udGV4dFdpdGhPcHRpb25zOm9wdGlvbnNdOwotCi0gICAgcmV0dXJu
IGxheWVySG9zdGluZ0NvbnRleHQ7Ci19Ci0KLSNpZiBIQVZFKE9VVF9PRl9QUk9DRVNTX0xBWUVS
X0hPU1RJTkcpCi1zdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0
aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2Vzcyhjb25zdCBMYXllckhv
c3RpbmdDb250ZXh0T3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICBhdXRvIGxheWVySG9zdGluZ0Nv
bnRleHQgPSBtYWtlVW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7Ci0gICAgbGF5ZXJIb3N0
aW5nQ29udGV4dC0+bV9sYXllckhvc3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQ
cm9jZXNzOwotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFM
WVNUKQotICAgIC8vIFVzZSBhIHZlcnkgbGFyZ2UgZGlzcGxheSBJRCB0byBlbnN1cmUgdGhhdCB0
aGUgY29udGV4dCBpcyBuZXZlciBwdXQgb24tc2NyZWVuIAotICAgIC8vIHdpdGhvdXQgYmVpbmcg
ZXhwbGljaXRseSBwYXJlbnRlZC4gU2VlIDxyZGFyOi8vcHJvYmxlbS8xNjA4OTI2Nz4gZm9yIGRl
dGFpbHMuCi0gICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9jb250ZXh0ID0gW0NBQ29udGV4dCBy
ZW1vdGVDb250ZXh0V2l0aE9wdGlvbnM6QHsKLSAgICAgICAga0NBQ29udGV4dFNlY3VyZTogQChv
cHRpb25zLmNhblNob3dXaGlsZUxvY2tlZCksCi0jaWYgSEFWRShDT1JFX0FOSU1BVElPTl9SRU5E
RVJfU0VSVkVSKQotICAgICAgICBrQ0FDb250ZXh0SWdub3Jlc0hpdFRlc3QgOiBAWUVTLAotICAg
ICAgICBrQ0FDb250ZXh0RGlzcGxheUlkIDogQDEwMDAwCi0jZW5kaWYKLSAgICB9XTsKLSNlbGlm
ICFQTEFURk9STShNQUNDQVRBTFlTVCkgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVS
X0JMT0NLSU5HKQotICAgIFtDQUNvbnRleHQgc2V0QWxsb3dzQ0dTQ29ubmVjdGlvbnM6Tk9dOwot
ICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQgcmVtb3RlQ29u
dGV4dFdpdGhPcHRpb25zOkB7Ci0gICAgICAgIGtDQUNvbnRleHRDSUZpbHRlckJlaGF2aW9yIDog
IEAiaWdub3JlIiwKLSAgICB9XTsKLSNlbHNlCi0gICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9j
b250ZXh0ID0gW0NBQ29udGV4dCBjb250ZXh0V2l0aENHU0Nvbm5lY3Rpb246Q0dTTWFpbkNvbm5l
Y3Rpb25JRCgpIG9wdGlvbnM6QHsKLSAgICAgICAga0NBQ29udGV4dENJRmlsdGVyQmVoYXZpb3Ig
OiBAImlnbm9yZSIsCi0gICAgfV07Ci0jZW5kaWYKLSAgICAKLSAgICByZXR1cm4gbGF5ZXJIb3N0
aW5nQ29udGV4dDsKLX0KLQotI2lmIFBMQVRGT1JNKE1BQykKLXN0ZDo6dW5pcXVlX3B0cjxMYXll
ckhvc3RpbmdDb250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbFBs
dWdpbkhvc3RpbmdQcm9jZXNzKCkKLXsKLSAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBt
YWtlVW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7Ci0gICAgbGF5ZXJIb3N0aW5nQ29udGV4
dC0+bV9sYXllckhvc3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQcm9jZXNzOwot
ICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQgY29udGV4dFdp
dGhDR1NDb25uZWN0aW9uOkNHU01haW5Db25uZWN0aW9uSUQoKSBvcHRpb25zOkB7IGtDQUNvbnRl
eHRDSUZpbHRlckJlaGF2aW9yIDogQCJpZ25vcmUiIH1dOwotICAgIHJldHVybiBsYXllckhvc3Rp
bmdDb250ZXh0OwotfQotI2VuZGlmCi0jZW5kaWYgLy8gSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlF
Ul9IT1NUSU5HKQotCi1MYXllckhvc3RpbmdDb250ZXh0OjpMYXllckhvc3RpbmdDb250ZXh0KCkK
LXsKLX0KLQotTGF5ZXJIb3N0aW5nQ29udGV4dDo6fkxheWVySG9zdGluZ0NvbnRleHQoKQotewot
fQotCi12b2lkIExheWVySG9zdGluZ0NvbnRleHQ6OnNldFJvb3RMYXllcihDQUxheWVyICpyb290
TGF5ZXIpCi17Ci0gICAgW21fY29udGV4dCBzZXRMYXllcjpyb290TGF5ZXJdOwotfQotCi1DQUxh
eWVyICpMYXllckhvc3RpbmdDb250ZXh0Ojpyb290TGF5ZXIoKSBjb25zdAotewotICAgIHJldHVy
biBbbV9jb250ZXh0IGxheWVyXTsKLX0KLQotTGF5ZXJIb3N0aW5nQ29udGV4dElEIExheWVySG9z
dGluZ0NvbnRleHQ6OmNvbnRleHRJRCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX2NvbnRleHQg
Y29udGV4dElkXTsKLX0KLQotdm9pZCBMYXllckhvc3RpbmdDb250ZXh0OjppbnZhbGlkYXRlKCkK
LXsKLSAgICBbbV9jb250ZXh0IGludmFsaWRhdGVdOwotfQotCi12b2lkIExheWVySG9zdGluZ0Nv
bnRleHQ6OnNldENvbG9yU3BhY2UoQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UpCi17Ci0gICAg
W21fY29udGV4dCBzZXRDb2xvclNwYWNlOmNvbG9yU3BhY2VdOwotfQotCi1DR0NvbG9yU3BhY2VS
ZWYgTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y29sb3JTcGFjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IFttX2NvbnRleHQgY29sb3JTcGFjZV07Ci19Ci0KLSNpZiBQTEFURk9STShNQUMpCi12b2lkIExh
eWVySG9zdGluZ0NvbnRleHQ6OnNldENvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQoYm9vbCBjb2xv
ck1hdGNoVW50YWdnZWRDb250ZW50KQotewotICAgIFttX2NvbnRleHQgc2V0Q29sb3JNYXRjaFVu
dGFnZ2VkQ29udGVudDpjb2xvck1hdGNoVW50YWdnZWRDb250ZW50XTsKLX0KLQotYm9vbCBMYXll
ckhvc3RpbmdDb250ZXh0Ojpjb2xvck1hdGNoVW50YWdnZWRDb250ZW50KCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gW21fY29udGV4dCBjb2xvck1hdGNoVW50YWdnZWRDb250ZW50XTsKLX0KLSNlbmRp
ZgotCi12b2lkIExheWVySG9zdGluZ0NvbnRleHQ6OnNldEZlbmNlUG9ydChtYWNoX3BvcnRfdCBm
ZW5jZVBvcnQpCi17Ci0gICAgW21fY29udGV4dCBzZXRGZW5jZVBvcnQ6ZmVuY2VQb3J0XTsKLX0K
LQotTWFjaFNlbmRSaWdodCBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGZW5jZVBvcnQoKQot
ewotICAgIHJldHVybiBNYWNoU2VuZFJpZ2h0OjphZG9wdChbbV9jb250ZXh0IGNyZWF0ZUZlbmNl
UG9ydF0pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggZWE3MTFk
MzJlMjU1ZjczYzM3NTJmNDI5ZjBlYTcyMjE1YjljOTMzYS4uYzUzMTljYTZkYWEzZGMzY2Q5ZDEy
N2U2MDZlNGJkYjM0YTAzYzUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9j
ZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Q
cm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAKICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1
ZGUgIkxheWVySG9zdGluZ0NvbnRleHQuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTGF5ZXJIb3N0aW5n
Q29udGV4dC5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCmluZGV4IGFkNGZj
ZDlkOGNjZjQyZjEyZWU0ODhlMDEzNDZjNjE5YTcwMWI4ZDIuLjM1MDlmZGUwMjEwMWM3ZTRlNTI3
MjQ3ZDVhOTJmNGNkYzQwMWRlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblBy
b2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKQEAgLTM4LDEyICszOCwxNiBAQAogI2luY2x1
ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBJUEMgewotICAgIGNsYXNzIERhdGFSZWZl
cmVuY2U7CitjbGFzcyBEYXRhUmVmZXJlbmNlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBMYXllckhvc3RpbmdDb250ZXh0OworZW51bSBjbGFzcyBMYXllckhvc3RpbmdNb2RlIDog
dWludDhfdDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIExheWVySG9zdGluZ0Nv
bnRleHQ7CiBjbGFzcyBTaGFyZWFibGVCaXRtYXA7CiBjbGFzcyBXZWJQcm9jZXNzQ29ubmVjdGlv
bjsKIHN0cnVjdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM7CkBAIC0xNTksNyArMTYzLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNlbmRDb21wbGV4VGV4dElucHV0KGNvbnN0IFN0cmluZyYgdGV4
dElucHV0KTsKICAgICB2b2lkIHNldExheWVySG9zdGluZ01vZGUodWludDMyX3QpOwogCi0gICAg
dm9pZCB1cGRhdGVMYXllckhvc3RpbmdDb250ZXh0KExheWVySG9zdGluZ01vZGUpOworICAgIHZv
aWQgdXBkYXRlTGF5ZXJIb3N0aW5nQ29udGV4dChXZWJDb3JlOjpMYXllckhvc3RpbmdNb2RlKTsK
ICNlbmRpZgogCiAgICAgdm9pZCBzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoYm9vbCk7CkBA
IC0yMTQsNyArMjE4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNDb21wbGV4VGV4dElucHV0
RW5hYmxlZDsKIAogICAgIC8vIEZvciBDQSBwbHVnLWlucywgdGhpcyBob2xkcyB0aGUgaW5mb3Jt
YXRpb24gbmVlZGVkIHRvIGV4cG9ydCB0aGUgbGF5ZXIgaGllcmFyY2h5IHRvIHRoZSBVSSBwcm9j
ZXNzLgotICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBtX2xheWVySG9z
dGluZ0NvbnRleHQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxheWVySG9zdGluZ0Nv
bnRleHQ+IG1fbGF5ZXJIb3N0aW5nQ29udGV4dDsKICNlbmRpZgogCiAgICAgLy8gVGhlIGNvbnRl
bnRzIHNjYWxlIGZhY3RvciBvZiB0aGlzIHBsdWctaW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpbkNvbnRyb2xsZXJQcm94eU1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luQ29udHJvbGxlclByb3h5TWFjLm1tCmlu
ZGV4IDU2ODBiOTA3YjZhNjYwNTJkZTAwYmRmNzRiMTMxNjNiNWQzYjU4YjMuLmFkMTAxNWEyZDQw
ZDAxYjJjMGY1MTJkNTg2NmFiMDk5NTQ0ZGRmOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luQ29udHJvbGxlclByb3h5TWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luQ29udHJvbGxlclByb3h5TWFjLm1tCkBA
IC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAotI2lt
cG9ydCAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgogI2ltcG9ydCAiUGx1Z2luQ3JlYXRpb25QYXJh
bWV0ZXJzLmgiCiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzLmgiCiAjaW1wb3J0ICJQbHVnaW5Qcm9j
ZXNzUHJveHlNZXNzYWdlcy5oIgpAQCAtMzYsNiArMzUsNyBAQAogI2ltcG9ydCAiV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24uaCIKICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgorI2ltcG9ydCA8V2ViQ29yZS9MYXllckhv
c3RpbmdDb250ZXh0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC0xMDAsNyArMTAwLDcg
QEAgdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnNlbmRDb21wbGV4VGV4dElucHV0KGNvbnN0
IFN0cmluZyYgdGV4dElucHV0KQogCiB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c2V0TGF5
ZXJIb3N0aW5nTW9kZSh1aW50MzJfdCBvcGFxdWVMYXllckhvc3RpbmdNb2RlKQogewotICAgIExh
eWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9kZSA9IHN0YXRpY19jYXN0PExheWVySG9zdGlu
Z01vZGU+KG9wYXF1ZUxheWVySG9zdGluZ01vZGUpOworICAgIFdlYkNvcmU6OkxheWVySG9zdGlu
Z01vZGUgbGF5ZXJIb3N0aW5nTW9kZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkxheWVySG9zdGlu
Z01vZGU+KG9wYXF1ZUxheWVySG9zdGluZ01vZGUpOwogCiAgICAgbV9wbHVnaW4tPnNldExheWVy
SG9zdGluZ01vZGUobGF5ZXJIb3N0aW5nTW9kZSk7CiAgICAgdXBkYXRlTGF5ZXJIb3N0aW5nQ29u
dGV4dChsYXllckhvc3RpbmdNb2RlKTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFBsdWdpbkNv
bnRyb2xsZXJQcm94eTo6c2V0TGF5ZXJIb3N0aW5nTW9kZSh1aW50MzJfdCBvcGFxdWVMYXllckhv
c3RpbmdNb2RlKQogICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6UGx1Z2luUHJveHk6OlNldExheWVySG9zdGluZ0NvbnRleHRJRChtX2xheWVySG9zdGlu
Z0NvbnRleHQtPmNvbnRleHRJRCgpKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KIAotdm9pZCBQ
bHVnaW5Db250cm9sbGVyUHJveHk6OnVwZGF0ZUxheWVySG9zdGluZ0NvbnRleHQoTGF5ZXJIb3N0
aW5nTW9kZSBsYXllckhvc3RpbmdNb2RlKQordm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnVw
ZGF0ZUxheWVySG9zdGluZ0NvbnRleHQoV2ViQ29yZTo6TGF5ZXJIb3N0aW5nTW9kZSBsYXllckhv
c3RpbmdNb2RlKQogewogICAgIENBTGF5ZXIgKnBsYXRmb3JtTGF5ZXIgPSBtX3BsdWdpbi0+cGx1
Z2luTGF5ZXIoKTsKICAgICBpZiAoIXBsYXRmb3JtTGF5ZXIpCkBAIC0xMjMsMTMgKzEyMywxMyBA
QCB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6dXBkYXRlTGF5ZXJIb3N0aW5nQ29udGV4dChM
YXllckhvc3RpbmdNb2RlIGxheWVySG9zdAogICAgIH0KIAogICAgIHN3aXRjaCAobGF5ZXJIb3N0
aW5nTW9kZSkgewotICAgICAgICBjYXNlIExheWVySG9zdGluZ01vZGU6OkluUHJvY2VzczoKLSAg
ICAgICAgICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dCA9IExheWVySG9zdGluZ0NvbnRleHQ6OmNy
ZWF0ZUZvclBvcnQoUGx1Z2luUHJvY2Vzczo6c2luZ2xldG9uKCkuY29tcG9zaXRpbmdSZW5kZXJT
ZXJ2ZXJQb3J0KCkpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpMYXll
ckhvc3RpbmdNb2RlOjpJblByb2Nlc3M6CisgICAgICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dCA9
IFdlYkNvcmU6OkxheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvclBvcnQoUGx1Z2luUHJvY2Vz
czo6c2luZ2xldG9uKCkuY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0KCkpOworICAgICAgICBi
cmVhazsKICNpZiBIQVZFKE9VVF9PRl9QUk9DRVNTX0xBWUVSX0hPU1RJTkcpCi0gICAgICAgIGNh
c2UgTGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQcm9jZXNzOgotICAgICAgICAgICAgbV9sYXllckhv
c3RpbmdDb250ZXh0ID0gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJuYWxQbHVn
aW5Ib3N0aW5nUHJvY2VzcygpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3Jl
OjpMYXllckhvc3RpbmdNb2RlOjpPdXRPZlByb2Nlc3M6CisgICAgICAgIG1fbGF5ZXJIb3N0aW5n
Q29udGV4dCA9IFdlYkNvcmU6OkxheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFs
UGx1Z2luSG9zdGluZ1Byb2Nlc3MoKTsKKyAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGNlZmYzYzI2MDVh
MWY4NWQ1ZDk5MGE2NGMzZjI4MjAzZDExNTIzMjAuLmMwYjI3MDcxNDNkZDljNWUyM2FmNTE2Mzcy
YjA1MDgxMzNkZTg2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQpAQCAtMjA3LDYgKzIwNyw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2Rl
Y2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXInLAogICAgICAg
ICAnV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpMYXllckhvc3RpbmdDb250ZXh0SUQnLAogICAg
ICAgICAnV2ViQ29yZTo6TGliV2ViUlRDU29ja2V0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQb2ludGVySUQnLApAQCAt
MjE4LDcgKzIxOSw2IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVk
KCk6CiAgICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyJywKICAg
ICAgICAgJ1dlYktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlEJywKLSAgICAgICAgJ1dlYktpdDo6
TGF5ZXJIb3N0aW5nQ29udGV4dElEJywKICAgICAgICAgJ1dlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6Ok1lZGlhUmVjb3JkZXJJZGVu
dGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIn
LApAQCAtNTYwLDcgKzU2MCwxMCBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAg
ICAgJ1dlYkNvcmU6OklucHV0TW9kZSc6IFsnPFdlYkNvcmUvSW5wdXRNb2RlLmg+J10sCiAgICAg
ICAgICdXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdCc6IFsnPFdlYkNvcmUvR3JhcGhpY3NMYXll
ci5oPiddLAogICAgICAgICAnV2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kJzogWyc8V2ViQ29yZS9L
ZXlib2FyZEV2ZW50Lmg+J10sCisgICAgICAgICdXZWJDb3JlOjpMYXllckhvc3RpbmdDb250ZXh0
SUQnOiBbJzxXZWJDb3JlL0xheWVySG9zdGluZ0NvbnRleHQuaD4nXSwKKyAgICAgICAgJ1dlYkNv
cmU6OkxheWVySG9zdGluZ01vZGUnOiBbJzxXZWJDb3JlL0xheWVySG9zdGluZ0NvbnRleHQuaD4n
XSwKICAgICAgICAgJ1dlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3QnOiBbJzxXZWJDb3JlL0Zy
YW1lTG9hZGVyVHlwZXMuaD4nXSwKKyAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9y
dFBhcmFtZXRlcnMnOiBbJzxXZWJDb3JlL01lZGlhUGxheWVyLmg+J10sCiAgICAgICAgICdXZWJD
b3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHknOiBbJzxXZWJDb3Jl
L01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpOZXR3
b3JrVHJhbnNhY3Rpb25JbmZvcm1hdGlvbic6IFsnPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1h
dGlvbi5oPiddLAogICAgICAgICAnV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGEnOiBbJzxX
ZWJDb3JlL1Bhc3RlYm9hcmQuaD4nXSwKQEAgLTYwMSwxNSArNjA0LDEyIEBAIGRlZiBoZWFkZXJz
X2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6U2VsZWN0aW9uUmVjdCc6IFsnIkVk
aXRvclN0YXRlLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkFjdGl2aXR5U3RhdGVDaGFuZ2VJRCc6
IFsnIkRyYXdpbmdBcmVhSW5mby5oIiddLAogICAgICAgICAnV2ViS2l0OjpCYWNrRm9yd2FyZExp
c3RJdGVtU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKLSAgICAgICAgJ1dlYktpdDo6TGF5
ZXJIb3N0aW5nQ29udGV4dElEJzogWyciTGF5ZXJIb3N0aW5nQ29udGV4dC5oIiddLAotICAgICAg
ICAnV2ViS2l0OjpMYXllckhvc3RpbmdNb2RlJzogWyciTGF5ZXJUcmVlQ29udGV4dC5oIiddLAog
ICAgICAgICAnV2ViS2l0OjpQYWdlU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKICAgICAg
ICAgJ1dlYktpdDo6V2ViR2VzdHVyZUV2ZW50JzogWyciV2ViRXZlbnQuaCInXSwKICAgICAgICAg
J1dlYktpdDo6V2ViS2V5Ym9hcmRFdmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCiAgICAgICAgICdX
ZWJLaXQ6OldlYk1vdXNlRXZlbnQnOiBbJyJXZWJFdmVudC5oIiddLAogICAgICAgICAnV2ViS2l0
OjpXZWJUb3VjaEV2ZW50JzogWyciV2ViRXZlbnQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6V2Vi
V2hlZWxFdmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCi0gICAgICAgICdXZWJDb3JlOjpNZWRpYUVu
Z2luZVN1cHBvcnRQYXJhbWV0ZXJzJzogWyc8V2ViQ29yZS9NZWRpYVBsYXllci5oPiddLAogICAg
ICAgICAnc3RydWN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JzogWyc8V2ViQ29yZS9FbGVtZW50
Q29udGV4dC5oPiddLAogICAgICAgICAnc3RydWN0IFdlYktpdDo6V2ViVXNlclNjcmlwdERhdGEn
OiBbJyJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCInXSwKICAgICAgICAgJ3N0
cnVjdCBXZWJLaXQ6OldlYlVzZXJTdHlsZVNoZWV0RGF0YSc6IFsnIldlYlVzZXJDb250ZW50Q29u
dHJvbGxlckRhdGFUeXBlcy5oIiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
TGF5ZXJUcmVlQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTGF5ZXJUcmVlQ29udGV4
dC5oCmluZGV4IGJlMTQ0NGY1MmQ4NjUyMDI2NmU1ZmJjY2NkNDAxZjJiNGYzOGUxYWIuLjFmNjk5
NTg4Mzg5MmIzNTc1MDlmYTRlYzRkMWY2Njg3Y2UwNjk2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0xheWVyVHJlZUNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9MYXllclRyZWVDb250ZXh0LmgKQEAgLTM1LDEzICszNSw2IEBAIGNsYXNzIEVuY29kZXI7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1lbnVtIGNsYXNzIExheWVySG9zdGluZ01vZGUgOiB1aW50
OF90IHsKLSAgICBJblByb2Nlc3MsCi0jaWYgSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NU
SU5HKQotICAgIE91dE9mUHJvY2VzcwotI2VuZGlmCi19OwotCiBjbGFzcyBMYXllclRyZWVDb250
ZXh0IHsKIHB1YmxpYzoKICAgICBMYXllclRyZWVDb250ZXh0KCk7CkBAIC02MywxNSArNTYsMyBA
QCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGEsIGNvbnN0
IExheWVyVHJlZUNvbnRleHQmIGIpCiB9CiAKIH0KLQotbmFtZXNwYWNlIFdURiB7Ci10ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6TGF5ZXJIb3N0aW5nTW9kZT4gewotICAgIHVz
aW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgICAgIFdlYktpdDo6TGF5ZXJIb3N0aW5nTW9k
ZSwKLSNpZiBIQVZFKE9VVF9PRl9QUk9DRVNTX0xBWUVSX0hPU1RJTkcpCi0gICAgICAgIFdlYktp
dDo6TGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQcm9jZXNzLAotI2VuZGlmCi0gICAgICAgIFdlYktp
dDo6TGF5ZXJIb3N0aW5nTW9kZTo6SW5Qcm9jZXNzCi0gICAgPjsKLX07Ci19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggNzQxMzc1
ZTJiYjVlNjhjOWE1ZmU4NjU1ZjE4NTUxZDY3N2Y2MjlmYS4uODIxMWI2ODgzMWVhMTcwZGE0NjJh
MTM5N2M1YmFlNzBkZDFmYTRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMjYsNyArMjYsNiBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJEcmF3aW5nQXJlYUluZm8uaCIKLSNpbmNsdWRlICJMYXllclRyZWVDb250ZXh0
LmgiCiAjaW5jbHVkZSAiU2Vzc2lvblN0YXRlLmgiCiAjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250
ZW50UnVsZUxpc3REYXRhLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCkBA
IC0zOCw2ICszNyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRmxvYXRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9MYXllckhvc3RpbmdDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MYXlv
dXRNaWxlc3RvbmUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUHJvZHVjZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CkBAIC0xMjksNyArMTI5LDcgQEAgc3RydWN0
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAgYm9vbCBiYWNrZ3JvdW5kRXh0ZW5k
c0JleW9uZFBhZ2U7CiAKLSAgICBMYXllckhvc3RpbmdNb2RlIGxheWVySG9zdGluZ01vZGU7Cisg
ICAgV2ViQ29yZTo6TGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdNb2RlOwogCiAgICAgYm9v
bCBoYXNSZXNvdXJjZUxvYWRDbGllbnQgeyBmYWxzZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
aW5kZXggMDg3NmFkZDEzNTQzZWU4ZmNlZWJhNjM1YmE5OTkzNmVkN2M4NmM1Ni4uNTc5NTQ0OWJl
YzJkMWJiMjVlNTNjY2U5MThlZWRmMjFjMTFlOWQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApA
QCAtODQsNyArODQsNiBAQCBQbGF0Zm9ybS9pb3MvUGF5bWVudEF1dGhvcml6YXRpb25Db250cm9s
bGVyLm1tCiBQbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCiBQbGF0Zm9ybS9J
UEMvY29jb2EvTWFjaE1lc3NhZ2UuY3BwCiAKLVBsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250
ZXh0Lm1tCiBQbGF0Zm9ybS9tYWMvTWFjaFV0aWxpdGllcy5jcHAKIFBsYXRmb3JtL21hYy9NZW51
VXRpbGl0aWVzLm1tCiBQbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggOWNiNzgwZjQwN2ZkNmQyZmZkYjE5MmI0NWRjOWYz
MGYzMzE2Yzk3ZC4uMzk4ZWI2YjE3N2I4ZTBiYjViNjVjZWZjZGE3Y2JhYjhiNTRkYjlkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvRWRpdG9yQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb2N1c0RpcmVj
dGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5wdXRNb2RlLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9MYXllckhvc3RpbmdDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WYWxpZGF0aW9uQnViYmxlLmg+
CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CkBAIC0xNjMsMTAgKzE2NCw2IEBA
IGNsYXNzIEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Q7CiBzdHJ1
Y3QgQ29sb3JTcGFjZURhdGE7CiAjZW5kaWYKIAotI2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdB
VElPTl9WSUVXKQotdXNpbmcgTGF5ZXJIb3N0aW5nQ29udGV4dElEID0gdWludDMyX3Q7Ci0jZW5k
aWYKLQogY2xhc3MgUGFnZUNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQYWdlQ2xpZW50
PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0yMDYsNyArMjAz
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1Zpc3VhbGx5SWRsZSgpIHsgcmV0dXJu
ICFpc1ZpZXdWaXNpYmxlKCk7IH0KIAogICAgIC8vIFJldHVybiB0aGUgbGF5ZXIgaG9zdGluZyBt
b2RlIGZvciB0aGUgdmlldy4KLSAgICB2aXJ0dWFsIExheWVySG9zdGluZ01vZGUgdmlld0xheWVy
SG9zdGluZ01vZGUoKSB7IHJldHVybiBMYXllckhvc3RpbmdNb2RlOjpJblByb2Nlc3M7IH0KKyAg
ICB2aXJ0dWFsIFdlYkNvcmU6OkxheWVySG9zdGluZ01vZGUgdmlld0xheWVySG9zdGluZ01vZGUo
KSB7IHJldHVybiBXZWJDb3JlOjpMYXllckhvc3RpbmdNb2RlOjpJblByb2Nlc3M7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkRXhpdCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHJv
Y2Vzc1dpbGxTd2FwKCkgeyBwcm9jZXNzRGlkRXhpdCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA2YjU0ZDYzNDA5MjU1MDVlODZkZTliZTQzNGQ4MDc5
MmQzN2ZiNjExLi42MzkzNWY2YTVmZjM3YTNlMDk5MDI0ZGE5NDdiYmU0YzBhZjA4NWQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTE1Miw2ICsxNTIsNyBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ds
b2JhbEZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR2xvYmFsV2luZG93SWRl
bnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTGF5ZXJIb3N0aW5nQ29udGV4dC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTGVuZ3RoQm94Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJl
Z2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVN0cmVhbVJlcXVlc3QuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMTIwMzM2OWFhODg3NzViZTg5YzIx
NTU3M2EzNDA5ZjQyZjM5MWEzZC4uODBmMWVmOTNjZTI2YTkwZGY5OGRmNzU5MjllMmQ0NWMyNjFh
M2VhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTgxLDYgKzgx
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPiAvLyBGSVhNRTogTW92ZSBMYXlv
dXRWaWV3cG9ydENvbnN0cmFpbnQgdG8gaXRzIG93biBmaWxlIGFuZCBzdG9wIGluY2x1ZGluZyB0
aGlzLgogI2luY2x1ZGUgPFdlYkNvcmUvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9JbnB1dE1vZGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0xheWVySG9zdGluZ0Nv
bnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dFBvaW50Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9MYXlvdXRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dC5oPgpAQCAtMjM3OCw3ICsyMzc5LDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxm
bG9hdD4gbV9jdXN0b21EZXZpY2VTY2FsZUZhY3RvcjsKICAgICBmbG9hdCBtX3RvcENvbnRlbnRJ
bnNldCB7IDAgfTsKIAotICAgIExheWVySG9zdGluZ01vZGUgbV9sYXllckhvc3RpbmdNb2RlIHsg
TGF5ZXJIb3N0aW5nTW9kZTo6SW5Qcm9jZXNzIH07CisgICAgV2ViQ29yZTo6TGF5ZXJIb3N0aW5n
TW9kZSBtX2xheWVySG9zdGluZ01vZGUgeyBXZWJDb3JlOjpMYXllckhvc3RpbmdNb2RlOjpJblBy
b2Nlc3MgfTsKIAogICAgIFdlYkNvcmU6OkNvbG9yIG1fdW5kZXJsYXlDb2xvcjsKICAgICBXZWJD
b3JlOjpDb2xvciBtX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCAzYTc0NjAxMWVh
OGRhOGVlOGNjYWY3Yjc3Zjk1NGIwMDc3ODNjMzQyLi40ZmJhZTVmYmVmMWYzNTIzZjQ2MWFmNzYz
ZGYwYTNjOTdhNDFkOGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC01NzYsNyArNTc2LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICNlbmRpZgogCiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcp
Ci0gICAgRGlkQ3JlYXRlQ29udGV4dEZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihXZWJLaXQ6Okxh
eWVySG9zdGluZ0NvbnRleHRJRCBjb250ZXh0SUQpOworICAgIERpZENyZWF0ZUNvbnRleHRGb3JW
aXNpYmlsaXR5UHJvcGFnYXRpb24oV2ViQ29yZTo6TGF5ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRl
eHRJRCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCmluZGV4IDgwMTZiNTZjMTYwYWNj
N2I0MjY5NjAwZjA3ZjczN2IzNzkzNzY3YmIuLjM3ZGExZDU4YzRhOTRmMDRhMmRkNDM1M2M4Y2U3
MDFkZmMyMGEwZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5oCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1ZpZXdW
aXNpYmxlT3JPY2NsdWRlZCgpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNWaWV3SW5XaW5kb3coKSBv
dmVycmlkZTsKICAgICBib29sIGlzVmlzdWFsbHlJZGxlKCkgb3ZlcnJpZGU7Ci0gICAgTGF5ZXJI
b3N0aW5nTW9kZSB2aWV3TGF5ZXJIb3N0aW5nTW9kZSgpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6
OkxheWVySG9zdGluZ01vZGUgdmlld0xheWVySG9zdGluZ01vZGUoKSBvdmVycmlkZTsKICAgICBD
b2xvclNwYWNlRGF0YSBjb2xvclNwYWNlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRSZW1vdGVM
YXllclRyZWVSb290Tm9kZShSZW1vdGVMYXllclRyZWVOb2RlKikgb3ZlcnJpZGU7CiAgICAgQ0FM
YXllciAqYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0IG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
YWZiZGMyNTc1ZTQ0ODE4NWU0YmNiYzg0MmU0ZjdhNTQ0MzEzYjQzOS4uZDFiZWE2MTJhYjE5NjVk
ODY4YTE1ZWUzMDAzYzM3ZDAwMDUzZTQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NzM4LDggKzQ3MzgsOCBAQAogCQlCQ0REQjMy
QzEyNEVDMkUxMDA0OEQxM0MgLyogV0tBUElDYXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLQVBJQ2FzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0RF
MDU5OTExQ0RBOEFFMDBFNDFBRjEgLyogV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbnRleHRJbmplY3RlZEJ1bmRs
ZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0RFMDU5QTExQ0RBOEFF
MDBFNDFBRjEgLyogV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDRTA5Mzc1MTRGQjEyOEIwMDEx
MzhEOSAvKiBMYXllckhvc3RpbmdDb250ZXh0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gTGF5ZXJIb3N0aW5nQ29udGV4dC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQkNFMDkzNzYxNEZCMTI4QjAwMTEzOEQ5IC8qIExheWVySG9zdGluZ0NvbnRl
eHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5ZXJIb3N0aW5nQ29udGV4
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0UwOTM3NTE0RkIxMjhCMDAxMTM4
RDkgLyogTGF5ZXJIb3N0aW5nQ29udGV4dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IExheWVySG9zdGluZ0NvbnRleHQubW07IHBhdGggPSBMYXllckhvc3RpbmdD
b250ZXh0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0UwOTM3NjE0RkIxMjhC
MDAxMTM4RDkgLyogTGF5ZXJIb3N0aW5nQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBMYXllckhvc3RpbmdDb250ZXh0Lmg7IHBhdGggPSBMYXllckhvc3RpbmdDb250
ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRTBFNDI0MTY4QjdBMjgwMDU3
RTY2QSAvKiBXZWJQcm9jZXNzU3VwcGxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJQcm9jZXNzU3VwcGxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQ0UxN0I3QjEzODFGMTE3MDAxMkE2NDEgLyogV0tQYWdlUHJpdmF0ZU1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLUGFnZVByaXZhdGVNYWMubW07
IHBhdGggPSBtYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkNFMTdCN0MxMzgxRjExNzAwMTJBNjQxIC8qIFdLUGFnZVByaXZhdGVNYWMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tQYWdlUHJpdmF0ZU1hYy5oOyBwYXRoID0g
bWFjL1dLUGFnZVByaXZhdGVNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCBjYzk4NTczMTQzMTM5YzBhNTM1Mzk5Y2RiYWJj
MmZhMjdmYTQ5OTY0Li5kZTRkMjI4MjUyMDhmOTJkYzJhMGM4YWZjM2JmNjg2ZmJlMTQ5ZGFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9y
bUNBTGF5ZXJDb2NvYS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1MYXllci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1UaW1lUmFuZ2VzLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KQEAgLTQzLDExICs0NCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIGV4dGVybiBXVEZMb2dD
aGFubmVsIExvZ01lZGlhOwotfQogI2VuZGlmCit9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC04Niw3ICs4NywxNiBAQCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6On5NZWRpYVBsYXllclByaXZhdGVSZW1vdGUoKQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6cHJlcGFyZUZvclBsYXliYWNrKGJvb2wgcHJpdmF0ZU1vZGUsIE1lZGlh
UGxheWVyOjpQcmVsb2FkIHByZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFy
ZSkKIHsKLSAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlByZXBhcmVGb3JQ
bGF5YmFjayhtX2lkLCBwcml2YXRlTW9kZSwgcHJlbG9hZCwgcHJlc2VydmVzUGl0Y2gsIHByZXBh
cmUpLCAwKTsKKyAgICBhdXRvIGxheW91dFJlY3QgPSBtX3BsYXllci0+cGxheWVyQ29udGVudEJv
eFJlY3QoKTsKKyAgICBhdXRvIHNjYWxlID0gbV9wbGF5ZXItPnBsYXllckNvbnRlbnRzU2NhbGUo
KTsKKworICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
OjpQcmVwYXJlRm9yUGxheWJhY2sobV9pZCwgcHJpdmF0ZU1vZGUsIHByZWxvYWQsIHByZXNlcnZl
c1BpdGNoLCBwcmVwYXJlLCBsYXlvdXRSZWN0LmxvY2F0aW9uKCksIGxheW91dFJlY3Quc2l6ZSgp
LCBzY2FsZSksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpc10oYXV0byBjb250
ZXh0SWQpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dElkID0gY29udGV4dElkOworICAg
ICAgICBtX3ZpZGVvTGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y3JlYXRlUGxhdGZvcm1M
YXllckZvckhvc3RpbmdDb250ZXh0KGNvbnRleHRJZCk7CisgICAgfSk7CiB9CiAKIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0pCkBAIC0yODksNiArMjk5LDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpzaXplQ2hhbmdlZChXZWJDb3JlOjpGbG9hdFNpemUgbmF0dXJhbFNpemUpCiAgICAg
bV9wbGF5ZXItPnNpemVDaGFuZ2VkKCk7CiB9CiAKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpmaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoKQoreworICAgIG1fcGxheWVyLT5maXJzdFZp
ZGVvRnJhbWVBdmFpbGFibGUoKTsKK30KKwogU3RyaW5nIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6ZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdAogewogICAgIHJldHVybiBtX2NvbmZpZ3VyYXRp
b24uZW5naW5lRGVzY3JpcHRpb247CkBAIC0zNDQsMTEgKzM1OSw2IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpwcmVwYXJlRm9yUmVuZGVyaW5nKCkKICAgICBtX21hbmFnZXIuZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlByZXBhcmVGb3JSZW5kZXJpbmcobV9pZCksIDApOwogfQog
Ci12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2l6ZShjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBzaXplKQotewotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6
U2V0U2l6ZShtX2lkLCBzaXplKSwgMCk7Ci19Ci0KIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsKICAgICBtX21hbmFnZXIuZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHk6OlNldFZpc2libGUobV9pZCwgdmlzaWJsZSksIDApOwpAQCAtNDE2LDgg
KzQyNiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2FkKE1lZGlhU3RyZWFt
UHJpdmF0ZSYpCiAKIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGxh
dGZvcm1MYXllcigpIGNvbnN0CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gbV92aWRlb0xheWVyLmdldCgpOwogfQogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRB
VElPTl9NT0RFKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDQxOTc1Y2Y1OTQ4OTUw
OTRiMDY2NDQ0YTNhNGUxMmNkNGFkMmZhZmQuLmY4ZGExZjUxMTU3MWQ2ZDQ2ZmExMGUxODk5MTQ2
MmM3OGJlZmUxNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApAQCAtNzIsNiArNzIsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVDYWNoZWRTdGF0ZShSZW1vdGVNZWRpYVBsYXllclN0
YXRlJiYpOwogICAgIHZvaWQgY2hhcmFjdGVyaXN0aWNDaGFuZ2VkKGJvb2wgaGFzQXVkaW8sIGJv
b2wgaGFzVmlkZW8sIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1vdmllTG9hZFR5cGUpOwog
ICAgIHZvaWQgc2l6ZUNoYW5nZWQoV2ViQ29yZTo6RmxvYXRTaXplKTsKKyAgICB2b2lkIGZpcnN0
VmlkZW9GcmFtZUF2YWlsYWJsZSgpOwogCiAgICAgdm9pZCByZXF1ZXN0UmVzb3VyY2UoUmVtb3Rl
TWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRpb25zKTsKICAgICB2b2lk
IHJlbW92ZVJlc291cmNlKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyKTsKQEAgLTEwOSw3
ICsxMTAsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzaG91bGRJZ25vcmVJbnRyaW5zaWNTaXpl
KCkgZmluYWw7CiAKLSAgICAvLyBVbmltcGxlbWVudGVkCiAgICAgUGxhdGZvcm1MYXllciogcGxh
dGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwg
KFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKQEAgLTE4
Miw4ICsxODIsNiBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVz
KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBmaW5h
bDsKIAotICAgIHZvaWQgc2V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgZmluYWw7Ci0K
ICAgICB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYpIGZpbmFsOwogCiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4
dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBm
aW5hbDsKQEAgLTMwMiw2ICszMDAsOCBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6TWVkaWFQ
bGF5ZXIqIG1fcGxheWVyIHsgbnVsbHB0ciB9OwogICAgIFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2VMb2FkZXI+IG1fbWVkaWFSZXNvdXJjZUxvYWRlcjsKKyAgICB1aW50MzJf
dCBtX2xheWVySG9zdGluZ0NvbnRleHRJZCAgeyAwIH07CisgICAgUmV0YWluUHRyPFBsYXRmb3Jt
TGF5ZXI+IG1fdmlkZW9MYXllcjsKICAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXImIG1fbWFu
YWdlcjsKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZp
ZXIgbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyOwogICAgIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXIgbV9pZDsKQEAgLTMxMiw2ICszMTIsNyBAQCBwcml2YXRlOgogCiAgICAgSGFz
aE1hcDxSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciwgUmVmUHRyPFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFSZXNvdXJjZT4+IG1fbWVkaWFSZXNvdXJjZXM7CiAKKyAgICBXZWJDb3JlOjpJbnRT
aXplIG1fdmlkZW9TaXplOwogICAgIGRvdWJsZSBtX3ZvbHVtZSB7IDEgfTsKICAgICBkb3VibGUg
bV9yYXRlIHsgMSB9OwogICAgIGxvbmcgbV9wbGF0Zm9ybUVycm9yQ29kZSB7IDAgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcAppbmRleCA2ZWNiYmVhYmJjYmMzYTg1MzExMjA4NGUzZjMz
NjdmN2M2YzU4NDE5Li5kNmZiOTRkZjVhYWZlNjc5YTk5ZTNmYThkNjk5ZWMwYjJjOGQ3ZTJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCkBAIC0zMDMsNiArMzAzLDEyIEBAIHZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpzaXplQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZUlkZW50CiAgICAgICAgIHBsYXllci0+c2l6ZUNoYW5nZWQobmF0dXJhbFNp
emUpOwogfQogCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Zmlyc3RWaWRlb0ZyYW1l
QXZhaWxhYmxlKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCkK
K3sKKyAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX3BsYXllcnMuZ2V0KGlkKSkKKyAgICAgICAgcGxh
eWVyLT5maXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoKTsKK30KKwogdm9pZCBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXI6OnJlcXVlc3RSZXNvdXJjZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyIGlkLCBSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciByZW1vdGVNZWRpYVJlc291
cmNlSWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUGxhdGZvcm1NZWRpYVJl
c291cmNlTG9hZGVyOjpMb2FkT3B0aW9ucyBvcHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGNvbnN0IGF1dG8mIHBsYXllciA9
IG1fcGxheWVycy5nZXQoaWQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgKaW5kZXggNDY4OWUw
MjhiNjdkNDlmM2YyNzc5OWVhOGVhY2Q3MjJkZmViMGI4OS4uNTg0ZDQ3NWRmZWFkZTBjZGY2Nzk4
ZjM2NDhlN2IxYzlmYThjYjAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oCkBAIC04Nyw2
ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVDYWNoZWRTdGF0ZShXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyU3RhdGUm
Jik7CiAgICAgdm9pZCBjaGFyYWN0ZXJpc3RpY0NoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGVJZGVudGlmaWVyLCBib29sIGhhc0F1ZGlvLCBib29sIGhhc1ZpZGVvLCBXZWJD
b3JlOjpNZWRpYVBsYXllckVudW1zOjpNb3ZpZUxvYWRUeXBlKTsKICAgICB2b2lkIHNpemVDaGFu
Z2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgV2ViQ29yZTo6
RmxvYXRTaXplKTsKKyAgICB2b2lkIGZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZShXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCByZXF1ZXN0UmVz
b3VyY2UoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgUmVtb3RlTWVkaWFSZXNv
dXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgcmVtb3ZlUmVzb3VyY2UoTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlSWRlbnRpZmllciwgUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCA1NGEwMWY4YjM1MjJhMWEy
NTY2MWVlZWVlNTI3OTJjZDM0M2QwMTNlLi41MTdiNzRkMDRjODIxM2YzNzg1OTgwMmY0ZDljNjBh
MzdjN2QzZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5p
bgpAQCAtMjYsNiArMjYsNyBAQAogbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
IE5vdFJlZkNvdW50ZWQgewogICAgIE5ldHdvcmtTdGF0ZUNoYW5nZWQoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllclN0YXRlIHN0YXRlKQogICAgIFJlYWR5U3RhdGVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgc3RydWN0IFdlYktpdDo6UmVtb3RlTWVk
aWFQbGF5ZXJTdGF0ZSBzdGF0ZSkKKyAgICBGaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkKQogICAgIFZvbHVtZUNoYW5n
ZWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBkb3VibGUg
dm9sdW1lKQogICAgIE11dGVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciBpZCwgYm9vbCBtdXRlKQogICAgIFRpbWVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgc3RydWN0IFdlYktpdDo6UmVtb3RlTWVk
aWFQbGF5ZXJTdGF0ZSBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCA5NzdiOGVk
NjJkOGMwZGNkODgzY2IzZjBjMDU4OTc3ODk5ZGZiYzczLi41ZmQxOWQ3NDM2Njg5ZWRlOGZiYzVj
ODZmMWY4ODM1NjNhZjg5MmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC00Nyw3ICs0
Nyw3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIkxheWVySG9z
dGluZ0NvbnRleHQuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTGF5ZXJIb3N0aW5nQ29udGV4dC5oPgog
I2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKaW5kZXggN2M0
NmQ2NzZlZGQwNDJjM2U4ODhkOGRiZjI5MTZmZWJhZTY5YjRhMC4uNjVmMDU5ODg2YjBiNWMyMTBk
ZTQyMjRmYzI5NGM5OTNjMzA2NzcyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpAQCAtNDQsNiAr
NDUsNyBAQCBjbGFzcyBNYWNoU2VuZFJpZ2h0OwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
RWxlbWVudDsKIGNsYXNzIEhUVFBIZWFkZXJNYXA7CitlbnVtIGNsYXNzIExheWVySG9zdGluZ01v
ZGUgOiB1aW50OF90OwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgU2hhcmVkQnVmZmVy
OwogfQpAQCAtMjM2LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAKICAgICB1aW50NjRfdCBwbHVnaW5D
b21wbGV4VGV4dElucHV0SWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2Vu
ZENvbXBsZXhUZXh0SW5wdXQoY29uc3QgU3RyaW5nJiB0ZXh0SW5wdXQpIG92ZXJyaWRlOwotICAg
IHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdNb2RlKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHNldExheWVySG9zdGluZ01vZGUoV2ViQ29yZTo6TGF5ZXJIb3N0aW5nTW9kZSkgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIHBsdWdpbkZvY3VzT3JXaW5kb3dGb2N1c0NoYW5nZWQoKTsKICAg
ICB2b2lkIHNldENvbXBsZXhUZXh0SW5wdXRFbmFibGVkKGJvb2wpOwpAQCAtMzQ3LDcgKzM0OSw3
IEBAIHByaXZhdGU6CiAKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV9wbHVnaW5MYXll
cjsKICAgICBib29sIG1fcGx1Z2luUmV0dXJuc05vbnJldGFpbmVkTGF5ZXI7Ci0gICAgTGF5ZXJI
b3N0aW5nTW9kZSBtX2xheWVySG9zdGluZ01vZGU7CisgICAgV2ViQ29yZTo6TGF5ZXJIb3N0aW5n
TW9kZSBtX2xheWVySG9zdGluZ01vZGU7CiAKICAgICBOUENvY29hRXZlbnQqIG1fY3VycmVudE1v
dXNlRXZlbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbQppbmRleCA0MjJk
NWVmNjY1MTlhMDRkMTQ0ZjUwNGMyMDQzZmEwYjU1YWVhOWFlLi41MTRlZmFmZjkyMzU1MDNkMGI0
NWM4NzNjOWY5YmMzMWMyNTcxNWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5NYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTWFj
Lm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJXZWJFdmVudC5oIgogI2ltcG9ydCA8Q2Fy
Ym9uL0NhcmJvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvTGF5ZXJIb3N0aW5nQ29udGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJ
bXBsZW1lbnRlZC5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDxwYWwvc3Bp
L21hYy9ISVRvb2xib3hTUEkuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4uaAppbmRleCBlM2RlMDVhYWJiZTIxYzQwZTFiZTg4ZDllOWM2ODVh
MDY0YmIwMzM3Li5mZDcwMmRkNzk5MjQ5MDgzZmQxYzdkNjNmYzcyMGM0ZWZiYTNkZDRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBA
IC0xNjEsNyArMTYxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbmRvd1Zpc2liaWxpdHlDaGFu
Z2VkKGJvb2wpIGZpbmFsIHsgfQogICAgIHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJ
ZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogICAgIHZvaWQgc2VuZENvbXBs
ZXhUZXh0SW5wdXQoY29uc3QgU3RyaW5nJiB0ZXh0SW5wdXQpIGZpbmFsIHsgfQotICAgIHZvaWQg
c2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdNb2RlKSBmaW5hbCB7IH0KKyAgICB2b2lk
IHNldExheWVySG9zdGluZ01vZGUoV2ViQ29yZTo6TGF5ZXJIb3N0aW5nTW9kZSkgZmluYWwgeyB9
CiAgICAgV2ViQ29yZTo6U2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyKCkgZmluYWwgeyBy
ZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLmdldCgpOyB9CiAgICAgV2ViQ29yZTo6U2Nyb2xs
YmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpIGZpbmFsIHsgcmV0dXJuIG1fdmVydGljYWxTY3JvbGxi
YXIuZ2V0KCk7IH0KICAgICB2b2lkIHN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZChib29sKSBm
aW5hbCB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwCmlu
ZGV4IDIzMGNhNGU3YzFiNTJkYTlhYjA2YTcxYmQwNGI4NGNlZWNkMDhlYzcuLmJiOTY1ODVkNjAz
NGE1ZmU1Y2MwZjFhMTk0ZjZhODM1NjZiZjM0YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luLmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgPHd0Zi9T
ZXRGb3JTY29wZS5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiTGF5ZXJIb3N0
aW5nQ29udGV4dC5oIgorI2ltcG9ydCA8V2ViQ29yZS9MYXllckhvc3RpbmdDb250ZXh0Lmg+CiAj
ZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbi5oCmluZGV4IGU0MmM3ZTlkMTc3Y2E1ODU5NDgzYzhlYTc3OWY5NmQ3MTE4YjE4
ZWEuLjlhMmM5ZDM5MWQzYmUzZmJhMmMxMjllMWVhZWQ5NDBkNDMxNTAzZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9GaW5kT3B0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1M
YXllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KKyNpbmNsdWRlIDx3dGYv
UGxhdGZvcm0uaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KQEAgLTYw
LDYgKzYxLDcgQEAgY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBTY3JvbGxi
YXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitlbnVtIGNsYXNzIExheWVySG9zdGluZ01vZGUgOiB1
aW50OF90OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTc3LDggKzc5LDYgQEAgZW51bSBQ
bHVnaW5UeXBlIHsKICAgICBQREZQbHVnaW5UeXBlLAogfTsKIAotZW51bSBjbGFzcyBMYXllckhv
c3RpbmdNb2RlIDogdWludDhfdDsKLQogY2xhc3MgUGx1Z2luIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFBsdWdpbj4gewogcHVibGljOgogICAgIHN0cnVjdCBQYXJhbWV0ZXJzIHsKQEAg
LTg5LDcgKzg5LDcgQEAgcHVibGljOgogICAgICAgICBib29sIGlzRnVsbEZyYW1lUGx1Z2luOwog
ICAgICAgICBib29sIHNob3VsZFVzZU1hbnVhbExvYWRlcjsKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICAgICAgTGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdNb2RlOworICAgICAgICBXZWJD
b3JlOjpMYXllckhvc3RpbmdNb2RlIGxheWVySG9zdGluZ01vZGU7CiAjZW5kaWYKIAogICAgICAg
ICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKQEAgLTI1MSw3ICsyNTEsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNlbmRDb21wbGV4VGV4dElucHV0KGNvbnN0IFN0cmlu
ZyYgdGV4dElucHV0KSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiBhYm91dCBjaGFu
Z2VzIHRvIHRoZSBsYXllciBob3N0aW5nIG1vZGUuCi0gICAgdmlydHVhbCB2b2lkIHNldExheWVy
SG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRM
YXllckhvc3RpbmdNb2RlKFdlYkNvcmU6OkxheWVySG9zdGluZ01vZGUpID0gMDsKICNlbmRpZgog
CiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gYWJvdXQgc2NhbGUgZmFjdG9yIGNoYW5nZXMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAppbmRleCA5
NjYyYjljODExY2RlYjZiMjcwNmVlMzA3MGQ0OTZkYzIxZDVlYjgyLi5kYTUwNjk0ZmZjODFmNTYz
NTk0OTcyMTdlYjgwNTMwYzYxYjMwNDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmgKQEAgLTEyMSw3ICsxMjEsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgd2luZG93QW5kVmlld0ZyYW1lc0NoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
d2luZG93RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVzLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2
aWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzKSBvdmVycmlkZTsKICAgICB1aW50NjRfdCBwbHVn
aW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQg
c2VuZENvbXBsZXhUZXh0SW5wdXQoY29uc3QgU3RyaW5nJiB0ZXh0SW5wdXQpIG92ZXJyaWRlOwot
ICAgIHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdNb2RlKSBvdmVycmlkZTsK
KyAgICB2b2lkIHNldExheWVySG9zdGluZ01vZGUoV2ViQ29yZTo6TGF5ZXJIb3N0aW5nTW9kZSkg
b3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIHZvaWQgY29udGVudHNTY2FsZUZhY3RvckNoYW5nZWQo
ZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5oCmluZGV4IDg0ZDQyNjRjZTBkMDY4ODZjMzk5Yzg1NjQ4ZDI1YTljYTFlYjgxNjYu
LjFjZjBmZDhlNjc5Y2E2NzNkYTc4MTI5MDI0YmQ0NmUyMjM0ZDNmZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTgwLDcgKzgwLDcgQEAg
cHVibGljOgogICAgIHZvaWQgbWFudWFsTG9hZERpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpOwogCiAgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxX
ZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkKTsKLSAgICB2b2lkIHNldExheWVy
SG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSk7CisgICAgdm9pZCBzZXRMYXllckhvc3RpbmdN
b2RlKFdlYkNvcmU6OkxheWVySG9zdGluZ01vZGUpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgdm9pZCBzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCBiYWIxZDRiZmJlZTllNDUxNGYz
ZjdiYzRiY2E1YTU5NWU1OTg2ZjE1Li45Mjg0NGMxYWMyZTA2NDIxOGMzNDI1MGZmYTdmYWJiYmI2
M2JmYWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhLmgKQEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQg
KCk+JiYpOwogCiAgICAgdmlydHVhbCB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9u
U2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+LCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQs
IGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRMYXll
ckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRM
YXllckhvc3RpbmdNb2RlKFdlYkNvcmU6OkxheWVySG9zdGluZ01vZGUpIHsgfQogCiAgICAgdmly
dHVhbCBib29sIG1hcmtMYXllcnNWb2xhdGlsZUltbWVkaWF0ZWx5SWZQb3NzaWJsZSgpIHsgcmV0
dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbS5oCmluZGV4IGRhZDY0Y2YwY2ZiNDAxZjBiN2NlM2YxNmI0YzBhYjRkMDhk
MjY2NDEuLjQ2YmI4MGYxMTZlZWQzZGY0NmE3Yjk0ZmY0YmQzODJmZTU1ZmM1MGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmgKQEAg
LTI3LDkgKzI3LDExIEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCIKIAot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KK25hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExheWVySG9z
dGluZ0NvbnRleHQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewogCiAvLyBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGVDdXN0b20gaXMgdXNlZCBmb3IgQ0FMYXllcnMgdGhhdCBsaXZlIGluIHRoZSB3ZWIg
cHJvY2VzcyBhbmQgYXJlIGhvc3RlZCBpbnRvIHRoZSBVSSBwcm9jZXNzIHZpYSByZW1vdGUgY29u
dGV4dC4KIGNsYXNzIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbSBmaW5hbCA6IHB1YmxpYyBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGUgewpAQCAtNTYsNyArNTgsNyBAQCBwcml2YXRlOgogICAgIENG
VHlwZVJlZiBjb250ZW50cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHMo
Q0ZUeXBlUmVmKSBvdmVycmlkZTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdD
b250ZXh0PiBtX2xheWVySG9zdGluZ0NvbnRleHQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OkxheWVySG9zdGluZ0NvbnRleHQ+IG1fbGF5ZXJIb3N0aW5nQ29udGV4dDsKICAgICBSZXRh
aW5QdHI8UGxhdGZvcm1MYXllcj4gbV9wbGF0Zm9ybUxheWVyOwogICAgIGJvb2wgbV9wcm92aWRl
c0NvbnRlbnRzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxh
eWVyUmVtb3RlQ3VzdG9tLm1tCmluZGV4IGE5YjRmYWE2MDgwZjdhYjIwYmMzZWMwMjI2MWIyMDMz
MDZhNDQwNDYuLjY1ZWFiNDUxOWNkMzBhNjdkZWMxZWQzOGYxYjA0M2UyY2RmZTBjZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9Q
bGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5t
bQpAQCAtMjYsMTIgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW1wb3J0ICJQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaCIKIAotI2ltcG9ydCAiTGF5ZXJIb3N0aW5nQ29udGV4
dC5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oIgogI2ltcG9ydCAiUmVtb3Rl
TGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCiAjaW1w
b3J0IDxBVkZvdW5kYXRpb24vQVZGb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBo
aWNzTGF5ZXJDQS5oPgorI2ltcG9ydCA8V2ViQ29yZS9MYXllckhvc3RpbmdDb250ZXh0Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllckNvY29hLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYkNvcmVDQUxheWVyRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUNvbnRleHQuaAppbmRleCA1N2EwMjU5
YjIyNTk2MDAxNTAzZjY0NmI3YmY3NTQ5ODk5NGJmOWU4Li5mZmQwMzU3YzU0NThiMDA1NWVhYjNm
N2Y1Mjk5Mzc2NzA2ZDEyNDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVDb250ZXh0LmgKQEAgLTI1LDEwICsyNSwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKICNpbmNsdWRlICJSZW1vdGVMYXllckJhY2tpbmdT
dG9yZUNvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllckZhY3RvcnkuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0xheWVySG9zdGluZ0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheWVyUG9v
bC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAKICAgICBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvcigpIGNvbnN0OwogCi0gICAgTGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdN
b2RlKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6TGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdN
b2RlKCkgY29uc3Q7CiAKICAgICB2b2lkIGJ1aWxkVHJhbnNhY3Rpb24oUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24mLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXImIHJvb3RMYXllcik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBlZGY5YWNlNWVm
MzY0NGVhYjIyMzQxNzY3MjExN2FkM2Y2YmQwNGYxLi4zNGViZDBjMTgwMGExNGYxYzMwZjM0YmZk
ZWZkZmJhZTEyOTg3YjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCkBAIC0xNzMsNiArMTczLDcgQEAgY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7CiBjbGFz
cyBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OwogY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBLZXlib2Fy
ZEV2ZW50OworY2xhc3MgTGF5ZXJIb3N0aW5nQ29udGV4dDsKIGNsYXNzIE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OwogY2xhc3MgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVn
aW5zQ2FsbGJhY2s7CiBjbGFzcyBQYWdlOwpAQCAtMTg5LDYgKzE5MCw3IEBAIGNsYXNzIFZpc2li
bGVQb3NpdGlvbjsKIGVudW0gU3ludGhldGljQ2xpY2tUeXBlIDogaW50OF90OwogZW51bSBjbGFz
cyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIGVudW0gY2xhc3MgRHJhZ0hhbmRs
aW5nTWV0aG9kIDogdWludDhfdDsKK2VudW0gY2xhc3MgTGF5ZXJIb3N0aW5nTW9kZSA6IHVpbnQ4
X3Q7CiBlbnVtIGNsYXNzIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCA6IGJvb2w7CiBlbnVt
IGNsYXNzIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biA6IGJvb2w7CiBlbnVtIGNsYXNzIFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIDogYm9vbDsKQEAgLTIyMSw3ICsyMjMsNiBAQCBjbGFzcyBE
b3dubG9hZElEOwogY2xhc3MgRmluZENvbnRyb2xsZXI7CiBjbGFzcyBHYW1lcGFkRGF0YTsKIGNs
YXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOwotY2xhc3MgTGF5ZXJIb3N0
aW5nQ29udGV4dDsKIGNsYXNzIE1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnM7CiBjbGFzcyBO
b3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7CiBjbGFzcyBQREZQbHVnaW47CkBA
IC01NTMsOCArNTU0LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6Oklz
VmlzaWJsZSk7IH0KICAgICBib29sIGlzVmlzaWJsZU9yT2NjbHVkZWQoKSBjb25zdCB7IHJldHVy
biBtX2FjdGl2aXR5U3RhdGUuY29udGFpbnMoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNp
YmxlT3JPY2NsdWRlZCk7IH0KIAotICAgIExheWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJIb3N0aW5nTW9kZTsgfQotICAgIHZvaWQgc2V0TGF5
ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdNb2RlKTsKKyAgICBXZWJDb3JlOjpMYXllckhvc3Rp
bmdNb2RlIGxheWVySG9zdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX2xheWVySG9zdGluZ01v
ZGU7IH0KKyAgICB2b2lkIHNldExheWVySG9zdGluZ01vZGUoV2ViQ29yZTo6TGF5ZXJIb3N0aW5n
TW9kZSk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHVwZGF0ZVBsdWdpbnNBY3Rp
dmVBbmRGb2N1c2VkU3RhdGUoKTsKQEAgLTE3MjksNyArMTczMCw3IEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogICAgIC8vIFRoZSBsYXllciBob3N0aW5nIG1vZGUuCi0gICAgTGF5ZXJIb3N0aW5nTW9k
ZSBtX2xheWVySG9zdGluZ01vZGU7CisgICAgV2ViQ29yZTo6TGF5ZXJIb3N0aW5nTW9kZSBtX2xh
eWVySG9zdGluZ01vZGU7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIG1fcGRmUGx1
Z2luRW5hYmxlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAwOTQwZjZjZDg5NTIxYzhjZTMyNDI1
ZjA4MDg1ZTAxNGZjZThiMzY0Li42Y2NlY2MyOTQ4YWVjNDU5MTI5M2I2MjU2ZjYzZjY5MjQ5MGI5
Njg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIzLDcgQEAKIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVn
YWN5UmVjZWl2ZXIgewogICAgIFNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNL
ZXlib2FyZEV2ZW50VmFsaWQsIFdlYktpdDo6V2ViS2V5Ym9hcmRFdmVudCBldmVudCwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgU2V0QWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8
V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZSwgV2ViS2l0OjpBY3Rp
dml0eVN0YXRlQ2hhbmdlSUQgYWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBWZWN0b3I8V2ViS2l0OjpD
YWxsYmFja0lEPiBjYWxsYmFja0lEcykKLSAgICBTZXRMYXllckhvc3RpbmdNb2RlKGVudW06dWlu
dDhfdCBXZWJLaXQ6OkxheWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9kZSkKKyAgICBTZXRM
YXllckhvc3RpbmdNb2RlKGVudW06dWludDhfdCBXZWJDb3JlOjpMYXllckhvc3RpbmdNb2RlIGxh
eWVySG9zdGluZ01vZGUpCiAKICAgICBTZXRCYWNrZ3JvdW5kQ29sb3IoT3B0aW9uYWw8V2ViQ29y
ZTo6Q29sb3I+IGNvbG9yKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5o
CmluZGV4IGE3NmYxZWJjMWM4ZjA0YWI5NjNlYTNmMGQ2MTI4ODFiNjg3ZTQ1MGIuLjcwZjFjMjFi
Y2JlYWUzM2ZjMWNkNGFiODc0ZjZiNDUyNzU4MWFmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5oCkBAIC00MCw2ICs0MCw3IEBAIE9CSkNfQ0xBU1MgQ0FMYXllcjsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRnJhbWVWaWV3OworY2xhc3MgTGF5ZXJIb3N0
aW5nQ29udGV4dDsKIGNsYXNzIFBsYXRmb3JtQ0FMYXllcjsKIGNsYXNzIFJ1bkxvb3BPYnNlcnZl
cjsKIGNsYXNzIFRpbGVkQmFja2luZzsKQEAgLTQ3LDggKzQ4LDYgQEAgY2xhc3MgVGlsZWRCYWNr
aW5nOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgTGF5ZXJIb3N0aW5nQ29udGV4dDsK
LQogY2xhc3MgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEgOiBwdWJsaWMgRHJhd2luZ0Fy
ZWEsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYT4g
ewogcHVibGljOgogICAgIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKFdlYlBhZ2UmLCBj
b25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggYjgyMWUxOTgwYzMzOWJkMzZlMGRkNWI2OGJmMWU3M2Ex
MjA4NThkZC4uYjkxMDU1M2JkMjQyMjExZDI4YmY1NTBlNWUxOTczYzc1Mjg4ZmY1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpAQCAtMzAsNyArMzAsNiBAQAog
CiAjaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5oIgogI2ltcG9ydCAiRHJhd2luZ0FyZWFQcm94eU1l
c3NhZ2VzLmgiCi0jaW1wb3J0ICJMYXllckhvc3RpbmdDb250ZXh0LmgiCiAjaW1wb3J0ICJMYXll
clRyZWVDb250ZXh0LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJWaWV3R2VzdHVy
ZUNvbnRyb2xsZXJNZXNzYWdlcy5oIgpAQCAtNDYsNiArNDUsNyBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNBLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xsZXIuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvTGF5ZXJIb3N0aW5nQ29udGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9SZW5kZXJMYXllckJhY2tpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCmluZGV4IGQwNDAxNjE1NDEzMmZj
NGJiODgwYTk1OTM4ODU4MzFmM2NhNTlhNjIuLmNjNGFlNWZmOTcxYTE2MDMzMTk1NGYwNzZjOWU1
M2Y2Nzc1M2MzZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaApAQCAtNDcsMTIgKzQ3LDEyIEBAIGNsYXNzIE1l
c3NhZ2VSZWNlaXZlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRmxvYXRTaXplOwor
Y2xhc3MgTGF5ZXJIb3N0aW5nQ29udGV4dDsKIGNsYXNzIE5vZGU7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1jbGFzcyBMYXllckhvc3RpbmdDb250ZXh0OwogY2xhc3MgV2ViUGFnZTsKIGNs
YXNzIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ7CiBjbGFzcyBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOwpAQCAtNzAsOCArNzAsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGludmFsaWRh
dGUoKSB7IG1fbWFuYWdlciA9IG51bGxwdHI7IH0KIAotICAgIExheWVySG9zdGluZ0NvbnRleHQq
IGxheWVySG9zdGluZ0NvbnRleHQoKSB7IHJldHVybiBtX2xheWVySG9zdGluZ0NvbnRleHQuZ2V0
KCk7IH0KLSAgICB2b2lkIHNldExheWVySG9zdGluZ0NvbnRleHQoc3RkOjp1bmlxdWVfcHRyPExh
eWVySG9zdGluZ0NvbnRleHQ+JiYpOworICAgICAgICBXZWJDb3JlOjpMYXllckhvc3RpbmdDb250
ZXh0KiBsYXllckhvc3RpbmdDb250ZXh0KCkgeyByZXR1cm4gbV9sYXllckhvc3RpbmdDb250ZXh0
LmdldCgpOyB9CisgICAgICAgIHZvaWQgc2V0TGF5ZXJIb3N0aW5nQ29udGV4dChzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6TGF5ZXJIb3N0aW5nQ29udGV4dD4mJik7CiAKICAgICBlbnVtIGNsYXNz
IEFuaW1hdGlvblR5cGUgeyBOb25lLCBJbnRvRnVsbHNjcmVlbiwgRnJvbUZ1bGxzY3JlZW4gfTsK
ICAgICBBbmltYXRpb25UeXBlIGFuaW1hdGlvblN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9hbmlt
YXRpb25UeXBlOyB9CkBAIC05OCw3ICs5OCw3IEBAIHByaXZhdGU6CiAKICAgICBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyKiBtX21hbmFnZXI7CiAgICAgdWludDY0X3QgbV9jb250ZXh0SWQ7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IG1fbGF5ZXJIb3N0aW5nQ29udGV4
dDsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxheWVySG9zdGluZ0NvbnRleHQ+
IG1fbGF5ZXJIb3N0aW5nQ29udGV4dDsKICAgICBBbmltYXRpb25UeXBlIG1fYW5pbWF0aW9uVHlw
ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3RhcmdldElzRnVsbHNjcmVlbiB7IGZhbHNlIH07CiAg
ICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1f
ZnVsbHNjcmVlbk1vZGUgeyBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVs
bHNjcmVlbk1vZGVOb25lIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IDY4NGViYWJhZDM2Y2RmMzkx
MGQ3YjYyY2FjYjE2NDhhNGI5YjIyZjQuLmZmNWEzZDg1YTliM2IyZjIwMjQxNTU1NGQ3NzQ0OWNj
NmRkNWU5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC0yOCw3ICsyOCw2IEBACiAjaWYgKFBMQVRG
T1JNKElPU19GQU1JTFkpICYmIEhBVkUoQVZLSVQpKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFC
TEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogCiAjaW1wb3J0ICJBdHRhY2htZW50LmgiCi0j
aW1wb3J0ICJMYXllckhvc3RpbmdDb250ZXh0LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1w
b3J0ICJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmgiCiAjaW1wb3J0ICJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyTWVzc2FnZXMuaCIKQEAgLTQzLDYgKzQyLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRXZl
bnROYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNv
cmUvSFRNTFZpZGVvRWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9MYXllckhvc3RpbmdDb250
ZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BpY3R1cmVJblBpY3R1cmVTdXBwb3J0Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJM
YXllci5oPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGViNmI1NmI5ZDNkM2YwNzdjNWM2M2JmZGYzN2RkOGZmZDE4NDRhZjgu
LjkyYmIwNDg1YjgyNjgxZGNmYjhhZTNiZTFlMzI0NzYyMGQ0YmI1ZTkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAyMC0wMS0xMCAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisg
ICAgICAgIFtNZWRpYSBpbiBHUFUgcHJvY2Vzc10gSW1wbGVtZW50IHRoZSByZW1vdGUgdmlkZW8g
bGF5ZXIgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA2MDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIwLTAxLTEwICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFtNZWRpYSBpbiBH
UFUgcHJvY2Vzc10gRXh0ZW5kIHRoZSBHUFUgcHJvY2VzcyBzYW5kYm94IHRvIGFsbG93IGFjY2Vz
cyB0byBsb2NhbCBmaWxlcyB3aGVuIG5lY2Vzc2FyeQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Z3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggYTUxNjMzZmZhZGIyNDBjYjI3ZGJkMWQ2NGE0YzMwMGI1MDhk
MWVlZS4uYmVhNDdhZDQ2ZGFlZGU3NDU0NGEyODI1Nzc0OTg3NjM1ZjY5MzZkMiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0yMzEsNiArMjMxLDkgQEAgaHR0
cC90ZXN0cy9jYWNoZS9kaXNrLWNhY2hlL2Rpc2stY2FjaGUtbWVkaWEtc21hbGwuaHRtbCBbIFNr
aXAgXQogaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy90ZXh0LXRyYWNrLWJsb2NrZWQuaHRt
bCBbIFNraXAgXQogaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy92aWRlby1lbGVtZW50LXJl
c291cmNlLXR5cGUuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9tZWRpYSBbIFNraXAgXQoraHR0
cC90ZXN0cy9tZWRpYS92aWRlby1sb2FkLXR3aWNlLmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVzdHMv
bWVkaWEvdmlkZW8tcGxheS1wcm9ncmVzcy5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL21lZGlh
L3ZpZGVvLXByZWxvYWQuaHRtbCBbIFBhc3MgXQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2Ut
Y2FjaGUtbWVkaWFrZXlzZXNzaW9uLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvbmF2aWdhdGlv
bi9wYWdlLWNhY2hlLW1lZGlhc3RyZWFtLmh0bWwgWyBTa2lwIF0KIGh0dHAvd3B0L21lZGlhcmVj
b3JkZXIgWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387438</attachid>
            <date>2020-01-11 11:40:05 -0800</date>
            <delta_ts>2020-01-11 14:04:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206043-20200111114004.patch</filename>
            <type>text/plain</type>
            <size>52750</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM1MWQ3NGM4ZGRhNmM2
ODdjMjY2MzdmMDM0ZTAyMzhhYjQyZDMwMS4uYTZhNzVkNzg1OTNjYTA2ZjBhNDFhYmQyMDJmYzM3
ZWUyYjk4Mjk4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIwLTAxLTExICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBwcm9j
ZXNzXSBJbXBsZW1lbnQgdGhlIHJlbW90ZSB2aWRlbyBsYXllciBzdXBwb3J0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwNDMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRo
ZSBzZXRTaXplKCkgKHZpcnR1YWwpIGZ1bmN0aW9uIGluIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMKKyAgICAgICAgdG8gY29uZmlnIHRoZSBXZWJWaWRlb0NvbnRhaW5lckxheWVy
LgorICAgICAgICBBbHNvLCBpdCBhZGRzIGZ1bmN0aW9uIENyZWF0ZVdlYlJlbmRlckxheWVyKCkg
d2hpY2ggaXMgYSB3cmFwcGVyIG9mIFtDQUxheWVyIF93ZWJfcmVuZGVyTGF5ZXJXaXRoQ29udGV4
dElEOl0sCisgICAgICAgIHNvIHRoYXQgd2UgY2FuIGNyZWF0ZSBhIHJlbmRlciBsYXllciBpbiBj
KysgY29kZS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW06CisgICAgICAgICgr
W0NBTGF5ZXIgX3dlYl9yZW5kZXJMYXllcldpdGhDb250ZXh0SUQ6XSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3dhcENoYWluRGVzY3JpcHRvci5oOgorCiAyMDIwLTAx
LTEwICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ10gVGFi
bGVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0VGFibGVDZWxsQm94IHNob3VsZCB0YWtlIEhvcml6
b250YWxDb25zdHJhaW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1NTg5OTRhYmU3ZTc4NWFmMGRlZjgwNWM4MWIw
N2EzNWZhNmY4MzAzLi5mMmY0MDJkNmIwYWUzMzkyZWQyMTQ3N2ZkYTkzNmE0OWNiNDlkZmI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTAxLTExICBQZW5nIExpdSAgPHBlbmcubGl1
NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBwcm9jZXNzXSBJbXBsZW1lbnQg
dGhlIHJlbW90ZSB2aWRlbyBsYXllciBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdGVNZWRpYVBsYXllclByb3h5IGluIHRoZSBHUFUg
cHJvY2VzcyBjcmVhdGVzIGEgTGF5ZXJIb3N0aW5nQ29udGV4dCB3aXRoIGNyZWF0ZUZvckV4dGVy
bmFsSG9zdGluZ1Byb2Nlc3MoKQorICAgICAgICBhbmQgc2hhcmUgdGhlIGNvbnRleHQgSUQgd2l0
aCB0aGUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlIGluIHRoZSBXZWIgcHJvY2Vzcy4KKyAgICAg
ICAgVGhlbiB0aGUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlIGNyZWF0ZXMgYSBDQUxheWVyIHdp
dGggdGhlIGNvbnRleHQgSUQgZm9yIHJlbmRlcmluZy4KKyAgICAgICAgVGhpcyBwYXRjaCBhbHNv
IGFkZHMgbmVjZXNzYXJ5IFhQQyBtZXNzYWdlcyB0byBtYWtlIHN1cmUgdGhlIHJlbmRlcmluZyB3
b3JrIHByb3Blcmx5LgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OjpwcmVwYXJlRm9yUGxheWJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c2V0U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6cHJlcGFyZUZv
clBsYXliYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVk
aWFQbGF5ZXJGaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllclJlbmRlcmluZ01vZGVDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJDb250ZW50
Qm94UmVjdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6
Om1lZGlhUGxheWVyQ29udGVudHNTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhUGxheWVyUHJveHk6OnNldFNpemUpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oOgorICAgICAgICAqIFBsYXRmb3JtL2Nv
Y29hL0xheWVySG9zdGluZ0NvbnRleHQuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQuaC4KKyAgICAgICAgKiBQbGF0Zm9ybS9jb2Nv
YS9MYXllckhvc3RpbmdDb250ZXh0Lm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbS4KKyAgICAgICAgKFdlYktpdDo6TGF5ZXJI
b3N0aW5nQ29udGV4dDo6Y3JlYXRlUGxhdGZvcm1MYXllckZvckhvc3RpbmdDb250ZXh0KToKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50
Lmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwcmVwYXJlRm9yUGxheWJh
Y2spOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmZpcnN0Vmlk
ZW9GcmFtZUF2YWlsYWJsZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6cGxhdGZvcm1MYXllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6c2V0U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpmaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdl
ci5tZXNzYWdlcy5pbjoKKwogMjAyMC0wMS0xMCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29u
QGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVkaWEgaW4gR1BVIHByb2Nlc3NdIEV4dGVuZCB0aGUg
R1BVIHByb2Nlc3Mgc2FuZGJveCB0byBhbGxvdyBhY2Nlc3MgdG8gbG9jYWwgZmlsZXMgd2hlbiBu
ZWNlc3NhcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA5YmI4NDMxNDUzOWFkMDk1MTQ2MzFiMjEzMDYxNmFmNjBiYTlhMWMzLi40
YzFiYzBhNzlhYTczNzgzNTIxZTgxY2JlYzUxNWQzMGMzOWZkNmJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NTA4LDYgKzY1
MDgsOCBAQAogCQkxRDAwMjZBMzIzNzRENjI0MDBDQTZDREYgLyogSlNQaWN0dXJlSW5QaWN0dXJl
V2luZG93LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUGljdHVy
ZUluUGljdHVyZVdpbmRvdy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEMDAy
NkE4MjM3NEY5RDkwMENBNkNERiAvKiBKU0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZl
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUQwMDI2QTkyMzc0RjlEOTAwQ0E2
Q0RGIC8qIEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNFbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFEMjg0RTU0MjNDOTQ3RkIwMDRCRDhCQSAvKiBM
YXllckhvc3RpbmdDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExh
eWVySG9zdGluZ0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUQyODRF
NTUyM0M5NDdGRDAwNEJEOEJBIC8qIExheWVySG9zdGluZ0NvbnRleHQubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMYXllckhvc3RpbmdDb250ZXh0Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRDJDODJCNjIzNkEzRjZBMDA1NUQ2QzUgLyogUGlj
dHVyZUluUGljdHVyZVN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGljdHVyZUluUGljdHVyZVN1
cHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMURCQzFCNTUyMzQ3QjNEMjAw
QjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQaWN0
dXJlSW5QaWN0dXJlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMURD
NTUzRkQyMTFCQTEyQTAwNEI3ODBFIC8qIE5hdmlnYXRvclNoYXJlLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBOYXZpZ2F0b3JTaGFyZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yMzA3Myw2ICsyMzA3NSw4IEBACiAJCQkJN0EwOUNFRjAxRjAxRDFGNzAwRTkzQkRCIC8q
IEZpbGVNb25pdG9yQ29jb2EubW0gKi8sCiAJCQkJQTVDOTc0Q0YxMTQ4NUZGMTAwNjZGMkFCIC8q
IEtleUV2ZW50Q29jb2EuaCAqLywKIAkJCQlBNUM5NzREMDExNDg1RkYxMDA2NkYyQUIgLyogS2V5
RXZlbnRDb2NvYS5tbSAqLywKKwkJCQkxRDI4NEU1NDIzQzk0N0ZCMDA0QkQ4QkEgLyogTGF5ZXJI
b3N0aW5nQ29udGV4dC5oICovLAorCQkJCTFEMjg0RTU1MjNDOTQ3RkQwMDRCRDhCQSAvKiBMYXll
ckhvc3RpbmdDb250ZXh0Lm1tICovLAogCQkJCTFBNDgzMkIyMUE5NTNCQTYwMDhCNERGRSAvKiBM
b2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0gKi8sCiAJCQkJQzUzRDM5MzMxQzk3ODkyRDAwN0YzQUU5
IC8qIE1JTUVUeXBlUmVnaXN0cnlDb2NvYS5tbSAqLywKIAkJCQlBMTlEOTM0OTFBQTExQjFFMDBC
NDZDMjQgLyogTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaCAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAppbmRleCAwYWEyNzRhMWM1MDk1
MzUyNmE4OGVlNGE0ZWZhM2Y5YzhkMjM3YjNiLi42ZmNkNzhmYzNlYTNmYjA1NjU2ZWI2NTcyZGE4
ZDNlM2QxM2YyODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvclNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JTcGFjZS5oCkBAIC0zMiw2ICszMiw1IEBAIGVudW0gY2xhc3MgQ29sb3JTcGFjZSA6IHVpbnQ4
X3QgewogICAgIExpbmVhclJHQiwKICAgICBEaXNwbGF5UDMKIH07Ci0gICAgCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFzLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJF
eHRyYXMubW0KaW5kZXggMjNiYjBkZTkxNjBkY2I4NjdkMjIzMjAzNTM4YWQ1ZTdlMzJmNTAwOC4u
MTgwNWMwYTVmNmNmZjI4MzY1Y2Y2YzhjODcxM2I0MmU4NTAyOThlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNB
TGF5ZXJFeHRyYXMubW0KQEAgLTgxLDYgKzgxLDkgQEAKICsgKENBTGF5ZXIgKilfd2ViX3JlbmRl
ckxheWVyV2l0aENvbnRleHRJRDoodWludDMyX3QpY29udGV4dElECiB7CiAgICAgQ0FMYXllckhv
c3QgKmxheWVySG9zdCA9IFtDQUxheWVySG9zdCBsYXllcl07CisjaWZuZGVmIE5ERUJVRworICAg
IFtsYXllckhvc3Qgc2V0TmFtZTpAIldlYlZpZGVvSG9zdGluZ0xheWVyIl07CisjZW5kaWYKICAg
ICBsYXllckhvc3QuY29udGV4dElkID0gY29udGV4dElEOwogICAgIHJldHVybiBsYXllckhvc3Q7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFn
ZVRyYW5zZmVyU2Vzc2lvblZULm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQppbmRleCAxNTM5N2FiN2YyNzhhZThkYzY5ZTMy
NTIzNzY0ZmI4OGJmZWRkMDA3Li42OTQ4MDI0NDU4YTBmNzE5M2YyZGFmZjNmOTM5OTNlZGQyZWQ5
NDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFn
ZVRyYW5zZmVyU2Vzc2lvblZULm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW0KQEAgLTI4LDE4ICsyOCwxOSBAQAogCiAj
aWYgVVNFKFZJREVPVE9PTEJPWCkKIAorI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNp
bXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgogI2ltcG9y
dCA8Q29yZU1lZGlhL0NNRm9ybWF0RGVzY3JpcHRpb24uaD4KICNpbXBvcnQgPENvcmVNZWRpYS9D
TVNhbXBsZUJ1ZmZlci5oPgorI2ltcG9ydCAiQ29yZVZpZGVvU29mdExpbmsuaCIKICNpbXBvcnQg
PHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgorI2ltcG9ydCAiVmlkZW9Ub29sYm94U29mdExp
bmsuaCIKIAogI2lmIEhBVkUoSU9TVVJGQUNFKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAj
aW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9JT1N1cmZhY2VTUEkuaD4KICNlbmRpZgogCi0jaW1wb3J0
ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1l
c3BhY2UgUEFMOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVU3dhcENoYWluRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaAppbmRleCA2NTcwNDIwNDYzY2Fh
YmExNWZlN2Q3MzE2MmFhOGVhN2JkNDgxZjkzLi4wZWY5YjJmODBlNmQwYjlhYzllOWZiNGNhYTI3
MzQ4OWRjMjM4ZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVU3dhcENoYWluRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpZiBFTkFCTEUoV0VCR1BVKQogCiAjaW5jbHVkZSAiR1BVRGV2aWNlLmgiCisjaW5jbHVk
ZSAiR1BVRXJyb3JTY29wZXMuaCIKICNpbmNsdWRlICJHUFVUZXh0dXJlRm9ybWF0LmgiCiAjaW5j
bHVkZSAiR1BVVGV4dHVyZVVzYWdlLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3Bw
CmluZGV4IDQ3OTMzMDk5MGMzOGYwNmNiODYwY2MzOGY1MzFjZjMwZTMwZDJlZWYuLmI3N2EyYTJl
ZDUwM2RhN2I0YjIzZjQ3MTVjYmEyNGNhMGE5OWY3N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVy
UHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclByb3h5Q29uZmlndXJhdGlvbi5o
IgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
TGF5b3V0UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL01lZGlhUGxheWVyUHJpdmF0ZS5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KQEAgLTE5NywxMCArMTk4LDEwIEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHk6OnN1cHBvcnRzS2V5U3lzdGVtKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5nCiAgICAgY29t
cGxldGlvbkhhbmRsZXIocmVzdWx0KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6cHJlcGFyZUZvclBsYXliYWNrKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIgaWQsIGJvb2wgcHJpdmF0ZU1vZGUsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlBy
ZWxvYWQgcHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVy
aW5nKQordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6cHJlcGFyZUZvclBsYXli
YWNrKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIGJvb2wgcHJpdmF0ZU1v
ZGUsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQgcHJlbG9hZCwgYm9vbCBwcmVz
ZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVyaW5nLCBXZWJDb3JlOjpMYXlvdXRQb2lu
dCYmIGxheW91dFBvaW50LCBXZWJDb3JlOjpMYXlvdXRTaXplJiYgbGF5b3V0U2l6ZSwgZmxvYXQg
dmlkZW9Db250ZW50U2NhbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTGF5ZXJIb3N0aW5nQ29u
dGV4dElEIGNvbnRleHRJZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8g
cGxheWVyID0gbV9wcm94aWVzLmdldChpZCkpCi0gICAgICAgIHBsYXllci0+cHJlcGFyZUZvclBs
YXliYWNrKHByaXZhdGVNb2RlLCBwcmVsb2FkLCBwcmVzZXJ2ZXNQaXRjaCwgcHJlcGFyZUZvclJl
bmRlcmluZyk7CisgICAgICAgIHBsYXllci0+cHJlcGFyZUZvclBsYXliYWNrKHByaXZhdGVNb2Rl
LCBwcmVsb2FkLCBwcmVzZXJ2ZXNQaXRjaCwgcHJlcGFyZUZvclJlbmRlcmluZywgTGF5b3V0UmVj
dChsYXlvdXRQb2ludCwgbGF5b3V0U2l6ZSksIHZpZGVvQ29udGVudFNjYWxlLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHk6OmxvYWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgVVJMJiYgdXJs
LCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiYgc2FuZGJveEV4dGVuc2lvbiwg
V2ViQ29yZTo6Q29udGVudFR5cGUmJiBjb250ZW50VHlwZSwgU3RyaW5nJiYga2V5U3lzdGVtLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTI4MSwxMiArMjgyLDYgQEAgdm9pZCBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6cHJlcGFyZUZvclJlbmRlcmluZyhNZWRpYVBsYXllclByaXZh
dGVSZW1vdGUKICAgICAgICAgcGxheWVyLT5wcmVwYXJlRm9yUmVuZGVyaW5nKCk7CiB9CiAKLXZv
aWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnNldFNpemUoTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKLXsK
LSAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX3Byb3hpZXMuZ2V0KGlkKSkKLSAgICAgICAgcGxheWVy
LT5zZXRTaXplKHNpemUpOwotfQotCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
OjpzZXRWaXNpYmxlKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIGJvb2wg
dmlzaWJsZSkKIHsKICAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX3Byb3hpZXMuZ2V0KGlkKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5LmgKaW5kZXggZDM3Y2YxOGFhMzI3OTI4YjQxZjJkMGE1ZjNj
ODBmMzBmZjFlMWYxZS4uNjM1MDQ3NzgwMTUxZjJiMWNhYjYyMjhmZThhODUwMDZjZmYxOTRhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTGF5
ZXJIb3N0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJTYW5k
Ym94RXh0ZW5zaW9uLmgiCkBAIC04NCw3ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdXBw
b3J0c0tleVN5c3RlbShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYmLCBjb25zdCBTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CiAKICAgICB2b2lkIGxvYWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciwgVVJMJiYsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4mJiwg
V2ViQ29yZTo6Q29udGVudFR5cGUmJiwgU3RyaW5nJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJiYpPiYmKTsKLSAgICB2b2lkIHByZXBhcmVG
b3JQbGF5YmFjayhNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBib29sIHByaXZh
dGVNb2RlLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkLCBib29sIHByZXNlcnZl
c1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJpbmcpOworICAgIHZvaWQgcHJlcGFyZUZvclBs
YXliYWNrKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIGJvb2wgcHJpdmF0ZU1v
ZGUsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0
Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZywgV2ViQ29yZTo6TGF5b3V0UG9pbnQmJiwgV2Vi
Q29yZTo6TGF5b3V0U2l6ZSYmLCBmbG9hdCB2aWRlb0NvbnRlbnRTY2FsZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChMYXllckhvc3RpbmdDb250ZXh0SUQgY29udGV4dElkKT4mJik7CiAgICAgdm9p
ZCBjYW5jZWxMb2FkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpOwogICAgIHZv
aWQgcHJlcGFyZVRvUGxheShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyKTsKIApA
QCAtMTAyLDcgKzEwMyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRQcmVzZXJ2ZXNQaXRjaChN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBib29sKTsKIAogICAgIHZvaWQgcHJl
cGFyZUZvclJlbmRlcmluZyhNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyKTsKLSAg
ICB2b2lkIHNldFNpemUoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIHZvaWQgc2V0VmlzaWJsZShNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyLCBib29sKTsKICAgICB2b2lkIHNldFNob3VsZE1haW50YWluQXNw
ZWN0UmF0aW8oTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgYm9vbCk7CiAgICAg
dm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpGbG9hdFJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGIxZTE0MjBiYTljMTEwODkyZDk4OGM1NjlhZjIwZTdl
YWM3NGI5YjAuLjA1MzkxNjY0Nzg1YjRjZjk5OTZlMTAwYzljOWExMWQwNzI0ZGY0MGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTM1LDcgKzM1
LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgTm90UmVmQ291
bnRlZCB7CiAgICAgQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhlbnVtOnVpbnQ4X3QgV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlk
ZW50aWZpZXIsIFN0cmluZyBwYXRoLCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
PiBvcmlnaW5zKQogICAgIFN1cHBvcnRzS2V5U3lzdGVtKGVudW06dWludDhfdCBXZWJDb3JlOjpN
ZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRp
ZmllciwgU3RyaW5nIGtleVN5c3RlbSwgU3RyaW5nIG1pbWVUeXBlKSAtPiAoYm9vbCBzdXBwb3J0
cykgU3luY2hyb25vdXMKIAotICAgIFByZXBhcmVGb3JQbGF5YmFjayhXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIGJvb2wgcHJpdmF0ZU1vZGUsIGVudW06dWlu
dDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkIHByZWxvYWQsIGJvb2wgcHJl
c2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZykKKyAgICBQcmVwYXJlRm9yUGxh
eWJhY2soV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBib29s
IHByaXZhdGVNb2RlLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJl
bG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJp
bmcsIFdlYkNvcmU6OkxheW91dFBvaW50IGxheW91dFBvaW50LCBXZWJDb3JlOjpMYXlvdXRTaXpl
IGxheW91dFNpemUsIGZsb2F0IHZpZGVvQ29udGVudFNjYWxlKSAtPiAoV2ViS2l0OjpMYXllckhv
c3RpbmdDb250ZXh0SUQgbGF5ZXJIb3N0aW5nQ29udGV4dElkKSBBc3luYwogCiAgICAgTG9hZChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFVSTCB1cmwsIE9w
dGlvbmFsPFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5kYm94RXh0ZW5zaW9u
LCBXZWJDb3JlOjpDb250ZW50VHlwZSBjb250ZW50VHlwZSwgU3RyaW5nIGtleVN5c3RlbSkgLT4g
KHN0cnVjdCBXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiBwbGF5ZXJDb25m
aWd1cmF0aW9uKSBBc3luYwogICAgIENhbmNlbExvYWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyIGlkKQpAQCAtNTYsNyArNTYsNiBAQCBtZXNzYWdlcyAtPiBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKICAgICBTZXRQcmVzZXJ2
ZXNQaXRjaChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIGJv
b2wgcHJlc2VydmVzUGl0Y2gpCiAKICAgICBQcmVwYXJlRm9yUmVuZGVyaW5nKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCkKLSAgICBTZXRTaXplKFdlYktpdDo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgV2ViQ29yZTo6SW50U2l6ZSBz
aXplKQogICAgIFNldFZpc2libGUoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyIGlkLCBib29sIHZpc2libGUpCiAgICAgU2V0U2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRp
byhXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIGJvb2wgbWFp
bnRhaW5Bc3BlY3RSYXRpbykKICAgICBTZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFdlYkNvcmU6OkZsb2F0UmVjdCBy
ZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuY3BwCmluZGV4IGExNDE3YTI4YTY1MGIwZDJmZTFiYzVjYTMyY2Ri
Y2QwYzBiOWY1MTcuLmI0ZmEzZDdhMWJkNTFiYWI4YTk1NTk5MmY0NTMxYjY5OWUzMDRhN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJSZW1vdGVNZWRp
YVJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIu
aCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0xheW91dFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9NZWRpYVBsYXllclByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdElt
cGxlbWVudGVkLmg+CkBAIC0xMDMsMTIgKzEwNCwxNiBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVy
UHJveHk6OmxvYWQoY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246Okhh
bgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29uZmlndXJhdGlvbikpOwogfQogCi12
b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnByZXBhcmVGb3JQbGF5YmFjayhib29sIHByaXZh
dGVNb2RlLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkIHByZWxvYWQsIGJvb2wg
cHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZykKK3ZvaWQgUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eTo6cHJlcGFyZUZvclBsYXliYWNrKGJvb2wgcHJpdmF0ZU1vZGUsIFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQgcHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRj
aCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVyaW5nLCBMYXlvdXRSZWN0JiYgbGF5b3V0UmVjdCwgZmxv
YXQgdmlkZW9Db250ZW50U2NhbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTGF5ZXJIb3N0aW5n
Q29udGV4dElEIGNvbnRleHRJZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9wbGF5
ZXItPnNldFByaXZhdGVCcm93c2luZ01vZGUocHJpdmF0ZU1vZGUpOwogICAgIG1fcGxheWVyLT5z
ZXRQcmVsb2FkKHByZWxvYWQpOwogICAgIG1fcGxheWVyLT5zZXRQcmVzZXJ2ZXNQaXRjaChwcmVz
ZXJ2ZXNQaXRjaCk7CiAgICAgbV9wbGF5ZXItPnByZXBhcmVGb3JSZW5kZXJpbmcoKTsKKyAgICBt
X3ZpZGVvQ29udGVudEJveFJlY3QgPSBsYXlvdXRSZWN0OworICAgIG1fdmlkZW9Db250ZW50U2Nh
bGUgPSB2aWRlb0NvbnRlbnRTY2FsZTsKKyAgICBtX2xheWVySG9zdGluZ0NvbnRleHQgPSBMYXll
ckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9jZXNzKCk7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIobV9sYXllckhvc3RpbmdDb250ZXh0LT5jb250ZXh0SUQoKSk7CiB9
CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6Y2FuY2VsTG9hZCgpCkBAIC0xNzcsMTEg
KzE4Miw2IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6cHJlcGFyZUZvclJlbmRlcmlu
ZygpCiAgICAgbV9wbGF5ZXItPnByZXBhcmVGb3JSZW5kZXJpbmcoKTsKIH0KIAotdm9pZCBSZW1v
dGVNZWRpYVBsYXllclByb3h5OjpzZXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUp
Ci17Ci0gICAgbV9wbGF5ZXItPnNldFNpemUoc2l6ZSk7Ci19Ci0KIHZvaWQgUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCiB7CiAgICAgbV9wbGF5ZXItPnNl
dFZpc2libGUodmlzaWJsZSk7CkBAIC0zODIsMTIgKzM4MiwxMyBAQCB2b2lkIFJlbW90ZU1lZGlh
UGxheWVyUHJveHk6Om1lZGlhUGxheWVyRW5naW5lVXBkYXRlZCgpCiAKIHZvaWQgUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJGaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoKQogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9sYXllckhvc3RpbmdDb250ZXh0LT5zZXRSb290
TGF5ZXIobV9wbGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSk7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpGaXJzdFZpZGVv
RnJhbWVBdmFpbGFibGUobV9pZCksIDApOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJv
eHk6Om1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQoKQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgbV9sYXllckhvc3RpbmdDb250ZXh0LT5zZXRSb290TGF5ZXIobV9wbGF5ZXIt
PnBsYXRmb3JtTGF5ZXIoKSk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVk
aWFQbGF5ZXJBY3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdlZCgpCkBAIC00NDgsMTQgKzQ0OSwxMiBA
QCBib29sIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVySXNGdWxsc2NyZWVuUGVy
bWl0dGVkKCkgY29uc3QKIAogTGF5b3V0UmVjdCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRp
YVBsYXllckNvbnRlbnRCb3hSZWN0KCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CisgICAgcmV0dXJuIG1fdmlkZW9Db250ZW50Qm94UmVj
dDsKIH0KIAogZmxvYXQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJDb250ZW50
c1NjYWxlKCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAxOwor
ICAgIHJldHVybiBtX3ZpZGVvQ29udGVudFNjYWxlOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUGxh
eWVyUHJveHk6Om1lZGlhUGxheWVyUGF1c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKaW5kZXggZmNjMzY2NGMy
NDRlMzI4ZDZkY2FkZmFkYzE5ODgyZTMyNjNmZWMyZS4uZDkyOGE1YjMxNmU2M2JiOTY1MWNiNjE1
ZTE4NzllNTYwZjZkODBhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCkBAIC00Myw2ICs0MywxMCBAQAogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBMYXllckhvc3RpbmdDb250ZXh0OworfQorCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk7CkBAIC01OSw3
ICs2Myw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0Q29uZmlndXJhdGlvbihSZW1vdGVNZWRp
YVBsYXllckNvbmZpZ3VyYXRpb24mKTsKIAotICAgIHZvaWQgcHJlcGFyZUZvclBsYXliYWNrKGJv
b2wgcHJpdmF0ZU1vZGUsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQsIGJvb2wg
cHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZyk7CisgICAgdm9pZCBwcmVw
YXJlRm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVt
czo6UHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVyaW5n
LCBXZWJDb3JlOjpMYXlvdXRSZWN0JiYsIGZsb2F0IHZpZGVvQ29udGVudFNjYWxlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEKT4mJik7CisgICAg
dm9pZCBwcmVwYXJlRm9yUmVuZGVyaW5nKCk7CiAKICAgICB2b2lkIGxvYWQoY29uc3QgVVJMJiwg
T3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYmLCBjb25zdCBXZWJDb3JlOjpDb250
ZW50VHlwZSYsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVk
aWFQbGF5ZXJDb25maWd1cmF0aW9uJiYpPiYmKTsKICAgICB2b2lkIGNhbmNlbExvYWQoKTsKQEAg
LTc5LDggKzg0LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5nTW9kZShi
b29sKTsKICAgICB2b2lkIHNldFByZXNlcnZlc1BpdGNoKGJvb2wpOwogCi0gICAgdm9pZCBwcmVw
YXJlRm9yUmVuZGVyaW5nKCk7Ci0gICAgdm9pZCBzZXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmKTsKICAgICB2b2lkIHNldFZpc2libGUoYm9vbCk7CiAgICAgdm9pZCBzZXRTaG91bGRNYWlu
dGFpbkFzcGVjdFJhdGlvKGJvb2wpOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUo
V2ViQ29yZTo6RmxvYXRSZWN0KTsKQEAgLTE5MCw2ICsxOTMsNyBAQCBwcml2YXRlOgogICAgIFJl
ZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBtX3NhbmRib3hFeHRlbnNpb247CiAgICAgUmVmPElQQzo6
Q29ubmVjdGlvbj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbjsKICAgICBSZWZQdHI8V2ViQ29yZTo6
TWVkaWFQbGF5ZXI+IG1fcGxheWVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdD
b250ZXh0PiBtX2xheWVySG9zdGluZ0NvbnRleHQ7CiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkmIG1fbWFuYWdlcjsKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRp
YUVuZ2luZUlkZW50aWZpZXIgbV9lbmdpbmVJZGVudGlmaWVyOwogICAgIFZlY3RvcjxXZWJDb3Jl
OjpDb250ZW50VHlwZT4gbV90eXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydDsKQEAgLTE5OSw2
ICsyMDMsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zZWVrYWJsZUNoYW5nZWQgeyB0cnVlIH07
CiAgICAgYm9vbCBtX2J1ZmZlcmVkQ2hhbmdlZCB7IHRydWUgfTsKICAgICBib29sIG1fcmVuZGVy
aW5nQ2FuQmVBY2NlbGVyYXRlZCB7IHRydWUgfTsKKyAgICBXZWJDb3JlOjpMYXlvdXRSZWN0IG1f
dmlkZW9Db250ZW50Qm94UmVjdDsKKyAgICBmbG9hdCBtX3ZpZGVvQ29udGVudFNjYWxlIHsgMS4w
IH07CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dnZXImIG1fbG9n
Z2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9MYXllckhvc3Rp
bmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL0xheWVySG9zdGluZ0Nv
bnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hM2I4MmYxNTk5YzgwODA5YjY2YWM1MWFhOTAwNTQ1NmVlMTg5
YzU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9MYXll
ckhvc3RpbmdDb250ZXh0LmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCisjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1MgQ0FMYXllcjsKK09CSkNfQ0xBU1MgQ0FDb250ZXh0
OworCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIE1hY2hTZW5kUmlnaHQ7Cit9CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCit1c2luZyBMYXllckhvc3RpbmdDb250ZXh0SUQgPSB1aW50MzJfdDsKKyAg
ICAKK3N0cnVjdCBMYXllckhvc3RpbmdDb250ZXh0T3B0aW9ucyB7CisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKyAgICBib29sIGNhblNob3dXaGlsZUxvY2tlZCB7IGZhbHNlIH07CisjZW5kaWYK
K307CisKK2NsYXNzIExheWVySG9zdGluZ0NvbnRleHQgeworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKExheWVySG9zdGluZ0NvbnRleHQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IGNyZWF0
ZUZvclBvcnQoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JiBzZXJ2ZXJQb3J0KTsKKyAgICAKKyNp
ZiBIQVZFKE9VVF9PRl9QUk9DRVNTX0xBWUVSX0hPU1RJTkcpCisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBjcmVhdGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9j
ZXNzKGNvbnN0IExheWVySG9zdGluZ0NvbnRleHRPcHRpb25zJiA9IHsgfSk7CisKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0
PiBjcmVhdGVGb3JFeHRlcm5hbFBsdWdpbkhvc3RpbmdQcm9jZXNzKCk7CisjZW5kaWYKKworICAg
IHN0YXRpYyBSZXRhaW5QdHI8Q0FMYXllcj4gY3JlYXRlUGxhdGZvcm1MYXllckZvckhvc3RpbmdD
b250ZXh0KExheWVySG9zdGluZ0NvbnRleHRJRCk7CisKKyNlbmRpZiAvLyBIQVZFKE9VVF9PRl9Q
Uk9DRVNTX0xBWUVSX0hPU1RJTkcpCisKKyAgICBMYXllckhvc3RpbmdDb250ZXh0KCk7CisgICAg
fkxheWVySG9zdGluZ0NvbnRleHQoKTsKKworICAgIHZvaWQgc2V0Um9vdExheWVyKENBTGF5ZXIg
Kik7CisgICAgQ0FMYXllciAqcm9vdExheWVyKCkgY29uc3Q7CisKKyAgICBMYXllckhvc3RpbmdD
b250ZXh0SUQgY29udGV4dElEKCkgY29uc3Q7CisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisKKyAg
ICBMYXllckhvc3RpbmdNb2RlIGxheWVySG9zdGluZ01vZGUoKSB7IHJldHVybiBtX2xheWVySG9z
dGluZ01vZGU7IH0KKworICAgIHZvaWQgc2V0Q29sb3JTcGFjZShDR0NvbG9yU3BhY2VSZWYpOwor
ICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKCkgY29uc3Q7CisKKyNpZiBQTEFURk9STShN
QUMpCisgICAgdm9pZCBzZXRDb2xvck1hdGNoVW50YWdnZWRDb250ZW50KGJvb2wpOworICAgIGJv
b2wgY29sb3JNYXRjaFVudGFnZ2VkQ29udGVudCgpIGNvbnN0OworI2VuZGlmCisKKyAgICAvLyBG
ZW5jZXMgb25seSB3b3JrIG9uIGlPUyBhbmQgT1MgMTAuMTArLgorICAgIHZvaWQgc2V0RmVuY2VQ
b3J0KG1hY2hfcG9ydF90KTsKKworICAgIC8vIGNyZWF0ZUZlbmNlUG9ydCBkb2VzIG5vdCBpbnN0
YWxsIHRoZSBmZW5jZSBwb3J0IG9uIHRoZSBMYXllckhvc3RpbmdDb250ZXh0J3MKKyAgICAvLyBD
QUNvbnRleHQ7IGNhbGwgc2V0RmVuY2VQb3J0KCkgd2l0aCB0aGUgbmV3bHkgY3JlYXRlZCBwb3J0
IGlmIHN5bmNocm9uaXphdGlvbgorICAgIC8vIHdpdGggdGhpcyBjb250ZXh0IGlzIGRlc2lyZWQu
CisgICAgV1RGOjpNYWNoU2VuZFJpZ2h0IGNyZWF0ZUZlbmNlUG9ydCgpOworCitwcml2YXRlOgor
ICAgIExheWVySG9zdGluZ01vZGUgbV9sYXllckhvc3RpbmdNb2RlOworICAgIFJldGFpblB0cjxD
QUNvbnRleHQ+IG1fY29udGV4dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL0xheWVySG9zdGluZ0NvbnRleHQu
bW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL0xheWVySG9zdGluZ0NvbnRleHQubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDQ2NTQ0ODQ1NjE1ZDY1MTE2MzAxMTRiNmI4ZDViMzJlNGE3ZjgwMwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvTGF5ZXJIb3N0aW5n
Q29udGV4dC5tbQpAQCAtMCwwICsxLDE2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMi0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJMYXllckhvc3RpbmdDb250ZXh0LmgiCisKKyNpbXBvcnQgPFdl
YkNvcmUvV2ViQ29yZUNBTGF5ZXJFeHRyYXMuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdy
YXBoaWNzU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KKyNp
bXBvcnQgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGQ6
OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3Jl
YXRlRm9yUG9ydChjb25zdCBNYWNoU2VuZFJpZ2h0JiBzZXJ2ZXJQb3J0KQoreworICAgIGF1dG8g
bGF5ZXJIb3N0aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsK
KworICAgIE5TRGljdGlvbmFyeSAqb3B0aW9ucyA9IEB7CisgICAgICAgIGtDQUNvbnRleHRQb3J0
TnVtYmVyIDogQChzZXJ2ZXJQb3J0LnNlbmRSaWdodCgpKSwKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgICAgIGtDQUNvbnRleHRDSUZpbHRlckJlaGF2aW9yIDogQCJpZ25vcmUiLAorI2VuZGlmCisg
ICAgfTsKKworICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fbGF5ZXJIb3N0aW5nTW9kZSA9IExh
eWVySG9zdGluZ01vZGU6OkluUHJvY2VzczsKKyAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2Nv
bnRleHQgPSBbQ0FDb250ZXh0IHJlbW90ZUNvbnRleHRXaXRoT3B0aW9uczpvcHRpb25zXTsKKwor
ICAgIHJldHVybiBsYXllckhvc3RpbmdDb250ZXh0OworfQorCisjaWYgSEFWRShPVVRfT0ZfUFJP
Q0VTU19MQVlFUl9IT1NUSU5HKQorc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+
IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoY29u
c3QgTGF5ZXJIb3N0aW5nQ29udGV4dE9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgYXV0byBsYXll
ckhvc3RpbmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOworICAg
IGxheWVySG9zdGluZ0NvbnRleHQtPm1fbGF5ZXJIb3N0aW5nTW9kZSA9IExheWVySG9zdGluZ01v
ZGU6Ok91dE9mUHJvY2VzczsKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9S
TShNQUNDQVRBTFlTVCkKKyAgICAvLyBVc2UgYSB2ZXJ5IGxhcmdlIGRpc3BsYXkgSUQgdG8gZW5z
dXJlIHRoYXQgdGhlIGNvbnRleHQgaXMgbmV2ZXIgcHV0IG9uLXNjcmVlbiAKKyAgICAvLyB3aXRo
b3V0IGJlaW5nIGV4cGxpY2l0bHkgcGFyZW50ZWQuIFNlZSA8cmRhcjovL3Byb2JsZW0vMTYwODky
Njc+IGZvciBkZXRhaWxzLgorICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtD
QUNvbnRleHQgcmVtb3RlQ29udGV4dFdpdGhPcHRpb25zOkB7CisgICAgICAgIGtDQUNvbnRleHRT
ZWN1cmU6IEAob3B0aW9ucy5jYW5TaG93V2hpbGVMb2NrZWQpLAorI2lmIEhBVkUoQ09SRV9BTklN
QVRJT05fUkVOREVSX1NFUlZFUikKKyAgICAgICAga0NBQ29udGV4dElnbm9yZXNIaXRUZXN0IDog
QFlFUywKKyAgICAgICAga0NBQ29udGV4dERpc3BsYXlJZCA6IEAxMDAwMAorI2VuZGlmCisgICAg
fV07CisjZWxpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJ
TkRPV1NFUlZFUl9CTE9DS0lORykKKyAgICBbQ0FDb250ZXh0IHNldEFsbG93c0NHU0Nvbm5lY3Rp
b25zOk5PXTsKKyAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2NvbnRleHQgPSBbQ0FDb250ZXh0
IHJlbW90ZUNvbnRleHRXaXRoT3B0aW9uczpAeworICAgICAgICBrQ0FDb250ZXh0Q0lGaWx0ZXJC
ZWhhdmlvciA6ICBAImlnbm9yZSIsCisgICAgfV07CisjZWxzZQorICAgIGxheWVySG9zdGluZ0Nv
bnRleHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQgY29udGV4dFdpdGhDR1NDb25uZWN0aW9uOkNH
U01haW5Db25uZWN0aW9uSUQoKSBvcHRpb25zOkB7CisgICAgICAgIGtDQUNvbnRleHRDSUZpbHRl
ckJlaGF2aW9yIDogQCJpZ25vcmUiLAorICAgIH1dOworI2VuZGlmCisgICAgCisgICAgcmV0dXJu
IGxheWVySG9zdGluZ0NvbnRleHQ7Cit9CisKKyNpZiBQTEFURk9STShNQUMpCitzdGQ6OnVuaXF1
ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9y
RXh0ZXJuYWxQbHVnaW5Ib3N0aW5nUHJvY2VzcygpCit7CisgICAgYXV0byBsYXllckhvc3RpbmdD
b250ZXh0ID0gbWFrZVVuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOworICAgIGxheWVySG9z
dGluZ0NvbnRleHQtPm1fbGF5ZXJIb3N0aW5nTW9kZSA9IExheWVySG9zdGluZ01vZGU6Ok91dE9m
UHJvY2VzczsKKyAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2NvbnRleHQgPSBbQ0FDb250ZXh0
IGNvbnRleHRXaXRoQ0dTQ29ubmVjdGlvbjpDR1NNYWluQ29ubmVjdGlvbklEKCkgb3B0aW9uczpA
eyBrQ0FDb250ZXh0Q0lGaWx0ZXJCZWhhdmlvciA6IEAiaWdub3JlIiB9XTsKKyAgICByZXR1cm4g
bGF5ZXJIb3N0aW5nQ29udGV4dDsKK30KKyNlbmRpZgorCitSZXRhaW5QdHI8Q0FMYXllcj4gTGF5
ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlUGxhdGZvcm1MYXllckZvckhvc3RpbmdDb250ZXh0KExh
eWVySG9zdGluZ0NvbnRleHRJRCBjb250ZXh0SUQpCit7CisgICAgcmV0dXJuIFtDQUxheWVyIF93
ZWJfcmVuZGVyTGF5ZXJXaXRoQ29udGV4dElEOmNvbnRleHRJRF07Cit9CisKKyNlbmRpZiAvLyBI
QVZFKE9VVF9PRl9QUk9DRVNTX0xBWUVSX0hPU1RJTkcpCisKK0xheWVySG9zdGluZ0NvbnRleHQ6
OkxheWVySG9zdGluZ0NvbnRleHQoKQoreworfQorCitMYXllckhvc3RpbmdDb250ZXh0Ojp+TGF5
ZXJIb3N0aW5nQ29udGV4dCgpCit7Cit9CisKK3ZvaWQgTGF5ZXJIb3N0aW5nQ29udGV4dDo6c2V0
Um9vdExheWVyKENBTGF5ZXIgKnJvb3RMYXllcikKK3sKKyAgICBbbV9jb250ZXh0IHNldExheWVy
OnJvb3RMYXllcl07Cit9CisKK0NBTGF5ZXIgKkxheWVySG9zdGluZ0NvbnRleHQ6OnJvb3RMYXll
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2NvbnRleHQgbGF5ZXJdOworfQorCitMYXllckhv
c3RpbmdDb250ZXh0SUQgTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y29udGV4dElEKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gW21fY29udGV4dCBjb250ZXh0SWRdOworfQorCit2b2lkIExheWVySG9zdGlu
Z0NvbnRleHQ6OmludmFsaWRhdGUoKQoreworICAgIFttX2NvbnRleHQgaW52YWxpZGF0ZV07Cit9
CisKK3ZvaWQgTGF5ZXJIb3N0aW5nQ29udGV4dDo6c2V0Q29sb3JTcGFjZShDR0NvbG9yU3BhY2VS
ZWYgY29sb3JTcGFjZSkKK3sKKyAgICBbbV9jb250ZXh0IHNldENvbG9yU3BhY2U6Y29sb3JTcGFj
ZV07Cit9CisKK0NHQ29sb3JTcGFjZVJlZiBMYXllckhvc3RpbmdDb250ZXh0Ojpjb2xvclNwYWNl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fY29udGV4dCBjb2xvclNwYWNlXTsKK30KKworI2lm
IFBMQVRGT1JNKE1BQykKK3ZvaWQgTGF5ZXJIb3N0aW5nQ29udGV4dDo6c2V0Q29sb3JNYXRjaFVu
dGFnZ2VkQ29udGVudChib29sIGNvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQpCit7CisgICAgW21f
Y29udGV4dCBzZXRDb2xvck1hdGNoVW50YWdnZWRDb250ZW50OmNvbG9yTWF0Y2hVbnRhZ2dlZENv
bnRlbnRdOworfQorCitib29sIExheWVySG9zdGluZ0NvbnRleHQ6OmNvbG9yTWF0Y2hVbnRhZ2dl
ZENvbnRlbnQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9jb250ZXh0IGNvbG9yTWF0Y2hVbnRh
Z2dlZENvbnRlbnRdOworfQorI2VuZGlmCisKK3ZvaWQgTGF5ZXJIb3N0aW5nQ29udGV4dDo6c2V0
RmVuY2VQb3J0KG1hY2hfcG9ydF90IGZlbmNlUG9ydCkKK3sKKyAgICBbbV9jb250ZXh0IHNldEZl
bmNlUG9ydDpmZW5jZVBvcnRdOworfQorCitNYWNoU2VuZFJpZ2h0IExheWVySG9zdGluZ0NvbnRl
eHQ6OmNyZWF0ZUZlbmNlUG9ydCgpCit7CisgICAgcmV0dXJuIE1hY2hTZW5kUmlnaHQ6OmFkb3B0
KFttX2NvbnRleHQgY3JlYXRlRmVuY2VQb3J0XSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OWNhZGZlNmRiMTZmY2M5NDNhOGYxOTJl
NWQwMWZmOGMwMTQ3NjhlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQuaAor
KysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgotCi1PQkpDX0NMQVNTIENBTGF5ZXI7Ci1PQkpDX0NMQVNTIENBQ29udGV4dDsKLQot
bmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBNYWNoU2VuZFJpZ2h0OwotfQotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotdXNpbmcgTGF5ZXJIb3N0aW5nQ29udGV4dElEID0gdWludDMyX3Q7Ci0gICAgCi1z
dHJ1Y3QgTGF5ZXJIb3N0aW5nQ29udGV4dE9wdGlvbnMgewotI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgYm9vbCBjYW5TaG93V2hpbGVMb2NrZWQgeyBmYWxzZSB9OwotI2VuZGlmCi19Owot
Ci1jbGFzcyBMYXllckhvc3RpbmdDb250ZXh0IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShM
YXllckhvc3RpbmdDb250ZXh0KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBjcmVhdGVGb3JQ
b3J0KGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc2VydmVyUG9ydCk7Ci0gICAgCi0jaWYgSEFW
RShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gY3JlYXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2Vzcyhj
b25zdCBMYXllckhvc3RpbmdDb250ZXh0T3B0aW9ucyYgPSB7IH0pOwotCi0jaWYgUExBVEZPUk0o
TUFDKQotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gY3Jl
YXRlRm9yRXh0ZXJuYWxQbHVnaW5Ib3N0aW5nUHJvY2VzcygpOwotI2VuZGlmCi0gICAgCi0jZW5k
aWYgLy8gSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQotCi0gICAgTGF5ZXJIb3N0
aW5nQ29udGV4dCgpOwotICAgIH5MYXllckhvc3RpbmdDb250ZXh0KCk7Ci0KLSAgICB2b2lkIHNl
dFJvb3RMYXllcihDQUxheWVyICopOwotICAgIENBTGF5ZXIgKnJvb3RMYXllcigpIGNvbnN0Owot
Ci0gICAgTGF5ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJRCgpIGNvbnN0OwotICAgIHZvaWQg
aW52YWxpZGF0ZSgpOwotCi0gICAgTGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdNb2RlKCkg
eyByZXR1cm4gbV9sYXllckhvc3RpbmdNb2RlOyB9Ci0KLSAgICB2b2lkIHNldENvbG9yU3BhY2Uo
Q0dDb2xvclNwYWNlUmVmKTsKLSAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSgpIGNvbnN0
OwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIHZvaWQgc2V0Q29sb3JNYXRjaFVudGFnZ2VkQ29u
dGVudChib29sKTsKLSAgICBib29sIGNvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQoKSBjb25zdDsK
LSNlbmRpZgotCi0gICAgLy8gRmVuY2VzIG9ubHkgd29yayBvbiBpT1MgYW5kIE9TIDEwLjEwKy4K
LSAgICB2b2lkIHNldEZlbmNlUG9ydChtYWNoX3BvcnRfdCk7Ci0KLSAgICAvLyBjcmVhdGVGZW5j
ZVBvcnQgZG9lcyBub3QgaW5zdGFsbCB0aGUgZmVuY2UgcG9ydCBvbiB0aGUgTGF5ZXJIb3N0aW5n
Q29udGV4dCdzCi0gICAgLy8gQ0FDb250ZXh0OyBjYWxsIHNldEZlbmNlUG9ydCgpIHdpdGggdGhl
IG5ld2x5IGNyZWF0ZWQgcG9ydCBpZiBzeW5jaHJvbml6YXRpb24KLSAgICAvLyB3aXRoIHRoaXMg
Y29udGV4dCBpcyBkZXNpcmVkLgotICAgIFdURjo6TWFjaFNlbmRSaWdodCBjcmVhdGVGZW5jZVBv
cnQoKTsKLQotcHJpdmF0ZToKLSAgICBMYXllckhvc3RpbmdNb2RlIG1fbGF5ZXJIb3N0aW5nTW9k
ZTsKLSAgICBSZXRhaW5QdHI8Q0FDb250ZXh0PiBtX2NvbnRleHQ7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5
ZXJIb3N0aW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9z
dGluZ0NvbnRleHQubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhZWU0N2VhYjk1
ZjU4YTZiNDE3ODVjMGY0ZmY3ZjAyYjA0Y2Y0NDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0
aW5nQ29udGV4dC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE1MyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkxheWVySG9zdGluZ0NvbnRleHQu
aCIKLQotI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KLSNpbXBvcnQgPHBh
bC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgotI2ltcG9ydCA8d3RmL01hY2hTZW5kUmlnaHQu
aD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdD
b250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JQb3J0KGNvbnN0IE1hY2hTZW5k
UmlnaHQmIHNlcnZlclBvcnQpCi17Ci0gICAgYXV0byBsYXllckhvc3RpbmdDb250ZXh0ID0gbWFr
ZVVuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOwotCi0gICAgTlNEaWN0aW9uYXJ5ICpvcHRp
b25zID0gQHsKLSAgICAgICAga0NBQ29udGV4dFBvcnROdW1iZXIgOiBAKHNlcnZlclBvcnQuc2Vu
ZFJpZ2h0KCkpLAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAga0NBQ29udGV4dENJRmlsdGVy
QmVoYXZpb3IgOiBAImlnbm9yZSIsCi0jZW5kaWYKLSAgICB9OwotCi0gICAgbGF5ZXJIb3N0aW5n
Q29udGV4dC0+bV9sYXllckhvc3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6SW5Qcm9jZXNz
OwotICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQgcmVtb3Rl
Q29udGV4dFdpdGhPcHRpb25zOm9wdGlvbnNdOwotCi0gICAgcmV0dXJuIGxheWVySG9zdGluZ0Nv
bnRleHQ7Ci19Ci0KLSNpZiBIQVZFKE9VVF9PRl9QUk9DRVNTX0xBWUVSX0hPU1RJTkcpCi1zdGQ6
OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3Jl
YXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2Vzcyhjb25zdCBMYXllckhvc3RpbmdDb250ZXh0T3B0
aW9ucyYgb3B0aW9ucykKLXsKLSAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBtYWtlVW5p
cXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7Ci0gICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9s
YXllckhvc3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQcm9jZXNzOwotCi0jaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotICAgIC8vIFVz
ZSBhIHZlcnkgbGFyZ2UgZGlzcGxheSBJRCB0byBlbnN1cmUgdGhhdCB0aGUgY29udGV4dCBpcyBu
ZXZlciBwdXQgb24tc2NyZWVuIAotICAgIC8vIHdpdGhvdXQgYmVpbmcgZXhwbGljaXRseSBwYXJl
bnRlZC4gU2VlIDxyZGFyOi8vcHJvYmxlbS8xNjA4OTI2Nz4gZm9yIGRldGFpbHMuCi0gICAgbGF5
ZXJIb3N0aW5nQ29udGV4dC0+bV9jb250ZXh0ID0gW0NBQ29udGV4dCByZW1vdGVDb250ZXh0V2l0
aE9wdGlvbnM6QHsKLSAgICAgICAga0NBQ29udGV4dFNlY3VyZTogQChvcHRpb25zLmNhblNob3dX
aGlsZUxvY2tlZCksCi0jaWYgSEFWRShDT1JFX0FOSU1BVElPTl9SRU5ERVJfU0VSVkVSKQotICAg
ICAgICBrQ0FDb250ZXh0SWdub3Jlc0hpdFRlc3QgOiBAWUVTLAotICAgICAgICBrQ0FDb250ZXh0
RGlzcGxheUlkIDogQDEwMDAwCi0jZW5kaWYKLSAgICB9XTsKLSNlbGlmICFQTEFURk9STShNQUND
QVRBTFlTVCkgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQotICAg
IFtDQUNvbnRleHQgc2V0QWxsb3dzQ0dTQ29ubmVjdGlvbnM6Tk9dOwotICAgIGxheWVySG9zdGlu
Z0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQgcmVtb3RlQ29udGV4dFdpdGhPcHRpb25z
OkB7Ci0gICAgICAgIGtDQUNvbnRleHRDSUZpbHRlckJlaGF2aW9yIDogIEAiaWdub3JlIiwKLSAg
ICB9XTsKLSNlbHNlCi0gICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9jb250ZXh0ID0gW0NBQ29u
dGV4dCBjb250ZXh0V2l0aENHU0Nvbm5lY3Rpb246Q0dTTWFpbkNvbm5lY3Rpb25JRCgpIG9wdGlv
bnM6QHsKLSAgICAgICAga0NBQ29udGV4dENJRmlsdGVyQmVoYXZpb3IgOiBAImlnbm9yZSIsCi0g
ICAgfV07Ci0jZW5kaWYKLSAgICAKLSAgICByZXR1cm4gbGF5ZXJIb3N0aW5nQ29udGV4dDsKLX0K
LQotI2lmIFBMQVRGT1JNKE1BQykKLXN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0
PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbFBsdWdpbkhvc3RpbmdQcm9j
ZXNzKCkKLXsKLSAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPExheWVy
SG9zdGluZ0NvbnRleHQ+KCk7Ci0gICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9sYXllckhvc3Rp
bmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQcm9jZXNzOwotICAgIGxheWVySG9zdGlu
Z0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQgY29udGV4dFdpdGhDR1NDb25uZWN0aW9u
OkNHU01haW5Db25uZWN0aW9uSUQoKSBvcHRpb25zOkB7IGtDQUNvbnRleHRDSUZpbHRlckJlaGF2
aW9yIDogQCJpZ25vcmUiIH1dOwotICAgIHJldHVybiBsYXllckhvc3RpbmdDb250ZXh0OwotfQot
I2VuZGlmCi0jZW5kaWYgLy8gSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQotCi1M
YXllckhvc3RpbmdDb250ZXh0OjpMYXllckhvc3RpbmdDb250ZXh0KCkKLXsKLX0KLQotTGF5ZXJI
b3N0aW5nQ29udGV4dDo6fkxheWVySG9zdGluZ0NvbnRleHQoKQotewotfQotCi12b2lkIExheWVy
SG9zdGluZ0NvbnRleHQ6OnNldFJvb3RMYXllcihDQUxheWVyICpyb290TGF5ZXIpCi17Ci0gICAg
W21fY29udGV4dCBzZXRMYXllcjpyb290TGF5ZXJdOwotfQotCi1DQUxheWVyICpMYXllckhvc3Rp
bmdDb250ZXh0Ojpyb290TGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBbbV9jb250ZXh0IGxh
eWVyXTsKLX0KLQotTGF5ZXJIb3N0aW5nQ29udGV4dElEIExheWVySG9zdGluZ0NvbnRleHQ6OmNv
bnRleHRJRCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX2NvbnRleHQgY29udGV4dElkXTsKLX0K
LQotdm9pZCBMYXllckhvc3RpbmdDb250ZXh0OjppbnZhbGlkYXRlKCkKLXsKLSAgICBbbV9jb250
ZXh0IGludmFsaWRhdGVdOwotfQotCi12b2lkIExheWVySG9zdGluZ0NvbnRleHQ6OnNldENvbG9y
U3BhY2UoQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UpCi17Ci0gICAgW21fY29udGV4dCBzZXRD
b2xvclNwYWNlOmNvbG9yU3BhY2VdOwotfQotCi1DR0NvbG9yU3BhY2VSZWYgTGF5ZXJIb3N0aW5n
Q29udGV4dDo6Y29sb3JTcGFjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX2NvbnRleHQgY29s
b3JTcGFjZV07Ci19Ci0KLSNpZiBQTEFURk9STShNQUMpCi12b2lkIExheWVySG9zdGluZ0NvbnRl
eHQ6OnNldENvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQoYm9vbCBjb2xvck1hdGNoVW50YWdnZWRD
b250ZW50KQotewotICAgIFttX2NvbnRleHQgc2V0Q29sb3JNYXRjaFVudGFnZ2VkQ29udGVudDpj
b2xvck1hdGNoVW50YWdnZWRDb250ZW50XTsKLX0KLQotYm9vbCBMYXllckhvc3RpbmdDb250ZXh0
Ojpjb2xvck1hdGNoVW50YWdnZWRDb250ZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gW21fY29u
dGV4dCBjb2xvck1hdGNoVW50YWdnZWRDb250ZW50XTsKLX0KLSNlbmRpZgotCi12b2lkIExheWVy
SG9zdGluZ0NvbnRleHQ6OnNldEZlbmNlUG9ydChtYWNoX3BvcnRfdCBmZW5jZVBvcnQpCi17Ci0g
ICAgW21fY29udGV4dCBzZXRGZW5jZVBvcnQ6ZmVuY2VQb3J0XTsKLX0KLQotTWFjaFNlbmRSaWdo
dCBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGZW5jZVBvcnQoKQotewotICAgIHJldHVybiBN
YWNoU2VuZFJpZ2h0OjphZG9wdChbbV9jb250ZXh0IGNyZWF0ZUZlbmNlUG9ydF0pOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCAwODc2YWRkMTM1
NDNlZThmY2VlYmE2MzViYTk5OTM2ZWQ3Yzg2YzU2Li4xNzBhYzAzMDk0YTRlMzVjZDJiYzdmMTM4
YzNjMzVkZWE0Y2JlMjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC02OSw2ICs2OSw3IEBA
IFBsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmNwcAogUGxhdGZvcm0vY2xhc3NpZmllci9jb2NvYS9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcAogUGxhdGZvcm0vY2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5jcHAKIAorUGxhdGZvcm0vY29j
b2EvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQogUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6
YXRpb25QcmVzZW50ZXIubW0KIFBsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXIubW0KIFBsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcApAQCAt
ODQsNyArODUsNiBAQCBQbGF0Zm9ybS9pb3MvUGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVy
Lm1tCiBQbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCiBQbGF0Zm9ybS9JUEMv
Y29jb2EvTWFjaE1lc3NhZ2UuY3BwCiAKLVBsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0
Lm1tCiBQbGF0Zm9ybS9tYWMvTWFjaFV0aWxpdGllcy5jcHAKIFBsYXRmb3JtL21hYy9NZW51VXRp
bGl0aWVzLm1tCiBQbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggOWNiNzgwZjQwN2ZkNmQyZmZkYjE5MmI0NWRjOWYzMGYz
MzE2Yzk3ZC4uNDc0ODJmMzEyMWU3YWVlOWE5OTVlZTFjNWM0ZWE5Y2Q4MjEwNmZmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMTYzLDEwICsxNjMsNiBAQCBjbGFzcyBJ
bnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0Owogc3RydWN0IENvbG9y
U3BhY2VEYXRhOwogI2VuZGlmCiAKLSNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklF
VykKLXVzaW5nIExheWVySG9zdGluZ0NvbnRleHRJRCA9IHVpbnQzMl90OwotI2VuZGlmCi0KIGNs
YXNzIFBhZ2VDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UGFnZUNsaWVudD4gewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWZiZGMyNTc1ZTQ0ODE4NWU0YmNi
Yzg0MmU0ZjdhNTQ0MzEzYjQzOS4uYTY1ZjMwNDM2Y2ExYzcxM2ZmYTlhZjA5ZTAxMWJiMWIwYTRi
NmI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC01NTExLDggKzU1MTEsNiBAQAogCQkxQTdFODE0RTExNTJEMjI0MDAwMzY5NUIgLyog
bWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlCQ0Uw
OTM3NjE0RkIxMjhCMDAxMTM4RDkgLyogTGF5ZXJIb3N0aW5nQ29udGV4dC5oICovLAotCQkJCUJD
RTA5Mzc1MTRGQjEyOEIwMDExMzhEOSAvKiBMYXllckhvc3RpbmdDb250ZXh0Lm1tICovLAogCQkJ
CTFBMjRCNUYwMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0aWVzLmNwcCAqLywKIAkJCQkx
QTI0QjVGMTExRjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0aWxpdGllcy5oICovLAogCQkJCTUxOTMz
REVCMTk2NUVCMjQwMDhBQzNFQSAvKiBNZW51VXRpbGl0aWVzLmggKi8sCkBAIC03MTk5LDYgKzcx
OTcsOCBAQAogCQk0NDUwQUVCRTFEQzNGQUFDMDA5OTQzRjIgLyogY29jb2EgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUJDRTA5Mzc2MTRGQjEyOEIwMDEx
MzhEOSAvKiBMYXllckhvc3RpbmdDb250ZXh0LmggKi8sCisJCQkJQkNFMDkzNzUxNEZCMTI4QjAw
MTEzOEQ5IC8qIExheWVySG9zdGluZ0NvbnRleHQubW0gKi8sCiAJCQkJQTE3OThCM0QyMjJEOTdB
MjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmggKi8sCiAJCQkJQTE3
OThCNEEyMjJGMTMzQTAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLm1t
ICovLAogCQkJCUExNzk4QjNGMjIyRDk4QjYwMDA3NjRCRCAvKiBQYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyLmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXgg
Y2M5ODU3MzE0MzEzOWMwYTUzNTM5OWNkYmFiYzJmYTI3ZmE0OTk2NC4uZDVkMTBkNzkzYzc3MDcw
ZTlkZTgzMWQ5ZTMwN2EzMjVlYTFhZTBkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNw
cApAQCAtNDMsMTEgKzQzLDExIEBACiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogbmFtZXNwYWNl
IFdlYkNvcmUgeworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogZXh0ZXJuIFdURkxvZ0NoYW5u
ZWwgTG9nTWVkaWE7Ci19CiAjZW5kaWYKK30KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKQEAgLTg2LDcgKzg2LDE2IEBAIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6fk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpwcmVwYXJlRm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgTWVkaWFQbGF5
ZXI6OlByZWxvYWQgcHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlKQog
ewotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UHJlcGFyZUZvclBsYXli
YWNrKG1faWQsIHByaXZhdGVNb2RlLCBwcmVsb2FkLCBwcmVzZXJ2ZXNQaXRjaCwgcHJlcGFyZSks
IDApOworICAgIGF1dG8gbGF5b3V0UmVjdCA9IG1fcGxheWVyLT5wbGF5ZXJDb250ZW50Qm94UmVj
dCgpOworICAgIGF1dG8gc2NhbGUgPSBtX3BsYXllci0+cGxheWVyQ29udGVudHNTY2FsZSgpOwor
CisgICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlBy
ZXBhcmVGb3JQbGF5YmFjayhtX2lkLCBwcml2YXRlTW9kZSwgcHJlbG9hZCwgcHJlc2VydmVzUGl0
Y2gsIHByZXBhcmUsIGxheW91dFJlY3QubG9jYXRpb24oKSwgbGF5b3V0UmVjdC5zaXplKCksIHNj
YWxlKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzXShhdXRvIGNvbnRleHRJ
ZCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgbV9sYXllckhvc3RpbmdDb250ZXh0SWQgPSBjb250ZXh0SWQ7CisgICAgICAg
IG1fdmlkZW9MYXllciA9IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZVBsYXRmb3JtTGF5ZXJG
b3JIb3N0aW5nQ29udGV4dChjb250ZXh0SWQpOworICAgIH0pOwogfQogCiB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2FkKGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtKQpAQCAtMTE5LDcgKzEyOCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGNvCiAKICAg
ICBjb25uZWN0aW9uLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHk6OkxvYWQobV9pZCwgdXJsLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBj
b250ZW50VHlwZSwga2V5U3lzdGVtKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShh
dXRvJiYgY29uZmlndXJhdGlvbikgewogICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAg
ICB3ZWFrVGhpcy0+bV9jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjsKKyAgICAgICAgICAg
IHdlYWtUaGlzLT5tX2NvbmZpZ3VyYXRpb24gPSBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pOwogICAg
IH0pOwogfQogCkBAIC0yODksNiArMjk4LDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpzaXplQ2hhbmdlZChXZWJDb3JlOjpGbG9hdFNpemUgbmF0dXJhbFNpemUpCiAgICAgbV9w
bGF5ZXItPnNpemVDaGFuZ2VkKCk7CiB9CiAKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpmaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoKQoreworICAgIG1fcGxheWVyLT5maXJzdFZpZGVv
RnJhbWVBdmFpbGFibGUoKTsKK30KKwogU3RyaW5nIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
ZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdAogewogICAgIHJldHVybiBtX2NvbmZpZ3VyYXRpb24u
ZW5naW5lRGVzY3JpcHRpb247CkBAIC0zNDQsMTEgKzM1OCw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpwcmVwYXJlRm9yUmVuZGVyaW5nKCkKICAgICBtX21hbmFnZXIuZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHk6OlByZXBhcmVGb3JSZW5kZXJpbmcobV9pZCksIDApOwogfQogCi12
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBzaXplKQotewotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0
U2l6ZShtX2lkLCBzaXplKSwgMCk7Ci19Ci0KIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsKICAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHk6OlNldFZpc2libGUobV9pZCwgdmlzaWJsZSksIDApOwpAQCAtNDE2LDggKzQy
NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2FkKE1lZGlhU3RyZWFtUHJp
dmF0ZSYpCiAKIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGxhdGZv
cm1MYXllcigpIGNvbnN0CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICByZXR1cm4gbV92aWRlb0xheWVyLmdldCgpOwogfQogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElP
Tl9NT0RFKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDQxOTc1Y2Y1OTQ4OTUwOTRi
MDY2NDQ0YTNhNGUxMmNkNGFkMmZhZmQuLmY4ZGExZjUxMTU3MWQ2ZDQ2ZmExMGUxODk5MTQ2MmM3
OGJlZmUxNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApAQCAtNzIsNiArNzIsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCB1cGRhdGVDYWNoZWRTdGF0ZShSZW1vdGVNZWRpYVBsYXllclN0YXRl
JiYpOwogICAgIHZvaWQgY2hhcmFjdGVyaXN0aWNDaGFuZ2VkKGJvb2wgaGFzQXVkaW8sIGJvb2wg
aGFzVmlkZW8sIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1vdmllTG9hZFR5cGUpOwogICAg
IHZvaWQgc2l6ZUNoYW5nZWQoV2ViQ29yZTo6RmxvYXRTaXplKTsKKyAgICB2b2lkIGZpcnN0Vmlk
ZW9GcmFtZUF2YWlsYWJsZSgpOwogCiAgICAgdm9pZCByZXF1ZXN0UmVzb3VyY2UoUmVtb3RlTWVk
aWFSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRpb25zKTsKICAgICB2b2lkIHJl
bW92ZVJlc291cmNlKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyKTsKQEAgLTEwOSw3ICsx
MTAsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzaG91bGRJZ25vcmVJbnRyaW5zaWNTaXplKCkg
ZmluYWw7CiAKLSAgICAvLyBVbmltcGxlbWVudGVkCiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZv
cm1MYXllcigpIGNvbnN0IGZpbmFsOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBM
QVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKQEAgLTE4Miw4
ICsxODIsNiBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzKCkg
Y29uc3QgZmluYWw7CiAgICAgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBmaW5hbDsK
IAotICAgIHZvaWQgc2V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgZmluYWw7Ci0KICAg
ICB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYpIGZpbmFsOwogCiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBmaW5h
bDsKQEAgLTMwMiw2ICszMDAsOCBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5
ZXIqIG1fcGxheWVyIHsgbnVsbHB0ciB9OwogICAgIFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VMb2FkZXI+IG1fbWVkaWFSZXNvdXJjZUxvYWRlcjsKKyAgICB1aW50MzJfdCBt
X2xheWVySG9zdGluZ0NvbnRleHRJZCAgeyAwIH07CisgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5
ZXI+IG1fdmlkZW9MYXllcjsKICAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXImIG1fbWFuYWdl
cjsKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIg
bV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyOwogICAgIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIgbV9pZDsKQEAgLTMxMiw2ICszMTIsNyBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1h
cDxSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciwgUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFSZXNvdXJjZT4+IG1fbWVkaWFSZXNvdXJjZXM7CiAKKyAgICBXZWJDb3JlOjpJbnRTaXpl
IG1fdmlkZW9TaXplOwogICAgIGRvdWJsZSBtX3ZvbHVtZSB7IDEgfTsKICAgICBkb3VibGUgbV9y
YXRlIHsgMSB9OwogICAgIGxvbmcgbV9wbGF0Zm9ybUVycm9yQ29kZSB7IDAgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyLmNwcAppbmRleCA2ZWNiYmVhYmJjYmMzYTg1MzExMjA4NGUzZjMzNjdm
N2M2YzU4NDE5Li5kNmZiOTRkZjVhYWZlNjc5YTk5ZTNmYThkNjk5ZWMwYjJjOGQ3ZTJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCkBAIC0zMDMsNiArMzAzLDEyIEBAIHZvaWQgUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpzaXplQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZUlkZW50CiAgICAgICAgIHBsYXllci0+c2l6ZUNoYW5nZWQobmF0dXJhbFNpemUp
OwogfQogCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Zmlyc3RWaWRlb0ZyYW1lQXZh
aWxhYmxlKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCkKK3sK
KyAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX3BsYXllcnMuZ2V0KGlkKSkKKyAgICAgICAgcGxheWVy
LT5maXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoKTsKK30KKwogdm9pZCBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI6OnJlcXVlc3RSZXNvdXJjZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyIGlkLCBSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciByZW1vdGVNZWRpYVJlc291cmNl
SWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUGxhdGZvcm1NZWRpYVJlc291
cmNlTG9hZGVyOjpMb2FkT3B0aW9ucyBvcHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGNvbnN0IGF1dG8mIHBsYXllciA9IG1f
cGxheWVycy5nZXQoaWQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgKaW5kZXggNDY4OWUwMjhi
NjdkNDlmM2YyNzc5OWVhOGVhY2Q3MjJkZmViMGI4OS4uNTg0ZDQ3NWRmZWFkZTBjZGY2Nzk4ZjM2
NDhlN2IxYzlmYThjYjAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oCkBAIC04Nyw2ICs4
Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVDYWNoZWRTdGF0ZShXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyU3RhdGUmJik7
CiAgICAgdm9pZCBjaGFyYWN0ZXJpc3RpY0NoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyLCBib29sIGhhc0F1ZGlvLCBib29sIGhhc1ZpZGVvLCBXZWJDb3Jl
OjpNZWRpYVBsYXllckVudW1zOjpNb3ZpZUxvYWRUeXBlKTsKICAgICB2b2lkIHNpemVDaGFuZ2Vk
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgV2ViQ29yZTo6Rmxv
YXRTaXplKTsKKyAgICB2b2lkIGZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZShXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCByZXF1ZXN0UmVzb3Vy
Y2UoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgUmVtb3RlTWVkaWFSZXNvdXJj
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgcmVtb3ZlUmVzb3VyY2UoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciwgUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCA1NGEwMWY4YjM1MjJhMWEyNTY2
MWVlZWVlNTI3OTJjZDM0M2QwMTNlLi41MTdiNzRkMDRjODIxM2YzNzg1OTgwMmY0ZDljNjBhMzdj
N2QzZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbgpA
QCAtMjYsNiArMjYsNyBAQAogbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyIE5v
dFJlZkNvdW50ZWQgewogICAgIE5ldHdvcmtTdGF0ZUNoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXll
clByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVNZWRpYVBs
YXllclN0YXRlIHN0YXRlKQogICAgIFJlYWR5U3RhdGVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgc3RydWN0IFdlYktpdDo6UmVtb3RlTWVkaWFQ
bGF5ZXJTdGF0ZSBzdGF0ZSkKKyAgICBGaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkKQogICAgIFZvbHVtZUNoYW5nZWQo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBkb3VibGUgdm9s
dW1lKQogICAgIE11dGVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllciBpZCwgYm9vbCBtdXRlKQogICAgIFRpbWVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgc3RydWN0IFdlYktpdDo6UmVtb3RlTWVkaWFQ
bGF5ZXJTdGF0ZSBzdGF0ZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlYjZiNTZiOWQzZDNmMDc3YzVjNjNiZmRmMzdkZDhm
ZmQxODQ0YWY4Li5hNzJiOWU5MTExOTBhYjdlMjIwYTIyOGEyYjdlM2Q4YjI0MGIyZGY4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDEtMTEgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxl
LmNvbT4KKworICAgICAgICBbTWVkaWEgaW4gR1BVIHByb2Nlc3NdIEltcGxlbWVudCB0aGUgcmVt
b3RlIHZpZGVvIGxheWVyIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNjA0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMC0w
MS0xMCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TWVkaWEgaW4gR1BVIHByb2Nlc3NdIEV4dGVuZCB0aGUgR1BVIHByb2Nlc3Mgc2FuZGJveCB0byBh
bGxvdyBhY2Nlc3MgdG8gbG9jYWwgZmlsZXMgd2hlbiBuZWNlc3NhcnkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9ncHUt
cHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGE1MTYzM2ZmYWRiMjQwY2IyN2RiZDFkNjRh
NGMzMDBiNTA4ZDFlZWUuLmJlYTQ3YWQ0NmRhZWRlNzQ1NDRhMjgyNTc3NDk4NzYzNWY2OTM2ZDIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjMxLDYgKzIz
MSw5IEBAIGh0dHAvdGVzdHMvY2FjaGUvZGlzay1jYWNoZS9kaXNrLWNhY2hlLW1lZGlhLXNtYWxs
Lmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvdGV4dC10cmFjay1i
bG9ja2VkLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvdmlkZW8t
ZWxlbWVudC1yZXNvdXJjZS10eXBlLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvbWVkaWEgWyBT
a2lwIF0KK2h0dHAvdGVzdHMvbWVkaWEvdmlkZW8tbG9hZC10d2ljZS5odG1sIFsgUGFzcyBdCito
dHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXBsYXktcHJvZ3Jlc3MuaHRtbCBbIFBhc3MgXQoraHR0cC90
ZXN0cy9tZWRpYS92aWRlby1wcmVsb2FkLmh0bWwgWyBQYXNzIF0KIGh0dHAvdGVzdHMvbmF2aWdh
dGlvbi9wYWdlLWNhY2hlLW1lZGlha2V5c2Vzc2lvbi5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3Rz
L25hdmlnYXRpb24vcGFnZS1jYWNoZS1tZWRpYXN0cmVhbS5odG1sIFsgU2tpcCBdCiBodHRwL3dw
dC9tZWRpYXJlY29yZGVyIFsgU2tpcCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387446</attachid>
            <date>2020-01-11 14:04:50 -0800</date>
            <delta_ts>2020-01-13 01:26:20 -0800</delta_ts>
            <desc>Patch (update changelogs and fix unified build failures)</desc>
            <filename>bug-206043-20200111140449.patch</filename>
            <type>text/plain</type>
            <size>53419</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM1MWQ3NGM4ZGRhNmM2
ODdjMjY2MzdmMDM0ZTAyMzhhYjQyZDMwMS4uNDZjNTgxYjI0ZWI1ZDA5MjhmM2NkMGU0MmU4ODU1
N2M2Mzc1Zjg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTAxLTExICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBwcm9j
ZXNzXSBJbXBsZW1lbnQgdGhlIHJlbW90ZSB2aWRlbyBsYXllciBzdXBwb3J0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwNDMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGZ1bmN0aW9u
IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZVBsYXRmb3JtTGF5ZXJGb3JIb3N0aW5nQ29udGV4
dCgpIHdoaWNoIGlzCisgICAgICAgIGEgd3JhcHBlciBvZiBbQ0FMYXllciBfd2ViX3JlbmRlckxh
eWVyV2l0aENvbnRleHRJRDpdIHRvIGNyZWF0ZSBXZWJWaWRlb0hvc3RpbmdMYXllciBpbiB0aGUg
V2ViIHByb2Nlc3MuCisKKyAgICAgICAgSXQgYWxzbyBtb3ZlcyBMYXllckhvc3RpbmdDb250ZXh0
LltofG1tXSB0byBmcm9tIGZvbGRlciAibWFjIiB0byAiY29jb2EiIGJlY2F1c2UgTGF5ZXJIb3N0
aW5nQ29udGV4dAorICAgICAgICBpcyBub3Qgb25seSB1c2VkIG9uIHRoZSBNYWMgdmVyc2lvbi4g
U29tZSBpc3N1ZXMgcmVsYXRlZCB0byB1bmlmaWVkIGJ1aWxkIGFyZSBhbHNvIGZpeGVkLgorCisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbToKKyAgICAgICAgKCtbQ0FMYXllciBfd2Vi
X3JlbmRlckxheWVyV2l0aENvbnRleHRJRDpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmg6CisKIDIwMjAtMDEtMTAgIFphbGFuIEJ1
anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBUYWJsZUZvcm1hdHRpbmdD
b250ZXh0OjpsYXlvdXRUYWJsZUNlbGxCb3ggc2hvdWxkIHRha2UgSG9yaXpvbnRhbENvbnN0cmFp
bnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDU1ODk5NGFiZTdlNzg1YWYwZGVmODA1YzgxYjA3YTM1ZmE2ZjgzMDMu
LjIwZWQ0NDAxODExZWFiMTcyZTI0Yzc4ZjRjNGRiNmU4NTg4MjI4MmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDkgQEAKKzIwMjAtMDEtMTEgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4K
KworICAgICAgICBbTWVkaWEgaW4gR1BVIHByb2Nlc3NdIEltcGxlbWVudCB0aGUgcmVtb3RlIHZp
ZGVvIGxheWVyIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNjA0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlbW90ZU1lZGlhUGxheWVyUHJveHkgaW4gdGhlIEdQVSBwcm9jZXNzIGNyZWF0
ZXMgYSBMYXllckhvc3RpbmdDb250ZXh0IHdpdGggY3JlYXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJv
Y2VzcygpCisgICAgICAgIGFuZCBzaGFyZSB0aGUgY29udGV4dCBJRCB3aXRoIHRoZSBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGUgaW4gdGhlIFdlYiBwcm9jZXNzLgorICAgICAgICBUaGVuIHRoZSBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGUgY3JlYXRlcyBhIGhvc3RpbmcgbGF5ZXIgd2l0aCB0aGUg
Y29udGV4dCBJRCBmb3IgcmVuZGVyaW5nLgorCisgICAgICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UHJlcGFyZUZvclBsYXliYWNrIHRvIHByb3Zp
ZGUgdGhlIGluaXRpYWwgdmlkZW8gY29udGVudCBib3ggYW5kIHNjYWxlCisgICAgICAgIGZvciB0
aGUgVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQyBvbiB0aGUgR1BVIHByb2Nlc3MgdG8g
Y3JlYXRlIFdlYlZpZGVvQ29udGFpbmVyTGF5ZXIuCisgICAgICAgIEl0IGFkZHMgWFBDIG1lc3Nh
Z2UgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpGaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUgdG8g
bm90aWZ5IHRoZSByZW5kZXJlciBvbiB0aGUgV2ViIHByb2Nlc3MgdGhhdCB0aGUgdmlkZW8gbGF5
ZXIgaXMgcmVhZHkuCisgICAgICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRT
aXplIG1lc3NhZ2UgaXMgcmVtb3ZlZCB0byBhdm9pZCB0aGUgdW5uZWNlc3NhcnkgWFBDIG1lc3Nh
Z2UKKyAgICAgICAgYmVjYXVzZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpz
ZXRTaXplKCkgZG9lcyBub3RoaW5nLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OjpwcmVwYXJlRm9yUGxheWJhY2spOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c2V0U2l6ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5o
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6
cHJlcGFyZUZvclBsYXliYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6bWVkaWFQbGF5ZXJGaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllclJlbmRlcmluZ01vZGVDaGFu
Z2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5
ZXJDb250ZW50Qm94UmVjdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxh
eWVyUHJveHk6Om1lZGlhUGxheWVyQ29udGVudHNTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNldFNpemUpOiBEZWxldGVkLgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oOgorICAgICAgICAqIFBs
YXRmb3JtL2NvY29hL0xheWVySG9zdGluZ0NvbnRleHQuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQuaC4KKyAgICAgICAgKiBQbGF0
Zm9ybS9jb2NvYS9MYXllckhvc3RpbmdDb250ZXh0Lm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbS4KKyAgICAgICAgKFdlYktp
dDo6TGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlUGxhdGZvcm1MYXllckZvckhvc3RpbmdDb250
ZXh0KToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6cHJlcGFyZUZvclBsYXliYWNrKToKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpmaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBsYXRmb3JtTGF5ZXIgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNpemUpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
cjo6Zmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW46CisKIDIwMjAtMDEt
MTAgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01l
ZGlhIGluIEdQVSBwcm9jZXNzXSBFeHRlbmQgdGhlIEdQVSBwcm9jZXNzIHNhbmRib3ggdG8gYWxs
b3cgYWNjZXNzIHRvIGxvY2FsIGZpbGVzIHdoZW4gbmVjZXNzYXJ5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWJiODQzMTQ1Mzlh
ZDA5NTE0NjMxYjIxMzA2MTZhZjYwYmE5YTFjMy4uNGMxYmMwYTc5YWE3Mzc4MzUyMWU4MWNiZWM1
MTVkMzBjMzlmZDZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNjUwOCw2ICs2NTA4LDggQEAKIAkJMUQwMDI2QTMyMzc0RDYy
NDAwQ0E2Q0RGIC8qIEpTUGljdHVyZUluUGljdHVyZVdpbmRvdy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1BpY3R1cmVJblBpY3R1cmVXaW5kb3cuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRDAwMjZBODIzNzRGOUQ5MDBDQTZDREYgLyogSlNF
bnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFEMDAyNkE5MjM3NEY5RDkwMENBNkNERiAvKiBKU0VudGVyUGljdHVyZUluUGlj
dHVyZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRW50
ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxRDI4NEU1NDIzQzk0N0ZCMDA0QkQ4QkEgLyogTGF5ZXJIb3N0aW5nQ29udGV4dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXllckhvc3RpbmdDb250ZXh0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFEMjg0RTU1MjNDOTQ3RkQwMDRCRDhCQSAvKiBMYXll
ckhvc3RpbmdDb250ZXh0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gTGF5ZXJIb3N0aW5nQ29udGV4dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUQyQzgyQjYyMzZBM0Y2QTAwNTVENkM1IC8qIFBpY3R1cmVJblBpY3R1cmVTdXBwb3J0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBpY3R1cmVJblBpY3R1cmVTdXBwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFEQkMxQjU1MjM0N0IzRDIwMEI5MDFBRiAvKiBQaWN0dXJlSW5QaWN0dXJl
T2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGljdHVyZUluUGljdHVyZU9ic2VydmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEQzU1M0ZEMjExQkExMkEwMDRCNzgwRSAvKiBO
YXZpZ2F0b3JTaGFyZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmF2aWdhdG9yU2hhcmUu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjMwNzMsNiArMjMwNzUsOCBAQAog
CQkJCTdBMDlDRUYwMUYwMUQxRjcwMEU5M0JEQiAvKiBGaWxlTW9uaXRvckNvY29hLm1tICovLAog
CQkJCUE1Qzk3NENGMTE0ODVGRjEwMDY2RjJBQiAvKiBLZXlFdmVudENvY29hLmggKi8sCiAJCQkJ
QTVDOTc0RDAxMTQ4NUZGMTAwNjZGMkFCIC8qIEtleUV2ZW50Q29jb2EubW0gKi8sCisJCQkJMUQy
ODRFNTQyM0M5NDdGQjAwNEJEOEJBIC8qIExheWVySG9zdGluZ0NvbnRleHQuaCAqLywKKwkJCQkx
RDI4NEU1NTIzQzk0N0ZEMDA0QkQ4QkEgLyogTGF5ZXJIb3N0aW5nQ29udGV4dC5tbSAqLywKIAkJ
CQkxQTQ4MzJCMjFBOTUzQkE2MDA4QjRERkUgLyogTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tICov
LAogCQkJCUM1M0QzOTMzMUM5Nzg5MkQwMDdGM0FFOSAvKiBNSU1FVHlwZVJlZ2lzdHJ5Q29jb2Eu
bW0gKi8sCiAJCQkJQTE5RDkzNDkxQUExMUIxRTAwQjQ2QzI0IC8qIE5ldHdvcmtFeHRlbnNpb25D
b250ZW50RmlsdGVyLmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvclNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvclNwYWNlLmgKaW5kZXggMGFhMjc0YTFjNTA5NTM1MjZhODhlZTRhNGVmYTNmOWM4ZDIzN2Iz
Yi4uNmZjZDc4ZmMzZWEzZmIwNTY1NmViNjU3MmRhOGQzZTNkMTNmMjg0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaApAQCAtMzIsNiArMzIsNSBA
QCBlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90IHsKICAgICBMaW5lYXJSR0IsCiAgICAg
RGlzcGxheVAzCiB9OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFzLm1tCmluZGV4IDIzYmIwZGU5MTYw
ZGNiODY3ZDIyMzIwMzUzOGFkNWU3ZTMyZjUwMDguLjE4MDVjMGE1ZjZjZmYyODM2NWNmNmM4Yzg3
MTNiNDJlODUwMjk4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFzLm1tCkBAIC04MSw2ICs4
MSw5IEBACiArIChDQUxheWVyICopX3dlYl9yZW5kZXJMYXllcldpdGhDb250ZXh0SUQ6KHVpbnQz
Ml90KWNvbnRleHRJRAogewogICAgIENBTGF5ZXJIb3N0ICpsYXllckhvc3QgPSBbQ0FMYXllckhv
c3QgbGF5ZXJdOworI2lmbmRlZiBOREVCVUcKKyAgICBbbGF5ZXJIb3N0IHNldE5hbWU6QCJXZWJW
aWRlb0hvc3RpbmdMYXllciJdOworI2VuZGlmCiAgICAgbGF5ZXJIb3N0LmNvbnRleHRJZCA9IGNv
bnRleHRJRDsKICAgICByZXR1cm4gbGF5ZXJIb3N0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQu
bW0KaW5kZXggMTUzOTdhYjdmMjc4YWU4ZGM2OWUzMjUyMzc2NGZiODhiZmVkZDAwNy4uNjk0ODAy
NDQ1OGEwZjcxOTNmMmRhZmYzZjkzOTkzZWRkMmVkOTQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lv
blZULm1tCkBAIC0yOCwxOCArMjgsMTkgQEAKIAogI2lmIFVTRShWSURFT1RPT0xCT1gpCiAKKyNp
bXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0
ICJNZWRpYVNhbXBsZUFWRk9iakMuaCIKICNpbXBvcnQgPENvcmVNZWRpYS9DTUZvcm1hdERlc2Ny
aXB0aW9uLmg+CiAjaW1wb3J0IDxDb3JlTWVkaWEvQ01TYW1wbGVCdWZmZXIuaD4KKyNpbXBvcnQg
IkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsu
aD4KKyNpbXBvcnQgIlZpZGVvVG9vbGJveFNvZnRMaW5rLmgiCiAKICNpZiBIQVZFKElPU1VSRkFD
RSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogI2luY2x1ZGUgPHBhbC9zcGkvY29jb2EvSU9T
dXJmYWNlU1BJLmg+CiAjZW5kaWYKIAotI2ltcG9ydCAiQ29yZVZpZGVvU29mdExpbmsuaCIKLQog
bmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIFBBTDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN3YXBDaGFpbkRlc2NyaXB0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTd2FwQ2hhaW5E
ZXNjcmlwdG9yLmgKaW5kZXggNjU3MDQyMDQ2M2NhYWJhMTVmZTdkNzMxNjJhYThlYTdiZDQ4MWY5
My4uMGVmOWIyZjgwZTZkMGI5YWM5ZTlmYjRjYWEyNzM0ODlkYzIzOGU5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN3YXBDaGFpbkRlc2NyaXB0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU3dhcENo
YWluRGVzY3JpcHRvci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFdFQkdQVSkKIAog
I2luY2x1ZGUgIkdQVURldmljZS5oIgorI2luY2x1ZGUgIkdQVUVycm9yU2NvcGVzLmgiCiAjaW5j
bHVkZSAiR1BVVGV4dHVyZUZvcm1hdC5oIgogI2luY2x1ZGUgIkdQVVRleHR1cmVVc2FnZS5oIgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAppbmRleCA0NzkzMzA5OTBjMzhmMDZjYjg2
MGNjMzhmNTMxY2YzMGUzMGQyZWVmLi5iNzdhMmEyZWQ1MDNkYTdiNGIyM2Y0NzE1Y2JhMjRjYTBh
OTlmNzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKQEAgLTM2LDYgKzM2LDcg
QEAKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0xheW91dFJlY3QuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL01lZGlhUGxheWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllclByaXZh
dGUuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CkBAIC0xOTcsMTAgKzE5OCwxMCBAQCB2
b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpzdXBwb3J0c0tleVN5c3RlbShNZWRp
YVBsYXllckVudW1zOjpNZWRpYUVuZwogICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CiB9
CiAKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnByZXBhcmVGb3JQbGF5YmFj
ayhNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBib29sIHByaXZhdGVNb2Rl
LCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkIHByZWxvYWQsIGJvb2wgcHJlc2Vy
dmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZykKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHk6OnByZXBhcmVGb3JQbGF5YmFjayhNZWRpYVBsYXllclByaXZhdGVSZW1v
dGVJZGVudGlmaWVyIGlkLCBib29sIHByaXZhdGVNb2RlLCBXZWJDb3JlOjpNZWRpYVBsYXllckVu
dW1zOjpQcmVsb2FkIHByZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZv
clJlbmRlcmluZywgV2ViQ29yZTo6TGF5b3V0UG9pbnQmJiBsYXlvdXRQb2ludCwgV2ViQ29yZTo6
TGF5b3V0U2l6ZSYmIGxheW91dFNpemUsIGZsb2F0IHZpZGVvQ29udGVudFNjYWxlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKExheWVySG9zdGluZ0NvbnRleHRJRCBjb250ZXh0SWQpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvIHBsYXllciA9IG1fcHJveGllcy5nZXQoaWQp
KQotICAgICAgICBwbGF5ZXItPnByZXBhcmVGb3JQbGF5YmFjayhwcml2YXRlTW9kZSwgcHJlbG9h
ZCwgcHJlc2VydmVzUGl0Y2gsIHByZXBhcmVGb3JSZW5kZXJpbmcpOworICAgICAgICBwbGF5ZXIt
PnByZXBhcmVGb3JQbGF5YmFjayhwcml2YXRlTW9kZSwgcHJlbG9hZCwgcHJlc2VydmVzUGl0Y2gs
IHByZXBhcmVGb3JSZW5kZXJpbmcsIExheW91dFJlY3QobGF5b3V0UG9pbnQsIGxheW91dFNpemUp
LCB2aWRlb0NvbnRlbnRTY2FsZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2
b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojpsb2FkKE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFVSTCYmIHVybCwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlPiYmIHNhbmRib3hFeHRlbnNpb24sIFdlYkNvcmU6OkNvbnRlbnRUeXBlJiYgY29u
dGVudFR5cGUsIFN0cmluZyYmIGtleVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1v
dGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0y
ODEsMTIgKzI4Miw2IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnByZXBh
cmVGb3JSZW5kZXJpbmcoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlCiAgICAgICAgIHBsYXllci0+
cHJlcGFyZUZvclJlbmRlcmluZygpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5OjpzZXRTaXplKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpCi17Ci0gICAgaWYgKGF1dG8gcGxheWVyID0gbV9w
cm94aWVzLmdldChpZCkpCi0gICAgICAgIHBsYXllci0+c2V0U2l6ZShzaXplKTsKLX0KLQogdm9p
ZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c2V0VmlzaWJsZShNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBib29sIHZpc2libGUpCiB7CiAgICAgaWYgKGF1dG8g
cGxheWVyID0gbV9wcm94aWVzLmdldChpZCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCmlu
ZGV4IGQzN2NmMThhYTMyNzkyOGI0MWYyZDBhNWYzYzgwZjMwZmYxZTFmMWUuLjYzNTA0Nzc4MDE1
MWYyYjFjYWI2MjI4ZmU4YTg1MDA2Y2ZmMTk0YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVk
ZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkxheWVySG9zdGluZ0NvbnRleHQuaCIKICNpbmNs
dWRlICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgpAQCAtODQsNyAr
ODUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3VwcG9ydHNLZXlTeXN0ZW0oV2ViQ29yZTo6TWVk
aWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiwgY29u
c3QgU3RyaW5nJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCiAgICAgdm9p
ZCBsb2FkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFVSTCYmLCBPcHRpb25h
bDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiYsIFdlYkNvcmU6OkNvbnRlbnRUeXBlJiYsIFN0
cmluZyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJh
dGlvbiYmKT4mJik7Ci0gICAgdm9pZCBwcmVwYXJlRm9yUGxheWJhY2soTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlSWRlbnRpZmllciwgYm9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6UHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVu
ZGVyaW5nKTsKKyAgICB2b2lkIHByZXBhcmVGb3JQbGF5YmFjayhNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyLCBib29sIHByaXZhdGVNb2RlLCBXZWJDb3JlOjpNZWRpYVBsYXllckVu
dW1zOjpQcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJp
bmcsIFdlYkNvcmU6OkxheW91dFBvaW50JiYsIFdlYkNvcmU6OkxheW91dFNpemUmJiwgZmxvYXQg
dmlkZW9Db250ZW50U2NhbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTGF5ZXJIb3N0aW5nQ29u
dGV4dElEIGNvbnRleHRJZCk+JiYpOwogICAgIHZvaWQgY2FuY2VsTG9hZChNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGVJZGVudGlmaWVyKTsKICAgICB2b2lkIHByZXBhcmVUb1BsYXkoTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcik7CiAKQEAgLTEwMiw3ICsxMDMsNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0UHJlc2VydmVzUGl0Y2goTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllciwgYm9vbCk7CiAKICAgICB2b2lkIHByZXBhcmVGb3JSZW5kZXJpbmcoTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBzZXRTaXplKE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAgICB2
b2lkIHNldFZpc2libGUoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgYm9vbCk7
CiAgICAgdm9pZCBzZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXIsIGJvb2wpOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJh
bWUoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgV2ViQ29yZTo6RmxvYXRSZWN0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCBi
MWUxNDIwYmE5YzExMDg5MmQ5ODhjNTY5YWYyMGU3ZWFjNzRiOWIwLi4wNTM5MTY2NDc4NWI0Y2Y5
OTk2ZTEwMGM5YzlhMTFkMDcyNGRmNDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zNSw3ICszNSw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5IE5vdFJlZkNvdW50ZWQgewogICAgIENsZWFyTWVkaWFDYWNo
ZUZvck9yaWdpbnMoZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlh
RW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBTdHJpbmcgcGF0aCwgVmVj
dG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2lucykKICAgICBTdXBwb3J0c0tl
eVN5c3RlbShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdp
bmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIFN0cmluZyBrZXlTeXN0ZW0sIFN0
cmluZyBtaW1lVHlwZSkgLT4gKGJvb2wgc3VwcG9ydHMpIFN5bmNocm9ub3VzCiAKLSAgICBQcmVw
YXJlRm9yUGxheWJhY2soV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVy
IGlkLCBib29sIHByaXZhdGVNb2RlLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJF
bnVtczo6UHJlbG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBhcmVG
b3JSZW5kZXJpbmcpCisgICAgUHJlcGFyZUZvclBsYXliYWNrKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgYm9vbCBwcml2YXRlTW9kZSwgZW51bTp1aW50OF90
IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQgcHJlbG9hZCwgYm9vbCBwcmVzZXJ2
ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVyaW5nLCBXZWJDb3JlOjpMYXlvdXRQb2ludCBs
YXlvdXRQb2ludCwgV2ViQ29yZTo6TGF5b3V0U2l6ZSBsYXlvdXRTaXplLCBmbG9hdCB2aWRlb0Nv
bnRlbnRTY2FsZSkgLT4gKFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEIGxheWVySG9zdGlu
Z0NvbnRleHRJZCkgQXN5bmMKIAogICAgIExvYWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyIGlkLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJLaXQ6OlNhbmRib3hFeHRl
bnNpb246OkhhbmRsZT4gc2FuZGJveEV4dGVuc2lvbiwgV2ViQ29yZTo6Q29udGVudFR5cGUgY29u
dGVudFR5cGUsIFN0cmluZyBrZXlTeXN0ZW0pIC0+IChzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllckNvbmZpZ3VyYXRpb24gcGxheWVyQ29uZmlndXJhdGlvbikgQXN5bmMKICAgICBDYW5j
ZWxMb2FkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCkKQEAg
LTU2LDcgKzU2LDYgQEAgbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkg
Tm90UmVmQ291bnRlZCB7CiAgICAgU2V0UHJlc2VydmVzUGl0Y2goV2ViS2l0OjpNZWRpYVBsYXll
clByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBib29sIHByZXNlcnZlc1BpdGNoKQogCiAgICAg
UHJlcGFyZUZvclJlbmRlcmluZyhXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIgaWQpCi0gICAgU2V0U2l6ZShXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIgaWQsIFdlYkNvcmU6OkludFNpemUgc2l6ZSkKICAgICBTZXRWaXNpYmxlKFdlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgYm9vbCB2aXNpYmxlKQog
ICAgIFNldFNob3VsZE1haW50YWluQXNwZWN0UmF0aW8oV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyIGlkLCBib29sIG1haW50YWluQXNwZWN0UmF0aW8pCiAgICAgU2V0
VmlkZW9GdWxsc2NyZWVuRnJhbWUoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyIGlkLCBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRl
eCBhMTQxN2EyOGE2NTBiMGQyZmUxYmM1Y2EzMmNkYmNkMGMwYjlmNTE3Li5iNGZhM2Q3YTFiZDUx
YmFiOGE5NTU5OTJmNDUzMWI2OTllMzA0YTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC0zOCw2
ICszOCw3IEBACiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1
ZGUgIlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRSZWN0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9NZWRpYVBsYXllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJQcml2
YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpAQCAtMTAzLDEyICsx
MDQsMTYgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpsb2FkKGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW4KICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5
OjpwcmVwYXJlRm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6UHJlbG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBh
cmVGb3JSZW5kZXJpbmcpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnByZXBhcmVGb3JQ
bGF5YmFjayhib29sIHByaXZhdGVNb2RlLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVs
b2FkIHByZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmlu
ZywgTGF5b3V0UmVjdCYmIGxheW91dFJlY3QsIGZsb2F0IHZpZGVvQ29udGVudFNjYWxlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKExheWVySG9zdGluZ0NvbnRleHRJRCBjb250ZXh0SWQpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fcGxheWVyLT5zZXRQcml2YXRlQnJvd3NpbmdNb2Rl
KHByaXZhdGVNb2RlKTsKICAgICBtX3BsYXllci0+c2V0UHJlbG9hZChwcmVsb2FkKTsKICAgICBt
X3BsYXllci0+c2V0UHJlc2VydmVzUGl0Y2gocHJlc2VydmVzUGl0Y2gpOwogICAgIG1fcGxheWVy
LT5wcmVwYXJlRm9yUmVuZGVyaW5nKCk7CisgICAgbV92aWRlb0NvbnRlbnRCb3hSZWN0ID0gbGF5
b3V0UmVjdDsKKyAgICBtX3ZpZGVvQ29udGVudFNjYWxlID0gdmlkZW9Db250ZW50U2NhbGU7Cisg
ICAgbV9sYXllckhvc3RpbmdDb250ZXh0ID0gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9y
RXh0ZXJuYWxIb3N0aW5nUHJvY2VzcygpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fbGF5ZXJI
b3N0aW5nQ29udGV4dC0+Y29udGV4dElEKCkpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVy
UHJveHk6OmNhbmNlbExvYWQoKQpAQCAtMTc3LDExICsxODIsNiBAQCB2b2lkIFJlbW90ZU1lZGlh
UGxheWVyUHJveHk6OnByZXBhcmVGb3JSZW5kZXJpbmcoKQogICAgIG1fcGxheWVyLT5wcmVwYXJl
Rm9yUmVuZGVyaW5nKCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0U2l6
ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQotewotICAgIG1fcGxheWVyLT5zZXRTaXpl
KHNpemUpOwotfQotCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNldFZpc2libGUoYm9v
bCB2aXNpYmxlKQogewogICAgIG1fcGxheWVyLT5zZXRWaXNpYmxlKHZpc2libGUpOwpAQCAtMzgy
LDEyICszODIsMTMgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckVu
Z2luZVVwZGF0ZWQoKQogCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVy
Rmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Um9vdExheWVyKG1fcGxheWVyLT5wbGF0Zm9ybUxh
eWVyKCkpOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlcjo6Rmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKG1faWQpLCAwKTsK
IH0KIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllclJlbmRlcmluZ01v
ZGVDaGFuZ2VkKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fbGF5ZXJIb3N0aW5n
Q29udGV4dC0+c2V0Um9vdExheWVyKG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpOwogfQogCiB2
b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyQWN0aXZlU291cmNlQnVmZmVy
c0NoYW5nZWQoKQpAQCAtNDQ4LDE0ICs0NDksMTIgQEAgYm9vbCBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjptZWRpYVBsYXllcklzRnVsbHNjcmVlblBlcm1pdHRlZCgpIGNvbnN0CiAKIExheW91dFJl
Y3QgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJDb250ZW50Qm94UmVjdCgpIGNv
bnN0CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwor
ICAgIHJldHVybiBtX3ZpZGVvQ29udGVudEJveFJlY3Q7CiB9CiAKIGZsb2F0IFJlbW90ZU1lZGlh
UGxheWVyUHJveHk6Om1lZGlhUGxheWVyQ29udGVudHNTY2FsZSgpIGNvbnN0CiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gbV92aWRlb0NvbnRlbnRT
Y2FsZTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllclBhdXNl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5oCmluZGV4IGZjYzM2NjRjMjQ0ZTMyOGQ2ZGNhZGZhZGMxOTg4MmUzMjYz
ZmVjMmUuLmQ5MjhhNWIzMTZlNjNiYjk2NTFjYjYxNWUxODc5ZTU2MGY2ZDgwYWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkuaApAQCAtNDMsNiArNDMsMTAgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgTGF5ZXJI
b3N0aW5nQ29udGV4dDsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OwpAQCAtNTksNyArNjMsOCBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGdldENvbmZpZ3VyYXRpb24oUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJik7CiAK
LSAgICB2b2lkIHByZXBhcmVGb3JQbGF5YmFjayhib29sIHByaXZhdGVNb2RlLCBXZWJDb3JlOjpN
ZWRpYVBsYXllckVudW1zOjpQcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBh
cmVGb3JSZW5kZXJpbmcpOworICAgIHZvaWQgcHJlcGFyZUZvclBsYXliYWNrKGJvb2wgcHJpdmF0
ZU1vZGUsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQsIGJvb2wgcHJlc2VydmVz
UGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZywgV2ViQ29yZTo6TGF5b3V0UmVjdCYmLCBm
bG9hdCB2aWRlb0NvbnRlbnRTY2FsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6Okxh
eWVySG9zdGluZ0NvbnRleHRJRCk+JiYpOworICAgIHZvaWQgcHJlcGFyZUZvclJlbmRlcmluZygp
OwogCiAgICAgdm9pZCBsb2FkKGNvbnN0IFVSTCYsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZT4mJiwgY29uc3QgV2ViQ29yZTo6Q29udGVudFR5cGUmLCBjb25zdCBTdHJpbmcmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYmKT4m
Jik7CiAgICAgdm9pZCBjYW5jZWxMb2FkKCk7CkBAIC03OSw4ICs4NCw2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFByaXZhdGVCcm93c2luZ01vZGUoYm9vbCk7CiAgICAgdm9pZCBzZXRQcmVzZXJ2
ZXNQaXRjaChib29sKTsKIAotICAgIHZvaWQgcHJlcGFyZUZvclJlbmRlcmluZygpOwotICAgIHZv
aWQgc2V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAgICAgdm9pZCBzZXRWaXNpYmxl
KGJvb2wpOwogICAgIHZvaWQgc2V0U2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRpbyhib29sKTsKICAg
ICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKFdlYkNvcmU6OkZsb2F0UmVjdCk7CkBAIC0x
OTAsNiArMTkzLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gbV9z
YW5kYm94RXh0ZW5zaW9uOwogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fd2ViUHJvY2Vzc0Nv
bm5lY3Rpb247CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVyPiBtX3BsYXllcjsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gbV9sYXllckhvc3RpbmdDb250
ZXh0OwogICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5JiBtX21hbmFnZXI7CiAgICAg
V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIG1fZW5naW5l
SWRlbnRpZmllcjsKICAgICBWZWN0b3I8V2ViQ29yZTo6Q29udGVudFR5cGU+IG1fdHlwZXNSZXF1
aXJpbmdIYXJkd2FyZVN1cHBvcnQ7CkBAIC0xOTksNiArMjAzLDggQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fc2Vla2FibGVDaGFuZ2VkIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9idWZmZXJlZENoYW5n
ZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX3JlbmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQgeyB0cnVl
IH07CisgICAgV2ViQ29yZTo6TGF5b3V0UmVjdCBtX3ZpZGVvQ29udGVudEJveFJlY3Q7CisgICAg
ZmxvYXQgbV92aWRlb0NvbnRlbnRTY2FsZSB7IDEuMCB9OwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECiAgICAgY29uc3QgTG9nZ2VyJiBtX2xvZ2dlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vY29jb2EvTGF5ZXJIb3N0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9jb2NvYS9MYXllckhvc3RpbmdDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTNiODJm
MTU5OWM4MDgwOWI2NmFjNTFhYTkwMDU0NTZlZTE4OWM1OQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvTGF5ZXJIb3N0aW5nQ29udGV4dC5oCkBAIC0wLDAg
KzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTGF5
ZXJUcmVlQ29udGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNT
IENBTGF5ZXI7CitPQkpDX0NMQVNTIENBQ29udGV4dDsKKworbmFtZXNwYWNlIFdURiB7CitjbGFz
cyBNYWNoU2VuZFJpZ2h0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgTGF5ZXJI
b3N0aW5nQ29udGV4dElEID0gdWludDMyX3Q7CisgICAgCitzdHJ1Y3QgTGF5ZXJIb3N0aW5nQ29u
dGV4dE9wdGlvbnMgeworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgYm9vbCBjYW5TaG93
V2hpbGVMb2NrZWQgeyBmYWxzZSB9OworI2VuZGlmCit9OworCitjbGFzcyBMYXllckhvc3RpbmdD
b250ZXh0IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMYXllckhvc3RpbmdDb250ZXh0KTsg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBjcmVhdGVGb3JQb3J0KGNvbnN0IFdURjo6TWFjaFNl
bmRSaWdodCYgc2VydmVyUG9ydCk7CisgICAgCisjaWYgSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlF
Ul9IT1NUSU5HKQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4
dD4gY3JlYXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2Vzcyhjb25zdCBMYXllckhvc3RpbmdDb250
ZXh0T3B0aW9ucyYgPSB7IH0pOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gY3JlYXRlRm9yRXh0ZXJuYWxQbHVnaW5I
b3N0aW5nUHJvY2VzcygpOworI2VuZGlmCisKKyAgICBzdGF0aWMgUmV0YWluUHRyPENBTGF5ZXI+
IGNyZWF0ZVBsYXRmb3JtTGF5ZXJGb3JIb3N0aW5nQ29udGV4dChMYXllckhvc3RpbmdDb250ZXh0
SUQpOworCisjZW5kaWYgLy8gSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQorCisg
ICAgTGF5ZXJIb3N0aW5nQ29udGV4dCgpOworICAgIH5MYXllckhvc3RpbmdDb250ZXh0KCk7CisK
KyAgICB2b2lkIHNldFJvb3RMYXllcihDQUxheWVyICopOworICAgIENBTGF5ZXIgKnJvb3RMYXll
cigpIGNvbnN0OworCisgICAgTGF5ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJRCgpIGNvbnN0
OworICAgIHZvaWQgaW52YWxpZGF0ZSgpOworCisgICAgTGF5ZXJIb3N0aW5nTW9kZSBsYXllckhv
c3RpbmdNb2RlKCkgeyByZXR1cm4gbV9sYXllckhvc3RpbmdNb2RlOyB9CisKKyAgICB2b2lkIHNl
dENvbG9yU3BhY2UoQ0dDb2xvclNwYWNlUmVmKTsKKyAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JT
cGFjZSgpIGNvbnN0OworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZvaWQgc2V0Q29sb3JNYXRj
aFVudGFnZ2VkQ29udGVudChib29sKTsKKyAgICBib29sIGNvbG9yTWF0Y2hVbnRhZ2dlZENvbnRl
bnQoKSBjb25zdDsKKyNlbmRpZgorCisgICAgLy8gRmVuY2VzIG9ubHkgd29yayBvbiBpT1MgYW5k
IE9TIDEwLjEwKy4KKyAgICB2b2lkIHNldEZlbmNlUG9ydChtYWNoX3BvcnRfdCk7CisKKyAgICAv
LyBjcmVhdGVGZW5jZVBvcnQgZG9lcyBub3QgaW5zdGFsbCB0aGUgZmVuY2UgcG9ydCBvbiB0aGUg
TGF5ZXJIb3N0aW5nQ29udGV4dCdzCisgICAgLy8gQ0FDb250ZXh0OyBjYWxsIHNldEZlbmNlUG9y
dCgpIHdpdGggdGhlIG5ld2x5IGNyZWF0ZWQgcG9ydCBpZiBzeW5jaHJvbml6YXRpb24KKyAgICAv
LyB3aXRoIHRoaXMgY29udGV4dCBpcyBkZXNpcmVkLgorICAgIFdURjo6TWFjaFNlbmRSaWdodCBj
cmVhdGVGZW5jZVBvcnQoKTsKKworcHJpdmF0ZToKKyAgICBMYXllckhvc3RpbmdNb2RlIG1fbGF5
ZXJIb3N0aW5nTW9kZTsKKyAgICBSZXRhaW5QdHI8Q0FDb250ZXh0PiBtX2NvbnRleHQ7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9jb2NvYS9MYXllckhvc3RpbmdDb250ZXh0Lm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9jb2NvYS9MYXllckhvc3RpbmdDb250ZXh0Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0NjU0NDg0NTYxNWQ2
NTExNjMwMTE0YjZiOGQ1YjMyZTRhN2Y4MDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL2NvY29hL0xheWVySG9zdGluZ0NvbnRleHQubW0KQEAgLTAsMCArMSwxNjAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTGF5ZXJI
b3N0aW5nQ29udGV4dC5oIgorCisjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVDQUxheWVyRXh0cmFz
Lmg+CisjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgorI2ltcG9ydCA8cGFs
L3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CisjaW1wb3J0IDx3dGYvTWFjaFNlbmRSaWdodC5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0Nv
bnRleHQ+IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvclBvcnQoY29uc3QgTWFjaFNlbmRS
aWdodCYgc2VydmVyUG9ydCkKK3sKKyAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBtYWtl
VW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7CisKKyAgICBOU0RpY3Rpb25hcnkgKm9wdGlv
bnMgPSBAeworICAgICAgICBrQ0FDb250ZXh0UG9ydE51bWJlciA6IEAoc2VydmVyUG9ydC5zZW5k
UmlnaHQoKSksCisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBrQ0FDb250ZXh0Q0lGaWx0ZXJC
ZWhhdmlvciA6IEAiaWdub3JlIiwKKyNlbmRpZgorICAgIH07CisKKyAgICBsYXllckhvc3RpbmdD
b250ZXh0LT5tX2xheWVySG9zdGluZ01vZGUgPSBMYXllckhvc3RpbmdNb2RlOjpJblByb2Nlc3M7
CisgICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9jb250ZXh0ID0gW0NBQ29udGV4dCByZW1vdGVD
b250ZXh0V2l0aE9wdGlvbnM6b3B0aW9uc107CisKKyAgICByZXR1cm4gbGF5ZXJIb3N0aW5nQ29u
dGV4dDsKK30KKworI2lmIEhBVkUoT1VUX09GX1BST0NFU1NfTEFZRVJfSE9TVElORykKK3N0ZDo6
dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVh
dGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9jZXNzKGNvbnN0IExheWVySG9zdGluZ0NvbnRleHRPcHRp
b25zJiBvcHRpb25zKQoreworICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IG1ha2VVbmlx
dWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKKyAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2xh
eWVySG9zdGluZ01vZGUgPSBMYXllckhvc3RpbmdNb2RlOjpPdXRPZlByb2Nlc3M7CisKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisgICAgLy8gVXNl
IGEgdmVyeSBsYXJnZSBkaXNwbGF5IElEIHRvIGVuc3VyZSB0aGF0IHRoZSBjb250ZXh0IGlzIG5l
dmVyIHB1dCBvbi1zY3JlZW4gCisgICAgLy8gd2l0aG91dCBiZWluZyBleHBsaWNpdGx5IHBhcmVu
dGVkLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzE2MDg5MjY3PiBmb3IgZGV0YWlscy4KKyAgICBsYXll
ckhvc3RpbmdDb250ZXh0LT5tX2NvbnRleHQgPSBbQ0FDb250ZXh0IHJlbW90ZUNvbnRleHRXaXRo
T3B0aW9uczpAeworICAgICAgICBrQ0FDb250ZXh0U2VjdXJlOiBAKG9wdGlvbnMuY2FuU2hvd1do
aWxlTG9ja2VkKSwKKyNpZiBIQVZFKENPUkVfQU5JTUFUSU9OX1JFTkRFUl9TRVJWRVIpCisgICAg
ICAgIGtDQUNvbnRleHRJZ25vcmVzSGl0VGVzdCA6IEBZRVMsCisgICAgICAgIGtDQUNvbnRleHRE
aXNwbGF5SWQgOiBAMTAwMDAKKyNlbmRpZgorICAgIH1dOworI2VsaWYgIVBMQVRGT1JNKE1BQ0NB
VEFMWVNUKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCisgICAg
W0NBQ29udGV4dCBzZXRBbGxvd3NDR1NDb25uZWN0aW9uczpOT107CisgICAgbGF5ZXJIb3N0aW5n
Q29udGV4dC0+bV9jb250ZXh0ID0gW0NBQ29udGV4dCByZW1vdGVDb250ZXh0V2l0aE9wdGlvbnM6
QHsKKyAgICAgICAga0NBQ29udGV4dENJRmlsdGVyQmVoYXZpb3IgOiAgQCJpZ25vcmUiLAorICAg
IH1dOworI2Vsc2UKKyAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2NvbnRleHQgPSBbQ0FDb250
ZXh0IGNvbnRleHRXaXRoQ0dTQ29ubmVjdGlvbjpDR1NNYWluQ29ubmVjdGlvbklEKCkgb3B0aW9u
czpAeworICAgICAgICBrQ0FDb250ZXh0Q0lGaWx0ZXJCZWhhdmlvciA6IEAiaWdub3JlIiwKKyAg
ICB9XTsKKyNlbmRpZgorICAgIAorICAgIHJldHVybiBsYXllckhvc3RpbmdDb250ZXh0OworfQor
CisjaWYgUExBVEZPUk0oTUFDKQorc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+
IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsUGx1Z2luSG9zdGluZ1Byb2Nl
c3MoKQoreworICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8TGF5ZXJI
b3N0aW5nQ29udGV4dD4oKTsKKyAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2xheWVySG9zdGlu
Z01vZGUgPSBMYXllckhvc3RpbmdNb2RlOjpPdXRPZlByb2Nlc3M7CisgICAgbGF5ZXJIb3N0aW5n
Q29udGV4dC0+bV9jb250ZXh0ID0gW0NBQ29udGV4dCBjb250ZXh0V2l0aENHU0Nvbm5lY3Rpb246
Q0dTTWFpbkNvbm5lY3Rpb25JRCgpIG9wdGlvbnM6QHsga0NBQ29udGV4dENJRmlsdGVyQmVoYXZp
b3IgOiBAImlnbm9yZSIgfV07CisgICAgcmV0dXJuIGxheWVySG9zdGluZ0NvbnRleHQ7Cit9Cisj
ZW5kaWYKKworUmV0YWluUHRyPENBTGF5ZXI+IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZVBs
YXRmb3JtTGF5ZXJGb3JIb3N0aW5nQ29udGV4dChMYXllckhvc3RpbmdDb250ZXh0SUQgY29udGV4
dElEKQoreworICAgIHJldHVybiBbQ0FMYXllciBfd2ViX3JlbmRlckxheWVyV2l0aENvbnRleHRJ
RDpjb250ZXh0SURdOworfQorCisjZW5kaWYgLy8gSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9I
T1NUSU5HKQorCitMYXllckhvc3RpbmdDb250ZXh0OjpMYXllckhvc3RpbmdDb250ZXh0KCkKK3sK
K30KKworTGF5ZXJIb3N0aW5nQ29udGV4dDo6fkxheWVySG9zdGluZ0NvbnRleHQoKQoreworfQor
Cit2b2lkIExheWVySG9zdGluZ0NvbnRleHQ6OnNldFJvb3RMYXllcihDQUxheWVyICpyb290TGF5
ZXIpCit7CisgICAgW21fY29udGV4dCBzZXRMYXllcjpyb290TGF5ZXJdOworfQorCitDQUxheWVy
ICpMYXllckhvc3RpbmdDb250ZXh0Ojpyb290TGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBb
bV9jb250ZXh0IGxheWVyXTsKK30KKworTGF5ZXJIb3N0aW5nQ29udGV4dElEIExheWVySG9zdGlu
Z0NvbnRleHQ6OmNvbnRleHRJRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2NvbnRleHQgY29u
dGV4dElkXTsKK30KKwordm9pZCBMYXllckhvc3RpbmdDb250ZXh0OjppbnZhbGlkYXRlKCkKK3sK
KyAgICBbbV9jb250ZXh0IGludmFsaWRhdGVdOworfQorCit2b2lkIExheWVySG9zdGluZ0NvbnRl
eHQ6OnNldENvbG9yU3BhY2UoQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UpCit7CisgICAgW21f
Y29udGV4dCBzZXRDb2xvclNwYWNlOmNvbG9yU3BhY2VdOworfQorCitDR0NvbG9yU3BhY2VSZWYg
TGF5ZXJIb3N0aW5nQ29udGV4dDo6Y29sb3JTcGFjZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFtt
X2NvbnRleHQgY29sb3JTcGFjZV07Cit9CisKKyNpZiBQTEFURk9STShNQUMpCit2b2lkIExheWVy
SG9zdGluZ0NvbnRleHQ6OnNldENvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQoYm9vbCBjb2xvck1h
dGNoVW50YWdnZWRDb250ZW50KQoreworICAgIFttX2NvbnRleHQgc2V0Q29sb3JNYXRjaFVudGFn
Z2VkQ29udGVudDpjb2xvck1hdGNoVW50YWdnZWRDb250ZW50XTsKK30KKworYm9vbCBMYXllckhv
c3RpbmdDb250ZXh0Ojpjb2xvck1hdGNoVW50YWdnZWRDb250ZW50KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gW21fY29udGV4dCBjb2xvck1hdGNoVW50YWdnZWRDb250ZW50XTsKK30KKyNlbmRpZgor
Cit2b2lkIExheWVySG9zdGluZ0NvbnRleHQ6OnNldEZlbmNlUG9ydChtYWNoX3BvcnRfdCBmZW5j
ZVBvcnQpCit7CisgICAgW21fY29udGV4dCBzZXRGZW5jZVBvcnQ6ZmVuY2VQb3J0XTsKK30KKwor
TWFjaFNlbmRSaWdodCBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGZW5jZVBvcnQoKQorewor
ICAgIHJldHVybiBNYWNoU2VuZFJpZ2h0OjphZG9wdChbbV9jb250ZXh0IGNyZWF0ZUZlbmNlUG9y
dF0pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vaW9zL1BheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlci5tbSBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vaW9zL1BheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlci5tbQpp
bmRleCBmMTYzMWJhMGZjYzcyOWQwNjg0ZDg3Y2ZhNjJmYTY2ODkxNzg2NzQzLi41Yjg0ZWZlYjMx
NGE0NTkxMjlkNzEzNzA0MWI4N2M2M2RjMTYxYzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL2lvcy9QYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXIubW0KKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9pb3MvUGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyLm1t
CkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBvcnQgIldLUGF5bWVudEF1dGhvcml6YXRpb25EZWxl
Z2F0ZS5oIgogI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgorI2ltcG9ydCA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAKIEBpbnRlcmZhY2UgV0tQYXltZW50QXV0aG9yaXph
dGlvbkNvbnRyb2xsZXJEZWxlZ2F0ZSA6IFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSA8
UEtQYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXJEZWxlZ2F0ZSwgUEtQYXltZW50QXV0aG9y
aXphdGlvbkNvbnRyb2xsZXJQcml2YXRlRGVsZWdhdGU+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOTljYWRmZTZkYjE2ZmNjOTQzYThmMTkyZTVkMDFmZjhjMDE0NzY4ZS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw5NyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkxheWVy
VHJlZUNvbnRleHQuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19DTEFTUyBD
QUxheWVyOwotT0JKQ19DTEFTUyBDQUNvbnRleHQ7Ci0KLW5hbWVzcGFjZSBXVEYgewotY2xhc3Mg
TWFjaFNlbmRSaWdodDsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXVzaW5nIExheWVySG9z
dGluZ0NvbnRleHRJRCA9IHVpbnQzMl90OwotICAgIAotc3RydWN0IExheWVySG9zdGluZ0NvbnRl
eHRPcHRpb25zIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGJvb2wgY2FuU2hvd1do
aWxlTG9ja2VkIHsgZmFsc2UgfTsKLSNlbmRpZgotfTsKLQotY2xhc3MgTGF5ZXJIb3N0aW5nQ29u
dGV4dCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTGF5ZXJIb3N0aW5nQ29udGV4dCk7IFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gY3JlYXRlRm9yUG9ydChjb25zdCBXVEY6Ok1hY2hTZW5k
UmlnaHQmIHNlcnZlclBvcnQpOwotICAgIAotI2lmIEhBVkUoT1VUX09GX1BST0NFU1NfTEFZRVJf
SE9TVElORykKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+
IGNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoY29uc3QgTGF5ZXJIb3N0aW5nQ29udGV4
dE9wdGlvbnMmID0geyB9KTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IGNyZWF0ZUZvckV4dGVybmFsUGx1Z2luSG9z
dGluZ1Byb2Nlc3MoKTsKLSNlbmRpZgotICAgIAotI2VuZGlmIC8vIEhBVkUoT1VUX09GX1BST0NF
U1NfTEFZRVJfSE9TVElORykKLQotICAgIExheWVySG9zdGluZ0NvbnRleHQoKTsKLSAgICB+TGF5
ZXJIb3N0aW5nQ29udGV4dCgpOwotCi0gICAgdm9pZCBzZXRSb290TGF5ZXIoQ0FMYXllciAqKTsK
LSAgICBDQUxheWVyICpyb290TGF5ZXIoKSBjb25zdDsKLQotICAgIExheWVySG9zdGluZ0NvbnRl
eHRJRCBjb250ZXh0SUQoKSBjb25zdDsKLSAgICB2b2lkIGludmFsaWRhdGUoKTsKLQotICAgIExh
eWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9kZSgpIHsgcmV0dXJuIG1fbGF5ZXJIb3N0aW5n
TW9kZTsgfQotCi0gICAgdm9pZCBzZXRDb2xvclNwYWNlKENHQ29sb3JTcGFjZVJlZik7Ci0gICAg
Q0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UoKSBjb25zdDsKLQotI2lmIFBMQVRGT1JNKE1BQykK
LSAgICB2b2lkIHNldENvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQoYm9vbCk7Ci0gICAgYm9vbCBj
b2xvck1hdGNoVW50YWdnZWRDb250ZW50KCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgIC8vIEZlbmNl
cyBvbmx5IHdvcmsgb24gaU9TIGFuZCBPUyAxMC4xMCsuCi0gICAgdm9pZCBzZXRGZW5jZVBvcnQo
bWFjaF9wb3J0X3QpOwotCi0gICAgLy8gY3JlYXRlRmVuY2VQb3J0IGRvZXMgbm90IGluc3RhbGwg
dGhlIGZlbmNlIHBvcnQgb24gdGhlIExheWVySG9zdGluZ0NvbnRleHQncwotICAgIC8vIENBQ29u
dGV4dDsgY2FsbCBzZXRGZW5jZVBvcnQoKSB3aXRoIHRoZSBuZXdseSBjcmVhdGVkIHBvcnQgaWYg
c3luY2hyb25pemF0aW9uCi0gICAgLy8gd2l0aCB0aGlzIGNvbnRleHQgaXMgZGVzaXJlZC4KLSAg
ICBXVEY6Ok1hY2hTZW5kUmlnaHQgY3JlYXRlRmVuY2VQb3J0KCk7Ci0KLXByaXZhdGU6Ci0gICAg
TGF5ZXJIb3N0aW5nTW9kZSBtX2xheWVySG9zdGluZ01vZGU7Ci0gICAgUmV0YWluUHRyPENBQ29u
dGV4dD4gbV9jb250ZXh0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0gYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1tCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YWVlNDdlYWI5NWY1OGE2YjQxNzg1YzBmNGZmN2YwMmIw
NGNmNDQzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0KKysrIC9kZXYv
bnVsbApAQCAtMSwxNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmln
LmgiCi0jaW1wb3J0ICJMYXllckhvc3RpbmdDb250ZXh0LmgiCi0KLSNpbXBvcnQgPHBhbC9zcGkv
Y2cvQ29yZUdyYXBoaWNzU1BJLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVT
UEkuaD4KLSNpbXBvcnQgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi1zdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29u
dGV4dDo6Y3JlYXRlRm9yUG9ydChjb25zdCBNYWNoU2VuZFJpZ2h0JiBzZXJ2ZXJQb3J0KQotewot
ICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8TGF5ZXJIb3N0aW5nQ29u
dGV4dD4oKTsKLQotICAgIE5TRGljdGlvbmFyeSAqb3B0aW9ucyA9IEB7Ci0gICAgICAgIGtDQUNv
bnRleHRQb3J0TnVtYmVyIDogQChzZXJ2ZXJQb3J0LnNlbmRSaWdodCgpKSwKLSNpZiBQTEFURk9S
TShNQUMpCi0gICAgICAgIGtDQUNvbnRleHRDSUZpbHRlckJlaGF2aW9yIDogQCJpZ25vcmUiLAot
I2VuZGlmCi0gICAgfTsKLQotICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fbGF5ZXJIb3N0aW5n
TW9kZSA9IExheWVySG9zdGluZ01vZGU6OkluUHJvY2VzczsKLSAgICBsYXllckhvc3RpbmdDb250
ZXh0LT5tX2NvbnRleHQgPSBbQ0FDb250ZXh0IHJlbW90ZUNvbnRleHRXaXRoT3B0aW9uczpvcHRp
b25zXTsKLQotICAgIHJldHVybiBsYXllckhvc3RpbmdDb250ZXh0OwotfQotCi0jaWYgSEFWRShP
VVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQotc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGlu
Z0NvbnRleHQ+IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1By
b2Nlc3MoY29uc3QgTGF5ZXJIb3N0aW5nQ29udGV4dE9wdGlvbnMmIG9wdGlvbnMpCi17Ci0gICAg
YXV0byBsYXllckhvc3RpbmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0
PigpOwotICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fbGF5ZXJIb3N0aW5nTW9kZSA9IExheWVy
SG9zdGluZ01vZGU6Ok91dE9mUHJvY2VzczsKLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYm
ICFQTEFURk9STShNQUNDQVRBTFlTVCkKLSAgICAvLyBVc2UgYSB2ZXJ5IGxhcmdlIGRpc3BsYXkg
SUQgdG8gZW5zdXJlIHRoYXQgdGhlIGNvbnRleHQgaXMgbmV2ZXIgcHV0IG9uLXNjcmVlbiAKLSAg
ICAvLyB3aXRob3V0IGJlaW5nIGV4cGxpY2l0bHkgcGFyZW50ZWQuIFNlZSA8cmRhcjovL3Byb2Js
ZW0vMTYwODkyNjc+IGZvciBkZXRhaWxzLgotICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fY29u
dGV4dCA9IFtDQUNvbnRleHQgcmVtb3RlQ29udGV4dFdpdGhPcHRpb25zOkB7Ci0gICAgICAgIGtD
QUNvbnRleHRTZWN1cmU6IEAob3B0aW9ucy5jYW5TaG93V2hpbGVMb2NrZWQpLAotI2lmIEhBVkUo
Q09SRV9BTklNQVRJT05fUkVOREVSX1NFUlZFUikKLSAgICAgICAga0NBQ29udGV4dElnbm9yZXNI
aXRUZXN0IDogQFlFUywKLSAgICAgICAga0NBQ29udGV4dERpc3BsYXlJZCA6IEAxMDAwMAotI2Vu
ZGlmCi0gICAgfV07Ci0jZWxpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpICYmIEVOQUJMRShXRUJQ
Uk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKLSAgICBbQ0FDb250ZXh0IHNldEFsbG93c0NH
U0Nvbm5lY3Rpb25zOk5PXTsKLSAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2NvbnRleHQgPSBb
Q0FDb250ZXh0IHJlbW90ZUNvbnRleHRXaXRoT3B0aW9uczpAewotICAgICAgICBrQ0FDb250ZXh0
Q0lGaWx0ZXJCZWhhdmlvciA6ICBAImlnbm9yZSIsCi0gICAgfV07Ci0jZWxzZQotICAgIGxheWVy
SG9zdGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQgY29udGV4dFdpdGhDR1NDb25u
ZWN0aW9uOkNHU01haW5Db25uZWN0aW9uSUQoKSBvcHRpb25zOkB7Ci0gICAgICAgIGtDQUNvbnRl
eHRDSUZpbHRlckJlaGF2aW9yIDogQCJpZ25vcmUiLAotICAgIH1dOwotI2VuZGlmCi0gICAgCi0g
ICAgcmV0dXJuIGxheWVySG9zdGluZ0NvbnRleHQ7Ci19Ci0KLSNpZiBQTEFURk9STShNQUMpCi1z
dGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6
Y3JlYXRlRm9yRXh0ZXJuYWxQbHVnaW5Ib3N0aW5nUHJvY2VzcygpCi17Ci0gICAgYXV0byBsYXll
ckhvc3RpbmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOwotICAg
IGxheWVySG9zdGluZ0NvbnRleHQtPm1fbGF5ZXJIb3N0aW5nTW9kZSA9IExheWVySG9zdGluZ01v
ZGU6Ok91dE9mUHJvY2VzczsKLSAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2NvbnRleHQgPSBb
Q0FDb250ZXh0IGNvbnRleHRXaXRoQ0dTQ29ubmVjdGlvbjpDR1NNYWluQ29ubmVjdGlvbklEKCkg
b3B0aW9uczpAeyBrQ0FDb250ZXh0Q0lGaWx0ZXJCZWhhdmlvciA6IEAiaWdub3JlIiB9XTsKLSAg
ICByZXR1cm4gbGF5ZXJIb3N0aW5nQ29udGV4dDsKLX0KLSNlbmRpZgotI2VuZGlmIC8vIEhBVkUo
T1VUX09GX1BST0NFU1NfTEFZRVJfSE9TVElORykKLQotTGF5ZXJIb3N0aW5nQ29udGV4dDo6TGF5
ZXJIb3N0aW5nQ29udGV4dCgpCi17Ci19Ci0KLUxheWVySG9zdGluZ0NvbnRleHQ6On5MYXllckhv
c3RpbmdDb250ZXh0KCkKLXsKLX0KLQotdm9pZCBMYXllckhvc3RpbmdDb250ZXh0OjpzZXRSb290
TGF5ZXIoQ0FMYXllciAqcm9vdExheWVyKQotewotICAgIFttX2NvbnRleHQgc2V0TGF5ZXI6cm9v
dExheWVyXTsKLX0KLQotQ0FMYXllciAqTGF5ZXJIb3N0aW5nQ29udGV4dDo6cm9vdExheWVyKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gW21fY29udGV4dCBsYXllcl07Ci19Ci0KLUxheWVySG9zdGlu
Z0NvbnRleHRJRCBMYXllckhvc3RpbmdDb250ZXh0Ojpjb250ZXh0SUQoKSBjb25zdAotewotICAg
IHJldHVybiBbbV9jb250ZXh0IGNvbnRleHRJZF07Ci19Ci0KLXZvaWQgTGF5ZXJIb3N0aW5nQ29u
dGV4dDo6aW52YWxpZGF0ZSgpCi17Ci0gICAgW21fY29udGV4dCBpbnZhbGlkYXRlXTsKLX0KLQot
dm9pZCBMYXllckhvc3RpbmdDb250ZXh0OjpzZXRDb2xvclNwYWNlKENHQ29sb3JTcGFjZVJlZiBj
b2xvclNwYWNlKQotewotICAgIFttX2NvbnRleHQgc2V0Q29sb3JTcGFjZTpjb2xvclNwYWNlXTsK
LX0KLQotQ0dDb2xvclNwYWNlUmVmIExheWVySG9zdGluZ0NvbnRleHQ6OmNvbG9yU3BhY2UoKSBj
b25zdAotewotICAgIHJldHVybiBbbV9jb250ZXh0IGNvbG9yU3BhY2VdOwotfQotCi0jaWYgUExB
VEZPUk0oTUFDKQotdm9pZCBMYXllckhvc3RpbmdDb250ZXh0OjpzZXRDb2xvck1hdGNoVW50YWdn
ZWRDb250ZW50KGJvb2wgY29sb3JNYXRjaFVudGFnZ2VkQ29udGVudCkKLXsKLSAgICBbbV9jb250
ZXh0IHNldENvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQ6Y29sb3JNYXRjaFVudGFnZ2VkQ29udGVu
dF07Ci19Ci0KLWJvb2wgTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y29sb3JNYXRjaFVudGFnZ2VkQ29u
dGVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX2NvbnRleHQgY29sb3JNYXRjaFVudGFnZ2Vk
Q29udGVudF07Ci19Ci0jZW5kaWYKLQotdm9pZCBMYXllckhvc3RpbmdDb250ZXh0OjpzZXRGZW5j
ZVBvcnQobWFjaF9wb3J0X3QgZmVuY2VQb3J0KQotewotICAgIFttX2NvbnRleHQgc2V0RmVuY2VQ
b3J0OmZlbmNlUG9ydF07Ci19Ci0KLU1hY2hTZW5kUmlnaHQgTGF5ZXJIb3N0aW5nQ29udGV4dDo6
Y3JlYXRlRmVuY2VQb3J0KCkKLXsKLSAgICByZXR1cm4gTWFjaFNlbmRSaWdodDo6YWRvcHQoW21f
Y29udGV4dCBjcmVhdGVGZW5jZVBvcnRdKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMDg3NmFkZDEzNTQzZWU4ZmNlZWJhNjM1YmE5OTkzNmVk
N2M4NmM1Ni4uMTcwYWMwMzA5NGE0ZTM1Y2QyYmM3ZjEzOGMzYzM1ZGVhNGNiZTIwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dApAQCAtNjksNiArNjksNyBAQCBQbGF0Zm9ybS9jZy9DR1V0aWxpdGll
cy5jcHAKIFBsYXRmb3JtL2NsYXNzaWZpZXIvY29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Ns
YXNzaWZpZXJDb2NvYS5jcHAKIFBsYXRmb3JtL2NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0NsYXNzaWZpZXIuY3BwCiAKK1BsYXRmb3JtL2NvY29hL0xheWVySG9zdGluZ0NvbnRleHQu
bW0KIFBsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLm1tCiBQbGF0
Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLm1tCiBQbGF0Zm9y
bS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAKQEAgLTg0LDcgKzg1LDYgQEAgUGxhdGZvcm0v
aW9zL1BheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlci5tbQogUGxhdGZvcm0vSVBDL2NvY29h
L0Nvbm5lY3Rpb25Db2NvYS5tbQogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hNZXNzYWdlLmNwcAog
Ci1QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQogUGxhdGZvcm0vbWFjL01hY2hV
dGlsaXRpZXMuY3BwCiBQbGF0Zm9ybS9tYWMvTWVudVV0aWxpdGllcy5tbQogUGxhdGZvcm0vbWFj
L1N0cmluZ1V0aWxpdGllcy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYWZiZGMyNTc1ZTQ0ODE4NWU0YmNiYzg0MmU0ZjdhNTQ0MzEz
YjQzOS4uYTY1ZjMwNDM2Y2ExYzcxM2ZmYTlhZjA5ZTAxMWJiMWIwYTRiNmI2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NTExLDgg
KzU1MTEsNiBAQAogCQkxQTdFODE0RTExNTJEMjI0MDAwMzY5NUIgLyogbWFjICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlCQ0UwOTM3NjE0RkIxMjhCMDAx
MTM4RDkgLyogTGF5ZXJIb3N0aW5nQ29udGV4dC5oICovLAotCQkJCUJDRTA5Mzc1MTRGQjEyOEIw
MDExMzhEOSAvKiBMYXllckhvc3RpbmdDb250ZXh0Lm1tICovLAogCQkJCTFBMjRCNUYwMTFGNTMx
RTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0aWVzLmNwcCAqLywKIAkJCQkxQTI0QjVGMTExRjUzMUU4
MDBDMzgyNjkgLyogTWFjaFV0aWxpdGllcy5oICovLAogCQkJCTUxOTMzREVCMTk2NUVCMjQwMDhB
QzNFQSAvKiBNZW51VXRpbGl0aWVzLmggKi8sCkBAIC03MTk5LDYgKzcxOTcsOCBAQAogCQk0NDUw
QUVCRTFEQzNGQUFDMDA5OTQzRjIgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCUJDRTA5Mzc2MTRGQjEyOEIwMDExMzhEOSAvKiBMYXllckhv
c3RpbmdDb250ZXh0LmggKi8sCisJCQkJQkNFMDkzNzUxNEZCMTI4QjAwMTEzOEQ5IC8qIExheWVy
SG9zdGluZ0NvbnRleHQubW0gKi8sCiAJCQkJQTE3OThCM0QyMjJEOTdBMjAwMDc2NEJEIC8qIFBh
eW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmggKi8sCiAJCQkJQTE3OThCNEEyMjJGMTMzQTAw
MDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLm1tICovLAogCQkJCUExNzk4
QjNGMjIyRDk4QjYwMDA3NjRCRCAvKiBQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
LmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggY2M5ODU3MzE0MzEzOWMw
YTUzNTM5OWNkYmFiYzJmYTI3ZmE0OTk2NC4uZDVkMTBkNzkzYzc3MDcwZTlkZTgzMWQ5ZTMwN2Ez
MjVlYTFhZTBkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtNDMsMTEgKzQz
LDExIEBACiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogbmFtZXNwYWNlIFdlYkNvcmUgeworI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogZXh0ZXJuIFdURkxvZ0NoYW5uZWwgTG9nTWVkaWE7Ci19
CiAjZW5kaWYKK30KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKQEAgLTg2LDcgKzg2LDE2IEBAIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6fk1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZSgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwcmVw
YXJlRm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgTWVkaWFQbGF5ZXI6OlByZWxvYWQgcHJl
bG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlKQogewotICAgIG1fbWFuYWdl
ci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UHJlcGFyZUZvclBsYXliYWNrKG1faWQsIHByaXZh
dGVNb2RlLCBwcmVsb2FkLCBwcmVzZXJ2ZXNQaXRjaCwgcHJlcGFyZSksIDApOworICAgIGF1dG8g
bGF5b3V0UmVjdCA9IG1fcGxheWVyLT5wbGF5ZXJDb250ZW50Qm94UmVjdCgpOworICAgIGF1dG8g
c2NhbGUgPSBtX3BsYXllci0+cGxheWVyQ29udGVudHNTY2FsZSgpOworCisgICAgbV9tYW5hZ2Vy
LmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlByZXBhcmVGb3JQbGF5YmFj
ayhtX2lkLCBwcml2YXRlTW9kZSwgcHJlbG9hZCwgcHJlc2VydmVzUGl0Y2gsIHByZXBhcmUsIGxh
eW91dFJlY3QubG9jYXRpb24oKSwgbGF5b3V0UmVjdC5zaXplKCksIHNjYWxlKSwgW3dlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzXShhdXRvIGNvbnRleHRJZCkgbXV0YWJsZSB7Cisg
ICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9s
YXllckhvc3RpbmdDb250ZXh0SWQgPSBjb250ZXh0SWQ7CisgICAgICAgIG1fdmlkZW9MYXllciA9
IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZVBsYXRmb3JtTGF5ZXJGb3JIb3N0aW5nQ29udGV4
dChjb250ZXh0SWQpOworICAgIH0pOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2FkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBD
b250ZW50VHlwZSYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQpAQCAtMTE5
LDcgKzEyOCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGNvCiAKICAgICBjb25uZWN0aW9uLnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6
OkxvYWQobV9pZCwgdXJsLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBjb250ZW50VHlwZSwga2V5
U3lzdGVtKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShhdXRvJiYgY29uZmlndXJh
dGlvbikgewogICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICB3ZWFrVGhpcy0+bV9j
b25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5tX2Nv
bmZpZ3VyYXRpb24gPSBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pOwogICAgIH0pOwogfQogCkBAIC0y
ODksNiArMjk4LDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzaXplQ2hhbmdl
ZChXZWJDb3JlOjpGbG9hdFNpemUgbmF0dXJhbFNpemUpCiAgICAgbV9wbGF5ZXItPnNpemVDaGFu
Z2VkKCk7CiB9CiAKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpmaXJzdFZpZGVvRnJh
bWVBdmFpbGFibGUoKQoreworICAgIG1fcGxheWVyLT5maXJzdFZpZGVvRnJhbWVBdmFpbGFibGUo
KTsKK30KKwogU3RyaW5nIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZW5naW5lRGVzY3JpcHRp
b24oKSBjb25zdAogewogICAgIHJldHVybiBtX2NvbmZpZ3VyYXRpb24uZW5naW5lRGVzY3JpcHRp
b247CkBAIC0zNDQsMTEgKzM1OCw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpw
cmVwYXJlRm9yUmVuZGVyaW5nKCkKICAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHk6OlByZXBhcmVGb3JSZW5kZXJpbmcobV9pZCksIDApOwogfQogCi12b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6c2V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQotewot
ICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0U2l6ZShtX2lkLCBzaXpl
KSwgMCk7Ci19Ci0KIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaXNpYmxlKGJv
b2wgdmlzaWJsZSkKIHsKICAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNl
dFZpc2libGUobV9pZCwgdmlzaWJsZSksIDApOwpAQCAtNDE2LDggKzQyNSw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2FkKE1lZGlhU3RyZWFtUHJpdmF0ZSYpCiAKIFBsYXRm
b3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGxhdGZvcm1MYXllcigpIGNvbnN0
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gbV92aWRlb0xheWVyLmdldCgpOwogfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwg
KFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDQxOTc1Y2Y1OTQ4OTUwOTRiMDY2NDQ0YTNhNGUxMmNk
NGFkMmZhZmQuLmY4ZGExZjUxMTU3MWQ2ZDQ2ZmExMGUxODk5MTQ2MmM3OGJlZmUxNTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGUuaApAQCAtNzIsNiArNzIsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCB1cGRhdGVDYWNoZWRTdGF0ZShSZW1vdGVNZWRpYVBsYXllclN0YXRlJiYpOwogICAgIHZvaWQg
Y2hhcmFjdGVyaXN0aWNDaGFuZ2VkKGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8sIFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1vdmllTG9hZFR5cGUpOwogICAgIHZvaWQgc2l6ZUNoYW5n
ZWQoV2ViQ29yZTo6RmxvYXRTaXplKTsKKyAgICB2b2lkIGZpcnN0VmlkZW9GcmFtZUF2YWlsYWJs
ZSgpOwogCiAgICAgdm9pZCByZXF1ZXN0UmVzb3VyY2UoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50
aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRpb25zKTsKICAgICB2b2lkIHJlbW92ZVJlc291cmNlKFJl
bW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyKTsKQEAgLTEwOSw3ICsxMTAsNiBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBzaG91bGRJZ25vcmVJbnRyaW5zaWNTaXplKCkgZmluYWw7CiAKLSAgICAv
LyBVbmltcGxlbWVudGVkCiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0
IGZpbmFsOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYg
RU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKQEAgLTE4Miw4ICsxODIsNiBAQCBwcml2
YXRlOgogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzKCkgY29uc3QgZmluYWw7CiAg
ICAgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgc2V0
U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgZmluYWw7Ci0KICAgICB2b2lkIHBhaW50KFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIGZpbmFs
OwogCiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBmaW5hbDsKQEAgLTMwMiw2ICsz
MDAsOCBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXIqIG1fcGxheWVyIHsg
bnVsbHB0ciB9OwogICAgIFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXI+IG1fbWVkaWFSZXNvdXJjZUxvYWRlcjsKKyAgICB1aW50MzJfdCBtX2xheWVySG9zdGluZ0Nv
bnRleHRJZCAgeyAwIH07CisgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fdmlkZW9MYXll
cjsKICAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXImIG1fbWFuYWdlcjsKICAgICBXZWJDb3Jl
OjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgbV9yZW1vdGVFbmdpbmVJ
ZGVudGlmaWVyOwogICAgIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgbV9pZDsK
QEAgLTMxMiw2ICszMTIsNyBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDxSZW1vdGVNZWRpYVJl
c291cmNlSWRlbnRpZmllciwgUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZT4+
IG1fbWVkaWFSZXNvdXJjZXM7CiAKKyAgICBXZWJDb3JlOjpJbnRTaXplIG1fdmlkZW9TaXplOwog
ICAgIGRvdWJsZSBtX3ZvbHVtZSB7IDEgfTsKICAgICBkb3VibGUgbV9yYXRlIHsgMSB9OwogICAg
IGxvbmcgbV9wbGF0Zm9ybUVycm9yQ29kZSB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
LmNwcAppbmRleCA2ZWNiYmVhYmJjYmMzYTg1MzExMjA4NGUzZjMzNjdmN2M2YzU4NDE5Li5kNmZi
OTRkZjVhYWZlNjc5YTk5ZTNmYThkNjk5ZWMwYjJjOGQ3ZTJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXIuY3BwCkBAIC0zMDMsNiArMzAzLDEyIEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyOjpzaXplQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
CiAgICAgICAgIHBsYXllci0+c2l6ZUNoYW5nZWQobmF0dXJhbFNpemUpOwogfQogCit2b2lkIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Zmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKFdlYktpdDo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCkKK3sKKyAgICBpZiAoYXV0byBw
bGF5ZXIgPSBtX3BsYXllcnMuZ2V0KGlkKSkKKyAgICAgICAgcGxheWVyLT5maXJzdFZpZGVvRnJh
bWVBdmFpbGFibGUoKTsKK30KKwogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnJlcXVl
c3RSZXNvdXJjZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBSZW1vdGVN
ZWRpYVJlc291cmNlSWRlbnRpZmllciByZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciwgUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpMb2Fk
T3B0aW9ucyBvcHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgaWYgKGNvbnN0IGF1dG8mIHBsYXllciA9IG1fcGxheWVycy5nZXQoaWQp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgKaW5kZXggNDY4OWUwMjhiNjdkNDlmM2YyNzc5OWVh
OGVhY2Q3MjJkZmViMGI4OS4uNTg0ZDQ3NWRmZWFkZTBjZGY2Nzk4ZjM2NDhlN2IxYzlmYThjYjAy
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oCkBAIC04Nyw2ICs4Nyw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCB1cGRhdGVDYWNoZWRTdGF0ZShXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyU3RhdGUmJik7CiAgICAgdm9pZCBjaGFy
YWN0ZXJpc3RpY0NoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyLCBib29sIGhhc0F1ZGlvLCBib29sIGhhc1ZpZGVvLCBXZWJDb3JlOjpNZWRpYVBsYXllckVu
dW1zOjpNb3ZpZUxvYWRUeXBlKTsKICAgICB2b2lkIHNpemVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgV2ViQ29yZTo6RmxvYXRTaXplKTsKKyAgICB2
b2lkIGZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZShXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCByZXF1ZXN0UmVzb3VyY2UoTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlSWRlbnRpZmllciwgUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXI6OkxvYWRPcHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgcmVtb3ZlUmVzb3VyY2UoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgUmVt
b3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlci5tZXNzYWdlcy5pbgppbmRleCA1NGEwMWY4YjM1MjJhMWEyNTY2MWVlZWVlNTI3OTJjZDM0
M2QwMTNlLi41MTdiNzRkMDRjODIxM2YzNzg1OTgwMmY0ZDljNjBhMzdjN2QzZTVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjYsNiArMjYsNyBA
QAogbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewog
ICAgIE5ldHdvcmtTdGF0ZUNoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyIGlkLCBzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclN0YXRlIHN0YXRl
KQogICAgIFJlYWR5U3RhdGVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciBpZCwgc3RydWN0IFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZSBzdGF0
ZSkKKyAgICBGaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyIGlkKQogICAgIFZvbHVtZUNoYW5nZWQoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBkb3VibGUgdm9sdW1lKQogICAgIE11dGVD
aGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgYm9v
bCBtdXRlKQogICAgIFRpbWVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciBpZCwgc3RydWN0IFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZSBzdGF0
ZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBlYjZiNTZiOWQzZDNmMDc3YzVjNjNiZmRmMzdkZDhmZmQxODQ0YWY4Li5hNzJi
OWU5MTExOTBhYjdlMjIwYTIyOGEyYjdlM2Q4YjI0MGIyZGY4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMjAtMDEtMTEgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAgICAg
ICBbTWVkaWEgaW4gR1BVIHByb2Nlc3NdIEltcGxlbWVudCB0aGUgcmVtb3RlIHZpZGVvIGxheWVy
IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNjA0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMC0wMS0xMCAgRXJpYyBDYXJs
c29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVkaWEgaW4gR1BVIHBy
b2Nlc3NdIEV4dGVuZCB0aGUgR1BVIHByb2Nlc3Mgc2FuZGJveCB0byBhbGxvdyBhY2Nlc3MgdG8g
bG9jYWwgZmlsZXMgd2hlbiBuZWNlc3NhcnkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2dwdS1w
cm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IGE1MTYzM2ZmYWRiMjQwY2IyN2RiZDFkNjRhNGMzMDBiNTA4ZDFlZWUu
LmJlYTQ3YWQ0NmRhZWRlNzQ1NDRhMjgyNTc3NDk4NzYzNWY2OTM2ZDIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMv
Z3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjMxLDYgKzIzMSw5IEBAIGh0dHAvdGVz
dHMvY2FjaGUvZGlzay1jYWNoZS9kaXNrLWNhY2hlLW1lZGlhLXNtYWxsLmh0bWwgWyBTa2lwIF0K
IGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvdGV4dC10cmFjay1ibG9ja2VkLmh0bWwgWyBT
a2lwIF0KIGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvdmlkZW8tZWxlbWVudC1yZXNvdXJj
ZS10eXBlLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvbWVkaWEgWyBTa2lwIF0KK2h0dHAvdGVz
dHMvbWVkaWEvdmlkZW8tbG9hZC10d2ljZS5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL21lZGlh
L3ZpZGVvLXBsYXktcHJvZ3Jlc3MuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9tZWRpYS92aWRl
by1wcmVsb2FkLmh0bWwgWyBQYXNzIF0KIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNhY2hl
LW1lZGlha2V5c2Vzc2lvbi5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFn
ZS1jYWNoZS1tZWRpYXN0cmVhbS5odG1sIFsgU2tpcCBdCiBodHRwL3dwdC9tZWRpYXJlY29yZGVy
IFsgU2tpcCBdCg==
</data>
<flag name="review"
          id="403240"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387579</attachid>
            <date>2020-01-13 15:33:11 -0800</date>
            <delta_ts>2020-01-13 15:57:47 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-206043-20200113153311.patch</filename>
            <type>text/plain</type>
            <size>54083</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM1MWQ3NGM4ZGRhNmM2
ODdjMjY2MzdmMDM0ZTAyMzhhYjQyZDMwMS4uODY4YjIyYzAzYWUyMjM4OTk5Y2Y2ZGYxNTFkMDIz
YzRhODIxZGRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTAxLTEzICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBwcm9j
ZXNzXSBJbXBsZW1lbnQgdGhlIHJlbW90ZSB2aWRlbyBsYXllciBzdXBwb3J0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwNDMKKworICAgICAgICBS
ZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJl
ZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgZnVuY3Rpb24g
TGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlUGxhdGZvcm1MYXllckZvckhvc3RpbmdDb250ZXh0
KCkgd2hpY2ggaXMKKyAgICAgICAgYSB3cmFwcGVyIG9mIFtDQUxheWVyIF93ZWJfcmVuZGVyTGF5
ZXJXaXRoQ29udGV4dElEOl0gdG8gY3JlYXRlIFdlYlZpZGVvSG9zdGluZ0xheWVyIGluIHRoZSBX
ZWIgcHJvY2Vzcy4KKworICAgICAgICBJdCBhbHNvIG1vdmVzIExheWVySG9zdGluZ0NvbnRleHQu
W2h8bW1dIHRvIGZyb20gZm9sZGVyICJtYWMiIHRvICJjb2NvYSIgYmVjYXVzZSBMYXllckhvc3Rp
bmdDb250ZXh0CisgICAgICAgIGlzIG5vdCBvbmx5IHVzZWQgb24gdGhlIE1hYyB2ZXJzaW9uLgor
ICAgICAgICBTb21lIGlzc3VlcyByZWxhdGVkIHRvIHVuaWZpZWQgYnVpbGQgYXJlIGFsc28gZml4
ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0UmVjdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dFJlY3Q6OmRl
Y29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJF
eHRyYXMubW06CisgICAgICAgICgrW0NBTGF5ZXIgX3dlYl9yZW5kZXJMYXllcldpdGhDb250ZXh0
SUQ6XSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Np
b25WVC5tbToKKwogMjAyMC0wMS0xMCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtMRkNdIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dFRhYmxlQ2VsbEJv
eCBzaG91bGQgdGFrZSBIb3Jpem9udGFsQ29uc3RyYWludHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTU4OTk0YWJl
N2U3ODVhZjBkZWY4MDVjODFiMDdhMzVmYTZmODMwMy4uZmM0NDg5YWJiMGNlNTlmNjFhNDkwNDM0
NDU0OTQ1YjkyNDQxYWQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBAQAorMjAyMC0wMS0xMyAg
UGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYSBpbiBHUFUg
cHJvY2Vzc10gSW1wbGVtZW50IHRoZSByZW1vdGUgdmlkZW8gbGF5ZXIgc3VwcG9ydAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MDQzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBSZW1vdGVNZWRpYVBsYXll
clByb3h5IGluIHRoZSBHUFUgcHJvY2VzcyBjcmVhdGVzIGEgTGF5ZXJIb3N0aW5nQ29udGV4dCB3
aXRoIGNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoKQorICAgICAgICBhbmQgc2hhcmUg
dGhlIGNvbnRleHQgSUQgd2l0aCB0aGUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlIGluIHRoZSBX
ZWIgcHJvY2Vzcy4KKyAgICAgICAgVGhlbiB0aGUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlIGNy
ZWF0ZXMgYSBob3N0aW5nIGxheWVyIHdpdGggdGhlIGNvbnRleHQgSUQgZm9yIHJlbmRlcmluZy4K
KworICAgICAgICBUaGlzIHBhdGNoIHVwZGF0ZXMgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHk6OlByZXBhcmVGb3JQbGF5YmFjayB0byBwcm92aWRlIHRoZSBpbml0aWFsIHZpZGVvIGNvbnRl
bnQgYm94IGFuZCBzY2FsZQorICAgICAgICBmb3IgdGhlIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFu
YWdlck9iakMgb24gdGhlIEdQVSBwcm9jZXNzIHRvIGNyZWF0ZSBXZWJWaWRlb0NvbnRhaW5lckxh
eWVyLgorICAgICAgICBJdCBhZGRzIFhQQyBtZXNzYWdlIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
cjo6Rmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlIHRvIG5vdGlmeSB0aGUgcmVuZGVyZXIgb24gdGhl
IFdlYiBwcm9jZXNzIHRoYXQgdGhlIHZpZGVvIGxheWVyIGlzIHJlYWR5LgorICAgICAgICBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0U2l6ZSBtZXNzYWdlIGlzIHJlbW92ZWQgdG8g
YXZvaWQgdGhlIHVubmVjZXNzYXJ5IFhQQyBtZXNzYWdlCisgICAgICAgIGJlY2F1c2UgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0U2l6ZSgpIGRvZXMgbm90aGluZy4KKwor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6cHJl
cGFyZUZvclBsYXliYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHk6OmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6c2V0U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6cHJlcGFyZUZvclBsYXliYWNrKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJGaXJzdFZpZGVv
RnJhbWVBdmFpbGFibGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5
OjptZWRpYVBsYXllclJlbmRlcmluZ01vZGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJDb250ZW50Qm94UmVjdCBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyQ29udGVu
dHNTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6
OnNldFNpemUpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5oOgorICAgICAgICAqIFBsYXRmb3JtL2NvY29hL0xheWVySG9zdGluZ0Nv
bnRleHQuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9z
dGluZ0NvbnRleHQuaC4KKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9MYXllckhvc3RpbmdDb250
ZXh0Lm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0
aW5nQ29udGV4dC5tbS4KKyAgICAgICAgKFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3Jl
YXRlUGxhdGZvcm1MYXllckZvckhvc3RpbmdDb250ZXh0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9p
b3MvUGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyLm1tOgorICAgICAgICAqIFBsdWdpblBy
b2Nlc3MvbWFjL1BsdWdpbkNvbnRyb2xsZXJQcm94eU1hYy5tbToKKyAgICAgICAgKiBTb3VyY2Vz
Q29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cHJlcGFyZUZv
clBsYXliYWNrKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGxhdGZvcm1MYXllciBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2l6ZSk6IERlbGV0
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpj
aGFyYWN0ZXJpc3RpY0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI6OnNpemVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyOjpmaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgor
CiAyMDIwLTAxLTEwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtNZWRpYSBpbiBHUFUgcHJvY2Vzc10gRXh0ZW5kIHRoZSBHUFUgcHJvY2VzcyBzYW5k
Ym94IHRvIGFsbG93IGFjY2VzcyB0byBsb2NhbCBmaWxlcyB3aGVuIG5lY2Vzc2FyeQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oCmluZGV4IDBhYTI3NGEx
YzUwOTUzNTI2YTg4ZWU0YTRlZmEzZjljOGQyMzdiM2IuLjZmY2Q3OGZjM2VhM2ZiMDU2NTZlYjY1
NzJkYThkM2UzZDEzZjI4NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yU3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvclNwYWNlLmgKQEAgLTMyLDYgKzMyLDUgQEAgZW51bSBjbGFzcyBDb2xvclNwYWNlIDog
dWludDhfdCB7CiAgICAgTGluZWFyUkdCLAogICAgIERpc3BsYXlQMwogfTsKLSAgICAKLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oCmluZGV4IGNjNzNiOGRkOTE2Y2E4
OWFiNWU2ZjQ4NDM1YjIwNzVhMjRlNzNkM2YuLjJlYjI1NjIzNmRmNjI1MzYzNDczMGFjYTkxZGIz
ZTE5M2NkNmMyZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0xheW91dFJlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlv
dXRSZWN0LmgKQEAgLTU3LDcgKzU3LDMwIEBAIHB1YmxpYzoKICAgICBMYXlvdXRSZWN0KGNvbnN0
IEludFJlY3QmIHJlY3QpIDogbV9sb2NhdGlvbihyZWN0LmxvY2F0aW9uKCkpLCBtX3NpemUocmVj
dC5zaXplKCkpIHsgfQogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IExheW91dFJl
Y3QoY29uc3QgRmxvYXRSZWN0Jik7IC8vIGRvbid0IGRvIHRoaXMgaW1wbGljaXRseSBzaW5jZSBp
dCdzIGxvc3N5Ci0gICAgICAgIAorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgZW5jb2RlciA8PCBtX2xvY2F0aW9uOworICAgICAgICBlbmNvZGVyIDw8IG1fc2l6
ZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRpYyBPcHRp
b25hbDxMYXlvdXRSZWN0PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAg
IE9wdGlvbmFsPExheW91dFBvaW50PiBsYXlvdXRQb2ludDsKKyAgICAgICAgZGVjb2RlciA+PiBs
YXlvdXRQb2ludDsKKyAgICAgICAgaWYgKCFsYXlvdXRQb2ludCkKKyAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8TGF5b3V0U2l6ZT4gbGF5b3V0U2l6
ZTsKKyAgICAgICAgZGVjb2RlciA+PiBsYXlvdXRTaXplOworICAgICAgICBpZiAoIWxheW91dFNp
emUpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7
eyAqbGF5b3V0UG9pbnQsICpsYXlvdXRTaXplIH19OworICAgIH0KKwogICAgIExheW91dFBvaW50
IGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbjsgfQogICAgIExheW91dFNpemUg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFz
Lm1tCmluZGV4IDIzYmIwZGU5MTYwZGNiODY3ZDIyMzIwMzUzOGFkNWU3ZTMyZjUwMDguLjE4MDVj
MGE1ZjZjZmYyODM2NWNmNmM4Yzg3MTNiNDJlODUwMjk4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFzLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVDQUxheWVy
RXh0cmFzLm1tCkBAIC04MSw2ICs4MSw5IEBACiArIChDQUxheWVyICopX3dlYl9yZW5kZXJMYXll
cldpdGhDb250ZXh0SUQ6KHVpbnQzMl90KWNvbnRleHRJRAogewogICAgIENBTGF5ZXJIb3N0ICps
YXllckhvc3QgPSBbQ0FMYXllckhvc3QgbGF5ZXJdOworI2lmbmRlZiBOREVCVUcKKyAgICBbbGF5
ZXJIb3N0IHNldE5hbWU6QCJXZWJWaWRlb0hvc3RpbmdMYXllciJdOworI2VuZGlmCiAgICAgbGF5
ZXJIb3N0LmNvbnRleHRJZCA9IGNvbnRleHRJRDsKICAgICByZXR1cm4gbGF5ZXJIb3N0OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFu
c2ZlclNlc3Npb25WVC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0lt
YWdlVHJhbnNmZXJTZXNzaW9uVlQubW0KaW5kZXggMTUzOTdhYjdmMjc4YWU4ZGM2OWUzMjUyMzc2
NGZiODhiZmVkZDAwNy4uZmE4ZWUwYjEwMGNmMjE0MDg1NjUwNTE2YmM0ZTIzYTFkYjE1YmYzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFu
c2ZlclNlc3Npb25WVC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
di9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tCkBAIC0yOCwxOCArMjgsMjAgQEAKIAogI2lmIFVT
RShWSURFT1RPT0xCT1gpCiAKKyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW1wb3J0
ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYVNhbXBsZUFWRk9iakMuaCIKICNpbXBvcnQgPENv
cmVNZWRpYS9DTUZvcm1hdERlc2NyaXB0aW9uLmg+CiAjaW1wb3J0IDxDb3JlTWVkaWEvQ01TYW1w
bGVCdWZmZXIuaD4KKworI2ltcG9ydCAiQ29yZVZpZGVvU29mdExpbmsuaCIKICNpbXBvcnQgPHBh
bC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgorI2ltcG9ydCAiVmlkZW9Ub29sYm94U29mdExpbmsu
aCIKIAogI2lmIEhBVkUoSU9TVVJGQUNFKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAjaW5j
bHVkZSA8cGFsL3NwaS9jb2NvYS9JT1N1cmZhY2VTUEkuaD4KICNlbmRpZgogCi0jaW1wb3J0ICJD
b3JlVmlkZW9Tb2Z0TGluay5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3Bh
Y2UgUEFMOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAppbmRleCA0NzkzMzA5OTBj
MzhmMDZjYjg2MGNjMzhmNTMxY2YzMGUzMGQyZWVmLi44MWYxNmUwYTA1M2M5N2NkNTg3ZGNiMzc5
ZDExNjBhMDBlYzkwNjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKQEAgLTM2
LDYgKzM2LDcgQEAKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclByb3h5LmgiCiAjaW5jbHVk
ZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJXZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0xheW91dFJlY3QuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBs
YXllclByaXZhdGUuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CkBAIC0xOTcsMTYgKzE5
OCwyMCBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpzdXBwb3J0c0tleVN5
c3RlbShNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZwogICAgIGNvbXBsZXRpb25IYW5kbGVyKHJl
c3VsdCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnByZXBhcmVG
b3JQbGF5YmFjayhNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBib29sIHBy
aXZhdGVNb2RlLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkIHByZWxvYWQsIGJv
b2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZykKK3ZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnByZXBhcmVGb3JQbGF5YmFjayhNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBib29sIHByaXZhdGVNb2RlLCBXZWJDb3JlOjpNZWRp
YVBsYXllckVudW1zOjpQcmVsb2FkIHByZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wg
cHJlcGFyZUZvclJlbmRlcmluZywgV2ViQ29yZTo6TGF5b3V0UmVjdCBsYXlvdXRSZWN0LCBmbG9h
dCB2aWRlb0NvbnRlbnRTY2FsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxMYXll
ckhvc3RpbmdDb250ZXh0SUQ+JiYgY29udGV4dElkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX3Byb3hpZXMuZ2V0KGlkKSkKLSAgICAgICAgcGxheWVy
LT5wcmVwYXJlRm9yUGxheWJhY2socHJpdmF0ZU1vZGUsIHByZWxvYWQsIHByZXNlcnZlc1BpdGNo
LCBwcmVwYXJlRm9yUmVuZGVyaW5nKTsKKyAgICAgICAgcGxheWVyLT5wcmVwYXJlRm9yUGxheWJh
Y2socHJpdmF0ZU1vZGUsIHByZWxvYWQsIHByZXNlcnZlc1BpdGNoLCBwcmVwYXJlRm9yUmVuZGVy
aW5nLCBsYXlvdXRSZWN0LCB2aWRlb0NvbnRlbnRTY2FsZSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworICAgIGVsc2UKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIH0KIAog
dm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6bG9hZChNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyIGlkLCBVUkwmJiB1cmwsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZT4mJiBzYW5kYm94RXh0ZW5zaW9uLCBXZWJDb3JlOjpDb250ZW50VHlwZSYmIGNv
bnRlbnRUeXBlLCBTdHJpbmcmJiBrZXlTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVt
b3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGlmIChhdXRvIHBsYXllciA9IG1fcHJveGllcy5nZXQoaWQpKQogICAgICAgICBwbGF5ZXIt
PmxvYWQoV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pLCBXVEZNb3ZlKGNv
bnRlbnRUeXBlKSwgV1RGTW92ZShrZXlTeXN0ZW0pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisgICAgZWxzZQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogfQogCiB2b2lk
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjYW5jZWxMb2FkKE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQpCkBAIC0yODEsMTIgKzI4Niw2IEBAIHZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnByZXBhcmVGb3JSZW5kZXJpbmcoTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlCiAgICAgICAgIHBsYXllci0+cHJlcGFyZUZvclJlbmRlcmluZygpOwogfQog
Ci12b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpzZXRTaXplKE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUp
Ci17Ci0gICAgaWYgKGF1dG8gcGxheWVyID0gbV9wcm94aWVzLmdldChpZCkpCi0gICAgICAgIHBs
YXllci0+c2V0U2l6ZShzaXplKTsKLX0KLQogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eTo6c2V0VmlzaWJsZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBi
b29sIHZpc2libGUpCiB7CiAgICAgaWYgKGF1dG8gcGxheWVyID0gbV9wcm94aWVzLmdldChpZCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCmluZGV4IGQzN2NmMThhYTMyNzkyOGI0MWYyZDBh
NWYzYzgwZjMwZmYxZTFmMWUuLmQ3NDk0NmJmZGE4Zjk3ZjU5ZjM4OTMxNTc2YmZiMDRlY2RkNDRm
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNz
IFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOwogY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eTsKIHN0cnVjdCBSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb247CiBzdHJ1Y3QgUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb247Cit1c2luZyBMYXllckhvc3RpbmdDb250ZXh0
SUQgPSB1aW50MzJfdDsKIAogY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkKICAg
ICA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKQEAgLTg0LDcgKzg1LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHN1cHBvcnRzS2V5U3lzdGVtKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6
Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiYsIGNvbnN0IFN0cmluZyYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAogICAgIHZvaWQgbG9hZChNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBVUkwmJiwgT3B0aW9uYWw8U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlPiYmLCBXZWJDb3JlOjpDb250ZW50VHlwZSYmLCBTdHJpbmcmJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24mJik+JiYpOwot
ICAgIHZvaWQgcHJlcGFyZUZvclBsYXliYWNrKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIsIGJvb2wgcHJpdmF0ZU1vZGUsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxv
YWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZyk7CisgICAg
dm9pZCBwcmVwYXJlRm9yUGxheWJhY2soTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmll
ciwgYm9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZCwg
Ym9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVyaW5nLCBXZWJDb3JlOjpM
YXlvdXRSZWN0LCBmbG9hdCB2aWRlb0NvbnRlbnRTY2FsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxMYXllckhvc3RpbmdDb250ZXh0SUQ+JiYgY29udGV4dElkKT4mJik7CiAgICAg
dm9pZCBjYW5jZWxMb2FkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpOwogICAg
IHZvaWQgcHJlcGFyZVRvUGxheShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyKTsK
IApAQCAtMTAyLDcgKzEwMyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRQcmVzZXJ2ZXNQaXRj
aChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBib29sKTsKIAogICAgIHZvaWQg
cHJlcGFyZUZvclJlbmRlcmluZyhNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyKTsK
LSAgICB2b2lkIHNldFNpemUoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIHZvaWQgc2V0VmlzaWJsZShNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGVJZGVudGlmaWVyLCBib29sKTsKICAgICB2b2lkIHNldFNob3VsZE1haW50YWlu
QXNwZWN0UmF0aW8oTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgYm9vbCk7CiAg
ICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpGbG9hdFJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGIxZTE0MjBiYTljMTEwODkyZDk4OGM1NjlhZjIw
ZTdlYWM3NGI5YjAuLmQzMmQ5YTZjZmFlYzM0ZWYwNTczNjcyY2IxNGY2MWYxYjk2MjM2MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTM1LDcg
KzM1LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgTm90UmVm
Q291bnRlZCB7CiAgICAgQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhlbnVtOnVpbnQ4X3QgV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2lu
ZUlkZW50aWZpZXIsIFN0cmluZyBwYXRoLCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhPiBvcmlnaW5zKQogICAgIFN1cHBvcnRzS2V5U3lzdGVtKGVudW06dWludDhfdCBXZWJDb3Jl
OjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRl
bnRpZmllciwgU3RyaW5nIGtleVN5c3RlbSwgU3RyaW5nIG1pbWVUeXBlKSAtPiAoYm9vbCBzdXBw
b3J0cykgU3luY2hyb25vdXMKIAotICAgIFByZXBhcmVGb3JQbGF5YmFjayhXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIGJvb2wgcHJpdmF0ZU1vZGUsIGVudW06
dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkIHByZWxvYWQsIGJvb2wg
cHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZykKKyAgICBQcmVwYXJlRm9y
UGxheWJhY2soV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBi
b29sIHByaXZhdGVNb2RlLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6
UHJlbG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5k
ZXJpbmcsIFdlYkNvcmU6OkxheW91dFJlY3QgbGF5b3V0UmVjdCwgZmxvYXQgdmlkZW9Db250ZW50
U2NhbGUpIC0+IChPcHRpb25hbDxXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRD4gbGF5ZXJI
b3N0aW5nQ29udGV4dElkKSBBc3luYwogCiAgICAgTG9hZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFVSTCB1cmwsIE9wdGlvbmFsPFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5kYm94RXh0ZW5zaW9uLCBXZWJDb3JlOjpDb250ZW50VHlw
ZSBjb250ZW50VHlwZSwgU3RyaW5nIGtleVN5c3RlbSkgLT4gKHN0cnVjdCBXZWJLaXQ6OlJlbW90
ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiBwbGF5ZXJDb25maWd1cmF0aW9uKSBBc3luYwogICAg
IENhbmNlbExvYWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlk
KQpAQCAtNTYsNyArNTYsNiBAQCBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eSBOb3RSZWZDb3VudGVkIHsKICAgICBTZXRQcmVzZXJ2ZXNQaXRjaChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gpCiAK
ICAgICBQcmVwYXJlRm9yUmVuZGVyaW5nKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciBpZCkKLSAgICBTZXRTaXplKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlSWRlbnRpZmllciBpZCwgV2ViQ29yZTo6SW50U2l6ZSBzaXplKQogICAgIFNldFZpc2libGUo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBib29sIHZpc2li
bGUpCiAgICAgU2V0U2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRpbyhXZWJLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIGJvb2wgbWFpbnRhaW5Bc3BlY3RSYXRpbykKICAg
ICBTZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXIgaWQsIFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3Bw
CmluZGV4IGExNDE3YTI4YTY1MGIwZDJmZTFiYzVjYTMyY2RiY2QwYzBiOWY1MTcuLmM2OTZiODVj
NjI0NzAzMTI3OTQwODg4OTRlYzVjNWI5NDdjNzBjYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKQEAg
LTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlTG9hZGVyLmgiCiAj
aW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0xheW91dFJlY3QuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL01lZGlhUGxheWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXll
clByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkBAIC0xMDMs
MTIgKzEwNCwxNiBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmxvYWQoY29uc3QgVVJM
JiB1cmwsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbgogICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoY29uZmlndXJhdGlvbikpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVy
UHJveHk6OnByZXBhcmVGb3JQbGF5YmFjayhib29sIHByaXZhdGVNb2RlLCBXZWJDb3JlOjpNZWRp
YVBsYXllckVudW1zOjpQcmVsb2FkIHByZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wg
cHJlcGFyZUZvclJlbmRlcmluZykKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6cHJlcGFy
ZUZvclBsYXliYWNrKGJvb2wgcHJpdmF0ZU1vZGUsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6
OlByZWxvYWQgcHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVu
ZGVyaW5nLCBMYXlvdXRSZWN0IGxheW91dFJlY3QsIGZsb2F0IHZpZGVvQ29udGVudFNjYWxlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPExheWVySG9zdGluZ0NvbnRleHRJRD4mJiBj
b250ZXh0SWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fcGxheWVyLT5zZXRQcml2
YXRlQnJvd3NpbmdNb2RlKHByaXZhdGVNb2RlKTsKICAgICBtX3BsYXllci0+c2V0UHJlbG9hZChw
cmVsb2FkKTsKICAgICBtX3BsYXllci0+c2V0UHJlc2VydmVzUGl0Y2gocHJlc2VydmVzUGl0Y2gp
OwogICAgIG1fcGxheWVyLT5wcmVwYXJlRm9yUmVuZGVyaW5nKCk7CisgICAgbV92aWRlb0NvbnRl
bnRCb3hSZWN0ID0gbGF5b3V0UmVjdDsKKyAgICBtX3ZpZGVvQ29udGVudFNjYWxlID0gdmlkZW9D
b250ZW50U2NhbGU7CisgICAgbV9sYXllckhvc3RpbmdDb250ZXh0ID0gTGF5ZXJIb3N0aW5nQ29u
dGV4dDo6Y3JlYXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2VzcygpOworICAgIGNvbXBsZXRpb25I
YW5kbGVyKG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+Y29udGV4dElEKCkpOwogfQogCiB2b2lkIFJl
bW90ZU1lZGlhUGxheWVyUHJveHk6OmNhbmNlbExvYWQoKQpAQCAtMTc3LDExICsxODIsNiBAQCB2
b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnByZXBhcmVGb3JSZW5kZXJpbmcoKQogICAgIG1f
cGxheWVyLT5wcmVwYXJlRm9yUmVuZGVyaW5nKCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6c2V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQotewotICAgIG1f
cGxheWVyLT5zZXRTaXplKHNpemUpOwotfQotCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6
OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogewogICAgIG1fcGxheWVyLT5zZXRWaXNpYmxlKHZp
c2libGUpOwpAQCAtMzgyLDEyICszODIsMTMgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5
OjptZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoKQogCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJv
eHk6Om1lZGlhUGxheWVyRmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKCkKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Um9vdExheWVyKG1fcGxh
eWVyLT5wbGF0Zm9ybUxheWVyKCkpOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Rmlyc3RWaWRlb0ZyYW1lQXZhaWxh
YmxlKG1faWQpLCAwKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBs
YXllclJlbmRlcmluZ01vZGVDaGFuZ2VkKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Um9vdExheWVyKG1fcGxheWVyLT5wbGF0Zm9ybUxh
eWVyKCkpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyQWN0
aXZlU291cmNlQnVmZmVyc0NoYW5nZWQoKQpAQCAtNDQ4LDE0ICs0NDksMTIgQEAgYm9vbCBSZW1v
dGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllcklzRnVsbHNjcmVlblBlcm1pdHRlZCgpIGNv
bnN0CiAKIExheW91dFJlY3QgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJDb250
ZW50Qm94UmVjdCgpIGNvbnN0CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4g
TGF5b3V0UmVjdCgpOworICAgIHJldHVybiBtX3ZpZGVvQ29udGVudEJveFJlY3Q7CiB9CiAKIGZs
b2F0IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyQ29udGVudHNTY2FsZSgpIGNv
bnN0CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMTsKKyAgICByZXR1cm4g
bV92aWRlb0NvbnRlbnRTY2FsZTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpt
ZWRpYVBsYXllclBhdXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCmluZGV4IGZjYzM2NjRjMjQ0ZTMyOGQ2ZGNh
ZGZhZGMxOTg4MmUzMjYzZmVjMmUuLjMyNmYwM2U2MWEwYWQxZDBkYmQxZjQ2ZDJkZWVlNGVmYWE3
MGMyMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkuaApAQCAtNDMsNiArNDMsMTAgQEAKICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgTGF5ZXJIb3N0aW5nQ29udGV4dDsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OwpAQCAtNTksNyArNjMsOCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGdldENvbmZpZ3VyYXRpb24oUmVtb3RlTWVkaWFQbGF5ZXJDb25m
aWd1cmF0aW9uJik7CiAKLSAgICB2b2lkIHByZXBhcmVGb3JQbGF5YmFjayhib29sIHByaXZhdGVN
b2RlLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkLCBib29sIHByZXNlcnZlc1Bp
dGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJpbmcpOworICAgIHZvaWQgcHJlcGFyZUZvclBsYXli
YWNrKGJvb2wgcHJpdmF0ZU1vZGUsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQs
IGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZywgV2ViQ29yZTo6
TGF5b3V0UmVjdCwgZmxvYXQgdmlkZW9Db250ZW50U2NhbGUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8TGF5ZXJIb3N0aW5nQ29udGV4dElEPiYmKT4mJik7CisgICAgdm9pZCBwcmVw
YXJlRm9yUmVuZGVyaW5nKCk7CiAKICAgICB2b2lkIGxvYWQoY29uc3QgVVJMJiwgT3B0aW9uYWw8
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYmLCBjb25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYs
IGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVkaWFQbGF5ZXJD
b25maWd1cmF0aW9uJiYpPiYmKTsKICAgICB2b2lkIGNhbmNlbExvYWQoKTsKQEAgLTc5LDggKzg0
LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5nTW9kZShib29sKTsKICAg
ICB2b2lkIHNldFByZXNlcnZlc1BpdGNoKGJvb2wpOwogCi0gICAgdm9pZCBwcmVwYXJlRm9yUmVu
ZGVyaW5nKCk7Ci0gICAgdm9pZCBzZXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAg
ICB2b2lkIHNldFZpc2libGUoYm9vbCk7CiAgICAgdm9pZCBzZXRTaG91bGRNYWludGFpbkFzcGVj
dFJhdGlvKGJvb2wpOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoV2ViQ29yZTo6
RmxvYXRSZWN0KTsKQEAgLTE5MCw2ICsxOTMsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxTYW5k
Ym94RXh0ZW5zaW9uPiBtX3NhbmRib3hFeHRlbnNpb247CiAgICAgUmVmPElQQzo6Q29ubmVjdGlv
bj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbjsKICAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFQbGF5
ZXI+IG1fcGxheWVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBt
X2xheWVySG9zdGluZ0NvbnRleHQ7CiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkm
IG1fbWFuYWdlcjsKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlk
ZW50aWZpZXIgbV9lbmdpbmVJZGVudGlmaWVyOwogICAgIFZlY3RvcjxXZWJDb3JlOjpDb250ZW50
VHlwZT4gbV90eXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydDsKQEAgLTE5OSw2ICsyMDMsOCBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9zZWVrYWJsZUNoYW5nZWQgeyB0cnVlIH07CiAgICAgYm9v
bCBtX2J1ZmZlcmVkQ2hhbmdlZCB7IHRydWUgfTsKICAgICBib29sIG1fcmVuZGVyaW5nQ2FuQmVB
Y2NlbGVyYXRlZCB7IHRydWUgfTsKKyAgICBXZWJDb3JlOjpMYXlvdXRSZWN0IG1fdmlkZW9Db250
ZW50Qm94UmVjdDsKKyAgICBmbG9hdCBtX3ZpZGVvQ29udGVudFNjYWxlIHsgMS4wIH07CiAKICNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dnZXImIG1fbG9nZ2VyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9MYXllckhvc3RpbmdDb250ZXh0
LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL0xheWVySG9zdGluZ0NvbnRleHQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43MjlmYmIxMmRlYWU5MWEzZTI5YmNiN2FkYTdkYTBhN2Q1ZDJmYzc5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9MYXllckhvc3RpbmdD
b250ZXh0LmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBDQUxheWVyOworT0JK
Q19DTEFTUyBDQUNvbnRleHQ7CisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgTWFjaFNlbmRSaWdo
dDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIExheWVySG9zdGluZ0NvbnRleHRJ
RCA9IHVpbnQzMl90OworZW51bSBjbGFzcyBMYXllckhvc3RpbmdNb2RlIDogdWludDhfdDsKKwor
c3RydWN0IExheWVySG9zdGluZ0NvbnRleHRPcHRpb25zIHsKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorICAgIGJvb2wgY2FuU2hvd1doaWxlTG9ja2VkIHsgZmFsc2UgfTsKKyNlbmRpZgorfTsK
KworY2xhc3MgTGF5ZXJIb3N0aW5nQ29udGV4dCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
TGF5ZXJIb3N0aW5nQ29udGV4dCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gY3JlYXRlRm9y
UG9ydChjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmIHNlcnZlclBvcnQpOworICAgIAorI2lmIEhB
VkUoT1VUX09GX1BST0NFU1NfTEFZRVJfSE9TVElORykKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPExheWVySG9zdGluZ0NvbnRleHQ+IGNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3Mo
Y29uc3QgTGF5ZXJIb3N0aW5nQ29udGV4dE9wdGlvbnMmID0geyB9KTsKKworI2lmIFBMQVRGT1JN
KE1BQykKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IGNy
ZWF0ZUZvckV4dGVybmFsUGx1Z2luSG9zdGluZ1Byb2Nlc3MoKTsKKyNlbmRpZgorCisgICAgc3Rh
dGljIFJldGFpblB0cjxDQUxheWVyPiBjcmVhdGVQbGF0Zm9ybUxheWVyRm9ySG9zdGluZ0NvbnRl
eHQoTGF5ZXJIb3N0aW5nQ29udGV4dElEKTsKKworI2VuZGlmIC8vIEhBVkUoT1VUX09GX1BST0NF
U1NfTEFZRVJfSE9TVElORykKKworICAgIExheWVySG9zdGluZ0NvbnRleHQoKTsKKyAgICB+TGF5
ZXJIb3N0aW5nQ29udGV4dCgpOworCisgICAgdm9pZCBzZXRSb290TGF5ZXIoQ0FMYXllciAqKTsK
KyAgICBDQUxheWVyICpyb290TGF5ZXIoKSBjb25zdDsKKworICAgIExheWVySG9zdGluZ0NvbnRl
eHRJRCBjb250ZXh0SUQoKSBjb25zdDsKKyAgICB2b2lkIGludmFsaWRhdGUoKTsKKworICAgIExh
eWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9kZSgpIHsgcmV0dXJuIG1fbGF5ZXJIb3N0aW5n
TW9kZTsgfQorCisgICAgdm9pZCBzZXRDb2xvclNwYWNlKENHQ29sb3JTcGFjZVJlZik7CisgICAg
Q0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UoKSBjb25zdDsKKworI2lmIFBMQVRGT1JNKE1BQykK
KyAgICB2b2lkIHNldENvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQoYm9vbCk7CisgICAgYm9vbCBj
b2xvck1hdGNoVW50YWdnZWRDb250ZW50KCkgY29uc3Q7CisjZW5kaWYKKworICAgIC8vIEZlbmNl
cyBvbmx5IHdvcmsgb24gaU9TIGFuZCBPUyAxMC4xMCsuCisgICAgdm9pZCBzZXRGZW5jZVBvcnQo
bWFjaF9wb3J0X3QpOworCisgICAgLy8gY3JlYXRlRmVuY2VQb3J0IGRvZXMgbm90IGluc3RhbGwg
dGhlIGZlbmNlIHBvcnQgb24gdGhlIExheWVySG9zdGluZ0NvbnRleHQncworICAgIC8vIENBQ29u
dGV4dDsgY2FsbCBzZXRGZW5jZVBvcnQoKSB3aXRoIHRoZSBuZXdseSBjcmVhdGVkIHBvcnQgaWYg
c3luY2hyb25pemF0aW9uCisgICAgLy8gd2l0aCB0aGlzIGNvbnRleHQgaXMgZGVzaXJlZC4KKyAg
ICBXVEY6Ok1hY2hTZW5kUmlnaHQgY3JlYXRlRmVuY2VQb3J0KCk7CisKK3ByaXZhdGU6CisgICAg
TGF5ZXJIb3N0aW5nTW9kZSBtX2xheWVySG9zdGluZ01vZGU7CisgICAgUmV0YWluUHRyPENBQ29u
dGV4dD4gbV9jb250ZXh0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbSBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yNDA1OGU5YjcxZGEwZTNkYzlkNjAzYTJmYTc3NTFlZjM1Njc3ZjAxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9MYXllckhvc3RpbmdDb250
ZXh0Lm1tCkBAIC0wLDAgKzEsMTYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIkxheWVySG9zdGluZ0NvbnRleHQuaCIKKworI2ltcG9ydCAiTGF5ZXJU
cmVlQ29udGV4dC5oIgorI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlQ0FMYXllckV4dHJhcy5oPgor
I2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkv
Y29jb2EvUXVhcnR6Q29yZVNQSS5oPgorI2ltcG9ydCA8d3RmL01hY2hTZW5kUmlnaHQuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3N0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0
PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JQb3J0KGNvbnN0IE1hY2hTZW5kUmlnaHQm
IHNlcnZlclBvcnQpCit7CisgICAgYXV0byBsYXllckhvc3RpbmdDb250ZXh0ID0gbWFrZVVuaXF1
ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOworCisgICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zID0g
QHsKKyAgICAgICAga0NBQ29udGV4dFBvcnROdW1iZXIgOiBAKHNlcnZlclBvcnQuc2VuZFJpZ2h0
KCkpLAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAga0NBQ29udGV4dENJRmlsdGVyQmVoYXZp
b3IgOiBAImlnbm9yZSIsCisjZW5kaWYKKyAgICB9OworCisgICAgbGF5ZXJIb3N0aW5nQ29udGV4
dC0+bV9sYXllckhvc3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6SW5Qcm9jZXNzOworICAg
IGxheWVySG9zdGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQgcmVtb3RlQ29udGV4
dFdpdGhPcHRpb25zOm9wdGlvbnNdOworCisgICAgcmV0dXJuIGxheWVySG9zdGluZ0NvbnRleHQ7
Cit9CisKKyNpZiBIQVZFKE9VVF9PRl9QUk9DRVNTX0xBWUVSX0hPU1RJTkcpCitzdGQ6OnVuaXF1
ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9y
RXh0ZXJuYWxIb3N0aW5nUHJvY2Vzcyhjb25zdCBMYXllckhvc3RpbmdDb250ZXh0T3B0aW9ucyYg
b3B0aW9ucykKK3sKKyAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPExh
eWVySG9zdGluZ0NvbnRleHQ+KCk7CisgICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9sYXllckhv
c3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQcm9jZXNzOworCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorICAgIC8vIFVzZSBhIHZl
cnkgbGFyZ2UgZGlzcGxheSBJRCB0byBlbnN1cmUgdGhhdCB0aGUgY29udGV4dCBpcyBuZXZlciBw
dXQgb24tc2NyZWVuIAorICAgIC8vIHdpdGhvdXQgYmVpbmcgZXhwbGljaXRseSBwYXJlbnRlZC4g
U2VlIDxyZGFyOi8vcHJvYmxlbS8xNjA4OTI2Nz4gZm9yIGRldGFpbHMuCisgICAgbGF5ZXJIb3N0
aW5nQ29udGV4dC0+bV9jb250ZXh0ID0gW0NBQ29udGV4dCByZW1vdGVDb250ZXh0V2l0aE9wdGlv
bnM6QHsKKyAgICAgICAga0NBQ29udGV4dFNlY3VyZTogQChvcHRpb25zLmNhblNob3dXaGlsZUxv
Y2tlZCksCisjaWYgSEFWRShDT1JFX0FOSU1BVElPTl9SRU5ERVJfU0VSVkVSKQorICAgICAgICBr
Q0FDb250ZXh0SWdub3Jlc0hpdFRlc3QgOiBAWUVTLAorICAgICAgICBrQ0FDb250ZXh0RGlzcGxh
eUlkIDogQDEwMDAwCisjZW5kaWYKKyAgICB9XTsKKyNlbGlmICFQTEFURk9STShNQUNDQVRBTFlT
VCkgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQorICAgIFtDQUNv
bnRleHQgc2V0QWxsb3dzQ0dTQ29ubmVjdGlvbnM6Tk9dOworICAgIGxheWVySG9zdGluZ0NvbnRl
eHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQgcmVtb3RlQ29udGV4dFdpdGhPcHRpb25zOkB7Cisg
ICAgICAgIGtDQUNvbnRleHRDSUZpbHRlckJlaGF2aW9yIDogIEAiaWdub3JlIiwKKyAgICB9XTsK
KyNlbHNlCisgICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9jb250ZXh0ID0gW0NBQ29udGV4dCBj
b250ZXh0V2l0aENHU0Nvbm5lY3Rpb246Q0dTTWFpbkNvbm5lY3Rpb25JRCgpIG9wdGlvbnM6QHsK
KyAgICAgICAga0NBQ29udGV4dENJRmlsdGVyQmVoYXZpb3IgOiBAImlnbm9yZSIsCisgICAgfV07
CisjZW5kaWYKKyAgICAKKyAgICByZXR1cm4gbGF5ZXJIb3N0aW5nQ29udGV4dDsKK30KKworI2lm
IFBMQVRGT1JNKE1BQykKK3N0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXll
ckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbFBsdWdpbkhvc3RpbmdQcm9jZXNzKCkK
K3sKKyAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPExheWVySG9zdGlu
Z0NvbnRleHQ+KCk7CisgICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9sYXllckhvc3RpbmdNb2Rl
ID0gTGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQcm9jZXNzOworICAgIGxheWVySG9zdGluZ0NvbnRl
eHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQgY29udGV4dFdpdGhDR1NDb25uZWN0aW9uOkNHU01h
aW5Db25uZWN0aW9uSUQoKSBvcHRpb25zOkB7IGtDQUNvbnRleHRDSUZpbHRlckJlaGF2aW9yIDog
QCJpZ25vcmUiIH1dOworICAgIHJldHVybiBsYXllckhvc3RpbmdDb250ZXh0OworfQorI2VuZGlm
CisKK1JldGFpblB0cjxDQUxheWVyPiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVQbGF0Zm9y
bUxheWVyRm9ySG9zdGluZ0NvbnRleHQoTGF5ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJRCkK
K3sKKyAgICByZXR1cm4gW0NBTGF5ZXIgX3dlYl9yZW5kZXJMYXllcldpdGhDb250ZXh0SUQ6Y29u
dGV4dElEXTsKK30KKworI2VuZGlmIC8vIEhBVkUoT1VUX09GX1BST0NFU1NfTEFZRVJfSE9TVElO
RykKKworTGF5ZXJIb3N0aW5nQ29udGV4dDo6TGF5ZXJIb3N0aW5nQ29udGV4dCgpCit7Cit9CisK
K0xheWVySG9zdGluZ0NvbnRleHQ6On5MYXllckhvc3RpbmdDb250ZXh0KCkKK3sKK30KKwordm9p
ZCBMYXllckhvc3RpbmdDb250ZXh0OjpzZXRSb290TGF5ZXIoQ0FMYXllciAqcm9vdExheWVyKQor
eworICAgIFttX2NvbnRleHQgc2V0TGF5ZXI6cm9vdExheWVyXTsKK30KKworQ0FMYXllciAqTGF5
ZXJIb3N0aW5nQ29udGV4dDo6cm9vdExheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fY29u
dGV4dCBsYXllcl07Cit9CisKK0xheWVySG9zdGluZ0NvbnRleHRJRCBMYXllckhvc3RpbmdDb250
ZXh0Ojpjb250ZXh0SUQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9jb250ZXh0IGNvbnRleHRJ
ZF07Cit9CisKK3ZvaWQgTGF5ZXJIb3N0aW5nQ29udGV4dDo6aW52YWxpZGF0ZSgpCit7CisgICAg
W21fY29udGV4dCBpbnZhbGlkYXRlXTsKK30KKwordm9pZCBMYXllckhvc3RpbmdDb250ZXh0Ojpz
ZXRDb2xvclNwYWNlKENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKQoreworICAgIFttX2NvbnRl
eHQgc2V0Q29sb3JTcGFjZTpjb2xvclNwYWNlXTsKK30KKworQ0dDb2xvclNwYWNlUmVmIExheWVy
SG9zdGluZ0NvbnRleHQ6OmNvbG9yU3BhY2UoKSBjb25zdAoreworICAgIHJldHVybiBbbV9jb250
ZXh0IGNvbG9yU3BhY2VdOworfQorCisjaWYgUExBVEZPUk0oTUFDKQordm9pZCBMYXllckhvc3Rp
bmdDb250ZXh0OjpzZXRDb2xvck1hdGNoVW50YWdnZWRDb250ZW50KGJvb2wgY29sb3JNYXRjaFVu
dGFnZ2VkQ29udGVudCkKK3sKKyAgICBbbV9jb250ZXh0IHNldENvbG9yTWF0Y2hVbnRhZ2dlZENv
bnRlbnQ6Y29sb3JNYXRjaFVudGFnZ2VkQ29udGVudF07Cit9CisKK2Jvb2wgTGF5ZXJIb3N0aW5n
Q29udGV4dDo6Y29sb3JNYXRjaFVudGFnZ2VkQ29udGVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IFttX2NvbnRleHQgY29sb3JNYXRjaFVudGFnZ2VkQ29udGVudF07Cit9CisjZW5kaWYKKwordm9p
ZCBMYXllckhvc3RpbmdDb250ZXh0OjpzZXRGZW5jZVBvcnQobWFjaF9wb3J0X3QgZmVuY2VQb3J0
KQoreworICAgIFttX2NvbnRleHQgc2V0RmVuY2VQb3J0OmZlbmNlUG9ydF07Cit9CisKK01hY2hT
ZW5kUmlnaHQgTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRmVuY2VQb3J0KCkKK3sKKyAgICBy
ZXR1cm4gTWFjaFNlbmRSaWdodDo6YWRvcHQoW21fY29udGV4dCBjcmVhdGVGZW5jZVBvcnRdKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL2lvcy9QYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL2lvcy9QYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXIubW0KaW5kZXgg
ZjE2MzFiYTBmY2M3MjlkMDY4NGQ4N2NmYTYyZmE2Njg5MTc4Njc0My4uNWI4NGVmZWIzMTRhNDU5
MTI5ZDcxMzcwNDFiODdjNjNkYzE2MWM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9pb3MvUGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vaW9zL1BheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlci5tbQpAQCAt
MzAsNiArMzAsNyBAQAogCiAjaW1wb3J0ICJXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUu
aCIKICNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KKyNpbXBvcnQgPHd0Zi9D
b21wbGV0aW9uSGFuZGxlci5oPgogCiBAaW50ZXJmYWNlIFdLUGF5bWVudEF1dGhvcml6YXRpb25D
b250cm9sbGVyRGVsZWdhdGUgOiBXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgPFBLUGF5
bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyRGVsZWdhdGUsIFBLUGF5bWVudEF1dGhvcml6YXRp
b25Db250cm9sbGVyUHJpdmF0ZURlbGVnYXRlPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDk5Y2FkZmU2ZGIxNmZjYzk0M2E4ZjE5MmU1ZDAxZmY4YzAxNDc2OGUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5oCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJMYXllclRyZWVD
b250ZXh0LmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLU9CSkNfQ0xBU1MgQ0FMYXll
cjsKLU9CSkNfQ0xBU1MgQ0FDb250ZXh0OwotCi1uYW1lc3BhY2UgV1RGIHsKLWNsYXNzIE1hY2hT
ZW5kUmlnaHQ7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi11c2luZyBMYXllckhvc3RpbmdD
b250ZXh0SUQgPSB1aW50MzJfdDsKLSAgICAKLXN0cnVjdCBMYXllckhvc3RpbmdDb250ZXh0T3B0
aW9ucyB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBib29sIGNhblNob3dXaGlsZUxv
Y2tlZCB7IGZhbHNlIH07Ci0jZW5kaWYKLX07Ci0KLWNsYXNzIExheWVySG9zdGluZ0NvbnRleHQg
ewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExheWVySG9zdGluZ0NvbnRleHQpOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExh
eWVySG9zdGluZ0NvbnRleHQ+IGNyZWF0ZUZvclBvcnQoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0
JiBzZXJ2ZXJQb3J0KTsKLSAgICAKLSNpZiBIQVZFKE9VVF9PRl9QUk9DRVNTX0xBWUVSX0hPU1RJ
TkcpCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBjcmVh
dGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9jZXNzKGNvbnN0IExheWVySG9zdGluZ0NvbnRleHRPcHRp
b25zJiA9IHsgfSk7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBjcmVhdGVGb3JFeHRlcm5hbFBsdWdpbkhvc3RpbmdQ
cm9jZXNzKCk7Ci0jZW5kaWYKLSAgICAKLSNlbmRpZiAvLyBIQVZFKE9VVF9PRl9QUk9DRVNTX0xB
WUVSX0hPU1RJTkcpCi0KLSAgICBMYXllckhvc3RpbmdDb250ZXh0KCk7Ci0gICAgfkxheWVySG9z
dGluZ0NvbnRleHQoKTsKLQotICAgIHZvaWQgc2V0Um9vdExheWVyKENBTGF5ZXIgKik7Ci0gICAg
Q0FMYXllciAqcm9vdExheWVyKCkgY29uc3Q7Ci0KLSAgICBMYXllckhvc3RpbmdDb250ZXh0SUQg
Y29udGV4dElEKCkgY29uc3Q7Ci0gICAgdm9pZCBpbnZhbGlkYXRlKCk7Ci0KLSAgICBMYXllckhv
c3RpbmdNb2RlIGxheWVySG9zdGluZ01vZGUoKSB7IHJldHVybiBtX2xheWVySG9zdGluZ01vZGU7
IH0KLQotICAgIHZvaWQgc2V0Q29sb3JTcGFjZShDR0NvbG9yU3BhY2VSZWYpOwotICAgIENHQ29s
b3JTcGFjZVJlZiBjb2xvclNwYWNlKCkgY29uc3Q7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAg
dm9pZCBzZXRDb2xvck1hdGNoVW50YWdnZWRDb250ZW50KGJvb2wpOwotICAgIGJvb2wgY29sb3JN
YXRjaFVudGFnZ2VkQ29udGVudCgpIGNvbnN0OwotI2VuZGlmCi0KLSAgICAvLyBGZW5jZXMgb25s
eSB3b3JrIG9uIGlPUyBhbmQgT1MgMTAuMTArLgotICAgIHZvaWQgc2V0RmVuY2VQb3J0KG1hY2hf
cG9ydF90KTsKLQotICAgIC8vIGNyZWF0ZUZlbmNlUG9ydCBkb2VzIG5vdCBpbnN0YWxsIHRoZSBm
ZW5jZSBwb3J0IG9uIHRoZSBMYXllckhvc3RpbmdDb250ZXh0J3MKLSAgICAvLyBDQUNvbnRleHQ7
IGNhbGwgc2V0RmVuY2VQb3J0KCkgd2l0aCB0aGUgbmV3bHkgY3JlYXRlZCBwb3J0IGlmIHN5bmNo
cm9uaXphdGlvbgotICAgIC8vIHdpdGggdGhpcyBjb250ZXh0IGlzIGRlc2lyZWQuCi0gICAgV1RG
OjpNYWNoU2VuZFJpZ2h0IGNyZWF0ZUZlbmNlUG9ydCgpOwotCi1wcml2YXRlOgotICAgIExheWVy
SG9zdGluZ01vZGUgbV9sYXllckhvc3RpbmdNb2RlOwotICAgIFJldGFpblB0cjxDQUNvbnRleHQ+
IG1fY29udGV4dDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1tIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggN2FlZTQ3ZWFiOTVmNThhNmI0MTc4NWMwZjRmZjdmMDJiMDRjZjQ0
My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1tCisrKyAvZGV2L251bGwK
QEAgLTEsMTUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgot
I2ltcG9ydCAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgotCi0jaW1wb3J0IDxwYWwvc3BpL2NnL0Nv
cmVHcmFwaGljc1NQSS5oPgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+
Ci0jaW1wb3J0IDx3dGYvTWFjaFNlbmRSaWdodC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
c3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IExheWVySG9zdGluZ0NvbnRleHQ6
OmNyZWF0ZUZvclBvcnQoY29uc3QgTWFjaFNlbmRSaWdodCYgc2VydmVyUG9ydCkKLXsKLSAgICBh
dXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+
KCk7Ci0KLSAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBAewotICAgICAgICBrQ0FDb250ZXh0
UG9ydE51bWJlciA6IEAoc2VydmVyUG9ydC5zZW5kUmlnaHQoKSksCi0jaWYgUExBVEZPUk0oTUFD
KQotICAgICAgICBrQ0FDb250ZXh0Q0lGaWx0ZXJCZWhhdmlvciA6IEAiaWdub3JlIiwKLSNlbmRp
ZgotICAgIH07Ci0KLSAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2xheWVySG9zdGluZ01vZGUg
PSBMYXllckhvc3RpbmdNb2RlOjpJblByb2Nlc3M7Ci0gICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+
bV9jb250ZXh0ID0gW0NBQ29udGV4dCByZW1vdGVDb250ZXh0V2l0aE9wdGlvbnM6b3B0aW9uc107
Ci0KLSAgICByZXR1cm4gbGF5ZXJIb3N0aW5nQ29udGV4dDsKLX0KLQotI2lmIEhBVkUoT1VUX09G
X1BST0NFU1NfTEFZRVJfSE9TVElORykKLXN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250
ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9jZXNz
KGNvbnN0IExheWVySG9zdGluZ0NvbnRleHRPcHRpb25zJiBvcHRpb25zKQotewotICAgIGF1dG8g
bGF5ZXJIb3N0aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsK
LSAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2xheWVySG9zdGluZ01vZGUgPSBMYXllckhvc3Rp
bmdNb2RlOjpPdXRPZlByb2Nlc3M7Ci0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExB
VEZPUk0oTUFDQ0FUQUxZU1QpCi0gICAgLy8gVXNlIGEgdmVyeSBsYXJnZSBkaXNwbGF5IElEIHRv
IGVuc3VyZSB0aGF0IHRoZSBjb250ZXh0IGlzIG5ldmVyIHB1dCBvbi1zY3JlZW4gCi0gICAgLy8g
d2l0aG91dCBiZWluZyBleHBsaWNpdGx5IHBhcmVudGVkLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzE2
MDg5MjY3PiBmb3IgZGV0YWlscy4KLSAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2NvbnRleHQg
PSBbQ0FDb250ZXh0IHJlbW90ZUNvbnRleHRXaXRoT3B0aW9uczpAewotICAgICAgICBrQ0FDb250
ZXh0U2VjdXJlOiBAKG9wdGlvbnMuY2FuU2hvd1doaWxlTG9ja2VkKSwKLSNpZiBIQVZFKENPUkVf
QU5JTUFUSU9OX1JFTkRFUl9TRVJWRVIpCi0gICAgICAgIGtDQUNvbnRleHRJZ25vcmVzSGl0VGVz
dCA6IEBZRVMsCi0gICAgICAgIGtDQUNvbnRleHREaXNwbGF5SWQgOiBAMTAwMDAKLSNlbmRpZgot
ICAgIH1dOwotI2VsaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKSAmJiBFTkFCTEUoV0VCUFJPQ0VT
U19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCi0gICAgW0NBQ29udGV4dCBzZXRBbGxvd3NDR1NDb25u
ZWN0aW9uczpOT107Ci0gICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9jb250ZXh0ID0gW0NBQ29u
dGV4dCByZW1vdGVDb250ZXh0V2l0aE9wdGlvbnM6QHsKLSAgICAgICAga0NBQ29udGV4dENJRmls
dGVyQmVoYXZpb3IgOiAgQCJpZ25vcmUiLAotICAgIH1dOwotI2Vsc2UKLSAgICBsYXllckhvc3Rp
bmdDb250ZXh0LT5tX2NvbnRleHQgPSBbQ0FDb250ZXh0IGNvbnRleHRXaXRoQ0dTQ29ubmVjdGlv
bjpDR1NNYWluQ29ubmVjdGlvbklEKCkgb3B0aW9uczpAewotICAgICAgICBrQ0FDb250ZXh0Q0lG
aWx0ZXJCZWhhdmlvciA6IEAiaWdub3JlIiwKLSAgICB9XTsKLSNlbmRpZgotICAgIAotICAgIHJl
dHVybiBsYXllckhvc3RpbmdDb250ZXh0OwotfQotCi0jaWYgUExBVEZPUk0oTUFDKQotc3RkOjp1
bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0
ZUZvckV4dGVybmFsUGx1Z2luSG9zdGluZ1Byb2Nlc3MoKQotewotICAgIGF1dG8gbGF5ZXJIb3N0
aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKLSAgICBsYXll
ckhvc3RpbmdDb250ZXh0LT5tX2xheWVySG9zdGluZ01vZGUgPSBMYXllckhvc3RpbmdNb2RlOjpP
dXRPZlByb2Nlc3M7Ci0gICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9jb250ZXh0ID0gW0NBQ29u
dGV4dCBjb250ZXh0V2l0aENHU0Nvbm5lY3Rpb246Q0dTTWFpbkNvbm5lY3Rpb25JRCgpIG9wdGlv
bnM6QHsga0NBQ29udGV4dENJRmlsdGVyQmVoYXZpb3IgOiBAImlnbm9yZSIgfV07Ci0gICAgcmV0
dXJuIGxheWVySG9zdGluZ0NvbnRleHQ7Ci19Ci0jZW5kaWYKLSNlbmRpZiAvLyBIQVZFKE9VVF9P
Rl9QUk9DRVNTX0xBWUVSX0hPU1RJTkcpCi0KLUxheWVySG9zdGluZ0NvbnRleHQ6OkxheWVySG9z
dGluZ0NvbnRleHQoKQotewotfQotCi1MYXllckhvc3RpbmdDb250ZXh0Ojp+TGF5ZXJIb3N0aW5n
Q29udGV4dCgpCi17Ci19Ci0KLXZvaWQgTGF5ZXJIb3N0aW5nQ29udGV4dDo6c2V0Um9vdExheWVy
KENBTGF5ZXIgKnJvb3RMYXllcikKLXsKLSAgICBbbV9jb250ZXh0IHNldExheWVyOnJvb3RMYXll
cl07Ci19Ci0KLUNBTGF5ZXIgKkxheWVySG9zdGluZ0NvbnRleHQ6OnJvb3RMYXllcigpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIFttX2NvbnRleHQgbGF5ZXJdOwotfQotCi1MYXllckhvc3RpbmdDb250
ZXh0SUQgTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y29udGV4dElEKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gW21fY29udGV4dCBjb250ZXh0SWRdOwotfQotCi12b2lkIExheWVySG9zdGluZ0NvbnRleHQ6
OmludmFsaWRhdGUoKQotewotICAgIFttX2NvbnRleHQgaW52YWxpZGF0ZV07Ci19Ci0KLXZvaWQg
TGF5ZXJIb3N0aW5nQ29udGV4dDo6c2V0Q29sb3JTcGFjZShDR0NvbG9yU3BhY2VSZWYgY29sb3JT
cGFjZSkKLXsKLSAgICBbbV9jb250ZXh0IHNldENvbG9yU3BhY2U6Y29sb3JTcGFjZV07Ci19Ci0K
LUNHQ29sb3JTcGFjZVJlZiBMYXllckhvc3RpbmdDb250ZXh0Ojpjb2xvclNwYWNlKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gW21fY29udGV4dCBjb2xvclNwYWNlXTsKLX0KLQotI2lmIFBMQVRGT1JN
KE1BQykKLXZvaWQgTGF5ZXJIb3N0aW5nQ29udGV4dDo6c2V0Q29sb3JNYXRjaFVudGFnZ2VkQ29u
dGVudChib29sIGNvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQpCi17Ci0gICAgW21fY29udGV4dCBz
ZXRDb2xvck1hdGNoVW50YWdnZWRDb250ZW50OmNvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnRdOwot
fQotCi1ib29sIExheWVySG9zdGluZ0NvbnRleHQ6OmNvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQo
KSBjb25zdAotewotICAgIHJldHVybiBbbV9jb250ZXh0IGNvbG9yTWF0Y2hVbnRhZ2dlZENvbnRl
bnRdOwotfQotI2VuZGlmCi0KLXZvaWQgTGF5ZXJIb3N0aW5nQ29udGV4dDo6c2V0RmVuY2VQb3J0
KG1hY2hfcG9ydF90IGZlbmNlUG9ydCkKLXsKLSAgICBbbV9jb250ZXh0IHNldEZlbmNlUG9ydDpm
ZW5jZVBvcnRdOwotfQotCi1NYWNoU2VuZFJpZ2h0IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0
ZUZlbmNlUG9ydCgpCi17Ci0gICAgcmV0dXJuIE1hY2hTZW5kUmlnaHQ6OmFkb3B0KFttX2NvbnRl
eHQgY3JlYXRlRmVuY2VQb3J0XSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Db250cm9sbGVyUHJv
eHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eU1hYy5tbQppbmRleCA1NjgwYjkwN2I2YTY2MDUyZGUwMGJkZjc0YjEzMTYzYjVkM2I1
OGIzLi5kMTZjZDI3NjY5ZDM1MzkzOWJmMjRhNzk2MWM1MzkzYjIyMmE3NzAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpbkNvbnRyb2xsZXJQcm94eU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eU1hYy5tbQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQogCiAjaW1wb3J0ICJMYXllckhvc3RpbmdDb250ZXh0LmgiCisjaW1wb3J0ICJMYXll
clRyZWVDb250ZXh0LmgiCiAjaW1wb3J0ICJQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuaCIKICNp
bXBvcnQgIlBsdWdpblByb2Nlc3MuaCIKICNpbXBvcnQgIlBsdWdpblByb2Nlc3NQcm94eU1lc3Nh
Z2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMDg3NmFkZDEzNTQzZWU4ZmNlZWJhNjM1
YmE5OTkzNmVkN2M4NmM1Ni4uMTcwYWMwMzA5NGE0ZTM1Y2QyYmM3ZjEzOGMzYzM1ZGVhNGNiZTIw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNjksNiArNjksNyBAQCBQbGF0Zm9ybS9jZy9D
R1V0aWxpdGllcy5jcHAKIFBsYXRmb3JtL2NsYXNzaWZpZXIvY29jb2EvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0NsYXNzaWZpZXJDb2NvYS5jcHAKIFBsYXRmb3JtL2NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuY3BwCiAKK1BsYXRmb3JtL2NvY29hL0xheWVySG9zdGlu
Z0NvbnRleHQubW0KIFBsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVy
Lm1tCiBQbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLm1t
CiBQbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAKQEAgLTg0LDcgKzg1LDYgQEAg
UGxhdGZvcm0vaW9zL1BheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlci5tbQogUGxhdGZvcm0v
SVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hNZXNz
YWdlLmNwcAogCi1QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQogUGxhdGZvcm0v
bWFjL01hY2hVdGlsaXRpZXMuY3BwCiBQbGF0Zm9ybS9tYWMvTWVudVV0aWxpdGllcy5tbQogUGxh
dGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWZiZGMyNTc1ZTQ0ODE4NWU0YmNiYzg0MmU0
ZjdhNTQ0MzEzYjQzOS4uYTY1ZjMwNDM2Y2ExYzcxM2ZmYTlhZjA5ZTAxMWJiMWIwYTRiNmI2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC01NTExLDggKzU1MTEsNiBAQAogCQkxQTdFODE0RTExNTJEMjI0MDAwMzY5NUIgLyogbWFjICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlCQ0UwOTM3NjE0
RkIxMjhCMDAxMTM4RDkgLyogTGF5ZXJIb3N0aW5nQ29udGV4dC5oICovLAotCQkJCUJDRTA5Mzc1
MTRGQjEyOEIwMDExMzhEOSAvKiBMYXllckhvc3RpbmdDb250ZXh0Lm1tICovLAogCQkJCTFBMjRC
NUYwMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0aWVzLmNwcCAqLywKIAkJCQkxQTI0QjVG
MTExRjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0aWxpdGllcy5oICovLAogCQkJCTUxOTMzREVCMTk2
NUVCMjQwMDhBQzNFQSAvKiBNZW51VXRpbGl0aWVzLmggKi8sCkBAIC03MTk5LDYgKzcxOTcsOCBA
QAogCQk0NDUwQUVCRTFEQzNGQUFDMDA5OTQzRjIgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUJDRTA5Mzc2MTRGQjEyOEIwMDExMzhEOSAv
KiBMYXllckhvc3RpbmdDb250ZXh0LmggKi8sCisJCQkJQkNFMDkzNzUxNEZCMTI4QjAwMTEzOEQ5
IC8qIExheWVySG9zdGluZ0NvbnRleHQubW0gKi8sCiAJCQkJQTE3OThCM0QyMjJEOTdBMjAwMDc2
NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmggKi8sCiAJCQkJQTE3OThCNEEy
MjJGMTMzQTAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLm1tICovLAog
CQkJCUExNzk4QjNGMjIyRDk4QjYwMDA3NjRCRCAvKiBQYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyLmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggY2M5ODU3
MzE0MzEzOWMwYTUzNTM5OWNkYmFiYzJmYTI3ZmE0OTk2NC4uYzE5M2M3ZTFkNTMzYzdiZjc0N2Zk
OTU4YzU3YmNlNTk2MjVmMWZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAt
NDMsMTEgKzQzLDExIEBACiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogbmFtZXNwYWNlIFdlYkNv
cmUgeworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogZXh0ZXJuIFdURkxvZ0NoYW5uZWwgTG9n
TWVkaWE7Ci19CiAjZW5kaWYKK30KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKQEAgLTg2LDcgKzg2LDE4IEBAIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
fk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpwcmVwYXJlRm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgTWVkaWFQbGF5ZXI6OlBy
ZWxvYWQgcHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlKQogewotICAg
IG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UHJlcGFyZUZvclBsYXliYWNrKG1f
aWQsIHByaXZhdGVNb2RlLCBwcmVsb2FkLCBwcmVzZXJ2ZXNQaXRjaCwgcHJlcGFyZSksIDApOwor
ICAgIGF1dG8gbGF5b3V0UmVjdCA9IG1fcGxheWVyLT5wbGF5ZXJDb250ZW50Qm94UmVjdCgpOwor
ICAgIGF1dG8gc2NhbGUgPSBtX3BsYXllci0+cGxheWVyQ29udGVudHNTY2FsZSgpOworCisgICAg
bV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlByZXBhcmVG
b3JQbGF5YmFjayhtX2lkLCBwcml2YXRlTW9kZSwgcHJlbG9hZCwgcHJlc2VydmVzUGl0Y2gsIHBy
ZXBhcmUsIGxheW91dFJlY3QsIHNjYWxlKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMp
LCB0aGlzXShhdXRvIGNvbnRleHRJZCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCFjb250ZXh0SWQpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgbV92aWRlb0xheWVyID0gTGF5ZXJIb3N0aW5nQ29udGV4
dDo6Y3JlYXRlUGxhdGZvcm1MYXllckZvckhvc3RpbmdDb250ZXh0KGNvbnRleHRJZC52YWx1ZSgp
KTsKKyAgICB9KTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6bG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUm
IGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKQEAgLTExOSw3ICsxMzAsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Ojpsb2FkKGNvbnN0IFVSTCYgdXJsLCBjbwogCiAgICAgY29ubmVjdGlvbi5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpMb2FkKG1faWQs
IHVybCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgY29udGVudFR5cGUsIGtleVN5c3RlbSksIFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oYXV0byYmIGNvbmZpZ3VyYXRpb24pIHsKICAg
ICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgd2Vha1RoaXMtPm1fY29uZmlndXJhdGlv
biA9IGNvbmZpZ3VyYXRpb247CisgICAgICAgICAgICB3ZWFrVGhpcy0+bV9jb25maWd1cmF0aW9u
ID0gV1RGTW92ZShjb25maWd1cmF0aW9uKTsKICAgICB9KTsKIH0KIApAQCAtMjg5LDYgKzMwMCwx
MSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2l6ZUNoYW5nZWQoV2ViQ29yZTo6
RmxvYXRTaXplIG5hdHVyYWxTaXplKQogICAgIG1fcGxheWVyLT5zaXplQ2hhbmdlZCgpOwogfQog
Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Zmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxl
KCkKK3sKKyAgICBtX3BsYXllci0+Zmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKCk7Cit9CisKIFN0
cmluZyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVuZ2luZURlc2NyaXB0aW9uKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9jb25maWd1cmF0aW9uLmVuZ2luZURlc2NyaXB0aW9uOwpAQCAtMzQ0
LDExICszNjAsNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cHJlcGFyZUZvclJl
bmRlcmluZygpCiAgICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQcmVwYXJl
Rm9yUmVuZGVyaW5nKG1faWQpLCAwKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnNldFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKLXsKLSAgICBtX21hbmFn
ZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFNpemUobV9pZCwgc2l6ZSksIDApOwotfQot
CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlzaWJsZShib29sIHZpc2libGUp
CiB7CiAgICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRWaXNpYmxlKG1f
aWQsIHZpc2libGUpLCAwKTsKQEAgLTQxNiw4ICs0MjcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6bG9hZChNZWRpYVN0cmVhbVByaXZhdGUmKQogCiBQbGF0Zm9ybUxheWVyKiBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fdmlkZW9M
YXllci5nZXQoKTsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShN
QUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUuaAppbmRleCA0MTk3NWNmNTk0ODk1MDk0YjA2NjQ0NGEzYTRlMTJjZDRhZDJmYWZkLi43
ZDY0ZDBhY2Y1MzlmMzMyOTgwMGVkMWUxNzQ4NzFmNGE1ZWQyYjU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLmgKQEAgLTcyLDYgKzcyLDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlQ2Fj
aGVkU3RhdGUoUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZSYmKTsKICAgICB2b2lkIGNoYXJhY3Rlcmlz
dGljQ2hhbmdlZChib29sIGhhc0F1ZGlvLCBib29sIGhhc1ZpZGVvLCBXZWJDb3JlOjpNZWRpYVBs
YXllckVudW1zOjpNb3ZpZUxvYWRUeXBlKTsKICAgICB2b2lkIHNpemVDaGFuZ2VkKFdlYkNvcmU6
OkZsb2F0U2l6ZSk7CisgICAgdm9pZCBmaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoKTsKIAogICAg
IHZvaWQgcmVxdWVzdFJlc291cmNlKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlTG9h
ZGVyOjpMb2FkT3B0aW9ucyk7CiAgICAgdm9pZCByZW1vdmVSZXNvdXJjZShSZW1vdGVNZWRpYVJl
c291cmNlSWRlbnRpZmllcik7CkBAIC0xMDksNyArMTEwLDYgQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgc2hvdWxkSWdub3JlSW50cmluc2ljU2l6ZSgpIGZpbmFsOwogCi0gICAgLy8gVW5pbXBsZW1l
bnRlZAogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURF
T19QUkVTRU5UQVRJT05fTU9ERSkpCkBAIC0xODIsNyArMTgyLDEwIEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGRp
ZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBzZXRTaXplKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmKSBmaW5hbDsKKyAgICAvLyBJbiB0aGUgQ29jb2EgV2ViS2l0IHBv
cnQsIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2V0U2l6ZSgpIGRvZXMgbm90aGlu
ZywKKyAgICAvLyBzbyB0aGUgV2ViIHByb2Nlc3MgZG9lcyBub3QgbmVlZCB0byBzZW5kIElQQyBt
ZXNzYWdlcyB0byBjYWxsIGl0IGluIHRoZSBHUFUgcHJvY2Vzcy4KKyAgICAvLyBPdGhlciBXZWJL
aXQgcG9ydHMgbWF5IG5lZWQgdG8gZG8gdGhhdC4KKyAgICB2b2lkIHNldFNpemUoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYpIGZpbmFsIHsgfQogCiAgICAgdm9pZCBwYWludChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBmaW5hbDsKIApAQCAtMzAy
LDYgKzMwNSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllciogbV9wbGF5
ZXIgeyBudWxscHRyIH07CiAgICAgUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJj
ZUxvYWRlcj4gbV9tZWRpYVJlc291cmNlTG9hZGVyOworICAgIFJldGFpblB0cjxQbGF0Zm9ybUxh
eWVyPiBtX3ZpZGVvTGF5ZXI7CiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyJiBtX21hbmFn
ZXI7CiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVy
IG1fcmVtb3RlRW5naW5lSWRlbnRpZmllcjsKICAgICBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyIG1faWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKaW5kZXggNmVjYmJl
YWJiY2JjM2E4NTMxMTIwODRlM2YzMzY3ZjdjNmM1ODQxOS4uYmZjYjcyNzhkMzFmOGRlZDEwNTQ0
M2I2ZDZkODQxNDRmYWM5NDRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcApAQCAt
MjkzLDE2ICsyOTMsMjIgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmVuZ2luZUZh
aWxlZFRvTG9hZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW8KIAogdm9pZCBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXI6OmNoYXJhY3RlcmlzdGljQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlk
ZW8sIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1vdmllTG9hZFR5cGUgbG9hZFR5cGUpCiB7
Ci0gICAgaWYgKGF1dG8gcGxheWVyID0gbV9wbGF5ZXJzLmdldChpZCkpCisgICAgaWYgKGNvbnN0
IGF1dG8mIHBsYXllciA9IG1fcGxheWVycy5nZXQoaWQpKQogICAgICAgICBwbGF5ZXItPmNoYXJh
Y3RlcmlzdGljQ2hhbmdlZChoYXNBdWRpbywgaGFzVmlkZW8sIGxvYWRUeXBlKTsKIH0KIAogdm9p
ZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnNpemVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgV2ViQ29yZTo6RmxvYXRTaXplIG5hdHVyYWxT
aXplKQogewotICAgIGlmIChhdXRvIHBsYXllciA9IG1fcGxheWVycy5nZXQoaWQpKQorICAgIGlm
IChjb25zdCBhdXRvJiBwbGF5ZXIgPSBtX3BsYXllcnMuZ2V0KGlkKSkKICAgICAgICAgcGxheWVy
LT5zaXplQ2hhbmdlZChuYXR1cmFsU2l6ZSk7CiB9CiAKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyOjpmaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyIGlkKQoreworICAgIGlmIChjb25zdCBhdXRvJiBwbGF5ZXIgPSBt
X3BsYXllcnMuZ2V0KGlkKSkKKyAgICAgICAgcGxheWVyLT5maXJzdFZpZGVvRnJhbWVBdmFpbGFi
bGUoKTsKK30KKwogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnJlcXVlc3RSZXNvdXJj
ZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBSZW1vdGVNZWRpYVJlc291
cmNlSWRlbnRpZmllciByZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9ucyBv
cHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgaWYgKGNvbnN0IGF1dG8mIHBsYXllciA9IG1fcGxheWVycy5nZXQoaWQpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyLmgKaW5kZXggNDY4OWUwMjhiNjdkNDlmM2YyNzc5OWVhOGVhY2Q3MjJk
ZmViMGI4OS4uNTg0ZDQ3NWRmZWFkZTBjZGY2Nzk4ZjM2NDhlN2IxYzlmYThjYjAyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyTWFuYWdlci5oCkBAIC04Nyw2ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCB1cGRhdGVDYWNoZWRTdGF0ZShXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyU3RhdGUmJik7CiAgICAgdm9pZCBjaGFyYWN0ZXJpc3Rp
Y0NoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBib29s
IGhhc0F1ZGlvLCBib29sIGhhc1ZpZGVvLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNb3Zp
ZUxvYWRUeXBlKTsKICAgICB2b2lkIHNpemVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlSWRlbnRpZmllciwgV2ViQ29yZTo6RmxvYXRTaXplKTsKKyAgICB2b2lkIGZpcnN0
VmlkZW9GcmFtZUF2YWlsYWJsZShXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIpOwogCiAgICAgdm9pZCByZXF1ZXN0UmVzb3VyY2UoTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlSWRlbnRpZmllciwgUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI6Okxv
YWRPcHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVtb3Zl
UmVzb3VyY2UoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgUmVtb3RlTWVkaWFS
ZXNvdXJjZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNz
YWdlcy5pbgppbmRleCA1NGEwMWY4YjM1MjJhMWEyNTY2MWVlZWVlNTI3OTJjZDM0M2QwMTNlLi41
MTdiNzRkMDRjODIxM2YzNzg1OTgwMmY0ZDljNjBhMzdjN2QzZTVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjYsNiArMjYsNyBAQAogbWVzc2Fn
ZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewogICAgIE5ldHdv
cmtTdGF0ZUNoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVy
IGlkLCBzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclN0YXRlIHN0YXRlKQogICAgIFJl
YWR5U3RhdGVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmll
ciBpZCwgc3RydWN0IFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZSBzdGF0ZSkKKyAgICBG
aXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyIGlkKQogICAgIFZvbHVtZUNoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyIGlkLCBkb3VibGUgdm9sdW1lKQogICAgIE11dGVDaGFuZ2VkKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgYm9vbCBtdXRlKQog
ICAgIFRpbWVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmll
ciBpZCwgc3RydWN0IFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZSBzdGF0ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmNwcAppbmRleCA5NzdiOGVkNjJkOGMwZGNkODgzY2IzZjBjMDU4OTc3ODk5
ZGZiYzczLi42MTdkN2Q3NmMwYThhNWViOWRiYTU3YThhODA2YmM2MDg2MjZmNDVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uY3BwCkBAIC00OCw2ICs0OCw3IEBACiAKICNpZiBQTEFURk9STShDT0NP
QSkKICNpbmNsdWRlICJMYXllckhvc3RpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiTGF5ZXJUcmVl
Q29udGV4dC5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGViNmI1NmI5
ZDNkM2YwNzdjNWM2M2JmZGYzN2RkOGZmZDE4NDRhZjguLmFiMTY4MDRiNWFhODQxOTMyZTkwYTQ0
N2JlZGZjMmNmOTk1Yjc1ZDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0wMS0xMyAgUGVu
ZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYSBpbiBHUFUgcHJv
Y2Vzc10gSW1wbGVtZW50IHRoZSByZW1vdGUgdmlkZW8gbGF5ZXIgc3VwcG9ydAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MDQzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIGdwdS1wcm9jZXNzL1Rlc3RF
eHBlY3RhdGlvbnM6CisKIDIwMjAtMDEtMTAgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW01lZGlhIGluIEdQVSBwcm9jZXNzXSBFeHRlbmQgdGhlIEdQ
VSBwcm9jZXNzIHNhbmRib3ggdG8gYWxsb3cgYWNjZXNzIHRvIGxvY2FsIGZpbGVzIHdoZW4gbmVj
ZXNzYXJ5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRp
b25zIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhNTE2
MzNmZmFkYjI0MGNiMjdkYmQxZDY0YTRjMzAwYjUwOGQxZWVlLi5iZWE0N2FkNDZkYWVkZTc0NTQ0
YTI4MjU3NzQ5ODc2MzVmNjkzNmQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vz
cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTIzMSw2ICsyMzEsOSBAQCBodHRwL3Rlc3RzL2NhY2hlL2Rpc2stY2FjaGUv
ZGlzay1jYWNoZS1tZWRpYS1zbWFsbC5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL2NvbnRlbnRl
eHRlbnNpb25zL3RleHQtdHJhY2stYmxvY2tlZC5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL2Nv
bnRlbnRleHRlbnNpb25zL3ZpZGVvLWVsZW1lbnQtcmVzb3VyY2UtdHlwZS5odG1sIFsgU2tpcCBd
CiBodHRwL3Rlc3RzL21lZGlhIFsgU2tpcCBdCitodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWxvYWQt
dHdpY2UuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9tZWRpYS92aWRlby1wbGF5LXByb2dyZXNz
Lmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcHJlbG9hZC5odG1sIFsgUGFz
cyBdCiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS1tZWRpYWtleXNlc3Npb24uaHRt
bCBbIFNraXAgXQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUtbWVkaWFzdHJlYW0u
aHRtbCBbIFNraXAgXQogaHR0cC93cHQvbWVkaWFyZWNvcmRlciBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387597</attachid>
            <date>2020-01-13 17:20:24 -0800</date>
            <delta_ts>2020-01-14 10:59:57 -0800</delta_ts>
            <desc>Rebased patch</desc>
            <filename>bug-206043-20200113172023.patch</filename>
            <type>text/plain</type>
            <size>53937</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NDYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTA0OWRhZWNiNjBlMTVj
ZWMxZTJmZGY0YzFlMzExMTgxYWRjOGEwNS4uNmRjZjkzNDA2YTY1ZDMyOWJlNzkyOTNiNGVhZjhm
NDU0ZDExN2NlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTAxLTEzICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBwcm9j
ZXNzXSBJbXBsZW1lbnQgdGhlIHJlbW90ZSB2aWRlbyBsYXllciBzdXBwb3J0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwNDMKKworICAgICAgICBS
ZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJl
ZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgZnVuY3Rpb24g
TGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlUGxhdGZvcm1MYXllckZvckhvc3RpbmdDb250ZXh0
KCkgd2hpY2ggaXMKKyAgICAgICAgYSB3cmFwcGVyIG9mIFtDQUxheWVyIF93ZWJfcmVuZGVyTGF5
ZXJXaXRoQ29udGV4dElEOl0gdG8gY3JlYXRlIFdlYlZpZGVvSG9zdGluZ0xheWVyIGluIHRoZSBX
ZWIgcHJvY2Vzcy4KKworICAgICAgICBJdCBhbHNvIG1vdmVzIExheWVySG9zdGluZ0NvbnRleHQu
W2h8bW1dIHRvIGZyb20gZm9sZGVyICJtYWMiIHRvICJjb2NvYSIgYmVjYXVzZSBMYXllckhvc3Rp
bmdDb250ZXh0CisgICAgICAgIGlzIG5vdCBvbmx5IHVzZWQgb24gdGhlIE1hYyB2ZXJzaW9uLgor
ICAgICAgICBTb21lIGlzc3VlcyByZWxhdGVkIHRvIHVuaWZpZWQgYnVpbGQgYXJlIGFsc28gZml4
ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0UmVjdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dFJlY3Q6OmRl
Y29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJF
eHRyYXMubW06CisgICAgICAgICgrW0NBTGF5ZXIgX3dlYl9yZW5kZXJMYXllcldpdGhDb250ZXh0
SUQ6XSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Np
b25WVC5tbToKKwogMjAyMC0wMS0xMyAgU3VubnkgSGUgIDxzdW5ueV9oZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgRml4IGNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIgdG8gaGFuZGxl
IG5vbi1TVkcgb2JqZWN0IHBhcmVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1MTk3MzBkOWZjYTllMjAyNWU0MjNl
ZDgzYjdmOGMyNmMxYzJlZmJkLi43ZjFkYmIzMmEyZDY3MjNhNTA3MzM5NGQxMGNmMzViOGNhMDFh
YWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIwLTAxLTEzICBQZW5nIExpdSAgPHBl
bmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBwcm9jZXNzXSBJbXBs
ZW1lbnQgdGhlIHJlbW90ZSB2aWRlbyBsYXllciBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwNDMKKworICAgICAgICBSZXZpZXdlZCBi
eSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFJlbW90ZU1lZGlhUGxheWVyUHJveHkgaW4gdGhl
IEdQVSBwcm9jZXNzIGNyZWF0ZXMgYSBMYXllckhvc3RpbmdDb250ZXh0IHdpdGggY3JlYXRlRm9y
RXh0ZXJuYWxIb3N0aW5nUHJvY2VzcygpCisgICAgICAgIGFuZCBzaGFyZSB0aGUgY29udGV4dCBJ
RCB3aXRoIHRoZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUgaW4gdGhlIFdlYiBwcm9jZXNzLgor
ICAgICAgICBUaGVuIHRoZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUgY3JlYXRlcyBhIGhvc3Rp
bmcgbGF5ZXIgd2l0aCB0aGUgY29udGV4dCBJRCBmb3IgcmVuZGVyaW5nLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggdXBkYXRlcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UHJlcGFyZUZv
clBsYXliYWNrIHRvIHByb3ZpZGUgdGhlIGluaXRpYWwgdmlkZW8gY29udGVudCBib3ggYW5kIHNj
YWxlCisgICAgICAgIGZvciB0aGUgVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQyBvbiB0
aGUgR1BVIHByb2Nlc3MgdG8gY3JlYXRlIFdlYlZpZGVvQ29udGFpbmVyTGF5ZXIuCisgICAgICAg
IEl0IGFkZHMgWFBDIG1lc3NhZ2UgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpGaXJzdFZpZGVv
RnJhbWVBdmFpbGFibGUgdG8gbm90aWZ5IHRoZSByZW5kZXJlciBvbiB0aGUgV2ViIHByb2Nlc3Mg
dGhhdCB0aGUgdmlkZW8gbGF5ZXIgaXMgcmVhZHkuCisgICAgICAgIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OjpTZXRTaXplIG1lc3NhZ2UgaXMgcmVtb3ZlZCB0byBhdm9pZCB0aGUgdW5u
ZWNlc3NhcnkgWFBDIG1lc3NhZ2UKKyAgICAgICAgYmVjYXVzZSBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpzZXRTaXplKCkgZG9lcyBub3RoaW5nLgorCisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpwcmVwYXJlRm9yUGxheWJh
Y2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6bG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpzZXRT
aXplKTogRGVsZXRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVN
ZWRpYVBsYXllclByb3h5OjpwcmVwYXJlRm9yUGxheWJhY2spOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckZpcnN0VmlkZW9GcmFtZUF2YWlsYWJs
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVy
UmVuZGVyaW5nTW9kZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
clByb3h5OjptZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJDb250ZW50c1NjYWxlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0U2l6ZSk6IERl
bGV0ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5
Lmg6CisgICAgICAgICogUGxhdGZvcm0vY29jb2EvTGF5ZXJIb3N0aW5nQ29udGV4dC5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5o
LgorICAgICAgICAqIFBsYXRmb3JtL2NvY29hL0xheWVySG9zdGluZ0NvbnRleHQubW06IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1t
LgorICAgICAgICAoV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVQbGF0Zm9ybUxh
eWVyRm9ySG9zdGluZ0NvbnRleHQpOgorICAgICAgICAqIFBsYXRmb3JtL2lvcy9QYXltZW50QXV0
aG9yaXphdGlvbkNvbnRyb2xsZXIubW06CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1
Z2luQ29udHJvbGxlclByb3h5TWFjLm1tOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6Cisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwcmVwYXJlRm9yUGxheWJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6bG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6Zmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaXplKTogRGVsZXRlZC4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNoYXJhY3RlcmlzdGlj
Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6c2l6
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmZp
cnN0VmlkZW9GcmFtZUF2YWlsYWJsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisKIDIwMjAtMDEtMTMg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQ
cm9wb2dhdGUgVUlFZGdlSW5zZXRzIGZyb20gV0tXZWJWaWV3IHRvIFdLU2FmZUJyb3dzaW5nV2Fy
bmluZyBvbiBpT1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yU3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3Bh
Y2UuaAppbmRleCAwYWEyNzRhMWM1MDk1MzUyNmE4OGVlNGE0ZWZhM2Y5YzhkMjM3YjNiLi42ZmNk
NzhmYzNlYTNmYjA1NjU2ZWI2NTcyZGE4ZDNlM2QxM2YyODRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oCkBAIC0zMiw2ICszMiw1IEBAIGVudW0g
Y2xhc3MgQ29sb3JTcGFjZSA6IHVpbnQ4X3QgewogICAgIExpbmVhclJHQiwKICAgICBEaXNwbGF5
UDMKIH07Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91
dFJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuaApp
bmRleCBjYzczYjhkZDkxNmNhODlhYjVlNmY0ODQzNWIyMDc1YTI0ZTczZDNmLi44MjQ2OTkxOWM2
ZTY4MmMxMTNmOTJmNDZhYWE0ZTAyMDU0YTBlMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oCkBAIC01Nyw3ICs1NywyOSBAQCBwdWJsaWM6CiAg
ICAgTGF5b3V0UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KSA6IG1fbG9jYXRpb24ocmVjdC5sb2Nh
dGlvbigpKSwgbV9zaXplKHJlY3Quc2l6ZSgpKSB7IH0KICAgICAKICAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBMYXlvdXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOyAvLyBkb24ndCBkbyB0aGlz
IGltcGxpY2l0bHkgc2luY2UgaXQncyBsb3NzeQotICAgICAgICAKKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIGVuY29kZXIgPDwgbV9sb2NhdGlvbiA8PCBtX3NpemU7CisgICAgfQorCisg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8TGF5b3V0UmVj
dD4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxMYXlv
dXRQb2ludD4gbGF5b3V0UG9pbnQ7CisgICAgICAgIGRlY29kZXIgPj4gbGF5b3V0UG9pbnQ7Cisg
ICAgICAgIGlmICghbGF5b3V0UG9pbnQpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgICAgIE9wdGlvbmFsPExheW91dFNpemU+IGxheW91dFNpemU7CisgICAgICAgIGRl
Y29kZXIgPj4gbGF5b3V0U2l6ZTsKKyAgICAgICAgaWYgKCFsYXlvdXRTaXplKQorICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4ge3sgKmxheW91dFBvaW50
LCAqbGF5b3V0U2l6ZSB9fTsKKyAgICB9CisKICAgICBMYXlvdXRQb2ludCBsb2NhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fbG9jYXRpb247IH0KICAgICBMYXlvdXRTaXplIHNpemUoKSBjb25zdCB7
IHJldHVybiBtX3NpemU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQppbmRleCAyM2Ji
MGRlOTE2MGRjYjg2N2QyMjMyMDM1MzhhZDVlN2UzMmY1MDA4Li4xODA1YzBhNWY2Y2ZmMjgzNjVj
ZjZjOGM4NzEzYjQyZTg1MDI5OGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQpAQCAt
ODEsNiArODEsOSBAQAogKyAoQ0FMYXllciAqKV93ZWJfcmVuZGVyTGF5ZXJXaXRoQ29udGV4dElE
Oih1aW50MzJfdCljb250ZXh0SUQKIHsKICAgICBDQUxheWVySG9zdCAqbGF5ZXJIb3N0ID0gW0NB
TGF5ZXJIb3N0IGxheWVyXTsKKyNpZm5kZWYgTkRFQlVHCisgICAgW2xheWVySG9zdCBzZXROYW1l
OkAiV2ViVmlkZW9Ib3N0aW5nTGF5ZXIiXTsKKyNlbmRpZgogICAgIGxheWVySG9zdC5jb250ZXh0
SWQgPSBjb250ZXh0SUQ7CiAgICAgcmV0dXJuIGxheWVySG9zdDsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vz
c2lvblZULm1tCmluZGV4IDE1Mzk3YWI3ZjI3OGFlOGRjNjllMzI1MjM3NjRmYjg4YmZlZGQwMDcu
LmZhOGVlMGIxMDBjZjIxNDA4NTY1MDUxNmJjNGUyM2ExZGIxNWJmMzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2Zl
clNlc3Npb25WVC5tbQpAQCAtMjgsMTggKzI4LDIwIEBACiAKICNpZiBVU0UoVklERU9UT09MQk9Y
KQogCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgog
I2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCiAjaW1wb3J0IDxDb3JlTWVkaWEvQ01Gb3Jt
YXREZXNjcmlwdGlvbi5oPgogI2ltcG9ydCA8Q29yZU1lZGlhL0NNU2FtcGxlQnVmZmVyLmg+CisK
KyNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlh
U29mdExpbmsuaD4KKyNpbXBvcnQgIlZpZGVvVG9vbGJveFNvZnRMaW5rLmgiCiAKICNpZiBIQVZF
KElPU1VSRkFDRSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogI2luY2x1ZGUgPHBhbC9zcGkv
Y29jb2EvSU9TdXJmYWNlU1BJLmg+CiAjZW5kaWYKIAotI2ltcG9ydCAiQ29yZVZpZGVvU29mdExp
bmsuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIFBBTDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKaW5kZXggMGZlNDYzNmE3NGE4MmI2NjhlOTA2NjJk
NGZhZTg5MDNmZWQ4ZjRhNC4uNzg3YjMzYjA4MTQ3NGMzNGRiYjAxYThmNmEzOWE5ZjNkOTU5ZTM1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlh
UGxheWVyUHJveHlDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9NZWRpYVBsYXllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJQcml2YXRlLmg+
CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgpAQCAtMTk3LDE2ICsxOTgsMjAgQEAgdm9pZCBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c3VwcG9ydHNLZXlTeXN0ZW0oTWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmcKICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwogfQogCi12
b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpwcmVwYXJlRm9yUGxheWJhY2soTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgYm9vbCBwcml2YXRlTW9kZSwgV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1Bp
dGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJpbmcpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5OjpwcmVwYXJlRm9yUGxheWJhY2soTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllciBpZCwgYm9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6
UHJlbG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5k
ZXJpbmcsIFdlYkNvcmU6OkxheW91dFJlY3QgbGF5b3V0UmVjdCwgZmxvYXQgdmlkZW9Db250ZW50
U2NhbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8TGF5ZXJIb3N0aW5nQ29udGV4
dElEPiYmIGNvbnRleHRJZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8g
cGxheWVyID0gbV9wcm94aWVzLmdldChpZCkpCi0gICAgICAgIHBsYXllci0+cHJlcGFyZUZvclBs
YXliYWNrKHByaXZhdGVNb2RlLCBwcmVsb2FkLCBwcmVzZXJ2ZXNQaXRjaCwgcHJlcGFyZUZvclJl
bmRlcmluZyk7CisgICAgICAgIHBsYXllci0+cHJlcGFyZUZvclBsYXliYWNrKHByaXZhdGVNb2Rl
LCBwcmVsb2FkLCBwcmVzZXJ2ZXNQaXRjaCwgcHJlcGFyZUZvclJlbmRlcmluZywgbGF5b3V0UmVj
dCwgdmlkZW9Db250ZW50U2NhbGUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBl
bHNlCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiB9CiAKIHZvaWQgUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmxvYWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRp
ZmllciBpZCwgVVJMJiYgdXJsLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiYg
c2FuZGJveEV4dGVuc2lvbiwgV2ViQ29yZTo6Q29udGVudFR5cGUmJiBjb250ZW50VHlwZSwgU3Ry
aW5nJiYga2V5U3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZU1lZGlhUGxheWVy
Q29uZmlndXJhdGlvbiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byBw
bGF5ZXIgPSBtX3Byb3hpZXMuZ2V0KGlkKSkKICAgICAgICAgcGxheWVyLT5sb2FkKFdURk1vdmUo
dXJsKSwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uKSwgV1RGTW92ZShjb250ZW50VHlwZSksIFdU
Rk1vdmUoa2V5U3lzdGVtKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGVsc2UK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eTo6Y2FuY2VsTG9hZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyIGlkKQpAQCAtMjgxLDEyICsyODYsNiBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5OjpwcmVwYXJlRm9yUmVuZGVyaW5nKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZQog
ICAgICAgICBwbGF5ZXItPnByZXBhcmVGb3JSZW5kZXJpbmcoKTsKIH0KIAotdm9pZCBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c2V0U2l6ZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyIGlkLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQotewotICAgIGlmIChh
dXRvIHBsYXllciA9IG1fcHJveGllcy5nZXQoaWQpKQotICAgICAgICBwbGF5ZXItPnNldFNpemUo
c2l6ZSk7Ci19Ci0KIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnNldFZpc2li
bGUoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgYm9vbCB2aXNpYmxlKQog
ewogICAgIGlmIChhdXRvIHBsYXllciA9IG1fcHJveGllcy5nZXQoaWQpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHkuaAppbmRleCBiZTJjNzRkZDQzYTZjNTM4NzUzNDM5ZTRkNTliOTM4MmU5MTY3
NGVhLi42MTE2ZmIxZDI5ZmY1OTJjMWM1ZGVkMGJiOTI1ZDc1MGQ5ZWUwZTVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBSZW1vdGVNZWRpYVJl
c291cmNlTWFuYWdlcjsKIGNsYXNzIFJlbW90ZU1lZGlhUGxheWVyUHJveHk7CiBzdHJ1Y3QgUmVt
b3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uOwogc3RydWN0IFJlbW90ZU1lZGlhUGxheWVyUHJv
eHlDb25maWd1cmF0aW9uOwordXNpbmcgTGF5ZXJIb3N0aW5nQ29udGV4dElEID0gdWludDMyX3Q7
CiAKIGNsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5CiAgICAgOiBwcml2YXRlIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCkBAIC04NSw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
dXBwb3J0c0tleVN5c3RlbShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYmLCBjb25zdCBTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CiAKICAgICB2b2lkIGxvYWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlSWRlbnRpZmllciwgVVJMJiYsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4m
JiwgV2ViQ29yZTo6Q29udGVudFR5cGUmJiwgU3RyaW5nJiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJiYpPiYmKTsKLSAgICB2b2lkIHByZXBh
cmVGb3JQbGF5YmFjayhNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBib29sIHBy
aXZhdGVNb2RlLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkLCBib29sIHByZXNl
cnZlc1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJpbmcpOworICAgIHZvaWQgcHJlcGFyZUZv
clBsYXliYWNrKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIGJvb2wgcHJpdmF0
ZU1vZGUsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQsIGJvb2wgcHJlc2VydmVz
UGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZywgV2ViQ29yZTo6TGF5b3V0UmVjdCwgZmxv
YXQgdmlkZW9Db250ZW50U2NhbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8TGF5
ZXJIb3N0aW5nQ29udGV4dElEPiYmIGNvbnRleHRJZCk+JiYpOwogICAgIHZvaWQgY2FuY2VsTG9h
ZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyKTsKICAgICB2b2lkIHByZXBhcmVU
b1BsYXkoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcik7CiAKQEAgLTEwMyw3ICsx
MDQsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0UHJlc2VydmVzUGl0Y2goTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlSWRlbnRpZmllciwgYm9vbCk7CiAKICAgICB2b2lkIHByZXBhcmVGb3JSZW5k
ZXJpbmcoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBzZXRT
aXplKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmKTsKICAgICB2b2lkIHNldFZpc2libGUoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllciwgYm9vbCk7CiAgICAgdm9pZCBzZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIGJvb2wpOwogICAgIHZvaWQgc2V0Vmlk
ZW9GdWxsc2NyZWVuRnJhbWUoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgV2Vi
Q29yZTo6RmxvYXRSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNz
YWdlcy5pbgppbmRleCA5ZjI1ZDFiODI2ZDM2Mzk1ZmY0YTg1OTQ0ZWRjNGViN2ZlMWRlMmRiLi40
MmYxNzI3MWVmNGQyOGU5NmMyZDg0MDk1NGMxYTZhNGI0YTIwZDA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zNSw3ICszNSw3IEBAIG1lc3Nh
Z2VzIC0+IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5IE5vdFJlZkNvdW50ZWQgewogICAg
IENsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxh
eWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBT
dHJpbmcgcGF0aCwgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2lucykK
ICAgICBTdXBwb3J0c0tleVN5c3RlbShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJF
bnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIFN0cmlu
ZyBrZXlTeXN0ZW0sIFN0cmluZyBtaW1lVHlwZSkgLT4gKGJvb2wgc3VwcG9ydHMpIFN5bmNocm9u
b3VzCiAKLSAgICBQcmVwYXJlRm9yUGxheWJhY2soV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyIGlkLCBib29sIHByaXZhdGVNb2RlLCBlbnVtOnVpbnQ4X3QgV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNo
LCBib29sIHByZXBhcmVGb3JSZW5kZXJpbmcpCisgICAgUHJlcGFyZUZvclBsYXliYWNrKFdlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgYm9vbCBwcml2YXRlTW9k
ZSwgZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQgcHJlbG9h
ZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVyaW5nLCBXZWJDb3Jl
OjpMYXlvdXRSZWN0IGxheW91dFJlY3QsIGZsb2F0IHZpZGVvQ29udGVudFNjYWxlKSAtPiAoT3B0
aW9uYWw8V2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQ+IGxheWVySG9zdGluZ0NvbnRleHRJ
ZCkgQXN5bmMKIAogICAgIExvYWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyIGlkLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246Okhh
bmRsZT4gc2FuZGJveEV4dGVuc2lvbiwgV2ViQ29yZTo6Q29udGVudFR5cGUgY29udGVudFR5cGUs
IFN0cmluZyBrZXlTeXN0ZW0pIC0+IChzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllckNv
bmZpZ3VyYXRpb24gcGxheWVyQ29uZmlndXJhdGlvbikgQXN5bmMKICAgICBDYW5jZWxMb2FkKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCkKQEAgLTU2LDcgKzU2
LDYgQEAgbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgTm90UmVmQ291
bnRlZCB7CiAgICAgU2V0UHJlc2VydmVzUGl0Y2goV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyIGlkLCBib29sIHByZXNlcnZlc1BpdGNoKQogCiAgICAgUHJlcGFyZUZv
clJlbmRlcmluZyhXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQp
Ci0gICAgU2V0U2l6ZShXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIg
aWQsIFdlYkNvcmU6OkludFNpemUgc2l6ZSkKICAgICBTZXRWaXNpYmxlKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgYm9vbCB2aXNpYmxlKQogICAgIFNldFNo
b3VsZE1haW50YWluQXNwZWN0UmF0aW8oV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyIGlkLCBib29sIG1haW50YWluQXNwZWN0UmF0aW8pCiAgICAgU2V0VmlkZW9GdWxs
c2NyZWVuRnJhbWUoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlk
LCBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCBmY2Y4NDEw
OTE1OGMzNjlkODU4YzgyYjMwOTJhMjRhNzBlYTExOGRhLi40MDY5Yjc2NThjM2ZjOTc4OTViZGMx
M2Y4MTgxZGM5OWM1Nzg0OGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC0zOCw2ICszOCw3IEBA
CiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlJlbW90
ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9N
ZWRpYVBsYXllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJQcml2YXRlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpAQCAtMTAzLDEyICsxMDQsMTYgQEAg
dm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpsb2FkKGNvbnN0IFVSTCYgdXJsLCBPcHRpb25h
bDxTYW5kYm94RXh0ZW5zaW9uOjpIYW4KICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNv
bmZpZ3VyYXRpb24pKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpwcmVwYXJl
Rm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6
UHJlbG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5k
ZXJpbmcpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnByZXBhcmVGb3JQbGF5YmFjayhi
b29sIHByaXZhdGVNb2RlLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkIHByZWxv
YWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZywgTGF5b3V0
UmVjdCBsYXlvdXRSZWN0LCBmbG9hdCB2aWRlb0NvbnRlbnRTY2FsZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDxMYXllckhvc3RpbmdDb250ZXh0SUQ+JiYgY29udGV4dElkKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3BsYXllci0+c2V0UHJpdmF0ZUJyb3dzaW5nTW9k
ZShwcml2YXRlTW9kZSk7CiAgICAgbV9wbGF5ZXItPnNldFByZWxvYWQocHJlbG9hZCk7CiAgICAg
bV9wbGF5ZXItPnNldFByZXNlcnZlc1BpdGNoKHByZXNlcnZlc1BpdGNoKTsKICAgICBtX3BsYXll
ci0+cHJlcGFyZUZvclJlbmRlcmluZygpOworICAgIG1fdmlkZW9Db250ZW50Qm94UmVjdCA9IGxh
eW91dFJlY3Q7CisgICAgbV92aWRlb0NvbnRlbnRTY2FsZSA9IHZpZGVvQ29udGVudFNjYWxlOwor
ICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dCA9IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZv
ckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtX2xheWVy
SG9zdGluZ0NvbnRleHQtPmNvbnRleHRJRCgpKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVBsYXll
clByb3h5OjpjYW5jZWxMb2FkKCkKQEAgLTE3NywxMSArMTgyLDYgQEAgdm9pZCBSZW1vdGVNZWRp
YVBsYXllclByb3h5OjpwcmVwYXJlRm9yUmVuZGVyaW5nKCkKICAgICBtX3BsYXllci0+cHJlcGFy
ZUZvclJlbmRlcmluZygpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNldFNp
emUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKLXsKLSAgICBtX3BsYXllci0+c2V0U2l6
ZShzaXplKTsKLX0KLQogdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRWaXNpYmxlKGJv
b2wgdmlzaWJsZSkKIHsKICAgICBtX3BsYXllci0+c2V0VmlzaWJsZSh2aXNpYmxlKTsKQEAgLTQw
NSwxMiArNDA1LDEzIEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJF
bmdpbmVVcGRhdGVkKCkKIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXll
ckZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICBtX2xheWVySG9zdGluZ0NvbnRleHQtPnNldFJvb3RMYXllcihtX3BsYXllci0+cGxhdGZvcm1M
YXllcigpKTsKKyAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXI6OkZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZShtX2lkKSwgMCk7
CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJSZW5kZXJpbmdN
b2RlQ2hhbmdlZCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2xheWVySG9zdGlu
Z0NvbnRleHQtPnNldFJvb3RMYXllcihtX3BsYXllci0+cGxhdGZvcm1MYXllcigpKTsKIH0KIAog
dm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckFjdGl2ZVNvdXJjZUJ1ZmZl
cnNDaGFuZ2VkKCkKQEAgLTQ3MSwxNCArNDcyLDEyIEBAIGJvb2wgUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6bWVkaWFQbGF5ZXJJc0Z1bGxzY3JlZW5QZXJtaXR0ZWQoKSBjb25zdAogCiBMYXlvdXRS
ZWN0IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyQ29udGVudEJveFJlY3QoKSBj
b25zdAogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIExheW91dFJlY3QoKTsK
KyAgICByZXR1cm4gbV92aWRlb0NvbnRlbnRCb3hSZWN0OwogfQogCiBmbG9hdCBSZW1vdGVNZWRp
YVBsYXllclByb3h5OjptZWRpYVBsYXllckNvbnRlbnRzU2NhbGUoKSBjb25zdAogewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIG1fdmlkZW9Db250ZW50
U2NhbGU7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJQYXVz
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuaAppbmRleCAwOWIzYzc4YWMwYjRlMGY0NDgwNDRhYzkyYmI1MTdlNjEx
MzY1NDdkLi5iOGYwNzdkMzRmOTg5OGZiNjc0YTM0MTI2YmU1MGMxNTQ4YzU4N2NiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5LmgKQEAgLTQ1LDYgKzQ1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
QXVkaW9UcmFja1ByaXZhdGU7CitjbGFzcyBMYXllckhvc3RpbmdDb250ZXh0OwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTY0LDcgKzY1LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBnZXRD
b25maWd1cmF0aW9uKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYpOwogCi0gICAgdm9p
ZCBwcmVwYXJlRm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6UHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVu
ZGVyaW5nKTsKKyAgICB2b2lkIHByZXBhcmVGb3JQbGF5YmFjayhib29sIHByaXZhdGVNb2RlLCBX
ZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBi
b29sIHByZXBhcmVGb3JSZW5kZXJpbmcsIFdlYkNvcmU6OkxheW91dFJlY3QsIGZsb2F0IHZpZGVv
Q29udGVudFNjYWxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPExheWVySG9zdGlu
Z0NvbnRleHRJRD4mJik+JiYpOworICAgIHZvaWQgcHJlcGFyZUZvclJlbmRlcmluZygpOwogCiAg
ICAgdm9pZCBsb2FkKGNvbnN0IFVSTCYsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZT4mJiwgY29uc3QgV2ViQ29yZTo6Q29udGVudFR5cGUmLCBjb25zdCBTdHJpbmcmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYmKT4mJik7CiAg
ICAgdm9pZCBjYW5jZWxMb2FkKCk7CkBAIC04NCw4ICs4Niw2IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFByaXZhdGVCcm93c2luZ01vZGUoYm9vbCk7CiAgICAgdm9pZCBzZXRQcmVzZXJ2ZXNQaXRj
aChib29sKTsKIAotICAgIHZvaWQgcHJlcGFyZUZvclJlbmRlcmluZygpOwotICAgIHZvaWQgc2V0
U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAgICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wp
OwogICAgIHZvaWQgc2V0U2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRpbyhib29sKTsKICAgICB2b2lk
IHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKFdlYkNvcmU6OkZsb2F0UmVjdCk7CkBAIC0xOTksNiAr
MTk5LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gbV9zYW5kYm94
RXh0ZW5zaW9uOwogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rp
b247CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVyPiBtX3BsYXllcjsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gbV9sYXllckhvc3RpbmdDb250ZXh0Owog
ICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5JiBtX21hbmFnZXI7CiAgICAgV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIG1fZW5naW5lSWRlbnRp
ZmllcjsKICAgICBWZWN0b3I8V2ViQ29yZTo6Q29udGVudFR5cGU+IG1fdHlwZXNSZXF1aXJpbmdI
YXJkd2FyZVN1cHBvcnQ7CkBAIC0yMDgsNiArMjA5LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1f
c2Vla2FibGVDaGFuZ2VkIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9idWZmZXJlZENoYW5nZWQgeyB0
cnVlIH07CiAgICAgYm9vbCBtX3JlbmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQgeyB0cnVlIH07Cisg
ICAgV2ViQ29yZTo6TGF5b3V0UmVjdCBtX3ZpZGVvQ29udGVudEJveFJlY3Q7CisgICAgZmxvYXQg
bV92aWRlb0NvbnRlbnRTY2FsZSB7IDEuMCB9OwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CiAgICAgY29uc3QgTG9nZ2VyJiBtX2xvZ2dlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vY29jb2EvTGF5ZXJIb3N0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9jb2NvYS9MYXllckhvc3RpbmdDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI5ZmJiMTJkZWFl
OTFhM2UyOWJjYjdhZGE3ZGEwYTdkNWQyZmM3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vY29jb2EvTGF5ZXJIb3N0aW5nQ29udGV4dC5oCkBAIC0wLDAgKzEsOTkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisKK09CSkNfQ0xBU1MgQ0FMYXllcjsKK09CSkNfQ0xBU1MgQ0FDb250ZXh0OworCitu
YW1lc3BhY2UgV1RGIHsKK2NsYXNzIE1hY2hTZW5kUmlnaHQ7Cit9CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCit1c2luZyBMYXllckhvc3RpbmdDb250ZXh0SUQgPSB1aW50MzJfdDsKK2VudW0gY2xh
c3MgTGF5ZXJIb3N0aW5nTW9kZSA6IHVpbnQ4X3Q7CisKK3N0cnVjdCBMYXllckhvc3RpbmdDb250
ZXh0T3B0aW9ucyB7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBib29sIGNhblNob3dX
aGlsZUxvY2tlZCB7IGZhbHNlIH07CisjZW5kaWYKK307CisKK2NsYXNzIExheWVySG9zdGluZ0Nv
bnRleHQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExheWVySG9zdGluZ0NvbnRleHQpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPExheWVySG9zdGluZ0NvbnRleHQ+IGNyZWF0ZUZvclBvcnQoY29uc3QgV1RGOjpNYWNoU2Vu
ZFJpZ2h0JiBzZXJ2ZXJQb3J0KTsKKyAgICAKKyNpZiBIQVZFKE9VVF9PRl9QUk9DRVNTX0xBWUVS
X0hPU1RJTkcpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0
PiBjcmVhdGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9jZXNzKGNvbnN0IExheWVySG9zdGluZ0NvbnRl
eHRPcHRpb25zJiA9IHsgfSk7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBjcmVhdGVGb3JFeHRlcm5hbFBsdWdpbkhv
c3RpbmdQcm9jZXNzKCk7CisjZW5kaWYKKworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0FMYXllcj4g
Y3JlYXRlUGxhdGZvcm1MYXllckZvckhvc3RpbmdDb250ZXh0KExheWVySG9zdGluZ0NvbnRleHRJ
RCk7CisKKyNlbmRpZiAvLyBIQVZFKE9VVF9PRl9QUk9DRVNTX0xBWUVSX0hPU1RJTkcpCisKKyAg
ICBMYXllckhvc3RpbmdDb250ZXh0KCk7CisgICAgfkxheWVySG9zdGluZ0NvbnRleHQoKTsKKwor
ICAgIHZvaWQgc2V0Um9vdExheWVyKENBTGF5ZXIgKik7CisgICAgQ0FMYXllciAqcm9vdExheWVy
KCkgY29uc3Q7CisKKyAgICBMYXllckhvc3RpbmdDb250ZXh0SUQgY29udGV4dElEKCkgY29uc3Q7
CisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisKKyAgICBMYXllckhvc3RpbmdNb2RlIGxheWVySG9z
dGluZ01vZGUoKSB7IHJldHVybiBtX2xheWVySG9zdGluZ01vZGU7IH0KKworICAgIHZvaWQgc2V0
Q29sb3JTcGFjZShDR0NvbG9yU3BhY2VSZWYpOworICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNw
YWNlKCkgY29uc3Q7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgdm9pZCBzZXRDb2xvck1hdGNo
VW50YWdnZWRDb250ZW50KGJvb2wpOworICAgIGJvb2wgY29sb3JNYXRjaFVudGFnZ2VkQ29udGVu
dCgpIGNvbnN0OworI2VuZGlmCisKKyAgICAvLyBGZW5jZXMgb25seSB3b3JrIG9uIGlPUyBhbmQg
T1MgMTAuMTArLgorICAgIHZvaWQgc2V0RmVuY2VQb3J0KG1hY2hfcG9ydF90KTsKKworICAgIC8v
IGNyZWF0ZUZlbmNlUG9ydCBkb2VzIG5vdCBpbnN0YWxsIHRoZSBmZW5jZSBwb3J0IG9uIHRoZSBM
YXllckhvc3RpbmdDb250ZXh0J3MKKyAgICAvLyBDQUNvbnRleHQ7IGNhbGwgc2V0RmVuY2VQb3J0
KCkgd2l0aCB0aGUgbmV3bHkgY3JlYXRlZCBwb3J0IGlmIHN5bmNocm9uaXphdGlvbgorICAgIC8v
IHdpdGggdGhpcyBjb250ZXh0IGlzIGRlc2lyZWQuCisgICAgV1RGOjpNYWNoU2VuZFJpZ2h0IGNy
ZWF0ZUZlbmNlUG9ydCgpOworCitwcml2YXRlOgorICAgIExheWVySG9zdGluZ01vZGUgbV9sYXll
ckhvc3RpbmdNb2RlOworICAgIFJldGFpblB0cjxDQUNvbnRleHQ+IG1fY29udGV4dDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL2NvY29hL0xheWVySG9zdGluZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L2NvY29hL0xheWVySG9zdGluZ0NvbnRleHQubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQwNThlOWI3MWRhMGUz
ZGM5ZDYwM2EyZmE3NzUxZWYzNTY3N2YwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vY29jb2EvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQpAQCAtMCwwICsxLDE2MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJMYXllckhv
c3RpbmdDb250ZXh0LmgiCisKKyNpbXBvcnQgIkxheWVyVHJlZUNvbnRleHQuaCIKKyNpbXBvcnQg
PFdlYkNvcmUvV2ViQ29yZUNBTGF5ZXJFeHRyYXMuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29y
ZUdyYXBoaWNzU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4K
KyNpbXBvcnQgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitz
dGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6
Y3JlYXRlRm9yUG9ydChjb25zdCBNYWNoU2VuZFJpZ2h0JiBzZXJ2ZXJQb3J0KQoreworICAgIGF1
dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4o
KTsKKworICAgIE5TRGljdGlvbmFyeSAqb3B0aW9ucyA9IEB7CisgICAgICAgIGtDQUNvbnRleHRQ
b3J0TnVtYmVyIDogQChzZXJ2ZXJQb3J0LnNlbmRSaWdodCgpKSwKKyNpZiBQTEFURk9STShNQUMp
CisgICAgICAgIGtDQUNvbnRleHRDSUZpbHRlckJlaGF2aW9yIDogQCJpZ25vcmUiLAorI2VuZGlm
CisgICAgfTsKKworICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fbGF5ZXJIb3N0aW5nTW9kZSA9
IExheWVySG9zdGluZ01vZGU6OkluUHJvY2VzczsKKyAgICBsYXllckhvc3RpbmdDb250ZXh0LT5t
X2NvbnRleHQgPSBbQ0FDb250ZXh0IHJlbW90ZUNvbnRleHRXaXRoT3B0aW9uczpvcHRpb25zXTsK
KworICAgIHJldHVybiBsYXllckhvc3RpbmdDb250ZXh0OworfQorCisjaWYgSEFWRShPVVRfT0Zf
UFJPQ0VTU19MQVlFUl9IT1NUSU5HKQorc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRl
eHQ+IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3Mo
Y29uc3QgTGF5ZXJIb3N0aW5nQ29udGV4dE9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgYXV0byBs
YXllckhvc3RpbmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOwor
ICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fbGF5ZXJIb3N0aW5nTW9kZSA9IExheWVySG9zdGlu
Z01vZGU6Ok91dE9mUHJvY2VzczsKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFU
Rk9STShNQUNDQVRBTFlTVCkKKyAgICAvLyBVc2UgYSB2ZXJ5IGxhcmdlIGRpc3BsYXkgSUQgdG8g
ZW5zdXJlIHRoYXQgdGhlIGNvbnRleHQgaXMgbmV2ZXIgcHV0IG9uLXNjcmVlbiAKKyAgICAvLyB3
aXRob3V0IGJlaW5nIGV4cGxpY2l0bHkgcGFyZW50ZWQuIFNlZSA8cmRhcjovL3Byb2JsZW0vMTYw
ODkyNjc+IGZvciBkZXRhaWxzLgorICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fY29udGV4dCA9
IFtDQUNvbnRleHQgcmVtb3RlQ29udGV4dFdpdGhPcHRpb25zOkB7CisgICAgICAgIGtDQUNvbnRl
eHRTZWN1cmU6IEAob3B0aW9ucy5jYW5TaG93V2hpbGVMb2NrZWQpLAorI2lmIEhBVkUoQ09SRV9B
TklNQVRJT05fUkVOREVSX1NFUlZFUikKKyAgICAgICAga0NBQ29udGV4dElnbm9yZXNIaXRUZXN0
IDogQFlFUywKKyAgICAgICAga0NBQ29udGV4dERpc3BsYXlJZCA6IEAxMDAwMAorI2VuZGlmCisg
ICAgfV07CisjZWxpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpICYmIEVOQUJMRShXRUJQUk9DRVNT
X1dJTkRPV1NFUlZFUl9CTE9DS0lORykKKyAgICBbQ0FDb250ZXh0IHNldEFsbG93c0NHU0Nvbm5l
Y3Rpb25zOk5PXTsKKyAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2NvbnRleHQgPSBbQ0FDb250
ZXh0IHJlbW90ZUNvbnRleHRXaXRoT3B0aW9uczpAeworICAgICAgICBrQ0FDb250ZXh0Q0lGaWx0
ZXJCZWhhdmlvciA6ICBAImlnbm9yZSIsCisgICAgfV07CisjZWxzZQorICAgIGxheWVySG9zdGlu
Z0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQgY29udGV4dFdpdGhDR1NDb25uZWN0aW9u
OkNHU01haW5Db25uZWN0aW9uSUQoKSBvcHRpb25zOkB7CisgICAgICAgIGtDQUNvbnRleHRDSUZp
bHRlckJlaGF2aW9yIDogQCJpZ25vcmUiLAorICAgIH1dOworI2VuZGlmCisgICAgCisgICAgcmV0
dXJuIGxheWVySG9zdGluZ0NvbnRleHQ7Cit9CisKKyNpZiBQTEFURk9STShNQUMpCitzdGQ6OnVu
aXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRl
Rm9yRXh0ZXJuYWxQbHVnaW5Ib3N0aW5nUHJvY2VzcygpCit7CisgICAgYXV0byBsYXllckhvc3Rp
bmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOworICAgIGxheWVy
SG9zdGluZ0NvbnRleHQtPm1fbGF5ZXJIb3N0aW5nTW9kZSA9IExheWVySG9zdGluZ01vZGU6Ok91
dE9mUHJvY2VzczsKKyAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2NvbnRleHQgPSBbQ0FDb250
ZXh0IGNvbnRleHRXaXRoQ0dTQ29ubmVjdGlvbjpDR1NNYWluQ29ubmVjdGlvbklEKCkgb3B0aW9u
czpAeyBrQ0FDb250ZXh0Q0lGaWx0ZXJCZWhhdmlvciA6IEAiaWdub3JlIiB9XTsKKyAgICByZXR1
cm4gbGF5ZXJIb3N0aW5nQ29udGV4dDsKK30KKyNlbmRpZgorCitSZXRhaW5QdHI8Q0FMYXllcj4g
TGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlUGxhdGZvcm1MYXllckZvckhvc3RpbmdDb250ZXh0
KExheWVySG9zdGluZ0NvbnRleHRJRCBjb250ZXh0SUQpCit7CisgICAgcmV0dXJuIFtDQUxheWVy
IF93ZWJfcmVuZGVyTGF5ZXJXaXRoQ29udGV4dElEOmNvbnRleHRJRF07Cit9CisKKyNlbmRpZiAv
LyBIQVZFKE9VVF9PRl9QUk9DRVNTX0xBWUVSX0hPU1RJTkcpCisKK0xheWVySG9zdGluZ0NvbnRl
eHQ6OkxheWVySG9zdGluZ0NvbnRleHQoKQoreworfQorCitMYXllckhvc3RpbmdDb250ZXh0Ojp+
TGF5ZXJIb3N0aW5nQ29udGV4dCgpCit7Cit9CisKK3ZvaWQgTGF5ZXJIb3N0aW5nQ29udGV4dDo6
c2V0Um9vdExheWVyKENBTGF5ZXIgKnJvb3RMYXllcikKK3sKKyAgICBbbV9jb250ZXh0IHNldExh
eWVyOnJvb3RMYXllcl07Cit9CisKK0NBTGF5ZXIgKkxheWVySG9zdGluZ0NvbnRleHQ6OnJvb3RM
YXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2NvbnRleHQgbGF5ZXJdOworfQorCitMYXll
ckhvc3RpbmdDb250ZXh0SUQgTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y29udGV4dElEKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gW21fY29udGV4dCBjb250ZXh0SWRdOworfQorCit2b2lkIExheWVySG9z
dGluZ0NvbnRleHQ6OmludmFsaWRhdGUoKQoreworICAgIFttX2NvbnRleHQgaW52YWxpZGF0ZV07
Cit9CisKK3ZvaWQgTGF5ZXJIb3N0aW5nQ29udGV4dDo6c2V0Q29sb3JTcGFjZShDR0NvbG9yU3Bh
Y2VSZWYgY29sb3JTcGFjZSkKK3sKKyAgICBbbV9jb250ZXh0IHNldENvbG9yU3BhY2U6Y29sb3JT
cGFjZV07Cit9CisKK0NHQ29sb3JTcGFjZVJlZiBMYXllckhvc3RpbmdDb250ZXh0Ojpjb2xvclNw
YWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fY29udGV4dCBjb2xvclNwYWNlXTsKK30KKwor
I2lmIFBMQVRGT1JNKE1BQykKK3ZvaWQgTGF5ZXJIb3N0aW5nQ29udGV4dDo6c2V0Q29sb3JNYXRj
aFVudGFnZ2VkQ29udGVudChib29sIGNvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQpCit7CisgICAg
W21fY29udGV4dCBzZXRDb2xvck1hdGNoVW50YWdnZWRDb250ZW50OmNvbG9yTWF0Y2hVbnRhZ2dl
ZENvbnRlbnRdOworfQorCitib29sIExheWVySG9zdGluZ0NvbnRleHQ6OmNvbG9yTWF0Y2hVbnRh
Z2dlZENvbnRlbnQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9jb250ZXh0IGNvbG9yTWF0Y2hV
bnRhZ2dlZENvbnRlbnRdOworfQorI2VuZGlmCisKK3ZvaWQgTGF5ZXJIb3N0aW5nQ29udGV4dDo6
c2V0RmVuY2VQb3J0KG1hY2hfcG9ydF90IGZlbmNlUG9ydCkKK3sKKyAgICBbbV9jb250ZXh0IHNl
dEZlbmNlUG9ydDpmZW5jZVBvcnRdOworfQorCitNYWNoU2VuZFJpZ2h0IExheWVySG9zdGluZ0Nv
bnRleHQ6OmNyZWF0ZUZlbmNlUG9ydCgpCit7CisgICAgcmV0dXJuIE1hY2hTZW5kUmlnaHQ6OmFk
b3B0KFttX2NvbnRleHQgY3JlYXRlRmVuY2VQb3J0XSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9pb3MvUGF5bWVudEF1dGhv
cml6YXRpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9pb3MvUGF5bWVu
dEF1dGhvcml6YXRpb25Db250cm9sbGVyLm1tCmluZGV4IGYxNjMxYmEwZmNjNzI5ZDA2ODRkODdj
ZmE2MmZhNjY4OTE3ODY3NDMuLjViODRlZmViMzE0YTQ1OTEyOWQ3MTM3MDQxYjg3YzYzZGMxNjFj
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vaW9zL1BheW1lbnRBdXRob3Jp
emF0aW9uQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2lvcy9QYXlt
ZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXIubW0KQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9y
dCAiV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0IDxwYWwvY29jb2Ev
UGFzc0tpdFNvZnRMaW5rLmg+CisjaW1wb3J0IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KIAog
QGludGVyZmFjZSBXS1BheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlckRlbGVnYXRlIDogV0tQ
YXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIDxQS1BheW1lbnRBdXRob3JpemF0aW9uQ29udHJv
bGxlckRlbGVnYXRlLCBQS1BheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlclByaXZhdGVEZWxl
Z2F0ZT4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0
aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29u
dGV4dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OWNhZGZlNmRiMTZmY2M5NDNh
OGYxOTJlNWQwMWZmOGMwMTQ3NjhlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRl
eHQuaAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTItMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgotI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgotCi1PQkpDX0NMQVNTIENBTGF5ZXI7Ci1PQkpDX0NMQVNTIENBQ29udGV4
dDsKLQotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBNYWNoU2VuZFJpZ2h0OwotfQotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLQotdXNpbmcgTGF5ZXJIb3N0aW5nQ29udGV4dElEID0gdWludDMyX3Q7Ci0g
ICAgCi1zdHJ1Y3QgTGF5ZXJIb3N0aW5nQ29udGV4dE9wdGlvbnMgewotI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgYm9vbCBjYW5TaG93V2hpbGVMb2NrZWQgeyBmYWxzZSB9OwotI2VuZGlm
Ci19OwotCi1jbGFzcyBMYXllckhvc3RpbmdDb250ZXh0IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShMYXllckhvc3RpbmdDb250ZXh0KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBjcmVh
dGVGb3JQb3J0KGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc2VydmVyUG9ydCk7Ci0gICAgCi0j
aWYgSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gY3JlYXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJv
Y2Vzcyhjb25zdCBMYXllckhvc3RpbmdDb250ZXh0T3B0aW9ucyYgPSB7IH0pOwotCi0jaWYgUExB
VEZPUk0oTUFDKQotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4
dD4gY3JlYXRlRm9yRXh0ZXJuYWxQbHVnaW5Ib3N0aW5nUHJvY2VzcygpOwotI2VuZGlmCi0gICAg
Ci0jZW5kaWYgLy8gSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQotCi0gICAgTGF5
ZXJIb3N0aW5nQ29udGV4dCgpOwotICAgIH5MYXllckhvc3RpbmdDb250ZXh0KCk7Ci0KLSAgICB2
b2lkIHNldFJvb3RMYXllcihDQUxheWVyICopOwotICAgIENBTGF5ZXIgKnJvb3RMYXllcigpIGNv
bnN0OwotCi0gICAgTGF5ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJRCgpIGNvbnN0OwotICAg
IHZvaWQgaW52YWxpZGF0ZSgpOwotCi0gICAgTGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdN
b2RlKCkgeyByZXR1cm4gbV9sYXllckhvc3RpbmdNb2RlOyB9Ci0KLSAgICB2b2lkIHNldENvbG9y
U3BhY2UoQ0dDb2xvclNwYWNlUmVmKTsKLSAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSgp
IGNvbnN0OwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIHZvaWQgc2V0Q29sb3JNYXRjaFVudGFn
Z2VkQ29udGVudChib29sKTsKLSAgICBib29sIGNvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQoKSBj
b25zdDsKLSNlbmRpZgotCi0gICAgLy8gRmVuY2VzIG9ubHkgd29yayBvbiBpT1MgYW5kIE9TIDEw
LjEwKy4KLSAgICB2b2lkIHNldEZlbmNlUG9ydChtYWNoX3BvcnRfdCk7Ci0KLSAgICAvLyBjcmVh
dGVGZW5jZVBvcnQgZG9lcyBub3QgaW5zdGFsbCB0aGUgZmVuY2UgcG9ydCBvbiB0aGUgTGF5ZXJI
b3N0aW5nQ29udGV4dCdzCi0gICAgLy8gQ0FDb250ZXh0OyBjYWxsIHNldEZlbmNlUG9ydCgpIHdp
dGggdGhlIG5ld2x5IGNyZWF0ZWQgcG9ydCBpZiBzeW5jaHJvbml6YXRpb24KLSAgICAvLyB3aXRo
IHRoaXMgY29udGV4dCBpcyBkZXNpcmVkLgotICAgIFdURjo6TWFjaFNlbmRSaWdodCBjcmVhdGVG
ZW5jZVBvcnQoKTsKLQotcHJpdmF0ZToKLSAgICBMYXllckhvc3RpbmdNb2RlIG1fbGF5ZXJIb3N0
aW5nTW9kZTsKLSAgICBSZXRhaW5QdHI8Q0FDb250ZXh0PiBtX2NvbnRleHQ7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9t
YWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xh
eWVySG9zdGluZ0NvbnRleHQubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhZWU0
N2VhYjk1ZjU4YTZiNDE3ODVjMGY0ZmY3ZjAyYjA0Y2Y0NDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5
ZXJIb3N0aW5nQ29udGV4dC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE1MyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkxheWVySG9zdGluZ0Nv
bnRleHQuaCIKLQotI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KLSNpbXBv
cnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgotI2ltcG9ydCA8d3RmL01hY2hTZW5k
UmlnaHQuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0ZDo6dW5pcXVlX3B0cjxMYXllckhv
c3RpbmdDb250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JQb3J0KGNvbnN0IE1h
Y2hTZW5kUmlnaHQmIHNlcnZlclBvcnQpCi17Ci0gICAgYXV0byBsYXllckhvc3RpbmdDb250ZXh0
ID0gbWFrZVVuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOwotCi0gICAgTlNEaWN0aW9uYXJ5
ICpvcHRpb25zID0gQHsKLSAgICAgICAga0NBQ29udGV4dFBvcnROdW1iZXIgOiBAKHNlcnZlclBv
cnQuc2VuZFJpZ2h0KCkpLAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAga0NBQ29udGV4dENJ
RmlsdGVyQmVoYXZpb3IgOiBAImlnbm9yZSIsCi0jZW5kaWYKLSAgICB9OwotCi0gICAgbGF5ZXJI
b3N0aW5nQ29udGV4dC0+bV9sYXllckhvc3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6SW5Q
cm9jZXNzOwotICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQg
cmVtb3RlQ29udGV4dFdpdGhPcHRpb25zOm9wdGlvbnNdOwotCi0gICAgcmV0dXJuIGxheWVySG9z
dGluZ0NvbnRleHQ7Ci19Ci0KLSNpZiBIQVZFKE9VVF9PRl9QUk9DRVNTX0xBWUVSX0hPU1RJTkcp
Ci1zdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4
dDo6Y3JlYXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2Vzcyhjb25zdCBMYXllckhvc3RpbmdDb250
ZXh0T3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBt
YWtlVW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7Ci0gICAgbGF5ZXJIb3N0aW5nQ29udGV4
dC0+bV9sYXllckhvc3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQcm9jZXNzOwot
Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotICAg
IC8vIFVzZSBhIHZlcnkgbGFyZ2UgZGlzcGxheSBJRCB0byBlbnN1cmUgdGhhdCB0aGUgY29udGV4
dCBpcyBuZXZlciBwdXQgb24tc2NyZWVuIAotICAgIC8vIHdpdGhvdXQgYmVpbmcgZXhwbGljaXRs
eSBwYXJlbnRlZC4gU2VlIDxyZGFyOi8vcHJvYmxlbS8xNjA4OTI2Nz4gZm9yIGRldGFpbHMuCi0g
ICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9jb250ZXh0ID0gW0NBQ29udGV4dCByZW1vdGVDb250
ZXh0V2l0aE9wdGlvbnM6QHsKLSAgICAgICAga0NBQ29udGV4dFNlY3VyZTogQChvcHRpb25zLmNh
blNob3dXaGlsZUxvY2tlZCksCi0jaWYgSEFWRShDT1JFX0FOSU1BVElPTl9SRU5ERVJfU0VSVkVS
KQotICAgICAgICBrQ0FDb250ZXh0SWdub3Jlc0hpdFRlc3QgOiBAWUVTLAotICAgICAgICBrQ0FD
b250ZXh0RGlzcGxheUlkIDogQDEwMDAwCi0jZW5kaWYKLSAgICB9XTsKLSNlbGlmICFQTEFURk9S
TShNQUNDQVRBTFlTVCkgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5H
KQotICAgIFtDQUNvbnRleHQgc2V0QWxsb3dzQ0dTQ29ubmVjdGlvbnM6Tk9dOwotICAgIGxheWVy
SG9zdGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQgcmVtb3RlQ29udGV4dFdpdGhP
cHRpb25zOkB7Ci0gICAgICAgIGtDQUNvbnRleHRDSUZpbHRlckJlaGF2aW9yIDogIEAiaWdub3Jl
IiwKLSAgICB9XTsKLSNlbHNlCi0gICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9jb250ZXh0ID0g
W0NBQ29udGV4dCBjb250ZXh0V2l0aENHU0Nvbm5lY3Rpb246Q0dTTWFpbkNvbm5lY3Rpb25JRCgp
IG9wdGlvbnM6QHsKLSAgICAgICAga0NBQ29udGV4dENJRmlsdGVyQmVoYXZpb3IgOiBAImlnbm9y
ZSIsCi0gICAgfV07Ci0jZW5kaWYKLSAgICAKLSAgICByZXR1cm4gbGF5ZXJIb3N0aW5nQ29udGV4
dDsKLX0KLQotI2lmIFBMQVRGT1JNKE1BQykKLXN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdD
b250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbFBsdWdpbkhvc3Rp
bmdQcm9jZXNzKCkKLXsKLSAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVl
PExheWVySG9zdGluZ0NvbnRleHQ+KCk7Ci0gICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9sYXll
ckhvc3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQcm9jZXNzOwotICAgIGxheWVy
SG9zdGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQgY29udGV4dFdpdGhDR1NDb25u
ZWN0aW9uOkNHU01haW5Db25uZWN0aW9uSUQoKSBvcHRpb25zOkB7IGtDQUNvbnRleHRDSUZpbHRl
ckJlaGF2aW9yIDogQCJpZ25vcmUiIH1dOwotICAgIHJldHVybiBsYXllckhvc3RpbmdDb250ZXh0
OwotfQotI2VuZGlmCi0jZW5kaWYgLy8gSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5H
KQotCi1MYXllckhvc3RpbmdDb250ZXh0OjpMYXllckhvc3RpbmdDb250ZXh0KCkKLXsKLX0KLQot
TGF5ZXJIb3N0aW5nQ29udGV4dDo6fkxheWVySG9zdGluZ0NvbnRleHQoKQotewotfQotCi12b2lk
IExheWVySG9zdGluZ0NvbnRleHQ6OnNldFJvb3RMYXllcihDQUxheWVyICpyb290TGF5ZXIpCi17
Ci0gICAgW21fY29udGV4dCBzZXRMYXllcjpyb290TGF5ZXJdOwotfQotCi1DQUxheWVyICpMYXll
ckhvc3RpbmdDb250ZXh0Ojpyb290TGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBbbV9jb250
ZXh0IGxheWVyXTsKLX0KLQotTGF5ZXJIb3N0aW5nQ29udGV4dElEIExheWVySG9zdGluZ0NvbnRl
eHQ6OmNvbnRleHRJRCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX2NvbnRleHQgY29udGV4dElk
XTsKLX0KLQotdm9pZCBMYXllckhvc3RpbmdDb250ZXh0OjppbnZhbGlkYXRlKCkKLXsKLSAgICBb
bV9jb250ZXh0IGludmFsaWRhdGVdOwotfQotCi12b2lkIExheWVySG9zdGluZ0NvbnRleHQ6OnNl
dENvbG9yU3BhY2UoQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UpCi17Ci0gICAgW21fY29udGV4
dCBzZXRDb2xvclNwYWNlOmNvbG9yU3BhY2VdOwotfQotCi1DR0NvbG9yU3BhY2VSZWYgTGF5ZXJI
b3N0aW5nQ29udGV4dDo6Y29sb3JTcGFjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX2NvbnRl
eHQgY29sb3JTcGFjZV07Ci19Ci0KLSNpZiBQTEFURk9STShNQUMpCi12b2lkIExheWVySG9zdGlu
Z0NvbnRleHQ6OnNldENvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQoYm9vbCBjb2xvck1hdGNoVW50
YWdnZWRDb250ZW50KQotewotICAgIFttX2NvbnRleHQgc2V0Q29sb3JNYXRjaFVudGFnZ2VkQ29u
dGVudDpjb2xvck1hdGNoVW50YWdnZWRDb250ZW50XTsKLX0KLQotYm9vbCBMYXllckhvc3RpbmdD
b250ZXh0Ojpjb2xvck1hdGNoVW50YWdnZWRDb250ZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4g
W21fY29udGV4dCBjb2xvck1hdGNoVW50YWdnZWRDb250ZW50XTsKLX0KLSNlbmRpZgotCi12b2lk
IExheWVySG9zdGluZ0NvbnRleHQ6OnNldEZlbmNlUG9ydChtYWNoX3BvcnRfdCBmZW5jZVBvcnQp
Ci17Ci0gICAgW21fY29udGV4dCBzZXRGZW5jZVBvcnQ6ZmVuY2VQb3J0XTsKLX0KLQotTWFjaFNl
bmRSaWdodCBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGZW5jZVBvcnQoKQotewotICAgIHJl
dHVybiBNYWNoU2VuZFJpZ2h0OjphZG9wdChbbV9jb250ZXh0IGNyZWF0ZUZlbmNlUG9ydF0pOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1
Z2luUHJvY2Vzcy9tYWMvUGx1Z2luQ29udHJvbGxlclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktp
dC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Db250cm9sbGVyUHJveHlNYWMubW0KaW5kZXggNTY4
MGI5MDdiNmE2NjA1MmRlMDBiZGY3NGIxMzE2M2I1ZDNiNThiMy4uZDE2Y2QyNzY2OWQzNTM5Mzli
ZjI0YTc5NjFjNTM5M2IyMjJhNzcwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Q
cm9jZXNzL21hYy9QbHVnaW5Db250cm9sbGVyUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Db250cm9sbGVyUHJveHlNYWMubW0KQEAgLTI5LDYg
KzI5LDcgQEAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAogI2ltcG9ydCAiTGF5
ZXJIb3N0aW5nQ29udGV4dC5oIgorI2ltcG9ydCAiTGF5ZXJUcmVlQ29udGV4dC5oIgogI2ltcG9y
dCAiUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzLmgi
CiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzUHJveHlNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0CmluZGV4IDA4NzZhZGQxMzU0M2VlOGZjZWViYTYzNWJhOTk5MzZlZDdjODZjNTYuLjE3MGFj
MDMwOTRhNGUzNWNkMmJjN2YxMzhjM2MzNWRlYTRjYmUyMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQKQEAgLTY5LDYgKzY5LDcgQEAgUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuY3BwCiBQbGF0Zm9y
bS9jbGFzc2lmaWVyL2NvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2Eu
Y3BwCiBQbGF0Zm9ybS9jbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVy
LmNwcAogCitQbGF0Zm9ybS9jb2NvYS9MYXllckhvc3RpbmdDb250ZXh0Lm1tCiBQbGF0Zm9ybS9j
b2NvYS9QYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5tbQogUGxhdGZvcm0vY29jb2EvUGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5tbQogUGxhdGZvcm0vY29jb2EvU2hhcmVk
TWVtb3J5Q29jb2EuY3BwCkBAIC04NCw3ICs4NSw2IEBAIFBsYXRmb3JtL2lvcy9QYXltZW50QXV0
aG9yaXphdGlvbkNvbnRyb2xsZXIubW0KIFBsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29j
b2EubW0KIFBsYXRmb3JtL0lQQy9jb2NvYS9NYWNoTWVzc2FnZS5jcHAKIAotUGxhdGZvcm0vbWFj
L0xheWVySG9zdGluZ0NvbnRleHQubW0KIFBsYXRmb3JtL21hYy9NYWNoVXRpbGl0aWVzLmNwcAog
UGxhdGZvcm0vbWFjL01lbnVVdGlsaXRpZXMubW0KIFBsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRp
ZXMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDA3OTIzZjg3MTQ3MzdlOWMyODk3YTU1ZDAyYzhjZDRkYmExZWQ2Y2UuLjkxMjM1Y2Vh
M2EwYzAyNzFiYzRkZDc5MzEzNTliZjZkYzFjMzZmNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTUyMyw4ICs1NTIzLDYgQEAKIAkJ
MUE3RTgxNEUxMTUyRDIyNDAwMDM2OTVCIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQkNFMDkzNzYxNEZCMTI4QjAwMTEzOEQ5IC8qIExheWVy
SG9zdGluZ0NvbnRleHQuaCAqLywKLQkJCQlCQ0UwOTM3NTE0RkIxMjhCMDAxMTM4RDkgLyogTGF5
ZXJIb3N0aW5nQ29udGV4dC5tbSAqLywKIAkJCQkxQTI0QjVGMDExRjUzMUU4MDBDMzgyNjkgLyog
TWFjaFV0aWxpdGllcy5jcHAgKi8sCiAJCQkJMUEyNEI1RjExMUY1MzFFODAwQzM4MjY5IC8qIE1h
Y2hVdGlsaXRpZXMuaCAqLywKIAkJCQk1MTkzM0RFQjE5NjVFQjI0MDA4QUMzRUEgLyogTWVudVV0
aWxpdGllcy5oICovLApAQCAtNzIxMSw2ICs3MjA5LDggQEAKIAkJNDQ1MEFFQkUxREMzRkFBQzAw
OTk0M0YyIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQlCQ0UwOTM3NjE0RkIxMjhCMDAxMTM4RDkgLyogTGF5ZXJIb3N0aW5nQ29udGV4dC5o
ICovLAorCQkJCUJDRTA5Mzc1MTRGQjEyOEIwMDExMzhEOSAvKiBMYXllckhvc3RpbmdDb250ZXh0
Lm1tICovLAogCQkJCUExNzk4QjNEMjIyRDk3QTIwMDA3NjRCRCAvKiBQYXltZW50QXV0aG9yaXph
dGlvblByZXNlbnRlci5oICovLAogCQkJCUExNzk4QjRBMjIyRjEzM0EwMDA3NjRCRCAvKiBQYXlt
ZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5tbSAqLywKIAkJCQlBMTc5OEIzRjIyMkQ5OEI2MDAw
NzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5oICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IGI3YmY0YTZlMzMzODUwMDdiZDg5YjllNWM3YjY1
YzZlMDg5YTQ4ZWYuLjViMTE3NGUzODgzMTI0MzU4NTNlNWMyMDBmYTFiZTg5ZjFjYmQyZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTQ0LDExICs0NCwxMSBAQAogI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKyNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKIGV4dGVybiBXVEZMb2dDaGFubmVsIExvZ01lZGlhOwotfQogI2VuZGlmCit9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC04Nyw3ICs4
NywxOCBAQCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6On5NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUoKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cHJlcGFyZUZvclBsYXliYWNr
KGJvb2wgcHJpdmF0ZU1vZGUsIE1lZGlhUGxheWVyOjpQcmVsb2FkIHByZWxvYWQsIGJvb2wgcHJl
c2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFyZSkKIHsKLSAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlByZXBhcmVGb3JQbGF5YmFjayht
X2lkLCBwcml2YXRlTW9kZSwgcHJlbG9hZCwgcHJlc2VydmVzUGl0Y2gsIHByZXBhcmUpLCAwKTsK
KyAgICBhdXRvIGxheW91dFJlY3QgPSBtX3BsYXllci0+cGxheWVyQ29udGVudEJveFJlY3QoKTsK
KyAgICBhdXRvIHNjYWxlID0gbV9wbGF5ZXItPnBsYXllckNvbnRlbnRzU2NhbGUoKTsKKworICAg
IGNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5OjpQcmVwYXJlRm9yUGxheWJhY2sobV9pZCwgcHJpdmF0ZU1vZGUsIHBy
ZWxvYWQsIHByZXNlcnZlc1BpdGNoLCBwcmVwYXJlLCBsYXlvdXRSZWN0LCBzY2FsZSksIFt3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpc10oYXV0byBjb250ZXh0SWQpIG11dGFibGUg
eworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGlmICghY29udGV4dElkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fdmlkZW9M
YXllciA9IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZVBsYXRmb3JtTGF5ZXJGb3JIb3N0aW5n
Q29udGV4dChjb250ZXh0SWQudmFsdWUoKSk7CisgICAgfSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQoY29uc3QgVVJM
JiB1cmwsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0pCkBAIC0xMTksNyArMTMwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZChjb25zdCBVUkwmIHVybCwgY28KIAogICAg
IGNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5OjpMb2FkKG1faWQsIHVybCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwg
Y29udGVudFR5cGUsIGtleVN5c3RlbSksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0o
YXV0byYmIGNvbmZpZ3VyYXRpb24pIHsKICAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAg
ICAgd2Vha1RoaXMtPm1fY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb247CisgICAgICAgICAg
ICB3ZWFrVGhpcy0+bV9jb25maWd1cmF0aW9uID0gV1RGTW92ZShjb25maWd1cmF0aW9uKTsKICAg
ICB9KTsKIH0KIApAQCAtMjg5LDYgKzMwMCwxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6c2l6ZUNoYW5nZWQoV2ViQ29yZTo6RmxvYXRTaXplIG5hdHVyYWxTaXplKQogICAgIG1f
cGxheWVyLT5zaXplQ2hhbmdlZCgpOwogfQogCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6Zmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKCkKK3sKKyAgICBtX3BsYXllci0+Zmlyc3RWaWRl
b0ZyYW1lQXZhaWxhYmxlKCk7Cit9CisKIFN0cmluZyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OmVuZ2luZURlc2NyaXB0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jb25maWd1cmF0aW9u
LmVuZ2luZURlc2NyaXB0aW9uOwpAQCAtMzQ0LDExICszNjAsNiBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6cHJlcGFyZUZvclJlbmRlcmluZygpCiAgICAgY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQcmVwYXJlRm9yUmVu
ZGVyaW5nKG1faWQpLCAwKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNl
dFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKLXsKLSAgICBjb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFNpemUobV9p
ZCwgc2l6ZSksIDApOwotfQotCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0Vmlz
aWJsZShib29sIHZpc2libGUpCiB7CiAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRWaXNpYmxlKG1faWQsIHZpc2libGUpLCAw
KTsKQEAgLTQ0NCw4ICs0NTUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9h
ZChNZWRpYVN0cmVhbVByaXZhdGUmKQogCiBQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fdmlkZW9MYXllci5nZXQoKTsKIH0K
IAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShW
SURFT19QUkVTRU5UQVRJT05fTU9ERSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAppbmRleCA4
YzRhMDg2MWE2YTA2NTVlNjllOWMyYTYxMDM5NmM2NTU3OTkyOWUzLi43OTFhOWJlMjY3NDA3MTMz
YmJmOWVkNmNkMTJlNmE5MTcyZWQ5YzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKQEAg
LTc3LDYgKzc3LDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlQ2FjaGVkU3RhdGUoUmVtb3Rl
TWVkaWFQbGF5ZXJTdGF0ZSYmKTsKICAgICB2b2lkIGNoYXJhY3RlcmlzdGljQ2hhbmdlZChib29s
IGhhc0F1ZGlvLCBib29sIGhhc1ZpZGVvLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNb3Zp
ZUxvYWRUeXBlKTsKICAgICB2b2lkIHNpemVDaGFuZ2VkKFdlYkNvcmU6OkZsb2F0U2l6ZSk7Cisg
ICAgdm9pZCBmaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoKTsKIAogICAgIHZvaWQgYWRkUmVtb3Rl
QXVkaW9UcmFjayhUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBUcmFja1ByaXZhdGVSZW1v
dGVDb25maWd1cmF0aW9uJiYpOwogICAgIHZvaWQgcmVtb3ZlUmVtb3RlQXVkaW9UcmFjayhUcmFj
a1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyKTsKQEAgLTExOCw3ICsxMTksNiBAQCBwcml2YXRlOgog
CiAgICAgYm9vbCBzaG91bGRJZ25vcmVJbnRyaW5zaWNTaXplKCkgZmluYWw7CiAKLSAgICAvLyBV
bmltcGxlbWVudGVkCiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZp
bmFsOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5B
QkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKQEAgLTE5MSw3ICsxOTEsMTAgQEAgcHJpdmF0
ZToKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlcygpIGNvbnN0IGZpbmFsOwogICAg
IGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHNldFNp
emUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIGZpbmFsOworICAgIC8vIEluIHRoZSBDb2NvYSBX
ZWJLaXQgcG9ydCwgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZXRTaXplKCkgZG9l
cyBub3RoaW5nLAorICAgIC8vIHNvIHRoZSBXZWIgcHJvY2VzcyBkb2VzIG5vdCBuZWVkIHRvIHNl
bmQgSVBDIG1lc3NhZ2VzIHRvIGNhbGwgaXQgaW4gdGhlIEdQVSBwcm9jZXNzLgorICAgIC8vIE90
aGVyIFdlYktpdCBwb3J0cyBtYXkgbmVlZCB0byBkbyB0aGF0LgorICAgIHZvaWQgc2V0U2l6ZShj
b25zdCBXZWJDb3JlOjpJbnRTaXplJikgZmluYWwgeyB9CiAKICAgICB2b2lkIHBhaW50KFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIGZpbmFsOwog
CkBAIC0zMTEsNiArMzE0LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVy
KiBtX3BsYXllciB7IG51bGxwdHIgfTsKICAgICBSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVJlc291cmNlTG9hZGVyPiBtX21lZGlhUmVzb3VyY2VMb2FkZXI7CisgICAgUmV0YWluUHRyPFBs
YXRmb3JtTGF5ZXI+IG1fdmlkZW9MYXllcjsKICAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIm
IG1fbWFuYWdlcjsKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlk
ZW50aWZpZXIgbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyOwogICAgIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXIgbV9pZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcAppbmRl
eCA3ZDVkMzc3M2UwZjRiYjUzMmU2Y2M2M2MxNGQ5MDI5Y2VlZmFmNWE5Li5mZDE4ZDk1MGRlY2E3
OWQ0OWU1NWZjZmJjYjJjNDI4NDRlZWZmMzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIu
Y3BwCkBAIC0yOTMsMTMgKzI5MywxMyBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6
ZW5naW5lRmFpbGVkVG9Mb2FkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aQogCiB2b2lk
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y2hhcmFjdGVyaXN0aWNDaGFuZ2VkKE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlk
ZW8sIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1vdmllTG9hZFR5cGUgbG9hZFR5cGUpCiB7
Ci0gICAgaWYgKGF1dG8gcGxheWVyID0gbV9wbGF5ZXJzLmdldChpZCkpCisgICAgaWYgKGNvbnN0
IGF1dG8mIHBsYXllciA9IG1fcGxheWVycy5nZXQoaWQpKQogICAgICAgICBwbGF5ZXItPmNoYXJh
Y3RlcmlzdGljQ2hhbmdlZChoYXNBdWRpbywgaGFzVmlkZW8sIGxvYWRUeXBlKTsKIH0KIAogdm9p
ZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnNpemVDaGFuZ2VkKE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFdlYkNvcmU6OkZsb2F0U2l6ZSBuYXR1cmFsU2l6ZSkKIHsK
LSAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX3BsYXllcnMuZ2V0KGlkKSkKKyAgICBpZiAoY29uc3Qg
YXV0byYgcGxheWVyID0gbV9wbGF5ZXJzLmdldChpZCkpCiAgICAgICAgIHBsYXllci0+c2l6ZUNo
YW5nZWQobmF0dXJhbFNpemUpOwogfQogCkBAIC0zMjEsNiArMzIxLDEyIEBAIHZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyOjpyZW1vdGVBdWRpb1RyYWNrQ29uZmlndXJhdGlvbkNoYW5nZWQo
TWVkaWFQbGF5ZXJQCiAgICAgICAgIHBsYXllci0+cmVtb3RlQXVkaW9UcmFja0NvbmZpZ3VyYXRp
b25DaGFuZ2VkKHRyYWNrSUQsIFdURk1vdmUoY29uZmlndXJhdGlvbikpOwogfQogCit2b2lkIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Zmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKFdlYktpdDo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCkKK3sKKyAgICBpZiAoY29uc3Qg
YXV0byYgcGxheWVyID0gbV9wbGF5ZXJzLmdldChpZCkpCisgICAgICAgIHBsYXllci0+Zmlyc3RW
aWRlb0ZyYW1lQXZhaWxhYmxlKCk7Cit9CisKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
OjpyZXF1ZXN0UmVzb3VyY2UoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwg
UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZp
ZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRl
cjo6TG9hZE9wdGlvbnMgb3B0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGlmIChjb25zdCBhdXRvJiBwbGF5ZXIgPSBtX3BsYXllcnMu
Z2V0KGlkKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oCmluZGV4IGFiOTRkZjc4MWU3MmQyZWE3
OTQ4YjE0Y2QyMjY4MmJkMjNiMDhiYTIuLjRmODhjYWI0Yzc2YTE1YjAwNTNiOGFkZjM5MzgzZDhj
MGQ3MTJmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaApAQCAtOTIsNiArOTIsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgYWRkUmVtb3RlQXVkaW9UcmFjayhNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyLCBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBUcmFja1ByaXZh
dGVSZW1vdGVDb25maWd1cmF0aW9uJiYpOwogICAgIHZvaWQgcmVtb3ZlUmVtb3RlQXVkaW9UcmFj
ayhNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBUcmFja1ByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbW90ZUF1ZGlvVHJhY2tDb25maWd1cmF0aW9uQ2hhbmdl
ZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBUcmFja1ByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyLCBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uJiYpOworICAgIHZvaWQg
Zmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllcik7CiAKICAgICB2b2lkIHJlcXVlc3RSZXNvdXJjZShNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRl
cjo6TG9hZE9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBy
ZW1vdmVSZXNvdXJjZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBSZW1vdGVN
ZWRpYVJlc291cmNlSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
Lm1lc3NhZ2VzLmluCmluZGV4IDAwODRhZmMzNWQ0ZjdkZDYyNDEwZTFmMmQ0Njc3MWFlM2UzZDUw
ODEuLmNkNWY5MzkyNTUzNzhmMDQzZDRiZTI4YjJlYjk4MTdlYWRiNzEzOWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yNiw2ICsyNiw3IEBACiBt
ZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgTm90UmVmQ291bnRlZCB7CiAgICAg
TmV0d29ya1N0YXRlQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIgaWQsIHN0cnVjdCBXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyU3RhdGUgc3RhdGUpCiAg
ICAgUmVhZHlTdGF0ZUNoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyIGlkLCBzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclN0YXRlIHN0YXRlKQor
ICAgIEZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZShXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXIgaWQpCiAgICAgVm9sdW1lQ2hhbmdlZChXZWJLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIGRvdWJsZSB2b2x1bWUpCiAgICAgTXV0ZUNoYW5n
ZWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBib29sIG11
dGUpCiAgICAgVGltZUNoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyIGlkLCBzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclN0YXRlIHN0YXRlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IDk3N2I4ZWQ2MmQ4YzBkY2Q4ODNjYjNmMGMwNTg5
Nzc4OTlkZmJjNzMuLjYxN2Q3ZDc2YzBhOGE1ZWI5ZGJhNTdhOGE4MDZiYzYwODYyNmY0NWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQogI2luY2x1ZGUgIkxheWVySG9zdGluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJMYXll
clRyZWVDb250ZXh0LmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzA3
Y2UzNWU3MjQwZTNlNTc0NTU4NzI3ZjMzYjc4NjNkMGU2OTRhMi4uZjZhMGQ0NWI5MGQwMjJlOWMx
OWI2YTlmZjg0YjQyM2ZhNGZlYzhkNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTAxLTEz
ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQ
VSBwcm9jZXNzXSBJbXBsZW1lbnQgdGhlIHJlbW90ZSB2aWRlbyBsYXllciBzdXBwb3J0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwNDMKKworICAg
ICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogZ3B1LXByb2Nlc3Mv
VGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMC0wMS0xMyAgU3VubnkgSGUgIDxzdW5ueV9oZUBhcHBs
ZS5jb20+CiAKICAgICAgICAgRml4IGNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIg
dG8gaGFuZGxlIG5vbi1TVkcgb2JqZWN0IHBhcmVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Z3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggNzIwZTZlMzYxYzJlYTFlNGI5MDhmMGUwOTA1NzAxYzliYWE5
ZWZhMS4uMTFhMmMyMGE1ZjFmYmY1NzlkZjk5ZWE2ZDA4NDhjMTBmMzM4OWRlYyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0yMzMsNiArMjMzLDkgQEAgaHR0
cC90ZXN0cy9jYWNoZS9kaXNrLWNhY2hlL2Rpc2stY2FjaGUtbWVkaWEtc21hbGwuaHRtbCBbIFNr
aXAgXQogaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy90ZXh0LXRyYWNrLWJsb2NrZWQuaHRt
bCBbIFNraXAgXQogaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy92aWRlby1lbGVtZW50LXJl
c291cmNlLXR5cGUuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9tZWRpYSBbIFNraXAgXQoraHR0
cC90ZXN0cy9tZWRpYS92aWRlby1sb2FkLXR3aWNlLmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVzdHMv
bWVkaWEvdmlkZW8tcGxheS1wcm9ncmVzcy5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL21lZGlh
L3ZpZGVvLXByZWxvYWQuaHRtbCBbIFBhc3MgXQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2Ut
Y2FjaGUtbWVkaWFrZXlzZXNzaW9uLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvbmF2aWdhdGlv
bi9wYWdlLWNhY2hlLW1lZGlhc3RyZWFtLmh0bWwgWyBTa2lwIF0KIGh0dHAvd3B0L21lZGlhcmVj
b3JkZXIgWyBTa2lwIF0K
</data>
<flag name="commit-queue"
          id="403392"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387680</attachid>
            <date>2020-01-14 11:40:22 -0800</date>
            <delta_ts>2020-01-14 14:07:57 -0800</delta_ts>
            <desc>Rebased patch for landing</desc>
            <filename>bug-206043-20200114114021.patch</filename>
            <type>text/plain</type>
            <size>55099</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODBlYTM2MTYwYjhmNDcz
NmQ4NWUyMjA2ZjAyZjE4ODQwZGQ0ODY3YS4uNWVmNjc5NDllNGIyOTRmOThhNWExOTE5MzhmNzlm
NDc2Zjk2MTFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTAxLTE0ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBwcm9j
ZXNzXSBJbXBsZW1lbnQgdGhlIHJlbW90ZSB2aWRlbyBsYXllciBzdXBwb3J0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwNDMKKworICAgICAgICBS
ZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJl
ZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgZnVuY3Rpb24g
TGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlUGxhdGZvcm1MYXllckZvckhvc3RpbmdDb250ZXh0
KCkgd2hpY2ggaXMKKyAgICAgICAgYSB3cmFwcGVyIG9mIFtDQUxheWVyIF93ZWJfcmVuZGVyTGF5
ZXJXaXRoQ29udGV4dElEOl0gdG8gY3JlYXRlIFdlYlZpZGVvSG9zdGluZ0xheWVyIGluIHRoZSBX
ZWIgcHJvY2Vzcy4KKworICAgICAgICBJdCBhbHNvIG1vdmVzIExheWVySG9zdGluZ0NvbnRleHQu
W2h8bW1dIHRvIGZyb20gZm9sZGVyICJtYWMiIHRvICJjb2NvYSIgYmVjYXVzZSBMYXllckhvc3Rp
bmdDb250ZXh0CisgICAgICAgIGlzIG5vdCBvbmx5IHVzZWQgb24gdGhlIE1hYyB2ZXJzaW9uLgor
ICAgICAgICBTb21lIGlzc3VlcyByZWxhdGVkIHRvIHVuaWZpZWQgYnVpbGQgYXJlIGFsc28gZml4
ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0UmVjdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dFJlY3Q6OmRl
Y29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJF
eHRyYXMubW06CisgICAgICAgICgrW0NBTGF5ZXIgX3dlYl9yZW5kZXJMYXllcldpdGhDb250ZXh0
SUQ6XSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Np
b25WVC5tbToKKwogMjAyMC0wMS0xNCAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjU0NTA1LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA4NWViMDU0NzdlZWUyYTA2NGVjNzM3YzVkYjI1ZGQyMzYyYmRjMDY3Li41NTc4MTkzZjU3ZTZh
ZDRmNTc4ZWM5MDJkZTM2NDQwMzA1NDYzYzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisy
MDIwLTAxLTE0ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01l
ZGlhIGluIEdQVSBwcm9jZXNzXSBJbXBsZW1lbnQgdGhlIHJlbW90ZSB2aWRlbyBsYXllciBzdXBw
b3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYw
NDMKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFJlbW90
ZU1lZGlhUGxheWVyUHJveHkgaW4gdGhlIEdQVSBwcm9jZXNzIGNyZWF0ZXMgYSBMYXllckhvc3Rp
bmdDb250ZXh0IHdpdGggY3JlYXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2VzcygpCisgICAgICAg
IGFuZCBzaGFyZSB0aGUgY29udGV4dCBJRCB3aXRoIHRoZSBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGUgaW4gdGhlIFdlYiBwcm9jZXNzLgorICAgICAgICBUaGVuIHRoZSBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGUgY3JlYXRlcyBhIGhvc3RpbmcgbGF5ZXIgd2l0aCB0aGUgY29udGV4dCBJRCBmb3Ig
cmVuZGVyaW5nLgorCisgICAgICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eTo6UHJlcGFyZUZvclBsYXliYWNrIHRvIHByb3ZpZGUgdGhlIGluaXRpYWwg
dmlkZW8gY29udGVudCBib3ggYW5kIHNjYWxlCisgICAgICAgIGZvciB0aGUgVmlkZW9GdWxsc2Ny
ZWVuTGF5ZXJNYW5hZ2VyT2JqQyBvbiB0aGUgR1BVIHByb2Nlc3MgdG8gY3JlYXRlIFdlYlZpZGVv
Q29udGFpbmVyTGF5ZXIuCisgICAgICAgIEl0IGFkZHMgWFBDIG1lc3NhZ2UgUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyOjpGaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUgdG8gbm90aWZ5IHRoZSByZW5k
ZXJlciBvbiB0aGUgV2ViIHByb2Nlc3MgdGhhdCB0aGUgdmlkZW8gbGF5ZXIgaXMgcmVhZHkuCisg
ICAgICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRTaXplIG1lc3NhZ2UgaXMg
cmVtb3ZlZCB0byBhdm9pZCB0aGUgdW5uZWNlc3NhcnkgWFBDIG1lc3NhZ2UKKyAgICAgICAgYmVj
YXVzZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRTaXplKCkgZG9lcyBu
b3RoaW5nLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5OjpwcmVwYXJlRm9yUGxheWJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6bG9hZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OjpzZXRTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpwcmVwYXJlRm9yUGxheWJh
Y2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXll
ckZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyUHJveHk6Om1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQ
bGF5ZXJDb250ZW50c1NjYWxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6c2V0U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lmg6CisgICAgICAgICogUGxhdGZvcm0vY29jb2EvTGF5
ZXJIb3N0aW5nQ29udGV4dC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9t
YWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5oLgorICAgICAgICAqIFBsYXRmb3JtL2NvY29hL0xheWVy
SG9zdGluZ0NvbnRleHQubW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21h
Yy9MYXllckhvc3RpbmdDb250ZXh0Lm1tLgorICAgICAgICAoV2ViS2l0OjpMYXllckhvc3RpbmdD
b250ZXh0OjpjcmVhdGVQbGF0Zm9ybUxheWVyRm9ySG9zdGluZ0NvbnRleHQpOgorICAgICAgICAq
IFBsYXRmb3JtL2lvcy9QYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXIubW06CisgICAgICAg
ICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luQ29udHJvbGxlclByb3h5TWFjLm1tOgorICAgICAg
ICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpwcmVwYXJlRm9yUGxheWJhY2spOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Zmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwbGF0Zm9ybUxheWVy
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRT
aXplKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI6OmNoYXJhY3RlcmlzdGljQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlcjo6c2l6ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXI6OmFkZFJlbW90ZVZpZGVvVHJhY2spOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnJlbW92ZVJlbW90ZVZpZGVvVHJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnJlbW90ZVZpZGVvVHJh
Y2tDb25maWd1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlcjo6Zmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW46Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoK
KwogMjAyMC0wMS0xNCAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjU0NTA1LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oCmluZGV4IDBhYTI3NGExYzUwOTUzNTI2YTg4
ZWU0YTRlZmEzZjljOGQyMzdiM2IuLjZmY2Q3OGZjM2VhM2ZiMDU2NTZlYjY1NzJkYThkM2UzZDEz
ZjI4NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
U3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNl
LmgKQEAgLTMyLDYgKzMyLDUgQEAgZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdCB7CiAg
ICAgTGluZWFyUkdCLAogICAgIERpc3BsYXlQMwogfTsKLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oCmluZGV4IGNjNzNiOGRkOTE2Y2E4OWFiNWU2ZjQ4NDM1
YjIwNzVhMjRlNzNkM2YuLjgyNDY5OTE5YzZlNjgyYzExM2Y5MmY0NmFhYTRlMDIwNTRhMGUxMTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmgKQEAg
LTU3LDcgKzU3LDI5IEBAIHB1YmxpYzoKICAgICBMYXlvdXRSZWN0KGNvbnN0IEludFJlY3QmIHJl
Y3QpIDogbV9sb2NhdGlvbihyZWN0LmxvY2F0aW9uKCkpLCBtX3NpemUocmVjdC5zaXplKCkpIHsg
fQogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IExheW91dFJlY3QoY29uc3QgRmxv
YXRSZWN0Jik7IC8vIGRvbid0IGRvIHRoaXMgaW1wbGljaXRseSBzaW5jZSBpdCdzIGxvc3N5Ci0g
ICAgICAgIAorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBtX2xvY2F0
aW9uIDw8IG1fc2l6ZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorICAg
IHN0YXRpYyBPcHRpb25hbDxMYXlvdXRSZWN0PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAg
ICB7CisgICAgICAgIE9wdGlvbmFsPExheW91dFBvaW50PiBsYXlvdXRQb2ludDsKKyAgICAgICAg
ZGVjb2RlciA+PiBsYXlvdXRQb2ludDsKKyAgICAgICAgaWYgKCFsYXlvdXRQb2ludCkKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8TGF5b3V0U2l6
ZT4gbGF5b3V0U2l6ZTsKKyAgICAgICAgZGVjb2RlciA+PiBsYXlvdXRTaXplOworICAgICAgICBp
ZiAoIWxheW91dFNpemUpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
ICAgIHJldHVybiB7eyAqbGF5b3V0UG9pbnQsICpsYXlvdXRTaXplIH19OworICAgIH0KKwogICAg
IExheW91dFBvaW50IGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbjsgfQogICAg
IExheW91dFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4
dHJhcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVD
QUxheWVyRXh0cmFzLm1tCmluZGV4IDIzYmIwZGU5MTYwZGNiODY3ZDIyMzIwMzUzOGFkNWU3ZTMy
ZjUwMDguLjE4MDVjMGE1ZjZjZmYyODM2NWNmNmM4Yzg3MTNiNDJlODUwMjk4ZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVDQUxheWVy
RXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkNvcmVDQUxheWVyRXh0cmFzLm1tCkBAIC04MSw2ICs4MSw5IEBACiArIChDQUxheWVyICopX3dl
Yl9yZW5kZXJMYXllcldpdGhDb250ZXh0SUQ6KHVpbnQzMl90KWNvbnRleHRJRAogewogICAgIENB
TGF5ZXJIb3N0ICpsYXllckhvc3QgPSBbQ0FMYXllckhvc3QgbGF5ZXJdOworI2lmbmRlZiBOREVC
VUcKKyAgICBbbGF5ZXJIb3N0IHNldE5hbWU6QCJXZWJWaWRlb0hvc3RpbmdMYXllciJdOworI2Vu
ZGlmCiAgICAgbGF5ZXJIb3N0LmNvbnRleHRJZCA9IGNvbnRleHRJRDsKICAgICByZXR1cm4gbGF5
ZXJIb3N0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW0KaW5kZXggMTUzOTdhYjdmMjc4YWU4
ZGM2OWUzMjUyMzc2NGZiODhiZmVkZDAwNy4uZmE4ZWUwYjEwMGNmMjE0MDg1NjUwNTE2YmM0ZTIz
YTFkYjE1YmYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tCkBAIC0yOCwxOCArMjgsMjAg
QEAKIAogI2lmIFVTRShWSURFT1RPT0xCT1gpCiAKKyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENH
LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYVNhbXBsZUFWRk9iakMuaCIK
ICNpbXBvcnQgPENvcmVNZWRpYS9DTUZvcm1hdERlc2NyaXB0aW9uLmg+CiAjaW1wb3J0IDxDb3Jl
TWVkaWEvQ01TYW1wbGVCdWZmZXIuaD4KKworI2ltcG9ydCAiQ29yZVZpZGVvU29mdExpbmsuaCIK
ICNpbXBvcnQgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgorI2ltcG9ydCAiVmlkZW9Ub29s
Ym94U29mdExpbmsuaCIKIAogI2lmIEhBVkUoSU9TVVJGQUNFKSAmJiAhUExBVEZPUk0oTUFDQ0FU
QUxZU1QpCiAjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9JT1N1cmZhY2VTUEkuaD4KICNlbmRpZgog
Ci0jaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1
c2luZyBuYW1lc3BhY2UgUEFMOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAppbmRl
eCAxNzIyNDQ1ZGU4ZjgxMWQwMWNjNjNhMGE0NDMzMTJlODcxZDE1OTg0Li45ZjRlNzBhMmVjMTJm
MThmZDBiNTkzYmJkNjg0MWZiMzk4Yjg3YTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclByb3h5
LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb24uaCIKICNp
bmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0xheW91
dFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9NZWRpYVBsYXllclByaXZhdGUuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CkBA
IC0xOTcsMTYgKzE5OCwyMCBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojpz
dXBwb3J0c0tleVN5c3RlbShNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZwogICAgIGNvbXBsZXRp
b25IYW5kbGVyKHJlc3VsdCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHk6OnByZXBhcmVGb3JQbGF5YmFjayhNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVy
IGlkLCBib29sIHByaXZhdGVNb2RlLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2Fk
IHByZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZykK
K3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnByZXBhcmVGb3JQbGF5YmFjayhN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBib29sIHByaXZhdGVNb2RlLCBX
ZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkIHByZWxvYWQsIGJvb2wgcHJlc2VydmVz
UGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZywgV2ViQ29yZTo6TGF5b3V0UmVjdCBsYXlv
dXRSZWN0LCBmbG9hdCB2aWRlb0NvbnRlbnRTY2FsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxMYXllckhvc3RpbmdDb250ZXh0SUQ+JiYgY29udGV4dElkKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX3Byb3hpZXMuZ2V0KGlkKSkKLSAg
ICAgICAgcGxheWVyLT5wcmVwYXJlRm9yUGxheWJhY2socHJpdmF0ZU1vZGUsIHByZWxvYWQsIHBy
ZXNlcnZlc1BpdGNoLCBwcmVwYXJlRm9yUmVuZGVyaW5nKTsKKyAgICAgICAgcGxheWVyLT5wcmVw
YXJlRm9yUGxheWJhY2socHJpdmF0ZU1vZGUsIHByZWxvYWQsIHByZXNlcnZlc1BpdGNoLCBwcmVw
YXJlRm9yUmVuZGVyaW5nLCBsYXlvdXRSZWN0LCB2aWRlb0NvbnRlbnRTY2FsZSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworICAgIGVsc2UKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
eyB9KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6bG9hZChNZWRp
YVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBVUkwmJiB1cmwsIE9wdGlvbmFsPFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZT4mJiBzYW5kYm94RXh0ZW5zaW9uLCBXZWJDb3JlOjpDb250
ZW50VHlwZSYmIGNvbnRlbnRUeXBlLCBTdHJpbmcmJiBrZXlTeXN0ZW0sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmIChhdXRvIHBsYXllciA9IG1fcHJveGllcy5nZXQoaWQpKQogICAg
ICAgICBwbGF5ZXItPmxvYWQoV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24p
LCBXVEZNb3ZlKGNvbnRlbnRUeXBlKSwgV1RGTW92ZShrZXlTeXN0ZW0pLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CisgICAgZWxzZQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0p
OwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjYW5jZWxMb2FkKE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQpCkBAIC0yODEsMTIgKzI4Niw2IEBA
IHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnByZXBhcmVGb3JSZW5kZXJpbmco
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlCiAgICAgICAgIHBsYXllci0+cHJlcGFyZUZvclJlbmRl
cmluZygpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpzZXRTaXpl
KE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIHNpemUpCi17Ci0gICAgaWYgKGF1dG8gcGxheWVyID0gbV9wcm94aWVzLmdldChpZCkp
Ci0gICAgICAgIHBsYXllci0+c2V0U2l6ZShzaXplKTsKLX0KLQogdm9pZCBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eTo6c2V0VmlzaWJsZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyIGlkLCBib29sIHZpc2libGUpCiB7CiAgICAgaWYgKGF1dG8gcGxheWVyID0gbV9wcm94
aWVzLmdldChpZCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCmluZGV4IGM1YzE0MDk5ZTkx
ODUyNDVlYzM4Y2RmNmFiMDQ2MTUyNzUyMDNmZjMuLjQ2OGMzYTUwZGQxODRiMzc3MDIxZmE4NDRl
NGI3ZWI1MmYwZWM3ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCkBAIC00Miw2ICs0
Miw3IEBAIGNsYXNzIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOwogY2xhc3MgUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eTsKIHN0cnVjdCBSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb247CiBz
dHJ1Y3QgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb247Cit1c2luZyBMYXllckhv
c3RpbmdDb250ZXh0SUQgPSB1aW50MzJfdDsKIAogY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkKICAgICA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKQEAgLTg1LDcgKzg2
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN1cHBvcnRzS2V5U3lzdGVtKFdlYkNvcmU6Ok1lZGlh
UGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiYsIGNvbnN0
IFN0cmluZyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAogICAgIHZvaWQg
bG9hZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBVUkwmJiwgT3B0aW9uYWw8
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYmLCBXZWJDb3JlOjpDb250ZW50VHlwZSYmLCBTdHJp
bmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRp
b24mJik+JiYpOwotICAgIHZvaWQgcHJlcGFyZUZvclBsYXliYWNrKE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXIsIGJvb2wgcHJpdmF0ZU1vZGUsIFdlYkNvcmU6Ok1lZGlhUGxheWVy
RW51bXM6OlByZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRl
cmluZyk7CisgICAgdm9pZCBwcmVwYXJlRm9yUGxheWJhY2soTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlSWRlbnRpZmllciwgYm9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVt
czo6UHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVyaW5n
LCBXZWJDb3JlOjpMYXlvdXRSZWN0LCBmbG9hdCB2aWRlb0NvbnRlbnRTY2FsZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxMYXllckhvc3RpbmdDb250ZXh0SUQ+JiYgY29udGV4dElk
KT4mJik7CiAgICAgdm9pZCBjYW5jZWxMb2FkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIpOwogICAgIHZvaWQgcHJlcGFyZVRvUGxheShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyKTsKIApAQCAtMTAzLDcgKzEwNCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRQ
cmVzZXJ2ZXNQaXRjaChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBib29sKTsK
IAogICAgIHZvaWQgcHJlcGFyZUZvclJlbmRlcmluZyhNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyKTsKLSAgICB2b2lkIHNldFNpemUoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIHZvaWQgc2V0VmlzaWJsZShN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBib29sKTsKICAgICB2b2lkIHNldFNo
b3VsZE1haW50YWluQXNwZWN0UmF0aW8oTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmll
ciwgYm9vbCk7CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGVJZGVudGlmaWVyLCBXZWJDb3JlOjpGbG9hdFJlY3QpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDExNzA2MzBiYjM1OTlmZjli
YjE2ZDlhMTU0ODg0OWYxN2NiMTRmOWEuLjBlY2M2ODlkOTZjZmZmZDAxYmQxYzVhNmNmNjQ3ZmRh
NzU5NGMzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMu
aW4KQEAgLTM1LDcgKzM1LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkgTm90UmVmQ291bnRlZCB7CiAgICAgQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhlbnVt
OnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVy
IHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIFN0cmluZyBwYXRoLCBWZWN0b3I8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zKQogICAgIFN1cHBvcnRzS2V5U3lzdGVtKGVudW06dWlu
dDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVt
b3RlRW5naW5lSWRlbnRpZmllciwgU3RyaW5nIGtleVN5c3RlbSwgU3RyaW5nIG1pbWVUeXBlKSAt
PiAoYm9vbCBzdXBwb3J0cykgU3luY2hyb25vdXMKIAotICAgIFByZXBhcmVGb3JQbGF5YmFjayhX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIGJvb2wgcHJpdmF0
ZU1vZGUsIGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkIHBy
ZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZykKKyAg
ICBQcmVwYXJlRm9yUGxheWJhY2soV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyIGlkLCBib29sIHByaXZhdGVNb2RlLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJFbnVtczo6UHJlbG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHBy
ZXBhcmVGb3JSZW5kZXJpbmcsIFdlYkNvcmU6OkxheW91dFJlY3QgbGF5b3V0UmVjdCwgZmxvYXQg
dmlkZW9Db250ZW50U2NhbGUpIC0+IChPcHRpb25hbDxXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRl
eHRJRD4gbGF5ZXJIb3N0aW5nQ29udGV4dElkKSBBc3luYwogCiAgICAgTG9hZChXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFVSTCB1cmwsIE9wdGlvbmFsPFdl
YktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5kYm94RXh0ZW5zaW9uLCBXZWJDb3Jl
OjpDb250ZW50VHlwZSBjb250ZW50VHlwZSwgU3RyaW5nIGtleVN5c3RlbSkgLT4gKHN0cnVjdCBX
ZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiBwbGF5ZXJDb25maWd1cmF0aW9u
KSBBc3luYwogICAgIENhbmNlbExvYWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyIGlkKQpAQCAtNTYsNyArNTYsNiBAQCBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKICAgICBTZXRQcmVzZXJ2ZXNQaXRjaChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIGJvb2wgcHJlc2Vy
dmVzUGl0Y2gpCiAKICAgICBQcmVwYXJlRm9yUmVuZGVyaW5nKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCkKLSAgICBTZXRTaXplKFdlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgV2ViQ29yZTo6SW50U2l6ZSBzaXplKQogICAg
IFNldFZpc2libGUoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlk
LCBib29sIHZpc2libGUpCiAgICAgU2V0U2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRpbyhXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIGJvb2wgbWFpbnRhaW5Bc3Bl
Y3RSYXRpbykKICAgICBTZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShXZWJLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHkuY3BwCmluZGV4IDFjMjQxOTMyOTIyMGE0Y2MxNzMxMmJjM2QwNGE5ZTZmMTk5YWE3
ZTYuLmE4ZWU4NThiYjkzZWI0ODE4YzBmZWY5MTc3YmRhNmZkYTE4Mzc2ZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNl
TWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZVZpZGVvVHJhY2tQcm94eS5oIgogI2luY2x1ZGUg
IldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTGF5b3V0UmVjdC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01l
ZGlhUGxheWVyUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
QEAgLTEwNSwxMiArMTA2LDE2IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bG9hZChj
b25zdCBVUkwmIHVybCwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuCiAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CiB9CiAKLXZvaWQgUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eTo6cHJlcGFyZUZvclBsYXliYWNrKGJvb2wgcHJpdmF0ZU1vZGUsIFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQgcHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRj
aCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVyaW5nKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5
OjpwcmVwYXJlRm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6UHJlbG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBh
cmVGb3JSZW5kZXJpbmcsIExheW91dFJlY3QgbGF5b3V0UmVjdCwgZmxvYXQgdmlkZW9Db250ZW50
U2NhbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8TGF5ZXJIb3N0aW5nQ29udGV4
dElEPiYmIGNvbnRleHRJZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9wbGF5ZXIt
PnNldFByaXZhdGVCcm93c2luZ01vZGUocHJpdmF0ZU1vZGUpOwogICAgIG1fcGxheWVyLT5zZXRQ
cmVsb2FkKHByZWxvYWQpOwogICAgIG1fcGxheWVyLT5zZXRQcmVzZXJ2ZXNQaXRjaChwcmVzZXJ2
ZXNQaXRjaCk7CiAgICAgbV9wbGF5ZXItPnByZXBhcmVGb3JSZW5kZXJpbmcoKTsKKyAgICBtX3Zp
ZGVvQ29udGVudEJveFJlY3QgPSBsYXlvdXRSZWN0OworICAgIG1fdmlkZW9Db250ZW50U2NhbGUg
PSB2aWRlb0NvbnRlbnRTY2FsZTsKKyAgICBtX2xheWVySG9zdGluZ0NvbnRleHQgPSBMYXllckhv
c3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9jZXNzKCk7CisgICAgY29t
cGxldGlvbkhhbmRsZXIobV9sYXllckhvc3RpbmdDb250ZXh0LT5jb250ZXh0SUQoKSk7CiB9CiAK
IHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6Y2FuY2VsTG9hZCgpCkBAIC0xNzksMTEgKzE4
NCw2IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6cHJlcGFyZUZvclJlbmRlcmluZygp
CiAgICAgbV9wbGF5ZXItPnByZXBhcmVGb3JSZW5kZXJpbmcoKTsKIH0KIAotdm9pZCBSZW1vdGVN
ZWRpYVBsYXllclByb3h5OjpzZXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpCi17
Ci0gICAgbV9wbGF5ZXItPnNldFNpemUoc2l6ZSk7Ci19Ci0KIHZvaWQgUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCiB7CiAgICAgbV9wbGF5ZXItPnNldFZp
c2libGUodmlzaWJsZSk7CkBAIC00MzAsMTIgKzQzMCwxMyBAQCB2b2lkIFJlbW90ZU1lZGlhUGxh
eWVyUHJveHk6Om1lZGlhUGxheWVyRW5naW5lVXBkYXRlZCgpCiAKIHZvaWQgUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJGaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoKQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9sYXllckhvc3RpbmdDb250ZXh0LT5zZXRSb290TGF5
ZXIobV9wbGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSk7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpGaXJzdFZpZGVvRnJh
bWVBdmFpbGFibGUobV9pZCksIDApOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6
Om1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQoKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgbV9sYXllckhvc3RpbmdDb250ZXh0LT5zZXRSb290TGF5ZXIobV9wbGF5ZXItPnBs
YXRmb3JtTGF5ZXIoKSk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQ
bGF5ZXJBY3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdlZCgpCkBAIC00OTYsMTQgKzQ5NywxMiBAQCBi
b29sIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVySXNGdWxsc2NyZWVuUGVybWl0
dGVkKCkgY29uc3QKIAogTGF5b3V0UmVjdCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBs
YXllckNvbnRlbnRCb3hSZWN0KCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IHJldHVybiBMYXlvdXRSZWN0KCk7CisgICAgcmV0dXJuIG1fdmlkZW9Db250ZW50Qm94UmVjdDsK
IH0KIAogZmxvYXQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJDb250ZW50c1Nj
YWxlKCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAxOworICAg
IHJldHVybiBtX3ZpZGVvQ29udGVudFNjYWxlOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVy
UHJveHk6Om1lZGlhUGxheWVyUGF1c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKaW5kZXggMDBjZjdlODM5NDQ2
YzkzMWVkZmM1MGI5ZDFmNjRmOTM3YjQ4MWQxNy4uMmZlYTdiMzU5YWU2MTc3OTc4NjgxZDRhODYw
MDkyYmQ3Njc2OTYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCkBAIC00NSwxMCArNDUsMTIgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXVkaW9UcmFja1ByaXZhdGU7CitjbGFzcyBMYXllckhv
c3RpbmdDb250ZXh0OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAordXNpbmcgTGF5ZXJIb3N0
aW5nQ29udGV4dElEID0gdWludDMyX3Q7CiBjbGFzcyBSZW1vdGVBdWRpb1RyYWNrUHJveHk7CiBj
bGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTsKIGNsYXNzIFJlbW90ZVZpZGVvVHJh
Y2tQcm94eTsKQEAgLTY2LDcgKzY4LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBnZXRDb25maWd1
cmF0aW9uKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYpOwogCi0gICAgdm9pZCBwcmVw
YXJlRm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVt
czo6UHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVyaW5n
KTsKKyAgICB2b2lkIHByZXBhcmVGb3JQbGF5YmFjayhib29sIHByaXZhdGVNb2RlLCBXZWJDb3Jl
OjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHBy
ZXBhcmVGb3JSZW5kZXJpbmcsIFdlYkNvcmU6OkxheW91dFJlY3QsIGZsb2F0IHZpZGVvQ29udGVu
dFNjYWxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPExheWVySG9zdGluZ0NvbnRl
eHRJRD4mJik+JiYpOworICAgIHZvaWQgcHJlcGFyZUZvclJlbmRlcmluZygpOwogCiAgICAgdm9p
ZCBsb2FkKGNvbnN0IFVSTCYsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4mJiwg
Y29uc3QgV2ViQ29yZTo6Q29udGVudFR5cGUmLCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYmKT4mJik7CiAgICAgdm9p
ZCBjYW5jZWxMb2FkKCk7CkBAIC04Niw4ICs4OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBy
aXZhdGVCcm93c2luZ01vZGUoYm9vbCk7CiAgICAgdm9pZCBzZXRQcmVzZXJ2ZXNQaXRjaChib29s
KTsKIAotICAgIHZvaWQgcHJlcGFyZUZvclJlbmRlcmluZygpOwotICAgIHZvaWQgc2V0U2l6ZShj
b25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAgICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwogICAg
IHZvaWQgc2V0U2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRpbyhib29sKTsKICAgICB2b2lkIHNldFZp
ZGVvRnVsbHNjcmVlbkZyYW1lKFdlYkNvcmU6OkZsb2F0UmVjdCk7CkBAIC0yMDMsNiArMjA0LDcg
QEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gbV9zYW5kYm94RXh0ZW5z
aW9uOwogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb247CiAg
ICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVyPiBtX3BsYXllcjsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gbV9sYXllckhvc3RpbmdDb250ZXh0OwogICAgIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5JiBtX21hbmFnZXI7CiAgICAgV2ViQ29yZTo6TWVk
aWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIG1fZW5naW5lSWRlbnRpZmllcjsK
ICAgICBWZWN0b3I8V2ViQ29yZTo6Q29udGVudFR5cGU+IG1fdHlwZXNSZXF1aXJpbmdIYXJkd2Fy
ZVN1cHBvcnQ7CkBAIC0yMTIsNiArMjE0LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2Vla2Fi
bGVDaGFuZ2VkIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9idWZmZXJlZENoYW5nZWQgeyB0cnVlIH07
CiAgICAgYm9vbCBtX3JlbmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQgeyB0cnVlIH07CisgICAgV2Vi
Q29yZTo6TGF5b3V0UmVjdCBtX3ZpZGVvQ29udGVudEJveFJlY3Q7CisgICAgZmxvYXQgbV92aWRl
b0NvbnRlbnRTY2FsZSB7IDEuMCB9OwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAg
Y29uc3QgTG9nZ2VyJiBtX2xvZ2dlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vY29jb2EvTGF5ZXJIb3N0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9j
b2NvYS9MYXllckhvc3RpbmdDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI5ZmJiMTJkZWFlOTFhM2Uy
OWJjYjdhZGE3ZGEwYTdkNWQyZmM3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vY29jb2EvTGF5ZXJIb3N0aW5nQ29udGV4dC5oCkBAIC0wLDAgKzEsOTkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisKK09CSkNfQ0xBU1MgQ0FMYXllcjsKK09CSkNfQ0xBU1MgQ0FDb250ZXh0OworCituYW1lc3Bh
Y2UgV1RGIHsKK2NsYXNzIE1hY2hTZW5kUmlnaHQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
Cit1c2luZyBMYXllckhvc3RpbmdDb250ZXh0SUQgPSB1aW50MzJfdDsKK2VudW0gY2xhc3MgTGF5
ZXJIb3N0aW5nTW9kZSA6IHVpbnQ4X3Q7CisKK3N0cnVjdCBMYXllckhvc3RpbmdDb250ZXh0T3B0
aW9ucyB7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBib29sIGNhblNob3dXaGlsZUxv
Y2tlZCB7IGZhbHNlIH07CisjZW5kaWYKK307CisKK2NsYXNzIExheWVySG9zdGluZ0NvbnRleHQg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExheWVySG9zdGluZ0NvbnRleHQpOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExh
eWVySG9zdGluZ0NvbnRleHQ+IGNyZWF0ZUZvclBvcnQoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0
JiBzZXJ2ZXJQb3J0KTsKKyAgICAKKyNpZiBIQVZFKE9VVF9PRl9QUk9DRVNTX0xBWUVSX0hPU1RJ
TkcpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBjcmVh
dGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9jZXNzKGNvbnN0IExheWVySG9zdGluZ0NvbnRleHRPcHRp
b25zJiA9IHsgfSk7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBjcmVhdGVGb3JFeHRlcm5hbFBsdWdpbkhvc3RpbmdQ
cm9jZXNzKCk7CisjZW5kaWYKKworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0FMYXllcj4gY3JlYXRl
UGxhdGZvcm1MYXllckZvckhvc3RpbmdDb250ZXh0KExheWVySG9zdGluZ0NvbnRleHRJRCk7CisK
KyNlbmRpZiAvLyBIQVZFKE9VVF9PRl9QUk9DRVNTX0xBWUVSX0hPU1RJTkcpCisKKyAgICBMYXll
ckhvc3RpbmdDb250ZXh0KCk7CisgICAgfkxheWVySG9zdGluZ0NvbnRleHQoKTsKKworICAgIHZv
aWQgc2V0Um9vdExheWVyKENBTGF5ZXIgKik7CisgICAgQ0FMYXllciAqcm9vdExheWVyKCkgY29u
c3Q7CisKKyAgICBMYXllckhvc3RpbmdDb250ZXh0SUQgY29udGV4dElEKCkgY29uc3Q7CisgICAg
dm9pZCBpbnZhbGlkYXRlKCk7CisKKyAgICBMYXllckhvc3RpbmdNb2RlIGxheWVySG9zdGluZ01v
ZGUoKSB7IHJldHVybiBtX2xheWVySG9zdGluZ01vZGU7IH0KKworICAgIHZvaWQgc2V0Q29sb3JT
cGFjZShDR0NvbG9yU3BhY2VSZWYpOworICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKCkg
Y29uc3Q7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgdm9pZCBzZXRDb2xvck1hdGNoVW50YWdn
ZWRDb250ZW50KGJvb2wpOworICAgIGJvb2wgY29sb3JNYXRjaFVudGFnZ2VkQ29udGVudCgpIGNv
bnN0OworI2VuZGlmCisKKyAgICAvLyBGZW5jZXMgb25seSB3b3JrIG9uIGlPUyBhbmQgT1MgMTAu
MTArLgorICAgIHZvaWQgc2V0RmVuY2VQb3J0KG1hY2hfcG9ydF90KTsKKworICAgIC8vIGNyZWF0
ZUZlbmNlUG9ydCBkb2VzIG5vdCBpbnN0YWxsIHRoZSBmZW5jZSBwb3J0IG9uIHRoZSBMYXllckhv
c3RpbmdDb250ZXh0J3MKKyAgICAvLyBDQUNvbnRleHQ7IGNhbGwgc2V0RmVuY2VQb3J0KCkgd2l0
aCB0aGUgbmV3bHkgY3JlYXRlZCBwb3J0IGlmIHN5bmNocm9uaXphdGlvbgorICAgIC8vIHdpdGgg
dGhpcyBjb250ZXh0IGlzIGRlc2lyZWQuCisgICAgV1RGOjpNYWNoU2VuZFJpZ2h0IGNyZWF0ZUZl
bmNlUG9ydCgpOworCitwcml2YXRlOgorICAgIExheWVySG9zdGluZ01vZGUgbV9sYXllckhvc3Rp
bmdNb2RlOworICAgIFJldGFpblB0cjxDQUNvbnRleHQ+IG1fY29udGV4dDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2Nv
Y29hL0xheWVySG9zdGluZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29h
L0xheWVySG9zdGluZ0NvbnRleHQubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQwNThlOWI3MWRhMGUzZGM5ZDYw
M2EyZmE3NzUxZWYzNTY3N2YwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vY29jb2EvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQpAQCAtMCwwICsxLDE2MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJMYXllckhvc3RpbmdD
b250ZXh0LmgiCisKKyNpbXBvcnQgIkxheWVyVHJlZUNvbnRleHQuaCIKKyNpbXBvcnQgPFdlYkNv
cmUvV2ViQ29yZUNBTGF5ZXJFeHRyYXMuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBo
aWNzU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KKyNpbXBv
cnQgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGQ6OnVu
aXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRl
Rm9yUG9ydChjb25zdCBNYWNoU2VuZFJpZ2h0JiBzZXJ2ZXJQb3J0KQoreworICAgIGF1dG8gbGF5
ZXJIb3N0aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKKwor
ICAgIE5TRGljdGlvbmFyeSAqb3B0aW9ucyA9IEB7CisgICAgICAgIGtDQUNvbnRleHRQb3J0TnVt
YmVyIDogQChzZXJ2ZXJQb3J0LnNlbmRSaWdodCgpKSwKKyNpZiBQTEFURk9STShNQUMpCisgICAg
ICAgIGtDQUNvbnRleHRDSUZpbHRlckJlaGF2aW9yIDogQCJpZ25vcmUiLAorI2VuZGlmCisgICAg
fTsKKworICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fbGF5ZXJIb3N0aW5nTW9kZSA9IExheWVy
SG9zdGluZ01vZGU6OkluUHJvY2VzczsKKyAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2NvbnRl
eHQgPSBbQ0FDb250ZXh0IHJlbW90ZUNvbnRleHRXaXRoT3B0aW9uczpvcHRpb25zXTsKKworICAg
IHJldHVybiBsYXllckhvc3RpbmdDb250ZXh0OworfQorCisjaWYgSEFWRShPVVRfT0ZfUFJPQ0VT
U19MQVlFUl9IT1NUSU5HKQorc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IExh
eWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoY29uc3Qg
TGF5ZXJIb3N0aW5nQ29udGV4dE9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgYXV0byBsYXllckhv
c3RpbmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOworICAgIGxh
eWVySG9zdGluZ0NvbnRleHQtPm1fbGF5ZXJIb3N0aW5nTW9kZSA9IExheWVySG9zdGluZ01vZGU6
Ok91dE9mUHJvY2VzczsKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShN
QUNDQVRBTFlTVCkKKyAgICAvLyBVc2UgYSB2ZXJ5IGxhcmdlIGRpc3BsYXkgSUQgdG8gZW5zdXJl
IHRoYXQgdGhlIGNvbnRleHQgaXMgbmV2ZXIgcHV0IG9uLXNjcmVlbiAKKyAgICAvLyB3aXRob3V0
IGJlaW5nIGV4cGxpY2l0bHkgcGFyZW50ZWQuIFNlZSA8cmRhcjovL3Byb2JsZW0vMTYwODkyNjc+
IGZvciBkZXRhaWxzLgorICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNv
bnRleHQgcmVtb3RlQ29udGV4dFdpdGhPcHRpb25zOkB7CisgICAgICAgIGtDQUNvbnRleHRTZWN1
cmU6IEAob3B0aW9ucy5jYW5TaG93V2hpbGVMb2NrZWQpLAorI2lmIEhBVkUoQ09SRV9BTklNQVRJ
T05fUkVOREVSX1NFUlZFUikKKyAgICAgICAga0NBQ29udGV4dElnbm9yZXNIaXRUZXN0IDogQFlF
UywKKyAgICAgICAga0NBQ29udGV4dERpc3BsYXlJZCA6IEAxMDAwMAorI2VuZGlmCisgICAgfV07
CisjZWxpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRP
V1NFUlZFUl9CTE9DS0lORykKKyAgICBbQ0FDb250ZXh0IHNldEFsbG93c0NHU0Nvbm5lY3Rpb25z
Ok5PXTsKKyAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2NvbnRleHQgPSBbQ0FDb250ZXh0IHJl
bW90ZUNvbnRleHRXaXRoT3B0aW9uczpAeworICAgICAgICBrQ0FDb250ZXh0Q0lGaWx0ZXJCZWhh
dmlvciA6ICBAImlnbm9yZSIsCisgICAgfV07CisjZWxzZQorICAgIGxheWVySG9zdGluZ0NvbnRl
eHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQgY29udGV4dFdpdGhDR1NDb25uZWN0aW9uOkNHU01h
aW5Db25uZWN0aW9uSUQoKSBvcHRpb25zOkB7CisgICAgICAgIGtDQUNvbnRleHRDSUZpbHRlckJl
aGF2aW9yIDogQCJpZ25vcmUiLAorICAgIH1dOworI2VuZGlmCisgICAgCisgICAgcmV0dXJuIGxh
eWVySG9zdGluZ0NvbnRleHQ7Cit9CisKKyNpZiBQTEFURk9STShNQUMpCitzdGQ6OnVuaXF1ZV9w
dHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0
ZXJuYWxQbHVnaW5Ib3N0aW5nUHJvY2VzcygpCit7CisgICAgYXV0byBsYXllckhvc3RpbmdDb250
ZXh0ID0gbWFrZVVuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOworICAgIGxheWVySG9zdGlu
Z0NvbnRleHQtPm1fbGF5ZXJIb3N0aW5nTW9kZSA9IExheWVySG9zdGluZ01vZGU6Ok91dE9mUHJv
Y2VzczsKKyAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2NvbnRleHQgPSBbQ0FDb250ZXh0IGNv
bnRleHRXaXRoQ0dTQ29ubmVjdGlvbjpDR1NNYWluQ29ubmVjdGlvbklEKCkgb3B0aW9uczpAeyBr
Q0FDb250ZXh0Q0lGaWx0ZXJCZWhhdmlvciA6IEAiaWdub3JlIiB9XTsKKyAgICByZXR1cm4gbGF5
ZXJIb3N0aW5nQ29udGV4dDsKK30KKyNlbmRpZgorCitSZXRhaW5QdHI8Q0FMYXllcj4gTGF5ZXJI
b3N0aW5nQ29udGV4dDo6Y3JlYXRlUGxhdGZvcm1MYXllckZvckhvc3RpbmdDb250ZXh0KExheWVy
SG9zdGluZ0NvbnRleHRJRCBjb250ZXh0SUQpCit7CisgICAgcmV0dXJuIFtDQUxheWVyIF93ZWJf
cmVuZGVyTGF5ZXJXaXRoQ29udGV4dElEOmNvbnRleHRJRF07Cit9CisKKyNlbmRpZiAvLyBIQVZF
KE9VVF9PRl9QUk9DRVNTX0xBWUVSX0hPU1RJTkcpCisKK0xheWVySG9zdGluZ0NvbnRleHQ6Okxh
eWVySG9zdGluZ0NvbnRleHQoKQoreworfQorCitMYXllckhvc3RpbmdDb250ZXh0Ojp+TGF5ZXJI
b3N0aW5nQ29udGV4dCgpCit7Cit9CisKK3ZvaWQgTGF5ZXJIb3N0aW5nQ29udGV4dDo6c2V0Um9v
dExheWVyKENBTGF5ZXIgKnJvb3RMYXllcikKK3sKKyAgICBbbV9jb250ZXh0IHNldExheWVyOnJv
b3RMYXllcl07Cit9CisKK0NBTGF5ZXIgKkxheWVySG9zdGluZ0NvbnRleHQ6OnJvb3RMYXllcigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2NvbnRleHQgbGF5ZXJdOworfQorCitMYXllckhvc3Rp
bmdDb250ZXh0SUQgTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y29udGV4dElEKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gW21fY29udGV4dCBjb250ZXh0SWRdOworfQorCit2b2lkIExheWVySG9zdGluZ0Nv
bnRleHQ6OmludmFsaWRhdGUoKQoreworICAgIFttX2NvbnRleHQgaW52YWxpZGF0ZV07Cit9CisK
K3ZvaWQgTGF5ZXJIb3N0aW5nQ29udGV4dDo6c2V0Q29sb3JTcGFjZShDR0NvbG9yU3BhY2VSZWYg
Y29sb3JTcGFjZSkKK3sKKyAgICBbbV9jb250ZXh0IHNldENvbG9yU3BhY2U6Y29sb3JTcGFjZV07
Cit9CisKK0NHQ29sb3JTcGFjZVJlZiBMYXllckhvc3RpbmdDb250ZXh0Ojpjb2xvclNwYWNlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gW21fY29udGV4dCBjb2xvclNwYWNlXTsKK30KKworI2lmIFBM
QVRGT1JNKE1BQykKK3ZvaWQgTGF5ZXJIb3N0aW5nQ29udGV4dDo6c2V0Q29sb3JNYXRjaFVudGFn
Z2VkQ29udGVudChib29sIGNvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQpCit7CisgICAgW21fY29u
dGV4dCBzZXRDb2xvck1hdGNoVW50YWdnZWRDb250ZW50OmNvbG9yTWF0Y2hVbnRhZ2dlZENvbnRl
bnRdOworfQorCitib29sIExheWVySG9zdGluZ0NvbnRleHQ6OmNvbG9yTWF0Y2hVbnRhZ2dlZENv
bnRlbnQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9jb250ZXh0IGNvbG9yTWF0Y2hVbnRhZ2dl
ZENvbnRlbnRdOworfQorI2VuZGlmCisKK3ZvaWQgTGF5ZXJIb3N0aW5nQ29udGV4dDo6c2V0RmVu
Y2VQb3J0KG1hY2hfcG9ydF90IGZlbmNlUG9ydCkKK3sKKyAgICBbbV9jb250ZXh0IHNldEZlbmNl
UG9ydDpmZW5jZVBvcnRdOworfQorCitNYWNoU2VuZFJpZ2h0IExheWVySG9zdGluZ0NvbnRleHQ6
OmNyZWF0ZUZlbmNlUG9ydCgpCit7CisgICAgcmV0dXJuIE1hY2hTZW5kUmlnaHQ6OmFkb3B0KFtt
X2NvbnRleHQgY3JlYXRlRmVuY2VQb3J0XSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9pb3MvUGF5bWVudEF1dGhvcml6YXRp
b25Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9pb3MvUGF5bWVudEF1dGhv
cml6YXRpb25Db250cm9sbGVyLm1tCmluZGV4IGYxNjMxYmEwZmNjNzI5ZDA2ODRkODdjZmE2MmZh
NjY4OTE3ODY3NDMuLjViODRlZmViMzE0YTQ1OTEyOWQ3MTM3MDQxYjg3YzYzZGMxNjFjNTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vaW9zL1BheW1lbnRBdXRob3JpemF0aW9u
Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2lvcy9QYXltZW50QXV0
aG9yaXphdGlvbkNvbnRyb2xsZXIubW0KQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiV0tQ
YXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tp
dFNvZnRMaW5rLmg+CisjaW1wb3J0IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KIAogQGludGVy
ZmFjZSBXS1BheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlckRlbGVnYXRlIDogV0tQYXltZW50
QXV0aG9yaXphdGlvbkRlbGVnYXRlIDxQS1BheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlckRl
bGVnYXRlLCBQS1BheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlclByaXZhdGVEZWxlZ2F0ZT4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OWNhZGZlNmRiMTZmY2M5NDNhOGYxOTJl
NWQwMWZmOGMwMTQ3NjhlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQuaAor
KysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgotCi1PQkpDX0NMQVNTIENBTGF5ZXI7Ci1PQkpDX0NMQVNTIENBQ29udGV4dDsKLQot
bmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBNYWNoU2VuZFJpZ2h0OwotfQotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotdXNpbmcgTGF5ZXJIb3N0aW5nQ29udGV4dElEID0gdWludDMyX3Q7Ci0gICAgCi1z
dHJ1Y3QgTGF5ZXJIb3N0aW5nQ29udGV4dE9wdGlvbnMgewotI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgYm9vbCBjYW5TaG93V2hpbGVMb2NrZWQgeyBmYWxzZSB9OwotI2VuZGlmCi19Owot
Ci1jbGFzcyBMYXllckhvc3RpbmdDb250ZXh0IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShM
YXllckhvc3RpbmdDb250ZXh0KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBjcmVhdGVGb3JQ
b3J0KGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc2VydmVyUG9ydCk7Ci0gICAgCi0jaWYgSEFW
RShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gY3JlYXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2Vzcyhj
b25zdCBMYXllckhvc3RpbmdDb250ZXh0T3B0aW9ucyYgPSB7IH0pOwotCi0jaWYgUExBVEZPUk0o
TUFDKQotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gY3Jl
YXRlRm9yRXh0ZXJuYWxQbHVnaW5Ib3N0aW5nUHJvY2VzcygpOwotI2VuZGlmCi0gICAgCi0jZW5k
aWYgLy8gSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQotCi0gICAgTGF5ZXJIb3N0
aW5nQ29udGV4dCgpOwotICAgIH5MYXllckhvc3RpbmdDb250ZXh0KCk7Ci0KLSAgICB2b2lkIHNl
dFJvb3RMYXllcihDQUxheWVyICopOwotICAgIENBTGF5ZXIgKnJvb3RMYXllcigpIGNvbnN0Owot
Ci0gICAgTGF5ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJRCgpIGNvbnN0OwotICAgIHZvaWQg
aW52YWxpZGF0ZSgpOwotCi0gICAgTGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdNb2RlKCkg
eyByZXR1cm4gbV9sYXllckhvc3RpbmdNb2RlOyB9Ci0KLSAgICB2b2lkIHNldENvbG9yU3BhY2Uo
Q0dDb2xvclNwYWNlUmVmKTsKLSAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSgpIGNvbnN0
OwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIHZvaWQgc2V0Q29sb3JNYXRjaFVudGFnZ2VkQ29u
dGVudChib29sKTsKLSAgICBib29sIGNvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQoKSBjb25zdDsK
LSNlbmRpZgotCi0gICAgLy8gRmVuY2VzIG9ubHkgd29yayBvbiBpT1MgYW5kIE9TIDEwLjEwKy4K
LSAgICB2b2lkIHNldEZlbmNlUG9ydChtYWNoX3BvcnRfdCk7Ci0KLSAgICAvLyBjcmVhdGVGZW5j
ZVBvcnQgZG9lcyBub3QgaW5zdGFsbCB0aGUgZmVuY2UgcG9ydCBvbiB0aGUgTGF5ZXJIb3N0aW5n
Q29udGV4dCdzCi0gICAgLy8gQ0FDb250ZXh0OyBjYWxsIHNldEZlbmNlUG9ydCgpIHdpdGggdGhl
IG5ld2x5IGNyZWF0ZWQgcG9ydCBpZiBzeW5jaHJvbml6YXRpb24KLSAgICAvLyB3aXRoIHRoaXMg
Y29udGV4dCBpcyBkZXNpcmVkLgotICAgIFdURjo6TWFjaFNlbmRSaWdodCBjcmVhdGVGZW5jZVBv
cnQoKTsKLQotcHJpdmF0ZToKLSAgICBMYXllckhvc3RpbmdNb2RlIG1fbGF5ZXJIb3N0aW5nTW9k
ZTsKLSAgICBSZXRhaW5QdHI8Q0FDb250ZXh0PiBtX2NvbnRleHQ7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5
ZXJIb3N0aW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9z
dGluZ0NvbnRleHQubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhZWU0N2VhYjk1
ZjU4YTZiNDE3ODVjMGY0ZmY3ZjAyYjA0Y2Y0NDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0
aW5nQ29udGV4dC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE1MyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkxheWVySG9zdGluZ0NvbnRleHQu
aCIKLQotI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KLSNpbXBvcnQgPHBh
bC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgotI2ltcG9ydCA8d3RmL01hY2hTZW5kUmlnaHQu
aD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdD
b250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JQb3J0KGNvbnN0IE1hY2hTZW5k
UmlnaHQmIHNlcnZlclBvcnQpCi17Ci0gICAgYXV0byBsYXllckhvc3RpbmdDb250ZXh0ID0gbWFr
ZVVuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOwotCi0gICAgTlNEaWN0aW9uYXJ5ICpvcHRp
b25zID0gQHsKLSAgICAgICAga0NBQ29udGV4dFBvcnROdW1iZXIgOiBAKHNlcnZlclBvcnQuc2Vu
ZFJpZ2h0KCkpLAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAga0NBQ29udGV4dENJRmlsdGVy
QmVoYXZpb3IgOiBAImlnbm9yZSIsCi0jZW5kaWYKLSAgICB9OwotCi0gICAgbGF5ZXJIb3N0aW5n
Q29udGV4dC0+bV9sYXllckhvc3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6SW5Qcm9jZXNz
OwotICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQgcmVtb3Rl
Q29udGV4dFdpdGhPcHRpb25zOm9wdGlvbnNdOwotCi0gICAgcmV0dXJuIGxheWVySG9zdGluZ0Nv
bnRleHQ7Ci19Ci0KLSNpZiBIQVZFKE9VVF9PRl9QUk9DRVNTX0xBWUVSX0hPU1RJTkcpCi1zdGQ6
OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3Jl
YXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2Vzcyhjb25zdCBMYXllckhvc3RpbmdDb250ZXh0T3B0
aW9ucyYgb3B0aW9ucykKLXsKLSAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBtYWtlVW5p
cXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7Ci0gICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9s
YXllckhvc3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQcm9jZXNzOwotCi0jaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotICAgIC8vIFVz
ZSBhIHZlcnkgbGFyZ2UgZGlzcGxheSBJRCB0byBlbnN1cmUgdGhhdCB0aGUgY29udGV4dCBpcyBu
ZXZlciBwdXQgb24tc2NyZWVuIAotICAgIC8vIHdpdGhvdXQgYmVpbmcgZXhwbGljaXRseSBwYXJl
bnRlZC4gU2VlIDxyZGFyOi8vcHJvYmxlbS8xNjA4OTI2Nz4gZm9yIGRldGFpbHMuCi0gICAgbGF5
ZXJIb3N0aW5nQ29udGV4dC0+bV9jb250ZXh0ID0gW0NBQ29udGV4dCByZW1vdGVDb250ZXh0V2l0
aE9wdGlvbnM6QHsKLSAgICAgICAga0NBQ29udGV4dFNlY3VyZTogQChvcHRpb25zLmNhblNob3dX
aGlsZUxvY2tlZCksCi0jaWYgSEFWRShDT1JFX0FOSU1BVElPTl9SRU5ERVJfU0VSVkVSKQotICAg
ICAgICBrQ0FDb250ZXh0SWdub3Jlc0hpdFRlc3QgOiBAWUVTLAotICAgICAgICBrQ0FDb250ZXh0
RGlzcGxheUlkIDogQDEwMDAwCi0jZW5kaWYKLSAgICB9XTsKLSNlbGlmICFQTEFURk9STShNQUND
QVRBTFlTVCkgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQotICAg
IFtDQUNvbnRleHQgc2V0QWxsb3dzQ0dTQ29ubmVjdGlvbnM6Tk9dOwotICAgIGxheWVySG9zdGlu
Z0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQgcmVtb3RlQ29udGV4dFdpdGhPcHRpb25z
OkB7Ci0gICAgICAgIGtDQUNvbnRleHRDSUZpbHRlckJlaGF2aW9yIDogIEAiaWdub3JlIiwKLSAg
ICB9XTsKLSNlbHNlCi0gICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9jb250ZXh0ID0gW0NBQ29u
dGV4dCBjb250ZXh0V2l0aENHU0Nvbm5lY3Rpb246Q0dTTWFpbkNvbm5lY3Rpb25JRCgpIG9wdGlv
bnM6QHsKLSAgICAgICAga0NBQ29udGV4dENJRmlsdGVyQmVoYXZpb3IgOiBAImlnbm9yZSIsCi0g
ICAgfV07Ci0jZW5kaWYKLSAgICAKLSAgICByZXR1cm4gbGF5ZXJIb3N0aW5nQ29udGV4dDsKLX0K
LQotI2lmIFBMQVRGT1JNKE1BQykKLXN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0
PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbFBsdWdpbkhvc3RpbmdQcm9j
ZXNzKCkKLXsKLSAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPExheWVy
SG9zdGluZ0NvbnRleHQ+KCk7Ci0gICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9sYXllckhvc3Rp
bmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQcm9jZXNzOwotICAgIGxheWVySG9zdGlu
Z0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQgY29udGV4dFdpdGhDR1NDb25uZWN0aW9u
OkNHU01haW5Db25uZWN0aW9uSUQoKSBvcHRpb25zOkB7IGtDQUNvbnRleHRDSUZpbHRlckJlaGF2
aW9yIDogQCJpZ25vcmUiIH1dOwotICAgIHJldHVybiBsYXllckhvc3RpbmdDb250ZXh0OwotfQot
I2VuZGlmCi0jZW5kaWYgLy8gSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQotCi1M
YXllckhvc3RpbmdDb250ZXh0OjpMYXllckhvc3RpbmdDb250ZXh0KCkKLXsKLX0KLQotTGF5ZXJI
b3N0aW5nQ29udGV4dDo6fkxheWVySG9zdGluZ0NvbnRleHQoKQotewotfQotCi12b2lkIExheWVy
SG9zdGluZ0NvbnRleHQ6OnNldFJvb3RMYXllcihDQUxheWVyICpyb290TGF5ZXIpCi17Ci0gICAg
W21fY29udGV4dCBzZXRMYXllcjpyb290TGF5ZXJdOwotfQotCi1DQUxheWVyICpMYXllckhvc3Rp
bmdDb250ZXh0Ojpyb290TGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBbbV9jb250ZXh0IGxh
eWVyXTsKLX0KLQotTGF5ZXJIb3N0aW5nQ29udGV4dElEIExheWVySG9zdGluZ0NvbnRleHQ6OmNv
bnRleHRJRCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX2NvbnRleHQgY29udGV4dElkXTsKLX0K
LQotdm9pZCBMYXllckhvc3RpbmdDb250ZXh0OjppbnZhbGlkYXRlKCkKLXsKLSAgICBbbV9jb250
ZXh0IGludmFsaWRhdGVdOwotfQotCi12b2lkIExheWVySG9zdGluZ0NvbnRleHQ6OnNldENvbG9y
U3BhY2UoQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UpCi17Ci0gICAgW21fY29udGV4dCBzZXRD
b2xvclNwYWNlOmNvbG9yU3BhY2VdOwotfQotCi1DR0NvbG9yU3BhY2VSZWYgTGF5ZXJIb3N0aW5n
Q29udGV4dDo6Y29sb3JTcGFjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX2NvbnRleHQgY29s
b3JTcGFjZV07Ci19Ci0KLSNpZiBQTEFURk9STShNQUMpCi12b2lkIExheWVySG9zdGluZ0NvbnRl
eHQ6OnNldENvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQoYm9vbCBjb2xvck1hdGNoVW50YWdnZWRD
b250ZW50KQotewotICAgIFttX2NvbnRleHQgc2V0Q29sb3JNYXRjaFVudGFnZ2VkQ29udGVudDpj
b2xvck1hdGNoVW50YWdnZWRDb250ZW50XTsKLX0KLQotYm9vbCBMYXllckhvc3RpbmdDb250ZXh0
Ojpjb2xvck1hdGNoVW50YWdnZWRDb250ZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gW21fY29u
dGV4dCBjb2xvck1hdGNoVW50YWdnZWRDb250ZW50XTsKLX0KLSNlbmRpZgotCi12b2lkIExheWVy
SG9zdGluZ0NvbnRleHQ6OnNldEZlbmNlUG9ydChtYWNoX3BvcnRfdCBmZW5jZVBvcnQpCi17Ci0g
ICAgW21fY29udGV4dCBzZXRGZW5jZVBvcnQ6ZmVuY2VQb3J0XTsKLX0KLQotTWFjaFNlbmRSaWdo
dCBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGZW5jZVBvcnQoKQotewotICAgIHJldHVybiBN
YWNoU2VuZFJpZ2h0OjphZG9wdChbbV9jb250ZXh0IGNyZWF0ZUZlbmNlUG9ydF0pOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJv
Y2Vzcy9tYWMvUGx1Z2luQ29udHJvbGxlclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL21hYy9QbHVnaW5Db250cm9sbGVyUHJveHlNYWMubW0KaW5kZXggNTY4MGI5MDdi
NmE2NjA1MmRlMDBiZGY3NGIxMzE2M2I1ZDNiNThiMy4uZDE2Y2QyNzY2OWQzNTM5MzliZjI0YTc5
NjFjNTM5M2IyMjJhNzcwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNz
L21hYy9QbHVnaW5Db250cm9sbGVyUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL21hYy9QbHVnaW5Db250cm9sbGVyUHJveHlNYWMubW0KQEAgLTI5LDYgKzI5LDcg
QEAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAogI2ltcG9ydCAiTGF5ZXJIb3N0
aW5nQ29udGV4dC5oIgorI2ltcG9ydCAiTGF5ZXJUcmVlQ29udGV4dC5oIgogI2ltcG9ydCAiUGx1
Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzLmgiCiAjaW1w
b3J0ICJQbHVnaW5Qcm9jZXNzUHJveHlNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IDM5NGM2NzA0NDVmZmQxNzJmZTAyZjE1NmQ2MGU1ZjExZWZlOTdkODUuLjA1NzBhNmE5ZmU5
YjU2NjRhNTQxMjczNDE2NDc4NzMzYmM0YjlkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAg
LTY5LDYgKzY5LDcgQEAgUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuY3BwCiBQbGF0Zm9ybS9jbGFz
c2lmaWVyL2NvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuY3BwCiBQ
bGF0Zm9ybS9jbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmNwcAog
CitQbGF0Zm9ybS9jb2NvYS9MYXllckhvc3RpbmdDb250ZXh0Lm1tCiBQbGF0Zm9ybS9jb2NvYS9Q
YXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5tbQogUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5tbQogUGxhdGZvcm0vY29jb2EvU2hhcmVkTWVtb3J5
Q29jb2EuY3BwCkBAIC04NCw3ICs4NSw2IEBAIFBsYXRmb3JtL2lvcy9QYXltZW50QXV0aG9yaXph
dGlvbkNvbnRyb2xsZXIubW0KIFBsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0K
IFBsYXRmb3JtL0lQQy9jb2NvYS9NYWNoTWVzc2FnZS5jcHAKIAotUGxhdGZvcm0vbWFjL0xheWVy
SG9zdGluZ0NvbnRleHQubW0KIFBsYXRmb3JtL21hYy9NYWNoVXRpbGl0aWVzLmNwcAogUGxhdGZv
cm0vbWFjL01lbnVVdGlsaXRpZXMubW0KIFBsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGEzNzMyZGVlZjczNDkyYjgwNThkOWM3YzAwNTAyMjk0NmU0MTRjYzIuLjVmYmVjYTQxZDcwNTYy
NzMxZTcxOTczODI1NDYzMzQ5ODU3NDBiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTUzMSw4ICs1NTMxLDYgQEAKIAkJMUE3RTgx
NEUxMTUyRDIyNDAwMDM2OTVCIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCi0JCQkJQkNFMDkzNzYxNEZCMTI4QjAwMTEzOEQ5IC8qIExheWVySG9zdGlu
Z0NvbnRleHQuaCAqLywKLQkJCQlCQ0UwOTM3NTE0RkIxMjhCMDAxMTM4RDkgLyogTGF5ZXJIb3N0
aW5nQ29udGV4dC5tbSAqLywKIAkJCQkxQTI0QjVGMDExRjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0
aWxpdGllcy5jcHAgKi8sCiAJCQkJMUEyNEI1RjExMUY1MzFFODAwQzM4MjY5IC8qIE1hY2hVdGls
aXRpZXMuaCAqLywKIAkJCQk1MTkzM0RFQjE5NjVFQjI0MDA4QUMzRUEgLyogTWVudVV0aWxpdGll
cy5oICovLApAQCAtNzIyMCw2ICs3MjE4LDggQEAKIAkJNDQ1MEFFQkUxREMzRkFBQzAwOTk0M0Yy
IC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQlCQ0UwOTM3NjE0RkIxMjhCMDAxMTM4RDkgLyogTGF5ZXJIb3N0aW5nQ29udGV4dC5oICovLAor
CQkJCUJDRTA5Mzc1MTRGQjEyOEIwMDExMzhEOSAvKiBMYXllckhvc3RpbmdDb250ZXh0Lm1tICov
LAogCQkJCUExNzk4QjNEMjIyRDk3QTIwMDA3NjRCRCAvKiBQYXltZW50QXV0aG9yaXphdGlvblBy
ZXNlbnRlci5oICovLAogCQkJCUExNzk4QjRBMjIyRjEzM0EwMDA3NjRCRCAvKiBQYXltZW50QXV0
aG9yaXphdGlvblByZXNlbnRlci5tbSAqLywKIAkJCQlBMTc5OEIzRjIyMkQ5OEI2MDAwNzY0QkQg
LyogUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5oICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuY3BwCmluZGV4IGY1MWNjNjIzY2E1YTFkNzg1MWZiNDgzODA1ODFhYWRkZDgz
OTI3OGYuLmQ2NzA4MGY4MjA5YTI4YjUyZDkzYWU0ODQwYjczOGIzZjEzNjUwYmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTQ1LDExICs0NSwxMSBAQAogI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKIGV4dGVybiBXVEZMb2dDaGFubmVsIExvZ01lZGlhOwotfQogI2VuZGlmCit9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC04OCw3ICs4OCwxOCBA
QCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6On5NZWRpYVBsYXllclByaXZhdGVSZW1vdGUoKQog
CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cHJlcGFyZUZvclBsYXliYWNrKGJvb2wg
cHJpdmF0ZU1vZGUsIE1lZGlhUGxheWVyOjpQcmVsb2FkIHByZWxvYWQsIGJvb2wgcHJlc2VydmVz
UGl0Y2gsIGJvb2wgcHJlcGFyZSkKIHsKLSAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlByZXBhcmVGb3JQbGF5YmFjayhtX2lkLCBw
cml2YXRlTW9kZSwgcHJlbG9hZCwgcHJlc2VydmVzUGl0Y2gsIHByZXBhcmUpLCAwKTsKKyAgICBh
dXRvIGxheW91dFJlY3QgPSBtX3BsYXllci0+cGxheWVyQ29udGVudEJveFJlY3QoKTsKKyAgICBh
dXRvIHNjYWxlID0gbV9wbGF5ZXItPnBsYXllckNvbnRlbnRzU2NhbGUoKTsKKworICAgIGNvbm5l
Y3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5OjpQcmVwYXJlRm9yUGxheWJhY2sobV9pZCwgcHJpdmF0ZU1vZGUsIHByZWxvYWQs
IHByZXNlcnZlc1BpdGNoLCBwcmVwYXJlLCBsYXlvdXRSZWN0LCBzY2FsZSksIFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpc10oYXV0byBjb250ZXh0SWQpIG11dGFibGUgeworICAg
ICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICgh
Y29udGV4dElkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fdmlkZW9MYXllciA9
IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZVBsYXRmb3JtTGF5ZXJGb3JIb3N0aW5nQ29udGV4
dChjb250ZXh0SWQudmFsdWUoKSk7CisgICAgfSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQoY29uc3QgVVJMJiB1cmws
IGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0p
CkBAIC0xMjAsNyArMTMxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZChjb25zdCBVUkwmIHVybCwgY28KIAogICAgIGNvbm5l
Y3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5OjpMb2FkKG1faWQsIHVybCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgY29udGVu
dFR5cGUsIGtleVN5c3RlbSksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oYXV0byYm
IGNvbmZpZ3VyYXRpb24pIHsKICAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgd2Vh
a1RoaXMtPm1fY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb247CisgICAgICAgICAgICB3ZWFr
VGhpcy0+bV9jb25maWd1cmF0aW9uID0gV1RGTW92ZShjb25maWd1cmF0aW9uKTsKICAgICB9KTsK
IH0KIApAQCAtMjkwLDYgKzMwMSwxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
c2l6ZUNoYW5nZWQoV2ViQ29yZTo6RmxvYXRTaXplIG5hdHVyYWxTaXplKQogICAgIG1fcGxheWVy
LT5zaXplQ2hhbmdlZCgpOwogfQogCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Zmly
c3RWaWRlb0ZyYW1lQXZhaWxhYmxlKCkKK3sKKyAgICBtX3BsYXllci0+Zmlyc3RWaWRlb0ZyYW1l
QXZhaWxhYmxlKCk7Cit9CisKIFN0cmluZyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVuZ2lu
ZURlc2NyaXB0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jb25maWd1cmF0aW9uLmVuZ2lu
ZURlc2NyaXB0aW9uOwpAQCAtMzQ1LDExICszNjEsNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6cHJlcGFyZUZvclJlbmRlcmluZygpCiAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQcmVwYXJlRm9yUmVuZGVyaW5n
KG1faWQpLCAwKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNpemUo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKLXsKLSAgICBjb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFNpemUobV9pZCwgc2l6
ZSksIDApOwotfQotCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlzaWJsZShi
b29sIHZpc2libGUpCiB7CiAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRWaXNpYmxlKG1faWQsIHZpc2libGUpLCAwKTsKQEAg
LTQ3OSw4ICs0OTAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZChNZWRp
YVN0cmVhbVByaXZhdGUmKQogCiBQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fdmlkZW9MYXllci5nZXQoKTsKIH0KIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19Q
UkVTRU5UQVRJT05fTU9ERSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAppbmRleCA2ZWFlMjQ5
NDg4NDU0OWM0NmU4MjIyODc3M2Y0ZjZhYjdhZmY5NjJmLi4zYzk3MmUxMzJmYzNhZmRkZjJhODVj
NmQyNWJhM2RlZjEzNmFiZDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKQEAgLTc4LDYg
Kzc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlQ2FjaGVkU3RhdGUoUmVtb3RlTWVkaWFQ
bGF5ZXJTdGF0ZSYmKTsKICAgICB2b2lkIGNoYXJhY3RlcmlzdGljQ2hhbmdlZChib29sIGhhc0F1
ZGlvLCBib29sIGhhc1ZpZGVvLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNb3ZpZUxvYWRU
eXBlKTsKICAgICB2b2lkIHNpemVDaGFuZ2VkKFdlYkNvcmU6OkZsb2F0U2l6ZSk7CisgICAgdm9p
ZCBmaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoKTsKIAogICAgIHZvaWQgYWRkUmVtb3RlQXVkaW9U
cmFjayhUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBUcmFja1ByaXZhdGVSZW1vdGVDb25m
aWd1cmF0aW9uJiYpOwogICAgIHZvaWQgcmVtb3ZlUmVtb3RlQXVkaW9UcmFjayhUcmFja1ByaXZh
dGVSZW1vdGVJZGVudGlmaWVyKTsKQEAgLTEyMyw3ICsxMjQsNiBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBzaG91bGRJZ25vcmVJbnRyaW5zaWNTaXplKCkgZmluYWw7CiAKLSAgICAvLyBVbmltcGxl
bWVudGVkCiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOwog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKSkKQEAgLTE5Niw3ICsxOTYsMTAgQEAgcHJpdmF0ZToKICAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wg
ZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHNldFNpemUoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYpIGZpbmFsOworICAgIC8vIEluIHRoZSBDb2NvYSBXZWJLaXQg
cG9ydCwgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0U2l6ZSgpIGRvZXMg
bm90aGluZywKKyAgICAvLyBzbyB0aGUgV2ViIHByb2Nlc3MgZG9lcyBub3QgbmVlZCB0byBzZW5k
IElQQyBtZXNzYWdlcyB0byBjYWxsIGl0IGluIHRoZSBHUFUgcHJvY2Vzcy4KKyAgICAvLyBPdGhl
ciBXZWJLaXQgcG9ydHMgbWF5IG5lZWQgdG8gZG8gdGhhdC4KKyAgICB2b2lkIHNldFNpemUoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYpIGZpbmFsIHsgfQogCiAgICAgdm9pZCBwYWludChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBmaW5hbDsKIApA
QCAtMzE2LDYgKzMxOSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllciog
bV9wbGF5ZXIgeyBudWxscHRyIH07CiAgICAgUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFS
ZXNvdXJjZUxvYWRlcj4gbV9tZWRpYVJlc291cmNlTG9hZGVyOworICAgIFJldGFpblB0cjxQbGF0
Zm9ybUxheWVyPiBtX3ZpZGVvTGF5ZXI7CiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyJiBt
X21hbmFnZXI7CiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVu
dGlmaWVyIG1fcmVtb3RlRW5naW5lSWRlbnRpZmllcjsKICAgICBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyIG1faWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKaW5kZXgg
YjdjMDRmMTM3OWY4NDFiMWM4YzM1Y2Q2YjY1YjdkN2ZlMDBlYTUzMS4uMzE2ZjQzOTQ1ZjljMWYz
MTRhMzE0MDE3M2Y1NzhkOGI2ZmI0M2RjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNw
cApAQCAtMjkzLDEzICsyOTMsMTMgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmVu
Z2luZUZhaWxlZFRvTG9hZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGkKIAogdm9pZCBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNoYXJhY3RlcmlzdGljQ2hhbmdlZChNZWRpYVBsYXll
clByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBib29sIGhhc0F1ZGlvLCBib29sIGhhc1ZpZGVv
LCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNb3ZpZUxvYWRUeXBlIGxvYWRUeXBlKQogewot
ICAgIGlmIChhdXRvIHBsYXllciA9IG1fcGxheWVycy5nZXQoaWQpKQorICAgIGlmIChjb25zdCBh
dXRvJiBwbGF5ZXIgPSBtX3BsYXllcnMuZ2V0KGlkKSkKICAgICAgICAgcGxheWVyLT5jaGFyYWN0
ZXJpc3RpY0NoYW5nZWQoaGFzQXVkaW8sIGhhc1ZpZGVvLCBsb2FkVHlwZSk7CiB9CiAKIHZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpzaXplQ2hhbmdlZChNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyIGlkLCBXZWJDb3JlOjpGbG9hdFNpemUgbmF0dXJhbFNpemUpCiB7Ci0g
ICAgaWYgKGF1dG8gcGxheWVyID0gbV9wbGF5ZXJzLmdldChpZCkpCisgICAgaWYgKGNvbnN0IGF1
dG8mIHBsYXllciA9IG1fcGxheWVycy5nZXQoaWQpKQogICAgICAgICBwbGF5ZXItPnNpemVDaGFu
Z2VkKG5hdHVyYWxTaXplKTsKIH0KIApAQCAtMzIzLDIyICszMjMsMjggQEAgdm9pZCBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXI6OnJlbW90ZUF1ZGlvVHJhY2tDb25maWd1cmF0aW9uQ2hhbmdlZChN
ZWRpYVBsYXllclAKIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmFkZFJlbW90ZVZp
ZGVvVHJhY2soTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBwbGF5ZXJJRCwgVHJh
Y2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0cmFja0lELCBUcmFja1ByaXZhdGVSZW1vdGVDb25m
aWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKIHsKLSAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX3Bs
YXllcnMuZ2V0KHBsYXllcklEKSkKKyAgICBpZiAoY29uc3QgYXV0byYgcGxheWVyID0gbV9wbGF5
ZXJzLmdldChwbGF5ZXJJRCkpCiAgICAgICAgIHBsYXllci0+YWRkUmVtb3RlVmlkZW9UcmFjayh0
cmFja0lELCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXI6OnJlbW92ZVJlbW90ZVZpZGVvVHJhY2soTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlSWRlbnRpZmllciBwbGF5ZXJJRCwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0cmFj
a0lEKQogewotICAgIGlmIChhdXRvIHBsYXllciA9IG1fcGxheWVycy5nZXQocGxheWVySUQpKQor
ICAgIGlmIChjb25zdCBhdXRvJiBwbGF5ZXIgPSBtX3BsYXllcnMuZ2V0KHBsYXllcklEKSkKICAg
ICAgICAgcGxheWVyLT5yZW1vdmVSZW1vdGVWaWRlb1RyYWNrKHRyYWNrSUQpOwogfQogCiB2b2lk
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6cmVtb3RlVmlkZW9UcmFja0NvbmZpZ3VyYXRpb25D
aGFuZ2VkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgcGxheWVySUQsIFRyYWNr
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgdHJhY2tJRCwgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmln
dXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgaWYgKGF1dG8gcGxheWVyID0gbV9wbGF5
ZXJzLmdldChwbGF5ZXJJRCkpCisgICAgaWYgKGNvbnN0IGF1dG8mIHBsYXllciA9IG1fcGxheWVy
cy5nZXQocGxheWVySUQpKQogICAgICAgICBwbGF5ZXItPnJlbW90ZVZpZGVvVHJhY2tDb25maWd1
cmF0aW9uQ2hhbmdlZCh0cmFja0lELCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKIH0KIAordm9p
ZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZShXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQpCit7CisgICAgaWYgKGNv
bnN0IGF1dG8mIHBsYXllciA9IG1fcGxheWVycy5nZXQoaWQpKQorICAgICAgICBwbGF5ZXItPmZp
cnN0VmlkZW9GcmFtZUF2YWlsYWJsZSgpOworfQorCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlcjo6cmVxdWVzdFJlc291cmNlKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIg
aWQsIFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZU1lZGlhUmVzb3VyY2VJZGVu
dGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXI6OkxvYWRPcHRpb25zIG9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoY29uc3QgYXV0byYgcGxheWVyID0gbV9wbGF5
ZXJzLmdldChpZCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaAppbmRleCBmNDNmOWRjMzgwODY5
NWFlYWI2ZGVhYWU1M2E3ZjQ3ZDlkMzkwMWExLi44MTc2MzRmZTA2MDQwZTEyMzZjOTdmMTAyOTdj
ODIyODMzODY1Yzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgKQEAgLTkzLDYgKzkzLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZFJlbW90ZUF1ZGlvVHJhY2soTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlSWRlbnRpZmllciwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgVHJhY2tQ
cml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYmKTsKICAgICB2b2lkIHJlbW92ZVJlbW90ZUF1ZGlv
VHJhY2soTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgVHJhY2tQcml2YXRlUmVt
b3RlSWRlbnRpZmllcik7CiAgICAgdm9pZCByZW1vdGVBdWRpb1RyYWNrQ29uZmlndXJhdGlvbkNo
YW5nZWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgVHJhY2tQcml2YXRlUmVt
b3RlSWRlbnRpZmllciwgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYmKTsKKyAgICB2
b2lkIGZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZShXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCBhZGRSZW1vdGVWaWRlb1RyYWNrKE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIs
IFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24mJik7CiAgICAgdm9pZCByZW1vdmVSZW1v
dGVWaWRlb1RyYWNrKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFRyYWNrUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5t
ZXNzYWdlcy5pbgppbmRleCAzMmVhN2QwOTdhMDJmYjRjZmM5NjE1ZjJmYmUyOTRiZWZjODYyMDdi
Li4zN2M2ODQ1ZWI0NGQxMDQ4NjhjNDkzZjk2NzFhMTA3MTBlYjk5MjA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdl
ci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjYsNiArMjYsNyBAQAogbWVz
c2FnZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewogICAgIE5l
dHdvcmtTdGF0ZUNoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyIGlkLCBzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclN0YXRlIHN0YXRlKQogICAg
IFJlYWR5U3RhdGVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRp
ZmllciBpZCwgc3RydWN0IFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZSBzdGF0ZSkKKyAg
ICBGaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGVJZGVudGlmaWVyIGlkKQogICAgIFZvbHVtZUNoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBkb3VibGUgdm9sdW1lKQogICAgIE11dGVDaGFuZ2Vk
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgYm9vbCBtdXRl
KQogICAgIFRpbWVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRp
ZmllciBpZCwgc3RydWN0IFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZSBzdGF0ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCA5NzdiOGVkNjJkOGMwZGNkODgzY2IzZjBjMDU4OTc3
ODk5ZGZiYzczLi42MTdkN2Q3NmMwYThhNWViOWRiYTU3YThhODA2YmM2MDg2MjZmNDVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC00OCw2ICs0OCw3IEBACiAKICNpZiBQTEFURk9STShD
T0NPQSkKICNpbmNsdWRlICJMYXllckhvc3RpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiTGF5ZXJU
cmVlQ29udGV4dC5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGRkMzZk
OWJmYWZjZWEzNTc3MWEzYjFiMjZmNmE1ZTEzNmIxZDRiYzEuLjM3YzllZGRiZDc2ZmYzYTlmODg1
N2U0ZDU1NGUyN2FlM2YxZDE1YjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0wMS0xNCAg
UGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYSBpbiBHUFUg
cHJvY2Vzc10gSW1wbGVtZW50IHRoZSByZW1vdGUgdmlkZW8gbGF5ZXIgc3VwcG9ydAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MDQzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIGdwdS1wcm9jZXNzL1Rl
c3RFeHBlY3RhdGlvbnM6CisKIDIwMjAtMDEtMTQgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1NDUwNS4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGRlMWFmYjQxYjYwNjEw
NjdkY2FlOTgyZjc1MGNjNjhjMjQxZDFmOTYuLjdkZTc3ODAwNjU1MTgzNWU3ZjI0Zjg0MWU4MjVk
YWRkYTlhZWNkNDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwpA
QCAtMjM3LDYgKzIzNyw5IEBAIGh0dHAvdGVzdHMvY2FjaGUvZGlzay1jYWNoZS9kaXNrLWNhY2hl
LW1lZGlhLXNtYWxsLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMv
dGV4dC10cmFjay1ibG9ja2VkLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvY29udGVudGV4dGVu
c2lvbnMvdmlkZW8tZWxlbWVudC1yZXNvdXJjZS10eXBlLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVz
dHMvbWVkaWEgWyBTa2lwIF0KK2h0dHAvdGVzdHMvbWVkaWEvdmlkZW8tbG9hZC10d2ljZS5odG1s
IFsgUGFzcyBdCitodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXBsYXktcHJvZ3Jlc3MuaHRtbCBbIFBh
c3MgXQoraHR0cC90ZXN0cy9tZWRpYS92aWRlby1wcmVsb2FkLmh0bWwgWyBQYXNzIF0KIGh0dHAv
dGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNhY2hlLW1lZGlha2V5c2Vzc2lvbi5odG1sIFsgU2tpcCBd
CiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS1tZWRpYXN0cmVhbS5odG1sIFsgU2tp
cCBdCiBodHRwL3dwdC9tZWRpYXJlY29yZGVyIFsgU2tpcCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387712</attachid>
            <date>2020-01-14 15:20:50 -0800</date>
            <delta_ts>2020-01-14 18:51:26 -0800</delta_ts>
            <desc>Rebased patch for landing</desc>
            <filename>bug-206043-20200114152049.patch</filename>
            <type>text/plain</type>
            <size>49432</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmE3ZmE1OTQyOTljZDRj
MDAyM2M0YzMxYjc2MGZlZTY3NzliODQ4OS4uNWY1YjRmYTIxMGM3Y2Y1NWJmZDcxOTA2OWU4Yjhh
YjBmNzc2OTQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTAxLTE0ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBwcm9j
ZXNzXSBJbXBsZW1lbnQgdGhlIHJlbW90ZSB2aWRlbyBsYXllciBzdXBwb3J0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwNDMKKworICAgICAgICBS
ZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJl
ZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgZnVuY3Rpb24g
TGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlUGxhdGZvcm1MYXllckZvckhvc3RpbmdDb250ZXh0
KCkgd2hpY2ggaXMKKyAgICAgICAgYSB3cmFwcGVyIG9mIFtDQUxheWVyIF93ZWJfcmVuZGVyTGF5
ZXJXaXRoQ29udGV4dElEOl0gdG8gY3JlYXRlIFdlYlZpZGVvSG9zdGluZ0xheWVyIGluIHRoZSBX
ZWIgcHJvY2Vzcy4KKworICAgICAgICBJdCBhbHNvIG1vdmVzIExheWVySG9zdGluZ0NvbnRleHQu
W2h8bW1dIHRvIGZyb20gZm9sZGVyICJtYWMiIHRvICJjb2NvYSIgYmVjYXVzZSBMYXllckhvc3Rp
bmdDb250ZXh0CisgICAgICAgIGlzIG5vdCBvbmx5IHVzZWQgb24gdGhlIE1hYyB2ZXJzaW9uLgor
ICAgICAgICBTb21lIGlzc3VlcyByZWxhdGVkIHRvIHVuaWZpZWQgYnVpbGQgYXJlIGFsc28gZml4
ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0UmVjdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dFJlY3Q6OmRl
Y29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJF
eHRyYXMubW06CisgICAgICAgICgrW0NBTGF5ZXIgX3dlYl9yZW5kZXJMYXllcldpdGhDb250ZXh0
SUQ6XSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Np
b25WVC5tbToKKwogMjAyMC0wMS0xNCAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBOZWVkIHdvcmthcm91bmQgZm9yIGNyYXNoIGluIEludGVsIE9wZW5HTCBk
cml2ZXIgcmVsYXRlZCB0byB0ZXh0dXJlIGNvcHlpbmcgZmVlZGJhY2sgbG9vcHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggYTdmYzIxNjk1MWYwNmRiNWNkMTc1Mjc3M2Q0ZmQzMWZhNGZhNWJiNC4uMzk0MDk4NTQxNGRh
OTBmMWRjNTEwZjk2MDlmZDM5MWIyYjk2ZWNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NCBAQAor
MjAyMC0wMS0xNCAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIFtN
ZWRpYSBpbiBHUFUgcHJvY2Vzc10gSW1wbGVtZW50IHRoZSByZW1vdGUgdmlkZW8gbGF5ZXIgc3Vw
cG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2
MDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBSZW1v
dGVNZWRpYVBsYXllclByb3h5IGluIHRoZSBHUFUgcHJvY2VzcyBjcmVhdGVzIGEgTGF5ZXJIb3N0
aW5nQ29udGV4dCB3aXRoIGNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoKQorICAgICAg
ICBhbmQgc2hhcmUgdGhlIGNvbnRleHQgSUQgd2l0aCB0aGUgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlIGluIHRoZSBXZWIgcHJvY2Vzcy4KKyAgICAgICAgVGhlbiB0aGUgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlIGNyZWF0ZXMgYSBob3N0aW5nIGxheWVyIHdpdGggdGhlIGNvbnRleHQgSUQgZm9y
IHJlbmRlcmluZy4KKworICAgICAgICBUaGlzIHBhdGNoIHVwZGF0ZXMgUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6UHJlcGFyZUZvclBsYXliYWNrIHRvIHByb3ZpZGUgdGhlIGluaXRpYWwgdmlkZW8g
Y29udGVudCBib3ggYW5kIHNjYWxlCisgICAgICAgIGZvciB0aGUgVmlkZW9GdWxsc2NyZWVuTGF5
ZXJNYW5hZ2VyT2JqQyBvbiB0aGUgR1BVIHByb2Nlc3MgdG8gY3JlYXRlIFdlYlZpZGVvQ29udGFp
bmVyTGF5ZXIuCisgICAgICAgIEl0IGFkZHMgWFBDIG1lc3NhZ2UgUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyOjpGaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUgdG8gbm90aWZ5IHRoZSByZW5kZXJlciBv
biB0aGUgV2ViIHByb2Nlc3MgdGhhdCB0aGUgdmlkZW8gbGF5ZXIgaXMgcmVhZHkuCisgICAgICAg
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRTaXplIG1lc3NhZ2UgaXMgcmVtb3Zl
ZCB0byBhdm9pZCB0aGUgdW5uZWNlc3NhcnkgWFBDIG1lc3NhZ2UKKyAgICAgICAgYmVjYXVzZSBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRTaXplKCkgZG9lcyBub3RoaW5n
LgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6cHJlcGFyZUZvclBs
YXliYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQ
bGF5ZXJGaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVN
ZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllclJlbmRlcmluZ01vZGVDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJDb250ZW50Qm94
UmVjdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1l
ZGlhUGxheWVyQ29udGVudHNTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUGxheWVyUHJveHk6OnNldFNpemUpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBQbGF0Zm9y
bS9jb2NvYS9MYXllckhvc3RpbmdDb250ZXh0Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0LmguCisgICAgICAgICogUGxhdGZvcm0v
Y29jb2EvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0uCisgICAgICAgIChXZWJLaXQ6Okxh
eWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZVBsYXRmb3JtTGF5ZXJGb3JIb3N0aW5nQ29udGV4dCk6
CisgICAgICAgICogUGxhdGZvcm0vaW9zL1BheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlci5t
bToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Db250cm9sbGVyUHJveHlNYWMu
bW06CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnByZXBhcmVGb3JQbGF5YmFjayk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2FkKToKKyAg
ICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpmaXJzdFZpZGVvRnJhbWVB
dmFpbGFibGUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBs
YXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnNldFNpemUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y2hhcmFjdGVyaXN0aWNDaGFuZ2VkKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpzaXplQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6YWRkUmVtb3RlVmlkZW9UcmFjayk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6cmVtb3ZlUmVtb3RlVmlk
ZW9UcmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6cmVt
b3RlVmlkZW9UcmFja0NvbmZpZ3VyYXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpmaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uY3BwOgorCiAyMDIwLTAxLTE0ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIE5ha2UgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlUHJveHkgYSBt
ZXNzYWdlIHJlY2VpdmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xv
clNwYWNlLmgKaW5kZXggMGFhMjc0YTFjNTA5NTM1MjZhODhlZTRhNGVmYTNmOWM4ZDIzN2IzYi4u
NmZjZDc4ZmMzZWEzZmIwNTY1NmViNjU3MmRhOGQzZTNkMTNmMjg0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaApAQCAtMzIsNiArMzIsNSBAQCBl
bnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90IHsKICAgICBMaW5lYXJSR0IsCiAgICAgRGlz
cGxheVAzCiB9OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9M
YXlvdXRSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0
LmgKaW5kZXggY2M3M2I4ZGQ5MTZjYTg5YWI1ZTZmNDg0MzViMjA3NWEyNGU3M2QzZi4uODI0Njk5
MTljNmU2ODJjMTEzZjkyZjQ2YWFhNGUwMjA1NGEwZTExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuaApAQCAtNTcsNyArNTcsMjkgQEAgcHVibGlj
OgogICAgIExheW91dFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkgOiBtX2xvY2F0aW9uKHJlY3Qu
bG9jYXRpb24oKSksIG1fc2l6ZShyZWN0LnNpemUoKSkgeyB9CiAgICAgCiAgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgTGF5b3V0UmVjdChjb25zdCBGbG9hdFJlY3QmKTsgLy8gZG9uJ3QgZG8g
dGhpcyBpbXBsaWNpdGx5IHNpbmNlIGl0J3MgbG9zc3kKLSAgICAgICAgCisKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IG1fbG9jYXRpb24gPDwgbV9zaXplOworICAgIH0K
KworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIE9wdGlvbmFsPExheW91
dFJlY3Q+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8
TGF5b3V0UG9pbnQ+IGxheW91dFBvaW50OworICAgICAgICBkZWNvZGVyID4+IGxheW91dFBvaW50
OworICAgICAgICBpZiAoIWxheW91dFBvaW50KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgICAgICBPcHRpb25hbDxMYXlvdXRTaXplPiBsYXlvdXRTaXplOworICAgICAg
ICBkZWNvZGVyID4+IGxheW91dFNpemU7CisgICAgICAgIGlmICghbGF5b3V0U2l6ZSkKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7ICpsYXlvdXRQ
b2ludCwgKmxheW91dFNpemUgfX07CisgICAgfQorCiAgICAgTGF5b3V0UG9pbnQgbG9jYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX2xvY2F0aW9uOyB9CiAgICAgTGF5b3V0U2l6ZSBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9zaXplOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFzLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KaW5kZXgg
MjNiYjBkZTkxNjBkY2I4NjdkMjIzMjAzNTM4YWQ1ZTdlMzJmNTAwOC4uMTgwNWMwYTVmNmNmZjI4
MzY1Y2Y2YzhjODcxM2I0MmU4NTAyOThlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0K
QEAgLTgxLDYgKzgxLDkgQEAKICsgKENBTGF5ZXIgKilfd2ViX3JlbmRlckxheWVyV2l0aENvbnRl
eHRJRDoodWludDMyX3QpY29udGV4dElECiB7CiAgICAgQ0FMYXllckhvc3QgKmxheWVySG9zdCA9
IFtDQUxheWVySG9zdCBsYXllcl07CisjaWZuZGVmIE5ERUJVRworICAgIFtsYXllckhvc3Qgc2V0
TmFtZTpAIldlYlZpZGVvSG9zdGluZ0xheWVyIl07CisjZW5kaWYKICAgICBsYXllckhvc3QuY29u
dGV4dElkID0gY29udGV4dElEOwogICAgIHJldHVybiBsYXllckhvc3Q7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lv
blZULm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2Zl
clNlc3Npb25WVC5tbQppbmRleCAxNTM5N2FiN2YyNzhhZThkYzY5ZTMyNTIzNzY0ZmI4OGJmZWRk
MDA3Li5mYThlZTBiMTAwY2YyMTQwODU2NTA1MTZiYzRlMjNhMWRiMTViZjM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lv
blZULm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJh
bnNmZXJTZXNzaW9uVlQubW0KQEAgLTI4LDE4ICsyOCwyMCBAQAogCiAjaWYgVVNFKFZJREVPVE9P
TEJPWCkKIAorI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkxvZ2dpbmcu
aCIKICNpbXBvcnQgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgogI2ltcG9ydCA8Q29yZU1lZGlhL0NN
Rm9ybWF0RGVzY3JpcHRpb24uaD4KICNpbXBvcnQgPENvcmVNZWRpYS9DTVNhbXBsZUJ1ZmZlci5o
PgorCisjaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgogI2ltcG9ydCA8cGFsL2NmL0NvcmVN
ZWRpYVNvZnRMaW5rLmg+CisjaW1wb3J0ICJWaWRlb1Rvb2xib3hTb2Z0TGluay5oIgogCiAjaWYg
SEFWRShJT1NVUkZBQ0UpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKICNpbmNsdWRlIDxwYWwv
c3BpL2NvY29hL0lPU3VyZmFjZVNQSS5oPgogI2VuZGlmCiAKLSNpbXBvcnQgIkNvcmVWaWRlb1Nv
ZnRMaW5rLmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5LmNwcAppbmRleCAxYzI0MTkzMjkyMjBhNGNjMTczMTJiYzNkMDRhOWU2ZjE5
OWFhN2U2Li5hOGVlODU4YmI5M2ViNDgxOGMwZmVmOTE3N2JkYTZmZGExODM3NmUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHkuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNv
dXJjZU1hbmFnZXIuaCIKICNpbmNsdWRlICJSZW1vdGVWaWRlb1RyYWNrUHJveHkuaCIKICNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0xheW91dFJl
Y3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9NZWRpYVBsYXllclByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVk
Lmg+CkBAIC0xMDUsMTIgKzEwNiwxNiBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Omxv
YWQoY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbgogICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29uZmlndXJhdGlvbikpOwogfQogCi12b2lkIFJlbW90
ZU1lZGlhUGxheWVyUHJveHk6OnByZXBhcmVGb3JQbGF5YmFjayhib29sIHByaXZhdGVNb2RlLCBX
ZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkIHByZWxvYWQsIGJvb2wgcHJlc2VydmVz
UGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZykKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6cHJlcGFyZUZvclBsYXliYWNrKGJvb2wgcHJpdmF0ZU1vZGUsIFdlYkNvcmU6Ok1lZGlh
UGxheWVyRW51bXM6OlByZWxvYWQgcHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBw
cmVwYXJlRm9yUmVuZGVyaW5nLCBMYXlvdXRSZWN0IGxheW91dFJlY3QsIGZsb2F0IHZpZGVvQ29u
dGVudFNjYWxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPExheWVySG9zdGluZ0Nv
bnRleHRJRD4mJiBjb250ZXh0SWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fcGxh
eWVyLT5zZXRQcml2YXRlQnJvd3NpbmdNb2RlKHByaXZhdGVNb2RlKTsKICAgICBtX3BsYXllci0+
c2V0UHJlbG9hZChwcmVsb2FkKTsKICAgICBtX3BsYXllci0+c2V0UHJlc2VydmVzUGl0Y2gocHJl
c2VydmVzUGl0Y2gpOwogICAgIG1fcGxheWVyLT5wcmVwYXJlRm9yUmVuZGVyaW5nKCk7CisgICAg
bV92aWRlb0NvbnRlbnRCb3hSZWN0ID0gbGF5b3V0UmVjdDsKKyAgICBtX3ZpZGVvQ29udGVudFNj
YWxlID0gdmlkZW9Db250ZW50U2NhbGU7CisgICAgbV9sYXllckhvc3RpbmdDb250ZXh0ID0gTGF5
ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2VzcygpOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+Y29udGV4dElEKCkpOwog
fQogCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmNhbmNlbExvYWQoKQpAQCAtMTc5LDEx
ICsxODQsNiBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnByZXBhcmVGb3JSZW5kZXJp
bmcoKQogICAgIG1fcGxheWVyLT5wcmVwYXJlRm9yUmVuZGVyaW5nKCk7CiB9CiAKLXZvaWQgUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXpl
KQotewotICAgIG1fcGxheWVyLT5zZXRTaXplKHNpemUpOwotfQotCiB2b2lkIFJlbW90ZU1lZGlh
UGxheWVyUHJveHk6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogewogICAgIG1fcGxheWVyLT5z
ZXRWaXNpYmxlKHZpc2libGUpOwpAQCAtNDMwLDEyICs0MzAsMTMgQEAgdm9pZCBSZW1vdGVNZWRp
YVBsYXllclByb3h5OjptZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoKQogCiB2b2lkIFJlbW90ZU1l
ZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyRmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKCkKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Um9v
dExheWVyKG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Rmlyc3RWaWRl
b0ZyYW1lQXZhaWxhYmxlKG1faWQpLCAwKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjptZWRpYVBsYXllclJlbmRlcmluZ01vZGVDaGFuZ2VkKCkKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Um9vdExheWVyKG1fcGxheWVy
LT5wbGF0Zm9ybUxheWVyKCkpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1l
ZGlhUGxheWVyQWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQoKQpAQCAtNDk2LDE0ICs0OTcsMTIg
QEAgYm9vbCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllcklzRnVsbHNjcmVlblBl
cm1pdHRlZCgpIGNvbnN0CiAKIExheW91dFJlY3QgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVk
aWFQbGF5ZXJDb250ZW50Qm94UmVjdCgpIGNvbnN0CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gTGF5b3V0UmVjdCgpOworICAgIHJldHVybiBtX3ZpZGVvQ29udGVudEJveFJl
Y3Q7CiB9CiAKIGZsb2F0IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyQ29udGVu
dHNTY2FsZSgpIGNvbnN0CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMTsK
KyAgICByZXR1cm4gbV92aWRlb0NvbnRlbnRTY2FsZTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVBs
YXllclByb3h5OjptZWRpYVBsYXllclBhdXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCmluZGV4IGI1ZmNjZDc2
OWEwODcxNTI2NGQ1YTU3NDZkNDVhOThlM2U5YWNkMzIuLjViYTc4M2E5YTY5MDJhNzA4NjA1ZTVj
NjY2ZjU4ZTQyNTM1N2M3MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaApAQCAtNTIsNiArNTIsOCBAQCBjbGFz
cyBWaWRlb1RyYWNrUHJpdmF0ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3VzaW5nIExheWVy
SG9zdGluZ0NvbnRleHRJRCA9IHVpbnQzMl90OworY2xhc3MgTGF5ZXJIb3N0aW5nQ29udGV4dDsK
IGNsYXNzIFJlbW90ZUF1ZGlvVHJhY2tQcm94eTsKIGNsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5OwogY2xhc3MgUmVtb3RlVmlkZW9UcmFja1Byb3h5OwpAQCAtNzIsNyArNzQsOCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGdldENvbmZpZ3VyYXRpb24oUmVtb3RlTWVkaWFQbGF5ZXJD
b25maWd1cmF0aW9uJik7CiAKLSAgICB2b2lkIHByZXBhcmVGb3JQbGF5YmFjayhib29sIHByaXZh
dGVNb2RlLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkLCBib29sIHByZXNlcnZl
c1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJpbmcpOworICAgIHZvaWQgcHJlcGFyZUZvclBs
YXliYWNrKGJvb2wgcHJpdmF0ZU1vZGUsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxv
YWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZywgV2ViQ29y
ZTo6TGF5b3V0UmVjdCwgZmxvYXQgdmlkZW9Db250ZW50U2NhbGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoT3B0aW9uYWw8TGF5ZXJIb3N0aW5nQ29udGV4dElEPiYmKT4mJik7CisgICAgdm9pZCBw
cmVwYXJlRm9yUmVuZGVyaW5nKCk7CiAKICAgICB2b2lkIGxvYWQoY29uc3QgVVJMJiwgT3B0aW9u
YWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYmLCBjb25zdCBXZWJDb3JlOjpDb250ZW50VHlw
ZSYsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVkaWFQbGF5
ZXJDb25maWd1cmF0aW9uJiYpPiYmKTsKICAgICB2b2lkIGNhbmNlbExvYWQoKTsKQEAgLTkyLDgg
Kzk1LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5nTW9kZShib29sKTsK
ICAgICB2b2lkIHNldFByZXNlcnZlc1BpdGNoKGJvb2wpOwogCi0gICAgdm9pZCBwcmVwYXJlRm9y
UmVuZGVyaW5nKCk7Ci0gICAgdm9pZCBzZXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsK
ICAgICB2b2lkIHNldFZpc2libGUoYm9vbCk7CiAgICAgdm9pZCBzZXRTaG91bGRNYWludGFpbkFz
cGVjdFJhdGlvKGJvb2wpOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoV2ViQ29y
ZTo6RmxvYXRSZWN0KTsKQEAgLTIwOSw2ICsyMTAsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxT
YW5kYm94RXh0ZW5zaW9uPiBtX3NhbmRib3hFeHRlbnNpb247CiAgICAgUmVmPElQQzo6Q29ubmVj
dGlvbj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbjsKICAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFQ
bGF5ZXI+IG1fcGxheWVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0
PiBtX2xheWVySG9zdGluZ0NvbnRleHQ7CiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkmIG1fbWFuYWdlcjsKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2lu
ZUlkZW50aWZpZXIgbV9lbmdpbmVJZGVudGlmaWVyOwogICAgIFZlY3RvcjxXZWJDb3JlOjpDb250
ZW50VHlwZT4gbV90eXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydDsKQEAgLTIxOCw2ICsyMjAs
OCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zZWVrYWJsZUNoYW5nZWQgeyB0cnVlIH07CiAgICAg
Ym9vbCBtX2J1ZmZlcmVkQ2hhbmdlZCB7IHRydWUgfTsKICAgICBib29sIG1fcmVuZGVyaW5nQ2Fu
QmVBY2NlbGVyYXRlZCB7IHRydWUgfTsKKyAgICBXZWJDb3JlOjpMYXlvdXRSZWN0IG1fdmlkZW9D
b250ZW50Qm94UmVjdDsKKyAgICBmbG9hdCBtX3ZpZGVvQ29udGVudFNjYWxlIHsgMS4wIH07CiAK
ICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dnZXImIG1fbG9nZ2VyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCAxNjI0NTNiOGZiNWQ3ZWU0Mjkx
NGFjNzA4Nzc2MmQ2NWYxMTMwZmI2Li5jZGI0ZDhkMTU4YWI4NTkzMTNiZDI3MzA2MWE4NTY1ZTFk
ZWYwYjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQs
NyBAQAogI2lmIEVOQUJMRShWSURFTykKIAogbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eSBOb3RSZWZDb3VudGVkIHsKLSAgICBQcmVwYXJlRm9yUGxheWJhY2soYm9vbCBwcml2YXRl
TW9kZSwgZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQgcHJl
bG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVyaW5nKQorICAg
IFByZXBhcmVGb3JQbGF5YmFjayhib29sIHByaXZhdGVNb2RlLCBlbnVtOnVpbnQ4X3QgV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNo
LCBib29sIHByZXBhcmVGb3JSZW5kZXJpbmcsIFdlYkNvcmU6OkxheW91dFJlY3QgbGF5b3V0UmVj
dCwgZmxvYXQgdmlkZW9Db250ZW50U2NhbGUpIC0+IChPcHRpb25hbDxXZWJLaXQ6OkxheWVySG9z
dGluZ0NvbnRleHRJRD4gbGF5ZXJIb3N0aW5nQ29udGV4dElkKSBBc3luYwogCiAgICAgTG9hZChV
UkwgdXJsLCBPcHRpb25hbDxXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gc2FuZGJv
eEV4dGVuc2lvbiwgV2ViQ29yZTo6Q29udGVudFR5cGUgY29udGVudFR5cGUsIFN0cmluZyBrZXlT
eXN0ZW0pIC0+IChzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24g
cGxheWVyQ29uZmlndXJhdGlvbikgQXN5bmMKICAgICBDYW5jZWxMb2FkKCkKQEAgLTQ1LDcgKzQ1
LDYgQEAgbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBOb3RSZWZDb3VudGVkIHsK
ICAgICBTZXRQcmVzZXJ2ZXNQaXRjaChib29sIHByZXNlcnZlc1BpdGNoKQogCiAgICAgUHJlcGFy
ZUZvclJlbmRlcmluZygpCi0gICAgU2V0U2l6ZShXZWJDb3JlOjpJbnRTaXplIHNpemUpCiAgICAg
U2V0VmlzaWJsZShib29sIHZpc2libGUpCiAgICAgU2V0U2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRp
byhib29sIG1haW50YWluQXNwZWN0UmF0aW8pCiAgICAgU2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUo
V2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL2NvY29hL0xheWVySG9zdGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
Y29jb2EvTGF5ZXJIb3N0aW5nQ29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyOWZiYjEyZGVhZTkxYTNl
MjliY2I3YWRhN2RhMGE3ZDVkMmZjNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL2NvY29hL0xheWVySG9zdGluZ0NvbnRleHQuaApAQCAtMCwwICsxLDk5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorCitPQkpDX0NMQVNTIENBTGF5ZXI7CitPQkpDX0NMQVNTIENBQ29udGV4dDsKKworbmFtZXNw
YWNlIFdURiB7CitjbGFzcyBNYWNoU2VuZFJpZ2h0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KwordXNpbmcgTGF5ZXJIb3N0aW5nQ29udGV4dElEID0gdWludDMyX3Q7CitlbnVtIGNsYXNzIExh
eWVySG9zdGluZ01vZGUgOiB1aW50OF90OworCitzdHJ1Y3QgTGF5ZXJIb3N0aW5nQ29udGV4dE9w
dGlvbnMgeworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgYm9vbCBjYW5TaG93V2hpbGVM
b2NrZWQgeyBmYWxzZSB9OworI2VuZGlmCit9OworCitjbGFzcyBMYXllckhvc3RpbmdDb250ZXh0
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMYXllckhvc3RpbmdDb250ZXh0KTsgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxM
YXllckhvc3RpbmdDb250ZXh0PiBjcmVhdGVGb3JQb3J0KGNvbnN0IFdURjo6TWFjaFNlbmRSaWdo
dCYgc2VydmVyUG9ydCk7CisgICAgCisjaWYgSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NU
SU5HKQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gY3Jl
YXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2Vzcyhjb25zdCBMYXllckhvc3RpbmdDb250ZXh0T3B0
aW9ucyYgPSB7IH0pOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gY3JlYXRlRm9yRXh0ZXJuYWxQbHVnaW5Ib3N0aW5n
UHJvY2VzcygpOworI2VuZGlmCisKKyAgICBzdGF0aWMgUmV0YWluUHRyPENBTGF5ZXI+IGNyZWF0
ZVBsYXRmb3JtTGF5ZXJGb3JIb3N0aW5nQ29udGV4dChMYXllckhvc3RpbmdDb250ZXh0SUQpOwor
CisjZW5kaWYgLy8gSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQorCisgICAgTGF5
ZXJIb3N0aW5nQ29udGV4dCgpOworICAgIH5MYXllckhvc3RpbmdDb250ZXh0KCk7CisKKyAgICB2
b2lkIHNldFJvb3RMYXllcihDQUxheWVyICopOworICAgIENBTGF5ZXIgKnJvb3RMYXllcigpIGNv
bnN0OworCisgICAgTGF5ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJRCgpIGNvbnN0OworICAg
IHZvaWQgaW52YWxpZGF0ZSgpOworCisgICAgTGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdN
b2RlKCkgeyByZXR1cm4gbV9sYXllckhvc3RpbmdNb2RlOyB9CisKKyAgICB2b2lkIHNldENvbG9y
U3BhY2UoQ0dDb2xvclNwYWNlUmVmKTsKKyAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSgp
IGNvbnN0OworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZvaWQgc2V0Q29sb3JNYXRjaFVudGFn
Z2VkQ29udGVudChib29sKTsKKyAgICBib29sIGNvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQoKSBj
b25zdDsKKyNlbmRpZgorCisgICAgLy8gRmVuY2VzIG9ubHkgd29yayBvbiBpT1MgYW5kIE9TIDEw
LjEwKy4KKyAgICB2b2lkIHNldEZlbmNlUG9ydChtYWNoX3BvcnRfdCk7CisKKyAgICAvLyBjcmVh
dGVGZW5jZVBvcnQgZG9lcyBub3QgaW5zdGFsbCB0aGUgZmVuY2UgcG9ydCBvbiB0aGUgTGF5ZXJI
b3N0aW5nQ29udGV4dCdzCisgICAgLy8gQ0FDb250ZXh0OyBjYWxsIHNldEZlbmNlUG9ydCgpIHdp
dGggdGhlIG5ld2x5IGNyZWF0ZWQgcG9ydCBpZiBzeW5jaHJvbml6YXRpb24KKyAgICAvLyB3aXRo
IHRoaXMgY29udGV4dCBpcyBkZXNpcmVkLgorICAgIFdURjo6TWFjaFNlbmRSaWdodCBjcmVhdGVG
ZW5jZVBvcnQoKTsKKworcHJpdmF0ZToKKyAgICBMYXllckhvc3RpbmdNb2RlIG1fbGF5ZXJIb3N0
aW5nTW9kZTsKKyAgICBSZXRhaW5QdHI8Q0FDb250ZXh0PiBtX2NvbnRleHQ7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9j
b2NvYS9MYXllckhvc3RpbmdDb250ZXh0Lm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2Nv
YS9MYXllckhvc3RpbmdDb250ZXh0Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0MDU4ZTliNzFkYTBlM2RjOWQ2
MDNhMmZhNzc1MWVmMzU2NzdmMDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL2NvY29hL0xheWVySG9zdGluZ0NvbnRleHQubW0KQEAgLTAsMCArMSwxNjEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTGF5ZXJIb3N0aW5n
Q29udGV4dC5oIgorCisjaW1wb3J0ICJMYXllclRyZWVDb250ZXh0LmgiCisjaW1wb3J0IDxXZWJD
b3JlL1dlYkNvcmVDQUxheWVyRXh0cmFzLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFw
aGljc1NQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CisjaW1w
b3J0IDx3dGYvTWFjaFNlbmRSaWdodC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RkOjp1
bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0
ZUZvclBvcnQoY29uc3QgTWFjaFNlbmRSaWdodCYgc2VydmVyUG9ydCkKK3sKKyAgICBhdXRvIGxh
eWVySG9zdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7CisK
KyAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBAeworICAgICAgICBrQ0FDb250ZXh0UG9ydE51
bWJlciA6IEAoc2VydmVyUG9ydC5zZW5kUmlnaHQoKSksCisjaWYgUExBVEZPUk0oTUFDKQorICAg
ICAgICBrQ0FDb250ZXh0Q0lGaWx0ZXJCZWhhdmlvciA6IEAiaWdub3JlIiwKKyNlbmRpZgorICAg
IH07CisKKyAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2xheWVySG9zdGluZ01vZGUgPSBMYXll
ckhvc3RpbmdNb2RlOjpJblByb2Nlc3M7CisgICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9jb250
ZXh0ID0gW0NBQ29udGV4dCByZW1vdGVDb250ZXh0V2l0aE9wdGlvbnM6b3B0aW9uc107CisKKyAg
ICByZXR1cm4gbGF5ZXJIb3N0aW5nQ29udGV4dDsKK30KKworI2lmIEhBVkUoT1VUX09GX1BST0NF
U1NfTEFZRVJfSE9TVElORykKK3N0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBM
YXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9jZXNzKGNvbnN0
IExheWVySG9zdGluZ0NvbnRleHRPcHRpb25zJiBvcHRpb25zKQoreworICAgIGF1dG8gbGF5ZXJI
b3N0aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKKyAgICBs
YXllckhvc3RpbmdDb250ZXh0LT5tX2xheWVySG9zdGluZ01vZGUgPSBMYXllckhvc3RpbmdNb2Rl
OjpPdXRPZlByb2Nlc3M7CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0o
TUFDQ0FUQUxZU1QpCisgICAgLy8gVXNlIGEgdmVyeSBsYXJnZSBkaXNwbGF5IElEIHRvIGVuc3Vy
ZSB0aGF0IHRoZSBjb250ZXh0IGlzIG5ldmVyIHB1dCBvbi1zY3JlZW4gCisgICAgLy8gd2l0aG91
dCBiZWluZyBleHBsaWNpdGx5IHBhcmVudGVkLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzE2MDg5MjY3
PiBmb3IgZGV0YWlscy4KKyAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2NvbnRleHQgPSBbQ0FD
b250ZXh0IHJlbW90ZUNvbnRleHRXaXRoT3B0aW9uczpAeworICAgICAgICBrQ0FDb250ZXh0U2Vj
dXJlOiBAKG9wdGlvbnMuY2FuU2hvd1doaWxlTG9ja2VkKSwKKyNpZiBIQVZFKENPUkVfQU5JTUFU
SU9OX1JFTkRFUl9TRVJWRVIpCisgICAgICAgIGtDQUNvbnRleHRJZ25vcmVzSGl0VGVzdCA6IEBZ
RVMsCisgICAgICAgIGtDQUNvbnRleHREaXNwbGF5SWQgOiBAMTAwMDAKKyNlbmRpZgorICAgIH1d
OworI2VsaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5E
T1dTRVJWRVJfQkxPQ0tJTkcpCisgICAgW0NBQ29udGV4dCBzZXRBbGxvd3NDR1NDb25uZWN0aW9u
czpOT107CisgICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9jb250ZXh0ID0gW0NBQ29udGV4dCBy
ZW1vdGVDb250ZXh0V2l0aE9wdGlvbnM6QHsKKyAgICAgICAga0NBQ29udGV4dENJRmlsdGVyQmVo
YXZpb3IgOiAgQCJpZ25vcmUiLAorICAgIH1dOworI2Vsc2UKKyAgICBsYXllckhvc3RpbmdDb250
ZXh0LT5tX2NvbnRleHQgPSBbQ0FDb250ZXh0IGNvbnRleHRXaXRoQ0dTQ29ubmVjdGlvbjpDR1NN
YWluQ29ubmVjdGlvbklEKCkgb3B0aW9uczpAeworICAgICAgICBrQ0FDb250ZXh0Q0lGaWx0ZXJC
ZWhhdmlvciA6IEAiaWdub3JlIiwKKyAgICB9XTsKKyNlbmRpZgorICAgIAorICAgIHJldHVybiBs
YXllckhvc3RpbmdDb250ZXh0OworfQorCisjaWYgUExBVEZPUk0oTUFDKQorc3RkOjp1bmlxdWVf
cHRyPExheWVySG9zdGluZ0NvbnRleHQ+IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4
dGVybmFsUGx1Z2luSG9zdGluZ1Byb2Nlc3MoKQoreworICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29u
dGV4dCA9IG1ha2VVbmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKKyAgICBsYXllckhvc3Rp
bmdDb250ZXh0LT5tX2xheWVySG9zdGluZ01vZGUgPSBMYXllckhvc3RpbmdNb2RlOjpPdXRPZlBy
b2Nlc3M7CisgICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9jb250ZXh0ID0gW0NBQ29udGV4dCBj
b250ZXh0V2l0aENHU0Nvbm5lY3Rpb246Q0dTTWFpbkNvbm5lY3Rpb25JRCgpIG9wdGlvbnM6QHsg
a0NBQ29udGV4dENJRmlsdGVyQmVoYXZpb3IgOiBAImlnbm9yZSIgfV07CisgICAgcmV0dXJuIGxh
eWVySG9zdGluZ0NvbnRleHQ7Cit9CisjZW5kaWYKKworUmV0YWluUHRyPENBTGF5ZXI+IExheWVy
SG9zdGluZ0NvbnRleHQ6OmNyZWF0ZVBsYXRmb3JtTGF5ZXJGb3JIb3N0aW5nQ29udGV4dChMYXll
ckhvc3RpbmdDb250ZXh0SUQgY29udGV4dElEKQoreworICAgIHJldHVybiBbQ0FMYXllciBfd2Vi
X3JlbmRlckxheWVyV2l0aENvbnRleHRJRDpjb250ZXh0SURdOworfQorCisjZW5kaWYgLy8gSEFW
RShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQorCitMYXllckhvc3RpbmdDb250ZXh0OjpM
YXllckhvc3RpbmdDb250ZXh0KCkKK3sKK30KKworTGF5ZXJIb3N0aW5nQ29udGV4dDo6fkxheWVy
SG9zdGluZ0NvbnRleHQoKQoreworfQorCit2b2lkIExheWVySG9zdGluZ0NvbnRleHQ6OnNldFJv
b3RMYXllcihDQUxheWVyICpyb290TGF5ZXIpCit7CisgICAgW21fY29udGV4dCBzZXRMYXllcjpy
b290TGF5ZXJdOworfQorCitDQUxheWVyICpMYXllckhvc3RpbmdDb250ZXh0Ojpyb290TGF5ZXIo
KSBjb25zdAoreworICAgIHJldHVybiBbbV9jb250ZXh0IGxheWVyXTsKK30KKworTGF5ZXJIb3N0
aW5nQ29udGV4dElEIExheWVySG9zdGluZ0NvbnRleHQ6OmNvbnRleHRJRCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIFttX2NvbnRleHQgY29udGV4dElkXTsKK30KKwordm9pZCBMYXllckhvc3RpbmdD
b250ZXh0OjppbnZhbGlkYXRlKCkKK3sKKyAgICBbbV9jb250ZXh0IGludmFsaWRhdGVdOworfQor
Cit2b2lkIExheWVySG9zdGluZ0NvbnRleHQ6OnNldENvbG9yU3BhY2UoQ0dDb2xvclNwYWNlUmVm
IGNvbG9yU3BhY2UpCit7CisgICAgW21fY29udGV4dCBzZXRDb2xvclNwYWNlOmNvbG9yU3BhY2Vd
OworfQorCitDR0NvbG9yU3BhY2VSZWYgTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y29sb3JTcGFjZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2NvbnRleHQgY29sb3JTcGFjZV07Cit9CisKKyNpZiBQ
TEFURk9STShNQUMpCit2b2lkIExheWVySG9zdGluZ0NvbnRleHQ6OnNldENvbG9yTWF0Y2hVbnRh
Z2dlZENvbnRlbnQoYm9vbCBjb2xvck1hdGNoVW50YWdnZWRDb250ZW50KQoreworICAgIFttX2Nv
bnRleHQgc2V0Q29sb3JNYXRjaFVudGFnZ2VkQ29udGVudDpjb2xvck1hdGNoVW50YWdnZWRDb250
ZW50XTsKK30KKworYm9vbCBMYXllckhvc3RpbmdDb250ZXh0Ojpjb2xvck1hdGNoVW50YWdnZWRD
b250ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fY29udGV4dCBjb2xvck1hdGNoVW50YWdn
ZWRDb250ZW50XTsKK30KKyNlbmRpZgorCit2b2lkIExheWVySG9zdGluZ0NvbnRleHQ6OnNldEZl
bmNlUG9ydChtYWNoX3BvcnRfdCBmZW5jZVBvcnQpCit7CisgICAgW21fY29udGV4dCBzZXRGZW5j
ZVBvcnQ6ZmVuY2VQb3J0XTsKK30KKworTWFjaFNlbmRSaWdodCBMYXllckhvc3RpbmdDb250ZXh0
OjpjcmVhdGVGZW5jZVBvcnQoKQoreworICAgIHJldHVybiBNYWNoU2VuZFJpZ2h0OjphZG9wdChb
bV9jb250ZXh0IGNyZWF0ZUZlbmNlUG9ydF0pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vaW9zL1BheW1lbnRBdXRob3JpemF0
aW9uQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vaW9zL1BheW1lbnRBdXRo
b3JpemF0aW9uQ29udHJvbGxlci5tbQppbmRleCBmMTYzMWJhMGZjYzcyOWQwNjg0ZDg3Y2ZhNjJm
YTY2ODkxNzg2NzQzLi41Yjg0ZWZlYjMxNGE0NTkxMjlkNzEzNzA0MWI4N2M2M2RjMTYxYzU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2lvcy9QYXltZW50QXV0aG9yaXphdGlv
bkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9pb3MvUGF5bWVudEF1
dGhvcml6YXRpb25Db250cm9sbGVyLm1tCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBvcnQgIldL
UGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NL
aXRTb2Z0TGluay5oPgorI2ltcG9ydCA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAKIEBpbnRl
cmZhY2UgV0tQYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXJEZWxlZ2F0ZSA6IFdLUGF5bWVu
dEF1dGhvcml6YXRpb25EZWxlZ2F0ZSA8UEtQYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXJE
ZWxlZ2F0ZSwgUEtQYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXJQcml2YXRlRGVsZWdhdGU+
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTljYWRmZTZkYjE2ZmNjOTQzYThmMTky
ZTVkMDFmZjhjMDE0NzY4ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0LmgK
KysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEy
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKLSNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KLQotT0JKQ19DTEFTUyBDQUxheWVyOwotT0JKQ19DTEFTUyBDQUNvbnRleHQ7Ci0K
LW5hbWVzcGFjZSBXVEYgewotY2xhc3MgTWFjaFNlbmRSaWdodDsKLX0KLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLXVzaW5nIExheWVySG9zdGluZ0NvbnRleHRJRCA9IHVpbnQzMl90OwotICAgIAot
c3RydWN0IExheWVySG9zdGluZ0NvbnRleHRPcHRpb25zIHsKLSNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgIGJvb2wgY2FuU2hvd1doaWxlTG9ja2VkIHsgZmFsc2UgfTsKLSNlbmRpZgotfTsK
LQotY2xhc3MgTGF5ZXJIb3N0aW5nQ29udGV4dCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
TGF5ZXJIb3N0aW5nQ29udGV4dCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgot
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gY3JlYXRlRm9y
UG9ydChjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmIHNlcnZlclBvcnQpOwotICAgIAotI2lmIEhB
VkUoT1VUX09GX1BST0NFU1NfTEFZRVJfSE9TVElORykKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPExheWVySG9zdGluZ0NvbnRleHQ+IGNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3Mo
Y29uc3QgTGF5ZXJIb3N0aW5nQ29udGV4dE9wdGlvbnMmID0geyB9KTsKLQotI2lmIFBMQVRGT1JN
KE1BQykKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IGNy
ZWF0ZUZvckV4dGVybmFsUGx1Z2luSG9zdGluZ1Byb2Nlc3MoKTsKLSNlbmRpZgotICAgIAotI2Vu
ZGlmIC8vIEhBVkUoT1VUX09GX1BST0NFU1NfTEFZRVJfSE9TVElORykKLQotICAgIExheWVySG9z
dGluZ0NvbnRleHQoKTsKLSAgICB+TGF5ZXJIb3N0aW5nQ29udGV4dCgpOwotCi0gICAgdm9pZCBz
ZXRSb290TGF5ZXIoQ0FMYXllciAqKTsKLSAgICBDQUxheWVyICpyb290TGF5ZXIoKSBjb25zdDsK
LQotICAgIExheWVySG9zdGluZ0NvbnRleHRJRCBjb250ZXh0SUQoKSBjb25zdDsKLSAgICB2b2lk
IGludmFsaWRhdGUoKTsKLQotICAgIExheWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9kZSgp
IHsgcmV0dXJuIG1fbGF5ZXJIb3N0aW5nTW9kZTsgfQotCi0gICAgdm9pZCBzZXRDb2xvclNwYWNl
KENHQ29sb3JTcGFjZVJlZik7Ci0gICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UoKSBjb25z
dDsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lkIHNldENvbG9yTWF0Y2hVbnRhZ2dlZENv
bnRlbnQoYm9vbCk7Ci0gICAgYm9vbCBjb2xvck1hdGNoVW50YWdnZWRDb250ZW50KCkgY29uc3Q7
Ci0jZW5kaWYKLQotICAgIC8vIEZlbmNlcyBvbmx5IHdvcmsgb24gaU9TIGFuZCBPUyAxMC4xMCsu
Ci0gICAgdm9pZCBzZXRGZW5jZVBvcnQobWFjaF9wb3J0X3QpOwotCi0gICAgLy8gY3JlYXRlRmVu
Y2VQb3J0IGRvZXMgbm90IGluc3RhbGwgdGhlIGZlbmNlIHBvcnQgb24gdGhlIExheWVySG9zdGlu
Z0NvbnRleHQncwotICAgIC8vIENBQ29udGV4dDsgY2FsbCBzZXRGZW5jZVBvcnQoKSB3aXRoIHRo
ZSBuZXdseSBjcmVhdGVkIHBvcnQgaWYgc3luY2hyb25pemF0aW9uCi0gICAgLy8gd2l0aCB0aGlz
IGNvbnRleHQgaXMgZGVzaXJlZC4KLSAgICBXVEY6Ok1hY2hTZW5kUmlnaHQgY3JlYXRlRmVuY2VQ
b3J0KCk7Ci0KLXByaXZhdGU6Ci0gICAgTGF5ZXJIb3N0aW5nTW9kZSBtX2xheWVySG9zdGluZ01v
ZGU7Ci0gICAgUmV0YWluUHRyPENBQ29udGV4dD4gbV9jb250ZXh0OwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xh
eWVySG9zdGluZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9MYXllckhv
c3RpbmdDb250ZXh0Lm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YWVlNDdlYWI5
NWY1OGE2YjQxNzg1YzBmNGZmN2YwMmIwNGNmNDQzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9z
dGluZ0NvbnRleHQubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxNTMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJMYXllckhvc3RpbmdDb250ZXh0
LmgiCi0KLSNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+Ci0jaW1wb3J0IDxw
YWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KLSNpbXBvcnQgPHd0Zi9NYWNoU2VuZFJpZ2h0
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5n
Q29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yUG9ydChjb25zdCBNYWNoU2Vu
ZFJpZ2h0JiBzZXJ2ZXJQb3J0KQotewotICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IG1h
a2VVbmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKLQotICAgIE5TRGljdGlvbmFyeSAqb3B0
aW9ucyA9IEB7Ci0gICAgICAgIGtDQUNvbnRleHRQb3J0TnVtYmVyIDogQChzZXJ2ZXJQb3J0LnNl
bmRSaWdodCgpKSwKLSNpZiBQTEFURk9STShNQUMpCi0gICAgICAgIGtDQUNvbnRleHRDSUZpbHRl
ckJlaGF2aW9yIDogQCJpZ25vcmUiLAotI2VuZGlmCi0gICAgfTsKLQotICAgIGxheWVySG9zdGlu
Z0NvbnRleHQtPm1fbGF5ZXJIb3N0aW5nTW9kZSA9IExheWVySG9zdGluZ01vZGU6OkluUHJvY2Vz
czsKLSAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2NvbnRleHQgPSBbQ0FDb250ZXh0IHJlbW90
ZUNvbnRleHRXaXRoT3B0aW9uczpvcHRpb25zXTsKLQotICAgIHJldHVybiBsYXllckhvc3RpbmdD
b250ZXh0OwotfQotCi0jaWYgSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQotc3Rk
Ojp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IExheWVySG9zdGluZ0NvbnRleHQ6OmNy
ZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoY29uc3QgTGF5ZXJIb3N0aW5nQ29udGV4dE9w
dGlvbnMmIG9wdGlvbnMpCi17Ci0gICAgYXV0byBsYXllckhvc3RpbmdDb250ZXh0ID0gbWFrZVVu
aXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOwotICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1f
bGF5ZXJIb3N0aW5nTW9kZSA9IExheWVySG9zdGluZ01vZGU6Ok91dE9mUHJvY2VzczsKLQotI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKLSAgICAvLyBV
c2UgYSB2ZXJ5IGxhcmdlIGRpc3BsYXkgSUQgdG8gZW5zdXJlIHRoYXQgdGhlIGNvbnRleHQgaXMg
bmV2ZXIgcHV0IG9uLXNjcmVlbiAKLSAgICAvLyB3aXRob3V0IGJlaW5nIGV4cGxpY2l0bHkgcGFy
ZW50ZWQuIFNlZSA8cmRhcjovL3Byb2JsZW0vMTYwODkyNjc+IGZvciBkZXRhaWxzLgotICAgIGxh
eWVySG9zdGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQgcmVtb3RlQ29udGV4dFdp
dGhPcHRpb25zOkB7Ci0gICAgICAgIGtDQUNvbnRleHRTZWN1cmU6IEAob3B0aW9ucy5jYW5TaG93
V2hpbGVMb2NrZWQpLAotI2lmIEhBVkUoQ09SRV9BTklNQVRJT05fUkVOREVSX1NFUlZFUikKLSAg
ICAgICAga0NBQ29udGV4dElnbm9yZXNIaXRUZXN0IDogQFlFUywKLSAgICAgICAga0NBQ29udGV4
dERpc3BsYXlJZCA6IEAxMDAwMAotI2VuZGlmCi0gICAgfV07Ci0jZWxpZiAhUExBVEZPUk0oTUFD
Q0FUQUxZU1QpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKLSAg
ICBbQ0FDb250ZXh0IHNldEFsbG93c0NHU0Nvbm5lY3Rpb25zOk5PXTsKLSAgICBsYXllckhvc3Rp
bmdDb250ZXh0LT5tX2NvbnRleHQgPSBbQ0FDb250ZXh0IHJlbW90ZUNvbnRleHRXaXRoT3B0aW9u
czpAewotICAgICAgICBrQ0FDb250ZXh0Q0lGaWx0ZXJCZWhhdmlvciA6ICBAImlnbm9yZSIsCi0g
ICAgfV07Ci0jZWxzZQotICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNv
bnRleHQgY29udGV4dFdpdGhDR1NDb25uZWN0aW9uOkNHU01haW5Db25uZWN0aW9uSUQoKSBvcHRp
b25zOkB7Ci0gICAgICAgIGtDQUNvbnRleHRDSUZpbHRlckJlaGF2aW9yIDogQCJpZ25vcmUiLAot
ICAgIH1dOwotI2VuZGlmCi0gICAgCi0gICAgcmV0dXJuIGxheWVySG9zdGluZ0NvbnRleHQ7Ci19
Ci0KLSNpZiBQTEFURk9STShNQUMpCi1zdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4
dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJuYWxQbHVnaW5Ib3N0aW5nUHJv
Y2VzcygpCi17Ci0gICAgYXV0byBsYXllckhvc3RpbmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxMYXll
ckhvc3RpbmdDb250ZXh0PigpOwotICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fbGF5ZXJIb3N0
aW5nTW9kZSA9IExheWVySG9zdGluZ01vZGU6Ok91dE9mUHJvY2VzczsKLSAgICBsYXllckhvc3Rp
bmdDb250ZXh0LT5tX2NvbnRleHQgPSBbQ0FDb250ZXh0IGNvbnRleHRXaXRoQ0dTQ29ubmVjdGlv
bjpDR1NNYWluQ29ubmVjdGlvbklEKCkgb3B0aW9uczpAeyBrQ0FDb250ZXh0Q0lGaWx0ZXJCZWhh
dmlvciA6IEAiaWdub3JlIiB9XTsKLSAgICByZXR1cm4gbGF5ZXJIb3N0aW5nQ29udGV4dDsKLX0K
LSNlbmRpZgotI2VuZGlmIC8vIEhBVkUoT1VUX09GX1BST0NFU1NfTEFZRVJfSE9TVElORykKLQot
TGF5ZXJIb3N0aW5nQ29udGV4dDo6TGF5ZXJIb3N0aW5nQ29udGV4dCgpCi17Ci19Ci0KLUxheWVy
SG9zdGluZ0NvbnRleHQ6On5MYXllckhvc3RpbmdDb250ZXh0KCkKLXsKLX0KLQotdm9pZCBMYXll
ckhvc3RpbmdDb250ZXh0OjpzZXRSb290TGF5ZXIoQ0FMYXllciAqcm9vdExheWVyKQotewotICAg
IFttX2NvbnRleHQgc2V0TGF5ZXI6cm9vdExheWVyXTsKLX0KLQotQ0FMYXllciAqTGF5ZXJIb3N0
aW5nQ29udGV4dDo6cm9vdExheWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gW21fY29udGV4dCBs
YXllcl07Ci19Ci0KLUxheWVySG9zdGluZ0NvbnRleHRJRCBMYXllckhvc3RpbmdDb250ZXh0Ojpj
b250ZXh0SUQoKSBjb25zdAotewotICAgIHJldHVybiBbbV9jb250ZXh0IGNvbnRleHRJZF07Ci19
Ci0KLXZvaWQgTGF5ZXJIb3N0aW5nQ29udGV4dDo6aW52YWxpZGF0ZSgpCi17Ci0gICAgW21fY29u
dGV4dCBpbnZhbGlkYXRlXTsKLX0KLQotdm9pZCBMYXllckhvc3RpbmdDb250ZXh0OjpzZXRDb2xv
clNwYWNlKENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKQotewotICAgIFttX2NvbnRleHQgc2V0
Q29sb3JTcGFjZTpjb2xvclNwYWNlXTsKLX0KLQotQ0dDb2xvclNwYWNlUmVmIExheWVySG9zdGlu
Z0NvbnRleHQ6OmNvbG9yU3BhY2UoKSBjb25zdAotewotICAgIHJldHVybiBbbV9jb250ZXh0IGNv
bG9yU3BhY2VdOwotfQotCi0jaWYgUExBVEZPUk0oTUFDKQotdm9pZCBMYXllckhvc3RpbmdDb250
ZXh0OjpzZXRDb2xvck1hdGNoVW50YWdnZWRDb250ZW50KGJvb2wgY29sb3JNYXRjaFVudGFnZ2Vk
Q29udGVudCkKLXsKLSAgICBbbV9jb250ZXh0IHNldENvbG9yTWF0Y2hVbnRhZ2dlZENvbnRlbnQ6
Y29sb3JNYXRjaFVudGFnZ2VkQ29udGVudF07Ci19Ci0KLWJvb2wgTGF5ZXJIb3N0aW5nQ29udGV4
dDo6Y29sb3JNYXRjaFVudGFnZ2VkQ29udGVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX2Nv
bnRleHQgY29sb3JNYXRjaFVudGFnZ2VkQ29udGVudF07Ci19Ci0jZW5kaWYKLQotdm9pZCBMYXll
ckhvc3RpbmdDb250ZXh0OjpzZXRGZW5jZVBvcnQobWFjaF9wb3J0X3QgZmVuY2VQb3J0KQotewot
ICAgIFttX2NvbnRleHQgc2V0RmVuY2VQb3J0OmZlbmNlUG9ydF07Ci19Ci0KLU1hY2hTZW5kUmln
aHQgTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRmVuY2VQb3J0KCkKLXsKLSAgICByZXR1cm4g
TWFjaFNlbmRSaWdodDo6YWRvcHQoW21fY29udGV4dCBjcmVhdGVGZW5jZVBvcnRdKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblBy
b2Nlc3MvbWFjL1BsdWdpbkNvbnRyb2xsZXJQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvUGx1
Z2luUHJvY2Vzcy9tYWMvUGx1Z2luQ29udHJvbGxlclByb3h5TWFjLm1tCmluZGV4IDU2ODBiOTA3
YjZhNjYwNTJkZTAwYmRmNzRiMTMxNjNiNWQzYjU4YjMuLmQxNmNkMjc2NjlkMzUzOTM5YmYyNGE3
OTYxYzUzOTNiMjIyYTc3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vz
cy9tYWMvUGx1Z2luQ29udHJvbGxlclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1
Z2luUHJvY2Vzcy9tYWMvUGx1Z2luQ29udHJvbGxlclByb3h5TWFjLm1tCkBAIC0yOSw2ICsyOSw3
IEBACiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKICNpbXBvcnQgIkxheWVySG9z
dGluZ0NvbnRleHQuaCIKKyNpbXBvcnQgIkxheWVyVHJlZUNvbnRleHQuaCIKICNpbXBvcnQgIlBs
dWdpbkNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2ltcG9ydCAiUGx1Z2luUHJvY2Vzcy5oIgogI2lt
cG9ydCAiUGx1Z2luUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApp
bmRleCAzOTRjNjcwNDQ1ZmZkMTcyZmUwMmYxNTZkNjBlNWYxMWVmZTk3ZDg1Li4wNTcwYTZhOWZl
OWI1NjY0YTU0MTI3MzQxNjQ3ODczM2JjNGI5ZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBA
IC02OSw2ICs2OSw3IEBAIFBsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmNwcAogUGxhdGZvcm0vY2xh
c3NpZmllci9jb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcAog
UGxhdGZvcm0vY2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5jcHAK
IAorUGxhdGZvcm0vY29jb2EvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQogUGxhdGZvcm0vY29jb2Ev
UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW0KIFBsYXRmb3JtL2NvY29hL1BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIubW0KIFBsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9y
eUNvY29hLmNwcApAQCAtODQsNyArODUsNiBAQCBQbGF0Zm9ybS9pb3MvUGF5bWVudEF1dGhvcml6
YXRpb25Db250cm9sbGVyLm1tCiBQbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1t
CiBQbGF0Zm9ybS9JUEMvY29jb2EvTWFjaE1lc3NhZ2UuY3BwCiAKLVBsYXRmb3JtL21hYy9MYXll
ckhvc3RpbmdDb250ZXh0Lm1tCiBQbGF0Zm9ybS9tYWMvTWFjaFV0aWxpdGllcy5jcHAKIFBsYXRm
b3JtL21hYy9NZW51VXRpbGl0aWVzLm1tCiBQbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1t
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBiMTk0MzNhZTJiYjlmYTc2Njc1MjZlNzI1NWQ5ZDE1ZGE0MmE0MWY1Li5kMTMyYmJiNTJhZTdl
ZjlkZmQzYjBkZTczY2NmMTIyZDc4NTg1YmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU1NDAsOCArNTU0MCw2IEBACiAJCTFBN0U4
MTRFMTE1MkQyMjQwMDAzNjk1QiAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAotCQkJCUJDRTA5Mzc2MTRGQjEyOEIwMDExMzhEOSAvKiBMYXllckhvc3Rp
bmdDb250ZXh0LmggKi8sCi0JCQkJQkNFMDkzNzUxNEZCMTI4QjAwMTEzOEQ5IC8qIExheWVySG9z
dGluZ0NvbnRleHQubW0gKi8sCiAJCQkJMUEyNEI1RjAxMUY1MzFFODAwQzM4MjY5IC8qIE1hY2hV
dGlsaXRpZXMuY3BwICovLAogCQkJCTFBMjRCNUYxMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRp
bGl0aWVzLmggKi8sCiAJCQkJNTE5MzNERUIxOTY1RUIyNDAwOEFDM0VBIC8qIE1lbnVVdGlsaXRp
ZXMuaCAqLywKQEAgLTcyMjksNiArNzIyNyw4IEBACiAJCTQ0NTBBRUJFMURDM0ZBQUMwMDk5NDNG
MiAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJQkNFMDkzNzYxNEZCMTI4QjAwMTEzOEQ5IC8qIExheWVySG9zdGluZ0NvbnRleHQuaCAqLywK
KwkJCQlCQ0UwOTM3NTE0RkIxMjhCMDAxMTM4RDkgLyogTGF5ZXJIb3N0aW5nQ29udGV4dC5tbSAq
LywKIAkJCQlBMTc5OEIzRDIyMkQ5N0EyMDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25Q
cmVzZW50ZXIuaCAqLywKIAkJCQlBMTc5OEI0QTIyMkYxMzNBMDAwNzY0QkQgLyogUGF5bWVudEF1
dGhvcml6YXRpb25QcmVzZW50ZXIubW0gKi8sCiAJCQkJQTE3OThCM0YyMjJEOThCNjAwMDc2NEJE
IC8qIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuaCAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLmNwcAppbmRleCA3ZjVmMGYyMzE1Y2U4M2RiNDQxNzAzNzgxYjkyNWVmM2E5
NmYxMDg2Li5hMWY5NjdkNzcxYTViZTQyNDYyZGY4Y2UyODBjNGRkMzE1MzE1NGNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC00NiwxMSArNDYsMTEgQEAKICNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCi0jaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECiBuYW1lc3BhY2UgV2ViQ29yZSB7CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECiBleHRlcm4gV1RGTG9nQ2hhbm5lbCBMb2dNZWRpYTsKLX0KICNlbmRpZgorfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtODksNyArODksMTgg
QEAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp+TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlKCkK
IAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnByZXBhcmVGb3JQbGF5YmFjayhib29s
IHByaXZhdGVNb2RlLCBNZWRpYVBsYXllcjo6UHJlbG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZl
c1BpdGNoLCBib29sIHByZXBhcmUpCiB7Ci0gICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlByZXBhcmVGb3JQbGF5YmFjayhwcml2YXRlTW9kZSwg
cHJlbG9hZCwgcHJlc2VydmVzUGl0Y2gsIHByZXBhcmUpLCBtX2lkKTsKKyAgICBhdXRvIGxheW91
dFJlY3QgPSBtX3BsYXllci0+cGxheWVyQ29udGVudEJveFJlY3QoKTsKKyAgICBhdXRvIHNjYWxl
ID0gbV9wbGF5ZXItPnBsYXllckNvbnRlbnRzU2NhbGUoKTsKKworICAgIGNvbm5lY3Rpb24oKS5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlByZXBh
cmVGb3JQbGF5YmFjayhwcml2YXRlTW9kZSwgcHJlbG9hZCwgcHJlc2VydmVzUGl0Y2gsIHByZXBh
cmUsIGxheW91dFJlY3QsIHNjYWxlKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0
aGlzXShhdXRvIGNvbnRleHRJZCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCFjb250ZXh0SWQpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgbV92aWRlb0xheWVyID0gTGF5ZXJIb3N0aW5nQ29udGV4dDo6
Y3JlYXRlUGxhdGZvcm1MYXllckZvckhvc3RpbmdDb250ZXh0KGNvbnRleHRJZC52YWx1ZSgpKTsK
KyAgICB9LCBtX2lkKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgQ29udGVudFR5
cGUmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKQEAgLTEyMSw3ICsxMzIs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpsb2FkKGNvbnN0IFVSTCYgdXJsLCBjbwogCiAgICAgY29ubmVjdGlvbigpLnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6TG9hZCh1cmwsIHNh
bmRib3hFeHRlbnNpb25IYW5kbGUsIGNvbnRlbnRUeXBlLCBrZXlTeXN0ZW0pLCBbd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cigqdGhpcyldKGF1dG8mJiBjb25maWd1cmF0aW9uKSB7CiAgICAgICAgIGlm
ICh3ZWFrVGhpcykKLSAgICAgICAgICAgIHdlYWtUaGlzLT5tX2NvbmZpZ3VyYXRpb24gPSBjb25m
aWd1cmF0aW9uOworICAgICAgICAgICAgd2Vha1RoaXMtPm1fY29uZmlndXJhdGlvbiA9IFdURk1v
dmUoY29uZmlndXJhdGlvbik7CiAgICAgfSwgbV9pZCk7CiB9CiAKQEAgLTI5MSw2ICszMDIsMTEg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNpemVDaGFuZ2VkKFdlYkNvcmU6OkZs
b2F0U2l6ZSBuYXR1cmFsU2l6ZSkKICAgICBtX3BsYXllci0+c2l6ZUNoYW5nZWQoKTsKIH0KIAor
dm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSgp
Cit7CisgICAgbV9wbGF5ZXItPmZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSgpOworfQorCiBTdHJp
bmcgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjplbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5lbmdpbmVEZXNjcmlwdGlvbjsKQEAgLTM0Niwx
MSArMzYyLDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnByZXBhcmVGb3JSZW5k
ZXJpbmcoKQogICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXll
clByb3h5OjpQcmVwYXJlRm9yUmVuZGVyaW5nKCksIG1faWQpOwogfQogCi12b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQot
ewotICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5
OjpTZXRTaXplKHNpemUpLCBtX2lkKTsKLX0KLQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogewogICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpTZXRWaXNpYmxlKHZpc2libGUpLCBtX2lk
KTsKQEAgLTQ4MCw4ICs0OTEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9h
ZChNZWRpYVN0cmVhbVByaXZhdGUmKQogCiBQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fdmlkZW9MYXllci5nZXQoKTsKIH0K
IAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShW
SURFT19QUkVTRU5UQVRJT05fTU9ERSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAppbmRleCA2
ZWFlMjQ5NDg4NDU0OWM0NmU4MjIyODc3M2Y0ZjZhYjdhZmY5NjJmLi4zYzk3MmUxMzJmYzNhZmRk
ZjJhODVjNmQyNWJhM2RlZjEzNmFiZDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKQEAg
LTc4LDYgKzc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlQ2FjaGVkU3RhdGUoUmVtb3Rl
TWVkaWFQbGF5ZXJTdGF0ZSYmKTsKICAgICB2b2lkIGNoYXJhY3RlcmlzdGljQ2hhbmdlZChib29s
IGhhc0F1ZGlvLCBib29sIGhhc1ZpZGVvLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNb3Zp
ZUxvYWRUeXBlKTsKICAgICB2b2lkIHNpemVDaGFuZ2VkKFdlYkNvcmU6OkZsb2F0U2l6ZSk7Cisg
ICAgdm9pZCBmaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoKTsKIAogICAgIHZvaWQgYWRkUmVtb3Rl
QXVkaW9UcmFjayhUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBUcmFja1ByaXZhdGVSZW1v
dGVDb25maWd1cmF0aW9uJiYpOwogICAgIHZvaWQgcmVtb3ZlUmVtb3RlQXVkaW9UcmFjayhUcmFj
a1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyKTsKQEAgLTEyMyw3ICsxMjQsNiBAQCBwcml2YXRlOgog
CiAgICAgYm9vbCBzaG91bGRJZ25vcmVJbnRyaW5zaWNTaXplKCkgZmluYWw7CiAKLSAgICAvLyBV
bmltcGxlbWVudGVkCiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZp
bmFsOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5B
QkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKQEAgLTE5Niw3ICsxOTYsMTAgQEAgcHJpdmF0
ZToKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlcygpIGNvbnN0IGZpbmFsOwogICAg
IGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHNldFNp
emUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIGZpbmFsOworICAgIC8vIEluIHRoZSBDb2NvYSBX
ZWJLaXQgcG9ydCwgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0U2l6ZSgp
IGRvZXMgbm90aGluZywKKyAgICAvLyBzbyB0aGUgV2ViIHByb2Nlc3MgZG9lcyBub3QgbmVlZCB0
byBzZW5kIElQQyBtZXNzYWdlcyB0byBjYWxsIGl0IGluIHRoZSBHUFUgcHJvY2Vzcy4KKyAgICAv
LyBPdGhlciBXZWJLaXQgcG9ydHMgbWF5IG5lZWQgdG8gZG8gdGhhdC4KKyAgICB2b2lkIHNldFNp
emUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIGZpbmFsIHsgfQogCiAgICAgdm9pZCBwYWludChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBmaW5h
bDsKIApAQCAtMzE2LDYgKzMxOSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpNZWRpYVBs
YXllciogbV9wbGF5ZXIgeyBudWxscHRyIH07CiAgICAgUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFSZXNvdXJjZUxvYWRlcj4gbV9tZWRpYVJlc291cmNlTG9hZGVyOworICAgIFJldGFpblB0
cjxQbGF0Zm9ybUxheWVyPiBtX3ZpZGVvTGF5ZXI7CiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyJiBtX21hbmFnZXI7CiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdp
bmVJZGVudGlmaWVyIG1fcmVtb3RlRW5naW5lSWRlbnRpZmllcjsKICAgICBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGVJZGVudGlmaWVyIG1faWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAK
aW5kZXggYjdjMDRmMTM3OWY4NDFiMWM4YzM1Y2Q2YjY1YjdkN2ZlMDBlYTUzMS4uY2FkZDg4YWY3
ZDlkZTAyMTg5YzU2NzI4M2RjZjlmNDI3YjFiZDg4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLmNwcApAQCAtMjkzLDEzICsyOTMsMTMgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXI6OmVuZ2luZUZhaWxlZFRvTG9hZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGkKIAog
dm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNoYXJhY3RlcmlzdGljQ2hhbmdlZChNZWRp
YVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBib29sIGhhc0F1ZGlvLCBib29sIGhh
c1ZpZGVvLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNb3ZpZUxvYWRUeXBlIGxvYWRUeXBl
KQogewotICAgIGlmIChhdXRvIHBsYXllciA9IG1fcGxheWVycy5nZXQoaWQpKQorICAgIGlmIChj
b25zdCBhdXRvJiBwbGF5ZXIgPSBtX3BsYXllcnMuZ2V0KGlkKSkKICAgICAgICAgcGxheWVyLT5j
aGFyYWN0ZXJpc3RpY0NoYW5nZWQoaGFzQXVkaW8sIGhhc1ZpZGVvLCBsb2FkVHlwZSk7CiB9CiAK
IHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpzaXplQ2hhbmdlZChNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBXZWJDb3JlOjpGbG9hdFNpemUgbmF0dXJhbFNpemUp
CiB7Ci0gICAgaWYgKGF1dG8gcGxheWVyID0gbV9wbGF5ZXJzLmdldChpZCkpCisgICAgaWYgKGNv
bnN0IGF1dG8mIHBsYXllciA9IG1fcGxheWVycy5nZXQoaWQpKQogICAgICAgICBwbGF5ZXItPnNp
emVDaGFuZ2VkKG5hdHVyYWxTaXplKTsKIH0KIApAQCAtMzIzLDIyICszMjMsMjggQEAgdm9pZCBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnJlbW90ZUF1ZGlvVHJhY2tDb25maWd1cmF0aW9uQ2hh
bmdlZChNZWRpYVBsYXllclAKIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmFkZFJl
bW90ZVZpZGVvVHJhY2soTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBwbGF5ZXJJ
RCwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0cmFja0lELCBUcmFja1ByaXZhdGVSZW1v
dGVDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKIHsKLSAgICBpZiAoYXV0byBwbGF5ZXIg
PSBtX3BsYXllcnMuZ2V0KHBsYXllcklEKSkKKyAgICBpZiAoY29uc3QgYXV0byYgcGxheWVyID0g
bV9wbGF5ZXJzLmdldChwbGF5ZXJJRCkpCiAgICAgICAgIHBsYXllci0+YWRkUmVtb3RlVmlkZW9U
cmFjayh0cmFja0lELCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKIH0KIAogdm9pZCBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXI6OnJlbW92ZVJlbW90ZVZpZGVvVHJhY2soTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlSWRlbnRpZmllciBwbGF5ZXJJRCwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmll
ciB0cmFja0lEKQogewotICAgIGlmIChhdXRvIHBsYXllciA9IG1fcGxheWVycy5nZXQocGxheWVy
SUQpKQorICAgIGlmIChjb25zdCBhdXRvJiBwbGF5ZXIgPSBtX3BsYXllcnMuZ2V0KHBsYXllcklE
KSkKICAgICAgICAgcGxheWVyLT5yZW1vdmVSZW1vdGVWaWRlb1RyYWNrKHRyYWNrSUQpOwogfQog
CiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6cmVtb3RlVmlkZW9UcmFja0NvbmZpZ3Vy
YXRpb25DaGFuZ2VkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgcGxheWVySUQs
IFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgdHJhY2tJRCwgVHJhY2tQcml2YXRlUmVtb3Rl
Q29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgaWYgKGF1dG8gcGxheWVyID0g
bV9wbGF5ZXJzLmdldChwbGF5ZXJJRCkpCisgICAgaWYgKGNvbnN0IGF1dG8mIHBsYXllciA9IG1f
cGxheWVycy5nZXQocGxheWVySUQpKQogICAgICAgICBwbGF5ZXItPnJlbW90ZVZpZGVvVHJhY2tD
b25maWd1cmF0aW9uQ2hhbmdlZCh0cmFja0lELCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKIH0K
IAordm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmZpcnN0VmlkZW9GcmFtZUF2YWlsYWJs
ZShXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQpCit7CisgICAg
aWYgKGNvbnN0IGF1dG8mIHBsYXllciA9IG1fcGxheWVycy5nZXQoaWQpKQorICAgICAgICBwbGF5
ZXItPmZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSgpOworfQorCiB2b2lkIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlcjo6cmVxdWVzdFJlc291cmNlKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIgaWQsIFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZU1lZGlhUmVzb3Vy
Y2VJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQbGF0Zm9ybU1lZGlhUmVz
b3VyY2VMb2FkZXI6OkxvYWRPcHRpb25zIG9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoY29uc3QgYXV0byYgcGxheWVyID0g
bV9wbGF5ZXJzLmdldChpZCkpCkBAIC0zNjQsNyArMzcwLDcgQEAgdm9pZCBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXI6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykK
IAogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnVwZGF0ZUNhY2hlZFN0YXRlKE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFJlbW90ZU1lZGlhUGxheWVyU3RhdGUm
JiBzdGF0ZSkKIHsKLSAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX3BsYXllcnMuZ2V0KGlkKSkKKyAg
ICBpZiAoY29uc3QgYXV0byYgcGxheWVyID0gbV9wbGF5ZXJzLmdldChpZCkpCiAgICAgICAgIHBs
YXllci0+dXBkYXRlQ2FjaGVkU3RhdGUoV1RGTW92ZShzdGF0ZSkpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXIuaAppbmRleCBmNDNmOWRjMzgwODY5NWFlYWI2ZGVhYWU1M2E3ZjQ3ZDlkMzkw
MWExLi44MTc2MzRmZTA2MDQwZTEyMzZjOTdmMTAyOTdjODIyODMzODY1Yzg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyLmgKQEAgLTkzLDYgKzkzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFk
ZFJlbW90ZUF1ZGlvVHJhY2soTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgVHJh
Y2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlv
biYmKTsKICAgICB2b2lkIHJlbW92ZVJlbW90ZUF1ZGlvVHJhY2soTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlSWRlbnRpZmllciwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllcik7CiAgICAgdm9p
ZCByZW1vdGVBdWRpb1RyYWNrQ29uZmlndXJhdGlvbkNoYW5nZWQoTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlSWRlbnRpZmllciwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgVHJhY2tQcml2
YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYmKTsKKyAgICB2b2lkIGZpcnN0VmlkZW9GcmFtZUF2YWls
YWJsZShXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpOwogCiAgICAg
dm9pZCBhZGRSZW1vdGVWaWRlb1RyYWNrKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZp
Z3VyYXRpb24mJik7CiAgICAgdm9pZCByZW1vdmVSZW1vdGVWaWRlb1RyYWNrKE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCAzMmVhN2Qw
OTdhMDJmYjRjZmM5NjE1ZjJmYmUyOTRiZWZjODYyMDdiLi4zN2M2ODQ1ZWI0NGQxMDQ4NjhjNDkz
Zjk2NzFhMTA3MTBlYjk5MjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5t
ZXNzYWdlcy5pbgpAQCAtMjYsNiArMjYsNyBAQAogbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewogICAgIE5ldHdvcmtTdGF0ZUNoYW5nZWQoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBzdHJ1Y3QgV2ViS2l0OjpS
ZW1vdGVNZWRpYVBsYXllclN0YXRlIHN0YXRlKQogICAgIFJlYWR5U3RhdGVDaGFuZ2VkKFdlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgc3RydWN0IFdlYktpdDo6
UmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZSBzdGF0ZSkKKyAgICBGaXJzdFZpZGVvRnJhbWVBdmFpbGFi
bGUoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkKQogICAgIFZv
bHVtZUNoYW5nZWQoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlk
LCBkb3VibGUgdm9sdW1lKQogICAgIE11dGVDaGFuZ2VkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgYm9vbCBtdXRlKQogICAgIFRpbWVDaGFuZ2VkKFdlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgc3RydWN0IFdlYktpdDo6
UmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZSBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRl
eCA5NzdiOGVkNjJkOGMwZGNkODgzY2IzZjBjMDU4OTc3ODk5ZGZiYzczLi42MTdkN2Q3NmMwYThh
NWViOWRiYTU3YThhODA2YmM2MDg2MjZmNDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBA
IC00OCw2ICs0OCw3IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJMYXllckhv
c3RpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgogI2VuZGlmCiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGRkMzZkOWJmYWZjZWEzNTc3MWEzYjFiMjZmNmE1
ZTEzNmIxZDRiYzEuLjM3YzllZGRiZDc2ZmYzYTlmODg1N2U0ZDU1NGUyN2FlM2YxZDE1YjIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0wMS0xNCAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBw
bGUuY29tPgorCisgICAgICAgIFtNZWRpYSBpbiBHUFUgcHJvY2Vzc10gSW1wbGVtZW50IHRoZSBy
ZW1vdGUgdmlkZW8gbGF5ZXIgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZh
YmxldC4KKworICAgICAgICAqIGdwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjAt
MDEtMTQgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1NDUwNS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2dw
dS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IGRlMWFmYjQxYjYwNjEwNjdkY2FlOTgyZjc1MGNjNjhjMjQxZDFm
OTYuLjdkZTc3ODAwNjU1MTgzNWU3ZjI0Zjg0MWU4MjVkYWRkYTlhZWNkNDYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVz
dHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjM3LDYgKzIzNyw5IEBAIGh0dHAv
dGVzdHMvY2FjaGUvZGlzay1jYWNoZS9kaXNrLWNhY2hlLW1lZGlhLXNtYWxsLmh0bWwgWyBTa2lw
IF0KIGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvdGV4dC10cmFjay1ibG9ja2VkLmh0bWwg
WyBTa2lwIF0KIGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvdmlkZW8tZWxlbWVudC1yZXNv
dXJjZS10eXBlLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvbWVkaWEgWyBTa2lwIF0KK2h0dHAv
dGVzdHMvbWVkaWEvdmlkZW8tbG9hZC10d2ljZS5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL21l
ZGlhL3ZpZGVvLXBsYXktcHJvZ3Jlc3MuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9tZWRpYS92
aWRlby1wcmVsb2FkLmh0bWwgWyBQYXNzIF0KIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNh
Y2hlLW1lZGlha2V5c2Vzc2lvbi5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL25hdmlnYXRpb24v
cGFnZS1jYWNoZS1tZWRpYXN0cmVhbS5odG1sIFsgU2tpcCBdCiBodHRwL3dwdC9tZWRpYXJlY29y
ZGVyIFsgU2tpcCBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>