<?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>208252</bug_id>
          
          <creation_ts>2020-02-26 11:20:22 -0800</creation_ts>
          <short_desc>[Media in GPU process] Implement the video fullscreen and Picture-in-Picture support</short_desc>
          <delta_ts>2020-02-29 00:27:08 -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>iPhone / iPad</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>
          <everconfirmed>1</everconfirmed>
          <reporter name="Peng Liu">peng.liu6</reporter>
          <assigned_to name="Peng Liu">peng.liu6</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1623072</commentid>
    <comment_count>0</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-02-26 11:20:22 -0800</bug_when>
    <thetext>The video fullscreen and Picture-in-Picture on iOS and the Picture-in-Picture on Mac use a container layer (a CALayer created by VideoFullscreenManager) to host the video layer (created by MediaPlayerPrivate) in fullscreen/PiP modes. Both the layers are in the Web process so they can interact directly.

However, after we enable the GPU process to run the MediaPlayerPrivate, the container layer and the video layer cannot interact directly because they are in different processes. We have to add a pair of remote layer and hosting context to connect them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623074</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-26 11:20:54 -0800</bug_when>
    <thetext>&lt;rdar://problem/59813445&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623101</commentid>
    <comment_count>2</comment_count>
      <attachid>391766</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-02-26 12:06:11 -0800</bug_when>
    <thetext>Created attachment 391766
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623214</commentid>
    <comment_count>3</comment_count>
      <attachid>391789</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-02-26 15:26:27 -0800</bug_when>
    <thetext>Created attachment 391789
WIP patch - rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623434</commentid>
    <comment_count>4</comment_count>
      <attachid>391789</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-02-27 06:31:32 -0800</bug_when>
    <thetext>Comment on attachment 391789
WIP patch - rebased

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

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:1088
&gt; +    return adoptNS([[CALayer alloc] init]);

Nit: rather than duplicating this code in each MPP, you could put it in VideoLayerManagerObjC since all three use it. You also might want to layer name to help when debugging the layer tree.

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.messages.in:67
&gt; +#if PLATFORM(IOS_FAMILY) || (PLATFORM(MAC) &amp;&amp; ENABLE(VIDEO_PRESENTATION_MODE))
&gt; +    EnterFullscreen() -&gt; () Async
&gt; +    ExitFullscreen() -&gt; () Async
&gt; +#endif

Nit: Why make this macOS/iOS only even if it won&apos;t work for other ports yet?

&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:593
&gt; +    return m_videoFullscreenLayer;

Many &lt;video&gt; and *all* &lt;audio&gt; elements never enter fullscreen, so you should probably create m_videoFullscreenLayer here rather than in prepareForPlayback.

&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:604
&gt; +    if (!videoFullscreenLayer) {
&gt; +        connection().sendWithAsyncReply(Messages::RemoteMediaPlayerProxy::ExitFullscreen(), WTFMove(completionHandler), m_id);
&gt; +        return;
&gt; +    }
&gt; +        
&gt; +    ASSERT(videoFullscreenLayer == m_videoFullscreenLayer.get());
&gt; +    connection().sendWithAsyncReply(Messages::RemoteMediaPlayerProxy::EnterFullscreen(), WTFMove(completionHandler), m_id);

It seems a bit strange to have setVideoFullscreenLayer call enterFullscreen and exitFullscreen in the web process, and to have enterFullscreen and exitFullscreen call setVideoFullscreenLayer in the GPU process.

&gt; Source/WebKit/WebProcess/cocoa/VideoFullscreenManager.mm:276
&gt; +#ifndef NDEBUG

Why only do this in Debug builds?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623706</commentid>
    <comment_count>5</comment_count>
      <attachid>391789</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-02-27 15:24:14 -0800</bug_when>
    <thetext>Comment on attachment 391789
WIP patch - rebased

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

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:1088
&gt;&gt; +    return adoptNS([[CALayer alloc] init]);
&gt; 
&gt; Nit: rather than duplicating this code in each MPP, you could put it in VideoLayerManagerObjC since all three use it. You also might want to layer name to help when debugging the layer tree.

This is a great suggestion. But it will lead to a lot of changes. We had better do that in a refactoring. I filed a bug for it.
https://bugs.webkit.org/show_bug.cgi?id=208342

&gt;&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.messages.in:67
&gt;&gt; +#endif
&gt; 
&gt; Nit: Why make this macOS/iOS only even if it won&apos;t work for other ports yet?

Let&apos;s enable it for all ports with the media in GPU Process feature support.

&gt;&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:593
&gt;&gt; +    return m_videoFullscreenLayer;
&gt; 
&gt; Many &lt;video&gt; and *all* &lt;audio&gt; elements never enter fullscreen, so you should probably create m_videoFullscreenLayer here rather than in prepareForPlayback.

You are right! Let&apos;s create m_videoFullscreenLayer in createVideoFullscreenLayer() instead of prepareForPlayback(). An even better fix will delay the creation of m_fullscreenLayerHostingContext and the corresponding CALayer in RemoteMediaPlayerProxy (in the GPU Process) as well. But that will require MediaPlayerPrivateRemote::createVideoFullscreenLayer() to create the layer asynchronously. I plan do that in https://bugs.webkit.org/show_bug.cgi?id=208342.

&gt;&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:604
&gt;&gt; +    connection().sendWithAsyncReply(Messages::RemoteMediaPlayerProxy::EnterFullscreen(), WTFMove(completionHandler), m_id);
&gt; 
&gt; It seems a bit strange to have setVideoFullscreenLayer call enterFullscreen and exitFullscreen in the web process, and to have enterFullscreen and exitFullscreen call setVideoFullscreenLayer in the GPU process.

This will be fixed in the refactoring.
https://bugs.webkit.org/show_bug.cgi?id=208342

&gt;&gt; Source/WebKit/WebProcess/cocoa/VideoFullscreenManager.mm:276
&gt;&gt; +#ifndef NDEBUG
&gt; 
&gt; Why only do this in Debug builds?

Will enable it always.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624165</commentid>
    <comment_count>6</comment_count>
      <attachid>392028</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-02-28 15:59:24 -0800</bug_when>
    <thetext>Created attachment 392028
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624172</commentid>
    <comment_count>7</comment_count>
      <attachid>392028</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-02-28 16:15:36 -0800</bug_when>
    <thetext>Comment on attachment 392028
Patch

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

&gt; Source/WebCore/html/HTMLMediaElement.h:182
&gt; +    RetainPtr&lt;PlatformLayer&gt; createVideoFullscreenLayer();

Should this really create a new one every time?

What is the &quot;video fullscreen layer&quot;? Is it the layer with the video in it, the layer that goes fullscreen, or something else?

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:508
&gt; +    m_inlineLayerHostingContext-&gt;setRootLayer(m_player-&gt;platformLayer());

LayerHostingContext takes a CALayer*. You should really be in a .mm file if you&apos;re calling this code. RemoteMediaPlayerProxy.cpp doesn&apos;t sound Cocoa-specific.

&gt; Source/WebKit/GPUProcess/media/cocoa/RemoteMediaPlayerProxyCocoa.mm:51
&gt; +    [videoFullscreenLayer setName:@&quot;Web video fullscreen manager layer (remote)&quot;];

That&apos;s a lot of words.

Why &quot;videoFullscreenLayer&quot; if it&apos;s really &quot;videoFullscreenRemoteManagerLayer&quot;?

&gt; Source/WebKit/GPUProcess/media/cocoa/RemoteMediaPlayerProxyCocoa.mm:52
&gt; +    [videoFullscreenLayer setPosition:CGPointMake(0, 0)];

CGPointZero.

Maybe set the anchor point too because this won&apos;t be top-left aligned if it has non-zero size.

&gt; Source/WebKit/GPUProcess/media/cocoa/RemoteMediaPlayerProxyCocoa.mm:53
&gt; +    [videoFullscreenLayer setBackgroundColor:cachedCGColor(WebCore::Color::transparent)];

This shouldn&apos;t be necessary.

&gt; Source/WebKit/WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm:37
&gt; +#if PLATFORM(IOS_FAMILY) || (PLATFORM(MAC) &amp;&amp; ENABLE(VIDEO_PRESENTATION_MODE))

We should have an ENABLE_ or something for this combination. Why doesn&apos;t iOS just define ENABLE_VIDEO_PRESENTATION_MODE ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624195</commentid>
    <comment_count>8</comment_count>
      <attachid>392028</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-02-28 17:22:30 -0800</bug_when>
    <thetext>Comment on attachment 392028
Patch

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

&gt;&gt; Source/WebCore/html/HTMLMediaElement.h:182
&gt;&gt; +    RetainPtr&lt;PlatformLayer&gt; createVideoFullscreenLayer();
&gt; 
&gt; Should this really create a new one every time?
&gt; 
&gt; What is the &quot;video fullscreen layer&quot;? Is it the layer with the video in it, the layer that goes fullscreen, or something else?

When we run MediaPlayerPrivate* in the Web process, yes, a new layer will be created every time. That’s also the behavior before this patch and it will be changed in https://bugs.webkit.org/show_bug.cgi?id=208342.
When we run MediaPlayerPrivate* in the GPU process, no, we will create the layer in the first time when the function is called and reuse it in the future.

The &quot;video fullscreen layer&quot; is a container layer to embed the real video content layer. It is used in both video fullscreen and PiP scenarios.

&gt;&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:508
&gt;&gt; +    m_inlineLayerHostingContext-&gt;setRootLayer(m_player-&gt;platformLayer());
&gt; 
&gt; LayerHostingContext takes a CALayer*. You should really be in a .mm file if you&apos;re calling this code. RemoteMediaPlayerProxy.cpp doesn&apos;t sound Cocoa-specific.

Right. Let&apos;s move it to RemoteMediaPlayerProxyCocoa.mm. The same to other functions related to LayerHostingContext.

&gt;&gt; Source/WebKit/GPUProcess/media/cocoa/RemoteMediaPlayerProxyCocoa.mm:51
&gt;&gt; +    [videoFullscreenLayer setName:@&quot;Web video fullscreen manager layer (remote)&quot;];
&gt; 
&gt; That&apos;s a lot of words.
&gt; 
&gt; Why &quot;videoFullscreenLayer&quot; if it&apos;s really &quot;videoFullscreenRemoteManagerLayer&quot;?

Agree.
We use the name &quot;videoFullscreenLayer&quot; in all other places except here (setName). I will change the name here as well as the name in VideoFullscreenManager.

&gt;&gt; Source/WebKit/GPUProcess/media/cocoa/RemoteMediaPlayerProxyCocoa.mm:52
&gt;&gt; +    [videoFullscreenLayer setPosition:CGPointMake(0, 0)];
&gt; 
&gt; CGPointZero.
&gt; 
&gt; Maybe set the anchor point too because this won&apos;t be top-left aligned if it has non-zero size.

Fixed.
Will try to set the anchor point later because we may need to change the anchor point of the corresponding layer in the web process as well.

&gt;&gt; Source/WebKit/GPUProcess/media/cocoa/RemoteMediaPlayerProxyCocoa.mm:53
&gt;&gt; +    [videoFullscreenLayer setBackgroundColor:cachedCGColor(WebCore::Color::transparent)];
&gt; 
&gt; This shouldn&apos;t be necessary.

Removed.

&gt;&gt; Source/WebKit/WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm:37
&gt;&gt; +#if PLATFORM(IOS_FAMILY) || (PLATFORM(MAC) &amp;&amp; ENABLE(VIDEO_PRESENTATION_MODE))
&gt; 
&gt; We should have an ENABLE_ or something for this combination. Why doesn&apos;t iOS just define ENABLE_VIDEO_PRESENTATION_MODE ?

Good question! But I would like to keep it in the current way. Maybe fix it in another patch later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624201</commentid>
    <comment_count>9</comment_count>
      <attachid>392039</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-02-28 17:35:18 -0800</bug_when>
    <thetext>Created attachment 392039
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624222</commentid>
    <comment_count>10</comment_count>
      <attachid>392045</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-02-28 20:31:07 -0800</bug_when>
    <thetext>Created attachment 392045
Patch for landing (fix unified build failures)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624226</commentid>
    <comment_count>11</comment_count>
      <attachid>392045</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-28 21:45:45 -0800</bug_when>
    <thetext>Comment on attachment 392045
Patch for landing (fix unified build failures)

Rejecting attachment 392045 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;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 392045, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WebCore/ChangeLog contains OOPS!.

Full output: https://webkit-queues.webkit.org/results/13330939</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624228</commentid>
    <comment_count>12</comment_count>
      <attachid>392047</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-02-28 21:50:18 -0800</bug_when>
    <thetext>Created attachment 392047
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624234</commentid>
    <comment_count>13</comment_count>
      <attachid>392047</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-28 23:21:54 -0800</bug_when>
    <thetext>Comment on attachment 392047
Patch for landing

Clearing flags on attachment: 392047

Committed r257680: &lt;https://trac.webkit.org/changeset/257680&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391766</attachid>
            <date>2020-02-26 12:06:11 -0800</date>
            <delta_ts>2020-02-26 15:26:23 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-208252-20200226120610.patch</filename>
            <type>text/plain</type>
            <size>32139</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMzNTg4NDNkZWE5MTBi
Y2VhZDkxNzFhYzZjMzI3Zjg4MTI3MmZlOC4uNTRlYzdlZjk5M2NjNWRlZDhkZDUxMDQwMmJjMTE4
ZjI5ODgxYWRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIwLTAyLTI2ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBwcm9j
ZXNzXSBJbXBsZW1lbnQgdGhlIHZpZGVvIGZ1bGxzY3JlZW4gYW5kIFBpY3R1cmUtaW4tUGljdHVy
ZSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDgyNTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgIE1vdmUgdGhlIGNyZWF0aW9u
IG9mIHRoZSBDQUxheWVyIGZvciB2aWRlbyBmdWxsc2NyZWVuIGFuZCBwaWN0dXJlLWluLXBpY3R1
cmUgZnJvbQorICAgICAgICBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIHRvIE1lZGlhUGxheWVyUHJp
dmF0ZSBjbGFzc2VzLiBXaXRoIHRoaXMgY2hhbmdlLCB3ZSBjYW4gc3VwcG9ydAorICAgICAgICB2
aWRlbyBmdWxsc2NyZWVuIGFuZCBwaWN0dXJlLWluLXBpY3R1cmUgbm8gbWF0dGVyIHRoZSBHUFUg
cHJvY2VzcyBpcyBlbmFibGVkIG9yIG5vdC4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVWaWRl
b0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50OjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNy
ZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpj
cmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
OjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5M
YXllcik6CisKIDIwMjAtMDItMjEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIGFuIHVudXNlZCBsb2NhbCB2YXJpYWJsZSBhZnRlciByMjU2
ODA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IGRjMjExODMxODVkZGM3MDg0MWFhMGU3ODBhY2UzYWRiZDdjNWNlNTcu
LmJkYjVlOWIxMjI3MzdhYjdhZmRjMzI5NzEwZDBlNWNlNmVkZDRhYWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzUgQEAKKzIwMjAtMDItMjYgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4K
KworICAgICAgICBbTWVkaWEgaW4gR1BVIHByb2Nlc3NdIEltcGxlbWVudCB0aGUgdmlkZW8gZnVs
bHNjcmVlbiBhbmQgUGljdHVyZS1pbi1QaWN0dXJlIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODI1MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBSZW1vdGVNZWRpYVBsYXllclByb3h5
IGluIHRoZSBHUFUgcHJvY2VzcyBjcmVhdGVzIGEgTGF5ZXJIb3N0aW5nQ29udGV4dCBhbmQKKyAg
ICAgICAgc2hhcmUgdGhlIGNvbnRleHQgSUQgd2l0aCB0aGUgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlIGluIHRoZSBXZWIgcHJvY2VzcywKKyAgICAgICAgd2hpY2ggaW4gdHVybiBjcmVhdGVzIGEg
cmVtb3RlIGxheWVyIHVzZWQgYnkgdGhlIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuCisKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpwcmVwYXJlRm9yUGxheWJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjplbnRlckZ1bGxzY3JlZW4p
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpleGl0RnVsbHNjcmVl
bik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVy
Rmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdlZCk6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvY29jb2EvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRWaWRlb0lubGlu
ZVNpemVGZW5jZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6cHJlcGFyZUZvclBsYXliYWNrKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjphY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVu
TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZp
ZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAg
ICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnRlclZpZGVvRnVsbHNjcmVlbkZv
clZpZGVvRWxlbWVudCk6CisKIDIwMjAtMDItMjEgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHRlbGVtZXRyeSBmcm9tIHNhbmRib3ggcnVsZXMg
bmVlZGVkIGZvciBiYXNpYyBXZWJLaXQgbG9nZ2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKaW5kZXggNGU5ZjhlYTIwNWM4MGNmYTI5ODVmZWYxODViZmVmZTBjMTIy
ODJiOC4uNzgxZDU2ZmQyZmUyMGIwNTgwMzQxYmRiYzgwNTk2NWIyZTZjM2MzNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC02MjM5LDYgKzYyMzksMTEgQEAg
Ym9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc1ZpZGVvTGF5ZXJJbmxpbmUoKQogICAgIHJldHVybiAh
bV92aWRlb0Z1bGxzY3JlZW5MYXllcjsKIH07CiAKK1JldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBI
VE1MTWVkaWFFbGVtZW50OjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpCit7CisgICAgcmV0
dXJuIG1fcGxheWVyLT5jcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpOworfQorCiB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqIHBs
YXRmb3JtTGF5ZXIsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaAppbmRleCBmMDVlMjIzYjkzMmY3MTdjMWFjYzMwMGI1ZjgxMWQ2OTE0YjI5NmE2
Li5hMjg4OWEzMTc0MzcxMTQwMTcyMTJjODliOWRiY2M3M2RlZDQxMDM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMTgxLDYgKzE4MSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFByZXBhcmVkVG9SZXR1cm5WaWRlb0xheWVyVG9JbmxpbmUoYm9vbCk7CiAgICAg
dm9pZCB3YWl0Rm9yUHJlcGFyZWRGb3JJbmxpbmVUaGVuKFdURjo6RnVuY3Rpb248dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyID0gW10geyB9KTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8
fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorICAg
IFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpOwog
ICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyID0gW10geyB9KTsKICNpZmRlZiBfX09C
SkNfXwogICAgIFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50LmgKaW5kZXggMGU5YTQ1NGI0ZDg4YWNlMzU1NDIyNjViZmIwMGY0MTY3MjI3MTI0
ZS4uM2I2MGIzMmZhMWZlOGUzYWEwMTg5OGY5ZWExY2M3NjgxMmE4OGUyNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbFZpZGVvRWxlbWVudC5oCkBAIC01NSw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIH5WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudCgpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9FbGVtZW50KEhUTUxWaWRlb0VsZW1lbnQq
KTsKICAgICBIVE1MVmlkZW9FbGVtZW50KiB2aWRlb0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBt
X3ZpZGVvRWxlbWVudC5nZXQoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxQbGF0
Zm9ybUxheWVyPiBjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyID0gW10geyB9KTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHdpbGxFeGl0RnVsbHNjcmVlbigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgd2FpdEZvclByZXBhcmVkRm9ySW5saW5lVGhlbihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50
Lm1tCmluZGV4IGViN2YyNjc3ZDBiNWVmYjQ0MWY2OWM2OWJiOTM2OGQxODBjNDQyMzkuLmMyMTAx
ZDE2ZWYwZmYxM2QyZjZhMThkM2YyMjM0ZDlmOGI1N2MzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50Lm1tCkBAIC0xMTAsNiArMTEwLDExIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQ6OndpbGxFeGl0RnVsbHNjcmVlbigpCiAgICAgICAgIG1fdmlkZW9F
bGVtZW50LT53aWxsRXhpdEZ1bGxzY3JlZW4oKTsKIH0KIAorUmV0YWluUHRyPFBsYXRmb3JtTGF5
ZXI+IFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpjcmVhdGVWaWRlb0Z1bGxzY3Jl
ZW5MYXllcigpCit7CisgICAgcmV0dXJuIG1fdmlkZW9FbGVtZW50LT5jcmVhdGVWaWRlb0Z1bGxz
Y3JlZW5MYXllcigpOworfQorCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50
OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiB2aWRlb0xheWVyLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAobV92aWRl
b0Z1bGxzY3JlZW5MYXllciA9PSB2aWRlb0xheWVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggNTdkZmNiZjRiYzdjNDg4NDRk
MzgxY2IzNWVjYzY0M2MxYWFiNGI5Mi4uYjgyZmVlZmZmMWMzM2RhNGRjZjJlNjU2MGE2MWU5ZDAz
N2ExNDEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcApAQCAtNzQ0LDYgKzc0NCwxMSBAQCBQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXll
cjo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiAgICAgCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkg
fHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIAor
UmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlhUGxheWVyOjpjcmVhdGVWaWRlb0Z1bGxzY3Jl
ZW5MYXllcigpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y3JlYXRlVmlkZW9GdWxsc2NyZWVu
TGF5ZXIoKTsKK30KKwogdm9pZCBNZWRpYVBsYXllcjo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIo
UGxhdGZvcm1MYXllciogbGF5ZXIsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIG1fcHJpdmF0ZS0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobGF5ZXIs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDdlNmNiOGEzOTBkZjdmZTFhN2FhZTAxNzM5
ZGM5NDhmNzc2NjIxZWUuLjNhMzY1ZTI0NzUyNjBiNzc0NTYzMGY0NWNjNjQ4NTM4Y2Q3MTVlMzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApA
QCAtMzA3LDYgKzMwNyw3IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3Q7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorICAgIFJldGFpblB0cjxQbGF0
Zm9ybUxheWVyPiBjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpOwogICAgIHZvaWQgc2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6RnVuY3Rpb248dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyID0gW10geyB9KTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVl
bkZyYW1lKEZsb2F0UmVjdCk7CiAgICAgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJ
bWFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllclByaXZhdGUuaAppbmRleCA5ZjdmNmU2YjAyZDNiZWJlMDkwZWJjYzMyYTRiMGRjYTFj
YzE3NWE4Li45ZDkyZWNkYjNhNmY4MDljZWJjOWJjM2ZlZDM3YjFiZDcwZTljZThjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZh
dGUuaApAQCAtNjIsNiArNjIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRB
VElPTl9NT0RFKSkKKyAgICB2aXJ0dWFsIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBjcmVhdGVW
aWRlb0Z1bGxzY3JlZW5MYXllcigpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIHZv
aWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6RnVuY3Rpb248
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMuaAppbmRleCBhZjZjODA0ZjZjZjhlNjA4ZDg3ZDgzOWZkODA2ZjA4OTAz
ZDIzZmI2Li4zOTk5MDBkNjk5MGUwNDE5MGRjZWNmNmQ4ZWJmY2RlODhjZDM1OWU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5oCkBAIC0xNzcsNiArMTc3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBh
aW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogICAgIHZv
aWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNv
bnN0IG92ZXJyaWRlOworICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBjcmVhdGVWaWRlb0Z1
bGxzY3JlZW5MYXllcigpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5
ZXIoUGxhdGZvcm1MYXllciosIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
b3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSgpIGZp
bmFsOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGIzN2M0NDExMzE0OTg4Nzk1NDZlYzhhNTdh
MGRkOGUxMWY3ODQ2OTcuLmIwMjYyYTk5NzQyYjYzYTFlZWQ0ZDdjMjg3OGExMzU4NWMxZWFiN2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMTA4Myw2ICsxMDgzLDExIEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5s
aW5lSW1hZ2UoKQogICAgIG1fdmlkZW9MYXllck1hbmFnZXItPnVwZGF0ZVZpZGVvRnVsbHNjcmVl
bklubGluZUltYWdlKG1fbGFzdEltYWdlKTsKIH0KIAorUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVZpZGVvRnVsbHNjcmVl
bkxheWVyKCkKK3sKKyAgICByZXR1cm4gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsK
K30KKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1
bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllciwgRnVuY3Rp
b248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHVwZGF0ZUxhc3RJbWFnZShV
cGRhdGVUeXBlOjpVcGRhdGVTeW5jaHJvbm91c2x5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgK
aW5kZXggNWRlMzM2Y2I2NGI5OTQ1N2JmZmJlNjcyZjFhNTJjM2Y2Mjc3ODhlMy4uZDhmOWMyNDRi
NmMxZTFmMzk4Yzk5NTVlNzZlNWQzOWJmYWM2Y2Y2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
LmgKQEAgLTEwOSw2ICsxMDksNyBAQCBwdWJsaWM6CiAgICAgQVZTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIqIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmdldCgpOyB9CiAgICAgV2ViQ29yZURlY29tcHJlc3Npb25TZXNz
aW9uKiBkZWNvbXByZXNzaW9uU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb21wcmVzc2lv
blNlc3Npb24uZ2V0KCk7IH0KIAorICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBjcmVhdGVW
aWRlb0Z1bGxzY3JlZW5MYXllcigpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZs
b2F0UmVjdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCA0YmQz
Mzg0NzMwNjI3Nzg4MDg5MGM4ODE5MWFjN2I5YWY5NjM0ZDFjLi5mNTQ5MTBjMTkwMmNiNzRkM2Rk
MzAwZDJjYjUxM2FkZTIxNmIwYmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0x
MTU4LDYgKzExNTgsMTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6OmNoYXJhY3RlcmlzdGljc0NoYW5nZWQoKQogICAgIG1fcGxheWVyLT5jaGFyYWN0ZXJpc3Rp
Y0NoYW5nZWQoKTsKIH0KIAorUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKQorewor
ICAgIHJldHVybiBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOworfQorCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5
ZXIoUGxhdGZvcm1MYXllciAqdmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURjo6RnVuY3Rpb248dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHVwZGF0ZUxhc3RJbWFnZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMuaAppbmRleCA5MmMwODIxNjU0OThjZGVhMjdjMTM3ZTk1NmZjYTNm
NDc5ODlmNjg0Li4zZmM5NDhjMjdkYzEzMDEyMDBmNTM5ZmJmMWNjZDEzY2JiNTljMDU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMuaApAQCAtMTk3LDYgKzE5Nyw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzYW1wbGVCdWZmZXJVcGRhdGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiwgTWVkaWFT
YW1wbGUmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlJikgb3ZlcnJpZGU7CiAKKyAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4g
Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5G
cmFtZShGbG9hdFJlY3QpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5k
ZXggMmQwYjMxYTBhODExMmQzNzQzYjllYTJjODQ2MDBmOWY5ODM5M2I1Ni4uYjQ2OGNkYWVhZDc3
MWJjODA0M2UwNDZhMDIwNjZlMmI3NDUwMGI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5t
bQpAQCAtNzczLDYgKzc3MywxMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQzo6c3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJlKCkgY29uc3QKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAorUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKQoreworICAgIHJldHVy
biBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOworfQorCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZv
cm1MYXllciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIHVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5jcHAKaW5kZXggNWVmZTY2MjVkNmYyZjkwYWRlZDc3ZDhjNTU5N2RmM2M3ODhmMzFk
Yi4uZWNkNTc0ZDM0ZGZiZjU3ZGMxMTcyNTkxM2VkMDdiOTNkOWFlZTk3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclBy
b3h5LmNwcApAQCAtMTA3LDE1ICsxMDcsMTggQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5
Ojpsb2FkKFVSTCYmIHVybCwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYKICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKIH0KIAotdm9pZCBS
ZW1vdGVNZWRpYVBsYXllclByb3h5OjpwcmVwYXJlRm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9k
ZSwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZCBwcmVsb2FkLCBib29sIHByZXNl
cnZlc1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJpbmcsIGZsb2F0IHZpZGVvQ29udGVudFNj
YWxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPExheWVySG9zdGluZ0NvbnRleHRJ
RD4mJiBjb250ZXh0SWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVNZWRpYVBs
YXllclByb3h5OjpwcmVwYXJlRm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6
TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBi
b29sIHByZXBhcmVGb3JSZW5kZXJpbmcsIGZsb2F0IHZpZGVvQ29udGVudFNjYWxlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPExheWVySG9zdGluZ0NvbnRleHRJRD4mJiBpbmxpbmVM
YXllckhvc3RpbmdDb250ZXh0SWQsIE9wdGlvbmFsPExheWVySG9zdGluZ0NvbnRleHRJRD4mJiBm
dWxsc2NyZWVuTGF5ZXJIb3N0aW5nQ29udGV4dElkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBtX3BsYXllci0+c2V0UHJpdmF0ZUJyb3dzaW5nTW9kZShwcml2YXRlTW9kZSk7CiAgICAg
bV9wbGF5ZXItPnNldFByZWxvYWQocHJlbG9hZCk7CiAgICAgbV9wbGF5ZXItPnNldFByZXNlcnZl
c1BpdGNoKHByZXNlcnZlc1BpdGNoKTsKICAgICBtX3BsYXllci0+cHJlcGFyZUZvclJlbmRlcmlu
ZygpOwogICAgIG1fdmlkZW9Db250ZW50U2NhbGUgPSB2aWRlb0NvbnRlbnRTY2FsZTsKLSAgICBt
X2xheWVySG9zdGluZ0NvbnRleHQgPSBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRl
cm5hbEhvc3RpbmdQcm9jZXNzKCk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobV9sYXllckhvc3Rp
bmdDb250ZXh0LT5jb250ZXh0SUQoKSk7CisgICAgaWYgKCFtX2lubGluZUxheWVySG9zdGluZ0Nv
bnRleHQpCisgICAgICAgIG1faW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dCA9IExheWVySG9zdGlu
Z0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoKTsKKyAgICBpZiAoIW1f
ZnVsbHNjcmVlbkxheWVySG9zdGluZ0NvbnRleHQpCisgICAgICAgIG1fZnVsbHNjcmVlbkxheWVy
SG9zdGluZ0NvbnRleHQgPSBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhv
c3RpbmdQcm9jZXNzKCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobV9pbmxpbmVMYXllckhvc3Rp
bmdDb250ZXh0LT5jb250ZXh0SUQoKSwgbV9mdWxsc2NyZWVuTGF5ZXJIb3N0aW5nQ29udGV4dC0+
Y29udGV4dElEKCkpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmNhbmNlbExv
YWQoKQpAQCAtMTk0LDYgKzE5NywxOSBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNl
dFNob3VsZE1haW50YWluQXNwZWN0UmF0aW8oYm9vbCBtYWludGFpblJhdGlvKQogICAgIG1fcGxh
eWVyLT5zZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKG1haW50YWluUmF0aW8pOwogfQogCit2
b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmVudGVyRnVsbHNjcmVlbihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byB2aWRlb0Z1bGxz
Y3JlZW5MYXllciA9IG1fcGxheWVyLT5jcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpOworICAg
IG1fZnVsbHNjcmVlbkxheWVySG9zdGluZ0NvbnRleHQtPnNldFJvb3RMYXllcih2aWRlb0Z1bGxz
Y3JlZW5MYXllci5nZXQoKSk7CisgICAgbV9wbGF5ZXItPnNldFZpZGVvRnVsbHNjcmVlbkxheWVy
KHZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6ZXhpdEZ1bGxzY3JlZW4oQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fcGxheWVy
LT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihudWxscHRyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgbV9mdWxsc2NyZWVuTGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Um9vdExheWVy
KG51bGxwdHIpOworfQorCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNldFZpZGVvRnVs
bHNjcmVlbkZyYW1lKFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0KQogewogICAgIG1fcGxheWVyLT5z
ZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShyZWN0KTsKQEAgLTQ2OSwxMyArNDg1LDEzIEBAIHZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKCkKIHZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJGaXJzdFZpZGVvRnJhbWVBdmFpbGFi
bGUoKQogewogICAgIC8vIEluaXRpYWxseSB0aGUgc2l6ZSBvZiB0aGUgcGxhdGZvcm1MYXllciB3
aWxsIGJlIDB4MCBiZWNhdXNlIHdlIGRvIG5vdCBwcm92aWRlIG1lZGlhUGxheWVyQ29udGVudEJv
eFJlY3QoKSBpbiB0aGlzIGNsYXNzLgotICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Um9v
dExheWVyKG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpOworICAgIG1faW5saW5lTGF5ZXJIb3N0
aW5nQ29udGV4dC0+c2V0Um9vdExheWVyKG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpOwogICAg
IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6Rmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKCksIG1faWQpOwogfQogCiB2b2lkIFJl
bW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQoKQog
ewotICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Um9vdExheWVyKG1fcGxheWVyLT5wbGF0
Zm9ybUxheWVyKCkpOworICAgIG1faW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Um9vdExh
eWVyKG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUGxh
eWVyUHJveHk6Om1lZGlhUGxheWVyQWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclBy
b3h5LmgKaW5kZXggMTZiYjJkZGZhMjE0NzQ3MGU4NjAwYWI3MTM5NmE1OWNkZjU0NDlmYS4uZTkx
ZWIyNWY2NTNiZGE0N2M0ODc3NjhiODlkNDdhYzY2OTVhNzkzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCkBA
IC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0Q29uZmlndXJhdGlvbihSZW1v
dGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24mKTsKIAotICAgIHZvaWQgcHJlcGFyZUZvclBsYXli
YWNrKGJvb2wgcHJpdmF0ZU1vZGUsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQs
IGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZywgZmxvYXQgdmlk
ZW9Db250ZW50U2NhbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8TGF5ZXJIb3N0
aW5nQ29udGV4dElEPiYmKT4mJik7CisgICAgdm9pZCBwcmVwYXJlRm9yUGxheWJhY2soYm9vbCBw
cml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZCwgYm9vbCBwcmVz
ZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVyaW5nLCBmbG9hdCB2aWRlb0NvbnRlbnRT
Y2FsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxMYXllckhvc3RpbmdDb250ZXh0
SUQ+JiYgaW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dElkLCBPcHRpb25hbDxMYXllckhvc3RpbmdD
b250ZXh0SUQ+JiYgZnVsbHNjcmVlbkxheWVySG9zdGluZ0NvbnRleHRJZCk+JiYpOwogICAgIHZv
aWQgcHJlcGFyZUZvclJlbmRlcmluZygpOwogCiAgICAgdm9pZCBsb2FkKFVSTCYmLCBPcHRpb25h
bDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiYsIGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBl
JiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVNZWRpYVBsYXll
ckNvbmZpZ3VyYXRpb24mJik+JiYpOwpAQCAtMTAzLDYgKzEwMywxMCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHNldFZpc2libGUoYm9vbCk7CiAgICAgdm9pZCBzZXRTaG91bGRNYWludGFpbkFzcGVj
dFJhdGlvKGJvb2wpOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMp
ICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisgICAgdm9pZCBlbnRlckZ1bGxz
Y3JlZW4oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGV4aXRGdWxsc2Ny
ZWVuKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisjZW5kaWYKICAgICB2b2lkIHNldFZp
ZGVvRnVsbHNjcmVlbkZyYW1lKFdlYkNvcmU6OkZsb2F0UmVjdCk7CiAgICAgdm9pZCBzZXRWaWRl
b0Z1bGxzY3JlZW5HcmF2aXR5KFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0
eSk7CiAgICAgdm9pZCBhY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZChib29sKTsKQEAg
LTIzOSw3ICsyNDMsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBt
X3NhbmRib3hFeHRlbnNpb247CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV93ZWJQcm9jZXNz
Q29ubmVjdGlvbjsKICAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXI+IG1fcGxheWVyOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBtX2xheWVySG9zdGluZ0Nv
bnRleHQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IG1faW5saW5l
TGF5ZXJIb3N0aW5nQ29udGV4dDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29u
dGV4dD4gbV9mdWxsc2NyZWVuTGF5ZXJIb3N0aW5nQ29udGV4dDsKICAgICBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eSYgbV9tYW5hZ2VyOwogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51
bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBtX2VuZ2luZUlkZW50aWZpZXI7CiAgICAgVmVjdG9y
PFdlYkNvcmU6OkNvbnRlbnRUeXBlPiBtX3R5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCBjYTY2MzE0ZGZiZTZkMzFiZTA5
OTUyYzVmMjgyZjEwNjE4ZmViZWJhLi4yZDdmMWYyY2FiYzUxMzk0NzQ5NDg1MTUzZWZhZjdjZTlj
ODg3NDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQs
NyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKLSAgICBQcmVwYXJlRm9yUGxheWJhY2soYm9vbCBw
cml2YXRlTW9kZSwgZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxv
YWQgcHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVyaW5n
LCBmbG9hdCB2aWRlb0NvbnRlbnRTY2FsZSkgLT4gKE9wdGlvbmFsPFdlYktpdDo6TGF5ZXJIb3N0
aW5nQ29udGV4dElEPiBsYXllckhvc3RpbmdDb250ZXh0SWQpIEFzeW5jCisgICAgUHJlcGFyZUZv
clBsYXliYWNrKGJvb2wgcHJpdmF0ZU1vZGUsIGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBs
YXllckVudW1zOjpQcmVsb2FkIHByZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJl
cGFyZUZvclJlbmRlcmluZywgZmxvYXQgdmlkZW9Db250ZW50U2NhbGUpIC0+IChPcHRpb25hbDxX
ZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRD4gaW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dElk
LCBPcHRpb25hbDxXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRD4gZnVsbHNjcmVlbkxheWVy
SG9zdGluZ0NvbnRleHRJZCkgQXN5bmMKIAogICAgIExvYWQoVVJMIHVybCwgT3B0aW9uYWw8V2Vi
S2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hFeHRlbnNpb24sIFdlYkNvcmU6
OkNvbnRlbnRUeXBlIGNvbnRlbnRUeXBlLCBTdHJpbmcga2V5U3lzdGVtKSAtPiAoc3RydWN0IFdl
YktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uIHBsYXllckNvbmZpZ3VyYXRpb24p
IEFzeW5jCiAgICAgQ2FuY2VsTG9hZCgpCkBAIC02MSw2ICs2MSwxMSBAQCBtZXNzYWdlcyAtPiBS
ZW1vdGVNZWRpYVBsYXllclByb3h5IE5vdFJlZkNvdW50ZWQgewogICAgIFNldFZpZGVvSW5saW5l
U2l6ZUZlbmNlZChXZWJDb3JlOjpJbnRTaXplIHNpemUsIE1hY2hTZW5kUmlnaHQgbWFjaFNlbmRS
aWdodCkKICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1B
QykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKyAgICBFbnRlckZ1bGxzY3Jl
ZW4oKSAtPiAoKSBBc3luYworICAgIEV4aXRGdWxsc2NyZWVuKCkgLT4gKCkgQXN5bmMKKyNlbmRp
ZgorCiAgICAgIyBQYWludAogICAgICMgUGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZU1lZGlh
UGxheWVyUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9jb2Nv
YS9SZW1vdGVNZWRpYVBsYXllclByb3h5Q29jb2EubW0KaW5kZXggMzVmYzVkYmEwN2RhNjcyOTNk
YzlmODgwMTkyNTc1MTQ3YTJhYjkxNi4uNGMyNTcwM2YxMTUwMDczMjBmZDM4MTc1NGM4OWY1ZDgw
YzE4YjJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2NvY29h
L1JlbW90ZU1lZGlhUGxheWVyUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvY29jb2EvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvY29hLm1tCkBAIC0zNywx
MSArMzcsMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6c2V0VmlkZW9JbmxpbmVTaXplRmVuY2VkKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNp
emUsIGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgbWFjaFNlbmRSaWdodCkKIHsKLSAgICBtX2xh
eWVySG9zdGluZ0NvbnRleHQtPnNldEZlbmNlUG9ydChtYWNoU2VuZFJpZ2h0LnNlbmRSaWdodCgp
KTsKKyAgICBtX2lubGluZUxheWVySG9zdGluZ0NvbnRleHQtPnNldEZlbmNlUG9ydChtYWNoU2Vu
ZFJpZ2h0LnNlbmRSaWdodCgpKTsKICAgICAvLyBXZSBkbyBub3Qgd2FudCBhbmltYXRpb25zIGhl
cmUKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlz
YWJsZUFjdGlvbnM6WUVTXTsKLSAgICBbbV9sYXllckhvc3RpbmdDb250ZXh0LT5yb290TGF5ZXIo
KSBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSld
OworICAgIFttX2lubGluZUxheWVySG9zdGluZ0NvbnRleHQtPnJvb3RMYXllcigpIHNldEZyYW1l
OkNHUmVjdE1ha2UoMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKV07CiAgICAgW0NB
VHJhbnNhY3Rpb24gY29tbWl0XTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmlu
ZGV4IDZmNjNiMjMwZjYyN2QxMmNjNmVjM2VmN2RkNmNlNmFkMTI5N2FhNmEuLmI4YWUzZDNmNDRj
Njc3ODg5NmE0NDdiNTU3YWY3YjYyMjc2NWUzMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5jcHAKQEAgLTk5LDE0ICs5OSwxOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
cHJlcGFyZUZvclBsYXliYWNrKGJvb2wgcHJpdmF0ZU1vZGUsIE1lZGlhUGxheWVyOgogewogICAg
IGF1dG8gc2NhbGUgPSBtX3BsYXllci0+cGxheWVyQ29udGVudHNTY2FsZSgpOwogCi0gICAgY29u
bmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6UHJlcGFyZUZvclBsYXliYWNrKHByaXZhdGVNb2RlLCBwcmVsb2FkLCBwcmVzZXJ2ZXNQ
aXRjaCwgcHJlcGFyZSwgc2NhbGUpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRo
aXNdKGF1dG8gY29udGV4dElkKSBtdXRhYmxlIHsKKyAgICBjb25uZWN0aW9uKCkuc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpQcmVwYXJlRm9yUGxh
eWJhY2socHJpdmF0ZU1vZGUsIHByZWxvYWQsIHByZXNlcnZlc1BpdGNoLCBwcmVwYXJlLCBzY2Fs
ZSksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpc10oYXV0byBpbmxpbmVMYXll
ckhvc3RpbmdDb250ZXh0SWQsIGF1dG8gZnVsbHNjcmVlbkxheWVySG9zdGluZ0NvbnRleHRJZCkg
bXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgaWYgKCFjb250ZXh0SWQpCisgICAgICAgIGlmICghaW5saW5lTGF5ZXJIb3N0aW5n
Q29udGV4dElkKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fdmlkZW9JbmxpbmVM
YXllciA9IGNyZWF0ZVZpZGVvTGF5ZXJSZW1vdGUodGhpcywgY29udGV4dElkLnZhbHVlKCkpOwor
ICAgICAgICBtX3ZpZGVvSW5saW5lTGF5ZXIgPSBjcmVhdGVWaWRlb0xheWVyUmVtb3RlKHRoaXMs
IGlubGluZUxheWVySG9zdGluZ0NvbnRleHRJZC52YWx1ZSgpKTsKKworICAgICAgICBpZiAoIWZ1
bGxzY3JlZW5MYXllckhvc3RpbmdDb250ZXh0SWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllciA9IGNyZWF0ZVZpZGVvTGF5ZXJSZW1vdGUodGhp
cywgZnVsbHNjcmVlbkxheWVySG9zdGluZ0NvbnRleHRJZC52YWx1ZSgpKTsKICAgICB9LCBtX2lk
KTsKIH0KIApAQCAtMzQwLDYgKzM0NSwxMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6c3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29u
ZmlndXJhdGlvbi5zdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nOwogfQogCit2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKQor
eworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5
OjpBY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZChtX3BsYXllci0+c3VwcG9ydHNBY2Nl
bGVyYXRlZFJlbmRlcmluZygpKSwgbV9pZCk7Cit9CisKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpjYW5QbGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9jb25maWd1cmF0aW9uLmNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQ7CkBA
IC0zODAsMjEgKzM5MCw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91
bGRNYWludGFpbkFzcGVjdFJhdGlvKGJvb2wgbWFpbnRhaW5SYXRpbykKICAgICBjb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6U2V0U2hvdWxkTWFpbnRh
aW5Bc3BlY3RSYXRpbyhtYWludGFpblJhdGlvKSwgbV9pZCk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShXZWJDb3JlOjpGbG9hdFJl
Y3QgcmVjdCkKLXsKLSAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6U2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUocmVjdCksIG1faWQpOwotfQotCi12
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShX
ZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHkgZ3Jhdml0eSkKLXsKLSAgICBj
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6U2V0Vmlk
ZW9GdWxsc2NyZWVuR3Jhdml0eShncmF2aXR5KSwgbV9pZCk7Ci19Ci0KLXZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjphY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCgpCi17Ci0g
ICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OkFj
Y2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKG1fcGxheWVyLT5zdXBwb3J0c0FjY2VsZXJh
dGVkUmVuZGVyaW5nKCkpLCBtX2lkKTsKLX0KLQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnNldFNob3VsZERpc2FibGVTbGVlcChib29sIGRpc2FibGUpCiB7CiAgICAgY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlNldFNob3VsZERpc2Fi
bGVTbGVlcChkaXNhYmxlKSwgbV9pZCk7CkBAIC01OTIsOSArNTg3LDIxIEBAIFBsYXRmb3JtTGF5
ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiB9CiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklE
RU9fUFJFU0VOVEFUSU9OX01PREUpKQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNl
dFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4mJikKKworUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXI7Cit9CisKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiB2
aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgaWYgKCF2aWRlb0Z1bGxzY3JlZW5MYXllcikgeworICAgICAgICBjb25u
ZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjpFeGl0RnVsbHNjcmVlbigpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9pZCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorICAgIEFTU0VSVCh2aWRlb0Z1bGxz
Y3JlZW5MYXllciA9PSBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpKTsKKyAgICBjb25uZWN0
aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5
OjpFbnRlckZ1bGxzY3JlZW4oKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1faWQpOwog
fQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dXBkYXRlVmlkZW9GdWxsc2NyZWVu
SW5saW5lSW1hZ2UoKQpAQCAtNjAyLDYgKzYwOSwxNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoKQogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1
bGxzY3JlZW5GcmFtZShXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCkKK3sKKyAgICBjb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6U2V0VmlkZW9GdWxsc2Ny
ZWVuRnJhbWUocmVjdCksIG1faWQpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpW
aWRlb0dyYXZpdHkgZ3Jhdml0eSkKK3sKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6U2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShncmF2aXR5
KSwgbV9pZCk7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1
bGxzY3JlZW5Nb2RlKE1lZGlhUGxheWVyOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAppbmRleCAxMzJmMzBhYjI5
YjZlNTA5ZjExMzk0OTI1ODBhNmUzNjcxY2M3OTA5Li4yODY1OGFmMWIwMjlhNjRiNDA0ZWU4ZDQy
ZDczZDcxNzMwZjM5YWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKQEAgLTE3NCw2ICsx
NzQsNyBAQCBwcml2YXRlOgogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dCBmaW5hbDsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYm
IEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisgICAgUmV0YWluUHRyPFBsYXRmb3Jt
TGF5ZXI+IGNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkgZmluYWw7CiAgICAgdm9pZCBzZXRW
aWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2Ny
ZWVuSW5saW5lSW1hZ2UoKSBmaW5hbDsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1l
KFdlYkNvcmU6OkZsb2F0UmVjdCkgZmluYWw7CkBAIC0zNjEsNiArMzYyLDcgQEAgcHJpdmF0ZToK
ICAgICBXZWJDb3JlOjpNZWRpYVBsYXllciogbV9wbGF5ZXIgeyBudWxscHRyIH07CiAgICAgUmVm
UHRyPFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcj4gbV9tZWRpYVJlc291cmNl
TG9hZGVyOwogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3ZpZGVvSW5saW5lTGF5ZXI7
CisgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXI7CiAg
ICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyJiBtX21hbmFnZXI7CiAgICAgV2ViQ29yZTo6TWVk
aWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIG1fcmVtb3RlRW5naW5lSWRlbnRp
ZmllcjsKICAgICBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIG1faWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyLm1tCmluZGV4IDY4NGViYWJhZDM2Y2RmMzkxMGQ3YjYyY2FjYjE2NDhhNGI5YjIyZjQu
LmYyYTcwZjZjZDUxNTEyY2VkN2EyZGU4OWJiZTQ5NWY0NmQ2ZWY4NGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Lm1tCkBAIC0yNzEsMTAgKzI3MSwxMSBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVu
dGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KEhUTUxWaWRlb0VsZW1lbgogICAgIGJv
b2wgYWxsb3dzUGljdHVyZUluUGljdHVyZSA9IHZpZGVvRWxlbWVudC53ZWJraXRTdXBwb3J0c1By
ZXNlbnRhdGlvbk1vZGUoSFRNTFZpZGVvRWxlbWVudDo6VmlkZW9QcmVzZW50YXRpb25Nb2RlOjpQ
aWN0dXJlSW5QaWN0dXJlKTsKIAogICAgIGlmICghaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250
ZXh0KCktPnJvb3RMYXllcigpKSB7Ci0gICAgICAgIFBsYXRmb3JtTGF5ZXIqIHZpZGVvTGF5ZXIg
PSBbQ0FMYXllciBsYXllcl07CisgICAgICAgIFJldGFpblB0cjxDQUxheWVyPiB2aWRlb0xheWVy
ID0gbW9kZWwtPmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCk7CiAgICAgICAgIFt2aWRlb0xh
eWVyIHNldERlbGVnYXRlOltXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUgc2hhcmVk
XV07Ci0KKyNpZm5kZWYgTkRFQlVHCiAgICAgICAgIFt2aWRlb0xheWVyIHNldE5hbWU6QCJXZWIg
dmlkZW8gZnVsbHNjcmVlbiBtYW5hZ2VyIGxheWVyIl07CisjZW5kaWYKICAgICAgICAgW3ZpZGVv
TGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1ha2UoMCwgMCldOwogICAgICAgICBbdmlkZW9MYXll
ciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJhbnNw
YXJlbnQpXTsKIApAQCAtMjgzLDcgKzI4NCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVuCiAg
ICAgICAgIGZsb2F0IGhvc3RpbmdTY2FsZUZhY3RvciA9IG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0
b3IoKTsKICAgICAgICAgW3ZpZGVvTGF5ZXIgc2V0VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RNYWtl
U2NhbGUoaG9zdGluZ1NjYWxlRmFjdG9yLCBob3N0aW5nU2NhbGVGYWN0b3IsIDEpXTsKIAotICAg
ICAgICBpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+c2V0Um9vdExheWVyKHZpZGVv
TGF5ZXIpOworICAgICAgICBpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+c2V0Um9v
dExheWVyKHZpZGVvTGF5ZXIuZ2V0KCkpOwogICAgIH0KIAogICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXR1cEZ1bGxzY3JlZW5XaXRoSUQo
Y29udGV4dElkLCBpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+Y29udGV4dElEKCks
IHZpZGVvUmVjdCwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpLCBpbnRlcmZhY2UtPmZ1bGxz
Y3JlZW5Nb2RlKCksIGFsbG93c1BpY3R1cmVJblBpY3R1cmUsIHN0YW5kYnkpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391789</attachid>
            <date>2020-02-26 15:26:27 -0800</date>
            <delta_ts>2020-02-28 15:59:22 -0800</delta_ts>
            <desc>WIP patch - rebased</desc>
            <filename>bug-208252-20200226152625.patch</filename>
            <type>text/plain</type>
            <size>32165</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2E4MzgxYmQ5YzE5MTZi
ZWVmOGMzZGZmMzA0NDg3ZDQ0NjFjNDY3Mi4uOTA1N2UyOTU4MDE4NWRmNjU5Y2M4OWVmOTU1YzUw
ZmZkZmQxMThhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIwLTAyLTI2ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBwcm9j
ZXNzXSBJbXBsZW1lbnQgdGhlIHZpZGVvIGZ1bGxzY3JlZW4gYW5kIFBpY3R1cmUtaW4tUGljdHVy
ZSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDgyNTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgIE1vdmUgdGhlIGNyZWF0aW9u
IG9mIHRoZSBDQUxheWVyIGZvciB2aWRlbyBmdWxsc2NyZWVuIGFuZCBwaWN0dXJlLWluLXBpY3R1
cmUgZnJvbQorICAgICAgICBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIHRvIE1lZGlhUGxheWVyUHJp
dmF0ZSBjbGFzc2VzLiBXaXRoIHRoaXMgY2hhbmdlLCB3ZSBjYW4gc3VwcG9ydAorICAgICAgICB2
aWRlbyBmdWxsc2NyZWVuIGFuZCBwaWN0dXJlLWluLXBpY3R1cmUgbm8gbWF0dGVyIHRoZSAiTWVk
aWEgaW4gR1BVIHByb2Nlc3MiCisgICAgICAgIGZlYXR1cmUgaXMgZW5hYmxlZCBvciBub3QuCisK
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW06CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3Jl
YXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQzo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorCiAyMDIwLTAyLTI2ICBEYW5pZWwg
QmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVhbiB1cCBIaXRUZXN0TG9j
YXRpb24uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCBkMzk3NzY2ZTVkYTkwYzA1MDIwODYwMmM1ZTAxZjJhZWY1MTVh
ZmY1Li4yNjQzZTAzOTI5ZGJhNDMzY2NiOWZmYjRlOGVlMDE3YmRkM2E3NjEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM1IEBACisyMDIwLTAyLTI2ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5j
b20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBwcm9jZXNzXSBJbXBsZW1lbnQgdGhlIHZpZGVv
IGZ1bGxzY3JlZW4gYW5kIFBpY3R1cmUtaW4tUGljdHVyZSBzdXBwb3J0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgyNTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eSBpbiB0aGUgR1BVIHByb2Nlc3MgY3JlYXRlcyBhIExheWVySG9zdGluZ0NvbnRleHQgYW5k
CisgICAgICAgIHNoYXJlIHRoZSBjb250ZXh0IElEIHdpdGggdGhlIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZSBpbiB0aGUgV2ViIHByb2Nlc3MsCisgICAgICAgIHdoaWNoIGluIHR1cm4gY3JlYXRl
cyBhIHJlbW90ZSBsYXllciB1c2VkIGJ5IHRoZSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLgorCisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6cHJlcGFyZUZvclBsYXliYWNr
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6ZW50ZXJGdWxsc2Ny
ZWVuKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6ZXhpdEZ1bGxz
Y3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBs
YXllckZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZU1lZGlhUGxheWVyUHJveHlDb2Nv
YS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0VmlkZW9J
bmxpbmVTaXplRmVuY2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnByZXBhcmVGb3JQbGF5YmFjayk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNyZWF0ZVZpZGVvRnVsbHNj
cmVlbkxheWVyKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpz
ZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbToKKyAg
ICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxzY3Jl
ZW5Gb3JWaWRlb0VsZW1lbnQpOgorCiAyMDIwLTAyLTI2ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVz
QGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBTZW5kIGZvY3VzIHVwZGF0ZSBpbW1lZGlhdGVs
eSBvbiBiZWNvbWluZyBvciByZXNpZ25pbmcgZmlyc3QgcmVzcG9uZGVyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA5NjljNTBkODMwNjE4YTg3NDk1YjVkZDEy
OTAzZGM2M2VhNDhjNTcwLi5lNmY2MmEzMTI3ZGE5MzAyMTIyN2QxZDBlMmFlMDEyNDFmMzIzYjNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTYyMzksNiAr
NjIzOSwxMSBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzVmlkZW9MYXllcklubGluZSgpCiAg
ICAgcmV0dXJuICFtX3ZpZGVvRnVsbHNjcmVlbkxheWVyOwogfTsKIAorUmV0YWluUHRyPFBsYXRm
b3JtTGF5ZXI+IEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkK
K3sKKyAgICByZXR1cm4gbV9wbGF5ZXItPmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCk7Cit9
CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllciwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDVkZTBkMTExODUxYWM3ZmE4YzNlOTVkYjZlZWQ5
YWYzMWNmNTE1OGQuLmM3Y2M3ZjdjNmIyZmY2N2FjODdiMDY1MzM0NmYxZTczODI1NmE3ZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0xNzksNiArMTc5LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0UHJlcGFyZWRUb1JldHVyblZpZGVvTGF5ZXJUb0lubGluZShi
b29sKTsKICAgICB2b2lkIHdhaXRGb3JQcmVwYXJlZEZvcklubGluZVRoZW4oV1RGOjpGdW5jdGlv
bjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOwogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05f
TU9ERSkpCisgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IGNyZWF0ZVZpZGVvRnVsbHNjcmVl
bkxheWVyKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXll
cihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIgPSBbXSB7IH0pOwogI2lmZGVmIF9fT0JKQ19fCiAgICAgUGxhdGZvcm1MYXllciogdmlkZW9G
dWxsc2NyZWVuTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyLmdl
dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaAppbmRleCAwZTlhNDU0YjRkODhh
Y2UzNTU0MjI2NWJmYjAwZjQxNjcyMjcxMjRlLi4zYjYwYjMyZmExZmU4ZTNhYTAxODk4ZjllYTFj
Yzc2ODEyYTg4ZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKQEAgLTU1LDYg
KzU1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRl
b0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVudCopOwogICAgIEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVv
RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9FbGVtZW50LmdldCgpOyB9CisgICAgV0VC
Q09SRV9FWFBPUlQgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IGNyZWF0ZVZpZGVvRnVsbHNjcmVl
bkxheWVyKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXll
cihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIgPSBbXSB7IH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2lsbEV4aXRGdWxsc2NyZWVu
KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3YWl0Rm9yUHJlcGFyZWRGb3JJbmxpbmVUaGVu
KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyID0gW10geyB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9G
dWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KaW5kZXggZWI3ZjI2NzdkMGI1ZWZiNDQxZjY5
YzY5YmI5MzY4ZDE4MGM0NDIzOS4uYzIxMDFkMTZlZjBmZjEzZDJmNmExOGQzZjIyMzRkOWY4YjU3
YzM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxs
c2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KQEAgLTExMCw2ICsxMTAs
MTEgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6d2lsbEV4aXRGdWxs
c2NyZWVuKCkKICAgICAgICAgbV92aWRlb0VsZW1lbnQtPndpbGxFeGl0RnVsbHNjcmVlbigpOwog
fQogCitSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQ6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkKK3sKKyAgICByZXR1cm4gbV92aWRl
b0VsZW1lbnQtPmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCk7Cit9CisKIHZvaWQgVmlkZW9G
dWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRm
b3JtTGF5ZXIqIHZpZGVvTGF5ZXIsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyID09IHZpZGVvTGF5ZXIp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cAppbmRleCA1N2RmY2JmNGJjN2M0ODg0NGQzODFjYjM1ZWNjNjQzYzFhYWI0YjkyLi5iODJmZWVm
ZmYxYzMzZGE0ZGNmMmU2NTYwYTYxZTlkMDM3YTE0MTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC03NDQsNiArNzQ0LDExIEBA
IFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKICAgICAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklE
RU9fUFJFU0VOVEFUSU9OX01PREUpKQogCitSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gTWVkaWFQ
bGF5ZXI6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkKK3sKKyAgICByZXR1cm4gbV9wcml2
YXRlLT5jcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpOworfQorCiB2b2lkIE1lZGlhUGxheWVy
OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiBsYXllciwgV1RGOjpGdW5j
dGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9wcml2YXRlLT5zZXRW
aWRlb0Z1bGxzY3JlZW5MYXllcihsYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXgg
N2U2Y2I4YTM5MGRmN2ZlMWE3YWFlMDE3MzlkYzk0OGY3NzY2MjFlZS4uM2EzNjVlMjQ3NTI2MGI3
NzQ1NjMwZjQ1Y2M2NDg1MzhjZDcxNWUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0zMDcsNiArMzA3LDcgQEAgcHVibGljOgogICAg
IFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05f
TU9ERSkpCisgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IGNyZWF0ZVZpZGVvRnVsbHNjcmVl
bkxheWVyKCk7CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVy
KiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOwog
ICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KTsKICAgICB2b2lkIHVw
ZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IDlmN2Y2ZTZi
MDJkM2JlYmUwOTBlYmNjMzJhNGIwZGNhMWNjMTc1YTguLjlkOTJlY2RiM2E2ZjgwOWNlYmM5YmMz
ZmVkMzdiMWJkNzBlOWNlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC02Miw2ICs2Miw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVy
biBudWxscHRyOyB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorICAgIHZpcnR1YWwgUmV0YWlu
UHRyPFBsYXRmb3JtTGF5ZXI+IGNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkgeyByZXR1cm4g
bnVsbHB0cjsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0
Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsg
Y29tcGxldGlvbkhhbmRsZXIoKTsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWRlb0Z1bGxz
Y3JlZW5JbmxpbmVJbWFnZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3Jl
ZW5GcmFtZShGbG9hdFJlY3QpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IGFmNmM4MDRm
NmNmOGU2MDhkODdkODM5ZmQ4MDZmMDg5MDNkMjNmYjYuLjM5OTkwMGQ2OTkwZTA0MTkwZGNlY2Y2
ZDhlYmZjZGU4OGNkMzU5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTE3Nyw2ICsxNzcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmV0YWluUHRyPFBs
YXRmb3JtTGF5ZXI+IGNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgRnVuY3Rpb248dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZVZpZGVv
RnVsbHNjcmVlbklubGluZUltYWdlKCkgZmluYWw7CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3Jl
ZW5GcmFtZShGbG9hdFJlY3QpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXgg
ZjJhODZjYWJmNjhjODg2ODFjYzJkZmQxZWViZjViYmM5ZDRkZmFiYi4uNWQwMTQxM2ZkZmIzNDBj
YWJmN2E4YmY4Nzg0Y2QyZmNiMzQ1ZDlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0x
MDgzLDYgKzEwODMsMTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSgpCiAgICAgbV92aWRlb0xheWVyTWFu
YWdlci0+dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UobV9sYXN0SW1hZ2UpOwogfQog
CitSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKQoreworICAgIHJldHVybiBhZG9wdE5T
KFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOworfQorCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqIHZp
ZGVvRnVsbHNjcmVlbkxheWVyLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgdXBkYXRlTGFzdEltYWdlKFVwZGF0ZVR5cGU6OlVwZGF0ZVN5bmNocm9ub3VzbHkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCA1ZGUzMzZjYjY0Yjk5NDU3YmZmYmU2NzJm
MWE1MmMzZjYyNzc4OGUzLi5kOGY5YzI0NGI2YzFlMWYzOThjOTk1NWU3NmU1ZDM5YmZhYzZjZjZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtMTA5LDYgKzEwOSw3IEBAIHB1YmxpYzoK
ICAgICBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciogc2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
KCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCk7IH0KICAg
ICBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24qIGRlY29tcHJlc3Npb25TZXNzaW9uKCkgY29u
c3QgeyByZXR1cm4gbV9kZWNvbXByZXNzaW9uU2Vzc2lvbi5nZXQoKTsgfQogCisgICAgUmV0YWlu
UHRyPFBsYXRmb3JtTGF5ZXI+IGNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAgIHZvaWQg
c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLm1tCmluZGV4IDRiZDMzODQ3MzA2Mjc3ODgwODkwYzg4MTkxYWM3YjlhZjk2
MzRkMWMuLmY1NDkxMGMxOTAyY2I3NGQzZGQzMDBkMmNiNTEzYWRlMjE2YjBiZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTExNTgsNiArMTE1OCwxMSBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCgpCiAg
ICAgbV9wbGF5ZXItPmNoYXJhY3RlcmlzdGljQ2hhbmdlZCgpOwogfQogCitSZXRhaW5QdHI8UGxh
dGZvcm1MYXllcj4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGVW
aWRlb0Z1bGxzY3JlZW5MYXllcigpCit7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tDQUxheWVyIGFs
bG9jXSBpbml0XSk7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyICp2aWRlb0Z1bGxzY3Jl
ZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgdXBkYXRlTGFzdEltYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCmluZGV4IDkyYzA4
MjE2NTQ5OGNkZWEyN2MxMzdlOTU2ZmNhM2Y0Nzk4OWY2ODQuLjNmYzk0OGMyN2RjMTMwMTIwMGY1
MzlmYmYxY2NkMTNjYmI1OWMwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCkBAIC0xOTcs
NiArMTk3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNhbXBsZUJ1ZmZlclVwZGF0ZWQoTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUmLCBNZWRpYVNhbXBsZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVh
ZHlTdGF0ZUNoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBvdmVycmlkZTsKIAorICAg
IFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpIG92
ZXJyaWRlOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllcios
IFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICAg
ICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCAyZDBiMzFhMGE4MTEyZDM3NDNiOWVhMmM4NDYw
MGY5Zjk4MzkzYjU2Li5iNDY4Y2RhZWFkNzcxYmM4MDQzZTA0NmEwMjA2NmUyYjc0NTAwYjUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC03NzMsNiArNzczLDExIEBAIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzdXBwb3J0c1BpY3R1cmVJblBpY3R1
cmUoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCitSZXRhaW5QdHI8UGxhdGZvcm1MYXll
cj4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjcmVhdGVWaWRlb0Z1bGxz
Y3JlZW5MYXllcigpCit7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0
XSk7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRW
aWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllciwg
V1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdXBkYXRl
Q3VycmVudEZyYW1lSW1hZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCA1ZWZlNjYyNWQ2ZjJm
OTBhZGVkNzdkOGM1NTk3ZGYzYzc4OGYzMWRiLi5lY2Q1NzRkMzRkZmJmNTdkYzExNzI1OTEzZWQw
N2I5M2Q5YWVlOTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC0xMDcsMTUgKzEwNywxOCBAQCB2
b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmxvYWQoVVJMJiYgdXJsLCBPcHRpb25hbDxTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGU+JgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29u
ZmlndXJhdGlvbikpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnByZXBhcmVG
b3JQbGF5YmFjayhib29sIHByaXZhdGVNb2RlLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQ
cmVsb2FkIHByZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRl
cmluZywgZmxvYXQgdmlkZW9Db250ZW50U2NhbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8TGF5ZXJIb3N0aW5nQ29udGV4dElEPiYmIGNvbnRleHRJZCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnByZXBhcmVGb3JQbGF5YmFjayhi
b29sIHByaXZhdGVNb2RlLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkIHByZWxv
YWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZywgZmxvYXQg
dmlkZW9Db250ZW50U2NhbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8TGF5ZXJI
b3N0aW5nQ29udGV4dElEPiYmIGlubGluZUxheWVySG9zdGluZ0NvbnRleHRJZCwgT3B0aW9uYWw8
TGF5ZXJIb3N0aW5nQ29udGV4dElEPiYmIGZ1bGxzY3JlZW5MYXllckhvc3RpbmdDb250ZXh0SWQp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fcGxheWVyLT5zZXRQcml2YXRlQnJvd3Np
bmdNb2RlKHByaXZhdGVNb2RlKTsKICAgICBtX3BsYXllci0+c2V0UHJlbG9hZChwcmVsb2FkKTsK
ICAgICBtX3BsYXllci0+c2V0UHJlc2VydmVzUGl0Y2gocHJlc2VydmVzUGl0Y2gpOwogICAgIG1f
cGxheWVyLT5wcmVwYXJlRm9yUmVuZGVyaW5nKCk7CiAgICAgbV92aWRlb0NvbnRlbnRTY2FsZSA9
IHZpZGVvQ29udGVudFNjYWxlOwotICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dCA9IExheWVySG9z
dGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoKTsKLSAgICBjb21w
bGV0aW9uSGFuZGxlcihtX2xheWVySG9zdGluZ0NvbnRleHQtPmNvbnRleHRJRCgpKTsKKyAgICBp
ZiAoIW1faW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dCkKKyAgICAgICAgbV9pbmxpbmVMYXllckhv
c3RpbmdDb250ZXh0ID0gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJuYWxIb3N0
aW5nUHJvY2VzcygpOworICAgIGlmICghbV9mdWxsc2NyZWVuTGF5ZXJIb3N0aW5nQ29udGV4dCkK
KyAgICAgICAgbV9mdWxsc2NyZWVuTGF5ZXJIb3N0aW5nQ29udGV4dCA9IExheWVySG9zdGluZ0Nv
bnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoKTsKKyAgICBjb21wbGV0aW9u
SGFuZGxlcihtX2lubGluZUxheWVySG9zdGluZ0NvbnRleHQtPmNvbnRleHRJRCgpLCBtX2Z1bGxz
Y3JlZW5MYXllckhvc3RpbmdDb250ZXh0LT5jb250ZXh0SUQoKSk7CiB9CiAKIHZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eTo6Y2FuY2VsTG9hZCgpCkBAIC0xOTQsNiArMTk3LDE5IEBAIHZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0U2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRpbyhib29s
IG1haW50YWluUmF0aW8pCiAgICAgbV9wbGF5ZXItPnNldFNob3VsZE1haW50YWluQXNwZWN0UmF0
aW8obWFpbnRhaW5SYXRpbyk7CiB9CiAKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6ZW50
ZXJGdWxsc2NyZWVuKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBhdXRvIHZpZGVvRnVsbHNjcmVlbkxheWVyID0gbV9wbGF5ZXItPmNyZWF0ZVZp
ZGVvRnVsbHNjcmVlbkxheWVyKCk7CisgICAgbV9mdWxsc2NyZWVuTGF5ZXJIb3N0aW5nQ29udGV4
dC0+c2V0Um9vdExheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpKTsKKyAgICBtX3BsYXll
ci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjpleGl0RnVsbHNjcmVlbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgbV9wbGF5ZXItPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG51bGxw
dHIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBtX2Z1bGxzY3JlZW5MYXllckhv
c3RpbmdDb250ZXh0LT5zZXRSb290TGF5ZXIobnVsbHB0cik7Cit9CisKIHZvaWQgUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoV2ViQ29yZTo6RmxvYXRSZWN0
IHJlY3QpCiB7CiAgICAgbV9wbGF5ZXItPnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKHJlY3QpOwpA
QCAtNDY5LDEzICs0ODUsMTMgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBs
YXllckVuZ2luZVVwZGF0ZWQoKQogdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBs
YXllckZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSgpCiB7CiAgICAgLy8gSW5pdGlhbGx5IHRoZSBz
aXplIG9mIHRoZSBwbGF0Zm9ybUxheWVyIHdpbGwgYmUgMHgwIGJlY2F1c2Ugd2UgZG8gbm90IHBy
b3ZpZGUgbWVkaWFQbGF5ZXJDb250ZW50Qm94UmVjdCgpIGluIHRoaXMgY2xhc3MuCi0gICAgbV9s
YXllckhvc3RpbmdDb250ZXh0LT5zZXRSb290TGF5ZXIobV9wbGF5ZXItPnBsYXRmb3JtTGF5ZXIo
KSk7CisgICAgbV9pbmxpbmVMYXllckhvc3RpbmdDb250ZXh0LT5zZXRSb290TGF5ZXIobV9wbGF5
ZXItPnBsYXRmb3JtTGF5ZXIoKSk7CiAgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpGaXJzdFZpZGVvRnJhbWVBdmFpbGFi
bGUoKSwgbV9pZCk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5
ZXJSZW5kZXJpbmdNb2RlQ2hhbmdlZCgpCiB7Ci0gICAgbV9sYXllckhvc3RpbmdDb250ZXh0LT5z
ZXRSb290TGF5ZXIobV9wbGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSk7CisgICAgbV9pbmxpbmVMYXll
ckhvc3RpbmdDb250ZXh0LT5zZXRSb290TGF5ZXIobV9wbGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSk7
CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJBY3RpdmVTb3Vy
Y2VCdWZmZXJzQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAppbmRleCAxNmJiMmRkZmEyMTQ3NDcwZTg2
MDBhYjcxMzk2YTU5Y2RmNTQ0OWZhLi5lOTFlYjI1ZjY1M2JkYTQ3YzQ4Nzc2OGI4OWQ0N2FjNjY5
NWE3OTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5LmgKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBnZXRDb25maWd1cmF0aW9uKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYpOwog
Ci0gICAgdm9pZCBwcmVwYXJlRm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6
TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVw
YXJlRm9yUmVuZGVyaW5nLCBmbG9hdCB2aWRlb0NvbnRlbnRTY2FsZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDxMYXllckhvc3RpbmdDb250ZXh0SUQ+JiYpPiYmKTsKKyAgICB2b2lk
IHByZXBhcmVGb3JQbGF5YmFjayhib29sIHByaXZhdGVNb2RlLCBXZWJDb3JlOjpNZWRpYVBsYXll
ckVudW1zOjpQcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5k
ZXJpbmcsIGZsb2F0IHZpZGVvQ29udGVudFNjYWxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPExheWVySG9zdGluZ0NvbnRleHRJRD4mJiBpbmxpbmVMYXllckhvc3RpbmdDb250ZXh0
SWQsIE9wdGlvbmFsPExheWVySG9zdGluZ0NvbnRleHRJRD4mJiBmdWxsc2NyZWVuTGF5ZXJIb3N0
aW5nQ29udGV4dElkKT4mJik7CiAgICAgdm9pZCBwcmVwYXJlRm9yUmVuZGVyaW5nKCk7CiAKICAg
ICB2b2lkIGxvYWQoVVJMJiYsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4mJiwg
Y29uc3QgV2ViQ29yZTo6Q29udGVudFR5cGUmLCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYmKT4mJik7CkBAIC0xMDMs
NiArMTAzLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0VmlzaWJsZShib29sKTsKICAgICB2
b2lkIHNldFNob3VsZE1haW50YWluQXNwZWN0UmF0aW8oYm9vbCk7CisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKSkKKyAgICB2b2lkIGVudGVyRnVsbHNjcmVlbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOworICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW4oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyNlbmRpZgogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoV2ViQ29yZTo6Rmxv
YXRSZWN0KTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5KTsKICAgICB2b2lkIGFjY2VsZXJhdGVkUmVuZGVy
aW5nU3RhdGVDaGFuZ2VkKGJvb2wpOwpAQCAtMjM5LDcgKzI0Myw4IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IG1fc2FuZGJveEV4dGVuc2lvbjsKICAgICBSZWY8SVBD
OjpDb25uZWN0aW9uPiBtX3dlYlByb2Nlc3NDb25uZWN0aW9uOwogICAgIFJlZlB0cjxXZWJDb3Jl
OjpNZWRpYVBsYXllcj4gbV9wbGF5ZXI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGlu
Z0NvbnRleHQ+IG1fbGF5ZXJIb3N0aW5nQ29udGV4dDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5
ZXJIb3N0aW5nQ29udGV4dD4gbV9pbmxpbmVMYXllckhvc3RpbmdDb250ZXh0OworICAgIHN0ZDo6
dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBtX2Z1bGxzY3JlZW5MYXllckhvc3RpbmdD
b250ZXh0OwogICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5JiBtX21hbmFnZXI7CiAg
ICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIG1fZW5n
aW5lSWRlbnRpZmllcjsKICAgICBWZWN0b3I8V2ViQ29yZTo6Q29udGVudFR5cGU+IG1fdHlwZXNS
ZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmlu
CmluZGV4IGNhNjYzMTRkZmJlNmQzMWJlMDk5NTJjNWYyODJmMTA2MThmZWJlYmEuLjJkN2YxZjJj
YWJjNTEzOTQ3NDk0ODUxNTNlZmFmN2NlOWM4ODc0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5
Lm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQog
CiBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXllclByb3h5IE5vdFJlZkNvdW50ZWQgewotICAg
IFByZXBhcmVGb3JQbGF5YmFjayhib29sIHByaXZhdGVNb2RlLCBlbnVtOnVpbnQ4X3QgV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNo
LCBib29sIHByZXBhcmVGb3JSZW5kZXJpbmcsIGZsb2F0IHZpZGVvQ29udGVudFNjYWxlKSAtPiAo
T3B0aW9uYWw8V2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQ+IGxheWVySG9zdGluZ0NvbnRl
eHRJZCkgQXN5bmMKKyAgICBQcmVwYXJlRm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgZW51
bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQgcHJlbG9hZCwgYm9v
bCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVyaW5nLCBmbG9hdCB2aWRlb0Nv
bnRlbnRTY2FsZSkgLT4gKE9wdGlvbmFsPFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEPiBp
bmxpbmVMYXllckhvc3RpbmdDb250ZXh0SWQsIE9wdGlvbmFsPFdlYktpdDo6TGF5ZXJIb3N0aW5n
Q29udGV4dElEPiBmdWxsc2NyZWVuTGF5ZXJIb3N0aW5nQ29udGV4dElkKSBBc3luYwogCiAgICAg
TG9hZChVUkwgdXJsLCBPcHRpb25hbDxXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4g
c2FuZGJveEV4dGVuc2lvbiwgV2ViQ29yZTo6Q29udGVudFR5cGUgY29udGVudFR5cGUsIFN0cmlu
ZyBrZXlTeXN0ZW0pIC0+IChzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3Vy
YXRpb24gcGxheWVyQ29uZmlndXJhdGlvbikgQXN5bmMKICAgICBDYW5jZWxMb2FkKCkKQEAgLTYx
LDYgKzYxLDExIEBAIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUGxheWVyUHJveHkgTm90UmVmQ291
bnRlZCB7CiAgICAgU2V0VmlkZW9JbmxpbmVTaXplRmVuY2VkKFdlYkNvcmU6OkludFNpemUgc2l6
ZSwgTWFjaFNlbmRSaWdodCBtYWNoU2VuZFJpZ2h0KQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9O
X01PREUpKQorICAgIEVudGVyRnVsbHNjcmVlbigpIC0+ICgpIEFzeW5jCisgICAgRXhpdEZ1bGxz
Y3JlZW4oKSAtPiAoKSBBc3luYworI2VuZGlmCisKICAgICAjIFBhaW50CiAgICAgIyBQYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvY29jb2EvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZU1lZGlhUGxheWVyUHJveHlDb2NvYS5t
bQppbmRleCAzNWZjNWRiYTA3ZGE2NzI5M2RjOWY4ODAxOTI1NzUxNDdhMmFiOTE2Li40YzI1NzAz
ZjExNTAwNzMyMGZkMzgxNzU0Yzg5ZjVkODBjMThiMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvY29jb2EvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9jb2NvYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5Q29jb2EubW0KQEAgLTM3LDExICszNywxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRWaWRlb0lubGluZVNpemVGZW5jZWQo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JiBt
YWNoU2VuZFJpZ2h0KQogewotICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0RmVuY2VQb3J0
KG1hY2hTZW5kUmlnaHQuc2VuZFJpZ2h0KCkpOworICAgIG1faW5saW5lTGF5ZXJIb3N0aW5nQ29u
dGV4dC0+c2V0RmVuY2VQb3J0KG1hY2hTZW5kUmlnaHQuc2VuZFJpZ2h0KCkpOwogICAgIC8vIFdl
IGRvIG5vdCB3YW50IGFuaW1hdGlvbnMgaGVyZQogICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsK
ICAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNdOwotICAgIFttX2xheWVy
SG9zdGluZ0NvbnRleHQtPnJvb3RMYXllcigpIHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgc2l6
ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKV07CisgICAgW21faW5saW5lTGF5ZXJIb3N0aW5nQ29u
dGV4dC0+cm9vdExheWVyKCkgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBzaXplLndpZHRoKCks
IHNpemUuaGVpZ2h0KCkpXTsKICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggNmY2M2IyMzBmNjI3ZDEyY2M2ZWMzZWY3ZGQ2
Y2U2YWQxMjk3YWE2YS4uYjhhZTNkM2Y0NGM2Nzc4ODk2YTQ0N2I1NTdhZjdiNjIyNzY1ZTMwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtOTksMTQgKzk5LDE5IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwcmVwYXJlRm9yUGxheWJhY2soYm9vbCBwcml2YXRl
TW9kZSwgTWVkaWFQbGF5ZXI6CiB7CiAgICAgYXV0byBzY2FsZSA9IG1fcGxheWVyLT5wbGF5ZXJD
b250ZW50c1NjYWxlKCk7CiAKLSAgICBjb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpQcmVwYXJlRm9yUGxheWJhY2socHJpdmF0
ZU1vZGUsIHByZWxvYWQsIHByZXNlcnZlc1BpdGNoLCBwcmVwYXJlLCBzY2FsZSksIFt3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpc10oYXV0byBjb250ZXh0SWQpIG11dGFibGUgewor
ICAgIGNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlh
UGxheWVyUHJveHk6OlByZXBhcmVGb3JQbGF5YmFjayhwcml2YXRlTW9kZSwgcHJlbG9hZCwgcHJl
c2VydmVzUGl0Y2gsIHByZXBhcmUsIHNjYWxlKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRo
aXMpLCB0aGlzXShhdXRvIGlubGluZUxheWVySG9zdGluZ0NvbnRleHRJZCwgYXV0byBmdWxsc2Ny
ZWVuTGF5ZXJIb3N0aW5nQ29udGV4dElkKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoIWNvbnRleHRJZCkKKyAgICAg
ICAgaWYgKCFpbmxpbmVMYXllckhvc3RpbmdDb250ZXh0SWQpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgbV92aWRlb0lubGluZUxheWVyID0gY3JlYXRlVmlkZW9MYXllclJlbW90ZSh0
aGlzLCBjb250ZXh0SWQudmFsdWUoKSk7CisgICAgICAgIG1fdmlkZW9JbmxpbmVMYXllciA9IGNy
ZWF0ZVZpZGVvTGF5ZXJSZW1vdGUodGhpcywgaW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dElkLnZh
bHVlKCkpOworCisgICAgICAgIGlmICghZnVsbHNjcmVlbkxheWVySG9zdGluZ0NvbnRleHRJZCkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyID0g
Y3JlYXRlVmlkZW9MYXllclJlbW90ZSh0aGlzLCBmdWxsc2NyZWVuTGF5ZXJIb3N0aW5nQ29udGV4
dElkLnZhbHVlKCkpOwogICAgIH0sIG1faWQpOwogfQogCkBAIC0zNDAsNiArMzQ1LDExIEBAIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5n
KCkgY29uc3QKICAgICByZXR1cm4gbV9jb25maWd1cmF0aW9uLnN1cHBvcnRzQWNjZWxlcmF0ZWRS
ZW5kZXJpbmc7CiB9CiAKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphY2NlbGVyYXRl
ZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCgpCit7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OkFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFu
Z2VkKG1fcGxheWVyLT5zdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpLCBtX2lkKTsKK30K
KwogYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhblBsYXlUb1dpcmVsZXNzUGxheWJh
Y2tUYXJnZXQoKSBjb25zdAogewogICAgIHJldHVybiBtX2NvbmZpZ3VyYXRpb24uY2FuUGxheVRv
V2lyZWxlc3NQbGF5YmFja1RhcmdldDsKQEAgLTM4MCwyMSArMzkwLDYgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZE1haW50YWluQXNwZWN0UmF0aW8oYm9vbCBtYWlu
dGFpblJhdGlvKQogICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBs
YXllclByb3h5OjpTZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKG1haW50YWluUmF0aW8pLCBt
X2lkKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNj
cmVlbkZyYW1lKFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0KQotewotICAgIGNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpTZXRWaWRlb0Z1bGxzY3JlZW5G
cmFtZShyZWN0KSwgbV9pZCk7Ci19Ci0KLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpz
ZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVv
R3Jhdml0eSBncmF2aXR5KQotewotICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVBsYXllclByb3h5OjpTZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KGdyYXZpdHkpLCBt
X2lkKTsKLX0KLQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFjY2VsZXJhdGVkUmVu
ZGVyaW5nU3RhdGVDaGFuZ2VkKCkKLXsKLSAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6QWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQo
bV9wbGF5ZXItPnN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSksIG1faWQpOwotfQotCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2hvdWxkRGlzYWJsZVNsZWVwKGJvb2wg
ZGlzYWJsZSkKIHsKICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6U2V0U2hvdWxkRGlzYWJsZVNsZWVwKGRpc2FibGUpLCBtX2lkKTsKQEAgLTU5
Miw5ICs1ODcsMjEgQEAgUGxhdGZvcm1MYXllciogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpw
bGF0Zm9ybUxheWVyKCkgY29uc3QKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQ
TEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCi12b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1M
YXllciosIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKQorCitSZXRhaW5QdHI8UGxhdGZvcm1MYXll
cj4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigp
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5M
YXllcjsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIXZpZGVvRnVsbHNj
cmVlbkxheWVyKSB7CisgICAgICAgIGNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OkV4aXRGdWxsc2NyZWVuKCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBtX2lkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAg
ICAgCisgICAgQVNTRVJUKHZpZGVvRnVsbHNjcmVlbkxheWVyID09IG1fdmlkZW9GdWxsc2NyZWVu
TGF5ZXIuZ2V0KCkpOworICAgIGNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OkVudGVyRnVsbHNjcmVlbigpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgbV9pZCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSgpCkBAIC02MDIsNiArNjA5LDE2
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5J
bmxpbmVJbWFnZSgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKFdlYkNvcmU6OkZsb2F0UmVj
dCByZWN0KQoreworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBs
YXllclByb3h5OjpTZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShyZWN0KSwgbV9pZCk7Cit9CisKK3Zv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eSBncmF2aXR5KQoreworICAgIGNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpTZXRWaWRl
b0Z1bGxzY3JlZW5HcmF2aXR5KGdyYXZpdHkpLCBtX2lkKTsKK30KKwogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbk1vZGUoTWVkaWFQbGF5ZXI6OlZpZGVv
RnVsbHNjcmVlbk1vZGUpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZS5oCmluZGV4IDEzMmYzMGFiMjliNmU1MDlmMTEzOTQ5MjU4MGE2ZTM2NzFjYzc5MDku
LjI4NjU4YWYxYjAyOWE2NGI0MDRlZThkNDJkNzNkNzE3MzBmMzlhZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuaApAQCAtMTc0LDYgKzE3NCw3IEBAIHByaXZhdGU6CiAgICAgUGxhdGZvcm1M
YXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RF
KSkKKyAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gY3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5
ZXIoKSBmaW5hbDsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5
ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CiAg
ICAgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSgpIGZpbmFsOwogICAgIHZv
aWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoV2ViQ29yZTo6RmxvYXRSZWN0KSBmaW5hbDsKQEAg
LTM2MSw2ICszNjIsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyKiBtX3Bs
YXllciB7IG51bGxwdHIgfTsKICAgICBSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291
cmNlTG9hZGVyPiBtX21lZGlhUmVzb3VyY2VMb2FkZXI7CiAgICAgUmV0YWluUHRyPFBsYXRmb3Jt
TGF5ZXI+IG1fdmlkZW9JbmxpbmVMYXllcjsKKyAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4g
bV92aWRlb0Z1bGxzY3JlZW5MYXllcjsKICAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXImIG1f
bWFuYWdlcjsKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50
aWZpZXIgbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyOwogICAgIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXIgbV9pZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggNjg0ZWJhYmFkMzZjZGYz
OTEwZDdiNjJjYWNiMTY0OGE0YjliMjJmNC4uZjJhNzBmNmNkNTE1MTJjZWQ3YTJkZTg5YmJlNDk1
ZjQ2ZDZlZjg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTI3MSwxMCArMjcxLDExIEBAIHZvaWQg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1l
bnQoSFRNTFZpZGVvRWxlbWVuCiAgICAgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlID0gdmlk
ZW9FbGVtZW50LndlYmtpdFN1cHBvcnRzUHJlc2VudGF0aW9uTW9kZShIVE1MVmlkZW9FbGVtZW50
OjpWaWRlb1ByZXNlbnRhdGlvbk1vZGU6OlBpY3R1cmVJblBpY3R1cmUpOwogCiAgICAgaWYgKCFp
bnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+cm9vdExheWVyKCkpIHsKLSAgICAgICAg
UGxhdGZvcm1MYXllciogdmlkZW9MYXllciA9IFtDQUxheWVyIGxheWVyXTsKKyAgICAgICAgUmV0
YWluUHRyPENBTGF5ZXI+IHZpZGVvTGF5ZXIgPSBtb2RlbC0+Y3JlYXRlVmlkZW9GdWxsc2NyZWVu
TGF5ZXIoKTsKICAgICAgICAgW3ZpZGVvTGF5ZXIgc2V0RGVsZWdhdGU6W1dlYkFjdGlvbkRpc2Fi
bGluZ0NBTGF5ZXJEZWxlZ2F0ZSBzaGFyZWRdXTsKLQorI2lmbmRlZiBOREVCVUcKICAgICAgICAg
W3ZpZGVvTGF5ZXIgc2V0TmFtZTpAIldlYiB2aWRlbyBmdWxsc2NyZWVuIG1hbmFnZXIgbGF5ZXIi
XTsKKyNlbmRpZgogICAgICAgICBbdmlkZW9MYXllciBzZXRQb3NpdGlvbjpDR1BvaW50TWFrZSgw
LCAwKV07CiAgICAgICAgIFt2aWRlb0xheWVyIHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRDR0Nv
bG9yKFdlYkNvcmU6OkNvbG9yOjp0cmFuc3BhcmVudCldOwogCkBAIC0yODMsNyArMjg0LDcgQEAg
dm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVv
RWxlbWVudChIVE1MVmlkZW9FbGVtZW4KICAgICAgICAgZmxvYXQgaG9zdGluZ1NjYWxlRmFjdG9y
ID0gbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgICAgICBbdmlkZW9MYXllciBzZXRU
cmFuc2Zvcm06Q0FUcmFuc2Zvcm0zRE1ha2VTY2FsZShob3N0aW5nU2NhbGVGYWN0b3IsIGhvc3Rp
bmdTY2FsZUZhY3RvciwgMSldOwogCi0gICAgICAgIGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29u
dGV4dCgpLT5zZXRSb290TGF5ZXIodmlkZW9MYXllcik7CisgICAgICAgIGludGVyZmFjZS0+bGF5
ZXJIb3N0aW5nQ29udGV4dCgpLT5zZXRSb290TGF5ZXIodmlkZW9MYXllci5nZXQoKSk7CiAgICAg
fQogCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OlNldHVwRnVsbHNjcmVlbldpdGhJRChjb250ZXh0SWQsIGludGVyZmFjZS0+bGF5ZXJIb3N0
aW5nQ29udGV4dCgpLT5jb250ZXh0SUQoKSwgdmlkZW9SZWN0LCBtX3BhZ2UtPmRldmljZVNjYWxl
RmFjdG9yKCksIGludGVyZmFjZS0+ZnVsbHNjcmVlbk1vZGUoKSwgYWxsb3dzUGljdHVyZUluUGlj
dHVyZSwgc3RhbmRieSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392028</attachid>
            <date>2020-02-28 15:59:24 -0800</date>
            <delta_ts>2020-02-28 16:15:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208252-20200228155923.patch</filename>
            <type>text/plain</type>
            <size>47448</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjA0MDE3ZmMyYjAwNTNl
OGI0MmQzMjQwMGY2NTJjZTBiM2M2YzljNi4uN2I5MTE5MmVjZDNhMWQ1NmY2NDQwNTQ5ZDQxOGU0
NmIzNDdkMjRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIwLTAyLTI4ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBwcm9j
ZXNzXSBJbXBsZW1lbnQgdGhlIHZpZGVvIGZ1bGxzY3JlZW4gYW5kIFBpY3R1cmUtaW4tUGljdHVy
ZSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDgyNTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMg
dGhlIGNyZWF0aW9uIG9mIHRoZSBDQUxheWVyIGZvciB2aWRlbyBmdWxsc2NyZWVuIGFuZCBwaWN0
dXJlLWluLXBpY3R1cmUgZnJvbQorICAgICAgICBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIHRvIE1l
ZGlhUGxheWVyUHJpdmF0ZSBjbGFzc2VzLiBXaXRoIHRoaXMgY2hhbmdlLCB3ZSBjYW4gc3VwcG9y
dAorICAgICAgICB2aWRlbyBmdWxsc2NyZWVuIGFuZCBwaWN0dXJlLWluLXBpY3R1cmUgbm8gbWF0
dGVyIHRoZSAiTWVkaWEgaW4gR1BVIHByb2Nlc3MiCisgICAgICAgIGZlYXR1cmUgaXMgZW5hYmxl
ZCBvciBub3QuIFRoZSBmdW5jdGlvbiBjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpIGlzIGFk
ZGVkIHRvCisgICAgICAgIE1lZGlhUGxheWVyIGFuZCBNZWRpYVBsYXllclByaXZhdGUgZm9yIHRo
YXQgcHVycG9zZS4KKworICAgICAgICBUaGVyZSBhcmUgZHVwbGljYXRlZCBjb2RlIHNuaXBwZXRz
IHRvIGNyZWF0ZSBhIENBTGF5ZXIgaW4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
QywKKyAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLCBhbmQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLgorICAgICAgICBUaGF0IHdpbGwgYmUg
Zml4ZWQgaW4gYSBmdXR1cmUgcmVmYWN0b3JpbmcgKHdlYmtpdC5vcmcvYi8yMDgzNDIpLgorCisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKiBo
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVJbnRlcmZhY2U6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0
ZVZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKToKKwogMjAyMC0wMi0yNyAgUm9iIEJ1aXMg
IDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEFkZCByZWZlcnJlcnBvbGljeSBhdHRyaWJ1
dGUgc3VwcG9ydCBmb3IgaW1hZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGYzMWVlYjY3MWQ4YjZjZTJlN2FkMTQw
Zjc1NDI1YmU3ZDdjZmZkZWYuLmM4NjJkMTYxZTY2NjE3YzEyMzI5NTk3ZGI3OGJkZGQ1YWQ1MWE0
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMjAtMDItMjggIFBlbmcgTGl1ICA8cGVu
Zy5saXU2QGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWEgaW4gR1BVIHByb2Nlc3NdIEltcGxl
bWVudCB0aGUgdmlkZW8gZnVsbHNjcmVlbiBhbmQgUGljdHVyZS1pbi1QaWN0dXJlIHN1cHBvcnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODI1Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBSZW1v
dGVNZWRpYVBsYXllclByb3h5IGluIHRoZSBHUFUgcHJvY2VzcyBjcmVhdGVzIGEgTGF5ZXJIb3N0
aW5nQ29udGV4dCBhbmQKKyAgICAgICAgc2hhcmUgdGhlIGNvbnRleHQgSUQgd2l0aCB0aGUgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlIGluIHRoZSBXZWIgcHJvY2VzcywKKyAgICAgICAgd2hpY2gg
aW4gdHVybiBjcmVhdGVzIGEgcmVtb3RlIGxheWVyIHVzZWQgYnkgdGhlIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIuCisKKyAgICAgICAgVGhvc2UgZnVuY3Rpb25zIHJlZ2FyZGluZyB2aWRlbyBmdWxs
c2NyZWVuIGFuZCBwaWN0dXJlLWluLXBpY3R1cmUgaGF2ZSBiZWVuCisgICAgICAgIG1vdmVkIHRv
IFJlbW90ZU1lZGlhUGxheWVyUHJveHkuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5Ojp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
OjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6
OnNldFZpZGVvRnVsbHNjcmVlbk1vZGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c2V0Vm9sdW1lKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnNldEJ1ZmZlcmluZ1BvbGlj
eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5Ojp2aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5Q2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oOgorCisgICAg
ICAgIFtHUFUgcHJvY2Vzc10KKyAgICAgICAgQWRkIHR3byBhc3luY2hyb25vdXMgSVBDIG1lc3Nh
Z2VzIChFbnRlckZ1bGxzY3JlZW4gYW5kIEV4aXRGdWxsc2NyZWVuKSBpbiBSZW1vdGVNZWRpYVBs
YXllclByb3h5CisgICAgICAgIGFuZCByZXBsYWNlIHRoZSBtZXNzYWdlIFNldFZpZGVvRnVsbHNj
cmVlbkZyYW1lIHdpdGggU2V0VmlkZW9GdWxsc2NyZWVuRnJhbWVGZW5jZWQuCisgICAgICAgIENy
ZWF0ZSB0aGUgQ0FMYXllciBmb3IgdGhlIHZpZGVvIGZ1bGxzY3JlZW4gYW5kIHBpY3R1cmUtaW4t
cGljdHVyZSBmZWF0dXJlcy4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5
OjpwcmVwYXJlRm9yUGxheWJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
clByb3h5OjpleGl0RnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxh
eWVyUHJveHk6Om1lZGlhUGxheWVyRmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2Rl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNldFZp
ZGVvRnVsbHNjcmVlbkZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9jb2NvYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNldFZpZGVvSW5saW5lU2l6ZUZlbmNlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmVudGVyRnVsbHNjcmVlbik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNldFZpZGVvRnVsbHNj
cmVlbkZyYW1lRmVuY2VkKToKKworICAgICAgICAqIFdlYktpdC9Tb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgIFtX
ZWIgcHJvY2Vzc10KKyAgICAgICAgQ3JlYXRlIGEgaG9zdGluZyBsYXllciBpbiB0aGUgV2ViIHBy
b2Nlc3MgY29ycmVzcG9uZGluZyB0byB0aGUgQ0FMYXllciBpbiB0aGUKKyAgICAgICAgR1BVIHBy
b2Nlc3MgZm9yIHZpZGVvIGZ1bGxzY3JlZW4gYW5kIHBpY3R1cmUtaW4tcGljdHVyZS4KKyAgICAg
ICAgU3luY2hyb25pemUgdGhlIHByb3BlcnRpZXMgb2YgdGhlIGxheWVycyBjcm9zcyBwcm9jZXNz
IGJvdW5kYXJ5IHdpdGggTWFjaFNlbmRSaWdodC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OnByZXBhcmVGb3JQbGF5YmFjayk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNo
YW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZp
ZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZUZlbmNlZCk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2Ny
ZWVuRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL2Nv
Y29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKQorICAg
ICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVl
bkZyYW1lKQorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL1ZpZGVvTGF5ZXJS
ZW1vdGVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlVmlkZW9MYXllclJlbW90ZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgor
ICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnRlclZpZGVvRnVsbHNj
cmVlbkZvclZpZGVvRWxlbWVudCk6CisKIDIwMjAtMDItMjcgIFRpbSBNb25yb2UgIDx0aW1tb25A
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBHUFUgUHJvY2VzcyBzdXBwb3J0IGZvciBhY2Nlc3NM
b2cgZXQgYWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA5
NjljNTBkODMwNjE4YTg3NDk1YjVkZDEyOTAzZGM2M2VhNDhjNTcwLi5lNmY2MmEzMTI3ZGE5MzAy
MTIyN2QxZDBlMmFlMDEyNDFmMzIzYjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKQEAgLTYyMzksNiArNjIzOSwxMSBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6
OmlzVmlkZW9MYXllcklubGluZSgpCiAgICAgcmV0dXJuICFtX3ZpZGVvRnVsbHNjcmVlbkxheWVy
OwogfTsKIAorUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0
ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkKK3sKKyAgICByZXR1cm4gbV9wbGF5ZXItPmNyZWF0ZVZp
ZGVvRnVsbHNjcmVlbkxheWVyKCk7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgV1RGOjpGdW5j
dGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgSU5GT19MT0coTE9HSURF
TlRJRklFUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDVkZTBk
MTExODUxYWM3ZmE4YzNlOTVkYjZlZWQ5YWYzMWNmNTE1OGQuLmM3Y2M3ZjdjNmIyZmY2N2FjODdi
MDY1MzM0NmYxZTczODI1NmE3ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCkBAIC0xNzksNiArMTc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJlcGFyZWRUb1Jl
dHVyblZpZGVvTGF5ZXJUb0lubGluZShib29sKTsKICAgICB2b2lkIHdhaXRGb3JQcmVwYXJlZEZv
cklubGluZVRoZW4oV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIgPSBb
XSB7IH0pOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVO
QUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5
ZXI+IGNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOwogI2lmZGVmIF9fT0JKQ19fCiAg
ICAgUGxhdGZvcm1MYXllciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBjb25zdCB7IHJldHVybiBt
X3ZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQuaAppbmRleCAwZTlhNDU0YjRkODhhY2UzNTU0MjI2NWJmYjAwZjQxNjcyMjcxMjRlLi4zYjYw
YjMyZmExZmU4ZTNhYTAxODk4ZjllYTFjYzc2ODEyYTg4ZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50LmgKQEAgLTU1LDYgKzU1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgflZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50KCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVudCopOwogICAg
IEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9F
bGVtZW50LmdldCgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPFBsYXRmb3JtTGF5
ZXI+IGNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgd2lsbEV4aXRGdWxsc2NyZWVuKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3YWl0
Rm9yUHJlcGFyZWRGb3JJbmxpbmVUaGVuKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyID0gW10geyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KaW5k
ZXggZWI3ZjI2NzdkMGI1ZWZiNDQxZjY5YzY5YmI5MzY4ZDE4MGM0NDIzOS4uYzIxMDFkMTZlZjBm
ZjEzZDJmNmExOGQzZjIyMzRkOWY4YjU3YzM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQubW0KQEAgLTExMCw2ICsxMTAsMTEgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudDo6d2lsbEV4aXRGdWxsc2NyZWVuKCkKICAgICAgICAgbV92aWRlb0VsZW1lbnQt
PndpbGxFeGl0RnVsbHNjcmVlbigpOwogfQogCitSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVy
KCkKK3sKKyAgICByZXR1cm4gbV92aWRlb0VsZW1lbnQtPmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxh
eWVyKCk7Cit9CisKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZp
ZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqIHZpZGVvTGF5ZXIsIFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChtX3ZpZGVvRnVsbHNj
cmVlbkxheWVyID09IHZpZGVvTGF5ZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA1N2RmY2JmNGJjN2M0ODg0NGQzODFjYjM1
ZWNjNjQzYzFhYWI0YjkyLi5iODJmZWVmZmYxYzMzZGE0ZGNmMmU2NTYwYTYxZTlkMDM3YTE0MTNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwCkBAIC03NDQsNiArNzQ0LDExIEBAIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyOjpwbGF0
Zm9ybUxheWVyKCkgY29uc3QKICAgICAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExB
VEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogCitSZXRhaW5Q
dHI8UGxhdGZvcm1MYXllcj4gTWVkaWFQbGF5ZXI6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVy
KCkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5jcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigp
OworfQorCiB2b2lkIE1lZGlhUGxheWVyOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9y
bUxheWVyKiBsYXllciwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgbV9wcml2YXRlLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihsYXllciwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmgKaW5kZXggN2U2Y2I4YTM5MGRmN2ZlMWE3YWFlMDE3MzlkYzk0OGY3
NzY2MjFlZS4uM2EzNjVlMjQ3NTI2MGI3NzQ1NjMwZjQ1Y2M2NDg1MzhjZDcxNWUzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0zMDcs
NiArMzA3LDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdDsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVO
QUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5
ZXI+IGNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCk7CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIgPSBbXSB7IH0pOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUo
RmxvYXRSZWN0KTsKICAgICB2b2lkIHVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
clByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
UHJpdmF0ZS5oCmluZGV4IDlmN2Y2ZTZiMDJkM2JlYmUwOTBlYmNjMzJhNGIwZGNhMWNjMTc1YTgu
LjlkOTJlY2RiM2E2ZjgwOWNlYmM5YmMzZmVkMzdiMWJkNzBlOWNlOGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBA
IC02Miw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRm
b3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01P
REUpKQorICAgIHZpcnR1YWwgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IGNyZWF0ZVZpZGVvRnVs
bHNjcmVlbkxheWVyKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRW
aWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoKTsgfQogICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSgpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5oCmluZGV4IGFmNmM4MDRmNmNmOGU2MDhkODdkODM5ZmQ4MDZmMDg5MDNkMjNmYjYu
LjM5OTkwMGQ2OTkwZTA0MTkwZGNlY2Y2ZDhlYmZjZGU4OGNkMzU5ZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLmgKQEAgLTE3Nyw2ICsxNzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFpbnQoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwYWlu
dEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
KSBvdmVycmlkZTsKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IGNyZWF0ZVZpZGVvRnVsbHNjcmVl
bkxheWVyKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0
Zm9ybUxheWVyKiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlk
ZTsKICAgICB2b2lkIHVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKCkgZmluYWw7CiAg
ICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KaW5kZXggZjJhODZjYWJmNjhjODg2ODFjYzJkZmQxZWViZjViYmM5
ZDRkZmFiYi4uNWQwMTQxM2ZkZmIzNDBjYWJmN2E4YmY4Nzg0Y2QyZmNiMzQ1ZDlkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tCkBAIC0xMDgzLDYgKzEwODMsMTEgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFn
ZSgpCiAgICAgbV92aWRlb0xheWVyTWFuYWdlci0+dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5l
SW1hZ2UobV9sYXN0SW1hZ2UpOwogfQogCitSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIo
KQoreworICAgIHJldHVybiBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOworfQorCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVl
bkxheWVyKFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyLCBGdW5jdGlvbjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdXBkYXRlTGFzdEltYWdlKFVwZGF0ZVR5
cGU6OlVwZGF0ZVN5bmNocm9ub3VzbHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCA1
ZGUzMzZjYjY0Yjk5NDU3YmZmYmU2NzJmMWE1MmMzZjYyNzc4OGUzLi5kOGY5YzI0NGI2YzFlMWYz
OThjOTk1NWU3NmU1ZDM5YmZhYzZjZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAt
MTA5LDYgKzEwOSw3IEBAIHB1YmxpYzoKICAgICBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciog
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuZ2V0KCk7IH0KICAgICBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24qIGRl
Y29tcHJlc3Npb25TZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvbXByZXNzaW9uU2Vzc2lv
bi5nZXQoKTsgfQogCisgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IGNyZWF0ZVZpZGVvRnVs
bHNjcmVlbkxheWVyKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXll
cihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0
KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDRiZDMzODQ3MzA2
Mjc3ODgwODkwYzg4MTkxYWM3YjlhZjk2MzRkMWMuLmY1NDkxMGMxOTAyY2I3NGQzZGQzMDBkMmNi
NTEzYWRlMjE2YjBiZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTExNTgsNiAr
MTE1OCwxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y2hh
cmFjdGVyaXN0aWNzQ2hhbmdlZCgpCiAgICAgbV9wbGF5ZXItPmNoYXJhY3RlcmlzdGljQ2hhbmdl
ZCgpOwogfQogCitSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpCit7CisgICAgcmV0
dXJuIGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7Cit9CisKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0
Zm9ybUxheWVyICp2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdXBkYXRlTGFzdEltYWdlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQy5oCmluZGV4IDkyYzA4MjE2NTQ5OGNkZWEyN2MxMzdlOTU2ZmNhM2Y0Nzk4OWY2
ODQuLjNmYzk0OGMyN2RjMTMwMTIwMGY1MzlmYmYxY2NkMTNjYmI1OWMwNTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQy5oCkBAIC0xOTcsNiArMTk3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNh
bXBsZUJ1ZmZlclVwZGF0ZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmLCBNZWRpYVNhbXBsZSYp
IG92ZXJyaWRlOwogICAgIHZvaWQgcmVhZHlTdGF0ZUNoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUmKSBvdmVycmlkZTsKIAorICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBjcmVhdGVW
aWRlb0Z1bGxzY3JlZW5MYXllcigpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZs
b2F0UmVjdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCAyZDBi
MzFhMGE4MTEyZDM3NDNiOWVhMmM4NDYwMGY5Zjk4MzkzYjU2Li5iNDY4Y2RhZWFkNzcxYmM4MDQz
ZTA0NmEwMjA2NmUyYjc0NTAwYjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC03
NzMsNiArNzczLDExIEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQog
CitSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpCit7CisgICAgcmV0dXJuIGFkb3B0
TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVy
KiB2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgdXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDVhNDI4OWU4NmIyMmE3OTM1ODg3NjkwYmFmNzE3MmU3
YzJkZDQ4Y2UuLjkxNDg5MGZmNjRiYTMyMzU4ZjZkMGJiYmM2NWRlNTRjNTBhZmNhNjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcApAQCAtMTkyLDQ4ICsxOTIsNiBAQCB2b2lkIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpzdXBwb3J0c0tleVN5c3RlbShNZWRpYVBsYXll
ckVudW1zOjpNZWRpYUVuZwogICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CiB9CiAKLXZv
aWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklu
bGluZUltYWdlKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgcGxheWVySWRlbnRp
ZmllcikKLXsKLSAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX3Byb3hpZXMuZ2V0KHBsYXllcklkZW50
aWZpZXIpKQotICAgICAgICBwbGF5ZXItPnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdl
KCk7Ci19Ci0KLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnNldFZpZGVvRnVs
bHNjcmVlbkZyYW1lKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgcGxheWVySWRl
bnRpZmllciwgRmxvYXRSZWN0IGZyYW1lKQotewotICAgIGlmIChhdXRvIHBsYXllciA9IG1fcHJv
eGllcy5nZXQocGxheWVySWRlbnRpZmllcikpCi0gICAgICAgIHBsYXllci0+c2V0VmlkZW9GdWxs
c2NyZWVuRnJhbWUoZnJhbWUpOwotfQotCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5OjpzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIgcGxheWVySWRlbnRpZmllciwgTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSBncmF2
aXR5KQotewotICAgIGlmIChhdXRvIHBsYXllciA9IG1fcHJveGllcy5nZXQocGxheWVySWRlbnRp
ZmllcikpCi0gICAgICAgIHBsYXllci0+c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShncmF2aXR5
KTsKLX0KLQotdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c2V0VmlkZW9GdWxs
c2NyZWVuTW9kZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHBsYXllcklkZW50
aWZpZXIsIE1lZGlhUGxheWVyOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCi17Ci0gICAgaWYg
KGF1dG8gcGxheWVyID0gbV9wcm94aWVzLmdldChwbGF5ZXJJZGVudGlmaWVyKSkKLSAgICAgICAg
cGxheWVyLT5zZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKG1vZGUpOwotfQotCi12b2lkIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OjpzZXRWb2x1bWUoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciBwbGF5ZXJJZGVudGlmaWVyLCBkb3VibGUgdm9sdW1lKQotewotICAgIGlmIChh
dXRvIHBsYXllciA9IG1fcHJveGllcy5nZXQocGxheWVySWRlbnRpZmllcikpCi0gICAgICAgIHBs
YXllci0+c2V0Vm9sdW1lKHZvbHVtZSk7Ci19Ci0KLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHk6OnNldEJ1ZmZlcmluZ1BvbGljeShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyIHBsYXllcklkZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpCdWZmZXJpbmdQ
b2xpY3kgcG9saWN5KQotewotICAgIGlmIChhdXRvIHBsYXllciA9IG1fcHJveGllcy5nZXQocGxh
eWVySWRlbnRpZmllcikpCi0gICAgICAgIHBsYXllci0+c2V0QnVmZmVyaW5nUG9saWN5KHBvbGlj
eSk7Ci19Ci0KLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnZpZGVvRnVsbHNj
cmVlblN0YW5kYnlDaGFuZ2VkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgcGxh
eWVySWRlbnRpZmllcikKLXsKLSAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX3Byb3hpZXMuZ2V0KHBs
YXllcklkZW50aWZpZXIpKQotICAgICAgICBwbGF5ZXItPnZpZGVvRnVsbHNjcmVlblN0YW5kYnlD
aGFuZ2VkKCk7Ci19Ci0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6YWNjZXNzTG9nKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIgcGxheWVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaAppbmRl
eCBmMzg5NzFjN2I4MzdhOTg1MDU3ODJmZGFjMzA4MTVhOWMzMTQwNzFiLi4yOWRkYzIwNDUwMjU3
YjQ2ZDkxNjAzMTBkNjgzNjU0OGVjYmYxOGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHku
aApAQCAtODQsMTYgKzg0LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZUZv
ck9yaWdpbnMoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmJiwgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik7
CiAgICAgdm9pZCBzdXBwb3J0c0tleVN5c3RlbShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpN
ZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYmLCBjb25zdCBTdHJpbmcmJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKLSAgICB2b2lkIHVwZGF0ZVZpZGVvRnVs
bHNjcmVlbklubGluZUltYWdlKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpOwot
ICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciwgV2ViQ29yZTo6RmxvYXRSZWN0KTsKLSAgICB2b2lkIHNldFZpZGVvRnVsbHNj
cmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgV2ViQ29yZTo6
TWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSk7Ci0gICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5N
b2RlKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKLQotICAgIHZvaWQgdmlkZW9GdWxsc2NyZWVuU3Rh
bmRieUNoYW5nZWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcik7Ci0KLSAgICB2
b2lkIHNldFZvbHVtZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBkb3VibGUp
OwotICAgIHZvaWQgc2V0QnVmZmVyaW5nUG9saWN5KE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3kpOwotCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGFjY2Vzc0xvZyhNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpOwog
ICAgIHZvaWQgZXJyb3JMb2coTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCA4
OTFiMWQ3NTIzNmViZGEwYjM3NzA2NzU5YWZmYzc3NjM2ZTYzZjc1Li5jYzI2MzYyYjE2ZTRlYjMy
NzhhZDk1Njg1Yjc5OGE4Y2IxMzhmOGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC0xMDcsMTUg
KzEwNywxOCBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmxvYWQoVVJMJiYgdXJsLCBP
cHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JgogICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUoY29uZmlndXJhdGlvbikpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJv
eHk6OnByZXBhcmVGb3JQbGF5YmFjayhib29sIHByaXZhdGVNb2RlLCBXZWJDb3JlOjpNZWRpYVBs
YXllckVudW1zOjpQcmVsb2FkIHByZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJl
cGFyZUZvclJlbmRlcmluZywgZmxvYXQgdmlkZW9Db250ZW50U2NhbGUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8TGF5ZXJIb3N0aW5nQ29udGV4dElEPiYmIGNvbnRleHRJZCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnByZXBhcmVG
b3JQbGF5YmFjayhib29sIHByaXZhdGVNb2RlLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQ
cmVsb2FkIHByZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRl
cmluZywgZmxvYXQgdmlkZW9Db250ZW50U2NhbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8TGF5ZXJIb3N0aW5nQ29udGV4dElEPiYmIGlubGluZUxheWVySG9zdGluZ0NvbnRleHRJ
ZCwgT3B0aW9uYWw8TGF5ZXJIb3N0aW5nQ29udGV4dElEPiYmIGZ1bGxzY3JlZW5MYXllckhvc3Rp
bmdDb250ZXh0SWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fcGxheWVyLT5zZXRQ
cml2YXRlQnJvd3NpbmdNb2RlKHByaXZhdGVNb2RlKTsKICAgICBtX3BsYXllci0+c2V0UHJlbG9h
ZChwcmVsb2FkKTsKICAgICBtX3BsYXllci0+c2V0UHJlc2VydmVzUGl0Y2gocHJlc2VydmVzUGl0
Y2gpOwogICAgIG1fcGxheWVyLT5wcmVwYXJlRm9yUmVuZGVyaW5nKCk7CiAgICAgbV92aWRlb0Nv
bnRlbnRTY2FsZSA9IHZpZGVvQ29udGVudFNjYWxlOwotICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4
dCA9IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3Mo
KTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihtX2xheWVySG9zdGluZ0NvbnRleHQtPmNvbnRleHRJ
RCgpKTsKKyAgICBpZiAoIW1faW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dCkKKyAgICAgICAgbV9p
bmxpbmVMYXllckhvc3RpbmdDb250ZXh0ID0gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9y
RXh0ZXJuYWxIb3N0aW5nUHJvY2VzcygpOworICAgIGlmICghbV9mdWxsc2NyZWVuTGF5ZXJIb3N0
aW5nQ29udGV4dCkKKyAgICAgICAgbV9mdWxsc2NyZWVuTGF5ZXJIb3N0aW5nQ29udGV4dCA9IExh
eWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoKTsKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcihtX2lubGluZUxheWVySG9zdGluZ0NvbnRleHQtPmNvbnRleHRJ
RCgpLCBtX2Z1bGxzY3JlZW5MYXllckhvc3RpbmdDb250ZXh0LT5jb250ZXh0SUQoKSk7CiB9CiAK
IHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6Y2FuY2VsTG9hZCgpCkBAIC0xOTQsOSArMTk3
LDEwIEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0U2hvdWxkTWFpbnRhaW5Bc3Bl
Y3RSYXRpbyhib29sIG1haW50YWluUmF0aW8pCiAgICAgbV9wbGF5ZXItPnNldFNob3VsZE1haW50
YWluQXNwZWN0UmF0aW8obWFpbnRhaW5SYXRpbyk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3Qp
Cit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmV4aXRGdWxsc2NyZWVuKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3BsYXllci0+c2V0
VmlkZW9GdWxsc2NyZWVuRnJhbWUocmVjdCk7CisgICAgbV9wbGF5ZXItPnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKG51bGxwdHIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBtX2Z1
bGxzY3JlZW5MYXllckhvc3RpbmdDb250ZXh0LT5zZXRSb290TGF5ZXIobnVsbHB0cik7CiB9CiAK
IHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShX
ZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHkgZ3Jhdml0eSkKQEAgLTUwMSwx
MyArNTA1LDEzIEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJFbmdp
bmVVcGRhdGVkKCkKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJGaXJz
dFZpZGVvRnJhbWVBdmFpbGFibGUoKQogewogICAgIC8vIEluaXRpYWxseSB0aGUgc2l6ZSBvZiB0
aGUgcGxhdGZvcm1MYXllciB3aWxsIGJlIDB4MCBiZWNhdXNlIHdlIGRvIG5vdCBwcm92aWRlIG1l
ZGlhUGxheWVyQ29udGVudEJveFJlY3QoKSBpbiB0aGlzIGNsYXNzLgotICAgIG1fbGF5ZXJIb3N0
aW5nQ29udGV4dC0+c2V0Um9vdExheWVyKG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpOworICAg
IG1faW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Um9vdExheWVyKG1fcGxheWVyLT5wbGF0
Zm9ybUxheWVyKCkpOwogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Rmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKCksIG1f
aWQpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyUmVuZGVy
aW5nTW9kZUNoYW5nZWQoKQogewotICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Um9vdExh
eWVyKG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpOworICAgIG1faW5saW5lTGF5ZXJIb3N0aW5n
Q29udGV4dC0+c2V0Um9vdExheWVyKG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpOwogfQogCiB2
b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyQWN0aXZlU291cmNlQnVmZmVy
c0NoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5LmgKaW5kZXggZmIyNGQxNzIzMGM0Njg5NmE5Mzg2YjBmOTJm
NmE4MmI0YzBjYTVkMy4uMjljYzAxZWY1YTA1N2VhZjZmYTFiYWY3MGYxYzdkNDQ2MTZlMjk4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5oCkBAIC05Miw3ICs5Miw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0
Q29uZmlndXJhdGlvbihSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24mKTsKIAotICAgIHZv
aWQgcHJlcGFyZUZvclBsYXliYWNrKGJvb2wgcHJpdmF0ZU1vZGUsIFdlYkNvcmU6Ok1lZGlhUGxh
eWVyRW51bXM6OlByZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJl
bmRlcmluZywgZmxvYXQgdmlkZW9Db250ZW50U2NhbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8TGF5ZXJIb3N0aW5nQ29udGV4dElEPiYmKT4mJik7CisgICAgdm9pZCBwcmVwYXJl
Rm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6
UHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVyaW5nLCBm
bG9hdCB2aWRlb0NvbnRlbnRTY2FsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxM
YXllckhvc3RpbmdDb250ZXh0SUQ+JiYgaW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dElkLCBPcHRp
b25hbDxMYXllckhvc3RpbmdDb250ZXh0SUQ+JiYgZnVsbHNjcmVlbkxheWVySG9zdGluZ0NvbnRl
eHRJZCk+JiYpOwogICAgIHZvaWQgcHJlcGFyZUZvclJlbmRlcmluZygpOwogCiAgICAgdm9pZCBs
b2FkKFVSTCYmLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiYsIGNvbnN0IFdl
YkNvcmU6OkNvbnRlbnRUeXBlJiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24mJik+JiYpOwpAQCAtMTE1LDcgKzExNSw5
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0VmlzaWJsZShib29sKTsKICAgICB2b2lkIHNldFNo
b3VsZE1haW50YWluQXNwZWN0UmF0aW8oYm9vbCk7Ci0gICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3Jl
ZW5GcmFtZShXZWJDb3JlOjpGbG9hdFJlY3QpOworICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBleGl0RnVsbHNjcmVlbihDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJh
bWVGZW5jZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV1RGOjpNYWNoU2VuZFJp
Z2h0Jik7CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KFdlYkNvcmU6Ok1lZGlh
UGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eSk7CiAgICAgdm9pZCBhY2NlbGVyYXRlZFJlbmRlcmlu
Z1N0YXRlQ2hhbmdlZChib29sKTsKICAgICB2b2lkIHNldFNob3VsZERpc2FibGVTbGVlcChib29s
KTsKQEAgLTI1MSw3ICsyNTMsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxTYW5kYm94RXh0ZW5z
aW9uPiBtX3NhbmRib3hFeHRlbnNpb247CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV93ZWJQ
cm9jZXNzQ29ubmVjdGlvbjsKICAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXI+IG1fcGxh
eWVyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBtX2xheWVySG9z
dGluZ0NvbnRleHQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IG1f
aW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0
aW5nQ29udGV4dD4gbV9mdWxsc2NyZWVuTGF5ZXJIb3N0aW5nQ29udGV4dDsKICAgICBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eSYgbV9tYW5hZ2VyOwogICAgIFdlYkNvcmU6Ok1lZGlhUGxh
eWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBtX2VuZ2luZUlkZW50aWZpZXI7CiAgICAg
VmVjdG9yPFdlYkNvcmU6OkNvbnRlbnRUeXBlPiBtX3R5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBw
b3J0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCAzNTM5YmMxZDljODQx
Njg5MmE4NzU5NjFlZDFlNGE5OGMxM2IyNTc2Li5iYzJkMjI2NjZhZGVkYzhiNzMwYzJmYmRjZjFj
NGY4ZjA3ZjcxOGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQs
NyArMjQsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVzc2FnZXMgLT4gUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKLSAgICBQcmVwYXJlRm9yUGxheWJhY2so
Ym9vbCBwcml2YXRlTW9kZSwgZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6
OlByZWxvYWQgcHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVu
ZGVyaW5nLCBmbG9hdCB2aWRlb0NvbnRlbnRTY2FsZSkgLT4gKE9wdGlvbmFsPFdlYktpdDo6TGF5
ZXJIb3N0aW5nQ29udGV4dElEPiBsYXllckhvc3RpbmdDb250ZXh0SWQpIEFzeW5jCisgICAgUHJl
cGFyZUZvclBsYXliYWNrKGJvb2wgcHJpdmF0ZU1vZGUsIGVudW06dWludDhfdCBXZWJDb3JlOjpN
ZWRpYVBsYXllckVudW1zOjpQcmVsb2FkIHByZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJv
b2wgcHJlcGFyZUZvclJlbmRlcmluZywgZmxvYXQgdmlkZW9Db250ZW50U2NhbGUpIC0+IChPcHRp
b25hbDxXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRD4gaW5saW5lTGF5ZXJIb3N0aW5nQ29u
dGV4dElkLCBPcHRpb25hbDxXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRD4gZnVsbHNjcmVl
bkxheWVySG9zdGluZ0NvbnRleHRJZCkgQXN5bmMKIAogICAgIExvYWQoVVJMIHVybCwgT3B0aW9u
YWw8V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hFeHRlbnNpb24sIFdl
YkNvcmU6OkNvbnRlbnRUeXBlIGNvbnRlbnRUeXBlLCBTdHJpbmcga2V5U3lzdGVtKSAtPiAoc3Ry
dWN0IFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uIHBsYXllckNvbmZpZ3Vy
YXRpb24pIEFzeW5jCiAgICAgQ2FuY2VsTG9hZCgpCkBAIC00Nyw3ICs0Nyw3IEBAIG1lc3NhZ2Vz
IC0+IFJlbW90ZU1lZGlhUGxheWVyUHJveHkgTm90UmVmQ291bnRlZCB7CiAgICAgUHJlcGFyZUZv
clJlbmRlcmluZygpCiAgICAgU2V0VmlzaWJsZShib29sIHZpc2libGUpCiAgICAgU2V0U2hvdWxk
TWFpbnRhaW5Bc3BlY3RSYXRpbyhib29sIG1haW50YWluQXNwZWN0UmF0aW8pCi0gICAgU2V0Vmlk
ZW9GdWxsc2NyZWVuRnJhbWUoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QpCisgICAgU2V0VmlkZW9G
dWxsc2NyZWVuRnJhbWVGZW5jZWQoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QsIE1hY2hTZW5kUmln
aHQgbWFjaFNlbmRSaWdodCkKICAgICBTZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KGVudW06dWlu
dDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHkgZ3Jhdml0eSkKICAg
ICBBY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZChib29sIGNhbkJlQWNjZWxlcmF0ZWQp
CiAgICAgU2V0U2hvdWxkRGlzYWJsZVNsZWVwKGJvb2wgZGlzYWJsZSkKQEAgLTY3LDYgKzY3LDkg
QEAgbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKICAg
ICBTZXRWaWRlb0lubGluZVNpemVGZW5jZWQoV2ViQ29yZTo6SW50U2l6ZSBzaXplLCBNYWNoU2Vu
ZFJpZ2h0IG1hY2hTZW5kUmlnaHQpCiAjZW5kaWYKIAorICAgIEVudGVyRnVsbHNjcmVlbigpIC0+
ICgpIEFzeW5jCisgICAgRXhpdEZ1bGxzY3JlZW4oKSAtPiAoKSBBc3luYworCiAgICAgIyBQYWlu
dAogICAgICMgUGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZU1lZGlhUGxheWVyUHJveHlDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9jb2NvYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5Q29jb2EubW0KaW5kZXggMzVmYzVkYmEwN2RhNjcyOTNkYzlmODgwMTkyNTc1MTQ3
YTJhYjkxNi4uOTI0ZjIyMDkxODczZDJhYzg2NGZhNDA3YWM0OTIwNzMwZWMxNmQ4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvY29j
b2EvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvY29hLm1tCkBAIC0zNywxNCArMzcsMzEgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0VmlkZW9J
bmxpbmVTaXplRmVuY2VkKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUsIGNvbnN0IFdURjo6
TWFjaFNlbmRSaWdodCYgbWFjaFNlbmRSaWdodCkKIHsKLSAgICBtX2xheWVySG9zdGluZ0NvbnRl
eHQtPnNldEZlbmNlUG9ydChtYWNoU2VuZFJpZ2h0LnNlbmRSaWdodCgpKTsKKyAgICBtX2lubGlu
ZUxheWVySG9zdGluZ0NvbnRleHQtPnNldEZlbmNlUG9ydChtYWNoU2VuZFJpZ2h0LnNlbmRSaWdo
dCgpKTsKICAgICAvLyBXZSBkbyBub3Qgd2FudCBhbmltYXRpb25zIGhlcmUKICAgICBbQ0FUcmFu
c2FjdGlvbiBiZWdpbl07CiAgICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVT
XTsKLSAgICBbbV9sYXllckhvc3RpbmdDb250ZXh0LT5yb290TGF5ZXIoKSBzZXRGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSldOworICAgIFttX2lubGlu
ZUxheWVySG9zdGluZ0NvbnRleHQtPnJvb3RMYXllcigpIHNldEZyYW1lOkNHUmVjdE1ha2UoMCwg
MCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKV07CiAgICAgW0NBVHJhbnNhY3Rpb24gY29t
bWl0XTsKIH0KIAordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjplbnRlckZ1bGxzY3JlZW4o
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1
dG8gdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPSBtX3BsYXllci0+Y3JlYXRlVmlkZW9GdWxsc2NyZWVu
TGF5ZXIoKTsKKyAgICBbdmlkZW9GdWxsc2NyZWVuTGF5ZXIgc2V0TmFtZTpAIldlYiB2aWRlbyBm
dWxsc2NyZWVuIG1hbmFnZXIgbGF5ZXIgKHJlbW90ZSkiXTsKKyAgICBbdmlkZW9GdWxsc2NyZWVu
TGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1ha2UoMCwgMCldOworICAgIFt2aWRlb0Z1bGxzY3Jl
ZW5MYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6
dHJhbnNwYXJlbnQpXTsKKyAgICBtX2Z1bGxzY3JlZW5MYXllckhvc3RpbmdDb250ZXh0LT5zZXRS
b290TGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCkpOworCisgICAgbV9wbGF5ZXItPnNl
dFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6
c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWVGZW5jZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBy
ZWN0LCBjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmIG1hY2hTZW5kUmlnaHQpCit7CisgICAgbV9m
dWxsc2NyZWVuTGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0RmVuY2VQb3J0KG1hY2hTZW5kUmlnaHQu
c2VuZFJpZ2h0KCkpOworICAgIG1fcGxheWVyLT5zZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShyZWN0
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGIwMDcw
ZjJkMDYxZDNmZGU4MzUyNTRmZjQwYWY2NjAxNzk2NjdiZjIuLjc3MzIwZWIxZDA5MGQxODZhNGI0
NDY1ZDYzMDVjZThjNmIwYTk5ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTU1Nyw2ICs1
NTcsNyBAQCBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQogCiBXZWJQcm9jZXNz
L0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9XZWJDb250ZW50U2VydmljZUVudHJ5UG9pbnQu
bW0KIAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Q29jb2EubW0KIFdlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL1ZpZGVvTGF5ZXJSZW1vdGVDb2Nv
YS5tbQogCiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUJhbm5l
ci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGU1ZmExOTE0YzIyMzcxMGI3YTAxODMyYzEwNmFlODhlNDQzOGExYTcuLmY1NjEwYTc4
Yzc1ZGE5YmU4ZWM1NTBlZWE1ZTIyMzQyNDNlMTQyNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjcwNCw2ICsyNzA0LDcgQEAKIAkJ
MUQ0RDczNkMyM0E5REY2MDAwNzE3QTI1IC8qIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyTWVz
c2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlck1lc3NhZ2Vz
Lmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5h
Z2VyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUQ0
RDczNzUyM0E5RUI2ODAwNzE3QTI1IC8qIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyTWVzc2Fn
ZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXJNZXNz
YWdlc1JlcGxpZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFS
ZXNvdXJjZU1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKIAkJMUQ2N0IzMzgyMTJFMUY2MTAwRkFBNzg2IC8qIFNoYXJlU2hlZXRDYWxs
YmFja0lELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlU2hlZXRDYWxs
YmFja0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFEOTdFQzdEMjQwODk4RDIw
MDQ2NkZGQSAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2NvYS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFEQTQwODk0MjNBODBBM0UwMDU4Qzk1MCAvKiBSZW1vdGVNZWRpYVJl
c291cmNlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxREE0MDg5RTIzQTgyNzc4MDA1OEM5
NTAgLyogUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxREJCQjA2MTIxMUNDM0NCMDA1MDJFQ0MgLyogV0tTaGFyZVNoZWV0Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tTaGFyZVNoZWV0Lm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjIxNiw2ICs2MjE3LDcgQEAKIAkJMURBRjVBNEQyM0VD
OUY3OTAwQjdCNTE4IC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQkxRDk3RUM3RDI0MDg5OEQyMDA0NjZGRkEgLyogTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlQ29jb2EubW0gKi8sCiAJCQkJMURGREQwRTAyM0Y2MEUxRjAwRTlCNDkwIC8qIFZp
ZGVvTGF5ZXJSZW1vdGVDb2NvYS5oICovLAogCQkJCTFERkREMERGMjNGNjBFMUUwMEU5QjQ5MCAv
KiBWaWRlb0xheWVyUmVtb3RlQ29jb2EubW0gKi8sCiAJCQkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUuY3BwCmluZGV4IDhiYzI2YTI5Mzk5YTExMTZjZmEyNWI3NDM1NTNiMGIxMmU1YzRiYzQu
LmRiOTc4M2FiMTA1NmNlZWEwYTVjMDUzYWRjZDRkMDM3NDExYjIwYmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTk5LDE0ICs5OSwxNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6cHJlcGFyZUZvclBsYXliYWNrKGJvb2wgcHJpdmF0ZU1vZGUsIE1lZGlhUGxh
eWVyOgogewogICAgIGF1dG8gc2NhbGUgPSBtX3BsYXllci0+cGxheWVyQ29udGVudHNTY2FsZSgp
OwogCi0gICAgY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eTo6UHJlcGFyZUZvclBsYXliYWNrKHByaXZhdGVNb2RlLCBwcmVsb2Fk
LCBwcmVzZXJ2ZXNQaXRjaCwgcHJlcGFyZSwgc2NhbGUpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cigqdGhpcyksIHRoaXNdKGF1dG8gY29udGV4dElkKSBtdXRhYmxlIHsKKyAgICBjb25uZWN0aW9u
KCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpQ
cmVwYXJlRm9yUGxheWJhY2socHJpdmF0ZU1vZGUsIHByZWxvYWQsIHByZXNlcnZlc1BpdGNoLCBw
cmVwYXJlLCBzY2FsZSksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpc10oYXV0
byBpbmxpbmVMYXllckhvc3RpbmdDb250ZXh0SWQsIGF1dG8gZnVsbHNjcmVlbkxheWVySG9zdGlu
Z0NvbnRleHRJZCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgaWYgKCFjb250ZXh0SWQpCisgICAgICAgIGlmICghaW5saW5l
TGF5ZXJIb3N0aW5nQ29udGV4dElkKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1f
dmlkZW9JbmxpbmVMYXllciA9IGNyZWF0ZVZpZGVvTGF5ZXJSZW1vdGUodGhpcywgY29udGV4dElk
LnZhbHVlKCkpOworICAgICAgICBtX3ZpZGVvSW5saW5lTGF5ZXIgPSBjcmVhdGVWaWRlb0xheWVy
UmVtb3RlKHRoaXMsIGlubGluZUxheWVySG9zdGluZ0NvbnRleHRJZC52YWx1ZSgpKTsKKworICAg
ICAgICBtX2Z1bGxzY3JlZW5MYXllckhvc3RpbmdDb250ZXh0SWQgPSBmdWxsc2NyZWVuTGF5ZXJI
b3N0aW5nQ29udGV4dElkOwogICAgIH0sIG1faWQpOwogfQogCkBAIC0zNDAsNiArMzQyLDExIEBA
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVy
aW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9jb25maWd1cmF0aW9uLnN1cHBvcnRzQWNjZWxlcmF0
ZWRSZW5kZXJpbmc7CiB9CiAKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphY2NlbGVy
YXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCgpCit7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OkFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVD
aGFuZ2VkKG1fcGxheWVyLT5zdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpLCBtX2lkKTsK
K30KKwogYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhblBsYXlUb1dpcmVsZXNzUGxh
eWJhY2tUYXJnZXQoKSBjb25zdAogewogICAgIHJldHVybiBtX2NvbmZpZ3VyYXRpb24uY2FuUGxh
eVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldDsKQEAgLTM4MCwyMSArMzg3LDYgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZE1haW50YWluQXNwZWN0UmF0aW8oYm9vbCBt
YWludGFpblJhdGlvKQogICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVBsYXllclByb3h5OjpTZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKG1haW50YWluUmF0aW8p
LCBtX2lkKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVs
bHNjcmVlbkZyYW1lKFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0KQotewotICAgIGNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpTZXRWaWRlb0Z1bGxzY3Jl
ZW5GcmFtZShyZWN0KSwgbV9pZCk7Ci19Ci0KLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlZp
ZGVvR3Jhdml0eSBncmF2aXR5KQotewotICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVNZWRpYVBsYXllclByb3h5OjpTZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KGdyYXZpdHkp
LCBtX2lkKTsKLX0KLQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFjY2VsZXJhdGVk
UmVuZGVyaW5nU3RhdGVDaGFuZ2VkKCkKLXsKLSAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6QWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5n
ZWQobV9wbGF5ZXItPnN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSksIG1faWQpOwotfQot
CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2hvdWxkRGlzYWJsZVNsZWVwKGJv
b2wgZGlzYWJsZSkKIHsKICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVk
aWFQbGF5ZXJQcm94eTo6U2V0U2hvdWxkRGlzYWJsZVNsZWVwKGRpc2FibGUpLCBtX2lkKTsKQEAg
LTU5Miw5ICs1ODQsMTYgQEAgUGxhdGZvcm1MYXllciogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8
IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCi12b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZv
cm1MYXllciosIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKQorCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciogdmlkZW9G
dWxsc2NyZWVuTGF5ZXIsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCF2aWRlb0Z1bGxzY3JlZW5MYXll
cikgeworICAgICAgICBjb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpS
ZW1vdGVNZWRpYVBsYXllclByb3h5OjpFeGl0RnVsbHNjcmVlbigpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgbV9pZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQo
bV92aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKSA9PSB2aWRlb0Z1bGxzY3JlZW5MYXllcik7Cisg
ICAgY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6RW50ZXJGdWxsc2NyZWVuKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBtX2lkKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnVwZGF0ZVZpZGVv
RnVsbHNjcmVlbklubGluZUltYWdlKCkKQEAgLTYwMiw2ICs2MDEsMTYgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKCkKICAg
ICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6VXBk
YXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoKSwgbV9pZCk7CiB9CiAKK3ZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZUZlbmNlZChjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc2VuZFJp
Z2h0KQoreworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXll
clByb3h5OjpTZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZUZlbmNlZChyZWN0LCBzZW5kUmlnaHQpLCBt
X2lkKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNj
cmVlbkdyYXZpdHkoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5IGdyYXZp
dHkpCit7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVy
UHJveHk6OlNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoZ3Jhdml0eSksIG1faWQpOworfQorCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuTW9kZShNZWRp
YVBsYXllcjo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQogewogICAgIGNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpTZXRWaWRlb0Z1bGxzY3JlZW5N
b2RlKG1vZGUpLCBtX2lkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDEzMmYzMGFi
MjliNmU1MDlmMTEzOTQ5MjU4MGE2ZTM2NzFjYzc5MDkuLmFhMDAyNzdkMmM2MDllZjFmMjcxNTRl
MGQ5YTVjMzlhZDYzMzczOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiTGF5ZXJIb3N0
aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbi5o
IgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90
ZU1lZGlhUGxheWVyU3RhdGUuaCIKQEAgLTk3LDYgKzk4LDcgQEAgcHVibGljOgogICAgIHZvaWQg
Zmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKCk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9p
ZCBzZXRWaWRlb0lubGluZVNpemVGZW5jZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGNvbnN0
IFdURjo6TWFjaFNlbmRSaWdodCYpOworICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWVG
ZW5jZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0
Jik7CiAjZW5kaWYKIAogICAgIHZvaWQgYWRkUmVtb3RlQXVkaW9UcmFjayhUcmFja1ByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyLCBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uJiYpOwpAQCAt
MTc0LDYgKzE3Niw3IEBAIHByaXZhdGU6CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0IGZpbmFsOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JN
KE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKyAgICBSZXRhaW5QdHI8
UGxhdGZvcm1MYXllcj4gY3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBmaW5hbDsKICAgICB2
b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVWaWRl
b0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSgpIGZpbmFsOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2Ny
ZWVuRnJhbWUoV2ViQ29yZTo6RmxvYXRSZWN0KSBmaW5hbDsKQEAgLTM2MSw2ICszNjQsOCBAQCBw
cml2YXRlOgogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyKiBtX3BsYXllciB7IG51bGxwdHIgfTsK
ICAgICBSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyPiBtX21lZGlh
UmVzb3VyY2VMb2FkZXI7CiAgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fdmlkZW9Jbmxp
bmVMYXllcjsKKyAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV92aWRlb0Z1bGxzY3JlZW5M
YXllcjsKKyAgICBPcHRpb25hbDxMYXllckhvc3RpbmdDb250ZXh0SUQ+IG1fZnVsbHNjcmVlbkxh
eWVySG9zdGluZ0NvbnRleHRJZDsKICAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXImIG1fbWFu
YWdlcjsKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZp
ZXIgbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyOwogICAgIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXIgbV9pZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZUNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliZGZlYWViZmU3NzMwOWNiZDBjNWJjZWJjYWIyMmI5MDMw
NTZlMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL2NvY29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1tCkBAIC0wLDAgKzEsNzQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFBMQVRGT1JN
KENPQ09BKQorCisjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2ltcG9ydCA8cGFsL3Nw
aS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CisjaW1wb3J0IDx3dGYvTWFjaFNlbmRSaWdodC5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFU
Rk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisKK1JldGFpblB0
cjxQbGF0Zm9ybUxheWVyPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNyZWF0ZVZpZGVvRnVs
bHNjcmVlbkxheWVyKCkKK3sKKyAgICBpZiAoIW1fZnVsbHNjcmVlbkxheWVySG9zdGluZ0NvbnRl
eHRJZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIW1fdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIpIHsKKyAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllciA9IGFkb3B0TlMoW1tD
QUxheWVyIGFsbG9jXSBpbml0XSk7CisgICAgICAgIGF1dG8gc3VibGF5ZXIgPSBMYXllckhvc3Rp
bmdDb250ZXh0OjpjcmVhdGVQbGF0Zm9ybUxheWVyRm9ySG9zdGluZ0NvbnRleHQobV9mdWxsc2Ny
ZWVuTGF5ZXJIb3N0aW5nQ29udGV4dElkLnZhbHVlKCkpOworICAgICAgICBbc3VibGF5ZXIgc2V0
TmFtZTpAIlZpZGVvRnVsbHNjcmVlbkxheWVyU3VibGF5ZXIiXTsKKyAgICAgICAgW3N1YmxheWVy
IHNldFBvc2l0aW9uOkNHUG9pbnRNYWtlKDAsIDApXTsKKyAgICAgICAgW21fdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIgYWRkU3VibGF5ZXI6c3VibGF5ZXIuZ2V0KCldOworICAgIH0KKworICAgIHJldHVy
biBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QpCit7
CisgICAgYXV0byBjb250ZXh0ID0gW21fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgY29udGV4dF07Cisg
ICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm47CisKKyAgICBbQ0FUcmFuc2FjdGlvbiBi
ZWdpbl07CisgICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKKworICAg
IE1hY2hTZW5kUmlnaHQgZmVuY2VTZW5kUmlnaHQgPSBNYWNoU2VuZFJpZ2h0OjphZG9wdChbY29u
dGV4dCBjcmVhdGVGZW5jZVBvcnRdKTsKKyAgICBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZUZlbmNl
ZChyZWN0LCBmZW5jZVNlbmRSaWdodCk7CisKKyAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwor
fQorCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9WaWRlb0xheWVyUmVtb3RlQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL1ZpZGVvTGF5ZXJSZW1vdGVD
b2NvYS5tbQppbmRleCAzNTJmMGNjM2Q2ODBlNjUwZjJlY2Y5OTQ5Y2FiZjg5ODY0NDJiOTA3Li5j
YjNmMjg0ZWRiMjVmOWM4ZjQ5NjQ3ZjMxYTQ4NDgyNmY5NGFmNjg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL1ZpZGVvTGF5ZXJSZW1vdGVDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL1ZpZGVv
TGF5ZXJSZW1vdGVDb2NvYS5tbQpAQCAtMTU2LDE0ICsxNTYsOSBAQCBSZXRhaW5QdHI8Q0FMYXll
cj4gY3JlYXRlVmlkZW9MYXllclJlbW90ZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGUqIG1lZGlh
UGxheWVyUAogICAgIC8vIEluaXRpYWxseSwgYWxsIHRoZSBsYXllcnMgd2lsbCBiZSBlbXB0eSAo
Ym90aCB3aWR0aCBhbmQgaGVpZ2h0IGFyZSAwKSBhbmQgaW52aXNpYmxlLgogICAgIC8vIFRoZSBy
ZW5kZXJlciB3aWxsIGNoYW5nZSB0aGUgc2l6ZXMgb2YgV0tWaWRlb0xheWVyUmVtb3RlIHRvIHRy
aWdnZXIgbGF5b3V0IG9mIHN1YmxheWVycyBhbmQgbWFrZSB0aGVtIHZpc2libGUuCiAgICAgYXV0
byB2aWRlb0xheWVyUmVtb3RlID0gYWRvcHROUyhbW1dLVmlkZW9MYXllclJlbW90ZSBhbGxvY10g
aW5pdF0pOwotI2lmbmRlZiBOREVCVUcKICAgICBbdmlkZW9MYXllclJlbW90ZSBzZXROYW1lOkAi
V0tWaWRlb0xheWVyUmVtb3RlIl07Ci0jZW5kaWYKLQogICAgIFt2aWRlb0xheWVyUmVtb3RlIHNl
dE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTptZWRpYVBsYXllclByaXZhdGVSZW1vdGVdOwotCi0g
ICAgYXV0byB2aWRlb1N1YmxheWVyID0gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlUGxhdGZv
cm1MYXllckZvckhvc3RpbmdDb250ZXh0KGNvbnRleHRJZCk7Ci0gICAgW3ZpZGVvTGF5ZXJSZW1v
dGUgYWRkU3VibGF5ZXI6dmlkZW9TdWJsYXllci5nZXQoKV07CisgICAgW3ZpZGVvTGF5ZXJSZW1v
dGUgYWRkU3VibGF5ZXI6TGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlUGxhdGZvcm1MYXllckZv
ckhvc3RpbmdDb250ZXh0KGNvbnRleHRJZCkuZ2V0KCldOwogCiAgICAgcmV0dXJuIHZpZGVvTGF5
ZXJSZW1vdGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
VmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IDY4NGViYWJhZDM2Y2RmMzkxMGQ3YjYy
Y2FjYjE2NDhhNGI5YjIyZjQuLjViNGQyMmI0YzU0MWQzMWY2NWZlMTBjN2Y3ZWVjOTg3OGM5MmIz
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC0yNzEsOSArMjcxLDggQEAgdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChIVE1MVmlk
ZW9FbGVtZW4KICAgICBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmUgPSB2aWRlb0VsZW1lbnQu
d2Via2l0U3VwcG9ydHNQcmVzZW50YXRpb25Nb2RlKEhUTUxWaWRlb0VsZW1lbnQ6OlZpZGVvUHJl
c2VudGF0aW9uTW9kZTo6UGljdHVyZUluUGljdHVyZSk7CiAKICAgICBpZiAoIWludGVyZmFjZS0+
bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5yb290TGF5ZXIoKSkgewotICAgICAgICBQbGF0Zm9ybUxh
eWVyKiB2aWRlb0xheWVyID0gW0NBTGF5ZXIgbGF5ZXJdOworICAgICAgICBhdXRvIHZpZGVvTGF5
ZXIgPSBtb2RlbC0+Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKTsKICAgICAgICAgW3ZpZGVv
TGF5ZXIgc2V0RGVsZWdhdGU6W1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZSBzaGFy
ZWRdXTsKLQogICAgICAgICBbdmlkZW9MYXllciBzZXROYW1lOkAiV2ViIHZpZGVvIGZ1bGxzY3Jl
ZW4gbWFuYWdlciBsYXllciJdOwogICAgICAgICBbdmlkZW9MYXllciBzZXRQb3NpdGlvbjpDR1Bv
aW50TWFrZSgwLCAwKV07CiAgICAgICAgIFt2aWRlb0xheWVyIHNldEJhY2tncm91bmRDb2xvcjpj
YWNoZWRDR0NvbG9yKFdlYkNvcmU6OkNvbG9yOjp0cmFuc3BhcmVudCldOwpAQCAtMjgzLDcgKzI4
Miw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5G
b3JWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVuCiAgICAgICAgIGZsb2F0IGhvc3RpbmdTY2Fs
ZUZhY3RvciA9IG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICAgICAgW3ZpZGVvTGF5
ZXIgc2V0VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RNYWtlU2NhbGUoaG9zdGluZ1NjYWxlRmFjdG9y
LCBob3N0aW5nU2NhbGVGYWN0b3IsIDEpXTsKIAotICAgICAgICBpbnRlcmZhY2UtPmxheWVySG9z
dGluZ0NvbnRleHQoKS0+c2V0Um9vdExheWVyKHZpZGVvTGF5ZXIpOworICAgICAgICBpbnRlcmZh
Y2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+c2V0Um9vdExheWVyKHZpZGVvTGF5ZXIuZ2V0KCkp
OwogICAgIH0KIAogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjpTZXR1cEZ1bGxzY3JlZW5XaXRoSUQoY29udGV4dElkLCBpbnRlcmZhY2UtPmxh
eWVySG9zdGluZ0NvbnRleHQoKS0+Y29udGV4dElEKCksIHZpZGVvUmVjdCwgbV9wYWdlLT5kZXZp
Y2VTY2FsZUZhY3RvcigpLCBpbnRlcmZhY2UtPmZ1bGxzY3JlZW5Nb2RlKCksIGFsbG93c1BpY3R1
cmVJblBpY3R1cmUsIHN0YW5kYnkpKTsK
</data>
<flag name="review"
          id="407518"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392039</attachid>
            <date>2020-02-28 17:35:18 -0800</date>
            <delta_ts>2020-02-28 20:31:34 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-208252-20200228173517.patch</filename>
            <type>text/plain</type>
            <size>48894</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzA5Y2M5Y2YyY2E2NzUy
MzY4OGYxOWVkMTRlZGIxMmM1NzRhZWQ5ZC4uODI5M2VlNTMzZjJjMjA0MTg3MDEzNmFjMzNjNWY4
YzE3NmU4MmZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIwLTAyLTI4ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBwcm9j
ZXNzXSBJbXBsZW1lbnQgdGhlIHZpZGVvIGZ1bGxzY3JlZW4gYW5kIFBpY3R1cmUtaW4tUGljdHVy
ZSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDgyNTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMg
dGhlIGNyZWF0aW9uIG9mIHRoZSBDQUxheWVyIGZvciB2aWRlbyBmdWxsc2NyZWVuIGFuZCBwaWN0
dXJlLWluLXBpY3R1cmUgZnJvbQorICAgICAgICBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIHRvIE1l
ZGlhUGxheWVyUHJpdmF0ZSBjbGFzc2VzLiBXaXRoIHRoaXMgY2hhbmdlLCB3ZSBjYW4gc3VwcG9y
dAorICAgICAgICB2aWRlbyBmdWxsc2NyZWVuIGFuZCBwaWN0dXJlLWluLXBpY3R1cmUgbm8gbWF0
dGVyIHRoZSAiTWVkaWEgaW4gR1BVIHByb2Nlc3MiCisgICAgICAgIGZlYXR1cmUgaXMgZW5hYmxl
ZCBvciBub3QuIFRoZSBmdW5jdGlvbiBjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpIGlzIGFk
ZGVkIHRvCisgICAgICAgIE1lZGlhUGxheWVyIGFuZCBNZWRpYVBsYXllclByaXZhdGUgZm9yIHRo
YXQgcHVycG9zZS4KKworICAgICAgICBUaGVyZSBhcmUgZHVwbGljYXRlZCBjb2RlIHNuaXBwZXRz
IHRvIGNyZWF0ZSBhIENBTGF5ZXIgaW4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
QywKKyAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLCBhbmQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLgorICAgICAgICBUaGF0IHdpbGwgYmUg
Zml4ZWQgaW4gYSBmdXR1cmUgcmVmYWN0b3JpbmcgKHdlYmtpdC5vcmcvYi8yMDgzNDIpLgorCisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKiBo
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVJbnRlcmZhY2U6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0
ZVZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKToKKwogMjAyMC0wMi0yOCAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVUF0gSW1wbGVtZW50IE1vZGVy
biBFTUUgQVBJIGluIHRoZSBHUFUgUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzYTI0ODg1YTM3OTM3MDgw
YzMyZGYzMmUwZjgyNGI4YzU5N2VkMzNlLi5hYjcxZGFhM2Q0NmEzN2Q4NGI2ZjViOTFkMWYyOGQ5
NmFkOGRhNTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDIwLTAyLTI4ICBQZW5nIExp
dSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBwcm9jZXNz
XSBJbXBsZW1lbnQgdGhlIHZpZGVvIGZ1bGxzY3JlZW4gYW5kIFBpY3R1cmUtaW4tUGljdHVyZSBz
dXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDgyNTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGUgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBpbiB0aGUgR1BVIHByb2Nlc3MgY3JlYXRlcyBhIExh
eWVySG9zdGluZ0NvbnRleHQgYW5kCisgICAgICAgIHNoYXJlIHRoZSBjb250ZXh0IElEIHdpdGgg
dGhlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSBpbiB0aGUgV2ViIHByb2Nlc3MsCisgICAgICAg
IHdoaWNoIGluIHR1cm4gY3JlYXRlcyBhIHJlbW90ZSBsYXllciB1c2VkIGJ5IHRoZSBWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyLgorCisgICAgICAgIFRob3NlIGZ1bmN0aW9ucyByZWdhcmRpbmcgdmlk
ZW8gZnVsbHNjcmVlbiBhbmQgcGljdHVyZS1pbi1waWN0dXJlIGhhdmUgYmVlbgorICAgICAgICBt
b3ZlZCB0byBSZW1vdGVNZWRpYVBsYXllclByb3h5LgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5l
SW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c2V0VmlkZW9GdWxsc2NyZWVuR3Jh
dml0eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5OjpzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnNldFZvbHVtZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpzZXRCdWZmZXJp
bmdQb2xpY3kpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6dmlkZW9GdWxsc2NyZWVuU3RhbmRieUNoYW5nZWQpOiBEZWxldGVkLgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaDoK
KworICAgICAgICBbR1BVIHByb2Nlc3NdCisgICAgICAgIEFkZCB0d28gYXN5bmNocm9ub3VzIElQ
QyBtZXNzYWdlcyAoRW50ZXJGdWxsc2NyZWVuIGFuZCBFeGl0RnVsbHNjcmVlbikgaW4gUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eQorICAgICAgICBhbmQgcmVwbGFjZSB0aGUgbWVzc2FnZSBTZXRWaWRl
b0Z1bGxzY3JlZW5GcmFtZSB3aXRoIFNldFZpZGVvRnVsbHNjcmVlbkZyYW1lRmVuY2VkLgorICAg
ICAgICBDcmVhdGUgdGhlIENBTGF5ZXIgZm9yIHRoZSB2aWRlbyBmdWxsc2NyZWVuIGFuZCBwaWN0
dXJlLWluLXBpY3R1cmUgZmVhdHVyZXMuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6cHJlcGFyZUZvclBsYXliYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVk
aWFQbGF5ZXJQcm94eTo6ZXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVN
ZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyUmVuZGVy
aW5nTW9kZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5
OjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvbWVkaWEvY29jb2EvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRWaWRlb0lubGluZVNpemVGZW5j
ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjplbnRlckZ1bGxz
Y3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRWaWRl
b0Z1bGxzY3JlZW5GcmFtZUZlbmNlZCk6CisKKyAgICAgICAgKiBXZWJLaXQvU291cmNlc0NvY29h
LnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAg
ICAgICBbV2ViIHByb2Nlc3NdCisgICAgICAgIENyZWF0ZSBhIGhvc3RpbmcgbGF5ZXIgaW4gdGhl
IFdlYiBwcm9jZXNzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIENBTGF5ZXIgaW4gdGhlCisgICAgICAg
IEdQVSBwcm9jZXNzIGZvciB2aWRlbyBmdWxsc2NyZWVuIGFuZCBwaWN0dXJlLWluLXBpY3R1cmUu
CisgICAgICAgIFN5bmNocm9uaXplIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBsYXllcnMgY3Jvc3Mg
cHJvY2VzcyBib3VuZGFyeSB3aXRoIE1hY2hTZW5kUmlnaHQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwcmVwYXJlRm9yUGxheWJhY2spOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFjY2VsZXJhdGVkUmVuZGVyaW5n
U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWVGZW5jZWQpOgorICAgICAgICAo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZp
dHkpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVv
RnVsbHNjcmVlbkZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9jb2NvYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXll
cikKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1
bGxzY3JlZW5GcmFtZSkKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9WaWRl
b0xheWVyUmVtb3RlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVZpZGVvTGF5ZXJS
ZW1vdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci5tbToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRl
b0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQpOgorCiAyMDIwLTAyLTI4ICBBZHJpYW4gUGVyZXog
ZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBub24t
dW5pZmllZCBzb3VyZXMgYnVpbGRzIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCmluZGV4IDIxNTg0OWFiOWM4MDNkMDFkM2EzMzY0Mjc3ZWZkODIyZjZjNDM5NmMu
LmZkYzcyOGFiNjg2NzMyNGZhMTcwZTdlYTAwMGMxMzc3YTc4MWM5NTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNjI2MSw2ICs2MjYxLDExIEBAIGJvb2wg
SFRNTE1lZGlhRWxlbWVudDo6aXNWaWRlb0xheWVySW5saW5lKCkKICAgICByZXR1cm4gIW1fdmlk
ZW9GdWxsc2NyZWVuTGF5ZXI7CiB9OwogCitSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gSFRNTE1l
ZGlhRWxlbWVudDo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKQoreworICAgIHJldHVybiBt
X3BsYXllci0+Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKTsKK30KKwogdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9y
bUxheWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgKaW5kZXggZjY5MjBmNjU0NzZmMjhkN2U3YjE5NGU1OTFlMmM1OTUyZjQ0ZTlmYS4uZWYw
MGMzNTAzOTU1MmFiNDgyNWIzNjhiOTMxZmY0ZjFmMWY0YzVmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTE3OSw2ICsxNzksNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRQcmVwYXJlZFRvUmV0dXJuVmlkZW9MYXllclRvSW5saW5lKGJvb2wpOwogICAgIHZvaWQg
d2FpdEZvclByZXBhcmVkRm9ySW5saW5lVGhlbihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBM
QVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKyAgICBSZXRh
aW5QdHI8UGxhdGZvcm1MYXllcj4gY3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIq
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CiAj
aWZkZWYgX19PQkpDX18KICAgICBQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllcigp
IGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbFZpZGVvRWxlbWVudC5oCmluZGV4IDBlOWE0NTRiNGQ4OGFjZTM1NTQyMjY1YmZiMDBm
NDE2NzIyNzEyNGUuLjNiNjBiMzJmYTFmZThlM2FhMDE4OThmOWVhMWNjNzY4MTJhODhlMjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaApAQCAtNTUsNiArNTUsNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRWxlbWVudChIVE1MVmlk
ZW9FbGVtZW50Kik7CiAgICAgSFRNTFZpZGVvRWxlbWVudCogdmlkZW9FbGVtZW50KCkgY29uc3Qg
eyByZXR1cm4gbV92aWRlb0VsZW1lbnQuZ2V0KCk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRh
aW5QdHI8UGxhdGZvcm1MYXllcj4gY3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIq
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3aWxsRXhpdEZ1bGxzY3JlZW4oKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHdhaXRGb3JQcmVwYXJlZEZvcklubGluZVRoZW4oV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudC5tbQppbmRleCBlYjdmMjY3N2QwYjVlZmI0NDFmNjljNjliYjkzNjhkMTgwYzQ0
MjM5Li5jMjEwMWQxNmVmMGZmMTNkMmY2YTE4ZDNmMjIzNGQ5ZjhiNTdjMzRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQpAQCAtMTEwLDYgKzExMCwxMSBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojp3aWxsRXhpdEZ1bGxzY3JlZW4oKQogICAgICAg
ICBtX3ZpZGVvRWxlbWVudC0+d2lsbEV4aXRGdWxsc2NyZWVuKCk7CiB9CiAKK1JldGFpblB0cjxQ
bGF0Zm9ybUxheWVyPiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRlVmlk
ZW9GdWxsc2NyZWVuTGF5ZXIoKQoreworICAgIHJldHVybiBtX3ZpZGVvRWxlbWVudC0+Y3JlYXRl
VmlkZW9GdWxsc2NyZWVuTGF5ZXIoKTsKK30KKwogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciogdmlkZW9M
YXllciwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
aWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPT0gdmlkZW9MYXllcikgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGEzZWIxY2I5
YmUwYThhMzEwNjMwMjVhZDE5YTViYzAyNWE3Nzk4MmQuLjg2YjQ3M2QzOGEwY2I1YTgwZTAyNjBm
Y2NkYTBjOGU4N2M0YWUzNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTc1Miw2ICs3NTIsMTEgQEAgUGxhdGZvcm1MYXllciog
TWVkaWFQbGF5ZXI6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogICAgIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05f
TU9ERSkpCiAKK1JldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBNZWRpYVBsYXllcjo6Y3JlYXRlVmlk
ZW9GdWxsc2NyZWVuTGF5ZXIoKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmNyZWF0ZVZpZGVv
RnVsbHNjcmVlbkxheWVyKCk7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXI6OnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqIGxheWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3ByaXZhdGUtPnNldFZpZGVvRnVsbHNjcmVlbkxh
eWVyKGxheWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCAxZmRkNWJhZDY4ODlhMDky
OTMyMzRkMmM1NGRiNDI3YWIzNzM3OGNmLi5hNzVhYWNhMWViZTM4ZmQ3MWQwODg4NjVjODFkMDM1
NGZjYWUzYTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmgKQEAgLTMwNyw2ICszMDcsNyBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1MYXllciog
cGxhdGZvcm1MYXllcigpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBM
QVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKyAgICBSZXRh
aW5QdHI8UGxhdGZvcm1MYXllcj4gY3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKTsKICAgICB2
b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CiAgICAgdm9pZCBzZXRWaWRl
b0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpOwogICAgIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2Ny
ZWVuSW5saW5lSW1hZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggZWQ2MTg1ZGE3NzIwZmI0N2ExNjU0ODFk
YjgyMTQwZDQxYzBhOGFhNS4uMWJkNDA5NWEwOTYzOGNjOTE3NmEwNGQzNGZiYzExMmZjMjVmMzJk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXJQcml2YXRlLmgKQEAgLTYyLDYgKzYyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURF
T19QUkVTRU5UQVRJT05fTU9ERSkpCisgICAgdmlydHVhbCBSZXRhaW5QdHI8UGxhdGZvcm1MYXll
cj4gY3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAg
dmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxl
cigpOyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdl
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVj
dCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggYWY2YzgwNGY2Y2Y4ZTYwOGQ4N2Q4Mzlm
ZDgwNmYwODkwM2QyM2ZiNi4uMzk5OTAwZDY5OTBlMDQxOTBkY2VjZjZkOGViZmNkZTg4Y2QzNTll
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtMTc3LDYgKzE3Nyw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlk
ZTsKICAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gY3Jl
YXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5l
SW1hZ2UoKSBmaW5hbDsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVj
dCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA2ZGZjMDEzMzdmZjg0OWE3
NzQyYzExYTAwMWI2MTc5MTkxY2NjY2NiLi5kN2NmYmY5ZDc0MjE2MTJjOTkxYWQ3YjMwMzU1YmE5
ZTFkYmMyZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTEwODMsNiArMTA4MywxMSBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVZpZGVvRnVs
bHNjcmVlbklubGluZUltYWdlKCkKICAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT51cGRhdGVWaWRl
b0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShtX2xhc3RJbWFnZSk7CiB9CiAKK1JldGFpblB0cjxQbGF0
Zm9ybUxheWVyPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRl
b0Z1bGxzY3JlZW5MYXllcigpCit7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tDQUxheWVyIGFsbG9j
XSBpbml0XSk7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciogdmlkZW9GdWxsc2NyZWVuTGF5
ZXIsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICB1cGRhdGVM
YXN0SW1hZ2UoVXBkYXRlVHlwZTo6VXBkYXRlU3luY2hyb25vdXNseSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5oCmluZGV4IDVkZTMzNmNiNjRiOTk0NTdiZmZiZTY3MmYxYTUyYzNmNjI3Nzg4ZTMu
LmQ4ZjljMjQ0YjZjMWUxZjM5OGM5OTU1ZTc2ZTVkMzliZmFjNmNmNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5oCkBAIC0xMDksNiArMTA5LDcgQEAgcHVibGljOgogICAgIEFWU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyKiBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoKSBjb25zdCB7IHJldHVy
biBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKTsgfQogICAgIFdlYkNvcmVEZWNvbXBy
ZXNzaW9uU2Vzc2lvbiogZGVjb21wcmVzc2lvblNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX2Rl
Y29tcHJlc3Npb25TZXNzaW9uLmdldCgpOyB9CiAKKyAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXll
cj4gY3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFZp
ZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3Jl
ZW5GcmFtZShGbG9hdFJlY3QpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0K
aW5kZXggNGJkMzM4NDczMDYyNzc4ODA4OTBjODgxOTFhYzdiOWFmOTYzNGQxYy4uZjU0OTEwYzE5
MDJjYjc0ZDNkZDMwMGQyY2I1MTNhZGUyMTZiMGJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbQpAQCAtMTE1OCw2ICsxMTU4LDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpjaGFyYWN0ZXJpc3RpY3NDaGFuZ2VkKCkKICAgICBtX3BsYXllci0+Y2hh
cmFjdGVyaXN0aWNDaGFuZ2VkKCk7CiB9CiAKK1JldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxh
eWVyKCkKK3sKKyAgICByZXR1cm4gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKK30K
Kwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICB1cGRhdGVMYXN0SW1h
Z2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKaW5kZXggOTJjMDgyMTY1NDk4Y2RlYTI3YzEz
N2U5NTZmY2EzZjQ3OTg5ZjY4NC4uM2ZjOTQ4YzI3ZGMxMzAxMjAwZjUzOWZiZjFjY2QxM2NiYjU5
YzA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKQEAgLTE5Nyw2ICsxOTcsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2FtcGxlQnVmZmVyVXBkYXRlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZSYsIE1lZGlhU2FtcGxlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWFkeVN0YXRlQ2hhbmdlZChN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIG92ZXJyaWRlOwogCisgICAgUmV0YWluUHRyPFBsYXRm
b3JtTGF5ZXI+IGNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VmlkZW9G
dWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLm1tCmluZGV4IDJkMGIzMWEwYTgxMTJkMzc0M2I5ZWEyYzg0NjAwZjlmOTgzOTNiNTYuLmI0
NjhjZGFlYWQ3NzFiYzgwNDNlMDQ2YTAyMDY2ZTJiNzQ1MDBiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakMubW0KQEAgLTc3Myw2ICs3NzMsMTEgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OnN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgpIGNvbnN0CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKK1JldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkKK3sK
KyAgICByZXR1cm4gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKK30KKwogdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxh
eWVyKFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICB1cGRhdGVDdXJyZW50RnJhbWVJbWFn
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKaW5kZXggNWE0Mjg5ZTg2YjIyYTc5
MzU4ODc2OTBiYWY3MTcyZTdjMmRkNDhjZS4uOTE0ODkwZmY2NGJhMzIzNThmNmQwYmJiYzY1ZGU1
NGM1MGFmY2E2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCkBAIC0xOTIsNDgg
KzE5Miw2IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnN1cHBvcnRzS2V5
U3lzdGVtKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5nCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmVzdWx0KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6dXBkYXRl
VmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRp
ZmllciBwbGF5ZXJJZGVudGlmaWVyKQotewotICAgIGlmIChhdXRvIHBsYXllciA9IG1fcHJveGll
cy5nZXQocGxheWVySWRlbnRpZmllcikpCi0gICAgICAgIHBsYXllci0+dXBkYXRlVmlkZW9GdWxs
c2NyZWVuSW5saW5lSW1hZ2UoKTsKLX0KLQotdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllciBwbGF5ZXJJZGVudGlmaWVyLCBGbG9hdFJlY3QgZnJhbWUpCi17Ci0gICAgaWYgKGF1
dG8gcGxheWVyID0gbV9wcm94aWVzLmdldChwbGF5ZXJJZGVudGlmaWVyKSkKLSAgICAgICAgcGxh
eWVyLT5zZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShmcmFtZSk7Ci19Ci0KLXZvaWQgUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBwbGF5ZXJJZGVudGlmaWVyLCBNZWRpYVBsYXllcjo6
VmlkZW9HcmF2aXR5IGdyYXZpdHkpCi17Ci0gICAgaWYgKGF1dG8gcGxheWVyID0gbV9wcm94aWVz
LmdldChwbGF5ZXJJZGVudGlmaWVyKSkKLSAgICAgICAgcGxheWVyLT5zZXRWaWRlb0Z1bGxzY3Jl
ZW5HcmF2aXR5KGdyYXZpdHkpOwotfQotCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5OjpzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIgcGxheWVySWRlbnRpZmllciwgTWVkaWFQbGF5ZXI6OlZpZGVvRnVsbHNjcmVlbk1vZGUg
bW9kZSkKLXsKLSAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX3Byb3hpZXMuZ2V0KHBsYXllcklkZW50
aWZpZXIpKQotICAgICAgICBwbGF5ZXItPnNldFZpZGVvRnVsbHNjcmVlbk1vZGUobW9kZSk7Ci19
Ci0KLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnNldFZvbHVtZShNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHBsYXllcklkZW50aWZpZXIsIGRvdWJsZSB2b2x1
bWUpCi17Ci0gICAgaWYgKGF1dG8gcGxheWVyID0gbV9wcm94aWVzLmdldChwbGF5ZXJJZGVudGlm
aWVyKSkKLSAgICAgICAgcGxheWVyLT5zZXRWb2x1bWUodm9sdW1lKTsKLX0KLQotdm9pZCBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c2V0QnVmZmVyaW5nUG9saWN5KE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgcGxheWVySWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQ
bGF5ZXI6OkJ1ZmZlcmluZ1BvbGljeSBwb2xpY3kpCi17Ci0gICAgaWYgKGF1dG8gcGxheWVyID0g
bV9wcm94aWVzLmdldChwbGF5ZXJJZGVudGlmaWVyKSkKLSAgICAgICAgcGxheWVyLT5zZXRCdWZm
ZXJpbmdQb2xpY3kocG9saWN5KTsKLX0KLQotdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eTo6dmlkZW9GdWxsc2NyZWVuU3RhbmRieUNoYW5nZWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlSWRlbnRpZmllciBwbGF5ZXJJZGVudGlmaWVyKQotewotICAgIGlmIChhdXRvIHBsYXllciA9
IG1fcHJveGllcy5nZXQocGxheWVySWRlbnRpZmllcikpCi0gICAgICAgIHBsYXllci0+dmlkZW9G
dWxsc2NyZWVuU3RhbmRieUNoYW5nZWQoKTsKLX0KLQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjphY2Nlc3NMb2coTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBwbGF5ZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eS5oCmluZGV4IGYzODk3MWM3YjgzN2E5ODUwNTc4MmZkYWMzMDgxNWE5YzMxNDA3
MWIuLjI5ZGRjMjA0NTAyNTdiNDZkOTE2MDMxMGQ2ODM2NTQ4ZWNiZjE4YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eS5oCkBAIC04NCwxNiArODQsNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRp
YUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYmLCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhPiYmKTsKICAgICB2b2lkIHN1cHBvcnRzS2V5U3lzdGVtKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiYsIGNv
bnN0IFN0cmluZyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAotICAgIHZv
aWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBXZWJDb3JlOjpGbG9hdFJlY3QpOwotICAgIHZv
aWQgc2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5KTsKLSAgICB2b2lkIHNl
dFZpZGVvRnVsbHNjcmVlbk1vZGUoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwg
V2ViQ29yZTo6TWVkaWFQbGF5ZXI6OlZpZGVvRnVsbHNjcmVlbk1vZGUpOwotCi0gICAgdm9pZCB2
aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5Q2hhbmdlZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyKTsKLQotICAgIHZvaWQgc2V0Vm9sdW1lKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIsIGRvdWJsZSk7Ci0gICAgdm9pZCBzZXRCdWZmZXJpbmdQb2xpY3koTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OkJ1ZmZlcmlu
Z1BvbGljeSk7Ci0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgYWNjZXNzTG9n
KE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RyaW5nKT4mJik7CiAgICAgdm9pZCBlcnJvckxvZyhNZWRpYVBsYXllclByaXZhdGVSZW1v
dGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkuY3BwCmluZGV4IGZlODg0NGI0NDM4N2ZmYjU4YzFkNWM4Zjg1YjdiMmIwZjJkY2I4Y2Eu
LmZjNWUwZDdlMWJjYzJhYTE4ZmVmNGNkM2E1M2NlZWM5NGJjZjMyZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eS5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNs
dWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSAiTGF5ZXJIb3N0aW5n
Q29udGV4dC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9UcmFja1Byb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCIKQEAgLTEwNywxNyArMTA2LDYgQEAgdm9pZCBSZW1vdGVN
ZWRpYVBsYXllclByb3h5Ojpsb2FkKFVSTCYmIHVybCwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlPiYKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24p
KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpwcmVwYXJlRm9yUGxheWJhY2so
Ym9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZCBwcmVs
b2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJpbmcsIGZsb2F0
IHZpZGVvQ29udGVudFNjYWxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPExheWVy
SG9zdGluZ0NvbnRleHRJRD4mJiBjb250ZXh0SWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewot
ICAgIG1fcGxheWVyLT5zZXRQcml2YXRlQnJvd3NpbmdNb2RlKHByaXZhdGVNb2RlKTsKLSAgICBt
X3BsYXllci0+c2V0UHJlbG9hZChwcmVsb2FkKTsKLSAgICBtX3BsYXllci0+c2V0UHJlc2VydmVz
UGl0Y2gocHJlc2VydmVzUGl0Y2gpOwotICAgIG1fcGxheWVyLT5wcmVwYXJlRm9yUmVuZGVyaW5n
KCk7Ci0gICAgbV92aWRlb0NvbnRlbnRTY2FsZSA9IHZpZGVvQ29udGVudFNjYWxlOwotICAgIG1f
bGF5ZXJIb3N0aW5nQ29udGV4dCA9IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVy
bmFsSG9zdGluZ1Byb2Nlc3MoKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihtX2xheWVySG9zdGlu
Z0NvbnRleHQtPmNvbnRleHRJRCgpKTsKLX0KLQogdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5
OjpjYW5jZWxMb2FkKCkKIHsKICAgICBtX3VwZGF0ZUNhY2hlZFN0YXRlTWVzc2FnZVRpbWVyLnN0
b3AoKTsKQEAgLTE5NCwxMSArMTgyLDYgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpz
ZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKGJvb2wgbWFpbnRhaW5SYXRpbykKICAgICBtX3Bs
YXllci0+c2V0U2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRpbyhtYWludGFpblJhdGlvKTsKIH0KIAot
dm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShXZWJD
b3JlOjpGbG9hdFJlY3QgcmVjdCkKLXsKLSAgICBtX3BsYXllci0+c2V0VmlkZW9GdWxsc2NyZWVu
RnJhbWUocmVjdCk7Ci19Ci0KIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0VmlkZW9G
dWxsc2NyZWVuR3Jhdml0eShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHkg
Z3Jhdml0eSkKIHsKICAgICBtX3BsYXllci0+c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShncmF2
aXR5KTsKQEAgLTQ5OCwxOCArNDgxLDYgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpt
ZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoKQogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6RW5naW5lVXBkYXRlZCgpLCBt
X2lkKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckZpcnN0
VmlkZW9GcmFtZUF2YWlsYWJsZSgpCi17Ci0gICAgLy8gSW5pdGlhbGx5IHRoZSBzaXplIG9mIHRo
ZSBwbGF0Zm9ybUxheWVyIHdpbGwgYmUgMHgwIGJlY2F1c2Ugd2UgZG8gbm90IHByb3ZpZGUgbWVk
aWFQbGF5ZXJDb250ZW50Qm94UmVjdCgpIGluIHRoaXMgY2xhc3MuCi0gICAgbV9sYXllckhvc3Rp
bmdDb250ZXh0LT5zZXRSb290TGF5ZXIobV9wbGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSk7Ci0gICAg
bV93ZWJQcm9jZXNzQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpGaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoKSwgbV9pZCk7Ci19Ci0KLXZvaWQgUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdlZCgpCi17
Ci0gICAgbV9sYXllckhvc3RpbmdDb250ZXh0LT5zZXRSb290TGF5ZXIobV9wbGF5ZXItPnBsYXRm
b3JtTGF5ZXIoKSk7Ci19Ci0KIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5
ZXJBY3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdlZCgpCiB7CiAgICAgbV93ZWJQcm9jZXNzQ29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpBY3RpdmVTb3Vy
Y2VCdWZmZXJzQ2hhbmdlZCgpLCBtX2lkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCmluZGV4IGY3OGVjMDZlYzA0
MzlmY2E5NTBhNGJjMzU2NDJlMDRkOWM3ZmEyZmYuLjJjMDFkMGU1ZjAxYWYzMmYzMjNiZWJjNjFk
OGM4ZjBiZDg0YTYwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaApAQCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGdldENvbmZpZ3VyYXRpb24oUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0
aW9uJik7CiAKLSAgICB2b2lkIHByZXBhcmVGb3JQbGF5YmFjayhib29sIHByaXZhdGVNb2RlLCBX
ZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBi
b29sIHByZXBhcmVGb3JSZW5kZXJpbmcsIGZsb2F0IHZpZGVvQ29udGVudFNjYWxlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPExheWVySG9zdGluZ0NvbnRleHRJRD4mJik+JiYpOwor
ICAgIHZvaWQgcHJlcGFyZUZvclBsYXliYWNrKGJvb2wgcHJpdmF0ZU1vZGUsIFdlYkNvcmU6Ok1l
ZGlhUGxheWVyRW51bXM6OlByZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFy
ZUZvclJlbmRlcmluZywgZmxvYXQgdmlkZW9Db250ZW50U2NhbGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoT3B0aW9uYWw8TGF5ZXJIb3N0aW5nQ29udGV4dElEPiYmIGlubGluZUxheWVySG9zdGlu
Z0NvbnRleHRJZCwgT3B0aW9uYWw8TGF5ZXJIb3N0aW5nQ29udGV4dElEPiYmIGZ1bGxzY3JlZW5M
YXllckhvc3RpbmdDb250ZXh0SWQpPiYmKTsKICAgICB2b2lkIHByZXBhcmVGb3JSZW5kZXJpbmco
KTsKIAogICAgIHZvaWQgbG9hZChVUkwmJiwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlPiYmLCBjb25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYsIGNvbnN0IFN0cmluZyYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJiYpPiYmKTsK
QEAgLTExNSw3ICsxMTUsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFZpc2libGUoYm9vbCk7
CiAgICAgdm9pZCBzZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKGJvb2wpOwotICAgIHZvaWQg
c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoV2ViQ29yZTo6RmxvYXRSZWN0KTsKKyAgICB2b2lkIGVu
dGVyRnVsbHNjcmVlbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZXhp
dEZ1bGxzY3JlZW4oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFZp
ZGVvRnVsbHNjcmVlbkZyYW1lRmVuY2VkKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0
IFdURjo6TWFjaFNlbmRSaWdodCYpOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0
eShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHkpOwogICAgIHZvaWQgYWNj
ZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoYm9vbCk7CiAgICAgdm9pZCBzZXRTaG91bGRE
aXNhYmxlU2xlZXAoYm9vbCk7CkBAIC0yNTEsNyArMjUzLDggQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8U2FuZGJveEV4dGVuc2lvbj4gbV9zYW5kYm94RXh0ZW5zaW9uOwogICAgIFJlZjxJUEM6OkNv
bm5lY3Rpb24+IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb247CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok1l
ZGlhUGxheWVyPiBtX3BsYXllcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29u
dGV4dD4gbV9sYXllckhvc3RpbmdDb250ZXh0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhv
c3RpbmdDb250ZXh0PiBtX2lubGluZUxheWVySG9zdGluZ0NvbnRleHQ7CisgICAgc3RkOjp1bmlx
dWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IG1fZnVsbHNjcmVlbkxheWVySG9zdGluZ0NvbnRl
eHQ7CiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkmIG1fbWFuYWdlcjsKICAgICBX
ZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgbV9lbmdpbmVJ
ZGVudGlmaWVyOwogICAgIFZlY3RvcjxXZWJDb3JlOjpDb250ZW50VHlwZT4gbV90eXBlc1JlcXVp
cmluZ0hhcmR3YXJlU3VwcG9ydDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KaW5k
ZXggMzUzOWJjMWQ5Yzg0MTY4OTJhODc1OTYxZWQxZTRhOThjMTNiMjU3Ni4uYmMyZDIyNjY2YWRl
ZGM4YjczMGMyZmJkY2YxYzRmOGYwN2Y3MThlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVz
c2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1l
c3NhZ2VzIC0+IFJlbW90ZU1lZGlhUGxheWVyUHJveHkgTm90UmVmQ291bnRlZCB7Ci0gICAgUHJl
cGFyZUZvclBsYXliYWNrKGJvb2wgcHJpdmF0ZU1vZGUsIGVudW06dWludDhfdCBXZWJDb3JlOjpN
ZWRpYVBsYXllckVudW1zOjpQcmVsb2FkIHByZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJv
b2wgcHJlcGFyZUZvclJlbmRlcmluZywgZmxvYXQgdmlkZW9Db250ZW50U2NhbGUpIC0+IChPcHRp
b25hbDxXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRD4gbGF5ZXJIb3N0aW5nQ29udGV4dElk
KSBBc3luYworICAgIFByZXBhcmVGb3JQbGF5YmFjayhib29sIHByaXZhdGVNb2RlLCBlbnVtOnVp
bnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZCBwcmVsb2FkLCBib29sIHBy
ZXNlcnZlc1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJpbmcsIGZsb2F0IHZpZGVvQ29udGVu
dFNjYWxlKSAtPiAoT3B0aW9uYWw8V2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQ+IGlubGlu
ZUxheWVySG9zdGluZ0NvbnRleHRJZCwgT3B0aW9uYWw8V2ViS2l0OjpMYXllckhvc3RpbmdDb250
ZXh0SUQ+IGZ1bGxzY3JlZW5MYXllckhvc3RpbmdDb250ZXh0SWQpIEFzeW5jCiAKICAgICBMb2Fk
KFVSTCB1cmwsIE9wdGlvbmFsPFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5k
Ym94RXh0ZW5zaW9uLCBXZWJDb3JlOjpDb250ZW50VHlwZSBjb250ZW50VHlwZSwgU3RyaW5nIGtl
eVN5c3RlbSkgLT4gKHN0cnVjdCBXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlv
biBwbGF5ZXJDb25maWd1cmF0aW9uKSBBc3luYwogICAgIENhbmNlbExvYWQoKQpAQCAtNDcsNyAr
NDcsNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXllclByb3h5IE5vdFJlZkNvdW50ZWQg
ewogICAgIFByZXBhcmVGb3JSZW5kZXJpbmcoKQogICAgIFNldFZpc2libGUoYm9vbCB2aXNpYmxl
KQogICAgIFNldFNob3VsZE1haW50YWluQXNwZWN0UmF0aW8oYm9vbCBtYWludGFpbkFzcGVjdFJh
dGlvKQotICAgIFNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0
KQorICAgIFNldFZpZGVvRnVsbHNjcmVlbkZyYW1lRmVuY2VkKFdlYkNvcmU6OkZsb2F0UmVjdCBy
ZWN0LCBNYWNoU2VuZFJpZ2h0IG1hY2hTZW5kUmlnaHQpCiAgICAgU2V0VmlkZW9GdWxsc2NyZWVu
R3Jhdml0eShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2
aXR5IGdyYXZpdHkpCiAgICAgQWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoYm9vbCBj
YW5CZUFjY2VsZXJhdGVkKQogICAgIFNldFNob3VsZERpc2FibGVTbGVlcChib29sIGRpc2FibGUp
CkBAIC02Nyw2ICs2Nyw5IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUGxheWVyUHJveHkgTm90
UmVmQ291bnRlZCB7CiAgICAgU2V0VmlkZW9JbmxpbmVTaXplRmVuY2VkKFdlYkNvcmU6OkludFNp
emUgc2l6ZSwgTWFjaFNlbmRSaWdodCBtYWNoU2VuZFJpZ2h0KQogI2VuZGlmCiAKKyAgICBFbnRl
ckZ1bGxzY3JlZW4oKSAtPiAoKSBBc3luYworICAgIEV4aXRGdWxsc2NyZWVuKCkgLT4gKCkgQXN5
bmMKKwogICAgICMgUGFpbnQKICAgICAjIFBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9jb2NvYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvY29j
b2EvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvY29hLm1tCmluZGV4IDM1ZmM1ZGJhMDdkYTY3Mjkz
ZGM5Zjg4MDE5MjU3NTE0N2EyYWI5MTYuLjE3YzJkZWJkYzE5MmM3OGM1ZWFkMmFhODhkZTNjMWVh
ZTdmNmY5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9jb2Nv
YS9SZW1vdGVNZWRpYVBsYXllclByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZU1lZGlhUGxheWVyUHJveHlDb2NvYS5tbQpAQCAtMjks
MjIgKzI5LDcxIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBQTEFURk9STShDT0NPQSkK
IAogI2ltcG9ydCAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgorI2ltcG9ydCAiTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlTWVzc2FnZXMuaCIKICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW1wb3J0IDx3dGYvTWFjaFNlbmRSaWdo
dC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5
OjpwcmVwYXJlRm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6UHJlbG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBh
cmVGb3JSZW5kZXJpbmcsIGZsb2F0IHZpZGVvQ29udGVudFNjYWxlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPExheWVySG9zdGluZ0NvbnRleHRJRD4mJiBpbmxpbmVMYXllckhvc3Rp
bmdDb250ZXh0SWQsIE9wdGlvbmFsPExheWVySG9zdGluZ0NvbnRleHRJRD4mJiBmdWxsc2NyZWVu
TGF5ZXJIb3N0aW5nQ29udGV4dElkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3Bs
YXllci0+c2V0UHJpdmF0ZUJyb3dzaW5nTW9kZShwcml2YXRlTW9kZSk7CisgICAgbV9wbGF5ZXIt
PnNldFByZWxvYWQocHJlbG9hZCk7CisgICAgbV9wbGF5ZXItPnNldFByZXNlcnZlc1BpdGNoKHBy
ZXNlcnZlc1BpdGNoKTsKKyAgICBtX3BsYXllci0+cHJlcGFyZUZvclJlbmRlcmluZygpOworICAg
IG1fdmlkZW9Db250ZW50U2NhbGUgPSB2aWRlb0NvbnRlbnRTY2FsZTsKKyAgICBpZiAoIW1faW5s
aW5lTGF5ZXJIb3N0aW5nQ29udGV4dCkKKyAgICAgICAgbV9pbmxpbmVMYXllckhvc3RpbmdDb250
ZXh0ID0gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2Vz
cygpOworICAgIGlmICghbV9mdWxsc2NyZWVuTGF5ZXJIb3N0aW5nQ29udGV4dCkKKyAgICAgICAg
bV9mdWxsc2NyZWVuTGF5ZXJIb3N0aW5nQ29udGV4dCA9IExheWVySG9zdGluZ0NvbnRleHQ6OmNy
ZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlciht
X2lubGluZUxheWVySG9zdGluZ0NvbnRleHQtPmNvbnRleHRJRCgpLCBtX2Z1bGxzY3JlZW5MYXll
ckhvc3RpbmdDb250ZXh0LT5jb250ZXh0SUQoKSk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6bWVkaWFQbGF5ZXJGaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoKQoreworICAgIC8v
IEluaXRpYWxseSB0aGUgc2l6ZSBvZiB0aGUgcGxhdGZvcm1MYXllciB3aWxsIGJlIDB4MCBiZWNh
dXNlIHdlIGRvIG5vdCBwcm92aWRlIG1lZGlhUGxheWVyQ29udGVudEJveFJlY3QoKSBpbiB0aGlz
IGNsYXNzLgorICAgIG1faW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Um9vdExheWVyKG1f
cGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Rmlyc3RWaWRlb0ZyYW1lQXZh
aWxhYmxlKCksIG1faWQpOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlh
UGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQoKQoreworICAgIG1faW5saW5lTGF5ZXJIb3N0aW5n
Q29udGV4dC0+c2V0Um9vdExheWVyKG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpOworfQorCiB2
b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNldFZpZGVvSW5saW5lU2l6ZUZlbmNlZChjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmIG1hY2hT
ZW5kUmlnaHQpCiB7Ci0gICAgbV9sYXllckhvc3RpbmdDb250ZXh0LT5zZXRGZW5jZVBvcnQobWFj
aFNlbmRSaWdodC5zZW5kUmlnaHQoKSk7CisgICAgbV9pbmxpbmVMYXllckhvc3RpbmdDb250ZXh0
LT5zZXRGZW5jZVBvcnQobWFjaFNlbmRSaWdodC5zZW5kUmlnaHQoKSk7CiAgICAgLy8gV2UgZG8g
bm90IHdhbnQgYW5pbWF0aW9ucyBoZXJlCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwogICAg
IFtDQVRyYW5zYWN0aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107Ci0gICAgW21fbGF5ZXJIb3N0
aW5nQ29udGV4dC0+cm9vdExheWVyKCkgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBzaXplLndp
ZHRoKCksIHNpemUuaGVpZ2h0KCkpXTsKKyAgICBbbV9pbmxpbmVMYXllckhvc3RpbmdDb250ZXh0
LT5yb290TGF5ZXIoKSBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6
ZS5oZWlnaHQoKSldOwogICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CiB9CiAKK3ZvaWQgUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eTo6ZW50ZXJGdWxsc2NyZWVuKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIHZpZGVvRnVsbHNjcmVlbkxh
eWVyID0gbV9wbGF5ZXItPmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCk7CisgICAgW3ZpZGVv
RnVsbHNjcmVlbkxheWVyIHNldE5hbWU6QCJXZWIgVmlkZW8gRnVsbHNjcmVlbiBMYXllciAocmVt
b3RlKSJdOworICAgIFt2aWRlb0Z1bGxzY3JlZW5MYXllciBzZXRQb3NpdGlvbjpDR1BvaW50WmVy
b107CisgICAgbV9mdWxsc2NyZWVuTGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Um9vdExheWVyKHZp
ZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpKTsKKworICAgIG1fcGxheWVyLT5zZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmV4aXRGdWxsc2Ny
ZWVuKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBtX3BsYXllci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobnVsbHB0ciwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworICAgIG1fZnVsbHNjcmVlbkxheWVySG9zdGluZ0NvbnRleHQtPnNl
dFJvb3RMYXllcihudWxscHRyKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpz
ZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZUZlbmNlZChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHJl
Y3QsIGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgbWFjaFNlbmRSaWdodCkKK3sKKyAgICBtX2Z1
bGxzY3JlZW5MYXllckhvc3RpbmdDb250ZXh0LT5zZXRGZW5jZVBvcnQobWFjaFNlbmRSaWdodC5z
ZW5kUmlnaHQoKSk7CisgICAgbV9wbGF5ZXItPnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKHJlY3Qp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMzk0YmVj
ZDU0NTUyNzc4ODM3YmQxYmEzYjY4ODdhMjU4NGJkOTFmOC4uMGE3NzY5Mzk4NzllYjY5NWZmYmZl
YWZiZWQ4YmMyZjljNDRjZWZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNTU4LDcgKzU1
OCw3IEBAIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCiBXZWJQcm9jZXNzL0Vu
dHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9XZWJDb250ZW50U2VydmljZUVudHJ5UG9pbnQubW0K
IAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1
cmZhY2VCYWNrZW5kLmNwcAotCitXZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGVDb2NvYS5tbQogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvVmlkZW9M
YXllclJlbW90ZUNvY29hLm1tCiAKIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlQmFubmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMGM5N2IxNTgzNjRhNzU2ZmEwMGJkOWMwYzA3NmFhZWQ3YmU1
YjZjYS4uYTViNjI0YjZhM2RlODM1ZjkzNzI0N2M2NjZmMjVlMzg4MGMyNzJjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNzA0LDYg
KzI3MDQsNyBAQAogCQkxRDRENzM2QzIzQTlERjYwMDA3MTdBMjUgLyogUmVtb3RlTWVkaWFSZXNv
dXJjZU1hbmFnZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxp
Y2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlbW90ZU1lZGlhUmVzb3VyY2VN
YW5hZ2VyTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVk
aWFSZXNvdXJjZU1hbmFnZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwogCQkxRDRENzM3NTIzQTlFQjY4MDA3MTdBMjUgLyogUmVtb3RlTWVkaWFSZXNvdXJj
ZU1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBl
eHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZW1vdGVNZWRpYVJlc291
cmNlTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxRDY3QjMzODIxMkUxRjYxMDBGQUE3ODYgLyog
U2hhcmVTaGVldENhbGxiYWNrSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2hhcmVTaGVldENhbGxiYWNrSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUQ5
N0VDN0QyNDA4OThEMjAwNDY2RkZBIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2NvYS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMURBNDA4OTQyM0E4MEEzRTAwNThDOTUwIC8q
IFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlh
UmVzb3VyY2VNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEQTQwODlF
MjNBODI3NzgwMDU4Qzk1MCAvKiBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFEQkJCMDYxMjExQ0MzQ0IwMDUwMkVDQyAvKiBXS1NoYXJlU2hl
ZXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1NoYXJlU2hl
ZXQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjIyLDYgKzYyMjMsNyBAQAog
CQkxREFGNUE0RDIzRUM5Rjc5MDBCN0I1MTggLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTFEOTdFQzdEMjQwODk4RDIwMDQ2NkZGQSAvKiBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2NvYS5tbSAqLywKIAkJCQkxREZERDBFMDIzRjYwRTFG
MDBFOUI0OTAgLyogVmlkZW9MYXllclJlbW90ZUNvY29hLmggKi8sCiAJCQkJMURGREQwREYyM0Y2
MEUxRTAwRTlCNDkwIC8qIFZpZGVvTGF5ZXJSZW1vdGVDb2NvYS5tbSAqLywKIAkJCSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggOGVmN2RlZWVhNzBlMjBhZThmYWE3Y2VjYmE2
YmQzNzY5NjY2YjUwMi4uZjNkYzg5YzZmNjEwOWYzYjYwNWI5ZDVmNmU0MTdkZjljYTI3MTliYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtOTksMTQgKzk5LDE2IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwcmVwYXJlRm9yUGxheWJhY2soYm9vbCBwcml2YXRl
TW9kZSwgTWVkaWFQbGF5ZXI6CiB7CiAgICAgYXV0byBzY2FsZSA9IG1fcGxheWVyLT5wbGF5ZXJD
b250ZW50c1NjYWxlKCk7CiAKLSAgICBjb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpQcmVwYXJlRm9yUGxheWJhY2socHJpdmF0
ZU1vZGUsIHByZWxvYWQsIHByZXNlcnZlc1BpdGNoLCBwcmVwYXJlLCBzY2FsZSksIFt3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpc10oYXV0byBjb250ZXh0SWQpIG11dGFibGUgewor
ICAgIGNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlh
UGxheWVyUHJveHk6OlByZXBhcmVGb3JQbGF5YmFjayhwcml2YXRlTW9kZSwgcHJlbG9hZCwgcHJl
c2VydmVzUGl0Y2gsIHByZXBhcmUsIHNjYWxlKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRo
aXMpLCB0aGlzXShhdXRvIGlubGluZUxheWVySG9zdGluZ0NvbnRleHRJZCwgYXV0byBmdWxsc2Ny
ZWVuTGF5ZXJIb3N0aW5nQ29udGV4dElkKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoIWNvbnRleHRJZCkKKyAgICAg
ICAgaWYgKCFpbmxpbmVMYXllckhvc3RpbmdDb250ZXh0SWQpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgbV92aWRlb0lubGluZUxheWVyID0gY3JlYXRlVmlkZW9MYXllclJlbW90ZSh0
aGlzLCBjb250ZXh0SWQudmFsdWUoKSk7CisgICAgICAgIG1fdmlkZW9JbmxpbmVMYXllciA9IGNy
ZWF0ZVZpZGVvTGF5ZXJSZW1vdGUodGhpcywgaW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dElkLnZh
bHVlKCkpOworCisgICAgICAgIG1fZnVsbHNjcmVlbkxheWVySG9zdGluZ0NvbnRleHRJZCA9IGZ1
bGxzY3JlZW5MYXllckhvc3RpbmdDb250ZXh0SWQ7CiAgICAgfSwgbV9pZCk7CiB9CiAKQEAgLTMz
OSw2ICszNDEsMTEgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnN1cHBvcnRzQWNj
ZWxlcmF0ZWRSZW5kZXJpbmcoKSBjb25zdAogICAgIHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3Vw
cG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZzsKIH0KIAordm9pZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKCkKK3sKKyAgICBjb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6QWNjZWxlcmF0ZWRS
ZW5kZXJpbmdTdGF0ZUNoYW5nZWQobV9wbGF5ZXItPnN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJp
bmcoKSksIG1faWQpOworfQorCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2FuUGxh
eVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY29uZmln
dXJhdGlvbi5jYW5QbGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0OwpAQCAtMzc5LDIxICszODYs
NiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2hvdWxkTWFpbnRhaW5Bc3Bl
Y3RSYXRpbyhib29sIG1haW50YWluUmF0aW8pCiAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlNldFNob3VsZE1haW50YWluQXNwZWN0UmF0aW8o
bWFpbnRhaW5SYXRpbyksIG1faWQpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QpCi17Ci0g
ICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlNl
dFZpZGVvRnVsbHNjcmVlbkZyYW1lKHJlY3QpLCBtX2lkKTsKLX0KLQotdm9pZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5IGdyYXZpdHkpCi17Ci0gICAgY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlNldFZpZGVvRnVsbHNjcmVlbkdy
YXZpdHkoZ3Jhdml0eSksIG1faWQpOwotfQotCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKQotewotICAgIGNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpBY2NlbGVyYXRlZFJlbmRl
cmluZ1N0YXRlQ2hhbmdlZChtX3BsYXllci0+c3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygp
KSwgbV9pZCk7Ci19Ci0KIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGRE
aXNhYmxlU2xlZXAoYm9vbCBkaXNhYmxlKQogewogICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpTZXRTaG91bGREaXNhYmxlU2xlZXAoZGlzYWJs
ZSksIG1faWQpOwpAQCAtNjE1LDkgKzYwNywxNiBAQCBQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogfQogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElP
Tl9NT0RFKSkKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3Jl
ZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpCisKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9y
bUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIXZpZGVv
RnVsbHNjcmVlbkxheWVyKSB7CisgICAgICAgIGNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OkV4aXRGdWxsc2NyZWVuKCksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX2lkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIEFTU0VSVChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpID09IHZpZGVvRnVsbHNj
cmVlbkxheWVyKTsKKyAgICBjb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpFbnRlckZ1bGxzY3JlZW4oKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIG1faWQpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoKQpAQCAtNjI1LDYgKzYyNCwxNiBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5s
aW5lSW1hZ2UoKQogICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBs
YXllclByb3h5OjpVcGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSgpLCBtX2lkKTsKIH0K
IAordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1l
RmVuY2VkKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgcmVjdCwgY29uc3QgV1RGOjpNYWNoU2Vu
ZFJpZ2h0JiBzZW5kUmlnaHQpCit7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUGxheWVyUHJveHk6OlNldFZpZGVvRnVsbHNjcmVlbkZyYW1lRmVuY2VkKHJlY3Qs
IHNlbmRSaWdodCksIG1faWQpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpWaWRl
b0dyYXZpdHkgZ3Jhdml0eSkKK3sKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVt
b3RlTWVkaWFQbGF5ZXJQcm94eTo6U2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShncmF2aXR5KSwg
bV9pZCk7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxz
Y3JlZW5Nb2RlKE1lZGlhUGxheWVyOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiB7CiAgICAg
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlNldFZp
ZGVvRnVsbHNjcmVlbk1vZGUobW9kZSksIG1faWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgK
aW5kZXggODU0YWFjNTY2YWJiMjAyMjdjZGE5MTU2MDE1YmYyNDg3YTc2M2RkZi4uNGQ3ZGM4MGU5
N2ZmZDg3Y2JlOGQwYWJhNDY2NTNkNzIxMzUxNjFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNs
dWRlICJMYXllckhvc3RpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJD
b25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZS5oIgpAQCAtOTgsNiArOTksNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBmaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoKTsKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICB2b2lkIHNldFZpZGVvSW5saW5lU2l6ZUZlbmNlZChjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiwgY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0Jik7CisgICAgdm9pZCBzZXRWaWRlb0Z1
bGxzY3JlZW5GcmFtZUZlbmNlZChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXVEY6
Ok1hY2hTZW5kUmlnaHQmKTsKICNlbmRpZgogCiAgICAgdm9pZCBhZGRSZW1vdGVBdWRpb1RyYWNr
KFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3Vy
YXRpb24mJik7CkBAIC0xNzksNiArMTgxLDcgQEAgcHJpdmF0ZToKICAgICBQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQor
ICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigp
IGZpbmFsOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllcios
IFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKICAgICB2
b2lkIHVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKCkgZmluYWw7CiAgICAgdm9pZCBz
ZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShXZWJDb3JlOjpGbG9hdFJlY3QpIGZpbmFsOwpAQCAtMzU3
LDYgKzM2MCw4IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXIqIG1fcGxheWVy
IHsgbnVsbHB0ciB9OwogICAgIFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXI+IG1fbWVkaWFSZXNvdXJjZUxvYWRlcjsKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXll
cj4gbV92aWRlb0lubGluZUxheWVyOworICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3Zp
ZGVvRnVsbHNjcmVlbkxheWVyOworICAgIE9wdGlvbmFsPExheWVySG9zdGluZ0NvbnRleHRJRD4g
bV9mdWxsc2NyZWVuTGF5ZXJIb3N0aW5nQ29udGV4dElkOwogICAgIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlciYgbV9tYW5hZ2VyOwogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlh
RW5naW5lSWRlbnRpZmllciBtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXI7CiAgICAgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBtX2lkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWJkZmVhZWJmZTc3MzA5Y2JkMGM1
YmNlYmNhYjIyYjkwMzA1NmUxNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0K
QEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgUExBVEZPUk0oQ09DT0EpCisKKyNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+Cisj
aW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KKyNpbXBvcnQgPHd0Zi9NYWNo
U2VuZFJpZ2h0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RF
KSkKKworUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKQoreworICAgIGlmICghbV9mdWxsc2NyZWVuTGF5
ZXJIb3N0aW5nQ29udGV4dElkKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmICgh
bV92aWRlb0Z1bGxzY3JlZW5MYXllcikgeworICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVy
ID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgYXV0byBzdWJsYXll
ciA9IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZVBsYXRmb3JtTGF5ZXJGb3JIb3N0aW5nQ29u
dGV4dChtX2Z1bGxzY3JlZW5MYXllckhvc3RpbmdDb250ZXh0SWQudmFsdWUoKSk7CisgICAgICAg
IFtzdWJsYXllciBzZXROYW1lOkAiVmlkZW9GdWxsc2NyZWVuTGF5ZXJTdWJsYXllciJdOworICAg
ICAgICBbc3VibGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1ha2UoMCwgMCldOworICAgICAgICBb
bV92aWRlb0Z1bGxzY3JlZW5MYXllciBhZGRTdWJsYXllcjpzdWJsYXllci5nZXQoKV07CisgICAg
fQorCisgICAgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXI7Cit9CisKK3ZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShXZWJDb3JlOjpGbG9h
dFJlY3QgcmVjdCkKK3sKKyAgICBhdXRvIGNvbnRleHQgPSBbbV92aWRlb0Z1bGxzY3JlZW5MYXll
ciBjb250ZXh0XTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybjsKKworICAgIFtD
QVRyYW5zYWN0aW9uIGJlZ2luXTsKKyAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9u
czpZRVNdOworCisgICAgTWFjaFNlbmRSaWdodCBmZW5jZVNlbmRSaWdodCA9IE1hY2hTZW5kUmln
aHQ6OmFkb3B0KFtjb250ZXh0IGNyZWF0ZUZlbmNlUG9ydF0pOworICAgIHNldFZpZGVvRnVsbHNj
cmVlbkZyYW1lRmVuY2VkKHJlY3QsIGZlbmNlU2VuZFJpZ2h0KTsKKworICAgIFtDQVRyYW5zYWN0
aW9uIGNvbW1pdF07Cit9CisKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL1ZpZGVvTGF5ZXJSZW1v
dGVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvVmlk
ZW9MYXllclJlbW90ZUNvY29hLm1tCmluZGV4IDM1MmYwY2MzZDY4MGU2NTBmMmVjZjk5NDljYWJm
ODk4NjQ0MmI5MDcuLmNiM2YyODRlZGIyNWY5YzhmNDk2NDdmMzFhNDg0ODI2Zjk0YWY2ODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvVmlkZW9M
YXllclJlbW90ZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvY29jb2EvVmlkZW9MYXllclJlbW90ZUNvY29hLm1tCkBAIC0xNTYsMTQgKzE1Niw5IEBAIFJl
dGFpblB0cjxDQUxheWVyPiBjcmVhdGVWaWRlb0xheWVyUmVtb3RlKE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZSogbWVkaWFQbGF5ZXJQCiAgICAgLy8gSW5pdGlhbGx5LCBhbGwgdGhlIGxheWVycyB3
aWxsIGJlIGVtcHR5IChib3RoIHdpZHRoIGFuZCBoZWlnaHQgYXJlIDApIGFuZCBpbnZpc2libGUu
CiAgICAgLy8gVGhlIHJlbmRlcmVyIHdpbGwgY2hhbmdlIHRoZSBzaXplcyBvZiBXS1ZpZGVvTGF5
ZXJSZW1vdGUgdG8gdHJpZ2dlciBsYXlvdXQgb2Ygc3VibGF5ZXJzIGFuZCBtYWtlIHRoZW0gdmlz
aWJsZS4KICAgICBhdXRvIHZpZGVvTGF5ZXJSZW1vdGUgPSBhZG9wdE5TKFtbV0tWaWRlb0xheWVy
UmVtb3RlIGFsbG9jXSBpbml0XSk7Ci0jaWZuZGVmIE5ERUJVRwogICAgIFt2aWRlb0xheWVyUmVt
b3RlIHNldE5hbWU6QCJXS1ZpZGVvTGF5ZXJSZW1vdGUiXTsKLSNlbmRpZgotCiAgICAgW3ZpZGVv
TGF5ZXJSZW1vdGUgc2V0TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOm1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZV07Ci0KLSAgICBhdXRvIHZpZGVvU3VibGF5ZXIgPSBMYXllckhvc3RpbmdDb250ZXh0
OjpjcmVhdGVQbGF0Zm9ybUxheWVyRm9ySG9zdGluZ0NvbnRleHQoY29udGV4dElkKTsKLSAgICBb
dmlkZW9MYXllclJlbW90ZSBhZGRTdWJsYXllcjp2aWRlb1N1YmxheWVyLmdldCgpXTsKKyAgICBb
dmlkZW9MYXllclJlbW90ZSBhZGRTdWJsYXllcjpMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVQ
bGF0Zm9ybUxheWVyRm9ySG9zdGluZ0NvbnRleHQoY29udGV4dElkKS5nZXQoKV07CiAKICAgICBy
ZXR1cm4gdmlkZW9MYXllclJlbW90ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggNjg0ZWJhYmFk
MzZjZGYzOTEwZDdiNjJjYWNiMTY0OGE0YjliMjJmNC4uNDE4MWRiNWRmOTdhMDIzNGJlNTU2ZmM3
MmQyYjQxNmQ2NWVhZWI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTI3MSwxMCArMjcxLDkgQEAg
dm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVv
RWxlbWVudChIVE1MVmlkZW9FbGVtZW4KICAgICBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmUg
PSB2aWRlb0VsZW1lbnQud2Via2l0U3VwcG9ydHNQcmVzZW50YXRpb25Nb2RlKEhUTUxWaWRlb0Vs
ZW1lbnQ6OlZpZGVvUHJlc2VudGF0aW9uTW9kZTo6UGljdHVyZUluUGljdHVyZSk7CiAKICAgICBp
ZiAoIWludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5yb290TGF5ZXIoKSkgewotICAg
ICAgICBQbGF0Zm9ybUxheWVyKiB2aWRlb0xheWVyID0gW0NBTGF5ZXIgbGF5ZXJdOworICAgICAg
ICBhdXRvIHZpZGVvTGF5ZXIgPSBtb2RlbC0+Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKTsK
ICAgICAgICAgW3ZpZGVvTGF5ZXIgc2V0RGVsZWdhdGU6W1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5
ZXJEZWxlZ2F0ZSBzaGFyZWRdXTsKLQotICAgICAgICBbdmlkZW9MYXllciBzZXROYW1lOkAiV2Vi
IHZpZGVvIGZ1bGxzY3JlZW4gbWFuYWdlciBsYXllciJdOworICAgICAgICBbdmlkZW9MYXllciBz
ZXROYW1lOkAiV2ViIFZpZGVvIEZ1bGxzY3JlZW4gTGF5ZXIiXTsKICAgICAgICAgW3ZpZGVvTGF5
ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1ha2UoMCwgMCldOwogICAgICAgICBbdmlkZW9MYXllciBz
ZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJhbnNwYXJl
bnQpXTsKIApAQCAtMjgzLDcgKzI4Miw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVuCiAgICAg
ICAgIGZsb2F0IGhvc3RpbmdTY2FsZUZhY3RvciA9IG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3Io
KTsKICAgICAgICAgW3ZpZGVvTGF5ZXIgc2V0VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RNYWtlU2Nh
bGUoaG9zdGluZ1NjYWxlRmFjdG9yLCBob3N0aW5nU2NhbGVGYWN0b3IsIDEpXTsKIAotICAgICAg
ICBpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+c2V0Um9vdExheWVyKHZpZGVvTGF5
ZXIpOworICAgICAgICBpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+c2V0Um9vdExh
eWVyKHZpZGVvTGF5ZXIuZ2V0KCkpOwogICAgIH0KIAogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXR1cEZ1bGxzY3JlZW5XaXRoSUQoY29u
dGV4dElkLCBpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+Y29udGV4dElEKCksIHZp
ZGVvUmVjdCwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpLCBpbnRlcmZhY2UtPmZ1bGxzY3Jl
ZW5Nb2RlKCksIGFsbG93c1BpY3R1cmVJblBpY3R1cmUsIHN0YW5kYnkpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392045</attachid>
            <date>2020-02-28 20:31:07 -0800</date>
            <delta_ts>2020-02-28 21:50:54 -0800</delta_ts>
            <desc>Patch for landing (fix unified build failures)</desc>
            <filename>bug-208252-20200228203107.patch</filename>
            <type>text/plain</type>
            <size>49835</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3Njc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjY2MTk2NTQ2Y2MxMzZm
MGZlNTQ1MDUyYmYwZWIzOWM4ZjFjNGYyZi4uMDg0YThiODgyNjM2MDY0M2NhOTUwMmI5ZTNkMjE0
NGQxZjE5ZDA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIwLTAyLTI4ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBwcm9j
ZXNzXSBJbXBsZW1lbnQgdGhlIHZpZGVvIGZ1bGxzY3JlZW4gYW5kIFBpY3R1cmUtaW4tUGljdHVy
ZSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDgyNTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMg
dGhlIGNyZWF0aW9uIG9mIHRoZSBDQUxheWVyIGZvciB2aWRlbyBmdWxsc2NyZWVuIGFuZCBwaWN0
dXJlLWluLXBpY3R1cmUgZnJvbQorICAgICAgICBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIHRvIE1l
ZGlhUGxheWVyUHJpdmF0ZSBjbGFzc2VzLiBXaXRoIHRoaXMgY2hhbmdlLCB3ZSBjYW4gc3VwcG9y
dAorICAgICAgICB2aWRlbyBmdWxsc2NyZWVuIGFuZCBwaWN0dXJlLWluLXBpY3R1cmUgbm8gbWF0
dGVyIHRoZSAiTWVkaWEgaW4gR1BVIHByb2Nlc3MiCisgICAgICAgIGZlYXR1cmUgaXMgZW5hYmxl
ZCBvciBub3QuIFRoZSBmdW5jdGlvbiBjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpIGlzIGFk
ZGVkIHRvCisgICAgICAgIE1lZGlhUGxheWVyIGFuZCBNZWRpYVBsYXllclByaXZhdGUgZm9yIHRo
YXQgcHVycG9zZS4KKworICAgICAgICBUaGVyZSBhcmUgZHVwbGljYXRlZCBjb2RlIHNuaXBwZXRz
IHRvIGNyZWF0ZSBhIENBTGF5ZXIgaW4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
QywKKyAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLCBhbmQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLgorICAgICAgICBUaGF0IHdpbGwgYmUg
Zml4ZWQgaW4gYSBmdXR1cmUgcmVmYWN0b3JpbmcgKHdlYmtpdC5vcmcvYi8yMDgzNDIpLgorCisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKiBo
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVJbnRlcmZhY2U6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0
ZVZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKToKKwogMjAyMC0wMi0yOCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEdhcmJhZ2UgY29sbGVjdGlvbiBwcmV2
ZW50cyBGb250RmFjZS5sb2FkZWQgcHJvbWlzZSBmcm9tIGdldHRpbmcgcmVzb2x2ZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggODBhNzczNmI0NmQ5NzEzYjljMWYzMjRjMDE4MzhkNjBlOTI2ODBhNy4uODMxN2Q4YzBl
OThhY2FhYmU0ZTBiZjIzNDdkMDAyZTkyYWJkNjc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MiBA
QAorMjAyMC0wMi0yOCAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAg
IFtNZWRpYSBpbiBHUFUgcHJvY2Vzc10gSW1wbGVtZW50IHRoZSB2aWRlbyBmdWxsc2NyZWVuIGFu
ZCBQaWN0dXJlLWluLVBpY3R1cmUgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MjUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhlIFJlbW90ZU1lZGlhUGxheWVyUHJveHkgaW4gdGhlIEdQ
VSBwcm9jZXNzIGNyZWF0ZXMgYSBMYXllckhvc3RpbmdDb250ZXh0IGFuZAorICAgICAgICBzaGFy
ZSB0aGUgY29udGV4dCBJRCB3aXRoIHRoZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUgaW4gdGhl
IFdlYiBwcm9jZXNzLAorICAgICAgICB3aGljaCBpbiB0dXJuIGNyZWF0ZXMgYSByZW1vdGUgbGF5
ZXIgdXNlZCBieSB0aGUgVmlkZW9GdWxsc2NyZWVuTWFuYWdlci4KKworICAgICAgICBUaG9zZSBm
dW5jdGlvbnMgcmVnYXJkaW5nIHZpZGVvIGZ1bGxzY3JlZW4gYW5kIHBpY3R1cmUtaW4tcGljdHVy
ZSBoYXZlIGJlZW4KKyAgICAgICAgbW92ZWQgdG8gUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS4KKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnVwZGF0
ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6
OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c2V0VmlkZW9GdWxsc2NyZWVuTW9kZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojpz
ZXRWb2x1bWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6c2V0QnVmZmVyaW5nUG9saWN5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnZpZGVvRnVsbHNjcmVlblN0YW5kYnlD
aGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5Lmg6CisKKyAgICAgICAgW0dQVSBwcm9jZXNzXQorICAgICAgICBB
ZGQgdHdvIGFzeW5jaHJvbm91cyBJUEMgbWVzc2FnZXMgKEVudGVyRnVsbHNjcmVlbiBhbmQgRXhp
dEZ1bGxzY3JlZW4pIGluIFJlbW90ZU1lZGlhUGxheWVyUHJveHkKKyAgICAgICAgYW5kIHJlcGxh
Y2UgdGhlIG1lc3NhZ2UgU2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUgd2l0aCBTZXRWaWRlb0Z1bGxz
Y3JlZW5GcmFtZUZlbmNlZC4KKyAgICAgICAgQ3JlYXRlIHRoZSBDQUxheWVyIGZvciB0aGUgdmlk
ZW8gZnVsbHNjcmVlbiBhbmQgcGljdHVyZS1pbi1waWN0dXJlIGZlYXR1cmVzLgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnByZXBhcmVGb3JQbGF5YmFjayk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNldFZpZGVvRnVs
bHNjcmVlbkZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6bWVkaWFQbGF5ZXJGaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllclJlbmRl
cmluZ01vZGVDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9jb2NvYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnByZXBhcmVGb3JQbGF5YmFjayk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyRmlyc3RWaWRlb0ZyYW1l
QXZhaWxhYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVk
aWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUGxheWVyUHJveHk6OnNldFZpZGVvSW5saW5lU2l6ZUZlbmNlZCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWVG
ZW5jZWQpOgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICBbV2ViIHByb2Nlc3NdCisgICAg
ICAgIENyZWF0ZSBhIGhvc3RpbmcgbGF5ZXIgaW4gdGhlIFdlYiBwcm9jZXNzIGNvcnJlc3BvbmRp
bmcgdG8gdGhlIENBTGF5ZXIgaW4gdGhlCisgICAgICAgIEdQVSBwcm9jZXNzIGZvciB2aWRlbyBm
dWxsc2NyZWVuIGFuZCBwaWN0dXJlLWluLXBpY3R1cmUuCisgICAgICAgIFN5bmNocm9uaXplIHRo
ZSBwcm9wZXJ0aWVzIG9mIHRoZSBsYXllcnMgY3Jvc3MgcHJvY2VzcyBib3VuZGFyeSB3aXRoIE1h
Y2hTZW5kUmlnaHQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpwcmVwYXJlRm9yUGxheWJhY2spOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OmFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXll
cik6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9G
dWxsc2NyZWVuRnJhbWVGZW5jZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGVDb2NvYS5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9WaWRlb0xheWVyUmVtb3RlQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVZpZGVvTGF5ZXJSZW1vdGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAg
KFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JW
aWRlb0VsZW1lbnQpOgorCisgICAgICAgIEZpeCB1bmlmaWVkIGJ1aWxkIGZhaWx1cmVzLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5NYWMu
bW06CisKIDIwMjAtMDItMjggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBbaU9TIDEzXSBDcmFzaCBpbiBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0YWtlVXBsb2FkQXNz
ZXJ0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAyMTU4
NDlhYjljODAzZDAxZDNhMzM2NDI3N2VmZDgyMmY2YzQzOTZjLi5mZGM3MjhhYjY4NjczMjRmYTE3
MGU3ZWEwMDBjMTM3N2E3ODFjOTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKQEAgLTYyNjEsNiArNjI2MSwxMSBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Omlz
VmlkZW9MYXllcklubGluZSgpCiAgICAgcmV0dXJuICFtX3ZpZGVvRnVsbHNjcmVlbkxheWVyOwog
fTsKIAorUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZVZp
ZGVvRnVsbHNjcmVlbkxheWVyKCkKK3sKKyAgICByZXR1cm4gbV9wbGF5ZXItPmNyZWF0ZVZpZGVv
RnVsbHNjcmVlbkxheWVyKCk7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9G
dWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgV1RGOjpGdW5jdGlv
bjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgSU5GT19MT0coTE9HSURFTlRJ
RklFUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGY2OTIwZjY1
NDc2ZjI4ZDdlN2IxOTRlNTkxZTJjNTk1MmY0NGU5ZmEuLmVmMDBjMzUwMzk1NTJhYjQ4MjViMzY4
YjkzMWZmNGYxZjFmNGM1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CkBAIC0xNzksNiArMTc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJlcGFyZWRUb1JldHVy
blZpZGVvTGF5ZXJUb0lubGluZShib29sKTsKICAgICB2b2lkIHdhaXRGb3JQcmVwYXJlZEZvcklu
bGluZVRoZW4oV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7
IH0pOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJM
RShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+
IGNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOwogI2lmZGVmIF9fT0JKQ19fCiAgICAg
UGxhdGZvcm1MYXllciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Zp
ZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQu
aAppbmRleCAwZTlhNDU0YjRkODhhY2UzNTU0MjI2NWJmYjAwZjQxNjcyMjcxMjRlLi4zYjYwYjMy
ZmExZmU4ZTNhYTAxODk4ZjllYTFjYzc2ODEyYTg4ZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50LmgKQEAgLTU1LDYgKzU1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgflZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50KCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVudCopOwogICAgIEhU
TUxWaWRlb0VsZW1lbnQqIHZpZGVvRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9FbGVt
ZW50LmdldCgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+
IGNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgd2lsbEV4aXRGdWxsc2NyZWVuKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3YWl0Rm9y
UHJlcGFyZWRGb3JJbmxpbmVUaGVuKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyID0gW10geyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KaW5kZXgg
ZWI3ZjI2NzdkMGI1ZWZiNDQxZjY5YzY5YmI5MzY4ZDE4MGM0NDIzOS4uYzIxMDFkMTZlZjBmZjEz
ZDJmNmExOGQzZjIyMzRkOWY4YjU3YzM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQubW0KQEAgLTExMCw2ICsxMTAsMTEgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudDo6d2lsbEV4aXRGdWxsc2NyZWVuKCkKICAgICAgICAgbV92aWRlb0VsZW1lbnQtPndp
bGxFeGl0RnVsbHNjcmVlbigpOwogfQogCitSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gVmlkZW9G
dWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkK
K3sKKyAgICByZXR1cm4gbV92aWRlb0VsZW1lbnQtPmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVy
KCk7Cit9CisKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqIHZpZGVvTGF5ZXIsIFdURjo6RnVuY3Rpb248
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVl
bkxheWVyID09IHZpZGVvTGF5ZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCBhM2ViMWNiOWJlMGE4YTMxMDYzMDI1YWQxOWE1
YmMwMjVhNzc5ODJkLi44NmI0NzNkMzhhMGNiNWE4MGUwMjYwZmNjZGEwYzhlODdjNGFlMzZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
CkBAIC03NTIsNiArNzUyLDExIEBAIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyOjpwbGF0Zm9y
bUxheWVyKCkgY29uc3QKICAgICAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZP
Uk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogCitSZXRhaW5QdHI8
UGxhdGZvcm1MYXllcj4gTWVkaWFQbGF5ZXI6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkK
K3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5jcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpOwor
fQorCiB2b2lkIE1lZGlhUGxheWVyOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxh
eWVyKiBsYXllciwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgbV9wcml2YXRlLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihsYXllciwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmgKaW5kZXggMWZkZDViYWQ2ODg5YTA5MjkzMjM0ZDJjNTRkYjQyN2FiMzcz
NzhjZi4uYTc1YWFjYTFlYmUzOGZkNzFkMDg4ODY1YzgxZDAzNTRmY2FlM2E2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0zMDcsNiAr
MzA3LDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dDsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJM
RShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+
IGNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCk7CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3Jl
ZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIgPSBbXSB7IH0pOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxv
YXRSZWN0KTsKICAgICB2b2lkIHVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oCmluZGV4IGVkNjE4NWRhNzcyMGZiNDdhMTY1NDgxZGI4MjE0MGQ0MWMwYThhYTUuLjFi
ZDQwOTVhMDk2MzhjYzkxNzZhMDRkMzRmYmMxMTJmYzI1ZjMyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC02
Miw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUp
KQorICAgIHZpcnR1YWwgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IGNyZWF0ZVZpZGVvRnVsbHNj
cmVlbkxheWVyKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRl
b0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoKTsgfQogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSgpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5oCmluZGV4IGFmNmM4MDRmNmNmOGU2MDhkODdkODM5ZmQ4MDZmMDg5MDNkMjNmYjYuLjM5
OTkwMGQ2OTkwZTA0MTkwZGNlY2Y2ZDhlYmZjZGU4OGNkMzU5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgKQEAgLTE3Nyw2ICsxNzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFpbnQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBv
dmVycmlkZTsKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IGNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxh
eWVyKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9y
bUxheWVyKiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsK
ICAgICB2b2lkIHVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKCkgZmluYWw7CiAgICAg
dm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0KaW5kZXggNmRmYzAxMzM3ZmY4NDlhNzc0MmMxMWEwMDFiNjE3OTE5MWNj
Y2NjYi4uZDdjZmJmOWQ3NDIxNjEyYzk5MWFkN2IzMDM1NWJhOWUxZGJjMmQ3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tCkBAIC0xMDgzLDYgKzEwODMsMTEgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSgp
CiAgICAgbV92aWRlb0xheWVyTWFuYWdlci0+dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1h
Z2UobV9sYXN0SW1hZ2UpOwogfQogCitSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKQor
eworICAgIHJldHVybiBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOworfQorCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxh
eWVyKFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyLCBGdW5jdGlvbjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdXBkYXRlTGFzdEltYWdlKFVwZGF0ZVR5cGU6
OlVwZGF0ZVN5bmNocm9ub3VzbHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCA1ZGUz
MzZjYjY0Yjk5NDU3YmZmYmU2NzJmMWE1MmMzZjYyNzc4OGUzLi5kOGY5YzI0NGI2YzFlMWYzOThj
OTk1NWU3NmU1ZDM5YmZhYzZjZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtMTA5
LDYgKzEwOSw3IEBAIHB1YmxpYzoKICAgICBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciogc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIuZ2V0KCk7IH0KICAgICBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24qIGRlY29t
cHJlc3Npb25TZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvbXByZXNzaW9uU2Vzc2lvbi5n
ZXQoKTsgfQogCisgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IGNyZWF0ZVZpZGVvRnVsbHNj
cmVlbkxheWVyKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQ
bGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDRiZDMzODQ3MzA2Mjc3
ODgwODkwYzg4MTkxYWM3YjlhZjk2MzRkMWMuLmY1NDkxMGMxOTAyY2I3NGQzZGQzMDBkMmNiNTEz
YWRlMjE2YjBiZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTExNTgsNiArMTE1
OCwxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y2hhcmFj
dGVyaXN0aWNzQ2hhbmdlZCgpCiAgICAgbV9wbGF5ZXItPmNoYXJhY3RlcmlzdGljQ2hhbmdlZCgp
OwogfQogCitSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpCit7CisgICAgcmV0dXJu
IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9y
bUxheWVyICp2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdXBkYXRlTGFzdEltYWdlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQy5oCmluZGV4IDkyYzA4MjE2NTQ5OGNkZWEyN2MxMzdlOTU2ZmNhM2Y0Nzk4OWY2ODQu
LjNmYzk0OGMyN2RjMTMwMTIwMGY1MzlmYmYxY2NkMTNjYmI1OWMwNTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQy5oCkBAIC0xOTcsNiArMTk3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNhbXBs
ZUJ1ZmZlclVwZGF0ZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmLCBNZWRpYVNhbXBsZSYpIG92
ZXJyaWRlOwogICAgIHZvaWQgcmVhZHlTdGF0ZUNoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGUmKSBvdmVycmlkZTsKIAorICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBjcmVhdGVWaWRl
b0Z1bGxzY3JlZW5MYXllcigpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVu
TGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0
UmVjdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCAyZDBiMzFh
MGE4MTEyZDM3NDNiOWVhMmM4NDYwMGY5Zjk4MzkzYjU2Li5iNDY4Y2RhZWFkNzcxYmM4MDQzZTA0
NmEwMjA2NmUyYjc0NTAwYjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC03NzMs
NiArNzczLDExIEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpz
dXBwb3J0c1BpY3R1cmVJblBpY3R1cmUoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCitS
ZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpCit7CisgICAgcmV0dXJuIGFkb3B0TlMo
W1tDQUxheWVyIGFsbG9jXSBpbml0XSk7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiB2
aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgdXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHkuY3BwCmluZGV4IDVhNDI4OWU4NmIyMmE3OTM1ODg3NjkwYmFmNzE3MmU3YzJk
ZDQ4Y2UuLjkxNDg5MGZmNjRiYTMyMzU4ZjZkMGJiYmM2NWRlNTRjNTBhZmNhNjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcApAQCAtMTkyLDQ4ICsxOTIsNiBAQCB2b2lkIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpzdXBwb3J0c0tleVN5c3RlbShNZWRpYVBsYXllckVu
dW1zOjpNZWRpYUVuZwogICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CiB9CiAKLXZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGlu
ZUltYWdlKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgcGxheWVySWRlbnRpZmll
cikKLXsKLSAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX3Byb3hpZXMuZ2V0KHBsYXllcklkZW50aWZp
ZXIpKQotICAgICAgICBwbGF5ZXItPnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKCk7
Ci19Ci0KLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnNldFZpZGVvRnVsbHNj
cmVlbkZyYW1lKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgcGxheWVySWRlbnRp
ZmllciwgRmxvYXRSZWN0IGZyYW1lKQotewotICAgIGlmIChhdXRvIHBsYXllciA9IG1fcHJveGll
cy5nZXQocGxheWVySWRlbnRpZmllcikpCi0gICAgICAgIHBsYXllci0+c2V0VmlkZW9GdWxsc2Ny
ZWVuRnJhbWUoZnJhbWUpOwotfQotCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
OjpzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIgcGxheWVySWRlbnRpZmllciwgTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSBncmF2aXR5
KQotewotICAgIGlmIChhdXRvIHBsYXllciA9IG1fcHJveGllcy5nZXQocGxheWVySWRlbnRpZmll
cikpCi0gICAgICAgIHBsYXllci0+c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShncmF2aXR5KTsK
LX0KLQotdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c2V0VmlkZW9GdWxsc2Ny
ZWVuTW9kZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHBsYXllcklkZW50aWZp
ZXIsIE1lZGlhUGxheWVyOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCi17Ci0gICAgaWYgKGF1
dG8gcGxheWVyID0gbV9wcm94aWVzLmdldChwbGF5ZXJJZGVudGlmaWVyKSkKLSAgICAgICAgcGxh
eWVyLT5zZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKG1vZGUpOwotfQotCi12b2lkIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OjpzZXRWb2x1bWUoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllciBwbGF5ZXJJZGVudGlmaWVyLCBkb3VibGUgdm9sdW1lKQotewotICAgIGlmIChhdXRv
IHBsYXllciA9IG1fcHJveGllcy5nZXQocGxheWVySWRlbnRpZmllcikpCi0gICAgICAgIHBsYXll
ci0+c2V0Vm9sdW1lKHZvbHVtZSk7Ci19Ci0KLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHk6OnNldEJ1ZmZlcmluZ1BvbGljeShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyIHBsYXllcklkZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xp
Y3kgcG9saWN5KQotewotICAgIGlmIChhdXRvIHBsYXllciA9IG1fcHJveGllcy5nZXQocGxheWVy
SWRlbnRpZmllcikpCi0gICAgICAgIHBsYXllci0+c2V0QnVmZmVyaW5nUG9saWN5KHBvbGljeSk7
Ci19Ci0KLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnZpZGVvRnVsbHNjcmVl
blN0YW5kYnlDaGFuZ2VkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgcGxheWVy
SWRlbnRpZmllcikKLXsKLSAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX3Byb3hpZXMuZ2V0KHBsYXll
cklkZW50aWZpZXIpKQotICAgICAgICBwbGF5ZXItPnZpZGVvRnVsbHNjcmVlblN0YW5kYnlDaGFu
Z2VkKCk7Ci19Ci0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eTo6YWNjZXNzTG9nKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIgcGxheWVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaAppbmRleCBm
Mzg5NzFjN2I4MzdhOTg1MDU3ODJmZGFjMzA4MTVhOWMzMTQwNzFiLi4yOWRkYzIwNDUwMjU3YjQ2
ZDkxNjAzMTBkNjgzNjU0OGVjYmYxOGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaApA
QCAtODQsMTYgKzg0LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9y
aWdpbnMoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmJiwgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik7CiAg
ICAgdm9pZCBzdXBwb3J0c0tleVN5c3RlbShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRp
YUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYmLCBjb25zdCBTdHJpbmcmJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKLSAgICB2b2lkIHVwZGF0ZVZpZGVvRnVsbHNj
cmVlbklubGluZUltYWdlKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpOwotICAg
IHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllciwgV2ViQ29yZTo6RmxvYXRSZWN0KTsKLSAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVl
bkdyYXZpdHkoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgV2ViQ29yZTo6TWVk
aWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSk7Ci0gICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5Nb2Rl
KE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKLQotICAgIHZvaWQgdmlkZW9GdWxsc2NyZWVuU3RhbmRi
eUNoYW5nZWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcik7Ci0KLSAgICB2b2lk
IHNldFZvbHVtZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBkb3VibGUpOwot
ICAgIHZvaWQgc2V0QnVmZmVyaW5nUG9saWN5KE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3kpOwotCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGFjY2Vzc0xvZyhNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpOwogICAg
IHZvaWQgZXJyb3JMb2coTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCBmZTg4
NDRiNDQzODdmZmI1OGMxZDVjOGY4NWI3YjJiMGYyZGNiOGNhLi5mYzVlMGQ3ZTFiY2MyYWExOGZl
ZjRjZDNhNTNjZWVjOTRiY2YzMmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC0yOSw3ICsyOSw2
IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgIkxheWVySG9zdGluZ0NvbnRleHQuaCIKICNpbmNsdWRl
ICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUF1
ZGlvVHJhY2tQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
LmgiCkBAIC0xMDcsMTcgKzEwNiw2IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bG9h
ZChVUkwmJiB1cmwsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4mCiAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CiB9CiAKLXZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eTo6cHJlcGFyZUZvclBsYXliYWNrKGJvb2wgcHJpdmF0ZU1vZGUsIFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQgcHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQ
aXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVyaW5nLCBmbG9hdCB2aWRlb0NvbnRlbnRTY2FsZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxMYXllckhvc3RpbmdDb250ZXh0SUQ+JiYg
Y29udGV4dElkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBtX3BsYXllci0+c2V0UHJp
dmF0ZUJyb3dzaW5nTW9kZShwcml2YXRlTW9kZSk7Ci0gICAgbV9wbGF5ZXItPnNldFByZWxvYWQo
cHJlbG9hZCk7Ci0gICAgbV9wbGF5ZXItPnNldFByZXNlcnZlc1BpdGNoKHByZXNlcnZlc1BpdGNo
KTsKLSAgICBtX3BsYXllci0+cHJlcGFyZUZvclJlbmRlcmluZygpOwotICAgIG1fdmlkZW9Db250
ZW50U2NhbGUgPSB2aWRlb0NvbnRlbnRTY2FsZTsKLSAgICBtX2xheWVySG9zdGluZ0NvbnRleHQg
PSBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9jZXNzKCk7
Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobV9sYXllckhvc3RpbmdDb250ZXh0LT5jb250ZXh0SUQo
KSk7Ci19Ci0KIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6Y2FuY2VsTG9hZCgpCiB7CiAg
ICAgbV91cGRhdGVDYWNoZWRTdGF0ZU1lc3NhZ2VUaW1lci5zdG9wKCk7CkBAIC0xOTQsMTEgKzE4
Miw2IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0U2hvdWxkTWFpbnRhaW5Bc3Bl
Y3RSYXRpbyhib29sIG1haW50YWluUmF0aW8pCiAgICAgbV9wbGF5ZXItPnNldFNob3VsZE1haW50
YWluQXNwZWN0UmF0aW8obWFpbnRhaW5SYXRpbyk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3Qp
Ci17Ci0gICAgbV9wbGF5ZXItPnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKHJlY3QpOwotfQotCiB2
b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5IGdyYXZpdHkpCiB7CiAgICAgbV9w
bGF5ZXItPnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoZ3Jhdml0eSk7CkBAIC00OTgsMTggKzQ4
MSw2IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJFbmdpbmVVcGRh
dGVkKCkKICAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OkVuZ2luZVVwZGF0ZWQoKSwgbV9pZCk7CiB9CiAKLXZvaWQgUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJGaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUo
KQotewotICAgIC8vIEluaXRpYWxseSB0aGUgc2l6ZSBvZiB0aGUgcGxhdGZvcm1MYXllciB3aWxs
IGJlIDB4MCBiZWNhdXNlIHdlIGRvIG5vdCBwcm92aWRlIG1lZGlhUGxheWVyQ29udGVudEJveFJl
Y3QoKSBpbiB0aGlzIGNsYXNzLgotICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Um9vdExh
eWVyKG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpOwotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Rmlyc3RWaWRlb0Zy
YW1lQXZhaWxhYmxlKCksIG1faWQpOwotfQotCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6
Om1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQoKQotewotICAgIG1fbGF5ZXJIb3N0aW5n
Q29udGV4dC0+c2V0Um9vdExheWVyKG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpOwotfQotCiB2
b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyQWN0aXZlU291cmNlQnVmZmVy
c0NoYW5nZWQoKQogewogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6QWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQoKSwg
bV9pZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuaAppbmRleCBmNzhlYzA2ZWMwNDM5ZmNhOTUwYTRiYzM1NjQyZTA0
ZDljN2ZhMmZmLi4yYzAxZDBlNWYwMWFmMzJmMzIzYmViYzYxZDhjOGYwYmQ4NGE2MDgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5LmgKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBnZXRDb25m
aWd1cmF0aW9uKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYpOwogCi0gICAgdm9pZCBw
cmVwYXJlRm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJF
bnVtczo6UHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVy
aW5nLCBmbG9hdCB2aWRlb0NvbnRlbnRTY2FsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxMYXllckhvc3RpbmdDb250ZXh0SUQ+JiYpPiYmKTsKKyAgICB2b2lkIHByZXBhcmVGb3JQ
bGF5YmFjayhib29sIHByaXZhdGVNb2RlLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVs
b2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJpbmcsIGZsb2F0
IHZpZGVvQ29udGVudFNjYWxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPExheWVy
SG9zdGluZ0NvbnRleHRJRD4mJiBpbmxpbmVMYXllckhvc3RpbmdDb250ZXh0SWQsIE9wdGlvbmFs
PExheWVySG9zdGluZ0NvbnRleHRJRD4mJiBmdWxsc2NyZWVuTGF5ZXJIb3N0aW5nQ29udGV4dElk
KT4mJik7CiAgICAgdm9pZCBwcmVwYXJlRm9yUmVuZGVyaW5nKCk7CiAKICAgICB2b2lkIGxvYWQo
VVJMJiYsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4mJiwgY29uc3QgV2ViQ29y
ZTo6Q29udGVudFR5cGUmLCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
bW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYmKT4mJik7CkBAIC0xMTUsNyArMTE1LDkgQEAg
cHVibGljOgogCiAgICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwogICAgIHZvaWQgc2V0U2hvdWxk
TWFpbnRhaW5Bc3BlY3RSYXRpbyhib29sKTsKLSAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZy
YW1lKFdlYkNvcmU6OkZsb2F0UmVjdCk7CisgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGV4aXRGdWxsc2NyZWVuKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZUZl
bmNlZChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQm
KTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6VmlkZW9HcmF2aXR5KTsKICAgICB2b2lkIGFjY2VsZXJhdGVkUmVuZGVyaW5nU3Rh
dGVDaGFuZ2VkKGJvb2wpOwogICAgIHZvaWQgc2V0U2hvdWxkRGlzYWJsZVNsZWVwKGJvb2wpOwpA
QCAtMjUxLDcgKzI1Myw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+
IG1fc2FuZGJveEV4dGVuc2lvbjsKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX3dlYlByb2Nl
c3NDb25uZWN0aW9uOwogICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVBsYXllcj4gbV9wbGF5ZXI7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IG1fbGF5ZXJIb3N0aW5n
Q29udGV4dDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gbV9pbmxp
bmVMYXllckhvc3RpbmdDb250ZXh0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdD
b250ZXh0PiBtX2Z1bGxzY3JlZW5MYXllckhvc3RpbmdDb250ZXh0OwogICAgIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5JiBtX21hbmFnZXI7CiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJF
bnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIG1fZW5naW5lSWRlbnRpZmllcjsKICAgICBWZWN0
b3I8V2ViQ29yZTo6Q29udGVudFR5cGU+IG1fdHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDM1MzliYzFkOWM4NDE2ODky
YTg3NTk2MWVkMWU0YTk4YzEzYjI1NzYuLmJjMmQyMjY2NmFkZWRjOGI3MzBjMmZiZGNmMWM0Zjhm
MDdmNzE4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsy
NCw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVNZWRp
YVBsYXllclByb3h5IE5vdFJlZkNvdW50ZWQgewotICAgIFByZXBhcmVGb3JQbGF5YmFjayhib29s
IHByaXZhdGVNb2RlLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJl
bG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJp
bmcsIGZsb2F0IHZpZGVvQ29udGVudFNjYWxlKSAtPiAoT3B0aW9uYWw8V2ViS2l0OjpMYXllckhv
c3RpbmdDb250ZXh0SUQ+IGxheWVySG9zdGluZ0NvbnRleHRJZCkgQXN5bmMKKyAgICBQcmVwYXJl
Rm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlh
UGxheWVyRW51bXM6OlByZWxvYWQgcHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBw
cmVwYXJlRm9yUmVuZGVyaW5nLCBmbG9hdCB2aWRlb0NvbnRlbnRTY2FsZSkgLT4gKE9wdGlvbmFs
PFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEPiBpbmxpbmVMYXllckhvc3RpbmdDb250ZXh0
SWQsIE9wdGlvbmFsPFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEPiBmdWxsc2NyZWVuTGF5
ZXJIb3N0aW5nQ29udGV4dElkKSBBc3luYwogCiAgICAgTG9hZChVUkwgdXJsLCBPcHRpb25hbDxX
ZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gc2FuZGJveEV4dGVuc2lvbiwgV2ViQ29y
ZTo6Q29udGVudFR5cGUgY29udGVudFR5cGUsIFN0cmluZyBrZXlTeXN0ZW0pIC0+IChzdHJ1Y3Qg
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24gcGxheWVyQ29uZmlndXJhdGlv
bikgQXN5bmMKICAgICBDYW5jZWxMb2FkKCkKQEAgLTQ3LDcgKzQ3LDcgQEAgbWVzc2FnZXMgLT4g
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKICAgICBQcmVwYXJlRm9yUmVu
ZGVyaW5nKCkKICAgICBTZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKICAgICBTZXRTaG91bGRNYWlu
dGFpbkFzcGVjdFJhdGlvKGJvb2wgbWFpbnRhaW5Bc3BlY3RSYXRpbykKLSAgICBTZXRWaWRlb0Z1
bGxzY3JlZW5GcmFtZShXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCkKKyAgICBTZXRWaWRlb0Z1bGxz
Y3JlZW5GcmFtZUZlbmNlZChXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCwgTWFjaFNlbmRSaWdodCBt
YWNoU2VuZFJpZ2h0KQogICAgIFNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoZW51bTp1aW50OF90
IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eSBncmF2aXR5KQogICAgIEFj
Y2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKGJvb2wgY2FuQmVBY2NlbGVyYXRlZCkKICAg
ICBTZXRTaG91bGREaXNhYmxlU2xlZXAoYm9vbCBkaXNhYmxlKQpAQCAtNjcsNiArNjcsOSBAQCBt
ZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXllclByb3h5IE5vdFJlZkNvdW50ZWQgewogICAgIFNl
dFZpZGVvSW5saW5lU2l6ZUZlbmNlZChXZWJDb3JlOjpJbnRTaXplIHNpemUsIE1hY2hTZW5kUmln
aHQgbWFjaFNlbmRSaWdodCkKICNlbmRpZgogCisgICAgRW50ZXJGdWxsc2NyZWVuKCkgLT4gKCkg
QXN5bmMKKyAgICBFeGl0RnVsbHNjcmVlbigpIC0+ICgpIEFzeW5jCisKICAgICAjIFBhaW50CiAg
ICAgIyBQYWludEN1cnJlbnRGcmFtZUluQ29udGV4dAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvY29jb2EvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZU1lZGlhUGxheWVy
UHJveHlDb2NvYS5tbQppbmRleCAzNWZjNWRiYTA3ZGE2NzI5M2RjOWY4ODAxOTI1NzUxNDdhMmFi
OTE2Li4xN2MyZGViZGMxOTJjNzhjNWVhZDJhYTg4ZGUzYzFlYWU3ZjZmOTYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvY29jb2EvUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9jb2NvYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5Q29jb2EubW0KQEAgLTI5LDIyICsyOSw3MSBAQAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgUExBVEZPUk0oQ09DT0EpCiAKICNpbXBvcnQgIkxheWVySG9z
dGluZ0NvbnRleHQuaCIKKyNpbXBvcnQgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2Vz
LmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
SW50U2l6ZS5oPgogI2ltcG9ydCA8d3RmL01hY2hTZW5kUmlnaHQuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6cHJlcGFyZUZvclBsYXliYWNr
KGJvb2wgcHJpdmF0ZU1vZGUsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQgcHJl
bG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVyaW5nLCBmbG9h
dCB2aWRlb0NvbnRlbnRTY2FsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxMYXll
ckhvc3RpbmdDb250ZXh0SUQ+JiYgaW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dElkLCBPcHRpb25h
bDxMYXllckhvc3RpbmdDb250ZXh0SUQ+JiYgZnVsbHNjcmVlbkxheWVySG9zdGluZ0NvbnRleHRJ
ZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9wbGF5ZXItPnNldFByaXZhdGVCcm93
c2luZ01vZGUocHJpdmF0ZU1vZGUpOworICAgIG1fcGxheWVyLT5zZXRQcmVsb2FkKHByZWxvYWQp
OworICAgIG1fcGxheWVyLT5zZXRQcmVzZXJ2ZXNQaXRjaChwcmVzZXJ2ZXNQaXRjaCk7CisgICAg
bV9wbGF5ZXItPnByZXBhcmVGb3JSZW5kZXJpbmcoKTsKKyAgICBtX3ZpZGVvQ29udGVudFNjYWxl
ID0gdmlkZW9Db250ZW50U2NhbGU7CisgICAgaWYgKCFtX2lubGluZUxheWVySG9zdGluZ0NvbnRl
eHQpCisgICAgICAgIG1faW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dCA9IExheWVySG9zdGluZ0Nv
bnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoKTsKKyAgICBpZiAoIW1fZnVs
bHNjcmVlbkxheWVySG9zdGluZ0NvbnRleHQpCisgICAgICAgIG1fZnVsbHNjcmVlbkxheWVySG9z
dGluZ0NvbnRleHQgPSBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhvc3Rp
bmdQcm9jZXNzKCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobV9pbmxpbmVMYXllckhvc3RpbmdD
b250ZXh0LT5jb250ZXh0SUQoKSwgbV9mdWxsc2NyZWVuTGF5ZXJIb3N0aW5nQ29udGV4dC0+Y29u
dGV4dElEKCkpOworfQorCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVy
Rmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKCkKK3sKKyAgICAvLyBJbml0aWFsbHkgdGhlIHNpemUg
b2YgdGhlIHBsYXRmb3JtTGF5ZXIgd2lsbCBiZSAweDAgYmVjYXVzZSB3ZSBkbyBub3QgcHJvdmlk
ZSBtZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCkgaW4gdGhpcyBjbGFzcy4KKyAgICBtX2lubGlu
ZUxheWVySG9zdGluZ0NvbnRleHQtPnNldFJvb3RMYXllcihtX3BsYXllci0+cGxhdGZvcm1MYXll
cigpKTsKKyAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OkZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSgpLCBtX2lkKTsKK30K
Kwordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllclJlbmRlcmluZ01vZGVD
aGFuZ2VkKCkKK3sKKyAgICBtX2lubGluZUxheWVySG9zdGluZ0NvbnRleHQtPnNldFJvb3RMYXll
cihtX3BsYXllci0+cGxhdGZvcm1MYXllcigpKTsKK30KKwogdm9pZCBSZW1vdGVNZWRpYVBsYXll
clByb3h5OjpzZXRWaWRlb0lubGluZVNpemVGZW5jZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
c2l6ZSwgY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JiBtYWNoU2VuZFJpZ2h0KQogewotICAgIG1f
bGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0RmVuY2VQb3J0KG1hY2hTZW5kUmlnaHQuc2VuZFJpZ2h0
KCkpOworICAgIG1faW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0RmVuY2VQb3J0KG1hY2hT
ZW5kUmlnaHQuc2VuZFJpZ2h0KCkpOwogICAgIC8vIFdlIGRvIG5vdCB3YW50IGFuaW1hdGlvbnMg
aGVyZQogICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKICAgICBbQ0FUcmFuc2FjdGlvbiBzZXRE
aXNhYmxlQWN0aW9uczpZRVNdOwotICAgIFttX2xheWVySG9zdGluZ0NvbnRleHQtPnJvb3RMYXll
cigpIHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgp
KV07CisgICAgW21faW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dC0+cm9vdExheWVyKCkgc2V0RnJh
bWU6Q0dSZWN0TWFrZSgwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpXTsKICAgICBb
Q0FUcmFuc2FjdGlvbiBjb21taXRdOwogfQogCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6
OmVudGVyRnVsbHNjcmVlbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgYXV0byB2aWRlb0Z1bGxzY3JlZW5MYXllciA9IG1fcGxheWVyLT5jcmVh
dGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpOworICAgIFt2aWRlb0Z1bGxzY3JlZW5MYXllciBzZXRO
YW1lOkAiV2ViIFZpZGVvIEZ1bGxzY3JlZW4gTGF5ZXIgKHJlbW90ZSkiXTsKKyAgICBbdmlkZW9G
dWxsc2NyZWVuTGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludFplcm9dOworICAgIG1fZnVsbHNjcmVl
bkxheWVySG9zdGluZ0NvbnRleHQtPnNldFJvb3RMYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllci5n
ZXQoKSk7CisKKyAgICBtX3BsYXllci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxs
c2NyZWVuTGF5ZXIuZ2V0KCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9p
ZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpleGl0RnVsbHNjcmVlbihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9wbGF5ZXItPnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKG51bGxwdHIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICBtX2Z1bGxzY3JlZW5MYXllckhvc3RpbmdDb250ZXh0LT5zZXRSb290TGF5ZXIobnVsbHB0cik7
Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJh
bWVGZW5jZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiByZWN0LCBjb25zdCBXVEY6Ok1hY2hT
ZW5kUmlnaHQmIG1hY2hTZW5kUmlnaHQpCit7CisgICAgbV9mdWxsc2NyZWVuTGF5ZXJIb3N0aW5n
Q29udGV4dC0+c2V0RmVuY2VQb3J0KG1hY2hTZW5kUmlnaHQuc2VuZFJpZ2h0KCkpOworICAgIG1f
cGxheWVyLT5zZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShyZWN0KTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFBMQVRGT1JNKENP
Q09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDM5NGJlY2Q1NDU1Mjc3ODgzN2JkMWJhM2I2
ODg3YTI1ODRiZDkxZjguLjBhNzc2OTM5ODc5ZWI2OTVmZmJmZWFmYmVkOGJjMmY5YzQ0Y2VmYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTU1OCw3ICs1NTgsNyBAQCBXZWJQcm9jZXNzL2Nv
Y29hL1dlYlByb2Nlc3NDb2NvYS5tbQogV2ViUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1Nl
cnZpY2UvV2ViQ29udGVudFNlcnZpY2VFbnRyeVBvaW50Lm1tCiAKIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAKLQor
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2Eu
bW0KIFdlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL1ZpZGVvTGF5ZXJSZW1vdGVDb2NvYS5tbQog
CiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUJhbm5lci5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDBjOTdiMTU4MzY0YTc1NmZhMDBiZDljMGMwNzZhYWVkN2JlNWI2Y2EuLmE1YjYyNGI2YTNkZTgz
NWY5MzcyNDdjNjY2ZjI1ZTM4ODBjMjcyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjcwNCw2ICsyNzA0LDcgQEAKIAkJMUQ0RDcz
NkMyM0E5REY2MDAwNzE3QTI1IC8qIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyTWVzc2FnZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlck1lc3NhZ2VzLmg7IHBh
dGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyTWVz
c2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUQ0RDczNzUy
M0E5RUI2ODAwNzE3QTI1IC8qIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyTWVzc2FnZXNSZXBs
aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXJNZXNzYWdlc1Jl
cGxpZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFSZXNvdXJj
ZU1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKIAkJMUQ2N0IzMzgyMTJFMUY2MTAwRkFBNzg2IC8qIFNoYXJlU2hlZXRDYWxsYmFja0lE
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlU2hlZXRDYWxsYmFja0lE
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFEOTdFQzdEMjQwODk4RDIwMDQ2NkZG
QSAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFEQTQwODk0MjNBODBBM0UwMDU4Qzk1MCAvKiBSZW1vdGVNZWRpYVJlc291cmNl
TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxREE0MDg5RTIzQTgyNzc4MDA1OEM5NTAgLyog
UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3Rl
TWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
REJCQjA2MTIxMUNDM0NCMDA1MDJFQ0MgLyogV0tTaGFyZVNoZWV0Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tTaGFyZVNoZWV0Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNjIyMiw2ICs2MjIzLDcgQEAKIAkJMURBRjVBNEQyM0VDOUY3OTAw
QjdCNTE4IC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQkxRDk3RUM3RDI0MDg5OEQyMDA0NjZGRkEgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlQ29jb2EubW0gKi8sCiAJCQkJMURGREQwRTAyM0Y2MEUxRjAwRTlCNDkwIC8qIFZpZGVvTGF5
ZXJSZW1vdGVDb2NvYS5oICovLAogCQkJCTFERkREMERGMjNGNjBFMUUwMEU5QjQ5MCAvKiBWaWRl
b0xheWVyUmVtb3RlQ29jb2EubW0gKi8sCiAJCQkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUu
Y3BwCmluZGV4IDhlZjdkZWVlYTcwZTIwYWU4ZmFhN2NlY2JhNmJkMzc2OTY2NmI1MDIuLmYzZGM4
OWM2ZjYxMDlmM2I2MDViOWQ1ZjZlNDE3ZGY5Y2EyNzE5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZS5jcHAKQEAgLTk5LDE0ICs5OSwxNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6cHJlcGFyZUZvclBsYXliYWNrKGJvb2wgcHJpdmF0ZU1vZGUsIE1lZGlhUGxheWVyOgog
ewogICAgIGF1dG8gc2NhbGUgPSBtX3BsYXllci0+cGxheWVyQ29udGVudHNTY2FsZSgpOwogCi0g
ICAgY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6UHJlcGFyZUZvclBsYXliYWNrKHByaXZhdGVNb2RlLCBwcmVsb2FkLCBwcmVz
ZXJ2ZXNQaXRjaCwgcHJlcGFyZSwgc2NhbGUpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhp
cyksIHRoaXNdKGF1dG8gY29udGV4dElkKSBtdXRhYmxlIHsKKyAgICBjb25uZWN0aW9uKCkuc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpQcmVwYXJl
Rm9yUGxheWJhY2socHJpdmF0ZU1vZGUsIHByZWxvYWQsIHByZXNlcnZlc1BpdGNoLCBwcmVwYXJl
LCBzY2FsZSksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpc10oYXV0byBpbmxp
bmVMYXllckhvc3RpbmdDb250ZXh0SWQsIGF1dG8gZnVsbHNjcmVlbkxheWVySG9zdGluZ0NvbnRl
eHRJZCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgaWYgKCFjb250ZXh0SWQpCisgICAgICAgIGlmICghaW5saW5lTGF5ZXJI
b3N0aW5nQ29udGV4dElkKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fdmlkZW9J
bmxpbmVMYXllciA9IGNyZWF0ZVZpZGVvTGF5ZXJSZW1vdGUodGhpcywgY29udGV4dElkLnZhbHVl
KCkpOworICAgICAgICBtX3ZpZGVvSW5saW5lTGF5ZXIgPSBjcmVhdGVWaWRlb0xheWVyUmVtb3Rl
KHRoaXMsIGlubGluZUxheWVySG9zdGluZ0NvbnRleHRJZC52YWx1ZSgpKTsKKworICAgICAgICBt
X2Z1bGxzY3JlZW5MYXllckhvc3RpbmdDb250ZXh0SWQgPSBmdWxsc2NyZWVuTGF5ZXJIb3N0aW5n
Q29udGV4dElkOwogICAgIH0sIG1faWQpOwogfQogCkBAIC0zMzksNiArMzQxLDExIEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkg
Y29uc3QKICAgICByZXR1cm4gbV9jb25maWd1cmF0aW9uLnN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5k
ZXJpbmc7CiB9CiAKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphY2NlbGVyYXRlZFJl
bmRlcmluZ1N0YXRlQ2hhbmdlZCgpCit7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OkFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2Vk
KG1fcGxheWVyLT5zdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpLCBtX2lkKTsKK30KKwog
Ym9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tU
YXJnZXQoKSBjb25zdAogewogICAgIHJldHVybiBtX2NvbmZpZ3VyYXRpb24uY2FuUGxheVRvV2ly
ZWxlc3NQbGF5YmFja1RhcmdldDsKQEAgLTM3OSwyMSArMzg2LDYgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnNldFNob3VsZE1haW50YWluQXNwZWN0UmF0aW8oYm9vbCBtYWludGFp
blJhdGlvKQogICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXll
clByb3h5OjpTZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKG1haW50YWluUmF0aW8pLCBtX2lk
KTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVl
bkZyYW1lKFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0KQotewotICAgIGNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpTZXRWaWRlb0Z1bGxzY3JlZW5GcmFt
ZShyZWN0KSwgbV9pZCk7Ci19Ci0KLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRW
aWRlb0Z1bGxzY3JlZW5HcmF2aXR5KFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jh
dml0eSBncmF2aXR5KQotewotICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVBsYXllclByb3h5OjpTZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KGdyYXZpdHkpLCBtX2lk
KTsKLX0KLQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFjY2VsZXJhdGVkUmVuZGVy
aW5nU3RhdGVDaGFuZ2VkKCkKLXsKLSAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVt
b3RlTWVkaWFQbGF5ZXJQcm94eTo6QWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQobV9w
bGF5ZXItPnN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSksIG1faWQpOwotfQotCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2hvdWxkRGlzYWJsZVNsZWVwKGJvb2wgZGlz
YWJsZSkKIHsKICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6U2V0U2hvdWxkRGlzYWJsZVNsZWVwKGRpc2FibGUpLCBtX2lkKTsKQEAgLTYxNSw5
ICs2MDcsMTYgQEAgUGxhdGZvcm1MYXllciogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwbGF0
Zm9ybUxheWVyKCkgY29uc3QKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFU
Rk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCi12b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXll
ciosIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciogdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCF2aWRlb0Z1bGxzY3JlZW5MYXllcikgewor
ICAgICAgICBjb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVBsYXllclByb3h5OjpFeGl0RnVsbHNjcmVlbigpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgbV9pZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQobV92aWRl
b0Z1bGxzY3JlZW5MYXllci5nZXQoKSA9PSB2aWRlb0Z1bGxzY3JlZW5MYXllcik7CisgICAgY29u
bmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6RW50ZXJGdWxsc2NyZWVuKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX2lk
KTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnVwZGF0ZVZpZGVvRnVsbHNj
cmVlbklubGluZUltYWdlKCkKQEAgLTYyNSw2ICs2MjQsMTYgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKCkKICAgICBjb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6VXBkYXRlVmlk
ZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoKSwgbV9pZCk7CiB9CiAKK3ZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZUZlbmNlZChjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc2VuZFJpZ2h0KQor
eworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5
OjpTZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZUZlbmNlZChyZWN0LCBzZW5kUmlnaHQpLCBtX2lkKTsK
K30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkdy
YXZpdHkoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5IGdyYXZpdHkpCit7
CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6
OlNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoZ3Jhdml0eSksIG1faWQpOworfQorCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuTW9kZShNZWRpYVBsYXll
cjo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQogewogICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpTZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKG1v
ZGUpLCBtX2lkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDg1NGFhYzU2NmFiYjIw
MjI3Y2RhOTE1NjAxNWJmMjQ4N2E3NjNkZGYuLjRkN2RjODBlOTdmZmQ4N2NiZThkMGFiYTQ2NjUz
ZDcyMTM1MTYxYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApAQCAtMjcsNiArMjcsNyBA
QAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiTGF5ZXJIb3N0aW5nQ29u
dGV4dC5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlh
UGxheWVyU3RhdGUuaCIKQEAgLTk4LDYgKzk5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZmlyc3RW
aWRlb0ZyYW1lQXZhaWxhYmxlKCk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBzZXRW
aWRlb0lubGluZVNpemVGZW5jZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGNvbnN0IFdURjo6
TWFjaFNlbmRSaWdodCYpOworICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWVGZW5jZWQo
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0Jik7CiAj
ZW5kaWYKIAogICAgIHZvaWQgYWRkUmVtb3RlQXVkaW9UcmFjayhUcmFja1ByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyLCBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uJiYpOwpAQCAtMTc5LDYg
KzE4MSw3IEBAIHByaXZhdGU6CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNv
bnN0IGZpbmFsOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykg
JiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKyAgICBSZXRhaW5QdHI8UGxhdGZv
cm1MYXllcj4gY3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBmaW5hbDsKICAgICB2b2lkIHNl
dFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVWaWRlb0Z1bGxz
Y3JlZW5JbmxpbmVJbWFnZSgpIGZpbmFsOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJh
bWUoV2ViQ29yZTo6RmxvYXRSZWN0KSBmaW5hbDsKQEAgLTM1Nyw2ICszNjAsOCBAQCBwcml2YXRl
OgogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyKiBtX3BsYXllciB7IG51bGxwdHIgfTsKICAgICBS
ZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyPiBtX21lZGlhUmVzb3Vy
Y2VMb2FkZXI7CiAgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fdmlkZW9JbmxpbmVMYXll
cjsKKyAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV92aWRlb0Z1bGxzY3JlZW5MYXllcjsK
KyAgICBPcHRpb25hbDxMYXllckhvc3RpbmdDb250ZXh0SUQ+IG1fZnVsbHNjcmVlbkxheWVySG9z
dGluZ0NvbnRleHRJZDsKICAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXImIG1fbWFuYWdlcjsK
ICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgbV9y
ZW1vdGVFbmdpbmVJZGVudGlmaWVyOwogICAgIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIgbV9pZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29h
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjliZGZlYWViZmU3NzMwOWNiZDBjNWJjZWJjYWIyMmI5MDMwNTZlMTQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2Nv
Y29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1tCkBAIC0wLDAgKzEsNzQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIFBMQVRGT1JNKENPQ09B
KQorCisjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2Nv
YS9RdWFydHpDb3JlU1BJLmg+CisjaW1wb3J0IDx3dGYvTWFjaFNlbmRSaWdodC5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShN
QUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisKK1JldGFpblB0cjxQbGF0
Zm9ybUxheWVyPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNyZWF0ZVZpZGVvRnVsbHNjcmVl
bkxheWVyKCkKK3sKKyAgICBpZiAoIW1fZnVsbHNjcmVlbkxheWVySG9zdGluZ0NvbnRleHRJZCkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIW1fdmlkZW9GdWxsc2NyZWVuTGF5
ZXIpIHsKKyAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllciA9IGFkb3B0TlMoW1tDQUxheWVy
IGFsbG9jXSBpbml0XSk7CisgICAgICAgIGF1dG8gc3VibGF5ZXIgPSBMYXllckhvc3RpbmdDb250
ZXh0OjpjcmVhdGVQbGF0Zm9ybUxheWVyRm9ySG9zdGluZ0NvbnRleHQobV9mdWxsc2NyZWVuTGF5
ZXJIb3N0aW5nQ29udGV4dElkLnZhbHVlKCkpOworICAgICAgICBbc3VibGF5ZXIgc2V0TmFtZTpA
IlZpZGVvRnVsbHNjcmVlbkxheWVyU3VibGF5ZXIiXTsKKyAgICAgICAgW3N1YmxheWVyIHNldFBv
c2l0aW9uOkNHUG9pbnRNYWtlKDAsIDApXTsKKyAgICAgICAgW21fdmlkZW9GdWxsc2NyZWVuTGF5
ZXIgYWRkU3VibGF5ZXI6c3VibGF5ZXIuZ2V0KCldOworICAgIH0KKworICAgIHJldHVybiBtX3Zp
ZGVvRnVsbHNjcmVlbkxheWVyOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QpCit7CisgICAg
YXV0byBjb250ZXh0ID0gW21fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgY29udGV4dF07CisgICAgaWYg
KCFjb250ZXh0KQorICAgICAgICByZXR1cm47CisKKyAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07
CisgICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKKworICAgIE1hY2hT
ZW5kUmlnaHQgZmVuY2VTZW5kUmlnaHQgPSBNYWNoU2VuZFJpZ2h0OjphZG9wdChbY29udGV4dCBj
cmVhdGVGZW5jZVBvcnRdKTsKKyAgICBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZUZlbmNlZChyZWN0
LCBmZW5jZVNlbmRSaWdodCk7CisKKyAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOworfQorCisj
ZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9WaWRlb0xheWVyUmVtb3RlQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL1ZpZGVvTGF5ZXJSZW1vdGVDb2NvYS5t
bQppbmRleCAzNTJmMGNjM2Q2ODBlNjUwZjJlY2Y5OTQ5Y2FiZjg5ODY0NDJiOTA3Li5jYjNmMjg0
ZWRiMjVmOWM4ZjQ5NjQ3ZjMxYTQ4NDgyNmY5NGFmNjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL1ZpZGVvTGF5ZXJSZW1vdGVDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL1ZpZGVvTGF5ZXJS
ZW1vdGVDb2NvYS5tbQpAQCAtMTU2LDE0ICsxNTYsOSBAQCBSZXRhaW5QdHI8Q0FMYXllcj4gY3Jl
YXRlVmlkZW9MYXllclJlbW90ZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGUqIG1lZGlhUGxheWVy
UAogICAgIC8vIEluaXRpYWxseSwgYWxsIHRoZSBsYXllcnMgd2lsbCBiZSBlbXB0eSAoYm90aCB3
aWR0aCBhbmQgaGVpZ2h0IGFyZSAwKSBhbmQgaW52aXNpYmxlLgogICAgIC8vIFRoZSByZW5kZXJl
ciB3aWxsIGNoYW5nZSB0aGUgc2l6ZXMgb2YgV0tWaWRlb0xheWVyUmVtb3RlIHRvIHRyaWdnZXIg
bGF5b3V0IG9mIHN1YmxheWVycyBhbmQgbWFrZSB0aGVtIHZpc2libGUuCiAgICAgYXV0byB2aWRl
b0xheWVyUmVtb3RlID0gYWRvcHROUyhbW1dLVmlkZW9MYXllclJlbW90ZSBhbGxvY10gaW5pdF0p
OwotI2lmbmRlZiBOREVCVUcKICAgICBbdmlkZW9MYXllclJlbW90ZSBzZXROYW1lOkAiV0tWaWRl
b0xheWVyUmVtb3RlIl07Ci0jZW5kaWYKLQogICAgIFt2aWRlb0xheWVyUmVtb3RlIHNldE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTptZWRpYVBsYXllclByaXZhdGVSZW1vdGVdOwotCi0gICAgYXV0
byB2aWRlb1N1YmxheWVyID0gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlUGxhdGZvcm1MYXll
ckZvckhvc3RpbmdDb250ZXh0KGNvbnRleHRJZCk7Ci0gICAgW3ZpZGVvTGF5ZXJSZW1vdGUgYWRk
U3VibGF5ZXI6dmlkZW9TdWJsYXllci5nZXQoKV07CisgICAgW3ZpZGVvTGF5ZXJSZW1vdGUgYWRk
U3VibGF5ZXI6TGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlUGxhdGZvcm1MYXllckZvckhvc3Rp
bmdDb250ZXh0KGNvbnRleHRJZCkuZ2V0KCldOwogCiAgICAgcmV0dXJuIHZpZGVvTGF5ZXJSZW1v
dGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5NYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5NYWMubW0KaW5kZXggNDIyZDVlZjY2
NTE5YTA0ZDE0NGY1MDRjMjA0M2ZhMGI1NWFlYTlhZS4uNTBhMDAzNGRkNjUwOTQwODk5NTA4MDQ4
NTA4OWFiNzcwM2MwMWYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbQpA
QCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKKyNp
bXBvcnQgIkxheWVyVHJlZUNvbnRleHQuaCIKICNpbXBvcnQgIk5ldHNjYXBlQnJvd3NlckZ1bmNz
LmgiCiAjaW1wb3J0ICJQbHVnaW5Db250cm9sbGVyLmgiCiAjaW1wb3J0ICJXZWJFdmVudC5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5tbQppbmRleCA2ODRlYmFiYWQzNmNkZjM5MTBkN2I2MmNhY2IxNjQ4YTRiOWIy
MmY0Li40MTgxZGI1ZGY5N2EwMjM0YmU1NTZmYzcyZDJiNDE2ZDY1ZWFlYjlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlci5tbQpAQCAtMjcxLDEwICsyNzEsOSBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KEhUTUxWaWRlb0VsZW1lbgogICAg
IGJvb2wgYWxsb3dzUGljdHVyZUluUGljdHVyZSA9IHZpZGVvRWxlbWVudC53ZWJraXRTdXBwb3J0
c1ByZXNlbnRhdGlvbk1vZGUoSFRNTFZpZGVvRWxlbWVudDo6VmlkZW9QcmVzZW50YXRpb25Nb2Rl
OjpQaWN0dXJlSW5QaWN0dXJlKTsKIAogICAgIGlmICghaW50ZXJmYWNlLT5sYXllckhvc3RpbmdD
b250ZXh0KCktPnJvb3RMYXllcigpKSB7Ci0gICAgICAgIFBsYXRmb3JtTGF5ZXIqIHZpZGVvTGF5
ZXIgPSBbQ0FMYXllciBsYXllcl07CisgICAgICAgIGF1dG8gdmlkZW9MYXllciA9IG1vZGVsLT5j
cmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpOwogICAgICAgICBbdmlkZW9MYXllciBzZXREZWxl
Z2F0ZTpbV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlIHNoYXJlZF1dOwotCi0gICAg
ICAgIFt2aWRlb0xheWVyIHNldE5hbWU6QCJXZWIgdmlkZW8gZnVsbHNjcmVlbiBtYW5hZ2VyIGxh
eWVyIl07CisgICAgICAgIFt2aWRlb0xheWVyIHNldE5hbWU6QCJXZWIgVmlkZW8gRnVsbHNjcmVl
biBMYXllciJdOwogICAgICAgICBbdmlkZW9MYXllciBzZXRQb3NpdGlvbjpDR1BvaW50TWFrZSgw
LCAwKV07CiAgICAgICAgIFt2aWRlb0xheWVyIHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRDR0Nv
bG9yKFdlYkNvcmU6OkNvbG9yOjp0cmFuc3BhcmVudCldOwogCkBAIC0yODMsNyArMjgyLDcgQEAg
dm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVv
RWxlbWVudChIVE1MVmlkZW9FbGVtZW4KICAgICAgICAgZmxvYXQgaG9zdGluZ1NjYWxlRmFjdG9y
ID0gbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgICAgICBbdmlkZW9MYXllciBzZXRU
cmFuc2Zvcm06Q0FUcmFuc2Zvcm0zRE1ha2VTY2FsZShob3N0aW5nU2NhbGVGYWN0b3IsIGhvc3Rp
bmdTY2FsZUZhY3RvciwgMSldOwogCi0gICAgICAgIGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29u
dGV4dCgpLT5zZXRSb290TGF5ZXIodmlkZW9MYXllcik7CisgICAgICAgIGludGVyZmFjZS0+bGF5
ZXJIb3N0aW5nQ29udGV4dCgpLT5zZXRSb290TGF5ZXIodmlkZW9MYXllci5nZXQoKSk7CiAgICAg
fQogCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OlNldHVwRnVsbHNjcmVlbldpdGhJRChjb250ZXh0SWQsIGludGVyZmFjZS0+bGF5ZXJIb3N0
aW5nQ29udGV4dCgpLT5jb250ZXh0SUQoKSwgdmlkZW9SZWN0LCBtX3BhZ2UtPmRldmljZVNjYWxl
RmFjdG9yKCksIGludGVyZmFjZS0+ZnVsbHNjcmVlbk1vZGUoKSwgYWxsb3dzUGljdHVyZUluUGlj
dHVyZSwgc3RhbmRieSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392047</attachid>
            <date>2020-02-28 21:50:18 -0800</date>
            <delta_ts>2020-02-28 23:21:54 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-208252-20200228215018.patch</filename>
            <type>text/plain</type>
            <size>49831</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3Njc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjY2MTk2NTQ2Y2MxMzZm
MGZlNTQ1MDUyYmYwZWIzOWM4ZjFjNGYyZi4uNGRjMjIzYWYwMWRmZmFjYjI3NTMxZmRkNjAzNWUx
ZDU1OGEzNTE0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIwLTAyLTI4ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBwcm9j
ZXNzXSBJbXBsZW1lbnQgdGhlIHZpZGVvIGZ1bGxzY3JlZW4gYW5kIFBpY3R1cmUtaW4tUGljdHVy
ZSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDgyNTIKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAg
Q292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIHRo
ZSBjcmVhdGlvbiBvZiB0aGUgQ0FMYXllciBmb3IgdmlkZW8gZnVsbHNjcmVlbiBhbmQgcGljdHVy
ZS1pbi1waWN0dXJlIGZyb20KKyAgICAgICAgVmlkZW9GdWxsc2NyZWVuTWFuYWdlciB0byBNZWRp
YVBsYXllclByaXZhdGUgY2xhc3Nlcy4gV2l0aCB0aGlzIGNoYW5nZSwgd2UgY2FuIHN1cHBvcnQK
KyAgICAgICAgdmlkZW8gZnVsbHNjcmVlbiBhbmQgcGljdHVyZS1pbi1waWN0dXJlIG5vIG1hdHRl
ciB0aGUgIk1lZGlhIGluIEdQVSBwcm9jZXNzIgorICAgICAgICBmZWF0dXJlIGlzIGVuYWJsZWQg
b3Igbm90LiBUaGUgZnVuY3Rpb24gY3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBpcyBhZGRl
ZCB0bworICAgICAgICBNZWRpYVBsYXllciBhbmQgTWVkaWFQbGF5ZXJQcml2YXRlIGZvciB0aGF0
IHB1cnBvc2UuCisKKyAgICAgICAgVGhlcmUgYXJlIGR1cGxpY2F0ZWQgY29kZSBzbmlwcGV0cyB0
byBjcmVhdGUgYSBDQUxheWVyIGluIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMs
CisgICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQywgYW5kIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy4KKyAgICAgICAgVGhhdCB3aWxsIGJlIGZp
eGVkIGluIGEgZnV0dXJlIHJlZmFjdG9yaW5nICh3ZWJraXQub3JnL2IvMjA4MzQyKS4KKworICAg
ICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxs
c2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVW
aWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisKIDIwMjAtMDItMjggIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBHYXJiYWdlIGNvbGxlY3Rpb24gcHJldmVu
dHMgRm9udEZhY2UubG9hZGVkIHByb21pc2UgZnJvbSBnZXR0aW5nIHJlc29sdmVkCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDgwYTc3MzZiNDZkOTcxM2I5YzFmMzI0YzAxODM4ZDYwZTkyNjgwYTcuLmYwMjYxMTM0MGYw
YmQzNjYzMDc2YjQyYjIwYzQzMzA3Mjg4MTZhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAK
KzIwMjAtMDItMjggIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAgICAgICBb
TWVkaWEgaW4gR1BVIHByb2Nlc3NdIEltcGxlbWVudCB0aGUgdmlkZW8gZnVsbHNjcmVlbiBhbmQg
UGljdHVyZS1pbi1QaWN0dXJlIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwODI1MgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZy
YXNlci4KKworICAgICAgICBUaGUgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBpbiB0aGUgR1BVIHBy
b2Nlc3MgY3JlYXRlcyBhIExheWVySG9zdGluZ0NvbnRleHQgYW5kCisgICAgICAgIHNoYXJlIHRo
ZSBjb250ZXh0IElEIHdpdGggdGhlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSBpbiB0aGUgV2Vi
IHByb2Nlc3MsCisgICAgICAgIHdoaWNoIGluIHR1cm4gY3JlYXRlcyBhIHJlbW90ZSBsYXllciB1
c2VkIGJ5IHRoZSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLgorCisgICAgICAgIFRob3NlIGZ1bmN0
aW9ucyByZWdhcmRpbmcgdmlkZW8gZnVsbHNjcmVlbiBhbmQgcGljdHVyZS1pbi1waWN0dXJlIGhh
dmUgYmVlbgorICAgICAgICBtb3ZlZCB0byBSZW1vdGVNZWRpYVBsYXllclByb3h5LgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6dXBkYXRlVmlk
ZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c2V0
VmlkZW9GdWxsc2NyZWVuR3Jhdml0eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnNldFZv
bHVtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5OjpzZXRCdWZmZXJpbmdQb2xpY3kpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6dmlkZW9GdWxsc2NyZWVuU3RhbmRieUNoYW5n
ZWQpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkuaDoKKworICAgICAgICBbR1BVIHByb2Nlc3NdCisgICAgICAgIEFkZCB0
d28gYXN5bmNocm9ub3VzIElQQyBtZXNzYWdlcyAoRW50ZXJGdWxsc2NyZWVuIGFuZCBFeGl0RnVs
bHNjcmVlbikgaW4gUmVtb3RlTWVkaWFQbGF5ZXJQcm94eQorICAgICAgICBhbmQgcmVwbGFjZSB0
aGUgbWVzc2FnZSBTZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZSB3aXRoIFNldFZpZGVvRnVsbHNjcmVl
bkZyYW1lRmVuY2VkLgorICAgICAgICBDcmVhdGUgdGhlIENBTGF5ZXIgZm9yIHRoZSB2aWRlbyBm
dWxsc2NyZWVuIGFuZCBwaWN0dXJlLWluLXBpY3R1cmUgZmVhdHVyZXMuCisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6cHJlcGFyZUZvclBsYXliYWNrKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0VmlkZW9GdWxsc2Ny
ZWVuRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjptZWRpYVBsYXllckZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyUmVuZGVyaW5n
TW9kZUNoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL2Nv
Y29hL1JlbW90ZU1lZGlhUGxheWVyUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTWVkaWFQbGF5ZXJQcm94eTo6cHJlcGFyZUZvclBsYXliYWNrKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJGaXJzdFZpZGVvRnJhbWVBdmFp
bGFibGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBs
YXllclJlbmRlcmluZ01vZGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6c2V0VmlkZW9JbmxpbmVTaXplRmVuY2VkKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6ZXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZUZlbmNl
ZCk6CisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgIFtXZWIgcHJvY2Vzc10KKyAgICAgICAg
Q3JlYXRlIGEgaG9zdGluZyBsYXllciBpbiB0aGUgV2ViIHByb2Nlc3MgY29ycmVzcG9uZGluZyB0
byB0aGUgQ0FMYXllciBpbiB0aGUKKyAgICAgICAgR1BVIHByb2Nlc3MgZm9yIHZpZGVvIGZ1bGxz
Y3JlZW4gYW5kIHBpY3R1cmUtaW4tcGljdHVyZS4KKyAgICAgICAgU3luY2hyb25pemUgdGhlIHBy
b3BlcnRpZXMgb2YgdGhlIGxheWVycyBjcm9zcyBwcm9jZXNzIGJvdW5kYXJ5IHdpdGggTWFjaFNl
bmRSaWdodC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnByZXBhcmVGb3JQbGF5YmFjayk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxz
Y3JlZW5GcmFtZUZlbmNlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZUNvY29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL1ZpZGVvTGF5ZXJSZW1vdGVDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlVmlkZW9MYXllclJlbW90ZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2Vi
S2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVv
RWxlbWVudCk6CisKKyAgICAgICAgRml4IHVuaWZpZWQgYnVpbGQgZmFpbHVyZXMuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbToK
KwogMjAyMC0wMi0yOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFtpT1MgMTNdIENyYXNoIGluIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRha2VVcGxvYWRBc3NlcnRp
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDIxNTg0OWFi
OWM4MDNkMDFkM2EzMzY0Mjc3ZWZkODIyZjZjNDM5NmMuLmZkYzcyOGFiNjg2NzMyNGZhMTcwZTdl
YTAwMGMxMzc3YTc4MWM5NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcApAQCAtNjI2MSw2ICs2MjYxLDExIEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNWaWRl
b0xheWVySW5saW5lKCkKICAgICByZXR1cm4gIW1fdmlkZW9GdWxsc2NyZWVuTGF5ZXI7CiB9Owog
CitSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlVmlkZW9G
dWxsc2NyZWVuTGF5ZXIoKQoreworICAgIHJldHVybiBtX3BsYXllci0+Y3JlYXRlVmlkZW9GdWxs
c2NyZWVuTGF5ZXIoKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVS
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggZjY5MjBmNjU0NzZm
MjhkN2U3YjE5NGU1OTFlMmM1OTUyZjQ0ZTlmYS4uZWYwMGMzNTAzOTU1MmFiNDgyNWIzNjhiOTMx
ZmY0ZjFmMWY0YzVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAg
LTE3OSw2ICsxNzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcmVwYXJlZFRvUmV0dXJuVmlk
ZW9MYXllclRvSW5saW5lKGJvb2wpOwogICAgIHZvaWQgd2FpdEZvclByZXBhcmVkRm9ySW5saW5l
VGhlbihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKyAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gY3Jl
YXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZp
ZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CiAjaWZkZWYgX19PQkpDX18KICAgICBQbGF0
Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9G
dWxsc2NyZWVuTGF5ZXIuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCmlu
ZGV4IDBlOWE0NTRiNGQ4OGFjZTM1NTQyMjY1YmZiMDBmNDE2NzIyNzEyNGUuLjNiNjBiMzJmYTFm
ZThlM2FhMDE4OThmOWVhMWNjNzY4MTJhODhlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQuaApAQCAtNTUsNiArNTUsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB+VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQoKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50Kik7CiAgICAgSFRNTFZp
ZGVvRWxlbWVudCogdmlkZW9FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0VsZW1lbnQu
Z2V0KCk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gY3Jl
YXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZp
ZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3
aWxsRXhpdEZ1bGxzY3JlZW4oKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdhaXRGb3JQcmVw
YXJlZEZvcklubGluZVRoZW4oV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIgPSBbXSB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQppbmRleCBlYjdm
MjY3N2QwYjVlZmI0NDFmNjljNjliYjkzNjhkMTgwYzQ0MjM5Li5jMjEwMWQxNmVmMGZmMTNkMmY2
YTE4ZDNmMjIzNGQ5ZjhiNTdjMzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5t
bQpAQCAtMTEwLDYgKzExMCwxMSBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50Ojp3aWxsRXhpdEZ1bGxzY3JlZW4oKQogICAgICAgICBtX3ZpZGVvRWxlbWVudC0+d2lsbEV4
aXRGdWxsc2NyZWVuKCk7CiB9CiAKK1JldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKQorewor
ICAgIHJldHVybiBtX3ZpZGVvRWxlbWVudC0+Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKTsK
K30KKwogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9GdWxs
c2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciogdmlkZW9MYXllciwgV1RGOjpGdW5jdGlvbjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5
ZXIgPT0gdmlkZW9MYXllcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGEzZWIxY2I5YmUwYThhMzEwNjMwMjVhZDE5YTViYzAy
NWE3Nzk4MmQuLjg2YjQ3M2QzOGEwY2I1YTgwZTAyNjBmY2NkYTBjOGU4N2M0YWUzNmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAg
LTc1Miw2ICs3NTIsMTEgQEAgUGxhdGZvcm1MYXllciogTWVkaWFQbGF5ZXI6OnBsYXRmb3JtTGF5
ZXIoKSBjb25zdAogICAgIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShN
QUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAKK1JldGFpblB0cjxQbGF0
Zm9ybUxheWVyPiBNZWRpYVBsYXllcjo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKQorewor
ICAgIHJldHVybiBtX3ByaXZhdGUtPmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCk7Cit9CisK
IHZvaWQgTWVkaWFQbGF5ZXI6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIq
IGxheWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBtX3ByaXZhdGUtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKGxheWVyLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaAppbmRleCAxZmRkNWJhZDY4ODlhMDkyOTMyMzRkMmM1NGRiNDI3YWIzNzM3OGNm
Li5hNzVhYWNhMWViZTM4ZmQ3MWQwODg4NjVjODFkMDM1NGZjYWUzYTY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTMwNyw2ICszMDcs
NyBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0Owog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKyAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gY3Jl
YXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxh
eWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlciA9IFtdIHsgfSk7CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJl
Y3QpOwogICAgIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRl
LmgKaW5kZXggZWQ2MTg1ZGE3NzIwZmI0N2ExNjU0ODFkYjgyMTQwZDQxYzBhOGFhNS4uMWJkNDA5
NWEwOTYzOGNjOTE3NmEwNGQzNGZiYzExMmZjMjVmMzJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTYyLDYg
KzYyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
IHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCisg
ICAgdmlydHVhbCBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gY3JlYXRlVmlkZW9GdWxsc2NyZWVu
TGF5ZXIoKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigpOyB9CiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkgeyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
LmgKaW5kZXggYWY2YzgwNGY2Y2Y4ZTYwOGQ4N2Q4MzlmZDgwNmYwODkwM2QyM2ZiNi4uMzk5OTAw
ZDY5OTBlMDQxOTBkY2VjZjZkOGViZmNkZTg4Y2QzNTllNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
aApAQCAtMTc3LDYgKzE3Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWludChHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lkIHBhaW50Q3VycmVu
dEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJy
aWRlOwogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gY3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIo
KSBvdmVycmlkZTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5
ZXIqLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAg
IHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoKSBmaW5hbDsKICAgICB2b2lk
IHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQppbmRleCA2ZGZjMDEzMzdmZjg0OWE3NzQyYzExYTAwMWI2MTc5MTkxY2NjY2Ni
Li5kN2NmYmY5ZDc0MjE2MTJjOTkxYWQ3YjMwMzU1YmE5ZTFkYmMyZDc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0KQEAgLTEwODMsNiArMTA4MywxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKCkKICAg
ICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT51cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSht
X2xhc3RJbWFnZSk7CiB9CiAKK1JldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpCit7Cisg
ICAgcmV0dXJuIGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7Cit9CisKIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIo
UGxhdGZvcm1MYXllciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIsIEZ1bmN0aW9uPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICB1cGRhdGVMYXN0SW1hZ2UoVXBkYXRlVHlwZTo6VXBk
YXRlU3luY2hyb25vdXNseSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IDVkZTMzNmNi
NjRiOTk0NTdiZmZiZTY3MmYxYTUyYzNmNjI3Nzg4ZTMuLmQ4ZjljMjQ0YjZjMWUxZjM5OGM5OTU1
ZTc2ZTVkMzliZmFjNmNmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0xMDksNiAr
MTA5LDcgQEAgcHVibGljOgogICAgIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKiBzYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5nZXQoKTsgfQogICAgIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbiogZGVjb21wcmVz
c2lvblNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX2RlY29tcHJlc3Npb25TZXNzaW9uLmdldCgp
OyB9CiAKKyAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gY3JlYXRlVmlkZW9GdWxsc2NyZWVu
TGF5ZXIoKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRm
b3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIG92ZXJy
aWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggNGJkMzM4NDczMDYyNzc4ODA4
OTBjODgxOTFhYzdiOWFmOTYzNGQxYy4uZjU0OTEwYzE5MDJjYjc0ZDNkZDMwMGQyY2I1MTNhZGUy
MTZiMGJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMTE1OCw2ICsxMTU4LDEx
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjaGFyYWN0ZXJp
c3RpY3NDaGFuZ2VkKCkKICAgICBtX3BsYXllci0+Y2hhcmFjdGVyaXN0aWNDaGFuZ2VkKCk7CiB9
CiAKK1JldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkKK3sKKyAgICByZXR1cm4gYWRv
cHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKK30KKwogdm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5
ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICB1cGRhdGVMYXN0SW1hZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLmgKaW5kZXggOTJjMDgyMTY1NDk4Y2RlYTI3YzEzN2U5NTZmY2EzZjQ3OTg5ZjY4NC4uM2Zj
OTQ4YzI3ZGMxMzAxMjAwZjUzOWZiZjFjY2QxM2NiYjU5YzA1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDLmgKQEAgLTE5Nyw2ICsxOTcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2FtcGxlQnVm
ZmVyVXBkYXRlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYsIE1lZGlhU2FtcGxlJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCByZWFkeVN0YXRlQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYp
IG92ZXJyaWRlOwogCisgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IGNyZWF0ZVZpZGVvRnVs
bHNjcmVlbkxheWVyKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXll
cihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0
KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IDJkMGIzMWEwYTgx
MTJkMzc0M2I5ZWEyYzg0NjAwZjlmOTgzOTNiNTYuLmI0NjhjZGFlYWQ3NzFiYzgwNDNlMDQ2YTAy
MDY2ZTJiNzQ1MDBiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTc3Myw2ICs3
NzMsMTEgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnN1cHBv
cnRzUGljdHVyZUluUGljdHVyZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1JldGFp
blB0cjxQbGF0Zm9ybUxheWVyPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkKK3sKKyAgICByZXR1cm4gYWRvcHROUyhbW0NB
TGF5ZXIgYWxsb2NdIGluaXRdKTsKK30KKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqIHZpZGVv
RnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICB1cGRhdGVDdXJyZW50RnJhbWVJbWFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eS5jcHAKaW5kZXggNWE0Mjg5ZTg2YjIyYTc5MzU4ODc2OTBiYWY3MTcyZTdjMmRkNDhj
ZS4uOTE0ODkwZmY2NGJhMzIzNThmNmQwYmJiYzY1ZGU1NGM1MGFmY2E2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkuY3BwCkBAIC0xOTIsNDggKzE5Miw2IEBAIHZvaWQgUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnN1cHBvcnRzS2V5U3lzdGVtKE1lZGlhUGxheWVyRW51bXM6
Ok1lZGlhRW5nCiAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKIH0KIAotdm9pZCBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1h
Z2UoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBwbGF5ZXJJZGVudGlmaWVyKQot
ewotICAgIGlmIChhdXRvIHBsYXllciA9IG1fcHJveGllcy5nZXQocGxheWVySWRlbnRpZmllcikp
Ci0gICAgICAgIHBsYXllci0+dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoKTsKLX0K
LQotdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c2V0VmlkZW9GdWxsc2NyZWVu
RnJhbWUoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBwbGF5ZXJJZGVudGlmaWVy
LCBGbG9hdFJlY3QgZnJhbWUpCi17Ci0gICAgaWYgKGF1dG8gcGxheWVyID0gbV9wcm94aWVzLmdl
dChwbGF5ZXJJZGVudGlmaWVyKSkKLSAgICAgICAgcGxheWVyLT5zZXRWaWRlb0Z1bGxzY3JlZW5G
cmFtZShmcmFtZSk7Ci19Ci0KLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OnNl
dFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmll
ciBwbGF5ZXJJZGVudGlmaWVyLCBNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5IGdyYXZpdHkpCi17
Ci0gICAgaWYgKGF1dG8gcGxheWVyID0gbV9wcm94aWVzLmdldChwbGF5ZXJJZGVudGlmaWVyKSkK
LSAgICAgICAgcGxheWVyLT5zZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KGdyYXZpdHkpOwotfQot
Ci12b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpzZXRWaWRlb0Z1bGxzY3JlZW5N
b2RlKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgcGxheWVySWRlbnRpZmllciwg
TWVkaWFQbGF5ZXI6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKLXsKLSAgICBpZiAoYXV0byBw
bGF5ZXIgPSBtX3Byb3hpZXMuZ2V0KHBsYXllcklkZW50aWZpZXIpKQotICAgICAgICBwbGF5ZXIt
PnNldFZpZGVvRnVsbHNjcmVlbk1vZGUobW9kZSk7Ci19Ci0KLXZvaWQgUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHk6OnNldFZvbHVtZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyIHBsYXllcklkZW50aWZpZXIsIGRvdWJsZSB2b2x1bWUpCi17Ci0gICAgaWYgKGF1dG8gcGxh
eWVyID0gbV9wcm94aWVzLmdldChwbGF5ZXJJZGVudGlmaWVyKSkKLSAgICAgICAgcGxheWVyLT5z
ZXRWb2x1bWUodm9sdW1lKTsKLX0KLQotdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6c2V0QnVmZmVyaW5nUG9saWN5KE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIg
cGxheWVySWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OkJ1ZmZlcmluZ1BvbGljeSBw
b2xpY3kpCi17Ci0gICAgaWYgKGF1dG8gcGxheWVyID0gbV9wcm94aWVzLmdldChwbGF5ZXJJZGVu
dGlmaWVyKSkKLSAgICAgICAgcGxheWVyLT5zZXRCdWZmZXJpbmdQb2xpY3kocG9saWN5KTsKLX0K
LQotdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6dmlkZW9GdWxsc2NyZWVuU3Rh
bmRieUNoYW5nZWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBwbGF5ZXJJZGVu
dGlmaWVyKQotewotICAgIGlmIChhdXRvIHBsYXllciA9IG1fcHJveGllcy5nZXQocGxheWVySWRl
bnRpZmllcikpCi0gICAgICAgIHBsYXllci0+dmlkZW9GdWxsc2NyZWVuU3RhbmRieUNoYW5nZWQo
KTsKLX0KLQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OjphY2Nlc3NMb2coTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmll
ciBwbGF5ZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCmluZGV4IGYzODk3
MWM3YjgzN2E5ODUwNTc4MmZkYWMzMDgxNWE5YzMxNDA3MWIuLjI5ZGRjMjA0NTAyNTdiNDZkOTE2
MDMxMGQ2ODM2NTQ4ZWNiZjE4YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCkBAIC04
NCwxNiArODQsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lu
cyhXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYmLCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKTsKICAgICB2
b2lkIHN1cHBvcnRzS2V5U3lzdGVtKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5n
aW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiYsIGNvbnN0IFN0cmluZyYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAotICAgIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVu
SW5saW5lSW1hZ2UoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcik7Ci0gICAgdm9p
ZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyLCBXZWJDb3JlOjpGbG9hdFJlY3QpOwotICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuR3Jh
dml0eShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBXZWJDb3JlOjpNZWRpYVBs
YXllcjo6VmlkZW9HcmF2aXR5KTsKLSAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbk1vZGUoTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OlZp
ZGVvRnVsbHNjcmVlbk1vZGUpOwotCi0gICAgdm9pZCB2aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5Q2hh
bmdlZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyKTsKLQotICAgIHZvaWQgc2V0
Vm9sdW1lKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIGRvdWJsZSk7Ci0gICAg
dm9pZCBzZXRCdWZmZXJpbmdQb2xpY3koTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmll
ciwgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OkJ1ZmZlcmluZ1BvbGljeSk7Ci0KICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIHZvaWQgYWNjZXNzTG9nKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJik7CiAgICAgdm9p
ZCBlcnJvckxvZyhNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCmluZGV4IGZlODg0NGI0
NDM4N2ZmYjU4YzFkNWM4Zjg1YjdiMmIwZjJkY2I4Y2EuLmZjNWUwZDdlMWJjYzJhYTE4ZmVmNGNk
M2E1M2NlZWM5NGJjZjMyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKQEAgLTI5LDcgKzI5LDYgQEAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgiCi0jaW5jbHVkZSAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIk1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9U
cmFja1Byb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCIK
QEAgLTEwNywxNyArMTA2LDYgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpsb2FkKFVS
TCYmIHVybCwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYKICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRp
YVBsYXllclByb3h5OjpwcmVwYXJlRm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNo
LCBib29sIHByZXBhcmVGb3JSZW5kZXJpbmcsIGZsb2F0IHZpZGVvQ29udGVudFNjYWxlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPExheWVySG9zdGluZ0NvbnRleHRJRD4mJiBjb250
ZXh0SWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIG1fcGxheWVyLT5zZXRQcml2YXRl
QnJvd3NpbmdNb2RlKHByaXZhdGVNb2RlKTsKLSAgICBtX3BsYXllci0+c2V0UHJlbG9hZChwcmVs
b2FkKTsKLSAgICBtX3BsYXllci0+c2V0UHJlc2VydmVzUGl0Y2gocHJlc2VydmVzUGl0Y2gpOwot
ICAgIG1fcGxheWVyLT5wcmVwYXJlRm9yUmVuZGVyaW5nKCk7Ci0gICAgbV92aWRlb0NvbnRlbnRT
Y2FsZSA9IHZpZGVvQ29udGVudFNjYWxlOwotICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dCA9IExh
eWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoKTsKLSAg
ICBjb21wbGV0aW9uSGFuZGxlcihtX2xheWVySG9zdGluZ0NvbnRleHQtPmNvbnRleHRJRCgpKTsK
LX0KLQogdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpjYW5jZWxMb2FkKCkKIHsKICAgICBt
X3VwZGF0ZUNhY2hlZFN0YXRlTWVzc2FnZVRpbWVyLnN0b3AoKTsKQEAgLTE5NCwxMSArMTgyLDYg
QEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRTaG91bGRNYWludGFpbkFzcGVjdFJh
dGlvKGJvb2wgbWFpbnRhaW5SYXRpbykKICAgICBtX3BsYXllci0+c2V0U2hvdWxkTWFpbnRhaW5B
c3BlY3RSYXRpbyhtYWludGFpblJhdGlvKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCkKLXsK
LSAgICBtX3BsYXllci0+c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUocmVjdCk7Ci19Ci0KIHZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShXZWJDb3Jl
OjpNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHkgZ3Jhdml0eSkKIHsKICAgICBtX3BsYXll
ci0+c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShncmF2aXR5KTsKQEAgLTQ5OCwxOCArNDgxLDYg
QEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQo
KQogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6RW5naW5lVXBkYXRlZCgpLCBtX2lkKTsKIH0KIAotdm9pZCBSZW1vdGVN
ZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSgpCi17
Ci0gICAgLy8gSW5pdGlhbGx5IHRoZSBzaXplIG9mIHRoZSBwbGF0Zm9ybUxheWVyIHdpbGwgYmUg
MHgwIGJlY2F1c2Ugd2UgZG8gbm90IHByb3ZpZGUgbWVkaWFQbGF5ZXJDb250ZW50Qm94UmVjdCgp
IGluIHRoaXMgY2xhc3MuCi0gICAgbV9sYXllckhvc3RpbmdDb250ZXh0LT5zZXRSb290TGF5ZXIo
bV9wbGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSk7Ci0gICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpGaXJzdFZpZGVvRnJhbWVB
dmFpbGFibGUoKSwgbV9pZCk7Ci19Ci0KLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVk
aWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdlZCgpCi17Ci0gICAgbV9sYXllckhvc3RpbmdDb250
ZXh0LT5zZXRSb290TGF5ZXIobV9wbGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSk7Ci19Ci0KIHZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJBY3RpdmVTb3VyY2VCdWZmZXJzQ2hh
bmdlZCgpCiB7CiAgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpBY3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdlZCgpLCBtX2lk
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5oCmluZGV4IGY3OGVjMDZlYzA0MzlmY2E5NTBhNGJjMzU2NDJlMDRkOWM3
ZmEyZmYuLjJjMDFkMGU1ZjAxYWYzMmYzMjNiZWJjNjFkOGM4ZjBiZDg0YTYwODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkuaApAQCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldENvbmZpZ3Vy
YXRpb24oUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJik7CiAKLSAgICB2b2lkIHByZXBh
cmVGb3JQbGF5YmFjayhib29sIHByaXZhdGVNb2RlLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1z
OjpQcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJpbmcs
IGZsb2F0IHZpZGVvQ29udGVudFNjYWxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PExheWVySG9zdGluZ0NvbnRleHRJRD4mJik+JiYpOworICAgIHZvaWQgcHJlcGFyZUZvclBsYXli
YWNrKGJvb2wgcHJpdmF0ZU1vZGUsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQs
IGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZywgZmxvYXQgdmlk
ZW9Db250ZW50U2NhbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8TGF5ZXJIb3N0
aW5nQ29udGV4dElEPiYmIGlubGluZUxheWVySG9zdGluZ0NvbnRleHRJZCwgT3B0aW9uYWw8TGF5
ZXJIb3N0aW5nQ29udGV4dElEPiYmIGZ1bGxzY3JlZW5MYXllckhvc3RpbmdDb250ZXh0SWQpPiYm
KTsKICAgICB2b2lkIHByZXBhcmVGb3JSZW5kZXJpbmcoKTsKIAogICAgIHZvaWQgbG9hZChVUkwm
JiwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYmLCBjb25zdCBXZWJDb3JlOjpD
b250ZW50VHlwZSYsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3Rl
TWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJiYpPiYmKTsKQEAgLTExNSw3ICsxMTUsOSBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHNldFZpc2libGUoYm9vbCk7CiAgICAgdm9pZCBzZXRTaG91bGRNYWlu
dGFpbkFzcGVjdFJhdGlvKGJvb2wpOwotICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUo
V2ViQ29yZTo6RmxvYXRSZWN0KTsKKyAgICB2b2lkIGVudGVyRnVsbHNjcmVlbihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW4oQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lRmVuY2Vk
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYpOwog
ICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShXZWJDb3JlOjpNZWRpYVBsYXllckVu
dW1zOjpWaWRlb0dyYXZpdHkpOwogICAgIHZvaWQgYWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNo
YW5nZWQoYm9vbCk7CiAgICAgdm9pZCBzZXRTaG91bGREaXNhYmxlU2xlZXAoYm9vbCk7CkBAIC0y
NTEsNyArMjUzLDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gbV9z
YW5kYm94RXh0ZW5zaW9uOwogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fd2ViUHJvY2Vzc0Nv
bm5lY3Rpb247CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVyPiBtX3BsYXllcjsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gbV9sYXllckhvc3RpbmdDb250
ZXh0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBtX2lubGluZUxh
eWVySG9zdGluZ0NvbnRleHQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRl
eHQ+IG1fZnVsbHNjcmVlbkxheWVySG9zdGluZ0NvbnRleHQ7CiAgICAgUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkmIG1fbWFuYWdlcjsKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1z
OjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgbV9lbmdpbmVJZGVudGlmaWVyOwogICAgIFZlY3RvcjxX
ZWJDb3JlOjpDb250ZW50VHlwZT4gbV90eXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMzUzOWJjMWQ5Yzg0MTY4OTJhODc1
OTYxZWQxZTRhOThjMTNiMjU3Ni4uYmMyZDIyNjY2YWRlZGM4YjczMGMyZmJkY2YxYzRmOGYwN2Y3
MThlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcg
QEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUGxh
eWVyUHJveHkgTm90UmVmQ291bnRlZCB7Ci0gICAgUHJlcGFyZUZvclBsYXliYWNrKGJvb2wgcHJp
dmF0ZU1vZGUsIGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2Fk
IHByZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZywg
ZmxvYXQgdmlkZW9Db250ZW50U2NhbGUpIC0+IChPcHRpb25hbDxXZWJLaXQ6OkxheWVySG9zdGlu
Z0NvbnRleHRJRD4gbGF5ZXJIb3N0aW5nQ29udGV4dElkKSBBc3luYworICAgIFByZXBhcmVGb3JQ
bGF5YmFjayhib29sIHByaXZhdGVNb2RlLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6UHJlbG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBh
cmVGb3JSZW5kZXJpbmcsIGZsb2F0IHZpZGVvQ29udGVudFNjYWxlKSAtPiAoT3B0aW9uYWw8V2Vi
S2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQ+IGlubGluZUxheWVySG9zdGluZ0NvbnRleHRJZCwg
T3B0aW9uYWw8V2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQ+IGZ1bGxzY3JlZW5MYXllckhv
c3RpbmdDb250ZXh0SWQpIEFzeW5jCiAKICAgICBMb2FkKFVSTCB1cmwsIE9wdGlvbmFsPFdlYktp
dDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5kYm94RXh0ZW5zaW9uLCBXZWJDb3JlOjpD
b250ZW50VHlwZSBjb250ZW50VHlwZSwgU3RyaW5nIGtleVN5c3RlbSkgLT4gKHN0cnVjdCBXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiBwbGF5ZXJDb25maWd1cmF0aW9uKSBB
c3luYwogICAgIENhbmNlbExvYWQoKQpAQCAtNDcsNyArNDcsNyBAQCBtZXNzYWdlcyAtPiBSZW1v
dGVNZWRpYVBsYXllclByb3h5IE5vdFJlZkNvdW50ZWQgewogICAgIFByZXBhcmVGb3JSZW5kZXJp
bmcoKQogICAgIFNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogICAgIFNldFNob3VsZE1haW50YWlu
QXNwZWN0UmF0aW8oYm9vbCBtYWludGFpbkFzcGVjdFJhdGlvKQotICAgIFNldFZpZGVvRnVsbHNj
cmVlbkZyYW1lKFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0KQorICAgIFNldFZpZGVvRnVsbHNjcmVl
bkZyYW1lRmVuY2VkKFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0LCBNYWNoU2VuZFJpZ2h0IG1hY2hT
ZW5kUmlnaHQpCiAgICAgU2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShlbnVtOnVpbnQ4X3QgV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5IGdyYXZpdHkpCiAgICAgQWNjZWxl
cmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoYm9vbCBjYW5CZUFjY2VsZXJhdGVkKQogICAgIFNl
dFNob3VsZERpc2FibGVTbGVlcChib29sIGRpc2FibGUpCkBAIC02Nyw2ICs2Nyw5IEBAIG1lc3Nh
Z2VzIC0+IFJlbW90ZU1lZGlhUGxheWVyUHJveHkgTm90UmVmQ291bnRlZCB7CiAgICAgU2V0Vmlk
ZW9JbmxpbmVTaXplRmVuY2VkKFdlYkNvcmU6OkludFNpemUgc2l6ZSwgTWFjaFNlbmRSaWdodCBt
YWNoU2VuZFJpZ2h0KQogI2VuZGlmCiAKKyAgICBFbnRlckZ1bGxzY3JlZW4oKSAtPiAoKSBBc3lu
YworICAgIEV4aXRGdWxsc2NyZWVuKCkgLT4gKCkgQXN5bmMKKwogICAgICMgUGFpbnQKICAgICAj
IFBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9jb2NvYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Q29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvY29jb2EvUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eUNvY29hLm1tCmluZGV4IDM1ZmM1ZGJhMDdkYTY3MjkzZGM5Zjg4MDE5MjU3NTE0N2EyYWI5MTYu
LjE3YzJkZWJkYzE5MmM3OGM1ZWFkMmFhODhkZTNjMWVhZTdmNmY5NjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9jb2NvYS9SZW1vdGVNZWRpYVBsYXllclByb3h5
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2NvY29hL1JlbW90
ZU1lZGlhUGxheWVyUHJveHlDb2NvYS5tbQpAQCAtMjksMjIgKzI5LDcxIEBACiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBQTEFURk9STShDT0NPQSkKIAogI2ltcG9ydCAiTGF5ZXJIb3N0aW5n
Q29udGV4dC5oIgorI2ltcG9ydCAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCIK
ICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9JbnRT
aXplLmg+CiAjaW1wb3J0IDx3dGYvTWFjaFNlbmRSaWdodC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpwcmVwYXJlRm9yUGxheWJhY2soYm9v
bCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9hZCBwcmVsb2Fk
LCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBhcmVGb3JSZW5kZXJpbmcsIGZsb2F0IHZp
ZGVvQ29udGVudFNjYWxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPExheWVySG9z
dGluZ0NvbnRleHRJRD4mJiBpbmxpbmVMYXllckhvc3RpbmdDb250ZXh0SWQsIE9wdGlvbmFsPExh
eWVySG9zdGluZ0NvbnRleHRJRD4mJiBmdWxsc2NyZWVuTGF5ZXJIb3N0aW5nQ29udGV4dElkKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3BsYXllci0+c2V0UHJpdmF0ZUJyb3dzaW5n
TW9kZShwcml2YXRlTW9kZSk7CisgICAgbV9wbGF5ZXItPnNldFByZWxvYWQocHJlbG9hZCk7Cisg
ICAgbV9wbGF5ZXItPnNldFByZXNlcnZlc1BpdGNoKHByZXNlcnZlc1BpdGNoKTsKKyAgICBtX3Bs
YXllci0+cHJlcGFyZUZvclJlbmRlcmluZygpOworICAgIG1fdmlkZW9Db250ZW50U2NhbGUgPSB2
aWRlb0NvbnRlbnRTY2FsZTsKKyAgICBpZiAoIW1faW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dCkK
KyAgICAgICAgbV9pbmxpbmVMYXllckhvc3RpbmdDb250ZXh0ID0gTGF5ZXJIb3N0aW5nQ29udGV4
dDo6Y3JlYXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2VzcygpOworICAgIGlmICghbV9mdWxsc2Ny
ZWVuTGF5ZXJIb3N0aW5nQ29udGV4dCkKKyAgICAgICAgbV9mdWxsc2NyZWVuTGF5ZXJIb3N0aW5n
Q29udGV4dCA9IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1By
b2Nlc3MoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtX2lubGluZUxheWVySG9zdGluZ0NvbnRl
eHQtPmNvbnRleHRJRCgpLCBtX2Z1bGxzY3JlZW5MYXllckhvc3RpbmdDb250ZXh0LT5jb250ZXh0
SUQoKSk7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJGaXJz
dFZpZGVvRnJhbWVBdmFpbGFibGUoKQoreworICAgIC8vIEluaXRpYWxseSB0aGUgc2l6ZSBvZiB0
aGUgcGxhdGZvcm1MYXllciB3aWxsIGJlIDB4MCBiZWNhdXNlIHdlIGRvIG5vdCBwcm92aWRlIG1l
ZGlhUGxheWVyQ29udGVudEJveFJlY3QoKSBpbiB0aGlzIGNsYXNzLgorICAgIG1faW5saW5lTGF5
ZXJIb3N0aW5nQ29udGV4dC0+c2V0Um9vdExheWVyKG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkp
OworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6Rmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKCksIG1faWQpOworfQorCit2
b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5n
ZWQoKQoreworICAgIG1faW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Um9vdExheWVyKG1f
cGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpOworfQorCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJv
eHk6OnNldFZpZGVvSW5saW5lU2l6ZUZlbmNlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXpl
LCBjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmIG1hY2hTZW5kUmlnaHQpCiB7Ci0gICAgbV9sYXll
ckhvc3RpbmdDb250ZXh0LT5zZXRGZW5jZVBvcnQobWFjaFNlbmRSaWdodC5zZW5kUmlnaHQoKSk7
CisgICAgbV9pbmxpbmVMYXllckhvc3RpbmdDb250ZXh0LT5zZXRGZW5jZVBvcnQobWFjaFNlbmRS
aWdodC5zZW5kUmlnaHQoKSk7CiAgICAgLy8gV2UgZG8gbm90IHdhbnQgYW5pbWF0aW9ucyBoZXJl
CiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwogICAgIFtDQVRyYW5zYWN0aW9uIHNldERpc2Fi
bGVBY3Rpb25zOllFU107Ci0gICAgW21fbGF5ZXJIb3N0aW5nQ29udGV4dC0+cm9vdExheWVyKCkg
c2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpXTsK
KyAgICBbbV9pbmxpbmVMYXllckhvc3RpbmdDb250ZXh0LT5yb290TGF5ZXIoKSBzZXRGcmFtZTpD
R1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSldOwogICAgIFtDQVRy
YW5zYWN0aW9uIGNvbW1pdF07CiB9CiAKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6ZW50
ZXJGdWxsc2NyZWVuKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBhdXRvIHZpZGVvRnVsbHNjcmVlbkxheWVyID0gbV9wbGF5ZXItPmNyZWF0ZVZp
ZGVvRnVsbHNjcmVlbkxheWVyKCk7CisgICAgW3ZpZGVvRnVsbHNjcmVlbkxheWVyIHNldE5hbWU6
QCJXZWIgVmlkZW8gRnVsbHNjcmVlbiBMYXllciAocmVtb3RlKSJdOworICAgIFt2aWRlb0Z1bGxz
Y3JlZW5MYXllciBzZXRQb3NpdGlvbjpDR1BvaW50WmVyb107CisgICAgbV9mdWxsc2NyZWVuTGF5
ZXJIb3N0aW5nQ29udGV4dC0+c2V0Um9vdExheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgp
KTsKKworICAgIG1fcGxheWVyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3Jl
ZW5MYXllci5nZXQoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFJl
bW90ZU1lZGlhUGxheWVyUHJveHk6OmV4aXRGdWxsc2NyZWVuKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3BsYXllci0+c2V0VmlkZW9GdWxs
c2NyZWVuTGF5ZXIobnVsbHB0ciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIG1f
ZnVsbHNjcmVlbkxheWVySG9zdGluZ0NvbnRleHQtPnNldFJvb3RMYXllcihudWxscHRyKTsKK30K
Kwordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZUZl
bmNlZChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFdURjo6TWFjaFNlbmRS
aWdodCYgbWFjaFNlbmRSaWdodCkKK3sKKyAgICBtX2Z1bGxzY3JlZW5MYXllckhvc3RpbmdDb250
ZXh0LT5zZXRGZW5jZVBvcnQobWFjaFNlbmRSaWdodC5zZW5kUmlnaHQoKSk7CisgICAgbV9wbGF5
ZXItPnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKHJlY3QpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgUExBVEZPUk0oQ09DT0Ep
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMzk0YmVjZDU0NTUyNzc4ODM3YmQxYmEzYjY4ODdh
MjU4NGJkOTFmOC4uMGE3NzY5Mzk4NzllYjY5NWZmYmZlYWZiZWQ4YmMyZjljNDRjZWZhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dApAQCAtNTU4LDcgKzU1OCw3IEBAIFdlYlByb2Nlc3MvY29jb2Ev
V2ViUHJvY2Vzc0NvY29hLm1tCiBXZWJQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2Vydmlj
ZS9XZWJDb250ZW50U2VydmljZUVudHJ5UG9pbnQubW0KIAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcAotCitXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2NvYS5tbQog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvVmlkZW9MYXllclJlbW90ZUNvY29hLm1tCiAKIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlQmFubmVyLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGM5
N2IxNTgzNjRhNzU2ZmEwMGJkOWMwYzA3NmFhZWQ3YmU1YjZjYS4uYTViNjI0YjZhM2RlODM1Zjkz
NzI0N2M2NjZmMjVlMzg4MGMyNzJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNzA0LDYgKzI3MDQsNyBAQAogCQkxRDRENzM2QzIz
QTlERjYwMDA3MTdBMjUgLyogUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXJNZXNzYWdlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyTWVzc2FnZXMuaDsgcGF0aCA9
IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXJNZXNzYWdl
cy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxRDRENzM3NTIzQTlF
QjY4MDA3MTdBMjUgLyogUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXJNZXNzYWdlc1JlcGxpZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlck1lc3NhZ2VzUmVwbGll
cy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVJlc291cmNlTWFu
YWdlck1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQkxRDY3QjMzODIxMkUxRjYxMDBGQUE3ODYgLyogU2hhcmVTaGVldENhbGxiYWNrSUQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVTaGVldENhbGxiYWNrSUQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUQ5N0VDN0QyNDA4OThEMjAwNDY2RkZBIC8q
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMURBNDA4OTQyM0E4MEEzRTAwNThDOTUwIC8qIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5h
Z2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEQTQwODlFMjNBODI3NzgwMDU4Qzk1MCAvKiBSZW1v
dGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVNZWRp
YVJlc291cmNlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEQkJC
MDYxMjExQ0MzQ0IwMDUwMkVDQyAvKiBXS1NoYXJlU2hlZXQubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1NoYXJlU2hlZXQubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC02MjIyLDYgKzYyMjMsNyBAQAogCQkxREFGNUE0RDIzRUM5Rjc5MDBCN0I1
MTggLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCTFEOTdFQzdEMjQwODk4RDIwMDQ2NkZGQSAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVD
b2NvYS5tbSAqLywKIAkJCQkxREZERDBFMDIzRjYwRTFGMDBFOUI0OTAgLyogVmlkZW9MYXllclJl
bW90ZUNvY29hLmggKi8sCiAJCQkJMURGREQwREYyM0Y2MEUxRTAwRTlCNDkwIC8qIFZpZGVvTGF5
ZXJSZW1vdGVDb2NvYS5tbSAqLywKIAkJCSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAK
aW5kZXggOGVmN2RlZWVhNzBlMjBhZThmYWE3Y2VjYmE2YmQzNzY5NjY2YjUwMi4uZjNkYzg5YzZm
NjEwOWYzYjYwNWI5ZDVmNmU0MTdkZjljYTI3MTliYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLmNwcApAQCAtOTksMTQgKzk5LDE2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpwcmVwYXJlRm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgTWVkaWFQbGF5ZXI6CiB7CiAg
ICAgYXV0byBzY2FsZSA9IG1fcGxheWVyLT5wbGF5ZXJDb250ZW50c1NjYWxlKCk7CiAKLSAgICBj
b25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXll
clByb3h5OjpQcmVwYXJlRm9yUGxheWJhY2socHJpdmF0ZU1vZGUsIHByZWxvYWQsIHByZXNlcnZl
c1BpdGNoLCBwcmVwYXJlLCBzY2FsZSksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwg
dGhpc10oYXV0byBjb250ZXh0SWQpIG11dGFibGUgeworICAgIGNvbm5lY3Rpb24oKS5zZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlByZXBhcmVGb3JQ
bGF5YmFjayhwcml2YXRlTW9kZSwgcHJlbG9hZCwgcHJlc2VydmVzUGl0Y2gsIHByZXBhcmUsIHNj
YWxlKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzXShhdXRvIGlubGluZUxh
eWVySG9zdGluZ0NvbnRleHRJZCwgYXV0byBmdWxsc2NyZWVuTGF5ZXJIb3N0aW5nQ29udGV4dElk
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBpZiAoIWNvbnRleHRJZCkKKyAgICAgICAgaWYgKCFpbmxpbmVMYXllckhvc3Rp
bmdDb250ZXh0SWQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbV92aWRlb0lubGlu
ZUxheWVyID0gY3JlYXRlVmlkZW9MYXllclJlbW90ZSh0aGlzLCBjb250ZXh0SWQudmFsdWUoKSk7
CisgICAgICAgIG1fdmlkZW9JbmxpbmVMYXllciA9IGNyZWF0ZVZpZGVvTGF5ZXJSZW1vdGUodGhp
cywgaW5saW5lTGF5ZXJIb3N0aW5nQ29udGV4dElkLnZhbHVlKCkpOworCisgICAgICAgIG1fZnVs
bHNjcmVlbkxheWVySG9zdGluZ0NvbnRleHRJZCA9IGZ1bGxzY3JlZW5MYXllckhvc3RpbmdDb250
ZXh0SWQ7CiAgICAgfSwgbV9pZCk7CiB9CiAKQEAgLTMzOSw2ICszNDEsMTEgQEAgYm9vbCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OnN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSBjb25z
dAogICAgIHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmlu
ZzsKIH0KIAordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFjY2VsZXJhdGVkUmVuZGVy
aW5nU3RhdGVDaGFuZ2VkKCkKK3sKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVt
b3RlTWVkaWFQbGF5ZXJQcm94eTo6QWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQobV9w
bGF5ZXItPnN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSksIG1faWQpOworfQorCiBib29s
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1Rhcmdl
dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5jYW5QbGF5VG9XaXJlbGVz
c1BsYXliYWNrVGFyZ2V0OwpAQCAtMzc5LDIxICszODYsNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6c2V0U2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRpbyhib29sIG1haW50YWluUmF0
aW8pCiAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJv
eHk6OlNldFNob3VsZE1haW50YWluQXNwZWN0UmF0aW8obWFpbnRhaW5SYXRpbyksIG1faWQpOwog
fQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJh
bWUoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QpCi17Ci0gICAgY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKHJl
Y3QpLCBtX2lkKTsKLX0KLQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVv
RnVsbHNjcmVlbkdyYXZpdHkoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5
IGdyYXZpdHkpCi17Ci0gICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlh
UGxheWVyUHJveHk6OlNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoZ3Jhdml0eSksIG1faWQpOwot
fQotCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdT
dGF0ZUNoYW5nZWQoKQotewotICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVBsYXllclByb3h5OjpBY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZChtX3BsYXll
ci0+c3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpKSwgbV9pZCk7Ci19Ci0KIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGREaXNhYmxlU2xlZXAoYm9vbCBkaXNhYmxl
KQogewogICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjpTZXRTaG91bGREaXNhYmxlU2xlZXAoZGlzYWJsZSksIG1faWQpOwpAQCAtNjE1LDkgKzYw
NywxNiBAQCBQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBsYXRmb3Jt
TGF5ZXIoKSBjb25zdAogfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JN
KE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKLXZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwg
V1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpCisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5M
YXllciwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIXZpZGVvRnVsbHNjcmVlbkxheWVyKSB7CisgICAg
ICAgIGNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlh
UGxheWVyUHJveHk6OkV4aXRGdWxsc2NyZWVuKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBtX2lkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChtX3ZpZGVvRnVs
bHNjcmVlbkxheWVyLmdldCgpID09IHZpZGVvRnVsbHNjcmVlbkxheWVyKTsKKyAgICBjb25uZWN0
aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5
OjpFbnRlckZ1bGxzY3JlZW4oKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1faWQpOwog
fQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6dXBkYXRlVmlkZW9GdWxsc2NyZWVu
SW5saW5lSW1hZ2UoKQpAQCAtNjI1LDYgKzYyNCwxNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoKQogICAgIGNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpVcGRhdGVWaWRlb0Z1
bGxzY3JlZW5JbmxpbmVJbWFnZSgpLCBtX2lkKTsKIH0KIAordm9pZCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lRmVuY2VkKGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYgcmVjdCwgY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JiBzZW5kUmlnaHQpCit7Cisg
ICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlNl
dFZpZGVvRnVsbHNjcmVlbkZyYW1lRmVuY2VkKHJlY3QsIHNlbmRSaWdodCksIG1faWQpOworfQor
Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0
eShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHkgZ3Jhdml0eSkKK3sKKyAg
ICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6U2V0
VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShncmF2aXR5KSwgbV9pZCk7Cit9CisKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKE1lZGlhUGxheWVyOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiB7CiAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlNldFZpZGVvRnVsbHNjcmVlbk1vZGUobW9kZSks
IG1faWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9N
ZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKaW5kZXggODU0YWFjNTY2YWJiMjAyMjdj
ZGE5MTU2MDE1YmYyNDg3YTc2M2RkZi4uNGQ3ZGM4MGU5N2ZmZDg3Y2JlOGQwYWJhNDY2NTNkNzIx
MzUxNjFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9N
ZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJMYXllckhvc3RpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVk
ZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5
ZXJTdGF0ZS5oIgpAQCAtOTgsNiArOTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaXJzdFZpZGVv
RnJhbWVBdmFpbGFibGUoKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHNldFZpZGVv
SW5saW5lU2l6ZUZlbmNlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgY29uc3QgV1RGOjpNYWNo
U2VuZFJpZ2h0Jik7CisgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZUZlbmNlZChjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKTsKICNlbmRp
ZgogCiAgICAgdm9pZCBhZGRSZW1vdGVBdWRpb1RyYWNrKFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24mJik7CkBAIC0xNzksNiArMTgx
LDcgQEAgcHJpdmF0ZToKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qg
ZmluYWw7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBF
TkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQorICAgIFJldGFpblB0cjxQbGF0Zm9ybUxh
eWVyPiBjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpIGZpbmFsOwogICAgIHZvaWQgc2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6RnVuY3Rpb248dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZVZpZGVvRnVsbHNjcmVl
bklubGluZUltYWdlKCkgZmluYWw7CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShX
ZWJDb3JlOjpGbG9hdFJlY3QpIGZpbmFsOwpAQCAtMzU3LDYgKzM2MCw4IEBAIHByaXZhdGU6CiAg
ICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXIqIG1fcGxheWVyIHsgbnVsbHB0ciB9OwogICAgIFJlZlB0
cjxXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI+IG1fbWVkaWFSZXNvdXJjZUxv
YWRlcjsKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV92aWRlb0lubGluZUxheWVyOwor
ICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyOworICAg
IE9wdGlvbmFsPExheWVySG9zdGluZ0NvbnRleHRJRD4gbV9mdWxsc2NyZWVuTGF5ZXJIb3N0aW5n
Q29udGV4dElkOwogICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYgbV9tYW5hZ2VyOwogICAg
IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBtX3JlbW90
ZUVuZ2luZUlkZW50aWZpZXI7CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmll
ciBtX2lkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9j
b2NvYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOWJkZmVhZWJmZTc3MzA5Y2JkMGM1YmNlYmNhYjIyYjkwMzA1NmUxNAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2Ev
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0KQEAgLTAsMCArMSw3NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgUExBVEZPUk0oQ09DT0EpCisK
KyNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1
YXJ0ekNvcmVTUEkuaD4KKyNpbXBvcnQgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykg
JiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKKworUmV0YWluUHRyPFBsYXRmb3Jt
TGF5ZXI+IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5
ZXIoKQoreworICAgIGlmICghbV9mdWxsc2NyZWVuTGF5ZXJIb3N0aW5nQ29udGV4dElkKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmICghbV92aWRlb0Z1bGxzY3JlZW5MYXllcikg
eworICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxs
b2NdIGluaXRdKTsKKyAgICAgICAgYXV0byBzdWJsYXllciA9IExheWVySG9zdGluZ0NvbnRleHQ6
OmNyZWF0ZVBsYXRmb3JtTGF5ZXJGb3JIb3N0aW5nQ29udGV4dChtX2Z1bGxzY3JlZW5MYXllckhv
c3RpbmdDb250ZXh0SWQudmFsdWUoKSk7CisgICAgICAgIFtzdWJsYXllciBzZXROYW1lOkAiVmlk
ZW9GdWxsc2NyZWVuTGF5ZXJTdWJsYXllciJdOworICAgICAgICBbc3VibGF5ZXIgc2V0UG9zaXRp
b246Q0dQb2ludE1ha2UoMCwgMCldOworICAgICAgICBbbV92aWRlb0Z1bGxzY3JlZW5MYXllciBh
ZGRTdWJsYXllcjpzdWJsYXllci5nZXQoKV07CisgICAgfQorCisgICAgcmV0dXJuIG1fdmlkZW9G
dWxsc2NyZWVuTGF5ZXI7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRW
aWRlb0Z1bGxzY3JlZW5GcmFtZShXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCkKK3sKKyAgICBhdXRv
IGNvbnRleHQgPSBbbV92aWRlb0Z1bGxzY3JlZW5MYXllciBjb250ZXh0XTsKKyAgICBpZiAoIWNv
bnRleHQpCisgICAgICAgIHJldHVybjsKKworICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKKyAg
ICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNdOworCisgICAgTWFjaFNlbmRS
aWdodCBmZW5jZVNlbmRSaWdodCA9IE1hY2hTZW5kUmlnaHQ6OmFkb3B0KFtjb250ZXh0IGNyZWF0
ZUZlbmNlUG9ydF0pOworICAgIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lRmVuY2VkKHJlY3QsIGZl
bmNlU2VuZFJpZ2h0KTsKKworICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07Cit9CisKKyNlbmRp
ZgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL2NvY29hL1ZpZGVvTGF5ZXJSZW1vdGVDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvVmlkZW9MYXllclJlbW90ZUNvY29hLm1tCmlu
ZGV4IDM1MmYwY2MzZDY4MGU2NTBmMmVjZjk5NDljYWJmODk4NjQ0MmI5MDcuLmNiM2YyODRlZGIy
NWY5YzhmNDk2NDdmMzFhNDg0ODI2Zjk0YWY2ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvVmlkZW9MYXllclJlbW90ZUNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvVmlkZW9MYXllclJlbW90
ZUNvY29hLm1tCkBAIC0xNTYsMTQgKzE1Niw5IEBAIFJldGFpblB0cjxDQUxheWVyPiBjcmVhdGVW
aWRlb0xheWVyUmVtb3RlKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSogbWVkaWFQbGF5ZXJQCiAg
ICAgLy8gSW5pdGlhbGx5LCBhbGwgdGhlIGxheWVycyB3aWxsIGJlIGVtcHR5IChib3RoIHdpZHRo
IGFuZCBoZWlnaHQgYXJlIDApIGFuZCBpbnZpc2libGUuCiAgICAgLy8gVGhlIHJlbmRlcmVyIHdp
bGwgY2hhbmdlIHRoZSBzaXplcyBvZiBXS1ZpZGVvTGF5ZXJSZW1vdGUgdG8gdHJpZ2dlciBsYXlv
dXQgb2Ygc3VibGF5ZXJzIGFuZCBtYWtlIHRoZW0gdmlzaWJsZS4KICAgICBhdXRvIHZpZGVvTGF5
ZXJSZW1vdGUgPSBhZG9wdE5TKFtbV0tWaWRlb0xheWVyUmVtb3RlIGFsbG9jXSBpbml0XSk7Ci0j
aWZuZGVmIE5ERUJVRwogICAgIFt2aWRlb0xheWVyUmVtb3RlIHNldE5hbWU6QCJXS1ZpZGVvTGF5
ZXJSZW1vdGUiXTsKLSNlbmRpZgotCiAgICAgW3ZpZGVvTGF5ZXJSZW1vdGUgc2V0TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOm1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZV07Ci0KLSAgICBhdXRvIHZp
ZGVvU3VibGF5ZXIgPSBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVQbGF0Zm9ybUxheWVyRm9y
SG9zdGluZ0NvbnRleHQoY29udGV4dElkKTsKLSAgICBbdmlkZW9MYXllclJlbW90ZSBhZGRTdWJs
YXllcjp2aWRlb1N1YmxheWVyLmdldCgpXTsKKyAgICBbdmlkZW9MYXllclJlbW90ZSBhZGRTdWJs
YXllcjpMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVQbGF0Zm9ybUxheWVyRm9ySG9zdGluZ0Nv
bnRleHQoY29udGV4dElkKS5nZXQoKV07CiAKICAgICByZXR1cm4gdmlkZW9MYXllclJlbW90ZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbQppbmRleCA0MjJkNWVmNjY1MTlh
MDRkMTQ0ZjUwNGMyMDQzZmEwYjU1YWVhOWFlLi41MGEwMDM0ZGQ2NTA5NDA4OTk1MDgwNDg1MDg5
YWI3NzAzYzAxZjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5NYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTWFjLm1tCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAorI2ltcG9y
dCAiTGF5ZXJUcmVlQ29udGV4dC5oIgogI2ltcG9ydCAiTmV0c2NhcGVCcm93c2VyRnVuY3MuaCIK
ICNpbXBvcnQgIlBsdWdpbkNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldlYkV2ZW50LmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyLm1tCmluZGV4IDY4NGViYWJhZDM2Y2RmMzkxMGQ3YjYyY2FjYjE2NDhhNGI5YjIyZjQu
LjQxODFkYjVkZjk3YTAyMzRiZTU1NmZjNzJkMmI0MTZkNjVlYWViOWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Lm1tCkBAIC0yNzEsMTAgKzI3MSw5IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50
ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVuCiAgICAgYm9v
bCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlID0gdmlkZW9FbGVtZW50LndlYmtpdFN1cHBvcnRzUHJl
c2VudGF0aW9uTW9kZShIVE1MVmlkZW9FbGVtZW50OjpWaWRlb1ByZXNlbnRhdGlvbk1vZGU6OlBp
Y3R1cmVJblBpY3R1cmUpOwogCiAgICAgaWYgKCFpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRl
eHQoKS0+cm9vdExheWVyKCkpIHsKLSAgICAgICAgUGxhdGZvcm1MYXllciogdmlkZW9MYXllciA9
IFtDQUxheWVyIGxheWVyXTsKKyAgICAgICAgYXV0byB2aWRlb0xheWVyID0gbW9kZWwtPmNyZWF0
ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCk7CiAgICAgICAgIFt2aWRlb0xheWVyIHNldERlbGVnYXRl
OltXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUgc2hhcmVkXV07Ci0KLSAgICAgICAg
W3ZpZGVvTGF5ZXIgc2V0TmFtZTpAIldlYiB2aWRlbyBmdWxsc2NyZWVuIG1hbmFnZXIgbGF5ZXIi
XTsKKyAgICAgICAgW3ZpZGVvTGF5ZXIgc2V0TmFtZTpAIldlYiBWaWRlbyBGdWxsc2NyZWVuIExh
eWVyIl07CiAgICAgICAgIFt2aWRlb0xheWVyIHNldFBvc2l0aW9uOkNHUG9pbnRNYWtlKDAsIDAp
XTsKICAgICAgICAgW3ZpZGVvTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3Io
V2ViQ29yZTo6Q29sb3I6OnRyYW5zcGFyZW50KV07CiAKQEAgLTI4Myw3ICsyODIsNyBAQCB2b2lk
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVt
ZW50KEhUTUxWaWRlb0VsZW1lbgogICAgICAgICBmbG9hdCBob3N0aW5nU2NhbGVGYWN0b3IgPSBt
X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgICAgIFt2aWRlb0xheWVyIHNldFRyYW5z
Zm9ybTpDQVRyYW5zZm9ybTNETWFrZVNjYWxlKGhvc3RpbmdTY2FsZUZhY3RvciwgaG9zdGluZ1Nj
YWxlRmFjdG9yLCAxKV07CiAKLSAgICAgICAgaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0
KCktPnNldFJvb3RMYXllcih2aWRlb0xheWVyKTsKKyAgICAgICAgaW50ZXJmYWNlLT5sYXllckhv
c3RpbmdDb250ZXh0KCktPnNldFJvb3RMYXllcih2aWRlb0xheWVyLmdldCgpKTsKICAgICB9CiAK
ICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
U2V0dXBGdWxsc2NyZWVuV2l0aElEKGNvbnRleHRJZCwgaW50ZXJmYWNlLT5sYXllckhvc3RpbmdD
b250ZXh0KCktPmNvbnRleHRJRCgpLCB2aWRlb1JlY3QsIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0
b3IoKSwgaW50ZXJmYWNlLT5mdWxsc2NyZWVuTW9kZSgpLCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJl
LCBzdGFuZGJ5KSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>